shithub: pokecrystal

Download patch

ref: 0add51451cda9d4221af137f83e2429d3577310c
parent: da87d2a929b1d58175efe063833c124d8ba702c9
parent: 2a263629a40e201b1702e2f4e65f1c61360cc2b2
author: yenatch <[email protected]>
date: Mon Jan 4 02:41:19 EST 2016

Merge pull request #330 from PikalaxALT/scriptmacrorenaming

Scriptmacrorenaming

--- a/audio/cries.asm
+++ b/audio/cries.asm
@@ -1,2306 +1,2306 @@
-Cry_26: ; f2d81
-	dbw $84, Cry_26_Ch5
-	dbw $05, Cry_26_Ch6
-	dbw $07, Cry_26_Ch8
+Cry_Marill: ; f2d81
+	musicheader 3, 5, Cry_Marill_Ch5
+	musicheader 1, 6, Cry_Marill_Ch6
+	musicheader 1, 8, Cry_Marill_Ch8
 ; f2d8a
 
-Cry_28: ; f2d8a
-	dbw $44, Cry_28_Ch5
-	dbw $05, Cry_28_Ch6
+Cry_Togepi: ; f2d8a
+	musicheader 2, 5, Cry_Togepi_Ch5
+	musicheader 1, 6, Cry_Togepi_Ch6
 ; f2d90
 
-Cry_2C: ; f2d90
-	dbw $44, Cry_2C_Ch5
-	dbw $05, Cry_2C_Ch6
+Cry_Togetic: ; f2d90
+	musicheader 2, 5, Cry_Togetic_Ch5
+	musicheader 1, 6, Cry_Togetic_Ch6
 ; f2d96
 
-Cry_27: ; f2d96
-	dbw $84, Cry_27_Ch5
-	dbw $05, Cry_27_Ch6
-	dbw $07, Cry_27_Ch8
+Cry_Spinarak: ; f2d96
+	musicheader 3, 5, Cry_Spinarak_Ch5
+	musicheader 1, 6, Cry_Spinarak_Ch6
+	musicheader 1, 8, Cry_Spinarak_Ch8
 ; f2d9f
 
-Cry_2A: ; f2d9f
-	dbw $84, Cry_2A_Ch5
-	dbw $05, Cry_2A_Ch6
-	dbw $07, Cry_2A_Ch8
+Cry_Raikou: ; f2d9f
+	musicheader 3, 5, Cry_Raikou_Ch5
+	musicheader 1, 6, Cry_Raikou_Ch6
+	musicheader 1, 8, Cry_Raikou_Ch8
 ; f2da8
 
-Cry_2D: ; f2da8
-	dbw $84, Cry_2D_Ch5
-	dbw $05, Cry_2D_Ch6
-	dbw $07, Cry_2D_Ch8
+Cry_Hoothoot: ; f2da8
+	musicheader 3, 5, Cry_Hoothoot_Ch5
+	musicheader 1, 6, Cry_Hoothoot_Ch6
+	musicheader 1, 8, Cry_Hoothoot_Ch8
 ; f2db1
 
-Cry_2E: ; f2db1
-	dbw $44, Cry_2E_Ch5
-	dbw $05, Cry_2E_Ch6
+Cry_Sentret: ; f2db1
+	musicheader 2, 5, Cry_Sentret_Ch5
+	musicheader 1, 6, Cry_Sentret_Ch6
 ; f2db7
 
-Cry_2F: ; f2db7
-	dbw $84, Cry_2F_Ch5
-	dbw $05, Cry_2F_Ch6
-	dbw $07, Cry_2F_Ch8
+Cry_Slowking: ; f2db7
+	musicheader 3, 5, Cry_Slowking_Ch5
+	musicheader 1, 6, Cry_Slowking_Ch6
+	musicheader 1, 8, Cry_Slowking_Ch8
 ; f2dc0
 
-Cry_2B: ; f2dc0
-	dbw $44, Cry_2B_Ch5
-	dbw $05, Cry_2B_Ch6
+Cry_Mareep: ; f2dc0
+	musicheader 2, 5, Cry_Mareep_Ch5
+	musicheader 1, 6, Cry_Mareep_Ch6
 ; f2dc6
 
-Cry_30: ; f2dc6
-	dbw $84, Cry_30_Ch5
-	dbw $05, Cry_30_Ch6
-	dbw $07, Cry_30_Ch8
+Cry_Cyndaquil: ; f2dc6
+	musicheader 3, 5, Cry_Cyndaquil_Ch5
+	musicheader 1, 6, Cry_Cyndaquil_Ch6
+	musicheader 1, 8, Cry_Cyndaquil_Ch8
 ; f2dcf
 
-Cry_31: ; f2dcf
-	dbw $84, Cry_31_Ch5
-	dbw $05, Cry_31_Ch6
-	dbw $07, Cry_31_Ch8
+Cry_Chikorita: ; f2dcf
+	musicheader 3, 5, Cry_Chikorita_Ch5
+	musicheader 1, 6, Cry_Chikorita_Ch6
+	musicheader 1, 8, Cry_Chikorita_Ch8
 ; f2dd8
 
-Cry_33: ; f2dd8
-	dbw $44, Cry_33_Ch5
-	dbw $07, Cry_33_Ch8
+Cry_Gligar: ; f2dd8
+	musicheader 2, 5, Cry_Gligar_Ch5
+	musicheader 1, 8, Cry_Gligar_Ch8
 ; f2dde
 
-Cry_29: ; f2dde
-	dbw $84, Cry_29_Ch5
-	dbw $05, Cry_29_Ch6
-	dbw $07, Cry_29_Ch8
+Cry_Girafarig: ; f2dde
+	musicheader 3, 5, Cry_Girafarig_Ch5
+	musicheader 1, 6, Cry_Girafarig_Ch6
+	musicheader 1, 8, Cry_Girafarig_Ch8
 ; f2de7
 
-Cry_35: ; f2de7
-	dbw $44, Cry_35_Ch5
-	dbw $07, Cry_35_Ch8
+Cry_Slugma: ; f2de7
+	musicheader 2, 5, Cry_Slugma_Ch5
+	musicheader 1, 8, Cry_Slugma_Ch8
 ; f2ded
 
-Cry_36: ; f2ded
-	dbw $84, Cry_36_Ch5
-	dbw $05, Cry_36_Ch6
-	dbw $07, Cry_36_Ch8
+Cry_Ledyba: ; f2ded
+	musicheader 3, 5, Cry_Ledyba_Ch5
+	musicheader 1, 6, Cry_Ledyba_Ch6
+	musicheader 1, 8, Cry_Ledyba_Ch8
 ; f2df6
 
-Cry_38: ; f2df6
-	dbw $84, Cry_38_Ch5
-	dbw $05, Cry_38_Ch6
-	dbw $07, Cry_38_Ch8
+Cry_Wooper: ; f2df6
+	musicheader 3, 5, Cry_Wooper_Ch5
+	musicheader 1, 6, Cry_Wooper_Ch6
+	musicheader 1, 8, Cry_Wooper_Ch8
 ; f2dff
 
-Cry_43: ; f2dff
-	dbw $84, Cry_43_Ch5
-	dbw $05, Cry_43_Ch6
-	dbw $07, Cry_43_Ch8
+Cry_Donphan: ; f2dff
+	musicheader 3, 5, Cry_Donphan_Ch5
+	musicheader 1, 6, Cry_Donphan_Ch6
+	musicheader 1, 8, Cry_Donphan_Ch8
 ; f2e08
 
-Cry_3A: ; f2e08
-	dbw $84, Cry_3A_Ch5
-	dbw $05, Cry_3A_Ch6
-	dbw $07, Cry_3A_Ch8
+Cry_Typhlosion: ; f2e08
+	musicheader 3, 5, Cry_Typhlosion_Ch5
+	musicheader 1, 6, Cry_Typhlosion_Ch6
+	musicheader 1, 8, Cry_Typhlosion_Ch8
 ; f2e11
 
-Cry_3B: ; f2e11
-	dbw $84, Cry_3B_Ch5
-	dbw $05, Cry_3B_Ch6
-	dbw $07, Cry_3B_Ch8
+Cry_Natu: ; f2e11
+	musicheader 3, 5, Cry_Natu_Ch5
+	musicheader 1, 6, Cry_Natu_Ch6
+	musicheader 1, 8, Cry_Natu_Ch8
 ; f2e1a
 
-Cry_3C: ; f2e1a
-	dbw $84, Cry_3C_Ch5
-	dbw $05, Cry_3C_Ch6
-	dbw $07, Cry_3C_Ch8
+Cry_Teddiursa: ; f2e1a
+	musicheader 3, 5, Cry_Teddiursa_Ch5
+	musicheader 1, 6, Cry_Teddiursa_Ch6
+	musicheader 1, 8, Cry_Teddiursa_Ch8
 ; f2e23
 
-Cry_3D: ; f2e23
-	dbw $84, Cry_3D_Ch5
-	dbw $05, Cry_3D_Ch6
-	dbw $07, Cry_3D_Ch8
+Cry_Sunflora: ; f2e23
+	musicheader 3, 5, Cry_Sunflora_Ch5
+	musicheader 1, 6, Cry_Sunflora_Ch6
+	musicheader 1, 8, Cry_Sunflora_Ch8
 ; f2e2c
 
-Cry_3E: ; f2e2c
-	dbw $84, Cry_3E_Ch5
-	dbw $05, Cry_3E_Ch6
-	dbw $07, Cry_3E_Ch8
+Cry_Ampharos: ; f2e2c
+	musicheader 3, 5, Cry_Ampharos_Ch5
+	musicheader 1, 6, Cry_Ampharos_Ch6
+	musicheader 1, 8, Cry_Ampharos_Ch8
 ; f2e35
 
-Cry_32: ; f2e35
-	dbw $84, Cry_32_Ch5
-	dbw $05, Cry_32_Ch6
-	dbw $07, Cry_32_Ch8
+Cry_Totodile: ; f2e35
+	musicheader 3, 5, Cry_Totodile_Ch5
+	musicheader 1, 6, Cry_Totodile_Ch6
+	musicheader 1, 8, Cry_Totodile_Ch8
 ; f2e3e
 
-Cry_34: ; f2e3e
-	dbw $84, Cry_34_Ch5
-	dbw $05, Cry_34_Ch6
-	dbw $07, Cry_34_Ch8
+Cry_Cleffa: ; f2e3e
+	musicheader 3, 5, Cry_Cleffa_Ch5
+	musicheader 1, 6, Cry_Cleffa_Ch6
+	musicheader 1, 8, Cry_Cleffa_Ch8
 ; f2e47
 
-Cry_40: ; f2e47
-	dbw $84, Cry_40_Ch5
-	dbw $05, Cry_40_Ch6
-	dbw $07, Cry_40_Ch8
+Cry_Pichu: ; f2e47
+	musicheader 3, 5, Cry_Pichu_Ch5
+	musicheader 1, 6, Cry_Pichu_Ch6
+	musicheader 1, 8, Cry_Pichu_Ch8
 ; f2e50
 
-Cry_41: ; f2e50
-	dbw $84, Cry_41_Ch5
-	dbw $05, Cry_41_Ch6
-	dbw $07, Cry_41_Ch8
+Cry_Aipom: ; f2e50
+	musicheader 3, 5, Cry_Aipom_Ch5
+	musicheader 1, 6, Cry_Aipom_Ch6
+	musicheader 1, 8, Cry_Aipom_Ch8
 ; f2e59
 
-Cry_42: ; f2e59
-	dbw $84, Cry_42_Ch5
-	dbw $05, Cry_42_Ch6
-	dbw $07, Cry_42_Ch8
+Cry_Dunsparce: ; f2e59
+	musicheader 3, 5, Cry_Dunsparce_Ch5
+	musicheader 1, 6, Cry_Dunsparce_Ch6
+	musicheader 1, 8, Cry_Dunsparce_Ch8
 ; f2e62
 
-Cry_3F: ; f2e62
-	dbw $84, Cry_3F_Ch5
-	dbw $05, Cry_3F_Ch6
-	dbw $07, Cry_3F_Ch8
+Cry_Magcargo: ; f2e62
+	musicheader 3, 5, Cry_Magcargo_Ch5
+	musicheader 1, 6, Cry_Magcargo_Ch6
+	musicheader 1, 8, Cry_Magcargo_Ch8
 ; f2e6b
 
-Cry_37: ; f2e6b
-	dbw $84, Cry_37_Ch5
-	dbw $05, Cry_37_Ch6
-	dbw $07, Cry_37_Ch8
+Cry_Entei: ; f2e6b
+	musicheader 3, 5, Cry_Entei_Ch5
+	musicheader 1, 6, Cry_Entei_Ch6
+	musicheader 1, 8, Cry_Entei_Ch8
 ; f2e74
 
-Cry_39: ; f2e74
-	dbw $84, Cry_39_Ch5
-	dbw $05, Cry_39_Ch6
-	dbw $07, Cry_39_Ch8
+Cry_Mantine: ; f2e74
+	musicheader 3, 5, Cry_Mantine_Ch5
+	musicheader 1, 6, Cry_Mantine_Ch6
+	musicheader 1, 8, Cry_Mantine_Ch8
 ; f2e7d
 
-Cry_37_Ch5: ; f2e7d
+Cry_Entei_Ch5: ; f2e7d
 	soundinput $ff
 	unknownmusic0xde $63
-	sound $1, $f8, $05f8
-	sound $8, $9f, $04d8
-	sound $6, $f8, $05c4
-	sound $14, $f2, $0574
+	sound __,  2, $f8, $05f8
+	sound __,  9, $9f, $04d8
+	sound __,  7, $f8, $05c4
+	sound C_,  5, $f2, $0574
 	soundinput $88
 	endchannel
 ; f2e94
 
-Cry_37_Ch6: ; f2e94
+Cry_Entei_Ch6: ; f2e94
 	unknownmusic0xde $33
-	sound $1, $c8, $0640
-	sound $6, $ff, $0668
-	sound $7, $a8, $0534
-	sound $14, $a2, $04a4
+	sound __,  2, $c8, $0640
+	sound __,  7, $ff, $0668
+	sound __,  8, $a8, $0534
+	sound C_,  5, $a2, $04a4
 	endchannel
 ; f2ea7
 
-Cry_37_Ch8: ; f2ea7
-	noise $a, $d6, $6a
-	noise $6, $bc, $6c
-	noise $6, $e2, $5c
-	noise $20, $b4, $6c
+Cry_Entei_Ch8: ; f2ea7
+	noise __, 11, $d6, $6a
+	noise __,  7, $bc, $6c
+	noise __,  7, $e2, $5c
+	noise C#,  1, $b4, $6c
 	endchannel
 ; f2eb4
 
-Cry_3F_Ch5: ; f2eb4
+Cry_Magcargo_Ch5: ; f2eb4
 	unknownmusic0xde $c4
-	sound $4, $af, $0720
-	sound $2, $f8, $071c
-	sound $2, $f8, $0718
-	sound $2, $f8, $0708
-	sound $2, $f8, $070e
-	sound $c, $c8, $0712
-	sound $4, $91, $070e
+	sound __,  5, $af, $0720
+	sound __,  3, $f8, $071c
+	sound __,  3, $f8, $0718
+	sound __,  3, $f8, $0708
+	sound __,  3, $f8, $070e
+	sound __, 13, $c8, $0712
+	sound __,  5, $91, $070e
 	endchannel
 ; f2ed3
 
-Cry_3F_Ch6: ; f2ed3
+Cry_Magcargo_Ch6: ; f2ed3
 	unknownmusic0xde $a
-	sound $1, $b8, $0710
-	sound $3, $d8, $072c
-	sound $4, $d8, $0665
-	sound $1, $b8, $0656
-	sound $1, $d8, $065c
-	sound $c, $f8, $0760
-	sound $4, $c1, $0750
+	sound __,  2, $b8, $0710
+	sound __,  4, $d8, $072c
+	sound __,  5, $d8, $0665
+	sound __,  2, $b8, $0656
+	sound __,  2, $d8, $065c
+	sound __, 13, $f8, $0760
+	sound __,  5, $c1, $0750
 	endchannel
 ; f2ef2
 
-Cry_3F_Ch8: ; f2ef2
-	noise $2, $e8, $3b
-Cry_3F_branch_f2ef5: ; f2ef5
-	noise $1, $f1, $4e
-	loopchannel 5, Cry_3F_branch_f2ef5
-	noise $2, $d8, $3f
-	noise $14, $c2, $5f
+Cry_Magcargo_Ch8: ; f2ef2
+	noise __,  3, $e8, $3b
+Cry_Magcargo_branch_f2ef5: ; f2ef5
+	noise __,  2, $f1, $4e
+	loopchannel 5, Cry_Magcargo_branch_f2ef5
+	noise __,  3, $d8, $3f
+	noise C_,  5, $c2, $5f
 	endchannel
 ; f2f03
 
-Cry_42_Ch5: ; f2f03
+Cry_Dunsparce_Ch5: ; f2f03
 	unknownmusic0xde $22
-	sound $1, $f8, $05b0
-	sound $1, $f8, $04b4
-	sound $1, $f8, $05b8
-	sound $3, $f8, $05c0
-	sound $8, $c8, $0490
-	sound $8, $c8, $0480
+	sound __,  2, $f8, $05b0
+	sound __,  2, $f8, $04b4
+	sound __,  2, $f8, $05b8
+	sound __,  4, $f8, $05c0
+	sound __,  9, $c8, $0490
+	sound __,  9, $c8, $0480
 	soundinput $fe
-	sound $10, $c3, $0490
+	sound C_,  1, $c3, $0490
 	soundinput $88
 	endchannel
 ; f2f26
 
-Cry_42_Ch6: ; f2f26
+Cry_Dunsparce_Ch6: ; f2f26
 	unknownmusic0xde $22
-	sound $8, $b8, $04c8
-	sound $20, $b5, $0410
+	sound __,  9, $b8, $04c8
+	sound C#,  1, $b5, $0410
 	endchannel
 ; f2f31
 
-Cry_42_Ch8: ; f2f31
-	noise $3, $ff, $4b
-	noise $3, $ef, $4c
-	noise $20, $b5, $5f
+Cry_Dunsparce_Ch8: ; f2f31
+	noise __,  4, $ff, $4b
+	noise __,  4, $ef, $4c
+	noise C#,  1, $b5, $5f
 	endchannel
 ; f2f3b
 
-Cry_2F_Ch5: ; f2f3b
+Cry_Slowking_Ch5: ; f2f3b
 	unknownmusic0xde $33
-	sound $2, $f1, $0550
-	sound $2, $f1, $0530
-	sound $2, $f1, $0510
-	sound $2, $f2, $0650
-	sound $2, $f2, $0640
-	sound $2, $f2, $0630
-	sound $10, $f2, $0550
+	sound __,  3, $f1, $0550
+	sound __,  3, $f1, $0530
+	sound __,  3, $f1, $0510
+	sound __,  3, $f2, $0650
+	sound __,  3, $f2, $0640
+	sound __,  3, $f2, $0630
+	sound C_,  1, $f2, $0550
 	endchannel
 ; f2f5a
 
-Cry_2F_Ch6: ; f2f5a
+Cry_Slowking_Ch6: ; f2f5a
 	unknownmusic0xde $f2
-	sound $4, $e1, $0620
-	sound $5, $e2, $0500
-	sound $6, $e1, $0620
-	sound $2, $e1, $0520
-	sound $10, $e2, $0500
+	sound __,  5, $e1, $0620
+	sound __,  6, $e2, $0500
+	sound __,  7, $e1, $0620
+	sound __,  3, $e1, $0520
+	sound C_,  1, $e2, $0500
 	endchannel
 ; f2f71
 
-Cry_2F_Ch8: ; f2f71
-	noise $2, $8a, $5d
-	noise $2, $9a, $4c
-	noise $5, $9a, $5d
-	noise $2, $9a, $4d
-	noise $2, $9a, $4b
-	noise $2, $9a, $4d
-	noise $2, $9a, $5f
-	noise $10, $b2, $6f
+Cry_Slowking_Ch8: ; f2f71
+	noise __,  3, $8a, $5d
+	noise __,  3, $9a, $4c
+	noise __,  6, $9a, $5d
+	noise __,  3, $9a, $4d
+	noise __,  3, $9a, $4b
+	noise __,  3, $9a, $4d
+	noise __,  3, $9a, $5f
+	noise C_,  1, $b2, $6f
 	endchannel
 ; f2f8a
 
-Cry_40_Ch5: ; f2f8a
+Cry_Pichu_Ch5: ; f2f8a
 	dutycycle $0
 	soundinput $f7
-	sound $2, $f8, $078d
-	sound $2, $f8, $0791
+	sound __,  3, $f8, $078d
+	sound __,  3, $f8, $0791
 	soundinput $ff
-	sound $2, $f8, $07ad
+	sound __,  3, $f8, $07ad
 	soundinput $88
-	sound $2, $f8, $07b4
+	sound __,  3, $f8, $07b4
 	soundinput $f7
-	sound $2, $f8, $07b8
+	sound __,  3, $f8, $07b8
 	soundinput $88
 	endchannel
 ; f2fab
 
-Cry_40_Ch6: ; f2fab
+Cry_Pichu_Ch6: ; f2fab
 	unknownmusic0xde $10
-	sound $2, $c8, $076d
-	sound $2, $c8, $0771
-	sound $2, $c8, $078d
-	sound $2, $c8, $0794
-	sound $2, $c8, $0798
+	sound __,  3, $c8, $076d
+	sound __,  3, $c8, $0771
+	sound __,  3, $c8, $078d
+	sound __,  3, $c8, $0794
+	sound __,  3, $c8, $0798
 	endchannel
 ; f2fc2
 
-Cry_40_Ch8: ; f2fc2
-	noise $2, $b8, $1
-	noise $2, $b8, $19
-	noise $2, $c8, $18
-	noise $2, $b8, $10
-	noise $8, $c2, $18
+Cry_Pichu_Ch8: ; f2fc2
+	noise __,  3, $b8, $1
+	noise __,  3, $b8, $19
+	noise __,  3, $c8, $18
+	noise __,  3, $b8, $10
+	noise __,  9, $c2, $18
 	endchannel
 ; f2fd2
 
-Cry_26_Ch5: ; f2fd2
+Cry_Marill_Ch5: ; f2fd2
 	unknownmusic0xde $22
-	sound $2, $88, $06d8
-	sound $8, $e2, $06e0
-	sound $2, $61, $06e5
-	sound $2, $e8, $06c0
-	sound $2, $e8, $06b8
-	sound $2, $d8, $06b0
-	sound $8, $c1, $06aa
+	sound __,  3, $88, $06d8
+	sound __,  9, $e2, $06e0
+	sound __,  3, $61, $06e5
+	sound __,  3, $e8, $06c0
+	sound __,  3, $e8, $06b8
+	sound __,  3, $d8, $06b0
+	sound __,  9, $c1, $06aa
 	endchannel
 ; f2ff1
 
-Cry_26_Ch6: ; f2ff1
+Cry_Marill_Ch6: ; f2ff1
 	unknownmusic0xde $63
-	sound $2, $68, $06b1
-	sound $5, $c1, $06b9
-	sound $5, $99, $0760
-	sound $2, $b8, $068c
-	sound $2, $a8, $0684
-	sound $a, $92, $067b
+	sound __,  3, $68, $06b1
+	sound __,  6, $c1, $06b9
+	sound __,  6, $99, $0760
+	sound __,  3, $b8, $068c
+	sound __,  3, $a8, $0684
+	sound __, 11, $92, $067b
 	endchannel
 ; f300c
 
-Cry_26_Ch8: ; f300c
-	noise $1, $99, $6c
-	noise $1, $92, $5c
-	noise $a, $62, $4c
-	noise $2, $68, $6a
-	noise $2, $68, $6b
-	noise $a, $62, $6c
+Cry_Marill_Ch8: ; f300c
+	noise __,  2, $99, $6c
+	noise __,  2, $92, $5c
+	noise __, 11, $62, $4c
+	noise __,  3, $68, $6a
+	noise __,  3, $68, $6b
+	noise __, 11, $62, $6c
 	endchannel
 ; f301f
 
-Cry_28_Ch5: ; f301f
+Cry_Togepi_Ch5: ; f301f
 	tone $0002
-Cry_28_Ch6: ; f3022
-Cry_2C_branch_f3022: ; f3022
+Cry_Togepi_Ch6: ; f3022
+Cry_Togetic_branch_f3022: ; f3022
 	unknownmusic0xde $52
-	sound $4, $f1, $0796
-	sound $4, $f1, $072d
-	sound $7, $0, 0
-	sound $10, $f1, $07a7
+	sound __,  5, $f1, $0796
+	sound __,  5, $f1, $072d
+	sound __,  8, $0, 0
+	sound C_,  1, $f1, $07a7
 	endchannel
 ; f3035
 
-Cry_2C_Ch5: ; f3035
+Cry_Togetic_Ch5: ; f3035
 	tone $0002
-Cry_2C_Ch6: ; f3038
-Cry_2C_branch_f3038: ; f3038
-	callchannel Cry_2C_branch_f3022
-	loopchannel 2, Cry_2C_branch_f3038
-	sound $e, $0, 0
-	sound $8, $f2, $07c2
+Cry_Togetic_Ch6: ; f3038
+Cry_Togetic_branch_f3038: ; f3038
+	callchannel Cry_Togetic_branch_f3022
+	loopchannel 2, Cry_Togetic_branch_f3038
+	sound __, 15, $0, 0
+	sound __,  9, $f2, $07c2
 	endchannel
 ; f3048
 
-Cry_27_Ch5: ; f3048
+Cry_Spinarak_Ch5: ; f3048
 	dutycycle $1
-	sound $3, $2c, $07c4
-	sound $1, $0, $0001
-	sound $5, $59, $07b9
-	sound $6, $b4, $07bb
+	sound __,  4, $2c, $07c4
+	sound __,  2, $0, $0001
+	sound __,  6, $59, $07b9
+	sound __,  7, $b4, $07bb
 	endchannel
 ; f305b
 
-Cry_27_Ch6: ; f305b
+Cry_Spinarak_Ch6: ; f305b
 	unknownmusic0xde $2a
-	sound $3, $2c, $07c7
-	sound $1, $0, 0
-	sound $5, $59, $07be
-	sound $6, $b4, $07bd
+	sound __,  4, $2c, $07c7
+	sound __,  2, $0, 0
+	sound __,  6, $59, $07be
+	sound __,  7, $b4, $07bd
 	endchannel
 ; f306e
 
-Cry_27_Ch8: ; f306e
-	noise $3, $92, $10
-	noise $1, $39, $0
-	noise $5, $69, $10
-	noise $6, $93, $0
+Cry_Spinarak_Ch8: ; f306e
+	noise __,  4, $92, $10
+	noise __,  2, $39, $0
+	noise __,  6, $69, $10
+	noise __,  7, $93, $0
 	endchannel
 ; f307b
 
-Cry_2A_Ch5: ; f307b
+Cry_Raikou_Ch5: ; f307b
 	unknownmusic0xde $f8
-	sound $2, $f1, $04b0
-	sound $2, $f7, $0590
-	sound $8, $f8, $0510
-	sound $3, $f2, $06c0
-	sound $3, $f8, $06ba
-	sound $3, $f2, $06b0
-	sound $10, $f2, $0690
+	sound __,  3, $f1, $04b0
+	sound __,  3, $f7, $0590
+	sound __,  9, $f8, $0510
+	sound __,  4, $f2, $06c0
+	sound __,  4, $f8, $06ba
+	sound __,  4, $f2, $06b0
+	sound C_,  1, $f2, $0690
 	endchannel
 ; f309a
 
-Cry_2A_Ch6: ; f309a
+Cry_Raikou_Ch6: ; f309a
 	unknownmusic0xde $f2
-	sound $2, $f1, $0720
-	sound $2, $e1, $0650
-	sound $4, $f1, $0750
-	sound $4, $d1, $03a0
-	sound $3, $f1, $0670
-	sound $3, $e1, $0680
-	sound $3, $f2, $0690
-	sound $10, $e2, $06a0
+	sound __,  3, $f1, $0720
+	sound __,  3, $e1, $0650
+	sound __,  5, $f1, $0750
+	sound __,  5, $d1, $03a0
+	sound __,  4, $f1, $0670
+	sound __,  4, $e1, $0680
+	sound __,  4, $f2, $0690
+	sound C_,  1, $e2, $06a0
 	endchannel
 ; f30bd
 
-Cry_2A_Ch8: ; f30bd
-	noise $2, $89, $2e
-	noise $2, $99, $1f
-	noise $4, $89, $4e
-	noise $4, $89, $7b
-	noise $3, $d8, $4b
-	noise $3, $e7, $4c
-	noise $3, $ec, $4d
-	noise $10, $d2, $4f
+Cry_Raikou_Ch8: ; f30bd
+	noise __,  3, $89, $2e
+	noise __,  3, $99, $1f
+	noise __,  5, $89, $4e
+	noise __,  5, $89, $7b
+	noise __,  4, $d8, $4b
+	noise __,  4, $e7, $4c
+	noise __,  4, $ec, $4d
+	noise C_,  1, $d2, $4f
 	endchannel
 ; f30d6
 
-Cry_2D_Ch5: ; f30d6
+Cry_Hoothoot_Ch5: ; f30d6
 	unknownmusic0xde $66
-	sound $4, $78, $0650
-	sound $4, $f8, $0660
-	sound $4, $f8, $065c
-	sound $1, $f8, $067c
-	sound $4, $f8, $0680
-	sound $4, $f8, $067c
-	sound $4, $f8, $0678
-	sound $4, $f1, $0674
+	sound __,  5, $78, $0650
+	sound __,  5, $f8, $0660
+	sound __,  5, $f8, $065c
+	sound __,  2, $f8, $067c
+	sound __,  5, $f8, $0680
+	sound __,  5, $f8, $067c
+	sound __,  5, $f8, $0678
+	sound __,  5, $f1, $0674
 	endchannel
 ; f30f9
 
-Cry_2D_Ch6: ; f30f9
+Cry_Hoothoot_Ch6: ; f30f9
 	unknownmusic0xde $22
-Cry_2D_branch_f30fb: ; f30fb
-	sound $2, $a1, $0600
-	loopchannel 3, Cry_2D_branch_f30fb
-Cry_2D_branch_f3103: ; f3103
-	sound $2, $a1, $0630
-	loopchannel 4, Cry_2D_branch_f3103
-	sound $4, $a2, $0634
-	sound $4, $91, $0638
+Cry_Hoothoot_branch_f30fb: ; f30fb
+	sound __,  3, $a1, $0600
+	loopchannel 3, Cry_Hoothoot_branch_f30fb
+Cry_Hoothoot_branch_f3103: ; f3103
+	sound __,  3, $a1, $0630
+	loopchannel 4, Cry_Hoothoot_branch_f3103
+	sound __,  5, $a2, $0634
+	sound __,  5, $91, $0638
 	endchannel
 ; f3114
 
-Cry_2D_Ch8: ; f3114
-	noise $1, $68, $36
-	noise $10, $88, $6a
-	noise $1, $98, $5e
-	noise $10, $a7, $6e
+Cry_Hoothoot_Ch8: ; f3114
+	noise __,  2, $68, $36
+	noise C_,  1, $88, $6a
+	noise __,  2, $98, $5e
+	noise C_,  1, $a7, $6e
 	endchannel
 ; f3121
 
-Cry_2E_Ch5: ; f3121
+Cry_Sentret_Ch5: ; f3121
 	tone $0020
 	dutycycle $0
-	jumpchannel Cry_2E_branch_f312b
+	jumpchannel Cry_Sentret_branch_f312b
 ; f3129
 
-Cry_2E_Ch6: ; f3129
+Cry_Sentret_Ch6: ; f3129
 	unknownmusic0xde $1b
-Cry_2E_branch_f312b: ; f312b
-	sound $8, $39, $072d
-	sound $8, $f1, $0720
+Cry_Sentret_branch_f312b: ; f312b
+	sound __,  9, $39, $072d
+	sound __,  9, $f1, $0720
 	endchannel
 ; f3134
 
-Cry_2E_Ch8: ; f3134
-	noise $8, $3b, $0
-	noise $8, $92, $0
+Cry_Sentret_Ch8: ; f3134
+	noise __,  9, $3b, $0
+	noise __,  9, $92, $0
 	endchannel
 ; f313b
 
-Cry_2B_Ch5: ; f313b
+Cry_Mareep_Ch5: ; f313b
 	tone $0020
 	dutycycle $0
-	jumpchannel Cry_2B_branch_f3145
+	jumpchannel Cry_Mareep_branch_f3145
 ; f3143
 
-Cry_2B_Ch6: ; f3143
+Cry_Mareep_Ch6: ; f3143
 	unknownmusic0xde $1
-Cry_2B_branch_f3145: ; f3145
-Cry_33_branch_f3145: ; f3145
-	sound $4, $3a, $073d
-	sound $6, $f8, $0762
-	sound $6, $f8, $0760
-	sound $6, $f1, $075e
+Cry_Mareep_branch_f3145: ; f3145
+Cry_Gligar_branch_f3145: ; f3145
+	sound __,  5, $3a, $073d
+	sound __,  7, $f8, $0762
+	sound __,  7, $f8, $0760
+	sound __,  7, $f1, $075e
 	endchannel
 ; f3156
 
-Cry_30_Ch5: ; f3156
+Cry_Cyndaquil_Ch5: ; f3156
 	tone $0020
-Cry_30_Ch6: ; f3159
+Cry_Cyndaquil_Ch6: ; f3159
 	dutycycle $2
-	sound $8, $2f, $0107
-Cry_30_branch_f315f: ; f315f
-	sound $0, $e1, $0483
-	sound $0, $51, $044e
-	loopchannel 4, Cry_30_branch_f315f
-Cry_30_branch_f316b: ; f316b
-	sound $0, $e1, $03da
-	sound $1, $51, $0312
-	loopchannel 4, Cry_30_branch_f316b
+	sound __,  9, $2f, $0107
+Cry_Cyndaquil_branch_f315f: ; f315f
+	sound __,  1, $e1, $0483
+	sound __,  1, $51, $044e
+	loopchannel 4, Cry_Cyndaquil_branch_f315f
+Cry_Cyndaquil_branch_f316b: ; f316b
+	sound __,  1, $e1, $03da
+	sound __,  2, $51, $0312
+	loopchannel 4, Cry_Cyndaquil_branch_f316b
 	endchannel
 ; f3178
 
-Cry_30_Ch8: ; f3178
-Cry_33_Ch8: ; f3178
-	noise $8, $3f, $52
-	noise $20, $93, $4f
+Cry_Cyndaquil_Ch8: ; f3178
+Cry_Gligar_Ch8: ; f3178
+	noise __,  9, $3f, $52
+	noise C#,  1, $93, $4f
 	endchannel
 ; f317f
 
-Cry_31_Ch5: ; f317f
+Cry_Chikorita_Ch5: ; f317f
 	tone $0020
-Cry_31_Ch6: ; f3182
+Cry_Chikorita_Ch6: ; f3182
 	unknownmusic0xde $21
-	sound $2, $c8, $0641
-	sound $2, $48, $0641
-	sound $6, $f8, $0790
-	sound $4, $f8, $078e
-	sound $4, $f1, $078b
+	sound __,  3, $c8, $0641
+	sound __,  3, $48, $0641
+	sound __,  7, $f8, $0790
+	sound __,  5, $f8, $078e
+	sound __,  5, $f1, $078b
 	endchannel
 ; f3199
 
-Cry_31_Ch8: ; f3199
-	noise $4, $91, $10
-	noise $8, $94, $3
+Cry_Chikorita_Ch8: ; f3199
+	noise __,  5, $91, $10
+	noise __,  9, $94, $3
 	endchannel
 ; f31a0
 
-Cry_33_Ch5: ; f31a0
+Cry_Gligar_Ch5: ; f31a0
 	unknownmusic0xde $a2
-	jumpchannel Cry_33_branch_f3145
+	jumpchannel Cry_Gligar_branch_f3145
 ; f31a5
 
-Cry_29_Ch5: ; f31a5
+Cry_Girafarig_Ch5: ; f31a5
 	dutycycle $1
 	tone $0004
-	jumpchannel Cry_29_branch_f31af
+	jumpchannel Cry_Girafarig_branch_f31af
 ; f31ad
 
-Cry_29_Ch6: ; f31ad
+Cry_Girafarig_Ch6: ; f31ad
 	unknownmusic0xde $41
-Cry_29_branch_f31af: ; f31af
-	sound $4, $68, $0758
-	sound $2, $e8, $0760
-	sound $2, $e8, $0767
-	sound $2, $e8, $076c
-	sound $7, $f1, $0767
+Cry_Girafarig_branch_f31af: ; f31af
+	sound __,  5, $68, $0758
+	sound __,  3, $e8, $0760
+	sound __,  3, $e8, $0767
+	sound __,  3, $e8, $076c
+	sound __,  8, $f1, $0767
 	endchannel
 ; f31c4
 
-Cry_29_Ch8: ; f31c4
-	noise $4, $29, $0
-	noise $2, $39, $1
-	noise $2, $49, $2
-	noise $2, $59, $1
-	noise $7, $41, $0
+Cry_Girafarig_Ch8: ; f31c4
+	noise __,  5, $29, $0
+	noise __,  3, $39, $1
+	noise __,  3, $49, $2
+	noise __,  3, $59, $1
+	noise __,  8, $41, $0
 	endchannel
 ; f31d4
 
-Cry_35_Ch5: ; f31d4
+Cry_Slugma_Ch5: ; f31d4
 	unknownmusic0xde $91
-	sound $c, $f2, $07a6
-	sound $4, $f8, $07b0
-	sound $4, $e8, $03b0
-	sound $6, $f8, $03a0
-	sound $8, $e1, $0290
+	sound __, 13, $f2, $07a6
+	sound __,  5, $f8, $07b0
+	sound __,  5, $e8, $03b0
+	sound __,  7, $f8, $03a0
+	sound __,  9, $e1, $0290
 	endchannel
 ; f31eb
 
-Cry_35_Ch8: ; f31eb
-	noise $c, $b2, $50
-	noise $8, $a8, $60
-	noise $6, $a8, $5b
-	noise $8, $a1, $5c
+Cry_Slugma_Ch8: ; f31eb
+	noise __, 13, $b2, $50
+	noise __,  9, $a8, $60
+	noise __,  7, $a8, $5b
+	noise __,  9, $a1, $5c
 	endchannel
 ; f31f8
 
-Cry_36_Ch5: ; f31f8
+Cry_Ledyba_Ch5: ; f31f8
 	tone $0002
 	dutycycle $2
-	jumpchannel Cry_36_branch_f3202
+	jumpchannel Cry_Ledyba_branch_f3202
 ; f3200
 
-Cry_36_Ch6: ; f3200
+Cry_Ledyba_Ch6: ; f3200
 	unknownmusic0xde $1
-Cry_36_branch_f3202: ; f3202
-	sound $3, $f8, $0791
-	sound $3, $d8, $078d
-	sound $2, $0, 0
-	sound $1, $78, $06c1
-	sound $1, $f8, $0741
-	sound $4, $e1, $0751
+Cry_Ledyba_branch_f3202: ; f3202
+	sound __,  4, $f8, $0791
+	sound __,  4, $d8, $078d
+	sound __,  3, $0, 0
+	sound __,  2, $78, $06c1
+	sound __,  2, $f8, $0741
+	sound __,  5, $e1, $0751
 	endchannel
 ; f321b
 
-Cry_36_Ch8: ; f321b
-	noise $3, $59, $21
-	noise $3, $81, $0
-	noise $2, $20, $0
-	noise $1, $80, $21
-	noise $1, $80, $10
-	noise $4, $87, $0
+Cry_Ledyba_Ch8: ; f321b
+	noise __,  4, $59, $21
+	noise __,  4, $81, $0
+	noise __,  3, $20, $0
+	noise __,  2, $80, $21
+	noise __,  2, $80, $10
+	noise __,  5, $87, $0
 	endchannel
 ; f322e
 
-Cry_38_Ch5: ; f322e
-Cry_43_Ch5: ; f322e
+Cry_Wooper_Ch5: ; f322e
+Cry_Donphan_Ch5: ; f322e
 	dutycycle $2
-	sound $2, $99, $0718
-	sound $4, $ab, $0722
-	sound $8, $ab, $0734
-	sound $4, $d6, $0716
-	sound $8, $d1, $0712
-	sound $8, $0, 0
+	sound __,  3, $99, $0718
+	sound __,  5, $ab, $0722
+	sound __,  9, $ab, $0734
+	sound __,  5, $d6, $0716
+	sound __,  9, $d1, $0712
+	sound __,  9, $0, 0
 	endchannel
 ; f3249
 
-Cry_38_Ch6: ; f3249
-Cry_43_Ch6: ; f3249
+Cry_Wooper_Ch6: ; f3249
+Cry_Donphan_Ch6: ; f3249
 	unknownmusic0xde $7
-	sound $2, $b9, $0738
-	sound $4, $cb, $0742
-	sound $8, $cb, $0754
-	sound $4, $f6, $0736
-	sound $8, $f1, $0732
-	sound $8, $0, 0
+	sound __,  3, $b9, $0738
+	sound __,  5, $cb, $0742
+	sound __,  9, $cb, $0754
+	sound __,  5, $f6, $0736
+	sound __,  9, $f1, $0732
+	sound __,  9, $0, 0
 	endchannel
 ; f3264
 
-Cry_38_Ch8: ; f3264
-	noise $2, $5b, $4
-	noise $4, $68, $13
-	noise $8, $68, $20
-	noise $4, $68, $13
-	noise $10, $51, $4
+Cry_Wooper_Ch8: ; f3264
+	noise __,  3, $5b, $4
+	noise __,  5, $68, $13
+	noise __,  9, $68, $20
+	noise __,  5, $68, $13
+	noise C_,  1, $51, $4
 	endchannel
 ; f3274
 
-Cry_43_Ch8: ; f3274
-	noise $2, $8b, $59
-	noise $4, $a8, $6a
-	noise $8, $a8, $70
-	noise $4, $a8, $69
-	noise $10, $92, $6c
+Cry_Donphan_Ch8: ; f3274
+	noise __,  3, $8b, $59
+	noise __,  5, $a8, $6a
+	noise __,  9, $a8, $70
+	noise __,  5, $a8, $69
+	noise C_,  1, $92, $6c
 	endchannel
 ; f3284
 
-Cry_3A_Ch5: ; f3284
-Cry_3C_Ch5: ; f3284
+Cry_Typhlosion_Ch5: ; f3284
+Cry_Teddiursa_Ch5: ; f3284
 	unknownmusic0xde $12
-Cry_3A_branch_f3286: ; f3286
-Cry_3C_branch_f3286: ; f3286
-	sound $3, $c1, $0791
-	loopchannel 3, Cry_3A_branch_f3286
-Cry_3A_branch_f328e: ; f328e
-Cry_3C_branch_f328e: ; f328e
-	sound $3, $d1, $04b1
-	loopchannel 6, Cry_3A_branch_f328e
-Cry_3A_branch_f3296: ; f3296
-Cry_3C_branch_f3296: ; f3296
-	sound $1, $d1, $0491
-	sound $1, $b1, $0451
-	loopchannel 6, Cry_3A_branch_f3296
-Cry_3A_branch_f32a2: ; f32a2
-Cry_3C_branch_f32a2: ; f32a2
-	sound $1, $a3, $0471
-	sound $1, $81, $0441
-	loopchannel 6, Cry_3A_branch_f32a2
-Cry_3A_branch_f32ae: ; f32ae
-Cry_3C_branch_f32ae: ; f32ae
-	sound $1, $41, $0421
-	sound $1, $21, $0401
-	loopchannel 4, Cry_3A_branch_f32ae
+Cry_Typhlosion_branch_f3286: ; f3286
+Cry_Teddiursa_branch_f3286: ; f3286
+	sound __,  4, $c1, $0791
+	loopchannel 3, Cry_Typhlosion_branch_f3286
+Cry_Typhlosion_branch_f328e: ; f328e
+Cry_Teddiursa_branch_f328e: ; f328e
+	sound __,  4, $d1, $04b1
+	loopchannel 6, Cry_Typhlosion_branch_f328e
+Cry_Typhlosion_branch_f3296: ; f3296
+Cry_Teddiursa_branch_f3296: ; f3296
+	sound __,  2, $d1, $0491
+	sound __,  2, $b1, $0451
+	loopchannel 6, Cry_Typhlosion_branch_f3296
+Cry_Typhlosion_branch_f32a2: ; f32a2
+Cry_Teddiursa_branch_f32a2: ; f32a2
+	sound __,  2, $a3, $0471
+	sound __,  2, $81, $0441
+	loopchannel 6, Cry_Typhlosion_branch_f32a2
+Cry_Typhlosion_branch_f32ae: ; f32ae
+Cry_Teddiursa_branch_f32ae: ; f32ae
+	sound __,  2, $41, $0421
+	sound __,  2, $21, $0401
+	loopchannel 4, Cry_Typhlosion_branch_f32ae
 	endchannel
 ; f32bb
 
-Cry_3A_Ch6: ; f32bb
-Cry_3C_Ch6: ; f32bb
+Cry_Typhlosion_Ch6: ; f32bb
+Cry_Teddiursa_Ch6: ; f32bb
 	unknownmusic0xde $78
-	sound $8, $99, $0740
-	sound $8, $79, $0746
-	sound $10, $f6, $078d
-	sound $8, $f8, $0791
-	sound $8, $f8, $078d
-	sound $8, $f8, $0787
-	sound $18, $e2, $0783
+	sound __,  9, $99, $0740
+	sound __,  9, $79, $0746
+	sound C_,  1, $f6, $078d
+	sound __,  9, $f8, $0791
+	sound __,  9, $f8, $078d
+	sound __,  9, $f8, $0787
+	sound C_,  9, $e2, $0783
 	endchannel
 ; f32da
 
-Cry_3A_Ch8: ; f32da
-	noise $10, $a6, $16
-	noise $18, $98, $3d
-	noise $20, $98, $5c
-	noise $20, $75, $5f
+Cry_Typhlosion_Ch8: ; f32da
+	noise C_,  1, $a6, $16
+	noise C_,  9, $98, $3d
+	noise C#,  1, $98, $5c
+	noise C#,  1, $75, $5f
 	endchannel
 ; f32e7
 
-Cry_3B_Ch5: ; f32e7
+Cry_Natu_Ch5: ; f32e7
 	unknownmusic0xde $de
-Cry_39_branch_f32e9: ; f32e9
-Cry_3D_branch_f32e9: ; f32e9
-	sound $4, $f8, $07b1
-	sound $4, $f8, $07b0
-	sound $4, $48, $07af
-Cry_39_branch_f32f5: ; f32f5
-	sound $4, $f8, $07b2
-	sound $4, $f8, $07b3
-	sound $4, $48, $07b4
+Cry_Mantine_branch_f32e9: ; f32e9
+Cry_Sunflora_branch_f32e9: ; f32e9
+	sound __,  5, $f8, $07b1
+	sound __,  5, $f8, $07b0
+	sound __,  5, $48, $07af
+Cry_Mantine_branch_f32f5: ; f32f5
+	sound __,  5, $f8, $07b2
+	sound __,  5, $f8, $07b3
+	sound __,  5, $48, $07b4
 	endchannel
 ; f3302
 
-Cry_39_branch_f3302: ; f3302
-Cry_3B_Ch6: ; f3302
-Cry_3D_Ch6: ; f3302
+Cry_Mantine_branch_f3302: ; f3302
+Cry_Natu_Ch6: ; f3302
+Cry_Sunflora_Ch6: ; f3302
 	unknownmusic0xde $f2
-	sound $4, $f8, $07b2
-	sound $4, $f8, $07b1
-	sound $4, $28, $07b0
-Cry_39_branch_f3310: ; f3310
-	sound $4, $f8, $07b4
-	sound $4, $f8, $07b6
-	sound $4, $48, $07b8
+	sound __,  5, $f8, $07b2
+	sound __,  5, $f8, $07b1
+	sound __,  5, $28, $07b0
+Cry_Mantine_branch_f3310: ; f3310
+	sound __,  5, $f8, $07b4
+	sound __,  5, $f8, $07b6
+	sound __,  5, $48, $07b8
 	endchannel
 ; f331d
 
-Cry_39_branch_f331d: ; f331d
-Cry_3B_Ch8: ; f331d
-Cry_3D_Ch8: ; f331d
-	noise $4, $88, $5
-	noise $4, $88, $4
-	noise $4, $38, $3
-Cry_39_branch_f3326: ; f3326
-	noise $4, $88, $5
-	noise $4, $88, $4
-	noise $4, $87, $4
+Cry_Mantine_branch_f331d: ; f331d
+Cry_Natu_Ch8: ; f331d
+Cry_Sunflora_Ch8: ; f331d
+	noise __,  5, $88, $5
+	noise __,  5, $88, $4
+	noise __,  5, $38, $3
+Cry_Mantine_branch_f3326: ; f3326
+	noise __,  5, $88, $5
+	noise __,  5, $88, $4
+	noise __,  5, $87, $4
 	endchannel
 ; f3330
 
-Cry_3C_Ch8: ; f3330
-	noise $8, $a6, $3a
-	noise $8, $a1, $5a
+Cry_Teddiursa_Ch8: ; f3330
+	noise __,  9, $a6, $3a
+	noise __,  9, $a1, $5a
 	endchannel
 ; f3337
 
-Cry_3D_Ch5: ; f3337
+Cry_Sunflora_Ch5: ; f3337
 	dutycycle $0
-	jumpchannel Cry_3D_branch_f32e9
+	jumpchannel Cry_Sunflora_branch_f32e9
 ; f333c
 
-Cry_39_Ch5: ; f333c
+Cry_Mantine_Ch5: ; f333c
 	dutycycle $0
-	callchannel Cry_39_branch_f32e9
-	callchannel Cry_39_branch_f32f5
+	callchannel Cry_Mantine_branch_f32e9
+	callchannel Cry_Mantine_branch_f32f5
 	endchannel
 ; f3345
 
-Cry_39_Ch6: ; f3345
-	callchannel Cry_39_branch_f3302
-	callchannel Cry_39_branch_f3310
+Cry_Mantine_Ch6: ; f3345
+	callchannel Cry_Mantine_branch_f3302
+	callchannel Cry_Mantine_branch_f3310
 	endchannel
 ; f334c
 
-Cry_39_Ch8: ; f334c
-	callchannel Cry_39_branch_f331d
-	callchannel Cry_39_branch_f3326
+Cry_Mantine_Ch8: ; f334c
+	callchannel Cry_Mantine_branch_f331d
+	callchannel Cry_Mantine_branch_f3326
 	endchannel
 ; f3353
 
-Cry_3E_Ch5: ; f3353
+Cry_Ampharos_Ch5: ; f3353
 	unknownmusic0xde $de
-Cry_3E_branch_f3355: ; f3355
-	sound $1, $c1, $0520
-	sound $1, $a1, $0420
-	loopchannel 4, Cry_3E_branch_f3355
+Cry_Ampharos_branch_f3355: ; f3355
+	sound __,  2, $c1, $0520
+	sound __,  2, $a1, $0420
+	loopchannel 4, Cry_Ampharos_branch_f3355
 	dutycycle $0
-	sound $4, $78, $0760
-	sound $4, $78, $0730
-	sound $18, $c2, $0420
+	sound __,  5, $78, $0760
+	sound __,  5, $78, $0730
+	sound C_,  9, $c2, $0420
 	endchannel
 ; f3370
 
-Cry_3E_Ch6: ; f3370
+Cry_Ampharos_Ch6: ; f3370
 	unknownmusic0xde $32
-	sound $8, $f8, $0700
-	sound $7, $f8, $0720
-	sound $4, $f8, $0790
-	sound $4, $f8, $0760
-	sound $18, $f2, $0730
+	sound __,  9, $f8, $0700
+	sound __,  8, $f8, $0720
+	sound __,  5, $f8, $0790
+	sound __,  5, $f8, $0760
+	sound C_,  9, $f2, $0730
 	endchannel
 ; f3387
 
-Cry_3E_Ch8: ; f3387
-	noise $4, $88, $6d
-	noise $4, $d8, $68
-	noise $7, $c8, $69
-	noise $4, $98, $3a
-	noise $4, $98, $3c
-	noise $18, $d2, $5b
+Cry_Ampharos_Ch8: ; f3387
+	noise __,  5, $88, $6d
+	noise __,  5, $d8, $68
+	noise __,  8, $c8, $69
+	noise __,  5, $98, $3a
+	noise __,  5, $98, $3c
+	noise C_,  9, $d2, $5b
 	endchannel
 ; f339a
 
-Cry_32_Ch5: ; f339a
+Cry_Totodile_Ch5: ; f339a
 	unknownmusic0xde $32
-	sound $8, $f8, $0330
-	sound $8, $f8, $0340
-	sound $8, $c8, $07b2
-	sound $8, $b8, $07b3
-	sound $20, $b2, $07b4
+	sound __,  9, $f8, $0330
+	sound __,  9, $f8, $0340
+	sound __,  9, $c8, $07b2
+	sound __,  9, $b8, $07b3
+	sound C#,  1, $b2, $07b4
 	endchannel
 ; f33b1
 
-Cry_32_Ch6: ; f33b1
+Cry_Totodile_Ch6: ; f33b1
 	unknownmusic0xde $12
-	sound $8, $e8, $0320
-	sound $8, $e8, $0328
-	sound $8, $98, $0780
-	sound $8, $88, $0782
-	sound $20, $72, $0784
+	sound __,  9, $e8, $0320
+	sound __,  9, $e8, $0328
+	sound __,  9, $98, $0780
+	sound __,  9, $88, $0782
+	sound C#,  1, $72, $0784
 	endchannel
 ; f33c8
 
-Cry_32_Ch8: ; f33c8
-	noise $2, $be, $49
-	noise $5, $be, $3a
-	noise $2, $be, $29
-	noise $28, $d3, $6e
+Cry_Totodile_Ch8: ; f33c8
+	noise __,  3, $be, $49
+	noise __,  6, $be, $3a
+	noise __,  3, $be, $29
+	noise C#,  9, $d3, $6e
 	endchannel
 ; f33d5
 
-Cry_34_Ch5: ; f33d5
+Cry_Cleffa_Ch5: ; f33d5
 	unknownmusic0xde $39
 	soundinput $ff
-	sound $2, $f8, $0720
-	sound $2, $f8, $0727
-	sound $2, $f8, $0780
+	sound __,  3, $f8, $0720
+	sound __,  3, $f8, $0727
+	sound __,  3, $f8, $0780
 	soundinput $88
-	sound $2, $f8, $0779
-	sound $4, $f8, $0740
-	sound $4, $f8, $073c
+	sound __,  3, $f8, $0779
+	sound __,  5, $f8, $0740
+	sound __,  5, $f8, $073c
 	soundinput $ff
-	sound $8, $f1, $0737
+	sound __,  9, $f1, $0737
 	soundinput $88
 	endchannel
 ; f33fc
 
-Cry_34_Ch6: ; f33fc
+Cry_Cleffa_Ch6: ; f33fc
 	unknownmusic0xde $22
-	sound $6, $b2, $071e
-	sound $5, $92, $0779
-	sound $4, $82, $073e
-	sound $8, $a1, $0735
+	sound __,  7, $b2, $071e
+	sound __,  6, $92, $0779
+	sound __,  5, $82, $073e
+	sound __,  9, $a1, $0735
 	endchannel
 ; f340f
 
-Cry_34_Ch8: ; f340f
-	noise $2, $64, $7f
-	noise $2, $84, $7d
-	noise $2, $a4, $6f
-	noise $2, $64, $6c
-	noise $2, $94, $6f
-	noise $2, $61, $6b
+Cry_Cleffa_Ch8: ; f340f
+	noise __,  3, $64, $7f
+	noise __,  3, $84, $7d
+	noise __,  3, $a4, $6f
+	noise __,  3, $64, $6c
+	noise __,  3, $94, $6f
+	noise __,  3, $61, $6b
 	endchannel
 ; f3422
 
-Cry_41_Ch5: ; f3422
-	unknownmusic0xde $d2
-	sound $3, $f8, $06b0
-	sound $1, $f8, $06a5
-	sound $1, $f8, $069d
-	sound $7, $f1, $068a
-	sound $3, $f8, $0736
-	sound $3, $f8, $0720
-	sound $14, $f2, $070e
+Cry_Aipom_Ch5: ; f3422
+	unknownmusic0xde $d2
+	sound __,  4, $f8, $06b0
+	sound __,  2, $f8, $06a5
+	sound __,  2, $f8, $069d
+	sound __,  8, $f1, $068a
+	sound __,  4, $f8, $0736
+	sound __,  4, $f8, $0720
+	sound C_,  5, $f2, $070e
 	endchannel
 ; f3441
 
-Cry_41_Ch6: ; f3441
+Cry_Aipom_Ch6: ; f3441
 	unknownmusic0xde $27
-Cry_41_branch_f3443: ; f3443
-	sound $1, $f1, $07b4
-	loopchannel 8, Cry_41_branch_f3443
-Cry_41_branch_f344b: ; f344b
-	sound $1, $c1, $0790
-	loopchannel 3, Cry_41_branch_f344b
-Cry_41_branch_f3453: ; f3453
-	sound $1, $b1, $078d
-	loopchannel 2, Cry_41_branch_f3453
-	sound $10, $92, $0795
+Cry_Aipom_branch_f3443: ; f3443
+	sound __,  2, $f1, $07b4
+	loopchannel 8, Cry_Aipom_branch_f3443
+Cry_Aipom_branch_f344b: ; f344b
+	sound __,  2, $c1, $0790
+	loopchannel 3, Cry_Aipom_branch_f344b
+Cry_Aipom_branch_f3453: ; f3453
+	sound __,  2, $b1, $078d
+	loopchannel 2, Cry_Aipom_branch_f3453
+	sound C_,  1, $92, $0795
 	endchannel
 ; f3460
 
-Cry_41_Ch8: ; f3460
-Cry_41_branch_f3460: ; f3460
-	noise $0, $f1, $28
-	loopchannel 4, Cry_41_branch_f3460
-	noise $0, $91, $49
-	noise $1, $a8, $4a
-	noise $0, $e1, $4b
-	noise $5, $d2, $4f
-	noise $3, $c2, $4e
-	noise $3, $b2, $4d
-	noise $14, $a3, $4c
+Cry_Aipom_Ch8: ; f3460
+Cry_Aipom_branch_f3460: ; f3460
+	noise __,  1, $f1, $28
+	loopchannel 4, Cry_Aipom_branch_f3460
+	noise __,  1, $91, $49
+	noise __,  2, $a8, $4a
+	noise __,  1, $e1, $4b
+	noise __,  6, $d2, $4f
+	noise __,  4, $c2, $4e
+	noise __,  4, $b2, $4d
+	noise C_,  5, $a3, $4c
 	endchannel
 ; f347d
 
-Cry_00: ; f347d
-	dbw $84, Cry_00_Ch5
-	dbw $05, Cry_00_Ch6
-	dbw $07, Cry_00_Ch8
+Cry_Nidoran_M: ; f347d
+	musicheader 3, 5, Cry_Nidoran_M_Ch5
+	musicheader 1, 6, Cry_Nidoran_M_Ch6
+	musicheader 1, 8, Cry_Nidoran_M_Ch8
 ; f3486
 
-Cry_01: ; f3486
-	dbw $84, Cry_01_Ch5
-	dbw $05, Cry_01_Ch6
-	dbw $07, Cry_01_Ch8
+Cry_Nidoran_F: ; f3486
+	musicheader 3, 5, Cry_Nidoran_F_Ch5
+	musicheader 1, 6, Cry_Nidoran_F_Ch6
+	musicheader 1, 8, Cry_Nidoran_F_Ch8
 ; f348f
 
-Cry_02: ; f348f
-	dbw $84, Cry_02_Ch5
-	dbw $05, Cry_02_Ch6
-	dbw $07, Cry_02_Ch8
+Cry_Slowpoke: ; f348f
+	musicheader 3, 5, Cry_Slowpoke_Ch5
+	musicheader 1, 6, Cry_Slowpoke_Ch6
+	musicheader 1, 8, Cry_Slowpoke_Ch8
 ; f3498
 
-Cry_03: ; f3498
-	dbw $84, Cry_03_Ch5
-	dbw $05, Cry_03_Ch6
-	dbw $07, Cry_03_Ch8
+Cry_Kangaskhan: ; f3498
+	musicheader 3, 5, Cry_Kangaskhan_Ch5
+	musicheader 1, 6, Cry_Kangaskhan_Ch6
+	musicheader 1, 8, Cry_Kangaskhan_Ch8
 ; f34a1
 
-Cry_04: ; f34a1
-	dbw $84, Cry_04_Ch5
-	dbw $05, Cry_04_Ch6
-	dbw $07, Cry_04_Ch8
+Cry_Charmander: ; f34a1
+	musicheader 3, 5, Cry_Charmander_Ch5
+	musicheader 1, 6, Cry_Charmander_Ch6
+	musicheader 1, 8, Cry_Charmander_Ch8
 ; f34aa
 
-Cry_05: ; f34aa
-	dbw $84, Cry_05_Ch5
-	dbw $05, Cry_05_Ch6
-	dbw $07, Cry_05_Ch8
+Cry_Grimer: ; f34aa
+	musicheader 3, 5, Cry_Grimer_Ch5
+	musicheader 1, 6, Cry_Grimer_Ch6
+	musicheader 1, 8, Cry_Grimer_Ch8
 ; f34b3
 
-Cry_06: ; f34b3
-	dbw $84, Cry_06_Ch5
-	dbw $05, Cry_06_Ch6
-	dbw $07, Cry_06_Ch8
+Cry_Voltorb: ; f34b3
+	musicheader 3, 5, Cry_Voltorb_Ch5
+	musicheader 1, 6, Cry_Voltorb_Ch6
+	musicheader 1, 8, Cry_Voltorb_Ch8
 ; f34bc
 
-Cry_07: ; f34bc
-	dbw $84, Cry_07_Ch5
-	dbw $05, Cry_07_Ch6
-	dbw $07, Cry_07_Ch8
+Cry_Muk: ; f34bc
+	musicheader 3, 5, Cry_Muk_Ch5
+	musicheader 1, 6, Cry_Muk_Ch6
+	musicheader 1, 8, Cry_Muk_Ch8
 ; f34c5
 
-Cry_08: ; f34c5
-	dbw $84, Cry_08_Ch5
-	dbw $05, Cry_08_Ch6
-	dbw $07, Cry_08_Ch8
+Cry_Oddish: ; f34c5
+	musicheader 3, 5, Cry_Oddish_Ch5
+	musicheader 1, 6, Cry_Oddish_Ch6
+	musicheader 1, 8, Cry_Oddish_Ch8
 ; f34ce
 
-Cry_09: ; f34ce
-	dbw $84, Cry_09_Ch5
-	dbw $05, Cry_09_Ch6
-	dbw $07, Cry_09_Ch8
+Cry_Raichu: ; f34ce
+	musicheader 3, 5, Cry_Raichu_Ch5
+	musicheader 1, 6, Cry_Raichu_Ch6
+	musicheader 1, 8, Cry_Raichu_Ch8
 ; f34d7
 
-Cry_0A: ; f34d7
-	dbw $84, Cry_0A_Ch5
-	dbw $05, Cry_0A_Ch6
-	dbw $07, Cry_0A_Ch8
+Cry_Nidoqueen: ; f34d7
+	musicheader 3, 5, Cry_Nidoqueen_Ch5
+	musicheader 1, 6, Cry_Nidoqueen_Ch6
+	musicheader 1, 8, Cry_Nidoqueen_Ch8
 ; f34e0
 
-Cry_0B: ; f34e0
-	dbw $84, Cry_0B_Ch5
-	dbw $05, Cry_0B_Ch6
-	dbw $07, Cry_0B_Ch8
+Cry_Diglett: ; f34e0
+	musicheader 3, 5, Cry_Diglett_Ch5
+	musicheader 1, 6, Cry_Diglett_Ch6
+	musicheader 1, 8, Cry_Diglett_Ch8
 ; f34e9
 
-Cry_0C: ; f34e9
-	dbw $84, Cry_0C_Ch5
-	dbw $05, Cry_0C_Ch6
-	dbw $07, Cry_0C_Ch8
+Cry_Seel: ; f34e9
+	musicheader 3, 5, Cry_Seel_Ch5
+	musicheader 1, 6, Cry_Seel_Ch6
+	musicheader 1, 8, Cry_Seel_Ch8
 ; f34f2
 
-Cry_0D: ; f34f2
-	dbw $84, Cry_0D_Ch5
-	dbw $05, Cry_0D_Ch6
-	dbw $07, Cry_0D_Ch8
+Cry_Drowzee: ; f34f2
+	musicheader 3, 5, Cry_Drowzee_Ch5
+	musicheader 1, 6, Cry_Drowzee_Ch6
+	musicheader 1, 8, Cry_Drowzee_Ch8
 ; f34fb
 
-Cry_0E: ; f34fb
-	dbw $84, Cry_0E_Ch5
-	dbw $05, Cry_0E_Ch6
-	dbw $07, Cry_0E_Ch8
+Cry_Pidgey: ; f34fb
+	musicheader 3, 5, Cry_Pidgey_Ch5
+	musicheader 1, 6, Cry_Pidgey_Ch6
+	musicheader 1, 8, Cry_Pidgey_Ch8
 ; f3504
 
-Cry_0F: ; f3504
-	dbw $84, Cry_0F_Ch5
-	dbw $05, Cry_0F_Ch6
-	dbw $07, Cry_0F_Ch8
+Cry_Bulbasaur: ; f3504
+	musicheader 3, 5, Cry_Bulbasaur_Ch5
+	musicheader 1, 6, Cry_Bulbasaur_Ch6
+	musicheader 1, 8, Cry_Bulbasaur_Ch8
 ; f350d
 
-Cry_10: ; f350d
-	dbw $84, Cry_10_Ch5
-	dbw $05, Cry_10_Ch6
-	dbw $07, Cry_10_Ch8
+Cry_Spearow: ; f350d
+	musicheader 3, 5, Cry_Spearow_Ch5
+	musicheader 1, 6, Cry_Spearow_Ch6
+	musicheader 1, 8, Cry_Spearow_Ch8
 ; f3516
 
-Cry_11: ; f3516
-	dbw $84, Cry_11_Ch5
-	dbw $05, Cry_11_Ch6
-	dbw $07, Cry_11_Ch8
+Cry_Rhydon: ; f3516
+	musicheader 3, 5, Cry_Rhydon_Ch5
+	musicheader 1, 6, Cry_Rhydon_Ch6
+	musicheader 1, 8, Cry_Rhydon_Ch8
 ; f351f
 
-Cry_12: ; f351f
-	dbw $84, Cry_12_Ch5
-	dbw $05, Cry_12_Ch6
-	dbw $07, Cry_12_Ch8
+Cry_Golem: ; f351f
+	musicheader 3, 5, Cry_Golem_Ch5
+	musicheader 1, 6, Cry_Golem_Ch6
+	musicheader 1, 8, Cry_Golem_Ch8
 ; f3528
 
-Cry_13: ; f3528
-	dbw $84, Cry_13_Ch5
-	dbw $05, Cry_13_Ch6
-	dbw $07, Cry_13_Ch8
+Cry_Blastoise: ; f3528
+	musicheader 3, 5, Cry_Blastoise_Ch5
+	musicheader 1, 6, Cry_Blastoise_Ch6
+	musicheader 1, 8, Cry_Blastoise_Ch8
 ; f3531
 
-Cry_14: ; f3531
-	dbw $84, Cry_14_Ch5
-	dbw $05, Cry_14_Ch6
-	dbw $07, Cry_14_Ch8
+Cry_Pidgeotto: ; f3531
+	musicheader 3, 5, Cry_Pidgeotto_Ch5
+	musicheader 1, 6, Cry_Pidgeotto_Ch6
+	musicheader 1, 8, Cry_Pidgeotto_Ch8
 ; f353a
 
-Cry_15: ; f353a
-	dbw $84, Cry_15_Ch5
-	dbw $05, Cry_15_Ch6
-	dbw $07, Cry_15_Ch8
+Cry_Weedle: ; f353a
+	musicheader 3, 5, Cry_Weedle_Ch5
+	musicheader 1, 6, Cry_Weedle_Ch6
+	musicheader 1, 8, Cry_Weedle_Ch8
 ; f3543
 
-Cry_16: ; f3543
-	dbw $84, Cry_16_Ch5
-	dbw $05, Cry_16_Ch6
-	dbw $07, Cry_16_Ch8
+Cry_Caterpie: ; f3543
+	musicheader 3, 5, Cry_Caterpie_Ch5
+	musicheader 1, 6, Cry_Caterpie_Ch6
+	musicheader 1, 8, Cry_Caterpie_Ch8
 ; f354c
 
-Cry_17: ; f354c
-	dbw $84, Cry_17_Ch5
-	dbw $05, Cry_17_Ch6
-	dbw $07, Cry_17_Ch8
+Cry_Ekans: ; f354c
+	musicheader 3, 5, Cry_Ekans_Ch5
+	musicheader 1, 6, Cry_Ekans_Ch6
+	musicheader 1, 8, Cry_Ekans_Ch8
 ; f3555
 
-Cry_18: ; f3555
-	dbw $84, Cry_18_Ch5
-	dbw $05, Cry_18_Ch6
-	dbw $07, Cry_18_Ch8
+Cry_Fearow: ; f3555
+	musicheader 3, 5, Cry_Fearow_Ch5
+	musicheader 1, 6, Cry_Fearow_Ch6
+	musicheader 1, 8, Cry_Fearow_Ch8
 ; f355e
 
-Cry_19: ; f355e
-	dbw $84, Cry_19_Ch5
-	dbw $05, Cry_19_Ch6
-	dbw $07, Cry_19_Ch8
+Cry_Clefairy: ; f355e
+	musicheader 3, 5, Cry_Clefairy_Ch5
+	musicheader 1, 6, Cry_Clefairy_Ch6
+	musicheader 1, 8, Cry_Clefairy_Ch8
 ; f3567
 
-Cry_1A: ; f3567
-	dbw $84, Cry_1A_Ch5
-	dbw $05, Cry_1A_Ch6
-	dbw $07, Cry_1A_Ch8
+Cry_Venonat: ; f3567
+	musicheader 3, 5, Cry_Venonat_Ch5
+	musicheader 1, 6, Cry_Venonat_Ch6
+	musicheader 1, 8, Cry_Venonat_Ch8
 ; f3570
 
-Cry_1B: ; f3570
-	dbw $84, Cry_1B_Ch5
-	dbw $05, Cry_1B_Ch6
-	dbw $07, Cry_1B_Ch8
+Cry_Lapras: ; f3570
+	musicheader 3, 5, Cry_Lapras_Ch5
+	musicheader 1, 6, Cry_Lapras_Ch6
+	musicheader 1, 8, Cry_Lapras_Ch8
 ; f3579
 
-Cry_1C: ; f3579
-	dbw $84, Cry_1C_Ch5
-	dbw $05, Cry_1C_Ch6
-	dbw $07, Cry_1C_Ch8
+Cry_Metapod: ; f3579
+	musicheader 3, 5, Cry_Metapod_Ch5
+	musicheader 1, 6, Cry_Metapod_Ch6
+	musicheader 1, 8, Cry_Metapod_Ch8
 ; f3582
 
-Cry_1D: ; f3582
-	dbw $84, Cry_1D_Ch5
-	dbw $05, Cry_1D_Ch6
-	dbw $07, Cry_1D_Ch8
+Cry_Squirtle: ; f3582
+	musicheader 3, 5, Cry_Squirtle_Ch5
+	musicheader 1, 6, Cry_Squirtle_Ch6
+	musicheader 1, 8, Cry_Squirtle_Ch8
 ; f358b
 
-Cry_1E: ; f358b
-	dbw $84, Cry_1E_Ch5
-	dbw $05, Cry_1E_Ch6
-	dbw $07, Cry_1E_Ch8
+Cry_Paras: ; f358b
+	musicheader 3, 5, Cry_Paras_Ch5
+	musicheader 1, 6, Cry_Paras_Ch6
+	musicheader 1, 8, Cry_Paras_Ch8
 ; f3594
 
-Cry_1F: ; f3594
-	dbw $84, Cry_1F_Ch5
-	dbw $05, Cry_1F_Ch6
-	dbw $07, Cry_1F_Ch8
+Cry_Growlithe: ; f3594
+	musicheader 3, 5, Cry_Growlithe_Ch5
+	musicheader 1, 6, Cry_Growlithe_Ch6
+	musicheader 1, 8, Cry_Growlithe_Ch8
 ; f359d
 
-Cry_20: ; f359d
-	dbw $84, Cry_20_Ch5
-	dbw $05, Cry_20_Ch6
-	dbw $07, Cry_20_Ch8
+Cry_Krabby: ; f359d
+	musicheader 3, 5, Cry_Krabby_Ch5
+	musicheader 1, 6, Cry_Krabby_Ch6
+	musicheader 1, 8, Cry_Krabby_Ch8
 ; f35a6
 
-Cry_21: ; f35a6
-	dbw $84, Cry_21_Ch5
-	dbw $05, Cry_21_Ch6
-	dbw $07, Cry_21_Ch8
+Cry_Psyduck: ; f35a6
+	musicheader 3, 5, Cry_Psyduck_Ch5
+	musicheader 1, 6, Cry_Psyduck_Ch6
+	musicheader 1, 8, Cry_Psyduck_Ch8
 ; f35af
 
-Cry_22: ; f35af
-	dbw $84, Cry_22_Ch5
-	dbw $05, Cry_22_Ch6
-	dbw $07, Cry_22_Ch8
+Cry_Rattata: ; f35af
+	musicheader 3, 5, Cry_Rattata_Ch5
+	musicheader 1, 6, Cry_Rattata_Ch6
+	musicheader 1, 8, Cry_Rattata_Ch8
 ; f35b8
 
-Cry_23: ; f35b8
-	dbw $84, Cry_23_Ch5
-	dbw $05, Cry_23_Ch6
-	dbw $07, Cry_23_Ch8
+Cry_Vileplume: ; f35b8
+	musicheader 3, 5, Cry_Vileplume_Ch5
+	musicheader 1, 6, Cry_Vileplume_Ch6
+	musicheader 1, 8, Cry_Vileplume_Ch8
 ; f35c1
 
-Cry_24: ; f35c1
-	dbw $84, Cry_24_Ch5
-	dbw $05, Cry_24_Ch6
-	dbw $07, Cry_24_Ch8
+Cry_Vulpix: ; f35c1
+	musicheader 3, 5, Cry_Vulpix_Ch5
+	musicheader 1, 6, Cry_Vulpix_Ch6
+	musicheader 1, 8, Cry_Vulpix_Ch8
 ; f35ca
 
-Cry_25: ; f35ca
-	dbw $84, Cry_25_Ch5
-	dbw $05, Cry_25_Ch6
-	dbw $07, Cry_25_Ch8
+Cry_Weepinbell: ; f35ca
+	musicheader 3, 5, Cry_Weepinbell_Ch5
+	musicheader 1, 6, Cry_Weepinbell_Ch6
+	musicheader 1, 8, Cry_Weepinbell_Ch8
 ; f35d3
 
 Unknown_Cry_Ch5: ; f35d3
 	unknownmusic0xde $f0
-	sound $f, $e0, $0780
-	sound $f, $f0, $0784
-	sound $f, $c3, $05e0
-	sound $f, $c4, $0600
-	sound $a, $6c, $0780
-	sound $8, $71, $0784
+	sound __, 16, $e0, $0780
+	sound __, 16, $f0, $0784
+	sound __, 16, $c3, $05e0
+	sound __, 16, $c4, $0600
+	sound __, 11, $6c, $0780
+	sound __,  9, $71, $0784
 	endchannel
 ; f35ee
 
 Unknown_Cry_Ch6: ; f35ee
 	unknownmusic0xde $5
-	sound $f, $a0, $0741
-	sound $f, $b0, $0743
-	sound $f, $93, $05b1
-	sound $f, $94, $05c1
-	sound $a, $4c, $0741
-	sound $8, $31, $0746
+	sound __, 16, $a0, $0741
+	sound __, 16, $b0, $0743
+	sound __, 16, $93, $05b1
+	sound __, 16, $94, $05c1
+	sound __, 11, $4c, $0741
+	sound __,  9, $31, $0746
 	endchannel
 ; f3609
 
 Unknown_Cry_Ch8: ; f3609
-	noise $2, $f2, $4c
-	noise $6, $e0, $3a
-	noise $f, $d0, $3a
-	noise $8, $d0, $2c
-	noise $6, $e6, $4c
-	noise $c, $7d, $4c
-	noise $f, $d3, $4c
+	noise __,  3, $f2, $4c
+	noise __,  7, $e0, $3a
+	noise __, 16, $d0, $3a
+	noise __,  9, $d0, $2c
+	noise __,  7, $e6, $4c
+	noise __, 13, $7d, $4c
+	noise __, 16, $d3, $4c
 	endchannel
 ; f361f
 
-Cry_09_Ch5: ; f361f
+Cry_Raichu_Ch5: ; f361f
 	unknownmusic0xde $f0
-	sound $f, $f7, $07a0
-	sound $6, $e6, $07a3
-	sound $a, $f4, $07a0
+	sound __, 16, $f7, $07a0
+	sound __,  7, $e6, $07a3
+	sound __, 11, $f4, $07a0
 	unknownmusic0xde $a5
-	sound $a, $f6, $07d8
-	sound $4, $e3, $07d7
-	sound $f, $f2, $07d8
+	sound __, 11, $f6, $07d8
+	sound __,  5, $e3, $07d7
+	sound __, 16, $f2, $07d8
 	endchannel
 ; f363c
 
-Cry_09_Ch6: ; f363c
+Cry_Raichu_Ch6: ; f363c
 	unknownmusic0xde $5
-	sound $2, $8, 0
-	sound $f, $a7, $06a1
-	sound $6, $86, $06a2
-	sound $a, $74, $06a1
+	sound __,  3, $8, 0
+	sound __, 16, $a7, $06a1
+	sound __,  7, $86, $06a2
+	sound __, 11, $74, $06a1
 	unknownmusic0xde $5f
-	sound $a, $76, $06d6
-	sound $4, $83, $06d9
-	sound $f, $a2, $06d7
+	sound __, 11, $76, $06d6
+	sound __,  5, $83, $06d9
+	sound __, 16, $a2, $06d7
 	endchannel
 ; f365d
 
-Cry_09_Ch8: ; f365d
-	noise $2, $f2, $3c
-	noise $8, $e4, $3e
-	noise $f, $d7, $3c
-	noise $6, $c5, $3b
-	noise $6, $e4, $3d
-	noise $8, $b6, $3c
-	noise $6, $d4, $3d
-	noise $8, $c1, $3b
+Cry_Raichu_Ch8: ; f365d
+	noise __,  3, $f2, $3c
+	noise __,  9, $e4, $3e
+	noise __, 16, $d7, $3c
+	noise __,  7, $c5, $3b
+	noise __,  7, $e4, $3d
+	noise __,  9, $b6, $3c
+	noise __,  7, $d4, $3d
+	noise __,  9, $c1, $3b
 	endchannel
 ; f3676
 
-Cry_23_Ch5: ; f3676
+Cry_Vileplume_Ch5: ; f3676
 	unknownmusic0xde $f0
-	sound $f, $f7, $07c0
-	sound $6, $e4, $07c1
-	sound $a, $f6, $07c0
-	sound $4, $d3, $07c2
-	sound $8, $c1, $07c0
+	sound __, 16, $f7, $07c0
+	sound __,  7, $e4, $07c1
+	sound __, 11, $f6, $07c0
+	sound __,  5, $d3, $07c2
+	sound __,  9, $c1, $07c0
 	endchannel
 ; f368d
 
-Cry_23_Ch6: ; f368d
+Cry_Vileplume_Ch6: ; f368d
 	unknownmusic0xde $5f
-	sound $f, $97, $0781
-	sound $6, $84, $0780
-	sound $a, $96, $0781
-	sound $f, $83, $0781
+	sound __, 16, $97, $0781
+	sound __,  7, $84, $0780
+	sound __, 11, $96, $0781
+	sound __, 16, $83, $0781
 	endchannel
 ; f36a0
 
-Cry_23_Ch8: ; f36a0
-	noise $3, $f2, $3c
-	noise $d, $e6, $2c
-	noise $f, $d7, $3c
-	noise $8, $c1, $2c
+Cry_Vileplume_Ch8: ; f36a0
+	noise __,  4, $f2, $3c
+	noise __, 14, $e6, $2c
+	noise __, 16, $d7, $3c
+	noise __,  9, $c1, $2c
 	endchannel
 ; f36ad
 
-Cry_24_Ch5: ; f36ad
+Cry_Vulpix_Ch5: ; f36ad
 	unknownmusic0xde $f0
-	sound $f, $f7, $0680
-	sound $a, $e6, $0684
-	sound $f, $d7, $0690
-	sound $8, $d5, $0690
-	sound $6, $c4, $0688
-	sound $5, $d3, $0670
-	sound $4, $d3, $0660
-	sound $8, $c1, $0640
+	sound __, 16, $f7, $0680
+	sound __, 11, $e6, $0684
+	sound __, 16, $d7, $0690
+	sound __,  9, $d5, $0690
+	sound __,  7, $c4, $0688
+	sound __,  6, $d3, $0670
+	sound __,  5, $d3, $0660
+	sound __,  9, $c1, $0640
 	endchannel
 ; f36d0
 
-Cry_24_Ch6: ; f36d0
+Cry_Vulpix_Ch6: ; f36d0
 	unknownmusic0xde $5
-	sound $f, $b7, $0641
-	sound $a, $96, $0642
-	sound $f, $a7, $0651
-	sound $8, $a5, $0651
-	sound $6, $94, $0647
-	sound $5, $a3, $0631
-	sound $4, $93, $0622
-	sound $8, $71, $0601
+	sound __, 16, $b7, $0641
+	sound __, 11, $96, $0642
+	sound __, 16, $a7, $0651
+	sound __,  9, $a5, $0651
+	sound __,  7, $94, $0647
+	sound __,  6, $a3, $0631
+	sound __,  5, $93, $0622
+	sound __,  9, $71, $0601
 	endchannel
 ; f36f3
 
-Cry_24_Ch8: ; f36f3
-	noise $f, $e4, $3c
-	noise $a, $c7, $4c
-	noise $a, $c7, $3c
-	noise $c, $b7, $4c
-	noise $f, $a2, $5c
+Cry_Vulpix_Ch8: ; f36f3
+	noise __, 16, $e4, $3c
+	noise __, 11, $c7, $4c
+	noise __, 11, $c7, $3c
+	noise __, 13, $b7, $4c
+	noise __, 16, $a2, $5c
 	endchannel
 ; f3703
 
-Cry_11_Ch5: ; f3703
+Cry_Rhydon_Ch5: ; f3703
 	unknownmusic0xde $f0
-	sound $6, $f7, $07a0
-	sound $8, $e6, $07a4
-	sound $4, $d6, $07a0
-	sound $f, $d3, $0720
-	sound $8, $c3, $0723
-	sound $2, $c2, $0728
-	sound $8, $b1, $0730
+	sound __,  7, $f7, $07a0
+	sound __,  9, $e6, $07a4
+	sound __,  5, $d6, $07a0
+	sound __, 16, $d3, $0720
+	sound __,  9, $c3, $0723
+	sound __,  3, $c2, $0728
+	sound __,  9, $b1, $0730
 	endchannel
 ; f3722
 
-Cry_11_Ch6: ; f3722
+Cry_Rhydon_Ch6: ; f3722
 	unknownmusic0xde $a
-	sound $4, $8, 0
-	sound $6, $a7, $0741
-	sound $8, $86, $0743
-	sound $4, $76, $0741
-	sound $d, $83, $06c2
-	sound $7, $73, $06c1
-	sound $3, $82, $06cc
-	sound $8, $71, $06d8
+	sound __,  5, $8, 0
+	sound __,  7, $a7, $0741
+	sound __,  9, $86, $0743
+	sound __,  5, $76, $0741
+	sound __, 14, $83, $06c2
+	sound __,  8, $73, $06c1
+	sound __,  4, $82, $06cc
+	sound __,  9, $71, $06d8
 	endchannel
 ; f3745
 
-Cry_11_Ch8: ; f3745
-	noise $2, $f2, $4c
-	noise $6, $e6, $3a
-	noise $4, $d7, $3a
-	noise $6, $d6, $2c
-	noise $8, $e5, $3c
-	noise $c, $d2, $3d
-	noise $8, $d1, $2c
+Cry_Rhydon_Ch8: ; f3745
+	noise __,  3, $f2, $4c
+	noise __,  7, $e6, $3a
+	noise __,  5, $d7, $3a
+	noise __,  7, $d6, $2c
+	noise __,  9, $e5, $3c
+	noise __, 13, $d2, $3d
+	noise __,  9, $d1, $2c
 	endchannel
 ; f375b
 
-Cry_25_Ch5: ; f375b
+Cry_Weepinbell_Ch5: ; f375b
 	unknownmusic0xde $a5
-	sound $6, $f4, $0740
-	sound $f, $e3, $0730
-	sound $4, $f4, $0740
-	sound $5, $b3, $0748
-	sound $8, $d1, $0750
+	sound __,  7, $f4, $0740
+	sound __, 16, $e3, $0730
+	sound __,  5, $f4, $0740
+	sound __,  6, $b3, $0748
+	sound __,  9, $d1, $0750
 	endchannel
 ; f3772
 
-Cry_25_Ch6: ; f3772
+Cry_Weepinbell_Ch6: ; f3772
 	unknownmusic0xde $77
-	sound $6, $c3, $0712
-	sound $f, $b3, $0704
-	sound $3, $c3, $0712
-	sound $4, $c3, $0721
-	sound $8, $b1, $0732
+	sound __,  7, $c3, $0712
+	sound __, 16, $b3, $0704
+	sound __,  4, $c3, $0712
+	sound __,  5, $c3, $0721
+	sound __,  9, $b1, $0732
 	endchannel
 ; f3789
 
-Cry_25_Ch8: ; f3789
-	noise $8, $d6, $2c
-	noise $c, $c6, $3c
-	noise $a, $b6, $2c
-	noise $8, $91, $1c
+Cry_Weepinbell_Ch8: ; f3789
+	noise __,  9, $d6, $2c
+	noise __, 13, $c6, $3c
+	noise __, 11, $b6, $2c
+	noise __,  9, $91, $1c
 	endchannel
 ; f3796
 
-Cry_03_Ch5: ; f3796
+Cry_Kangaskhan_Ch5: ; f3796
 	unknownmusic0xde $f0
-	sound $4, $f7, $0608
-	sound $6, $e6, $0600
-	sound $6, $d7, $05f0
-	sound $6, $c4, $05e0
-	sound $5, $d3, $05c0
-	sound $4, $d3, $05a0
-	sound $8, $e1, $0580
+	sound __,  5, $f7, $0608
+	sound __,  7, $e6, $0600
+	sound __,  7, $d7, $05f0
+	sound __,  7, $c4, $05e0
+	sound __,  6, $d3, $05c0
+	sound __,  5, $d3, $05a0
+	sound __,  9, $e1, $0580
 	endchannel
 ; f37b5
 
-Cry_03_Ch6: ; f37b5
+Cry_Kangaskhan_Ch6: ; f37b5
 	unknownmusic0xde $a
-	sound $4, $c7, $0504
-	sound $6, $a6, $0502
-	sound $6, $97, $04f1
-	sound $4, $b4, $04e1
-	sound $5, $a3, $04c2
-	sound $4, $b3, $04a3
-	sound $8, $c1, $0482
+	sound __,  5, $c7, $0504
+	sound __,  7, $a6, $0502
+	sound __,  7, $97, $04f1
+	sound __,  5, $b4, $04e1
+	sound __,  6, $a3, $04c2
+	sound __,  5, $b3, $04a3
+	sound __,  9, $c1, $0482
 	endchannel
 ; f37d4
 
-Cry_03_Ch8: ; f37d4
-	noise $c, $e4, $4c
-	noise $a, $c7, $5c
-	noise $c, $b6, $4c
-	noise $f, $a2, $5c
+Cry_Kangaskhan_Ch8: ; f37d4
+	noise __, 13, $e4, $4c
+	noise __, 11, $c7, $5c
+	noise __, 13, $b6, $4c
+	noise __, 16, $a2, $5c
 	endchannel
 ; f37e1
 
-Cry_0F_Ch5: ; f37e1
+Cry_Bulbasaur_Ch5: ; f37e1
 	unknownmusic0xde $f1
-	sound $4, $f7, $07c0
-	sound $c, $e6, $07c2
-	sound $6, $b5, $0680
-	sound $4, $c4, $0670
-	sound $4, $b5, $0660
-	sound $8, $c1, $0640
+	sound __,  5, $f7, $07c0
+	sound __, 13, $e6, $07c2
+	sound __,  7, $b5, $0680
+	sound __,  5, $c4, $0670
+	sound __,  5, $b5, $0660
+	sound __,  9, $c1, $0640
 	endchannel
 ; f37fc
 
-Cry_0F_Ch6: ; f37fc
+Cry_Bulbasaur_Ch6: ; f37fc
 	unknownmusic0xde $cc
-	sound $3, $c7, $0781
-	sound $c, $b6, $0780
-	sound $6, $a5, $0641
-	sound $4, $c4, $0632
-	sound $6, $b5, $0621
-	sound $8, $a1, $0602
+	sound __,  4, $c7, $0781
+	sound __, 13, $b6, $0780
+	sound __,  7, $a5, $0641
+	sound __,  5, $c4, $0632
+	sound __,  7, $b5, $0621
+	sound __,  9, $a1, $0602
 	endchannel
 ; f3817
 
-Cry_0F_Ch8: ; f3817
-	noise $3, $e4, $3c
-	noise $c, $d6, $2c
-	noise $4, $e4, $3c
-	noise $8, $b7, $5c
-	noise $f, $c2, $5d
+Cry_Bulbasaur_Ch8: ; f3817
+	noise __,  4, $e4, $3c
+	noise __, 13, $d6, $2c
+	noise __,  5, $e4, $3c
+	noise __,  9, $b7, $5c
+	noise __, 16, $c2, $5d
 	endchannel
 ; f3827
 
-Cry_10_Ch5: ; f3827
+Cry_Spearow_Ch5: ; f3827
 	unknownmusic0xde $c9
-	sound $8, $f7, $0680
-	sound $2, $f7, $0660
-	sound $1, $e7, $0640
-	sound $1, $e7, $0620
-	sound $f, $d1, $0600
-	sound $4, $c7, $0740
-	sound $4, $a7, $0730
-	sound $f, $91, $0720
+	sound __,  9, $f7, $0680
+	sound __,  3, $f7, $0660
+	sound __,  2, $e7, $0640
+	sound __,  2, $e7, $0620
+	sound __, 16, $d1, $0600
+	sound __,  5, $c7, $0740
+	sound __,  5, $a7, $0730
+	sound __, 16, $91, $0720
 	endchannel
 ; f384a
 
-Cry_10_Ch6: ; f384a
+Cry_Spearow_Ch6: ; f384a
 	unknownmusic0xde $79
-	sound $a, $e7, $0682
-	sound $2, $e7, $0662
-	sound $1, $d7, $0642
-	sound $1, $d7, $0622
-	sound $f, $c1, $0602
-	sound $4, $b7, $0742
-	sound $2, $97, $0732
-	sound $f, $81, $0722
+	sound __, 11, $e7, $0682
+	sound __,  3, $e7, $0662
+	sound __,  2, $d7, $0642
+	sound __,  2, $d7, $0622
+	sound __, 16, $c1, $0602
+	sound __,  5, $b7, $0742
+	sound __,  3, $97, $0732
+	sound __, 16, $81, $0722
 	endchannel
 ; f386d
 
-Cry_10_Ch8: ; f386d
-	noise $4, $74, $21
-	noise $4, $74, $10
-	noise $4, $71, $20
+Cry_Spearow_Ch8: ; f386d
+	noise __,  5, $74, $21
+	noise __,  5, $74, $10
+	noise __,  5, $71, $20
 	endchannel
 ; f3877
 
-Cry_00_Ch5: ; f3877
+Cry_Nidoran_M_Ch5: ; f3877
 	unknownmusic0xde $f5
-	sound $4, $f3, $0718
-	sound $f, $e5, $0798
-	sound $8, $91, $0758
+	sound __,  5, $f3, $0718
+	sound __, 16, $e5, $0798
+	sound __,  9, $91, $0758
 	endchannel
 ; f3886
 
-Cry_00_Ch6: ; f3886
+Cry_Nidoran_M_Ch6: ; f3886
 	unknownmusic0xde $a0
-	sound $5, $b3, $0708
-	sound $f, $c5, $0788
-	sound $8, $71, $0748
+	sound __,  6, $b3, $0708
+	sound __, 16, $c5, $0788
+	sound __,  9, $71, $0748
 	endchannel
 ; f3895
 
-Cry_00_Ch8: ; f3895
-	noise $3, $a1, $1c
-	noise $e, $94, $2c
-	noise $8, $81, $1c
+Cry_Nidoran_M_Ch8: ; f3895
+	noise __,  4, $a1, $1c
+	noise __, 15, $94, $2c
+	noise __,  9, $81, $1c
 	endchannel
 ; f389f
 
-Cry_0E_Ch5: ; f389f
+Cry_Pidgey_Ch5: ; f389f
 	unknownmusic0xde $a5
-	sound $4, $e1, $0700
-	sound $4, $f2, $0780
-	sound $2, $92, $0740
-	sound $8, $e1, $0600
+	sound __,  5, $e1, $0700
+	sound __,  5, $f2, $0780
+	sound __,  3, $92, $0740
+	sound __,  9, $e1, $0600
 	endchannel
 ; f38b2
 
-Cry_0E_Ch6: ; f38b2
+Cry_Pidgey_Ch6: ; f38b2
 	unknownmusic0xde $a
-	sound $4, $b1, $06e1
-	sound $3, $c2, $06e1
-	sound $3, $62, $0681
-	sound $8, $b1, $05e1
+	sound __,  5, $b1, $06e1
+	sound __,  4, $c2, $06e1
+	sound __,  4, $62, $0681
+	sound __,  9, $b1, $05e1
 	endchannel
 ; f38c5
 
-Cry_0E_Ch8: ; f38c5
-	noise $2, $61, $32
-	noise $2, $61, $21
-	noise $8, $61, $11
+Cry_Pidgey_Ch8: ; f38c5
+	noise __,  3, $61, $32
+	noise __,  3, $61, $21
+	noise __,  9, $61, $11
 	endchannel
 ; f38cf
 
-Cry_06_Ch5: ; f38cf
+Cry_Voltorb_Ch5: ; f38cf
 	unknownmusic0xde $fa
-	sound $6, $83, $0247
-	sound $f, $62, $0226
-	sound $4, $52, $0245
-	sound $9, $63, $0206
-	sound $f, $82, $0225
-	sound $f, $42, $0207
-Cry_06_Ch6: ; f38e9
+	sound __,  7, $83, $0247
+	sound __, 16, $62, $0226
+	sound __,  5, $52, $0245
+	sound __, 10, $63, $0206
+	sound __, 16, $82, $0225
+	sound __, 16, $42, $0207
+Cry_Voltorb_Ch6: ; f38e9
 	endchannel
 ; f38ea
 
-Cry_06_Ch8: ; f38ea
-	noise $8, $d4, $8c
-	noise $4, $e2, $9c
-	noise $f, $c6, $8c
-	noise $8, $e4, $ac
-	noise $f, $d7, $9c
-	noise $f, $f2, $ac
+Cry_Voltorb_Ch8: ; f38ea
+	noise __,  9, $d4, $8c
+	noise __,  5, $e2, $9c
+	noise __, 16, $c6, $8c
+	noise __,  9, $e4, $ac
+	noise __, 16, $d7, $9c
+	noise __, 16, $f2, $ac
 	endchannel
 ; f38fd
 
-Cry_07_Ch5: ; f38fd
+Cry_Muk_Ch5: ; f38fd
 	unknownmusic0xde $f0
-	sound $4, $f3, $06e0
-	sound $f, $e4, $0640
-	sound $8, $c1, $0620
+	sound __,  5, $f3, $06e0
+	sound __, 16, $e4, $0640
+	sound __,  9, $c1, $0620
 	endchannel
 ; f390c
 
-Cry_07_Ch6: ; f390c
+Cry_Muk_Ch6: ; f390c
 	unknownmusic0xde $a
-	sound $3, $c3, $0683
-	sound $e, $b4, $0602
-	sound $8, $a1, $0601
+	sound __,  4, $c3, $0683
+	sound __, 15, $b4, $0602
+	sound __,  9, $a1, $0601
 	endchannel
 ; f391b
 
-Cry_07_Ch8: ; f391b
-	noise $4, $d3, $5c
-	noise $f, $e6, $4c
-	noise $8, $b1, $5c
+Cry_Muk_Ch8: ; f391b
+	noise __,  5, $d3, $5c
+	noise __, 16, $e6, $4c
+	noise __,  9, $b1, $5c
 	endchannel
 ; f3925
 
-Cry_05_Ch5: ; f3925
+Cry_Grimer_Ch5: ; f3925
 	unknownmusic0xde $a
-	sound $6, $e2, $0500
-	sound $6, $e3, $0580
-	sound $6, $d3, $0570
-	sound $8, $a1, $0560
+	sound __,  7, $e2, $0500
+	sound __,  7, $e3, $0580
+	sound __,  7, $d3, $0570
+	sound __,  9, $a1, $0560
 	endchannel
 ; f3938
 
-Cry_05_Ch6: ; f3938
+Cry_Grimer_Ch6: ; f3938
 	unknownmusic0xde $f5
-	sound $6, $e2, $0482
-	sound $6, $d3, $0501
-	sound $6, $b2, $04e2
-	sound $8, $81, $04c1
-Cry_05_Ch8: ; f394a
+	sound __,  7, $e2, $0482
+	sound __,  7, $d3, $0501
+	sound __,  7, $b2, $04e2
+	sound __,  9, $81, $04c1
+Cry_Grimer_Ch8: ; f394a
 	endchannel
 ; f394b
 
-Cry_0B_Ch5: ; f394b
+Cry_Diglett_Ch5: ; f394b
 	unknownmusic0xde $cc
-	sound $4, $f1, $0700
-	sound $4, $e1, $0780
-	sound $4, $d1, $0740
-	sound $4, $e1, $0740
-	sound $4, $f1, $0780
-	sound $4, $d1, $0700
-	sound $4, $f1, $0701
-	sound $4, $d1, $0782
-	sound $4, $c1, $0742
-	sound $8, $b1, $0741
+	sound __,  5, $f1, $0700
+	sound __,  5, $e1, $0780
+	sound __,  5, $d1, $0740
+	sound __,  5, $e1, $0740
+	sound __,  5, $f1, $0780
+	sound __,  5, $d1, $0700
+	sound __,  5, $f1, $0701
+	sound __,  5, $d1, $0782
+	sound __,  5, $c1, $0742
+	sound __,  9, $b1, $0741
 	endchannel
 ; f3976
 
-Cry_0B_Ch6: ; f3976
+Cry_Diglett_Ch6: ; f3976
 	unknownmusic0xde $44
-	sound $c, $8, 0
-	sound $4, $f1, $0701
-	sound $4, $e1, $0782
-	sound $4, $d1, $0741
-	sound $4, $e1, $0741
-	sound $4, $f1, $0782
-	sound $8, $d1, $0701
+	sound __, 13, $8, 0
+	sound __,  5, $f1, $0701
+	sound __,  5, $e1, $0782
+	sound __,  5, $d1, $0741
+	sound __,  5, $e1, $0741
+	sound __,  5, $f1, $0782
+	sound __,  9, $d1, $0701
 	endchannel
 ; f3995
 
-Cry_0B_Ch8: ; f3995
-	noise $f, $8, $0
-	noise $4, $8, $0
-	noise $4, $d1, $4c
-	noise $4, $b1, $2c
-	noise $4, $d1, $3c
-	noise $4, $b1, $3c
-	noise $4, $c1, $2c
-	noise $8, $a1, $4c
+Cry_Diglett_Ch8: ; f3995
+	noise __, 16, $8, $0
+	noise __,  5, $8, $0
+	noise __,  5, $d1, $4c
+	noise __,  5, $b1, $2c
+	noise __,  5, $d1, $3c
+	noise __,  5, $b1, $3c
+	noise __,  5, $c1, $2c
+	noise __,  9, $a1, $4c
 	endchannel
 ; f39ae
 
-Cry_0C_Ch5: ; f39ae
+Cry_Seel_Ch5: ; f39ae
 	unknownmusic0xde $cc
-	sound $8, $f5, $0600
-	sound $2, $d2, $0638
-	sound $2, $c2, $0630
-	sound $2, $c2, $0628
-	sound $2, $b2, $0620
-	sound $2, $b2, $0610
-	sound $2, $a2, $0618
-	sound $2, $b2, $0610
-	sound $8, $c1, $0620
+	sound __,  9, $f5, $0600
+	sound __,  3, $d2, $0638
+	sound __,  3, $c2, $0630
+	sound __,  3, $c2, $0628
+	sound __,  3, $b2, $0620
+	sound __,  3, $b2, $0610
+	sound __,  3, $a2, $0618
+	sound __,  3, $b2, $0610
+	sound __,  9, $c1, $0620
 	endchannel
 ; f39d5
 
-Cry_0C_Ch6: ; f39d5
+Cry_Seel_Ch6: ; f39d5
 	unknownmusic0xde $44
-	sound $c, $c3, $05c0
-	sound $3, $b1, $05f9
-	sound $2, $a1, $05f1
-	sound $2, $a1, $05e9
-	sound $2, $91, $05e1
-	sound $2, $91, $05d9
-	sound $2, $81, $05d1
-	sound $2, $91, $05d9
-	sound $8, $91, $05e1
-Cry_0C_Ch8: ; f39fb
+	sound __, 13, $c3, $05c0
+	sound __,  4, $b1, $05f9
+	sound __,  3, $a1, $05f1
+	sound __,  3, $a1, $05e9
+	sound __,  3, $91, $05e1
+	sound __,  3, $91, $05d9
+	sound __,  3, $81, $05d1
+	sound __,  3, $91, $05d9
+	sound __,  9, $91, $05e1
+Cry_Seel_Ch8: ; f39fb
 	endchannel
 ; f39fc
 
-Cry_02_Ch5: ; f39fc
+Cry_Slowpoke_Ch5: ; f39fc
 	unknownmusic0xde $0
-	sound $8, $f5, $0480
-	sound $2, $e1, $05e0
-	sound $8, $d1, $05dc
+	sound __,  9, $f5, $0480
+	sound __,  3, $e1, $05e0
+	sound __,  9, $d1, $05dc
 	endchannel
 ; f3a0b
 
-Cry_02_Ch6: ; f3a0b
+Cry_Slowpoke_Ch6: ; f3a0b
 	unknownmusic0xde $a5
-	sound $7, $95, $0441
-	sound $2, $81, $0521
-	sound $8, $61, $051a
-Cry_02_Ch8: ; f3a19
+	sound __,  8, $95, $0441
+	sound __,  3, $81, $0521
+	sound __,  9, $61, $051a
+Cry_Slowpoke_Ch8: ; f3a19
 	endchannel
 ; f3a1a
 
-Cry_0D_Ch5: ; f3a1a
-Cry_0D_branch_f3a1a: ; f3a1a
+Cry_Drowzee_Ch5: ; f3a1a
+Cry_Drowzee_branch_f3a1a: ; f3a1a
 	unknownmusic0xde $88
-	sound $5, $f2, $0650
-	sound $9, $d1, $0660
-	sound $5, $e2, $0612
-	sound $9, $c1, $0622
-	sound $5, $f2, $0610
-	sound $6, $d1, $0620
-	loopchannel 2, Cry_0D_branch_f3a1a
+	sound __,  6, $f2, $0650
+	sound __, 10, $d1, $0660
+	sound __,  6, $e2, $0612
+	sound __, 10, $c1, $0622
+	sound __,  6, $f2, $0610
+	sound __,  7, $d1, $0620
+	loopchannel 2, Cry_Drowzee_branch_f3a1a
 	endchannel
 ; f3a39
 
-Cry_0D_Ch6: ; f3a39
+Cry_Drowzee_Ch6: ; f3a39
 	unknownmusic0xde $40
-	sound $4, $8, 0
-	sound $5, $f2, $0651
-	sound $9, $d1, $0661
-	sound $5, $e2, $0614
-	sound $8, $c1, $0624
-	sound $5, $f2, $0611
-	sound $c, $d1, $0621
-	sound $5, $e2, $0614
-	sound $8, $c1, $0624
-	sound $5, $f2, $0611
-	sound $4, $d1, $0621
+	sound __,  5, $8, 0
+	sound __,  6, $f2, $0651
+	sound __, 10, $d1, $0661
+	sound __,  6, $e2, $0614
+	sound __,  9, $c1, $0624
+	sound __,  6, $f2, $0611
+	sound __, 13, $d1, $0621
+	sound __,  6, $e2, $0614
+	sound __,  9, $c1, $0624
+	sound __,  6, $f2, $0611
+	sound __,  5, $d1, $0621
 	endchannel
 ; f3a68
 
-Cry_0D_Ch8: ; f3a68
-	noise $6, $d2, $1c
-	noise $9, $b1, $2c
-	noise $8, $c2, $2c
-	noise $9, $b1, $3c
-	noise $6, $c2, $2c
-	noise $9, $a2, $3c
-	noise $7, $c2, $2c
-	noise $5, $a1, $3c
-	noise $9, $c2, $2c
-	noise $4, $a1, $3c
+Cry_Drowzee_Ch8: ; f3a68
+	noise __,  7, $d2, $1c
+	noise __, 10, $b1, $2c
+	noise __,  9, $c2, $2c
+	noise __, 10, $b1, $3c
+	noise __,  7, $c2, $2c
+	noise __, 10, $a2, $3c
+	noise __,  8, $c2, $2c
+	noise __,  6, $a1, $3c
+	noise __, 10, $c2, $2c
+	noise __,  5, $a1, $3c
 	endchannel
 ; f3a87
 
-Cry_01_Ch5: ; f3a87
+Cry_Nidoran_F_Ch5: ; f3a87
 	unknownmusic0xde $a0
-	sound $4, $f3, $0600
-	sound $8, $d5, $0760
-	sound $3, $e2, $0720
-	sound $8, $d1, $0710
+	sound __,  5, $f3, $0600
+	sound __,  9, $d5, $0760
+	sound __,  4, $e2, $0720
+	sound __,  9, $d1, $0710
 	endchannel
 ; f3a9a
 
-Cry_01_Ch6: ; f3a9a
+Cry_Nidoran_F_Ch6: ; f3a9a
 	unknownmusic0xde $5a
-	sound $5, $b3, $06f1
-	sound $7, $c5, $0752
-	sound $3, $a2, $0711
-	sound $8, $b1, $0601
+	sound __,  6, $b3, $06f1
+	sound __,  8, $c5, $0752
+	sound __,  4, $a2, $0711
+	sound __,  9, $b1, $0601
 	endchannel
 ; f3aad
 
-Cry_01_Ch8: ; f3aad
-	noise $3, $a2, $3c
-	noise $c, $94, $2c
-	noise $3, $82, $1c
-	noise $8, $71, $2c
+Cry_Nidoran_F_Ch8: ; f3aad
+	noise __,  4, $a2, $3c
+	noise __, 13, $94, $2c
+	noise __,  4, $82, $1c
+	noise __,  9, $71, $2c
 	endchannel
 ; f3aba
 
-Cry_0A_Ch5: ; f3aba
+Cry_Nidoqueen_Ch5: ; f3aba
 	unknownmusic0xde $f0
-	sound $8, $f7, $06e0
-	sound $6, $e6, $06e5
-	sound $3, $f4, $06e0
-	sound $3, $f6, $06d0
-	sound $3, $e3, $06c0
-	sound $4, $f2, $06b0
-	sound $f, $a2, $06c8
+	sound __,  9, $f7, $06e0
+	sound __,  7, $e6, $06e5
+	sound __,  4, $f4, $06e0
+	sound __,  4, $f6, $06d0
+	sound __,  4, $e3, $06c0
+	sound __,  5, $f2, $06b0
+	sound __, 16, $a2, $06c8
 	endchannel
 ; f3ad9
 
-Cry_0A_Ch6: ; f3ad9
+Cry_Nidoqueen_Ch6: ; f3ad9
 	unknownmusic0xde $5
-	sound $3, $8, 0
-	sound $8, $a7, $06a1
-	sound $6, $86, $06a3
-	sound $3, $74, $06a1
-	sound $3, $76, $0691
-	sound $3, $83, $0682
-	sound $4, $a2, $0671
-	sound $f, $72, $0689
+	sound __,  4, $8, 0
+	sound __,  9, $a7, $06a1
+	sound __,  7, $86, $06a3
+	sound __,  4, $74, $06a1
+	sound __,  4, $76, $0691
+	sound __,  4, $83, $0682
+	sound __,  5, $a2, $0671
+	sound __, 16, $72, $0689
 	endchannel
 ; f3afc
 
-Cry_0A_Ch8: ; f3afc
-	noise $2, $f2, $3c
-	noise $8, $e4, $3e
-	noise $8, $d7, $3c
-	noise $5, $c5, $3b
-	noise $3, $d4, $2c
-	noise $2, $b6, $3c
-	noise $3, $a4, $2c
-	noise $8, $91, $3c
+Cry_Nidoqueen_Ch8: ; f3afc
+	noise __,  3, $f2, $3c
+	noise __,  9, $e4, $3e
+	noise __,  9, $d7, $3c
+	noise __,  6, $c5, $3b
+	noise __,  4, $d4, $2c
+	noise __,  3, $b6, $3c
+	noise __,  4, $a4, $2c
+	noise __,  9, $91, $3c
 	endchannel
 ; f3b15
 
-Cry_08_Ch5: ; f3b15
+Cry_Oddish_Ch5: ; f3b15
 	unknownmusic0xde $f0
-	sound $f, $f6, $0565
-	sound $a, $e4, $057c
-	sound $3, $c2, $055c
-	sound $f, $b2, $053c
+	sound __, 16, $f6, $0565
+	sound __, 11, $e4, $057c
+	sound __,  4, $c2, $055c
+	sound __, 16, $b2, $053c
 	endchannel
 ; f3b28
 
-Cry_08_Ch6: ; f3b28
+Cry_Oddish_Ch6: ; f3b28
 	unknownmusic0xde $5a
-	sound $e, $d6, $0503
-	sound $9, $b4, $051b
-	sound $4, $92, $04fa
-	sound $f, $a2, $04db
+	sound __, 15, $d6, $0503
+	sound __, 10, $b4, $051b
+	sound __,  5, $92, $04fa
+	sound __, 16, $a2, $04db
 	endchannel
 ; f3b3b
 
-Cry_08_Ch8: ; f3b3b
-	noise $c, $e6, $4c
-	noise $b, $d7, $5c
-	noise $f, $c2, $4c
+Cry_Oddish_Ch8: ; f3b3b
+	noise __, 13, $e6, $4c
+	noise __, 12, $d7, $5c
+	noise __, 16, $c2, $4c
 	endchannel
 ; f3b45
 
-Cry_04_Ch5: ; f3b45
+Cry_Charmander_Ch5: ; f3b45
 	unknownmusic0xde $f0
-	sound $4, $f7, $06a0
-	sound $8, $e6, $06a4
-	sound $4, $d6, $06a0
-	sound $c, $d3, $0620
-	sound $8, $c3, $0624
-	sound $4, $c2, $0620
-	sound $8, $b1, $0610
+	sound __,  5, $f7, $06a0
+	sound __,  9, $e6, $06a4
+	sound __,  5, $d6, $06a0
+	sound __, 13, $d3, $0620
+	sound __,  9, $c3, $0624
+	sound __,  5, $c2, $0620
+	sound __,  9, $b1, $0610
 	endchannel
 ; f3b64
 
-Cry_04_Ch6: ; f3b64
+Cry_Charmander_Ch6: ; f3b64
 	unknownmusic0xde $5a
-	sound $4, $e7, $0601
-	sound $8, $d6, $0603
-	sound $4, $c6, $0601
-	sound $c, $c3, $0581
-	sound $8, $b3, $0583
-	sound $4, $b2, $0582
-	sound $8, $a1, $0571
+	sound __,  5, $e7, $0601
+	sound __,  9, $d6, $0603
+	sound __,  5, $c6, $0601
+	sound __, 13, $c3, $0581
+	sound __,  9, $b3, $0583
+	sound __,  5, $b2, $0582
+	sound __,  9, $a1, $0571
 	endchannel
 ; f3b83
 
-Cry_04_Ch8: ; f3b83
-	noise $7, $d6, $5c
-	noise $8, $e6, $4c
-	noise $4, $d4, $5c
-	noise $4, $d4, $4c
-	noise $7, $c3, $4c
-	noise $8, $a1, $5c
+Cry_Charmander_Ch8: ; f3b83
+	noise __,  8, $d6, $5c
+	noise __,  9, $e6, $4c
+	noise __,  5, $d4, $5c
+	noise __,  5, $d4, $4c
+	noise __,  8, $c3, $4c
+	noise __,  9, $a1, $5c
 	endchannel
 ; f3b96
 
-Cry_19_Ch5: ; f3b96
+Cry_Clefairy_Ch5: ; f3b96
 	unknownmusic0xde $1b
-	sound $7, $d2, $0740
-	sound $f, $e5, $0760
-	sound $18, $c1, $0730
+	sound __,  8, $d2, $0740
+	sound __, 16, $e5, $0760
+	sound C_,  9, $c1, $0730
 	endchannel
 ; f3ba5
 
-Cry_19_Ch6: ; f3ba5
+Cry_Clefairy_Ch6: ; f3ba5
 	unknownmusic0xde $81
-	sound $2, $c2, $0701
-	sound $4, $c2, $0708
-	sound $f, $d7, $0741
-	sound $18, $a2, $0701
-Cry_19_Ch8: ; f3bb7
+	sound __,  3, $c2, $0701
+	sound __,  5, $c2, $0708
+	sound __, 16, $d7, $0741
+	sound C_,  9, $a2, $0701
+Cry_Clefairy_Ch8: ; f3bb7
 	endchannel
 ; f3bb8
 
-Cry_16_Ch5: ; f3bb8
+Cry_Caterpie_Ch5: ; f3bb8
 	unknownmusic0xde $f0
-	sound $f, $d7, $0780
-	sound $4, $e6, $07a0
-	sound $f, $d2, $0740
+	sound __, 16, $d7, $0780
+	sound __,  5, $e6, $07a0
+	sound __, 16, $d2, $0740
 	endchannel
 ; f3bc7
 
-Cry_16_Ch6: ; f3bc7
+Cry_Caterpie_Ch6: ; f3bc7
 	unknownmusic0xde $5a
-	sound $f, $c7, $0753
-	sound $5, $b6, $0772
-	sound $f, $c2, $0711
+	sound __, 16, $c7, $0753
+	sound __,  6, $b6, $0772
+	sound __, 16, $c2, $0711
 	endchannel
 ; f3bd6
 
-Cry_16_Ch8: ; f3bd6
-	noise $d, $f6, $4c
-	noise $4, $e6, $3c
-	noise $f, $f2, $4c
+Cry_Caterpie_Ch8: ; f3bd6
+	noise __, 14, $f6, $4c
+	noise __,  5, $e6, $3c
+	noise __, 16, $f2, $4c
 	endchannel
 ; f3be0
 
-Cry_1B_Ch5: ; f3be0
+Cry_Lapras_Ch5: ; f3be0
 	unknownmusic0xde $f0
-	sound $6, $f7, $06c0
-	sound $f, $e7, $0700
-	sound $4, $f4, $06f0
-	sound $4, $e4, $06e0
-	sound $8, $d1, $06d0
+	sound __,  7, $f7, $06c0
+	sound __, 16, $e7, $0700
+	sound __,  5, $f4, $06f0
+	sound __,  5, $e4, $06e0
+	sound __,  9, $d1, $06d0
 	endchannel
 ; f3bf7
 
-Cry_1B_Ch6: ; f3bf7
+Cry_Lapras_Ch6: ; f3bf7
 	unknownmusic0xde $a
-	sound $7, $e6, $0681
-	sound $e, $d5, $06c1
-	sound $4, $c4, $06b1
-	sound $4, $d4, $06a1
-	sound $8, $c1, $0691
+	sound __,  8, $e6, $0681
+	sound __, 15, $d5, $06c1
+	sound __,  5, $c4, $06b1
+	sound __,  5, $d4, $06a1
+	sound __,  9, $c1, $0691
 	endchannel
 ; f3c0e
 
-Cry_1B_Ch8: ; f3c0e
-	noise $a, $a6, $3c
-	noise $e, $94, $2c
-	noise $5, $a3, $3c
-	noise $8, $91, $2c
+Cry_Lapras_Ch8: ; f3c0e
+	noise __, 11, $a6, $3c
+	noise __, 15, $94, $2c
+	noise __,  6, $a3, $3c
+	noise __,  9, $91, $2c
 	endchannel
 ; f3c1b
 
-Cry_12_Ch5: ; f3c1b
+Cry_Golem_Ch5: ; f3c1b
 	unknownmusic0xde $a5
-	sound $c, $f2, $0440
-	sound $f, $e3, $04a0
-	sound $4, $d2, $0490
-	sound $8, $d1, $0480
+	sound __, 13, $f2, $0440
+	sound __, 16, $e3, $04a0
+	sound __,  5, $d2, $0490
+	sound __,  9, $d1, $0480
 	endchannel
 ; f3c2e
 
-Cry_12_Ch6: ; f3c2e
+Cry_Golem_Ch6: ; f3c2e
 	unknownmusic0xde $ee
-	sound $b, $d2, $0438
-	sound $e, $c6, $0498
-	sound $3, $b2, $0488
-	sound $8, $b1, $0478
+	sound __, 12, $d2, $0438
+	sound __, 15, $c6, $0498
+	sound __,  4, $b2, $0488
+	sound __,  9, $b1, $0478
 	endchannel
 ; f3c41
 
-Cry_12_Ch8: ; f3c41
-	noise $a, $e6, $6c
-	noise $f, $d2, $5c
-	noise $3, $c2, $6c
-	noise $8, $d1, $5c
+Cry_Golem_Ch8: ; f3c41
+	noise __, 11, $e6, $6c
+	noise __, 16, $d2, $5c
+	noise __,  4, $c2, $6c
+	noise __,  9, $d1, $5c
 	endchannel
 ; f3c4e
 
-Cry_13_Ch5: ; f3c4e
+Cry_Blastoise_Ch5: ; f3c4e
 	unknownmusic0xde $33
-	sound $f, $f6, $05c0
-	sound $8, $e3, $05bc
-	sound $6, $d2, $05d0
-	sound $6, $b2, $05e0
-	sound $6, $c2, $05f0
-	sound $8, $b1, $0600
+	sound __, 16, $f6, $05c0
+	sound __,  9, $e3, $05bc
+	sound __,  7, $d2, $05d0
+	sound __,  7, $b2, $05e0
+	sound __,  7, $c2, $05f0
+	sound __,  9, $b1, $0600
 	endchannel
 ; f3c69
 
-Cry_13_Ch6: ; f3c69
+Cry_Blastoise_Ch6: ; f3c69
 	unknownmusic0xde $99
-	sound $e, $c6, $04b1
-	sound $7, $c3, $04ad
-	sound $5, $b2, $04c1
-	sound $8, $92, $04d1
-	sound $6, $a2, $04e1
-	sound $8, $91, $04f1
+	sound __, 15, $c6, $04b1
+	sound __,  8, $c3, $04ad
+	sound __,  6, $b2, $04c1
+	sound __,  9, $92, $04d1
+	sound __,  7, $a2, $04e1
+	sound __,  9, $91, $04f1
 	endchannel
 ; f3c84
 
-Cry_13_Ch8: ; f3c84
-	noise $a, $e6, $5c
-	noise $a, $d6, $6c
-	noise $4, $c2, $4c
-	noise $6, $d3, $5c
-	noise $8, $b3, $4c
-	noise $8, $a1, $5c
+Cry_Blastoise_Ch8: ; f3c84
+	noise __, 11, $e6, $5c
+	noise __, 11, $d6, $6c
+	noise __,  5, $c2, $4c
+	noise __,  7, $d3, $5c
+	noise __,  9, $b3, $4c
+	noise __,  9, $a1, $5c
 	endchannel
 ; f3c97
 
-Cry_14_Ch5: ; f3c97
+Cry_Pidgeotto_Ch5: ; f3c97
 	unknownmusic0xde $f0
-	sound $8, $e4, $0790
-	sound $f, $f5, $07c0
-	sound $8, $d1, $07d8
+	sound __,  9, $e4, $0790
+	sound __, 16, $f5, $07c0
+	sound __,  9, $d1, $07d8
 	endchannel
 ; f3ca6
 
-Cry_14_Ch6: ; f3ca6
+Cry_Pidgeotto_Ch6: ; f3ca6
 	unknownmusic0xde $a5
-	sound $a, $c4, $0771
-	sound $f, $b6, $07a2
-	sound $8, $a1, $07b7
+	sound __, 11, $c4, $0771
+	sound __, 16, $b6, $07a2
+	sound __,  9, $a1, $07b7
 	endchannel
 ; f3cb5
 
-Cry_14_Ch8: ; f3cb5
-	noise $8, $e4, $4c
-	noise $e, $c4, $3c
-	noise $8, $d1, $2c
+Cry_Pidgeotto_Ch8: ; f3cb5
+	noise __,  9, $e4, $4c
+	noise __, 15, $c4, $3c
+	noise __,  9, $d1, $2c
 	endchannel
 ; f3cbf
 
-Cry_1E_Ch5: ; f3cbf
+Cry_Paras_Ch5: ; f3cbf
 	unknownmusic0xde $f0
-	sound $6, $f2, $0600
-	sound $6, $e2, $0640
-	sound $6, $d2, $0680
-	sound $6, $e2, $06c0
-	sound $6, $d2, $0700
-	sound $6, $c2, $0740
-	sound $6, $b2, $0780
-	sound $8, $a1, $07c0
+	sound __,  7, $f2, $0600
+	sound __,  7, $e2, $0640
+	sound __,  7, $d2, $0680
+	sound __,  7, $e2, $06c0
+	sound __,  7, $d2, $0700
+	sound __,  7, $c2, $0740
+	sound __,  7, $b2, $0780
+	sound __,  9, $a1, $07c0
 	endchannel
 ; f3ce2
 
-Cry_1E_Ch6: ; f3ce2
+Cry_Paras_Ch6: ; f3ce2
 	unknownmusic0xde $11
-	sound $3, $8, $0001
-	sound $6, $c2, $05c1
-	sound $6, $b2, $0602
-	sound $6, $a2, $0641
-	sound $6, $b2, $0682
-	sound $6, $a2, $06c2
-	sound $6, $92, $0701
-	sound $6, $a2, $0742
-	sound $8, $81, $0781
+	sound __,  4, $8, $0001
+	sound __,  7, $c2, $05c1
+	sound __,  7, $b2, $0602
+	sound __,  7, $a2, $0641
+	sound __,  7, $b2, $0682
+	sound __,  7, $a2, $06c2
+	sound __,  7, $92, $0701
+	sound __,  7, $a2, $0742
+	sound __,  9, $81, $0781
 	endchannel
 ; f3d09
 
-Cry_1E_Ch8: ; f3d09
-	noise $6, $8, $1
-	noise $5, $e2, $5c
-	noise $5, $c2, $4c
-	noise $5, $d2, $3c
-	noise $5, $b2, $2c
-	noise $5, $c2, $1c
-	noise $5, $a2, $1b
-	noise $5, $92, $1a
-	noise $8, $81, $18
+Cry_Paras_Ch8: ; f3d09
+	noise __,  7, $8, $1
+	noise __,  6, $e2, $5c
+	noise __,  6, $c2, $4c
+	noise __,  6, $d2, $3c
+	noise __,  6, $b2, $2c
+	noise __,  6, $c2, $1c
+	noise __,  6, $a2, $1b
+	noise __,  6, $92, $1a
+	noise __,  9, $81, $18
 	endchannel
 ; f3d25
 
-Cry_15_Ch5: ; f3d25
+Cry_Weedle_Ch5: ; f3d25
 	unknownmusic0xde $f0
-	sound $4, $f3, $0780
-	sound $f, $e7, $0700
-	sound $8, $d3, $0710
-	sound $4, $c2, $0700
-	sound $4, $d2, $06f0
-	sound $8, $c1, $06e0
+	sound __,  5, $f3, $0780
+	sound __, 16, $e7, $0700
+	sound __,  9, $d3, $0710
+	sound __,  5, $c2, $0700
+	sound __,  5, $d2, $06f0
+	sound __,  9, $c1, $06e0
 	endchannel
 ; f3d40
 
-Cry_15_Ch6: ; f3d40
+Cry_Weedle_Ch6: ; f3d40
 	unknownmusic0xde $5a
-	sound $6, $c3, $0701
-	sound $e, $b7, $0681
-	sound $7, $b3, $0692
-	sound $3, $a2, $0681
-	sound $4, $b2, $0672
-	sound $8, $a1, $0661
+	sound __,  7, $c3, $0701
+	sound __, 15, $b7, $0681
+	sound __,  8, $b3, $0692
+	sound __,  4, $a2, $0681
+	sound __,  5, $b2, $0672
+	sound __,  9, $a1, $0661
 	endchannel
 ; f3d5b
 
-Cry_15_Ch8: ; f3d5b
-	noise $6, $e3, $5c
-	noise $e, $d6, $4c
-	noise $6, $c6, $3c
-	noise $3, $b3, $4c
-	noise $3, $a2, $5c
-	noise $8, $b1, $6c
+Cry_Weedle_Ch8: ; f3d5b
+	noise __,  7, $e3, $5c
+	noise __, 15, $d6, $4c
+	noise __,  7, $c6, $3c
+	noise __,  4, $b3, $4c
+	noise __,  4, $a2, $5c
+	noise __,  9, $b1, $6c
 	endchannel
 ; f3d6e
 
-Cry_17_Ch5: ; f3d6e
+Cry_Ekans_Ch5: ; f3d6e
 	unknownmusic0xde $f
-	sound $f, $f7, $0500
-	sound $f, $e7, $0508
-	sound $8, $b4, $0480
-	sound $f, $a2, $0460
+	sound __, 16, $f7, $0500
+	sound __, 16, $e7, $0508
+	sound __,  9, $b4, $0480
+	sound __, 16, $a2, $0460
 	endchannel
 ; f3d81
 
-Cry_17_Ch6: ; f3d81
+Cry_Ekans_Ch6: ; f3d81
 	unknownmusic0xde $44
-	sound $e, $d7, $0481
-	sound $e, $c7, $0489
-	sound $a, $b4, $0401
-	sound $f, $c2, $03e1
+	sound __, 15, $d7, $0481
+	sound __, 15, $c7, $0489
+	sound __, 11, $b4, $0401
+	sound __, 16, $c2, $03e1
 	endchannel
 ; f3d94
 
-Cry_17_Ch8: ; f3d94
-	noise $e, $f7, $7c
-	noise $c, $f6, $6c
-	noise $9, $e4, $7c
-	noise $f, $e2, $6c
+Cry_Ekans_Ch8: ; f3d94
+	noise __, 15, $f7, $7c
+	noise __, 13, $f6, $6c
+	noise __, 10, $e4, $7c
+	noise __, 16, $e2, $6c
 	endchannel
 ; f3da1
 
-Cry_1C_Ch5: ; f3da1
+Cry_Metapod_Ch5: ; f3da1
 	unknownmusic0xde $f5
-	sound $7, $d6, $07e1
-	sound $6, $c6, $07e2
-	sound $9, $d6, $07e1
-	sound $7, $c6, $07e0
-	sound $5, $b6, $07e2
-	sound $7, $c6, $07e1
-	sound $6, $b6, $07e0
-	sound $8, $a1, $07df
+	sound __,  8, $d6, $07e1
+	sound __,  7, $c6, $07e2
+	sound __, 10, $d6, $07e1
+	sound __,  8, $c6, $07e0
+	sound __,  6, $b6, $07e2
+	sound __,  8, $c6, $07e1
+	sound __,  7, $b6, $07e0
+	sound __,  9, $a1, $07df
 	endchannel
 ; f3dc4
 
-Cry_1C_Ch6: ; f3dc4
+Cry_Metapod_Ch6: ; f3dc4
 	unknownmusic0xde $44
-	sound $6, $c3, $07c9
-	sound $6, $b3, $07c7
-	sound $a, $c4, $07c3
-	sound $8, $b4, $07c7
-	sound $6, $c3, $07c9
-	sound $f, $a2, $07c5
+	sound __,  7, $c3, $07c9
+	sound __,  7, $b3, $07c7
+	sound __, 11, $c4, $07c3
+	sound __,  9, $b4, $07c7
+	sound __,  7, $c3, $07c9
+	sound __, 16, $a2, $07c5
 	endchannel
 ; f3ddf
 
-Cry_1C_Ch8: ; f3ddf
-	noise $d, $19, $7c
-	noise $d, $f7, $8c
-	noise $c, $d6, $7c
-	noise $8, $c4, $6c
-	noise $f, $b3, $5c
+Cry_Metapod_Ch8: ; f3ddf
+	noise __, 14, $19, $7c
+	noise __, 14, $f7, $8c
+	noise __, 13, $d6, $7c
+	noise __,  9, $c4, $6c
+	noise __, 16, $b3, $5c
 	endchannel
 ; f3def
 
-Cry_1A_Ch5: ; f3def
+Cry_Venonat_Ch5: ; f3def
 	unknownmusic0xde $f0
-	sound $6, $f7, $0740
-	sound $c, $e6, $0744
-	sound $6, $d5, $0750
-	sound $4, $c3, $0760
-	sound $3, $c3, $0780
-	sound $8, $d1, $07a0
+	sound __,  7, $f7, $0740
+	sound __, 13, $e6, $0744
+	sound __,  7, $d5, $0750
+	sound __,  5, $c3, $0760
+	sound __,  4, $c3, $0780
+	sound __,  9, $d1, $07a0
 	endchannel
 ; f3e0a
 
-Cry_1A_Ch6: ; f3e0a
+Cry_Venonat_Ch6: ; f3e0a
 	unknownmusic0xde $a
-	sound $6, $c7, $0701
-	sound $b, $b6, $0702
-	sound $6, $a5, $0711
-	sound $4, $93, $0721
-	sound $3, $a3, $0741
-	sound $8, $91, $0762
+	sound __,  7, $c7, $0701
+	sound __, 12, $b6, $0702
+	sound __,  7, $a5, $0711
+	sound __,  5, $93, $0721
+	sound __,  4, $a3, $0741
+	sound __,  9, $91, $0762
 	endchannel
 ; f3e25
 
-Cry_1A_Ch8: ; f3e25
-	noise $3, $e2, $3c
-	noise $8, $d6, $4c
-	noise $5, $d4, $3c
-	noise $c, $c7, $4c
-	noise $2, $e2, $3c
-	noise $8, $d1, $2c
+Cry_Venonat_Ch8: ; f3e25
+	noise __,  4, $e2, $3c
+	noise __,  9, $d6, $4c
+	noise __,  6, $d4, $3c
+	noise __, 13, $c7, $4c
+	noise __,  3, $e2, $3c
+	noise __,  9, $d1, $2c
 	endchannel
 ; f3e38
 
-Cry_1D_Ch5: ; f3e38
+Cry_Squirtle_Ch5: ; f3e38
 	unknownmusic0xde $f4
-	sound $f, $f0, $0705
-	sound $a, $e0, $0700
-	sound $6, $b4, $0710
-	sound $4, $d3, $0700
-	sound $6, $b2, $0620
-	sound $8, $a1, $0624
+	sound __, 16, $f0, $0705
+	sound __, 11, $e0, $0700
+	sound __,  7, $b4, $0710
+	sound __,  5, $d3, $0700
+	sound __,  7, $b2, $0620
+	sound __,  9, $a1, $0624
 	endchannel
 ; f3e53
 
-Cry_1D_Ch6: ; f3e53
+Cry_Squirtle_Ch6: ; f3e53
 	unknownmusic0xde $22
-	sound $f, $b0, $06c3
-	sound $a, $a0, $06c1
-	sound $6, $84, $06d2
-	sound $4, $93, $06c1
-	sound $6, $82, $05e1
-	sound $8, $61, $05e8
+	sound __, 16, $b0, $06c3
+	sound __, 11, $a0, $06c1
+	sound __,  7, $84, $06d2
+	sound __,  5, $93, $06c1
+	sound __,  7, $82, $05e1
+	sound __,  9, $61, $05e8
 	endchannel
 ; f3e6e
 
-Cry_1D_Ch8: ; f3e6e
-	noise $6, $e6, $4c
-	noise $f, $d6, $3c
-	noise $a, $c5, $4a
-	noise $1, $b2, $5b
-	noise $f, $c2, $4c
+Cry_Squirtle_Ch8: ; f3e6e
+	noise __,  7, $e6, $4c
+	noise __, 16, $d6, $3c
+	noise __, 11, $c5, $4a
+	noise __,  2, $b2, $5b
+	noise __, 16, $c2, $4c
 	endchannel
 ; f3e7e
 
-Cry_18_Ch5: ; f3e7e
+Cry_Fearow_Ch5: ; f3e7e
 	unknownmusic0xde $50
-	sound $a, $f5, $0680
-	sound $3, $e2, $06a0
-	sound $3, $f2, $06c0
-	sound $3, $e2, $06e0
-	sound $3, $d2, $0700
-	sound $3, $c2, $06e0
-	sound $3, $d2, $06c0
-	sound $8, $c1, $06a0
+	sound __, 11, $f5, $0680
+	sound __,  4, $e2, $06a0
+	sound __,  4, $f2, $06c0
+	sound __,  4, $e2, $06e0
+	sound __,  4, $d2, $0700
+	sound __,  4, $c2, $06e0
+	sound __,  4, $d2, $06c0
+	sound __,  9, $c1, $06a0
 	endchannel
 ; f3ea1
 
-Cry_18_Ch6: ; f3ea1
+Cry_Fearow_Ch6: ; f3ea1
 	unknownmusic0xde $f
-	sound $9, $d5, $0631
-	sound $3, $d2, $0652
-	sound $3, $e2, $0671
-	sound $3, $b2, $0691
-	sound $3, $c2, $06b2
-	sound $3, $b2, $0691
-	sound $3, $c2, $0671
-	sound $8, $b1, $0651
+	sound __, 10, $d5, $0631
+	sound __,  4, $d2, $0652
+	sound __,  4, $e2, $0671
+	sound __,  4, $b2, $0691
+	sound __,  4, $c2, $06b2
+	sound __,  4, $b2, $0691
+	sound __,  4, $c2, $0671
+	sound __,  9, $b1, $0651
 	endchannel
 ; f3ec4
 
-Cry_18_Ch8: ; f3ec4
-	noise $6, $e3, $4c
-	noise $4, $c3, $3c
-	noise $5, $d4, $3c
-	noise $4, $c4, $2c
-	noise $6, $b4, $3c
-	noise $8, $c1, $2c
+Cry_Fearow_Ch8: ; f3ec4
+	noise __,  7, $e3, $4c
+	noise __,  5, $c3, $3c
+	noise __,  6, $d4, $3c
+	noise __,  5, $c4, $2c
+	noise __,  7, $b4, $3c
+	noise __,  9, $c1, $2c
 	endchannel
 ; f3ed7
 
-Cry_1F_Ch5: ; f3ed7
+Cry_Growlithe_Ch5: ; f3ed7
 	unknownmusic0xde $a5
-	sound $3, $f4, $0641
-	sound $d, $d6, $0721
-	sound $8, $f4, $0719
-	sound $8, $c1, $071a
+	sound __,  4, $f4, $0641
+	sound __, 14, $d6, $0721
+	sound __,  9, $f4, $0719
+	sound __,  9, $c1, $071a
 	endchannel
 ; f3eea
 
-Cry_1F_Ch6: ; f3eea
+Cry_Growlithe_Ch6: ; f3eea
 	unknownmusic0xde $cc
-	sound $4, $f4, $0580
-	sound $e, $e6, $06e0
-	sound $8, $d5, $06d8
-	sound $8, $d1, $06dc
+	sound __,  5, $f4, $0580
+	sound __, 15, $e6, $06e0
+	sound __,  9, $d5, $06d8
+	sound __,  9, $d1, $06dc
 	endchannel
 ; f3efd
 
-Cry_1F_Ch8: ; f3efd
-	noise $5, $c4, $46
-	noise $d, $a5, $44
-	noise $8, $c4, $45
-	noise $8, $b1, $44
+Cry_Growlithe_Ch8: ; f3efd
+	noise __,  6, $c4, $46
+	noise __, 14, $a5, $44
+	noise __,  9, $c4, $45
+	noise __,  9, $b1, $44
 	endchannel
 ; f3f0a
 
-Cry_20_Ch5: ; f3f0a
+Cry_Krabby_Ch5: ; f3f0a
 	unknownmusic0xde $f0
-	sound $d, $f1, $0511
-	sound $d, $e1, $0515
-	sound $d, $e1, $0511
-	sound $8, $d1, $0511
+	sound __, 14, $f1, $0511
+	sound __, 14, $e1, $0515
+	sound __, 14, $e1, $0511
+	sound __,  9, $d1, $0511
 	endchannel
 ; f3f1d
 
-Cry_20_Ch6: ; f3f1d
+Cry_Krabby_Ch6: ; f3f1d
 	unknownmusic0xde $15
-	sound $c, $e1, $050c
-	sound $c, $d1, $0510
-	sound $e, $c1, $050c
-	sound $8, $c1, $050a
+	sound __, 13, $e1, $050c
+	sound __, 13, $d1, $0510
+	sound __, 15, $c1, $050c
+	sound __,  9, $c1, $050a
 	endchannel
 ; f3f30
 
-Cry_20_Ch8: ; f3f30
-	noise $e, $f2, $65
-	noise $d, $e2, $55
-	noise $e, $d2, $56
-	noise $8, $d1, $66
+Cry_Krabby_Ch8: ; f3f30
+	noise __, 15, $f2, $65
+	noise __, 14, $e2, $55
+	noise __, 15, $d2, $56
+	noise __,  9, $d1, $66
 	endchannel
 ; f3f3d
 
-Cry_21_Ch5: ; f3f3d
+Cry_Psyduck_Ch5: ; f3f3d
 	unknownmusic0xde $1b
-	sound $3, $f3, $0564
-	sound $2, $e2, $0544
-	sound $5, $d1, $0522
-	sound $2, $b2, $0484
-	sound $8, $d1, $04a2
-	sound $3, $f3, $0524
-	sound $4, $e4, $04e4
-	sound $8, $d1, $0502
+	sound __,  4, $f3, $0564
+	sound __,  3, $e2, $0544
+	sound __,  6, $d1, $0522
+	sound __,  3, $b2, $0484
+	sound __,  9, $d1, $04a2
+	sound __,  4, $f3, $0524
+	sound __,  5, $e4, $04e4
+	sound __,  9, $d1, $0502
 	endchannel
 ; f3f60
 
-Cry_21_Ch6: ; f3f60
+Cry_Psyduck_Ch6: ; f3f60
 	unknownmusic0xde $cc
-	sound $3, $d3, $0560
-	sound $2, $c2, $0540
-	sound $5, $c1, $0520
-	sound $2, $92, $0480
-	sound $8, $c1, $04a0
-	sound $3, $d3, $0520
-	sound $3, $c4, $04e0
-	sound $8, $c1, $0500
-Cry_21_Ch8: ; f3f82
+	sound __,  4, $d3, $0560
+	sound __,  3, $c2, $0540
+	sound __,  6, $c1, $0520
+	sound __,  3, $92, $0480
+	sound __,  9, $c1, $04a0
+	sound __,  4, $d3, $0520
+	sound __,  4, $c4, $04e0
+	sound __,  9, $c1, $0500
+Cry_Psyduck_Ch8: ; f3f82
 	endchannel
 ; f3f83
 
-Cry_22_Ch5: ; f3f83
+Cry_Rattata_Ch5: ; f3f83
 	unknownmusic0xde $11
-	sound $2, $3d, $0381
-	sound $7, $f5, $0601
-	sound $1, $c2, $0481
-	sound $8, $91, $0381
+	sound __,  3, $3d, $0381
+	sound __,  8, $f5, $0601
+	sound __,  2, $c2, $0481
+	sound __,  9, $91, $0381
 	endchannel
 ; f3f96
 
-Cry_22_Ch6: ; f3f96
+Cry_Rattata_Ch6: ; f3f96
 	unknownmusic0xde $ee
-	sound $2, $3e, $05b0
-	sound $7, $d5, $075d
-	sound $1, $b2, $06b0
-	sound $8, $61, $05b0
+	sound __,  3, $3e, $05b0
+	sound __,  8, $d5, $075d
+	sound __,  2, $b2, $06b0
+	sound __,  9, $61, $05b0
 	endchannel
 ; f3fa9
 
-Cry_22_Ch8: ; f3fa9
-	noise $2, $92, $49
-	noise $7, $b5, $29
-	noise $1, $a2, $39
-	noise $8, $91, $49
+Cry_Rattata_Ch8: ; f3fa9
+	noise __,  3, $92, $49
+	noise __,  8, $b5, $29
+	noise __,  2, $a2, $39
+	noise __,  9, $91, $49
 	endchannel
 ; f3fb6
--- a/audio/cry_headers.asm
+++ b/audio/cry_headers.asm
@@ -1,257 +1,258 @@
 ; f2787
-BulbasaurCryHeader:   dw $0f,  $080,  $081
-IvysaurCryHeader:     dw $0f,  $020,  $100
-VenusaurCryHeader:    dw $0f,  $000,  $140
-CharmanderCryHeader:  dw $04,  $060,  $0c0
-CharmeleonCryHeader:  dw $04,  $020,  $0c0
-CharizardCryHeader:   dw $04,  $000,  $100
-SquirtleCryHeader:    dw $1d,  $060,  $0c0
-WartortleCryHeader:   dw $1d,  $020,  $0c0
-BlastoiseCryHeader:   dw $13,  $000,  $100
-CaterpieCryHeader:    dw $16,  $080,  $0a0
-MetapodCryHeader:     dw $1c,  $0cc,  $081
-ButterfreeCryHeader:  dw $16,  $077,  $0c0
-WeedleCryHeader:      dw $15,  $0ee,  $081
-KakunaCryHeader:      dw $13,  $0ff,  $081
-BeedrillCryHeader:    dw $13,  $060,  $100
-PidgeyCryHeader:      dw $0e,  $0df,  $084
-PidgeottoCryHeader:   dw $14,  $028,  $140
-PidgeotCryHeader:     dw $14,  $011,  $17f
-RattataCryHeader:     dw $22,  $000,  $100
-RaticateCryHeader:    dw $22,  $020,  $17f
-SpearowCryHeader:     dw $10,  $000,  $100
-FearowCryHeader:      dw $18,  $040,  $120
-EkansCryHeader:       dw $17,  $012,  $0c0
-ArbokCryHeader:       dw $17,  $0e0,  $090
-PikachuCryHeader:     dw $0f,  $0ee,  $081
-RaichuCryHeader:      dw $09,  $0ee,  $088
-SandshrewCryHeader:   dw $00,  $020,  $0c0
-SandslashCryHeader:   dw $00,  $0ff,  $17f
-NidoranFCryHeader:    dw $01,  $000,  $100
-NidorinaCryHeader:    dw $01,  $02c,  $160
-NidoqueenCryHeader:   dw $0a,  $000,  $100
-NidoranMCryHeader:    dw $00,  $000,  $100
-NidorinoCryHeader:    dw $00,  $02c,  $140
-NidokingCryHeader:    dw $09,  $000,  $100
-ClefairyCryHeader:    dw $19,  $0cc,  $081
-ClefableCryHeader:    dw $19,  $0aa,  $0a0
-VulpixCryHeader:      dw $24,  $04f,  $090
-NinetalesCryHeader:   dw $24,  $088,  $0e0
-JigglypuffCryHeader:  dw $0e,  $0ff,  $0b5
-WigglytuffCryHeader:  dw $0e,  $068,  $0e0
-ZubatCryHeader:       dw $1d,  $0e0,  $100
-GolbatCryHeader:      dw $1d,  $0fa,  $100
-OddishCryHeader:      dw $08,  $0dd,  $081
-GloomCryHeader:       dw $08,  $0aa,  $0c0
-VileplumeCryHeader:   dw $23,  $022,  $17f
-ParasCryHeader:       dw $1e,  $020,  $160
-ParasectCryHeader:    dw $1e,  $042,  $17f
-VenonatCryHeader:     dw $1a,  $044,  $0c0
-VenomothCryHeader:    dw $1a,  $029,  $100
-DiglettCryHeader:     dw $0b,  $0aa,  $081
-DugtrioCryHeader:     dw $0b,  $02a,  $090
-MeowthCryHeader:      dw $19,  $077,  $090
-PersianCryHeader:     dw $19,  $099,  $17f
-PsyduckCryHeader:     dw $21,  $020,  $0e0
-GolduckCryHeader:     dw $21,  $0ff,  $0c0
-MankeyCryHeader:      dw $0a,  $0dd,  $0e0
-PrimeapeCryHeader:    dw $0a,  $0af,  $0c0
-GrowlitheCryHeader:   dw $1f,  $020,  $0c0
-ArcanineCryHeader:    dw $15,  $000,  $100
-PoliwagCryHeader:     dw $0e,  $0ff,  $17f
-PoliwhirlCryHeader:   dw $0e,  $077,  $0e0
-PoliwrathCryHeader:   dw $0e,  $000,  $17f
-AbraCryHeader:        dw $1c,  $0c0,  $081
-KadabraCryHeader:     dw $1c,  $0a8,  $140
-AlakazamCryHeader:    dw $1c,  $098,  $17f
-MachopCryHeader:      dw $1f,  $0ee,  $081
-MachokeCryHeader:     dw $1f,  $048,  $0e0
-MachampCryHeader:     dw $1f,  $008,  $140
-BellsproutCryHeader:  dw $21,  $055,  $081
-WeepinbellCryHeader:  dw $25,  $044,  $0a0
-VictreebelCryHeader:  dw $25,  $066,  $14c
-TentacoolCryHeader:   dw $1a,  $000,  $100
-TentacruelCryHeader:  dw $1a,  $0ee,  $17f
-GeodudeCryHeader:     dw $24,  $0f0,  $090
-GravelerCryHeader:    dw $24,  $000,  $100
-GolemCryHeader:       dw $12,  $0e0,  $0c0
-PonytaCryHeader:      dw $25,  $000,  $100
-RapidashCryHeader:    dw $25,  $020,  $140
-SlowpokeCryHeader:    dw $02,  $000,  $100
-SlowbroCryHeader:     dw $1f,  $000,  $100
-MagnemiteCryHeader:   dw $1c,  $080,  $0e0
-MagnetonCryHeader:    dw $1c,  $020,  $140
-FarfetchDCryHeader:   dw $10,  $0dd,  $081
-DoduoCryHeader:       dw $0b,  $0bb,  $081
-DodrioCryHeader:      dw $0b,  $099,  $0a0
-SeelCryHeader:        dw $0c,  $088,  $140
-DewgongCryHeader:     dw $0c,  $023,  $17f
-GrimerCryHeader:      dw $05,  $000,  $100
-MukCryHeader:         dw $07,  $0ef,  $17f
-ShellderCryHeader:    dw $18,  $000,  $100
-CloysterCryHeader:    dw $18,  $06f,  $160
-GastlyCryHeader:      dw $1c,  $000,  $100
-HaunterCryHeader:     dw $1c,  $030,  $0c0
-GengarCryHeader:      dw $07,  $000,  $17f
-OnixCryHeader:        dw $17,  $0ff,  $140
-DrowzeeCryHeader:     dw $0d,  $088,  $0a0
-HypnoCryHeader:       dw $0d,  $0ee,  $0c0
-KrabbyCryHeader:      dw $20,  $020,  $160
-KinglerCryHeader:     dw $20,  $0ee,  $160
-VoltorbCryHeader:     dw $06,  $0ed,  $100
-ElectrodeCryHeader:   dw $06,  $0a8,  $110
-ExeggcuteCryHeader:   dw $0b,  $000,  $100
-ExeggutorCryHeader:   dw $0d,  $000,  $100
-CuboneCryHeader:      dw $19,  $000,  $100
-MarowakCryHeader:     dw $08,  $04f,  $0e0
-HitmonleeCryHeader:   dw $12,  $080,  $140
-HitmonchanCryHeader:  dw $0c,  $0ee,  $140
-LickitungCryHeader:   dw $0c,  $000,  $100
-KoffingCryHeader:     dw $12,  $0e6,  $15d
-WeezingCryHeader:     dw $12,  $0ff,  $17f
-RhyhornCryHeader:     dw $04,  $000,  $100
-RhydonCryHeader:      dw $11,  $000,  $100
-ChanseyCryHeader:     dw $14,  $00a,  $140
-TangelaCryHeader:     dw $12,  $000,  $100
-KangaskhanCryHeader:  dw $03,  $000,  $100
-HorseaCryHeader:      dw $19,  $099,  $090
-SeadraCryHeader:      dw $19,  $03c,  $081
-GoldeenCryHeader:     dw $16,  $080,  $0c0
-SeakingCryHeader:     dw $16,  $010,  $17f
-StaryuCryHeader:      dw $1e,  $002,  $0a0
-StarmieCryHeader:     dw $1e,  $000,  $100
-MrMimeCryHeader:      dw $20,  $008,  $0c0
-ScytherCryHeader:     dw $16,  $000,  $100
-JynxCryHeader:        dw $0d,  $0ff,  $17f
-ElectabuzzCryHeader:  dw $06,  $08f,  $17f
-MagmarCryHeader:      dw $04,  $0ff,  $0b0
-PinsirCryHeader:      dw $14,  $000,  $100
-TaurosCryHeader:      dw $1d,  $011,  $0c0
-MagikarpCryHeader:    dw $17,  $080,  $080
-GyaradosCryHeader:    dw $17,  $000,  $100
-LaprasCryHeader:      dw $1b,  $000,  $100
-DittoCryHeader:       dw $0e,  $0ff,  $17f
-EeveeCryHeader:       dw $1a,  $088,  $0e0
-VaporeonCryHeader:    dw $1a,  $0aa,  $17f
-JolteonCryHeader:     dw $1a,  $03d,  $100
-FlareonCryHeader:     dw $1a,  $010,  $0a0
-PorygonCryHeader:     dw $25,  $0aa,  $17f
-OmanyteCryHeader:     dw $1f,  $0f0,  $081
-OmastarCryHeader:     dw $1f,  $0ff,  $0c0
-KabutoCryHeader:      dw $16,  $0bb,  $0c0
-KabutopsCryHeader:    dw $18,  $0ee,  $081
-AerodactylCryHeader:  dw $23,  $020,  $170
-SnorlaxCryHeader:     dw $05,  $055,  $081
-ArticunoCryHeader:    dw $09,  $080,  $0c0
-ZapdosCryHeader:      dw $18,  $0ff,  $100
-MoltresCryHeader:     dw $09,  $0f8,  $0c0
-DratiniCryHeader:     dw $0f,  $060,  $0c0
-DragonairCryHeader:   dw $0f,  $040,  $100
-DragoniteCryHeader:   dw $0f,  $03c,  $140
-MewtwoCryHeader:      dw $1e,  $099,  $17f
-MewCryHeader:         dw $1e,  $0ee,  $17f
-ChikoritaCryHeader:   dw $31, -$010,  $0b0
-BayleefCryHeader:     dw $31, -$022,  $120
-MeganiumCryHeader:    dw $31, -$0b7,  $200
-CyndaquilCryHeader:   dw $30,  $347,  $080
-QuilavaCryHeader:     dw $30,  $321,  $120
-TyphlosionCryHeader:  dw $3a,  $f00,  $0d4
-TotodileCryHeader:    dw $32,  $46c,  $0e8
-CroconawCryHeader:    dw $32,  $440,  $110
-FeraligatrCryHeader:  dw $32,  $3fc,  $180
-SentretCryHeader:     dw $2e,  $08a,  $0b8
-FurretCryHeader:      dw $2e,  $06b,  $102
-HoothootCryHeader:    dw $2d,  $091,  $0d8
-NoctowlCryHeader:     dw $2d,  $000,  $1a0
-LedybaCryHeader:      dw $36,  $000,  $0de
-LedianCryHeader:      dw $36, -$096,  $138
-SpinarakCryHeader:    dw $27,  $011,  $200
-AriadosCryHeader:     dw $27, -$0ae,  $1e2
-CrobatCryHeader:      dw $1d, -$010,  $140
-ChinchouCryHeader:    dw $30,  $3c9,  $140
-LanturnCryHeader:     dw $30,  $2d0,  $110
-PichuCryHeader:       dw $40,  $000,  $140
-CleffaCryHeader:      dw $34,  $061,  $091
-IgglybuffCryHeader:   dw $31,  $0e8,  $0e8
-TogepiCryHeader:      dw $28,  $010,  $100
-TogeticCryHeader:     dw $2c,  $03b,  $038
-NatuCryHeader:        dw $3b, -$067,  $100
-XatuCryHeader:        dw $3b, -$0a7,  $168
-MareepCryHeader:      dw $2b,  $022,  $0d8
-FlaaffyCryHeader:     dw $2b, -$007,  $180
-AmpharosCryHeader:    dw $3e, -$07c,  $0e8
-BellossomCryHeader:   dw $34,  $084,  $150
-MarillCryHeader:      dw $26,  $11b,  $120
-AzumarillCryHeader:   dw $26,  $0b6,  $180
-SudowoodoCryHeader:   dw $34,  $f40,  $180
-PolitoedCryHeader:    dw $34, -$2a3,  $1c8
-HoppipCryHeader:      dw $34,  $03b,  $0c8
-SkiploomCryHeader:    dw $34,  $027,  $138
-JumpluffCryHeader:    dw $34,  $000,  $180
-AipomCryHeader:       dw $41, -$051,  $0e8
-SunkernCryHeader:     dw $26,  $12b,  $0b8
-SunfloraCryHeader:    dw $3d, -$020,  $180
-YanmaCryHeader:       dw $32,  $031,  $0c8
-WooperCryHeader:      dw $38,  $093,  $0af
-QuagsireCryHeader:    dw $38, -$0c6,  $140
-EspeonCryHeader:      dw $41,  $0a2,  $140
-UmbreonCryHeader:     dw $1a, -$0e9,  $0f0
-MurkrowCryHeader:     dw $26, -$01f,  $180
-SlowkingCryHeader:    dw $2f,  $104,  $200
-MisdreavusCryHeader:  dw $2d,  $130,  $0e8
-UnownCryHeader:       dw $2d,  $162,  $100
-WobbuffetCryHeader:   dw $3e,  $27b,  $144
-GirafarigCryHeader:   dw $29,  $041,  $200
-PinecoCryHeader:      dw $2f,  $080,  $100
-ForretressCryHeader:  dw $2f,  $000,  $180
-DunsparceCryHeader:   dw $42,  $1c4,  $100
-GligarCryHeader:      dw $33, -$102,  $100
-SteelixCryHeader:     dw $3a,  $0ef,  $0f7
-SnubbullCryHeader:    dw $42,  $112,  $0e8
-GranbullCryHeader:    dw $42,  $000,  $180
-QwilfishCryHeader:    dw $2f,  $160,  $0e0
-ScizorCryHeader:      dw $3e,  $000,  $160
-ShuckleCryHeader:     dw $42,  $290,  $0a8
-HeracrossCryHeader:   dw $3e,  $035,  $0e0
-SneaselCryHeader:     dw $38,  $053,  $0af
-TeddiursaCryHeader:   dw $3c,  $7a2,  $06e
-UrsaringCryHeader:    dw $3c,  $640,  $0d8
-SlugmaCryHeader:      dw $35, -$1d8,  $140
-MagcargoCryHeader:    dw $3f, -$20d,  $1c0
-SwinubCryHeader:      dw $30,  $1fe,  $140
-PiloswineCryHeader:   dw $3f, -$109,  $100
-CorsolaCryHeader:     dw $3f,  $0a1,  $0e8
-RemoraidCryHeader:    dw $3d,  $00d,  $100
-OctilleryCryHeader:   dw $32,  $000,  $180
-DelibirdCryHeader:    dw $3c,  $002,  $06a
-MantineCryHeader:     dw $39, -$0be,  $0f0
-SkarmoryCryHeader:    dw $3e,  $8a9,  $180
-HoundourCryHeader:    dw $30,  $039,  $140
-HoundoomCryHeader:    dw $32, -$10a,  $100
-KingdraCryHeader:     dw $35,  $2fb,  $100
-PhanpyCryHeader:      dw $2e,  $048,  $230
-DonphanCryHeader:     dw $43,  $000,  $1a0
-Porygon2CryHeader:    dw $29,  $073,  $240
-StantlerCryHeader:    dw $41, -$160,  $180
-SmeargleCryHeader:    dw $40, -$21a,  $1f0
-TyrogueCryHeader:     dw $41,  $02c,  $108
-HitmontopCryHeader:   dw $35,  $000,  $100
-SmoochumCryHeader:    dw $26,  $068,  $100
-ElekidCryHeader:      dw $3d, -$2d8,  $0b4
-MagbyCryHeader:       dw $3c,  $176,  $03a
-MiltankCryHeader:     dw $33, -$1cd,  $1a0
-BlisseyCryHeader:     dw $2f,  $293,  $140
-RaikouCryHeader:      dw $2a,  $22e,  $120
-EnteiCryHeader:       dw $37,  $000,  $1a0
-SuicuneCryHeader:     dw $3f,  $000,  $180
-LarvitarCryHeader:    dw $2a,  $05f,  $0d0
-PupitarCryHeader:     dw $27, -$1db,  $150
-TyranitarCryHeader:   dw $2a, -$100,  $180
-LugiaCryHeader:       dw $3a,  $000,  $100
-HoOhCryHeader:        dw $41,  $000,  $180
-CelebiCryHeader:      dw $37,  $14a,  $111
-CryHeader252:         dw 0,    0,     0
-CryHeader253:         dw 0,    0,     0
-CryHeader254:         dw 0,    0,     0
-CryHeader255:         dw 0,    0,     0
+;                               index,          pitch, length
+BulbasaurCryHeader:   cry_header CRY_BULBASAUR,   $080,  $081
+IvysaurCryHeader:     cry_header CRY_BULBASAUR,   $020,  $100
+VenusaurCryHeader:    cry_header CRY_BULBASAUR,   $000,  $140
+CharmanderCryHeader:  cry_header CRY_CHARMANDER,  $060,  $0c0
+CharmeleonCryHeader:  cry_header CRY_CHARMANDER,  $020,  $0c0
+CharizardCryHeader:   cry_header CRY_CHARMANDER,  $000,  $100
+SquirtleCryHeader:    cry_header CRY_SQUIRTLE,    $060,  $0c0
+WartortleCryHeader:   cry_header CRY_SQUIRTLE,    $020,  $0c0
+BlastoiseCryHeader:   cry_header CRY_BLASTOISE,   $000,  $100
+CaterpieCryHeader:    cry_header CRY_CATERPIE,    $080,  $0a0
+MetapodCryHeader:     cry_header CRY_METAPOD,     $0cc,  $081
+ButterfreeCryHeader:  cry_header CRY_CATERPIE,    $077,  $0c0
+WeedleCryHeader:      cry_header CRY_WEEDLE,      $0ee,  $081
+KakunaCryHeader:      cry_header CRY_BLASTOISE,   $0ff,  $081
+BeedrillCryHeader:    cry_header CRY_BLASTOISE,   $060,  $100
+PidgeyCryHeader:      cry_header CRY_PIDGEY,      $0df,  $084
+PidgeottoCryHeader:   cry_header CRY_PIDGEOTTO,   $028,  $140
+PidgeotCryHeader:     cry_header CRY_PIDGEOTTO,   $011,  $17f
+RattataCryHeader:     cry_header CRY_RATTATA,     $000,  $100
+RaticateCryHeader:    cry_header CRY_RATTATA,     $020,  $17f
+SpearowCryHeader:     cry_header CRY_SPEAROW,     $000,  $100
+FearowCryHeader:      cry_header CRY_FEAROW,      $040,  $120
+EkansCryHeader:       cry_header CRY_EKANS,       $012,  $0c0
+ArbokCryHeader:       cry_header CRY_EKANS,       $0e0,  $090
+PikachuCryHeader:     cry_header CRY_BULBASAUR,   $0ee,  $081
+RaichuCryHeader:      cry_header CRY_RAICHU,      $0ee,  $088
+SandshrewCryHeader:   cry_header CRY_NIDORAN_M,   $020,  $0c0
+SandslashCryHeader:   cry_header CRY_NIDORAN_M,   $0ff,  $17f
+NidoranFCryHeader:    cry_header CRY_NIDORAN_F,   $000,  $100
+NidorinaCryHeader:    cry_header CRY_NIDORAN_F,   $02c,  $160
+NidoqueenCryHeader:   cry_header CRY_NIDOQUEEN,   $000,  $100
+NidoranMCryHeader:    cry_header CRY_NIDORAN_M,   $000,  $100
+NidorinoCryHeader:    cry_header CRY_NIDORAN_M,   $02c,  $140
+NidokingCryHeader:    cry_header CRY_RAICHU,      $000,  $100
+ClefairyCryHeader:    cry_header CRY_CLEFAIRY,    $0cc,  $081
+ClefableCryHeader:    cry_header CRY_CLEFAIRY,    $0aa,  $0a0
+VulpixCryHeader:      cry_header CRY_VULPIX,      $04f,  $090
+NinetalesCryHeader:   cry_header CRY_VULPIX,      $088,  $0e0
+JigglypuffCryHeader:  cry_header CRY_PIDGEY,      $0ff,  $0b5
+WigglytuffCryHeader:  cry_header CRY_PIDGEY,      $068,  $0e0
+ZubatCryHeader:       cry_header CRY_SQUIRTLE,    $0e0,  $100
+GolbatCryHeader:      cry_header CRY_SQUIRTLE,    $0fa,  $100
+OddishCryHeader:      cry_header CRY_ODDISH,      $0dd,  $081
+GloomCryHeader:       cry_header CRY_ODDISH,      $0aa,  $0c0
+VileplumeCryHeader:   cry_header CRY_VILEPLUME,   $022,  $17f
+ParasCryHeader:       cry_header CRY_PARAS,       $020,  $160
+ParasectCryHeader:    cry_header CRY_PARAS,       $042,  $17f
+VenonatCryHeader:     cry_header CRY_VENONAT,     $044,  $0c0
+VenomothCryHeader:    cry_header CRY_VENONAT,     $029,  $100
+DiglettCryHeader:     cry_header CRY_DIGLETT,     $0aa,  $081
+DugtrioCryHeader:     cry_header CRY_DIGLETT,     $02a,  $090
+MeowthCryHeader:      cry_header CRY_CLEFAIRY,    $077,  $090
+PersianCryHeader:     cry_header CRY_CLEFAIRY,    $099,  $17f
+PsyduckCryHeader:     cry_header CRY_PSYDUCK,     $020,  $0e0
+GolduckCryHeader:     cry_header CRY_PSYDUCK,     $0ff,  $0c0
+MankeyCryHeader:      cry_header CRY_NIDOQUEEN,   $0dd,  $0e0
+PrimeapeCryHeader:    cry_header CRY_NIDOQUEEN,   $0af,  $0c0
+GrowlitheCryHeader:   cry_header CRY_GROWLITHE,   $020,  $0c0
+ArcanineCryHeader:    cry_header CRY_WEEDLE,      $000,  $100
+PoliwagCryHeader:     cry_header CRY_PIDGEY,      $0ff,  $17f
+PoliwhirlCryHeader:   cry_header CRY_PIDGEY,      $077,  $0e0
+PoliwrathCryHeader:   cry_header CRY_PIDGEY,      $000,  $17f
+AbraCryHeader:        cry_header CRY_METAPOD,     $0c0,  $081
+KadabraCryHeader:     cry_header CRY_METAPOD,     $0a8,  $140
+AlakazamCryHeader:    cry_header CRY_METAPOD,     $098,  $17f
+MachopCryHeader:      cry_header CRY_GROWLITHE,   $0ee,  $081
+MachokeCryHeader:     cry_header CRY_GROWLITHE,   $048,  $0e0
+MachampCryHeader:     cry_header CRY_GROWLITHE,   $008,  $140
+BellsproutCryHeader:  cry_header CRY_PSYDUCK,     $055,  $081
+WeepinbellCryHeader:  cry_header CRY_WEEPINBELL,  $044,  $0a0
+VictreebelCryHeader:  cry_header CRY_WEEPINBELL,  $066,  $14c
+TentacoolCryHeader:   cry_header CRY_VENONAT,     $000,  $100
+TentacruelCryHeader:  cry_header CRY_VENONAT,     $0ee,  $17f
+GeodudeCryHeader:     cry_header CRY_VULPIX,      $0f0,  $090
+GravelerCryHeader:    cry_header CRY_VULPIX,      $000,  $100
+GolemCryHeader:       cry_header CRY_GOLEM,       $0e0,  $0c0
+PonytaCryHeader:      cry_header CRY_WEEPINBELL,  $000,  $100
+RapidashCryHeader:    cry_header CRY_WEEPINBELL,  $020,  $140
+SlowpokeCryHeader:    cry_header CRY_SLOWPOKE,    $000,  $100
+SlowbroCryHeader:     cry_header CRY_GROWLITHE,   $000,  $100
+MagnemiteCryHeader:   cry_header CRY_METAPOD,     $080,  $0e0
+MagnetonCryHeader:    cry_header CRY_METAPOD,     $020,  $140
+FarfetchDCryHeader:   cry_header CRY_SPEAROW,     $0dd,  $081
+DoduoCryHeader:       cry_header CRY_DIGLETT,     $0bb,  $081
+DodrioCryHeader:      cry_header CRY_DIGLETT,     $099,  $0a0
+SeelCryHeader:        cry_header CRY_SEEL,        $088,  $140
+DewgongCryHeader:     cry_header CRY_SEEL,        $023,  $17f
+GrimerCryHeader:      cry_header CRY_GRIMER,      $000,  $100
+MukCryHeader:         cry_header CRY_MUK,         $0ef,  $17f
+ShellderCryHeader:    cry_header CRY_FEAROW,      $000,  $100
+CloysterCryHeader:    cry_header CRY_FEAROW,      $06f,  $160
+GastlyCryHeader:      cry_header CRY_METAPOD,     $000,  $100
+HaunterCryHeader:     cry_header CRY_METAPOD,     $030,  $0c0
+GengarCryHeader:      cry_header CRY_MUK,         $000,  $17f
+OnixCryHeader:        cry_header CRY_EKANS,       $0ff,  $140
+DrowzeeCryHeader:     cry_header CRY_DROWZEE,     $088,  $0a0
+HypnoCryHeader:       cry_header CRY_DROWZEE,     $0ee,  $0c0
+KrabbyCryHeader:      cry_header CRY_KRABBY,      $020,  $160
+KinglerCryHeader:     cry_header CRY_KRABBY,      $0ee,  $160
+VoltorbCryHeader:     cry_header CRY_VOLTORB,     $0ed,  $100
+ElectrodeCryHeader:   cry_header CRY_VOLTORB,     $0a8,  $110
+ExeggcuteCryHeader:   cry_header CRY_DIGLETT,     $000,  $100
+ExeggutorCryHeader:   cry_header CRY_DROWZEE,     $000,  $100
+CuboneCryHeader:      cry_header CRY_CLEFAIRY,    $000,  $100
+MarowakCryHeader:     cry_header CRY_ODDISH,      $04f,  $0e0
+HitmonleeCryHeader:   cry_header CRY_GOLEM,       $080,  $140
+HitmonchanCryHeader:  cry_header CRY_SEEL,        $0ee,  $140
+LickitungCryHeader:   cry_header CRY_SEEL,        $000,  $100
+KoffingCryHeader:     cry_header CRY_GOLEM,       $0e6,  $15d
+WeezingCryHeader:     cry_header CRY_GOLEM,       $0ff,  $17f
+RhyhornCryHeader:     cry_header CRY_CHARMANDER,  $000,  $100
+RhydonCryHeader:      cry_header CRY_RHYDON,      $000,  $100
+ChanseyCryHeader:     cry_header CRY_PIDGEOTTO,   $00a,  $140
+TangelaCryHeader:     cry_header CRY_GOLEM,       $000,  $100
+KangaskhanCryHeader:  cry_header CRY_KANGASKHAN,  $000,  $100
+HorseaCryHeader:      cry_header CRY_CLEFAIRY,    $099,  $090
+SeadraCryHeader:      cry_header CRY_CLEFAIRY,    $03c,  $081
+GoldeenCryHeader:     cry_header CRY_CATERPIE,    $080,  $0c0
+SeakingCryHeader:     cry_header CRY_CATERPIE,    $010,  $17f
+StaryuCryHeader:      cry_header CRY_PARAS,       $002,  $0a0
+StarmieCryHeader:     cry_header CRY_PARAS,       $000,  $100
+MrMimeCryHeader:      cry_header CRY_KRABBY,      $008,  $0c0
+ScytherCryHeader:     cry_header CRY_CATERPIE,    $000,  $100
+JynxCryHeader:        cry_header CRY_DROWZEE,     $0ff,  $17f
+ElectabuzzCryHeader:  cry_header CRY_VOLTORB,     $08f,  $17f
+MagmarCryHeader:      cry_header CRY_CHARMANDER,  $0ff,  $0b0
+PinsirCryHeader:      cry_header CRY_PIDGEOTTO,   $000,  $100
+TaurosCryHeader:      cry_header CRY_SQUIRTLE,    $011,  $0c0
+MagikarpCryHeader:    cry_header CRY_EKANS,       $080,  $080
+GyaradosCryHeader:    cry_header CRY_EKANS,       $000,  $100
+LaprasCryHeader:      cry_header CRY_LAPRAS,      $000,  $100
+DittoCryHeader:       cry_header CRY_PIDGEY,      $0ff,  $17f
+EeveeCryHeader:       cry_header CRY_VENONAT,     $088,  $0e0
+VaporeonCryHeader:    cry_header CRY_VENONAT,     $0aa,  $17f
+JolteonCryHeader:     cry_header CRY_VENONAT,     $03d,  $100
+FlareonCryHeader:     cry_header CRY_VENONAT,     $010,  $0a0
+PorygonCryHeader:     cry_header CRY_WEEPINBELL,  $0aa,  $17f
+OmanyteCryHeader:     cry_header CRY_GROWLITHE,   $0f0,  $081
+OmastarCryHeader:     cry_header CRY_GROWLITHE,   $0ff,  $0c0
+KabutoCryHeader:      cry_header CRY_CATERPIE,    $0bb,  $0c0
+KabutopsCryHeader:    cry_header CRY_FEAROW,      $0ee,  $081
+AerodactylCryHeader:  cry_header CRY_VILEPLUME,   $020,  $170
+SnorlaxCryHeader:     cry_header CRY_GRIMER,      $055,  $081
+ArticunoCryHeader:    cry_header CRY_RAICHU,      $080,  $0c0
+ZapdosCryHeader:      cry_header CRY_FEAROW,      $0ff,  $100
+MoltresCryHeader:     cry_header CRY_RAICHU,      $0f8,  $0c0
+DratiniCryHeader:     cry_header CRY_BULBASAUR,   $060,  $0c0
+DragonairCryHeader:   cry_header CRY_BULBASAUR,   $040,  $100
+DragoniteCryHeader:   cry_header CRY_BULBASAUR,   $03c,  $140
+MewtwoCryHeader:      cry_header CRY_PARAS,       $099,  $17f
+MewCryHeader:         cry_header CRY_PARAS,       $0ee,  $17f
+ChikoritaCryHeader:   cry_header CRY_CHIKORITA,  -$010,  $0b0
+BayleefCryHeader:     cry_header CRY_CHIKORITA,  -$022,  $120
+MeganiumCryHeader:    cry_header CRY_CHIKORITA,  -$0b7,  $200
+CyndaquilCryHeader:   cry_header CRY_CYNDAQUIL,   $347,  $080
+QuilavaCryHeader:     cry_header CRY_CYNDAQUIL,   $321,  $120
+TyphlosionCryHeader:  cry_header CRY_TYPHLOSION,  $f00,  $0d4
+TotodileCryHeader:    cry_header CRY_TOTODILE,    $46c,  $0e8
+CroconawCryHeader:    cry_header CRY_TOTODILE,    $440,  $110
+FeraligatrCryHeader:  cry_header CRY_TOTODILE,    $3fc,  $180
+SentretCryHeader:     cry_header CRY_SENTRET,     $08a,  $0b8
+FurretCryHeader:      cry_header CRY_SENTRET,     $06b,  $102
+HoothootCryHeader:    cry_header CRY_HOOTHOOT,    $091,  $0d8
+NoctowlCryHeader:     cry_header CRY_HOOTHOOT,    $000,  $1a0
+LedybaCryHeader:      cry_header CRY_LEDYBA,      $000,  $0de
+LedianCryHeader:      cry_header CRY_LEDYBA,     -$096,  $138
+SpinarakCryHeader:    cry_header CRY_SPINARAK,    $011,  $200
+AriadosCryHeader:     cry_header CRY_SPINARAK,   -$0ae,  $1e2
+CrobatCryHeader:      cry_header CRY_SQUIRTLE,   -$010,  $140
+ChinchouCryHeader:    cry_header CRY_CYNDAQUIL,   $3c9,  $140
+LanturnCryHeader:     cry_header CRY_CYNDAQUIL,   $2d0,  $110
+PichuCryHeader:       cry_header CRY_PICHU,       $000,  $140
+CleffaCryHeader:      cry_header CRY_CLEFFA,      $061,  $091
+IgglybuffCryHeader:   cry_header CRY_CHIKORITA,   $0e8,  $0e8
+TogepiCryHeader:      cry_header CRY_TOGEPI,      $010,  $100
+TogeticCryHeader:     cry_header CRY_TOGETIC,     $03b,  $038
+NatuCryHeader:        cry_header CRY_NATU,       -$067,  $100
+XatuCryHeader:        cry_header CRY_NATU,       -$0a7,  $168
+MareepCryHeader:      cry_header CRY_MAREEP,      $022,  $0d8
+FlaaffyCryHeader:     cry_header CRY_MAREEP,     -$007,  $180
+AmpharosCryHeader:    cry_header CRY_AMPHAROS,   -$07c,  $0e8
+BellossomCryHeader:   cry_header CRY_CLEFFA,      $084,  $150
+MarillCryHeader:      cry_header CRY_MARILL,      $11b,  $120
+AzumarillCryHeader:   cry_header CRY_MARILL,      $0b6,  $180
+SudowoodoCryHeader:   cry_header CRY_CLEFFA,      $f40,  $180
+PolitoedCryHeader:    cry_header CRY_CLEFFA,     -$2a3,  $1c8
+HoppipCryHeader:      cry_header CRY_CLEFFA,      $03b,  $0c8
+SkiploomCryHeader:    cry_header CRY_CLEFFA,      $027,  $138
+JumpluffCryHeader:    cry_header CRY_CLEFFA,      $000,  $180
+AipomCryHeader:       cry_header CRY_AIPOM,      -$051,  $0e8
+SunkernCryHeader:     cry_header CRY_MARILL,      $12b,  $0b8
+SunfloraCryHeader:    cry_header CRY_SUNFLORA,   -$020,  $180
+YanmaCryHeader:       cry_header CRY_TOTODILE,    $031,  $0c8
+WooperCryHeader:      cry_header CRY_WOOPER,      $093,  $0af
+QuagsireCryHeader:    cry_header CRY_WOOPER,     -$0c6,  $140
+EspeonCryHeader:      cry_header CRY_AIPOM,       $0a2,  $140
+UmbreonCryHeader:     cry_header CRY_VENONAT,    -$0e9,  $0f0
+MurkrowCryHeader:     cry_header CRY_MARILL,     -$01f,  $180
+SlowkingCryHeader:    cry_header CRY_SLOWKING,    $104,  $200
+MisdreavusCryHeader:  cry_header CRY_HOOTHOOT,    $130,  $0e8
+UnownCryHeader:       cry_header CRY_HOOTHOOT,    $162,  $100
+WobbuffetCryHeader:   cry_header CRY_AMPHAROS,    $27b,  $144
+GirafarigCryHeader:   cry_header CRY_GIRAFARIG,   $041,  $200
+PinecoCryHeader:      cry_header CRY_SLOWKING,    $080,  $100
+ForretressCryHeader:  cry_header CRY_SLOWKING,    $000,  $180
+DunsparceCryHeader:   cry_header CRY_DUNSPARCE,   $1c4,  $100
+GligarCryHeader:      cry_header CRY_GLIGAR,     -$102,  $100
+SteelixCryHeader:     cry_header CRY_TYPHLOSION,  $0ef,  $0f7
+SnubbullCryHeader:    cry_header CRY_DUNSPARCE,   $112,  $0e8
+GranbullCryHeader:    cry_header CRY_DUNSPARCE,   $000,  $180
+QwilfishCryHeader:    cry_header CRY_SLOWKING,    $160,  $0e0
+ScizorCryHeader:      cry_header CRY_AMPHAROS,    $000,  $160
+ShuckleCryHeader:     cry_header CRY_DUNSPARCE,   $290,  $0a8
+HeracrossCryHeader:   cry_header CRY_AMPHAROS,    $035,  $0e0
+SneaselCryHeader:     cry_header CRY_WOOPER,      $053,  $0af
+TeddiursaCryHeader:   cry_header CRY_TEDDIURSA,   $7a2,  $06e
+UrsaringCryHeader:    cry_header CRY_TEDDIURSA,   $640,  $0d8
+SlugmaCryHeader:      cry_header CRY_SLUGMA,     -$1d8,  $140
+MagcargoCryHeader:    cry_header CRY_MAGCARGO,   -$20d,  $1c0
+SwinubCryHeader:      cry_header CRY_CYNDAQUIL,   $1fe,  $140
+PiloswineCryHeader:   cry_header CRY_MAGCARGO,   -$109,  $100
+CorsolaCryHeader:     cry_header CRY_MAGCARGO,    $0a1,  $0e8
+RemoraidCryHeader:    cry_header CRY_SUNFLORA,    $00d,  $100
+OctilleryCryHeader:   cry_header CRY_TOTODILE,    $000,  $180
+DelibirdCryHeader:    cry_header CRY_TEDDIURSA,   $002,  $06a
+MantineCryHeader:     cry_header CRY_MANTINE,    -$0be,  $0f0
+SkarmoryCryHeader:    cry_header CRY_AMPHAROS,    $8a9,  $180
+HoundourCryHeader:    cry_header CRY_CYNDAQUIL,   $039,  $140
+HoundoomCryHeader:    cry_header CRY_TOTODILE,   -$10a,  $100
+KingdraCryHeader:     cry_header CRY_SLUGMA,      $2fb,  $100
+PhanpyCryHeader:      cry_header CRY_SENTRET,     $048,  $230
+DonphanCryHeader:     cry_header CRY_DONPHAN,     $000,  $1a0
+Porygon2CryHeader:    cry_header CRY_GIRAFARIG,   $073,  $240
+StantlerCryHeader:    cry_header CRY_AIPOM,      -$160,  $180
+SmeargleCryHeader:    cry_header CRY_PICHU,      -$21a,  $1f0
+TyrogueCryHeader:     cry_header CRY_AIPOM,       $02c,  $108
+HitmontopCryHeader:   cry_header CRY_SLUGMA,      $000,  $100
+SmoochumCryHeader:    cry_header CRY_MARILL,      $068,  $100
+ElekidCryHeader:      cry_header CRY_SUNFLORA,   -$2d8,  $0b4
+MagbyCryHeader:       cry_header CRY_TEDDIURSA,   $176,  $03a
+MiltankCryHeader:     cry_header CRY_GLIGAR,     -$1cd,  $1a0
+BlisseyCryHeader:     cry_header CRY_SLOWKING,    $293,  $140
+RaikouCryHeader:      cry_header CRY_RAIKOU,      $22e,  $120
+EnteiCryHeader:       cry_header CRY_ENTEI,       $000,  $1a0
+SuicuneCryHeader:     cry_header CRY_MAGCARGO,    $000,  $180
+LarvitarCryHeader:    cry_header CRY_RAIKOU,      $05f,  $0d0
+PupitarCryHeader:     cry_header CRY_SPINARAK,   -$1db,  $150
+TyranitarCryHeader:   cry_header CRY_RAIKOU,     -$100,  $180
+LugiaCryHeader:       cry_header CRY_TYPHLOSION,  $000,  $100
+HoOhCryHeader:        cry_header CRY_AIPOM,       $000,  $180
+CelebiCryHeader:      cry_header CRY_ENTEI,       $14a,  $111
+CryHeader252:         cry_header CRY_NIDORAN_M,      0,     0
+CryHeader253:         cry_header CRY_NIDORAN_M,      0,     0
+CryHeader254:         cry_header CRY_NIDORAN_M,      0,     0
+CryHeader255:         cry_header CRY_NIDORAN_M,      0,     0
 ; f2d81
--- a/audio/cry_pointers.asm
+++ b/audio/cry_pointers.asm
@@ -1,70 +1,70 @@
 ; e91b0
-	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
+	dba Cry_Nidoran_M
+	dba Cry_Nidoran_F
+	dba Cry_Slowpoke
+	dba Cry_Kangaskhan
+	dba Cry_Charmander
+	dba Cry_Grimer
+	dba Cry_Voltorb
+	dba Cry_Muk
+	dba Cry_Oddish
+	dba Cry_Raichu
+	dba Cry_Nidoqueen
+	dba Cry_Diglett
+	dba Cry_Seel
+	dba Cry_Drowzee
+	dba Cry_Pidgey
+	dba Cry_Bulbasaur
+	dba Cry_Spearow
+	dba Cry_Rhydon
+	dba Cry_Golem
+	dba Cry_Blastoise
+	dba Cry_Pidgeotto
+	dba Cry_Weedle
+	dba Cry_Caterpie
+	dba Cry_Ekans
+	dba Cry_Fearow
+	dba Cry_Clefairy
+	dba Cry_Venonat
+	dba Cry_Lapras
+	dba Cry_Metapod
+	dba Cry_Squirtle
+	dba Cry_Paras
+	dba Cry_Growlithe
+	dba Cry_Krabby
+	dba Cry_Psyduck
+	dba Cry_Rattata
+	dba Cry_Vileplume
+	dba Cry_Vulpix
+	dba Cry_Weepinbell
+	dba Cry_Marill
+	dba Cry_Spinarak
+	dba Cry_Togepi
+	dba Cry_Girafarig
+	dba Cry_Raikou
+	dba Cry_Mareep
+	dba Cry_Togetic
+	dba Cry_Hoothoot
+	dba Cry_Sentret
+	dba Cry_Slowking
+	dba Cry_Cyndaquil
+	dba Cry_Chikorita
+	dba Cry_Totodile
+	dba Cry_Gligar
+	dba Cry_Cleffa
+	dba Cry_Slugma
+	dba Cry_Ledyba
+	dba Cry_Entei
+	dba Cry_Wooper
+	dba Cry_Mantine
+	dba Cry_Typhlosion
+	dba Cry_Natu
+	dba Cry_Teddiursa
+	dba Cry_Sunflora
+	dba Cry_Ampharos
+	dba Cry_Magcargo
+	dba Cry_Pichu
+	dba Cry_Aipom
+	dba Cry_Dunsparce
+	dba Cry_Donphan
 ; e927c
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -22,7 +22,7 @@
 	ld [hli], a ; ff26 ; music channels
 
 	ld hl, rNR10 ; sound channel registers
-	ld e, $04 ; number of channels
+	ld e, $4 ; number of channels
 .clearsound
 ;   sound channel   1      2      3      4
 	xor a
@@ -29,7 +29,7 @@
 	ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
 
 	ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
 	xor a
 	ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
@@ -39,7 +39,7 @@
 	jr nz, .clearsound
 
 	ld hl, Channel1 ; start of channel data
-	ld de, $01bf ; length of area to clear (entire sound wram area)
+	ld de, $1bf ; length of area to clear (entire sound wram area)
 .clearchannels ; clear Channel1-$c2bf
 	xor a
 	ld [hli], a
@@ -55,6 +55,7 @@
 	pop de
 	pop hl
 	ret
+
 ; e803d
 
 MusicFadeRestart: ; e803d
@@ -69,12 +70,14 @@
 	pop af
 	ld [MusicFadeIDHi], a
 	ret
+
 ; e8051
 
 MusicOn: ; e8051
-	ld a, $01
+	ld a, 1
 	ld [MusicPlaying], a
 	ret
+
 ; e8057
 
 MusicOff: ; e8057
@@ -81,6 +84,7 @@
 	xor a
 	ld [MusicPlaying], a
 	ret
+
 ; e805c
 
 _UpdateSound:: ; e805c
@@ -98,16 +102,17 @@
 	; is the channel active?
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jp z, .nextchannel
 	; check time left in the current note
 	ld hl, Channel1NoteDuration - Channel1
 	add hl, bc
 	ld a, [hl]
-	cp a, $02 ; 1 or 0?
+	cp $2 ; 1 or 0?
 	jr c, .noteover
 	dec [hl]
 	jr .asm_e8093
+
 .noteover
 	; reset vibrato delay
 	ld hl, Channel1VibratoDelay - Channel1
@@ -119,7 +124,7 @@
 	; turn vibrato off for now
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	res 1, [hl]
+	res SOUND_UNKN_09, [hl]
 	; get next note
 	call ParseMusic
 .asm_e8093
@@ -129,15 +134,15 @@
 	ld hl, Channel1DutyCycle - Channel1
 	add hl, bc
 	ld a, [hli]
-	ld [wc292], a
+	ld [wCurTrackDuty], a
 	; intensity
 	ld a, [hli]
-	ld [wc293], a
+	ld [wCurTrackIntensity], a
 	; frequency
 	ld a, [hli]
-	ld [wc294], a
+	ld [wCurTrackFrequency], a
 	ld a, [hl]
-	ld [wc295], a
+	ld [wCurTrackFrequency + 1], a
 	;
 	call Functione8466 ; handle vibrato and other things
 	call HandleNoise
@@ -147,34 +152,34 @@
 	jr z, .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp a, $04
+	cp $4
 	jr nc, .next
 	; are any sfx channels active?
 	; if so, mute
 	ld hl, Channel5Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .restnote
 	ld hl, Channel6Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .restnote
 	ld hl, Channel7Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .restnote
 	ld hl, Channel8Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr z, .next
 .restnote
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 5, [hl] ; Rest
+	set NOTE_REST, [hl] ; Rest
 .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp a, $04 ; sfx
+	cp $4 ; sfx
 	jr nc, .asm_e80ee
-	ld hl, $00cb
+	ld hl, Channel5Flags - Channel1
 	add hl, bc
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .asm_e80fc
 .asm_e80ee
 	call UpdateChannels
@@ -198,7 +203,7 @@
 	ld a, [CurChannel]
 	inc a
 	ld [CurChannel], a
-	cp a, $08 ; are we done?
+	cp $8 ; are we done?
 	jp nz, .loop ; do it all again
 
 	call PlayDanger
@@ -211,15 +216,16 @@
 	ld a, [SoundOutput]
 	ld [rNR51], a
 	ret
+
 ; e8125
 
 UpdateChannels: ; e8125
 	ld hl, .ChannelFnPtrs
 	ld a, [CurChannel]
-	and a, $07
+	and $7
 	add a
 	ld e, a
-	ld d, $00
+	ld d, 0
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -226,6 +232,7 @@
 	ld l, a
 	jp [hl]
 
+
 .ChannelFnPtrs
 	dw .Channel1
 	dw .Channel2
@@ -245,64 +252,68 @@
 .Channel5
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	bit 3, [hl]
+	bit NOTE_UNKN_3, [hl]
 	jr z, .asm_e8159
 	;
 	ld a, [SoundInput]
 	ld [rNR10], a
 .asm_e8159
-	bit 5, [hl] ; rest
+	bit NOTE_REST, [hl] ; rest
 	jr nz, .ch1rest
-	bit 4, [hl]
+	bit NOTE_UNKN_4, [hl]
 	jr nz, .asm_e81a2
-	bit 1, [hl]
+	bit NOTE_UNKN_1, [hl]
 	jr nz, .asm_e816b
-	bit 6, [hl]
+	bit NOTE_UNKN_6, [hl]
 	jr nz, .asm_e8184
 	jr .asm_e8175
+
 .asm_e816b
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR13], a
-	ld a, [wc295]
+	ld a, [wCurTrackFrequency + 1]
 	ld [rNR14], a
 .asm_e8175
-	bit 0, [hl]
+	bit NOTE_UNKN_0, [hl]
 	ret z
-	ld a, [wc292]
+	ld a, [wCurTrackDuty]
 	ld d, a
 	ld a, [rNR11]
-	and a, $3f ; sound length
+	and $3f ; sound length
 	or d
 	ld [rNR11], a
 	ret
+
 .asm_e8184
-	ld a, [wc292]
+	ld a, [wCurTrackDuty]
 	ld d, a
 	ld a, [rNR11]
-	and a, $3f ; sound length
+	and $3f ; sound length
 	or d
 	ld [rNR11], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR13], a
 	ret
+
 .ch1rest
 	ld a, [rNR52]
-	and a, %10001110 ; ch1 off
+	and %10001110 ; ch1 off
 	ld [rNR52], a
 	ld hl, rNR10
 	call ClearChannel
 	ret
+
 .asm_e81a2
-	ld hl, wc292
+	ld hl, wCurTrackDuty
 	ld a, $3f ; sound length
 	or [hl]
 	ld [rNR11], a
-	ld a, [wc293]
+	ld a, [wCurTrackIntensity]
 	ld [rNR12], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR13], a
-	ld a, [wc295]
-	or a, $80
+	ld a, [wCurTrackFrequency + 1]
+	or $80
 	ld [rNR14], a
 	ret
 
@@ -310,55 +321,59 @@
 .Channel6
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	bit 5, [hl] ; rest
+	bit NOTE_REST, [hl] ; rest
 	jr nz, .ch2rest
-	bit 4, [hl]
+	bit NOTE_UNKN_4, [hl]
 	jr nz, .asm_e8204
-	bit 6, [hl]
+	bit NOTE_UNKN_6, [hl]
 	jr nz, .asm_e81e6
-	bit 0, [hl]
+	bit NOTE_UNKN_0, [hl]
 	ret z
-	ld a, [wc292]
+	ld a, [wCurTrackDuty]
 	ld d, a
 	ld a, [rNR21]
-	and a, $3f ; sound length
+	and $3f ; sound length
 	or d
 	ld [rNR21], a
 	ret
+
 .asm_e81db ; unused
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR23], a
-	ld a, [wc295]
+	ld a, [wCurTrackFrequency + 1]
 	ld [rNR24], a
 	ret
+
 .asm_e81e6
-	ld a, [wc292]
+	ld a, [wCurTrackDuty]
 	ld d, a
 	ld a, [rNR21]
-	and a, $3f ; sound length
+	and $3f ; sound length
 	or d
 	ld [rNR21], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR23], a
 	ret
+
 .ch2rest
 	ld a, [rNR52]
-	and a, %10001101 ; ch2 off
+	and %10001101 ; ch2 off
 	ld [rNR52], a
 	ld hl, rNR20
 	call ClearChannel
 	ret
+
 .asm_e8204
-	ld hl, wc292
+	ld hl, wCurTrackDuty
 	ld a, $3f ; sound length
 	or [hl]
 	ld [rNR21], a
-	ld a, [wc293]
+	ld a, [wCurTrackIntensity]
 	ld [rNR22], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR23], a
-	ld a, [wc295]
-	or a, $80 ; initial (restart)
+	ld a, [wCurTrackFrequency + 1]
+	or $80 ; initial (restart)
 	ld [rNR24], a
 	ret
 
@@ -366,30 +381,34 @@
 .Channel7
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	bit 5, [hl] ; rest
+	bit NOTE_REST, [hl] ; rest
 	jr nz, .ch3rest
-	bit 4, [hl]
+	bit NOTE_UNKN_4, [hl]
 	jr nz, .asm_e824d
-	bit 6, [hl]
+	bit NOTE_UNKN_6, [hl]
 	jr nz, .asm_e823a
 	ret
+
 .asm_e822f ; unused
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR33], a
-	ld a, [wc295]
+	ld a, [wCurTrackFrequency + 1]
 	ld [rNR34], a
 	ret
+
 .asm_e823a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR33], a
 	ret
+
 .ch3rest
 	ld a, [rNR52]
-	and a, %10001011 ; ch3 off
+	and %10001011 ; ch3 off
 	ld [rNR52], a
 	ld hl, rNR30
 	call ClearChannel
 	ret
+
 .asm_e824d
 	ld a, $3f
 	ld [rNR31], a
@@ -398,20 +417,21 @@
 	call .asm_e8268
 	ld a, $80
 	ld [rNR30], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR33], a
-	ld a, [wc295]
-	or a, $80
+	ld a, [wCurTrackFrequency + 1]
+	or $80
 	ld [rNR34], a
 	ret
+
 .asm_e8268
 	push hl
-	ld a, [wc293]
-	and a, $0f ; only 0-9 are valid
+	ld a, [wCurTrackIntensity]
+	and $f ; only 0-9 are valid
 	ld l, a
-	ld h, $00
+	ld h, 0
 	; hl << 4
-	; each wavepattern is $0f bytes long
+	; each wavepattern is $f bytes long
 	; so seeking is done in $10s
 rept 4
 	add hl, hl
@@ -452,8 +472,8 @@
 	ld a, [hli]
 	ld [rWave_f], a
 	pop hl
-	ld a, [wc293]
-	and a, $f0
+	ld a, [wCurTrackIntensity]
+	and $f0
 	sla a
 	ld [rNR32], a
 	ret
@@ -462,53 +482,59 @@
 .Channel8
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	bit 5, [hl] ; rest
+	bit NOTE_REST, [hl] ; rest
 	jr nz, .ch4rest
-	bit 4, [hl]
+	bit NOTE_UNKN_4, [hl]
 	jr nz, .asm_e82d4
 	ret
+
 .asm_e82c1 ; unused
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR43], a
 	ret
+
 .ch4rest
 	ld a, [rNR52]
-	and a, %10000111 ; ch4 off
+	and %10000111 ; ch4 off
 	ld [rNR52], a
 	ld hl, rNR40
 	call ClearChannel
 	ret
+
 .asm_e82d4
 	ld a, $3f ; sound length
 	ld [rNR41], a
-	ld a, [wc293]
+	ld a, [wCurTrackIntensity]
 	ld [rNR42], a
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld [rNR43], a
 	ld a, $80
 	ld [rNR44], a
 	ret
+
 ; e82e7
 
 _CheckSFX: ; e82e7
 ; return carry if any sfx channels are active
 	ld hl, Channel5Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .sfxon
 	ld hl, Channel6Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .sfxon
 	ld hl, Channel7Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .sfxon
 	ld hl, Channel8Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .sfxon
 	and a
 	ret
+
 .sfxon
 	scf
 	ret
+
 ; e8307
 
 PlayDanger: ; e8307
@@ -515,18 +541,20 @@
 	ld a, [Danger]
 	bit 7, a
 	ret z
-	and a, $7f
+	and $7f
 	ld d, a
 	call _CheckSFX
 	jr c, .asm_e8335
 	and a
 	jr z, .asm_e8323
-	cp a, 16 ; halfway
+	cp 16 ; halfway
 	jr z, .asm_e831e
 	jr .asm_e8335
+
 .asm_e831e
 	ld hl, Tablee8354
 	jr .updatehw
+
 .asm_e8323
 	ld hl, Tablee8350
 .updatehw
@@ -543,26 +571,27 @@
 .asm_e8335
 	ld a, d
 	inc a
-	cp a, 30
+	cp 30
 	jr c, .asm_e833c
 	xor a
 .asm_e833c
-	or a, $80
+	or $80
 	ld [Danger], a
 	; is hw ch1 on?
 	ld a, [SoundOutput]
-	and a, $11
+	and $11
 	ret nz
 	; if not, turn it on
 	ld a, [SoundOutput]
-	or a, $11
+	or $11
 	ld [SoundOutput], a
 	ret
+
 ; e8350
 
 Tablee8350: ; e8350
 	db $80 ; duty 50%
-	db $e2 ; volume $e, envelope decrease sweep 2
+	db $e2 ; volume 14, envelope decrease sweep 2
 	db $50 ; frequency: $750
 	db $87 ; restart sound
 ; e8354
@@ -569,7 +598,7 @@
 
 Tablee8354: ; e8354
 	db $80 ; duty 50%
-	db $e2 ; volume $e, envelope decrease sweep 2
+	db $e2 ; volume 14, envelope decrease sweep 2
 	db $ee ; frequency: $6ee
 	db $86 ; restart sound
 ; e8358
@@ -596,15 +625,16 @@
 	dec a
 	ld [MusicFadeCount], a
 	ret
+
 .update
 	ld a, [MusicFade]
 	ld d, a
 	; get new count
-	and a, $3f
+	and $3f
 	ld [MusicFadeCount], a
 	; get SO1 volume
 	ld a, [Volume]
-	and a, $07
+	and $7
 	; which way are we fading?
 	bit 7, d
 	jr nz, .fadein
@@ -614,6 +644,7 @@
 	dec a
 	jr .updatevolume
 
+
 .novolume
 	; make sure volume is off
 	xor a
@@ -620,7 +651,7 @@
 	ld [Volume], a
 	; did we just get on a bike?
 	ld a, [PlayerState]
-	cp a, $01 ; bicycle
+	cp $1 ; bicycle
 	jr z, .bicycle
 	push bc
 	; restart sound
@@ -641,6 +672,7 @@
 	xor a
 	ld [MusicFade], a
 	ret
+
 .bicycle
 	push bc
 	; restart sound
@@ -664,16 +696,18 @@
 
 .fadein
 	; are we done?
-	cp a, $07
+	cp $7
 	jr nc, .maxvolume
 	; inc volume
 	inc a
 	jr .updatevolume
+
 .maxvolume
 	; we're done
 	xor a
 	ld [MusicFade], a
 	ret
+
 .updatevolume
 	; hi = lo
 	ld d, a
@@ -681,6 +715,7 @@
 	or d
 	ld [Volume], a
 	ret
+
 ; e83d1
 
 LoadNote: ; e83d1
@@ -687,7 +722,7 @@
 	; check mute??
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	bit 1, [hl]
+	bit SOUND_UNKN_09, [hl]
 	ret z
 	; get note duration
 	ld hl, Channel1NoteDuration - Channel1
@@ -696,7 +731,7 @@
 	ld hl, wc297 ; ????
 	sub [hl]
 	jr nc, .ok
-	ld a, $01
+	ld a, 1
 .ok
 	ld [hl], a
 	; get frequency
@@ -706,23 +741,23 @@
 	inc hl
 	ld d, [hl]
 	; ????
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld a, e
 	sub [hl]
 	ld e, a
 	ld a, d
-	sbc a, $00
+	sbc a, 0
 	ld d, a
 	; ????
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	sub [hl]
-	jr nc, .asm_e8420
+	jr nc, .greater_than
 	; ????
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	set 1, [hl]
+	set SOUND_UNKN_11, [hl]
 	; get frequency
 	ld hl, Channel1Frequency - Channel1
 	add hl, bc
@@ -730,26 +765,27 @@
 	inc hl
 	ld d, [hl]
 	; ????
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld a, [hl]
 	sub e
 	ld e, a
 	ld a, d
-	sbc a, $00
+	sbc a, 0
 	ld d, a
 	; ????
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	ld a, [hl]
 	sub d
 	ld d, a
-	jr .asm_e843e
-.asm_e8420
+	jr .resume
+
+.greater_than
 	; ????
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	res 1, [hl]
+	res SOUND_UNKN_11, [hl]
 	; get frequency
 	ld hl, Channel1Frequency - Channel1
 	add hl, bc
@@ -757,23 +793,23 @@
 	inc hl
 	ld d, [hl]
 	; ????
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld a, e
 	sub [hl]
 	ld e, a
 	ld a, d
-	sbc a, $00
+	sbc a, 0
 	ld d, a
 	; ????
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	sub [hl]
 	ld d, a
-.asm_e843e
+.resume
 	push bc
 	ld hl, wc297
-	ld b, $00 ; loop count
+	ld b, 0; loop count
 .loop
 	inc b
 	ld a, e
@@ -785,6 +821,7 @@
 	jr z, .quit
 	dec d
 	jr .loop
+
 .quit
 	ld a, e ; result
 	add [hl]
@@ -791,42 +828,43 @@
 	ld d, b ; loop count
 	; ????
 	pop bc
-	ld hl, $0023
+	ld hl, Channel1Field0x23 - Channel1
 	add hl, bc
 	ld [hl], d
-	ld hl, $0024
+	ld hl, Channel1Field0x24 - Channel1
 	add hl, bc
 	ld [hl], a
 	; clear ????
-	ld hl, $0025
+	ld hl, Channel1Field0x25 - Channel1
 	add hl, bc
 	xor a
 	ld [hl], a
 	ret
+
 ; e8466
 
 Functione8466: ; e8466
 ; handle vibrato and other things
-; unknowns: wc292, wc294
+; unknowns: wCurTrackDuty, wCurTrackFrequency
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	bit 2, [hl]
+	bit SOUND_DUTY, [hl] ; duty
 	jr z, .next
-	ld hl, $001c
+	ld hl, Channel1Field0x1c - Channel1
 	add hl, bc
 	ld a, [hl]
 	rlca
 	rlca
 	ld [hl], a
-	and a, $c0
-	ld [wc292], a
+	and $c0
+	ld [wCurTrackDuty], a
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 0, [hl]
+	set NOTE_UNKN_0, [hl]
 .next
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	bit 4, [hl]
+	bit SOUND_CRY_PITCH, [hl]
 	jr z, .vibrato
 	ld hl, Channel1CryPitch - Channel1
 	add hl, bc
@@ -833,7 +871,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wc294
+	ld hl, wCurTrackFrequency
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -840,7 +878,7 @@
 	add hl, de
 	ld e, l
 	ld d, h
-	ld hl, wc294
+	ld hl, wCurTrackFrequency
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -848,7 +886,7 @@
 	; is vibrato on?
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	bit 0, [hl] ; vibrato
+	bit SOUND_VIBRATO, [hl] ; vibrato
 	jr z, .quit
 	; is vibrato active for this note yet?
 	; is the delay over?
@@ -869,11 +907,12 @@
 	ld hl, Channel1VibratoRate - Channel1
 	add hl, bc
 	ld a, [hl]
-	and a, $0f ; count
+	and $f ; count
 	jr z, .toggle
 .subexit
 	dec [hl]
 	jr .quit
+
 .toggle
 	; refresh count
 	ld a, [hl]
@@ -881,32 +920,33 @@
 	or [hl]
 	ld [hl], a
 	; ????
-	ld a, [wc294]
+	ld a, [wCurTrackFrequency]
 	ld e, a
 	; toggle vibrato up/down
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	bit 0, [hl] ; vibrato up/down
+	bit SOUND_VIBRATO_DIR, [hl] ; vibrato up/down
 	jr z, .down
 ; up
 	; vibrato down
-	res 0, [hl]
+	res SOUND_VIBRATO_DIR, [hl]
 	; get the delay
 	ld a, d
-	and a, $0f ; lo
+	and $f ; lo
 	;
 	ld d, a
 	ld a, e
 	sub d
 	jr nc, .asm_e84ef
-	ld a, $00
+	ld a, 0
 	jr .asm_e84ef
+
 .down
 	; vibrato up
-	set 0, [hl]
+	set SOUND_VIBRATO_DIR, [hl]
 	; get the delay
 	ld a, d
-	and a, $f0 ; hi
+	and $f0 ; hi
 	swap a ; move it to lo
 	;
 	add e
@@ -913,13 +953,14 @@
 	jr nc, .asm_e84ef
 	ld a, $ff
 .asm_e84ef
-	ld [wc294], a
+	ld [wCurTrackFrequency], a
 	;
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 6, [hl]
+	set NOTE_UNKN_6, [hl]
 .quit
 	ret
+
 ; e84f9
 
 Functione84f9: ; e84f9
@@ -926,7 +967,7 @@
 	; quit if ????
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	bit 1, [hl]
+	bit SOUND_UNKN_09, [hl]
 	ret z
 	; de = Frequency
 	ld hl, Channel1Frequency - Channel1
@@ -937,72 +978,73 @@
 	;
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	bit 1, [hl]
+	bit SOUND_UNKN_11, [hl]
 	jr z, .next
 	;
-	ld hl, $0023
+	ld hl, Channel1Field0x23 - Channel1
 	add hl, bc
 	ld l, [hl]
-	ld h, $00
+	ld h, 0
 	add hl, de
 	ld d, h
 	ld e, l
 	; get ????
-	ld hl, $0024
+	ld hl, Channel1Field0x24 - Channel1
 	add hl, bc
 	ld a, [hl]
 	; add it to ????
-	ld hl, $0025
+	ld hl, Channel1Field0x25 - Channel1
 	add hl, bc
 	add [hl]
 	ld [hl], a
-	ld a, $00
+	ld a, 0
 	adc e
 	ld e, a
-	ld a, $00
+	ld a, 0
 	adc d
 	ld d, a
 	;
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	ld a, [hl]
 	cp d
 	jp c, .quit1
 	jr nz, .quit2
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld a, [hl]
 	cp e
 	jp c, .quit1
 	jr .quit2
+
 .next
 	ld a, e
-	ld hl, $0023
+	ld hl, Channel1Field0x23 - Channel1
 	add hl, bc
 	ld e, [hl]
 	sub e
 	ld e, a
 	ld a, d
-	sbc a, $00
+	sbc a, 0
 	ld d, a
-	ld hl, $0024
+	ld hl, Channel1Field0x24 - Channel1
 	add hl, bc
 	ld a, [hl]
 	add a
 	ld [hl], a
 	ld a, e
-	sbc a, $00
+	sbc a, 0
 	ld e, a
 	ld a, d
-	sbc a, $00
+	sbc a, 0
 	ld d,a
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	ld a, d
 	cp [hl]
 	jr c, .quit1
 	jr nz, .quit2
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld a, e
 	cp [hl]
@@ -1010,11 +1052,12 @@
 .quit1
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	res 1, [hl]
+	res SOUND_UNKN_09, [hl]
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	res 1, [hl]
+	res SOUND_UNKN_11, [hl]
 	ret
+
 .quit2
 	ld hl, Channel1Frequency - Channel1
 	add hl, bc
@@ -1023,9 +1066,10 @@
 	ld [hl], d
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 1, [hl]
-	set 0, [hl]
+	set NOTE_UNKN_1, [hl]
+	set NOTE_UNKN_0, [hl]
 	ret
+
 ; e858c
 
 HandleNoise: ; e858c
@@ -1032,7 +1076,7 @@
 	; is noise sampling on?
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 4, [hl] ; noise sampling
+	bit SOUND_NOISE, [hl] ; noise sampling
 	ret z
 	; are we in a sfx channel?
 	ld a, [CurChannel]
@@ -1040,19 +1084,20 @@
 	jr nz, .next
 	; is ch8 on? (noise)
 	ld hl, Channel8Flags
-	bit 0, [hl] ; on?
+	bit SOUND_CHANNEL_ON, [hl] ; on?
 	jr z, .next
 	; is ch8 playing noise?
-	bit 4, [hl]
+	bit SOUND_NOISE, [hl]
 	ret nz ; quit if so
 	;
 .next
-	ld a, [wc2a2]
+	ld a, [wNoiseSampleDelay]
 	and a
 	jr z, ReadNoiseSample
 	dec a
-	ld [wc2a2], a
+	ld [wNoiseSampleDelay], a
 	ret
+
 ; e85af
 
 ReadNoiseSample: ; e85af
@@ -1082,15 +1127,15 @@
 
 	and $f
 	inc a
-	ld [wc2a2], a
+	ld [wNoiseSampleDelay], a
 	ld a, [de]
 	inc de
-	ld [wc293], a
+	ld [wCurTrackIntensity], a
 	ld a, [de]
 	inc de
-	ld [wc294], a
+	ld [wCurTrackFrequency], a
 	xor a
-	ld [wc295], a
+	ld [wCurTrackFrequency + 1], a
 
 	ld hl, NoiseSampleAddress
 	ld [hl], e
@@ -1099,18 +1144,20 @@
 
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 4, [hl]
+	set NOTE_UNKN_4, [hl]
 	ret
+
 .quit
 	ret
+
 ; e85e1
 
 ParseMusic: ; e85e1
 ; parses until a note is read or the song is ended
 	call GetMusicByte ; store next byte in a
-	cp a, $ff ; is the song over?
-	jr z, .readff
-	cp a, $d0 ; is it a note?
+	cp $ff ; is the song over?
+	jr z, .endchannel
+	cp $d0 ; is it a note?
 	jr c, .readnote
 	; then it's a command
 .readcommand
@@ -1122,22 +1169,22 @@
 ; special notes
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 3, [hl]
+	bit SOUND_SFX, [hl]
 	jp nz, Functione8698
-	bit 5, [hl]
+	bit SOUND_REST, [hl] ; rest
 	jp nz, Functione8698
-	bit 4, [hl] ; noise sample
+	bit SOUND_NOISE, [hl] ; noise sample
 	jp nz, GetNoiseSample
 ; normal note
 	; set note duration (bottom nybble)
 	ld a, [CurMusicByte]
-	and a, $0f
+	and $f
 	call SetNoteDuration
 	; get note pitch (top nybble)
 	ld a, [CurMusicByte]
 	swap a
-	and a, $0f
-	jr z, .rest ; pitch $0 -> rest
+	and $f
+	jr z, .rest ; pitch 0-> rest
 	; update pitch
 	ld hl, Channel1Pitch - Channel1
 	add hl, bc
@@ -1158,37 +1205,41 @@
 	; ????
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 4, [hl]
+	set NOTE_UNKN_4, [hl]
 	jp LoadNote
+
+
+
 .rest
 ; note = rest
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 5, [hl] ; Rest
+	set NOTE_REST, [hl] ; Rest
 	ret
+
 ;
-.readff
+.endchannel
 ; $ff is reached in music data
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 1, [hl] ; in a subroutine?
+	bit SOUND_SUBROUTINE, [hl] ; in a subroutine?
 	jr nz, .readcommand ; execute
 	ld a, [CurChannel]
-	cp a, $04 ; channels 0-3?
-	jr nc, .asm_e8651
+	cp $4 ; channels 0-3?
+	jr nc, .chan_5to8
 	; ????
-	ld hl, $00cb
+	ld hl, Channel5Flags - Channel1
 	add hl, bc
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr nz, .ok
-.asm_e8651
+.chan_5to8
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 5, [hl]
+	bit SOUND_REST, [hl]
 	call nz, RestoreVolume
 	; end music
 	ld a, [CurChannel]
-	cp a, $04 ; channel 5?
+	cp $4 ; channel 5?
 	jr nz, .ok
 	; ????
 	xor a
@@ -1198,11 +1249,11 @@
 	; turn channel off
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	res 0, [hl]
+	res SOUND_CHANNEL_ON, [hl]
 	; note = rest
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 5, [hl]
+	set NOTE_REST, [hl]
 	; clear music id & bank
 	ld hl, Channel1MusicID - Channel1
 	add hl, bc
@@ -1211,12 +1262,13 @@
 	ld [hli], a ; id lo
 	ld [hli], a ; bank
 	ret
+
 ; e8679
 
 RestoreVolume: ; e8679
 	; ch5 only
 	ld a, [CurChannel]
-	cp a, $04
+	cp $4
 	ret nz
 	xor a
 	ld hl, Channel6CryPitch
@@ -1231,6 +1283,7 @@
 	ld [LastVolume], a
 	ld [SFXPriority], a
 	ret
+
 ; e8698
 
 Functione8698: ; e8698
@@ -1237,7 +1290,7 @@
 	; turn noise sampling on
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 4, [hl] ; noise sample
+	set NOTE_UNKN_4, [hl] ; noise sample
 	; update note duration
 	ld a, [CurMusicByte]
 	call SetNoteDuration ; top nybble doesnt matter?
@@ -1253,8 +1306,8 @@
 	ld [hl], a
 	; are we on the last channel? (noise sampling)
 	ld a, [CurChannel]
-	and a, $03
-	cp a, $03
+	and $3
+	cp $3
 	ret z
 	; update hi frequency from next param
 	call GetMusicByte
@@ -1262,6 +1315,7 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e86c5
 
 GetNoiseSample: ; e86c5
@@ -1268,13 +1322,13 @@
 ; load ptr to sample header in NoiseSampleAddress
 	; are we on the last channel?
 	ld a, [CurChannel]
-	and a, $03
-	cp a, $03
+	and $3
+	cp $3
 	; ret if not
 	ret nz
 	; update note duration
 	ld a, [CurMusicByte]
-	and a, $0f
+	and $f
 	call SetNoteDuration
 	; check current channel
 	ld a, [CurChannel]
@@ -1281,16 +1335,17 @@
 	bit 2, a ; are we in a sfx channel?
 	jr nz, .sfx
 	ld hl, Channel8Flags
-	bit 0, [hl] ; is ch8 on? (noise)
+	bit SOUND_CHANNEL_ON, [hl] ; is ch8 on? (noise)
 	ret nz
 	ld a, [MusicNoiseSampleSet]
 	jr .next
+
 .sfx
 	ld a, [SFXNoiseSampleSet]
 .next
 	; load noise sample set id into de
 	ld e, a
-	ld d, $00
+	ld d, 0
 	; load ptr to noise sample set in hl
 	ld hl, Drumkits
 rept 2
@@ -1303,11 +1358,11 @@
 	ld a, [CurMusicByte]
 	swap a
 	; non-rest note?
-	and a, $0f
+	and $f
 	ret z
 	; use 'pitch' to seek noise sample set
 	ld e, a
-	ld d, $00
+	ld d, 0
 rept 2
 	add hl, de
 endr
@@ -1318,8 +1373,9 @@
 	ld [NoiseSampleAddressHi], a
 	; clear ????
 	xor a
-	ld [wc2a2], a
+	ld [wNoiseSampleDelay], a
 	ret
+
 ; e870f
 
 ParseMusicCommand: ; e870f
@@ -1328,7 +1384,7 @@
 	; get command #
 	sub a, $d0 ; first command
 	ld e, a
-	ld d, $00
+	ld d, 0
 	; seek command pointer
 	ld hl, MusicCommands
 rept 2
@@ -1339,44 +1395,45 @@
 	ld h, [hl]
 	ld l, a
 	jp [hl]
+
 ; e8720
 
 MusicCommands: ; e8720
 ; pointer to each command in order
 	; octaves
-	dw MusicD0 ; octave 8
-	dw MusicD1 ; octave 7
-	dw MusicD2 ; octave 6
-	dw MusicD3 ; octave 5
-	dw MusicD4 ; octave 4
-	dw MusicD5 ; octave 3
-	dw MusicD6 ; octave 2
-	dw MusicD7 ; octave 1
-	dw MusicD8 ; note length + intensity
-	dw MusicD9 ; set starting octave
-	dw MusicDA ; tempo
-	dw MusicDB ; duty cycle
-	dw MusicDC ; intensity
-	dw MusicDD ; update sound status
+	dw Music_Octave8 ; octave 8
+	dw Music_Octave7 ; octave 7
+	dw Music_Octave6 ; octave 6
+	dw Music_Octave5 ; octave 5
+	dw Music_Octave4 ; octave 4
+	dw Music_Octave3 ; octave 3
+	dw Music_Octave2 ; octave 2
+	dw Music_Octave1 ; octave 1
+	dw Music_NoteType ; note length + intensity
+	dw Music_ForceOctave ; set starting octave
+	dw Music_Tempo ; tempo
+	dw Music_DutyCycle ; duty cycle
+	dw Music_Intensity ; intensity
+	dw Music_SoundStatus ; update sound status
 	dw MusicDE ; ???? + duty cycle
-	dw MusicDF ;
+	dw Music_ToggleSFX ;
 	dw MusicE0 ;
-	dw MusicE1 ; vibrato
-	dw MusicE2 ;
-	dw MusicE3 ; music noise sampling
-	dw MusicE4 ; force panning
-	dw MusicE5 ; volume
-	dw MusicE6 ; tune
-	dw MusicE7 ;
-	dw MusicE8 ;
-	dw MusicE9 ; global tempo
-	dw MusicEA ; restart current channel from header
-	dw MusicEB ; new song
-	dw MusicEC ; sfx priority on
-	dw MusicED ; sfx priority off
-	dw MusicEE ;
-	dw MusicEF ; stereo panning
-	dw MusicF0 ; sfx noise sampling
+	dw Music_Vibrato ; vibrato
+	dw MusicE2 ; unused
+	dw Music_ToggleNoise ; music noise sampling
+	dw Music_Panning ; force panning
+	dw Music_Volume ; volume
+	dw Music_Tone ; tune
+	dw MusicE7 ; unused
+	dw MusicE8 ; unused
+	dw Music_TempoRelative ; global tempo
+	dw Music_RestartChannel ; restart current channel from header
+	dw Music_NewSong ; new song
+	dw Music_SFXPriorityOn ; sfx priority on
+	dw Music_SFXPriorityOff ; sfx priority off
+	dw MusicEE ; unused
+	dw Music_StereoPanning ; stereo panning
+	dw Music_SFXToggleNoise ; sfx noise sampling
 	dw MusicF1 ; nothing
 	dw MusicF2 ; nothing
 	dw MusicF3 ; nothing
@@ -1385,13 +1442,13 @@
 	dw MusicF6 ; nothing
 	dw MusicF7 ; nothing
 	dw MusicF8 ; nothing
-	dw MusicF9 ;
-	dw MusicFA ;
-	dw MusicFB ;
-	dw MusicFC ; jump
-	dw MusicFD ; loop
-	dw MusicFE ; call
-	dw MusicFF ; return
+	dw MusicF9 ; unused
+	dw Music_SetCondition ;
+	dw Music_JumpIf ;
+	dw Music_JumpChannel ; jump
+	dw Music_LoopChannel ; loop
+	dw Music_CallChannel ; call
+	dw Music_EndChannel ; return
 ; e8780
 
 MusicF1: ; e8780
@@ -1403,9 +1460,10 @@
 MusicF7: ; e8780
 MusicF8: ; e8780
 	ret
+
 ; e8781
 
-MusicFF: ; e8781
+Music_EndChannel: ; e8781
 ; called when $ff is encountered w/ subroutine flag set
 ; end music stream
 ; return to caller of the subroutine
@@ -1412,7 +1470,7 @@
 	; reset subroutine flag
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	res 1, [hl]
+	res SOUND_SUBROUTINE, [hl]
 	; copy LastMusicAddress to MusicAddress
 	ld hl, Channel1LastMusicAddress - Channel1
 	add hl, bc
@@ -1425,9 +1483,10 @@
 	inc hl
 	ld [hl], d
 	ret
+
 ; e8796
 
-MusicFE: ; e8796
+Music_CallChannel: ; e8796
 ; call music stream (subroutine)
 ; parameters: ll hh ; pointer to subroutine
 	; get pointer from next 2 bytes
@@ -1457,11 +1516,12 @@
 	; set subroutine flag
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 1, [hl]
+	set SOUND_SUBROUTINE, [hl]
 	ret
+
 ; e87bc
 
-MusicFC: ; e87bc
+Music_JumpChannel: ; e87bc
 ; jump
 ; parameters: ll hh ; pointer
 	; get pointer from next 2 bytes
@@ -1475,9 +1535,10 @@
 	inc hl
 	ld [hl], d
 	ret
+
 ; e87cc
 
-MusicFD: ; e87cc
+Music_LoopChannel: ; e87cc
 ; loops xx - 1 times
 ; 	00: infinite
 ; params: 3
@@ -1489,13 +1550,13 @@
 	call GetMusicByte
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 2, [hl] ; has the loop been initiated?
+	bit SOUND_LOOPING, [hl] ; has the loop been initiated?
 	jr nz, .checkloop
 	and a ; loop counter 0 = infinite
 	jr z, .loop
 	; initiate loop
 	dec a
-	set 2, [hl] ; set loop flag
+	set SOUND_LOOPING, [hl] ; set loop flag
 	ld hl, Channel1LoopCount - Channel1
 	add hl, bc
 	ld [hl], a ; store loop counter
@@ -1524,7 +1585,7 @@
 	; reset loop flag
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	res 2, [hl]
+	res SOUND_LOOPING, [hl]
 	; skip to next command
 	ld hl, Channel1MusicAddress - Channel1
 	add hl, bc
@@ -1537,9 +1598,10 @@
 	dec hl
 	ld [hl], e
 	ret
+
 ; e880e
 
-MusicFA: ; e880e
+Music_SetCondition: ; e880e
 ; set condition for a jump
 ; used with FB
 ; params: 1
@@ -1551,9 +1613,10 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e8817
 
-MusicFB: ; e8817
+Music_JumpIf: ; e8817
 ; conditional jump
 ; used with FA
 ; params: 3
@@ -1584,6 +1647,7 @@
 	dec hl
 	ld [hl], e
 	ret
+
 .jump
 ; jump to the new address
 	; get pointer
@@ -1598,6 +1662,7 @@
 	inc hl
 	ld [hl], d
 	ret
+
 ; e883e
 
 MusicEE; e883e
@@ -1610,11 +1675,11 @@
 ; if ????, jump
 	; get channel
 	ld a, [CurChannel]
-	and a, $03 ; ch0-3
+	and $3 ; ch0-3
 	ld e, a
-	ld d, $00
-	; hl = wc2b8 + channel id
-	ld hl, wc2b8
+	ld d, 0
+	; hl = Channel1JumpCondition + channel id
+	ld hl, Channel1JumpCondition
 	add hl, de
 	; if set, jump
 	ld a, [hl]
@@ -1636,9 +1701,10 @@
 	dec hl
 	ld [hl], e
 	ret
+
 .jump
 	; reset jump flag
-	ld [hl], $00
+	ld [hl], 0
 	; de = pointer
 	call GetMusicByte
 	ld e, a
@@ -1651,6 +1717,7 @@
 	inc hl
 	ld [hl], d
 	ret
+
 ; e886d
 
 MusicF9: ; e886d
@@ -1657,9 +1724,10 @@
 ; sets some flag
 ; seems to be unused
 ; params: 0
-	ld a, $01
+	ld a, 1
 	ld [wc2b5], a
 	ret
+
 ; e8873
 
 MusicE2: ; e8873
@@ -1666,16 +1734,17 @@
 ; seems to have been dummied out
 ; params: 1
 	call GetMusicByte
-	ld hl, $002c
+	ld hl, Channel1Field0x2c - Channel1
 	add hl, bc
 	ld [hl], a
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 3, [hl]
+	set SOUND_UNKN_0B, [hl]
 	ret
+
 ; e8882
 
-MusicE1: ; e8882
+Music_Vibrato: ; e8882
 ; vibrato
 ; params: 2
 ;	1: [xx]
@@ -1687,11 +1756,11 @@
 	; set vibrato flag?
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 0, [hl]
+	set SOUND_VIBRATO, [hl]
 	; start at lower frequency (extent is positive)
 	ld hl, Channel1Flags3 - Channel1
 	add hl, bc
-	res 0, [hl]
+	res SOUND_VIBRATO_DIR, [hl]
 	; get delay
 	call GetMusicByte
 ; update delay
@@ -1710,11 +1779,11 @@
 	add hl, bc
 	ld d, a
 	; get top nybble
-	and a, $f0
+	and $f0
 	swap a
 	srl a ; halve
 	ld e, a
-	adc a, $00 ; round up
+	adc a, 0; round up
 	swap a
 	or e
 	ld [hl], a
@@ -1723,12 +1792,13 @@
 	add hl, bc
 	; get bottom nybble
 	ld a, d
-	and a, $0f
+	and $f
 	ld d, a
 	swap a
 	or d
 	ld [hl], a
 	ret
+
 ; e88bd
 
 MusicE0: ; e88bd
@@ -1736,33 +1806,36 @@
 ; params: 2
 	call GetMusicByte
 	ld [wc297], a
+
 	call GetMusicByte
 	ld d, a
-	and a, $0f
+	and $f
 	ld e, a
+
 	ld a, d
 	swap a
-	and a, $0f
+	and $f
 	ld d, a
 	call GetFrequency
-	ld hl, $0021
+	ld hl, Channel1Field0x21 - Channel1
 	add hl, bc
 	ld [hl], e
-	ld hl, $0022
+	ld hl, Channel1Field0x22 - Channel1
 	add hl, bc
 	ld [hl], d
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 1, [hl]
+	set SOUND_UNKN_09, [hl]
 	ret
+
 ; e88e4
 
-MusicE6: ; e88e4
+Music_Tone: ; e88e4
 ; tone
 ; params: 2
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 4, [hl]
+	set SOUND_CRY_PITCH, [hl]
 	ld hl, Channel1CryPitch + 1 - Channel1
 	add hl, bc
 	call GetMusicByte
@@ -1770,19 +1843,21 @@
 	call GetMusicByte
 	ld [hl], a
 	ret
+
 ; e88f7
 
 MusicE7: ; e88f7
-; shrug
+; unused
 ; params: 1
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 6, [hl]
+	set SOUND_UNKN_0E, [hl]
 	call GetMusicByte
-	ld hl, $0029
+	ld hl, Channel1Field0x29 - Channel1
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e8906
 
 MusicDE: ; e8906
@@ -1791,50 +1866,54 @@
 	;
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 2, [hl] ; duty cycle
+	set SOUND_DUTY, [hl] ; duty cycle
 	;
 	call GetMusicByte
 	rrca
 	rrca
-	ld hl, $001c
+	ld hl, Channel1Field0x1c - Channel1
 	add hl, bc
 	ld [hl], a
 	; update duty cycle
-	and a, $c0 ; only uses top 2 bits
+	and $c0 ; only uses top 2 bits
 	ld hl, Channel1DutyCycle - Channel1
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e891e
 
 MusicE8: ; e891e
-; shrug
+; unused
 ; params: 1
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 5, [hl]
+	set SOUND_UNKN_0D, [hl]
 	call GetMusicByte
-	ld hl, $002a
+	ld hl, Channel1Field0x2a - Channel1
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e892d
 
-MusicDF: ; e892d
+Music_ToggleSFX: ; e892d
 ; toggle something
 ; params: none
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 3, [hl]
+	bit SOUND_SFX, [hl]
 	jr z, .on
-	res 3, [hl]
+	res SOUND_SFX, [hl]
 	ret
+
 .on
-	set 3, [hl]
+	set SOUND_SFX, [hl]
 	ret
+
 ; e893b
 
-MusicE3: ; e893b
+Music_ToggleNoise: ; e893b
 ; toggle music noise sampling
 ; can't be used as a straight toggle since the param is not read from on->off
 ; params:
@@ -1843,20 +1922,22 @@
 	; check if noise sampling is on
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 4, [hl]
+	bit SOUND_NOISE, [hl]
 	jr z, .on
 	; turn noise sampling off
-	res 4, [hl]
+	res SOUND_NOISE, [hl]
 	ret
+
 .on
 	; turn noise sampling on
-	set 4, [hl]
+	set SOUND_NOISE, [hl]
 	call GetMusicByte
 	ld [MusicNoiseSampleSet], a
 	ret
+
 ; e894f
 
-MusicF0: ; e894f
+Music_SFXToggleNoise: ; e894f
 ; toggle sfx noise sampling
 ; params:
 ;	on: 1
@@ -1864,39 +1945,42 @@
 	; check if noise sampling is on
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	bit 4, [hl]
+	bit SOUND_NOISE, [hl]
 	jr z, .on
 	; turn noise sampling off
-	res 4, [hl]
+	res SOUND_NOISE, [hl]
 	ret
+
 .on
 	; turn noise sampling on
-	set 4, [hl]
+	set SOUND_NOISE, [hl]
 	call GetMusicByte
 	ld [SFXNoiseSampleSet], a
 	ret
+
 ; e8963
 
-MusicD8: ; e8963
+Music_NoteType: ; e8963
 ; note length
 ;	# frames per 16th note
-; intensity: see MusicDC
+; intensity: see Music_Intensity
 ; params: 2
 	; note length
 	call GetMusicByte
-	ld hl, $002d
+	ld hl, Channel1NoteLength - Channel1
 	add hl, bc
 	ld [hl], a
 	ld a, [CurChannel]
-	and a, $03
-	cp a, $03
+	and $3
+	cp CHAN4 ; CHAN8 & $3
 	ret z
 	; intensity
-	call MusicDC
+	call Music_Intensity
 	ret
+
 ; e8977
 
-MusicDD: ; e8977
+Music_SoundStatus: ; e8977
 ; update sound status
 ; params: 1
 	call GetMusicByte
@@ -1903,24 +1987,26 @@
 	ld [SoundInput], a
 	ld hl, Channel1NoteFlags - Channel1
 	add hl, bc
-	set 3, [hl]
+	set NOTE_UNKN_3, [hl]
 	ret
+
 ; e8984
 
-MusicDB: ; e8984
+Music_DutyCycle: ; e8984
 ; duty cycle
 ; params: 1
 	call GetMusicByte
 	rrca
 	rrca
-	and a, $c0
+	and $c0
 	ld hl, Channel1DutyCycle - Channel1
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e8991
 
-MusicDC: ; e8991
+Music_Intensity: ; e8991
 ; intensity
 ; params: 1
 ;	hi: pressure
@@ -1930,9 +2016,10 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e899a
 
-MusicDA: ; e899a
+Music_Tempo: ; e899a
 ; global tempo
 ; params: 2
 ;	de: tempo
@@ -1942,16 +2029,17 @@
 	ld e, a
 	call SetGlobalTempo
 	ret
+
 ; e89a6
 
-MusicD0: ; e89a6
-MusicD1: ; e89a6
-MusicD2: ; e89a6
-MusicD3: ; e89a6
-MusicD4: ; e89a6
-MusicD5: ; e89a6
-MusicD6: ; e89a6
-MusicD7: ; e89a6
+Music_Octave8: ; e89a6
+Music_Octave7: ; e89a6
+Music_Octave6: ; e89a6
+Music_Octave5: ; e89a6
+Music_Octave4: ; e89a6
+Music_Octave3: ; e89a6
+Music_Octave2: ; e89a6
+Music_Octave1: ; e89a6
 ; set octave based on lo nybble of the command
 	ld hl, Channel1Octave - Channel1
 	add hl, bc
@@ -1959,9 +2047,10 @@
 	and 7
 	ld [hl], a
 	ret
+
 ; e89b1
 
-MusicD9: ; e89b1
+Music_ForceOctave: ; e89b1
 ; set starting octave
 ; this forces all notes up by the starting octave
 ; params: 1
@@ -1970,21 +2059,23 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e89ba
 
-MusicEF: ; e89ba
+Music_StereoPanning: ; e89ba
 ; stereo panning
 ; params: 1
 	; stereo on?
 	ld a, [Options]
 	bit 5, a ; stereo
-	jr nz, MusicE4
+	jr nz, Music_Panning
 	; skip param
 	call GetMusicByte
 	ret
+
 ; e89c5
 
-MusicE4: ; e89c5
+Music_Panning: ; e89c5
 ; force panning
 ; params: 1
 	call SetLRTracks
@@ -1994,9 +2085,10 @@
 	and [hl]
 	ld [hl], a
 	ret
+
 ; e89d2
 
-MusicE5: ; e89d2
+Music_Volume: ; e89d2
 ; set volume
 ; params: 1
 ;	see Volume
@@ -2011,21 +2103,23 @@
 	; set volume
 	ld [Volume], a
 	ret
+
 ; e89e1
 
-MusicE9: ; e89e1
+Music_TempoRelative: ; e89e1
 ; set global tempo to current channel tempo +- param
 ; params: 1 signed
 	call GetMusicByte
 	ld e, a
 	; check sign
-	cp a, $80
+	cp $80
 	jr nc, .negative
 ;positive
-	ld d, $00
+	ld d, 0
 	jr .ok
+
 .negative
-	ld d, $ff
+	ld d, -1
 .ok
 	ld hl, Channel1Tempo - Channel1
 	add hl, bc
@@ -2037,25 +2131,28 @@
 	ld d, h
 	call SetGlobalTempo
 	ret
+
 ; e89fd
 
-MusicEC: ; e89fd
+Music_SFXPriorityOn: ; e89fd
 ; turn sfx priority on
 ; params: none
-	ld a, $01
+	ld a, 1
 	ld [SFXPriority], a
 	ret
+
 ; e8a03
 
-MusicED: ; e8a03
+Music_SFXPriorityOff: ; e8a03
 ; turn sfx priority off
 ; params: none
 	xor a
 	ld [SFXPriority], a
 	ret
+
 ; e8a08
 
-MusicEA: ; e8a08
+Music_RestartChannel: ; e8a08
 ; restart current channel from channel header (same bank)
 ; params: 2 (5)
 ; ll hh: pointer to new channel header
@@ -2088,9 +2185,10 @@
 	call StartChannel
 	pop bc ; restore current channel
 	ret
+
 ; e8a30
 
-MusicEB: ; e8a30
+Music_NewSong: ; e8a30
 ; new song
 ; params: 2
 ;	de: song id
@@ -2102,6 +2200,7 @@
 	call _PlayMusic
 	pop bc
 	ret
+
 ; e8a3e
 
 GetMusicByte: ; e8a3e
@@ -2135,6 +2234,7 @@
 	; store channeldata in a
 	ld a, [CurMusicByte]
 	ret
+
 ; e8a5d
 
 GetFrequency: ; e8a5d
@@ -2151,7 +2251,7 @@
 	add hl, bc
 	ld a, [hl]
 	swap a ; hi nybble
-	and a, $0f
+	and $f
 	; add current octave
 	add d
 	push af ; we'll use this later
@@ -2159,10 +2259,10 @@
 	ld hl, Channel1StartingOctave - Channel1
 	add hl, bc
 	ld a, [hl]
-	and a, $0f ; lo nybble
+	and $f ; lo nybble
 	;
 	ld l, a ; ok
-	ld d, $00
+	ld d, 0
 	ld h, d
 	add hl, de ; add current pitch
 	add hl, hl ; skip 2 bytes for each
@@ -2173,9 +2273,10 @@
 	ld d, [hl]
 	; get our octave
 	pop af
+	; shift right by [7 - octave] bits
 .loop
 	; [7 - octave] loops
-	cp a, $07
+	cp $7
 	jr nc, .ok
 	; sra de
 	sra d
@@ -2182,11 +2283,13 @@
 	rr e
 	inc a
 	jr .loop
+
 .ok
 	ld a, d
-	and a, $07 ; top 3 bits for frequency (11 total)
+	and $7 ; top 3 bits for frequency (11 total)
 	ld d, a
 	ret
+
 ; e8a8d
 
 SetNoteDuration: ; e8a8d
@@ -2194,14 +2297,14 @@
 	; store delay units in de
 	inc a
 	ld e, a
-	ld d, $00
+	ld d, 0
 	; store NoteLength in a
 	ld hl, Channel1NoteLength - Channel1
 	add hl, bc
 	ld a, [hl]
 	; multiply NoteLength by delay units
-	ld l, $00 ; just multiply
-	call MultiplySimple
+	ld l, 0; just multiply
+	call .Multiply
 	ld a, l ; % $100
 	; store Tempo in de
 	ld hl, Channel1Tempo - Channel1
@@ -2210,16 +2313,16 @@
 	inc hl
 	ld d, [hl]
 	; add ???? to the next result
-	ld hl, $0016
+	ld hl, Channel1Field0x16 - Channel1
 	add hl, bc
 	ld l, [hl]
 	; multiply Tempo by last result (NoteLength * delay % $100)
-	call MultiplySimple
+	call .Multiply
 	; copy result to de
 	ld e, l
 	ld d, h
 	; store result in ????
-	ld hl, $0016
+	ld hl, Channel1Field0x16 - Channel1
 	add hl, bc
 	ld [hl], e
 	; store result in NoteDuration
@@ -2227,13 +2330,14 @@
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; e8ab8
 
-MultiplySimple: ; e8ab8
+.Multiply: ; e8ab8
 ; multiplies a and de
 ; adds the result to l
 ; stores the result in hl
-	ld h, $00
+	ld h, 0
 .loop
 	; halve a
 	srl a
@@ -2249,6 +2353,7 @@
 	and a
 	jr nz, .loop
 	ret
+
 ; e8ac7
 
 SetGlobalTempo: ; e8ac7
@@ -2255,32 +2360,34 @@
 	push bc ; save current channel
 	; are we dealing with music or sfx?
 	ld a, [CurChannel]
-	cp a, $04
+	cp CHAN5
 	jr nc, .sfxchannels
 	ld bc, Channel1
-	call SetTempo
+	call Tempo
 	ld bc, Channel2
-	call SetTempo
+	call Tempo
 	ld bc, Channel3
-	call SetTempo
+	call Tempo
 	ld bc, Channel4
-	call SetTempo
+	call Tempo
 	jr .end
+
 .sfxchannels
 	ld bc, Channel5
-	call SetTempo
+	call Tempo
 	ld bc, Channel6
-	call SetTempo
+	call Tempo
 	ld bc, Channel7
-	call SetTempo
+	call Tempo
 	ld bc, Channel8
-	call SetTempo
+	call Tempo
 .end
 	pop bc ; restore current channel
 	ret
+
 ; e8b03
 
-SetTempo: ; e8b03
+Tempo: ; e8b03
 ; input:
 ; 	de: note length
 	; update Tempo
@@ -2291,10 +2398,11 @@
 	ld [hl], d
 	; clear ????
 	xor a
-	ld hl, $0016
+	ld hl, Channel1Field0x16 - Channel1
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; e8b11
 
 StartChannel: ; e8b11
@@ -2301,8 +2409,9 @@
 	call SetLRTracks
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 0, [hl] ; turn channel on
+	set SOUND_CHANNEL_ON, [hl] ; turn channel on
 	ret
+
 ; e8b1b
 
 SetLRTracks: ; e8b1b
@@ -2311,9 +2420,9 @@
 	push de
 	; store current channel in de
 	ld a, [CurChannel]
-	and a, $03
+	and $3
 	ld e, a
-	ld d, $00
+	ld d, 0
 	; get this channel's lr tracks
 	call GetLRTracks
 	add hl, de ; de = channel 0-3
@@ -2324,6 +2433,7 @@
 	ld [hl], a
 	pop de
 	ret
+
 ; e8b30
 
 _PlayMusic:: ; e8b30
@@ -2332,7 +2442,7 @@
 	ld hl, MusicID
 	ld [hl], e ; song number
 	inc hl
-	ld [hl], d ; MusicIDHi (always $00)
+	ld [hl], d ; MusicIDHi (always $)
 	ld hl, Music
 	add hl, de ; three
 	add hl, de ; byte
@@ -2345,7 +2455,7 @@
 	call LoadMusicByte ; store first byte of music header in a
 	rlca
 	rlca
-	and a, $03 ; get number of channels
+	and $3 ; get number of channels
 	inc a
 .loop
 ; start playing channels
@@ -2357,16 +2467,17 @@
 	jr nz, .loop
 	xor a
 	ld [wc2b5], a
-	ld [wc2b8], a
-	ld [wc2b9], a
-	ld [wc2ba], a
-	ld [wc2bb], a
+	ld [Channel1JumpCondition], a
+	ld [Channel2JumpCondition], a
+	ld [Channel3JumpCondition], a
+	ld [Channel4JumpCondition], a
 	ld [NoiseSampleAddressLo], a
 	ld [NoiseSampleAddressHi], a
-	ld [wc2a2], a
+	ld [wNoiseSampleDelay], a
 	ld [MusicNoiseSampleSet], a
 	call MusicOn
 	ret
+
 ; e8b79
 
 _PlayCryHeader:: ; e8b79
@@ -2400,7 +2511,7 @@
 	; Top 2 bits contain the number of channels
 	rlca
 	rlca
-	and a, 3
+	and 3
 	
 ; For each channel:
 	inc a
@@ -2410,11 +2521,11 @@
 	
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 5, [hl]
+	set SOUND_REST, [hl]
 	
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 4, [hl]
+	set SOUND_CRY_PITCH, [hl]
 	
 	ld hl, Channel1CryPitch - Channel1
 	add hl, bc
@@ -2425,7 +2536,7 @@
 	
 ; No tempo for channel 4
 	ld a, [CurChannel]
-	and a, 3
+	and 3
 	cp 3
 	jr nc, .start
 	
@@ -2438,7 +2549,7 @@
 	ld [hl], a
 .start
 	call StartChannel
-	ld a, [wc2bc]
+	ld a, [wStereoPanningMask]
 	and a
 	jr z, .next
 	
@@ -2454,7 +2565,7 @@
 	add hl, bc
 	ld a, [hl]
 	ld hl, CryTracks
-	and a, [hl]
+	and [hl]
 	ld hl, Channel1Tracks - Channel1
 	add hl, bc
 	ld [hl], a
@@ -2480,6 +2591,7 @@
 	ld [SFXPriority], a
 	call MusicOn
 	ret
+
 ; e8c04
 
 _PlaySFX:: ; e8c04
@@ -2486,12 +2598,12 @@
 ; clear channels if they aren't already
 	call MusicOff
 	ld hl, Channel5Flags
-	bit 0, [hl] ; ch5 on?
+	bit SOUND_CHANNEL_ON, [hl] ; ch5 on?
 	jr z, .ch6
-	res 0, [hl] ; turn it off
+	res SOUND_CHANNEL_ON, [hl] ; turn it off
 	xor a
 	ld [rNR11], a ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [rNR12], a ; envelope = 0
 	xor a
 	ld [rNR13], a ; frequency lo = 0
@@ -2502,12 +2614,12 @@
 	ld [rNR10], a ; sweep = 0
 .ch6
 	ld hl, Channel6Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr z, .ch7
-	res 0, [hl] ; turn it off
+	res SOUND_CHANNEL_ON, [hl] ; turn it off
 	xor a
 	ld [rNR21], a ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [rNR22], a ; envelope = 0
 	xor a
 	ld [rNR23], a ; frequency lo = 0
@@ -2515,13 +2627,13 @@
 	ld [rNR24], a ; restart sound (freq hi = 0)
 .ch7
 	ld hl, Channel7Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr z, .ch8
-	res 0, [hl] ; turn it off
+	res SOUND_CHANNEL_ON, [hl] ; turn it off
 	xor a
 	ld [rNR30], a ; sound mode #3 off
 	ld [rNR31], a ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [rNR32], a ; envelope = 0
 	xor a
 	ld [rNR33], a ; frequency lo = 0
@@ -2529,12 +2641,12 @@
 	ld [rNR34], a ; restart sound (freq hi = 0)
 .ch8
 	ld hl, Channel8Flags
-	bit 0, [hl]
+	bit SOUND_CHANNEL_ON, [hl]
 	jr z, .chscleared
-	res 0, [hl] ; turn it off
+	res SOUND_CHANNEL_ON, [hl] ; turn it off
 	xor a
 	ld [rNR41], a ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [rNR42], a ; envelope = 0
 	xor a
 	ld [rNR43], a ; frequency lo = 0
@@ -2564,7 +2676,7 @@
 	call LoadMusicByte
 	rlca ; top 2
 	rlca ; bits
-	and a, $03
+	and $3
 	inc a ; # channels -> # loops
 .startchannels
 	push af
@@ -2571,7 +2683,7 @@
 	call LoadChannel ; bc = current channel
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 3, [hl]
+	set SOUND_SFX, [hl]
 	call StartChannel
 	pop af
 	dec a
@@ -2580,6 +2692,7 @@
 	xor a
 	ld [SFXPriority], a
 	ret
+
 ; e8ca6
 
 
@@ -2626,7 +2739,7 @@
 	
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 3, [hl]
+	set SOUND_SFX, [hl]
 	
 	push de
 	; get tracks for this channel
@@ -2633,11 +2746,11 @@
 	ld a, [CurChannel]
 	and 3 ; ch1-4
 	ld e, a
-	ld d, $0
+	ld d, 0
 	call GetLRTracks
 	add hl, de
 	ld a, [hl]
-	ld hl, wc2bc
+	ld hl, wStereoPanningMask
 	and [hl]
 	
 	ld hl, Channel1Tracks - Channel1
@@ -2644,36 +2757,36 @@
 	add hl, bc
 	ld [hl], a
 	
-	ld hl, $0030 ; $c131 - Channel1
+	ld hl, Channel1Field0x30 - Channel1 ; $c131 - Channel1
 	add hl, bc
 	ld [hl], a
 	
 	ld a, [CryTracks]
 	cp 2 ; ch 1-2
-	jr c, .asm_e8d0c
+	jr c, .skip
 	
 ; ch3-4
-	ld a, [wc2be]
+	ld a, [wSFXDuration]
 	
-	ld hl, $002e ; $c12f - Channel1
+	ld hl, Channel1Field0x2e - Channel1 ; $c12f - Channel1
 	add hl, bc
 	ld [hl], a
 	
-	ld hl, $002f ; $c130 - Channel1
+	ld hl, Channel1Field0x2f - Channel1 ; $c130 - Channel1
 	add hl, bc
 	ld [hl], a
 	
 	ld hl, Channel1Flags2 - Channel1
 	add hl, bc
-	set 7, [hl]
+	set SOUND_UNKN_0F, [hl]
 	
-.asm_e8d0c
+.skip
 	pop de
 	
 ; turn channel on
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	set 0, [hl] ; on
+	set SOUND_CHANNEL_ON, [hl] ; on
 	
 ; done?
 	pop af
@@ -2683,6 +2796,7 @@
 ; we're done
 	call MusicOn
 	ret
+
 ; e8d1b
 
 
@@ -2693,10 +2807,10 @@
 	; get pointer to current channel
 	call LoadMusicByte
 	inc de
-	and a, $07 ; bit 0-2 (current channel)
+	and $7 ; bit 0-2 (current channel)
 	ld [CurChannel], a
 	ld c, a
-	ld b, $00
+	ld b, 0
 	ld hl, ChannelPointers
 rept 2
 	add hl, bc
@@ -2706,7 +2820,7 @@
 	ld b, [hl] ; bc = channel pointer
 	ld hl, Channel1Flags - Channel1
 	add hl, bc
-	res 0, [hl] ; channel off
+	res SOUND_CHANNEL_ON, [hl] ; channel off
 	call ChannelInit
 	; load music pointer
 	ld hl, Channel1MusicAddress - Channel1
@@ -2730,6 +2844,7 @@
 	ld a, [MusicBank]
 	ld [hl], a
 	ret
+
 ; e8d5b
 
 ChannelInit: ; e8d5b
@@ -2755,12 +2870,13 @@
 	ld [hli], a
 	inc a
 	ld [hl], a
-	; set note length to default ($01) (fast)
+	; set note length to default ($1) (fast)
 	ld hl, Channel1NoteLength - Channel1
 	add hl, bc
 	ld [hl], a
 	pop de
 	ret
+
 ; e8d76
 
 LoadMusicByte:: ; e8d76
@@ -2772,6 +2888,7 @@
 	call _LoadMusicByte
 	ld a, [CurMusicByte]
 	ret
+
 ; e8d80
 
 FrequencyTable: ; e8d80
@@ -2805,16 +2922,16 @@
 WaveSamples: ; e8db2
 	; these are streams of 32 4-bit values used as wavepatterns
 	; nothing interesting here!
-	db $02, $46, $8a, $ce, $ff, $fe, $ed, $dc, $cb, $a9, $87, $65, $44, $33, $22, $11
-	db $02, $46, $8a, $ce, $ef, $ff, $fe, $ee, $dd, $cb, $a9, $87, $65, $43, $22, $11
-	db $13, $69, $bd, $ee, $ee, $ff, $ff, $ed, $de, $ff, $ff, $ee, $ee, $db, $96, $31
-	db $02, $46, $8a, $cd, $ef, $fe, $de, $ff, $ee, $dc, $ba, $98, $76, $54, $32, $10
-	db $01, $23, $45, $67, $8a, $cd, $ee, $f7, $7f, $ee, $dc, $a8, $76, $54, $32, $10
-	db $00, $11, $22, $33, $44, $33, $22, $11, $ff, $ee, $cc, $aa, $88, $aa, $cc, $ee
-	db $02, $46, $8a, $ce, $cb, $a9, $87, $65, $ff, $fe, $ed, $dc, $44, $33, $22, $11
-	db $c0, $a9, $87, $f5, $ff, $fe, $ed, $dc, $44, $33, $22, $f1, $02, $46, $8a, $ce
-	db $44, $33, $22, $1f, $00, $46, $8a, $ce, $f8, $fe, $ed, $dc, $cb, $a9, $87, $65
-	db $11, $00, $00, $08, $00, $13, $57, $9a, $b4, $ba, $a9, $98, $87, $65, $43, $21
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 14, 15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1
+	dn 1, 3, 6, 9, 11, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 13, 13, 14, 15, 15, 15, 15, 14, 14, 14, 14, 13, 11, 9, 6, 3, 1
+	dn 0, 2, 4, 6, 8, 10, 12, 13, 14, 15, 15, 14, 13, 14, 15, 15, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
+	dn 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 14, 15, 7, 7, 15, 14, 14, 13, 12, 10, 8, 7, 6, 5, 4, 3, 2, 1, 0
+	dn 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1, 15, 15, 14, 14, 12, 12, 10, 10, 8, 8, 10, 10, 12, 12, 14, 14
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 12, 11, 10, 9, 8, 7, 6, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 1, 1
+	dn 12, 0, 10, 9, 8, 7, 15, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 15, 1, 0, 2, 4, 6, 8, 10, 12, 14
+	dn 4, 4, 3, 3, 2, 2, 1, 15, 0, 0, 4, 6, 8, 10, 12, 14, 15, 8, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5
+	dn 1, 1, 0, 0, 0, 0, 0, 8, 0, 0, 1, 3, 5, 7, 9, 10, 11, 4, 11, 10, 10, 9, 9, 8, 8, 7, 6, 5, 4, 3, 2, 1
 ; e8e52
 
 Drumkits: ; e8e52
@@ -2914,209 +3031,209 @@
 
 Drum00: ; e8efa
 ; unused
-	noise $20, $11, $00
-	db $ff ; end
+	noise C#,  1, $11, $00
+	endchannel
 ; e8efe
 
 Snare1: ; e8efe
-	noise $20, $c1, $33
-	db $ff ; end
+	noise C#,  1, $c1, $33
+	endchannel
 ; e8f02
 
 Snare2: ; e8f02
-	noise $20, $b1, $33
-	db $ff ; end
+	noise C#,  1, $b1, $33
+	endchannel
 ; e8f06
 
 Snare3: ; e8f06
-	noise $20, $a1, $33
-	db $ff ; end
+	noise C#,  1, $a1, $33
+	endchannel
 ; e8f0a
 
 Snare4: ; e8f0a
-	noise $20, $81, $33
-	db $ff ; end
+	noise C#,  1, $81, $33
+	endchannel
 ; e8f0e
 
 Drum05: ; e8f0e
-	noise $27, $84, $37
-	noise $26, $84, $36
-	noise $25, $83, $35
-	noise $24, $83, $34
-	noise $23, $82, $33
-	noise $22, $81, $32
-	db $ff ; end
+	noise C#,  8, $84, $37
+	noise C#,  7, $84, $36
+	noise C#,  6, $83, $35
+	noise C#,  5, $83, $34
+	noise C#,  4, $82, $33
+	noise C#,  3, $81, $32
+	endchannel
 ; e8f21
 
 Triangle1: ; e8f21
-	noise $20, $51, $2a
-	db $ff ; end
+	noise C#,  1, $51, $2a
+	endchannel
 ; e8f25
 
 Triangle2: ; e8f25
-	noise $21, $41, $2b
-	noise $20, $61, $2a
-	db $ff ; end
+	noise C#,  2, $41, $2b
+	noise C#,  1, $61, $2a
+	endchannel
 ; e8f2c
 
 HiHat1: ; e8f2c
-	noise $20, $81, $10
-	db $ff ; end
+	noise C#,  1, $81, $10
+	endchannel
 ; e8f30
 
 Snare5: ; e8f30
-	noise $20, $82, $23
-	db $ff ; end
+	noise C#,  1, $82, $23
+	endchannel
 ; e8f34
 
 Snare6: ; e8f34
-	noise $20, $82, $25
-	db $ff ; end
+	noise C#,  1, $82, $25
+	endchannel
 ; e8f38
 
 Snare7: ; e8f38
-	noise $20, $82, $26
-	db $ff ; end
+	noise C#,  1, $82, $26
+	endchannel
 ; e8f3c
 
 HiHat2: ; e8f3c
-	noise $20, $a1, $10
-	db $ff ; end
+	noise C#,  1, $a1, $10
+	endchannel
 ; e8f40
 
 HiHat3: ; e8f40
-	noise $20, $a2, $11
-	db $ff ; end
+	noise C#,  1, $a2, $11
+	endchannel
 ; e8f44
 
 Snare8: ; e8f44
-	noise $20, $a2, $50
-	db $ff ; end
+	noise C#,  1, $a2, $50
+	endchannel
 ; e8f48
 
 Triangle3: ; e8f48
-	noise $20, $a1, $18
-	noise $20, $31, $33
-	db $ff ; end
+	noise C#,  1, $a1, $18
+	noise C#,  1, $31, $33
+	endchannel
 ; e8f4f
 
 Triangle4: ; e8f4f
-	noise $22, $91, $28
-	noise $20, $71, $18
-	db $ff ; end
+	noise C#,  3, $91, $28
+	noise C#,  1, $71, $18
+	endchannel
 ; e8f56
 
 Snare9: ; e8f56
-	noise $20, $91, $22
-	db $ff ; end
+	noise C#,  1, $91, $22
+	endchannel
 ; e8f5a
 
 Snare10: ; e8f5a
-	noise $20, $71, $22
-	db $ff ; end
+	noise C#,  1, $71, $22
+	endchannel
 ; e8f5e
 
 Snare11: ; e8f5e
-	noise $20, $61, $22
-	db $ff ; end
+	noise C#,  1, $61, $22
+	endchannel
 ; e8f62
 
 Drum20: ; e8f62
-	noise $20, $11, $11
-	db $ff ; end
+	noise C#,  1, $11, $11
+	endchannel
 ; e8f66
 
 Drum21: ; e8f66
-	db $ff
+	endchannel
 ; e8f67
 
 Snare12: ; e8f67
-	noise $20, $91, $33
-	db $ff ; end
+	noise C#,  1, $91, $33
+	endchannel
 ; e8f6b
 
 Snare13: ; e8f6b
-	noise $20, $51, $32
-	db $ff ; end
+	noise C#,  1, $51, $32
+	endchannel
 ; e8f6f
 
 Snare14: ; e8f6f
-	noise $20, $81, $31
-	db $ff ; end
+	noise C#,  1, $81, $31
+	endchannel
 ; e8f73
 
 Kick1: ; e8f73
-	noise $20, $88, $6b
-	noise $20, $71, $00
-	db $ff ; end
+	noise C#,  1, $88, $6b
+	noise C#,  1, $71, $00
+	endchannel
 ; e8f7a
 
 Triangle5: ; e8f7a
-	noise $30, $91, $18
-	db $ff ; end
+	noise D_,  1, $91, $18
+	endchannel
 ; e8f7e
 
 Drum27: ; e8f7e
-	noise $27, $92, $10
-	db $ff ; end
+	noise C#,  8, $92, $10
+	endchannel
 ; e8f82
 
 Drum28: ; e8f82
-	noise $33, $91, $00
-	noise $33, $11, $00
-	db $ff ; end
+	noise D_,  4, $91, $00
+	noise D_,  4, $11, $00
+	endchannel
 ; e8f89
 
 Drum29: ; e8f89
-	noise $33, $91, $11
-	noise $33, $11, $00
-	db $ff ; end
+	noise D_,  4, $91, $11
+	noise D_,  4, $11, $00
+	endchannel
 ; e8f90
 
 Crash1: ; e8f90
-	noise $33, $88, $15
-	noise $20, $65, $12
-	db $ff ; end
+	noise D_,  4, $88, $15
+	noise C#,  1, $65, $12
+	endchannel
 ; e8f97
 
 Drum31: ; e8f97
-	noise $33, $51, $21
-	noise $33, $11, $11
-	db $ff ; end
+	noise D_,  4, $51, $21
+	noise D_,  4, $11, $11
+	endchannel
 ; e8f9e
 
 Drum32: ; e8f9e
-	noise $33, $51, $50
-	noise $33, $11, $11
-	db $ff ; end
+	noise D_,  4, $51, $50
+	noise D_,  4, $11, $11
+	endchannel
 ; e8fa5
 
 Drum33: ; e8fa5
-	noise $20, $a1, $31
-	db $ff ; end
+	noise C#,  1, $a1, $31
+	endchannel
 ; e8fa9
 
 Crash2: ; e8fa9
-	noise $20, $84, $12
-	db $ff ; end
+	noise C#,  1, $84, $12
+	endchannel
 ; e8fad
 
 Drum35: ; e8fad
-	noise $33, $81, $00
-	noise $33, $11, $00
-	db $ff ; end
+	noise D_,  4, $81, $00
+	noise D_,  4, $11, $00
+	endchannel
 ; e8fb4
 
 Drum36: ; e8fb4
-	noise $33, $81, $21
-	noise $33, $11, $11
-	db $ff ; end
+	noise D_,  4, $81, $21
+	noise D_,  4, $11, $11
+	endchannel
 ; e8fbb
 
 Kick2: ; e8fbb
-	noise $20, $a8, $6b
-	noise $20, $71, $00
-	db $ff ; end
+	noise C#,  1, $a8, $6b
+	noise C#,  1, $71, $00
+	endchannel
 ; e8fc2
 
 GetLRTracks: ; e8fc2
@@ -3128,9 +3245,11 @@
 	jr nz, .stereo
 	ld hl, MonoTracks
 	ret
+
 .stereo
 	ld hl, StereoTracks
 	ret
+
 ; e8fd1
 
 MonoTracks: ; e8fd1
@@ -3170,12 +3289,13 @@
 	ld a, $80
 	ld [hli], a
 	ld hl, rNR10
-	ld e, $04
+	ld e, $4
 .loop
 	call ClearChannel
 	dec e
 	jr nz, .loop
 	ret
+
 ; e8ffe
 
 ClearChannel: ; e8ffe
@@ -3187,7 +3307,7 @@
 	ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
 
 	ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
-	ld a, $08
+	ld a, $8
 	ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
 	xor a
 	ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
@@ -3194,4 +3314,5 @@
 	ld a, $80
 	ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
 	ret
+
 ; e900a
--- a/audio/music/aftertherivalfight.asm
+++ b/audio/music/aftertherivalfight.asm
@@ -1,8 +1,8 @@
 Music_AfterTheRivalFight: ; f5127
-	dbw $c0, Music_AfterTheRivalFight_Ch1
-	dbw $01, Music_AfterTheRivalFight_Ch2
-	dbw $02, Music_AfterTheRivalFight_Ch3
-	dbw $03, Music_AfterTheRivalFight_Ch4
+	musicheader 4, 1, Music_AfterTheRivalFight_Ch1
+	musicheader 1, 2, Music_AfterTheRivalFight_Ch2
+	musicheader 1, 3, Music_AfterTheRivalFight_Ch3
+	musicheader 1, 4, Music_AfterTheRivalFight_Ch4
 ; f5133
 
 Music_AfterTheRivalFight_Ch1: ; f5133
--- a/audio/music/azaleatown.asm
+++ b/audio/music/azaleatown.asm
@@ -1,8 +1,8 @@
 Music_AzaleaTown: ; f57e8
-	dbw $c0, Music_AzaleaTown_Ch1
-	dbw $01, Music_AzaleaTown_Ch2
-	dbw $02, Music_AzaleaTown_Ch3
-	dbw $03, Music_AzaleaTown_Ch4
+	musicheader 4, 1, Music_AzaleaTown_Ch1
+	musicheader 1, 2, Music_AzaleaTown_Ch2
+	musicheader 1, 3, Music_AzaleaTown_Ch3
+	musicheader 1, 4, Music_AzaleaTown_Ch4
 ; f57f4
 
 Music_AzaleaTown_Ch1: ; f57f4
--- a/audio/music/battletowerlobby.asm
+++ b/audio/music/battletowerlobby.asm
@@ -1,8 +1,8 @@
 Music_BattleTowerLobby: ; 17948b
-	dbw $c0, Music_BattleTowerLobby_Ch1
-	dbw $01, Music_BattleTowerLobby_Ch2
-	dbw $02, Music_BattleTowerLobby_Ch3
-	dbw $03, Music_BattleTowerLobby_Ch4
+	musicheader 4, 1, Music_BattleTowerLobby_Ch1
+	musicheader 1, 2, Music_BattleTowerLobby_Ch2
+	musicheader 1, 3, Music_BattleTowerLobby_Ch3
+	musicheader 1, 4, Music_BattleTowerLobby_Ch4
 ; 179497
 
 Music_BattleTowerLobby_Ch1: ; 179497
--- a/audio/music/battletowertheme.asm
+++ b/audio/music/battletowertheme.asm
@@ -1,8 +1,8 @@
 Music_BattleTowerTheme: ; 178889
-	dbw $c0, Music_BattleTowerTheme_Ch1
-	dbw $01, Music_BattleTowerTheme_Ch2
-	dbw $02, Music_BattleTowerTheme_Ch3
-	dbw $03, Music_BattleTowerTheme_Ch4
+	musicheader 4, 1, Music_BattleTowerTheme_Ch1
+	musicheader 1, 2, Music_BattleTowerTheme_Ch2
+	musicheader 1, 3, Music_BattleTowerTheme_Ch3
+	musicheader 1, 4, Music_BattleTowerTheme_Ch4
 ; 178895
 
 Music_BattleTowerTheme_Ch1: ; 178895
--- a/audio/music/bicycle.asm
+++ b/audio/music/bicycle.asm
@@ -1,8 +1,8 @@
 Music_Bicycle: ; ee119
-	dbw $c0, Music_Bicycle_Ch1
-	dbw $01, Music_Bicycle_Ch2
-	dbw $02, Music_Bicycle_Ch3
-	dbw $03, Music_Bicycle_Ch4
+	musicheader 4, 1, Music_Bicycle_Ch1
+	musicheader 1, 2, Music_Bicycle_Ch2
+	musicheader 1, 3, Music_Bicycle_Ch3
+	musicheader 1, 4, Music_Bicycle_Ch4
 ; ee125
 
 Music_Bicycle_Ch1: ; ee125
--- a/audio/music/buenaspassword.asm
+++ b/audio/music/buenaspassword.asm
@@ -1,8 +1,8 @@
 Music_BuenasPassword: ; 178153
-	dbw $c0, Music_BuenasPassword_Ch1
-	dbw $01, Music_BuenasPassword_Ch2
-	dbw $02, Music_BuenasPassword_Ch3
-	dbw $03, Music_BuenasPassword_Ch4
+	musicheader 4, 1, Music_BuenasPassword_Ch1
+	musicheader 1, 2, Music_BuenasPassword_Ch2
+	musicheader 1, 3, Music_BuenasPassword_Ch3
+	musicheader 1, 4, Music_BuenasPassword_Ch4
 ; 17815f
 
 Music_BuenasPassword_Ch1: ; 17815f
--- a/audio/music/bugcatchingcontest.asm
+++ b/audio/music/bugcatchingcontest.asm
@@ -1,8 +1,8 @@
 Music_BugCatchingContest: ; f7c16
-	dbw $c0, Music_BugCatchingContest_Ch1
-	dbw $01, Music_BugCatchingContest_Ch2
-	dbw $02, Music_BugCatchingContest_Ch3
-	dbw $03, Music_BugCatchingContest_Ch4
+	musicheader 4, 1, Music_BugCatchingContest_Ch1
+	musicheader 1, 2, Music_BugCatchingContest_Ch2
+	musicheader 1, 3, Music_BugCatchingContest_Ch3
+	musicheader 1, 4, Music_BugCatchingContest_Ch4
 ; f7c22
 
 Music_BugCatchingContest_Ch1: ; f7c22
--- a/audio/music/burnedtower.asm
+++ b/audio/music/burnedtower.asm
@@ -1,8 +1,8 @@
 Music_BurnedTower: ; f6a99
-	dbw $c0, Music_BurnedTower_Ch1
-	dbw $01, Music_BurnedTower_Ch2
-	dbw $02, Music_BurnedTower_Ch3
-	dbw $03, Music_BurnedTower_Ch4
+	musicheader 4, 1, Music_BurnedTower_Ch1
+	musicheader 1, 2, Music_BurnedTower_Ch2
+	musicheader 1, 3, Music_BurnedTower_Ch3
+	musicheader 1, 4, Music_BurnedTower_Ch4
 ; f6aa5
 
 Music_BurnedTower_Ch1: ; f6aa5
--- a/audio/music/celadoncity.asm
+++ b/audio/music/celadoncity.asm
@@ -1,7 +1,7 @@
 Music_CeladonCity: ; f435b
-	dbw $80, Music_CeladonCity_Ch1
-	dbw $01, Music_CeladonCity_Ch2
-	dbw $02, Music_CeladonCity_Ch3
+	musicheader 3, 1, Music_CeladonCity_Ch1
+	musicheader 1, 2, Music_CeladonCity_Ch2
+	musicheader 1, 3, Music_CeladonCity_Ch3
 ; f4364
 
 Music_CeladonCity_Ch1: ; f4364
--- a/audio/music/championbattle.asm
+++ b/audio/music/championbattle.asm
@@ -1,7 +1,7 @@
 Music_ChampionBattle: ; ea9c1
-	dbw $80, Music_ChampionBattle_Ch1
-	dbw $01, Music_ChampionBattle_Ch2
-	dbw $02, Music_ChampionBattle_Ch3
+	musicheader 3, 1, Music_ChampionBattle_Ch1
+	musicheader 1, 2, Music_ChampionBattle_Ch2
+	musicheader 1, 3, Music_ChampionBattle_Ch3
 ; ea9ca
 
 Music_ChampionBattle_Ch1: ; ea9ca
--- a/audio/music/cherrygrovecity.asm
+++ b/audio/music/cherrygrovecity.asm
@@ -1,8 +1,8 @@
 Music_CherrygroveCity: ; f5b03
-	dbw $c0, Music_CherrygroveCity_Ch1
-	dbw $01, Music_CherrygroveCity_Ch2
-	dbw $02, Music_CherrygroveCity_Ch3
-	dbw $03, Music_CherrygroveCity_Ch4
+	musicheader 4, 1, Music_CherrygroveCity_Ch1
+	musicheader 1, 2, Music_CherrygroveCity_Ch2
+	musicheader 1, 3, Music_CherrygroveCity_Ch3
+	musicheader 1, 4, Music_CherrygroveCity_Ch4
 ; f5b0f
 
 Music_CherrygroveCity_Ch1: ; f5b0f
--- a/audio/music/clair.asm
+++ b/audio/music/clair.asm
@@ -1,8 +1,8 @@
 Music_Clair: ; 1fa8d
-	dbw $c0, Music_Clair_Ch1
-	dbw $01, Music_Clair_Ch2
-	dbw $02, Music_Clair_Ch3
-	dbw $03, Music_Clair_Ch4
+	musicheader 4, 1, Music_Clair_Ch1
+	musicheader 1, 2, Music_Clair_Ch2
+	musicheader 1, 3, Music_Clair_Ch3
+	musicheader 1, 4, Music_Clair_Ch4
 ; 1fa99
 
 Music_Clair_Ch1: ; 1fa99
--- a/audio/music/contestresults.asm
+++ b/audio/music/contestresults.asm
@@ -1,8 +1,8 @@
 Music_ContestResults: ; efb3e
-	dbw $c0, Music_ContestResults_Ch1
-	dbw $01, Music_ContestResults_Ch2
-	dbw $02, Music_ContestResults_Ch3
-	dbw $03, Music_ContestResults_Ch4
+	musicheader 4, 1, Music_ContestResults_Ch1
+	musicheader 1, 2, Music_ContestResults_Ch2
+	musicheader 1, 3, Music_ContestResults_Ch3
+	musicheader 1, 4, Music_ContestResults_Ch4
 ; efb4a
 
 Music_ContestResults_Ch1: ; efb4a
--- a/audio/music/credits.asm
+++ b/audio/music/credits.asm
@@ -1,8 +1,8 @@
 Music_Credits: ; 1f31c
-	dbw $c0, Music_Credits_Ch1
-	dbw $01, Music_Credits_Ch2
-	dbw $02, Music_Credits_Ch3
-	dbw $03, Music_Credits_Ch4
+	musicheader 4, 1, Music_Credits_Ch1
+	musicheader 1, 2, Music_Credits_Ch2
+	musicheader 1, 3, Music_Credits_Ch3
+	musicheader 1, 4, Music_Credits_Ch4
 ; 1f328
 
 Music_Credits_Ch1: ; 1f328
--- a/audio/music/crystalopening.asm
+++ b/audio/music/crystalopening.asm
@@ -1,8 +1,8 @@
 Music_CrystalOpening: ; 1786e8
-	dbw $c0, Music_CrystalOpening_Ch1
-	dbw $01, Music_CrystalOpening_Ch2
-	dbw $02, Music_CrystalOpening_Ch3
-	dbw $03, Music_CrystalOpening_Ch4
+	musicheader 4, 1, Music_CrystalOpening_Ch1
+	musicheader 1, 2, Music_CrystalOpening_Ch2
+	musicheader 1, 3, Music_CrystalOpening_Ch3
+	musicheader 1, 4, Music_CrystalOpening_Ch4
 ; 1786f4
 
 Music_CrystalOpening_Ch1: ; 1786f4
--- a/audio/music/dancinghall.asm
+++ b/audio/music/dancinghall.asm
@@ -1,7 +1,7 @@
 Music_DancingHall: ; ef9bc
-	dbw $80, Music_DancingHall_Ch1
-	dbw $01, Music_DancingHall_Ch2
-	dbw $02, Music_DancingHall_Ch3
+	musicheader 3, 1, Music_DancingHall_Ch1
+	musicheader 1, 2, Music_DancingHall_Ch2
+	musicheader 1, 3, Music_DancingHall_Ch3
 ; ef9c5
 
 	db $3
--- a/audio/music/darkcave.asm
+++ b/audio/music/darkcave.asm
@@ -1,8 +1,8 @@
 Music_DarkCave: ; ea2be
-	dbw $c0, Music_DarkCave_Ch1
-	dbw $01, Music_DarkCave_Ch2
-	dbw $02, Music_DarkCave_Ch3
-	dbw $03, Music_DarkCave_Ch4
+	musicheader 4, 1, Music_DarkCave_Ch1
+	musicheader 1, 2, Music_DarkCave_Ch2
+	musicheader 1, 3, Music_DarkCave_Ch3
+	musicheader 1, 4, Music_DarkCave_Ch4
 ; ea2ca
 
 Music_DarkCave_Ch1: ; ea2ca
--- a/audio/music/dragonsden.asm
+++ b/audio/music/dragonsden.asm
@@ -1,8 +1,8 @@
 Music_DragonsDen: ; eece8
-	dbw $c0, Music_DragonsDen_Ch1
-	dbw $01, Music_DragonsDen_Ch2
-	dbw $02, Music_DragonsDen_Ch3
-	dbw $03, Music_DragonsDen_Ch4
+	musicheader 4, 1, Music_DragonsDen_Ch1
+	musicheader 1, 2, Music_DragonsDen_Ch2
+	musicheader 1, 3, Music_DragonsDen_Ch3
+	musicheader 1, 4, Music_DragonsDen_Ch4
 ; eecf4
 
 Music_DragonsDen_Ch1: ; eecf4
--- a/audio/music/ecruteakcity.asm
+++ b/audio/music/ecruteakcity.asm
@@ -1,7 +1,7 @@
 Music_EcruteakCity: ; ef2d0
-	dbw $80, Music_EcruteakCity_Ch1
-	dbw $01, Music_EcruteakCity_Ch2
-	dbw $02, Music_EcruteakCity_Ch3
+	musicheader 3, 1, Music_EcruteakCity_Ch1
+	musicheader 1, 2, Music_EcruteakCity_Ch2
+	musicheader 1, 3, Music_EcruteakCity_Ch3
 ; ef2d9
 
 Music_EcruteakCity_Ch1: ; ef2d9
--- a/audio/music/elmslab.asm
+++ b/audio/music/elmslab.asm
@@ -1,8 +1,8 @@
 Music_ElmsLab: ; ea040
-	dbw $c0, Music_ElmsLab_Ch1
-	dbw $01, Music_ElmsLab_Ch2
-	dbw $02, Music_ElmsLab_Ch3
-	dbw $03, Music_ElmsLab_Ch4
+	musicheader 4, 1, Music_ElmsLab_Ch1
+	musicheader 1, 2, Music_ElmsLab_Ch2
+	musicheader 1, 3, Music_ElmsLab_Ch3
+	musicheader 1, 4, Music_ElmsLab_Ch4
 ; ea04c
 
 Music_ElmsLab_Ch1: ; ea04c
--- a/audio/music/evolution.asm
+++ b/audio/music/evolution.asm
@@ -1,8 +1,8 @@
 Music_Evolution: ; f06e1
-	dbw $c0, Music_Evolution_Ch1
-	dbw $01, Music_Evolution_Ch2
-	dbw $02, Music_Evolution_Ch3
-	dbw $03, Music_Evolution_Ch4
+	musicheader 4, 1, Music_Evolution_Ch1
+	musicheader 1, 2, Music_Evolution_Ch2
+	musicheader 1, 3, Music_Evolution_Ch3
+	musicheader 1, 4, Music_Evolution_Ch4
 ; f06ed
 
 Music_Evolution_Ch1: ; f06ed
@@ -13,13 +13,13 @@
 	dutycycle $2
 	notetype $c, $92
 	octave 3
-	unknownmusic0xe0 $0, $4a
+	unknownmusic0xe0 $0, 4, A_
 	note C_, 1
-	unknownmusic0xe0 $0, $4a
+	unknownmusic0xe0 $0, 4, A_
 	note G_, 1
-	unknownmusic0xe0 $0, $4a
+	unknownmusic0xe0 $0, 4, A_
 	note C_, 1
-	unknownmusic0xe0 $0, $4a
+	unknownmusic0xe0 $0, 4, A_
 	note G_, 1
 	note __, 4
 	dutycycle $3
--- a/audio/music/gamecorner.asm
+++ b/audio/music/gamecorner.asm
@@ -1,8 +1,8 @@
 Music_GameCorner: ; edd6d
-	dbw $c0, Music_GameCorner_Ch1
-	dbw $01, Music_GameCorner_Ch2
-	dbw $02, Music_GameCorner_Ch3
-	dbw $03, Music_GameCorner_Ch4
+	musicheader 4, 1, Music_GameCorner_Ch1
+	musicheader 1, 2, Music_GameCorner_Ch2
+	musicheader 1, 3, Music_GameCorner_Ch3
+	musicheader 1, 4, Music_GameCorner_Ch4
 ; edd79
 
 Music_GameCorner_Ch1: ; edd79
--- a/audio/music/goldenrodcity.asm
+++ b/audio/music/goldenrodcity.asm
@@ -1,8 +1,8 @@
 Music_GoldenrodCity: ; eb453
-	dbw $c0, Music_GoldenrodCity_Ch1
-	dbw $01, Music_GoldenrodCity_Ch2
-	dbw $02, Music_GoldenrodCity_Ch3
-	dbw $03, Music_GoldenrodCity_Ch4
+	musicheader 4, 1, Music_GoldenrodCity_Ch1
+	musicheader 1, 2, Music_GoldenrodCity_Ch2
+	musicheader 1, 3, Music_GoldenrodCity_Ch3
+	musicheader 1, 4, Music_GoldenrodCity_Ch4
 ; eb45f
 
 Music_GoldenrodCity_Ch1: ; eb45f
--- a/audio/music/goldsilveropening.asm
+++ b/audio/music/goldsilveropening.asm
@@ -1,7 +1,7 @@
 Music_GoldSilverOpening: ; f7055
-	dbw $80, Music_GoldSilverOpening_Ch1
-	dbw $01, Music_GoldSilverOpening_Ch2
-	dbw $02, Music_GoldSilverOpening_Ch3
+	musicheader 3, 1, Music_GoldSilverOpening_Ch1
+	musicheader 1, 2, Music_GoldSilverOpening_Ch2
+	musicheader 1, 3, Music_GoldSilverOpening_Ch3
 ; f705e
 
 Music_GoldSilverOpening_Ch1: ; f705e
--- a/audio/music/goldsilveropening2.asm
+++ b/audio/music/goldsilveropening2.asm
@@ -1,8 +1,8 @@
 Music_GoldSilverOpening2: ; f7308
-	dbw $c0, Music_GoldSilverOpening2_Ch1
-	dbw $01, Music_GoldSilverOpening2_Ch2
-	dbw $02, Music_GoldSilverOpening2_Ch3
-	dbw $03, Music_GoldSilverOpening2_Ch4
+	musicheader 4, 1, Music_GoldSilverOpening2_Ch1
+	musicheader 1, 2, Music_GoldSilverOpening2_Ch2
+	musicheader 1, 3, Music_GoldSilverOpening2_Ch3
+	musicheader 1, 4, Music_GoldSilverOpening2_Ch4
 ; f7314
 
 Music_GoldSilverOpening2_Ch1: ; f7314
--- a/audio/music/gym.asm
+++ b/audio/music/gym.asm
@@ -1,8 +1,8 @@
 Music_Gym: ; f48ae
-	dbw $c0, Music_Gym_Ch1
-	dbw $01, Music_Gym_Ch2
-	dbw $02, Music_Gym_Ch3
-	dbw $03, Music_Gym_Ch4
+	musicheader 4, 1, Music_Gym_Ch1
+	musicheader 1, 2, Music_Gym_Ch2
+	musicheader 1, 3, Music_Gym_Ch3
+	musicheader 1, 4, Music_Gym_Ch4
 ; f48ba
 
 Music_Gym_Ch1: ; f48ba
--- a/audio/music/gymleadervictory.asm
+++ b/audio/music/gymleadervictory.asm
@@ -1,8 +1,8 @@
 Music_GymLeaderVictory: ; f462c
-	dbw $c0, Music_GymLeaderVictory_Ch1
-	dbw $01, Music_GymLeaderVictory_Ch2
-	dbw $02, Music_GymLeaderVictory_Ch3
-	dbw $03, Music_GymLeaderVictory_Ch4
+	musicheader 4, 1, Music_GymLeaderVictory_Ch1
+	musicheader 1, 2, Music_GymLeaderVictory_Ch2
+	musicheader 1, 3, Music_GymLeaderVictory_Ch3
+	musicheader 1, 4, Music_GymLeaderVictory_Ch4
 ; f4638
 
 Music_GymLeaderVictory_Ch1: ; f4638
--- a/audio/music/halloffame.asm
+++ b/audio/music/halloffame.asm
@@ -1,8 +1,8 @@
 Music_HallOfFame: ; f05bf
-	dbw $c0, Music_HallOfFame_Ch1
-	dbw $01, Music_HallOfFame_Ch2
-	dbw $02, Music_HallOfFame_Ch3
-	dbw $03, Music_HallOfFame_Ch4
+	musicheader 4, 1, Music_HallOfFame_Ch1
+	musicheader 1, 2, Music_HallOfFame_Ch2
+	musicheader 1, 3, Music_HallOfFame_Ch3
+	musicheader 1, 4, Music_HallOfFame_Ch4
 ; f05cb
 
 Music_HallOfFame_Ch1: ; f05cb
--- a/audio/music/healpokemon.asm
+++ b/audio/music/healpokemon.asm
@@ -1,7 +1,7 @@
 Music_HealPokemon: ; f0697
-	dbw $80, Music_HealPokemon_Ch1
-	dbw $01, Music_HealPokemon_Ch2
-	dbw $02, Music_HealPokemon_Ch3
+	musicheader 3, 1, Music_HealPokemon_Ch1
+	musicheader 1, 2, Music_HealPokemon_Ch2
+	musicheader 1, 3, Music_HealPokemon_Ch3
 ; f06a0
 
 Music_HealPokemon_Ch1: ; f06a0
@@ -11,16 +11,16 @@
 	tone $0001
 	notetype $c, $81
 	note __, 2
-	unknownmusic0xe0 $0, $40
+	unknownmusic0xe0 $0, 4, __
 	note B_, 2
-	unknownmusic0xe0 $0, $55
+	unknownmusic0xe0 $0, 5, E_
 	note B_, 2
-	unknownmusic0xe0 $0, $45
+	unknownmusic0xe0 $0, 4, E_
 	note E_, 2
 	note __, 4
-	unknownmusic0xe0 $0, $30
+	unknownmusic0xe0 $0, 3, __
 	note E_, 4
-	unknownmusic0xe0 $0, $40
+	unknownmusic0xe0 $0, 4, __
 	note B_, 4
 	endchannel
 ; f06c4
--- a/audio/music/indigoplateau.asm
+++ b/audio/music/indigoplateau.asm
@@ -1,8 +1,8 @@
 Music_IndigoPlateau: ; ee852
-	dbw $c0, Music_IndigoPlateau_Ch1
-	dbw $01, Music_IndigoPlateau_Ch2
-	dbw $02, Music_IndigoPlateau_Ch3
-	dbw $03, Music_IndigoPlateau_Ch4
+	musicheader 4, 1, Music_IndigoPlateau_Ch1
+	musicheader 1, 2, Music_IndigoPlateau_Ch2
+	musicheader 1, 3, Music_IndigoPlateau_Ch3
+	musicheader 1, 4, Music_IndigoPlateau_Ch4
 ; ee85e
 
 Music_IndigoPlateau_Ch1: ; ee85e
--- a/audio/music/johtogymbattle.asm
+++ b/audio/music/johtogymbattle.asm
@@ -1,7 +1,7 @@
 Music_JohtoGymBattle: ; ea50d
-	dbw $80, Music_JohtoGymBattle_Ch1
-	dbw $01, Music_JohtoGymBattle_Ch2
-	dbw $02, Music_JohtoGymBattle_Ch3
+	musicheader 3, 1, Music_JohtoGymBattle_Ch1
+	musicheader 1, 2, Music_JohtoGymBattle_Ch2
+	musicheader 1, 3, Music_JohtoGymBattle_Ch3
 ; ea516
 
 Music_JohtoGymBattle_Ch1: ; ea516
--- a/audio/music/johtotrainerbattle.asm
+++ b/audio/music/johtotrainerbattle.asm
@@ -1,7 +1,7 @@
 Music_JohtoTrainerBattle: ; f6096
-	dbw $80, Music_JohtoTrainerBattle_Ch1
-	dbw $01, Music_JohtoTrainerBattle_Ch2
-	dbw $02, Music_JohtoTrainerBattle_Ch3
+	musicheader 3, 1, Music_JohtoTrainerBattle_Ch1
+	musicheader 1, 2, Music_JohtoTrainerBattle_Ch2
+	musicheader 1, 3, Music_JohtoTrainerBattle_Ch3
 ; f609f
 
 Music_JohtoTrainerBattle_Ch1: ; f609f
--- a/audio/music/johtowildbattle.asm
+++ b/audio/music/johtowildbattle.asm
@@ -1,7 +1,7 @@
 Music_JohtoWildBattle: ; f5dc5
-	dbw $80, Music_JohtoWildBattle_Ch1
-	dbw $01, Music_JohtoWildBattle_Ch2
-	dbw $02, Music_JohtoWildBattle_Ch3
+	musicheader 3, 1, Music_JohtoWildBattle_Ch1
+	musicheader 1, 2, Music_JohtoWildBattle_Ch2
+	musicheader 1, 3, Music_JohtoWildBattle_Ch3
 ; f5dce
 
 Music_JohtoWildBattle_Ch1: ; f5dce
--- a/audio/music/johtowildbattlenight.asm
+++ b/audio/music/johtowildbattlenight.asm
@@ -1,7 +1,7 @@
 Music_JohtoWildBattleNight: ; f605c
-	dbw $80, Music_JohtoWildBattleNight_Ch1
-	dbw $01, Music_JohtoWildBattleNight_Ch2
-	dbw $02, Music_JohtoWildBattleNight_Ch3
+	musicheader 3, 1, Music_JohtoWildBattleNight_Ch1
+	musicheader 1, 2, Music_JohtoWildBattleNight_Ch2
+	musicheader 1, 3, Music_JohtoWildBattleNight_Ch3
 ; f6065
 
 Music_JohtoWildBattleNight_Ch1: ; f6065
--- a/audio/music/kantogymbattle.asm
+++ b/audio/music/kantogymbattle.asm
@@ -1,7 +1,7 @@
 Music_KantoGymBattle: ; ec720
-	dbw $80, Music_KantoGymBattle_Ch1
-	dbw $01, Music_KantoGymBattle_Ch2
-	dbw $02, Music_KantoGymBattle_Ch3
+	musicheader 3, 1, Music_KantoGymBattle_Ch1
+	musicheader 1, 2, Music_KantoGymBattle_Ch2
+	musicheader 1, 3, Music_KantoGymBattle_Ch3
 ; ec729
 
 Music_KantoGymBattle_Ch1: ; ec729
--- a/audio/music/kantotrainerbattle.asm
+++ b/audio/music/kantotrainerbattle.asm
@@ -1,7 +1,7 @@
 Music_KantoTrainerBattle: ; ec9fa
-	dbw $80, Music_KantoTrainerBattle_Ch1
-	dbw $01, Music_KantoTrainerBattle_Ch2
-	dbw $02, Music_KantoTrainerBattle_Ch3
+	musicheader 3, 1, Music_KantoTrainerBattle_Ch1
+	musicheader 1, 2, Music_KantoTrainerBattle_Ch2
+	musicheader 1, 3, Music_KantoTrainerBattle_Ch3
 ; eca03
 
 	db $3
--- a/audio/music/kantowildbattle.asm
+++ b/audio/music/kantowildbattle.asm
@@ -1,7 +1,7 @@
 Music_KantoWildBattle: ; ed06d
-	dbw $80, Music_KantoWildBattle_Ch1
-	dbw $01, Music_KantoWildBattle_Ch2
-	dbw $02, Music_KantoWildBattle_Ch3
+	musicheader 3, 1, Music_KantoWildBattle_Ch1
+	musicheader 1, 2, Music_KantoWildBattle_Ch2
+	musicheader 1, 3, Music_KantoWildBattle_Ch3
 ; ed076
 
 	db $3
--- a/audio/music/lakeofrage.asm
+++ b/audio/music/lakeofrage.asm
@@ -1,8 +1,8 @@
 Music_LakeOfRage: ; ee6c5
-	dbw $c0, Music_LakeOfRage_Ch1
-	dbw $01, Music_LakeOfRage_Ch2
-	dbw $02, Music_LakeOfRage_Ch3
-	dbw $03, Music_LakeOfRage_Ch4
+	musicheader 4, 1, Music_LakeOfRage_Ch1
+	musicheader 1, 2, Music_LakeOfRage_Ch2
+	musicheader 1, 3, Music_LakeOfRage_Ch3
+	musicheader 1, 4, Music_LakeOfRage_Ch4
 ; ee6d1
 
 Music_LakeOfRage_Ch1: ; ee6d1
--- a/audio/music/lakeofragerocketradio.asm
+++ b/audio/music/lakeofragerocketradio.asm
@@ -1,7 +1,7 @@
 Music_LakeOfRageRocketRadio: ; ef5b1
-	dbw $80, Music_LakeOfRageRocketRadio_Ch1
-	dbw $01, Music_LakeOfRageRocketRadio_Ch2
-	dbw $02, Music_LakeOfRageRocketRadio_Ch3
+	musicheader 3, 1, Music_LakeOfRageRocketRadio_Ch1
+	musicheader 1, 2, Music_LakeOfRageRocketRadio_Ch2
+	musicheader 1, 3, Music_LakeOfRageRocketRadio_Ch3
 ; ef5ba
 
 Music_LakeOfRageRocketRadio_Ch1: ; ef5ba
--- a/audio/music/lavendertown.asm
+++ b/audio/music/lavendertown.asm
@@ -1,7 +1,7 @@
 Music_LavenderTown: ; ef72f
-	dbw $80, Music_LavenderTown_Ch1
-	dbw $01, Music_LavenderTown_Ch2
-	dbw $02, Music_LavenderTown_Ch3
+	musicheader 3, 1, Music_LavenderTown_Ch1
+	musicheader 1, 2, Music_LavenderTown_Ch2
+	musicheader 1, 3, Music_LavenderTown_Ch3
 ; ef738
 
 	db $3
--- a/audio/music/lighthouse.asm
+++ b/audio/music/lighthouse.asm
@@ -1,8 +1,8 @@
 Music_Lighthouse: ; ee569
-	dbw $c0, Music_Lighthouse_Ch1
-	dbw $01, Music_Lighthouse_Ch2
-	dbw $02, Music_Lighthouse_Ch3
-	dbw $03, Music_Lighthouse_Ch4
+	musicheader 4, 1, Music_Lighthouse_Ch1
+	musicheader 1, 2, Music_Lighthouse_Ch2
+	musicheader 1, 3, Music_Lighthouse_Ch3
+	musicheader 1, 4, Music_Lighthouse_Ch4
 ; ee575
 
 Music_Lighthouse_Ch1: ; ee575
--- a/audio/music/lookbeauty.asm
+++ b/audio/music/lookbeauty.asm
@@ -1,8 +1,8 @@
 Music_LookBeauty: ; eee3e
-	dbw $c0, Music_LookBeauty_Ch1
-	dbw $01, Music_LookBeauty_Ch2
-	dbw $02, Music_LookBeauty_Ch3
-	dbw $03, Music_LookBeauty_Ch4
+	musicheader 4, 1, Music_LookBeauty_Ch1
+	musicheader 1, 2, Music_LookBeauty_Ch2
+	musicheader 1, 3, Music_LookBeauty_Ch3
+	musicheader 1, 4, Music_LookBeauty_Ch4
 ; eee4a
 
 Music_LookBeauty_Ch1: ; eee4a
--- a/audio/music/lookhiker.asm
+++ b/audio/music/lookhiker.asm
@@ -1,8 +1,8 @@
 Music_LookHiker: ; f7411
-	dbw $c0, Music_LookHiker_Ch1
-	dbw $01, Music_LookHiker_Ch2
-	dbw $02, Music_LookHiker_Ch3
-	dbw $03, Music_LookHiker_Ch4
+	musicheader 4, 1, Music_LookHiker_Ch1
+	musicheader 1, 2, Music_LookHiker_Ch2
+	musicheader 1, 3, Music_LookHiker_Ch3
+	musicheader 1, 4, Music_LookHiker_Ch4
 ; f741d
 
 Music_LookHiker_Ch1: ; f741d
--- a/audio/music/lookkimonogirl.asm
+++ b/audio/music/lookkimonogirl.asm
@@ -1,7 +1,7 @@
 Music_LookKimonoGirl: ; f79b8
-	dbw $80, Music_LookKimonoGirl_Ch1
-	dbw $01, Music_LookKimonoGirl_Ch2
-	dbw $02, Music_LookKimonoGirl_Ch3
+	musicheader 3, 1, Music_LookKimonoGirl_Ch1
+	musicheader 1, 2, Music_LookKimonoGirl_Ch2
+	musicheader 1, 3, Music_LookKimonoGirl_Ch3
 ; f79c1
 
 	db $3
--- a/audio/music/looklass.asm
+++ b/audio/music/looklass.asm
@@ -1,8 +1,8 @@
 Music_LookLass: ; ed79b
-	dbw $c0, Music_LookLass_Ch1
-	dbw $01, Music_LookLass_Ch2
-	dbw $02, Music_LookLass_Ch3
-	dbw $03, Music_LookLass_Ch4
+	musicheader 4, 1, Music_LookLass_Ch1
+	musicheader 1, 2, Music_LookLass_Ch2
+	musicheader 1, 3, Music_LookLass_Ch3
+	musicheader 1, 4, Music_LookLass_Ch4
 ; ed7a7
 
 Music_LookLass_Ch1: ; ed7a7
--- a/audio/music/lookmysticalman.asm
+++ b/audio/music/lookmysticalman.asm
@@ -1,8 +1,8 @@
 Music_LookMysticalMan: ; 17843b
-	dbw $c0, Music_LookMysticalMan_Ch1
-	dbw $01, Music_LookMysticalMan_Ch2
-	dbw $02, Music_LookMysticalMan_Ch3
-	dbw $03, Music_LookMysticalMan_Ch4
+	musicheader 4, 1, Music_LookMysticalMan_Ch1
+	musicheader 1, 2, Music_LookMysticalMan_Ch2
+	musicheader 1, 3, Music_LookMysticalMan_Ch3
+	musicheader 1, 4, Music_LookMysticalMan_Ch4
 ; 178447
 
 Music_LookMysticalMan_Ch1: ; 178447
--- a/audio/music/lookofficer.asm
+++ b/audio/music/lookofficer.asm
@@ -1,7 +1,7 @@
 Music_LookOfficer: ; ed82d
-	dbw $80, Music_LookOfficer_Ch1
-	dbw $01, Music_LookOfficer_Ch2
-	dbw $02, Music_LookOfficer_Ch3
+	musicheader 3, 1, Music_LookOfficer_Ch1
+	musicheader 1, 2, Music_LookOfficer_Ch2
+	musicheader 1, 3, Music_LookOfficer_Ch3
 ; ed836
 
 Music_LookOfficer_Ch1: ; ed836
--- a/audio/music/lookpokemaniac.asm
+++ b/audio/music/lookpokemaniac.asm
@@ -1,7 +1,7 @@
 Music_LookPokemaniac: ; ebde1
-	dbw $80, Music_LookPokemaniac_Ch1
-	dbw $01, Music_LookPokemaniac_Ch2
-	dbw $02, Music_LookPokemaniac_Ch3
+	musicheader 3, 1, Music_LookPokemaniac_Ch1
+	musicheader 1, 2, Music_LookPokemaniac_Ch2
+	musicheader 1, 3, Music_LookPokemaniac_Ch3
 ; ebdea
 
 Music_LookPokemaniac_Ch1: ; ebdea
--- a/audio/music/lookrival.asm
+++ b/audio/music/lookrival.asm
@@ -1,8 +1,8 @@
 Music_LookRival: ; f4f79
-	dbw $c0, Music_LookRival_Ch1
-	dbw $01, Music_LookRival_Ch2
-	dbw $02, Music_LookRival_Ch3
-	dbw $03, Music_LookRival_Ch4
+	musicheader 4, 1, Music_LookRival_Ch1
+	musicheader 1, 2, Music_LookRival_Ch2
+	musicheader 1, 3, Music_LookRival_Ch3
+	musicheader 1, 4, Music_LookRival_Ch4
 ; f4f85
 
 Music_LookRival_Ch1: ; f4f85
--- a/audio/music/lookrocket.asm
+++ b/audio/music/lookrocket.asm
@@ -1,8 +1,8 @@
 Music_LookRocket: ; f74a2
-	dbw $c0, Music_LookRocket_Ch1
-	dbw $01, Music_LookRocket_Ch2
-	dbw $02, Music_LookRocket_Ch3
-	dbw $03, Music_LookRocket_Ch4
+	musicheader 4, 1, Music_LookRocket_Ch1
+	musicheader 1, 2, Music_LookRocket_Ch2
+	musicheader 1, 3, Music_LookRocket_Ch3
+	musicheader 1, 4, Music_LookRocket_Ch4
 ; f74ae
 
 Music_LookRocket_Ch1: ; f74ae
--- a/audio/music/looksage.asm
+++ b/audio/music/looksage.asm
@@ -1,6 +1,6 @@
 Music_LookSage: ; ee35e
-	dbw $40, Music_LookSage_Ch1
-	dbw $02, Music_LookSage_Ch3
+	musicheader 2, 1, Music_LookSage_Ch1
+	musicheader 1, 3, Music_LookSage_Ch3
 ; ee364
 
 Music_LookSage_Ch1: ; ee364
--- a/audio/music/lookyoungster.asm
+++ b/audio/music/lookyoungster.asm
@@ -1,7 +1,7 @@
 Music_LookYoungster: ; f66c3
-	dbw $80, Music_LookYoungster_Ch1
-	dbw $01, Music_LookYoungster_Ch2
-	dbw $02, Music_LookYoungster_Ch3
+	musicheader 3, 1, Music_LookYoungster_Ch1
+	musicheader 1, 2, Music_LookYoungster_Ch2
+	musicheader 1, 3, Music_LookYoungster_Ch3
 ; f66cc
 
 Music_LookYoungster_Ch1: ; f66cc
--- a/audio/music/magnettrain.asm
+++ b/audio/music/magnettrain.asm
@@ -1,8 +1,8 @@
 Music_MagnetTrain: ; ef5f0
-	dbw $c0, Music_MagnetTrain_Ch1
-	dbw $01, Music_MagnetTrain_Ch2
-	dbw $02, Music_MagnetTrain_Ch3
-	dbw $03, Music_MagnetTrain_Ch4
+	musicheader 4, 1, Music_MagnetTrain_Ch1
+	musicheader 1, 2, Music_MagnetTrain_Ch2
+	musicheader 1, 3, Music_MagnetTrain_Ch3
+	musicheader 1, 4, Music_MagnetTrain_Ch4
 ; ef5fc
 
 Music_MagnetTrain_Ch1: ; ef5fc
--- a/audio/music/mainmenu.asm
+++ b/audio/music/mainmenu.asm
@@ -1,8 +1,8 @@
 Music_MainMenu: ; f78fd
-	dbw $c0, Music_MainMenu_Ch1
-	dbw $01, Music_MainMenu_Ch2
-	dbw $02, Music_MainMenu_Ch3
-	dbw $03, Music_MainMenu_Ch4
+	musicheader 4, 1, Music_MainMenu_Ch1
+	musicheader 1, 2, Music_MainMenu_Ch2
+	musicheader 1, 3, Music_MainMenu_Ch3
+	musicheader 1, 4, Music_MainMenu_Ch4
 ; f7909
 
 Music_MainMenu_Ch1: ; f7909
--- a/audio/music/mobileadapter.asm
+++ b/audio/music/mobileadapter.asm
@@ -1,8 +1,8 @@
 Music_MobileAdapter: ; 1fc87
-	dbw $c0, Music_MobileAdapter_Ch1
-	dbw $01, Music_MobileAdapter_Ch2
-	dbw $02, Music_MobileAdapter_Ch3
-	dbw $03, Music_MobileAdapter_Ch4
+	musicheader 4, 1, Music_MobileAdapter_Ch1
+	musicheader 1, 2, Music_MobileAdapter_Ch2
+	musicheader 1, 3, Music_MobileAdapter_Ch3
+	musicheader 1, 4, Music_MobileAdapter_Ch4
 ; 1fc93
 
 Music_MobileAdapter_Ch1: ; 1fc93
--- a/audio/music/mobileadaptermenu.asm
+++ b/audio/music/mobileadaptermenu.asm
@@ -1,7 +1,7 @@
 Music_MobileAdapterMenu: ; 17801f
-	dbw $80, Music_MobileAdapterMenu_Ch1
-	dbw $01, Music_MobileAdapterMenu_Ch2
-	dbw $02, Music_MobileAdapterMenu_Ch3
+	musicheader 3, 1, Music_MobileAdapterMenu_Ch1
+	musicheader 1, 2, Music_MobileAdapterMenu_Ch2
+	musicheader 1, 3, Music_MobileAdapterMenu_Ch3
 ; 178028
 
 Music_MobileAdapterMenu_Ch1: ; 178028
--- a/audio/music/mobilecenter.asm
+++ b/audio/music/mobilecenter.asm
@@ -1,8 +1,8 @@
 Music_MobileCenter: ; 17961d
-	dbw $c0, Music_MobileCenter_Ch1
-	dbw $01, Music_MobileCenter_Ch2
-	dbw $02, Music_MobileCenter_Ch3
-	dbw $03, Music_MobileCenter_Ch4
+	musicheader 4, 1, Music_MobileCenter_Ch1
+	musicheader 1, 2, Music_MobileCenter_Ch2
+	musicheader 1, 3, Music_MobileCenter_Ch3
+	musicheader 1, 4, Music_MobileCenter_Ch4
 ; 179629
 
 Music_MobileCenter_Ch1: ; 179629
--- a/audio/music/mom.asm
+++ b/audio/music/mom.asm
@@ -1,7 +1,7 @@
 Music_Mom: ; f6bf2
-	dbw $81, Music_Mom_Ch2
-	dbw $02, Music_Mom_Ch3
-	dbw $03, Music_Mom_Ch4
+	musicheader 3, 2, Music_Mom_Ch2
+	musicheader 1, 3, Music_Mom_Ch3
+	musicheader 1, 4, Music_Mom_Ch4
 ; f6bfb
 
 Music_Mom_Ch2: ; f6bfb
--- a/audio/music/mtmoon.asm
+++ b/audio/music/mtmoon.asm
@@ -1,8 +1,8 @@
 Music_MtMoon: ; edb29
-	dbw $c0, Music_MtMoon_Ch1
-	dbw $01, Music_MtMoon_Ch2
-	dbw $02, Music_MtMoon_Ch3
-	dbw $03, Music_MtMoon_Ch4
+	musicheader 4, 1, Music_MtMoon_Ch1
+	musicheader 1, 2, Music_MtMoon_Ch2
+	musicheader 1, 3, Music_MtMoon_Ch3
+	musicheader 1, 4, Music_MtMoon_Ch4
 ; edb35
 
 Music_MtMoon_Ch1: ; edb35
--- a/audio/music/mtmoonsquare.asm
+++ b/audio/music/mtmoonsquare.asm
@@ -1,6 +1,6 @@
 Music_MtMoonSquare: ; f4815
-	dbw $40, Music_MtMoonSquare_Ch1
-	dbw $01, Music_MtMoonSquare_Ch2
+	musicheader 2, 1, Music_MtMoonSquare_Ch1
+	musicheader 1, 2, Music_MtMoonSquare_Ch2
 ; f481b
 
 Music_MtMoonSquare_Ch1: ; f481b
--- a/audio/music/nationalpark.asm
+++ b/audio/music/nationalpark.asm
@@ -1,8 +1,8 @@
 Music_NationalPark: ; f54e8
-	dbw $c0, Music_NationalPark_Ch1
-	dbw $01, Music_NationalPark_Ch2
-	dbw $02, Music_NationalPark_Ch3
-	dbw $03, Music_NationalPark_Ch4
+	musicheader 4, 1, Music_NationalPark_Ch1
+	musicheader 1, 2, Music_NationalPark_Ch2
+	musicheader 1, 3, Music_NationalPark_Ch3
+	musicheader 1, 4, Music_NationalPark_Ch4
 ; f54f4
 
 Music_NationalPark_Ch1: ; f54f4
--- a/audio/music/newbarktown.asm
+++ b/audio/music/newbarktown.asm
@@ -1,7 +1,7 @@
 Music_NewBarkTown: ; eb2d3
-	dbw $80, Music_NewBarkTown_Ch1
-	dbw $01, Music_NewBarkTown_Ch2
-	dbw $02, Music_NewBarkTown_Ch3
+	musicheader 3, 1, Music_NewBarkTown_Ch1
+	musicheader 1, 2, Music_NewBarkTown_Ch2
+	musicheader 1, 3, Music_NewBarkTown_Ch3
 ; eb2dc
 
 	db $3
--- a/audio/music/nothing.asm
+++ b/audio/music/nothing.asm
@@ -1,8 +1,8 @@
 Music_Nothing: ; e91a3
-	dbw $c0, Music_Nothing_Ch1
-	dbw $01, Music_Nothing_Ch2
-	dbw $02, Music_Nothing_Ch3
-	dbw $03, Music_Nothing_Ch4
+	musicheader 4, 1, Music_Nothing_Ch1
+	musicheader 1, 2, Music_Nothing_Ch2
+	musicheader 1, 3, Music_Nothing_Ch3
+	musicheader 1, 4, Music_Nothing_Ch4
 ; e91af
 
 Music_Nothing_Ch1: ; e91af
--- a/audio/music/pallettown.asm
+++ b/audio/music/pallettown.asm
@@ -1,7 +1,7 @@
 Music_PalletTown: ; f4b0c
-	dbw $80, Music_PalletTown_Ch1
-	dbw $01, Music_PalletTown_Ch2
-	dbw $02, Music_PalletTown_Ch3
+	musicheader 3, 1, Music_PalletTown_Ch1
+	musicheader 1, 2, Music_PalletTown_Ch2
+	musicheader 1, 3, Music_PalletTown_Ch3
 ; f4b15
 
 Music_PalletTown_Ch1: ; f4b15
--- a/audio/music/pokeflutechannel.asm
+++ b/audio/music/pokeflutechannel.asm
@@ -1,7 +1,7 @@
 Music_PokeFluteChannel: ; f7b13
-	dbw $80, Music_PokeFluteChannel_Ch1
-	dbw $01, Music_PokeFluteChannel_Ch2
-	dbw $02, Music_PokeFluteChannel_Ch3
+	musicheader 3, 1, Music_PokeFluteChannel_Ch1
+	musicheader 1, 2, Music_PokeFluteChannel_Ch2
+	musicheader 1, 3, Music_PokeFluteChannel_Ch3
 ; f7b1c
 
 Music_PokeFluteChannel_Ch1: ; f7b1c
--- a/audio/music/pokemoncenter.asm
+++ b/audio/music/pokemoncenter.asm
@@ -1,8 +1,8 @@
 Music_PokemonCenter: ; ed5c6
-	dbw $c0, Music_PokemonCenter_Ch1
-	dbw $01, Music_PokemonCenter_Ch2
-	dbw $02, Music_PokemonCenter_Ch3
-	dbw $03, Music_PokemonCenter_Ch4
+	musicheader 4, 1, Music_PokemonCenter_Ch1
+	musicheader 1, 2, Music_PokemonCenter_Ch2
+	musicheader 1, 3, Music_PokemonCenter_Ch3
+	musicheader 1, 4, Music_PokemonCenter_Ch4
 ; ed5d2
 
 Music_PokemonCenter_Ch1: ; ed5d2
--- a/audio/music/pokemonchannel.asm
+++ b/audio/music/pokemonchannel.asm
@@ -1,8 +1,8 @@
 Music_PokemonChannel: ; ee45f
-	dbw $c0, Music_PokemonChannel_Ch1
-	dbw $01, Music_PokemonChannel_Ch2
-	dbw $02, Music_PokemonChannel_Ch3
-	dbw $03, Music_PokemonChannel_Ch4
+	musicheader 4, 1, Music_PokemonChannel_Ch1
+	musicheader 1, 2, Music_PokemonChannel_Ch2
+	musicheader 1, 3, Music_PokemonChannel_Ch3
+	musicheader 1, 4, Music_PokemonChannel_Ch4
 ; ee46b
 
 Music_PokemonChannel_Ch1: ; ee46b
--- a/audio/music/pokemonlullaby.asm
+++ b/audio/music/pokemonlullaby.asm
@@ -1,7 +1,7 @@
 Music_PokemonLullaby: ; f6d79
-	dbw $80, Music_PokemonLullaby_Ch1
-	dbw $01, Music_PokemonLullaby_Ch2
-	dbw $02, Music_PokemonLullaby_Ch3
+	musicheader 3, 1, Music_PokemonLullaby_Ch1
+	musicheader 1, 2, Music_PokemonLullaby_Ch2
+	musicheader 1, 3, Music_PokemonLullaby_Ch3
 ; f6d82
 
 Music_PokemonLullaby_Ch1: ; f6d82
--- a/audio/music/pokemonmarch.asm
+++ b/audio/music/pokemonmarch.asm
@@ -1,8 +1,8 @@
 Music_PokemonMarch: ; f6e23
-	dbw $c0, Music_PokemonMarch_Ch1
-	dbw $01, Music_PokemonMarch_Ch2
-	dbw $02, Music_PokemonMarch_Ch3
-	dbw $03, Music_PokemonMarch_Ch4
+	musicheader 4, 1, Music_PokemonMarch_Ch1
+	musicheader 1, 2, Music_PokemonMarch_Ch2
+	musicheader 1, 3, Music_PokemonMarch_Ch3
+	musicheader 1, 4, Music_PokemonMarch_Ch4
 ; f6e2f
 
 Music_PokemonMarch_Ch1: ; f6e2f
--- a/audio/music/postcredits.asm
+++ b/audio/music/postcredits.asm
@@ -1,6 +1,6 @@
 Music_PostCredits: ; cfd9e
-	dbw $40, Music_PostCredits_Ch1
-	dbw $01, Music_PostCredits_Ch2
+	musicheader 2, 1, Music_PostCredits_Ch1
+	musicheader 1, 2, Music_PostCredits_Ch2
 ; cfda4
 
 	db $2
--- a/audio/music/printer.asm
+++ b/audio/music/printer.asm
@@ -1,5 +1,5 @@
 Music_Printer: ; f07fd
-	dbw $02, Music_Printer_Ch3
+	musicheader 1, 3, Music_Printer_Ch3
 ; f0800
 
 Music_Printer_Ch3: ; f0800
--- a/audio/music/profoak.asm
+++ b/audio/music/profoak.asm
@@ -1,7 +1,7 @@
 Music_ProfOak: ; f4dea
-	dbw $80, Music_ProfOak_Ch1
-	dbw $01, Music_ProfOak_Ch2
-	dbw $02, Music_ProfOak_Ch3
+	musicheader 3, 1, Music_ProfOak_Ch1
+	musicheader 1, 2, Music_ProfOak_Ch2
+	musicheader 1, 3, Music_ProfOak_Ch3
 ; f4df3
 
 Music_ProfOak_Ch1: ; f4df3
--- a/audio/music/profoakspokemontalk.asm
+++ b/audio/music/profoakspokemontalk.asm
@@ -1,7 +1,7 @@
 Music_ProfOaksPokemonTalk: ; f4c9f
-	dbw $80, Music_ProfOaksPokemonTalk_Ch1
-	dbw $01, Music_ProfOaksPokemonTalk_Ch2
-	dbw $02, Music_ProfOaksPokemonTalk_Ch3
+	musicheader 3, 1, Music_ProfOaksPokemonTalk_Ch1
+	musicheader 1, 2, Music_ProfOaksPokemonTalk_Ch2
+	musicheader 1, 3, Music_ProfOaksPokemonTalk_Ch3
 ; f4ca8
 
 	db $3
--- a/audio/music/rivalbattle.asm
+++ b/audio/music/rivalbattle.asm
@@ -1,7 +1,7 @@
 Music_RivalBattle: ; e974f
-	dbw $80, Music_RivalBattle_Ch1
-	dbw $01, Music_RivalBattle_Ch2
-	dbw $02, Music_RivalBattle_Ch3
+	musicheader 3, 1, Music_RivalBattle_Ch1
+	musicheader 1, 2, Music_RivalBattle_Ch2
+	musicheader 1, 3, Music_RivalBattle_Ch3
 ; e9758
 
 Music_RivalBattle_Ch1: ; e9758
--- a/audio/music/rocketbattle.asm
+++ b/audio/music/rocketbattle.asm
@@ -1,7 +1,7 @@
 Music_RocketBattle: ; e9b6f
-	dbw $80, Music_RocketBattle_Ch1
-	dbw $01, Music_RocketBattle_Ch2
-	dbw $02, Music_RocketBattle_Ch3
+	musicheader 3, 1, Music_RocketBattle_Ch1
+	musicheader 1, 2, Music_RocketBattle_Ch2
+	musicheader 1, 3, Music_RocketBattle_Ch3
 ; e9b78
 
 Music_RocketBattle_Ch1: ; e9b78
--- a/audio/music/rockethideout.asm
+++ b/audio/music/rockethideout.asm
@@ -1,8 +1,8 @@
 Music_RocketHideout: ; eeb75
-	dbw $c0, Music_RocketHideout_Ch1
-	dbw $01, Music_RocketHideout_Ch2
-	dbw $02, Music_RocketHideout_Ch3
-	dbw $03, Music_RocketHideout_Ch4
+	musicheader 4, 1, Music_RocketHideout_Ch1
+	musicheader 1, 2, Music_RocketHideout_Ch2
+	musicheader 1, 3, Music_RocketHideout_Ch3
+	musicheader 1, 4, Music_RocketHideout_Ch4
 ; eeb81
 
 Music_RocketHideout_Ch1: ; eeb81
--- a/audio/music/rockettheme.asm
+++ b/audio/music/rockettheme.asm
@@ -1,8 +1,8 @@
 Music_RocketTheme: ; f766d
-	dbw $c0, Music_RocketTheme_Ch1
-	dbw $01, Music_RocketTheme_Ch2
-	dbw $02, Music_RocketTheme_Ch3
-	dbw $03, Music_RocketTheme_Ch4
+	musicheader 4, 1, Music_RocketTheme_Ch1
+	musicheader 1, 2, Music_RocketTheme_Ch2
+	musicheader 1, 3, Music_RocketTheme_Ch3
+	musicheader 1, 4, Music_RocketTheme_Ch4
 ; f7679
 
 Music_RocketTheme_Ch1: ; f7679
--- a/audio/music/route1.asm
+++ b/audio/music/route1.asm
@@ -1,7 +1,7 @@
 Music_Route1: ; ec000
-	dbw $80, Music_Route1_Ch1
-	dbw $01, Music_Route1_Ch2
-	dbw $02, Music_Route1_Ch3
+	musicheader 3, 1, Music_Route1_Ch1
+	musicheader 1, 2, Music_Route1_Ch2
+	musicheader 1, 3, Music_Route1_Ch3
 ; ec009
 
 	db $3
--- a/audio/music/route12.asm
+++ b/audio/music/route12.asm
@@ -1,8 +1,8 @@
 Music_Route12: ; ec506
-	dbw $c0, Music_Route12_Ch1
-	dbw $01, Music_Route12_Ch2
-	dbw $02, Music_Route12_Ch3
-	dbw $03, Music_Route12_Ch4
+	musicheader 4, 1, Music_Route12_Ch1
+	musicheader 1, 2, Music_Route12_Ch2
+	musicheader 1, 3, Music_Route12_Ch3
+	musicheader 1, 4, Music_Route12_Ch4
 ; ec512
 
 Music_Route12_Ch1: ; ec512
--- a/audio/music/route2.asm
+++ b/audio/music/route2.asm
@@ -1,8 +1,8 @@
 Music_Route2: ; ed8dd
-	dbw $c0, Music_Route2_Ch1
-	dbw $01, Music_Route2_Ch2
-	dbw $02, Music_Route2_Ch3
-	dbw $03, Music_Route2_Ch4
+	musicheader 4, 1, Music_Route2_Ch1
+	musicheader 1, 2, Music_Route2_Ch2
+	musicheader 1, 3, Music_Route2_Ch3
+	musicheader 1, 4, Music_Route2_Ch4
 ; ed8e9
 
 Music_Route2_Ch1: ; ed8e9
--- a/audio/music/route26.asm
+++ b/audio/music/route26.asm
@@ -1,8 +1,8 @@
 Music_Route26: ; eefb2
-	dbw $c0, Music_Route26_Ch1
-	dbw $01, Music_Route26_Ch2
-	dbw $02, Music_Route26_Ch3
-	dbw $03, Music_Route26_Ch4
+	musicheader 4, 1, Music_Route26_Ch1
+	musicheader 1, 2, Music_Route26_Ch2
+	musicheader 1, 3, Music_Route26_Ch3
+	musicheader 1, 4, Music_Route26_Ch4
 ; eefbe
 
 Music_Route26_Ch1: ; eefbe
--- a/audio/music/route29.asm
+++ b/audio/music/route29.asm
@@ -1,8 +1,8 @@
 Music_Route29: ; f0386
-	dbw $c0, Music_Route29_Ch1
-	dbw $01, Music_Route29_Ch2
-	dbw $02, Music_Route29_Ch3
-	dbw $03, Music_Route29_Ch4
+	musicheader 4, 1, Music_Route29_Ch1
+	musicheader 1, 2, Music_Route29_Ch2
+	musicheader 1, 3, Music_Route29_Ch3
+	musicheader 1, 4, Music_Route29_Ch4
 ; f0392
 
 Music_Route29_Ch1: ; f0392
--- a/audio/music/route3.asm
+++ b/audio/music/route3.asm
@@ -1,8 +1,8 @@
 Music_Route3: ; ec2ca
-	dbw $c0, Music_Route3_Ch1
-	dbw $01, Music_Route3_Ch2
-	dbw $02, Music_Route3_Ch3
-	dbw $03, Music_Route3_Ch4
+	musicheader 4, 1, Music_Route3_Ch1
+	musicheader 1, 2, Music_Route3_Ch2
+	musicheader 1, 3, Music_Route3_Ch3
+	musicheader 1, 4, Music_Route3_Ch4
 ; ec2d6
 
 Music_Route3_Ch1: ; ec2d6
--- a/audio/music/route30.asm
+++ b/audio/music/route30.asm
@@ -1,8 +1,8 @@
 Music_Route30: ; efc01
-	dbw $c0, Music_Route30_Ch1
-	dbw $01, Music_Route30_Ch2
-	dbw $02, Music_Route30_Ch3
-	dbw $03, Music_Route30_Ch4
+	musicheader 4, 1, Music_Route30_Ch1
+	musicheader 1, 2, Music_Route30_Ch2
+	musicheader 1, 3, Music_Route30_Ch3
+	musicheader 1, 4, Music_Route30_Ch4
 ; efc0d
 
 Music_Route30_Ch1: ; efc0d
--- a/audio/music/route36.asm
+++ b/audio/music/route36.asm
@@ -1,8 +1,8 @@
 Music_Route36: ; e94e9
-	dbw $c0, Music_Route36_Ch1
-	dbw $01, Music_Route36_Ch2
-	dbw $02, Music_Route36_Ch3
-	dbw $03, Music_Route36_Ch4
+	musicheader 4, 1, Music_Route36_Ch1
+	musicheader 1, 2, Music_Route36_Ch2
+	musicheader 1, 3, Music_Route36_Ch3
+	musicheader 1, 4, Music_Route36_Ch4
 ; e94f5
 
 Music_Route36_Ch1: ; e94f5
--- a/audio/music/route37.asm
+++ b/audio/music/route37.asm
@@ -1,8 +1,8 @@
 Music_Route37: ; ee94b
-	dbw $c0, Music_Route37_Ch1
-	dbw $01, Music_Route37_Ch2
-	dbw $02, Music_Route37_Ch3
-	dbw $03, Music_Route37_Ch4
+	musicheader 4, 1, Music_Route37_Ch1
+	musicheader 1, 2, Music_Route37_Ch2
+	musicheader 1, 3, Music_Route37_Ch3
+	musicheader 1, 4, Music_Route37_Ch4
 ; ee957
 
 Music_Route37_Ch1: ; ee957
--- a/audio/music/ruinsofalphinterior.asm
+++ b/audio/music/ruinsofalphinterior.asm
@@ -1,7 +1,7 @@
 Music_RuinsOfAlphInterior: ; ebd9e
-	dbw $80, Music_RuinsOfAlphInterior_Ch1
-	dbw $01, Music_RuinsOfAlphInterior_Ch2
-	dbw $02, Music_RuinsOfAlphInterior_Ch3
+	musicheader 3, 1, Music_RuinsOfAlphInterior_Ch1
+	musicheader 1, 2, Music_RuinsOfAlphInterior_Ch2
+	musicheader 1, 3, Music_RuinsOfAlphInterior_Ch3
 ; ebda7
 
 Music_RuinsOfAlphInterior_Ch1: ; ebda7
--- a/audio/music/ruinsofalphradio.asm
+++ b/audio/music/ruinsofalphradio.asm
@@ -1,7 +1,7 @@
 Music_RuinsOfAlphRadio: ; eedcb
-	dbw $80, Music_RuinsOfAlphRadio_Ch1
-	dbw $01, Music_RuinsOfAlphRadio_Ch2
-	dbw $02, Music_RuinsOfAlphRadio_Ch3
+	musicheader 3, 1, Music_RuinsOfAlphRadio_Ch1
+	musicheader 1, 2, Music_RuinsOfAlphRadio_Ch2
+	musicheader 1, 3, Music_RuinsOfAlphRadio_Ch3
 ; eedd4
 
 Music_RuinsOfAlphRadio_Ch1: ; eedd4
--- a/audio/music/showmearound.asm
+++ b/audio/music/showmearound.asm
@@ -1,8 +1,8 @@
 Music_ShowMeAround: ; edbd8
-	dbw $c0, Music_ShowMeAround_Ch1
-	dbw $01, Music_ShowMeAround_Ch2
-	dbw $02, Music_ShowMeAround_Ch3
-	dbw $03, Music_ShowMeAround_Ch4
+	musicheader 4, 1, Music_ShowMeAround_Ch1
+	musicheader 1, 2, Music_ShowMeAround_Ch2
+	musicheader 1, 3, Music_ShowMeAround_Ch3
+	musicheader 1, 4, Music_ShowMeAround_Ch4
 ; edbe4
 
 Music_ShowMeAround_Ch1: ; edbe4
--- a/audio/music/sprouttower.asm
+++ b/audio/music/sprouttower.asm
@@ -1,8 +1,8 @@
 Music_SproutTower: ; f6974
-	dbw $c0, Music_SproutTower_Ch1
-	dbw $01, Music_SproutTower_Ch2
-	dbw $02, Music_SproutTower_Ch3
-	dbw $03, Music_SproutTower_Ch4
+	musicheader 4, 1, Music_SproutTower_Ch1
+	musicheader 1, 2, Music_SproutTower_Ch2
+	musicheader 1, 3, Music_SproutTower_Ch3
+	musicheader 1, 4, Music_SproutTower_Ch4
 ; f6980
 
 Music_SproutTower_Ch1: ; f6980
--- a/audio/music/ssaqua.asm
+++ b/audio/music/ssaqua.asm
@@ -1,8 +1,8 @@
 Music_SSAqua: ; ead99
-	dbw $c0, Music_SSAqua_Ch1
-	dbw $01, Music_SSAqua_Ch2
-	dbw $02, Music_SSAqua_Ch3
-	dbw $03, Music_SSAqua_Ch4
+	musicheader 4, 1, Music_SSAqua_Ch1
+	musicheader 1, 2, Music_SSAqua_Ch2
+	musicheader 1, 3, Music_SSAqua_Ch3
+	musicheader 1, 4, Music_SSAqua_Ch4
 ; eada5
 
 Music_SSAqua_Ch1: ; eada5
--- a/audio/music/successfulcapture.asm
+++ b/audio/music/successfulcapture.asm
@@ -1,7 +1,7 @@
 Music_SuccessfulCapture: ; f4602
-	dbw $80, Music_SuccessfulCapture_Ch1
-	dbw $01, Music_SuccessfulCapture_Ch2
-	dbw $02, Music_SuccessfulCapture_Ch3
+	musicheader 3, 1, Music_SuccessfulCapture_Ch1
+	musicheader 1, 2, Music_SuccessfulCapture_Ch2
+	musicheader 1, 3, Music_SuccessfulCapture_Ch3
 ; f460b
 
 Music_SuccessfulCapture_Ch1: ; f460b
--- a/audio/music/suicunebattle.asm
+++ b/audio/music/suicunebattle.asm
@@ -1,7 +1,7 @@
 Music_SuicuneBattle: ; 178b81
-	dbw $80, Music_SuicuneBattle_Ch1
-	dbw $01, Music_SuicuneBattle_Ch2
-	dbw $02, Music_SuicuneBattle_Ch3
+	musicheader 3, 1, Music_SuicuneBattle_Ch1
+	musicheader 1, 2, Music_SuicuneBattle_Ch2
+	musicheader 1, 3, Music_SuicuneBattle_Ch3
 ; 178b8a
 
 Music_SuicuneBattle_Ch1: ; 178b8a
--- a/audio/music/surf.asm
+++ b/audio/music/surf.asm
@@ -1,7 +1,7 @@
 Music_Surf: ; f518a
-	dbw $80, Music_Surf_Ch1
-	dbw $01, Music_Surf_Ch2
-	dbw $02, Music_Surf_Ch3
+	musicheader 3, 1, Music_Surf_Ch1
+	musicheader 1, 2, Music_Surf_Ch2
+	musicheader 1, 3, Music_Surf_Ch3
 ; f5193
 
 	db $3
--- a/audio/music/tintower.asm
+++ b/audio/music/tintower.asm
@@ -1,8 +1,8 @@
 Music_TinTower: ; f6811
-	dbw $c0, Music_TinTower_Ch1
-	dbw $01, Music_TinTower_Ch2
-	dbw $02, Music_TinTower_Ch3
-	dbw $03, Music_TinTower_Ch4
+	musicheader 4, 1, Music_TinTower_Ch1
+	musicheader 1, 2, Music_TinTower_Ch2
+	musicheader 1, 3, Music_TinTower_Ch3
+	musicheader 1, 4, Music_TinTower_Ch4
 ; f681d
 
 Music_TinTower_Ch1: ; f681d
--- a/audio/music/titlescreen.asm
+++ b/audio/music/titlescreen.asm
@@ -1,8 +1,8 @@
 Music_TitleScreen: ; eb808
-	dbw $c0, Music_TitleScreen_Ch1
-	dbw $01, Music_TitleScreen_Ch2
-	dbw $02, Music_TitleScreen_Ch3
-	dbw $03, Music_TitleScreen_Ch4
+	musicheader 4, 1, Music_TitleScreen_Ch1
+	musicheader 1, 2, Music_TitleScreen_Ch2
+	musicheader 1, 3, Music_TitleScreen_Ch3
+	musicheader 1, 4, Music_TitleScreen_Ch4
 ; eb814
 
 Music_TitleScreen_Ch1: ; eb814
--- a/audio/music/trainervictory.asm
+++ b/audio/music/trainervictory.asm
@@ -1,7 +1,7 @@
 Music_TrainerVictory: ; ebeab
-	dbw $80, Music_TrainerVictory_Ch1
-	dbw $01, Music_TrainerVictory_Ch2
-	dbw $02, Music_TrainerVictory_Ch3
+	musicheader 3, 1, Music_TrainerVictory_Ch1
+	musicheader 1, 2, Music_TrainerVictory_Ch2
+	musicheader 1, 3, Music_TrainerVictory_Ch3
 ; ebeb4
 
 Music_TrainerVictory_Ch1: ; ebeb4
--- a/audio/music/unioncave.asm
+++ b/audio/music/unioncave.asm
@@ -1,8 +1,8 @@
 Music_UnionCave: ; f5c60
-	dbw $c0, Music_UnionCave_Ch1
-	dbw $01, Music_UnionCave_Ch2
-	dbw $02, Music_UnionCave_Ch3
-	dbw $03, Music_UnionCave_Ch4
+	musicheader 4, 1, Music_UnionCave_Ch1
+	musicheader 1, 2, Music_UnionCave_Ch2
+	musicheader 1, 3, Music_UnionCave_Ch3
+	musicheader 1, 4, Music_UnionCave_Ch4
 ; f5c6c
 
 Music_UnionCave_Ch1: ; f5c6c
--- a/audio/music/vermilioncity.asm
+++ b/audio/music/vermilioncity.asm
@@ -1,7 +1,7 @@
 Music_VermilionCity: ; eb676
-	dbw $80, Music_VermilionCity_Ch1
-	dbw $01, Music_VermilionCity_Ch2
-	dbw $02, Music_VermilionCity_Ch3
+	musicheader 3, 1, Music_VermilionCity_Ch1
+	musicheader 1, 2, Music_VermilionCity_Ch2
+	musicheader 1, 3, Music_VermilionCity_Ch3
 ; eb67f
 
 	db $3
--- a/audio/music/victoryroad.asm
+++ b/audio/music/victoryroad.asm
@@ -1,8 +1,8 @@
 Music_VictoryRoad: ; f6c72
-	dbw $c0, Music_VictoryRoad_Ch1
-	dbw $01, Music_VictoryRoad_Ch2
-	dbw $02, Music_VictoryRoad_Ch3
-	dbw $03, Music_VictoryRoad_Ch4
+	musicheader 4, 1, Music_VictoryRoad_Ch1
+	musicheader 1, 2, Music_VictoryRoad_Ch2
+	musicheader 1, 3, Music_VictoryRoad_Ch3
+	musicheader 1, 4, Music_VictoryRoad_Ch4
 ; f6c7e
 
 Music_VictoryRoad_Ch1: ; f6c7e
--- a/audio/music/violetcity.asm
+++ b/audio/music/violetcity.asm
@@ -1,8 +1,8 @@
 Music_VioletCity: ; f0000
-	dbw $c0, Music_VioletCity_Ch1
-	dbw $01, Music_VioletCity_Ch2
-	dbw $02, Music_VioletCity_Ch3
-	dbw $03, Music_VioletCity_Ch4
+	musicheader 4, 1, Music_VioletCity_Ch1
+	musicheader 1, 2, Music_VioletCity_Ch2
+	musicheader 1, 3, Music_VioletCity_Ch3
+	musicheader 1, 4, Music_VioletCity_Ch4
 ; f000c
 
 Music_VioletCity_Ch1: ; f000c
--- a/audio/music/viridiancity.asm
+++ b/audio/music/viridiancity.asm
@@ -1,8 +1,8 @@
 Music_ViridianCity: ; f4000
-	dbw $c0, Music_ViridianCity_Ch1
-	dbw $01, Music_ViridianCity_Ch2
-	dbw $02, Music_ViridianCity_Ch3
-	dbw $03, Music_ViridianCity_Ch4
+	musicheader 4, 1, Music_ViridianCity_Ch1
+	musicheader 1, 2, Music_ViridianCity_Ch2
+	musicheader 1, 3, Music_ViridianCity_Ch3
+	musicheader 1, 4, Music_ViridianCity_Ch4
 ; f400c
 
 Music_ViridianCity_Ch1: ; f400c
--- a/audio/music/wildpokemonvictory.asm
+++ b/audio/music/wildpokemonvictory.asm
@@ -1,7 +1,7 @@
 Music_WildPokemonVictory: ; f4518
-	dbw $80, Music_WildPokemonVictory_Ch1
-	dbw $01, Music_WildPokemonVictory_Ch2
-	dbw $02, Music_WildPokemonVictory_Ch3
+	musicheader 3, 1, Music_WildPokemonVictory_Ch1
+	musicheader 1, 2, Music_WildPokemonVictory_Ch2
+	musicheader 1, 3, Music_WildPokemonVictory_Ch3
 ; f4521
 
 Music_WildPokemonVictory_Ch1: ; f4521
--- a/audio/sfx.asm
+++ b/audio/sfx.asm
@@ -1,496 +1,496 @@
 Sfx_PokeballsPlacedOnTable: ; f0941
-	dbw $04, Sfx_PokeballsPlacedOnTable_Ch5
+	musicheader 1, 5, Sfx_PokeballsPlacedOnTable_Ch5
 ; f0944
 
 Sfx_BallWiggle: ; f0944
-	dbw $04, Sfx_BallWiggle_Ch5
+	musicheader 1, 5, Sfx_BallWiggle_Ch5
 ; f0947
 
 Sfx_Potion: ; f0947
-	dbw $04, Sfx_Potion_Ch5
+	musicheader 1, 5, Sfx_Potion_Ch5
 ; f094a
 
 Sfx_FullHeal: ; f094a
-	dbw $04, Sfx_FullHeal_Ch5
+	musicheader 1, 5, Sfx_FullHeal_Ch5
 ; f094d
 
 Sfx_Menu: ; f094d
-	dbw $07, Sfx_Menu_Ch8
+	musicheader 1, 8, Sfx_Menu_Ch8
 ; f0950
 
 Sfx_ReadText2: ; f0950
 Sfx_ReadText: ; f0950
-	dbw $04, Sfx_ReadText2_Ch5
+	musicheader 1, 5, Sfx_ReadText2_Ch5
 ; f0953
 
 Sfx_Poison: ; f0953
-	dbw $04, Sfx_Poison_Ch5
+	musicheader 1, 5, Sfx_Poison_Ch5
 ; f0956
 
 Sfx_GotSafariBalls: ; f0956
-	dbw $04, Sfx_GotSafariBalls_Ch5
+	musicheader 1, 5, Sfx_GotSafariBalls_Ch5
 ; f0959
 
 Sfx_BootPc: ; f0959
-	dbw $04, Sfx_BootPc_Ch5
+	musicheader 1, 5, Sfx_BootPc_Ch5
 ; f095c
 
 Sfx_ShutDownPc: ; f095c
-	dbw $04, Sfx_ShutDownPc_Ch5
+	musicheader 1, 5, Sfx_ShutDownPc_Ch5
 ; f095f
 
 Sfx_ChoosePcOption: ; f095f
-	dbw $04, Sfx_ChoosePcOption_Ch5
+	musicheader 1, 5, Sfx_ChoosePcOption_Ch5
 ; f0962
 
 Sfx_EscapeRope: ; f0962
-	dbw $04, Sfx_EscapeRope_Ch5
+	musicheader 1, 5, Sfx_EscapeRope_Ch5
 ; f0965
 
 Sfx_PushButton: ; f0965
-	dbw $04, Sfx_PushButton_Ch5
+	musicheader 1, 5, Sfx_PushButton_Ch5
 ; f0968
 
 Sfx_SecondPartOfItemfinder: ; f0968
-	dbw $04, Sfx_SecondPartOfItemfinder_Ch5
+	musicheader 1, 5, Sfx_SecondPartOfItemfinder_Ch5
 ; f096b
 
 Sfx_WarpTo: ; f096b
-	dbw $04, Sfx_WarpTo_Ch5
+	musicheader 1, 5, Sfx_WarpTo_Ch5
 ; f096e
 
 Sfx_WarpFrom: ; f096e
-	dbw $04, Sfx_WarpFrom_Ch5
+	musicheader 1, 5, Sfx_WarpFrom_Ch5
 ; f0971
 
 Sfx_ChangeDexMode: ; f0971
-	dbw $04, Sfx_ChangeDexMode_Ch5
+	musicheader 1, 5, Sfx_ChangeDexMode_Ch5
 ; f0974
 
 Sfx_JumpOverLedge: ; f0974
-	dbw $04, Sfx_JumpOverLedge_Ch5
+	musicheader 1, 5, Sfx_JumpOverLedge_Ch5
 ; f0977
 
 Sfx_GrassRustle: ; f0977
-	dbw $07, Sfx_GrassRustle_Ch8
+	musicheader 1, 8, Sfx_GrassRustle_Ch8
 ; f097a
 
 Sfx_Fly: ; f097a
-	dbw $07, Sfx_Fly_Ch8
+	musicheader 1, 8, Sfx_Fly_Ch8
 ; f097d
 
 Sfx_Wrong: ; f097d
-	dbw $44, Sfx_Wrong_Ch5
-	dbw $05, Sfx_Wrong_Ch6
+	musicheader 2, 5, Sfx_Wrong_Ch5
+	musicheader 1, 6, Sfx_Wrong_Ch6
 ; f0983
 
 Sfx_Squeak: ; f0983
-	dbw $04, Sfx_Squeak_Ch5
+	musicheader 1, 5, Sfx_Squeak_Ch5
 ; f0986
 
 Sfx_Strength: ; f0986
-	dbw $07, Sfx_Strength_Ch8
+	musicheader 1, 8, Sfx_Strength_Ch8
 ; f0989
 
 Sfx_Boat: ; f0989
-	dbw $44, Sfx_Boat_Ch5
-	dbw $05, Sfx_Boat_Ch6
+	musicheader 2, 5, Sfx_Boat_Ch5
+	musicheader 1, 6, Sfx_Boat_Ch6
 ; f098f
 
 Sfx_WallOpen: ; f098f
-	dbw $04, Sfx_WallOpen_Ch5
+	musicheader 1, 5, Sfx_WallOpen_Ch5
 ; f0992
 
 Sfx_PlacePuzzlePieceDown: ; f0992
-	dbw $07, Sfx_PlacePuzzlePieceDown_Ch8
+	musicheader 1, 8, Sfx_PlacePuzzlePieceDown_Ch8
 ; f0995
 
 Sfx_EnterDoor: ; f0995
-	dbw $07, Sfx_EnterDoor_Ch8
+	musicheader 1, 8, Sfx_EnterDoor_Ch8
 ; f0998
 
 Sfx_SwitchPokemon: ; f0998
-	dbw $44, Sfx_SwitchPokemon_Ch5
-	dbw $05, Sfx_SwitchPokemon_Ch6
+	musicheader 2, 5, Sfx_SwitchPokemon_Ch5
+	musicheader 1, 6, Sfx_SwitchPokemon_Ch6
 ; f099e
 
 Sfx_Tally: ; f099e
-	dbw $44, Sfx_Tally_Ch5
-	dbw $05, Sfx_Tally_Ch6
+	musicheader 2, 5, Sfx_Tally_Ch5
+	musicheader 1, 6, Sfx_Tally_Ch6
 ; f09a4
 
 Sfx_Transaction: ; f09a4
-	dbw $44, Sfx_Transaction_Ch5
-	dbw $05, Sfx_Transaction_Ch6
+	musicheader 2, 5, Sfx_Transaction_Ch5
+	musicheader 1, 6, Sfx_Transaction_Ch6
 ; f09aa
 
 Sfx_Bump: ; f09aa
-	dbw $04, Sfx_Bump_Ch5
+	musicheader 1, 5, Sfx_Bump_Ch5
 ; f09ad
 
 Sfx_ExitBuilding: ; f09ad
-	dbw $07, Sfx_ExitBuilding_Ch8
+	musicheader 1, 8, Sfx_ExitBuilding_Ch8
 ; f09b0
 
 Sfx_Save: ; f09b0
-	dbw $44, Sfx_Save_Ch5
-	dbw $05, Sfx_Save_Ch6
+	musicheader 2, 5, Sfx_Save_Ch5
+	musicheader 1, 6, Sfx_Save_Ch6
 ; f09b6
 
 Sfx_Save_Ch5: ; f09b6
 	dutycycle $2
-	sound $2, $f1, $0700
-	sound $1, $e1, $0600
-	sound $1, $e1, $0680
-	sound $1, $e1, $06c0
-	sound $2, $e1, $0700
-	sound $2, $e1, $07c0
-	sound $f, $f2, $07e0
+	sound __,  3, $f1, $0700
+	sound __,  2, $e1, $0600
+	sound __,  2, $e1, $0680
+	sound __,  2, $e1, $06c0
+	sound __,  3, $e1, $0700
+	sound __,  3, $e1, $07c0
+	sound __, 16, $f2, $07e0
 	endchannel
 ; f09d5
 
 Sfx_Save_Ch6: ; f09d5
 	dutycycle $2
-	sound $2, $8, 0
-	sound $2, $a1, $0701
-	sound $1, $91, $0601
-	sound $1, $91, $0681
-	sound $1, $91, $06c1
-	sound $2, $91, $0701
-	sound $2, $91, $07c1
-	sound $f, $d2, $07e1
+	sound __,  3, $8, 0
+	sound __,  3, $a1, $0701
+	sound __,  2, $91, $0601
+	sound __,  2, $91, $0681
+	sound __,  2, $91, $06c1
+	sound __,  3, $91, $0701
+	sound __,  3, $91, $07c1
+	sound __, 16, $d2, $07e1
 	endchannel
 ; f09f8
 
 Sfx_Pokeflute: ; f09f8
-	dbw $06, Sfx_Pokeflute_Ch7
+	musicheader 1, 7, Sfx_Pokeflute_Ch7
 ; f09fb
 
 Sfx_ElevatorEnd: ; f09fb
-	dbw $04, Sfx_ElevatorEnd_Ch5
+	musicheader 1, 5, Sfx_ElevatorEnd_Ch5
 ; f09fe
 
 Sfx_ThrowBall: ; f09fe
-	dbw $44, Sfx_ThrowBall_Ch5
-	dbw $05, Sfx_ThrowBall_Ch6
+	musicheader 2, 5, Sfx_ThrowBall_Ch5
+	musicheader 1, 6, Sfx_ThrowBall_Ch6
 ; f0a04
 
 Sfx_BallPoof: ; f0a04
-	dbw $44, Sfx_BallPoof_Ch5
-	dbw $07, Sfx_BallPoof_Ch8
+	musicheader 2, 5, Sfx_BallPoof_Ch5
+	musicheader 1, 8, Sfx_BallPoof_Ch8
 ; f0a0a
 
 Sfx_Unknown3A: ; f0a0a
-	dbw $44, Sfx_Unknown3A_Ch5
-	dbw $07, Sfx_Unknown3A_Ch8
+	musicheader 2, 5, Sfx_Unknown3A_Ch5
+	musicheader 1, 8, Sfx_Unknown3A_Ch8
 ; f0a10
 
 Sfx_Run: ; f0a10
-	dbw $07, Sfx_Run_Ch8
+	musicheader 1, 8, Sfx_Run_Ch8
 ; f0a13
 
 Sfx_SlotMachineStart: ; f0a13
-	dbw $44, Sfx_SlotMachineStart_Ch5
-	dbw $05, Sfx_SlotMachineStart_Ch6
+	musicheader 2, 5, Sfx_SlotMachineStart_Ch5
+	musicheader 1, 6, Sfx_SlotMachineStart_Ch6
 ; f0a19
 
 Sfx_Call: ; f0a19
-	dbw $04, Sfx_Call_Ch5
+	musicheader 1, 5, Sfx_Call_Ch5
 ; f0a1c
 
 Sfx_Unknown60: ; f0a1c
-	dbw $07, Sfx_Unknown60_Ch8
+	musicheader 1, 8, Sfx_Unknown60_Ch8
 ; f0a1f
 
 Sfx_Unknown61: ; f0a1f
-	dbw $07, Sfx_Unknown61_Ch8
+	musicheader 1, 8, Sfx_Unknown61_Ch8
 ; f0a22
 
-Sfx_Unknown62: ; f0a22
-	dbw $07, Sfx_Unknown62_Ch8
+Sfx_SwitchPockets: ; f0a22
+	musicheader 1, 8, Sfx_SwitchPockets_Ch8
 ; f0a25
 
 Sfx_Unknown63: ; f0a25
-	dbw $07, Sfx_Unknown63_Ch8
+	musicheader 1, 8, Sfx_Unknown63_Ch8
 ; f0a28
 
 Sfx_Burn: ; f0a28
-	dbw $07, Sfx_Burn_Ch8
+	musicheader 1, 8, Sfx_Burn_Ch8
 ; f0a2b
 
 Sfx_TitleScreenEntrance: ; f0a2b
-	dbw $07, Sfx_TitleScreenEntrance_Ch8
+	musicheader 1, 8, Sfx_TitleScreenEntrance_Ch8
 ; f0a2e
 
 Sfx_Unknown66: ; f0a2e
-	dbw $04, Sfx_Unknown66_Ch5
+	musicheader 1, 5, Sfx_Unknown66_Ch5
 ; f0a31
 
 Sfx_GetCoinFromSlots: ; f0a31
-	dbw $04, Sfx_GetCoinFromSlots_Ch5
+	musicheader 1, 5, Sfx_GetCoinFromSlots_Ch5
 ; f0a34
 
 Sfx_PayDay: ; f0a34
-	dbw $44, Sfx_PayDay_Ch5
-	dbw $05, Sfx_PayDay_Ch6
+	musicheader 2, 5, Sfx_PayDay_Ch5
+	musicheader 1, 6, Sfx_PayDay_Ch6
 ; f0a3a
 
 Sfx_Metronome: ; f0a3a
-	dbw $04, Sfx_Metronome_Ch5
+	musicheader 1, 5, Sfx_Metronome_Ch5
 ; f0a3d
 
 Sfx_Peck: ; f0a3d
-	dbw $07, Sfx_Peck_Ch8
+	musicheader 1, 8, Sfx_Peck_Ch8
 ; f0a40
 
 Sfx_Kinesis: ; f0a40
-	dbw $04, Sfx_Kinesis_Ch5
+	musicheader 1, 5, Sfx_Kinesis_Ch5
 ; f0a43
 
 Sfx_Lick: ; f0a43
-	dbw $04, Sfx_Lick_Ch5
+	musicheader 1, 5, Sfx_Lick_Ch5
 ; f0a46
 
 Sfx_Pound: ; f0a46
-	dbw $07, Sfx_Pound_Ch8
+	musicheader 1, 8, Sfx_Pound_Ch8
 ; f0a49
 
 Sfx_MovePuzzlePiece: ; f0a49
-	dbw $07, Sfx_MovePuzzlePiece_Ch8
+	musicheader 1, 8, Sfx_MovePuzzlePiece_Ch8
 ; f0a4c
 
 Sfx_CometPunch: ; f0a4c
-	dbw $07, Sfx_CometPunch_Ch8
+	musicheader 1, 8, Sfx_CometPunch_Ch8
 ; f0a4f
 
 Sfx_MegaPunch: ; f0a4f
-	dbw $07, Sfx_MegaPunch_Ch8
+	musicheader 1, 8, Sfx_MegaPunch_Ch8
 ; f0a52
 
 Sfx_Scratch: ; f0a52
-	dbw $07, Sfx_Scratch_Ch8
+	musicheader 1, 8, Sfx_Scratch_Ch8
 ; f0a55
 
 Sfx_Vicegrip: ; f0a55
-	dbw $07, Sfx_Vicegrip_Ch8
+	musicheader 1, 8, Sfx_Vicegrip_Ch8
 ; f0a58
 
 Sfx_RazorWind: ; f0a58
-	dbw $07, Sfx_RazorWind_Ch8
+	musicheader 1, 8, Sfx_RazorWind_Ch8
 ; f0a5b
 
 Sfx_Cut: ; f0a5b
-	dbw $07, Sfx_Cut_Ch8
+	musicheader 1, 8, Sfx_Cut_Ch8
 ; f0a5e
 
 Sfx_WingAttack: ; f0a5e
-	dbw $07, Sfx_WingAttack_Ch8
+	musicheader 1, 8, Sfx_WingAttack_Ch8
 ; f0a61
 
 Sfx_Whirlwind: ; f0a61
-	dbw $07, Sfx_Whirlwind_Ch8
+	musicheader 1, 8, Sfx_Whirlwind_Ch8
 ; f0a64
 
 Sfx_Bind: ; f0a64
-	dbw $07, Sfx_Bind_Ch8
+	musicheader 1, 8, Sfx_Bind_Ch8
 ; f0a67
 
 Sfx_VineWhip: ; f0a67
-	dbw $07, Sfx_VineWhip_Ch8
+	musicheader 1, 8, Sfx_VineWhip_Ch8
 ; f0a6a
 
 Sfx_DoubleKick: ; f0a6a
-	dbw $07, Sfx_DoubleKick_Ch8
+	musicheader 1, 8, Sfx_DoubleKick_Ch8
 ; f0a6d
 
 Sfx_MegaKick: ; f0a6d
-	dbw $07, Sfx_MegaKick_Ch8
+	musicheader 1, 8, Sfx_MegaKick_Ch8
 ; f0a70
 
 Sfx_Headbutt: ; f0a70
-	dbw $07, Sfx_Headbutt_Ch8
+	musicheader 1, 8, Sfx_Headbutt_Ch8
 ; f0a73
 
 Sfx_HornAttack: ; f0a73
-	dbw $07, Sfx_HornAttack_Ch8
+	musicheader 1, 8, Sfx_HornAttack_Ch8
 ; f0a76
 
 Sfx_Tackle: ; f0a76
-	dbw $07, Sfx_Tackle_Ch8
+	musicheader 1, 8, Sfx_Tackle_Ch8
 ; f0a79
 
 Sfx_PoisonSting: ; f0a79
-	dbw $07, Sfx_PoisonSting_Ch8
+	musicheader 1, 8, Sfx_PoisonSting_Ch8
 ; f0a7c
 
 Sfx_Powder: ; f0a7c
-	dbw $07, Sfx_Powder_Ch8
+	musicheader 1, 8, Sfx_Powder_Ch8
 ; f0a7f
 
 Sfx_Doubleslap: ; f0a7f
-	dbw $07, Sfx_Doubleslap_Ch8
+	musicheader 1, 8, Sfx_Doubleslap_Ch8
 ; f0a82
 
 Sfx_Bite: ; f0a82
-	dbw $44, Sfx_Bite_Ch5
-	dbw $07, Sfx_Bite_Ch8
+	musicheader 2, 5, Sfx_Bite_Ch5
+	musicheader 1, 8, Sfx_Bite_Ch8
 ; f0a88
 
 Sfx_JumpKick: ; f0a88
-	dbw $07, Sfx_JumpKick_Ch8
+	musicheader 1, 8, Sfx_JumpKick_Ch8
 ; f0a8b
 
 Sfx_Stomp: ; f0a8b
-	dbw $07, Sfx_Stomp_Ch8
+	musicheader 1, 8, Sfx_Stomp_Ch8
 ; f0a8e
 
 Sfx_TailWhip: ; f0a8e
-	dbw $07, Sfx_TailWhip_Ch8
+	musicheader 1, 8, Sfx_TailWhip_Ch8
 ; f0a91
 
 Sfx_KarateChop: ; f0a91
-	dbw $07, Sfx_KarateChop_Ch8
+	musicheader 1, 8, Sfx_KarateChop_Ch8
 ; f0a94
 
 Sfx_Submission: ; f0a94
-	dbw $07, Sfx_Submission_Ch8
+	musicheader 1, 8, Sfx_Submission_Ch8
 ; f0a97
 
 Sfx_WaterGun: ; f0a97
-	dbw $44, Sfx_WaterGun_Ch5
-	dbw $07, Sfx_WaterGun_Ch8
+	musicheader 2, 5, Sfx_WaterGun_Ch5
+	musicheader 1, 8, Sfx_WaterGun_Ch8
 ; f0a9d
 
 Sfx_SwordsDance: ; f0a9d
-	dbw $07, Sfx_SwordsDance_Ch8
+	musicheader 1, 8, Sfx_SwordsDance_Ch8
 ; f0aa0
 
 Sfx_Thunder: ; f0aa0
-	dbw $07, Sfx_Thunder_Ch8
+	musicheader 1, 8, Sfx_Thunder_Ch8
 ; f0aa3
 
 Sfx_Supersonic: ; f0aa3
-	dbw $84, Sfx_Supersonic_Ch5
-	dbw $05, Sfx_Supersonic_Ch6
-	dbw $07, Sfx_Supersonic_Ch8
+	musicheader 3, 5, Sfx_Supersonic_Ch5
+	musicheader 1, 6, Sfx_Supersonic_Ch6
+	musicheader 1, 8, Sfx_Supersonic_Ch8
 ; f0aac
 
 Sfx_Leer: ; f0aac
-	dbw $84, Sfx_Leer_Ch5
-	dbw $05, Sfx_Leer_Ch6
-	dbw $07, Sfx_Leer_Ch8
+	musicheader 3, 5, Sfx_Leer_Ch5
+	musicheader 1, 6, Sfx_Leer_Ch6
+	musicheader 1, 8, Sfx_Leer_Ch8
 ; f0ab5
 
 Sfx_Ember: ; f0ab5
-	dbw $44, Sfx_Ember_Ch5
-	dbw $07, Sfx_Ember_Ch8
+	musicheader 2, 5, Sfx_Ember_Ch5
+	musicheader 1, 8, Sfx_Ember_Ch8
 ; f0abb
 
 Sfx_Bubblebeam: ; f0abb
-	dbw $84, Sfx_Bubblebeam_Ch5
-	dbw $05, Sfx_Bubblebeam_Ch6
-	dbw $07, Sfx_Bubblebeam_Ch8
+	musicheader 3, 5, Sfx_Bubblebeam_Ch5
+	musicheader 1, 6, Sfx_Bubblebeam_Ch6
+	musicheader 1, 8, Sfx_Bubblebeam_Ch8
 ; f0ac4
 
 Sfx_HydroPump: ; f0ac4
-	dbw $44, Sfx_HydroPump_Ch5
-	dbw $07, Sfx_HydroPump_Ch8
+	musicheader 2, 5, Sfx_HydroPump_Ch5
+	musicheader 1, 8, Sfx_HydroPump_Ch8
 ; f0aca
 
 Sfx_Surf: ; f0aca
-	dbw $84, Sfx_Surf_Ch5
-	dbw $05, Sfx_Surf_Ch6
-	dbw $07, Sfx_Surf_Ch8
+	musicheader 3, 5, Sfx_Surf_Ch5
+	musicheader 1, 6, Sfx_Surf_Ch6
+	musicheader 1, 8, Sfx_Surf_Ch8
 ; f0ad3
 
 Sfx_Psybeam: ; f0ad3
-	dbw $84, Sfx_Psybeam_Ch5
-	dbw $05, Sfx_Psybeam_Ch6
-	dbw $07, Sfx_Psybeam_Ch8
+	musicheader 3, 5, Sfx_Psybeam_Ch5
+	musicheader 1, 6, Sfx_Psybeam_Ch6
+	musicheader 1, 8, Sfx_Psybeam_Ch8
 ; f0adc
 
 Sfx_Charge: ; f0adc
-	dbw $84, Sfx_Charge_Ch5
-	dbw $05, Sfx_Charge_Ch6
-	dbw $07, Sfx_Charge_Ch8
+	musicheader 3, 5, Sfx_Charge_Ch5
+	musicheader 1, 6, Sfx_Charge_Ch6
+	musicheader 1, 8, Sfx_Charge_Ch8
 ; f0ae5
 
 Sfx_Thundershock: ; f0ae5
-	dbw $84, Sfx_Thundershock_Ch5
-	dbw $05, Sfx_Thundershock_Ch6
-	dbw $07, Sfx_Thundershock_Ch8
+	musicheader 3, 5, Sfx_Thundershock_Ch5
+	musicheader 1, 6, Sfx_Thundershock_Ch6
+	musicheader 1, 8, Sfx_Thundershock_Ch8
 ; f0aee
 
 Sfx_Psychic: ; f0aee
-	dbw $84, Sfx_Psychic_Ch5
-	dbw $05, Sfx_Psychic_Ch6
-	dbw $07, Sfx_Psychic_Ch8
+	musicheader 3, 5, Sfx_Psychic_Ch5
+	musicheader 1, 6, Sfx_Psychic_Ch6
+	musicheader 1, 8, Sfx_Psychic_Ch8
 ; f0af7
 
 Sfx_Screech: ; f0af7
-	dbw $44, Sfx_Screech_Ch5
-	dbw $05, Sfx_Screech_Ch6
+	musicheader 2, 5, Sfx_Screech_Ch5
+	musicheader 1, 6, Sfx_Screech_Ch6
 ; f0afd
 
 Sfx_BoneClub: ; f0afd
-	dbw $44, Sfx_BoneClub_Ch5
-	dbw $05, Sfx_BoneClub_Ch6
+	musicheader 2, 5, Sfx_BoneClub_Ch5
+	musicheader 1, 6, Sfx_BoneClub_Ch6
 ; f0b03
 
 Sfx_Sharpen: ; f0b03
-	dbw $44, Sfx_Sharpen_Ch5
-	dbw $05, Sfx_Sharpen_Ch6
+	musicheader 2, 5, Sfx_Sharpen_Ch5
+	musicheader 1, 6, Sfx_Sharpen_Ch6
 ; f0b09
 
 Sfx_EggBomb: ; f0b09
-	dbw $84, Sfx_EggBomb_Ch5
-	dbw $05, Sfx_EggBomb_Ch6
-	dbw $07, Sfx_EggBomb_Ch8
+	musicheader 3, 5, Sfx_EggBomb_Ch5
+	musicheader 1, 6, Sfx_EggBomb_Ch6
+	musicheader 1, 8, Sfx_EggBomb_Ch8
 ; f0b12
 
 Sfx_Sing: ; f0b12
-	dbw $44, Sfx_Sing_Ch5
-	dbw $05, Sfx_Sing_Ch6
+	musicheader 2, 5, Sfx_Sing_Ch5
+	musicheader 1, 6, Sfx_Sing_Ch6
 ; f0b18
 
 Sfx_HyperBeam: ; f0b18
-	dbw $84, Sfx_HyperBeam_Ch5
-	dbw $05, Sfx_HyperBeam_Ch6
-	dbw $07, Sfx_HyperBeam_Ch8
+	musicheader 3, 5, Sfx_HyperBeam_Ch5
+	musicheader 1, 6, Sfx_HyperBeam_Ch6
+	musicheader 1, 8, Sfx_HyperBeam_Ch8
 ; f0b21
 
 Sfx_Shine: ; f0b21
-	dbw $04, Sfx_Shine_Ch5
+	musicheader 1, 5, Sfx_Shine_Ch5
 ; f0b24
 
 Sfx_Unknown5F: ; f0b24
-	dbw $84, Sfx_Unknown5F_Ch5
-	dbw $05, Sfx_Unknown5F_Ch6
+	musicheader 3, 5, Sfx_Unknown5F_Ch5
+	musicheader 1, 6, Sfx_Unknown5F_Ch6
 Sfx_Sandstorm: ; f0b2a
-	dbw $07, Sfx_Sandstorm_Ch8
+	musicheader 1, 8, Sfx_Sandstorm_Ch8
 ; f0b2d
 
 Sfx_HangUp: ; f0b2d
-	dbw $04, Sfx_HangUp_Ch5
+	musicheader 1, 5, Sfx_HangUp_Ch5
 ; f0b30
 
 Sfx_NoSignal: ; f0b30
-	dbw $04, Sfx_NoSignal_Ch5
+	musicheader 1, 5, Sfx_NoSignal_Ch5
 ; f0b33
 
 Sfx_Elevator: ; f0b33
-	dbw $c4, Sfx_Elevator_Ch5
-	dbw $05, Sfx_Elevator_Ch6
-	dbw $06, Sfx_Elevator_Ch7
-	dbw $07, Sfx_Elevator_Ch8
+	musicheader 4, 5, Sfx_Elevator_Ch5
+	musicheader 1, 6, Sfx_Elevator_Ch6
+	musicheader 1, 7, Sfx_Elevator_Ch7
+	musicheader 1, 8, Sfx_Elevator_Ch8
 ; f0b3f
 
 Sfx_DexFanfare5079: ; f0b3f
 Sfx_LevelUp: ; f0b3f
-	dbw $c4, Sfx_DexFanfare5079_Ch5
-	dbw $05, Sfx_DexFanfare5079_Ch6
-	dbw $06, Sfx_DexFanfare5079_Ch7
-	dbw $07, Sfx_DexFanfare5079_Ch8
+	musicheader 4, 5, Sfx_DexFanfare5079_Ch5
+	musicheader 1, 6, Sfx_DexFanfare5079_Ch6
+	musicheader 1, 7, Sfx_DexFanfare5079_Ch7
+	musicheader 1, 8, Sfx_DexFanfare5079_Ch8
 ; f0b4b
 
 Sfx_DexFanfare5079_Ch5: ; f0b4b
@@ -553,10 +553,10 @@
 ; f0b86
 
 Sfx_KeyItem: ; f0b86
-	dbw $c4, Sfx_KeyItem_Ch5
-	dbw $05, Sfx_KeyItem_Ch6
-	dbw $06, Sfx_KeyItem_Ch7
-	dbw $07, Sfx_KeyItem_Ch8
+	musicheader 4, 5, Sfx_KeyItem_Ch5
+	musicheader 1, 6, Sfx_KeyItem_Ch6
+	musicheader 1, 7, Sfx_KeyItem_Ch7
+	musicheader 1, 8, Sfx_KeyItem_Ch8
 ; f0b92
 
 Sfx_KeyItem_Ch5: ; f0b92
@@ -623,10 +623,10 @@
 ; f0bd5
 
 Sfx_DexFanfare2049: ; f0bd5
-	dbw $c4, Sfx_DexFanfare2049_Ch5
-	dbw $05, Sfx_DexFanfare2049_Ch6
-	dbw $06, Sfx_DexFanfare2049_Ch7
-	dbw $07, Sfx_DexFanfare2049_Ch8
+	musicheader 4, 5, Sfx_DexFanfare2049_Ch5
+	musicheader 1, 6, Sfx_DexFanfare2049_Ch6
+	musicheader 1, 7, Sfx_DexFanfare2049_Ch7
+	musicheader 1, 8, Sfx_DexFanfare2049_Ch8
 ; f0be1
 
 Sfx_DexFanfare2049_Ch5: ; f0be1
@@ -707,10 +707,10 @@
 ; f0c2f
 
 Sfx_Item: ; f0c2f
-	dbw $c4, Sfx_Item_Ch5
-	dbw $05, Sfx_Item_Ch6
-	dbw $06, Sfx_Item_Ch7
-	dbw $07, Sfx_Item_Ch8
+	musicheader 4, 5, Sfx_Item_Ch5
+	musicheader 1, 6, Sfx_Item_Ch6
+	musicheader 1, 7, Sfx_Item_Ch7
+	musicheader 1, 8, Sfx_Item_Ch8
 ; f0c3b
 
 Sfx_Item_Ch5: ; f0c3b
@@ -786,10 +786,10 @@
 ; f0c89
 
 Sfx_CaughtMon: ; f0c89
-	dbw $c4, Sfx_CaughtMon_Ch5
-	dbw $05, Sfx_CaughtMon_Ch6
-	dbw $06, Sfx_CaughtMon_Ch7
-	dbw $07, Sfx_CaughtMon_Ch8
+	musicheader 4, 5, Sfx_CaughtMon_Ch5
+	musicheader 1, 6, Sfx_CaughtMon_Ch6
+	musicheader 1, 7, Sfx_CaughtMon_Ch7
+	musicheader 1, 8, Sfx_CaughtMon_Ch8
 ; f0c95
 
 Sfx_CaughtMon_Ch5: ; f0c95
@@ -868,10 +868,10 @@
 ; f0cea
 
 Sfx_DexFanfare80109: ; f0cea
-	dbw $c4, Sfx_DexFanfare80109_Ch5
-	dbw $05, Sfx_DexFanfare80109_Ch6
-	dbw $06, Sfx_DexFanfare80109_Ch7
-	dbw $07, Sfx_DexFanfare80109_Ch8
+	musicheader 4, 5, Sfx_DexFanfare80109_Ch5
+	musicheader 1, 6, Sfx_DexFanfare80109_Ch6
+	musicheader 1, 7, Sfx_DexFanfare80109_Ch7
+	musicheader 1, 8, Sfx_DexFanfare80109_Ch8
 ; f0cf6
 
 Sfx_DexFanfare80109_Ch5: ; f0cf6
@@ -963,16 +963,16 @@
 ; f0d56
 
 Sfx_Fanfare2: ; f0d56
-	dbw $84, Sfx_Fanfare2_Ch5
-	dbw $05, Sfx_Fanfare2_Ch6
-	dbw $07, Sfx_Fanfare2_Ch8
+	musicheader 3, 5, Sfx_Fanfare2_Ch5
+	musicheader 1, 6, Sfx_Fanfare2_Ch6
+	musicheader 1, 8, Sfx_Fanfare2_Ch8
 ; f0d5f
 
 UnknownSfx: ; f0d5f
-	dbw $c4, UnknownSfx_Ch5
-	dbw $05, UnknownSfx_Ch6
-	dbw $06, UnknownSfx_Ch7
-	dbw $07, UnknownSfx_Ch8
+	musicheader 4, 5, UnknownSfx_Ch5
+	musicheader 1, 6, UnknownSfx_Ch6
+	musicheader 1, 7, UnknownSfx_Ch7
+	musicheader 1, 8, UnknownSfx_Ch8
 ; f0d6b
 
 UnknownSfx_Ch5: ; f0d6b
@@ -1051,16 +1051,16 @@
 ; f0dbe
 
 Sfx_Fanfare: ; f0dbe
-	dbw $84, Sfx_Fanfare_Ch5
-	dbw $05, Sfx_Fanfare_Ch6
-	dbw $07, Sfx_Fanfare_Ch8
+	musicheader 3, 5, Sfx_Fanfare_Ch5
+	musicheader 1, 6, Sfx_Fanfare_Ch6
+	musicheader 1, 8, Sfx_Fanfare_Ch8
 ; f0dc7
 
 Sfx_RegisterPhoneNumber: ; f0dc7
-	dbw $c4, Sfx_RegisterPhoneNumber_Ch5
-	dbw $05, Sfx_RegisterPhoneNumber_Ch6
-	dbw $06, Sfx_RegisterPhoneNumber_Ch7
-	dbw $07, Sfx_RegisterPhoneNumber_Ch8
+	musicheader 4, 5, Sfx_RegisterPhoneNumber_Ch5
+	musicheader 1, 6, Sfx_RegisterPhoneNumber_Ch6
+	musicheader 1, 7, Sfx_RegisterPhoneNumber_Ch7
+	musicheader 1, 8, Sfx_RegisterPhoneNumber_Ch8
 ; f0dd3
 
 Sfx_RegisterPhoneNumber_Ch5: ; f0dd3
@@ -1088,7 +1088,7 @@
 	endchannel
 ; f0def
 
-	db $df
+	togglesfx
 
 Sfx_RegisterPhoneNumber_Ch6: ; f0df0
 	togglesfx
@@ -1113,7 +1113,7 @@
 	endchannel
 ; f0e07
 
-	db $df
+	togglesfx
 
 Sfx_RegisterPhoneNumber_Ch7: ; f0e08
 	togglesfx
@@ -1135,7 +1135,7 @@
 	endchannel
 ; f0e1b
 
-	db $df
+	togglesfx
 
 Sfx_RegisterPhoneNumber_Ch8: ; f0e1c
 	togglesfx
@@ -1147,12 +1147,12 @@
 	endchannel
 ; f0e25
 
-	db $df
+	togglesfx
 
 Sfx_3RdPlace: ; f0e26
-	dbw $84, Sfx_3RdPlace_Ch5
-	dbw $05, Sfx_3RdPlace_Ch6
-	dbw $06, Sfx_3RdPlace_Ch7
+	musicheader 3, 5, Sfx_3RdPlace_Ch5
+	musicheader 1, 6, Sfx_3RdPlace_Ch6
+	musicheader 1, 7, Sfx_3RdPlace_Ch7
 ; f0e2f
 
 Sfx_3RdPlace_Ch5: ; f0e2f
@@ -1173,7 +1173,7 @@
 	endchannel
 ; f0e44
 
-	db $df
+	togglesfx
 
 Sfx_3RdPlace_Ch6: ; f0e45
 	togglesfx
@@ -1191,7 +1191,7 @@
 	endchannel
 ; f0e55
 
-	db $df
+	togglesfx
 
 Sfx_3RdPlace_Ch7: ; f0e56
 	togglesfx
@@ -1209,14 +1209,14 @@
 	endchannel
 ; f0e65
 
-	db $df
+	togglesfx
 
 Sfx_GetEggFromDaycareLady: ; f0e66
 Sfx_GetEggFromDaycareMan: ; f0e66
-	dbw $c4, Sfx_GetEggFromDaycareLady_Ch5
-	dbw $05, Sfx_GetEggFromDaycareLady_Ch6
-	dbw $06, Sfx_GetEggFromDaycareLady_Ch7
-	dbw $07, Sfx_GetEggFromDaycareLady_Ch8
+	musicheader 4, 5, Sfx_GetEggFromDaycareLady_Ch5
+	musicheader 1, 6, Sfx_GetEggFromDaycareLady_Ch6
+	musicheader 1, 7, Sfx_GetEggFromDaycareLady_Ch7
+	musicheader 1, 8, Sfx_GetEggFromDaycareLady_Ch8
 ; f0e72
 
 Sfx_GetEggFromDaycareLady_Ch5: ; f0e72
@@ -1251,7 +1251,7 @@
 	endchannel
 ; f0e9a
 
-	db $df
+	togglesfx
 
 Sfx_GetEggFromDaycareLady_Ch6: ; f0e9b
 Sfx_GetEggFromDaycareMan_Ch6: ; f0e9b
@@ -1282,7 +1282,7 @@
 	endchannel
 ; f0ebd
 
-	db $df
+	togglesfx
 
 Sfx_GetEggFromDaycareLady_Ch7: ; f0ebe
 Sfx_GetEggFromDaycareMan_Ch7: ; f0ebe
@@ -1303,7 +1303,7 @@
 	endchannel
 ; f0ecf
 
-	db $df
+	togglesfx
 
 Sfx_GetEggFromDaycareLady_Ch8: ; f0ed0
 Sfx_GetEggFromDaycareMan_Ch8: ; f0ed0
@@ -1317,13 +1317,13 @@
 	endchannel
 ; f0edb
 
-	db $df
+	togglesfx
 
 Sfx_MoveDeleted: ; f0edc
-	dbw $c4, Sfx_MoveDeleted_Ch5
-	dbw $05, Sfx_MoveDeleted_Ch6
-	dbw $06, Sfx_MoveDeleted_Ch7
-	dbw $07, Sfx_MoveDeleted_Ch8
+	musicheader 4, 5, Sfx_MoveDeleted_Ch5
+	musicheader 1, 6, Sfx_MoveDeleted_Ch6
+	musicheader 1, 7, Sfx_MoveDeleted_Ch7
+	musicheader 1, 8, Sfx_MoveDeleted_Ch8
 ; f0ee8
 
 Sfx_MoveDeleted_Ch5: ; f0ee8
@@ -1355,7 +1355,7 @@
 	endchannel
 ; f0f0c
 
-	db $df
+	togglesfx
 
 Sfx_MoveDeleted_Ch6: ; f0f0d
 	togglesfx
@@ -1392,7 +1392,7 @@
 	endchannel
 ; f0f36
 
-	db $df
+	togglesfx
 
 Sfx_MoveDeleted_Ch7: ; f0f37
 	togglesfx
@@ -1420,7 +1420,7 @@
 	endchannel
 ; f0f52
 
-	db $df
+	togglesfx
 
 Sfx_MoveDeleted_Ch8: ; f0f53
 	togglesfx
@@ -1433,13 +1433,13 @@
 	endchannel
 ; f0f5d
 
-	db $df
+	togglesfx
 
 Sfx_2ndPlace: ; f0f5e
-	dbw $c4, Sfx_2ndPlace_Ch5
-	dbw $05, Sfx_2ndPlace_Ch6
-	dbw $06, Sfx_2ndPlace_Ch7
-	dbw $07, Sfx_2ndPlace_Ch8
+	musicheader 4, 5, Sfx_2ndPlace_Ch5
+	musicheader 1, 6, Sfx_2ndPlace_Ch6
+	musicheader 1, 7, Sfx_2ndPlace_Ch7
+	musicheader 1, 8, Sfx_2ndPlace_Ch8
 ; f0f6a
 
 Sfx_2ndPlace_Ch5: ; f0f6a
@@ -1475,7 +1475,7 @@
 	endchannel
 ; f0f91
 
-	db $df
+	togglesfx
 
 Sfx_2ndPlace_Ch6: ; f0f92
 	togglesfx
@@ -1500,7 +1500,7 @@
 	endchannel
 ; f0fac
 
-	db $df
+	togglesfx
 
 Sfx_2ndPlace_Ch7: ; f0fad
 	togglesfx
@@ -1539,7 +1539,7 @@
 	endchannel
 ; f0fd1
 
-	db $df
+	togglesfx
 
 Sfx_2ndPlace_Ch8: ; f0fd2
 	togglesfx
@@ -1555,13 +1555,13 @@
 	endchannel
 ; f0fe1
 
-	db $df
+	togglesfx
 
 Sfx_1stPlace: ; f0fe2
-	dbw $c4, Sfx_1stPlace_Ch5
-	dbw $05, Sfx_1stPlace_Ch6
-	dbw $06, Sfx_1stPlace_Ch7
-	dbw $07, Sfx_1stPlace_Ch8
+	musicheader 4, 5, Sfx_1stPlace_Ch5
+	musicheader 1, 6, Sfx_1stPlace_Ch6
+	musicheader 1, 7, Sfx_1stPlace_Ch7
+	musicheader 1, 8, Sfx_1stPlace_Ch8
 ; f0fee
 
 Sfx_1stPlace_Ch5: ; f0fee
@@ -1604,7 +1604,7 @@
 	endchannel
 ; f101f
 
-	db $df
+	togglesfx
 
 Sfx_1stPlace_Ch6: ; f1020
 	togglesfx
@@ -1629,7 +1629,7 @@
 	endchannel
 ; f103c
 
-	db $df
+	togglesfx
 
 Sfx_1stPlace_Ch7: ; f103d
 	togglesfx
@@ -1654,7 +1654,7 @@
 	endchannel
 ; f1053
 
-	db $df
+	togglesfx
 
 Sfx_1stPlace_Ch8: ; f1054
 	togglesfx
@@ -1676,13 +1676,13 @@
 	endchannel
 ; f1068
 
-	db $df
+	togglesfx
 
 Sfx_ChooseACard: ; f1069
-	dbw $c4, Sfx_ChooseACard_Ch5
-	dbw $05, Sfx_ChooseACard_Ch6
-	dbw $06, Sfx_ChooseACard_Ch7
-	dbw $07, Sfx_ChooseACard_Ch8
+	musicheader 4, 5, Sfx_ChooseACard_Ch5
+	musicheader 1, 6, Sfx_ChooseACard_Ch6
+	musicheader 1, 7, Sfx_ChooseACard_Ch7
+	musicheader 1, 8, Sfx_ChooseACard_Ch8
 ; f1075
 
 Sfx_ChooseACard_Ch5: ; f1075
@@ -1730,7 +1730,7 @@
 	endchannel
 ; f10a8
 
-	db $df
+	togglesfx
 
 Sfx_ChooseACard_Ch6: ; f10a9
 	togglesfx
@@ -1763,7 +1763,7 @@
 	endchannel
 ; f10c8
 
-	db $df
+	togglesfx
 
 Sfx_ChooseACard_Ch7: ; f10c9
 	togglesfx
@@ -1800,7 +1800,7 @@
 	endchannel
 ; f10eb
 
-	db $df
+	togglesfx
 
 Sfx_ChooseACard_Ch8: ; f10ec
 	togglesfx
@@ -1826,13 +1826,13 @@
 	endchannel
 ; f1103
 
-	db $df
+	togglesfx
 
 Sfx_GetTm: ; f1104
-	dbw $c4, Sfx_GetTm_Ch5
-	dbw $05, Sfx_GetTm_Ch6
-	dbw $06, Sfx_GetTm_Ch7
-	dbw $07, Sfx_GetTm_Ch8
+	musicheader 4, 5, Sfx_GetTm_Ch5
+	musicheader 1, 6, Sfx_GetTm_Ch6
+	musicheader 1, 7, Sfx_GetTm_Ch7
+	musicheader 1, 8, Sfx_GetTm_Ch8
 ; f1110
 
 Sfx_GetTm_Ch5: ; f1110
@@ -1860,7 +1860,7 @@
 	endchannel
 ; f1130
 
-	db $df
+	togglesfx
 
 Sfx_GetTm_Ch6: ; f1131
 	togglesfx
@@ -1884,7 +1884,7 @@
 	endchannel
 ; f114b
 
-	db $df
+	togglesfx
 
 Sfx_GetTm_Ch7: ; f114c
 	togglesfx
@@ -1916,7 +1916,7 @@
 	endchannel
 ; f1169
 
-	db $df
+	togglesfx
 
 Sfx_GetTm_Ch8: ; f116a
 	togglesfx
@@ -1937,13 +1937,13 @@
 	endchannel
 ; f117c
 
-	db $df
+	togglesfx
 
 Sfx_GetBadge: ; f117d
-	dbw $c4, Sfx_GetBadge_Ch5
-	dbw $05, Sfx_GetBadge_Ch6
-	dbw $06, Sfx_GetBadge_Ch7
-	dbw $07, Sfx_GetBadge_Ch8
+	musicheader 4, 5, Sfx_GetBadge_Ch5
+	musicheader 1, 6, Sfx_GetBadge_Ch6
+	musicheader 1, 7, Sfx_GetBadge_Ch7
+	musicheader 1, 8, Sfx_GetBadge_Ch8
 ; f1189
 
 Sfx_GetBadge_Ch5: ; f1189
@@ -1966,7 +1966,7 @@
 	endchannel
 ; f11a9
 
-	db $df
+	togglesfx
 
 Sfx_GetBadge_branch_f11aa: ; f11aa
 	note __, 5
@@ -2039,7 +2039,7 @@
 	endchannel
 ; f11f4
 
-	db $df
+	togglesfx
 
 Sfx_GetBadge_Ch7: ; f11f5
 	togglesfx
@@ -2079,7 +2079,7 @@
 	endchannel
 ; f121a
 
-	db $df
+	togglesfx
 
 Sfx_GetBadge_Ch8: ; f121b
 	togglesfx
@@ -2106,13 +2106,13 @@
 	endchannel
 ; f1235
 
-	db $df
+	togglesfx
 
 Sfx_QuitSlots: ; f1236
-	dbw $c4, Sfx_QuitSlots_Ch5
-	dbw $05, Sfx_QuitSlots_Ch6
-	dbw $06, Sfx_QuitSlots_Ch7
-	dbw $07, Sfx_QuitSlots_Ch8
+	musicheader 4, 5, Sfx_QuitSlots_Ch5
+	musicheader 1, 6, Sfx_QuitSlots_Ch6
+	musicheader 1, 7, Sfx_QuitSlots_Ch7
+	musicheader 1, 8, Sfx_QuitSlots_Ch8
 ; f1242
 
 Sfx_QuitSlots_Ch5: ; f1242
@@ -2146,7 +2146,7 @@
 	endchannel
 ; f1265
 
-	db $df
+	togglesfx
 
 Sfx_QuitSlots_Ch6: ; f1266
 	togglesfx
@@ -2174,7 +2174,7 @@
 	endchannel
 ; f1282
 
-	db $df
+	togglesfx
 
 Sfx_QuitSlots_Ch7: ; f1283
 	togglesfx
@@ -2206,7 +2206,7 @@
 	endchannel
 ; f12a0
 
-	db $df
+	togglesfx
 
 Sfx_QuitSlots_Ch8: ; f12a1
 	togglesfx
@@ -2227,11 +2227,11 @@
 	endchannel
 ; f12b3
 
-	db $df
+	togglesfx
 
 Sfx_Protect: ; f12b4
-	dbw $44, Sfx_Protect_Ch5
-	dbw $07, Sfx_Protect_Ch8
+	musicheader 2, 5, Sfx_Protect_Ch5
+	musicheader 1, 8, Sfx_Protect_Ch8
 ; f12ba
 
 Sfx_Protect_Ch5: ; f12ba
@@ -2273,16 +2273,16 @@
 
 Sfx_Protect_Ch8: ; f12e5
 Sfx_Protect_branch_f12e5: ; f12e5
-	noise $9, $9e, $0
-	noise $9, $be, $11
+	noise __, 10, $9e, $0
+	noise __, 10, $be, $11
 	loopchannel 6, Sfx_Protect_branch_f12e5
-	noise $9, $a7, $0
-	noise $10, $75, $11
+	noise __, 10, $a7, $0
+	noise C_,  1, $75, $11
 	endchannel
 ; f12f6
 
 Sfx_Sketch: ; f12f6
-	dbw $04, Sfx_Sketch_Ch5
+	musicheader 1, 5, Sfx_Sketch_Ch5
 ; f12f9
 
 Sfx_Sketch_Ch5: ; f12f9
@@ -2289,10 +2289,10 @@
 	dutycycle $1
 	soundinput $a5
 Sfx_Sketch_branch_f12fd: ; f12fd
-	sound $2, $f1, $06e0
-	sound $d, $af, $05b0
-	sound $4, $0, 0
-	sound $9, $f4, $0718
+	sound __,  3, $f1, $06e0
+	sound __, 14, $af, $05b0
+	sound __,  5, $0, 0
+	sound __, 10, $f4, $0718
 	loopchannel 3, Sfx_Sketch_branch_f12fd
 	soundinput $8
 	endchannel
@@ -2299,111 +2299,111 @@
 ; f1314
 
 Sfx_RainDance: ; f1314
-	dbw $07, Sfx_RainDance_Ch8
+	musicheader 1, 8, Sfx_RainDance_Ch8
 ; f1317
 
 Sfx_RainDance_Ch8: ; f1317
 Sfx_RainDance_branch_f1317: ; f1317
-	noise $b, $7d, $50
-	noise $6, $7d, $4f
-	noise $b, $7f, $47
-	noise $f, $6e, $22
+	noise __, 12, $7d, $50
+	noise __,  7, $7d, $4f
+	noise __, 12, $7f, $47
+	noise __, 16, $6e, $22
 	loopchannel 3, Sfx_RainDance_branch_f1317
-	noise $6, $6d, $50
-	noise $5, $5d, $4f
-	noise $5, $4f, $47
-	noise $a, $32, $46
+	noise __,  7, $6d, $50
+	noise __,  6, $5d, $4f
+	noise __,  6, $4f, $47
+	noise __, 11, $32, $46
 	endchannel
 ; f1334
 
 Sfx_Aeroblast: ; f1334
-	dbw $44, Sfx_Aeroblast_Ch5
-	dbw $07, Sfx_Aeroblast_Ch8
+	musicheader 2, 5, Sfx_Aeroblast_Ch5
+	musicheader 1, 8, Sfx_Aeroblast_Ch8
 ; f133a
 
 Sfx_Aeroblast_Ch5: ; f133a
 	unknownmusic0xde $f2
 	soundinput $f5
-	sound $1c, $f8, $0580
+	sound C_, 13, $f8, $0580
 	soundinput $8
 	endchannel
 ; f1345
 
 Sfx_Aeroblast_Ch8: ; f1345
-	noise $4, $f8, $6c
-	noise $4, $c8, $5c
-	noise $4, $78, $5b
-	noise $10, $31, $5a
+	noise __,  5, $f8, $6c
+	noise __,  5, $c8, $5c
+	noise __,  5, $78, $5b
+	noise C_,  1, $31, $5a
 	endchannel
 ; f1352
 
 Sfx_Spark: ; f1352
-	dbw $07, Sfx_Spark_Ch8
+	musicheader 1, 8, Sfx_Spark_Ch8
 ; f1355
 
 Sfx_Spark_Ch8: ; f1355
 Sfx_Spark_branch_f1355: ; f1355
-	noise $4, $f8, $5d
-	noise $4, $d8, $6f
+	noise __,  5, $f8, $5d
+	noise __,  5, $d8, $6f
 	loopchannel 2, Sfx_Spark_branch_f1355
 	endchannel
 ; f1360
 
 Sfx_Curse: ; f1360
-	dbw $44, Sfx_Curse_Ch5
-	dbw $07, Sfx_Curse_Ch8
+	musicheader 2, 5, Sfx_Curse_Ch5
+	musicheader 1, 8, Sfx_Curse_Ch8
 ; f1366
 
 Sfx_Curse_Ch5: ; f1366
 	dutycycle $3
-	sound $4, $f2, $0483
-	sound $4, $f2, $0511
-	sound $4, $f2, $0589
-	sound $4, $f2, $05ed
+	sound __,  5, $f2, $0483
+	sound __,  5, $f2, $0511
+	sound __,  5, $f2, $0589
+	sound __,  5, $f2, $05ed
 	endchannel
 ; f1379
 
 Sfx_Curse_Ch8: ; f1379
-	noise $14, $9a, $9
+	noise C_,  5, $9a, $9
 	endchannel
 ; f137d
 
 Sfx_Rage: ; f137d
-	dbw $44, Sfx_Rage_Ch5
-	dbw $07, Sfx_Rage_Ch8
+	musicheader 2, 5, Sfx_Rage_Ch5
+	musicheader 1, 8, Sfx_Rage_Ch8
 ; f1383
 
 Sfx_Rage_Ch5: ; f1383
 	dutycycle $0
-	sound $3, $d1, $07b0
-	sound $3, $d1, $07c2
-	sound $18, $d2, $07d5
+	sound __,  4, $d1, $07b0
+	sound __,  4, $d1, $07c2
+	sound C_,  9, $d2, $07d5
 	endchannel
 ; f1392
 
 Sfx_Rage_Ch8: ; f1392
-	noise $3, $f4, $1a
-	noise $3, $f4, $19
-	noise $18, $f2, $18
+	noise __,  4, $f4, $1a
+	noise __,  4, $f4, $19
+	noise C_,  9, $f2, $18
 	endchannel
 ; f139c
 
 Sfx_Thief: ; f139c
-	dbw $07, Sfx_Thief_Ch8
+	musicheader 1, 8, Sfx_Thief_Ch8
 ; f139f
 
 Sfx_Thief_Ch8: ; f139f
 Sfx_Thief_branch_f139f: ; f139f
-	noise $0, $0, $0
-	noise $4, $e1, $12
-	noise $0, $0, $0
-	noise $2, $b1, $22
+	noise __,  1, $0, $0
+	noise __,  5, $e1, $12
+	noise __,  1, $0, $0
+	noise __,  3, $b1, $22
 	loopchannel 2, Sfx_Thief_branch_f139f
 	endchannel
 ; f13b0
 
 Sfx_Thief2: ; f13b0
-	dbw $04, Sfx_Thief2_Ch5
+	musicheader 1, 5, Sfx_Thief2_Ch5
 ; f13b3
 
 Sfx_Thief2_Ch5: ; f13b3
@@ -2427,32 +2427,32 @@
 ; f13ca
 
 Sfx_SpiderWeb: ; f13ca
-	dbw $44, Sfx_SpiderWeb_Ch5
-	dbw $07, Sfx_SpiderWeb_Ch8
+	musicheader 2, 5, Sfx_SpiderWeb_Ch5
+	musicheader 1, 8, Sfx_SpiderWeb_Ch8
 ; f13d0
 
 Sfx_SpiderWeb_Ch5: ; f13d0
 	dutycycle $0
-	sound $20, $7f, $0720
+	sound C#,  1, $7f, $0720
 	soundinput $95
-	sound $4, $f8, $0620
-	sound $4, $e8, $0630
-	sound $4, $d8, $0640
-	sound $4, $95, $0620
-	sound $4, $73, $0630
-	sound $4, $51, $0640
+	sound __,  5, $f8, $0620
+	sound __,  5, $e8, $0630
+	sound __,  5, $d8, $0640
+	sound __,  5, $95, $0620
+	sound __,  5, $73, $0630
+	sound __,  5, $51, $0640
 	soundinput $8
 	endchannel
 ; f13f3
 
 Sfx_SpiderWeb_Ch8: ; f13f3
-	noise $20, $ef, $0
+	noise C#,  1, $ef, $0
 	endchannel
 ; f13f7
 
 Sfx_MindReader: ; f13f7
-	dbw $44, Sfx_MindReader_Ch5
-	dbw $07, Sfx_MindReader_Ch8
+	musicheader 2, 5, Sfx_MindReader_Ch5
+	musicheader 1, 8, Sfx_MindReader_Ch8
 ; f13fd
 
 Sfx_MindReader_Ch5: ; f13fd
@@ -2476,13 +2476,13 @@
 ; f1416
 
 Sfx_MindReader_Ch8: ; f1416
-	noise $11, $af, $19
-	noise $12, $af, $18
+	noise C_,  2, $af, $19
+	noise C_,  3, $af, $18
 	endchannel
 ; f141d
 
 Sfx_Nightmare: ; f141d
-	dbw $04, Sfx_Nightmare_Ch5
+	musicheader 1, 5, Sfx_Nightmare_Ch5
 ; f1420
 
 Sfx_Nightmare_Ch5: ; f1420
@@ -2489,16 +2489,16 @@
 	dutycycle $0
 	soundinput $34
 Sfx_Nightmare_branch_f1424: ; f1424
-	sound $3, $ba, $0631
-	sound $2, $0, 0
-	sound $3, $f8, $0621
-	sound $2, $0, 0
-	sound $3, $f8, $0611
-	sound $2, $0, 0
-	sound $3, $e8, $0601
-	sound $2, $0, 0
-	sound $3, $e8, $05f1
-	sound $2, $0, 0
+	sound __,  4, $ba, $0631
+	sound __,  3, $0, 0
+	sound __,  4, $f8, $0621
+	sound __,  3, $0, 0
+	sound __,  4, $f8, $0611
+	sound __,  3, $0, 0
+	sound __,  4, $e8, $0601
+	sound __,  3, $0, 0
+	sound __,  4, $e8, $05f1
+	sound __,  3, $0, 0
 	loopchannel 2, Sfx_Nightmare_branch_f1424
 	soundinput $8
 	endchannel
@@ -2505,123 +2505,123 @@
 ; f1453
 
 Sfx_Snore: ; f1453
-	dbw $07, Sfx_Snore_Ch8
+	musicheader 1, 8, Sfx_Snore_Ch8
 ; f1456
 
 Sfx_Snore_Ch8: ; f1456
-	noise $2, $ea, $4b
-	noise $2, $ea, $5b
-	noise $2, $0, $0
-	noise $4, $ee, $47
-	noise $4, $ee, $46
-	noise $4, $ee, $45
+	noise __,  3, $ea, $4b
+	noise __,  3, $ea, $5b
+	noise __,  3, $0, $0
+	noise __,  5, $ee, $47
+	noise __,  5, $ee, $46
+	noise __,  5, $ee, $45
 	endchannel
 ; f1469
 
 Sfx_SweetKiss: ; f1469
-	dbw $04, Sfx_SweetKiss_Ch5
+	musicheader 1, 5, Sfx_SweetKiss_Ch5
 ; f146c
 
 Sfx_SweetKiss_Ch5: ; f146c
 	dutycycle $2
 Sfx_SweetKiss_branch_f146e: ; f146e
-	sound $2, $c1, $07c8
-	sound $2, $d1, $07da
+	sound __,  3, $c1, $07c8
+	sound __,  3, $d1, $07da
 	loopchannel 2, Sfx_SweetKiss_branch_f146e
-	sound $1a, $f1, $07e2
+	sound C_, 11, $f1, $07e2
 	endchannel
 ; f147f
 
 Sfx_SweetKiss2: ; f147f
-	dbw $04, Sfx_SweetKiss2_Ch5
+	musicheader 1, 5, Sfx_SweetKiss2_Ch5
 ; f1482
 
 Sfx_SweetKiss2_Ch5: ; f1482
 	dutycycle $0
 	soundinput $97
-	sound $2, $f4, $0772
-	sound $4, $0, 0
-	sound $2, $c4, $0772
-	sound $4, $0, 0
-	sound $2, $b4, $0772
-	sound $4, $0, 0
-	sound $2, $a1, $0772
+	sound __,  3, $f4, $0772
+	sound __,  5, $0, 0
+	sound __,  3, $c4, $0772
+	sound __,  5, $0, 0
+	sound __,  3, $b4, $0772
+	sound __,  5, $0, 0
+	sound __,  3, $a1, $0772
 	soundinput $8
 	endchannel
 ; f14a5
 
 Sfx_BellyDrum: ; f14a5
-	dbw $44, Sfx_BellyDrum_Ch5
-	dbw $07, Sfx_BellyDrum_Ch8
+	musicheader 2, 5, Sfx_BellyDrum_Ch5
+	musicheader 1, 8, Sfx_BellyDrum_Ch8
 ; f14ab
 
 Sfx_BellyDrum_Ch5: ; f14ab
 	dutycycle $2
 	soundinput $ac
-	sound $c, $f1, $05a3
+	sound __, 13, $f1, $05a3
 	soundinput $8
 	endchannel
 ; f14b6
 
 Sfx_BellyDrum_Ch8: ; f14b6
-	noise $c, $b1, $6c
+	noise __, 13, $b1, $6c
 	endchannel
 ; f14ba
 
 Sfx_Unknown7F: ; f14ba
-	dbw $04, Sfx_Unknown7F_Ch5
+	musicheader 1, 5, Sfx_Unknown7F_Ch5
 ; f14bd
 
 Sfx_Unknown7F_Ch5: ; f14bd
 	dutycycle $2
 	soundinput $95
-	sound $2, $c9, $03b3
-	sound $5, $f8, $0463
-	sound $4, $d1, $0543
+	sound __,  3, $c9, $03b3
+	sound __,  6, $f8, $0463
+	sound __,  5, $d1, $0543
 	soundinput $8
 	endchannel
 ; f14d0
 
 Sfx_SludgeBomb: ; f14d0
-	dbw $44, Sfx_SludgeBomb_Ch5
-	dbw $07, Sfx_SludgeBomb_Ch8
+	musicheader 2, 5, Sfx_SludgeBomb_Ch5
+	musicheader 1, 8, Sfx_SludgeBomb_Ch8
 ; f14d6
 
 Sfx_SludgeBomb_Ch5: ; f14d6
 	dutycycle $2
 	soundinput $c5
-	sound $3, $f8, $0581
-	sound $1, $0, 0
+	sound __,  4, $f8, $0581
+	sound __,  2, $0, 0
 	soundinput $cb
-	sound $10, $f2, $05d1
+	sound C_,  1, $f2, $05d1
 	soundinput $8
 	endchannel
 ; f14eb
 
 Sfx_SludgeBomb_Ch8: ; f14eb
-	noise $3, $e2, $6e
-	noise $1, $0, $0
-	noise $10, $e2, $6d
+	noise __,  4, $e2, $6e
+	noise __,  2, $0, $0
+	noise C_,  1, $e2, $6d
 	endchannel
 ; f14f5
 
 Sfx_Foresight: ; f14f5
-	dbw $04, Sfx_Foresight_Ch5
+	musicheader 1, 5, Sfx_Foresight_Ch5
 ; f14f8
 
 Sfx_Foresight_Ch5: ; f14f8
-	sound $3, $f4, $07b5
-	sound $3, $f5, $07c8
-	sound $8, $f4, $07da
-	sound $2, $0, 0
-	sound $8, $c1, $07da
-	sound $2, $0, 0
-	sound $8, $91, $07da
+	sound __,  4, $f4, $07b5
+	sound __,  4, $f5, $07c8
+	sound __,  9, $f4, $07da
+	sound __,  3, $0, 0
+	sound __,  9, $c1, $07da
+	sound __,  3, $0, 0
+	sound __,  9, $91, $07da
 	endchannel
 ; f1515
 
 Sfx_Spite: ; f1515
-	dbw $04, Sfx_Spite_Ch5
+	musicheader 1, 5, Sfx_Spite_Ch5
 ; f1518
 
 Sfx_Spite_Ch5: ; f1518
@@ -2652,21 +2652,21 @@
 ; f153a
 
 Sfx_Outrage: ; f153a
-	dbw $07, Sfx_Outrage_Ch8
+	musicheader 1, 8, Sfx_Outrage_Ch8
 ; f153d
 
 Sfx_Outrage_Ch8: ; f153d
-	noise $b, $ea, $6c
-	noise $b, $ea, $6b
-	noise $b, $ea, $6a
-	noise $b, $ea, $69
-	noise $b, $e1, $59
+	noise __, 12, $ea, $6c
+	noise __, 12, $ea, $6b
+	noise __, 12, $ea, $6a
+	noise __, 12, $ea, $69
+	noise __, 12, $e1, $59
 	endchannel
 ; f154d
 
 Sfx_PerishSong: ; f154d
-	dbw $44, Sfx_PerishSong_Ch5
-	dbw $05, Sfx_PerishSong_Ch6
+	musicheader 2, 5, Sfx_PerishSong_Ch5
+	musicheader 1, 6, Sfx_PerishSong_Ch6
 ; f1553
 
 Sfx_PerishSong_Ch5: ; f1553
@@ -2695,113 +2695,113 @@
 ; f1570
 
 Sfx_GigaDrain: ; f1570
-	dbw $44, Sfx_GigaDrain_Ch5
-	dbw $07, Sfx_GigaDrain_Ch8
+	musicheader 2, 5, Sfx_GigaDrain_Ch5
+	musicheader 1, 8, Sfx_GigaDrain_Ch8
 ; f1576
 
 Sfx_GigaDrain_Ch5: ; f1576
 	dutycycle $2
 	soundinput $97
-	sound $4, $f8, $0680
-	sound $14, $f8, $0680
-	sound $14, $c8, $0660
-	sound $14, $a8, $0670
-	sound $14, $88, $0680
-	sound $14, $f8, $0561
-	sound $14, $c8, $0541
-	sound $14, $a8, $0521
-	sound $14, $88, $0511
+	sound __,  5, $f8, $0680
+	sound C_,  5, $f8, $0680
+	sound C_,  5, $c8, $0660
+	sound C_,  5, $a8, $0670
+	sound C_,  5, $88, $0680
+	sound C_,  5, $f8, $0561
+	sound C_,  5, $c8, $0541
+	sound C_,  5, $a8, $0521
+	sound C_,  5, $88, $0511
 	soundinput $8
 	endchannel
 ; f15a1
 
 Sfx_GigaDrain_Ch8: ; f15a1
-	noise $4, $c8, $44
-	noise $14, $c8, $50
-	noise $14, $c8, $52
-	noise $14, $c8, $54
-	noise $14, $c8, $56
-	noise $40, $c7, $57
+	noise __,  5, $c8, $44
+	noise C_,  5, $c8, $50
+	noise C_,  5, $c8, $52
+	noise C_,  5, $c8, $54
+	noise C_,  5, $c8, $56
+	noise D#,  1, $c7, $57
 	endchannel
 ; f15b4
 
 Sfx_Attract: ; f15b4
-	dbw $04, Sfx_Attract_Ch5
+	musicheader 1, 5, Sfx_Attract_Ch5
 ; f15b7
 
 Sfx_Attract_Ch5: ; f15b7
 	dutycycle $0
 	soundinput $77
-	sound $4, $a9, $06f0
-	sound $c, $f8, $0720
+	sound __,  5, $a9, $06f0
+	sound __, 13, $f8, $0720
 	soundinput $7f
-	sound $8, $f1, $0740
+	sound __,  9, $f1, $0740
 	soundinput $8
 	endchannel
 ; f15cc
 
 Sfx_Kinesis2: ; f15cc
-	dbw $04, Sfx_Kinesis2_Ch5
+	musicheader 1, 5, Sfx_Kinesis2_Ch5
 ; f15cf
 
 Sfx_Kinesis2_Ch5: ; f15cf
 	dutycycle $0
-	sound $2, $f3, $0796
-	sound $2, $23, $0796
-	sound $14, $f1, $07c4
+	sound __,  3, $f3, $0796
+	sound __,  3, $23, $0796
+	sound C_,  5, $f1, $07c4
 	endchannel
 ; f15de
 
 Sfx_ZapCannon: ; f15de
-	dbw $07, Sfx_ZapCannon_Ch8
+	musicheader 1, 8, Sfx_ZapCannon_Ch8
 ; f15e1
 
 Sfx_ZapCannon_Ch8: ; f15e1
 Sfx_ZapCannon_branch_f15e1: ; f15e1
-	noise $2, $e1, $49
-	noise $0, $0, $0
+	noise __,  3, $e1, $49
+	noise __,  1, $0, $0
 	loopchannel 8, Sfx_ZapCannon_branch_f15e1
-	noise $8, $e1, $49
+	noise __,  9, $e1, $49
 	endchannel
 ; f15ef
 
 Sfx_MeanLook: ; f15ef
-	dbw $04, Sfx_MeanLook_Ch5
+	musicheader 1, 5, Sfx_MeanLook_Ch5
 ; f15f2
 
 Sfx_MeanLook_Ch5: ; f15f2
 	soundinput $77
 	dutycycle $3
-	sound $2, $f8, $0720
+	sound __,  3, $f8, $0720
 Sfx_MeanLook_branch_f15fa: ; f15fa
-	sound $1, $88, $0660
-	sound $2, $f8, $0790
+	sound __,  2, $88, $0660
+	sound __,  3, $f8, $0790
 	loopchannel 5, Sfx_MeanLook_branch_f15fa
-	sound $c, $f8, $0700
-	sound $c, $c8, $0720
-	sound $c, $a8, $0700
-	sound $c, $78, $0720
-	sound $c, $48, $0700
-	sound $c, $28, $0720
+	sound __, 13, $f8, $0700
+	sound __, 13, $c8, $0720
+	sound __, 13, $a8, $0700
+	sound __, 13, $78, $0720
+	sound __, 13, $48, $0700
+	sound __, 13, $28, $0720
 	soundinput $8
 	endchannel
 ; f1621
 
 Sfx_HealBell: ; f1621
-	dbw $04, Sfx_HealBell_Ch5
+	musicheader 1, 5, Sfx_HealBell_Ch5
 ; f1624
 
 Sfx_HealBell_Ch5: ; f1624
 	dutycycle $1
-	sound $1, $f1, $07da
-	sound $1, $d1, $07d9
-	sound $1, $f1, $07da
-	sound $8, $d1, $07db
+	sound __,  2, $f1, $07da
+	sound __,  2, $d1, $07d9
+	sound __,  2, $f1, $07da
+	sound __,  9, $d1, $07db
 	endchannel
 ; f1637
 
 Sfx_Return: ; f1637
-	dbw $04, Sfx_Return_Ch5
+	musicheader 1, 5, Sfx_Return_Ch5
 ; f163a
 
 Sfx_Return_Ch5: ; f163a
@@ -2808,10 +2808,10 @@
 	dutycycle $0
 Sfx_Return_branch_f163c: ; f163c
 	soundinput $bf
-	sound $8, $f1, $0759
+	sound __,  9, $f1, $0759
 	soundinput $57
-	sound $8, $f1, $0759
-	sound $10, $0, 0
+	sound __,  9, $f1, $0759
+	sound C_,  1, $0, 0
 	loopchannel 2, Sfx_Return_branch_f163c
 	soundinput $8
 	endchannel
@@ -2818,27 +2818,27 @@
 ; f1653
 
 Sfx_ExpBar: ; f1653
-	dbw $04, Sfx_ExpBar_Ch5
+	musicheader 1, 5, Sfx_ExpBar_Ch5
 ; f1656
 
 Sfx_ExpBar_Ch5: ; f1656
 	dutycycle $2
 	soundinput $d7
-	sound $8, $e1, $0750
+	sound __,  9, $e1, $0750
 	soundinput $e7
-	sound $8, $48, $06e0
-	sound $8, $58, $06f8
-	sound $8, $68, $0710
-	sound $8, $78, $0728
-	sound $8, $88, $0740
-	sound $8, $98, $0758
-	sound $10, $a8, $0770
+	sound __,  9, $48, $06e0
+	sound __,  9, $58, $06f8
+	sound __,  9, $68, $0710
+	sound __,  9, $78, $0728
+	sound __,  9, $88, $0740
+	sound __,  9, $98, $0758
+	sound C_,  1, $a8, $0770
 	soundinput $8
 	endchannel
 ; f167f
 
 Sfx_MilkDrink: ; f167f
-	dbw $04, Sfx_MilkDrink_Ch5
+	musicheader 1, 5, Sfx_MilkDrink_Ch5
 ; f1682
 
 Sfx_MilkDrink_Ch5: ; f1682
@@ -2845,11 +2845,11 @@
 	dutycycle $2
 Sfx_MilkDrink_branch_f1684: ; f1684
 	soundinput $a4
-	sound $2, $ea, $04e0
-	sound $d, $f7, $0290
+	sound __,  3, $ea, $04e0
+	sound __, 14, $f7, $0290
 	soundinput $9e
-	sound $4, $c9, $05e1
-	sound $2, $0, 0
+	sound __,  5, $c9, $05e1
+	sound __,  3, $0, 0
 	loopchannel 6, Sfx_MilkDrink_branch_f1684
 	soundinput $8
 	endchannel
@@ -2856,7 +2856,7 @@
 ; f169f
 
 Sfx_Present: ; f169f
-	dbw $04, Sfx_Present_Ch5
+	musicheader 1, 5, Sfx_Present_Ch5
 ; f16a2
 
 Sfx_Present_Ch5: ; f16a2
@@ -2863,60 +2863,60 @@
 	dutycycle $2
 	soundinput $d6
 Sfx_Present_branch_f16a6: ; f16a6
-	sound $2, $f1, $0740
-	sound $1, $0, 0
+	sound __,  3, $f1, $0740
+	sound __,  2, $0, 0
 	loopchannel 3, Sfx_Present_branch_f16a6
-	sound $10, $f1, $0780
+	sound C_,  1, $f1, $0780
 	soundinput $8
 	endchannel
 ; f16b9
 
 Sfx_MorningSun: ; f16b9
-	dbw $04, Sfx_MorningSun_Ch5
+	musicheader 1, 5, Sfx_MorningSun_Ch5
 ; f16bc
 
 Sfx_MorningSun_Ch5: ; f16bc
 	dutycycle $3
 Sfx_MorningSun_branch_f16be: ; f16be
-	sound $2, $f1, $07e4
-	sound $2, $f1, $07e0
-	sound $5, $f2, $07e7
+	sound __,  3, $f1, $07e4
+	sound __,  3, $f1, $07e0
+	sound __,  6, $f2, $07e7
 	loopchannel 3, Sfx_MorningSun_branch_f16be
-	sound $1, $0, 0
-	sound $8, $c2, $07e7
-	sound $1, $0, 0
-	sound $8, $82, $07e7
+	sound __,  2, $0, 0
+	sound __,  9, $c2, $07e7
+	sound __,  2, $0, 0
+	sound __,  9, $82, $07e7
 	endchannel
 ; f16df
 
 Sfx_Moonlight: ; f16df
-	dbw $04, Sfx_Moonlight_Ch5
+	musicheader 1, 5, Sfx_Moonlight_Ch5
 ; f16e2
 
 Sfx_Moonlight_Ch5: ; f16e2
 	dutycycle $2
 Sfx_Moonlight_branch_f16e4: ; f16e4
-	sound $1, $f8, $07d0
-	sound $4, $f1, $07e0
+	sound __,  2, $f8, $07d0
+	sound __,  5, $f1, $07e0
 	loopchannel 2, Sfx_Moonlight_branch_f16e4
-	sound $10, $f1, $07e0
-	sound $10, $d1, $07e0
-	sound $10, $81, $07e0
+	sound C_,  1, $f1, $07e0
+	sound C_,  1, $d1, $07e0
+	sound C_,  1, $81, $07e0
 	endchannel
 ; f16fd
 
 Sfx_Encore: ; f16fd
-	dbw $44, Sfx_Encore_Ch5
-	dbw $07, Sfx_Encore_Ch8
+	musicheader 2, 5, Sfx_Encore_Ch5
+	musicheader 1, 8, Sfx_Encore_Ch8
 ; f1703
 
 Sfx_Encore_Ch5: ; f1703
 	dutycycle $2
 	soundinput $ce
-	sound $10, $0, 0
+	sound C_,  1, $0, 0
 Sfx_Encore_branch_f170b: ; f170b
-	sound $2, $f8, $0774
-	sound $24, $0, 0
+	sound __,  3, $f8, $0774
+	sound C#,  5, $0, 0
 	loopchannel 2, Sfx_Encore_branch_f170b
 	soundinput $8
 	endchannel
@@ -2923,64 +2923,64 @@
 ; f171a
 
 Sfx_Encore_Ch8: ; f171a
-	noise $30, $1f, $36
-	noise $30, $76, $36
+	noise D_,  1, $1f, $36
+	noise D_,  1, $76, $36
 	endchannel
 ; f1721
 
 Sfx_BeatUp: ; f1721
-	dbw $07, Sfx_BeatUp_Ch8
+	musicheader 1, 8, Sfx_BeatUp_Ch8
 ; f1724
 
 Sfx_BeatUp_Ch8: ; f1724
-	noise $2, $e8, $69
-	noise $6, $d8, $24
-	noise $2, $e8, $6c
-	noise $4, $c8, $46
-	noise $6, $d1, $24
+	noise __,  3, $e8, $69
+	noise __,  7, $d8, $24
+	noise __,  3, $e8, $6c
+	noise __,  5, $c8, $46
+	noise __,  7, $d1, $24
 	endchannel
 ; f1734
 
 Sfx_SweetScent: ; f1734
-	dbw $04, Sfx_SweetScent_Ch5
+	musicheader 1, 5, Sfx_SweetScent_Ch5
 ; f1737
 
 Sfx_SweetScent_Ch5: ; f1737
 	dutycycle $2
 	soundinput $96
-	sound $6, $f8, $0760
-	sound $6, $e8, $0720
+	sound __,  7, $f8, $0760
+	sound __,  7, $e8, $0720
 	soundinput $df
-	sound $16, $f1, $0730
+	sound C_,  7, $f1, $0730
 	soundinput $8
 	endchannel
 ; f174c
 
 Sfx_BatonPass: ; f174c
-	dbw $44, Sfx_BatonPass_Ch5
-	dbw $07, Sfx_BatonPass_Ch8
+	musicheader 2, 5, Sfx_BatonPass_Ch5
+	musicheader 1, 8, Sfx_BatonPass_Ch8
 ; f1752
 
 Sfx_BatonPass_Ch5: ; f1752
 	dutycycle $2
 	soundinput $f7
-	sound $20, $f2, $0680
-	sound $1, $f1, $0760
-	sound $20, $0, 0
-	sound $1, $f1, $0760
-	sound $1a, $0, 0
-	sound $1, $f1, $0760
+	sound C#,  1, $f2, $0680
+	sound __,  2, $f1, $0760
+	sound C#,  1, $0, 0
+	sound __,  2, $f1, $0760
+	sound C_, 11, $0, 0
+	sound __,  2, $f1, $0760
 	soundinput $8
 	endchannel
 ; f1771
 
 Sfx_BatonPass_Ch8: ; f1771
-	noise $20, $f2, $20
+	noise C#,  1, $f2, $20
 	endchannel
 ; f1775
 
 Sfx_EggCrack: ; f1775
-	dbw $04, Sfx_EggCrack_Ch5
+	musicheader 1, 5, Sfx_EggCrack_Ch5
 ; f1778
 
 Sfx_EggCrack_Ch5: ; f1778
@@ -2996,7 +2996,7 @@
 ; f1784
 
 Sfx_Evolved: ; f1784
-	dbw $04, Sfx_Evolved_Ch5
+	musicheader 1, 5, Sfx_Evolved_Ch5
 ; f1787
 
 Sfx_Evolved_Ch5: ; f1787
@@ -3021,7 +3021,7 @@
 ; f179b
 
 Sfx_MasterBall: ; f179b
-	dbw $04, Sfx_MasterBall_Ch5
+	musicheader 1, 5, Sfx_MasterBall_Ch5
 ; f179e
 
 Sfx_MasterBall_Ch5: ; f179e
@@ -3056,7 +3056,7 @@
 ; f17c0
 
 Sfx_EggHatch: ; f17c0
-	dbw $04, Sfx_EggHatch_Ch5
+	musicheader 1, 5, Sfx_EggHatch_Ch5
 ; f17c3
 
 Sfx_EggHatch_Ch5: ; f17c3
@@ -3079,86 +3079,86 @@
 ; f17d9
 
 Sfx_GsIntroCharizardFireball: ; f17d9
-	dbw $07, Sfx_GsIntroCharizardFireball_Ch8
+	musicheader 1, 8, Sfx_GsIntroCharizardFireball_Ch8
 ; f17dc
 
 Sfx_GsIntroCharizardFireball_Ch8: ; f17dc
-	noise $8, $cf, $4d
-	noise $8, $f1, $37
+	noise __,  9, $cf, $4d
+	noise __,  9, $f1, $37
 Sfx_GsIntroCharizardFireball_branch_f17e2: ; f17e2
-	noise $1, $f8, $4f
-	noise $0, $c8, $26
-	noise $1, $d8, $5f
-	noise $0, $a8, $37
+	noise __,  2, $f8, $4f
+	noise __,  1, $c8, $26
+	noise __,  2, $d8, $5f
+	noise __,  1, $a8, $37
 	loopchannel 12, Sfx_GsIntroCharizardFireball_branch_f17e2
-	noise $3, $f8, $6f
-	noise $4, $d8, $5f
-	noise $c, $d8, $5c
-	noise $28, $d3, $4f
+	noise __,  4, $f8, $6f
+	noise __,  5, $d8, $5f
+	noise __, 13, $d8, $5c
+	noise C#,  9, $d3, $4f
 	endchannel
 ; f17ff
 
 Sfx_GsIntroPokemonAppears: ; f17ff
-	dbw $07, Sfx_GsIntroPokemonAppears_Ch8
+	musicheader 1, 8, Sfx_GsIntroPokemonAppears_Ch8
 ; f1802
 
 Sfx_GsIntroPokemonAppears_Ch8: ; f1802
-	noise $1, $88, $4f
-	noise $2, $8f, $2
-	noise $2, $5f, $12
-	noise $2, $3f, $22
-	noise $0, $f8, $27
-	noise $1, $f8, $4f
-	noise $8, $f1, $0
+	noise __,  2, $88, $4f
+	noise __,  3, $8f, $2
+	noise __,  3, $5f, $12
+	noise __,  3, $3f, $22
+	noise __,  1, $f8, $27
+	noise __,  2, $f8, $4f
+	noise __,  9, $f1, $0
 	endchannel
 ; f1818
 
 Sfx_Flash: ; f1818
-	dbw $04, Sfx_Flash_Ch5
+	musicheader 1, 5, Sfx_Flash_Ch5
 ; f181b
 
 Sfx_Flash_Ch5: ; f181b
 	dutycycle $1
 	soundinput $ef
-	sound $1, $40, $07e8
-	sound $1, $60, $07e8
-	sound $2, $80, $07e8
-	sound $5, $a0, $07e8
-	sound $6, $a0, $07e8
-	sound $7, $80, $07e8
-	sound $8, $60, $07e8
-	sound $9, $30, $07e8
-	sound $f, $12, $07e8
+	sound __,  2, $40, $07e8
+	sound __,  2, $60, $07e8
+	sound __,  3, $80, $07e8
+	sound __,  6, $a0, $07e8
+	sound __,  7, $a0, $07e8
+	sound __,  8, $80, $07e8
+	sound __,  9, $60, $07e8
+	sound __, 10, $30, $07e8
+	sound __, 16, $12, $07e8
 	soundinput $8
 	endchannel
 ; f1846
 
 Sfx_GameFreakLogoGs: ; f1846
-	dbw $04, Sfx_GameFreakLogoGs_Ch5
+	musicheader 1, 5, Sfx_GameFreakLogoGs_Ch5
 ; f1849
 
 Sfx_GameFreakLogoGs_Ch5: ; f1849
 	dutycycle $3
 	soundinput $7f
-	sound $4, $55, $07e2
-	sound $5, $75, $07e2
-	sound $6, $94, $07e2
-	sound $7, $b4, $07e2
-	sound $8, $b3, $07e2
-	sound $9, $93, $07e2
-	sound $a, $72, $07e2
-	sound $a, $53, $07e2
-	sound $a, $34, $07e2
-	sound $a, $15, $07e2
+	sound __,  5, $55, $07e2
+	sound __,  6, $75, $07e2
+	sound __,  7, $94, $07e2
+	sound __,  8, $b4, $07e2
+	sound __,  9, $b3, $07e2
+	sound __, 10, $93, $07e2
+	sound __, 11, $72, $07e2
+	sound __, 11, $53, $07e2
+	sound __, 11, $34, $07e2
+	sound __, 11, $15, $07e2
 	soundinput $8
 	endchannel
 ; f1878
 
 Sfx_DexFanfareLessThan20: ; f1878
-	dbw $c4, Sfx_DexFanfareLessThan20_Ch5
-	dbw $05, Sfx_DexFanfareLessThan20_Ch6
-	dbw $06, Sfx_DexFanfareLessThan20_Ch7
-	dbw $07, Sfx_DexFanfareLessThan20_Ch8
+	musicheader 4, 5, Sfx_DexFanfareLessThan20_Ch5
+	musicheader 1, 6, Sfx_DexFanfareLessThan20_Ch6
+	musicheader 1, 7, Sfx_DexFanfareLessThan20_Ch7
+	musicheader 1, 8, Sfx_DexFanfareLessThan20_Ch8
 ; f1884
 
 Sfx_DexFanfareLessThan20_Ch5: ; f1884
@@ -3181,7 +3181,7 @@
 	endchannel
 ; f189a
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfareLessThan20_Ch6: ; f189b
 	togglesfx
@@ -3201,7 +3201,7 @@
 	endchannel
 ; f18ac
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfareLessThan20_Ch7: ; f18ad
 	togglesfx
@@ -3230,7 +3230,7 @@
 	endchannel
 ; f18c7
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfareLessThan20_Ch8: ; f18c8
 	togglesfx
@@ -3242,13 +3242,13 @@
 	endchannel
 ; f18d1
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare140169: ; f18d2
-	dbw $c4, Sfx_DexFanfare140169_Ch5
-	dbw $05, Sfx_DexFanfare140169_Ch6
-	dbw $06, Sfx_DexFanfare140169_Ch7
-	dbw $07, Sfx_DexFanfare140169_Ch8
+	musicheader 4, 5, Sfx_DexFanfare140169_Ch5
+	musicheader 1, 6, Sfx_DexFanfare140169_Ch6
+	musicheader 1, 7, Sfx_DexFanfare140169_Ch7
+	musicheader 1, 8, Sfx_DexFanfare140169_Ch8
 ; f18de
 
 Sfx_DexFanfare140169_Ch5: ; f18de
@@ -3279,7 +3279,7 @@
 	endchannel
 ; f1900
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare140169_Ch6: ; f1901
 	togglesfx
@@ -3306,7 +3306,7 @@
 	endchannel
 ; f191d
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare140169_Ch7: ; f191e
 	togglesfx
@@ -3341,7 +3341,7 @@
 	endchannel
 ; f193e
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare140169_Ch8: ; f193f
 	togglesfx
@@ -3359,13 +3359,13 @@
 	endchannel
 ; f1950
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare170199: ; f1951
-	dbw $c4, Sfx_DexFanfare170199_Ch5
-	dbw $05, Sfx_DexFanfare170199_Ch6
-	dbw $06, Sfx_DexFanfare170199_Ch7
-	dbw $07, Sfx_DexFanfare170199_Ch8
+	musicheader 4, 5, Sfx_DexFanfare170199_Ch5
+	musicheader 1, 6, Sfx_DexFanfare170199_Ch6
+	musicheader 1, 7, Sfx_DexFanfare170199_Ch7
+	musicheader 1, 8, Sfx_DexFanfare170199_Ch8
 ; f195d
 
 Sfx_DexFanfare170199_Ch5: ; f195d
@@ -3396,7 +3396,7 @@
 	endchannel
 ; f1981
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare170199_Ch6: ; f1982
 	togglesfx
@@ -3425,7 +3425,7 @@
 	endchannel
 ; f19a2
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare170199_Ch7: ; f19a3
 	togglesfx
@@ -3454,7 +3454,7 @@
 	endchannel
 ; f19bf
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare170199_Ch8: ; f19c0
 	togglesfx
@@ -3480,10 +3480,10 @@
 	db $fd
 
 Sfx_DexFanfare200229: ; f19d6
-	dbw $c4, Sfx_DexFanfare200229_Ch5
-	dbw $05, Sfx_DexFanfare200229_Ch6
-	dbw $06, Sfx_DexFanfare200229_Ch7
-	dbw $07, Sfx_DexFanfare200229_Ch8
+	musicheader 4, 5, Sfx_DexFanfare200229_Ch5
+	musicheader 1, 6, Sfx_DexFanfare200229_Ch6
+	musicheader 1, 7, Sfx_DexFanfare200229_Ch7
+	musicheader 1, 8, Sfx_DexFanfare200229_Ch8
 ; f19e2
 
 Sfx_DexFanfare200229_Ch5: ; f19e2
@@ -3512,7 +3512,7 @@
 	endchannel
 ; f1a03
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare200229_Ch6: ; f1a04
 	togglesfx
@@ -3536,7 +3536,7 @@
 	endchannel
 ; f1a1e
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare200229_Ch7: ; f1a1f
 	togglesfx
@@ -3581,7 +3581,7 @@
 	endchannel
 ; f1a49
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare200229_Ch8: ; f1a4a
 	togglesfx
@@ -3611,13 +3611,13 @@
 	endchannel
 ; f1a65
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare230Plus: ; f1a66
-	dbw $c4, Sfx_DexFanfare230Plus_Ch5
-	dbw $05, Sfx_DexFanfare230Plus_Ch6
-	dbw $06, Sfx_DexFanfare230Plus_Ch7
-	dbw $07, Sfx_DexFanfare230Plus_Ch8
+	musicheader 4, 5, Sfx_DexFanfare230Plus_Ch5
+	musicheader 1, 6, Sfx_DexFanfare230Plus_Ch6
+	musicheader 1, 7, Sfx_DexFanfare230Plus_Ch7
+	musicheader 1, 8, Sfx_DexFanfare230Plus_Ch8
 ; f1a72
 
 Sfx_DexFanfare230Plus_Ch5: ; f1a72
@@ -3667,7 +3667,7 @@
 	endchannel
 ; f1ab1
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare230Plus_Ch6: ; f1ab2
 	togglesfx
@@ -3703,7 +3703,7 @@
 	endchannel
 ; f1ad9
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare230Plus_Ch7: ; f1ada
 	togglesfx
@@ -3753,7 +3753,7 @@
 	endchannel
 ; f1b0b
 
-	db $df
+	togglesfx
 
 Sfx_DexFanfare230Plus_Ch8: ; f1b0c
 	togglesfx
@@ -3790,202 +3790,202 @@
 	endchannel
 ; f1b32
 
-	db $df
+	togglesfx
 
 Sfx_NotVeryEffective: ; f1b33
-	dbw $07, Sfx_NotVeryEffective_Ch8
+	musicheader 1, 8, Sfx_NotVeryEffective_Ch8
 ; f1b36
 
 Sfx_NotVeryEffective_Ch8: ; f1b36
-	noise $4, $f1, $5f
-	noise $1, $a0, $42
-	noise $10, $f1, $53
+	noise __,  5, $f1, $5f
+	noise __,  2, $a0, $42
+	noise C_,  1, $f1, $53
 	endchannel
 ; f1b40
 
 Sfx_Damage: ; f1b40
-	dbw $07, Sfx_Damage_Ch8
+	musicheader 1, 8, Sfx_Damage_Ch8
 ; f1b43
 
 Sfx_Damage_Ch8: ; f1b43
-	noise $4, $f1, $5e
-	noise $1, $a0, $12
-	noise $4, $f0, $32
-	noise $10, $f1, $44
+	noise __,  5, $f1, $5e
+	noise __,  2, $a0, $12
+	noise __,  5, $f0, $32
+	noise C_,  1, $f1, $44
 	endchannel
 ; f1b50
 
 Sfx_SuperEffective: ; f1b50
-	dbw $07, Sfx_SuperEffective_Ch8
+	musicheader 1, 8, Sfx_SuperEffective_Ch8
 ; f1b53
 
 Sfx_SuperEffective_Ch8: ; f1b53
-	noise $3, $f1, $4f
-	noise $1, $c8, $22
-	noise $2, $f8, $3f
-	noise $3, $d0, $15
-	noise $20, $f2, $35
+	noise __,  4, $f1, $4f
+	noise __,  2, $c8, $22
+	noise __,  3, $f8, $3f
+	noise __,  4, $d0, $15
+	noise C#,  1, $f2, $35
 	endchannel
 ; f1b63
 
 Sfx_BallBounce: ; f1b63
-	dbw $44, Sfx_BallBounce_Ch5
-	dbw $05, Sfx_BallBounce_Ch6
+	musicheader 2, 5, Sfx_BallBounce_Ch5
+	musicheader 1, 6, Sfx_BallBounce_Ch6
 ; f1b69
 
 Sfx_BallBounce_Ch5: ; f1b69
 	dutycycle $2
-	sound $8, $e1, $0740
-	sound $17, $0, 0
-	sound $8, $b1, $0740
-	sound $17, $0, 0
-	sound $8, $81, $0740
-	sound $17, $0, 0
-	sound $8, $51, $0740
-	sound $17, $0, 0
+	sound __,  9, $e1, $0740
+	sound C_,  8, $0, 0
+	sound __,  9, $b1, $0740
+	sound C_,  8, $0, 0
+	sound __,  9, $81, $0740
+	sound C_,  8, $0, 0
+	sound __,  9, $51, $0740
+	sound C_,  8, $0, 0
 	endchannel
 ; f1b8c
 
 Sfx_BallBounce_Ch6: ; f1b8c
 	dutycycle $2
-	sound $2, $8, 0
-	sound $8, $b1, $0741
-	sound $17, $0, 0
-	sound $8, $81, $0741
-	sound $17, $0, 0
-	sound $8, $51, $0741
-	sound $17, $0, 0
-	sound $8, $21, $0741
-	sound $17, $0, 0
+	sound __,  3, $8, 0
+	sound __,  9, $b1, $0741
+	sound C_,  8, $0, 0
+	sound __,  9, $81, $0741
+	sound C_,  8, $0, 0
+	sound __,  9, $51, $0741
+	sound C_,  8, $0, 0
+	sound __,  9, $21, $0741
+	sound C_,  8, $0, 0
 	endchannel
 ; f1bb3
 
 Sfx_SweetScent2: ; f1bb3
-	dbw $44, Sfx_SweetScent2_Ch5
-	dbw $07, Sfx_SweetScent2_Ch8
+	musicheader 2, 5, Sfx_SweetScent2_Ch5
+	musicheader 1, 8, Sfx_SweetScent2_Ch8
 ; f1bb9
 
 Sfx_SweetScent2_Ch5: ; f1bb9
 	soundinput $af
 	dutycycle $1
-	sound $6, $f8, $05f0
-	sound $2, $f1, $0620
-	sound $10, $f1, $0650
+	sound __,  7, $f8, $05f0
+	sound __,  3, $f1, $0620
+	sound C_,  1, $f1, $0650
 	soundinput $8
 	endchannel
 ; f1bcc
 
 Sfx_SweetScent2_Ch8: ; f1bcc
-	noise $2, $e8, $22
-	noise $11, $aa, $0
+	noise __,  3, $e8, $22
+	noise C_,  2, $aa, $0
 Sfx_SweetScent2_branch_f1bd2: ; f1bd2
-	noise $4, $d9, $10
-	noise $8, $91, $0
-	noise $2, $61, $7
+	noise __,  5, $d9, $10
+	noise __,  9, $91, $0
+	noise __,  3, $61, $7
 	loopchannel 5, Sfx_SweetScent2_branch_f1bd2
-	noise $4, $99, $0
-	noise $a, $61, $0
-	noise $6, $59, $0
-	noise $2, $21, $7
+	noise __,  5, $99, $0
+	noise __, 11, $61, $0
+	noise __,  7, $59, $0
+	noise __,  3, $21, $7
 	endchannel
 ; f1bec
 
 Sfx_HitEndOfExpBar: ; f1bec
-	dbw $44, Sfx_HitEndOfExpBar_Ch5
-	dbw $05, Sfx_HitEndOfExpBar_Ch6
+	musicheader 2, 5, Sfx_HitEndOfExpBar_Ch5
+	musicheader 1, 6, Sfx_HitEndOfExpBar_Ch6
 ; f1bf2
 
 Sfx_HitEndOfExpBar_Ch5: ; f1bf2
 	dutycycle $2
-	sound $1, $e1, $0789
-	sound $1, $e1, $07a2
-	sound $10, $e1, $07b1
+	sound __,  2, $e1, $0789
+	sound __,  2, $e1, $07a2
+	sound C_,  1, $e1, $07b1
 	endchannel
 ; f1c01
 
 Sfx_HitEndOfExpBar_Ch6: ; f1c01
 	dutycycle $2
-	sound $1, $e1, $07a2
-	sound $1, $e1, $07b1
-	sound $10, $e1, $07c4
+	sound __,  2, $e1, $07a2
+	sound __,  2, $e1, $07b1
+	sound C_,  1, $e1, $07c4
 	endchannel
 ; f1c10
 
 Sfx_GiveTrademon: ; f1c10
-	dbw $04, Sfx_GiveTrademon_Ch5
+	musicheader 1, 5, Sfx_GiveTrademon_Ch5
 ; f1c13
 
 Sfx_GiveTrademon_Ch5: ; f1c13
-	sound $20, $0, 0
+	sound C#,  1, $0, 0
 	dutycycle $1
 	soundinput $a7
-	sound $1b, $f4, $0750
-	sound $1b, $d4, $0750
-	sound $1b, $b4, $0750
-	sound $1b, $94, $0750
-	sound $1b, $74, $0750
-	sound $1b, $54, $0750
-	sound $1b, $34, $0750
-	sound $1b, $14, $0750
+	sound C_, 12, $f4, $0750
+	sound C_, 12, $d4, $0750
+	sound C_, 12, $b4, $0750
+	sound C_, 12, $94, $0750
+	sound C_, 12, $74, $0750
+	sound C_, 12, $54, $0750
+	sound C_, 12, $34, $0750
+	sound C_, 12, $14, $0750
 	soundinput $8
 	endchannel
 ; f1c3e
 
 Sfx_GetTrademon: ; f1c3e
-	dbw $04, Sfx_GetTrademon_Ch5
+	musicheader 1, 5, Sfx_GetTrademon_Ch5
 ; f1c41
 
 Sfx_GetTrademon_Ch5: ; f1c41
-	sound $20, $0, 0
+	sound C#,  1, $0, 0
 	dutycycle $2
 	soundinput $bf
-	sound $1b, $14, $07bc
-	sound $1b, $34, $07bc
-	sound $1b, $54, $07bc
-	sound $1b, $74, $07bc
-	sound $1b, $94, $07bc
-	sound $1b, $b4, $07bc
-	sound $1b, $d4, $07bc
-	sound $1b, $f4, $07bc
+	sound C_, 12, $14, $07bc
+	sound C_, 12, $34, $07bc
+	sound C_, 12, $54, $07bc
+	sound C_, 12, $74, $07bc
+	sound C_, 12, $94, $07bc
+	sound C_, 12, $b4, $07bc
+	sound C_, 12, $d4, $07bc
+	sound C_, 12, $f4, $07bc
 	soundinput $8
 	endchannel
 ; f1c6c
 
 Sfx_TrainArrived: ; f1c6c
-	dbw $84, Sfx_TrainArrived_Ch5
-	dbw $05, Sfx_TrainArrived_Ch6
-	dbw $07, Sfx_TrainArrived_Ch8
+	musicheader 3, 5, Sfx_TrainArrived_Ch5
+	musicheader 1, 6, Sfx_TrainArrived_Ch6
+	musicheader 1, 8, Sfx_TrainArrived_Ch8
 ; f1c75
 
 Sfx_TrainArrived_Ch6: ; f1c75
 	tone $0008
-	sound $8, $0, 0
+	sound __,  9, $0, 0
 Sfx_TrainArrived_Ch5: ; f1c7c
 	dutycycle $2
-	sound $4, $5f, $0691
-	sound $4, $6f, $0694
-	sound $4, $78, $0697
-	sound $4, $7f, $069a
-	sound $4, $68, $06ae
-	sound $10, $6f, $06ab
-	sound $68, $65, $06a8
+	sound __,  5, $5f, $0691
+	sound __,  5, $6f, $0694
+	sound __,  5, $78, $0697
+	sound __,  5, $7f, $069a
+	sound __,  5, $68, $06ae
+	sound C_,  1, $6f, $06ab
+	sound F_,  9, $65, $06a8
 	endchannel
 ; f1c9b
 
 Sfx_TrainArrived_Ch8: ; f1c9b
-	noise $5, $af, $10
-	noise $4, $9f, $20
-	noise $4, $8f, $21
-	noise $4, $7f, $22
-	noise $4, $8f, $21
-	noise $4, $9f, $20
-	noise $4, $9f, $10
-	noise $68, $a3, $0
+	noise __,  6, $af, $10
+	noise __,  5, $9f, $20
+	noise __,  5, $8f, $21
+	noise __,  5, $7f, $22
+	noise __,  5, $8f, $21
+	noise __,  5, $9f, $20
+	noise __,  5, $9f, $10
+	noise F_,  9, $a3, $0
 	endchannel
 ; f1cb4
 
 Sfx_2Boops: ; f1cb4
-	dbw $04, Sfx_2Boops_Ch5
+	musicheader 1, 5, Sfx_2Boops_Ch5
 ; f1cb7
 
 Sfx_2Boops_Ch5: ; f1cb7
@@ -3992,10 +3992,10 @@
 	dutycycle $2
 Sfx_2Boops_branch_f1cb9: ; f1cb9
 	soundinput $79
-	sound $1, $99, $0563
-	sound $4, $f2, $04b5
+	sound __,  2, $99, $0563
+	sound __,  5, $f2, $04b5
 	soundinput $43
-	sound $10, $f8, $05cd
+	sound C_,  1, $f8, $05cd
 	loopchannel 2, Sfx_2Boops_branch_f1cb9
 	soundinput $8
 	endchannel
@@ -4002,12 +4002,12 @@
 ; f1cd0
 
 Sfx_UnknownCB: ; f1cd0
-	dbw $07, Sfx_UnknownCB_Ch8
+	musicheader 1, 8, Sfx_UnknownCB_Ch8
 ; f1cd3
 
 Sfx_Menu_Ch8: ; f1cd3
-	noise $1, $e2, $33
-	noise $8, $e1, $22
+	noise __,  2, $e2, $33
+	noise __,  9, $e1, $22
 	endchannel
 ; f1cda
 
@@ -4038,30 +4038,30 @@
 ; f1cf8
 
 Sfx_PlacePuzzlePieceDown_Ch8: ; f1cf8
-	noise $2, $f7, $24
-	noise $2, $f7, $34
-	noise $4, $f7, $44
-	noise $8, $f4, $55
-	noise $8, $f1, $44
+	noise __,  3, $f7, $24
+	noise __,  3, $f7, $34
+	noise __,  5, $f7, $44
+	noise __,  9, $f4, $55
+	noise __,  9, $f1, $44
 	endchannel
 ; f1d08
 
 Sfx_EnterDoor_Ch8: ; f1d08
-	noise $9, $f1, $44
-	noise $8, $d1, $43
+	noise __, 10, $f1, $44
+	noise __,  9, $d1, $43
 	endchannel
 ; f1d0f
 
 Sfx_SwitchPokemon_Ch5: ; f1d0f
 	dutycycle $2
-	sound $8, $e1, $0740
+	sound __,  9, $e1, $0740
 	endchannel
 ; f1d16
 
 Sfx_SwitchPokemon_Ch6: ; f1d16
 	dutycycle $2
-	sound $2, $8, 0
-	sound $8, $b1, $0741
+	sound __,  3, $8, 0
+	sound __,  9, $b1, $0741
 	endchannel
 ; f1d21
 
@@ -4068,9 +4068,9 @@
 Sfx_PokeballsPlacedOnTable_Ch5: ; f1d21
 	dutycycle $2
 	soundinput $3a
-	sound $4, $f2, $0200
+	sound __,  5, $f2, $0200
 	soundinput $22
-	sound $8, $e2, $0200
+	sound __,  9, $e2, $0200
 	soundinput $8
 	endchannel
 ; f1d32
@@ -4078,9 +4078,9 @@
 Sfx_BallWiggle_Ch5: ; f1d32
 	dutycycle $2
 	soundinput $3a
-	sound $4, $f2, $0400
+	sound __,  5, $f2, $0400
 	soundinput $22
-	sound $8, $e2, $0400
+	sound __,  9, $e2, $0400
 	soundinput $8
 	endchannel
 ; f1d43
@@ -4087,29 +4087,29 @@
 
 Sfx_Tally_Ch5: ; f1d43
 	dutycycle $2
-	sound $4, $f1, $0780
+	sound __,  5, $f1, $0780
 	endchannel
 ; f1d4a
 
 Sfx_Tally_Ch6: ; f1d4a
 	dutycycle $2
-	sound $1, $8, 0
-	sound $4, $a1, $0761
+	sound __,  2, $8, 0
+	sound __,  5, $a1, $0761
 	endchannel
 ; f1d55
 
 Sfx_Transaction_Ch5: ; f1d55
 	dutycycle $2
-	sound $4, $e1, $0700
-	sound $18, $f2, $07e0
+	sound __,  5, $e1, $0700
+	sound C_,  9, $f2, $07e0
 	endchannel
 ; f1d60
 
 Sfx_Transaction_Ch6: ; f1d60
 	dutycycle $2
-	sound $1, $8, 0
-	sound $4, $91, $06c1
-	sound $18, $a2, $07a1
+	sound __,  2, $8, 0
+	sound __,  5, $91, $06c1
+	sound C_,  9, $a2, $07a1
 	endchannel
 ; f1d6f
 
@@ -4116,17 +4116,17 @@
 Sfx_Bump_Ch5: ; f1d6f
 	dutycycle $2
 	soundinput $5a
-	sound $f, $f1, $0300
+	sound __, 16, $f1, $0300
 	soundinput $8
 	endchannel
 ; f1d7a
 
 Sfx_ExitBuilding_Ch8: ; f1d7a
-	noise $2, $f1, $54
-	noise $c, $71, $23
-	noise $2, $b1, $54
-	noise $c, $61, $23
-	noise $6, $41, $54
+	noise __,  3, $f1, $54
+	noise __, 13, $71, $23
+	noise __,  3, $b1, $54
+	noise __, 13, $61, $23
+	noise __,  7, $41, $54
 	endchannel
 ; f1d8a
 
@@ -4133,10 +4133,10 @@
 Sfx_ReadText2_Ch5: ; f1d8a
 Sfx_ReadText_Ch5: ; f1d8a
 	dutycycle $2
-	sound $0, $91, $07c0
-	sound $0, $81, $07d0
-	sound $0, $91, $07c0
-	sound $c, $a1, $07d0
+	sound __,  1, $91, $07c0
+	sound __,  1, $81, $07d0
+	sound __,  1, $91, $07c0
+	sound __, 13, $a1, $07d0
 	endchannel
 ; f1d9d
 
@@ -4143,8 +4143,8 @@
 Sfx_Potion_Ch5: ; f1d9d
 	dutycycle $2
 	soundinput $17
-	sound $f, $f0, $04f0
-	sound $f, $f2, $0650
+	sound __, 16, $f0, $04f0
+	sound __, 16, $f2, $0650
 	soundinput $8
 	endchannel
 ; f1dac
@@ -4153,9 +4153,9 @@
 Sfx_Poison_branch_f1dac: ; f1dac
 	dutycycle $0
 	soundinput $14
-	sound $4, $f2, $0600
+	sound __,  5, $f2, $0600
 	loopchannel 4, Sfx_Poison_branch_f1dac
-	sound $f, $f3, $0600
+	sound __, 16, $f3, $0600
 	soundinput $8
 	endchannel
 ; f1dbf
@@ -4163,10 +4163,10 @@
 Sfx_FullHeal_Ch5: ; f1dbf
 	dutycycle $2
 	soundinput $14
-	sound $4, $f2, $0600
-	sound $4, $f2, $0600
+	sound __,  5, $f2, $0600
+	sound __,  5, $f2, $0600
 	soundinput $17
-	sound $f, $f2, $0600
+	sound __, 16, $f2, $0600
 	soundinput $8
 	endchannel
 ; f1dd4
@@ -4174,8 +4174,8 @@
 Sfx_GotSafariBalls_Ch5: ; f1dd4
 	dutycycle $2
 	soundinput $15
-	sound $f, $f0, $04f0
-	sound $f, $f2, $0650
+	sound __, 16, $f0, $04f0
+	sound __, 16, $f2, $0650
 	soundinput $8
 	endchannel
 ; f1de3
@@ -4182,34 +4182,34 @@
 
 Sfx_BootPc_Ch5: ; f1de3
 	dutycycle $2
-	sound $f, $f2, $07c0
-	sound $f, $0, 0
-	sound $3, $a1, $0780
-	sound $3, $a1, $0700
-	sound $3, $a1, $0740
-	sound $3, $a1, $0700
-	sound $3, $a1, $0780
-	sound $3, $a1, $0700
-	sound $3, $a1, $07c0
-	sound $8, $a1, $0700
+	sound __, 16, $f2, $07c0
+	sound __, 16, $0, 0
+	sound __,  4, $a1, $0780
+	sound __,  4, $a1, $0700
+	sound __,  4, $a1, $0740
+	sound __,  4, $a1, $0700
+	sound __,  4, $a1, $0780
+	sound __,  4, $a1, $0700
+	sound __,  4, $a1, $07c0
+	sound __,  9, $a1, $0700
 	endchannel
 ; f1e0e
 
 Sfx_ShutDownPc_Ch5: ; f1e0e
 	dutycycle $2
-	sound $4, $f0, $0600
-	sound $4, $f0, $0400
-	sound $4, $f0, $0200
-	sound $1, $0, 0
+	sound __,  5, $f0, $0600
+	sound __,  5, $f0, $0400
+	sound __,  5, $f0, $0200
+	sound __,  2, $0, 0
 	endchannel
 ; f1e21
 
 Sfx_ChoosePcOption_Ch5: ; f1e21
 	dutycycle $2
-	sound $6, $f0, $0700
-	sound $4, $0, 0
-	sound $6, $f0, $0700
-	sound $1, $0, 0
+	sound __,  7, $f0, $0700
+	sound __,  5, $0, 0
+	sound __,  7, $f0, $0700
+	sound __,  2, $0, 0
 	endchannel
 ; f1e34
 
@@ -4216,11 +4216,11 @@
 Sfx_EscapeRope_Ch5: ; f1e34
 	dutycycle $1
 	soundinput $17
-	sound $f, $d7, $0600
-	sound $f, $b7, $0580
-	sound $f, $87, $0500
-	sound $f, $47, $0480
-	sound $f, $17, $0400
+	sound __, 16, $d7, $0600
+	sound __, 16, $b7, $0580
+	sound __, 16, $87, $0500
+	sound __, 16, $47, $0480
+	sound __, 16, $17, $0400
 	soundinput $8
 	endchannel
 ; f1e4f
@@ -4227,11 +4227,11 @@
 
 Sfx_PushButton_Ch5: ; f1e4f
 	dutycycle $2
-	sound $4, $0, 0
-	sound $2, $f1, $0680
-	sound $1, $0, 0
-	sound $4, $f1, $0780
-	sound $4, $0, 0
+	sound __,  5, $0, 0
+	sound __,  3, $f1, $0680
+	sound __,  2, $0, 0
+	sound __,  5, $f1, $0780
+	sound __,  5, $0, 0
 	endchannel
 ; f1e66
 
@@ -4238,11 +4238,11 @@
 Sfx_SecondPartOfItemfinder_Ch5: ; f1e66
 	dutycycle $2
 	soundinput $2c
-	sound $4, $f2, $0500
+	sound __,  5, $f2, $0500
 	soundinput $22
-	sound $2, $f1, $0500
+	sound __,  3, $f1, $0500
 	soundinput $8
-	sound $1, $0, 0
+	sound __,  2, $0, 0
 	endchannel
 ; f1e7b
 
@@ -4249,11 +4249,11 @@
 Sfx_WarpTo_Ch5: ; f1e7b
 	dutycycle $1
 	soundinput $17
-	sound $f, $d7, $0500
-	sound $f, $b7, $0580
-	sound $f, $87, $0600
-	sound $f, $47, $0680
-	sound $f, $17, $0700
+	sound __, 16, $d7, $0500
+	sound __, 16, $b7, $0580
+	sound __, 16, $87, $0600
+	sound __, 16, $47, $0680
+	sound __, 16, $17, $0700
 	soundinput $8
 	endchannel
 ; f1e96
@@ -4261,11 +4261,11 @@
 Sfx_WarpFrom_Ch5: ; f1e96
 	dutycycle $1
 	soundinput $17
-	sound $f, $d7, $0700
-	sound $f, $b7, $0680
-	sound $f, $87, $0600
-	sound $f, $47, $0580
-	sound $f, $17, $0500
+	sound __, 16, $d7, $0700
+	sound __, 16, $b7, $0680
+	sound __, 16, $87, $0600
+	sound __, 16, $47, $0580
+	sound __, 16, $17, $0500
 	soundinput $8
 	endchannel
 ; f1eb1
@@ -4273,7 +4273,7 @@
 Sfx_ChangeDexMode_Ch5: ; f1eb1
 	dutycycle $1
 	soundinput $16
-	sound $f, $d2, $0500
+	sound __, 16, $d2, $0500
 	soundinput $8
 	endchannel
 ; f1ebc
@@ -4281,36 +4281,36 @@
 Sfx_JumpOverLedge_Ch5: ; f1ebc
 	dutycycle $2
 	soundinput $95
-	sound $f, $f2, $0400
+	sound __, 16, $f2, $0400
 	soundinput $8
 	endchannel
 ; f1ec7
 
 Sfx_GrassRustle_Ch8: ; f1ec7
-	noise $2, $f1, $32
-	noise $2, $0, $0
-	noise $2, $f1, $22
-	noise $1, $0, $0
+	noise __,  3, $f1, $32
+	noise __,  3, $0, $0
+	noise __,  3, $f1, $22
+	noise __,  2, $0, $0
 	endchannel
 ; f1ed4
 
 Sfx_Fly_Ch8: ; f1ed4
-	noise $2, $f1, $12
-	noise $2, $0, $0
-	noise $2, $a1, $12
-	noise $2, $0, $0
-	noise $2, $d1, $12
-	noise $2, $0, $0
-	noise $2, $81, $12
-	noise $2, $0, $0
-	noise $2, $b1, $12
-	noise $2, $0, $0
-	noise $2, $61, $12
-	noise $2, $0, $0
-	noise $2, $91, $12
-	noise $2, $0, $0
-	noise $2, $41, $12
-	noise $2, $0, $0
+	noise __,  3, $f1, $12
+	noise __,  3, $0, $0
+	noise __,  3, $a1, $12
+	noise __,  3, $0, $0
+	noise __,  3, $d1, $12
+	noise __,  3, $0, $0
+	noise __,  3, $81, $12
+	noise __,  3, $0, $0
+	noise __,  3, $b1, $12
+	noise __,  3, $0, $0
+	noise __,  3, $61, $12
+	noise __,  3, $0, $0
+	noise __,  3, $91, $12
+	noise __,  3, $0, $0
+	noise __,  3, $41, $12
+	noise __,  3, $0, $0
 	endchannel
 ; f1f05
 
@@ -4317,20 +4317,20 @@
 Sfx_Wrong_Ch5: ; f1f05
 	dutycycle $3
 	soundinput $5a
-	sound $4, $f0, $0500
+	sound __,  5, $f0, $0500
 	soundinput $8
-	sound $4, $0, 0
-	sound $f, $f0, $0500
-	sound $1, $0, 0
+	sound __,  5, $0, 0
+	sound __, 16, $f0, $0500
+	sound __,  2, $0, 0
 	endchannel
 ; f1f1c
 
 Sfx_Wrong_Ch6: ; f1f1c
 	dutycycle $3
-	sound $4, $f0, $0401
-	sound $4, $0, 0
-	sound $f, $f0, $0401
-	sound $1, $0, 0
+	sound __,  5, $f0, $0401
+	sound __,  5, $0, 0
+	sound __, 16, $f0, $0401
+	sound __,  2, $0, 0
 	endchannel
 ; f1f2f
 
@@ -4337,44 +4337,44 @@
 Sfx_Squeak_Ch5: ; f1f2f
 	dutycycle $0
 	soundinput $17
-	sound $f, $d2, $0700
+	sound __, 16, $d2, $0700
 	soundinput $8
 	endchannel
 ; f1f3a
 
 Sfx_Strength_Ch8: ; f1f3a
-	noise $4, $a2, $23
-	noise $8, $f1, $34
-	noise $f, $0, $0
-	noise $2, $f7, $24
-	noise $2, $f7, $34
-	noise $4, $f7, $44
-	noise $8, $f4, $55
-	noise $8, $f1, $44
+	noise __,  5, $a2, $23
+	noise __,  9, $f1, $34
+	noise __, 16, $0, $0
+	noise __,  3, $f7, $24
+	noise __,  3, $f7, $34
+	noise __,  5, $f7, $44
+	noise __,  9, $f4, $55
+	noise __,  9, $f1, $44
 	endchannel
 ; f1f53
 
 Sfx_Boat_Ch5: ; f1f53
 	dutycycle $2
-	sound $f, $f0, $0500
-	sound $4, $0, 0
-	sound $f, $f0, $0500
-	sound $f, $f0, $0500
-	sound $f, $f0, $0500
-	sound $f, $f0, $0500
-	sound $f, $f2, $0500
+	sound __, 16, $f0, $0500
+	sound __,  5, $0, 0
+	sound __, 16, $f0, $0500
+	sound __, 16, $f0, $0500
+	sound __, 16, $f0, $0500
+	sound __, 16, $f0, $0500
+	sound __, 16, $f2, $0500
 	endchannel
 ; f1f72
 
 Sfx_Boat_Ch6: ; f1f72
 	dutycycle $3
-	sound $f, $f0, $0482
-	sound $4, $0, 0
-	sound $f, $f0, $0482
-	sound $f, $f0, $0482
-	sound $f, $f0, $0482
-	sound $f, $f0, $0482
-	sound $f, $f2, $0482
+	sound __, 16, $f0, $0482
+	sound __,  5, $0, 0
+	sound __, 16, $f0, $0482
+	sound __, 16, $f0, $0482
+	sound __, 16, $f0, $0482
+	sound __, 16, $f0, $0482
+	sound __, 16, $f2, $0482
 	endchannel
 ; f1f91
 
@@ -4381,13 +4381,13 @@
 Sfx_WallOpen_Ch5: ; f1f91
 	dutycycle $1
 	soundinput $3a
-	sound $4, $f2, $0500
+	sound __,  5, $f2, $0500
 	soundinput $22
-	sound $4, $e2, $0500
+	sound __,  5, $e2, $0500
 	soundinput $3a
-	sound $4, $f2, $0700
+	sound __,  5, $f2, $0700
 	soundinput $22
-	sound $f, $e2, $0700
+	sound __, 16, $e2, $0700
 	soundinput $8
 	endchannel
 ; f1fae
@@ -4394,12 +4394,12 @@
 
 Sfx_ElevatorEnd_Ch5: ; f1fae
 	dutycycle $2
-	sound $f, $f3, $0730
-	sound $8, $65, $0730
-	sound $f, $f4, $0700
-	sound $f, $74, $0700
-	sound $f, $44, $0700
-	sound $f, $24, $0700
+	sound __, 16, $f3, $0730
+	sound __,  9, $65, $0730
+	sound __, 16, $f4, $0700
+	sound __, 16, $74, $0700
+	sound __, 16, $44, $0700
+	sound __, 16, $24, $0700
 	endchannel
 ; f1fc9
 
@@ -4406,24 +4406,24 @@
 Sfx_ThrowBall_Ch5: ; f1fc9
 	dutycycle $2
 	soundinput $2f
-	sound $f, $f2, $0780
+	sound __, 16, $f2, $0780
 	endchannel
 ; f1fd2
 
 Sfx_ThrowBall_Ch6: ; f1fd2
 	dutycycle $2
-	sound $f, $c2, $0782
+	sound __, 16, $c2, $0782
 	endchannel
 ; f1fd9
 
 Sfx_Shine_Ch5: ; f1fd9
 	dutycycle $0
-	sound $0, $d2, $0700
-	sound $0, $d2, $0740
-	sound $0, $d2, $0780
-	sound $0, $d2, $07c0
-	sound $a, $e1, $07e0
-	sound $1, $0, 0
+	sound __,  1, $d2, $0700
+	sound __,  1, $d2, $0740
+	sound __,  1, $d2, $0780
+	sound __,  1, $d2, $07c0
+	sound __, 11, $e1, $07e0
+	sound __,  2, $0, 0
 	endchannel
 ; f1ff4
 
@@ -4430,41 +4430,41 @@
 Sfx_BallPoof_Ch5: ; f1ff4
 	dutycycle $2
 	soundinput $16
-	sound $f, $f2, $0400
+	sound __, 16, $f2, $0400
 	soundinput $8
 	endchannel
 ; f1fff
 
 Sfx_BallPoof_Ch8: ; f1fff
-	noise $f, $a2, $22
+	noise __, 16, $a2, $22
 	endchannel
 ; f2003
 
 Sfx_Unknown3A_Ch5: ; f2003
-	sound $f, $d1, $0200
+	sound __, 16, $d1, $0200
 	soundinput $8
 	endchannel
 ; f200a
 
 Sfx_Unknown3A_Ch8: ; f200a
-	noise $4, $f5, $33
-	noise $8, $f4, $22
-	noise $f, $f2, $21
+	noise __,  5, $f5, $33
+	noise __,  9, $f4, $22
+	noise __, 16, $f2, $21
 	endchannel
 ; f2014
 
 Sfx_Run_Ch8: ; f2014
-	noise $2, $61, $23
-	noise $2, $a1, $33
-	noise $2, $c1, $33
-	noise $2, $51, $11
-	noise $2, $f1, $33
-	noise $2, $41, $11
-	noise $2, $c1, $33
-	noise $2, $31, $11
-	noise $2, $81, $33
-	noise $2, $31, $11
-	noise $8, $41, $33
+	noise __,  3, $61, $23
+	noise __,  3, $a1, $33
+	noise __,  3, $c1, $33
+	noise __,  3, $51, $11
+	noise __,  3, $f1, $33
+	noise __,  3, $41, $11
+	noise __,  3, $c1, $33
+	noise __,  3, $31, $11
+	noise __,  3, $81, $33
+	noise __,  3, $31, $11
+	noise __,  9, $41, $33
 	endchannel
 ; f2036
 
@@ -4471,9 +4471,9 @@
 Sfx_SlotMachineStart_Ch5: ; f2036
 	dutycycle $2
 	soundinput $44
-	sound $f, $f0, $04f0
+	sound __, 16, $f0, $04f0
 	soundinput $17
-	sound $f, $f2, $0650
+	sound __, 16, $f2, $0650
 	soundinput $8
 	endchannel
 ; f2047
@@ -4480,25 +4480,25 @@
 
 Sfx_SlotMachineStart_Ch6: ; f2047
 	dutycycle $2
-	sound $f, $92, $0600
-	sound $f, $92, $0782
+	sound __, 16, $92, $0600
+	sound __, 16, $92, $0782
 	endchannel
 ; f2052
 
 Sfx_Call_Ch5: ; f2052
 	soundinput $67
-	sound $4, $f7, $07a0
-	sound $4, $f7, $07a0
-	sound $4, $f7, $07a0
-	sound $4, $f7, $07a0
-	sound $4, $f7, $07a0
+	sound __,  5, $f7, $07a0
+	sound __,  5, $f7, $07a0
+	sound __,  5, $f7, $07a0
+	sound __,  5, $f7, $07a0
+	sound __,  5, $f7, $07a0
 	soundinput $8
-	sound $4, $0, 0
+	sound __,  5, $0, 0
 	endchannel
 ; f206f
 
 Sfx_Peck_Ch8: ; f206f
-	noise $2, $a1, $12
+	noise __,  3, $a1, $12
 	endchannel
 ; f2073
 
@@ -4505,7 +4505,7 @@
 Sfx_Kinesis_Ch5: ; f2073
 	dutycycle $1
 	soundinput $af
-	sound $f, $f2, $0780
+	sound __, 16, $f2, $0780
 	soundinput $8
 	endchannel
 ; f207e
@@ -4513,151 +4513,151 @@
 Sfx_Lick_Ch5: ; f207e
 	dutycycle $1
 	soundinput $97
-	sound $f, $f2, $0500
+	sound __, 16, $f2, $0500
 	soundinput $8
 	endchannel
 ; f2089
 
 Sfx_Pound_Ch8: ; f2089
-	noise $2, $a1, $22
+	noise __,  3, $a1, $22
 	endchannel
 ; f208d
 
 Sfx_MovePuzzlePiece_Ch8: ; f208d
-	noise $8, $f1, $54
+	noise __,  9, $f1, $54
 	endchannel
 ; f2091
 
 Sfx_CometPunch_Ch8: ; f2091
-	noise $f, $8f, $11
-	noise $4, $ff, $12
-	noise $a, $f1, $55
+	noise __, 16, $8f, $11
+	noise __,  5, $ff, $12
+	noise __, 11, $f1, $55
 	endchannel
 ; f209b
 
 Sfx_MegaPunch_Ch8: ; f209b
-	noise $f, $8f, $34
-	noise $8, $f2, $35
-	noise $a, $f1, $55
+	noise __, 16, $8f, $34
+	noise __,  9, $f2, $35
+	noise __, 11, $f1, $55
 	endchannel
 ; f20a5
 
 Sfx_Scratch_Ch8: ; f20a5
-	noise $f, $9f, $23
-	noise $8, $f1, $21
+	noise __, 16, $9f, $23
+	noise __,  9, $f1, $21
 	endchannel
 ; f20ac
 
 Sfx_Vicegrip_Ch8: ; f20ac
-	noise $2, $e1, $4b
-	noise $a, $f1, $44
-	noise $2, $e1, $3a
-	noise $6, $f1, $34
+	noise __,  3, $e1, $4b
+	noise __, 11, $f1, $44
+	noise __,  3, $e1, $3a
+	noise __,  7, $f1, $34
 	endchannel
 ; f20b9
 
 Sfx_RazorWind_Ch8: ; f20b9
-	noise $2, $f4, $44
-	noise $2, $f4, $14
-	noise $f, $f1, $32
+	noise __,  3, $f4, $44
+	noise __,  3, $f4, $14
+	noise __, 16, $f1, $32
 	endchannel
 ; f20c3
 
 Sfx_Cut_Ch8: ; f20c3
-	noise $4, $8f, $55
-	noise $2, $f4, $44
-	noise $8, $f4, $22
-	noise $f, $f2, $21
+	noise __,  5, $8f, $55
+	noise __,  3, $f4, $44
+	noise __,  9, $f4, $22
+	noise __, 16, $f2, $21
 	endchannel
 ; f20d0
 
 Sfx_WingAttack_Ch8: ; f20d0
 Sfx_WingAttack_branch_f20d0: ; f20d0
-	noise $8, $4f, $23
-	noise $4, $c4, $22
-	noise $6, $f2, $23
+	noise __,  9, $4f, $23
+	noise __,  5, $c4, $22
+	noise __,  7, $f2, $23
 	loopchannel 4, Sfx_WingAttack_branch_f20d0
 	endchannel
 ; f20de
 
 Sfx_Whirlwind_Ch8: ; f20de
-	noise $8, $4f, $33
-	noise $4, $c4, $22
-	noise $6, $f2, $23
-	noise $f, $f2, $22
+	noise __,  9, $4f, $33
+	noise __,  5, $c4, $22
+	noise __,  7, $f2, $23
+	noise __, 16, $f2, $22
 	endchannel
 ; f20eb
 
 Sfx_Bind_Ch8: ; f20eb
-	noise $8, $ff, $32
-	noise $8, $f4, $43
-	noise $8, $f2, $54
-	noise $8, $f1, $65
+	noise __,  9, $ff, $32
+	noise __,  9, $f4, $43
+	noise __,  9, $f2, $54
+	noise __,  9, $f1, $65
 	endchannel
 ; f20f8
 
 Sfx_VineWhip_Ch8: ; f20f8
-	noise $1, $c2, $33
-	noise $2, $f2, $21
-	noise $1, $e2, $33
-	noise $1, $c2, $32
-	noise $1, $92, $12
-	noise $1, $b2, $31
-	noise $c, $91, $10
-	noise $8, $f2, $41
+	noise __,  2, $c2, $33
+	noise __,  3, $f2, $21
+	noise __,  2, $e2, $33
+	noise __,  2, $c2, $32
+	noise __,  2, $92, $12
+	noise __,  2, $b2, $31
+	noise __, 13, $91, $10
+	noise __,  9, $f2, $41
 	endchannel
 ; f2111
 
 Sfx_DoubleKick_Ch8: ; f2111
-	noise $1, $94, $23
-	noise $1, $b4, $22
-	noise $8, $f1, $44
+	noise __,  2, $94, $23
+	noise __,  2, $b4, $22
+	noise __,  9, $f1, $44
 	endchannel
 ; f211b
 
 Sfx_MegaKick_Ch8: ; f211b
-	noise $2, $94, $33
-	noise $4, $b4, $22
-	noise $4, $f1, $44
-	noise $8, $f1, $55
+	noise __,  3, $94, $33
+	noise __,  5, $b4, $22
+	noise __,  5, $f1, $44
+	noise __,  9, $f1, $55
 	endchannel
 ; f2128
 
 Sfx_Headbutt_Ch8: ; f2128
-	noise $4, $ff, $55
-	noise $8, $f1, $65
+	noise __,  5, $ff, $55
+	noise __,  9, $f1, $65
 	endchannel
 ; f212f
 
 Sfx_HornAttack_Ch8: ; f212f
-	noise $2, $84, $43
-	noise $2, $c4, $22
-	noise $8, $f2, $34
+	noise __,  3, $84, $43
+	noise __,  3, $c4, $22
+	noise __,  9, $f2, $34
 	endchannel
 ; f2139
 
 Sfx_Tackle_Ch8: ; f2139
-	noise $4, $f1, $34
-	noise $f, $f2, $64
+	noise __,  5, $f1, $34
+	noise __, 16, $f2, $64
 	endchannel
 ; f2140
 
 Sfx_PoisonSting_Ch8: ; f2140
-	noise $2, $f1, $22
-	noise $f, $f2, $12
+	noise __,  3, $f1, $22
+	noise __, 16, $f2, $12
 	endchannel
 ; f2147
 
 Sfx_Powder_Ch8: ; f2147
-	noise $2, $c2, $1
-	noise $f, $f4, $1
-	noise $f, $f2, $1
+	noise __,  3, $c2, $1
+	noise __, 16, $f4, $1
+	noise __, 16, $f2, $1
 	endchannel
 ; f2151
 
 Sfx_Doubleslap_Ch8: ; f2151
-	noise $8, $f1, $32
-	noise $8, $f1, $33
+	noise __,  9, $f1, $32
+	noise __,  9, $f1, $33
 	endchannel
 ; f2158
 
@@ -4664,56 +4664,56 @@
 Sfx_Bite_Ch5: ; f2158
 	dutycycle $0
 	soundinput $3a
-	sound $4, $f2, $0200
+	sound __,  5, $f2, $0200
 	soundinput $22
-	sound $8, $e2, $0200
+	sound __,  9, $e2, $0200
 	soundinput $8
 	endchannel
 ; f2169
 
 Sfx_Bite_Ch8: ; f2169
-	noise $0, $d1, $42
-	noise $4, $a1, $32
-	noise $0, $d1, $22
-	noise $6, $a1, $32
+	noise __,  1, $d1, $42
+	noise __,  5, $a1, $32
+	noise __,  1, $d1, $22
+	noise __,  7, $a1, $32
 	endchannel
 ; f2176
 
 Sfx_JumpKick_Ch8: ; f2176
-	noise $3, $92, $31
-	noise $3, $b2, $32
-	noise $3, $c2, $33
-	noise $8, $f1, $54
+	noise __,  4, $92, $31
+	noise __,  4, $b2, $32
+	noise __,  4, $c2, $33
+	noise __,  9, $f1, $54
 	endchannel
 ; f2183
 
 Sfx_Stomp_Ch8: ; f2183
-	noise $c, $f1, $54
-	noise $8, $f1, $64
+	noise __, 13, $f1, $54
+	noise __,  9, $f1, $64
 	endchannel
 ; f218a
 
 Sfx_TailWhip_Ch8: ; f218a
-	noise $2, $f1, $33
-	noise $2, $c1, $32
-	noise $2, $a1, $31
-	noise $f, $82, $32
-	noise $8, $f1, $34
+	noise __,  3, $f1, $33
+	noise __,  3, $c1, $32
+	noise __,  3, $a1, $31
+	noise __, 16, $82, $32
+	noise __,  9, $f1, $34
 	endchannel
 ; f219a
 
 Sfx_KarateChop_Ch8: ; f219a
-	noise $2, $d2, $32
-	noise $f, $f2, $43
+	noise __,  3, $d2, $32
+	noise __, 16, $f2, $43
 	endchannel
 ; f21a1
 
 Sfx_Submission_Ch8: ; f21a1
-	noise $2, $f2, $43
-	noise $4, $b5, $32
-	noise $9, $86, $31
-	noise $7, $64, $0
-	noise $f, $f2, $55
+	noise __,  3, $f2, $43
+	noise __,  5, $b5, $32
+	noise __, 10, $86, $31
+	noise __,  8, $64, $0
+	noise __, 16, $f2, $55
 	endchannel
 ; f21b1
 
@@ -4720,61 +4720,61 @@
 Sfx_WaterGun_Ch5: ; f21b1
 	dutycycle $1
 	soundinput $97
-	sound $f, $f2, $0700
+	sound __, 16, $f2, $0700
 	soundinput $8
 	endchannel
 ; f21bc
 
 Sfx_WaterGun_Ch8: ; f21bc
-	noise $f, $3f, $22
-	noise $f, $f2, $21
+	noise __, 16, $3f, $22
+	noise __, 16, $f2, $21
 	endchannel
 ; f21c3
 
 Sfx_SwordsDance_Ch8: ; f21c3
-	noise $f, $4f, $41
-	noise $8, $8f, $41
-	noise $8, $cf, $41
-	noise $8, $f2, $42
-	noise $f, $f2, $41
+	noise __, 16, $4f, $41
+	noise __,  9, $8f, $41
+	noise __,  9, $cf, $41
+	noise __,  9, $f2, $42
+	noise __, 16, $f2, $41
 	endchannel
 ; f21d3
 
 Sfx_Thunder_Ch8: ; f21d3
-	noise $a, $ff, $50
-	noise $f, $ff, $51
-	noise $8, $f2, $51
-	noise $6, $ff, $52
-	noise $6, $ff, $53
-	noise $8, $ff, $54
-	noise $f, $f2, $54
+	noise __, 11, $ff, $50
+	noise __, 16, $ff, $51
+	noise __,  9, $f2, $51
+	noise __,  7, $ff, $52
+	noise __,  7, $ff, $53
+	noise __,  9, $ff, $54
+	noise __, 16, $f2, $54
 	endchannel
 ; f21e9
 
 Sfx_Supersonic_Ch5: ; f21e9
 	dutycycle $2
-	sound $f, $3f, $07c0
+	sound __, 16, $3f, $07c0
 Sfx_Supersonic_branch_f21ef: ; f21ef
-	sound $f, $df, $07c0
+	sound __, 16, $df, $07c0
 	loopchannel 4, Sfx_Supersonic_branch_f21ef
-	sound $f, $d1, $07c0
+	sound __, 16, $d1, $07c0
 	endchannel
 ; f21fc
 
 Sfx_Supersonic_Ch6: ; f21fc
 	unknownmusic0xde $b3
-	sound $f, $2f, $07c8
+	sound __, 16, $2f, $07c8
 Sfx_Supersonic_branch_f2202: ; f2202
-	sound $f, $cf, $07c7
+	sound __, 16, $cf, $07c7
 	loopchannel 4, Sfx_Supersonic_branch_f2202
-	sound $f, $c1, $07c8
+	sound __, 16, $c1, $07c8
 	endchannel
 ; f220f
 
 Sfx_Supersonic_Ch8: ; f220f
 Sfx_Supersonic_branch_f220f: ; f220f
-	noise $3, $97, $12
-	noise $3, $a1, $11
+	noise __,  4, $97, $12
+	noise __,  4, $a1, $11
 	loopchannel 10, Sfx_Supersonic_branch_f220f
 	endchannel
 ; f221a
@@ -4782,8 +4782,8 @@
 Sfx_Leer_Ch5: ; f221a
 Sfx_Leer_branch_f221a: ; f221a
 	dutycycle $0
-	sound $0, $f1, $07c0
-	sound $0, $f1, $0700
+	sound __,  1, $f1, $07c0
+	sound __,  1, $f1, $0700
 	loopchannel 12, Sfx_Leer_branch_f221a
 	endchannel
 ; f2229
@@ -4791,8 +4791,8 @@
 Sfx_Leer_Ch6: ; f2229
 Sfx_Leer_branch_f2229: ; f2229
 	unknownmusic0xde $b3
-	sound $0, $e1, $07c1
-	sound $0, $e1, $0701
+	sound __,  1, $e1, $07c1
+	sound __,  1, $e1, $0701
 	loopchannel 12, Sfx_Leer_branch_f2229
 	endchannel
 ; f2238
@@ -4799,8 +4799,8 @@
 
 Sfx_Leer_Ch8: ; f2238
 Sfx_Leer_branch_f2238: ; f2238
-	noise $1, $d1, $49
-	noise $1, $d1, $29
+	noise __,  2, $d1, $49
+	noise __,  2, $d1, $29
 	loopchannel 6, Sfx_Leer_branch_f2238
 	endchannel
 ; f2243
@@ -4808,22 +4808,22 @@
 Sfx_Ember_Ch5: ; f2243
 Sfx_Ember_branch_f2243: ; f2243
 	unknownmusic0xde $c9
-	sound $b, $f3, $0120
-	sound $9, $d3, $0150
+	sound __, 12, $f3, $0120
+	sound __, 10, $d3, $0150
 	loopchannel 5, Sfx_Ember_branch_f2243
-	sound $8, $e3, $0130
-	sound $f, $c2, $0110
+	sound __,  9, $e3, $0130
+	sound __, 16, $c2, $0110
 	endchannel
 ; f225a
 
 Sfx_Ember_Ch8: ; f225a
 Sfx_Ember_branch_f225a: ; f225a
-	noise $a, $f3, $35
-	noise $e, $f6, $45
+	noise __, 11, $f3, $35
+	noise __, 15, $f6, $45
 	loopchannel 4, Sfx_Ember_branch_f225a
-	noise $c, $f4, $bc
-	noise $c, $f5, $9c
-	noise $f, $f4, $ac
+	noise __, 13, $f4, $bc
+	noise __, 13, $f5, $9c
+	noise __, 16, $f4, $ac
 	endchannel
 ; f226e
 
@@ -4830,12 +4830,12 @@
 Sfx_Bubblebeam_Ch5: ; f226e
 Sfx_Bubblebeam_branch_f226e: ; f226e
 	unknownmusic0xde $39
-	sound $4, $f4, $0600
-	sound $3, $c4, $0500
-	sound $5, $b5, $0600
-	sound $d, $e2, $06c0
+	sound __,  5, $f4, $0600
+	sound __,  4, $c4, $0500
+	sound __,  6, $b5, $0600
+	sound __, 14, $e2, $06c0
 	loopchannel 3, Sfx_Bubblebeam_branch_f226e
-	sound $8, $d1, $0600
+	sound __,  9, $d1, $0600
 	endchannel
 ; f2289
 
@@ -4842,10 +4842,10 @@
 Sfx_Bubblebeam_Ch6: ; f2289
 Sfx_Bubblebeam_branch_f2289: ; f2289
 	unknownmusic0xde $8d
-	sound $5, $e4, $05e0
-	sound $4, $b4, $04e0
-	sound $6, $a5, $05e8
-	sound $e, $d1, $06a0
+	sound __,  6, $e4, $05e0
+	sound __,  5, $b4, $04e0
+	sound __,  7, $a5, $05e8
+	sound __, 15, $d1, $06a0
 	loopchannel 3, Sfx_Bubblebeam_branch_f2289
 	endchannel
 ; f22a0
@@ -4852,10 +4852,10 @@
 
 Sfx_Bubblebeam_Ch8: ; f22a0
 Sfx_Bubblebeam_branch_f22a0: ; f22a0
-	noise $5, $c3, $33
-	noise $3, $92, $43
-	noise $a, $b5, $33
-	noise $f, $c3, $32
+	noise __,  6, $c3, $33
+	noise __,  4, $92, $43
+	noise __, 11, $b5, $33
+	noise __, 16, $c3, $32
 	loopchannel 2, Sfx_Bubblebeam_branch_f22a0
 	endchannel
 ; f22b1
@@ -4863,25 +4863,25 @@
 Sfx_HydroPump_Ch5: ; f22b1
 Sfx_HydroPump_branch_f22b1: ; f22b1
 	unknownmusic0xde $d2
-	sound $3, $81, $0300
-	sound $3, $c1, $0400
-	sound $3, $f1, $0500
-	sound $3, $b1, $0400
-	sound $3, $71, $0300
+	sound __,  4, $81, $0300
+	sound __,  4, $c1, $0400
+	sound __,  4, $f1, $0500
+	sound __,  4, $b1, $0400
+	sound __,  4, $71, $0300
 	loopchannel 5, Sfx_HydroPump_branch_f22b1
-	sound $8, $81, $0400
+	sound __,  9, $81, $0400
 	endchannel
 ; f22d0
 
 Sfx_HydroPump_Ch8: ; f22d0
 Sfx_HydroPump_branch_f22d0: ; f22d0
-	noise $3, $62, $22
-	noise $3, $a2, $32
-	noise $3, $d2, $33
-	noise $3, $92, $23
-	noise $3, $52, $12
+	noise __,  4, $62, $22
+	noise __,  4, $a2, $32
+	noise __,  4, $d2, $33
+	noise __,  4, $92, $23
+	noise __,  4, $52, $12
 	loopchannel 5, Sfx_HydroPump_branch_f22d0
-	noise $8, $81, $12
+	noise __,  9, $81, $12
 	endchannel
 ; f22e7
 
@@ -4888,9 +4888,9 @@
 Sfx_Surf_Ch5: ; f22e7
 Sfx_Surf_branch_f22e7: ; f22e7
 	unknownmusic0xde $39
-	sound $f, $f4, $0500
-	sound $f, $c4, $0400
-	sound $f, $e2, $05c0
+	sound __, 16, $f4, $0500
+	sound __, 16, $c4, $0400
+	sound __, 16, $e2, $05c0
 	loopchannel 3, Sfx_Surf_branch_f22e7
 	endchannel
 ; f22fa
@@ -4898,9 +4898,9 @@
 Sfx_Surf_Ch6: ; f22fa
 Sfx_Surf_branch_f22fa: ; f22fa
 	unknownmusic0xde $8d
-	sound $7, $e4, $0430
-	sound $f, $b4, $0330
-	sound $f, $a2, $0438
+	sound __,  8, $e4, $0430
+	sound __, 16, $b4, $0330
+	sound __, 16, $a2, $0438
 	loopchannel 4, Sfx_Surf_branch_f22fa
 	endchannel
 ; f230d
@@ -4907,10 +4907,10 @@
 
 Sfx_Surf_Ch8: ; f230d
 Sfx_Surf_branch_f230d: ; f230d
-	noise $9, $f4, $44
-	noise $9, $f2, $43
-	noise $f, $f4, $42
-	noise $f, $f4, $41
+	noise __, 10, $f4, $44
+	noise __, 10, $f2, $43
+	noise __, 16, $f4, $42
+	noise __, 16, $f4, $41
 	loopchannel 3, Sfx_Surf_branch_f230d
 	endchannel
 ; f231e
@@ -4918,11 +4918,11 @@
 Sfx_Psybeam_Ch5: ; f231e
 Sfx_Psybeam_branch_f231e: ; f231e
 	unknownmusic0xde $a1
-	sound $a, $f1, $0640
-	sound $a, $f3, $0680
-	sound $a, $f2, $0620
+	sound __, 11, $f1, $0640
+	sound __, 11, $f3, $0680
+	sound __, 11, $f2, $0620
 	loopchannel 4, Sfx_Psybeam_branch_f231e
-	sound $a, $f1, $0640
+	sound __, 11, $f1, $0640
 	endchannel
 ; f2335
 
@@ -4929,18 +4929,18 @@
 Sfx_Psybeam_Ch6: ; f2335
 Sfx_Psybeam_branch_f2335: ; f2335
 	unknownmusic0xde $b3
-	sound $a, $f3, $0571
-	sound $7, $e3, $0531
-	sound $a, $f1, $0551
+	sound __, 11, $f3, $0571
+	sound __,  8, $e3, $0531
+	sound __, 11, $f1, $0551
 	loopchannel 4, Sfx_Psybeam_branch_f2335
-	sound $a, $f1, $0571
+	sound __, 11, $f1, $0571
 	endchannel
 ; f234c
 
 Sfx_Psybeam_Ch8: ; f234c
 Sfx_Psybeam_branch_f234c: ; f234c
-	noise $2, $d1, $4a
-	noise $2, $d2, $2a
+	noise __,  3, $d1, $4a
+	noise __,  3, $d2, $2a
 	loopchannel 21, Sfx_Psybeam_branch_f234c
 	endchannel
 ; f2357
@@ -4948,10 +4948,10 @@
 Sfx_Charge_Ch5: ; f2357
 Sfx_Charge_branch_f2357: ; f2357
 	dutycycle $0
-	sound $2, $f1, $0200
-	sound $3, $f1, $0700
-	sound $4, $f1, $0500
-	sound $5, $f1, $07f0
+	sound __,  3, $f1, $0200
+	sound __,  4, $f1, $0700
+	sound __,  5, $f1, $0500
+	sound __,  6, $f1, $07f0
 	loopchannel 8, Sfx_Charge_branch_f2357
 	endchannel
 ; f236e
@@ -4959,10 +4959,10 @@
 Sfx_Charge_Ch6: ; f236e
 Sfx_Charge_branch_f236e: ; f236e
 	unknownmusic0xde $b3
-	sound $2, $e1, $0302
-	sound $3, $e1, $07f2
-	sound $4, $e1, $0602
-	sound $5, $e1, $0702
+	sound __,  3, $e1, $0302
+	sound __,  4, $e1, $07f2
+	sound __,  5, $e1, $0602
+	sound __,  6, $e1, $0702
 	loopchannel 8, Sfx_Charge_branch_f236e
 	endchannel
 ; f2385
@@ -4969,10 +4969,10 @@
 
 Sfx_Charge_Ch8: ; f2385
 Sfx_Charge_branch_f2385: ; f2385
-	noise $2, $d3, $10
-	noise $3, $d3, $11
-	noise $2, $d2, $10
-	noise $5, $d2, $12
+	noise __,  3, $d3, $10
+	noise __,  4, $d3, $11
+	noise __,  3, $d2, $10
+	noise __,  6, $d2, $12
 	loopchannel 9, Sfx_Charge_branch_f2385
 	endchannel
 ; f2396
@@ -4980,8 +4980,8 @@
 Sfx_Thundershock_Ch5: ; f2396
 Sfx_Thundershock_branch_f2396: ; f2396
 	unknownmusic0xde $2b
-	sound $3, $f1, $07f0
-	sound $4, $f2, $0200
+	sound __,  4, $f1, $07f0
+	sound __,  5, $f2, $0200
 	loopchannel 8, Sfx_Thundershock_branch_f2396
 	endchannel
 ; f23a5
@@ -4989,8 +4989,8 @@
 Sfx_Thundershock_Ch6: ; f23a5
 Sfx_Thundershock_branch_f23a5: ; f23a5
 	unknownmusic0xde $b3
-	sound $4, $e2, $0202
-	sound $4, $e1, $07e2
+	sound __,  5, $e2, $0202
+	sound __,  5, $e1, $07e2
 	loopchannel 9, Sfx_Thundershock_branch_f23a5
 	endchannel
 ; f23b4
@@ -4997,8 +4997,8 @@
 
 Sfx_Thundershock_Ch8: ; f23b4
 Sfx_Thundershock_branch_f23b4: ; f23b4
-	noise $4, $ff, $43
-	noise $4, $f2, $44
+	noise __,  5, $ff, $43
+	noise __,  5, $f2, $44
 	loopchannel 9, Sfx_Thundershock_branch_f23b4
 	endchannel
 ; f23bf
@@ -5006,12 +5006,12 @@
 Sfx_Psychic_Ch5: ; f23bf
 	dutycycle $2
 	soundinput $f7
-	sound $8, $c4, $07bd
-	sound $8, $c4, $07be
-	sound $8, $c4, $07bf
-	sound $8, $c4, $07c0
-	sound $f, $c4, $07c1
-	sound $f, $f2, $07c0
+	sound __,  9, $c4, $07bd
+	sound __,  9, $c4, $07be
+	sound __,  9, $c4, $07bf
+	sound __,  9, $c4, $07c0
+	sound __, 16, $c4, $07c1
+	sound __, 16, $f2, $07c0
 	soundinput $8
 	endchannel
 ; f23de
@@ -5018,42 +5018,42 @@
 
 Sfx_Psychic_Ch6: ; f23de
 	dutycycle $2
-	sound $8, $c4, $0770
-	sound $8, $c4, $0761
-	sound $8, $c4, $0762
-	sound $8, $c4, $0763
-	sound $f, $c4, $0764
-	sound $f, $f2, $0764
+	sound __,  9, $c4, $0770
+	sound __,  9, $c4, $0761
+	sound __,  9, $c4, $0762
+	sound __,  9, $c4, $0763
+	sound __, 16, $c4, $0764
+	sound __, 16, $f2, $0764
 	endchannel
 ; f23f9
 
 Sfx_Psychic_Ch8: ; f23f9
-	noise $f, $3f, $14
-	noise $f, $cf, $13
-	noise $f, $cf, $12
-	noise $f, $cf, $11
-	noise $f, $cf, $10
-	noise $f, $c2, $10
+	noise __, 16, $3f, $14
+	noise __, 16, $cf, $13
+	noise __, 16, $cf, $12
+	noise __, 16, $cf, $11
+	noise __, 16, $cf, $10
+	noise __, 16, $c2, $10
 	endchannel
 ; f240c
 
 Sfx_Screech_Ch5: ; f240c
 	dutycycle $2
-	sound $f, $ff, $07e0
-	sound $f, $ff, $07e0
-	sound $f, $ff, $07e0
-	sound $f, $ff, $07e0
-	sound $f, $f2, $07e0
+	sound __, 16, $ff, $07e0
+	sound __, 16, $ff, $07e0
+	sound __, 16, $ff, $07e0
+	sound __, 16, $ff, $07e0
+	sound __, 16, $f2, $07e0
 	endchannel
 ; f2423
 
 Sfx_Screech_Ch6: ; f2423
 	dutycycle $3
-	sound $f, $ff, $07e2
-	sound $f, $ff, $07e1
-	sound $f, $ff, $07e2
-	sound $f, $ff, $07e1
-	sound $f, $f2, $07e2
+	sound __, 16, $ff, $07e2
+	sound __, 16, $ff, $07e1
+	sound __, 16, $ff, $07e2
+	sound __, 16, $ff, $07e1
+	sound __, 16, $f2, $07e2
 	endchannel
 ; f243a
 
@@ -5060,7 +5060,7 @@
 Sfx_BoneClub_Ch5: ; f243a
 	dutycycle $2
 	soundinput $af
-	sound $8, $f1, $0700
+	sound __,  9, $f1, $0700
 	soundinput $8
 	endchannel
 ; f2445
@@ -5067,51 +5067,51 @@
 
 Sfx_BoneClub_Ch6: ; f2445
 	dutycycle $3
-	sound $8, $f1, $0701
+	sound __,  9, $f1, $0701
 	endchannel
 ; f244c
 
 Sfx_Sharpen_Ch5: ; f244c
 	dutycycle $2
-	sound $6, $f1, $0500
-	sound $6, $f1, $0580
-	sound $6, $f1, $0600
-	sound $6, $f1, $0680
-	sound $8, $f1, $0700
+	sound __,  7, $f1, $0500
+	sound __,  7, $f1, $0580
+	sound __,  7, $f1, $0600
+	sound __,  7, $f1, $0680
+	sound __,  9, $f1, $0700
 	endchannel
 ; f2463
 
 Sfx_Sharpen_Ch6: ; f2463
 	dutycycle $3
-	sound $6, $e1, $0510
-	sound $6, $e1, $0590
-	sound $6, $e1, $0610
-	sound $6, $e1, $0690
-	sound $8, $e1, $0710
+	sound __,  7, $e1, $0510
+	sound __,  7, $e1, $0590
+	sound __,  7, $e1, $0610
+	sound __,  7, $e1, $0690
+	sound __,  9, $e1, $0710
 	endchannel
 ; f247a
 
 Sfx_EggBomb_Ch5: ; f247a
 	unknownmusic0xde $ed
-	sound $8, $ff, $03f8
-	sound $f, $ff, $0400
-	sound $f, $f3, $0400
+	sound __,  9, $ff, $03f8
+	sound __, 16, $ff, $0400
+	sound __, 16, $f3, $0400
 	endchannel
 ; f2489
 
 Sfx_EggBomb_Ch6: ; f2489
 	unknownmusic0xde $b4
-	sound $8, $ef, $03c0
-	sound $f, $ef, $03c0
-	sound $f, $e3, $03c0
+	sound __,  9, $ef, $03c0
+	sound __, 16, $ef, $03c0
+	sound __, 16, $e3, $03c0
 	endchannel
 ; f2498
 
 Sfx_EggBomb_Ch8: ; f2498
-	noise $4, $ff, $51
-	noise $8, $ff, $54
-	noise $f, $ff, $55
-	noise $f, $f3, $56
+	noise __,  5, $ff, $51
+	noise __,  9, $ff, $54
+	noise __, 16, $ff, $55
+	noise __, 16, $f3, $56
 	endchannel
 ; f24a5
 
@@ -5148,140 +5148,140 @@
 
 Sfx_HyperBeam_Ch5: ; f24ca
 	dutycycle $0
-	sound $2, $f1, $0780
-	sound $2, $f1, $0700
-	sound $2, $f1, $0790
-	sound $2, $f1, $0700
-	sound $2, $f1, $07a0
-	sound $2, $f1, $0700
-	sound $2, $f1, $07b0
-	sound $2, $f1, $0700
-	sound $2, $f1, $07c0
-	sound $2, $f1, $0700
-	sound $2, $f1, $07d0
+	sound __,  3, $f1, $0780
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $0790
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $07a0
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $07b0
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $07c0
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $07d0
 Sfx_HyperBeam_branch_f24f8: ; f24f8
-	sound $2, $f1, $0700
-	sound $2, $f1, $07e0
+	sound __,  3, $f1, $0700
+	sound __,  3, $f1, $07e0
 	loopchannel 12, Sfx_HyperBeam_branch_f24f8
-	sound $f, $f1, $0700
+	sound __, 16, $f1, $0700
 	endchannel
 ; f2509
 
 Sfx_HyperBeam_Ch6: ; f2509
 	unknownmusic0xde $b3
-	sound $2, $f1, $0781
-	sound $2, $f1, $0701
-	sound $2, $f1, $0791
-	sound $2, $f1, $0701
-	sound $2, $f1, $07a1
-	sound $2, $f1, $0701
-	sound $2, $f1, $07b1
-	sound $2, $f1, $0701
-	sound $2, $f1, $07c1
-	sound $2, $f1, $0701
-	sound $2, $f1, $07d1
+	sound __,  3, $f1, $0781
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $0791
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $07a1
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $07b1
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $07c1
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $07d1
 Sfx_HyperBeam_branch_f2537: ; f2537
-	sound $2, $f1, $0701
-	sound $2, $f1, $07e1
+	sound __,  3, $f1, $0701
+	sound __,  3, $f1, $07e1
 	loopchannel 12, Sfx_HyperBeam_branch_f2537
-	sound $f, $f1, $0701
+	sound __, 16, $f1, $0701
 	endchannel
 ; f2548
 
 Sfx_HyperBeam_Ch8: ; f2548
 Sfx_HyperBeam_branch_f2548: ; f2548
-	noise $1, $d1, $49
-	noise $1, $d1, $29
+	noise __,  2, $d1, $49
+	noise __,  2, $d1, $29
 	loopchannel 26, Sfx_HyperBeam_branch_f2548
 	endchannel
 ; f2553
 
 Sfx_Unknown60_Ch8: ; f2553
-	noise $6, $20, $10
-	noise $6, $2f, $40
-	noise $6, $4f, $41
-	noise $6, $8f, $41
-	noise $6, $cf, $42
-	noise $8, $d7, $42
-	noise $f, $e7, $43
-	noise $f, $f2, $43
+	noise __,  7, $20, $10
+	noise __,  7, $2f, $40
+	noise __,  7, $4f, $41
+	noise __,  7, $8f, $41
+	noise __,  7, $cf, $42
+	noise __,  9, $d7, $42
+	noise __, 16, $e7, $43
+	noise __, 16, $f2, $43
 	endchannel
 ; f256c
 
 Sfx_UnknownCB_Ch8: ; f256c
-	noise $1, $10, $10
-	noise $2, $20, $10
-	noise $2, $30, $20
-	noise $2, $40, $20
-	noise $2, $50, $21
-	noise $2, $60, $22
-	noise $4, $70, $22
-	noise $8, $80, $22
-	noise $f, $94, $22
+	noise __,  2, $10, $10
+	noise __,  3, $20, $10
+	noise __,  3, $30, $20
+	noise __,  3, $40, $20
+	noise __,  3, $50, $21
+	noise __,  3, $60, $22
+	noise __,  5, $70, $22
+	noise __,  9, $80, $22
+	noise __, 16, $94, $22
 	endchannel
 ; f2588
 
 Sfx_Unknown61_Ch8: ; f2588
-	noise $4, $d1, $41
+	noise __,  5, $d1, $41
 	endchannel
 ; f258c
 
-Sfx_Unknown62_Ch8: ; f258c
-	noise $4, $c1, $42
+Sfx_SwitchPockets_Ch8: ; f258c
+	noise __,  5, $c1, $42
 	endchannel
 ; f2590
 
 Sfx_Unknown63_Ch8: ; f2590
-	noise $2, $6f, $21
-	noise $2, $af, $31
-	noise $f, $f2, $41
+	noise __,  3, $6f, $21
+	noise __,  3, $af, $31
+	noise __, 16, $f2, $41
 	endchannel
 ; f259a
 
 Sfx_Burn_Ch8: ; f259a
-	noise $2, $d2, $32
-	noise $f, $f2, $43
+	noise __,  3, $d2, $32
+	noise __, 16, $f2, $43
 	endchannel
 ; f25a1
 
 Sfx_TitleScreenEntrance_Ch8: ; f25a1
-	noise $2, $70, $22
-	noise $2, $80, $23
-	noise $2, $90, $24
-	noise $2, $a0, $25
-	noise $2, $b0, $26
-	noise $f, $c2, $26
+	noise __,  3, $70, $22
+	noise __,  3, $80, $23
+	noise __,  3, $90, $24
+	noise __,  3, $a0, $25
+	noise __,  3, $b0, $26
+	noise __, 16, $c2, $26
 	endchannel
 ; f25b4
 
 Sfx_Unknown66_Ch5: ; f25b4
 	dutycycle $2
-	sound $1, $f2, $06a0
-	sound $1, $f2, $06e0
-	sound $8, $f1, $0700
+	sound __,  2, $f2, $06a0
+	sound __,  2, $f2, $06e0
+	sound __,  9, $f1, $0700
 	endchannel
 ; f25c3
 
 Sfx_GetCoinFromSlots_Ch5: ; f25c3
 	dutycycle $2
-	sound $2, $f1, $0700
-	sound $8, $81, $07e0
+	sound __,  3, $f1, $0700
+	sound __,  9, $81, $07e0
 	endchannel
 ; f25ce
 
 Sfx_PayDay_Ch5: ; f25ce
 	dutycycle $3
-	sound $5, $e1, $0700
-	sound $2, $e1, $0780
-	sound $f, $f1, $07c0
+	sound __,  6, $e1, $0700
+	sound __,  3, $e1, $0780
+	sound __, 16, $f1, $07c0
 	endchannel
 ; f25dd
 
 Sfx_PayDay_Ch6: ; f25dd
 	dutycycle $2
-	sound $4, $c1, $06c1
-	sound $2, $c1, $0741
-	sound $f, $d1, $0781
+	sound __,  5, $c1, $06c1
+	sound __,  3, $c1, $0741
+	sound __, 16, $d1, $0781
 	endchannel
 ; f25ec
 
@@ -5288,15 +5288,15 @@
 Sfx_Metronome_Ch5: ; f25ec
 	dutycycle $2
 	soundinput $5f
-	sound $4, $40, $07e0
-	sound $4, $60, $07e0
-	sound $4, $80, $07e0
-	sound $8, $a0, $07e0
-	sound $8, $a0, $07e0
-	sound $8, $80, $07e0
-	sound $8, $60, $07e0
-	sound $8, $30, $07e0
-	sound $f, $12, $07e0
+	sound __,  5, $40, $07e0
+	sound __,  5, $60, $07e0
+	sound __,  5, $80, $07e0
+	sound __,  9, $a0, $07e0
+	sound __,  9, $a0, $07e0
+	sound __,  9, $80, $07e0
+	sound __,  9, $60, $07e0
+	sound __,  9, $30, $07e0
+	sound __, 16, $12, $07e0
 	soundinput $8
 	endchannel
 ; f2617
@@ -5303,16 +5303,16 @@
 
 Sfx_Unknown5F_Ch5: ; f2617
 Sfx_Unknown5F_branch_f2617: ; f2617
-	sound $2, $f7, $0601
-	sound $2, $f7, $0701
+	sound __,  3, $f7, $0601
+	sound __,  3, $f7, $0701
 	loopchannel 8, Sfx_Unknown5F_branch_f2617
 	endchannel
 ; f2624
 
 Sfx_Unknown5F_Ch6: ; f2624
-	sound $1, $f7, $ffff
-	sound $2, $f7, $0602
-	sound $2, $f7, $0702
+	sound __,  2, $f7, $ffff
+	sound __,  3, $f7, $0602
+	sound __,  3, $f7, $0702
 	loopchannel 8, Sfx_Unknown5F_branch_f2617
 	endchannel
 ; f2635
@@ -5481,15 +5481,15 @@
 
 Sfx_HangUp_Ch5: ; f26f1
 	dutycycle $2
-	sound $4, $b8, $077b
-	sound $2, $21, $077b
-	sound $10, $0, 0
+	sound __,  5, $b8, $077b
+	sound __,  3, $21, $077b
+	sound C_,  1, $0, 0
 Sfx_HangUp_branch_f26ff: ; f26ff
 Sfx_NoSignal_Ch5: ; f26ff
 Sfx_NoSignal_branch_f26ff: ; f26ff
 	dutycycle $2
-	sound $14, $e8, $070b
-	sound $1c, $0, 0
+	sound C_,  5, $e8, $070b
+	sound C_, 13, $0, 0
 	loopchannel 3, Sfx_HangUp_branch_f26ff
 	endchannel
 ; f270e
@@ -5498,11 +5498,11 @@
 Sfx_Sandstorm_branch_f270e: ; f270e
 Sfx_Unknown5F_Ch8: ; f270e
 Sfx_Unknown5F_branch_f270e: ; f270e
-	noise $1, $f8, $41
-	noise $2, $9c, $24
-	noise $0, $0, $0
-	noise $3, $59, $16
-	noise $2, $0, $0
+	noise __,  2, $f8, $41
+	noise __,  3, $9c, $24
+	noise __,  1, $0, $0
+	noise __,  4, $59, $16
+	noise __,  3, $0, $0
 	loopchannel 3, Sfx_Sandstorm_branch_f270e
 	endchannel
 ; f2722
@@ -5511,66 +5511,66 @@
 	dutycycle $2
 	soundinput $5a
 Sfx_Elevator_branch_f2726: ; f2726
-	sound $2, $f1, $0300
+	sound __,  3, $f1, $0300
 	loopchannel 48, Sfx_Elevator_branch_f2726
 	soundinput $8
 	dutycycle $2
-	sound $f, $f3, $0730
-	sound $8, $65, $0730
-	sound $f, $f4, $0700
-	sound $f, $74, $0700
-	sound $f, $44, $0700
-	sound $f, $24, $0700
+	sound __, 16, $f3, $0730
+	sound __,  9, $65, $0730
+	sound __, 16, $f4, $0700
+	sound __, 16, $74, $0700
+	sound __, 16, $44, $0700
+	sound __, 16, $24, $0700
 	endchannel
 ; f274b
 
 Sfx_Elevator_Ch6: ; f274b
 Sfx_Elevator_Ch7: ; f274b
-	sound $60, $0, 0
-	sound $53, $0, 0
+	sound F_,  1, $0, 0
+	sound E_,  4, $0, 0
 	endchannel
 ; f2754
 
 Sfx_Elevator_Ch8: ; f2754
-	noise $60, $0, $0
-	noise $53, $0, $0
+	noise F_,  1, $0, $0
+	noise E_,  4, $0, $0
 	endchannel
 ; f275b
 
 Sfx_StopSlot: ; f275b
-	dbw $04, Sfx_StopSlot_Ch5
+	musicheader 1, 5, Sfx_StopSlot_Ch5
 ; f275e
 
 Sfx_StopSlot_Ch5: ; f275e
 	dutycycle $2
-	sound $1, $f8, $0760
-	sound $4, $82, $0760
+	sound __,  2, $f8, $0760
+	sound __,  5, $82, $0760
 	endchannel
 ; f2769
 
 Sfx_GlassTing: ; f2769
-	dbw $04, Sfx_GlassTing_Ch5
+	musicheader 1, 5, Sfx_GlassTing_Ch5
 ; f276c
 
 Sfx_GlassTing_Ch5: ; f276c
 	dutycycle $2
-	sound $20, $d1, $07dc
+	sound C#,  1, $d1, $07dc
 	endchannel
 ; f2773
 
 Sfx_GlassTing2: ; f2773
-	dbw $44, Sfx_GlassTing2_Ch5
-	dbw $05, Sfx_GlassTing2_Ch6
+	musicheader 2, 5, Sfx_GlassTing2_Ch5
+	musicheader 1, 6, Sfx_GlassTing2_Ch6
 ; f2779
 
 Sfx_GlassTing2_Ch5: ; f2779
 	dutycycle $2
-	sound $10, $f1, $07dc
+	sound C_,  1, $f1, $07dc
 	endchannel
 ; f2780
 
 Sfx_GlassTing2_Ch6: ; f2780
 	dutycycle $2
-	sound $10, $d1, $07dd
+	sound C_,  1, $d1, $07dd
 	endchannel
 ; f2787
--- a/audio/sfx_crystal.asm
+++ b/audio/sfx_crystal.asm
@@ -1,167 +1,167 @@
 Sfx_IntroUnown1: ; 17982d
-	dbw $04, Sfx_IntroUnown1_Ch5
+	musicheader 1, 5, Sfx_IntroUnown1_Ch5
 ; 179830
 
 Sfx_IntroUnown1_Ch5: ; 179830
 	vibrato $1, $a3
 	dutycycle $2
-	sound $8, $39, $0705
-	sound $20, $e2, $0705
+	sound __,  9, $39, $0705
+	sound C#,  1, $e2, $0705
 	endchannel
 ; 17983e
 
 Sfx_IntroUnown2: ; 17983e
-	dbw $05, Sfx_IntroUnown2_Ch6
+	musicheader 1, 6, Sfx_IntroUnown2_Ch6
 ; 179841
 
 Sfx_IntroUnown2_Ch6: ; 179841
 	vibrato $1, $73
 	dutycycle $2
-	sound $8, $39, $0758
-	sound $20, $e2, $0758
+	sound __,  9, $39, $0758
+	sound C#,  1, $e2, $0758
 	endchannel
 ; 17984f
 
 Sfx_IntroUnown3: ; 17984f
-	dbw $06, Sfx_IntroUnown3_Ch7
+	musicheader 1, 7, Sfx_IntroUnown3_Ch7
 ; 179852
 
 Sfx_IntroUnown3_Ch7: ; 179852
 	vibrato $1, $53
-	sound $3, $32, $07c2
-	sound $3, $22, $07c2
-	sound $3, $12, $07c2
-	sound $10, $12, $07c2
-	sound $6, $22, $07c2
-	sound $6, $32, $07c2
+	sound __,  4, $32, $07c2
+	sound __,  4, $22, $07c2
+	sound __,  4, $12, $07c2
+	sound C_,  1, $12, $07c2
+	sound __,  7, $22, $07c2
+	sound __,  7, $32, $07c2
 	endchannel
 ; 17986e
 
 Sfx_DittoPopUp: ; 17986e
-	dbw $04, Sfx_DittoPopUp_Ch5
+	musicheader 1, 5, Sfx_DittoPopUp_Ch5
 ; 179871
 
 Sfx_DittoPopUp_Ch5: ; 179871
 	dutycycle $2
 	soundinput $1e
-	sound $3, $82, $0700
-	sound $1, $31, $0701
+	sound __,  4, $82, $0700
+	sound __,  2, $31, $0701
 	soundinput $16
-	sound $4, $b1, $0640
-	sound $10, $31, $0641
+	sound __,  5, $b1, $0640
+	sound C_,  1, $31, $0641
 	endchannel
 ; 179888
 
 Sfx_DittoTransform: ; 179888
-	dbw $04, Sfx_DittoTransform_Ch5
+	musicheader 1, 5, Sfx_DittoTransform_Ch5
 ; 17988b
 
 Sfx_DittoTransform_Ch5: ; 17988b
 	dutycycle $1
 	soundinput $26
-	sound $14, $3b, $0440
-	sound $4, $97, $04c0
-	sound $4, $67, $04c1
-	sound $4, $42, $04c2
+	sound C_,  5, $3b, $0440
+	sound __,  5, $97, $04c0
+	sound __,  5, $67, $04c1
+	sound __,  5, $42, $04c2
 	endchannel
 ; 1798a0
 
 Sfx_IntroSuicune1: ; 1798a0
-	dbw $07, Sfx_IntroSuicune1_Ch8
+	musicheader 1, 8, Sfx_IntroSuicune1_Ch8
 ; 1798a3
 
 Sfx_IntroSuicune1_Ch8: ; 1798a3
-	noise $1, $58, $59
-	noise $2, $91, $23
+	noise __,  2, $58, $59
+	noise __,  3, $91, $23
 	endchannel
 ; 1798aa
 
 Sfx_IntroPichu: ; 1798aa
-	dbw $04, Sfx_IntroPichu_Ch5
+	musicheader 1, 5, Sfx_IntroPichu_Ch5
 ; 1798ad
 
 Sfx_IntroPichu_Ch5: ; 1798ad
 	dutycycle $3
 	soundinput $4d
-	sound $1, $88, $0770
-	sound $3, $0, 0
+	sound __,  2, $88, $0770
+	sound __,  4, $0, 0
 	soundinput $17
-	sound $2, $88, $0776
+	sound __,  3, $88, $0776
 	endchannel
 ; 1798c0
 
 Sfx_IntroSuicune2: ; 1798c0
-	dbw $07, Sfx_IntroSuicune2_Ch8
+	musicheader 1, 8, Sfx_IntroSuicune2_Ch8
 ; 1798c3
 
 Sfx_IntroSuicune2_Ch8: ; 1798c3
-	noise $1, $a7, $31
-	noise $1, $91, $0
-	noise $1, $92, $21
-	noise $1, $91, $0
-	noise $1, $92, $22
-	noise $1, $82, $11
-	noise $1, $82, $22
-	noise $1, $72, $11
-	noise $1, $72, $12
-	noise $1, $62, $10
-	noise $1, $63, $0
-	noise $1, $53, $10
-	noise $1, $43, $0
-	noise $1, $33, $10
-	noise $1, $23, $0
-	noise $1, $13, $10
+	noise __,  2, $a7, $31
+	noise __,  2, $91, $0
+	noise __,  2, $92, $21
+	noise __,  2, $91, $0
+	noise __,  2, $92, $22
+	noise __,  2, $82, $11
+	noise __,  2, $82, $22
+	noise __,  2, $72, $11
+	noise __,  2, $72, $12
+	noise __,  2, $62, $10
+	noise __,  2, $63, $0
+	noise __,  2, $53, $10
+	noise __,  2, $43, $0
+	noise __,  2, $33, $10
+	noise __,  2, $23, $0
+	noise __,  2, $13, $10
 	endchannel
 ; 1798f4
 
 Sfx_IntroSuicune3: ; 1798f4
-	dbw $07, Sfx_IntroSuicune3_Ch8
+	musicheader 1, 8, Sfx_IntroSuicune3_Ch8
 ; 1798f7
 
 Sfx_IntroSuicune3_Ch8: ; 1798f7
-	noise $1, $88, $31
-	noise $8, $39, $11
-	noise $4, $a4, $10
-	noise $4, $44, $10
-	noise $4, $24, $10
+	noise __,  2, $88, $31
+	noise __,  9, $39, $11
+	noise __,  5, $a4, $10
+	noise __,  5, $44, $10
+	noise __,  5, $24, $10
 	endchannel
 ; 179907
 
 Sfx_DittoBounce: ; 179907
-	dbw $04, Sfx_DittoBounce_Ch5
+	musicheader 1, 5, Sfx_DittoBounce_Ch5
 ; 17990a
 
 Sfx_DittoBounce_Ch5: ; 17990a
 	dutycycle $2
 	soundinput $2c
-	sound $2, $82, $04b0
-	sound $0, $31, $04b0
+	sound __,  3, $82, $04b0
+	sound __,  1, $31, $04b0
 	soundinput $34
-	sound $10, $b1, $0420
+	sound C_,  1, $b1, $0420
 	endchannel
 ; 17991d
 
 Sfx_IntroSuicune4: ; 17991d
-	dbw $07, Sfx_IntroSuicune4_Ch8
+	musicheader 1, 8, Sfx_IntroSuicune4_Ch8
 ; 179920
 
 Sfx_IntroSuicune4_Ch8: ; 179920
-	noise $1, $a1, $5c
-	noise $0, $0, $0
-	noise $1, $c1, $4d
-	noise $0, $0, $0
-	noise $4, $b2, $31
-	noise $0, $0, $0
-	noise $4, $a2, $2
-	noise $0, $0, $0
-	noise $4, $92, $1
-	noise $0, $0, $0
-	noise $20, $72, $0
+	noise __,  2, $a1, $5c
+	noise __,  1, $0, $0
+	noise __,  2, $c1, $4d
+	noise __,  1, $0, $0
+	noise __,  5, $b2, $31
+	noise __,  1, $0, $0
+	noise __,  5, $a2, $2
+	noise __,  1, $0, $0
+	noise __,  5, $92, $1
+	noise __,  1, $0, $0
+	noise C#,  1, $72, $0
 	endchannel
 ; 179942
 
 Sfx_GameFreakPresents: ; 179942
-	dbw $04, Sfx_GameFreakPresents_Ch5
+	musicheader 1, 5, Sfx_GameFreakPresents_Ch5
 ; 179945
 
 Sfx_GameFreakPresents_Ch5: ; 179945
@@ -188,7 +188,7 @@
 ; 179961
 
 Sfx_Tingle: ; 179961
-	dbw $04, Sfx_Tingle_Ch5
+	musicheader 1, 5, Sfx_Tingle_Ch5
 ; 179964
 
 Sfx_Tingle_Ch5: ; 179964
@@ -212,22 +212,22 @@
 ; 17997c
 
 Sfx_TwoPcBeeps: ; 17997c
-	dbw $04, Sfx_TwoPcBeeps_Ch5
+	musicheader 1, 5, Sfx_TwoPcBeeps_Ch5
 ; 17997f
 
 Sfx_TwoPcBeeps_Ch5: ; 17997f
 	dutycycle $2
-	sound $2, $e8, $07c2
-	sound $2, $28, $07c2
-	sound $2, $e8, $07c2
-	sound $2, $28, $07c2
+	sound __,  3, $e8, $07c2
+	sound __,  3, $28, $07c2
+	sound __,  3, $e8, $07c2
+	sound __,  3, $28, $07c2
 	endchannel
 ; 179992
 
 Sfx_4NoteDitty: ; 179992
-	dbw $84, Sfx_4NoteDitty_Ch5
-	dbw $05, Sfx_4NoteDitty_Ch6
-	dbw $06, Sfx_4NoteDitty_Ch7
+	musicheader 3, 5, Sfx_4NoteDitty_Ch5
+	musicheader 1, 6, Sfx_4NoteDitty_Ch6
+	musicheader 1, 7, Sfx_4NoteDitty_Ch7
 ; 17999b
 
 Sfx_4NoteDitty_Ch5: ; 17999b
@@ -273,7 +273,7 @@
 ; 1799cb
 
 Sfx_Twinkle: ; 1799cb
-	dbw $04, Sfx_Twinkle_Ch5
+	musicheader 1, 5, Sfx_Twinkle_Ch5
 ; 1799ce
 
 Sfx_Twinkle_Ch5: ; 1799ce
--- a/audio/sfx_pointers.asm
+++ b/audio/sfx_pointers.asm
@@ -97,7 +97,7 @@
 	dba Sfx_Unknown5F
 	dba Sfx_Unknown60
 	dba Sfx_Unknown61
-	dba Sfx_Unknown62
+	dba Sfx_SwitchPockets
 	dba Sfx_Unknown63
 	dba Sfx_Burn
 	dba Sfx_TitleScreenEntrance
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -20,7 +20,7 @@
 	and a
 	jr nz, DontSwitch
 
-	ld hl, TrainerClassAttributes + 5
+	ld hl, TrainerClassAttributes + TRNATTR_AI_ITEM_SWITCH
 	ld a, [InBattleTowerBattle] ; Load always the first TrainerClass for BattleTower-Trainers
 	and a
 	jr nz, .ok
@@ -663,7 +663,7 @@
 	call PrintText_UsedItemOn
 	hlcoord 2, 2
 	xor a
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	call AIUsedItemSound
 	predef AnimateHPBar
 	jp AIUpdateHUD
@@ -866,7 +866,7 @@
 	ld [wd265], a
 	call GetItemName
 	ld hl, StringBuffer1
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld bc, ITEM_NAME_LENGTH
 	call CopyBytes
 	ld hl, TextJump_EnemyUsedOn
--- /dev/null
+++ b/battle/ai/move.asm
@@ -1,0 +1,222 @@
+AIChooseMove: ; 440ce
+; Score each move in EnemyMonMoves starting from Buffer1. Lower is better.
+; Pick the move with the lowest score.
+
+; Wildmons attack at random.
+	ld a, [wBattleMode]
+	dec a
+	ret z
+
+	ld a, [wLinkMode]
+	and a
+	ret nz
+
+; No use picking a move if there's no choice.
+	callba CheckSubstatus_RechargeChargedRampageBideRollout
+	ret nz
+
+
+; The default score is 20. Unusable moves are given a score of 80.
+	ld a, 20
+	ld hl, Buffer1
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+
+; Don't pick disabled moves.
+	ld a, [EnemyDisabledMove]
+	and a
+	jr z, .CheckPP
+
+	ld hl, EnemyMonMoves
+	ld c, 0
+.CheckDisabledMove
+	cp [hl]
+	jr z, .ScoreDisabledMove
+	inc c
+	inc hl
+	jr .CheckDisabledMove
+.ScoreDisabledMove
+	ld hl, Buffer1
+	ld b, 0
+	add hl, bc
+	ld [hl], 80
+
+; Don't pick moves with 0 PP.
+.CheckPP
+	ld hl, Buffer1 - 1
+	ld de, EnemyMonPP
+	ld b, 0
+.CheckMovePP
+	inc b
+	ld a, b
+	cp EnemyMonMovesEnd - EnemyMonMoves + 1
+	jr z, .ApplyLayers
+	inc hl
+	ld a, [de]
+	inc de
+	and $3f
+	jr nz, .CheckMovePP
+	ld [hl], 80
+	jr .CheckMovePP
+
+
+; Apply AI scoring layers depending on the trainer class.
+.ApplyLayers
+	ld hl, TrainerClassAttributes + TRNATTR_AI_MOVE_WEIGHTS
+
+	; If we have a battle in BattleTower just load the Attributes of the first TrainerClass (Falkner)
+	; so we have always the same AI, regardless of the loaded class of trainer
+	ld a, [InBattleTowerBattle]
+	bit 0, a
+	jr nz, .battle_tower_skip
+
+	ld a, [TrainerClass]
+	dec a
+	ld bc, 7 ; Trainer2AI - Trainer1AI
+	call AddNTimes
+
+.battle_tower_skip
+	lb bc, CHECK_FLAG, 0
+	push bc
+	push hl
+
+.CheckLayer
+	pop hl
+	pop bc
+
+	ld a, c
+	cp 16 ; up to 16 scoring layers
+	jr z, .DecrementScores
+
+	push bc
+	ld d, BANK(TrainerClassAttributes)
+	predef FlagPredef
+	ld d, c
+	pop bc
+
+	inc c
+	push bc
+	push hl
+
+	ld a, d
+	and a
+	jr z, .CheckLayer
+
+	ld hl, AIScoringPointers
+	dec c
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, BANK(AIScoring)
+	call FarCall_hl
+
+	jr .CheckLayer
+
+; Decrement the scores of all moves one by one until one reaches 0.
+.DecrementScores
+	ld hl, Buffer1
+	ld de, EnemyMonMoves
+	ld c, EnemyMonMovesEnd - EnemyMonMoves
+
+.DecrementNextScore
+	; If the enemy has no moves, this will infinite.
+	ld a, [de]
+	inc de
+	and a
+	jr z, .DecrementScores
+
+	; We are done whenever a score reaches 0
+	dec [hl]
+	jr z, .PickLowestScoreMoves
+
+	; If we just decremented the fourth move's score, go back to the first move
+	inc hl
+	dec c
+	jr z, .DecrementScores
+
+	jr .DecrementNextScore
+
+; In order to avoid bias towards the moves located first in memory, increment the scores
+; that were decremented one more time than the rest (in case there was a tie).
+; This means that the minimum score will be 1.
+.PickLowestScoreMoves
+	ld a, c
+
+.move_loop
+	inc [hl]
+	dec hl
+	inc a
+	cp NUM_MOVES + 1
+	jr nz, .move_loop
+
+	ld hl, Buffer1
+	ld de, EnemyMonMoves
+	ld c, NUM_MOVES
+
+; Give a score of 0 to a blank move	
+.loop2
+	ld a, [de]
+	and a
+	jr nz, .skip_load
+	ld [hl], a
+
+; Disregard the move if its score is not 1	
+.skip_load
+	ld a, [hl]
+	dec a
+	jr z, .keep
+	xor a
+	ld [hli], a
+	jr .after_toss
+
+.keep
+	ld a, [de]
+	ld [hli], a
+.after_toss
+	inc de
+	dec c
+	jr nz, .loop2
+
+; Randomly choose one of the moves with a score of 1 	
+.ChooseMove
+	ld hl, Buffer1
+	call Random
+	and 3
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .ChooseMove
+
+	ld [CurEnemyMove], a
+	ld a, c
+	ld [CurEnemyMoveNum], a
+	ret
+; 441af
+
+
+AIScoringPointers: ; 441af
+	dw AI_Basic
+	dw AI_Setup
+	dw AI_Types
+	dw AI_Offensive
+	dw AI_Smart
+	dw AI_Opportunist
+	dw AI_Aggressive
+	dw AI_Cautious
+	dw AI_Status
+	dw AI_Risky
+	dw AI_None
+	dw AI_None
+	dw AI_None
+	dw AI_None
+	dw AI_None
+	dw AI_None
+; 441cf
--- /dev/null
+++ b/battle/ai/redundant.asm
@@ -1,0 +1,198 @@
+AI_Redundant: ; 2c41a
+; Check if move effect c will fail because it's already been used.
+; Return z if the move is a good choice.
+; Return nz if the move is a bad choice.
+	ld a, c
+	ld de, 3
+	ld hl, .Moves
+	call IsInArray
+	jp nc, .NotRedundant
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.Moves: ; 2c42c
+	dbw EFFECT_DREAM_EATER,  .DreamEater
+	dbw EFFECT_HEAL,         .Heal
+	dbw EFFECT_LIGHT_SCREEN, .LightScreen
+	dbw EFFECT_MIST,         .Mist
+	dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
+	dbw EFFECT_CONFUSE,      .Confuse
+	dbw EFFECT_TRANSFORM,    .Transform
+	dbw EFFECT_REFLECT,      .Reflect
+	dbw EFFECT_SUBSTITUTE,   .Substitute
+	dbw EFFECT_LEECH_SEED,   .LeechSeed
+	dbw EFFECT_DISABLE,      .Disable
+	dbw EFFECT_ENCORE,       .Encore
+	dbw EFFECT_SNORE,        .Snore
+	dbw EFFECT_SLEEP_TALK,   .SleepTalk
+	dbw EFFECT_MEAN_LOOK,    .MeanLook
+	dbw EFFECT_NIGHTMARE,    .Nightmare
+	dbw EFFECT_SPIKES,       .Spikes
+	dbw EFFECT_FORESIGHT,    .Foresight
+	dbw EFFECT_PERISH_SONG,  .PerishSong
+	dbw EFFECT_SANDSTORM,    .Sandstorm
+	dbw EFFECT_ATTRACT,      .Attract
+	dbw EFFECT_SAFEGUARD,    .Safeguard
+	dbw EFFECT_RAIN_DANCE,   .RainDance
+	dbw EFFECT_SUNNY_DAY,    .SunnyDay
+	dbw EFFECT_TELEPORT,     .Teleport
+	dbw EFFECT_MORNING_SUN,  .MorningSun
+	dbw EFFECT_SYNTHESIS,    .Synthesis
+	dbw EFFECT_MOONLIGHT,    .Moonlight
+	dbw EFFECT_SWAGGER,      .Swagger
+	dbw EFFECT_FUTURE_SIGHT, .FutureSight
+	db -1
+
+.LightScreen: ; 2c487
+	ld a, [EnemyScreens]
+	bit SCREENS_LIGHT_SCREEN, a
+	ret
+
+.Mist: ; 2c48d
+	ld a, [EnemySubStatus4]
+	bit SUBSTATUS_MIST, a
+	ret
+
+.FocusEnergy: ; 2c493
+	ld a, [EnemySubStatus4]
+	bit SUBSTATUS_FOCUS_ENERGY, a
+	ret
+
+.Confuse: ; 2c499
+	ld a, [PlayerSubStatus3]
+	bit SUBSTATUS_CONFUSED, a
+	ret nz
+	ld a, [PlayerScreens]
+	bit SCREENS_SAFEGUARD, a
+	ret
+
+.Transform: ; 2c4a5
+	ld a, [EnemySubStatus5]
+	bit SUBSTATUS_TRANSFORMED, a
+	ret
+
+.Reflect: ; 2c4ab
+	ld a, [EnemyScreens]
+	bit SCREENS_REFLECT, a
+	ret
+
+.Substitute: ; 2c4b1
+	ld a, [EnemySubStatus4]
+	bit SUBSTATUS_SUBSTITUTE, a
+	ret
+
+.LeechSeed: ; 2c4b7
+	ld a, [PlayerSubStatus4]
+	bit SUBSTATUS_LEECH_SEED, a
+	ret
+
+.Disable: ; 2c4bd
+	ld a, [PlayerDisableCount]
+	and a
+	ret
+
+.Encore: ; 2c4c2
+	ld a, [PlayerSubStatus5]
+	bit SUBSTATUS_ENCORED, a
+	ret
+
+.Snore:
+.SleepTalk: ; 2c4c8
+	ld a, [EnemyMonStatus]
+	and SLP
+	jr z, .Redundant
+	jr .NotRedundant
+
+.MeanLook: ; 2c4d1
+	ld a, [EnemySubStatus5]
+	bit SUBSTATUS_CANT_RUN, a
+	ret
+
+.Nightmare: ; 2c4d7
+	ld a, [BattleMonStatus]
+	and a
+	jr z, .Redundant
+	ld a, [PlayerSubStatus1]
+	bit SUBSTATUS_NIGHTMARE, a
+	ret
+
+.Spikes: ; 2c4e3
+	ld a, [PlayerScreens]
+	bit SCREENS_SPIKES, a
+	ret
+
+.Foresight: ; 2c4e9
+	ld a, [PlayerSubStatus1]
+	bit SUBSTATUS_IDENTIFIED, a
+	ret
+
+.PerishSong: ; 2c4ef
+	ld a, [PlayerSubStatus1]
+	bit SUBSTATUS_PERISH, a
+	ret
+
+.Sandstorm: ; 2c4f5
+	ld a, [Weather]
+	cp WEATHER_SANDSTORM
+	jr z, .Redundant
+	jr .NotRedundant
+
+.Attract: ; 2c4fe
+	callba CheckOppositeGender
+	jr c, .Redundant
+	ld a, [PlayerSubStatus1]
+	bit SUBSTATUS_IN_LOVE, a
+	ret
+
+.Safeguard: ; 2c50c
+	ld a, [EnemyScreens]
+	bit SCREENS_SAFEGUARD, a
+	ret
+
+.RainDance: ; 2c512
+	ld a, [Weather]
+	cp WEATHER_RAIN
+	jr z, .Redundant
+	jr .NotRedundant
+
+.SunnyDay: ; 2c51b
+	ld a, [Weather]
+	cp WEATHER_SUN
+	jr z, .Redundant
+	jr .NotRedundant
+
+.DreamEater: ; 2c524
+	ld a, [BattleMonStatus]
+	and SLP
+	jr z, .Redundant
+	jr .NotRedundant
+
+.Swagger: ; 2c52d
+	ld a, [PlayerSubStatus3]
+	bit SUBSTATUS_CONFUSED, a
+	ret
+
+.FutureSight: ; 2c533
+	ld a, [EnemyScreens]
+	bit 5, a
+	ret
+
+.Heal:
+.MorningSun:
+.Synthesis:
+.Moonlight: ; 2c539
+	callba AICheckEnemyMaxHP
+	jr nc, .NotRedundant
+
+.Teleport:
+.Redundant: ; 2c541
+	ld a, 1
+	and a
+	ret
+
+.NotRedundant: ; 2c545
+	xor a
+	ret
--- a/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -77,7 +77,7 @@
 	call BattleAnimRestoreHuds
 
 .disabled
-	ld a, [wcfca]
+	ld a, [wNumHits]
 	and a
 	jr z, .done
 
@@ -92,22 +92,22 @@
 
 .hi_byte
 	call WaitSFX
-	call Functioncc881
+	call PlayHitSound
 	call RunBattleAnimScript
 
 .done
-	call Functioncc8f6
+	call BattleAnim_RevertPals
 	ret
 ; cc163
 
 RunBattleAnimScript: ; cc163
 
-	call Functioncc8d3
+	call ClearBattleAnims
 
 .playframe
-	call Functioncc25f
-	call Functionccb48
-	call Functioncc96e
+	call RunBattleAnimCommand
+	call _ExecuteBGEffects
+	call BattleAnim_UpdateOAM_All
 	call Function3b0c
 	call BattleAnimRequestPals
 
@@ -114,32 +114,32 @@
 ; Speed up Rollout's animation.
 	ld a, [FXAnimIDHi]
 	or a
-	jr nz, .asm_cc193
+	jr nz, .not_rollout
 
 	ld a, [FXAnimIDLo]
 	cp ROLLOUT
-	jr nz, .asm_cc193
+	jr nz, .not_rollout
 
 	ld a, $2e
 	ld b, 5
 	ld de, 4
 	ld hl, ActiveBGEffects
-.asm_cc18c
+.find
 	cp [hl]
-	jr z, .asm_cc196
+	jr z, .done
 	add hl, de
 	dec b
-	jr nz, .asm_cc18c
+	jr nz, .find
 
-.asm_cc193
+.not_rollout
 	call BattleAnimDelayFrame
 
-.asm_cc196
+.done
 	ld a, [BattleAnimFlags]
 	bit 0, a
 	jr z, .playframe
 
-	call Functioncc23d
+	call BattleAnim_ClearCGB_OAMFlags
 	ret
 ; cc1a1
 
@@ -191,15 +191,15 @@
 
 	ld a, [rBGP]
 	ld b, a
-	ld a, [wcfc7]
+	ld a, [wBGP]
 	cp b
-	call nz, Functioncc91a
+	call nz, BattleAnim_SetBGPals
 
 	ld a, [rOBP0]
 	ld b, a
-	ld a, [wcfc8]
+	ld a, [wOBP0]
 	cp b
-	call nz, Functioncc94b
+	call nz, BattleAnim_SetOBPals
 	ret
 ; cc1fb
 
@@ -241,7 +241,7 @@
 	ld [hBGMapAddress], a
 	ld a, (VBGMap0 tile $28) / $100
 	ld [hBGMapAddress + 1], a
-	call Function3200
+	call WaitBGMap2
 	ld a, $60
 	ld [hWY], a
 	xor a
@@ -253,11 +253,11 @@
 ; cc23d
 
 
-Functioncc23d: ; cc23d
+BattleAnim_ClearCGB_OAMFlags: ; cc23d
 
 	ld a, [BattleAnimFlags]
 	bit 3, a
-	jr z, .skip
+	jr z, .delete
 
 	ld hl, Sprites + 3
 	ld c, (SpritesEnd - Sprites) / 4
@@ -272,7 +272,7 @@
 	jr nz, .loop
 	ret
 
-.skip
+.delete
 	ld hl, Sprites
 	ld c, SpritesEnd - Sprites
 	xor a
@@ -283,7 +283,7 @@
 	ret
 ; cc25f
 
-Functioncc25f: ; cc25f
+RunBattleAnimCommand: ; cc25f
 	call .CheckTimer
 	ret nc
 	call .RunScript
@@ -341,9 +341,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, BattleAnimCommands
-rept 2
 	add hl, de
-endr
+	add hl, de
 
 	ld a, [hli]
 	ld h, [hl]
@@ -460,19 +459,19 @@
 	call GetBattleAnimByte
 	ld hl, BattleAnimFlags
 	bit 2, [hl]
-	jr nz, .asm_cc35b
+	jr nz, .continue_loop
 	and a
-	jr z, .asm_cc363
+	jr z, .perpetual
 	dec a
 	set 2, [hl]
 	ld [BattleAnimLoops], a
-.asm_cc35b
+.continue_loop
 	ld hl, BattleAnimLoops
 	ld a, [hl]
 	and a
-	jr z, .asm_cc372
+	jr z, .return_from_loop
 	dec [hl]
-.asm_cc363
+.perpetual
 	call GetBattleAnimByte
 	ld e, a
 	call GetBattleAnimByte
@@ -482,7 +481,8 @@
 	inc hl
 	ld [hl], d
 	ret
-.asm_cc372
+
+.return_from_loop
 	ld hl, BattleAnimFlags
 	res 2, [hl]
 	ld hl, BattleAnimAddress
@@ -489,9 +489,8 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-rept 2
 	inc de
-endr
+	inc de
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -498,10 +497,10 @@
 	ret
 
 BattleAnimCmd_JumpUntil: ; cc383 (33:4383)
-	ld hl, wKickCounter
+	ld hl, wBattleAnimParam
 	ld a, [hl]
 	and a
-	jr z, .asm_cc39a
+	jr z, .dont_jump
 
 	dec [hl]
 	call GetBattleAnimByte
@@ -514,14 +513,13 @@
 	ld [hl], d
 	ret
 
-.asm_cc39a
+.dont_jump
 	ld hl, BattleAnimAddress
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-rept 2
 	inc de
-endr
+	inc de
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -547,9 +545,8 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-rept 2
 	inc de
-endr
+	inc de
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -568,7 +565,7 @@
 
 BattleAnimCmd_JumpIf: ; cc3d6 (33:43d6)
 	call GetBattleAnimByte
-	ld hl, wKickCounter
+	ld hl, wBattleAnimParam
 	cp [hl]
 	jr z, .jump
 
@@ -576,9 +573,8 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-rept 2
 	inc de
-endr
+	inc de
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -598,7 +594,7 @@
 BattleAnimCmd_JumpAnd: ; cc3fa (33:43fa)
 	call GetBattleAnimByte
 	ld e, a
-	ld a, [wKickCounter]
+	ld a, [wBattleAnimParam]
 	and e
 	jr nz, .jump
 
@@ -606,9 +602,8 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-rept 2
 	inc de
-endr
+	inc de
 	ld [hl], d
 	dec hl
 	ld [hl], e
@@ -625,42 +620,43 @@
 	ret
 
 BattleAnimCmd_Obj: ; cc41f (33:441f)
+; index, x, y, param
 	call GetBattleAnimByte
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 2], a
+	ld [wBattleAnimTemp2], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 3], a
-	call Functioncc9a1
+	ld [wBattleAnimTemp3], a
+	call QueueBattleAnimation
 	ret
 
 BattleAnimCmd_BGEffect: ; cc43b (33:443b)
 	call GetBattleAnimByte
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 2], a
+	ld [wBattleAnimTemp2], a
 	call GetBattleAnimByte
-	ld [BattleAnimTemps + 3], a
-	call Functionccb4f
+	ld [wBattleAnimTemp3], a
+	call _QueueBGEffect
 	ret
 
 BattleAnimCmd_BGP: ; cc457 (33:4457)
 	call GetBattleAnimByte
-	ld [wcfc7], a
+	ld [wBGP], a
 	ret
 
 BattleAnimCmd_OBP0: ; cc45e (33:445e)
 	call GetBattleAnimByte
-	ld [wcfc8], a
+	ld [wOBP0], a
 	ret
 
 BattleAnimCmd_OBP1: ; cc465 (33:4465)
 	call GetBattleAnimByte
-	ld [wcfc9], a
+	ld [wOBP1], a
 	ret
 
 BattleAnimCmd_ResetObp0: ; cc46c (33:446c)
@@ -667,20 +663,20 @@
 	ld a, [hSGB]
 	and a
 	ld a, $e0
-	jr z, .asm_cc475
+	jr z, .not_sgb
 	ld a, $f0
-.asm_cc475
-	ld [wcfc8], a
+.not_sgb
+	ld [wOBP0], a
 	ret
 
 BattleAnimCmd_ClearObjs: ; cc479 (33:4479)
-	ld hl, OTPartyMon3HP
+	ld hl, ActiveAnimObjects
 	ld a, $a0
-.asm_cc47e
+.loop
 	ld [hl], $0
 	inc hl
 	dec a
-	jr nz, .asm_cc47e
+	jr nz, .loop
 	ret
 
 BattleAnimCmd_1GFX:
@@ -691,16 +687,16 @@
 	ld a, [BattleAnimByte]
 	and $f
 	ld c, a
-	ld hl, w5_d300
+	ld hl, wBattleAnimTileDict
 	xor a
-	ld [BattleAnimTemps], a
-.asm_cc492
-	ld a, [BattleAnimTemps]
-	cp $4f
+	ld [wBattleAnimTemp0], a
+.loop
+	ld a, [wBattleAnimTemp0]
+	cp (VTiles1 - VTiles0) / $10 - $31
 	ret nc
 	call GetBattleAnimByte
 	ld [hli], a
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	ld [hli], a
 	push bc
 	push hl
@@ -712,36 +708,37 @@
 	ld de, VTiles0 tile $31
 	add hl, de
 	ld a, [BattleAnimByte]
-	call Functionce846
-	ld a, [BattleAnimTemps]
+	call LoadBattleAnimObj
+	ld a, [wBattleAnimTemp0]
 	add c
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	pop hl
 	pop bc
 	dec c
-	jr nz, .asm_cc492
+	jr nz, .loop
 	ret
 
 BattleAnimCmd_IncObj: ; cc4c0 (33:44c0)
 	call GetBattleAnimByte
-	ld e, $a
-	ld bc, OTPartyMon3HP
-.asm_cc4c8
-	ld hl, $0
+	ld e, 10
+	ld bc, ActiveAnimObjects
+.loop
+	ld hl, BATTLEANIMSTRUCT_INDEX
 	add hl, bc
 	ld d, [hl]
 	ld a, [BattleAnimByte]
 	cp d
-	jr z, .asm_cc4dd
-	ld hl, $18
+	jr z, .found
+	ld hl, BATTLEANIMSTRUCT_LENGTH
 	add hl, bc
 	ld c, l
 	ld b, h
 	dec e
-	jr nz, .asm_cc4c8
+	jr nz, .loop
 	ret
-.asm_cc4dd
-	ld hl, $e
+
+.found
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
 	add hl, bc
 	inc [hl]
 	ret
@@ -748,24 +745,25 @@
 
 BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3)
 	call GetBattleAnimByte
-	ld e, $5
+	ld e, 5
 	ld bc, ActiveBGEffects
-.asm_cc4eb
+.loop
 	ld hl, $0
 	add hl, bc
 	ld d, [hl]
 	ld a, [BattleAnimByte]
 	cp d
-	jr z, .asm_cc500
-	ld hl, $4
+	jr z, .found
+	ld hl, 4
 	add hl, bc
 	ld c, l
 	ld b, h
 	dec e
-	jr nz, .asm_cc4eb
+	jr nz, .loop
 	ret
-.asm_cc500
-	ld hl, $1
+
+.found
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	inc [hl]
 	ret
@@ -772,25 +770,26 @@
 
 BattleAnimCmd_SetObj: ; cc506 (33:4506)
 	call GetBattleAnimByte
-	ld e, $a
-	ld bc, OTPartyMon3HP
-.asm_cc50e
-	ld hl, $0
+	ld e, 10
+	ld bc, ActiveAnimObjects
+.loop
+	ld hl, BATTLEANIMSTRUCT_INDEX
 	add hl, bc
 	ld d, [hl]
 	ld a, [BattleAnimByte]
 	cp d
-	jr z, .asm_cc523
-	ld hl, $18
+	jr z, .found
+	ld hl, BATTLEANIMSTRUCT_LENGTH
 	add hl, bc
 	ld c, l
 	ld b, h
 	dec e
-	jr nz, .asm_cc50e
+	jr nz, .loop
 	ret
-.asm_cc523
+
+.found
 	call GetBattleAnimByte
-	ld hl, $e
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
 	add hl, bc
 	ld [hl], a
 	ret
@@ -797,17 +796,16 @@
 
 BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c)
 
-	ld hl, w5_d300
-.asm_cc52f
+	ld hl, wBattleAnimTileDict
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_cc537
-rept 2
+	jr z, .okay
 	inc hl
-endr
-	jr .asm_cc52f
+	inc hl
+	jr .loop
 
-.asm_cc537
+.okay
 	ld a, $28
 	ld [hli], a
 	ld a, $42
@@ -820,50 +818,49 @@
 	ld hl, VTiles0 tile $73
 	ld de, VTiles2 tile $06
 	ld a, $70
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, $7
-	call Functioncc561
+	call .LoadFootprint
 	ld de, VTiles2 tile $31
 	ld a, $60
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, $6
-	call Functioncc561
+	call .LoadFootprint
 	ret
 
-Functioncc561: ; cc561 (33:4561)
+.LoadFootprint: ; cc561 (33:4561)
 	push af
 	push hl
 	push de
-	ld bc, $3301
+	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
 	call Request2bpp
 	pop de
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, de
 	ld e, l
 	ld d, h
 	pop hl
-	ld bc, $10
+	ld bc, 1 tiles
 	add hl, bc
 	pop af
 	dec a
-	jr nz, Functioncc561
+	jr nz, .LoadFootprint
 	ret
 
 BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e)
 
-	ld hl, w5_d300
-.asm_cc581
+	ld hl, wBattleAnimTileDict
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_cc589
-rept 2
+	jr z, .okay
 	inc hl
-endr
-	jr .asm_cc581
+	inc hl
+	jr .loop
 
-.asm_cc589
+.okay
 	ld a, $28
 	ld [hli], a
 	ld a, $35
@@ -876,35 +873,35 @@
 	ld hl, VTiles0 tile $66
 	ld de, VTiles2 tile $05
 	ld a, $70
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, $7
-	call Functioncc5b3
+	call .LoadHead
 	ld de, VTiles2 tile $31
 	ld a, $60
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, $6
-	call Functioncc5b3
+	call .LoadHead
 	ret
 
-Functioncc5b3: ; cc5b3 (33:45b3)
+.LoadHead: ; cc5b3 (33:45b3)
 	push af
 	push hl
 	push de
-	ld bc, $3302
+	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
 	call Request2bpp
 	pop de
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, de
 	ld e, l
 	ld d, h
 	pop hl
-	ld bc, $20
+	ld bc, 2 tiles
 	add hl, bc
 	pop af
 	dec a
-	jr nz, Functioncc5b3
+	jr nz, .LoadHead
 	ret
 
 BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0)
@@ -996,18 +993,18 @@
 	and a
 	jr z, .player
 
-	ld hl, MonsterSpriteGFX
-	ld de, sScratch + $130
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $10
-	ld de, sScratch + $1a0
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $20
-	ld de, sScratch + $140
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $30
-	ld de, sScratch + $1b0
-	call CopyMonsterSpriteTile
+	ld hl, MonsterSpriteGFX + 0 tiles
+	ld de, sScratch + $13 tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 1 tiles
+	ld de, sScratch + $1a tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 2 tiles
+	ld de, sScratch + $14 tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 3 tiles
+	ld de, sScratch + $1b tiles
+	call .CopyTile
 
 	ld hl, VTiles2 tile $00
 	ld de, sScratch
@@ -1016,18 +1013,18 @@
 	jr .done
 
 .player
-	ld hl, MonsterSpriteGFX + $40
-	ld de, sScratch + $100
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $50
-	ld de, sScratch + $160
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $60
-	ld de, sScratch + $110
-	call CopyMonsterSpriteTile
-	ld hl, MonsterSpriteGFX + $70
-	ld de, sScratch + $170
-	call CopyMonsterSpriteTile
+	ld hl, MonsterSpriteGFX + 4 tiles
+	ld de, sScratch + $10 tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 5 tiles
+	ld de, sScratch + $16 tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 6 tiles
+	ld de, sScratch + $11 tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 7 tiles
+	ld de, sScratch + $17 tiles
+	call .CopyTile
 
 	ld hl, VTiles2 tile $31
 	ld de, sScratch
@@ -1040,8 +1037,8 @@
 	ld [rSVBK], a
 	ret
 
-CopyMonsterSpriteTile: ; cc6c6 (33:46c6)
-	ld bc, $10
+.CopyTile: ; cc6c6 (33:46c6)
+	ld bc, 1 tiles
 	ld a, BANK(MonsterSpriteGFX)
 	call FarCopyBytes
 	ret
@@ -1062,7 +1059,7 @@
 
 GetMinimizePic: ; cc6e7 (33:46e7)
 	ld hl, sScratch
-	ld bc, $310
+	ld bc, $31 tiles
 .loop
 	xor a
 	ld [hli], a
@@ -1075,7 +1072,7 @@
 	and a
 	jr z, .player
 
-	ld de, sScratch + $1a0
+	ld de, sScratch + $1a tiles
 	call CopyMinimizePic
 	ld hl, VTiles2 tile $00
 	ld de, sScratch
@@ -1129,11 +1126,11 @@
 	and a
 	jr z, .player
 
-	callab Function3f486
+	callab DropEnemySub
 	jr .done
 
 .player
-	callab Function3f447
+	callab DropPlayerSub
 
 .done
 	pop af
@@ -1150,7 +1147,7 @@
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
 
-	ld a, [wKickCounter]
+	ld a, [wBattleAnimParam]
 	ld [CurPartySpecies], a ; CurPartySpecies
 
 	ld a, [hBattleTurn]
@@ -1157,7 +1154,7 @@
 	and a
 	jr z, .player
 
-	ld hl, BattleMonDVs ; BattleMonDVs
+	ld hl, BattleMonDVs
 	predef GetUnownLetter
 	ld de, VTiles2 tile $00
 	predef GetFrontpic
@@ -1164,7 +1161,7 @@
 	jr .done
 
 .player
-	ld hl, EnemyMonDVs ; EnemyMonDVs
+	ld hl, EnemyMonDVs
 	predef GetUnownLetter
 	ld de, VTiles2 tile $31
 	predef GetBackpic
@@ -1172,7 +1169,7 @@
 .done
 	pop af
 	ld [CurPartySpecies], a ; CurPartySpecies
-	ld b, SCGB_01
+	ld b, SCGB_BATTLE_COLORS
 	call GetSGBLayout
 	pop af
 	ld [rSVBK], a
@@ -1207,17 +1204,17 @@
 	ld e, a
 	srl a
 	srl a
-	ld [wc2be], a
-	call Functioncc7fc
+	ld [wSFXDuration], a
+	call .GetCryTrack
 	and 3
 	ld [CryTracks], a ; CryTracks
 
 	ld e, a
 	ld d, 0
-	ld hl, Datacc7f8
+	ld hl, .GetPanning
 	add hl, de
 	ld a, [hl]
-	ld [wc2bc], a
+	ld [wStereoPanningMask], a
 
 	call GetBattleAnimByte
 	ld e, a
@@ -1227,11 +1224,11 @@
 	ret
 ; cc7f8 (33:47f8)
 
-Datacc7f8: ; cc7f8
+.GetPanning: ; cc7f8
 	db $f0, $0f, $f0, $0f
 ; cc7fc
 
-Functioncc7fc: ; cc7fc (33:47fc)
+.GetCryTrack: ; cc7fc (33:47fc)
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .enemy
@@ -1249,7 +1246,7 @@
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, Datacc871
+	ld hl, .CryData
 rept 4
 	add hl, de
 endr
@@ -1266,7 +1263,7 @@
 	ld a, $f0
 	ld [CryTracks], a ; CryTracks
 	ld a, [BattleMonSpecies] ; BattleMonSpecies
-	jr .asm_cc834
+	jr .done_cry_tracks
 
 .enemy
 	ld a, $0f
@@ -1273,7 +1270,7 @@
 	ld [CryTracks], a ; CryTracks
 	ld a, [EnemyMonSpecies] ; EnemyMon
 
-.asm_cc834
+.done_cry_tracks
 	push hl
 	call LoadCryHeader
 	pop hl
@@ -1310,7 +1307,7 @@
 	ld a, h
 	ld [CryLength + 1], a
 	ld a, 1
-	ld [wc2bc], a
+	ld [wStereoPanningMask], a
 
 	callab _PlayCryHeader
 
@@ -1320,17 +1317,17 @@
 	ret
 ; cc871 (33:4871)
 
-Datacc871: ; cc871
+.CryData: ; cc871
 ; +pitch, +length
-	dw 0, $c0
-	dw 0, $40
-	dw 0, $00
-	dw 0, $00
+	dw $0000, $00c0
+	dw $0000, $0040
+	dw $0000, $0000
+	dw $0000, $0000
 ; cc881
 
 
-Functioncc881: ; cc881
-	ld a, [wcfca]
+PlayHitSound: ; cc881
+	ld a, [wNumHits]
 	cp $1
 	jr z, .okay
 	cp $4
@@ -1366,17 +1363,17 @@
 	ld a, %11110000
 
 .sgb
-	ld [wcfc8], a
+	ld [wOBP0], a
 	ld a, %11100100
-	ld [wcfc7], a
-	ld [wcfc9], a
+	ld [wBGP], a
+	ld [wOBP1], a
 	ret
 
 .cgb
 	ld a, %11100100
-	ld [wcfc7], a
-	ld [wcfc8], a
-	ld [wcfc9], a
+	ld [wBGP], a
+	ld [wOBP0], a
+	ld [wOBP1], a
 	call DmgToCgbBGPals
 	lb de, %11100100, %11100100
 	call DmgToCgbObjPals
@@ -1383,7 +1380,7 @@
 	ret
 ; cc8d3
 
-Functioncc8d3: ; cc8d3
+ClearBattleAnims: ; cc8d3
 ; Clear animation block
 	ld hl, LYOverrides
 	ld bc, wBattleAnimEnd - LYOverrides
@@ -1400,9 +1397,8 @@
 	inc hl
 	ld d, [hl]
 	ld hl, BattleAnimations
-rept 2
 	add hl, de
-endr
+	add hl, de
 	call GetBattleAnimPointer
 	call BattleAnimAssignPals
 	call BattleAnimDelayFrame
@@ -1409,12 +1405,12 @@
 	ret
 ; cc8f6
 
-Functioncc8f6: ; cc8f6
+BattleAnim_RevertPals: ; cc8f6
 	call WaitTop
 	ld a, %11100100
-	ld [wcfc7], a
-	ld [wcfc8], a
-	ld [wcfc9], a
+	ld [wBGP], a
+	ld [wOBP0], a
+	ld [wOBP1], a
 	call DmgToCgbBGPals
 	lb de, %11100100, %11100100
 	call DmgToCgbObjPals
@@ -1427,7 +1423,7 @@
 	ret
 ; cc91a
 
-Functioncc91a: ; cc91a
+BattleAnim_SetBGPals: ; cc91a
 	ld [rBGP], a
 	ld a, [hCGB]
 	and a
@@ -1455,7 +1451,7 @@
 	ret
 ; cc94b
 
-Functioncc94b: ; cc94b
+BattleAnim_SetOBPals: ; cc94b
 	ld [rOBP0], a
 	ld a, [hCGB]
 	and a
@@ -1477,41 +1473,41 @@
 	ret
 ; cc96e
 
-Functioncc96e: ; cc96e
+BattleAnim_UpdateOAM_All: ; cc96e
 	ld a, $0
-	ld [w5_d418], a
-	ld hl, OTPartyMon3HP
-	ld e, $a
-.asm_cc978
+	ld [wBattleAnimOAMPointerLo], a
+	ld hl, ActiveAnimObjects
+	ld e, 10
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_cc98a
+	jr z, .next
 	ld c, l
 	ld b, h
 	push hl
 	push de
-	call Functionccfbe
-	call Functioncca09
+	call DoBattleAnimFrame
+	call BattleAnimOAMUpdate
 	pop de
 	pop hl
-	jr c, .asm_cc9a0
+	jr c, .done
 
-.asm_cc98a
-	ld bc, $0018
+.next
+	ld bc, BATTLEANIMSTRUCT_LENGTH
 	add hl, bc
 	dec e
-	jr nz, .asm_cc978
-	ld a, [w5_d418]
+	jr nz, .loop
+	ld a, [wBattleAnimOAMPointerLo]
 	ld l, a
-	ld h, $c4
-.asm_cc997
+	ld h, Sprites / $100
+.loop2
 	ld a, l
-	cp $a0
-	jr nc, .asm_cc9a0
+	cp SpritesEnd % $100
+	jr nc, .done
 	xor a
 	ld [hli], a
-	jr .asm_cc997
+	jr .loop2
 
-.asm_cc9a0
+.done
 	ret
 ; cc9a1
--- a/battle/anim_objects.asm
+++ b/battle/anim_objects.asm
@@ -1,6474 +1,9 @@
 ; Objects used in battle animations.
 
-
-Functioncc9a1: ; cc9a1 (33:49a1)
-	ld hl, OTPartyMon3HP
-	ld e, $a
-.asm_cc9a6
-	ld a, [hl]
-	and a
-	jr z, .asm_cc9b3
-	ld bc, $18
-	add hl, bc
-	dec e
-	jr nz, .asm_cc9a6
-	scf
-	ret
-.asm_cc9b3
-	ld c, l
-	ld b, h
-	ld hl, w5_d40e
-	inc [hl]
-	call Functioncc9c4
-	ret
-
-
-Functioncc9bd: ; cc9bd
-	ld hl, 0
-	add hl, bc
-	ld [hl], $0
-	ret
-; cc9c4
-
-
-Functioncc9c4: ; cc9c4 (33:49c4)
-	ld a, [BattleAnimTemps]
-	ld e, a
-	ld d, 0
-	ld hl, BattleAnimObjects
-rept 6
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	ld hl, $0
-	add hl, bc
-	ld a, [w5_d40e]
-	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 [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	call Functionccb31
-	ld [hli], a
-	ld a, [BattleAnimTemps + 1]
-	ld [hli], a
-	ld a, [BattleAnimTemps + 2]
-	ld [hli], a
-	xor a
-rept 2
-	ld [hli], a
-endr
-	ld a, [BattleAnimTemps + 3]
-	ld [hli], a
-	xor a
-	ld [hli], a
-	dec a
-	ld [hli], a
-	xor a
-rept 2
-	ld [hli], a
-endr
-	ld [hl], a
-	ret
-
-
-Functioncca09: ; cca09
-	call Functionccaaa
-	call Functionce7d1
-	cp $fd
-	jp z, .asm_ccaa5
-	cp $fc
-	jp z, .asm_ccaa2
-	push af
-	ld hl, BattleAnimTemps
-	ld a, [BattleAnimTemps + 7]
-	xor [hl]
-	and $e0
-	ld [hl], a
-	pop af
-	push bc
-	call Functionce83c
-	ld a, [BattleAnimTemps + 2]
-	add [hl]
-	ld [BattleAnimTemps + 2], a
-	inc hl
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [w5_d418]
-	ld e, a
-	ld d, $c4
-.asm_cca3c
-	ld a, [BattleAnimTemps + 4]
-	ld b, a
-	ld a, [BattleAnimTemps + 6]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, BattleAnimTemps
-	bit 6, [hl]
-	jr z, .asm_cca53
-	add $8
-	xor $ff
-	inc a
-
-.asm_cca53
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [BattleAnimTemps + 3]
-	ld b, a
-	ld a, [BattleAnimTemps + 5]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, BattleAnimTemps
-	bit 5, [hl]
-	jr z, .asm_cca6f
-	add $8
-	xor $ff
-	inc a
-
-.asm_cca6f
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [BattleAnimTemps + 2]
-	add $31
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [BattleAnimTemps]
-	ld b, a
-	ld a, [hl]
-	xor b
-	and $e0
-	ld b, a
-	ld a, [hl]
-	and $10
-	or b
-	ld b, a
-	ld a, [BattleAnimTemps + 8]
-	and $f
-	or b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, e
-	ld [w5_d418], a
-	cp $a0
-	jr nc, .asm_ccaa7
-	dec c
-	jr nz, .asm_cca3c
-	pop bc
-	jr .asm_ccaa5
-
-.asm_ccaa2
-	call Functioncc9bd
-
-.asm_ccaa5
-	and a
-	ret
-
-.asm_ccaa7
-	pop bc
-	scf
-	ret
-; ccaaa
-
-Functionccaaa: ; ccaaa
-	ld hl, $0001
-	add hl, bc
-	ld a, [hl]
-	and $80
-	ld [BattleAnimTemps], a
-	xor a
-	ld [BattleAnimTemps + 7], a
-	ld hl, $0005
-	add hl, bc
-	ld a, [hl]
-	ld [BattleAnimTemps + 8], a
-	ld hl, $0002
-	add hl, bc
-	ld a, [hl]
-	ld [BattleAnimTemps + 1], a
-	ld hl, $0006
-	add hl, bc
-	ld a, [hli]
-	ld [BattleAnimTemps + 2], a
-	ld a, [hli]
-	ld [BattleAnimTemps + 3], a
-	ld a, [hli]
-	ld [BattleAnimTemps + 4], a
-	ld a, [hli]
-	ld [BattleAnimTemps + 5], a
-	ld a, [hli]
-	ld [BattleAnimTemps + 6], a
-	ld a, [hBattleTurn]
-	and a
-	ret z
-	ld hl, $0001
-	add hl, bc
-	ld a, [hl]
-	ld [BattleAnimTemps], a
-	bit 0, [hl]
-	ret z
-	ld hl, $0007
-	add hl, bc
-	ld a, [hli]
-	ld d, a
-	ld a, $b4
-	sub d
-	ld [BattleAnimTemps + 3], a
-	ld a, [hli]
-	ld d, a
-	ld a, [BattleAnimTemps + 1]
-	cp $ff
-	jr nz, .asm_ccb09
-	ld a, $28
-	add d
-	jr .asm_ccb26
-
-.asm_ccb09
-	sub d
-	push af
-	ld a, [FXAnimIDHi]
-	or a
-	jr nz, .asm_ccb25
-	ld a, [FXAnimIDLo]
-	cp $86
-	jr z, .asm_ccb20
-	cp $87
-	jr z, .asm_ccb20
-	cp $d0
-	jr nz, .asm_ccb25
-
-.asm_ccb20
-	pop af
-	sub $8
-	jr .asm_ccb26
-
-.asm_ccb25
-	pop af
-
-.asm_ccb26
-	ld [BattleAnimTemps + 4], a
-	ld a, [hli]
-	xor $ff
-	inc a
-	ld [BattleAnimTemps + 5], a
-	ret
-; ccb31
-
-
-Functionccb31: ; ccb31 (33:4b31)
-	push hl
-	push bc
-	ld hl, w5_d300
-	ld b, a
-	ld c, $5
-.asm_ccb39
-	ld a, [hli]
-	cp b
-	jr z, .asm_ccb44
-	inc hl
-	dec c
-	jr nz, .asm_ccb39
-	xor a
-	jr .asm_ccb45
-.asm_ccb44
-	ld a, [hl]
-.asm_ccb45
-	pop bc
-	pop hl
-	ret
-
-
-Functionccb48: ; ccb48
-	callab Functionc8000
-	ret
-; ccb4f
-
-
-Functionccb4f: ; ccb4f (33:4b4f)
-	callab Functionc801a
-	ret
-; ccb56 (33:4b56)
-
-BattleAnimObjects: ; ccb56
-	db $01, $ff, $00, $00, $02, $01
-	db $01, $ff, $01, $00, $02, $01
-	db $01, $ff, $02, $00, $02, $01
-	db $01, $90, $00, $00, $02, $01
-	db $01, $90, $01, $00, $02, $01
-	db $01, $90, $02, $00, $02, $01
-	db $01, $ff, $03, $00, $02, $01
-	db $01, $ff, $04, $1b, $02, $01
-	db $01, $ff, $05, $00, $02, $01
-	db $01, $ff, $06, $00, $02, $01
-	db $01, $90, $07, $09, $02, $01
-	db $01, $aa, $10, $10, $04, $03
-	db $01, $90, $0e, $04, $04, $03
-	db $01, $90, $0f, $03, $04, $03
-	db $01, $90, $10, $08, $04, $03
-	db $01, $90, $0f, $0a, $04, $03
-	db $01, $90, $11, $03, $04, $03
-	db $01, $90, $12, $08, $06, $0a
-	db $01, $90, $13, $00, $06, $0a
-	db $01, $90, $14, $01, $06, $0a
-	db $21, $78, $16, $0b, $05, $06
-	db $00, $00, $09, $12, $04, $0b
-	db $00, $00, $09, $13, $04, $0b
-	db $01, $90, $18, $00, $04, $08
-	db $01, $ff, $18, $00, $04, $08
-	db $01, $90, $1d, $06, $02, $0c
-	db $01, $b4, $1f, $38, $02, $0c
-	db $01, $90, $08, $00, $02, $07
-	db $01, $a0, $08, $00, $02, $07
-	db $01, $ff, $19, $07, $07, $09
-	db $01, $ff, $1a, $07, $07, $09
-	db $01, $b0, $1b, $36, $07, $09
-	db $01, $b0, $84, $36, $06, $21
-	db $01, $90, $21, $0c, $06, $0d
-	db $00, $00, $23, $0d, $06, $0d
-	db $01, $90, $24, $0e, $02, $0e
-	db $61, $80, $27, $0f, $06, $04
-	db $01, $b4, $2a, $00, $06, $04
-	db $01, $40, $2b, $11, $05, $0f
-	db $61, $98, $2c, $00, $03, $10
-	db $61, $98, $2d, $09, $03, $10
-	db $01, $b8, $2e, $00, $06, $0a
-	db $01, $b8, $2f, $00, $06, $0a
-	db $01, $b8, $30, $14, $07, $11
-	db $01, $90, $21, $14, $03, $0d
-	db $21, $b0, $31, $00, $03, $05
-	db $21, $b0, $32, $00, $03, $05
-	db $21, $b0, $33, $00, $03, $05
-	db $21, $90, $34, $15, $03, $05
-	db $21, $90, $36, $00, $03, $05
-	db $21, $90, $37, $03, $02, $08
-	db $21, $90, $38, $00, $03, $05
-	db $21, $90, $39, $03, $02, $08
-	db $21, $90, $3a, $16, $02, $02
-	db $01, $90, $3c, $17, $02, $02
-	db $21, $ff, $3e, $00, $02, $02
-	db $21, $ff, $3f, $00, $02, $02
-	db $21, $ff, $40, $00, $02, $02
-	db $21, $ff, $41, $00, $02, $02
-	db $21, $ff, $42, $00, $02, $02
-	db $01, $88, $43, $18, $05, $12
-	db $01, $88, $44, $00, $05, $12
-	db $21, $b8, $45, $19, $02, $13
-	db $21, $ff, $46, $00, $02, $14
-	db $21, $ff, $47, $00, $02, $14
-	db $21, $ff, $48, $1a, $02, $14
-	db $21, $ff, $49, $1a, $02, $14
-	db $21, $98, $4a, $01, $02, $14
-	db $21, $80, $4b, $00, $03, $11
-	db $01, $88, $4c, $1c, $05, $12
-	db $21, $b0, $4d, $1d, $02, $15
-	db $01, $b0, $51, $1e, $03, $11
-	db $21, $ff, $52, $1f, $05, $16
-	db $21, $ff, $54, $1f, $05, $16
-	db $21, $68, $56, $20, $05, $06
-	db $21, $90, $59, $21, $02, $0e
-	db $21, $90, $5c, $02, $02, $17
-	db $01, $90, $5d, $22, $03, $11
-	db $61, $88, $5f, $00, $03, $10
-	db $61, $88, $2d, $09, $03, $10
-	db $21, $88, $60, $00, $03, $18
-	db $21, $80, $60, $00, $02, $18
-	db $21, $50, $61, $23, $03, $19
-	db $01, $80, $63, $24, $02, $19
-	db $01, $80, $66, $25, $02, $19
-	db $01, $50, $1c, $00, $02, $0c
-	db $21, $a8, $67, $26, $07, $1a
-	db $21, $a8, $68, $00, $07, $1a
-	db $21, $90, $69, $01, $02, $1a
-	db $21, $90, $6d, $28, $03, $19
-	db $21, $90, $6a, $27, $02, $1b
-	db $00, $00, $6f, $29, $02, $1c
-	db $21, $48, $70, $29, $02, $1c
-	db $21, $48, $6f, $29, $02, $1c
-	db $21, $78, $6f, $2a, $02, $1c
-	db $61, $90, $71, $2b, $02, $1d
-	db $61, $90, $72, $2c, $02, $1d
-	db $01, $48, $73, $2d, $04, $1e
-	db $01, $90, $74, $06, $02, $15
-	db $01, $ff, $75, $2e, $07, $19
-	db $21, $90, $4a, $02, $02, $14
-	db $01, $80, $30, $2f, $02, $11
-	db $01, $78, $76, $2a, $04, $23
-	db $01, $80, $77, $30, $02, $1f
-	db $01, $90, $77, $02, $02, $1f
-	db $01, $ff, $77, $00, $02, $1f
-	db $01, $80, $78, $08, $03, $23
-	db $21, $90, $79, $00, $02, $1f
-	db $01, $ff, $7a, $31, $03, $11
-	db $01, $88, $7a, $31, $03, $11
-	db $21, $88, $7b, $32, $02, $20
-	db $21, $98, $7c, $00, $02, $04
-	db $21, $80, $7d, $00, $02, $18
-	db $01, $80, $21, $2f, $06, $0d
-	db $01, $b0, $7e, $33, $03, $12
-	db $01, $80, $7f, $2f, $02, $08
-	db $21, $a0, $6f, $34, $02, $1c
-	db $21, $a0, $74, $35, $02, $15
-	db $21, $b0, $80, $33, $02, $14
-	db $01, $88, $81, $37, $02, $11
-	db $01, $88, $85, $00, $02, $22
-	db $01, $88, $86, $00, $02, $22
-	db $01, $90, $87, $39, $02, $1f
-	db $01, $80, $30, $3a, $03, $11
-	db $21, $90, $34, $00, $03, $05
-	db $a1, $88, $88, $3b, $06, $13
-	db $01, $80, $76, $25, $04, $23
-	db $01, $98, $10, $34, $04, $03
-	db $01, $a8, $0f, $3c, $04, $03
-	db $21, $68, $89, $29, $02, $1f
-	db $21, $b0, $8a, $00, $02, $1f
-	db $21, $80, $8c, $00, $02, $1f
-	db $21, $50, $8d, $00, $03, $1f
-	db $01, $40, $24, $40, $02, $0e
-	db $21, $a8, $8e, $41, $04, $1f
-	db $21, $88, $8f, $3e, $02, $1f
-	db $21, $88, $93, $3e, $02, $1f
-	db $21, $90, $97, $3d, $02, $1f
-	db $21, $90, $78, $3d, $03, $23
-	db $01, $ff, $99, $2e, $02, $19
-	db $21, $a0, $74, $02, $02, $15
-	db $21, $a0, $99, $35, $04, $19
-	db $21, $70, $8b, $3f, $02, $1f
-	db $01, $90, $15, $08, $02, $0a
-	db $01, $90, $11, $02, $04, $03
-	db $01, $80, $7f, $42, $02, $08
-	db $01, $90, $9a, $00, $02, $1b
-	db $21, $a0, $9b, $35, $04, $23
-	db $21, $80, $9c, $23, $02, $25
-	db $21, $80, $9d, $25, $02, $25
-	db $21, $80, $9c, $00, $02, $25
-	db $21, $80, $9e, $00, $06, $25
-	db $61, $80, $9f, $3a, $05, $23
-	db $21, $80, $a0, $16, $02, $23
-	db $21, $70, $78, $43, $03, $23
-	db $21, $c0, $a2, $01, $02, $25
-	db $21, $40, $a3, $44, $03, $24
-	db $01, $80, $a4, $00, $02, $24
-	db $01, $80, $a5, $00, $03, $24
-	db $01, $88, $43, $45, $04, $12
-	db $21, $ff, $a6, $00, $02, $02
-	db $21, $ff, $a7, $00, $02, $02
-	db $21, $00, $b4, $4a, $07, $0f
-	db $21, $90, $a8, $02, $03, $05
-	db $21, $40, $9c, $11, $02, $25
-	db $61, $90, $a9, $46, $02, $23
-	db $00, $00, $24, $47, $02, $0e
-	db $01, $80, $aa, $00, $02, $24
-	db $21, $b8, $ab, $48, $02, $13
-	db $21, $90, $ac, $44, $02, $13
-	db $01, $a8, $05, $00, $02, $01
-	db $01, $90, $24, $43, $02, $0e
-	db $01, $88, $ad, $00, $06, $17
-	db $01, $a8, $ae, $49, $02, $01
-	db $21, $90, $af, $01, $03, $11
-	db $21, $00, $b0, $4a, $02, $04
-	db $00, $00, $70, $4b, $04, $1c
-	db $01, $88, $b1, $4c, $02, $19
-	db $01, $b8, $19, $4d, $07, $09
-	db $61, $98, $b3, $00, $03, $27
-	db $61, $98, $74, $04, $06, $15
-	db $21, $ff, $19, $4e, $07, $09
-	db $01, $90, $73, $08, $04, $1e
-	db $01, $ff, $89, $4f, $04, $1f
-	db $00, $00, $b5, $00, $00, $28
-	db $00, $00, $b6, $00, $01, $29
-	db $00, $00, $b7, $00, $00, $28
-	db $00, $00, $b8, $00, $01, $29
-; ccfbe
-
-
-Functionccfbe: ; ccfbe
-	ld hl, $0004
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_ccfce
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; ccfce
-
-
-Jumptable_ccfce: ; ccfce (33:4fce)
-	dw Functioncd06e
-	dw Functioncd12a
-	dw Functioncd146
-	dw Functioncd0e3
-	dw Functioncd0a6
-	dw Functioncd081
-	dw Functioncd079
-	dw Functioncd2be
-	dw Functioncd306
-	dw Functioncd3ae
-	dw Functioncd3f2
-	dw Functioncd478
-	dw Functioncd5e9
-	dw Functioncd66a
-	dw Functioncd6e3
-	dw Functioncd71a
-	dw Functioncd284
-	dw Functioncd777
-	dw Functioncd15c
-	dw Functioncd212
-	dw Functioncd7a4
-	dw Functioncd80c
-	dw Functioncd824
-	dw Functioncd89a
-	dw Functioncd900
-	dw Functioncd954
-	dw Functioncdafa
-	dw Functioncdb06
-	dw Functioncda0a
-	dw Functioncdb80
-	dw Functioncdca6
-	dw Functioncda31
-	dw Functioncda4d
-	dw Functioncdcc3
-	dw Functioncdd2a
-	dw Functioncdd90
-	dw Functioncddf9
-	dw Functioncde28
-	dw Functioncde54
-	dw Functioncde6b
-	dw Functioncde89
-	dw Functioncdedd
-	dw Functioncdf59
-	dw Functionce063
-	dw Functionce0c5
-	dw Functioncdf1b
-	dw Functionce10e
-	dw Functionce15c
-	dw Functionce1e7
-	dw Functionce226
-	dw Functionce255
-	dw Functionce2cc
-	dw Functioncdf8c
-	dw Functionce00b
-	dw Functionce2fd
-	dw Functionce35f
-	dw Functionce389
-	dw Functionce3b4
-	dw Functionce3d2
-	dw Functionce3ff
-	dw Functioncdfcb
-	dw Functionce416
-	dw Functionce43a
-	dw Functioncdad6
-	dw Functionce49c
-	dw Functionce4dc
-	dw Functionce1b0
-	dw Functionce508
-	dw Functionce532
-	dw Functionce55b
-	dw Functionce593
-	dw Functionce5b4
-	dw Functionce5dc
-	dw Functionce5ee
-	dw Functionce62f
-	dw Functionce688
-	dw Functionce6b3
-	dw Functionce6d2
-	dw Functioncd58a
-	dw Functionce6bf
-
-
-Functioncd06e: ; cd06e (33:506e)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd071: ; cd071 (33:5071)
-	dw Functioncd078
-	dw Functioncd075
-
-
-Functioncd075: ; cd075 (33:5075)
-	call Functioncc9bd
-
-Functioncd078: ; cd078 (33:5078)
-	ret
-
-Functioncd079: ; cd079 (33:5079)
-	call Functioncd081
-	ret c
-	call Functioncc9bd
-	ret
-
-Functioncd081: ; cd081 (33:5081)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	ret nc
-	add $2
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	scf
-	ret
-
-Functioncd0a6: ; cd0a6 (33:50a6)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	jr c, .asm_cd0b3
-	call Functioncc9bd
-	ret
-.asm_cd0b3
-	add $2
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-rept 4
-	inc [hl]
-endr
-	ld d, $10
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	sra a
-	sra a
-	sra a
-	sra a
-	ld [hl], a
-	ret
-
-Functioncd0e3: ; cd0e3 (33:50e3)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd0e6: ; cd0e6 (33:50e6)
-	dw Functioncd0ea
-	dw Functioncd106
-
-
-Functioncd0ea: ; cd0ea (33:50ea)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	bit 7, [hl]
-	ld a, $0
-	jr z, .asm_cd0f9
-	ld a, $20
-.asm_cd0f9
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $7f
-	ld [hl], a
-
-Functioncd106: ; cd106 (33:5106)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ret
-
-Functioncd12a: ; cd12a (33:512a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd12d: ; cd12d (33:512d)
-	dw Functioncd135
-	dw Functioncd131
-
-
-Functioncd131: ; cd131 (33:5131)
-	call Functioncc9bd
-	ret
-
-Functioncd135: ; cd135 (33:5135)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	ret nc
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	call Functionce70a
-	ret
-
-Functioncd146: ; cd146 (33:5146)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	jr nc, .asm_cd158
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	call Functionce70a
-	ret
-.asm_cd158
-	call Functioncc9bd
-	ret
-
-Functioncd15c: ; cd15c (33:515c)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd15f: ; cd15f (33:515f)
-	dw Functioncd177
-	dw Functioncd17e
-	dw Functioncd1dc
-	dw Functioncd196
-	dw Functioncd1a7
-	dw Functioncd1dc
-	dw Functioncd1d2
-	dw Functioncd1dd
-	dw Functioncd1ee
-	dw Functioncd1dc
-	dw Functioncd1ee
-	dw Functioncd20e
-
-
-Functioncd177: ; cd177 (33:5177)
-	call Functioncd249
-	call Functionce72c
-	ret
-
-Functioncd17e: ; cd17e (33:517e)
-	call Functioncd081
-	ret c
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	ld hl, $8
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ld a, $b
-	call Functionce7bf
-	call Functionce72c
-	ret
-
-Functioncd196: ; cd196 (33:5196)
-	call Functionce72c
-	ld a, $9
-	call Functionce7bf
-	ld hl, $f
-	add hl, bc
-	ld [hl], $0
-	inc hl
-	ld [hl], $10
-
-Functioncd1a7: ; cd1a7 (33:51a7)
-	ld hl, $f
-	add hl, bc
-	ld a, [hli]
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec a
-	ld [hl], a
-	and $1f
-	ret nz
-	ld [hl], a
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	sub $4
-	ld [hl], a
-	ret nz
-	ld a, $c
-	call Functionce7bf
-	call Functionce72c
-	ret
-
-Functioncd1d2: ; cd1d2 (33:51d2)
-	ld a, $d
-	call Functionce7bf
-	ld hl, $e
-	add hl, bc
-	dec [hl]
-
-Functioncd1dc: ; cd1dc (33:51dc)
-	ret
-
-Functioncd1dd: ; cd1dd (33:51dd)
-	call Functioncd249
-	ld a, $a
-	call Functionce7bf
-	call Functionce72c
-	ld hl, $10
-	add hl, bc
-	ld [hl], $20
-
-Functioncd1ee: ; cd1ee (33:51ee)
-	ld hl, $f
-	add hl, bc
-	ld a, [hli]
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec a
-	ld [hl], a
-	and $1f
-	jr z, Functioncd20e
-	and $f
-	ret nz
-	call Functionce72c
-	ret
-
-Functioncd20e: ; cd20e (33:520e)
-	call Functioncc9bd
-	ret
-
-Functioncd212: ; cd212 (33:5212)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd215: ; cd215 (33:5215)
-	dw Functioncd21b
-	dw Functioncd222
-	dw Functioncd232
-
-
-Functioncd21b: ; cd21b (33:521b)
-	call Functioncd249
-	call Functionce72c
-	ret
-
-Functioncd222: ; cd222 (33:5222)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $70
-	jr nc, .asm_cd22f
-	call Functioncd081
-	ret
-.asm_cd22f
-	call Functionce72c
-
-Functioncd232: ; cd232 (33:5232)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	jr nc, .asm_cd245
-	add $4
-	ld [hl], a
-	ld hl, $7
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ret
-.asm_cd245
-	call Functioncc9bd
-	ret
-
-Functioncd249: ; cd249 (33:5249)
-	ld hl, Unknown_cd26c
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [CurItem] ; CurItem
-	ld e, a
-	pop af
-	ld [rSVBK], a
-.asm_cd25a
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_cd265
-	cp e
-	jr z, .asm_cd265
-	inc hl
-	jr .asm_cd25a
-.asm_cd265
-	ld a, [hl]
-	ld hl, $5
-	add hl, bc
-	ld [hl], a
-	ret
-; cd26c (33:526c)
-
-Unknown_cd26c: ; cd26c
-	db MASTER_BALL, 5
-	db ULTRA_BALL,  3
-	db GREAT_BALL,  6
-	db POKE_BALL,   4
-	db HEAVY_BALL,  2
-	db LEVEL_BALL,  7
-	db LURE_BALL,   6
-	db FAST_BALL,   6
-	db FRIEND_BALL, 3
-	db MOON_BALL,   2
-	db LOVE_BALL,   4
-	db $ff,         2
-; cd284
-
-Functioncd284: ; cd284 (33:5284)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd287: ; cd287 (33:5287)
-	dw Functioncd291
-	dw Functioncd2a0
-	dw Functioncd2b1
-	dw Functioncd2b5
-	dw Functioncd2bd
-
-
-Functioncd291: ; cd291 (33:5291)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	swap a
-	and $f
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functioncd2a0: ; cd2a0 (33:52a0)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	ret nc
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	call Functionce70a
-	ret
-
-Functioncd2b1: ; cd2b1 (33:52b1)
-	call Functioncc9bd
-	ret
-
-Functioncd2b5: ; cd2b5 (33:52b5)
-	call Functionce72c
-	ld a, $f
-	call Functionce7bf
-
-Functioncd2bd: ; cd2bd (33:52bd)
-	ret
-
-Functioncd2be: ; cd2be (33:52be)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd2c1: ; cd2c1 (33:52c1)
-	dw Functioncd2c5
-	dw Functioncd2d1
-
-
-Functioncd2c5: ; cd2c5 (33:52c5)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $30
-	inc hl
-	ld [hl], $48
-
-Functioncd2d1: ; cd2d1 (33:52d1)
-	ld hl, $f
-	add hl, bc
-	ld a, [hli]
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $3f
-	ret nz
-	ld hl, $f
-	add hl, bc
-	ld [hl], $20
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	sub [hl]
-	jr z, .asm_cd302
-	jr c, .asm_cd302
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_cd302
-	call Functioncc9bd
-	ret
-
-Functioncd306: ; cd306 (33:5306)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd309: ; cd309 (33:5309)
-	dw Functioncd311
-	dw Functioncd321
-	dw Functioncd32a
-	dw Functioncd37d
-
-
-Functioncd311: ; cd311 (33:5311)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	jr nc, .asm_cd31e
-	call Functioncd38e
-	ret
-.asm_cd31e
-	call Functionce72c
-
-Functioncd321: ; cd321 (33:5321)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $0
-
-Functioncd32a: ; cd32a (33:532a)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	jr nc, .asm_cd363
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	call Functionce732
-	sub $18
-	sra a
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld hl, $f
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-.asm_cd363
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	jr z, .asm_cd37a
-	sub $10
-	ld d, a
-	ld a, [hl]
-	and $f
-	or d
-	ld [hl], a
-	ld hl, $e
-	add hl, bc
-	dec [hl]
-	ret
-.asm_cd37a
-	call Functionce72c
-
-Functioncd37d: ; cd37d (33:537d)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $b0
-	jr c, .asm_cd38a
-	call Functioncc9bd
-	ret
-.asm_cd38a
-	call Functioncd38e
-	ret
-
-Functioncd38e: ; cd38e (33:538e)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld hl, $7
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld e, a
-	srl e
-	ld hl, $8
-	add hl, bc
-.asm_cd3a9
-	dec [hl]
-	dec e
-	jr nz, .asm_cd3a9
-	ret
-
-Functioncd3ae: ; cd3ae (33:53ae)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd3b1: ; cd3b1 (33:53b1)
-	dw Functioncd3b7
-	dw Functioncd3cc
-	dw Functioncd3ee
-
-
-Functioncd3b7: ; cd3b7 (33:53b7)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $0
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-
-Functioncd3cc: ; cd3cc (33:53cc)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cd3d6
-	dec [hl]
-	ret
-.asm_cd3d6
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	swap a
-	and $f
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	ret
-
-Functioncd3ee: ; cd3ee (33:53ee)
-	call Functioncc9bd
-	ret
-
-Functioncd3f2: ; cd3f2 (33:53f2)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd3f5: ; cd3f5 (33:53f5)
-	dw Functioncd409
-	dw Functioncd45c
-	dw Functioncd467
-	dw Functioncd472
-	dw Functioncd462
-	dw Functioncd46d
-	dw Functioncd477
-	dw Functioncd41d
-	dw Functioncd437
-	dw Functioncd458
-
-
-Functioncd409: ; cd409 (33:5409)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	cp $7
-	jr z, Functioncd41d
-	ld a, $11
-	call Functionce7bf
-	ret
-
-Functioncd41d: ; cd41d (33:541d)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	jr nc, .asm_cd42f
-	add $2
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ret
-.asm_cd42f
-	call Functionce72c
-	ld a, $10
-	call Functionce7bf
-
-Functioncd437: ; cd437 (33:5437)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ret
-
-Functioncd458: ; cd458 (33:5458)
-	call Functioncc9bd
-	ret
-
-Functioncd45c: ; cd45c (33:545c)
-	ld hl, $a
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncd462: ; cd462 (33:5462)
-	ld hl, $a
-	add hl, bc
-	inc [hl]
-
-Functioncd467: ; cd467 (33:5467)
-	ld hl, $9
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncd46d: ; cd46d (33:546d)
-	ld hl, $a
-	add hl, bc
-	inc [hl]
-
-Functioncd472: ; cd472 (33:5472)
-	ld hl, $9
-	add hl, bc
-	inc [hl]
-
-Functioncd477: ; cd477 (33:5477)
-	ret
-
-Functioncd478: ; cd478 (33:5478)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd47b: ; cd47b (33:547b)
-	dw Functioncd48d
-	dw Functioncd496
-	dw Functioncd4ee
-	dw Functioncd53a
-	dw Functioncd545
-	dw Functioncd545
-	dw Functioncd545
-	dw Functioncd545
-	dw Functioncd549
-
-
-Functioncd48d: ; cd48d (33:548d)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $40
-
-Functioncd496: ; cd496 (33:5496)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr nc, .asm_cd4bc
-	call Functionce72c
-	xor a
-	ld hl, $f
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ld a, $17
-	call Functionce7bf
-	ld hl, $b
-	add hl, bc
-	bit 6, [hl]
-	ret z
-	ld hl, $d
-	add hl, bc
-	ld [hl], $5
-	ret
-.asm_cd4bc
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $3f
-	ld d, a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	call Functioncd557
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld hl, $7
-	add hl, bc
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $7
-	add hl, bc
-	ld [hl], d
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functioncd4ee: ; cd4ee (33:54ee)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr nz, .asm_cd4fb
-	call Functioncc9bd
-	ret
-.asm_cd4fb
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	bit 6, [hl]
-	jr nz, .asm_cd519
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	jr .asm_cd51e
-.asm_cd519
-	ld hl, $f
-	add hl, bc
-	dec [hl]
-.asm_cd51e
-	ld de, $80
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld hl, $a
-	add hl, bc
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $a
-	add hl, bc
-	ld [hl], d
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functioncd53a: ; cd53a (33:553a)
-	ld a, $16
-	call Functionce7bf
-	ld hl, $1
-	add hl, bc
-	res 5, [hl]
-
-Functioncd545: ; cd545 (33:5545)
-	call Functionce72c
-	ret
-
-Functioncd549: ; cd549 (33:5549)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $c0
-	ret nc
-	ld a, $8
-	call Functionce70a
-	ret
-
-Functioncd557: ; cd557 (33:5557)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	bit 7, a
-	jr nz, .asm_cd574
-	cp $20
-	jr nc, .asm_cd570
-	cp $18
-	jr nc, .asm_cd56c
-	ld de, $200
-	ret
-.asm_cd56c
-	ld de, $180
-	ret
-.asm_cd570
-	ld de, $100
-	ret
-.asm_cd574
-	and $3f
-	cp $20
-	jr nc, .asm_cd586
-	cp $18
-	jr nc, .asm_cd582
-	ld de, $fe00
-	ret
-.asm_cd582
-	ld de, $fe80
-	ret
-.asm_cd586
-	ld de, rJOYP ; $ff00
-	ret
-
-Functioncd58a: ; cd58a (33:558a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd58d: ; cd58d (33:558d)
-	dw Functioncd591
-	dw Functioncd5aa
-
-
-Functioncd591: ; cd591 (33:5591)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $40
-	rlca
-	rlca
-	add $19
-	ld hl, $3
-	add hl, bc
-	ld [hl], a
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $40
-
-Functioncd5aa: ; cd5aa (33:55aa)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr nc, .asm_cd5b7
-	call Functioncc9bd
-	ret
-.asm_cd5b7
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $3f
-	ld d, a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	call Functioncd557
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld hl, $7
-	add hl, bc
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $7
-	add hl, bc
-	ld [hl], d
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functioncd5e9: ; cd5e9 (33:55e9)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd5ec: ; cd5ec (33:55ec)
-	dw Functioncd5f2
-	dw Functioncd5fb
-	dw Functioncd61b
-
-
-Functioncd5f2: ; cd5f2 (33:55f2)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $c
-
-Functioncd5fb: ; cd5fb (33:55fb)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cd60d
-	dec [hl]
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	call Functionce70a
-	ret
-.asm_cd60d
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $0
-	ld a, $22
-	call Functionce7bf
-
-Functioncd61b: ; cd61b (33:561b)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $98
-	jr nc, .asm_cd63f
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $7
-	add hl, bc
-	ld h, [hl]
-	ld l, a
-	ld de, $60
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ld hl, $7
-	add hl, bc
-	ld [hl], d
-.asm_cd63f
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	ret c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	ld e, a
-	ld d, $ff
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld hl, $8
-	add hl, bc
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ld hl, $8
-	add hl, bc
-	ld [hl], d
-	ret
-
-Functioncd66a: ; cd66a (33:566a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd66d: ; cd66d (33:566d)
-	dw Functioncd677
-	dw Functioncd687
-	dw Functioncd6c5
-	dw Functioncd6c6
-	dw Functioncd6d6
-
-
-Functioncd677: ; cd677 (33:5677)
-	call Functionce72c
-	ld a, $42
-	ld [hLCDStatCustom], a
-	ld a, $58
-	ld [hLCDStatCustom + 1], a
-	ld a, $5e
-	ld [hLCDStatCustom + 2], a
-	ret
-
-Functioncd687: ; cd687 (33:5687)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp e
-	jr nc, .asm_cd69b
-	call Functionce72c
-	xor a
-	ld [hLCDStatCustom + 1], a
-	ret
-.asm_cd69b
-	dec a
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	add [hl]
-	sub $10
-	ret c
-	ld [hLCDStatCustom + 1], a
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	inc a
-	and $7
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-
-Functioncd6c5: ; cd6c5 (33:56c5)
-	ret
-
-Functioncd6c6: ; cd6c6 (33:56c6)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp $70
-	jr c, asm_cd6da
-	xor a
-	ld [hLCDStatCustom], a
-	ld [hLCDStatCustom + 1], a
-	ld [hLCDStatCustom + 2], a
-
-Functioncd6d6: ; cd6d6 (33:56d6)
-	call Functioncc9bd
-	ret
-asm_cd6da: ; cd6da (33:56da)
-rept 2
-	inc a
-endr
-	ld [hl], a
-	sub $10
-	ret c
-	ld [hLCDStatCustom + 1], a
-	ret
-
-Functioncd6e3: ; cd6e3 (33:56e3)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd6e6: ; cd6e6 (33:56e6)
-	dw Functioncd6ea
-	dw Functioncd6f7
-
-
-Functioncd6ea: ; cd6ea (33:56ea)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, $24
-	add [hl]
-	call Functionce7bf
-
-Functioncd6f7: ; cd6f7 (33:56f7)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $b8
-	jr c, .asm_cd704
-	call Functioncc9bd
-	ret
-.asm_cd704
-	ld a, $2
-	call Functionce70a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	ld d, $8
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functioncd71a: ; cd71a (33:571a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd71d: ; cd71d (33:571d)
-	dw Functioncd725
-	dw Functioncd728
-	dw Functioncd763
-	dw Functioncd776
-
-
-Functioncd725: ; cd725 (33:5725)
-	call Functionce72c
-
-Functioncd728: ; cd728 (33:5728)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr c, .asm_cd747
-	ld a, $2
-	call Functionce70a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	ld d, $8
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_cd747
-	call Functionce72c
-	ld a, $28
-	call Functionce7bf
-	ld hl, $a
-	add hl, bc
-	ld [hl], $0
-	ld hl, $8
-	add hl, bc
-	ld [hl], $30
-	ld hl, $1
-	add hl, bc
-	ld a, [hl]
-	and $1
-	ld [hl], a
-
-Functioncd763: ; cd763 (33:5763)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $18
-	jr nc, .asm_cd76e
-	inc [hl]
-	ret
-.asm_cd76e
-	call Functionce72c
-	ld a, $29
-	call Functionce7bf
-
-Functioncd776: ; cd776 (33:5776)
-	ret
-
-Functioncd777: ; cd777 (33:5777)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $38
-	jr c, .asm_cd784
-	call Functioncc9bd
-	ret
-.asm_cd784
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld l, [hl]
-	ld h, a
-	ld de, $80
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ld hl, $a
-	add hl, bc
-	ld [hl], d
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	xor $10
-	ld [hl], a
-	ret
-
-Functioncd7a4: ; cd7a4 (33:57a4)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd7a7: ; cd7a7 (33:57a7)
-	dw Functioncd7ab
-	dw Functioncd7d2
-
-
-Functioncd7ab: ; cd7ab (33:57ab)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	sla a
-	sla a
-	sla a
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld [hl], $1
-
-Functioncd7d2: ; cd7d2 (33:57d2)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_cd7de
-	call Functioncc9bd
-	ret
-.asm_cd7de
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld hl, $10
-	add hl, bc
-	ld d, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	ret z
-	ld hl, $10
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncd80c: ; cd80c (33:580c)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd80f: ; cd80f (33:580f)
-	dw Functioncd81f
-	dw Functioncd817
-	dw Functioncd81f
-	dw Functioncd820
-
-
-Functioncd817: ; cd817 (33:5817)
-	call Functionce72c
-	ld a, $35
-	call Functionce7bf
-
-Functioncd81f: ; cd81f (33:581f)
-	ret
-
-Functioncd820: ; cd820 (33:5820)
-	call Functioncc9bd
-	ret
-
-Functioncd824: ; cd824 (33:5824)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd827: ; cd827 (33:5827)
-	dw Functioncd835
-	dw Functioncd860
-	dw Functioncd88f
-	dw Functioncd88f
-	dw Functioncd88f
-	dw Functioncd88f
-	dw Functioncd893
-
-
-Functioncd835: ; cd835 (33:5835)
-	call Functionce72c
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	bit 7, [hl]
-	jr nz, .asm_cd852
-	ld hl, $f
-	add hl, bc
-	ld [hl], $10
-	jr .asm_cd858
-.asm_cd852
-	ld hl, $f
-	add hl, bc
-	ld [hl], $30
-.asm_cd858
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $7f
-	ld [hl], a
-
-Functioncd860: ; cd860 (33:5860)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	bit 7, a
-	jr nz, .asm_cd87e
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	inc a
-	jr .asm_cd883
-.asm_cd87e
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-.asm_cd883
-	call Functionce7bf
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $1f
-	ret nz
-
-Functioncd88f: ; cd88f (33:588f)
-	call Functionce72c
-	ret
-
-Functioncd893: ; cd893 (33:5893)
-	ld hl, $e
-	add hl, bc
-	ld [hl], $1
-	ret
-
-Functioncd89a: ; cd89a (33:589a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd89d: ; cd89d (33:589d)
-	dw Functioncd8ab
-	dw Functioncd8cc
-	dw Functioncd8f5
-	dw Functioncd8f5
-	dw Functioncd8f5
-	dw Functioncd8f5
-	dw Functioncd8f9
-
-
-Functioncd8ab: ; cd8ab (33:58ab)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	bit 7, [hl]
-	jr nz, .asm_cd8be
-	ld hl, $f
-	add hl, bc
-	ld [hl], $10
-	jr .asm_cd8c4
-.asm_cd8be
-	ld hl, $f
-	add hl, bc
-	ld [hl], $30
-.asm_cd8c4
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $7f
-	ld [hl], a
-
-Functioncd8cc: ; cd8cc (33:58cc)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	bit 7, a
-	jr nz, .asm_cd8e6
-	ld a, $3d
-	jr .asm_cd8e8
-.asm_cd8e6
-	ld a, $3c
-.asm_cd8e8
-	call Functionce7bf
-	ld hl, $f
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ld a, [hl]
-	and $1f
-	ret nz
-
-Functioncd8f5: ; cd8f5 (33:58f5)
-	call Functionce72c
-	ret
-
-Functioncd8f9: ; cd8f9 (33:58f9)
-	ld hl, $e
-	add hl, bc
-	ld [hl], $1
-	ret
-
-Functioncd900: ; cd900 (33:5900)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd903: ; cd903 (33:5903)
-	dw Functioncd907
-	dw Functioncd913
-
-
-Functioncd907: ; cd907 (33:5907)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $28
-	inc hl
-	ld [hl], $0
-
-Functioncd913: ; cd913 (33:5913)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld d, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cd950
-	ld d, a
-	ld hl, $10
-	add hl, bc
-	ld e, [hl]
-	ld hl, hPushOAM ; $ff80
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ld hl, $f
-	add hl, bc
-	ld [hl], d
-	ret
-.asm_cd950
-	call Functioncc9bd
-	ret
-
-Functioncd954: ; cd954 (33:5954)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cd957: ; cd957 (33:5957)
-	dw Functioncd961
-	dw Functioncd96a
-	dw Functioncd96e
-	dw Functioncd96a
-	dw Functioncd97b
-
-
-Functioncd961: ; cd961 (33:5961)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld [hl], $0
-
-Functioncd96a: ; cd96a (33:596a)
-	call Functioncd99a
-	ret
-
-Functioncd96e: ; cd96e (33:596e)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	jr c, asm_cd988
-	call Functionce72c
-	ret
-
-Functioncd97b: ; cd97b (33:597b)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $b8
-	jr c, asm_cd988
-	call Functioncc9bd
-	ret
-
-asm_cd988: ; cd988 (33:5988)
-	call Functioncd99a
-	ld hl, $7
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $1
-	ret nz
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncd99a: ; cd99a (33:599a)
-	call Functioncd9f4
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	sra a
-	ld hl, $b
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	sub $8
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cd9d7
-	cp $c2
-	jr c, .asm_cd9e2
-.asm_cd9d7
-	dec a
-	ld [hl], a
-	and $7
-	ret nz
-	ld hl, $10
-	add hl, bc
-	inc [hl]
-	ret
-.asm_cd9e2
-	xor a
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ret
-
-Functioncd9f4: ; cd9f4 (33:59f4)
-	ld hl, $10
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Unknown_cda01
-	add hl, de
-	ld d, [hl]
-	ret
-; cda01 (33:5a01)
-
-Unknown_cda01: ; cda01
-	db 8, 6, 5, 4, 5, 6, 8, 12, 16
-; cda0a
-
-Functioncda0a: ; cda0a (33:5a0a)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr nc, .asm_cda17
-	call Functioncc9bd
-	ret
-.asm_cda17
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld e, a
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	sub e
-	ld [hl], a
-	srl e
-	ld hl, $8
-	add hl, bc
-.asm_cda2c
-	inc [hl]
-	dec e
-	jr nz, .asm_cda2c
-	ret
-
-Functioncda31: ; cda31 (33:5a31)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cda34: ; cda34 (33:5a34)
-	dw Functioncda4c
-	dw Functioncda3a
-	dw Functioncda4c
-
-
-Functioncda3a: ; cda3a (33:5a3a)
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	inc a
-	call Functionce7bf
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $8
-
-Functioncda4c: ; cda4c (33:5a4c)
-	ret
-
-Functioncda4d: ; cda4d (33:5a4d)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cda50: ; cda50 (33:5a50)
-	dw Functioncda58
-	dw Functioncda62
-	dw Functioncda7a
-	dw Functioncda8c
-
-
-Functioncda58: ; cda58 (33:5a58)
-	call Functionce72c
-	ld hl, $10
-	add hl, bc
-	ld [hl], $40
-	ret
-
-Functioncda62: ; cda62 (33:5a62)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .asm_cda6f
-	call Functioncda8d
-	ret
-.asm_cda6f
-	ld [hl], $40
-	ld a, $57
-	call Functionce7bf
-	call Functionce72c
-	ret
-
-Functioncda7a: ; cda7a (33:5a7a)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cda84
-	dec [hl]
-	ret
-.asm_cda84
-	call Functionce72c
-	ld a, $58
-	call Functionce7bf
-
-Functioncda8c: ; cda8c (33:5a8c)
-	ret
-
-Functioncda8d: ; cda8d (33:5a8d)
-	dec [hl]
-	ld d, $20
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $2
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld e, [hl]
-	ld hl, $7
-	add hl, bc
-	ld d, [hl]
-	ld hl, $b
-	add hl, bc
-	ld h, [hl]
-	ld a, h
-	and $f
-	swap a
-	ld l, a
-	ld a, h
-	and $f0
-	swap a
-	ld h, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ld hl, $7
-	add hl, bc
-	ld [hl], d
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and $1
-	ret nz
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncdad6: ; cdad6 (33:5ad6)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdad9: ; cdad9 (33:5ad9)
-	dw Functioncdadf
-	dw Functioncdae9
-	dw Functioncdaf9
-
-
-Functioncdadf: ; cdadf (33:5adf)
-	call Functionce72c
-	ld hl, $10
-	add hl, bc
-	ld [hl], $40
-	ret
-
-Functioncdae9: ; cdae9 (33:5ae9)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .asm_cdaf6
-	call Functioncda8d
-	ret
-.asm_cdaf6
-	call Functionce72c
-
-Functioncdaf9: ; cdaf9 (33:5af9)
-	ret
-
-Functioncdafa: ; cdafa (33:5afa)
-	call Functioncd0e3
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	add $f
-	ld [hl], a
-	ret
-
-Functioncdb06: ; cdb06 (33:5b06)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdb09: ; cdb09 (33:5b09)
-	dw Functioncdb13
-	dw Functioncdb14
-	dw Functioncdb28
-	dw Functioncdb50
-	dw Functioncdb65
-
-
-Functioncdb13: ; cdb13 (33:5b13)
-	ret
-
-Functioncdb14: ; cdb14 (33:5b14)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr c, .asm_cdb24
-	ld hl, $e
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_cdb24
-	add $4
-	ld [hl], a
-	ret
-
-Functioncdb28: ; cdb28 (33:5b28)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $98
-	ret nc
-rept 2
-	inc [hl]
-endr
-	ld hl, $1
-	add hl, bc
-	set 0, [hl]
-	ld hl, $2
-	add hl, bc
-	ld [hl], $90
-	ld hl, $d
-	add hl, bc
-	ld [hl], $0
-	ld hl, $c
-	add hl, bc
-	ld [hl], $2
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ret
-
-Functioncdb50: ; cdb50 (33:5b50)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $2c
-	ld hl, $d
-	add hl, bc
-	ld [hl], $0
-	ld hl, $c
-	add hl, bc
-	ld [hl], $80
-
-Functioncdb65: ; cdb65 (33:5b65)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $98
-	ret nc
-rept 2
-	inc [hl]
-endr
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld d, $8
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functioncdb80: ; cdb80 (33:5b80)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdb83: ; cdb83 (33:5b83)
-	dw Functioncdb9f
-	dw Functioncdbb3
-	dw Functioncdbcf
-	dw Functioncdbeb
-	dw Functioncdc74
-	dw Functioncdc1a
-	dw Functioncdbc1
-	dw Functioncdc1e
-	dw Functioncdc27
-	dw Functioncdc39
-	dw Functioncdc74
-	dw Functioncdc48
-	dw Functioncdc57
-	dw Functioncdc74
-
-
-Functioncdb9f: ; cdb9f (33:5b9f)
-	ld hl, $f
-	add hl, bc
-	ld [hl], $28
-	inc hl
-	ld [hl], $10
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functioncdbb3: ; cdbb3 (33:5bb3)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	jr nc, .asm_cdbbd
-	inc [hl]
-.asm_cdbbd
-	call Functioncdc75
-	ret
-
-Functioncdbc1: ; cdbc1 (33:5bc1)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $4b
-	jr nc, .asm_cdbcb
-	inc [hl]
-.asm_cdbcb
-	call Functioncdc75
-	ret
-
-Functioncdbcf: ; cdbcf (33:5bcf)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	jr nc, .asm_cdbe6
-	and $f
-	jr nz, asm_cdbfa
-	ld hl, $10
-	add hl, bc
-	ld [hl], $10
-	call Functionce72c
-	ret
-.asm_cdbe6
-	call Functionce72c
-	inc [hl]
-	ret
-
-Functioncdbeb: ; cdbeb (33:5beb)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cdbf5
-	dec [hl]
-	ret
-.asm_cdbf5
-	ld hl, $e
-	add hl, bc
-	dec [hl]
-asm_cdbfa: ; cdbfa (33:5bfa)
-	ld hl, $7
-	add hl, bc
-	inc [hl]
-	ld hl, $8
-	add hl, bc
-	ld d, [hl]
-	ld hl, $f
-	add hl, bc
-	ld e, [hl]
-	ld hl, hPushOAM ; $ff80
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $8
-	add hl, bc
-	ld [hl], d
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functioncdc1a: ; cdc1a (33:5c1a)
-	call Functioncc9bd
-	ret
-
-Functioncdc1e: ; cdc1e (33:5c1e)
-	ld a, $4e
-	call Functionce7bf
-	call Functionce72c
-	ret
-
-Functioncdc27: ; cdc27 (33:5c27)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	ld d, $2
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functioncdc39: ; cdc39 (33:5c39)
-	ld a, $50
-	call Functionce7bf
-	ld hl, $a
-	add hl, bc
-	ld [hl], $4
-	call Functionce72c
-	ret
-
-Functioncdc48: ; cdc48 (33:5c48)
-	ld a, $4f
-	call Functionce7bf
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $40
-	ret
-
-Functioncdc57: ; cdc57 (33:5c57)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $20
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr c, .asm_cdc71
-	dec [hl]
-	ret
-.asm_cdc71
-	call Functionce72c
-
-Functioncdc74: ; cdc74 (33:5c74)
-	ret
-
-Functioncdc75: ; cdc75 (33:5c75)
-	ld hl, $f
-	add hl, bc
-	ld a, [hli]
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $3f
-	ret nz
-	ld hl, $f
-	add hl, bc
-	ld [hl], $20
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	sub $8
-	ld [hl], a
-	ret nz
-	xor a
-	ld hl, $f
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	call Functionce72c
-	ret
-
-Functioncdca6: ; cdca6 (33:5ca6)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cdcb6
-	cp $d8
-	jr nc, .asm_cdcb6
-	call Functioncc9bd
-	ret
-.asm_cdcb6
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	sub d
-	ld [hl], a
-	ret
-
-Functioncdcc3: ; cdcc3 (33:5cc3)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdcc6: ; cdcc6 (33:5cc6)
-	dw Functioncdcca
-	dw Functioncdced
-
-
-Functioncdcca: ; cdcca (33:5cca)
-	ld a, [hBattleTurn]
-	and a
-	jr z, .asm_cdcd9
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	add $3
-	ld [hl], a
-.asm_cdcd9
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $8
-	ld hl, $b
-	add hl, bc
-	ld a, $59
-	add [hl]
-	call Functionce7bf
-	ret
-
-Functioncdced: ; cdced (33:5ced)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cdcfa
-	dec [hl]
-	call Functioncdcfe
-	ret
-.asm_cdcfa
-	call Functioncc9bd
-	ret
-
-Functioncdcfe: ; cdcfe (33:5cfe)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	ld d, $10
-	call Functionce734
-	ld d, a
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cdd20
-	dec a
-	ret z
-	ld hl, $a
-	add hl, bc
-	ld [hl], d
-	ret
-.asm_cdd20
-	ld hl, $a
-	add hl, bc
-	ld a, d
-	xor $ff
-	inc a
-	ld [hl], a
-	ret
-
-Functioncdd2a: ; cdd2a (33:5d2a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdd2d: ; cdd2d (33:5d2d)
-	dw Functioncdd31
-	dw Functioncdd4f
-
-
-Functioncdd31: ; cdd31 (33:5d31)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $3f
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $80
-	rlca
-	ld [hl], a
-	add $5d
-	call Functionce7bf
-	ret
-
-Functioncdd4f: ; cdd4f (33:5d4f)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	swap a
-	ld d, a
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	ret nc
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and $3
-	jr nz, .asm_cdd87
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-.asm_cdd87
-	and $1
-	ret nz
-	ld hl, $7
-	add hl, bc
-	inc [hl]
-	ret
-
-Functioncdd90: ; cdd90 (33:5d90)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdd93: ; cdd93 (33:5d93)
-	dw Functioncdd97
-	dw Functioncddbc
-
-
-Functioncdd97: ; cdd97 (33:5d97)
-	call Functionce72c
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $80
-	rlca
-	ld hl, $f
-	add hl, bc
-	add [hl]
-	call Functionce7bf
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $7f
-	ld [hl], a
-
-Functioncddbc: ; cddbc (33:5dbc)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	and $3f
-	jr z, .asm_cddf0
-	and $1f
-	ret nz
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc a
-	jr .asm_cddf5
-.asm_cddf0
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-.asm_cddf5
-	call Functionce7bf
-	ret
-
-Functioncddf9: ; cddf9 (33:5df9)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cddfc: ; cddfc (33:5dfc)
-	dw Functioncde02
-	dw Functioncde20
-	dw Functioncde21
-
-
-Functioncde02: ; cde02 (33:5e02)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	add $63
-	call Functionce7bf
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Unknown_cde25
-	add hl, de
-	ld a, [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-
-Functioncde20: ; cde20 (33:5e20)
-	ret
-
-Functioncde21: ; cde21 (33:5e21)
-	call Functioncc9bd
-	ret
-; cde25 (33:5e25)
-
-Unknown_cde25: ; cde25
-	db $ec, $f8, $00
-; cde28
-
-Functioncde28: ; cde28 (33:5e28)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	ld d, $4
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $a
-	add hl, bc
-	ld d, [hl]
-	ld hl, $10
-	add hl, bc
-	ld e, [hl]
-	ld hl, $ffa0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $a
-	add hl, bc
-	ld [hl], d
-	ld hl, $10
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functioncde54: ; cde54 (33:5e54)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-rept 2
-	dec [hl]
-endr
-	ld d, $10
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $7
-	add hl, bc
-	inc [hl]
-	ret
-
-Functioncde6b: ; cde6b (33:5e6b)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cde6e: ; cde6e (33:5e6e)
-	dw Functioncde72
-	dw Functioncde88
-
-
-Functioncde72: ; cde72 (33:5e72)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_cde83
-	ld hl, $1
-	add hl, bc
-	set 6, [hl]
-.asm_cde83
-	add $6a
-	call Functionce7bf
-
-Functioncde88: ; cde88 (33:5e88)
-	ret
-
-Functioncde89: ; cde89 (33:5e89)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cde8c: ; cde8c (33:5e8c)
-	dw Functioncde90
-	dw Functioncdebf
-
-
-Functioncde90: ; cde90 (33:5e90)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $0
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld a, e
-	and $70
-	swap a
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld a, e
-	and $80
-	jr nz, .asm_cdeb2
-	ld a, e
-	and $f
-	ld [hl], a
-	ret
-.asm_cdeb2
-	ld a, e
-	and $f
-	xor $ff
-	inc a
-	ld [hl], a
-	ld a, $6e
-	call Functionce7bf
-	ret
-
-Functioncdebf: ; cdebf (33:5ebf)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_cdec9
-	dec [hl]
-	ret
-.asm_cdec9
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	ret
-
-Functioncdedd: ; cdedd (33:5edd)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $7
-	ret nz
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $28
-	jr nc, .asm_cdf17
-	inc [hl]
-	ret
-.asm_cdf17
-	call Functioncc9bd
-	ret
-
-Functioncdf1b: ; cdf1b (33:5f1b)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $3
-	ret nz
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $28
-	jr nc, .asm_cdf55
-	inc [hl]
-	ret
-.asm_cdf55
-	call Functioncc9bd
-	ret
-
-Functioncdf59: ; cdf59 (33:5f59)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_cdf5c: ; cdf5c (33:5f5c)
-	dw Functioncdf60
-	dw Functioncdedd
-
-
-Functioncdf60: ; cdf60 (33:5f60)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	jr nc, .asm_cdf88
-	inc [hl]
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld d, $18
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	and $1
-	ret nz
-	ld hl, $8
-	add hl, bc
-	dec [hl]
-	ret
-.asm_cdf88
-	call Functionce72c
-	ret
-
-Functioncdf8c: ; cdf8c (33:5f8c)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ld a, [hl]
-	and $7
-	ret nz
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $e8
-	jr z, .asm_cdfc7
-	dec [hl]
-	ret
-.asm_cdfc7
-	call Functioncc9bd
-	ret
-
-Functioncdfcb: ; cdfcb (33:5fcb)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ld a, [hl]
-	and $3
-	ret nz
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $d0
-	jr z, .asm_ce007
-rept 2
-	dec [hl]
-endr
-	ret
-.asm_ce007
-	call Functioncc9bd
-	ret
-
-Functionce00b: ; ce00b (33:600b)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce00e: ; ce00e (33:600e)
-	dw Functionce014
-	dw Functionce023
-	dw Functionce05f
-
-
-Functionce014: ; ce014 (33:6014)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $34
-	ld hl, $10
-	add hl, bc
-	ld [hl], $10
-
-Functionce023: ; ce023 (33:6023)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $6c
-	jr c, .asm_ce02d
-	ret
-.asm_ce02d
-	ld a, $2
-	call Functionce70a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $10
-	add hl, bc
-	ld d, [hl]
-	call Functionce734
-	bit 7, a
-	jr nz, .asm_ce046
-	xor $ff
-	inc a
-.asm_ce046
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	sub $4
-	ld [hl], a
-	and $1f
-	cp $20
-	ret nz
-	ld hl, $10
-	add hl, bc
-	srl [hl]
-	ret
-
-Functionce05f: ; ce05f (33:605f)
-	call Functioncc9bd
-	ret
-
-Functionce063: ; ce063 (33:6063)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce066: ; ce066 (33:6066)
-	dw Functionce06e
-	dw Functionce083
-	dw Functionce091
-	dw Functionce09e
-
-
-Functionce06e: ; ce06e (33:606e)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce083: ; ce083 (33:6083)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $58
-	ret nc
-	ld a, $2
-	call Functionce70a
-	ret
-
-Functionce091: ; ce091 (33:6091)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, Functionce09e
-	call Functioncc9bd
-	ret
-
-Functionce09e: ; ce09e (33:609e)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	ld d, $8
-	call Functionce734
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	sra a
-	xor $ff
-	inc a
-	ld hl, $f
-	add hl, bc
-	add [hl]
-	ld hl, $8
-	add hl, bc
-	ld [hl], a
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	add $8
-	ld [hl], a
-	ret
-
-Functionce0c5: ; ce0c5 (33:60c5)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce0c8: ; ce0c8 (33:60c8)
-	dw Functionce0ce
-	dw Functionce0f8
-	dw Functionce0dd
-
-
-Functionce0ce: ; ce0ce (33:60ce)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	swap a
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce0dd: ; ce0dd (33:60dd)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	bit 7, a
-	jr z, .asm_ce0f0
-	ld [hl], a
-.asm_ce0f0
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	sub $4
-	ld [hl], a
-
-Functionce0f8: ; ce0f8 (33:60f8)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	jr c, .asm_ce105
-	call Functioncc9bd
-	ret
-.asm_ce105
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	call Functionce70a
-	ret
-
-Functionce10e: ; ce10e (33:610e)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce111: ; ce111 (33:6111)
-	dw Functionce115
-	dw Functionce12a
-
-
-Functionce115: ; ce115 (33:6115)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $28
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	sub $28
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-
-Functionce12a: ; ce12a (33:612a)
-	ld hl, $f
-	add hl, bc
-	ld a, [hli]
-	ld d, [hl]
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	and [hl]
-	jr nz, .asm_ce149
-	ld hl, $7
-	add hl, bc
-	dec [hl]
-.asm_ce149
-	ld hl, $f
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $3f
-	ret nz
-	ld hl, $f
-	add hl, bc
-	ld [hl], $20
-	inc hl
-	srl [hl]
-	ret
-
-Functionce15c: ; ce15c (33:615c)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	ld d, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $1
-	jr nz, .asm_ce189
-	ld hl, $7
-	add hl, bc
-	dec [hl]
-.asm_ce189
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $3
-	jr nz, .asm_ce197
-	ld hl, $8
-	add hl, bc
-	inc [hl]
-.asm_ce197
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	cp $5a
-	jr nc, .asm_ce1aa
-	ld a, [hl]
-	and a
-	jr z, .asm_ce1ac
-	dec [hl]
-	ret
-.asm_ce1aa
-	inc [hl]
-	ret
-.asm_ce1ac
-	call Functioncc9bd
-	ret
-
-Functionce1b0: ; ce1b0 (33:61b0)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld hl, $f
-	add hl, bc
-	ld d, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld hl, $f
-	add hl, bc
-	cp $40
-	jr nc, .asm_ce1df
-	inc [hl]
-	ret
-.asm_ce1df
-	ld a, [hl]
-	dec [hl]
-	and a
-	ret nz
-	call Functioncc9bd
-	ret
-
-Functionce1e7: ; ce1e7 (33:61e7)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce1ea: ; ce1ea (33:61ea)
-	dw Functionce1ee
-	dw Functionce1fb
-
-
-Functionce1ee: ; ce1ee (33:61ee)
-	call Functionce72c
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	ld hl, $10
-	add hl, bc
-	ld [hl], a
-
-Functionce1fb: ; ce1fb (33:61fb)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $30
-	call Functionce734
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $8
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	add $8
-	ld d, $30
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ret
-
-Functionce226: ; ce226 (33:6226)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce229: ; ce229 (33:6229)
-	dw Functionce22d
-	dw Functionce254
-
-
-Functionce22d: ; ce22d (33:622d)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $10
-	add hl, bc
-	ld [hl], $f
-
-Functionce254: ; ce254 (33:6254)
-	ret
-
-Functionce255: ; ce255 (33:6255)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce258: ; ce258 (33:6258)
-	dw Functionce260
-	dw Functionce274
-	dw Functionce278
-	dw Functionce289
-
-
-Functionce260: ; ce260 (33:6260)
-	call Functionce72c
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .asm_ce26c
-	ld a, $f0
-	jr .asm_ce26e
-.asm_ce26c
-	ld a, $cc
-.asm_ce26e
-	ld hl, $f
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce274: ; ce274 (33:6274)
-	call Functionce29f
-	ret
-
-Functionce278: ; ce278 (33:6278)
-	call Functionce29f
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	ret nc
-	ld a, $4
-	call Functionce70a
-	ret
-
-Functionce289: ; ce289 (33:6289)
-	call Functionce29f
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $d0
-	jr nc, .asm_ce29b
-	ld a, $4
-	call Functionce70a
-	ret
-.asm_ce29b
-	call Functioncc9bd
-	ret
-
-Functionce29f: ; ce29f (33:629f)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and $7
-	inc [hl]
-	srl a
-	ld e, a
-	ld d, $0
-	ld a, [hSGB]
-	and a
-	jr nz, .asm_ce2b6
-	ld hl, Unknown_ce2c4
-	jr .asm_ce2b9
-.asm_ce2b6
-	ld hl, Unknown_ce2c8
-.asm_ce2b9
-	add hl, de
-	ld a, [hl]
-	ld hl, $f
-	add hl, bc
-	and [hl]
-	ld [wcfc8], a
-	ret
-; ce2c4 (33:62c4)
-
-Unknown_ce2c4: ; ce2c4
-	db $ff, $aa, $55, $aa
-Unknown_ce2c8: ; ce2c8
-	db $ff, $ff, $00, $00
-; ce2cc
-
-Functionce2cc: ; ce2cc (33:62cc)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	call Functionce734
-	sra a
-	sra a
-	sra a
-	ld hl, $10
-	add hl, bc
-	add [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld d, $18
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $10
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ret
-
-Functionce2fd: ; ce2fd (33:62fd)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce300: ; ce300 (33:6300)
-	dw Functionce306
-	dw Functionce330
-	dw Functionce34c
-
-
-Functionce306: ; ce306 (33:6306)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $e0
-	jr nz, .asm_ce319
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $2
-	ret
-.asm_ce319
-	ld d, a
-	ld hl, $f
-	add hl, bc
-	ld e, [hl]
-	ld hl, hPushOAM ; $ff80
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $a
-	add hl, bc
-	ld [hl], d
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functionce330: ; ce330 (33:6330)
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_ce33a
-	dec [hl]
-	ret
-.asm_ce33a
-	ld [hl], $4
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	ld hl, $a
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-
-Functionce34c: ; ce34c (33:634c)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	jr nc, .asm_ce35b
-	ld a, $4
-	call Functionce70a
-	ret
-.asm_ce35b
-	call Functioncc9bd
-	ret
-
-Functionce35f: ; ce35f (33:635f)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce362: ; ce362 (33:6362)
-	dw Functionce366
-	dw Functionce375
-
-
-Functionce366: ; ce366 (33:6366)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $7f
-	add $81
-	call Functionce7bf
-
-Functionce375: ; ce375 (33:6375)
-	ld hl, $b
-	add hl, bc
-	bit 7, [hl]
-	jr nz, .asm_ce383
-	ld hl, $9
-	add hl, bc
-	inc [hl]
-	ret
-.asm_ce383
-	ld hl, $9
-	add hl, bc
-	dec [hl]
-	ret
-
-Functionce389: ; ce389 (33:6389)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce38c: ; ce38c (33:638c)
-	dw Functionce392
-	dw Functionce39c
-	dw Functionce3ae
-
-
-Functionce392: ; ce392 (33:6392)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $c
-	ret
-
-Functionce39c: ; ce39c (33:639c)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_ce3a6
-	dec [hl]
-	ret
-.asm_ce3a6
-	call Functionce72c
-	ld a, $20
-	call Functionce7bf
-
-Functionce3ae: ; ce3ae (33:63ae)
-	ld hl, $a
-	add hl, bc
-	dec [hl]
-	ret
-
-Functionce3b4: ; ce3b4 (33:63b4)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	push af
-	ld d, $2
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop af
-	ld d, $8
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce3d2: ; ce3d2 (33:63d2)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .asm_ce3df
-	call Functioncc9bd
-	ret
-.asm_ce3df
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $8
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	and $7
-	ret nz
-	ld hl, $a
-	add hl, bc
-	inc [hl]
-	ret
-
-Functionce3ff: ; ce3ff (33:63ff)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce402: ; ce402 (33:6402)
-	dw Functionce406
-	dw Functionce412
-
-
-Functionce406: ; ce406 (33:6406)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $7
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-
-Functionce412: ; ce412 (33:6412)
-	call Functioncc9bd
-	ret
-
-Functionce416: ; ce416 (33:6416)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld d, $18
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	sra a
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ret
-
-Functionce43a: ; ce43a (33:643a)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce43d: ; ce43d (33:643d)
-	dw Functionce443
-	dw Functionce465
-	dw Functionce490
-
-
-Functionce443: ; ce443 (33:6443)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $28
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f
-	ld hl, $3
-	add hl, bc
-	add [hl]
-	call Functionce7bf
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	or $8
-	ld [hl], a
-
-Functionce465: ; ce465 (33:6465)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_ce48b
-	dec [hl]
-	add $8
-	ld d, a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_ce48b
-	ld [hl], $10
-	call Functionce72c
-
-Functionce490: ; ce490 (33:6490)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	and a
-	ret nz
-	call Functioncc9bd
-	ret
-
-Functionce49c: ; ce49c (33:649c)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce49f: ; ce49f (33:649f)
-	dw Functionce4a3
-	dw Functionce4b0
-
-
-Functionce4a3: ; ce4a3 (33:64a3)
-	call Functionce72c
-	ld hl, $b
-	add hl, bc
-	ld a, $24
-	add [hl]
-	call Functionce7bf
-
-Functionce4b0: ; ce4b0 (33:64b0)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $38
-	jr nc, .asm_ce4d8
-	inc [hl]
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld d, $18
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	and $1
-	ret nz
-	ld hl, $7
-	add hl, bc
-	dec [hl]
-	ret
-.asm_ce4d8
-	call Functioncc9bd
-	ret
-
-Functionce4dc: ; ce4dc (33:64dc)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	ld d, a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	call Functionce734
-	bit 7, a
-	jr nz, .asm_ce4f4
-	xor $ff
-	inc a
-.asm_ce4f4
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	and $1f
-	ret nz
-	ld hl, $b
-	add hl, bc
-	srl [hl]
-	ret
-
-Functionce508: ; ce508 (33:6508)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $10
-	jr nc, .asm_ce52e
-rept 2
-	inc [hl]
-endr
-	ld d, a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_ce52e
-	call Functioncc9bd
-	ret
-
-Functionce532: ; ce532 (33:6532)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld hl, $f
-	add hl, bc
-	ld d, [hl]
-	ld a, e
-	and $c0
-	rlca
-	rlca
-	add [hl]
-	ld [hl], a
-	ld a, e
-	and $3f
-	push af
-	push de
-	call Functionce734
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce55b: ; ce55b (33:655b)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce55e: ; ce55e (33:655e)
-	dw Functionce564
-	dw Functionce56e
-	dw Functionce577
-
-
-Functionce564: ; ce564 (33:6564)
-	ld d, $18
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	jr asm_ce58f
-
-Functionce56e: ; ce56e (33:656e)
-	call Functionce72c
-	ld hl, $f
-	add hl, bc
-	ld [hl], $18
-
-Functionce577: ; ce577 (33:6577)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	jr nc, .asm_ce58b
-	ld d, a
-	add $8
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	jr asm_ce58f
-.asm_ce58b
-	call Functioncc9bd
-	ret
-asm_ce58f: ; ce58f (33:658f)
-	call Functionce6f1
-	ret
-
-Functionce593: ; ce593 (33:6593)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce596: ; ce596 (33:6596)
-	dw Functionce5b3
-	dw Functionce59a
-
-
-Functionce59a: ; ce59a (33:659a)
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr c, .asm_ce5b0
-	ld hl, $7
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ld hl, $8
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ret
-.asm_ce5b0
-	call Functioncc9bd
-
-Functionce5b3: ; ce5b3 (33:65b3)
-	ret
-
-Functionce5b4: ; ce5b4 (33:65b4)
-	ld d, $50
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	ld hl, $f
-	add hl, bc
-	add [hl]
-	inc [hl]
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce5dc: ; ce5dc (33:65dc)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $d0
-	jr z, .asm_ce5ea
-rept 4
-	dec [hl]
-endr
-	ret
-.asm_ce5ea
-	call Functioncc9bd
-	ret
-
-Functionce5ee: ; ce5ee (33:65ee)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce5f1: ; ce5f1 (33:65f1)
-	dw Functionce5f9
-	dw Functionce60a
-	dw Functionce622
-	dw Functionce618
-
-
-Functionce5f9: ; ce5f9 (33:65f9)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, asm_ce61c
-	call Functionce72c
-	ld hl, $a
-	add hl, bc
-	ld [hl], $ec
-
-Functionce60a: ; ce60a (33:660a)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $4
-	jr z, Functionce618
-rept 4
-	inc [hl]
-endr
-	ret
-
-Functionce618: ; ce618 (33:6618)
-	call Functioncc9bd
-	ret
-asm_ce61c: ; ce61c (33:661c)
-	call Functionce72c
-	call Functionce72c
-
-Functionce622: ; ce622 (33:6622)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	cp $d8
-	ret z
-rept 4
-	dec [hl]
-endr
-	ret
-
-Functionce62f: ; ce62f (33:662f)
-	call Functionce71e ;  ;  ; call does not return
-
-Jumptable_ce632: ; ce632 (33:6632)
-	dw Functionce63a
-	dw Functionce648
-	dw Functionce65c
-	dw Functionce672
-
-
-Functionce63a: ; ce63a (33:663a)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	call Functionce72c
-	ret
-
-Functionce648: ; ce648 (33:6648)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	add $4
-	cp $70
-	jr c, .asm_ce654
-	xor a
-.asm_ce654
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ret
-
-Functionce65c: ; ce65c (33:665c)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	add $4
-	cp $70
-	jr c, .asm_ce668
-	xor a
-.asm_ce668
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	add $8
-	ld [hl], a
-	ret
-
-Functionce672: ; ce672 (33:6672)
-	ld hl, $a
-	add hl, bc
-	ld a, [hl]
-	add $4
-	cp $70
-	jr c, .asm_ce67e
-	xor a
-.asm_ce67e
-	ld [hl], a
-	ld hl, $9
-	add hl, bc
-	ld a, [hl]
-	add $4
-	ld [hl], a
-	ret
-
-Functionce688: ; ce688 (33:6688)
-	ld hl, $7
-	add hl, bc
-	ld d, [hl]
-	ld hl, $f
-	add hl, bc
-	ld e, [hl]
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	ld l, a
-	and $f0
-	ld h, a
-	swap a
-	or h
-	ld h, a
-	ld a, l
-	and $f
-	swap a
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $7
-	add hl, bc
-	ld [hl], d
-	ld hl, $f
-	add hl, bc
-	ld [hl], e
-	ret
-
-Functionce6b3: ; ce6b3 (33:66b3)
-	ld d, $18
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	call Functionce6f1
-	ret
-
-Functionce6bf: ; ce6bf (33:66bf)
-	ld d, $18
-	ld hl, $10
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	srl a
-	ld hl, $b
-	add hl, bc
-	add [hl]
-	call Functionce6f1
-	ret
-
-Functionce6d2: ; ce6d2 (33:66d2)
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr nc, .asm_ce6ed
-	inc [hl]
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-	call Functionce734
-	xor $ff
-	inc a
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_ce6ed
-	call Functioncc9bd
-	ret
-
-Functionce6f1: ; ce6f1 (33:66f1)
-	push af
-	push de
-	call Functionce734
-	sra a
-	sra a
-	ld hl, $a
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call Functionce732
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	ret
-
-Functionce70a: ; ce70a (33:670a)
-	and $f
-	ld e, a
-	ld hl, $7
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	srl e
-	ld hl, $8
-	add hl, bc
-.asm_ce719
-	dec [hl]
-	dec e
-	jr nz, .asm_ce719
-	ret
-
-Functionce71e: ; ce71e (33:671e)
-	pop de
-	ld hl, $e
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, hl
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Functionce72c: ; ce72c (33:672c)
-	ld hl, $e
-	add hl, bc
-	inc [hl]
-	ret
-
-Functionce732: ; ce732 (33:6732)
-	add $10
-
-Functionce734: ; ce734 (33:6734)
-	and $3f
-	cp $20
-	jr nc, .asm_ce73f
-	call Functionce749
-	ld a, h
-	ret
-.asm_ce73f
-	and $1f
-	call Functionce749
-	ld a, h
-	xor $ff
-	inc a
-	ret
-
-Functionce749: ; ce749 (33:6749)
-	ld e, a
-	ld a, d
-	ld d, 0
-	ld hl, Unknown_ce77f
-rept 2
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $0
-.asm_ce758
-	srl a
-	jr nc, .asm_ce75d
-	add hl, de
-.asm_ce75d
-	sla e
-	rl d
-	and a
-	jr nz, .asm_ce758
-	ret
-
-Functionce765: ; ce765 (33:6765)
-	ld a, e
-	call Functionce734
-	ld e, a
-	ret
-
-Functionce76b: ; ce76b (33:676b)
-	ld a, e
-	call Functionce732
-	ld e, a
-	ret
-; ce771 (33:6771)
-
-Functionce771: ; ce771
-	ld a, e
-	call Functionce734
-	ld e, l
-	ld d, h
-	ret
-; ce778
-
-Functionce778: ; ce778
-	ld a, e
-	call Functionce732
-	ld e, l
-	ld d, h
-	ret
-; ce77f
-
-Unknown_ce77f: ; ce77f
-	sine_wave $100
-; ce7bf
-
-Functionce7bf: ; ce7bf (33:67bf)
-	ld hl, $3
-	add hl, bc
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld [hl], $0
-	ld hl, $d
-	add hl, bc
-	ld [hl], $ff
-	ret
-
-
-Functionce7d1: ; ce7d1
-.asm_ce7d1
-	ld hl, $000c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_ce7e1
-	dec [hl]
-	call Functionce823
-	ld a, [hli]
-	push af
-	jr .asm_ce7fd
-
-.asm_ce7e1
-	ld hl, $000d
-	add hl, bc
-	inc [hl]
-	call Functionce823
-	ld a, [hli]
-	cp $fe
-	jr z, .asm_ce815
-	cp $ff
-	jr z, .asm_ce807
-	push af
-	ld a, [hl]
-	push hl
-	and $3f
-	ld hl, $000c
-	add hl, bc
-	ld [hl], a
-	pop hl
-
-.asm_ce7fd
-	ld a, [hl]
-	and $c0
-	srl a
-	ld [BattleAnimTemps + 7], a
-	pop af
-	ret
-
-.asm_ce807
-	xor a
-	ld hl, $000c
-	add hl, bc
-	ld [hl], a
-	ld hl, $000d
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	jr .asm_ce7d1
-
-.asm_ce815
-	xor a
-	ld hl, $000c
-	add hl, bc
-	ld [hl], a
-	dec a
-	ld hl, $000d
-	add hl, bc
-	ld [hl], a
-	jr .asm_ce7d1
-; ce823
-
-Functionce823: ; ce823
-	ld hl, $0003
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Unknown_ce85e
-rept 2
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $000d
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, hl
-	add hl, de
-	ret
-; ce83c
-
-Functionce83c: ; ce83c
-	ld l, a
-	ld h, 0
-	ld de, Unknown_ceeae
-rept 2
-	add hl, hl
-endr
-	add hl, de
-	ret
-; ce846
-
-
-Functionce846: ; ce846 (33:6846)
-	push hl
-	ld l, a
-	ld h, 0
-rept 2
-	add hl, hl
-endr
-	ld de, AnimObjGFX
-	add hl, de
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	inc hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop de
-	push bc
-	call DecompressRequest2bpp
-	pop bc
-	ret
-; ce85e (33:685e)
-
-
-Unknown_ce85e: ; ce85e
-	dw Unknown_ce9d0
-	dw Unknown_ce9d3
-	dw Unknown_ce9d6
-	dw Unknown_ce9d9
-	dw Unknown_ce9dc
-	dw Unknown_ce9df
-	dw Unknown_ce9e2
-	dw Unknown_ce9e5
-	dw Unknown_cea6b
-	dw Unknown_cea74
-	dw Unknown_cea7d
-	dw Unknown_cea80
-	dw Unknown_cea83
-	dw Unknown_cea86
-	dw Unknown_cea91
-	dw Unknown_cea94
-	dw Unknown_cea99
-	dw Unknown_cea9e
-	dw Unknown_ceaaf
-	dw Unknown_ceabc
-	dw Unknown_cead3
-	dw Unknown_cead6
-	dw Unknown_ceadb
-	dw Unknown_ceade
-	dw Unknown_ceb06
-	dw Unknown_ceb0d
-	dw Unknown_ceb10
-	dw Unknown_ceb13
-	dw Unknown_ceb16
-	dw Unknown_ceb19
-	dw Unknown_ceb1c
-	dw Unknown_ceb1f
-	dw Unknown_ceb26
-	dw Unknown_ceb2b
-	dw Unknown_ceb2e
-	dw Unknown_ceb37
-	dw Unknown_ceb3a
-	dw Unknown_ceb3d
-	dw Unknown_ceb40
-	dw Unknown_ceb43
-	dw Unknown_ceb46
-	dw Unknown_ceb4b
-	dw Unknown_ceb50
-	dw Unknown_ceb63
-	dw Unknown_ceb68
-	dw Unknown_ceb6d
-	dw Unknown_ceb70
-	dw Unknown_ceb78
-	dw Unknown_ceb89
-	dw Unknown_ceb8e
-	dw Unknown_ceb97
-	dw Unknown_ceba0
-	dw Unknown_ceba9
-	dw Unknown_cebb0
-	dw Unknown_cebc1
-	dw Unknown_cebca
-	dw Unknown_cebcf
-	dw Unknown_cebd4
-	dw Unknown_cebd9
-	dw Unknown_cebdc
-	dw Unknown_cebdf
-	dw Unknown_cebe2
-	dw Unknown_ce9f6
-	dw Unknown_cea0b
-	dw Unknown_cea20
-	dw Unknown_cea35
-	dw Unknown_cea50
-	dw Unknown_cebe5
-	dw Unknown_cebf3
-	dw Unknown_cec0f
-	dw Unknown_cec20
-	dw Unknown_cec25
-	dw Unknown_cec2a
-	dw Unknown_cec37
-	dw Unknown_cec44
-	dw Unknown_cec4d
-	dw Unknown_cebec
-	dw Unknown_cec56
-	dw Unknown_cec67
-	dw Unknown_cec72
-	dw Unknown_cec77
-	dw Unknown_cec7c
-	dw Unknown_cec7f
-	dw Unknown_cec86
-	dw Unknown_cec8b
-	dw Unknown_cec92
-	dw Unknown_ceaf3
-	dw Unknown_ceaf6
-	dw Unknown_ceb01
-	dw Unknown_cec97
-	dw Unknown_cec9a
-	dw Unknown_cec9d
-	dw Unknown_ceca0
-	dw Unknown_cecab
-	dw Unknown_cecb0
-	dw Unknown_cecc9
-	dw Unknown_ceccc
-	dw Unknown_cece7
-	dw Unknown_cecec
-	dw Unknown_cecf1
-	dw Unknown_cecf4
-	dw Unknown_cecf7
-	dw Unknown_cecfa
-	dw Unknown_ced09
-	dw Unknown_ced0c
-	dw Unknown_ced19
-	dw Unknown_ced22
-	dw Unknown_ced2b
-	dw Unknown_ced32
-	dw Unknown_ced39
-	dw Unknown_ced3c
-	dw Unknown_ced3f
-	dw Unknown_ced44
-	dw Unknown_ced49
-	dw Unknown_ced4c
-	dw Unknown_ced4f
-	dw Unknown_ced54
-	dw Unknown_ced57
-	dw Unknown_ced5a
-	dw Unknown_ced5d
-	dw Unknown_ced62
-	dw Unknown_ced65
-	dw Unknown_cecb3
-	dw Unknown_ced72
-	dw Unknown_ced75
-	dw Unknown_ced88
-	dw Unknown_cec08
-	dw Unknown_ced8b
-	dw Unknown_ced8e
-	dw Unknown_ced91
-	dw Unknown_ced93
-	dw Unknown_ced95
-	dw Unknown_ced98
-	dw Unknown_ced9b
-	dw Unknown_ceda8
-	dw Unknown_cedb5
-	dw Unknown_cedb8
-	dw Unknown_cedbb
-	dw Unknown_cedbe
-	dw Unknown_cedc1
-	dw Unknown_cedc4
-	dw Unknown_cedc7
-	dw Unknown_cedcc
-	dw Unknown_cedcf
-	dw Unknown_cedd2
-	dw Unknown_cedd5
-	dw Unknown_cedd8
-	dw Unknown_ceddb
-	dw Unknown_cedde
-	dw Unknown_cede1
-	dw Unknown_cede4
-	dw Unknown_cede7
-	dw Unknown_cedea
-	dw Unknown_ceded
-	dw Unknown_cedf0
-	dw Unknown_cedf3
-	dw Unknown_cedf6
-	dw Unknown_cedf9
-	dw Unknown_cedfc
-	dw Unknown_cedff
-	dw Unknown_cee02
-	dw Unknown_cee05
-	dw Unknown_cee08
-	dw Unknown_cee0b
-	dw Unknown_cee12
-	dw Unknown_cee19
-	dw Unknown_cee1e
-	dw Unknown_cee3d
-	dw Unknown_cee5c
-	dw Unknown_cee61
-	dw Unknown_cee64
-	dw Unknown_cee6b
-	dw Unknown_cee70
-	dw Unknown_cee75
-	dw Unknown_cee7e
-	dw Unknown_cecbe
-	dw Unknown_cee81
-	dw Unknown_cee84
-	dw Unknown_cee8d
-	dw Unknown_cee96
-	dw Unknown_cee9f
-	dw Unknown_ceea2
-	dw Unknown_ceea5
-	dw Unknown_ceea8
-	dw Unknown_ceeab
-; ce9d0
-
-Unknown_ce9d0:	db $00,$06, $fc
-Unknown_ce9d3:	db $01,$06, $fc
-Unknown_ce9d6:	db $02,$06, $fc
-Unknown_ce9d9:	db $03,$06, $fc
-Unknown_ce9dc:	db $04,$06, $fc
-Unknown_ce9df:	db $05,$06, $fc
-Unknown_ce9e2:	db $06,$06, $fc
-Unknown_ce9e5:	db $03,$04, $01,$01, $03,$04, $01,$01, $03,$04, $01,$01, $03,$04, $01,$01, $fc
-Unknown_ce9f6:	db $4b,$02, $4c,$02, $4d,$04, $4e,$02, $fd,$02, $4e,$02, $fd,$02, $4e,$02, $fd,$02, $4e,$02, $fc
-Unknown_cea0b:	db $4b,$42, $4c,$42, $4d,$44, $4e,$42, $fd,$02, $4e,$42, $fd,$02, $4e,$42, $fd,$02, $4e,$42, $fc
-Unknown_cea20:	db $4b,$c2, $4c,$c2, $4d,$c4, $4e,$c2, $fd,$02, $4e,$c2, $fd,$02, $4e,$c2, $fd,$02, $4e,$c2, $fc
-Unknown_cea35:	db $4b,$01, $4c,$01, $4d,$01, $4f,$01, $50,$01, $51,$01, $52,$02, $fd,$02, $52,$02, $fd,$02, $52,$02, $fd,$02, $52,$02, $fc
-Unknown_cea50:	db $4b,$41, $4c,$41, $4d,$41, $4f,$41, $50,$41, $51,$41, $52,$42, $fd,$02, $52,$42, $fd,$02, $52,$42, $fd,$02, $52,$42, $fc
-Unknown_cea6b:	db $00,$03, $07,$03, $08,$03, $09,$03, $fc
-Unknown_cea74:	db $0a,$07, $0b,$07, $0a,$07, $0b,$47, $fe
-Unknown_cea7d:	db $0c,$08, $ff
-Unknown_cea80:	db $0d,$08, $ff
-Unknown_cea83:	db $0a,$08, $ff
-Unknown_cea86:	db $0a,$07, $0b,$07, $0a,$07, $0b,$47, $0a,$07, $ff
-Unknown_cea91:	db $0a,$08, $ff
-Unknown_cea94:	db $0a,$04, $0e,$04, $fe
-Unknown_cea99:	db $0f,$04, $10,$04, $fe
-Unknown_cea9e:	db $10,$04, $0f,$04, $0e,$04, $0a,$04, $0e,$04, $0a,$04, $0e,$04, $0a,$04, $fc
-Unknown_ceaaf:	db $10,$01, $0f,$01, $12,$01, $11,$01, $12,$01, $0f,$01, $fe
-Unknown_ceabc:	db $10,$03, $0f,$03, $12,$01, $fd,$01, $12,$01, $fd,$01, $12,$01, $fd,$01, $12,$01, $fd,$01, $12,$03, $fc
-Unknown_cead3:	db $13,$14, $fc
-Unknown_cead6:	db $10,$01, $0f,$01, $fe
-Unknown_ceadb:	db $14,$08, $ff
-Unknown_ceade:	db $17,$04, $16,$08, $15,$08, $16,$08, $17,$04, $17,$04, $16,$48, $15,$48, $16,$48, $17,$04, $fe
-Unknown_ceaf3:	db $69,$08, $ff
-Unknown_ceaf6:	db $69,$20, $6a,$04, $6b,$04, $6d,$04, $6c,$04, $ff
-Unknown_ceb01:	db $6c,$08, $6d,$08, $fe
-Unknown_ceb06:	db $18,$04, $19,$04, $1a,$04, $fc
-Unknown_ceb0d:	db $1b,$08, $ff
-Unknown_ceb10:	db $0f,$08, $ff
-Unknown_ceb13:	db $1c,$08, $ff
-Unknown_ceb16:	db $0a,$08, $fc
-Unknown_ceb19:	db $1d,$08, $ff
-Unknown_ceb1c:	db $17,$08, $ff
-Unknown_ceb1f:	db $0f,$03, $10,$03, $1e,$03, $ff
-Unknown_ceb26:	db $1f,$10, $20,$03, $fc
-Unknown_ceb2b:	db $20,$08, $ff
-Unknown_ceb2e:	db $20,$08, $21,$08, $1b,$08, $21,$08, $fe
-Unknown_ceb37:	db $22,$08, $ff
-Unknown_ceb3a:	db $1b,$08, $ff
-Unknown_ceb3d:	db $23,$08, $ff
-Unknown_ceb40:	db $24,$08, $ff
-Unknown_ceb43:	db $25,$08, $ff
-Unknown_ceb46:	db $26,$08, $27,$08, $ff
-Unknown_ceb4b:	db $28,$08, $29,$08, $fc
-Unknown_ceb50:	db $2a,$01, $2b,$01, $2c,$01, $2d,$01, $2e,$01, $2d,$01, $2c,$01, $2b,$01, $2a,$01, $fc
-Unknown_ceb63:	db $14,$01, $15,$01, $fe
-Unknown_ceb68:	db $2f,$04, $30,$28, $fc
-Unknown_ceb6d:	db $31,$08, $ff
-Unknown_ceb70:	db $32,$20, $33,$20, $34,$20, $35,$20 ; fallthrough
-Unknown_ceb78:	db $fd,$02, $35,$04, $fd,$02, $35,$04, $fd,$02, $35,$04, $fd,$02, $35,$04, $fc
-Unknown_ceb89:	db $14,$04, $15,$04, $fe
-Unknown_ceb8e:	db $36,$02, $37,$02, $38,$02, $39,$20, $fc
-Unknown_ceb97:	db $3a,$02, $3b,$02, $3c,$02, $3d,$20, $fc
-Unknown_ceba0:	db $3a,$42, $3b,$42, $3c,$42, $3d,$60, $fc
-Unknown_ceba9:	db $3e,$08, $3f,$08, $40,$08, $ff
-Unknown_cebb0:	db $40,$02, $fd,$02, $40,$02, $fd,$02, $41,$02, $fd,$02, $41,$02, $fd,$02, $fe
-Unknown_cebc1:	db $42,$02, $43,$02, $44,$02, $45,$02, $fe
-Unknown_cebca:	db $19,$02, $fd,$02, $fe
-Unknown_cebcf:	db $46,$04, $47,$04, $fe
-Unknown_cebd4:	db $18,$02, $fd,$02, $fe
-Unknown_cebd9:	db $48,$08, $ff
-Unknown_cebdc:	db $48,$48, $ff
-Unknown_cebdf:	db $49,$08, $ff
-Unknown_cebe2:	db $4a,$08, $ff
-Unknown_cebe5:	db $20,$10, $1f,$10, $1e,$10, $ff
-Unknown_cebec:	db $20,$08, $1f,$08, $1e,$08, $ff
-Unknown_cebf3:	db $fd,$14, $55,$28, $54,$28, $53,$14, $fd,$04, $53,$04, $fd,$04, $53,$04, $fd,$04, $53,$04, $fc
-Unknown_cec08:	db $1e,$08, $1f,$08, $20,$08, $fc
-Unknown_cec0f:	db $fd,$00, $14,$00, $15,$00, $14,$40, $fd,$00, $16,$40, $15,$00, $16,$00, $fe
-Unknown_cec20:	db $56,$02, $57,$04, $fc
-Unknown_cec25:	db $56,$c2, $57,$c4, $fc
-Unknown_cec2a:	db $56,$01, $57,$01, $58,$01, $57,$c1, $58,$c1, $57,$02, $fc
-Unknown_cec37:	db $56,$c1, $57,$c1, $58,$c1, $57,$01, $58,$01, $57,$c2, $fc
-Unknown_cec44:	db $57,$c1, $58,$c1, $57,$01, $58,$01, $fe
-Unknown_cec4d:	db $59,$01, $5a,$01, $5b,$01, $5c,$02, $fc
-Unknown_cec56:	db $0a,$0a, $0b,$43, $5d,$43, $0b,$c3, $0a,$82, $0b,$81, $5d,$01, $0b,$01, $fe
-Unknown_cec67:	db $0a,$03, $0b,$47, $0a,$07, $0b,$07, $0a,$03, $fe
-Unknown_cec72:	db $5e,$20, $5e,$20, $fc
-Unknown_cec77:	db $5f,$20, $5f,$20, $fc
-Unknown_cec7c:	db $60,$08, $ff
-Unknown_cec7f:	db $61,$01, $62,$01, $63,$01, $ff
-Unknown_cec86:	db $63,$07, $64,$07, $fe
-Unknown_cec8b:	db $65,$01, $66,$01, $67,$01, $ff
-Unknown_cec92:	db $67,$07, $68,$07, $fe
-Unknown_cec97:	db $6e,$08, $ff
-Unknown_cec9a:	db $6f,$08, $ff
-Unknown_cec9d:	db $6e,$88, $ff
-Unknown_ceca0:	db $18,$04, $70,$04, $71,$04, $72,$04, $73,$04, $fc
-Unknown_cecab:	db $74,$04, $75,$04, $fe
-Unknown_cecb0:	db $14,$08, $ff
-Unknown_cecb3:	db $74,$03, $14,$03, $15,$03, $14,$03, $15,$03, $fc
-Unknown_cecbe:	db $14,$00, $15,$00, $14,$00, $15,$00, $74,$0c, $fc
-Unknown_cecc9:	db $76,$08, $ff
-Unknown_ceccc:	db $77,$01, $78,$01, $79,$01, $7a,$01, $7b,$01, $7c,$01, $7d,$01, $7c,$c1, $7b,$c1, $7a,$c1, $79,$c1, $78,$c1, $77,$c1, $fc
-Unknown_cece7:	db $1b,$04, $7e,$04, $fe
-Unknown_cecec:	db $1b,$44, $7e,$44, $fe
-Unknown_cecf1:	db $7f,$08, $ff
-Unknown_cecf4:	db $25,$08, $ff
-Unknown_cecf7:	db $80,$08, $ff
-Unknown_cecfa:	db $83,$07, $82,$07, $81,$07, $82,$07, $83,$07, $82,$07, $81,$07, $fc
-Unknown_ced09:	db $1b,$10, $fc
-Unknown_ced0c:	db $fd,$0f, $84,$0f, $85,$0f, $29,$0f, $28,$0f, $86,$20, $fc
-Unknown_ced19:	db $1b,$03, $87,$03, $88,$03, $89,$03, $fc
-Unknown_ced22:	db $8a,$02, $8b,$02, $8c,$02, $8d,$02, $fc
-Unknown_ced2b:	db $61,$02, $62,$02, $63,$02, $ff
-Unknown_ced32:	db $65,$02, $66,$02, $67,$02, $ff
-Unknown_ced39:	db $8e,$08, $ff
-Unknown_ced3c:	db $8e,$48, $ff
-Unknown_ced3f:	db $8f,$10, $90,$10, $fe
-Unknown_ced44:	db $91,$10, $92,$10, $fe
-Unknown_ced49:	db $93,$08, $ff
-Unknown_ced4c:	db $1e,$08, $ff
-Unknown_ced4f:	db $1b,$07, $94,$07, $fe
-Unknown_ced54:	db $95,$08, $ff
-Unknown_ced57:	db $96,$08, $ff
-Unknown_ced5a:	db $95,$08, $ff
-Unknown_ced5d:	db $97,$01, $97,$41, $fe
-Unknown_ced62:	db $98,$08, $ff
-Unknown_ced65:	db $99,$20, $99,$20, $99,$20, $99,$20, $99,$20, $9a,$08, $ff
-Unknown_ced72:	db $9b,$08, $ff
-Unknown_ced75:	db $9c,$02, $9d,$02, $9e,$08, $fd,$02, $9e,$02, $fd,$02, $9e,$02, $fd,$02, $9e,$02, $fc
-Unknown_ced88:	db $9f,$08, $ff
-Unknown_ced8b:	db $0f,$08, $ff
-Unknown_ced8e:	db $6b,$18, $fc
-Unknown_ced91:	db $a0,$01 ; fallthrough
-Unknown_ced93:	db $a1,$01 ; fallthrough
-Unknown_ced95:	db $a2,$01, $fc
-Unknown_ced98:	db $a3,$08, $ff
-Unknown_ced9b:	db $a4,$04, $a5,$04, $a6,$04, $a7,$04, $a6,$44, $a5,$44, $fe
-Unknown_ceda8:	db $a8,$04, $a9,$04, $aa,$04, $ab,$04, $aa,$44, $a9,$44, $fe
-Unknown_cedb5:	db $1b,$08, $ff
-Unknown_cedb8:	db $ac,$08, $ff
-Unknown_cedbb:	db $ad,$08, $ff
-Unknown_cedbe:	db $ae,$08, $ff
-Unknown_cedc1:	db $af,$08, $ff
-Unknown_cedc4:	db $b0,$20, $fc
-Unknown_cedc7:	db $b1,$07, $b1,$47, $fe
-Unknown_cedcc:	db $b2,$08, $ff
-Unknown_cedcf:	db $b3,$08, $ff
-Unknown_cedd2:	db $b3,$48, $ff
-Unknown_cedd5:	db $b3,$88, $ff
-Unknown_cedd8:	db $b3,$c8, $ff
-Unknown_ceddb:	db $b5,$08, $ff
-Unknown_cedde:	db $b5,$48, $ff
-Unknown_cede1:	db $b5,$88, $ff
-Unknown_cede4:	db $b5,$c8, $ff
-Unknown_cede7:	db $b4,$08, $ff
-Unknown_cedea:	db $6b,$08, $ff
-Unknown_ceded:	db $b6,$08, $ff
-Unknown_cedf0:	db $b7,$20, $ff
-Unknown_cedf3:	db $1b,$20, $ff
-Unknown_cedf6:	db $b8,$20, $ff
-Unknown_cedf9:	db $b8,$60, $ff
-Unknown_cedfc:	db $b9,$20, $ff
-Unknown_cedff:	db $ba,$20, $ff
-Unknown_cee02:	db $bb,$60, $ff
-Unknown_cee05:	db $bb,$20, $ff
-Unknown_cee08:	db $bc,$20, $ff
-Unknown_cee0b:	db $bd,$0b, $be,$0b, $1b,$0b, $fc
-Unknown_cee12:	db $bf,$04, $c0,$04, $c1,$04, $fc
-Unknown_cee19:	db $c2,$20, $c2,$20, $fc
-Unknown_cee1e:	db $4b,$02, $4c,$02, $4d,$20, $4d,$20, $4d,$20, $4f,$01, $50,$01, $51,$01, $52,$02, $fd,$02, $52,$02, $fd,$02, $52,$02, $fd,$02, $52,$02, $fc
-Unknown_cee3d:	db $4b,$c2, $4c,$c2, $4d,$e0, $4d,$e0, $4d,$e0, $4f,$c1, $50,$c1, $51,$c1, $52,$c2, $fd,$02, $52,$c2, $fd,$02, $52,$c2, $fd,$02, $52,$c2, $fc
-Unknown_cee5c:	db $c3,$01, $c3,$c1, $fe
-Unknown_cee61:	db $c4,$20, $ff
-Unknown_cee64:	db $c5,$04, $c6,$04, $c7,$04, $fc
-Unknown_cee6b:	db $c8,$01, $c8,$41, $fe
-Unknown_cee70:	db $c9,$03, $05,$03, $fc
-Unknown_cee75:	db $ca,$20, $cb,$03, $ca,$03, $cb,$03, $fe
-Unknown_cee7e:	db $03,$a0, $ff
-Unknown_cee81:	db $cc,$20, $ff
-Unknown_cee84:	db $7f,$02, $25,$02, $80,$02, $25,$02, $fe
-Unknown_cee8d:	db $cd,$04, $ce,$04, $cd,$c4, $ce,$c4, $fe
-Unknown_cee96:	db $cf,$04, $d0,$04, $d1,$04, $d2,$04, $fc
-Unknown_cee9f:	db $d3,$20, $ff
-Unknown_ceea2:	db $d4,$08, $ff
-Unknown_ceea5:	db $d5,$08, $ff
-Unknown_ceea8:	db $d6,$08, $ff
-Unknown_ceeab:	db $d7,$08, $ff
-; ceeae
-
-
-Unknown_ceeae: ; ceeae
-; ?, length, address
-	dbbw $00, $10, Unknown_cf2f6
-	dbbw $04, $09, Unknown_cf262
-	dbbw $08, $04, Unknown_cf22e
-	dbbw $09, $04, Unknown_cf21e
-	dbbw $0d, $04, Unknown_cf386
-	dbbw $0f, $04, Unknown_cf21e
-	dbbw $13, $04, Unknown_cf386
-	dbbw $04, $10, Unknown_cf2f6
-	dbbw $08, $10, Unknown_cf2f6
-	dbbw $08, $10, Unknown_cf336
-	dbbw $00, $04, Unknown_cf386
-	dbbw $02, $04, Unknown_cf21e
-	dbbw $06, $02, Unknown_cf376
-	dbbw $07, $02, Unknown_cf376
-	dbbw $02, $04, Unknown_cf386
-	dbbw $04, $01, Unknown_cf736
-	dbbw $05, $01, Unknown_cf736
-	dbbw $00, $02, Unknown_cf20e
-	dbbw $02, $02, Unknown_cf20e
-	dbbw $00, $04, Unknown_cf3a6
-	dbbw $00, $01, Unknown_cf736
-	dbbw $01, $01, Unknown_cf736
-	dbbw $02, $01, Unknown_cf736
-	dbbw $03, $01, Unknown_cf736
-	dbbw $00, $04, Unknown_cf22e
-	dbbw $01, $10, Unknown_cf2f6
-	dbbw $05, $10, Unknown_cf2f6
-	dbbw $00, $04, Unknown_cf21e
-	dbbw $05, $0c, Unknown_cf2b6
-	dbbw $02, $04, Unknown_cf22e
-	dbbw $06, $01, Unknown_cf736
-	dbbw $07, $01, Unknown_cf736
-	dbbw $08, $01, Unknown_cf736
-	dbbw $04, $04, Unknown_cf21e
-	dbbw $09, $16, Unknown_cf3b6
-	dbbw $04, $02, Unknown_cf20e
-	dbbw $06, $02, Unknown_cf20e
-	dbbw $0c, $01, Unknown_cf736
-	dbbw $0a, $01, Unknown_cf736
-	dbbw $0b, $04, Unknown_cf22e
-	dbbw $08, $04, Unknown_cf386
-	dbbw $06, $04, Unknown_cf386
-	dbbw $00, $05, Unknown_cf40e
-	dbbw $03, $06, Unknown_cf422
-	dbbw $00, $07, Unknown_cf43a
-	dbbw $03, $08, Unknown_cf456
-	dbbw $00, $09, Unknown_cf476
-	dbbw $00, $04, Unknown_cf49a
-	dbbw $02, $04, Unknown_cf4aa
-	dbbw $04, $06, Unknown_cf4ba
-	dbbw $00, $02, Unknown_cf4da
-	dbbw $00, $07, Unknown_cf512
-	dbbw $00, $0e, Unknown_cf4da
-	dbbw $00, $15, Unknown_cf512
-	dbbw $00, $02, Unknown_cf566
-	dbbw $00, $06, Unknown_cf566
-	dbbw $00, $0a, Unknown_cf566
-	dbbw $00, $0e, Unknown_cf566
-	dbbw $00, $02, Unknown_cf59e
-	dbbw $00, $06, Unknown_cf59e
-	dbbw $00, $0a, Unknown_cf59e
-	dbbw $00, $0e, Unknown_cf59e
-	dbbw $00, $04, Unknown_cf5d6
-	dbbw $00, $10, Unknown_cf5d6
-	dbbw $00, $1a, Unknown_cf5d6
-	dbbw $00, $1a, Unknown_cf63e
-	dbbw $0e, $04, Unknown_cf6a6
-	dbbw $0e, $08, Unknown_cf6a6
-	dbbw $0e, $04, Unknown_cf6c6
-	dbbw $0e, $08, Unknown_cf6c6
-	dbbw $0e, $04, Unknown_cf6e6
-	dbbw $0e, $04, Unknown_cf6f6
-	dbbw $00, $06, Unknown_cf706
-	dbbw $03, $04, Unknown_cf71e
-	dbbw $03, $02, Unknown_cf72e
-	dbbw $01, $05, Unknown_cf736
-	dbbw $01, $06, Unknown_cf74a
-	dbbw $01, $07, Unknown_cf762
-	dbbw $01, $03, Unknown_cf762
-	dbbw $01, $08, Unknown_cf77e
-	dbbw $01, $09, Unknown_cf79e
-	dbbw $01, $0a, Unknown_cf7c2
-	dbbw $01, $06, Unknown_cf7c2
-	dbbw $00, $09, Unknown_cf262
-	dbbw $04, $04, Unknown_cf22e
-	dbbw $05, $04, Unknown_cf22e
-	dbbw $00, $02, Unknown_cf216
-	dbbw $02, $02, Unknown_cf216
-	dbbw $04, $02, Unknown_cf216
-	dbbw $02, $04, Unknown_cf7ea
-	dbbw $02, $04, Unknown_cf7fa
-	dbbw $02, $02, Unknown_cf376
-	dbbw $04, $02, Unknown_cf376
-	dbbw $06, $04, Unknown_cf396
-	dbbw $08, $02, Unknown_cf376
-	dbbw $09, $02, Unknown_cf376
-	dbbw $05, $02, Unknown_cf80a
-	dbbw $00, $02, Unknown_cf812
-	dbbw $00, $05, Unknown_cf812
-	dbbw $00, $09, Unknown_cf812
-	dbbw $09, $09, Unknown_cf812
-	dbbw $00, $04, Unknown_cf836
-	dbbw $00, $07, Unknown_cf836
-	dbbw $00, $09, Unknown_cf836
-	dbbw $09, $09, Unknown_cf836
-	dbbw $04, $01, Unknown_cf80e
-	dbbw $05, $02, Unknown_cf37e
-	dbbw $06, $04, Unknown_cf21e
-	dbbw $0a, $04, Unknown_cf21e
-	dbbw $0e, $04, Unknown_cf21e
-	dbbw $08, $05, Unknown_cf8f6
-	dbbw $0d, $03, Unknown_cf90a
-	dbbw $01, $08, Unknown_cfa06
-	dbbw $03, $08, Unknown_cfa06
-	dbbw $05, $08, Unknown_cfa06
-	dbbw $07, $08, Unknown_cfa06
-	dbbw $06, $04, Unknown_cf22e
-	dbbw $07, $04, Unknown_cf22e
-	dbbw $0a, $02, Unknown_cf4d2
-	dbbw $00, $01, Unknown_cf916
-	dbbw $00, $03, Unknown_cf91a
-	dbbw $00, $06, Unknown_cf926
-	dbbw $00, $09, Unknown_cf93e
-	dbbw $00, $0c, Unknown_cf962
-	dbbw $00, $0e, Unknown_cf992
-	dbbw $00, $0f, Unknown_cf9ca
-	dbbw $04, $04, Unknown_cf21e
-	dbbw $08, $04, Unknown_cf21e
-	dbbw $0d, $01, Unknown_cf736
-	dbbw $0e, $04, Unknown_cfa26
-	dbbw $10, $01, Unknown_cf736
-	dbbw $11, $01, Unknown_cf736
-	dbbw $04, $02, Unknown_cf37e
-	dbbw $05, $02, Unknown_cf37e
-	dbbw $0a, $04, Unknown_cf386
-	dbbw $00, $08, Unknown_cfa36
-	dbbw $00, $0c, Unknown_cfa76
-	dbbw $00, $10, Unknown_cfa36
-	dbbw $09, $02, Unknown_cfaa6
-	dbbw $09, $04, Unknown_cfaa6
-	dbbw $09, $06, Unknown_cfaa6
-	dbbw $09, $08, Unknown_cfaa6
-	dbbw $12, $05, Unknown_cfac6
-	dbbw $00, $04, Unknown_cfada
-	dbbw $04, $04, Unknown_cfada
-	dbbw $08, $04, Unknown_cfada
-	dbbw $0c, $04, Unknown_cfada
-	dbbw $00, $06, Unknown_cfaea
-	dbbw $04, $04, Unknown_cf21e
-	dbbw $0a, $04, Unknown_cf386
-	dbbw $15, $04, Unknown_cf4aa
-	dbbw $04, $04, Unknown_cf4aa
-	dbbw $0c, $04, Unknown_cf386
-	dbbw $0a, $04, Unknown_cfb02
-	dbbw $0c, $04, Unknown_cf21e
-	dbbw $00, $24, Unknown_cfb12
-	dbbw $0d, $02, Unknown_cfba2
-	dbbw $0d, $04, Unknown_cfba2
-	dbbw $0d, $06, Unknown_cfba2
-	dbbw $02, $08, Unknown_cfbba
-	dbbw $08, $07, Unknown_cfbda
-	dbbw $08, $05, Unknown_cfbda
-	dbbw $08, $03, Unknown_cfbda
-	dbbw $00, $10, Unknown_cf2b6
-	dbbw $00, $09, Unknown_cfbf6
-	dbbw $06, $09, Unknown_cfbf6
-	dbbw $0c, $09, Unknown_cfbf6
-	dbbw $12, $09, Unknown_cfbf6
-	dbbw $18, $09, Unknown_cfbf6
-	dbbw $1e, $09, Unknown_cfbf6
-	dbbw $24, $09, Unknown_cfbf6
-	dbbw $2a, $09, Unknown_cfbf6
-	dbbw $03, $04, Unknown_cfc1a
-	dbbw $12, $04, Unknown_cf21e
-	dbbw $10, $04, Unknown_cf386
-	dbbw $16, $01, Unknown_cf736
-	dbbw $17, $04, Unknown_cf22e
-	dbbw $18, $04, Unknown_cf21e
-	dbbw $1c, $04, Unknown_cf21e
-	dbbw $20, $03, Unknown_cf21e
-	dbbw $23, $04, Unknown_cf386
-	dbbw $25, $03, Unknown_cf21e
-	dbbw $17, $04, Unknown_cf21e
-	dbbw $0a, $10, Unknown_cf2f6
-	dbbw $10, $10, Unknown_cf2b6
-	dbbw $00, $10, Unknown_cf2b6
-	dbbw $04, $04, Unknown_cf21e
-	dbbw $08, $02, Unknown_cf20e
-	dbbw $20, $06, Unknown_cfc2a
-	dbbw $08, $01, Unknown_cf736
-	dbbw $04, $04, Unknown_cf21e
-	dbbw $1a, $04, Unknown_cf4aa
-	dbbw $16, $09, Unknown_cf262
-	dbbw $10, $10, Unknown_cfc42
-	dbbw $09, $06, Unknown_cfc82
-	dbbw $11, $09, Unknown_cf23e
-	dbbw $0e, $04, Unknown_cf21e
-	dbbw $0b, $04, Unknown_cf4aa
-	dbbw $1c, $06, Unknown_cf22e
-	dbbw $20, $10, Unknown_cfc42
-	dbbw $05, $06, Unknown_cfc9a
-	dbbw $0b, $04, Unknown_cf21e
-	dbbw $09, $04, Unknown_cfcb2
-	dbbw $0b, $04, Unknown_cf386
-	dbbw $11, $0d, Unknown_cfcc2
-	dbbw $00, $09, Unknown_cf23e
-	dbbw $09, $09, Unknown_cf23e
-	dbbw $00, $0c, Unknown_cf286
-	dbbw $06, $0c, Unknown_cf286
-	dbbw $0c, $0c, Unknown_cf286
-	dbbw $12, $0c, Unknown_cf286
-	dbbw $00, $0d, Unknown_cfcc2
-	dbbw $00, $07, Unknown_cf85a
-	dbbw $00, $06, Unknown_cf8ae
-	dbbw $00, $0e, Unknown_cf876
-	dbbw $00, $0c, Unknown_cf8c6
-; cf20e
-
-
-Unknown_cf20e:
-	db $f8, $fc, $00, $00
-	db $00, $fc, $01, $00
-
-Unknown_cf216:
-	db $fc, $f8, $00, $00
-	db $fc, $00, $01, $00
-
-Unknown_cf21e:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $02, $00
-	db $00, $00, $03, $00
-
-Unknown_cf22e:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $00, $20
-	db $00, $f8, $00, $40
-	db $00, $00, $00, $60
-
-Unknown_cf23e:
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $02, $00
-	db $fc, $f4, $03, $00
-	db $fc, $fc, $04, $00
-	db $fc, $04, $05, $00
-	db $04, $f4, $06, $00
-	db $04, $fc, $07, $00
-	db $04, $04, $08, $00
-
-Unknown_cf262:
-	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, $60
-	db $04, $f4, $00, $40
-	db $04, $fc, $01, $60
-	db $04, $04, $00, $60
-
-Unknown_cf286:
-	db $f0, $f4, $00, $00
-	db $f0, $fc, $01, $00
-	db $f0, $04, $02, $00
-	db $f8, $f4, $03, $00
-	db $f8, $fc, $04, $00
-	db $f8, $04, $05, $00
-	db $00, $f4, $05, $60
-	db $00, $fc, $04, $60
-	db $00, $04, $03, $60
-	db $08, $f4, $02, $60
-	db $08, $fc, $01, $60
-	db $08, $04, $00, $60
-
-Unknown_cf2b6:
-	db $f0, $f0, $00, $00
-	db $f0, $f8, $01, $00
-	db $f0, $00, $02, $00
-	db $f0, $08, $03, $00
-	db $f8, $f0, $04, $00
-	db $f8, $f8, $05, $00
-	db $f8, $00, $06, $00
-	db $f8, $08, $07, $00
-	db $00, $f0, $08, $00
-	db $00, $f8, $09, $00
-	db $00, $00, $0a, $00
-	db $00, $08, $0b, $00
-	db $08, $f0, $0c, $00
-	db $08, $f8, $0d, $00
-	db $08, $00, $0e, $00
-	db $08, $08, $0f, $00
-
-Unknown_cf2f6:
-	db $f0, $f0, $00, $00
-	db $f0, $f8, $01, $00
-	db $f8, $f0, $02, $00
-	db $f8, $f8, $03, $00
-	db $f0, $00, $01, $20
-	db $f0, $08, $00, $20
-	db $f8, $00, $03, $20
-	db $f8, $08, $02, $20
-	db $00, $f0, $02, $40
-	db $00, $f8, $03, $40
-	db $08, $f0, $00, $40
-	db $08, $f8, $01, $40
-	db $00, $00, $03, $60
-	db $00, $08, $02, $60
-	db $08, $00, $01, $60
-	db $08, $08, $00, $60
-
-Unknown_cf336:
-	db $ec, $ec, $00, $00
-	db $ec, $f4, $01, $00
-	db $f4, $ec, $02, $00
-	db $f4, $f4, $03, $00
-	db $ec, $04, $01, $20
-	db $ec, $0c, $00, $20
-	db $f4, $04, $03, $20
-	db $f4, $0c, $02, $20
-	db $04, $ec, $02, $40
-	db $04, $f4, $03, $40
-	db $0c, $ec, $00, $40
-	db $0c, $f4, $01, $40
-	db $04, $04, $03, $60
-	db $04, $0c, $02, $60
-	db $0c, $04, $01, $60
-	db $0c, $0c, $00, $60
-
-Unknown_cf376:
-	db $fc, $f8, $00, $00
-	db $fc, $00, $00, $20
-
-Unknown_cf37e:
-	db $00, $f8, $00, $00
-	db $00, $00, $00, $20
-
-Unknown_cf386:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $00, $20
-	db $00, $f8, $01, $00
-	db $00, $00, $01, $20
-
-Unknown_cf396:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $00, $40
-	db $00, $00, $01, $40
-
-Unknown_cf3a6:
-	db $fa, $f8, $02, $00
-	db $02, $f8, $03, $00
-	db $f6, $00, $02, $00
-	db $fe, $00, $03, $00
-
-Unknown_cf3b6:
-	db $08, $a8, $01, $00
-	db $00, $b0, $02, $00
-	db $00, $b8, $03, $00
-	db $00, $c0, $00, $00
-	db $00, $c8, $03, $00
-	db $00, $d0, $00, $00
-	db $00, $d8, $03, $00
-	db $00, $e0, $00, $00
-	db $00, $e8, $03, $00
-	db $00, $f0, $00, $00
-	db $00, $f8, $01, $00
-	db $f8, $00, $02, $00
-	db $f8, $08, $03, $00
-	db $f8, $10, $00, $00
-	db $f8, $18, $03, $00
-	db $f8, $20, $00, $00
-	db $f8, $28, $03, $00
-	db $f8, $30, $00, $00
-	db $f8, $38, $03, $00
-	db $f8, $40, $00, $00
-	db $f8, $48, $01, $00
-	db $f0, $50, $02, $00
-
-Unknown_cf40e:
-	db $ec, $f8, $00, $00
-	db $ec, $00, $00, $20
-	db $f4, $f8, $01, $00
-	db $f4, $00, $01, $20
-	db $fc, $fc, $02, $00
-
-Unknown_cf422:
-	db $e4, $f8, $00, $00
-	db $e4, $00, $00, $20
-	db $ec, $f8, $01, $00
-	db $ec, $00, $01, $20
-	db $f4, $fc, $02, $00
-	db $fc, $fc, $02, $00
-
-Unknown_cf43a:
-	db $dc, $f8, $00, $00
-	db $dc, $00, $00, $20
-	db $e4, $f8, $01, $00
-	db $e4, $00, $01, $20
-	db $ec, $fc, $02, $00
-	db $f4, $fc, $02, $00
-	db $fc, $fc, $02, $00
-
-Unknown_cf456:
-	db $d4, $f8, $00, $00
-	db $d4, $00, $00, $20
-	db $dc, $f8, $01, $00
-	db $dc, $00, $01, $20
-	db $e4, $fc, $02, $00
-	db $ec, $fc, $02, $00
-	db $f4, $fc, $02, $00
-	db $fc, $fc, $02, $00
-
-Unknown_cf476:
-	db $cc, $f8, $00, $00
-	db $cc, $00, $00, $20
-	db $d4, $f8, $01, $00
-	db $d4, $00, $01, $20
-	db $dc, $fc, $02, $00
-	db $e4, $fc, $02, $00
-	db $ec, $fc, $02, $00
-	db $f4, $fc, $02, $00
-	db $fc, $fc, $02, $00
-
-Unknown_cf49a:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $00, $20
-	db $00, $f8, $01, $00
-	db $00, $00, $00, $60
-
-Unknown_cf4aa:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $01, $60
-	db $00, $00, $00, $60
-
-Unknown_cf4ba:
-	db $f4, $f8, $00, $00
-	db $f4, $00, $01, $00
-	db $fc, $f8, $02, $00
-	db $fc, $00, $03, $00
-	db $04, $f8, $04, $00
-	db $04, $00, $05, $00
-
-Unknown_cf4d2:
-	db $fd, $f8, $00, $00
-	db $f9, $00, $00, $00
-
-Unknown_cf4da:
-	db $f8, $f4, $00, $00
-	db $f8, $04, $00, $00
-	db $e8, $f4, $00, $00
-	db $e8, $04, $00, $00
-	db $f0, $ec, $00, $00
-	db $f0, $f4, $01, $00
-	db $f0, $fc, $00, $00
-	db $f0, $04, $01, $00
-	db $f0, $0c, $00, $00
-	db $f8, $e4, $00, $00
-	db $f8, $ec, $01, $00
-	db $f8, $fc, $01, $00
-	db $f8, $0c, $01, $00
-	db $f8, $14, $00, $00
-
-Unknown_cf512:
-	db $f0, $f4, $00, $00
-	db $f0, $04, $00, $00
-	db $f8, $ec, $00, $00
-	db $f8, $f4, $01, $00
-	db $f8, $fc, $00, $00
-	db $f8, $04, $01, $00
-	db $f8, $0c, $00, $00
-	db $e0, $f4, $00, $00
-	db $e0, $04, $00, $00
-	db $e8, $ec, $00, $00
-	db $e8, $f4, $01, $00
-	db $e8, $fc, $00, $00
-	db $e8, $04, $01, $00
-	db $e8, $0c, $00, $00
-	db $f0, $e4, $00, $00
-	db $f0, $ec, $01, $00
-	db $f0, $fc, $01, $00
-	db $f0, $0c, $01, $00
-	db $f0, $14, $00, $00
-	db $f8, $e4, $01, $00
-	db $f8, $14, $01, $00
-
-Unknown_cf566:
-	db $cc, $f8, $00, $00
-	db $cc, $00, $01, $00
-	db $d4, $f8, $02, $00
-	db $d4, $00, $03, $00
-	db $dc, $f8, $04, $00
-	db $dc, $00, $05, $00
-	db $e4, $f8, $06, $00
-	db $e4, $00, $07, $00
-	db $ec, $f8, $08, $00
-	db $ec, $00, $09, $00
-	db $f4, $f8, $0a, $00
-	db $f4, $00, $0b, $00
-	db $fc, $f8, $0c, $00
-	db $fc, $00, $0d, $00
-
-Unknown_cf59e:
-	db $cc, $f8, $0c, $00
-	db $cc, $00, $0d, $00
-	db $d4, $f8, $08, $00
-	db $d4, $00, $09, $00
-	db $dc, $f8, $04, $00
-	db $dc, $00, $05, $00
-	db $e4, $f8, $00, $00
-	db $e4, $00, $01, $00
-	db $ec, $f8, $02, $00
-	db $ec, $00, $03, $00
-	db $f4, $00, $02, $00
-	db $f4, $08, $03, $00
-	db $fc, $00, $0a, $00
-	db $fc, $08, $0b, $00
-
-Unknown_cf5d6:
-	db $0c, $f0, $00, $40
-	db $0c, $f8, $02, $40
-	db $0c, $00, $02, $60
-	db $0c, $08, $00, $60
-	db $fc, $e8, $09, $20
-	db $fc, $f0, $08, $20
-	db $fc, $f8, $06, $00
-	db $fc, $00, $07, $00
-	db $fc, $08, $08, $00
-	db $fc, $10, $09, $00
-	db $04, $e8, $01, $20
-	db $04, $f0, $00, $20
-	db $04, $f8, $0c, $00
-	db $04, $00, $0d, $00
-	db $04, $08, $00, $00
-	db $04, $10, $01, $00
-	db $ec, $f0, $00, $00
-	db $ec, $f8, $02, $00
-	db $ec, $00, $02, $20
-	db $ec, $08, $00, $20
-	db $f4, $e8, $03, $20
-	db $f4, $f0, $02, $20
-	db $f4, $f8, $04, $00
-	db $f4, $00, $05, $00
-	db $f4, $08, $02, $00
-	db $f4, $10, $03, $00
-
-Unknown_cf63e:
-	db $ec, $f0, $00, $00
-	db $ec, $f8, $02, $00
-	db $ec, $00, $02, $20
-	db $ec, $08, $00, $20
-	db $f4, $ec, $00, $00
-	db $f4, $f4, $01, $00
-	db $f4, $f8, $05, $20
-	db $f4, $00, $04, $20
-	db $f4, $04, $01, $20
-	db $f4, $0c, $00, $20
-	db $fc, $ec, $02, $00
-	db $fc, $f4, $03, $00
-	db $fc, $f8, $07, $20
-	db $fc, $00, $06, $20
-	db $fc, $04, $03, $20
-	db $fc, $0c, $02, $20
-	db $04, $ec, $04, $00
-	db $04, $f4, $05, $00
-	db $04, $f8, $0d, $20
-	db $04, $00, $0c, $20
-	db $04, $04, $05, $20
-	db $04, $0c, $04, $20
-	db $0c, $f0, $00, $40
-	db $0c, $f8, $02, $40
-	db $0c, $00, $02, $60
-	db $0c, $08, $00, $60
-
-Unknown_cf6a6:
-	db $e8, $fc, $02, $00
-	db $10, $fc, $02, $60
-	db $fc, $e8, $01, $00
-	db $fc, $10, $01, $60
-	db $e0, $fc, $02, $00
-	db $18, $fc, $02, $60
-	db $fc, $e0, $01, $00
-	db $fc, $18, $01, $60
-
-Unknown_cf6c6:
-	db $ed, $ed, $00, $20
-	db $ed, $0b, $00, $00
-	db $0b, $ed, $00, $60
-	db $0b, $0b, $00, $40
-	db $e5, $e5, $00, $20
-	db $e5, $13, $00, $00
-	db $13, $e5, $00, $60
-	db $13, $13, $00, $40
-
-Unknown_cf6e6:
-	db $ec, $fc, $02, $00
-	db $0c, $fc, $02, $60
-	db $fc, $ec, $01, $00
-	db $fc, $0c, $01, $60
-
-Unknown_cf6f6:
-	db $f0, $f0, $00, $20
-	db $f0, $08, $00, $00
-	db $08, $f0, $00, $60
-	db $08, $08, $00, $40
-
-Unknown_cf706:
-	db $e8, $fc, $00, $00
-	db $f0, $fa, $00, $00
-	db $f8, $f8, $00, $00
-	db $00, $f8, $00, $00
-	db $08, $fa, $00, $00
-	db $10, $fc, $00, $00
-
-Unknown_cf71e:
-	db $fc, $f0, $00, $20
-	db $fa, $f8, $00, $20
-	db $fa, $00, $00, $00
-	db $fc, $08, $00, $00
-
-Unknown_cf72e:
-	db $fc, $f8, $00, $60
-	db $fc, $00, $00, $40
-
-Unknown_cf736:
-	db $fc, $fc, $00, $00
-	db $fc, $f4, $01, $00
-	db $fc, $fc, $01, $20
-	db $04, $f4, $01, $40
-	db $04, $fc, $01, $60
-
-Unknown_cf74a:
-	db $fc, $fc, $00, $00
-	db $02, $f6, $00, $00
-	db $02, $ee, $01, $00
-	db $02, $f6, $01, $20
-	db $0a, $ee, $01, $40
-	db $0a, $f6, $01, $60
-
-Unknown_cf762:
-	db $fc, $fc, $00, $00
-	db $02, $f6, $00, $00
-	db $08, $f0, $00, $00
-	db $08, $e8, $01, $00
-	db $08, $f0, $01, $20
-	db $10, $e8, $01, $40
-	db $10, $f0, $01, $60
-
-Unknown_cf77e:
-	db $fc, $fc, $00, $00
-	db $02, $f6, $00, $00
-	db $08, $f0, $00, $00
-	db $0e, $ea, $00, $00
-	db $0e, $e2, $01, $00
-	db $0e, $ea, $01, $20
-	db $16, $e2, $01, $40
-	db $16, $ea, $01, $60
-
-Unknown_cf79e:
-	db $fc, $fc, $00, $00
-	db $02, $f6, $00, $00
-	db $08, $f0, $00, $00
-	db $0e, $ea, $00, $00
-	db $14, $e4, $00, $00
-	db $14, $dc, $01, $00
-	db $14, $e4, $01, $20
-	db $1c, $dc, $01, $40
-	db $1c, $e4, $01, $60
-
-Unknown_cf7c2:
-	db $fc, $fc, $00, $00
-	db $02, $f6, $00, $00
-	db $08, $f0, $00, $00
-	db $0e, $ea, $00, $00
-	db $14, $e4, $00, $00
-	db $1a, $de, $00, $00
-	db $1a, $d6, $01, $00
-	db $1a, $de, $01, $20
-	db $22, $d6, $01, $40
-	db $22, $de, $01, $60
-
-Unknown_cf7ea:
-	db $fc, $f0, $00, $00
-	db $fc, $f8, $01, $00
-	db $fc, $00, $01, $20
-	db $fc, $08, $00, $20
-
-Unknown_cf7fa:
-	db $fc, $f0, $02, $00
-	db $fc, $f8, $01, $00
-	db $fc, $00, $01, $20
-	db $fc, $08, $02, $20
-
-Unknown_cf80a:
-	db $f8, $fc, $00, $00
-
-Unknown_cf80e:
-	db $00, $fc, $00, $00
-
-Unknown_cf812:
-	db $fc, $e4, $00, $00
-	db $fc, $ec, $01, $00
-	db $fc, $f4, $02, $00
-	db $fc, $fc, $03, $00
-	db $fc, $04, $04, $00
-	db $fc, $0c, $05, $00
-	db $fc, $14, $06, $00
-	db $f4, $0c, $07, $00
-	db $f4, $14, $08, $00
-
-Unknown_cf836:
-	db $f4, $e4, $08, $20
-	db $f4, $ec, $07, $20
-	db $fc, $e4, $06, $20
-	db $fc, $ec, $05, $20
-	db $fc, $f4, $04, $20
-	db $fc, $fc, $03, $20
-	db $fc, $04, $02, $20
-	db $fc, $0c, $01, $20
-	db $fc, $14, $00, $20
-
-Unknown_cf85a:
-	db $00, $e4, $00, $10
-	db $00, $ec, $01, $10
-	db $00, $f4, $02, $10
-	db $00, $fc, $03, $10
-	db $00, $04, $04, $10
-	db $00, $0c, $05, $10
-	db $00, $14, $06, $10
-
-Unknown_cf876:
-	db $f8, $e4, $00, $10
-	db $00, $e4, $01, $10
-	db $f8, $ec, $02, $10
-	db $00, $ec, $03, $10
-	db $f8, $f4, $04, $10
-	db $00, $f4, $05, $10
-	db $f8, $fc, $06, $10
-	db $00, $fc, $07, $10
-	db $f8, $04, $08, $10
-	db $00, $04, $09, $10
-	db $f8, $0c, $0a, $10
-	db $00, $0c, $0b, $10
-	db $f8, $14, $0c, $10
-	db $00, $14, $0d, $10
-
-Unknown_cf8ae:
-	db $00, $e8, $00, $11
-	db $00, $f0, $01, $11
-	db $00, $f8, $02, $11
-	db $00, $00, $03, $11
-	db $00, $08, $04, $11
-	db $00, $10, $05, $11
-
-Unknown_cf8c6:
-	db $00, $e8, $00, $11
-	db $08, $e8, $01, $11
-	db $00, $f0, $02, $11
-	db $08, $f0, $03, $11
-	db $00, $f8, $04, $11
-	db $08, $f8, $05, $11
-	db $00, $00, $06, $11
-	db $08, $00, $07, $11
-	db $00, $08, $08, $11
-	db $08, $08, $09, $11
-	db $00, $10, $0a, $11
-	db $08, $10, $0b, $11
-
-Unknown_cf8f6:
-	db $f4, $04, $00, $00
-	db $fc, $f4, $01, $00
-	db $fc, $fc, $02, $00
-	db $fc, $04, $03, $00
-	db $04, $f4, $04, $00
-
-Unknown_cf90a:
-	db $fc, $f4, $00, $00
-	db $fc, $fc, $01, $00
-	db $fc, $04, $02, $00
-
-Unknown_cf916:
-	db $e4, $0c, $01, $60
-
-Unknown_cf91a:
-	db $e4, $0c, $00, $00
-	db $e4, $04, $01, $60
-	db $ec, $0c, $01, $60
-
-Unknown_cf926:
-	db $e4, $0c, $01, $00
-	db $e4, $04, $00, $00
-	db $e4, $fc, $01, $60
-	db $ec, $0c, $00, $00
-	db $ec, $04, $01, $60
-	db $f4, $0c, $01, $60
-
-Unknown_cf93e:
-	db $e4, $f4, $01, $60
-	db $e4, $fc, $00, $00
-	db $e4, $04, $01, $00
-	db $ec, $fc, $01, $60
-	db $ec, $04, $00, $00
-	db $ec, $0c, $01, $00
-	db $f4, $04, $01, $60
-	db $f4, $0c, $00, $00
-	db $fc, $0c, $01, $60
-
-Unknown_cf962:
-	db $e4, $ec, $01, $60
-	db $e4, $f4, $00, $00
-	db $e4, $fc, $01, $00
-	db $ec, $f4, $01, $60
-	db $ec, $fc, $00, $00
-	db $ec, $04, $01, $00
-	db $f4, $fc, $01, $60
-	db $f4, $04, $00, $00
-	db $f4, $0c, $01, $00
-	db $fc, $04, $01, $60
-	db $fc, $0c, $00, $00
-	db $04, $0c, $01, $60
-
-Unknown_cf992:
-	db $e4, $ec, $00, $00
-	db $e4, $f4, $01, $00
-	db $ec, $ec, $01, $60
-	db $ec, $f4, $00, $00
-	db $ec, $fc, $01, $00
-	db $f4, $f4, $01, $60
-	db $f4, $fc, $00, $00
-	db $f4, $04, $01, $00
-	db $fc, $fc, $01, $60
-	db $fc, $04, $00, $00
-	db $fc, $0c, $01, $00
-	db $04, $04, $01, $60
-	db $04, $0c, $00, $00
-	db $0c, $0c, $01, $60
-
-Unknown_cf9ca:
-	db $e4, $ec, $01, $00
-	db $ec, $ec, $00, $00
-	db $ec, $f4, $01, $00
-	db $f4, $ec, $01, $60
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $fc, $f4, $01, $60
-	db $fc, $fc, $00, $00
-	db $fc, $04, $01, $00
-	db $04, $fc, $01, $60
-	db $04, $04, $00, $00
-	db $04, $0c, $01, $00
-	db $0c, $04, $01, $60
-	db $0c, $0c, $00, $00
-	db $14, $0c, $01, $60
-
-Unknown_cfa06:
-	db $f0, $f8, $00, $00
-	db $f8, $f8, $01, $00
-	db $f0, $00, $00, $20
-	db $f8, $00, $01, $20
-	db $00, $f8, $01, $40
-	db $08, $f8, $00, $40
-	db $00, $00, $01, $60
-	db $08, $00, $00, $60
-
-Unknown_cfa26:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $01, $60
-	db $00, $00, $00, $60
-
-Unknown_cfa36:
-	db $f4, $f8, $00, $00
-	db $f4, $00, $01, $00
-	db $fc, $f8, $02, $00
-	db $fc, $00, $03, $00
-	db $fc, $f8, $00, $00
-	db $fc, $00, $01, $00
-	db $04, $f8, $02, $00
-	db $04, $00, $03, $00
-	db $ec, $f8, $00, $00
-	db $ec, $00, $01, $00
-	db $f4, $f8, $02, $00
-	db $f4, $00, $03, $00
-	db $04, $f8, $00, $00
-	db $04, $00, $01, $00
-	db $0c, $f8, $02, $00
-	db $0c, $00, $03, $00
-
-Unknown_cfa76:
-	db $f0, $f8, $00, $00
-	db $f0, $00, $01, $00
-	db $f8, $f8, $02, $00
-	db $f8, $00, $03, $00
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $02, $00
-	db $00, $00, $03, $00
-	db $00, $f8, $00, $00
-	db $00, $00, $01, $00
-	db $08, $f8, $02, $00
-	db $08, $00, $03, $00
-
-Unknown_cfaa6:
-	db $fc, $fc, $00, $00
-	db $f8, $04, $00, $00
-	db $f4, $0c, $00, $00
-	db $f0, $14, $00, $00
-	db $ec, $1c, $00, $00
-	db $e8, $24, $00, $00
-	db $e0, $2c, $00, $00
-	db $dc, $34, $00, $00
-
-Unknown_cfac6:
-	db $ec, $fc, $00, $00
-	db $f4, $fc, $01, $00
-	db $fc, $fc, $02, $00
-	db $04, $fc, $01, $40
-	db $0c, $fc, $00, $40
-
-Unknown_cfada:
-	db $fc, $f0, $00, $00
-	db $fc, $f8, $01, $00
-	db $fc, $00, $02, $00
-	db $fc, $08, $03, $00
-
-Unknown_cfaea:
-	db $f8, $f4, $00, $00
-	db $f8, $fc, $01, $00
-	db $f8, $04, $02, $00
-	db $00, $f4, $03, $00
-	db $00, $fc, $04, $00
-	db $00, $04, $05, $00
-
-Unknown_cfb02:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $05, $00
-	db $00, $f8, $01, $00
-	db $00, $00, $05, $00
-
-Unknown_cfb12:
-	db $e4, $08, $00, $00
-	db $e4, $10, $01, $00
-	db $ec, $f8, $02, $00
-	db $ec, $00, $03, $00
-	db $ec, $08, $04, $00
-	db $ec, $10, $05, $00
-	db $ec, $18, $06, $00
-	db $f4, $f0, $07, $00
-	db $f4, $f8, $08, $00
-	db $f4, $00, $09, $00
-	db $f4, $08, $0a, $00
-	db $f4, $10, $0b, $00
-	db $f4, $18, $0c, $00
-	db $f4, $20, $0d, $00
-	db $fc, $e8, $0e, $00
-	db $fc, $f0, $0f, $00
-	db $fc, $f8, $10, $00
-	db $fc, $00, $11, $00
-	db $fc, $08, $12, $00
-	db $fc, $10, $13, $00
-	db $04, $d8, $14, $00
-	db $04, $e0, $15, $00
-	db $04, $e8, $16, $00
-	db $04, $f0, $17, $00
-	db $04, $f8, $18, $00
-	db $04, $00, $19, $00
-	db $04, $08, $1a, $00
-	db $04, $10, $1b, $00
-	db $04, $18, $1c, $00
-	db $0c, $d8, $1d, $00
-	db $0c, $e0, $1e, $00
-	db $0c, $f0, $1f, $00
-	db $0c, $f8, $20, $00
-	db $0c, $00, $21, $00
-	db $0c, $08, $22, $00
-	db $14, $00, $23, $00
-
-Unknown_cfba2:
-	db $04, $f8, $02, $00
-	db $04, $00, $03, $00
-	db $fc, $f8, $01, $00
-	db $fc, $00, $01, $20
-	db $f4, $f8, $00, $00
-	db $f4, $00, $00, $20
-
-Unknown_cfbba:
-	db $f8, $f0, $00, $00
-	db $f8, $f8, $01, $00
-	db $f8, $00, $02, $00
-	db $f8, $08, $03, $00
-	db $00, $f0, $04, $00
-	db $00, $f8, $05, $00
-	db $00, $00, $06, $00
-	db $00, $08, $07, $00
-
-Unknown_cfbda:
-	db $f4, $fc, $00, $00
-	db $fc, $fc, $00, $00
-	db $04, $fc, $00, $00
-	db $ec, $fc, $00, $00
-	db $0c, $fc, $00, $00
-	db $e4, $fc, $00, $00
-	db $14, $fc, $00, $00
-
-Unknown_cfbf6:
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $02, $00
-	db $fc, $f4, $03, $00
-	db $fc, $fc, $04, $00
-	db $fc, $04, $05, $00
-	db $04, $f4, $00, $40
-	db $04, $fc, $01, $40
-	db $04, $04, $02, $40
-
-Unknown_cfc1a:
-	db $fc, $f0, $00, $00
-	db $fc, $f8, $01, $00
-	db $fc, $00, $01, $20
-	db $fc, $08, $00, $20
-
-Unknown_cfc2a:
-	db $fc, $e8, $00, $00
-	db $fc, $f0, $01, $00
-	db $fc, $f8, $02, $00
-	db $fc, $00, $02, $20
-	db $fc, $08, $01, $20
-	db $fc, $10, $00, $20
-
-Unknown_cfc42:
-	db $f0, $f0, $00, $00
-	db $f0, $f8, $01, $00
-	db $f0, $00, $02, $00
-	db $f0, $08, $00, $20
-	db $f8, $f0, $03, $00
-	db $f8, $f8, $04, $00
-	db $f8, $00, $04, $20
-	db $f8, $08, $05, $00
-	db $00, $f0, $05, $60
-	db $00, $f8, $04, $40
-	db $00, $00, $04, $60
-	db $00, $08, $03, $60
-	db $08, $f0, $00, $40
-	db $08, $f8, $02, $60
-	db $08, $00, $01, $60
-	db $08, $08, $00, $60
-
-Unknown_cfc82:
-	db $f8, $f0, $00, $00
-	db $f8, $f8, $01, $00
-	db $f8, $00, $00, $60
-	db $00, $f8, $00, $00
-	db $00, $00, $01, $00
-	db $00, $08, $00, $60
-
-Unknown_cfc9a:
-	db $f8, $0c, $00, $00
-	db $f8, $14, $01, $00
-	db $00, $fc, $02, $00
-	db $00, $04, $03, $00
-	db $00, $0c, $04, $00
-	db $00, $14, $05, $00
-
-Unknown_cfcb2:
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $60
-	db $00, $f8, $01, $00
-	db $00, $00, $01, $20
-
-Unknown_cfcc2:
-	db $f0, $9c, $00, $00
-	db $e0, $ac, $00, $00
-	db $f8, $bc, $00, $00
-	db $d8, $cc, $00, $00
-	db $e8, $dc, $00, $00
-	db $d8, $ec, $00, $00
-	db $e8, $fc, $00, $00
-	db $e8, $04, $00, $00
-	db $d8, $14, $00, $00
-	db $00, $24, $00, $00
-	db $f0, $34, $00, $00
-	db $e0, $44, $00, $00
-	db $f0, $54, $00, $00
-; cfcf6
-
-
-AnimObjGFX: ; cfcf6
-
-object_gfx: MACRO
-; label, # tiles
-	db \2
-	db BANK(\1)
-	dw \1
-ENDM
-
-	object_gfx AnimObj00GFX, 0
-	object_gfx AnimObj01GFX, 21
-	object_gfx AnimObj02GFX, 6
-	object_gfx AnimObj03GFX, 6
-	object_gfx AnimObj04GFX, 20
-	object_gfx AnimObj05GFX, 26
-	object_gfx AnimObj06GFX, 18
-	object_gfx AnimObj07GFX, 12
-	object_gfx AnimObj08GFX, 9
-	object_gfx AnimObj09GFX, 17
-	object_gfx AnimObj10GFX, 6
-	object_gfx AnimObj11GFX, 10
-	object_gfx AnimObj12GFX, 9
-	object_gfx AnimObj13GFX, 13
-	object_gfx AnimObj14GFX, 16
-	object_gfx AnimObj15GFX, 2
-	object_gfx AnimObj16GFX, 11
-	object_gfx AnimObj17GFX, 9
-	object_gfx AnimObj18GFX, 9
-	object_gfx AnimObj19GFX, 19
-	object_gfx AnimObj20GFX, 10
-	object_gfx AnimObj21GFX, 12
-	object_gfx AnimObj22GFX, 18
-	object_gfx AnimObj23GFX, 13
-	object_gfx AnimObj24GFX, 10
-	object_gfx AnimObj25GFX, 27
-	object_gfx AnimObj26GFX, 12
-	object_gfx AnimObj27GFX, 14
-	object_gfx AnimObj28GFX, 16
-	object_gfx AnimObj29GFX, 7
-	object_gfx AnimObj30GFX, 8
-	object_gfx AnimObj31GFX, 40
-	object_gfx AnimObj32GFX, 36
-	object_gfx AnimObj33GFX, 16
-	object_gfx AnimObj34GFX, 48
-	object_gfx AnimObj35GFX, 18
-	object_gfx AnimObj36GFX, 38
-	object_gfx AnimObj37GFX, 35
-	object_gfx AnimObj38GFX, 18
-	object_gfx AnimObj39GFX, 24
-	object_gfx NULL, 1
-	object_gfx NULL, 1
-; cfd9e
+INCLUDE "battle/objects/engine.asm"
+INCLUDE "battle/objects/data.asm"
+INCLUDE "battle/objects/functions.asm"
+INCLUDE "battle/objects/helpers.asm"
+INCLUDE "battle/objects/framesets.asm"
+INCLUDE "battle/objects/oam.asm"
+INCLUDE "battle/objects/gfx_headers.asm"
--- a/battle/anims.asm
+++ b/battle/anims.asm
@@ -290,19 +290,19 @@
 
 BattleAnim_SweetScent2: ; c929c
 	anim_2gfx ANIM_GFX_FLOWER, ANIM_GFX_MISC
-	anim_obj ANIM_OBJ_FLOWER, 64, 96, $2
+	anim_obj ANIM_OBJ_FLOWER,   8, 0,  12, 0, $2
 	anim_wait 2
-	anim_obj ANIM_OBJ_FLOWER, 64, 80, $2
+	anim_obj ANIM_OBJ_FLOWER,   8, 0,  10, 0, $2
 	anim_wait 64
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $15
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $2a
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $3f
-	anim_bgeffect $6, $0, $2, $0
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $15
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $2a
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $3f
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_wait 128
 	anim_ret
 ; c92c1
 
-BattleAnim_ThrowPokeBall: ; c92c1
+BattleAnim_ThrowPokeBall
 	anim_jumpif NO_ITEM, .TheTrainerBlockedTheBall
 	anim_jumpif MASTER_BALL, .MasterBall
 	anim_jumpif ULTRA_BALL, .UltraBall
@@ -309,110 +309,110 @@
 	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
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_POKE_BALL,   8, 4,  11, 4, $40
 	anim_wait 36
-	anim_obj $15, 136, 65, $0
+	anim_obj ANIM_OBJ_POKE_BALL, -15, 0,   8, 1, $0
 	anim_setobj $2, $7
 	anim_wait 16
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 136, 64, $10
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C, -15, 0,   8, 0, $10
 	anim_wait 16
 	anim_jump .Shake
 ; c92f2
 
-.TheTrainerBlockedTheBall: ; c92f2
+.TheTrainerBlockedTheBall
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_HIT
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $16, 64, 92, $20
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_16,   8, 0,  11, 4, $20
 	anim_wait 20
-	anim_obj $1, 112, 40, $0
+	anim_obj ANIM_OBJ_01,  14, 0,   5, 0, $0
 	anim_wait 32
 	anim_ret
 ; c9305
 
-.UltraBall: ; c9305
+.UltraBall
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $15, 68, 92, $40
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_POKE_BALL,   8, 4,  11, 4, $40
 	anim_wait 36
-	anim_obj $15, 136, 65, $0
+	anim_obj ANIM_OBJ_POKE_BALL, -15, 0,   8, 1, $0
 	anim_setobj $2, $7
 	anim_wait 16
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 136, 64, $10
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C, -15, 0,   8, 0, $10
 	anim_wait 16
 	anim_jump .Shake
 ; c9326
 
-.GreatBall: ; c9326
+.GreatBall
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $15, 68, 92, $40
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_POKE_BALL,   8, 4,  11, 4, $40
 	anim_wait 36
-	anim_obj $15, 136, 65, $0
+	anim_obj ANIM_OBJ_POKE_BALL, -15, 0,   8, 1, $0
 	anim_setobj $2, $7
 	anim_wait 16
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 136, 64, $10
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C, -15, 0,   8, 0, $10
 	anim_wait 16
 	anim_jump .Shake
 ; c9347
 
-.MasterBall: ; c9347
+.MasterBall
 	anim_3gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE, ANIM_GFX_SPEED
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $15, 64, 92, $20
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_POKE_BALL,   8, 0,  11, 4, $20
 	anim_wait 36
-	anim_obj $15, 136, 65, $0
+	anim_obj ANIM_OBJ_POKE_BALL, -15, 0,   8, 1, $0
 	anim_setobj $2, $7
 	anim_wait 16
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 136, 64, $10
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C, -15, 0,   8, 0, $10
 	anim_wait 24
-	anim_sound $1, SFX_MASTER_BALL
-	anim_obj $2b, 136, 56, $30
-	anim_obj $2b, 136, 56, $31
-	anim_obj $2b, 136, 56, $32
-	anim_obj $2b, 136, 56, $33
-	anim_obj $2b, 136, 56, $34
-	anim_obj $2b, 136, 56, $35
-	anim_obj $2b, 136, 56, $36
-	anim_obj $2b, 136, 56, $37
+	anim_sound 0, 1, SFX_MASTER_BALL
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $30
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $31
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $32
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $33
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $34
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $35
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $36
+	anim_obj ANIM_OBJ_2B, -15, 0,   7, 0, $37
 	anim_wait 64
-.Shake: ; c9392
+.Shake
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
 	anim_wait 8
-	anim_incobj $2
+	anim_incobj  2
 	anim_wait 16
-	anim_sound $1, SFX_CHANGE_DEX_MODE
-	anim_incobj $1
+	anim_sound 0, 1, SFX_CHANGE_DEX_MODE
+	anim_incobj  1
 	anim_wait 32
-	anim_sound $1, SFX_BALL_BOUNCE
+	anim_sound 0, 1, SFX_BALL_BOUNCE
 	anim_wait 32
 	anim_wait 32
 	anim_wait 32
 	anim_wait 8
 	anim_setvar $0
-.Loop: ; c93aa
+.Loop
 	anim_wait 48
 	anim_checkpokeball
 	anim_jumpvar $1, .Click
 	anim_jumpvar $2, .BreakFree
-	anim_incobj $1
-	anim_sound $1, SFX_BALL_WIGGLE
+	anim_incobj  1
+	anim_sound 0, 1, SFX_BALL_WIGGLE
 	anim_jump .Loop
 ; c93bc
 
-.Click: ; c93bc
+.Click
 	anim_clearsprites
 	anim_ret
 ; c93be
 
-.BreakFree: ; c93be
+.BreakFree
 	anim_setobj $1, $b
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 136, 64, $10
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C, -15, 0,   8, 0, $10
 	anim_wait 2
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $0, $0
 	anim_wait 32
@@ -420,72 +420,69 @@
 ; c93d1
 
 BattleAnim_SendOutMon: ; c93d1
-	anim_jumpif $0, BattleAnim_SendOutMon_branch_c9471
-	anim_jumpif $1, BattleAnim_SendOutMon_branch_c941c
-	anim_jumpif $2, BattleAnim_SendOutMon_branch_c93fa
+	anim_jumpif $0, .Normal
+	anim_jumpif $1, .Shiny
+	anim_jumpif $2, .Unknown
 	anim_1gfx ANIM_GFX_SMOKE
-	anim_call BattleAnim_SendOutMon_branch_cbca7
-	anim_bgeffect $2b, $0, $1, $0
-	anim_sound $0, SFX_BALL_POOF
-	anim_obj $1b, 48, 96, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_2B, $0, $1, $0
+	anim_sound 0, 0, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1B,   6, 0,  12, 0, $0
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $1, $0
 	anim_wait 128
 	anim_wait 4
-	anim_call BattleAnim_SendOutMon_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
-; c93fa
 
-BattleAnim_SendOutMon_branch_c93fa: ; c93fa
+.Unknown
 	anim_1gfx ANIM_GFX_SMOKE
-	anim_call BattleAnim_SendOutMon_branch_cbca7
-	anim_bgeffect $2a, $0, $1, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_2A, $0, $1, $0
 	anim_wait 1
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 4
-	anim_sound $0, SFX_BALL_POOF
-	anim_obj $1b, 48, 96, $0
-	anim_incbgeffect $2a
+	anim_sound 0, 0, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1B,   6, 0,  12, 0, $0
+	anim_incbgeffect ANIM_BG_2A
 	anim_wait 96
-	anim_incbgeffect $2a
-	anim_call BattleAnim_SendOutMon_branch_cbcb7
+	anim_incbgeffect ANIM_BG_2A
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
-; c941c
 
-BattleAnim_SendOutMon_branch_c941c: ; c941c
+.Shiny
 	anim_1gfx ANIM_GFX_SPEED
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_bgeffect $6, $0, $2, $0
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $0
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $8
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $8
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $10
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $10
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $18
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $18
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $20
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $20
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $28
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $28
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $30
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $30
 	anim_wait 4
-	anim_sound $0, SFX_SHINE
-	anim_obj $6d, 48, 96, $38
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_6D,   6, 0,  12, 0, $38
 	anim_wait 32
 	anim_ret
-; c9471
 
-BattleAnim_SendOutMon_branch_c9471: ; c9471
+.Normal
 	anim_1gfx ANIM_GFX_SMOKE
-	anim_sound $0, SFX_BALL_POOF
-	anim_obj $1c, 44, 96, $0
+	anim_sound 0, 0, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C,   5, 4,  12, 0, $0
 	anim_wait 4
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $1, $0
 	anim_wait 32
@@ -493,7 +490,7 @@
 ; c9483
 
 BattleAnim_ReturnMon: ; c9483
-	anim_sound $0, SFX_BALL_POOF
+	anim_sound 0, 0, SFX_BALL_POOF
 BattleAnim_BatonPass_branch_c9486: ; c9486
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $1, $0
 	anim_wait 32
@@ -502,10 +499,10 @@
 
 BattleAnim_Confused: ; c948d
 	anim_1gfx ANIM_GFX_STATUS
-	anim_sound $0, SFX_KINESIS
-	anim_obj ANIM_OBJ_CHICK, 44, 56, $15
-	anim_obj ANIM_OBJ_CHICK, 44, 56, $aa
-	anim_obj ANIM_OBJ_CHICK, 44, 56, $bf
+	anim_sound 0, 0, SFX_KINESIS
+	anim_obj ANIM_OBJ_CHICK,   5, 4,   7, 0, $15
+	anim_obj ANIM_OBJ_CHICK,   5, 4,   7, 0, $aa
+	anim_obj ANIM_OBJ_CHICK,   5, 4,   7, 0, $bf
 	anim_wait 96
 	anim_ret
 ; c94a3
@@ -512,11 +509,11 @@
 
 BattleAnim_Slp: ; c94a3
 	anim_1gfx ANIM_GFX_STATUS
-	anim_sound $0, SFX_TAIL_WHIP
-BattleAnim_Slp_branch_c94a8: ; c94a8
-	anim_obj $54, 64, 80, $0
+	anim_sound 0, 0, SFX_TAIL_WHIP
+.loop
+	anim_obj ANIM_OBJ_54,   8, 0,  10, 0, $0
 	anim_wait 40
-	anim_loop $3, BattleAnim_Slp_branch_c94a8
+	anim_loop 3, .loop
 	anim_wait 32
 	anim_ret
 ; c94b4
@@ -523,11 +520,11 @@
 
 BattleAnim_Brn: ; c94b4
 	anim_1gfx ANIM_GFX_FIRE
-BattleAnim_Brn_branch_c94b6: ; c94b6
-	anim_sound $0, SFX_BURN
-	anim_obj $10, 56, 88, $10
+.loop
+	anim_sound 0, 0, SFX_BURN
+	anim_obj ANIM_OBJ_BURNED,   7, 0,  11, 0, $10
 	anim_wait 4
-	anim_loop $3, BattleAnim_Brn_branch_c94b6
+	anim_loop 3, .loop
 	anim_wait 6
 	anim_ret
 ; c94c5
@@ -534,11 +531,11 @@
 
 BattleAnim_Psn: ; c94c5
 	anim_1gfx ANIM_GFX_POISON
-	anim_sound $0, SFX_POISON
-	anim_obj ANIM_OBJ_SKULL, 64, 56, $0
+	anim_sound 0, 0, SFX_POISON
+	anim_obj ANIM_OBJ_SKULL,   8, 0,   7, 0, $0
 	anim_wait 8
-	anim_sound $0, SFX_POISON
-	anim_obj ANIM_OBJ_SKULL, 48, 56, $0
+	anim_sound 0, 0, SFX_POISON
+	anim_obj ANIM_OBJ_SKULL,   6, 0,   7, 0, $0
 	anim_wait 8
 	anim_ret
 ; c94da
@@ -545,14 +542,14 @@
 
 BattleAnim_Sap: ; c94da
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 128, 48, $2
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45,  16, 0,   6, 0, $2
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 64, $3
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   8, 0, $3
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 32, $4
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   4, 0, $4
 	anim_wait 16
 	anim_ret
 ; c94f8
@@ -559,10 +556,10 @@
 
 BattleAnim_Frz: ; c94f8
 	anim_1gfx ANIM_GFX_ICE
-	anim_obj ANIM_OBJ_FROZEN, 44, 110, $0
-	anim_sound $0, SFX_SHINE
+	anim_obj ANIM_OBJ_FROZEN,   5, 4,  13, 6, $0
+	anim_sound 0, 0, SFX_SHINE
 	anim_wait 16
-	anim_sound $0, SFX_SHINE
+	anim_sound 0, 0, SFX_SHINE
 	anim_wait 16
 	anim_ret
 ; c9508
@@ -569,10 +566,10 @@
 
 BattleAnim_Par: ; c9508
 	anim_1gfx ANIM_GFX_STATUS
-	anim_bgeffect $6, $0, $2, $0
-	anim_sound $0, SFX_THUNDERSHOCK
-	anim_obj ANIM_OBJ_PARALYZED, 20, 88, $42
-	anim_obj ANIM_OBJ_PARALYZED, 76, 88, $c2
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_sound 0, 0, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_PARALYZED,   2, 4,  11, 0, $42
+	anim_obj ANIM_OBJ_PARALYZED,   9, 4,  11, 0, $c2
 	anim_wait 128
 	anim_ret
 ; c951e
@@ -579,11 +576,11 @@
 
 BattleAnim_InLove: ; c951e
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_sound $0, SFX_LICK
-	anim_obj ANIM_OBJ_HEART, 64, 76, $0
+	anim_sound 0, 0, SFX_LICK
+	anim_obj ANIM_OBJ_HEART,   8, 0,   9, 4, $0
 	anim_wait 32
-	anim_sound $0, SFX_LICK
-	anim_obj ANIM_OBJ_HEART, 36, 72, $0
+	anim_sound 0, 0, SFX_LICK
+	anim_obj ANIM_OBJ_HEART,   4, 4,   9, 0, $0
 	anim_wait 32
 	anim_ret
 ; c9533
@@ -590,15 +587,15 @@
 
 BattleAnim_InSandstorm: ; c9533
 	anim_1gfx ANIM_GFX_POWDER
-	anim_obj $a2, 88, 0, $0
+	anim_obj ANIM_OBJ_A2,  11, 0,   0, 0, $0
 	anim_wait 8
-	anim_obj $a2, 72, 0, $1
+	anim_obj ANIM_OBJ_A2,   9, 0,   0, 0, $1
 	anim_wait 8
-	anim_obj $a2, 56, 0, $2
-BattleAnim_InSandstorm_branch_c9546: ; c9546
-	anim_sound $1, SFX_MENU
+	anim_obj ANIM_OBJ_A2,   7, 0,   0, 0, $2
+.loop
+	anim_sound 0, 1, SFX_MENU
 	anim_wait 8
-	anim_loop $6, BattleAnim_InSandstorm_branch_c9546
+	anim_loop 6, .loop
 	anim_wait 8
 	anim_ret
 ; c9550
@@ -605,8 +602,8 @@
 
 BattleAnim_InNightmare: ; c9550
 	anim_1gfx ANIM_GFX_ANGELS
-	anim_sound $0, SFX_BUBBLEBEAM
-	anim_obj $95, 68, 80, $0
+	anim_sound 0, 0, SFX_BUBBLEBEAM
+	anim_obj ANIM_OBJ_95,   8, 4,  10, 0, $0
 	anim_wait 40
 	anim_ret
 ; c955c
@@ -614,11 +611,11 @@
 BattleAnim_InWhirlpool: ; c955c
 	anim_1gfx ANIM_GFX_WIND
 	anim_bgeffect ANIM_BG_WHIRLPOOL, $0, $0, $0
-	anim_sound $1, SFX_SURF
-BattleAnim_InWhirlpool_branch_c9566: ; c9566
-	anim_obj ANIM_OBJ_GUST, 132, 72, $0
+	anim_sound 0, 1, SFX_SURF
+.loop
+	anim_obj ANIM_OBJ_GUST, -16, 4,   9, 0, $0
 	anim_wait 6
-	anim_loop $6, BattleAnim_InWhirlpool_branch_c9566
+	anim_loop 6, .loop
 	anim_incbgeffect ANIM_BG_WHIRLPOOL
 	anim_wait 1
 	anim_ret
@@ -626,8 +623,8 @@
 
 BattleAnim_HitConfusion: ; c9574
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $0, SFX_POUND
-	anim_obj $4, 44, 96, $0
+	anim_sound 0, 0, SFX_POUND
+	anim_obj ANIM_OBJ_04,   5, 4,  12, 0, $0
 	anim_wait 16
 	anim_ret
 ; c9580
@@ -637,47 +634,47 @@
 ; c9581
 
 BattleAnim_EnemyDamage: ; c9581
-BattleAnim_EnemyDamage_branch_c9581: ; c9581
+.loop
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $0, $0
 	anim_wait 5
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 5
-	anim_loop $3, BattleAnim_EnemyDamage_branch_c9581
+	anim_loop 3, .loop
 	anim_ret
 ; c9592
 
 BattleAnim_EnemyStatDown: ; c9592
-	anim_call BattleAnim_EnemyStatDown_branch_cbcc2
+	anim_call BattleAnim_FollowEnemyFeet_1
 	anim_bgeffect ANIM_BG_VIBRATE_MON, $0, $0, $0
 	anim_wait 40
-	anim_call BattleAnim_EnemyStatDown_branch_cbcd2
+	anim_call BattleAnim_ShowMon_1
 	anim_wait 1
 	anim_ret
 ; c95a0
 
 BattleAnim_PlayerStatDown: ; c95a0
-	anim_call BattleAnim_PlayerStatDown_branch_cbcc2
+	anim_call BattleAnim_FollowEnemyFeet_1
 	anim_bgeffect ANIM_BG_WOBBLE_MON, $0, $0, $0
 	anim_wait 40
-	anim_call BattleAnim_PlayerStatDown_branch_cbcd2
+	anim_call BattleAnim_ShowMon_1
 	anim_wait 1
 	anim_ret
 ; c95ae
 
 BattleAnim_PlayerDamage: ; c95ae
-	anim_bgeffect $20, $20, $2, $20
+	anim_bgeffect ANIM_BG_20, $20, $2, $20
 	anim_wait 40
 	anim_ret
 ; c95b5
 
 BattleAnim_Wobble: ; c95b5
-	anim_bgeffect $35, $0, $0, $0
+	anim_bgeffect ANIM_BG_35, $0, $0, $0
 	anim_wait 40
 	anim_ret
 ; c95bc
 
 BattleAnim_Shake: ; c95bc
-	anim_bgeffect $1f, $20, $2, $40
+	anim_bgeffect ANIM_BG_1F, $20, $2, $40
 	anim_wait 40
 	anim_ret
 ; c95c3
@@ -684,10 +681,10 @@
 
 BattleAnim_Pound: ; c95c3
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_POUND
-	anim_obj $8, 136, 56, $0
+	anim_sound 0, 1, SFX_POUND
+	anim_obj ANIM_OBJ_08, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 56, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; c95d5
@@ -694,20 +691,20 @@
 
 BattleAnim_KarateChop: ; c95d5
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_KARATE_CHOP
-	anim_obj $8, 136, 40, $0
+	anim_sound 0, 1, SFX_KARATE_CHOP
+	anim_obj ANIM_OBJ_08, -15, 0,   5, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 40, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   5, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_KARATE_CHOP
-	anim_obj $8, 136, 44, $0
+	anim_sound 0, 1, SFX_KARATE_CHOP
+	anim_obj ANIM_OBJ_08, -15, 0,   5, 4, $0
 	anim_wait 6
-	anim_obj $1, 136, 44, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   5, 4, $0
 	anim_wait 6
-	anim_sound $1, SFX_KARATE_CHOP
-	anim_obj $8, 136, 48, $0
+	anim_sound 0, 1, SFX_KARATE_CHOP
+	anim_obj ANIM_OBJ_08, -15, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 48, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; c9605
@@ -715,19 +712,19 @@
 BattleAnim_Doubleslap: ; c9605
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_Doubleslap_branch_c961b
-	anim_sound $1, SFX_DOUBLESLAP
-	anim_obj $8, 144, 48, $0
+	anim_sound 0, 1, SFX_DOUBLESLAP
+	anim_obj ANIM_OBJ_08, -14, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 144, 48, $0
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; c961b
 
 BattleAnim_Doubleslap_branch_c961b: ; c961b
-	anim_sound $1, SFX_DOUBLESLAP
-	anim_obj $8, 120, 48, $0
+	anim_sound 0, 1, SFX_DOUBLESLAP
+	anim_obj ANIM_OBJ_08,  15, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 120, 48, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; c962b
@@ -735,19 +732,19 @@
 BattleAnim_CometPunch: ; c962b
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_CometPunch_branch_c9641
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $6, 144, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_06, -14, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 144, 48, $0
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; c9641
 
 BattleAnim_CometPunch_branch_c9641: ; c9641
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $6, 120, 64, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_06,  15, 0,   8, 0, $0
 	anim_wait 6
-	anim_obj $1, 120, 64, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   8, 0, $0
 	anim_wait 8
 	anim_ret
 ; c9651
@@ -755,37 +752,36 @@
 BattleAnim_Bide_branch_c9651: ; c9651
 BattleAnim_MegaPunch: ; c9651
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_wait 48
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-BattleAnim_Bide_branch_c965e: ; c965e
-BattleAnim_MegaPunch_branch_c965e: ; c965e
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $6, 136, 56, $0
-	anim_obj $0, 136, 56, $0
+.loop
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_06, -15, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $6, 136, 56, $0
+	anim_obj ANIM_OBJ_06, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_loop $3, BattleAnim_Bide_branch_c965e
+	anim_loop 3, .loop
 	anim_ret
 ; c9677
 
 BattleAnim_Stomp: ; c9677
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_STOMP
-	anim_obj $7, 136, 40, $0
+	anim_sound 0, 1, SFX_STOMP
+	anim_obj ANIM_OBJ_07, -15, 0,   5, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 40, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   5, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_STOMP
-	anim_obj $7, 136, 44, $0
+	anim_sound 0, 1, SFX_STOMP
+	anim_obj ANIM_OBJ_07, -15, 0,   5, 4, $0
 	anim_wait 6
-	anim_obj $1, 136, 44, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   5, 4, $0
 	anim_wait 6
-	anim_sound $1, SFX_STOMP
-	anim_obj $7, 136, 48, $0
+	anim_sound 0, 1, SFX_STOMP
+	anim_obj ANIM_OBJ_07, -15, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 48, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; c96a7
@@ -793,19 +789,19 @@
 BattleAnim_DoubleKick: ; c96a7
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_DoubleKick_branch_c96bd
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 144, 48, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07, -14, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 144, 48, $0
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; c96bd
 
 BattleAnim_DoubleKick_branch_c96bd: ; c96bd
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 120, 64, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07,  15, 0,   8, 0, $0
 	anim_wait 6
-	anim_obj $1, 120, 64, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   8, 0, $0
 	anim_wait 8
 	anim_ret
 ; c96cd
@@ -813,14 +809,14 @@
 BattleAnim_JumpKick: ; c96cd
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_JumpKick_branch_c96f1
-	anim_sound $1, SFX_JUMP_KICK
-	anim_obj $7, 112, 72, $0
-	anim_obj $7, 100, 60, $0
+	anim_sound 0, 1, SFX_JUMP_KICK
+	anim_obj ANIM_OBJ_07,  14, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_07,  12, 4,   7, 4, $0
 	anim_setobj $1, $2
 	anim_setobj $2, $2
 	anim_wait 24
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $4, 136, 48, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_04, -15, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; c96f1
@@ -827,8 +823,8 @@
 
 BattleAnim_JumpKick_branch_c96f1: ; c96f1
 	anim_wait 8
-	anim_sound $0, SFX_DOUBLE_KICK
-	anim_obj $4, 44, 88, $0
+	anim_sound 0, 0, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_04,   5, 4,  11, 0, $0
 	anim_wait 16
 	anim_ret
 ; c96fc
@@ -835,15 +831,15 @@
 
 BattleAnim_HiJumpKick: ; c96fc
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_jumpif $1, BattleAnim_HiJumpKick_branch_c971e
 	anim_wait 32
-	anim_sound $1, SFX_JUMP_KICK
-	anim_obj $7, 112, 72, $0
+	anim_sound 0, 1, SFX_JUMP_KICK
+	anim_obj ANIM_OBJ_07,  14, 0,   9, 0, $0
 	anim_setobj $1, $2
 	anim_wait 16
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $4, 136, 48, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_04, -15, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; c971e
@@ -850,8 +846,8 @@
 
 BattleAnim_HiJumpKick_branch_c971e: ; c971e
 	anim_wait 16
-	anim_sound $0, SFX_DOUBLE_KICK
-	anim_obj $4, 44, 88, $0
+	anim_sound 0, 0, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_04,   5, 4,  11, 0, $0
 	anim_wait 16
 	anim_ret
 ; c9729
@@ -858,11 +854,11 @@
 
 BattleAnim_RollingKick: ; c9729
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 112, 56, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07,  14, 0,   7, 0, $0
 	anim_setobj $1, $3
 	anim_wait 12
-	anim_obj $1, 136, 48, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; c973e
@@ -869,27 +865,27 @@
 
 BattleAnim_MegaKick: ; c973e
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_wait 67
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-BattleAnim_MegaKick_branch_c974b: ; c974b
-	anim_sound $1, SFX_MEGA_KICK
-	anim_obj $7, 136, 56, $0
-	anim_obj $0, 136, 56, $0
+.loop
+	anim_sound 0, 1, SFX_MEGA_KICK
+	anim_obj ANIM_OBJ_07, -15, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $7, 136, 56, $0
+	anim_obj ANIM_OBJ_07, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_loop $3, BattleAnim_MegaKick_branch_c974b
+	anim_loop 3, .loop
 	anim_ret
 ; c9764
 
 BattleAnim_HyperFang: ; c9764
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $20, $1, $0
-	anim_sound $1, SFX_BITE
-	anim_obj $9, 136, 56, $0
+	anim_bgeffect ANIM_BG_1F, $20, $1, $0
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_09, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 56, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; c977b
@@ -896,38 +892,38 @@
 
 BattleAnim_SuperFang: ; c977b
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_wait 48
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-BattleAnim_SuperFang_branch_c9788: ; c9788
-	anim_sound $1, SFX_BITE
-	anim_obj $9, 136, 56, $0
-	anim_obj $0, 136, 56, $0
+.loop
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_09, -15, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $9, 136, 56, $0
+	anim_obj ANIM_OBJ_09, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_loop $3, BattleAnim_SuperFang_branch_c9788
+	anim_loop 3, .loop
 	anim_ret
 ; c97a1
 
 BattleAnim_Ember: ; c97a1
 	anim_1gfx ANIM_GFX_FIRE
-	anim_sound $1a, SFX_EMBER
-	anim_obj $b, 64, 96, $12
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0B,   8, 0,  12, 0, $12
 	anim_wait 4
-	anim_sound $1a, SFX_EMBER
-	anim_obj $b, 64, 100, $14
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0B,   8, 0,  12, 4, $14
 	anim_wait 4
-	anim_sound $1a, SFX_EMBER
-	anim_obj $b, 64, 84, $13
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0B,   8, 0,  10, 4, $13
 	anim_wait 16
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_sound $1, SFX_EMBER
-	anim_obj $b, 120, 68, $30
-	anim_obj $b, 132, 68, $30
-	anim_obj $b, 144, 68, $30
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_sound 0, 1, SFX_EMBER
+	anim_obj ANIM_OBJ_0B,  15, 0,   8, 4, $30
+	anim_obj ANIM_OBJ_0B, -16, 4,   8, 4, $30
+	anim_obj ANIM_OBJ_0B, -14, 0,   8, 4, $30
 	anim_wait 32
 	anim_ret
 ; c97d8
@@ -934,7 +930,7 @@
 
 BattleAnim_FirePunch: ; c97d8
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_FIRE
-	anim_obj $a, 136, 56, $43
+	anim_obj ANIM_OBJ_0A, -15, 0,   7, 0, $43
 	anim_call BattleAnim_FirePunch_branch_cbbcc
 	anim_wait 16
 	anim_ret
@@ -942,20 +938,20 @@
 
 BattleAnim_FireSpin: ; c97e5
 	anim_1gfx ANIM_GFX_FIRE
-BattleAnim_FireSpin_branch_c97e7: ; c97e7
-	anim_sound $1a, SFX_EMBER
-	anim_obj $e, 64, 88, $4
+.loop
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0E,   8, 0,  11, 0, $4
 	anim_wait 2
-	anim_sound $1a, SFX_EMBER
-	anim_obj $e, 64, 96, $3
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0E,   8, 0,  12, 0, $3
 	anim_wait 2
-	anim_sound $1a, SFX_EMBER
-	anim_obj $e, 64, 88, $3
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0E,   8, 0,  11, 0, $3
 	anim_wait 2
-	anim_sound $1a, SFX_EMBER
-	anim_obj $e, 64, 96, $4
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0E,   8, 0,  12, 0, $4
 	anim_wait 2
-	anim_loop $2, BattleAnim_FireSpin_branch_c97e7
+	anim_loop 2, .loop
 	anim_wait 96
 	anim_ret
 ; c9811
@@ -962,11 +958,11 @@
 
 BattleAnim_DragonRage: ; c9811
 	anim_1gfx ANIM_GFX_FIRE
-BattleAnim_DragonRage_branch_c9813: ; c9813
-	anim_sound $1a, SFX_EMBER
-	anim_obj $c, 64, 92, $0
+.loop
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0C,   8, 0,  11, 4, $0
 	anim_wait 3
-	anim_loop $10, BattleAnim_DragonRage_branch_c9813
+	anim_loop 16, .loop
 	anim_wait 64
 	anim_ret
 ; c9822
@@ -973,27 +969,27 @@
 
 BattleAnim_Flamethrower: ; c9822
 	anim_1gfx ANIM_GFX_FIRE
-	anim_sound $1a, SFX_EMBER
-	anim_obj $d, 64, 92, $3
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0D,   8, 0,  11, 4, $3
 	anim_wait 2
-	anim_obj $d, 75, 86, $5
+	anim_obj ANIM_OBJ_0D,   9, 3,  10, 6, $5
 	anim_wait 2
-	anim_obj $d, 85, 81, $7
+	anim_obj ANIM_OBJ_0D,  10, 5,  10, 1, $7
 	anim_wait 2
-	anim_obj $d, 96, 76, $9
+	anim_obj ANIM_OBJ_0D,  12, 0,   9, 4, $9
 	anim_wait 2
-	anim_obj $d, 106, 71, $b
+	anim_obj ANIM_OBJ_0D,  13, 2,   8, 7, $b
 	anim_wait 2
-	anim_obj $d, 116, 66, $c
+	anim_obj ANIM_OBJ_0D,  14, 4,   8, 2, $c
 	anim_wait 2
-	anim_obj $d, 126, 61, $a
+	anim_obj ANIM_OBJ_0D,  15, 6,   7, 5, $a
 	anim_wait 2
-	anim_obj $d, 136, 56, $8
+	anim_obj ANIM_OBJ_0D, -15, 0,   7, 0, $8
 	anim_wait 16
-BattleAnim_Flamethrower_branch_c9857: ; c9857
-	anim_sound $1, SFX_EMBER
+.loop
+	anim_sound 0, 1, SFX_EMBER
 	anim_wait 16
-	anim_loop $6, BattleAnim_Flamethrower_branch_c9857
+	anim_loop 6, .loop
 	anim_wait 16
 	anim_ret
 ; c9861
@@ -1000,35 +996,35 @@
 
 BattleAnim_FireBlast: ; c9861
 	anim_1gfx ANIM_GFX_FIRE
-BattleAnim_FireBlast_branch_c9863: ; c9863
-	anim_sound $1a, SFX_EMBER
-	anim_obj $f, 64, 92, $7
+.loop1
+	anim_sound 6, 2, SFX_EMBER
+	anim_obj ANIM_OBJ_0F,   8, 0,  11, 4, $7
 	anim_wait 6
-	anim_loop $a, BattleAnim_FireBlast_branch_c9863
-BattleAnim_FireBlast_branch_c9870: ; c9870
-	anim_sound $1, SFX_EMBER
+	anim_loop 10, .loop1
+.loop2
+	anim_sound 0, 1, SFX_EMBER
 	anim_wait 8
-	anim_loop $a, BattleAnim_FireBlast_branch_c9870
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_incobj $7
-	anim_incobj $8
-	anim_incobj $9
-	anim_incobj $a
+	anim_loop 10, .loop2
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_incobj  7
+	anim_incobj  8
+	anim_incobj  9
+	anim_incobj 10
 	anim_wait 2
-BattleAnim_FireBlast_branch_c988d: ; c988d
-	anim_sound $1, SFX_EMBER
-	anim_obj $f, 136, 56, $1
-	anim_obj $f, 136, 56, $2
-	anim_obj $f, 136, 56, $3
-	anim_obj $f, 136, 56, $4
-	anim_obj $f, 136, 56, $5
+.loop3
+	anim_sound 0, 1, SFX_EMBER
+	anim_obj ANIM_OBJ_0F, -15, 0,   7, 0, $1
+	anim_obj ANIM_OBJ_0F, -15, 0,   7, 0, $2
+	anim_obj ANIM_OBJ_0F, -15, 0,   7, 0, $3
+	anim_obj ANIM_OBJ_0F, -15, 0,   7, 0, $4
+	anim_obj ANIM_OBJ_0F, -15, 0,   7, 0, $5
 	anim_wait 16
-	anim_loop $2, BattleAnim_FireBlast_branch_c988d
+	anim_loop 2, .loop3
 	anim_wait 32
 	anim_ret
 ; c98b0
@@ -1035,7 +1031,7 @@
 
 BattleAnim_IcePunch: ; c98b0
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_ICE
-	anim_obj $a, 136, 56, $43
+	anim_obj ANIM_OBJ_0A, -15, 0,   7, 0, $43
 	anim_call BattleAnim_IcePunch_branch_cbbdf
 	anim_wait 32
 	anim_ret
@@ -1043,21 +1039,21 @@
 
 BattleAnim_IceBeam: ; c98bd
 	anim_1gfx ANIM_GFX_ICE
-BattleAnim_IceBeam_branch_c98bf: ; c98bf
-	anim_sound $1a, SFX_SHINE
-	anim_obj $13, 64, 92, $4
+.loop
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_13,   8, 0,  11, 4, $4
 	anim_wait 4
-	anim_loop $5, BattleAnim_IceBeam_branch_c98bf
-	anim_obj $29, 136, 74, $10
-BattleAnim_IceBeam_branch_c98d1: ; c98d1
-	anim_sound $1a, SFX_SHINE
-	anim_obj $13, 64, 92, $4
+	anim_loop 5, .loop
+	anim_obj ANIM_OBJ_29, -15, 0,   9, 2, $10
+.loop2
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_13,   8, 0,  11, 4, $4
 	anim_wait 4
-	anim_loop $f, BattleAnim_IceBeam_branch_c98d1
+	anim_loop 15, .loop2
 	anim_wait 48
-	anim_sound $1, SFX_SHINE
+	anim_sound 0, 1, SFX_SHINE
 	anim_wait 8
-	anim_sound $1, SFX_SHINE
+	anim_sound 0, 1, SFX_SHINE
 	anim_wait 8
 	anim_ret
 ; c98e8
@@ -1064,24 +1060,24 @@
 
 BattleAnim_Blizzard: ; c98e8
 	anim_1gfx ANIM_GFX_ICE
-BattleAnim_Blizzard_branch_c98ea: ; c98ea
-	anim_sound $1a, SFX_SHINE
-	anim_obj $11, 64, 88, $63
+.loop
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_11,   8, 0,  11, 0, $63
 	anim_wait 2
-	anim_sound $1a, SFX_SHINE
-	anim_obj $11, 64, 80, $64
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_11,   8, 0,  10, 0, $64
 	anim_wait 2
-	anim_sound $1a, SFX_SHINE
-	anim_obj $11, 64, 96, $63
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_11,   8, 0,  12, 0, $63
 	anim_wait 2
-	anim_loop $3, BattleAnim_Blizzard_branch_c98ea
+	anim_loop 3, .loop
 	anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
 	anim_wait 32
-	anim_obj $29, 136, 74, $10
+	anim_obj ANIM_OBJ_29, -15, 0,   9, 2, $10
 	anim_wait 128
-	anim_sound $1, SFX_SHINE
+	anim_sound 0, 1, SFX_SHINE
 	anim_wait 8
-	anim_sound $1, SFX_SHINE
+	anim_sound 0, 1, SFX_SHINE
 	anim_wait 24
 	anim_ret
 ; c991e
@@ -1088,14 +1084,14 @@
 
 BattleAnim_Bubble: ; c991e
 	anim_1gfx ANIM_GFX_BUBBLE
-	anim_sound $82, SFX_WATER_GUN
-	anim_obj $21, 64, 92, $c1
+	anim_sound 32, 2, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $c1
 	anim_wait 6
-	anim_sound $82, SFX_WATER_GUN
-	anim_obj $21, 64, 92, $e1
+	anim_sound 32, 2, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $e1
 	anim_wait 6
-	anim_sound $82, SFX_WATER_GUN
-	anim_obj $21, 64, 92, $d1
+	anim_sound 32, 2, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $d1
 	anim_wait 128
 	anim_wait 32
 	anim_ret
@@ -1103,87 +1099,87 @@
 
 BattleAnim_Bubblebeam: ; c993d
 	anim_1gfx ANIM_GFX_BUBBLE
-BattleAnim_Bubblebeam_branch_c993f: ; c993f
-	anim_sound $42, SFX_BUBBLEBEAM
-	anim_obj $21, 64, 92, $92
+.loop
+	anim_sound 16, 2, SFX_BUBBLEBEAM
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $92
 	anim_wait 6
-	anim_sound $42, SFX_BUBBLEBEAM
-	anim_obj $21, 64, 92, $b3
+	anim_sound 16, 2, SFX_BUBBLEBEAM
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $b3
 	anim_wait 6
-	anim_sound $42, SFX_BUBBLEBEAM
-	anim_obj $21, 64, 92, $f4
+	anim_sound 16, 2, SFX_BUBBLEBEAM
+	anim_obj ANIM_OBJ_21,   8, 0,  11, 4, $f4
 	anim_wait 8
-	anim_loop $3, BattleAnim_Bubblebeam_branch_c993f
+	anim_loop 3, .loop
 	anim_wait 64
 	anim_clearobjs
-	anim_bgeffect $30, $0, $0, $0
+	anim_bgeffect ANIM_BG_30, $0, $0, $0
 	anim_wait 1
-	anim_call BattleAnim_Bubblebeam_branch_cbcca
-	anim_bgeffect $31, $1c, $0, $0
+	anim_call BattleAnim_FollowPlayerHead_1
+	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 19
-	anim_call BattleAnim_Bubblebeam_branch_cbcd2
-	anim_bgeffect $32, $0, $0, $0
+	anim_call BattleAnim_ShowMon_1
+	anim_bgeffect ANIM_BG_32, $0, $0, $0
 	anim_wait 8
 	anim_ret
 ; c9979
 
 BattleAnim_WaterGun: ; c9979
-	anim_bgeffect $30, $0, $0, $0
+	anim_bgeffect ANIM_BG_30, $0, $0, $0
 	anim_1gfx ANIM_GFX_WATER
-	anim_call BattleAnim_WaterGun_branch_cbcca
-	anim_sound $42, SFX_WATER_GUN
-	anim_obj $24, 64, 88, $0
+	anim_call BattleAnim_FollowPlayerHead_1
+	anim_sound 16, 2, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_24,   8, 0,  11, 0, $0
 	anim_wait 8
-	anim_obj $24, 64, 76, $0
+	anim_obj ANIM_OBJ_24,   8, 0,   9, 4, $0
 	anim_wait 8
-	anim_obj $24, 64, 82, $0
+	anim_obj ANIM_OBJ_24,   8, 0,  10, 2, $0
 	anim_wait 24
-	anim_bgeffect $31, $1c, $0, $0
+	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
-	anim_bgeffect $31, $8, $0, $0
+	anim_bgeffect ANIM_BG_31, $8, $0, $0
 	anim_wait 8
-	anim_bgeffect $31, $30, $0, $0
+	anim_bgeffect ANIM_BG_31, $30, $0, $0
 	anim_wait 32
-	anim_call BattleAnim_WaterGun_branch_cbcd2
-	anim_bgeffect $32, $0, $0, $0
+	anim_call BattleAnim_ShowMon_1
+	anim_bgeffect ANIM_BG_32, $0, $0, $0
 	anim_wait 16
 	anim_ret
 ; c99b4
 
 BattleAnim_HydroPump: ; c99b4
-	anim_bgeffect $30, $0, $0, $0
+	anim_bgeffect ANIM_BG_30, $0, $0, $0
 	anim_1gfx ANIM_GFX_WATER
-	anim_call BattleAnim_HydroPump_branch_cbcca
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 108, 72, $0
-	anim_bgeffect $31, $1c, $0, $0
+	anim_call BattleAnim_FollowPlayerHead_1
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25,  13, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 116, 72, $0
-	anim_bgeffect $31, $8, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25,  14, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $8, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 124, 72, $0
-	anim_bgeffect $31, $30, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25,  15, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $30, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 132, 72, $0
-	anim_bgeffect $31, $1c, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25, -16, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 140, 72, $0
-	anim_bgeffect $31, $8, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25, -15, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $8, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 148, 72, $0
-	anim_bgeffect $31, $30, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25, -14, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $30, $0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HYDRO_PUMP
-	anim_obj $25, 156, 72, $0
-	anim_bgeffect $31, $1c, $0, $0
+	anim_sound 0, 1, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_25, -13, 4,   9, 0, $0
+	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 32
-	anim_call BattleAnim_HydroPump_branch_cbcd2
-	anim_bgeffect $32, $0, $0, $0
+	anim_call BattleAnim_ShowMon_1
+	anim_bgeffect ANIM_BG_32, $0, $0, $0
 	anim_wait 16
 	anim_ret
 ; c9a2a
@@ -1191,12 +1187,12 @@
 BattleAnim_Surf: ; c9a2a
 	anim_1gfx ANIM_GFX_BUBBLE
 	anim_bgeffect ANIM_BG_SURF, $0, $0, $0
-	anim_obj $22, 88, 104, $8
-BattleAnim_Surf_branch_c9a36: ; c9a36
-	anim_sound $1, SFX_SURF
+	anim_obj ANIM_OBJ_22,  11, 0,  13, 0, $8
+.loop
+	anim_sound 0, 1, SFX_SURF
 	anim_wait 32
-	anim_loop $4, BattleAnim_Surf_branch_c9a36
-	anim_incobj $1
+	anim_loop 4, .loop
+	anim_incobj  1
 	anim_wait 56
 	anim_ret
 ; c9a42
@@ -1203,13 +1199,13 @@
 
 BattleAnim_VineWhip: ; c9a42
 	anim_1gfx ANIM_GFX_WHIP
-	anim_sound $1, SFX_VINE_WHIP
-	anim_obj $40, 116, 52, $80
+	anim_sound 0, 1, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_40,  14, 4,   6, 4, $80
 	anim_wait 4
-	anim_sound $1, SFX_VINE_WHIP
-	anim_obj $3f, 128, 60, $0
+	anim_sound 0, 1, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_3F,  16, 0,   7, 4, $0
 	anim_wait 4
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 4
 	anim_ret
 ; c9a5a
@@ -1216,16 +1212,16 @@
 
 BattleAnim_LeechSeed: ; c9a5a
 	anim_1gfx ANIM_GFX_PLANT
-	anim_sound $42, SFX_VINE_WHIP
-	anim_obj $4a, 48, 80, $20
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_4A,   6, 0,  10, 0, $20
 	anim_wait 8
-	anim_sound $42, SFX_VINE_WHIP
-	anim_obj $4a, 48, 80, $30
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_4A,   6, 0,  10, 0, $30
 	anim_wait 8
-	anim_sound $42, SFX_VINE_WHIP
-	anim_obj $4a, 48, 80, $28
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_4A,   6, 0,  10, 0, $28
 	anim_wait 32
-	anim_sound $1, SFX_CHARGE
+	anim_sound 0, 1, SFX_CHARGE
 	anim_wait 128
 	anim_ret
 ; c9a7c
@@ -1232,48 +1228,48 @@
 
 BattleAnim_RazorLeaf: ; c9a7c
 	anim_1gfx ANIM_GFX_PLANT
-	anim_sound $0, SFX_VINE_WHIP
-	anim_obj $14, 48, 80, $28
-	anim_obj $14, 48, 80, $5c
-	anim_obj $14, 48, 80, $10
-	anim_obj $14, 48, 80, $e8
-	anim_obj $14, 48, 80, $9c
-	anim_obj $14, 48, 80, $d0
+	anim_sound 0, 0, SFX_VINE_WHIP
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $28
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $5c
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $10
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $e8
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $9c
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $d0
 	anim_wait 6
-	anim_obj $14, 48, 80, $1c
-	anim_obj $14, 48, 80, $50
-	anim_obj $14, 48, 80, $dc
-	anim_obj $14, 48, 80, $90
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $1c
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $50
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $dc
+	anim_obj ANIM_OBJ_14,   6, 0,  10, 0, $90
 	anim_wait 80
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $3
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  3
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $5
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  5
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $7
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  7
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $9
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  9
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $1
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  1
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $2
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  2
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $4
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  4
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $6
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  6
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $8
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj  8
 	anim_wait 2
-	anim_sound $42, SFX_VINE_WHIP
-	anim_incobj $a
+	anim_sound 16, 2, SFX_VINE_WHIP
+	anim_incobj 10
 	anim_wait 64
 	anim_ret
 ; c9af2
@@ -1281,16 +1277,16 @@
 BattleAnim_Solarbeam: ; c9af2
 	anim_jumpif $0, BattleAnim_Solarbeam_branch_c9b30
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_sound $0, SFX_CHARGE
-	anim_obj $3d, 48, 84, $0
-	anim_obj $3c, 48, 84, $0
-	anim_obj $3c, 48, 84, $8
-	anim_obj $3c, 48, 84, $10
-	anim_obj $3c, 48, 84, $18
-	anim_obj $3c, 48, 84, $20
-	anim_obj $3c, 48, 84, $28
-	anim_obj $3c, 48, 84, $30
-	anim_obj $3c, 48, 84, $38
+	anim_sound 0, 0, SFX_CHARGE
+	anim_obj ANIM_OBJ_3D,   6, 0,  10, 4, $0
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $0
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $8
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $10
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $18
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $20
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $28
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $30
+	anim_obj ANIM_OBJ_3C,   6, 0,  10, 4, $38
 	anim_wait 104
 	anim_bgeffect ANIM_BG_FLASH_WHITE, $0, $4, $2
 	anim_wait 64
@@ -1299,7 +1295,7 @@
 
 BattleAnim_Solarbeam_branch_c9b30: ; c9b30
 	anim_1gfx ANIM_GFX_BEAM
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_call BattleAnim_Solarbeam_branch_cbb39
 	anim_wait 48
 	anim_ret
@@ -1307,10 +1303,10 @@
 
 BattleAnim_Thunderpunch: ; c9b3c
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_LIGHTNING
-	anim_obj $a, 136, 56, $43
+	anim_obj ANIM_OBJ_0A, -15, 0,   7, 0, $43
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $2
-	anim_sound $1, SFX_THUNDER
-	anim_obj $2f, 152, 68, $0
+	anim_sound 0, 1, SFX_THUNDER
+	anim_obj ANIM_OBJ_2F, -13, 0,   8, 4, $0
 	anim_wait 64
 	anim_ret
 ; c9b53
@@ -1317,10 +1313,10 @@
 
 BattleAnim_Thundershock: ; c9b53
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_EXPLOSION
-	anim_obj $34, 136, 56, $2
+	anim_obj ANIM_OBJ_34, -15, 0,   7, 0, $2
 	anim_wait 16
-	anim_sound $1, SFX_THUNDERSHOCK
-	anim_obj $33, 136, 56, $0
+	anim_sound 0, 1, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_33, -15, 0,   7, 0, $0
 	anim_wait 96
 	anim_ret
 ; c9b66
@@ -1327,11 +1323,11 @@
 
 BattleAnim_Thunderbolt: ; c9b66
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_EXPLOSION
-	anim_obj $32, 136, 56, $2
+	anim_obj ANIM_OBJ_32, -15, 0,   7, 0, $2
 	anim_wait 16
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $1, SFX_THUNDERSHOCK
-	anim_obj $31, 136, 56, $0
+	anim_sound 0, 1, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_31, -15, 0,   7, 0, $0
 	anim_wait 64
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
 	anim_wait 64
@@ -1341,11 +1337,11 @@
 BattleAnim_ThunderWave: ; c9b84
 	anim_1gfx ANIM_GFX_LIGHTNING
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_sound $1, SFX_THUNDERSHOCK
-	anim_obj $30, 136, 56, $0
+	anim_sound 0, 1, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_30, -15, 0,   7, 0, $0
 	anim_wait 20
 	anim_bgp $1b
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 96
 	anim_ret
 ; c9b9a
@@ -1353,14 +1349,14 @@
 BattleAnim_Thunder: ; c9b9a
 	anim_1gfx ANIM_GFX_LIGHTNING
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $20
-	anim_sound $1, SFX_THUNDER
-	anim_obj $2e, 120, 68, $0
+	anim_sound 0, 1, SFX_THUNDER
+	anim_obj ANIM_OBJ_2E,  15, 0,   8, 4, $0
 	anim_wait 16
-	anim_sound $1, SFX_THUNDER
-	anim_obj $2f, 152, 68, $0
+	anim_sound 0, 1, SFX_THUNDER
+	anim_obj ANIM_OBJ_2F, -13, 0,   8, 4, $0
 	anim_wait 16
-	anim_sound $1, SFX_THUNDER
-	anim_obj $2d, 136, 68, $0
+	anim_sound 0, 1, SFX_THUNDER
+	anim_obj ANIM_OBJ_2D, -15, 0,   8, 4, $0
 	anim_wait 48
 	anim_ret
 ; c9bbd
@@ -1368,25 +1364,25 @@
 BattleAnim_RazorWind: ; c9bbd
 	anim_jumpif $1, BattleAnim_RazorWind_branch_c9fb5
 	anim_1gfx ANIM_GFX_WHIP
-	anim_bgeffect $6, $0, $1, $0
-BattleAnim_RazorWind_branch_c9bc8: ; c9bc8
+	anim_bgeffect ANIM_BG_06, $0, $1, $0
+.loop
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj $42, 152, 40, $3
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_42, -13, 0,   5, 0, $3
 	anim_wait 4
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj $42, 136, 56, $3
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_42, -15, 0,   7, 0, $3
 	anim_wait 4
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj $42, 152, 64, $3
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_42, -13, 0,   8, 0, $3
 	anim_wait 4
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj $41, 120, 40, $83
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_41,  15, 0,   5, 0, $83
 	anim_wait 4
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj $41, 120, 64, $83
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_41,  15, 0,   8, 0, $83
 	anim_wait 4
-	anim_loop $3, BattleAnim_RazorWind_branch_c9bc8
+	anim_loop 3, .loop
 	anim_wait 24
 	anim_ret
 ; c9c00
@@ -1393,25 +1389,25 @@
 
 BattleAnim_Sonicboom_JP: ; c9c00
 	anim_2gfx ANIM_GFX_WHIP, ANIM_GFX_HIT
-BattleAnim_Sonicboom_JP_branch_c9c03: ; c9c03
-	anim_sound $c, SFX_RAZOR_WIND
-	anim_obj $43, 64, 80, $3
+.loop
+	anim_sound 3, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_43,   8, 0,  10, 0, $3
 	anim_wait 8
-	anim_sound $c, SFX_RAZOR_WIND
-	anim_obj $43, 64, 88, $2
+	anim_sound 3, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_43,   8, 0,  11, 0, $2
 	anim_wait 8
-	anim_sound $c, SFX_RAZOR_WIND
-	anim_obj $43, 64, 96, $4
+	anim_sound 3, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_43,   8, 0,  12, 0, $4
 	anim_wait 8
-	anim_loop $2, BattleAnim_Sonicboom_JP_branch_c9c03
+	anim_loop 2, .loop
 	anim_wait 32
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_obj $1, 136, 56, $0
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; c9c36
@@ -1419,15 +1415,14 @@
 BattleAnim_Gust: ; c9c36
 BattleAnim_Sonicboom: ; c9c36
 	anim_2gfx ANIM_GFX_WIND, ANIM_GFX_HIT
-BattleAnim_Gust_branch_c9c39: ; c9c39
-BattleAnim_Sonicboom_branch_c9c39: ; c9c39
-	anim_sound $1, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_GUST, 136, 72, $0
+.loop
+	anim_sound 0, 1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_GUST, -15, 0,   9, 0, $0
 	anim_wait 6
-	anim_loop $9, BattleAnim_Gust_branch_c9c39
-	anim_obj $1, 144, 64, $18
+	anim_loop 9, .loop
+	anim_obj ANIM_OBJ_01, -14, 0,   8, 0, $18
 	anim_wait 8
-	anim_obj $1, 128, 32, $18
+	anim_obj ANIM_OBJ_01,  16, 0,   4, 0, $18
 	anim_wait 16
 	anim_ret
 ; c9c53
@@ -1435,17 +1430,17 @@
 BattleAnim_Selfdestruct: ; c9c53
 	anim_1gfx ANIM_GFX_EXPLOSION
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
-	anim_jumpif $1, BattleAnim_Selfdestruct_branch_c9c63
+	anim_jumpif $1, .loop
 	anim_call BattleAnim_Selfdestruct_branch_cbb8f
 	anim_wait 16
 	anim_ret
 ; c9c63
 
-BattleAnim_Selfdestruct_branch_c9c63: ; c9c63
+.loop
 	anim_call BattleAnim_Selfdestruct_branch_cbb62
 	anim_wait 5
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_loop $2, BattleAnim_Selfdestruct_branch_c9c63
+	anim_loop 2, .loop
 	anim_wait 16
 	anim_ret
 ; c9c72
@@ -1452,19 +1447,19 @@
 
 BattleAnim_Explosion: ; c9c72
 	anim_1gfx ANIM_GFX_EXPLOSION
-	anim_bgeffect $1f, $60, $4, $10
+	anim_bgeffect ANIM_BG_1F, $60, $4, $10
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
-	anim_jumpif $1, BattleAnim_Explosion_branch_c9c87
+	anim_jumpif $1, .loop
 	anim_call BattleAnim_Explosion_branch_cbb8f
 	anim_wait 16
 	anim_ret
 ; c9c87
 
-BattleAnim_Explosion_branch_c9c87: ; c9c87
+.loop
 	anim_call BattleAnim_Explosion_branch_cbb62
 	anim_wait 5
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_loop $2, BattleAnim_Explosion_branch_c9c87
+	anim_loop 2, .loop
 	anim_wait 16
 	anim_ret
 ; c9c96
@@ -1478,21 +1473,21 @@
 
 BattleAnim_RockThrow: ; c9c9d
 	anim_1gfx ANIM_GFX_ROCKS
-	anim_bgeffect $1f, $60, $1, $0
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 128, 64, $40
+	anim_bgeffect ANIM_BG_1F, $60, $1, $0
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E,  16, 0,   8, 0, $40
 	anim_wait 2
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1d, 120, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1D,  15, 0,   8, 4, $30
 	anim_wait 2
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 152, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E, -13, 0,   8, 4, $30
 	anim_wait 2
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1d, 144, 64, $40
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1D, -14, 0,   8, 0, $40
 	anim_wait 2
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 136, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E, -15, 0,   8, 4, $30
 	anim_wait 96
 	anim_ret
 ; c9cd2
@@ -1499,24 +1494,24 @@
 
 BattleAnim_RockSlide: ; c9cd2
 	anim_1gfx ANIM_GFX_ROCKS
-	anim_bgeffect $1f, $c0, $1, $0
-BattleAnim_RockSlide_branch_c9cd9: ; c9cd9
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 128, 64, $40
+	anim_bgeffect ANIM_BG_1F, $c0, $1, $0
+.loop
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E,  16, 0,   8, 0, $40
 	anim_wait 4
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1d, 120, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1D,  15, 0,   8, 4, $30
 	anim_wait 4
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 152, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E, -13, 0,   8, 4, $30
 	anim_wait 4
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1d, 144, 64, $40
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1D, -14, 0,   8, 0, $40
 	anim_wait 4
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 136, 68, $30
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E, -15, 0,   8, 4, $30
 	anim_wait 16
-	anim_loop $4, BattleAnim_RockSlide_branch_c9cd9
+	anim_loop 4, .loop
 	anim_wait 96
 	anim_ret
 ; c9d0c
@@ -1523,19 +1518,19 @@
 
 BattleAnim_Sing: ; c9d0c
 	anim_1gfx ANIM_GFX_NOISE
-	anim_sound $42, SFX_SING
-BattleAnim_Sing_branch_c9d11: ; c9d11
-	anim_obj $23, 64, 92, $0
+	anim_sound 16, 2, SFX_SING
+.loop
+	anim_obj ANIM_OBJ_23,   8, 0,  11, 4, $0
 	anim_wait 8
-	anim_obj $23, 64, 92, $1
+	anim_obj ANIM_OBJ_23,   8, 0,  11, 4, $1
 	anim_wait 8
-	anim_obj $23, 64, 92, $2
+	anim_obj ANIM_OBJ_23,   8, 0,  11, 4, $2
 	anim_wait 8
-	anim_obj $23, 64, 92, $0
+	anim_obj ANIM_OBJ_23,   8, 0,  11, 4, $0
 	anim_wait 8
-	anim_obj $23, 64, 92, $2
+	anim_obj ANIM_OBJ_23,   8, 0,  11, 4, $2
 	anim_wait 8
-	anim_loop $4, BattleAnim_Sing_branch_c9d11
+	anim_loop 4, .loop
 	anim_wait 64
 	anim_ret
 ; c9d35
@@ -1545,26 +1540,23 @@
 BattleAnim_Spore: ; c9d35
 BattleAnim_StunSpore: ; c9d35
 	anim_1gfx ANIM_GFX_POWDER
-BattleAnim_Poisonpowder_branch_c9d37: ; c9d37
-BattleAnim_SleepPowder_branch_c9d37: ; c9d37
-BattleAnim_Spore_branch_c9d37: ; c9d37
-BattleAnim_StunSpore_branch_c9d37: ; c9d37
-	anim_sound $1, SFX_POWDER
-	anim_obj $26, 104, 16, $0
+.loop
+	anim_sound 0, 1, SFX_POWDER
+	anim_obj ANIM_OBJ_26,  13, 0,   2, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_POWDER
-	anim_obj $26, 136, 16, $0
+	anim_sound 0, 1, SFX_POWDER
+	anim_obj ANIM_OBJ_26, -15, 0,   2, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_POWDER
-	anim_obj $26, 112, 16, $0
+	anim_sound 0, 1, SFX_POWDER
+	anim_obj ANIM_OBJ_26,  14, 0,   2, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_POWDER
-	anim_obj $26, 128, 16, $0
+	anim_sound 0, 1, SFX_POWDER
+	anim_obj ANIM_OBJ_26,  16, 0,   2, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_POWDER
-	anim_obj $26, 120, 16, $0
+	anim_sound 0, 1, SFX_POWDER
+	anim_obj ANIM_OBJ_26,  15, 0,   2, 0, $0
 	anim_wait 4
-	anim_loop $2, BattleAnim_Poisonpowder_branch_c9d37
+	anim_loop 2, .loop
 	anim_wait 96
 	anim_ret
 ; c9d6a
@@ -1571,9 +1563,9 @@
 
 BattleAnim_HyperBeam: ; c9d6a
 	anim_1gfx ANIM_GFX_BEAM
-	anim_bgeffect $1f, $30, $4, $10
+	anim_bgeffect ANIM_BG_1F, $30, $4, $10
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $40
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_call BattleAnim_HyperBeam_branch_cbb39
 	anim_wait 48
 	anim_ret
@@ -1581,12 +1573,12 @@
 
 BattleAnim_AuroraBeam: ; c9d80
 	anim_1gfx ANIM_GFX_BEAM
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_wait 64
 	anim_call BattleAnim_AuroraBeam_branch_cbb39
 	anim_wait 48
-	anim_incobj $5
+	anim_incobj  5
 	anim_wait 64
 	anim_ret
 ; c9d95
@@ -1593,9 +1585,9 @@
 
 BattleAnim_Vicegrip: ; c9d95
 	anim_1gfx ANIM_GFX_CUT
-	anim_sound $1, SFX_VICEGRIP
-	anim_obj $37, 152, 40, $0
-	anim_obj $39, 120, 72, $0
+	anim_sound 0, 1, SFX_VICEGRIP
+	anim_obj ANIM_OBJ_37, -13, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_39,  15, 0,   9, 0, $0
 	anim_wait 32
 	anim_ret
 ; c9da6
@@ -1602,10 +1594,10 @@
 
 BattleAnim_Scratch: ; c9da6
 	anim_1gfx ANIM_GFX_CUT
-	anim_sound $1, SFX_SCRATCH
-	anim_obj $37, 144, 48, $0
-	anim_obj $37, 140, 44, $0
-	anim_obj $37, 136, 40, $0
+	anim_sound 0, 1, SFX_SCRATCH
+	anim_obj ANIM_OBJ_37, -14, 0,   6, 0, $0
+	anim_obj ANIM_OBJ_37, -15, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_37, -15, 0,   5, 0, $0
 	anim_wait 32
 	anim_ret
 ; c9dbc
@@ -1613,21 +1605,21 @@
 BattleAnim_FurySwipes: ; c9dbc
 	anim_1gfx ANIM_GFX_CUT
 	anim_jumpif $1, BattleAnim_FurySwipes_branch_c9dd9
-	anim_sound $1, SFX_SCRATCH
-	anim_obj $37, 144, 48, $0
-	anim_obj $37, 140, 44, $0
-	anim_obj $37, 136, 40, $0
-	anim_sound $1, SFX_SCRATCH
+	anim_sound 0, 1, SFX_SCRATCH
+	anim_obj ANIM_OBJ_37, -14, 0,   6, 0, $0
+	anim_obj ANIM_OBJ_37, -15, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_37, -15, 0,   5, 0, $0
+	anim_sound 0, 1, SFX_SCRATCH
 	anim_wait 32
 	anim_ret
 ; c9dd9
 
 BattleAnim_FurySwipes_branch_c9dd9: ; c9dd9
-	anim_sound $1, SFX_SCRATCH
-	anim_obj $38, 120, 48, $0
-	anim_obj $38, 124, 44, $0
-	anim_obj $38, 128, 40, $0
-	anim_sound $1, SFX_SCRATCH
+	anim_sound 0, 1, SFX_SCRATCH
+	anim_obj ANIM_OBJ_38,  15, 0,   6, 0, $0
+	anim_obj ANIM_OBJ_38,  15, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_38,  16, 0,   5, 0, $0
+	anim_sound 0, 1, SFX_SCRATCH
 	anim_wait 32
 	anim_ret
 ; c9df0
@@ -1634,8 +1626,8 @@
 
 BattleAnim_Cut: ; c9df0
 	anim_1gfx ANIM_GFX_CUT
-	anim_sound $1, SFX_CUT
-	anim_obj $3a, 152, 40, $0
+	anim_sound 0, 1, SFX_CUT
+	anim_obj ANIM_OBJ_3A, -13, 0,   5, 0, $0
 	anim_wait 32
 	anim_ret
 ; c9dfc
@@ -1642,9 +1634,9 @@
 
 BattleAnim_Slash: ; c9dfc
 	anim_1gfx ANIM_GFX_CUT
-	anim_sound $1, SFX_CUT
-	anim_obj $3a, 152, 40, $0
-	anim_obj $3a, 148, 36, $0
+	anim_sound 0, 1, SFX_CUT
+	anim_obj ANIM_OBJ_3A, -13, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_3A, -14, 4,   4, 4, $0
 	anim_wait 32
 	anim_ret
 ; c9e0d
@@ -1651,14 +1643,14 @@
 
 BattleAnim_Clamp: ; c9e0d
 	anim_2gfx ANIM_GFX_CUT, ANIM_GFX_HIT
-	anim_obj $35, 136, 56, $a0
-	anim_obj $35, 136, 56, $20
+	anim_obj ANIM_OBJ_35, -15, 0,   7, 0, $a0
+	anim_obj ANIM_OBJ_35, -15, 0,   7, 0, $20
 	anim_wait 16
-	anim_sound $1, SFX_BITE
-	anim_obj $1, 144, 48, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $18
 	anim_wait 32
-	anim_sound $1, SFX_BITE
-	anim_obj $1, 128, 64, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_01,  16, 0,   8, 0, $18
 	anim_wait 16
 	anim_ret
 ; c9e2e
@@ -1665,14 +1657,14 @@
 
 BattleAnim_Bite: ; c9e2e
 	anim_2gfx ANIM_GFX_CUT, ANIM_GFX_HIT
-	anim_obj $36, 136, 56, $98
-	anim_obj $36, 136, 56, $18
+	anim_obj ANIM_OBJ_36, -15, 0,   7, 0, $98
+	anim_obj ANIM_OBJ_36, -15, 0,   7, 0, $18
 	anim_wait 8
-	anim_sound $1, SFX_BITE
-	anim_obj $1, 144, 48, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $18
 	anim_wait 16
-	anim_sound $1, SFX_BITE
-	anim_obj $1, 128, 64, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_01,  16, 0,   8, 0, $18
 	anim_wait 8
 	anim_ret
 ; c9e4f
@@ -1679,14 +1671,14 @@
 
 BattleAnim_Teleport: ; c9e4f
 	anim_1gfx ANIM_GFX_SPEED
-	anim_call BattleAnim_Teleport_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TELEPORT, $0, $1, $0
 	anim_wait 32
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
 	anim_wait 3
 	anim_incbgeffect ANIM_BG_TELEPORT
-	anim_call BattleAnim_Teleport_branch_cbcb7
-	anim_bgeffect $6, $0, $1, $0
+	anim_call BattleAnim_ShowMon_0
+	anim_bgeffect ANIM_BG_06, $0, $1, $0
 	anim_call BattleAnim_Teleport_branch_cbb12
 	anim_wait 64
 	anim_ret
@@ -1696,8 +1688,8 @@
 	anim_jumpif $1, BattleAnim_Fly_branch_c9e89
 	anim_jumpif $2, BattleAnim_Fly_branch_c9e82
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 32
 BattleAnim_Fly_branch_c9e82: ; c9e82
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
@@ -1707,7 +1699,7 @@
 
 BattleAnim_Fly_branch_c9e89: ; c9e89
 	anim_1gfx ANIM_GFX_SPEED
-	anim_bgeffect $6, $0, $1, $0
+	anim_bgeffect ANIM_BG_06, $0, $1, $0
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
 	anim_call BattleAnim_Fly_branch_cbb12
 	anim_wait 64
@@ -1715,50 +1707,50 @@
 ; c9e9a
 
 BattleAnim_DoubleTeam: ; c9e9a
-	anim_call BattleAnim_DoubleTeam_branch_cbcaf
-	anim_sound $0, SFX_PSYBEAM
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_sound 0, 0, SFX_PSYBEAM
 	anim_bgeffect ANIM_BG_DOUBLE_TEAM, $0, $1, $0
 	anim_wait 96
 	anim_incbgeffect ANIM_BG_DOUBLE_TEAM
 	anim_wait 24
 	anim_incbgeffect ANIM_BG_DOUBLE_TEAM
-	anim_call BattleAnim_DoubleTeam_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; c9eaf
 
 BattleAnim_Recover: ; c9eaf
 	anim_1gfx ANIM_GFX_BUBBLE
-	anim_call BattleAnim_Recover_branch_cbca7
-	anim_sound $0, SFX_FULL_HEAL
-	anim_bgeffect $18, $0, $1, $40
-	anim_obj $2c, 44, 88, $30
-	anim_obj $2c, 44, 88, $31
-	anim_obj $2c, 44, 88, $32
-	anim_obj $2c, 44, 88, $33
-	anim_obj $2c, 44, 88, $34
-	anim_obj $2c, 44, 88, $35
-	anim_obj $2c, 44, 88, $36
-	anim_obj $2c, 44, 88, $37
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_FULL_HEAL
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $30
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $31
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $32
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $33
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $34
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $35
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $36
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $37
 	anim_wait 64
-	anim_incbgeffect $18
-	anim_call BattleAnim_Recover_branch_cbcb7
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; c9eeb
 
 BattleAnim_Absorb: ; c9eeb
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_obj $3d, 44, 88, $0
-BattleAnim_Absorb_branch_c9ef2: ; c9ef2
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 128, 48, $2
+	anim_obj ANIM_OBJ_3D,   5, 4,  11, 0, $0
+.loop
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45,  16, 0,   6, 0, $2
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 64, $3
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   8, 0, $3
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 32, $4
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   4, 0, $4
 	anim_wait 6
-	anim_loop $5, BattleAnim_Absorb_branch_c9ef2
+	anim_loop 5, .loop
 	anim_wait 32
 	anim_ret
 ; c9f13
@@ -1765,53 +1757,53 @@
 
 BattleAnim_MegaDrain: ; c9f13
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_call BattleAnim_MegaDrain_branch_cbca7
-	anim_bgeffect $1c, $0, $0, $10
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1C, $0, $0, $10
 	anim_setvar $0
-BattleAnim_MegaDrain_branch_c9f1f: ; c9f1f
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 128, 48, $2
+.loop
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45,  16, 0,   6, 0, $2
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 64, $3
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   8, 0, $3
 	anim_wait 6
-	anim_sound $1b, SFX_WATER_GUN
-	anim_obj $45, 136, 32, $4
+	anim_sound 6, 3, SFX_WATER_GUN
+	anim_obj ANIM_OBJ_45, -15, 0,   4, 0, $4
 	anim_wait 6
 	anim_incvar
-	anim_jumpvar $7, BattleAnim_MegaDrain_branch_c9f4e
-	anim_jumpvar $2, BattleAnim_MegaDrain_branch_c9f46
-	anim_jump BattleAnim_MegaDrain_branch_c9f1f
+	anim_jumpvar $7, .done
+	anim_jumpvar $2, .spawn
+	anim_jump .loop
 ; c9f46
 
-BattleAnim_MegaDrain_branch_c9f46: ; c9f46
-	anim_obj $3d, 44, 88, $0
-	anim_jump BattleAnim_MegaDrain_branch_c9f1f
+.spawn
+	anim_obj ANIM_OBJ_3D,   5, 4,  11, 0, $0
+	anim_jump .loop
 ; c9f4e
 
-BattleAnim_MegaDrain_branch_c9f4e: ; c9f4e
+.done
 	anim_wait 32
-	anim_incbgeffect $1c
-	anim_call BattleAnim_MegaDrain_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1C
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; c9f55
 
 BattleAnim_EggBomb: ; c9f55
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_EXPLOSION
-	anim_sound $0, SFX_SWITCH_POKEMON
-	anim_obj $46, 44, 104, $1
+	anim_sound 0, 0, SFX_SWITCH_POKEMON
+	anim_obj ANIM_OBJ_46,   5, 4,  13, 0, $1
 	anim_wait 128
 	anim_wait 96
-	anim_incobj $1
+	anim_incobj  1
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $18, 128, 64, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_18,  16, 0,   8, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $18, 144, 68, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_18, -14, 0,   8, 4, $0
 	anim_wait 8
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $18, 136, 72, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_18, -15, 0,   9, 0, $0
 	anim_wait 24
 	anim_ret
 ; c9f85
@@ -1818,22 +1810,22 @@
 
 BattleAnim_Softboiled: ; c9f85
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_BUBBLE
-	anim_call BattleAnim_Softboiled_branch_cbca7
-	anim_sound $0, SFX_SWITCH_POKEMON
-	anim_obj $46, 44, 104, $6
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_SWITCH_POKEMON
+	anim_obj ANIM_OBJ_46,   5, 4,  13, 0, $6
 	anim_wait 128
-	anim_incobj $2
-	anim_obj $46, 76, 104, $b
+	anim_incobj  2
+	anim_obj ANIM_OBJ_46,   9, 4,  13, 0, $b
 	anim_wait 16
-	anim_bgeffect $18, $0, $1, $40
-	anim_sound $0, SFX_METRONOME
-BattleAnim_Softboiled_branch_c9fa4: ; c9fa4
-	anim_obj $2c, 44, 88, $20
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_sound 0, 0, SFX_METRONOME
+.loop
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $20
 	anim_wait 8
-	anim_loop $8, BattleAnim_Softboiled_branch_c9fa4
+	anim_loop 8, .loop
 	anim_wait 128
-	anim_incbgeffect $18
-	anim_call BattleAnim_Softboiled_branch_cbcb7
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; c9fb5
 
@@ -1842,32 +1834,29 @@
 BattleAnim_SkullBash_branch_c9fb5: ; c9fb5
 BattleAnim_SkyAttack_branch_c9fb5: ; c9fb5
 	anim_1gfx ANIM_GFX_SPEED
-	anim_call BattleAnim_FocusEnergy_branch_cbca7
-	anim_bgeffect $16, $0, $1, $40
-	anim_bgeffect $6, $0, $2, $0
-BattleAnim_FocusEnergy_branch_c9fc4: ; c9fc4
-BattleAnim_RazorWind_branch_c9fc4: ; c9fc4
-BattleAnim_SkullBash_branch_c9fc4: ; c9fc4
-BattleAnim_SkyAttack_branch_c9fc4: ; c9fc4
-	anim_sound $0, SFX_SWORDS_DANCE
-	anim_obj $47, 44, 108, $6
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_16, $0, $1, $40
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+.loop
+	anim_sound 0, 0, SFX_SWORDS_DANCE
+	anim_obj ANIM_OBJ_47,   5, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 36, 108, $6
+	anim_obj ANIM_OBJ_47,   4, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 52, 108, $8
+	anim_obj ANIM_OBJ_47,   6, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 28, 108, $8
+	anim_obj ANIM_OBJ_47,   3, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 60, 108, $6
+	anim_obj ANIM_OBJ_47,   7, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 20, 108, $8
+	anim_obj ANIM_OBJ_47,   2, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 68, 108, $8
+	anim_obj ANIM_OBJ_47,   8, 4,  13, 4, $8
 	anim_wait 2
-	anim_loop $3, BattleAnim_FocusEnergy_branch_c9fc4
+	anim_loop 3, .loop
 	anim_wait 8
-	anim_incbgeffect $16
-	anim_call BattleAnim_FocusEnergy_branch_cbcb7
+	anim_incbgeffect ANIM_BG_16
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; c9ffc
 
@@ -1874,28 +1863,28 @@
 BattleAnim_Bide: ; c9ffc
 	anim_jumpif $0, BattleAnim_Bide_branch_c9651
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Bide_branch_cbca7
-	anim_sound $0, SFX_ESCAPE_ROPE
-	anim_bgeffect $1a, $0, $1, $20
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_ESCAPE_ROPE
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
 	anim_wait 72
-	anim_incbgeffect $1a
-	anim_call BattleAnim_Bide_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca014
 
 BattleAnim_Bind: ; ca014
 	anim_1gfx ANIM_GFX_ROPE
-	anim_sound $1, SFX_BIND
-	anim_obj $48, 132, 64, $0
+	anim_sound 0, 1, SFX_BIND
+	anim_obj ANIM_OBJ_48, -16, 4,   8, 0, $0
 	anim_wait 8
-	anim_obj $49, 132, 56, $0
+	anim_obj ANIM_OBJ_49, -16, 4,   7, 0, $0
 	anim_wait 8
-	anim_obj $48, 132, 48, $0
+	anim_obj ANIM_OBJ_48, -16, 4,   6, 0, $0
 	anim_wait 64
-	anim_sound $1, SFX_BIND
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
+	anim_sound 0, 1, SFX_BIND
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
 	anim_wait 96
 	anim_ret
 ; ca036
@@ -1902,17 +1891,17 @@
 
 BattleAnim_Wrap: ; ca036
 	anim_1gfx ANIM_GFX_ROPE
-	anim_sound $1, SFX_BIND
-	anim_obj $48, 132, 64, $0
+	anim_sound 0, 1, SFX_BIND
+	anim_obj ANIM_OBJ_48, -16, 4,   8, 0, $0
 	anim_wait 8
-	anim_obj $48, 132, 56, $0
+	anim_obj ANIM_OBJ_48, -16, 4,   7, 0, $0
 	anim_wait 8
-	anim_obj $48, 132, 48, $0
+	anim_obj ANIM_OBJ_48, -16, 4,   6, 0, $0
 	anim_wait 64
-	anim_sound $1, SFX_BIND
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
+	anim_sound 0, 1, SFX_BIND
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
 	anim_wait 96
 	anim_ret
 ; ca058
@@ -1919,45 +1908,45 @@
 
 BattleAnim_Confusion: ; ca058
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Confusion_branch_cbcca
-	anim_sound $1, SFX_PSYCHIC
+	anim_call BattleAnim_FollowPlayerHead_1
+	anim_sound 0, 1, SFX_PSYCHIC
 	anim_bgeffect ANIM_BG_NIGHT_SHADE, $0, $0, $8
 	anim_wait 128
 	anim_incbgeffect ANIM_BG_NIGHT_SHADE
-	anim_call BattleAnim_Confusion_branch_cbcd2
+	anim_call BattleAnim_ShowMon_1
 	anim_ret
 ; ca06c
 
 BattleAnim_Constrict: ; ca06c
 	anim_1gfx ANIM_GFX_ROPE
-	anim_sound $1, SFX_BIND
-	anim_obj $49, 132, 64, $0
+	anim_sound 0, 1, SFX_BIND
+	anim_obj ANIM_OBJ_49, -16, 4,   8, 0, $0
 	anim_wait 8
-	anim_obj $48, 132, 48, $0
+	anim_obj ANIM_OBJ_48, -16, 4,   6, 0, $0
 	anim_wait 8
-	anim_obj $49, 132, 40, $0
+	anim_obj ANIM_OBJ_49, -16, 4,   5, 0, $0
 	anim_wait 8
-	anim_obj $48, 132, 56, $0
+	anim_obj ANIM_OBJ_48, -16, 4,   7, 0, $0
 	anim_wait 64
 	anim_ret
 ; ca08a
 
 BattleAnim_Earthquake: ; ca08a
-	anim_bgeffect $1f, $60, $4, $10
-BattleAnim_Earthquake_branch_ca08f: ; ca08f
-	anim_sound $1, SFX_EMBER
+	anim_bgeffect ANIM_BG_1F, $60, $4, $10
+.loop
+	anim_sound 0, 1, SFX_EMBER
 	anim_wait 24
-	anim_loop $4, BattleAnim_Earthquake_branch_ca08f
+	anim_loop 4, .loop
 	anim_ret
 ; ca098
 
 BattleAnim_Fissure: ; ca098
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $40
-	anim_bgeffect $1f, $60, $4, $0
-BattleAnim_Fissure_branch_ca0a2: ; ca0a2
-	anim_sound $1, SFX_EMBER
+	anim_bgeffect ANIM_BG_1F, $60, $4, $0
+.loop
+	anim_sound 0, 1, SFX_EMBER
 	anim_wait 24
-	anim_loop $4, BattleAnim_Fissure_branch_ca0a2
+	anim_loop 4, .loop
 	anim_ret
 ; ca0ab
 
@@ -1964,22 +1953,22 @@
 BattleAnim_Growl: ; ca0ab
 	anim_1gfx ANIM_GFX_NOISE
 	anim_enemyfeetobj
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_cry $0
-BattleAnim_Growl_branch_ca0b5: ; ca0b5
+.loop
 	anim_call BattleAnim_Growl_branch_cbbbc
 	anim_wait 16
-	anim_loop $3, BattleAnim_Growl_branch_ca0b5
+	anim_loop 3, .loop
 	anim_wait 9
 	anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $1, $0
 	anim_wait 8
-	anim_bgeffect $19, $0, $0, $40
+	anim_bgeffect ANIM_BG_19, $0, $0, $40
 	anim_wait 64
-	anim_incbgeffect $19
+	anim_incbgeffect ANIM_BG_19
 	anim_wait 1
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 5
-	anim_incobj $a
+	anim_incobj 10
 	anim_wait 8
 	anim_ret
 ; ca0d7
@@ -1986,27 +1975,27 @@
 
 BattleAnim_Roar: ; ca0d7
 	anim_1gfx ANIM_GFX_NOISE
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_cry $1
-BattleAnim_Roar_branch_ca0e0: ; ca0e0
+.loop
 	anim_call BattleAnim_Roar_branch_cbbbc
 	anim_wait 16
-	anim_loop $3, BattleAnim_Roar_branch_ca0e0
+	anim_loop 3, .loop
 	anim_wait 16
-	anim_jumpif $0, BattleAnim_Roar_branch_ca0f3
-	anim_bgeffect $27, $0, $0, $0
+	anim_jumpif $0, .done
+	anim_bgeffect ANIM_BG_27, $0, $0, $0
 	anim_wait 64
-BattleAnim_Roar_branch_ca0f3: ; ca0f3
+.done
 	anim_ret
 ; ca0f4
 
 BattleAnim_Supersonic: ; ca0f4
 	anim_1gfx ANIM_GFX_PSYCHIC
-BattleAnim_Supersonic_branch_ca0f6: ; ca0f6
-	anim_sound $1a, SFX_SUPERSONIC
-	anim_obj $4c, 64, 88, $2
+.loop
+	anim_sound 6, 2, SFX_SUPERSONIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $2
 	anim_wait 4
-	anim_loop $a, BattleAnim_Supersonic_branch_ca0f6
+	anim_loop 10, .loop
 	anim_wait 64
 	anim_ret
 ; ca105
@@ -2013,12 +2002,12 @@
 
 BattleAnim_Screech: ; ca105
 	anim_1gfx ANIM_GFX_PSYCHIC
-	anim_bgeffect $1f, $8, $1, $20
-	anim_sound $1a, SFX_SCREECH
-BattleAnim_Screech_branch_ca10f: ; ca10f
-	anim_obj $4c, 64, 88, $2
+	anim_bgeffect ANIM_BG_1F, $8, $1, $20
+	anim_sound 6, 2, SFX_SCREECH
+.loop
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $2
 	anim_wait 2
-	anim_loop $2, BattleAnim_Screech_branch_ca10f
+	anim_loop 2, .loop
 	anim_wait 64
 	anim_ret
 ; ca11b
@@ -2025,21 +2014,21 @@
 
 BattleAnim_ConfuseRay: ; ca11b
 	anim_1gfx ANIM_GFX_SPEED
-	anim_bgeffect $6, $0, $2, $0
-	anim_bgeffect $8, $0, $4, $0
-	anim_obj $4d, 64, 88, $0
-	anim_obj $4d, 64, 88, $80
-	anim_obj $4d, 64, 88, $88
-	anim_obj $4d, 64, 88, $90
-	anim_obj $4d, 64, 88, $98
-	anim_obj $4d, 64, 88, $a0
-	anim_obj $4d, 64, 88, $a8
-	anim_obj $4d, 64, 88, $b0
-	anim_obj $4d, 64, 88, $b8
-BattleAnim_ConfuseRay_branch_ca154: ; ca154
-	anim_sound $1a, SFX_WHIRLWIND
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_bgeffect ANIM_BG_08, $0, $4, $0
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $80
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $88
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $90
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $98
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $a0
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $a8
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $b0
+	anim_obj ANIM_OBJ_4D,   8, 0,  11, 0, $b8
+.loop
+	anim_sound 6, 2, SFX_WHIRLWIND
 	anim_wait 16
-	anim_loop $8, BattleAnim_ConfuseRay_branch_ca154
+	anim_loop 8, .loop
 	anim_wait 32
 	anim_ret
 ; ca15e
@@ -2046,7 +2035,7 @@
 
 BattleAnim_Leer: ; ca15e
 	anim_1gfx ANIM_GFX_BEAM
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_call BattleAnim_Leer_branch_cbadc
 	anim_wait 16
 	anim_ret
@@ -2054,14 +2043,14 @@
 
 BattleAnim_Reflect: ; ca16a
 	anim_1gfx ANIM_GFX_REFLECT
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $0, SFX_SHINE
-	anim_obj $50, 72, 80, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
 	anim_wait 24
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $0, SFX_SHINE
-	anim_obj $50, 72, 80, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
 	anim_wait 64
 	anim_ret
 ; ca18e
@@ -2068,26 +2057,26 @@
 
 BattleAnim_LightScreen: ; ca18e
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_REFLECT
-	anim_bgeffect $6, $0, $2, $0
-	anim_sound $0, SFX_FLASH
-	anim_obj $50, 72, 80, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_sound 0, 0, SFX_FLASH
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
 	anim_wait 4
-	anim_obj $6d, 72, 80, $0
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $0
 	anim_wait 4
-	anim_obj $6d, 72, 80, $8
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $8
 	anim_wait 4
-	anim_obj $6d, 72, 80, $10
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $10
 	anim_wait 4
-	anim_obj $6d, 72, 80, $18
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $18
 	anim_wait 4
-	anim_obj $50, 72, 80, $0
-	anim_obj $6d, 72, 80, $20
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $20
 	anim_wait 4
-	anim_obj $6d, 72, 80, $28
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $28
 	anim_wait 4
-	anim_obj $6d, 72, 80, $30
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $30
 	anim_wait 4
-	anim_obj $6d, 72, 80, $38
+	anim_obj ANIM_OBJ_6D,   9, 0,  10, 0, $38
 	anim_wait 64
 	anim_ret
 ; ca1d5
@@ -2094,12 +2083,12 @@
 
 BattleAnim_Amnesia: ; ca1d5
 	anim_1gfx ANIM_GFX_STATUS
-	anim_sound $0, SFX_LICK
-	anim_obj $53, 64, 80, $2
+	anim_sound 0, 0, SFX_LICK
+	anim_obj ANIM_OBJ_53,   8, 0,  10, 0, $2
 	anim_wait 16
-	anim_obj $53, 68, 80, $1
+	anim_obj ANIM_OBJ_53,   8, 4,  10, 0, $1
 	anim_wait 16
-	anim_obj $53, 72, 80, $0
+	anim_obj ANIM_OBJ_53,   9, 0,  10, 0, $0
 	anim_wait 64
 	anim_ret
 ; ca1ed
@@ -2106,14 +2095,14 @@
 
 BattleAnim_DizzyPunch: ; ca1ed
 	anim_2gfx ANIM_GFX_STATUS, ANIM_GFX_HIT
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 136, 40, $0
-	anim_obj $2, 136, 64, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -15, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_02, -15, 0,   8, 0, $0
 	anim_wait 16
-	anim_sound $1, SFX_KINESIS
-	anim_obj ANIM_OBJ_CHICK, 136, 24, $15
-	anim_obj ANIM_OBJ_CHICK, 136, 24, $aa
-	anim_obj ANIM_OBJ_CHICK, 136, 24, $bf
+	anim_sound 0, 1, SFX_KINESIS
+	anim_obj ANIM_OBJ_CHICK, -15, 0,   3, 0, $15
+	anim_obj ANIM_OBJ_CHICK, -15, 0,   3, 0, $aa
+	anim_obj ANIM_OBJ_CHICK, -15, 0,   3, 0, $bf
 	anim_wait 96
 	anim_ret
 ; ca212
@@ -2120,11 +2109,11 @@
 
 BattleAnim_Rest: ; ca212
 	anim_1gfx ANIM_GFX_STATUS
-	anim_sound $0, SFX_TAIL_WHIP
-BattleAnim_Rest_branch_ca217: ; ca217
-	anim_obj $54, 64, 80, $0
+	anim_sound 0, 0, SFX_TAIL_WHIP
+.loop
+	anim_obj ANIM_OBJ_54,   8, 0,  10, 0, $0
 	anim_wait 40
-	anim_loop $3, BattleAnim_Rest_branch_ca217
+	anim_loop 3, .loop
 	anim_wait 32
 	anim_ret
 ; ca223
@@ -2131,51 +2120,50 @@
 
 BattleAnim_AcidArmor: ; ca223
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_AcidArmor_branch_cbcaf
+	anim_call BattleAnim_FollowPlayerHead_0
 	anim_bgeffect ANIM_BG_ACID_ARMOR, $0, $1, $8
-	anim_sound $0, SFX_MEGA_PUNCH
+	anim_sound 0, 0, SFX_MEGA_PUNCH
 	anim_wait 64
 	anim_incbgeffect ANIM_BG_ACID_ARMOR
-	anim_call BattleAnim_AcidArmor_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca237
 
 BattleAnim_Splash: ; ca237
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $0, SFX_VICEGRIP
-	anim_call BattleAnim_Splash_branch_cbcaf
-	anim_bgeffect $22, $0, $1, $0
+	anim_sound 0, 0, SFX_VICEGRIP
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
 	anim_wait 96
-	anim_incbgeffect $22
-	anim_call BattleAnim_Splash_branch_cbcb7
+	anim_incbgeffect ANIM_BG_BOUNCE_DOWN
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca24b
 
 BattleAnim_Dig: ; ca24b
 	anim_2gfx ANIM_GFX_SAND, ANIM_GFX_HIT
-	anim_jumpif $0, BattleAnim_Dig_branch_ca27d
-	anim_jumpif $2, BattleAnim_Dig_branch_ca286
-	anim_call BattleAnim_Dig_branch_cbcaf
-	anim_bgeffect $23, $0, $1, $1
-	anim_obj $57, 72, 104, $0
-BattleAnim_Dig_branch_ca263: ; ca263
-	anim_sound $0, SFX_RAZOR_WIND
-	anim_obj $56, 56, 104, $0
+	anim_jumpif $0, .hit
+	anim_jumpif $2, .fail
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_DIG, $0, $1, $1
+	anim_obj ANIM_OBJ_57,   9, 0,  13, 0, $0
+.loop
+	anim_sound 0, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_56,   7, 0,  13, 0, $0
 	anim_wait 16
-	anim_loop $6, BattleAnim_Dig_branch_ca263
+	anim_loop 6, .loop
 	anim_wait 32
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
 	anim_wait 8
-	anim_incbgeffect $23
-	anim_call BattleAnim_Dig_branch_cbcb7
+	anim_incbgeffect ANIM_BG_DIG
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
-; ca27d
 
-BattleAnim_Dig_branch_ca27d: ; ca27d
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $1, 136, 56, $0
+.hit
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 32
-BattleAnim_Dig_branch_ca286: ; ca286
+.fail
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $1, $0
 	anim_wait 32
 	anim_ret
@@ -2189,24 +2177,24 @@
 
 BattleAnim_StringShot: ; ca293
 	anim_1gfx ANIM_GFX_WEB
-	anim_bgeffect $7, $0, $2, $0
-	anim_sound $1a, SFX_MENU
-	anim_obj $5a, 64, 80, $0
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_5A,   8, 0,  10, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_MENU
-	anim_obj $5a, 132, 48, $1
+	anim_sound 0, 1, SFX_MENU
+	anim_obj ANIM_OBJ_5A, -16, 4,   6, 0, $1
 	anim_wait 4
-	anim_sound $1a, SFX_MENU
-	anim_obj $5a, 64, 88, $0
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_5A,   8, 0,  11, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_MENU
-	anim_obj $5a, 132, 64, $1
+	anim_sound 0, 1, SFX_MENU
+	anim_obj ANIM_OBJ_5A, -16, 4,   8, 0, $1
 	anim_wait 4
-	anim_sound $1a, SFX_MENU
-	anim_obj $5a, 64, 84, $0
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_5A,   8, 0,  10, 4, $0
 	anim_wait 4
-	anim_sound $1, SFX_MENU
-	anim_obj $5a, 132, 56, $2
+	anim_sound 0, 1, SFX_MENU
+	anim_obj ANIM_OBJ_5A, -16, 4,   7, 0, $2
 	anim_wait 64
 	anim_ret
 ; ca2d1
@@ -2213,132 +2201,132 @@
 
 BattleAnim_Headbutt: ; ca2d1
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $14, $2, $0
+	anim_bgeffect ANIM_BG_1F, $14, $2, $0
 	anim_wait 32
-	anim_call BattleAnim_Headbutt_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_HEADBUTT
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_HEADBUTT
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_Headbutt_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca2ef
 
 BattleAnim_Tackle: ; ca2ef
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Tackle_branch_cbcaf
+	anim_call BattleAnim_FollowPlayerHead_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_TACKLE
-	anim_obj $0, 136, 48, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_00, -15, 0,   6, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_Tackle_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca307
 
 BattleAnim_BodySlam: ; ca307
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_BodySlam_branch_cbcaf
-	anim_bgeffect $22, $0, $1, $0
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
 	anim_wait 32
-	anim_incbgeffect $22
+	anim_incbgeffect ANIM_BG_BOUNCE_DOWN
 	anim_wait 4
-	anim_bgeffect $25, $0, $1, $0
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 3
-	anim_sound $1, SFX_TACKLE
-	anim_obj $1, 136, 48, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_TACKLE
-	anim_obj $1, 144, 48, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 3
-	anim_call BattleAnim_BodySlam_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca331
 
 BattleAnim_TakeDown: ; ca331
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_TakeDown_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 3
-	anim_sound $1, SFX_TACKLE
+	anim_sound 0, 1, SFX_TACKLE
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_obj $1, 128, 56, $0
+	anim_obj ANIM_OBJ_01,  16, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_TACKLE
+	anim_sound 0, 1, SFX_TACKLE
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_obj $1, 144, 48, $0
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 3
-	anim_call BattleAnim_TakeDown_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca35c
 
 BattleAnim_DoubleEdge: ; ca35c
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_DoubleEdge_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $10
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 3
-	anim_sound $1, SFX_TACKLE
-	anim_obj $0, 128, 48, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_00,  16, 0,   6, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_TACKLE
-	anim_obj $0, 144, 48, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_00, -14, 0,   6, 0, $0
 	anim_wait 3
-	anim_call BattleAnim_DoubleEdge_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca382
 
 BattleAnim_Submission: ; ca382
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Submission_branch_cbcc2
-	anim_bgeffect $26, $0, $0, $0
-	anim_sound $1, SFX_SUBMISSION
+	anim_call BattleAnim_FollowEnemyFeet_1
+	anim_bgeffect ANIM_BG_26, $0, $0, $0
+	anim_sound 0, 1, SFX_SUBMISSION
 	anim_wait 32
-	anim_obj $1, 120, 48, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   6, 0, $0
 	anim_wait 32
-	anim_obj $1, 152, 56, $0
+	anim_obj ANIM_OBJ_01, -13, 0,   7, 0, $0
 	anim_wait 32
-	anim_obj $1, 136, 52, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 4, $0
 	anim_wait 32
-	anim_incbgeffect $26
-	anim_call BattleAnim_Submission_branch_cbcd2
+	anim_incbgeffect ANIM_BG_26
+	anim_call BattleAnim_ShowMon_1
 	anim_ret
 ; ca3a8
 
 BattleAnim_Whirlwind: ; ca3a8
 	anim_1gfx ANIM_GFX_WIND
-BattleAnim_Whirlwind_branch_ca3aa: ; ca3aa
-	anim_sound $0, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_GUST, 64, 112, $0
+.loop
+	anim_sound 0, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_GUST,   8, 0,  14, 0, $0
 	anim_wait 6
-	anim_loop $9, BattleAnim_Whirlwind_branch_ca3aa
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_incobj $7
-	anim_incobj $8
-	anim_incobj $9
-	anim_sound $42, SFX_WHIRLWIND
+	anim_loop 9, .loop
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_incobj  7
+	anim_incobj  8
+	anim_incobj  9
+	anim_sound 16, 2, SFX_WHIRLWIND
 	anim_wait 128
-	anim_jumpif $0, BattleAnim_Whirlwind_branch_ca3d7
-	anim_bgeffect $27, $0, $0, $0
+	anim_jumpif $0, .done
+	anim_bgeffect ANIM_BG_27, $0, $0, $0
 	anim_wait 64
-BattleAnim_Whirlwind_branch_ca3d7: ; ca3d7
+.done
 	anim_ret
 ; ca3d8
 
 BattleAnim_Hypnosis: ; ca3d8
 	anim_1gfx ANIM_GFX_PSYCHIC
-BattleAnim_Hypnosis_branch_ca3da: ; ca3da
-	anim_sound $1a, SFX_SUPERSONIC
-	anim_obj $4c, 64, 88, $2
-	anim_obj $4c, 56, 80, $2
+.loop
+	anim_sound 6, 2, SFX_SUPERSONIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $2
+	anim_obj ANIM_OBJ_4C,   7, 0,  10, 0, $2
 	anim_wait 8
-	anim_loop $3, BattleAnim_Hypnosis_branch_ca3da
+	anim_loop 3, .loop
 	anim_wait 56
 	anim_ret
 ; ca3ee
@@ -2345,12 +2333,12 @@
 
 BattleAnim_Haze: ; ca3ee
 	anim_1gfx ANIM_GFX_HAZE
-	anim_sound $1, SFX_SURF
-BattleAnim_Haze_branch_ca3f3: ; ca3f3
-	anim_obj $5b, 48, 56, $0
-	anim_obj $5b, 132, 16, $0
+	anim_sound 0, 1, SFX_SURF
+.loop
+	anim_obj ANIM_OBJ_5B,   6, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_5B, -16, 4,   2, 0, $0
 	anim_wait 12
-	anim_loop $5, BattleAnim_Haze_branch_ca3f3
+	anim_loop 5, .loop
 	anim_wait 96
 	anim_ret
 ; ca404
@@ -2358,11 +2346,11 @@
 BattleAnim_Mist: ; ca404
 	anim_obp0 $54
 	anim_1gfx ANIM_GFX_HAZE
-	anim_sound $0, SFX_SURF
-BattleAnim_Mist_branch_ca40b: ; ca40b
-	anim_obj $5c, 48, 56, $0
+	anim_sound 0, 0, SFX_SURF
+.loop
+	anim_obj ANIM_OBJ_5C,   6, 0,   7, 0, $0
 	anim_wait 8
-	anim_loop $a, BattleAnim_Mist_branch_ca40b
+	anim_loop 10, .loop
 	anim_wait 96
 	anim_ret
 ; ca417
@@ -2369,11 +2357,11 @@
 
 BattleAnim_Smog: ; ca417
 	anim_1gfx ANIM_GFX_HAZE
-	anim_sound $1, SFX_BUBBLEBEAM
-BattleAnim_Smog_branch_ca41c: ; ca41c
-	anim_obj $5d, 132, 16, $0
+	anim_sound 0, 1, SFX_BUBBLEBEAM
+.loop
+	anim_obj ANIM_OBJ_5D, -16, 4,   2, 0, $0
 	anim_wait 8
-	anim_loop $a, BattleAnim_Smog_branch_ca41c
+	anim_loop 10, .loop
 	anim_wait 96
 	anim_ret
 ; ca428
@@ -2380,11 +2368,11 @@
 
 BattleAnim_PoisonGas: ; ca428
 	anim_1gfx ANIM_GFX_HAZE
-	anim_sound $42, SFX_BUBBLEBEAM
-BattleAnim_PoisonGas_branch_ca42d: ; ca42d
-	anim_obj $5e, 44, 80, $2
+	anim_sound 16, 2, SFX_BUBBLEBEAM
+.loop
+	anim_obj ANIM_OBJ_5E,   5, 4,  10, 0, $2
 	anim_wait 8
-	anim_loop $a, BattleAnim_PoisonGas_branch_ca42d
+	anim_loop 10, .loop
 	anim_wait 128
 	anim_ret
 ; ca439
@@ -2391,10 +2379,10 @@
 
 BattleAnim_HornAttack: ; ca439
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-	anim_obj $5f, 72, 80, $1
+	anim_obj ANIM_OBJ_5F,   9, 0,  10, 0, $1
 	anim_wait 16
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca44c
@@ -2401,20 +2389,20 @@
 
 BattleAnim_FuryAttack: ; ca44c
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-	anim_obj $5f, 72, 72, $2
+	anim_obj ANIM_OBJ_5F,   9, 0,   9, 0, $2
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $4, 128, 40, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_04,  16, 0,   5, 0, $0
 	anim_wait 8
-	anim_obj $5f, 80, 88, $2
+	anim_obj ANIM_OBJ_5F,  10, 0,  11, 0, $2
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $4, 136, 56, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_04, -15, 0,   7, 0, $0
 	anim_wait 8
-	anim_obj $5f, 76, 80, $2
+	anim_obj ANIM_OBJ_5F,   9, 4,  10, 0, $2
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $4, 132, 48, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_04, -16, 4,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; ca47d
@@ -2422,31 +2410,31 @@
 BattleAnim_HornDrill: ; ca47d
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $40
-	anim_obj $5f, 72, 80, $3
+	anim_obj ANIM_OBJ_5F,   9, 0,  10, 0, $3
 	anim_wait 8
-BattleAnim_HornDrill_branch_ca48b: ; ca48b
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $0, 132, 40, $0
+.loop
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_00, -16, 4,   5, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $0, 140, 48, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_00, -15, 4,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $0, 132, 56, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_00, -16, 4,   7, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_HORN_ATTACK
-	anim_obj $0, 124, 48, $0
+	anim_sound 0, 1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_00,  15, 4,   6, 0, $0
 	anim_wait 8
-	anim_loop $3, BattleAnim_HornDrill_branch_ca48b
+	anim_loop 3, .loop
 	anim_ret
 ; ca4b4
 
 BattleAnim_PoisonSting: ; ca4b4
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-	anim_obj $60, 64, 92, $14
+	anim_obj ANIM_OBJ_60,   8, 0,  11, 4, $14
 	anim_wait 16
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 136, 56, $0
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca4c7
@@ -2453,13 +2441,13 @@
 
 BattleAnim_Twineedle: ; ca4c7
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $60, 64, 92, $14
-	anim_obj $60, 56, 84, $14
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_60,   8, 0,  11, 4, $14
+	anim_obj ANIM_OBJ_60,   7, 0,  10, 4, $14
 	anim_wait 16
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 136, 56, $0
-	anim_obj $5, 128, 48, $0
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -15, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_05,  16, 0,   6, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca4e7
@@ -2466,20 +2454,20 @@
 
 BattleAnim_PinMissile: ; ca4e7
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-BattleAnim_PinMissile_branch_ca4ea: ; ca4ea
-	anim_obj $60, 64, 92, $28
+.loop
+	anim_obj ANIM_OBJ_60,   8, 0,  11, 4, $28
 	anim_wait 8
-	anim_obj $60, 56, 84, $28
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 136, 56, $0
+	anim_obj ANIM_OBJ_60,   7, 0,  10, 4, $28
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -15, 0,   7, 0, $0
 	anim_wait 8
-	anim_obj $60, 52, 88, $28
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 128, 48, $0
+	anim_obj ANIM_OBJ_60,   6, 4,  11, 0, $28
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05,  16, 0,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 132, 52, $0
-	anim_loop $3, BattleAnim_PinMissile_branch_ca4ea
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -16, 4,   6, 4, $0
+	anim_loop 3, .loop
 	anim_wait 16
 	anim_ret
 ; ca51a
@@ -2486,20 +2474,20 @@
 
 BattleAnim_SpikeCannon: ; ca51a
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-BattleAnim_SpikeCannon_branch_ca51d: ; ca51d
-	anim_obj $60, 64, 92, $18
+.loop
+	anim_obj ANIM_OBJ_60,   8, 0,  11, 4, $18
 	anim_wait 8
-	anim_obj $60, 56, 84, $18
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 136, 56, $0
+	anim_obj ANIM_OBJ_60,   7, 0,  10, 4, $18
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -15, 0,   7, 0, $0
 	anim_wait 8
-	anim_obj $60, 52, 88, $18
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 128, 48, $0
+	anim_obj ANIM_OBJ_60,   6, 4,  11, 0, $18
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05,  16, 0,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_POISON_STING
-	anim_obj $5, 132, 52, $0
-	anim_loop $3, BattleAnim_SpikeCannon_branch_ca51d
+	anim_sound 0, 1, SFX_POISON_STING
+	anim_obj ANIM_OBJ_05, -16, 4,   6, 4, $0
+	anim_loop 3, .loop
 	anim_wait 16
 	anim_ret
 ; ca54d
@@ -2506,29 +2494,29 @@
 
 BattleAnim_Transform: ; ca54d
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Transform_branch_cbcaf
+	anim_call BattleAnim_FollowPlayerHead_0
 	anim_transform
-	anim_sound $0, SFX_PSYBEAM
-	anim_bgeffect $28, $0, $1, $0
+	anim_sound 0, 0, SFX_PSYBEAM
+	anim_bgeffect ANIM_BG_28, $0, $1, $0
 	anim_wait 48
 	anim_updateactorpic
-	anim_incbgeffect $28
+	anim_incbgeffect ANIM_BG_28
 	anim_wait 48
-	anim_call BattleAnim_Transform_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca564
 
 BattleAnim_PetalDance: ; ca564
-	anim_sound $0, SFX_MENU
+	anim_sound 0, 0, SFX_MENU
 	anim_2gfx ANIM_GFX_FLOWER, ANIM_GFX_HIT
-BattleAnim_PetalDance_branch_ca56a: ; ca56a
-	anim_obj $61, 48, 56, $0
+.loop
+	anim_obj ANIM_OBJ_61,   6, 0,   7, 0, $0
 	anim_wait 11
-	anim_loop $8, BattleAnim_PetalDance_branch_ca56a
+	anim_loop 8, .loop
 	anim_wait 128
 	anim_wait 64
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $0, 136, 56, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca580
@@ -2535,11 +2523,11 @@
 
 BattleAnim_Barrage: ; ca580
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_EXPLOSION
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $62, 64, 92, $10
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_62,   8, 0,  11, 4, $10
 	anim_wait 36
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $18, 136, 56, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_18, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca596
@@ -2546,11 +2534,11 @@
 
 BattleAnim_PayDay: ; ca596
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_STATUS
-	anim_sound $1, SFX_POUND
-	anim_obj $1, 128, 56, $0
+	anim_sound 0, 1, SFX_POUND
+	anim_obj ANIM_OBJ_01,  16, 0,   7, 0, $0
 	anim_wait 16
-	anim_sound $1, SFX_PAY_DAY
-	anim_obj $63, 120, 76, $1
+	anim_sound 0, 1, SFX_PAY_DAY
+	anim_obj ANIM_OBJ_63,  15, 0,   9, 4, $1
 	anim_wait 64
 	anim_ret
 ; ca5ac
@@ -2558,15 +2546,15 @@
 BattleAnim_Mimic: ; ca5ac
 	anim_1gfx ANIM_GFX_SPEED
 	anim_obp0 $fc
-	anim_sound $ff, SFX_LICK
-	anim_obj $65, 132, 44, $0
-	anim_obj $65, 132, 44, $8
-	anim_obj $65, 132, 44, $10
-	anim_obj $65, 132, 44, $18
-	anim_obj $65, 132, 44, $20
-	anim_obj $65, 132, 44, $28
-	anim_obj $65, 132, 44, $30
-	anim_obj $65, 132, 44, $38
+	anim_sound 63, 3, SFX_LICK
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $8
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $10
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $18
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $20
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $28
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $30
+	anim_obj ANIM_OBJ_65, -16, 4,   5, 4, $38
 	anim_wait 128
 	anim_wait 48
 	anim_ret
@@ -2574,11 +2562,11 @@
 
 BattleAnim_LovelyKiss: ; ca5de
 	anim_2gfx ANIM_GFX_OBJECTS, ANIM_GFX_ANGELS
-	anim_bgeffect $7, $0, $2, $0
-	anim_obj $96, 152, 40, $0
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_obj ANIM_OBJ_96, -13, 0,   5, 0, $0
 	anim_wait 32
-	anim_sound $1, SFX_LICK
-	anim_obj ANIM_OBJ_HEART, 128, 40, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_HEART,  16, 0,   5, 0, $0
 	anim_wait 40
 	anim_ret
 ; ca5f6
@@ -2585,11 +2573,11 @@
 
 BattleAnim_Bonemerang: ; ca5f6
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_HIT
-	anim_sound $1a, SFX_HYDRO_PUMP
-	anim_obj $67, 88, 56, $1c
+	anim_sound 6, 2, SFX_HYDRO_PUMP
+	anim_obj ANIM_OBJ_67,  11, 0,   7, 0, $1c
 	anim_wait 24
-	anim_sound $1, SFX_MOVE_PUZZLE_PIECE
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_MOVE_PUZZLE_PIECE
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 24
 	anim_ret
 ; ca60c
@@ -2596,12 +2584,12 @@
 
 BattleAnim_Swift: ; ca60c
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_sound $1a, SFX_METRONOME
-	anim_obj $6a, 64, 88, $4
+	anim_sound 6, 2, SFX_METRONOME
+	anim_obj ANIM_OBJ_6A,   8, 0,  11, 0, $4
 	anim_wait 4
-	anim_obj $6a, 64, 72, $4
+	anim_obj ANIM_OBJ_6A,   8, 0,   9, 0, $4
 	anim_wait 4
-	anim_obj $6a, 64, 76, $4
+	anim_obj ANIM_OBJ_6A,   8, 0,   9, 4, $4
 	anim_wait 64
 	anim_ret
 ; ca624
@@ -2608,14 +2596,14 @@
 
 BattleAnim_Crabhammer: ; ca624
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_wait 48
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-BattleAnim_Crabhammer_branch_ca631: ; ca631
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 136, 56, $0
+.loop
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 12
-	anim_loop $3, BattleAnim_Crabhammer_branch_ca631
+	anim_loop 3, .loop
 	anim_ret
 ; ca63f
 
@@ -2622,33 +2610,33 @@
 BattleAnim_SkullBash: ; ca63f
 	anim_jumpif $1, BattleAnim_SkullBash_branch_c9fb5
 	anim_1gfx ANIM_GFX_HIT
-	anim_bgeffect $1f, $14, $2, $0
+	anim_bgeffect ANIM_BG_1F, $14, $2, $0
 	anim_wait 32
-	anim_call BattleAnim_SkullBash_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
-BattleAnim_SkullBash_branch_ca659: ; ca659
-	anim_sound $1, SFX_HEADBUTT
-	anim_obj $1, 136, 56, $0
+.loop
+	anim_sound 0, 1, SFX_HEADBUTT
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 8
-	anim_loop $3, BattleAnim_SkullBash_branch_ca659
-	anim_call BattleAnim_SkullBash_branch_cbcb7
+	anim_loop 3, .loop
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca66a
 
 BattleAnim_Kinesis: ; ca66a
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_NOISE
-	anim_bgeffect $6, $0, $2, $0
-	anim_obj $6b, 80, 76, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_obj ANIM_OBJ_6B,  10, 0,   9, 4, $0
 	anim_wait 32
-BattleAnim_Kinesis_branch_ca678: ; ca678
-	anim_sound $0, SFX_KINESIS
-	anim_obj $4b, 64, 88, $0
+.loop
+	anim_sound 0, 0, SFX_KINESIS
+	anim_obj ANIM_OBJ_4B,   8, 0,  11, 0, $0
 	anim_wait 32
-	anim_loop $3, BattleAnim_Kinesis_branch_ca678
+	anim_loop 3, .loop
 	anim_wait 32
-	anim_sound $0, SFX_KINESIS_2
+	anim_sound 0, 0, SFX_KINESIS_2
 	anim_wait 32
 	anim_ret
 ; ca68b
@@ -2655,11 +2643,11 @@
 
 BattleAnim_Peck: ; ca68b
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 128, 48, $0
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02,  16, 0,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 136, 56, $0
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca6a0
@@ -2666,20 +2654,20 @@
 
 BattleAnim_DrillPeck: ; ca6a0
 	anim_1gfx ANIM_GFX_HIT
-BattleAnim_DrillPeck_branch_ca6a2: ; ca6a2
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 124, 56, $0
+.loop
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02,  15, 4,   7, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 132, 48, $0
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02, -16, 4,   6, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 140, 56, $0
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02, -15, 4,   7, 0, $0
 	anim_wait 4
-	anim_sound $1, SFX_PECK
-	anim_obj $2, 132, 64, $0
+	anim_sound 0, 1, SFX_PECK
+	anim_obj ANIM_OBJ_02, -16, 4,   8, 0, $0
 	anim_wait 4
-	anim_loop $5, BattleAnim_DrillPeck_branch_ca6a2
+	anim_loop 5, .loop
 	anim_wait 16
 	anim_ret
 ; ca6cc
@@ -2687,15 +2675,15 @@
 BattleAnim_Guillotine: ; ca6cc
 	anim_1gfx ANIM_GFX_CUT
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $10
-	anim_bgeffect $1f, $40, $2, $0
-	anim_sound $1, SFX_VICEGRIP
-	anim_obj $37, 156, 44, $0
-	anim_obj $37, 152, 40, $0
-	anim_obj $37, 148, 36, $0
-	anim_obj $39, 124, 76, $0
-	anim_obj $39, 120, 72, $0
-	anim_obj $39, 116, 68, $0
-	anim_obj $39, 120, 72, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
+	anim_sound 0, 1, SFX_VICEGRIP
+	anim_obj ANIM_OBJ_37, -13, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_37, -13, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_37, -14, 4,   4, 4, $0
+	anim_obj ANIM_OBJ_39,  15, 4,   9, 4, $0
+	anim_obj ANIM_OBJ_39,  15, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_39,  14, 4,   8, 4, $0
+	anim_obj ANIM_OBJ_39,  15, 0,   9, 0, $0
 	anim_wait 32
 	anim_ret
 ; ca700
@@ -2702,38 +2690,38 @@
 
 BattleAnim_Flash: ; ca700
 	anim_1gfx ANIM_GFX_SPEED
-	anim_sound $1, SFX_FLASH
+	anim_sound 0, 1, SFX_FLASH
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $20
 	anim_wait 4
-	anim_obj $6c, 136, 56, $0
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $0
 	anim_wait 4
-	anim_obj $6c, 136, 56, $8
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $8
 	anim_wait 4
-	anim_obj $6c, 136, 56, $10
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $10
 	anim_wait 4
-	anim_obj $6c, 136, 56, $18
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $18
 	anim_wait 4
-	anim_obj $6c, 136, 56, $20
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $20
 	anim_wait 4
-	anim_obj $6c, 136, 56, $28
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $28
 	anim_wait 4
-	anim_obj $6c, 136, 56, $30
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $30
 	anim_wait 4
-	anim_obj $6c, 136, 56, $38
+	anim_obj ANIM_OBJ_6C, -15, 0,   7, 0, $38
 	anim_wait 32
 	anim_ret
 ; ca73c
 
 BattleAnim_Substitute: ; ca73c
-	anim_sound $0, SFX_SURF
+	anim_sound 0, 0, SFX_SURF
 	anim_jumpif $3, BattleAnim_Substitute_branch_ca77c
 	anim_jumpif $2, BattleAnim_Substitute_branch_ca76e
 	anim_jumpif $1, BattleAnim_Substitute_branch_ca760
 	anim_1gfx ANIM_GFX_SMOKE
-	anim_bgeffect $27, $0, $1, $0
+	anim_bgeffect ANIM_BG_27, $0, $1, $0
 	anim_wait 48
 	anim_raisesub
-	anim_obj $1c, 48, 96, $0
+	anim_obj ANIM_OBJ_1C,   6, 0,  12, 0, $0
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $1, $0
 	anim_wait 32
 	anim_ret
@@ -2740,7 +2728,7 @@
 ; ca760
 
 BattleAnim_Substitute_branch_ca760: ; ca760
-	anim_bgeffect $27, $0, $1, $0
+	anim_bgeffect ANIM_BG_27, $0, $1, $0
 	anim_wait 48
 	anim_dropsub
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
@@ -2749,7 +2737,7 @@
 ; ca76e
 
 BattleAnim_Substitute_branch_ca76e: ; ca76e
-	anim_bgeffect $27, $0, $1, $0
+	anim_bgeffect ANIM_BG_27, $0, $1, $0
 	anim_wait 48
 	anim_raisesub
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
@@ -2767,16 +2755,16 @@
 ; ca78a
 
 BattleAnim_Minimize: ; ca78a
-	anim_sound $0, SFX_SURF
+	anim_sound 0, 0, SFX_SURF
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Minimize_branch_cbcaf
+	anim_call BattleAnim_FollowPlayerHead_0
 	anim_minimize
-	anim_bgeffect $28, $0, $1, $0
+	anim_bgeffect ANIM_BG_28, $0, $1, $0
 	anim_wait 48
 	anim_updateactorpic
-	anim_incbgeffect $28
+	anim_incbgeffect ANIM_BG_28
 	anim_wait 48
-	anim_call BattleAnim_Minimize_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca7a1
 
@@ -2783,17 +2771,17 @@
 BattleAnim_SkyAttack: ; ca7a1
 	anim_jumpif $1, BattleAnim_SkyAttack_branch_c9fb5
 	anim_1gfx ANIM_GFX_SKY_ATTACK
-	anim_bgeffect $27, $0, $1, $0
+	anim_bgeffect ANIM_BG_27, $0, $1, $0
 	anim_wait 32
-	anim_sound $0, SFX_HYPER_BEAM
-	anim_obj $6e, 48, 88, $40
+	anim_sound 0, 0, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_6E,   6, 0,  11, 0, $40
 	anim_wait 64
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 21
-	anim_sound $1, SFX_HYPER_BEAM
+	anim_sound 0, 1, SFX_HYPER_BEAM
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_wait 64
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 32
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 16
@@ -2805,19 +2793,19 @@
 	anim_bgp $1b
 	anim_obp1 $1b
 	anim_wait 32
-	anim_call BattleAnim_NightShade_branch_cbcca
+	anim_call BattleAnim_FollowPlayerHead_1
 	anim_bgeffect ANIM_BG_NIGHT_SHADE, $0, $0, $8
-	anim_sound $1, SFX_PSYCHIC
+	anim_sound 0, 1, SFX_PSYCHIC
 	anim_wait 96
 	anim_incbgeffect ANIM_BG_NIGHT_SHADE
-	anim_call BattleAnim_NightShade_branch_cbcd2
+	anim_call BattleAnim_ShowMon_1
 	anim_ret
 ; ca7e5
 
 BattleAnim_Lick: ; ca7e5
 	anim_1gfx ANIM_GFX_WATER
-	anim_sound $1, SFX_LICK
-	anim_obj $6f, 136, 56, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_6F, -15, 0,   7, 0, $0
 	anim_wait 64
 	anim_ret
 ; ca7f1
@@ -2829,8 +2817,8 @@
 	anim_call BattleAnim_TriAttack_branch_cbbdf
 	anim_wait 16
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $4
-	anim_sound $1, SFX_THUNDER
-	anim_obj $2f, 152, 68, $0
+	anim_sound 0, 1, SFX_THUNDER
+	anim_obj ANIM_OBJ_2F, -13, 0,   8, 4, $0
 	anim_wait 16
 	anim_ret
 ; ca80c
@@ -2837,28 +2825,28 @@
 
 BattleAnim_Withdraw: ; ca80c
 	anim_1gfx ANIM_GFX_REFLECT
-	anim_call BattleAnim_Withdraw_branch_cbcaf
-	anim_bgeffect $21, $0, $1, $50
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_21, $0, $1, $50
 	anim_wait 48
-	anim_sound $0, SFX_SHINE
-	anim_obj $70, 48, 88, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_70,   6, 0,  11, 0, $0
 	anim_wait 64
-	anim_incobj $2
+	anim_incobj  2
 	anim_wait 1
-	anim_incbgeffect $21
-	anim_call BattleAnim_Withdraw_branch_cbcb7
+	anim_incbgeffect ANIM_BG_21
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca829
 
 BattleAnim_Psybeam: ; ca829
 	anim_1gfx ANIM_GFX_PSYCHIC
-	anim_bgeffect $6, $0, $2, $0
-	anim_bgeffect $8, $0, $4, $0
-BattleAnim_Psybeam_branch_ca835: ; ca835
-	anim_sound $1a, SFX_PSYBEAM
-	anim_obj $4c, 64, 88, $4
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_bgeffect ANIM_BG_08, $0, $4, $0
+.loop
+	anim_sound 6, 2, SFX_PSYBEAM
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $4
 	anim_wait 4
-	anim_loop $a, BattleAnim_Psybeam_branch_ca835
+	anim_loop 10, .loop
 	anim_wait 48
 	anim_ret
 ; ca844
@@ -2867,7 +2855,7 @@
 	anim_1gfx ANIM_GFX_BUBBLE
 	anim_bgp $1b
 	anim_obp0 $27
-	anim_sound $1b, SFX_WATER_GUN
+	anim_sound 6, 3, SFX_WATER_GUN
 	anim_call BattleAnim_DreamEater_branch_cbab3
 	anim_wait 128
 	anim_wait 48
@@ -2876,7 +2864,7 @@
 
 BattleAnim_LeechLife: ; ca853
 	anim_1gfx ANIM_GFX_BUBBLE
-	anim_sound $1b, SFX_WATER_GUN
+	anim_sound 6, 3, SFX_WATER_GUN
 	anim_call BattleAnim_LeechLife_branch_cbab3
 	anim_wait 128
 	anim_wait 48
@@ -2886,9 +2874,9 @@
 BattleAnim_Harden: ; ca85e
 	anim_1gfx ANIM_GFX_REFLECT
 	anim_obp0 $0
-	anim_call BattleAnim_Harden_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_call BattleAnim_Harden_branch_cbc43
-	anim_call BattleAnim_Harden_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca86c
 
@@ -2895,17 +2883,17 @@
 BattleAnim_Psywave: ; ca86c
 	anim_1gfx ANIM_GFX_PSYCHIC
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
-BattleAnim_Psywave_branch_ca873: ; ca873
-	anim_sound $1a, SFX_PSYCHIC
-	anim_obj $4c, 64, 80, $2
+.loop
+	anim_sound 6, 2, SFX_PSYCHIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  10, 0, $2
 	anim_wait 8
-	anim_sound $1a, SFX_PSYCHIC
-	anim_obj $4c, 64, 88, $3
+	anim_sound 6, 2, SFX_PSYCHIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $3
 	anim_wait 8
-	anim_sound $1a, SFX_PSYCHIC
-	anim_obj $4c, 64, 96, $4
+	anim_sound 6, 2, SFX_PSYCHIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  12, 0, $4
 	anim_wait 8
-	anim_loop $3, BattleAnim_Psywave_branch_ca873
+	anim_loop 3, .loop
 	anim_wait 32
 	anim_incbgeffect ANIM_BG_PSYCHIC
 	anim_wait 4
@@ -2915,7 +2903,7 @@
 BattleAnim_Glare: ; ca897
 	anim_1gfx ANIM_GFX_BEAM
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $20
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_call BattleAnim_Glare_branch_cbadc
 	anim_wait 16
 	anim_ret
@@ -2923,17 +2911,17 @@
 
 BattleAnim_Thrash: ; ca8a8
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_POUND
-	anim_obj $8, 120, 72, $0
-	anim_obj $0, 120, 72, $0
+	anim_sound 0, 1, SFX_POUND
+	anim_obj ANIM_OBJ_08,  15, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_00,  15, 0,   9, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_MOVE_PUZZLE_PIECE
-	anim_obj $6, 136, 56, $0
-	anim_obj $0, 136, 56, $0
+	anim_sound 0, 1, SFX_MOVE_PUZZLE_PIECE
+	anim_obj ANIM_OBJ_06, -15, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 152, 40, $0
-	anim_obj $0, 152, 40, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07, -13, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_00, -13, 0,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca8d5
@@ -2941,15 +2929,15 @@
 BattleAnim_Growth: ; ca8d5
 	anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_sound $0, SFX_SWORDS_DANCE
-	anim_obj $72, 48, 108, $0
-	anim_obj $72, 48, 108, $8
-	anim_obj $72, 48, 108, $10
-	anim_obj $72, 48, 108, $18
-	anim_obj $72, 48, 108, $20
-	anim_obj $72, 48, 108, $28
-	anim_obj $72, 48, 108, $30
-	anim_obj $72, 48, 108, $38
+	anim_sound 0, 0, SFX_SWORDS_DANCE
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $0
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $8
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $10
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $18
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $20
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $28
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $30
+	anim_obj ANIM_OBJ_72,   6, 0,  13, 4, $38
 	anim_wait 64
 	anim_ret
 ; ca909
@@ -2956,15 +2944,15 @@
 
 BattleAnim_Conversion2: ; ca909
 	anim_1gfx ANIM_GFX_EXPLOSION
-	anim_sound $ff, SFX_SHARPEN
-	anim_obj $73, 132, 44, $0
-	anim_obj $73, 132, 44, $8
-	anim_obj $73, 132, 44, $10
-	anim_obj $73, 132, 44, $18
-	anim_obj $73, 132, 44, $20
-	anim_obj $73, 132, 44, $28
-	anim_obj $73, 132, 44, $30
-	anim_obj $73, 132, 44, $38
+	anim_sound 63, 3, SFX_SHARPEN
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $8
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $10
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $18
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $20
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $28
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $30
+	anim_obj ANIM_OBJ_73, -16, 4,   5, 4, $38
 	anim_wait 128
 	anim_wait 48
 	anim_ret
@@ -2972,18 +2960,18 @@
 
 BattleAnim_Smokescreen: ; ca939
 	anim_3gfx ANIM_GFX_HAZE, ANIM_GFX_EGG, ANIM_GFX_SMOKE
-	anim_sound $1a, SFX_THROW_BALL
-	anim_obj $75, 64, 92, $6c
+	anim_sound 6, 2, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_75,   8, 0,  11, 4, $6c
 	anim_wait 24
-	anim_incobj $1
-	anim_sound $1, SFX_BALL_POOF
-	anim_obj $1c, 108, 70, $10
+	anim_incobj  1
+	anim_sound 0, 1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_1C,  13, 4,   8, 6, $10
 	anim_wait 8
-BattleAnim_Smokescreen_branch_ca951: ; ca951
-	anim_sound $1, SFX_MENU
-	anim_obj $74, 132, 60, $20
+.loop
+	anim_sound 0, 1, SFX_MENU
+	anim_obj ANIM_OBJ_74, -16, 4,   7, 4, $20
 	anim_wait 8
-	anim_loop $5, BattleAnim_Smokescreen_branch_ca951
+	anim_loop 5, .loop
 	anim_wait 128
 	anim_ret
 ; ca960
@@ -2990,14 +2978,14 @@
 
 BattleAnim_Strength: ; ca960
 	anim_2gfx ANIM_GFX_ROCKS, ANIM_GFX_HIT
-	anim_bgeffect $20, $10, $1, $20
-	anim_sound $0, SFX_STRENGTH
-	anim_obj $1f, 64, 104, $1
+	anim_bgeffect ANIM_BG_20, $10, $1, $20
+	anim_sound 0, 0, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1F,   8, 0,  13, 0, $1
 	anim_wait 128
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 20
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 132, 40, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -16, 4,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; ca97e
@@ -3004,12 +2992,12 @@
 
 BattleAnim_SwordsDance: ; ca97e
 	anim_1gfx ANIM_GFX_WHIP
-	anim_sound $0, SFX_SWORDS_DANCE
-	anim_obj $76, 48, 108, $0
-	anim_obj $76, 48, 108, $d
-	anim_obj $76, 48, 108, $1a
-	anim_obj $76, 48, 108, $27
-	anim_obj $76, 48, 108, $34
+	anim_sound 0, 0, SFX_SWORDS_DANCE
+	anim_obj ANIM_OBJ_76,   6, 0,  13, 4, $0
+	anim_obj ANIM_OBJ_76,   6, 0,  13, 4, $d
+	anim_obj ANIM_OBJ_76,   6, 0,  13, 4, $1a
+	anim_obj ANIM_OBJ_76,   6, 0,  13, 4, $27
+	anim_obj ANIM_OBJ_76,   6, 0,  13, 4, $34
 	anim_wait 56
 	anim_ret
 ; ca99e
@@ -3016,17 +3004,17 @@
 
 BattleAnim_QuickAttack: ; ca99e
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_HIT
-	anim_sound $0, SFX_MENU
+	anim_sound 0, 0, SFX_MENU
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_obj $77, 24, 88, $2
-	anim_obj $77, 32, 88, $1
-	anim_obj $77, 40, 88, $0
-	anim_obj $77, 48, 88, $80
-	anim_obj $77, 56, 88, $81
-	anim_obj $77, 64, 88, $82
+	anim_obj ANIM_OBJ_77,   3, 0,  11, 0, $2
+	anim_obj ANIM_OBJ_77,   4, 0,  11, 0, $1
+	anim_obj ANIM_OBJ_77,   5, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_77,   6, 0,  11, 0, $80
+	anim_obj ANIM_OBJ_77,   7, 0,  11, 0, $81
+	anim_obj ANIM_OBJ_77,   8, 0,  11, 0, $82
 	anim_wait 12
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 16
@@ -3035,13 +3023,13 @@
 
 BattleAnim_Meditate: ; ca9d8
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Meditate_branch_cbca7
-	anim_sound $0, SFX_PSYBEAM
-	anim_bgeffect $28, $0, $1, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_PSYBEAM
+	anim_bgeffect ANIM_BG_28, $0, $1, $0
 	anim_wait 48
-	anim_incbgeffect $28
+	anim_incbgeffect ANIM_BG_28
 	anim_wait 48
-	anim_call BattleAnim_Meditate_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; ca9ed
 
@@ -3048,14 +3036,14 @@
 BattleAnim_Sharpen: ; ca9ed
 	anim_1gfx ANIM_GFX_SHAPES
 	anim_obp0 $e4
-	anim_call BattleAnim_Sharpen_branch_cbca7
-	anim_sound $0, SFX_SHARPEN
-	anim_bgeffect $18, $0, $1, $40
-	anim_obj $78, 48, 88, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_SHARPEN
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_obj ANIM_OBJ_78,   6, 0,  11, 0, $0
 	anim_wait 96
-	anim_incobj $2
-	anim_incbgeffect $18
-	anim_call BattleAnim_Sharpen_branch_cbcb7
+	anim_incobj  2
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; caa0a
 
@@ -3062,27 +3050,27 @@
 BattleAnim_DefenseCurl: ; caa0a
 	anim_1gfx ANIM_GFX_SHAPES
 	anim_obp0 $e4
-	anim_call BattleAnim_DefenseCurl_branch_cbca7
-	anim_sound $0, SFX_SHARPEN
-	anim_bgeffect $18, $0, $1, $40
-	anim_obj $79, 48, 88, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_SHARPEN
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_obj ANIM_OBJ_79,   6, 0,  11, 0, $0
 	anim_wait 96
-	anim_incobj $2
-	anim_incbgeffect $18
-	anim_call BattleAnim_DefenseCurl_branch_cbcb7
+	anim_incobj  2
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; caa27
 
 BattleAnim_SeismicToss: ; caa27
 	anim_2gfx ANIM_GFX_GLOBE, ANIM_GFX_HIT
-	anim_bgeffect $20, $10, $1, $20
-	anim_sound $0, SFX_STRENGTH
-	anim_obj $20, 64, 104, $1
+	anim_bgeffect ANIM_BG_20, $10, $1, $20
+	anim_sound 0, 0, SFX_STRENGTH
+	anim_obj ANIM_OBJ_20,   8, 0,  13, 0, $1
 	anim_wait 128
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 20
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 132, 40, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -16, 4,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; caa45
@@ -3089,20 +3077,20 @@
 
 BattleAnim_Rage: ; caa45
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Rage_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_sound $0, SFX_RAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_sound 0, 0, SFX_RAGE
 	anim_wait 72
-	anim_incbgeffect $1a
-	anim_call BattleAnim_Rage_branch_cbcb7
-	anim_sound $1, SFX_MOVE_PUZZLE_PIECE
-	anim_obj $0, 120, 72, $0
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
+	anim_sound 0, 1, SFX_MOVE_PUZZLE_PIECE
+	anim_obj ANIM_OBJ_00,  15, 0,   9, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $0, 136, 56, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 152, 40, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -13, 0,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; caa74
@@ -3110,31 +3098,31 @@
 BattleAnim_Agility: ; caa74
 	anim_1gfx ANIM_GFX_WIND
 	anim_obp0 $fc
-	anim_call BattleAnim_Agility_branch_cbca7
-	anim_bgeffect $18, $0, $1, $40
-	anim_obj $7d, 8, 24, $10
-	anim_obj $7d, 8, 48, $2
-	anim_obj $7d, 8, 88, $8
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_obj ANIM_OBJ_7D,   1, 0,   3, 0, $10
+	anim_obj ANIM_OBJ_7D,   1, 0,   6, 0, $2
+	anim_obj ANIM_OBJ_7D,   1, 0,  11, 0, $8
 	anim_wait 4
-	anim_obj $7d, 8, 32, $6
-	anim_obj $7d, 8, 56, $c
-	anim_obj $7d, 8, 80, $4
-	anim_obj $7d, 8, 104, $e
-BattleAnim_Agility_branch_caaa4: ; caaa4
-	anim_sound $0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_7D,   1, 0,   4, 0, $6
+	anim_obj ANIM_OBJ_7D,   1, 0,   7, 0, $c
+	anim_obj ANIM_OBJ_7D,   1, 0,  10, 0, $4
+	anim_obj ANIM_OBJ_7D,   1, 0,  13, 0, $e
+.loop
+	anim_sound 0, 0, SFX_RAZOR_WIND
 	anim_wait 4
-	anim_loop $12, BattleAnim_Agility_branch_caaa4
-	anim_incbgeffect $18
-	anim_call BattleAnim_Agility_branch_cbcb7
+	anim_loop 18, .loop
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; caab2
 
 BattleAnim_BoneClub: ; caab2
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_MISC
-	anim_obj $68, 64, 88, $2
+	anim_obj ANIM_OBJ_68,   8, 0,  11, 0, $2
 	anim_wait 32
-	anim_sound $1, SFX_BONE_CLUB
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_BONE_CLUB
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; caac5
@@ -3142,13 +3130,13 @@
 BattleAnim_Barrier: ; caac5
 	anim_1gfx ANIM_GFX_REFLECT
 	anim_enemyfeetobj
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_wait 8
-	anim_sound $0, SFX_SHINE
-	anim_obj $50, 72, 80, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
 	anim_wait 32
-	anim_sound $0, SFX_SHINE
-	anim_obj $50, 72, 80, $0
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
 	anim_wait 32
 	anim_ret
 ; caae1
@@ -3155,24 +3143,24 @@
 
 BattleAnim_Waterfall: ; caae1
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Waterfall_branch_cbcaf
-	anim_bgeffect $25, $0, $1, $0
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 16
-	anim_call BattleAnim_Waterfall_branch_cbcb7
-	anim_sound $1, SFX_LICK
-	anim_obj $1, 136, 56, $0
+	anim_call BattleAnim_ShowMon_0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 3
-	anim_sound $1, SFX_LICK
-	anim_obj $1, 136, 48, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 3
-	anim_sound $1, SFX_LICK
-	anim_obj $1, 136, 40, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_01, -15, 0,   5, 0, $0
 	anim_wait 3
-	anim_sound $1, SFX_LICK
-	anim_obj $1, 136, 32, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_01, -15, 0,   4, 0, $0
 	anim_wait 3
-	anim_sound $1, SFX_LICK
-	anim_obj $1, 136, 24, $0
+	anim_sound 0, 1, SFX_LICK
+	anim_obj ANIM_OBJ_01, -15, 0,   3, 0, $0
 	anim_wait 8
 	anim_ret
 ; cab1d
@@ -3181,11 +3169,11 @@
 	anim_1gfx ANIM_GFX_PSYCHIC
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
-BattleAnim_PsychicM_branch_cab29: ; cab29
-	anim_sound $1a, SFX_PSYCHIC
-	anim_obj $4c, 64, 88, $2
+.loop
+	anim_sound 6, 2, SFX_PSYCHIC
+	anim_obj ANIM_OBJ_4C,   8, 0,  11, 0, $2
 	anim_wait 8
-	anim_loop $8, BattleAnim_PsychicM_branch_cab29
+	anim_loop 8, .loop
 	anim_wait 96
 	anim_incbgeffect ANIM_BG_PSYCHIC
 	anim_wait 4
@@ -3211,12 +3199,12 @@
 
 BattleAnim_Metronome: ; cab52
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_SPEED
-	anim_sound $0, SFX_METRONOME
-	anim_obj $7a, 72, 88, $0
-BattleAnim_Metronome_branch_cab5d: ; cab5d
-	anim_obj $7b, 72, 80, $0
+	anim_sound 0, 0, SFX_METRONOME
+	anim_obj ANIM_OBJ_7A,   9, 0,  11, 0, $0
+.loop
+	anim_obj ANIM_OBJ_7B,   9, 0,  10, 0, $0
 	anim_wait 8
-	anim_loop $5, BattleAnim_Metronome_branch_cab5d
+	anim_loop 5, .loop
 	anim_wait 48
 	anim_ret
 ; cab69
@@ -3223,23 +3211,23 @@
 
 BattleAnim_Counter: ; cab69
 	anim_1gfx ANIM_GFX_HIT
-BattleAnim_Counter_branch_cab6b: ; cab6b
+.loop
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $2
-	anim_sound $1, SFX_POUND
-	anim_obj $8, 120, 72, $0
-	anim_obj $0, 120, 72, $0
+	anim_sound 0, 1, SFX_POUND
+	anim_obj ANIM_OBJ_08,  15, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_00,  15, 0,   9, 0, $0
 	anim_wait 6
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $2
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $6, 136, 40, $0
-	anim_obj $0, 136, 40, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_06, -15, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   5, 0, $0
 	anim_wait 6
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $2
-	anim_sound $1, SFX_MEGA_KICK
-	anim_obj $7, 152, 56, $0
-	anim_obj $0, 152, 56, $0
+	anim_sound 0, 1, SFX_MEGA_KICK
+	anim_obj ANIM_OBJ_07, -13, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_00, -13, 0,   7, 0, $0
 	anim_wait 6
-	anim_loop $3, BattleAnim_Counter_branch_cab6b
+	anim_loop 3, .loop
 	anim_wait 16
 	anim_ret
 ; cabaa
@@ -3247,19 +3235,19 @@
 BattleAnim_LowKick: ; cabaa
 	anim_1gfx ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 124, 64, $0
-	anim_obj $0, 124, 64, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07,  15, 4,   8, 0, $0
+	anim_obj ANIM_OBJ_00,  15, 4,   8, 0, $0
 	anim_wait 6
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 132, 64, $0
-	anim_obj $0, 132, 64, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07, -16, 4,   8, 0, $0
+	anim_obj ANIM_OBJ_00, -16, 4,   8, 0, $0
 	anim_wait 6
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 140, 64, $0
-	anim_obj $0, 140, 64, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07, -15, 4,   8, 0, $0
+	anim_obj ANIM_OBJ_00, -15, 4,   8, 0, $0
 	anim_wait 16
 	anim_ret
 ; cabe6
@@ -3266,17 +3254,17 @@
 
 BattleAnim_WingAttack: ; cabe6
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 148, 56, $0
-	anim_obj $1, 116, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -14, 4,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  14, 4,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 144, 56, $0
-	anim_obj $1, 120, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -14, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 140, 56, $0
-	anim_obj $1, 124, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -15, 4,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  15, 4,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cac13
@@ -3283,9 +3271,9 @@
 
 BattleAnim_Slam: ; cac13
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_WING_ATTACK
+	anim_sound 0, 1, SFX_WING_ATTACK
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $2
-	anim_obj $1, 124, 40, $0
+	anim_obj ANIM_OBJ_01,  15, 4,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; cac24
@@ -3292,12 +3280,12 @@
 
 BattleAnim_Disable: ; cac24
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_STATUS
-	anim_bgeffect $6, $0, $2, $0
-	anim_obj $7c, 132, 56, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_obj ANIM_OBJ_7C, -16, 4,   7, 0, $0
 	anim_wait 16
-	anim_sound $1, SFX_BIND
-	anim_obj ANIM_OBJ_PARALYZED, 104, 56, $42
-	anim_obj ANIM_OBJ_PARALYZED, 160, 56, $c2
+	anim_sound 0, 1, SFX_BIND
+	anim_obj ANIM_OBJ_PARALYZED,  13, 0,   7, 0, $42
+	anim_obj ANIM_OBJ_PARALYZED, -12, 0,   7, 0, $c2
 	anim_wait 96
 	anim_ret
 ; cac41
@@ -3304,19 +3292,19 @@
 
 BattleAnim_TailWhip: ; cac41
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_TailWhip_branch_cbcaf
-	anim_sound $0, SFX_TAIL_WHIP
-	anim_bgeffect $26, $0, $1, $0
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_sound 0, 0, SFX_TAIL_WHIP
+	anim_bgeffect ANIM_BG_26, $0, $1, $0
 	anim_wait 32
-	anim_incbgeffect $26
-	anim_call BattleAnim_TailWhip_branch_cbcb7
+	anim_incbgeffect ANIM_BG_26
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cac55
 
 BattleAnim_Struggle: ; cac55
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $1, SFX_POUND
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_POUND
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cac61
@@ -3323,13 +3311,13 @@
 
 BattleAnim_Sketch: ; cac61
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_call BattleAnim_Sketch_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_sound $0, SFX_SKETCH
-	anim_obj $98, 72, 80, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_sound 0, 0, SFX_SKETCH
+	anim_obj ANIM_OBJ_98,   9, 0,  10, 0, $0
 	anim_wait 80
-	anim_incbgeffect $1a
-	anim_call BattleAnim_Sketch_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 1
 	anim_ret
 ; cac7b
@@ -3338,28 +3326,28 @@
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_TripleKick_branch_cac95
 	anim_jumpif $2, BattleAnim_TripleKick_branch_caca5
-	anim_sound $1, SFX_MEGA_KICK
-	anim_obj $7, 144, 48, $0
+	anim_sound 0, 1, SFX_MEGA_KICK
+	anim_obj ANIM_OBJ_07, -14, 0,   6, 0, $0
 	anim_wait 6
-	anim_obj $1, 144, 48, $0
+	anim_obj ANIM_OBJ_01, -14, 0,   6, 0, $0
 	anim_wait 8
 	anim_ret
 ; cac95
 
 BattleAnim_TripleKick_branch_cac95: ; cac95
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 120, 64, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07,  15, 0,   8, 0, $0
 	anim_wait 6
-	anim_obj $1, 120, 64, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   8, 0, $0
 	anim_wait 8
 	anim_ret
 ; caca5
 
 BattleAnim_TripleKick_branch_caca5: ; caca5
-	anim_sound $1, SFX_DOUBLE_KICK
-	anim_obj $7, 132, 32, $0
+	anim_sound 0, 1, SFX_DOUBLE_KICK
+	anim_obj ANIM_OBJ_07, -16, 4,   4, 0, $0
 	anim_wait 6
-	anim_obj $1, 132, 32, $0
+	anim_obj ANIM_OBJ_01, -16, 4,   4, 0, $0
 	anim_wait 8
 	anim_ret
 ; cacb5
@@ -3366,17 +3354,17 @@
 
 BattleAnim_Thief: ; cacb5
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Thief_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 16
-	anim_sound $1, SFX_THIEF
-	anim_obj $1, 128, 48, $0
+	anim_sound 0, 1, SFX_THIEF
+	anim_obj ANIM_OBJ_01,  16, 0,   6, 0, $0
 	anim_wait 16
-	anim_call BattleAnim_Thief_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 1
 	anim_1gfx ANIM_GFX_STATUS
-	anim_sound $1, SFX_THIEF_2
-	anim_obj $8b, 120, 76, $1
+	anim_sound 0, 1, SFX_THIEF_2
+	anim_obj ANIM_OBJ_8B,  15, 0,   9, 4, $1
 	anim_wait 64
 	anim_ret
 ; cacd9
@@ -3383,14 +3371,14 @@
 
 BattleAnim_SpiderWeb: ; cacd9
 	anim_1gfx ANIM_GFX_WEB
-	anim_bgeffect $7, $0, $2, $0
-	anim_obj $92, 132, 48, $0
-	anim_sound $1a, SFX_SPIDER_WEB
-	anim_obj $5a, 64, 80, $0
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_obj ANIM_OBJ_92, -16, 4,   6, 0, $0
+	anim_sound 6, 2, SFX_SPIDER_WEB
+	anim_obj ANIM_OBJ_5A,   8, 0,  10, 0, $0
 	anim_wait 4
-	anim_obj $5a, 64, 88, $0
+	anim_obj ANIM_OBJ_5A,   8, 0,  11, 0, $0
 	anim_wait 4
-	anim_obj $5a, 64, 84, $0
+	anim_obj ANIM_OBJ_5A,   8, 0,  10, 4, $0
 	anim_wait 64
 	anim_ret
 ; cacfb
@@ -3397,14 +3385,14 @@
 
 BattleAnim_MindReader: ; cacfb
 	anim_1gfx ANIM_GFX_MISC
-	anim_sound $1, SFX_MIND_READER
-BattleAnim_MindReader_branch_cad00: ; cad00
-	anim_obj $88, 132, 48, $3
-	anim_obj $88, 132, 48, $12
-	anim_obj $88, 132, 48, $20
-	anim_obj $88, 132, 48, $31
+	anim_sound 0, 1, SFX_MIND_READER
+.loop
+	anim_obj ANIM_OBJ_88, -16, 4,   6, 0, $3
+	anim_obj ANIM_OBJ_88, -16, 4,   6, 0, $12
+	anim_obj ANIM_OBJ_88, -16, 4,   6, 0, $20
+	anim_obj ANIM_OBJ_88, -16, 4,   6, 0, $31
 	anim_wait 16
-	anim_loop $2, BattleAnim_MindReader_branch_cad00
+	anim_loop 2, .loop
 	anim_wait 32
 	anim_ret
 ; cad1b
@@ -3413,9 +3401,9 @@
 	anim_1gfx ANIM_GFX_ANGELS
 	anim_bgp $1b
 	anim_obp0 $f
-	anim_obj $94, 132, 40, $0
-	anim_obj $94, 132, 40, $a0
-	anim_sound $1, SFX_NIGHTMARE
+	anim_obj ANIM_OBJ_94, -16, 4,   5, 0, $0
+	anim_obj ANIM_OBJ_94, -16, 4,   5, 0, $a0
+	anim_sound 0, 1, SFX_NIGHTMARE
 	anim_wait 96
 	anim_ret
 ; cad30
@@ -3422,24 +3410,24 @@
 
 BattleAnim_FlameWheel: ; cad30
 	anim_1gfx ANIM_GFX_FIRE
-BattleAnim_FlameWheel_branch_cad32: ; cad32
-	anim_sound $0, SFX_EMBER
-	anim_obj $7f, 48, 96, $0
+.loop
+	anim_sound 0, 0, SFX_EMBER
+	anim_obj ANIM_OBJ_7F,   6, 0,  12, 0, $0
 	anim_wait 6
-	anim_loop $8, BattleAnim_FlameWheel_branch_cad32
+	anim_loop 8, .loop
 	anim_wait 96
-	anim_call BattleAnim_FlameWheel_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_sound $1, SFX_EMBER
-	anim_obj $f, 136, 48, $1
-	anim_obj $f, 136, 48, $4
-	anim_obj $f, 136, 48, $5
+	anim_sound 0, 1, SFX_EMBER
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $1
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $4
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $5
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
-	anim_incobj $9
+	anim_incobj  9
 	anim_wait 8
 	anim_ret
 ; cad6b
@@ -3446,78 +3434,78 @@
 
 BattleAnim_Snore: ; cad6b
 	anim_2gfx ANIM_GFX_STATUS, ANIM_GFX_NOISE
-	anim_obj $54, 64, 80, $0
+	anim_obj ANIM_OBJ_54,   8, 0,  10, 0, $0
 	anim_wait 32
-	anim_bgeffect $1f, $60, $2, $0
-	anim_sound $0, SFX_SNORE
-BattleAnim_Snore_branch_cad7c: ; cad7c
+	anim_bgeffect ANIM_BG_1F, $60, $2, $0
+	anim_sound 0, 0, SFX_SNORE
+.loop
 	anim_call BattleAnim_Snore_branch_cbbbc
 	anim_wait 16
-	anim_loop $2, BattleAnim_Snore_branch_cad7c
+	anim_loop 2, .loop
 	anim_wait 8
 	anim_ret
 ; cad86
 
 BattleAnim_Curse: ; cad86
-	anim_jumpif $1, BattleAnim_Curse_branch_cada3
+	anim_jumpif $1, .NotGhost
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_OBJECTS
-	anim_obj $a5, 68, 72, $0
-	anim_sound $0, SFX_CURSE
+	anim_obj ANIM_OBJ_A5,   8, 4,   9, 0, $0
+	anim_sound 0, 0, SFX_CURSE
 	anim_wait 32
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 12
-	anim_sound $0, SFX_POISON_STING
-	anim_obj $4, 44, 96, $0
+	anim_sound 0, 0, SFX_POISON_STING
+	anim_obj ANIM_OBJ_04,   5, 4,  12, 0, $0
 	anim_wait 16
 	anim_ret
 ; cada3
 
-BattleAnim_Curse_branch_cada3: ; cada3
+.NotGhost: ; cada3
 	anim_1gfx ANIM_GFX_SPEED
-	anim_call BattleAnim_Curse_branch_cbca7
-	anim_bgeffect $19, $0, $1, $40
-	anim_sound $0, SFX_SHARPEN
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_19, $0, $1, $40
+	anim_sound 0, 0, SFX_SHARPEN
 	anim_wait 64
-	anim_incbgeffect $19
+	anim_incbgeffect ANIM_BG_19
 	anim_wait 1
-	anim_bgeffect $16, $0, $1, $40
-BattleAnim_Curse_branch_cadb9: ; cadb9
-	anim_sound $0, SFX_SWORDS_DANCE
-	anim_obj $47, 44, 108, $6
+	anim_bgeffect ANIM_BG_16, $0, $1, $40
+.loop
+	anim_sound 0, 0, SFX_SWORDS_DANCE
+	anim_obj ANIM_OBJ_47,   5, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 36, 108, $6
+	anim_obj ANIM_OBJ_47,   4, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 52, 108, $8
+	anim_obj ANIM_OBJ_47,   6, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 28, 108, $8
+	anim_obj ANIM_OBJ_47,   3, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 60, 108, $6
+	anim_obj ANIM_OBJ_47,   7, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 20, 108, $8
+	anim_obj ANIM_OBJ_47,   2, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 68, 108, $8
+	anim_obj ANIM_OBJ_47,   8, 4,  13, 4, $8
 	anim_wait 2
-	anim_loop $3, BattleAnim_Curse_branch_cadb9
+	anim_loop 3, .loop
 	anim_wait 8
-	anim_incbgeffect $16
-	anim_call BattleAnim_Curse_branch_cbcb7
+	anim_incbgeffect ANIM_BG_16
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cadf1
 
 BattleAnim_Flail: ; cadf1
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Flail_branch_cbca7
-	anim_sound $0, SFX_SUBMISSION
-	anim_bgeffect $2c, $0, $1, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_sound 0, 0, SFX_SUBMISSION
+	anim_bgeffect ANIM_BG_2C, $0, $1, $0
 	anim_wait 8
-	anim_obj $1, 120, 48, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   6, 0, $0
 	anim_wait 8
-	anim_obj $1, 152, 48, $0
+	anim_obj ANIM_OBJ_01, -13, 0,   6, 0, $0
 	anim_wait 8
-	anim_obj $1, 136, 48, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 8
-	anim_incbgeffect $2c
-	anim_call BattleAnim_Flail_branch_cbcb7
+	anim_incbgeffect ANIM_BG_2C
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cae17
 
@@ -3524,15 +3512,15 @@
 BattleAnim_Conversion: ; cae17
 	anim_1gfx ANIM_GFX_EXPLOSION
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
-	anim_sound $ff, SFX_SHARPEN
-	anim_obj $91, 48, 88, $0
-	anim_obj $91, 48, 88, $8
-	anim_obj $91, 48, 88, $10
-	anim_obj $91, 48, 88, $18
-	anim_obj $91, 48, 88, $20
-	anim_obj $91, 48, 88, $28
-	anim_obj $91, 48, 88, $30
-	anim_obj $91, 48, 88, $38
+	anim_sound 63, 3, SFX_SHARPEN
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $8
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $10
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $18
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $20
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $28
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $30
+	anim_obj ANIM_OBJ_91,   6, 0,  11, 0, $38
 	anim_wait 128
 	anim_ret
 ; cae4b
@@ -3540,20 +3528,20 @@
 BattleAnim_Aeroblast: ; cae4b
 	anim_2gfx ANIM_GFX_BEAM, ANIM_GFX_AEROBLAST
 	anim_bgp $1b
-	anim_bgeffect $1f, $50, $4, $10
-	anim_bgeffect $6, $0, $2, $0
-	anim_sound $0, SFX_AEROBLAST
-	anim_obj $b3, 72, 88, $0
+	anim_bgeffect ANIM_BG_1F, $50, $4, $10
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_sound 0, 0, SFX_AEROBLAST
+	anim_obj ANIM_OBJ_B3,   9, 0,  11, 0, $0
 	anim_wait 32
-	anim_sound $0, SFX_HYPER_BEAM
-	anim_obj $27, 80, 84, $0
+	anim_sound 0, 0, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  10, 0,  10, 4, $0
 	anim_wait 2
-	anim_sound $1, SFX_HYPER_BEAM
-	anim_obj $27, 96, 76, $0
+	anim_sound 0, 1, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  12, 0,   9, 4, $0
 	anim_wait 2
-	anim_sound $1, SFX_HYPER_BEAM
-	anim_obj $27, 112, 68, $0
-	anim_obj $28, 126, 62, $0
+	anim_sound 0, 1, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  14, 0,   8, 4, $0
+	anim_obj ANIM_OBJ_28,  15, 6,   7, 6, $0
 	anim_wait 48
 	anim_ret
 ; cae84
@@ -3561,11 +3549,11 @@
 BattleAnim_CottonSpore: ; cae84
 	anim_obp0 $54
 	anim_1gfx ANIM_GFX_MISC
-	anim_sound $1, SFX_POWDER
-BattleAnim_CottonSpore_branch_cae8b: ; cae8b
-	anim_obj $81, 132, 32, $0
+	anim_sound 0, 1, SFX_POWDER
+.loop: ; cae8b
+	anim_obj ANIM_OBJ_81, -16, 4,   4, 0, $0
 	anim_wait 8
-	anim_loop $5, BattleAnim_CottonSpore_branch_cae8b
+	anim_loop 5, .loop
 	anim_wait 96
 	anim_ret
 ; cae97
@@ -3572,24 +3560,24 @@
 
 BattleAnim_Reversal: ; cae97
 	anim_2gfx ANIM_GFX_SHINE, ANIM_GFX_HIT
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $4, 112, 64, $0
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_04,  14, 0,   8, 0, $0
 	anim_wait 2
-	anim_sound $1, SFX_SHINE
-	anim_obj $a7, 120, 56, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_A7,  15, 0,   7, 0, $0
 	anim_wait 2
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $4, 128, 56, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_04,  16, 0,   7, 0, $0
 	anim_wait 2
-	anim_sound $1, SFX_SHINE
-	anim_obj $a7, 136, 48, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_A7, -15, 0,   6, 0, $0
 	anim_wait 2
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $4, 144, 48, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_04, -14, 0,   6, 0, $0
 	anim_wait 2
-	anim_sound $1, SFX_SHINE
-	anim_obj $a7, 152, 40, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_A7, -13, 0,   5, 0, $0
 	anim_wait 24
 	anim_ret
 ; caed6
@@ -3596,8 +3584,8 @@
 
 BattleAnim_Spite: ; caed6
 	anim_1gfx ANIM_GFX_ANGELS
-	anim_obj $a4, 132, 16, $0
-	anim_sound $1, SFX_SPITE
+	anim_obj ANIM_OBJ_A4, -16, 4,   2, 0, $0
+	anim_sound 0, 1, SFX_SPITE
 	anim_wait 96
 	anim_ret
 ; caee2
@@ -3604,17 +3592,17 @@
 
 BattleAnim_PowderSnow: ; caee2
 	anim_1gfx ANIM_GFX_ICE
-BattleAnim_PowderSnow_branch_caee4: ; caee4
-	anim_sound $1a, SFX_SHINE
-	anim_obj $8f, 64, 88, $23
+.loop: ; caee4
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_8F,   8, 0,  11, 0, $23
 	anim_wait 2
-	anim_sound $1a, SFX_SHINE
-	anim_obj $8f, 64, 80, $24
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_8F,   8, 0,  10, 0, $24
 	anim_wait 2
-	anim_sound $1a, SFX_SHINE
-	anim_obj $8f, 64, 96, $23
+	anim_sound 6, 2, SFX_SHINE
+	anim_obj ANIM_OBJ_8F,   8, 0,  12, 0, $23
 	anim_wait 2
-	anim_loop $2, BattleAnim_PowderSnow_branch_caee4
+	anim_loop 2, .loop
 	anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
 	anim_wait 40
 	anim_call BattleAnim_PowderSnow_branch_cbbdf
@@ -3624,13 +3612,13 @@
 
 BattleAnim_Protect: ; caf0e
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_bgeffect $7, $0, $2, $0
-	anim_obj $8a, 80, 80, $0
-	anim_obj $8a, 80, 80, $d
-	anim_obj $8a, 80, 80, $1a
-	anim_obj $8a, 80, 80, $27
-	anim_obj $8a, 80, 80, $34
-	anim_sound $0, SFX_PROTECT
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_obj ANIM_OBJ_8A,  10, 0,  10, 0, $0
+	anim_obj ANIM_OBJ_8A,  10, 0,  10, 0, $d
+	anim_obj ANIM_OBJ_8A,  10, 0,  10, 0, $1a
+	anim_obj ANIM_OBJ_8A,  10, 0,  10, 0, $27
+	anim_obj ANIM_OBJ_8A,  10, 0,  10, 0, $34
+	anim_sound 0, 0, SFX_PROTECT
 	anim_wait 96
 	anim_ret
 ; caf33
@@ -3638,18 +3626,18 @@
 BattleAnim_MachPunch: ; caf33
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_sound $0, SFX_MENU
-	anim_obj $77, 24, 88, $2
-	anim_obj $77, 32, 88, $1
-	anim_obj $77, 40, 88, $0
-	anim_obj $77, 48, 88, $80
-	anim_obj $77, 56, 88, $81
-	anim_obj $77, 64, 88, $82
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_77,   3, 0,  11, 0, $2
+	anim_obj ANIM_OBJ_77,   4, 0,  11, 0, $1
+	anim_obj ANIM_OBJ_77,   5, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_77,   6, 0,  11, 0, $80
+	anim_obj ANIM_OBJ_77,   7, 0,  11, 0, $81
+	anim_obj ANIM_OBJ_77,   8, 0,  11, 0, $82
 	anim_wait 12
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $6, 136, 56, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_06, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_obj $1, 136, 56, $0
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 16
@@ -3659,7 +3647,7 @@
 BattleAnim_ScaryFace: ; caf73
 	anim_1gfx ANIM_GFX_BEAM
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_call BattleAnim_ScaryFace_branch_cbadc
 	anim_wait 64
 	anim_ret
@@ -3667,21 +3655,21 @@
 
 BattleAnim_FaintAttack: ; caf84
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $0, SFX_CURSE
-	anim_call BattleAnim_FaintAttack_branch_cbca7
-	anim_bgeffect $1d, $0, $1, $80
+	anim_sound 0, 0, SFX_CURSE
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1D, $0, $1, $80
 	anim_wait 96
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $4, 120, 32, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_04,  15, 0,   4, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $4, 152, 40, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_04, -13, 0,   5, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $4, 136, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_04, -15, 0,   6, 0, $0
 	anim_wait 32
-	anim_incbgeffect $1d
-	anim_call BattleAnim_FaintAttack_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1D
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 4
 	anim_ret
 ; cafb4
@@ -3688,12 +3676,12 @@
 
 BattleAnim_SweetKiss: ; cafb4
 	anim_2gfx ANIM_GFX_OBJECTS, ANIM_GFX_ANGELS
-	anim_bgeffect $7, $0, $2, $0
-	anim_obj $97, 96, 40, $0
-	anim_sound $1, SFX_SWEET_KISS
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_obj ANIM_OBJ_97,  12, 0,   5, 0, $0
+	anim_sound 0, 1, SFX_SWEET_KISS
 	anim_wait 32
-	anim_sound $1, SFX_SWEET_KISS_2
-	anim_obj ANIM_OBJ_HEART, 120, 40, $0
+	anim_sound 0, 1, SFX_SWEET_KISS_2
+	anim_obj ANIM_OBJ_HEART,  15, 0,   5, 0, $0
 	anim_wait 40
 	anim_ret
 ; cafcf
@@ -3700,41 +3688,41 @@
 
 BattleAnim_BellyDrum: ; cafcf
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_NOISE
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 24
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 24
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 24
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
-	anim_sound $0, SFX_BELLY_DRUM
-	anim_obj $aa, 64, 104, $0
-	anim_obj $ab, 64, 92, $f8
+	anim_sound 0, 0, SFX_BELLY_DRUM
+	anim_obj ANIM_OBJ_AA,   8, 0,  13, 0, $0
+	anim_obj ANIM_OBJ_AB,   8, 0,  11, 4, $f8
 	anim_wait 12
 	anim_ret
 ; cb051
@@ -3742,8 +3730,8 @@
 BattleAnim_SludgeBomb: ; cb051
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_POISON
 	anim_bgeffect ANIM_BG_BLACK_HUES, $0, $8, $0
-	anim_sound $1a, SFX_SLUDGE_BOMB
-	anim_obj $62, 64, 92, $10
+	anim_sound 6, 2, SFX_SLUDGE_BOMB
+	anim_obj ANIM_OBJ_62,   8, 0,  11, 4, $10
 	anim_wait 36
 	anim_call BattleAnim_SludgeBomb_branch_cbc15
 	anim_wait 64
@@ -3759,31 +3747,31 @@
 
 BattleAnim_Octazooka: ; cb06f
 	anim_3gfx ANIM_GFX_HAZE, ANIM_GFX_EGG, ANIM_GFX_SMOKE
-	anim_sound $1a, SFX_SLUDGE_BOMB
-	anim_obj $8c, 64, 92, $4
+	anim_sound 6, 2, SFX_SLUDGE_BOMB
+	anim_obj ANIM_OBJ_8C,   8, 0,  11, 4, $4
 	anim_wait 16
-	anim_obj $1c, 132, 56, $10
+	anim_obj ANIM_OBJ_1C, -16, 4,   7, 0, $10
 	anim_wait 8
-	anim_jumpif $0, BattleAnim_Octazooka_branch_cb091
-BattleAnim_Octazooka_branch_cb086: ; cb086
-	anim_obj $74, 132, 60, $20
+	anim_jumpif $0, .done
+.loop
+	anim_obj ANIM_OBJ_74, -16, 4,   7, 4, $20
 	anim_wait 8
-	anim_loop $5, BattleAnim_Octazooka_branch_cb086
+	anim_loop 5, .loop
 	anim_wait 128
-BattleAnim_Octazooka_branch_cb091: ; cb091
+.done
 	anim_ret
 ; cb092
 
 BattleAnim_Spikes: ; cb092
 	anim_1gfx ANIM_GFX_MISC
-	anim_sound $1a, SFX_MENU
-	anim_obj $8e, 48, 88, $20
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_8E,   6, 0,  11, 0, $20
 	anim_wait 8
-	anim_sound $1a, SFX_MENU
-	anim_obj $8e, 48, 88, $30
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_8E,   6, 0,  11, 0, $30
 	anim_wait 8
-	anim_sound $1a, SFX_MENU
-	anim_obj $8e, 48, 88, $28
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_8E,   6, 0,  11, 0, $28
 	anim_wait 64
 	anim_ret
 ; cb0b0
@@ -3792,13 +3780,13 @@
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_EXPLOSION
 	anim_bgp $1b
 	anim_obp0 $30
-	anim_sound $1a, SFX_ZAP_CANNON
-	anim_obj $a3, 64, 92, $2
+	anim_sound 6, 2, SFX_ZAP_CANNON
+	anim_obj ANIM_OBJ_A3,   8, 0,  11, 4, $2
 	anim_wait 40
-	anim_sound $1, SFX_THUNDERSHOCK
-	anim_obj $32, 136, 56, $2
+	anim_sound 0, 1, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_32, -15, 0,   7, 0, $2
 	anim_wait 16
-	anim_obj $31, 136, 56, $0
+	anim_obj ANIM_OBJ_31, -15, 0,   7, 0, $0
 	anim_wait 128
 	anim_ret
 ; cb0d0
@@ -3805,15 +3793,15 @@
 
 BattleAnim_Foresight: ; cb0d0
 	anim_1gfx ANIM_GFX_SHINE
-	anim_call BattleAnim_Foresight_branch_cbcc2
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $1, SFX_FORESIGHT
-	anim_obj $a7, 132, 40, $0
+	anim_call BattleAnim_FollowEnemyFeet_1
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 1, SFX_FORESIGHT
+	anim_obj ANIM_OBJ_A7, -16, 4,   5, 0, $0
 	anim_wait 24
-	anim_bgeffect $19, $0, $0, $40
+	anim_bgeffect ANIM_BG_19, $0, $0, $40
 	anim_wait 64
-	anim_incbgeffect $19
-	anim_call BattleAnim_Foresight_branch_cbcd2
+	anim_incbgeffect ANIM_BG_19
+	anim_call BattleAnim_ShowMon_1
 	anim_wait 8
 	anim_ret
 ; cb0f0
@@ -3823,15 +3811,15 @@
 	anim_bgp $1b
 	anim_obp0 $0
 	anim_jumpif $1, BattleAnim_DestinyBond_branch_cb104
-	anim_sound $1a, SFX_WHIRLWIND
-	anim_obj $9b, 44, 120, $2
+	anim_sound 6, 2, SFX_WHIRLWIND
+	anim_obj ANIM_OBJ_9B,   5, 4,  15, 0, $2
 	anim_wait 128
 	anim_ret
 ; cb104
 
 BattleAnim_DestinyBond_branch_cb104: ; cb104
-	anim_obj $9b, 132, 76, $0
-	anim_sound $1, SFX_KINESIS
+	anim_obj ANIM_OBJ_9B, -16, 4,   9, 4, $0
+	anim_sound 0, 1, SFX_KINESIS
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
 	anim_wait 32
 	anim_ret
@@ -3839,17 +3827,17 @@
 
 BattleAnim_PerishSong: ; cb113
 	anim_1gfx ANIM_GFX_NOISE
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
-	anim_sound $2, SFX_PERISH_SONG
-	anim_obj $a6, 88, 0, $0
-	anim_obj $a6, 88, 0, $8
-	anim_obj $a6, 88, 0, $10
-	anim_obj $a6, 88, 0, $18
-	anim_obj $a6, 88, 0, $20
-	anim_obj $a6, 88, 0, $28
-	anim_obj $a6, 88, 0, $30
-	anim_obj $a6, 88, 0, $38
+	anim_sound 0, 2, SFX_PERISH_SONG
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $0
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $8
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $10
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $18
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $20
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $28
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $30
+	anim_obj ANIM_OBJ_A6,  11, 0,   0, 0, $38
 	anim_wait 112
 	anim_ret
 ; cb14c
@@ -3856,19 +3844,19 @@
 
 BattleAnim_IcyWind: ; cb14c
 	anim_1gfx ANIM_GFX_SPEED
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_playerheadobj
-	anim_sound $0, SFX_PSYCHIC
-BattleAnim_IcyWind_branch_cb15c: ; cb15c
+	anim_sound 0, 0, SFX_PSYCHIC
+.loop
 	anim_wait 8
-	anim_obj $ae, 64, 88, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  11, 0, $4
 	anim_wait 8
-	anim_obj $ae, 64, 80, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  10, 0, $4
 	anim_wait 8
-	anim_obj $ae, 64, 96, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  12, 0, $4
 	anim_wait 8
-	anim_loop $2, BattleAnim_IcyWind_branch_cb15c
+	anim_loop 2, .loop
 	anim_wait 16
 	anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $1, $0
 	anim_wait 6
@@ -3877,7 +3865,7 @@
 	anim_incbgeffect ANIM_BG_NIGHT_SHADE
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 4
-	anim_incobj $7
+	anim_incobj  7
 	anim_wait 1
 	anim_ret
 ; cb18c
@@ -3884,9 +3872,9 @@
 
 BattleAnim_Detect: ; cb18c
 	anim_1gfx ANIM_GFX_SHINE
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $0, SFX_FORESIGHT
-	anim_obj $a7, 64, 88, $0
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 0, SFX_FORESIGHT
+	anim_obj ANIM_OBJ_A7,   8, 0,  11, 0, $0
 	anim_wait 24
 	anim_ret
 ; cb19d
@@ -3893,14 +3881,14 @@
 
 BattleAnim_BoneRush: ; cb19d
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_MISC
-	anim_sound $1, SFX_BONE_CLUB
-	anim_obj $69, 132, 56, $2
+	anim_sound 0, 1, SFX_BONE_CLUB
+	anim_obj ANIM_OBJ_69, -16, 4,   7, 0, $2
 	anim_wait 16
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 120, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01,  15, 0,   6, 0, $0
 	anim_wait 16
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 144, 64, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01, -14, 0,   8, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb1bc
@@ -3907,14 +3895,14 @@
 
 BattleAnim_LockOn: ; cb1bc
 	anim_1gfx ANIM_GFX_MISC
-	anim_sound $1, SFX_MIND_READER
-BattleAnim_LockOn_branch_cb1c1: ; cb1c1
-	anim_obj $87, 132, 48, $3
-	anim_obj $87, 132, 48, $12
-	anim_obj $87, 132, 48, $20
-	anim_obj $87, 132, 48, $31
+	anim_sound 0, 1, SFX_MIND_READER
+.loop
+	anim_obj ANIM_OBJ_87, -16, 4,   6, 0, $3
+	anim_obj ANIM_OBJ_87, -16, 4,   6, 0, $12
+	anim_obj ANIM_OBJ_87, -16, 4,   6, 0, $20
+	anim_obj ANIM_OBJ_87, -16, 4,   6, 0, $31
 	anim_wait 16
-	anim_loop $2, BattleAnim_LockOn_branch_cb1c1
+	anim_loop 2, .loop
 	anim_wait 32
 	anim_ret
 ; cb1dc
@@ -3921,21 +3909,21 @@
 
 BattleAnim_Outrage: ; cb1dc
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Outrage_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_sound $0, SFX_OUTRAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_sound 0, 0, SFX_OUTRAGE
 	anim_wait 72
-	anim_incbgeffect $1a
-	anim_call BattleAnim_Outrage_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_sound $1, SFX_MOVE_PUZZLE_PIECE
-	anim_obj $0, 120, 72, $0
+	anim_sound 0, 1, SFX_MOVE_PUZZLE_PIECE
+	anim_obj ANIM_OBJ_00,  15, 0,   9, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $0, 136, 56, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 152, 40, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00, -13, 0,   5, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb210
@@ -3942,15 +3930,15 @@
 
 BattleAnim_Sandstorm: ; cb210
 	anim_1gfx ANIM_GFX_POWDER
-	anim_obj $a2, 88, 0, $0
+	anim_obj ANIM_OBJ_A2,  11, 0,   0, 0, $0
 	anim_wait 8
-	anim_obj $a2, 72, 0, $1
+	anim_obj ANIM_OBJ_A2,   9, 0,   0, 0, $1
 	anim_wait 8
-	anim_obj $a2, 56, 0, $2
-BattleAnim_Sandstorm_branch_cb223: ; cb223
-	anim_sound $1, SFX_MENU
+	anim_obj ANIM_OBJ_A2,   7, 0,   0, 0, $2
+.loop
+	anim_sound 0, 1, SFX_MENU
 	anim_wait 8
-	anim_loop $10, BattleAnim_Sandstorm_branch_cb223
+	anim_loop 16, .loop
 	anim_wait 8
 	anim_ret
 ; cb22d
@@ -3957,30 +3945,30 @@
 
 BattleAnim_GigaDrain: ; cb22d
 	anim_2gfx ANIM_GFX_BUBBLE, ANIM_GFX_CHARGE
-	anim_call BattleAnim_GigaDrain_branch_cbca7
-	anim_bgeffect $1c, $0, $0, $10
-	anim_sound $1b, SFX_GIGA_DRAIN
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1C, $0, $0, $10
+	anim_sound 6, 3, SFX_GIGA_DRAIN
 	anim_call BattleAnim_GigaDrain_branch_cbab3
 	anim_wait 48
 	anim_wait 128
-	anim_incbgeffect $1c
-	anim_call BattleAnim_GigaDrain_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1C
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 1
 	anim_1gfx ANIM_GFX_SHINE
-	anim_bgeffect $7, $0, $0, $0
-BattleAnim_GigaDrain_branch_cb24d: ; cb24d
-	anim_sound $0, SFX_METRONOME
-	anim_obj $9d, 24, 64, $0
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+.loop
+	anim_sound 0, 0, SFX_METRONOME
+	anim_obj ANIM_OBJ_9D,   3, 0,   8, 0, $0
 	anim_wait 5
-	anim_obj $9d, 56, 104, $0
+	anim_obj ANIM_OBJ_9D,   7, 0,  13, 0, $0
 	anim_wait 5
-	anim_obj $9d, 24, 104, $0
+	anim_obj ANIM_OBJ_9D,   3, 0,  13, 0, $0
 	anim_wait 5
-	anim_obj $9d, 56, 64, $0
+	anim_obj ANIM_OBJ_9D,   7, 0,   8, 0, $0
 	anim_wait 5
-	anim_obj $9d, 40, 84, $0
+	anim_obj ANIM_OBJ_9D,   5, 0,  10, 4, $0
 	anim_wait 5
-	anim_loop $2, BattleAnim_GigaDrain_branch_cb24d
+	anim_loop 2, .loop
 	anim_wait 32
 	anim_ret
 ; cb274
@@ -3987,41 +3975,41 @@
 
 BattleAnim_Endure: ; cb274
 	anim_1gfx ANIM_GFX_SPEED
-	anim_call BattleAnim_Endure_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_bgeffect $7, $0, $2, $0
-BattleAnim_Endure_branch_cb283: ; cb283
-	anim_sound $0, SFX_SWORDS_DANCE
-	anim_obj $47, 44, 108, $6
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+.loop
+	anim_sound 0, 0, SFX_SWORDS_DANCE
+	anim_obj ANIM_OBJ_47,   5, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 36, 108, $6
+	anim_obj ANIM_OBJ_47,   4, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 52, 108, $8
+	anim_obj ANIM_OBJ_47,   6, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 28, 108, $8
+	anim_obj ANIM_OBJ_47,   3, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 60, 108, $6
+	anim_obj ANIM_OBJ_47,   7, 4,  13, 4, $6
 	anim_wait 2
-	anim_obj $47, 20, 108, $8
+	anim_obj ANIM_OBJ_47,   2, 4,  13, 4, $8
 	anim_wait 2
-	anim_obj $47, 68, 108, $8
+	anim_obj ANIM_OBJ_47,   8, 4,  13, 4, $8
 	anim_wait 2
-	anim_loop $5, BattleAnim_Endure_branch_cb283
+	anim_loop 5, .loop
 	anim_wait 8
-	anim_incbgeffect $1a
-	anim_call BattleAnim_Endure_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb2bb
 
 BattleAnim_Charm: ; cb2bb
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_call BattleAnim_Charm_branch_cbca7
-	anim_bgeffect $26, $0, $1, $0
-	anim_sound $0, SFX_ATTRACT
-	anim_obj ANIM_OBJ_HEART, 64, 80, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_26, $0, $1, $0
+	anim_sound 0, 0, SFX_ATTRACT
+	anim_obj ANIM_OBJ_HEART,   8, 0,  10, 0, $0
 	anim_wait 32
-	anim_incbgeffect $26
-	anim_call BattleAnim_Charm_branch_cbcb7
+	anim_incbgeffect ANIM_BG_26
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 4
 	anim_ret
 ; cb2d5
@@ -4028,25 +4016,25 @@
 
 BattleAnim_Rollout: ; cb2d5
 	anim_1gfx ANIM_GFX_HIT
-	anim_sound $0, SFX_SPARK
-	anim_call BattleAnim_Rollout_branch_cbcaf
-	anim_bgeffect $2e, $60, $1, $1
-	anim_bgeffect $25, $0, $1, $0
+	anim_sound 0, 0, SFX_SPARK
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_2E, $60, $1, $1
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $3, 136, 40, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_03, -15, 0,   5, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_Rollout_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb2f5
 
 BattleAnim_FalseSwipe: ; cb2f5
 	anim_2gfx ANIM_GFX_SHINE, ANIM_GFX_CUT
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $1, SFX_CUT
-	anim_obj $3a, 152, 40, $0
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 1, SFX_CUT
+	anim_obj ANIM_OBJ_3A, -13, 0,   5, 0, $0
 	anim_wait 4
-	anim_obj $9d, 136, 40, $0
+	anim_obj ANIM_OBJ_9D, -15, 0,   5, 0, $0
 	anim_wait 32
 	anim_ret
 ; cb30d
@@ -4053,14 +4041,14 @@
 
 BattleAnim_Swagger: ; cb30d
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_WIND
-BattleAnim_Swagger_branch_cb310: ; cb310
-	anim_sound $0, SFX_MENU
-	anim_obj $a9, 72, 88, $44
+.loop
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_A9,   9, 0,  11, 0, $44
 	anim_wait 32
-	anim_loop $2, BattleAnim_Swagger_branch_cb310
+	anim_loop 2, .loop
 	anim_wait 32
-	anim_sound $1, SFX_KINESIS_2
-	anim_obj $83, 104, 40, $0
+	anim_sound 0, 1, SFX_KINESIS_2
+	anim_obj ANIM_OBJ_83,  13, 0,   5, 0, $0
 	anim_wait 40
 	anim_ret
 ; cb328
@@ -4067,40 +4055,40 @@
 
 BattleAnim_MilkDrink: ; cb328
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_BUBBLE
-	anim_call BattleAnim_MilkDrink_branch_cbca7
-	anim_obj $82, 74, 104, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_obj ANIM_OBJ_82,   9, 2,  13, 0, $0
 	anim_wait 16
-	anim_bgeffect $18, $0, $1, $40
-	anim_sound $0, SFX_MILK_DRINK
-BattleAnim_MilkDrink_branch_cb33c: ; cb33c
-	anim_obj $2c, 44, 88, $20
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_sound 0, 0, SFX_MILK_DRINK
+.loop
+	anim_obj ANIM_OBJ_2C,   5, 4,  11, 0, $20
 	anim_wait 8
-	anim_loop $8, BattleAnim_MilkDrink_branch_cb33c
+	anim_loop 8, .loop
 	anim_wait 128
-	anim_incbgeffect $18
-	anim_call BattleAnim_MilkDrink_branch_cbcb7
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb34d
 
 BattleAnim_Spark: ; cb34d
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_EXPLOSION
-	anim_sound $0, SFX_ZAP_CANNON
+	anim_sound 0, 0, SFX_ZAP_CANNON
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_obj $30, 48, 92, $0
+	anim_obj ANIM_OBJ_30,   6, 0,  11, 4, $0
 	anim_wait 24
 	anim_setobj $1, $3
 	anim_wait 1
-	anim_call BattleAnim_Spark_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
-	anim_sound $0, SFX_SPARK
+	anim_sound 0, 0, SFX_SPARK
 	anim_wait 16
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
-	anim_incobj $2
+	anim_incobj  2
 	anim_wait 1
-	anim_sound $1, SFX_THUNDERSHOCK
-	anim_obj $32, 136, 56, $2
-	anim_obj $33, 136, 56, $0
+	anim_sound 0, 1, SFX_THUNDERSHOCK
+	anim_obj ANIM_OBJ_32, -15, 0,   7, 0, $2
+	anim_obj ANIM_OBJ_33, -15, 0,   7, 0, $0
 	anim_wait 32
 	anim_ret
 ; cb386
@@ -4107,18 +4095,17 @@
 
 BattleAnim_FuryCutter: ; cb386
 	anim_1gfx ANIM_GFX_CUT
-BattleAnim_FuryCutter_branch_cb388: ; cb388
-	anim_sound $1, SFX_CUT
-	anim_jumpand $1, BattleAnim_FuryCutter_branch_cb397
-	anim_obj $3a, 152, 40, $0
-	anim_jump BattleAnim_FuryCutter_branch_cb39c
-; cb397
+.loop
+	anim_sound 0, 1, SFX_CUT
+	anim_jumpand $1, .obj1
+	anim_obj ANIM_OBJ_3A, -13, 0,   5, 0, $0
+	anim_jump .okay
 
-BattleAnim_FuryCutter_branch_cb397: ; cb397
-	anim_obj $3b, 112, 40, $0
-BattleAnim_FuryCutter_branch_cb39c: ; cb39c
+.obj1
+	anim_obj ANIM_OBJ_3B,  14, 0,   5, 0, $0
+.okay
 	anim_wait 16
-	anim_jumpuntil BattleAnim_FuryCutter_branch_cb388
+	anim_jumpuntil .loop
 	anim_ret
 ; cb3a1
 
@@ -4125,23 +4112,23 @@
 BattleAnim_SteelWing: ; cb3a1
 	anim_1gfx ANIM_GFX_REFLECT
 	anim_obp0 $0
-	anim_sound $0, SFX_RAGE
-	anim_call BattleAnim_SteelWing_branch_cbca7
+	anim_sound 0, 0, SFX_RAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_call BattleAnim_SteelWing_branch_cbc43
-	anim_call BattleAnim_SteelWing_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_1gfx ANIM_GFX_HIT
 	anim_resetobp0
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 148, 56, $0
-	anim_obj $1, 116, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -14, 4,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  14, 4,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 144, 56, $0
-	anim_obj $1, 120, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -14, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_WING_ATTACK
-	anim_obj $1, 140, 56, $0
-	anim_obj $1, 124, 56, $0
+	anim_sound 0, 1, SFX_WING_ATTACK
+	anim_obj ANIM_OBJ_01, -15, 4,   7, 0, $0
+	anim_obj ANIM_OBJ_01,  15, 4,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb3df
@@ -4149,16 +4136,16 @@
 BattleAnim_MeanLook: ; cb3df
 	anim_1gfx ANIM_GFX_PSYCHIC
 	anim_obp0 $e0
-	anim_sound $1, SFX_MEAN_LOOK
-	anim_obj $ac, 148, 32, $0
+	anim_sound 0, 1, SFX_MEAN_LOOK
+	anim_obj ANIM_OBJ_AC, -14, 4,   4, 0, $0
 	anim_wait 5
-	anim_obj $ac, 116, 64, $0
+	anim_obj ANIM_OBJ_AC,  14, 4,   8, 0, $0
 	anim_wait 5
-	anim_obj $ac, 148, 64, $0
+	anim_obj ANIM_OBJ_AC, -14, 4,   8, 0, $0
 	anim_wait 5
-	anim_obj $ac, 116, 32, $0
+	anim_obj ANIM_OBJ_AC,  14, 4,   4, 0, $0
 	anim_wait 5
-	anim_obj $ac, 132, 48, $0
+	anim_obj ANIM_OBJ_AC, -16, 4,   6, 0, $0
 	anim_wait 128
 	anim_ret
 ; cb405
@@ -4165,11 +4152,11 @@
 
 BattleAnim_Attract: ; cb405
 	anim_1gfx ANIM_GFX_OBJECTS
-BattleAnim_Attract_branch_cb407: ; cb407
-	anim_sound $0, SFX_ATTRACT
-	anim_obj $66, 44, 80, $2
+.loop
+	anim_sound 0, 0, SFX_ATTRACT
+	anim_obj ANIM_OBJ_66,   5, 4,  10, 0, $2
 	anim_wait 8
-	anim_loop $5, BattleAnim_Attract_branch_cb407
+	anim_loop 5, .loop
 	anim_wait 128
 	anim_wait 64
 	anim_ret
@@ -4177,11 +4164,11 @@
 
 BattleAnim_SleepTalk: ; cb417
 	anim_1gfx ANIM_GFX_STATUS
-BattleAnim_SleepTalk_branch_cb419: ; cb419
-	anim_sound $0, SFX_STRENGTH
-	anim_obj $54, 64, 80, $0
+.loop
+	anim_sound 0, 0, SFX_STRENGTH
+	anim_obj ANIM_OBJ_54,   8, 0,  10, 0, $0
 	anim_wait 40
-	anim_loop $2, BattleAnim_SleepTalk_branch_cb419
+	anim_loop 2, .loop
 	anim_wait 32
 	anim_ret
 ; cb428
@@ -4188,25 +4175,25 @@
 
 BattleAnim_HealBell: ; cb428
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_NOISE
-	anim_obj $84, 72, 56, $0
+	anim_obj ANIM_OBJ_84,   9, 0,   7, 0, $0
 	anim_wait 32
-BattleAnim_HealBell_branch_cb431: ; cb431
-	anim_sound $0, SFX_HEAL_BELL
-	anim_obj $85, 72, 52, $0
+.loop
+	anim_sound 0, 0, SFX_HEAL_BELL
+	anim_obj ANIM_OBJ_85,   9, 0,   6, 4, $0
 	anim_wait 8
-	anim_sound $0, SFX_HEAL_BELL
-	anim_obj $85, 72, 52, $1
+	anim_sound 0, 0, SFX_HEAL_BELL
+	anim_obj ANIM_OBJ_85,   9, 0,   6, 4, $1
 	anim_wait 8
-	anim_sound $0, SFX_HEAL_BELL
-	anim_obj $85, 72, 52, $2
+	anim_sound 0, 0, SFX_HEAL_BELL
+	anim_obj ANIM_OBJ_85,   9, 0,   6, 4, $2
 	anim_wait 8
-	anim_sound $0, SFX_HEAL_BELL
-	anim_obj $85, 72, 52, $0
+	anim_sound 0, 0, SFX_HEAL_BELL
+	anim_obj ANIM_OBJ_85,   9, 0,   6, 4, $0
 	anim_wait 8
-	anim_sound $0, SFX_HEAL_BELL
-	anim_obj $85, 72, 52, $2
+	anim_sound 0, 0, SFX_HEAL_BELL
+	anim_obj ANIM_OBJ_85,   9, 0,   6, 4, $2
 	anim_wait 8
-	anim_loop $4, BattleAnim_HealBell_branch_cb431
+	anim_loop 4, .loop
 	anim_wait 64
 	anim_ret
 ; cb464
@@ -4213,47 +4200,46 @@
 
 BattleAnim_Return: ; cb464
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Return_branch_cbcaf
-	anim_bgeffect $22, $0, $1, $0
-	anim_sound $0, SFX_RETURN
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
+	anim_sound 0, 0, SFX_RETURN
 	anim_wait 64
-	anim_incbgeffect $22
+	anim_incbgeffect ANIM_BG_BOUNCE_DOWN
 	anim_wait 32
-	anim_bgeffect $25, $0, $1, $0
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $3, 136, 40, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_03, -15, 0,   5, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_Return_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb488
 
 BattleAnim_Present: ; cb488
 	anim_2gfx ANIM_GFX_STATUS, ANIM_GFX_BUBBLE
-	anim_sound $1, SFX_PRESENT
-	anim_obj $8d, 64, 88, $6c
+	anim_sound 0, 1, SFX_PRESENT
+	anim_obj ANIM_OBJ_8D,   8, 0,  11, 0, $6c
 	anim_wait 56
-	anim_obj $53, 104, 48, $0
+	anim_obj ANIM_OBJ_53,  13, 0,   6, 0, $0
 	anim_wait 48
-	anim_incobj $2
-	anim_jumpif $3, BattleAnim_Present_branch_cb4b2
-	anim_incobj $1
+	anim_incobj  2
+	anim_jumpif $3, .heal
+	anim_incobj  1
 	anim_wait 1
 	anim_1gfx ANIM_GFX_EXPLOSION
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
-BattleAnim_Present_branch_cb4aa: ; cb4aa
+.loop
 	anim_call BattleAnim_Present_branch_cbb8f
 	anim_wait 16
-	anim_jumpuntil BattleAnim_Present_branch_cb4aa
+	anim_jumpuntil .loop
 	anim_ret
-; cb4b2
 
-BattleAnim_Present_branch_cb4b2: ; cb4b2
-	anim_sound $1, SFX_METRONOME
-BattleAnim_Present_branch_cb4b5: ; cb4b5
-	anim_obj $2c, 132, 48, $24
+.heal
+	anim_sound 0, 1, SFX_METRONOME
+.loop2
+	anim_obj ANIM_OBJ_2C, -16, 4,   6, 0, $24
 	anim_wait 8
-	anim_loop $8, BattleAnim_Present_branch_cb4b5
+	anim_loop 8, .loop2
 	anim_wait 128
 	anim_ret
 ; cb4c1
@@ -4260,37 +4246,37 @@
 
 BattleAnim_Frustration: ; cb4c1
 	anim_1gfx ANIM_GFX_MISC
-	anim_sound $0, SFX_KINESIS_2
-	anim_obj $83, 72, 80, $0
+	anim_sound 0, 0, SFX_KINESIS_2
+	anim_obj ANIM_OBJ_83,   9, 0,  10, 0, $0
 	anim_wait 40
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_Frustration_branch_cbca7
-	anim_bgeffect $26, $0, $1, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_26, $0, $1, $0
 	anim_wait 8
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 120, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01,  15, 0,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 152, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01, -13, 0,   6, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 136, 48, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01, -15, 0,   6, 0, $0
 	anim_wait 8
-	anim_incbgeffect $26
+	anim_incbgeffect ANIM_BG_26
 	anim_wait 1
-	anim_call BattleAnim_Frustration_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb4f9
 
 BattleAnim_Safeguard: ; cb4f9
 	anim_1gfx ANIM_GFX_MISC
-	anim_bgeffect $6, $0, $2, $0
-	anim_obj $89, 80, 80, $0
-	anim_obj $89, 80, 80, $d
-	anim_obj $89, 80, 80, $1a
-	anim_obj $89, 80, 80, $27
-	anim_obj $89, 80, 80, $34
-	anim_sound $0, SFX_PROTECT
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+	anim_obj ANIM_OBJ_89,  10, 0,  10, 0, $0
+	anim_obj ANIM_OBJ_89,  10, 0,  10, 0, $d
+	anim_obj ANIM_OBJ_89,  10, 0,  10, 0, $1a
+	anim_obj ANIM_OBJ_89,  10, 0,  10, 0, $27
+	anim_obj ANIM_OBJ_89,  10, 0,  10, 0, $34
+	anim_sound 0, 0, SFX_PROTECT
 	anim_wait 96
 	anim_ret
 ; cb51e
@@ -4297,14 +4283,14 @@
 
 BattleAnim_PainSplit: ; cb51e
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_OBJECTS
-	anim_call BattleAnim_PainSplit_branch_cbcaf
-	anim_bgeffect $25, $0, $1, $0
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_TACKLE
-	anim_obj $4, 112, 48, $0
-	anim_obj $4, 76, 96, $0
+	anim_sound 0, 1, SFX_TACKLE
+	anim_obj ANIM_OBJ_04,  14, 0,   6, 0, $0
+	anim_obj ANIM_OBJ_04,   9, 4,  12, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_PainSplit_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 1
 	anim_ret
 ; cb53d
@@ -4311,25 +4297,25 @@
 
 BattleAnim_SacredFire: ; cb53d
 	anim_1gfx ANIM_GFX_FIRE
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
-BattleAnim_SacredFire_branch_cb549: ; cb549
-	anim_sound $0, SFX_EMBER
-	anim_obj $80, 48, 104, $0
+.loop
+	anim_sound 0, 0, SFX_EMBER
+	anim_obj ANIM_OBJ_80,   6, 0,  13, 0, $0
 	anim_wait 8
-	anim_loop $8, BattleAnim_SacredFire_branch_cb549
+	anim_loop 8, .loop
 	anim_wait 96
-	anim_call BattleAnim_SacredFire_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_EMBER
-	anim_obj $f, 136, 48, $1
-	anim_obj $f, 136, 48, $4
-	anim_obj $f, 136, 48, $5
+	anim_sound 0, 1, SFX_EMBER
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $1
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $4
+	anim_obj ANIM_OBJ_0F, -15, 0,   6, 0, $5
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
-	anim_incobj $9
+	anim_incobj  9
 	anim_wait 8
 	anim_ret
 ; cb57d
@@ -4336,20 +4322,20 @@
 
 BattleAnim_Magnitude: ; cb57d
 	anim_1gfx ANIM_GFX_ROCKS
-BattleAnim_Magnitude_branch_cb57f: ; cb57f
-	anim_bgeffect $1f, $e, $4, $0
-	anim_sound $1, SFX_STRENGTH
-	anim_obj $1e, 128, 64, $40
+.loop
+	anim_bgeffect ANIM_BG_1F, $e, $4, $0
+	anim_sound 0, 1, SFX_STRENGTH
+	anim_obj ANIM_OBJ_1E,  16, 0,   8, 0, $40
 	anim_wait 2
-	anim_obj $1e, 120, 68, $30
+	anim_obj ANIM_OBJ_1E,  15, 0,   8, 4, $30
 	anim_wait 2
-	anim_obj $1e, 152, 68, $30
+	anim_obj ANIM_OBJ_1E, -13, 0,   8, 4, $30
 	anim_wait 2
-	anim_obj $1e, 144, 64, $40
+	anim_obj ANIM_OBJ_1E, -14, 0,   8, 0, $40
 	anim_wait 2
-	anim_obj $1e, 136, 68, $30
+	anim_obj ANIM_OBJ_1E, -15, 0,   8, 4, $30
 	anim_wait 2
-	anim_jumpuntil BattleAnim_Magnitude_branch_cb57f
+	anim_jumpuntil .loop
 	anim_wait 96
 	anim_ret
 ; cb5aa
@@ -4356,8 +4342,8 @@
 
 BattleAnim_Dynamicpunch: ; cb5aa
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_EXPLOSION
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $a, 136, 56, $43
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_0A, -15, 0,   7, 0, $43
 	anim_wait 16
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
 	anim_call BattleAnim_Dynamicpunch_branch_cbb8f
@@ -4367,13 +4353,13 @@
 
 BattleAnim_Megahorn: ; cb5c0
 	anim_2gfx ANIM_GFX_HORN, ANIM_GFX_HIT
-	anim_bgeffect $1f, $40, $2, $0
+	anim_bgeffect ANIM_BG_1F, $40, $2, $0
 	anim_wait 48
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
-	anim_obj $5f, 72, 80, $1
-	anim_sound $1, SFX_HORN_ATTACK
+	anim_obj ANIM_OBJ_5F,   9, 0,  10, 0, $1
+	anim_sound 0, 1, SFX_HORN_ATTACK
 	anim_wait 16
-	anim_obj $0, 136, 56, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb5de
@@ -4380,11 +4366,11 @@
 
 BattleAnim_Dragonbreath: ; cb5de
 	anim_1gfx ANIM_GFX_FIRE
-	anim_sound $1a, SFX_EMBER
-BattleAnim_Dragonbreath_branch_cb5e3: ; cb5e3
-	anim_obj $90, 64, 92, $4
+	anim_sound 6, 2, SFX_EMBER
+.loop
+	anim_obj ANIM_OBJ_90,   8, 0,  11, 4, $4
 	anim_wait 4
-	anim_loop $a, BattleAnim_Dragonbreath_branch_cb5e3
+	anim_loop 10, .loop
 	anim_wait 64
 	anim_ret
 ; cb5ef
@@ -4391,8 +4377,8 @@
 
 BattleAnim_BatonPass: ; cb5ef
 	anim_1gfx ANIM_GFX_MISC
-	anim_obj $86, 44, 104, $20
-	anim_sound $0, SFX_BATON_PASS
+	anim_obj ANIM_OBJ_86,   5, 4,  13, 0, $20
+	anim_sound 0, 0, SFX_BATON_PASS
 	anim_call BattleAnim_BatonPass_branch_c9486
 	anim_wait 64
 	anim_ret
@@ -4400,13 +4386,13 @@
 
 BattleAnim_Encore: ; cb5fe
 	anim_1gfx ANIM_GFX_OBJECTS
-	anim_obj $99, 64, 80, $90
-	anim_obj $99, 64, 80, $10
-	anim_sound $0, SFX_ENCORE
+	anim_obj ANIM_OBJ_99,   8, 0,  10, 0, $90
+	anim_obj ANIM_OBJ_99,   8, 0,  10, 0, $10
+	anim_sound 0, 0, SFX_ENCORE
 	anim_wait 16
-	anim_obj $9a, 64, 72, $2c
+	anim_obj ANIM_OBJ_9A,   8, 0,   9, 0, $2c
 	anim_wait 32
-	anim_obj $9a, 64, 72, $34
+	anim_obj ANIM_OBJ_9A,   8, 0,   9, 0, $34
 	anim_wait 16
 	anim_ret
 ; cb61b
@@ -4414,8 +4400,8 @@
 BattleAnim_Pursuit: ; cb61b
 	anim_1gfx ANIM_GFX_HIT
 	anim_jumpif $1, BattleAnim_Pursuit_branch_cb62b
-	anim_sound $1, SFX_COMET_PUNCH
-	anim_obj $1, 136, 56, $0
+	anim_sound 0, 1, SFX_COMET_PUNCH
+	anim_obj ANIM_OBJ_01, -15, 0,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb62b
@@ -4423,20 +4409,20 @@
 BattleAnim_Pursuit_branch_cb62b: ; cb62b
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $0, $0
 	anim_wait 4
-	anim_call BattleAnim_Pursuit_branch_cbcc2
-	anim_obj $ad, 132, 64, $0
+	anim_call BattleAnim_FollowEnemyFeet_1
+	anim_obj ANIM_OBJ_AD, -16, 4,   8, 0, $0
 	anim_wait 64
-	anim_obj $ad, 132, 64, $1
-	anim_sound $1, SFX_BALL_POOF
+	anim_obj ANIM_OBJ_AD, -16, 4,   8, 0, $1
+	anim_sound 0, 1, SFX_BALL_POOF
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $0, $0
 	anim_wait 64
-	anim_incobj $3
+	anim_incobj  3
 	anim_wait 16
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $0, 120, 56, $0
-	anim_bgeffect $2d, $0, $0, $0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_00,  15, 0,   7, 0, $0
+	anim_bgeffect ANIM_BG_2D, $0, $0, $0
 	anim_wait 16
-	anim_call BattleAnim_Pursuit_branch_cbcd2
+	anim_call BattleAnim_ShowMon_1
 	anim_wait 1
 	anim_ret
 ; cb65e
@@ -4444,22 +4430,22 @@
 BattleAnim_RapidSpin: ; cb65e
 	anim_2gfx ANIM_GFX_WIND, ANIM_GFX_HIT
 	anim_obp0 $e4
-BattleAnim_RapidSpin_branch_cb663: ; cb663
-	anim_sound $0, SFX_MENU
-	anim_obj $a8, 44, 112, $0
+.loop
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_A8,   5, 4,  14, 0, $0
 	anim_wait 2
-	anim_loop $5, BattleAnim_RapidSpin_branch_cb663
+	anim_loop 5, .loop
 	anim_wait 24
-	anim_call BattleAnim_RapidSpin_branch_cbcaf
-	anim_bgeffect $25, $0, $1, $0
+	anim_call BattleAnim_FollowPlayerHead_0
+	anim_bgeffect ANIM_BG_25, $0, $1, $0
 	anim_wait 4
 	anim_resetobp0
-	anim_sound $1, SFX_MEGA_KICK
-	anim_obj $4, 136, 40, $0
+	anim_sound 0, 1, SFX_MEGA_KICK
+	anim_obj ANIM_OBJ_04, -15, 0,   5, 0, $0
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
-	anim_incobj $6
+	anim_incobj  6
 	anim_wait 1
 	anim_ret
 ; cb68e
@@ -4466,16 +4452,16 @@
 
 BattleAnim_SweetScent: ; cb68e
 	anim_2gfx ANIM_GFX_FLOWER, ANIM_GFX_MISC
-	anim_sound $0, SFX_SWEET_SCENT
-	anim_obj ANIM_OBJ_FLOWER, 64, 96, $2
+	anim_sound 0, 0, SFX_SWEET_SCENT
+	anim_obj ANIM_OBJ_FLOWER,   8, 0,  12, 0, $2
 	anim_wait 2
-	anim_obj ANIM_OBJ_FLOWER, 64, 80, $2
+	anim_obj ANIM_OBJ_FLOWER,   8, 0,  10, 0, $2
 	anim_wait 96
 	anim_obp0 $54
-	anim_sound $1, SFX_SWEET_SCENT_2
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $15
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $2a
-	anim_obj ANIM_OBJ_COTTON, 136, 40, $3f
+	anim_sound 0, 1, SFX_SWEET_SCENT_2
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $15
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $2a
+	anim_obj ANIM_OBJ_COTTON, -15, 0,   5, 0, $3f
 	anim_wait 128
 	anim_ret
 ; cb6b6
@@ -4483,19 +4469,19 @@
 BattleAnim_IronTail: ; cb6b6
 	anim_1gfx ANIM_GFX_REFLECT
 	anim_obp0 $0
-	anim_sound $0, SFX_RAGE
-	anim_call BattleAnim_IronTail_branch_cbca7
+	anim_sound 0, 0, SFX_RAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_call BattleAnim_IronTail_branch_cbc43
 	anim_wait 4
 	anim_1gfx ANIM_GFX_HIT
 	anim_resetobp0
-	anim_bgeffect $26, $0, $1, $0
+	anim_bgeffect ANIM_BG_26, $0, $1, $0
 	anim_wait 16
-	anim_sound $1, SFX_MEGA_KICK
-	anim_obj $0, 136, 48, $0
+	anim_sound 0, 1, SFX_MEGA_KICK
+	anim_obj ANIM_OBJ_00, -15, 0,   6, 0, $0
 	anim_wait 16
-	anim_incbgeffect $26
-	anim_call BattleAnim_IronTail_branch_cbcb7
+	anim_incbgeffect ANIM_BG_26
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cb6dc
 
@@ -4502,16 +4488,16 @@
 BattleAnim_MetalClaw: ; cb6dc
 	anim_1gfx ANIM_GFX_REFLECT
 	anim_obp0 $0
-	anim_sound $0, SFX_RAGE
-	anim_call BattleAnim_MetalClaw_branch_cbca7
+	anim_sound 0, 0, SFX_RAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_call BattleAnim_MetalClaw_branch_cbc43
-	anim_call BattleAnim_MetalClaw_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_1gfx ANIM_GFX_CUT
 	anim_resetobp0
-	anim_sound $1, SFX_SCRATCH
-	anim_obj $37, 144, 48, $0
-	anim_obj $37, 140, 44, $0
-	anim_obj $37, 136, 40, $0
+	anim_sound 0, 1, SFX_SCRATCH
+	anim_obj ANIM_OBJ_37, -14, 0,   6, 0, $0
+	anim_obj ANIM_OBJ_37, -15, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_37, -15, 0,   5, 0, $0
 	anim_wait 32
 	anim_ret
 ; cb703
@@ -4518,23 +4504,23 @@
 
 BattleAnim_VitalThrow: ; cb703
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_VitalThrow_branch_cbca7
-	anim_bgeffect $2f, $0, $1, $0
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_2F, $0, $1, $0
 	anim_wait 16
-	anim_sound $0, SFX_MENU
-	anim_obj $4, 64, 96, $0
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_04,   8, 0,  12, 0, $0
 	anim_wait 8
-	anim_sound $0, SFX_MENU
-	anim_obj $4, 56, 88, $0
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_04,   7, 0,  11, 0, $0
 	anim_wait 8
-	anim_sound $0, SFX_MENU
-	anim_obj $4, 68, 104, $0
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_04,   8, 4,  13, 0, $0
 	anim_wait 8
-	anim_incbgeffect $2f
+	anim_incbgeffect ANIM_BG_2F
 	anim_wait 16
-	anim_call BattleAnim_VitalThrow_branch_cbcb7
-	anim_sound $1, SFX_MEGA_PUNCH
-	anim_obj $3, 132, 56, $0
+	anim_call BattleAnim_ShowMon_0
+	anim_sound 0, 1, SFX_MEGA_PUNCH
+	anim_obj ANIM_OBJ_03, -16, 4,   7, 0, $0
 	anim_wait 16
 	anim_ret
 ; cb739
@@ -4541,19 +4527,19 @@
 
 BattleAnim_MorningSun: ; cb739
 	anim_1gfx ANIM_GFX_SHINE
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $0, SFX_MORNING_SUN
-BattleAnim_MorningSun_branch_cb743: ; cb743
-	anim_obj $9c, 16, 48, $88
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 0, SFX_MORNING_SUN
+.loop
+	anim_obj ANIM_OBJ_9C,   2, 0,   6, 0, $88
 	anim_wait 6
-	anim_loop $5, BattleAnim_MorningSun_branch_cb743
+	anim_loop 5, .loop
 	anim_wait 32
-	anim_jumpif $0, BattleAnim_MorningSun_branch_cb756
+	anim_jumpif $0, .zero
 	anim_call BattleAnim_MorningSun_branch_cbc6a
 	anim_ret
 ; cb756
 
-BattleAnim_MorningSun_branch_cb756: ; cb756
+.zero
 	anim_call BattleAnim_MorningSun_branch_cbc80
 	anim_ret
 ; cb75a
@@ -4560,13 +4546,13 @@
 
 BattleAnim_Synthesis: ; cb75a
 	anim_1gfx ANIM_GFX_SHINE
-	anim_call BattleAnim_Synthesis_branch_cbca7
-	anim_bgeffect $18, $0, $1, $40
-	anim_bgeffect $7, $0, $0, $0
-	anim_sound $0, SFX_OUTRAGE
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_18, $0, $1, $40
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_sound 0, 0, SFX_OUTRAGE
 	anim_wait 72
-	anim_incbgeffect $18
-	anim_call BattleAnim_Synthesis_branch_cbcb7
+	anim_incbgeffect ANIM_BG_18
+	anim_call BattleAnim_ShowMon_0
 	anim_jumpif $1, BattleAnim_Synthesis_branch_cb77a
 	anim_call BattleAnim_Synthesis_branch_cbc6a
 	anim_ret
@@ -4581,15 +4567,15 @@
 	anim_2gfx ANIM_GFX_CUT, ANIM_GFX_HIT
 	anim_bgp $1b
 	anim_obp0 $c0
-	anim_bgeffect $1f, $20, $2, $0
-	anim_obj $36, 136, 56, $a8
-	anim_obj $36, 136, 56, $28
+	anim_bgeffect ANIM_BG_1F, $20, $2, $0
+	anim_obj ANIM_OBJ_36, -15, 0,   7, 0, $a8
+	anim_obj ANIM_OBJ_36, -15, 0,   7, 0, $28
 	anim_wait 8
-	anim_sound $1, SFX_BITE
-	anim_obj $0, 144, 48, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_00, -14, 0,   6, 0, $18
 	anim_wait 16
-	anim_sound $1, SFX_BITE
-	anim_obj $0, 128, 64, $18
+	anim_sound 0, 1, SFX_BITE
+	anim_obj ANIM_OBJ_00,  16, 0,   8, 0, $18
 	anim_wait 8
 	anim_ret
 ; cb7a8
@@ -4597,14 +4583,14 @@
 BattleAnim_Moonlight: ; cb7a8
 	anim_1gfx ANIM_GFX_SHINE
 	anim_bgp $1b
-	anim_bgeffect $7, $0, $0, $0
-	anim_obj $9e, 0, 40, $0
-	anim_obj $9e, 16, 56, $0
-	anim_obj $9e, 32, 72, $0
-	anim_obj $9e, 48, 88, $0
-	anim_obj $9e, 64, 104, $0
+	anim_bgeffect ANIM_BG_07, $0, $0, $0
+	anim_obj ANIM_OBJ_9E,   0, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_9E,   2, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_9E,   4, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_9E,   6, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_9E,   8, 0,  13, 0, $0
 	anim_wait 1
-	anim_sound $0, SFX_MOONLIGHT
+	anim_sound 0, 0, SFX_MOONLIGHT
 	anim_wait 63
 	anim_jumpif $3, BattleAnim_Moonlight_branch_cb7d7
 	anim_call BattleAnim_Moonlight_branch_cbc6a
@@ -4618,35 +4604,35 @@
 
 BattleAnim_HiddenPower: ; cb7db
 	anim_1gfx ANIM_GFX_CHARGE
-	anim_call BattleAnim_HiddenPower_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_bgeffect $7, $0, $2, $0
-	anim_obj $9f, 44, 88, $0
-	anim_obj $9f, 44, 88, $8
-	anim_obj $9f, 44, 88, $10
-	anim_obj $9f, 44, 88, $18
-	anim_obj $9f, 44, 88, $20
-	anim_obj $9f, 44, 88, $28
-	anim_obj $9f, 44, 88, $30
-	anim_obj $9f, 44, 88, $38
-BattleAnim_HiddenPower_branch_cb812: ; cb812
-	anim_sound $0, SFX_SWORDS_DANCE
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_bgeffect ANIM_BG_07, $0, $2, $0
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $0
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $8
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $10
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $18
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $20
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $28
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $30
+	anim_obj ANIM_OBJ_9F,   5, 4,  11, 0, $38
+.loop
+	anim_sound 0, 0, SFX_SWORDS_DANCE
 	anim_wait 8
-	anim_loop $c, BattleAnim_HiddenPower_branch_cb812
-	anim_incbgeffect $1a
-	anim_call BattleAnim_HiddenPower_branch_cbcb7
+	anim_loop 12, .loop
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_incobj $7
-	anim_incobj $8
-	anim_incobj $9
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_incobj  7
+	anim_incobj  8
+	anim_incobj  9
 	anim_wait 16
 	anim_1gfx ANIM_GFX_HIT
-	anim_obj $0, 136, 56, $0
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 32
 	anim_ret
 ; cb83a
@@ -4653,13 +4639,13 @@
 
 BattleAnim_CrossChop: ; cb83a
 	anim_1gfx ANIM_GFX_CUT
-	anim_sound $1, SFX_CUT
-	anim_obj $a0, 152, 40, $0
-	anim_obj $a1, 120, 72, $0
+	anim_sound 0, 1, SFX_CUT
+	anim_obj ANIM_OBJ_A0, -13, 0,   5, 0, $0
+	anim_obj ANIM_OBJ_A1,  15, 0,   9, 0, $0
 	anim_wait 8
-	anim_bgeffect $1f, $58, $2, $0
+	anim_bgeffect ANIM_BG_1F, $58, $2, $0
 	anim_wait 92
-	anim_sound $1, SFX_VICEGRIP
+	anim_sound 0, 1, SFX_VICEGRIP
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $10
 	anim_wait 16
 	anim_ret
@@ -4667,44 +4653,44 @@
 
 BattleAnim_Twister: ; cb85a
 	anim_2gfx ANIM_GFX_WIND, ANIM_GFX_HIT
-BattleAnim_Twister_branch_cb85d: ; cb85d
-	anim_sound $0, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_GUST, 64, 112, $0
+.loop1
+	anim_sound 0, 0, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_GUST,   8, 0,  14, 0, $0
 	anim_wait 6
-	anim_loop $9, BattleAnim_Twister_branch_cb85d
-BattleAnim_Twister_branch_cb86a: ; cb86a
-	anim_sound $0, SFX_RAZOR_WIND
+	anim_loop 9, .loop1
+.loop2
+	anim_sound 0, 0, SFX_RAZOR_WIND
 	anim_wait 8
-	anim_loop $8, BattleAnim_Twister_branch_cb86a
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_incobj $7
-	anim_incobj $8
-	anim_incobj $9
+	anim_loop 8, .loop2
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_incobj  7
+	anim_incobj  8
+	anim_incobj  9
 	anim_wait 64
-	anim_obj $1, 144, 64, $18
-BattleAnim_Twister_branch_cb88a: ; cb88a
-	anim_sound $1, SFX_RAZOR_WIND
+	anim_obj ANIM_OBJ_01, -14, 0,   8, 0, $18
+.loop3
+	anim_sound 0, 1, SFX_RAZOR_WIND
 	anim_wait 8
-	anim_loop $4, BattleAnim_Twister_branch_cb88a
-	anim_obj $1, 128, 32, $18
-BattleAnim_Twister_branch_cb897: ; cb897
-	anim_sound $1, SFX_RAZOR_WIND
+	anim_loop 4, .loop3
+	anim_obj ANIM_OBJ_01,  16, 0,   4, 0, $18
+.loop4
+	anim_sound 0, 1, SFX_RAZOR_WIND
 	anim_wait 8
-	anim_loop $4, BattleAnim_Twister_branch_cb897
-	anim_incobj $1
-	anim_incobj $2
-	anim_incobj $3
-	anim_incobj $4
-	anim_incobj $5
-	anim_incobj $6
-	anim_incobj $7
-	anim_incobj $8
-	anim_incobj $9
+	anim_loop 4, .loop4
+	anim_incobj  1
+	anim_incobj  2
+	anim_incobj  3
+	anim_incobj  4
+	anim_incobj  5
+	anim_incobj  6
+	anim_incobj  7
+	anim_incobj  8
+	anim_incobj  9
 	anim_wait 32
 	anim_ret
 ; cb8b3
@@ -4713,12 +4699,12 @@
 	anim_1gfx ANIM_GFX_WATER
 	anim_bgp $f8
 	anim_obp0 $7c
-	anim_sound $1, SFX_RAIN_DANCE
-	anim_obj $af, 88, 0, $0
+	anim_sound 0, 1, SFX_RAIN_DANCE
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $0
 	anim_wait 8
-	anim_obj $af, 88, 0, $1
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $1
 	anim_wait 8
-	anim_obj $af, 88, 0, $2
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $2
 	anim_wait 128
 	anim_ret
 ; cb8cf
@@ -4726,12 +4712,12 @@
 BattleAnim_SunnyDay: ; cb8cf
 	anim_1gfx ANIM_GFX_WATER
 	anim_bgp $90
-	anim_sound $1, SFX_MORNING_SUN
-	anim_obj $af, 88, 0, $2
+	anim_sound 0, 1, SFX_MORNING_SUN
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $2
 	anim_wait 8
-	anim_obj $af, 88, 0, $2
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $2
 	anim_wait 8
-	anim_obj $af, 88, 0, $2
+	anim_obj ANIM_OBJ_AF,  11, 0,   0, 0, $2
 	anim_wait 128
 	anim_ret
 ; cb8e9
@@ -4738,19 +4724,19 @@
 
 BattleAnim_MirrorCoat: ; cb8e9
 	anim_2gfx ANIM_GFX_REFLECT, ANIM_GFX_SPEED
-	anim_bgeffect $6, $0, $2, $0
-BattleAnim_MirrorCoat_branch_cb8f1: ; cb8f1
-	anim_sound $0, SFX_SHINE
-	anim_obj $50, 72, 80, $0
-	anim_obj $ae, 64, 72, $4
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
+.loop
+	anim_sound 0, 0, SFX_SHINE
+	anim_obj ANIM_OBJ_50,   9, 0,  10, 0, $0
+	anim_obj ANIM_OBJ_AE,   8, 0,   9, 0, $4
 	anim_wait 8
-	anim_obj $ae, 64, 88, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  11, 0, $4
 	anim_wait 8
-	anim_obj $ae, 64, 80, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  10, 0, $4
 	anim_wait 8
-	anim_obj $ae, 64, 96, $4
+	anim_obj ANIM_OBJ_AE,   8, 0,  12, 0, $4
 	anim_wait 8
-	anim_loop $3, BattleAnim_MirrorCoat_branch_cb8f1
+	anim_loop 3, .loop
 	anim_wait 32
 	anim_ret
 ; cb917
@@ -4757,16 +4743,16 @@
 
 BattleAnim_PsychUp: ; cb917
 	anim_1gfx ANIM_GFX_STATUS
-	anim_call BattleAnim_PsychUp_branch_cbca7
-	anim_bgeffect $1a, $0, $1, $20
-	anim_sound $0, SFX_PSYBEAM
-	anim_obj $b1, 44, 88, $0
-	anim_obj $b1, 44, 88, $10
-	anim_obj $b1, 44, 88, $20
-	anim_obj $b1, 44, 88, $30
+	anim_call BattleAnim_FollowEnemyFeet_0
+	anim_bgeffect ANIM_BG_1A, $0, $1, $20
+	anim_sound 0, 0, SFX_PSYBEAM
+	anim_obj ANIM_OBJ_B1,   5, 4,  11, 0, $0
+	anim_obj ANIM_OBJ_B1,   5, 4,  11, 0, $10
+	anim_obj ANIM_OBJ_B1,   5, 4,  11, 0, $20
+	anim_obj ANIM_OBJ_B1,   5, 4,  11, 0, $30
 	anim_wait 64
-	anim_incbgeffect $1a
-	anim_call BattleAnim_PsychUp_branch_cbcb7
+	anim_incbgeffect ANIM_BG_1A
+	anim_call BattleAnim_ShowMon_0
 	anim_wait 16
 	anim_ret
 ; cb940
@@ -4774,16 +4760,16 @@
 BattleAnim_Extremespeed: ; cb940
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_CUT
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_sound $0, SFX_MENU
-	anim_obj $77, 24, 88, $2
-	anim_obj $77, 32, 88, $1
-	anim_obj $77, 40, 88, $0
-	anim_obj $77, 48, 88, $80
-	anim_obj $77, 56, 88, $81
-	anim_obj $77, 64, 88, $82
+	anim_sound 0, 0, SFX_MENU
+	anim_obj ANIM_OBJ_77,   3, 0,  11, 0, $2
+	anim_obj ANIM_OBJ_77,   4, 0,  11, 0, $1
+	anim_obj ANIM_OBJ_77,   5, 0,  11, 0, $0
+	anim_obj ANIM_OBJ_77,   6, 0,  11, 0, $80
+	anim_obj ANIM_OBJ_77,   7, 0,  11, 0, $81
+	anim_obj ANIM_OBJ_77,   8, 0,  11, 0, $82
 	anim_wait 12
-	anim_sound $1, SFX_CUT
-	anim_obj $3a, 152, 40, $0
+	anim_sound 0, 1, SFX_CUT
+	anim_obj ANIM_OBJ_3A, -13, 0,   5, 0, $0
 	anim_wait 32
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 16
@@ -4792,29 +4778,29 @@
 
 BattleAnim_Ancientpower: ; cb97a
 	anim_2gfx ANIM_GFX_ROCKS, ANIM_GFX_HIT
-	anim_sound $0, SFX_SPARK
-	anim_obj $b2, 64, 108, $20
+	anim_sound 0, 0, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,   8, 0,  13, 4, $20
 	anim_wait 8
-	anim_sound $0, SFX_SPARK
-	anim_obj $b2, 75, 102, $20
+	anim_sound 0, 0, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,   9, 3,  12, 6, $20
 	anim_wait 8
-	anim_sound $0, SFX_SPARK
-	anim_obj $b2, 85, 97, $20
+	anim_sound 0, 0, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,  10, 5,  12, 1, $20
 	anim_wait 8
-	anim_sound $0, SFX_SPARK
-	anim_obj $b2, 96, 92, $20
+	anim_sound 0, 0, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,  12, 0,  11, 4, $20
 	anim_wait 8
-	anim_sound $1, SFX_SPARK
-	anim_obj $b2, 106, 87, $20
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,  13, 2,  10, 7, $20
 	anim_wait 8
-	anim_sound $1, SFX_SPARK
-	anim_obj $b2, 116, 82, $20
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,  14, 4,  10, 2, $20
 	anim_wait 8
-	anim_sound $1, SFX_SPARK
-	anim_obj $b2, 126, 77, $20
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B2,  15, 6,   9, 5, $20
 	anim_wait 8
-	anim_sound $1, SFX_SPARK
-	anim_obj $0, 136, 56, $0
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_00, -15, 0,   7, 0, $0
 	anim_wait 6
 	anim_ret
 ; cb9c6
@@ -4822,10 +4808,10 @@
 BattleAnim_ShadowBall: ; cb9c6
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_SMOKE
 	anim_bgp $1b
-	anim_sound $1a, SFX_SLUDGE_BOMB
-	anim_obj $b4, 64, 92, $2
+	anim_sound 6, 2, SFX_SLUDGE_BOMB
+	anim_obj ANIM_OBJ_B4,   8, 0,  11, 4, $2
 	anim_wait 32
-	anim_obj $1c, 132, 56, $10
+	anim_obj ANIM_OBJ_1C, -16, 4,   7, 0, $10
 	anim_wait 24
 	anim_ret
 ; cb9db
@@ -4832,21 +4818,21 @@
 
 BattleAnim_FutureSight: ; cb9db
 	anim_1gfx ANIM_GFX_WIND
-	anim_bgeffect $6, $0, $2, $0
+	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
-	anim_obj $7d, 8, 24, $10
-	anim_obj $7d, 8, 48, $2
-	anim_obj $7d, 8, 88, $8
+	anim_obj ANIM_OBJ_7D,   1, 0,   3, 0, $10
+	anim_obj ANIM_OBJ_7D,   1, 0,   6, 0, $2
+	anim_obj ANIM_OBJ_7D,   1, 0,  11, 0, $8
 	anim_wait 4
-	anim_obj $7d, 8, 32, $6
-	anim_obj $7d, 8, 56, $c
-	anim_obj $7d, 8, 80, $4
-	anim_obj $7d, 8, 104, $e
-BattleAnim_FutureSight_branch_cba10: ; cba10
-	anim_sound $0, SFX_THROW_BALL
+	anim_obj ANIM_OBJ_7D,   1, 0,   4, 0, $6
+	anim_obj ANIM_OBJ_7D,   1, 0,   7, 0, $c
+	anim_obj ANIM_OBJ_7D,   1, 0,  10, 0, $4
+	anim_obj ANIM_OBJ_7D,   1, 0,  13, 0, $e
+.loop
+	anim_sound 0, 0, SFX_THROW_BALL
 	anim_wait 16
-	anim_loop $4, BattleAnim_FutureSight_branch_cba10
+	anim_loop 4, .loop
 	anim_incbgeffect ANIM_BG_PSYCHIC
 	anim_ret
 ; cba1b
@@ -4853,24 +4839,24 @@
 
 BattleAnim_RockSmash: ; cba1b
 	anim_2gfx ANIM_GFX_ROCKS, ANIM_GFX_HIT
-	anim_sound $1, SFX_SPARK
-	anim_obj $1, 128, 56, $0
-	anim_sound $1, SFX_SPARK
-	anim_obj $b5, 128, 64, $28
-	anim_obj $b5, 128, 64, $5c
-	anim_sound $1, SFX_SPARK
-	anim_obj $b5, 128, 64, $10
-	anim_obj $b5, 128, 64, $e8
-	anim_sound $1, SFX_SPARK
-	anim_obj $b5, 128, 64, $9c
-	anim_obj $b5, 128, 64, $d0
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_01,  16, 0,   7, 0, $0
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $28
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $5c
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $10
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $e8
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $9c
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $d0
 	anim_wait 6
-	anim_sound $1, SFX_SPARK
-	anim_obj $b5, 128, 64, $1c
-	anim_obj $b5, 128, 64, $50
-	anim_sound $1, SFX_SPARK
-	anim_obj $b5, 128, 64, $dc
-	anim_obj $b5, 128, 64, $90
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $1c
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $50
+	anim_sound 0, 1, SFX_SPARK
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $dc
+	anim_obj ANIM_OBJ_B5,  16, 0,   8, 0, $90
 	anim_wait 32
 	anim_ret
 ; cba6a
@@ -4878,12 +4864,12 @@
 BattleAnim_Whirlpool: ; cba6a
 	anim_1gfx ANIM_GFX_WIND
 	anim_bgeffect ANIM_BG_WHIRLPOOL, $0, $0, $0
-	anim_sound $1, SFX_SURF
+	anim_sound 0, 1, SFX_SURF
 	anim_wait 16
-BattleAnim_Whirlpool_branch_cba75: ; cba75
-	anim_obj ANIM_OBJ_GUST, 132, 72, $0
+.loop
+	anim_obj ANIM_OBJ_GUST, -16, 4,   9, 0, $0
 	anim_wait 6
-	anim_loop $9, BattleAnim_Whirlpool_branch_cba75
+	anim_loop 9, .loop
 	anim_wait 64
 	anim_incbgeffect ANIM_BG_WHIRLPOOL
 	anim_wait 1
@@ -4891,23 +4877,23 @@
 ; cba84
 
 BattleAnim_BeatUp: ; cba84
-	anim_jumpif $0, BattleAnim_BeatUp_branch_cba9b
-	anim_sound $0, SFX_BALL_POOF
+	anim_jumpif $0, .current_mon
+	anim_sound 0, 0, SFX_BALL_POOF
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $1, $0
 	anim_wait 16
 	anim_beatup
-	anim_sound $0, SFX_BALL_POOF
+	anim_sound 0, 0, SFX_BALL_POOF
 	anim_bgeffect ANIM_BG_ENTER_MON, $0, $1, $0
 	anim_wait 16
-BattleAnim_BeatUp_branch_cba9b: ; cba9b
+.current_mon
 	anim_1gfx ANIM_GFX_HIT
-	anim_call BattleAnim_BeatUp_branch_cbca7
+	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
-	anim_sound $1, SFX_BEAT_UP
-	anim_obj $0, 136, 48, $0
+	anim_sound 0, 1, SFX_BEAT_UP
+	anim_obj ANIM_OBJ_00, -15, 0,   6, 0, $0
 	anim_wait 8
-	anim_call BattleAnim_BeatUp_branch_cbcb7
+	anim_call BattleAnim_ShowMon_0
 	anim_ret
 ; cbab3
 
@@ -4914,14 +4900,14 @@
 BattleAnim_DreamEater_branch_cbab3: ; cbab3
 BattleAnim_GigaDrain_branch_cbab3: ; cbab3
 BattleAnim_LeechLife_branch_cbab3: ; cbab3
-	anim_obj $71, 132, 44, $0
-	anim_obj $71, 132, 44, $8
-	anim_obj $71, 132, 44, $10
-	anim_obj $71, 132, 44, $18
-	anim_obj $71, 132, 44, $20
-	anim_obj $71, 132, 44, $28
-	anim_obj $71, 132, 44, $30
-	anim_obj $71, 132, 44, $38
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $0
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $8
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $10
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $18
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $20
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $28
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $30
+	anim_obj ANIM_OBJ_71, -16, 4,   5, 4, $38
 	anim_ret
 ; cbadc
 
@@ -4928,30 +4914,30 @@
 BattleAnim_Glare_branch_cbadc: ; cbadc
 BattleAnim_Leer_branch_cbadc: ; cbadc
 BattleAnim_ScaryFace_branch_cbadc: ; cbadc
-	anim_sound $1a, SFX_LEER
-	anim_obj $4e, 72, 84, $0
-	anim_obj $4e, 64, 80, $0
-	anim_obj $4e, 88, 76, $0
-	anim_obj $4e, 80, 72, $0
-	anim_obj $4e, 104, 68, $0
-	anim_obj $4e, 96, 64, $0
-	anim_obj $4e, 120, 60, $0
-	anim_obj $4e, 112, 56, $0
-	anim_obj $4f, 130, 54, $0
-	anim_obj $4f, 122, 50, $0
+	anim_sound 6, 2, SFX_LEER
+	anim_obj ANIM_OBJ_4E,   9, 0,  10, 4, $0
+	anim_obj ANIM_OBJ_4E,   8, 0,  10, 0, $0
+	anim_obj ANIM_OBJ_4E,  11, 0,   9, 4, $0
+	anim_obj ANIM_OBJ_4E,  10, 0,   9, 0, $0
+	anim_obj ANIM_OBJ_4E,  13, 0,   8, 4, $0
+	anim_obj ANIM_OBJ_4E,  12, 0,   8, 0, $0
+	anim_obj ANIM_OBJ_4E,  15, 0,   7, 4, $0
+	anim_obj ANIM_OBJ_4E,  14, 0,   7, 0, $0
+	anim_obj ANIM_OBJ_4F, -16, 2,   6, 6, $0
+	anim_obj ANIM_OBJ_4F,  15, 2,   6, 2, $0
 	anim_ret
 ; cbb12
 
 BattleAnim_Fly_branch_cbb12: ; cbb12
 BattleAnim_Teleport_branch_cbb12: ; cbb12
-	anim_sound $0, SFX_WARP_TO
-	anim_obj $44, 44, 108, $0
-	anim_obj $44, 44, 100, $0
-	anim_obj $44, 44, 92, $0
-	anim_obj $44, 44, 84, $0
-	anim_obj $44, 44, 76, $0
-	anim_obj $44, 44, 68, $0
-	anim_obj $44, 44, 60, $0
+	anim_sound 0, 0, SFX_WARP_TO
+	anim_obj ANIM_OBJ_44,   5, 4,  13, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,  12, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,  11, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,  10, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,   9, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,   8, 4, $0
+	anim_obj ANIM_OBJ_44,   5, 4,   7, 4, $0
 	anim_ret
 ; cbb39
 
@@ -4958,37 +4944,37 @@
 BattleAnim_AuroraBeam_branch_cbb39: ; cbb39
 BattleAnim_HyperBeam_branch_cbb39: ; cbb39
 BattleAnim_Solarbeam_branch_cbb39: ; cbb39
-	anim_sound $0, SFX_HYPER_BEAM
-	anim_obj $27, 64, 92, $0
+	anim_sound 0, 0, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,   8, 0,  11, 4, $0
 	anim_wait 4
-	anim_sound $0, SFX_HYPER_BEAM
-	anim_obj $27, 80, 84, $0
+	anim_sound 0, 0, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  10, 0,  10, 4, $0
 	anim_wait 4
-	anim_sound $1, SFX_HYPER_BEAM
-	anim_obj $27, 96, 76, $0
+	anim_sound 0, 1, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  12, 0,   9, 4, $0
 	anim_wait 4
-	anim_sound $1, SFX_HYPER_BEAM
-	anim_obj $27, 112, 68, $0
-	anim_obj $28, 126, 62, $0
+	anim_sound 0, 1, SFX_HYPER_BEAM
+	anim_obj ANIM_OBJ_27,  14, 0,   8, 4, $0
+	anim_obj ANIM_OBJ_28,  15, 6,   7, 6, $0
 	anim_ret
 ; cbb62
 
 BattleAnim_Explosion_branch_cbb62: ; cbb62
 BattleAnim_Selfdestruct_branch_cbb62: ; cbb62
-	anim_sound $0, SFX_EGG_BOMB
-	anim_obj $17, 24, 64, $0
+	anim_sound 0, 0, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,   3, 0,   8, 0, $0
 	anim_wait 5
-	anim_sound $0, SFX_EGG_BOMB
-	anim_obj $17, 56, 104, $0
+	anim_sound 0, 0, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,   7, 0,  13, 0, $0
 	anim_wait 5
-	anim_sound $0, SFX_EGG_BOMB
-	anim_obj $17, 24, 104, $0
+	anim_sound 0, 0, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,   3, 0,  13, 0, $0
 	anim_wait 5
-	anim_sound $0, SFX_EGG_BOMB
-	anim_obj $17, 56, 64, $0
+	anim_sound 0, 0, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,   7, 0,   8, 0, $0
 	anim_wait 5
-	anim_sound $0, SFX_EGG_BOMB
-	anim_obj $17, 40, 84, $0
+	anim_sound 0, 0, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,   5, 0,  10, 4, $0
 	anim_ret
 ; cbb8f
 
@@ -4996,20 +4982,20 @@
 BattleAnim_Explosion_branch_cbb8f: ; cbb8f
 BattleAnim_Present_branch_cbb8f: ; cbb8f
 BattleAnim_Selfdestruct_branch_cbb8f: ; cbb8f
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $17, 148, 32, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17, -14, 4,   4, 0, $0
 	anim_wait 5
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $17, 116, 72, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,  14, 4,   9, 0, $0
 	anim_wait 5
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $17, 148, 72, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17, -14, 4,   9, 0, $0
 	anim_wait 5
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $17, 116, 32, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17,  14, 4,   4, 0, $0
 	anim_wait 5
-	anim_sound $1, SFX_EGG_BOMB
-	anim_obj $17, 132, 52, $0
+	anim_sound 0, 1, SFX_EGG_BOMB
+	anim_obj ANIM_OBJ_17, -16, 4,   6, 4, $0
 	anim_ret
 ; cbbbc
 
@@ -5016,21 +5002,20 @@
 BattleAnim_Growl_branch_cbbbc: ; cbbbc
 BattleAnim_Roar_branch_cbbbc: ; cbbbc
 BattleAnim_Snore_branch_cbbbc: ; cbbbc
-	anim_obj $4b, 64, 76, $0
-	anim_obj $4b, 64, 88, $1
-	anim_obj $4b, 64, 100, $2
+	anim_obj ANIM_OBJ_4B,   8, 0,   9, 4, $0
+	anim_obj ANIM_OBJ_4B,   8, 0,  11, 0, $1
+	anim_obj ANIM_OBJ_4B,   8, 0,  12, 4, $2
 	anim_ret
 ; cbbcc
 
 BattleAnim_FirePunch_branch_cbbcc: ; cbbcc
 BattleAnim_TriAttack_branch_cbbcc: ; cbbcc
-	anim_sound $1, SFX_EMBER
-BattleAnim_FirePunch_branch_cbbcf: ; cbbcf
-BattleAnim_TriAttack_branch_cbbcf: ; cbbcf
-	anim_obj $10, 136, 56, $10
-	anim_obj $10, 136, 56, $90
+	anim_sound 0, 1, SFX_EMBER
+.loop
+	anim_obj ANIM_OBJ_BURNED, -15, 0,   7, 0, $10
+	anim_obj ANIM_OBJ_BURNED, -15, 0,   7, 0, $90
 	anim_wait 4
-	anim_loop $4, BattleAnim_FirePunch_branch_cbbcf
+	anim_loop 4, .loop
 	anim_ret
 ; cbbdf
 
@@ -5037,23 +5022,23 @@
 BattleAnim_IcePunch_branch_cbbdf: ; cbbdf
 BattleAnim_PowderSnow_branch_cbbdf: ; cbbdf
 BattleAnim_TriAttack_branch_cbbdf: ; cbbdf
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 128, 42, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12,  16, 0,   5, 2, $0
 	anim_wait 6
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 144, 70, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12, -14, 0,   8, 6, $0
 	anim_wait 6
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 120, 56, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12,  15, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 152, 56, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12, -13, 0,   7, 0, $0
 	anim_wait 6
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 144, 42, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12, -14, 0,   5, 2, $0
 	anim_wait 6
-	anim_sound $1, SFX_SHINE
-	anim_obj $12, 128, 70, $0
+	anim_sound 0, 1, SFX_SHINE
+	anim_obj ANIM_OBJ_12,  16, 0,   8, 6, $0
 	anim_ret
 ; cbc15
 
@@ -5060,25 +5045,27 @@
 BattleAnim_SludgeBomb_branch_cbc15: ; cbc15
 BattleAnim_Sludge_branch_cbc15: ; cbc15
 BattleAnim_Toxic_branch_cbc15: ; cbc15
-	anim_sound $1, SFX_UNKNOWN_7F
-	anim_obj $1a, 132, 72, $0
+.loop
+	anim_sound 0, 1, SFX_UNKNOWN_7F
+	anim_obj ANIM_OBJ_1A, -16, 4,   9, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_UNKNOWN_7F
-	anim_obj $1a, 116, 72, $0
+	anim_sound 0, 1, SFX_UNKNOWN_7F
+	anim_obj ANIM_OBJ_1A,  14, 4,   9, 0, $0
 	anim_wait 8
-	anim_sound $1, SFX_UNKNOWN_7F
-	anim_obj $1a, 148, 72, $0
+	anim_sound 0, 1, SFX_UNKNOWN_7F
+	anim_obj ANIM_OBJ_1A, -14, 4,   9, 0, $0
 	anim_wait 8
-	anim_loop $5, BattleAnim_SludgeBomb_branch_cbc15
+	anim_loop 5, .loop
 	anim_ret
 ; cbc35
 
 BattleAnim_Acid_branch_cbc35: ; cbc35
 BattleAnim_Toxic_branch_cbc35: ; cbc35
-	anim_sound $1a, SFX_BUBBLEBEAM
-	anim_obj $19, 64, 92, $10
+.loop
+	anim_sound 6, 2, SFX_BUBBLEBEAM
+	anim_obj ANIM_OBJ_19,   8, 0,  11, 4, $10
 	anim_wait 5
-	anim_loop $8, BattleAnim_Acid_branch_cbc35
+	anim_loop 8, .loop
 	anim_ret
 ; cbc43
 
@@ -5086,23 +5073,24 @@
 BattleAnim_IronTail_branch_cbc43: ; cbc43
 BattleAnim_MetalClaw_branch_cbc43: ; cbc43
 BattleAnim_SteelWing_branch_cbc43: ; cbc43
-	anim_sound $0, SFX_SHINE
-	anim_bgeffect $17, $0, $1, $40
+	anim_sound 0, 0, SFX_SHINE
+	anim_bgeffect ANIM_BG_17, $0, $1, $40
 	anim_wait 8
-	anim_obj $51, 48, 84, $0
+	anim_obj ANIM_OBJ_51,   6, 0,  10, 4, $0
 	anim_wait 32
-	anim_obj $51, 48, 84, $0
+	anim_obj ANIM_OBJ_51,   6, 0,  10, 4, $0
 	anim_wait 64
-	anim_incbgeffect $17
+	anim_incbgeffect ANIM_BG_17
 	anim_ret
 ; cbc5b
 
 BattleAnim_MudSlap_branch_cbc5b: ; cbc5b
 BattleAnim_SandAttack_branch_cbc5b: ; cbc5b
-	anim_sound $1a, SFX_MENU
-	anim_obj $58, 64, 92, $4
+.loop
+	anim_sound 6, 2, SFX_MENU
+	anim_obj ANIM_OBJ_58,   8, 0,  11, 4, $4
 	anim_wait 4
-	anim_loop $8, BattleAnim_MudSlap_branch_cbc5b
+	anim_loop 8, .loop
 	anim_wait 32
 	anim_ret
 ; cbc6a
@@ -5110,12 +5098,12 @@
 BattleAnim_Moonlight_branch_cbc6a: ; cbc6a
 BattleAnim_MorningSun_branch_cbc6a: ; cbc6a
 BattleAnim_Synthesis_branch_cbc6a: ; cbc6a
-	anim_sound $0, SFX_METRONOME
-	anim_obj $9d, 44, 64, $0
+	anim_sound 0, 0, SFX_METRONOME
+	anim_obj ANIM_OBJ_9D,   5, 4,   8, 0, $0
 	anim_wait 5
-	anim_obj $9d, 24, 96, $0
+	anim_obj ANIM_OBJ_9D,   3, 0,  12, 0, $0
 	anim_wait 5
-	anim_obj $9d, 56, 104, $0
+	anim_obj ANIM_OBJ_9D,   7, 0,  13, 0, $0
 	anim_wait 21
 	anim_ret
 ; cbc80
@@ -5123,66 +5111,24 @@
 BattleAnim_Moonlight_branch_cbc80: ; cbc80
 BattleAnim_MorningSun_branch_cbc80: ; cbc80
 BattleAnim_Synthesis_branch_cbc80: ; cbc80
-	anim_sound $0, SFX_METRONOME
-BattleAnim_Moonlight_branch_cbc83: ; cbc83
-BattleAnim_MorningSun_branch_cbc83: ; cbc83
-BattleAnim_Synthesis_branch_cbc83: ; cbc83
-	anim_obj $9d, 24, 64, $0
+	anim_sound 0, 0, SFX_METRONOME
+.loop
+	anim_obj ANIM_OBJ_9D,   3, 0,   8, 0, $0
 	anim_wait 5
-	anim_obj $9d, 56, 104, $0
+	anim_obj ANIM_OBJ_9D,   7, 0,  13, 0, $0
 	anim_wait 5
-	anim_obj $9d, 24, 104, $0
+	anim_obj ANIM_OBJ_9D,   3, 0,  13, 0, $0
 	anim_wait 5
-	anim_obj $9d, 56, 64, $0
+	anim_obj ANIM_OBJ_9D,   7, 0,   8, 0, $0
 	anim_wait 5
-	anim_obj $9d, 40, 84, $0
+	anim_obj ANIM_OBJ_9D,   5, 0,  10, 4, $0
 	anim_wait 5
-	anim_loop $2, BattleAnim_Moonlight_branch_cbc83
+	anim_loop 2, .loop
 	anim_wait 16
 	anim_ret
 ; cbca7
 
-BattleAnim_Agility_branch_cbca7: ; cbca7
-BattleAnim_BeatUp_branch_cbca7: ; cbca7
-BattleAnim_Bide_branch_cbca7: ; cbca7
-BattleAnim_Charm_branch_cbca7: ; cbca7
-BattleAnim_Curse_branch_cbca7: ; cbca7
-BattleAnim_DefenseCurl_branch_cbca7: ; cbca7
-BattleAnim_DoubleEdge_branch_cbca7: ; cbca7
-BattleAnim_Endure_branch_cbca7: ; cbca7
-BattleAnim_FaintAttack_branch_cbca7: ; cbca7
-BattleAnim_Flail_branch_cbca7: ; cbca7
-BattleAnim_FlameWheel_branch_cbca7: ; cbca7
-BattleAnim_FocusEnergy_branch_cbca7: ; cbca7
-BattleAnim_Frustration_branch_cbca7: ; cbca7
-BattleAnim_GigaDrain_branch_cbca7: ; cbca7
-BattleAnim_Harden_branch_cbca7: ; cbca7
-BattleAnim_Headbutt_branch_cbca7: ; cbca7
-BattleAnim_HiddenPower_branch_cbca7: ; cbca7
-BattleAnim_IronTail_branch_cbca7: ; cbca7
-BattleAnim_Meditate_branch_cbca7: ; cbca7
-BattleAnim_MegaDrain_branch_cbca7: ; cbca7
-BattleAnim_MetalClaw_branch_cbca7: ; cbca7
-BattleAnim_MilkDrink_branch_cbca7: ; cbca7
-BattleAnim_Outrage_branch_cbca7: ; cbca7
-BattleAnim_PsychUp_branch_cbca7: ; cbca7
-BattleAnim_Rage_branch_cbca7: ; cbca7
-BattleAnim_RazorWind_branch_cbca7: ; cbca7
-BattleAnim_Recover_branch_cbca7: ; cbca7
-BattleAnim_SacredFire_branch_cbca7: ; cbca7
-BattleAnim_SendOutMon_branch_cbca7: ; cbca7
-BattleAnim_Sharpen_branch_cbca7: ; cbca7
-BattleAnim_Sketch_branch_cbca7: ; cbca7
-BattleAnim_SkullBash_branch_cbca7: ; cbca7
-BattleAnim_SkyAttack_branch_cbca7: ; cbca7
-BattleAnim_Softboiled_branch_cbca7: ; cbca7
-BattleAnim_Spark_branch_cbca7: ; cbca7
-BattleAnim_SteelWing_branch_cbca7: ; cbca7
-BattleAnim_Synthesis_branch_cbca7: ; cbca7
-BattleAnim_TakeDown_branch_cbca7: ; cbca7
-BattleAnim_Teleport_branch_cbca7: ; cbca7
-BattleAnim_Thief_branch_cbca7: ; cbca7
-BattleAnim_VitalThrow_branch_cbca7: ; cbca7
+BattleAnim_FollowEnemyFeet_0: ; cbca7
 	anim_enemyfeetobj
 	anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $0, $0
 	anim_wait 6
@@ -5189,21 +5135,7 @@
 	anim_ret
 ; cbcaf
 
-BattleAnim_AcidArmor_branch_cbcaf: ; cbcaf
-BattleAnim_BodySlam_branch_cbcaf: ; cbcaf
-BattleAnim_Dig_branch_cbcaf: ; cbcaf
-BattleAnim_DoubleTeam_branch_cbcaf: ; cbcaf
-BattleAnim_Minimize_branch_cbcaf: ; cbcaf
-BattleAnim_PainSplit_branch_cbcaf: ; cbcaf
-BattleAnim_RapidSpin_branch_cbcaf: ; cbcaf
-BattleAnim_Return_branch_cbcaf: ; cbcaf
-BattleAnim_Rollout_branch_cbcaf: ; cbcaf
-BattleAnim_Splash_branch_cbcaf: ; cbcaf
-BattleAnim_Tackle_branch_cbcaf: ; cbcaf
-BattleAnim_TailWhip_branch_cbcaf: ; cbcaf
-BattleAnim_Transform_branch_cbcaf: ; cbcaf
-BattleAnim_Waterfall_branch_cbcaf: ; cbcaf
-BattleAnim_Withdraw_branch_cbcaf: ; cbcaf
+BattleAnim_FollowPlayerHead_0: ; cbcaf
 	anim_playerheadobj
 	anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $0, $0
 	anim_wait 6
@@ -5210,71 +5142,16 @@
 	anim_ret
 ; cbcb7
 
-BattleAnim_AcidArmor_branch_cbcb7: ; cbcb7
-BattleAnim_Agility_branch_cbcb7: ; cbcb7
-BattleAnim_BeatUp_branch_cbcb7: ; cbcb7
-BattleAnim_Bide_branch_cbcb7: ; cbcb7
-BattleAnim_BodySlam_branch_cbcb7: ; cbcb7
-BattleAnim_Charm_branch_cbcb7: ; cbcb7
-BattleAnim_Curse_branch_cbcb7: ; cbcb7
-BattleAnim_DefenseCurl_branch_cbcb7: ; cbcb7
-BattleAnim_Dig_branch_cbcb7: ; cbcb7
-BattleAnim_DoubleEdge_branch_cbcb7: ; cbcb7
-BattleAnim_DoubleTeam_branch_cbcb7: ; cbcb7
-BattleAnim_Endure_branch_cbcb7: ; cbcb7
-BattleAnim_FaintAttack_branch_cbcb7: ; cbcb7
-BattleAnim_Flail_branch_cbcb7: ; cbcb7
-BattleAnim_FocusEnergy_branch_cbcb7: ; cbcb7
-BattleAnim_Frustration_branch_cbcb7: ; cbcb7
-BattleAnim_GigaDrain_branch_cbcb7: ; cbcb7
-BattleAnim_Harden_branch_cbcb7: ; cbcb7
-BattleAnim_Headbutt_branch_cbcb7: ; cbcb7
-BattleAnim_HiddenPower_branch_cbcb7: ; cbcb7
-BattleAnim_IronTail_branch_cbcb7: ; cbcb7
-BattleAnim_Meditate_branch_cbcb7: ; cbcb7
-BattleAnim_MegaDrain_branch_cbcb7: ; cbcb7
-BattleAnim_MetalClaw_branch_cbcb7: ; cbcb7
-BattleAnim_MilkDrink_branch_cbcb7: ; cbcb7
-BattleAnim_Minimize_branch_cbcb7: ; cbcb7
-BattleAnim_Outrage_branch_cbcb7: ; cbcb7
-BattleAnim_PainSplit_branch_cbcb7: ; cbcb7
-BattleAnim_PsychUp_branch_cbcb7: ; cbcb7
-BattleAnim_Rage_branch_cbcb7: ; cbcb7
-BattleAnim_RazorWind_branch_cbcb7: ; cbcb7
-BattleAnim_Recover_branch_cbcb7: ; cbcb7
-BattleAnim_Return_branch_cbcb7: ; cbcb7
-BattleAnim_Rollout_branch_cbcb7: ; cbcb7
-BattleAnim_SendOutMon_branch_cbcb7: ; cbcb7
-BattleAnim_Sharpen_branch_cbcb7: ; cbcb7
-BattleAnim_Sketch_branch_cbcb7: ; cbcb7
-BattleAnim_SkullBash_branch_cbcb7: ; cbcb7
-BattleAnim_SkyAttack_branch_cbcb7: ; cbcb7
-BattleAnim_Softboiled_branch_cbcb7: ; cbcb7
-BattleAnim_Splash_branch_cbcb7: ; cbcb7
-BattleAnim_SteelWing_branch_cbcb7: ; cbcb7
-BattleAnim_Synthesis_branch_cbcb7: ; cbcb7
-BattleAnim_Tackle_branch_cbcb7: ; cbcb7
-BattleAnim_TailWhip_branch_cbcb7: ; cbcb7
-BattleAnim_TakeDown_branch_cbcb7: ; cbcb7
-BattleAnim_Teleport_branch_cbcb7: ; cbcb7
-BattleAnim_Thief_branch_cbcb7: ; cbcb7
-BattleAnim_Transform_branch_cbcb7: ; cbcb7
-BattleAnim_VitalThrow_branch_cbcb7: ; cbcb7
-BattleAnim_Waterfall_branch_cbcb7: ; cbcb7
-BattleAnim_Withdraw_branch_cbcb7: ; cbcb7
+BattleAnim_ShowMon_0: ; cbcb7
 	anim_wait 1
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 5
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 1
 	anim_ret
 ; cbcc2
 
-BattleAnim_EnemyStatDown_branch_cbcc2: ; cbcc2
-BattleAnim_Foresight_branch_cbcc2: ; cbcc2
-BattleAnim_PlayerStatDown_branch_cbcc2: ; cbcc2
-BattleAnim_Pursuit_branch_cbcc2: ; cbcc2
-BattleAnim_Submission_branch_cbcc2: ; cbcc2
+BattleAnim_FollowEnemyFeet_1: ; cbcc2
 	anim_enemyfeetobj
 	anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $1, $0
 	anim_wait 6
@@ -5281,11 +5158,7 @@
 	anim_ret
 ; cbcca
 
-BattleAnim_Bubblebeam_branch_cbcca: ; cbcca
-BattleAnim_Confusion_branch_cbcca: ; cbcca
-BattleAnim_HydroPump_branch_cbcca: ; cbcca
-BattleAnim_NightShade_branch_cbcca: ; cbcca
-BattleAnim_WaterGun_branch_cbcca: ; cbcca
+BattleAnim_FollowPlayerHead_1: ; cbcca
 	anim_playerheadobj
 	anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $1, $0
 	anim_wait 4
@@ -5292,20 +5165,11 @@
 	anim_ret
 ; cbcd2
 
-BattleAnim_Bubblebeam_branch_cbcd2: ; cbcd2
-BattleAnim_Confusion_branch_cbcd2: ; cbcd2
-BattleAnim_EnemyStatDown_branch_cbcd2: ; cbcd2
-BattleAnim_Foresight_branch_cbcd2: ; cbcd2
-BattleAnim_HydroPump_branch_cbcd2: ; cbcd2
-BattleAnim_NightShade_branch_cbcd2: ; cbcd2
-BattleAnim_PlayerStatDown_branch_cbcd2: ; cbcd2
-BattleAnim_Pursuit_branch_cbcd2: ; cbcd2
-BattleAnim_Submission_branch_cbcd2: ; cbcd2
-BattleAnim_WaterGun_branch_cbcd2: ; cbcd2
+BattleAnim_ShowMon_1: ; cbcd2
 	anim_wait 1
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
 	anim_wait 4
-	anim_incobj $1
+	anim_incobj  1
 	anim_wait 1
 	anim_ret
 ; cbcdd
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -1,69 +1,77 @@
+	const_def
+	const BGSQUARE_SIX
+	const BGSQUARE_FOUR
+	const BGSQUARE_TWO
+	const BGSQUARE_SEVEN
+	const BGSQUARE_FIVE
+	const BGSQUARE_THREE
+
 ; BG effects for use in battle animations.
 
-Functionc8000: ; c8000 (32:4000)
+ExecuteBGEffects: ; c8000 (32:4000)
 	ld hl, ActiveBGEffects
-	ld e, $5
-.asm_c8005
+	ld e, 5
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_c8012
+	jr z, .next
 	ld c, l
 	ld b, h
 	push hl
 	push de
-	call Functionc804a
+	call DoBattleBGEffectFunction
 	pop de
 	pop hl
-.asm_c8012
-	ld bc, $4
+.next
+	ld bc, 4
 	add hl, bc
 	dec e
-	jr nz, .asm_c8005
+	jr nz, .loop
 	ret
 
-Functionc801a: ; c801a (32:401a)
+QueueBGEffect: ; c801a (32:401a)
 	ld hl, ActiveBGEffects
-	ld e, $5
-.asm_c801f
+	ld e, 5
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_c802c
-	ld bc, $4
+	jr z, .load
+	ld bc, 4
 	add hl, bc
 	dec e
-	jr nz, .asm_c801f
+	jr nz, .loop
 	scf
 	ret
-.asm_c802c
+
+.load
 	ld c, l
 	ld b, h
-	ld hl, $0
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
 	add hl, bc
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	ld [hli], a
-	ld a, [BattleAnimTemps + 1]
+	ld a, [wBattleAnimTemp1]
 	ld [hli], a
-	ld a, [BattleAnimTemps + 2]
+	ld a, [wBattleAnimTemp2]
 	ld [hli], a
-	ld a, [BattleAnimTemps + 3]
+	ld a, [wBattleAnimTemp3]
 	ld [hl], a
 	ret
 
 EndBattleBGEffect: ; c8043 (32:4043)
-	ld hl, 0
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
 	add hl, bc
 	ld [hl], 0
 	ret
 
-Functionc804a: ; c804a (32:404a)
-	ld hl, 0
+DoBattleBGEffectFunction: ; c804a (32:404a)
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
 	ld hl, BattleBGEffects
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -70,71 +78,71 @@
 	jp [hl]
 
 BattleBGEffects: ; c805a (32:405a)
-	dw BattleBGEffect_0
-	dw Functionc80eb
-	dw Functionc80f3
-	dw Functionc812d
-	dw Functionc8141
-	dw Functionc8155
-	dw Functionc8171
-	dw Functionc818b
-	dw Functionc81a5
-	dw Functionc81b3
-	dw Functionc81ea
-	dw Functionc837b
-	dw Functionc83a8
-	dw Functionc8545
-	dw Functionc8599
-	dw Functionc863f
-	dw Functionc8662
-	dw Functionc8214
-	dw Functionc8281
-	dw Functionc8689
-	dw Functionc8709
-	dw Functionc8be8
-	dw Functionc8bf2
-	dw Functionc8bfd
-	dw Functionc8c08
-	dw Functionc8c14
-	dw Functionc8c20
-	dw Functionc8c30
-	dw Functionc8b00
-	dw Functionc8c3c
-	dw Functionc8c55
-	dw Functionc8cf9
-	dw Functionc8d02
-	dw Functionc8761
-	dw Functionc89ee
-	dw Functionc87a7
-	dw Functionc8805
-	dw Functionc8837
-	dw Functionc892a
-	dw Functionc82f5
-	dw Functionc89b5
-	dw Functionc8607
-	dw Functionc8a3a
-	dw Functionc8acc
-	dw Functionc8964
-	dw Functionc88e7
-	dw Functionc8ce1
-	dw Functionc8919
-	dw Functionc85c2
-	dw Functionc85ce
-	dw Functionc8603
-	dw Functionc8c61
-	dw Functionc8ca2
-	dw Functionc8d3a
+	dw BattleBGEffect_End
+	dw BattleBGEffect_FlashInverted
+	dw BattleBGEffect_FlashWhite
+	dw BattleBGEffect_WhiteHues
+	dw BattleBGEffect_BlackHues
+	dw BattleBGEffect_AlternateHues
+	dw BattleBGEffect_06
+	dw BattleBGEffect_07
+	dw BattleBGEffect_08
+	dw BattleBGEffect_HideMon
+	dw BattleBGEffect_ShowMon
+	dw BattleBGEffect_EnterMon
+	dw BattleBGEffect_ReturnMon
+	dw BattleBGEffect_Surf
+	dw BattleBGEffect_Whirlpool
+	dw BattleBGEffect_Teleport
+	dw BattleBGEffect_NightShade
+	dw BattleBGEffect_FeetFollow
+	dw BattleBGEffect_HeadFollow
+	dw BattleBGEffect_DoubleTeam
+	dw BattleBGEffect_AcidArmor
+	dw BattleBGEffect_RapidFlash
+	dw BattleBGEffect_16
+	dw BattleBGEffect_17
+	dw BattleBGEffect_18
+	dw BattleBGEffect_19
+	dw BattleBGEffect_1a
+	dw BattleBGEffect_1b
+	dw BattleBGEffect_1c
+	dw BattleBGEffect_1d
+	dw BattleBGEffect_1e
+	dw BattleBGEffect_1f
+	dw BattleBGEffect_20
+	dw BattleBGEffect_21
+	dw BattleBGEffect_BounceDown
+	dw BattleBGEffect_Dig
+	dw BattleBGEffect_Tackle
+	dw BattleBGEffect_25
+	dw BattleBGEffect_26
+	dw BattleBGEffect_27
+	dw BattleBGEffect_28
+	dw BattleBGEffect_Psychic
+	dw BattleBGEffect_2a
+	dw BattleBGEffect_2b
+	dw BattleBGEffect_2c
+	dw BattleBGEffect_2d
+	dw BattleBGEffect_2e
+	dw BattleBGEffect_2f
+	dw BattleBGEffect_30
+	dw BattleBGEffect_31
+	dw BattleBGEffect_32
+	dw BattleBGEffect_VibrateMon
+	dw BattleBGEffect_WobbleMon
+	dw BattleBGEffect_35
 
 
-BattleBGEffect_0: ; c80c6 (32:40c6)
+BattleBGEffect_End: ; c80c6 (32:40c6)
 	call EndBattleBGEffect
 	ret
 
-Functionc80ca: ; c80ca (32:40ca)
-	ld hl, $1
+BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld l, [hl]
-	ld h, $0
+	ld h, 0
 	add hl, hl
 	add hl, de
 	ld a, [hli]
@@ -142,12 +150,12 @@
 	ld l, a
 	ret
 
-Functionc80d7: ; c80d7 (32:40d7)
+BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7)
 	pop de
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld l, [hl]
-	ld h, $0
+	ld h, 0
 	add hl, hl
 	add hl, de
 	ld a, [hli]
@@ -155,16 +163,15 @@
 	ld l, a
 	jp [hl]
 
-Functionc80e5: ; c80e5 (32:40e5)
-	ld hl, $1
+BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	inc [hl]
 	ret
 
-Functionc80eb: ; c80eb (32:40eb)
+BattleBGEffect_FlashInverted: ; c80eb (32:40eb)
 	ld de, .inverted
-	jp Functionc80fb
-; c80f1 (32:40f1)
+	jp BattleBGEffect_FlashContinue
 
 .inverted
 	db %11100100 ; 3210
@@ -171,10 +178,9 @@
 	db %00011011 ; 0123
 ; c80f3
 
-Functionc80f3: ; c80f3 (32:40f3)
+BattleBGEffect_FlashWhite: ; c80f3 (32:40f3)
 	ld de, .white
-	jp Functionc80fb
-; c80f9 (32:40f9)
+	jp BattleBGEffect_FlashContinue
 
 .white
 	db %11100100 ; 3210
@@ -181,33 +187,34 @@
 	db %00000000 ; 0000
 ; c80fb
 
-Functionc80fb: ; c80fb (32:40fb)
+BattleBGEffect_FlashContinue: ; c80fb (32:40fb)
+; current timer, flash duration, number of flashes
 	ld a, $1
-	ld [BattleAnimTemps], a
-	ld hl, $1
+	ld [wBattleAnimTemp0], a
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c810a
+	jr z, .init
 	dec [hl]
 	ret
 
-.asm_c810a
-	ld hl, $2
+.init
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld [hl], a
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr nz, .asm_c8120
+	jr nz, .apply_pal
 	call EndBattleBGEffect
 	ret
 
-.asm_c8120
+.apply_pal
 	dec a
 	ld [hl], a
 	and 1
@@ -215,131 +222,153 @@
 	ld h, 0
 	add hl, de
 	ld a, [hl]
-	ld [wcfc7], a
+	ld [wBGP], a
 	ret
 
-Functionc812d: ; c812d (32:412d)
-	ld de, Unknown_c813d
-	call Functionc8d57
-	jr c, .asm_c8139
-	ld [wcfc7], a
+BattleBGEffect_WhiteHues: ; c812d (32:412d)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
 	ret
-.asm_c8139
+
+.quit
 	call EndBattleBGEffect
 	ret
-; c813d (32:413d)
 
-Unknown_c813d:
-	db $e4, $e0, $d0, $ff
+.Pals
+	db %11100100
+	db %11100000
+	db %11010000
+	db -1
 ; c8141
 
-Functionc8141: ; c8141 (32:4141)
-	ld de, Unknown_c8151
-	call Functionc8d57
-	jr c, .asm_c814d
-	ld [wcfc7], a
+BattleBGEffect_BlackHues: ; c8141 (32:4141)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
 	ret
-.asm_c814d
+
+.quit
 	call EndBattleBGEffect
 	ret
-; c8151 (32:4151)
 
-Unknown_c8151:
-	db $e4, $f4, $f8, $ff
+.Pals
+	db %11100100
+	db %11110100
+	db %11111000
+	db -1
 ; c8155
 
-Functionc8155: ; c8155 (32:4155)
-	ld de, Unknown_c8168
-	call Functionc8d57
-	jr c, .asm_c8164
-	ld [wcfc7], a
-	ld [wcfc9], a
+BattleBGEffect_AlternateHues: ; c8155 (32:4155)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
+	ld [wOBP1], a
 	ret
-.asm_c8164
+
+.quit
 	call EndBattleBGEffect
 	ret
-; c8168 (32:4168)
 
-Unknown_c8168:
-	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
+.Pals
+	db %11100100
+	db %11111000
+	db %11111100
+	db %11111000
+	db %11100100
+	db %10010000
+	db %01000000
+	db %10010000
+	db -2
 ; c8171
 
-Functionc8171: ; c8171 (32:4171)
-	call Functionc9059
-	jr nz, .asm_c817b
-	ld de, Unknown_c8185
-	jr .asm_c817e
-.asm_c817b
-	ld de, Unknown_c8188
-.asm_c817e
-	call Functionc8d57
-	ld [wcfc8], a
+BattleBGEffect_06: ; c8171 (32:4171)
+	call BattleBGEffects_CheckSGB
+	jr nz, .sgb
+	ld de, .PalsCGB
+	jr .okay
+
+.sgb
+	ld de, .PalsSGB
+.okay
+	call BattleBGEffect_GetNthDMGPal
+	ld [wOBP0], a
 	ret
-; c8185 (32:4185)
 
-Unknown_c8185:
-	db $e4, $90, $fe
-; c8188
+.PalsCGB
+	db %11100100
+	db %10010000
+	db -2
 
-Unknown_c8188:
-	db $f0, $c0, $fe
+.PalsSGB
+	db %11110000
+	db %11000000
+	db -2
 ; c818b
 
-Functionc818b: ; c818b (32:418b)
-	call Functionc9059
-	jr nz, .asm_c8195
-	ld de, Unknown_c819f
-	jr .asm_c8198
-.asm_c8195
-	ld de, Unknown_c81a2
-.asm_c8198
-	call Functionc8d57
-	ld [wcfc8], a
+BattleBGEffect_07: ; c818b (32:418b)
+	call BattleBGEffects_CheckSGB
+	jr nz, .sgb
+	ld de, .PalsCGB
+	jr .okay
+
+.sgb
+	ld de, .PalsSGB
+.okay
+	call BattleBGEffect_GetNthDMGPal
+	ld [wOBP0], a
 	ret
-; c819f (32:419f)
 
-Unknown_c819f:
-	db $e4, $d8, $fe
-; c81a2
+.PalsCGB
+	db %11100100
+	db %11011000
+	db -2
 
-Unknown_c81a2:
-	db $f0, $cc, $fe
+.PalsSGB
+	db %11110000
+	db %11001100
+	db -2
 ; c81a5
 
-Functionc81a5: ; c81a5 (32:41a5)
-	ld de, Unknown_c81af
-	call Functionc8d57
-	ld [wcfc7], a
+BattleBGEffect_08: ; c81a5 (32:41a5)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	ld [wBGP], a
 	ret
-; c81af (32:41af)
 
-Unknown_c81af:
-	db $1b, $63, $87, $fe
+.Pals
+	db %00011011
+	db %01100011
+	db %10000111
+	db -2
 ; c81b3
 
-Functionc81b3: ; c81b3 (32:41b3)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_HideMon: ; c81b3 (32:41b3)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .four
 
-Jumptable_c81b6: ; c81b6 (32:41b6)
-	dw Functionc81c0
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc81e3
 
-
-Functionc81c0: ; c81c0 (32:41c0)
-	call Functionc80e5
+.zero
+	call BattleBGEffects_IncrementJumptable
 	push bc
-	call Functionc9038
-	jr nz, .asm_c81d1
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
 	hlcoord 12, 0
-	ld bc, $707
-	jr .asm_c81d7
-.asm_c81d1
+	lb bc, 7, 7
+	jr .got_pointer
+
+.player_side
 	hlcoord 2, 6
 	lb bc, 6, 6
-.asm_c81d7
+.got_pointer
 	call ClearBox
 	pop bc
 	xor a
@@ -348,97 +377,98 @@
 	ld [hBGMapMode], a
 	ret
 
-Functionc81e3: ; c81e3 (32:41e3)
+.four
 	xor a
 	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
-Functionc81ea: ; c81ea (32:41ea)
-	call Functionc9042
-	jr z, .asm_c81f3
+BattleBGEffect_ShowMon: ; c81ea (32:41ea)
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying
 	call EndBattleBGEffect
 	ret
-.asm_c81f3
-	call Functionc9038
-	jr nz, .asm_c81fd
-	ld de, Unknown_c8210
-	jr .asm_c8200
-.asm_c81fd
-	ld de, Unknown_c820c
-.asm_c8200
+
+.not_flying
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	ld de, .EnemyData
+	jr .got_pointer
+
+.player_side
+	ld de, .PlayerData
+.got_pointer
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
-	call Functionc83ed
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
 	ret
-; c820c (32:420c)
 
-Unknown_c820c:
-	db $00, $31, $00
-	db $ff
-; c8210
-
-Unknown_c8210:
-	db $03, $00, $03
-	db $ff
+.PlayerData
+	db  0, $31, 0
+	db -1
+.EnemyData
+	db  3, $00, 3
+	db -1
 ; c8214
 
-Functionc8214: ; c8214 (32:4214)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_FeetFollow: ; c8214 (32:4214)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .five
 
-Jumptable_c8217: ; c8217 (32:4217)
-	dw Functionc8223
-	dw Functionc825a
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc827a
 
-
-Functionc8223: ; c8223 (32:4223)
-	call Functionc9042
-	jr z, .asm_c8230
-	ld hl, w5_d40e
+.zero
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying_digging
+	ld hl, wNumActiveBattleAnims
 	inc [hl]
 	call EndBattleBGEffect
 	ret
-.asm_c8230
-	call Functionc80e5
+
+.not_flying_digging
+	call BattleBGEffects_IncrementJumptable
 	push bc
-	call Functionc9038
-	jr nz, .asm_c8242
-	ld a, $b8
-	ld [BattleAnimTemps], a
-	ld a, $84
-	jr .asm_c8249
-.asm_c8242
-	ld a, $b9
-	ld [BattleAnimTemps], a
-	ld a, $30
-.asm_c8249
-	ld [BattleAnimTemps + 1], a
-	ld a, $40
-	ld [BattleAnimTemps + 2], a
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld a, ANIM_OBJ_PLAYERFEETFOLLOW
+	ld [wBattleAnimTemp0], a
+	ld a, 16 * 8 + 4
+	jr .okay
+
+.player_turn
+	ld a, ANIM_OBJ_ENEMYFEETFOLLOW
+	ld [wBattleAnimTemp0], a
+	ld a, 6 * 8
+.okay
+	ld [wBattleAnimTemp1], a
+	ld a, 8 * 8
+	ld [wBattleAnimTemp2], a
 	xor a
-	ld [BattleAnimTemps + 3], a
-	call Functionc82ee
+	ld [wBattleAnimTemp3], a
+	call _QueueBattleAnimation
 	pop bc
 	ret
 
-Functionc825a: ; c825a (32:425a)
-	call Functionc80e5
+.one
+	call BattleBGEffects_IncrementJumptable
 	push bc
-	call Functionc9038
-	jr nz, .asm_c826b
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn_2
 	hlcoord 12, 6
-	ld bc, $107
-	jr .asm_c8271
-.asm_c826b
+	lb bc, 1, 7
+	jr .okay2
+
+.player_turn_2
 	hlcoord 2, 6
 	lb bc, 1, 6
-.asm_c8271
+.okay2
 	call ClearBox
 	ld a, $1
 	ld [hBGMapMode], a
@@ -445,66 +475,68 @@
 	pop bc
 	ret
 
-Functionc827a: ; c827a (32:427a)
+.five
 	xor a
 	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
-Functionc8281: ; c8281 (32:4281)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_HeadFollow: ; c8281 (32:4281)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .five
 
-Jumptable_c8284: ; c8284 (32:4284)
-	dw Functionc8290
-	dw Functionc82c7
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc82e7
 
-
-Functionc8290: ; c8290 (32:4290)
-	call Functionc9042
-	jr z, .asm_c829d
-	ld hl, w5_d40e
+.zero
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying_digging
+	ld hl, wNumActiveBattleAnims
 	inc [hl]
 	call EndBattleBGEffect
 	ret
-.asm_c829d
-	call Functionc80e5
+
+.not_flying_digging
+	call BattleBGEffects_IncrementJumptable
 	push bc
-	call Functionc9038
-	jr nz, .asm_c82af
-	ld a, $ba
-	ld [BattleAnimTemps], a
-	ld a, $84
-	jr .asm_c82b6
-.asm_c82af
-	ld a, $bb
-	ld [BattleAnimTemps], a
-	ld a, $30
-.asm_c82b6
-	ld [BattleAnimTemps + 1], a
-	ld a, $40
-	ld [BattleAnimTemps + 2], a
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld a, ANIM_OBJ_BA
+	ld [wBattleAnimTemp0], a
+	ld a, 16 * 8 + 4
+	jr .okay
+
+.player_turn
+	ld a, ANIM_OBJ_BB
+	ld [wBattleAnimTemp0], a
+	ld a, 6 * 8
+.okay
+	ld [wBattleAnimTemp1], a
+	ld a, 8 * 8
+	ld [wBattleAnimTemp2], a
 	xor a
-	ld [BattleAnimTemps + 3], a
-	call Functionc82ee
+	ld [wBattleAnimTemp3], a
+	call _QueueBattleAnimation
 	pop bc
 	ret
 
-Functionc82c7: ; c82c7 (32:42c7)
-	call Functionc80e5
+.one
+	call BattleBGEffects_IncrementJumptable
 	push bc
-	call Functionc9038
-	jr nz, .asm_c82d8
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn_2
 	hlcoord 12, 5
-	ld bc, $207
-	jr .asm_c82de
-.asm_c82d8
+	lb bc, 2, 7
+	jr .okay2
+
+.player_turn_2
 	hlcoord 2, 6
 	lb bc, 2, 6
-.asm_c82de
+.okay2
 	call ClearBox
 	ld a, $1
 	ld [hBGMapMode], a
@@ -511,239 +543,238 @@
 	pop bc
 	ret
 
-Functionc82e7: ; c82e7 (32:42e7)
+.five
 	xor a
 	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
-Functionc82ee: ; c82ee (32:42ee)
-	callab Functioncc9a1
+_QueueBattleAnimation: ; c82ee (32:42ee)
+	callab QueueBattleAnimation
 	ret
 
-Functionc82f5: ; c82f5 (32:42f5)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_27: ; c82f5 (32:42f5)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .four
 
-Jumptable_c82f8: ; c82f8 (32:42f8)
-	dw Functionc8302
-	dw Functionc831d
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc8365
 
-
-Functionc8302: ; c8302 (32:4302)
-	call Functionc80e5
-	call Functionc9038
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BGEffect_CheckBattleTurn
 	ld [hl], a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c8315
+	jr z, .user
 	ld a, $9
-	jr .asm_c8317
-.asm_c8315
+	jr .okay
+
+.user
 	ld a, $8
-.asm_c8317
-	ld hl, $3
+.okay
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], a
 	ret
 
-Functionc831d: ; c831d (32:431d)
-	ld hl, $2
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c833e
+	jr z, .user_2
 	hlcoord 0, 6
-	ld de, $806
-.asm_c832b
+	lb de, 8, 6
+.row1
 	push de
 	push hl
-.asm_c832d
+.col1
 	inc hl
 	ld a, [hld]
 	ld [hli], a
 	dec d
-	jr nz, .asm_c832d
+	jr nz, .col1
 	pop hl
-	ld de, $14
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop de
 	dec e
-	jr nz, .asm_c832b
-	jr .asm_c8355
-.asm_c833e
+	jr nz, .row1
+	jr .okay2
+
+.user_2
 	hlcoord 19, 0
-	ld de, $807
-.asm_c8344
+	lb de, 8, 7
+.row2
 	push de
 	push hl
-.asm_c8346
+.col2
 	dec hl
 	ld a, [hli]
 	ld [hld], a
 	dec d
-	jr nz, .asm_c8346
+	jr nz, .col2
 	pop hl
-	ld de, $14
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop de
 	dec e
-	jr nz, .asm_c8344
-.asm_c8355
+	jr nz, .row2
+.okay2
 	xor a
 	ld [hBGMapThird], a
 	ld a, $1
 	ld [hBGMapMode], a
-	call Functionc80e5
-	ld hl, $3
+	call BattleBGEffects_IncrementJumptable
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	dec [hl]
 	ret
 
-Functionc8365: ; c8365 (32:4365)
+.four
 	xor a
 	ld [hBGMapMode], a
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c8377
-	ld hl, $1
+	jr z, .done
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld [hl], $1
 	ret
-.asm_c8377
+
+.done
 	call EndBattleBGEffect
 	ret
 
-Functionc837b: ; c837b (32:437b)
-	call Functionc9038
-	jr nz, .asm_c8385
-	ld de, Unknown_c839e
-	jr .asm_c8388
-.asm_c8385
-	ld de, Unknown_c8394
-.asm_c8388
+BattleBGEffect_EnterMon: ; c837b (32:437b)
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld de, .EnemyData
+	jr .okay
+
+.player_turn
+	ld de, .PlayerData
+.okay
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
-	call Functionc83ed
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
 	ret
-; c8394 (32:4394)
 
-Unknown_c8394:
-	db $02, $31, $02
-	db $01, $31, $01
-	db $00, $31, $00
-	db $ff
-; c839e
-
-Unknown_c839e:
-	db $05, $00, $05
-	db $04, $00, $04
-	db $03, $00, $03
-	db $ff
+.PlayerData
+	db  2, $31, 2
+	db  1, $31, 1
+	db  0, $31, 0
+	db -1
+.EnemyData
+	db  5, $00, 5
+	db  4, $00, 4
+	db  3, $00, 3
+	db -1
 ; c83a8
 
-Functionc83a8: ; c83a8 (32:43a8)
-	call Functionc9038
-	jr nz, .asm_c83b2
-	ld de, Unknown_c83d7
-	jr .asm_c83b5
-.asm_c83b2
-	ld de, Unknown_c83c1
-.asm_c83b5
+BattleBGEffect_ReturnMon: ; c83a8 (32:43a8)
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld de, .EnemyData
+	jr .okay
+
+.player_turn
+	ld de, .PlayerData
+.okay
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
-	call Functionc83ed
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
 	ret
-; c83c1 (32:43c1)
 
-Unknown_c83c1:
-	db $00, $31, $00
-	db $fe, $66, $00
-	db $01, $31, $01
-	db $fe, $44, $01
-	db $02, $31, $02
-	db $fe, $22, $02
-	db $fd, $00, $00
-	db $ff
-; c83d7
-
-Unknown_c83d7:
-	db $03, $00, $03
-	db $fe, $77, $03
-	db $04, $00, $04
-	db $fe, $55, $04
-	db $05, $00, $05
-	db $fe, $33, $05
-	db $fd, $00, $00
-	db $ff
+.PlayerData
+	db  0, $31, 0
+	db -2, $66, 0
+	db  1, $31, 1
+	db -2, $44, 1
+	db  2, $31, 2
+	db -2, $22, 2
+	db -3, $00, 0
+	db -1
+.EnemyData
+	db  3, $00, 3
+	db -2, $77, 3
+	db  4, $00, 4
+	db -2, $55, 4
+	db  5, $00, 5
+	db -2, $33, 5
+	db -3, $00, 0
+	db -1
 ; c83ed
 
-Functionc83ed: ; c83ed (32:43ed)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .restart
+	dw .end
 
-Jumptable_c83f0: ; c83f0 (32:43f0)
-	dw Functionc83fa
-	dw Functionc80e5
-	dw Functionc80e5
-	dw Functionc842a
-	dw Functionc8434
 
-
-Functionc83fa: ; c83fa (32:43fa)
-	ld hl, $3
+.zero
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld e, [hl]
 	ld d, $0
 	inc [hl]
-	ld a, [BattleAnimTemps + 1]
+	ld a, [wBattleAnimTemp1]
 	ld l, a
-	ld a, [BattleAnimTemps + 2]
+	ld a, [wBattleAnimTemp2]
 	ld h, a
 rept 3
 	add hl, de
 endr
 	ld a, [hl]
-	cp $ff
-	jr z, Functionc8434
-	cp $fe
-	jr z, .asm_c8425
-	cp $fd
-	jr z, .asm_c841d
-	call Functionc8458
-.asm_c841d
-	call Functionc80e5
+	cp -1
+	jr z, .end
+	cp -2
+	jr z, .clear
+	cp -3
+	jr z, .skip
+	call .FillBox
+.skip
+	call BattleBGEffects_IncrementJumptable
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
-.asm_c8425
-	call Functionc843b
-	jr Functionc83fa
 
-Functionc842a: ; c842a (32:442a)
+.clear
+	call .ClearBox
+	jr .zero
+
+.restart
 	xor a
 	ld [hBGMapMode], a
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc8434: ; c8434 (32:4434)
+.end
 	xor a
 	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
-Functionc843b: ; c843b (32:443b)
+.ClearBox
+; get dims
 	push bc
 	inc hl
 	ld a, [hli]
@@ -754,12 +785,12 @@
 	swap a
 	and $f
 	ld b, a
+; get coords
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_c849c
-rept 2
+	ld hl, .Coords
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -767,12 +798,13 @@
 	pop bc
 	ret
 
-Functionc8458: ; c8458 (32:4458)
+.FillBox
+; get dims
 	push bc
 	push hl
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_c84a8
+	ld hl, .BGSquares
 rept 3
 	add hl, de
 endr
@@ -784,47 +816,49 @@
 	swap a
 	and $f
 	ld b, a
+; store pointer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
+; get byte
 	pop hl
 	inc hl
 	ld a, [hli]
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
+; get coord
 	push de
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_c849c
-rept 2
+	ld hl, .Coords
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	pop de
-.asm_c8484
+; fill box
+.row
 	push bc
 	push hl
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	ld b, a
-.asm_c848a
+.col
 	ld a, [de]
 	add b
 	ld [hli], a
 	inc de
 	dec c
-	jr nz, .asm_c848a
+	jr nz, .col
 	pop hl
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_c8484
+	jr nz, .row
 	pop bc
 	ret
-; c849c (32:449c)
 
-Unknown_c849c: ; c849c
+.Coords
 	dwcoord  2,  6
 	dwcoord  3,  8
 	dwcoord  4, 10
@@ -831,18 +865,21 @@
 	dwcoord 12,  0
 	dwcoord 13,  2
 	dwcoord 14,  4
-; c84a8
 
-Unknown_c84a8: ; c84a8
-	dbw $66, Unknown_c84ba
-	dbw $44, Unknown_c84de
-	dbw $22, Unknown_c84ee
-	dbw $77, Unknown_c84f2
-	dbw $55, Unknown_c8523
-	dbw $33, Unknown_c853c
-; c84ba
+.BGSquares
+bgsquare: MACRO
+	dn \1,\2
+	dw \3
+endm
 
-Unknown_c84ba: ; c84ba
+	bgsquare 6, 6, .SixBySix
+	bgsquare 4, 4, .FourByFour
+	bgsquare 2, 2, .TwoByTwo
+	bgsquare 7, 7, .SevenBySeven
+	bgsquare 5, 5, .FiveByFive
+	bgsquare 3, 3, .ThreeByThree
+
+.SixBySix
 	db $00, $06, $0c, $12, $18, $1e
 	db $01, $07, $0d, $13, $19, $1f
 	db $02, $08, $0e, $14, $1a, $20
@@ -849,21 +886,18 @@
 	db $03, $09, $0f, $15, $1b, $21
 	db $04, $0a, $10, $16, $1c, $22
 	db $05, $0b, $11, $17, $1d, $23
-; c84de
 
-Unknown_c84de: ; c84de
+.FourByFour
 	db $00, $0c, $12, $1e
 	db $02, $0e, $14, $20
 	db $03, $0f, $15, $21
 	db $05, $11, $17, $23
-; c84ee
 
-Unknown_c84ee: ; c84ee
+.TwoByTwo
 	db $00, $1e
 	db $05, $23
-; c84f2
 
-Unknown_c84f2: ; c84f2
+.SevenBySeven
 	db $00, $07, $0e, $15, $1c, $23, $2a
 	db $01, $08, $0f, $16, $1d, $24, $2b
 	db $02, $09, $10, $17, $1e, $25, $2c
@@ -871,78 +905,76 @@
 	db $04, $0b, $12, $19, $20, $27, $2e
 	db $05, $0c, $13, $1a, $21, $28, $2f
 	db $06, $0d, $14, $1b, $22, $29, $30
-; c8523
 
-Unknown_c8523: ; c8523
+.FiveByFive
 	db $00, $07, $15, $23, $2a
 	db $01, $08, $16, $24, $2b
 	db $03, $0a, $18, $26, $2d
 	db $05, $0c, $1a, $28, $2f
 	db $06, $0d, $1b, $29, $30
-; c853c
 
-Unknown_c853c: ; c853c
+.ThreeByThree
 	db $00, $15, $2a
 	db $03, $18, $2d
 	db $06, $1b, $30
 ; c8545
 
-Functionc8545: ; c8545 (32:4545)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Surf: ; c8545 (32:4545)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8548: ; c8548 (32:4548)
-	dw Functionc854e
-	dw Functionc8557
-	dw Functionc8561
 
+.zero
+	call BattleBGEffects_IncrementJumptable
+	lb de, 2, 2
+	call InitSurfWaves
 
-Functionc854e: ; c854e (32:454e)
-	call Functionc80e5
-	ld de, $202
-	call Functionc8f69
-
-Functionc8557: ; c8557 (32:4557)
-	ld a, [hLCDStatCustom]
+.one
+	ld a, [hFFC6]
 	and a
 	ret z
 	push bc
-	call Functionc8565
+	call .RotatewSurfWaveBGEffect
 	pop bc
 	ret
 
-Functionc8561: ; c8561 (32:4561)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8565: ; c8565 (32:4565)
-	ld hl, w5_d422
-	ld de, w5_d422 + 1
-	ld c, $3f
+.RotatewSurfWaveBGEffect
+	ld hl, wSurfWaveBGEffect
+	ld de, wSurfWaveBGEffect + 1
+	ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1
 	ld a, [hl]
 	push af
-.asm_c856f
+.loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_c856f
+	jr nz, .loop
 	pop af
 	ld [hl], a
 	ld de, LYOverridesBackup
-	ld hl, w5_d422
+	ld hl, wSurfWaveBGEffect
 	ld bc, $0
-.asm_c8580
-	ld a, [hLCDStatCustom + 1]
+.loop2
+	ld a, [hFFC7]
 	cp e
-	jr nc, .asm_c858b
+	jr nc, .load_zero
 	push hl
 	add hl, bc
 	ld a, [hl]
 	pop hl
-	jr .asm_c858c
-.asm_c858b
+	jr .okay
+
+.load_zero
 	xor a
-.asm_c858c
+.okay
 	ld [de], a
 	ld a, c
 	inc a
@@ -951,54 +983,53 @@
 	inc de
 	ld a, e
 	cp $5f
-	jr c, .asm_c8580
+	jr c, .loop2
 	ret
 
-Functionc8599: ; c8599 (32:4599)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Whirlpool: ; c8599 (32:4599)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c859c: ; c859c (32:459c)
-	dw Functionc85a2
-	dw Functionc85ba
-	dw Functionc85be
 
-
-Functionc85a2: ; c85a2 (32:45a2)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	xor a
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, $5e
-	ld [hLCDStatCustom + 2], a
-	ld de, $202
+	ld [hFFC8], a
+	lb de, 2, 2
 	call Functionc8f2e
 	ret
 
-Functionc85ba: ; c85ba (32:45ba)
-	call Functionc8fef
+.one
+	call BattleBGEffect_WavyScreenFX
 	ret
 
-Functionc85be: ; c85be (32:45be)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc85c2: ; c85c2 (32:45c2)
-	call Functionc8eca
+BattleBGEffect_30: ; c85c2 (32:45c2)
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ede
+	call BattleBGEffect_SetLCDStatCustoms1
 	call EndBattleBGEffect
 	ret
 
-Functionc85ce: ; c85ce (32:45ce)
-	ld hl, $3
+BattleBGEffect_31: ; c85ce (32:45ce)
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld e, a
 	add $4
 	ld [hl], a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and $f0
@@ -1006,239 +1037,235 @@
 	xor $ff
 	add $4
 	ld d, a
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld a, [hl]
-	ld [BattleAnimTemps], a
-	ld hl, $2
+	ld [wBattleAnimTemp0], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	cp $20
-	jr nc, .asm_c85fc
-rept 2
+	jr nc, .done
 	inc [hl]
-endr
+	inc [hl]
 	call Functionc8f9a
 	ret
-.asm_c85fc
-	call Functionc8eca
+
+.done
+	call BattleBGEffects_ClearLYOverrides
 	call EndBattleBGEffect
 	ret
 
-Functionc8603: ; c8603 (32:4603)
-	call Functionc8f0a
+BattleBGEffect_32: ; c8603 (32:4603)
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8607: ; c8607 (32:4607)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Psychic: ; c8607 (32:4607)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c860a: ; c860a (32:460a)
-	dw Functionc8610
-	dw Functionc862e
-	dw Functionc863b
 
-
-Functionc8610: ; c8610 (32:4610)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	xor a
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, $5f
-	ld [hLCDStatCustom + 2], a
-	ld de, $605
+	ld [hFFC8], a
+	lb de, 6, 5
 	call Functionc8f2e
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc862e: ; c862e (32:462e)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
 	and $3
 	ret nz
-	call Functionc8fef
+	call BattleBGEffect_WavyScreenFX
 	ret
 
-Functionc863b: ; c863b (32:463b)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc863f: ; c863f (32:463f)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Teleport: ; c863f (32:463f)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8642: ; c8642 (32:4642)
-	dw Functionc8648
-	dw Functionc865a
-	dw Functionc865e
 
-
-Functionc8648: ; c8648 (32:4648)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld de, $605
+	call BattleBGEffect_SetLCDStatCustoms1
+	lb de, 6, 5
 	call Functionc8f2e
 	ret
 
-Functionc865a: ; c865a (32:465a)
-	call Functionc8fef
+.one
+	call BattleBGEffect_WavyScreenFX
 	ret
 
-Functionc865e: ; c865e (32:465e)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8662: ; c8662 (32:4662)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_NightShade: ; c8662 (32:4662)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8665: ; c8665 (32:4665)
-	dw Functionc866b
-	dw Functionc8681
-	dw Functionc8685
 
-
-Functionc866b: ; c866b (32:466b)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ede
-	ld hl, $3
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld e, [hl]
-	ld d, $2
+	ld d, 2
 	call Functionc8f2e
 	ret
 
-Functionc8681: ; c8681 (32:4681)
-	call Functionc8fef
+.one
+	call BattleBGEffect_WavyScreenFX
 	ret
 
-Functionc8685: ; c8685 (32:4685)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8689: ; c8689 (32:4689)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_DoubleTeam: ; c8689 (32:4689)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
 
-Jumptable_c868c: ; c868c (32:468c)
-	dw Functionc8698
-	dw Functionc86af
-	dw Functionc86cf
-	dw Functionc86bd
-	dw Functionc86e9
-	dw Functionc8705
 
-
-Functionc8698: ; c8698 (32:4698)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $2
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc86af: ; c86af (32:46af)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	cp $10
-	jr nc, asm_c86cb
+	jr nc, .next
 	inc [hl]
-	call Functionc86ea
+	call .UpdateLYOverrides
 	ret
 
-Functionc86bd: ; c86bd (32:46bd)
-	ld hl, $3
+.three
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	cp $ff
-	jr z, asm_c86cb
+	jr z, .next
 	dec [hl]
-	call Functionc86ea
+	call .UpdateLYOverrides
 	ret
-asm_c86cb: ; c86cb (32:46cb)
-	call Functionc80e5
+
+.next
+	call BattleBGEffects_IncrementJumptable
 	ret
 
-Functionc86cf: ; c86cf (32:46cf)
-	ld hl, $2
+.two
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	ld d, $2
-	call Functionc905d
-	ld hl, $3
+	call BattleBGEffects_Sine
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	add [hl]
-	call Functionc86ea
-	ld hl, $2
+	call .UpdateLYOverrides
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	add $4
 	ld [hl], a
 
-Functionc86e9: ; c86e9 (32:46e9)
+.four
 	ret
 
-Functionc86ea: ; c86ea (32:46ea)
+.UpdateLYOverrides
 	ld e, a
 	xor $ff
 	inc a
 	ld d, a
-	ld h, $d2
-	ld a, [hLCDStatCustom + 1]
+	ld h, LYOverridesBackup / $100
+	ld a, [hFFC7]
 	ld l, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	srl a
 	push af
-.asm_c86fa
+.loop
 	ld [hl], e
 	inc hl
 	ld [hl], d
 	inc hl
 	dec a
-	jr nz, .asm_c86fa
+	jr nz, .loop
 	pop af
 	ret nc
 	ld [hl], e
 	ret
 
-Functionc8705: ; c8705 (32:4705)
-	call Functionc8f0a
+.five
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8709: ; c8709 (32:4709)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_AcidArmor: ; c8709 (32:4709)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c870c: ; c870c (32:470c)
-	dw Functionc8712
-	dw Functionc8732
-	dw Functionc875d
 
-
-Functionc8712: ; c8712 (32:4712)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ede
-	ld hl, $3
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld e, [hl]
-	ld d, $2
+	ld d, 2
 	call Functionc8f2e
 	ld h, $d2
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	ld l, a
 	ld [hl], $0
 	dec l
@@ -1245,30 +1272,30 @@
 	ld [hl], $0
 	ret
 
-Functionc8732: ; c8732 (32:4732)
-	ld a, [hLCDStatCustom + 2]
+.one
+	ld a, [hFFC8]
 	ld l, a
 	ld h, $d2
 	ld e, l
 	ld d, h
 	dec de
-.asm_c873a
+.loop
 	ld a, [de]
 	dec de
 	ld [hld], a
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	cp l
-	jr nz, .asm_c873a
+	jr nz, .loop
 	ld [hl], $90
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	ld l, a
 	ld a, [hl]
 	cp $1
-	jr c, .asm_c8752
+	jr c, .okay
 	cp $90
-	jr z, .asm_c8752
+	jr z, .okay
 	ld [hl], $0
-.asm_c8752
+.okay
 	dec l
 	ld a, [hl]
 	cp $2
@@ -1278,105 +1305,103 @@
 	ld [hl], $0
 	ret
 
-Functionc875d: ; c875d (32:475d)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8761: ; c8761 (32:4761)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_21: ; c8761 (32:4761)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8764: ; c8764 (32:4764)
-	dw Functionc876a
-	dw Functionc8781
-	dw Functionc87a3
 
-
-Functionc876a: ; c876a (32:476a)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $2
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $1
 	ret
 
-Functionc8781: ; c8781 (32:4781)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and $3f
 	ld d, a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	cp d
 	ret nc
 	call Functionc901b
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	rlca
 	rlca
 	and $3
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	add [hl]
 	ld [hl], a
 	ret
 
-Functionc87a3: ; c87a3 (32:47a3)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc87a7: ; c87a7 (32:47a7)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Dig: ; c87a7 (32:47a7)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
 
-Jumptable_c87aa: ; c87aa (32:47aa)
-	dw Functionc87b2
-	dw Functionc87cf
-	dw Functionc87de
-	dw Functionc8801
 
-
-Functionc87b2: ; c87b2 (32:47b2)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $2
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $2
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc87cf: ; c87cf (32:47cf)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c87d9
+	jr z, .next
 	dec [hl]
 	ret
-.asm_c87d9
-	ld [hl], $10
-	call Functionc80e5
 
-Functionc87de: ; c87de (32:47de)
-	ld a, [hLCDStatCustom + 1]
+.next
+	ld [hl], $10
+	call BattleBGEffects_IncrementJumptable
+.two
+	ld a, [hFFC7]
 	ld l, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	dec a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	cp [hl]
 	ret c
@@ -1383,130 +1408,129 @@
 	ld a, [hl]
 	push af
 	and $7
-	jr nz, .asm_c87f6
-	ld hl, $1
+	jr nz, .skip
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	dec [hl]
-.asm_c87f6
+.skip
 	pop af
 	call Functionc901b
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
-rept 2
 	inc [hl]
-endr
+	inc [hl]
 	ret
 
-Functionc8801: ; c8801 (32:4801)
-	call Functionc8f0a
+.three
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8805: ; c8805 (32:4805)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_Tackle: ; c8805 (32:4805)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw Tackle_BGEffect25_2d_one
+	dw Tackle_BGEffect25_2d_two
+	dw .three
 
-Jumptable_c8808: ; c8808 (32:4808)
-	dw Functionc8810
-	dw Functionc8869
-	dw Functionc8888
-	dw Functionc8833
 
-
-Functionc8810: ; c8810 (32:4810)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-	call Functionc9038
-	jr nz, .asm_c882f
-	ld a, $2
-	jr .asm_c8831
-.asm_c882f
-	ld a, $fe
-.asm_c8831
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	ld a, 2
+	jr .okay
+
+.player_side
+	ld a, -2
+.okay
 	ld [hl], a
 	ret
 
-Functionc8833: ; c8833 (32:4833)
-	call Functionc8f0a
+.three
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8837: ; c8837 (32:4837)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_25: ; c8837 (32:4837)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw Tackle_BGEffect25_2d_one
+	dw Tackle_BGEffect25_2d_two
+	dw .three
 
-Jumptable_c883a: ; c883a (32:483a)
-	dw Functionc8842
-	dw Functionc8869
-	dw Functionc8888
-	dw Functionc8865
 
-
-Functionc8842: ; c8842 (32:4842)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ef4
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms2
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-	call Functionc9038
-	jr nz, .asm_c8861
-	ld a, $2
-	jr .asm_c8863
-.asm_c8861
-	ld a, $fe
-.asm_c8863
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	ld a,  2
+	jr .okay
+
+.player_side
+	ld a, -2
+.okay
 	ld [hl], a
 	ret
 
-Functionc8865: ; c8865 (32:4865)
-	call Functionc8f0a
+.three
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8869: ; c8869 (32:4869)
-	ld hl, $3
+Tackle_BGEffect25_2d_one:
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
-	cp $f8
-	jr z, .asm_c8876
-	cp $8
-	jr nz, .asm_c8879
-.asm_c8876
-	call Functionc80e5
-.asm_c8879
+	cp -8
+	jr z, .reached_limit
+	cp  8
+	jr nz, .finish
+.reached_limit
+	call BattleBGEffects_IncrementJumptable
+.finish
 	call Functionc88a5
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	add [hl]
 	ld [hl], a
 	ret
 
-Functionc8888: ; c8888 (32:4888)
-	ld hl, $3
+Tackle_BGEffect25_2d_two:
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
 	jr nz, .asm_c8893
-	call Functionc80e5
+	call BattleBGEffects_IncrementJumptable
 .asm_c8893
 	call Functionc88a5
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	xor $ff
 	inc a
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	add [hl]
 	ld [hl], a
@@ -1516,134 +1540,132 @@
 	push af
 	ld a, [FXAnimIDHi] ; FXAnimIDHi
 	or a
-	jr nz, .asm_c88b3
+	jr nz, .not_rollout
 	ld a, [FXAnimIDLo] ; FXAnimID
 	cp ROLLOUT
-	jr z, .asm_c88b7
-.asm_c88b3
+	jr z, .rollout
+.not_rollout
 	pop af
 	jp Functionc900b
-.asm_c88b7
-	ld a, [hLCDStatCustom + 1]
+
+.rollout
+	ld a, [hFFC7]
 	ld d, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub d
 	ld d, a
 	ld h, LYOverridesBackup / $100
 	ld a, [hSCY]
 	or a
-	jr nz, .asm_c88d0
-	ld a, [hLCDStatCustom + 1]
+	jr nz, .skip1
+	ld a, [hFFC7]
 	or a
-	jr z, .asm_c88d6
+	jr z, .skip2
 	dec a
 	ld l, a
 	ld [hl], $0
-	jr .asm_c88d6
-.asm_c88d0
-	ld a, [hLCDStatCustom + 2]
+	jr .skip2
+
+.skip1
+	ld a, [hFFC8]
 	dec a
 	ld l, a
 	ld [hl], $0
-.asm_c88d6
+.skip2
 	ld a, [hSCY]
 	ld l, a
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	sub l
-	jr nc, .asm_c88e0
+	jr nc, .skip3
 	xor a
 	dec d
-.asm_c88e0
+.skip3
 	ld l, a
 	pop af
-.asm_c88e2
+.loop
 	ld [hli], a
 	dec d
-	jr nz, .asm_c88e2
+	jr nz, .loop
 	ret
 
-Functionc88e7: ; c88e7 (32:48e7)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_2d: ; c88e7 (32:48e7)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw BGEffect2d_2f_zero
+	dw Tackle_BGEffect25_2d_one
+	dw Tackle_BGEffect25_2d_two
+	dw .three
 
-Jumptable_c88ea: ; c88ea (32:48ea)
-	dw Functionc88f6
-	dw Functionc8869
-	dw Functionc8888
-	dw Functionc88f2
 
-
-Functionc88f2: ; c88f2 (32:48f2)
-	call Functionc8f0a
+.three
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc88f6: ; c88f6 (32:48f6)
-	call Functionc80e5
-	call Functionc8eca
+BGEffect2d_2f_zero:
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-	call Functionc9038
-	jr nz, .asm_c8915
-	ld a, $fe
-	jr .asm_c8917
-.asm_c8915
-	ld a, $2
-.asm_c8917
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld a, -2
+	jr .okay
+
+.player_turn
+	ld a, 2
+.okay
 	ld [hl], a
 	ret
 
-Functionc8919: ; c8919 (32:4919)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_2f: ; c8919 (32:4919)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw BGEffect2d_2f_zero
+	dw Tackle_BGEffect25_2d_one
+	dw .two
+	dw Tackle_BGEffect25_2d_two
+	dw .four
 
-Jumptable_c891c: ; c891c (32:491c)
-	dw Functionc88f6
-	dw Functionc8869
-	dw Functionc8929
-	dw Functionc8888
-	dw Functionc8926
-
-
-Functionc8926: ; c8926 (32:4926)
-	call Functionc8f0a
-
-Functionc8929: ; c8929 (32:4929)
+.four
+	call BattleAnim_ResetLCDStatCustom
+.two
 	ret
 
-Functionc892a: ; c892a (32:492a)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_26: ; c892a (32:492a)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c892d: ; c892d (32:492d)
-	dw Functionc8933
-	dw Functionc894a
-	dw Functionc8960
 
-
-Functionc8933: ; c8933 (32:4933)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc894a: ; c894a (32:494a)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld d, $8
-	call Functionc905d
+	call BattleBGEffects_Sine
 	call Functionc900b
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	add $4
@@ -1650,56 +1672,55 @@
 	ld [hl], a
 	ret
 
-Functionc8960: ; c8960 (32:4960)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8964: ; c8964 (32:4964)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_2c: ; c8964 (32:4964)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8967: ; c8967 (32:4967)
-	dw Functionc896d
-	dw Functionc8985
-	dw Functionc89b1
 
-
-Functionc896d: ; c896d (32:496d)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC8], a
 	xor a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hli], a
 	ld [hl], a
 	ret
 
-Functionc8985: ; c8985 (32:4985)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld d, $6
-	call Functionc905d
+	call BattleBGEffects_Sine
 	push af
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	ld d, $2
-	call Functionc905d
+	call BattleBGEffects_Sine
 	ld e, a
 	pop af
 	add e
 	call Functionc900b
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	add $8
 	ld [hl], a
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	add $2
@@ -1706,28 +1727,27 @@
 	ld [hl], a
 	ret
 
-Functionc89b1: ; c89b1 (32:49b1)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc89b5: ; c89b5 (32:49b5)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_28: ; c89b5 (32:49b5)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c89b8: ; c89b8 (32:49b8)
-	dw Functionc89be
-	dw Functionc89ca
-	dw Functionc89da
 
-
-Functionc89be: ; c89be (32:49be)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
+	call BattleBGEffect_SetLCDStatCustoms1
 	ret
 
-Functionc89ca: ; c89ca (32:49ca)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	cp $20
@@ -1734,168 +1754,167 @@
 	ret nc
 	inc [hl]
 	ld d, a
-	ld e, $4
+	ld e, 4
 	call Functionc8f2e
 	ret
 
-Functionc89da: ; c89da (32:49da)
-	ld hl, $3
+.two
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c89ea
+	jr z, .reset
 	dec [hl]
 	ld d, a
-	ld e, $4
+	ld e, 4
 	call Functionc8f2e
 	ret
-.asm_c89ea
-	call Functionc8f0a
+
+.reset
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc89ee: ; c89ee (32:49ee)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_BounceDown: ; c89ee (32:49ee)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c89f1: ; c89f1 (32:49f1)
-	dw Functionc89f7
-	dw Functionc8a14
-	dw Functionc8a36
 
-
-Functionc89f7: ; c89f7 (32:49f7)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $42
-	call Functionc8ef4
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms2
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $2
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $1
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $20
 	ret
 
-Functionc8a14: ; c8a14 (32:4a14)
-	ld hl, $2
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	cp $38
 	ret nc
 	push af
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld d, $10
-	call Functionc9066
+	call BattleBGEffects_Cosine
 	add $10
 	ld d, a
 	pop af
 	add d
 	call Functionc901b
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
-rept 2
 	inc [hl]
-endr
+	inc [hl]
 	ret
 
-Functionc8a36: ; c8a36 (32:4a36)
-	call Functionc8f0a
+.two
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8a3a: ; c8a3a (32:4a3a)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_2a: ; c8a3a (32:4a3a)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
 
-Jumptable_c8a3d: ; c8a3d (32:4a3d)
-	dw Functionc8a49
-	dw Functionc8a6f
-	dw Functionc8a70
-	dw Functionc8a88
-	dw Functionc8a6f
-	dw Functionc8aac
-
-
-Functionc8a49: ; c8a49 (32:4a49)
-	call Functionc80e5
+.zero
+	call BattleBGEffects_IncrementJumptable
 	ld a, $e4
-	call Functionc8ecb
+	call BattleBGEffects_SetLYOverrides
 	ld a, $47
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld a, [hLCDStatCustom + 1]
+	ld [hFFC8], a
+	ld a, [hFFC7]
 	ld l, a
 	ld h, $d2
-.asm_c8a60
-	ld a, [hLCDStatCustom + 2]
+.loop
+	ld a, [hFFC8]
 	cp l
-	jr z, .asm_c8a69
+	jr z, .done
 	xor a
 	ld [hli], a
-	jr .asm_c8a60
-.asm_c8a69
-	ld hl, $3
+	jr .loop
+
+.done
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-
-Functionc8a6f: ; c8a6f (32:4a6f)
+.one
+.four
 	ret
 
-Functionc8a70: ; c8a70 (32:4a70)
-	call Functionc8ab0
-	jr nc, .asm_c8a79
-	call Functionc8a9a
+.two
+	call .GetLYOverride
+	jr nc, .next
+	call .SetLYOverridesBackup
 	ret
-.asm_c8a79
-	ld hl, $3
+
+.next
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	inc a
-	ld [hLCDStatCustom + 1], a
-	call Functionc80e5
+	ld [hFFC7], a
+	call BattleBGEffects_IncrementJumptable
 	ret
 
-Functionc8a88: ; c8a88 (32:4a88)
-	call Functionc8ab0
-	jr nc, .asm_c8a96
-	call Functionc8a9a
-	ld a, [hLCDStatCustom + 2]
+.three
+	call .GetLYOverride
+	jr nc, .finish
+	call .SetLYOverridesBackup
+	ld a, [hFFC8]
 	dec a
 	ld l, a
 	ld [hl], e
 	ret
-.asm_c8a96
-	call Functionc80e5
+
+.finish
+	call BattleBGEffects_IncrementJumptable
 	ret
 
-Functionc8a9a: ; c8a9a (32:4a9a)
+.SetLYOverridesBackup
 	ld e, a
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	ld l, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	srl a
-	ld h, $d2
-.asm_c8aa5
+	ld h, LYOverridesBackup / $100
+.loop2
 	ld [hl], e
-rept 2
 	inc hl
-endr
+	inc hl
 	dec a
-	jr nz, .asm_c8aa5
+	jr nz, .loop2
 	ret
 
-Functionc8aac: ; c8aac (32:4aac)
-	call Functionc8f19
+.five
+	call BattleBGEffects_ResetVideoHRAM
 	ret
 
-Functionc8ab0: ; c8ab0 (32:4ab0)
-	ld hl, $3
+.GetLYOverride
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
@@ -1904,41 +1923,40 @@
 	srl a
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_c8ac7
+	ld hl, .data
 	add hl, de
 	ld a, [hl]
 	cp $ff
 	ret
-; c8ac7 (32:4ac7)
 
-Unknown_c8ac7:
-	db $00, $40, $90, $e4, $ff
+.data
+	db $00, $40, $90, $e4
+	db -1
 ; c8acc
 
-Functionc8acc: ; c8acc (32:4acc)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_2b: ; c8acc (32:4acc)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
 
-Jumptable_c8acf: ; c8acf (32:4acf)
-	dw Functionc8ad3
-	dw Functionc8ae5
 
-
-Functionc8ad3: ; c8ad3 (32:4ad3)
-	call Functionc80e5
-	call Functionc8eca
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld hl, $2
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $40
 	ret
 
-Functionc8ae5: ; c8ae5 (32:4ae5)
-	ld hl, $2
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c8afc
+	jr z, .done
 	dec [hl]
 	srl a
 	srl a
@@ -1948,36 +1966,36 @@
 	ld e, a
 	call Functionc8f2e
 	ret
-.asm_c8afc
-	call Functionc8f0a
+
+.done
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8b00: ; c8b00 (32:4b00)
+BattleBGEffect_1c: ; c8b00 (32:4b00)
 	ld a, [hCGB]
 	and a
-	jr nz, asm_c8b7a
-	call Functionc80d7 ;  ;  ; call does not return
+	jr nz, .cgb
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8b08: ; c8b08 (32:4b08)
-	dw Functionc8b0e
-	dw Functionc8b22
-	dw Functionc8b60
 
-
-Functionc8b0e: ; c8b0e (32:4b0e)
-	call Functionc80e5
+.zero
+	call BattleBGEffects_IncrementJumptable
 	ld a, $e4
-	call Functionc8ecb
+	call BattleBGEffects_SetLYOverrides
 	ld a, $47
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	xor a
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, $60
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC8], a
 	ret
 
-Functionc8b22: ; c8b22 (32:4b22)
-	ld hl, $3
+.one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
@@ -1992,72 +2010,70 @@
 	ld e, a
 	ld d, $0
 	push bc
-	call Functionc9038
-	jr nz, .asm_c8b4d
-	ld hl, Unknown_c8bd8
+	call BGEffect_CheckBattleTurn
+	jr nz, .player
+	ld hl, .CGB_DMGEnemyData
 	add hl, de
 	ld a, [hli]
-	ld [wcfc9], a
+	ld [wOBP1], a
 	ld d, a
 	ld e, [hl]
-	ld bc, $2f30
-	jr .asm_c8b5b
-.asm_c8b4d
-	ld hl, Unknown_c8be0
+	lb bc, $2f, $30
+	jr .okay
+
+.player
+	ld hl, .DMG_PlayerData
 	add hl, de
 	ld d, [hl]
 	inc hl
 	ld a, [hl]
-	ld [wcfc9], a
+	ld [wOBP1], a
 	ld e, a
-	ld bc, $3728
-.asm_c8b5b
-	call Functionc8b6c
+	lb bc, $37, $28
+.okay
+	call .DMG_LYOverrideLoads
 	pop bc
 	ret
 
-Functionc8b60: ; c8b60 (32:4b60)
-	call Functionc8f19
+.two
+	call BattleBGEffects_ResetVideoHRAM
 	ld a, $e4
-	ld [wcfc7], a
-	ld [wcfc9], a
+	ld [wBGP], a
+	ld [wOBP1], a
 	ret
 
-Functionc8b6c: ; c8b6c (32:4b6c)
+.DMG_LYOverrideLoads
 	ld hl, LYOverridesBackup
-.asm_c8b6f
+.loop1
 	ld [hl], d
 	inc hl
 	dec b
-	jr nz, .asm_c8b6f
-.asm_c8b74
+	jr nz, .loop1
+.loop2
 	ld [hl], e
 	inc hl
 	dec c
-	jr nz, .asm_c8b74
+	jr nz, .loop2
 	ret
-asm_c8b7a: ; c8b7a (32:4b7a)
-	ld de, Jumptable_c8b81
-	call Functionc80ca
+
+.cgb
+	ld de, .Jumptable
+	call BatttleBGEffects_GetNamedJumptablePointer
 	jp [hl]
-; c8b81 (32:4b81)
 
-Jumptable_c8b81: ; c8b81
-	dw Functionc8b87
-	dw Functionc8b91
-	dw Functionc8bca
-; c8b87
-
-Functionc8b87: ; c8b87
-	call Functionc80e5
-	ld hl, $0003
+.Jumptable
+	dw .cgb_zero
+	dw .cgb_one
+	dw .cgb_two
+.cgb_zero
+	call BattleBGEffects_IncrementJumptable
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
 	ret
-; c8b91
 
-Functionc8b91: ; c8b91
-	ld hl, $0003
+.cgb_one
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
@@ -2071,47 +2087,43 @@
 	sla a
 	ld e, a
 	ld d, 0
-	call Functionc9038
-	jr nz, .asm_c8bbb
-	ld hl, Unknown_c8bd8
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_2
+	ld hl, .CGB_DMGEnemyData
 	add hl, de
 	ld a, [hli]
 	push hl
-	call Functionc8e7f
+	call BGEffects_LoadBGPal1_OBPal0
 	pop hl
 	ld a, [hl]
-	call Functionc8e52
+	call BGEffects_LoadBGPal0_OBPal1
 	ret
 
-.asm_c8bbb
-	ld hl, Unknown_c8bd8
+.player_2
+	ld hl, .CGB_DMGEnemyData
 	add hl, de
 	ld a, [hli]
 	push hl
-	call Functionc8e52
+	call BGEffects_LoadBGPal0_OBPal1
 	pop hl
 	ld a, [hl]
-	call Functionc8e7f
+	call BGEffects_LoadBGPal1_OBPal0
 	ret
-; c8bca
 
-Functionc8bca: ; c8bca
+.cgb_two
 	ld a, $e4
-	call Functionc8e52
+	call BGEffects_LoadBGPal0_OBPal1
 	ld a, $e4
-	call Functionc8e7f
+	call BGEffects_LoadBGPal1_OBPal0
 	call EndBattleBGEffect
 	ret
-; c8bd8
 
-Unknown_c8bd8: ; c8bd8
+.CGB_DMGEnemyData
 	db $e4, $e4
 	db $f8, $90
 	db $fc, $40
 	db $f8, $90
-; c8be0
-
-Unknown_c8be0: ; c8be0
+.DMG_PlayerData
 	db $e4, $e4
 	db $90, $f8
 	db $40, $fc
@@ -2118,130 +2130,120 @@
 	db $90, $f8
 ; c8be8
 
-Functionc8be8: ; c8be8 (32:4be8)
-	ld de, Unknown_c8bef
-	call Functionc8d77
+BattleBGEffect_RapidFlash: ; c8be8 (32:4be8)
+	ld de, .FlashPals
+	call BGEffect_RapidCyclePals
 	ret
-; c8bef (32:4bef)
 
-Unknown_c8bef: ; c8bef
+.FlashPals
 	db $e4, $6c, $fe
 ; c8bf2
 
-Functionc8bf2: ; c8bf2 (32:4bf2)
-	ld de, Unknown_c8bf9
-	call Functionc8d77
+BattleBGEffect_16: ; c8bf2 (32:4bf2)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8bf9 (32:4bf9)
 
-Unknown_c8bf9: ; c8bf9
+.Pals
 	db $e4, $90, $40, $ff
 ; c8bfd
 
-Functionc8bfd: ; c8bfd (32:4bfd)
-	ld de, Unknown_c8c04
-	call Functionc8d77
+BattleBGEffect_17: ; c8bfd (32:4bfd)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c04 (32:4c04)
 
-Unknown_c8c04: ; c8c04
+.Pals
 	db $e4, $f8, $fc, $ff
 ; c8c08
 
-Functionc8c08: ; c8c08 (32:4c08)
-	ld de, Unknown_c8c0f
-	call Functionc8d77
+BattleBGEffect_18: ; c8c08 (32:4c08)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c0f (32:4c0f)
 
-Unknown_c8c0f: ; c8c0f
+.Pals
 	db $e4, $90, $40, $90, $fe
 ; c8c14
 
-Functionc8c14: ; c8c14 (32:4c14)
-	ld de, Unknown_c8c1b
-	call Functionc8d77
+BattleBGEffect_19: ; c8c14 (32:4c14)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c1b (32:4c1b)
 
-Unknown_c8c1b: ; c8c1b
+.Pals
 	db $e4, $f8, $fc, $f8, $fe
 ; c8c20
 
-Functionc8c20: ; c8c20 (32:4c20)
-	ld de, Unknown_c8c27
-	call Functionc8d77
+BattleBGEffect_1a: ; c8c20 (32:4c20)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c27 (32:4c27)
 
-Unknown_c8c27: ; c8c27
+.Pals
 	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
 ; c8c30
 
-Functionc8c30: ; c8c30 (32:4c30)
-	ld de, Unknown_c8c37
-	call Functionc8d77
+BattleBGEffect_1b: ; c8c30 (32:4c30)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c37 (32:4c37)
 
-Unknown_c8c37:
+.Pals
 	db $e4, $fc, $e4, $00, $fe
 ; c8c3c
 
-Functionc8c3c: ; c8c3c (32:4c3c)
-	ld de, Unknown_c8c43
-	call Functionc8d77
+BattleBGEffect_1d: ; c8c3c (32:4c3c)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c43 (32:4c43)
 
-Unknown_c8c43:
+.Pals
 	db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff
 ; c8c55
 
-Functionc8c55: ; c8c55 (32:4c55)
-	ld de, Unknown_c8c5c
-	call Functionc8d77
+BattleBGEffect_1e: ; c8c55 (32:4c55)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
 	ret
-; c8c5c (32:4c5c)
 
-Unknown_c8c5c:
+.Pals
 	db $00, $40, $90, $e4, $ff
 ; c8c61
 
-Functionc8c61: ; c8c61 (32:4c61)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_VibrateMon: ; c8c61 (32:4c61)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
 
-Jumptable_c8c64: ; c8c64 (32:4c64)
-	dw Functionc8c68
-	dw Functionc8c85
 
-
-Functionc8c68: ; c8c68 (32:4c68)
-	call Functionc80e5
-	call Functionc8eca
+.zero: ; c8c68 (32:4c68)
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $2
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], $1
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $20
 	ret
 
-Functionc8c85: ; c8c85 (32:4c85)
-	ld hl, $3
+.one: ; c8c85 (32:4c85)
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c8c9e
+	jr z, .finish
 	dec [hl]
 	and $1
 	ret nz
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	xor $ff
@@ -2249,43 +2251,43 @@
 	ld [hl], a
 	call Functionc900b
 	ret
-.asm_c8c9e
-	call Functionc8f0a
+
+.finish
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8ca2: ; c8ca2 (32:4ca2)
-	call Functionc80d7 ;  ;  ; call does not return
+BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
 
-Jumptable_c8ca5: ; c8ca5 (32:4ca5)
-	dw Functionc8cab
-	dw Functionc8cc3
-	dw Functionc8cdd
 
-
-Functionc8cab: ; c8cab (32:4cab)
-	call Functionc80e5
-	call Functionc8eca
+.zero: ; c8cab (32:4cab)
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
 	ld a, $43
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	xor a
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, $37
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
 	ret
 
-Functionc8cc3: ; c8cc3 (32:4cc3)
-	ld hl, $3
+.one: ; c8cc3 (32:4cc3)
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	cp $40
-	jr nc, Functionc8cdd
+	jr nc, .two
 	ld d, $6
-	call Functionc905d
+	call BattleBGEffects_Sine
 	call Functionc900b
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	add $2
@@ -2292,18 +2294,18 @@
 	ld [hl], a
 	ret
 
-Functionc8cdd: ; c8cdd (32:4cdd)
-	call Functionc8f0a
+.two: ; c8cdd (32:4cdd)
+	call BattleAnim_ResetLCDStatCustom
 	ret
 
-Functionc8ce1: ; c8ce1 (32:4ce1)
+BattleBGEffect_2e: ; c8ce1 (32:4ce1)
 	call Functionc8d0b
-	jr c, .asm_c8cea
+	jr c, .xor_a
 	bit 7, a
-	jr z, .asm_c8ceb
-.asm_c8cea
+	jr z, .okay
+.xor_a
 	xor a
-.asm_c8ceb
+.okay
 	push af
 	call DelayFrame
 	pop af
@@ -2310,53 +2312,55 @@
 	ld [hSCY], a
 	xor $ff
 	inc a
-	ld [OTPartyMon3SpclAtk], a
+	ld [AnimObject01_YOffset], a
 	ret
 
-Functionc8cf9: ; c8cf9 (32:4cf9)
+BattleBGEffect_1f: ; c8cf9 (32:4cf9)
 	call Functionc8d0b
-	jr nc, .asm_c8cff
+	jr nc, .skip
 	xor a
-.asm_c8cff
+.skip
 	ld [hSCX], a
 	ret
 
-Functionc8d02: ; c8d02 (32:4d02)
+BattleBGEffect_20: ; c8d02 (32:4d02)
 	call Functionc8d0b
-	jr nc, .asm_c8d08
+	jr nc, .skip
 	xor a
-.asm_c8d08
+.skip
 	ld [hSCY], a
 	ret
 
 Functionc8d0b: ; c8d0b (32:4d0b)
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr nz, .asm_c8d18
+	jr nz, .okay
 	call EndBattleBGEffect
 	scf
 	ret
-.asm_c8d18
+
+.okay
 	dec [hl]
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	and $f
-	jr z, .asm_c8d2a
+	jr z, .every_16_frames
 	dec [hl]
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and a
 	ret
-.asm_c8d2a
+
+.every_16_frames
 	ld a, [hl]
 	swap a
 	or [hl]
 	ld [hl], a
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	xor $ff
@@ -2365,203 +2369,210 @@
 	and a
 	ret
 
-Functionc8d3a: ; c8d3a (32:4d3a)
-	ld hl, $3
+BattleBGEffect_35: ; c8d3a (32:4d3a)
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	cp $40
-	jr nc, .asm_c8d53
+	jr nc, .finish
 	ld d, $6
-	call Functionc905d
+	call BattleBGEffects_Sine
 	ld [hSCX], a
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	add $2
 	ld [hl], a
 	ret
-.asm_c8d53
+
+.finish
 	xor a
 	ld [hSCX], a
 	ret
 
-Functionc8d57: ; c8d57 (32:4d57)
-	ld hl, $1
+BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_c8d69
-
+	jr z, .zero
 	dec [hl]
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
-	call Functionc8eb2
+	call BattleBGEffect_GetNextDMGPal
 	ret
 
-.asm_c8d69
-	ld hl, $2
+.zero
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
-	ld hl, $1
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
 	add hl, bc
 	ld [hl], a
-	call Functionc8eac
+	call BattleBGEffect_GetFirstDMGPal
 	ret
 
-Functionc8d77: ; c8d77 (32:4d77)
+BGEffect_RapidCyclePals: ; c8d77 (32:4d77)
 	ld a, [hCGB]
 	and a
-	jr nz, asm_c8dd4
+	jr nz, .cgb
 	push de
-	ld de, Jumptable_c8d85
-	call Functionc80ca
+	ld de, .Jumptable_DMG
+	call BatttleBGEffects_GetNamedJumptablePointer
 	pop de
 	jp [hl]
 
-Jumptable_c8d85: ; c8d85 (32:4d85)
-	dw Functionc8d8b
-	dw Functionc8daa
-	dw Functionc8dc9
+.Jumptable_DMG
+	dw .zero_dmg
+	dw .one_dmg
+	dw .two_dmg
 
 
-Functionc8d8b: ; c8d8b (32:4d8b)
-	call Functionc80e5
+.zero_dmg: ; c8d8b (32:4d8b)
+	call BattleBGEffects_IncrementJumptable
 	ld a, $e4
-	call Functionc8ecb
+	call BattleBGEffects_SetLYOverrides
 	ld a, $47
-	call Functionc8ede
-	ld a, [hLCDStatCustom + 2]
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hFFC8]
 	inc a
-	ld [hLCDStatCustom + 2], a
-	ld hl, $3
+	ld [hFFC8], a
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld [hl], $0
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], a
 	ret
 
-Functionc8daa: ; c8daa (32:4daa)
-	ld hl, $2
+.one_dmg: ; c8daa (32:4daa)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and $f
-	jr z, .asm_c8db5
+	jr z, .okay_1_dmg
 	dec [hl]
 	ret
-.asm_c8db5
+
+.okay_1_dmg
 	ld a, [hl]
 	swap a
 	or [hl]
 	ld [hl], a
-	call Functionc8eac
-	jr c, .asm_c8dc3
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_2_dmg
 	call Functionc900b
 	ret
-.asm_c8dc3
-	ld hl, $3
+
+.okay_2_dmg
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	dec [hl]
 	ret
 
-Functionc8dc9: ; c8dc9 (32:4dc9)
-	call Functionc8f19
-	ld a, $e4
+.two_dmg: ; c8dc9 (32:4dc9)
+	call BattleBGEffects_ResetVideoHRAM
+	ld a, %11100100
 	ld [rBGP], a
 	call EndBattleBGEffect
 	ret
-asm_c8dd4: ; c8dd4 (32:4dd4)
+
+.cgb
 	push de
-	ld de, Jumptable_c8ddd
-	call Functionc80ca
+	ld de, .Jumptable_CGB
+	call BatttleBGEffects_GetNamedJumptablePointer
 	pop de
 	jp [hl]
 
-Jumptable_c8ddd: ; c8ddd (32:4ddd)
-	dw Functionc8de7
-	dw Functionc8e02
-	dw Functionc8e21
-	dw Functionc8e2a
-	dw Functionc8e49
+.Jumptable_CGB: ; c8ddd (32:4ddd)
+	dw .zero_cgb
+	dw .one_cgb
+	dw .two_cgb
+	dw .three_cgb
+	dw .four_cgb
 
 
-Functionc8de7: ; c8de7 (32:4de7)
-	call Functionc9038
-	jr nz, .asm_c8df2
-	call Functionc80e5
-	call Functionc80e5
-.asm_c8df2
-	call Functionc80e5
-	ld hl, $3
+.zero_cgb: ; c8de7 (32:4de7)
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn_cgb
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_IncrementJumptable
+.player_turn_cgb
+	call BattleBGEffects_IncrementJumptable
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	ld [hl], $0
-	ld hl, $2
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld [hl], a
 	ret
 
-Functionc8e02: ; c8e02 (32:4e02)
-	ld hl, $2
+.one_cgb: ; c8e02 (32:4e02)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and $f
-	jr z, .asm_c8e0d
+	jr z, .okay_1_cgb
 	dec [hl]
 	ret
-.asm_c8e0d
+
+.okay_1_cgb
 	ld a, [hl]
 	swap a
 	or [hl]
 	ld [hl], a
-	call Functionc8eac
-	jr c, .asm_c8e1b
-	call Functionc8e52
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_2_cgb
+	call BGEffects_LoadBGPal0_OBPal1
 	ret
-.asm_c8e1b
-	ld hl, $3
+
+.okay_2_cgb
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	dec [hl]
 	ret
 
-Functionc8e21: ; c8e21 (32:4e21)
+.two_cgb: ; c8e21 (32:4e21)
 	ld a, $e4
-	call Functionc8e52
+	call BGEffects_LoadBGPal0_OBPal1
 	call EndBattleBGEffect
 	ret
 
-Functionc8e2a: ; c8e2a (32:4e2a)
-	ld hl, $2
+.three_cgb: ; c8e2a (32:4e2a)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hl]
 	and $f
-	jr z, .asm_c8e35
+	jr z, .okay_3_cgb
 	dec [hl]
 	ret
-.asm_c8e35
+
+.okay_3_cgb
 	ld a, [hl]
 	swap a
 	or [hl]
 	ld [hl], a
-	call Functionc8eac
-	jr c, .asm_c8e43
-	call Functionc8e7f
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_4_cgb
+	call BGEffects_LoadBGPal1_OBPal0
 	ret
-.asm_c8e43
-	ld hl, $3
+
+.okay_4_cgb
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	dec [hl]
 	ret
 
-Functionc8e49: ; c8e49 (32:4e49)
+.four_cgb: ; c8e49 (32:4e49)
 	ld a, $e4
-	call Functionc8e7f
+	call BGEffects_LoadBGPal1_OBPal0
 	call EndBattleBGEffect
 	ret
 
-Functionc8e52: ; c8e52 (32:4e52)
+BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52)
 	ld h, a
 	ld a, [rSVBK]
 	push af
@@ -2588,7 +2599,7 @@
 	ld [hCGBPalUpdate], a
 	ret
 
-Functionc8e7f: ; c8e7f (32:4e7f)
+BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f)
 	ld h, a
 	ld a, [rSVBK]
 	push af
@@ -2615,247 +2626,249 @@
 	ld [hCGBPalUpdate], a
 	ret
 
-Functionc8eac: ; c8eac (32:4eac)
-	ld hl, $3
+BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac)
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
-
-Functionc8eb2: ; c8eb2 (32:4eb2)
+BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2)
 	ld l, a
 	ld h, $0
 	add hl, de
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_c8ec8
-	cp $fe
-	jr nz, .asm_c8ec6
+	cp -1
+	jr z, .quit
+	cp -2
+	jr nz, .repeat
 	ld a, [de]
-	ld hl, $3
+	ld hl, BG_EFFECT_STRUCT_03
 	add hl, bc
 	ld [hl], $0
-.asm_c8ec6
+.repeat
 	and a
 	ret
-.asm_c8ec8
+
+.quit
 	scf
 	ret
 
-Functionc8eca: ; c8eca (32:4eca)
+BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca)
 	xor a
-
-Functionc8ecb: ; c8ecb (32:4ecb)
+BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb)
 	ld hl, LYOverrides ; wd100
 	ld e, $99
-.asm_c8ed0
+.loop1
 	ld [hli], a
 	dec e
-	jr nz, .asm_c8ed0
+	jr nz, .loop1
 	ld hl, LYOverridesBackup
 	ld e, $91
-.asm_c8ed9
+.loop2
 	ld [hli], a
 	dec e
-	jr nz, .asm_c8ed9
+	jr nz, .loop2
 	ret
 
-Functionc8ede: ; c8ede (32:4ede)
-	ld [hLCDStatCustom], a
-	call Functionc9038
-	jr nz, .asm_c8eea
-	ld de, $36
-	jr .asm_c8eed
-.asm_c8eea
-	ld de, $2f5e
-.asm_c8eed
+BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede)
+	ld [hFFC6], a
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	lb de, $00, $36
+	jr .okay
+
+.player_turn
+	lb de, $2f, $5e
+.okay
 	ld a, d
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, e
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC8], a
 	ret
 
-Functionc8ef4: ; c8ef4 (32:4ef4)
-	ld [hLCDStatCustom], a
-	call Functionc9038
-	jr nz, .asm_c8f00
-	ld de, $36
-	jr .asm_c8f03
-.asm_c8f00
-	ld de, $2d5e
-.asm_c8f03
+BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4)
+	ld [hFFC6], a
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	lb de, $00, $36
+	jr .okay
+
+.player_turn
+	lb de, $2d, $5e
+.okay
 	ld a, d
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, e
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC8], a
 	ret
 
-Functionc8f0a: ; c8f0a (32:4f0a)
+BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a)
 	xor a
-	ld [hLCDStatCustom + 1], a
-	ld [hLCDStatCustom + 2], a
-	call Functionc8eca
+	ld [hFFC7], a
+	ld [hFFC8], a
+	call BattleBGEffects_ClearLYOverrides
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	call EndBattleBGEffect
 	ret
 
-Functionc8f19: ; c8f19 (32:4f19)
+BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19)
 	xor a
-	ld [hLCDStatCustom], a
-	ld a, $e4
+	ld [hFFC6], a
+	ld a, %11100100
 	ld [rBGP], a
-	ld [wcfc7], a
-	ld [wcfc9], a
-	ld [hLCDStatCustom + 1], a
-	ld [hLCDStatCustom + 2], a
-	call Functionc8eca
+	ld [wBGP], a
+	ld [wOBP1], a
+	ld [hFFC7], a
+	ld [hFFC8], a
+	call BattleBGEffects_ClearLYOverrides
 	ret
 
 Functionc8f2e: ; c8f2e (32:4f2e)
 	push bc
 	xor a
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
+	ld [wBattleAnimTemp2], a
 	ld a, $80
-	ld [BattleAnimTemps + 3], a
+	ld [wBattleAnimTemp3], a
 	ld bc, LYOverridesBackup
-.asm_c8f43
-	ld a, [hLCDStatCustom + 1]
+.loop
+	ld a, [hFFC7]
 	cp c
-	jr nc, .asm_c8f58
-	ld a, [hLCDStatCustom + 2]
+	jr nc, .next
+	ld a, [hFFC8]
 	cp c
-	jr c, .asm_c8f58
-	ld a, [BattleAnimTemps + 2]
+	jr c, .next
+	ld a, [wBattleAnimTemp2]
 	ld d, a
-	ld a, [BattleAnimTemps]
-	call Functionc905d
+	ld a, [wBattleAnimTemp0]
+	call BattleBGEffects_Sine
 	ld [bc], a
-.asm_c8f58
+.next
 	inc bc
-	ld a, [BattleAnimTemps + 1]
-	ld hl, BattleAnimTemps
+	ld a, [wBattleAnimTemp1]
+	ld hl, wBattleAnimTemp0
 	add [hl]
 	ld [hl], a
-	ld hl, BattleAnimTemps + 3
+	ld hl, wBattleAnimTemp3
 	dec [hl]
-	jr nz, .asm_c8f43
+	jr nz, .loop
 	pop bc
 	ret
 
-Functionc8f69: ; c8f69 (32:4f69)
+InitSurfWaves: ; c8f69 (32:4f69)
 	push bc
 	xor a
-	ld [BattleAnimTemps], a
+	ld [wBattleAnimTemp0], a
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
+	ld [wBattleAnimTemp2], a
 	ld a, $40
-	ld [BattleAnimTemps + 3], a
-	ld bc, w5_d422
-.asm_c8f7e
-	ld a, [BattleAnimTemps + 2]
+	ld [wBattleAnimTemp3], a
+	ld bc, wSurfWaveBGEffect
+.loop
+	ld a, [wBattleAnimTemp2]
 	ld d, a
-	ld a, [BattleAnimTemps]
-	call Functionc905d
+	ld a, [wBattleAnimTemp0]
+	call BattleBGEffects_Sine
 	ld [bc], a
 	inc bc
-	ld a, [BattleAnimTemps + 1]
-	ld hl, BattleAnimTemps
+	ld a, [wBattleAnimTemp1]
+	ld hl, wBattleAnimTemp0
 	add [hl]
 	ld [hl], a
-	ld hl, BattleAnimTemps + 3
+	ld hl, wBattleAnimTemp3
 	dec [hl]
-	jr nz, .asm_c8f7e
+	jr nz, .loop
 	pop bc
 	ret
 
 Functionc8f9a: ; c8f9a (32:4f9a)
 	push bc
-	ld [BattleAnimTemps + 3], a
+	ld [wBattleAnimTemp3], a
 	ld a, e
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	ld a, d
-	ld [BattleAnimTemps + 2], a
-	call Functionc8fe4
+	ld [wBattleAnimTemp2], a
+	call .GetLYOverrideBackupAddrOffset
 	ld hl, LYOverridesBackup
 	add hl, de
 	ld c, l
 	ld b, h
-.asm_c8faf
-	ld a, [BattleAnimTemps + 3]
+.loop
+	ld a, [wBattleAnimTemp3]
 	and a
-	jr z, .asm_c8fe1
+	jr z, .done
 	dec a
-	ld [BattleAnimTemps + 3], a
+	ld [wBattleAnimTemp3], a
 	push af
-	ld a, [BattleAnimTemps + 2]
+	ld a, [wBattleAnimTemp2]
 	ld d, a
-	ld a, [BattleAnimTemps + 1]
+	ld a, [wBattleAnimTemp1]
 	push hl
-	call Functionc905d
+	call BattleBGEffects_Sine
 	ld e, a
 	pop hl
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	cp c
-	jr c, .asm_c8fcf
+	jr c, .skip1
 	ld a, e
 	ld [bc], a
 	inc bc
-.asm_c8fcf
-	ld a, [hLCDStatCustom + 1]
+.skip1
+	ld a, [hFFC7]
 	cp l
-	jr nc, .asm_c8fd6
+	jr nc, .skip2
 	ld [hl], e
 	dec hl
-.asm_c8fd6
-	ld a, [BattleAnimTemps + 1]
+.skip2
+	ld a, [wBattleAnimTemp1]
 	add $4
-	ld [BattleAnimTemps + 1], a
+	ld [wBattleAnimTemp1], a
 	pop af
-	jr .asm_c8faf
-.asm_c8fe1
+	jr .loop
+
+.done
 	pop bc
 	and a
 	ret
 
-Functionc8fe4: ; c8fe4 (32:4fe4)
-	ld a, [hLCDStatCustom + 1]
+.GetLYOverrideBackupAddrOffset
+	ld a, [hFFC7]
 	ld e, a
-	ld a, [BattleAnimTemps]
+	ld a, [wBattleAnimTemp0]
 	add e
 	ld e, a
 	ld d, $0
 	ret
 
-Functionc8fef: ; c8fef (32:4fef)
+BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef)
 	push bc
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	ld l, a
 	inc a
 	ld e, a
 	ld h, $d2
 	ld d, h
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	and a
-	jr z, .asm_c9009
+	jr z, .done
 	ld c, a
 	ld a, [hl]
 	push af
-.asm_c9001
+.loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_c9001
+	jr nz, .loop
 	pop af
 	ld [hl], a
-.asm_c9009
+.done
 	pop bc
 	ret
 
@@ -2862,9 +2875,9 @@
 Functionc900b: ; c900b (32:500b)
 	push af
 	ld h, $d2
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	ld l, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	ld d, a
 	pop af
@@ -2877,14 +2890,14 @@
 Functionc901b: ; c901b (32:501b)
 	push af
 	ld e, a
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	ld l, a
-	ld a, [hLCDStatCustom + 2]
+	ld a, [hFFC8]
 	sub l
 	sub e
 	ld d, a
 	ld h, $d2
-	ld a, [hLCDStatCustom + 1]
+	ld a, [hFFC7]
 	ld l, a
 	ld a, $90
 .asm_c902c
@@ -2899,8 +2912,8 @@
 	jr nz, .asm_c9033
 	ret
 
-Functionc9038: ; c9038 (32:5038)
-	ld hl, $2
+BGEffect_CheckBattleTurn: ; c9038 (32:5038)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hBattleTurn]
 	and $1
@@ -2907,35 +2920,37 @@
 	xor [hl]
 	ret
 
-Functionc9042: ; c9042 (32:5042)
-	ld hl, $2
+BGEffect_CheckFlyDigStatus: ; c9042 (32:5042)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
 	add hl, bc
 	ld a, [hBattleTurn]
 	and $1
 	xor [hl]
-	jr nz, .asm_c9053
+	jr nz, .player
 	ld a, [EnemySubStatus3] ; EnemySubStatus3
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
 	ret
-.asm_c9053
+
+.player
 	ld a, [PlayerSubStatus3] ; PlayerSubStatus3
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
 	ret
 
-Functionc9059: ; c9059 (32:5059)
+BattleBGEffects_CheckSGB: ; c9059 (32:5059)
 	ld a, [hSGB]
 	and a
 	ret
 
-Functionc905d: ; c905d (32:505d)
+BattleBGEffects_Sine: ; c905d (32:505d)
 	ld e, a
-	callab Functionce765
+	callab BattleAnim_Sine_e
 	ld a, e
 	ret
 
-Functionc9066: ; c9066 (32:5066)
+BattleBGEffects_Cosine: ; c9066 (32:5066)
 	ld e, a
-	callab Functionce76b
+	callab BattleAnim_Cosine_e
 	ld a, e
 	ret
+
 ; c906f (32:506f)
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -1,9 +1,6 @@
-BattleCore:
-
 ; Core components of the battle engine.
-
-
-SendOutFirstMons: ; 3c000
+BattleCore:
+DoBattle: ; 3c000
 	xor a
 	ld [wBattleParticipantsNotFainted], a
 	ld [wc6fc], a
@@ -83,8 +80,8 @@
 	ld [CurPartySpecies], a
 	ld [TempBattleMonSpecies], a
 	hlcoord 1, 5
-	ld a, $9
-	call Function3d490
+	ld a, 9
+	call SlideBattlePicOut
 	call LoadTileMapToTempTileMap
 	call ResetBattleParticipants
 	call InitBattleMon
@@ -113,7 +110,7 @@
 	call SpikesDamage
 
 .not_linked_2
-	jp Function3c12f
+	jp BattleTurn
 
 .tutorial_debug
 	jp BattleMenu
@@ -130,7 +127,7 @@
 	ld a, [wLinkMode]
 	and a
 	ld hl, BattleText_WildFled
-	jr z, .asm_3c115
+	jr z, .print_text
 
 	ld a, [wBattleResult]
 	and $c0
@@ -137,26 +134,26 @@
 	ld [wBattleResult], a
 	ld hl, BattleText_EnemyFled
 	call CheckMobileBattleError
-	jr nc, .asm_3c115
+	jr nc, .print_text
 
 	ld hl, wcd2a
 	bit 4, [hl]
-	jr nz, .asm_3c118
+	jr nz, .skip_text
 
 	ld hl, BattleText_LinkErrorBattleCanceled
 
-.asm_3c115
+.print_text
 	call StdBattleTextBox
 
-.asm_3c118
+.skip_text
 	call StopDangerSound
 	call CheckMobileBattleError
-	jr c, .asm_3c126
+	jr c, .skip_sfx
 
 	ld de, SFX_RUN
 	call PlaySFX
 
-.asm_3c126
+.skip_sfx
 	call SetPlayerTurn
 	ld a, 1
 	ld [BattleEnded], a
@@ -164,7 +161,7 @@
 ; 3c12f
 
 
-Function3c12f: ; 3c12f
+BattleTurn: ; 3c12f
 .loop
 	call MobileFn_3c1bf
 	call CheckContestBattleOver
@@ -424,7 +421,7 @@
 	bit SUBSTATUS_CONFUSED, a
 	ret nz
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_CONFUSED
 	call Call_PlayBattleAnim_OnlyIfVisible
 	call SwitchTurnCore
@@ -1101,7 +1098,7 @@
 	pop de
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetEighthMaxHP
 	ld de, PlayerToxicCount
@@ -1141,7 +1138,7 @@
 
 	call SwitchTurnCore
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_SAP
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
@@ -1166,7 +1163,7 @@
 	bit SUBSTATUS_NIGHTMARE, [hl]
 	jr z, .not_nightmare
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_IN_NIGHTMARE
 	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetQuarterMaxHP
@@ -1184,7 +1181,7 @@
 	jr z, .not_cursed
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_IN_NIGHTMARE
 	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetQuarterMaxHP
@@ -1328,7 +1325,7 @@
 
 	call SwitchTurnCore
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	predef PlayBattleAnim
 	call SwitchTurnCore
@@ -1433,8 +1430,8 @@
 	ld a, [hBattleTurn]
 	and a
 	jr z, .wild
-	ld de, wc739
-	ld hl, wc735
+	ld de, wWildMonPP
+	ld hl, wWildMonMoves
 	ld a, [wBattleMode]
 	dec a
 	jr z, .wild
@@ -1830,7 +1827,7 @@
 
 	call SwitchTurnCore
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_IN_SANDSTORM
 	call Call_PlayBattleAnim
 	call SwitchTurnCore
@@ -1852,9 +1849,8 @@
 	dec a
 	ld c, a
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1892,26 +1888,26 @@
 .ok
 	inc hl
 	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
 	ret nc
 
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld c, a
-	ld a, [wd1ed]
+	ld a, [Buffer4]
 	ld b, a
 	xor a
 	ld [hli], a
 	ld [hl], a
-	ld [wd1ee], a
-	ld [wd1ef], a
+	ld [Buffer5], a
+	ld [Buffer6], a
 	ret
 ; 3cc76
 
@@ -2101,7 +2097,7 @@
 	xor a
 .ok
 	push bc
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 	pop bc
 	ret
@@ -2415,7 +2411,7 @@
 	ld e, HP_BAR_LENGTH_PX
 	call UpdateHPPal
 	call WaitBGMap
-	callba Function2c012
+	callba EnemySwitch_TrainerHud
 	ld a, [wLinkMode]
 	and a
 	jr z, .not_linked
@@ -2489,8 +2485,8 @@
 	bit 0, a
 	jr nz, .battle_tower
 
-	call Function3ebd8
-	ld c, $28
+	call BattleWinSlideInEnemyTrainerFrontpic
+	ld c, 40
 	call DelayFrames
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
@@ -2497,7 +2493,7 @@
 	jr nz, .skip_heal
 	predef HealParty
 .skip_heal
-	ld a, [wc2cc]
+	ld a, [wMonStatusFlags]
 	bit 0, a
 	jr nz, .skip_win_loss_text
 	call PrintWinLossText
@@ -2506,7 +2502,7 @@
 	jp Function3d02b
 
 .mobile
-	call Function3ebd8
+	call BattleWinSlideInEnemyTrainerFrontpic
 	ld c, 40
 	call DelayFrames
 	ld c, $4
@@ -2514,7 +2510,7 @@
 	ret
 
 .battle_tower
-	call Function3ebd8
+	call BattleWinSlideInEnemyTrainerFrontpic
 	ld c, 40
 	call DelayFrames
 	call EmptyBattleTextBox
@@ -2578,9 +2574,8 @@
 	dec a
 	ld c, a
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2618,9 +2613,8 @@
 	rl [hl]
 	ret nc
 	ld a, $ff
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 	ret
 ; 3d0ab
@@ -2874,13 +2868,13 @@
 .loop
 	lb bc, 1, 7
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	jr c, .pressed_b
 	and a
 	ret
 
 .pressed_b
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1 ; YES
 	jr z, .loop
 	ld hl, PartyMon1Speed
@@ -2891,7 +2885,7 @@
 ForcePlayerMonChoice: ; 3d227
 	call EmptyBattleTextBox
 	call LoadStandardMenuDataHeader
-	call Function3d2f7
+	call SetUpBattlePartyMenu_NoLoop
 	call ForcePickPartyMonInBattle
 	ld a, [wLinkMode]
 	and a
@@ -2935,7 +2929,7 @@
 	call ClearPalettes
 	call DelayFrame
 	call _LoadHPBar
-	call WriteBackup
+	call CloseWindow
 	call GetMemSGBLayout
 	call SetPalettes
 	call SendOutPkmnText
@@ -2995,12 +2989,12 @@
 	ret
 ; 3d2f7
 
-Function3d2f7: ; 3d2f7
+SetUpBattlePartyMenu_NoLoop: ; 3d2f7
 	call ClearBGPalettes
-Function3d2fa: ; switch to fullscreen menu?
+SetUpBattlePartyMenu: ; switch to fullscreen menu?
 	callba LoadPartyMenuGFX
 	callba InitPartyMenuWithCancel
-	callba Function8e85
+	callba InitPartyMenuBGPal7
 	callba InitPartyMenuGFX
 	ret
 ; 3d313
@@ -3111,12 +3105,12 @@
 	hlcoord 0, 0
 	lb bc, 8, 21
 	call ClearBox
-	call Function3ebd8
+	call BattleWinSlideInEnemyTrainerFrontpic
 
 	ld c, 40
 	call DelayFrames
 
-	ld a, [wc2cc]
+	ld a, [wMonStatusFlags]
 	bit 0, a
 	jr nz, .skip_win_loss_text
 	call PrintWinLossText
@@ -3128,7 +3122,7 @@
 	hlcoord 0, 0
 	lb bc, 8, 21
 	call ClearBox
-	call Function3ebd8
+	call BattleWinSlideInEnemyTrainerFrontpic
 
 	ld c, 40
 	call DelayFrames
@@ -3147,7 +3141,7 @@
 	jr nz, .LostLinkBattle
 
 ; Greyscale
-	ld b, SCGB_00
+	ld b, SCGB_BATTLE_GRAYSCALE
 	call GetSGBLayout
 	call SetPalettes
 	jr .end
@@ -3180,7 +3174,7 @@
 	hlcoord 0, 0
 	lb bc, 8, 21
 	call ClearBox
-	call Function3ebd8
+	call BattleWinSlideInEnemyTrainerFrontpic
 
 	ld c, 40
 	call DelayFrames
@@ -3260,31 +3254,31 @@
 ; 3d490
 
 
-Function3d490: ; 3d490
+SlideBattlePicOut: ; 3d490
 	ld [hMapObjectIndexBuffer], a
 	ld c, a
-.asm_3d493
+.loop
 	push bc
 	push hl
 	ld b, $7
-.asm_3d497
+.loop2
 	push hl
-	call Function3d4ae
+	call .DoFrame
 	pop hl
 	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
-	jr nz, .asm_3d497
+	jr nz, .loop2
 	ld c, 2
 	call DelayFrames
 	pop hl
 	pop bc
 	dec c
-	jr nz, .asm_3d493
+	jr nz, .loop
 	ret
 ; 3d4ae
 
-Function3d4ae: ; 3d4ae
+.DoFrame: ; 3d4ae
 	ld a, [hMapObjectIndexBuffer]
 	ld c, a
 	cp $8
@@ -3413,8 +3407,8 @@
 	xor a
 	ld [wPlayerWrapCount], a
 	hlcoord 18, 0
-	ld a, $8
-	call Function3d490
+	ld a, 8
+	call SlideBattlePicOut
 	call EmptyBattleTextBox
 	jp LoadStandardMenuDataHeader
 ; 3d57a
@@ -3646,13 +3640,13 @@
 	ld a, [CurPartySpecies]
 	cp UNOWN
 	jr nz, .skip_unown
-	ld a, [wdef4]
+	ld a, [wFirstUnownSeen]
 	and a
 	jr nz, .skip_unown
 	ld hl, EnemyMonDVs
 	predef GetUnownLetter
 	ld a, [UnownLetter]
-	ld [wdef4], a
+	ld [wFirstUnownSeen], a
 .skip_unown
 
 	ld hl, EnemyMonHP
@@ -3701,10 +3695,10 @@
 	call StdBattleTextBox
 	lb bc, 1, 7
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	jr nz, .said_no
-	call Function3d2f7
+	call SetUpBattlePartyMenu_NoLoop
 	call PickSwitchMonInBattle
 	jr c, .canceled_switch
 	ld a, [CurBattleMon]
@@ -3764,8 +3758,8 @@
 	call GetMonFrontpic
 
 	xor a
-	ld [wcfca], a
-	ld [wKickCounter], a
+	ld [wNumHits], a
+	ld [wBattleAnimParam], a
 	call SetEnemyTurn
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
@@ -3773,7 +3767,7 @@
 	call BattleCheckEnemyShininess
 	jr nc, .not_shiny
 	ld a, 1 ; shiny anim
-	ld [wKickCounter], a
+	ld [wBattleAnimParam], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 .not_shiny
@@ -4270,14 +4264,14 @@
 	ld [wEnemyWrapCount], a
 	call SetPlayerTurn
 	xor a
-	ld [wcfca], a
-	ld [wKickCounter], a
+	ld [wNumHits], a
+	ld [wBattleAnimParam], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 	call BattleCheckPlayerShininess
 	jr nc, .not_shiny
-	ld a, $1
-	ld [wKickCounter], a
+	ld a, 1
+	ld [wBattleAnimParam], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 
@@ -4463,7 +4457,7 @@
 	push af
 	xor a
 	ld [hBattleTurn], a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_RETURN_MON
 	call Call_PlayBattleAnim
 	pop af
@@ -4478,21 +4472,21 @@
 	call SetPlayerTurn
 	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	call HandleStatusHealingItem
+	call UseConfusionHealingItem
 	call SetEnemyTurn
 	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	jp HandleStatusHealingItem
+	jp UseConfusionHealingItem
 
 .player_1
 	call SetEnemyTurn
 	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	call HandleStatusHealingItem
+	call UseConfusionHealingItem
 	call SetPlayerTurn
 	call HandleHPHealingItem
 	call UseHeldStatusHealingItem
-	jp HandleStatusHealingItem
+	jp UseConfusionHealingItem
 ; 3dd2f
 
 HandleHPHealingItem: ; 3dd2f
@@ -4511,13 +4505,13 @@
 .go
 	push bc
 	ld a, [de]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	add a
 	ld c, a
 	dec de
 	ld a, [de]
 	inc de
-	ld [wd1ed], a
+	ld [Buffer4], a
 	adc a
 	ld b, a
 	ld a, b
@@ -4542,12 +4536,12 @@
 	ld [Buffer1], a
 	ld a, [de]
 	add c
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld c, a
 	dec de
 	ld a, [de]
 	adc $0
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld b, a
 	ld a, [hld]
 	cp c
@@ -4555,18 +4549,18 @@
 	sbc b
 	jr nc, .okay
 	ld a, [hli]
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld a, [hl]
-	ld [wd1ee], a
+	ld [Buffer5], a
 
 .okay
-	ld a, [wd1ef]
+	ld a, [Buffer6]
 	ld [de], a
 	inc de
-	ld a, [wd1ee]
+	ld a, [Buffer5]
 	ld [de], a
 	ld a, [hBattleTurn]
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	and a
 	hlcoord 2, 2
 	jr z, .got_hp_bar_coords
@@ -4573,7 +4567,7 @@
 	hlcoord 10, 9
 
 .got_hp_bar_coords
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 UseOpponentItem:
 	call RefreshBattleHuds
@@ -4596,7 +4590,7 @@
 	ld [FXAnimIDLo], a
 	call SwitchTurnCore
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	predef PlayBattleAnim
 	call SwitchTurnCore
@@ -4672,7 +4666,7 @@
 ; 3de51
 
 
-HandleStatusHealingItem: ; 3de51
+UseConfusionHealingItem: ; 3de51
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
 	bit SUBSTATUS_CONFUSED, a
@@ -4692,7 +4686,7 @@
 	res SUBSTATUS_CONFUSED, [hl]
 	call GetItemName
 	call ItemRecoveryAnim
-	ld hl, BattleText_0x80dab
+	ld hl, BattleText_ItemHealedConfusion
 	call StdBattleTextBox
 	ld a, [hBattleTurn]
 	and a
@@ -4750,9 +4744,8 @@
 	ld a, [hli]
 	cp $ff
 	jr z, .finish
-rept 2
 	inc hl
-endr
+	inc hl
 	cp b
 	jr nz, .loop
 	pop bc
@@ -4759,9 +4752,8 @@
 	ld a, [bc]
 	ld [wd265], a
 	push bc
-rept 2
 	dec hl
-endr
+	dec hl
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4856,7 +4848,7 @@
 	lb bc, 5, 11
 	call ClearBox
 
-	callba DrawPlayerExpBar
+	callba DrawPlayerHUDBorder
 
 	hlcoord 18, 9
 	ld [hl], $73 ; vertical bar
@@ -4998,7 +4990,7 @@
 	lb bc, 4, 11
 	call ClearBox
 
-	callba Function2c0c5
+	callba DrawEnemyHUDBorder
 
 	ld a, [TempEnemyMonSpecies]
 	ld [CurSpecies], a
@@ -5116,7 +5108,7 @@
 
 .draw_bar
 	xor a
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	hlcoord 2, 2
 	ld b, 0
 	call DrawBattleHPBar
@@ -5228,11 +5220,11 @@
 BattleMenu_Pack: ; 3e1c7
 	ld a, [wLinkMode]
 	and a
-	jp nz, ItemsCantBeUsed
+	jp nz, .ItemsCantBeUsed
 
 	ld a, [InBattleTowerBattle]
 	and a
-	jp nz, ItemsCantBeUsed
+	jp nz, .ItemsCantBeUsed
 
 	call LoadStandardMenuDataHeader
 
@@ -5261,7 +5253,7 @@
 	call DoItemEffect
 
 .got_item
-	call Function3e234
+	call .UseItem
 	ret
 
 .didnt_use_item
@@ -5277,23 +5269,23 @@
 	jp BattleMenu
 ; 3e22b
 
-ItemsCantBeUsed: ; 3e22b
+.ItemsCantBeUsed: ; 3e22b
 	ld hl, BattleText_ItemsCantBeUsedHere
 	call StdBattleTextBox
 	jp BattleMenu
 ; 3e234
 
-Function3e234: ; 3e234
-	ld a, [wc64e]
+.UseItem: ; 3e234
+	ld a, [wWildMon]
 	and a
-	jr nz, .asm_3e279
+	jr nz, .run
 	callab CheckItemPocket
 	ld a, [wItemAttributeParamBuffer]
-	cp $3
-	jr z, .asm_3e24a
+	cp BALL
+	jr z, .ball
 	call ClearBGPalettes
 
-.asm_3e24a
+.ball
 	xor a
 	ld [hBGMapMode], a
 	call _LoadBattleFontsHPBar
@@ -5300,29 +5292,29 @@
 	call ClearSprites
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
-	jr z, .asm_3e25d
+	jr z, .tutorial2
 	call GetMonBackpic
 
-.asm_3e25d
+.tutorial2
 	call GetMonFrontpic
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	call ExitMenu
 	call UpdateBattleHUDs
 	call WaitBGMap
 	call LoadTileMapToTempTileMap
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	call FinishBattleAnim
 	and a
 	ret
 
-.asm_3e279
+.run
 	xor a
-	ld [wc64e], a
+	ld [wWildMon], a
 	ld a, [wBattleResult]
 	and $c0
 	ld [wBattleResult], a
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	call SetPalettes
 	scf
 	ret
@@ -5334,44 +5326,44 @@
 	call ExitMenu
 	call LoadStandardMenuDataHeader
 	call ClearBGPalettes
-Function3e299:
-	call Function3d2fa
+BattleMenuPKMN_Loop:
+	call SetUpBattlePartyMenu
 	xor a
 	ld [PartyMenuActionText], a
 	call Function3d313
 	call Function3d329
-	jr c, .asm_3e2da
-.asm_3e2a8
-	callba Function8ea4a
-	call Function3e2f5
-	jr c, .asm_3e2c8
-	call Function1bee
-	ld a, [MenuSelection2]
-	cp $1
-	jp z, Function3e358
-	cp $2
-	jr z, .asm_3e2cf
-	cp $3
-	jr z, .asm_3e2da
-	jr .asm_3e2a8
+	jr c, .Cancel
+.loop
+	callba FreezeMonIcons
+	call .GetMenu
+	jr c, .PressedB
+	call PlaceHollowCursor
+	ld a, [wMenuCursorY]
+	cp $1 ; SWITCH
+	jp z, TryPlayerSwitch
+	cp $2 ; STATS
+	jr z, .Stats
+	cp $3 ; CANCEL
+	jr z, .Cancel
+	jr .loop
 
-.asm_3e2c8
+.PressedB
 	call CheckMobileBattleError
-	jr c, .asm_3e2da
-	jr Function3e299
+	jr c, .Cancel
+	jr BattleMenuPKMN_Loop
 
-.asm_3e2cf
-	call Function3e308
+.Stats
+	call Battle_StatsScreen
 	call CheckMobileBattleError
-	jr c, .asm_3e2da
+	jr c, .Cancel
 	jp Function3e290
 
-.asm_3e2da
+.Cancel
 	call ClearSprites
 	call ClearPalettes
 	call DelayFrame
 	call _LoadHPBar
-	call WriteBackup
+	call CloseWindow
 	call LoadTileMapToTempTileMap
 	call GetMemSGBLayout
 	call SetPalettes
@@ -5378,18 +5370,18 @@
 	jp BattleMenu
 ; 3e2f5
 
-Function3e2f5: ; 3e2f5
+.GetMenu: ; 3e2f5
 	call IsMobileBattle
-	jr z, .asm_3e301
-	callba Function24e99
+	jr z, .mobile
+	callba BattleMonMenu
 	ret
 
-.asm_3e301
-	callba Function100d22
+.mobile
+	callba MobileBattleMonMenu
 	ret
 ; 3e308
 
-Function3e308: ; 3e308
+Battle_StatsScreen: ; 3e308
 	call DisableLCD
 	ld hl, VTiles2 tile $31
 	ld de, VTiles0
@@ -5397,7 +5389,7 @@
 	call CopyBytes
 	ld hl, VTiles2
 	ld de, VTiles0 tile $11
-	ld bc, $0310
+	ld bc, $31 tiles
 	call CopyBytes
 	call EnableLCD
 	call ClearSprites
@@ -5404,16 +5396,16 @@
 	call LowVolume
 	xor a ; PARTYMON
 	ld [MonType], a
-	callba Function4dc7b
+	callba BattleStatsScreenInit
 	call MaxVolume
 	call DisableLCD
 	ld hl, VTiles0
 	ld de, VTiles2 tile $31
-	ld bc, $0110
+	ld bc, $11 tiles
 	call CopyBytes
 	ld hl, VTiles0 tile $11
 	ld de, VTiles2
-	ld bc, $0310
+	ld bc, $31 tiles
 	call CopyBytes
 	call EnableLCD
 	ret
@@ -5420,32 +5412,32 @@
 ; 3e358
 
 
-Function3e358: ; 3e358
+TryPlayerSwitch: ; 3e358
 	ld a, [CurBattleMon]
 	ld d, a
 	ld a, [CurPartyMon]
 	cp d
-	jr nz, .asm_3e36b
+	jr nz, .check_trapped
 	ld hl, BattleText_PkmnIsAlreadyOut
 	call StdBattleTextBox
-	jp Function3e299
+	jp BattleMenuPKMN_Loop
 
-.asm_3e36b
+.check_trapped
 	ld a, [wPlayerWrapCount]
 	and a
-	jr nz, .asm_3e378
+	jr nz, .trapped
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_CANT_RUN, a
-	jr z, .asm_3e381
+	jr z, .try_switch
 
-.asm_3e378
+.trapped
 	ld hl, BattleText_PkmnCantBeRecalled
 	call StdBattleTextBox
-	jp Function3e299
+	jp BattleMenuPKMN_Loop
 
-.asm_3e381
+.try_switch
 	call CheckIfPartyHasPkmnToBattleWith
-	jp z, Function3e299
+	jp z, BattleMenuPKMN_Loop
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, $2
@@ -5454,14 +5446,11 @@
 	call DelayFrame
 	call ClearSprites
 	call _LoadHPBar
-	call WriteBackup
+	call CloseWindow
 	call GetMemSGBLayout
 	call SetPalettes
 	ld a, [CurPartyMon]
 	ld [CurBattleMon], a
-	; fallthrough
-; 3e3ad
-
 PlayerSwitch: ; 3e3ad
 	ld a, 1
 	ld [wPlayerIsSwitching], a
@@ -5470,7 +5459,7 @@
 	jr z, .not_linked
 	call LoadStandardMenuDataHeader
 	call LinkBattleSendReceiveAction
-	call WriteBackup
+	call CloseWindow
 
 .not_linked
 	call ParseEnemyAction
@@ -5519,7 +5508,7 @@
 ; 3e40b
 
 BattleMonEntrance: ; 3e40b
-	call BattleMonNickComma_TextBox
+	call WithdrawPkmnText
 
 	ld c, 50
 	call DelayFrames
@@ -5551,7 +5540,7 @@
 	call SetPlayerTurn
 	call SpikesDamage
 	ld a, $2
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ret
 ; 3e459
 
@@ -5581,7 +5570,7 @@
 BattleMenu_Run: ; 3e489
 	call Call_LoadTempTileMapToTileMap
 	ld a, $3
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, BattleMonSpeed
 	ld de, EnemyMonSpeed
 	call TryToRunAwayFromBattle
@@ -5667,9 +5656,9 @@
 	ld a, 17 - NUM_MOVES - 4
 
 .got_default_coord
-	ld [wcfa1], a
+	ld [w2DMenuCursorInitY], a
 	ld a, b
-	ld [wcfa2], a
+	ld [w2DMenuCursorInitX], a
 	ld a, [wMoveSelectionMenuType]
 	cp $1
 	jr z, .skip_inc
@@ -5677,14 +5666,14 @@
 	inc a
 
 .skip_inc
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, $1
-	ld [wcfaa], a
-	ld a, [wd0eb]
+	ld [wMenuCursorX], a
+	ld a, [wNumMoves]
 	inc a
-	ld [wcfa3], a
+	ld [w2DMenuNumRows], a
 	ld a, $1
-	ld [wcfa4], a
+	ld [w2DMenuNumCols], a
 	ld c, $2c
 	ld a, [wMoveSelectionMenuType]
 	dec a
@@ -5700,13 +5689,13 @@
 
 .okay
 	ld a, b
-	ld [wcfa8], a
+	ld [wMenuJoypadFilter], a
 	ld a, c
-	ld [wcfa5], a
+	ld [w2DMenuFlags1], a
 	xor a
-	ld [wcfa6], a
+	ld [w2DMenuFlags2], a
 	ld a, $10
-	ld [wcfa7], a
+	ld [w2DMenuCursorOffsets], a
 .menu_loop
 	ld a, [wMoveSelectionMenuType]
 	and a
@@ -5732,7 +5721,7 @@
 .interpret_joypad
 	ld a, $1
 	ld [hBGMapMode], a
-	call Function1bd3
+	call ScrollingMenuJoypad
 	bit D_UP_F, a
 	jp nz, .pressed_up
 	bit D_DOWN_F, a
@@ -5744,9 +5733,9 @@
 
 	xor a
 	ld [wMoveSwapBuffer], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld b, a
 	ld a, [wMoveSelectionMenuType]
 	dec a
@@ -5769,7 +5758,7 @@
 	ret nz
 
 	ld hl, BattleMonPP
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -5785,7 +5774,7 @@
 	ld a, [wc6e1]
 	and a
 	jr nz, .skip2
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld hl, BattleMonMoves
 	ld c, a
 	ld b, 0
@@ -5815,26 +5804,25 @@
 ; 3e61d
 
 .pressed_up
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	and a
 	jp nz, .menu_loop
-	ld a, [wd0eb]
+	ld a, [wNumMoves]
 	inc a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	jp .menu_loop
 ; 3e62e
 
 .pressed_down ; 3e62e
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld b, a
-	ld a, [wd0eb]
-rept 2
+	ld a, [wNumMoves]
 	inc a
-endr
+	inc a
 	cp b
 	jp nz, .menu_loop
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	jp .menu_loop
 ; 3e643
 
@@ -5851,7 +5839,7 @@
 	swap a
 	and $f
 	ld b, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp b
 	jr nz, .not_swapping_disabled_move
 	ld a, [hl]
@@ -5870,7 +5858,7 @@
 	ld a, [hl]
 	and $f
 	ld b, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	swap a
 	add b
 	ld [hl], a
@@ -5905,7 +5893,7 @@
 	ld d, h
 	ld e, l
 	pop hl
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, 0
@@ -5918,7 +5906,7 @@
 	ret
 
 .start_swap
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wMoveSwapBuffer], a
 	jp MoveSelectionScreen
 ; 3e6c8
@@ -5940,7 +5928,7 @@
 	swap a
 	and $f
 	ld b, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp b
 	jr nz, .not_disabled
 
@@ -5950,11 +5938,11 @@
 	jr .done
 
 .not_disabled
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	dec [hl]
 	call SetPlayerTurn
 	ld hl, BattleMonMoves
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -5967,7 +5955,7 @@
 	ld [MonType], a
 	callab GetMaxPPOfMove
 
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld c, [hl]
 	inc [hl]
 	ld b, 0
@@ -6014,9 +6002,8 @@
 	lb bc, 1, 2
 	call PrintNum
 	pop hl
-rept 2
 	inc hl
-endr
+	inc hl
 	ld [hl], "/"
 	inc hl
 	ld de, wNamedObjectIndexBuffer
@@ -6537,7 +6524,7 @@
 	ld [EnemyMonLevel], a
 ; Fill stats
 	ld de, EnemyMonMaxHP
-	ld b, $00
+	ld b, FALSE
 	ld hl, LinkBattleRNs + 7 ; ?
 	predef CalcPkmnStats
 
@@ -6714,7 +6701,7 @@
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-; Caught this mon
+; Saw this mon
 	ld a, [TempEnemyMonSpecies]
 	dec a
 	ld c, a
@@ -6824,9 +6811,8 @@
 
 .next
 ; Make sure we haven't gone past the end of the table
-rept 2
 	inc e
-endr
+	inc e
 	ld a, e
 	cp a, .Set1 - .LetterSets
 	jr c, .loop
@@ -6874,7 +6860,7 @@
 	ret
 ; 3ebd8
 
-Function3ebd8: ; 3ebd8
+BattleWinSlideInEnemyTrainerFrontpic: ; 3ebd8
 	xor a
 	ld [TempEnemyMonSpecies], a
 	call FinishBattleAnim
@@ -6883,12 +6869,12 @@
 	ld de, VTiles2
 	callab GetTrainerPic
 	hlcoord 19, 0
-	ld c, $0
+	ld c, 0
 
 .outer_loop
 	inc c
 	ld a, c
-	cp $7
+	cp 7
 	ret z
 	xor a
 	ld [hBGMapMode], a
@@ -6898,9 +6884,9 @@
 	push hl
 
 .inner_loop
-	call Function3ec1a
+	call .CopyColumn
 	inc hl
-	ld a, $7
+	ld a, 7
 	add d
 	ld d, a
 	dec c
@@ -6908,7 +6894,7 @@
 
 	ld a, $1
 	ld [hBGMapMode], a
-	ld c, $4
+	ld c, 4
 	call DelayFrames
 	pop hl
 	pop bc
@@ -6916,11 +6902,11 @@
 	jr .outer_loop
 ; 3ec1a
 
-Function3ec1a: ; 3ec1a
+.CopyColumn: ; 3ec1a
 	push hl
 	push de
 	push bc
-	ld e, $7
+	ld e, 7
 
 .loop
 	ld [hl], d
@@ -6970,7 +6956,7 @@
 	ld [hli], a
 	or b
 	jr nz, .player_ok
-	ld b, $1
+	ld b, $1 ; min speed
 
 .player_ok
 	ld [hl], b
@@ -6991,7 +6977,7 @@
 	ld [hli], a
 	or b
 	jr nz, .enemy_ok
-	ld b, $1
+	ld b, $1 ; min speed
 
 .enemy_ok
 	ld [hl], b
@@ -7014,7 +7000,7 @@
 	ld [hli], a
 	or b
 	jr nz, .player_ok
-	ld b, $1
+	ld b, $1 ; min attack
 
 .player_ok
 	ld [hl], b
@@ -7033,7 +7019,7 @@
 	ld [hli], a
 	or b
 	jr nz, .enemy_ok
-	ld b, $1
+	ld b, $1 ; min attack
 
 .enemy_ok
 	ld [hl], b
@@ -7182,9 +7168,8 @@
 ; Swap badges 3 (PlainBadge) and 5 (MineralBadge).
 	ld d, a
 	and (1 << PLAINBADGE)
-rept 2
 	add a
-endr
+	add a
 	ld b, a
 	ld a, d
 	and (1 << MINERALBADGE)
@@ -7203,9 +7188,8 @@
 	ld a, b
 	srl b
 	call c, BoostStat
-rept 2
 	inc hl
-endr
+	inc hl
 ; Check every other badge.
 	srl b
 	dec c
@@ -7334,9 +7318,8 @@
 
 	; a * 5 + 1
 	ld c, a
-rept 2
 	add a
-endr
+	add a
 	add c
 	inc a
 
@@ -7377,7 +7360,7 @@
 	push bc
 	push de
 	push hl
-	ld b, SCGB_01
+	ld b, SCGB_BATTLE_COLORS
 	call GetSGBLayout
 	call SetPalettes
 	call DelayFrame
@@ -7423,6 +7406,7 @@
 	and a
 	pop bc
 	jp z, .skip_stats
+
 	ld hl, MON_STAT_EXP + 1
 	add hl, bc
 	ld d, h
@@ -7472,9 +7456,8 @@
 	ld [de], a
 
 .skip
-rept 2
 	inc de
-endr
+	inc de
 	dec c
 	jr nz, .loop1
 	xor a
@@ -7534,7 +7517,7 @@
 	push bc
 	call LoadTileMapToTempTileMap
 	pop bc
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	ld d, [hl]
 	ld a, [hQuotient + 2]
@@ -7549,9 +7532,8 @@
 	inc [hl]
 	jr nz, .skip2
 	ld a, $ff
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 
 .skip2
@@ -7567,7 +7549,7 @@
 	ld d, MAX_LEVEL
 	callab CalcExpAtLevel
 	pop bc
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	push bc
 	ld a, [hQuotient]
@@ -7582,7 +7564,7 @@
 	sbc c
 	ld a, [hl]
 	sbc b
-	jr c, .max_exp
+	jr c, .not_max_exp
 	ld a, b
 	ld [hli], a
 	ld a, c
@@ -7590,7 +7572,7 @@
 	ld a, d
 	ld [hld], a
 
-.max_exp
+.not_max_exp
 	xor a ; PARTYMON
 	ld [MonType], a
 	predef CopyPkmnToTempMon
@@ -7604,7 +7586,7 @@
 	cp d
 	jp z, .skip_stats
 ; <NICKNAME> grew to level ##!
-	ld [wc719], a
+	ld [wTempLevel], a
 	ld a, [CurPartyLevel]
 	push af
 	ld a, d
@@ -7626,10 +7608,10 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	push bc
-	ld b, $1
+	ld b, TRUE
 	predef CalcPkmnStats
 	pop bc
 	pop de
@@ -7712,7 +7694,7 @@
 	ld c, $9
 	call TextBox
 	hlcoord 11, 1
-	ld bc, $0004
+	ld bc, 4
 	predef PrintTempMonStats
 	ld c, $1e
 	call DelayFrames
@@ -7725,7 +7707,7 @@
 	ld a, [CurPartyLevel]
 	push af
 	ld c, a
-	ld a, [wc719]
+	ld a, [wTempLevel]
 	ld b, a
 
 .level_loop
@@ -7767,23 +7749,25 @@
 ; 3f0d4
 
 Function3f0d4: ; 3f0d4
+; count number of battle participants
 	ld a, [wBattleParticipantsNotFainted]
 	ld b, a
-	ld c, $6
-	ld d, $0
-.asm_3f0dc
+	ld c, PARTY_LENGTH
+	ld d, 0
+.loop
 	xor a
 	srl b
 	adc d
 	ld d, a
 	dec c
-	jr nz, .asm_3f0dc
-	cp $2
+	jr nz, .loop
+	cp 2
 	ret c
+
 	ld [wd265], a
 	ld hl, EnemyMonBaseStats
-	ld c, $7
-.asm_3f0ef
+	ld c, EnemyMonEnd - EnemyMonBaseStats
+.loop2
 	xor a
 	ld [hDividend + 0], a
 	ld a, [hl]
@@ -7790,12 +7774,12 @@
 	ld [hDividend + 1], a
 	ld a, [wd265]
 	ld [hDivisor], a
-	ld b, $2
+	ld b, 2
 	call Divide
 	ld a, [hQuotient + 2]
 	ld [hli], a
 	dec c
-	jr nz, .asm_3f0ef
+	jr nz, .loop2
 	ret
 ; 3f106
 
@@ -7884,9 +7868,8 @@
 	inc [hl]
 	jr nz, .asm_3f186
 	ld a, $ff
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 
 .asm_3f186
@@ -7941,12 +7924,12 @@
 	call PrintPlayerHUD
 	ld hl, BattleMonNick
 	ld de, StringBuffer1
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	call Function3dfe
 	ld de, SFX_HIT_END_OF_EXP_BAR
 	call PlaySFX
-	callba Function8e79d
+	callba AnimateEndOfExpBar
 	call WaitSFX
 	ld hl, BattleText_StringBuffer1GrewToLevel
 	call StdBattleTextBox
@@ -8120,8 +8103,6 @@
 JumpText_YourFoesWeakGetmPkmn: ; 3f2e6
 	text_jump Text_YourFoesWeakGetmPkmn
 	start_asm
-; 3f2eb
-
 Function_TextJump_BattleMonNick01: ; 3f2eb
 	ld hl, TextJump_BattleMonNick01
 	ret
@@ -8132,18 +8113,13 @@
 	db "@"
 ; 3f2f4
 
-
-BattleMonNickComma_TextBox: ; 3f2f4
-	ld hl, TextJump_BattleMonNickComma
+WithdrawPkmnText: ; 3f2f4
+	ld hl, .WithdrawPkmnText
 	jp BattleTextBox
-; 3f2fa
 
-TextJump_BattleMonNickComma: ; 3f2fa
+.WithdrawPkmnText
 	text_jump Text_BattleMonNickComma
 	start_asm
-; 3f2ff
-
-WithdrawPkmnText: ; 3f2ff
 ; Print text to withdraw Pkmn
 ; depending on HP the message is different
 	push de
@@ -8401,7 +8377,7 @@
 	ld hl, BattleAnimCmd_RaiseSub
 	jr nz, GetBackpic_DoAnim ; substitute
 
-Function3f447: ; 3f447
+DropPlayerSub: ; 3f447
 	ld a, [wPlayerMinimized]
 	and a
 	ld hl, BattleAnimCmd_MinimizeOpp
@@ -8437,7 +8413,7 @@
 	ld hl, BattleAnimCmd_RaiseSub
 	jr nz, GetFrontpic_DoAnim
 
-Function3f486: ; 3f486
+DropEnemySub: ; 3f486
 	ld a, [wEnemyMinimized]
 	and a
 	ld hl, BattleAnimCmd_MinimizeOpp
@@ -8481,7 +8457,7 @@
 	ld a, [TimeOfDayPal]
 	push af
 	call BattleIntro
-	call SendOutFirstMons
+	call DoBattle
 	call ExitBattle
 	pop af
 	ld [TimeOfDayPal], a
@@ -8490,9 +8466,9 @@
 ; 3f4d9
 
 
-_SendOutFirstMons: ; 3f4d9
+_DoBattle: ; 3f4d9
 ; unreferenced
-	call SendOutFirstMons
+	call DoBattle
 	ret
 ; 3f4dd
 
@@ -8512,7 +8488,7 @@
 	callba ClearBattleRAM
 	call InitEnemy
 	call BackUpVBGMap2
-	ld b, SCGB_00
+	ld b, SCGB_BATTLE_GRAYSCALE
 	call GetSGBLayout
 	ld hl, rLCDC
 	res 6, [hl]
@@ -8531,7 +8507,7 @@
 	call ClearBox
 	call ClearSprites
 	ld a, [wBattleMode]
-	cp $1
+	cp WILD_BATTLE
 	call z, UpdateEnemyHUD
 	ld a, $1
 	ld [hBGMapMode], a
@@ -8560,9 +8536,9 @@
 BackUpVBGMap2: ; 3f568
 	ld a, [rSVBK]
 	push af
-	ld a, $6 ; BANK(w6_d000)
+	ld a, $6 ; BANK(wDecompressScratch)
 	ld [rSVBK], a
-	ld hl, w6_d000
+	ld hl, wDecompressScratch
 	ld bc, $40 tiles ; VBGMap3 - VBGMap2
 	ld a, $2
 	call ByteFill
@@ -8570,7 +8546,7 @@
 	push af
 	ld a, $1
 	ld [rVBK], a
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	hlbgcoord 0, 0 ; VBGMap2
 	lb bc, BANK(BackUpVBGMap2), $40
 	call Request2bpp
@@ -8586,7 +8562,7 @@
 	callba MobileFn_10606a
 	xor a
 	ld [TempEnemyMonSpecies], a
-	callab Function3957b
+	callab GetTrainerAttributes
 	callab ReadTrainerParty
 
 	ld a, [TrainerClass]
@@ -8637,16 +8613,16 @@
 ; 3f607
 
 InitEnemyWildmon: ; 3f607
-	ld a, $1
+	ld a, WILD_BATTLE
 	ld [wBattleMode], a
 	callba MobileFn_10605d
 	call LoadEnemyMon
 	ld hl, EnemyMonMoves
-	ld de, wc735
+	ld de, wWildMonMoves
 	ld bc, NUM_MOVES
 	call CopyBytes
 	ld hl, EnemyMonPP
-	ld de, wc739
+	ld de, wWildMonPP
 	ld bc, NUM_MOVES
 	call CopyBytes
 	ld hl, EnemyMonDVs
@@ -8654,11 +8630,11 @@
 	ld a, [CurPartySpecies]
 	cp UNOWN
 	jr nz, .skip_unown
-	ld a, [wdef4]
+	ld a, [wFirstUnownSeen]
 	and a
 	jr nz, .skip_unown
 	ld a, [UnownLetter]
-	ld [wdef4], a
+	ld [wFirstUnownSeen], a
 .skip_unown
 	ld de, VTiles2
 	predef FrontpicPredef
@@ -8725,12 +8701,12 @@
 
 
 ExitBattle: ; 3f69e
-	call Function3f6a5
+	call .HandleEndOfBattle
 	call CleanUpBattleRAM
 	ret
 ; 3f6a5
 
-Function3f6a5: ; 3f6a5
+.HandleEndOfBattle: ; 3f6a5
 	ld a, [wLinkMode]
 	and a
 	jr z, .not_linked
@@ -8737,7 +8713,7 @@
 	call ShowLinkBattleParticipantsAfterEnd
 	ld c, 150
 	call DelayFrames
-	call Function3f77c
+	call DetermineMobileBattleResult
 	ret
 
 .not_linked
@@ -8746,14 +8722,14 @@
 	ret nz
 	call CheckPayDay
 	xor a
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	predef EvolveAfterBattle
-	callba Function2ed44
+	callba GivePokerusAndConvertBerries
 	ret
 ; 3f6d0
 
 CleanUpBattleRAM: ; 3f6d0
-	call Function3f998
+	call BattleEnd_HandleRoamMons
 	xor a
 	ld [Danger], a
 	ld [wBattleMode], a
@@ -8764,7 +8740,7 @@
 	ld [wFailedToFlee], a
 	ld [wNumFleeAttempts], a
 	ld [wForcedSwitch], a
-	ld [wd0d8], a
+	ld [wPartyMenuCursor], a
 	ld [wKeyItemsPocketCursor], a
 	ld [wItemsPocketCursor], a
 	ld [wd0d2], a
@@ -8803,9 +8779,8 @@
 	rl [hl]
 	jr nc, .okay
 	ld a, $ff
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 
 .okay
@@ -8812,7 +8787,7 @@
 	ld hl, wPayDayMoney + 2
 	ld de, Money + 2
 	call AddBattleMoneyToAccount
-	ld hl, BattleText_PlayerPickuedUpPayDayMoney
+	ld hl, BattleText_PlayerPickedUpPayDayMoney
 	call StdBattleTextBox
 	ld a, [InBattleTowerBattle]
 	bit 0, a
@@ -8835,7 +8810,7 @@
 	ret
 ; 3f77c
 
-Function3f77c: ; 3f77c
+DetermineMobileBattleResult: ; 3f77c
 	callba CheckMobileBattleError
 	jp c, .Mobile_InvalidBattle
 	call IsMobileBattle2
@@ -8937,7 +8912,7 @@
 	xor a
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
-	call Function3200
+	call WaitBGMap2
 	ld b, SCGB_08
 	call GetSGBLayout
 	call SetPalettes
@@ -9083,19 +9058,19 @@
 ; 3f998
 
 
-Function3f998: ; 3f998
+BattleEnd_HandleRoamMons: ; 3f998
 	ld a, [BattleType]
 	cp BATTLETYPE_ROAMING
-	jr nz, .asm_3f9c4
+	jr nz, .not_roaming
 	ld a, [wBattleResult]
 	and $f
-	jr z, .asm_3f9af
+	jr z, .caught_or_defeated_roam_mon
 	call GetRoamMonHP
 	ld a, [EnemyMonHP + 1]
 	ld [hl], a
-	jr .asm_3f9ca
+	jr .update_roam_mons
 
-.asm_3f9af
+.caught_or_defeated_roam_mon
 	call GetRoamMonHP
 	ld [hl], $0
 	call GetRoamMonMapGroup
@@ -9106,12 +9081,12 @@
 	ld [hl], $0
 	ret
 
-.asm_3f9c4
+.not_roaming
 	call BattleRandom
 	and $f
 	ret nz
 
-.asm_3f9ca
+.update_roam_mons
 	callab UpdateRoamMons
 	ret
 ; 3f9d1
@@ -9205,13 +9180,11 @@
 	ld d, 5
 .loop
 	push hl
-rept 2
 	inc hl
-endr
+	inc hl
 	ld a, [hl]
-rept 2
 	dec hl
-endr
+	dec hl
 	and a
 	jr z, .copy
 	push de
@@ -9311,9 +9284,8 @@
 	ld c, $1
 .loop2
 	ld a, b
-rept 2
 	add b
-endr
+	add b
 	ld e, a
 	ld d, $0
 	ld hl, wd002
@@ -9320,9 +9292,8 @@
 	add hl, de
 	push hl
 	ld a, c
-rept 2
 	add c
-endr
+	add c
 	ld e, a
 	ld d, $0
 	ld hl, wd002
@@ -9427,7 +9398,7 @@
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
-	callba SlideBattlePics
+	callba BattleIntroSlidingPics
 	ld a, $1
 	ld [hBGMapMode], a
 	ld a, $31
@@ -9440,7 +9411,7 @@
 	ld [rWY], a
 	call WaitBGMap
 	call HideSprites
-	ld b, SCGB_01
+	ld b, SCGB_BATTLE_COLORS
 	call GetSGBLayout
 	call SetPalettes
 	ld a, $90
@@ -9456,12 +9427,12 @@
 	ld a, $6
 	ld [rSVBK], a
 
-	ld hl, w6_d000
-	ld bc, w6_d400 - w6_d000
+	ld hl, wDecompressScratch
+	ld bc, wBackupAttrMap - wDecompressScratch
 	ld a, " "
 	call ByteFill
 
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	hlbgcoord 0, 0
 	lb bc, BANK(.BlankBGMap), $40
 	call Request2bpp
@@ -9479,7 +9450,7 @@
 
 
 GetTrainerBackpic: ; 3fbff
-; Load the player character's backpic (6x6) into VRAM starting from $9310.
+; Load the player character's backpic (6x6) into VRAM starting from VTiles2 tile $31.
 
 ; Special exception for Dude.
 	ld b, BANK(DudeBackpic)
@@ -9594,11 +9565,11 @@
 	jr nc, .not_shiny
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld a, 1
 	ld [hBattleTurn], a
 	ld a, 1
-	ld [wKickCounter], a
+	ld [wBattleAnimParam], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 
@@ -9613,7 +9584,7 @@
 	ld d, $0
 	ld e, ANIM_MON_NORMAL
 	predef AnimateFrontpic
-	jr .skip_cry
+	jr .skip_cry ; cry is played during the animation
 
 .cry_no_anim
 	ld a, $0f
@@ -9626,7 +9597,7 @@
 	cp BATTLETYPE_FISH
 	jr nz, .NotFishing
 
-	callba MobileFn_106086
+	callba MobileFn_106086 ; update fishing records?
 
 	ld hl, HookedPokemonAttackedText
 	jr .PlaceBattleStartText
@@ -9642,7 +9613,7 @@
 
 .PlaceBattleStartText
 	push hl
-	callba Function2c000
+	callba BattleStart_TrainerHuds
 	pop hl
 	call StdBattleTextBox
 
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -1,11 +1,12 @@
 DoPlayerTurn: ; 34000
 	call SetPlayerTurn
 
-	ld a, [wd0ec]
+	ld a, [wPlayerAction]
 	and a
 	ret nz
 
 	jr DoTurn
+
 ; 3400a
 
 
@@ -50,9 +51,8 @@
 	ld c, a
 	ld b, 0
 	ld hl, MoveEffectsPointers
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, BANK(MoveEffectsPointers)
 	call GetFarHalfword
 
@@ -101,9 +101,8 @@
 	ld c, a
 	ld b, 0
 	ld hl, BattleCommandPointers
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	pop bc
 
 	ld a, BANK(BattleCommandPointers)
@@ -115,6 +114,7 @@
 
 .DoMoveEffectCommand
 	jp [hl]
+
 ; 34084
 
 
@@ -172,7 +172,7 @@
 	jr z, .woke_up
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_SLP
 	call FarPlayBattleAnimation
 	jr .fast_asleep
@@ -276,7 +276,7 @@
 	ld hl, IsConfusedText
 	call StdBattleTextBox
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_CONFUSED
 	call FarPlayBattleAnimation
 
@@ -305,7 +305,7 @@
 	ld hl, InLoveWithText
 	call StdBattleTextBox
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_IN_LOVE
 	call FarPlayBattleAnimation
 
@@ -352,6 +352,7 @@
 	call StdBattleTextBox
 	call CantMove
 	jp EndTurn
+
 ; 341f0
 
 
@@ -380,6 +381,7 @@
 	res SUBSTATUS_UNDERGROUND, [hl]
 	res SUBSTATUS_FLYING, [hl]
 	jp AppearUserRaiseSub
+
 ; 34216
 
 
@@ -388,6 +390,7 @@
 	call BattleCommand_SwitchTurn
 	call CantMove
 	jp BattleCommand_SwitchTurn
+
 ; 3421f
 
 
@@ -420,7 +423,7 @@
 	ld hl, FastAsleepText
 	call StdBattleTextBox
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_SLP
 	call FarPlayBattleAnimation
 	jr .fast_asleep
@@ -521,7 +524,7 @@
 	call StdBattleTextBox
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_CONFUSED
 	call FarPlayBattleAnimation
 
@@ -542,7 +545,7 @@
 	call BattleCommand_DamageCalc
 	call BattleCommand_LowerSub
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 
 	; Flicker the monster pic unless flying or underground.
 	ld de, ANIM_HIT_CONFUSION
@@ -567,7 +570,7 @@
 	ld hl, InLoveWithText
 	call StdBattleTextBox
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld de, ANIM_IN_LOVE
 	call FarPlayBattleAnimation
 
@@ -623,6 +626,7 @@
 	ld a, $1
 	ld [wTurnEnded], a
 	jp ResetDamage
+
 ; 3438d
 
 
@@ -640,6 +644,7 @@
 
 	ld hl, DisabledMoveText
 	jp StdBattleTextBox
+
 ; 343a5
 
 
@@ -656,7 +661,7 @@
 	call BattleCommand_LowerSub
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 
 	; Flicker the monster pic unless flying or underground.
 	ld de, ANIM_HIT_CONFUSION
@@ -672,6 +677,7 @@
 	ld c, $1
 	call PlayerHurtItself
 	jp BattleCommand_RaiseSub
+
 ; 343db
 
 
@@ -821,7 +827,7 @@
 	ld hl, WontObeyText
 	call StdBattleTextBox
 	call HitConfusion
-	jp .asm_3450c
+	jp .EndDisobedience
 
 
 .Nap
@@ -857,7 +863,7 @@
 
 .Print
 	call StdBattleTextBox
-	jp .asm_3450c
+	jp .EndDisobedience
 
 
 .UseInstead
@@ -912,7 +918,7 @@
 	ld a, 1
 	ld [AlreadyDisobeyed], a
 
-	ld a, [wcfa3]
+	ld a, [w2DMenuNumRows]
 	ld b, a
 
 ; Save the move we originally picked for afterward.
@@ -962,7 +968,7 @@
 	ld [CurMoveNum], a
 
 
-.asm_3450c
+.EndDisobedience
 	xor a
 	ld [LastPlayerMove], a
 	ld [LastEnemyCounterMove], a
@@ -974,6 +980,7 @@
 	ld [PlayerEncoreCount], a
 
 	jp EndMoveEffect
+
 ; 3451f
 
 
@@ -1003,6 +1010,7 @@
 
 	scf
 	ret
+
 ; 34541
 
 
@@ -1010,6 +1018,7 @@
 ; usedmovetext
 	callba DisplayUsedMoveText
 	ret
+
 ; 34548
 
 
@@ -1023,6 +1032,7 @@
 .end
 	and a
 	ret
+
 ; 34555
 
 
@@ -1064,9 +1074,8 @@
 	jp nz, EndMoveEffect
 
 	; SubStatus5
-rept 2
 	inc de
-endr
+	inc de
 
 	ld a, [de]
 	bit SUBSTATUS_TRANSFORMED, a
@@ -1151,6 +1160,7 @@
 	call StdBattleTextBox
 	ld b, 1
 	ret
+
 ; 34602
 
 .continuousmoves ; 34602
@@ -1194,6 +1204,7 @@
 .mimic
 	and a
 	ret
+
 ; 34631
 
 
@@ -1262,9 +1273,8 @@
 	jr nc, .ScopeLens
 
 ; +2 critical level
-rept 2
 	inc c
-endr
+	inc c
 
 .ScopeLens
 	push bc
@@ -1324,6 +1334,7 @@
 	ld [hld], a
 	ld [hl], a
 	ret
+
 ; 346cd
 
 
@@ -1333,6 +1344,7 @@
 	ld hl, wKickCounter
 	inc [hl]
 	ret
+
 ; 346d2
 
 
@@ -1506,9 +1518,8 @@
 	pop hl
 
 .SkipType
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .TypesLoop
 
 .end
@@ -1520,6 +1531,7 @@
 	or b
 	ld [TypeModifier], a
 	ret
+
 ; 347c8
 
 
@@ -1558,6 +1570,7 @@
 	bit SUBSTATUS_IDENTIFIED, a
 	jr nz, .End
 	jr .TypesLoop
+
 .Next
 	cp d
 	jr nz, .Nope
@@ -1567,11 +1580,13 @@
 	cp c
 	jr z, .Yup
 	jr .Nope2
+
 .Nope
 	inc hl
 .Nope2
 	inc hl
 	jr .TypesLoop
+
 .Yup
 	xor a
 	ld [hDividend + 0], a
@@ -1597,6 +1612,7 @@
 	pop de
 	pop hl
 	ret
+
 ; 34833
 
 
@@ -1618,6 +1634,7 @@
 .reset
 	ld [wTypeMatchup], a
 	ret
+
 ; 3484e
 
 INCLUDE "battle/ai/switch.asm"
@@ -1679,6 +1696,7 @@
 	ld a, [hQuotient + 2]
 	ld [hl], a
 	ret
+
 ; 34d32
 
 
@@ -1729,16 +1747,16 @@
 	cp HELD_BRIGHTPOWDER
 	ld a, c ; % miss
 	pop bc
-	jr nz, .asm_34d81
+	jr nz, .skip_brightpowder
 
 	ld c, a
 	ld a, b
 	sub c
 	ld b, a
-	jr nc, .asm_34d81
+	jr nc, .skip_brightpowder
 	ld b, 0
 
-.asm_34d81
+.skip_brightpowder
 	ld a, b
 	cp $ff
 	jr z, .Hit
@@ -1834,7 +1852,7 @@
 .DrainSub
 ; Return z if using an HP drain move on a substitute.
 	call CheckSubstituteOpp
-	jr z, .asm_34e00
+	jr z, .not_draining_sub
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
@@ -1844,7 +1862,7 @@
 	cp EFFECT_DREAM_EATER
 	ret z
 
-.asm_34e00
+.not_draining_sub
 	ld a, 1
 	and a
 	ret
@@ -1916,7 +1934,7 @@
 	ld a, [EnemyEvaLevel]
 	ld c, a
 
-	jr z, .asm_34e60
+	jr z, .got_acc_eva
 
 	ld hl, wEnemyMoveStruct + MOVE_ACC
 	ld a, [EnemyAccLevel]
@@ -1924,9 +1942,9 @@
 	ld a, [PlayerEvaLevel]
 	ld c, a
 
-.asm_34e60
+.got_acc_eva
 	cp b
-	jr c, .asm_34e6b
+	jr c, .eva_less_than_acc
 
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
@@ -1933,8 +1951,8 @@
 	bit SUBSTATUS_IDENTIFIED, a
 	ret nz
 
-.asm_34e6b
-	ld a, $e
+.eva_less_than_acc
+	ld a, 14
 	sub c
 	ld c, a
 	xor a
@@ -1943,9 +1961,9 @@
 	ld a, [hl]
 	ld [hMultiplicand + 2], a
 	push hl
-	ld d, $2
+	ld d, 2
 
-.asm_34e7a
+.accuracy_loop
 	push bc
 	ld hl, .AccProb
 	dec b
@@ -1959,29 +1977,29 @@
 	call Multiply
 	ld a, [hl]
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
 	ld a, [hQuotient + 2]
 	ld b, a
 	ld a, [hQuotient + 1]
 	or b
-	jr nz, .asm_34ea2
+	jr nz, .min_accuracy
 	ld [hQuotient + 1], a
 	ld a, $1
 	ld [hQuotient + 2], a
 
-.asm_34ea2
+.min_accuracy
 	ld b, c
 	dec d
-	jr nz, .asm_34e7a
+	jr nz, .accuracy_loop
 
 	ld a, [hQuotient + 1]
 	and a
 	ld a, [hQuotient + 2]
-	jr z, .asm_34eaf
+	jr z, .finish_accuracy
 	ld a, $ff
 
-.asm_34eaf
+.finish_accuracy
 	pop hl
 	ld [hl], a
 	ret
@@ -2016,9 +2034,9 @@
 	ld hl, wPlayerMoveStruct + MOVE_CHANCE
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_34ee1
+	jr z, .got_move_chance
 	ld hl, wEnemyMoveStruct + MOVE_CHANCE
-.asm_34ee1
+.got_move_chance
 
 	call BattleRandom
 	cp [hl]
@@ -2030,6 +2048,7 @@
 	ld [EffectFailed], a
 	and a
 	ret
+
 ; 34eee
 
 
@@ -2071,7 +2090,7 @@
 	jr c, .mimic_anims
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	inc a
 	ld [wKickCounter], a
@@ -2100,6 +2119,7 @@
 	ld a, 0
 	ld [wc73e], a
 	ret
+
 ; 34f57
 
 
@@ -2108,6 +2128,7 @@
 	call BattleCommand_LowerSub
 	call BattleCommand_HitTargetNoSub
 	jp BattleCommand_RaiseSub
+
 ; 34f60
 
 
@@ -2125,7 +2146,7 @@
 	ld a, BATTLEANIM_PLAYER_DAMAGE
 
 .got_rollout_count
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_MULTI_HIT
@@ -2159,6 +2180,7 @@
 .fly_dig
 ; clear sprite
 	jp AppearUserLowerSub
+
 .multihit
 .conversion
 .doublehit
@@ -2177,8 +2199,9 @@
 	pop af
 	jp z, PlayFXAnimID
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	jp PlayFXAnimID
+
 ; 34fd1
 
 
@@ -2189,6 +2212,7 @@
 
 	xor a
 	jr BattleCommand_StatUpDownAnim
+
 ; 34fdb
 
 
@@ -2208,7 +2232,7 @@
 
 
 BattleCommand_StatUpDownAnim: ; 34feb
-	ld [wcfca], a
+	ld [wNumHits], a
 	xor a
 	ld [wKickCounter], a
 	ld a, BATTLE_VARS_MOVE_ANIM
@@ -2216,6 +2240,7 @@
 	ld e, a
 	ld d, 0
 	jp PlayFXAnimID
+
 ; 34ffd
 
 
@@ -2226,6 +2251,7 @@
 	xor 1
 	ld [hBattleTurn], a
 	ret
+
 ; 35004
 
 
@@ -2241,12 +2267,13 @@
 	jp c, BattleCommand_RaiseSubNoAnim
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	ld a, $2
 	ld [wKickCounter], a
 	ld a, SUBSTITUTE
 	jp LoadAnim
+
 ; 35023
 
 
@@ -2291,6 +2318,7 @@
 	res SUBSTATUS_FLYING, [hl]
 	call AppearUserRaiseSub
 	jp EndMoveEffect
+
 ; 3505e
 
 
@@ -2382,6 +2410,7 @@
 	inc de
 	ld [de], a
 	ret
+
 ; 350e4
 
 
@@ -2452,6 +2481,7 @@
 	ld l, e
 .not_protected
 	jp StdBattleTextBox
+
 ; 35165
 
 
@@ -2464,6 +2494,7 @@
 	and $7f
 	jp z, PrintDoesntAffect
 	jp PrintButItFailed
+
 ; 35175
 
 
@@ -2512,6 +2543,7 @@
 	xor a
 	ld [hl], a
 	ret
+
 ; 351a5
 
 
@@ -2539,6 +2571,7 @@
 	ld hl, NotVeryEffectiveText
 .print
 	jp StdBattleTextBox
+
 ; 351c0
 
 
@@ -2550,10 +2583,10 @@
 	ld hl, EnemyMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_351cb
+	jr z, .got_hp
 	ld hl, BattleMonHP
 
-.asm_351cb
+.got_hp
 	ld a, [hli]
 	or [hl]
 	ret nz
@@ -2561,7 +2594,7 @@
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVar
 	bit SUBSTATUS_DESTINY_BOND, a
-	jr z, .asm_35231
+	jr z, .no_dbond
 
 	ld hl, TookDownWithItText
 	call StdBattleTextBox
@@ -2571,13 +2604,13 @@
 	ld hl, EnemyMonMaxHP + 1
 	bccoord 2, 2 ; hp bar
 	ld a, 0
-	jr nz, .asm_351f2
+	jr nz, .got_max_hp
 	ld hl, BattleMonMaxHP + 1
 	bccoord 10, 9 ; hp bar
 	ld a, 1
 
-.asm_351f2
-	ld [wd10a], a
+.got_max_hp
+	ld [wWhichHPBar], a
 	ld a, [hld]
 	ld [Buffer1], a
 	ld a, [hld]
@@ -2599,7 +2632,7 @@
 
 	call BattleCommand_SwitchTurn
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	inc a
 	ld [wKickCounter], a
@@ -2607,27 +2640,28 @@
 	call LoadAnim
 	call BattleCommand_SwitchTurn
 
-	jr .asm_3524d ; 3522f $1c
+	jr .finish
 
-.asm_35231
+.no_dbond
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_MULTI_HIT
-	jr z, .asm_3524a
+	jr z, .multiple_hit_raise_sub
 	cp EFFECT_DOUBLE_HIT
-	jr z, .asm_3524a
+	jr z, .multiple_hit_raise_sub
 	cp EFFECT_TWINEEDLE
-	jr z, .asm_3524a
+	jr z, .multiple_hit_raise_sub
 	cp EFFECT_TRIPLE_KICK
-	jr z, .asm_3524a
+	jr z, .multiple_hit_raise_sub
 	cp EFFECT_BEAT_UP
-	jr nz, .asm_3524d
+	jr nz, .finish
 
-.asm_3524a
+.multiple_hit_raise_sub
 	call BattleCommand_RaiseSub
 
-.asm_3524d
+.finish
 	jp EndMoveEffect
+
 ; 35250
 
 
@@ -2635,6 +2669,7 @@
 ; buildopponentrage
 
 	jp .start
+
 .start
 	ld a, [AttackMissed]
 	and a
@@ -2660,6 +2695,7 @@
 	ld hl, RageBuildingText
 	call StdBattleTextBox
 	jp BattleCommand_SwitchTurn
+
 ; 3527b
 
 
@@ -2675,21 +2711,22 @@
 	ld a, [hBattleTurn]
 	and a
 	ld a, [wPlayerRageCounter]
-	jr z, .asm_35290
+	jr z, .rage_loop
 	ld a, [wEnemyRageCounter]
-.asm_35290
+.rage_loop
 	and a
-	jr z, .asm_3529a
+	jr z, .done
 	dec a
 	add hl, bc
-	jr nc, .asm_35290
+	jr nc, .rage_loop
 	ld hl, -1
-.asm_3529a
+.done
 	ld a, h
 	ld [CurDamage], a
 	ld a, l
 	ld [CurDamage + 1], a
 	ret
+
 ; 352a3
 
 
@@ -2699,11 +2736,11 @@
 	ld a, [BattleScriptBufferLoc + 1]
 	ld h, a
 	ld a, $ff
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 	ret
+
 ; 352b1
 
 
@@ -2736,12 +2773,13 @@
 	srl b
 	ld a, b
 	and a
-	jr nz, .asm_352d8
+	jr nz, .done
 	inc b
-.asm_352d8
+.done
 	scf
 	rr c
 	ret
+
 ; 352dc
 
 
@@ -2837,6 +2875,7 @@
 	ld a, 1
 	and a
 	ret
+
 ; 3534d
 
 
@@ -2882,6 +2921,7 @@
 .done
 	ld b, l
 	ret
+
 ; 35378
 
 
@@ -2936,6 +2976,7 @@
 	pop bc
 	pop hl
 	ret
+
 ; 353b5
 
 
@@ -2953,6 +2994,7 @@
 	pop de
 	pop bc
 	ret
+
 ; 353c3
 
 
@@ -2970,6 +3012,7 @@
 	pop de
 	pop bc
 	ret
+
 ; 353d1
 
 
@@ -3012,6 +3055,7 @@
 	sla l
 	rl h
 	ret
+
 ; 353f6
 
 
@@ -3092,6 +3136,7 @@
 	ld a, 1
 	and a
 	ret
+
 ; 35461
 
 
@@ -3275,6 +3320,7 @@
 	ld a, [wEnemyMoveStruct + MOVE_POWER]
 	ld d, a
 	ret
+
 ; 355b0
 
 
@@ -3281,6 +3327,7 @@
 .beatup_fail: ; 355b0
 	ld b, buildopponentrage_command
 	jp SkipToBattleCommand
+
 ; 355b5
 
 
@@ -3290,6 +3337,7 @@
 	ret nz
 
 	jp PrintButItFailed
+
 ; 355bd
 
 
@@ -3300,10 +3348,10 @@
 	ld a, [hBattleTurn]
 	and a
 	ld hl, PartyMon1Species
-	jr z, .asm_355cc
+	jr z, .got_species
 	ld hl, OTPartyMon1Species
 
-.asm_355cc
+.got_species
 	ld a, [wd002]
 	add hl, bc
 	call GetPartyLocation
@@ -3318,6 +3366,7 @@
 	ret z
 
 	jp ResetDamage
+
 ; 355dd
 
 
@@ -3356,6 +3405,7 @@
 	pop af
 	ld e, a
 	ret
+
 ; 35612
 
 
@@ -3401,9 +3451,8 @@
 
 	xor a
 	ld hl, hDividend
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 
 ; Level * 2
@@ -3424,9 +3473,8 @@
 	pop bc
 
 ; + 2
-rept 2
 	inc [hl]
-endr
+	inc [hl]
 
 ; * bp
 	inc hl
@@ -3592,6 +3640,7 @@
 	ld [hProduct + 3], a
 
 	ret
+
 ; 35703
 
 
@@ -3659,18 +3708,18 @@
 .psywave_loop
 	call BattleRandom
 	and a
-	jr z, .psywave_loop ; 35761 $fa
+	jr z, .psywave_loop
 	cp b
-	jr nc, .psywave_loop ; 35764 $f7
+	jr nc, .psywave_loop
 	ld b, a
 	ld a, $0
-	jr .got_power ; 35769 $21
+	jr .got_power
 
 .super_fang
 	ld hl, EnemyMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .got_hp ; 35771 $3
+	jr z, .got_hp
 	ld hl, BattleMonHP
 .got_hp
 	ld a, [hli]
@@ -3682,12 +3731,12 @@
 	ld a, b
 	pop bc
 	and a
-	jr nz, .got_power ; 35781 $9
+	jr nz, .got_power
 	or b
 	ld a, $0
-	jr nz, .got_power ; 35786 $4
+	jr nz, .got_power
 	ld b, $1
-	jr .got_power ; 3578a $0
+	jr .got_power
 
 .got_power
 	ld hl, CurDamage
@@ -3699,7 +3748,7 @@
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .reversal_got_hp ; 35798 $3
+	jr z, .reversal_got_hp
 	ld hl, EnemyMonHP
 .reversal_got_hp
 	xor a
@@ -3844,6 +3893,7 @@
 	xor a
 	ld [AttackMissed], a
 	ret
+
 ; 35864
 
 
@@ -3870,12 +3920,12 @@
 	jp z, .failed
 	ld b, a
 
-.asm_3588e
+.got_move
 	ld a, [hli]
 	cp b
-	jr nz, .asm_3588e
+	jr nz, .got_move
 
-	ld bc, $0005
+	ld bc, BattleMonPP - BattleMonMoves - 1
 	add hl, bc
 	ld a, [hl]
 	and $3f
@@ -3895,10 +3945,10 @@
 endr
 	ld [de], a
 	call CheckOpponentWentFirst
-	jr nz, .asm_3591a
+	jr nz, .finish_move
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_358ef
+	jr z, .force_last_enemy_move
 
 	push hl
 	ld a, [LastPlayerMove]
@@ -3905,14 +3955,14 @@
 	ld b, a
 	ld c, 0
 	ld hl, BattleMonMoves
-.asm_358cc
+.find_player_move
 	ld a, [hli]
 	cp b
-	jr z, .asm_358dd
+	jr z, .got_player_move
 	inc c
 	ld a, c
 	cp NUM_MOVES
-	jr c, .asm_358cc
+	jr c, .find_player_move
 	pop hl
 	res SUBSTATUS_ENCORED, [hl]
 	xor a
@@ -3919,9 +3969,8 @@
 	ld [de], a
 	jr .failed
 
-.asm_358dd
+.got_player_move
 	pop hl
-
 	ld a, c
 	ld [CurMoveNum], a
 	ld a, b
@@ -3929,30 +3978,30 @@
 	dec a
 	ld de, wPlayerMoveStruct
 	call GetMoveData
-	jr .asm_3591a
+	jr .finish_move
 
-.asm_358ef
+.force_last_enemy_move
 	push hl
 	ld a, [LastEnemyMove]
 	ld b, a
 	ld c, 0
 	ld hl, EnemyMonMoves
-.asm_358f9
+.find_enemy_move
 	ld a, [hli]
 	cp b
-	jr z, .asm_3590a
+	jr z, .got_enemy_move
 	inc c
 	ld a, c
 	cp NUM_MOVES
-	jr c, .asm_358f9
+	jr c, .find_enemy_move
 	pop hl
 	res SUBSTATUS_ENCORED, [hl]
 	xor a
 	ld [de], a
 	jr .failed
-.asm_3590a
-	pop hl
 
+.got_enemy_move
+	pop hl
 	ld a, c
 	ld [CurEnemyMoveNum], a
 	ld a, b
@@ -3961,7 +4010,7 @@
 	ld de, wEnemyMoveStruct
 	call GetMoveData
 
-.asm_3591a
+.finish_move
 	call AnimateCurrentMove
 	ld hl, GotAnEncoreText
 	jp StdBattleTextBox
@@ -3968,6 +4017,7 @@
 
 .failed
 	jp PrintDidntAffect2
+
 ; 35926
 
 
@@ -3976,15 +4026,15 @@
 
 	ld a, [AttackMissed]
 	and a
-	jp nz, PainSplit_PrintButItFailed
+	jp nz, .ButItFailed
 	call CheckSubstituteOpp
-	jp nz, PainSplit_PrintButItFailed
+	jp nz, .ButItFailed
 	call AnimateCurrentMove
 	ld hl, BattleMonMaxHP + 1
 	ld de, EnemyMonMaxHP + 1
 	call .PlayerShareHP
 	ld a, $1
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	hlcoord 10, 9
 	predef AnimateHPBar
 	ld hl, EnemyMonHP
@@ -3998,7 +4048,7 @@
 	ld [Buffer1], a
 	call .EnemyShareHP
 	xor a
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	call ResetDamage
 	hlcoord 2, 2
 	predef AnimateHPBar
@@ -4017,9 +4067,8 @@
 	ld [Buffer3], a
 	ld a, [hl]
 	ld [Buffer4], a
-rept 2
 	dec de
-endr
+	dec de
 	ld a, [de]
 	dec de
 	add b
@@ -4062,10 +4111,12 @@
 	ld [hli], a
 	ld [Buffer6], a
 	ret
+
 ; 359cd
 
-PainSplit_PrintButItFailed: ; 359cd
+.ButItFailed
 	jp PrintDidntAffect2
+
 ; 359d0
 
 
@@ -4080,6 +4131,7 @@
 	ld [AttackMissed], a
 	call FailSnore
 	jp EndMoveEffect
+
 ; 359e6
 
 
@@ -4088,17 +4140,17 @@
 
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_35a50
+	jr nz, .failed
 	ld hl, BattleMonType1
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_359f7
+	jr z, .got_type
 	ld hl, EnemyMonType1
-.asm_359f7
+.got_type
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	and a
-	jr z, .asm_35a50
+	jr z, .failed
 	push hl
 	dec a
 	ld hl, Moves + MOVE_TYPE
@@ -4106,20 +4158,20 @@
 	ld d, a
 	pop hl
 	cp CURSE_T
-	jr z, .asm_35a50
+	jr z, .failed
 	call AnimateCurrentMove
 	call BattleCommand_SwitchTurn
 
-.asm_35a13
+.loop
 	call BattleRandom
 	and $1f
 	cp UNUSED_TYPES
-	jr c, .asm_35a24
+	jr c, .okay
 	cp UNUSED_TYPES_END
-	jr c, .asm_35a13
+	jr c, .loop
 	cp TYPES_END
-	jr nc, .asm_35a13
-.asm_35a24
+	jr nc, .loop
+.okay
 	ld [hli], a
 	ld [hld], a
 	push hl
@@ -4136,7 +4188,7 @@
 	pop hl
 	ld a, [wTypeMatchup]
 	cp 10
-	jr nc, .asm_35a13
+	jr nc, .loop
 	call BattleCommand_SwitchTurn
 
 	ld a, [hl]
@@ -4145,8 +4197,9 @@
 	ld hl, TransformedTypeText
 	jp StdBattleTextBox
 
-.asm_35a50
+.failed
 	jp FailConversion2
+
 ; 35a53
 
 
@@ -4171,6 +4224,7 @@
 .fail
 	call AnimateFailedMove
 	jp PrintDidntAffect
+
 ; 35a74
 
 
@@ -4291,6 +4345,7 @@
 .fail
 	call AnimateFailedMove
 	jp PrintDidntAffect
+
 ; 35b16
 
 
@@ -4319,6 +4374,7 @@
 	pop hl
 	ld [hl], a
 	ret
+
 ; 35b33
 
 
@@ -4334,11 +4390,11 @@
 	ld hl, BattleMonMoves + 1
 	ld a, [DisabledMove]
 	ld d, a
-	jr z, .asm_35b4f
+	jr z, .got_moves
 	ld hl, EnemyMonMoves + 1
 	ld a, [EnemyDisabledMove]
 	ld d, a
-.asm_35b4f
+.got_moves
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVar
 	and SLP
@@ -4346,10 +4402,10 @@
 	ld a, [hl]
 	and a
 	jr z, .fail
-	call .asm_35ba9
+	call .safely_check_has_usable_move
 	jr c, .fail
 	dec hl
-.asm_35b62
+.sample_move
 	push hl
 	call BattleRandom
 	and 3 ; TODO factor in NUM_MOVES
@@ -4359,17 +4415,17 @@
 	ld a, [hl]
 	pop hl
 	and a
-	jr z, .asm_35b62
+	jr z, .sample_move
 	ld e, a
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp e
-	jr z, .asm_35b62
+	jr z, .sample_move
 	ld a, e
 	cp d
-	jr z, .asm_35b62
-	call .asm_35bdf
-	jr z, .asm_35b62
+	jr z, .sample_move
+	call .check_two_turn_move
+	jr z, .sample_move
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVarAddr
 	ld a, e
@@ -4390,24 +4446,24 @@
 	call AnimateFailedMove
 	jp TryPrintButItFailed
 
-.asm_35ba9
+.safely_check_has_usable_move
 	push hl
 	push de
 	push bc
-	call .asm_35bb3
+	call .check_has_usable_move
 	pop bc
 	pop de
 	pop hl
 	ret
 
-.asm_35bb3
+.check_has_usable_move
 	ld a, [hBattleTurn]
 	and a
 	ld a, [DisabledMove]
-	jr z, .asm_35bbe
+	jr z, .got_move_2
 
 	ld a, [EnemyDisabledMove]
-.asm_35bbe
+.got_move_2
 	ld b, a
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
@@ -4414,33 +4470,33 @@
 	ld c, a
 	dec hl
 	ld d, NUM_MOVES
-.asm_35bc8
+.loop2
 	ld a, [hl]
 	and a
-	jr z, .asm_35bdb
+	jr z, .carry
 
 	cp c
-	jr z, .asm_35bd7
+	jr z, .nope
 	cp b
-	jr z, .asm_35bd7
+	jr z, .nope
 
-	call .asm_35bdf
-	jr nz, .asm_35bdd
+	call .check_two_turn_move
+	jr nz, .no_carry
 
-.asm_35bd7
+.nope
 	inc hl
 	dec d
-	jr nz, .asm_35bc8
+	jr nz, .loop2
 
-.asm_35bdb
+.carry
 	scf
 	ret
 
-.asm_35bdd
+.no_carry
 	and a
 	ret
 
-.asm_35bdf
+.check_two_turn_move
 	push hl
 	push de
 	push bc
@@ -4465,6 +4521,7 @@
 	ret z
 	cp EFFECT_BIDE
 	ret
+
 ; 35bff
 
 
@@ -4477,6 +4534,7 @@
 	call AnimateCurrentMove
 	ld hl, DestinyBondEffectText
 	jp StdBattleTextBox
+
 ; 35c0f
 
 
@@ -4485,27 +4543,27 @@
 
 	ld a, [AttackMissed]
 	and a
-	jp nz, .asm_35c91
+	jp nz, .failed
 	ld bc, PARTYMON_STRUCT_LENGTH ; ????
 	ld hl, EnemyMonMoves
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35c24
+	jr z, .got_moves
 	ld hl, BattleMonMoves
-.asm_35c24
+.got_moves
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	and a
-	jr z, .asm_35c91
+	jr z, .failed
 	cp STRUGGLE
-	jr z, .asm_35c91
+	jr z, .failed
 	ld b, a
 	ld c, -1
-.asm_35c33
+.loop
 	inc c
 	ld a, [hli]
 	cp b
-	jr nz, .asm_35c33
+	jr nz, .loop
 	ld [wTypeMatchup], a
 	dec hl
 	ld b, 0
@@ -4515,21 +4573,20 @@
 	pop bc
 	ld a, [hl]
 	and $3f
-	jr z, .asm_35c91
+	jr z, .failed
 	push bc
 	call GetMoveName
 	call BattleRandom
 	and 3
-rept 2
 	inc a
-endr
+	inc a
 	ld b, a
 	ld a, [hl]
 	and $3f
 	cp b
-	jr nc, .asm_35c5b
+	jr nc, .deplete_pp
 	ld b, a
-.asm_35c5b
+.deplete_pp
 	ld a, [hl]
 	sub b
 	ld [hl], a
@@ -4544,18 +4601,18 @@
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVar
 	bit SUBSTATUS_TRANSFORMED, a
-	jr nz, .asm_35c82
+	jr nz, .transformed
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_35c81
+	jr nz, .not_wildmon
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_35c81
-	ld hl, wc739
+	jr nz, .not_wildmon
+	ld hl, wWildMonPP
 	add hl, bc
-.asm_35c81
+.not_wildmon
 	ld [hl], e
-.asm_35c82
+.transformed
 	push de
 	call AnimateCurrentMove
 	pop de
@@ -4563,8 +4620,10 @@
 	ld [wTypeMatchup], a
 	ld hl, SpiteEffectText
 	jp StdBattleTextBox
-.asm_35c91
+
+.failed
 	jp PrintDidntAffect2
+
 ; 35c94
 
 
@@ -4574,17 +4633,17 @@
 	ld hl, EnemyMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35c9f
+	jr z, .got_hp
 	ld hl, BattleMonHP
-.asm_35c9f
+.got_hp
 	ld de, CurDamage
-	ld c, $2
+	ld c, 2
 	push hl
 	push de
 	call StringCmp
 	pop de
 	pop hl
-	jr c, .asm_35cc7
+	jr c, .done
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -4592,23 +4651,25 @@
 	dec a
 	ld [de], a
 	inc a
-	jr nz, .asm_35cba
+	jr nz, .okay
 	dec de
 	ld a, [de]
 	dec a
 	ld [de], a
-.asm_35cba
+.okay
 	ld a, [CriticalHit]
 	cp $2
-	jr nz, .asm_35cc5
+	jr nz, .carry
 	xor a
 	ld [CriticalHit], a
-.asm_35cc5
+.carry
 	scf
 	ret
-.asm_35cc7
+
+.done
 	and a
 	ret
+
 ; 35cc9
 
 
@@ -4621,9 +4682,9 @@
 	ld de, PartyMon1Status
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35cdb
+	jr z, .got_status
 	ld de, OTPartyMon1Status
-.asm_35cdb
+.got_status
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVarAddr
 	xor a
@@ -4631,12 +4692,12 @@
 	ld h, d
 	ld l, e
 	ld bc, PARTYMON_STRUCT_LENGTH
-	ld d, PartyEnd - PartySpecies
-.asm_35ce9
+	ld d, PARTY_LENGTH
+.loop
 	ld [hl], a
 	add hl, bc
 	dec d
-	jr nz, .asm_35ce9
+	jr nz, .loop
 	call AnimateCurrentMove
 
 	ld hl, BellChimedText
@@ -4646,6 +4707,7 @@
 	and a
 	jp z, CalcPlayerStats
 	jp CalcEnemyStats
+
 ; 35d00
 
 
@@ -4672,6 +4734,7 @@
 	callab PlayBattleAnim
 
 	ret
+
 ; 35d1c
 
 
@@ -4729,10 +4792,11 @@
 	ld [Buffer5], a
 	hlcoord 2, 2
 	xor a
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 .did_no_damage
 	jp RefreshBattleHuds
+
 ; 35d7e
 
 
@@ -4788,10 +4852,11 @@
 	ld [Buffer1], a
 	hlcoord 10, 9
 	ld a, $1
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 .did_no_damage
 	jp RefreshBattleHuds
+
 ; 35de0
 
 
@@ -4852,6 +4917,7 @@
 	call RefreshBattleHuds
 .done
 	jp ResetDamage
+
 ; 35e40
 
 
@@ -4871,6 +4937,7 @@
 	call GetMoveData
 	call GetMoveName
 	jp CopyName1
+
 ; 35e5c
 
 
@@ -4944,6 +5011,7 @@
 	call AnimateFailedMove
 	pop hl
 	jp StdBattleTextBox
+
 ; 35ece
 
 
@@ -4974,6 +5042,7 @@
 .dont_fail
 	xor a
 	ret
+
 ; 35eee
 
 
@@ -5011,6 +5080,7 @@
 
 	callba UseHeldStatusHealingItem
 	ret
+
 ; 35f2c
 
 
@@ -5101,6 +5171,7 @@
 	call AnimateFailedMove
 	pop hl
 	jp StdBattleTextBox
+
 ; 35fc0
 
 
@@ -5108,6 +5179,7 @@
 	call AnimateCurrentMove
 	call PoisonOpponent
 	jp RefreshBattleHuds
+
 ; 35fc9
 
 
@@ -5124,6 +5196,7 @@
 	call GetBattleVar
 	cp EFFECT_TOXIC
 	ret
+
 ; 35fe1
 
 
@@ -5141,6 +5214,7 @@
 	ld a, [de]
 	cp POISON
 	ret
+
 ; 35ff5
 
 
@@ -5149,6 +5223,7 @@
 	call GetBattleVarAddr
 	set PSN, [hl]
 	jp UpdateOpponentInParty
+
 ; 35fff
 
 
@@ -5157,6 +5232,7 @@
 	call SapHealth
 	ld hl, SuckedHealthText
 	jp StdBattleTextBox
+
 ; 36008
 
 
@@ -5165,6 +5241,7 @@
 	call SapHealth
 	ld hl, DreamEatenText
 	jp StdBattleTextBox
+
 ; 36011
 
 
@@ -5178,7 +5255,7 @@
 	rr a
 	ld [hDividend + 1], a
 	or b
-	jr nz, .ok1 ; 0x36020 $4
+	jr nz, .ok1
 	ld a, $1
 	ld [hDividend + 1], a
 .ok1
@@ -5186,7 +5263,7 @@
 	ld de, BattleMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .battlemonhp ; 0x3602f $6
+	jr z, .battlemonhp
 	ld hl, EnemyMonHP
 	ld de, EnemyMonMaxHP
 .battlemonhp
@@ -5213,7 +5290,7 @@
 	adc b
 	ld [hli], a
 	ld [Buffer6], a
-	jr c, .okay2 ; 0x36056 $c
+	jr c, .okay2
 	ld a, [hld]
 	ld b, a
 	ld a, [de]
@@ -5224,7 +5301,7 @@
 	ld a, [de]
 	inc de
 	sbc b
-	jr nc, .okay3 ; 0x36062 $c
+	jr nc, .okay3
 .okay2
 	ld a, [de]
 	ld [hld], a
@@ -5239,14 +5316,15 @@
 	and a
 	hlcoord 10, 9
 	ld a, $1
-	jr z, .hp_bar ; 0x36078 $4
+	jr z, .hp_bar
 	hlcoord 2, 2
 	xor a
 .hp_bar
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 	call RefreshBattleHuds
 	jp UpdateBattleMonInParty
+
 ; 3608c
 
 
@@ -5254,7 +5332,7 @@
 ; burntarget
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	call CheckSubstituteOpp
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
@@ -5290,6 +5368,7 @@
 
 	callba UseHeldStatusHealingItem
 	ret
+
 ; 360dd
 
 
@@ -5317,6 +5396,7 @@
 
 	ld hl, DefrostedOpponentText
 	jp StdBattleTextBox
+
 ; 36102
 
 
@@ -5324,7 +5404,7 @@
 ; freezetarget
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	call CheckSubstituteOpp
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
@@ -5372,6 +5452,7 @@
 .finish
 	ld [hl], $1
 	ret
+
 ; 36165
 
 
@@ -5379,7 +5460,7 @@
 ; paralyzetarget
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	call CheckSubstituteOpp
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
@@ -5410,6 +5491,7 @@
 	call PrintParalyze
 	ld hl, UseHeldStatusHealingItem
 	jp CallBattleCore
+
 ; 361ac
 
 
@@ -5417,58 +5499,72 @@
 ; attackup
 	ld b, ATTACK
 	jr BattleCommand_StatUp
+
 BattleCommand_DefenseUp: ; 361b0
 ; defenseup
 	ld b, DEFENSE
 	jr BattleCommand_StatUp
+
 BattleCommand_SpeedUp: ; 361b4
 ; speedup
 	ld b, SPEED
 	jr BattleCommand_StatUp
+
 BattleCommand_SpecialAttackUp: ; 361b8
 ; specialattackup
 	ld b, SP_ATTACK
 	jr BattleCommand_StatUp
+
 BattleCommand_SpecialDefenseUp: ; 361bc
 ; specialdefenseup
 	ld b, SP_DEFENSE
 	jr BattleCommand_StatUp
+
 BattleCommand_AccuracyUp: ; 361c0
 ; accuracyup
 	ld b, ACCURACY
 	jr BattleCommand_StatUp
+
 BattleCommand_EvasionUp: ; 361c4
 ; evasionup
 	ld b, EVASION
 	jr BattleCommand_StatUp
+
 BattleCommand_AttackUp2: ; 361c8
 ; attackup2
 	ld b, $10 | ATTACK
 	jr BattleCommand_StatUp
+
 BattleCommand_DefenseUp2: ; 361cc
 ; defenseup2
 	ld b, $10 | DEFENSE
 	jr BattleCommand_StatUp
+
 BattleCommand_SpeedUp2: ; 361d0
 ; speedup2
 	ld b, $10 | SPEED
 	jr BattleCommand_StatUp
+
 BattleCommand_SpecialAttackUp2: ; 361d4
 ; specialattackup2
 	ld b, $10 | SP_ATTACK
 	jr BattleCommand_StatUp
+
 BattleCommand_SpecialDefenseUp2: ; 361d8
 ; specialdefenseup2
 	ld b, $10 | SP_DEFENSE
 	jr BattleCommand_StatUp
+
 BattleCommand_AccuracyUp2: ; 361dc
 ; accuracyup2
 	ld b, $10 | ACCURACY
 	jr BattleCommand_StatUp
+
 BattleCommand_EvasionUp2: ; 361e0
 ; evasionup2
 	ld b, $10 | EVASION
 	jr BattleCommand_StatUp
+
 BattleCommand_StatUp: ; 361e4
 ; statup
 	call CheckIfStatCanBeRaised
@@ -5476,6 +5572,7 @@
 	and a
 	ret nz
 	jp StatUpAnimation
+
 ; 361ef
 
 
@@ -5485,7 +5582,7 @@
 	ld hl, PlayerStatLevels
 	ld a, [hBattleTurn]
 	and a
-	jr z, .got_stat_levels ; 0x361f9 $3
+	jr z, .got_stat_levels
 	ld hl, EnemyStatLevels
 .got_stat_levels
 	ld a, [AttackMissed]
@@ -5506,11 +5603,11 @@
 	jp c, .cant_raise_stat
 	ld a, [LoweredStat]
 	and $f0
-	jr z, .got_num_stages ; 0x36222 $7
+	jr z, .got_num_stages
 	inc b
 	ld a, $d
 	cp b
-	jr nc, .got_num_stages ; 0x36228 $1
+	jr nc, .got_num_stages
 	ld b, a
 .got_num_stages
 	ld [hl], b
@@ -5517,12 +5614,12 @@
 	push hl
 	ld a, c
 	cp $5
-	jr nc, .done_calcing_stats ; 0x36230 $36
+	jr nc, .done_calcing_stats
 	ld hl, BattleMonStats + 1
 	ld de, PlayerStats
 	ld a, [hBattleTurn]
 	and a
-	jr z, .got_stats_pointer ; 0x3623b $6
+	jr z, .got_stats_pointer
 	ld hl, EnemyMonStats + 1
 	ld de, EnemyStats
 .got_stats_pointer
@@ -5533,13 +5630,13 @@
 	ld a, c
 	add e
 	ld e, a
-	jr nc, .no_carry ; 0x3624c $1
+	jr nc, .no_carry
 	inc d
 .no_carry
 	pop bc
 	ld a, [hld]
 	sub 999 % $100
-	jr nz, .not_already_max ; 0x36253 $6
+	jr nz, .not_already_max
 	ld a, [hl]
 	sbc 999 / $100
 	jp z, .stats_already_max
@@ -5546,9 +5643,10 @@
 .not_already_max
 	ld a, [hBattleTurn]
 	and a
-	jr z, .calc_player_stats ; 0x3625e $5
+	jr z, .calc_player_stats
 	call CalcEnemyStats
-	jr .done_calcing_stats ; 0x36263 $3
+	jr .done_calcing_stats
+
 .calc_player_stats
 	call CalcPlayerStats
 .done_calcing_stats
@@ -5556,6 +5654,7 @@
 	xor a
 	ld [FailedMessage], a
 	ret
+
 ; 3626e
 
 
@@ -5572,6 +5671,7 @@
 	ld a, $1
 	ld [AttackMissed], a
 	ret
+
 ; 3627b
 
 
@@ -5579,17 +5679,18 @@
 	ld a, $1
 	ld [FailedMessage], a
 	ret
+
 ; 36281
 
 
 StatUpAnimation: ; 36281
 	ld bc, wPlayerMinimized
-	ld hl, Function3f447
+	ld hl, DropPlayerSub
 	ld a, [hBattleTurn]
 	and a
-	jr z, .do_player ; 0x3628a $6
+	jr z, .do_player
 	ld bc, wEnemyMinimized
-	ld hl, Function3f486
+	ld hl, DropEnemySub
 .do_player
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -5606,6 +5707,7 @@
 	call CallBattleCore
 	call WaitBGMap
 	jp BattleCommand_MoveDelay
+
 ; 362ad
 
 
@@ -5613,54 +5715,67 @@
 ; attackdown
 	ld a, ATTACK
 	jr BattleCommand_StatDown
+
 BattleCommand_DefenseDown: ; 362b1
 ; defensedown
 	ld a, DEFENSE
 	jr BattleCommand_StatDown
+
 BattleCommand_SpeedDown: ; 362b5
 ; speeddown
 	ld a, SPEED
 	jr BattleCommand_StatDown
+
 BattleCommand_SpecialAttackDown: ; 362b9
 ; specialattackdown
 	ld a, SP_ATTACK
 	jr BattleCommand_StatDown
+
 BattleCommand_SpecialDefenseDown: ; 362bd
 ; specialdefensedown
 	ld a, SP_DEFENSE
 	jr BattleCommand_StatDown
+
 BattleCommand_AccuracyDown: ; 362c1
 ; accuracydown
 	ld a, ACCURACY
 	jr BattleCommand_StatDown
+
 BattleCommand_EvasionDown: ; 362c5
 ; evasiondown
 	ld a, EVASION
 	jr BattleCommand_StatDown
+
 BattleCommand_AttackDown2: ; 362c9
 ; attackdown2
 	ld a, $10 | ATTACK
 	jr BattleCommand_StatDown
+
 BattleCommand_DefenseDown2: ; 362cd
 ; defensedown2
 	ld a, $10 | DEFENSE
 	jr BattleCommand_StatDown
+
 BattleCommand_SpeedDown2: ; 362d1
 ; speeddown2
 	ld a, $10 | SPEED
 	jr BattleCommand_StatDown
+
 BattleCommand_SpecialAttackDown2: ; 362d5
 ; specialattackdown2
 	ld a, $10 | SP_ATTACK
 	jr BattleCommand_StatDown
+
 BattleCommand_SpecialDefenseDown2: ; 362d9
 ; specialdefensedown2
 	ld a, $10 | SP_DEFENSE
 	jr BattleCommand_StatDown
+
 BattleCommand_AccuracyDown2: ; 362dd
 ; accuracydown2
 	ld a, $10 | ACCURACY
 	jr BattleCommand_StatDown
+
 BattleCommand_EvasionDown2: ; 362e1
 ; evasiondown2
 	ld a, $10 | EVASION
@@ -5787,6 +5902,7 @@
 	ld a, 1
 	ld [AttackMissed], a
 	ret
+
 ; 36391
 
 
@@ -5814,6 +5930,7 @@
 	call GetBattleVar
 	bit SUBSTATUS_MIST, a
 	ret
+
 ; 363b8
 
 
@@ -5832,7 +5949,6 @@
 .stat
 	text_jump UnknownText_0x1c0cc6
 	start_asm
-
 	ld hl, .up
 	ld a, [LoweredStat]
 	and $f0
@@ -5866,7 +5982,6 @@
 .stat
 	text_jump UnknownText_0x1c0ceb
 	start_asm
-
 	ld hl, .fell
 	ld a, [LoweredStat]
 	and $f0
@@ -5926,6 +6041,7 @@
 	ld a, 1
 	and a
 	ret
+
 ; 3644c
 
 
@@ -5946,6 +6062,7 @@
 	call GetStatName
 	ld hl, WontRiseAnymoreText
 	jp StdBattleTextBox
+
 ; 3646a
 
 
@@ -5969,6 +6086,7 @@
 	call GetStatName
 	ld hl, WontDropAnymoreText
 	jp StdBattleTextBox
+
 ; 3648f
 
 
@@ -5983,6 +6101,7 @@
 	cp c
 	jr z, .CheckName
 	jr .GetName
+
 .Copy
 	ld de, StringBuffer2
 	ld bc, StringBuffer3 - StringBuffer2
@@ -6051,6 +6170,7 @@
 	xor a
 	ld [AttackMissed], a
 	ret
+
 ; 36532
 
 
@@ -6124,6 +6244,7 @@
 	ld a, 2
 	ld [FailedMessage], a
 	ret
+
 ; 3658f
 
 
@@ -6143,6 +6264,7 @@
 	ld hl, .ptrs
 	rst JumpTable
 	ret
+
 .ptrs
 	dw BattleCommand_ParalyzeTarget ; paralyze
 	dw BattleCommand_FreezeTarget ; freeze
@@ -6156,6 +6278,7 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_CURLED, [hl]
 	ret
+
 ; 365af
 
 
@@ -6163,7 +6286,7 @@
 	ld hl, GetMonBackpic
 	ld a, [hBattleTurn]
 	and a
-	jr z, .PlayerTurn ; 365b5 $3
+	jr z, .PlayerTurn
 	ld hl, GetMonFrontpic
 .PlayerTurn
 	xor a
@@ -6170,20 +6293,22 @@
 	ld [hBGMapMode], a
 	call CallBattleCore
 	jp WaitBGMap
+
 ; 365c3
 
 
 BattleCommand_LowerSubNoAnim: ; 365c3
-	ld hl, Function3f447
+	ld hl, DropPlayerSub
 	ld a, [hBattleTurn]
 	and a
-	jr z, .PlayerTurn ; 365c9 $3
-	ld hl, Function3f486
+	jr z, .PlayerTurn
+	ld hl, DropEnemySub
 .PlayerTurn
 	xor a
 	ld [hBGMapMode], a
 	call CallBattleCore
 	jp WaitBGMap
+
 ; 365d7
 
 
@@ -6207,6 +6332,7 @@
 	call CallBattleCore
 
 	jp BattleCommand_SwitchTurn
+
 ; 365fd
 
 
@@ -6227,6 +6353,7 @@
 	call CallBattleCore
 
 	jp BattleCommand_SwitchTurn
+
 ; 3661d
 
 
@@ -6241,9 +6368,8 @@
 	dec c
 	ld b, 0
 	ld hl, StatLevelMultipliers
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 
 	xor a
 	ld [hMultiplicand + 0], a
@@ -6299,6 +6425,7 @@
 	jr nz, .loop
 
 	ret
+
 ; 36671
 
 
@@ -6372,6 +6499,7 @@
 	ld hl, StoringEnergyText
 	call StdBattleTextBox
 	jp EndMoveEffect
+
 ; 366e5
 
 
@@ -6382,10 +6510,10 @@
 	ld bc, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_366f6
+	jr z, .got_damage
 	ld de, EnemyDamageTaken
 	ld bc, EnemyRolloutCount
-.asm_366f6
+.got_damage
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	set SUBSTATUS_BIDE, [hl]
@@ -6397,14 +6525,14 @@
 	ld [wEnemyMoveStruct + MOVE_EFFECT], a
 	call BattleRandom
 	and 1
-rept 2
 	inc a
-endr
+	inc a
 	ld [bc], a
 	ld a, 1
 	ld [wKickCounter], a
 	call AnimateCurrentMove
 	jp EndMoveEffect
+
 ; 3671a
 
 
@@ -6414,7 +6542,7 @@
 	ld de, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .player ; 36720 $3
+	jr z, .player
 	ld de, EnemyRolloutCount
 .player
 	ld a, BATTLE_VARS_SUBSTATUS3
@@ -6424,7 +6552,7 @@
 	ld a, [de]
 	dec a
 	ld [de], a
-	jr nz, .continue_rampage ; 36730 $1a
+	jr nz, .continue_rampage
 
 	res SUBSTATUS_RAMPAGE, [hl]
 	call BattleCommand_SwitchTurn
@@ -6432,19 +6560,19 @@
 	push af
 	call BattleCommand_SwitchTurn
 	pop af
-	jr nz, .continue_rampage ; 3673f $b
+	jr nz, .continue_rampage
 
 	set SUBSTATUS_CONFUSED, [hl]
 	call BattleRandom
 	and %00000001
-rept 2
 	inc a
-endr
+	inc a
 	inc de ; ConfuseCount
 	ld [de], a
 .continue_rampage
 	ld b, rampage_command
 	jp SkipToBattleCommand
+
 ; 36751
 
 
@@ -6474,6 +6602,7 @@
 	ld a, 1
 	ld [wc73e], a
 	ret
+
 ; 36778
 
 
@@ -6515,12 +6644,12 @@
 .loop_player
 	call BattleRandom
 	cp c
-	jr nc, .loop_player ; 367b0 $fa
+	jr nc, .loop_player
 ; If that number is greater than 4 times your level, run away.
 	srl b
 	srl b
 	cp b
-	jr nc, .run_away ; 367b7 $26
+	jr nc, .run_away
 
 .failed
 	call AnimateFailedMove
@@ -6534,7 +6663,7 @@
 	ld b, a
 	ld a, [CurPartyLevel]
 	cp b
-	jr nc, .run_away ; 367cd $10
+	jr nc, .run_away
 	add b
 	ld c, a
 	inc c
@@ -6541,15 +6670,15 @@
 .loop_enemy
 	call BattleRandom
 	cp c
-	jr nc, .loop_enemy ; 367d6 $fa
+	jr nc, .loop_enemy
 	srl b
 	srl b
 	cp b
-	jr nc, .run_away ; 367dd $0
+	jr nc, .run_away
 .run_away
 	call UpdateBattleMonInParty
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	inc a
 	ld [wForcedSwitch], a
 	ld [wKickCounter], a
@@ -6562,6 +6691,7 @@
 
 	ld hl, FledFromBattleText
 	jp StdBattleTextBox
+
 ; 36804
 
 
@@ -6571,6 +6701,7 @@
 	or $2
 	ld [wBattleResult], a
 	ret
+
 ; 3680f
 
 
@@ -6591,15 +6722,15 @@
 	jp nz, .force_player_switch
 	ld a, [AttackMissed]
 	and a
-	jr nz, .missed ; 36830 $20
+	jr nz, .missed
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .trainer ; 36836 $31
+	jr nz, .trainer
 	ld a, [CurPartyLevel]
 	ld b, a
 	ld a, [BattleMonLevel]
 	cp b
-	jr nc, .wild_force_flee ; 36840 $13
+	jr nc, .wild_force_flee
 	add b
 	ld c, a
 	inc c
@@ -6606,11 +6737,11 @@
 .random_loop_wild
 	call BattleRandom
 	cp c
-	jr nc, .random_loop_wild ; 36849 $fa
+	jr nc, .random_loop_wild
 	srl b
 	srl b
 	cp b
-	jr nc, .wild_force_flee ; 36850 $3
+	jr nc, .wild_force_flee
 .missed
 	jp .fail
 
@@ -6617,7 +6748,7 @@
 .wild_force_flee
 	call UpdateBattleMonInParty
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
@@ -6626,10 +6757,10 @@
 
 .trainer
 	call FindAliveEnemyMons
-	jr c, .switch_fail ; 3686c $5c
+	jr c, .switch_fail
 	ld a, [wEnemyGoesFirst]
 	and a
-	jr z, .switch_fail ; 36872 $56
+	jr z, .switch_fail
 	call UpdateEnemyMonInParty
 	ld a, $1
 	ld [wKickCounter], a
@@ -6650,9 +6781,9 @@
 	call BattleRandom
 	and $7
 	cp b
-	jr nc, .random_loop_trainer ; 368a0 $f8
+	jr nc, .random_loop_trainer
 	cp c
-	jr z, .random_loop_trainer ; 368a3 $f5
+	jr z, .random_loop_trainer
 	push af
 	push bc
 	ld hl, OTPartyMon1HP
@@ -6661,7 +6792,7 @@
 	or [hl]
 	pop bc
 	pop de
-	jr z, .random_loop_trainer ; 368b1 $e7
+	jr z, .random_loop_trainer
 	ld a, d
 	inc a
 	ld [wEnemySwitchMonIndex], a
@@ -6710,7 +6841,7 @@
 .wild_succeed_playeristarget
 	call UpdateBattleMonInParty
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
@@ -6792,6 +6923,7 @@
 	ld hl, BlownAwayText
 .do_text
 	jp StdBattleTextBox
+
 ; 36994
 
 
@@ -6823,6 +6955,7 @@
 .not_fainted
 	and a
 	ret
+
 ; 369b6
 
 
@@ -6835,87 +6968,91 @@
 	ld bc, PlayerDamageTaken
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_369c7
+	jr z, .got_addrs
 	ld de, EnemyRolloutCount
 	ld bc, EnemyDamageTaken
-.asm_369c7
+.got_addrs
 
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	bit SUBSTATUS_IN_LOOP, [hl]
-	jp nz, .asm_36a43
+	jp nz, .in_loop
 	set SUBSTATUS_IN_LOOP, [hl]
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVarAddr
 	ld a, [hl]
 	cp EFFECT_TWINEEDLE
-	jr z, .asm_36a3f
+	jr z, .twineedle
 	cp EFFECT_DOUBLE_HIT
-	ld a, $1
-	jr z, .asm_36a3a
+	ld a, 1
+	jr z, .double_hit
 	ld a, [hl]
 	cp EFFECT_BEAT_UP
-	jr z, .asm_369fb
+	jr z, .beat_up
 	cp EFFECT_TRIPLE_KICK
-	jr nz, .asm_36a2b
-.asm_369ec
+	jr nz, .not_triple_kick
+.reject_triple_kick_sample
 	call BattleRandom
 	and $3
-	jr z, .asm_369ec
+	jr z, .reject_triple_kick_sample
 	dec a
-	jr nz, .asm_36a3a
-	ld a, $1
+	jr nz, .double_hit
+	ld a, 1
 	ld [bc], a
-	jr .asm_36a48
-.asm_369fb
+	jr .done_loop
+
+.beat_up
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_36a0b
+	jr nz, .check_ot_beat_up
 	ld a, [PartyCount]
-	cp $1
-	jp z, .asm_36a1e
+	cp 1
+	jp z, .only_one_beatup
 	dec a
-	jr .asm_36a3a
-.asm_36a0b
+	jr .double_hit
+
+.check_ot_beat_up
 	ld a, [wBattleMode]
-	cp $1
-	jp z, .asm_36a1e
+	cp WILD_BATTLE
+	jp z, .only_one_beatup
 	ld a, [OTPartyCount]
-	cp $1
-	jp z, .asm_36a1e
+	cp 1
+	jp z, .only_one_beatup
 	dec a
-	jr .asm_36a3a
+	jr .double_hit
 
-.asm_36a1e
+.only_one_beatup
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	res SUBSTATUS_IN_LOOP, [hl]
 	call BattleCommanda8
 	jp EndMoveEffect
-.asm_36a2b
+
+.not_triple_kick
 	call BattleRandom
 	and $3
-	cp $2
-	jr c, .asm_36a39
+	cp 2
+	jr c, .got_number_hits
 	call BattleRandom
 	and $3
-.asm_36a39
+.got_number_hits
 	inc a
-.asm_36a3a
+.double_hit
 	ld [de], a
 	inc a
 	ld [bc], a
-	jr .asm_36a6b
-.asm_36a3f
-	ld a, $1
-	jr .asm_36a3a
+	jr .loop_back_to_critical
 
-.asm_36a43
+.twineedle
+	ld a, 1
+	jr .double_hit
+
+.in_loop
 	ld a, [de]
 	dec a
 	ld [de], a
-	jr nz, .asm_36a6b
-.asm_36a48
+	jr nz, .loop_back_to_critical
+.done_loop
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	res SUBSTATUS_IN_LOOP, [hl]
@@ -6923,17 +7060,17 @@
 	ld hl, PlayerHitTimesText
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36a5a
+	jr z, .got_hit_n_times_text
 	ld hl, EnemyHitTimesText
-.asm_36a5a
+.got_hit_n_times_text
 
 	push bc
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_BEAT_UP
-	jr z, .asm_36a67
+	jr z, .beat_up_2
 	call StdBattleTextBox
-.asm_36a67
+.beat_up_2
 
 	pop bc
 	xor a
@@ -6941,15 +7078,15 @@
 	ret
 
 ; Loop back to the command before 'critical'.
-.asm_36a6b
+.loop_back_to_critical
 	ld a, [BattleScriptBufferLoc + 1]
 	ld h, a
 	ld a, [BattleScriptBufferLoc]
 	ld l, a
-.asm_36a73
+.not_critical
 	ld a, [hld]
-	cp $5 ; critical
-	jr nz, .asm_36a73
+	cp critical_command
+	jr nz, .not_critical
 	inc hl
 	ld a, h
 	ld [BattleScriptBufferLoc + 1], a
@@ -6956,6 +7093,7 @@
 	ld a, l
 	ld [BattleScriptBufferLoc], a
 	ret
+
 ; 36a82
 
 
@@ -6979,6 +7117,7 @@
 	ld a, 1
 	ld [AttackMissed], a
 	ret
+
 ; 36aa0
 
 
@@ -7007,6 +7146,7 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_FLINCHED, [hl]
 	jp EndRechargeOpp
+
 ; 36abf
 
 
@@ -7020,6 +7160,7 @@
 	xor b ; 1 if opponent went first
 	pop bc
 	ret
+
 ; 36ac9
 
 
@@ -7050,6 +7191,7 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_FLINCHED, [hl]
 	ret
+
 ; 36af3
 
 
@@ -7059,29 +7201,29 @@
 	call ResetDamage
 	ld a, [TypeModifier]
 	and $7f
-	jr z, .asm_36b2f
+	jr z, .no_effect
 	ld hl, EnemyMonLevel
 	ld de, BattleMonLevel
 	ld bc, wPlayerMoveStruct + MOVE_ACC
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36b12
+	jr z, .got_move_accuracy
 	push hl
 	ld h, d
 	ld l, e
 	pop de
 	ld bc, wEnemyMoveStruct + MOVE_ACC
-.asm_36b12
+.got_move_accuracy
 	ld a, [de]
 	sub [hl]
-	jr c, .asm_36b2f
+	jr c, .no_effect
 	add a
 	ld e, a
 	ld a, [bc]
 	add e
-	jr nc, .asm_36b1e
+	jr nc, .finish_ohko
 	ld a, $ff
-.asm_36b1e
+.finish_ohko
 	ld [bc], a
 	call BattleCommand_CheckHit
 	ld hl, CurDamage
@@ -7091,12 +7233,14 @@
 	ld a, $2
 	ld [CriticalHit], a
 	ret
-.asm_36b2f
+
+.no_effect
 	ld a, $ff
 	ld [CriticalHit], a
 	ld a, $1
 	ld [AttackMissed], a
 	ret
+
 ; 36b3a
 
 
@@ -7112,6 +7256,7 @@
 	res SUBSTATUS_FLYING, [hl]
 	ld b, charge_command
 	jp SkipToBattleCommand
+
 ; 36b4d
 
 
@@ -7141,7 +7286,7 @@
 
 	call BattleCommand_LowerSub
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	inc a
 	ld [wKickCounter], a
 	call LoadMoveAnim
@@ -7153,6 +7298,7 @@
 	jr z, .flying
 	call BattleCommand_RaiseSub
 	jr .not_flying
+
 .flying
 	call DisappearUser
 .not_flying
@@ -7197,7 +7343,6 @@
 .UsedText
 	text_jump UnknownText_0x1c0d0e ; "[USER]"
 	start_asm
-
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp RAZOR_WIND
@@ -7261,6 +7406,7 @@
 BattleCommand3c: ; 36c2c
 ; unused
 	ret
+
 ; 36c2d
 
 
@@ -7274,11 +7420,11 @@
 	ld de, wEnemyTrappingMove
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36c43
+	jr z, .got_trap
 	ld hl, wPlayerWrapCount
 	ld de, wPlayerTrappingMove
 
-.asm_36c43
+.got_trap
 	ld a, [hl]
 	and a
 	ret nz
@@ -7298,16 +7444,15 @@
 	ld b, a
 	ld hl, .Traps
 
-.asm_36c61
+.find_trap_text
 	ld a, [hli]
 	cp b
-	jr z, .asm_36c69
-rept 2
+	jr z, .found_trap_text
 	inc hl
-endr
-	jr .asm_36c61
+	inc hl
+	jr .find_trap_text
 
-.asm_36c69
+.found_trap_text
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -7328,14 +7473,16 @@
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	bit SUBSTATUS_MIST, [hl]
-	jr nz, .asm_36c92
+	jr nz, .already_mist
 	set SUBSTATUS_MIST, [hl]
 	call AnimateCurrentMove
 	ld hl, MistText
 	jp StdBattleTextBox
-.asm_36c92
+
+.already_mist
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 36c98
 
 
@@ -7345,14 +7492,16 @@
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	bit SUBSTATUS_FOCUS_ENERGY, [hl]
-	jr nz, .asm_36cac
+	jr nz, .already_pumped
 	set SUBSTATUS_FOCUS_ENERGY, [hl]
 	call AnimateCurrentMove
 	ld hl, GettingPumpedText
 	jp StdBattleTextBox
-.asm_36cac
+
+.already_pumped
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 36cb2
 
 
@@ -7362,12 +7511,13 @@
 	ld hl, BattleMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36cbd
+	jr z, .got_hp
 	ld hl, EnemyMonMaxHP
-.asm_36cbd
+.got_hp
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld d, a
+; get 1/4 damage or 1 HP, whichever is higher
 	ld a, [CurDamage]
 	ld b, a
 	ld a, [CurDamage + 1]
@@ -7378,16 +7528,15 @@
 	rr c
 	ld a, b
 	or c
-	jr nz, .asm_36cd8
+	jr nz, .min_damage
 	inc c
-.asm_36cd8
+.min_damage
 	ld a, [hli]
 	ld [Buffer2], a
 	ld a, [hl]
 	ld [Buffer1], a
-rept 2
 	dec hl
-endr
+	dec hl
 	ld a, [hl]
 	ld [Buffer3], a
 	sub c
@@ -7398,7 +7547,7 @@
 	sbc b
 	ld [hl], a
 	ld [Buffer6], a
-	jr nc, .asm_36cfe
+	jr nc, .dont_ko
 	xor a
 	ld [hli], a
 	ld [hl], a
@@ -7405,20 +7554,21 @@
 	ld hl, Buffer5
 	ld [hli], a
 	ld [hl], a
-.asm_36cfe
+.dont_ko
 	hlcoord 10, 9
 	ld a, [hBattleTurn]
 	and a
-	ld a, $1
-	jr z, .asm_36d0c
+	ld a, 1
+	jr z, .animate_hp_bar
 	hlcoord 2, 2
 	xor a
-.asm_36d0c
-	ld [wd10a], a
+.animate_hp_bar
+	ld [wWhichHPBar], a
 	predef AnimateHPBar
 	call RefreshBattleHuds
 	ld hl, RecoilText
 	jp StdBattleTextBox
+
 ; 36d1d
 
 
@@ -7440,7 +7590,7 @@
 	call GetBattleVarAddr
 	bit SUBSTATUS_CONFUSED, [hl]
 	ret nz
-	jr Function36d70
+	jr BattleCommand_FinishConfusingTarget
 
 
 BattleCommand_Confuse: ; 36d3b
@@ -7449,7 +7599,7 @@
 	call GetOpponentItem
 	ld a, b
 	cp HELD_PREVENT_CONFUSE
-	jr nz, .asm_36d53
+	jr nz, .no_item_protection
 	ld a, [hl]
 	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
@@ -7457,53 +7607,47 @@
 	ld hl, ProtectedByText
 	jp StdBattleTextBox
 
-.asm_36d53
+.no_item_protection
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVarAddr
 	bit SUBSTATUS_CONFUSED, [hl]
-	jr z, .asm_36d65
+	jr z, .not_already_confused
 	call AnimateFailedMove
 	ld hl, AlreadyConfusedText
 	jp StdBattleTextBox
 
-.asm_36d65
+.not_already_confused
 	call CheckSubstituteOpp
-	jr nz, Function36db6
+	jr nz, BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit
 	ld a, [AttackMissed]
 	and a
-	jr nz, Function36db6
-
-	; fallthrough
-; 36d70
-
-
-Function36d70: ; 36d70
+	jr nz, BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit
+BattleCommand_FinishConfusingTarget: ; 36d70
 	ld bc, EnemyConfuseCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36d7b
+	jr z, .got_confuse_count
 	ld bc, PlayerConfuseCount
 
-.asm_36d7b
+.got_confuse_count
 	set SUBSTATUS_CONFUSED, [hl]
 	call BattleRandom
 	and 3
-rept 2
 	inc a
-endr
+	inc a
 	ld [bc], a
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_CONFUSE_HIT
-	jr z, .asm_36d99
+	jr z, .got_effect
 	cp EFFECT_SNORE
-	jr z, .asm_36d99
+	jr z, .got_effect
 	cp EFFECT_SWAGGER
-	jr z, .asm_36d99
+	jr z, .got_effect
 	call AnimateCurrentMove
 
-.asm_36d99
+.got_effect
 	ld de, ANIM_CONFUSED
 	call PlayOpponentBattleAnim
 
@@ -7513,15 +7657,16 @@
 	call GetOpponentItem
 	ld a, b
 	cp HELD_HEAL_STATUS
-	jr z, .asm_36db0
+	jr z, .heal_confusion
 	cp HELD_HEAL_CONFUSION
 	ret nz
-.asm_36db0
-	ld hl, HandleStatusHealingItem
+.heal_confusion
+	ld hl, UseConfusionHealingItem
 	jp CallBattleCore
+
 ; 36db6
 
-Function36db6: ; 36db6
+BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit: ; 36db6
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_CONFUSE_HIT
@@ -7531,6 +7676,7 @@
 	cp EFFECT_SWAGGER
 	ret z
 	jp PrintDidntAffect2
+
 ; 36dc7
 
 
@@ -7540,14 +7686,14 @@
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVar
 	bit PAR, a
-	jr nz, .asm_36e49
+	jr nz, .paralyzed
 	ld a, [TypeModifier]
 	and $7f
-	jr z, .asm_36e55
+	jr z, .didnt_affect
 	call GetOpponentItem
 	ld a, b
 	cp HELD_PREVENT_PARALYZE
-	jr nz, .asm_36def
+	jr nz, .no_item_protection
 	ld a, [hl]
 	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
@@ -7555,37 +7701,37 @@
 	ld hl, ProtectedByText
 	jp StdBattleTextBox
 
-.asm_36def
+.no_item_protection
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36e0e
+	jr z, .dont_sample_failure
 
 	ld a, [wLinkMode]
 	and a
-	jr nz, .asm_36e0e
+	jr nz, .dont_sample_failure
 
 	ld a, [InBattleTowerBattle]
 	and a
-	jr nz, .asm_36e0e
+	jr nz, .dont_sample_failure
 
 	ld a, [PlayerSubStatus5]
 	bit SUBSTATUS_LOCK_ON, a
-	jr nz, .asm_36e0e
+	jr nz, .dont_sample_failure
 
 	call BattleRandom
-	cp $40
-	jr c, .asm_36e52
+	cp 1 + 25 percent
+	jr c, .failed
 
-.asm_36e0e
+.dont_sample_failure
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	and a
-	jr nz, .asm_36e52
+	jr nz, .failed
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_36e52
+	jr nz, .failed
 	call CheckSubstituteOpp
-	jr nz, .asm_36e52
+	jr nz, .failed
 	ld c, 30
 	call DelayFrames
 	call AnimateCurrentMove
@@ -7601,15 +7747,19 @@
 	call PrintParalyze
 	ld hl, UseHeldStatusHealingItem
 	jp CallBattleCore
-.asm_36e49
+
+.paralyzed
 	call AnimateFailedMove
 	ld hl, AlreadyParalyzedText
 	jp StdBattleTextBox
-.asm_36e52
+
+.failed
 	jp PrintDidntAffect2
-.asm_36e55
+
+.didnt_affect
 	call AnimateFailedMove
 	jp PrintDoesntAffect
+
 ; 36e5b
 
 
@@ -7647,6 +7797,7 @@
 	and a
 	pop hl
 	ret
+
 ; 36e7c
 
 
@@ -7674,9 +7825,8 @@
 	rr b
 	srl a
 	rr b
-rept 2
 	dec hl
-endr
+	dec hl
 	ld a, b
 	ld [de], a
 	ld a, [hld]
@@ -7713,7 +7863,7 @@
 	jr c, .mobile
 
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	ld [wKickCounter], a
 	ld a, SUBSTITUTE
@@ -7739,6 +7889,7 @@
 	ld hl, TooWeakSubText
 .jp_stdbattletextbox
 	jp StdBattleTextBox
+
 ; 36f0b
 
 BattleCommand_RechargeNextTurn: ; 36f0b
@@ -7747,6 +7898,7 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_RECHARGE, [hl]
 	ret
+
 ; 36f13
 
 
@@ -7757,6 +7909,7 @@
 	res SUBSTATUS_RECHARGE, [hl]
 	pop hl
 	ret
+
 ; 36f1d
 
 
@@ -7766,6 +7919,7 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_RAGE, [hl]
 	ret
+
 ; 36f25
 
 
@@ -7776,6 +7930,7 @@
 	bit SUBSTATUS_FLYING, a
 	ret z
 	jr DoubleDamage
+
 ; 36f2f
 
 
@@ -7802,6 +7957,7 @@
 	ld [hl], a
 .quit
 	ret
+
 ; 36f46
 
 
@@ -7855,6 +8011,7 @@
 
 .fail
 	jp FailMimic
+
 ; 36f9d
 
 
@@ -7898,6 +8055,7 @@
 	call AnimateFailedMove
 	ld hl, EvadedText
 	jp StdBattleTextBox
+
 ; 36fe1
 
 
@@ -7905,6 +8063,7 @@
 	call AnimateCurrentMove
 	callba MobileFn_1060e5
 	jp PrintNothingHappened
+
 ; 36fed
 
 
@@ -7913,51 +8072,51 @@
 
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_37059
+	jr nz, .failed
 
 	ld de, EnemyDisableCount
 	ld hl, EnemyMonMoves
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37004
+	jr z, .got_moves
 	ld de, PlayerDisableCount
 	ld hl, BattleMonMoves
-.asm_37004
+.got_moves
 
 	ld a, [de]
 	and a
-	jr nz, .asm_37059
+	jr nz, .failed
 
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	and a
-	jr z, .asm_37059
+	jr z, .failed
 	cp STRUGGLE
-	jr z, .asm_37059
+	jr z, .failed
 
 	ld b, a
 	ld c, $ff
-.asm_37017
+.loop
 	inc c
 	ld a, [hli]
 	cp b
-	jr nz, .asm_37017
+	jr nz, .loop
 
 	ld a, [hBattleTurn]
 	and a
 	ld hl, EnemyMonPP
-	jr z, .asm_37027
+	jr z, .got_pp
 	ld hl, BattleMonPP
-.asm_37027
+.got_pp
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_37059
-.asm_3702e
+	jr z, .failed
+.loop2
 	call BattleRandom
 	and 7
-	jr z, .asm_3702e
+	jr z, .loop2
 	inc a
 	inc c
 	swap c
@@ -7967,9 +8126,9 @@
 	ld hl, DisabledMove
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_37047
+	jr nz, .got_disabled_move_pointer
 	inc hl
-.asm_37047
+.got_disabled_move_pointer
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	ld [hl], a
@@ -7977,8 +8136,10 @@
 	call GetMoveName
 	ld hl, WasDisabledText
 	jp StdBattleTextBox
-.asm_37059
+
+.failed
 	jp FailDisable
+
 ; 3705c
 
 
@@ -8008,6 +8169,7 @@
 .done
 	ld hl, CoinsScatteredText
 	jp StdBattleTextBox
+
 ; 3707f
 
 
@@ -8018,14 +8180,14 @@
 	ld de, BattleMonType1
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37090
+	jr z, .got_moves
 	ld hl, EnemyMonMoves
 	ld de, EnemyMonType1
-.asm_37090
+.got_moves
 	push de
 	ld c, 0
 	ld de, StringBuffer1
-.asm_37096
+.loop
 	push hl
 	ld b, 0
 	add hl, bc
@@ -8032,7 +8194,7 @@
 	ld a, [hl]
 	pop hl
 	and a
-	jr z, .asm_370b2
+	jr z, .okay
 	push hl
 	push bc
 	dec a
@@ -8045,8 +8207,8 @@
 	inc c
 	ld a, c
 	cp NUM_MOVES
-	jr c, .asm_37096
-.asm_370b2
+	jr c, .loop
+.okay
 	ld a, $ff
 	ld [de], a
 	inc de
@@ -8055,28 +8217,30 @@
 	ld [de], a
 	pop de
 	ld hl, StringBuffer1
-.asm_370bd
+.loop2
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_370d3
+	cp -1
+	jr z, .fail
 	cp CURSE_T
-	jr z, .asm_370d0
+	jr z, .next
 	ld a, [de]
 	cp [hl]
-	jr z, .asm_370d0
+	jr z, .next
 	inc de
 	ld a, [de]
 	dec de
 	cp [hl]
-	jr nz, .asm_370d9_a
-.asm_370d0
+	jr nz, .done
+.next
 	inc hl
-	jr .asm_370bd
-.asm_370d3
+	jr .loop2
+
+.fail
 	call AnimateFailedMove
 	jp PrintButItFailed
-.asm_370d9_a
-.asm_370d9_b
+
+.done
+.loop3
 	call BattleRandom
 	and 3 ; TODO factor in NUM_MOVES
 	ld c, a
@@ -8084,18 +8248,18 @@
 	ld hl, StringBuffer1
 	add hl, bc
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_370d9_b
+	cp -1
+	jr z, .loop3
 	cp CURSE_T
-	jr z, .asm_370d9_b
+	jr z, .loop3
 	ld a, [de]
 	cp [hl]
-	jr z, .asm_370d9_b
+	jr z, .loop3
 	inc de
 	ld a, [de]
 	dec de
 	cp [hl]
-	jr z, .asm_370d9_b
+	jr z, .loop3
 	ld a, [hl]
 	ld [de], a
 	inc de
@@ -8105,6 +8269,7 @@
 	call AnimateCurrentMove
 	ld hl, TransformedTypeText
 	jp StdBattleTextBox
+
 ; 3710e
 
 
@@ -8140,6 +8305,7 @@
 	dec b
 	jr nz, .next
 	ret
+
 ; 3713e
 
 
@@ -8150,10 +8316,10 @@
 	ld hl, BattleMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3714f
+	jr z, .got_hp
 	ld de, EnemyMonHP
 	ld hl, EnemyMonMaxHP
-.asm_3714f
+.got_hp
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld b, a
@@ -8165,10 +8331,11 @@
 	pop bc
 	pop de
 	pop hl
-	jp z, .asm_371c4
+	jp z, .hp_full
 	ld a, b
 	cp REST
-	jr nz, .asm_37199
+	jr nz, .not_rest
+
 	push hl
 	push de
 	push af
@@ -8182,30 +8349,33 @@
 	and a
 	ld [hl], REST_TURNS + 1
 	ld hl, WentToSleepText
-	jr z, .asm_37186
+	jr z, .no_status_to_heal
 	ld hl, RestedText
-.asm_37186
+.no_status_to_heal
 	call StdBattleTextBox
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_37193
+	jr nz, .calc_enemy_stats
 	call CalcPlayerStats
-	jr .asm_37196
-.asm_37193
+	jr .got_stats
+
+.calc_enemy_stats
 	call CalcEnemyStats
-.asm_37196
+.got_stats
 	pop af
 	pop de
 	pop hl
-.asm_37199
-	jr z, .asm_371a3
+
+.not_rest
+	jr z, .restore_full_hp
 	ld hl, GetHalfMaxHP
 	call CallBattleCore
-	jr .asm_371a9
-.asm_371a3
+	jr .finish
+
+.restore_full_hp
 	ld hl, GetMaxHP
 	call CallBattleCore
-.asm_371a9
+.finish
 	call AnimateCurrentMove
 	call BattleCommand_SwitchTurn
 	ld hl, RestoreHP
@@ -8216,10 +8386,11 @@
 	ld hl, RegainedHealthText
 	jp StdBattleTextBox
 
-.asm_371c4
+.hp_full
 	call AnimateFailedMove
 	ld hl, HPIsFullText
 	jp StdBattleTextBox
+
 ; 371cd
 
 
@@ -8230,11 +8401,11 @@
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
 	bit SUBSTATUS_TRANSFORMED, [hl]
-	jp nz, Function372d2
+	jp nz, BattleEffect_ButItFailed
 	call CheckHiddenOpponent
-	jp nz, Function372d2
+	jp nz, BattleEffect_ButItFailed
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 	ld a, $1
 	ld [wKickCounter], a
@@ -8266,9 +8437,8 @@
 	ld a, [hli]
 	ld [de], a
 	inc hl
-rept 2
 	inc de
-endr
+	inc de
 	ld bc, NUM_MOVES
 	call CopyBytes
 	ld a, [hBattleTurn]
@@ -8347,12 +8517,13 @@
 	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 [wNumHits], a
 	ld [FXAnimIDHi], a
 	ld a, $2
 	ld [wKickCounter], a
@@ -8361,6 +8532,7 @@
 	call nz, LoadAnim
 	ld hl, TransformedText
 	jp StdBattleTextBox
+
 ; 372c6
 
 
@@ -8378,12 +8550,14 @@
 	pop de
 .copy
 	jp CopyBytes
+
 ; 372d2
 
 
-Function372d2: ; 372d2
+BattleEffect_ButItFailed: ; 372d2
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 372d8
 
 
@@ -8398,6 +8572,7 @@
 	xor a
 	ld [hl], a
 	ret
+
 ; 372e7
 
 
@@ -8416,6 +8591,7 @@
 	ld [PlayerDisableCount], a
 	ld [DisabledMove], a
 	ret
+
 ; 372fc
 
 
@@ -8426,11 +8602,11 @@
 	ld bc, PlayerLightScreenCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3730d
+	jr z, .got_screens_pointer
 	ld hl, EnemyScreens
 	ld bc, EnemyLightScreenCount
 
-.asm_3730d
+.got_screens_pointer
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_LIGHT_SCREEN
@@ -8442,7 +8618,7 @@
 	ld a, 5
 	ld [bc], a
 	ld hl, LightScreenEffectText
-	jr .asm_37331
+	jr .good
 
 .Reflect
 	bit SCREENS_REFLECT, [hl]
@@ -8456,7 +8632,7 @@
 	ld [bc], a
 	ld hl, ReflectEffectText
 
-.asm_37331
+.good
 	call AnimateCurrentMove
 	jp StdBattleTextBox
 
@@ -8463,6 +8639,7 @@
 .failed
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 3733d
 
 
@@ -8470,6 +8647,7 @@
 ; 'it doesn't affect'
 	ld hl, DoesntAffectText
 	jp StdBattleTextBox
+
 ; 37343
 
 
@@ -8477,6 +8655,7 @@
 ; 'but nothing happened!'
 	ld hl, NothingHappenedText
 	jp StdBattleTextBox
+
 ; 37349
 
 
@@ -8493,6 +8672,7 @@
 ; 'but it failed!'
 	ld hl, ButItFailedText
 	jp StdBattleTextBox
+
 ; 37354
 
 
@@ -8510,6 +8690,7 @@
 	ld hl, ButItFailedText ; 'but it failed!'
 	ld de, ItFailedText    ; 'it failed!'
 	jp FailText_CheckOpponentProtect
+
 ; 37360
 
 
@@ -8517,6 +8698,7 @@
 ; 'it didn't affect'
 	ld hl, DidntAffect1Text
 	jp StdBattleTextBox
+
 ; 37366
 
 
@@ -8525,6 +8707,7 @@
 	ld hl, DidntAffect1Text ; 'it didn't affect'
 	ld de, DidntAffect2Text ; 'it didn't affect'
 	jp FailText_CheckOpponentProtect
+
 ; 37372
 
 
@@ -8532,6 +8715,7 @@
 ; 'paralyzed! maybe it can't attack!'
 	ld hl, ParalyzedText
 	jp StdBattleTextBox
+
 ; 37378
 
 
@@ -8540,6 +8724,7 @@
 	call GetBattleVar
 	bit SUBSTATUS_SUBSTITUTE, a
 	ret
+
 ; 37380
 
 
@@ -8546,7 +8731,7 @@
 BattleCommand_SelfDestruct: ; 37380
 	callba MobileFn_10610d
 	ld a, BATTLEANIM_PLAYER_DAMAGE
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld c, 3
 	call DelayFrames
 	ld a, BATTLE_VARS_STATUS
@@ -8572,6 +8757,7 @@
 	callba DrawEnemyHUD
 	call WaitBGMap
 	jp RefreshBattleHuds
+
 ; 373c9
 
 
@@ -8603,6 +8789,7 @@
 	ld a, 1
 	and a
 	ret
+
 ; 3747b
 
 
@@ -8619,6 +8806,7 @@
 	ld [AlreadyDisobeyed], a
 	call DoMove
 	jp EndMoveEffect
+
 ; 37492
 
 
@@ -8650,6 +8838,7 @@
 .failed
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 37536
 
 
@@ -8686,6 +8875,7 @@
 	call RefreshBattleHuds
 	ld hl, WasDefrostedText
 	jp StdBattleTextBox
+
 ; 37588
 
 
@@ -8709,6 +8899,7 @@
 BattleCommand5d: ; 37791
 ; unused
 	ret
+
 ; 37792
 
 
@@ -8751,6 +8942,7 @@
 	ld [hli], a
 	ld [hl], a
 	ret
+
 ; 377be
 
 
@@ -8770,6 +8962,7 @@
 
 	pop hl
 	ret
+
 ; 377ce
 
 
@@ -8800,6 +8993,7 @@
 	ld d, a
 	pop bc
 	ret
+
 ; 37874
 
 
@@ -8812,9 +9006,9 @@
 	ld hl, BattleMonHappiness
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3791a ; 37915 $3
+	jr z, .got_happiness
 	ld hl, EnemyMonHappiness
-.asm_3791a
+.got_happiness
 	ld a, $ff
 	sub [hl]
 	ld [hMultiplicand + 2], a
@@ -8832,6 +9026,7 @@
 	ld d, a
 	pop bc
 	ret
+
 ; 37939
 
 
@@ -8854,9 +9049,11 @@
 	call AnimateCurrentMove
 	ld hl, CoveredByVeilText
 	jp StdBattleTextBox
+
 .failed
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 37962
 
 
@@ -8872,6 +9069,7 @@
 	bit SCREENS_SAFEGUARD, [hl]
 	pop hl
 	ret
+
 ; 37972
 
 
@@ -8880,7 +9078,7 @@
 	ld hl, EnemyScreens
 	ld a, [hBattleTurn]
 	and a
-	jr z, .got_turn ; 37978 $3
+	jr z, .got_turn
 	ld hl, PlayerScreens
 .got_turn
 	bit SCREENS_SAFEGUARD, [hl]
@@ -8891,6 +9089,7 @@
 	ld hl, SafeguardProtectText
 	call StdBattleTextBox
 	jp EndMoveEffect
+
 ; 37991
 
 
@@ -8905,10 +9104,10 @@
 	ld a, [hli]
 	cp b
 	jr nc, .ok
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .loop
+
 .ok
 	ld d, [hl]
 	push de
@@ -8954,7 +9153,7 @@
 
 ; Transition into switchmon menu
 	call LoadStandardMenuDataHeader
-	callba Function3d2f7
+	callba SetUpBattlePartyMenu_NoLoop
 
 	callba ForcePickSwitchMonInBattle
 
@@ -8961,12 +9160,12 @@
 ; Return to battle scene
 	call ClearPalettes
 	callba _LoadBattleFontsHPBar
-	call WriteBackup
+	call CloseWindow
 	call ClearSprites
 	hlcoord 1, 0
 	lb bc, 4, 10
 	call ClearBox
-	ld b, SCGB_01
+	ld b, SCGB_BATTLE_COLORS
 	call GetSGBLayout
 	call SetPalettes
 	call BatonPass_LinkPlayerSwitch
@@ -9016,6 +9215,7 @@
 	call CallBattleCore
 
 	jr ResetBatonPassStatus
+
 ; 37a67
 
 
@@ -9025,16 +9225,17 @@
 	ret z
 
 	ld a, 1
-	ld [wd0ec], a
+	ld [wPlayerAction], a
 
 	call LoadStandardMenuDataHeader
 	ld hl, LinkBattleSendReceiveAction
 	call CallBattleCore
-	call WriteBackup
+	call CloseWindow
 
 	xor a
-	ld [wd0ec], a
+	ld [wPlayerAction], a
 	ret
+
 ; 37a82
 
 
@@ -9061,7 +9262,8 @@
 	add BATTLEACTION_SWITCH1
 	ld [wBattleAction], a
 .switch
-	jp WriteBackup
+	jp CloseWindow
+
 ; 37aab
 
 
@@ -9068,6 +9270,7 @@
 FailedBatonPass: ; 37aab
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 37ab1
 
 
@@ -9109,6 +9312,7 @@
 	ld [wPlayerWrapCount], a
 	ld [wEnemyWrapCount], a
 	ret
+
 ; 37ae9
 
 
@@ -9119,6 +9323,7 @@
 	ld a, [CurBattleMon]
 	ld e, a
 	jr CheckAnyOtherAliveMons
+
 ; 37af6
 
 
@@ -9167,6 +9372,7 @@
 	ld a, b
 	and a
 	ret
+
 ; 37b1d
 
 
@@ -9194,6 +9400,7 @@
 	ld [hli], a
 	ld [hl], a
 	ret
+
 ; 37b39
 
 
@@ -9203,28 +9410,28 @@
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	bit SUBSTATUS_LEECH_SEED, [hl]
-	jr z, .asm_37b4a ; 37b40 $8
+	jr z, .not_leeched
 	res SUBSTATUS_LEECH_SEED, [hl]
 	ld hl, ShedLeechSeedText
 	call StdBattleTextBox
-.asm_37b4a
+.not_leeched
 
 	ld hl, PlayerScreens
 	ld de, wPlayerWrapCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37b5b ; 37b53 $6
+	jr z, .got_screens_wrap
 	ld hl, EnemyScreens
 	ld de, wEnemyWrapCount
-.asm_37b5b
+.got_screens_wrap
 	bit SCREENS_SPIKES, [hl]
-	jr z, .asm_37b69 ; 37b5d $a
+	jr z, .no_spikes
 	res SCREENS_SPIKES, [hl]
 	ld hl, BlewSpikesText
 	push de
 	call StdBattleTextBox
 	pop de
-.asm_37b69
+.no_spikes
 
 	ld a, [de]
 	and a
@@ -9233,6 +9440,7 @@
 	ld [de], a
 	ld hl, ReleasedByText
 	jp StdBattleTextBox
+
 ; 37b74
 
 
@@ -9239,13 +9447,15 @@
 BattleCommand_HealMorn: ; 37b74
 ; healmorn
 	ld b, MORN
-	jr BattleCommand_HealMorn6c
+	jr BattleCommand_TimeBasedHealContinue
+
 ; 37b78
 
 BattleCommand_HealDay: ; 37b78
 ; healday
 	ld b, DAY
-	jr BattleCommand_HealMorn6c
+	jr BattleCommand_TimeBasedHealContinue
+
 ; 37b7c
 
 BattleCommand_HealNite: ; 37b7c
@@ -9254,7 +9464,7 @@
 	; fallthrough
 ; 37b7e
 
-BattleCommand_HealMorn6c: ; 37b7e
+BattleCommand_TimeBasedHealContinue: ; 37b7e
 ; Time- and weather-sensitive heal.
 
 	ld hl, BattleMonMaxHP
@@ -9284,7 +9494,7 @@
 	ld a, [TimeOfDay]
 	cp b
 	jr z, .Weather
-	dec c
+	dec c ; double
 
 .Weather
 	ld a, [Weather]
@@ -9296,16 +9506,14 @@
 	inc c
 	cp WEATHER_SUN
 	jr z, .Heal
-rept 2
 	dec c
-endr
+	dec c
 
 .Heal
 	ld b, 0
 	ld hl, .Multipliers
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 
 	ld a, [hli]
 	ld h, [hl]
@@ -9348,6 +9556,7 @@
 	ret nz
 	callba HiddenPowerDamage
 	ret
+
 ; 37bf4
 
 
@@ -9360,6 +9569,7 @@
 	call AnimateCurrentMove
 	ld hl, DownpourText
 	jp StdBattleTextBox
+
 ; 37c07
 
 
@@ -9372,6 +9582,7 @@
 	call AnimateCurrentMove
 	ld hl, SunGotBrightText
 	jp StdBattleTextBox
+
 ; 37c1a
 
 
@@ -9409,6 +9620,7 @@
 .failed
 	call AnimateFailedMove
 	jp PrintButItFailed
+
 ; 37c55
 
 
@@ -9419,7 +9631,7 @@
 	ld de, PlayerStatLevels
 	ld a, [hBattleTurn]
 	and a
-	jr z, .pointers_correct ; 37c5e $4
+	jr z, .pointers_correct
 ; It's the enemy's turn, so swap the pointers.
 	push hl
 	ld h, d
@@ -9433,9 +9645,9 @@
 .loop
 	ld a, [hli]
 	cp BASE_STAT_LEVEL
-	jr nz, .break ; 37c6a $a
+	jr nz, .break
 	dec b
-	jr nz, .loop ; 37c6d $f8
+	jr nz, .loop
 	pop hl
 	call AnimateFailedMove
 	jp PrintButItFailed
@@ -9448,12 +9660,12 @@
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .loop2 ; 37c7d $fa
+	jr nz, .loop2
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .calc_enemy_stats ; 37c82 $5
+	jr nz, .calc_enemy_stats
 	call CalcPlayerStats
-	jr .merge ; 37c87 $3
+	jr .merge
 
 .calc_enemy_stats
 	call CalcEnemyStats
@@ -9461,6 +9673,7 @@
 	call AnimateCurrentMove
 	ld hl, CopiedStatsText
 	jp StdBattleTextBox
+
 ; 37c95
 
 
@@ -9523,6 +9736,7 @@
 	xor a
 	ld [AttackMissed], a
 	ret
+
 ; 37ce6
 
 
@@ -9547,6 +9761,7 @@
 	ld [hli], a
 	ld [hl], a
 	ret
+
 ; 37d02
 
 
@@ -9557,6 +9772,7 @@
 	ret nz
 	ld b, charge_command
 	jp SkipToBattleCommand
+
 ; 37d0d
 
 
@@ -9564,12 +9780,12 @@
 ; checkfuturesight
 
 	ld hl, wPlayerFutureSightCount
-	ld de, wc727
+	ld de, wPlayerFutureSightDamage
 	ld a, [hBattleTurn]
 	and a
 	jr z, .ok
 	ld hl, wEnemyFutureSightCount
-	ld de, wc729
+	ld de, wEnemyFutureSightDamage
 .ok
 
 	ld a, [hl]
@@ -9586,6 +9802,7 @@
 	ld [CurDamage + 1], a
 	ld b, futuresight_command
 	jp SkipToBattleCommand
+
 ; 37d34
 
 BattleCommand_FutureSight: ; 37d34
@@ -9592,7 +9809,7 @@
 ; futuresight
 
 	call CheckUserIsCharging
-	jr nz, .asm_37d4b ; 37d37 $12
+	jr nz, .AlreadyChargingFutureSight
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld b, a
@@ -9602,17 +9819,17 @@
 	ld a, BATTLE_VARS_LAST_MOVE
 	call GetBattleVarAddr
 	ld [hl], b
-.asm_37d4b
+.AlreadyChargingFutureSight
 	ld hl, wPlayerFutureSightCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37d56 ; 37d51 $3
+	jr z, .GotFutureSightCount
 	ld hl, wEnemyFutureSightCount
-.asm_37d56
+.GotFutureSightCount
 	ld a, [hl]
 	and a
-	jr nz, .asm_37d87 ; 37d58 $2d
-	ld a, $4
+	jr nz, .failed
+	ld a, 4
 	ld [hl], a
 	call BattleCommand_LowerSub
 	call BattleCommand_MoveDelay
@@ -9619,12 +9836,12 @@
 	ld hl, ForesawAttackText
 	call StdBattleTextBox
 	call BattleCommand_RaiseSub
-	ld de, wc727
+	ld de, wPlayerFutureSightDamage
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37d77 ; 37d72 $3
-	ld de, wc729
-.asm_37d77
+	jr z, .StoreDamage
+	ld de, wEnemyFutureSightDamage
+.StoreDamage
 	ld hl, CurDamage
 	ld a, [hl]
 	ld [de], a
@@ -9635,12 +9852,14 @@
 	ld [de], a
 	ld [hl], 0
 	jp EndMoveEffect
-.asm_37d87
+
+.failed
 	pop bc
 	call ResetDamage
 	call AnimateFailedMove
 	call PrintButItFailed
 	jp EndMoveEffect
+
 ; 37d94
 
 
@@ -9657,9 +9876,11 @@
 	ret nz
 	ld [hl], 50 percent + 1
 	ret
+
 .rain
 	ld [hl], 100 percent
 	ret
+
 ; 37daa
 
 
@@ -9668,6 +9889,7 @@
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
 	ret
+
 ; 37db2
 
 
@@ -9681,6 +9903,7 @@
 .go
 	ld b, [hl]
 	jp GetItemHeldEffect
+
 ; 37dc1
 
 
@@ -9694,6 +9917,7 @@
 .go
 	ld b, [hl]
 	jp GetItemHeldEffect
+
 ; 37dd0
 
 
@@ -9716,6 +9940,7 @@
 	ld c, h
 	pop hl
 	ret
+
 ; 37de9
 
 
@@ -9734,6 +9959,7 @@
 	pop de
 	pop hl
 	ret
+
 ; 37e01
 
 
@@ -9752,6 +9978,7 @@
 	pop de
 	pop hl
 	ret
+
 ; 37e19
 
 
@@ -9773,15 +10000,16 @@
 	ld a, BATTLEANIM_PLAYER_DAMAGE
 
 .player
-	ld [wcfca], a
+	ld [wNumHits], a
 
 	jp PlayUserBattleAnim
+
 ; 37e36
 
 
 LoadMoveAnim: ; 37e36
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 	ld [FXAnimIDHi], a
 
 	ld a, BATTLE_VARS_MOVE_ANIM
@@ -9810,6 +10038,7 @@
 	pop de
 	pop hl
 	ret
+
 ; 37e54
 
 
@@ -9819,7 +10048,7 @@
 	ld a, d
 	ld [FXAnimIDHi], a
 	xor a
-	ld [wcfca], a
+	ld [wNumHits], a
 
 	push hl
 	push de
@@ -9833,6 +10062,7 @@
 	pop de
 	pop hl
 	ret
+
 ; 37e73
 
 
@@ -9840,6 +10070,7 @@
 	ld a, BANK(BattleCore)
 	rst FarCall
 	ret
+
 ; 37e77
 
 
@@ -9847,6 +10078,7 @@
 	call BattleCommand_LowerSub
 	call BattleCommand_MoveDelay
 	jp BattleCommand_RaiseSub
+
 ; 37e80
 
 
@@ -9855,6 +10087,7 @@
 ; Wait 40 frames.
 	ld c, 40
 	jp DelayFrames
+
 ; 37e85
 
 
@@ -9864,6 +10097,7 @@
 ; Used in multi-hit moves.
 	ld hl, .text
 	jp BattleTextBox
+
 .text
 	db "@"
 ; 37e8c
@@ -9885,6 +10119,7 @@
 	ld a, l
 	ld [BattleScriptBufferLoc], a
 	ret
+
 ; 37ea1
 
 
@@ -9896,6 +10131,7 @@
 	call GetMoveByte
 	pop bc
 	ret
+
 ; 37ead
 
 
@@ -9906,6 +10142,7 @@
 	call AddNTimes
 	ld a, Bank(Moves)
 	jp FarCopyBytes
+
 ; 37ebb
 
 
@@ -9912,6 +10149,7 @@
 GetMoveByte: ; 37ebb
 	ld a, BANK(Moves)
 	jp GetFarByte
+
 ; 37ec0
 
 
@@ -9918,6 +10156,7 @@
 DisappearUser: ; 37ec0
 	callba _DisappearUser
 	ret
+
 ; 37ec7
 
 
@@ -9924,6 +10163,7 @@
 AppearUserLowerSub: ; 37ec7
 	callba _AppearUserLowerSub
 	ret
+
 ; 37ece
 
 
@@ -9930,6 +10170,7 @@
 AppearUserRaiseSub: ; 37ece
 	callba _AppearUserRaiseSub
 	ret
+
 ; 37ed5
 
 
@@ -9943,4 +10184,5 @@
 	pop de
 	pop hl
 	ret
+
 ; 37ee2
--- /dev/null
+++ b/battle/menu.asm
@@ -1,0 +1,118 @@
+LoadBattleMenu: ; 24ef2
+	ld hl, BattleMenuDataHeader
+	call LoadMenuDataHeader
+	ld a, [wd0d2]
+	ld [wMenuCursorBuffer], a
+	call InterpretBattleMenu
+	ld a, [wMenuCursorBuffer]
+	ld [wd0d2], a
+	call ExitMenu
+	ret
+; 24f0b
+
+SafariBattleMenu: ; 24f0b
+; untranslated
+	ld hl, MenuDataHeader_0x24f4e
+	call LoadMenuDataHeader
+	jr Function24f19
+; 24f13
+
+ContestBattleMenu: ; 24f13
+	ld hl, MenuDataHeader_0x24f89
+	call LoadMenuDataHeader
+; 24f19
+
+Function24f19: ; 24f19
+	ld a, [wd0d2]
+	ld [wMenuCursorBuffer], a
+	call _2DMenu
+	ld a, [wMenuCursorBuffer]
+	ld [wd0d2], a
+	call ExitMenu
+	ret
+; 24f2c
+
+BattleMenuDataHeader: ; 24f2c
+	db $40 ; flags
+	db 12, 08 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f34
+	db 1 ; default option
+; 24f34
+
+MenuData_0x24f34: ; 0x24f34
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 6 ; spacing
+	dba Strings24f3d
+	dbw BANK(MenuData_0x24f34), 0
+; 0x24f3d
+
+Strings24f3d: ; 0x24f3d
+	db "FIGHT@"
+	db "<PKMN>@"
+	db "PACK@"
+	db "RUN@"
+; 24f4e
+
+MenuDataHeader_0x24f4e: ; 24f4e
+	db $40 ; flags
+	db 12, 00 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f56
+	db 1 ; default option
+; 24f56
+
+MenuData_0x24f56: ; 24f56
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 11 ; spacing
+	dba Strings24f5f
+	dba Function24f7c
+; 24f5f
+
+Strings24f5f: ; 24f5f
+	db "サファりボール×  @" ; "SAFARI BALL×  @"
+	db "エサをなげる@" ; "THROW BAIT"
+	db "いしをなげる@" ; "THROW ROCK"
+	db "にげる@" ; "RUN"
+; 24f7c
+
+Function24f7c: ; 24f7c
+	hlcoord 17, 13
+	ld de, wSafariBallsRemaining
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ret
+; 24f89
+
+MenuDataHeader_0x24f89: ; 24f89
+	db $40 ; flags
+	db 12, 02 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f91
+	db 1 ; default option
+; 24f91
+
+MenuData_0x24f91: ; 24f91
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 12 ; spacing
+	dba Strings24f9a
+	dba Function24fb2
+; 24f9a
+
+Strings24f9a: ; 24f9a
+	db "FIGHT@"
+	db "<PKMN>", "@"
+	db "PARKBALL×  @"
+	db "RUN@"
+; 24fb2
+
+Function24fb2: ; 24fb2
+	hlcoord 13, 16
+	ld de, wParkBallsRemaining
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ret
+; 24fbf
--- /dev/null
+++ b/battle/objects/data.asm
@@ -1,0 +1,573 @@
+BattleAnimObjects: ; ccb56
+battleanimobj: MACRO
+
+; ??, ??, frameset, function, ??, tile offset
+	db \1, \2, \3, \4, \5, \6
+endm
+
+
+; ANIM_OBJ_00
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_01
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_02
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_03
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_04
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_05
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_06
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_07
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, $02, $01
+
+; ANIM_OBJ_08
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_09
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_0A
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, $02, $01
+
+; ANIM_OBJ_0B
+	battleanimobj $01, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, $04, $03
+
+; ANIM_OBJ_0C
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, $04, $03
+
+; ANIM_OBJ_0D
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, $04, $03
+
+; ANIM_OBJ_0E
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, $04, $03
+
+; ANIM_OBJ_0F
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, $04, $03
+
+; ANIM_OBJ_BURNED
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, $04, $03
+
+; ANIM_OBJ_11
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, $06, $0a
+
+; ANIM_OBJ_12
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, $06, $0a
+
+; ANIM_OBJ_13
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, $06, $0a
+
+; ANIM_OBJ_14
+	battleanimobj $21, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_0B, $05, $06
+
+; ANIM_OBJ_POKE_BALL
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, $04, $0b
+
+; ANIM_OBJ_16
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, $04, $0b
+
+; ANIM_OBJ_17
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08
+
+; ANIM_OBJ_18
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08
+
+; ANIM_OBJ_19
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, $02, $0c
+
+; ANIM_OBJ_1A
+	battleanimobj $01, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, $02, $0c
+
+; ANIM_OBJ_1B
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07
+
+; ANIM_OBJ_1C
+	battleanimobj $01, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07
+
+; ANIM_OBJ_1D
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, $07, $09
+
+; ANIM_OBJ_1E
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, $07, $09
+
+; ANIM_OBJ_1F
+	battleanimobj $01, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, $07, $09
+
+; ANIM_OBJ_20
+	battleanimobj $01, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, $06, $21
+
+; ANIM_OBJ_21
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, $06, $0d
+
+; ANIM_OBJ_22
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, $06, $0d
+
+; ANIM_OBJ_23
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, $02, $0e
+
+; ANIM_OBJ_24
+	battleanimobj $61, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, $06, $04
+
+; ANIM_OBJ_25
+	battleanimobj $01, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, $06, $04
+
+; ANIM_OBJ_26
+	battleanimobj $01, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, $05, $0f
+
+; ANIM_OBJ_27
+	battleanimobj $61, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, $03, $10
+
+; ANIM_OBJ_28
+	battleanimobj $61, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10
+
+; ANIM_OBJ_29
+	battleanimobj $01, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, $06, $0a
+
+; ANIM_OBJ_FROZEN
+	battleanimobj $01, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, $06, $0a
+
+; ANIM_OBJ_2B
+	battleanimobj $01, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, $07, $11
+
+; ANIM_OBJ_2C
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, $03, $0d
+
+; ANIM_OBJ_2D
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_2E
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_2F
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_30
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, $03, $05
+
+; ANIM_OBJ_31
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_32
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, $02, $08
+
+; ANIM_OBJ_33
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_34
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, $02, $08
+
+; ANIM_OBJ_35
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, $02, $02
+
+; ANIM_OBJ_36
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, $02, $02
+
+; ANIM_OBJ_37
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_38
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_39
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_3A
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_3B
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_3C
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, $05, $12
+
+; ANIM_OBJ_3D
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, $05, $12
+
+; ANIM_OBJ_GUST
+	battleanimobj $21, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, $02, $13
+
+; ANIM_OBJ_3F
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, $02, $14
+
+; ANIM_OBJ_40
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, $02, $14
+
+; ANIM_OBJ_41
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, $02, $14
+
+; ANIM_OBJ_42
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, $02, $14
+
+; ANIM_OBJ_43
+	battleanimobj $21, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, $02, $14
+
+; ANIM_OBJ_44
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, $03, $11
+
+; ANIM_OBJ_45
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, $05, $12
+
+; ANIM_OBJ_46
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, $02, $15
+
+; ANIM_OBJ_47
+	battleanimobj $01, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, $03, $11
+
+; ANIM_OBJ_48
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, $05, $16
+
+; ANIM_OBJ_49
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, $05, $16
+
+; ANIM_OBJ_4A
+	battleanimobj $21, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_20, $05, $06
+
+; ANIM_OBJ_4B
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, $02, $0e
+
+; ANIM_OBJ_4C
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, $02, $17
+
+; ANIM_OBJ_4D
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, $03, $11
+
+; ANIM_OBJ_4E
+	battleanimobj $61, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, $03, $10
+
+; ANIM_OBJ_4F
+	battleanimobj $61, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10
+
+; ANIM_OBJ_50
+	battleanimobj $21, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $03, $18
+
+; ANIM_OBJ_51
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $02, $18
+
+; ANIM_OBJ_CHICK
+	battleanimobj $21, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, $03, $19
+
+; ANIM_OBJ_53
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, $02, $19
+
+; ANIM_OBJ_54
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, $02, $19
+
+; ANIM_OBJ_SKULL
+	battleanimobj $01, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, $02, $0c
+
+; ANIM_OBJ_56
+	battleanimobj $21, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, $07, $1a
+
+; ANIM_OBJ_57
+	battleanimobj $21, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, $07, $1a
+
+; ANIM_OBJ_58
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, $02, $1a
+
+; ANIM_OBJ_PARALYZED
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, $03, $19
+
+; ANIM_OBJ_5A
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, $02, $1b
+
+; ANIM_OBJ_5B
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c
+
+; ANIM_OBJ_5C
+	battleanimobj $21, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_29, $02, $1c
+
+; ANIM_OBJ_5D
+	battleanimobj $21, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c
+
+; ANIM_OBJ_5E
+	battleanimobj $21, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_2A, $02, $1c
+
+; ANIM_OBJ_5F
+	battleanimobj $61, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_2B, $02, $1d
+
+; ANIM_OBJ_60
+	battleanimobj $61, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, $02, $1d
+
+; ANIM_OBJ_61
+	battleanimobj $01, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, $04, $1e
+
+; ANIM_OBJ_62
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, $02, $15
+
+; ANIM_OBJ_63
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, $07, $19
+
+; ANIM_OBJ_64
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, $02, $14
+
+; ANIM_OBJ_65
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, $02, $11
+
+; ANIM_OBJ_66
+	battleanimobj $01, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_2A, $04, $23
+
+; ANIM_OBJ_67
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, $02, $1f
+
+; ANIM_OBJ_68
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, $02, $1f
+
+; ANIM_OBJ_69
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, $02, $1f
+
+; ANIM_OBJ_6A
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, $03, $23
+
+; ANIM_OBJ_6B
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, $02, $1f
+
+; ANIM_OBJ_6C
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11
+
+; ANIM_OBJ_6D
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11
+
+; ANIM_OBJ_6E
+	battleanimobj $21, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, $02, $20
+
+; ANIM_OBJ_6F
+	battleanimobj $21, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, $02, $04
+
+; ANIM_OBJ_70
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, $02, $18
+
+; ANIM_OBJ_71
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, $06, $0d
+
+; ANIM_OBJ_72
+	battleanimobj $01, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, $03, $12
+
+; ANIM_OBJ_73
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, $02, $08
+
+; ANIM_OBJ_74
+	battleanimobj $21, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, $02, $1c
+
+; ANIM_OBJ_75
+	battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, $02, $15
+
+; ANIM_OBJ_76
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, $02, $14
+
+; ANIM_OBJ_77
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, $02, $11
+
+; ANIM_OBJ_78
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, $02, $22
+
+; ANIM_OBJ_79
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, $02, $22
+
+; ANIM_OBJ_7A
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, $02, $1f
+
+; ANIM_OBJ_7B
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, $03, $11
+
+; ANIM_OBJ_7C
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, $03, $05
+
+; ANIM_OBJ_7D
+	battleanimobj $a1, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, $06, $13
+
+; ANIM_OBJ_HEART
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, $04, $23
+
+; ANIM_OBJ_7F
+	battleanimobj $01, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, $04, $03
+
+; ANIM_OBJ_80
+	battleanimobj $01, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, $04, $03
+
+; ANIM_OBJ_81
+	battleanimobj $21, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_29, $02, $1f
+
+; ANIM_OBJ_82
+	battleanimobj $21, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, $02, $1f
+
+; ANIM_OBJ_83
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, $02, $1f
+
+; ANIM_OBJ_84
+	battleanimobj $21, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, $03, $1f
+
+; ANIM_OBJ_85
+	battleanimobj $01, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, $02, $0e
+
+; ANIM_OBJ_86
+	battleanimobj $21, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, $04, $1f
+
+; ANIM_OBJ_87
+	battleanimobj $21, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, $02, $1f
+
+; ANIM_OBJ_88
+	battleanimobj $21, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, $02, $1f
+
+; ANIM_OBJ_89
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, $02, $1f
+
+; ANIM_OBJ_8A
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, $03, $23
+
+; ANIM_OBJ_8B
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, $02, $19
+
+; ANIM_OBJ_8C
+	battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, $02, $15
+
+; ANIM_OBJ_8D
+	battleanimobj $21, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, $04, $19
+
+; ANIM_OBJ_8E
+	battleanimobj $21, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, $02, $1f
+
+; ANIM_OBJ_8F
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, $02, $0a
+
+; ANIM_OBJ_90
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, $04, $03
+
+; ANIM_OBJ_91
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, $02, $08
+
+; ANIM_OBJ_92
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, $02, $1b
+
+; ANIM_OBJ_93
+	battleanimobj $21, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, $04, $23
+
+; ANIM_OBJ_94
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, $02, $25
+
+; ANIM_OBJ_95
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, $02, $25
+
+; ANIM_OBJ_96
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, $02, $25
+
+; ANIM_OBJ_97
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, $06, $25
+
+; ANIM_OBJ_98
+	battleanimobj $61, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, $05, $23
+
+; ANIM_OBJ_99
+	battleanimobj $21, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, $02, $23
+
+; ANIM_OBJ_9A
+	battleanimobj $21, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, $03, $23
+
+; ANIM_OBJ_9B
+	battleanimobj $21, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, $02, $25
+
+; ANIM_OBJ_9C
+	battleanimobj $21, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, $03, $24
+
+; ANIM_OBJ_9D
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, $02, $24
+
+; ANIM_OBJ_9E
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, $03, $24
+
+; ANIM_OBJ_9F
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, $04, $12
+
+; ANIM_OBJ_A0
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_A1
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, $02, $02
+
+; ANIM_OBJ_A2
+	battleanimobj $21, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, $07, $0f
+
+; ANIM_OBJ_A3
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, $03, $05
+
+; ANIM_OBJ_A4
+	battleanimobj $21, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, $02, $25
+
+; ANIM_OBJ_A5
+	battleanimobj $61, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, $02, $23
+
+; ANIM_OBJ_A6
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, $02, $0e
+
+; ANIM_OBJ_A7
+	battleanimobj $01, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, $02, $24
+
+; ANIM_OBJ_A8
+	battleanimobj $21, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, $02, $13
+
+; ANIM_OBJ_A9
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, $02, $13
+
+; ANIM_OBJ_AA
+	battleanimobj $01, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01
+
+; ANIM_OBJ_AB
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, $02, $0e
+
+; ANIM_OBJ_AC
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, $06, $17
+
+; ANIM_OBJ_AD
+	battleanimobj $01, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, $02, $01
+
+; ANIM_OBJ_AE
+	battleanimobj $21, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, $03, $11
+
+; ANIM_OBJ_AF
+	battleanimobj $21, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, $02, $04
+
+; ANIM_OBJ_B0
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, $04, $1c
+
+; ANIM_OBJ_B1
+	battleanimobj $01, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, $02, $19
+
+; ANIM_OBJ_B2
+	battleanimobj $01, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, $07, $09
+
+; ANIM_OBJ_B3
+	battleanimobj $61, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, $03, $27
+
+; ANIM_OBJ_B4
+	battleanimobj $61, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, $06, $15
+
+; ANIM_OBJ_B5
+	battleanimobj $21, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, $07, $09
+
+; ANIM_OBJ_FLOWER
+	battleanimobj $01, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, $04, $1e
+
+; ANIM_OBJ_COTTON
+	battleanimobj $01, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, $04, $1f
+
+; ANIM_OBJ_PLAYERFEETFOLLOW
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, $00, $28
+
+; ANIM_OBJ_ENEMYFEETFOLLOW
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, $01, $29
+
+; ANIM_OBJ_BA
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, $00, $28
+
+; ANIM_OBJ_BB
+	battleanimobj $00, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, $01, $29
+
+; ccfbe
--- /dev/null
+++ b/battle/objects/engine.asm
@@ -1,0 +1,314 @@
+QueueBattleAnimation: ; cc9a1 (33:49a1)
+	ld hl, ActiveAnimObjects
+	ld e, 10
+.loop
+	ld a, [hl]
+	and a
+	jr z, .done
+	ld bc, BATTLEANIMSTRUCT_LENGTH
+	add hl, bc
+	dec e
+	jr nz, .loop
+	scf
+	ret
+
+.done
+	ld c, l
+	ld b, h
+	ld hl, wNumActiveBattleAnims
+	inc [hl]
+	call InitBattleAnimation
+	ret
+
+DeinitBattleAnimation: ; cc9bd
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld [hl], $0
+	ret
+
+; cc9c4
+
+InitBattleAnimation: ; cc9c4 (33:49c4)
+	ld a, [wBattleAnimTemp0]
+	ld e, a
+	ld d, 0
+	ld hl, BattleAnimObjects
+rept 6
+	add hl, de
+endr
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld a, [wNumActiveBattleAnims]
+	ld [hli], a ; Index
+	ld a, [de]
+	inc de
+	ld [hli], a ; 01
+	ld a, [de]
+	inc de
+	ld [hli], a ; 02
+	ld a, [de]
+	inc de
+	ld [hli], a ; Frameset ID
+	ld a, [de]
+	inc de
+	ld [hli], a ; Function
+	ld a, [de]
+	inc de
+	ld [hli], a ; 05
+	ld a, [de]
+	call GetBattleAnimTileOffset
+	ld [hli], a ; Tile ID
+	ld a, [wBattleAnimTemp1]
+	ld [hli], a ; X Coord
+	ld a, [wBattleAnimTemp2]
+	ld [hli], a ; Y Coord
+	xor a
+	ld [hli], a ; X Offset
+	ld [hli], a ; Y Offset
+	ld a, [wBattleAnimTemp3]
+	ld [hli], a ; 0b
+	xor a
+	ld [hli], a ; 0c
+	dec a
+	ld [hli], a ; 0d
+	xor a
+	ld [hli], a ; 0e
+	ld [hli], a ; 0f
+	ld [hl], a  ; 10
+	ret
+
+BattleAnimOAMUpdate: ; cca09
+	call InitBattleAnimBuffer
+	call GetBattleAnimFrame
+	cp -3
+	jp z, .done
+	cp -4
+	jp z, .delete
+	push af
+	ld hl, wBattleAnimTempOAMFlags
+	ld a, [wBattleAnimTemp7]
+	xor [hl]
+	and $e0
+	ld [hl], a
+	pop af
+	push bc
+	call GetBattleAnimOAMPointer
+	ld a, [wBattleAnimTempTileID]
+	add [hl]
+	ld [wBattleAnimTempTileID], a
+	inc hl
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wBattleAnimOAMPointerLo]
+	ld e, a
+	ld d, Sprites / $100
+.loop
+	ld a, [wBattleAnimTempYCoord]
+	ld b, a
+	ld a, [wBattleAnimTempYOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 6, [hl]
+	jr z, .no_yflip
+	add $8
+	xor $ff
+	inc a
+
+.no_yflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempXCoord]
+	ld b, a
+	ld a, [wBattleAnimTempXOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 5, [hl]
+	jr z, .no_xflip
+	add $8
+	xor $ff
+	inc a
+
+.no_xflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempTileID]
+	add $31
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempOAMFlags]
+	ld b, a
+	ld a, [hl]
+	xor b
+	and $e0
+	ld b, a
+	ld a, [hl]
+	and $10
+	or b
+	ld b, a
+	ld a, [wBattleAnimTempPalette]
+	and $f
+	or b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, e
+	ld [wBattleAnimOAMPointerLo], a
+	cp $a0
+	jr nc, .exit_set_carry
+	dec c
+	jr nz, .loop
+	pop bc
+	jr .done
+
+.delete
+	call DeinitBattleAnimation
+
+.done
+	and a
+	ret
+
+.exit_set_carry
+	pop bc
+	scf
+	ret
+
+; ccaaa
+
+InitBattleAnimBuffer: ; ccaaa
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	and %10000000
+	ld [wBattleAnimTempOAMFlags], a
+	xor a
+	ld [wBattleAnimTemp7], a
+	ld hl, BATTLEANIMSTRUCT_PALETTE
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTempPalette], a
+	ld hl, BATTLEANIMSTRUCT_02
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTemp1], a
+	ld hl, BATTLEANIMSTRUCT_TILEID
+	add hl, bc
+	ld a, [hli]
+	ld [wBattleAnimTempTileID], a
+	ld a, [hli]
+	ld [wBattleAnimTempXCoord], a
+	ld a, [hli]
+	ld [wBattleAnimTempYCoord], a
+	ld a, [hli]
+	ld [wBattleAnimTempXOffset], a
+	ld a, [hli]
+	ld [wBattleAnimTempYOffset], a
+	ld a, [hBattleTurn]
+	and a
+	ret z
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTempOAMFlags], a
+	bit 0, [hl]
+	ret z
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hli]
+	ld d, a
+	ld a, (-10 * 8) + 4
+	sub d
+	ld [wBattleAnimTempXCoord], a
+	ld a, [hli]
+	ld d, a
+	ld a, [wBattleAnimTemp1]
+	cp $ff
+	jr nz, .check_kinesis_softboiled_milkdrink
+	ld a, 5 * 8
+	add d
+	jr .done
+
+.check_kinesis_softboiled_milkdrink
+	sub d
+	push af
+	ld a, [FXAnimIDHi]
+	or a
+	jr nz, .no_sub
+	ld a, [FXAnimIDLo]
+	cp KINESIS
+	jr z, .kinesis
+	cp SOFTBOILED
+	jr z, .softboiled
+	cp MILK_DRINK
+	jr nz, .no_sub
+.kinesis
+.softboiled
+.milk_drink
+	pop af
+	sub 1 * 8
+	jr .done
+
+.no_sub
+	pop af
+.done
+	ld [wBattleAnimTempYCoord], a
+	ld a, [hli]
+	xor $ff
+	inc a
+	ld [wBattleAnimTempXOffset], a
+	ret
+
+; ccb31
+
+GetBattleAnimTileOffset: ; ccb31 (33:4b31)
+	push hl
+	push bc
+	ld hl, wBattleAnimTileDict
+	ld b, a
+	ld c, 10 / 2
+.loop
+	ld a, [hli]
+	cp b
+	jr z, .load
+	inc hl
+	dec c
+	jr nz, .loop
+	xor a
+	jr .done
+
+.load
+	ld a, [hl]
+.done
+	pop bc
+	pop hl
+	ret
+
+_ExecuteBGEffects: ; ccb48
+	callab ExecuteBGEffects
+	ret
+
+; ccb4f
+
+_QueueBGEffect: ; ccb4f (33:4b4f)
+	callab QueueBGEffect
+	ret
+
+; ccb56 (33:4b56)
--- /dev/null
+++ b/battle/objects/framesets.asm
@@ -1,0 +1,1270 @@
+BattleAnimFrameData: ; ce85e
+	dw .Frameset_00 ; 00
+	dw .Frameset_01 ; 01
+	dw .Frameset_02 ; 02
+	dw .Frameset_03 ; 03
+	dw .Frameset_04 ; 04
+	dw .Frameset_05 ; 05
+	dw .Frameset_06 ; 06
+	dw .Frameset_07 ; 07
+	dw .Frameset_08 ; 08
+	dw .Frameset_09 ; 09
+	dw .Frameset_0a ; 0a
+	dw .Frameset_0b ; 0b
+	dw .Frameset_0c ; 0c
+	dw .Frameset_0d ; 0d
+	dw .Frameset_0e ; 0e
+	dw .Frameset_0f ; 0f
+	dw .Frameset_10 ; 10
+	dw .Frameset_11 ; 11
+	dw .Frameset_12 ; 12
+	dw .Frameset_13 ; 13
+	dw .Frameset_14 ; 14
+	dw .Frameset_15 ; 15
+	dw .Frameset_16 ; 16
+	dw .Frameset_17 ; 17
+	dw .Frameset_18 ; 18
+	dw .Frameset_19 ; 19
+	dw .Frameset_1a ; 1a
+	dw .Frameset_1b ; 1b
+	dw .Frameset_1c ; 1c
+	dw .Frameset_1d ; 1d
+	dw .Frameset_1e ; 1e
+	dw .Frameset_1f ; 1f
+	dw .Frameset_20 ; 20
+	dw .Frameset_21 ; 21
+	dw .Frameset_22 ; 22
+	dw .Frameset_23 ; 23
+	dw .Frameset_24 ; 24
+	dw .Frameset_25 ; 25
+	dw .Frameset_26 ; 26
+	dw .Frameset_27 ; 27
+	dw .Frameset_28 ; 28
+	dw .Frameset_29 ; 29
+	dw .Frameset_2a ; 2a
+	dw .Frameset_2b ; 2b
+	dw .Frameset_2c ; 2c
+	dw .Frameset_2d ; 2d
+	dw .Frameset_2e ; 2e
+	dw .Frameset_2f ; 2f
+	dw .Frameset_30 ; 30
+	dw .Frameset_31 ; 31
+	dw .Frameset_32 ; 32
+	dw .Frameset_33 ; 33
+	dw .Frameset_34 ; 34
+	dw .Frameset_35 ; 35
+	dw .Frameset_36 ; 36
+	dw .Frameset_37 ; 37
+	dw .Frameset_38 ; 38
+	dw .Frameset_39 ; 39
+	dw .Frameset_3a ; 3a
+	dw .Frameset_3b ; 3b
+	dw .Frameset_3c ; 3c
+	dw .Frameset_3d ; 3d
+	dw .Frameset_3e ; 3e
+	dw .Frameset_3f ; 3f
+	dw .Frameset_40 ; 40
+	dw .Frameset_41 ; 41
+	dw .Frameset_42 ; 42
+	dw .Frameset_43 ; 43
+	dw .Frameset_44 ; 44
+	dw .Frameset_45 ; 45
+	dw .Frameset_46 ; 46
+	dw .Frameset_47 ; 47
+	dw .Frameset_48 ; 48
+	dw .Frameset_49 ; 49
+	dw .Frameset_4a ; 4a
+	dw .Frameset_4b ; 4b
+	dw .Frameset_4c ; 4c
+	dw .Frameset_4d ; 4d
+	dw .Frameset_4e ; 4e
+	dw .Frameset_4f ; 4f
+	dw .Frameset_50 ; 50
+	dw .Frameset_51 ; 51
+	dw .Frameset_52 ; 52
+	dw .Frameset_53 ; 53
+	dw .Frameset_54 ; 54
+	dw .Frameset_55 ; 55
+	dw .Frameset_56 ; 56
+	dw .Frameset_57 ; 57
+	dw .Frameset_58 ; 58
+	dw .Frameset_59 ; 59
+	dw .Frameset_5a ; 5a
+	dw .Frameset_5b ; 5b
+	dw .Frameset_5c ; 5c
+	dw .Frameset_5d ; 5d
+	dw .Frameset_5e ; 5e
+	dw .Frameset_5f ; 5f
+	dw .Frameset_60 ; 60
+	dw .Frameset_61 ; 61
+	dw .Frameset_62 ; 62
+	dw .Frameset_63 ; 63
+	dw .Frameset_64 ; 64
+	dw .Frameset_65 ; 65
+	dw .Frameset_66 ; 66
+	dw .Frameset_67 ; 67
+	dw .Frameset_68 ; 68
+	dw .Frameset_69 ; 69
+	dw .Frameset_6a ; 6a
+	dw .Frameset_6b ; 6b
+	dw .Frameset_6c ; 6c
+	dw .Frameset_6d ; 6d
+	dw .Frameset_6e ; 6e
+	dw .Frameset_6f ; 6f
+	dw .Frameset_70 ; 70
+	dw .Frameset_71 ; 71
+	dw .Frameset_72 ; 72
+	dw .Frameset_73 ; 73
+	dw .Frameset_74 ; 74
+	dw .Frameset_75 ; 75
+	dw .Frameset_76 ; 76
+	dw .Frameset_77 ; 77
+	dw .Frameset_78 ; 78
+	dw .Frameset_79 ; 79
+	dw .Frameset_7a ; 7a
+	dw .Frameset_7b ; 7b
+	dw .Frameset_7c ; 7c
+	dw .Frameset_7d ; 7d
+	dw .Frameset_7e ; 7e
+	dw .Frameset_7f ; 7f
+	dw .Frameset_80 ; 80
+	dw .Frameset_81 ; 81
+	dw .Frameset_82 ; 82
+	dw .Frameset_83 ; 83
+	dw .Frameset_84 ; 84
+	dw .Frameset_85 ; 85
+	dw .Frameset_86 ; 86
+	dw .Frameset_87 ; 87
+	dw .Frameset_88 ; 88
+	dw .Frameset_89 ; 89
+	dw .Frameset_8a ; 8a
+	dw .Frameset_8b ; 8b
+	dw .Frameset_8c ; 8c
+	dw .Frameset_8d ; 8d
+	dw .Frameset_8e ; 8e
+	dw .Frameset_8f ; 8f
+	dw .Frameset_90 ; 90
+	dw .Frameset_91 ; 91
+	dw .Frameset_92 ; 92
+	dw .Frameset_93 ; 93
+	dw .Frameset_94 ; 94
+	dw .Frameset_95 ; 95
+	dw .Frameset_96 ; 96
+	dw .Frameset_97 ; 97
+	dw .Frameset_98 ; 98
+	dw .Frameset_99 ; 99
+	dw .Frameset_9a ; 9a
+	dw .Frameset_9b ; 9b
+	dw .Frameset_9c ; 9c
+	dw .Frameset_9d ; 9d
+	dw .Frameset_9e ; 9e
+	dw .Frameset_9f ; 9f
+	dw .Frameset_a0 ; a0
+	dw .Frameset_a1 ; a1
+	dw .Frameset_a2 ; a2
+	dw .Frameset_a3 ; a3
+	dw .Frameset_a4 ; a4
+	dw .Frameset_a5 ; a5
+	dw .Frameset_a6 ; a6
+	dw .Frameset_a7 ; a7
+	dw .Frameset_a8 ; a8
+	dw .Frameset_a9 ; a9
+	dw .Frameset_aa ; aa
+	dw .Frameset_ab ; ab
+	dw .Frameset_ac ; ac
+	dw .Frameset_ad ; ad
+	dw .Frameset_ae ; ae
+	dw .Frameset_af ; af
+	dw .Frameset_b0 ; b0
+	dw .Frameset_b1 ; b1
+	dw .Frameset_b2 ; b2
+	dw .Frameset_b3 ; b3
+	dw .Frameset_b4 ; b4
+	dw .Frameset_b5 ; b5
+	dw .Frameset_b6 ; b6
+	dw .Frameset_b7 ; b7
+	dw .Frameset_b8 ; b8
+
+     ; OAM index (see battle/objects/oam.asm), flip flags / duration
+.Frameset_00 
+	db BATTLEANIMOAMSET_00, $06
+	db -4
+
+.Frameset_01 
+	db BATTLEANIMOAMSET_01, $06
+	db -4
+
+.Frameset_02 
+	db BATTLEANIMOAMSET_02, $06
+	db -4
+
+.Frameset_03 
+	db BATTLEANIMOAMSET_03, $06
+	db -4
+
+.Frameset_04 
+	db BATTLEANIMOAMSET_04, $06
+	db -4
+
+.Frameset_05 
+	db BATTLEANIMOAMSET_05, $06
+	db -4
+
+.Frameset_06 
+	db BATTLEANIMOAMSET_06, $06
+	db -4
+
+.Frameset_07 
+	db BATTLEANIMOAMSET_03, $04
+	db BATTLEANIMOAMSET_01, $01
+	db BATTLEANIMOAMSET_03, $04
+	db BATTLEANIMOAMSET_01, $01
+	db BATTLEANIMOAMSET_03, $04
+	db BATTLEANIMOAMSET_01, $01
+	db BATTLEANIMOAMSET_03, $04
+	db BATTLEANIMOAMSET_01, $01
+	db -4
+
+.Frameset_3e 
+	db BATTLEANIMOAMSET_4B, $02
+	db BATTLEANIMOAMSET_4C, $02
+	db BATTLEANIMOAMSET_4D, $04
+	db BATTLEANIMOAMSET_4E, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $02
+	db -4
+
+.Frameset_3f 
+	db BATTLEANIMOAMSET_4B, $42
+	db BATTLEANIMOAMSET_4C, $42
+	db BATTLEANIMOAMSET_4D, $44
+	db BATTLEANIMOAMSET_4E, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $42
+	db -4
+
+.Frameset_40 
+	db BATTLEANIMOAMSET_4B, $c2
+	db BATTLEANIMOAMSET_4C, $c2
+	db BATTLEANIMOAMSET_4D, $c4
+	db BATTLEANIMOAMSET_4E, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_4E, $c2
+	db -4
+
+.Frameset_41 
+	db BATTLEANIMOAMSET_4B, $01
+	db BATTLEANIMOAMSET_4C, $01
+	db BATTLEANIMOAMSET_4D, $01
+	db BATTLEANIMOAMSET_4F, $01
+	db BATTLEANIMOAMSET_50, $01
+	db BATTLEANIMOAMSET_51, $01
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -4
+
+.Frameset_42 
+	db BATTLEANIMOAMSET_4B, $41
+	db BATTLEANIMOAMSET_4C, $41
+	db BATTLEANIMOAMSET_4D, $41
+	db BATTLEANIMOAMSET_4F, $41
+	db BATTLEANIMOAMSET_50, $41
+	db BATTLEANIMOAMSET_51, $41
+	db BATTLEANIMOAMSET_52, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $42
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $42
+	db -4
+
+.Frameset_08 
+	db BATTLEANIMOAMSET_00, $03
+	db BATTLEANIMOAMSET_07, $03
+	db BATTLEANIMOAMSET_08, $03
+	db BATTLEANIMOAMSET_09, $03
+	db -4
+
+.Frameset_09 
+	db BATTLEANIMOAMSET_0A, $07
+	db BATTLEANIMOAMSET_0B, $07
+	db BATTLEANIMOAMSET_0A, $07
+	db BATTLEANIMOAMSET_0B, $47
+	db -2
+
+.Frameset_0a 
+	db BATTLEANIMOAMSET_0C, $08
+	db -1
+
+.Frameset_0b 
+	db BATTLEANIMOAMSET_0D, $08
+	db -1
+
+.Frameset_0c 
+	db BATTLEANIMOAMSET_0A, $08
+	db -1
+
+.Frameset_0d 
+	db BATTLEANIMOAMSET_0A, $07
+	db BATTLEANIMOAMSET_0B, $07
+	db BATTLEANIMOAMSET_0A, $07
+	db BATTLEANIMOAMSET_0B, $47
+	db BATTLEANIMOAMSET_0A, $07
+	db -1
+
+.Frameset_0e 
+	db BATTLEANIMOAMSET_0A, $08
+	db -1
+
+.Frameset_0f 
+	db BATTLEANIMOAMSET_0A, $04
+	db BATTLEANIMOAMSET_0E, $04
+	db -2
+
+.Frameset_10 
+	db BATTLEANIMOAMSET_0F, $04
+	db BATTLEANIMOAMSET_10, $04
+	db -2
+
+.Frameset_11 
+	db BATTLEANIMOAMSET_10, $04
+	db BATTLEANIMOAMSET_0F, $04
+	db BATTLEANIMOAMSET_0E, $04
+	db BATTLEANIMOAMSET_0A, $04
+	db BATTLEANIMOAMSET_0E, $04
+	db BATTLEANIMOAMSET_0A, $04
+	db BATTLEANIMOAMSET_0E, $04
+	db BATTLEANIMOAMSET_0A, $04
+	db -4
+
+.Frameset_12 
+	db BATTLEANIMOAMSET_10, $01
+	db BATTLEANIMOAMSET_0F, $01
+	db BATTLEANIMOAMSET_12, $01
+	db BATTLEANIMOAMSET_11, $01
+	db BATTLEANIMOAMSET_12, $01
+	db BATTLEANIMOAMSET_0F, $01
+	db -2
+
+.Frameset_13 
+	db BATTLEANIMOAMSET_10, $03
+	db BATTLEANIMOAMSET_0F, $03
+	db BATTLEANIMOAMSET_12, $01
+	db -3, $01
+	db BATTLEANIMOAMSET_12, $01
+	db -3, $01
+	db BATTLEANIMOAMSET_12, $01
+	db -3, $01
+	db BATTLEANIMOAMSET_12, $01
+	db -3, $01
+	db BATTLEANIMOAMSET_12, $03
+	db -4
+
+.Frameset_14 
+	db BATTLEANIMOAMSET_13, $14
+	db -4
+
+.Frameset_15 
+	db BATTLEANIMOAMSET_10, $01
+	db BATTLEANIMOAMSET_0F, $01
+	db -2
+
+.Frameset_16 
+	db BATTLEANIMOAMSET_14, $08
+	db -1
+
+.Frameset_17 
+	db BATTLEANIMOAMSET_17, $04
+	db BATTLEANIMOAMSET_16, $08
+	db BATTLEANIMOAMSET_15, $08
+	db BATTLEANIMOAMSET_16, $08
+	db BATTLEANIMOAMSET_17, $04
+	db BATTLEANIMOAMSET_17, $04
+	db BATTLEANIMOAMSET_16, $48
+	db BATTLEANIMOAMSET_15, $48
+	db BATTLEANIMOAMSET_16, $48
+	db BATTLEANIMOAMSET_17, $04
+	db -2
+
+.Frameset_56 
+	db BATTLEANIMOAMSET_69, $08
+	db -1
+
+.Frameset_57 
+	db BATTLEANIMOAMSET_69, $20
+	db BATTLEANIMOAMSET_6A, $04
+	db BATTLEANIMOAMSET_6B, $04
+	db BATTLEANIMOAMSET_6D, $04
+	db BATTLEANIMOAMSET_6C, $04
+	db -1
+
+.Frameset_58 
+	db BATTLEANIMOAMSET_6C, $08
+	db BATTLEANIMOAMSET_6D, $08
+	db -2
+
+.Frameset_18 
+	db BATTLEANIMOAMSET_18, $04
+	db BATTLEANIMOAMSET_19, $04
+	db BATTLEANIMOAMSET_1A, $04
+	db -4
+
+.Frameset_19 
+	db BATTLEANIMOAMSET_1B, $08
+	db -1
+
+.Frameset_1a 
+	db BATTLEANIMOAMSET_0F, $08
+	db -1
+
+.Frameset_1b 
+	db BATTLEANIMOAMSET_1C, $08
+	db -1
+
+.Frameset_1c 
+	db BATTLEANIMOAMSET_0A, $08
+	db -4
+
+.Frameset_1d 
+	db BATTLEANIMOAMSET_1D, $08
+	db -1
+
+.Frameset_1e 
+	db BATTLEANIMOAMSET_17, $08
+	db -1
+
+.Frameset_1f 
+	db BATTLEANIMOAMSET_0F, $03
+	db BATTLEANIMOAMSET_10, $03
+	db BATTLEANIMOAMSET_1E, $03
+	db -1
+
+.Frameset_20 
+	db BATTLEANIMOAMSET_1F, $10
+	db BATTLEANIMOAMSET_20, $03
+	db -4
+
+.Frameset_21 
+	db BATTLEANIMOAMSET_20, $08
+	db -1
+
+.Frameset_22 
+	db BATTLEANIMOAMSET_20, $08
+	db BATTLEANIMOAMSET_21, $08
+	db BATTLEANIMOAMSET_1B, $08
+	db BATTLEANIMOAMSET_21, $08
+	db -2
+
+.Frameset_23 
+	db BATTLEANIMOAMSET_22, $08
+	db -1
+
+.Frameset_24 
+	db BATTLEANIMOAMSET_1B, $08
+	db -1
+
+.Frameset_25 
+	db BATTLEANIMOAMSET_23, $08
+	db -1
+
+.Frameset_26 
+	db BATTLEANIMOAMSET_24, $08
+	db -1
+
+.Frameset_27 
+	db BATTLEANIMOAMSET_25, $08
+	db -1
+
+.Frameset_28 
+	db BATTLEANIMOAMSET_26, $08
+	db BATTLEANIMOAMSET_27, $08
+	db -1
+
+.Frameset_29 
+	db BATTLEANIMOAMSET_28, $08
+	db BATTLEANIMOAMSET_29, $08
+	db -4
+
+.Frameset_2a 
+	db BATTLEANIMOAMSET_2A, $01
+	db BATTLEANIMOAMSET_2B, $01
+	db BATTLEANIMOAMSET_2C, $01
+	db BATTLEANIMOAMSET_2D, $01
+	db BATTLEANIMOAMSET_2E, $01
+	db BATTLEANIMOAMSET_2D, $01
+	db BATTLEANIMOAMSET_2C, $01
+	db BATTLEANIMOAMSET_2B, $01
+	db BATTLEANIMOAMSET_2A, $01
+	db -4
+
+.Frameset_2b 
+	db BATTLEANIMOAMSET_14, $01
+	db BATTLEANIMOAMSET_15, $01
+	db -2
+
+.Frameset_2c 
+	db BATTLEANIMOAMSET_2F, $04
+	db BATTLEANIMOAMSET_30, $28
+	db -4
+
+.Frameset_2d 
+	db BATTLEANIMOAMSET_31, $08
+	db -1
+
+.Frameset_2e 
+	db BATTLEANIMOAMSET_32, $20
+	db BATTLEANIMOAMSET_33, $20
+	db BATTLEANIMOAMSET_34, $20
+	db BATTLEANIMOAMSET_35, $20 ; fallthrough
+.Frameset_2f 
+	db -3, $02
+	db BATTLEANIMOAMSET_35, $04
+	db -3, $02
+	db BATTLEANIMOAMSET_35, $04
+	db -3, $02
+	db BATTLEANIMOAMSET_35, $04
+	db -3, $02
+	db BATTLEANIMOAMSET_35, $04
+	db -4
+
+.Frameset_30 
+	db BATTLEANIMOAMSET_14, $04
+	db BATTLEANIMOAMSET_15, $04
+	db -2
+
+.Frameset_31 
+	db BATTLEANIMOAMSET_36, $02
+	db BATTLEANIMOAMSET_37, $02
+	db BATTLEANIMOAMSET_38, $02
+	db BATTLEANIMOAMSET_39, $20
+	db -4
+
+.Frameset_32 
+	db BATTLEANIMOAMSET_3A, $02
+	db BATTLEANIMOAMSET_3B, $02
+	db BATTLEANIMOAMSET_3C, $02
+	db BATTLEANIMOAMSET_3D, $20
+	db -4
+
+.Frameset_33 
+	db BATTLEANIMOAMSET_3A, $42
+	db BATTLEANIMOAMSET_3B, $42
+	db BATTLEANIMOAMSET_3C, $42
+	db BATTLEANIMOAMSET_3D, $60
+	db -4
+
+.Frameset_34 
+	db BATTLEANIMOAMSET_3E, $08
+	db BATTLEANIMOAMSET_3F, $08
+	db BATTLEANIMOAMSET_40, $08
+	db -1
+
+.Frameset_35 
+	db BATTLEANIMOAMSET_40, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_40, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_41, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_41, $02
+	db -3, $02
+	db -2
+
+.Frameset_36 
+	db BATTLEANIMOAMSET_42, $02
+	db BATTLEANIMOAMSET_43, $02
+	db BATTLEANIMOAMSET_44, $02
+	db BATTLEANIMOAMSET_45, $02
+	db -2
+
+.Frameset_37 
+	db BATTLEANIMOAMSET_19, $02
+	db -3, $02
+	db -2
+
+.Frameset_38 
+	db BATTLEANIMOAMSET_46, $04
+	db BATTLEANIMOAMSET_47, $04
+	db -2
+
+.Frameset_39 
+	db BATTLEANIMOAMSET_18, $02
+	db -3, $02
+	db -2
+
+.Frameset_3a 
+	db BATTLEANIMOAMSET_48, $08
+	db -1
+
+.Frameset_3b 
+	db BATTLEANIMOAMSET_48, $48
+	db -1
+
+.Frameset_3c 
+	db BATTLEANIMOAMSET_49, $08
+	db -1
+
+.Frameset_3d 
+	db BATTLEANIMOAMSET_4A, $08
+	db -1
+
+.Frameset_43 
+	db BATTLEANIMOAMSET_20, $10
+	db BATTLEANIMOAMSET_1F, $10
+	db BATTLEANIMOAMSET_1E, $10
+	db -1
+
+.Frameset_4c 
+	db BATTLEANIMOAMSET_20, $08
+	db BATTLEANIMOAMSET_1F, $08
+	db BATTLEANIMOAMSET_1E, $08
+	db -1
+
+.Frameset_44 
+	db -3, $14
+	db BATTLEANIMOAMSET_55, $28
+	db BATTLEANIMOAMSET_54, $28
+	db BATTLEANIMOAMSET_53, $14
+	db -3, $04
+	db BATTLEANIMOAMSET_53, $04
+	db -3, $04
+	db BATTLEANIMOAMSET_53, $04
+	db -3, $04
+	db BATTLEANIMOAMSET_53, $04
+	db -4
+
+.Frameset_7e 
+	db BATTLEANIMOAMSET_1E, $08
+	db BATTLEANIMOAMSET_1F, $08
+	db BATTLEANIMOAMSET_20, $08
+	db -4
+
+.Frameset_45 
+	db -3, $00
+	db BATTLEANIMOAMSET_14, $00
+	db BATTLEANIMOAMSET_15, $00
+	db BATTLEANIMOAMSET_14, $40
+	db -3, $00
+	db BATTLEANIMOAMSET_16, $40
+	db BATTLEANIMOAMSET_15, $00
+	db BATTLEANIMOAMSET_16, $00
+	db -2
+
+.Frameset_46 
+	db BATTLEANIMOAMSET_56, $02
+	db BATTLEANIMOAMSET_57, $04
+	db -4
+
+.Frameset_47 
+	db BATTLEANIMOAMSET_56, $c2
+	db BATTLEANIMOAMSET_57, $c4
+	db -4
+
+.Frameset_48 
+	db BATTLEANIMOAMSET_56, $01
+	db BATTLEANIMOAMSET_57, $01
+	db BATTLEANIMOAMSET_58, $01
+	db BATTLEANIMOAMSET_57, $c1
+	db BATTLEANIMOAMSET_58, $c1
+	db BATTLEANIMOAMSET_57, $02
+	db -4
+
+.Frameset_49 
+	db BATTLEANIMOAMSET_56, $c1
+	db BATTLEANIMOAMSET_57, $c1
+	db BATTLEANIMOAMSET_58, $c1
+	db BATTLEANIMOAMSET_57, $01
+	db BATTLEANIMOAMSET_58, $01
+	db BATTLEANIMOAMSET_57, $c2
+	db -4
+
+.Frameset_4a 
+	db BATTLEANIMOAMSET_57, $c1
+	db BATTLEANIMOAMSET_58, $c1
+	db BATTLEANIMOAMSET_57, $01
+	db BATTLEANIMOAMSET_58, $01
+	db -2
+
+.Frameset_4b 
+	db BATTLEANIMOAMSET_59, $01
+	db BATTLEANIMOAMSET_5A, $01
+	db BATTLEANIMOAMSET_5B, $01
+	db BATTLEANIMOAMSET_5C, $02
+	db -4
+
+.Frameset_4d 
+	db BATTLEANIMOAMSET_0A, $0a
+	db BATTLEANIMOAMSET_0B, $43
+	db BATTLEANIMOAMSET_5D, $43
+	db BATTLEANIMOAMSET_0B, $c3
+	db BATTLEANIMOAMSET_0A, $82
+	db BATTLEANIMOAMSET_0B, $81
+	db BATTLEANIMOAMSET_5D, $01
+	db BATTLEANIMOAMSET_0B, $01
+	db -2
+
+.Frameset_4e 
+	db BATTLEANIMOAMSET_0A, $03
+	db BATTLEANIMOAMSET_0B, $47
+	db BATTLEANIMOAMSET_0A, $07
+	db BATTLEANIMOAMSET_0B, $07
+	db BATTLEANIMOAMSET_0A, $03
+	db -2
+
+.Frameset_4f 
+	db BATTLEANIMOAMSET_5E, $20
+	db BATTLEANIMOAMSET_5E, $20
+	db -4
+
+.Frameset_50 
+	db BATTLEANIMOAMSET_5F, $20
+	db BATTLEANIMOAMSET_5F, $20
+	db -4
+
+.Frameset_51 
+	db BATTLEANIMOAMSET_60, $08
+	db -1
+
+.Frameset_52 
+	db BATTLEANIMOAMSET_61, $01
+	db BATTLEANIMOAMSET_62, $01
+	db BATTLEANIMOAMSET_63, $01
+	db -1
+
+.Frameset_53 
+	db BATTLEANIMOAMSET_63, $07
+	db BATTLEANIMOAMSET_64, $07
+	db -2
+
+.Frameset_54 
+	db BATTLEANIMOAMSET_65, $01
+	db BATTLEANIMOAMSET_66, $01
+	db BATTLEANIMOAMSET_67, $01
+	db -1
+
+.Frameset_55 
+	db BATTLEANIMOAMSET_67, $07
+	db BATTLEANIMOAMSET_68, $07
+	db -2
+
+.Frameset_59 
+	db BATTLEANIMOAMSET_6E, $08
+	db -1
+
+.Frameset_5a 
+	db BATTLEANIMOAMSET_6F, $08
+	db -1
+
+.Frameset_5b 
+	db BATTLEANIMOAMSET_6E, $88
+	db -1
+
+.Frameset_5c 
+	db BATTLEANIMOAMSET_18, $04
+	db BATTLEANIMOAMSET_70, $04
+	db BATTLEANIMOAMSET_71, $04
+	db BATTLEANIMOAMSET_72, $04
+	db BATTLEANIMOAMSET_73, $04
+	db -4
+
+.Frameset_5d 
+	db BATTLEANIMOAMSET_74, $04
+	db BATTLEANIMOAMSET_75, $04
+	db -2
+
+.Frameset_5e 
+	db BATTLEANIMOAMSET_14, $08
+	db -1
+
+.Frameset_7a 
+	db BATTLEANIMOAMSET_74, $03
+	db BATTLEANIMOAMSET_14, $03
+	db BATTLEANIMOAMSET_15, $03
+	db BATTLEANIMOAMSET_14, $03
+	db BATTLEANIMOAMSET_15, $03
+	db -4
+
+.Frameset_af 
+	db BATTLEANIMOAMSET_14, $00
+	db BATTLEANIMOAMSET_15, $00
+	db BATTLEANIMOAMSET_14, $00
+	db BATTLEANIMOAMSET_15, $00
+	db BATTLEANIMOAMSET_74, $0c
+	db -4
+
+.Frameset_5f 
+	db BATTLEANIMOAMSET_76, $08
+	db -1
+
+.Frameset_60 
+	db BATTLEANIMOAMSET_77, $01
+	db BATTLEANIMOAMSET_78, $01
+	db BATTLEANIMOAMSET_79, $01
+	db BATTLEANIMOAMSET_7A, $01
+	db BATTLEANIMOAMSET_7B, $01
+	db BATTLEANIMOAMSET_7C, $01
+	db BATTLEANIMOAMSET_7D, $01
+	db BATTLEANIMOAMSET_7C, $c1
+	db BATTLEANIMOAMSET_7B, $c1
+	db BATTLEANIMOAMSET_7A, $c1
+	db BATTLEANIMOAMSET_79, $c1
+	db BATTLEANIMOAMSET_78, $c1
+	db BATTLEANIMOAMSET_77, $c1
+	db -4
+
+.Frameset_61 
+	db BATTLEANIMOAMSET_1B, $04
+	db BATTLEANIMOAMSET_7E, $04
+	db -2
+
+.Frameset_62 
+	db BATTLEANIMOAMSET_1B, $44
+	db BATTLEANIMOAMSET_7E, $44
+	db -2
+
+.Frameset_63 
+	db BATTLEANIMOAMSET_7F, $08
+	db -1
+
+.Frameset_64 
+	db BATTLEANIMOAMSET_25, $08
+	db -1
+
+.Frameset_65 
+	db BATTLEANIMOAMSET_80, $08
+	db -1
+
+.Frameset_66 
+	db BATTLEANIMOAMSET_83, $07
+	db BATTLEANIMOAMSET_82, $07
+	db BATTLEANIMOAMSET_81, $07
+	db BATTLEANIMOAMSET_82, $07
+	db BATTLEANIMOAMSET_83, $07
+	db BATTLEANIMOAMSET_82, $07
+	db BATTLEANIMOAMSET_81, $07
+	db -4
+
+.Frameset_67 
+	db BATTLEANIMOAMSET_1B, $10
+	db -4
+
+.Frameset_68 
+	db -3, $0f
+	db BATTLEANIMOAMSET_84, $0f
+	db BATTLEANIMOAMSET_85, $0f
+	db BATTLEANIMOAMSET_29, $0f
+	db BATTLEANIMOAMSET_28, $0f
+	db BATTLEANIMOAMSET_86, $20
+	db -4
+
+.Frameset_69 
+	db BATTLEANIMOAMSET_1B, $03
+	db BATTLEANIMOAMSET_87, $03
+	db BATTLEANIMOAMSET_88, $03
+	db BATTLEANIMOAMSET_89, $03
+	db -4
+
+.Frameset_6a 
+	db BATTLEANIMOAMSET_8A, $02
+	db BATTLEANIMOAMSET_8B, $02
+	db BATTLEANIMOAMSET_8C, $02
+	db BATTLEANIMOAMSET_8D, $02
+	db -4
+
+.Frameset_6b 
+	db BATTLEANIMOAMSET_61, $02
+	db BATTLEANIMOAMSET_62, $02
+	db BATTLEANIMOAMSET_63, $02
+	db -1
+
+.Frameset_6c 
+	db BATTLEANIMOAMSET_65, $02
+	db BATTLEANIMOAMSET_66, $02
+	db BATTLEANIMOAMSET_67, $02
+	db -1
+
+.Frameset_6d 
+	db BATTLEANIMOAMSET_8E, $08
+	db -1
+
+.Frameset_6e 
+	db BATTLEANIMOAMSET_8E, $48
+	db -1
+
+.Frameset_6f 
+	db BATTLEANIMOAMSET_8F, $10
+	db BATTLEANIMOAMSET_90, $10
+	db -2
+
+.Frameset_70 
+	db BATTLEANIMOAMSET_91, $10
+	db BATTLEANIMOAMSET_92, $10
+	db -2
+
+.Frameset_71 
+	db BATTLEANIMOAMSET_93, $08
+	db -1
+
+.Frameset_72 
+	db BATTLEANIMOAMSET_1E, $08
+	db -1
+
+.Frameset_73 
+	db BATTLEANIMOAMSET_1B, $07
+	db BATTLEANIMOAMSET_94, $07
+	db -2
+
+.Frameset_74 
+	db BATTLEANIMOAMSET_95, $08
+	db -1
+
+.Frameset_75 
+	db BATTLEANIMOAMSET_96, $08
+	db -1
+
+.Frameset_76 
+	db BATTLEANIMOAMSET_95, $08
+	db -1
+
+.Frameset_77 
+	db BATTLEANIMOAMSET_97, $01
+	db BATTLEANIMOAMSET_97, $41
+	db -2
+
+.Frameset_78 
+	db BATTLEANIMOAMSET_98, $08
+	db -1
+
+.Frameset_79 
+	db BATTLEANIMOAMSET_99, $20
+	db BATTLEANIMOAMSET_99, $20
+	db BATTLEANIMOAMSET_99, $20
+	db BATTLEANIMOAMSET_99, $20
+	db BATTLEANIMOAMSET_99, $20
+	db BATTLEANIMOAMSET_9A, $08
+	db -1
+
+.Frameset_7b 
+	db BATTLEANIMOAMSET_9B, $08
+	db -1
+
+.Frameset_7c 
+	db BATTLEANIMOAMSET_9C, $02
+	db BATTLEANIMOAMSET_9D, $02
+	db BATTLEANIMOAMSET_9E, $08
+	db -3, $02
+	db BATTLEANIMOAMSET_9E, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_9E, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_9E, $02
+	db -4
+
+.Frameset_7d 
+	db BATTLEANIMOAMSET_9F, $08
+	db -1
+
+.Frameset_7f 
+	db BATTLEANIMOAMSET_0F, $08
+	db -1
+
+.Frameset_80 
+	db BATTLEANIMOAMSET_6B, $18
+	db -4
+
+.Frameset_81 
+	db BATTLEANIMOAMSET_A0, $01 ; fallthrough
+.Frameset_82 
+	db BATTLEANIMOAMSET_A1, $01 ; fallthrough
+.Frameset_83 
+	db BATTLEANIMOAMSET_A2, $01
+	db -4
+
+.Frameset_84 
+	db BATTLEANIMOAMSET_A3, $08
+	db -1
+
+.Frameset_85 
+	db BATTLEANIMOAMSET_A4, $04
+	db BATTLEANIMOAMSET_A5, $04
+	db BATTLEANIMOAMSET_A6, $04
+	db BATTLEANIMOAMSET_A7, $04
+	db BATTLEANIMOAMSET_A6, $44
+	db BATTLEANIMOAMSET_A5, $44
+	db -2
+
+.Frameset_86 
+	db BATTLEANIMOAMSET_A8, $04
+	db BATTLEANIMOAMSET_A9, $04
+	db BATTLEANIMOAMSET_AA, $04
+	db BATTLEANIMOAMSET_AB, $04
+	db BATTLEANIMOAMSET_AA, $44
+	db BATTLEANIMOAMSET_A9, $44
+	db -2
+
+.Frameset_87 
+	db BATTLEANIMOAMSET_1B, $08
+	db -1
+
+.Frameset_88 
+	db BATTLEANIMOAMSET_AC, $08
+	db -1
+
+.Frameset_89 
+	db BATTLEANIMOAMSET_AD, $08
+	db -1
+
+.Frameset_8a 
+	db BATTLEANIMOAMSET_AE, $08
+	db -1
+
+.Frameset_8b 
+	db BATTLEANIMOAMSET_AF, $08
+	db -1
+
+.Frameset_8c 
+	db BATTLEANIMOAMSET_B0, $20
+	db -4
+
+.Frameset_8d 
+	db BATTLEANIMOAMSET_B1, $07
+	db BATTLEANIMOAMSET_B1, $47
+	db -2
+
+.Frameset_8e 
+	db BATTLEANIMOAMSET_B2, $08
+	db -1
+
+.Frameset_8f 
+	db BATTLEANIMOAMSET_B3, $08
+	db -1
+
+.Frameset_90 
+	db BATTLEANIMOAMSET_B3, $48
+	db -1
+
+.Frameset_91 
+	db BATTLEANIMOAMSET_B3, $88
+	db -1
+
+.Frameset_92 
+	db BATTLEANIMOAMSET_B3, $c8
+	db -1
+
+.Frameset_93 
+	db BATTLEANIMOAMSET_B5, $08
+	db -1
+
+.Frameset_94 
+	db BATTLEANIMOAMSET_B5, $48
+	db -1
+
+.Frameset_95 
+	db BATTLEANIMOAMSET_B5, $88
+	db -1
+
+.Frameset_96 
+	db BATTLEANIMOAMSET_B5, $c8
+	db -1
+
+.Frameset_97 
+	db BATTLEANIMOAMSET_B4, $08
+	db -1
+
+.Frameset_98 
+	db BATTLEANIMOAMSET_6B, $08
+	db -1
+
+.Frameset_99 
+	db BATTLEANIMOAMSET_B6, $08
+	db -1
+
+.Frameset_9a 
+	db BATTLEANIMOAMSET_B7, $20
+	db -1
+
+.Frameset_9b 
+	db BATTLEANIMOAMSET_1B, $20
+	db -1
+
+.Frameset_9c 
+	db BATTLEANIMOAMSET_B8, $20
+	db -1
+
+.Frameset_9d 
+	db BATTLEANIMOAMSET_B8, $60
+	db -1
+
+.Frameset_9e 
+	db BATTLEANIMOAMSET_B9, $20
+	db -1
+
+.Frameset_9f 
+	db BATTLEANIMOAMSET_BA, $20
+	db -1
+
+.Frameset_a0 
+	db BATTLEANIMOAMSET_BB, $60
+	db -1
+
+.Frameset_a1 
+	db BATTLEANIMOAMSET_BB, $20
+	db -1
+
+.Frameset_a2 
+	db BATTLEANIMOAMSET_BC, $20
+	db -1
+
+.Frameset_a3 
+	db BATTLEANIMOAMSET_BD, $0b
+	db BATTLEANIMOAMSET_BE, $0b
+	db BATTLEANIMOAMSET_1B, $0b
+	db -4
+
+.Frameset_a4 
+	db BATTLEANIMOAMSET_BF, $04
+	db BATTLEANIMOAMSET_C0, $04
+	db BATTLEANIMOAMSET_C1, $04
+	db -4
+
+.Frameset_a5 
+	db BATTLEANIMOAMSET_C2, $20
+	db BATTLEANIMOAMSET_C2, $20
+	db -4
+
+.Frameset_a6 
+	db BATTLEANIMOAMSET_4B, $02
+	db BATTLEANIMOAMSET_4C, $02
+	db BATTLEANIMOAMSET_4D, $20
+	db BATTLEANIMOAMSET_4D, $20
+	db BATTLEANIMOAMSET_4D, $20
+	db BATTLEANIMOAMSET_4F, $01
+	db BATTLEANIMOAMSET_50, $01
+	db BATTLEANIMOAMSET_51, $01
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $02
+	db -4
+
+.Frameset_a7 
+	db BATTLEANIMOAMSET_4B, $c2
+	db BATTLEANIMOAMSET_4C, $c2
+	db BATTLEANIMOAMSET_4D, $e0
+	db BATTLEANIMOAMSET_4D, $e0
+	db BATTLEANIMOAMSET_4D, $e0
+	db BATTLEANIMOAMSET_4F, $c1
+	db BATTLEANIMOAMSET_50, $c1
+	db BATTLEANIMOAMSET_51, $c1
+	db BATTLEANIMOAMSET_52, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $c2
+	db -3, $02
+	db BATTLEANIMOAMSET_52, $c2
+	db -4
+
+.Frameset_a8 
+	db BATTLEANIMOAMSET_C3, $01
+	db BATTLEANIMOAMSET_C3, $c1
+	db -2
+
+.Frameset_a9 
+	db BATTLEANIMOAMSET_C4, $20
+	db -1
+
+.Frameset_aa 
+	db BATTLEANIMOAMSET_C5, $04
+	db BATTLEANIMOAMSET_C6, $04
+	db BATTLEANIMOAMSET_C7, $04
+	db -4
+
+.Frameset_ab 
+	db BATTLEANIMOAMSET_C8, $01
+	db BATTLEANIMOAMSET_C8, $41
+	db -2
+
+.Frameset_ac 
+	db BATTLEANIMOAMSET_C9, $03
+	db BATTLEANIMOAMSET_05, $03
+	db -4
+
+.Frameset_ad 
+	db BATTLEANIMOAMSET_CA, $20
+	db BATTLEANIMOAMSET_CB, $03
+	db BATTLEANIMOAMSET_CA, $03
+	db BATTLEANIMOAMSET_CB, $03
+	db -2
+
+.Frameset_ae 
+	db BATTLEANIMOAMSET_03, $a0
+	db -1
+
+.Frameset_b0 
+	db BATTLEANIMOAMSET_CC, $20
+	db -1
+
+.Frameset_b1 
+	db BATTLEANIMOAMSET_7F, $02
+	db BATTLEANIMOAMSET_25, $02
+	db BATTLEANIMOAMSET_80, $02
+	db BATTLEANIMOAMSET_25, $02
+	db -2
+
+.Frameset_b2 
+	db BATTLEANIMOAMSET_CD, $04
+	db BATTLEANIMOAMSET_CE, $04
+	db BATTLEANIMOAMSET_CD, $c4
+	db BATTLEANIMOAMSET_CE, $c4
+	db -2
+
+.Frameset_b3 
+	db BATTLEANIMOAMSET_CF, $04
+	db BATTLEANIMOAMSET_D0, $04
+	db BATTLEANIMOAMSET_D1, $04
+	db BATTLEANIMOAMSET_D2, $04
+	db -4
+
+.Frameset_b4 
+	db BATTLEANIMOAMSET_D3, $20
+	db -1
+
+.Frameset_b5 
+	db BATTLEANIMOAMSET_D4, $08
+	db -1
+
+.Frameset_b6 
+	db BATTLEANIMOAMSET_D5, $08
+	db -1
+
+.Frameset_b7 
+	db BATTLEANIMOAMSET_D6, $08
+	db -1
+
+.Frameset_b8 
+	db BATTLEANIMOAMSET_D7, $08
+	db -1
+
+; ceeae
--- /dev/null
+++ b/battle/objects/functions.asm
@@ -1,0 +1,4156 @@
+DoBattleAnimFrame: ; ccfbe
+	ld hl, BATTLEANIMSTRUCT_FUNCTION
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, .Jumptable
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; ccfce
+
+.Jumptable
+	dw BattleAnimFunction_00 ; 00
+	dw BattleAnimFunction_01 ; 01
+	dw BattleAnimFunction_02 ; 02
+	dw BattleAnimFunction_03 ; 03
+	dw BattleAnimFunction_04 ; 04
+	dw BattleAnimFunction_05 ; 05
+	dw BattleAnimFunction_06 ; 06
+	dw BattleAnimFunction_07 ; 07
+	dw BattleAnimFunction_08 ; 08
+	dw BattleAnimFunction_09 ; 09
+	dw BattleAnimFunction_0A ; 0a
+	dw BattleAnimFunction_0B ; 0b
+	dw BattleAnimFunction_0C ; 0c
+	dw BattleAnimFunction_0D ; 0d
+	dw BattleAnimFunction_0E ; 0e
+	dw BattleAnimFunction_0F ; 0f
+	dw BattleAnimFunction_10 ; 10
+	dw BattleAnimFunction_11 ; 11
+	dw BattleAnimFunction_12 ; 12
+	dw BattleAnimFunction_13 ; 13
+	dw BattleAnimFunction_14 ; 14
+	dw BattleAnimFunction_15 ; 15
+	dw BattleAnimFunction_16 ; 16
+	dw BattleAnimFunction_17 ; 17
+	dw BattleAnimFunction_18 ; 18
+	dw BattleAnimFunction_19 ; 19
+	dw BattleAnimFunction_1A ; 1a
+	dw BattleAnimFunction_1B ; 1b
+	dw BattleAnimFunction_1C ; 1c
+	dw BattleAnimFunction_1D ; 1d
+	dw BattleAnimFunction_1E ; 1e
+	dw BattleAnimFunction_1F ; 1f
+	dw BattleAnimFunction_20 ; 20
+	dw BattleAnimFunction_21 ; 21
+	dw BattleAnimFunction_22 ; 22
+	dw BattleAnimFunction_23 ; 23
+	dw BattleAnimFunction_24 ; 24
+	dw BattleAnimFunction_25 ; 25
+	dw BattleAnimFunction_26 ; 26
+	dw BattleAnimFunction_27 ; 27
+	dw BattleAnimFunction_28 ; 28
+	dw BattleAnimFunction_29 ; 29
+	dw BattleAnimFunction_2A ; 2a
+	dw BattleAnimFunction_2B ; 2b
+	dw BattleAnimFunction_2C ; 2c
+	dw BattleAnimFunction_2D ; 2d
+	dw BattleAnimFunction_2E ; 2e
+	dw BattleAnimFunction_2F ; 2f
+	dw BattleAnimFunction_30 ; 30
+	dw BattleAnimFunction_31 ; 31
+	dw BattleAnimFunction_32 ; 32
+	dw BattleAnimFunction_33 ; 33
+	dw BattleAnimFunction_34 ; 34
+	dw BattleAnimFunction_35 ; 35
+	dw BattleAnimFunction_36 ; 36
+	dw BattleAnimFunction_37 ; 37
+	dw BattleAnimFunction_38 ; 38
+	dw BattleAnimFunction_39 ; 39
+	dw BattleAnimFunction_3A ; 3a
+	dw BattleAnimFunction_3B ; 3b
+	dw BattleAnimFunction_3C ; 3c
+	dw BattleAnimFunction_3D ; 3d
+	dw BattleAnimFunction_3E ; 3e
+	dw BattleAnimFunction_3F ; 3f
+	dw BattleAnimFunction_40 ; 40
+	dw BattleAnimFunction_41 ; 41
+	dw BattleAnimFunction_42 ; 42
+	dw BattleAnimFunction_43 ; 43
+	dw BattleAnimFunction_44 ; 44
+	dw BattleAnimFunction_45 ; 45
+	dw BattleAnimFunction_46 ; 46
+	dw BattleAnimFunction_47 ; 47
+	dw BattleAnimFunction_48 ; 48
+	dw BattleAnimFunction_49 ; 49
+	dw BattleAnimFunction_4A ; 4a
+	dw BattleAnimFunction_4B ; 4b
+	dw BattleAnimFunction_4C ; 4c
+	dw BattleAnimFunction_4D ; 4d
+	dw BattleAnimFunction_4E ; 4e
+	dw BattleAnimFunction_4F ; 4f
+
+BattleAnimFunction_00: ; cd06e (33:506e)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.one
+	call DeinitBattleAnimation
+.zero
+	ret
+
+BattleAnimFunction_06: ; cd079 (33:5079)
+	call BattleAnimFunction_05
+	ret c
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_05: ; cd081 (33:5081)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	ret nc
+	add $2
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	scf
+	ret
+
+BattleAnimFunction_04: ; cd0a6 (33:50a6)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	jr c, .asm_cd0b3
+	call DeinitBattleAnimation
+	ret
+
+.asm_cd0b3
+	add $2
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+rept 4
+	inc [hl]
+endr
+	ld d, $10
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	sra a
+	sra a
+	sra a
+	sra a
+	ld [hl], a
+	ret
+
+BattleAnimFunction_03: ; cd0e3 (33:50e3)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 7, [hl]
+	ld a, $0
+	jr z, .asm_cd0f9
+	ld a, $20
+.asm_cd0f9
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	ld [hl], a
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimFunction_01: ; cd12a (33:512a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.one
+	call DeinitBattleAnimation
+	ret
+
+.zero
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	ret nc
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	call Functionce70a
+	ret
+
+BattleAnimFunction_02: ; cd146 (33:5146)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	jr nc, .asm_cd158
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	call Functionce70a
+	ret
+
+.asm_cd158
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_12: ; cd15c (33:515c)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+	dw .six
+	dw .seven
+	dw .eight
+	dw .nine
+	dw .ten
+	dw .eleven
+.zero
+	call GetBallAnimFunction
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.one
+	call BattleAnimFunction_05
+	ret c
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ld a, $b
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.three
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $9
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $0
+	inc hl
+	ld [hl], $10
+.four
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hli]
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec a
+	ld [hl], a
+	and $1f
+	ret nz
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	sub $4
+	ld [hl], a
+	ret nz
+	ld a, $c
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.six
+	ld a, $d
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	dec [hl]
+.two
+.five
+.nine
+	ret
+
+.seven
+	call GetBallAnimFunction
+	ld a, $a
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $20
+.eight
+.ten
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hli]
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec a
+	ld [hl], a
+	and $1f
+	jr z, .eleven
+	and $f
+	ret nz
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.eleven
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_13: ; cd212 (33:5212)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+.zero
+	call GetBallAnimFunction
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.one
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $70
+	jr nc, .next
+	call BattleAnimFunction_05
+	ret
+
+.next
+	call BattleAnim_IncAnonJumptableIndex
+.two
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	jr nc, .done
+	add $4
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	ret
+
+.done
+	call DeinitBattleAnimation
+	ret
+
+GetBallAnimFunction: ; cd249 (33:5249)
+	ld hl, .balls
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [CurItem] ; CurItem
+	ld e, a
+	pop af
+	ld [rSVBK], a
+.IsInArray
+	ld a, [hli]
+	cp -1
+	jr z, .load
+	cp e
+	jr z, .load
+	inc hl
+	jr .IsInArray
+
+.load
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_PALETTE
+	add hl, bc
+	ld [hl], a
+	ret
+
+; cd26c (33:526c)
+.balls
+	db MASTER_BALL, 5
+	db ULTRA_BALL,  3
+	db GREAT_BALL,  6
+	db POKE_BALL,   4
+	db HEAVY_BALL,  2
+	db LEVEL_BALL,  7
+	db LURE_BALL,   6
+	db FAST_BALL,   6
+	db FRIEND_BALL, 3
+	db MOON_BALL,   2
+	db LOVE_BALL,   4
+	db -1,          2
+; cd284
+BattleAnimFunction_10: ; cd284 (33:5284)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+.zero
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	swap a
+	and $f
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ret
+
+.one
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	ret nc
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	call Functionce70a
+	ret
+
+.two
+	call DeinitBattleAnimation
+	ret
+
+.three
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $f
+	call ReinitBattleAnimFrameset
+.four
+	ret
+
+BattleAnimFunction_07: ; cd2be (33:52be)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $30
+	inc hl
+	ld [hl], $48
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hli]
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $3f
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $20
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	sub [hl]
+	jr z, .done
+	jr c, .done
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+	ret
+
+.done
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_08: ; cd306 (33:5306)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+.zero
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	jr nc, .next
+	call .SetCoords
+	ret
+
+.next
+	call BattleAnim_IncAnonJumptableIndex
+.one
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $0
+.two
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	jr nc, .loop_back
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	call BattleAnim_Cosine
+	sub $18
+	sra a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+.loop_back
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	jr z, .finish
+	sub $10
+	ld d, a
+	ld a, [hl]
+	and $f
+	or d
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	dec [hl]
+	ret
+
+.finish
+	call BattleAnim_IncAnonJumptableIndex
+.three
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $b0
+	jr c, .retain
+	call DeinitBattleAnimation
+	ret
+
+.retain
+	call .SetCoords
+	ret
+
+.SetCoords
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld e, a
+	srl e
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+.loop
+	dec [hl]
+	dec e
+	jr nz, .loop
+	ret
+
+BattleAnimFunction_09: ; cd3ae (33:53ae)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $0
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .done_one
+	dec [hl]
+	ret
+
+.done_one
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	swap a
+	and $f
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	ret
+
+.two
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_0A: ; cd3f2 (33:53f2)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+	dw .six
+	dw .seven
+	dw .eight
+	dw .nine
+.zero
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	cp $7
+	jr z, .seven
+	ld a, $11
+	call ReinitBattleAnimFrameset
+	ret
+
+.seven
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	jr nc, .set_up_eight
+	add $2
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+.set_up_eight
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $10
+	call ReinitBattleAnimFrameset
+.eight
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ret
+
+.nine
+	call DeinitBattleAnimation
+	ret
+
+.one
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	dec [hl]
+	ret
+
+.four
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	inc [hl]
+.two
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	dec [hl]
+	ret
+
+.five
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	inc [hl]
+.three
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	inc [hl]
+.six
+	ret
+
+BattleAnimFunction_0B: ; cd478 (33:5478)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+	dw .six
+	dw .seven
+	dw .eight
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $40
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr nc, .sine_cosine
+	call BattleAnim_IncAnonJumptableIndex
+	xor a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ld a, $17
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 6, [hl]
+	ret z
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld [hl], $5
+	ret
+
+.sine_cosine
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	call Functioncd557
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ret
+
+.two
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr nz, .sine_cosine_2
+	call DeinitBattleAnimation
+	ret
+
+.sine_cosine_2
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 6, [hl]
+	jr nz, .decrease
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	jr .finish
+
+.decrease
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	dec [hl]
+.finish
+	ld de, $80
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ret
+
+.three
+	ld a, $16
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	res 5, [hl]
+.four
+.five
+.six
+.seven
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.eight
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $c0
+	ret nc
+	ld a, $8
+	call Functionce70a
+	ret
+
+Functioncd557: ; cd557 (33:5557)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	bit 7, a
+	jr nz, .negative
+	cp $20
+	jr nc, .plus_256
+	cp $18
+	jr nc, .plus_384
+	ld de, $200
+	ret
+
+.plus_384
+	ld de, $180
+	ret
+
+.plus_256
+	ld de, $100
+	ret
+
+.negative
+	and $3f
+	cp $20
+	jr nc, .minus_256
+	cp $18
+	jr nc, .minus_384
+	ld de, -$200
+	ret
+
+.minus_384
+	ld de, -$180
+	ret
+
+.minus_256
+	ld de, -$100
+	ret
+
+BattleAnimFunction_4E: ; cd58a (33:558a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.zero
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $40
+	rlca
+	rlca
+	add $19
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $40
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr nc, .sine_cosine
+	call DeinitBattleAnimation
+	ret
+
+.sine_cosine
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	call Functioncd557
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ret
+
+BattleAnimFunction_0C: ; cd5e9 (33:55e9)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $c
+.one
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .next
+	dec [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	call Functionce70a
+	ret
+
+.next
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $0
+	ld a, $22
+	call ReinitBattleAnimFrameset
+.two
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $98
+	jr nc, .okay
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld h, [hl]
+	ld l, a
+	ld de, $60
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], d
+.okay
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	ret c
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	ld e, a
+	ld d, $ff
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld [hl], d
+	ret
+
+BattleAnimFunction_0D: ; cd66a (33:566a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+.zero
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $42
+	ld [hFFC6], a
+	ld a, $58
+	ld [hFFC7], a
+	ld a, $5e
+	ld [hFFC8], a
+	ret
+
+.one
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld e, [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nc, .asm_cd69b
+	call BattleAnim_IncAnonJumptableIndex
+	xor a
+	ld [hFFC7], a
+	ret
+
+.asm_cd69b
+	dec a
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	add [hl]
+	sub $10
+	ret c
+	ld [hFFC7], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and $7
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	inc [hl]
+.two
+	ret
+
+.three
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $70
+	jr c, asm_cd6da
+	xor a
+	ld [hFFC6], a
+	ld [hFFC7], a
+	ld [hFFC8], a
+.four
+	call DeinitBattleAnimation
+	ret
+
+asm_cd6da: ; cd6da (33:56da)
+	inc a
+	inc a
+	ld [hl], a
+	sub $10
+	ret c
+	ld [hFFC7], a
+	ret
+
+BattleAnimFunction_0E: ; cd6e3 (33:56e3)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd6ea
+	dw Functioncd6f7
+Functioncd6ea: ; cd6ea (33:56ea)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, $24
+	add [hl]
+	call ReinitBattleAnimFrameset
+Functioncd6f7: ; cd6f7 (33:56f7)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $b8
+	jr c, .asm_cd704
+	call DeinitBattleAnimation
+	ret
+
+.asm_cd704
+	ld a, $2
+	call Functionce70a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	ld d, $8
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimFunction_0F: ; cd71a (33:571a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd725
+	dw Functioncd728
+	dw Functioncd763
+	dw Functioncd776
+Functioncd725: ; cd725 (33:5725)
+	call BattleAnim_IncAnonJumptableIndex
+Functioncd728: ; cd728 (33:5728)
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr c, .asm_cd747
+	ld a, $2
+	call Functionce70a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	ld d, $8
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_cd747
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $28
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $0
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld [hl], $30
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ld [hl], a
+Functioncd763: ; cd763 (33:5763)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $18
+	jr nc, .asm_cd76e
+	inc [hl]
+	ret
+
+.asm_cd76e
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $29
+	call ReinitBattleAnimFrameset
+Functioncd776: ; cd776 (33:5776)
+	ret
+
+BattleAnimFunction_11: ; cd777 (33:5777)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $38
+	jr c, .asm_cd784
+	call DeinitBattleAnimation
+	ret
+
+.asm_cd784
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld l, [hl]
+	ld h, a
+	ld de, $80
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	xor $10
+	ld [hl], a
+	ret
+
+BattleAnimFunction_14: ; cd7a4 (33:57a4)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd7ab
+	dw Functioncd7d2
+Functioncd7ab: ; cd7ab (33:57ab)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	sla a
+	sla a
+	sla a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld [hl], $1
+Functioncd7d2: ; cd7d2 (33:57d2)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_cd7de
+	call DeinitBattleAnimation
+	ret
+
+.asm_cd7de
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld d, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	ret z
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	dec [hl]
+	ret
+
+BattleAnimFunction_15: ; cd80c (33:580c)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd81f
+	dw Functioncd817
+	dw Functioncd81f
+	dw Functioncd820
+Functioncd817: ; cd817 (33:5817)
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $35
+	call ReinitBattleAnimFrameset
+Functioncd81f: ; cd81f (33:581f)
+	ret
+
+Functioncd820: ; cd820 (33:5820)
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_16: ; cd824 (33:5824)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd835
+	dw Functioncd860
+	dw Functioncd88f
+	dw Functioncd88f
+	dw Functioncd88f
+	dw Functioncd88f
+	dw Functioncd893
+Functioncd835: ; cd835 (33:5835)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 7, [hl]
+	jr nz, .asm_cd852
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $10
+	jr .asm_cd858
+
+.asm_cd852
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $30
+.asm_cd858
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	ld [hl], a
+Functioncd860: ; cd860 (33:5860)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	bit 7, a
+	jr nz, .asm_cd87e
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc a
+	jr .asm_cd883
+
+.asm_cd87e
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+.asm_cd883
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $1f
+	ret nz
+Functioncd88f: ; cd88f (33:588f)
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncd893: ; cd893 (33:5893)
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], $1
+	ret
+
+BattleAnimFunction_17: ; cd89a (33:589a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd8ab
+	dw Functioncd8cc
+	dw Functioncd8f5
+	dw Functioncd8f5
+	dw Functioncd8f5
+	dw Functioncd8f5
+	dw Functioncd8f9
+Functioncd8ab: ; cd8ab (33:58ab)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 7, [hl]
+	jr nz, .asm_cd8be
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $10
+	jr .asm_cd8c4
+
+.asm_cd8be
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $30
+.asm_cd8c4
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	ld [hl], a
+Functioncd8cc: ; cd8cc (33:58cc)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	bit 7, a
+	jr nz, .asm_cd8e6
+	ld a, $3d
+	jr .asm_cd8e8
+
+.asm_cd8e6
+	ld a, $3c
+.asm_cd8e8
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ld a, [hl]
+	and $1f
+	ret nz
+Functioncd8f5: ; cd8f5 (33:58f5)
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncd8f9: ; cd8f9 (33:58f9)
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], $1
+	ret
+
+BattleAnimFunction_18: ; cd900 (33:5900)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd907
+	dw Functioncd913
+Functioncd907: ; cd907 (33:5907)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $28
+	inc hl
+	ld [hl], $0
+Functioncd913: ; cd913 (33:5913)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld d, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cd950
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld e, [hl]
+	ld hl, hPushOAM ; $ff80
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], d
+	ret
+
+.asm_cd950
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_19: ; cd954 (33:5954)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncd961
+	dw Functioncd96a
+	dw Functioncd96e
+	dw Functioncd96a
+	dw Functioncd97b
+Functioncd961: ; cd961 (33:5961)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld [hl], $0
+Functioncd96a: ; cd96a (33:596a)
+	call Functioncd99a
+	ret
+
+Functioncd96e: ; cd96e (33:596e)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	jr c, asm_cd988
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncd97b: ; cd97b (33:597b)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $b8
+	jr c, asm_cd988
+	call DeinitBattleAnimation
+	ret
+
+asm_cd988: ; cd988 (33:5988)
+	call Functioncd99a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $1
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+Functioncd99a: ; cd99a (33:599a)
+	call Functioncd9f4
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	sub $8
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cd9d7
+	cp $c2
+	jr c, .asm_cd9e2
+.asm_cd9d7
+	dec a
+	ld [hl], a
+	and $7
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	inc [hl]
+	ret
+
+.asm_cd9e2
+	xor a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ret
+
+Functioncd9f4: ; cd9f4 (33:59f4)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Unknown_cda01
+	add hl, de
+	ld d, [hl]
+	ret
+
+; cda01 (33:5a01)
+Unknown_cda01: ; cda01
+	db 8, 6, 5, 4, 5, 6, 8, 12, 16
+; cda0a
+BattleAnimFunction_1C: ; cda0a (33:5a0a)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr nc, .asm_cda17
+	call DeinitBattleAnimation
+	ret
+
+.asm_cda17
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld e, a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	sub e
+	ld [hl], a
+	srl e
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+.asm_cda2c
+	inc [hl]
+	dec e
+	jr nz, .asm_cda2c
+	ret
+
+BattleAnimFunction_1F: ; cda31 (33:5a31)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncda4c
+	dw Functioncda3a
+	dw Functioncda4c
+Functioncda3a: ; cda3a (33:5a3a)
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	inc a
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $8
+Functioncda4c: ; cda4c (33:5a4c)
+	ret
+
+BattleAnimFunction_20: ; cda4d (33:5a4d)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncda58
+	dw Functioncda62
+	dw Functioncda7a
+	dw Functioncda8c
+Functioncda58: ; cda58 (33:5a58)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $40
+	ret
+
+Functioncda62: ; cda62 (33:5a62)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .asm_cda6f
+	call Functioncda8d
+	ret
+
+.asm_cda6f
+	ld [hl], $40
+	ld a, $57
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncda7a: ; cda7a (33:5a7a)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cda84
+	dec [hl]
+	ret
+
+.asm_cda84
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $58
+	call ReinitBattleAnimFrameset
+Functioncda8c: ; cda8c (33:5a8c)
+	ret
+
+Functioncda8d: ; cda8d (33:5a8d)
+	dec [hl]
+	ld d, $20
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_02
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld e, [hl]
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld h, [hl]
+	ld a, h
+	and $f
+	swap a
+	ld l, a
+	ld a, h
+	and $f0
+	swap a
+	ld h, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+BattleAnimFunction_3F: ; cdad6 (33:5ad6)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdadf
+	dw Functioncdae9
+	dw Functioncdaf9
+Functioncdadf: ; cdadf (33:5adf)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $40
+	ret
+
+Functioncdae9: ; cdae9 (33:5ae9)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .asm_cdaf6
+	call Functioncda8d
+	ret
+
+.asm_cdaf6
+	call BattleAnim_IncAnonJumptableIndex
+Functioncdaf9: ; cdaf9 (33:5af9)
+	ret
+
+BattleAnimFunction_1A: ; cdafa (33:5afa)
+	call BattleAnimFunction_03
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	add $f
+	ld [hl], a
+	ret
+
+BattleAnimFunction_1B: ; cdb06 (33:5b06)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdb13
+	dw Functioncdb14
+	dw Functioncdb28
+	dw Functioncdb50
+	dw Functioncdb65
+Functioncdb13: ; cdb13 (33:5b13)
+	ret
+
+Functioncdb14: ; cdb14 (33:5b14)
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr c, .asm_cdb24
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.asm_cdb24
+	add $4
+	ld [hl], a
+	ret
+
+Functioncdb28: ; cdb28 (33:5b28)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $98
+	ret nc
+	inc [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	set 0, [hl]
+	ld hl, BATTLEANIMSTRUCT_02
+	add hl, bc
+	ld [hl], $90
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld [hl], $0
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], $2
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+Functioncdb50: ; cdb50 (33:5b50)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $2c
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld [hl], $0
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], $80
+Functioncdb65: ; cdb65 (33:5b65)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $98
+	ret nc
+	inc [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld d, $8
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimFunction_1D: ; cdb80 (33:5b80)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdb9f
+	dw Functioncdbb3
+	dw Functioncdbcf
+	dw Functioncdbeb
+	dw Functioncdc74
+	dw Functioncdc1a
+	dw Functioncdbc1
+	dw Functioncdc1e
+	dw Functioncdc27
+	dw Functioncdc39
+	dw Functioncdc74
+	dw Functioncdc48
+	dw Functioncdc57
+	dw Functioncdc74
+Functioncdb9f: ; cdb9f (33:5b9f)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $28
+	inc hl
+	ld [hl], $10
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functioncdbb3: ; cdbb3 (33:5bb3)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	jr nc, .asm_cdbbd
+	inc [hl]
+.asm_cdbbd
+	call Functioncdc75
+	ret
+
+Functioncdbc1: ; cdbc1 (33:5bc1)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $4b
+	jr nc, .asm_cdbcb
+	inc [hl]
+.asm_cdbcb
+	call Functioncdc75
+	ret
+
+Functioncdbcf: ; cdbcf (33:5bcf)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	jr nc, .asm_cdbe6
+	and $f
+	jr nz, asm_cdbfa
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $10
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.asm_cdbe6
+	call BattleAnim_IncAnonJumptableIndex
+	inc [hl]
+	ret
+
+Functioncdbeb: ; cdbeb (33:5beb)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cdbf5
+	dec [hl]
+	ret
+
+.asm_cdbf5
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	dec [hl]
+asm_cdbfa: ; cdbfa (33:5bfa)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld e, [hl]
+	ld hl, hPushOAM ; $ff80
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ret
+
+Functioncdc1a: ; cdc1a (33:5c1a)
+	call DeinitBattleAnimation
+	ret
+
+Functioncdc1e: ; cdc1e (33:5c1e)
+	ld a, $4e
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncdc27: ; cdc27 (33:5c27)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	ld d, $2
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functioncdc39: ; cdc39 (33:5c39)
+	ld a, $50
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $4
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncdc48: ; cdc48 (33:5c48)
+	ld a, $4f
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $40
+	ret
+
+Functioncdc57: ; cdc57 (33:5c57)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $20
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr c, .asm_cdc71
+	dec [hl]
+	ret
+
+.asm_cdc71
+	call BattleAnim_IncAnonJumptableIndex
+Functioncdc74: ; cdc74 (33:5c74)
+	ret
+
+Functioncdc75: ; cdc75 (33:5c75)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hli]
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $3f
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $20
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	sub $8
+	ld [hl], a
+	ret nz
+	xor a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+BattleAnimFunction_1E: ; cdca6 (33:5ca6)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cdcb6
+	cp $d8
+	jr nc, .asm_cdcb6
+	call DeinitBattleAnimation
+	ret
+
+.asm_cdcb6
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	sub d
+	ld [hl], a
+	ret
+
+BattleAnimFunction_21: ; cdcc3 (33:5cc3)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdcca
+	dw Functioncdced
+Functioncdcca: ; cdcca (33:5cca)
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_cdcd9
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	add $3
+	ld [hl], a
+.asm_cdcd9
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $8
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, $59
+	add [hl]
+	call ReinitBattleAnimFrameset
+	ret
+
+Functioncdced: ; cdced (33:5ced)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cdcfa
+	dec [hl]
+	call Functioncdcfe
+	ret
+
+.asm_cdcfa
+	call DeinitBattleAnimation
+	ret
+
+Functioncdcfe: ; cdcfe (33:5cfe)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cdd20
+	dec a
+	ret z
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], d
+	ret
+
+.asm_cdd20
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, d
+	xor $ff
+	inc a
+	ld [hl], a
+	ret
+
+BattleAnimFunction_22: ; cdd2a (33:5d2a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdd31
+	dw Functioncdd4f
+Functioncdd31: ; cdd31 (33:5d31)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $80
+	rlca
+	ld [hl], a
+	add $5d
+	call ReinitBattleAnimFrameset
+	ret
+
+Functioncdd4f: ; cdd4f (33:5d4f)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	swap a
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	ret nc
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and $3
+	jr nz, .asm_cdd87
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+.asm_cdd87
+	and $1
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimFunction_23: ; cdd90 (33:5d90)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdd97
+	dw Functioncddbc
+Functioncdd97: ; cdd97 (33:5d97)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $80
+	rlca
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	add [hl]
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	ld [hl], a
+Functioncddbc: ; cddbc (33:5dbc)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	and $3f
+	jr z, .asm_cddf0
+	and $1f
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc a
+	jr .asm_cddf5
+
+.asm_cddf0
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+.asm_cddf5
+	call ReinitBattleAnimFrameset
+	ret
+
+BattleAnimFunction_24: ; cddf9 (33:5df9)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncde02
+	dw Functioncde20
+	dw Functioncde21
+Functioncde02: ; cde02 (33:5e02)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	add $63
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Unknown_cde25
+	add hl, de
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+Functioncde20: ; cde20 (33:5e20)
+	ret
+
+Functioncde21: ; cde21 (33:5e21)
+	call DeinitBattleAnimation
+	ret
+
+; cde25 (33:5e25)
+Unknown_cde25: ; cde25
+	db $ec, $f8, $00
+; cde28
+BattleAnimFunction_25: ; cde28 (33:5e28)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	ld d, $4
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld e, [hl]
+	ld hl, $ffa0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], e
+	ret
+
+BattleAnimFunction_26: ; cde54 (33:5e54)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	dec [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimFunction_27: ; cde6b (33:5e6b)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncde72
+	dw Functioncde88
+Functioncde72: ; cde72 (33:5e72)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_cde83
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	set 6, [hl]
+.asm_cde83
+	add $6a
+	call ReinitBattleAnimFrameset
+Functioncde88: ; cde88 (33:5e88)
+	ret
+
+BattleAnimFunction_28: ; cde89 (33:5e89)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncde90
+	dw Functioncdebf
+Functioncde90: ; cde90 (33:5e90)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $0
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld e, [hl]
+	ld a, e
+	and $70
+	swap a
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, e
+	and $80
+	jr nz, .asm_cdeb2
+	ld a, e
+	and $f
+	ld [hl], a
+	ret
+
+.asm_cdeb2
+	ld a, e
+	and $f
+	xor $ff
+	inc a
+	ld [hl], a
+	ld a, $6e
+	call ReinitBattleAnimFrameset
+	ret
+
+Functioncdebf: ; cdebf (33:5ebf)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_cdec9
+	dec [hl]
+	ret
+
+.asm_cdec9
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	ret
+
+BattleAnimFunction_29: ; cdedd (33:5edd)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $7
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $28
+	jr nc, .asm_cdf17
+	inc [hl]
+	ret
+
+.asm_cdf17
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_2D: ; cdf1b (33:5f1b)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $3
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $28
+	jr nc, .asm_cdf55
+	inc [hl]
+	ret
+
+.asm_cdf55
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_2A: ; cdf59 (33:5f59)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdf60
+	dw BattleAnimFunction_29
+Functioncdf60: ; cdf60 (33:5f60)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	jr nc, .asm_cdf88
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld d, $18
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+.asm_cdf88
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+BattleAnimFunction_34: ; cdf8c (33:5f8c)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ld a, [hl]
+	and $7
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $e8
+	jr z, .asm_cdfc7
+	dec [hl]
+	ret
+
+.asm_cdfc7
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_3C: ; cdfcb (33:5fcb)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ld a, [hl]
+	and $3
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $d0
+	jr z, .asm_ce007
+	dec [hl]
+	dec [hl]
+	ret
+
+.asm_ce007
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_35: ; ce00b (33:600b)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce014
+	dw Functionce023
+	dw Functionce05f
+Functionce014: ; ce014 (33:6014)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $34
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $10
+Functionce023: ; ce023 (33:6023)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $6c
+	jr c, .asm_ce02d
+	ret
+
+.asm_ce02d
+	ld a, $2
+	call Functionce70a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	bit 7, a
+	jr nz, .asm_ce046
+	xor $ff
+	inc a
+.asm_ce046
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	sub $4
+	ld [hl], a
+	and $1f
+	cp $20
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	srl [hl]
+	ret
+
+Functionce05f: ; ce05f (33:605f)
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_2B: ; ce063 (33:6063)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce06e
+	dw Functionce083
+	dw Functionce091
+	dw Functionce09e
+Functionce06e: ; ce06e (33:606e)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functionce083: ; ce083 (33:6083)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $58
+	ret nc
+	ld a, $2
+	call Functionce70a
+	ret
+
+Functionce091: ; ce091 (33:6091)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, Functionce09e
+	call DeinitBattleAnimation
+	ret
+
+Functionce09e: ; ce09e (33:609e)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	ld d, $8
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	sra a
+	xor $ff
+	inc a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	add $8
+	ld [hl], a
+	ret
+
+BattleAnimFunction_2C: ; ce0c5 (33:60c5)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce0ce
+	dw Functionce0f8
+	dw Functionce0dd
+Functionce0ce: ; ce0ce (33:60ce)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	swap a
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functionce0dd: ; ce0dd (33:60dd)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	bit 7, a
+	jr z, .asm_ce0f0
+	ld [hl], a
+.asm_ce0f0
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	sub $4
+	ld [hl], a
+Functionce0f8: ; ce0f8 (33:60f8)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	jr c, .asm_ce105
+	call DeinitBattleAnimation
+	ret
+
+.asm_ce105
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	call Functionce70a
+	ret
+
+BattleAnimFunction_2E: ; ce10e (33:610e)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce115
+	dw Functionce12a
+Functionce115: ; ce115 (33:6115)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $28
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	sub $28
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+Functionce12a: ; ce12a (33:612a)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hli]
+	ld d, [hl]
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	and [hl]
+	jr nz, .asm_ce149
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	dec [hl]
+.asm_ce149
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $3f
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $20
+	inc hl
+	srl [hl]
+	ret
+
+BattleAnimFunction_2F: ; ce15c (33:615c)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld d, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $1
+	jr nz, .asm_ce189
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	dec [hl]
+.asm_ce189
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $3
+	jr nz, .asm_ce197
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	inc [hl]
+.asm_ce197
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	cp $5a
+	jr nc, .asm_ce1aa
+	ld a, [hl]
+	and a
+	jr z, .asm_ce1ac
+	dec [hl]
+	ret
+
+.asm_ce1aa
+	inc [hl]
+	ret
+
+.asm_ce1ac
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_42: ; ce1b0 (33:61b0)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld d, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	cp $40
+	jr nc, .asm_ce1df
+	inc [hl]
+	ret
+
+.asm_ce1df
+	ld a, [hl]
+	dec [hl]
+	and a
+	ret nz
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_30: ; ce1e7 (33:61e7)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce1ee
+	dw Functionce1fb
+Functionce1ee: ; ce1ee (33:61ee)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], a
+Functionce1fb: ; ce1fb (33:61fb)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $30
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	add $8
+	ld d, $30
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimFunction_31: ; ce226 (33:6226)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce22d
+	dw Functionce254
+Functionce22d: ; ce22d (33:622d)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $f
+Functionce254: ; ce254 (33:6254)
+	ret
+
+BattleAnimFunction_32: ; ce255 (33:6255)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce260
+	dw Functionce274
+	dw Functionce278
+	dw Functionce289
+Functionce260: ; ce260 (33:6260)
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .asm_ce26c
+	ld a, $f0
+	jr .asm_ce26e
+
+.asm_ce26c
+	ld a, $cc
+.asm_ce26e
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functionce274: ; ce274 (33:6274)
+	call Functionce29f
+	ret
+
+Functionce278: ; ce278 (33:6278)
+	call Functionce29f
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	ret nc
+	ld a, $4
+	call Functionce70a
+	ret
+
+Functionce289: ; ce289 (33:6289)
+	call Functionce29f
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $d0
+	jr nc, .asm_ce29b
+	ld a, $4
+	call Functionce70a
+	ret
+
+.asm_ce29b
+	call DeinitBattleAnimation
+	ret
+
+Functionce29f: ; ce29f (33:629f)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and $7
+	inc [hl]
+	srl a
+	ld e, a
+	ld d, $0
+	ld a, [hSGB]
+	and a
+	jr nz, .asm_ce2b6
+	ld hl, Unknown_ce2c4
+	jr .asm_ce2b9
+
+.asm_ce2b6
+	ld hl, Unknown_ce2c8
+.asm_ce2b9
+	add hl, de
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	and [hl]
+	ld [wOBP0], a
+	ret
+
+; ce2c4 (33:62c4)
+Unknown_ce2c4: ; ce2c4
+	db $ff, $aa, $55, $aa
+Unknown_ce2c8: ; ce2c8
+	db $ff, $ff, $00, $00
+; ce2cc
+BattleAnimFunction_33: ; ce2cc (33:62cc)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	call BattleAnim_Sine
+	sra a
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	add [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld d, $18
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	ret
+
+BattleAnimFunction_36: ; ce2fd (33:62fd)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce306
+	dw Functionce330
+	dw Functionce34c
+Functionce306: ; ce306 (33:6306)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $e0
+	jr nz, .asm_ce319
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $2
+	ret
+
+.asm_ce319
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld e, [hl]
+	ld hl, hPushOAM ; $ff80
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ret
+
+Functionce330: ; ce330 (33:6330)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_ce33a
+	dec [hl]
+	ret
+
+.asm_ce33a
+	ld [hl], $4
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+Functionce34c: ; ce34c (33:634c)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	jr nc, .asm_ce35b
+	ld a, $4
+	call Functionce70a
+	ret
+
+.asm_ce35b
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_37: ; ce35f (33:635f)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce366
+	dw Functionce375
+Functionce366: ; ce366 (33:6366)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	add $81
+	call ReinitBattleAnimFrameset
+Functionce375: ; ce375 (33:6375)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	bit 7, [hl]
+	jr nz, .asm_ce383
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	inc [hl]
+	ret
+
+.asm_ce383
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	dec [hl]
+	ret
+
+BattleAnimFunction_38: ; ce389 (33:6389)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce392
+	dw Functionce39c
+	dw Functionce3ae
+Functionce392: ; ce392 (33:6392)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $c
+	ret
+
+Functionce39c: ; ce39c (33:639c)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_ce3a6
+	dec [hl]
+	ret
+
+.asm_ce3a6
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, $20
+	call ReinitBattleAnimFrameset
+Functionce3ae: ; ce3ae (33:63ae)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	dec [hl]
+	ret
+
+BattleAnimFunction_39: ; ce3b4 (33:63b4)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	push af
+	ld d, $2
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop af
+	ld d, $8
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimFunction_3A: ; ce3d2 (33:63d2)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .asm_ce3df
+	call DeinitBattleAnimation
+	ret
+
+.asm_ce3df
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $8
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	and $7
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimFunction_3B: ; ce3ff (33:63ff)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce406
+	dw Functionce412
+Functionce406: ; ce406 (33:6406)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+Functionce412: ; ce412 (33:6412)
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_3D: ; ce416 (33:6416)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld d, $18
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	sra a
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ret
+
+BattleAnimFunction_3E: ; ce43a (33:643a)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce443
+	dw Functionce465
+	dw Functionce490
+Functionce443: ; ce443 (33:6443)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $28
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	add [hl]
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	or $8
+	ld [hl], a
+Functionce465: ; ce465 (33:6465)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_ce48b
+	dec [hl]
+	add $8
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_ce48b
+	ld [hl], $10
+	call BattleAnim_IncAnonJumptableIndex
+Functionce490: ; ce490 (33:6490)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	and a
+	ret nz
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_40: ; ce49c (33:649c)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce4a3
+	dw Functionce4b0
+Functionce4a3: ; ce4a3 (33:64a3)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, $24
+	add [hl]
+	call ReinitBattleAnimFrameset
+Functionce4b0: ; ce4b0 (33:64b0)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $38
+	jr nc, .asm_ce4d8
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld d, $18
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	dec [hl]
+	ret
+
+.asm_ce4d8
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_41: ; ce4dc (33:64dc)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	call BattleAnim_Sine
+	bit 7, a
+	jr nz, .asm_ce4f4
+	xor $ff
+	inc a
+.asm_ce4f4
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	and $1f
+	ret nz
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	srl [hl]
+	ret
+
+BattleAnimFunction_43: ; ce508 (33:6508)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $10
+	jr nc, .asm_ce52e
+	inc [hl]
+	inc [hl]
+	ld d, a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_ce52e
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_44: ; ce532 (33:6532)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld e, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld d, [hl]
+	ld a, e
+	and $c0
+	rlca
+	rlca
+	add [hl]
+	ld [hl], a
+	ld a, e
+	and $3f
+	push af
+	push de
+	call BattleAnim_Sine
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimFunction_45: ; ce55b (33:655b)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce564
+	dw Functionce56e
+	dw Functionce577
+Functionce564: ; ce564 (33:6564)
+	ld d, $18
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	jr asm_ce58f
+
+Functionce56e: ; ce56e (33:656e)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], $18
+Functionce577: ; ce577 (33:6577)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	jr nc, .asm_ce58b
+	ld d, a
+	add $8
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	jr asm_ce58f
+
+.asm_ce58b
+	call DeinitBattleAnimation
+	ret
+
+asm_ce58f: ; ce58f (33:658f)
+	call Functionce6f1
+	ret
+
+BattleAnimFunction_46: ; ce593 (33:6593)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce5b3
+	dw Functionce59a
+Functionce59a: ; ce59a (33:659a)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr c, .asm_ce5b0
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ret
+
+.asm_ce5b0
+	call DeinitBattleAnimation
+Functionce5b3: ; ce5b3 (33:65b3)
+	ret
+
+BattleAnimFunction_47: ; ce5b4 (33:65b4)
+	ld d, $50
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	add [hl]
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimFunction_48: ; ce5dc (33:65dc)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $d0
+	jr z, .asm_ce5ea
+rept 4
+	dec [hl]
+endr
+	ret
+
+.asm_ce5ea
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_49: ; ce5ee (33:65ee)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce5f9
+	dw Functionce60a
+	dw Functionce622
+	dw Functionce618
+Functionce5f9: ; ce5f9 (33:65f9)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, asm_ce61c
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $ec
+Functionce60a: ; ce60a (33:660a)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $4
+	jr z, Functionce618
+rept 4
+	inc [hl]
+endr
+	ret
+
+Functionce618: ; ce618 (33:6618)
+	call DeinitBattleAnimation
+	ret
+
+asm_ce61c: ; ce61c (33:661c)
+	call BattleAnim_IncAnonJumptableIndex
+	call BattleAnim_IncAnonJumptableIndex
+Functionce622: ; ce622 (33:6622)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	cp $d8
+	ret z
+rept 4
+	dec [hl]
+endr
+	ret
+
+BattleAnimFunction_4A: ; ce62f (33:662f)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functionce63a
+	dw Functionce648
+	dw Functionce65c
+	dw Functionce672
+Functionce63a: ; ce63a (33:663a)
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functionce648: ; ce648 (33:6648)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	add $4
+	cp $70
+	jr c, .asm_ce654
+	xor a
+.asm_ce654
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ret
+
+Functionce65c: ; ce65c (33:665c)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	add $4
+	cp $70
+	jr c, .asm_ce668
+	xor a
+.asm_ce668
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	add $8
+	ld [hl], a
+	ret
+
+Functionce672: ; ce672 (33:6672)
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	add $4
+	cp $70
+	jr c, .asm_ce67e
+	xor a
+.asm_ce67e
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	add $4
+	ld [hl], a
+	ret
+
+BattleAnimFunction_4B: ; ce688 (33:6688)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld e, [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	ld l, a
+	and $f0
+	ld h, a
+	swap a
+	or h
+	ld h, a
+	ld a, l
+	and $f
+	swap a
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], d
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], e
+	ret
+
+BattleAnimFunction_4C: ; ce6b3 (33:66b3)
+	ld d, $18
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	call Functionce6f1
+	ret
+
+BattleAnimFunction_4F: ; ce6bf (33:66bf)
+	ld d, $18
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	srl a
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	add [hl]
+	call Functionce6f1
+	ret
+
+BattleAnimFunction_4D: ; ce6d2 (33:66d2)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr nc, .asm_ce6ed
+	inc [hl]
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	xor $ff
+	inc a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_ce6ed
+	call DeinitBattleAnimation
+	ret
+
+Functionce6f1: ; ce6f1 (33:66f1)
+	push af
+	push de
+	call BattleAnim_Sine
+	sra a
+	sra a
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call BattleAnim_Cosine
+	ld hl, BATTLEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+Functionce70a: ; ce70a (33:670a)
+	and $f
+	ld e, a
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	srl e
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+.asm_ce719
+	dec [hl]
+	dec e
+	jr nz, .asm_ce719
+	ret
+
+BattleAnim_AnonJumptable: ; ce71e (33:671e)
+	pop de
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+BattleAnim_IncAnonJumptableIndex: ; ce72c (33:672c)
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnim_Cosine: ; ce732 (33:6732)
+	add $10
+BattleAnim_Sine: ; ce734 (33:6734)
+	and $3f
+	cp $20
+	jr nc, .negative
+	call .ApplySineWave
+	ld a, h
+	ret
+
+.negative
+	and $1f
+	call .ApplySineWave
+	ld a, h
+	xor $ff
+	inc a
+	ret
+
+.ApplySineWave
+	ld e, a
+	ld a, d
+	ld d, 0
+	ld hl, BattleAnimSineWave
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $0
+.multiply
+	srl a
+	jr nc, .even
+	add hl, de
+.even
+	sla e
+	rl d
+	and a
+	jr nz, .multiply
+	ret
+
+BattleAnim_Sine_e: ; ce765 (33:6765)
+	ld a, e
+	call BattleAnim_Sine
+	ld e, a
+	ret
+
+BattleAnim_Cosine_e: ; ce76b (33:676b)
+	ld a, e
+	call BattleAnim_Cosine
+	ld e, a
+	ret
+
+; ce771 (33:6771)
+BattleAnim_AbsSinePrecise: ; ce771
+	ld a, e
+	call BattleAnim_Sine
+	ld e, l
+	ld d, h
+	ret
+
+; ce778
+BattleAnim_AbsCosinePrecise: ; ce778
+	ld a, e
+	call BattleAnim_Cosine
+	ld e, l
+	ld d, h
+	ret
+
+; ce77f
+BattleAnimSineWave: ; ce77f
+	sine_wave $100
+; ce7bf
--- /dev/null
+++ b/battle/objects/gfx_headers.asm
@@ -1,0 +1,52 @@
+
+AnimObjGFX: ; cfcf6
+
+object_gfx: MACRO
+; label, # tiles
+	db  \1
+	dba \2
+ENDM
+
+	object_gfx  0, AnimObj00GFX
+	object_gfx 21, AnimObj01GFX
+	object_gfx  6, AnimObj02GFX
+	object_gfx  6, AnimObj03GFX
+	object_gfx 20, AnimObj04GFX
+	object_gfx 26, AnimObj05GFX
+	object_gfx 18, AnimObj06GFX
+	object_gfx 12, AnimObj07GFX
+	object_gfx  9, AnimObj08GFX
+	object_gfx 17, AnimObj09GFX
+	object_gfx  6, AnimObj10GFX
+	object_gfx 10, AnimObj11GFX
+	object_gfx  9, AnimObj12GFX
+	object_gfx 13, AnimObj13GFX
+	object_gfx 16, AnimObj14GFX
+	object_gfx  2, AnimObj15GFX
+	object_gfx 11, AnimObj16GFX
+	object_gfx  9, AnimObj17GFX
+	object_gfx  9, AnimObj18GFX
+	object_gfx 19, AnimObj19GFX
+	object_gfx 10, AnimObj20GFX
+	object_gfx 12, AnimObj21GFX
+	object_gfx 18, AnimObj22GFX
+	object_gfx 13, AnimObj23GFX
+	object_gfx 10, AnimObj24GFX
+	object_gfx 27, AnimObj25GFX
+	object_gfx 12, AnimObj26GFX
+	object_gfx 14, AnimObj27GFX
+	object_gfx 16, AnimObj28GFX
+	object_gfx  7, AnimObj29GFX
+	object_gfx  8, AnimObj30GFX
+	object_gfx 40, AnimObj31GFX
+	object_gfx 36, AnimObj32GFX
+	object_gfx 16, AnimObj33GFX
+	object_gfx 48, AnimObj34GFX
+	object_gfx 18, AnimObj35GFX
+	object_gfx 38, AnimObj36GFX
+	object_gfx 35, AnimObj37GFX
+	object_gfx 18, AnimObj38GFX
+	object_gfx 24, AnimObj39GFX
+	object_gfx  1, NULL
+	object_gfx  1, NULL
+; cfd9e
--- /dev/null
+++ b/battle/objects/helpers.asm
@@ -1,0 +1,130 @@
+ReinitBattleAnimFrameset: ; ce7bf (33:67bf)
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], 0
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld [hl], -1
+	ret
+
+GetBattleAnimFrame: ; ce7d1
+.loop
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .next_frame
+	dec [hl]
+	call .GetPointer
+	ld a, [hli]
+	push af
+	jr .okay
+
+.next_frame
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	inc [hl]
+	call .GetPointer
+	ld a, [hli]
+	cp -2
+	jr z, .restart
+	cp -1
+	jr z, .repeat_last
+	push af
+	ld a, [hl]
+	push hl
+	and $3f
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.okay
+	ld a, [hl]
+	and $c0
+	srl a
+	ld [wBattleAnimTemp7], a
+	pop af
+	ret
+
+.repeat_last
+	xor a
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], a
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	jr .loop
+
+.restart
+	xor a
+	ld hl, BATTLEANIMSTRUCT_DURATION
+	add hl, bc
+	ld [hl], a
+	dec a
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld [hl], a
+	jr .loop
+
+; ce823
+
+.GetPointer: ; ce823
+	ld hl, BATTLEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, BattleAnimFrameData
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, BATTLEANIMSTRUCT_FRAME
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	add hl, de
+	ret
+
+; ce83c
+
+GetBattleAnimOAMPointer: ; ce83c
+	ld l, a
+	ld h, 0
+	ld de, BattleAnimOAMData
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ret
+
+; ce846
+
+LoadBattleAnimObj: ; ce846 (33:6846)
+	push hl
+	ld l, a
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	ld de, AnimObjGFX
+	add hl, de
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+	push bc
+	call DecompressRequest2bpp
+	pop bc
+	ret
+
+; ce85e (33:685e)
--- /dev/null
+++ b/battle/objects/oam.asm
@@ -1,0 +1,1086 @@
+
+BattleAnimOAMData: ; ceeae
+; vtile offset (?), length, address
+	dbbw $00, 16, .OAMData_00 ; 00
+	dbbw $04,  9, .OAMData_01 ; 01
+	dbbw $08,  4, .OAMData_02 ; 02
+	dbbw $09,  4, .OAMData_03 ; 03
+	dbbw $0d,  4, .OAMData_04 ; 04
+	dbbw $0f,  4, .OAMData_03 ; 05
+	dbbw $13,  4, .OAMData_04 ; 06
+	dbbw $04, 16, .OAMData_00 ; 07
+	dbbw $08, 16, .OAMData_00 ; 08
+	dbbw $08, 16, .OAMData_09 ; 09
+	dbbw $00,  4, .OAMData_04 ; 0a
+	dbbw $02,  4, .OAMData_03 ; 0b
+	dbbw $06,  2, .OAMData_0c ; 0c
+	dbbw $07,  2, .OAMData_0c ; 0d
+	dbbw $02,  4, .OAMData_04 ; 0e
+	dbbw $04,  1, .OAMData_0f ; 0f
+	dbbw $05,  1, .OAMData_0f ; 10
+	dbbw $00,  2, .OAMData_11 ; 11
+	dbbw $02,  2, .OAMData_11 ; 12
+	dbbw $00,  4, .OAMData_13 ; 13
+	dbbw $00,  1, .OAMData_0f ; 14
+	dbbw $01,  1, .OAMData_0f ; 15
+	dbbw $02,  1, .OAMData_0f ; 16
+	dbbw $03,  1, .OAMData_0f ; 17
+	dbbw $00,  4, .OAMData_02 ; 18
+	dbbw $01, 16, .OAMData_00 ; 19
+	dbbw $05, 16, .OAMData_00 ; 1a
+	dbbw $00,  4, .OAMData_03 ; 1b
+	dbbw $05, 12, .OAMData_1c ; 1c
+	dbbw $02,  4, .OAMData_02 ; 1d
+	dbbw $06,  1, .OAMData_0f ; 1e
+	dbbw $07,  1, .OAMData_0f ; 1f
+	dbbw $08,  1, .OAMData_0f ; 20
+	dbbw $04,  4, .OAMData_03 ; 21
+	dbbw $09, 22, .OAMData_22 ; 22
+	dbbw $04,  2, .OAMData_11 ; 23
+	dbbw $06,  2, .OAMData_11 ; 24
+	dbbw $0c,  1, .OAMData_0f ; 25
+	dbbw $0a,  1, .OAMData_0f ; 26
+	dbbw $0b,  4, .OAMData_02 ; 27
+	dbbw $08,  4, .OAMData_04 ; 28
+	dbbw $06,  4, .OAMData_04 ; 29
+	dbbw $00,  5, .OAMData_2a ; 2a
+	dbbw $03,  6, .OAMData_2b ; 2b
+	dbbw $00,  7, .OAMData_2c ; 2c
+	dbbw $03,  8, .OAMData_2d ; 2d
+	dbbw $00,  9, .OAMData_2e ; 2e
+	dbbw $00,  4, .OAMData_2f ; 2f
+	dbbw $02,  4, .OAMData_30 ; 30
+	dbbw $04,  6, .OAMData_31 ; 31
+	dbbw $00,  2, .OAMData_32 ; 32
+	dbbw $00,  7, .OAMData_33 ; 33
+	dbbw $00, 14, .OAMData_32 ; 34
+	dbbw $00, 21, .OAMData_33 ; 35
+	dbbw $00,  2, .OAMData_36 ; 36
+	dbbw $00,  6, .OAMData_36 ; 37
+	dbbw $00, 10, .OAMData_36 ; 38
+	dbbw $00, 14, .OAMData_36 ; 39
+	dbbw $00,  2, .OAMData_3a ; 3a
+	dbbw $00,  6, .OAMData_3a ; 3b
+	dbbw $00, 10, .OAMData_3a ; 3c
+	dbbw $00, 14, .OAMData_3a ; 3d
+	dbbw $00,  4, .OAMData_3e ; 3e
+	dbbw $00, 16, .OAMData_3e ; 3f
+	dbbw $00, 26, .OAMData_3e ; 40
+	dbbw $00, 26, .OAMData_41 ; 41
+	dbbw $0e,  4, .OAMData_42 ; 42
+	dbbw $0e,  8, .OAMData_42 ; 43
+	dbbw $0e,  4, .OAMData_44 ; 44
+	dbbw $0e,  8, .OAMData_44 ; 45
+	dbbw $0e,  4, .OAMData_46 ; 46
+	dbbw $0e,  4, .OAMData_47 ; 47
+	dbbw $00,  6, .OAMData_48 ; 48
+	dbbw $03,  4, .OAMData_49 ; 49
+	dbbw $03,  2, .OAMData_4a ; 4a
+	dbbw $01,  5, .OAMData_0f ; 4b
+	dbbw $01,  6, .OAMData_4c ; 4c
+	dbbw $01,  7, .OAMData_4d ; 4d
+	dbbw $01,  3, .OAMData_4d ; 4e
+	dbbw $01,  8, .OAMData_4f ; 4f
+	dbbw $01,  9, .OAMData_50 ; 50
+	dbbw $01, 10, .OAMData_51 ; 51
+	dbbw $01,  6, .OAMData_51 ; 52
+	dbbw $00,  9, .OAMData_01 ; 53
+	dbbw $04,  4, .OAMData_02 ; 54
+	dbbw $05,  4, .OAMData_02 ; 55
+	dbbw $00,  2, .OAMData_56 ; 56
+	dbbw $02,  2, .OAMData_56 ; 57
+	dbbw $04,  2, .OAMData_56 ; 58
+	dbbw $02,  4, .OAMData_59 ; 59
+	dbbw $02,  4, .OAMData_5a ; 5a
+	dbbw $02,  2, .OAMData_0c ; 5b
+	dbbw $04,  2, .OAMData_0c ; 5c
+	dbbw $06,  4, .OAMData_5d ; 5d
+	dbbw $08,  2, .OAMData_0c ; 5e
+	dbbw $09,  2, .OAMData_0c ; 5f
+	dbbw $05,  2, .OAMData_60 ; 60
+	dbbw $00,  2, .OAMData_61 ; 61
+	dbbw $00,  5, .OAMData_61 ; 62
+	dbbw $00,  9, .OAMData_61 ; 63
+	dbbw $09,  9, .OAMData_61 ; 64
+	dbbw $00,  4, .OAMData_65 ; 65
+	dbbw $00,  7, .OAMData_65 ; 66
+	dbbw $00,  9, .OAMData_65 ; 67
+	dbbw $09,  9, .OAMData_65 ; 68
+	dbbw $04,  1, .OAMData_69 ; 69
+	dbbw $05,  2, .OAMData_6a ; 6a
+	dbbw $06,  4, .OAMData_03 ; 6b
+	dbbw $0a,  4, .OAMData_03 ; 6c
+	dbbw $0e,  4, .OAMData_03 ; 6d
+	dbbw $08,  5, .OAMData_6e ; 6e
+	dbbw $0d,  3, .OAMData_6f ; 6f
+	dbbw $01,  8, .OAMData_70 ; 70
+	dbbw $03,  8, .OAMData_70 ; 71
+	dbbw $05,  8, .OAMData_70 ; 72
+	dbbw $07,  8, .OAMData_70 ; 73
+	dbbw $06,  4, .OAMData_02 ; 74
+	dbbw $07,  4, .OAMData_02 ; 75
+	dbbw $0a,  2, .OAMData_76 ; 76
+	dbbw $00,  1, .OAMData_77 ; 77
+	dbbw $00,  3, .OAMData_78 ; 78
+	dbbw $00,  6, .OAMData_79 ; 79
+	dbbw $00,  9, .OAMData_7a ; 7a
+	dbbw $00, 12, .OAMData_7b ; 7b
+	dbbw $00, 14, .OAMData_7c ; 7c
+	dbbw $00, 15, .OAMData_7d ; 7d
+	dbbw $04,  4, .OAMData_03 ; 7e
+	dbbw $08,  4, .OAMData_03 ; 7f
+	dbbw $0d,  1, .OAMData_0f ; 80
+	dbbw $0e,  4, .OAMData_81 ; 81
+	dbbw $10,  1, .OAMData_0f ; 82
+	dbbw $11,  1, .OAMData_0f ; 83
+	dbbw $04,  2, .OAMData_6a ; 84
+	dbbw $05,  2, .OAMData_6a ; 85
+	dbbw $0a,  4, .OAMData_04 ; 86
+	dbbw $00,  8, .OAMData_87 ; 87
+	dbbw $00, 12, .OAMData_88 ; 88
+	dbbw $00, 16, .OAMData_87 ; 89
+	dbbw $09,  2, .OAMData_8a ; 8a
+	dbbw $09,  4, .OAMData_8a ; 8b
+	dbbw $09,  6, .OAMData_8a ; 8c
+	dbbw $09,  8, .OAMData_8a ; 8d
+	dbbw $12,  5, .OAMData_8e ; 8e
+	dbbw $00,  4, .OAMData_8f ; 8f
+	dbbw $04,  4, .OAMData_8f ; 90
+	dbbw $08,  4, .OAMData_8f ; 91
+	dbbw $0c,  4, .OAMData_8f ; 92
+	dbbw $00,  6, .OAMData_93 ; 93
+	dbbw $04,  4, .OAMData_03 ; 94
+	dbbw $0a,  4, .OAMData_04 ; 95
+	dbbw $15,  4, .OAMData_30 ; 96
+	dbbw $04,  4, .OAMData_30 ; 97
+	dbbw $0c,  4, .OAMData_04 ; 98
+	dbbw $0a,  4, .OAMData_99 ; 99
+	dbbw $0c,  4, .OAMData_03 ; 9a
+	dbbw $00, 36, .OAMData_9b ; 9b
+	dbbw $0d,  2, .OAMData_9c ; 9c
+	dbbw $0d,  4, .OAMData_9c ; 9d
+	dbbw $0d,  6, .OAMData_9c ; 9e
+	dbbw $02,  8, .OAMData_9f ; 9f
+	dbbw $08,  7, .OAMData_a0 ; a0
+	dbbw $08,  5, .OAMData_a0 ; a1
+	dbbw $08,  3, .OAMData_a0 ; a2
+	dbbw $00, 16, .OAMData_1c ; a3
+	dbbw $00,  9, .OAMData_a4 ; a4
+	dbbw $06,  9, .OAMData_a4 ; a5
+	dbbw $0c,  9, .OAMData_a4 ; a6
+	dbbw $12,  9, .OAMData_a4 ; a7
+	dbbw $18,  9, .OAMData_a4 ; a8
+	dbbw $1e,  9, .OAMData_a4 ; a9
+	dbbw $24,  9, .OAMData_a4 ; aa
+	dbbw $2a,  9, .OAMData_a4 ; ab
+	dbbw $03,  4, .OAMData_ac ; ac
+	dbbw $12,  4, .OAMData_03 ; ad
+	dbbw $10,  4, .OAMData_04 ; ae
+	dbbw $16,  1, .OAMData_0f ; af
+	dbbw $17,  4, .OAMData_02 ; b0
+	dbbw $18,  4, .OAMData_03 ; b1
+	dbbw $1c,  4, .OAMData_03 ; b2
+	dbbw $20,  3, .OAMData_03 ; b3
+	dbbw $23,  4, .OAMData_04 ; b4
+	dbbw $25,  3, .OAMData_03 ; b5
+	dbbw $17,  4, .OAMData_03 ; b6
+	dbbw $0a, 16, .OAMData_00 ; b7
+	dbbw $10, 16, .OAMData_1c ; b8
+	dbbw $00, 16, .OAMData_1c ; b9
+	dbbw $04,  4, .OAMData_03 ; ba
+	dbbw $08,  2, .OAMData_11 ; bb
+	dbbw $20,  6, .OAMData_bc ; bc
+	dbbw $08,  1, .OAMData_0f ; bd
+	dbbw $04,  4, .OAMData_03 ; be
+	dbbw $1a,  4, .OAMData_30 ; bf
+	dbbw $16,  9, .OAMData_01 ; c0
+	dbbw $10, 16, .OAMData_c1 ; c1
+	dbbw $09,  6, .OAMData_c2 ; c2
+	dbbw $11,  9, .OAMData_c3 ; c3
+	dbbw $0e,  4, .OAMData_03 ; c4
+	dbbw $0b,  4, .OAMData_30 ; c5
+	dbbw $1c,  6, .OAMData_02 ; c6
+	dbbw $20, 16, .OAMData_c1 ; c7
+	dbbw $05,  6, .OAMData_c8 ; c8
+	dbbw $0b,  4, .OAMData_03 ; c9
+	dbbw $09,  4, .OAMData_ca ; ca
+	dbbw $0b,  4, .OAMData_04 ; cb
+	dbbw $11, 13, .OAMData_cc ; cc
+	dbbw $00,  9, .OAMData_c3 ; cd
+	dbbw $09,  9, .OAMData_c3 ; ce
+	dbbw $00, 12, .OAMData_cf ; cf
+	dbbw $06, 12, .OAMData_cf ; d0
+	dbbw $0c, 12, .OAMData_cf ; d1
+	dbbw $12, 12, .OAMData_cf ; d2
+	dbbw $00, 13, .OAMData_cc ; d3
+	dbbw $00,  7, .OAMData_d4 ; d4
+	dbbw $00,  6, .OAMData_d5 ; d5
+	dbbw $00, 14, .OAMData_d6 ; d6
+	dbbw $00, 12, .OAMData_d7 ; d7
+
+.OAMData_11
+	dsprite  -1, 0,  -1, 4, $00, $00
+	dsprite   0, 0,  -1, 4, $01, $00
+
+.OAMData_56
+	dsprite  -1, 4,  -1, 0, $00, $00
+	dsprite  -1, 4,   0, 0, $01, $00
+
+.OAMData_03
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $00
+	dsprite   0, 0,  -1, 0, $02, $00
+	dsprite   0, 0,   0, 0, $03, $00
+
+.OAMData_02
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $00, $20
+	dsprite   0, 0,  -1, 0, $00, $40
+	dsprite   0, 0,   0, 0, $00, $60
+
+.OAMData_c3
+	dsprite  -2, 4,  -2, 4, $00, $00
+	dsprite  -2, 4,  -1, 4, $01, $00
+	dsprite  -2, 4,   0, 4, $02, $00
+	dsprite  -1, 4,  -2, 4, $03, $00
+	dsprite  -1, 4,  -1, 4, $04, $00
+	dsprite  -1, 4,   0, 4, $05, $00
+	dsprite   0, 4,  -2, 4, $06, $00
+	dsprite   0, 4,  -1, 4, $07, $00
+	dsprite   0, 4,   0, 4, $08, $00
+
+.OAMData_01
+	dsprite  -2, 4,  -2, 4, $00, $00
+	dsprite  -2, 4,  -1, 4, $01, $00
+	dsprite  -2, 4,   0, 4, $00, $20
+	dsprite  -1, 4,  -2, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $03, $00
+	dsprite  -1, 4,   0, 4, $02, $60
+	dsprite   0, 4,  -2, 4, $00, $40
+	dsprite   0, 4,  -1, 4, $01, $60
+	dsprite   0, 4,   0, 4, $00, $60
+
+.OAMData_cf
+	dsprite  -2, 0,  -2, 4, $00, $00
+	dsprite  -2, 0,  -1, 4, $01, $00
+	dsprite  -2, 0,   0, 4, $02, $00
+	dsprite  -1, 0,  -2, 4, $03, $00
+	dsprite  -1, 0,  -1, 4, $04, $00
+	dsprite  -1, 0,   0, 4, $05, $00
+	dsprite   0, 0,  -2, 4, $05, $60
+	dsprite   0, 0,  -1, 4, $04, $60
+	dsprite   0, 0,   0, 4, $03, $60
+	dsprite   1, 0,  -2, 4, $02, $60
+	dsprite   1, 0,  -1, 4, $01, $60
+	dsprite   1, 0,   0, 4, $00, $60
+
+.OAMData_1c
+	dsprite  -2, 0,  -2, 0, $00, $00
+	dsprite  -2, 0,  -1, 0, $01, $00
+	dsprite  -2, 0,   0, 0, $02, $00
+	dsprite  -2, 0,   1, 0, $03, $00
+	dsprite  -1, 0,  -2, 0, $04, $00
+	dsprite  -1, 0,  -1, 0, $05, $00
+	dsprite  -1, 0,   0, 0, $06, $00
+	dsprite  -1, 0,   1, 0, $07, $00
+	dsprite   0, 0,  -2, 0, $08, $00
+	dsprite   0, 0,  -1, 0, $09, $00
+	dsprite   0, 0,   0, 0, $0a, $00
+	dsprite   0, 0,   1, 0, $0b, $00
+	dsprite   1, 0,  -2, 0, $0c, $00
+	dsprite   1, 0,  -1, 0, $0d, $00
+	dsprite   1, 0,   0, 0, $0e, $00
+	dsprite   1, 0,   1, 0, $0f, $00
+
+.OAMData_00
+	dsprite  -2, 0,  -2, 0, $00, $00
+	dsprite  -2, 0,  -1, 0, $01, $00
+	dsprite  -1, 0,  -2, 0, $02, $00
+	dsprite  -1, 0,  -1, 0, $03, $00
+	dsprite  -2, 0,   0, 0, $01, $20
+	dsprite  -2, 0,   1, 0, $00, $20
+	dsprite  -1, 0,   0, 0, $03, $20
+	dsprite  -1, 0,   1, 0, $02, $20
+	dsprite   0, 0,  -2, 0, $02, $40
+	dsprite   0, 0,  -1, 0, $03, $40
+	dsprite   1, 0,  -2, 0, $00, $40
+	dsprite   1, 0,  -1, 0, $01, $40
+	dsprite   0, 0,   0, 0, $03, $60
+	dsprite   0, 0,   1, 0, $02, $60
+	dsprite   1, 0,   0, 0, $01, $60
+	dsprite   1, 0,   1, 0, $00, $60
+
+.OAMData_09
+	dsprite  -3, 4,  -3, 4, $00, $00
+	dsprite  -3, 4,  -2, 4, $01, $00
+	dsprite  -2, 4,  -3, 4, $02, $00
+	dsprite  -2, 4,  -2, 4, $03, $00
+	dsprite  -3, 4,   0, 4, $01, $20
+	dsprite  -3, 4,   1, 4, $00, $20
+	dsprite  -2, 4,   0, 4, $03, $20
+	dsprite  -2, 4,   1, 4, $02, $20
+	dsprite   0, 4,  -3, 4, $02, $40
+	dsprite   0, 4,  -2, 4, $03, $40
+	dsprite   1, 4,  -3, 4, $00, $40
+	dsprite   1, 4,  -2, 4, $01, $40
+	dsprite   0, 4,   0, 4, $03, $60
+	dsprite   0, 4,   1, 4, $02, $60
+	dsprite   1, 4,   0, 4, $01, $60
+	dsprite   1, 4,   1, 4, $00, $60
+
+.OAMData_0c
+	dsprite  -1, 4,  -1, 0, $00, $00
+	dsprite  -1, 4,   0, 0, $00, $20
+
+.OAMData_6a
+	dsprite   0, 0,  -1, 0, $00, $00
+	dsprite   0, 0,   0, 0, $00, $20
+
+.OAMData_04
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $00, $20
+	dsprite   0, 0,  -1, 0, $01, $00
+	dsprite   0, 0,   0, 0, $01, $20
+
+.OAMData_5d
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $00
+	dsprite   0, 0,  -1, 0, $00, $40
+	dsprite   0, 0,   0, 0, $01, $40
+
+.OAMData_13
+	dsprite  -1, 2,  -1, 0, $02, $00
+	dsprite   0, 2,  -1, 0, $03, $00
+	dsprite  -2, 6,   0, 0, $02, $00
+	dsprite  -1, 6,   0, 0, $03, $00
+
+.OAMData_22
+	dsprite   1, 0, -11, 0, $01, $00
+	dsprite   0, 0, -10, 0, $02, $00
+	dsprite   0, 0,  -9, 0, $03, $00
+	dsprite   0, 0,  -8, 0, $00, $00
+	dsprite   0, 0,  -7, 0, $03, $00
+	dsprite   0, 0,  -6, 0, $00, $00
+	dsprite   0, 0,  -5, 0, $03, $00
+	dsprite   0, 0,  -4, 0, $00, $00
+	dsprite   0, 0,  -3, 0, $03, $00
+	dsprite   0, 0,  -2, 0, $00, $00
+	dsprite   0, 0,  -1, 0, $01, $00
+	dsprite  -1, 0,   0, 0, $02, $00
+	dsprite  -1, 0,   1, 0, $03, $00
+	dsprite  -1, 0,   2, 0, $00, $00
+	dsprite  -1, 0,   3, 0, $03, $00
+	dsprite  -1, 0,   4, 0, $00, $00
+	dsprite  -1, 0,   5, 0, $03, $00
+	dsprite  -1, 0,   6, 0, $00, $00
+	dsprite  -1, 0,   7, 0, $03, $00
+	dsprite  -1, 0,   8, 0, $00, $00
+	dsprite  -1, 0,   9, 0, $01, $00
+	dsprite  -2, 0,  10, 0, $02, $00
+
+.OAMData_2a
+	dsprite  -3, 4,  -1, 0, $00, $00
+	dsprite  -3, 4,   0, 0, $00, $20
+	dsprite  -2, 4,  -1, 0, $01, $00
+	dsprite  -2, 4,   0, 0, $01, $20
+	dsprite  -1, 4,  -1, 4, $02, $00
+
+.OAMData_2b
+	dsprite  -4, 4,  -1, 0, $00, $00
+	dsprite  -4, 4,   0, 0, $00, $20
+	dsprite  -3, 4,  -1, 0, $01, $00
+	dsprite  -3, 4,   0, 0, $01, $20
+	dsprite  -2, 4,  -1, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+
+.OAMData_2c
+	dsprite  -5, 4,  -1, 0, $00, $00
+	dsprite  -5, 4,   0, 0, $00, $20
+	dsprite  -4, 4,  -1, 0, $01, $00
+	dsprite  -4, 4,   0, 0, $01, $20
+	dsprite  -3, 4,  -1, 4, $02, $00
+	dsprite  -2, 4,  -1, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+
+.OAMData_2d
+	dsprite  -6, 4,  -1, 0, $00, $00
+	dsprite  -6, 4,   0, 0, $00, $20
+	dsprite  -5, 4,  -1, 0, $01, $00
+	dsprite  -5, 4,   0, 0, $01, $20
+	dsprite  -4, 4,  -1, 4, $02, $00
+	dsprite  -3, 4,  -1, 4, $02, $00
+	dsprite  -2, 4,  -1, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+
+.OAMData_2e
+	dsprite  -7, 4,  -1, 0, $00, $00
+	dsprite  -7, 4,   0, 0, $00, $20
+	dsprite  -6, 4,  -1, 0, $01, $00
+	dsprite  -6, 4,   0, 0, $01, $20
+	dsprite  -5, 4,  -1, 4, $02, $00
+	dsprite  -4, 4,  -1, 4, $02, $00
+	dsprite  -3, 4,  -1, 4, $02, $00
+	dsprite  -2, 4,  -1, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+
+.OAMData_2f
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $00, $20
+	dsprite   0, 0,  -1, 0, $01, $00
+	dsprite   0, 0,   0, 0, $00, $60
+
+.OAMData_30
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $00
+	dsprite   0, 0,  -1, 0, $01, $60
+	dsprite   0, 0,   0, 0, $00, $60
+
+.OAMData_31
+	dsprite  -2, 4,  -1, 0, $00, $00
+	dsprite  -2, 4,   0, 0, $01, $00
+	dsprite  -1, 4,  -1, 0, $02, $00
+	dsprite  -1, 4,   0, 0, $03, $00
+	dsprite   0, 4,  -1, 0, $04, $00
+	dsprite   0, 4,   0, 0, $05, $00
+
+.OAMData_76
+	dsprite  -1, 5,  -1, 0, $00, $00
+	dsprite  -1, 1,   0, 0, $00, $00
+
+.OAMData_32
+	dsprite  -1, 0,  -2, 4, $00, $00
+	dsprite  -1, 0,   0, 4, $00, $00
+	dsprite  -3, 0,  -2, 4, $00, $00
+	dsprite  -3, 0,   0, 4, $00, $00
+	dsprite  -2, 0,  -3, 4, $00, $00
+	dsprite  -2, 0,  -2, 4, $01, $00
+	dsprite  -2, 0,  -1, 4, $00, $00
+	dsprite  -2, 0,   0, 4, $01, $00
+	dsprite  -2, 0,   1, 4, $00, $00
+	dsprite  -1, 0,  -4, 4, $00, $00
+	dsprite  -1, 0,  -3, 4, $01, $00
+	dsprite  -1, 0,  -1, 4, $01, $00
+	dsprite  -1, 0,   1, 4, $01, $00
+	dsprite  -1, 0,   2, 4, $00, $00
+
+.OAMData_33
+	dsprite  -2, 0,  -2, 4, $00, $00
+	dsprite  -2, 0,   0, 4, $00, $00
+	dsprite  -1, 0,  -3, 4, $00, $00
+	dsprite  -1, 0,  -2, 4, $01, $00
+	dsprite  -1, 0,  -1, 4, $00, $00
+	dsprite  -1, 0,   0, 4, $01, $00
+	dsprite  -1, 0,   1, 4, $00, $00
+	dsprite  -4, 0,  -2, 4, $00, $00
+	dsprite  -4, 0,   0, 4, $00, $00
+	dsprite  -3, 0,  -3, 4, $00, $00
+	dsprite  -3, 0,  -2, 4, $01, $00
+	dsprite  -3, 0,  -1, 4, $00, $00
+	dsprite  -3, 0,   0, 4, $01, $00
+	dsprite  -3, 0,   1, 4, $00, $00
+	dsprite  -2, 0,  -4, 4, $00, $00
+	dsprite  -2, 0,  -3, 4, $01, $00
+	dsprite  -2, 0,  -1, 4, $01, $00
+	dsprite  -2, 0,   1, 4, $01, $00
+	dsprite  -2, 0,   2, 4, $00, $00
+	dsprite  -1, 0,  -4, 4, $01, $00
+	dsprite  -1, 0,   2, 4, $01, $00
+
+.OAMData_36
+	dsprite  -7, 4,  -1, 0, $00, $00
+	dsprite  -7, 4,   0, 0, $01, $00
+	dsprite  -6, 4,  -1, 0, $02, $00
+	dsprite  -6, 4,   0, 0, $03, $00
+	dsprite  -5, 4,  -1, 0, $04, $00
+	dsprite  -5, 4,   0, 0, $05, $00
+	dsprite  -4, 4,  -1, 0, $06, $00
+	dsprite  -4, 4,   0, 0, $07, $00
+	dsprite  -3, 4,  -1, 0, $08, $00
+	dsprite  -3, 4,   0, 0, $09, $00
+	dsprite  -2, 4,  -1, 0, $0a, $00
+	dsprite  -2, 4,   0, 0, $0b, $00
+	dsprite  -1, 4,  -1, 0, $0c, $00
+	dsprite  -1, 4,   0, 0, $0d, $00
+
+.OAMData_3a
+	dsprite  -7, 4,  -1, 0, $0c, $00
+	dsprite  -7, 4,   0, 0, $0d, $00
+	dsprite  -6, 4,  -1, 0, $08, $00
+	dsprite  -6, 4,   0, 0, $09, $00
+	dsprite  -5, 4,  -1, 0, $04, $00
+	dsprite  -5, 4,   0, 0, $05, $00
+	dsprite  -4, 4,  -1, 0, $00, $00
+	dsprite  -4, 4,   0, 0, $01, $00
+	dsprite  -3, 4,  -1, 0, $02, $00
+	dsprite  -3, 4,   0, 0, $03, $00
+	dsprite  -2, 4,   0, 0, $02, $00
+	dsprite  -2, 4,   1, 0, $03, $00
+	dsprite  -1, 4,   0, 0, $0a, $00
+	dsprite  -1, 4,   1, 0, $0b, $00
+
+.OAMData_3e
+	dsprite   1, 4,  -2, 0, $00, $40
+	dsprite   1, 4,  -1, 0, $02, $40
+	dsprite   1, 4,   0, 0, $02, $60
+	dsprite   1, 4,   1, 0, $00, $60
+	dsprite  -1, 4,  -3, 0, $09, $20
+	dsprite  -1, 4,  -2, 0, $08, $20
+	dsprite  -1, 4,  -1, 0, $06, $00
+	dsprite  -1, 4,   0, 0, $07, $00
+	dsprite  -1, 4,   1, 0, $08, $00
+	dsprite  -1, 4,   2, 0, $09, $00
+	dsprite   0, 4,  -3, 0, $01, $20
+	dsprite   0, 4,  -2, 0, $00, $20
+	dsprite   0, 4,  -1, 0, $0c, $00
+	dsprite   0, 4,   0, 0, $0d, $00
+	dsprite   0, 4,   1, 0, $00, $00
+	dsprite   0, 4,   2, 0, $01, $00
+	dsprite  -3, 4,  -2, 0, $00, $00
+	dsprite  -3, 4,  -1, 0, $02, $00
+	dsprite  -3, 4,   0, 0, $02, $20
+	dsprite  -3, 4,   1, 0, $00, $20
+	dsprite  -2, 4,  -3, 0, $03, $20
+	dsprite  -2, 4,  -2, 0, $02, $20
+	dsprite  -2, 4,  -1, 0, $04, $00
+	dsprite  -2, 4,   0, 0, $05, $00
+	dsprite  -2, 4,   1, 0, $02, $00
+	dsprite  -2, 4,   2, 0, $03, $00
+
+.OAMData_41
+	dsprite  -3, 4,  -2, 0, $00, $00
+	dsprite  -3, 4,  -1, 0, $02, $00
+	dsprite  -3, 4,   0, 0, $02, $20
+	dsprite  -3, 4,   1, 0, $00, $20
+	dsprite  -2, 4,  -3, 4, $00, $00
+	dsprite  -2, 4,  -2, 4, $01, $00
+	dsprite  -2, 4,  -1, 0, $05, $20
+	dsprite  -2, 4,   0, 0, $04, $20
+	dsprite  -2, 4,   0, 4, $01, $20
+	dsprite  -2, 4,   1, 4, $00, $20
+	dsprite  -1, 4,  -3, 4, $02, $00
+	dsprite  -1, 4,  -2, 4, $03, $00
+	dsprite  -1, 4,  -1, 0, $07, $20
+	dsprite  -1, 4,   0, 0, $06, $20
+	dsprite  -1, 4,   0, 4, $03, $20
+	dsprite  -1, 4,   1, 4, $02, $20
+	dsprite   0, 4,  -3, 4, $04, $00
+	dsprite   0, 4,  -2, 4, $05, $00
+	dsprite   0, 4,  -1, 0, $0d, $20
+	dsprite   0, 4,   0, 0, $0c, $20
+	dsprite   0, 4,   0, 4, $05, $20
+	dsprite   0, 4,   1, 4, $04, $20
+	dsprite   1, 4,  -2, 0, $00, $40
+	dsprite   1, 4,  -1, 0, $02, $40
+	dsprite   1, 4,   0, 0, $02, $60
+	dsprite   1, 4,   1, 0, $00, $60
+
+.OAMData_42
+	dsprite  -3, 0,  -1, 4, $02, $00
+	dsprite   2, 0,  -1, 4, $02, $60
+	dsprite  -1, 4,  -3, 0, $01, $00
+	dsprite  -1, 4,   2, 0, $01, $60
+	dsprite  -4, 0,  -1, 4, $02, $00
+	dsprite   3, 0,  -1, 4, $02, $60
+	dsprite  -1, 4,  -4, 0, $01, $00
+	dsprite  -1, 4,   3, 0, $01, $60
+
+.OAMData_44
+	dsprite  -3, 5,  -3, 5, $00, $20
+	dsprite  -3, 5,   1, 3, $00, $00
+	dsprite   1, 3,  -3, 5, $00, $60
+	dsprite   1, 3,   1, 3, $00, $40
+	dsprite  -4, 5,  -4, 5, $00, $20
+	dsprite  -4, 5,   2, 3, $00, $00
+	dsprite   2, 3,  -4, 5, $00, $60
+	dsprite   2, 3,   2, 3, $00, $40
+
+.OAMData_46
+	dsprite  -3, 4,  -1, 4, $02, $00
+	dsprite   1, 4,  -1, 4, $02, $60
+	dsprite  -1, 4,  -3, 4, $01, $00
+	dsprite  -1, 4,   1, 4, $01, $60
+
+.OAMData_47
+	dsprite  -2, 0,  -2, 0, $00, $20
+	dsprite  -2, 0,   1, 0, $00, $00
+	dsprite   1, 0,  -2, 0, $00, $60
+	dsprite   1, 0,   1, 0, $00, $40
+
+.OAMData_48
+	dsprite  -3, 0,  -1, 4, $00, $00
+	dsprite  -2, 0,  -1, 2, $00, $00
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite   0, 0,  -1, 0, $00, $00
+	dsprite   1, 0,  -1, 2, $00, $00
+	dsprite   2, 0,  -1, 4, $00, $00
+
+.OAMData_49
+	dsprite  -1, 4,  -2, 0, $00, $20
+	dsprite  -1, 2,  -1, 0, $00, $20
+	dsprite  -1, 2,   0, 0, $00, $00
+	dsprite  -1, 4,   1, 0, $00, $00
+
+.OAMData_4a
+	dsprite  -1, 4,  -1, 0, $00, $60
+	dsprite  -1, 4,   0, 0, $00, $40
+
+.OAMData_0f
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite  -1, 4,  -2, 4, $01, $00
+	dsprite  -1, 4,  -1, 4, $01, $20
+	dsprite   0, 4,  -2, 4, $01, $40
+	dsprite   0, 4,  -1, 4, $01, $60
+
+.OAMData_4c
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 2,  -2, 6, $00, $00
+	dsprite   0, 2,  -3, 6, $01, $00
+	dsprite   0, 2,  -2, 6, $01, $20
+	dsprite   1, 2,  -3, 6, $01, $40
+	dsprite   1, 2,  -2, 6, $01, $60
+
+.OAMData_4d
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 2,  -2, 6, $00, $00
+	dsprite   1, 0,  -2, 0, $00, $00
+	dsprite   1, 0,  -3, 0, $01, $00
+	dsprite   1, 0,  -2, 0, $01, $20
+	dsprite   2, 0,  -3, 0, $01, $40
+	dsprite   2, 0,  -2, 0, $01, $60
+
+.OAMData_4f
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 2,  -2, 6, $00, $00
+	dsprite   1, 0,  -2, 0, $00, $00
+	dsprite   1, 6,  -3, 2, $00, $00
+	dsprite   1, 6,  -4, 2, $01, $00
+	dsprite   1, 6,  -3, 2, $01, $20
+	dsprite   2, 6,  -4, 2, $01, $40
+	dsprite   2, 6,  -3, 2, $01, $60
+
+.OAMData_50
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 2,  -2, 6, $00, $00
+	dsprite   1, 0,  -2, 0, $00, $00
+	dsprite   1, 6,  -3, 2, $00, $00
+	dsprite   2, 4,  -4, 4, $00, $00
+	dsprite   2, 4,  -5, 4, $01, $00
+	dsprite   2, 4,  -4, 4, $01, $20
+	dsprite   3, 4,  -5, 4, $01, $40
+	dsprite   3, 4,  -4, 4, $01, $60
+
+.OAMData_51
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 2,  -2, 6, $00, $00
+	dsprite   1, 0,  -2, 0, $00, $00
+	dsprite   1, 6,  -3, 2, $00, $00
+	dsprite   2, 4,  -4, 4, $00, $00
+	dsprite   3, 2,  -5, 6, $00, $00
+	dsprite   3, 2,  -6, 6, $01, $00
+	dsprite   3, 2,  -5, 6, $01, $20
+	dsprite   4, 2,  -6, 6, $01, $40
+	dsprite   4, 2,  -5, 6, $01, $60
+
+.OAMData_59
+	dsprite  -1, 4,  -2, 0, $00, $00
+	dsprite  -1, 4,  -1, 0, $01, $00
+	dsprite  -1, 4,   0, 0, $01, $20
+	dsprite  -1, 4,   1, 0, $00, $20
+
+.OAMData_5a
+	dsprite  -1, 4,  -2, 0, $02, $00
+	dsprite  -1, 4,  -1, 0, $01, $00
+	dsprite  -1, 4,   0, 0, $01, $20
+	dsprite  -1, 4,   1, 0, $02, $20
+
+.OAMData_60
+	dsprite  -1, 0,  -1, 4, $00, $00
+
+.OAMData_69
+	dsprite   0, 0,  -1, 4, $00, $00
+
+.OAMData_61
+	dsprite  -1, 4,  -4, 4, $00, $00
+	dsprite  -1, 4,  -3, 4, $01, $00
+	dsprite  -1, 4,  -2, 4, $02, $00
+	dsprite  -1, 4,  -1, 4, $03, $00
+	dsprite  -1, 4,   0, 4, $04, $00
+	dsprite  -1, 4,   1, 4, $05, $00
+	dsprite  -1, 4,   2, 4, $06, $00
+	dsprite  -2, 4,   1, 4, $07, $00
+	dsprite  -2, 4,   2, 4, $08, $00
+
+.OAMData_65
+	dsprite  -2, 4,  -4, 4, $08, $20
+	dsprite  -2, 4,  -3, 4, $07, $20
+	dsprite  -1, 4,  -4, 4, $06, $20
+	dsprite  -1, 4,  -3, 4, $05, $20
+	dsprite  -1, 4,  -2, 4, $04, $20
+	dsprite  -1, 4,  -1, 4, $03, $20
+	dsprite  -1, 4,   0, 4, $02, $20
+	dsprite  -1, 4,   1, 4, $01, $20
+	dsprite  -1, 4,   2, 4, $00, $20
+
+.OAMData_d4
+	dsprite   0, 0,  -4, 4, $00, $10
+	dsprite   0, 0,  -3, 4, $01, $10
+	dsprite   0, 0,  -2, 4, $02, $10
+	dsprite   0, 0,  -1, 4, $03, $10
+	dsprite   0, 0,   0, 4, $04, $10
+	dsprite   0, 0,   1, 4, $05, $10
+	dsprite   0, 0,   2, 4, $06, $10
+
+.OAMData_d6
+	dsprite  -1, 0,  -4, 4, $00, $10
+	dsprite   0, 0,  -4, 4, $01, $10
+	dsprite  -1, 0,  -3, 4, $02, $10
+	dsprite   0, 0,  -3, 4, $03, $10
+	dsprite  -1, 0,  -2, 4, $04, $10
+	dsprite   0, 0,  -2, 4, $05, $10
+	dsprite  -1, 0,  -1, 4, $06, $10
+	dsprite   0, 0,  -1, 4, $07, $10
+	dsprite  -1, 0,   0, 4, $08, $10
+	dsprite   0, 0,   0, 4, $09, $10
+	dsprite  -1, 0,   1, 4, $0a, $10
+	dsprite   0, 0,   1, 4, $0b, $10
+	dsprite  -1, 0,   2, 4, $0c, $10
+	dsprite   0, 0,   2, 4, $0d, $10
+
+.OAMData_d5
+	dsprite   0, 0,  -3, 0, $00, $11
+	dsprite   0, 0,  -2, 0, $01, $11
+	dsprite   0, 0,  -1, 0, $02, $11
+	dsprite   0, 0,   0, 0, $03, $11
+	dsprite   0, 0,   1, 0, $04, $11
+	dsprite   0, 0,   2, 0, $05, $11
+
+.OAMData_d7
+	dsprite   0, 0,  -3, 0, $00, $11
+	dsprite   1, 0,  -3, 0, $01, $11
+	dsprite   0, 0,  -2, 0, $02, $11
+	dsprite   1, 0,  -2, 0, $03, $11
+	dsprite   0, 0,  -1, 0, $04, $11
+	dsprite   1, 0,  -1, 0, $05, $11
+	dsprite   0, 0,   0, 0, $06, $11
+	dsprite   1, 0,   0, 0, $07, $11
+	dsprite   0, 0,   1, 0, $08, $11
+	dsprite   1, 0,   1, 0, $09, $11
+	dsprite   0, 0,   2, 0, $0a, $11
+	dsprite   1, 0,   2, 0, $0b, $11
+
+.OAMData_6e
+	dsprite  -2, 4,   0, 4, $00, $00
+	dsprite  -1, 4,  -2, 4, $01, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+	dsprite  -1, 4,   0, 4, $03, $00
+	dsprite   0, 4,  -2, 4, $04, $00
+
+.OAMData_6f
+	dsprite  -1, 4,  -2, 4, $00, $00
+	dsprite  -1, 4,  -1, 4, $01, $00
+	dsprite  -1, 4,   0, 4, $02, $00
+
+.OAMData_77
+	dsprite  -4, 4,   1, 4, $01, $60
+
+.OAMData_78
+	dsprite  -4, 4,   1, 4, $00, $00
+	dsprite  -4, 4,   0, 4, $01, $60
+	dsprite  -3, 4,   1, 4, $01, $60
+
+.OAMData_79
+	dsprite  -4, 4,   1, 4, $01, $00
+	dsprite  -4, 4,   0, 4, $00, $00
+	dsprite  -4, 4,  -1, 4, $01, $60
+	dsprite  -3, 4,   1, 4, $00, $00
+	dsprite  -3, 4,   0, 4, $01, $60
+	dsprite  -2, 4,   1, 4, $01, $60
+
+.OAMData_7a
+	dsprite  -4, 4,  -2, 4, $01, $60
+	dsprite  -4, 4,  -1, 4, $00, $00
+	dsprite  -4, 4,   0, 4, $01, $00
+	dsprite  -3, 4,  -1, 4, $01, $60
+	dsprite  -3, 4,   0, 4, $00, $00
+	dsprite  -3, 4,   1, 4, $01, $00
+	dsprite  -2, 4,   0, 4, $01, $60
+	dsprite  -2, 4,   1, 4, $00, $00
+	dsprite  -1, 4,   1, 4, $01, $60
+
+.OAMData_7b
+	dsprite  -4, 4,  -3, 4, $01, $60
+	dsprite  -4, 4,  -2, 4, $00, $00
+	dsprite  -4, 4,  -1, 4, $01, $00
+	dsprite  -3, 4,  -2, 4, $01, $60
+	dsprite  -3, 4,  -1, 4, $00, $00
+	dsprite  -3, 4,   0, 4, $01, $00
+	dsprite  -2, 4,  -1, 4, $01, $60
+	dsprite  -2, 4,   0, 4, $00, $00
+	dsprite  -2, 4,   1, 4, $01, $00
+	dsprite  -1, 4,   0, 4, $01, $60
+	dsprite  -1, 4,   1, 4, $00, $00
+	dsprite   0, 4,   1, 4, $01, $60
+
+.OAMData_7c
+	dsprite  -4, 4,  -3, 4, $00, $00
+	dsprite  -4, 4,  -2, 4, $01, $00
+	dsprite  -3, 4,  -3, 4, $01, $60
+	dsprite  -3, 4,  -2, 4, $00, $00
+	dsprite  -3, 4,  -1, 4, $01, $00
+	dsprite  -2, 4,  -2, 4, $01, $60
+	dsprite  -2, 4,  -1, 4, $00, $00
+	dsprite  -2, 4,   0, 4, $01, $00
+	dsprite  -1, 4,  -1, 4, $01, $60
+	dsprite  -1, 4,   0, 4, $00, $00
+	dsprite  -1, 4,   1, 4, $01, $00
+	dsprite   0, 4,   0, 4, $01, $60
+	dsprite   0, 4,   1, 4, $00, $00
+	dsprite   1, 4,   1, 4, $01, $60
+
+.OAMData_7d
+	dsprite  -4, 4,  -3, 4, $01, $00
+	dsprite  -3, 4,  -3, 4, $00, $00
+	dsprite  -3, 4,  -2, 4, $01, $00
+	dsprite  -2, 4,  -3, 4, $01, $60
+	dsprite  -2, 4,  -2, 4, $00, $00
+	dsprite  -2, 4,  -1, 4, $01, $00
+	dsprite  -1, 4,  -2, 4, $01, $60
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite  -1, 4,   0, 4, $01, $00
+	dsprite   0, 4,  -1, 4, $01, $60
+	dsprite   0, 4,   0, 4, $00, $00
+	dsprite   0, 4,   1, 4, $01, $00
+	dsprite   1, 4,   0, 4, $01, $60
+	dsprite   1, 4,   1, 4, $00, $00
+	dsprite   2, 4,   1, 4, $01, $60
+
+.OAMData_70
+	dsprite  -2, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,  -1, 0, $01, $00
+	dsprite  -2, 0,   0, 0, $00, $20
+	dsprite  -1, 0,   0, 0, $01, $20
+	dsprite   0, 0,  -1, 0, $01, $40
+	dsprite   1, 0,  -1, 0, $00, $40
+	dsprite   0, 0,   0, 0, $01, $60
+	dsprite   1, 0,   0, 0, $00, $60
+
+.OAMData_81
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $00
+	dsprite   0, 0,  -1, 0, $01, $60
+	dsprite   0, 0,   0, 0, $00, $60
+
+.OAMData_87
+	dsprite  -2, 4,  -1, 0, $00, $00
+	dsprite  -2, 4,   0, 0, $01, $00
+	dsprite  -1, 4,  -1, 0, $02, $00
+	dsprite  -1, 4,   0, 0, $03, $00
+	dsprite  -1, 4,  -1, 0, $00, $00
+	dsprite  -1, 4,   0, 0, $01, $00
+	dsprite   0, 4,  -1, 0, $02, $00
+	dsprite   0, 4,   0, 0, $03, $00
+	dsprite  -3, 4,  -1, 0, $00, $00
+	dsprite  -3, 4,   0, 0, $01, $00
+	dsprite  -2, 4,  -1, 0, $02, $00
+	dsprite  -2, 4,   0, 0, $03, $00
+	dsprite   0, 4,  -1, 0, $00, $00
+	dsprite   0, 4,   0, 0, $01, $00
+	dsprite   1, 4,  -1, 0, $02, $00
+	dsprite   1, 4,   0, 0, $03, $00
+
+.OAMData_88
+	dsprite  -2, 0,  -1, 0, $00, $00
+	dsprite  -2, 0,   0, 0, $01, $00
+	dsprite  -1, 0,  -1, 0, $02, $00
+	dsprite  -1, 0,   0, 0, $03, $00
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $00
+	dsprite   0, 0,  -1, 0, $02, $00
+	dsprite   0, 0,   0, 0, $03, $00
+	dsprite   0, 0,  -1, 0, $00, $00
+	dsprite   0, 0,   0, 0, $01, $00
+	dsprite   1, 0,  -1, 0, $02, $00
+	dsprite   1, 0,   0, 0, $03, $00
+
+.OAMData_8a
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite  -1, 0,   0, 4, $00, $00
+	dsprite  -2, 4,   1, 4, $00, $00
+	dsprite  -2, 0,   2, 4, $00, $00
+	dsprite  -3, 4,   3, 4, $00, $00
+	dsprite  -3, 0,   4, 4, $00, $00
+	dsprite  -4, 0,   5, 4, $00, $00
+	dsprite  -5, 4,   6, 4, $00, $00
+
+.OAMData_8e
+	dsprite  -3, 4,  -1, 4, $00, $00
+	dsprite  -2, 4,  -1, 4, $01, $00
+	dsprite  -1, 4,  -1, 4, $02, $00
+	dsprite   0, 4,  -1, 4, $01, $40
+	dsprite   1, 4,  -1, 4, $00, $40
+
+.OAMData_8f
+	dsprite  -1, 4,  -2, 0, $00, $00
+	dsprite  -1, 4,  -1, 0, $01, $00
+	dsprite  -1, 4,   0, 0, $02, $00
+	dsprite  -1, 4,   1, 0, $03, $00
+
+.OAMData_93
+	dsprite  -1, 0,  -2, 4, $00, $00
+	dsprite  -1, 0,  -1, 4, $01, $00
+	dsprite  -1, 0,   0, 4, $02, $00
+	dsprite   0, 0,  -2, 4, $03, $00
+	dsprite   0, 0,  -1, 4, $04, $00
+	dsprite   0, 0,   0, 4, $05, $00
+
+.OAMData_99
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $05, $00
+	dsprite   0, 0,  -1, 0, $01, $00
+	dsprite   0, 0,   0, 0, $05, $00
+
+.OAMData_9b
+	dsprite  -4, 4,   1, 0, $00, $00
+	dsprite  -4, 4,   2, 0, $01, $00
+	dsprite  -3, 4,  -1, 0, $02, $00
+	dsprite  -3, 4,   0, 0, $03, $00
+	dsprite  -3, 4,   1, 0, $04, $00
+	dsprite  -3, 4,   2, 0, $05, $00
+	dsprite  -3, 4,   3, 0, $06, $00
+	dsprite  -2, 4,  -2, 0, $07, $00
+	dsprite  -2, 4,  -1, 0, $08, $00
+	dsprite  -2, 4,   0, 0, $09, $00
+	dsprite  -2, 4,   1, 0, $0a, $00
+	dsprite  -2, 4,   2, 0, $0b, $00
+	dsprite  -2, 4,   3, 0, $0c, $00
+	dsprite  -2, 4,   4, 0, $0d, $00
+	dsprite  -1, 4,  -3, 0, $0e, $00
+	dsprite  -1, 4,  -2, 0, $0f, $00
+	dsprite  -1, 4,  -1, 0, $10, $00
+	dsprite  -1, 4,   0, 0, $11, $00
+	dsprite  -1, 4,   1, 0, $12, $00
+	dsprite  -1, 4,   2, 0, $13, $00
+	dsprite   0, 4,  -5, 0, $14, $00
+	dsprite   0, 4,  -4, 0, $15, $00
+	dsprite   0, 4,  -3, 0, $16, $00
+	dsprite   0, 4,  -2, 0, $17, $00
+	dsprite   0, 4,  -1, 0, $18, $00
+	dsprite   0, 4,   0, 0, $19, $00
+	dsprite   0, 4,   1, 0, $1a, $00
+	dsprite   0, 4,   2, 0, $1b, $00
+	dsprite   0, 4,   3, 0, $1c, $00
+	dsprite   1, 4,  -5, 0, $1d, $00
+	dsprite   1, 4,  -4, 0, $1e, $00
+	dsprite   1, 4,  -2, 0, $1f, $00
+	dsprite   1, 4,  -1, 0, $20, $00
+	dsprite   1, 4,   0, 0, $21, $00
+	dsprite   1, 4,   1, 0, $22, $00
+	dsprite   2, 4,   0, 0, $23, $00
+
+.OAMData_9c
+	dsprite   0, 4,  -1, 0, $02, $00
+	dsprite   0, 4,   0, 0, $03, $00
+	dsprite  -1, 4,  -1, 0, $01, $00
+	dsprite  -1, 4,   0, 0, $01, $20
+	dsprite  -2, 4,  -1, 0, $00, $00
+	dsprite  -2, 4,   0, 0, $00, $20
+
+.OAMData_9f
+	dsprite  -1, 0,  -2, 0, $00, $00
+	dsprite  -1, 0,  -1, 0, $01, $00
+	dsprite  -1, 0,   0, 0, $02, $00
+	dsprite  -1, 0,   1, 0, $03, $00
+	dsprite   0, 0,  -2, 0, $04, $00
+	dsprite   0, 0,  -1, 0, $05, $00
+	dsprite   0, 0,   0, 0, $06, $00
+	dsprite   0, 0,   1, 0, $07, $00
+
+.OAMData_a0
+	dsprite  -2, 4,  -1, 4, $00, $00
+	dsprite  -1, 4,  -1, 4, $00, $00
+	dsprite   0, 4,  -1, 4, $00, $00
+	dsprite  -3, 4,  -1, 4, $00, $00
+	dsprite   1, 4,  -1, 4, $00, $00
+	dsprite  -4, 4,  -1, 4, $00, $00
+	dsprite   2, 4,  -1, 4, $00, $00
+
+.OAMData_a4
+	dsprite  -2, 4,  -2, 4, $00, $00
+	dsprite  -2, 4,  -1, 4, $01, $00
+	dsprite  -2, 4,   0, 4, $02, $00
+	dsprite  -1, 4,  -2, 4, $03, $00
+	dsprite  -1, 4,  -1, 4, $04, $00
+	dsprite  -1, 4,   0, 4, $05, $00
+	dsprite   0, 4,  -2, 4, $00, $40
+	dsprite   0, 4,  -1, 4, $01, $40
+	dsprite   0, 4,   0, 4, $02, $40
+
+.OAMData_ac
+	dsprite  -1, 4,  -2, 0, $00, $00
+	dsprite  -1, 4,  -1, 0, $01, $00
+	dsprite  -1, 4,   0, 0, $01, $20
+	dsprite  -1, 4,   1, 0, $00, $20
+
+.OAMData_bc
+	dsprite  -1, 4,  -3, 0, $00, $00
+	dsprite  -1, 4,  -2, 0, $01, $00
+	dsprite  -1, 4,  -1, 0, $02, $00
+	dsprite  -1, 4,   0, 0, $02, $20
+	dsprite  -1, 4,   1, 0, $01, $20
+	dsprite  -1, 4,   2, 0, $00, $20
+
+.OAMData_c1
+	dsprite  -2, 0,  -2, 0, $00, $00
+	dsprite  -2, 0,  -1, 0, $01, $00
+	dsprite  -2, 0,   0, 0, $02, $00
+	dsprite  -2, 0,   1, 0, $00, $20
+	dsprite  -1, 0,  -2, 0, $03, $00
+	dsprite  -1, 0,  -1, 0, $04, $00
+	dsprite  -1, 0,   0, 0, $04, $20
+	dsprite  -1, 0,   1, 0, $05, $00
+	dsprite   0, 0,  -2, 0, $05, $60
+	dsprite   0, 0,  -1, 0, $04, $40
+	dsprite   0, 0,   0, 0, $04, $60
+	dsprite   0, 0,   1, 0, $03, $60
+	dsprite   1, 0,  -2, 0, $00, $40
+	dsprite   1, 0,  -1, 0, $02, $60
+	dsprite   1, 0,   0, 0, $01, $60
+	dsprite   1, 0,   1, 0, $00, $60
+
+.OAMData_c2
+	dsprite  -1, 0,  -2, 0, $00, $00
+	dsprite  -1, 0,  -1, 0, $01, $00
+	dsprite  -1, 0,   0, 0, $00, $60
+	dsprite   0, 0,  -1, 0, $00, $00
+	dsprite   0, 0,   0, 0, $01, $00
+	dsprite   0, 0,   1, 0, $00, $60
+
+.OAMData_c8
+	dsprite  -1, 0,   1, 4, $00, $00
+	dsprite  -1, 0,   2, 4, $01, $00
+	dsprite   0, 0,  -1, 4, $02, $00
+	dsprite   0, 0,   0, 4, $03, $00
+	dsprite   0, 0,   1, 4, $04, $00
+	dsprite   0, 0,   2, 4, $05, $00
+
+.OAMData_ca
+	dsprite  -1, 0,  -1, 0, $00, $00
+	dsprite  -1, 0,   0, 0, $01, $60
+	dsprite   0, 0,  -1, 0, $01, $00
+	dsprite   0, 0,   0, 0, $01, $20
+
+.OAMData_cc
+	dsprite  -2, 0, -13, 4, $00, $00
+	dsprite  -4, 0, -11, 4, $00, $00
+	dsprite  -1, 0,  -9, 4, $00, $00
+	dsprite  -5, 0,  -7, 4, $00, $00
+	dsprite  -3, 0,  -5, 4, $00, $00
+	dsprite  -5, 0,  -3, 4, $00, $00
+	dsprite  -3, 0,  -1, 4, $00, $00
+	dsprite  -3, 0,   0, 4, $00, $00
+	dsprite  -5, 0,   2, 4, $00, $00
+	dsprite   0, 0,   4, 4, $00, $00
+	dsprite  -2, 0,   6, 4, $00, $00
+	dsprite  -4, 0,   8, 4, $00, $00
+	dsprite  -2, 0,  10, 4, $00, $00
+; cfcf6
--- a/battle/sliding_intro.asm
+++ b/battle/sliding_intro.asm
@@ -1,4 +1,4 @@
-SlideBattlePics: ; 4e980
+BattleIntroSlidingPics: ; 4e980
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -5,10 +5,10 @@
 	ld [rSVBK], a
 	call .subfunction1
 	ld a, rSCX - $ff00
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	call .subfunction2
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	pop af
 	ld [rSVBK], a
 	ret
@@ -62,7 +62,7 @@
 ; 4e9d6
 
 .subfunction3: ; 4e9d6
-	ld hl, Sprites + 1
+	ld hl, Sprites + 1 ; x pixel
 	ld c, $12 ; 18
 	ld de, $4
 .loop3
--- /dev/null
+++ b/battle/trainer_huds.asm
@@ -1,0 +1,269 @@
+BattleStart_TrainerHuds: ; 2c000
+	ld a, $e4
+	ld [rOBP0], a
+	call LoadBallIconGFX
+	call ShowPlayerMonsRemaining
+	ld a, [wBattleMode]
+	dec a
+	ret z
+	jp ShowOTTrainerMonsRemaining
+; 2c012
+
+EnemySwitch_TrainerHud: ; 2c012
+	ld a, $e4
+	ld [rOBP0], a
+	call LoadBallIconGFX
+	jp ShowOTTrainerMonsRemaining
+; 2c01c
+
+ShowPlayerMonsRemaining: ; 2c01c
+	call DrawPlayerPartyIconHUDBorder
+	ld hl, PartyMon1HP
+	ld de, PartyCount
+	call StageBallTilesData
+	; ldpixel wPlaceBallsX, 12, 12
+	ld a, 12 * 8
+	ld hl, wPlaceBallsX
+	ld [hli], a
+	ld [hl], a
+	ld a, 8
+	ld [wPlaceBallsDirection], a
+	ld hl, Sprites
+	jp LoadTrainerHudOAM
+; 2c03a
+
+ShowOTTrainerMonsRemaining: ; 2c03a
+	call DrawEnemyHUDBorder
+	ld hl, OTPartyMon1HP
+	ld de, OTPartyCount
+	call StageBallTilesData
+	; ldpixel wPlaceBallsX, 9, 4
+	ld hl, wPlaceBallsX
+	ld a, 9 * 8
+	ld [hli], a
+	ld [hl], 4 * 8
+	ld a, -8
+	ld [wPlaceBallsDirection], a
+	ld hl, Sprites + PARTY_LENGTH * 4
+	jp LoadTrainerHudOAM
+; 2c059
+
+StageBallTilesData: ; 2c059
+	ld a, [de]
+	push af
+	ld de, Buffer1
+	ld c, PARTY_LENGTH
+	ld a, $34 ; empty slot
+.loop1
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .loop1
+	pop af
+	ld de, Buffer1
+.loop2
+	push af
+	call .GetHUDTile
+	inc de
+	pop af
+	dec a
+	jr nz, .loop2
+	ret
+; 2c075
+
+.GetHUDTile: ; 2c075
+	ld a, [hli]
+	and a
+	jr nz, .got_hp
+	ld a, [hl]
+	and a
+	ld b, $33 ; fainted
+	jr z, .fainted
+
+.got_hp
+rept 3
+	dec hl
+endr
+	ld a, [hl]
+	and a
+	ld b, $32 ; statused
+	jr nz, .load
+	dec b ; normal
+	jr .load
+
+.fainted
+rept 3
+	dec hl
+endr
+
+.load
+	ld a, b
+	ld [de], a
+	ld bc, PARTYMON_STRUCT_LENGTH + MON_HP - MON_STATUS
+	add hl, bc
+	ret
+; 2c095
+
+DrawPlayerHUDBorder: ; 2c095
+	ld hl, .tiles
+	ld de, wTrainerHUDTiles
+	ld bc, 4
+	call CopyBytes
+	hlcoord 18, 10
+	ld de, -1 ; start on right
+	jr PlaceHUDBorderTiles
+
+.tiles
+	db $73 ; right side
+	db $77 ; bottom right
+	db $6f ; bottom left
+	db $76 ; bottom side
+; 2c0ad
+
+DrawPlayerPartyIconHUDBorder: ; 2c0ad
+	ld hl, .tiles
+	ld de, wTrainerHUDTiles
+	ld bc, 4
+	call CopyBytes
+	hlcoord 18, 10
+	ld de, -1 ; start on right
+	jr PlaceHUDBorderTiles
+
+.tiles
+	db $73 ; right side
+	db $5c ; bottom right
+	db $6f ; bottom left
+	db $76 ; bottom side
+; 2c0c5
+
+DrawEnemyHUDBorder: ; 2c0c5
+	ld hl, .tiles
+	ld de, wTrainerHUDTiles
+	ld bc, 4
+	call CopyBytes
+	hlcoord 1, 2
+	ld de, 1 ; start on left
+	call PlaceHUDBorderTiles
+	ld a, [wBattleMode]
+	dec a
+	ret nz
+	ld a, [TempEnemyMonSpecies]
+	dec a
+	call CheckCaughtMon
+	ret z
+	hlcoord 1, 1
+	ld [hl], $5d
+	ret
+
+.tiles
+	db $6d ; left side
+	db $74 ; bottom left
+	db $78 ; bottom right
+	db $76 ; bottom side
+; 2c0f1
+
+PlaceHUDBorderTiles: ; 2c0f1
+	ld a, [wTrainerHUDTiles]
+	ld [hl], a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld a, [StartFlypoint]
+	ld [hl], a
+	ld b, $8
+.loop
+	add hl, de
+	ld a, [MovementBuffer]
+	ld [hl], a
+	dec b
+	jr nz, .loop
+	add hl, de
+	ld a, [EndFlypoint]
+	ld [hl], a
+	ret
+; 2c10d
+
+LinkBattle_TrainerHuds: ; 2c10d
+	call LoadBallIconGFX
+	ld hl, PartyMon1HP
+	ld de, PartyCount
+	call StageBallTilesData
+	ld hl, wPlaceBallsX
+	ld a, 10 * 8
+	ld [hli], a
+	ld [hl], 8 * 8
+	ld a, $8
+	ld [wPlaceBallsDirection], a
+	ld hl, Sprites
+	call LoadTrainerHudOAM
+
+	ld hl, OTPartyMon1HP
+	ld de, OTPartyCount
+	call StageBallTilesData
+	ld hl, wPlaceBallsX
+	ld a, 10 * 8
+	ld [hli], a
+	ld [hl], 13 * 8
+	ld hl, Sprites + PARTY_LENGTH * 4
+	jp LoadTrainerHudOAM
+; 2c143
+
+LoadTrainerHudOAM: ; 2c143
+	ld de, Buffer1
+	ld c, PARTY_LENGTH
+.loop
+	ld a, [wPlaceBallsY]
+	ld [hli], a
+	ld a, [wPlaceBallsX]
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	ld a, $3
+	ld [hli], a
+	ld a, [wPlaceBallsX]
+	ld b, a
+	ld a, [wPlaceBallsDirection]
+	add b
+	ld [wPlaceBallsX], a
+	inc de
+	dec c
+	jr nz, .loop
+	ret
+; 2c165
+
+LoadBallIconGFX: ; 2c165
+	ld de, .gfx
+	ld hl, VTiles0 tile $31
+	lb bc, BANK(LoadBallIconGFX), 4
+	call Get2bpp_2
+	ret
+; 2c172
+
+.gfx: ; 2c172
+INCBIN "gfx/battle/balls.2bpp"
+; 2c1b2
+
+_ShowLinkBattleParticipants: ; 2c1b2
+	call ClearBGPalettes
+	call LoadFontsExtra
+	hlcoord 2, 3
+	ld b, 9
+	ld c, 14
+	call TextBox
+	hlcoord 4, 5
+	ld de, PlayerName
+	call PlaceString
+	hlcoord 4, 10
+	ld de, OTPlayerName
+	call PlaceString
+	hlcoord 9, 8
+	ld a, $69 ; "V"
+	ld [hli], a
+	ld [hl], $6a ; "S"
+	callba LinkBattle_TrainerHuds ; no need to callba
+	ld b, SCGB_08
+	call GetSGBLayout
+	call SetPalettes
+	ld a, $e4
+	ld [rOBP0], a
+	ret
+; 2c1ef
--- a/battle/used_move_text.asm
+++ b/battle/used_move_text.asm
@@ -11,7 +11,6 @@
 
 	text_jump _ActorNameText
 	start_asm
-
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .start
@@ -67,30 +66,26 @@
 UsedMove1Text: ; 105e04
 	text_jump _UsedMove1Text
 	start_asm
-	jr Function105e10
+	jr UsedMoveText_CheckObedience
 ; 105e0b
 
 UsedMove2Text: ; 105e0b
 	text_jump _UsedMove2Text
 	start_asm
-; 105e10
-
-Function105e10: ; 105e10
+UsedMoveText_CheckObedience: ; 105e10
 ; check obedience
 	ld a, [AlreadyDisobeyed]
 	and a
-	jr z, GetMoveNameText
+	jr z, .GetMoveNameText
 ; print "instead,"
-	ld hl, UsedInsteadText
+	ld hl, .UsedInsteadText
 	ret
 ; 105e1a
 
-UsedInsteadText: ; 105e1a
+.UsedInsteadText
 	text_jump _UsedInsteadText
 	start_asm
-; 105e1f
-
-GetMoveNameText: ; 105e1f
+.GetMoveNameText
 	ld hl, MoveNameText
 	ret
 ; 105e23
@@ -98,9 +93,6 @@
 MoveNameText: ; 105e23
 	text_jump _MoveNameText
 	start_asm
-; 105e28
-
-GetUsedMoveTextEnder: ; 105e28
 ; get start address
 	ld hl, .endusedmovetexts
 
--- a/constants.asm
+++ b/constants.asm
@@ -4,6 +4,7 @@
 INCLUDE "hram.asm"
 
 INCLUDE "constants/wram_constants.asm"
+INCLUDE "constants/sram_constants.asm"
 INCLUDE "constants/pokemon_constants.asm"
 INCLUDE "constants/type_constants.asm"
 INCLUDE "constants/move_constants.asm"
@@ -30,3 +31,5 @@
 INCLUDE "constants/tilemap_constants.asm"
 INCLUDE "constants/cgb_constants.asm"
 INCLUDE "constants/battle_tower_constants.asm"
+INCLUDE "constants/cry_constants.asm"
+INCLUDE "constants/audio_constants.asm"
--- a/constants/animation_constants.asm
+++ b/constants/animation_constants.asm
@@ -1,42 +1,761 @@
+	const_def
+	const BATTLEANIMSTRUCT_INDEX
+	const BATTLEANIMSTRUCT_01
+	const BATTLEANIMSTRUCT_02
+	const BATTLEANIMSTRUCT_FRAMESET_ID
+	const BATTLEANIMSTRUCT_FUNCTION
+	const BATTLEANIMSTRUCT_PALETTE
+    const BATTLEANIMSTRUCT_TILEID
+    const BATTLEANIMSTRUCT_XCOORD
+    const BATTLEANIMSTRUCT_YCOORD
+    const BATTLEANIMSTRUCT_XOFFSET
+    const BATTLEANIMSTRUCT_YOFFSET
+    const BATTLEANIMSTRUCT_0B
+    const BATTLEANIMSTRUCT_DURATION
+    const BATTLEANIMSTRUCT_FRAME
+    const BATTLEANIMSTRUCT_ANON_JT_INDEX
+    const BATTLEANIMSTRUCT_0F
+    const BATTLEANIMSTRUCT_10
+    const BATTLEANIMSTRUCT_11
+    const BATTLEANIMSTRUCT_12
+    const BATTLEANIMSTRUCT_13
+    const BATTLEANIMSTRUCT_14
+    const BATTLEANIMSTRUCT_15
+    const BATTLEANIMSTRUCT_16
+    const BATTLEANIMSTRUCT_17
+BATTLEANIMSTRUCT_LENGTH EQU const_value
 
-ANIM_OBJ_BURNED EQU $10
-ANIM_OBJ_FROZEN EQU $2a
-ANIM_OBJ_GUST EQU $3e
-ANIM_OBJ_CHICK EQU $52
-ANIM_OBJ_SKULL EQU $55
-ANIM_OBJ_PARALYZED EQU $59
-ANIM_OBJ_HEART EQU $7e
-ANIM_OBJ_FLOWER EQU $b6
-ANIM_OBJ_COTTON EQU $b7
+	const_def
+	const ANIM_OBJ_00
+    const ANIM_OBJ_01
+    const ANIM_OBJ_02
+    const ANIM_OBJ_03
+    const ANIM_OBJ_04
+    const ANIM_OBJ_05
+    const ANIM_OBJ_06
+    const ANIM_OBJ_07
+    const ANIM_OBJ_08
+    const ANIM_OBJ_09
+    const ANIM_OBJ_0A
+    const ANIM_OBJ_0B
+    const ANIM_OBJ_0C
+    const ANIM_OBJ_0D
+    const ANIM_OBJ_0E
+    const ANIM_OBJ_0F
+    const ANIM_OBJ_BURNED
+    const ANIM_OBJ_11
+    const ANIM_OBJ_12
+    const ANIM_OBJ_13
+    const ANIM_OBJ_14
+    const ANIM_OBJ_POKE_BALL
+    const ANIM_OBJ_16
+    const ANIM_OBJ_17
+    const ANIM_OBJ_18
+    const ANIM_OBJ_19
+    const ANIM_OBJ_1A
+    const ANIM_OBJ_1B
+    const ANIM_OBJ_1C
+    const ANIM_OBJ_1D
+    const ANIM_OBJ_1E
+    const ANIM_OBJ_1F
+    const ANIM_OBJ_20
+    const ANIM_OBJ_21
+    const ANIM_OBJ_22
+    const ANIM_OBJ_23
+    const ANIM_OBJ_24
+    const ANIM_OBJ_25
+    const ANIM_OBJ_26
+    const ANIM_OBJ_27
+    const ANIM_OBJ_28
+    const ANIM_OBJ_29
+    const ANIM_OBJ_FROZEN
+    const ANIM_OBJ_2B
+    const ANIM_OBJ_2C
+    const ANIM_OBJ_2D
+    const ANIM_OBJ_2E
+    const ANIM_OBJ_2F
+    const ANIM_OBJ_30
+    const ANIM_OBJ_31
+    const ANIM_OBJ_32
+    const ANIM_OBJ_33
+    const ANIM_OBJ_34
+    const ANIM_OBJ_35
+    const ANIM_OBJ_36
+    const ANIM_OBJ_37
+    const ANIM_OBJ_38
+    const ANIM_OBJ_39
+    const ANIM_OBJ_3A
+    const ANIM_OBJ_3B
+    const ANIM_OBJ_3C
+    const ANIM_OBJ_3D
+    const ANIM_OBJ_GUST
+    const ANIM_OBJ_3F
+    const ANIM_OBJ_40
+    const ANIM_OBJ_41
+    const ANIM_OBJ_42
+    const ANIM_OBJ_43
+    const ANIM_OBJ_44
+    const ANIM_OBJ_45
+    const ANIM_OBJ_46
+    const ANIM_OBJ_47
+    const ANIM_OBJ_48
+    const ANIM_OBJ_49
+    const ANIM_OBJ_4A
+    const ANIM_OBJ_4B
+    const ANIM_OBJ_4C
+    const ANIM_OBJ_4D
+    const ANIM_OBJ_4E
+    const ANIM_OBJ_4F
+    const ANIM_OBJ_50
+    const ANIM_OBJ_51
+    const ANIM_OBJ_CHICK
+    const ANIM_OBJ_53
+    const ANIM_OBJ_54
+    const ANIM_OBJ_SKULL
+    const ANIM_OBJ_56
+    const ANIM_OBJ_57
+    const ANIM_OBJ_58
+    const ANIM_OBJ_PARALYZED
+    const ANIM_OBJ_5A
+    const ANIM_OBJ_5B
+    const ANIM_OBJ_5C
+    const ANIM_OBJ_5D
+    const ANIM_OBJ_5E
+    const ANIM_OBJ_5F
+    const ANIM_OBJ_60
+    const ANIM_OBJ_61
+    const ANIM_OBJ_62
+    const ANIM_OBJ_63
+    const ANIM_OBJ_64
+    const ANIM_OBJ_65
+    const ANIM_OBJ_66
+    const ANIM_OBJ_67
+    const ANIM_OBJ_68
+    const ANIM_OBJ_69
+    const ANIM_OBJ_6A
+    const ANIM_OBJ_6B
+    const ANIM_OBJ_6C
+    const ANIM_OBJ_6D
+    const ANIM_OBJ_6E
+    const ANIM_OBJ_6F
+    const ANIM_OBJ_70
+    const ANIM_OBJ_71
+    const ANIM_OBJ_72
+    const ANIM_OBJ_73
+    const ANIM_OBJ_74
+    const ANIM_OBJ_75
+    const ANIM_OBJ_76
+    const ANIM_OBJ_77
+    const ANIM_OBJ_78
+    const ANIM_OBJ_79
+    const ANIM_OBJ_7A
+    const ANIM_OBJ_7B
+    const ANIM_OBJ_7C
+    const ANIM_OBJ_7D
+    const ANIM_OBJ_HEART
+    const ANIM_OBJ_7F
+    const ANIM_OBJ_80
+    const ANIM_OBJ_81
+    const ANIM_OBJ_82
+    const ANIM_OBJ_83
+    const ANIM_OBJ_84
+    const ANIM_OBJ_85
+    const ANIM_OBJ_86
+    const ANIM_OBJ_87
+    const ANIM_OBJ_88
+    const ANIM_OBJ_89
+    const ANIM_OBJ_8A
+    const ANIM_OBJ_8B
+    const ANIM_OBJ_8C
+    const ANIM_OBJ_8D
+    const ANIM_OBJ_8E
+    const ANIM_OBJ_8F
+    const ANIM_OBJ_90
+    const ANIM_OBJ_91
+    const ANIM_OBJ_92
+    const ANIM_OBJ_93
+    const ANIM_OBJ_94
+    const ANIM_OBJ_95
+    const ANIM_OBJ_96
+    const ANIM_OBJ_97
+    const ANIM_OBJ_98
+    const ANIM_OBJ_99
+    const ANIM_OBJ_9A
+    const ANIM_OBJ_9B
+    const ANIM_OBJ_9C
+    const ANIM_OBJ_9D
+    const ANIM_OBJ_9E
+    const ANIM_OBJ_9F
+    const ANIM_OBJ_A0
+    const ANIM_OBJ_A1
+    const ANIM_OBJ_A2
+    const ANIM_OBJ_A3
+    const ANIM_OBJ_A4
+    const ANIM_OBJ_A5
+    const ANIM_OBJ_A6
+    const ANIM_OBJ_A7
+    const ANIM_OBJ_A8
+    const ANIM_OBJ_A9
+    const ANIM_OBJ_AA
+    const ANIM_OBJ_AB
+    const ANIM_OBJ_AC
+    const ANIM_OBJ_AD
+    const ANIM_OBJ_AE
+    const ANIM_OBJ_AF
+    const ANIM_OBJ_B0
+    const ANIM_OBJ_B1
+    const ANIM_OBJ_B2
+    const ANIM_OBJ_B3
+    const ANIM_OBJ_B4
+    const ANIM_OBJ_B5
+    const ANIM_OBJ_FLOWER
+    const ANIM_OBJ_COTTON
+    const ANIM_OBJ_PLAYERFEETFOLLOW
+    const ANIM_OBJ_ENEMYFEETFOLLOW
+    const ANIM_OBJ_BA
+    const ANIM_OBJ_BB
 
-ANIM_BG_FLASH_INVERTED EQU $01
-ANIM_BG_FLASH_WHITE EQU $02
-ANIM_BG_WHITE_HUES EQU $03
-ANIM_BG_BLACK_HUES EQU $04
-ANIM_BG_ALTERNATE_HUES EQU $05
-; ???? EQU $06
-; ???? EQU $07
-; ???? EQU $08
-ANIM_BG_HIDE_MON EQU $09
-ANIM_BG_SHOW_MON EQU $0a
-ANIM_BG_ENTER_MON EQU $0b
-ANIM_BG_RETURN_MON EQU $0c
-ANIM_BG_SURF EQU $0d
-ANIM_BG_WHIRLPOOL EQU $0e
-ANIM_BG_TELEPORT EQU $0f
-ANIM_BG_NIGHT_SHADE EQU $10
-ANIM_BG_FEET_FOLLOW EQU $11
-ANIM_BG_HEAD_FOLLOW EQU $12
-ANIM_BG_DOUBLE_TEAM EQU $13
-ANIM_BG_ACID_ARMOR EQU $14
-ANIM_BG_RAPID_FLASH EQU $15 ; unused
+	const_def
+	const BATTLEANIMFUNC_00
+    const BATTLEANIMFUNC_01
+    const BATTLEANIMFUNC_02
+    const BATTLEANIMFUNC_03
+    const BATTLEANIMFUNC_04
+    const BATTLEANIMFUNC_05
+    const BATTLEANIMFUNC_06
+    const BATTLEANIMFUNC_07
+    const BATTLEANIMFUNC_08
+    const BATTLEANIMFUNC_09
+    const BATTLEANIMFUNC_0A
+    const BATTLEANIMFUNC_0B
+    const BATTLEANIMFUNC_0C
+    const BATTLEANIMFUNC_0D
+    const BATTLEANIMFUNC_0E
+    const BATTLEANIMFUNC_0F
+    const BATTLEANIMFUNC_10
+    const BATTLEANIMFUNC_11
+    const BATTLEANIMFUNC_12
+    const BATTLEANIMFUNC_13
+    const BATTLEANIMFUNC_14
+    const BATTLEANIMFUNC_15
+    const BATTLEANIMFUNC_16
+    const BATTLEANIMFUNC_17
+    const BATTLEANIMFUNC_18
+    const BATTLEANIMFUNC_19
+    const BATTLEANIMFUNC_1A
+    const BATTLEANIMFUNC_1B
+    const BATTLEANIMFUNC_1C
+    const BATTLEANIMFUNC_1D
+    const BATTLEANIMFUNC_1E
+    const BATTLEANIMFUNC_1F
+    const BATTLEANIMFUNC_20
+    const BATTLEANIMFUNC_21
+    const BATTLEANIMFUNC_22
+    const BATTLEANIMFUNC_23
+    const BATTLEANIMFUNC_24
+    const BATTLEANIMFUNC_25
+    const BATTLEANIMFUNC_26
+    const BATTLEANIMFUNC_27
+    const BATTLEANIMFUNC_28
+    const BATTLEANIMFUNC_29
+    const BATTLEANIMFUNC_2A
+    const BATTLEANIMFUNC_2B
+    const BATTLEANIMFUNC_2C
+    const BATTLEANIMFUNC_2D
+    const BATTLEANIMFUNC_2E
+    const BATTLEANIMFUNC_2F
+    const BATTLEANIMFUNC_30
+    const BATTLEANIMFUNC_31
+    const BATTLEANIMFUNC_32
+    const BATTLEANIMFUNC_33
+    const BATTLEANIMFUNC_34
+    const BATTLEANIMFUNC_35
+    const BATTLEANIMFUNC_36
+    const BATTLEANIMFUNC_37
+    const BATTLEANIMFUNC_38
+    const BATTLEANIMFUNC_39
+    const BATTLEANIMFUNC_3A
+    const BATTLEANIMFUNC_3B
+    const BATTLEANIMFUNC_3C
+    const BATTLEANIMFUNC_3D
+    const BATTLEANIMFUNC_3E
+    const BATTLEANIMFUNC_3F
+    const BATTLEANIMFUNC_40
+    const BATTLEANIMFUNC_41
+    const BATTLEANIMFUNC_42
+    const BATTLEANIMFUNC_43
+    const BATTLEANIMFUNC_44
+    const BATTLEANIMFUNC_45
+    const BATTLEANIMFUNC_46
+    const BATTLEANIMFUNC_47
+    const BATTLEANIMFUNC_48
+    const BATTLEANIMFUNC_49
+    const BATTLEANIMFUNC_4A
+    const BATTLEANIMFUNC_4B
+    const BATTLEANIMFUNC_4C
+    const BATTLEANIMFUNC_4D
+    const BATTLEANIMFUNC_4E
+    const BATTLEANIMFUNC_4F
 
-ANIM_BG_TACKLE EQU $24
+	const_def
+	const BATTLEANIMFRAMESET_00
+    const BATTLEANIMFRAMESET_01
+    const BATTLEANIMFRAMESET_02
+    const BATTLEANIMFRAMESET_03
+    const BATTLEANIMFRAMESET_04
+    const BATTLEANIMFRAMESET_05
+    const BATTLEANIMFRAMESET_06
+    const BATTLEANIMFRAMESET_07
+    const BATTLEANIMFRAMESET_08
+    const BATTLEANIMFRAMESET_09
+    const BATTLEANIMFRAMESET_0A
+    const BATTLEANIMFRAMESET_0B
+    const BATTLEANIMFRAMESET_0C
+    const BATTLEANIMFRAMESET_0D
+    const BATTLEANIMFRAMESET_0E
+    const BATTLEANIMFRAMESET_0F
+    const BATTLEANIMFRAMESET_10
+    const BATTLEANIMFRAMESET_11
+    const BATTLEANIMFRAMESET_12
+    const BATTLEANIMFRAMESET_13
+    const BATTLEANIMFRAMESET_14
+    const BATTLEANIMFRAMESET_15
+    const BATTLEANIMFRAMESET_16
+    const BATTLEANIMFRAMESET_17
+    const BATTLEANIMFRAMESET_18
+    const BATTLEANIMFRAMESET_19
+    const BATTLEANIMFRAMESET_1A
+    const BATTLEANIMFRAMESET_1B
+    const BATTLEANIMFRAMESET_1C
+    const BATTLEANIMFRAMESET_1D
+    const BATTLEANIMFRAMESET_1E
+    const BATTLEANIMFRAMESET_1F
+    const BATTLEANIMFRAMESET_20
+    const BATTLEANIMFRAMESET_21
+    const BATTLEANIMFRAMESET_22
+    const BATTLEANIMFRAMESET_23
+    const BATTLEANIMFRAMESET_24
+    const BATTLEANIMFRAMESET_25
+    const BATTLEANIMFRAMESET_26
+    const BATTLEANIMFRAMESET_27
+    const BATTLEANIMFRAMESET_28
+    const BATTLEANIMFRAMESET_29
+    const BATTLEANIMFRAMESET_2A
+    const BATTLEANIMFRAMESET_2B
+    const BATTLEANIMFRAMESET_2C
+    const BATTLEANIMFRAMESET_2D
+    const BATTLEANIMFRAMESET_2E
+    const BATTLEANIMFRAMESET_2F
+    const BATTLEANIMFRAMESET_30
+    const BATTLEANIMFRAMESET_31
+    const BATTLEANIMFRAMESET_32
+    const BATTLEANIMFRAMESET_33
+    const BATTLEANIMFRAMESET_34
+    const BATTLEANIMFRAMESET_35
+    const BATTLEANIMFRAMESET_36
+    const BATTLEANIMFRAMESET_37
+    const BATTLEANIMFRAMESET_38
+    const BATTLEANIMFRAMESET_39
+    const BATTLEANIMFRAMESET_3A
+    const BATTLEANIMFRAMESET_3B
+    const BATTLEANIMFRAMESET_3C
+    const BATTLEANIMFRAMESET_3D
+    const BATTLEANIMFRAMESET_3E
+    const BATTLEANIMFRAMESET_3F
+    const BATTLEANIMFRAMESET_40
+    const BATTLEANIMFRAMESET_41
+    const BATTLEANIMFRAMESET_42
+    const BATTLEANIMFRAMESET_43
+    const BATTLEANIMFRAMESET_44
+    const BATTLEANIMFRAMESET_45
+    const BATTLEANIMFRAMESET_46
+    const BATTLEANIMFRAMESET_47
+    const BATTLEANIMFRAMESET_48
+    const BATTLEANIMFRAMESET_49
+    const BATTLEANIMFRAMESET_4A
+    const BATTLEANIMFRAMESET_4B
+    const BATTLEANIMFRAMESET_4C
+    const BATTLEANIMFRAMESET_4D
+    const BATTLEANIMFRAMESET_4E
+    const BATTLEANIMFRAMESET_4F
+    const BATTLEANIMFRAMESET_50
+    const BATTLEANIMFRAMESET_51
+    const BATTLEANIMFRAMESET_52
+    const BATTLEANIMFRAMESET_53
+    const BATTLEANIMFRAMESET_54
+    const BATTLEANIMFRAMESET_55
+    const BATTLEANIMFRAMESET_56
+    const BATTLEANIMFRAMESET_57
+    const BATTLEANIMFRAMESET_58
+    const BATTLEANIMFRAMESET_59
+    const BATTLEANIMFRAMESET_5A
+    const BATTLEANIMFRAMESET_5B
+    const BATTLEANIMFRAMESET_5C
+    const BATTLEANIMFRAMESET_5D
+    const BATTLEANIMFRAMESET_5E
+    const BATTLEANIMFRAMESET_5F
+    const BATTLEANIMFRAMESET_60
+    const BATTLEANIMFRAMESET_61
+    const BATTLEANIMFRAMESET_62
+    const BATTLEANIMFRAMESET_63
+    const BATTLEANIMFRAMESET_64
+    const BATTLEANIMFRAMESET_65
+    const BATTLEANIMFRAMESET_66
+    const BATTLEANIMFRAMESET_67
+    const BATTLEANIMFRAMESET_68
+    const BATTLEANIMFRAMESET_69
+    const BATTLEANIMFRAMESET_6A
+    const BATTLEANIMFRAMESET_6B
+    const BATTLEANIMFRAMESET_6C
+    const BATTLEANIMFRAMESET_6D
+    const BATTLEANIMFRAMESET_6E
+    const BATTLEANIMFRAMESET_6F
+    const BATTLEANIMFRAMESET_70
+    const BATTLEANIMFRAMESET_71
+    const BATTLEANIMFRAMESET_72
+    const BATTLEANIMFRAMESET_73
+    const BATTLEANIMFRAMESET_74
+    const BATTLEANIMFRAMESET_75
+    const BATTLEANIMFRAMESET_76
+    const BATTLEANIMFRAMESET_77
+    const BATTLEANIMFRAMESET_78
+    const BATTLEANIMFRAMESET_79
+    const BATTLEANIMFRAMESET_7A
+    const BATTLEANIMFRAMESET_7B
+    const BATTLEANIMFRAMESET_7C
+    const BATTLEANIMFRAMESET_7D
+    const BATTLEANIMFRAMESET_7E
+    const BATTLEANIMFRAMESET_7F
+    const BATTLEANIMFRAMESET_80
+    const BATTLEANIMFRAMESET_81
+    const BATTLEANIMFRAMESET_82
+    const BATTLEANIMFRAMESET_83
+    const BATTLEANIMFRAMESET_84
+    const BATTLEANIMFRAMESET_85
+    const BATTLEANIMFRAMESET_86
+    const BATTLEANIMFRAMESET_87
+    const BATTLEANIMFRAMESET_88
+    const BATTLEANIMFRAMESET_89
+    const BATTLEANIMFRAMESET_8A
+    const BATTLEANIMFRAMESET_8B
+    const BATTLEANIMFRAMESET_8C
+    const BATTLEANIMFRAMESET_8D
+    const BATTLEANIMFRAMESET_8E
+    const BATTLEANIMFRAMESET_8F
+    const BATTLEANIMFRAMESET_90
+    const BATTLEANIMFRAMESET_91
+    const BATTLEANIMFRAMESET_92
+    const BATTLEANIMFRAMESET_93
+    const BATTLEANIMFRAMESET_94
+    const BATTLEANIMFRAMESET_95
+    const BATTLEANIMFRAMESET_96
+    const BATTLEANIMFRAMESET_97
+    const BATTLEANIMFRAMESET_98
+    const BATTLEANIMFRAMESET_99
+    const BATTLEANIMFRAMESET_9A
+    const BATTLEANIMFRAMESET_9B
+    const BATTLEANIMFRAMESET_9C
+    const BATTLEANIMFRAMESET_9D
+    const BATTLEANIMFRAMESET_9E
+    const BATTLEANIMFRAMESET_9F
+    const BATTLEANIMFRAMESET_A0
+    const BATTLEANIMFRAMESET_A1
+    const BATTLEANIMFRAMESET_A2
+    const BATTLEANIMFRAMESET_A3
+    const BATTLEANIMFRAMESET_A4
+    const BATTLEANIMFRAMESET_A5
+    const BATTLEANIMFRAMESET_A6
+    const BATTLEANIMFRAMESET_A7
+    const BATTLEANIMFRAMESET_A8
+    const BATTLEANIMFRAMESET_A9
+    const BATTLEANIMFRAMESET_AA
+    const BATTLEANIMFRAMESET_AB
+    const BATTLEANIMFRAMESET_AC
+    const BATTLEANIMFRAMESET_AD
+    const BATTLEANIMFRAMESET_AE
+    const BATTLEANIMFRAMESET_AF
+    const BATTLEANIMFRAMESET_B0
+    const BATTLEANIMFRAMESET_B1
+    const BATTLEANIMFRAMESET_B2
+    const BATTLEANIMFRAMESET_B3
+    const BATTLEANIMFRAMESET_B4
+    const BATTLEANIMFRAMESET_B5
+    const BATTLEANIMFRAMESET_B6
+    const BATTLEANIMFRAMESET_B7
+    const BATTLEANIMFRAMESET_B8
 
-ANIM_BG_PSYCHIC EQU $29
+	const_def
+	const BATTLEANIMOAMSET_00
+	const BATTLEANIMOAMSET_01
+	const BATTLEANIMOAMSET_02
+	const BATTLEANIMOAMSET_03
+	const BATTLEANIMOAMSET_04
+	const BATTLEANIMOAMSET_05
+	const BATTLEANIMOAMSET_06
+	const BATTLEANIMOAMSET_07
+	const BATTLEANIMOAMSET_08
+	const BATTLEANIMOAMSET_09
+	const BATTLEANIMOAMSET_0A
+	const BATTLEANIMOAMSET_0B
+	const BATTLEANIMOAMSET_0C
+	const BATTLEANIMOAMSET_0D
+	const BATTLEANIMOAMSET_0E
+	const BATTLEANIMOAMSET_0F
+	const BATTLEANIMOAMSET_10
+	const BATTLEANIMOAMSET_11
+	const BATTLEANIMOAMSET_12
+	const BATTLEANIMOAMSET_13
+	const BATTLEANIMOAMSET_14
+	const BATTLEANIMOAMSET_15
+	const BATTLEANIMOAMSET_16
+	const BATTLEANIMOAMSET_17
+	const BATTLEANIMOAMSET_18
+	const BATTLEANIMOAMSET_19
+	const BATTLEANIMOAMSET_1A
+	const BATTLEANIMOAMSET_1B
+	const BATTLEANIMOAMSET_1C
+	const BATTLEANIMOAMSET_1D
+	const BATTLEANIMOAMSET_1E
+	const BATTLEANIMOAMSET_1F
+	const BATTLEANIMOAMSET_20
+	const BATTLEANIMOAMSET_21
+	const BATTLEANIMOAMSET_22
+	const BATTLEANIMOAMSET_23
+	const BATTLEANIMOAMSET_24
+	const BATTLEANIMOAMSET_25
+	const BATTLEANIMOAMSET_26
+	const BATTLEANIMOAMSET_27
+	const BATTLEANIMOAMSET_28
+	const BATTLEANIMOAMSET_29
+	const BATTLEANIMOAMSET_2A
+	const BATTLEANIMOAMSET_2B
+	const BATTLEANIMOAMSET_2C
+	const BATTLEANIMOAMSET_2D
+	const BATTLEANIMOAMSET_2E
+	const BATTLEANIMOAMSET_2F
+	const BATTLEANIMOAMSET_30
+	const BATTLEANIMOAMSET_31
+	const BATTLEANIMOAMSET_32
+	const BATTLEANIMOAMSET_33
+	const BATTLEANIMOAMSET_34
+	const BATTLEANIMOAMSET_35
+	const BATTLEANIMOAMSET_36
+	const BATTLEANIMOAMSET_37
+	const BATTLEANIMOAMSET_38
+	const BATTLEANIMOAMSET_39
+	const BATTLEANIMOAMSET_3A
+	const BATTLEANIMOAMSET_3B
+	const BATTLEANIMOAMSET_3C
+	const BATTLEANIMOAMSET_3D
+	const BATTLEANIMOAMSET_3E
+	const BATTLEANIMOAMSET_3F
+	const BATTLEANIMOAMSET_40
+	const BATTLEANIMOAMSET_41
+	const BATTLEANIMOAMSET_42
+	const BATTLEANIMOAMSET_43
+	const BATTLEANIMOAMSET_44
+	const BATTLEANIMOAMSET_45
+	const BATTLEANIMOAMSET_46
+	const BATTLEANIMOAMSET_47
+	const BATTLEANIMOAMSET_48
+	const BATTLEANIMOAMSET_49
+	const BATTLEANIMOAMSET_4A
+	const BATTLEANIMOAMSET_4B
+	const BATTLEANIMOAMSET_4C
+	const BATTLEANIMOAMSET_4D
+	const BATTLEANIMOAMSET_4E
+	const BATTLEANIMOAMSET_4F
+	const BATTLEANIMOAMSET_50
+	const BATTLEANIMOAMSET_51
+	const BATTLEANIMOAMSET_52
+	const BATTLEANIMOAMSET_53
+	const BATTLEANIMOAMSET_54
+	const BATTLEANIMOAMSET_55
+	const BATTLEANIMOAMSET_56
+	const BATTLEANIMOAMSET_57
+	const BATTLEANIMOAMSET_58
+	const BATTLEANIMOAMSET_59
+	const BATTLEANIMOAMSET_5A
+	const BATTLEANIMOAMSET_5B
+	const BATTLEANIMOAMSET_5C
+	const BATTLEANIMOAMSET_5D
+	const BATTLEANIMOAMSET_5E
+	const BATTLEANIMOAMSET_5F
+	const BATTLEANIMOAMSET_60
+	const BATTLEANIMOAMSET_61
+	const BATTLEANIMOAMSET_62
+	const BATTLEANIMOAMSET_63
+	const BATTLEANIMOAMSET_64
+	const BATTLEANIMOAMSET_65
+	const BATTLEANIMOAMSET_66
+	const BATTLEANIMOAMSET_67
+	const BATTLEANIMOAMSET_68
+	const BATTLEANIMOAMSET_69
+	const BATTLEANIMOAMSET_6A
+	const BATTLEANIMOAMSET_6B
+	const BATTLEANIMOAMSET_6C
+	const BATTLEANIMOAMSET_6D
+	const BATTLEANIMOAMSET_6E
+	const BATTLEANIMOAMSET_6F
+	const BATTLEANIMOAMSET_70
+	const BATTLEANIMOAMSET_71
+	const BATTLEANIMOAMSET_72
+	const BATTLEANIMOAMSET_73
+	const BATTLEANIMOAMSET_74
+	const BATTLEANIMOAMSET_75
+	const BATTLEANIMOAMSET_76
+	const BATTLEANIMOAMSET_77
+	const BATTLEANIMOAMSET_78
+	const BATTLEANIMOAMSET_79
+	const BATTLEANIMOAMSET_7A
+	const BATTLEANIMOAMSET_7B
+	const BATTLEANIMOAMSET_7C
+	const BATTLEANIMOAMSET_7D
+	const BATTLEANIMOAMSET_7E
+	const BATTLEANIMOAMSET_7F
+	const BATTLEANIMOAMSET_80
+	const BATTLEANIMOAMSET_81
+	const BATTLEANIMOAMSET_82
+	const BATTLEANIMOAMSET_83
+	const BATTLEANIMOAMSET_84
+	const BATTLEANIMOAMSET_85
+	const BATTLEANIMOAMSET_86
+	const BATTLEANIMOAMSET_87
+	const BATTLEANIMOAMSET_88
+	const BATTLEANIMOAMSET_89
+	const BATTLEANIMOAMSET_8A
+	const BATTLEANIMOAMSET_8B
+	const BATTLEANIMOAMSET_8C
+	const BATTLEANIMOAMSET_8D
+	const BATTLEANIMOAMSET_8E
+	const BATTLEANIMOAMSET_8F
+	const BATTLEANIMOAMSET_90
+	const BATTLEANIMOAMSET_91
+	const BATTLEANIMOAMSET_92
+	const BATTLEANIMOAMSET_93
+	const BATTLEANIMOAMSET_94
+	const BATTLEANIMOAMSET_95
+	const BATTLEANIMOAMSET_96
+	const BATTLEANIMOAMSET_97
+	const BATTLEANIMOAMSET_98
+	const BATTLEANIMOAMSET_99
+	const BATTLEANIMOAMSET_9A
+	const BATTLEANIMOAMSET_9B
+	const BATTLEANIMOAMSET_9C
+	const BATTLEANIMOAMSET_9D
+	const BATTLEANIMOAMSET_9E
+	const BATTLEANIMOAMSET_9F
+	const BATTLEANIMOAMSET_A0
+	const BATTLEANIMOAMSET_A1
+	const BATTLEANIMOAMSET_A2
+	const BATTLEANIMOAMSET_A3
+	const BATTLEANIMOAMSET_A4
+	const BATTLEANIMOAMSET_A5
+	const BATTLEANIMOAMSET_A6
+	const BATTLEANIMOAMSET_A7
+	const BATTLEANIMOAMSET_A8
+	const BATTLEANIMOAMSET_A9
+	const BATTLEANIMOAMSET_AA
+	const BATTLEANIMOAMSET_AB
+	const BATTLEANIMOAMSET_AC
+	const BATTLEANIMOAMSET_AD
+	const BATTLEANIMOAMSET_AE
+	const BATTLEANIMOAMSET_AF
+	const BATTLEANIMOAMSET_B0
+	const BATTLEANIMOAMSET_B1
+	const BATTLEANIMOAMSET_B2
+	const BATTLEANIMOAMSET_B3
+	const BATTLEANIMOAMSET_B4
+	const BATTLEANIMOAMSET_B5
+	const BATTLEANIMOAMSET_B6
+	const BATTLEANIMOAMSET_B7
+	const BATTLEANIMOAMSET_B8
+	const BATTLEANIMOAMSET_B9
+	const BATTLEANIMOAMSET_BA
+	const BATTLEANIMOAMSET_BB
+	const BATTLEANIMOAMSET_BC
+	const BATTLEANIMOAMSET_BD
+	const BATTLEANIMOAMSET_BE
+	const BATTLEANIMOAMSET_BF
+	const BATTLEANIMOAMSET_C0
+	const BATTLEANIMOAMSET_C1
+	const BATTLEANIMOAMSET_C2
+	const BATTLEANIMOAMSET_C3
+	const BATTLEANIMOAMSET_C4
+	const BATTLEANIMOAMSET_C5
+	const BATTLEANIMOAMSET_C6
+	const BATTLEANIMOAMSET_C7
+	const BATTLEANIMOAMSET_C8
+	const BATTLEANIMOAMSET_C9
+	const BATTLEANIMOAMSET_CA
+	const BATTLEANIMOAMSET_CB
+	const BATTLEANIMOAMSET_CC
+	const BATTLEANIMOAMSET_CD
+	const BATTLEANIMOAMSET_CE
+	const BATTLEANIMOAMSET_CF
+	const BATTLEANIMOAMSET_D0
+	const BATTLEANIMOAMSET_D1
+	const BATTLEANIMOAMSET_D2
+	const BATTLEANIMOAMSET_D3
+	const BATTLEANIMOAMSET_D4
+	const BATTLEANIMOAMSET_D5
+	const BATTLEANIMOAMSET_D6
+	const BATTLEANIMOAMSET_D7
 
-ANIM_BG_VIBRATE_MON EQU $33
-ANIM_BG_WOBBLE_MON EQU $34
+const_value SET 1
+	const ANIM_BG_FLASH_INVERTED
+	const ANIM_BG_FLASH_WHITE
+	const ANIM_BG_WHITE_HUES
+	const ANIM_BG_BLACK_HUES
+	const ANIM_BG_ALTERNATE_HUES
+	const ANIM_BG_06
+	const ANIM_BG_07
+	const ANIM_BG_08
+	const ANIM_BG_HIDE_MON
+	const ANIM_BG_SHOW_MON
+	const ANIM_BG_ENTER_MON
+	const ANIM_BG_RETURN_MON
+	const ANIM_BG_SURF
+	const ANIM_BG_WHIRLPOOL
+	const ANIM_BG_TELEPORT
+	const ANIM_BG_NIGHT_SHADE
+	const ANIM_BG_FEET_FOLLOW
+	const ANIM_BG_HEAD_FOLLOW
+	const ANIM_BG_DOUBLE_TEAM
+	const ANIM_BG_ACID_ARMOR
+	const ANIM_BG_RAPID_FLASH
+	const ANIM_BG_16
+	const ANIM_BG_17
+	const ANIM_BG_18
+	const ANIM_BG_19
+	const ANIM_BG_1A
+	const ANIM_BG_1B
+	const ANIM_BG_1C
+	const ANIM_BG_1D
+	const ANIM_BG_1E
+	const ANIM_BG_1F
+	const ANIM_BG_20
+	const ANIM_BG_21
+	const ANIM_BG_BOUNCE_DOWN
+	const ANIM_BG_DIG
+	const ANIM_BG_TACKLE
+	const ANIM_BG_25
+	const ANIM_BG_26
+	const ANIM_BG_27
+	const ANIM_BG_28
+	const ANIM_BG_PSYCHIC
+	const ANIM_BG_2A
+	const ANIM_BG_2B
+	const ANIM_BG_2C
+	const ANIM_BG_2D
+	const ANIM_BG_2E
+	const ANIM_BG_2F
+	const ANIM_BG_30
+	const ANIM_BG_31
+	const ANIM_BG_32
+	const ANIM_BG_VIBRATE_MON
+	const ANIM_BG_WOBBLE_MON
+	const ANIM_BG_35
 
 	const_def
 	const ANIM_MON_SLOW    ; 0
@@ -48,3 +767,9 @@
 	const ANIM_MON_UNUSED  ; 6
 	const ANIM_MON_EGG1    ; 7
 	const ANIM_MON_EGG2    ; 8
+
+	const_def
+	const BG_EFFECT_STRUCT_FUNCTION
+	const BG_EFFECT_STRUCT_JT_INDEX
+	const BG_EFFECT_STRUCT_BATTLE_TURN
+	const BG_EFFECT_STRUCT_03
--- /dev/null
+++ b/constants/audio_constants.asm
@@ -1,0 +1,62 @@
+
+
+; pitch
+	const_def
+	const __
+	const C_
+	const C#
+	const D_
+	const D#
+	const E_
+	const F_
+	const F#
+	const G_
+	const G#
+	const A_
+	const A#
+	const B_
+
+; channel
+	const_def
+	const CHAN1
+	const CHAN2
+	const CHAN3
+	const CHAN4
+NUM_MUSIC_CHANS EQU const_value
+NUM_NOISE_CHANS EQU const_value
+	const CHAN5
+	const CHAN6
+	const CHAN7
+	const CHAN8
+NUM_CHANNELS EQU const_value
+
+; Flags1
+SOUND_CHANNEL_ON EQU 0
+SOUND_SUBROUTINE EQU 1
+SOUND_LOOPING EQU 2
+SOUND_SFX EQU 3
+SOUND_NOISE EQU 4
+SOUND_REST EQU 5
+
+; Flags2
+
+SOUND_VIBRATO EQU 0
+SOUND_UNKN_09 EQU 1
+SOUND_DUTY EQU 2
+SOUND_UNKN_0B EQU 3
+SOUND_CRY_PITCH EQU 4
+SOUND_UNKN_0D EQU 5
+SOUND_UNKN_0E EQU 6
+SOUND_UNKN_0F EQU 7
+
+; Flags3
+SOUND_VIBRATO_DIR EQU 0
+SOUND_UNKN_11 EQU 1
+
+; NoteFlags
+NOTE_UNKN_0 EQU 0
+NOTE_UNKN_1 EQU 1
+NOTE_UNKN_3 EQU 3
+NOTE_UNKN_4 EQU 4
+NOTE_REST EQU 5
+NOTE_UNKN_6 EQU 6
--- a/constants/battle_tower_constants.asm
+++ b/constants/battle_tower_constants.asm
@@ -1,33 +1,39 @@
 	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
+	const BATTLETOWERACTION_00
+	const BATTLETOWERACTION_01
+	const BATTLETOWERACTION_02
+	const BATTLETOWERACTION_SAVE_AND_QUIT
+	const BATTLETOWERACTION_CHALLENGECANCELED
+	const BATTLETOWERACTION_05
+	const BATTLETOWERACTION_06 ; reset stuff in SRAM bank 5
+	const BATTLETOWERACTION_SAVELEVELGROUP
+	const BATTLETOWERACTION_LOADLEVELGROUP
+	const BATTLETOWERACTION_CHECKSAVEFILEISYOURS
+	const BATTLETOWERACTION_0A
+	const BATTLETOWERACTION_CHECKMOBILEEVENT
+	const BATTLETOWERACTION_0C ; more time stuff in SRAM bank 5
+	const BATTLETOWERACTION_0D ; more time stuff in SRAM bank 5
+	const BATTLETOWERACTION_EGGTICKET ; egg ticket
+	const BATTLETOWERACTION_0F ; check w3_d090
+	const BATTLETOWERACTION_10 ; dw based on 5:a800
+	const BATTLETOWERACTION_11 ; store 0 in 5:aa8d
+	const BATTLETOWERACTION_12 ; store 1 in 5:aa8d
+	const BATTLETOWERACTION_13 ; check 5:aa8d
+	const BATTLETOWERACTION_14 ; if save file is yours: bit 0, [sbe4f]
+	const BATTLETOWERACTION_15 ; set 0, [sbe4f]
+	const BATTLETOWERACTION_16 ; update time in SRAM bank 5
+	const BATTLETOWERACTION_17 ; check time in SRAM bank 5
+	const BATTLETOWERACTION_18 ; level check
+	const BATTLETOWERACTION_19 ; ubers check
+	const BATTLETOWERACTION_RESETDATA ; clear data
+	const BATTLETOWERACTION_GIVEREWARD ; give reward
+	const BATTLETOWERACTION_1C ; set won challenge
+	const BATTLETOWERACTION_1D ; set received reward
+	const BATTLETOWERACTION_CHOOSEREWARD ; save options
+	const BATTLETOWERACTION_SAVEOPTIONS
+
+BATTLETOWER_NO_CHALLENGE         EQU 0
+BATTLETOWER_SAVED_AND_LEFT       EQU 1
+BATTLETOWER_CHALLENGE_IN_PROGESS EQU 2
+BATTLETOWER_WON_CHALLENGE        EQU 3
+BATTLETOWER_RECEIVED_REWARD      EQU 4
--- a/constants/cgb_constants.asm
+++ b/constants/cgb_constants.asm
@@ -1,14 +1,14 @@
 	const_def
-	const SCGB_00
-	const SCGB_01
-	const SCGB_02
-	const SCGB_03
+	const SCGB_BATTLE_GRAYSCALE
+	const SCGB_BATTLE_COLORS
+	const SCGB_POKEGEAR_PALS
+	const SCGB_STATS_SCREEN_HP_PALS
 	const SCGB_04
-	const SCGB_05
+	const SCGB_SLOT_MACHINE
 	const SCGB_06
 	const SCGB_07
 	const SCGB_08
-	const SCGB_09
+	const SCGB_MAPPALS
 	const SCGB_0A
 	const SCGB_0B
 	const SCGB_0C
@@ -19,8 +19,8 @@
 	const SCGB_11
 	const SCGB_12
 	const SCGB_13
-	const SCGB_14
-	const SCGB_15
+	const SCGB_PACKPALS
+	const SCGB_TRAINER_CARD
 	const SCGB_16
 	const SCGB_17
 	const SCGB_18
@@ -27,9 +27,9 @@
 	const SCGB_19
 	const SCGB_1A
 	const SCGB_1B
-	const SCGB_1C
+	const SCGB_FRONTPICPALS
 	const SCGB_1D
 	const SCGB_1E
 
-SCGB_FC  EQU -4
+SCGB_PARTY_MENU_HP_PALS  EQU -4
 SCGB_RAM EQU -1
--- /dev/null
+++ b/constants/cry_constants.asm
@@ -1,0 +1,73 @@
+	const_def
+
+; gen 1
+	const CRY_NIDORAN_M
+	const CRY_NIDORAN_F
+	const CRY_SLOWPOKE
+	const CRY_KANGASKHAN
+	const CRY_CHARMANDER
+	const CRY_GRIMER
+	const CRY_VOLTORB
+	const CRY_MUK
+	const CRY_ODDISH
+	const CRY_RAICHU
+	const CRY_NIDOQUEEN
+	const CRY_DIGLETT
+	const CRY_SEEL
+	const CRY_DROWZEE
+	const CRY_PIDGEY
+	const CRY_BULBASAUR
+	const CRY_SPEAROW
+	const CRY_RHYDON
+	const CRY_GOLEM
+	const CRY_BLASTOISE
+	const CRY_PIDGEOTTO
+	const CRY_WEEDLE
+	const CRY_CATERPIE
+	const CRY_EKANS
+	const CRY_FEAROW
+	const CRY_CLEFAIRY
+	const CRY_VENONAT
+	const CRY_LAPRAS
+	const CRY_METAPOD
+	const CRY_SQUIRTLE
+	const CRY_PARAS
+	const CRY_GROWLITHE
+	const CRY_KRABBY
+	const CRY_PSYDUCK
+	const CRY_RATTATA
+	const CRY_VILEPLUME
+	const CRY_VULPIX
+	const CRY_WEEPINBELL
+
+; gen 2
+	const CRY_MARILL
+	const CRY_SPINARAK
+	const CRY_TOGEPI
+	const CRY_GIRAFARIG
+	const CRY_RAIKOU
+	const CRY_MAREEP
+	const CRY_TOGETIC
+	const CRY_HOOTHOOT
+	const CRY_SENTRET
+	const CRY_SLOWKING
+	const CRY_CYNDAQUIL
+	const CRY_CHIKORITA
+	const CRY_TOTODILE
+	const CRY_GLIGAR
+	const CRY_CLEFFA
+	const CRY_SLUGMA
+	const CRY_LEDYBA
+	const CRY_ENTEI
+	const CRY_WOOPER
+	const CRY_MANTINE
+	const CRY_TYPHLOSION
+	const CRY_NATU
+	const CRY_TEDDIURSA
+	const CRY_SUNFLORA
+	const CRY_AMPHAROS
+	const CRY_MAGCARGO
+	const CRY_PICHU
+	const CRY_AIPOM
+	const CRY_DUNSPARCE
+	const CRY_DONPHAN
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -51,59 +51,71 @@
 	const SET_UP_ORNAMENT
 	const PUT_AWAY_ORNAMENT
 
+deco: MACRO
+	const DECO_\1
+	enum DECOFLAG_\1
+endm
+
 const_value = 1
-	const DECO_BEDS
-	const DECO_FEATHERY_BED ; 2
-	const DECO_PINK_BED ; 3
-	const DECO_POLKADOT_BED ; 4
-	const DECO_PIKACHU_BED ; 5
-	const DECO_CARPETS
-	const DECO_RED_CARPET ; 7
-	const DECO_BLUE_CARPET ; 8
-	const DECO_YELLOW_CARPET ; 9
-	const DECO_GREEN_CARPET ; a
-	const DECO_0B
-	const DECO_MAGNAPLANT ; c
-	const DECO_TROPICPLANT ; d
-	const DECO_JUMBOPLANT ; e
-	const DECO_POSTERS
-	const DECO_TOWN_MAP ; 10
-	const DECO_PIKACHU_POSTER ; 11
-	const DECO_CLEFAIRY_POSTER ; 12
-	const DECO_JIGGLYPUFF_POSTER ; 13
-	const DECO_CONSOLES
-	const DECO_FAMICOM ; 15
-	const DECO_SNES ; 16
-	const DECO_N64 ; 17
-	const DECO_VIRTUAL_BOY ; 18
-	const DECO_BIG_DOLLS
-	const DECO_BIG_SNORLAX_DOLL ; 1a
-	const DECO_BIG_ONIX_DOLL ; 1b
-	const DECO_BIG_LAPRAS_DOLL ; 1c
-	const DECO_DOLLS
-	const DECO_PIKACHU_DOLL ; 1e
-	const DECO_SURF_PIKACHU_DOLL ; 1f
-	const DECO_CLEFAIRY_DOLL ; 20
-	const DECO_JIGGLYPUFF_DOLL ; 21
-	const DECO_BULBASAUR_DOLL ; 22
-	const DECO_CHARMANDER_DOLL ; 23
-	const DECO_SQUIRTLE_DOLL ; 24
-	const DECO_POLIWAG_DOLL ; 25
-	const DECO_DIGLETT_DOLL ; 26
-	const DECO_STARMIE_DOLL ; 27
-	const DECO_MAGIKARP_DOLL ; 28
-	const DECO_ODDISH_DOLL ; 29
-	const DECO_GENGAR_DOLL ; 2a
-	const DECO_SHELLDER_DOLL ; 2b
-	const DECO_GRIMER_DOLL ; 2c
-	const DECO_VOLTORB_DOLL ; 2d
-	const DECO_WEEDLE_DOLL ; 2e
-	const DECO_UNOWN_DOLL ; 2f
-	const DECO_GEODUDE_DOLL ; 30
-	const DECO_MACHOP_DOLL ; 31
-	const DECO_TENTACOOL_DOLL ; 32
-	const DECO_GOLD_TROPHY_DOLL ; 33
-	const DECO_SILVER_TROPHY_DOLL ; 34
+__enum__ = 0
+	const BEDS
+	deco  FEATHERY_BED ; 2 (0)
+	deco  PINK_BED ; 3 (1)
+	deco  POLKADOT_BED ; 4 (2)
+	deco  PIKACHU_BED ; 5 (3)
+
+	const CARPETS
+	deco  RED_CARPET ; 7 (4)
+	deco  BLUE_CARPET ; 8 (5)
+	deco  YELLOW_CARPET ; 9 (6)
+	deco  GREEN_CARPET ; a (7)
+
+	const PLANTS
+	deco  MAGNAPLANT ; c (8)
+	deco  TROPICPLANT ; d (9)
+	deco  JUMBOPLANT ; e (a)
+
+	const POSTERS
+	deco  TOWN_MAP ; 10 (b)
+	deco  PIKACHU_POSTER ; 11 (c)
+	deco  CLEFAIRY_POSTER ; 12 (d)
+	deco  JIGGLYPUFF_POSTER ; 13(e)
+
+	const CONSOLES
+	deco  FAMICOM ; 15 (f)
+	deco  SNES ; 16 (10)
+	deco  N64 ; 17 (11)
+	deco  VIRTUAL_BOY ; 18 (12)
+
+	const BIG_DOLLS
+	deco  BIG_SNORLAX_DOLL ; 1a (13)
+	deco  BIG_ONIX_DOLL ; 1b (14)
+	deco  BIG_LAPRAS_DOLL ; 1c (15)
+
+	const DOLLS
+	deco  PIKACHU_DOLL ; 1e (16)
+	deco  SURF_PIKACHU_DOLL ; 1f (17)
+	deco  CLEFAIRY_DOLL ; 20 (18)
+	deco  JIGGLYPUFF_DOLL ; 21 (19)
+	deco  BULBASAUR_DOLL ; 22 (1a)
+	deco  CHARMANDER_DOLL ; 23 (1b)
+	deco  SQUIRTLE_DOLL ; 24 (1c)
+	deco  POLIWAG_DOLL ; 25 (1d)
+	deco  DIGLETT_DOLL ; 26 (1e)
+	deco  STARMIE_DOLL ; 27 (1f)
+	deco  MAGIKARP_DOLL ; 28 (20)
+	deco  ODDISH_DOLL ; 29 (21)
+	deco  GENGAR_DOLL ; 2a (22)
+	deco  SHELLDER_DOLL ; 2b (23)
+	deco  GRIMER_DOLL ; 2c (24)
+	deco  VOLTORB_DOLL ; 2d (25)
+	deco  WEEDLE_DOLL ; 2e (26)
+	deco  UNOWN_DOLL ; 2f (27)
+	deco  GEODUDE_DOLL ; 30 (28)
+	deco  MACHOP_DOLL ; 31 (29)
+	deco  TENTACOOL_DOLL ; 32 (2a)
+	deco  GOLD_TROPHY_DOLL ; 33 (2b)
+	deco  SILVER_TROPHY_DOLL ; 34 (2c)
 
 NUM_NON_TROPHY_DECOS EQU $2b
 NUM_DECOS EQU $2d
--- a/constants/engine_flags.asm
+++ b/constants/engine_flags.asm
@@ -5,7 +5,7 @@
 	const ENGINE_PHONE_CARD
 	const ENGINE_EXPN_CARD
 	const ENGINE_POKEGEAR
-	const ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
+	const ENGINE_DAYCARE_MAN_HAS_EGG
 	const ENGINE_DAYCARE_MAN_HAS_MON
 	const ENGINE_DAYCARE_LADY_HAS_MON
 	const ENGINE_MOM_SAVING_MONEY
@@ -18,7 +18,7 @@
 	const ENGINE_CREDITS_SKIP
 	const ENGINE_BUG_CONTEST_ON ; 10
 	const ENGINE_BUG_CONTEST_TIMER
-	const ENGINE_12
+	const ENGINE_SAFARI_ZONE
 	const ENGINE_ROCKETS_IN_RADIO_TOWER
 	const ENGINE_BIKE_SHOP_CALL_ENABLED
 	const ENGINE_GIVE_POKERUS
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -659,7 +659,7 @@
 
 	const_def
 	const PERSONTYPE_SCRIPT
-	const PERSONTYPE_ITEMFRAGMENT
+	const PERSONTYPE_ITEMBALL
 	const PERSONTYPE_TRAINER
 	const PERSONTYPE_3
 	const PERSONTYPE_4
--- a/constants/map_setup_constants.asm
+++ b/constants/map_setup_constants.asm
@@ -15,50 +15,50 @@
 ; Command descriptions from Condensation water's scripting compendium.	const_def
 	const_def
 
-	const map_lcd_on
-	const map_lcd_off
-	const map_sound_off
-	const map_music
-	const map_start_music
-	const map_fade_music
-	const map_fade
-	const map_bike_music
-	const map_music_force
-	const map_max_volume
-	const map_load_blocks
-	const map_connection_blocks
-	const map_save_screen
-	const map_buffer_screen
-	const map_load_graphics
-	const map_load_tileset_header
-	const map_time_of_day
-	const map_palettes
-	const map_wildmons
-	const map_sprites
-	const map_change_callback
-	const map_start_callback
-	const map_load_objects
-	const map_load_spawn
-	const map_load_connection
-	const map_load_warp
-	const map_attributes
-	const map_attributes_2
-	const map_clear_bg_palettes
-	const map_fade_out_palettes
-	const map_fade_in_palettes
-	const map_anchor_screen
-	const map_warp_face
-	const map_face_down
-	const map_spawn_coord
-	const map_player_coord
-	const map_prolong_sprites
-	const map_delay_sprites
-	const map_update_roam
-	const map_keep_roam
-	const map_fade_out_music
-	const map_animations_on
-	const map_animations_off
-	const map_keep_palettes
-	const map_text_scroll_off
-	const map_stop_script
-map_end_setup_script EQU -1
+	const map_lcd_on              ; 00
+	const map_lcd_off             ; 01
+	const map_sound_off           ; 02
+	const map_music               ; 03
+	const map_start_music         ; 04
+	const map_fade_music          ; 05
+	const map_fade                ; 06
+	const map_bike_music          ; 07
+	const map_music_force         ; 08
+	const map_max_volume          ; 09
+	const map_load_blocks         ; 0a
+	const map_connection_blocks   ; 0b
+	const map_save_screen         ; 0c
+	const map_buffer_screen       ; 0d
+	const map_load_graphics       ; 0e
+	const map_load_tileset_header ; 0f
+	const map_time_of_day         ; 10
+	const map_palettes            ; 11
+	const map_wildmons            ; 12
+	const map_sprites             ; 13
+	const map_change_callback     ; 14
+	const map_start_callback      ; 15
+	const map_load_objects        ; 16
+	const map_load_spawn          ; 17
+	const map_load_connection     ; 18
+	const map_load_warp           ; 19
+	const map_attributes          ; 1a
+	const map_attributes_2        ; 1b
+	const map_clear_bg_palettes   ; 1c
+	const map_fade_out_palettes   ; 1d
+	const map_fade_in_palettes    ; 1e
+	const map_anchor_screen       ; 1f
+	const map_warp_face           ; 20
+	const map_face_down           ; 21
+	const map_spawn_coord         ; 22
+	const map_player_coord        ; 23
+	const map_prolong_sprites     ; 24
+	const map_delay_sprites       ; 25
+	const map_update_roam         ; 26
+	const map_keep_roam           ; 27
+	const map_fade_out_music      ; 28
+	const map_animations_on       ; 29
+	const map_animations_off      ; 2a
+	const map_keep_palettes       ; 2b
+	const map_text_scroll_off     ; 2c
+	const map_stop_script         ; 2d
+map_end EQU -1
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -48,6 +48,9 @@
 SET_FLAG   EQU 1
 CHECK_FLAG EQU 2
 
+; Boolean checks
+FALSE EQU 0
+TRUE  EQU 1
 
 ; joypad
 
@@ -90,6 +93,8 @@
 
 BG_MAP_WIDTH  EQU 32
 BG_MAP_HEIGHT EQU 32
+WMISC_WIDTH   EQU 6 * 4
+WMISC_HEIGHT  EQU 5 * 4
 
 TILE_WIDTH EQU 8
 
@@ -206,89 +211,4 @@
 	const EARTHBADGE
 NUM_KANTO_BADGES EQU const_value
 NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES
-
-	const_def
-	const SPRITE_ANIM_SEQ_00
-	const SPRITE_ANIM_SEQ_01
-	const SPRITE_ANIM_SEQ_02
-	const SPRITE_ANIM_SEQ_03
-	const SPRITE_ANIM_SEQ_04
-	const SPRITE_ANIM_SEQ_05
-	const SPRITE_ANIM_SEQ_06
-	const SPRITE_ANIM_SEQ_07
-	const SPRITE_ANIM_SEQ_08
-	const SPRITE_ANIM_SEQ_09
-	const SPRITE_ANIM_SEQ_0A
-	const SPRITE_ANIM_SEQ_0B
-	const SPRITE_ANIM_SEQ_0C
-	const SPRITE_ANIM_SEQ_0D
-	const SPRITE_ANIM_SEQ_0E
-	const SPRITE_ANIM_SEQ_0F
-	const SPRITE_ANIM_SEQ_10
-	const SPRITE_ANIM_SEQ_11
-	const SPRITE_ANIM_SEQ_12
-	const SPRITE_ANIM_SEQ_13
-	const SPRITE_ANIM_SEQ_14
-	const SPRITE_ANIM_SEQ_15
-	const SPRITE_ANIM_SEQ_16
-	const SPRITE_ANIM_SEQ_17
-	const SPRITE_ANIM_SEQ_18
-	const SPRITE_ANIM_SEQ_19
-	const SPRITE_ANIM_SEQ_1A
-	const SPRITE_ANIM_SEQ_1B
-	const SPRITE_ANIM_SEQ_1C
-	const SPRITE_ANIM_SEQ_1D
-	const SPRITE_ANIM_SEQ_1E
-	const SPRITE_ANIM_SEQ_1F
-	const SPRITE_ANIM_SEQ_20
-	const SPRITE_ANIM_SEQ_21
-	const SPRITE_ANIM_SEQ_22
-
-	const_def
-	const SPRITE_ANIM_INDEX_00
-	const SPRITE_ANIM_INDEX_01
-	const SPRITE_ANIM_INDEX_02
-	const SPRITE_ANIM_INDEX_03
-	const SPRITE_ANIM_INDEX_04
-	const SPRITE_ANIM_INDEX_05
-	const SPRITE_ANIM_INDEX_06
-	const SPRITE_ANIM_INDEX_07
-	const SPRITE_ANIM_INDEX_08
-	const SPRITE_ANIM_INDEX_09
-	const SPRITE_ANIM_INDEX_0A
-	const SPRITE_ANIM_INDEX_0B
-	const SPRITE_ANIM_INDEX_0C
-	const SPRITE_ANIM_INDEX_0D
-	const SPRITE_ANIM_INDEX_0E
-	const SPRITE_ANIM_INDEX_0F
-	const SPRITE_ANIM_INDEX_10
-	const SPRITE_ANIM_INDEX_11
-	const SPRITE_ANIM_INDEX_12
-	const SPRITE_ANIM_INDEX_13
-	const SPRITE_ANIM_INDEX_14
-	const SPRITE_ANIM_INDEX_15
-	const SPRITE_ANIM_INDEX_16
-	const SPRITE_ANIM_INDEX_17
-	const SPRITE_ANIM_INDEX_18
-	const SPRITE_ANIM_INDEX_19
-	const SPRITE_ANIM_INDEX_1A
-	const SPRITE_ANIM_INDEX_1B
-	const SPRITE_ANIM_INDEX_1C
-	const SPRITE_ANIM_INDEX_1D
-	const SPRITE_ANIM_INDEX_1E
-	const SPRITE_ANIM_INDEX_1F
-	const SPRITE_ANIM_INDEX_20
-	const SPRITE_ANIM_INDEX_21
-	const SPRITE_ANIM_INDEX_22
-	const SPRITE_ANIM_INDEX_23
-	const SPRITE_ANIM_INDEX_24
-	const SPRITE_ANIM_INDEX_25
-	const SPRITE_ANIM_INDEX_26
-	const SPRITE_ANIM_INDEX_27
-	const SPRITE_ANIM_INDEX_28
-	const SPRITE_ANIM_INDEX_29
-	const SPRITE_ANIM_INDEX_2A
-	const SPRITE_ANIM_INDEX_2B
-	const SPRITE_ANIM_INDEX_2C
-
 NUM_KANA EQU $2d
--- a/constants/move_constants.asm
+++ b/constants/move_constants.asm
@@ -287,7 +287,7 @@
 	const ANIM_SHAKE             ; $114
 	const ANIM_HIT_CONFUSION     ; $115
 
-; wcfca uses offsets from ANIM_MISS
+; wNumHits uses offsets from ANIM_MISS
 	const_def
 	const BATTLEANIM_NONE
 	const BATTLEANIM_ENEMY_DAMAGE
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -291,6 +291,7 @@
 MON_SDF                  EQUS "(PartyMon1SpclDef - PartyMon1)"
 BOXMON_STRUCT_LENGTH     EQUS "(PartyMon1End - PartyMon1)"
 PARTYMON_STRUCT_LENGTH   EQUS "(PartyMon1StatsEnd - PartyMon1)"
+REDMON_STRUCT_LENGTH EQU 44
 
 const_value SET 1
 	const MONMENU_CUT        ; 1
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -9,21 +9,21 @@
 
 ; egg group constants
 const_value SET 1
-	const MONSTER
-	const AMPHIBIAN
-	const INSECT
-	const AVIAN
-	const FIELD
-	const FAIRY
-	const PLANT
-	const HUMANSHAPE
-	const INVERTEBRATE
-	const INANIMATE
-	const AMORPHOUS
-	const FISH
-	const LADIES_MAN
-	const REPTILE
-	const NO_EGGS
+	const MONSTER      ; 1
+	const AMPHIBIAN    ; 2
+	const INSECT       ; 3
+	const AVIAN        ; 4
+	const FIELD        ; 5
+	const FAIRY        ; 6
+	const PLANT        ; 7
+	const HUMANSHAPE   ; 8
+	const INVERTEBRATE ; 9
+	const INANIMATE    ; a
+	const AMORPHOUS    ; b
+	const FISH         ; c
+	const LADIES_MAN   ; d
+	const REPTILE      ; e
+	const NO_EGGS      ; f
 
 
 ; menu sprites
--- a/constants/radio_constants.asm
+++ b/constants/radio_constants.asm
@@ -89,6 +89,17 @@
 	const POKEDEX_SHOW_8         ; $57
 
 	const_def
+	const MAPRADIO_POKEMON_CHANNEL
+	const MAPRADIO_OAKS_MON_TALK
+	const MAPRADIO_POKEDEX_SHOW
+	const MAPRADIO_PKMN_MUSIC
+	const MAPRADIO_LUCKY_CHANNEL
+	const MAPRADIO_UNOWN
+	const MAPRADIO_PLACES_PEOPLE
+	const MAPRADIO_LETS_ALL_SING
+	const MAPRADIO_ROCKET
+
+	const_def
 	const BUENA_MON
 	const BUENA_ITEM
 	const BUENA_MOVE
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -24,7 +24,7 @@
 	const VAR_XCOORD           ; 12
 	const VAR_YCOORD           ; 13
 	const VAR_SPECIALPHONECALL ; 14
-	const VAR_15               ; 15
+	const VAR_BT_WIN_STREAK    ; 15
 	const VAR_KURT_APRICORNS   ; 16
 	const VAR_CALLERID         ; 17
 	const VAR_BLUECARDBALANCE  ; 18
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -98,7 +98,7 @@
 	const SFX_UNKNOWN_5F
 	const SFX_UNKNOWN_60
 	const SFX_UNKNOWN_61
-	const SFX_UNKNOWN_62
+	const SFX_SWITCH_POCKETS
 	const SFX_UNKNOWN_63
 	const SFX_BURN
 	const SFX_TITLE_SCREEN_ENTRANCE
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -269,7 +269,7 @@
 
 	const_def
 	const STEP_TYPE_00
-	const STEP_TYPE_STANDING
+	const STEP_TYPE_SLEEP
 	const STEP_TYPE_NPC_WALK
 	const STEP_TYPE_03
 	const STEP_TYPE_04
@@ -287,13 +287,13 @@
 	const STEP_TYPE_GOT_BITE
 	const STEP_TYPE_ROCK_SMASH
 	const STEP_TYPE_RETURN_DIG
-	const STEP_TYPE_13
+	const STEP_TYPE_TRACKING_OBJECT
 	const STEP_TYPE_14
 	const STEP_TYPE_15
 	const STEP_TYPE_16
 	const STEP_TYPE_17
 	const STEP_TYPE_18
-	const STEP_TYPE_19
+	const STEP_TYPE_SKYFALL_TOP
 
 	const_def
 	const PERSON_ACTION_00
@@ -347,3 +347,173 @@
 	const FACING_1D
 	const FACING_1E
 	const FACING_1F
+
+	const_def
+	const SPRITEANIMSTRUCT_INDEX          ; 0
+	const SPRITEANIMSTRUCT_FRAMESET_ID    ; 1
+	const SPRITEANIMSTRUCT_ANIM_SEQ_ID    ; 2
+	const SPRITEANIMSTRUCT_TILE_ID        ; 3
+	const SPRITEANIMSTRUCT_XCOORD         ; 4
+	const SPRITEANIMSTRUCT_YCOORD         ; 5
+	const SPRITEANIMSTRUCT_XOFFSET        ; 6
+	const SPRITEANIMSTRUCT_YOFFSET        ; 7
+	const SPRITEANIMSTRUCT_DURATION       ; 8
+	const SPRITEANIMSTRUCT_DURATIONOFFSET ; 9
+	const SPRITEANIMSTRUCT_FRAME          ; a
+	const SPRITEANIMSTRUCT_0B             ; b
+	const SPRITEANIMSTRUCT_0C             ; c
+	const SPRITEANIMSTRUCT_0D             ; d
+	const SPRITEANIMSTRUCT_0E             ; e
+	const SPRITEANIMSTRUCT_0F             ; f
+
+	const_def
+	const SPRITE_ANIM_FRAMESET_00
+	const SPRITE_ANIM_FRAMESET_01
+	const SPRITE_ANIM_FRAMESET_02
+	const SPRITE_ANIM_FRAMESET_03
+	const SPRITE_ANIM_FRAMESET_04
+	const SPRITE_ANIM_FRAMESET_05
+	const SPRITE_ANIM_FRAMESET_06
+	const SPRITE_ANIM_FRAMESET_07
+	const SPRITE_ANIM_FRAMESET_08
+	const SPRITE_ANIM_FRAMESET_09
+	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO
+	const SPRITE_ANIM_FRAMESET_0B
+	const SPRITE_ANIM_FRAMESET_0C
+	const SPRITE_ANIM_FRAMESET_SLOT_GOLEM
+	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY
+	const SPRITE_ANIM_FRAMESET_0F
+	const SPRITE_ANIM_FRAMESET_SLOTS_EGG
+	const SPRITE_ANIM_FRAMESET_WALK_CYCLE
+	const SPRITE_ANIM_FRAMESET_12
+	const SPRITE_ANIM_FRAMESET_13
+	const SPRITE_ANIM_FRAMESET_14
+	const SPRITE_ANIM_FRAMESET_15
+	const SPRITE_ANIM_FRAMESET_16
+	const SPRITE_ANIM_FRAMESET_17
+	const SPRITE_ANIM_FRAMESET_18
+	const SPRITE_ANIM_FRAMESET_19
+	const SPRITE_ANIM_FRAMESET_1A
+	const SPRITE_ANIM_FRAMESET_1B
+	const SPRITE_ANIM_FRAMESET_1C
+	const SPRITE_ANIM_FRAMESET_LEAF
+	const SPRITE_ANIM_FRAMESET_1E
+	const SPRITE_ANIM_FRAMESET_1F
+	const SPRITE_ANIM_FRAMESET_20
+	const SPRITE_ANIM_FRAMESET_21
+	const SPRITE_ANIM_FRAMESET_22
+	const SPRITE_ANIM_FRAMESET_23
+	const SPRITE_ANIM_FRAMESET_24
+	const SPRITE_ANIM_FRAMESET_25
+	const SPRITE_ANIM_FRAMESET_26
+	const SPRITE_ANIM_FRAMESET_27
+	const SPRITE_ANIM_FRAMESET_28
+	const SPRITE_ANIM_FRAMESET_29
+	const SPRITE_ANIM_FRAMESET_2A
+	const SPRITE_ANIM_FRAMESET_2B
+	const SPRITE_ANIM_FRAMESET_2C
+	const SPRITE_ANIM_FRAMESET_2D
+	const SPRITE_ANIM_FRAMESET_2E
+	const SPRITE_ANIM_FRAMESET_2F
+	const SPRITE_ANIM_FRAMESET_30
+	const SPRITE_ANIM_FRAMESET_31
+	const SPRITE_ANIM_FRAMESET_32
+	const SPRITE_ANIM_FRAMESET_33
+	const SPRITE_ANIM_FRAMESET_34
+	const SPRITE_ANIM_FRAMESET_35
+	const SPRITE_ANIM_FRAMESET_36
+	const SPRITE_ANIM_FRAMESET_37
+	const SPRITE_ANIM_FRAMESET_38
+	const SPRITE_ANIM_FRAMESET_39
+	const SPRITE_ANIM_FRAMESET_3A
+	const SPRITE_ANIM_FRAMESET_3B
+	const SPRITE_ANIM_FRAMESET_3C
+	const SPRITE_ANIM_FRAMESET_3D
+	const SPRITE_ANIM_FRAMESET_3E
+	const SPRITE_ANIM_FRAMESET_3F
+	const SPRITE_ANIM_FRAMESET_40
+	const SPRITE_ANIM_FRAMESET_41
+
+	const_def
+	const SPRITE_ANIM_SEQ_NULL
+	const SPRITE_ANIM_SEQ_01
+	const SPRITE_ANIM_SEQ_02
+	const SPRITE_ANIM_SEQ_03
+	const SPRITE_ANIM_SEQ_04
+	const SPRITE_ANIM_SEQ_05
+	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO
+	const SPRITE_ANIM_SEQ_07
+	const SPRITE_ANIM_SEQ_08
+	const SPRITE_ANIM_SEQ_SLOT_GOLEM
+	const SPRITE_ANIM_SEQ_SLOTS_CHANSEY
+	const SPRITE_ANIM_SEQ_SLOTS_EGG
+	const SPRITE_ANIM_SEQ_0C
+	const SPRITE_ANIM_SEQ_0D
+	const SPRITE_ANIM_SEQ_0E
+	const SPRITE_ANIM_SEQ_0F
+	const SPRITE_ANIM_SEQ_10
+	const SPRITE_ANIM_SEQ_11
+	const SPRITE_ANIM_SEQ_12
+	const SPRITE_ANIM_SEQ_13
+	const SPRITE_ANIM_SEQ_14
+	const SPRITE_ANIM_SEQ_15
+	const SPRITE_ANIM_SEQ_FLY_FROM
+	const SPRITE_ANIM_SEQ_FLY_LEAF
+	const SPRITE_ANIM_SEQ_FLY_TO
+	const SPRITE_ANIM_SEQ_19
+	const SPRITE_ANIM_SEQ_1A
+	const SPRITE_ANIM_SEQ_1B
+	const SPRITE_ANIM_SEQ_1C
+	const SPRITE_ANIM_SEQ_1D
+	const SPRITE_ANIM_SEQ_1E
+	const SPRITE_ANIM_SEQ_1F
+	const SPRITE_ANIM_SEQ_20
+	const SPRITE_ANIM_SEQ_21
+	const SPRITE_ANIM_SEQ_22
+
+	const_def
+	const SPRITE_ANIM_INDEX_00
+	const SPRITE_ANIM_INDEX_01
+	const SPRITE_ANIM_INDEX_02
+	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+	const SPRITE_ANIM_INDEX_04
+	const SPRITE_ANIM_INDEX_05
+	const SPRITE_ANIM_INDEX_SLOT_GOLEM
+	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+	const SPRITE_ANIM_INDEX_SLOTS_EGG
+	const SPRITE_ANIM_INDEX_09
+	const SPRITE_ANIM_INDEX_WALK_CYCLE
+	const SPRITE_ANIM_INDEX_0B
+	const SPRITE_ANIM_INDEX_0C
+	const SPRITE_ANIM_INDEX_0D
+	const SPRITE_ANIM_INDEX_0E
+	const SPRITE_ANIM_INDEX_0F
+	const SPRITE_ANIM_INDEX_10
+	const SPRITE_ANIM_INDEX_11
+	const SPRITE_ANIM_INDEX_12
+	const SPRITE_ANIM_INDEX_13
+	const SPRITE_ANIM_INDEX_14
+	const SPRITE_ANIM_INDEX_15
+	const SPRITE_ANIM_INDEX_LEAF
+	const SPRITE_ANIM_INDEX_CUT_TREE
+	const SPRITE_ANIM_INDEX_FLY_LEAF
+	const SPRITE_ANIM_INDEX_19
+	const SPRITE_ANIM_INDEX_1A
+	const SPRITE_ANIM_INDEX_1B
+	const SPRITE_ANIM_INDEX_1C
+	const SPRITE_ANIM_INDEX_1D
+	const SPRITE_ANIM_INDEX_1E
+	const SPRITE_ANIM_INDEX_1F
+	const SPRITE_ANIM_INDEX_20
+	const SPRITE_ANIM_INDEX_21
+	const SPRITE_ANIM_INDEX_22
+	const SPRITE_ANIM_INDEX_23
+	const SPRITE_ANIM_INDEX_24
+	const SPRITE_ANIM_INDEX_25
+	const SPRITE_ANIM_INDEX_26
+	const SPRITE_ANIM_INDEX_27
+	const SPRITE_ANIM_INDEX_28
+	const SPRITE_ANIM_INDEX_29
+	const SPRITE_ANIM_INDEX_2A
+	const SPRITE_ANIM_INDEX_2B
+	const SPRITE_ANIM_INDEX_2C
--- /dev/null
+++ b/constants/sram_constants.asm
@@ -1,0 +1,3 @@
+; Mobile bank 5
+sMobileLoginPassword EQU $aa4b
+LOGIN_PASSWORD_LENGTH EQU 17
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -1,5 +1,6 @@
 ; trainer groups
 	enum_start
+CHRIS EQU __enum__
 	trainerclass TRAINER_NONE ; 0
 	const PHONECONTACT_MOM
 	const PHONECONTACT_BIKESHOP
@@ -7,6 +8,7 @@
 	const PHONECONTACT_ELM
 	const PHONECONTACT_BUENA
 	
+KRIS EQU __enum__
 	trainerclass FALKNER ; 1
 
 	trainerclass WHITNEY ; 2
@@ -639,8 +641,8 @@
 	const TRNATTR_ITEM1
 	const TRNATTR_ITEM2
 	const TRNATTR_BASEMONEY
-	const TRNATTR_AI1
+	const TRNATTR_AI_MOVE_WEIGHTS
 	const TRNATTR_AI2
-	const TRNATTR_AI3
+	const TRNATTR_AI_ITEM_SWITCH
 	const TRNATTR_AI4
 NUM_TRAINER_ATTRIBUTES EQU const_value
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -96,3 +96,10 @@
 PC_DEPOSIT EQU 1
 DAYCARE_WITHDRAW EQU 2
 DAYCARE_DEPOSIT EQU 3
+
+; wCurrentDexMode
+	const_def
+	const DEXMODE_NEW
+	const DEXMODE_OLD
+	const DEXMODE_ABC
+	const DEXMODE_UNOWN
--- a/data/battle_tower_2.asm
+++ b/data/battle_tower_2.asm
@@ -1,4 +1,3 @@
-
 BattleTowerTrainerData:: ; What exactly it is, I don't know
 ; Size is 70 (Nr of Trainers in BattleTower) * 0x24 (Nr of Bytes that are copied)
 ; Second argument points to an entry in Unknown_170470, to which the first argument is compared.
--- /dev/null
+++ b/data/map_objects.asm
@@ -1,0 +1,44 @@
+sprite_movement_data: macro
+	db \1, \2, \3, \4, \5
+	dn \6, 0
+endm
+
+	; function,                                              facing, action,              flags1, flags2, palette flags
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 00
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 01
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 02
+	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 03
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 04
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 05
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 06
+	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 07
+	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 08
+	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 09
+	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0a
+	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 0b
+	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0c
+	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0d
+	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0e
+	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0f
+	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 10
+	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 11
+	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 12
+	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 13
+	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 14
+	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   PERSON_ACTION_09,    $2e,    $01,    %1100 ; 15
+	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   PERSON_ACTION_0A,    $2e,    $00,    %0000 ; 16
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 17
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $2e,    $10,    %0000 ; 18
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_STAND,    $2e,    $00,    %0100 ; 19
+	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 1a
+	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   PERSON_ACTION_00,    $8e,    $01,    %0000 ; 1b
+	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   PERSON_ACTION_EMOTE,    $8e,    $02,    %0000 ; 1c
+	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   PERSON_ACTION_00,    $82,    $00,    %0000 ; 1d
+	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1e
+	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1f
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0C,    $2e,    $01,    %1100 ; 20
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0D,    $2e,    $01,    %1100 ; 21
+	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   PERSON_ACTION_0E,    $8e,    $01,    %0000 ; 22
+	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   PERSON_ACTION_0F,    $8e,    $02,    %0000 ; 23
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0010 ; 24
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 25
\ No newline at end of file
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -52,42 +52,42 @@
 	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
 	ld a, -1
-	ld [ItemCountBuffer], a
+	ld [CurItemQuantity], a
 	ld hl, NumItems
 	call TossItem
 
 	; load species in wcd2a
 	ld a, EGG
-	ld [wcd2a], a
+	ld [wMobileMonSpeciesBuffer], a
 
-	; load pointer to wcd29 in wcd20
-	ld a, wcd29 % $100
-	ld [wcd20], a
-	ld a, wcd29 / $100
-	ld [wcd21], a
-	; load pointer to OddEggSpecies in wcd22
+	; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
+	ld a, (wMobileMonSpeciesBuffer - 1) % $100
+	ld [wMobileMonSpeciesPointerBuffer], a
+	ld a, (wMobileMonSpeciesBuffer - 1) / $100
+	ld [wMobileMonSpeciesPointerBuffer + 1], a
+	; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
 	ld a, OddEggSpecies % $100
-	ld [wcd22], a
+	ld [wMobileMonStructurePointerBuffer], a
 	ld a, OddEggSpecies / $100
-	ld [wcd23], a
+	ld [wMobileMonStructurePointerBuffer + 1], a
 
-	; load Odd Egg Name in wcd2b
+	; load Odd Egg Name in wTempOddEggNickname
 	ld hl, .Odd
-	ld de, wcd2b
+	ld de, wTempOddEggNickname
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-	; load pointer to wcd2b in wcd24
-	ld a, wcd2b % $100
-	ld [wcd24], a
-	ld a, wcd2b / $100
-	ld [wcd25], a
-	; load pointer to wOddEggName in wcd26
+	; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
+	ld a, wTempOddEggNickname % $100
+	ld [wMobileMonOTNamePointerBuffer], a
+	ld a, wTempOddEggNickname / $100
+	ld [wMobileMonOTNamePointerBuffer + 1], a
+	; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
 	ld a, wOddEggName % $100
-	ld [wcd26], a
+	ld [wMobileMonNicknamePointerBuffer], a
 	ld a, wOddEggName / $100
-	ld [wcd27], a
-	callba Function11b98f
+	ld [wMobileMonNicknamePointerBuffer + 1], a
+	callba AddMobileMonToParty
 	ret
 ; 1fb546
 
@@ -102,19 +102,25 @@
 ENDM
 
 prob_total = 0
-
+; Pichu
 	prob 8
 	prob 1
+; Cleffa
 	prob 16
 	prob 3
+; Igglybuff
 	prob 16
 	prob 3
+; Smoochum
 	prob 14
 	prob 2
+; Magby
 	prob 10
 	prob 2
+; Elekid
 	prob 12
 	prob 2
+; Tyrogue
 	prob 10
 	prob 1
 ; 1fb56e
--- /dev/null
+++ b/data/sprite_engine.asm
@@ -1,0 +1,1629 @@
+SpriteAnimFrameData: ; 8d6e6
+	dw .Frameset_00 ; 00
+	dw .Frameset_01 ; 01
+	dw .Frameset_02 ; 02
+	dw .Frameset_03 ; 03
+	dw .Frameset_04 ; 04
+	dw .Frameset_05 ; 05
+	dw .Frameset_06 ; 06
+	dw .Frameset_07 ; 07
+	dw .Frameset_08 ; 08
+	dw .Frameset_09 ; 09
+	dw .Frameset_0a ; 0a
+	dw .Frameset_0b ; 0b
+	dw .Frameset_0c ; 0c
+	dw .Frameset_0d ; 0d
+	dw .Frameset_0e ; 0e
+	dw .Frameset_0f ; 0f
+	dw .Frameset_10 ; 10
+	dw .Frameset_11 ; 11
+	dw .Frameset_12 ; 12
+	dw .Frameset_13 ; 13
+	dw .Frameset_14 ; 14
+	dw .Frameset_15 ; 15
+	dw .Frameset_16 ; 16
+	dw .Frameset_17 ; 17
+	dw .Frameset_18 ; 18
+	dw .Frameset_19 ; 19
+	dw .Frameset_1a ; 1a
+	dw .Frameset_1b ; 1b
+	dw .Frameset_1c ; 1c
+	dw .Frameset_1d ; 1d
+	dw .Frameset_1e ; 1e
+	dw .Frameset_1f ; 1f
+	dw .Frameset_20 ; 20
+	dw .Frameset_21 ; 21
+	dw .Frameset_22 ; 22
+	dw .Frameset_23 ; 23
+	dw .Frameset_24 ; 24
+	dw .Frameset_25 ; 25 headbutt
+	dw .Frameset_26 ; 26
+	dw .Frameset_27 ; 27
+	dw .Frameset_28 ; 28
+	dw .Frameset_29 ; 29
+	dw .Frameset_2a ; 2a
+	dw .Frameset_2b ; 2b
+	dw .Frameset_2c ; 2c
+	dw .Frameset_2d ; 2d
+	dw .Frameset_2e ; 2e
+	dw .Frameset_2f ; 2f
+	dw .Frameset_30 ; 30
+	dw .Frameset_31 ; 31
+	dw .Frameset_32 ; 32
+	dw .Frameset_33 ; 33
+	dw .Frameset_34 ; 34
+	dw .Frameset_35 ; 35
+	dw .Frameset_36 ; 36
+	dw .Frameset_37 ; 37
+	dw .Frameset_38 ; 38
+	dw .Frameset_39 ; 39 unown in intro
+	dw .Frameset_3a ; 3a unown in intro
+	dw .Frameset_3b ; 3b unown in intro
+	dw .Frameset_3c ; 3c unown in intro
+	dw .Frameset_3d ; 3d
+	dw .Frameset_3e ; 3e
+	dw .Frameset_3f ; 3f
+	dw .Frameset_40 ; 40 celebi on the left
+	dw .Frameset_41 ; 41 celebi on the right
+; 8d76a
+				; OAM idx (see SpriteAnimOAMData), flip flags/duration
+.Frameset_00:
+	db $00, $20
+	db -1
+
+.Frameset_01:
+	db $00, $08
+	db $01, $08
+	db -2
+
+.Frameset_02:
+	db $3d, $08
+	db $3e, $08
+	db -2
+
+.Frameset_03:
+	db $3f, $08
+	db $40, $08
+	db -2
+
+.Frameset_04:
+	db $00, $04
+	db $01, $04
+	db -2
+
+.Frameset_05:
+	db $3d, $04
+	db $3e, $04
+	db -2
+
+.Frameset_06:
+	db $3f, $04
+	db $40, $04
+	db -2
+
+.Frameset_11:
+	db $00, $08
+	db $01, $08
+	db $00, $08
+	db $01, $48
+	db -2
+
+.Frameset_2d:
+	db $63, $08
+	db $64, $08
+	db $63, $08
+	db $64, $48
+	db -2
+
+.Frameset_2e:
+	db $65, $08
+	db $66, $08
+	db $65, $08
+	db $66, $48
+	db -2
+
+.Frameset_07:
+	db $1e, $01
+	db $1f, $01
+	db -2
+
+.Frameset_08:
+	db $20, $01
+	db -3, $01
+	db -2
+
+.Frameset_09:
+	db $21, $01
+	db -3, $01
+	db -2
+
+.Frameset_0a:
+	db $81, $0c
+	db $82, $01
+	db $83, $01
+	db $82, $04
+	db $81, $0c
+	db $82, $0c
+	db $83, $04
+	db $84, $20
+	db $85, $03
+	db $86, $03
+	db $87, $04
+	db $88, $04
+	db $89, $04
+	db $8a, $0a
+	db $8b, $07
+	db -1
+
+.Frameset_0b:
+	db $23, $03
+	db $23, $83
+	db -2
+
+.Frameset_0c:
+	db $24, $02
+	db $25, $02
+	db $26, $02
+	db $25, $02
+	db -2
+
+.Frameset_0d:
+	db $27, $07
+	db $28, $07
+	db $27, $87
+	db $28, $47
+	db -2
+
+.Frameset_0e:
+	db $29, $07
+	db $2a, $07
+	db $29, $07
+	db $2b, $07
+	db -2
+
+.Frameset_0f:
+	db $29, $07
+	db $2c, $07
+	db $2d, $07
+	db $2c, $07
+	db $29, $07
+	db -1
+
+.Frameset_10:
+	db $2e, $14
+	db -1
+
+.Frameset_12:
+	db $2f, $20
+	db -1
+
+.Frameset_13:
+	db $30, $20
+	db -1
+
+.Frameset_14:
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db -2
+
+.Frameset_15:
+	db $32, $04
+	db $33, $04
+	db $34, $04
+	db -4
+
+.Frameset_16:
+	db $35, $03
+	db $36, $03
+	db -2
+
+.Frameset_17:
+	db $37, $07
+	db $38, $07
+	db -2
+
+.Frameset_18:
+	db $39, $20
+	db -1
+
+.Frameset_19:
+	db $3b, $02
+	db $3a, $02
+	db $3b, $02
+	db -1
+
+.Frameset_1a:
+	db $3c, $20
+	db -1
+
+.Frameset_1b:
+	db $41, $08
+	db $42, $08
+	db $41, $08
+	db $42, $48
+	db -2
+	db $43, $08
+	db $44, $08
+	db -2
+	db $45, $08
+	db $46, $08
+	db -2
+	db $47, $08
+	db $48, $08
+	db -2
+	db $49, $01
+	db $49, $41
+	db $49, $c1
+	db $49, $81
+	db -2
+	db $4a, $20
+	db -1
+	db $4b, $20
+	db -1
+	db $4c, $20
+	db -1
+	db $4d, $20
+	db -1
+	db $4e, $03
+	db -3, $03
+	db -2
+
+.Frameset_1c:
+	db -3, $20
+	db -1
+
+.Frameset_1d:
+	db $4f, $20
+	db -1
+
+.Frameset_1e:
+	db $50, $02
+	db $51, $10
+	db -3, $01
+	db $52, $01
+	db -3, $01
+	db $53, $01
+	db -4
+
+.Frameset_1f:
+	db $54, $20
+	db -1
+
+.Frameset_20:
+	db $55, $20
+	db -1
+
+.Frameset_21:
+	db $55, $60
+	db -1
+
+.Frameset_22:
+	db $55, $a0
+	db -1
+
+.Frameset_23:
+	db $55, $e0
+	db -1
+
+.Frameset_24:
+	db $56, $0a
+	db $57, $09
+	db $58, $0a
+	db $59, $0a
+	db $58, $09
+	db $5a, $0a
+	db -2
+
+.Frameset_25:
+	db $50, $02
+	db $5b, $02
+	db $50, $02
+	db $5b, $42
+	db -2
+
+.Frameset_26:
+	db $5c, $02
+	db -1
+
+.Frameset_27:
+	db $5d, $02
+	db -1
+
+.Frameset_28:
+	db $5e, $02
+	db -1
+
+.Frameset_29:
+	db $5f, $02
+	db -1
+
+.Frameset_2a:
+	db $60, $02
+	db -1
+
+.Frameset_2b:
+	db $61, $02
+	db -1
+
+.Frameset_2c:
+	db $62, $02
+	db -1
+
+.Frameset_2f:
+	db $32, $03
+	db $33, $03
+	db $34, $03
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db -1
+
+.Frameset_30:
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db $30, $03
+	db $31, $03
+	db $30, $03
+	db $31, $43
+	db $32, $03
+	db $33, $03
+	db $34, $03
+	db -4
+
+.Frameset_31:
+	db $67, $03
+	db $68, $03
+	db -2
+
+.Frameset_32:
+	db $6c, $03
+	db -1
+
+.Frameset_33:
+	db $6d, $03
+	db -1
+
+.Frameset_34:
+	db $69, $02
+	db $6a, $02
+	db $6b, $02
+	db -4
+
+.Frameset_35:
+	db $6e, $03
+	db $6f, $03
+	db $70, $03
+	db $71, $03
+	db -2
+
+.Frameset_36:
+	db $71, $03
+	db $6e, $07
+	db -1
+
+.Frameset_37:
+	db $72, $20
+	db $73, $07
+	db $74, $07
+	db -1
+
+.Frameset_38:
+	db $75, $03
+	db -1
+
+.Frameset_39:
+	db $76, $03
+	db $77, $03
+	db $78, $07
+	db -4
+
+.Frameset_3a:
+	db $76, $43
+	db $77, $43
+	db $78, $47
+	db -4
+
+.Frameset_3b:
+	db $76, $83
+	db $77, $83
+	db $78, $87
+	db -4
+
+.Frameset_3c:
+	db $76, $c3
+	db $77, $c3
+	db $78, $c7
+	db -4
+
+.Frameset_3d:
+	db $79, $03
+	db $7a, $03
+	db $7b, $03
+	db $7c, $07
+	db $7d, $07
+	db -1
+
+.Frameset_3e:
+	db $7e, $03
+	db -1
+
+.Frameset_3f:
+	db -3, $00
+	db -1
+
+.Frameset_40:
+	db $7f, $08
+	db $80, $08
+	db -1
+
+.Frameset_41:
+	db $7f, $48
+	db $80, $48
+	db -1
+; 8d94d
+
+SpriteAnimOAMData: ; 8d94d
+	; vtile offset, pointer
+	dbw $00, .OAMData_00 ; 00
+	dbw $04, .OAMData_00 ; 01
+	dbw $4c, .OAMData_02 ; 02
+	dbw $5c, .OAMData_02 ; 03
+	dbw $6c, .OAMData_04 ; 04
+	dbw $6e, .OAMData_04 ; 05
+	dbw $2d, .OAMData_06 ; 06
+	dbw $4d, .OAMData_06 ; 07
+	dbw $60, .OAMData_08 ; 08
+	dbw $00, .OAMData_08 ; 09
+	dbw $00, .OAMData_08 ; 0a
+	dbw $06, .OAMData_08 ; 0b
+	dbw $0c, .OAMData_0c ; 0c
+	dbw $0d, .OAMData_02 ; 0d
+	dbw $00, .OAMData_0e ; 0e
+	dbw $04, .OAMData_0e ; 0f
+	dbw $08, .OAMData_0e ; 10
+	dbw $40, .OAMData_0e ; 11
+	dbw $44, .OAMData_0e ; 12
+	dbw $48, .OAMData_0e ; 13
+	dbw $4c, .OAMData_0e ; 14
+	dbw $80, .OAMData_15 ; 15
+	dbw $85, .OAMData_15 ; 16
+	dbw $8a, .OAMData_15 ; 17
+	dbw $00, .OAMData_18 ; 18
+	dbw $01, .OAMData_19 ; 19
+	dbw $09, .OAMData_1a ; 1a
+	dbw $10, .OAMData_1b ; 1b
+	dbw $29, .OAMData_1b ; 1c
+	dbw $42, .OAMData_1b ; 1d
+	dbw $f8, .OAMData_1e ; 1e
+	dbw $fa, .OAMData_1e ; 1f
+	dbw $00, .OAMData_20 ; 20
+	dbw $00, .OAMData_21 ; 21
+	dbw $00, .OAMData_22 ; 22
+	dbw $0f, .OAMData_23 ; 23
+	dbw $11, .OAMData_02 ; 24
+	dbw $12, .OAMData_02 ; 25
+	dbw $13, .OAMData_02 ; 26
+	dbw $00, .OAMData_27 ; 27
+	dbw $08, .OAMData_27 ; 28
+	dbw $10, .OAMData_29 ; 29
+	dbw $10, .OAMData_2a ; 2a
+	dbw $10, .OAMData_2b ; 2b
+	dbw $10, .OAMData_2c ; 2c
+	dbw $10, .OAMData_2d ; 2d
+	dbw $3a, .OAMData_02 ; 2e
+	dbw $00, .OAMData_00 ; 2f
+	dbw $00, .OAMData_30 ; 30
+	dbw $02, .OAMData_31 ; 31
+	dbw $06, .OAMData_19 ; 32
+	dbw $0a, .OAMData_19 ; 33
+	dbw $0e, .OAMData_19 ; 34
+	dbw $12, .OAMData_35 ; 35
+	dbw $13, .OAMData_35 ; 36
+	dbw $00, .OAMData_00 ; 37
+	dbw $04, .OAMData_00 ; 38
+	dbw $10, .OAMData_19 ; 39
+	dbw $00, .OAMData_31 ; 3a
+	dbw $04, .OAMData_02 ; 3b
+	dbw $00, .OAMData_3c ; 3c
+	dbw $00, .OAMData_3d ; 3d
+	dbw $00, .OAMData_3e ; 3e
+	dbw $00, .OAMData_3f ; 3f
+	dbw $00, .OAMData_40 ; 40
+	dbw $00, .OAMData_31 ; 41
+	dbw $04, .OAMData_31 ; 42
+	dbw $00, .OAMData_43 ; 43
+	dbw $30, .OAMData_43 ; 44
+	dbw $03, .OAMData_43 ; 45
+	dbw $33, .OAMData_43 ; 46
+	dbw $06, .OAMData_43 ; 47
+	dbw $36, .OAMData_43 ; 48
+	dbw $09, .OAMData_43 ; 49
+	dbw $39, .OAMData_43 ; 4a
+	dbw $0c, .OAMData_4b ; 4b
+	dbw $0c, .OAMData_4c ; 4c
+	dbw $3c, .OAMData_02 ; 4d
+	dbw $3e, .OAMData_02 ; 4e
+	dbw $00, .OAMData_4f ; 4f
+	dbw $00, .OAMData_50 ; 50
+	dbw $00, .OAMData_51 ; 51
+	dbw $00, .OAMData_52 ; 52
+	dbw $00, .OAMData_53 ; 53
+	dbw $00, .OAMData_02 ; 54
+	dbw $01, .OAMData_02 ; 55
+	dbw $00, .OAMData_56 ; 56
+	dbw $00, .OAMData_57 ; 57
+	dbw $00, .OAMData_58 ; 58
+	dbw $00, .OAMData_59 ; 59
+	dbw $00, .OAMData_5a ; 5a
+	dbw $04, .OAMData_50 ; 5b
+	dbw $00, .OAMData_5c ; 5c
+	dbw $00, .OAMData_5d ; 5d
+	dbw $00, .OAMData_5e ; 5e
+	dbw $00, .OAMData_5f ; 5f
+	dbw $00, .OAMData_60 ; 60
+	dbw $00, .OAMData_61 ; 61
+	dbw $00, .OAMData_62 ; 62
+	dbw $00, .OAMData_63 ; 63
+	dbw $04, .OAMData_63 ; 64
+	dbw $00, .OAMData_65 ; 65
+	dbw $04, .OAMData_65 ; 66
+	dbw $20, .OAMData_67 ; 67
+	dbw $21, .OAMData_67 ; 68
+	dbw $22, .OAMData_69 ; 69
+	dbw $23, .OAMData_6a ; 6a
+	dbw $27, .OAMData_6b ; 6b
+	dbw $2a, .OAMData_6c ; 6c
+	dbw $2a, .OAMData_6d ; 6d
+	dbw $00, .OAMData_6e ; 6e
+	dbw $08, .OAMData_6f ; 6f
+	dbw $60, .OAMData_70 ; 70
+	dbw $68, .OAMData_71 ; 71
+	dbw $00, .OAMData_72 ; 72
+	dbw $05, .OAMData_72 ; 73
+	dbw $0a, .OAMData_72 ; 74
+	dbw $50, .OAMData_75 ; 75
+	dbw $00, .OAMData_76 ; 76
+	dbw $01, .OAMData_77 ; 77
+	dbw $04, .OAMData_78 ; 78
+	dbw $00, .OAMData_18 ; 79
+	dbw $01, .OAMData_7a ; 7a
+	dbw $03, .OAMData_7b ; 7b
+	dbw $08, .OAMData_7c ; 7c
+	dbw $1c, .OAMData_7c ; 7d
+	dbw $80, .OAMData_7e ; 7e
+	dbw $00, .OAMData_7f ; 7f
+	dbw $04, .OAMData_7f ; 80
+	dbw $d0, .OAMData_81 ; 81
+	dbw $d3, .OAMData_81 ; 82
+	dbw $d6, .OAMData_81 ; 83
+	dbw $6c, .OAMData_84 ; 84
+	dbw $68, .OAMData_84 ; 85
+	dbw $64, .OAMData_84 ; 86
+	dbw $60, .OAMData_84 ; 87
+	dbw $0c, .OAMData_84 ; 88
+	dbw $08, .OAMData_84 ; 89
+	dbw $04, .OAMData_84 ; 8a
+	dbw $00, .OAMData_84 ; 8b
+
+.OAMData_02
+	db 1
+	dsprite -1,  4, -1,  4, $00, $00
+
+.OAMData_04
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $10, $00
+	dsprite  0,  0,  0,  0, $11, $00
+
+.OAMData_23
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $00, $20
+	dsprite  0,  0, -1,  0, $01, $00
+	dsprite  0,  0,  0,  0, $01, $20
+
+.OAMData_30
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $00, $a0
+	dsprite  0,  0, -1,  0, $01, $80
+	dsprite  0,  0,  0,  0, $01, $a0
+
+.OAMData_18
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $00, $20
+	dsprite  0,  0, -1,  0, $00, $40
+	dsprite  0,  0,  0,  0, $00, $60
+
+.OAMData_35
+	db 4
+	dsprite -1,  0, -1,  0, $00, $07
+	dsprite -1,  0,  0,  0, $00, $27
+	dsprite  0,  0, -1,  0, $00, $47
+	dsprite  0,  0,  0,  0, $00, $67
+; 8db4b
+
+; 8db4b
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $00, $a0
+	dsprite  0,  0, -1,  0, $00, $c0
+	dsprite  0,  0,  0,  0, $00, $e0
+
+.OAMData_19
+	db 16
+	dsprite -2,  0, -2,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -1,  0, -2,  0, $02, $00
+	dsprite -1,  0, -1,  0, $03, $00
+	dsprite -2,  0,  0,  0, $01, $20
+	dsprite -2,  0,  1,  0, $00, $20
+	dsprite -1,  0,  0,  0, $03, $20
+	dsprite -1,  0,  1,  0, $02, $20
+	dsprite  0,  0, -2,  0, $02, $40
+	dsprite  0,  0, -1,  0, $03, $40
+	dsprite  1,  0, -2,  0, $00, $40
+	dsprite  1,  0, -1,  0, $01, $40
+	dsprite  0,  0,  0,  0, $03, $60
+	dsprite  0,  0,  1,  0, $02, $60
+	dsprite  1,  0,  0,  0, $01, $60
+	dsprite  1,  0,  1,  0, $00, $60
+
+.OAMData_1a
+	db 36
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -2,  0, -3,  0, $03, $00
+	dsprite -2,  0, -2,  0, $04, $00
+	dsprite -2,  0, -1,  0, $05, $00
+	dsprite -1,  0, -3,  0, $06, $00
+	dsprite -1,  0, -2,  0, $05, $00
+	dsprite -1,  0, -1,  0, $05, $00
+	dsprite -3,  0,  0,  0, $02, $20
+	dsprite -3,  0,  1,  0, $01, $20
+	dsprite -3,  0,  2,  0, $00, $20
+	dsprite -2,  0,  0,  0, $05, $20
+	dsprite -2,  0,  1,  0, $04, $20
+	dsprite -2,  0,  2,  0, $03, $20
+	dsprite -1,  0,  0,  0, $05, $20
+	dsprite -1,  0,  1,  0, $05, $20
+	dsprite -1,  0,  2,  0, $06, $20
+	dsprite  0,  0, -3,  0, $06, $40
+	dsprite  0,  0, -2,  0, $05, $40
+	dsprite  0,  0, -1,  0, $05, $40
+	dsprite  1,  0, -3,  0, $03, $40
+	dsprite  1,  0, -2,  0, $04, $40
+	dsprite  1,  0, -1,  0, $05, $40
+	dsprite  2,  0, -3,  0, $00, $40
+	dsprite  2,  0, -2,  0, $01, $40
+	dsprite  2,  0, -1,  0, $02, $40
+	dsprite  0,  0,  0,  0, $05, $60
+	dsprite  0,  0,  1,  0, $05, $60
+	dsprite  0,  0,  2,  0, $06, $60
+	dsprite  1,  0,  0,  0, $05, $60
+	dsprite  1,  0,  1,  0, $04, $60
+	dsprite  1,  0,  2,  0, $03, $60
+	dsprite  2,  0,  0,  0, $02, $60
+	dsprite  2,  0,  1,  0, $01, $60
+	dsprite  2,  0,  2,  0, $00, $60
+
+.OAMData_43
+	db 9
+	dsprite -2,  4, -2,  4, $00, $00
+	dsprite -2,  4, -1,  4, $01, $00
+	dsprite -2,  4,  0,  4, $02, $00
+	dsprite -1,  4, -2,  4, $10, $00
+	dsprite -1,  4, -1,  4, $11, $00
+	dsprite -1,  4,  0,  4, $12, $00
+	dsprite  0,  4, -2,  4, $20, $00
+	dsprite  0,  4, -1,  4, $21, $00
+	dsprite  0,  4,  0,  4, $22, $00
+
+.OAMData_0e
+	db 16
+	dsprite -2,  0, -2,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -2,  0,  0,  0, $02, $00
+	dsprite -2,  0,  1,  0, $03, $00
+	dsprite -1,  0, -2,  0, $10, $00
+	dsprite -1,  0, -1,  0, $11, $00
+	dsprite -1,  0,  0,  0, $12, $00
+	dsprite -1,  0,  1,  0, $13, $00
+	dsprite  0,  0, -2,  0, $20, $00
+	dsprite  0,  0, -1,  0, $21, $00
+	dsprite  0,  0,  0,  0, $22, $00
+	dsprite  0,  0,  1,  0, $23, $00
+	dsprite  1,  0, -2,  0, $30, $00
+	dsprite  1,  0, -1,  0, $31, $00
+	dsprite  1,  0,  0,  0, $32, $00
+	dsprite  1,  0,  1,  0, $33, $00
+
+.OAMData_1b
+	db 25
+	dsprite -3,  4, -3,  4, $00, $00
+	dsprite -2,  4, -3,  4, $01, $00
+	dsprite -1,  4, -3,  4, $02, $00
+	dsprite  0,  4, -3,  4, $03, $00
+	dsprite  1,  4, -3,  4, $04, $00
+	dsprite -3,  4, -2,  4, $05, $00
+	dsprite -2,  4, -2,  4, $06, $00
+	dsprite -1,  4, -2,  4, $07, $00
+	dsprite  0,  4, -2,  4, $08, $00
+	dsprite  1,  4, -2,  4, $09, $00
+	dsprite -3,  4, -1,  4, $0a, $00
+	dsprite -2,  4, -1,  4, $0b, $00
+	dsprite -1,  4, -1,  4, $0c, $00
+	dsprite  0,  4, -1,  4, $0d, $00
+	dsprite  1,  4, -1,  4, $0e, $00
+	dsprite -3,  4,  0,  4, $0f, $00
+	dsprite -2,  4,  0,  4, $10, $00
+	dsprite -1,  4,  0,  4, $11, $00
+	dsprite  0,  4,  0,  4, $12, $00
+	dsprite  1,  4,  0,  4, $13, $00
+	dsprite -3,  4,  1,  4, $14, $00
+	dsprite -2,  4,  1,  4, $15, $00
+	dsprite -1,  4,  1,  4, $16, $00
+	dsprite  0,  4,  1,  4, $17, $00
+	dsprite  1,  4,  1,  4, $18, $00
+; 8dcf9
+
+; 8dcf9
+	db 36
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $03, $00
+	dsprite -3,  0,  1,  0, $04, $00
+	dsprite -3,  0,  2,  0, $05, $00
+	dsprite -2,  0, -3,  0, $06, $00
+	dsprite -2,  0, -2,  0, $07, $00
+	dsprite -2,  0, -1,  0, $08, $00
+	dsprite -2,  0,  0,  0, $09, $00
+	dsprite -2,  0,  1,  0, $0a, $00
+	dsprite -2,  0,  2,  0, $0b, $00
+	dsprite -1,  0, -3,  0, $0c, $00
+	dsprite -1,  0, -2,  0, $0d, $00
+	dsprite -1,  0, -1,  0, $0e, $00
+	dsprite -1,  0,  0,  0, $0f, $00
+	dsprite -1,  0,  1,  0, $10, $00
+	dsprite -1,  0,  2,  0, $11, $00
+	dsprite  0,  0, -3,  0, $12, $00
+	dsprite  0,  0, -2,  0, $13, $00
+	dsprite  0,  0, -1,  0, $14, $00
+	dsprite  0,  0,  0,  0, $15, $00
+	dsprite  0,  0,  1,  0, $16, $00
+	dsprite  0,  0,  2,  0, $17, $00
+	dsprite  1,  0, -3,  0, $18, $00
+	dsprite  1,  0, -2,  0, $19, $00
+	dsprite  1,  0, -1,  0, $1a, $00
+	dsprite  1,  0,  0,  0, $1b, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite  1,  0,  2,  0, $1d, $00
+	dsprite  2,  0, -3,  0, $1e, $00
+	dsprite  2,  0, -2,  0, $1f, $00
+	dsprite  2,  0, -1,  0, $20, $00
+	dsprite  2,  0,  0,  0, $21, $00
+	dsprite  2,  0,  1,  0, $22, $00
+	dsprite  2,  0,  2,  0, $23, $00
+
+.OAMData_00
+; party menu icons
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $02, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_31
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $01, $80
+	dsprite  0,  0, -1,  0, $02, $80
+	dsprite  0,  0,  0,  0, $03, $80
+
+.OAMData_3d
+; party menu icon with mail, frame 1
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $08, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_3e
+; party menu icon with mail, frame 2
+	db 4
+	dsprite -1,  0, -1,  0, $04, $00
+	dsprite -1,  0,  0,  0, $05, $00
+	dsprite  0,  0, -1,  0, $08, $00
+	dsprite  0,  0,  0,  0, $07, $00
+
+.OAMData_3f
+; party menu icon with item, frame 1
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $09, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_40
+; party menu icon with item, frame 2
+	db 4
+	dsprite -1,  0, -1,  0, $04, $00
+	dsprite -1,  0,  0,  0, $05, $00
+	dsprite  0,  0, -1,  0, $09, $00
+	dsprite  0,  0,  0,  0, $07, $00
+
+.OAMData_06
+	db 6
+	dsprite -1,  0, -2,  4, $00, $01
+	dsprite -1,  0, -1,  4, $01, $01
+	dsprite -1,  0,  0,  4, $02, $01
+	dsprite  0,  0, -2,  4, $10, $01
+	dsprite  0,  0, -1,  4, $11, $01
+	dsprite  0,  0,  0,  4, $12, $01
+
+.OAMData_08
+	db 29
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $03, $00
+	dsprite -2,  0, -3,  0, $10, $00
+	dsprite -2,  0, -2,  0, $11, $00
+	dsprite -2,  0, -1,  0, $12, $00
+	dsprite -2,  0,  0,  0, $13, $00
+	dsprite -1,  0, -3,  0, $20, $00
+	dsprite -1,  0, -2,  0, $21, $00
+	dsprite -1,  0, -1,  0, $22, $00
+	dsprite -1,  0,  0,  0, $23, $00
+	dsprite -1,  0,  1,  0, $24, $00
+	dsprite  0,  0, -3,  0, $30, $80
+	dsprite  0,  0, -2,  0, $31, $80
+	dsprite  0,  0, -1,  0, $32, $80
+	dsprite  0,  0,  0,  0, $33, $80
+	dsprite  0,  0,  1,  0, $34, $80
+	dsprite  1,  0, -3,  0, $40, $80
+	dsprite  1,  0, -2,  0, $41, $80
+	dsprite  1,  0, -1,  0, $42, $80
+	dsprite  1,  0,  0,  0, $43, $80
+	dsprite  1,  0,  1,  0, $44, $80
+	dsprite  1,  0,  2,  0, $45, $80
+	dsprite  2,  0, -2,  0, $51, $80
+	dsprite  2,  0, -1,  0, $52, $80
+	dsprite  2,  0,  0,  0, $53, $80
+	dsprite  2,  0,  1,  0, $54, $80
+	dsprite  2,  0,  2,  0, $55, $80
+
+.OAMData_0c
+	db 2
+	dsprite -1,  0, -1,  4, $00, $00
+	dsprite  0,  0, -1,  4, $10, $00
+
+.OAMData_15
+	db 5
+	dsprite -2,  0,  3,  0, $00, $00
+	dsprite -2,  0,  4,  0, $01, $00
+	dsprite -1,  0,  2,  0, $02, $00
+	dsprite -1,  0,  3,  0, $03, $00
+	dsprite  0,  0,  2,  0, $04, $00
+
+.OAMData_4f
+	db 1
+	dsprite -1,  4, -1,  4, $00, $06
+
+.OAMData_50
+	db 4
+	dsprite -1,  0, -1,  0, $00, $06
+	dsprite -1,  0,  0,  0, $01, $06
+	dsprite  0,  0, -1,  0, $02, $06
+	dsprite  0,  0,  0,  0, $03, $06
+
+.OAMData_20
+	db 4
+	dsprite -1,  7, -1,  7, $00, $00
+	dsprite -1,  7,  0,  0, $00, $20
+	dsprite  0,  0, -1,  7, $00, $40
+	dsprite  0,  0,  0,  0, $00, $60
+
+.OAMData_21
+	db 10
+	dsprite -1,  7,  0,  0, $00, $00
+	dsprite -1,  7,  1,  0, $01, $00
+	dsprite -1,  7,  2,  0, $01, $00
+	dsprite -1,  7,  3,  0, $01, $00
+	dsprite -1,  7,  4,  0, $00, $20
+	dsprite  0,  0,  0,  0, $00, $40
+	dsprite  0,  0,  1,  0, $01, $40
+	dsprite  0,  0,  2,  0, $01, $40
+	dsprite  0,  0,  3,  0, $01, $40
+	dsprite  0,  0,  4,  0, $00, $60
+
+.OAMData_22
+	db 15
+	dsprite -3,  4, -2,  4, $00, $11
+	dsprite -3,  4, -1,  4, $01, $11
+	dsprite -3,  4,  0,  4, $02, $11
+	dsprite -2,  4, -2,  4, $03, $11
+	dsprite -2,  4, -1,  4, $04, $11
+	dsprite -2,  4,  0,  4, $05, $11
+	dsprite -1,  4, -2,  4, $06, $11
+	dsprite -1,  4, -1,  4, $07, $11
+	dsprite -1,  4,  0,  4, $08, $11
+	dsprite  0,  4, -2,  4, $09, $11
+	dsprite  0,  4, -1,  4, $0a, $11
+	dsprite  0,  4,  0,  4, $0b, $11
+	dsprite  1,  4, -2,  4, $0c, $11
+	dsprite  1,  4, -1,  4, $0d, $11
+	dsprite  1,  4,  0,  4, $0e, $11
+
+.OAMData_27
+	db 6
+	dsprite -2,  4, -2,  4, $00, $15
+	dsprite -2,  4, -1,  4, $02, $15
+	dsprite -2,  4,  0,  4, $00, $35
+	dsprite  0,  4, -2,  4, $04, $15
+	dsprite  0,  4, -1,  4, $06, $15
+	dsprite  0,  4,  0,  4, $04, $35
+
+.OAMData_29
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $06, $16
+	dsprite  0,  4, -1,  4, $08, $16
+	dsprite  0,  4,  0,  4, $0a, $16
+
+.OAMData_2a
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $0c, $16
+	dsprite  0,  4, -1,  4, $0e, $16
+	dsprite  0,  4,  0,  4, $10, $16
+
+.OAMData_2b
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $12, $16
+	dsprite  0,  4, -1,  4, $14, $16
+	dsprite  0,  4,  0,  4, $16, $16
+
+.OAMData_2c
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $18, $16
+	dsprite  0,  4, -1,  4, $1a, $16
+	dsprite  0,  4,  0,  4, $1c, $16
+
+.OAMData_2d
+	db 6
+	dsprite -2,  4, -2,  4, $1e, $16
+	dsprite -2,  4, -1,  4, $20, $16
+	dsprite -2,  4,  0,  4, $22, $16
+	dsprite  0,  4, -2,  4, $24, $16
+	dsprite  0,  4, -1,  4, $26, $16
+	dsprite  0,  4,  0,  4, $28, $16
+
+.OAMData_3c
+	db 3
+	dsprite -2,  4, -1,  4, $00, $10
+	dsprite -1,  4, -1,  4, $00, $10
+	dsprite  0,  4, -1,  4, $00, $10
+
+.OAMData_4b
+	db 6
+	dsprite  0,  0,  0,  0, $00, $00
+	dsprite  0,  0,  1,  0, $01, $00
+	dsprite  0,  0,  2,  0, $01, $00
+	dsprite  0,  0,  3,  0, $01, $00
+	dsprite  0,  0,  4,  0, $02, $00
+	dsprite  0,  0,  5,  0, $03, $00
+
+.OAMData_4c
+	db 4
+	dsprite  0,  0,  0,  0, $00, $00
+	dsprite  0,  0,  1,  0, $01, $00
+	dsprite  0,  0,  2,  0, $02, $00
+	dsprite  0,  0,  3,  0, $03, $00
+
+.OAMData_51
+	db 4
+	dsprite -1,  0, -2,  6, $00, $06
+	dsprite -1,  0,  0,  2, $01, $06
+	dsprite  0,  0, -2,  6, $02, $06
+	dsprite  0,  0,  0,  2, $03, $06
+
+.OAMData_52
+	db 4
+	dsprite -1,  0, -2,  4, $00, $06
+	dsprite -1,  0,  0,  4, $01, $06
+	dsprite  0,  0, -2,  4, $02, $06
+	dsprite  0,  0,  0,  4, $03, $06
+
+.OAMData_53
+	db 4
+	dsprite -1,  0, -2,  0, $00, $06
+	dsprite -1,  0,  1,  0, $01, $06
+	dsprite  0,  0, -2,  0, $02, $06
+	dsprite  0,  0,  1,  0, $03, $06
+
+.OAMData_56
+	db 19
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -3,  0, -2,  0, $06, $00
+	dsprite -1,  0, -2,  0, $08, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $0c, $00
+	dsprite -1,  0, -1,  0, $0e, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -3,  0,  0,  0, $12, $00
+	dsprite -1,  0,  0,  0, $14, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -3,  0,  1,  0, $18, $00
+	dsprite -1,  0,  1,  0, $1a, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_57
+	db 16
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $26, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $28, $00
+	dsprite -1,  0, -1,  0, $2a, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -1,  0,  0,  0, $2c, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_58
+	db 15
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $32, $00
+	dsprite -1,  0, -2,  0, $34, $00
+	dsprite  1,  0, -2,  0, $36, $00
+	dsprite -1,  0, -1,  0, $38, $00
+	dsprite  1,  0, -1,  0, $3a, $00
+	dsprite -1,  0,  0,  0, $3c, $00
+	dsprite  1,  0,  0,  0, $3e, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_59
+	db 17
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $40, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  3,  0, -2,  0, $44, $00
+	dsprite -1,  0, -1,  0, $46, $00
+	dsprite  1,  0, -1,  0, $48, $00
+	dsprite  3,  0, -1,  0, $4a, $00
+	dsprite -1,  0,  0,  0, $4c, $00
+	dsprite  1,  0,  0,  0, $4e, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_5a
+	db 17
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $50, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $52, $00
+	dsprite -1,  0, -1,  0, $54, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -3,  0,  0,  0, $56, $00
+	dsprite -1,  0,  0,  0, $2e, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_1e
+	db 1
+	dsprite -1,  4, -1,  4, $00, $11
+
+.OAMData_5c
+	db 12
+	dsprite  0,  0,  0,  0, $30, $00
+	dsprite  0,  0,  1,  0, $31, $00
+	dsprite  0,  0,  2,  0, $31, $00
+	dsprite  0,  0,  3,  0, $31, $00
+	dsprite  0,  0,  4,  0, $31, $00
+	dsprite  0,  0,  5,  0, $32, $00
+	dsprite  1,  0,  0,  0, $33, $00
+	dsprite  1,  0,  1,  0, $34, $00
+	dsprite  1,  0,  2,  0, $34, $00
+	dsprite  1,  0,  3,  0, $34, $00
+	dsprite  1,  0,  4,  0, $34, $00
+	dsprite  1,  0,  5,  0, $35, $00
+
+.OAMData_5d
+	db 1
+	dsprite  0,  0,  0,  0, $ed, $00
+
+.OAMData_5e
+	db 4
+	dsprite -1,  7, -1,  7, $30, $00
+	dsprite -1,  7,  0,  1, $32, $00
+	dsprite  0,  1, -1,  7, $33, $00
+	dsprite  0,  1,  0,  1, $35, $00
+
+.OAMData_5f
+	db 8
+	dsprite -1,  7, -1,  7, $30, $00
+	dsprite -1,  7,  0,  4, $31, $00
+	dsprite -1,  7,  1,  4, $31, $00
+	dsprite -1,  7,  2,  1, $32, $00
+	dsprite  0,  1, -1,  7, $33, $00
+	dsprite  0,  1,  0,  4, $34, $00
+	dsprite  0,  1,  1,  4, $34, $00
+	dsprite  0,  1,  2,  1, $35, $00
+
+.OAMData_60
+	db 1
+	dsprite  0,  0,  0,  0, $34, $00
+
+.OAMData_61
+	db 2
+	dsprite  0,  0,  0,  0, $30, $00
+	dsprite  1,  0,  0,  0, $33, $00
+
+.OAMData_62
+	db 2
+	dsprite  0,  0,  0,  0, $32, $00
+	dsprite  1,  0,  0,  0, $35, $00
+
+.OAMData_63
+	db 4
+	dsprite -1,  0, -1,  0, $00, $01
+	dsprite -1,  0,  0,  0, $01, $01
+	dsprite  0,  0, -1,  0, $02, $01
+	dsprite  0,  0,  0,  0, $03, $01
+
+.OAMData_65
+	db 4
+	dsprite -1,  0, -1,  0, $00, $81
+	dsprite -1,  0,  0,  0, $01, $81
+	dsprite  0,  0, -1,  0, $02, $81
+	dsprite  0,  0,  0,  0, $03, $81
+
+.OAMData_67
+	db 1
+	dsprite -1,  4, -1,  4, $00, $02
+
+.OAMData_6c
+	db 4
+	dsprite -2,  0, -1,  4, $00, $03
+	dsprite -1,  0, -1,  4, $01, $03
+	dsprite  0,  0, -1,  4, $02, $03
+	dsprite  1,  0, -1,  4, $03, $03
+
+.OAMData_6d
+	db 4
+	dsprite -2,  0, -1,  4, $03, $44
+	dsprite -1,  0, -1,  4, $02, $44
+	dsprite  0,  0, -1,  4, $01, $44
+	dsprite  1,  0, -1,  4, $00, $44
+
+.OAMData_69
+	db 4
+	dsprite -1,  0, -1,  0, $00, $01
+	dsprite -1,  0,  0,  0, $00, $21
+	dsprite  0,  0, -1,  0, $00, $41
+	dsprite  0,  0,  0,  0, $00, $61
+
+.OAMData_6a
+	db 8
+	dsprite -2,  4, -2,  4, $00, $01
+	dsprite -2,  4, -1,  4, $01, $01
+	dsprite -2,  4,  0,  4, $00, $21
+	dsprite -1,  4, -2,  4, $02, $01
+	dsprite -1,  4,  0,  4, $02, $21
+	dsprite  0,  4, -2,  4, $00, $41
+	dsprite  0,  4, -1,  4, $01, $41
+	dsprite  0,  4,  0,  4, $00, $61
+
+.OAMData_6b
+	db 12
+	dsprite -2,  0, -2,  0, $00, $01
+	dsprite -2,  0, -1,  0, $01, $01
+	dsprite -1,  0, -2,  0, $02, $01
+	dsprite -2,  0,  0,  0, $01, $21
+	dsprite -2,  0,  1,  0, $00, $21
+	dsprite -1,  0,  1,  0, $02, $21
+	dsprite  0,  0, -2,  0, $02, $41
+	dsprite  1,  0, -2,  0, $00, $41
+	dsprite  1,  0, -1,  0, $01, $41
+	dsprite  0,  0,  1,  0, $02, $61
+	dsprite  1,  0,  0,  0, $01, $61
+	dsprite  1,  0,  1,  0, $00, $61
+
+.OAMData_6e
+	db 36
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -3,  0,  2,  0, $06, $00
+	dsprite -3,  0,  3,  0, $07, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite -1,  0,  3,  0, $27, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  0,  0,  2,  0, $36, $00
+	dsprite  1,  0, -4,  0, $40, $00
+	dsprite  1,  0, -3,  0, $41, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  1,  0,  2,  0, $46, $00
+	dsprite  1,  0,  3,  0, $47, $00
+	dsprite  2,  0, -4,  0, $50, $00
+	dsprite  2,  0, -3,  0, $51, $00
+	dsprite  2,  0,  3,  0, $57, $00
+
+.OAMData_6f
+	db 28
+	dsprite -3,  0,  0,  0, $04, $00
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -3,  0,  2,  0, $06, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -1,  0, $53, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_70
+	db 30
+	dsprite -3,  0,  0,  0, $04, $00
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -2,  0, $52, $00
+	dsprite  2,  0, -1,  0, $53, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_71
+	db 31
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite -1,  0,  3,  0, $27, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  0,  0,  2,  0, $36, $00
+	dsprite  1,  0, -3,  0, $41, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -3,  0, $51, $00
+	dsprite  2,  0, -2,  0, $52, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_72
+	db 25
+	dsprite -3,  4, -3,  4, $00, $09
+	dsprite -3,  4, -2,  4, $01, $09
+	dsprite -3,  4, -1,  4, $02, $09
+	dsprite -3,  4,  0,  4, $03, $09
+	dsprite -3,  4,  1,  4, $04, $09
+	dsprite -2,  4, -3,  4, $10, $09
+	dsprite -2,  4, -2,  4, $11, $09
+	dsprite -2,  4, -1,  4, $12, $09
+	dsprite -2,  4,  0,  4, $13, $09
+	dsprite -2,  4,  1,  4, $14, $09
+	dsprite -1,  4, -3,  4, $20, $09
+	dsprite -1,  4, -2,  4, $21, $09
+	dsprite -1,  4, -1,  4, $22, $09
+	dsprite -1,  4,  0,  4, $23, $09
+	dsprite -1,  4,  1,  4, $24, $09
+	dsprite  0,  4, -3,  4, $30, $09
+	dsprite  0,  4, -2,  4, $31, $09
+	dsprite  0,  4, -1,  4, $32, $09
+	dsprite  0,  4,  0,  4, $33, $09
+	dsprite  0,  4,  1,  4, $34, $09
+	dsprite  1,  4, -3,  4, $40, $09
+	dsprite  1,  4, -2,  4, $41, $09
+	dsprite  1,  4, -1,  4, $42, $09
+	dsprite  1,  4,  0,  4, $43, $09
+	dsprite  1,  4,  1,  4, $44, $09
+
+.OAMData_75
+	db 16
+	dsprite -2,  0, -3,  4, $00, $0a
+	dsprite -2,  0, -2,  4, $01, $0a
+	dsprite -2,  0, -1,  4, $02, $0a
+	dsprite -2,  0,  0,  4, $03, $0a
+	dsprite -1,  0, -3,  4, $04, $0a
+	dsprite -1,  0, -2,  4, $05, $0a
+	dsprite -1,  0, -1,  4, $06, $0a
+	dsprite -1,  0,  0,  4, $07, $0a
+	dsprite  0,  0, -3,  4, $08, $0a
+	dsprite  0,  0, -2,  4, $09, $0a
+	dsprite  0,  0, -1,  4, $0a, $0a
+	dsprite  0,  0,  0,  4, $0b, $0a
+	dsprite  1,  0, -3,  4, $0c, $0a
+	dsprite  1,  0, -2,  4, $0d, $0a
+	dsprite  1,  0, -1,  4, $0e, $0a
+	dsprite  1,  0,  0,  4, $0f, $0a
+
+.OAMData_76
+	db 1
+	dsprite -1,  4, -1,  4, $00, $00
+
+.OAMData_77
+	db 3
+	dsprite  0,  0, -1,  0, $00, $00
+	dsprite -1,  0, -1,  0, $01, $00
+	dsprite -1,  0,  0,  0, $02, $00
+
+.OAMData_78
+	db 7
+	dsprite  1,  0, -2,  0, $00, $00
+	dsprite  0,  0, -2,  0, $01, $00
+	dsprite -1,  0, -2,  0, $02, $00
+	dsprite -1,  0, -1,  0, $03, $00
+	dsprite -2,  0, -1,  0, $04, $00
+	dsprite -2,  0,  0,  0, $05, $00
+	dsprite -2,  0,  1,  0, $06, $00
+
+.OAMData_7a
+	db 8
+	dsprite -1,  0, -2,  0, $00, $00
+	dsprite -1,  0, -1,  0, $01, $00
+	dsprite -1,  0,  0,  0, $01, $20
+	dsprite -1,  0,  1,  0, $00, $20
+	dsprite  0,  0, -2,  0, $00, $40
+	dsprite  0,  0, -1,  0, $01, $40
+	dsprite  0,  0,  0,  0, $01, $60
+	dsprite  0,  0,  1,  0, $00, $60
+
+.OAMData_7b
+	db 12
+	dsprite -3,  0, -1,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -1,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $00, $20
+	dsprite -2,  0,  0,  0, $01, $20
+	dsprite -1,  0,  0,  0, $02, $20
+	dsprite  0,  0, -1,  0, $02, $40
+	dsprite  1,  0, -1,  0, $01, $40
+	dsprite  2,  0, -1,  0, $00, $40
+	dsprite  0,  0,  0,  0, $02, $60
+	dsprite  1,  0,  0,  0, $01, $60
+	dsprite  2,  0,  0,  0, $00, $60
+
+.OAMData_7c
+	db 20
+	dsprite -3,  4, -2,  0, $00, $00
+	dsprite -3,  4, -1,  0, $01, $00
+	dsprite -3,  4,  0,  0, $02, $00
+	dsprite -3,  4,  1,  0, $03, $00
+	dsprite -2,  4, -2,  0, $04, $00
+	dsprite -2,  4, -1,  0, $05, $00
+	dsprite -2,  4,  0,  0, $06, $00
+	dsprite -2,  4,  1,  0, $07, $00
+	dsprite -1,  4, -2,  0, $08, $00
+	dsprite -1,  4, -1,  0, $09, $00
+	dsprite -1,  4,  0,  0, $0a, $00
+	dsprite -1,  4,  1,  0, $0b, $00
+	dsprite  0,  4, -2,  0, $0c, $00
+	dsprite  0,  4, -1,  0, $0d, $00
+	dsprite  0,  4,  0,  0, $0e, $00
+	dsprite  0,  4,  1,  0, $0f, $00
+	dsprite  1,  4, -2,  0, $10, $00
+	dsprite  1,  4, -1,  0, $11, $00
+	dsprite  1,  4,  0,  0, $12, $00
+	dsprite  1,  4,  1,  0, $13, $00
+
+.OAMData_7e
+	db 20
+	dsprite  0,  0,   1,  0, $00, $81
+	dsprite  1,  0,   2,  0, $00, $81
+	dsprite  2,  0,   3,  0, $00, $81
+	dsprite  3,  0,   4,  0, $00, $81
+	dsprite  4,  0,   5,  0, $00, $81
+	dsprite  3,  0,   6,  0, $00, $81
+	dsprite  2,  0,   7,  0, $00, $81
+	dsprite  1,  0,   8,  0, $00, $81
+	dsprite  0,  0,   9,  0, $00, $81
+	dsprite  1,  0,  10,  0, $00, $81
+	dsprite  2,  0,  11,  0, $00, $81
+	dsprite  3,  0,  12,  0, $00, $81
+	dsprite  4,  0,  13,  0, $00, $81
+	dsprite  3,  0,  14,  0, $00, $81
+	dsprite  2,  0,  15,  0, $00, $81
+	dsprite  1,  0,  16,  0, $00, $81
+	dsprite  0,  0, -15,  0, $00, $81
+	dsprite  1,  0, -14,  0, $00, $81
+	dsprite  2,  0, -13,  0, $00, $81
+	dsprite  3,  0, -12,  0, $00, $81
+
+.OAMData_7f
+	db 4
+	dsprite -1,  0, -1,  0, $00, $02
+	dsprite -1,  0,  0,  0, $01, $02
+	dsprite  0,  0, -1,  0, $02, $02
+	dsprite  0,  0,  0,  0, $03, $02
+
+.OAMData_81
+	db 9
+	dsprite -2,  0, -2,  4, $00, $01
+	dsprite -2,  0, -1,  4, $01, $01
+	dsprite -2,  0,  0,  4, $02, $01
+	dsprite -1,  0, -2,  4, $10, $01
+	dsprite -1,  0, -1,  4, $11, $01
+	dsprite -1,  0,  0,  4, $12, $01
+	dsprite  0,  0, -2,  4, $20, $01
+	dsprite  0,  0, -1,  4, $21, $01
+	dsprite  0,  0,  0,  4, $22, $01
+
+.OAMData_84
+	db 24
+	dsprite -5,  0, -2,  4, $00, $01
+	dsprite -5,  0, -1,  4, $01, $01
+	dsprite -5,  0,  0,  4, $02, $01
+	dsprite -5,  0,  1,  4, $03, $01
+	dsprite -4,  0, -2,  4, $10, $01
+	dsprite -4,  0, -1,  4, $11, $01
+	dsprite -4,  0,  0,  4, $12, $01
+	dsprite -4,  0,  1,  4, $13, $01
+	dsprite -3,  0, -2,  4, $20, $01
+	dsprite -3,  0, -1,  4, $21, $01
+	dsprite -3,  0,  0,  4, $22, $01
+	dsprite -3,  0,  1,  4, $23, $01
+	dsprite -2,  0, -2,  4, $30, $01
+	dsprite -2,  0, -1,  4, $31, $01
+	dsprite -2,  0,  0,  4, $32, $01
+	dsprite -2,  0,  1,  4, $33, $01
+	dsprite -1,  0, -2,  4, $40, $01
+	dsprite -1,  0, -1,  4, $41, $01
+	dsprite -1,  0,  0,  4, $42, $01
+	dsprite -1,  0,  1,  4, $43, $01
+	dsprite  0,  0, -2,  4, $50, $01
+	dsprite  0,  0, -1,  4, $51, $01
+	dsprite  0,  0,  0,  4, $52, $01
+	dsprite  0,  0,  1,  4, $53, $01
+; 8e706
+BrokenStdGFXPointers: ; Broken 2bpp pointers
+	dbbw $80, $01, .deleted ; 128-tile 2bpp at 1:672a (inside Multiply)
+	dbbw $80, $01, .deleted
+	dbbw $80, $01, .deleted
+	dbbw $80, $01, .deleted
+	dbbw $10, $37, .deleted ; 16-tile 2bpp at 37:672a (within Tileset11GFX)
+	dbbw $10, $11, .deleted ; 16-tile 2bpp at 11:672a (empty data)
+	dbbw $10, $39, .deleted ; 16-tile 2bpp at 39:672a (empty data)
+	dbbw $10, $24, .deleted ; 16-tile 2bpp at 24:672a (inside Function926f7)
+	dbbw $10, $21, .deleted ; 16-tile 2bpp at 21:672a (inside Function8671c)
+
+.deleted
+; 8e72a (23:672a)
--- /dev/null
+++ b/engine/anim_hp_bar.asm
@@ -1,0 +1,430 @@
+_AnimateHPBar: ; d627
+	call Functiond65f
+	jr c, .do_player
+	call Functiond670
+.enemy_loop
+	push bc
+	push hl
+	call Functiond6e2
+	pop hl
+	pop bc
+	push af
+	push bc
+	push hl
+	call Functiond730
+	call Functiond7c9
+	pop hl
+	pop bc
+	pop af
+	jr nc, .enemy_loop
+	ret
+
+.do_player
+	call Functiond670
+.player_loop
+	push bc
+	push hl
+	call Functiond6f5
+	pop hl
+	pop bc
+	ret c
+	push af
+	push bc
+	push hl
+	call Functiond749
+	call Functiond7c9
+	pop hl
+	pop bc
+	pop af
+	jr nc, .player_loop
+	ret
+; d65f
+
+Functiond65f: ; d65f
+	ld a, [Buffer2]
+	and a
+	jr nz, .player
+	ld a, [Buffer1]
+	cp 6 * 8
+	jr nc, .player
+	and a
+	ret
+
+.player
+	scf
+	ret
+; d670
+
+Functiond670: ; d670
+; Buffer1-2: Max HP
+; Buffer3-4: Old HP
+; Buffer5-6: New HP
+	push hl
+	ld hl, Buffer1
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	pop hl
+	call ComputeHPBarPixels
+	ld a, e
+	ld [wd1f1], a
+
+	ld a, [Buffer5]
+	ld c, a
+	ld a, [Buffer6]
+	ld b, a
+	ld a, [Buffer1]
+	ld e, a
+	ld a, [Buffer2]
+	ld d, a
+	call ComputeHPBarPixels
+	ld a, e
+	ld [wd1f2], a
+
+	push hl
+	ld hl, Buffer3
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	pop hl
+	ld a, e
+	sub c
+	ld e, a
+	ld a, d
+	sbc b
+	ld d, a
+	jr c, .asm_d6c1
+	ld a, [Buffer3]
+	ld [wd1f5], a
+	ld a, [Buffer5]
+	ld [wd1f6], a
+	ld bc, 1
+	jr .asm_d6d9
+
+.asm_d6c1
+	ld a, [Buffer3]
+	ld [wd1f6], a
+	ld a, [Buffer5]
+	ld [wd1f5], a
+	ld a, e
+	xor $ff
+	inc a
+	ld e, a
+	ld a, d
+	xor $ff
+	ld d, a
+	ld bc, rIE
+.asm_d6d9
+	ld a, d
+	ld [wd1f3], a
+	ld a, e
+	ld [wd1f4], a
+	ret
+; d6e2
+
+Functiond6e2: ; d6e2
+	ld hl, wd1f1
+	ld a, [wd1f2]
+	cp [hl]
+	jr nz, .asm_d6ed
+	scf
+	ret
+
+.asm_d6ed
+	ld a, c
+	add [hl]
+	ld [hl], a
+	call Functiond839
+	and a
+	ret
+; d6f5
+
+Functiond6f5: ; d6f5
+.asm_d6f5
+	ld hl, Buffer3
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, e
+	cp [hl]
+	jr nz, .asm_d707
+	inc hl
+	ld a, d
+	cp [hl]
+	jr nz, .asm_d707
+	scf
+	ret
+
+.asm_d707
+	ld l, e
+	ld h, d
+	add hl, bc
+	ld a, l
+	ld [Buffer3], a
+	ld a, h
+	ld [wd1ed], a
+	push hl
+	push de
+	push bc
+	ld hl, Buffer1
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	call ComputeHPBarPixels
+	pop bc
+	pop de
+	pop hl
+	ld a, e
+	ld hl, wd1f1
+	cp [hl]
+	jr z, .asm_d6f5
+	ld [hl], a
+	and a
+	ret
+; d730
+
+Functiond730: ; d730
+	call Functiond784
+	ld d, $6
+	ld a, [wWhichHPBar]
+	and $1
+	ld b, a
+	ld a, [wd1f1]
+	ld e, a
+	ld c, a
+	push de
+	call Functiond771
+	pop de
+	call Functiond7b4
+	ret
+; d749
+
+Functiond749: ; d749
+	call Functiond784
+	ld a, [Buffer3]
+	ld c, a
+	ld a, [wd1ed]
+	ld b, a
+	ld a, [Buffer1]
+	ld e, a
+	ld a, [Buffer2]
+	ld d, a
+	call ComputeHPBarPixels
+	ld c, e
+	ld d, $6
+	ld a, [wWhichHPBar]
+	and $1
+	ld b, a
+	push de
+	call Functiond771
+	pop de
+	call Functiond7b4
+	ret
+; d771
+
+Functiond771: ; d771
+	ld a, [wWhichHPBar]
+	cp $2
+	jr nz, .skip
+	ld a, $28
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+.skip
+	call DrawBattleHPBar
+	ret
+; d784
+
+Functiond784: ; d784
+	ld a, [wWhichHPBar]
+	and a
+	ret z
+	cp $1
+	jr z, .load_15
+	ld de, $16
+	jr .loaded_de
+
+.load_15
+	ld de, $15
+.loaded_de
+	push hl
+	add hl, de
+	ld a, " "
+rept 2
+	ld [hli], a
+endr
+	ld [hld], a
+	dec hl
+	ld a, [Buffer3]
+	ld [StringBuffer2 + 1], a
+	ld a, [wd1ed]
+	ld [StringBuffer2], a
+	ld de, StringBuffer2
+	lb bc, 2, 3
+	call PrintNum
+	pop hl
+	ret
+; d7b4
+
+Functiond7b4: ; d7b4
+	ld a, [hCGB]
+	and a
+	ret z
+	ld hl, wd1f0
+	call SetHPPal
+	ld a, [wd1f0]
+	ld c, a
+	callba ApplyHPBarPals
+	ret
+; d7c9
+
+Functiond7c9: ; d7c9
+	ld a, [hCGB]
+	and a
+	jr nz, .cgb
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.cgb
+	ld a, [wWhichHPBar]
+	and a
+	jr z, .load_0
+	cp $1
+	jr z, .load_1
+	ld a, [CurPartyMon]
+	cp $3
+	jr nc, .c_is_1
+	ld c, $0
+	jr .c_is_0
+
+.c_is_1
+	ld c, $1
+.c_is_0
+	push af
+	cp $2
+	jr z, .skip_delay
+	cp $5
+	jr z, .skip_delay
+	ld a, $2
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+.skip_delay
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	pop af
+	cp $2
+	jr z, .two_frames
+	cp $5
+	jr z, .two_frames
+	ret
+
+.two_frames
+	inc c
+	ld a, $2
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ret
+
+.load_0
+	ld c, $0
+	jr .finish
+
+.load_1
+	ld c, $1
+.finish
+	call DelayFrame
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ret
+; d839
+
+Functiond839: ; d839
+	ld a, [Buffer1]
+	ld c, a
+	ld b, 0
+	ld hl, 0
+	ld a, [wd1f1]
+	cp 6 * 8
+	jr nc, .coppy_buffer
+	and a
+	jr z, .return_zero
+	call AddNTimes
+	ld b, 0
+.loop
+	ld a, l
+	sub 6 * 8
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	jr c, .done
+	inc b
+	jr .loop
+
+.done
+	push bc
+	ld bc, $80
+	add hl, bc
+	pop bc
+	ld a, l
+	sub 6 * 8
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	jr c, .no_carry
+	inc b
+.no_carry
+	ld a, [wd1f5]
+	cp b
+	jr nc, .finish
+	ld a, [wd1f6]
+	cp b
+	jr c, .finish
+	ld a, b
+.finish
+	ld [Buffer3], a
+	ret
+
+.return_zero
+	xor a
+	ld [Buffer3], a
+	ret
+
+.coppy_buffer
+	ld a, [Buffer1]
+	ld [Buffer3], a
+	ret
+; d88c
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -1,11 +1,11 @@
 Predef_StartBattle: ; 8c20f
 	call Function8c26d
 	ld a, [rBGP]
-	ld [wcfc7], a
+	ld [wBGP], a
 	ld a, [rOBP0]
-	ld [wcfc8], a
+	ld [wOBP0], a
 	ld a, [rOBP1]
-	ld [wcfc9], a
+	ld [wOBP1], a
 	call DelayFrame
 	ld hl, hVBlank
 	ld a, [hl]
@@ -35,13 +35,13 @@
 	ld [rSVBK], a
 
 	ld a, %11111111
-	ld [wcfc7], a
+	ld [wBGP], a
 	call DmgToCgbBGPals
 	call DelayFrame
 	xor a
-	ld [hLCDStatCustom], a
-	ld [hLCDStatCustom + 1], a
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC6], a
+	ld [hFFC7], a
+	ld [hFFC8], a
 	ld [hSCY], a
 
 	ld a, $1
@@ -74,9 +74,8 @@
 	ld [hBGMapMode], a
 	ld hl, wJumptableIndex
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 	call WipeLYOverrides
 	ret
@@ -120,7 +119,7 @@
 	ld a, $6
 	ld [rSVBK], a
 	push hl
-	ld hl, w6_d000
+	ld hl, wDecompressScratch
 	ld bc, $28 * $10
 
 .loop
@@ -132,7 +131,7 @@
 	jr nz, .loop
 
 	pop hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld b, BANK(Function8c2cf) ; BANK(@)
 	ld c, $28
 	call Request2bpp
@@ -146,20 +145,10 @@
 
 
 FlashyTransitionToBattle: ; 8c314
-	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]
+	jumptable .dw, wJumptableIndex
 ; 8c323
 
-.jumptable: ; 8c323 (23:4323)
+.dw: ; 8c323 (23:4323)
 	dw StartTrainerBattle_DetermineWhichAnimation ; 00
 
 	; Animation 1: cave
@@ -264,8 +253,8 @@
 	ret
 
 .DoFlashAnimation: ; 8c3b3 (23:43b3)
-	ld a, [wd847]
-	cp -1
+	ld a, [wTimeOfDayPalset]
+	cp %11111111 ; dark cave
 	jr z, .done
 	ld hl, wcf64
 	ld a, [hl]
@@ -278,7 +267,7 @@
 	ld a, [hl]
 	cp %00000001
 	jr z, .done
-	ld [wcfc7], a
+	ld [wBGP], a
 	call DmgToCgbBGPals
 	and a
 	ret
@@ -314,11 +303,11 @@
 	call StartTrainerBattle_NextScene
 
 	ld a, $43
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	xor a
-	ld [hLCDStatCustom + 1], a
+	ld [hFFC7], a
 	ld a, $90
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC8], a
 	xor a
 	ld [wcf64], a
 	ld [wcf65], a
@@ -784,9 +773,8 @@
 	ld a, d
 	ld d, 0
 	ld hl, .sinewave
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -13,19 +13,19 @@
 	ld [hInMenu], a
 	xor a
 	ld [hMapAnims], a
-	call Functione2963
+	call BillsPC_InitRAM
 	xor a
-	ld [wcb2e], a
+	ld [wBillsPC_LoadedBox], a
 	call DelayFrame
-.asm_e23b4
+.loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_e23c6
-	call Functione23d5
+	jr nz, .done
+	call .RunJumptable
 	call DelayFrame
-	jr .asm_e23b4
-.asm_e23c6
+	jr .loop
+.done
 	call ClearSprites
 	pop af
 	ld [hInMenu], a
@@ -35,56 +35,57 @@
 	ld [Options], a
 	ret
 
-Functione23d5: ; e23d5 (38:63d5)
+.RunJumptable: ; e23d5 (38:63d5)
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e23df
-	call Functione33df
+	ld hl, .Jumptable
+	call BillsPC_Jumptable
 	jp [hl]
 
-Jumptable_e23df: ; e23df (38:63df)
-	dw Functione23e9
-	dw Functione241a
-	dw Functione245d
-	dw Functione247d
-	dw Functione2992
+.Jumptable: ; e23df (38:63df)
+	
+	dw .Init
+	dw .HandleJoypad
+	dw .WhatsUp
+	dw .Submenu
+	dw BillsPC_EndJumptableLoop
 
 
-Functione23e9: ; e23e9 (38:63e9)
+.Init: ; e23e9 (38:63e9)
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
+	call CopyBoxmonSpecies
+	call BillsPC_BoxName
 	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
+	ld [wBillsPC_NumMonsOnScreen], a
+	call BillsPC_RefreshTextboxes
 	call PCMonInfo
 	ld a, $ff
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	call WaitBGMap
-	call Functione2e01
-	call Functione298d
+	call BillsPC_UpdateSelectionCursor
+	call BillsPC_IncrementJumptableIndex
 	ret
 
-Functione241a: ; e241a (38:641a)
+.HandleJoypad: ; e241a (38:641a)
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and B_BUTTON
-	jr nz, .asm_e2457
+	jr nz, .b_button
 	ld a, [hl]
 	and A_BUTTON
-	jr nz, .asm_e2443
-	call Functione29b5
+	jr nz, .a_button
+	call Withdraw_UpDown
 	and a
 	ret z
-	call Functione2e01
+	call BillsPC_UpdateSelectionCursor
 	xor a
 	ld [hBGMapMode], a
-	call Functione2c2c
+	call BillsPC_RefreshTextboxes
 	call PCMonInfo
 	ld a, $1
 	ld [hBGMapMode], a
@@ -91,50 +92,51 @@
 	call DelayFrame
 	call DelayFrame
 	ret
-.asm_e2443
-	call Functione2def
+
+.a_button
+	call BillsPC_GetSelectedPokemonSpecies
 	and a
 	ret z
-	cp $ff
-	jr z, .asm_e2457
+	cp -1
+	jr z, .b_button
 	ld a, $2
 	ld [wJumptableIndex], a
 	ret
 ; e2452 (38:6452)
 
-.asm_e2452
+.go_back
 	ld hl, wJumptableIndex
 	dec [hl]
 	ret
 
-.asm_e2457
+.b_button
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
 
-Functione245d: ; e245d (38:645d)
+.WhatsUp: ; e245d (38:645d)
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
+	ld [wMenuCursorY], a
+	call BillsPC_IncrementJumptableIndex
 	ret
 
-Functione247d: ; e247d (38:647d)
+.Submenu: ; e247d (38:647d)
 	ld hl, BillsPCDepositMenuDataHeader
 	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
+	ld a, [wMenuCursorY]
+	call StoreTo_wMenuCursorBuffer
+	call VerticalMenu
 	jp c, BillsPCDepositFuncCancel
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	and $3
 	ld e, a
@@ -149,6 +151,7 @@
 	jp [hl]
 
 BillsPCDepositJumptable: ; e24a1 (38:64a1)
+	
 	dw BillsPCDepositFuncDeposit ; Deposit Pokemon
 	dw BillsPCDepositFuncStats ; Pokemon Stats
 	dw BillsPCDepositFuncRelease ; Release Pokemon
@@ -156,69 +159,71 @@
 
 
 BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
-	call Functione2f18
+	call BillsPC_CheckMail_PreventBlackout
 	jp c, BillsPCDepositFuncCancel
-	call Functione307c
-	jr c, .no_overflow_31
+	call DepositPokemon
+	jr c, .box_full
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	ret
-.no_overflow_31
+
+.box_full
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ret
 
 BillsPCDepositFuncStats: ; e24c8 (38:64c8)
 	call LoadStandardMenuDataHeader
-	call Functione2f7e
+	call BillsPC_StatsScreen
 	call ExitMenu
 	call PCMonInfo
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ret
 
 BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
-	call Functione2f18
+	call BillsPC_CheckMail_PreventBlackout
 	jr c, BillsPCDepositFuncCancel
-	call Functione2f5f
+	call BillsPC_IsMonAnEgg
 	jr c, BillsPCDepositFuncCancel
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
 	ld de, PCString_ReleasePKMN
-	call Functione2a6e
+	call BillsPC_PlaceString
 	call LoadStandardMenuDataHeader
 	lb bc, 14, 11
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	call ExitMenu
 	and a
-	jr nz, .asm_e252c
-	ld a, [wcb2b]
-	ld hl, wcb2a
+	jr nz, .failed_release
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	call Functione3180
+	callba RemoveMonFromPartyOrBox
+	call ReleasePKMN_ByePKMN
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	pop af
 	ret
-.asm_e252c
+
+.failed_release
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ret
 
 BillsPCDepositFuncCancel: ; e2537 (38:6537)
@@ -231,11 +236,11 @@
 	db $40 ; flags
 	db 04, 09 ; start coords
 	db 13, 19 ; end coords
-	dw BillsPCDepositMenuData
+	dw .MenuData2
 	db 1 ; default option
 ; 0xe2545
 
-BillsPCDepositMenuData: ; 0xe2545 (38:6545)
+.MenuData2: ; 0xe2545 (38:6545)
 	db $80 ; flags
 	db 4 ; items
 	db "DEPOSIT@"
@@ -244,18 +249,19 @@
 	db "CANCEL@"
 ; 0xe2564 (38:6564)
 
-Functione2564: ; e2564
+BillsPC_ClearThreeBoxes: ; e2564
+; unreferenced
 	hlcoord 0, 0
-	ld b, $4
-	ld c, $8
+	ld b,  4
+	ld c,  8
 	call ClearBox
 	hlcoord 0, 4
-	ld b, $a
-	ld c, $9
+	ld b, 10
+	ld c,  9
 	call ClearBox
 	hlcoord 0, 14
-	ld b, $2
-	ld c, $8
+	ld b,  2
+	ld c,  8
 	call ClearBox
 	ret
 ; e2583
@@ -275,19 +281,19 @@
 	ld [hInMenu], a
 	xor a
 	ld [hMapAnims], a
-	call Functione2963
-	ld a, $f
-	ld [wcb2e], a
+	call BillsPC_InitRAM
+	ld a, NUM_BOXES + 1
+	ld [wBillsPC_LoadedBox], a
 	call DelayFrame
-.asm_e25a7
+.loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .no_overflow_49
-	call Functione25c8
+	jr nz, .done
+	call .RunJumptable
 	call DelayFrame
-	jr .asm_e25a7
-.no_overflow_49
+	jr .loop
+.done
 	call ClearSprites
 	pop af
 	ld [hInMenu], a
@@ -297,58 +303,59 @@
 	ld [Options], a
 	ret
 
-Functione25c8: ; e25c8 (38:65c8)
+.RunJumptable: ; e25c8 (38:65c8)
 	ld a, [wJumptableIndex]
-	ld hl, .jumptable
-	call Functione33df
+	ld hl, .Jumptable
+	call BillsPC_Jumptable
 	jp [hl]
 
-.jumptable: ; e25d2 (38:65d2)
-	dw Functione25dc
-	dw Functione2612
-	dw Functione2655
+.Jumptable: ; e25d2 (38:65d2)
+	
+	dw .Init
+	dw .Joypad
+	dw .PrepSubmenu
 	dw BillsPC_Withdraw
-	dw Functione2992
+	dw BillsPC_EndJumptableLoop
 
 
-Functione25dc: ; e25dc (38:65dc)
-	ld a, $f
-	ld [wcb2e], a
+.Init: ; e25dc (38:65dc)
+	ld a, NUM_BOXES + 1
+	ld [wBillsPC_LoadedBox], a
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
+	call CopyBoxmonSpecies
+	call BillsPC_BoxName
 	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
+	ld [wBillsPC_NumMonsOnScreen], a
+	call BillsPC_RefreshTextboxes
 	call PCMonInfo
 	ld a, $ff
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	call WaitBGMap
-	call Functione2e01
-	call Functione298d
+	call BillsPC_UpdateSelectionCursor
+	call BillsPC_IncrementJumptableIndex
 	ret
 
-Functione2612: ; e2612 (38:6612)
+.Joypad: ; e2612 (38:6612)
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and B_BUTTON
-	jr nz, .asm_e264f
+	jr nz, .b_button
 	ld a, [hl]
 	and A_BUTTON
-	jr nz, .asm_e263b
-	call Functione29b5
+	jr nz, .a_button
+	call Withdraw_UpDown
 	and a
 	ret z
-	call Functione2e01
+	call BillsPC_UpdateSelectionCursor
 	xor a
 	ld [hBGMapMode], a
-	call Functione2c2c
+	call BillsPC_RefreshTextboxes
 	call PCMonInfo
 	ld a, $1
 	ld [hBGMapMode], a
@@ -355,56 +362,55 @@
 	call DelayFrame
 	call DelayFrame
 	ret
-.asm_e263b
-	call Functione2def
+.a_button
+	call BillsPC_GetSelectedPokemonSpecies
 	and a
 	ret z
-	cp $ff
-	jr z, .asm_e264f
+	cp -1
+	jr z, .b_button
 	ld a, $2
 	ld [wJumptableIndex], a
-	ret
-; e264a (38:664a)
+	ret ; e264a (38:664a)
 
-.asm_e264a
+.unused
 	ld hl, wJumptableIndex
 	dec [hl]
 	ret
 
-.asm_e264f
+.b_button
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
 ; e2655
 
-Functione2655: ; e2655 (38:6655)
+.PrepSubmenu: ; e2655 (38:6655)
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
+	ld [wMenuCursorY], a
+	call BillsPC_IncrementJumptableIndex
 	ret
 
 BillsPC_Withdraw: ; e2675 (38:6675)
 	ld hl, .MenuDataHeader
 	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
+	ld a, [wMenuCursorY]
+	call StoreTo_wMenuCursorBuffer
+	call VerticalMenu
 	jp c, .cancel
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -413,7 +419,7 @@
 	ld l, a
 	jp [hl]
 
-.jumptable: ; e2699 (38:6699) #mark
+.dw: ; e2699 (38:6699) #mark
 	dw .withdraw ; Withdraw
 	dw .stats ; Stats
 	dw .release ; Release
@@ -421,7 +427,7 @@
 
 
 .withdraw: ; e26a1 (38:66a1)
-	call Functione2f18
+	call BillsPC_CheckMail_PreventBlackout
 	jp c, .cancel
 	call TryWithdrawPokemon
 	jr c, .FailedWithdraw
@@ -428,60 +434,60 @@
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	ret
 .FailedWithdraw
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ret
 
 .stats: ; e26c0 (38:66c0)
 	call LoadStandardMenuDataHeader
-	call Functione2f7e
+	call BillsPC_StatsScreen
 	call ExitMenu
 	call PCMonInfo
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ret
 
 .release: ; e26d8 (38:66d8)
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
-	call Functione2f5f
+	call BillsPC_IsMonAnEgg
 	jr c, .FailedRelease
 	ld de, PCString_ReleasePKMN
-	call Functione2a6e
+	call BillsPC_PlaceString
 	call LoadStandardMenuDataHeader
 	lb bc, 14, 11
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	call ExitMenu
 	and a
 	jr nz, .FailedRelease
-	ld a, [wcb2b]
-	ld hl, wcb2a
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	ld a, PC_DEPOSIT
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
-	call Functione3180
+	callba RemoveMonFromPartyOrBox
+	call ReleasePKMN_ByePKMN
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	pop af
 	ret
 .FailedRelease
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ret
 
 .cancel: ; e272b (38:672b)
@@ -522,11 +528,11 @@
 	ld [hInMenu], a
 	xor a
 	ld [hMapAnims], a
-	call Functione2963
+	call BillsPC_InitRAM
 	ld a, [wCurBox]
 	and $f
 	inc a
-	ld [wcb2e], a
+	ld [wBillsPC_LoadedBox], a
 	call DelayFrame
 .asm_e2781
 	call JoyTextDelay
@@ -533,7 +539,7 @@
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .asm_e2793
-	call Functione27a2
+	call .RunJumptable
 	call DelayFrame
 	jr .asm_e2781
 
@@ -548,61 +554,62 @@
 	ret
 ; e27a2
 
-Functione27a2: ; e27a2
+.RunJumptable: ; e27a2
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e27ac
-	call Functione33df
+	ld hl, .Jumptable
+	call BillsPC_Jumptable
 	jp [hl]
 ; e27ac
 
-Jumptable_e27ac: ; e27ac
-	dw Functione27ba
-	dw Functione27eb
-	dw Functione283d
-	dw Functione285d
-	dw Functione28df
-	dw Functione2903
-	dw Functione2992
+.Jumptable: ; e27ac
+	
+	dw .Init
+	dw .Joypad
+	dw .PrepSubmenu
+	dw .MoveMonWOMailSubmenu
+	dw .PrepInsertCursor
+	dw .Joypad2
+	dw BillsPC_EndJumptableLoop
 ; e27ba
 
-Functione27ba: ; e27ba
+.Init: ; e27ba
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2d30
+	call CopyBoxmonSpecies
 	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
+	call BillsPC_PlaceString
+	ld a, 5
+	ld [wBillsPC_NumMonsOnScreen], a
+	call BillsPC_RefreshTextboxes
+	call BillsPC_MoveMonWOMail_BoxNameAndArrows
 	call PCMonInfo
 	ld a, $ff
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	call WaitBGMap
-	call Functione2e01
-	call Functione298d
+	call BillsPC_UpdateSelectionCursor
+	call BillsPC_IncrementJumptableIndex
 	ret
 ; e27eb
 
-Functione27eb: ; e27eb
+.Joypad: ; e27eb
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and B_BUTTON
-	jr nz, .asm_e2837
+	jr nz, .b_button
 	ld a, [hl]
 	and A_BUTTON
-	jr nz, .asm_e2823
-	call Functione29d0
-	jr c, .asm_e2816
+	jr nz, .a_button
+	call MovePkmnWithoutMail_DPad
+	jr c, .d_pad
 	and a
 	ret z
-	call Functione2e01
+	call BillsPC_UpdateSelectionCursor
 	xor a
 	ld [hBGMapMode], a
-	call Functione2c2c
+	call BillsPC_RefreshTextboxes
 	call PCMonInfo
 	ld a, $1
 	ld [hBGMapMode], a
@@ -610,63 +617,64 @@
 	call DelayFrame
 	ret
 
-.asm_e2816
+.d_pad
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	ld a, $0
 	ld [wJumptableIndex], a
 	ret
 
-.asm_e2823
-	call Functione2def
+.a_button
+	call BillsPC_GetSelectedPokemonSpecies
 	and a
 	ret z
-	cp $ff
-	jr z, .asm_e2837
+	cp -1
+	jr z, .b_button
 	ld a, $2
 	ld [wJumptableIndex], a
 	ret
 
+.unused
 	ld hl, wJumptableIndex
 	dec [hl]
 	ret
 
-.asm_e2837
+.b_button
 	ld a, $6
 	ld [wJumptableIndex], a
 	ret
 ; e283d
 
-Functione283d: ; e283d
+.PrepSubmenu: ; e283d
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ld de, PCString_WhatsUp
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $1
-	ld [MenuSelection2], a
-	call Functione298d
+	ld [wMenuCursorY], a
+	call BillsPC_IncrementJumptableIndex
 	ret
 ; e285d
 
-Functione285d: ; e285d
-	ld hl, MenuDataHeader_0xe28c3
+.MoveMonWOMailSubmenu: ; e285d
+	ld hl, .MenuDataHeader
 	call CopyMenuDataHeader
-	ld a, [MenuSelection2]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, Functione28bd
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
+	call StoreTo_wMenuCursorBuffer
+	call VerticalMenu
+	jp c, .Cancel
+	ld a, [wMenuCursorY]
 	dec a
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_e2881
+	ld hl, .Jumptable2
 rept 2
 	add hl, de
 endr
@@ -676,53 +684,53 @@
 	jp [hl]
 ; e2881
 
-Jumptable_e2881: ; e2881
-	dw Functione2887
-	dw Functione28a5
-	dw Functione28bd
+.Jumptable2: ; e2881
+	dw .Move
+	dw .Stats
+	dw .Cancel
 ; 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
+.Move: ; e2887
+	call BillsPC_CheckMail_PreventBlackout
+	jp c, .Cancel
+	ld a, [wBillsPC_ScrollPosition]
+	ld [wBillsPC_BackupScrollPosition], a
+	ld a, [wBillsPC_CursorPosition]
+	ld [wBillsPC_BackupCursorPosition], a
+	ld a, [wBillsPC_LoadedBox]
+	ld [wBillsPC_BackupLoadedBox], a
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
 ; e28a5
 
-Functione28a5: ; e28a5
+.Stats: ; e28a5
 	call LoadStandardMenuDataHeader
-	call Functione2f7e
+	call BillsPC_StatsScreen
 	call ExitMenu
 	call PCMonInfo
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
+	ld a, SCGB_17
+	call BillsPC_ApplyPalettes
 	ret
 ; e28bd
 
-Functione28bd: ; e28bd
+.Cancel: ; e28bd
 	ld a, $0
 	ld [wJumptableIndex], a
 	ret
 ; e28c3
 
-MenuDataHeader_0xe28c3: ; 0xe28c3
+.MenuDataHeader: ; 0xe28c3
 	db $40 ; flags
 	db 04, 09 ; start coords
 	db 13, 19 ; end coords
-	dw MenuData2_0xe28cb
+	dw .MenuData2
 	db 1 ; default option
 ; 0xe28cb
 
-MenuData2_0xe28cb: ; 0xe28cb
+.MenuData2: ; 0xe28cb
 	db $80 ; flags
 	db 3 ; items
 	db "MOVE@"
@@ -730,39 +738,39 @@
 	db "CANCEL@"
 ; 0xe28df
 
-Functione28df: ; e28df
+.PrepInsertCursor: ; e28df
 	xor a
 	ld [hBGMapMode], a
-	call Functione2d30
+	call CopyBoxmonSpecies
 	ld de, PCString_MoveToWhere
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
+	ld [wBillsPC_NumMonsOnScreen], a
+	call BillsPC_RefreshTextboxes
+	call BillsPC_MoveMonWOMail_BoxNameAndArrows
 	call ClearSprites
-	call Functione2e8c
+	call BillsPC_UpdateInsertCursor
 	call WaitBGMap
-	call Functione298d
+	call BillsPC_IncrementJumptableIndex
 	ret
 ; e2903
 
-Functione2903: ; e2903
+.Joypad2: ; e2903
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and B_BUTTON
-	jr nz, .asm_e294b
+	jr nz, .b_button_2
 	ld a, [hl]
 	and A_BUTTON
-	jr nz, .asm_e2938
-	call Functione29f4
-	jr c, .asm_e292b
+	jr nz, .a_button_2
+	call MovePkmnWithoutMail_DPad_2
+	jr c, .dpad_2
 	and a
 	ret z
-	call Functione2e8c
+	call BillsPC_UpdateInsertCursor
 	xor a
 	ld [hBGMapMode], a
-	call Functione2c2c
+	call BillsPC_RefreshTextboxes
 	ld a, $1
 	ld [hBGMapMode], a
 	call DelayFrame
@@ -769,45 +777,45 @@
 	call DelayFrame
 	ret
 
-.asm_e292b
+.dpad_2
 	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
 
-.asm_e2938
-	call Functione2ee5
-	jr c, .asm_e2946
-	call Functione31e7
+.a_button_2
+	call BillsPC_CheckSpaceInDestination
+	jr c, .no_space
+	call MovePKMNWitoutMail_InsertMon
 	ld a, $0
 	ld [wJumptableIndex], a
 	ret
 
-.asm_e2946
+.no_space
 	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
+.b_button_2
+	ld a, [wBillsPC_BackupScrollPosition]
+	ld [wBillsPC_ScrollPosition], a
+	ld a, [wBillsPC_BackupCursorPosition]
+	ld [wBillsPC_CursorPosition], a
+	ld a, [wBillsPC_BackupLoadedBox]
+	ld [wBillsPC_LoadedBox], a
 	ld a, $0
 	ld [wJumptableIndex], a
 	ret
 ; e2963
 
-Functione2963: ; e2963 (38:6963)
+BillsPC_InitRAM: ; e2963 (38:6963)
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
-	call Functione33e8
-	ld hl, OverworldMap
+	call BillsPC_InitGFX
+	ld hl, wBillsPCPokemonList
 	ld bc, $338
 	xor a
 	call ByteFill
@@ -816,185 +824,185 @@
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	ld [wcb2b], a
-	ld [wcb2a], a
+	ld [wBillsPC_CursorPosition], a
+	ld [wBillsPC_ScrollPosition], a
 	ret
 
-Functione298d: ; e298d (38:698d)
+BillsPC_IncrementJumptableIndex: ; e298d (38:698d)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Functione2992: ; e2992 (38:6992)
+BillsPC_EndJumptableLoop: ; e2992 (38:6992)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Functione2998: ; e2998 (38:6998)
-	ld a, [wcb2d]
+_StatsScreenDPad: ; e2998 (38:6998)
+	ld a, [wBillsPC_NumMonsOnScreen]
 	ld d, a
-	ld a, [wcb2c]
+	ld a, [wBillsPC_NumMonsInBox]
 	and a
-	jr z, .asm_e29b2
+	jr z, .empty
 	dec a
 	cp $1
-	jr z, .asm_e29b2
+	jr z, .empty
 	ld e, a
 	ld a, [hl]
 	and D_UP
-	jr nz, Functione2a18
+	jr nz, BillsPC_PressUp
 	ld a, [hl]
 	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29b2
-	jp Functione2a65
+	jr nz, BillsPC_PressDown
+.empty
+	jp BillsPC_JoypadDidNothing
 
-Functione29b5: ; e29b5 (38:69b5)
+Withdraw_UpDown: ; e29b5 (38:69b5)
 	ld hl, hJoyLast
-	ld a, [wcb2d]
+	ld a, [wBillsPC_NumMonsOnScreen]
 	ld d, a
-	ld a, [wcb2c]
+	ld a, [wBillsPC_NumMonsInBox]
 	ld e, a
 	and a
-	jr z, .asm_e29cd
+	jr z, .empty
 	ld a, [hl]
 	and D_UP
-	jr nz, Functione2a18
+	jr nz, BillsPC_PressUp
 	ld a, [hl]
 	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29cd
-	jp Functione2a65
+	jr nz, BillsPC_PressDown
+.empty
+	jp BillsPC_JoypadDidNothing
 ; e29d0 (38:69d0)
 
-Functione29d0: ; e29d0
+MovePkmnWithoutMail_DPad: ; e29d0
 	ld hl, hJoyLast
-	ld a, [wcb2d]
+	ld a, [wBillsPC_NumMonsOnScreen]
 	ld d, a
-	ld a, [wcb2c]
+	ld a, [wBillsPC_NumMonsInBox]
 	ld e, a
 	and a
-	jr z, .asm_e29e8
+	jr z, .check_left_right
 	ld a, [hl]
 	and D_UP
-	jr nz, Functione2a18
+	jr nz, BillsPC_PressUp
 	ld a, [hl]
 	and D_DOWN
-	jr nz, Functione2a2c
+	jr nz, BillsPC_PressDown
 
-.asm_e29e8
+.check_left_right
 	ld a, [hl]
 	and D_LEFT
-	jr nz, Functione2a48
+	jr nz, BillsPC_PressLeft
 	ld a, [hl]
 	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
+	jr nz, BillsPC_PressRight
+	jr BillsPC_JoypadDidNothing
 
-Functione29f4: ; e29f4
+MovePkmnWithoutMail_DPad_2: ; e29f4
 	ld hl, hJoyLast
-	ld a, [wcb2d]
+	ld a, [wBillsPC_NumMonsOnScreen]
 	ld d, a
-	ld a, [wcb2c]
+	ld a, [wBillsPC_NumMonsInBox]
 	ld e, a
 	and a
-	jr z, .asm_e2a0c
+	jr z, .check_left_right
 
 	ld a, [hl]
 	and D_UP
-	jr nz, Functione2a18
+	jr nz, BillsPC_PressUp
 	ld a, [hl]
 	and D_DOWN
-	jr nz, Functione2a2c
+	jr nz, BillsPC_PressDown
 
-.asm_e2a0c
+.check_left_right
 	ld a, [hl]
 	and D_LEFT
-	jr nz, Functione2a48
+	jr nz, BillsPC_PressLeft
 	ld a, [hl]
 	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
+	jr nz, BillsPC_PressRight
+	jr BillsPC_JoypadDidNothing
 
-Functione2a18: ; e2a18 (38:6a18)
-	ld hl, wcb2b
+BillsPC_PressUp: ; e2a18 (38:6a18)
+	ld hl, wBillsPC_CursorPosition
 	ld a, [hl]
 	and a
-	jr z, .asm_e2a22
+	jr z, .top
 	dec [hl]
-	jr Functione2a68
+	jr BillsPC_UpDownDidSomething
 
-.asm_e2a22
-	ld hl, wcb2a
+.top
+	ld hl, wBillsPC_ScrollPosition
 	ld a, [hl]
 	and a
-	jr z, Functione2a65
+	jr z, BillsPC_JoypadDidNothing
 	dec [hl]
-	jr Functione2a68
+	jr BillsPC_UpDownDidSomething
 
-Functione2a2c: ; e2a2c (38:6a2c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+BillsPC_PressDown: ; e2a2c (38:6a2c)
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	inc a
 	cp e
-	jr nc, Functione2a65
+	jr nc, BillsPC_JoypadDidNothing
 
-	ld hl, wcb2b
+	ld hl, wBillsPC_CursorPosition
 	ld a, [hl]
 	inc a
 	cp d
-	jr nc, .asm_e2a42
+	jr nc, .not_bottom
 	inc [hl]
-	jr Functione2a68
+	jr BillsPC_UpDownDidSomething
 
-.asm_e2a42
-	ld hl, wcb2a
+.not_bottom
+	ld hl, wBillsPC_ScrollPosition
 	inc [hl]
-	jr Functione2a68
+	jr BillsPC_UpDownDidSomething
 ; e2a48 (38:6a48)
 
-Functione2a48: ; e2a48
-	ld hl, wcb2e
+BillsPC_PressLeft: ; e2a48
+	ld hl, wBillsPC_LoadedBox
 	ld a, [hl]
 	and a
-	jr z, .asm_e2a52
+	jr z, .wrap_around
 	dec [hl]
-	jr Functione2a6c
+	jr BillsPC_LeftRightDidSomething
 
-.asm_e2a52
-	ld [hl], $e
-	jr Functione2a6c
+.wrap_around
+	ld [hl], NUM_BOXES
+	jr BillsPC_LeftRightDidSomething
 
-Functione2a56: ; e2a56
-	ld hl, wcb2e
+BillsPC_PressRight: ; e2a56
+	ld hl, wBillsPC_LoadedBox
 	ld a, [hl]
-	cp $e
-	jr z, .asm_e2a61
+	cp NUM_BOXES
+	jr z, .wrap_around
 	inc [hl]
-	jr Functione2a6c
+	jr BillsPC_LeftRightDidSomething
 
-.asm_e2a61
-	ld [hl], $0
-	jr Functione2a6c
+.wrap_around
+	ld [hl], 0
+	jr BillsPC_LeftRightDidSomething
 
-Functione2a65: ; e2a65 (38:6a65)
+BillsPC_JoypadDidNothing: ; e2a65 (38:6a65)
 	xor a
 	and a
 	ret
 
-Functione2a68: ; e2a68 (38:6a68)
-	ld a, $1
+BillsPC_UpDownDidSomething: ; e2a68 (38:6a68)
+	ld a, TRUE
 	and a
 	ret
 ; e2a6c (38:6a6c)
 
-Functione2a6c: ; e2a6c
+BillsPC_LeftRightDidSomething: ; e2a6c
 	scf
 	ret
 ; e2a6e
 
-Functione2a6e: ; e2a6e (38:6a6e)
+BillsPC_PlaceString: ; e2a6e (38:6a6e)
 	push de
 	hlcoord 0, 15
 	lb bc, 1, 18
@@ -1005,8 +1013,8 @@
 	ret
 ; e2a80 (38:6a80)
 
-Functione2a80: ; e2a80
-	call Functione2a8e
+BillsPC_MoveMonWOMail_BoxNameAndArrows: ; e2a80
+	call BillsPC_BoxName
 	hlcoord 8, 1
 	ld [hl], $5f
 	hlcoord 19, 1
@@ -1014,12 +1022,12 @@
 	ret
 ; e2a8e
 
-Functione2a8e: ; e2a8e (38:6a8e)
+BillsPC_BoxName: ; e2a8e (38:6a8e)
 	hlcoord 8, 0
 	lb bc, 1, 10
 	call TextBox
 
-	ld a, [wcb2e]
+	ld a, [wBillsPC_LoadedBox]
 	and a
 	jr z, .party
 
@@ -1038,7 +1046,7 @@
 	jr .print
 
 .party
-	ld de, String_e2abd
+	ld de, .PartyPKMN
 .print
 	hlcoord 10, 1
 	call PlaceString
@@ -1045,7 +1053,7 @@
 	ret
 ; e2abd (38:6abd)
 
-String_e2abd:
+.PartyPKMN:
 	db "PARTY <PK><MN>@"
 ; e2ac6
 
@@ -1068,10 +1076,10 @@
 	lb bc, 1, 3
 	call ClearBox
 
-	call Functione2def
+	call BillsPC_GetSelectedPokemonSpecies
 	and a
 	ret z
-	cp $ff
+	cp -1
 	ret z
 
 	ld [wd265], a
@@ -1078,24 +1086,24 @@
 	hlcoord 1, 4
 	xor a
 	ld b, 7
-.asm_e2ae9
+.row
 	ld c, 7
 	push af
 	push hl
-.asm_e2aed
+.col
 	ld [hli], a
 	add 7
 	dec c
-	jr nz, .asm_e2aed
+	jr nz, .col
 	pop hl
-	ld de, 20
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop af
 	inc a
 	dec b
-	jr nz, .asm_e2ae9
+	jr nz, .row
 
-	call Functione2b6d
+	call BillsPC_LoadMonStats
 	ld a, [wd265]
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
@@ -1105,10 +1113,9 @@
 	ld de, VTiles2 tile $00
 	predef GetFrontpic
 	xor a
-	ld [wcb32], a
+	ld [wBillsPC_MonHasMail], a
 	ld a, [CurPartySpecies]
 	ld [wd265], a
-
 	cp EGG
 	ret z
 
@@ -1122,7 +1129,7 @@
 	ld a, $3
 	ld [MonType], a
 	callba GetGender
-	jr c, .asm_e2b4f
+	jr c, .skip_gender
 	ld a, "♂"
 	jr nz, .printgender
 	ld a, "♀"
@@ -1129,7 +1136,7 @@
 .printgender
 	hlcoord 5, 12
 	ld [hl], a
-.asm_e2b4f
+.skip_gender
 
 	ld a, [TempMonItem]
 	and a
@@ -1142,7 +1149,7 @@
 	jr .printitem
 .mail
 	ld a, $1
-	ld [wcb32], a
+	ld [wBillsPC_MonHasMail], a
 	ld a, $5c ; mail icon
 .printitem
 	hlcoord 7, 12
@@ -1149,21 +1156,21 @@
 	ld [hl], a
 	ret
 
-Functione2b6d: ; e2b6d (38:6b6d)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+BillsPC_LoadMonStats: ; e2b6d (38:6b6d)
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld e, a
 	ld d, $0
-	ld hl, wc801
+	ld hl, wBillsPCPokemonList + 1
 rept 3
 	add hl, de
 endr
 	ld a, [hl]
 	and a
-	jr z, .asm_e2bc6
-	cp $f
-	jr z, .asm_e2bf5
+	jr z, .party
+	cp NUM_BOXES + 1
+	jr z, .sBox
 	ld b, a
 	call GetBoxPointer
 	ld a, b
@@ -1199,7 +1206,8 @@
 	ld [de], a
 	call CloseSRAM
 	ret
-.asm_e2bc6
+
+.party
 	ld hl, PartyMon1Level
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, e
@@ -1224,7 +1232,7 @@
 	ld [de], a
 	ret
 
-.asm_e2bf5
+.sBox
 	ld a, BANK(sBox)
 	call GetSRAMBank
 	ld hl, sBoxMon1Level
@@ -1255,7 +1263,7 @@
 	call CloseSRAM
 	ret
 
-Functione2c2c: ; e2c2c (38:6c2c)
+BillsPC_RefreshTextboxes: ; e2c2c (38:6c2c)
 	hlcoord 8, 2
 	lb bc, 10, 10
 	call TextBox
@@ -1265,10 +1273,10 @@
 	hlcoord 19, 2
 	ld [hl], "┘"
 
-	ld a, [wcb2a]
+	ld a, [wBillsPC_ScrollPosition]
 	ld e, a
 	ld d, 0
-	ld hl, OverworldMap
+	ld hl, wBillsPCPokemonList
 rept 3
 	add hl, de
 endr
@@ -1275,14 +1283,14 @@
 	ld e, l
 	ld d, h
 	hlcoord 9, 4
-	ld a, [wcb2d]
-.asm_e2c53
+	ld a, [wBillsPC_NumMonsOnScreen]
+.loop
 	push af
 	push de
 	push hl
-	call Functione2c6e
+	call .PlaceNickname
 	pop hl
-	ld de, $28
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop de
 rept 3
@@ -1290,25 +1298,25 @@
 endr
 	pop af
 	dec a
-	jr nz, .asm_e2c53
+	jr nz, .loop
 	ret
 ; e2c67 (38:6c67)
 
-String_e2c67:
+.CancelString:
 	db "CANCEL@"
 ; e2c6e
 
-Functione2c6e: ; e2c6e (38:6c6e)
+.PlaceNickname: ; e2c6e (38:6c6e)
 	ld a, [de]
 	and a
 	ret z
-	cp $ff
-	jr nz, .asm_e2c7c
-	ld de, String_e2c67
+	cp -1
+	jr nz, .get_nickname
+	ld de, .CancelString
 	call PlaceString
 	ret
 
-.asm_e2c7c
+.get_nickname
 	inc de
 	ld a, [de]
 	ld b, a
@@ -1317,9 +1325,9 @@
 	ld e, a
 	ld a, b
 	and a
-	jr z, .asm_e2cc8
-	cp $f
-	jr z, .asm_e2cf1
+	jr z, .party
+	cp NUM_BOXES + 1
+	jr z, .sBox
 	push hl
 	call GetBoxPointer
 	ld a, b
@@ -1333,7 +1341,7 @@
 	ld a, [hl]
 	pop hl
 	and a
-	jr z, .asm_e2cc2
+	jr z, .boxfail
 	ld bc, sBoxMonNicknames - sBox
 	add hl, bc
 	ld bc, PKMN_NAME_LENGTH
@@ -1348,12 +1356,12 @@
 	call PlaceString
 	ret
 
-.asm_e2cc2
+.boxfail
 	call CloseSRAM
 	pop hl
-	jr .asm_e2d23
+	jr .placeholder_string
 
-.asm_e2cc8
+.party
 	push hl
 	ld hl, PartySpecies
 	ld d, $0
@@ -1360,7 +1368,7 @@
 	add hl, de
 	ld a, [hl]
 	and a
-	jr z, .asm_e2cee
+	jr z, .partyfail
 	ld hl, PartyMonNicknames
 	ld bc, PKMN_NAME_LENGTH
 	ld a, e
@@ -1373,11 +1381,11 @@
 	call PlaceString
 	ret
 
-.asm_e2cee
+.partyfail
 	pop hl
-	jr .asm_e2d23
+	jr .placeholder_string
 
-.asm_e2cf1
+.sBox
 	push hl
 	ld a, BANK(sBox)
 	call GetSRAMBank
@@ -1386,7 +1394,7 @@
 	add hl, de
 	ld a, [hl]
 	and a
-	jr z, .asm_e2d1f
+	jr z, .sBoxFail
 	ld hl, sBoxMonNicknames
 	ld bc, PKMN_NAME_LENGTH
 	ld a, e
@@ -1400,47 +1408,29 @@
 	call PlaceString
 	ret
 
-.asm_e2d1f
+.sBoxFail
 	call CloseSRAM
 	pop hl
-.asm_e2d23
-	ld de, String_e2d2a
+.placeholder_string
+	ld de, .Placeholder
 	call PlaceString
 	ret
 ; e2d2a (38:6d2a)
 
-String_e2d2a:
+.Placeholder:
 	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 GetBoxPointer
-	ld a, b
-	call GetSRAMBank
-	inc hl
-.asm_e2d57
+copy_box_data: MACRO
+.loop\@
 	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2d79
+	cp -1
+	jr z, .done\@
 	and a
-	jr z, .asm_e2d79
+	jr z, .done\@
 	ld [de], a
 	inc de
-	ld a, [wcb2e]
+	ld a, [wBillsPC_LoadedBox]
 	ld [de], a
 	inc de
 	ld a, [wd003]
@@ -1452,91 +1442,60 @@
 	ld a, [wd004]
 	inc a
 	ld [wd004], a
-	jr .asm_e2d57
+	jr .loop\@
 
-.asm_e2d79
+.done\@
+IF \1
 	call CloseSRAM
-	ld a, $ff
+ENDC
+	ld a, -1
 	ld [de], a
 	ld a, [wd004]
 	inc a
-	ld [wcb2c], a
-	ret
+	ld [wBillsPC_NumMonsInBox], a
+endm
 
-.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
+CopyBoxmonSpecies: ; e2d30 (38:6d30)
+	xor a
+	ld hl, wBillsPCPokemonList
+	ld bc, 3 * 30
+	call ByteFill
+	ld de, wBillsPCPokemonList
+	xor a
 	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
 	ld [wd004], a
-	jr .asm_e2d8a
+	ld a, [wBillsPC_LoadedBox]
+	and a
+	jr z, .party
+	cp NUM_BOXES + 1
+	jr z, .sBox
+	ld b, a
+	call GetBoxPointer
+	ld a, b
+	call GetSRAMBank
+	inc hl
+	copy_box_data 1
+	ret
 
-.asm_e2dac
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
+.party
+	ld hl, PartySpecies
+	copy_box_data 0
 	ret
 
-.asm_e2db7
+.sBox
 	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
+	copy_box_data 1
 	ret
 
-Functione2def: ; e2def (38:6def)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+BillsPC_GetSelectedPokemonSpecies: ; e2def (38:6def)
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld e, a
 	ld d, $0
-	ld hl, OverworldMap
+	ld hl, wBillsPCPokemonList
 rept 3
 	add hl, de
 endr
@@ -1543,21 +1502,21 @@
 	ld a, [hl]
 	ret
 
-Functione2e01: ; e2e01 (38:6e01)
-	ld a, [wcb2c]
+BillsPC_UpdateSelectionCursor: ; e2e01 (38:6e01)
+	ld a, [wBillsPC_NumMonsInBox]
 	and a
-	jr nz, .asm_e2e0b
+	jr nz, .place_cursor
 	call ClearSprites
 	ret
 
-.asm_e2e0b
-	ld hl, Unknown_e2e2b
+.place_cursor
+	ld hl, .OAM
 	ld de, Sprites
 .loop
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
-	ld a, [wcb2b]
+	ld a, [wBillsPC_CursorPosition]
 	and $7
 	swap a
 	add [hl]
@@ -1564,54 +1523,50 @@
 	inc hl
 	ld [de], a
 	inc de
+rept 3
 	ld a, [hli]
 	ld [de], a
 	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
+endr
 	jr .loop
 ; 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
+.OAM: ; e2e2b
+	dsprite 4, 6, 10, 0, $00, $00
+	dsprite 4, 6, 11, 0, $00, $00
+	dsprite 4, 6, 12, 0, $00, $00
+	dsprite 4, 6, 13, 0, $00, $00
+	dsprite 4, 6, 14, 0, $00, $00
+	dsprite 4, 6, 15, 0, $00, $00
+	dsprite 4, 6, 16, 0, $00, $00
+	dsprite 4, 6, 17, 0, $00, $00
+	dsprite 4, 6, 18, 0, $00, $00
+	dsprite 4, 6, 18, 7, $00, $00
+	dsprite 7, 1, 10, 0, $00, $40
+	dsprite 7, 1, 11, 0, $00, $40
+	dsprite 7, 1, 12, 0, $00, $40
+	dsprite 7, 1, 13, 0, $00, $40
+	dsprite 7, 1, 14, 0, $00, $40
+	dsprite 7, 1, 15, 0, $00, $40
+	dsprite 7, 1, 16, 0, $00, $40
+	dsprite 7, 1, 17, 0, $00, $40
+	dsprite 7, 1, 18, 0, $00, $40
+	dsprite 7, 1, 18, 7, $00, $40
+	dsprite 5, 6,  9, 6, $01, $00
+	dsprite 6, 1,  9, 6, $01, $40
+	dsprite 5, 6, 19, 1, $01, $20
+	dsprite 6, 1, 19, 1, $01, $60
+	db -1
 ; e2e8c
 
-Functione2e8c: ; e2e8c
-	ld hl, Unknown_e2eac
+BillsPC_UpdateInsertCursor: ; e2e8c
+	ld hl, .OAM
 	ld de, Sprites
-.asm_e2e92
+.loop
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
-	ld a, [wcb2b]
+	ld a, [wBillsPC_CursorPosition]
 	and $7
 	swap a
 	add [hl]
@@ -1618,75 +1573,72 @@
 	inc hl
 	ld [de], a
 	inc de
+rept 3
 	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
+endr
+	jr .loop
 ; 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
+.OAM: ; e2eac
+	dsprite 4, 7, 10, 0, $06, $00
+	dsprite 5, 3, 11, 0, $00, $40
+	dsprite 5, 3, 12, 0, $00, $40
+	dsprite 5, 3, 13, 0, $00, $40
+	dsprite 5, 3, 14, 0, $00, $40
+	dsprite 5, 3, 15, 0, $00, $40
+	dsprite 5, 3, 16, 0, $00, $40
+	dsprite 5, 3, 17, 0, $00, $40
+	dsprite 5, 3, 18, 0, $00, $40
+	dsprite 4, 7, 19, 0, $07, $00
+	db -1
 ; e2ed5
 
-Functione2ed5: ; e2ed5
-.asm_e2ed5
+BillsPC_UnusedFillBox: ; e2ed5
+.row
 	push bc
 	push hl
-.asm_e2ed7
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_e2ed7
+	jr nz, .col
 	pop hl
 	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_e2ed5
+	jr nz, .row
 	ret
 ; e2ee5
 
-Functione2ee5: ; e2ee5
-	ld hl, wcb2e
-	ld a, [wcb31]
+BillsPC_CheckSpaceInDestination: ; e2ee5
+; If moving within a box, no need to be here.
+	ld hl, wBillsPC_LoadedBox
+	ld a, [wBillsPC_BackupLoadedBox]
 	cp [hl]
-	jr z, .asm_e2f00
-	ld a, [wcb2e]
+	jr z, .same_box
+
+; Exceeding box or party capacity is a big no-no.
+	ld a, [wBillsPC_LoadedBox]
 	and a
-	jr z, .asm_e2ef8
-	ld e, $15
-	jr .asm_e2efa
+	jr z, .party
+	ld e, MONS_PER_BOX + 1
+	jr .compare
 
-.asm_e2ef8
-	ld e, $7
-
-.asm_e2efa
-	ld a, [wcb2c]
+.party
+	ld e, PARTY_LENGTH + 1
+.compare
+	ld a, [wBillsPC_NumMonsInBox]
 	cp e
-	jr nc, .asm_e2f02
-
-.asm_e2f00
+	jr nc, .no_room
+.same_box
 	and a
 	ret
 
-.asm_e2f02
+.no_room
 	ld de, PCString_TheresNoRoom
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -1696,35 +1648,38 @@
 	ret
 ; e2f18
 
-Functione2f18: ; e2f18 (38:6f18)
-	ld a, [wcb2e]
+BillsPC_CheckMail_PreventBlackout: ; e2f18 (38:6f18)
+	ld a, [wBillsPC_LoadedBox]
 	and a
 	jr nz, .Okay
-	ld a, [wcb2c]
+	ld a, [wBillsPC_NumMonsInBox]
 	cp $3
 	jr c, .ItsYourLastPokemon
-	ld a, [wcb2b]
-	ld hl, wcb2a
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	callba CheckCurPartyMonFainted
 	jr c, .AllOthersFainted
-	ld a, [wcb32]
+	ld a, [wBillsPC_MonHasMail]
 	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
+	call BillsPC_PlaceString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -1733,15 +1688,16 @@
 	scf
 	ret
 
-Functione2f5f: ; e2f5f (38:6f5f)
+BillsPC_IsMonAnEgg: ; e2f5f (38:6f5f)
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_e2f68
+	jr z, .egg
 	and a
 	ret
-.asm_e2f68
+
+.egg
 	ld de, PCString_NoReleasingEGGS
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -1750,35 +1706,35 @@
 	scf
 	ret
 
-Functione2f7e: ; e2f7e (38:6f7e)
+BillsPC_StatsScreen: ; e2f7e (38:6f7e)
 	call LowVolume
-	call Functione2fd6
+	call BillsPC_CopyMon
 	ld a, $3
 	ld [MonType], a
 	predef StatsScreenInit
-	call Functione33e8
+	call BillsPC_InitGFX
 	call MaxVolume
 	ret
 
-Functione2f95: ; e2f95 (38:6f95)
+StatsScreenDPad: ; e2f95 (38:6f95)
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
-	ld [wcf73], a
+	ld [wMenuJoypad], a
 	jr nz, .pressed_a_b_right_left
 	ld a, [hl]
 	and D_DOWN | D_UP
-	ld [wcf73], a
+	ld [wMenuJoypad], a
 	jr nz, .pressed_down_up
 	jr .pressed_a_b_right_left
 
 .pressed_down_up
-	call Functione2998
+	call _StatsScreenDPad
 	and a
-	jr z, .asm_e2fd1
-	call Functione2def
+	jr z, .did_nothing
+	call BillsPC_GetSelectedPokemonSpecies
 	ld [wd265], a
-	call Functione2b6d
+	call BillsPC_LoadMonStats
 	ld a, [wd265]
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
@@ -1785,25 +1741,25 @@
 	ld hl, TempMonDVs
 	predef GetUnownLetter
 	call GetBaseData
-	call Functione2fd6
+	call BillsPC_CopyMon
 .pressed_a_b_right_left
 	ret
 
-.asm_e2fd1
+.did_nothing
 	xor a
-	ld [wcf73], a
+	ld [wMenuJoypad], a
 	ret
 
-Functione2fd6: ; e2fd6 (38:6fd6)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+BillsPC_CopyMon: ; e2fd6 (38:6fd6)
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
-	ld a, [wcb2e]
+	ld a, [wBillsPC_LoadedBox]
 	and a
-	jr z, .asm_e3020
-	cp $f
-	jr nz, .asm_e3048
+	jr z, .party
+	cp NUM_BOXES + 1
+	jr nz, .box
 	ld a, BANK(sBox)
 	call GetSRAMBank
 	ld hl, sBoxSpecies
@@ -1816,14 +1772,14 @@
 	ld bc, BOXMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	call CloseSRAM
-	callba Function5088b
+	callba CalcwBufferMonStats
 	ret
 
-.asm_e3020
+.party
 	ld hl, PartySpecies
 	call CopySpeciesToTemp
 	ld hl, PartyMonNicknames
@@ -1834,12 +1790,12 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	ret
 
-.asm_e3048
+.box
 	ld b, a
 	call GetBoxPointer
 	ld a, b
@@ -1863,12 +1819,12 @@
 	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyMonToTemp
 	call CloseSRAM
-	callba Function5088b
+	callba CalcwBufferMonStats
 	ret
 
-Functione307c: ; e307c (38:707c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+DepositPokemon: ; e307c (38:707c)
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	ld hl, PartyMonNicknames
@@ -1880,7 +1836,7 @@
 	jr c, .asm_boxisfull
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ld a, [CurPartySpecies]
 	call PlayCry
 	hlcoord 0, 0
@@ -1909,7 +1865,7 @@
 
 .asm_boxisfull
 	ld de, PCString_BoxFull
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -1919,8 +1875,8 @@
 	ret
 
 TryWithdrawPokemon: ; e30fa (38:70fa)
-	ld a, [wcb2b]
-	ld hl, wcb2a
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	ld a, BANK(sBoxMonNicknames)
@@ -1935,7 +1891,7 @@
 	jr c, .PartyFull
 	ld a, PC_DEPOSIT
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ld a, [CurPartySpecies]
 	call PlayCry
 	hlcoord 0, 0
@@ -1964,7 +1920,7 @@
 
 .PartyFull
 	ld de, PCString_PartyFull
-	call Functione2a6e
+	call BillsPC_PlaceString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -1974,7 +1930,7 @@
 	ret
 
 
-Functione3180: ; e3180 (38:7180)
+ReleasePKMN_ByePKMN: ; e3180 (38:7180)
 	hlcoord 0, 0
 	lb bc, 15, 8
 	call ClearBox
@@ -1988,11 +1944,11 @@
 	call WaitBGMap
 	ld a, [CurPartySpecies]
 	call GetCryIndex
-	jr c, .asm_e31ab
+	jr c, .skip_cry
 	ld e, c
 	ld d, b
 	call PlayCryHeader
-.asm_e31ab
+.skip_cry
 
 	ld a, [CurPartySpecies]
 	ld [wd265], a
@@ -2021,7 +1977,7 @@
 	ret
 ; e31e7 (38:71e7)
 
-Functione31e7: ; e31e7
+MovePKMNWitoutMail_InsertMon: ; e31e7
 	push hl
 	push de
 	push bc
@@ -2030,7 +1986,7 @@
 	lb bc, 1, 18
 	call TextBox
 	hlcoord 1, 16
-	ld de, String_e3233
+	ld de, .Saving_LeaveOn
 	call PlaceString
 	ld c, 20
 	call DelayFrames
@@ -2041,19 +1997,19 @@
 	ld a, [wCurBox]
 	push af
 	ld bc, 0
-	ld a, [wcb31]
+	ld a, [wBillsPC_BackupLoadedBox]
 	and a
-	jr nz, .asm_e3215
+	jr nz, .moving_from_box
 	set 0, c
 
-.asm_e3215
-	ld a, [wcb2e]
+.moving_from_box
+	ld a, [wBillsPC_LoadedBox]
 	and a
-	jr nz, .asm_e321d
+	jr nz, .moving_to_box
 	set 1, c
 
-.asm_e321d
-	ld hl, Jumptable_e3245
+.moving_to_box
+	ld hl, .Jumptable
 rept 2
 	add hl, bc
 endr
@@ -2060,12 +2016,12 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, Functione322a
+	ld de, .dw_return
 	push de
 	jp [hl]
 ; e322a
 
-Functione322a: ; e322a
+.dw_return: ; e322a
 	pop af
 	ld e, a
 	callba Function14ad5
@@ -2072,76 +2028,77 @@
 	ret
 ; e3233
 
-String_e3233:
+.Saving_LeaveOn:
 	db "Saving… Leave ON!@"
 ; e3245
 
-Jumptable_e3245: ; e3245
-	dw Functione324d
-	dw Functione3267
-	dw Functione327d
-	dw Functione3284
+.Jumptable: ; e3245
+	
+	dw .BoxToBox
+	dw .PartyToBox
+	dw .BoxToParty
+	dw .PartyToParty
 ; e324d
 
-Functione324d: ; e324d
-	ld hl, wcb31
-	ld a, [wcb2e]
+.BoxToBox: ; e324d
+	ld hl, wBillsPC_BackupLoadedBox
+	ld a, [wBillsPC_LoadedBox]
 	cp [hl]
-	jr z, .asm_e325d
-	call Functione32b0
-	call Functione32fa
+	jr z, .same_box
+	call .CopyFromBox
+	call .CopyToBox
 	ret
 
-.asm_e325d
-	call Functione32b0
-	call Functione328e
-	call Functione32fa
+.same_box
+	call .CopyFromBox
+	call .CheckTrivialMove
+	call .CopyToBox
 	ret
 ; e3267
 
-Functione3267: ; e3267
-	call Functione3316
+.PartyToBox: ; e3267
+	call .CopyFromParty
 	ld a, $1
 	ld [wc2cd], a
 	callba SaveGameData
 	xor a
 	ld [wc2cd], a
-	call Functione32fa
+	call .CopyToBox
 	ret
 ; e327d
 
-Functione327d: ; e327d
-	call Functione32b0
-	call Functione3346
+.BoxToParty: ; e327d
+	call .CopyFromBox
+	call .CopyToParty
 	ret
 ; e3284
 
-Functione3284: ; e3284
-	call Functione3316
-	call Functione328e
-	call Functione3346
+.PartyToParty: ; e3284
+	call .CopyFromParty
+	call .CheckTrivialMove
+	call .CopyToParty
 	ret
 ; e328e
 
-Functione328e: ; e328e
-	ld a, [wcb2b]
-	ld hl, wcb2a
+.CheckTrivialMove: ; e328e
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld e, a
-	ld a, [wcb30]
-	ld hl, wcb2f
+	ld a, [wBillsPC_BackupCursorPosition]
+	ld hl, wBillsPC_BackupScrollPosition
 	add [hl]
 	cp e
 	ret nc
-	ld hl, wcb2b
+	ld hl, wBillsPC_CursorPosition
 	ld a, [hl]
 	and a
-	jr z, .asm_e32a8
+	jr z, .top_of_screen
 	dec [hl]
 	ret
 
-.asm_e32a8
-	ld hl, wcb2a
+.top_of_screen
+	ld hl, wBillsPC_ScrollPosition
 	ld a, [hl]
 	and a
 	ret z
@@ -2149,13 +2106,13 @@
 	ret
 ; e32b0
 
-Functione32b0: ; e32b0
-	ld a, [wcb31]
+.CopyFromBox: ; e32b0
+	ld a, [wBillsPC_BackupLoadedBox]
 	dec a
 	ld e, a
 	callba MovePkmnWOMail_SaveGame
-	ld a, [wcb30]
-	ld hl, wcb2f
+	ld a, [wBillsPC_BackupCursorPosition]
+	ld hl, wBillsPC_BackupScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	ld a, $1
@@ -2170,20 +2127,20 @@
 	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyMonToTemp
 	call CloseSRAM
-	callba Function5088b
+	callba CalcwBufferMonStats
 	ld a, PC_DEPOSIT
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ret
 ; e32fa
 
-Functione32fa: ; e32fa
-	ld a, [wcb2e]
+.CopyToBox: ; e32fa
+	ld a, [wBillsPC_LoadedBox]
 	dec a
 	ld e, a
 	callba MovePkmnWOMail_SaveGame
-	ld a, [wcb2b]
-	ld hl, wcb2a
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	callba Function51322
@@ -2190,9 +2147,9 @@
 	ret
 ; e3316
 
-Functione3316: ; e3316
-	ld a, [wcb30]
-	ld hl, wcb2f
+.CopyFromParty: ; e3316
+	ld a, [wBillsPC_BackupCursorPosition]
+	ld hl, wBillsPC_BackupScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	ld hl, PartySpecies
@@ -2206,13 +2163,13 @@
 	call CopyMonToTemp
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ret
 ; e3346
 
-Functione3346: ; e3346
-	ld a, [wcb2b]
-	ld hl, wcb2a
+.CopyToParty: ; e3346
+	ld a, [wBillsPC_CursorPosition]
+	ld hl, wBillsPC_ScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
 	callba Function5138b
@@ -2232,7 +2189,7 @@
 	ld bc, PKMN_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld de, wd002
+	ld de, wBufferMonNick
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	ret
@@ -2241,7 +2198,7 @@
 	ld bc, NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld de, wd00d
+	ld de, wBufferMonOT
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ret
@@ -2249,7 +2206,7 @@
 CopyMonToTemp: ; e3389 (38:7389)
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	call CopyBytes
 	ret
 
@@ -2287,16 +2244,16 @@
 	dba sBox14
 ; e33d0
 
-Functione33d0: ; e33d0 (38:73d0)
+BillsPC_ApplyPalettes: ; e33d0 (38:73d0)
 	ld b, a
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100
 	call DmgToCgbBGPals
-	ld a, $fc
-	call Functioncf8
+	ld a, %11111100
+	call DmgToCgbObjPal0
 	ret
 
-Functione33df: ; e33df (38:73df)
+BillsPC_Jumptable: ; e33df (38:73df)
 	ld e, a
 	ld d, $0
 rept 2
@@ -2307,10 +2264,10 @@
 	ld l, a
 	ret
 
-Functione33e8: ; e33e8 (38:73e8)
+BillsPC_InitGFX: ; e33e8 (38:73e8)
 	call DisableLCD
 	ld hl, VTiles2 tile $00
-	ld bc, $310
+	ld bc, $31 tiles
 	xor a
 	call ByteFill
 	call LoadStandardFont
@@ -2317,7 +2274,7 @@
 	call LoadFontsBattleExtra
 	ld hl, PCMailGFX
 	ld de, VTiles2 tile $5c
-	ld bc, $40
+	ld bc, 4 tiles
 	call CopyBytes
 	ld hl, PCSelectLZ
 	ld de, VTiles0 tile $00
@@ -2353,12 +2310,12 @@
 
 _ChangeBox: ; e35aa (38:75aa)
 	call LoadStandardMenuDataHeader
-	call Functione35e2
+	call BillsPC_ClearTilemap
 .loop
 	xor a
 	ld [hBGMapMode], a
-	call Functione36cf
-	call Functione379c
+	call BillsPC_PrintBoxName
+	call BillsPC_PlaceChooseABoxString
 	ld hl, _ChangeBox_menudataheader
 	call CopyMenuDataHeader
 	xor a
@@ -2366,18 +2323,18 @@
 	hlcoord 0, 4
 	lb bc, 8, 9
 	call TextBox
-	call HandleScrollingMenu
-	ld a, [wcf73]
-	cp $2
+	call ScrollingMenu
+	ld a, [wMenuJoypad]
+	cp B_BUTTON
 	jr z, .done
-	call Functione37af
-	call Functione36f9
+	call BillsPC_PlaceWhatsUpString
+	call BillsPC_ChangeBoxSubmenu
 	jr .loop
 .done
-	call WriteBackup
+	call CloseWindow
 	ret
 
-Functione35e2: ; e35e2 (38:75e2)
+BillsPC_ClearTilemap: ; e35e2 (38:75e2)
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 0
@@ -2402,7 +2359,7 @@
 	dba .boxes
 	dba .boxnames
 	dba NULL
-	dba Functione3632
+	dba BillsPC_PrintBoxCountAndCapacity
 ; e3609
 
 .boxes: ; e3609
@@ -2434,7 +2391,7 @@
 	ret
 ; e3632 (38:7632)
 
-Functione3632: ; e3632
+BillsPC_PrintBoxCountAndCapacity: ; e3632
 	hlcoord 11, 7
 	lb bc, 5, 7
 	call TextBox
@@ -2442,7 +2399,7 @@
 	cp -1
 	ret z
 	hlcoord 12, 9
-	ld de, String_e3663
+	ld de, .Pokemon
 	call PlaceString
 	call GetBoxCount
 	ld [wd265], a
@@ -2450,16 +2407,16 @@
 	ld de, wd265
 	lb bc, 1, 2
 	call PrintNum
-	ld de, String_e3668
+	ld de, .out_of_20
 	call PlaceString
 	ret
 ; e3663
 
-String_e3663: ; e3663
+.Pokemon: ; e3663
 	db "#MON@"
 ; e3668
 
-String_e3668: ; e3668
+.out_of_20: ; e3668
 	; db "/20@"
 	db "/"
 	db "0" + MONS_PER_BOX / 10 ; "2"
@@ -2526,13 +2483,13 @@
 	dba sBox14
 ; e36cf
 
-Functione36cf: ; e36cf (38:76cf)
+BillsPC_PrintBoxName: ; e36cf (38:76cf)
 	hlcoord 0, 0
 	ld b, 2
 	ld c, 18
 	call TextBox
 	hlcoord 1, 2
-	ld de, String_e36f1
+	ld de, .Current
 	call PlaceString
 	ld a, [wCurBox]
 	and $f
@@ -2542,17 +2499,17 @@
 	ret
 ; e36f1 (38:76f1)
 
-String_e36f1: ; e36f1
+.Current: ; e36f1
 	db "CURRENT@"
 ; e36f9
 
-Functione36f9: ; e36f9 (38:76f9)
+BillsPC_ChangeBoxSubmenu: ; e36f9 (38:76f9)
 	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .Switch
 	cp $2
@@ -2572,12 +2529,12 @@
 	dec a
 	ld c, a
 	callba PrintPCBox
-	call Functione35e2
+	call BillsPC_ClearTilemap
 	and a
 	ret
 
 .EmptyBox
-	call Functione37be
+	call BillsPC_PlaceEmptyBoxString_SFX
 	and a
 	ret
 
@@ -2604,7 +2561,7 @@
 	ld e, l
 	ld d, h
 	ld hl, wd002
-	ld c, $8
+	ld c, BOX_NAME_LENGTH - 1
 	call InitString
 	ld a, [MenuSelection]
 	dec a
@@ -2633,27 +2590,27 @@
 	db "QUIT@"
 ; 0xe379c
 
-Functione379c: ; e379c (38:779c)
-	ld de, String_e37a1
-	jr Functione37e3
+BillsPC_PlaceChooseABoxString: ; e379c (38:779c)
+	ld de, .ChooseABox
+	jr BillsPC_PlaceChangeBoxString
 ; e37a1 (38:77a1)
 
-String_e37a1: ; e37a1
+.ChooseABox: ; e37a1
 	db "Choose a BOX.@"
 ; e37af
 
-Functione37af: ; e37af (38:77af)
-	ld de, String_e37b4
-	jr Functione37e3
+BillsPC_PlaceWhatsUpString: ; e37af (38:77af)
+	ld de, .WhatsUp
+	jr BillsPC_PlaceChangeBoxString
 ; e37b4 (38:77b4)
 
-String_e37b4: ; e37b4
+.WhatsUp: ; e37b4
 	db "What's up?@"
 ; e37be
 
-Functione37be: ; e37be (38:77be)
-	ld de, String_e37d3
-	call Functione37e3
+BillsPC_PlaceEmptyBoxString_SFX: ; e37be (38:77be)
+	ld de, .NoMonString
+	call BillsPC_PlaceChangeBoxString
 	ld de, SFX_WRONG
 	call WaitPlaySFX
 	call WaitSFX
@@ -2662,11 +2619,11 @@
 	ret
 ; e37d3 (38:77d3)
 
-String_e37d3: ; e37d3
+.NoMonString: ; e37d3
 	db "There's no #MON.@"
 ; e37e3
 
-Functione37e3: ; e37e3 (38:77e3)
+BillsPC_PlaceChangeBoxString: ; e37e3 (38:77e3)
 	push de
 	hlcoord 0, 14
 	lb bc, 2, 18
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -1,7 +1,7 @@
-Function16e1d: ; 16e1d
-	call Function16ed6
+CheckBreedmonCompatibility: ; 16e1d
+	call .CheckBreedingGroupCompatibility
 	ld c, $0
-	jp nc, .asm_16eb7
+	jp nc, .done
 	ld a, [wBreedMon1Species]
 	ld [CurPartySpecies], a
 	ld a, [wBreedMon1DVs]
@@ -8,15 +8,15 @@
 	ld [TempMonDVs], a
 	ld a, [wBreedMon1DVs + 1]
 	ld [TempMonDVs + 1], a
-	ld a, $3
+	ld a, BREEDMON
 	ld [MonType], a
 	predef GetGender
-	jr c, .asm_16e70
+	jr c, .genderless
 	ld b, $1
-	jr nz, .asm_16e48
+	jr nz, .breedmon2
 	inc b
 
-.asm_16e48
+.breedmon2
 	push bc
 	ld a, [wBreedMon2Species]
 	ld [CurPartySpecies], a
@@ -28,57 +28,58 @@
 	ld [MonType], a
 	predef GetGender
 	pop bc
-	jr c, .asm_16e70
+	jr c, .genderless
 	ld a, $1
-	jr nz, .asm_16e6d
+	jr nz, .compare_gender
 	inc a
 
-.asm_16e6d
+.compare_gender
 	cp b
-	jr nz, .asm_16e89
+	jr nz, .compute
 
-.asm_16e70
+.genderless
 	ld c, $0
 	ld a, [wBreedMon1Species]
 	cp DITTO
-	jr z, .asm_16e82
+	jr z, .ditto1
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr nz, .asm_16eb7
-	jr .asm_16e89
+	jr nz, .done
+	jr .compute
 
-.asm_16e82
+.ditto1
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr z, .asm_16eb7
+	jr z, .done
 
-.asm_16e89
-	call Function16ebc
-	ld c, $ff
-	jp z, .asm_16eb7
+.compute
+	call .CheckDVs
+	ld c, 255
+	jp z, .done
 	ld a, [wBreedMon2Species]
 	ld b, a
 	ld a, [wBreedMon1Species]
 	cp b
-	ld c, $fe
-	jr z, .asm_16e9f
-	ld c, $80
-.asm_16e9f
+	ld c, 254
+	jr z, .compare_ids
+	ld c, 128
+.compare_ids
+	; Speed up
 	ld a, [wBreedMon1ID]
 	ld b, a
 	ld a, [wBreedMon2ID]
 	cp b
-	jr nz, .asm_16eb7
+	jr nz, .done
 	ld a, [wBreedMon1ID + 1]
 	ld b, a
 	ld a, [wBreedMon2ID + 1]
 	cp b
-	jr nz, .asm_16eb7
+	jr nz, .done
 	ld a, c
-	sub $4d
+	sub 77
 	ld c, a
 
-.asm_16eb7
+.done
 	ld a, c
 	ld [wd265], a
 	ret
@@ -85,39 +86,47 @@
 ; 16ebc
 
 
-Function16ebc: ; 16ebc (5:6ebc)
+.CheckDVs: ; 16ebc (5:6ebc)
+; If Defense DVs match and the lower 3 bits of the Special DVs match,
+; maximize the chances of spawning an egg regardless of species.
 	ld a, [wBreedMon1DVs]
-	and $f
+	and %1111
 	ld b, a
 	ld a, [wBreedMon2DVs]
-	and $f
+	and %1111
 	cp b
 	ret nz
 	ld a, [wBreedMon1DVs + 1]
-	and $7
+	and %111
 	ld b, a
 	ld a, [wBreedMon2DVs + 1]
-	and $7
+	and %111
 	cp b
 	ret
 ; 16ed6
 
-Function16ed6: ; 16ed6
+.CheckBreedingGroupCompatibility: ; 16ed6
+; If either mon is in the No Eggs group,
+; they are not compatible.
 	ld a, [wBreedMon2Species]
 	ld [CurSpecies], a
 	call GetBaseData
 	ld a, [BaseEggGroups]
-	cp $ff
-	jr z, .asm_16f3a
+	cp NO_EGGS * $11
+	jr z, .Incompatible
+
 	ld a, [wBreedMon1Species]
 	ld [CurSpecies], a
 	call GetBaseData
 	ld a, [BaseEggGroups]
-	cp $ff
-	jr z, .asm_16f3a
+	cp NO_EGGS * $11
+	jr z, .Incompatible
+
+; Ditto is automatically compatible with everything.
+; If not Ditto, load the breeding groups into b/c and d/e.
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr z, .asm_16f3c
+	jr z, .Compatible
 	ld [CurSpecies], a
 	call GetBaseData
 	ld a, [BaseEggGroups]
@@ -128,9 +137,10 @@
 	and $f0
 	swap a
 	ld c, a
+
 	ld a, [wBreedMon1Species]
 	cp DITTO
-	jr z, .asm_16f3c
+	jr z, .Compatible
 	ld [CurSpecies], a
 	push bc
 	call GetBaseData
@@ -143,22 +153,24 @@
 	and $f0
 	swap a
 	ld e, a
+
 	ld a, d
 	cp b
-	jr z, .asm_16f3c
+	jr z, .Compatible
 	cp c
-	jr z, .asm_16f3c
+	jr z, .Compatible
+
 	ld a, e
 	cp b
-	jr z, .asm_16f3c
+	jr z, .Compatible
 	cp c
-	jr z, .asm_16f3c
+	jr z, .Compatible
 
-.asm_16f3a
+.Incompatible
 	and a
 	ret
 
-.asm_16f3c
+.Compatible
 	scf
 	ret
 ; 16f3e
@@ -189,32 +201,32 @@
 ; 16f5e
 
 OverworldHatchEgg:: ; 16f5e
-	call ResetWindow
+	call RefreshScreen
 	call LoadStandardMenuDataHeader
-	call Function16f70
+	call HatchEggs
 	call ExitAllMenus
 	call RestartMapMusic
-	jp LoadMoveSprites
+	jp CloseText
 ; 16f70
 
-Function16f70: ; 16f70 (5:6f70)
+HatchEggs: ; 16f70 (5:6f70)
 	ld de, PartySpecies
 	ld hl, PartyMon1Happiness
 	xor a
 	ld [CurPartyMon], a
 
-Function16f7a: ; 16f7a (5:6f7a)
+.loop: ; 16f7a (5:6f7a)
 	ld a, [de]
 	inc de
 	cp -1
-	jp z, Function1708a
+	jp z, .done
 	push de
 	push hl
 	cp EGG
-	jp nz, Function1707d
+	jp nz, .next
 	ld a, [hl]
 	and a
-	jp nz, Function1707d
+	jp nz, .next
 	ld [hl], $78
 
 	push de
@@ -274,7 +286,7 @@
 	ld [hl], a
 	pop hl
 	push hl
-	ld bc, MON_EXP + 2
+	ld bc, MON_STAT_EXP - 1
 	add hl, bc
 	ld b, $0
 	predef CalcPkmnStats
@@ -304,7 +316,7 @@
 	ld e, l
 	ld hl, PlayerName
 	call CopyBytes
-	ld hl, UnknownText_0x1708b
+	ld hl, .Text_HatchEgg
 	call PrintText
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
@@ -313,11 +325,12 @@
 	ld d, h
 	ld e, l
 	push de
-	ld hl, UnknownText_0x170ba
+	ld hl, .Text_NicknameHatchling
 	call PrintText
 	call YesNoBox
 	pop de
 	jr c, .nonickname
+
 	ld a, $1
 	ld [wd26b], a
 	xor a
@@ -328,13 +341,14 @@
 	pop hl
 	ld de, StringBuffer1
 	call InitName
-	jr Function1707d
+	jr .next
+
 .nonickname
 	ld hl, StringBuffer1
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-Function1707d: ; 1707d (5:707d)
+.next: ; 1707d (5:707d)
 	ld hl, CurPartyMon
 	inc [hl]
 	pop hl
@@ -341,19 +355,16 @@
 	ld de, PARTYMON_STRUCT_LENGTH
 	add hl, de
 	pop de
-	jp Function16f7a
+	jp .loop
 
-Function1708a: ; 1708a (5:708a)
+.done: ; 1708a (5:708a)
 	ret
 ; 1708b (5:708b)
 
-UnknownText_0x1708b: ; 0x1708b
+.Text_HatchEgg: ; 0x1708b
 	; Huh? @ @
 	text_jump UnknownText_0x1c0db0
 	start_asm
-; 0x17090
-
-Function17090: ; 17090
 	ld hl, VramState
 	res 0, [hl]
 	push hl
@@ -361,8 +372,8 @@
 	push bc
 	ld a, [CurPartySpecies]
 	push af
-	call Function1728f
-	ld hl, UnknownText_0x170b0
+	call EggHatch_AnimationSequence
+	ld hl, .ClearTextbox
 	call PrintText
 	pop af
 	ld [CurPartySpecies], a
@@ -369,30 +380,30 @@
 	pop bc
 	pop de
 	pop hl
-	ld hl, UnknownText_0x170b5
+	ld hl, .CameOutOfItsEgg
 	ret
 ; 170b0 (5:70b0)
 
-UnknownText_0x170b0: ; 0x170b0
+.ClearTextbox: ; 0x170b0
 	;
 	text_jump UnknownText_0x1c0db8
 	db "@"
 ; 0x170b5
 
-UnknownText_0x170b5: ; 0x170b5
+.CameOutOfItsEgg: ; 0x170b5
 	; came out of its EGG!@ @
 	text_jump UnknownText_0x1c0dba
 	db "@"
 ; 0x170ba
 
-UnknownText_0x170ba: ; 0x170ba
+.Text_NicknameHatchling: ; 0x170ba
 	; Give a nickname to @ ?
 	text_jump UnknownText_0x1c0dd8
 	db "@"
 ; 0x170bf
 
-Function170bf: ; 170bf
-	call Function17197
+InitEggMoves: ; 170bf
+	call GetHeritableMoves
 	ld d, h
 	ld e, l
 	ld b, NUM_MOVES
@@ -409,9 +420,9 @@
 	inc hl
 	dec c
 	jr nz, .next
-	call Function170e4
+	call GetEggMove
 	jr nc, .skip
-	call Function17169
+	call LoadEggMove
 
 .skip
 	inc de
@@ -422,7 +433,7 @@
 	ret
 ; 170e4
 
-Function170e4: ; 170e4
+GetEggMove: ; 170e4
 GLOBAL EggMoves
 
 	push bc
@@ -440,7 +451,7 @@
 	ld a, BANK(EggMoves)
 	call GetFarByte
 	cp -1
-	jr z, .found_mon
+	jr z, .reached_end
 	ld b, a
 	ld a, [de]
 	cp b
@@ -448,8 +459,8 @@
 	inc hl
 	jr .loop
 
-.found_mon
-	call Function1720b
+.reached_end
+	call GetBreedmonMovePointer
 	ld b, NUM_MOVES
 .loop2
 	ld a, [de]
@@ -504,7 +515,7 @@
 	ld a, [de]
 	cp b
 	jr nz, .loop5
-	ld [wd262], a
+	ld [wPutativeTMHMMove], a
 	predef CanLearnTMHMMove
 	ld a, c
 	and a
@@ -521,7 +532,7 @@
 	ret
 ; 17169
 
-Function17169: ; 17169
+LoadEggMove: ; 17169
 	push de
 	push bc
 	ld a, [de]
@@ -556,7 +567,7 @@
 	ret
 ; 17197
 
-Function17197: ; 17197
+GetHeritableMoves: ; 17197
 	ld hl, wBreedMon2Moves
 	ld a, [wBreedMon1Species]
 	cp DITTO
@@ -564,7 +575,7 @@
 	ld a, [wBreedMon2Species]
 	cp DITTO
 	jr z, .ditto2
-	ld a, [wDittoInDaycare]
+	ld a, [wBreedMotherOrNonDitto]
 	and a
 	ret z
 	ld hl, wBreedMon1Moves
@@ -579,7 +590,7 @@
 	ld [TempMonDVs], a
 	ld a, [wBreedMon2DVs + 1]
 	ld [TempMonDVs + 1], a
-	ld a, $3
+	ld a, BREEDMON
 	ld [MonType], a
 	predef GetGender
 	jr c, .inherit_mon2_moves
@@ -595,7 +606,7 @@
 	ld [TempMonDVs], a
 	ld a, [wBreedMon1DVs + 1]
 	ld [TempMonDVs + 1], a
-	ld a, $3
+	ld a, BREEDMON
 	ld [MonType], a
 	predef GetGender
 	jr c, .inherit_mon1_moves
@@ -614,7 +625,7 @@
 	ret
 ; 1720b
 
-Function1720b: ; 1720b
+GetBreedmonMovePointer: ; 1720b
 	ld hl, wBreedMon1Moves
 	ld a, [wBreedMon1Species]
 	cp DITTO
@@ -622,7 +633,7 @@
 	ld a, [wBreedMon2Species]
 	cp DITTO
 	jr z, .ditto
-	ld a, [wDittoInDaycare]
+	ld a, [wBreedMotherOrNonDitto]
 	and a
 	ret z
 
@@ -632,7 +643,7 @@
 ; 17224
 
 
-Function17224: ; 17224 (5:7224)
+GetEggFrontpic: ; 17224 (5:7224)
 	push de
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
@@ -642,7 +653,7 @@
 	pop de
 	predef_jump GetFrontpic
 
-Function1723c: ; 1723c (5:723c)
+GetHatchlingFrontpic: ; 1723c (5:723c)
 	push de
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
@@ -652,7 +663,7 @@
 	pop de
 	predef_jump FrontpicPredef
 
-Function17254: ; 17254 (5:7254)
+Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
 	push af
 	call WaitTop
 	push hl
@@ -670,15 +681,15 @@
 	lb bc, 7, 7
 	predef FillBox
 	pop af
-	call Function17363
+	call Hatch_LoadFrontpicPal
 	call SetPalettes
 	jp WaitBGMap
 
-Function1727f: ; 1727f (5:727f)
+EggHatch_DoAnimFrame: ; 1727f (5:727f)
 	push hl
 	push de
 	push bc
-	callab Function8cf69
+	callab PlaySpriteAnimations
 	call DelayFrame
 	pop bc
 	pop de
@@ -685,7 +696,7 @@
 	pop hl
 	ret
 
-Function1728f: ; 1728f (5:728f)
+EggHatch_AnimationSequence: ; 1728f (5:728f)
 	ld a, [wd265]
 	ld [wJumptableIndex], a
 	ld a, [CurSpecies]
@@ -692,7 +703,7 @@
 	push af
 	ld de, MUSIC_NONE
 	call PlayMusic
-	callba Function8000
+	callba BlankScreen
 	call DisableLCD
 	ld hl, EggHatchGFX
 	ld de, VTiles0 tile $00
@@ -699,69 +710,71 @@
 	ld bc, $20
 	ld a, BANK(EggHatchGFX)
 	call FarCopyBytes
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ld de, VTiles2 tile $00
 	ld a, [wJumptableIndex]
-	call Function1723c
+	call GetHatchlingFrontpic
 	ld de, VTiles2 tile $31
 	ld a, EGG
-	call Function17224
+	call GetEggFrontpic
 	ld de, MUSIC_EVOLUTION
 	call PlayMusic
 	call EnableLCD
 	hlcoord 7, 4
-	ld b, $98
-	ld c, $31
+	ld b, VBGMap0 / $100
+	ld c, $31 ; Egg tiles start here
 	ld a, EGG
-	call Function17254
-	ld c, $50
+	call Hatch_UpdateFrontpicBGMapCenter
+	ld c, 80
 	call DelayFrames
 	xor a
 	ld [wcf64], a
 	ld a, [hSCX]
 	ld b, a
-.asm_172ee
+.outerloop
 	ld hl, wcf64
 	ld a, [hl]
 	inc [hl]
-	cp $8
-	jr nc, .asm_17327
+	cp 8
+	jr nc, .done
 	ld e, [hl]
-.asm_172f8
-	ld a, $2
+.loop
+; wobble e times
+	ld a, 2
 	ld [hSCX], a
-	ld a, $fe
-	ld [wc3c0], a
-	call Function1727f
-	ld c, $2
+	ld a, -2
+	ld [wGlobalAnimXOffset], a
+	call EggHatch_DoAnimFrame
+	ld c, 2
 	call DelayFrames
-	ld a, $fe
+	ld a, -2
 	ld [hSCX], a
-	ld a, $2
-	ld [wc3c0], a
-	call Function1727f
-	ld c, $2
+	ld a, 2
+	ld [wGlobalAnimXOffset], a
+	call EggHatch_DoAnimFrame
+	ld c, 2
 	call DelayFrames
 	dec e
-	jr nz, .asm_172f8
-	ld c, $10
+	jr nz, .loop
+	ld c, 16
 	call DelayFrames
-	call Function1736d
-	jr .asm_172ee
-.asm_17327
+	call EggHatch_CrackShell
+	jr .outerloop
+
+.done
 	ld de, SFX_EGG_HATCH
 	call PlaySFX
 	xor a
 	ld [hSCX], a
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	call ClearSprites
-	call Function173b3
+	call Hatch_InitShellFragments
 	hlcoord 6, 3
-	ld b, $98
-	ld c, $0
+	ld b, VBGMap0 / $100
+	ld c, $00 ; Hatchling tiles start here
 	ld a, [wJumptableIndex]
-	call Function17254
-	call Function17418
+	call Hatch_UpdateFrontpicBGMapCenter
+	call Hatch_ShellFragmentLoop
 	call WaitSFX
 	ld a, [wJumptableIndex]
 	ld [CurPartySpecies], a
@@ -773,13 +786,13 @@
 	ld [CurSpecies], a
 	ret
 
-Function17363: ; 17363 (5:7363)
+Hatch_LoadFrontpicPal: ; 17363 (5:7363)
 	ld [PlayerHPPal], a
 	ld b, SCGB_0B
 	ld c, $0
 	jp GetSGBLayout
 
-Function1736d: ; 1736d (5:736d)
+EggHatch_CrackShell: ; 1736d (5:736d)
 	ld a, [wcf64]
 	dec a
 	and $7
@@ -789,12 +802,12 @@
 	ret nc
 	swap a
 	srl a
-	add $4c
+	add 9 * 8 + 4
 	ld d, a
-	ld e, $58
+	ld e, 11 * 8
 	ld a, SPRITE_ANIM_INDEX_19
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $0
 	ld de, SFX_EGG_CRACK
@@ -805,12 +818,12 @@
 INCBIN "gfx/unknown/017393.2bpp"
 ; 173b3
 
-Function173b3: ; 173b3 (5:73b3)
-	callba Function8cf53
-	ld hl, Unknown_173ef
+Hatch_InitShellFragments: ; 173b3 (5:73b3)
+	callba ClearSpriteAnims
+	ld hl, .SpriteData
 .loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .done
 	ld e, a
 	ld a, [hli]
@@ -821,156 +834,162 @@
 	ld b, a
 	push hl
 	push bc
+
 	ld a, SPRITE_ANIM_INDEX_1C
 	call _InitSpriteAnimStruct
-	ld hl, $3
+
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $0
+
 	pop de
 	ld a, e
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	add [hl]
 	ld [hl], a
-	ld hl, $b
+
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	ld [hl], d
+
 	pop hl
 	jr .loop
 .done
 	ld de, SFX_EGG_HATCH
 	call PlaySFX
-	call Function1727f
+	call EggHatch_DoAnimFrame
 	ret
 ; 173ef (5:73ef)
 
-Unknown_173ef: ; 173ef
+.SpriteData: ; 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
+	dsprite 10, 4,  9, 0, $00, $3c
+	dsprite 11, 4,  9, 0, $01, $04
+	dsprite 10, 4, 10, 0, $00, $30
+	dsprite 11, 4, 10, 0, $01, $10
+	dsprite 10, 4, 11, 0, $02, $24
+	dsprite 11, 4, 11, 0, $03, $1c
+	dsprite 10, 0,  9, 4, $00, $36
+	dsprite 12, 0,  9, 4, $01, $0a
+	dsprite 10, 0, 10, 4, $02, $2a
+	dsprite 12, 0, 10, 4, $03, $16
+	db -1
 ; 17418
 
-Function17418: ; 17418 (5:7418)
-	ld c, $81
-.asm_1741a
-	call Function1727f
+Hatch_ShellFragmentLoop: ; 17418 (5:7418)
+	ld c, 129
+.loop
+	call EggHatch_DoAnimFrame
 	dec c
-	jr nz, .asm_1741a
+	jr nz, .loop
 	ret
 
 Special_DayCareMon1: ; 17421
-	ld hl, UnknownText_0x17467
+	ld hl, DayCareMon1Text
 	call PrintText
 	ld a, [wBreedMon1Species]
 	call PlayCry
 	ld a, [wDaycareLady]
 	bit 0, a
-	jr z, Function1745f
-	call KeepTextOpen
+	jr z, DayCareMonCursor
+	call ButtonSound
 	ld hl, wBreedMon2Nick
-	call Function1746c
+	call DayCareMonCompatibilityText
 	jp PrintText
 
 Special_DayCareMon2: ; 17440
-	ld hl, UnknownText_0x17462
+	ld hl, DayCareMon2Text
 	call PrintText
 	ld a, [wBreedMon2Species]
 	call PlayCry
 	ld a, [wDaycareMan]
 	bit 0, a
-	jr z, Function1745f
-	call KeepTextOpen
+	jr z, DayCareMonCursor
+	call ButtonSound
 	ld hl, wBreedMon1Nick
-	call Function1746c
+	call DayCareMonCompatibilityText
 	jp PrintText
 
-Function1745f: ; 1745f
+DayCareMonCursor: ; 1745f
 	jp WaitPressAorB_BlinkCursor
 ; 17462
 
-UnknownText_0x17462: ; 0x17462
+DayCareMon2Text: ; 0x17462
 	; It's @ that was left with the DAY-CARE LADY.
 	text_jump UnknownText_0x1c0df3
 	db "@"
 ; 0x17467
 
-UnknownText_0x17467: ; 0x17467
+DayCareMon1Text: ; 0x17467
 	; It's @ that was left with the DAY-CARE MAN.
 	text_jump UnknownText_0x1c0e24
 	db "@"
 ; 0x1746c
 
-Function1746c: ; 1746c
+DayCareMonCompatibilityText: ; 1746c
 	push bc
 	ld de, StringBuffer1
 	ld bc, NAME_LENGTH
 	call CopyBytes
-	call Function16e1d
+	call CheckBreedmonCompatibility
 	pop bc
 	ld a, [wd265]
-	ld hl, UnknownText_0x1749c
-	cp $ff
-	jr z, .asm_1749b
-	ld hl, UnknownText_0x174a1
+	ld hl, .AllAlone
+	cp -1
+	jr z, .done
+	ld hl, .Incompatible
 	and a
-	jr z, .asm_1749b
-	ld hl, UnknownText_0x174a6
+	jr z, .done
+	ld hl, .HighCompatibility
 	cp 230
-	jr nc, .asm_1749b
+	jr nc, .done
 	cp 70
-	ld hl, UnknownText_0x174ab
-	jr nc, .asm_1749b
-	ld hl, UnknownText_0x174b0
+	ld hl, .ModerateCompatibility
+	jr nc, .done
+	ld hl, .SlightCompatibility
 
-.asm_1749b
+.done
 	ret
 ; 1749c
 
-UnknownText_0x1749c: ; 0x1749c
+.AllAlone: ; 0x1749c
 	; It's brimming with energy.
 	text_jump UnknownText_0x1c0e54
 	db "@"
 ; 0x174a1
 
-UnknownText_0x174a1: ; 0x174a1
+.Incompatible: ; 0x174a1
 	; It has no interest in @ .
 	text_jump UnknownText_0x1c0e6f
 	db "@"
 ; 0x174a6
 
-UnknownText_0x174a6: ; 0x174a6
+.HighCompatibility: ; 0x174a6
 	; It appears to care for @ .
 	text_jump UnknownText_0x1c0e8d
 	db "@"
 ; 0x174ab
 
-UnknownText_0x174ab: ; 0x174ab
+.ModerateCompatibility: ; 0x174ab
 	; It's friendly with @ .
 	text_jump UnknownText_0x1c0eac
 	db "@"
 ; 0x174b0
 
-UnknownText_0x174b0: ; 0x174b0
+.SlightCompatibility: ; 0x174b0
 	; It shows interest in @ .
 	text_jump UnknownText_0x1c0ec6
 	db "@"
 ; 0x174b5
 
-Function_174b5: ; 174b5
-	ld hl, String_174b9
+DayCareMonPrintEmptyString: ; 174b5
+; unreferenced
+	ld hl, .string
 	ret
 ; 174b9
 
-String_174b9: ; 174b9
+.string: ; 174b9
 	db "@"
 ; 174ba
 
--- a/engine/buena_phone_scripts.asm
+++ b/engine/buena_phone_scripts.asm
@@ -18,17 +18,17 @@
 	checkday
 	iftrue .day
 	writetext UnknownText_0xa0d42
-	keeptextopen
+	buttonsound
 	end
 
 .morn:
 	writetext UnknownText_0xa0c28
-	keeptextopen
+	buttonsound
 	end
 
 .day:
 	writetext UnknownText_0xa0c72
-	keeptextopen
+	buttonsound
 	end
 
 BuenaPhoneScript_AfterMidnight1:
@@ -43,22 +43,22 @@
 	checkday
 	iftrue .day
 	writetext UnknownText_0xa0e29
-	keeptextopen
+	buttonsound
 	end
 
 .morn:
 	writetext UnknownText_0xa0d96
-	keeptextopen
+	buttonsound
 	end
 
 .day:
 	writetext UnknownText_0xa0dcf
-	keeptextopen
+	buttonsound
 	end
 
 BuenaPhoneScript_AfterMidnight2:
 	writetext UnknownText_0xa0e01
-	keeptextopen
+	buttonsound
 	end
 
 BuenaPhoneScript_Rocket:
--- /dev/null
+++ b/engine/buy_sell_toss.asm
@@ -1,0 +1,238 @@
+SelectQuantityToToss: ; 24fbf
+	ld hl, TossItem_MenuDataHeader
+	call LoadMenuDataHeader
+	call Toss_Sell_Loop
+	ret
+; 24fc9
+
+SelectQuantityToBuy: ; 24fc9
+	callba GetItemPrice
+RooftopSale_SelectQuantityToBuy: ; 24fcf
+	ld a, d
+	ld [Buffer1], a
+	ld a, e
+	ld [Buffer2], a
+	ld hl, BuyItem_MenuDataHeader
+	call LoadMenuDataHeader
+	call Toss_Sell_Loop
+	ret
+; 24fe1
+
+SelectQuantityToSell: ; 24fe1
+	callba GetItemPrice
+	ld a, d
+	ld [Buffer1], a
+	ld a, e
+	ld [Buffer2], a
+	ld hl, SellItem_MenuDataHeader
+	call LoadMenuDataHeader
+	call Toss_Sell_Loop
+	ret
+; 24ff9
+
+Toss_Sell_Loop: ; 24ff9
+	ld a, 1
+	ld [wItemQuantityChangeBuffer], a
+.loop
+	call BuySellToss_UpdateQuantityDisplay ; update display
+	call BuySellToss_InterpretJoypad       ; joy action
+	jr nc, .loop
+	cp -1
+	jr nz, .nope ; pressed B
+	scf
+	ret
+
+.nope
+	and a
+	ret
+; 2500e
+
+BuySellToss_InterpretJoypad: ; 2500e
+	call Function354b ; get joypad
+	bit B_BUTTON_F, c
+	jr nz, .b
+	bit A_BUTTON_F, c
+	jr nz, .a
+	bit D_DOWN_F, c
+	jr nz, .down
+	bit D_UP_F, c
+	jr nz, .up
+	bit D_LEFT_F, c
+	jr nz, .left
+	bit D_RIGHT_F, c
+	jr nz, .right
+	and a
+	ret
+
+.b
+	ld a, -1
+	scf
+	ret
+
+.a
+	ld a, 0
+	scf
+	ret
+
+.down
+	ld hl, wItemQuantityChangeBuffer
+	dec [hl]
+	jr nz, .finish_down
+	ld a, [wItemQuantityBuffer]
+	ld [hl], a
+
+.finish_down
+	and a
+	ret
+
+.up
+	ld hl, wItemQuantityChangeBuffer
+	inc [hl]
+	ld a, [wItemQuantityBuffer]
+	cp [hl]
+	jr nc, .finish_up
+	ld [hl], 1
+
+.finish_up
+	and a
+	ret
+
+.left
+	ld a, [wItemQuantityChangeBuffer]
+	sub 10
+	jr c, .load_1
+	jr z, .load_1
+	jr .finish_left
+
+.load_1
+	ld a, 1
+
+.finish_left
+	ld [wItemQuantityChangeBuffer], a
+	and a
+	ret
+
+.right
+	ld a, [wItemQuantityChangeBuffer]
+	add 10
+	ld b, a
+	ld a, [wItemQuantityBuffer]
+	cp b
+	jr nc, .finish_right
+	ld b, a
+
+.finish_right
+	ld a, b
+	ld [wItemQuantityChangeBuffer], a
+	and a
+	ret
+; 25072
+
+BuySellToss_UpdateQuantityDisplay: ; 25072
+	call MenuBox
+	call MenuBoxCoord2Tile
+	ld de, SCREEN_WIDTH + 1
+	add hl, de
+	ld [hl], "×"
+	inc hl
+	ld de, wItemQuantityChangeBuffer
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ld a, [wMenuData2Pointer]
+	ld e, a
+	ld a, [wMenuData2Pointer + 1]
+	ld d, a
+	ld a, [wMenuDataBank]
+	call FarCall_de
+	ret
+; 25097
+
+ret_25097: ; 25097
+	ret
+; 25098
+
+DisplayPurchasePrice: ; 25098
+	call BuySell_MultiplyPrice
+	call BuySell_DisplaySubtotal
+	ret
+; 2509f
+
+DisplaySellingPrice: ; 2509f
+	call BuySell_MultiplyPrice
+	call Sell_HalvePrice
+	call BuySell_DisplaySubtotal
+	ret
+; 250a9
+
+BuySell_MultiplyPrice: ; 250a9
+	xor a
+	ld [hMultiplicand + 0], a
+	ld a, [Buffer1]
+	ld [hMultiplicand + 1], a
+	ld a, [Buffer2]
+	ld [hMultiplicand + 2], a
+	ld a, [wItemQuantityChangeBuffer]
+	ld [hMultiplier], a
+	push hl
+	call Multiply
+	pop hl
+	ret
+; 250c1
+
+Sell_HalvePrice: ; 250c1
+	push hl
+	ld hl, hProduct + 1
+	ld a, [hl]
+	srl a
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hl], a
+	pop hl
+	ret
+; 250d1
+
+BuySell_DisplaySubtotal: ; 250d1
+	push hl
+	ld hl, hMoneyTemp
+	ld a, [hProduct + 1]
+	ld [hli], a
+	ld a, [hProduct + 2]
+	ld [hli], a
+	ld a, [hProduct + 3]
+	ld [hl], a
+	pop hl
+	inc hl
+	ld de, hMoneyTemp
+	lb bc, PRINTNUM_MONEY | 3, 6
+	call PrintNum
+	call WaitBGMap
+	ret
+; 250ed
+
+TossItem_MenuDataHeader: ; 0x250ed
+	db $40 ; flags
+	db 09, 15 ; start coords
+	db 11, 19 ; end coords
+	dw ret_25097
+	db 0 ; default option
+; 0x250f5
+
+BuyItem_MenuDataHeader: ; 0x250f5
+	db $40 ; flags
+	db 15, 07 ; start coords
+	db 17, 19 ; end coords
+	dw DisplayPurchasePrice
+	db -1 ; default option
+; 0x250fd
+
+SellItem_MenuDataHeader: ; 0x250fd
+	db $40 ; flags
+	db 15, 07 ; start coords
+	db 17, 19 ; end coords
+	dw DisplaySellingPrice
+	db 0 ; default option
+; 0x25105
--- a/engine/card_flip.asm
+++ b/engine/card_flip.asm
@@ -1,3 +1,7 @@
+CARDFLIP_LIGHT_OFF EQU $ef
+CARDFLIP_LIGHT_ON  EQU $f5
+CARDFLIP_DECK_SIZE EQU 4 * 6
+
 _CardFlip: ; e00ee (38:40ee)
 	ld hl, Options
 	set 4, [hl]
@@ -10,28 +14,30 @@
 	call DisableLCD
 	call LoadStandardFont
 	call LoadFontsExtra
-	ld hl, LZ_e0d16
+
+	ld hl, CardFlipLZ01
 	ld de, VTiles2 tile $00
 	call Decompress
-	ld hl, LZ_e0ea8
+	ld hl, CardFlipLZ02
 	ld de, VTiles2 tile $3e
 	call Decompress
-	ld hl, LZ_e0cdb
+	ld hl, CardFlipLZ03
 	ld de, VTiles0 tile $00
 	call Decompress
-	ld hl, GFX_e0cf6
+	ld hl, CardFlipOffButtonGFX
 	ld de, VTiles1 tile $6f
-	ld bc, $10
+	ld bc, 1 tiles
 	call CopyBytes
-	ld hl, GFX_e0d06
+	ld hl, CardFlipOnButtonGFX
 	ld de, VTiles1 tile $75
-	ld bc, $10
+	ld bc, 1 tiles
 	call CopyBytes
-	call Functione0521
-	call Functione04c1
-	call Functione0c37
+
+	call CardFlip_ShiftDigitsLeftTwoPixels
+	call CardFlip_InitTilemap
+	call CardFlip_InitAttrPals
 	call EnableLCD
-	call Function3200
+	call WaitBGMap2
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld de, $e4e4
@@ -40,8 +46,8 @@
 	xor a
 	ld [wJumptableIndex], a
 	ld a, $2
-	ld [wcf64], a
-	ld [wcf65], a
+	ld [wCardFlipCursorY], a
+	ld [wCardFlipCursorX], a
 	ld de, MUSIC_GAME_CORNER
 	call PlayMusic
 .MasterLoop
@@ -75,6 +81,7 @@
 ; e01a0 (38:41a0)
 
 .Jumptable: ; e01a0
+	
 	dw .AskPlayWithThree
 	dw .DeductCoins
 	dw .ChooseACard
@@ -93,15 +100,15 @@
 
 .AskPlayWithThree: ; e01b5
 	ld hl, .PlayWithThreeCoinsText
-	call Functione0489
+	call CardFlip_UpdateCoinBalanceDisplay
 	call YesNoBox
 	jr c, .SaidNo
-	call Functione0366
+	call CardFlip_ShuffleDeck
 	call .Increment
 	ret
 
 .SaidNo
-	ld a, $7
+	ld a, 7
 	ld [wJumptableIndex], a
 	ret
 ; e01cd
@@ -124,8 +131,8 @@
 	cp 3
 	jr nc, .deduct ; You have at least 3 coins.
 	ld hl, .NotEnoughCoinsText
-	call Functione0489
-	ld a, $7
+	call CardFlip_UpdateCoinBalanceDisplay
+	ld a, 7
 	ld [wJumptableIndex], a
 	ret
 
@@ -140,7 +147,7 @@
 	call PlaySFX
 	xor a
 	ld [hBGMapMode], a
-	call Functione049c
+	call CardFlip_PrintCoinBalance
 	ld a, $1
 	ld [hBGMapMode], a
 	call WaitSFX
@@ -159,29 +166,29 @@
 	ld [hBGMapMode], a
 	hlcoord 0, 0
 	lb bc, 12, 9
-	call Functione04e5
+	call CardFlip_FillGreenBox
 	hlcoord 9, 0
 	ld bc, SCREEN_WIDTH
-	ld a, [wc6e8]
+	ld a, [wCardFlipNumCardsPlayed]
 	call AddNTimes
-	ld [hl], $f5
+	ld [hl], CARDFLIP_LIGHT_ON
 	ld a, $1
 	ld [hBGMapMode], a
 	ld c, 20
 	call DelayFrames
 	hlcoord 2, 0
-	call Functione03c1
+	call PlaceCardFaceDown
 	ld a, $1
 	ld [hBGMapMode], a
 	ld c, 20
 	call DelayFrames
 	hlcoord 2, 6
-	call Functione03c1
+	call PlaceCardFaceDown
 	call WaitBGMap
 	ld hl, .ChooseACardText
-	call Functione0489
+	call CardFlip_UpdateCoinBalanceDisplay
 	xor a
-	ld [wcf66], a
+	ld [wCardFlipWhichCard], a
 .loop
 	call JoyTextDelay
 	ld a, [hJoyLast]
@@ -189,10 +196,10 @@
 	jr nz, .next
 	ld de, SFX_KINESIS
 	call PlaySFX
-	call Functione0849
+	call PlaceOAMCardBorder
 	ld c, 4
 	call DelayFrames
-	ld hl, wcf66
+	ld hl, wCardFlipWhichCard
 	ld a, [hl]
 	xor $1
 	ld [hl], a
@@ -204,7 +211,7 @@
 	ld a, $3
 .loop2
 	push af
-	call Functione0849
+	call PlaceOAMCardBorder
 	ld c, 4
 	call DelayFrames
 	call ClearSprites
@@ -213,16 +220,16 @@
 	pop af
 	dec a
 	jr nz, .loop2
-	ld hl, wcf66
+	ld hl, wCardFlipWhichCard
 	ld a, [hl]
 	push af
 	xor $1
 	ld [hl], a
-	call Functione03ac
+	call GetCoordsOfChosenCard
 	lb bc, 6, 5
-	call Functione04e5
+	call CardFlip_FillGreenBox
 	pop af
-	ld [wcf66], a
+	ld [wCardFlipWhichCard], a
 	call .Increment
 	ret
 ; e02b2
@@ -235,14 +242,14 @@
 
 .PlaceYourBet: ; e02b7
 	ld hl, .PlaceYourBetText
-	call Functione0489
+	call CardFlip_UpdateCoinBalanceDisplay
 .betloop
 	call JoyTextDelay
 	ld a, [hJoyLast]
 	and A_BUTTON
 	jr nz, .betdone
-	call Functione089c
-	call Functione0960
+	call ChooseCard_HandleJoypad
+	call CardFlip_UpdateCursorOAM
 	call DelayFrame
 	jr .betloop
 
@@ -260,36 +267,36 @@
 .CheckTheCard: ; e02da
 	xor a
 	ld [hVBlankCounter], a
-	call Functione0960
+	call CardFlip_UpdateCursorOAM
 	call WaitSFX
 	ld de, SFX_CHOOSE_A_CARD
 	call PlaySFX
 	call WaitSFX
-	ld a, [wc6e8]
+	ld a, [wCardFlipNumCardsPlayed]
 	ld e, a
 	ld d, 0
-	ld hl, wc6d0
+	ld hl, wDeck
 rept 2
 	add hl, de
 endr
-	ld a, [wcf66]
+	ld a, [wCardFlipWhichCard]
 	ld e, a
 	add hl, de
 	ld a, [hl]
-	ld [CurEnemyMoveNum], a
+	ld [wCardFlipFaceUpCard], a
 	ld e, a
-	ld hl, wc6ea
+	ld hl, wDiscardPile
 	add hl, de
-	ld [hl], $1
-	call Functione03ac
-	call Functione03ec
-	call Function3200
+	ld [hl], TRUE
+	call GetCoordsOfChosenCard
+	call CardFlip_DisplayCardFaceUp
+	call WaitBGMap2
 	call .Increment
 	ret
 ; e0314
 
 .TabulateTheResult: ; e0314
-	call Functione0637
+	call CardFlip_CheckWinCondition
 	call WaitPressAorB_BlinkCursor
 	call .Increment
 	ret
@@ -298,7 +305,7 @@
 .PlayAgain: ; e031e
 	call ClearSprites
 	ld hl, .PlayAgainText
-	call Functione0489
+	call CardFlip_UpdateCoinBalanceDisplay
 	call YesNoBox
 	jr nc, .Continue
 	call .Increment
@@ -305,24 +312,24 @@
 	ret
 
 .Continue
-	ld a, [wc6e8]
+	ld a, [wCardFlipNumCardsPlayed]
 	inc a
-	ld [wc6e8], a
-	cp $c
+	ld [wCardFlipNumCardsPlayed], a
+	cp 12
 	jr c, .KeepTheCurrentDeck
-	call Functione04c1
+	call CardFlip_InitTilemap
 	ld a, $1
 	ld [hBGMapMode], a
-	call Functione0366
+	call CardFlip_ShuffleDeck
 	ld hl, .CardsShuffledText
 	call PrintText
 	jr .LoopAround
 
 .KeepTheCurrentDeck
-	call Functione0534
+	call CardFlip_BlankDiscardedCardSlot
 
 .LoopAround
-	ld a, $1
+	ld a, 1
 	ld [wJumptableIndex], a
 	ret
 ; e0356
@@ -345,73 +352,73 @@
 	ret
 ; e0366
 
-Functione0366: ; e0366
-	ld hl, wc6d0
-	ld bc, $18
+CardFlip_ShuffleDeck: ; e0366
+	ld hl, wDeck
+	ld bc, CARDFLIP_DECK_SIZE
 	xor a
 	call ByteFill
-	ld de, wc6d0
-	ld c, $17
-.asm_e0375
+	ld de, wDeck
+	ld c, CARDFLIP_DECK_SIZE - 1
+.loop
 	call Random
 	and $1f
-	cp $18
-	jr nc, .asm_e0375
+	cp CARDFLIP_DECK_SIZE
+	jr nc, .loop
 	ld l, a
 	ld h, $0
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e0375
+	jr nz, .loop
 	ld [hl], c
 	dec c
-	jr nz, .asm_e0375
+	jr nz, .loop
 	xor a
-	ld [wc6e8], a
-	ld hl, wc6ea
-	ld bc, $18
+	ld [wCardFlipNumCardsPlayed], a
+	ld hl, wDiscardPile
+	ld bc, CARDFLIP_DECK_SIZE
 	call ByteFill
 	ret
 ; e0398
 
-Functione0398: ; e0398
+CollapseCursorPosition: ; e0398
 	ld hl, 0
 	ld bc, 6
-	ld a, [wcf64]
+	ld a, [wCardFlipCursorY]
 	call AddNTimes
 	ld b, $0
-	ld a, [wcf65]
+	ld a, [wCardFlipCursorX]
 	ld c, a
 	add hl, bc
 	ret
 ; e03ac
 
-Functione03ac: ; e03ac
-	ld a, [wcf66]
+GetCoordsOfChosenCard: ; e03ac
+	ld a, [wCardFlipWhichCard]
 	and a
-	jr nz, .asm_e03ba
+	jr nz, .BottomCard
 	hlcoord 2, 0
-	ld bc, $1018
-	jr .asm_e03c0
+	bcpixel 2, 3
+	jr .done
 
-.asm_e03ba
+.BottomCard
 	hlcoord 2, 6
-	ld bc, $4018
+	bcpixel 8, 3
 
-.asm_e03c0
+.done
 	ret
 ; e03c1
 
-Functione03c1: ; e03c1
+PlaceCardFaceDown: ; e03c1
 	xor a
 	ld [hBGMapMode], a
-	ld de, Unknown_e03ce
+	ld de, .FaceDownCardTilemap
 	lb bc, 6, 5
-	call Functione04f7
+	call CardFlip_CopyToBox
 	ret
 ; e03ce
 
-Unknown_e03ce: ; e03ce
+.FaceDownCardTilemap: ; e03ce
 	db $08, $09, $09, $09, $0a
 	db $0b, $28, $2b, $28, $0c
 	db $0b, $2c, $2d, $2e, $0c
@@ -420,18 +427,21 @@
 	db $0d, $0e, $0e, $0e, $0f
 ; e03ec
 
-Functione03ec: ; e03ec
+CardFlip_DisplayCardFaceUp: ; e03ec
 	xor a
 	ld [hBGMapMode], a
 	push hl
 	push hl
-	ld de, Unknown_e043b
+	; Flip the card face up.
+	ld de, .FaceUpCardTilemap
 	lb bc, 6, 5
-	call Functione04f7
-	ld a, [CurEnemyMoveNum]
+	call CardFlip_CopyToBox
+
+	; Get the level and species of the upturned card.
+	ld a, [wCardFlipFaceUpCard]
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_e0459
+	ld hl, .Deck
 rept 2
 	add hl, de
 endr
@@ -438,42 +448,50 @@
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
+
+	; Place the level.
 	pop hl
-	ld bc, $17
+	ld bc, 3 + SCREEN_WIDTH
 	add hl, bc
 	ld [hl], e
+
+	; Place the Pokepic.
 	ld bc, SCREEN_HEIGHT
 	add hl, bc
 	ld a, d
 	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e0418
+	ld b, 3
+.row
 	push hl
-	ld c, $3
-.asm_e041b
+	ld c, 3
+.col
 	ld [hli], a
 	inc a
 	dec c
-	jr nz, .asm_e041b
+	jr nz, .col
 	pop hl
 	add hl, de
 	dec b
-	jr nz, .asm_e0418
+	jr nz, .row
 	pop hl
+
+	; Pointless CGB check
 	ld a, [hCGB]
 	and a
 	ret z
+
+	; Set the attributes
 	ld de, AttrMap - TileMap
 	add hl, de
-	ld a, [CurEnemyMoveNum]
+	ld a, [wCardFlipFaceUpCard]
 	and 3
 	inc a
 	lb bc, 6, 5
-	call Functione04e7
+	call CardFlip_FillBox
 	ret
 ; e043b
 
-Unknown_e043b: ; e043b
+.FaceUpCardTilemap: ; e043b
 	db $18, $19, $19, $19, $1a
 	db $1b, $35, $7f, $7f, $1c
 	db $0b, $28, $28, $28, $0c
@@ -482,34 +500,35 @@
 	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
+.Deck: ; e0459
+	; level, pic anchor (3x3)
+	db "1",$4e, "1",$57, "1",$69, "1",$60
+	db "2",$4e, "2",$57, "2",$69, "2",$60
+	db "3",$4e, "3",$57, "3",$69, "3",$60
+	db "4",$4e, "4",$57, "4",$69, "4",$60
+	db "5",$4e, "5",$57, "5",$69, "5",$60
+	db "6",$4e, "6",$57, "6",$69, "6",$60
 ; e0489
 
-Functione0489: ; e0489
+CardFlip_UpdateCoinBalanceDisplay: ; e0489
 	push hl
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, SCREEN_WIDTH - 2
 	call TextBox
 	pop hl
 	call PrintTextBoxText
-	call Functione049c
+	call CardFlip_PrintCoinBalance
 	ret
 ; e049c
 
-Functione049c: ; e049c
+CardFlip_PrintCoinBalance: ; e049c
 	hlcoord 9, 15
-	ld b, $1
-	ld c, $9
+	ld b, 1
+	ld c, 9
 	call TextBox
 	hlcoord 10, 16
-	ld de, String_e04bc
+	ld de, .CoinStr
 	call PlaceString
 	hlcoord 15, 16
 	ld de, Coins
@@ -518,11 +537,11 @@
 	ret
 ; e04bc
 
-String_e04bc:
+.CoinStr:
 	db "COIN@"
 ; e04c1
 
-Functione04c1: ; e04c1 (38:44c1)
+CardFlip_InitTilemap: ; e04c1 (38:44c1)
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 0
@@ -530,9 +549,9 @@
 	ld a, $29
 	call ByteFill
 	hlcoord 9, 0
-	ld de, Unknown_e110c
+	ld de, CardFlipTilemap
 	lb bc, 12, 11
-	call Functione04f7
+	call CardFlip_CopyToBox
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
@@ -539,46 +558,48 @@
 	ret
 ; e04e5 (38:44e5)
 
-Functione04e5: ; e04e5
+CardFlip_FillGreenBox: ; e04e5
 	ld a, $29
 
-Functione04e7: ; e04e7 (38:44e7)
+CardFlip_FillBox: ; e04e7 (38:44e7)
+.row
 	push bc
 	push hl
-.asm_e04e9
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_e04e9
+	jr nz, .col
 	pop hl
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, Functione04e7
+	jr nz, .row
 	ret
 
-Functione04f7: ; e04f7 (38:44f7)
+CardFlip_CopyToBox: ; e04f7 (38:44f7)
+.row
 	push bc
 	push hl
-.asm_e04f9
+.col
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_e04f9
+	jr nz, .col
 	pop hl
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, Functione04f7
+	jr nz, .row
 	ret
 ; e0509 (38:4509)
 
-Functione0509: ; e0509
+CardFlip_CopyOAM: ; e0509
 	ld de, Sprites
 	ld a, [hli]
-.asm_e050d
+.loop
 	push af
 	ld a, [hli]
 	add b
@@ -596,16 +617,16 @@
 	inc de
 	pop af
 	dec a
-	jr nz, .asm_e050d
+	jr nz, .loop
 	ret
 ; e0521
 
-Functione0521: ; e0521 (38:4521)
-	ld de, VTiles1 tile $76
-	ld hl, $8f62
-	ld bc, $9e
+CardFlip_ShiftDigitsLeftTwoPixels: ; e0521 (38:4521)
+	ld de, VTiles1 tile ("0" & $7f)
+	ld hl, VTiles1 tile ("0" & $7f) + 2
+	ld bc, 10 tiles - 2
 	call CopyBytes
-	ld hl, $8ffe
+	ld hl, VTiles1 tile $7f + 1 tiles - 2
 	xor a
 	ld [hli], a
 	ld [hl], a
@@ -612,22 +633,24 @@
 	ret
 ; e0534 (38:4534)
 
-Functione0534: ; e0534
+CardFlip_BlankDiscardedCardSlot: ; e0534
 	xor a
 	ld [hBGMapMode], a
-	ld a, [CurEnemyMoveNum]
+	ld a, [wCardFlipFaceUpCard]
 	ld e, a
 	ld d, 0
-	and 3
+
+	and 3 ; get mon
 	ld c, a
 	ld b, 0
+
 	ld a, e
-	and $1c
+	and $1c ; get level
 	srl a
-	add Jumptable_e0553 % $100
+	add .Jumptable % $100
 	ld l, a
 	ld a, 0
-	adc Jumptable_e0553 / $100
+	adc .Jumptable / $100
 	ld h, a
 	ld a, [hli]
 	ld h, [hl]
@@ -635,21 +658,22 @@
 	jp [hl]
 ; e0553
 
-Jumptable_e0553: ; e0553
-	dw Functione055f
-	dw Functione0583
-	dw Functione05a7
-	dw Functione05cb
-	dw Functione05ef
-	dw Functione0613
+.Jumptable: ; e0553
+	
+	dw .Level1
+	dw .Level2
+	dw .Level3
+	dw .Level4
+	dw .Level5
+	dw .Level6
 ; e055f
 
-Functione055f: ; e055f
-	ld hl, wc6e6 + 8
+.Level1: ; e055f
+	ld hl, wDiscardPile + 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e0575
+	jr nz, .discarded2
 	hlcoord 13, 3
 rept 2
 	add hl, bc
@@ -660,7 +684,7 @@
 	ld [hl], $37
 	ret
 
-.asm_e0575
+.discarded2
 	hlcoord 13, 3
 rept 2
 	add hl, bc
@@ -672,12 +696,12 @@
 	ret
 ; e0583
 
-Functione0583: ; e0583
-	ld hl, wc6e6
+.Level2: ; e0583
+	ld hl, wDiscardPile - 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e0599
+	jr nz, .discarded1
 	hlcoord 13, 4
 rept 2
 	add hl, bc
@@ -688,7 +712,7 @@
 	ld [hl], $3a
 	ret
 
-.asm_e0599
+.discarded1
 	hlcoord 13, 4
 rept 2
 	add hl, bc
@@ -700,12 +724,12 @@
 	ret
 ; e05a7
 
-Functione05a7: ; e05a7
-	ld hl, wc6e6 + 8
+.Level3: ; e05a7
+	ld hl, wDiscardPile + 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e05bd
+	jr nz, .discarded4
 	hlcoord 13, 6
 rept 2
 	add hl, bc
@@ -716,7 +740,7 @@
 	ld [hl], $38
 	ret
 
-.asm_e05bd
+.discarded4
 	hlcoord 13, 6
 rept 2
 	add hl, bc
@@ -728,12 +752,12 @@
 	ret
 ; e05cb
 
-Functione05cb: ; e05cb
-	ld hl, wc6e6
+.Level4: ; e05cb
+	ld hl, wDiscardPile - 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e05e1
+	jr nz, .discarded3
 	hlcoord 13, 7
 rept 2
 	add hl, bc
@@ -744,7 +768,7 @@
 	ld [hl], $3a
 	ret
 
-.asm_e05e1
+.discarded3
 	hlcoord 13, 7
 rept 2
 	add hl, bc
@@ -756,12 +780,12 @@
 	ret
 ; e05ef
 
-Functione05ef: ; e05ef
-	ld hl, wc6e6 + 8
+.Level5: ; e05ef
+	ld hl, wDiscardPile + 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e0605
+	jr nz, .discarded6
 	hlcoord 13, 9
 rept 2
 	add hl, bc
@@ -772,7 +796,7 @@
 	ld [hl], $39
 	ret
 
-.asm_e0605
+.discarded6
 	hlcoord 13, 9
 rept 2
 	add hl, bc
@@ -784,12 +808,12 @@
 	ret
 ; e0613
 
-Functione0613: ; e0613
-	ld hl, wc6e6
+.Level6: ; e0613
+	ld hl, wDiscardPile - 4
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e0629
+	jr nz, .discarded5
 	hlcoord 13, 10
 rept 2
 	add hl, bc
@@ -800,7 +824,7 @@
 	ld [hl], $3a
 	ret
 
-.asm_e0629
+.discarded5
 	hlcoord 13, 10
 rept 2
 	add hl, bc
@@ -812,10 +836,10 @@
 	ret
 ; e0637
 
-Functione0637: ; e0637
-	call Functione0398
+CardFlip_CheckWinCondition: ; e0637
+	call CollapseCursorPosition
 	add hl, hl
-	ld de, Jumptable_e0643
+	ld de, .Jumptable
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -823,335 +847,343 @@
 	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
+.Jumptable: ; e0643
+	
+	dw .Impossible
+	dw .Impossible
+	dw .PikaJiggly
+	dw .PikaJiggly
+	dw .PoliOddish
+	dw .PoliOddish
+
+	dw .Impossible
+	dw .Impossible
+	dw .Pikachu
+	dw .Jigglypuff
+	dw .Poliwag
+	dw .Oddish
+
+	dw .OneTwo
+	dw .One
+	dw .PikaOne
+	dw .JigglyOne
+	dw .PoliOne
+	dw .OddOne
+
+	dw .OneTwo
+	dw .Two
+	dw .PikaTwo
+	dw .JigglyTwo
+	dw .PoliTwo
+	dw .OddTwo
+
+	dw .ThreeFour
+	dw .Three
+	dw .PikaThree
+	dw .JigglyThree
+	dw .PoliThree
+	dw .OddThree
+
+	dw .ThreeFour
+	dw .Four
+	dw .PikaFour
+	dw .JigglyFour
+	dw .PoliFour
+	dw .OddFour
+
+	dw .FiveSix
+	dw .Five
+	dw .PikaFive
+	dw .JigglyFive
+	dw .PoliFive
+	dw .OddFive
+
+	dw .FiveSix
+	dw .Six
+	dw .PikaSix
+	dw .JigglySix
+	dw .PoliSix
+	dw .OddSix
 ; e06a3
 
-Functione06a3: ; e06a3
-	jp Functione07db
+.Impossible: ; e06a3
+	jp .Lose
 ; e06a6
 
-Functione06a6: ; e06a6
-	ld a, [CurEnemyMoveNum]
+.PikaJiggly: ; e06a6
+	ld a, [wCardFlipFaceUpCard]
 	and $2
-	jp nz, Functione07db
-	jr Functione06ba
+	jp nz, .Lose
+	jr .WinSix
 
-Functione06b0: ; e06b0
-	ld a, [CurEnemyMoveNum]
+.PoliOddish: ; e06b0
+	ld a, [wCardFlipFaceUpCard]
 	and $2
-	jr nz, Functione06ba
-	jp Functione07db
+	jr nz, .WinSix
+	jp .Lose
 
-Functione06ba: ; e06ba
+.WinSix: ; e06ba
 	ld c, $6
 	ld de, SFX_2ND_PLACE
-	jp Functione07eb
+	jp .Payout
 ; e06c2
 
-Functione06c2: ; e06c2
-	ld a, [CurEnemyMoveNum]
+.OneTwo: ; e06c2
+	ld a, [wCardFlipFaceUpCard]
 	and $18
-	jr z, Functione06e4
-	jp Functione07db
+	jr z, .WinNine
+	jp .Lose
 
-Functione06cc: ; e06cc
-	ld a, [CurEnemyMoveNum]
+.ThreeFour: ; e06cc
+	ld a, [wCardFlipFaceUpCard]
 	and $18
 	cp $8
-	jr z, Functione06e4
-	jp Functione07db
+	jr z, .WinNine
+	jp .Lose
 
-Functione06d8: ; e06d8
-	ld a, [CurEnemyMoveNum]
+.FiveSix: ; e06d8
+	ld a, [wCardFlipFaceUpCard]
 	and $18
 	cp $10
-	jr z, Functione06e4
-	jp Functione07db
+	jr z, .WinNine
+	jp .Lose
 
-Functione06e4: ; e06e4
+.WinNine: ; e06e4
 	ld c, $9
 	ld de, SFX_2ND_PLACE
-	jp Functione07eb
+	jp .Payout
 ; e06ec
 
-Functione06ec: ; e06ec
-	ld a, [CurEnemyMoveNum]
+.Pikachu: ; e06ec
+	ld a, [wCardFlipFaceUpCard]
 	and $3
-	jr z, Functione071a
-	jp Functione07db
+	jr z, .WinTwelve
+	jp .Lose
 
-Functione06f6: ; e06f6
-	ld a, [CurEnemyMoveNum]
+.Jigglypuff: ; e06f6
+	ld a, [wCardFlipFaceUpCard]
 	and $3
 	cp $1
-	jr z, Functione071a
-	jp Functione07db
+	jr z, .WinTwelve
+	jp .Lose
 
-Functione0702: ; e0702
-	ld a, [CurEnemyMoveNum]
+.Poliwag: ; e0702
+	ld a, [wCardFlipFaceUpCard]
 	and $3
 	cp $2
-	jr z, Functione071a
-	jp Functione07db
+	jr z, .WinTwelve
+	jp .Lose
 
-Functione070e: ; e070e
-	ld a, [CurEnemyMoveNum]
+.Oddish: ; e070e
+	ld a, [wCardFlipFaceUpCard]
 	and $3
 	cp $3
-	jr z, Functione071a
-	jp Functione07db
+	jr z, .WinTwelve
+	jp .Lose
 
-Functione071a: ; e071a
+.WinTwelve: ; e071a
 	ld c, $c
 	ld de, SFX_2ND_PLACE
-	jp Functione07eb
+	jp .Payout
 ; e0722
 
-Functione0722: ; e0722
-	ld a, [CurEnemyMoveNum]
+.One: ; e0722
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione072c: ; e072c
-	ld a, [CurEnemyMoveNum]
+.Two: ; e072c
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
 	cp $4
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione0738: ; e0738
-	ld a, [CurEnemyMoveNum]
+.Three: ; e0738
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
 	cp $8
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione0744: ; e0744
-	ld a, [CurEnemyMoveNum]
+.Four: ; e0744
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
 	cp $c
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione0750: ; e0750
-	ld a, [CurEnemyMoveNum]
+.Five: ; e0750
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
 	cp $10
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione075c: ; e075c
-	ld a, [CurEnemyMoveNum]
+.Six: ; e075c
+	ld a, [wCardFlipFaceUpCard]
 	and $1c
 	cp $14
-	jr z, Functione0768
-	jp Functione07db
+	jr z, .WinEighteen
+	jp .Lose
 
-Functione0768: ; e0768
+.WinEighteen: ; e0768
 	ld c, $12
 	ld de, SFX_2ND_PLACE
-	jp Functione07eb
+	jp .Payout
 ; e0770
 
 
-Functione0770: ; e0770
+.PikaOne: ; e0770
 	ld e, $0
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0774: ; e0774
+.JigglyOne: ; e0774
 	ld e, $1
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0778: ; e0778
+.PoliOne: ; e0778
 	ld e, $2
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione077c: ; e077c
+.OddOne: ; e077c
 	ld e, $3
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0780: ; e0780
+.PikaTwo: ; e0780
 	ld e, $4
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0784: ; e0784
+.JigglyTwo: ; e0784
 	ld e, $5
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0788: ; e0788
+.PoliTwo: ; e0788
 	ld e, $6
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione078c: ; e078c
+.OddTwo: ; e078c
 	ld e, $7
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0790: ; e0790
+.PikaThree: ; e0790
 	ld e, $8
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0794: ; e0794
+.JigglyThree: ; e0794
 	ld e, $9
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione0798: ; e0798
+.PoliThree: ; e0798
 	ld e, $a
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione079c: ; e079c
+.OddThree: ; e079c
 	ld e, $b
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07a0: ; e07a0
+.PikaFour: ; e07a0
 	ld e, $c
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07a4: ; e07a4
+.JigglyFour: ; e07a4
 	ld e, $d
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07a8: ; e07a8
+.PoliFour: ; e07a8
 	ld e, $e
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07ac: ; e07ac
+.OddFour: ; e07ac
 	ld e, $f
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07b0: ; e07b0
+.PikaFive: ; e07b0
 	ld e, $10
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07b4: ; e07b4
+.JigglyFive: ; e07b4
 	ld e, $11
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07b8: ; e07b8
+.PoliFive: ; e07b8
 	ld e, $12
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07bc: ; e07bc
+.OddFive: ; e07bc
 	ld e, $13
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07c0: ; e07c0
+.PikaSix: ; e07c0
 	ld e, $14
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07c4: ; e07c4
+.JigglySix: ; e07c4
 	ld e, $15
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07c8: ; e07c8
+.PoliSix: ; e07c8
 	ld e, $16
-	jr Functione07ce
+	jr .CheckWin72
 
-Functione07cc: ; e07cc
+.OddSix: ; e07cc
 	ld e, $17
 
-Functione07ce: ; e07ce
-	ld a, [CurEnemyMoveNum]
+.CheckWin72: ; e07ce
+	ld a, [wCardFlipFaceUpCard]
 	cp e
-	jr nz, Functione07db
-	ld c, $48
+	jr nz, .Lose
+	ld c, 72
 	ld de, SFX_2ND_PLACE
-	jr Functione07eb
+	jr .Payout
 
-Functione07db: ; e07db
+.Lose: ; e07db
 	ld de, SFX_WRONG
 	call PlaySFX
-	ld hl, UnknownText_0xe0816
-	call Functione0489
+	ld hl, .Text_Darn
+	call CardFlip_UpdateCoinBalanceDisplay
 	call WaitSFX
 	ret
 
-Functione07eb: ; e07eb
+.Payout: ; e07eb
 	push bc
 	push de
-	ld hl, UnknownText_0xe0811
-	call Functione0489
+	ld hl, .Text_Yeah
+	call CardFlip_UpdateCoinBalanceDisplay
 	pop de
 	call PlaySFX
 	call WaitSFX
 	pop bc
-.asm_e07fb
+.loop
 	push bc
-	call Functione0833
-	jr c, .asm_e0804
-	call Functione081b
+	call .IsCoinCaseFull
+	jr c, .full
+	call .AddCoinPlaySFX
 
-.asm_e0804
-	call Functione049c
+.full
+	call CardFlip_PrintCoinBalance
 	ld c, 2
 	call DelayFrames
 	pop bc
 	dec c
-	jr nz, .asm_e07fb
+	jr nz, .loop
 	ret
 ; e0811
 
-UnknownText_0xe0811: ; 0xe0811
+.Text_Yeah: ; 0xe0811
 	; Yeah!
 	text_jump UnknownText_0x1c5813
 	db "@"
 ; 0xe0816
 
-UnknownText_0xe0816: ; 0xe0816
+.Text_Darn: ; 0xe0816
 	; Darn…
 	text_jump UnknownText_0x1c581a
 	db "@"
 ; 0xe081b
 
-Functione081b: ; e081b
+.AddCoinPlaySFX: ; e081b
 	ld a, [Coins]
 	ld h, a
 	ld a, [Coins + 1]
@@ -1166,124 +1198,129 @@
 	ret
 ; e0833
 
-Functione0833: ; e0833
+.IsCoinCaseFull: ; e0833
 	ld a, [Coins]
 	cp 9999 / $100
-	jr c, .asm_e0847
-	jr z, .asm_e083e
-	jr .asm_e0845
+	jr c, .less
+	jr z, .check_low
+	jr .more
 
-.asm_e083e
+.check_low
 	ld a, [Coins + 1]
 	cp 9999 % $100
-	jr c, .asm_e0847
+	jr c, .less
 
-.asm_e0845
+.more
 	scf
 	ret
 
-.asm_e0847
+.less
 	and a
 	ret
 ; e0849
 
-Functione0849: ; e0849
-	call Functione03ac
-	ld hl, Unknown_e0853
-	call Functione0509
+PlaceOAMCardBorder: ; e0849
+	call GetCoordsOfChosenCard
+	ld hl, .SpriteData
+	call CardFlip_CopyOAM
 	ret
 ; e0853
 
-Unknown_e0853: ; e0853
+.SpriteData: ; 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
+	dsprite 0, 0, 0, 0, $04, $00
+	dsprite 0, 0, 1, 0, $06, $00
+	dsprite 0, 0, 2, 0, $06, $00
+	dsprite 0, 0, 3, 0, $06, $00
+	dsprite 0, 0, 4, 0, $04, $20
+
+	dsprite 1, 0, 0, 0, $05, $00
+	dsprite 1, 0, 4, 0, $05, $20
+
+	dsprite 2, 0, 0, 0, $05, $00
+	dsprite 2, 0, 4, 0, $05, $20
+
+	dsprite 3, 0, 0, 0, $05, $00
+	dsprite 3, 0, 4, 0, $05, $20
+
+	dsprite 4, 0, 0, 0, $05, $00
+	dsprite 4, 0, 4, 0, $05, $20
+
+	dsprite 5, 0, 0, 0, $04, $40
+	dsprite 5, 0, 1, 0, $06, $40
+	dsprite 5, 0, 2, 0, $06, $40
+	dsprite 5, 0, 3, 0, $06, $40
+	dsprite 5, 0, 4, 0, $04, $60
 ; e089c
 
-Functione089c: ; e089c
+ChooseCard_HandleJoypad: ; e089c
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT
-	jp nz, Functione08b8
+	jp nz, .d_left
 	ld a, [hl]
 	and D_RIGHT
-	jp nz, Functione08ef
+	jp nz, .d_right
 	ld a, [hl]
 	and D_UP
-	jp nz, Functione090a
+	jp nz, .d_up
 	ld a, [hl]
 	and D_DOWN
-	jp nz, Functione093d
+	jp nz, .d_down
 	ret
 ; e08b8
 
-Functione08b8: ; e08b8
-	ld hl, wcf65
-	ld a, [wcf64]
+.d_left: ; e08b8
+	ld hl, wCardFlipCursorX
+	ld a, [wCardFlipCursorY]
 	and a
-	jr z, .asm_e08d5
+	jr z, .mon_pair_left
 	cp $1
-	jr z, .asm_e08cc
+	jr z, .mon_group_left
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	jp Functione0959
+	jp .play_sound
 
-.asm_e08cc
+.mon_group_left
 	ld a, [hl]
 	cp $3
-	jr c, .asm_e08e2
+	jr c, .left_to_number_gp
 	dec [hl]
-	jp Functione0959
+	jp .play_sound
 
-.asm_e08d5
+.mon_pair_left
 	ld a, [hl]
 	and $e
 	ld [hl], a
 	cp $3
-	jr c, .asm_e08e2
+	jr c, .left_to_number_gp
 rept 2
 	dec [hl]
 endr
-	jp Functione0959
+	jp .play_sound
 
-.asm_e08e2
+.left_to_number_gp
 	ld a, $2
-	ld [wcf64], a
+	ld [wCardFlipCursorY], a
 	ld a, $1
-	ld [wcf65], a
-	jp Functione0959
+	ld [wCardFlipCursorX], a
+	jp .play_sound
 ; e08ef
 
-Functione08ef: ; e08ef
-	ld hl, wcf65
-	ld a, [wcf64]
+.d_right: ; e08ef
+	ld hl, wCardFlipCursorX
+	ld a, [wCardFlipCursorY]
 	and a
-	jr z, .asm_e08ff
+	jr z, .mon_pair_right
 	ld a, [hl]
 	cp $5
 	ret nc
 	inc [hl]
-	jr Functione0959
+	jr .play_sound
 
-.asm_e08ff
+.mon_pair_right
 	ld a, [hl]
 	and $e
 	ld [hl], a
@@ -1292,59 +1329,59 @@
 rept 2
 	inc [hl]
 endr
-	jr Functione0959
+	jr .play_sound
 
-Functione090a: ; e090a
-	ld hl, wcf64
-	ld a, [wcf65]
+.d_up: ; e090a
+	ld hl, wCardFlipCursorY
+	ld a, [wCardFlipCursorX]
 	and a
-	jr z, .asm_e0925
+	jr z, .num_pair_up
 	cp $1
-	jr z, .asm_e091d
+	jr z, .num_gp_up
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	jr Functione0959
+	jr .play_sound
 
-.asm_e091d
+.num_gp_up
 	ld a, [hl]
 	cp $3
-	jr c, .asm_e0931
+	jr c, .up_to_mon_group
 	dec [hl]
-	jr Functione0959
+	jr .play_sound
 
-.asm_e0925
+.num_pair_up
 	ld a, [hl]
 	and $e
 	ld [hl], a
 	cp $3
-	jr c, .asm_e0931
+	jr c, .up_to_mon_group
 rept 2
 	dec [hl]
 endr
-	jr Functione0959
+	jr .play_sound
 
-.asm_e0931
+.up_to_mon_group
 	ld a, $1
-	ld [wcf64], a
+	ld [wCardFlipCursorY], a
 	ld a, $2
-	ld [wcf65], a
-	jr Functione0959
+	ld [wCardFlipCursorX], a
+	jr .play_sound
 
-Functione093d: ; e093d
-	ld hl, wcf64
-	ld a, [wcf65]
+.d_down: ; e093d
+	ld hl, wCardFlipCursorY
+	ld a, [wCardFlipCursorX]
 	and a
-	jr z, .asm_e0950
-	ld hl, wcf64
+	jr z, .num_pair_down
+	ld hl, wCardFlipCursorY
 	ld a, [hl]
 	cp $7
 	ret nc
 	inc [hl]
-	jr Functione0959
+	jr .play_sound
 
-.asm_e0950
+.num_pair_down
 	ld a, [hl]
 	and $e
 	ld [hl], a
@@ -1354,27 +1391,27 @@
 	inc [hl]
 endr
 
-Functione0959: ; e0959
+.play_sound: ; e0959
 	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
 	call PlaySFX
 	ret
 ; e0960
 
-Functione0960: ; e0960
+CardFlip_UpdateCursorOAM: ; e0960
 	call ClearSprites
 	ld a, [hCGB]
 	and a
-	jr nz, .asm_e096d
+	jr nz, .skip
 	ld a, [hVBlankCounter]
 	and $4
 	ret nz
 
-.asm_e096d
-	call Functione0398
+.skip
+	call CollapseCursorPosition
 rept 2
 	add hl, hl
 endr
-	ld de, Unknown_e0981
+	ld de, .OAMData
 	add hl, de
 	ld a, [hli]
 	ld c, a
@@ -1383,246 +1420,264 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call Functione0509
+	call CardFlip_CopyOAM
 	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
+.OAMData: ; e0981
+cardflip_cursor: MACRO
+if _NARG >= 5
+	dbpixel \1, \2, \3, \4
+	dw \5
+else
+	dbpixel \1, \2
+	dw \3
+endc
+endm
 
-	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
+	cardflip_cursor 11,  2,       .Impossible
+	cardflip_cursor 12,  2,       .Impossible
+	cardflip_cursor 13,  2,       .PokeGroupPair
+	cardflip_cursor 13,  2,       .PokeGroupPair
+	cardflip_cursor 17,  2,       .PokeGroupPair
+	cardflip_cursor 17,  2,       .PokeGroupPair
 
-	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
+	cardflip_cursor 11,  3,       .Impossible
+	cardflip_cursor 12,  3,       .Impossible
+	cardflip_cursor 13,  3,       .PokeGroup
+	cardflip_cursor 15,  3,       .PokeGroup
+	cardflip_cursor 17,  3,       .PokeGroup
+	cardflip_cursor 19,  3,       .PokeGroup
 
-	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
+	cardflip_cursor 11,  5,       .NumGroupPair
+	cardflip_cursor 12,  5,       .NumGroup
+	cardflip_cursor 13,  5,       .SingleTile
+	cardflip_cursor 15,  5,       .SingleTile
+	cardflip_cursor 17,  5,       .SingleTile
+	cardflip_cursor 19,  5,       .SingleTile
 
-	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
+	cardflip_cursor 11,  5,       .NumGroupPair
+	cardflip_cursor 12,  6, 0, 4, .NumGroup
+	cardflip_cursor 13,  6, 0, 4, .SingleTile
+	cardflip_cursor 15,  6, 0, 4, .SingleTile
+	cardflip_cursor 17,  6, 0, 4, .SingleTile
+	cardflip_cursor 19,  6, 0, 4, .SingleTile
 
-	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
+	cardflip_cursor 11,  8,       .NumGroupPair
+	cardflip_cursor 12,  8,       .NumGroup
+	cardflip_cursor 13,  8,       .SingleTile
+	cardflip_cursor 15,  8,       .SingleTile
+	cardflip_cursor 17,  8,       .SingleTile
+	cardflip_cursor 19,  8,       .SingleTile
 
-	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
+	cardflip_cursor 11,  8,       .NumGroupPair
+	cardflip_cursor 12,  9, 0, 4, .NumGroup
+	cardflip_cursor 13,  9, 0, 4, .SingleTile
+	cardflip_cursor 15,  9, 0, 4, .SingleTile
+	cardflip_cursor 17,  9, 0, 4, .SingleTile
+	cardflip_cursor 19,  9, 0, 4, .SingleTile
+
+	cardflip_cursor 11, 11,       .NumGroupPair
+	cardflip_cursor 12, 11,       .NumGroup
+	cardflip_cursor 13, 11,       .SingleTile
+	cardflip_cursor 15, 11,       .SingleTile
+	cardflip_cursor 17, 11,       .SingleTile
+	cardflip_cursor 19, 11,       .SingleTile
+
+	cardflip_cursor 11, 11,       .NumGroupPair
+	cardflip_cursor 12, 12, 0, 4, .NumGroup
+	cardflip_cursor 13, 12, 0, 4, .SingleTile
+	cardflip_cursor 15, 12, 0, 4, .SingleTile
+	cardflip_cursor 17, 12, 0, 4, .SingleTile
+	cardflip_cursor 19, 12, 0, 4, .SingleTile
 ; e0a41
 
-Unknown_e0a41: ; e0a41
+.SingleTile: ; 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
+	dsprite   0, 0,  -1, 7, $00, $80
+	dsprite   0, 0,   0, 0, $02, $80
+	dsprite   0, 0,   1, 0, $03, $80
+	dsprite   0, 5,  -1, 7, $00, $c0
+	dsprite   0, 5,   0, 0, $02, $c0
+	dsprite   0, 5,   1, 0, $03, $80
 
-Unknown_e0a5a: ; e0a5a
+.PokeGroup: ; 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
+	dsprite   0, 0,  -1, 7, $00, $80
+	dsprite   0, 0,   0, 0, $02, $80
+	dsprite   0, 0,   1, 0, $00, $a0
+	dsprite   1, 0,  -1, 7, $01, $80
+	dsprite   1, 0,   1, 0, $01, $a0
+	dsprite   2, 0,  -1, 7, $01, $80
+	dsprite   2, 0,   1, 0, $03, $80
+	dsprite   3, 0,  -1, 7, $01, $80
+	dsprite   3, 0,   1, 0, $03, $80
+	dsprite   4, 0,  -1, 7, $01, $80
+	dsprite   4, 0,   1, 0, $03, $80
+	dsprite   5, 0,  -1, 7, $01, $80
+	dsprite   5, 0,   1, 0, $03, $80
+	dsprite   6, 0,  -1, 7, $01, $80
+	dsprite   6, 0,   1, 0, $03, $80
+	dsprite   7, 0,  -1, 7, $01, $80
+	dsprite   7, 0,   1, 0, $03, $80
+	dsprite   8, 0,  -1, 7, $01, $80
+	dsprite   8, 0,   1, 0, $03, $80
+	dsprite   9, 0,  -1, 7, $01, $80
+	dsprite   9, 0,   1, 0, $03, $80
+	dsprite  10, 0,  -1, 7, $01, $80
+	dsprite  10, 0,   1, 0, $03, $80
+	dsprite  10, 1,  -1, 7, $00, $c0
+	dsprite  10, 1,   0, 0, $02, $c0
+	dsprite  10, 1,   1, 0, $03, $80
 
-Unknown_e0ac3: ; e0ac3
+.NumGroup: ; 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
+	dsprite   0, 0,  -1, 7, $00, $80
+	dsprite   0, 0,   0, 0, $02, $80
+	dsprite   0, 0,   1, 0, $02, $80
+	dsprite   0, 0,   2, 0, $03, $80
+	dsprite   0, 0,   3, 0, $02, $80
+	dsprite   0, 0,   4, 0, $03, $80
+	dsprite   0, 0,   5, 0, $02, $80
+	dsprite   0, 0,   6, 0, $03, $80
+	dsprite   0, 0,   7, 0, $02, $80
+	dsprite   0, 0,   8, 0, $03, $80
+	dsprite   0, 5,  -1, 7, $00, $c0
+	dsprite   0, 5,   0, 0, $02, $c0
+	dsprite   0, 5,   1, 0, $02, $c0
+	dsprite   0, 5,   2, 0, $03, $80
+	dsprite   0, 5,   3, 0, $02, $c0
+	dsprite   0, 5,   4, 0, $03, $80
+	dsprite   0, 5,   5, 0, $02, $c0
+	dsprite   0, 5,   6, 0, $03, $80
+	dsprite   0, 5,   7, 0, $02, $c0
+	dsprite   0, 5,   8, 0, $03, $80
 
-Unknown_e0b14: ; e0b14
+.NumGroupPair: ; 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
+	dsprite   0, 0,   0, 0, $00, $80
+	dsprite   0, 0,   1, 0, $02, $80
+	dsprite   0, 0,   2, 0, $02, $80
+	dsprite   0, 0,   3, 0, $03, $80
+	dsprite   0, 0,   4, 0, $02, $80
+	dsprite   0, 0,   5, 0, $03, $80
+	dsprite   0, 0,   6, 0, $02, $80
+	dsprite   0, 0,   7, 0, $03, $80
+	dsprite   0, 0,   8, 0, $02, $80
+	dsprite   0, 0,   9, 0, $03, $80
+	dsprite   1, 0,   0, 0, $01, $80
+	dsprite   1, 0,   3, 0, $03, $80
+	dsprite   1, 0,   5, 0, $03, $80
+	dsprite   1, 0,   7, 0, $03, $80
+	dsprite   1, 0,   9, 0, $03, $80
+	dsprite   2, 0,   0, 0, $01, $80
+	dsprite   2, 0,   3, 0, $03, $80
+	dsprite   2, 0,   5, 0, $03, $80
+	dsprite   2, 0,   7, 0, $03, $80
+	dsprite   2, 0,   9, 0, $03, $80
+	dsprite   2, 1,   0, 0, $00, $c0
+	dsprite   2, 1,   1, 0, $02, $c0
+	dsprite   2, 1,   2, 0, $02, $c0
+	dsprite   2, 1,   3, 0, $03, $80
+	dsprite   2, 1,   4, 0, $03, $80
+	dsprite   2, 1,   5, 0, $03, $80
+	dsprite   2, 1,   6, 0, $03, $80
+	dsprite   2, 1,   7, 0, $03, $80
+	dsprite   2, 1,   8, 0, $03, $80
+	dsprite   2, 1,   9, 0, $03, $80
 
-Unknown_e0b8d: ; e0b8d
+.PokeGroupPair: ; 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
+	dsprite   0, 0,  -1, 7, $00, $80
+	dsprite   0, 0,   3, 0, $00, $a0
+	dsprite   1, 0,  -1, 7, $01, $80
+	dsprite   1, 0,   3, 0, $01, $a0
+	dsprite   2, 0,  -1, 7, $01, $80
+	dsprite   2, 0,   3, 0, $01, $a0
+	dsprite   3, 0,  -1, 7, $01, $80
+	dsprite   3, 0,   1, 0, $03, $80
+	dsprite   3, 0,   3, 0, $03, $80
+	dsprite   4, 0,  -1, 7, $01, $80
+	dsprite   4, 0,   1, 0, $03, $80
+	dsprite   4, 0,   3, 0, $03, $80
+	dsprite   5, 0,  -1, 7, $01, $80
+	dsprite   5, 0,   1, 0, $03, $80
+	dsprite   5, 0,   3, 0, $03, $80
+	dsprite   6, 0,  -1, 7, $01, $80
+	dsprite   6, 0,   1, 0, $03, $80
+	dsprite   6, 0,   3, 0, $03, $80
+	dsprite   7, 0,  -1, 7, $01, $80
+	dsprite   7, 0,   1, 0, $03, $80
+	dsprite   7, 0,   3, 0, $03, $80
+	dsprite   8, 0,  -1, 7, $01, $80
+	dsprite   8, 0,   1, 0, $03, $80
+	dsprite   8, 0,   3, 0, $03, $80
+	dsprite   9, 0,  -1, 7, $01, $80
+	dsprite   9, 0,   1, 0, $03, $80
+	dsprite   9, 0,   3, 0, $03, $80
+	dsprite  10, 0,  -1, 7, $01, $80
+	dsprite  10, 0,   1, 0, $03, $80
+	dsprite  10, 0,   3, 0, $03, $80
+	dsprite  11, 0,  -1, 7, $01, $80
+	dsprite  11, 0,   1, 0, $03, $80
+	dsprite  11, 0,   3, 0, $03, $80
+	dsprite  11, 1,  -1, 7, $00, $c0
+	dsprite  11, 1,   0, 0, $02, $c0
+	dsprite  11, 1,   1, 0, $03, $c0
+	dsprite  11, 1,   2, 0, $02, $c0
+	dsprite  11, 1,   3, 0, $03, $e0
 
-Unknown_e0c26: ; e0c26
+.Impossible: ; e0c26
 	db 4
-	db $00, $00, $00, $80
-	db $00, $08, $00, $a0
-	db $08, $00, $00, $c0
-	db $08, $08, $00, $e0
+	dsprite   0, 0,   0, 0, $00, $80
+	dsprite   0, 0,   1, 0, $00, $a0
+	dsprite   1, 0,   0, 0, $00, $c0
+	dsprite   1, 0,   1, 0, $00, $e0
 ; e0c37
 
-Functione0c37: ; e0c37 (38:4c37)
+CardFlip_InitAttrPals: ; 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
+	call CardFlip_FillBox
+
 	hlcoord 14, 1, AttrMap
 	lb bc, 2, 2
 	ld a, $2
-	call Functione04e7
+	call CardFlip_FillBox
+
 	hlcoord 16, 1, AttrMap
 	lb bc, 2, 2
 	ld a, $3
-	call Functione04e7
+	call CardFlip_FillBox
+
 	hlcoord 18, 1, AttrMap
 	lb bc, 2, 2
 	ld a, $4
-	call Functione04e7
+	call CardFlip_FillBox
+
 	hlcoord 9, 0, AttrMap
 	lb bc, 12, 1
 	ld a, $1
-	call Functione04e7
+	call CardFlip_FillBox
+
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Palette_e0c93
+	ld hl, .palettes
 	ld de, UnknBGPals
-	ld bc, $48
+	ld bc, 9 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -1629,7 +1684,7 @@
 	ret
 ; e0c93 (38:4c93)
 
-Palette_e0c93: ; e0c93
+.palettes: ; e0c93
 	RGB 31, 31, 31
 	RGB 17, 07, 31
 	RGB 06, 19, 08
@@ -1676,22 +1731,22 @@
 	RGB 31, 00, 00
 ; e0cdb
 
-LZ_e0cdb: ; e0cdb
+CardFlipLZ03: ; e0cdb
 INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
 
-GFX_e0cf6: ; e0cf6
+CardFlipOffButtonGFX: ; e0cf6
 INCBIN "gfx/unknown/0e0cf6.2bpp"
 
-GFX_e0d06: ; e0d06
+CardFlipOnButtonGFX: ; e0d06
 INCBIN "gfx/unknown/0e0d06.2bpp"
 
-LZ_e0d16: ; e0d16
+CardFlipLZ01: ; e0d16
 INCBIN "gfx/unknown/0e0d16.2bpp.lz"
 
-LZ_e0ea8: ; e0ea8
+CardFlipLZ02: ; e0ea8
 INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
 
-Unknown_e110c: ; e110c
+CardFlipTilemap: ; 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
@@ -1705,856 +1760,3 @@
 	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, SCGB_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"
--- a/engine/clock_reset.asm
+++ b/engine/clock_reset.asm
@@ -95,7 +95,7 @@
 	ld [StringBuffer2 + 2], a
 	xor a
 	ld [StringBuffer2 + 3], a
-	call Function677
+	call InitTime
 	call .PrintTime
 	ld hl, .Text_ClockReset
 	call PrintText
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -88,20 +88,20 @@
 	push de
 	push bc
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
+	ld de, wSGBPals
 	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	pop bc
 	pop de
 	ld a, c
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, b
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, e
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, d
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	call Function9809
 	ld hl, BlkPacket_9a86
 	call Function9809
@@ -112,14 +112,14 @@
 Function8ad1: ; 8ad1
 	ld hl, PalPacket_9c56 + 1
 	call CopyFourPalettes
-	call Function971a
-	call Function9699
+	call InitPartyMenuOBPals
+	call WipeAttrMap
 	ret
 ; 8ade
 
-Function8ade: ; 8ade SGB layout $fc
-	ld hl, wcd9b
-	ld a, [wcda9]
+SGB_ApplyPartyMenuHPPals: ; 8ade SGB layout $fc
+	ld hl, wHPPals
+	ld a, [wSGBPals]
 	ld e, a
 	ld d, $0
 	add hl, de
@@ -128,17 +128,16 @@
 	ld a, [de]
 	and a
 	ld e, $5
-	jr z, .asm_8af7
+	jr z, .okay
 	dec a
 	ld e, $a
-	jr z, .asm_8af7
+	jr z, .okay
 	ld e, $f
-
-.asm_8af7
+.okay
 	push de
-	ld hl, wcda9 + 10
-	ld bc, $0006
-	ld a, [wcda9]
+	ld hl, wSGBPals + 10
+	ld bc, $6
+	ld a, [wSGBPals]
 	call AddNTimes
 	pop de
 	ld [hl], e
@@ -150,17 +149,17 @@
 	ret z
 	ld hl, Palette8b2f
 	ld de, UnknBGPals
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 
 	ld hl, Palette8b37
 	ld de, MartPointer
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 
-	call Function96a4
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -171,6 +170,7 @@
 	RGB 18, 23, 31
 	RGB 15, 20, 31
 	RGB 00, 00, 00
+
 ; 8b37
 
 Palette8b37: ; 8b37
@@ -178,6 +178,7 @@
 	RGB 31, 31, 12
 	RGB 08, 16, 28
 	RGB 00, 00, 00
+
 ; 8b3f
 
 Function8b3f: ; 8b3f
@@ -202,7 +203,7 @@
 .asm_8b5c
 	ld de, UnknOBPals
 	ld a, $3b
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	jp LoadHLPaletteIntoDE
 ; 8b67
 
@@ -218,7 +219,7 @@
 .asm_8b76
 	ld de, UnknOBPals
 	ld a, $3c
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	jp LoadHLPaletteIntoDE
 ; 8b81
 
@@ -231,39 +232,39 @@
 	ld a, c
 	push af
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
+	ld de, wSGBPals
 	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	pop af
-	call Function9775
+	call GetMonPalettePointer_
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	jp Function9809
 
 .asm_8bb2
 	ld de, UnknOBPals
 	ld a, c
-	call Function9775
-	call Function9643
+	call GetMonPalettePointer_
+	call LoadPalette_White_Col1_Col2_Black
 	ret
 ; 8bbd
 
 Function8bbd: ; 8bbd
 	ld a, [TrainerClass]
-	call Function976b
+	call GetTrainerPalettePointer
 	ld a, e
 	jr asm_8bd7
 
 Function8bc6:
 	ld a, [CurPartySpecies]
-	call Function97ee
+	call GetMonPalettePointer
 	ld a, e
 	bit 7, a
 	jr z, .asm_8bd7
@@ -276,7 +277,7 @@
 asm_8bd7
 	push hl
 	ld hl, UnknBGPals
-	ld de, $0008
+	ld de, $8
 .asm_8bde
 	and a
 	jr z, .asm_8be5
@@ -288,7 +289,7 @@
 	ld e, l
 	ld d, h
 	pop hl
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ret
 ; 8bec
 
@@ -304,7 +305,7 @@
 	ld c, a
 	ld a, [EnemyReflectCount]
 	hlcoord 0, 0, AttrMap
-	ld de, $0014
+	ld de, $14
 .asm_8c04
 	and a
 	jr z, .asm_8c0b
@@ -323,55 +324,54 @@
 	ret
 ; 8c1d
 
-Function8c1d: ; 8c1d
+ApplyMonOrTrainerPals: ; 8c1d
 	call CheckCGB
 	ret z
 	ld a, e
 	and a
-	jr z, .asm_8c2d
+	jr z, .get_trainer
 	ld a, [CurPartySpecies]
-	call Function9775
-	jr .asm_8c33
+	call GetMonPalettePointer_
+	jr .load_palettes
 
-.asm_8c2d
+.get_trainer
 	ld a, [TrainerClass]
-	call Function976b
+	call GetTrainerPalettePointer
 
-.asm_8c33
+.load_palettes
 	ld de, UnknBGPals
-	call Function9643
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ret
 ; 8c43
 
-Function8c43: ; 8c43
-	ld a, [wd10a]
+ApplyHPBarPals: ; 8c43
+	ld a, [wWhichHPBar]
 	and a
-	jr z, .asm_8c52
+	jr z, .Enemy
 	cp $1
-	jr z, .asm_8c57
+	jr z, .Player
 	cp $2
-	jr z, .asm_8c70
+	jr z, .PartyMenu
 	ret
 
-.asm_8c52
-	ld de, BGPals + $10 + 2
-	jr .asm_8c5a
+.Enemy
+	ld de, BGPals + 2 palettes + 2
+	jr .okay
 
-.asm_8c57
-	ld de, BGPals + $18 + 2
+.Player
+	ld de, BGPals + 3 palettes + 2
 
-.asm_8c5a
+.okay
 	ld l, c
 	ld h, $0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	ld bc, $0004
+	ld bc, 4
 	ld a, $5
 	call FarCopyWRAM
 	ld a, $1
@@ -378,20 +378,20 @@
 	ld [hCGBPalUpdate], a
 	ret
 
-.asm_8c70
+.PartyMenu
 	ld e, c
 	inc e
 	hlcoord 11, 1, AttrMap
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	ld a, [CurPartyMon]
-.asm_8c7b
+.loop
 	and a
-	jr z, .asm_8c82
+	jr z, .done
 	add hl, bc
 	dec a
-	jr .asm_8c7b
+	jr .loop
 
-.asm_8c82
+.done
 	lb bc, 2, 8
 	ld a, e
 	call FillBoxCGB
@@ -398,15 +398,14 @@
 	ret
 ; 8c8a
 
-Function8c8a: ; 8c8a
+LoadStatsScreenPals: ; 8c8a
 	call CheckCGB
 	ret z
-	ld hl, Unknown_8f6a
+	ld hl, StatsScreenPals
 	ld b, 0
 	dec c
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -419,7 +418,7 @@
 	ld [UnknBGPals + 8 * 2 + 1], a
 	pop af
 	ld [rSVBK], a
-	call Function96a4
+	call ApplyPals
 	ld a, $1
 	ret
 ; 8cb4
@@ -436,22 +435,21 @@
 	jr nz, .asm_8cf0
 	push hl
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
+	ld de, wSGBPals
 	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	pop hl
-rept 2
 	inc hl
-endr
+	inc hl
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hli]
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	call Function9809
 	ld hl, BlkPacket_9a86
 	call Function9809
@@ -459,12 +457,12 @@
 
 .asm_8cf0
 	ld de, UnknBGPals
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96a4
-	call Function9699
-	call Function96b3
+	call ApplyPals
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 8d05
 
@@ -518,6 +516,7 @@
 	RGB 31, 31, 00
 	RGB 00, 21, 00
 	RGB 00, 00, 00
+
 ; 8d55
 
 INCLUDE "predef/cgb.asm"
@@ -529,9 +528,9 @@
 	ld bc, 8
 	ld a, $5
 	call FarCopyWRAM
-	call Function96a4
-	call Function9699
-	call Function96b3
+	call ApplyPals
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 9608
 
@@ -540,6 +539,7 @@
 	RGB 09, 31, 31
 	RGB 10, 12, 31
 	RGB 00, 03, 19
+
 ; 9610
 
 
@@ -552,7 +552,7 @@
 	push bc
 	ld a, [hli]
 	push hl
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	pop hl
 	inc hl
@@ -562,7 +562,7 @@
 	ret
 ; 9625
 
-GetAthPalletFromPalettes9df6: ; 9625
+GetPredefPal: ; 9625
 	ld l, a
 	ld h, $0
 rept 3 ; multiply by 8
@@ -590,18 +590,20 @@
 	ret
 ; 9643
 
-Function9643: ; 9643
+LoadPalette_White_Col1_Col2_Black: ; 9643
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld a, $ff
+
+	ld a, $7fff % $100
 	ld [de], a
 	inc de
-	ld a, $7f
+	ld a, $7fff / $100
 	ld [de], a
 	inc de
-	ld c, $4
+
+	ld c, 2 * 2
 .loop
 	ld a, [hli]
 	ld [de], a
@@ -608,11 +610,13 @@
 	inc de
 	dec c
 	jr nz, .loop
+
 	xor a
 	ld [de], a
 	inc de
 	ld [de], a
 	inc de
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -667,7 +671,7 @@
 ; 9699
 
 
-Function9699: ; 9699
+WipeAttrMap: ; 9699
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
@@ -675,19 +679,19 @@
 	ret
 ; 96a4
 
-Function96a4: ; 96a4
+ApplyPals: ; 96a4
 	ld hl, UnknBGPals
 	ld de, BGPals
-	ld bc, $0080
+	ld bc, 16 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
 ; 96b3
 
-Function96b3: ; 96b3
+ApplyAttrMap: ; 96b3
 	ld a, [rLCDC]
 	bit 7, a
-	jr z, .asm_96d0
+	jr z, .UpdateVBank1
 	ld a, [hBGMapMode]
 	push af
 	ld a, $2
@@ -700,37 +704,36 @@
 	ld [hBGMapMode], a
 	ret
 
-.asm_96d0
+.UpdateVBank1
 	hlcoord 0, 0, AttrMap
 	debgcoord 0, 0
-	ld b, $12
+	ld b, SCREEN_HEIGHT
 	ld a, $1
 	ld [rVBK], a
-.asm_96dc
-	ld c, $14
-.asm_96de
+.row
+	ld c, SCREEN_WIDTH
+.col
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_96de
-	ld a, $c
+	jr nz, .col
+	ld a, BG_MAP_WIDTH - SCREEN_WIDTH
 	add e
-	jr nc, .asm_96ea
+	jr nc, .okay
 	inc d
-
-.asm_96ea
+.okay
 	ld e, a
 	dec b
-	jr nz, .asm_96dc
+	jr nz, .row
 	ld a, $0
 	ld [rVBK], a
 	ret
 ; 96f3
 
-Function96f3: ; 96f3 CGB layout $fc
-	ld hl, wcd9b
-	ld a, [wcda9]
+CGB_ApplyPartyMenuHPPals: ; 96f3 CGB layout $fc
+	ld hl, wHPPals
+	ld a, [wSGBPals]
 	ld e, a
 	ld d, $0
 	add hl, de
@@ -740,16 +743,15 @@
 	inc a
 	ld e, a
 	hlcoord 11, 2, AttrMap
-	ld bc, $0028
-	ld a, [wcda9]
-.asm_970b
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, [wSGBPals]
+.loop
 	and a
-	jr z, .asm_9712
+	jr z, .done
 	add hl, bc
 	dec a
-	jr .asm_970b
-
-.asm_9712
+	jr .loop
+.done
 	lb bc, 2, 8
 	ld a, e
 	call FillBoxCGB
@@ -757,40 +759,40 @@
 ; 971a
 
 
-Function971a: ; 971a
+InitPartyMenuOBPals: ; 971a
 	ld hl, Palettes_b681
 	ld de, UnknOBPals
-	ld bc, $0010
+	ld bc, 2 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
 ; 9729
 
-Function9729: ; 9729
+GetBattlemonBackpicPalettePointer: ; 9729
 	push de
 	callba GetPartyMonDVs
 	ld c, l
 	ld b, h
 	ld a, [TempBattleMonSpecies]
-	call Function974b
+	call GetPlayerOrMonPalettePointer
 	pop de
 	ret
 ; 973a
 
-Function973a: ; 973a
+GetEnemyFrontpicPalettePointer: ; 973a
 	push de
 	callba GetEnemyMonDVs
 	ld c, l
 	ld b, h
 	ld a, [TempEnemyMonSpecies]
-	call Function9764
+	call GetFrontpicPalettePointer
 	pop de
 	ret
 ; 974b
 
-Function974b: ; 974b
+GetPlayerOrMonPalettePointer: ; 974b
 	and a
-	jp nz, Function97f9
+	jp nz, GetMonNormalOrShinyPalettePointer
 	ld a, [wPlayerSpriteSetupFlags]
 	bit 2, a ; transformed to male
 	jr nz, .male
@@ -805,46 +807,41 @@
 	ret
 ; 9764
 
-Function9764: ; 9764
+GetFrontpicPalettePointer: ; 9764
 	and a
-	jp nz, Function97f9
+	jp nz, GetMonNormalOrShinyPalettePointer
 	ld a, [TrainerClass]
 
-Function976b: ; 976b
+GetTrainerPalettePointer: ; 976b
 	ld l, a
 	ld h, 0
-rept 2
 	add hl,hl
-endr
+	add hl,hl
 	ld bc, TrainerPalettes
 	add hl, bc
 	ret
 ; 9775
 
-Function9775: ; 9775
-	call Function97ee
+GetMonPalettePointer_: ; 9775
+	call GetMonPalettePointer
 	ret
 ; 9779
 
-Function9779: ; 9779
-	ret
-; 977a
-
-Function977a: ; 977a
+Function9779: mobile ; 9779
 	call CheckCGB
 	ret z
 	ld hl, Palettes_979c
 	ld a, $90
 	ld [rOBPI], a
-	ld c, $30
-.asm_9787
+	ld c, 6 palettes
+.loop
 	ld a, [hli]
 	ld [rOBPD], a
 	dec c
-	jr nz, .asm_9787
+	jr nz, .loop
 	ld hl, Palettes_979c
 	ld de, UnknOBPals + 8 * 2
-	ld bc, $0010
+	ld bc, 2 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
@@ -855,26 +852,32 @@
 	RGB 25, 25, 25
 	RGB 13, 13, 13
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 12, 25, 01
 	RGB 05, 14, 00
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 08, 12, 31
 	RGB 01, 04, 31
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 24, 18, 07
 	RGB 20, 15, 03
 	RGB 00, 00, 00
+
 ; 97cc
 
 Function97cc: ; 97cc
@@ -883,16 +886,16 @@
 	ld a, $90
 	ld [rOBPI], a
 	ld a, $1c
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call Function97e5
 	ld a, $21
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call Function97e5
 	ret
 ; 97e5
 
 Function97e5: ; 97e5
-	ld c, $8
+	ld c, 1 palettes
 .loop
 	ld a, [hli]
 	ld [rOBPD], a
@@ -901,7 +904,7 @@
 	ret
 ; 97ee
 
-Function97ee: ; 97ee
+GetMonPalettePointer: ; 97ee
 	ld l, a
 	ld h, $0
 rept 3
@@ -912,9 +915,9 @@
 	ret
 ; 97f9
 
-Function97f9: ; 97f9
+GetMonNormalOrShinyPalettePointer: ; 97f9
 	push bc
-	call Function97ee
+	call GetMonPalettePointer
 	pop bc
 	push hl
 	call CheckShininess
@@ -958,7 +961,6 @@
 	ld a, $10
 	jr nz, .okay
 	ld a, $20
-
 .okay
 	ld [rJOYP], a
 	ld a, $30
@@ -972,7 +974,7 @@
 	ld [rJOYP], a
 	ld a, $30
 	ld [rJOYP], a
-	call Function9a7a
+	call SGBDelayCycles
 	pop bc
 	dec b
 	jr nz, .loop
@@ -996,10 +998,10 @@
 	ld [hSGB], a
 	call Function98eb
 	call Function99b4
-	call Function9a7a
+	call SGBDelayCycles
 	call Function993f
 	call Function992c
-	call Function9a7a
+	call SGBDelayCycles
 	call Function993f
 	ld hl, PalPacket_9d66
 	call Function981a
@@ -1105,7 +1107,7 @@
 	ld hl, PalPacket_9d56
 	call Function981a
 	call Function992c
-	call Function9a7a
+	call SGBDelayCycles
 	call Function993f
 	ld hl, PalPacket_9d66
 	call Function981a
@@ -1139,7 +1141,7 @@
 Function994a: ; 994a
 	ld hl, PalPacket_9d26
 	call Function981a
-	call Function9a7a
+	call SGBDelayCycles
 	ld a, [rJOYP]
 	and $3
 	cp $3
@@ -1146,29 +1148,28 @@
 	jr nz, .asm_99a6
 	ld a, $20
 	ld [rJOYP], a
-rept 2
 	ld a, [rJOYP]
-endr
-	call Function9a7a
-	call Function9a7a
+	ld a, [rJOYP]
+	call SGBDelayCycles
+	call SGBDelayCycles
 	ld a, $30
 	ld [rJOYP], a
-	call Function9a7a
-	call Function9a7a
+	call SGBDelayCycles
+	call SGBDelayCycles
 	ld a, $10
 	ld [rJOYP], a
 rept 6
 	ld a, [rJOYP]
 endr
-	call Function9a7a
-	call Function9a7a
+	call SGBDelayCycles
+	call SGBDelayCycles
 	ld a, $30
 	ld [rJOYP], a
 rept 3
 	ld a, [rJOYP]
 endr
-	call Function9a7a
-	call Function9a7a
+	call SGBDelayCycles
+	call SGBDelayCycles
 	ld a, [rJOYP]
 	and $3
 	cp $3
@@ -1186,7 +1187,7 @@
 Function99ab: ; 99ab
 	ld hl, PalPacket_9d16
 	call Function981a
-	jp Function9a7a
+	jp SGBDelayCycles
 ; 99b4
 
 Function99b4: ; 99b4
@@ -1217,20 +1218,20 @@
 	ld b, $12
 .asm_99ea
 	push bc
-	ld bc, $000c
+	ld bc, $c
 	call CopyData
-	ld bc, $0028
+	ld bc, $28
 	call ClearBytes
-	ld bc, $000c
+	ld bc, $c
 	call CopyData
 	pop bc
 	dec b
 	jr nz, .asm_99ea
-	ld bc, $0140
+	ld bc, $140
 	call CopyData
 	ld bc, Start
 	call ClearBytes
-	ld bc, $0080
+	ld bc, 16 palettes
 	call CopyData
 	call DrawDefaultTiles
 	ld a, $e3
@@ -1250,9 +1251,9 @@
 	ld b, $80
 .asm_9a30
 	push bc
-	ld bc, $0010
+	ld bc, 2 palettes
 	call CopyData
-	ld bc, $0010
+	ld bc, 2 palettes
 	call ClearBytes
 	pop bc
 	dec b
@@ -1311,9 +1312,9 @@
 	ret
 ; 0x9a7a
 
-Function9a7a: ; 9a7a
-	ld de, $1b58
-.asm_9a7d
+SGBDelayCycles: ; 9a7a
+	ld de, 7000
+.wait
 	nop
 	nop
 	nop
@@ -1320,7 +1321,7 @@
 	dec de
 	ld a, d
 	or e
-	jr nz, .asm_9a7d
+	jr nz, .wait
 	ret
 ; 9a86
 
@@ -1803,6 +1804,7 @@
 	RGB 08, 11, 11
 	RGB 21, 21, 21
 	RGB 31, 31, 31
+
 ; a06e
 
 SGBBorderMap: ; a06e
@@ -1916,6 +1918,7 @@
 	RGB 31, 31, 25
 	RGB 31, 31, 25
 	RGB 31, 31, 25
+
 ; a51e
 
 SGBBorder: ; a51e
@@ -1945,18 +1948,17 @@
 INCLUDE "gfx/trainers/palette_pointers.asm"
 ; b1de
 
-Functionb1de: ; b1de
+LoadMapPals: ; b1de
 	callba LoadSpecialMapPalette
-	jr c, .asm_b230
+	jr c, .got_pals
 
 	ld a, [wPermission]
 	and 7
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_b279
-rept 2
+	ld hl, .TilesetColorsPointers
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1975,8 +1977,8 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, UnknBGPals
-	ld b, $8
-.asm_b210
+	ld b, 8
+.outer_loop
 	ld a, [de]
 	push de
 	push hl
@@ -1990,37 +1992,37 @@
 	ld e, l
 	ld d, h
 	pop hl
-	ld c, 8
-.asm_b222
+	ld c, 1 palettes
+.inner_loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_b222
+	jr nz, .inner_loop
 	pop de
 	inc de
 	dec b
-	jr nz, .asm_b210
+	jr nz, .outer_loop
 	pop af
 	ld [rSVBK], a
 
-.asm_b230
+.got_pals
 	ld a, [TimeOfDayPal]
 	and 3
-	ld bc, $40
+	ld bc, 8 palettes
 	ld hl, MapObjectPals
 	call AddNTimes
 	ld de, UnknOBPals
-	ld bc, $40
+	ld bc, 8 palettes
 	ld a, $5 ; BANK(UnknOBPals)
 	call FarCopyWRAM
 
 	ld a, [wPermission]
-	cp 1
-	jr z, .asm_b253
-	cp 2
+	cp TOWN
+	jr z, .outside
+	cp ROUTE
 	ret nz
-.asm_b253
+.outside
 	ld a, [MapGroup]
 	ld l, a
 	ld h, 0
@@ -2032,12 +2034,12 @@
 	ld a, [TimeOfDayPal]
 	and 3
 	cp NITE
-	jr c, .asm_b26d
+	jr c, .morn_day
 rept 4
 	inc hl
 endr
-.asm_b26d
-	ld de, UnknBGPals + 8 * 6 + 2
+.morn_day
+	ld de, UnknBGPals + 6 palettes + 2
 	ld bc, 4
 	ld a, $5
 	call FarCopyWRAM
@@ -2044,7 +2046,7 @@
 	ret
 ; b279
 
-Unknown_b279: ; b279
+.TilesetColorsPointers: ; b279
 	dw TilesetColors1
 	dw TilesetColors1
 	dw TilesetColors1
@@ -2080,18 +2082,20 @@
 	db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f
 ; b309
 
-Palette_b309: ; b309
+Palette_b309: ; b309 mobile
 	RGB 31, 31, 31
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 00, 00, 00
+
 ; b311
 
-Palette_b311: ; b311
+Palette_b311: ; b311 not mobile
 	RGB 31, 31, 31
 	RGB 17, 19, 31
 	RGB 14, 16, 31
 	RGB 00, 00, 00
+
 ; b319
 
 TilesetBGPalette: ; b319
@@ -2143,6 +2147,7 @@
 	RGB 11, 11, 19
 	RGB 07, 07, 12
 	RGB 00, 00, 00
+
 ; b681
 
 Palettes_b681: ; b681
@@ -2216,6 +2221,7 @@
 	RGB 20, 15, 03
 	RGB 07, 07, 07
 
+
 Palettes_b6f1: ; b6f1
 	RGB 31, 31, 31
 	RGB 18, 23, 31
@@ -2242,6 +2248,7 @@
 	RGB 18, 23, 31
 	RGB 00, 00, 00
 
+
 Palettes_b719: ; b719
 	RGB 31, 31, 31
 	RGB 07, 06, 03
@@ -2252,9 +2259,10 @@
 	RGB 31, 31, 00
 	RGB 26, 22, 00
 	RGB 00, 00, 00
+
 ; b729
 
-Palettes_b729: ; b729
+MalePokegearPals: ; b729
 	RGB 28, 31, 20
 	RGB 21, 21, 21
 	RGB 13, 13, 13
@@ -2284,9 +2292,10 @@
 	RGB 00, 31, 00
 	RGB 15, 07, 00
 	RGB 31, 00, 00
+
 ; b759
 
-Palettes_b759: ; b759
+FemalePokegearPals: ; b759
 	RGB 28, 31, 20
 	RGB 21, 21, 21
 	RGB 13, 13, 13
@@ -2316,6 +2325,7 @@
 	RGB 00, 31, 00
 	RGB 15, 07, 00
 	RGB 31, 00, 00
+
 ; b789
 
 Palettes_b789: ; b789
@@ -2338,6 +2348,7 @@
 	RGB 29, 26, 05
 	RGB 18, 18, 18
 	RGB 00, 00, 00
+
 ; b7a9
 
 Palettes_b7a9: ; b7a9
@@ -2420,4 +2431,5 @@
 	RGB 31, 31, 31
 	RGB 00, 00, 00
 	RGB 00, 00, 00
+
 ; b829
--- a/engine/compose_mail.asm
+++ b/engine/compose_mail.asm
@@ -34,7 +34,7 @@
 	ld a, BANK(.MailIcon)
 	call FarCopyBytes
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], a
 
@@ -43,7 +43,7 @@
 	ld a, SPRITE_ANIM_INDEX_00
 	call _InitSpriteAnimStruct
 
-	ld hl, $2
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
 	ld [hl], $0
 	call .InitCharset
@@ -57,7 +57,7 @@
 	ld a, %11100100
 	call DmgToCgbBGPals
 	ld a, %11100100
-	call Functioncf8
+	call DmgToCgbObjPal0
 	call Function11be0
 	ld hl, wc6d0
 	ld e, [hl]
@@ -67,6 +67,7 @@
 	add hl, de
 	ld [hl], $4e
 	ret
+
 ; 11ef4 (4:5ef4)
 
 .MailIcon: ; 11ef4
@@ -77,6 +78,7 @@
 	ld a, $21
 	ld [wc6d3], a
 	ret
+
 ; 11f7a (4:5f7a)
 
 .Dummy: ; dummied out
@@ -123,13 +125,14 @@
 	bit 7, a
 	jr nz, .exit_mail
 	call .DoJumptable
-	callba Function8cf62
+	callba PlaySpriteAnimationsAndDelayFrame
 	call .Update
 	call DelayFrame
 	and a
 	ret
+
 .exit_mail
-	callab Function8cf53
+	callab ClearSpriteAnims
 	call ClearSprites
 	xor a
 	ld [hSCX], a
@@ -179,10 +182,10 @@
 	ld [wc6d5], a
 	ld a, b
 	ld [wc6d6], a
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, [hl]
-	ld hl, $e
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld [hl], a
 	ld hl, wJumptableIndex
@@ -232,10 +235,10 @@
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $9
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $5
 	ret
@@ -268,44 +271,47 @@
 	ld de, MailEntry_Uppercase
 	call .PlaceMailCharset
 	ret
+
 .switch_to_lowercase
 	ld de, MailEntry_Lowercase
 	call .PlaceMailCharset
 	ret
 
+; called from engine/sprite_anims.asm
 Function120c1: ; 120c1 (4:60c1)
 	call Function1210c
-	ld hl, SpriteAnim1Sprite0d - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	ld e, a
 	swap e
-	ld hl, SpriteAnim1YOffset - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld [hl], e
 	cp $5
 	ld de, Unknown_120f8
-	ld a, $0
+	ld a, 0
 	jr nz, .asm_120df
 	ld de, Unknown_12102
-	ld a, $1
+	ld a, 1
 .asm_120df
-	ld hl, SpriteAnim1Sprite0e - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	add [hl]
-	ld hl, SpriteAnim1Sprite01 - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], a
-	ld hl, SpriteAnim1Sprite0c - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld l, [hl]
-	ld h, SpriteAnim1Index - SpriteAnim1
+	ld h, 0
 	add hl, de
 	ld a, [hl]
-	ld hl, SpriteAnim1XOffset - SpriteAnim1
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; 120f8 (4:60f8)
 
 Unknown_120f8: ; 120f8
@@ -329,11 +335,12 @@
 	and D_RIGHT
 	jr nz, .right
 	ret
+
 .right
 	call Function1218b
 	and a
 	jr nz, .asm_12138
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $9
@@ -340,9 +347,11 @@
 	jr nc, .asm_12135
 	inc [hl]
 	ret
+
 .asm_12135
 	ld [hl], $0
 	ret
+
 .asm_12138
 	cp $3
 	jr nz, .asm_1213d
@@ -351,15 +360,16 @@
 	ld e, a
 	add a
 	add e
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], a
 	ret
+
 .left
 	call Function1218b
 	and a
 	jr nz, .asm_12159
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -366,9 +376,11 @@
 	jr z, .asm_12156
 	dec [hl]
 	ret
+
 .asm_12156
 	ld [hl], $9
 	ret
+
 .asm_12159
 	cp $1
 	jr nz, .asm_1215f
@@ -380,12 +392,13 @@
 	ld e, a
 	add a
 	add e
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], a
 	ret
+
 .down
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	cp $5
@@ -392,11 +405,13 @@
 	jr nc, .asm_12175
 	inc [hl]
 	ret
+
 .asm_12175
 	ld [hl], $0
 	ret
+
 .up
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -403,6 +418,7 @@
 	jr z, .asm_12182
 	dec [hl]
 	ret
+
 .asm_12182
 	ld [hl], $5
 	ret
@@ -414,12 +430,12 @@
 	ld b, [hl]
 
 Function1218b: ; 1218b (4:618b)
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	cp $5
 	jr nz, .asm_121aa
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $3
@@ -428,12 +444,15 @@
 	jr c, .asm_121a7
 	ld a, $3
 	ret
+
 .asm_121a4
 	ld a, $1
 	ret
+
 .asm_121a7
 	ld a, $2
 	ret
+
 .asm_121aa
 	xor a
 	ret
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -1,6 +1,5 @@
 INCLUDE "includes.asm"
 
-
 SECTION "Credits", ROMX, BANK[CREDITS]
 
 	const_def
@@ -118,12 +117,12 @@
 	const CREDITS_END
 
 
-Function109847:: ; 109847
-	bit 6, b
+Credits:: ; 109847
+	bit 6, b ; Hall Of Fame
 	ld a, $0
-	jr z, .asm_10984f
+	jr z, .okay
 	ld a, $40
-.asm_10984f
+.okay
 	ld [wJumptableIndex], a
 
 	ld a, [rSVBK]
@@ -135,17 +134,17 @@
 	call ClearTileMap
 	call ClearSprites
 
-	ld hl, wca00
+	ld hl, wCreditsFaux2bpp
 	ld c, $80
 	ld de, $ff00
 
-.asm_10986a
+.load_loop
 	ld a, e
 	ld [hli], a
 	ld a, d
 	ld [hli], a
 	dec c
-	jr nz, .asm_10986a
+	jr nz, .load_loop
 
 	ld de, CreditsBorderGFX
 	ld hl, VTiles2 tile $20
@@ -163,20 +162,20 @@
 	call Request2bpp
 
 	ld a, $ff
-	ld [wcf64], a
+	ld [wCreditsBorderFrame], a
 	xor a
-	ld [wcf65], a
+	ld [wCreditsBorderMon], a
 
-	call Function109bca
+	call Credits_LoadBorderGFX
 	ld e, l
 	ld d, h
 	ld hl, VTiles2
-	lb bc, BANK(CreditsMonsGFX), $10
+	lb bc, BANK(CreditsMonsGFX), 16
 	call Request2bpp
 
-	call Function109a95
+	call ConstructCreditsTilemap
 	xor a
-	ld [wcf66], a
+	ld [wCreditsLYOverride], a
 
 	ld hl, LYOverrides
 	ld bc, $100
@@ -184,7 +183,7 @@
 	call ByteFill
 
 	ld a, rSCX - $ff00
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 
 	call GetCreditsPalette
 	call SetPalettes
@@ -200,19 +199,19 @@
 	ld [wcd21], a
 	ld [CreditsTimer], a
 
-.asm_1098de
-	call Function109908
-	call Function1098fd
-	jr nz, .asm_1098ee
+.execution_loop
+	call Credits_HandleBButton
+	call Credits_HandleAButton
+	jr nz, .exit_credits
 
-	call Function109926
+	call Credits_Jumptable
 	call DelayFrame
-	jr .asm_1098de
+	jr .execution_loop
 
-.asm_1098ee
+.exit_credits
 	call ClearBGPalettes
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld [hBGMapAddress], a
 	pop af
 	ld [hVBlank], a
@@ -221,9 +220,9 @@
 	ret
 ; 1098fd
 
-Function1098fd: ; 1098fd
+Credits_HandleAButton: ; 1098fd
 	ld a, [hJoypadDown]
-	and $1
+	and A_BUTTON
 	ret z
 	ld a, [wJumptableIndex]
 	bit 7, a
@@ -230,9 +229,9 @@
 	ret
 ; 109908
 
-Function109908: ; 109908
+Credits_HandleBButton: ; 109908
 	ld a, [hJoypadDown]
-	and $2
+	and B_BUTTON
 	ret z
 	ld a, [wJumptableIndex]
 	bit 6, a
@@ -240,12 +239,11 @@
 	ld hl, CreditsPos
 	ld a, [hli]
 	cp $d
-	jr nc, .asm_10991e
+	jr nc, .okay
 	ld a, [hli]
 	and a
 	ret z
-
-.asm_10991e
+.okay
 	ld hl, CreditsTimer
 	ld a, [hl]
 	and a
@@ -254,12 +252,12 @@
 	ret
 ; 109926
 
-Function109926: ; 109926
+Credits_Jumptable: ; 109926
 	ld a, [wJumptableIndex]
 	and $f
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_109937
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -270,28 +268,29 @@
 ; 109937
 
 
-Jumptable_109937: ; 109937 (42:5937)
+.Jumptable: ; 109937 (42:5937)
+	
 	dw ParseCredits
-	dw Function109951
-	dw Function109951
-	dw Function10995e
-	dw Function109964
-	dw Function10997b
-	dw Function109986
-	dw Function109951
-	dw Function109951
-	dw Function109951
-	dw Function109964
-	dw Function10997b
-	dw Function109956
+	dw Credits_Next
+	dw Credits_Next
+	dw Credits_PrepBGMapUpdate
+	dw Credits_UpdateGFXRequestPath
+	dw Credits_RequestGFX
+	dw Credits_LYOverride
+	dw Credits_Next
+	dw Credits_Next
+	dw Credits_Next
+	dw Credits_UpdateGFXRequestPath
+	dw Credits_RequestGFX
+	dw Credits_LoopBack
 
 
-Function109951: ; 109951 (42:5951)
+Credits_Next: ; 109951 (42:5951)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function109956: ; 109956 (42:5956)
+Credits_LoopBack: ; 109956 (42:5956)
 	ld hl, wJumptableIndex
 	ld a, [hl]
 	and $f0
@@ -298,51 +297,51 @@
 	ld [hl], a
 	ret
 
-Function10995e: ; 10995e (42:595e)
+Credits_PrepBGMapUpdate: ; 10995e (42:595e)
 	xor a
 	ld [hBGMapMode], a
-	jp Function109951
+	jp Credits_Next
 
-Function109964: ; 109964 (42:5964)
-	call Function109bca
+Credits_UpdateGFXRequestPath: ; 109964 (42:5964)
+	call Credits_LoadBorderGFX
 	ld a, l
 	ld [Requested2bppSource], a
 	ld a, h
 	ld [Requested2bppSource + 1], a
-	ld a, $0
+	ld a, VTiles2 % $100
 	ld [Requested2bppDest], a
-	ld a, $90
+	ld a, VTiles2 / $100
 	ld [Requested2bppDest + 1], a
-	jr Function10997b
+	jr Credits_RequestGFX
 
-Function10997b: ; 10997b (42:597b)
+Credits_RequestGFX: ; 10997b (42:597b)
 	xor a
 	ld [hBGMapMode], a
 	ld a, $8
 	ld [Requested2bpp], a
-	jp Function109951
+	jp Credits_Next
 
-Function109986: ; 109986 (42:5986)
+Credits_LYOverride: ; 109986 (42:5986)
 	ld a, [rLY]
 	cp $30
-	jr c, Function109986
-	ld a, [wcf66]
+	jr c, Credits_LYOverride
+	ld a, [wCreditsLYOverride]
 rept 2
 	dec a
 endr
-	ld [wcf66], a
+	ld [wCreditsLYOverride], a
 	ld hl, LYOverrides + $1f
-	call Function1099a3
+	call .Fill
 	ld hl, LYOverrides + $87
-	call Function1099a3
-	jp Function109951
+	call .Fill
+	jp Credits_Next
 
-Function1099a3: ; 1099a3 (42:59a3)
+.Fill: ; 1099a3 (42:59a3)
 	ld c, $8
-.asm_1099a5
+.loop
 	ld [hli], a
 	dec c
-	jr nz, .asm_1099a5
+	jr nz, .loop
 	ret
 ; 1099aa
 
@@ -437,15 +436,15 @@
 	
 .theend
 ; Display "The End" graphic.
-	call Function109c11
+	call Credits_TheEnd
 	jr .loop
 	
 .scene
 ; Update the scene number and corresponding palette.
 	call .get
-	ld [wcf65], a ; scene
+	ld [wCreditsBorderMon], a ; scene
 	xor a
-	ld [wcf64], a ; frame
+	ld [wCreditsBorderFrame], a ; frame
 	call GetCreditsPalette
 	call SetPalettes ; update hw pal registers
 	jr .loop
@@ -453,7 +452,7 @@
 .clear
 ; Clear the banner.
 	ld a, $ff
-	ld [wcf64], a ; frame
+	ld [wCreditsBorderFrame], a ; frame
 	jr .loop
 	
 .music
@@ -484,13 +483,13 @@
 	ld [hBGMapMode], a
 	
 .done
-	jp Function109951
+	jp Credits_Next
 	
 .end
 ; Stop execution.
 	ld hl, wJumptableIndex
 	set 7, [hl]
-	ld a, $20
+	ld a, 32
 	ld [MusicFade], a
 	ld a, MUSIC_POST_CREDITS % $100
 	ld [MusicFadeID], a
@@ -521,91 +520,96 @@
 ; 109a95
 
 
-Function109a95: ; 109a95 (42:5a95)
+ConstructCreditsTilemap: ; 109a95 (42:5a95)
 	xor a
 	ld [hBGMapMode], a
 	ld a, $c
 	ld [hBGMapAddress], a
+
 	ld a, $28
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	call ByteFill
+
 	ld a, $7f
 	hlcoord 0, 4
-	ld bc, $118
+	ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH
 	call ByteFill
+
 	hlcoord 0, 4
 	ld a, $24
-	call Function109b1d
+	call DrawCreditsBorder
+
 	hlcoord 0, 17
 	ld a, $20
-	call Function109b1d
+	call DrawCreditsBorder
+
 	hlcoord 0, 0, AttrMap
-	ld bc, $50
+	ld bc, 4 * SCREEN_WIDTH
 	xor a
 	call ByteFill
+
 	hlcoord 0, 4, AttrMap
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	ld a, $1
 	call ByteFill
+
 	hlcoord 0, 5, AttrMap
-	ld bc, $f0
+	ld bc, 12 * SCREEN_WIDTH
 	ld a, $2
 	call ByteFill
+
 	hlcoord 0, 17, AttrMap
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	ld a, $1
 	call ByteFill
-	call Function3200
+
+	call WaitBGMap2
 	xor a
 	ld [hBGMapMode], a
 	ld [hBGMapAddress], a
 	hlcoord 0, 0
-	call Function109aff
-	call Function3200
+	call .InitTopPortion
+	call WaitBGMap2
 	ret
 
-Function109aff: ; 109aff (42:5aff)
-	ld b, $5
-.asm_109b01
+.InitTopPortion: ; 109aff (42:5aff)
+	ld b, 5
+.outer_loop
 	push hl
-	ld de, $11
-	ld c, $4
+	ld de, SCREEN_WIDTH - 3
+	ld c, 4
 	xor a
-.asm_109b08
+.inner_loop
+rept 3
 	ld [hli], a
 	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
+endr
 	ld [hl], a
 	inc a
 	add hl, de
 	dec c
-	jr nz, .asm_109b08
+	jr nz, .inner_loop
 	pop hl
 rept 4
 	inc hl
 endr
 	dec b
-	jr nz, .asm_109b01
+	jr nz, .outer_loop
 	ret
 
-Function109b1d: ; 109b1d (42:5b1d)
-	ld c, $5
-.asm_109b1f
+DrawCreditsBorder: ; 109b1d (42:5b1d)
+	ld c, SCREEN_WIDTH / 4
+.loop
 	push af
+rept 3
 	ld [hli], a
 	inc a
+endr
 	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
 	pop af
 	dec c
-	jr nz, .asm_109b1f
+	jr nz, .loop
 	ret
 
 GetCreditsPalette: ; 109b2c
@@ -619,7 +623,7 @@
 	
 .GetPalAddress
 ; Each set of palette data is 24 bytes long.
-	ld a, [wcf65] ; scene
+	ld a, [wCreditsBorderMon] ; scene
 	and 3
 	add a
 	add a ; * 8
@@ -724,11 +728,11 @@
 	RGB 31, 31, 31
 ; 109bca
 
-Function109bca: ; 109bca (42:5bca)
-	ld hl, wcf64
+Credits_LoadBorderGFX: ; 109bca (42:5bca)
+	ld hl, wCreditsBorderFrame
 	ld a, [hl]
 	cp $ff
-	jr z, .asm_109bed
+	jr z, .init
 
 	and 3
 	ld e, a
@@ -735,7 +739,7 @@
 	inc a
 	and 3
 	ld [hl], a
-	ld a, [wcf65]
+	ld a, [wCreditsBorderMon]
 	and 3
 rept 2
 	add a
@@ -744,7 +748,7 @@
 	add a
 	ld e, a
 	ld d, 0
-	ld hl, CreditsMonsFrames
+	ld hl, .Frames
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -751,43 +755,42 @@
 	ld l, a
 	ret
 
-.asm_109bed
-	ld hl, wca00
+.init
+	ld hl, wCreditsFaux2bpp
 	ret
 ; 109bf1 (42:5bf1)
 
-CreditsMonsFrames: ; 109bf1
+.Frames: ; 109bf1
 	dw CreditsPichuGFX
-	dw CreditsPichuGFX     + $100
-	dw CreditsPichuGFX     + $200
-	dw CreditsPichuGFX     + $300
+	dw CreditsPichuGFX     + 16 tiles
+	dw CreditsPichuGFX     + 32 tiles
+	dw CreditsPichuGFX     + 48 tiles
 	dw CreditsSmoochumGFX
-	dw CreditsSmoochumGFX  + $100
-	dw CreditsSmoochumGFX  + $200
-	dw CreditsSmoochumGFX  + $300
+	dw CreditsSmoochumGFX  + 16 tiles
+	dw CreditsSmoochumGFX  + 32 tiles
+	dw CreditsSmoochumGFX  + 48 tiles
 	dw CreditsDittoGFX
-	dw CreditsDittoGFX     + $100
-	dw CreditsDittoGFX     + $200
-	dw CreditsDittoGFX     + $300
+	dw CreditsDittoGFX     + 16 tiles
+	dw CreditsDittoGFX     + 32 tiles
+	dw CreditsDittoGFX     + 48 tiles
 	dw CreditsIgglybuffGFX
-	dw CreditsIgglybuffGFX + $100
-	dw CreditsIgglybuffGFX + $200
-	dw CreditsIgglybuffGFX + $300
+	dw CreditsIgglybuffGFX + 16 tiles
+	dw CreditsIgglybuffGFX + 32 tiles
+	dw CreditsIgglybuffGFX + 48 tiles
 ; 109c11
 
-Function109c11: ; 109c11 (42:5c11)
+Credits_TheEnd: ; 109c11 (42:5c11)
 	ld a, $40
 	hlcoord 6, 9
-	call Function109c1c
+	call .Load
 	hlcoord 6, 10
-
-Function109c1c: ; 109c1c (42:5c1c)
-	ld c, $8
-.asm_109c1e
+.Load: ; 109c1c (42:5c1c)
+	ld c, 8
+.loop
 	ld [hli], a
 	inc a
 	dec c
-	jr nz, .asm_109c1e
+	jr nz, .loop
 	ret
 ; 109c24 (42:5c24)
 
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -1,22 +1,4 @@
-Functione455c: ; e455c
-	hlcoord 1, 1
-	ld de, SCREEN_WIDTH
-	ld c, $10
-.asm_e4564
-	ld [hl], $7f
-	add hl, de
-	dec c
-	jr nz, .asm_e4564
-	hlcoord 1, 2
-	ld bc, $28
-	ld a, [wJumptableIndex]
-	call AddNTimes
-	ld [hl], $ed
-	ret
-; e4579
-
-
-Functione4579: ; e4579
+Copyright_GFPresents: ; e4579
 	ld de, MUSIC_NONE
 	call PlayMusic
 	call ClearBGPalettes
@@ -42,7 +24,7 @@
 	call DelayFrames
 	call ClearTileMap
 	callba GBCOnlyScreen
-	call Functione45e8
+	call .GetGFLogoGFX
 .joy_loop
 	call JoyTextDelay
 	ld a, [hJoyLast]
@@ -52,22 +34,22 @@
 	bit 7, a
 	jr nz, .finish
 	call PlaceGameFreakPresents
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .joy_loop
 
 .pressed_button
-	call Functione465e
+	call .StopGamefreakAnim
 	scf
 	ret
 
 .finish
-	call Functione465e
+	call .StopGamefreakAnim
 	and a
 	ret
 ; e45e8
 
-Functione45e8: ; e45e8
+.GetGFLogoGFX: ; e45e8
 	ld de, GameFreakLogo
 	ld hl, VTiles2
 	lb bc, BANK(GameFreakLogo), $1c
@@ -79,17 +61,17 @@
 	ld [rSVBK], a
 
 	ld hl, IntroLogoGFX
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld a, BANK(IntroLogoGFX)
 	call FarDecompress
 
 	ld hl, VTiles0
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	lb bc, 1, 8 tiles
 	call Request2bpp
 
 	ld hl, VTiles1
-	ld de, w6_d000 + $80 tiles
+	ld de, wDecompressScratch + $80 tiles
 	lb bc, 1, 8 tiles
 	call Request2bpp
 
@@ -96,9 +78,9 @@
 	pop af
 	ld [rSVBK], a
 
-	callba Function8cf53
+	callba ClearSpriteAnims
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_03
+	ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
 	call _InitSpriteAnimStruct
 	ld hl, $7
 	add hl, bc
@@ -111,7 +93,7 @@
 	ld [hl], $30
 	xor a
 	ld [wJumptableIndex], a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -124,8 +106,8 @@
 	ret
 ; e465e
 
-Functione465e: ; e465e
-	callba Function8cf53
+.StopGamefreakAnim: ; e465e
+	callba ClearSpriteAnims
 	call ClearTileMap
 	call ClearSprites
 	ld c, 16
@@ -137,7 +119,7 @@
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -147,7 +129,7 @@
 	jp [hl]
 ; e467f
 
-.jumptable: ; e467f
+.dw: ; e467f
 	dw PlaceGameFreakPresents_0
 	dw PlaceGameFreakPresents_1
 	dw PlaceGameFreakPresents_2
@@ -230,9 +212,8 @@
 ; e46ed
 
 
-
 GameFreakLogoJumper: ; e46ed (39:46ed)
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
@@ -252,21 +233,20 @@
 	dw GameFreakLogoScene4
 	dw GameFreakLogoScene5
 
-
 GameFreakLogoScene1: ; e4707 (39:4707)
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
 	ret
 
 GameFreakLogoScene2: ; e470d (39:470d)
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	and a
 	jr z, .asm_e4747
 	ld d, a
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	and $3f
@@ -275,17 +255,17 @@
 	add $20
 .asm_e4723
 	ld e, a
-	callba Functionce765
-	ld hl, $7
+	callba BattleAnim_Sine_e
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld [hl], e
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	dec [hl]
 	and $1f
 	ret nz
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	sub $30
@@ -293,11 +273,12 @@
 	ld de, SFX_DITTO_BOUNCE
 	call PlaySFX
 	ret
+
 .asm_e4747
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $0
 	ld de, SFX_DITTO_POP_UP
@@ -305,7 +286,7 @@
 	ret
 
 GameFreakLogoScene3: ; e4759 (39:4759)
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	cp $20
@@ -312,11 +293,12 @@
 	jr nc, .asm_e4764
 	inc [hl]
 	ret
+
 .asm_e4764
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $0
 	ld de, SFX_DITTO_TRANSFORM
@@ -324,7 +306,7 @@
 	ret
 
 GameFreakLogoScene4: ; e4776 (39:4776)
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	cp $40
@@ -351,12 +333,12 @@
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
+
 .asm_e47a3
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
 	call PlaceGameFreakPresents_AdvanceIndex
-
 GameFreakLogoScene5: ; e47ab (39:47ab)
 	ret
 ; e47ac (39:47ac)
@@ -369,20 +351,24 @@
 	RGB 23, 12, 27
 	RGB 23, 13, 26
 	RGB 23, 13, 24
+
 	RGB 24, 14, 22
 	RGB 24, 14, 20
 	RGB 24, 15, 18
 	RGB 24, 15, 16
+
 	RGB 25, 16, 14
 	RGB 25, 16, 12
 	RGB 25, 17, 10
 	RGB 25, 17, 08
+
 	RGB 26, 18, 06
 	RGB 26, 18, 04
 	RGB 26, 19, 02
 	RGB 26, 19, 00
-;' e47cc
 
+; e47cc
+
 GameFreakLogo: ; e47cc
 INCBIN "gfx/splash/logo.1bpp"
 ; e48ac
@@ -396,7 +382,7 @@
 	push af
 	ld a, [hVBlank]
 	push af
-	call Functione4901
+	call .InitRAMAddrs
 .loop: ; e48bc
 	call JoyTextDelay
 	ld a, [hJoyLast]
@@ -406,7 +392,7 @@
 	bit 7, a
 	jr nz, .done
 	call IntroSceneJumper
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	call DelayFrame
 	jp .loop
 
@@ -434,7 +420,7 @@
 	ret
 ; e4901
 
-Functione4901: ; e4901
+.InitRAMAddrs: ; e4901
 	xor a
 	ld [hVBlank], a
 	ld a, $1
@@ -459,7 +445,6 @@
 	jp [hl]
 ; e491e
 
-
 IntroScenes: ; e491e (39:491e)
 	dw IntroScene1
 	dw IntroScene2
@@ -490,7 +475,6 @@
 	dw IntroScene27
 	dw IntroScene28
 
-
 NextIntroScene: ; e4956 (39:4956)
 	ld hl, wJumptableIndex
 	inc [hl]
@@ -498,7 +482,7 @@
 
 IntroScene1: ; e495b (39:495b)
 ; Setup the next scene.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -507,18 +491,18 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap001
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroPulseGFX
 	ld de, VTiles0 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap002
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -540,8 +524,8 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
@@ -558,8 +542,8 @@
 	cp $60
 	jr nz, .DontPlaySound
 	push af
-	ld de, $5858
-	call Functione51dc
+	depixel 11, 11
+	call CrystalIntro_InitUnownAnim
 	ld de, SFX_INTRO_UNOWN_1
 	call PlaySFX
 	pop af
@@ -566,7 +550,7 @@
 .DontPlaySound
 	ld [wcf65], a
 	xor a
-	call Functione5223
+	call CrystalIntro_UnownFade
 	ret
 .endscene
 	call NextIntroScene
@@ -574,7 +558,7 @@
 
 IntroScene3: ; e49fd (39:49fd)
 ; More setup. Transition to the outdoor scene.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -583,15 +567,15 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap003
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroBackgroundGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap004
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -613,8 +597,8 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	call Functione5516
-	call Functione549e
+	call Intro_ResetLYOverrides
+	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
 	call NextIntroScene
@@ -622,7 +606,7 @@
 
 IntroScene4: ; e4a69 (39:4a69)
 ; Scroll the outdoor panorama for a bit.
-	call Functione552f
+	call Intro_PerspectiveScrollBG
 	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	cp $80
@@ -629,6 +613,7 @@
 	jr z, .endscene
 	inc [hl]
 	ret
+
 .endscene
 	call NextIntroScene
 	ret
@@ -635,28 +620,28 @@
 
 IntroScene5: ; e4a7a (39:4a7a)
 ; Go back to the Unown.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
 	ld [hBGMapMode], a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld a, $1
 	ld [rVBK], a
 	ld hl, IntroTilemap005
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroPulseGFX
 	ld de, VTiles0 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap006
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -678,10 +663,10 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -688,7 +673,7 @@
 
 IntroScene6: ; e4af7 (39:4af7)
 ; Two more Unown (I, H) fade in.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $80
@@ -700,10 +685,11 @@
 	cp $20
 	jr z, .FirstUnown
 	jr .NoUnown
+
 .FirstUnown
 	push af
-	ld de, $3878
-	call Functione51dc
+	depixel 7, 15
+	call CrystalIntro_InitUnownAnim
 	ld de, SFX_INTRO_UNOWN_2
 	call PlaySFX
 	pop af
@@ -710,12 +696,13 @@
 .NoUnown
 	ld [wcf65], a
 	xor a
-	call Functione5223
+	call CrystalIntro_UnownFade
 	ret
+
 .SecondUnown
 	push af
-	ld de, $7030
-	call Functione51dc
+	depixel 14, 6
+	call CrystalIntro_InitUnownAnim
 	ld de, SFX_INTRO_UNOWN_1
 	call PlaySFX
 	pop af
@@ -722,8 +709,9 @@
 .StopUnown
 	ld [wcf65], a
 	ld a, $1
-	call Functione5223
+	call CrystalIntro_UnownFade
 	ret
+
 .endscene
 	call NextIntroScene
 	ret
@@ -730,44 +718,54 @@
 
 IntroScene7: ; e4b3f (39:4b3f)
 ; Back to the outdoor scene.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
 	ld [hBGMapMode], a
+
 	ld a, $1
 	ld [rVBK], a
 	ld hl, IntroTilemap003
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
+
 	ld hl, IntroPichuWooperGFX
 	ld de, VTiles0 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
+
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroSuicuneRunGFX
 	ld de, VTiles0 tile $00
-	call Functione54de
+	call Intro_DecompressRequest2bpp_255Tiles
+
 	ld hl, IntroBackgroundGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
+
 	ld hl, IntroTilemap004
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
+
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld hl, Palette_e5edd
 	ld de, UnknBGPals
 	ld bc, $80
 	call CopyBytes
+
 	ld hl, Palette_e5edd
 	ld de, BGPals
 	ld bc, $80
 	call CopyBytes
+
 	pop af
 	ld [rSVBK], a
+
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -775,14 +773,14 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	call Functione5516
-	callba Function8cf53
+	call Intro_ResetLYOverrides
+	callba ClearSpriteAnims
 	depixel 13, 27, 4, 0
 	ld a, SPRITE_ANIM_INDEX_26
 	call _InitSpriteAnimStruct
 	ld a, $f0
-	ld [wc3c0], a
-	call Functione549e
+	ld [wGlobalAnimXOffset], a
+	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
@@ -795,24 +793,26 @@
 	ld a, [hl]
 	inc [hl]
 	cp $40
-	jr z, .asm_e4be2
-	jr nc, .asm_e4be8
-	call Functione552f
+	jr z, .suicune_sound
+	jr nc, .animate_suicune
+	call Intro_PerspectiveScrollBG
 	ret
-.asm_e4be2
+
+.suicune_sound
 	ld de, SFX_INTRO_SUICUNE_3
 	call PlaySFX
-.asm_e4be8
-	ld a, [wc3c0]
+.animate_suicune
+	ld a, [wGlobalAnimXOffset]
 	and a
-	jr z, .asm_e4bf4
+	jr z, .finish
 	sub $8
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	ret
-.asm_e4bf4
+
+.finish
 	ld de, SFX_INTRO_SUICUNE_2
 	call PlaySFX
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	call NextIntroScene
 	ret
 
@@ -819,16 +819,19 @@
 IntroScene9: ; e4c04 (39:4c04)
 ; Set up the next scene (same bg).
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	call ClearSprites
 	hlcoord 0, 0, AttrMap
-	ld bc, $f0
+	; first 12 rows have palette 1
+	ld bc, 12 * SCREEN_WIDTH
 	ld a, $1
 	call ByteFill
-	ld bc, $3c
+	; middle 3 rows have palette 2
+	ld bc, 3 * SCREEN_WIDTH
 	ld a, $2
 	call ByteFill
-	ld bc, $3c
+	; last three rows have palette 3
+	ld bc, 3 * SCREEN_WIDTH
 	ld a, $3
 	call ByteFill
 	ld a, $2
@@ -836,7 +839,7 @@
 	call DelayFrame
 	call DelayFrame
 	call DelayFrame
-	ld a, $c
+	ld a, $c ; $980c
 	ld [hBGMapAddress], a
 	call DelayFrame
 	call DelayFrame
@@ -844,16 +847,16 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [hBGMapAddress], a
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	call NextIntroScene
 	ret
 
 IntroScene10: ; e4c4f (39:4c4f)
 ; Wooper and Pichu enter.
-	call Functione546d
-	ld hl, wcf64
+	call Intro_RustleGrass
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $c0
@@ -885,25 +888,25 @@
 
 IntroScene11: ; e4c86 (39:4c86)
 ; Back to Unown again.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
 	ld [hBGMapMode], a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld a, $1
 	ld [rVBK], a
 	ld hl, IntroTilemap007
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap008
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -925,8 +928,8 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
@@ -935,14 +938,15 @@
 
 IntroScene12: ; e4cfa (39:4cfa)
 ; Even more Unown.
-	call Functione4d36
+	call .PlayUnownSound
 	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $c0
-	jr nc, .asm_e4d32
+	jr nc, .done
 	cp $80
-	jr nc, .asm_e4d1d
+	jr nc, .second_half
+; first half
 	ld c, a
 	and $1f
 	sla a
@@ -951,9 +955,11 @@
 	and $e0
 	srl a
 	swap a
-	call Functione5223
+	call CrystalIntro_UnownFade
 	ret
-.asm_e4d1d
+
+.second_half
+; double speed
 	ld c, a
 	and $f
 	sla a
@@ -963,13 +969,14 @@
 	and $70
 	or $40
 	swap a
-	call Functione5223
+	call CrystalIntro_UnownFade
 	ret
-.asm_e4d32
+
+.done
 	call NextIntroScene
 	ret
 
-Functione4d36: ; e4d36 (39:4d36)
+.PlayUnownSound: ; e4d36 (39:4d36)
 	ld a, [wIntroSceneFrameCounter]
 	ld c, a
 	ld hl, .UnownSounds
@@ -1003,12 +1010,11 @@
 	dbw $90, SFX_INTRO_UNOWN_2
 	dbw $a0, SFX_INTRO_UNOWN_1
 	dbw $b0, SFX_INTRO_UNOWN_2
-	db $ff
-; e4d6d
+	db -1 ; e4d6d
 
 IntroScene13: ; e4d6d (39:4d6d)
 ; Switch scenes again.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -1017,18 +1023,18 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap003
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroSuicuneRunGFX
 	ld de, VTiles0 tile $00
-	call Functione54de
+	call Intro_DecompressRequest2bpp_255Tiles
 	ld hl, IntroBackgroundGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap004
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1050,7 +1056,7 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
+	callba ClearSpriteAnims
 	depixel 13, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_26
 	call _InitSpriteAnimStruct
@@ -1057,10 +1063,10 @@
 	ld de, MUSIC_CRYSTAL_OPENING
 	call PlayMusic
 	xor a
-	ld [wc3c0], a
-	call Functione549e
+	ld [wGlobalAnimXOffset], a
+	call Intro_SetCGBPalUpdate
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -1070,7 +1076,7 @@
 	ld a, [hSCX]
 	sub 10
 	ld [hSCX], a
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $80
@@ -1089,21 +1095,21 @@
 .asm_e4e1a
 	ld a, $1
 	ld [wcf65], a
-	ld a, [wc3c0]
+	ld a, [wGlobalAnimXOffset]
 	cp $88
 	jr c, .asm_e4e2c
 	sub $8
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	ret
 
 .asm_e4e2c
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	ret
 
 .asm_e4e33
-	ld a, [wc3c0]
+	ld a, [wGlobalAnimXOffset]
 	sub $2
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	ret
 
 .done
@@ -1112,7 +1118,7 @@
 
 IntroScene15: ; e4e40 (39:4e40)
 ; Transition to a new scene.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -1121,23 +1127,23 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap009
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroSuicuneJumpGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroUnownBackGFX
 	ld de, VTiles0 tile $00
-	call Functione54c2
-	ld de, GFX_e7a5d
+	call Intro_DecompressRequest2bpp_128Tiles
+	ld de, IntroGrass4GFX
 	ld hl, VTiles1 tile $00
-	lb bc, BANK(GFX_e7a5d), 1
+	lb bc, BANK(IntroGrass4GFX), 1
 	call Request2bpp
 	ld hl, IntroTilemap010
 	debgcoord 0, 0
-	call Functione54fa
-	call Functione541b
+	call Intro_DecompressRequest2bpp_64Tiles
+	call Intro_LoadTilemap
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1160,8 +1166,8 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	depixel 8, 5
 	ld a, SPRITE_ANIM_INDEX_2A
 	call _InitSpriteAnimStruct
@@ -1169,7 +1175,7 @@
 	ld a, SPRITE_ANIM_INDEX_2B
 	call _InitSpriteAnimStruct
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -1176,12 +1182,12 @@
 
 IntroScene16: ; e4edc (39:4edc)
 ; Suicune shows its face. An Unown appears in front.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $80
 	jr nc, .done
-	call Functione5441
+	call Intro_Scene16_AnimateSuicune
 	ld a, [hSCY]
 	and a
 	ret z
@@ -1194,7 +1200,7 @@
 
 IntroScene17: ; e4ef5 (39:4ef5)
 ; ...
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -1203,15 +1209,15 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap011
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroSuicuneCloseGFX
 	ld de, VTiles1 tile $00
-	call Functione54de
+	call Intro_DecompressRequest2bpp_255Tiles
 	ld hl, IntroTilemap012
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1233,10 +1239,10 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -1243,7 +1249,7 @@
 
 IntroScene18: ; e4f67 (39:4f67)
 ; Suicune close up.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $60
@@ -1260,7 +1266,7 @@
 
 IntroScene19: ; e4f7e (39:4f7e)
 ; More setup.
-	call Functione54a3
+	call Intro_ClearBGPals
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -1269,23 +1275,23 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap013
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroSuicuneBackGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroUnownsGFX
 	ld de, VTiles1 tile $00
-	call Functione54c2
-	ld de, GFX_e7a5d
+	call Intro_DecompressRequest2bpp_128Tiles
+	ld de, IntroGrass4GFX
 	ld hl, VTiles1 tile $7f
-	lb bc, BANK(GFX_e7a5d), 1
+	lb bc, BANK(IntroGrass4GFX), 1
 	call Request2bpp
 	ld hl, IntroTilemap014
 	debgcoord 0, 0
-	call Functione54fa
-	call Functione541b
+	call Intro_DecompressRequest2bpp_64Tiles
+	call Intro_LoadTilemap
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1308,17 +1314,17 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	ld hl, wc300
+	callba ClearSpriteAnims
+	ld hl, wSpriteAnimDict
 	xor a
 	ld [hli], a
 	ld [hl], $7f
-	call Functione549e
+	call Intro_SetCGBPalUpdate
 	depixel 12, 0
 	ld a, SPRITE_ANIM_INDEX_2B
 	call _InitSpriteAnimStruct
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -1325,15 +1331,15 @@
 
 IntroScene20: ; e5019 (39:5019)
 ; Suicune running away. A bunch of Unown appear.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $98
-	jr nc, .asm_e5059
+	jr nc, .finished
 	cp $58
 	ret nc
 	cp $40
-	jr nc, .asm_e5032
+	jr nc, .AppearUnown
 	cp $28
 	ret nc
 	ld a, [hSCY]
@@ -1341,7 +1347,7 @@
 	ld [hSCY], a
 	ret
 
-.asm_e5032
+.AppearUnown
 	sub $18
 	ld c, a
 	and $3
@@ -1353,10 +1359,10 @@
 	srl a
 	ld [wcf65], a
 	xor a
-	call Functione5348
+	call Intro_Scene20_AppearUnown
 	ret
 ; e5049 (39:5049)
-
+; unused
 	ld a, c
 	and $1c
 	srl a
@@ -1363,27 +1369,27 @@
 	srl a
 	ld [wcf65], a
 	ld a, 1
-	call Functione5348
+	call Intro_Scene20_AppearUnown
 	ret
 
-.asm_e5059
+.finished
 	call NextIntroScene
 	ret
 
 IntroScene21: ; e505d (39:505d)
 ; Suicune gets more distant and turns black.
-	call Functione5451
+	call Intro_ColoredSuicuneFrameSwap
 	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hBGMapMode], a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
 
 IntroScene22: ; e5072 (39:5072)
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $8
@@ -1390,19 +1396,19 @@
 	jr nc, .done
 	ret
 .done
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	call NextIntroScene
 	ret
 
 IntroScene23: ; e5086 (39:5086)
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	call NextIntroScene
 	ret
 
 IntroScene24: ; e508e (39:508e)
 ; Fade to white.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $20
@@ -1411,25 +1417,27 @@
 	ld c, a
 	and $3
 	ret nz
+
 	ld a, c
 	and $1c
 	sla a
-	call Functione5172
+	call Intro_Scene24_ApplyPaletteFade
 	ret
 
 .done
 	ld a, $40
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	call NextIntroScene
 	ret
 
 IntroScene25: ; e50ad (39:50ad)
 ; Wait around a bit.
-	ld a, [wcf64]
+	ld a, [wIntroSceneFrameCounter]
 	dec a
 	jr z, .done
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ret
+
 .done
 	call NextIntroScene
 	ret
@@ -1445,15 +1453,15 @@
 	ld [rVBK], a
 	ld hl, IntroTilemap015
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, $0
 	ld [rVBK], a
 	ld hl, IntroCrystalUnownsGFX
 	ld de, VTiles2 tile $00
-	call Functione54c2
+	call Intro_DecompressRequest2bpp_128Tiles
 	ld hl, IntroTilemap017
 	debgcoord 0, 0
-	call Functione54fa
+	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1475,10 +1483,10 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
-	call Functione549e
+	callba ClearSpriteAnims
+	call Intro_SetCGBPalUpdate
 	xor a
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ld [wcf65], a
 	call NextIntroScene
 	ret
@@ -1487,7 +1495,7 @@
 ; Spell out C R Y S T A L with Unown.
 	ld hl, wcf65
 	inc [hl]
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp $80
@@ -1499,18 +1507,18 @@
 	ld a, c
 	and $70
 	swap a
-	call Functione539d
+	call Intro_FadeUnownWordPals
 	ret
 
 .done
 	call NextIntroScene
 	ld a, $80
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 	ret
 
 IntroScene28: ; e5152 (39:5152)
 ; Cut out when the music ends, and lead into the title screen.
-	ld hl, wcf64
+	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -1533,32 +1541,33 @@
 	set 7, [hl]
 	ret
 
-
-Functione5172: ; e5172 (39:5172)
-	ld hl, Unknown_e519c
+Intro_Scene24_ApplyPaletteFade: ; e5172 (39:5172)
+; load the (a)th palette from .FadePals to all BGPals
+	ld hl, .FadePals
 	add l
 	ld l, a
 	ld a, $0
 	adc h
 	ld h, a
+
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
 	ld de, BGPals
-	ld b, $8
-.asm_e5187
+	ld b, 8 ; number of BG pals
+.loop1
 	push hl
-	ld c, $8
-.asm_e518a
+	ld c, 8 ; number of bytes per pal
+.loop2
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_e518a
+	jr nz, .loop2
 	pop hl
 	dec b
-	jr nz, .asm_e5187
+	jr nz, .loop1
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1566,7 +1575,7 @@
 	ret
 ; e519c (39:519c)
 
-Unknown_e519c: ; e519c
+.FadePals: ; e519c
 ; Fade to white.
 	RGB 24, 12, 09
 	RGB 31, 31, 31
@@ -1607,49 +1616,50 @@
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 ; e51dc
 
-Functione51dc: ; e51dc (39:51dc)
+CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
 	push de
 	ld a, SPRITE_ANIM_INDEX_29
 	call _InitSpriteAnimStruct
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $8
 	ld a, $3c
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	pop de
 
 	push de
 	ld a, SPRITE_ANIM_INDEX_29
 	call _InitSpriteAnimStruct
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $18
 	ld a, $3b
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	pop de
 
 	push de
 	ld a, SPRITE_ANIM_INDEX_29
 	call _InitSpriteAnimStruct
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $28
 	ld a, $39
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	pop de
 
 	ld a, SPRITE_ANIM_INDEX_29
 	call _InitSpriteAnimStruct
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $38
 	ld a, $3a
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	ret
 
-Functione5223: ; e5223 (39:5223)
+CrystalIntro_UnownFade: ; e5223 (39:5223)
 rept 3
 	add a
 endr
@@ -1663,12 +1673,13 @@
 	ld a, [wcf65]
 	and $3f
 	cp $1f
-	jr z, .asm_e523e
-	jr c, .asm_e523e
+	jr z, .okay
+	jr c, .okay
 	ld c, a
 	ld a, $3f
 	sub c
-.asm_e523e
+.okay
+
 	ld c, a
 	ld b, $0
 	ld a, [rSVBK]
@@ -1675,16 +1686,18 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	push hl
 	push bc
 	ld hl, BGPals
-	ld bc, $40
+	ld bc, 4 * 16
 	xor a
 	call ByteFill
 	pop bc
 	pop hl
+
 	push hl
-	ld hl, Unknown_e5288
+	ld hl, .BWFade
 rept 2
 	add hl, bc
 endr
@@ -1696,8 +1709,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+
 	push hl
-	ld hl, Unknown_e52c8
+	ld hl, .BlackLBlueFade
 rept 2
 	add hl, bc
 endr
@@ -1709,8 +1723,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+
 	push hl
-	ld hl, Unknown_e5308
+	ld hl, .BlackBlueFade
 rept 2
 	add hl, bc
 endr
@@ -1722,6 +1737,7 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1729,7 +1745,7 @@
 	ret
 ; e5288 (39:5288)
 
-Unknown_e5288: ; e5288
+.BWFade: ; e5288
 ; Fade between black and white.
 hue = 0
 rept 32
@@ -1738,7 +1754,7 @@
 endr
 ; e52c8
 
-Unknown_e52c8: ; e52c8
+.BlackLBlueFade: ; e52c8
 ; Fade between black and light blue.
 hue = 0
 rept 32
@@ -1747,7 +1763,7 @@
 endr
 ; e5308
 
-Unknown_e5308: ; e5308
+.BlackBlueFade: ; e5308
 ; Fade between black and blue.
 hue = 0
 rept 32
@@ -1756,14 +1772,18 @@
 endr
 ; e5348
 
-Functione5348: ; e5348 (39:5348)
+Intro_Scene20_AppearUnown: ; e5348 (39:5348)
+; Spawn the palette for the nth Unown
 	and a
-	jr nz, .asm_e5350
-	ld hl, Palette_e538d
-	jr .asm_e5353
-.asm_e5350
-	ld hl, Palette_e5395
-.asm_e5353
+	jr nz, .load_pal_2
+
+	ld hl, .pal1
+	jr .got_pointer
+
+.load_pal_2
+	ld hl, .pal2
+
+.got_pointer
 	ld a, [wcf65]
 	and $7
 rept 3
@@ -1774,8 +1794,10 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	push bc
 	ld de, BGPals
+
 	ld a, c
 	add e
 	ld e, a
@@ -1782,9 +1804,11 @@
 	ld a, $0
 	adc d
 	ld d, a
-	ld bc, $8
+
+	ld bc, 8
 	call CopyBytes
 	pop bc
+
 	ld de, UnknBGPals
 	ld a, c
 	add e
@@ -1792,8 +1816,10 @@
 	ld a, $0
 	adc d
 	ld d, a
-	ld bc, $8
+
+	ld bc, 8
 	call CopyBytes
+
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1801,21 +1827,23 @@
 	ret
 ; e538d (39:538d)
 
-Palette_e538d: ; e538d
+.pal1: ; e538d
 	RGB 24, 12, 09
 	RGB 31, 31, 31
 	RGB 12, 00, 31
 	RGB 00, 00, 00
+
 ; e5395
 
-Palette_e5395: ; e5395
+.pal2: ; e5395
 	RGB 24, 12, 09
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 ; e539d
 
-Functione539d: ; e539d (39:539d)
+Intro_FadeUnownWordPals: ; e539d (39:539d)
 rept 3
 	add a
 endr
@@ -1830,12 +1858,14 @@
 	add a
 	ld c, a
 	ld b, $0
+
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	push hl
-	ld hl, Palette_e53db
+	ld hl, .FastFadePalettes
 	add hl, bc
 	ld a, [hli]
 	ld d, [hl]
@@ -1845,8 +1875,9 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+
 	push hl
-	ld hl, Palette_e53fb
+	ld hl, .SlowFadePalettes
 	add hl, bc
 	ld a, [hli]
 	ld d, [hl]
@@ -1856,6 +1887,7 @@
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1863,7 +1895,7 @@
 	ret
 ; e53db (39:53db)
 
-Palette_e53db: ; e53db
+.FastFadePalettes: ; e53db
 hue = 31
 rept 8
 	RGB hue, hue, hue
@@ -1873,7 +1905,7 @@
 endr
 ; e53fb
 
-Palette_e53fb: ; e53fb
+.SlowFadePalettes: ; e53fb
 hue = 31
 rept 16
 	RGB hue, hue, hue
@@ -1881,23 +1913,25 @@
 endr
 ; e541b
 
-Functione541b: ; e541b (39:541b)
+Intro_LoadTilemap: ; e541b (39:541b)
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
-	ld hl, w6_d000
+
+	ld hl, wDecompressScratch
 	decoord 0, 0
 	ld b, SCREEN_HEIGHT
-.asm_e542a
+.row
 	ld c, SCREEN_WIDTH
-.asm_e542c
+.col
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_e542c
-	ld a, $c
+	jr nz, .col
+	; add hl, $20 - SCREEN_WIDTH
+	ld a, $20 - SCREEN_WIDTH
 	add l
 	ld l, a
 	ld a, $0
@@ -1904,53 +1938,55 @@
 	adc h
 	ld h, a
 	dec b
-	jr nz, .asm_e542a
+	jr nz, .row
+
 	pop af
 	ld [rSVBK], a
 	ret
 
-Functione5441: ; e5441 (39:5441)
-	ld a, [wcf64]
+Intro_Scene16_AnimateSuicune: ; e5441 (39:5441)
+	ld a, [wIntroSceneFrameCounter]
 	and $3
-	jr z, Functione5451
+	jr z, Intro_ColoredSuicuneFrameSwap
 	cp $3
-	jr z, .asm_e544d
+	jr z, .PrepareForSuicuneSwap
 	ret
-.asm_e544d
+
+.PrepareForSuicuneSwap
 	xor a
 	ld [hBGMapMode], a
 	ret
 
-Functione5451: ; e5451 (39:5451)
+Intro_ColoredSuicuneFrameSwap: ; e5451 (39:5451)
 	hlcoord 0, 0
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-.asm_e5457
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_e5462
+	jr z, .skip
 	cp $80
-	jr nc, .asm_e5462
+	jr nc, .skip
 	xor $8
 	ld [hl], a
-.asm_e5462
+.skip
 	inc hl
 	dec bc
 	ld a, c
 	or b
-	jr nz, .asm_e5457
+	jr nz, .loop
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
 
-Functione546d: ; e546d (39:546d)
-	ld a, [wcf64]
-	cp $24
+Intro_RustleGrass: ; e546d (39:546d)
+	ld a, [wIntroSceneFrameCounter]
+	cp 36
 	ret nc
 	and $c
 	srl a
 	ld e, a
 	ld d, $0
-	ld hl, Unknown_e5496
+	ld hl, .RustlingGrassPointers
 	add hl, de
 	ld a, [hli]
 	ld [Requested2bppSource], a
@@ -1960,32 +1996,34 @@
 	ld [Requested2bppDest], a
 	ld a, (VTiles2 tile $09) / $100
 	ld [Requested2bppDest + 1], a
-	ld a, $4
-	ld [Requested2bpp], a
+	ld a, 4
+	ld [Requested2bppSize], a
 	ret
 ; e5496 (39:5496)
 
-Unknown_e5496: ; e5496
-	dw GFX_e799d
-	dw GFX_e79dd
-	dw GFX_e7a1d
-	dw GFX_e79dd
+.RustlingGrassPointers: ; e5496
+	dw IntroGrass1GFX
+	dw IntroGrass2GFX
+	dw IntroGrass3GFX
+	dw IntroGrass2GFX
 ; e549e
 
-Functione549e: ; e549e (39:549e)
+Intro_SetCGBPalUpdate: ; e549e (39:549e)
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
 
-Functione54a3: ; e54a3 (39:54a3)
+Intro_ClearBGPals: ; e54a3 (39:54a3)
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld hl, BGPals
-	ld bc, $80
+	ld bc, 16 * 8
 	xor a
 	call ByteFill
+
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1994,83 +2032,99 @@
 	call DelayFrame
 	ret
 
-Functione54c2: ; e54c2 (39:54c2)
+Intro_DecompressRequest2bpp_128Tiles: ; e54c2 (39:54c2)
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	push de
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call Decompress
 	pop hl
-	ld de, w6_d000
-	ld bc, $180
+
+	ld de, wDecompressScratch
+	lb bc, $01, $80
 	call Request2bpp
+
 	pop af
 	ld [rSVBK], a
 	ret
 
-Functione54de: ; e54de (39:54de)
+Intro_DecompressRequest2bpp_255Tiles: ; e54de (39:54de)
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	push de
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call Decompress
 	pop hl
-	ld de, w6_d000
-	ld bc, $1ff
+
+	ld de, wDecompressScratch
+	lb bc, $01, $ff
 	call Request2bpp
+
 	pop af
 	ld [rSVBK], a
 	ret
 
-Functione54fa: ; e54fa (39:54fa)
+Intro_DecompressRequest2bpp_64Tiles: ; e54fa (39:54fa)
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	push de
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call Decompress
 	pop hl
-	ld de, w6_d000
-	ld bc, $140
+
+	ld de, wDecompressScratch
+	lb bc, $01, $40
 	call Request2bpp
+
 	pop af
 	ld [rSVBK], a
 	ret
 
-Functione5516: ; e5516 (39:5516)
+Intro_ResetLYOverrides: ; e5516 (39:5516)
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld hl, LYOverrides
-	ld bc, $90
+	ld bc, LYOverridesEnd - LYOverrides
 	xor a
 	call ByteFill
+
 	pop af
 	ld [rSVBK], a
 	ld a, $43
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ret
 
-Functione552f: ; e552f (39:552f)
+Intro_PerspectiveScrollBG: ; e552f (39:552f)
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld a, [wcf64]
+	; Scroll the grass every frame.
+	; Scroll the trees every other frame and at half speed.
+	; This creates an illusion of perspective.
+	ld a, [wIntroSceneFrameCounter]
 	and $1
-	jr z, .asm_e5548
+	jr z, .skip
+	; trees in the back
 	ld hl, LYOverrides
 	ld a, [hl]
 	inc a
 	ld bc, $5f
 	call ByteFill
-.asm_e5548
+.skip
+	; grass in the front
 	ld hl, LYOverrides + $5f
 	ld a, [hl]
 rept 2
@@ -2109,62 +2163,77 @@
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB  0,  4,  5
 	RGB  1,  8,  5
 	RGB  4, 12,  9
 	RGB 24, 12,  9
+
 	RGB  0,  4,  5
 	RGB  9,  6,  8
 	RGB  8, 16,  5
 	RGB  5, 10,  4
+
 	RGB 31, 31, 31
 	RGB  9,  6,  8
 	RGB 18,  9,  9
 	RGB 13,  8,  9
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB  2,  5, 22
 	RGB  1,  5, 12
+
 	RGB 31, 31, 31
 	RGB 31, 10, 25
 	RGB 31, 21,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 21, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
@@ -2207,62 +2276,77 @@
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 10,  0, 10
 	RGB 19,  0, 19
 	RGB 31,  0, 31
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
@@ -2285,62 +2369,77 @@
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 31, 31, 31
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
@@ -2363,62 +2462,77 @@
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 24, 12,  9
 	RGB 31, 31, 31
 	RGB  8,  9, 31
 	RGB  0,  0,  0
+
 	RGB 24, 12,  9
 	RGB 12, 20, 31
 	RGB 19,  8, 31
 	RGB  0,  0,  0
+
 	RGB 12, 20, 31
 	RGB  8,  9, 31
 	RGB 19,  8, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 12, 20, 31
 	RGB  8,  9, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
@@ -2453,62 +2567,77 @@
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 24, 12,  9
 	RGB 31, 31, 31
 	RGB  8,  9, 31
 	RGB  0,  0,  0
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
 	RGB 24, 12,  9
+
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 12,  0, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 21,  9,  0
 	RGB 21,  9,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
@@ -2518,14 +2647,12 @@
 INCBIN "gfx/intro/unown_back.2bpp.lz"
 ; e799d
 
-GFX_e799d: ; e799d
-INCBIN "gfx/unknown/0e799d.2bpp"
-GFX_e79dd: ; e79dd
-INCBIN "gfx/unknown/0e79dd.2bpp"
-GFX_e7a1d: ; e7a1d
-INCBIN "gfx/unknown/0e7a1d.2bpp"
-
-GFX_e7a5d: ; e7a5d
-INCBIN "gfx/unknown/0e7a5d.2bpp"
-
+IntroGrass1GFX: ; e799d
+INCBIN "gfx/intro/grass1.2bpp"
+IntroGrass2GFX: ; e79dd
+INCBIN "gfx/intro/grass2.2bpp"
+IntroGrass3GFX: ; e7a1d
+INCBIN "gfx/intro/grass3.2bpp"
+IntroGrass4GFX: ; e7a5d
+INCBIN "gfx/intro/grass4.2bpp"
 
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -395,7 +395,7 @@
 	hlcoord 4, 1
 	call PlaceString
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	hlcoord 12, 3
 	call _PrepMonFrontpic
 	ld de, VTiles2 tile $31
@@ -425,7 +425,7 @@
 .asm_81b7a
 	ld a, [wd265]
 	ld [TrainerClass], a
-	callab Function3957b
+	callab GetTrainerAttributes
 	ld de, StringBuffer1
 	hlcoord 4, 1
 	call PlaceString
@@ -542,7 +542,7 @@
 	ret
 
 .asm_81c69
-	ld hl, wcda9
+	ld hl, wSGBPals
 	ld a, $1
 	ld [hli], a
 	ld a, $ff
@@ -562,7 +562,7 @@
 	ld [hli], a
 endr
 	ld [hl], a
-	ld hl, wcda9
+	ld hl, wSGBPals
 	call Function81f0c
 	hlcoord 10, 2
 	ld de, wc608
@@ -828,7 +828,7 @@
 	ld [wd265], a
 	predef GetTMHMMove
 	ld a, [wd265]
-	ld [wd262], a
+	ld [wPutativeTMHMMove], a
 	call GetMoveName
 	hlcoord 10, 12
 	call PlaceString
@@ -1149,7 +1149,7 @@
 	ld [hMapAnims], a
 	call ClearSprites
 	call OverworldTextModeSwitch
-	call Function3200
+	call WaitBGMap2
 	xor a
 	ld [hBGMapMode], a
 	ld de, DebugColorTestGFX + $10
@@ -1184,7 +1184,7 @@
 	call Function821d2
 	call Function821f4
 	call Function8220f
-	call Function3200
+	call WaitBGMap2
 	ld [wJumptableIndex], a
 	ld a, $40
 	ld [hWY], a
@@ -1355,7 +1355,7 @@
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -1365,7 +1365,7 @@
 	jp [hl]
 ; 82301
 
-.jumptable: ; 82301
+.dw: ; 82301
 	dw Function82309
 	dw Function82339
 	dw Function8234b
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -6,21 +6,21 @@
 	ret
 
 _KrisDecorationMenu: ; 0x2675c
-	ld a, [wcf76]
+	ld a, [wWhichIndexSet]
 	push af
 	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	xor a
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld a, $1
-	ld [wd1ef], a
+	ld [Buffer6], a
 .top_loop
-	ld a, [wd1ef]
+	ld a, [Buffer6]
 	ld [wMenuCursorBuffer], a
 	call .FindCategoriesWithOwnedDecos
 	call DoNthMenu
-	ld a, [MenuSelection2]
-	ld [wd1ef], a
+	ld a, [wMenuCursorY]
+	ld [Buffer6], a
 	jr c, .exit_menu
 	ld a, [MenuSelection]
 	ld hl, .pointers
@@ -30,8 +30,8 @@
 .exit_menu
 	call ExitMenu
 	pop af
-	ld [wcf76], a
-	ld a, [wd1ee]
+	ld [wWhichIndexSet], a
+	ld a, [Buffer5]
 	ld c, a
 	ret
 ; 0x2679a
@@ -74,7 +74,7 @@
 
 .FindCategoriesWithOwnedDecos: ; 26806
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	call .ClearStringBuffer2
 	call .FindOwndDecos
 	ld a, 7
@@ -104,7 +104,7 @@
 	ret
 
 .FindOwndDecos: ; 2683a (9:683a)
-	ld hl, .jumptable
+	ld hl, .dw
 .loop
 	ld a, [hli]
 	ld e, a
@@ -127,7 +127,7 @@
 	ret
 ; 26855 (9:6855)
 
-.jumptable: ; 26855
+.dw: ; 26855
 	dwb FindOwnedBeds, 0 ; bed
 	dwb FindOwnedCarpets, 1 ; carpet
 	dwb FindOwnedPlants, 2 ; plant
@@ -207,7 +207,7 @@
 
 FindOwnedBeds: ; 268bd
 	ld hl, .beds
-	ld c, DECO_BEDS
+	ld c, BEDS
 	jp FindOwnedDecosInCategory
 ; 268c5
 
@@ -228,7 +228,7 @@
 
 FindOwnedCarpets: ; 268d2
 	ld hl, .carpets
-	ld c, DECO_CARPETS
+	ld c, CARPETS
 	jp FindOwnedDecosInCategory
 ; 268da
 
@@ -249,7 +249,7 @@
 
 FindOwnedPlants: ; 268e7
 	ld hl, .plants
-	ld c, DECO_0B
+	ld c, PLANTS
 	jp FindOwnedDecosInCategory
 ; 268ef
 
@@ -269,7 +269,7 @@
 
 FindOwnedPosters: ; 268fb
 	ld hl, .posters
-	ld c, DECO_POSTERS
+	ld c, POSTERS
 	jp FindOwnedDecosInCategory
 ; 26903
 
@@ -290,7 +290,7 @@
 
 FindOwnedConsoles: ; 26910
 	ld hl, .consoles
-	ld c, DECO_CONSOLES
+	ld c, CONSOLES
 	jp FindOwnedDecosInCategory
 ; 26918
 
@@ -311,7 +311,7 @@
 
 FindOwnedOrnaments: ; 26925
 	ld hl, .ornaments
-	ld c, DECO_DOLLS
+	ld c, DOLLS
 	jp FindOwnedDecosInCategory
 ; 2692d
 
@@ -351,7 +351,7 @@
 
 FindOwnedBigDolls: ; 2694d
 	ld hl, .big_dolls
-	ld c, DECO_BIG_DOLLS
+	ld c, BIG_DOLLS
 	jp FindOwnedDecosInCategory
 ; 26955
 
@@ -374,7 +374,7 @@
 	cp 8
 	jr nc, .beyond_eight
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	ld hl, .NonscrollingMenuDataHeader
 	call LoadMenuDataHeader
 	call DoNthMenu
@@ -400,8 +400,8 @@
 	call InitScrollingMenu
 	xor a
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
-	ld a, [wcf73]
+	call ScrollingMenu
+	ld a, [wMenuJoypad]
 	cp 2
 	jr z, .no_action_2
 	call DoDecorationAction2
@@ -803,7 +803,7 @@
 	call DecoAction_SetItUp
 	jr c, .failed
 	ld a, 1
-	ld [wd1ee], a
+	ld [Buffer5], a
 	pop hl
 	ld a, [MenuSelection]
 	ld [hl], a
@@ -865,7 +865,7 @@
 	jr z, .nothingthere
 ; Put it away.
 	ld a, $1
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld a, [Buffer1]
 	ld [MenuSelection], a
 	ld hl, StringBuffer3
@@ -889,7 +889,7 @@
 	call DecoAction_SetItUp_Ornament
 	jr c, .cancel
 	ld a, $1
-	ld [wd1ee], a
+	ld [Buffer5], a
 	jr DecoAction_FinishUp_Ornament
 
 .cancel
@@ -981,7 +981,7 @@
 	ld hl, StringBuffer3
 	call GetDecorationName
 	ld a, $1
-	ld [wd1ee], a
+	ld [Buffer5], a
 	xor a
 	ld [wd1ec], a
 	ld hl, DecoText_PutAwayTheDeco
@@ -1009,7 +1009,7 @@
 	call ExitMenu
 	call CopyMenuData2
 	jr c, .nope
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp 3
 	jr z, .nope
 	ld [Buffer2], a
@@ -1244,11 +1244,11 @@
 ; 26f91
 
 DecorationDesc_TownMapPoster: ; 0x26f91
-	loadfont
+	opentext
 	writetext .TownMapText
-	closetext
+	waitbutton
 	special Special_TownMap
-	loadmovesprites
+	closetext
 	end
 ; 0x26f9b
 
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -1,22 +1,22 @@
 _DummyGame: ; e1e5b (38:5e5b)
-	call Functione1e67
+	call .LoadGFXAndPals
 	call DelayFrame
-.asm_e1e61
-	call Functione1ebb
-	jr nc, .asm_e1e61
+.loop
+	call .JumptableLoop
+	jr nc, .loop
 	ret
 
-Functione1e67: ; e1e67 (38:5e67)
+.LoadGFXAndPals
 	call DisableLCD
 	ld b, SCGB_08
 	call GetSGBLayout
-	callab Function8cf53
+	callab ClearSpriteAnims
 	ld hl, LZ_e2221
 	ld de, VTiles2 tile $00
 	call Decompress
 	ld hl, Unknown_e00ed
 	ld de, VTiles0 tile $00
-	ld bc, $40
+	ld bc, 4 tiles
 	ld a, BANK(Unknown_e00ed)
 	call FarCopyBytes
 	ld a, $8
@@ -39,406 +39,400 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, $e0
-	call Functioncf8
+	call DmgToCgbObjPal0
 	ret
 
-Functione1ebb: ; e1ebb (38:5ebb)
+.JumptableLoop
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_e1ed0
-	call Functione1ed2
-	callab Function8cf69
+	jr nz, .quit
+	call .ExecuteJumptable
+	callab PlaySpriteAnimations
 	call DelayFrame
 	and a
 	ret
-.asm_e1ed0
+
+.quit
 	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)
+.ExecuteJumptable
+	jumptable .Jumptable, wJumptableIndex
 
-Jumptable_e1ee1: ; e1ee1
-	dw Functione1ef3
-	dw Functione1efb
-	dw Functione1f1c
-	dw Functione1f42
-	dw Functione1f61
-	dw Functione1f8b
-	dw Functione1fba
-	dw Functione1fcc
-	dw Functione2000
-; e1ef3
+.Jumptable
+	dw .RestartGame
+	dw .ResetBoard
+	dw .InitBoardTilemapAndCursorObject
+	dw .CheckTriesRemaining
+	dw .PickCard1
+	dw .PickCard2
+	dw .DelayPickAgain
+	dw .RevealAll
+	dw .AskPlayAgain
 
-Functione1ef3: ; e1ef3
-	call Functione2152
+.RestartGame
+	call DummyGame_InitStrings
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
-; e1efb
 
-Functione1efb: ; e1efb
-	call Functione00ed
-	jr nc, .asm_e1f06
+.ResetBoard
+	call ret_e00ed
+	jr nc, .proceed
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-.asm_e1f06
-	call Functione209d
+.proceed
+	call DummyGame_InitBoard
 	ld hl, wJumptableIndex
 	inc [hl]
 	xor a
-	ld [wc708], a
-	ld hl, wc703
+	ld [wDummyGameCounter], a
+	ld hl, wDummyGameLastMatches
 rept 4
 	ld [hli], a
 endr
 	ld [hl], a
-	ld [wc709], a
-
-Functione1f1c: ; e1f1c
-	ld hl, wc708
+	ld [wDummyGameNumCardsMatched], a
+.InitBoardTilemapAndCursorObject
+	ld hl, wDummyGameCounter
 	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1f30
+	cp 45
+	jr nc, .spawn_object
 	inc [hl]
-	call Functione2183
+	call DummyGame_Card2Coord
 	xor a
-	ld [wc6fd], a
-	call Functione2128
+	ld [wDummyGameLastCardPicked], a
+	call DummyGame_PlaceCard
 	ret
 
-.asm_e1f30
-	ld de, $341c
-	ld a, $c
+.spawn_object
+	depixel 6, 3, 4, 4
+	ld a, SPRITE_ANIM_INDEX_0C
 	call _InitSpriteAnimStruct
-	ld a, $5
-	ld [wc702], a
+	ld a, 5
+	ld [wDummyGameNumberTriesRemaining], a
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
-; e1f42
 
-Functione1f42: ; e1f42
-	ld a, [wc702]
+.CheckTriesRemaining
+	ld a, [wDummyGameNumberTriesRemaining]
 	hlcoord 17, 0
-	add $f6
+	add "0"
 	ld [hl], a
-	ld hl, wc702
+	ld hl, wDummyGameNumberTriesRemaining
 	ld a, [hl]
 	and a
-	jr nz, .asm_e1f58
+	jr nz, .next_try
 	ld a, $7
 	ld [wJumptableIndex], a
 	ret
 
-.asm_e1f58
+.next_try
 	dec [hl]
 	xor a
 	ld [wcf64], a
 	ld hl, wJumptableIndex
 	inc [hl]
-
-Functione1f61: ; e1f61
+.PickCard1
 	ld a, [wcf64]
 	and a
 	ret z
 	dec a
 	ld e, a
-	ld d, $0
-	ld hl, wc6d0
+	ld d, 0
+	ld hl, wDummyGameCards
 	add hl, de
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
-	ld [wc6fd], a
-	ld [wPlayerMinimized], a
+	ld [wDummyGameLastCardPicked], a
+	ld [wDummyGameCard1], a
 	ld a, e
-	ld [EnemyScreens], a
-	call Functione2183
-	call Functione2128
+	ld [wDummyGameCard1Location], a
+	call DummyGame_Card2Coord
+	call DummyGame_PlaceCard
 	xor a
 	ld [wcf64], a
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
-; e1f8b
 
-Functione1f8b: ; e1f8b
+.PickCard2
 	ld a, [wcf64]
 	and a
 	ret z
 	dec a
-	ld hl, EnemyScreens
+	ld hl, wDummyGameCard1Location
 	cp [hl]
 	ret z
 	ld e, a
-	ld d, $0
-	ld hl, wc6d0
+	ld d, 0
+	ld hl, wDummyGameCards
 	add hl, de
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
-	ld [wc6fd], a
-	ld [PlayerScreens], a
+	ld [wDummyGameLastCardPicked], a
+	ld [wDummyGameCard2], a
 	ld a, e
-	ld [wc701], a
-	call Functione2183
-	call Functione2128
-	ld a, $40
-	ld [wc708], a
+	ld [wDummyGameCard2Location], a
+	call DummyGame_Card2Coord
+	call DummyGame_PlaceCard
+	ld a, 64
+	ld [wDummyGameCounter], a
 	ld hl, wJumptableIndex
 	inc [hl]
-
-Functione1fba: ; e1fba
-	ld hl, wc708
+.DelayPickAgain
+	ld hl, wDummyGameCounter
 	ld a, [hl]
 	and a
-	jr z, .asm_e1fc3
+	jr z, .PickAgain
 	dec [hl]
 	ret
 
-.asm_e1fc3
-	call Functione2010
+.PickAgain
+	call DummyGame_CheckMatch
 	ld a, $3
 	ld [wJumptableIndex], a
 	ret
-; e1fcc
 
-Functione1fcc: ; e1fcc
+.RevealAll
 	ld a, [hJoypadPressed]
 	and A_BUTTON
 	ret z
 	xor a
-	ld [wc708], a
-.asm_e1fd5
-	ld hl, wc708
+	ld [wDummyGameCounter], a
+.RevelationLoop
+	ld hl, wDummyGameCounter
 	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1ff9
+	cp 45
+	jr nc, .finish_round
 	inc [hl]
 	push af
-	call Functione2183
+	call DummyGame_Card2Coord
 	pop af
 	push hl
 	ld e, a
 	ld d, $0
-	ld hl, wc6d0
+	ld hl, wDummyGameCards
 	add hl, de
 	ld a, [hl]
 	pop hl
-	cp $ff
-	jr z, .asm_e1fd5
-	ld [wc6fd], a
-	call Functione2128
-	jr .asm_e1fd5
+	cp -1
+	jr z, .RevelationLoop
+	ld [wDummyGameLastCardPicked], a
+	call DummyGame_PlaceCard
+	jr .RevelationLoop
 
-.asm_e1ff9
+.finish_round
 	call WaitPressAorB_BlinkCursor
 	ld hl, wJumptableIndex
 	inc [hl]
-
-Functione2000: ; e2000
-	call Functione00ed
-	jr nc, .asm_e200b
+.AskPlayAgain
+	call ret_e00ed
+	jr nc, .restart
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-.asm_e200b
+.restart
 	xor a
 	ld [wJumptableIndex], a
 	ret
+
 ; e2010
 
-Functione2010: ; e2010
-	ld hl, wPlayerMinimized
+DummyGame_CheckMatch: ; e2010
+	ld hl, wDummyGameCard1
 	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]
+	jr nz, .no_match
+
+	ld a, [wDummyGameCard1Location]
+	call DummyGame_Card2Coord
+	call DummyGame_DeleteCard
+
+	ld a, [wDummyGameCard2Location]
+	call DummyGame_Card2Coord
+	call DummyGame_DeleteCard
+
+	ld a, [wDummyGameCard1Location]
 	ld e, a
 	ld d, $0
-	ld hl, wc6d0
+	ld hl, wDummyGameCards
 	add hl, de
-	ld [hl], $ff
-	ld a, [wc701]
+	ld [hl], -1
+
+	ld a, [wDummyGameCard2Location]
 	ld e, a
-	ld d, $0
-	ld hl, wc6d0
+	ld d, 0
+	ld hl, wDummyGameCards
 	add hl, de
-	ld [hl], $ff
-	ld hl, wc703
-.asm_e2044
+	ld [hl], -1
+
+	ld hl, wDummyGameLastMatches
+.find_empty_slot
 	ld a, [hli]
 	and a
-	jr nz, .asm_e2044
+	jr nz, .find_empty_slot
 	dec hl
-	ld a, [wPlayerMinimized]
+	ld a, [wDummyGameCard1]
 	ld [hl], a
-	ld [wc6fd], a
-	ld hl, wc709
+	ld [wDummyGameLastCardPicked], a
+	ld hl, wDummyGameNumCardsMatched
 	ld e, [hl]
-rept 2
 	inc [hl]
-endr
-	ld d, $0
+	inc [hl]
+	ld d, 0
 	hlcoord 5, 0
 	add hl, de
-	call Functione2128
-	ld hl, UnknownText_0xe2083
+	call DummyGame_PlaceCard
+	ld hl, .VictoryText
 	call PrintText
 	ret
 
-.asm_e2066
+.no_match
 	xor a
-	ld [wc6fd], a
-	ld a, [EnemyScreens]
-	call Functione2183
-	call Functione2128
-	ld a, [wc701]
-	call Functione2183
-	call Functione2128
-	ld hl, UnknownText_0xe2098
+	ld [wDummyGameLastCardPicked], a
+
+	ld a, [wDummyGameCard1Location]
+	call DummyGame_Card2Coord
+	call DummyGame_PlaceCard
+
+	ld a, [wDummyGameCard2Location]
+	call DummyGame_Card2Coord
+	call DummyGame_PlaceCard
+
+	ld hl, DummyGameText_Darn
 	call PrintText
 	ret
-; e2083
 
-UnknownText_0xe2083: ; 0xe2083
+.VictoryText
 	start_asm
-; 0xe2084
-
-Functione2084: ; e2084
 	push bc
 	hlcoord 2, 13
-	call Functione2128
-	ld hl, UnknownText_0xe2093
+	call DummyGame_PlaceCard
+	ld hl, DummyGameText_Yeah
 	pop bc
-rept 3
 	inc bc
-endr
+	inc bc
+	inc bc
 	ret
+
 ; e2093
 
-UnknownText_0xe2093: ; 0xe2093
+DummyGameText_Yeah: ; 0xe2093
 	; , yeah!
 	text_jump UnknownText_0x1c1a5b
 	db "@"
 ; 0xe2098
 
-UnknownText_0xe2098: ; 0xe2098
+DummyGameText_Darn: ; 0xe2098
 	; Darn…
 	text_jump UnknownText_0x1c1a65
 	db "@"
 ; 0xe209d
 
-Functione209d: ; e209d
-	ld hl, wc6d0
-	ld bc, $2d
+DummyGame_InitBoard: ; e209d
+	ld hl, wDummyGameCards
+	ld bc, wDummyGameCardsEnd - wDummyGameCards
 	xor a
 	call ByteFill
-	call Functione2101
-	ld c, $2
+	call DummyGame_GetDistributionOfTiles
+
+	ld c, 2
 	ld b, [hl]
-	call Functione20e5
-	ld c, $8
+	call DummyGame_SampleTilePlacement
+
+	ld c, 8
 	ld b, [hl]
-	call Functione20e5
-	ld c, $4
+	call DummyGame_SampleTilePlacement
+
+	ld c, 4
 	ld b, [hl]
-	call Functione20e5
-	ld c, $7
+	call DummyGame_SampleTilePlacement
+
+	ld c, 7
 	ld b, [hl]
-	call Functione20e5
-	ld c, $3
+	call DummyGame_SampleTilePlacement
+
+	ld c, 3
 	ld b, [hl]
-	call Functione20e5
-	ld c, $6
+	call DummyGame_SampleTilePlacement
+
+	ld c, 6
 	ld b, [hl]
-	call Functione20e5
-	ld c, $1
+	call DummyGame_SampleTilePlacement
+
+	ld c, 1
 	ld b, [hl]
-	call Functione20e5
-	ld c, $5
-	ld hl, wc6d0
-	ld b, $2d
-.asm_e20db
+	call DummyGame_SampleTilePlacement
+
+	ld c, 5
+	ld hl, wDummyGameCards
+	ld b, wDummyGameCardsEnd - wDummyGameCards
+.loop
 	ld a, [hl]
 	and a
-	jr nz, .asm_e20e0
+	jr nz, .no_load
 	ld [hl], c
-
-.asm_e20e0
+.no_load
 	inc hl
 	dec b
-	jr nz, .asm_e20db
+	jr nz, .loop
 	ret
+
 ; e20e5
 
-Functione20e5: ; e20e5
+DummyGame_SampleTilePlacement: ; e20e5
 	push hl
-	ld de, wc6d0
-.asm_e20e9
+	ld de, wDummyGameCards
+.loop
 	call Random
-	and $3f
-	cp $2d
-	jr nc, .asm_e20e9
+	and %00111111
+	cp 45
+	jr nc, .loop
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, de
 	ld a, [hl]
 	and a
-	jr nz, .asm_e20e9
+	jr nz, .loop
 	ld [hl], c
 	dec b
-	jr nz, .asm_e20e9
+	jr nz, .loop
 	pop hl
 	inc hl
 	ret
+
 ; e2101
 
-Functione2101: ; e2101
-	ld a, [MenuSelection2]
+DummyGame_GetDistributionOfTiles: ; e2101
+	ld a, [wMenuCursorY]
 	dec a
 	ld l, a
 	ld h, 0
-rept 3
 	add hl, hl
-endr
-	ld de, Unknown_e2110
+	add hl, hl
+	add hl, hl
+	ld de, .distributions
 	add hl, de
 	ret
-; e2110
 
-Unknown_e2110: ; e2110
+.distributions
 	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]
+DummyGame_PlaceCard: ; e2128
+	ld a, [wDummyGameLastCardPicked]
 	sla a
 	sla a
-	add $4
+	add 4
 	ld [hli], a
 	inc a
 	ld [hld], a
@@ -451,9 +445,10 @@
 	ld c, 3
 	call DelayFrames
 	ret
+
 ; e2142
 
-Functione2142: ; e2142
+DummyGame_DeleteCard: ; e2142
 	ld a, $1
 	ld [hli], a
 	ld [hld], a
@@ -464,60 +459,61 @@
 	ld c, 3
 	call DelayFrames
 	ret
+
 ; e2152
 
-Functione2152: ; e2152
+DummyGame_InitStrings: ; e2152
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $1
 	call ByteFill
 	hlcoord 0, 0
-	ld de, String_e2177
+	ld de, .japstr1
 	call PlaceString
 	hlcoord 15, 0
-	ld de, String_e217d
+	ld de, .japstr2
 	call PlaceString
-	ld hl, UnknownText_0xe2176
+	ld hl, .dummy_text
 	call PrintText
 	ret
-; e2176
 
-UnknownText_0xe2176: ; 0xe2176
+.dummy_text
 	db "@"
-; 0xe2177
-
-String_e2177: db "とったもの@"
-String_e217d: db "あと かい@"
+.japstr1
+	db "とったもの@"
+.japstr2
+	db "あと かい@"
 ; e2183
 
-Functione2183: ; e2183
-	ld d, $0
-.asm_e2185
-	sub $9
-	jr c, .asm_e218c
+DummyGame_Card2Coord: ; e2183
+	ld d, 0
+.find_row
+	sub 9
+	jr c, .found_row
 	inc d
-	jr .asm_e2185
+	jr .find_row
 
-.asm_e218c
-	add $9
+.found_row
+	add 9
 	ld e, a
 	hlcoord 1, 2
-	ld bc, $28
-.asm_e2195
+	ld bc, 2 * SCREEN_WIDTH
+.loop2
 	ld a, d
 	and a
-	jr z, .asm_e219d
+	jr z, .done
 	add hl, bc
 	dec d
-	jr .asm_e2195
+	jr .loop2
 
-.asm_e219d
+.done
 	sla e
 	add hl, de
 	ret
+
 ; e21a1
 
-Functione21a1: ; e21a1 (38:61a1)
+DummyGame_InterpretJoypad_AnimateCursor: ; e21a1 (38:61a1)
 	ld a, [wJumptableIndex]
 	cp $7
 	jr nc, .quit
@@ -541,13 +537,13 @@
 	ret
 
 .quit
-	ld hl, 0
+	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 	ld [hl], $0
 	ret
 
 .pressed_a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	inc a
@@ -555,60 +551,61 @@
 	ret
 
 .pressed_left
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld a, [hl]
 	and a
 	ret z
-	sub $10
+	sub 1 tiles
 	ld [hl], a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	dec [hl]
 	ret
 
 .pressed_right
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld a, [hl]
-	cp $80
+	cp (9 - 1) tiles
 	ret z
-	add $10
+	add 1 tiles
 	ld [hl], a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	inc [hl]
 	ret
 
 .pressed_up
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld a, [hl]
 	and a
 	ret z
-	sub $10
+	sub 1 tiles
 	ld [hl], a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
-	sub $9
+	sub 9
 	ld [hl], a
 	ret
 
 .pressed_down
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld a, [hl]
-	cp $40
+	cp (5 - 1) tiles
 	ret z
-	add $10
+	add 1 tiles
 	ld [hl], a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
-	add $9
+	add 9
 	ld [hl], a
 	ret
+
 ; e2221 (38:6221)
 
 LZ_e2221: ; e2221
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -37,9 +37,8 @@
 .read
 	ld hl, EngineFlags
 ; location
-rept 2
 	add hl, de
-endr
+	add hl, de
 ; bit
 	add hl, de
 
@@ -99,8 +98,8 @@
 	engine_flag wPokegearFlags, 7 ; on/off
 
 	;   wDaycareMan, 7 ; daycare 1 on
-	engine_flag wDaycareMan, 6 ; monster 1 and 2 are compatible
-	;   wDaycareMan, 5 ; egg is ready
+	engine_flag wDaycareMan, 6 ; egg is ready
+	;   wDaycareMan, 5 ; monster 1 and 2 are compatible
 	engine_flag wDaycareMan, 0 ; monster 1 in daycare
 
 	;   wDaycareLady, 7 = daycare 2 on
@@ -118,7 +117,7 @@
 	engine_flag StatusFlags, 6 ; credits skip
 	engine_flag StatusFlags, 7 ; bug contest on   ; $10
 	engine_flag StatusFlags2, 2 ; bug contest timer
-	engine_flag StatusFlags2, 1 ; ???
+	engine_flag StatusFlags2, 1 ; safari zone?
 	engine_flag StatusFlags2, 0 ; rockets in radio tower
 	engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
 	engine_flag StatusFlags2, 5 ; give pokerus
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -1,6 +1,5 @@
 INCLUDE "includes.asm"
 
-
 SECTION "Events", ROMX, BANK[EVENTS]
 
 OverworldLoop:: ; 966b0
@@ -23,7 +22,6 @@
 	dw .done
 ; 966cb
 
-
 DisableEvents: ; 966cb
 	xor a
 	ld [ScriptFlags3], a
@@ -114,7 +112,6 @@
 	ret
 ; 96724
 
-
 StartMap: ; 96724
 	xor a
 	ld [ScriptVar], a
@@ -121,14 +118,10 @@
 	xor a
 	ld [ScriptRunning], a
 	ld hl, MapStatus
-	ld bc, $3e ; 62
+	ld bc, wMapStatusEnd - MapStatus
 	call ByteFill
 	callba InitCallReceiveDelay
 	call ClearJoypad
-	; fallthrough
-; 9673e
-
-
 EnterMap: ; 9673e
 	xor a
 	ld [wd453], a
@@ -157,17 +150,15 @@
 	ret
 ; 9676d
 
-
-Function9676d: ; 9676d
+UnusedWait30Frames: ; 9676d
 	ld c, 30
 	call DelayFrames
 	ret
 ; 96773
 
-
 HandleMap: ; 96773
 	call ResetOverworldDelay
-	call Function967c1
+	call HandleMapTimeAndJoypad
 	callba HandleCmdQueue ; no need to farcall
 	call MapEvents
 
@@ -183,7 +174,6 @@
 	ret
 ; 96795
 
-
 MapEvents: ; 96795
 	ld a, [MapEventStatus]
 	ld hl, .jumps
@@ -206,7 +196,6 @@
 	ret
 ; 967af
 
-
 MaxOverworldDelay: ; 967af
 	db 2
 ; 967b0
@@ -226,7 +215,7 @@
 	ret
 ; 967c1
 
-Function967c1: ; 967c1
+HandleMapTimeAndJoypad: ; 967c1
 	ld a, [MapEventStatus]
 	cp 1 ; no events
 	ret z
@@ -239,14 +228,14 @@
 
 Function967d1: ; 967d1
 	callba Function576a ; engine/map_objects.asm
-	callba Functiond497
-	call Function96812
+	callba _HandlePlayerStep
+	call _CheckObjectEnteringVisibleRange
 	ret
 ; 967e1
 
 Function967e1: ; 967e1
 	callba _UpdateSprites
-	callba Functiond4d2
+	callba ScrollScreen
 	callba PlaceMapNameSign
 	ret
 ; 967f4
@@ -253,14 +242,13 @@
 
 Function967f4: ; 967f4
 	ld a, [wPlayerStepFlags]
-	bit 5, a
+	bit 5, a ; in the middle of step
 	jr z, .events
-	bit 6, a
+	bit 6, a ; stopping step
 	jr z, .noevents
-	bit 4, a
+	bit 4, a ; in midair
 	jr nz, .noevents
 	call EnableEvents
-
 .events
 	ld a, 0 ; events
 	ld [MapEventStatus], a
@@ -272,18 +260,15 @@
 	ret
 ; 96812
 
-Function96812: ; 96812
+_CheckObjectEnteringVisibleRange: ; 96812
 	ld hl, wPlayerStepFlags
 	bit 6, [hl]
 	ret z
-
-	callba Function81ca
+	callba CheckObjectEnteringVisibleRange
 	ret
 ; 9681f
 
-
 PlayerEvents: ; 9681f
-
 	xor a
 ; If there's already a player event, don't interrupt it.
 	ld a, [ScriptRunning]
@@ -313,7 +298,6 @@
 	xor a
 	ret
 
-
 .ok
 	push af
 	callba EnableScriptMode
@@ -335,7 +319,6 @@
 	ret
 ; 96867
 
-
 CheckTrainerBattle3: ; 96867
 	nop
 	nop
@@ -351,7 +334,6 @@
 	ret
 ; 96874
 
-
 CheckTileEvent: ; 96874
 ; Check for warps, tile triggers or wild battles.
 
@@ -418,7 +400,6 @@
 	ret
 ; 968c7
 
-
 CheckWildEncounterCooldown:: ; 968c7
 	ld hl, wWildEncounterCooldown
 	ld a, [hl]
@@ -491,11 +472,11 @@
 	bit 3, [hl]
 	jr z, .nope
 
-	ld hl, ScriptDelay + 2
+	ld hl, wPriorityScriptAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [ScriptDelay + 1]
+	ld a, [wPriorityScriptBank]
 	call CallScript
 	scf
 	ret
@@ -543,7 +524,6 @@
 	ret
 ; 96974
 
-
 OWPlayerInput: ; 96974
 
 	call PlayerMovement
@@ -573,7 +553,6 @@
 	ret
 ; 96999
 
-
 CheckAPressOW: ; 96999
 	ld a, [hJoyPressed]
 	and A_BUTTON
@@ -588,7 +567,6 @@
 	ret
 ; 969ac
 
-
 PlayTalkObject: ; 969ac
 	push de
 	ld de, SFX_READ_TEXT_2
@@ -597,7 +575,6 @@
 	ret
 ; 969b5
 
-
 TryObjectEvent: ; 969b5
 	callba CheckFacingObject
 	jr c, .IsObject
@@ -641,7 +618,7 @@
 
 .pointers
 	dbw PERSONTYPE_SCRIPT, .script
-	dbw PERSONTYPE_ITEMFRAGMENT, .itemfragment
+	dbw PERSONTYPE_ITEMBALL, .itemball
 	dbw PERSONTYPE_TRAINER, .trainer
 	; the remaining four are dummy events
 	dbw PERSONTYPE_3, .three
@@ -662,7 +639,7 @@
 	ret
 ; 96a12
 
-.itemfragment ; 96a12
+.itemball ; 96a12
 	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [hli]
@@ -704,7 +681,6 @@
 	ret
 ; 96a38
 
-
 TryReadSign: ; 96a38
 	call CheckFacingSign
 	jr c, .IsSign
@@ -767,8 +743,8 @@
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
-	ld a, BANK(SignpostItemScript)
-	ld hl, SignpostItemScript
+	ld a, BANK(HiddenItemScript)
+	ld hl, HiddenItemScript
 	call CallScript
 	scf
 	ret
@@ -795,9 +771,8 @@
 	push hl
 	call PlayTalkObject
 	pop hl
-rept 2
 	inc hl
-endr
+	inc hl
 	call GetMapScriptHeaderBank
 	call GetFarHalfword
 	call GetMapScriptHeaderBank
@@ -810,7 +785,6 @@
 	ret
 ; 96ad8
 
-
 CheckSignFlag: ; 96ad8
 	ld hl, EngineBuffer4
 	ld a, [hli]
@@ -829,7 +803,6 @@
 	ret
 ; 96af0
 
-
 PlayerMovement: ; 96af0
 	callba DoPlayerMovement
 	ld a, c
@@ -896,7 +869,6 @@
 	ret
 ; 96b30
 
-
 CheckMenuOW: ; 96b30
 	xor a
 	ld [hMenuReturn], a
@@ -928,7 +900,6 @@
 	ret
 ; 96b58
 
-
 StartMenuScript: ; 96b58
 	callasm StartMenu
 	jump StartMenuCallback
@@ -956,7 +927,6 @@
 	end
 ; 96b79
 
-
 CountStep: ; 96b79
 	; Don't count steps in link communication rooms.
 	ld a, [wLinkMode]
@@ -1023,7 +993,6 @@
 	scf
 	ret
 ; 96bd3
-
 
 .unreferenced: ; 96bd3
 	ld a, 7
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -3,7 +3,7 @@
 
 WarpToSpawnPoint:: ; 97c28
 	ld hl, StatusFlags2
-	res 1, [hl] ; ??
+	res 1, [hl] ; safari zone?
 	res 2, [hl] ; bug contest
 	ret
 ; 97c30
@@ -142,9 +142,9 @@
 ; 97cf9
 
 WildBattleScript: ; 97cf9
-	battlecheck
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	end
 ; 97cfd
 
@@ -514,7 +514,7 @@
 
 CmdQueue_Type4: ; 97ebc
 	call CmdQueueAnonymousJumptable
-	; anonymous jumptable
+	; anonymous dw
 	dw .zero
 	dw .one
 ; 97ec3
@@ -560,7 +560,7 @@
 
 CmdQueue_Type3: ; 97ef9
 	call CmdQueueAnonymousJumptable
-	; anonymous jumptable
+	; anonymous dw
 	dw .zero
 	dw .one
 	dw .two
@@ -627,7 +627,7 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, de
 	ld a, [hl]
-	cp STEP_TYPE_19
+	cp STEP_TYPE_SKYFALL_TOP
 	jr nz, .next
 
 	ld hl, OBJECT_NEXT_TILE
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -55,7 +55,7 @@
 	ld [rWY], a
 	ld [hWY], a
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ret
 ; b8064
 
@@ -126,7 +126,7 @@
 	ld [rWY], a
 	ld [hWY], a
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ret
 
 
@@ -276,7 +276,7 @@
 	ret
 ; b8172
 
-CheckForSignpostItems: ; b8172
+CheckForHiddenItems: ; b8172
 ; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
 	call GetMapScriptHeaderBank
 	ld [Buffer1], a
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -9,7 +9,7 @@
 	ld a, [BaseDexNo]
 	push af
 
-	call _EvolutionAnimation
+	call .EvolutionAnimation
 
 	pop af
 	ld [BaseDexNo], a
@@ -21,7 +21,7 @@
 	pop de
 	pop hl
 
-	ld a, [wd1ed]
+	ld a, [Buffer4]
 	and a
 	ret z
 
@@ -29,7 +29,7 @@
 	ret
 ; 4e607
 
-_EvolutionAnimation: ; 4e607
+.EvolutionAnimation: ; 4e607
 	ld a, $e4
 	ld [rOBP0], a
 
@@ -36,11 +36,11 @@
 	ld de, MUSIC_NONE
 	call PlayMusic
 
-	callba Function8cf53
+	callba ClearSpriteAnims
 
-	ld de, EvolutionGFX
+	ld de, .GFX
 	ld hl, VTiles0
-	lb bc, BANK(EvolutionGFX), 8
+	lb bc, BANK(.GFX), 8
 	call Request2bpp
 
 	xor a
@@ -76,7 +76,7 @@
 
 	ld a, $1
 	ld [hBGMapMode], a
-	call Function4e794
+	call .check_statused
 	jr c, .skip_cry
 
 	ld a, [Buffer1]
@@ -99,7 +99,7 @@
 
 	call .ReplaceFrontpic
 	xor a
-	ld [wd1ed], a
+	ld [Buffer4], a
 
 	ld a, [Buffer2]
 	ld [PlayerHPPal], a
@@ -106,15 +106,15 @@
 
 	ld c, $0
 	call .GetSGBLayout
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
-	jr c, .asm_4e6de
+	call .PlayEvolvedSFX
+	callba ClearSpriteAnims
+	call .check_statused
+	jr c, .no_anim
 
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	push af
 	ld a, $1
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ld a, [CurPartySpecies]
 	push af
 
@@ -128,15 +128,15 @@
 	pop af
 	ld [CurPartySpecies], a
 	pop af
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ret
 
-.asm_4e6de
+.no_anim
 	ret
 
 .cancel_evo
 	ld a, $1
-	ld [wd1ed], a
+	ld [Buffer4], a
 
 	ld a, [Buffer1]
 	ld [PlayerHPPal], a
@@ -143,9 +143,9 @@
 
 	ld c, $0
 	call .GetSGBLayout
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
+	call .PlayEvolvedSFX
+	callba ClearSpriteAnims
+	call .check_statused
 	ret c
 
 	ld a, [PlayerHPPal]
@@ -167,11 +167,11 @@
 .LoadFrontpic: ; 4e711
 	call GetBaseData
 	ld a, $1
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ld de, VTiles2
 	predef FrontpicPredef
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ret
 ; 4e726
 
@@ -252,7 +252,7 @@
 	ret
 
 .pressed_b
-	ld a, [wd1e9]
+	ld a, [wForceEvolution]
 	and a
 	jr nz, .loop3
 	scf
@@ -259,7 +259,7 @@
 	ret
 ; 4e794
 
-Function4e794: ; 4e794
+.check_statused: ; 4e794
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
 	call GetPartyLocation
@@ -269,8 +269,8 @@
 	ret
 ; 4e7a6
 
-Function4e7a6: ; 4e7a6
-	ld a, [wd1ed]
+.PlayEvolvedSFX: ; 4e7a6
+	ld a, [Buffer4]
 	and a
 	ret nz
 	ld de, SFX_EVOLVED
@@ -279,70 +279,70 @@
 	ld a, [hl]
 	push af
 	ld [hl], $0
-.loop
-	call Function4e7cf
+.loop4
+	call .balls_of_light
 	jr nc, .done
-	call Function4e80c
-	jr .loop
+	call .AnimateBallsOfLight
+	jr .loop4
 
 .done
-	ld c, $20
-.loop2
-	call Function4e80c
+	ld c, 32
+.loop5
+	call .AnimateBallsOfLight
 	dec c
-	jr nz, .loop2
+	jr nz, .loop5
 	pop af
 	ld [wJumptableIndex], a
 	ret
 ; 4e7cf
 
-Function4e7cf: ; 4e7cf
+.balls_of_light: ; 4e7cf
 	ld hl, wJumptableIndex
 	ld a, [hl]
-	cp $20
+	cp 32
 	ret nc
 	ld d, a
 	inc [hl]
 	and $1
-	jr nz, .asm_4e7e6
+	jr nz, .done_balls
 	ld e, $0
-	call Function4e7e8
+	call .GenerateBallOfLight
 	ld e, $10
-	call Function4e7e8
+	call .GenerateBallOfLight
 
-.asm_4e7e6
+.done_balls
 	scf
 	ret
 ; 4e7e8
 
-Function4e7e8: ; 4e7e8
+.GenerateBallOfLight: ; 4e7e8
 	push de
-	lb de, $48, $58
-	ld a, $13
+	depixel 9, 11
+	ld a, SPRITE_ANIM_INDEX_13
 	call _InitSpriteAnimStruct
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	ld a, [wJumptableIndex]
-	and $e
+	and %1110
 	sla a
 	pop de
 	add e
 	ld [hl], a
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $0
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $10
 	ret
 ; 4e80c
 
-Function4e80c: ; 4e80c
+.AnimateBallsOfLight: ; 4e80c
 	push bc
-	callab Function8cf69
+	callab PlaySpriteAnimations
 	; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES
 	ld a, [hVBlankCounter]
-	and $e
+	and %1110
 	srl a
 rept 2
 	inc a
@@ -351,7 +351,7 @@
 	ld b, a
 	ld hl, Sprites + 3 ; attributes
 	ld c, 40
-.loop
+.loop6
 	ld a, [hl]
 	or b
 	ld [hli], a
@@ -359,7 +359,7 @@
 	inc hl
 endr
 	dec c
-	jr nz, .loop
+	jr nz, .loop6
 	pop bc
 	call DelayFrame
 	ret
@@ -366,91 +366,6 @@
 ; 4e831
 
 
-EvolutionGFX:
+.GFX:
 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
-	hlbgcoord 0, 0
-	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
-	hlbgcoord 0, 0
-	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
-	hlbgcoord 0, 0
-	ld de, w6_d000
-	ld b, $0
-	ld c, $40
-	call Request2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-; 4e929
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -78,7 +78,7 @@
 	cp EVOLVE_ITEM
 	jp z, .item
 
-	ld a, [wd1e9]
+	ld a, [wForceEvolution]
 	and a
 	jp nz, .dont_evolve_2
 
@@ -179,7 +179,7 @@
 	cp b
 	jp nz, .dont_evolve_3
 
-	ld a, [wd1e9]
+	ld a, [wForceEvolution]
 	and a
 	jp z, .dont_evolve_3
 	ld a, [wLinkMode]
@@ -485,7 +485,7 @@
 
 .learn
 	ld a, d
-	ld [wd262], a
+	ld [wPutativeTMHMMove], a
 	ld [wd265], a
 	call GetMoveName
 	call CopyName1
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -1,15 +1,15 @@
 FruitTreeScript:: ; 44000
 	callasm GetCurTreeFruit
-	loadfont
+	opentext
 	copybytetovar CurFruit
 	itemtotext $0, $0
 	writetext FruitBearingTreeText
-	keeptextopen
+	buttonsound
 	callasm TryResetFruitTrees
 	callasm CheckFruitTree
 	iffalse .fruit
 	writetext NothingHereText
-	closetext
+	waitbutton
 	jump .end
 
 .fruit
@@ -17,7 +17,7 @@
 	copybytetovar CurFruit
 	giveitem ITEM_FROM_MEM
 	iffalse .packisfull
-	keeptextopen
+	buttonsound
 	writetext ObtainedFruitText
 	callasm PickedFruitTree
 	specialsound
@@ -25,12 +25,12 @@
 	jump .end
 
 .packisfull
-	keeptextopen
+	buttonsound
 	writetext FruitPackIsFullText
-	closetext
+	waitbutton
 
 .end
-	loadmovesprites
+	closetext
 	end
 ; 44041
 
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -13,7 +13,7 @@
 	ld [Buffer2], a
 	call .DoJumptableFunctions
 	ld a, [Buffer2]
-	call Functiond24
+	call DmgToCgbObjPal1
 	ret
 ; 1233e
 
--- /dev/null
+++ b/engine/init_gender.asm
@@ -1,0 +1,115 @@
+InitCrystalData: ; 48000
+	ld a, $1
+	ld [wd474], a
+	xor a
+	ld [wd473], a
+	ld [PlayerGender], a
+	ld [wd475], a
+	ld [wd476], a
+	ld [wd477], a
+	ld [wd478], a
+	ld [wd002], a
+	ld [wd003], a
+	; could have done "ld a, [wd479] \ and %11111100", saved four operations
+	ld a, [wd479]
+	res 0, a
+	ld [wd479], a
+	ld a, [wd479]
+	res 1, a
+	ld [wd479], a
+	ret
+; 4802f
+
+INCLUDE "misc/mobile_12.asm"
+
+InitGender: ; 48dcb (12:4dcb)
+	call InitGenderScreen
+	call LoadGenderScreenPal
+	call LoadGenderScreenLightBlueTile
+	call WaitBGMap2
+	call SetPalettes
+	ld hl, TextJump_AreYouABoyOrAreYouAGirl
+	call PrintText
+	ld hl, .MenuDataHeader
+	call LoadMenuDataHeader
+	call WaitBGMap2
+	call VerticalMenu
+	call CloseWindow
+	ld a, [wMenuCursorY]
+	dec a
+	ld [PlayerGender], a
+	ld c, 10
+	call DelayFrames
+	ret
+; 48dfc (12:4dfc)
+
+.MenuDataHeader: ; 0x48dfc
+	db $40 ; flags
+	db 04, 06 ; start coords
+	db 09, 12 ; end coords
+	dw .MenuData2
+	db 1 ; default option
+; 0x48e04
+
+.MenuData2: ; 0x48e04
+	db $a1 ; flags
+	db 2 ; items
+	db "Boy@"
+	db "Girl@"
+; 0x48e0f
+
+TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f
+	; Are you a boy? Or are you a girl?
+	text_jump Text_AreYouABoyOrAreYouAGirl
+	db "@"
+; 0x48e14
+
+InitGenderScreen: ; 48e14 (12:4e14)
+	ld a, $10
+	ld [MusicFade], a
+	ld a, $0
+	ld [MusicFadeIDLo], a
+	ld a, $0
+	ld [MusicFadeIDHi], a
+	ld c, 8
+	call DelayFrames
+	call ClearBGPalettes
+	call InitCrystalData
+	call LoadFontsExtra
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, $0
+	call ByteFill
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	ret
+
+LoadGenderScreenPal: ; 48e47 (12:4e47)
+	ld hl, .Palette
+	ld de, UnknBGPals
+	ld bc, 1 palettes
+	ld a, $5
+	call FarCopyWRAM
+	callba ApplyPals
+	ret
+; 48e5c (12:4e5c)
+
+.Palette: ; 48e5c
+	RGB 31, 31, 31
+	RGB 09, 30, 31
+	RGB 01, 11, 31
+	RGB 00, 00, 00
+; 48e64
+
+LoadGenderScreenLightBlueTile: ; 48e64 (12:4e64)
+	ld de, .LightBlueTile
+	ld hl, VTiles2 tile $00
+	lb bc, BANK(.LightBlueTile), 1
+	call Get2bpp
+	ret
+; 48e71 (12:4e71)
+
+.LightBlueTile: ; 48e71
+INCBIN "gfx/intro/gender_screen.2bpp"
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -7,7 +7,7 @@
 	ld [wMapMusic], a
 	call PlayMusic
 	callba MainMenu
-	jp Function6219
+	jp StartTitleScreen
 ; 5b04
 
 ; unreferenced
@@ -50,7 +50,7 @@
 	call ClearTileMap
 	call LoadFontsExtra
 	call LoadStandardFont
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	ret
 ; 5b54
 
@@ -68,7 +68,7 @@
 
 NewGame: ; 5b6b
 	xor a
-	ld [wc2cc], a
+	ld [wMonStatusFlags], a
 	call ResetWRAM
 	call NewGame_ClearTileMapEtc
 	call AreYouABoyOrAreYouAGirl
@@ -86,7 +86,7 @@
 ; 5b8f
 
 AreYouABoyOrAreYouAGirl: ; 5b8f
-	callba Function10632f ; some mobile stuff
+	callba Mobile_AlwaysReturnNotCarry ; some mobile stuff
 	jr c, .ok
 	callba InitGender
 	ret
@@ -211,9 +211,9 @@
 	ld [Money + 2], a
 
 	xor a
-	ld [wdc17], a
+	ld [wWhichMomItem], a
 
-	ld hl, wdc19
+	ld hl, MomItemTriggerBalance
 	ld [hl], 2300 / $10000
 	inc hl
 	ld [hl], 2300 / $100 % $100
@@ -353,7 +353,7 @@
 Continue: ; 5d65
 	callba TryLoadSaveFile
 	jr c, .FailToLoad
-	callba Function150b9
+	callba _LoadData
 	call LoadStandardMenuDataHeader
 	call DisplaySaveInfoOnContinue
 	ld a, $1
@@ -362,13 +362,13 @@
 	call DelayFrames
 	call ConfirmContinue
 	jr nc, .Check1Pass
-	call WriteBackup
+	call CloseWindow
 	jr .FailToLoad
 
 .Check1Pass
 	call Continue_CheckRTC_RestartClock
 	jr nc, .Check2Pass
-	call WriteBackup
+	call CloseWindow
 	jr .FailToLoad
 
 .Check2Pass
@@ -380,12 +380,12 @@
 	ld [MusicFadeIDHi], a
 	call ClearBGPalettes
 	call Continue_MobileAdapterMenu
-	call WriteBackup
+	call CloseWindow
 	call ClearTileMap
 	ld c, 20
 	call DelayFrames
 	callba JumpRoamMons
-	callba Function105091 ; Mystery Gift
+	callba MysteryGift_CopyReceivedDecosToPC ; Mystery Gift
 	callba Function140ae ; time-related
 	ld a, [wSpawnAfterChampion]
 	cp SPAWN_LANCE
@@ -399,7 +399,7 @@
 
 .SpawnAfterE4
 	ld a, SPAWN_NEW_BARK
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	call PostCreditsSpawn
 	jp FinishContinueFunction
 ; 5de2
@@ -406,7 +406,7 @@
 
 SpawnAfterRed: ; 5de2
 	ld a, SPAWN_MT_SILVER
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 ; 5de7
 
 PostCreditsSpawn: ; 5de7
@@ -418,8 +418,11 @@
 ; 5df0
 
 Continue_MobileAdapterMenu: ; 5df0
-	callba Function10632f ; mobile check
+	callba Mobile_AlwaysReturnNotCarry ; mobile check
 	ret nc
+
+; the rest of this stuff is never reached because
+; the previous function returns with carry not set
 	ld hl, wd479
 	bit 1, [hl]
 	ret nz
@@ -450,9 +453,9 @@
 	call DelayFrame
 	call GetJoypad
 	ld hl, hJoyPressed
-	bit 0, [hl]
+	bit A_BUTTON_F, [hl]
 	jr nz, .PressA
-	bit 1, [hl]
+	bit B_BUTTON_F, [hl]
 	jr z, .loop
 	scf
 	ret
@@ -480,7 +483,7 @@
 FinishContinueFunction: ; 5e5d
 .loop
 	xor a
-	ld [wc2c1], a
+	ld [wDontPlayMapMusicOnReload], a
 	ld [wLinkMode], a
 	ld hl, GameTimerPause
 	set 0, [hl]
@@ -545,9 +548,9 @@
 	ld hl, .MenuDataHeader_NoDex
 
 .pokedex_header
-	call Function1e35
+	call _OffsetMenuDataHeader
 	call MenuBox
-	call Function1c89
+	call PlaceVerticalMenuItems
 	ret
 ; 5ed9
 
@@ -641,7 +644,7 @@
 
 Continue_DisplayPokedexNumCaught: ; 5f6b
 	ld a, [StatusFlags]
-	bit 0, a
+	bit 0, a ; Pokedex
 	ret z
 	push hl
 	ld hl, PokedexCaught
@@ -685,7 +688,7 @@
 	ld [TrainerClass], a
 	call Intro_PrepTrainerPic
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call Intro_RotatePalettesLeftFrontpic
 
@@ -706,7 +709,7 @@
 	ld [TempMonDVs], a
 	ld [TempMonDVs + 1], a
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call Intro_WipeInFrontpic
 
@@ -723,7 +726,7 @@
 	ld [TrainerClass], a
 	call Intro_PrepTrainerPic
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call Intro_RotatePalettesLeftFrontpic
 
@@ -736,7 +739,7 @@
 	ld [CurPartySpecies], a
 	callba DrawIntroPlayerPic
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call Intro_RotatePalettesLeftFrontpic
 
@@ -783,11 +786,11 @@
 NamePlayer: ; 0x6074
 	callba MovePlayerPicRight
 	callba ShowPlayerNamingChoices
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	jr z, .NewName
 	call StorePlayerName
-	callba Function8c1d
+	callba ApplyMonOrTrainerPals
 	callba MovePlayerPicLeft
 	ret
 
@@ -806,7 +809,7 @@
 	ld [CurPartySpecies], a
 	callba DrawIntroPlayerPic
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call RotateThreePalettesLeft
 
@@ -828,11 +831,11 @@
 
 Function60e9: ; Unreferenced
 	call LoadMenuDataHeader
-	call InterpretMenu2
-	ld a, [MenuSelection2]
+	call VerticalMenu
+	ld a, [wMenuCursorY]
 	dec a
 	call CopyNameFromMenu
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 60fa
 
@@ -1003,19 +1006,19 @@
 
 .sprites ; 61fe
 	db 4
-	db $4c, $48, 0
-	db $4c, $50, 1
-	db $54, $48, 2
-	db $54, $50, 3
+	db  9 * 8 + 4,  9 * 8, 0
+	db  9 * 8 + 4, 10 * 8, 1
+	db 10 * 8 + 4,  9 * 8, 2
+	db 10 * 8 + 4, 10 * 8, 3
 ; 620b
 
 
-Function620b: ; 620b
-	callab Functione4579
-	jr c, Function6219
+CrystalIntroSequence: ; 620b
+	callab Copyright_GFPresents
+	jr c, StartTitleScreen
 	callba CrystalIntro
 
-Function6219: ; 6219
+StartTitleScreen: ; 6219
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -1024,7 +1027,7 @@
 	call .TitleScreen
 	call DelayFrame
 .loop
-	call Function627b
+	call RunTitleScreen
 	jr nc, .loop
 
 	call ClearSprites
@@ -1036,9 +1039,9 @@
 	ld hl, rLCDC
 	res 2, [hl]
 	call ClearScreen
-	call Function3200
+	call WaitBGMap2
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld [hSCX], a
 	ld [hSCY], a
 	ld a, $7
@@ -1055,10 +1058,9 @@
 .ok
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
-rept 2
+	ld hl, .dw
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1065,11 +1067,11 @@
 	jp [hl]
 ; 626a
 
-.jumptable
+.dw
 	dw _MainMenu
-	dw Function6389
-	dw Function620b
-	dw Function620b
+	dw DeleteSaveData
+	dw CrystalIntroSequence
+	dw CrystalIntroSequence
 	dw ResetClock
 ; 6274
 
@@ -1079,7 +1081,7 @@
 	ret
 ; 627b
 
-Function627b: ; 627b
+RunTitleScreen: ; 627b
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .done_title
@@ -1110,9 +1112,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, .scenes
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1126,7 +1127,7 @@
 	dw TitleScreenEnd
 ; 62b7
 
-Function62b7: ; Unreferenced
+.NextScene ; Unreferenced
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
@@ -1152,7 +1153,7 @@
 ; Reversed signage for every other line's position.
 ; This is responsible for the interlaced effect.
 	ld a, e
-	xor -1
+	xor $ff
 	inc a
 
 	ld b, 8 * 10 / 2 ; logo height / 2
@@ -1171,7 +1172,7 @@
 	ld hl, wJumptableIndex
 	inc [hl]
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 
 ; Play the title screen music.
 	ld de, MUSIC_TITLE
@@ -1191,7 +1192,7 @@
 
 ; Start a timer
 	ld hl, wcf65
-	ld de, $1140 ; 73.6 seconds
+	ld de, 73 * 60 + 36
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -1225,7 +1226,7 @@
 ; To bring up the clock reset dialog:
 
 ; Hold Down + B + Select to initiate the sequence.
-	ld a, [$ffeb]
+	ld a, [hClockResetTrigger]
 	cp $34
 	jr z, .check_clock_reset
 
@@ -1235,17 +1236,17 @@
 	jr nz, .check_start
 
 	ld a, $34
-	ld [$ffeb], a
+	ld [hClockResetTrigger], a
 	jr .check_start
 
 ; Keep Select pressed, and hold Left + Up.
 ; Then let go of Select.
 .check_clock_reset
-	bit 2, [hl] ; SELECT
+	bit SELECT_F, [hl]
 	jr nz, .check_start
 
 	xor a
-	ld [$ffeb], a
+	ld [hClockResetTrigger], a
 
 	ld a, [hl]
 	and D_LEFT + D_UP
@@ -1320,8 +1321,8 @@
 	ret
 ; 6389
 
-Function6389: ; 6389
-	callba Function4d54c
+DeleteSaveData: ; 6389
+	callba _DeleteSaveData
 	jp Init
 ; 6392
 
@@ -1336,26 +1337,23 @@
 	and $3
 	ret nz
 	ld bc, SpriteAnim10
-	ld hl, SpriteAnim10FrameIndex - SpriteAnim10
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc ; over-the-top compicated way to load wc3ae into hl
 	ld l, [hl]
 	ld h, 0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld de, Data63ca
 	add hl, de
 	; If bit 2 of [wcf65] is set, get the second dw; else, get the first dw
 	ld a, [wcf65]
 	and %00000100
-rept 2
 	srl a
-endr
+	srl a
 	ld e, a
 	ld d, 0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	and a
 	ret z
@@ -1368,12 +1366,12 @@
 
 Data63ca: ; 63ca
 ; frame 0 y, x; frame 1 y, x
-	db $5c, $50, $00, $00
-	db $5c, $68, $5c, $58
-	db $5c, $68, $5c, $78
-	db $5c, $88, $5c, $78
-	db $00, $00, $5c, $78
-	db $00, $00, $5c, $58
+	db 11 * 8 + 4, 10 * 8,  0 * 8,      0 * 8
+	db 11 * 8 + 4, 13 * 8, 11 * 8 + 4, 11 * 8
+	db 11 * 8 + 4, 13 * 8, 11 * 8 + 4, 15 * 8
+	db 11 * 8 + 4, 17 * 8, 11 * 8 + 4, 15 * 8
+	db  0 * 8,      0 * 8, 11 * 8 + 4, 15 * 8
+	db  0 * 8,      0 * 8, 11 * 8 + 4, 11 * 8
 ; 63e2
 
 Copyright: ; 63e2
@@ -1390,20 +1388,16 @@
 
 CopyrightString: ; 63fd
 	; ©1995-2001 Nintendo
-	db $60, $61, $62, $63, $64, $65, $66
-	db $67, $68, $69, $6a, $6b, $6c
+	db   $60, $61, $62, $63, $64, $65, $66
+	db   $67, $68, $69, $6a, $6b, $6c
 
-	db $4e
-
 	; ©1995-2001 Creatures inc.
-	db $60, $61, $62, $63, $64, $65, $66, $6d
-	db $6e, $6f, $70, $71, $72, $7a, $7b, $7c
+	next $60, $61, $62, $63, $64, $65, $66
+	db   $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c
 
-	db $4e
-
 	; ©1995-2001 GAME FREAK inc.
-	db $60, $61, $62, $63, $64, $65, $66, $73, $74
-	db $75, $76, $77, $78, $79, $7a, $7b, $7c
+	next $60, $61, $62, $63, $64, $65, $66
+	db   $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c
 
 	db "@"
 ; 642e
@@ -1410,7 +1404,7 @@
 
 GameInit:: ; 642e
 	callba TryLoadSaveData
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	call ClearBGPalettes
 	call ClearTileMap
 	ld a, VBGMap0 / $100
@@ -1423,5 +1417,5 @@
 	ld a, $90
 	ld [hWY], a
 	call WaitBGMap
-	jp Function620b
+	jp CrystalIntroSequence
 ; 6454
--- /dev/null
+++ b/engine/learn.asm
@@ -1,0 +1,256 @@
+LearnMove: ; 6508
+	call LoadTileMapToTempTileMap
+	ld a, [CurPartyMon]
+	ld hl, PartyMonNicknames
+	call GetNick
+	ld hl, StringBuffer1
+	ld de, wMonOrItemNameBuffer
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+.loop
+	ld hl, PartyMon1Moves
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld b, NUM_MOVES
+; Get the first empty move slot.  This routine also serves to
+; determine whether the Pokemon learning the moves already has
+; all four slots occupied, in which case one would need to be
+; deleted.
+.next
+	ld a, [hl]
+	and a
+	jr z, .learn
+	inc hl
+	dec b
+	jr nz, .next
+; If we're here, we enter the routine for forgetting a move
+; to make room for the new move we're trying to learn.
+	push de
+	call ForgetMove
+	pop de
+	jp c, .cancel
+
+	push hl
+	push de
+	ld [wd265], a
+
+	ld b, a
+	ld a, [wBattleMode]
+	and a
+	jr z, .not_disabled
+	ld a, [DisabledMove]
+	cp b
+	jr nz, .not_disabled
+	xor a
+	ld [DisabledMove], a
+	ld [PlayerDisableCount], a
+.not_disabled
+
+	call GetMoveName
+	ld hl, Text_1_2_and_Poof ; 1, 2 and…
+	call PrintText
+	pop de
+	pop hl
+
+.learn
+	ld a, [wPutativeTMHMMove]
+	ld [hl], a
+	ld bc, MON_PP - MON_MOVES
+	add hl, bc
+
+	push hl
+	push de
+	dec a
+	ld hl, Moves + MOVE_PP
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	pop de
+	pop hl
+
+	ld [hl], a
+
+	ld a, [wBattleMode]
+	and a
+	jp z, .learned
+
+	ld a, [CurPartyMon]
+	ld b, a
+	ld a, [CurBattleMon]
+	cp b
+	jp nz, .learned
+
+	ld a, [PlayerSubStatus5]
+	bit SUBSTATUS_TRANSFORMED, a
+	jp nz, .learned
+
+	ld h, d
+	ld l, e
+	ld de, BattleMonMoves
+	ld bc, NUM_MOVES
+	call CopyBytes
+	ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES)
+	add hl, bc
+	ld de, BattleMonPP
+	ld bc, NUM_MOVES
+	call CopyBytes
+	jp .learned
+
+.cancel
+	ld hl, Text_StopLearning ; Stop learning <MOVE>?
+	call PrintText
+	call YesNoBox
+	jp c, .loop
+
+	ld hl, Text_DidNotLearn ; <MON> did not learn <MOVE>.
+	call PrintText
+	ld b, 0
+	ret
+
+.learned
+	ld hl, Text_LearnedMove ; <MON> learned <MOVE>!
+	call PrintText
+	ld b, 1
+	ret
+; 65d3
+
+ForgetMove: ; 65d3
+	push hl
+	ld hl, Text_TryingToLearn
+	call PrintText
+	call YesNoBox
+	pop hl
+	ret c
+	ld bc, -NUM_MOVES
+	add hl, bc
+	push hl
+	ld de, wListMoves_MoveIndicesBuffer
+	ld bc, NUM_MOVES
+	call CopyBytes
+	pop hl
+.loop
+	push hl
+	ld hl, Text_ForgetWhich
+	call PrintText
+	hlcoord 5, 2
+	ld b, NUM_MOVES * 2
+	ld c, MOVE_NAME_LENGTH
+	call TextBox
+	hlcoord 5 + 2, 2 + 2
+	ld a, SCREEN_WIDTH * 2
+	ld [Buffer1], a
+	predef ListMoves
+	; wMenuData3
+	ld a, $4
+	ld [w2DMenuCursorInitY], a
+	ld a, $6
+	ld [w2DMenuCursorInitX], a
+	ld a, [wNumMoves]
+	inc a
+	ld [w2DMenuNumRows], a
+	ld a, $1
+	ld [w2DMenuNumCols], a
+	ld [wMenuCursorY], a
+	ld [wMenuCursorX], a
+	ld a, $3
+	ld [wMenuJoypadFilter], a
+	ld a, $20
+	ld [w2DMenuFlags1], a
+	xor a
+	ld [w2DMenuFlags2], a
+	ld a, $20
+	ld [w2DMenuCursorOffsets], a
+	call StaticMenuJoypad
+	push af
+	call Call_LoadTempTileMapToTileMap
+	pop af
+	pop hl
+	bit 1, a
+	jr nz, .cancel
+	push hl
+	ld a, [wMenuCursorY]
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [hl]
+	push af
+	push bc
+	call IsHMMove
+	pop bc
+	pop de
+	ld a, d
+	jr c, .hmmove
+	pop hl
+	add hl, bc
+	and a
+	ret
+
+.hmmove
+	ld hl, Text_CantForgetHM
+	call PrintText
+	pop hl
+	jr .loop
+
+.cancel
+	scf
+	ret
+; 666b
+
+Text_LearnedMove: ; 666b
+; <MON> learned <MOVE>!
+	text_jump UnknownText_0x1c5660
+	db "@"
+; 6670
+
+Text_ForgetWhich: ; 6670
+; Which move should be forgotten?
+	text_jump UnknownText_0x1c5678
+	db "@"
+; 6675
+
+Text_StopLearning: ; 6675
+; Stop learning <MOVE>?
+	text_jump UnknownText_0x1c5699
+	db "@"
+; 667a
+
+Text_DidNotLearn: ; 667a
+; <MON> did not learn <MOVE>.
+	text_jump UnknownText_0x1c56af
+	db "@"
+; 667f
+
+Text_TryingToLearn: ; 667f
+; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
+; four moves. Delete an older move to make room for <MOVE>?
+	text_jump UnknownText_0x1c56c9
+	db "@"
+; 6684
+
+Text_1_2_and_Poof: ; 6684
+	text_jump UnknownText_0x1c5740 ; 1, 2 and…
+	start_asm
+	push de
+	ld de, SFX_SWITCH_POKEMON
+	call PlaySFX
+	pop de
+	ld hl, .PoofForgot
+	ret
+
+.PoofForgot
+; Poof! <MON> forgot <MOVE>. And…
+	text_jump UnknownText_0x1c574e
+	db "@"
+; 669a
+
+Text_CantForgetHM: ; 669a
+; HM moves can't be forgotten now.
+	text_jump UnknownText_0x1c5772
+	db "@"
+; 669f
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -14,19 +14,19 @@
 	call UpdateSprites
 	call LoadStandardFont
 	call LoadFontsBattleExtra
-	callba Function16d69a
-	call Function3200
+	callba LinkComms_LoadPleaseWaitTextboxBorderGFX
+	call WaitBGMap2
 	hlcoord 3, 8
-	ld b, $2
-	ld c, $c
+	ld b, 2
+	ld c, 12
 	ld d, h
 	ld e, l
-	callba Function4d35b
+	callba LinkTextbox2
 	hlcoord 4, 10
-	ld de, String28419
+	ld de, String_PleaseWait
 	call PlaceString
 	call Function28eff
-	call Function3200
+	call WaitBGMap2
 	ld hl, wcf5d
 	xor a
 	ld [hli], a
@@ -33,19 +33,19 @@
 	ld [hl], $50
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
-	jp nz, Function28177
+	jp nz, Gen2ToGen2LinkComms
 
-Function2805d: ; 2805d
-	call Function28426
-	call Function28499
-	call Function28434
+TimeCapsule: ; 2805d
+	call ClearLinkData
+	call Link_PrepPartyData_Gen1
+	call FixDataForLinkTransfer
 	xor a
 	ld [wPlayerLinkAction], a
 	call Function87d
 	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr nz, .asm_28091
-	ld c, $3
+	jr nz, .player_1
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hSerialSend], a
@@ -61,7 +61,7 @@
 	ld a, $81
 	ld [rSC], a
 
-.asm_28091
+.player_1
 	ld de, MUSIC_NONE
 	call PlayMusic
 	ld c, $3
@@ -76,23 +76,23 @@
 	call Function75f
 	ld a, $fe
 	ld [de], a
-	ld hl, OverworldMap
-	ld de, wd26b
+	ld hl, wLinkData
+	ld de, OTPlayerName
 	ld bc, $1a8
 	call Function75f
 	ld a, $fe
 	ld [de], a
-	ld hl, wc608
+	ld hl, wMisc
 	ld de, wPlayerTrademonSpecies
-	ld bc, wPlayerTrademonSpecies - wc608
+	ld bc, wPlayerTrademonSpecies - wMisc
 	call Function75f
 	xor a
 	ld [rIF], a
 	ld a, $1d
 	ld [rIE], a
-	call Function287ab
-	ld hl, wd26b
-	call Function287ca
+	call Link_CopyRandomNumbers
+	ld hl, OTPlayerName
+	call Link_FindFirstNonControlCharacter_SkipZero
 	push hl
 	ld bc, NAME_LENGTH
 	add hl, bc
@@ -102,23 +102,23 @@
 	jp z, Function28b22
 	cp $7
 	jp nc, Function28b22
-	ld de, OverworldMap
+	ld de, wLinkData
 	ld bc, $1a2
-	call Function2879e
+	call Link_CopyOTData
 	ld de, wPlayerTrademonSpecies
-	ld hl, wc813
+	ld hl, wTimeCapsulePartyMon1Species
 	ld c, $2
-.asm_280fe
+.loop
 	ld a, [de]
 	inc de
 	and a
-	jr z, .asm_280fe
+	jr z, .loop
 	cp $fd
-	jr z, .asm_280fe
+	jr z, .loop
 	cp $fe
-	jr z, .asm_280fe
+	jr z, .loop
 	cp $ff
-	jr z, .asm_2811d
+	jr z, .next
 	push hl
 	push bc
 	ld b, $0
@@ -129,14 +129,14 @@
 	ld [hl], a
 	pop bc
 	pop hl
-	jr .asm_280fe
+	jr .loop
 
-.asm_2811d
+.next
 	ld hl, wc90f
 	dec c
-	jr nz, .asm_280fe
-	ld hl, OverworldMap
-	ld de, wd26b
+	jr nz, .loop
+	ld hl, wLinkPlayerName
+	ld de, OTPlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld de, OTPartyCount
@@ -143,10 +143,10 @@
 	ld a, [hli]
 	ld [de], a
 	inc de
-.asm_28135
+.party_loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_2814e
+	cp -1
+	jr z, .done_party
 	ld [wd265], a
 	push hl
 	push de
@@ -156,11 +156,11 @@
 	ld a, [wd265]
 	ld [de], a
 	inc de
-	jr .asm_28135
+	jr .party_loop
 
-.asm_2814e
+.done_party
 	ld [de], a
-	ld hl, wc813
+	ld hl, wTimeCapsulePartyMon1Species
 	call Function2868a
 	ld a, OTPartyMonOT % $100
 	ld [wd102], a
@@ -174,13 +174,13 @@
 	call z, DelayFrames
 	ld de, MUSIC_ROUTE_30
 	call PlayMusic
-	jp Function287e3
+	jp InitTradeMenuDisplay
 ; 28177
 
-Function28177: ; 28177
-	call Function28426
-	call Function28595
-	call Function28434
+Gen2ToGen2LinkComms: ; 28177
+	call ClearLinkData
+	call Link_PrepPartyData_Gen2
+	call FixDataForLinkTransfer
 	call Function29dba
 	ld a, [ScriptVar]
 	and a
@@ -187,8 +187,8 @@
 	jp z, Function283b2
 	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr nz, .asm_281ae
-	ld c, $3
+	jr nz, .Player1
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hSerialSend], a
@@ -204,10 +204,10 @@
 	ld a, $81
 	ld [rSC], a
 
-.asm_281ae
+.Player1
 	ld de, MUSIC_NONE
 	call PlayMusic
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [rIF], a
@@ -219,25 +219,25 @@
 	call Function75f
 	ld a, $fe
 	ld [de], a
-	ld hl, OverworldMap
-	ld de, wd26b
+	ld hl, wLinkData
+	ld de, OTPlayerName
 	ld bc, $1c2
 	call Function75f
 	ld a, $fe
 	ld [de], a
-	ld hl, wc608
+	ld hl, wMisc
 	ld de, wPlayerTrademonSpecies
 	ld bc, $c8
 	call Function75f
 	ld a, [wLinkMode]
 	cp LINK_TRADECENTER
-	jr nz, .asm_281fd
+	jr nz, .not_trading
 	ld hl, wc9f4
 	ld de, wcb84
 	ld bc, $186
 	call Function283f2
 
-.asm_281fd
+.not_trading
 	xor a
 	ld [rIF], a
 	ld a, $1d
@@ -244,26 +244,26 @@
 	ld [rIE], a
 	ld de, MUSIC_NONE
 	call PlayMusic
-	call Function287ab
-	ld hl, wd26b
-	call Function287ca
-	ld de, OverworldMap
+	call Link_CopyRandomNumbers
+	ld hl, OTPlayerName
+	call Link_FindFirstNonControlCharacter_SkipZero
+	ld de, wLinkData
 	ld bc, $1b9
-	call Function2879e
+	call Link_CopyOTData
 	ld de, wPlayerTrademonSpecies
-	ld hl, wc813
+	ld hl, wLinkPlayerPartyMon1Species
 	ld c, $2
-.asm_28224
+.loop1
 	ld a, [de]
 	inc de
 	and a
-	jr z, .asm_28224
+	jr z, .loop1
 	cp $fd
-	jr z, .asm_28224
+	jr z, .loop1
 	cp $fe
-	jr z, .asm_28224
+	jr z, .loop1
 	cp $ff
-	jr z, .asm_28243
+	jr z, .next1
 	push hl
 	push bc
 	ld b, $0
@@ -274,50 +274,49 @@
 	ld [hl], a
 	pop bc
 	pop hl
-	jr .asm_28224
+	jr .loop1
 
-.asm_28243
+.next1
 	ld hl, wc90f
 	dec c
-	jr nz, .asm_28224
+	jr nz, .loop1
 	ld a, [wLinkMode]
 	cp LINK_TRADECENTER
-	jp nz, .asm_282fe
+	jp nz, .skip_mail
 	ld hl, wcb84
-.asm_28254
+.loop2
 	ld a, [hli]
 	cp $20
-	jr nz, .asm_28254
-.asm_28259
+	jr nz, .loop2
+.loop3
 	ld a, [hli]
 	cp $fe
-	jr z, .asm_28259
+	jr z, .loop3
 	cp $20
-	jr z, .asm_28259
+	jr z, .loop3
 	dec hl
 	ld de, wcb84
-	ld bc, $190
+	ld bc, $190 ; 400
 	call CopyBytes
 	ld hl, wcb84
-	ld bc, $c6
-.asm_28272
+	ld bc, $c6 ; 198
+.loop4
 	ld a, [hl]
 	cp $21
-	jr nz, .asm_28279
+	jr nz, .okay1
 	ld [hl], $fe
-
-.asm_28279
+.okay1
 	inc hl
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_28272
+	jr nz, .loop4
 	ld de, wcc9e
-.asm_28282
+.loop5
 	ld a, [de]
 	inc de
 	cp $ff
-	jr z, .asm_28294
+	jr z, .start_copying_mail
 	ld hl, wcc4a
 	dec a
 	ld b, $0
@@ -324,43 +323,43 @@
 	ld c, a
 	add hl, bc
 	ld [hl], $fe
-	jr .asm_28282
+	jr .loop5
 
-.asm_28294
+.start_copying_mail
 	ld hl, wcb84
 	ld de, wc9f4
-	ld b, $6
-.asm_2829c
+	ld b, PARTY_LENGTH
+.copy_mail_loop
 	push bc
-	ld bc, $21
+	ld bc, MAIL_MSG_LENGTH + 1
 	call CopyBytes
-	ld a, $e
+	ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) % $100
 	add e
 	ld e, a
-	ld a, $0
+	ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) / $100
 	adc d
 	ld d, a
 	pop bc
 	dec b
-	jr nz, .asm_2829c
+	jr nz, .copy_mail_loop
 	ld de, wc9f4
-	ld b, $6
-.asm_282b4
+	ld b, PARTY_LENGTH
+.copy_author_loop
 	push bc
-	ld a, $21
+	ld a, (MAIL_MSG_LENGTH + 1) % $100
 	add e
 	ld e, a
-	ld a, $0
+	ld a, (MAIL_MSG_LENGTH + 1) / $100
 	adc d
 	ld d, a
-	ld bc, $e
+	ld bc, MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)
 	call CopyBytes
 	pop bc
 	dec b
-	jr nz, .asm_282b4
-	ld b, $6
+	jr nz, .copy_author_loop
+	ld b, PARTY_LENGTH
 	ld de, wc9f4
-.asm_282cc
+.fix_mail_loop
 	push bc
 	push de
 	callba IsMailEuropean
@@ -385,14 +384,14 @@
 	ld e, l
 	pop bc
 	dec b
-	jr nz, .asm_282cc
+	jr nz, .fix_mail_loop
 	ld de, wcb0e
 	xor a
 	ld [de], a
 
-.asm_282fe
-	ld hl, OverworldMap
-	ld de, wd26b
+.skip_mail
+	ld hl, wLinkData
+	ld de, OTPlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld de, OTPartyCount
@@ -416,7 +415,7 @@
 	call z, DelayFrames
 	ld a, [wLinkMode]
 	cp LINK_COLOSSEUM
-	jr nz, .asm_283a9
+	jr nz, .ready_to_trade
 	ld a, CAL
 	ld [OtherTrainerClass], a
 	call ClearScreen
@@ -427,7 +426,7 @@
 	and $20
 	or $3
 	ld [hl], a
-	ld hl, wd26b
+	ld hl, OTPlayerName
 	ld de, OTName
 	ld bc, NAME_LENGTH
 	call CopyBytes
@@ -463,20 +462,20 @@
 	callba LoadPokemonData
 	jp Function28b22
 
-.asm_283a9
+.ready_to_trade
 	ld de, MUSIC_ROUTE_30
 	call PlayMusic
-	jp Function287e3
+	jp InitTradeMenuDisplay
 ; 283b2
 
 Function283b2: ; 283b2
-	ld de, UnknownText_0x283ed
+	ld de, .TooMuchTimeHasElapsed
 	ld b, $a
-.asm_283b7
+.loop
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	dec b
-	jr nz, .asm_283b7
+	jr nz, .loop
 	xor a
 	ld [hld], a
 	ld [hl], a
@@ -483,12 +482,12 @@
 	ld [hVBlank], a
 	push de
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, 18
 	push de
 	ld d, h
 	ld e, l
-	callba Function4d35b
+	callba LinkTextbox2
 	pop de
 	pop hl
 	bccoord 1, 14
@@ -497,11 +496,11 @@
 	call ClearScreen
 	ld b, SCGB_08
 	call GetSGBLayout
-	call Function3200
+	call WaitBGMap2
 	ret
 ; 283ed
 
-UnknownText_0x283ed: ; 0x283ed
+.TooMuchTimeHasElapsed: ; 0x283ed
 	; Too much time has elapsed. Please try again.
 	text_jump UnknownText_0x1c4183
 	db "@"
@@ -510,7 +509,7 @@
 Function283f2: ; 283f2
 	ld a, $1
 	ld [hFFCC], a
-.asm_283f6
+.loop
 	ld a, [hl]
 	ld [hSerialSend], a
 	call Function78a
@@ -518,130 +517,128 @@
 	ld b, a
 	inc hl
 	ld a, $30
-.asm_28401
+.delay_cycles
 	dec a
-	jr nz, .asm_28401
+	jr nz, .delay_cycles
 	ld a, [hFFCC]
 	and a
 	ld a, b
 	pop bc
-	jr z, .asm_28411
+	jr z, .load
 	dec hl
 	xor a
 	ld [hFFCC], a
-	jr .asm_283f6
+	jr .loop
 
-.asm_28411
+.load
 	ld [de], a
 	inc de
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_283f6
+	jr nz, .loop
 	ret
 ; 28419
 
-String28419: ; 28419
+String_PleaseWait: ; 28419
 	db "PLEASE WAIT!@"
 ; 28426
 
-Function28426: ; 28426
-	ld hl, OverworldMap
-	lb bc, 5, SCREEN_WIDTH
-.asm_2842c
+ClearLinkData: ; 28426
+	ld hl, wLinkData
+	ld bc, wLinkDataEnd - wLinkData
+.loop
 	xor a
 	ld [hli], a
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_2842c
+	jr nz, .loop
 	ret
 ; 28434
 
-Function28434: ; 28434
+FixDataForLinkTransfer: ; 28434
 	ld hl, wd1f3
 	ld a, $fd
-	ld b, $7
-.asm_2843b
+	ld b, LinkBattleRNs - wd1f3
+.loop1
 	ld [hli], a
 	dec b
-	jr nz, .asm_2843b
-	ld b, $a
-.asm_28441
+	jr nz, .loop1
+	ld b, TempEnemyMonSpecies - LinkBattleRNs
+.loop2
 	call Random
 	cp $fd
-	jr nc, .asm_28441
+	jr nc, .loop2
 	ld [hli], a
 	dec b
-	jr nz, .asm_28441
-	ld hl, wc608
+	jr nz, .loop2
+	ld hl, wMisc
 	ld a, $fd
 rept 3
 	ld [hli], a
 endr
-	ld b, $c8
+	ld b, wc6d3 - (wMisc + 3)
 	xor a
-.asm_28457
+.loop3
 	ld [hli], a
 	dec b
-	jr nz, .asm_28457
-	ld hl, wc818
-	ld de, wc608 + 10
-	ld bc, 0
-.asm_28464
+	jr nz, .loop3
+	ld hl, wTimeCapsulePartyMon1 - 1 + 6
+	ld de, wc612
+	lb bc, 0, 0
+.loop4
 	inc c
 	ld a, c
 	cp $fd
-	jr z, .asm_2848c
+	jr z, .next1
 	ld a, b
 	dec a
-	jr nz, .asm_2847f
+	jr nz, .next2
 	push bc
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
 	ld b, $d
-	jr z, .asm_2847a
+	jr z, .got_value
 	ld b, $27
-
-.asm_2847a
+.got_value
 	ld a, c
 	cp b
 	pop bc
-	jr z, .asm_28495
-
-.asm_2847f
+	jr z, .done
+.next2
 	inc hl
 	ld a, [hl]
 	cp $fe
-	jr nz, .asm_28464
+	jr nz, .loop4
 	ld a, c
 	ld [de], a
 	inc de
 	ld [hl], $ff
-	jr .asm_28464
+	jr .loop4
 
-.asm_2848c
+.next1
 	ld a, $ff
 	ld [de], a
 	inc de
 	lb bc, 1, 0
-	jr .asm_28464
+	jr .loop4
 
-.asm_28495
+.done
 	ld a, $ff
 	ld [de], a
 	ret
 ; 28499
 
-Function28499: ; 28499
-	ld de, OverworldMap
+Link_PrepPartyData_Gen1: ; 28499
+	ld de, wLinkData
 	ld a, $fd
-	ld b, $6
-.asm_284a0
+	ld b, 6
+.loop1
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_284a0
+	jr nz, .loop1
 	ld hl, PlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
@@ -650,10 +647,10 @@
 	ld a, [hli]
 	ld [de], a
 	inc de
-.asm_284b5
+.loop2
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_284ce
+	cp -1
+	jr z, .done_party
 	ld [wd265], a
 	push hl
 	push de
@@ -663,34 +660,34 @@
 	ld a, [wd265]
 	ld [de], a
 	inc de
-	jr .asm_284b5
+	jr .loop2
 
-.asm_284ce
+.done_party
 	ld [de], a
 	pop de
-	ld hl, $8
+	ld hl, 1 + PARTY_LENGTH + 1
 	add hl, de
 	ld d, h
 	ld e, l
 	ld hl, PartyMon1Species
-	ld c, $6
-.asm_284db
+	ld c, PARTY_LENGTH
+.mon_loop
 	push bc
-	call Function284f6
+	call .ConvertPartyStruct2to1
 	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	dec c
-	jr nz, .asm_284db
+	jr nz, .mon_loop
 	ld hl, PartyMonOT
-	call .asm_284f0
+	call .copy_ot_nicks
 	ld hl, PartyMonNicknames
-.asm_284f0
-	ld bc, $42
+.copy_ot_nicks
+	ld bc, PARTY_LENGTH * NAME_LENGTH
 	jp CopyBytes
 ; 284f6
 
-Function284f6: ; 284f6
+.ConvertPartyStruct2to1: ; 284f6
 	ld b, h
 	ld c, l
 	push de
@@ -703,7 +700,7 @@
 	ld a, [wd265]
 	ld [de], a
 	inc de
-	ld hl, $22
+	ld hl, MON_HP
 	add hl, bc
 	ld a, [hli]
 	ld [de], a
@@ -714,26 +711,26 @@
 	xor a
 	ld [de], a
 	inc de
-	ld hl, $20
+	ld hl, MON_STATUS
 	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
+	cp MAGNEMITE
+	jr z, .steel_type
+	cp MAGNETON
+	jr nz, .skip_steel
 
-.asm_28528
-	ld a, $17
+.steel_type
+	ld a, ELECTRIC
 	ld [de], a
 	inc de
 	ld [de], a
 	inc de
-	jr .asm_28544
+	jr .done_steel
 
-.asm_28530
+.skip_steel
 	push bc
 	dec a
 	ld hl, BaseData + 7 ; type
@@ -744,15 +741,15 @@
 	call FarCopyBytes
 	pop bc
 
-.asm_28544
+.done_steel
 	push bc
-	ld hl, $1
+	ld hl, MON_ITEM
 	add hl, bc
-	ld bc, $1a
+	ld bc, MON_HAPPINESS - MON_ITEM
 	call CopyBytes
 	pop bc
 
-	ld hl, $1f
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
@@ -760,9 +757,9 @@
 	inc de
 
 	push bc
-	ld hl, $24
+	ld hl, MON_MAXHP
 	add hl, bc
-	ld bc, 8
+	ld bc, MON_SAT - MON_MAXHP
 	call CopyBytes
 	pop bc
 
@@ -781,19 +778,19 @@
 	ld [BaseSpecialAttack], a
 	pop bc
 
-	ld hl, $a
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
-	ld c, $5
-	ld b, $1
+	ld c, STAT_SATK
+	ld b, TRUE
 	predef CalcPkmnStatC
 
 	pop bc
 	pop de
 
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld [de], a
 	inc de
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld [de], a
 	inc de
 	ld h, b
@@ -801,10 +798,10 @@
 	ret
 ; 28595
 
-Function28595: ; 28595
-	ld de, wc800
-	ld a, EGG
-	ld b, PARTY_LENGTH
+Link_PrepPartyData_Gen2: ; 28595
+	ld de, wLinkData
+	ld a, $fd
+	ld b, 6
 .loop1
 	ld [de], a
 	inc de
@@ -960,31 +957,31 @@
 	push hl
 	ld d, h
 	ld e, l
-	ld bc, wcbea
+	ld bc, wLinkOTPartyMonTypes
 	ld hl, wcbe8
 	ld a, c
 	ld [hli], a
 	ld [hl], b
 	ld hl, OTPartyMon1Species
-	ld c, $6
+	ld c, PARTY_LENGTH
 .loop
 	push bc
-	call Function286ba
+	call .ConvertToGen2
 	pop bc
 	dec c
 	jr nz, .loop
 	pop hl
-	lb bc, 1, 8
+	ld bc, PARTY_LENGTH * REDMON_STRUCT_LENGTH
 	add hl, bc
 	ld de, OTPartyMonOT
-	ld bc, $42
+	ld bc, PARTY_LENGTH * NAME_LENGTH
 	call CopyBytes
 	ld de, OTPartyMonNicknames
-	ld bc, $42
+	ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH
 	jp CopyBytes
 ; 286ba
 
-Function286ba: ; 286ba
+.ConvertToGen2: ; 286ba
 	ld b, h
 	ld c, l
 	ld a, [de]
@@ -998,7 +995,7 @@
 	ld a, [wd265]
 	ld [bc], a
 	ld [CurSpecies], a
-	ld hl, $22
+	ld hl, MON_HP
 	add hl, bc
 	ld a, [de]
 	inc de
@@ -1007,7 +1004,7 @@
 	inc de
 	ld [hl], a
 	inc de
-	ld hl, $20
+	ld hl, MON_STATUS
 	add hl, bc
 	ld a, [de]
 	inc de
@@ -1025,9 +1022,9 @@
 	ld a, l
 	ld [wcbe8], a
 	ld a, h
-	ld [wcbe9], a
+	ld [wcbe8 + 1], a
 	push bc
-	ld hl, $1
+	ld hl, MON_ITEM
 	add hl, bc
 	push hl
 	ld h, d
@@ -1036,7 +1033,7 @@
 	push bc
 	ld a, [hli]
 	ld b, a
-	call Function28771
+	call TimeCapsule_ReplaceTeruSama
 	ld a, b
 	ld [de], a
 	inc de
@@ -1067,29 +1064,29 @@
 	push bc
 	ld d, h
 	ld e, l
-	ld hl, $a
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
-	ld c, $5
-	ld b, $1
+	ld c, STAT_SATK
+	ld b, TRUE
 	predef CalcPkmnStatC
 	pop bc
 	pop hl
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld [hli], a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld [hli], a
 	push hl
 	push bc
-	ld hl, $a
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
-	ld c, $6
-	ld b, $1
+	ld c, STAT_SDEF
+	ld b, TRUE
 	predef CalcPkmnStatC
 	pop bc
 	pop hl
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld [hli], a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld [hli], a
 	push hl
 	ld hl, $1b
@@ -1108,7 +1105,7 @@
 	ret
 ; 28771
 
-Function28771: ; 28771
+TimeCapsule_ReplaceTeruSama: ; 28771
 	ld a, b
 	and a
 	ret z
@@ -1145,73 +1142,73 @@
 	db ITEM_C3, BERRY
 	db ITEM_DC, BERRY
 	db HM_08,   BERRY
-	db $ff,     BERRY
-	db $00
+	db -1,      BERRY
+	db  0
 ; 2879e
 
-Function2879e: ; 2879e
-.asm_2879e
+Link_CopyOTData: ; 2879e
+.loop
 	ld a, [hli]
 	cp $fe
-	jr z, .asm_2879e
+	jr z, .loop
 	ld [de], a
 	inc de
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_2879e
+	jr nz, .loop
 	ret
 ; 287ab
 
-Function287ab: ; 287ab
+Link_CopyRandomNumbers: ; 287ab
 	ld a, [hLinkPlayerNumber]
 	cp $2
 	ret z
 	ld hl, EnemyMonSpecies
-	call Function287d8
+	call Link_FindFirstNonControlCharacter_AllowZero
 	ld de, LinkBattleRNs
-	ld c, $a
-.asm_287bb
+	ld c, 10
+.loop
 	ld a, [hli]
 	cp $fe
-	jr z, .asm_287bb
+	jr z, .loop
 	cp $fd
-	jr z, .asm_287bb
+	jr z, .loop
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_287bb
+	jr nz, .loop
 	ret
 ; 287ca
 
-Function287ca: ; 287ca
-.asm_287ca
+Link_FindFirstNonControlCharacter_SkipZero: ; 287ca
+.loop
 	ld a, [hli]
 	and a
-	jr z, .asm_287ca
+	jr z, .loop
 	cp $fd
-	jr z, .asm_287ca
+	jr z, .loop
 	cp $fe
-	jr z, .asm_287ca
+	jr z, .loop
 	dec hl
 	ret
 ; 287d8
 
-Function287d8: ; 287d8
-.asm_287d8
+Link_FindFirstNonControlCharacter_AllowZero: ; 287d8
+.loop
 	ld a, [hli]
 	cp $fd
-	jr z, .asm_287d8
+	jr z, .loop
 	cp $fe
-	jr z, .asm_287d8
+	jr z, .loop
 	dec hl
 	ret
 ; 287e3
 
-Function287e3: ; 287e3
+InitTradeMenuDisplay: ; 287e3
 	call ClearScreen
-	call Function28ef8
-	callba Function16d673
+	call LoadTradeScreenBorder
+	callba InitTradeSpeciesList
 	xor a
 	ld hl, wOtherPlayerLinkMode
 rept 3
@@ -1218,254 +1215,254 @@
 	ld [hli], a
 endr
 	ld [hl], a
-	ld a, $1
-	ld [MenuSelection2], a
+	ld a, 1
+	ld [wMenuCursorY], a
 	inc a
 	ld [wPlayerLinkAction], a
-	jp Function2888b
+	jp LinkTrade_PlayerPartyMenu
 ; 28803
 
-Function28803: ; 28803
-	ld a, $1
+LinkTrade_OTPartyMenu: ; 28803
+	ld a, OTPARTYMON
 	ld [MonType], a
-	ld a, $c1
-	ld [wcfa8], a
+	ld a, A_BUTTON | D_UP | D_DOWN
+	ld [wMenuJoypadFilter], 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 [w2DMenuNumRows], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, 9
+	ld [w2DMenuCursorInitY], a
+	ld a, 6
+	ld [w2DMenuCursorInitX], a
+	ld a, 1
+	ld [wMenuCursorX], a
+	ln a, 1, 0
+	ld [w2DMenuCursorOffsets], a
 	ld a, $20
-	ld [wcfa5], a
+	ld [w2DMenuFlags1], a
 	xor a
-	ld [wcfa6], a
+	ld [w2DMenuFlags2], a
 
-Function28835: ; 28835
-	callba Function16d70c
+LinkTradeOTPartymonMenuLoop: ; 28835
+	callba LinkTradeMenu
 	ld a, d
 	and a
-	jp z, Function2891c
-	bit 0, a
-	jr z, .asm_2885b
+	jp z, LinkTradePartiesMenuMasterLoop
+	bit A_BUTTON_F, a
+	jr z, .not_a_button
 	ld a, $1
 	ld [wd263], a
 	callab Function50db9
 	ld hl, OTPartyMon1Species
-	callba Function4d319
-	jp Function2891c
+	callba LinkMonStatsScreen
+	jp LinkTradePartiesMenuMasterLoop
 
-.asm_2885b
-	bit 6, a
-	jr z, .asm_28883
-	ld a, [MenuSelection2]
+.not_a_button
+	bit D_UP_F, a
+	jr z, .not_d_up
+	ld a, [wMenuCursorY]
 	ld b, a
 	ld a, [OTPartyCount]
 	cp b
-	jp nz, Function2891c
+	jp nz, LinkTradePartiesMenuMasterLoop
 	xor a
 	ld [MonType], a
-	call Function1bf7
+	call HideCursor
 	push hl
 	push bc
 	ld bc, NAME_LENGTH
 	add hl, bc
-	ld [hl], $7f
+	ld [hl], " "
 	pop bc
 	pop hl
 	ld a, [PartyCount]
-	ld [MenuSelection2], a
-	jr Function2888b
+	ld [wMenuCursorY], a
+	jr LinkTrade_PlayerPartyMenu
 
-.asm_28883
-	bit 7, a
-	jp z, Function2891c
+.not_d_up
+	bit D_DOWN_F, a
+	jp z, LinkTradePartiesMenuMasterLoop
 	jp Function28ac9
 ; 2888b
 
-Function2888b: ; 2888b
-	callba Function49856
+LinkTrade_PlayerPartyMenu: ; 2888b
+	callba InitMG_Mobile_LinkTradePalMap
 	xor a
 	ld [MonType], a
-	ld a, $c1
-	ld [wcfa8], a
+	ld a, A_BUTTON | D_UP | D_DOWN
+	ld [wMenuJoypadFilter], 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 [w2DMenuNumRows], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, 1
+	ld [w2DMenuCursorInitY], a
+	ld a, 6
+	ld [w2DMenuCursorInitX], a
+	ld a, 1
+	ld [wMenuCursorX], a
+	ln a, 1, 0
+	ld [w2DMenuCursorOffsets], a
 	ld a, $20
-	ld [wcfa5], a
+	ld [w2DMenuFlags1], a
 	xor a
-	ld [wcfa6], a
-	call Function3200
+	ld [w2DMenuFlags2], a
+	call WaitBGMap2
 
-Function288c5: ; 288c5
-	callba Function16d70c
+LinkTradePartymonMenuLoop: ; 288c5
+	callba LinkTradeMenu
 	ld a, d
 	and a
-	jr nz, .asm_288d2
-	jp Function2891c
+	jr nz, .check_joypad
+	jp LinkTradePartiesMenuMasterLoop
 
-.asm_288d2
-	bit 0, a
-	jr z, .asm_288d9
+.check_joypad
+	bit A_BUTTON_F, a
+	jr z, .not_a_button
 	jp Function28926
 
-.asm_288d9
-	bit 7, a
-	jr z, .asm_288fe
-	ld a, [MenuSelection2]
+.not_a_button
+	bit D_DOWN_F, a
+	jr z, .not_d_down
+	ld a, [wMenuCursorY]
 	dec a
-	jp nz, Function2891c
-	ld a, $1
+	jp nz, LinkTradePartiesMenuMasterLoop
+	ld a, OTPARTYMON
 	ld [MonType], a
-	call Function1bf7
+	call HideCursor
 	push hl
 	push bc
 	ld bc, NAME_LENGTH
 	add hl, bc
-	ld [hl], $7f
+	ld [hl], " "
 	pop bc
 	pop hl
-	ld a, $1
-	ld [MenuSelection2], a
-	jp Function28803
+	ld a, 1
+	ld [wMenuCursorY], a
+	jp LinkTrade_OTPartyMenu
 
-.asm_288fe
-	bit 6, a
-	jr z, Function2891c
-	ld a, [MenuSelection2]
+.not_d_down
+	bit D_UP_F, a
+	jr z, LinkTradePartiesMenuMasterLoop
+	ld a, [wMenuCursorY]
 	ld b, a
 	ld a, [PartyCount]
 	cp b
-	jr nz, Function2891c
-	call Function1bf7
+	jr nz, LinkTradePartiesMenuMasterLoop
+	call HideCursor
 	push hl
 	push bc
 	ld bc, NAME_LENGTH
 	add hl, bc
-	ld [hl], $7f
+	ld [hl], " "
 	pop bc
 	pop hl
 	jp Function28ade
 ; 2891c
 
-Function2891c: ; 2891c
+LinkTradePartiesMenuMasterLoop: ; 2891c
 	ld a, [MonType]
 	and a
-	jp z, Function288c5
-	jp Function28835
+	jp z, LinkTradePartymonMenuLoop ; PARTYMON
+	jp LinkTradeOTPartymonMenuLoop  ; OTPARTYMON
 ; 28926
 
 Function28926: ; 28926
 	call LoadTileMapToTempTileMap
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
 	hlcoord 0, 15
-	ld b, $1
-	ld c, $12
+	ld b, 1
+	ld c, 18
 	call Predef_LinkTextbox
 	hlcoord 2, 16
-	ld de, String28ab4
+	ld de, .String_Stats_Trade
 	call PlaceString
 	callba Function4d354
 
-.asm_28946
-	ld a, $7f
+.joy_loop
+	ld a, " "
 	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
+	ld a, A_BUTTON | B_BUTTON | D_RIGHT
+	ld [wMenuJoypadFilter], a
+	ld a, 1
+	ld [w2DMenuNumRows], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, 16
+	ld [w2DMenuCursorInitY], a
+	ld a, 1
+	ld [w2DMenuCursorInitX], a
+	ld a, 1
+	ld [wMenuCursorY], a
+	ld [wMenuCursorX], a
+	ln a, 2, 0
+	ld [w2DMenuCursorOffsets], 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
+	ld [w2DMenuFlags1], a
+	ld [w2DMenuFlags2], a
+	call ScrollingMenuJoypad
+	bit D_RIGHT_F, a
+	jr nz, .d_right
+	bit B_BUTTON_F, a
+	jr z, .show_stats
+.b_button
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	call Call_LoadTempTileMapToTileMap
-	jp Function2888b
+	jp LinkTrade_PlayerPartyMenu
 
-.asm_2898d
-	ld a, $7f
+.d_right
+	ld a, " "
 	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
+	ld a, A_BUTTON | B_BUTTON | D_LEFT
+	ld [wMenuJoypadFilter], a
+	ld a, 1
+	ld [w2DMenuNumRows], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, 16
+	ld [w2DMenuCursorInitY], a
+	ld a, 11
+	ld [w2DMenuCursorInitX], a
+	ld a, 1
+	ld [wMenuCursorY], a
+	ld [wMenuCursorX], a
+	ln a, 2, 0
+	ld [w2DMenuCursorOffsets], 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
+	ld [w2DMenuFlags1], a
+	ld [w2DMenuFlags2], a
+	call ScrollingMenuJoypad
+	bit D_LEFT_F, a
+	jp nz, .joy_loop
+	bit B_BUTTON_F, a
+	jr nz, .b_button
+	jr .try_trade
 
-.asm_289cd
+.show_stats
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, $4
 	ld [wd263], a
 	callab Function50db9
-	callba Function4d319
+	callba LinkMonStatsScreen
 	call Call_LoadTempTileMapToTileMap
 	hlcoord 6, 1
 	lb bc, 6, 1
 	ld a, " "
-	call Function28b77
+	call LinkEngine_FillBox
 	hlcoord 17, 1
 	lb bc, 6, 1
 	ld a, " "
-	call Function28b77
-	jp Function2888b
+	call LinkEngine_FillBox
+	jp LinkTrade_PlayerPartyMenu
 
-.asm_289fe
-	call Function1bee
+.try_trade
+	call PlaceHollowCursor
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	dec a
 	ld [wd002], a
 	ld [wPlayerLinkAction], a
@@ -1472,29 +1469,29 @@
 	callba Function16d6ce
 	ld a, [wOtherPlayerLinkMode]
 	cp $f
-	jp z, Function287e3
+	jp z, InitTradeMenuDisplay
 	ld [wd003], a
 	call Function28b68
-	ld c, $64
+	ld c, 100
 	call DelayFrames
-	callba Functionfb57e
-	jr c, .asm_28a58
+	callba ValidateOTTrademon
+	jr c, .abnormal
 	callba Functionfb5dd
-	jp nc, Function28b87
+	jp nc, LinkTrade
 	xor a
 	ld [wcf57], a
 	ld [wOtherPlayerLinkAction], a
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, 18
 	call Predef_LinkTextbox
 	callba Function4d354
-	ld hl, UnknownText_0x28aaf
+	ld hl, .Text_CantTradeLastMon
 	bccoord 1, 14
 	call PlaceWholeStringInBoxAtOnce
-	jr .asm_28a89
+	jr .cancel_trade
 
-.asm_28a58
+.abnormal
 	xor a
 	ld [wcf57], a
 	ld [wOtherPlayerLinkAction], a
@@ -1507,41 +1504,41 @@
 	ld [wd265], a
 	call GetPokemonName
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, 18
 	call Predef_LinkTextbox
 	callba Function4d354
-	ld hl, UnknownText_0x28ac4
+	ld hl, .Text_Abnormal
 	bccoord 1, 14
 	call PlaceWholeStringInBoxAtOnce
 
-.asm_28a89
+.cancel_trade
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, 18
 	call Predef_LinkTextbox
 	hlcoord 1, 14
-	ld de, String28ece
+	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
 	ld a, $1
 	ld [wPlayerLinkAction], a
 	callba Function16d6ce
-	ld c, $64
+	ld c, 100
 	call DelayFrames
-	jp Function287e3
+	jp InitTradeMenuDisplay
 ; 28aaf
 
 
-UnknownText_0x28aaf: ; 0x28aaf
+.Text_CantTradeLastMon: ; 0x28aaf
 	; If you trade that #MON, you won't be able to battle.
 	text_jump UnknownText_0x1c41b1
 	db "@"
 ; 0x28ab4
 
-String28ab4: ; 28ab4
+.String_Stats_Trade: ; 28ab4
 	db "STATS     TRADE@"
 
-UnknownText_0x28ac4: ; 0x28ac4
+.Text_Abnormal: ; 0x28ac4
 	; Your friend's @  appears to be abnormal!
 	text_jump UnknownText_0x1c41e6
 	db "@"
@@ -1549,46 +1546,45 @@
 
 
 Function28ac9: ; 28ac9
-	ld a, [MenuSelection2]
-	cp $1
-	jp nz, Function2891c
-	call Function1bf7
+	ld a, [wMenuCursorY]
+	cp 1
+	jp nz, LinkTradePartiesMenuMasterLoop
+	call HideCursor
 	push hl
 	push bc
 	ld bc, NAME_LENGTH
 	add hl, bc
-	ld [hl], $7f
+	ld [hl], " "
 	pop bc
 	pop hl
-
 Function28ade: ; 28ade
-.asm_28ade
-	ld a, $ed
+.loop1
+	ld a, "▶"
 	ldcoord_a 9, 17
-.asm_28ae3
+.loop2
 	call JoyTextDelay
 	ld a, [hJoyLast]
 	and a
-	jr z, .asm_28ae3
-	bit 0, a
-	jr nz, .asm_28b0b
+	jr z, .loop2
+	bit A_BUTTON_F, a
+	jr nz, .a_button
 	push af
 	ld a, " "
 	ldcoord_a 9, 17
 	pop af
-	bit 6, a
-	jr z, .asm_28b03
+	bit D_UP_F, a
+	jr z, .d_up
 	ld a, [OTPartyCount]
-	ld [MenuSelection2], a
-	jp Function28803
+	ld [wMenuCursorY], a
+	jp LinkTrade_OTPartyMenu
 
-.asm_28b03
+.d_up
 	ld a, $1
-	ld [MenuSelection2], a
-	jp Function2888b
+	ld [wMenuCursorY], a
+	jp LinkTrade_PlayerPartyMenu
 
-.asm_28b0b
-	ld a, $ec
+.a_button
+	ld a, "▷"
 	ldcoord_a 9, 17
 	ld a, $f
 	ld [wPlayerLinkAction], a
@@ -1595,14 +1591,13 @@
 	callba Function16d6ce
 	ld a, [wOtherPlayerLinkMode]
 	cp $f
-	jr nz, .asm_28ade
-
+	jr nz, .loop1
 Function28b22: ; 28b22
 	call RotateThreePalettesRight
 	call ClearScreen
 	ld b, SCGB_08
 	call GetSGBLayout
-	call Function3200
+	call WaitBGMap2
 	xor a
 	ld [wcfbb], a
 	xor a
@@ -1616,6 +1611,7 @@
 ; 28b42
 
 Function28b42: ; 28b42
+; unreferenced
 	hlcoord 0, 16
 	ld a, "┘"
 	ld bc, 2 * SCREEN_WIDTH
@@ -1625,11 +1621,11 @@
 	ld bc, SCREEN_WIDTH - 2
 	call ByteFill
 	hlcoord 2, 16
-	ld de, String_28b61
+	ld de, .Cancel
 	jp PlaceString
 ; 28b61
 
-String_28b61: ; 28b61
+.Cancel: ; 28b61
 	db "CANCEL@"
 ; 28b68
 
@@ -1638,28 +1634,28 @@
 	hlcoord 6, 9
 	ld bc, SCREEN_WIDTH
 	call AddNTimes
-	ld [hl], $ec
+	ld [hl], "▷"
 	ret
 ; 28b77
 
-Function28b77: ; 28b77
-.asm_28b77
+LinkEngine_FillBox: ; 28b77
+.row
 	push bc
 	push hl
-.asm_28b79
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_28b79
+	jr nz, .col
 	pop hl
 	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_28b77
+	jr nz, .row
 	ret
 ; 28b87
 
-Function28b87: ; 28b87
+LinkTrade: ; 28b87
 	xor a
 	ld [wcf57], a
 	ld [wOtherPlayerLinkAction], a
@@ -1693,39 +1689,39 @@
 	call PlaceWholeStringInBoxAtOnce
 	call LoadStandardMenuDataHeader
 	hlcoord 10, 7
-	ld b, $3
-	ld c, $7
+	ld b, 3
+	ld c, 7
 	call Predef_LinkTextbox
 	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
+	ld a, 8
+	ld [w2DMenuCursorInitY], a
+	ld a, 11
+	ld [w2DMenuCursorInitX], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, 2
+	ld [w2DMenuNumRows], a
 	xor a
-	ld [wcfa5], a
-	ld [wcfa6], a
+	ld [w2DMenuFlags1], a
+	ld [w2DMenuFlags2], a
 	ld a, $20
-	ld [wcfa7], a
-	ld a, $3
-	ld [wcfa8], a
-	ld a, $1
-	ld [MenuSelection2], a
-	ld [wcfaa], a
+	ld [w2DMenuCursorOffsets], a
+	ld a, A_BUTTON | B_BUTTON
+	ld [wMenuJoypadFilter], a
+	ld a, 1
+	ld [wMenuCursorY], a
+	ld [wMenuCursorX], a
 	callba Function4d354
-	call Function1bd3
+	call ScrollingMenuJoypad
 	push af
 	call Call_ExitMenu
-	call Function3200
+	call WaitBGMap2
 	pop af
 	bit 1, a
 	jr nz, .asm_28c33
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	jr z, .asm_28c54
 
@@ -1737,7 +1733,7 @@
 	ld c, 18
 	call Predef_LinkTextbox
 	hlcoord 1, 14
-	ld de, String28ece
+	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
 	callba Function16d6ce
 	jp Function28ea3
@@ -1754,7 +1750,7 @@
 	ld c, 18
 	call Predef_LinkTextbox
 	hlcoord 1, 14
-	ld de, String28ece
+	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
 	jp Function28ea3
 
@@ -1837,7 +1833,7 @@
 	callba GetCaughtGender
 	ld a, c
 	ld [wPlayerTrademonCaughtData], a
-	ld hl, wd26b
+	ld hl, OTPlayerName
 	ld de, wOTTrademonSenderName
 	ld bc, NAME_LENGTH
 	call CopyBytes
@@ -1886,12 +1882,12 @@
 	ld [wd002], a
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	callab Functione039
+	callab RemoveMonFromPartyOrBox
 	ld a, [PartyCount]
 	dec a
 	ld [CurPartyMon], a
 	ld a, $1
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	ld a, [wd003]
 	push af
 	ld hl, OTPartySpecies
@@ -1937,7 +1933,7 @@
 	ld [CurPartyMon], a
 	callab EvolvePokemon
 	call ClearScreen
-	call Function28ef8
+	call LoadTradeScreenBorder
 	call Function28eff
 	callba Function4d354
 	ld b, $1
@@ -1991,14 +1987,14 @@
 	call DelayFrames
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
-	jp z, Function2805d
-	jp Function28177
+	jp z, TimeCapsule
+	jp Gen2ToGen2LinkComms
 ; 28ea3
 
 Function28ea3: ; 28ea3
 	ld c, 100
 	call DelayFrames
-	jp Function287e3
+	jp InitTradeMenuDisplay
 ; 28eab
 
 String28eab: ; 28eab
@@ -2014,7 +2010,7 @@
 String28ebd: ; 28ebd
 	db   "Trade completed!@"
 
-String28ece: ; 28ece
+String_TooBadTheTradeWasCanceled: ; 28ece
 	db   "Too bad! The trade"
 	next "was canceled!@"
 
@@ -2026,8 +2022,8 @@
 	ret
 ; 28ef8
 
-Function28ef8: ; 28ef8
-	callba Function16d696
+LoadTradeScreenBorder: ; 28ef8
+	callba _LoadTradeScreenBorder
 	ret
 ; 28eff
 
@@ -2038,6 +2034,7 @@
 ; 28f09
 
 Function28f09: ; 28f09
+; unreferenced
 	hlcoord 0, 0
 	ld b, 6
 	ld c, 18
@@ -2046,7 +2043,7 @@
 	ld b, 6
 	ld c, 18
 	call Predef_LinkTextbox
-	callba Functionfb60d
+	callba PlaceTradePartnerNamesAndParty
 	ret
 ; 28f24
 
@@ -2064,7 +2061,7 @@
 	ld b, PARTY_LENGTH ; 6
 .loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .checkitem
 	cp CHIKORITA ; MEW + 1 ; 151 + 1
 	jr nc, .mon_too_new
@@ -2161,8 +2158,8 @@
 	ret
 ; 29c92
 
-Special_AbortLink: ; 29c92
-	ld c, $3
+WaitForOtherPlayerToExit: ; 29c92
+	ld c, 3
 	call DelayFrames
 	ld a, -1
 	ld [hLinkPlayerNumber], a
@@ -2173,7 +2170,7 @@
 	ld [rSC], a
 	ld a, $81
 	ld [rSC], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [rSB], a
@@ -2188,7 +2185,7 @@
 	ld [rSB], a
 	ld [hSerialReceive], a
 	ld [rSC], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	ld a, -1
 	ld [hLinkPlayerNumber], a
@@ -2295,9 +2292,9 @@
 	jr .asm_29d39
 
 .asm_29d79
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	ld c, $32
 	call DelayFrames
 	ld a, $1
@@ -2348,16 +2345,16 @@
 	call Function29e0c
 	ld a, [ScriptVar]
 	and a
-	jr z, .asm_29e08
-	ld bc, rIE
-.asm_29de0
+	jr z, .vblank
+	ld bc, -1
+.wait
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_29de0
+	jr nz, .wait
 	ld a, [wOtherPlayerLinkMode]
 	cp $5
-	jr nz, .asm_29e03
+	jr nz, .script_var
 	ld a, $6
 	ld [wPlayerLinkAction], a
 	ld hl, wcf5b
@@ -2367,14 +2364,14 @@
 	call Function29e0c
 	ld a, [wOtherPlayerLinkMode]
 	cp $6
-	jr z, .asm_29e08
+	jr z, .vblank
 
-.asm_29e03
+.script_var
 	xor a
 	ld [ScriptVar], a
 	ret
 
-.asm_29e08
+.vblank
 	xor a
 	ld [hVBlank], a
 	ret
@@ -2426,7 +2423,7 @@
 	ld b, $a
 .asm_29e49
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	dec b
 	jr nz, .asm_29e49
 	ret
@@ -2467,9 +2464,9 @@
 	ld a, [wd265]
 	call Function29f17
 	push af
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	pop af
 	ld b, a
 	ld a, [wd265]
@@ -2593,5 +2590,6 @@
 ; 29f54
 
 GFX_29f54: ; 29f54
+; unreferenced
 INCBIN "gfx/unknown/029f54.2bpp"
 ; 29fe4
--- /dev/null
+++ b/engine/link_trade.asm
@@ -1,0 +1,363 @@
+LinkCommsBorderGFX:
+INCBIN "gfx/unknown/16cfc1.2bpp"
+; 16d421
+
+__LoadTradeScreenBorder: ; 16d421
+	ld de, LinkCommsBorderGFX
+	ld hl, VTiles2
+	lb bc, BANK(LinkCommsBorderGFX), 70
+	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 __LoadTradeScreenBorder ; useless to farcall
+	callba Function16d42e ; useless to farcall
+	ld b, SCGB_08
+	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"
+
+_LinkTextbox: ; 16d61d
+	ld h, d
+	ld l, e
+	push bc
+	push hl
+	call .draw_border
+	pop hl
+	pop bc
+
+	ld de, AttrMap - TileMap
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	ld a, $7
+.row
+	push bc
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .row
+	ret
+; 16d640
+
+.draw_border: ; 16d640
+	push hl
+	ld a, $30
+	ld [hli], a
+	inc a
+	call .fill_row
+	inc a
+	ld [hl], a
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+.loop
+	push hl
+	ld a, $33
+	ld [hli], a
+	ld a, " "
+	call .fill_row
+	ld [hl], $34
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	dec b
+	jr nz, .loop
+
+	ld a, $35
+	ld [hli], a
+	ld a, $36
+	call .fill_row
+	ld [hl], $37
+	ret
+; 16d66d
+
+.fill_row: ; 16d66d
+	ld d, c
+.loop4
+	ld [hli], a
+	dec d
+	jr nz, .loop4
+	ret
+; 16d673
+
+InitTradeSpeciesList: ; 16d673
+	call _LoadTradeScreenBorder
+	call Function16d6ae
+	callba InitMG_Mobile_LinkTradePalMap
+	callba PlaceTradePartnerNamesAndParty
+	hlcoord 10, 17
+	ld de, .CANCEL
+	call PlaceString
+	ret
+; 16d68f
+
+.CANCEL: ; 16d68f
+	db "CANCEL@"
+; 16d696
+
+_LoadTradeScreenBorder: ; 16d696
+	call __LoadTradeScreenBorder
+	ret
+; 16d69a
+
+
+LinkComms_LoadPleaseWaitTextboxBorderGFX: ; 16d69a
+	ld de, LinkCommsBorderGFX + $30 tiles
+	ld hl, VTiles2 tile $76
+	lb bc, BANK(LinkCommsBorderGFX), 8
+	call Get2bpp
+	ret
+; 16d6a7
+
+Function16d6a7: ; 16d6a7
+	callba Function49811
+	ret
+; 16d6ae
+
+Function16d6ae: ; 16d6ae
+	call Function16d42e
+	ld hl, Tilemap_16d5cd
+	decoord 0, 0
+	ld bc, 2 * SCREEN_WIDTH
+	call CopyBytes
+	ld hl, Tilemap_16d5f5
+	decoord 0, 16
+	ld bc, 2 * SCREEN_WIDTH
+	call CopyBytes
+	ret
+; 16d6ca
+
+LinkTextbox: ; 16d6ca
+	call _LinkTextbox
+	ret
+; 16d6ce
+
+Function16d6ce: ; 16d6ce
+	call LoadStandardMenuDataHeader
+	call Function16d6e1
+	callba Function87d
+	call Call_ExitMenu
+	call WaitBGMap2
+	ret
+; 16d6e1
+
+Function16d6e1: ; 16d6e1
+	hlcoord 4, 10
+	ld b, 1
+	ld c, 10
+	predef Predef_LinkTextbox
+	hlcoord 5, 11
+	ld de, .Waiting
+	call PlaceString
+	call WaitBGMap
+	call WaitBGMap2
+	ld c, 50
+	jp DelayFrames
+; 16d701
+
+.Waiting: ; 16d701
+	db "WAITING..!@"
+; 16d70c
+
+LinkTradeMenu: ; 16d70c
+	call .MenuAction
+	call .GetJoypad
+	ret
+; 16d713
+
+.GetJoypad: ; 16d713
+	push bc
+	push af
+	ld a, [hJoyLast]
+	and D_PAD
+	ld b, a
+	ld a, [hJoyPressed]
+	and BUTTONS
+	or b
+	ld b, a
+	pop af
+	ld a, b
+	pop bc
+	ld d, a
+	ret
+; 16d725
+
+.MenuAction: ; 16d725
+	ld hl, w2DMenuFlags2
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call .loop
+	pop af
+	ld [hBGMapMode], a
+	ret
+
+.loop
+	call .UpdateCursor
+	call .UpdateBGMapAndOAM
+	call .loop2
+	jr nc, .done
+	callba _2DMenuInterpretJoypad
+	jr c, .done
+	ld a, [w2DMenuFlags1]
+	bit 7, a
+	jr nz, .done
+	call .GetJoypad
+	ld b, a
+	ld a, [wMenuJoypadFilter]
+	and b
+	jr z, .loop
+
+.done
+	ret
+; 16d759
+
+.UpdateBGMapAndOAM: ; 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
+
+.loop2
+	call RTC
+	call .TryAnims
+	ret c
+	ld a, [w2DMenuFlags1]
+	bit 7, a
+	jr z, .loop2
+	and a
+	ret
+; 16d77a
+
+.UpdateCursor: ; 16d77a
+	ld hl, wCursorCurrentTile
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	cp $1f
+	jr nz, .not_currently_selected
+	ld a, [wCursorOffCharacter]
+	ld [hl], a
+	push hl
+	push bc
+	ld bc, PKMN_NAME_LENGTH
+	add hl, bc
+	ld [hl], a
+	pop bc
+	pop hl
+
+.not_currently_selected
+	ld a, [w2DMenuCursorInitY]
+	ld b, a
+	ld a, [w2DMenuCursorInitX]
+	ld c, a
+	call Coord2Tile
+	ld a, [w2DMenuCursorOffsets]
+	swap a
+	and $f
+	ld c, a
+	ld a, [wMenuCursorY]
+	ld b, a
+	xor a
+	dec b
+	jr z, .skip
+.loop3
+	add c
+	dec b
+	jr nz, .loop3
+
+.skip
+	ld c, SCREEN_WIDTH
+	call AddNTimes
+	ld a, [w2DMenuCursorOffsets]
+	and $f
+	ld c, a
+	ld a, [wMenuCursorX]
+	ld b, a
+	xor a
+	dec b
+	jr z, .skip2
+.loop4
+	add c
+	dec b
+	jr nz, .loop4
+
+.skip2
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	cp $1f
+	jr z, .cursor_already_there
+	ld [wCursorOffCharacter], a
+	ld [hl], $1f
+	push hl
+	push bc
+	ld bc, PKMN_NAME_LENGTH
+	add hl, bc
+	ld [hl], $1f
+	pop bc
+	pop hl
+.cursor_already_there
+	ld a, l
+	ld [wCursorCurrentTile], a
+	ld a, h
+	ld [wCursorCurrentTile + 1], a
+	ret
+; 16d7e7
+
+.TryAnims: ; 16d7e7
+	ld a, [w2DMenuFlags1]
+	bit 6, a
+	jr z, .skip_anims
+	callba PlaySpriteAnimationsAndDelayFrame
+.skip_anims
+	call JoyTextDelay
+	call .GetJoypad
+	and a
+	ret z
+	scf
+	ret
+; 16d7fe
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -27,7 +27,7 @@
 	call ByteFill
 	ld a, MON_ITEM
 	call GetPartyParamLocation
-	ld [hl], $0
+	ld [hl], 0
 	ld hl, sMailboxCount
 	inc [hl]
 	call CloseSRAM
@@ -177,7 +177,7 @@
 	jr c, .close_sram_return
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ld a, $1
 
 .close_sram_return
@@ -208,12 +208,12 @@
 	push bc
 	push af
 	ld hl, sPartyMail
-	ld bc, $2f
+	ld bc, MAIL_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld hl, wd002
-	ld bc, $21
+	ld bc, MAIL_MSG_LENGTH + 1
 	ld a, BANK(sPartyMail)
 	call GetSRAMBank
 	call CopyBytes
@@ -222,7 +222,7 @@
 	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
 	call AddNTimes
-	ld bc, $a
+	ld bc, NAME_LENGTH - 1
 	call CopyBytes
 	pop af
 	ld hl, PartyMon1ID
@@ -315,7 +315,7 @@
 	jr z, .nomail
 	call LoadStandardMenuDataHeader
 	call MailboxPC
-	jp WriteBackup
+	jp CloseWindow
 
 .nomail
 	ld hl, .EmptyMailboxText
@@ -355,7 +355,7 @@
 	ret
 ; 0x447da
 
-Function447da: ; 0x447da
+MailboxPC_GetMailAuthor: ; 0x447da
 	dec a
 	ld hl, sMailbox1Author
 	ld bc, MAIL_STRUCT_LENGTH
@@ -373,10 +373,10 @@
 	ret
 ; 0x447fb
 
-Function447fb: ; 0x447fb
+MailboxPC_PrintMailAuthor: ; 0x447fb
 	push de
 	ld a, [MenuSelection]
-	call Function447da
+	call MailboxPC_GetMailAuthor
 	pop hl
 	jp PlaceString
 ; 0x44806
@@ -384,11 +384,11 @@
 MailboxPC: ; 0x44806
 	xor a
 	ld [OBPals + 8 * 6], a
-	ld a, $1
+	ld a, 1
 	ld [wCurMessageIndex], a
 .loop
 	call InitMail
-	ld hl, MenuData4494c
+	ld hl, .TopMenuDataHeader
 	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
@@ -399,16 +399,16 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [OBPals + 8 * 6]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [OBPals + 8 * 6], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wCurMessageIndex], a
 
-	ld a, [wcf73]
-	cp $2
+	ld a, [wMenuJoypad]
+	cp B_BUTTON
 	jr z, .exit
-	call Function4484a
+	call .Submenu
 	jr .loop
 
 .exit
@@ -416,18 +416,18 @@
 	ret
 ; 0x4484a
 
-Function4484a: ; 0x4484a
-	ld hl, MenuData44964
+.Submenu: ; 0x4484a
+	ld hl, .SubMenuDataHeader
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
-	jr c, .exit
-	ld a, [MenuSelection2]
+	jr c, .subexit
+	ld a, [wMenuCursorY]
 	dec a
 	ld hl, .JumpTable
 	rst JumpTable
 
-.exit
+.subexit
 	ret
 ; 0x44861
 
@@ -443,7 +443,7 @@
 	dec a
 	ld b, a
 	call ReadMailMessage
-	jp ReturnToCallingMenu
+	jp CloseSubmenu
 ; 0x44877
 
 .PutInPack ; 0x44877
@@ -455,7 +455,7 @@
 	ld a, [MenuSelection]
 	dec a
 	call .GetMailType
-	ld a, $1
+	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
 	ld hl, NumItems
 	call ReceiveItem
@@ -539,7 +539,7 @@
 	call PrintText
 
 .exit2
-	jp ReturnToCallingMenu
+	jp CloseSubmenu
 ; 0x4493c
 
 .HoldingMailText ; 0x4493c
@@ -557,30 +557,30 @@
 .Cancel
 	ret
 
-MenuData4494c: ; 0x4494c
+.TopMenuDataHeader: ; 0x4494c
 	db %01000000 ; flags
 	db 1, 8 ; start coords
 	db 10, 18 ; end coords
-	dw .MenuData2
+	dw .TopMenuData2
 	db 1 ; default option
 
-.MenuData2
+.TopMenuData2
 	db %00010000 ; flags
 	db 4, 0 ; rows/columns?
 	db 1 ; horizontal spacing?
 	dbw 0, wMailboxCount ; text pointer
-	dba Function447fb
-	dbw 0,0
-	dbw 0,0
+	dba MailboxPC_PrintMailAuthor
+	dba NULL
+	dba NULL
 
-MenuData44964: ; 0x44964
+.SubMenuDataHeader: ; 0x44964
 	db %01000000 ; flags
-	db 0, 0 ; start coords
-	db 9, $d ; end coords
-	dw .MenuData2
+	db 0,  0 ; start coords
+	db 9, 13 ; end coords
+	dw .SubMenuData2
 	db 1 ; default option
 
-.MenuData2
+.SubMenuData2
 	db %10000000 ; flags
 	db 4 ; items
 	db "READ MAIL@"
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -11,17 +11,17 @@
 	call SetPalettes
 	ld hl, GameTimerPause
 	res 0, [hl]
-	call Function49da4
-	ld [wcf76], a
-	call Function49e09
-	ld hl, MenuDataHeader_0x49d14
+	call MainMenu_GetWhichMenu
+	ld [wWhichIndexSet], a
+	call MainMenu_PrintCurrentTimeAndDay
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
-	call Function49de4
-	call WriteBackup
+	call MainMenuJoypadLoop
+	call CloseWindow
 	jr c, .quit
 	call ClearTileMap
 	ld a, [MenuSelection]
-	ld hl, Jumptable_49d60
+	ld hl, .Jumptable
 	rst JumpTable
 	jr MainMenu
 
@@ -29,23 +29,23 @@
 	ret
 ; 49d14
 
-MenuDataHeader_0x49d14: ; 49d14
+.MenuDataHeader: ; 49d14
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 07, 16 ; end coords
-	dw MenuData2_0x49d1c
+	dw .MenuData2
 	db 1 ; default option
 ; 49d1c
 
-MenuData2_0x49d1c: ; 49d1c
+.MenuData2: ; 49d1c
 	db $80 ; flags
 	db 0 ; items
 	dw MainMenuItems
-	dw Function1f79
-	dw MainMenuText
+	dw PlaceMenuStrings
+	dw .Strings
 ; 49d20
 
-MainMenuText: ; 49d24
+.Strings: ; 49d24
 	db "CONTINUE@"
 	db "NEW GAME@"
 	db "OPTION@"
@@ -53,7 +53,8 @@
 	db "MOBILE@"
 	db "MOBILE STUDIUM@"
 
-Jumptable_49d60: ; 0x49d60
+.Jumptable: ; 0x49d60
+	
 	dw MainMenu_Continue
 	dw MainMenu_NewGame
 	dw MainMenu_Options
@@ -75,7 +76,7 @@
 	db 2
 	db NEW_GAME
 	db OPTION
-	db $ff
+	db -1
 
 ContinueMenu: ; 0x49d70
 	db 3
@@ -82,7 +83,7 @@
 	db CONTINUE
 	db NEW_GAME
 	db OPTION
-	db $ff
+	db -1
 
 MobileMysteryMenu: ; 0x49d75
 	db 5
@@ -91,7 +92,7 @@
 	db OPTION
 	db MYSTERY_GIFT
 	db MOBILE
-	db $ff
+	db -1
 
 MobileMenu: ; 0x49d7c
 	db 4
@@ -99,7 +100,7 @@
 	db NEW_GAME
 	db OPTION
 	db MOBILE
-	db $ff
+	db -1
 
 MobileStudiumMenu: ; 0x49d82
 	db 5
@@ -108,7 +109,7 @@
 	db OPTION
 	db MOBILE
 	db MOBILE_STUDIUM
-	db $ff
+	db -1
 
 MysteryMobileStudiumMenu: ; 0x49d89
 	db 6
@@ -118,7 +119,7 @@
 	db MYSTERY_GIFT
 	db MOBILE
 	db MOBILE_STUDIUM
-	db $ff
+	db -1
 
 MysteryMenu: ; 0x49d91
 	db 4
@@ -126,7 +127,7 @@
 	db NEW_GAME
 	db OPTION
 	db MYSTERY_GIFT
-	db $ff
+	db -1
 
 MysteryStudiumMenu: ; 0x49d97
 	db 5
@@ -135,7 +136,7 @@
 	db OPTION
 	db MYSTERY_GIFT
 	db MOBILE_STUDIUM
-	db $ff
+	db -1
 
 StudiumMenu: ; 0x49d9e
 	db 4
@@ -143,10 +144,10 @@
 	db NEW_GAME
 	db OPTION
 	db MOBILE_STUDIUM
-	db $ff
+	db -1
 
 
-Function49da4: ; 49da4
+MainMenu_GetWhichMenu: ; 49da4
 	nop
 	nop
 	nop
@@ -153,7 +154,7 @@
 	ld a, [wSaveFileExists]
 	and a
 	jr nz, .next
-	ld a, $0
+	ld a, $0 ; New Game
 	ret
 
 .next
@@ -164,12 +165,12 @@
 	ld a, BANK(sNumDailyMysteryGiftPartnerIDs)
 	call GetSRAMBank
 	ld a, [sNumDailyMysteryGiftPartnerIDs]
-	cp $ff
+	cp -1
 	call CloseSRAM
-	jr nz, .done
+	jr nz, .mystery_gift
 	ld a, [StatusFlags]
 	bit 7, a
-	ld a, $1
+	ld a, $1 ; Continue
 	jr z, .ok
 	jr .ok
 
@@ -177,10 +178,10 @@
 	jr .ok2
 
 .ok2
-	ld a, $1
+	ld a, $1 ; Continue
 	ret
 
-.done
+.mystery_gift
 	ld a, [StatusFlags]
 	bit 7, a
 	jr z, .ok3
@@ -190,47 +191,47 @@
 	jr .ok4
 
 .ok4
-	ld a, $6
+	ld a, $6 ; Mystery Gift
 	ret
 ; 49de4
 
-Function49de4: ; 49de4
+MainMenuJoypadLoop: ; 49de4
 	call SetUpMenu
-.asm_49de7
-	call Function49e09
-	ld a, [wcfa5]
+.loop
+	call MainMenu_PrintCurrentTimeAndDay
+	ld a, [w2DMenuFlags1]
 	set 5, a
-	ld [wcfa5], a
+	ld [w2DMenuFlags1], a
 	call Function1f1a
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_49e07
-	cp $1
-	jr z, .asm_49e02
-	jr .asm_49de7
+	ld a, [wMenuJoypad]
+	cp B_BUTTON
+	jr z, .b_button
+	cp A_BUTTON
+	jr z, .a_button
+	jr .loop
 
-.asm_49e02
+.a_button
 	call PlayClickSFX
 	and a
 	ret
 
-.asm_49e07
+.b_button
 	scf
 	ret
 ; 49e09
 
-Function49e09: ; 49e09
+MainMenu_PrintCurrentTimeAndDay: ; 49e09
 	ld a, [wSaveFileExists]
 	and a
 	ret z
 	xor a
 	ld [hBGMapMode], a
-	call Function49e27
+	call .PlaceBox
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
-	call Function49e3d
+	set NO_TEXT_SCROLL, [hl]
+	call .PlaceTime
 	pop af
 	ld [Options], a
 	ld a, $1
@@ -239,34 +240,34 @@
 ; 49e27
 
 
-Function49e27: ; 49e27
+.PlaceBox: ; 49e27
 	call CheckRTCStatus
 	and $80
-	jr nz, .asm_49e39
+	jr nz, .TimeFail
 	hlcoord 0, 14
-	ld b, $2
-	ld c, $12
+	ld b, 2
+	ld c, 18
 	call TextBox
 	ret
 
-.asm_49e39
+.TimeFail
 	call SpeechTextBox
 	ret
 ; 49e3d
 
 
-Function49e3d: ; 49e3d
+.PlaceTime: ; 49e3d
 	ld a, [wSaveFileExists]
 	and a
 	ret z
 	call CheckRTCStatus
 	and $80
-	jp nz, Function49e75
+	jp nz, .PrintTimeNotSet
 	call UpdateTime
 	call GetWeekday
 	ld b, a
 	decoord 1, 15
-	call Function49e91
+	call .PlaceCurrentDay
 	decoord 4, 16
 	ld a, [hHours]
 	ld c, a
@@ -277,13 +278,13 @@
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ret
-; 49e70
 
-; 49e70
+.min
+; unreferenced
 	db "min.@"
 ; 49e75
 
-Function49e75: ; 49e75
+.PrintTimeNotSet: ; 49e75
 	hlcoord 1, 14
 	ld de, .TimeNotSet
 	call PlaceString
@@ -294,12 +295,13 @@
 	db "TIME NOT SET@"
 ; 49e8c
 
-UnknownText_0x49e8c: ; 49e8c
+.UnusedText ; 49e8c
+	; Clock time unknown
 	text_jump UnknownText_0x1c5182
 	db "@"
 ; 49e91
 
-Function49e91: ; 49e91
+.PlaceCurrentDay: ; 49e91
 	push de
 	ld hl, .Days
 	ld a, b
@@ -333,7 +335,7 @@
 	call ClearTileMap
 	call LoadFontsExtra
 	call LoadStandardFont
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	ret
 ; 49ee0
 
@@ -357,886 +359,3 @@
 	callba MysteryGift
 	ret
 ; 49efc
-
-MainMenu_Mobile: ; 49efc
-	call ClearBGPalettes
-	ld a, MUSIC_MOBILE_ADAPTER_MENU
-	ld [wMapMusic], a
-	ld de, MUSIC_MOBILE_ADAPTER_MENU
-	call Function4a6c5
-Function49f0a: ; 49f0a
-	call ClearBGPalettes
-	call Function4a3a7
-	call Function4a492
-	call ClearBGPalettes
-Function49f16: ; 49f16
-	call Function4a071
-	ld c, 12
-	call DelayFrames
-	hlcoord 4, 0
-	ld b, $a
-	ld c, $a
-	call Function48cdc
-	hlcoord 6, 2
-	ld de, MobileString1
-	call PlaceString
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	xor a
-	ld de, String_0x49fe9
-	hlcoord 1, 14
-	call PlaceString
-	call Function3200
-	call SetPalettes
-	call Function1bc9
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-	jr .asm_49f5d
-
-.asm_49f55
-	call Function1bd3
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-
-.asm_49f5d
-	bit 0, a
-	jr nz, .asm_49f67
-	bit 1, a
-	jr nz, .asm_49f84
-	jr .asm_49f97
-
-.asm_49f67
-	ld hl, MenuSelection2
-	ld a, [hl]
-	cp $1
-	jp z, Function4a098
-	cp $2
-	jp z, Function4a0b9
-	cp $3
-	jp z, Function4a0c2
-	cp $4
-	jp z, Function4a100
-	ld a, $1
-	call Function1ff8
-
-.asm_49f84
-	pop bc
-	call ClearBGPalettes
-	call ClearTileMap
-	ld a, MUSIC_MAIN_MENU
-	ld [wMapMusic], a
-	ld de, MUSIC_MAIN_MENU
-	call Function4a6c5
-	ret
-
-.asm_49f97
-	ld hl, MenuSelection2
-	ld a, [hl]
-	dec a
-	ld hl, MobileStrings2
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 13
-	ld b, $4
-	ld c, $12
-	call ClearBox
-	hlcoord 1, 14
-	call PlaceString
-	jp .asm_49fb7
-
-.asm_49fb7
-	call Function4a071
-	pop bc
-	ld hl, MenuSelection2
-	ld [hl], b
-	ld b, $a
-	ld c, $1
-	hlcoord 5, 1
-	call ClearBox
-	jp .asm_49f55
-; 49fcc
-
-
-MobileString1: ; 49fcc
-	db   "めいしフ,ルダー"
-	next "あいさつ"
-	next "プロフィール"
-	next "せ", $1e, "い"
-	next "もどる"
-	db   "@"
-; 49fe9
-
-
-MobileStrings2:
-
-String_0x49fe9: ; 49fe9
-	db   "めいし¯つくったり"
-	next "ほぞんしておける フ,ルダーです@"
-; 4a004
-
-String_0x4a004: ; 4a004
-	db   "モバイルたいせんや じぶんのめいしで"
-	next "つかう あいさつ¯つくります@"
-; 4a026
-
-String_0x4a026: ; 4a026
-	db   "あなた%じゅうしょや ねんれいの"
-	next "せ", $1e, "い¯かえられます@"
-; 4a042
-
-String_0x4a042: ; 4a042
-	db  "モバイルセンター", $1d, "せつぞくするとき"
-	next "ひつような こと¯きめます@"
-; 4a062
-
-String_0x4a062: ; 4a062
-	db   "まえ%がめん ", $1d, "もどります"
-	next "@"
-; 4a071
-
-Function4a071: ; 4a071 (12:6071)
-	ld hl, wcfa1
-	ld a, $2
-	ld [hli], a
-	ld a, $5
-	ld [hli], a
-	ld a, $5
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld [hl], $0
-	set 5, [hl]
-	inc hl
-	xor a
-	ld [hli], a
-	ld a, $20
-	ld [hli], a
-	ld a, $1
-	add $40
-	add $80
-	add $2
-	ld [hli], a
-	ld a, $1
-rept 2
-	ld [hli], a
-endr
-	ret
-
-Function4a098: ; 4a098 (12:6098)
-	ld a, $2
-	call Function1ff8
-	call Function1bee
-	call WaitBGMap
-	call LoadStandardMenuDataHeader
-	callba Function89de0
-	call Call_ExitMenu
-	call Function49351
-	call Function4a485
-	pop bc
-	jp Function49f16
-
-Function4a0b9: ; 4a0b9 (12:60b9)
-	ld a, $2
-	call Function1ff8
-	pop bc
-	jp Function4a4c4
-
-Function4a0c2: ; 4a0c2 (12:60c2)
-	ld a, $2
-	call Function1ff8
-	ld a, BANK(sPlayerData)
-	call GetSRAMBank
-	ld hl, sPlayerData + PlayerName - wPlayerData
-	ld de, PlayerName
-	ld bc, $6
-	call CopyBytes
-	call CloseSRAM
-	callba Function150b9
-	ld c, 2
-	call DelayFrames
-	ld c, $1
-	call InitMobileProfile
-	push af
-	call ClearBGPalettes
-	pop af
-	and a
-	jr nz, .asm_4a0f9
-	callba _SaveData
-.asm_4a0f9
-	ld c, 5
-	call DelayFrames
-	jr asm_4a111
-
-Function4a100: ; 4a100 (12:6100)
-	ld a, $2
-	call Function1ff8
-	call ClearBGPalettes
-	call Function4a13b
-	call ClearBGPalettes
-	call ClearTileMap
-
-asm_4a111: ; 4a111 (12:6111)
-	pop bc
-	call LoadFontsExtra
-	jp Function49f0a
-
-Function4a118: ; 4a118 (12:6118)
-	ld hl, wcfa1
-	ld a, $1
-	ld [hli], a
-	ld a, $d
-	ld [hli], a
-	ld a, $3
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld [hl], $0
-	set 5, [hl]
-	inc hl
-	xor a
-	ld [hli], a
-	ld a, $20
-	ld [hli], a
-	ld a, $1
-	add $2
-	ld [hli], a
-	ld a, $1
-rept 2
-	ld [hli], a
-endr
-	ret
-
-Function4a13b: ; 4a13b (12:613b)
-	call Function4a3a7
-	call Function4a492
-	call Function4a373
-	ld c, 10
-	call DelayFrames
-
-Function4a149: ; 4a149 (12:6149)
-	hlcoord 1, 2
-	ld b, $6
-	ld c, $10
-	call Function48cdc
-	hlcoord 3, 4
-	ld de, String_4a1ef
-	call PlaceString
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	ld a, [MenuSelection2]
-	dec a
-	ld hl, Strings_4a23d
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 13
-	ld b, $4
-	ld c, $12
-	call ClearBox
-	hlcoord 1, 14
-	call PlaceString
-	callba Function104148
-	call SetPalettes
-	call Function1bc9
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-	jr asm_4a19d
-
-Function4a195: ; 4a195 (12:6195)
-	call Function1bd3
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-
-asm_4a19d: ; 4a19d (12:619d)
-	bit 0, a
-	jr nz, .asm_4a1a7
-	bit 1, a
-	jr nz, .asm_4a1ba
-	jr .asm_4a1bc
-.asm_4a1a7
-	ld hl, MenuSelection2
-	ld a, [hl]
-	cp $1
-	jp z, Function4a20e
-	cp $2
-	jp z, Function4a221
-	ld a, $1
-	call Function1ff8
-.asm_4a1ba
-	pop bc
-	ret
-.asm_4a1bc
-	ld hl, MenuSelection2
-	ld a, [hl]
-	dec a
-	ld hl, Strings_4a23d
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 13
-	ld b, $4
-	ld c, $12
-	call ClearBox
-	hlcoord 1, 14
-	call PlaceString
-	jr .asm_4a1db
-.asm_4a1db
-	call Function4a373
-	pop bc
-	ld hl, MenuSelection2
-	ld [hl], b
-	lb bc, 6, 1
-	hlcoord 2, 3
-	call ClearBox
-	jp Function4a195
-; 4a1ef (12:61ef)
-
-String_4a1ef: ; 4a1ef
-	db   "モバイルセンター¯えらぶ"
-	next "ログインパスワード¯いれる"
-	next "もどる@"
-; 4a20e
-
-Function4a20e: ; 4a20e (12:620e)
-	ld a, $1
-	call Function1ff8
-	callba Function1719c8
-	call ClearBGPalettes
-	call DelayFrame
-	jr Function4a239
-
-Function4a221: ; 4a221 (12:6221)
-	ld a, $1
-	call Function1ff8
-	call Function4a28a
-	jr c, Function4a239
-	call Function4a373
-	ld a, $2
-	ld [MenuSelection2], a
-	jr .asm_4a235
-.asm_4a235
-	pop bc
-	jp Function4a149
-
-Function4a239: ; 4a239 (12:6239)
-	pop bc
-	jp Function4a13b
-; 4a23d (12:623d)
-
-Strings_4a23d: ; 4a23d
-	db   "いつも せつぞく¯する"
-	next "モバイルセンター¯えらびます@"
-
-	db   "モバイルセンター", $1d, "せつぞくするとき"
-	next "つかうパスワード¯ほぞんできます@"
-
-	db   "まえ%がめん ", $1d, "もどります@"
-
-	db   "@"
-; 4a28a
-
-Function4a28a: ; 4a28a (12:628a)
-	hlcoord 2, 3
-	lb bc, 6, 1
-	ld a, " "
-	call Function4a6d8
-	call Function1bee
-	call WaitBGMap
-	call LoadStandardMenuDataHeader
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa4b]
-	call CloseSRAM
-	and a
-	jr z, .asm_4a2df
-	hlcoord 12, 0
-	ld b, $5
-	ld c, $6
-	call Function48cdc
-	hlcoord 14, 1
-	ld de, String_4a34b
-	call PlaceString
-	callba Function104148
-	call Function4a118
-	call Function1bd3
-	push af
-	call PlayClickSFX
-	pop af
-	bit 1, a
-	jr nz, .asm_4a33b
-	ld a, [MenuSelection2]
-	cp $2
-	jr z, .asm_4a2f0
-	cp $3
-	jr z, .asm_4a33b
-.asm_4a2df
-	callba Function11765d
-	call ClearBGPalettes
-	call Call_ExitMenu
-	call LoadFontsExtra
-	scf
-	ret
-.asm_4a2f0
-	call Function1bee
-	ld hl, UnknownText_0x4a358
-	call PrintText
-	hlcoord 14, 7
-	ld b, $3
-	ld c, $4
-	call TextBox
-	callba Function104148
-	ld hl, MenuDataHeader_0x4a362
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	bit 1, a
-	jr nz, .asm_4a338
-	ld a, [MenuSelection2]
-	cp $2
-	jr z, .asm_4a338
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $aa4b
-	xor a
-	ld bc, $11
-	call ByteFill
-	call CloseSRAM
-	ld hl, UnknownText_0x4a35d
-	call PrintText
-	call JoyWaitAorB
-.asm_4a338
-	call ExitMenu
-.asm_4a33b
-	call Call_ExitMenu
-	callba Function104148
-	xor a
-	ret
-; 4a346 (12:6346)
-
-MenuDataHeader_0x4a346: ; 0x4a346
-	db $40 ; flags
-	db 00, 12 ; start coords
-	db 06, 19 ; end coords
-
-String_4a34b: ; 4a34b
-	db   "いれなおす"
-	next "けす"
-	next "もどる@"
-; 4a358
-
-UnknownText_0x4a358: ; 0x4a358
-	; Delete the saved LOG-IN PASSWORD?
-	text_jump UnknownText_0x1c5196
-	db "@"
-; 0x4a35d
-
-UnknownText_0x4a35d: ; 0x4a35d
-	; Deleted the LOG-IN PASSWORD.
-	text_jump UnknownText_0x1c51b9
-	db "@"
-; 0x4a362
-
-MenuDataHeader_0x4a362: ; 0x4a362
-	db $40 ; flags
-	db 07, 14 ; start coords
-	db 11, 19 ; end coords
-	dw MenuData2_0x4a36a
-	db 2 ; default option
-; 0x4a36a
-
-MenuData2_0x4a36a: ; 0x4a36a
-	db $e0 ; flags
-	db 2 ; items
-	db "はい@"
-	db "いいえ@"
-; 0x4a373
-
-Function4a373: ; 4a373 (12:6373)
-	ld hl, wcfa1
-	ld a, $4
-	ld [hli], a
-	ld a, $2
-	ld [hli], a
-	ld a, $3
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld [hl], $0
-	set 5, [hl]
-	inc hl
-	xor a
-	ld [hli], a
-	ld a, $20
-	ld [hli], a
-	ld a, $1
-	add $40
-	add $80
-	add $2
-	ld [hli], a
-	ld a, $1
-rept 2
-	ld [hli], a
-endr
-	ret
-; 4a39a (12:639a)
-
-Function4a39a: ; 4a39a
-	call Function4a485
-	call Function4a492
-	call Function4a3aa
-	call SetPalettes
-	ret
-; 4a3a7
-
-Function4a3a7: ; 4a3a7 (12:63a7)
-	call Function4a485
-Function4a3aa: ; 4a3aa
-	hlcoord 0, 0
-	lb bc, 3, 1
-	xor a
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $1
-	call Function4a6d8
-	lb bc, 1, 1
-	xor a
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $1
-	call Function4a6d8
-	lb bc, 4, 1
-	ld a, $2
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $3
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, " "
-	call Function4a6d8
-	hlcoord 1, 0
-	ld a, $1
-	lb bc, 3, 18
-	call Function4a6d8
-	lb bc, 1, 18
-	ld a, $0
-	call Function4a6d8
-	lb bc, 1, 18
-	ld a, $1
-	call Function4a6d8
-	lb bc, 1, 18
-	ld a, $2
-	call Function4a6d8
-	lb bc, 11, 18
-	ld a, " "
-	call Function4a6d8
-	hlcoord 19, 0
-	lb bc, 3, 1
-	ld a, $0
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $1
-	call Function4a6d8
-	lb bc, 1, 1
-	xor a
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $1
-	call Function4a6d8
-	lb bc, 4, 1
-	ld a, $2
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, $3
-	call Function4a6d8
-	lb bc, 1, 1
-	ld a, " "
-	call Function4a6d8
-	ret
-; 4a449 (12:6449)
-
-Function4a449: ; 4a449
-	ld bc, 3 * SCREEN_WIDTH
-	ld a, $0
-	hlcoord 0, 0
-	call ByteFill
-	ld bc, 2 * SCREEN_WIDTH
-	ld a, $1
-	call ByteFill
-	ld bc, 2 * SCREEN_WIDTH
-	ld a, $0
-	call ByteFill
-	ld bc, 2 * SCREEN_WIDTH
-	ld a, $1
-	call ByteFill
-	ld bc, SCREEN_WIDTH
-	ld a, $2
-	call ByteFill
-	ld bc, SCREEN_WIDTH
-	ld a, $3
-	call ByteFill
-	ld bc, SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	ret
-; 4a485
-
-Function4a485: ; 4a485 (12:6485)
-	ld de, GFX_49c0c
-	ld hl, VTiles2 tile $00
-	lb bc, BANK(GFX_49c0c), $d
-	call Get2bpp
-	ret
-
-Function4a492: ; 4a492 (12:6492)
-	call Function4936e
-	ret
-
-
-MainMenu_MobileStudium: ; 4a496
-	ld a, [StartDay]
-	ld b, a
-	ld a, [StartHour]
-	ld c, a
-	ld a, [StartMinute]
-	ld d, a
-	ld a, [StartSecond]
-	ld e, a
-	push bc
-	push de
-	callba MobileStudium
-	call ClearBGPalettes
-	pop de
-	pop bc
-	ld a, b
-	ld [StartDay], a
-	ld a, c
-	ld [StartHour], a
-	ld a, d
-	ld [StartMinute], a
-	ld a, e
-	ld [StartSecond], a
-	ret
-; 4a4c4
-
-
-Function4a4c4: ; 4a4c4 (12:64c4)
-	call ClearBGPalettes
-	call Function4a3a7
-	call Function4a492
-	call Function4a680
-	call ClearBGPalettes
-	ld c, 20
-	call DelayFrames
-	hlcoord 2, 0
-	ld b, $a
-	ld c, $e
-	call Function48cdc
-	hlcoord 4, 2
-	ld de, String_4a5c5
-	call PlaceString
-	hlcoord 4, 4
-	ld de, String_4a5cd
-	call PlaceString
-	hlcoord 4, 6
-	ld de, String_4a5da
-	call PlaceString
-	hlcoord 4, 8
-	ld de, String_4a5e6
-	call PlaceString
-	hlcoord 4, 10
-	ld de, String_4a5f2
-	call PlaceString
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	xor a
-	ld hl, Strings_4a5f6
-	ld d, h
-	ld e, l
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $1
-	ld hl, Strings_4a5f6
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 16
-	call PlaceString
-	call Function3200
-	call SetPalettes
-	call Function1bc9
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-	jr asm_4a54d
-
-Function4a545: ; 4a545 (12:6545)
-	call Function1bd3
-	ld hl, MenuSelection2
-	ld b, [hl]
-	push bc
-
-asm_4a54d: ; 4a54d (12:654d)
-	bit 0, a
-	jr nz, .asm_4a557
-	bit 1, a
-	jr nz, .asm_4a574
-	jr .asm_4a57e
-.asm_4a557
-	ld hl, MenuSelection2
-	ld a, [hl]
-	cp $1
-	jp z, Function4a6ab
-	cp $2
-	jp z, Function4a6ab
-	cp $3
-	jp z, Function4a6ab
-	cp $4
-	jp z, Function4a6ab
-	ld a, $1
-	call Function1ff8
-.asm_4a574
-	pop bc
-	call ClearBGPalettes
-	call ClearTileMap
-	jp Function49f0a
-.asm_4a57e
-	ld hl, MenuSelection2
-	ld a, [hl]
-	dec a
-	add a
-	push af
-	ld hl, Strings_4a5f6
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 13
-	ld b, $4
-	ld c, $12
-	call ClearBox
-	hlcoord 1, 14
-	call PlaceString
-	pop af
-	inc a
-	ld hl, Strings_4a5f6
-	call GetNthString
-	ld d, h
-	ld e, l
-	hlcoord 1, 16
-	call PlaceString
-	jp Function4a5b0
-
-Function4a5b0: ; 4a5b0 (12:65b0)
-	call Function4a680
-	pop bc
-	ld hl, MenuSelection2
-	ld [hl], b
-	ld b, $a
-	ld c, $1
-	hlcoord 3, 1
-	call ClearBox
-	jp Function4a545
-; 4a5c5 (12:65c5)
-
-String_4a5c5: ; 4a5c5
-	db "じこしょうかい@"
-String_4a5cd: ; 4a5cd
-	db "たいせん ", $4a, "はじまるとき@"
-String_4a5da: ; 4a5da
-	db "たいせん ", $1d, "かったとき@"
-String_4a5e6: ; 4a5e6
-	db "たいせん ", $1d, "まけたとき@"
-String_4a5f2: ; 4a5f2
-	db "もどる@"
-; 4a5f6
-
-Strings_4a5f6: ; 4a5f6
-	db "めいし や ニュース ", $1d, "のせる@"
-	db "あなた%あいさつです@"
-	db "モバイル たいせん", $4a, "はじまるとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "モバイル たいせんで かったとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "モバイル たいせんで まけたとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "まえ%がめん ", $1d, "もどります@"
-	db "@"
-; 4a680
-
-Function4a680: ; 4a680 (12:6680)
-	ld hl, wcfa1
-	ld a, $2
-	ld [hli], a
-	ld a, $3
-	ld [hli], a
-	ld a, $5
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld [hl], $0
-	set 5, [hl]
-	inc hl
-	xor a
-	ld [hli], a
-	ld a, $20
-	ld [hli], a
-	ld a, $1
-	add $40
-	add $80
-	add $2
-	ld [hli], a
-	ld a, $1
-rept 2
-	ld [hli], a
-endr
-	xor a
-rept 3
-	ld [hli], a
-endr
-	ret
-
-Function4a6ab: ; 4a6ab (12:66ab)
-	ld a, $2
-	call Function1ff8
-	call ClearBGPalettes
-	ld b, SCGB_08
-	call GetSGBLayout
-	callba Function11c1ab
-	pop bc
-	call LoadFontsExtra
-	jp Function4a4c4
-
-Function4a6c5: ; 4a6c5 (12:66c5)
-	ld a, $5
-	ld [MusicFade], a
-	ld a, e
-	ld [MusicFadeIDLo], a
-	ld a, d
-	ld [MusicFadeIDHi], a
-	ld c, 22
-	call DelayFrames
-	ret
-
-Function4a6d8: ; 4a6d8 (12:66d8)
-	push bc
-	push hl
-.asm_4a6da
-	ld [hli], a
-	dec c
-	jr nz, .asm_4a6da
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, Function4a6d8
-	ret
--- /dev/null
+++ b/engine/map_object_action.asm
@@ -1,0 +1,323 @@
+	ld hl, OBJECT_ACTION
+	add hl, bc
+	ld a, [hl]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call _hl_
+	ret
+; 445f
+
+Pointers445f: ; 445f
+	dw SetFacingStanding, SetFacingStanding ; 00
+	dw Function44b5,      SetFacingCurrent ; 01 standing?
+	dw Function44c1,      SetFacingCurrent ; 02 walking?
+	dw Function4508,      SetFacingCurrent ; 03 bumping?
+	dw Function4529,      SetFacingCurrent ; 04
+	dw Function4539,      SetFacingStanding ; 05
+	dw Function456e,      Function456e ; 06
+	dw Function457b,      SetFacingStanding ; 07
+	dw Function4582,      Function4582 ; 08
+	dw Function4589,      Function4589 ; 09
+	dw Function4590,      Function45a4 ; 0a
+	dw Function45ab,      SetFacingCurrent ; 0c
+	dw Function45be,      Function45be ; 0b
+	dw Function45c5,      Function45c5 ; 0d
+	dw Function45da,      SetFacingStanding ; 0e
+	dw Function45ed,      SetFacingStanding ; 0f
+	dw Function44e4,      SetFacingCurrent ; 10
+; 44a3
+
+SetFacingStanding: ; 44a3
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], STANDING
+	ret
+; 44aa
+
+SetFacingCurrent: ; 44aa
+	call GetSpriteDirection
+	or 0 ; useless
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 44b5
+
+Function44b5: ; 44b5
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld a, [hl]
+	and 1
+	jr nz, Function44c1
+	jp SetFacingCurrent
+; 44c1
+
+Function44c1: ; 44c1
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit SLIDING, [hl]
+	jp nz, SetFacingCurrent
+
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and %00001111
+	ld [hl], a
+
+	rrca
+	rrca
+	and %00000011
+	ld d, a
+
+	call GetSpriteDirection
+	or 0 ; useless
+	or d
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 44e4
+
+Function44e4: ; 44e4
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit SLIDING, [hl]
+	jp nz, SetFacingCurrent
+
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	ld a, [hl]
+	add 2
+	and %00001111
+	ld [hl], a
+
+	rrca
+	rrca
+	and %00000011
+	ld d, a
+
+	call GetSpriteDirection
+	or 0 ; useless
+	or d
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 4508
+
+Function4508: ; 4508
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit SLIDING, [hl]
+	jp nz, SetFacingCurrent
+
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	inc [hl]
+
+	ld a, [hl]
+	rrca
+	rrca
+	rrca
+	and %00000011
+	ld d, a
+
+	call GetSpriteDirection
+	or 0 ; useless
+	or d
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 4529
+
+Function4529: ; 4529
+	call Function453f
+	ld hl, OBJECT_FACING
+	add hl, bc
+	ld a, [hl]
+	or 0 ; useless
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 4539
+
+Function4539: ; 4539
+	call Function453f
+	jp SetFacingStanding
+; 453f
+
+Function453f: ; 453f
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	ld a, [hl]
+	and %11110000
+	ld e, a
+
+	ld a, [hl]
+	inc a
+	and %00001111
+	ld d, a
+	cp 4
+	jr c, .ok
+
+	ld d, 0
+	ld a, e
+	add $10
+	and %00110000
+	ld e, a
+
+.ok
+	ld a, d
+	or e
+	ld [hl], a
+
+	swap e
+	ld d, 0
+	ld hl, .Directions
+	add hl, de
+	ld a, [hl]
+	ld hl, OBJECT_FACING
+	add hl, bc
+	ld [hl], a
+	ret
+; 456a
+
+.Directions ; 456a
+	db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT
+; 456e
+
+Function456e: ; 456e
+	call GetSpriteDirection
+	rrca
+	rrca
+	add $10
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 457b
+
+Function457b: ; 457b
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], FACING_15
+	ret
+; 4582
+
+Function4582: ; 4582 emote
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], FACING_EMOTE
+	ret
+; 4589
+
+Function4589: ; 4589
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], FACING_17
+	ret
+; 4590
+
+Function4590: ; 4590
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and %00001111
+	ld [hl], a
+	and %00001000
+	jr z, Function45a4
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], FACING_04
+	ret
+; 45a4
+
+Function45a4: ; 45a4
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], 0
+	ret
+; 45ab
+
+Function45ab: ; 45ab
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	ld a, [hl]
+	inc a
+	ld [hl], a
+	and %00001100
+	rrca
+	rrca
+	add $18
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], a
+	ret
+; 45be
+
+Function45be: ; 45be
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], FACING_16
+	ret
+; 45c5
+
+Function45c5: ; 45c5
+	ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
+	ld d, FACING_17
+	cp SPRITE_BIG_SNORLAX
+	jr z, .ok
+	cp SPRITE_BIG_LAPRAS
+	jr z, .ok
+	ld d, FACING_16
+
+.ok
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	ld [hl], d
+	ret
+; 45da
+
+Function45da: ; 45da
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	and 2
+	ld a, FACING_1C
+	jr z, .ok
+	inc a ; FACING_1D
+.ok
+	ld [hl], a
+	ret
+; 45ed
+
+Function45ed: ; 45ed
+	ld hl, OBJECT_STEP_FRAME
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld hl, OBJECT_FACING_STEP
+	add hl, bc
+	and 4
+	ld a, FACING_1E
+	jr z, .ok
+	inc a ; FACING_1F
+
+.ok
+	ld [hl], a
+	ret
+; 4600
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -2,54 +2,10 @@
 INCLUDE "engine/facings.asm"
 
 SpriteMovementData:: ; 4273
+INCLUDE "data/map_objects.asm"
 
-sprite_movement_data: macro
-	db \1, \2, \3, \4, \5
-	dn \6, 0
-	endm
-	; function,                                              facing, action,              flags1, flags2, palette flags
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 00
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 01
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 02
-	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 03
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 04
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 05
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 06
-	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 07
-	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 08
-	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 09
-	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0a
-	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 0b
-	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0c
-	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0d
-	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0e
-	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0f
-	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 10
-	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 11
-	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 12
-	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 13
-	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 14
-	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   PERSON_ACTION_09,    $2e,    $01,    %1100 ; 15
-	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   PERSON_ACTION_0A,    $2e,    $00,    %0000 ; 16
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 17
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $2e,    $10,    %0000 ; 18
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_STAND,    $2e,    $00,    %0100 ; 19
-	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 1a
-	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   PERSON_ACTION_00,    $8e,    $01,    %0000 ; 1b
-	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   PERSON_ACTION_EMOTE,    $8e,    $02,    %0000 ; 1c
-	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   PERSON_ACTION_00,    $82,    $00,    %0000 ; 1d
-	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1e
-	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1f
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0C,    $2e,    $01,    %1100 ; 20
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0D,    $2e,    $01,    %1100 ; 21
-	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   PERSON_ACTION_0E,    $8e,    $01,    %0000 ; 22
-	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   PERSON_ACTION_0F,    $8e,    $02,    %0000 ; 23
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0010 ; 24
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 25
 ; 4357
-
-
-Function4357:: ; 4357
+DeleteMapObject:: ; 4357
 	push bc
 	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
@@ -69,7 +25,6 @@
 	ld hl, OBJECT_SPRITE
 	add hl, bc
 	ld [hl], -1
-
 .ok
 	pop bc
 	ret
@@ -76,14 +31,13 @@
 ; 437b
 
 Function437b: ; 437b
-	call Function4386
+	call .CheckObjectStillVisible
 	ret c
-	call Function43f3
-	call Function4427
+	call .HandleStepType
+	call .HandleObjectAction
 	ret
-; 4386
 
-Function4386: ; 4386
+.CheckObjectStillVisible
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	res 6, [hl]
@@ -133,7 +87,6 @@
 	jr c, .ok2
 	cp MAPOBJECT_SCREEN_HEIGHT
 	jr nc, .ok2
-
 .yes
 	and a
 	ret
@@ -143,7 +96,7 @@
 	add hl, bc
 	bit 1, [hl]
 	jr nz, .yes2
-	call Function4357
+	call DeleteMapObject
 	scf
 	ret
 
@@ -153,43 +106,37 @@
 	set 6, [hl]
 	and a
 	ret
-; 43f3
 
-Function43f3: ; 43f3
+.HandleStepType
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld a, [hl]
 	and a
 	jr z, .zero
-
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	bit 5, [hl]
 	jr nz, .bit5
-
-	cp STEP_TYPE_STANDING
+	cp STEP_TYPE_SLEEP
 	jr z, .one
-	jr .ok
+	jr .ok3
 
 .zero
-	call Function47bc
+	call ObjectMovementReset
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	bit 5, [hl]
 	jr nz, .bit5
-
 .one
-	call Function47dd
-
+	call MapObjectMovementPattern
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld a, [hl]
 	and a
 	ret z
-	cp STEP_TYPE_STANDING
+	cp STEP_TYPE_SLEEP
 	ret z
-
-.ok
+.ok3
 	ld hl, Pointers4b45
 	rst JumpTable
 	ret
@@ -196,24 +143,20 @@
 
 .bit5
 	ret
-; 4427
 
-Function4427: ; 4427
+.HandleObjectAction
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	bit INVISIBLE, [hl]
 	jr nz, SetFacingStanding
-
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	bit 6, [hl]
 	jr nz, SetFacingStanding
-
 	bit 5, [hl]
-	jr nz, Function4448
-
-	ld de, Pointers445f
-	jr Function444d
+	jr nz, asm_4448
+	ld de, Pointers445f ; use first column
+	jr asm_444d
 ; 4440
 
 Function4440: ; 4440
@@ -221,340 +164,16 @@
 	add hl, bc
 	bit INVISIBLE, [hl]
 	jr nz, SetFacingStanding
-Function4448: ; 4448
+asm_4448 ; use second column
 	ld de, Pointers445f + 2
-	jr Function444d
+	jr asm_444d
 ; 444d
 
-Function444d: ; 444d
+asm_444d
 ; call [4 * ObjectStructs[ObjInd, OBJECT_ACTION] + de]
-	ld hl, OBJECT_ACTION
-	add hl, bc
-	ld a, [hl]
-	ld l, a
-	ld h, 0
-rept 2
-	add hl,hl
-endr
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call _hl_
-	ret
-; 445f
+INCLUDE "engine/map_object_action.asm"
 
-Pointers445f: ; 445f
-	dw SetFacingStanding, SetFacingStanding ; 00
-	dw Function44b5,      SetFacingCurrent ; 01 standing?
-	dw Function44c1,      SetFacingCurrent ; 02 walking?
-	dw Function4508,      SetFacingCurrent ; 03 bumping?
-	dw Function4529,      SetFacingCurrent ; 04
-	dw Function4539,      SetFacingStanding ; 05
-	dw Function456e,      Function456e ; 06
-	dw Function457b,      SetFacingStanding ; 07
-	dw Function4582,      Function4582 ; 08
-	dw Function4589,      Function4589 ; 09
-	dw Function4590,      Function45a4 ; 0a
-	dw Function45ab,      SetFacingCurrent ; 0c
-	dw Function45be,      Function45be ; 0b
-	dw Function45c5,      Function45c5 ; 0d
-	dw Function45da,      SetFacingStanding ; 0e
-	dw Function45ed,      SetFacingStanding ; 0f
-	dw Function44e4,      SetFacingCurrent ; 10
-; 44a3
-
-SetFacingStanding: ; 44a3
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], STANDING
-	ret
-; 44aa
-
-SetFacingCurrent: ; 44aa
-	call GetSpriteDirection
-	or 0 ; useless
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 44b5
-
-Function44b5: ; 44b5
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld a, [hl]
-	and 1
-	jr nz, Function44c1
-	jp SetFacingCurrent
-; 44c1
-
-Function44c1: ; 44c1
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit SLIDING, [hl]
-	jp nz, SetFacingCurrent
-
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	ld a, [hl]
-	inc a
-	and %00001111
-	ld [hl], a
-
-	rrca
-	rrca
-	and %00000011
-	ld d, a
-
-	call GetSpriteDirection
-	or 0 ; useless
-	or d
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 44e4
-
-Function44e4: ; 44e4
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit SLIDING, [hl]
-	jp nz, SetFacingCurrent
-
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	ld a, [hl]
-	add 2
-	and %00001111
-	ld [hl], a
-
-	rrca
-	rrca
-	and %00000011
-	ld d, a
-
-	call GetSpriteDirection
-	or 0 ; useless
-	or d
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 4508
-
-Function4508: ; 4508
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit SLIDING, [hl]
-	jp nz, SetFacingCurrent
-
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	inc [hl]
-
-	ld a, [hl]
-	rrca
-	rrca
-	rrca
-	and %00000011
-	ld d, a
-
-	call GetSpriteDirection
-	or 0 ; useless
-	or d
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 4529
-
-Function4529: ; 4529
-	call Function453f
-	ld hl, OBJECT_FACING
-	add hl, bc
-	ld a, [hl]
-	or 0 ; useless
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 4539
-
-Function4539: ; 4539
-	call Function453f
-	jp SetFacingStanding
-; 453f
-
-Function453f: ; 453f
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	ld a, [hl]
-	and %11110000
-	ld e, a
-
-	ld a, [hl]
-	inc a
-	and %00001111
-	ld d, a
-	cp 4
-	jr c, .ok
-
-	ld d, 0
-	ld a, e
-	add $10
-	and %00110000
-	ld e, a
-
-.ok
-	ld a, d
-	or e
-	ld [hl], a
-
-	swap e
-	ld d, 0
-	ld hl, .Directions
-	add hl, de
-	ld a, [hl]
-	ld hl, OBJECT_FACING
-	add hl, bc
-	ld [hl], a
-	ret
-; 456a
-
-.Directions ; 456a
-	db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT
-; 456e
-
-Function456e: ; 456e
-	call GetSpriteDirection
-	rrca
-	rrca
-	add $10
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 457b
-
-Function457b: ; 457b
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], FACING_15
-	ret
-; 4582
-
-Function4582: ; 4582 emote
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], FACING_EMOTE
-	ret
-; 4589
-
-Function4589: ; 4589
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], FACING_17
-	ret
-; 4590
-
-Function4590: ; 4590
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	ld a, [hl]
-	inc a
-	and %00001111
-	ld [hl], a
-	and %00001000
-	jr z, Function45a4
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], FACING_04
-	ret
-; 45a4
-
-Function45a4: ; 45a4
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], 0
-	ret
-; 45ab
-
-Function45ab: ; 45ab
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	ld a, [hl]
-	inc a
-	ld [hl], a
-	and %00001100
-	rrca
-	rrca
-	add $18
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], a
-	ret
-; 45be
-
-Function45be: ; 45be
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], FACING_16
-	ret
-; 45c5
-
-Function45c5: ; 45c5
-	ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
-	ld d, FACING_17
-	cp SPRITE_BIG_SNORLAX
-	jr z, .ok
-	cp SPRITE_BIG_LAPRAS
-	jr z, .ok
-	ld d, FACING_16
-
-.ok
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	ld [hl], d
-	ret
-; 45da
-
-Function45da: ; 45da
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	and 2
-	ld a, FACING_1C
-	jr z, .ok
-	inc a ; FACING_1D
-.ok
-	ld [hl], a
-	ret
-; 45ed
-
-Function45ed: ; 45ed
-	ld hl, OBJECT_STEP_FRAME
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	ld hl, OBJECT_FACING_STEP
-	add hl, bc
-	and 4
-	ld a, FACING_1E
-	jr z, .ok
-	inc a ; FACING_1F
-
-.ok
-	ld [hl], a
-	ret
-; 4600
-
-Function4600: ; 4600
-
+CopyNextCoordsTileToStandingCoordsTile: ; 4600
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -561,7 +180,6 @@
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld [hl], a
-
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, [hl]
@@ -568,7 +186,6 @@
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld [hl], a
-
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
 	ld a, [hl]
@@ -575,18 +192,15 @@
 	ld hl, OBJECT_STANDING_TILE
 	add hl, bc
 	ld [hl], a
-
 	call SetTallGrassFlags
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
 	ld a, [hl]
-
 	call UselessAndA
 	ret
 ; 462a
 
 Function462a: ; 462a
-
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -593,7 +207,6 @@
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld [hl], a
-
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld a, [hl]
@@ -600,11 +213,10 @@
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld [hl], a
-
 	ret
 ; 463f
 
-Function463f: ; 463f
+UpdateTallGrassFlags: ; 463f
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	bit 3, [hl] ; is current tile grass?
@@ -613,7 +225,6 @@
 	add hl, bc
 	ld a, [hl]
 	call SetTallGrassFlags
-
 .ok
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
@@ -632,7 +243,6 @@
 	jr z, .set
 	call CheckGrassTile
 	jr c, .reset
-
 .set
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
@@ -651,7 +261,7 @@
 	ret
 ; 467b
 
-Function467b: ; 467b
+EndSpriteMovement: ; 467b
 	xor a
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
@@ -668,7 +278,7 @@
 	ret
 ; 4690
 
-Function4690: ; 4690
+InitStep: ; 4690
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], a
@@ -676,22 +286,17 @@
 	add hl, bc
 	bit FIXED_FACING, [hl]
 	jr nz, GetNextTile
-
-rept 2
 	add a
-endr
+	add a
 	and %00001100
 	ld hl, OBJECT_FACING
 	add hl, bc
 	ld [hl], a
-
 GetNextTile: ; 46a6
 	call GetStepVector
-
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
-
 	ld a, d
 	call GetStepVectorSign
 	ld hl, OBJECT_MAP_X
@@ -701,7 +306,6 @@
 	add hl, bc
 	ld [hl], a
 	ld d, a
-
 	ld a, e
 	call GetStepVectorSign
 	ld hl, OBJECT_MAP_Y
@@ -711,34 +315,27 @@
 	add hl, bc
 	ld [hl], a
 	ld e, a
-
 	push bc
 	call GetCoordTile
 	pop bc
-
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
 	ld [hl], a
-
 	ret
 ; 46d7
 
 AddStepVector: ; 46d7
-
 	call GetStepVector
-
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
 	ld a, [hl]
 	add d
 	ld [hl], a
-
 	ld hl, OBJECT_SPRITE_Y
 	add hl, bc
 	ld a, [hl]
 	add e
 	ld [hl], a
-
 	ret
 ; 46e9
 
@@ -748,9 +345,8 @@
 	add hl, bc
 	ld a, [hl]
 	and %00001111
-rept 2
 	add a
-endr
+	add a
 	ld l, a
 	ld h, 0
 	ld de, StepVectors
@@ -782,19 +378,15 @@
 	db -4,  0,  4, 4
 	db  4,  0,  4, 4
 ; 4730
-
 GetStepVectorSign: ; 4730
 	add a
 	ret z  ; 0 or 128
-
 	ld a, 1
 	ret nc ; 1 - 127
-
 	ld a, -1
 	ret    ; 129 - 255
 ; 4738
-
-Function4738: ; 4738
+UpdatePlayerStep: ; 4738
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
@@ -813,6 +405,7 @@
 ; 4759
 
 Function4759: ; 4759
+; unreferenced
 	push bc
 	ld e, a
 	ld d, 0
@@ -841,7 +434,7 @@
 	ret
 
 .ok
-	ld a, 6
+	ld a, SPRITEMOVEFN_STANDING
 	ret
 ; 4780
 
@@ -890,7 +483,6 @@
 ; 47a8
 
 Object28AnonymousJumptable: ; 47a8
-; anonymous jumptable
 	ld hl, OBJECT_28
 	add hl, bc
 	ld a, [hl]
@@ -913,7 +505,7 @@
 	ret
 ; 47bc
 
-Function47bc: ; 47bc
+ObjectMovementReset: ; 47bc
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -926,15 +518,15 @@
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
 	ld [hl], a
-	call Function4600
-	call Function467b
+	call CopyNextCoordsTileToStandingCoordsTile
+	call EndSpriteMovement
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 47dd
 
-Function47dd: ; 47dd
+MapObjectMovementPattern: ; 47dd
 	call ClearObjectStructField28
 	call GetSpriteMovementFunction
 	ld a, [hl]
@@ -941,7 +533,6 @@
 	ld hl, .Pointers
 	rst JumpTable
 	ret
-; 47e9
 
 .Pointers ; 47e9
 	dw .Null_00 ; 00
@@ -972,35 +563,30 @@
 	dw .MovementSpinCounterclockwise ; 19
 	dw .MovementBoulderDust ; 1a
 	dw .MovementShakingGrass ; 1b
-; 4821
 
-.Null_00: ; 4821
+.Null_00
 	ret
-; 4822
 
-.RandomWalkY: ; 4822
+.RandomWalkY
 	call Random
 	ld a, [hRandomAdd]
 	and %00000001
 	jp .RandomWalkContinue
-; 482c
 
-.RandomWalkX: ; 482c
+.RandomWalkX
 	call Random
 	ld a, [hRandomAdd]
 	and %00000001
 	or  %00000010
 	jp .RandomWalkContinue
-; 4838
 
-.RandomWalkXY: ; 4838
+.RandomWalkXY
 	call Random
 	ld a, [hRandomAdd]
 	and %00000011
 	jp .RandomWalkContinue
-; 4842
 
-.RandomSpin1: ; 4842
+.RandomSpin1
 	call Random
 	ld a, [hRandomAdd]
 	and %00001100
@@ -1008,9 +594,8 @@
 	add hl, bc
 	ld [hl], a
 	jp RandomStepDuration_Slow
-; 4851
 
-.RandomSpin2: ; 4851
+.RandomSpin2
 	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
@@ -1022,15 +607,13 @@
 	cp d
 	jr nz, .keep
 	xor %00001100
-
 .keep
 	ld [hl], a
 	jp RandomStepDuration_Fast
-; 4869
 
-.Standing: ; 4869
+.Standing
 	call Function462a
-	call Function467b
+	call EndSpriteMovement
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_STAND
@@ -1038,86 +621,71 @@
 	add hl, bc
 	ld [hl], STEP_TYPE_05
 	ret
-; 487c
 
-.ObeyDPad: ; 487c
+.ObeyDPad
 	ld hl, Function5000
 	jp HandleMovementData
-; 4882
 
-.Movement08: ; 4882
+.Movement08
 	ld hl, Function5015
 	jp HandleMovementData
-; 4888
 
-.Movement09: ; 4888
+.Movement09
 	ld hl, Function5026
 	jp HandleMovementData
-; 488e
 
-.Movement0a: ; 488e
-	jp Function5037
-; 4891
+.Movement0a
+	jp _GetMovementPerson
 
-.Movement0b: ; 4891
-	jp Function5037
-; 4894
+.Movement0b
+	jp _GetMovementPerson
 
-.Movement0c: ; 4894
-	jp Function5037
-; 4897
+.Movement0c
+	jp _GetMovementPerson
 
-.Movement0d: ; 4897
+.Movement0d
 	ld hl, Function5000
 	jp HandleMovementData
-; 489d
 
-.Movement0e: ; 489d
-	jp Function5037
-; 48a0
+.Movement0e
+	jp _GetMovementPerson
 
-.Follow: ; 48a0
-	ld hl, Function54e6
+.Follow
+	ld hl, GetFollowerNextMovementByte
 	jp HandleMovementData
-; 48a6
 
-.Script: ; 48a6
-	ld hl, Function500e
+.Script
+	ld hl, GetMovementByte
 	jp HandleMovementData
-; 48ac
 
-.Strength: ; 48ac
+.Strength
 	call MovementAnonymousJumptable
 	dw .Strength_Start
 	dw .Strength_Stop
-; 48b3
 
-.Strength_Start: ; 48b3
+.Strength_Start
 	ld hl, OBJECT_NEXT_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_RANGE
 	add hl, bc
 	ld a, [hl]
 	and %00000011
 	or 0
-	call Function4690
+	call InitStep
 	call Function6ec1
 	jr c, .ok2
-
 	ld de, SFX_STRENGTH
 	call PlaySFX
 	call SpawnStrengthBoulderDust
-	call Function463f
+	call UpdateTallGrassFlags
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_0F
@@ -1125,7 +693,6 @@
 
 .ok2
 	call Function462a
-
 .ok
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -1134,27 +701,22 @@
 
 .on_pit
 	call IncrementObjectMovementByteIndex
-
-.Strength_Stop: ; 48f8
+.Strength_Stop
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
 	ret
-; 48ff
 
-.FollowNotExact: ; 48ff
+.FollowNotExact
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld d, [hl]
-
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld e, [hl]
-
 	ld hl, OBJECT_RANGE
 	add hl, bc
 	ld a, [hl]
-
 	push bc
 	call GetObjectStruct
 	ld hl, OBJECT_DIRECTION_WALKING
@@ -1162,7 +724,6 @@
 	ld a, [hl]
 	cp STANDING
 	jr z, .standing
-
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -1188,7 +749,6 @@
 
 .less2
 	ld a, 1
-
 .done
 	ld d, a
 	ld hl, OBJECT_DIRECTION_WALKING
@@ -1208,10 +768,9 @@
 	add hl, bc
 	ld [hl], PERSON_ACTION_STAND
 	ret
-; 4958
 
-.MovementBigStanding: ; 4958
-	call Function467b
+.MovementBigStanding
+	call EndSpriteMovement
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1222,10 +781,9 @@
 	add hl, bc
 	ld [hl], STEP_TYPE_04
 	ret
-; 496e
 
-.MovementBouncing: ; 496e
-	call Function467b
+.MovementBouncing
+	call EndSpriteMovement
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1236,26 +794,23 @@
 	add hl, bc
 	ld [hl], STEP_TYPE_04
 	ret
-; 4984
 
-.MovementSpinCounterclockwise: ; 4984
+.MovementSpinCounterclockwise
 	call MovementAnonymousJumptable
 	dw .MovementSpinInit
 	dw .MovementSpinRepeat
 	dw .MovementSpinTurnLeft
-; 498d
 
-.MovementSpinClockwise: ; 498d
+.MovementSpinClockwise
 	call MovementAnonymousJumptable
 	dw .MovementSpinInit
 	dw .MovementSpinRepeat
 	dw .MovementSpinTurnRight
-; 4996
 
-.MovementSpinInit: ; 4996
-	call Function467b
+.MovementSpinInit
+	call EndSpriteMovement
 	call IncrementObjectMovementByteIndex
-.MovementSpinRepeat: ; 499c
+.MovementSpinRepeat
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_STAND
@@ -1271,29 +826,24 @@
 	ld [hl], STEP_TYPE_03
 	call IncrementObjectMovementByteIndex
 	ret
-; 49b8
 
-.MovementSpinTurnLeft: ; 49b8
+.MovementSpinTurnLeft
 	ld de, .DirectionData_Counterclockwise
 	call .MovementSpinNextFacing
 	jr .MovementSpinCounterclockwise
-; 49c0
 
 .DirectionData_Counterclockwise ; 49c0
 	db OW_RIGHT, OW_LEFT, OW_DOWN, OW_UP
-; 49c4
 
-.MovementSpinTurnRight: ; 49c4
+.MovementSpinTurnRight
 	ld de, .DirectionData_Clockwise
 	call .MovementSpinNextFacing
 	jr .MovementSpinClockwise
-; 49cc
 
 .DirectionData_Clockwise ; 49cc
 	db OW_LEFT, OW_RIGHT, OW_UP, OW_DOWN
-; 49d0
 
-.MovementSpinNextFacing: ; 49d0
+.MovementSpinNextFacing
 	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
@@ -1309,9 +859,8 @@
 	ld [hl], a
 	call DecrementObjectMovementByteIndex
 	ret
-; 49e5
 
-.MovementShadow: ; 49e5
+.MovementShadow
 	call ._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -1329,13 +878,12 @@
 	add hl, de
 	ld a, [hl]
 	and 3
-	ld d, $e
+	ld d, 1 * 8 + 6
 	cp DOWN
 	jr z, .ok_13
 	cp UP
 	jr z, .ok_13
-	ld d, $c
-
+	ld d, 1 * 8 + 4
 .ok_13
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
@@ -1345,12 +893,11 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_13
+	ld [hl], STEP_TYPE_TRACKING_OBJECT
 	ret
-; 4a21
 
-.MovementEmote: ; 4a21
-	call Function467b
+.MovementEmote
+	call EndSpriteMovement
 	call ._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -1360,18 +907,17 @@
 	ld [hl], 0
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
-	ld [hl], -$10
+	ld [hl], -2 * 8
 	ld hl, OBJECT_SPRITE_X_OFFSET
 	add hl, bc
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_13
+	ld [hl], STEP_TYPE_TRACKING_OBJECT
 	ret
-; 4a46
 
-.MovementBoulderDust: ; 4a46
-	call Function467b
+.MovementBoulderDust
+	call EndSpriteMovement
 	call ._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -1391,9 +937,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, .data_4a81
-rept 2
-	add hl,de
-endr
+	add hl, de
+	add hl, de
 	ld d, [hl]
 	inc hl
 	ld e, [hl]
@@ -1405,9 +950,8 @@
 	ld [hl], e
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_13
+	ld [hl], STEP_TYPE_TRACKING_OBJECT
 	ret
-; 4a81
 
 .data_4a81  ; 4a81
 	;   x,  y
@@ -1415,10 +959,9 @@
 	db  0,  8
 	db  6,  2
 	db -6,  2
-; 4a89
 
-.MovementShakingGrass: ; 4a89
-	call Function467b
+.MovementShakingGrass
+	call EndSpriteMovement
 	call ._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -1432,11 +975,10 @@
 	ld [hl], a
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_13
+	ld [hl], STEP_TYPE_TRACKING_OBJECT
 	ret
-; 4aa8
 
-._MovementShadow_Grass_Emote_BoulderDust: ; 4aa8
+._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_RANGE
 	add hl, bc
 	ld a, [hl]
@@ -1451,10 +993,9 @@
 	inc hl
 	ld [hl], d
 	ret
-; 4abc
 
-.MovementScreenShake: ; 4abc
-	call Function467b
+.MovementScreenShake
+	call EndSpriteMovement
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_00
@@ -1472,9 +1013,8 @@
 	add hl, bc
 	ld [hl], STEP_TYPE_15
 	ret
-; 4ade
 
-._MovementScreenShake: ; 4ade
+._MovementScreenShake
 	ld d, a
 	and %00111111
 	ld e, a
@@ -1490,23 +1030,19 @@
 	ret z
 	add a
 	jr .loop
-; 4af0
 
-.RandomWalkContinue: ; 4af0
-	call Function4690
+.RandomWalkContinue
+	call InitStep
 	call Function6ec1 ; check whether the object can move in that direction
 	jr c, .NewDuration
-
-	call Function463f
+	call UpdateTallGrassFlags
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_STEP
-
 	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
 	jr z, .load_6
-
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_07
@@ -1518,8 +1054,8 @@
 	ld [hl], STEP_TYPE_PLAYER_WALK
 	ret
 
-.NewDuration: ; 4b17
-	call Function467b
+.NewDuration
+	call EndSpriteMovement
 	call Function462a
 RandomStepDuration_Slow: ; 4b1d
 	call Random
@@ -1550,35 +1086,35 @@
 
 Pointers4b45: ; 4b45
 ; These pointers use OBJECT_STEP_TYPE.  See constants/sprite_constants.asm
-	dw Function47bc ; 00
-	dw Function47dd ; 01
-	dw Function4e2b ; 02 npc walk
-	dw Function4ddd ; 03
-	dw Function4e21 ; 04
-	dw Function4e0c ; 05
-	dw Function4e56 ; 06 player walk
-	dw Function4e47 ; 07
-	dw Function4b86 ; 08 npc jump step
-	dw Function4bbf ; 09 player jump step
-	dw Function4e83 ; 0a half step
-	dw Function4dff ; 0b
-	dw Function4c18 ; 0c teleport from
-	dw Function4c89 ; 0d teleport to
-	dw Function4d14 ; 0e skyfall
-	dw Function4ecd ; 0f
-	dw Function4d7e ; 10
-	dw Function4daf ; 11
-	dw Function4dc8 ; 12
-	dw Function4f04 ; 13
-	dw Function4f33 ; 14
-	dw Function4f33 ; 15
-	dw Function4f77 ; 16
-	dw Function4f7a ; 17
-	dw Function4df0 ; 18
-	dw Function4f83 ; 19
+	dw ObjectMovementReset ; 00
+	dw MapObjectMovementPattern ; unused
+	dw NPCStep ; 02 npc walk
+	dw StepType03 ; 03
+	dw StepType04 ; 04
+	dw StepType05 ; 05
+	dw PlayerStep ; 06 player walk
+	dw StepType07 ; 07
+	dw NPCJump ; 08 npc jump step
+	dw PlayerJump ; 09 player jump step
+	dw PlayerOrNPCTurnStep ; 0a half step
+	dw StepTypeBump ; 0b
+	dw TeleportFrom ; 0c teleport from
+	dw TeleportTo ; 0d teleport to
+	dw Skyfall ; 0e skyfall
+	dw StepType0f ; 0f
+	dw GotBiteStep ; 10
+	dw RockSmashStep ; 11
+	dw ReturnDigStep ; 12
+	dw StepTypeTrackingObject ; 13
+	dw StepType14 ; 14
+	dw StepType15 ; 15
+	dw StepType16 ; 16
+	dw StepType17 ; 17
+	dw StepType18 ; 18
+	dw SkyfallTop ; 19
 ; 4b79
 
-Function4b79: ; 4b79
+WaitStep_InPlace: ; 4b79
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1585,18 +1121,17 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4b86
 
-Function4b86: ; 4b86
+NPCJump: ; 4b86
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4b8d
-	dw Function4ba9
-; 4b8d
+; anonymous dw
+	dw .Jump
+	dw .Land
 
-Function4b8d: ; 4b8d
+.Jump
 	call AddStepVector
 	call UpdateJumpPosition
 	ld hl, OBJECT_STEP_DURATION
@@ -1603,7 +1138,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	call GetNextTile
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
@@ -1610,9 +1145,8 @@
 	res 3, [hl]
 	call IncrementObjectStructField28
 	ret
-; 4ba9
 
-Function4ba9: ; 4ba9
+.Land
 	call AddStepVector
 	call UpdateJumpPosition
 	ld hl, OBJECT_STEP_DURATION
@@ -1619,34 +1153,33 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4bbf
 
-Function4bbf: ; 4bbf
+PlayerJump: ; 4bbf
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4bca
-	dw Function4bd2
-	dw Function4bf2
-	dw Function4bfd
-; 4bca
+; anonymous dw
+	dw .initjump
+	dw .stepjump
+	dw .initland
+	dw .stepland
 
-Function4bca: ; 4bca
+.initjump
 	ld hl, wPlayerStepFlags
 	set 7, [hl]
 	call IncrementObjectStructField28
-Function4bd2: ; 4bd2
+.stepjump
 	call UpdateJumpPosition
-	call Function4738
+	call UpdatePlayerStep
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	res 3, [hl]
@@ -1655,16 +1188,15 @@
 	set 4, [hl]
 	call IncrementObjectStructField28
 	ret
-; 4bf2
 
-Function4bf2: ; 4bf2
+.initland
 	call GetNextTile
 	ld hl, wPlayerStepFlags
 	set 7, [hl]
 	call IncrementObjectStructField28
-Function4bfd: ; 4bfd
+.stepland
 	call UpdateJumpPosition
-	call Function4738
+	call UpdatePlayerStep
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1671,31 +1203,31 @@
 	ret nz
 	ld hl, wPlayerStepFlags
 	set 6, [hl]
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4c18
 
-Function4c18: ; 4c18
+TeleportFrom: ; 4c18
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4c23
-	dw Function4c32
-	dw Function4c42
-	dw Function4c5d
+; anonymous dw
+	dw .InitSpin
+	dw .DoSpin
+	dw .InitSpinRise
+	dw .DoSpinRise
 ; 4c23
 
-Function4c23: ; 4c23
+.InitSpin
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
-Function4c32: ; 4c32
+.DoSpin
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_SPIN
@@ -1705,9 +1237,8 @@
 	ret nz
 	call IncrementObjectStructField28
 	ret
-; 4c42
 
-Function4c42: ; 4c42
+.InitSpinRise
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
@@ -1716,12 +1247,12 @@
 	ld [hl], $10
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	res 3, [hl]
 	call IncrementObjectStructField28
-Function4c5d: ; 4c5d
+.DoSpinRise
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_SPIN
@@ -1745,40 +1276,40 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4c89
 
-Function4c89: ; 4c89
+TeleportTo: ; 4c89
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4c9a
-	dw Function4caa
-	dw Function4cb3
-	dw Function4cc9
-	dw Function4ceb
-	dw Function4cf5
-	dw Function4d01
+; anonymous dw
+	dw .InitWait
+	dw .DoWait
+	dw .InitDescent
+	dw .DoDescent
+	dw .InitFinalSpin
+	dw .DoFinalSpin
+	dw .FinishStep
 ; 4c9a
 
-Function4c9a: ; 4c9a
+.InitWait
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_00
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
 	ret
 ; 4caa
 
-Function4caa: ; 4caa
+.DoWait
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
 	call IncrementObjectStructField28
-Function4cb3: ; 4cb3
+.InitDescent
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
@@ -1787,12 +1318,12 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
 	ret
 ; 4cc9
 
-Function4cc9: ; 4cc9
+.DoDescent
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_SPIN
@@ -1812,15 +1343,15 @@
 	dec [hl]
 	ret nz
 	call IncrementObjectStructField28
-Function4ceb: ; 4ceb
+.InitFinalSpin
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
 	ret
 ; 4cf5
 
-Function4cf5: ; 4cf5
+.DoFinalSpin
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_SPIN
@@ -1828,7 +1359,7 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-Function4d01: ; 4d01
+.FinishStep
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
@@ -1837,28 +1368,28 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4d14
 
-Function4d14: ; 4d14
+Skyfall: ; 4d14
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4d1f
-	dw Function4d2e
-	dw Function4d4f
-	dw Function4d6b
+; anonymous dw
+	dw .Init
+	dw .Step
+	dw .Fall
+	dw .Finish
 ; 4d1f
 
-Function4d1f: ; 4d1f
+.Init
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_00
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
-Function4d2e: ; 4d2e
+.Step
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1874,9 +1405,9 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $10
+	ld [hl], 16
 	call IncrementObjectStructField28
-Function4d4f: ; 4d4f
+.Fall
 	ld hl, OBJECT_31
 	add hl, bc
 	inc [hl]
@@ -1893,7 +1424,7 @@
 	dec [hl]
 	ret nz
 	call IncrementObjectStructField28
-Function4d6b: ; 4d6b
+.Finish
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
@@ -1902,18 +1433,18 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4d7e
 
-Function4d7e: ; 4d7e
+GotBiteStep: ; 4d7e
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4d85
-	dw Function4d94
+; anonymous dw
+	dw .Init
+	dw .Run
 ; 4d85
 
-Function4d85: ; 4d85
+.Init
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], 8
@@ -1921,7 +1452,7 @@
 	add hl, bc
 	ld [hl], 0
 	call IncrementObjectStructField28
-Function4d94: ; 4d94
+.Run
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
 	ld a, [hl]
@@ -1936,16 +1467,16 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4daf
 
-Function4daf: ; 4daf
-	call Function4db5
-	jp Function4b79
+RockSmashStep: ; 4daf
+	call .Step
+	jp WaitStep_InPlace
 ; 4db5
 
-Function4db5: ; 4db5
+.Step
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld a, [hl]
@@ -1953,7 +1484,6 @@
 	ld a, PERSON_ACTION_STAND
 	jr z, .yes
 	ld a, PERSON_ACTION_00
-
 .yes
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -1961,7 +1491,7 @@
 	ret
 ; 4dc8
 
-Function4dc8: ; 4dc8
+ReturnDigStep: ; 4dc8
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld a, [hl]
@@ -1969,15 +1499,14 @@
 	ld a, PERSON_ACTION_SPIN
 	jr z, .yes
 	ld a, PERSON_ACTION_SPIN_FLICKER
-
 .yes
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], a
-	jp Function4b79
+	jp WaitStep_InPlace
 ; 4ddd
 
-Function4ddd: ; 4ddd
+StepType03: ; 4ddd
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1987,11 +1516,11 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4df0
 
-Function4df0: ; 4df0
+StepType18: ; 4df0
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1999,10 +1528,10 @@
 	add hl, bc
 	dec [hl]
 	ret nz
-	jp Function4357
+	jp DeleteMapObject
 ; 4dff
 
-Function4dff: ; 4dff
+StepTypeBump: ; 4dff
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -2009,18 +1538,17 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4e0c
 
-Function4e0c: ; 4e0c
+StepType05: ; 4e0c
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4e13
-	dw Function4e21
-; 4e13
+; anonymous dw
+	dw .Reset
+	dw StepType04
 
-Function4e13: ; 4e13
+.Reset
 	call RestoreDefaultMovement
 	call GetInitialFacing
 	ld hl, OBJECT_FACING
@@ -2027,8 +1555,8 @@
 	add hl, bc
 	ld [hl], a
 	call IncrementObjectStructField28
-Function4e21: ; 4e21
-	call Function4fb2
+StepType04: ; 4e21
+	call MobileFn_4fb2
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -2035,74 +1563,71 @@
 	ret
 ; 4e2b
 
-Function4e2b: ; 4e2b
-	call Function4fb2
+NPCStep: ; 4e2b
+	call MobileFn_4fb2
 	call AddStepVector
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4e47
 
-Function4e47: ; 4e47
+StepType07: ; 4e47
 	call AddStepVector
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	jp RandomStepDuration_Slow
 ; 4e56
 
-Function4e56: ; 4e56
+PlayerStep: ; 4e56
 ; AnimateStep?
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4e5d
-	dw Function4e65
-; 4e5d
+; anonymous dw
+	dw .init
+	dw .step
 
-Function4e5d: ; 4e5d
+.init
 	ld hl, wPlayerStepFlags
 	set 7, [hl]
 	call IncrementObjectStructField28
-Function4e65: ; 4e65
-	call Function4738
+.step
+	call UpdatePlayerStep
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
-
 	ld hl, wPlayerStepFlags
 	set 6, [hl]
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4e83
 
-Function4e83: ; 4e83
+PlayerOrNPCTurnStep: ; 4e83
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4e8e
-	dw Function4ea4
-	dw Function4ead
-	dw Function4ec0
-; 4e8e
+; anonymous dw
+	dw .init1
+	dw .step1
+	dw .init2
+	dw .step2
 
-Function4e8e: ; 4e8e
+.init1
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -2114,14 +1639,14 @@
 	add hl, bc
 	ld [hl], 2
 	call IncrementObjectStructField28
-Function4ea4: ; 4ea4
+.step1
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
 	ret nz
 	call IncrementObjectStructField28
-Function4ead: ; 4ead
-	ld hl, OBJECT_29
+.init2
+	ld hl, OBJECT_29 ; new facing
 	add hl, bc
 	ld a, [hl]
 	ld hl, OBJECT_FACING
@@ -2129,9 +1654,9 @@
 	ld [hl], a
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
-	ld [hl], $2
+	ld [hl], 2
 	call IncrementObjectStructField28
-Function4ec0: ; 4ec0
+.step2
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -2138,11 +1663,11 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4ecd
 
-Function4ecd: ; 4ecd
+StepType0f: ; 4ecd
 	call AddStepVector
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
@@ -2164,17 +1689,17 @@
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	res 2, [hl]
-	call Function4600
+	call CopyNextCoordsTileToStandingCoordsTile
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4f04
 
-Function4f04: ; 4f04
+StepTypeTrackingObject: ; 4f04
 	ld hl, OBJECT_29
 	add hl, bc
 	ld e, [hl]
@@ -2204,25 +1729,24 @@
 	ret z
 	dec [hl]
 	ret nz
-
 .nope
-	jp Function4357
+	jp DeleteMapObject
 ; 4f33
 
-Function4f33: ; 4f33
+StepType14: ; 4f33
+StepType15: ; 4f33
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4f3a
-	dw Function4f43
-; 4f3a
+; anonymous dw
+	dw .Init
+	dw .Run
 
-Function4f3a: ; 4f3a
+.Init
 	xor a
 	ld hl, OBJECT_29
 	add hl, bc
 	ld [hl], a
 	call IncrementObjectStructField28
-Function4f43: ; 4f43
+.Run
 	ld hl, OBJECT_29
 	add hl, bc
 	ld d, [hl]
@@ -2234,7 +1758,7 @@
 	dec [hl]
 	jr z, .ok
 	ld a, [hl]
-	call Function4f6c
+	call .GetSign
 	ld hl, OBJECT_29
 	add hl, bc
 	ld [hl], a
@@ -2245,11 +1769,10 @@
 	ret
 
 .ok
-	call Function4357
+	call DeleteMapObject
 	ret
-; 4f6c
 
-Function4f6c: ; 4f6c
+.GetSign
 	ld hl, OBJECT_30
 	add hl, bc
 	and 1
@@ -2260,26 +1783,25 @@
 	ret
 ; 4f77
 
-Function4f77: ; 4f77
+StepType16: ; 4f77
 	call Object28AnonymousJumptable ; ????
 ; 4f7a
-
-Function4f7a: ; 4f7a
+StepType17: ; 4f7a
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4f83
-	dw Function4f83
-	dw Function4f83
+; anonymous dw
+	dw .null
+	dw .null
+	dw .null
+.null
 ; 4f83
 
-Function4f83: ; 4f83
+SkyfallTop: ; 4f83
 	call Object28AnonymousJumptable
-; anonymous jumptable
-	dw Function4f8a
-	dw Function4f99
-; 4f8a
+; anonymous dw
+	dw .Init
+	dw .Run
 
-Function4f8a: ; 4f8a
+.Init
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_10
@@ -2287,9 +1809,8 @@
 	add hl, bc
 	ld [hl], 16
 	call IncrementObjectStructField28
-; 4f99
 
-Function4f99: ; 4f99
+.Run:
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -2302,15 +1823,11 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 4fb2
 
-Function4fb2: ; 4fb2
-	ret
-; 4fb3
-
-Function4fb3: ; 4fb3
+MobileFn_4fb2: mobile
 	ld hl, OBJECT_29
 	add hl, bc
 	inc [hl]
@@ -2327,12 +1844,10 @@
 	add hl, bc
 	ld [hl], a
 	ret
-; 4fcd
 
 .y ; 4fcd
 	db 0, -1, -2, -3, -4, -3, -2, -1
 ; 4fd5
-
 UpdateJumpPosition: ; 4fd5
 	call GetStepVector
 	ld a, h
@@ -2351,29 +1866,27 @@
 	add hl, bc
 	ld [hl], a
 	ret
-; 4ff0
 
 .y ; 4ff0
 	db  -4,  -6,  -8, -10, -11, -12, -12, -12
 	db -11, -10,  -9,  -8,  -6,  -4,   0,   0
 ; 5000
-
 Function5000: ; unscripted?
-; copy [wc2de] to [wc2df]
-	ld a, [wc2de]
-	ld hl, wc2df
+; copy [wPlayerNextMovement] to [wPlayerMovement]
+	ld a, [wPlayerNextMovement]
+	ld hl, wPlayerMovement
 	ld [hl], a
-; load [wc2de] with movement_step_sleep_1
+; load [wPlayerNextMovement] with movement_step_sleep_1
 	ld a, movement_step_sleep_1
-	ld [wc2de], a
-; recover the previous value of [wc2de]
+	ld [wPlayerNextMovement], a
+; recover the previous value of [wPlayerNextMovement]
 	ld a, [hl]
 	ret
 ; 500e
 
-Function500e: ; scripted
+GetMovementByte:
 	ld hl, wMovementDataPointer
-	call Function1aae
+	call _GetMovementByte
 	ret
 ; 5015
 
@@ -2383,7 +1896,7 @@
 	ld e, [hl]
 	inc [hl]
 	ld d, 0
-	ld hl, wMovementPerson
+	ld hl, wc2e2
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -2407,7 +1920,7 @@
 	ret
 ; 5037
 
-Function5037: ; 5037
+_GetMovementPerson: ; 5037
 	ld hl, GetMovementPerson
 	jp HandleMovementData
 ; 503d
@@ -2418,19 +1931,18 @@
 ; 5041
 
 HandleMovementData: ; 5041
-	call CopyMovementPointer
+	call .StorePointer
 .loop
 	xor a
-	ld [wc2ea], a
-	call GetMovementByte
+	ld [wMovementByteWasControlSwitch], a
+	call JumpMovementPointer
 	call DoMovementFunction
-	ld a, [wc2ea]
+	ld a, [wMovementByteWasControlSwitch]
 	and a
 	jr nz, .loop
 	ret
-; 5055
 
-CopyMovementPointer: ; 5055
+.StorePointer
 	ld a, l
 	ld [wMovementPointer], a
 	ld a, h
@@ -2438,7 +1950,7 @@
 	ret
 ; 505e
 
-GetMovementByte: ; 505e
+JumpMovementPointer: ; 505e
 	ld hl, wMovementPointer
 	ld a, [hli]
 	ld h, [hl]
@@ -2448,7 +1960,7 @@
 
 ContinueReadingMovement: ; 5065
 	ld a, 1
-	ld [wc2ea], a
+	ld [wMovementByteWasControlSwitch], a
 	ret
 ; 506b
 
@@ -2461,12 +1973,9 @@
 	ret
 ; 5075
 
-
-; 5075
 INCLUDE "engine/movement.asm"
 ; 54b8
 
-
 ApplyMovementToFollower: ; 54b8
 	ld e, a
 	ld a, [wObjectFollow_Follower]
@@ -2478,22 +1987,22 @@
 	cp d
 	ret nz
 	ld a, e
-	cp $3e
+	cp movement_step_sleep_1
 	ret z
-	cp $47
+	cp movement_step_end
 	ret z
-	cp $4b
+	cp movement_step_4b
 	ret z
-	cp $50
+	cp movement_step_bump
 	ret z
-	cp $8
+	cp movement_turn_step_right + 1
 	ret c
 	push af
-	ld hl, wd4d0
+	ld hl, wFollowerMovementQueueLength
 	inc [hl]
 	ld e, [hl]
 	ld d, 0
-	ld hl, wd4d1
+	ld hl, wFollowMovementQueue
 	add hl, de
 	pop af
 	ld [hl], a
@@ -2500,8 +2009,8 @@
 	ret
 ; 54e6
 
-Function54e6: ; 54e6
-	ld hl, wd4d0
+GetFollowerNextMovementByte: ; 54e6
+	ld hl, wFollowerMovementQueueLength
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -2510,7 +2019,7 @@
 	dec [hl]
 	ld e, a
 	ld d, 0
-	ld hl, wd4d1
+	ld hl, wFollowMovementQueue
 	add hl, de
 	inc e
 	ld a, -1
@@ -2523,14 +2032,12 @@
 	ret
 
 .done
-	call Function550a
+	call .CancelFollowIfLeaderMissing
 	ret c
-
 	ld a, movement_step_sleep_1
 	ret
-; 550a
 
-Function550a: ; 550a
+.CancelFollowIfLeaderMissing
 	ld a, [wObjectFollow_Leader]
 	cp -1
 	jr z, .nope
@@ -2546,7 +2053,7 @@
 	ret
 
 .nope
-	ld a, $ff
+	ld a, -1
 	ld [wObjectFollow_Follower], a
 	ld a, movement_step_end
 	scf
@@ -2565,7 +2072,6 @@
 	; vtile, palette, movement
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SHADOW
 ; 5538
-
 SpawnStrengthBoulderDust: ; 5538
 	push bc
 	ld de, .BoulderDustObject
@@ -2577,7 +2083,6 @@
 .BoulderDustObject
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_BOULDERDUST
 ; 5547
-
 SpawnEmote: ; 5547
 	push bc
 	ld de, .EmoteObject
@@ -2589,7 +2094,6 @@
 .EmoteObject
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_EMOTE
 ; 5556
-
 ShakeGrass: ; 5556
 	push bc
 	ld de, .data_5562
@@ -2601,7 +2105,6 @@
 .data_5562
 	db $00, PAL_OW_TREE, SPRITEMOVEDATA_GRASS
 ; 5565
-
 ShakeScreen: ; 5565
 	push bc
 	push af
@@ -2616,7 +2119,6 @@
 .ScreenShakeObject
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SCREENSHAKE
 ; 5579
-
 DespawnEmote: ; 5579
 	push bc
 	ld a, [hMapObjectIndexBuffer]
@@ -2624,9 +2126,8 @@
 	call .DeleteEmote
 	pop bc
 	ret
-; 5582
 
-.DeleteEmote: ; 5582
+.DeleteEmote
 	ld de, ObjectStructs
 	ld a, NUM_OBJECT_STRUCTS
 .loop
@@ -2645,7 +2146,6 @@
 	ld bc, OBJECT_STRUCT_LENGTH
 	call ByteFill
 	pop bc
-
 .next
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, de
@@ -2660,7 +2160,6 @@
 InitTempObject: ; 55ac
 	call FindFirstEmptyObjectStruct
 	ret nc
-
 	ld d, h
 	ld e, l
 	callba CopyTempObjectToObjectStruct
@@ -2676,7 +2175,6 @@
 	inc hl
 	ld [hl], -1
 	inc hl
-
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -2685,10 +2183,8 @@
 	ld [hli], a
 	ld a, [de]
 	ld [hli], a
-
 	ld a, [hMapObjectIndexBuffer]
 	ld [hli], a
-
 	push hl
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
@@ -2697,7 +2193,6 @@
 	add hl, bc
 	ld e, [hl]
 	pop hl
-
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -2710,7 +2205,6 @@
 	ld a, [VramState]
 	bit 0, a
 	ret z
-
 	ld bc, ObjectStructs
 	xor a
 .loop
@@ -2718,7 +2212,6 @@
 	call GetObjectSprite
 	jr z, .ok
 	call Function565c
-
 .ok
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
@@ -2735,16 +2228,13 @@
 	call Function5645 ; clear sprites
 	ld a, PLAYER
 	call Function5629 ; respawn player
-
 	ld a, [wBattleScriptFlags]
 	bit 7, a
 	jr z, .ok
-
 	ld a, [hLastTalked]
 	and a
 	jr z, .ok
 	call Function5629 ; respawn opponent
-
 .ok
 	call _UpdateSprites
 	ret
@@ -2761,7 +2251,6 @@
 Function5629: ; 5629
 	cp NUM_OBJECTS
 	ret nc
-
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
@@ -2768,14 +2257,11 @@
 	ld a, [hl]
 	cp -1
 	ret z
-
 	cp NUM_OBJECT_STRUCTS
 	ret nc
-
 	call GetObjectStruct
 	call GetObjectSprite
 	ret z
-
 	call Function5673
 	ret
 ; 5645
@@ -2839,7 +2325,7 @@
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
 	ld [hl], a
-	callba Function463f ; no need to farcall
+	callba UpdateTallGrassFlags ; no need to farcall
 	ret
 ; 56a3
 
@@ -2859,7 +2345,6 @@
 	add $b
 	cp d
 	jr c, .nope
-
 .equal_x
 	ld a, [YCoord]
 	cp e
@@ -2868,7 +2353,6 @@
 	add $a
 	cp e
 	jr c, .nope
-
 .equal_y
 	xor a
 	ret
@@ -2879,7 +2363,7 @@
 ; 56cd
 
 Function56cd: ; 56cd
-	ld a, [wd14c]
+	ld a, [wFollowNotExactPersonX]
 	ld d, a
 	ld hl, OBJECT_SPRITE_X_OFFSET
 	add hl, bc
@@ -2892,7 +2376,6 @@
 	jr nc, .ok1
 	cp $a0
 	jp nc, .nope
-
 .ok1
 	and %00000111
 	ld d, 2
@@ -2899,7 +2382,6 @@
 	cp 4
 	jr c, .ok2
 	ld d, 3
-
 .ok2
 	ld a, [hl]
 	srl a
@@ -2908,10 +2390,9 @@
 	cp SCREEN_WIDTH
 	jr c, .ok3
 	sub $20
-
 .ok3
 	ld [hUsedSpriteIndex], a
-	ld a, [wd14d]
+	ld a, [wFollowNotExactPersonY]
 	ld e, a
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
@@ -2924,7 +2405,6 @@
 	jr nc, .ok4
 	cp $90
 	jr nc, .nope
-
 .ok4
 	and %00000111
 	ld e, 2
@@ -2931,7 +2411,6 @@
 	cp 4
 	jr c, .ok5
 	ld e, 3
-
 .ok5
 	ld a, [hl]
 	srl a
@@ -2940,7 +2419,6 @@
 	cp $12
 	jr c, .ok6
 	sub $20
-
 .ok6
 	ld [hUsedSpriteTile], a
 	ld hl, OBJECT_PALETTE
@@ -2953,7 +2431,6 @@
 	ld a, e
 	add 2
 	ld e, a
-
 .ok7
 	ld a, d
 	ld [hFFBF], a
@@ -2979,11 +2456,9 @@
 	ld a, [hl]
 	cp $60
 	jr nc, .nope
-
 .ok8
 	dec d
 	jr nz, .next
-
 .ok9
 	dec e
 	jr nz, .loop
@@ -2996,12 +2471,11 @@
 ; 576a
 
 Function576a:: ; 576a
-	call Function5771
+	call .ResetStepVector
 	call Function5781
 	ret
-; 5771
 
-Function5771: ; 5771
+.ResetStepVector
 	xor a
 	ld [wPlayerStepVectorX], a
 	ld [wPlayerStepVectorY], a
@@ -3019,7 +2493,6 @@
 	call GetObjectSprite
 	jr z, .next
 	call Function437b
-
 .next
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
@@ -3034,13 +2507,13 @@
 
 Function579d: ; 579d
 	ld a, $3e
-	ld [wc2de], a
-	ld [wc2df], a
+	ld [wPlayerNextMovement], a
+	ld [wPlayerMovement], a
 	xor a
 	ld [wd04e], a
 	ld [PlayerObjectStepFrame], a
 	call Function57bc
-	callba CheckWarpCollision
+	callba CheckWarpFacingDown
 	call c, SpawnInFacingDown
 	call SpawnInCustomFacing
 	ret
@@ -3064,9 +2537,8 @@
 	ret z
 	ld a, [wPlayerSpriteSetupFlags]
 	and 3
-rept 2
 	add a
-endr
+	add a
 	jr ContinueSpawnFacing
 ; 57d9
 
@@ -3082,7 +2554,6 @@
 	ld a, d
 	and %10000000
 	ret z
-
 	ld bc, 0 ; debug?
 	ld hl, OBJECT_FACING
 	add hl, bc
@@ -3089,7 +2560,6 @@
 	ld a, [hl]
 	or d
 	ld [hl], a
-
 	ld a, d
 	swap a
 	and %00000111
@@ -3112,7 +2582,7 @@
 	ret c
 	ld a, c
 	call SetFollowerIfVisible
-	callba Function848a
+	callba QueueFollowerFirstStep
 	ret
 ; 5815
 
@@ -3198,7 +2668,6 @@
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	set 5, [hl]
-
 .next
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
@@ -3244,7 +2713,6 @@
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	res 5, [hl]
-
 .next
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
@@ -3273,7 +2741,6 @@
 	ld a, [hl]
 	cp -1
 	jp z, Function5903 ; a jr would have been appropriate here
-
 	push bc
 	call GetMapObject
 	ld hl, MAPOBJECT_MOVEMENT
@@ -3280,11 +2747,9 @@
 	add hl, bc
 	ld a, [hl]
 	pop bc
-
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_00
@@ -3303,7 +2768,6 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_00
@@ -3315,7 +2779,6 @@
 	db SPRITEMOVEDATA_STANDING_LEFT
 	db SPRITEMOVEDATA_STANDING_RIGHT
 ; 5920
-
 _UpdateSprites:: ; 5920
 	ld a, [VramState]
 	bit 0, a
@@ -3331,15 +2794,13 @@
 	pop af
 	ld [hOAMUpdate], a
 	ret
-; 593a
 
-.fill: ; 593a
+.fill
 	ld a, [VramState]
 	bit 1, a
 	ld b, SpritesEnd % $100
 	jr z, .ok
 	ld b, 28 * 4
-
 .ok
 	ld a, [hUsedSpriteIndex]
 	cp b
@@ -3361,30 +2822,26 @@
 	push hl
 	push de
 	push bc
-	ld a, [wd14c]
+	ld a, [wFollowNotExactPersonX]
 	ld d, a
-	ld a, [wd14d]
+	ld a, [wFollowNotExactPersonY]
 	ld e, a
 	ld bc, ObjectStructs
 	ld a, NUM_OBJECT_STRUCTS
-
 .loop
 	push af
 	call GetObjectSprite
 	jr z, .skip
-
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
 	ld a, [hl]
 	add d
 	ld [hl], a
-
 	ld hl, OBJECT_SPRITE_Y
 	add hl, bc
 	ld a, [hl]
 	add e
 	ld [hl], a
-
 .skip
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
@@ -3393,10 +2850,9 @@
 	pop af
 	dec a
 	jr nz, .loop
-
 	xor a
-	ld [wd14c], a
-	ld [wd14d], a
+	ld [wFollowNotExactPersonX], a
+	ld [wFollowNotExactPersonY], a
 	pop bc
 	pop de
 	pop hl
@@ -3415,28 +2871,24 @@
 	ld c, PRIORITY_LOW
 	call .InitSpritesByPriority
 	ret
-; 59a4
 
-.DeterminePriorities: ; 59a4
+.DeterminePriorities
 	xor a
-	ld hl, wc2eb
+	ld hl, wMovementPointer
 	ld bc, NUM_OBJECT_STRUCTS
 	call ByteFill
-
 	ld d, 0
 	ld bc, ObjectStructs
-	ld hl, wc2eb
+	ld hl, wMovementPointer
 .loop
 	push hl
 	call GetObjectSprite
 	jr z, .skip
-
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld a, [hl]
 	cp STANDING
 	jr z, .skip
-
 ; Define the sprite priority.
 	ld e, PRIORITY_LOW
 	ld hl, OBJECT_FLAGS2
@@ -3466,7 +2918,6 @@
 	ld a, d
 	or e
 	ld [hli], a
-
 .next
 	inc d
 	ld a, d
@@ -3473,9 +2924,8 @@
 	cp NUM_OBJECT_STRUCTS
 	jr nz, .loop
 	ret
-; 59f3
 
-.InitSpritesByPriority: ; 59f3
+.InitSpritesByPriority
 	ld hl, wMovementPointer
 .next_sprite
 	ld a, [hli]
@@ -3484,7 +2934,6 @@
 	ret z
 	cp c
 	jr nz, .next_sprite
-
 	push bc
 	push hl
 	ld a, d
@@ -3494,21 +2943,18 @@
 	pop hl
 	pop bc
 	jr .next_sprite
-; 5a0d
 
-.InitSprite: ; 5a0d
+.InitSprite
 	ld hl, OBJECT_SPRITE_TILE
 	add hl, bc
 	ld a, [hl]
 	and %01111111
 	ld [hFFC1], a
-
 	xor a
 	bit 7, [hl]
 	jr nz, .skip1
 	or %00001000
 .skip1
-
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	ld e, [hl]
@@ -3516,12 +2962,10 @@
 	jr z, .skip2
 	or %10000000
 .skip2
-
 	bit 4, e
 	jr z, .skip3
 	or %00010000
 .skip3
-
 	ld hl, OBJECT_PALETTE
 	add hl, bc
 	ld d, a
@@ -3529,7 +2973,6 @@
 	and %00000111
 	or d
 	ld d, a
-
 	xor a
 	bit 3, e
 	jr z, .skip4
@@ -3536,37 +2979,28 @@
 	or %10000000
 .skip4
 	ld [hFFC2], a
-
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
 	ld a, [hl]
-
 	ld hl, OBJECT_SPRITE_X_OFFSET
 	add hl, bc
 	add [hl]
-
 	add 8
-
 	ld e, a
-	ld a, [wd14c]
+	ld a, [wFollowNotExactPersonX]
 	add e
 	ld [hFFBF], a
-
 	ld hl, OBJECT_SPRITE_Y
 	add hl, bc
 	ld a, [hl]
-
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
 	add [hl]
-
 	add 12
-
 	ld e, a
-	ld a, [wd14d]
+	ld a, [wFollowNotExactPersonY]
 	add e
 	ld [hFFC0], a
-
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld a, [hl]
@@ -3574,7 +3008,6 @@
 	jp z, .done
 	cp NUM_FACINGS
 	jp nc, .done
-
 	ld l, a
 	ld h, 0
 	add hl, hl
@@ -3583,7 +3016,6 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-
 	ld a, [hUsedSpriteIndex]
 	ld c, a
 	ld b, Sprites / $100
@@ -3592,25 +3024,19 @@
 	add c
 	cp SpritesEnd % $100
 	jr nc, .full
-
 .addsprite
 	ld a, [hFFC0]
 	add [hl]
 	inc hl
-
 	ld [bc], a
 	inc c
-
 	ld a, [hFFBF]
 	add [hl]
 	inc hl
-
 	ld [bc], a
 	inc c
-
 	ld e, [hl]
 	inc hl
-
 	ld a, [hFFC1]
 	bit 2, e
 	jr z, .nope1
@@ -3618,10 +3044,8 @@
 .nope1
 	add [hl]
 	inc hl
-
 	ld [bc], a
 	inc c
-
 	ld a, e
 	bit 1, a
 	jr z, .nope2
@@ -3632,15 +3056,12 @@
 	or d
 	ld [bc], a
 	inc c
-
 	ld a, [hUsedSpriteTile]
 	dec a
 	ld [hUsedSpriteTile], a
 	jr nz, .addsprite
-
 	ld a, c
 	ld [hUsedSpriteIndex], a
-
 .done
 	xor a
 	ret
@@ -3648,20 +3069,17 @@
 .full
 	scf
 	ret
-; 5ac2
 
-.GetObjectStructPointer: ; 5ac2
+.GetObjectStructPointer
 	ld c, a
 	ld b, 0
 	ld hl, .Addresses
-rept 2
-	add hl,bc
-endr
+	add hl, bc
+	add hl, bc
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
 	ret
-; 5ace
 
 .Addresses ; 5ace
 	dw PlayerStruct
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -6,9 +6,8 @@
 	ld c, a
 	ld b, 0
 	ld hl, MapSetupScripts
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -33,11 +32,9 @@
 
 MapSetupScript_Teleport: ; 1538f
 	db map_prolong_sprites
-
 MapSetupScript_Fly: ; 15390
 	db map_fade_out_palettes
 	db map_keep_roam
-
 MapSetupScript_Warp: ; 15392
 	db map_lcd_off
 	db map_sound_off
@@ -61,7 +58,7 @@
 	db map_fade_in_palettes
 	db map_animations_on
 	db map_wildmons
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_BadWarp: ; 153a9
 	db map_load_spawn
@@ -85,7 +82,7 @@
 	db map_fade_in_palettes
 	db map_animations_on
 	db map_wildmons
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_Connection: ; 153bf
 	db map_animations_off
@@ -104,14 +101,12 @@
 	db map_wildmons
 	db map_update_roam
 	db map_animations_on
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_Fall: ; 153d0
 	db map_prolong_sprites
-
 MapSetupScript_Door: ; 153d1
 	db map_fade_out_palettes
-
 MapSetupScript_Train: ; 153d2
 	db map_load_warp
 	db map_attributes
@@ -133,7 +128,7 @@
 	db map_animations_on
 	db map_wildmons
 	db map_update_roam
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_ReloadMap: ; 153e7
 	db map_fade
@@ -151,7 +146,7 @@
 	db map_fade_in_palettes
 	db map_animations_on
 	db map_wildmons
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_LinkReturn: ; 153f7
 	db map_fade
@@ -170,7 +165,7 @@
 	db map_animations_on
 	db map_wildmons
 	db map_text_scroll_off
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_Continue: ; 15408
 	db map_lcd_off
@@ -190,12 +185,12 @@
 	db map_fade_in_palettes
 	db map_animations_on
 	db map_wildmons
-	db map_end_setup_script
+	db map_end
 
 MapSetupScript_Submenu: ; 1541a
 	db map_load_blocks
 	db map_connection_blocks
-	db map_end_setup_script
+	db map_end
 
 
 ReadMapSetupScript: ; 1541d
@@ -252,7 +247,7 @@
 	dba RotatePalettesRightMapAndMusic ; 06
 	dba EnterMapMusic ; 07
 	dba ForceMapMusic ; 08
-	dba RotatePalettesLeftMusic ; 09
+	dba FadeInMusic ; 09
 	dba LoadBlockData ; 0a
 	dba LoadNeighboringBlockData ; 0b
 	dba SaveScreen ; 0c
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -70,10 +70,10 @@
 Pharmacist: ; 15aae
 	call FarReadMart
 	call LoadStandardMenuDataHeader
-	ld hl, UnknownText_0x15e90
+	ld hl, Text_Pharmacist_Intro
 	call MartTextBox
 	call BuyMenu
-	ld hl, UnknownText_0x15eae
+	ld hl, Text_Pharmacist_ComeAgain
 	call MartTextBox
 	ret
 ; 15ac4
@@ -185,9 +185,9 @@
 .TopMenu: ; 15b6e
 	ld hl, MenuDataHeader_BuySell
 	call CopyMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	jr c, .quit
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .buy
 	cp $2
@@ -369,7 +369,7 @@
 
 BuyMenu: ; 15c62
 	call FadeToMenu
-	callba Function8000
+	callba BlankScreen
 	xor a
 	ld [wd045 + 1], a
 	ld a, 1
@@ -377,7 +377,7 @@
 .loop
 	call BuyMenuLoop ; menu loop
 	jr nc, .loop
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ret
 ; 15c7d
 
@@ -470,7 +470,7 @@
 
 
 BuyMenuLoop: ; 15cef
-	callba PlaceMoneyTopRightOW
+	callba PlaceMoneyTopRight
 	call UpdateSprites
 	ld hl, MenuDataHeader_Buy
 	call CopyMenuDataHeader
@@ -478,13 +478,13 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd045 + 1]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wd045 + 1], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wd045], a
 	call SpeechTextBox
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp B_BUTTON
 	jr z, .set_carry
 	cp A_BUTTON
@@ -493,7 +493,7 @@
 .useless_pointer
 	call MartAskPurchaseQuantity
 	jr c, .cancel
-	call Function15d97
+	call MartConfirmPurchase
 	jr c, .cancel
 	ld de, Money
 	ld bc, hMoneyTemp
@@ -546,12 +546,12 @@
 	ld [wItemQuantityBuffer], a
 	ld a, MARTTEXT_HOW_MANY
 	call LoadBuyMenuText
-	callba Function24fc9
+	callba SelectQuantityToBuy
 	call ExitMenu
 	ret
 ; 15d97
 
-Function15d97: ; 15d97
+MartConfirmPurchase: ; 15d97
 	predef PartyMonItemName
 	ld a, MARTTEXT_COSTS_THIS_MUCH
 	call LoadBuyMenuText
@@ -606,7 +606,7 @@
 	call .GetSalePrice
 	ld a, 99
 	ld [wItemQuantityBuffer], a
-	callba Function24fcf
+	callba RooftopSale_SelectQuantityToBuy
 	call ExitMenu
 	ret
 ; 15df9
@@ -662,7 +662,7 @@
 ; 15e30
 
 .PrintBCDPrices: ; 15e30
-	ld a, [wcf77]
+	ld a, [wScrollingMenuCursorPosition]
 	ld c, a
 	ld b, 0
 	ld hl, wMartItem1BCD
@@ -764,7 +764,7 @@
 	db "@"
 ; 0x15e90
 
-UnknownText_0x15e90: ; 0x15e90
+Text_Pharmacist_Intro: ; 0x15e90
 	; What's up? Need some medicine?
 	text_jump UnknownText_0x1c4e5f
 	db "@"
@@ -800,7 +800,7 @@
 	db "@"
 ; 0x15eae
 
-UnknownText_0x15eae: ; 0x15eae
+Text_Pharmacist_ComeAgain: ; 0x15eae
 	; All right. See you around.
 	text_jump UnknownText_0x1c4ef6
 	db "@"
@@ -809,30 +809,29 @@
 
 SellMenu: ; 15eb3
 	call DisableSpriteUpdates
-	callba Function106a5
-.asm_15ebc
-	callba Function106be
+	callba DepositSellInitPackBuffers
+.loop
+	callba DepositSellPack
 	ld a, [wcf66]
 	and a
-	jp z, Function15ece
-	call Function15ee0
-	jr .asm_15ebc
-; 15ece
+	jp z, .quit
+	call .TryToSellItem
+	jr .loop
 
-Function15ece: ; 15ece
-	call Function2b74
+.quit
+	call ReturnToMapWithSpeechTextbox
 	and a
 	ret
 ; 15ed3
 
-Function15ed3: ; unreferenced
-	ld hl, UnknownText_0x15edb
+.NothingToSell: ; unreferenced
+	ld hl, .NothingToSellText
 	call MenuTextBoxBackup
 	and a
 	ret
 ; 15edb
 
-UnknownText_0x15edb: ; 0x15edb
+.NothingToSellText: ; 0x15edb
 	; You don't have anything to sell.
 	text_jump UnknownText_0x1c4f12
 	db "@"
@@ -839,15 +838,15 @@
 ; 0x15ee0
 
 
-Function15ee0: ; 15ee0
+.TryToSellItem: ; 15ee0
 	callba CheckItemMenu
 	ld a, [wItemAttributeParamBuffer]
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	ret
 ; 15eee
 
-.jumptable: ; 15eee
+.dw: ; 15eee
 	dw .try_sell
 	dw .cant_buy
 	dw .cant_buy
@@ -875,8 +874,8 @@
 .okay_to_sell
 	ld hl, Text_Mart_SellHowMany
 	call PrintText
-	callba PlaceMoneyTopRightMenu
-	callba Function24fe1
+	callba PlaceMoneyAtTopLeftOfTextbox
+	callba SelectQuantityToSell
 	call ExitMenu
 	jr c, .declined
 	hlcoord 1, 14
@@ -899,7 +898,7 @@
 	ld hl, Text_Mart_SoldForAmount
 	call PrintTextBoxText
 	call PlayTransactionSound
-	callba PlaceMoneyBottomLeftOW
+	callba PlaceMoneyBottomLeft
 	call JoyWaitAorB
 
 .declined
--- /dev/null
+++ b/engine/math.asm
@@ -1,0 +1,196 @@
+_Multiply:: ; 66de
+
+; hMultiplier is one byte.
+	ld a, 8
+	ld b, a
+
+	xor a
+	ld [hProduct], a
+	ld [hMathBuffer + 1], a
+	ld [hMathBuffer + 2], a
+	ld [hMathBuffer + 3], a
+	ld [hMathBuffer + 4], a
+
+
+.loop
+	ld a, [hMultiplier]
+	srl a
+	ld [hMultiplier], a
+	jr nc, .next
+
+	ld a, [hMathBuffer + 4]
+	ld c, a
+	ld a, [hMultiplicand + 2]
+	add c
+	ld [hMathBuffer + 4], a
+
+	ld a, [hMathBuffer + 3]
+	ld c, a
+	ld a, [hMultiplicand + 1]
+	adc c
+	ld [hMathBuffer + 3], a
+
+	ld a, [hMathBuffer + 2]
+	ld c, a
+	ld a, [hMultiplicand + 0]
+	adc c
+	ld [hMathBuffer + 2], a
+
+	ld a, [hMathBuffer + 1]
+	ld c, a
+	ld a, [hProduct]
+	adc c
+	ld [hMathBuffer + 1], a
+
+.next
+	dec b
+	jr z, .done
+
+
+; hMultiplicand <<= 1
+
+	ld a, [hMultiplicand + 2]
+	add a
+	ld [hMultiplicand + 2], a
+
+	ld a, [hMultiplicand + 1]
+	rla
+	ld [hMultiplicand + 1], a
+
+	ld a, [hMultiplicand + 0]
+	rla
+	ld [hMultiplicand + 0], a
+
+	ld a, [hProduct]
+	rla
+	ld [hProduct], a
+
+	jr .loop
+
+
+.done
+	ld a, [hMathBuffer + 4]
+	ld [hProduct + 3], a
+
+	ld a, [hMathBuffer + 3]
+	ld [hProduct + 2], a
+
+	ld a, [hMathBuffer + 2]
+	ld [hProduct + 1], a
+
+	ld a, [hMathBuffer + 1]
+	ld [hProduct + 0], a
+
+	ret
+; 673e
+
+
+_Divide:: ; 673e
+	xor a
+	ld [hMathBuffer + 0], a
+	ld [hMathBuffer + 1], a
+	ld [hMathBuffer + 2], a
+	ld [hMathBuffer + 3], a
+	ld [hMathBuffer + 4], a
+
+	ld a, 9
+	ld e, a
+
+.loop
+	ld a, [hMathBuffer + 0]
+	ld c, a
+	ld a, [hDividend + 1]
+	sub c
+	ld d, a
+
+	ld a, [hDivisor]
+	ld c, a
+	ld a, [hDividend + 0]
+	sbc c
+	jr c, .next
+
+	ld [hDividend + 0], a
+
+	ld a, d
+	ld [hDividend + 1], a
+
+	ld a, [hMathBuffer + 4]
+	inc a
+	ld [hMathBuffer + 4], a
+
+	jr .loop
+
+.next
+	ld a, b
+	cp 1
+	jr z, .done
+
+	ld a, [hMathBuffer + 4]
+	add a
+	ld [hMathBuffer + 4], a
+
+	ld a, [hMathBuffer + 3]
+	rla
+	ld [hMathBuffer + 3], a
+
+	ld a, [hMathBuffer + 2]
+	rla
+	ld [hMathBuffer + 2], a
+
+	ld a, [hMathBuffer + 1]
+	rla
+	ld [hMathBuffer + 1], a
+
+	dec e
+	jr nz, .next2
+
+	ld e, 8
+	ld a, [hMathBuffer + 0]
+	ld [hDivisor], a
+	xor a
+	ld [hMathBuffer + 0], a
+
+	ld a, [hDividend + 1]
+	ld [hDividend + 0], a
+
+	ld a, [hDividend + 2]
+	ld [hDividend + 1], a
+
+	ld a, [hDividend + 3]
+	ld [hDividend + 2], a
+
+.next2
+	ld a, e
+	cp 1
+	jr nz, .okay
+	dec b
+
+.okay
+	ld a, [hDivisor]
+	srl a
+	ld [hDivisor], a
+
+	ld a, [hMathBuffer + 0]
+	rr a
+	ld [hMathBuffer + 0], a
+
+	jr .loop
+
+.done
+	ld a, [hDividend + 1]
+	ld [hDivisor], a
+
+	ld a, [hMathBuffer + 4]
+	ld [hDividend + 3], a
+
+	ld a, [hMathBuffer + 3]
+	ld [hDividend + 2], a
+
+	ld a, [hMathBuffer + 2]
+	ld [hDividend + 1], a
+
+	ld a, [hMathBuffer + 1]
+	ld [hDividend + 0], a
+
+	ret
+; 67c1
--- a/engine/menu.asm
+++ b/engine/menu.asm
@@ -1,54 +1,57 @@
-Function2400e:: ; 2400e
+_2DMenu_:: ; 2400e
 	ld hl, CopyMenuData2
-	ld a, [wcf94]
+	ld a, [wMenuData2_2DMenuItemStringsBank]
 	rst FarCall
-	call Function24085
+
+	call Draw2DMenu
 	call UpdateSprites
 	call ApplyTilemap
-	call Function2408f
+	call Get2DMenuSelection
 	ret
 ; 24022
 
-Function24022:: ; 24022
+_InterpretBattleMenu:: ; 24022
 	ld hl, CopyMenuData2
-	ld a, [wcf94]
+	ld a, [wMenuData2_2DMenuItemStringsBank]
 	rst FarCall
-	call Function24085
+
+	call Draw2DMenu
 	callba MobileTextBorder
 	call UpdateSprites
 	call ApplyTilemap
-	call Function2408f
+	call Get2DMenuSelection
 	ret
 ; 2403c
 
-Function2403c:: ; 2403c
+_InterpretMobileMenu:: ; 2403c
 	ld hl, CopyMenuData2
-	ld a, [wcf94]
+	ld a, [wMenuData2_2DMenuItemStringsBank]
 	rst FarCall
-	call Function24085
+
+	call Draw2DMenu
 	callba MobileTextBorder
 	call UpdateSprites
 	call ApplyTilemap
-	call Function2411a
-	ld hl, wcfa5
+	call Init2DMenuCursorPosition
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
-.asm_2405a
+.loop
 	call DelayFrame
 	callba Function10032e
 	ld a, [wcd2b]
 	and a
-	jr nz, .asm_24076
-	call Function241ba
-	ld a, [wcfa8]
+	jr nz, .quit
+	call MobileMenuJoypad
+	ld a, [wMenuJoypadFilter]
 	and c
-	jr z, .asm_2405a
-	call Function24098
+	jr z, .loop
+	call Mobile_GetMenuSelection
 	ret
 
-.asm_24076
-	ld a, [wcfa4]
+.quit
+	ld a, [w2DMenuNumCols]
 	ld c, a
-	ld a, [wcfa3]
+	ld a, [w2DMenuNumRows]
 	call SimpleMultiply
 	ld [wMenuCursorBuffer], a
 	and a
@@ -57,64 +60,63 @@
 
 
 
-Function24085: ; 24085
+Draw2DMenu: ; 24085
 	xor a
 	ld [hBGMapMode], a
 	call MenuBox
-	call Function240db
+	call Place2DMenuItemStrings
 	ret
 ; 2408f
 
-Function2408f: ; 2408f
-	call Function2411a
-	call Function1bc9
-	call Function1ff8
-
-Function24098: ; 24098
+Get2DMenuSelection: ; 2408f
+	call Init2DMenuCursorPosition
+	call StaticMenuJoypad
+	call MenuClickSound
+Mobile_GetMenuSelection: ; 24098
 	ld a, [wMenuData2Flags]
 	bit 1, a
-	jr z, .asm_240a6
-	call Function1bdd
-	bit 2, a
-	jr nz, .asm_240c9
+	jr z, .skip
+	call GetMenuJoypad
+	bit SELECT_F, a
+	jr nz, .quit1
 
-.asm_240a6
+.skip
 	ld a, [wMenuData2Flags]
 	bit 0, a
-	jr nz, .asm_240b4
-	call Function1bdd
-	bit 1, a
-	jr nz, .asm_240cb
+	jr nz, .skip2
+	call GetMenuJoypad
+	bit B_BUTTON_F, a
+	jr nz, .quit2
 
-.asm_240b4
-	ld a, [wcfa4]
+.skip2
+	ld a, [w2DMenuNumCols]
 	ld c, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	call SimpleMultiply
 	ld c, a
-	ld a, [wcfaa]
+	ld a, [wMenuCursorX]
 	add c
 	ld [wMenuCursorBuffer], a
 	and a
 	ret
 
-.asm_240c9
+.quit1
 	scf
 	ret
 
-.asm_240cb
+.quit2
 	scf
 	ret
 ; 240cd
 
-Function240cd: ; 240cd
+GetMenuNumberOfColumns: ; 240cd
 	ld a, [wMenuData2Items]
 	and $f
 	ret
 ; 240d3
 
-Function240d3: ; 240d3
+GetMenuNumberOfRows: ; 240d3
 	ld a, [wMenuData2Items]
 	swap a
 	and $f
@@ -121,110 +123,110 @@
 	ret
 ; 240db
 
-Function240db: ; 240db
-	ld hl, wcf95
+Place2DMenuItemStrings: ; 240db
+	ld hl, wMenuData2_2DMenuItemStringsAddr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 	call GetMenuTextStartCoord
 	call Coord2Tile
-	call Function240d3
+	call GetMenuNumberOfRows
 	ld b, a
-.asm_240eb
+.row
 	push bc
 	push hl
-	call Function240cd
+	call GetMenuNumberOfColumns
 	ld c, a
-.asm_240f1
+.col
 	push bc
-	ld a, [wcf94]
-	call Function201c
+	ld a, [wMenuData2_2DMenuItemStringsBank]
+	call Place2DMenuItemName
 	inc de
-	ld a, [wcf93]
+	ld a, [wMenuData2Spacing]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	pop bc
 	dec c
-	jr nz, .asm_240f1
+	jr nz, .col
 	pop hl
-	ld bc, $28
+	ld bc, 2 * SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_240eb
-	ld hl, wcf98
+	jr nz, .row
+	ld hl, wMenuData2_2DMenuFunctionAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	or h
 	ret z
-	ld a, [wcf97]
+	ld a, [wMenuData2_2DMenuFunctionBank]
 	rst FarCall
 	ret
 ; 2411a
 
 
-Function2411a: ; 2411a (9:411a)
+Init2DMenuCursorPosition: ; 2411a (9:411a)
 	call GetMenuTextStartCoord
 	ld a, b
-	ld [wcfa1], a
+	ld [w2DMenuCursorInitY], 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 [w2DMenuCursorInitX], a
+	call GetMenuNumberOfRows
+	ld [w2DMenuNumRows], a
+	call GetMenuNumberOfColumns
+	ld [w2DMenuNumCols], a
+	call .InitFlags_a
+	call .InitFlags_b
+	call .InitFlags_c
+	ld a, [w2DMenuNumCols]
 	ld e, a
 	ld a, [wMenuCursorBuffer]
 	ld b, a
 	xor a
-	ld d, $0
-.asm_24146
+	ld d, 0
+.loop
 	inc d
 	add e
 	cp b
-	jr c, .asm_24146
+	jr c, .loop
 	sub e
 	ld c, a
 	ld a, b
 	sub c
 	and a
-	jr z, .asm_24157
+	jr z, .reset1
 	cp e
-	jr z, .asm_24159
-	jr c, .asm_24159
-.asm_24157
-	ld a, $1
-.asm_24159
-	ld [wcfaa], a
-	ld a, [wcfa3]
+	jr z, .okay1
+	jr c, .okay1
+.reset1
+	ld a, 1
+.okay1
+	ld [wMenuCursorX], a
+	ld a, [w2DMenuNumRows]
 	ld e, a
 	ld a, d
 	and a
-	jr z, .asm_24169
+	jr z, .reset2
 	cp e
-	jr z, .asm_2416b
-	jr c, .asm_2416b
-.asm_24169
-	ld a, $1
-.asm_2416b
-	ld [MenuSelection2], a
+	jr z, .okay2
+	jr c, .okay2
+.reset2
+	ld a, 1
+.okay2
+	ld [wMenuCursorY], a
 	xor a
-	ld [wcfab], a
-	ld [wcfac], a
-	ld [wcfad], a
+	ld [wCursorOffCharacter], a
+	ld [wCursorCurrentTile], a
+	ld [wCursorCurrentTile + 1], a
 	ret
 ; 24179
 
-Function24179: ; 24179
+.InitFlags_a: ; 24179
 	xor a
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	ld [hli], a
 	ld [hld], a
 	ld a, [wMenuData2Flags]
@@ -235,58 +237,55 @@
 	ret
 ; 2418a
 
-Function2418a: ; 2418a
-	ld a, [wcf93]
+.InitFlags_b: ; 2418a
+	ld a, [wMenuData2Spacing]
 	or $20
-	ld [wcfa7], a
+	ld [w2DMenuCursorOffsets], a
 	ret
 ; 24193
 
-Function24193: ; 24193
+.InitFlags_c: ; 24193
 	ld hl, wMenuData2Flags
-	ld a, $1
+	ld a, A_BUTTON
 	bit 0, [hl]
-	jr nz, .asm_2419e
-	or $2
-
-.asm_2419e
+	jr nz, .skip
+	or B_BUTTON
+.skip
 	bit 1, [hl]
-	jr z, .asm_241a4
-	or $4
-
-.asm_241a4
-	ld [wcfa8], a
+	jr z, .skip2
+	or SELECT
+.skip2
+	ld [wMenuJoypadFilter], a
 	ret
 ; 241a8
 
 
-Function241a8:: ; 241a8
-	call Function24329
-Function241ab:: ; 241ab
-	ld hl, wcfa6
+_StaticMenuJoypad:: ; 241a8
+	call Place2DMenuCursor
+_ScrollingMenuJoypad:: ; 241ab
+	ld hl, w2DMenuFlags2
 	res 7, [hl]
 	ld a, [hBGMapMode]
 	push af
-	call Function24216
+	call MenuJoypadLoop
 	pop af
 	ld [hBGMapMode], a
 	ret
 ; 241ba
 
-Function241ba: ; 241ba
-	ld hl, wcfa6
+MobileMenuJoypad: ; 241ba
+	ld hl, w2DMenuFlags2
 	res 7, [hl]
 	ld a, [hBGMapMode]
 	push af
-	call Function2431a
-	call Function24249
-	jr nc, .asm_241cd
-	call Function24270
-
-.asm_241cd
+	call Move2DMenuCursor
+	call Do2DMenuRTCJoypad
+	jr nc, .skip_joypad
+	call _2DMenuInterpretJoypad
+.skip_joypad
 	pop af
 	ld [hBGMapMode], a
-	call Function1bdd
+	call GetMenuJoypad
 	ld c, a
 	ret
 ; 241d5
@@ -293,31 +292,30 @@
 
 
 Function241d5: ; 241d5
-	call Function24329
+; Unreferenced
+	call Place2DMenuCursor
 .loop
-	call Function2431a
+	call Move2DMenuCursor
 	call Function10402d ; BUG: This function is in another bank.
 	                    ; Pointer in current bank (9) is bogus.
-	call Function241fa
+	call .loop2
 	jr nc, .done
-	call Function24270
+	call _2DMenuInterpretJoypad
 	jr c, .done
-	ld a, [wcfa5]
+	ld a, [w2DMenuFlags1]
 	bit 7, a
 	jr nz, .done
-	call Function1bdd
+	call GetMenuJoypad
 	ld c, a
-	ld a, [wcfa8]
+	ld a, [wMenuJoypadFilter]
 	and c
 	jr z, .loop
 
 .done
 	ret
-; 241fa
 
-Function241fa: ; 241fa
-.loop
-	call Function24259
+.loop2
+	call Menu_WasButtonPressed
 	ret c
 	ld c, 1
 	ld b, 3
@@ -326,36 +324,36 @@
 	ret c
 	callba Function100337
 	ret c
-	ld a, [wcfa5]
+	ld a, [w2DMenuFlags1]
 	bit 7, a
-	jr z, .loop
+	jr z, .loop2
 	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]
+MenuJoypadLoop: ; 24216
+.loop
+	call Move2DMenuCursor
+	call .BGMap_OAM
+	call Do2DMenuRTCJoypad
+	jr nc, .done
+	call _2DMenuInterpretJoypad
+	jr c, .done
+	ld a, [w2DMenuFlags1]
 	bit 7, a
-	jr nz, .asm_24237
-	call Function1bdd
+	jr nz, .done
+	call GetMenuJoypad
 	ld b, a
-	ld a, [wcfa8]
+	ld a, [wMenuJoypadFilter]
 	and b
-	jr z, .asm_24216
+	jr z, .loop
 
-.asm_24237
+.done
 	ret
 ; 24238
 
-Function24238: ; 24238
+.BGMap_OAM: ; 24238
 	ld a, [hOAMUpdate]
 	push af
 	ld a, $1
@@ -368,27 +366,27 @@
 	ret
 ; 24249
 
-Function24249: ; 24249
-.asm_24249
+Do2DMenuRTCJoypad: ; 24249
+.loopRTC
 	call RTC
-	call Function24259
+	call Menu_WasButtonPressed
 	ret c
-	ld a, [wcfa5]
+	ld a, [w2DMenuFlags1]
 	bit 7, a
-	jr z, .asm_24249
+	jr z, .loopRTC
 	and a
 	ret
 ; 24259
 
-Function24259: ; 24259
-	ld a, [wcfa5]
+Menu_WasButtonPressed: ; 24259
+	ld a, [w2DMenuFlags1]
 	bit 6, a
-	jr z, .asm_24266
-	callab Function8cf62
+	jr z, .skip_to_joypad
+	callab PlaySpriteAnimationsAndDelayFrame
 
-.asm_24266
+.skip_to_joypad
 	call JoyTextDelay
-	call Function1bdd
+	call GetMenuJoypad
 	and a
 	ret z
 	scf
@@ -395,193 +393,451 @@
 	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
+_2DMenuInterpretJoypad: ; 24270
+	call GetMenuJoypad
+	bit A_BUTTON_F, a
+	jp nz, .a_b_start_select
+	bit B_BUTTON_F, a
+	jp nz, .a_b_start_select
+	bit SELECT_F, a
+	jp nz, .a_b_start_select
+	bit START_F, a
+	jp nz, .a_b_start_select
+	bit D_RIGHT_F, a
+	jr nz, .d_right
+	bit D_LEFT_F, a
+	jr nz, .d_left
+	bit D_UP_F, a
+	jr nz, .d_up
+	bit D_DOWN_F, a
+	jr nz, .d_down
 	and a
 	ret
 
-.asm_24299: ; 24299
-	ld hl, wcfa6
+.set_bit_7: ; 24299
+	ld hl, w2DMenuFlags2
 	set 7, [hl]
 	scf
 	ret
 
-.asm_242a0
-	ld hl, MenuSelection2
-	ld a, [wcfa3]
+.d_down
+	ld hl, wMenuCursorY
+	ld a, [w2DMenuNumRows]
 	cp [hl]
-	jr z, .asm_242ac
+	jr z, .check_wrap_around_down
 	inc [hl]
 	xor a
 	ret
 
-.asm_242ac
-	ld a, [wcfa5]
+.check_wrap_around_down
+	ld a, [w2DMenuFlags1]
 	bit 5, a
-	jr nz, .asm_242ba
+	jr nz, .wrap_around_down
 	bit 3, a
-	jp nz, .asm_24299
+	jp nz, .set_bit_7
 	xor a
 	ret
 
-.asm_242ba
+.wrap_around_down
 	ld [hl], $1
 	xor a
 	ret
 
-.asm_242be
-	ld hl, MenuSelection2
+.d_up
+	ld hl, wMenuCursorY
 	ld a, [hl]
 	dec a
-	jr z, .asm_242c8
+	jr z, .check_wrap_around_up
 	ld [hl], a
 	xor a
 	ret
 
-.asm_242c8
-	ld a, [wcfa5]
+.check_wrap_around_up
+	ld a, [w2DMenuFlags1]
 	bit 5, a
-	jr nz, .asm_242d6
+	jr nz, .wrap_around_up
 	bit 2, a
-	jp nz, .asm_24299
+	jp nz, .set_bit_7
 	xor a
 	ret
 
-.asm_242d6
-	ld a, [wcfa3]
+.wrap_around_up
+	ld a, [w2DMenuNumRows]
 	ld [hl], a
 	xor a
 	ret
 
-.asm_242dc
-	ld hl, wcfaa
+.d_left
+	ld hl, wMenuCursorX
 	ld a, [hl]
 	dec a
-	jr z, .asm_242e6
+	jr z, .check_wrap_around_left
 	ld [hl], a
 	xor a
 	ret
 
-.asm_242e6
-	ld a, [wcfa5]
+.check_wrap_around_left
+	ld a, [w2DMenuFlags1]
 	bit 4, a
-	jr nz, .asm_242f4
+	jr nz, .wrap_around_left
 	bit 1, a
-	jp nz, .asm_24299
+	jp nz, .set_bit_7
 	xor a
 	ret
 
-.asm_242f4
-	ld a, [wcfa4]
+.wrap_around_left
+	ld a, [w2DMenuNumCols]
 	ld [hl], a
 	xor a
 	ret
 
-.asm_242fa
-	ld hl, wcfaa
-	ld a, [wcfa4]
+.d_right
+	ld hl, wMenuCursorX
+	ld a, [w2DMenuNumCols]
 	cp [hl]
-	jr z, .asm_24306
+	jr z, .check_wrap_around_right
 	inc [hl]
 	xor a
 	ret
 
-.asm_24306
-	ld a, [wcfa5]
+.check_wrap_around_right
+	ld a, [w2DMenuFlags1]
 	bit 4, a
-	jr nz, .asm_24314
+	jr nz, .wrap_around_right
 	bit 0, a
-	jp nz, .asm_24299
+	jp nz, .set_bit_7
 	xor a
 	ret
 
-.asm_24314
+.wrap_around_right
 	ld [hl], $1
 	xor a
 	ret
 ; 24318
 
-Function24318: ; 24318
+.a_b_start_select: ; 24318
 	xor a
 	ret
 ; 2431a
 
-Function2431a: ; 2431a
-	ld hl, wcfac
+Move2DMenuCursor: ; 2431a
+	ld hl, wCursorCurrentTile
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld a, [hl]
-	cp $ed
-	jr nz, Function24329
-	ld a, [wcfab]
+	cp "▶"
+	jr nz, Place2DMenuCursor
+	ld a, [wCursorOffCharacter]
 	ld [hl], a
-
-Function24329: ; 24329
-	ld a, [wcfa1]
+Place2DMenuCursor: ; 24329
+	ld a, [w2DMenuCursorInitY]
 	ld b, a
-	ld a, [wcfa2]
+	ld a, [w2DMenuCursorInitX]
 	ld c, a
 	call Coord2Tile
-	ld a, [wcfa7]
+	ld a, [w2DMenuCursorOffsets]
 	swap a
 	and $f
 	ld c, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld b, a
 	xor a
 	dec b
-	jr z, .asm_24348
-.asm_24344
+	jr z, .got_row
+.row_loop
 	add c
 	dec b
-	jr nz, .asm_24344
+	jr nz, .row_loop
 
-.asm_24348
-	ld c, $14
+.got_row
+	ld c, SCREEN_WIDTH
 	call AddNTimes
-	ld a, [wcfa7]
+	ld a, [w2DMenuCursorOffsets]
 	and $f
 	ld c, a
-	ld a, [wcfaa]
+	ld a, [wMenuCursorX]
 	ld b, a
 	xor a
 	dec b
-	jr z, .asm_2435f
-.asm_2435b
+	jr z, .got_col
+.col_loop
 	add c
 	dec b
-	jr nz, .asm_2435b
+	jr nz, .col_loop
 
-.asm_2435f
+.got_col
 	ld c, a
 	add hl, bc
 	ld a, [hl]
-	cp $ed
-	jr z, .asm_2436b
-	ld [wcfab], a
-	ld [hl], $ed
+	cp "▶"
+	jr z, .cursor_on
+	ld [wCursorOffCharacter], a
+	ld [hl], "▶"
 
-.asm_2436b
+.cursor_on
 	ld a, l
-	ld [wcfac], a
+	ld [wCursorCurrentTile], a
 	ld a, h
-	ld [wcfad], a
+	ld [wCursorCurrentTile + 1], a
 	ret
 ; 24374
+
+_PushWindow:: ; 24374
+	ld a, [rSVBK]
+	push af
+	ld a, $7
+	ld [rSVBK], a
+
+	ld hl, wWindowStackPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	push de
+
+	ld b, $10
+	ld hl, wMenuFlags
+.loop
+	ld a, [hli]
+	ld [de], a
+	dec de
+	dec b
+	jr nz, .loop
+
+; If bit 6 or 7 of the menu flags is set, set bit 0 of the address
+; at 7:[wWindowStackPointer], and draw the menu using the coordinates from the header.
+; Otherwise, reset bit 0 of 7:[wWindowStackPointer].
+	ld a, [wMenuFlags]
+	bit 6, a
+	jr nz, .bit_6
+	bit 7, a
+	jr z, .not_bit_7
+
+.bit_6
+	ld hl, wWindowStackPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	set 0, [hl]
+	call MenuBoxCoord2Tile
+	call .copy
+	call MenuBoxCoord2Attr
+	call .copy
+	jr .done
+
+.not_bit_7
+	pop hl ; last-pushed register was de
+	push hl
+	ld a, [hld]
+	ld l, [hl]
+	ld h, a
+	res 0, [hl]
+
+.done
+	pop hl
+	call .ret ; empty function
+	ld a, h
+	ld [de], a
+	dec de
+	ld a, l
+	ld [de], a
+	dec de
+	ld hl, wWindowStackPointer
+	ld [hl], e
+	inc hl
+	ld [hl], d
+
+	pop af
+	ld [rSVBK], a
+	ld hl, wWindowStackSize
+	inc [hl]
+	ret
+; 243cd
+
+.copy: ; 243cd
+	call GetMenuBoxDims
+	inc b
+	inc c
+	call .ret ; empty function
+
+.row
+	push bc
+	push hl
+
+.col
+	ld a, [hli]
+	ld [de], a
+	dec de
+	dec c
+	jr nz, .col
+
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .row
+
+	ret
+; 243e7
+
+.ret: ; 243e7
+	ret
+; 243e8
+
+_ExitMenu:: ; 243e8
+	xor a
+	ld [hBGMapMode], a
+
+	ld a, [rSVBK]
+	push af
+	ld a, $7
+	ld [rSVBK], a
+
+	call GetWindowStackTop
+	ld a, l
+	or h
+	jp z, Error_Cant_ExitMenu
+	ld a, l
+	ld [wWindowStackPointer], a
+	ld a, h
+	ld [wWindowStackPointer + 1], a
+	call PopWindow
+	ld a, [wMenuFlags]
+	bit 0, a
+	jr z, .loop
+	ld d, h
+	ld e, l
+	call RestoreTileBackup
+
+.loop
+	call GetWindowStackTop
+	ld a, h
+	or l
+	jr z, .done
+	call PopWindow
+
+.done
+	pop af
+	ld [rSVBK], a
+	ld hl, wWindowStackSize
+	dec [hl]
+	ret
+; 24423
+
+Function24423: ; 24423
+; Unreferenced
+	ld a, [VramState]
+	bit 0, a
+	ret z
+	xor a
+	call GetSRAMBank
+	hlcoord 0, 0
+	ld de, sScratch
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call CopyBytes
+	call CloseSRAM
+	call OverworldTextModeSwitch
+	xor a
+	call GetSRAMBank
+	ld hl, sScratch
+	decoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+.loop
+	ld a, [hl]
+	cp $61
+	jr c, .next
+	ld [de], a
+.next
+	inc hl
+	inc de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .loop
+	call CloseSRAM
+	ret
+; 2445d
+
+Error_Cant_ExitMenu: ; 2445d
+	ld hl, .Text_NoWindowsAvailableForPopping
+	call PrintText
+	call WaitBGMap
+.InfiniteLoop
+	jr .InfiniteLoop
+; 24468
+
+.Text_NoWindowsAvailableForPopping: ; 24468
+	text_jump UnknownText_0x1c46b7
+	db "@"
+; 2446d
+
+_InitVerticalMenuCursor:: ; 2446d
+	ld a, [wMenuData2Flags]
+	ld b, a
+	ld hl, w2DMenuCursorInitY
+	ld a, [wMenuBorderTopCoord]
+	inc a
+	bit 6, b
+	jr nz, .skip_offset
+	inc a
+.skip_offset
+	ld [hli], a
+; w2DMenuCursorInitX
+	ld a, [wMenuBorderLeftCoord]
+	inc a
+	ld [hli], a
+; w2DMenuNumRows
+	ld a, [wMenuData2Items]
+	ld [hli], a
+; w2DMenuNumCols
+	ld a, 1
+	ld [hli], a
+; w2DMenuFlags1
+	ld [hl], $0
+	bit 5, b
+	jr z, .skip_bit_5
+	set 5, [hl]
+.skip_bit_5
+	ld a, [wMenuFlags]
+	bit 4, a
+	jr z, .skip_bit_6
+	set 6, [hl]
+.skip_bit_6
+	inc hl
+; w2DMenuFlags2
+	xor a
+	ld [hli], a
+; w2DMenuCursorOffsets
+	ln a, 2, 0
+	ld [hli], a
+; wMenuJoypadFilter
+	ld a, A_BUTTON
+	bit 0, b
+	jr nz, .skip_bit_1
+	add B_BUTTON
+.skip_bit_1
+	ld [hli], a
+; wMenuCursorY
+	ld a, [wMenuCursorBuffer]
+	and a
+	jr z, .load_at_the_top
+	ld c, a
+	ld a, [wMenuData2Items]
+	cp c
+	jr nc, .load_position
+.load_at_the_top
+	ld c, 1
+.load_position
+	ld [hl], c
+	inc hl
+; wMenuCursorX
+	ld a, 1
+	ld [hli], a
+; wCursorOffCharacter, wCursorCurrentTile
+	xor a
+rept 3
+	ld [hli], a
+endr
+	ret
+; 244c3
--- /dev/null
+++ b/engine/mon_icons.asm
@@ -1,0 +1,450 @@
+LoadOverworldMonIcon: ; 8e82b
+	ld a, e
+	call ReadMonMenuIcon
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, IconPointers
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	ld b, BANK(Icons)
+	ld c, 8
+	ret
+; 8e83f
+
+Function8e83f: ; 8e83f
+	push hl
+	push de
+	push bc
+	call Function8e849
+	pop bc
+	pop de
+	pop hl
+	ret
+; 8e849
+
+Function8e849: ; 8e849
+	ld d, 0
+	ld hl, .dw
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 8e854
+
+
+.dw: ; 8e854 (23:6854)
+	dw Function8e8d5 ; init
+	dw Function8e961
+	dw Function8e97d
+	dw Function8e99a
+	dw Function8e898
+	dw Mobile_InitPartyMenuBGPal71
+	dw Function8e862
+
+
+Function8e862: ; 8e862 (23:6862)
+	call InitPartyMenuIcon
+	call Function8e86c
+	call SetPartyMonIconAnimSpeed
+	ret
+
+Function8e86c: ; 8e86c (23:686c)
+	push bc
+	ld a, [hObjectStructIndexBuffer]
+	ld hl, PartyMon1Item
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	pop bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8e890
+	push hl
+	push bc
+	ld d, a
+	callab ItemIsMail
+	pop bc
+	pop hl
+	jr c, .asm_8e88e
+	ld a, $6
+	jr .asm_8e892
+.asm_8e88e
+	ld a, $5
+	; jr .asm_8e892
+.asm_8e890
+	ld a, $4
+.asm_8e892
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ret
+
+Function8e898: ; 8e898 (23:6898)
+	call Function8e8d5
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld a, $0
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, 9 * 8
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, 9 * 8
+	ld [hl], a
+	ret
+
+Mobile_InitPartyMenuBGPal71: ; 8e8b1 (23:68b1)
+	call InitPartyMenuIcon
+	call SetPartyMonIconAnimSpeed
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld a, $0
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, 3 * 8
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, 12 * 8
+	ld [hl], a
+	ld a, c
+	ld [wc608], a
+	ld a, b
+	ld [wc608 + 1], a
+	ret
+
+Function8e8d5: ; 8e8d5 (23:68d5)
+	call InitPartyMenuIcon
+	call .SpawnItemIcon
+	call SetPartyMonIconAnimSpeed
+	ret
+
+.SpawnItemIcon: ; 8e8df (23:68df)
+	push bc
+	ld a, [hObjectStructIndexBuffer]
+	ld hl, PartyMon1Item
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	pop bc
+	ld a, [hl]
+	and a
+	ret z
+	push hl
+	push bc
+	ld d, a
+	callab ItemIsMail
+	pop bc
+	pop hl
+	jr c, .mail
+	ld a, $3
+	jr .okay
+
+.mail
+	ld a, $2
+.okay
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ret
+
+InitPartyMenuIcon: ; 8e908 (23:6908)
+	ld a, [wCurIconTile]
+	push af
+	ld a, [hObjectStructIndexBuffer]
+	ld hl, PartySpecies
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	call GetMemIconGFX
+	ld a, [hObjectStructIndexBuffer]
+; y coord
+rept 4
+	add a
+endr
+	add $1c
+	ld d, a
+; x coord
+	ld e, $10
+; type is partymon icon
+	ld a, SPRITE_ANIM_INDEX_00
+	call InitSpriteAnimStruct
+	pop af
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
+	add hl, bc
+	ld [hl], a
+	ret
+
+SetPartyMonIconAnimSpeed: ; 8e936 (23:6936)
+	push bc
+	ld a, [hObjectStructIndexBuffer]
+	ld b, a
+	call .getspeed
+	ld a, b
+	pop bc
+	ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
+	add hl, bc
+	ld [hl], a
+	rlca
+	rlca
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], a
+	ret
+
+.getspeed: ; 8e94c (23:694c)
+	callba PlacePartymonHPBar
+	call GetHPPal
+	ld e, d
+	ld d, 0
+	ld hl, .speeds
+	add hl, de
+	ld b, [hl]
+	ret
+; 8e95e (23:695e)
+
+.speeds: ; 8e95e
+	db $00, $40, $80
+; 8e961
+
+Function8e961: ; 8e961 (23:6961)
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	xor a
+	call GetIconGFX
+	depixel 4, 4, 4, 0
+	ld a, SPRITE_ANIM_INDEX_00
+	call InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], $0
+	ret
+
+Function8e97d: ; 8e97d (23:697d)
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	xor a
+	call GetIconGFX
+	ld d, 3 * 8 + 2
+	ld e, 4 * 8 + 4
+	ld a, SPRITE_ANIM_INDEX_00
+	call InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], SPRITE_ANIM_SEQ_NULL
+	ret
+
+Function8e99a: ; 8e99a (23:699a)
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	ld a, $62
+	ld [wCurIconTile], a
+	call GetMemIconGFX
+	ret
+
+GetSpeciesIcon: ; 8e9ac
+; Load species icon into VRAM at tile a
+	push de
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	pop de
+	ld a, e
+	call GetIconGFX
+	ret
+; 8e9bc
+
+
+FlyFunction_GetMonIcon: ; 8e9bc (23:69bc)
+	push de
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	pop de
+	ld a, e
+	call GetIcon_a
+	ret
+; 8e9cc (23:69cc)
+
+GetMonIcon2: ; 8e9cc
+; unreferenced
+	push de
+	ld a, [wd265]
+	call ReadMonMenuIcon
+	ld [CurIcon], a
+	pop de
+	call GetIcon_de
+	ret
+; 8e9db
+
+GetMemIconGFX: ; 8e9db (23:69db)
+	ld a, [wCurIconTile]
+GetIconGFX: ; 8e9de
+	call GetIcon_a
+	ld de, $80 ; 8 tiles
+	add hl, de
+	ld de, HeldItemIcons
+	lb bc, BANK(HeldItemIcons), 2
+	call GetGFXUnlessMobile
+	ld a, [wCurIconTile]
+	add 10
+	ld [wCurIconTile], a
+	ret
+
+HeldItemIcons:
+INCBIN "gfx/icon/mail.2bpp"
+INCBIN "gfx/icon/item.2bpp"
+; 8ea17
+
+GetIcon_de: ; 8ea17
+; Load icon graphics into VRAM starting from tile de.
+	ld l, e
+	ld h, d
+	jr GetIcon
+
+GetIcon_a: ; 8ea1b
+; Load icon graphics into VRAM starting from tile a.
+	ld l, a
+	ld h, 0
+
+GetIcon: ; 8ea1e
+; Load icon graphics into VRAM starting from tile hl.
+
+; One tile is 16 bytes long.
+rept 4
+	add hl, hl
+endr
+
+	ld de, VTiles0
+	add hl, de
+	push hl
+
+; The icons are contiguous, in order and of the same
+; size, so the pointer table is somewhat redundant.
+	ld a, [CurIcon]
+	push hl
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, IconPointers
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	pop hl
+
+	lb bc, BANK(Icons), 8
+	call GetGFXUnlessMobile
+
+	pop hl
+	ret
+; 8ea3f
+
+GetGFXUnlessMobile: ; 8ea3f
+	ld a, [wLinkMode]
+	cp LINK_MOBILE
+	jp nz, Request2bpp
+	jp Get2bpp_2
+; 8ea4a
+
+FreezeMonIcons: ; 8ea4a
+	ld hl, wSpriteAnimationStructs
+	ld e, PARTY_LENGTH
+	ld a, [wMenuCursorY]
+	ld d, a
+.loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	cp d
+	jr z, .loadwithtwo
+	ld a, SPRITE_ANIM_SEQ_NULL
+	jr .ok
+
+.loadwithtwo
+	ld a, SPRITE_ANIM_SEQ_02
+
+.ok
+	push hl
+	ld c, l
+	ld b, h
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.next
+	ld bc, $10
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ret
+; 8ea71
+
+UnfreezeMonIcons: ; 8ea71
+	ld hl, wSpriteAnimationStructs
+	ld e, PARTY_LENGTH
+.loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	push hl
+	ld c, l
+	ld b, h
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], SPRITE_ANIM_SEQ_01
+	pop hl
+.next
+	ld bc, $10
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ret
+; 8ea8c (23:6a8c)
+
+HoldSwitchmonIcon: ; 8ea8c
+	ld hl, wSpriteAnimationStructs
+	ld e, PARTY_LENGTH
+	ld a, [wSwitchMon]
+	ld d, a
+.loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	cp d
+	jr z, .is_switchmon
+	ld a, SPRITE_ANIM_SEQ_03
+	jr .join_back
+
+.is_switchmon
+	ld a, SPRITE_ANIM_SEQ_02
+.join_back
+	push hl
+	ld c, l
+	ld b, h
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], a
+	pop hl
+.next
+	ld bc, $10
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ret
+
+INCLUDE "menu/mon_icons.asm"
--- /dev/null
+++ b/engine/mon_menu.asm
@@ -1,0 +1,344 @@
+MonMenuOptionStrings: ; 24caf
+	db "STATS@"
+	db "SWITCH@"
+	db "ITEM@"
+	db "CANCEL@"
+	db "MOVE@"
+	db "MAIL@"
+	db "ERROR!@"
+; 24cd9
+
+MonMenuOptions: ; 24cd9
+
+; Moves
+	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 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 -1
+; 24d19
+
+MonSubmenu: ; 24d19
+	xor a
+	ld [hBGMapMode], a
+	call GetMonSubmenuItems
+	callba FreezeMonIcons
+	ld hl, .MenuDataHeader
+	call LoadMenuDataHeader
+	call .GetTopCoord
+	call PopulateMonMenu
+
+	ld a, 1
+	ld [hBGMapMode], a
+	call MonMenuLoop
+	ld [MenuSelection], a
+
+	call ExitMenu
+	ret
+; 24d3f
+
+.MenuDataHeader: ; 24d3f
+	db $40 ; tile backup
+	db 00, 06 ; start coords
+	db 17, 19 ; end coords
+	dw 0
+	db 1 ; default option
+; 24d47
+
+.GetTopCoord: ; 24d47
+; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
+	ld a, [Buffer1]
+	inc a
+	add a
+	ld b, a
+	ld a, [wMenuBorderBottomCoord]
+	sub b
+	inc a
+	ld [wMenuBorderTopCoord], a
+	call MenuBox
+	ret
+; 24d59
+
+MonMenuLoop: ; 24d59
+.loop
+	ld a, $a0 ; flags
+	ld [wMenuData2Flags], a
+	ld a, [Buffer1] ; items
+	ld [wMenuData2Items], a
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
+	set 6, [hl]
+	call StaticMenuJoypad
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	ld a, [hJoyPressed]
+	bit 0, a ; A
+	jr nz, .select
+	bit 1, a ; B
+	jr nz, .cancel
+	jr .loop
+
+.cancel
+	ld a, MONMENU_CANCEL ; CANCEL
+	ret
+
+.select
+	ld a, [wMenuCursorY]
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, Buffer2
+	add hl, bc
+	ld a, [hl]
+	ret
+; 24d91
+
+PopulateMonMenu: ; 24d91
+	call MenuBoxCoord2Tile
+	ld bc, $2a ; 42
+	add hl, bc
+	ld de, Buffer2
+.loop
+	ld a, [de]
+	inc de
+	cp -1
+	ret z
+	push de
+	push hl
+	call GetMonMenuString
+	pop hl
+	call PlaceString
+	ld bc, $28 ; 40
+	add hl, bc
+	pop de
+	jr .loop
+; 24db0
+
+GetMonMenuString: ; 24db0
+	ld hl, MonMenuOptions + 1
+	ld de, 3
+	call IsInArray
+	dec hl
+	ld a, [hli]
+	cp 1
+	jr z, .NotMove
+	inc hl
+	ld a, [hl]
+	ld [wd265], a
+	call GetMoveName
+	ret
+
+.NotMove
+	inc hl
+	ld a, [hl]
+	dec a
+	ld hl, MonMenuOptionStrings
+	call GetNthString
+	ld d, h
+	ld e, l
+	ret
+; 24dd4
+
+GetMonSubmenuItems: ; 24dd4
+	call ResetMonSubmenu
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .egg
+	ld a, [wLinkMode]
+	and a
+	jr nz, .skip_moves
+	ld a, MON_MOVES
+	call GetPartyParamLocation
+	ld d, h
+	ld e, l
+	ld c, NUM_MOVES
+.loop
+	push bc
+	push de
+	ld a, [de]
+	and a
+	jr z, .next
+	push hl
+	call IsFieldMove
+	pop hl
+	jr nc, .next
+	call AddMonMenuItem
+
+.next
+	pop de
+	inc de
+	pop bc
+	dec c
+	jr nz, .loop
+
+.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, MON_ITEM
+	call GetPartyParamLocation
+	ld d, [hl]
+	callba ItemIsMail
+	pop hl
+	ld a, MONMENU_MAIL
+	jr c, .ok
+	ld a, MONMENU_ITEM
+
+.ok
+	call AddMonMenuItem
+
+.skip2
+	ld a, [Buffer1]
+	cp NUM_MON_SUBMENU_ITEMS
+	jr z, .ok2
+	ld a, MONMENU_CANCEL
+	call AddMonMenuItem
+
+.ok2
+	call TerminateMonSubmenu
+	ret
+
+.egg
+	ld a, MONMENU_STATS
+	call AddMonMenuItem
+	ld a, MONMENU_SWITCH
+	call AddMonMenuItem
+	ld a, MONMENU_CANCEL
+	call AddMonMenuItem
+	call TerminateMonSubmenu
+	ret
+; 24e52
+
+IsFieldMove: ; 24e52
+	ld b, a
+	ld hl, MonMenuOptions
+.next
+	ld a, [hli]
+	cp -1
+	jr z, .nope
+	cp MONMENU_MENUOPTION
+	jr z, .nope
+	ld d, [hl]
+	inc hl
+	ld a, [hli]
+	cp b
+	jr nz, .next
+	ld a, d
+	scf
+
+.nope
+	ret
+; 24e68
+
+ResetMonSubmenu: ; 24e68
+	xor a
+	ld [Buffer1], a
+	ld hl, Buffer2
+	ld bc, NUM_MON_SUBMENU_ITEMS + 1
+	call ByteFill
+	ret
+; 24e76
+
+TerminateMonSubmenu: ; 24e76
+	ld a, [Buffer1]
+	ld e, a
+	ld d, $0
+	ld hl, Buffer2
+	add hl, de
+	ld [hl], -1
+	ret
+; 24e83
+
+AddMonMenuItem: ; 24e83
+	push hl
+	push de
+	push af
+	ld a, [Buffer1]
+	ld e, a
+	inc a
+	ld [Buffer1], a
+	ld d, $0
+	ld hl, Buffer2
+	add hl, de
+	pop af
+	ld [hl], a
+	pop de
+	pop hl
+	ret
+; 24e99
+
+BattleMonMenu: ; 24e99
+	ld hl, MenuDataHeader_0x24ed4
+	call CopyMenuDataHeader
+	xor a
+	ld [hBGMapMode], a
+	call MenuBox
+	call UpdateSprites
+	call PlaceVerticalMenuItems
+	call WaitBGMap
+	call CopyMenuData2
+	ld a, [wMenuData2Flags]
+	bit 7, a
+	jr z, .set_carry
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
+	set 6, [hl]
+	call StaticMenuJoypad
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	ld a, [hJoyPressed]
+	bit B_BUTTON_F, a
+	jr z, .clear_carry
+	ret z
+
+.set_carry
+	scf
+	ret
+
+.clear_carry
+	and a
+	ret
+; 24ed4
+
+MenuDataHeader_0x24ed4: ; 24ed4
+	db $00 ; flags
+	db 11, 11 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x24edc
+	db 1 ; default option
+; 24edc
+
+MenuData2_0x24edc: ; 24edc
+	db $c0 ; flags
+	db 3 ; items
+	db "SWITCH@"
+	db "STATS@"
+	db "CANCEL@"
+; 24ef2
--- a/engine/more_phone_scripts.asm
+++ b/engine/more_phone_scripts.asm
@@ -1,8 +1,8 @@
 UnknownScript_0xa0000:
 	special RandomPhoneMon
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xa0013
-	farscall UnknownScript_0xbe51e
+	farscall PhoneScript_Random2
+	if_equal 0, UnknownScript_0xa0013
+	farscall PhoneScript_Generic_Male
 	farjump UnknownScript_0xa003e
 
 UnknownScript_0xa0013:
@@ -10,9 +10,9 @@
 
 UnknownScript_0xa0017:
 	special RandomPhoneMon
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xa002a
-	farscall UnknownScript_0xbe5d0
+	farscall PhoneScript_Random2
+	if_equal 0, UnknownScript_0xa002a
+	farscall PhoneScript_Generic_Female
 	farjump UnknownScript_0xa0055
 
 UnknownScript_0xa002a:
@@ -28,10 +28,10 @@
 
 UnknownScript_0xa003e:
 	special RandomPhoneWildMon
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xa0051
+	farscall PhoneScript_Random2
+	if_equal 0, UnknownScript_0xa0051
 	farscall UnknownScript_0xa017a
-	farjump UnknownScript_0xa0484
+	farjump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0051:
 	farjump UnknownScript_0xa006c
@@ -38,10 +38,10 @@
 
 UnknownScript_0xa0055:
 	special RandomPhoneWildMon
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xa0068
+	farscall PhoneScript_Random2
+	if_equal 0, UnknownScript_0xa0068
 	farscall UnknownScript_0xa0226
-	farjump UnknownScript_0xa053a
+	farjump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0068:
 	farjump UnknownScript_0xa0074
@@ -48,11 +48,11 @@
 
 UnknownScript_0xa006c:
 	farscall UnknownScript_0xa0278
-	farjump UnknownScript_0xa0484
+	farjump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0074:
 	farscall UnknownScript_0xa0324
-	farjump UnknownScript_0xa053a
+	farjump PhoneScript_HangupText_Female
 
 UnknownScript_0xa007c:
 	checkcode VAR_CALLERID
@@ -76,87 +76,87 @@
 
 .Jack:
 	farwritetext UnknownText_0x1740c0
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x174a24
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x174f2f
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x175530
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1757d4
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x175bc4
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x176a2f
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x176e5d
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x649dc
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x64cbd
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x65271
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x65ab2
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x65de4
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x660be
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x66980
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x66afc
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x66f9f
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa0128:
@@ -172,42 +172,42 @@
 
 .Beverly:
 	farwritetext UnknownText_0x174688
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x174c7f
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1752f5
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x175fda
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1771fd
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x64f74
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x665ad
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x6717a
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa017a:
@@ -232,87 +232,87 @@
 
 .Jack:
 	farwritetext UnknownText_0x174106
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x174a80
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x174f90
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x175591
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x175869
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x175c24
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x176aef
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x176e9c
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x64a13
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x64cf3
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x65318
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x65b29
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x65e42
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x6613c
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x669b2
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x66b3e
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x66fc0
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa0226:
@@ -328,42 +328,42 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1746c3
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x174cf6
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x17536b
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x17602d
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x177237
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x64fb2
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x66605
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x671a4
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa0278:
@@ -388,87 +388,87 @@
 
 .Jack:
 	farwritetext UnknownText_0x174165
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x174b2d
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x174ffd
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x175611
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1758e4
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x175c9f
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x176b45
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x176eee
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x64a71
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x64d4f
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x65399
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x65bc8
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x65eac
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x6618c
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x669ed
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x66b8f
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x67001
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa0324:
@@ -484,53 +484,53 @@
 
 .Beverly:
 	farwritetext UnknownText_0x174734
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x174d86
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1753c5
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x176095
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x177297
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x6501c
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x66688
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x671eb
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa0376:
-	farscall UnknownScript_0xa0386
-	farjump UnknownScript_0xa0484
+	farscall PhoneScript_RematchText_Male
+	farjump PhoneScript_HangupText_Male
 
 UnknownScript_0xa037e:
-	farscall UnknownScript_0xa0432
-	farjump UnknownScript_0xa053a
+	farscall PhoneScript_RematchText_Female
+	farjump PhoneScript_HangupText_Female
 
-UnknownScript_0xa0386:
+PhoneScript_RematchText_Male:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -552,90 +552,90 @@
 
 .Jack:
 	farwritetext UnknownText_0x1741e1
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1748ea
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x174bc5
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x17507d
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x175693
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x175976
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x175d40
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x176bee
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x176f60
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x64ada
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x64da4
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x65419
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x65f17
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x66214
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x66a3a
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x66bf3
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x67096
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xa0432:
+PhoneScript_RematchText_Female:
 	checkcode VAR_CALLERID
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
 	if_equal PHONE_COOLTRAINERF_REENA, .Reena
@@ -647,37 +647,37 @@
 
 .Beth:
 	farwritetext UnknownText_0x174e4e
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x17543a
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x17610a
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1772e2
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x65091
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x66730
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x6722e
-	keeptextopen
+	buttonsound
 	end
 
 UnknownScript_0xa047a:
@@ -688,7 +688,7 @@
 	farwritetext UnknownText_0x66796
 	end
 
-UnknownScript_0xa0484:
+PhoneScript_HangupText_Male:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -791,7 +791,7 @@
 	farwritetext UnknownText_0x670eb
 	end
 
-UnknownScript_0xa053a:
+PhoneScript_HangupText_Female:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -840,7 +840,7 @@
 	farjump UnknownScript_0xa0000
 
 UnknownScript_0xa058e:
-	farjump UnknownScript_0xa0484
+	farjump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0592:
 	scall UnknownScript_0xa05a0
@@ -848,7 +848,7 @@
 	farjump UnknownScript_0xa0017
 
 UnknownScript_0xa059c:
-	farjump UnknownScript_0xa053a
+	farjump PhoneScript_HangupText_Female
 
 UnknownScript_0xa05a0:
 	special RandomPhoneRareWildMon
@@ -861,38 +861,38 @@
 
 .Wade:
 	farwritetext UnknownText_0x1759f7
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 .Derek:
 	farwritetext UnknownText_0x65c66
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa05be:
 	farwritetext UnknownText_0x64032
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa05c6:
 	farwritetext UnknownText_0x177378
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa05ce:
 	farwritetext UnknownText_0x64b5f
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa05d6:
 	farwritetext UnknownText_0x175dd9
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa05de:
 	farwritetext UnknownText_0x176c61
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa05e6:
 	checkcode VAR_CALLERID
@@ -952,271 +952,271 @@
 
 UnknownScript_0xa0644:
 	farwritetext UnknownText_0x176feb
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa064c:
 	farwritetext UnknownText_0x66dc5
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0654:
-	random $b
-	if_equal $0, UnknownScript_0xa0682
-	if_equal $1, UnknownScript_0xa068a
-	if_equal $2, UnknownScript_0xa0692
-	if_equal $3, UnknownScript_0xa069a
-	if_equal $4, UnknownScript_0xa06a2
-	if_equal $5, UnknownScript_0xa06aa
-	if_equal $6, UnknownScript_0xa06b2
-	if_equal $7, UnknownScript_0xa06ba
-	if_equal $8, UnknownScript_0xa06c2
-	if_equal $9, UnknownScript_0xa06ca
-	if_equal $a, UnknownScript_0xa06d2
+	random 11
+	if_equal  0, UnknownScript_0xa0682
+	if_equal  1, UnknownScript_0xa068a
+	if_equal  2, UnknownScript_0xa0692
+	if_equal  3, UnknownScript_0xa069a
+	if_equal  4, UnknownScript_0xa06a2
+	if_equal  5, UnknownScript_0xa06aa
+	if_equal  6, UnknownScript_0xa06b2
+	if_equal  7, UnknownScript_0xa06ba
+	if_equal  8, UnknownScript_0xa06c2
+	if_equal  9, UnknownScript_0xa06ca
+	if_equal 10, UnknownScript_0xa06d2
 
 UnknownScript_0xa0682:
 	farwritetext UnknownText_0x174261
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa068a:
 	farwritetext UnknownText_0x17429d
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0692:
 	farwritetext UnknownText_0x1742ee
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa069a:
 	farwritetext UnknownText_0x174340
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06a2:
 	farwritetext UnknownText_0x174391
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06aa:
 	farwritetext UnknownText_0x1743e3
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06b2:
 	farwritetext UnknownText_0x174433
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06ba:
 	farwritetext UnknownText_0x174485
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06c2:
 	farwritetext UnknownText_0x1744d6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06ca:
 	farwritetext UnknownText_0x174522
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06d2:
 	farwritetext UnknownText_0x174571
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa06da:
-	random $a
-	if_equal $0, UnknownScript_0xa0704
-	if_equal $1, UnknownScript_0xa070c
-	if_equal $2, UnknownScript_0xa0714
-	if_equal $3, UnknownScript_0xa071c
-	if_equal $4, UnknownScript_0xa0724
-	if_equal $5, UnknownScript_0xa072c
-	if_equal $6, UnknownScript_0xa0734
-	if_equal $7, UnknownScript_0xa073c
-	if_equal $8, UnknownScript_0xa0744
-	if_equal $9, UnknownScript_0xa074c
+	random 10
+	if_equal 0, UnknownScript_0xa0704
+	if_equal 1, UnknownScript_0xa070c
+	if_equal 2, UnknownScript_0xa0714
+	if_equal 3, UnknownScript_0xa071c
+	if_equal 4, UnknownScript_0xa0724
+	if_equal 5, UnknownScript_0xa072c
+	if_equal 6, UnknownScript_0xa0734
+	if_equal 7, UnknownScript_0xa073c
+	if_equal 8, UnknownScript_0xa0744
+	if_equal 9, UnknownScript_0xa074c
 
 UnknownScript_0xa0704:
 	farwritetext UnknownText_0x176223
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa070c:
 	farwritetext UnknownText_0x1762c3
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0714:
 	farwritetext UnknownText_0x17638a
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa071c:
 	farwritetext UnknownText_0x176424
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0724:
 	farwritetext UnknownText_0x1764eb
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa072c:
 	farwritetext UnknownText_0x176599
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0734:
 	farwritetext UnknownText_0x1766ac
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa073c:
 	farwritetext UnknownText_0x17674f
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0744:
 	farwritetext UnknownText_0x176816
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa074c:
 	farwritetext UnknownText_0x17686d
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0754:
-	random $a
-	if_equal $0, UnknownScript_0xa077e
-	if_equal $1, UnknownScript_0xa0786
-	if_equal $2, UnknownScript_0xa078e
-	if_equal $3, UnknownScript_0xa0796
-	if_equal $4, UnknownScript_0xa079e
-	if_equal $5, UnknownScript_0xa07a6
-	if_equal $6, UnknownScript_0xa07ae
-	if_equal $7, UnknownScript_0xa07b6
-	if_equal $8, UnknownScript_0xa07be
-	if_equal $9, UnknownScript_0xa07c6
+	random 10
+	if_equal 0, UnknownScript_0xa077e
+	if_equal 1, UnknownScript_0xa0786
+	if_equal 2, UnknownScript_0xa078e
+	if_equal 3, UnknownScript_0xa0796
+	if_equal 4, UnknownScript_0xa079e
+	if_equal 5, UnknownScript_0xa07a6
+	if_equal 6, UnknownScript_0xa07ae
+	if_equal 7, UnknownScript_0xa07b6
+	if_equal 8, UnknownScript_0xa07be
+	if_equal 9, UnknownScript_0xa07c6
 
 UnknownScript_0xa077e:
 	farwritetext UnknownText_0x65481
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0786:
 	farwritetext UnknownText_0x654ea
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa078e:
 	farwritetext UnknownText_0x65555
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0796:
 	farwritetext UnknownText_0x655c7
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa079e:
 	farwritetext UnknownText_0x65628
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07a6:
 	farwritetext UnknownText_0x6569b
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07ae:
 	farwritetext UnknownText_0x6574a
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07b6:
 	farwritetext UnknownText_0x65810
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07be:
 	farwritetext UnknownText_0x658c6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07c6:
 	farwritetext UnknownText_0x65969
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa07ce:
-	random $a
-	if_equal $0, UnknownScript_0xa07f8
-	if_equal $1, UnknownScript_0xa0800
-	if_equal $2, UnknownScript_0xa0808
-	if_equal $3, UnknownScript_0xa0810
-	if_equal $4, UnknownScript_0xa0818
-	if_equal $5, UnknownScript_0xa0820
-	if_equal $6, UnknownScript_0xa0828
-	if_equal $7, UnknownScript_0xa0830
-	if_equal $8, UnknownScript_0xa0838
-	if_equal $9, UnknownScript_0xa0840
+	random 10
+	if_equal 0, UnknownScript_0xa07f8
+	if_equal 1, UnknownScript_0xa0800
+	if_equal 2, UnknownScript_0xa0808
+	if_equal 3, UnknownScript_0xa0810
+	if_equal 4, UnknownScript_0xa0818
+	if_equal 5, UnknownScript_0xa0820
+	if_equal 6, UnknownScript_0xa0828
+	if_equal 7, UnknownScript_0xa0830
+	if_equal 8, UnknownScript_0xa0838
+	if_equal 9, UnknownScript_0xa0840
 
 UnknownScript_0xa07f8:
 	farwritetext UnknownText_0x662bc
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0800:
 	farwritetext UnknownText_0x662fc
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0808:
 	farwritetext UnknownText_0x66335
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0810:
 	farwritetext UnknownText_0x66366
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0818:
 	farwritetext UnknownText_0x663a1
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0820:
 	farwritetext UnknownText_0x663e6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0828:
 	farwritetext UnknownText_0x66421
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0830:
 	farwritetext UnknownText_0x6645f
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0838:
 	farwritetext UnknownText_0x6649b
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0840:
 	farwritetext UnknownText_0x664dd
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0848:
 	checkevent EVENT_OPENED_MT_SILVER
@@ -1244,232 +1244,232 @@
 	checkflag ENGINE_PLAINBADGE
 	iftrue UnknownScript_0xa0898
 	farwritetext UnknownText_0x646a3
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0898:
 	farwritetext UnknownText_0x64099
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08a0:
 	farwritetext UnknownText_0x640e6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08a8:
 	farwritetext UnknownText_0x6416d
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08b0:
 	farwritetext UnknownText_0x641e8
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08b8:
 	farwritetext UnknownText_0x64247
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08c0:
 	farwritetext UnknownText_0x642bb
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08c8:
 	farwritetext UnknownText_0x643d4
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08d0:
 	farwritetext UnknownText_0x64448
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08d8:
 	farwritetext UnknownText_0x6455b
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08e0:
 	farwritetext UnknownText_0x645ff
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08e8:
 	farwritetext UnknownText_0x646df
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08f0:
 	farwritetext UnknownText_0x647d8
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa08f8:
 	farwritetext UnknownText_0x1745c2
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0900:
 	farwritetext UnknownText_0x17485b
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0908:
 	farwritetext UnknownText_0x17496b
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0910:
 	farwritetext UnknownText_0x174c29
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0918:
 	farwritetext UnknownText_0x174ec5
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0920:
 	farwritetext UnknownText_0x17519b
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0928:
 	farwritetext UnknownText_0x17549b
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0930:
 	farwritetext UnknownText_0x17571d
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0938:
 	farwritetext UnknownText_0x175abe
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0940:
 	farwritetext UnknownText_0x175eaf
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0948:
 	farwritetext UnknownText_0x1768b0
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0950:
 	farwritetext UnknownText_0x176d32
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0958:
 	farwritetext UnknownText_0x1770fb
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0960:
 	farwritetext UnknownText_0x177465
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0968:
 	farwritetext UnknownText_0x64bc6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0970:
 	farwritetext UnknownText_0x64e90
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0978:
 	farwritetext UnknownText_0x65161
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0980:
 	farwritetext UnknownText_0x65a23
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0988:
 	farwritetext UnknownText_0x65d5c
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0990:
 	farwritetext UnknownText_0x65ff2
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0998:
 	farwritetext UnknownText_0x6651e
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09a0:
 	farwritetext UnknownText_0x66882
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa09a8:
 	farwritetext UnknownText_0x66aa5
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09b0:
 	farwritetext UnknownText_0x66ca7
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09b8:
 	farwritetext UnknownText_0x67106
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09c0:
 	farwritetext UnknownText_0x67294
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa09c8:
-	random $3
-	if_equal $0, UnknownScript_0xa09d6
-	if_equal $1, UnknownScript_0xa09de
-	if_equal $2, UnknownScript_0xa09e6
+	random 3
+	if_equal 0, UnknownScript_0xa09d6
+	if_equal 1, UnknownScript_0xa09de
+	if_equal 2, UnknownScript_0xa09e6
 
 UnknownScript_0xa09d6:
 	farwritetext UnknownText_0x64846
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09de:
 	farwritetext UnknownText_0x64881
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09e6:
 	farwritetext UnknownText_0x648dc
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa09ee:
 	checkcode VAR_KENJI_BREAK
-	if_equal $2, UnknownScript_0xa0a00
-	if_equal $1, UnknownScript_0xa0a08
+	if_equal 2, UnknownScript_0xa0a00
+	if_equal 1, UnknownScript_0xa0a08
 	farwritetext UnknownText_0x66e17
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0a00:
 	farwritetext UnknownText_0x66e67
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0a08:
 	checkmorn
@@ -1478,18 +1478,18 @@
 	iftrue UnknownScript_0xa0a25
 	setevent EVENT_KENJI_ON_BREAK
 	farwritetext UnknownText_0x66f11
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0a1d:
 	farwritetext UnknownText_0x66ed3
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0a25:
 	farwritetext UnknownText_0x66f52
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0a2d:
 	farwritetext UnknownText_0x174638
@@ -1589,53 +1589,53 @@
 
 UnknownScript_0xa0aa5:
 	farwritetext UnknownText_0x174895
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0aad:
 	farwritetext UnknownText_0x17529c
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0ab5:
 	farwritetext UnknownText_0x175b6d
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0abd:
 	farwritetext UnknownText_0x17750e
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0ac5:
 	farwritetext UnknownText_0x64f1a
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0acd:
 	farwritetext UnknownText_0x6520f
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0ad5:
 	farwritetext UnknownText_0x65da6
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0add:
 	farwritetext UnknownText_0x66087
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0ae5:
 	farwritetext UnknownText_0x6691d
-	keeptextopen
-	jump UnknownScript_0xa053a
+	buttonsound
+	jump PhoneScript_HangupText_Female
 
 UnknownScript_0xa0aed:
 	farwritetext UnknownText_0x66d45
-	keeptextopen
-	jump UnknownScript_0xa0484
+	buttonsound
+	jump PhoneScript_HangupText_Male
 
 UnknownScript_0xa0af5:
 	farwritetext UnknownText_0x175f70
--- /dev/null
+++ b/engine/move_mon.asm
@@ -1,0 +1,1803 @@
+TryAddMonToParty: ; d88c
+; Check if to copy wild Pkmn or generate new Pkmn
+	; Whose is it?
+	ld de, PartyCount
+	ld a, [MonType]
+	and $f
+	jr z, .getpartylocation ; PARTYMON
+	ld de, OTPartyCount
+
+.getpartylocation
+	; Do we have room for it?
+	ld a, [de]
+	inc a
+	cp PARTY_LENGTH + 1
+	ret nc
+	; Increase the party count
+	ld [de], a
+	ld a, [de] ; Why are we doing this?
+	ld [hMoveMon], a ; HRAM backup
+	add e
+	ld e, a
+	jr nc, .loadspecies
+	inc d
+
+.loadspecies
+	; Load the species of the Pokemon into the party list.
+	; The terminator is usually here, but it'll be back.
+	ld a, [CurPartySpecies]
+	ld [de], a
+	; Load the terminator into the next slot.
+	inc de
+	ld a, -1
+	ld [de], a
+	; Now let's load the OT name.
+	ld hl, PartyMonOT
+	ld a, [MonType]
+	and $f
+	jr z, .loadOTname
+	ld hl, OTPartyMonOT
+
+.loadOTname
+	ld a, [hMoveMon] ; Restore index from backup
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, PlayerName
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld a, [MonType]
+	and a
+	jr nz, .skipnickname
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, PartyMonNicknames
+	ld a, [hMoveMon]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, StringBuffer1
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+.skipnickname
+	ld hl, PartyMon1Species
+	ld a, [MonType]
+	and $f
+	jr z, .initializeStats
+	ld hl, OTPartyMon1Species
+
+.initializeStats
+	ld a, [hMoveMon]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+GeneratePartyMonStats: ; d906
+	ld e, l
+	ld d, h
+	push hl
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseDexNo]
+	ld [de], a
+	inc de
+	ld a, [wBattleMode]
+	and a
+	ld a, $0
+	jr z, .skipitem
+	ld a, [EnemyMonItem]
+
+.skipitem
+	ld [de], a
+	inc de
+	push de
+	ld h, d
+	ld l, e
+	ld a, [wBattleMode]
+	and a
+	jr z, .randomlygeneratemoves
+	ld a, [MonType]
+	and a
+	jr nz, .randomlygeneratemoves
+	ld de, EnemyMonMoves
+	rept NUM_MOVES + -1
+	ld a, [de]
+	inc de
+	ld [hli], a
+	endr
+	ld a, [de]
+	ld [hl], a
+	jr .next
+
+.randomlygeneratemoves
+	xor a
+	rept NUM_MOVES + -1
+	ld [hli], a
+	endr
+	ld [hl], a
+	ld [Buffer1], a
+	predef FillMoves
+
+.next
+	pop de
+rept 4
+	inc de
+endr
+	ld a, [PlayerID]
+	ld [de], a
+	inc de
+	ld a, [PlayerID + 1]
+	ld [de], a
+	inc de
+	push de
+	ld a, [CurPartyLevel]
+	ld d, a
+	callab CalcExpAtLevel
+	pop de
+	ld a, [hProduct + 1]
+	ld [de], a
+	inc de
+	ld a, [hProduct + 2]
+	ld [de], a
+	inc de
+	ld a, [hProduct + 3]
+	ld [de], a
+	inc de
+	xor a
+	ld b, $a
+.loop
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .loop
+	pop hl
+	push hl
+	ld a, [MonType]
+	and $f
+	jr z, .generateDVs
+	push hl
+	callba GetTrainerDVs
+	pop hl
+	jr .initializetrainermonstats
+
+.generateDVs
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	dec a
+	push de
+	call CheckCaughtMon
+	ld a, [wd265]
+	dec a
+	call SetSeenAndCaughtMon
+	pop de
+	pop hl
+	push hl
+	ld a, [wBattleMode]
+	and a
+	jr nz, .copywildmonstats
+	call Random
+	ld b, a
+	call Random
+	ld c, a
+
+.initializetrainermonstats
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	push hl
+	push de
+	inc hl
+	inc hl
+	call FillPP
+	pop de
+	pop hl
+rept 4
+	inc de
+endr
+	ld a, 70
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld bc, 10
+	add hl, bc
+	ld a, $1
+	ld c, a
+	ld b, FALSE
+	call CalcPkmnStatC
+	ld a, [hProduct + 2]
+	ld [de], a
+	inc de
+	ld a, [hProduct + 3]
+	ld [de], a
+	inc de
+	jr .next2
+
+.copywildmonstats
+	ld a, [EnemyMonDVs]
+	ld [de], a
+	inc de
+	ld a, [EnemyMonDVs + 1]
+	ld [de], a
+	inc de
+
+	push hl
+	ld hl, EnemyMonPP
+	ld b, NUM_MOVES
+.wildmonpploop
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .wildmonpploop
+	pop hl
+
+	ld a, BASE_HAPPINESS
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	inc de
+	ld hl, EnemyMonStatus
+    ; Copy EnemyMonStatus
+	ld a, [hli]
+	ld [de], a
+	inc de
+    ; Copy EnemyMonUnused
+	ld a, [hli]
+	ld [de], a
+	inc de
+    ; Copy EnemyMonHP
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+
+.next2
+	ld a, [wBattleMode]
+	dec a
+	jr nz, .generatestats
+	ld hl, EnemyMonMaxHP
+	ld bc, 2*6 ; MaxHP + 5 Stats
+	call CopyBytes
+	pop hl
+	jr .next3
+
+.generatestats
+	pop hl
+	ld bc, 2*5 ; 5 Stats
+	add hl, bc
+	ld b, $0 ; if b = 1, then the Stats of the Pkmn are calculated
+             ; only the current HP aren't set to MaxHP after this
+	call CalcPkmnStats
+
+.next3
+	ld a, [MonType]
+	and $f
+	jr nz, .done
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr nz, .done
+	ld hl, PartyMon1DVs
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	predef GetUnownLetter
+	callab UpdateUnownDex
+
+.done
+	scf ; When this function returns, the carry flag indicates success vs failure.
+	ret
+; da6d
+
+FillPP: ; da6d
+	push bc
+	ld b, NUM_MOVES
+.loop
+	ld a, [hli]
+	and a
+	jr z, .next
+	dec a
+	push hl
+	push de
+	push bc
+	ld hl, Moves
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld de, StringBuffer1
+	ld a, BANK(Moves)
+	call FarCopyBytes
+	pop bc
+	pop de
+	pop hl
+	ld a, [StringBuffer1 + MOVE_PP]
+
+.next
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .loop
+	pop bc
+	ret
+; da96
+
+AddTempmonToParty: ; da96
+	ld hl, PartyCount
+	ld a, [hl]
+	cp PARTY_LENGTH
+	scf
+	ret z
+
+	inc a
+	ld [hl], a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [CurPartySpecies]
+	ld [hli], a
+	ld [hl], $ff
+
+	ld hl, PartyMon1Species
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ld hl, TempMonSpecies
+	call CopyBytes
+
+	ld hl, PartyMonOT
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, OTPartyMonOT
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld bc, NAME_LENGTH
+	call CopyBytes
+
+	ld hl, PartyMonNicknames
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, OTPartyMonNicknames
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+	ld a, [CurPartySpecies]
+	ld [wNamedObjectIndexBuffer], a
+	cp EGG
+	jr z, .egg
+	dec a
+	call SetSeenAndCaughtMon
+	ld hl, PartyMon1Happiness
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld [hl], BASE_HAPPINESS
+.egg
+
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr nz, .done
+	ld hl, PartyMon1DVs
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	predef GetUnownLetter
+	callab UpdateUnownDex
+	ld a, [wFirstUnownSeen]
+	and a
+	jr nz, .done
+	ld a, [UnownLetter]
+	ld [wFirstUnownSeen], a
+.done
+
+	and a
+	ret
+
+SentGetPkmnIntoFromBox: ; db3f
+; Sents/Gets Pkmn into/from Box depending on Parameter
+; 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, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .check_IfPartyIsFull
+	cp DAYCARE_WITHDRAW
+	jr z, .check_IfPartyIsFull
+	cp DAYCARE_DEPOSIT
+	ld hl, wBreedMon1Species
+	jr z, .breedmon
+
+    ; we want to sent a Pkmn into the Box
+    ; so check if there's enough space
+	ld hl, sBoxCount
+	ld a, [hl]
+	cp MONS_PER_BOX
+	jr nz, .there_is_room
+	jp CloseSRAM_And_SetCarryFlag
+
+.check_IfPartyIsFull
+	ld hl, PartyCount
+	ld a, [hl]
+	cp PARTY_LENGTH
+	jp z, CloseSRAM_And_SetCarryFlag
+
+.there_is_room
+	inc a
+	ld [hl], a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_WITHDRAW
+	ld a, [wBreedMon1Species]
+	jr z, .okay1
+	ld a, [CurPartySpecies]
+
+.okay1
+	ld [hli], a
+	ld [hl], $ff
+	ld a, [wPokemonWithdrawDepositParameter]
+	dec a
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [PartyCount]
+	jr nz, .okay2
+	ld hl, sBoxMon1Species
+	ld bc, BOXMON_STRUCT_LENGTH
+	ld a, [sBoxCount]
+
+.okay2
+	dec a ; PartyCount - 1
+	call AddNTimes
+
+.breedmon
+	push hl
+	ld e, l
+	ld d, h
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	ld hl, sBoxMon1Species
+	ld bc, BOXMON_STRUCT_LENGTH
+	jr z, .okay3
+	cp DAYCARE_WITHDRAW
+	ld hl, wBreedMon1Species
+	jr z, .okay4
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+
+.okay3
+	ld a, [CurPartyMon]
+	call AddNTimes
+
+.okay4
+	ld bc, BOXMON_STRUCT_LENGTH
+	call CopyBytes
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_DEPOSIT
+	ld de, wBreedMon1OT
+	jr z, .okay5
+	dec a
+	ld hl, PartyMonOT
+	ld a, [PartyCount]
+	jr nz, .okay6
+	ld hl, sBoxMonOT
+	ld a, [sBoxCount]
+
+.okay6
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+
+.okay5
+	ld hl, sBoxMonOT
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .okay7
+	ld hl, wBreedMon1OT
+	cp DAYCARE_WITHDRAW
+	jr z, .okay8
+	ld hl, PartyMonOT
+
+.okay7
+	ld a, [CurPartyMon]
+	call SkipNames
+
+.okay8
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_DEPOSIT
+	ld de, wBreedMon1Nick
+	jr z, .okay9
+	dec a
+	ld hl, PartyMonNicknames
+	ld a, [PartyCount]
+	jr nz, .okay10
+	ld hl, sBoxMonNicknames
+	ld a, [sBoxCount]
+
+.okay10
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+
+.okay9
+	ld hl, sBoxMonNicknames
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .okay11
+	ld hl, wBreedMon1Nick
+	cp DAYCARE_WITHDRAW
+	jr z, .okay12
+	ld hl, PartyMonNicknames
+
+.okay11
+	ld a, [CurPartyMon]
+	call SkipNames
+
+.okay12
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	pop hl
+
+	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 CalcLevel
+	ld a, d
+	ld [CurPartyLevel], a
+	pop hl
+
+	ld b, h
+	ld c, l
+	ld hl, MON_LEVEL
+	add hl, bc
+	ld [hl], a
+	ld hl, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, MON_STAT_EXP - 1
+	add hl, bc
+
+	push bc
+	ld b, $1
+	call CalcPkmnStats
+	pop bc
+
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr nz, .CloseSRAM_And_ClearCarryFlag
+	ld hl, MON_STATUS
+	add hl, bc
+	xor a
+	ld [hl], a
+	ld hl, MON_HP
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .egg
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld [de], a
+	ld a, [hl]
+	inc de
+	ld [de], a
+	jr .CloseSRAM_And_ClearCarryFlag
+
+.egg
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	jr .CloseSRAM_And_ClearCarryFlag
+
+.took_out_of_box
+	ld a, [sBoxCount]
+	dec a
+	ld b, a
+	call Functiondcb6
+.CloseSRAM_And_ClearCarryFlag
+	call CloseSRAM
+	and a
+	ret
+; dcb1
+
+CloseSRAM_And_SetCarryFlag: ; dcb1
+	call CloseSRAM
+	scf
+	ret
+; dcb6
+
+Functiondcb6: ; dcb6
+	ld a, b
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+	call AddNTimes
+	ld b, h
+	ld c, l
+	ld hl, MON_PP
+	add hl, bc
+	push hl
+	push bc
+	ld de, TempMonPP
+	ld bc, NUM_MOVES
+	call CopyBytes
+	pop bc
+	ld hl, MON_MOVES
+	add hl, bc
+	push hl
+	ld de, TempMonMoves
+	ld bc, NUM_MOVES
+	call CopyBytes
+	pop hl
+	pop de
+
+	ld a, [wMenuCursorY]
+	push af
+	ld a, [MonType]
+	push af
+	ld b, 0
+.asm_dcec
+	ld a, [hli]
+	and a
+	jr z, .asm_dd18
+	ld [TempMonMoves], a
+	ld a, BOXMON
+	ld [MonType], a
+	ld a, b
+	ld [wMenuCursorY], a
+	push bc
+	push hl
+	push de
+	callba GetMaxPPOfMove
+	pop de
+	pop hl
+	ld a, [wd265]
+	ld b, a
+	ld a, [de]
+	and %11000000
+	add b
+	ld [de], a
+	pop bc
+	inc de
+	inc b
+	ld a, b
+	cp NUM_MOVES
+	jr c, .asm_dcec
+
+.asm_dd18
+	pop af
+	ld [MonType], a
+	pop af
+	ld [wMenuCursorY], a
+	ret
+; dd21
+
+RetrievePokemonFromDaycareMan: ; dd21
+	ld a, [wBreedMon1Species]
+	ld [CurPartySpecies], a
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	call WaitSFX
+	call GetBreedMon1LevelGrowth
+	ld a, b
+	ld [wd002], a
+	ld a, e
+	ld [CurPartyLevel], a
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	jp Functiondd64
+; dd42
+
+RetrievePokemonFromDaycareLady: ; dd42
+	ld a, [wBreedMon2Species]
+	ld [CurPartySpecies], a
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	call WaitSFX
+	call GetBreedMon2LevelGrowth
+	ld a, b
+	ld [wd002], a
+	ld a, e
+	ld [CurPartyLevel], a
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	jp Functiondd64
+; dd64
+
+Functiondd64: ; dd64
+	ld hl, PartyCount
+	ld a, [hl]
+	cp PARTY_LENGTH
+	jr nz, .room_in_party
+	scf
+	ret
+
+.room_in_party
+	inc a
+	ld [hl], a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	ld a, [wBreedMon1Species]
+	ld de, wBreedMon1Nick
+	jr z, .okay
+	ld a, [wBreedMon2Species]
+	ld de, wBreedMon2Nick
+
+.okay
+	ld [hli], a
+	ld [CurSpecies], a
+	ld a, $ff
+	ld [hl], a
+	ld hl, PartyMonNicknames
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	push hl
+	ld h, d
+	ld l, e
+	pop de
+	call CopyBytes
+	push hl
+	ld hl, PartyMonOT
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	pop hl
+	call CopyBytes
+	push hl
+	call Functionde1a
+	pop hl
+	ld bc, BOXMON_STRUCT_LENGTH
+	call CopyBytes
+	call GetBaseData
+	call Functionde1a
+	ld b, d
+	ld c, e
+	ld hl, MON_LEVEL
+	add hl, bc
+	ld a, [CurPartyLevel]
+	ld [hl], a
+	ld hl, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, $a
+	add hl, bc
+	push bc
+	ld b, $1
+	call CalcPkmnStats
+	ld hl, PartyMon1Moves
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld a, $1
+	ld [Buffer1], a
+	predef FillMoves
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	callba HealPartyMon
+	ld a, [CurPartyLevel]
+	ld d, a
+	callab CalcExpAtLevel
+	pop bc
+	ld hl, $8
+	add hl, bc
+	ld a, [hMultiplicand]
+	ld [hli], a
+	ld a, [hMultiplicand + 1]
+	ld [hli], a
+	ld a, [hMultiplicand + 2]
+	ld [hl], a
+	and a
+	ret
+; de1a
+
+Functionde1a: ; de1a
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ret
+; de2a
+
+DepositMonWithDaycareMan: ; de2a
+	ld de, wBreedMon1Nick
+	call DepositBreedmon
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	jp RemoveMonFromPartyOrBox
+; de37
+
+DepositMonWithDaycareLady: ; de37
+	ld de, wBreedMon2Nick
+	call DepositBreedmon
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	jp RemoveMonFromPartyOrBox
+; de44
+
+DepositBreedmon: ; de44
+	ld a, [CurPartyMon]
+	ld hl, PartyMonNicknames
+	call SkipNames
+	call CopyBytes
+	ld a, [CurPartyMon]
+	ld hl, PartyMonOT
+	call SkipNames
+	call CopyBytes
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld bc, BOXMON_STRUCT_LENGTH
+	jp CopyBytes
+
+SentPkmnIntoBox: ; de6e
+; Sents the Pkmn into one of Bills Boxes
+; the data comes mainly from 'EnemyMon:'
+	ld a, BANK(sBoxCount)
+	call GetSRAMBank
+	ld de, sBoxCount
+	ld a, [de]
+	cp MONS_PER_BOX
+	jp nc, .full
+	inc a
+	ld [de], a
+
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	ld c, a
+.loop
+	inc de
+	ld a, [de]
+	ld b, a
+	ld a, c
+	ld c, b
+	ld [de], a
+	inc a
+	jr nz, .loop
+
+	call GetBaseData
+	call ShiftBoxMon
+
+	ld hl, PlayerName
+	ld de, sBoxMonOT
+	ld bc, NAME_LENGTH
+	call CopyBytes
+
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+
+	ld de, sBoxMonNicknames
+	ld hl, StringBuffer1
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+	ld hl, EnemyMon
+	ld de, sBoxMon1
+	ld bc, 1 + 1 + NUM_MOVES ; species + item + moves
+	call CopyBytes
+
+	ld hl, PlayerID
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	push de
+	ld a, [CurPartyLevel]
+	ld d, a
+	callab CalcExpAtLevel
+	pop de
+	ld a, [hProduct + 1]
+	ld [de], a
+	inc de
+	ld a, [hProduct + 2]
+	ld [de], a
+	inc de
+	ld a, [hProduct + 3]
+	ld [de], a
+	inc de
+
+    ; Set all 5 Experience Values to 0
+	xor a
+	ld b, 2 * 5
+.loop2
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .loop2
+
+	ld hl, EnemyMonDVs
+	ld b, 2 + NUM_MOVES ; DVs and PP ; EnemyMonHappiness - EnemyMonDVs
+.loop3
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .loop3
+
+	ld a, BASE_HAPPINESS
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	ld a, [CurPartySpecies]
+	dec a
+	call SetSeenAndCaughtMon
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr nz, .not_unown
+	ld hl, sBoxMon1DVs
+	predef GetUnownLetter
+	callab UpdateUnownDex
+
+.not_unown
+	ld hl, sBoxMon1Moves
+	ld de, TempMonMoves
+	ld bc, NUM_MOVES
+	call CopyBytes
+
+	ld hl, sBoxMon1PP
+	ld de, TempMonPP
+	ld bc, NUM_MOVES
+	call CopyBytes
+
+	ld b, 0
+	call Functiondcb6
+
+	call CloseSRAM
+	scf
+	ret
+; df42
+
+.full: ; df42
+	call CloseSRAM
+	and a
+	ret
+; df47
+
+ShiftBoxMon: ; df47
+	ld hl, sBoxMonOT
+	ld bc, NAME_LENGTH
+	call .shift
+
+	ld hl, sBoxMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	call .shift
+
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+
+.shift
+	ld a, [sBoxCount]
+	cp 2
+	ret c
+
+	push hl
+	call AddNTimes
+	dec hl
+	ld e, l
+	ld d, h
+	pop hl
+
+	ld a, [sBoxCount]
+	dec a
+	call AddNTimes
+	dec hl
+
+	push hl
+	ld a, [sBoxCount]
+	dec a
+	ld hl, 0
+	call AddNTimes
+	ld c, l
+	ld b, h
+	pop hl
+.loop
+	ld a, [hld]
+	ld [de], a
+	dec de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .loop
+	ret
+; df8c
+
+GiveEgg:: ; df8c
+	ld a, [CurPartySpecies]
+	push af
+	callab GetPreEvolution
+	callab GetPreEvolution
+	ld a, [CurPartySpecies]
+	dec a
+
+; TryAddMonToParty sets Seen and Caught flags
+; when it is successful.  This routine will make
+; sure that we aren't newly setting flags.
+	push af
+	call CheckCaughtMon
+	pop af
+	push bc
+	call CheckSeenMon
+	push bc
+
+	call TryAddMonToParty
+
+; If we haven't caught this Pokemon before receiving
+; the Egg, reset the flag that was just set by
+; TryAddMonToParty.
+	pop bc
+	ld a, c
+	and a
+	jr nz, .skip_caught_flag
+	ld a, [CurPartySpecies]
+	dec a
+	ld c, a
+	ld d, $0
+	ld hl, PokedexCaught
+	ld b, RESET_FLAG
+	predef FlagPredef
+
+.skip_caught_flag
+; If we haven't seen this Pokemon before receiving
+; the Egg, reset the flag that was just set by
+; TryAddMonToParty.
+	pop bc
+	ld a, c
+	and a
+	jr nz, .skip_seen_flag
+	ld a, [CurPartySpecies]
+	dec a
+	ld c, a
+	ld d, $0
+	ld hl, PokedexSeen
+	ld b, RESET_FLAG
+	predef FlagPredef
+
+.skip_seen_flag
+	pop af
+	ld [CurPartySpecies], a
+	ld a, [PartyCount]
+	dec a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1Species
+	call AddNTimes
+	ld a, [CurPartySpecies]
+	ld [hl], a
+	ld hl, PartyCount
+	ld a, [hl]
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, EGG
+	ld [hl], a
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMonNicknames
+	call SkipNames
+	ld de, String_Egg
+	call CopyName2
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1Happiness
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld a, [wMonStatusFlags]
+	bit 1, a
+	ld a, 1
+	jr nz, .got_init_happiness
+	ld a, [BaseEggSteps]
+
+.got_init_happiness
+	ld [hl], a
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1HP
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	xor a
+	ld [hli], a
+	ld [hl], a
+	and a
+	ret
+; e035
+
+String_Egg: ; e035
+	db "EGG@"
+; e039
+
+RemoveMonFromPartyOrBox: ; e039
+	ld hl, PartyCount
+
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .okay
+
+	ld a, BANK(sBoxCount)
+	call GetSRAMBank
+	ld hl, sBoxCount
+
+.okay
+	ld a, [hl]
+	dec a
+	ld [hli], a
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld e, l
+	ld d, h
+	inc de
+.loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	inc a
+	jr nz, .loop
+	ld hl, PartyMonOT
+	ld d, PARTY_LENGTH - 1
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party
+	ld hl, sBoxMonOT
+	ld d, MONS_PER_BOX - 1
+
+.party
+	; If this is the last mon in our party (box),
+	; shift all the other mons up to close the gap.
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld a, [CurPartyMon]
+	cp d
+	jr nz, .delete_inside
+	ld [hl], -1
+	jp .finish
+
+.delete_inside
+	; Shift the OT names
+	ld d, h
+	ld e, l
+	ld bc, PKMN_NAME_LENGTH
+	add hl, bc
+	ld bc, PartyMonNicknames
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party2
+	ld bc, sBoxMonNicknames
+.party2
+	call CopyDataUntil
+	; Shift the struct
+	ld hl, PartyMons
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party4
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+.party4
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party5
+	ld bc, BOXMON_STRUCT_LENGTH
+	add hl, bc
+	ld bc, sBoxMonOT
+	jr .copy
+
+.party5
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	ld bc, PartyMonOT
+.copy
+	call CopyDataUntil
+	; Shift the nicknames
+	ld hl, PartyMonNicknames
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party6
+	ld hl, sBoxMonNicknames
+.party6
+	ld bc, PKMN_NAME_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld bc, PKMN_NAME_LENGTH
+	add hl, bc
+	ld bc, PartyMonNicknamesEnd
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jr z, .party7
+	ld bc, sBoxMonNicknamesEnd
+.party7
+	call CopyDataUntil
+	; Mail time!
+.finish
+	ld a, [wPokemonWithdrawDepositParameter]
+	and a
+	jp nz, CloseSRAM
+	ld a, [wLinkMode]
+	and a
+	ret nz
+	; Shift mail
+	ld a, BANK(sPartyMail)
+	call GetSRAMBank
+	; If this is the last mon in our party, no need to shift mail.
+	ld hl, PartyCount
+	ld a, [CurPartyMon]
+	cp [hl]
+	jr z, .close_sram
+	; Shift our mail messages up.
+	ld hl, sPartyMail
+	ld bc, MAIL_STRUCT_LENGTH
+	call AddNTimes
+	push hl
+	add hl, bc
+	pop de
+	ld a, [CurPartyMon]
+	ld b, a
+.loop2
+	push bc
+	push hl
+	ld bc, MAIL_STRUCT_LENGTH
+	call CopyBytes
+	pop hl
+	push hl
+	ld bc, MAIL_STRUCT_LENGTH
+	add hl, bc
+	pop de
+	pop bc
+	inc b
+	ld a, [PartyCount]
+	cp b
+	jr nz, .loop2
+.close_sram
+	jp CloseSRAM
+; e134
+
+
+ComputeNPCTrademonStats: ; e134
+	ld a, MON_LEVEL
+	call GetPartyParamLocation
+	ld a, [hl]
+	ld [MON_LEVEL], a ; wow
+	ld a, MON_SPECIES
+	call GetPartyParamLocation
+	ld a, [hl]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, MON_MAXHP
+	call GetPartyParamLocation
+	ld d, h
+	ld e, l
+	push de
+	ld a, MON_STAT_EXP - 1
+	call GetPartyParamLocation
+	ld b, $1
+	call CalcPkmnStats
+	pop de
+	ld a, MON_HP
+	call GetPartyParamLocation
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+	ret
+; e167
+
+CalcPkmnStats: ; e167
+; Calculates all 6 Stats of a Pkmn
+; b: Take into account stat EXP if TRUE
+; 'c' counts from 1-6 and points with 'BaseStats' to the base value
+; hl is the path to the Stat EXP
+; results in $ffb5 and $ffb6 are saved in [de]
+
+	ld c, $0
+.loop
+	inc c
+	call CalcPkmnStatC
+	ld a, [hMultiplicand + 1]
+	ld [de], a
+	inc de
+	ld a, [hMultiplicand + 2]
+	ld [de], a
+	inc de
+	ld a, c
+	cp STAT_SDEF
+	jr nz, .loop
+	ret
+; 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
+	ld a, b
+	ld d, a
+	push hl
+	ld hl, BaseStats
+	dec hl ; has to be decreased, because 'c' begins with 1
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	pop hl
+	push hl
+	ld a, c
+	cp STAT_SDEF
+	jr nz, .not_spdef
+	dec hl
+	dec hl
+
+.not_spdef
+	sla c
+	ld a, d
+	and a
+	jr z, .SkipSqrt
+	add hl, bc
+	push de
+	ld a, [hld]
+	ld e, a
+	ld d, [hl]
+	callba GetSquareRoot
+	pop de
+
+.SkipSqrt
+	srl c
+	pop hl
+	push bc
+	ld bc, MON_DVS - MON_HP_EXP + 1
+	add hl, bc
+	pop bc
+	ld a, c
+	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
+	and $1
+rept 3
+	add a
+endr
+	ld b, a
+	ld a, [hli]
+	and $1
+	add a
+	add a
+	add b
+	ld b, a
+	ld a, [hl]
+	swap a
+	and $1
+	add a
+	add b
+	ld b, a
+	ld a, [hl]
+	and $1
+	add b
+	pop bc
+	jr .GotDV
+
+.Attack
+	ld a, [hl]
+	swap a
+	and $f
+	jr .GotDV
+
+.Defense
+	ld a, [hl]
+	and $f
+	jr .GotDV
+
+.Speed
+	inc hl
+	ld a, [hl]
+	swap a
+	and $f
+	jr .GotDV
+
+.Special
+	inc hl
+	ld a, [hl]
+	and $f
+
+.GotDV
+	ld d, 0
+	add e
+	ld e, a
+	jr nc, .no_overflow_1
+	inc d
+
+.no_overflow_1
+	sla e
+	rl d
+	srl b
+	srl b
+	ld a, b
+	add e
+	jr nc, .no_overflow_2
+	inc d
+
+.no_overflow_2
+	ld [hMultiplicand + 2], a
+	ld a, d
+	ld [hMultiplicand + 1], a
+	xor a
+	ld [hMultiplicand + 0], a
+	ld a, [CurPartyLevel]
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hProduct + 1]
+	ld [hDividend + 0], a
+	ld a, [hProduct + 2]
+	ld [hDividend + 1], a
+	ld a, [hProduct + 3]
+	ld [hDividend + 2], a
+	ld a, 100
+	ld [hDivisor], a
+	ld a, 3
+	ld b, a
+	call Divide
+	ld a, c
+	cp STAT_HP
+	ld a, 5
+	jr nz, .not_hp
+	ld a, [CurPartyLevel]
+	ld b, a
+	ld a, [hQuotient + 2]
+	add b
+	ld [hMultiplicand + 2], a
+	jr nc, .no_overflow_3
+	ld a, [hQuotient + 1]
+	inc a
+	ld [hMultiplicand + 1], a
+
+.no_overflow_3
+	ld a, 10
+
+.not_hp
+	ld b, a
+	ld a, [hQuotient + 2]
+	add b
+	ld [hMultiplicand + 2], a
+	jr nc, .no_overflow_4
+	ld a, [hQuotient + 1]
+	inc a
+	ld [hMultiplicand + 1], a
+
+.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
+
+.max_stat
+	ld a, 999 / $100
+	ld [hMultiplicand + 1], a
+	ld a, 999 % $100
+	ld [hMultiplicand + 2], a
+
+.stat_value_okay
+	pop bc
+	pop de
+	pop hl
+	ret
+; e277
+
+GivePoke:: ; e277
+	push de
+	push bc
+	xor a ; PARTYMON
+	ld [MonType], a
+	call TryAddMonToParty
+	jr nc, .failed
+	ld hl, PartyMonNicknames
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	call SkipNames
+	ld d, h
+	ld e, l
+	pop bc
+	ld a, b
+	ld b, 0
+	push bc
+	push de
+	push af
+	ld a, [CurItem]
+	and a
+	jr z, .done
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Item
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld a, [CurItem]
+	ld [hl], a
+	jr .done
+
+.failed
+	ld a, [CurPartySpecies]
+	ld [TempEnemyMonSpecies], a
+	callab LoadEnemyMon
+	call SentPkmnIntoBox
+	jp nc, .FailedToGiveMon
+	ld a, BOXMON
+	ld [MonType], a
+	xor a
+	ld [CurPartyMon], a
+	ld de, wMonOrItemNameBuffer
+	pop bc
+	ld a, b
+	ld b, 1
+	push bc
+	push de
+	push af
+	ld a, [CurItem]
+	and a
+	jr z, .done
+	ld a, [CurItem]
+	ld [sBoxMon1Item], a
+
+.done
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	ld [TempEnemyMonSpecies], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld de, wMonOrItemNameBuffer
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	pop af
+	and a
+	jp z, .wildmon
+	pop de
+	pop bc
+	pop hl
+	push bc
+	push hl
+	ld a, [ScriptBank]
+	call GetFarHalfword
+	ld bc, PKMN_NAME_LENGTH
+	ld a, [ScriptBank]
+	call FarCopyBytes
+	pop hl
+	inc hl
+	inc hl
+	ld a, [ScriptBank]
+	call GetFarHalfword
+	pop bc
+	ld a, b
+	and a
+	push de
+	push bc
+	jr nz, .send_to_box
+
+	push hl
+	ld a, [CurPartyMon]
+	ld hl, PartyMonOT
+	call SkipNames
+	ld d, h
+	ld e, l
+	pop hl
+.otnameloop
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp "@"
+	jr nz, .otnameloop
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld b, a
+	push bc
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1ID
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld a, 01001 / $100
+	ld [hli], a
+	ld [hl], 01001 % $100
+	pop bc
+	callba SetGiftPartyMonCaughtData
+	jr .skip_nickname
+
+.send_to_box
+	ld a, BANK(sBoxMonOT)
+	call GetSRAMBank
+	ld de, sBoxMonOT
+.loop
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp "@"
+	jr nz, .loop
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld b, a
+	ld hl, sBoxMon1ID
+	call Random
+	ld [hli], a
+	call Random
+	ld [hl], a
+	call CloseSRAM
+	callba SetGiftBoxMonCaughtData
+	jr .skip_nickname
+
+.wildmon
+	pop de
+	pop bc
+	push bc
+	push de
+	ld a, b
+	and a
+	jr z, .party
+	callba SetBoxMonCaughtData
+	jr .set_caught_data
+
+.party
+	callba SetCaughtData
+.set_caught_data
+	callba GiveANickname_YesNo
+	pop de
+	jr c, .skip_nickname
+	call InitNickname
+
+.skip_nickname
+	pop bc
+	pop de
+	ld a, b
+	and a
+	ret z
+	ld hl, TextJump_WasSentToBillsPC
+	call PrintText
+	ld a, BANK(sBoxMonNicknames)
+	call GetSRAMBank
+	ld hl, wMonOrItemNameBuffer
+	ld de, sBoxMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	ld b, $1
+	ret
+; e3d4
+
+.FailedToGiveMon: ; e3d4
+	pop bc
+	pop de
+	ld b, $2
+	ret
+; e3d9
+
+TextJump_WasSentToBillsPC: ; 0xe3d9
+	; was sent to BILL's PC.
+	text_jump Text_WasSentToBillsPC
+	db "@"
+; 0xe3de
+
+InitNickname: ; e3de
+	push de
+	call LoadStandardMenuDataHeader
+	call DisableSpriteUpdates
+	pop de
+	push de
+	ld b, $0
+	callba NamingScreen
+	pop hl
+	ld de, StringBuffer1
+	call InitName
+	ld a, $4 ; XXX could this be in bank 4 in pokered?
+	ld hl, ExitAllMenus
+	rst FarCall
+	ret
+; e3fd
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -3,10 +3,10 @@
 	dw Movement_turn_head_up          ; 01
 	dw Movement_turn_head_left        ; 02
 	dw Movement_turn_head_right       ; 03
-	dw Movement_half_step_down        ; 04
-	dw Movement_half_step_up          ; 05
-	dw Movement_half_step_left        ; 06
-	dw Movement_half_step_right       ; 07
+	dw Movement_turn_step_down        ; 04
+	dw Movement_turn_step_up          ; 05
+	dw Movement_turn_step_left        ; 06
+	dw Movement_turn_step_right       ; 07
 	dw Movement_slow_step_down        ; 08
 	dw Movement_slow_step_up          ; 09
 	dw Movement_slow_step_left        ; 0a
@@ -88,7 +88,7 @@
 	dw Movement_56                    ; 56
 	dw Movement_rock_smash            ; 57
 	dw Movement_return_dig            ; 58
-	dw Movement_59                    ; 59
+	dw Movement_skyfall_top       ; 59
 ; 5129
 
 
@@ -113,10 +113,10 @@
 	ret
 ; 513e
 
-Movement_59: ; 513e
+Movement_skyfall_top: ; 513e
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_19
+	ld [hl], STEP_TYPE_SKYFALL_TOP
 	ret
 ; 5145
 
@@ -130,7 +130,7 @@
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_SPIN
-	call GetMovementByte
+	call JumpMovementPointer
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
@@ -150,7 +150,7 @@
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], a
-	call GetMovementByte
+	call JumpMovementPointer
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
@@ -174,7 +174,7 @@
 ; 5196
 
 Movement_rock_smash: ; 5196
-	call GetMovementByte
+	call JumpMovementPointer
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
@@ -193,7 +193,7 @@
 	ld [hl], PERSON_ACTION_FISHING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 51b8
 
@@ -219,7 +219,7 @@
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_STANDING
+	ld [hl], STEP_TYPE_SLEEP
 	ret
 ; 51db
 
@@ -233,7 +233,7 @@
 	add hl, bc
 	ld [hl], $0
 
-	call GetMovementByte
+	call JumpMovementPointer
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
@@ -248,7 +248,7 @@
 ; 51fd
 
 Movement_remove_person: ; 51fd
-	call Function4357
+	call DeleteMapObject
 	ld hl, wObjectFollow_Leader
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
@@ -311,7 +311,7 @@
 ; parameters:
 ;	duration (DecimalParam)
 
-	call GetMovementByte
+	call JumpMovementPointer
 	jr Movement_step_sleep_common
 
 Movement_step_sleep_common: ; 5247
@@ -429,7 +429,7 @@
 ; parameters:
 ;	displacement (DecimalParam)
 
-	call GetMovementByte
+	call JumpMovementPointer
 	call ShakeScreen
 	jp ContinueReadingMovement
 ; 52de
@@ -709,24 +709,24 @@
 ; 53f0
 
 
-Movement_half_step_down: ; 53f0
+Movement_turn_step_down: ; 53f0
 	ld a, OW_DOWN
-	jr HalfStep
+	jr TurnStep
 
-Movement_half_step_up: ; 53f4
+Movement_turn_step_up: ; 53f4
 	ld a, OW_UP
-	jr HalfStep
+	jr TurnStep
 
-Movement_half_step_left: ; 53f8
+Movement_turn_step_left: ; 53f8
 	ld a, OW_LEFT
-	jr HalfStep
+	jr TurnStep
 
-Movement_half_step_right: ; 53fc
+Movement_turn_step_right: ; 53fc
 	ld a, OW_RIGHT
-	jr HalfStep
+	jr TurnStep
 
-HalfStep: ; 5400
-	ld hl, OBJECT_29
+TurnStep: ; 5400
+	ld hl, OBJECT_29 ; new facing
 	add hl, bc
 	ld [hl], a
 
@@ -741,8 +741,8 @@
 ; 5412
 
 NormalStep: ; 5412
-	call Function4690
-	call Function463f
+	call InitStep
+	call UpdateTallGrassFlags
 	ld hl, OBJECT_ACTION
 	add hl, bc
 	ld [hl], PERSON_ACTION_STEP
@@ -778,8 +778,8 @@
 ; 5446
 
 TurningStep: ; 5446
-	call Function4690
-	call Function463f
+	call InitStep
+	call UpdateTallGrassFlags
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -804,8 +804,8 @@
 
 
 SlideStep: ; 5468
-	call Function4690
-	call Function463f
+	call InitStep
+	call UpdateTallGrassFlags
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
@@ -830,7 +830,7 @@
 
 
 JumpStep: ; 548a
-	call Function4690
+	call InitStep
 	ld hl, OBJECT_31
 	add hl, bc
 	ld [hl], $0
--- a/engine/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -15,7 +15,9 @@
 	ld [wca02], a
 	ld a, [rIE]
 	push af
+
 	call Function104a95
+
 	ld d, a
 	xor a
 	ld [rIF], a
@@ -37,7 +39,7 @@
 	cp $6c
 	jp nz, .CommunicationError
 	ld a, [wc900]
-	cp $3
+	cp 3
 	jr z, .skip_checks
 	call .CheckAlreadyGotFiveGiftsToday
 	ld hl, .Text_MaxFiveGifts ; Only 5 gifts a day
@@ -46,18 +48,18 @@
 	ld hl, .Text_MaxOneGiftPerPerson ; Only one gift a day per person
 	jp c, .PrintTextAndExit
 .skip_checks
-	ld a, [wc962]
+	ld a, [wMysteryGiftPlayerBackupItem]
 	and a
 	jp nz, .GiftWaiting
-	ld a, [wc912]
+	ld a, [wMysteryGiftPartnerBackupItem]
 	and a
 	jp nz, .FriendNotReady
 	ld a, [wc900]
-	cp $3
+	cp 3
 	jr z, .skip_append_save
 	call .AddMysteryGiftPartnerID
 	ld a, [wc900]
-	cp $4
+	cp 4
 	jr z, .skip_append_save
 	call .SaveMysteryGiftTrainerName
 	callba RestoreMobileEventIndex
@@ -64,14 +66,14 @@
 	callba MobileFn_1060a9
 	callba BackupMobileEventIndex
 .skip_append_save
-	ld a, [wc90f]
+	ld a, [wMysteryGiftPartnerSentDeco]
 	and a
 	jr z, .item
-	ld a, [wc911]
+	ld a, [wMysteryGiftPartnerWhichDeco]
 	ld c, a
 	callba MysteryGiftGetDecoration
 	push bc
-	call Function105069
+	call MysteryGift_CheckAndSetDecorationAlreadyReceived
 	pop bc
 	jr nz, .item
 	callab GetDecorationName_c
@@ -85,7 +87,7 @@
 
 .item
 	call GetMysteryGiftBank
-	ld a, [wc910]
+	ld a, [wMysteryGiftPartnerWhichItem]
 	ld c, a
 	callba MysteryGiftGetItemHeldEffect
 	ld a, c
@@ -209,9 +211,8 @@
 	ld hl, sDailyMysteryGiftPartnerIDs ; inc hl
 	ld e, a
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [wMysteryGiftPartnerID]
 	ld [hli], a
 	ld a, [wMysteryGiftPartnerID + 1]
@@ -249,7 +250,7 @@
 	ld a, [hPrintNum9]
 	cp $2
 	jr z, Function104b22
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d56
 	jr nz, .ly_loop
@@ -323,7 +324,7 @@
 	jp Function104bd0
 
 Function104b40: ; 104b40 (41:4b40)
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d56
 	ret nz
@@ -333,14 +334,14 @@
 	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
-	ld a, [$ffb3]
+	ld a, [hPrintNum1]
 	cp $96
 	jp nz, Function104d32
 	ld a, $90
-	ld [$ffb3], a
+	ld [hPrintNum1], a
 	call Function104d38
 	ret nz
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d4e
 	ret nz
@@ -362,8 +363,8 @@
 
 Function104b88: ; 104b88 (41:4b88)
 	ld a, $96
-	ld [$ffb3], a
-	ld hl, $ffb3
+	ld [hPrintNum1], a
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d4e
 	ret nz
@@ -373,7 +374,7 @@
 	ret nz
 	call Function104d43
 	ret nz
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d56
 	ret nz
@@ -381,7 +382,7 @@
 	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
-	ld a, [$ffb3]
+	ld a, [hPrintNum1]
 	cp $90
 	jp nz, Function104d32
 	call Function104d38
@@ -407,13 +408,13 @@
 	dec [hl]
 	jr z, .asm_104c18
 	ld hl, wMysteryGiftTrainerData
-	ld de, wc900
-	ld bc, $14
+	ld de, wMysteryGiftPartnerData
+	ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData
 	call CopyBytes
 	ld a, [wMysteryGiftTrainerData]
 	cp $3
 	jr nc, .asm_104c18
-	callba Function10510b
+	callba StagePartyDataForMysteryGift
 	call Function1050fb
 	ld a, $26
 	ld [wca02], a
@@ -479,7 +480,7 @@
 	jp Function104d1c
 
 Function104c8a: ; 104c8a (41:4c8a)
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d56
 	ret nz
@@ -487,14 +488,14 @@
 	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
-	ld a, [$ffb3]
+	ld a, [hPrintNum1]
 	cp $3c
 	jp nz, Function104d32
 	swap a
-	ld [$ffb3], a
+	ld [hPrintNum1], a
 	call Function104d38
 	ret nz
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d4e
 	ret nz
@@ -516,8 +517,8 @@
 
 Function104cd2: ; 104cd2 (41:4cd2)
 	ld a, $3c
-	ld [$ffb3], a
-	ld hl, $ffb3
+	ld [hPrintNum1], a
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d4e
 	ret nz
@@ -527,7 +528,7 @@
 	ret nz
 	call Function104d43
 	ret nz
-	ld hl, $ffb3
+	ld hl, hPrintNum1
 	ld b, $1
 	call Function104d56
 	ret nz
@@ -535,7 +536,7 @@
 	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
-	ld a, [$ffb3]
+	ld a, [hPrintNum1]
 	swap a
 	cp $3c
 	jp nz, Function104d32
@@ -678,24 +679,24 @@
 Function104dc5: ; 104dc5 (41:4dc5)
 	ld a, $c1
 	ld [$ff00+c], a
-.asm_104dc8
+.wait
 	dec d
 	ret z
 	xor a
 	ld [rIF], a
 	halt
-	jr .asm_104dc8
+	jr .wait
 
 Function104dd1: ; 104dd1 (41:4dd1)
 	ld a, $c0
 	ld [$ff00+c], a
-.asm_104dd4
+.wait
 	dec d
 	ret z
 	xor a
 	ld [rIF], a
 	halt
-	jr .asm_104dd4
+	jr .wait
 
 Function104ddd: ; 104ddd (41:4ddd)
 	ld d, $0
@@ -702,22 +703,23 @@
 	ld e, d
 	ld a, $1
 	ld [hPrintNum9], a
-.asm_104de4
+.loop
 	call Function105038
 	ld b, $2
 	ld c, rRP % $100
 	ld a, [hMoneyTemp + 1]
 	bit 1, a
-	jr z, .asm_104df6
+	jr z, .next
 	ld a, $10
 	ld [hPrintNum10], a
 	ret
-.asm_104df6
+
+.next
 	bit 0, a
 	jr nz, asm_104e3a
 	ld a, [$ff00+c]
 	and b
-	jr nz, .asm_104de4
+	jr nz, .loop
 
 Function104dfe: ; 104dfe (41:4dfe)
 	ld c, rRP % $100
@@ -760,7 +762,7 @@
 Function104e46: ; 104e46 (41:4e46)
 	ld a, $2
 	ld [hPrintNum9], a
-	ld c, $56
+	ld c, rRP % $100
 	ld d, $0
 	ld e, d
 	ld d, $3d
@@ -797,14 +799,14 @@
 
 Function104e93: ; 104e93 (41:4e93)
 	xor a
-	ld [hDivisor], a
-	ld [hMathBuffer], a
+	ld [hPrintNum5], a
+	ld [hPrintNum6], a
 	push hl
 	push bc
-	ld c, $56
+	ld c, rRP % $100
 	ld d, $3d
 	call Function104dd1
-	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
 	ld a, $5a
 	ld [hli], a
 	ld [hl], b
@@ -814,26 +816,26 @@
 	pop bc
 	pop hl
 	call Function104ed6
-	ld a, [hDivisor]
-	ld [hQuotient], a
-	ld a, [hMathBuffer]
-	ld [$ffb5], a
+	ld a, [hPrintNum5]
+	ld [hPrintNum2], a
+	ld a, [hPrintNum6]
+	ld [hPrintNum3], a
 	push hl
-	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
 	ld b, $2
 	call Function104ed6
 	ld hl, hPrintNum10
 	ld b, $1
 	call Function104faf
-	ld a, [hQuotient]
-	ld [hDivisor], a
-	ld a, [$ffb5]
-	ld [hMathBuffer], a
+	ld a, [hPrintNum2]
+	ld [hPrintNum5], a
+	ld a, [hPrintNum3]
+	ld [hPrintNum6], a
 	pop hl
 	ret
 
 Function104ed6: ; 104ed6 (41:4ed6)
-	ld c, $56
+	ld c, rRP % $100
 	ld d, $5
 	call Function104dd1
 	ld d, $5
@@ -849,15 +851,15 @@
 	inc b
 	jr z, .asm_104f2e
 	ld a, $8
-	ld [$ffb6], a
+	ld [hPrintNum4], a
 	ld a, [hli]
 	ld e, a
-	ld a, [hDivisor]
+	ld a, [hPrintNum5]
 	add e
-	ld [hDivisor], a
-	ld a, [hMathBuffer]
+	ld [hPrintNum5], a
+	ld a, [hPrintNum6]
 	adc $0
-	ld [hMathBuffer], a
+	ld [hPrintNum6], a
 .asm_104f02
 	xor a
 	ld [rIF], a
@@ -882,10 +884,10 @@
 	ld [rIF], a
 	halt
 .asm_104f25
-	ld a, [$ffb6]
+	ld a, [hPrintNum4]
 	dec a
 	jr z, .asm_104eee
-	ld [$ffb6], a
+	ld [hPrintNum4], a
 	jr .asm_104f02
 .asm_104f2e
 	ld a, $fe
@@ -919,35 +921,35 @@
 
 Function104f57: ; 104f57 (41:4f57)
 	xor a
-	ld [hDivisor], a
-	ld [hMathBuffer], a
+	ld [hPrintNum5], a
+	ld [hPrintNum6], a
 	push bc
 	push hl
-	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
 	ld b, $2
 	call Function104faf
-	ld a, [$ffb5]
-	ld [$ffba], a
+	ld a, [hPrintNum3]
+	ld [hPrintNum8], a
 	ld b, a
 	pop hl
 	pop af
 	cp b
 	jp c, Function104f50
-	ld a, [hQuotient]
+	ld a, [hPrintNum2]
 	cp $5a
 	jp nz, Function104f50
 	call Function104faf
-	ld a, [hDivisor]
+	ld a, [hPrintNum5]
 	ld d, a
-	ld a, [hMathBuffer]
+	ld a, [hPrintNum6]
 	ld e, a
 	push hl
 	push de
-	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
 	ld b, $2
 	call Function104faf
 	pop de
-	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
 	ld a, [hli]
 	xor d
 	ld b, a
@@ -964,9 +966,9 @@
 	pop de
 	pop hl
 	ld a, d
-	ld [hDivisor], a
+	ld [hPrintNum5], a
 	ld a, e
-	ld [hMathBuffer], a
+	ld [hPrintNum6], a
 	ret
 
 Function104faf: ; 104faf (41:4faf)
@@ -990,7 +992,7 @@
 	inc b
 	jr z, .asm_10501a
 	ld a, $8
-	ld [$ffb6], a
+	ld [hPrintNum4], a
 .asm_104fd9
 	ld d, $0
 .asm_104fdb
@@ -1019,9 +1021,9 @@
 .asm_104ffd
 	res 0, e
 .asm_104fff
-	ld a, [$ffb6]
+	ld a, [hPrintNum4]
 	dec a
-	ld [$ffb6], a
+	ld [hPrintNum4], a
 	jr z, .asm_10500b
 	ld a, e
 	rlca
@@ -1030,12 +1032,12 @@
 .asm_10500b
 	ld a, e
 	ld [hli], a
-	ld a, [hDivisor]
+	ld a, [hPrintNum5]
 	add e
-	ld [hDivisor], a
-	ld a, [hMathBuffer]
+	ld [hPrintNum5], a
+	ld a, [hPrintNum6]
 	adc $0
-	ld [hMathBuffer], a
+	ld [hPrintNum6], a
 	jr .asm_104fd2
 .asm_10501a
 	call Function104d74
@@ -1059,9 +1061,8 @@
 Function105038: ; 105038 (41:5038)
 	ld a, $20
 	ld [rJOYP], a
-rept 2
 	ld a, [rJOYP]
-endr
+	ld a, [rJOYP]
 	cpl
 	and $f
 	swap a
@@ -1085,7 +1086,7 @@
 	ld [rJOYP], a
 	ret
 
-Function105069: ; 105069 (41:5069)
+MysteryGift_CheckAndSetDecorationAlreadyReceived: ; 105069 (41:5069)
 	call GetMysteryGiftBank
 	ld d, $0
 	ld b, CHECK_FLAG
@@ -1107,7 +1108,7 @@
 	xor a
 	ret
 
-Function105091: ; 105091 (41:5091)
+MysteryGift_CopyReceivedDecosToPC: ; 105091 (41:5091)
 	call GetMysteryGiftBank
 	ld c, $0
 .loop
@@ -1181,11 +1182,11 @@
 Function1050fb: ; 1050fb (41:50fb)
 	ld hl, wMysteryGiftTrainerData
 	xor a
-	ld b, $26
-.asm_105101
+	ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData
+.loop
 	ld [hli], a
 	dec b
-	jr nz, .asm_105101
+	jr nz, .loop
 	ret
 
 
@@ -1195,29 +1196,35 @@
 ; 10510b
 
 
-Function10510b: ; 10510b (41:510b)
+StagePartyDataForMysteryGift: ; 10510b (41:510b)
+; You will be sending this data to your mystery gift partner.
+; Structure is the same as a trainer with species and moves
+; defined.
 	ld a, BANK(sPokemonData)
 	call GetSRAMBank
-	ld de, OverworldMap
+	ld de, wMysteryGiftStaging
 	ld bc, sPokemonData + PartyMons - wPokemonData
 	ld hl, sPokemonData + PartySpecies - wPokemonData
-.asm_105119
+.loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_105148
+	cp -1
+	jr z, .party_end
 	cp EGG
-	jr z, .asm_10513e
+	jr z, .next
 	push hl
+	; copy level
 	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
 	inc de
+	; copy species
 	ld hl, MON_SPECIES
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
 	inc de
+	; copy moves
 	ld hl, MON_MOVES
 	add hl, bc
 	push bc
@@ -1225,7 +1232,7 @@
 	call CopyBytes
 	pop bc
 	pop hl
-.asm_10513e
+.next
 	push hl
 	ld hl, PARTYMON_STRUCT_LENGTH
 	add hl, bc
@@ -1232,9 +1239,9 @@
 	ld b, h
 	ld c, l
 	pop hl
-	jr .asm_105119
-.asm_105148
-	ld a, $ff
+	jr .loop
+.party_end
+	ld a, -1
 	ld [de], a
 	ld a, $26
 	ld [wca00], a
@@ -1246,7 +1253,7 @@
 	ld hl, MysteryGiftGFX
 	ld de, VTiles2 tile $00
 	ld a, BANK(MysteryGiftGFX)
-	ld bc, Function105688 - MysteryGiftGFX
+	ld bc, MysteryGiftGFXEnd - MysteryGiftGFX
 	call FarCopyBytes
 	hlcoord 0, 0
 	ld a, $42
@@ -1267,13 +1274,13 @@
 	ld [hl], a
 	hlcoord 7, 1
 	ld a, $12
-	call Function10522e
+	call .Load5GFX
 	hlcoord 2, 2
 	ld a, $17
-	call Function105236
+	call .Load16GFX
 	hlcoord 2, 3
 	ld a, $27
-	call Function105236
+	call .Load16GFX
 	hlcoord 9, 4
 	ld a, $37
 	ld [hli], a
@@ -1283,19 +1290,19 @@
 	ld [hl], $4
 	hlcoord 1, 3
 	ld a, $5
-	call Function105246
+	call .Load14Column
 	ld a, $9
 	hlcoord 18, 5
-	call Function105242
+	call .Load11Column
 	hlcoord 2, 5
 	ld a, $b
-	call Function105251
+	call .Load16Row
 	hlcoord 2, 16
 	ld a, $7
-	call Function105251
+	call .Load16Row
 	hlcoord 2, 5
 	ld a, $d
-	call Function10522e
+	call .Load5GFX
 	hlcoord 7, 5
 	ld [hl], $c
 	hlcoord 18, 5
@@ -1306,16 +1313,16 @@
 	ld [hl], $6
 	hlcoord 2, 6
 	ld a, $3a
-	call Function105251
+	call .Load16Row
 	hlcoord 2, 15
 	ld a, $40
-	call Function105251
+	call .Load16Row
 	hlcoord 2, 6
 	ld a, $3c
-	call Function10523e
+	call .Load9Column
 	hlcoord 17, 6
 	ld a, $3e
-	call Function10523e
+	call .Load9Column
 	hlcoord 2, 6
 	ld [hl], $39
 	hlcoord 17, 6
@@ -1331,56 +1338,56 @@
 	call SetPalettes
 	ret
 
-Function10522e: ; 10522e (41:522e)
-	ld b, $5
-	jr asm_105238
+.Load5GFX: ; 10522e (41:522e)
+	ld b,  5
+	jr .gfx_loop
 ; 105232 (41:5232)
 
-Function105232: ; unreferenced
-	ld b, 6
-	jr asm_105238
+.Load6GFX: ; unreferenced
+	ld b,  6
+	jr .gfx_loop
 
-Function105236: ; 105236 (41:5236)
-	ld b, $10
+.Load16GFX: ; 105236 (41:5236)
+	ld b, 16
 
-asm_105238: ; 105238 (41:5238)
+.gfx_loop: ; 105238 (41:5238)
 	ld [hli], a
 	inc a
 	dec b
-	jr nz, asm_105238
+	jr nz, .gfx_loop
 	ret
 
-Function10523e: ; 10523e (41:523e)
-	ld b, $9
-	jr asm_105248
+.Load9Column: ; 10523e (41:523e)
+	ld b,  9
+	jr .col_loop
 
-Function105242: ; 105242 (41:5242)
-	ld b, $b
-	jr asm_105248
+.Load11Column: ; 105242 (41:5242)
+	ld b, 11
+	jr .col_loop
 
-Function105246: ; 105246 (41:5246)
-	ld b, $e
+.Load14Column: ; 105246 (41:5246)
+	ld b, 14
 
-asm_105248: ; 105248 (41:5248)
+.col_loop: ; 105248 (41:5248)
 	ld [hl], a
-	ld de, $14
+	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
-	jr nz, asm_105248
+	jr nz, .col_loop
 	ret
 
-Function105251: ; 105251 (41:5251)
-	ld b, $10
-.asm_105253
+.Load16Row: ; 105251 (41:5251)
+	ld b, 16
+.row_loop
 	ld [hli], a
 	dec b
-	jr nz, .asm_105253
+	jr nz, .row_loop
 	ret
 
 MysteryGiftGFX: ; 105258
 INCBIN "gfx/misc/mystery_gift.2bpp"
+MysteryGiftGFXEnd:
 
-
 Function105688: ; 105688 (41:5688)
 	call ClearTileMap
 	call ClearSprites
@@ -1411,15 +1418,15 @@
 	ld c, 60
 	call DelayFrames
 	call Function105777
-	ld hl, Text_10575e
+	ld hl, Text_ReceivedCard
 	call PrintText
 	ld de, wMysteryGiftTrainerData
 	callba Function8ac70
 	ld a, c
 	ld [wd265], a
-	ld hl, Text_105768
+	ld hl, Text_CardNotRegistered
 	jr c, asm_105726
-	ld hl, Text_105763
+	ld hl, Text_ListedCardAsNumber
 	jr asm_105726
 
 Function1056eb: ; 1056eb (41:56eb)
@@ -1453,12 +1460,12 @@
 
 Function105712: ; 105712 (41:5712)
 	call Function105777
-	ld hl, Text_10576d
+	ld hl, Text_MGLinkCanceled
 	jr asm_105726
 
 Function10571a: ; 10571a (41:571a)
 	call Function105777
-	ld hl, Text_105772
+	ld hl, Text_MGCommError
 	call PrintText
 	jp Function105688
 
@@ -1471,7 +1478,7 @@
 
 String_10572e: ; 10572e
 	db   "エーボタン¯おすと"
-	next "つうしん",   $4a, "おこなわれるよ!"
+	next "つうしん<PKMN>おこなわれるよ!"
 	next "ビーボタン¯おすと"
 	next "つうしん¯ちゅうし します"
 	db   "@"
@@ -1478,23 +1485,23 @@
 
 ; 10575e
 
-Text_10575e: ; 10575e
+Text_ReceivedCard: ; 10575e
 	text_jump UnknownText_0x1c051a
 	db "@"
 
-Text_105763: ; 105763
+Text_ListedCardAsNumber: ; 105763
 	text_jump UnknownText_0x1c0531
 	db "@"
 
-Text_105768: ; 105768
+Text_CardNotRegistered: ; 105768
 	text_jump UnknownText_0x1c0555
 	db "@"
 
-Text_10576d: ; 10576d
+Text_MGLinkCanceled: ; 10576d
 	text_jump UnknownText_0x1c0573
 	db "@"
 
-Text_105772: ; 105772
+Text_MGCommError: ; 105772
 	text_jump UnknownText_0x1c0591
 	db "@"
 ; 105777
@@ -1571,30 +1578,30 @@
 	ld [hl], a
 	hlcoord 4, 2
 	ld a, $13
-	call Function1058ca
+	call .Load11Row
 	hlcoord 4, 3
 	ld a, $1e
-	call Function1058ce
+	call .Load12Row
 	hlcoord 4, 4
 	ld a, $2a
-	call Function1058ce
+	call .Load12Row
 	hlcoord 1, 2
 	ld [hl], $4
 	hlcoord 1, 3
 	ld a, $5
-	call Function1058de
+	call .Load14Column
 	ld a, $9
 	hlcoord 18, 5
-	call Function1058da
+	call .Load11Column
 	hlcoord 2, 5
 	ld a, $b
-	call Function1058e9
+	call .Load16Row
 	hlcoord 2, 16
 	ld a, $7
-	call Function1058e9
+	call .Load16Row
 	hlcoord 2, 5
 	ld a, $d
-	call Function1058c6
+	call .Load6Row
 	hlcoord 8, 5
 	ld [hl], $c
 	hlcoord 18, 5
@@ -1605,16 +1612,16 @@
 	ld [hl], $6
 	hlcoord 2, 6
 	ld a, $37
-	call Function1058e9
+	call .Load16Row
 	hlcoord 2, 15
 	ld a, $3d
-	call Function1058e9
+	call .Load16Row
 	hlcoord 2, 6
 	ld a, $39
-	call Function1058d6
+	call .Load9Column
 	hlcoord 17, 6
 	ld a, $3b
-	call Function1058d6
+	call .Load9Column
 	hlcoord 2, 6
 	ld [hl], $36
 	hlcoord 17, 6
@@ -1624,78 +1631,78 @@
 	hlcoord 17, 15
 	ld [hl], $3e
 	ld de, Sprites
-	ld hl, OAM_1058f0
+	ld hl, .OAM_data
 	ld bc, $40
 	call CopyBytes
 	call EnableLCD
 	call WaitBGMap
 	ld b, $2
-	callba Function4930f
+	callba GetMysteryGift_MobileAdapterLayout
 	jp SetPalettes
 
-Function1058c6: ; 1058c6 (41:58c6)
-	ld b, $6
-	jr asm_1058d0
+.Load6Row: ; 1058c6 (41:58c6)
+	ld b,  6
+	jr .row_loop
 
-Function1058ca: ; 1058ca (41:58ca)
-	ld b, $b
-	jr asm_1058d0
+.Load11Row: ; 1058ca (41:58ca)
+	ld b, 11
+	jr .row_loop
 
-Function1058ce: ; 1058ce (41:58ce)
-	ld b, $c
+.Load12Row: ; 1058ce (41:58ce)
+	ld b, 12
 
-asm_1058d0: ; 1058d0 (41:58d0)
+.row_loop: ; 1058d0 (41:58d0)
 	ld [hli], a
 	inc a
 	dec b
-	jr nz, asm_1058d0
+	jr nz, .row_loop
 	ret
 
-Function1058d6: ; 1058d6 (41:58d6)
-	ld b, $9
-	jr asm_1058e0
+.Load9Column: ; 1058d6 (41:58d6)
+	ld b,  9
+	jr .column_loop
 
-Function1058da: ; 1058da (41:58da)
-	ld b, $b
-	jr asm_1058e0
+.Load11Column: ; 1058da (41:58da)
+	ld b, 11
+	jr .column_loop
 
-Function1058de: ; 1058de (41:58de)
-	ld b, $e
+.Load14Column: ; 1058de (41:58de)
+	ld b, 14
 
-asm_1058e0: ; 1058e0 (41:58e0)
+.column_loop: ; 1058e0 (41:58e0)
 	ld [hl], a
 	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
-	jr nz, asm_1058e0
+	jr nz, .column_loop
 	ret
 
-Function1058e9: ; 1058e9 (41:58e9)
-	ld b, $10
-.asm_1058eb
+.Load16Row: ; 1058e9 (41:58e9)
+	ld b, 16
+.row_loop_no_inc
 	ld [hli], a
 	dec b
-	jr nz, .asm_1058eb
+	jr nz, .row_loop_no_inc
 	ret
 ; 1058f0 (41:58f0)
 
-OAM_1058f0: ; 1058f0
-	db $11, $34, $00, $00
-	db $11, $3c, $01, $00
-	db $11, $44, $02, $00
-	db $11, $4c, $03, $00
-	db $19, $34, $04, $00
-	db $19, $3c, $05, $00
-	db $19, $44, $06, $00
-	db $19, $4c, $07, $00
-	db $01, $5c, $00, $00
-	db $01, $64, $01, $00
-	db $01, $6c, $02, $00
-	db $01, $74, $03, $00
-	db $09, $5c, $04, $00
-	db $09, $64, $05, $00
-	db $09, $6c, $06, $00
-	db $09, $74, $07, $00
+.OAM_data: ; 1058f0
+	dsprite  2, 1,  6, 4, $00, $00
+	dsprite  2, 1,  7, 4, $01, $00
+	dsprite  2, 1,  8, 4, $02, $00
+	dsprite  2, 1,  9, 4, $03, $00
+	dsprite  3, 1,  6, 4, $04, $00
+	dsprite  3, 1,  7, 4, $05, $00
+	dsprite  3, 1,  8, 4, $06, $00
+	dsprite  3, 1,  9, 4, $07, $00
+	dsprite  0, 1, 11, 4, $00, $00
+	dsprite  0, 1, 12, 4, $01, $00
+	dsprite  0, 1, 13, 4, $02, $00
+	dsprite  0, 1, 14, 4, $03, $00
+	dsprite  1, 1, 11, 4, $04, $00
+	dsprite  1, 1, 12, 4, $05, $00
+	dsprite  1, 1, 13, 4, $06, $00
+	dsprite  1, 1, 14, 4, $07, $00
 
 ; japanese mystery gift gfx
 MysteryGiftJP_GFX: ; 105930
--- /dev/null
+++ b/engine/mysterygift2.asm
@@ -1,0 +1,227 @@
+Function2c642: ; 2c642 (b:4642)
+	ld de, wMysteryGiftStaging
+	ld a, $1
+	ld [de], a
+	inc de ; wc801
+	ld a, BANK(sGameData)
+	call GetSRAMBank
+	ld hl, sPlayerData + PlayerID - wPlayerData
+	ld a, [hli]
+	ld [de], a
+	ld b, a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ld c, a
+	inc de ; wc803
+	push bc
+	ld hl, sPlayerData + PlayerName - wPlayerData
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	push de ; wc80e
+	ld hl, sPokemonData + PokedexCaught - wPokemonData
+	ld b, EndPokedexCaught - PokedexCaught
+	call CountSetBits
+	pop de
+	pop bc
+	ld a, [wd265]
+	ld [de], a
+	inc de ; wc80f
+	call CloseSRAM
+	call Random
+	and $1
+	ld [de], a
+	inc de ; wc810
+	call .RandomSample
+	ld [de], a
+	inc de ; wc811
+	ld a, c
+	ld c, b
+	ld b, a
+	call .RandomSample
+	ld [de], a
+	inc de ; wc812
+	ld a, BANK(sBackupMysteryGiftItem)
+	call GetSRAMBank
+	ld a, [sBackupMysteryGiftItem]
+	ld [de], a
+	inc de
+	ld a, [sBackupMysteryGiftItem + 1]
+	ld [de], a
+	ld a, $14
+	ld [wca00], a
+	call CloseSRAM
+	ld hl, wMysteryGiftStaging
+	ld de, wMysteryGiftPlayerData
+	ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData
+	jp CopyBytes
+
+.RandomSample: ; 2c6ac (b:46ac)
+	push de
+	call Random
+	cp $19 ; 10 percent
+	jr c, .tenpercent
+	call Random
+	and $7
+	ld d, a
+	rl d
+	ld e, $80
+.loop
+	rlc e
+	dec a
+	jr nz, .loop
+	ld a, e
+	and c
+	jr z, .skip
+	ld a, $1
+.skip
+	add d
+	jr .done
+
+.tenpercent
+	call Random
+	cp $32 ; 20 percent
+	jr c, .twopercent
+	call Random
+	and $3
+	ld d, a
+	rl d
+	ld e, $80
+.loop2
+	rlc e
+	dec a
+	jr nz, .loop2
+	ld a, e
+	and b
+	jr z, .skip2
+	ld a, $1
+.skip2
+	add d
+	add $10
+	jr .done
+
+.twopercent
+	call Random
+	cp $32 ; 50 ; 20 percent
+	jr c, .pointfourpercent
+	ld a, b
+	swap a
+	and $7
+	add $18
+	jr .done
+
+.pointfourpercent
+	ld a, b
+	and $80
+	ld a, $20
+	jr z, .done
+	ld a, $21
+
+.done
+	pop de
+	ret
+
+MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
+	ld a, c
+	cp $25 ; 37
+	jr nc, MysteryGiftFallbackItem
+	ld hl, MysteryGiftItems
+	ld b, 0
+	add hl, bc
+	ld c, [hl]
+	ret
+
+MysteryGiftGetDecoration: ; 2c715 (b:4715)
+	ld a, c
+	cp $25 ; 37
+	jr nc, MysteryGiftFallbackItem
+	ld hl, MysteryGiftDecos
+	ld b, 0
+	add hl, bc
+	ld c, [hl]
+	ret
+
+MysteryGiftFallbackItem: ; 2c722 (b:4722)
+	ld c, DECO_POLKADOT_BED ; GREAT_BALL
+	ret
+; 2c725 (b:4725)
+
+MysteryGiftItems: ; 2c725
+	db BERRY
+	db PRZCUREBERRY
+	db MINT_BERRY
+	db ICE_BERRY
+	db BURNT_BERRY
+	db PSNCUREBERRY
+	db GUARD_SPEC
+	db X_DEFEND
+	db X_ATTACK
+	db BITTER_BERRY
+	db DIRE_HIT
+	db X_SPECIAL
+	db X_ACCURACY
+	db EON_MAIL
+	db MORPH_MAIL
+	db MUSIC_MAIL
+	db MIRACLEBERRY
+	db GOLD_BERRY
+	db REVIVE
+	db GREAT_BALL
+	db SUPER_REPEL
+	db MAX_REPEL
+	db ELIXER
+	db ETHER
+	db WATER_STONE
+	db FIRE_STONE
+	db LEAF_STONE
+	db THUNDERSTONE
+	db MAX_ETHER
+	db MAX_ELIXER
+	db MAX_REVIVE
+	db SCOPE_LENS
+	db HP_UP
+	db PP_UP
+	db RARE_CANDY
+	db BLUESKY_MAIL
+	db MIRAGE_MAIL
+; 2c74a
+
+MysteryGiftDecos: ; 2c74a
+	db DECOFLAG_PIKACHU_DOLL
+	db DECOFLAG_BULBASAUR_DOLL
+	db DECOFLAG_CHARMANDER_DOLL
+	db DECOFLAG_SQUIRTLE_DOLL
+	db DECOFLAG_POLIWAG_DOLL
+	db DECOFLAG_DIGLETT_DOLL
+	db DECOFLAG_STARMIE_DOLL
+	db DECOFLAG_MAGIKARP_DOLL
+	db DECOFLAG_ODDISH_DOLL
+	db DECOFLAG_GENGAR_DOLL
+	db DECOFLAG_CLEFAIRY_POSTER
+	db DECOFLAG_JIGGLYPUFF_POSTER
+	db DECOFLAG_SNES
+	db DECOFLAG_SHELLDER_DOLL
+	db DECOFLAG_VOLTORB_DOLL
+	db DECOFLAG_WEEDLE_DOLL
+	db DECOFLAG_MAGNAPLANT
+	db DECOFLAG_TROPICPLANT
+	db DECOFLAG_FAMICOM
+	db DECOFLAG_N64
+	db DECOFLAG_SURF_PIKACHU_DOLL
+	db DECOFLAG_JIGGLYPUFF_DOLL
+	db DECOFLAG_PINK_BED
+	db DECOFLAG_POLKADOT_BED
+	db DECOFLAG_RED_CARPET
+	db DECOFLAG_BLUE_CARPET
+	db DECOFLAG_YELLOW_CARPET
+	db DECOFLAG_GREEN_CARPET
+	db DECOFLAG_JUMBOPLANT
+	db DECOFLAG_VIRTUAL_BOY
+	db DECOFLAG_MACHOP_DOLL
+	db DECOFLAG_PIKACHU_POSTER
+	db DECOFLAG_TENTACOOL_DOLL
+	db DECOFLAG_BIG_ONIX_DOLL
+	db DECOFLAG_PIKACHU_BED
+	db DECOFLAG_GRIMER_DOLL
+	db DECOFLAG_UNOWN_DOLL
+; 2c76f
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -1,7 +1,7 @@
 _NamingScreen: ; 0x116b7
 	call DisableSpriteUpdates
 	call NamingScreen
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	ret
 ; 0x116c1
 
@@ -174,9 +174,9 @@
 	ld [hli], a
 	ld [hl], a
 	depixel 4, 4, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0A
+	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
 	call _InitSpriteAnimStruct
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], $0
 	hlcoord 5, 2
@@ -220,7 +220,7 @@
 	ld [hli], a
 	ld [hl], a
 	pop de
-	ld b, SPRITE_ANIM_INDEX_0A
+	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
 	ld a, d
 	cp $7a
 	jr nz, .asm_11873
@@ -338,7 +338,7 @@
 	bit 7, a
 	jr nz, .asm_11930
 	call Function11968
-	callba Function8cf62
+	callba PlaySpriteAnimationsAndDelayFrame
 	call Function11940
 	call DelayFrame
 	and a
@@ -345,7 +345,7 @@
 	ret
 
 .asm_11930
-	callab Function8cf53
+	callab ClearSpriteAnims
 	call ClearSprites
 	xor a
 	ld [hSCX], a
@@ -411,10 +411,10 @@
 	ld [wc6d5], a
 	ld a, b
 	ld [wc6d6], a
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, [hl]
-	ld hl, $e
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld [hl], a
 	ld hl, wJumptableIndex
@@ -454,10 +454,10 @@
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $8
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $4
 	call Function1189c
@@ -497,7 +497,7 @@
 	ld b, [hl]
 
 Function11a11: ; 11a11 (4:5a11)
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	push bc
@@ -509,7 +509,7 @@
 	cp b
 	pop bc
 	jr nz, .asm_11a39
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $3
@@ -530,12 +530,12 @@
 
 Function11a3b: ; 11a3b (4:5a3b)
 	call Function11a8b
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	ld e, a
 	swap e
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld [hl], e
 	ld d, $4
@@ -550,19 +550,19 @@
 	ld de, Unknown_11a82
 	ld a, $1
 .asm_11a60
-	ld hl, $e
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	add [hl]
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], a
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld l, [hl]
 	ld h, $0
 	add hl, de
 	ld a, [hl]
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
@@ -593,7 +593,7 @@
 	call Function11a11
 	and a
 	jr nz, .asm_11ab7
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $8
@@ -611,7 +611,7 @@
 	ld e, a
 	add a
 	add e
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], a
 	ret
@@ -619,7 +619,7 @@
 	call Function11a11
 	and a
 	jr nz, .asm_11ad8
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -640,12 +640,12 @@
 	ld e, a
 	add a
 	add e
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], a
 	ret
 .down
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	call Function1189c
@@ -663,7 +663,7 @@
 	ld [hl], $0
 	ret
 .up
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -826,10 +826,10 @@
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld a, [hl]
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	add [hl]
 	sub $8
@@ -837,10 +837,10 @@
 	srl a
 	srl a
 	ld e, a
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld a, [hl]
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	add [hl]
 	sub $10
@@ -866,7 +866,7 @@
 
 Function11c51: ; 11c51
 	call ClearSprites
-	callab Function8cf53
+	callab ClearSpriteAnims
 	call LoadStandardFont
 	call LoadFontsExtra
 
@@ -898,9 +898,9 @@
 	ld [hl], $7e
 	xor a
 	ld [hSCY], a
-	ld [wc3bf], a
+	ld [wGlobalAnimYOffset], a
 	ld [hSCX], a
-	ld [wc3c0], a
+	ld [wGlobalAnimXOffset], a
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	ld [hBGMapMode], a
--- /dev/null
+++ b/engine/npc_movement.asm
@@ -1,0 +1,572 @@
+Function6ec1: ; 6ec1
+
+	ld hl, OBJECT_PALETTE
+	add hl, bc
+	bit 5, [hl]
+	jr z, .not_bit_5
+
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit 4, [hl] ; lost
+	push hl
+	push bc
+	call Function6f2c
+	pop bc
+	pop hl
+	ret c
+	jr .resume
+
+.not_bit_5
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit 4, [hl]
+	jr nz, .resume
+	push hl
+	push bc
+	call Function6f07
+	pop bc
+	pop hl
+	ret c
+
+.resume
+	bit 6, [hl]
+	jr nz, .bit_6
+
+	push hl
+	push bc
+	call WillPersonBumpIntoSomeoneElse
+	pop bc
+	pop hl
+	ret c
+
+.bit_6
+	bit 5, [hl]
+	jr nz, .bit_5
+	push hl
+	call HasPersonReachedMovementLimit
+	pop hl
+	ret c
+
+	push hl
+	call IsPersonMovingOffEdgeOfScreen
+	pop hl
+	ret c
+
+.bit_5
+	and a
+	ret
+; 6f07
+
+
+Function6f07: ; 6f07
+	call Function6f5f
+	ret c
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld d, [hl]
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld e, [hl]
+	ld hl, OBJECT_PALETTE
+	add hl, bc
+	bit 7, [hl]
+	jp nz, Function6fa1
+	ld hl, OBJECT_NEXT_TILE
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	call GetTileCollision
+	and a
+	jr z, Function6f3e
+	scf
+	ret
+; 6f2c
+
+Function6f2c: ; 6f2c
+	call Function6f5f
+	ret c
+	ld hl, OBJECT_NEXT_TILE
+	add hl, bc
+	ld a, [hl]
+	call GetTileCollision
+	cp $1
+	jr z, Function6f3e
+	scf
+	ret
+; 6f3e
+
+Function6f3e: ; 6f3e
+	ld hl, OBJECT_NEXT_TILE
+	add hl, bc
+	ld a, [hl]
+	call Function6f7f
+	ret nc
+	push af
+	ld hl, OBJECT_DIRECTION_WALKING
+	add hl, bc
+	ld a, [hl]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f5b
+	add hl, de
+	pop af
+	and [hl]
+	ret z
+	scf
+	ret
+; 6f5b
+
+.data_6f5b
+	db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
+; 6f5f
+
+Function6f5f: ; 6f5f
+	ld hl, OBJECT_STANDING_TILE
+	add hl, bc
+	ld a, [hl]
+	call Function6f7f
+	ret nc
+	push af
+	ld hl, OBJECT_DIRECTION_WALKING
+	add hl, bc
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f7b
+	add hl, de
+	pop af
+	and [hl]
+	ret z
+	scf
+	ret
+; 6f7b
+
+.data_6f7b
+	db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
+; 6f7f
+
+Function6f7f: ; 6f7f
+	ld d, a
+	and $f0
+	cp $b0
+	jr z, .done
+	cp $c0
+	jr z, .done
+	xor a
+	ret
+
+.done
+	ld a, d
+	and 7
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f99
+	add hl, de
+	ld a, [hl]
+	scf
+	ret
+; 6f99
+
+.data_6f99
+	db  8, 4, 1, 2
+	db 10, 6, 9, 5
+; 6fa1
+
+Function6fa1: ; 6fa1
+	ld hl, OBJECT_DIRECTION_WALKING
+	add hl, bc
+	ld a, [hl]
+	and 3
+	jr z, .asm_6fb2
+	dec a
+	jr z, .asm_6fb7
+	dec a
+	jr z, .asm_6fbb
+	jr .asm_6fbf
+
+.asm_6fb2
+	inc e
+	push de
+	inc d
+	jr .asm_6fc2
+
+.asm_6fb7
+	push de
+	inc d
+	jr .asm_6fc2
+
+.asm_6fbb
+	push de
+	inc e
+	jr .asm_6fc2
+
+.asm_6fbf
+	inc d
+	push de
+	inc e
+
+.asm_6fc2
+	call GetCoordTile
+	call GetTileCollision
+	pop de
+	and a
+	jr nz, .asm_6fd7
+	call GetCoordTile
+	call GetTileCollision
+	and a
+	jr nz, .asm_6fd7
+	xor a
+	ret
+
+.asm_6fd7
+	scf
+	ret
+; 6fd9
+
+
+
+CheckFacingObject:: ; 6fd9
+
+	call GetFacingTileCoord
+
+; Double the distance for counter tiles.
+	call CheckCounterTile
+	jr nz, .asm_6ff1
+
+	ld a, [PlayerNextMapX]
+	sub d
+	cpl
+	inc a
+	add d
+	ld d, a
+
+	ld a, [PlayerNextMapY]
+	sub e
+	cpl
+	inc a
+	add e
+	ld e, a
+
+.asm_6ff1
+	ld bc, ObjectStructs ; redundant
+	ld a, 0
+	ld [hMapObjectIndexBuffer], a
+	call IsNPCAtCoord
+	ret nc
+	ld hl, OBJECT_DIRECTION_WALKING
+	add hl, bc
+	ld a, [hl]
+	cp STANDING
+	jr z, .standing
+	xor a
+	ret
+
+.standing
+	scf
+	ret
+; 7009
+
+
+WillPersonBumpIntoSomeoneElse: ; 7009
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld d, [hl]
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld e, [hl]
+	jr IsNPCAtCoord
+; 7015
+
+Function7015: ; unreferenced
+	ld a, [hMapObjectIndexBuffer]
+	call GetObjectStruct
+	call .CheckWillBeFacingNPC
+	call IsNPCAtCoord
+	ret
+
+.CheckWillBeFacingNPC: ; 7021
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld d, [hl]
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld e, [hl]
+	call GetSpriteDirection
+	and a
+	jr z, .down
+	cp OW_UP
+	jr z, .up
+	cp OW_LEFT
+	jr z, .left
+	inc d
+	ret
+
+.down
+	inc e
+	ret
+
+.up
+	dec e
+	ret
+
+.left
+	dec d
+	ret
+; 7041
+
+IsNPCAtCoord: ; 7041
+	ld bc, ObjectStructs
+	xor a
+.loop
+	ld [hObjectStructIndexBuffer], a
+	call GetObjectSprite
+	jr z, .next
+
+	ld hl, OBJECT_FLAGS1
+	add hl, bc
+	bit 7, [hl]
+	jr nz, .next
+
+	ld hl, OBJECT_PALETTE
+	add hl, bc
+	bit 7, [hl]
+	jr z, .got
+
+	call Function7171
+	jr nc, .ok
+	jr .ok2
+
+.got
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .ok
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .ok
+
+.ok2
+	ld a, [hMapObjectIndexBuffer]
+	ld l, a
+	ld a, [hObjectStructIndexBuffer]
+	cp l
+	jr nz, .setcarry
+
+.ok
+	ld hl, OBJECT_MAP_X
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .next
+	ld hl, OBJECT_MAP_Y
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .next
+	ld a, [hMapObjectIndexBuffer]
+	ld l, a
+	ld a, [hObjectStructIndexBuffer]
+	cp l
+	jr nz, .setcarry
+
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hObjectStructIndexBuffer]
+	inc a
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
+	and a
+	ret
+
+.setcarry
+	scf
+	ret
+; 70a4
+
+HasPersonReachedMovementLimit: ; 70a4
+	ld hl, OBJECT_RADIUS
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .nope
+	and $f
+	jr z, .check_y
+	ld e, a
+	ld d, a
+	ld hl, OBJECT_INIT_X
+	add hl, bc
+	ld a, [hl]
+	sub d
+	ld d, a
+	ld a, [hl]
+	add e
+	ld e, a
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr z, .yes
+	cp e
+	jr z, .yes
+
+.check_y
+	ld hl, OBJECT_RADIUS
+	add hl, bc
+	ld a, [hl]
+	swap a
+	and $f
+	jr z, .nope
+	ld e, a
+	ld d, a
+	ld hl, OBJECT_INIT_Y
+	add hl, bc
+	ld a, [hl]
+	sub d
+	ld d, a
+	ld a, [hl]
+	add e
+	ld e, a
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr z, .yes
+	cp e
+	jr z, .yes
+
+.nope
+	xor a
+	ret
+
+.yes
+	scf
+	ret
+; 70ed
+
+IsPersonMovingOffEdgeOfScreen: ; 70ed
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld a, [XCoord]
+	cp [hl]
+	jr z, .check_y
+	jr nc, .yes
+	add $9
+	cp [hl]
+	jr c, .yes
+
+.check_y
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld a, [YCoord]
+	cp [hl]
+	jr z, .nope
+	jr nc, .yes
+	add $8
+	cp [hl]
+	jr c, .yes
+
+.nope
+	and a
+	ret
+
+.yes
+	scf
+	ret
+; 7113
+
+Function7113: ; unreferenced
+	ld a, [PlayerNextMapX]
+	ld d, a
+	ld a, [PlayerNextMapY]
+	ld e, a
+	ld bc, ObjectStructs
+	xor a
+.loop
+	ld [hObjectStructIndexBuffer], a
+	call GetObjectSprite
+	jr z, .next
+	ld hl, OBJECT_MOVEMENTTYPE
+	add hl, bc
+	ld a, [hl]
+	cp SPRITEMOVEDATA_SNORLAX
+	jr nz, .not_snorlax
+	call Function7171
+	jr c, .yes
+	jr .next
+
+.not_snorlax
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .check_current_coords
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .check_current_coords
+	ld a, [hObjectStructIndexBuffer]
+	cp $0
+	jr z, .next
+	jr .yes
+
+.check_current_coords
+	ld hl, OBJECT_MAP_Y
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .next
+	ld hl, OBJECT_MAP_X
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .next
+	jr .yes
+
+.next
+	ld hl, OBJECT_STRUCT_LENGTH
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hObjectStructIndexBuffer]
+	inc a
+	cp NUM_OBJECT_STRUCTS
+	jr nz, .loop
+	xor a
+	ret
+
+.yes
+	scf
+	ret
+; 7171
+
+
+Function7171: ; 7171
+	ld hl, OBJECT_NEXT_MAP_X
+	add hl, bc
+	ld a, d
+	sub [hl]
+	jr c, .nope
+	cp $2
+	jr nc, .nope
+	ld hl, OBJECT_NEXT_MAP_Y
+	add hl, bc
+	ld a, e
+	sub [hl]
+	jr c, .nope
+	cp $2
+	jr nc, .nope
+	scf
+	ret
+
+.nope
+	and a
+	ret
+; 718d
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -40,7 +40,7 @@
 
 ; Select givemon from party
 	ld b, 6
-	callba Function5001d
+	callba SelectTradeOrDaycareMon
 	ld a, TRADE_CANCEL
 	jr c, .done
 
@@ -88,7 +88,7 @@
 	ld [wcf64], a
 	pop af
 	ld [wJumptableIndex], a
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	ret
 ; fcc23
 
@@ -100,23 +100,23 @@
 	call GetTradeAttribute
 	ld a, [hl]
 	and a
-	jr z, .asm_fcc46
+	jr z, .matching
 	cp 1
-	jr z, .asm_fcc3e
+	jr z, .check_male
 
 	callba GetGender
-	jr nz, .asm_fcc48
-	jr .asm_fcc46
+	jr nz, .not_matching
+	jr .matching
 
-.asm_fcc3e
+.check_male
 	callba GetGender
-	jr z, .asm_fcc48
+	jr z, .not_matching
 
-.asm_fcc46
+.matching
 	and a
 	ret
 
-.asm_fcc48
+.not_matching
 	scf
 	ret
 ; fcc4a
@@ -211,7 +211,7 @@
 	xor a
 	ld [MonType], a
 	ld [wPokemonWithdrawDepositParameter], a
-	callab Functione039
+	callab RemoveMonFromPartyOrBox
 	predef TryAddMonToParty
 
 	ld e, TRADE_DIALOG
@@ -219,9 +219,9 @@
 	ld a, [hl]
 	cp TRADE_COMPLETE
 	ld b, RESET_FLAG
-	jr c, .asm_fcd1c
+	jr c, .incomplete
 	ld b, SET_FLAG
-.asm_fcd1c
+.incomplete
 	callba SetGiftPartyMonCaughtData
 
 	ld e, TRADE_NICK
@@ -291,7 +291,7 @@
 	ld a, [PartyCount]
 	dec a
 	ld [CurPartyMon], a
-	callba Functione134
+	callba ComputeNPCTrademonStats
 	pop af
 	ld [CurPartyMon], a
 	pop hl
@@ -399,7 +399,7 @@
 	ld a, [hl]
 	call GetTradeMonName
 
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	call CopyTradeName
 
 	ld hl, StringBuffer1
@@ -511,7 +511,6 @@
 	; traded givemon for getmon
 	text_jump UnknownText_0x1bd429
 	start_asm
-
 	ld de, MUSIC_NONE
 	call PlayMusic
 	call DelayFrame
--- a/engine/options_menu.asm
+++ b/engine/options_menu.asm
@@ -47,7 +47,7 @@
 	jr c, .ExitOptions
 
 .dpad
-	call Functione455c
+	call Options_UpdateCursorPosition
 	ld c, 3
 	call DelayFrames
 	jr .joypad_loop
@@ -563,3 +563,20 @@
 	scf
 	ret
 ; e455c
+
+Options_UpdateCursorPosition: ; e455c
+	hlcoord 1, 1
+	ld de, SCREEN_WIDTH
+	ld c, $10
+.loop
+	ld [hl], " "
+	add hl, de
+	dec c
+	jr nz, .loop
+	hlcoord 1, 2
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, [wJumptableIndex]
+	call AddNTimes
+	ld [hl], "▶"
+	ret
+; e4579
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -266,7 +266,7 @@
 	and a
 	jr z, .NoBreedmon
 
-	callba Function8e82b
+	callba LoadOverworldMonIcon
 
 	ld l, 1
 	ld h, 0
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1,19 +1,18 @@
-
 Pack: ; 10000
 	ld hl, Options
 	set NO_TEXT_SCROLL, [hl]
-	call Function1068a
+	call InitPackBuffers
 .loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .done
-	call Function10026
+	call .RunJumptable
 	call DelayFrame
 	jr .loop
 
 .done
-	ld a, [wcf65]
+	ld a, [wCurrPocket]
 	ld [wLastPocket], a
 	ld hl, Options
 	res NO_TEXT_SCROLL, [hl]
@@ -20,142 +19,143 @@
 	ret
 ; 10026
 
-Function10026: ; 10026
+.RunJumptable: ; 10026
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_10030
-	call Function1086b
+	ld hl, .Jumptable
+	call Pack_GetJumptablePointer
 	jp [hl]
+
 ; 10030
 
+.Jumptable: ; 10030 (4:4030)
+	
+	dw .InitGFX            ;  0
+	dw .InitItemsPocket    ;  1
+	dw .ItemsPocketMenu    ;  2
+	dw .InitBallsPocket    ;  3
+	dw .BallsPocketMenu    ;  4
+	dw .InitKeyItemsPocket ;  5
+	dw .KeyItemsPocketMenu ;  6
+	dw .InitTMHMPocket     ;  7
+	dw .TMHMPocketMenu     ;  8
+	dw Pack_QuitNoScript   ;  9
+	dw Pack_QuitRunScript  ; 10
 
-Jumptable_10030: ; 10030 (4:4030)
-	dw Function10046
-	dw Function10056
-	dw Function10067
-	dw Function10186
-	dw Function10198
-	dw Function10094
-	dw Function100a6
-	dw Function100d3
-	dw Function100e8
-	dw Function10874
-	dw Function1087e
-
-
-Function10046: ; 10046 (4:4046)
+.InitGFX: ; 10046 (4:4046)
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	ld a, [wcf64]
 	ld [wJumptableIndex], a
-	call Function10a40
+	call Pack_InitColors
 	ret
 
-Function10056: ; 10056 (4:4056)
+.InitItemsPocket: ; 10056 (4:4056)
 	xor a
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function10067: ; 10067 (4:4067)
-	ld hl, MenuDataHeader_0x10a4f
+.ItemsPocketMenu: ; 10067 (4:4067)
+	ld hl, ItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wItemsPocketCursor], a
 	ld b, $7
 	ld c, $3
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function101c5
+	call .ItemBallsKey_LoadSubmenu
 	ret
 
-Function10094: ; 10094 (4:4094)
+.InitKeyItemsPocket: ; 10094 (4:4094)
 	ld a, $2
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function100a6: ; 100a6 (4:40a6)
-	ld hl, MenuDataHeader_0x10a7f
+.KeyItemsPocketMenu: ; 100a6 (4:40a6)
+	ld hl, KeyItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wKeyItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wKeyItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wKeyItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wKeyItemsPocketCursor], a
 	ld b, $3
 	ld c, $7
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function101c5
+	call .ItemBallsKey_LoadSubmenu
 	ret
 
-Function100d3: ; 100d3 (4:40d3)
+.InitTMHMPocket: ; 100d3 (4:40d3)
 	ld a, $3
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	xor a
 	ld [hBGMapMode], a
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function100e8: ; 100e8 (4:40e8)
-	callba Function2c76f
+.TMHMPocketMenu: ; 100e8 (4:40e8)
+	callba TMHMPocket
 	ld b, $5
 	ld c, $1
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
 	callba _CheckTossableItem
 	ld a, [wItemAttributeParamBuffer]
 	and a
-	jr nz, .asm_1010a
-	ld hl, MenuDataHeader_0x1013b
-	ld de, Jumptable_10153
-	jr .asm_10110
-.asm_1010a
-	ld hl, MenuDataHeader_0x10124
-	ld de, Jumptable_10137
-.asm_10110
+	jr nz, .use_quit
+	ld hl, .MenuDataHeader2
+	ld de, .Jumptable2
+	jr .load_jump
+
+.use_quit
+	ld hl, .MenuDataHeader1
+	ld de, .Jumptable1
+.load_jump
 	push de
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	call Function1086b
+	call Pack_GetJumptablePointer
 	jp [hl]
-; 10124 (4:4124)
 
-MenuDataHeader_0x10124: ; 0x10124
+; 10124 (4:4124)
+.MenuDataHeader1: ; 0x10124
 	db $40 ; flags
 	db 07, 13 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x1012c
+	dw .MenuData2_1
 	db 1 ; default option
 ; 0x1012c
 
-MenuData2_0x1012c: ; 0x1012c
+.MenuData2_1: ; 0x1012c
 	db $c0 ; flags
 	db 2 ; items
 	db "USE@"
@@ -162,20 +162,22 @@
 	db "QUIT@"
 ; 0x10137
 
-Jumptable_10137: ; 10137
-	dw Function10159
+.Jumptable1: ; 10137
+	
+	dw .UseItem
 	dw QuitItemSubmenu
+
 ; 1013b
 
-MenuDataHeader_0x1013b: ; 0x1013b
+.MenuDataHeader2: ; 0x1013b
 	db $40 ; flags
 	db 05, 13 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10143
+	dw .MenuData2_2
 	db 1 ; default option
 ; 0x10143
 
-MenuData2_0x10143: ; 0x10143
+.MenuData2_2: ; 0x10143
 	db $c0 ; flags
 	db 3 ; items
 	db "USE@"
@@ -183,61 +185,61 @@
 	db "QUIT@"
 ; 0x10153
 
-Jumptable_10153: ; 10153
-	dw Function10159
+.Jumptable2: ; 10153
+	dw .UseItem
 	dw GiveItem
 	dw QuitItemSubmenu
 ; 10159
 
-Function10159: ; 10159
-	callba Function2c7bf
+.UseItem: ; 10159
+	callba AskTeachTMHM
 	ret c
-	callba Function2c7fb
-	jr c, .asm_10179
+	callba ChooseMonToLearnTMHM
+	jr c, .declined
 	ld hl, Options
 	ld a, [hl]
 	push af
-	res 4, [hl]
-	callba Function2c867
+	res NO_TEXT_SCROLL, [hl]
+	callba TeachTMHM
 	pop af
 	ld [Options], a
-.asm_10179
+.declined
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	call WaitBGMap_DrawPackGFX
-	call Function10a40
+	call Pack_InitColors
 	ret
 
-Function10186: ; 10186 (4:4186)
+.InitBallsPocket: ; 10186 (4:4186)
 	ld a, $1
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function10198: ; 10198 (4:4198)
-	ld hl, MenuDataHeader_0x10aaf
+.BallsPocketMenu: ; 10198 (4:4198)
+	ld hl, BallsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wBallsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wBallsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wBallsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wBallsPocketCursor], a
 	ld b, $1
 	ld c, $5
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function101c5
+	call .ItemBallsKey_LoadSubmenu
 	ret
 
-Function101c5: ; 101c5 (4:41c5)
+.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5)
 	callba _CheckTossableItem
 	ld a, [wItemAttributeParamBuffer]
 	and a
@@ -268,45 +270,45 @@
 
 .usable
 	ld hl, MenuDataHeader_UsableKeyItem
-	ld de, Jumptable_1026a
+	ld de, Jumptable_UseGiveTossRegisterQuit
 	jr .build_menu
 
 .selectable_usable
 	ld hl, MenuDataHeader_UsableItem
-	ld de, Jumptable_10291
+	ld de, Jumptable_UseGiveTossQuit
 	jr .build_menu
 
 .tossable_selectable
 	ld hl, MenuDataHeader_UnusableItem
-	ld de, Jumptable_102ac
+	ld de, Jumptable_UseQuit
 	jr .build_menu
 
 .tossable_unselectable
 	ld hl, MenuDataHeader_UnusableKeyItem
-	ld de, Jumptable_102c7
+	ld de, Jumptable_UseRegisterQuit
 	jr .build_menu
 
 .unusable
 	ld hl, MenuDataHeader_HoldableKeyItem
-	ld de, Jumptable_102ea
+	ld de, Jumptable_GiveTossRegisterQuit
 	jr .build_menu
 
 .selectable_unusable
 	ld hl, MenuDataHeader_HoldableItem
-	ld de, Jumptable_1030b
+	ld de, Jumptable_GiveTossQuit
 .build_menu
 	push de
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	call Function1086b
+	call Pack_GetJumptablePointer
 	jp [hl]
-; 10249 (4:4249)
 
+; 10249 (4:4249)
 MenuDataHeader_UsableKeyItem: ; 0x10249
 	db $40 ; flags
 	db 01, 13 ; start coords
@@ -325,7 +327,8 @@
 	db "QUIT@"
 ; 0x1026a
 
-Jumptable_1026a: ; 1026a
+Jumptable_UseGiveTossRegisterQuit: ; 1026a
+	
 	dw UseItem
 	dw GiveItem
 	dw TossMenu
@@ -350,7 +353,8 @@
 	db "QUIT@"
 ; 0x10291
 
-Jumptable_10291: ; 10291
+Jumptable_UseGiveTossQuit: ; 10291
+	
 	dw UseItem
 	dw GiveItem
 	dw TossMenu
@@ -372,7 +376,8 @@
 	db "QUIT@"
 ; 0x102ac
 
-Jumptable_102ac: ; 102ac
+Jumptable_UseQuit: ; 102ac
+	
 	dw UseItem
 	dw QuitItemSubmenu
 ; 102b0
@@ -393,7 +398,8 @@
 	db "QUIT@"
 ; 0x102c7
 
-Jumptable_102c7: ; 102c7
+Jumptable_UseRegisterQuit: ; 102c7
+	
 	dw UseItem
 	dw RegisterItem
 	dw QuitItemSubmenu
@@ -416,7 +422,8 @@
 	db "QUIT@"
 ; 0x102ea
 
-Jumptable_102ea: ; 102ea
+Jumptable_GiveTossRegisterQuit: ; 102ea
+	
 	dw GiveItem
 	dw TossMenu
 	dw RegisterItem
@@ -439,21 +446,24 @@
 	db "QUIT@"
 ; 0x1030b
 
-Jumptable_1030b: ; 1030b
+Jumptable_GiveTossQuit: ; 1030b
+	
 	dw GiveItem
 	dw TossMenu
 	dw QuitItemSubmenu
+
 ; 10311
 
 UseItem: ; 10311
 	callba CheckItemMenu
 	ld a, [wItemAttributeParamBuffer]
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	ret
 ; 1031f
 
-.jumptable: ; 1031f (4:431f)
+.dw: ; 1031f (4:431f)
+	
 	dw .Oak
 	dw .Oak
 	dw .Oak
@@ -465,7 +475,7 @@
 
 .Oak: ; 1032d (4:432d)
 	ld hl, Text_ThisIsntTheTime
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 
 .Current: ; 10334 (4:4334)
@@ -479,18 +489,19 @@
 	call DoItemEffect
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	call WaitBGMap_DrawPackGFX
-	call Function10a40
+	call Pack_InitColors
 	ret
+
 .NoPokemon
 	ld hl, TextJump_YouDontHaveAPkmn
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 
 .Field: ; 10355 (4:4355)
 	call DoItemEffect
-	ld a, [wd0ec]
+	ld a, [wItemEffectSucceeded]
 	and a
 	jr z, .Oak
 	ld a, $a
@@ -500,8 +511,8 @@
 
 TossMenu: ; 10364
 	ld hl, Text_ThrowAwayHowMany
-	call Function10889
-	callba Function24fbf
+	call Pack_PrintTextNoScroll
+	callba SelectQuantityToToss
 	push af
 	call ExitMenu
 	pop af
@@ -515,39 +526,39 @@
 	pop af
 	jr c, .finish
 	ld hl, NumItems
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	call TossItem
 	call Pack_GetItemName
 	ld hl, Text_ThrewAway
-	call Function10889
-
+	call Pack_PrintTextNoScroll
 .finish
 	ret
 ; 1039d
 
-Function1039d: ; 1039d
-	ld a, [wcf65]
+ResetPocketCursorPositions: ; 1039d
+; unreferenced
+	ld a, [wCurrPocket]
 	and a
-	jr z, .asm_103b2
+	jr z, .items
 	dec a
-	jr z, .asm_103aa
+	jr z, .balls
 	dec a
-	jr z, .asm_103ba
+	jr z, .key
 	ret
 
-.asm_103aa
+.balls
 	xor a
 	ld [wBallsPocketCursor], a
 	ld [wBallsPocketScrollPosition], a
 	ret
 
-.asm_103b2
+.items
 	xor a
 	ld [wItemsPocketCursor], a
 	ld [wItemsPocketScrollPosition], a
 	ret
 
-.asm_103ba
+.key
 	xor a
 	ld [wKeyItemsPocketCursor], a
 	ld [wKeyItemsPocketScrollPosition], a
@@ -558,13 +569,13 @@
 	callba CheckSelectableItem
 	ld a, [wItemAttributeParamBuffer]
 	and a
-	jr nz, .asm_103f6
-	ld a, [wcf65]
+	jr nz, .cant_register
+	ld a, [wCurrPocket]
 	rrca
 	rrca
 	and $c0
 	ld b, a
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	inc a
 	and $3f
 	or b
@@ -575,12 +586,12 @@
 	ld de, SFX_FULL_HEAL
 	call WaitPlaySFX
 	ld hl, Text_RegisteredItem
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 
-.asm_103f6
+.cant_register
 	ld hl, Text_CantRegister
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 ; 103fd
 
@@ -587,10 +598,10 @@
 GiveItem: ; 103fd
 	ld a, [PartyCount]
 	and a
-	jp z, Function10486
+	jp z, .NoPokemon
 	ld a, [Options]
 	push af
-	res 4, a
+	res NO_TEXT_SCROLL, a
 	ld [Options], a
 	ld a, $8
 	ld [PartyMenuActionText], a
@@ -598,7 +609,7 @@
 	callba LoadPartyMenuGFX
 	callba InitPartyMenuWithCancel
 	callba InitPartyMenuGFX
-.asm_10427
+.loop
 	callba WritePartyMenuTilemap
 	callba PrintPartyMenuText
 	call WaitBGMap
@@ -605,17 +616,15 @@
 	call SetPalettes
 	call DelayFrame
 	callba PartyMenuSelect
-	jr c, .asm_10475
-
+	jr c, .finish
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr nz, .asm_10453
-
-	ld hl, TextJump_AnEGGCantHoldAnItem
+	jr nz, .give
+	ld hl, .Egg
 	call PrintText
-	jr .asm_10427
+	jr .loop
 
-.asm_10453
+.give
 	ld a, [wJumptableIndex]
 	push af
 	ld a, [wcf64]
@@ -622,31 +631,30 @@
 	push af
 	call GetCurNick
 	ld hl, StringBuffer1
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
-	call Function12bd9
+	call TryGiveItemToPartymon
 	pop af
 	ld [wcf64], a
 	pop af
 	ld [wJumptableIndex], a
-.asm_10475
+.finish
 	pop af
 	ld [Options], a
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	call WaitBGMap_DrawPackGFX
-	call Function10a40
+	call Pack_InitColors
 	ret
 
-Function10486: ; 10486 (4:4486)
+.NoPokemon: ; 10486 (4:4486)
 	ld hl, TextJump_YouDontHaveAPkmn
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 ; 1048d (4:448d)
-
-TextJump_AnEGGCantHoldAnItem: ; 0x1048d
+.Egg: ; 0x1048d
 	; An EGG can't hold an item.
 	text_jump Text_AnEGGCantHoldAnItem
 	db "@"
@@ -656,118 +664,117 @@
 	ret
 ; 10493
 
-
 BattlePack: ; 10493
 	ld hl, Options
-	set 4, [hl]
-	call Function1068a
+	set NO_TEXT_SCROLL, [hl]
+	call InitPackBuffers
 .loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .end
-	call Function104b9
+	call .RunJumptable
 	call DelayFrame
 	jr .loop
 
 .end
-	ld a, [wcf65]
+	ld a, [wCurrPocket]
 	ld [wLastPocket], a
 	ld hl, Options
-	res 4, [hl]
+	res NO_TEXT_SCROLL, [hl]
 	ret
 ; 104b9
 
-Function104b9: ; 104b9
+.RunJumptable: ; 104b9
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_104c3
-	call Function1086b
+	ld hl, .Jumptable
+	call Pack_GetJumptablePointer
 	jp [hl]
+
 ; 104c3
 
+.Jumptable: ; 104c3 (4:44c3)
+	
+	dw .InitGFX            ;  0
+	dw .InitItemsPocket    ;  1
+	dw .ItemsPocketMenu    ;  2
+	dw .InitBallsPocket    ;  3
+	dw .BallsPocketMenu    ;  4
+	dw .InitKeyItemsPocket ;  5
+	dw .KeyItemsPocketMenu ;  6
+	dw .InitTMHMPocket     ;  7
+	dw .TMHMPocketMenu     ;  8
+	dw Pack_QuitNoScript   ;  9
+	dw Pack_QuitRunScript  ; 10
 
-Jumptable_104c3: ; 104c3 (4:44c3)
-	dw Function104d9
-	dw Function104e9
-	dw Function104fa
-	dw Function10594
-	dw Function105a6
-	dw Function10527
-	dw Function10539
-	dw Function10566
-	dw Function10581
-	dw Function10874
-	dw Function1087e
-
-
-Function104d9: ; 104d9 (4:44d9)
+.InitGFX: ; 104d9 (4:44d9)
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	ld a, [wcf64]
 	ld [wJumptableIndex], a
-	call Function10a40
+	call Pack_InitColors
 	ret
 
-Function104e9: ; 104e9 (4:44e9)
+.InitItemsPocket: ; 104e9 (4:44e9)
 	xor a
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function104fa: ; 104fa (4:44fa)
-	ld hl, MenuDataHeader_0x10a4f
+.ItemsPocketMenu: ; 104fa (4:44fa)
+	ld hl, ItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wItemsPocketCursor], a
 	ld b, $7
 	ld c, $3
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function105d3
+	call ItemSubmenu
 	ret
 
-Function10527: ; 10527 (4:4527)
+.InitKeyItemsPocket: ; 10527 (4:4527)
 	ld a, $2
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function10539: ; 10539 (4:4539)
-	ld hl, MenuDataHeader_0x10a7f
+.KeyItemsPocketMenu: ; 10539 (4:4539)
+	ld hl, KeyItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wKeyItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wKeyItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wKeyItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wKeyItemsPocketCursor], a
 	ld b, $3
 	ld c, $7
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function105d3
+	call ItemSubmenu
 	ret
 
-Function10566: ; 10566 (4:4566)
+.InitTMHMPocket: ; 10566 (4:4566)
 	ld a, $3
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	xor a
@@ -774,58 +781,58 @@
 	ld [hBGMapMode], a
 	call WaitBGMap_DrawPackGFX
 	ld hl, Text_PackEmptyString
-	call Function10889
-	call Function10866
+	call Pack_PrintTextNoScroll
+	call Pack_JumptableNext
 	ret
 
-Function10581: ; 10581 (4:4581)
-	callba Function2c76f
+.TMHMPocketMenu: ; 10581 (4:4581)
+	callba TMHMPocket
 	ld b, $5
 	ld c, $1
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
 	xor a
-	call Function105dc
+	call TMHMSubmenu
 	ret
 
-Function10594: ; 10594 (4:4594)
+.InitBallsPocket: ; 10594 (4:4594)
 	ld a, $1
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
-	call Function10866
+	call Pack_JumptableNext
 	ret
 
-Function105a6: ; 105a6 (4:45a6)
-	ld hl, MenuDataHeader_0x10aaf
+.BallsPocketMenu: ; 105a6 (4:45a6)
+	ld hl, BallsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wBallsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wBallsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wBallsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wBallsPocketCursor], a
 	ld b, $1
 	ld c, $5
-	call Function108d4
+	call Pack_InterpretJoypad
 	ret c
-	call Function105d3
+	call ItemSubmenu
 	ret
 
-Function105d3: ; 105d3 (4:45d3)
+ItemSubmenu: ; 105d3 (4:45d3)
 	callba CheckItemContext
 	ld a, [wItemAttributeParamBuffer]
-
-Function105dc: ; 105dc (4:45dc)
+TMHMSubmenu: ; 105dc (4:45dc)
 	and a
 	jr z, .NoUse
 	ld hl, .UsableMenuDataHeader
 	ld de, .UsableJumptable
 	jr .proceed
+
 .NoUse
 	ld hl, .UnusableMenuDataHeader
 	ld de, .UnusableJumptable
@@ -832,16 +839,16 @@
 .proceed
 	push de
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	call Function1086b
+	call Pack_GetJumptablePointer
 	jp [hl]
-; 10601 (4:4601)
 
+; 10601 (4:4601)
 .UsableMenuDataHeader: ; 0x10601
 	db $40 ; flags
 	db 07, 13 ; start coords
@@ -858,6 +865,7 @@
 ; 0x10614
 
 .UsableJumptable: ; 10614
+	
 	dw .Use
 	dw .Quit
 ; 10618
@@ -877,6 +885,7 @@
 ; 0x10627
 
 .UnusableJumptable: ; 10627
+	
 	dw .Quit
 ; 10629
 
@@ -888,6 +897,7 @@
 	ret
 
 .ItemFunctionJumptable: ; 10637 (4:4637)
+	
 	dw .Oak
 	dw .Oak
 	dw .Oak
@@ -896,64 +906,61 @@
 	dw .BattleField
 	dw .BattleOnly
 
-
 .Oak: ; 10645 (4:4645)
 	ld hl, Text_ThisIsntTheTime
-	call Function10889
+	call Pack_PrintTextNoScroll
 	ret
 
 .Unused: ; 1064c (4:464c)
 	call DoItemEffect
-	ld a, [wd0ec]
+	ld a, [wItemEffectSucceeded]
 	and a
-	jr nz, .asm_1066c
+	jr nz, .ReturnToBattle
 	ret
 
 .BattleField: ; 10656 (4:4656)
 	call DoItemEffect
-	ld a, [wd0ec]
+	ld a, [wItemEffectSucceeded]
 	and a
-	jr nz, .asm_1067e
+	jr nz, .quit_run_script
 	xor a
 	ld [hBGMapMode], a
-	call Function10955
+	call Pack_InitGFX
 	call WaitBGMap_DrawPackGFX
-	call Function10a40
+	call Pack_InitColors
 	ret
 
-.asm_1066c: ; 1066c (4:466c)
+.ReturnToBattle: ; 1066c (4:466c)
 	call ClearBGPalettes
-	jr .asm_1067e
+	jr .quit_run_script
 
 .BattleOnly: ; 10671 (4:4671)
 	call DoItemEffect
-	ld a, [wd0ec]
+	ld a, [wItemEffectSucceeded]
 	and a
 	jr z, .Oak
 	cp $2
-	jr z, .asm_10684
-.asm_1067e: ; 1067e (4:467e)
-	ld a, $a
+	jr z, .didnt_use_item
+.quit_run_script: ; 1067e (4:467e)
+	ld a, 10
 	ld [wJumptableIndex], a
 	ret
 
-.asm_10684: ; 10684 (4:4684)
+.didnt_use_item: ; 10684 (4:4684)
 	xor a
-	ld [wd0ec], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; 10689 (4:4689)
-
 .Quit: ; 10689
 	ret
 ; 1068a
 
-
-Function1068a: ; 1068a
+InitPackBuffers: ; 1068a
 	xor a
 	ld [wJumptableIndex], a
 	ld a, [wLastPocket]
 	and $3
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	inc a
 	add a
 	dec a
@@ -961,59 +968,58 @@
 	xor a
 	ld [wcf66], a
 	xor a
-	ld [wd0e3], a
+	ld [wSwitchItem], a
 	ret
 ; 106a5
 
-Function106a5: ; 106a5
+DepositSellInitPackBuffers: ; 106a5
 	xor a
 	ld [hBGMapMode], a
 	ld [wJumptableIndex], a
 	ld [wcf64], a
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	ld [wcf66], a
-	ld [wd0e3], a
-	call Function10955
-	call Function10a40
+	ld [wSwitchItem], a
+	call Pack_InitGFX
+	call Pack_InitColors
 	ret
 ; 106be
 
-Function106be: ; 106be
-.asm_106be
-	call Function106c7
-	call Function1076f
-	jr c, .asm_106be
+DepositSellPack: ; 106be
+.loop
+	call .RunJumptable
+	call DepositSellTutorial_InterpretJoypad
+	jr c, .loop
 	ret
 ; 106c7
 
-Function106c7: ; 106c7
+.RunJumptable: ; 106c7
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_106d1
-	call Function1086b
+	ld hl, .Jumptable
+	call Pack_GetJumptablePointer
 	jp [hl]
+
 ; 106d1
 
-
-Jumptable_106d1: ; 106d1 (4:46d1)
+.Jumptable: ; 106d1 (4:46d1)
+	
 	dw .ItemsPocket
 	dw .BallsPocket
 	dw .KeyItemsPocket
 	dw .TMHMPocket
-
-
 .ItemsPocket: ; 106d9 (4:46d9)
 	xor a
 	call InitPocket
-	ld hl, MenuDataHeader_0x10a67
+	ld hl, PC_Mart_ItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wItemsPocketCursor], a
 	ret
 
@@ -1020,16 +1026,16 @@
 .KeyItemsPocket: ; 106ff (4:46ff)
 	ld a, 2
 	call InitPocket
-	ld hl, MenuDataHeader_0x10a97
+	ld hl, PC_Mart_KeyItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wKeyItemsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wKeyItemsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wKeyItemsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wKeyItemsPocketCursor], a
 	ret
 
@@ -1037,7 +1043,7 @@
 	ld a, 3
 	call InitPocket
 	call WaitBGMap_DrawPackGFX
-	callba Function2c76f
+	callba TMHMPocket
 	ld a, [CurItem]
 	ld [CurItem], a
 	ret
@@ -1045,75 +1051,74 @@
 .BallsPocket: ; 1073b (4:473b)
 	ld a, 1
 	call InitPocket
-	ld hl, MenuDataHeader_0x10ac7
+	ld hl, PC_Mart_BallsPocketMenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wBallsPocketCursor]
 	ld [wMenuCursorBuffer], a
 	ld a, [wBallsPocketScrollPosition]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wBallsPocketScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wBallsPocketCursor], a
 	ret
 
 InitPocket: ; 10762 (4:4762)
-	ld [wcf65], a
+	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
 	call WaitBGMap_DrawPackGFX
 	ret
 
-
-Function1076f: ; 1076f
-	ld hl, wcf73
+DepositSellTutorial_InterpretJoypad: ; 1076f
+	ld hl, wMenuJoypad
 	ld a, [hl]
-	and $1
-	jr nz, .asm_10788
+	and A_BUTTON
+	jr nz, .a_button
 	ld a, [hl]
-	and $2
-	jr nz, .asm_1078f
+	and B_BUTTON
+	jr nz, .b_button
 	ld a, [hl]
-	and $20
-	jr nz, .asm_10795
+	and D_LEFT
+	jr nz, .d_left
 	ld a, [hl]
-	and $10
-	jr nz, .asm_107a8
+	and D_RIGHT
+	jr nz, .d_right
 	scf
 	ret
 
-.asm_10788
-	ld a, $1
+.a_button
+	ld a, TRUE
 	ld [wcf66], a
 	and a
 	ret
 
-.asm_1078f
+.b_button
 	xor a
 	ld [wcf66], a
 	and a
 	ret
 
-.asm_10795
+.d_left
 	ld a, [wJumptableIndex]
 	dec a
 	and $3
 	ld [wJumptableIndex], a
 	push de
-	ld de, SFX_UNKNOWN_62
+	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
 	pop de
 	scf
 	ret
 
-.asm_107a8
+.d_right
 	ld a, [wJumptableIndex]
 	inc a
 	and $3
 	ld [wJumptableIndex], a
 	push de
-	ld de, SFX_UNKNOWN_62
+	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
 	pop de
 	scf
@@ -1121,15 +1126,14 @@
 ; 107bb
 
 TutorialPack: ; 107bb
-	call Function106a5
+	call DepositSellInitPackBuffers
 	ld a, [InputType]
 	or a
 	jr z, .loop
 	callba _DudeAutoInput_RightA
-
 .loop
-	call Function107d7
-	call Function1076f
+	call .RunJumptable
+	call DepositSellTutorial_InterpretJoypad
 	jr c, .loop
 	xor a
 	ld [wcf66], a
@@ -1136,116 +1140,116 @@
 	ret
 ; 107d7
 
-Function107d7: ; 107d7
+.RunJumptable: ; 107d7
 	ld a, [wJumptableIndex]
-	ld hl, .jumptable
-	call Function1086b
+	ld hl, .dw
+	call Pack_GetJumptablePointer
 	jp [hl]
+
 ; 107e1
 
+.dw: ; 107e1 (4:47e1)
+	
+	dw .Items
+	dw .Balls
+	dw .KeyItems
+	dw .TMHM
 
-.jumptable: ; 107e1 (4:47e1)
-	dw Function107e9
-	dw Function1083b
-	dw Function10807
-	dw Function10826
-
-
-Function107e9: ; 107e9 (4:47e9)
+.Items: ; 107e9 (4:47e9)
 	xor a
-	ld hl, MenuDataHeader_0x107ef
-	jr Function1085a
-; 107ef (4:47ef)
+	ld hl, .ItemsMenuDataHeader
+	jr .DisplayPocket
 
-MenuDataHeader_0x107ef: ; 0x107ef
+; 107ef (4:47ef)
+.ItemsMenuDataHeader: ; 0x107ef
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw .MenuData2
+	dw .ItemsMenuData2
 	db 1 ; default option
 ; 0x107f7
 
-.MenuData2: ; 0x107f7
+.ItemsMenuData2: ; 0x107f7
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
-	dbw 0, OTPartyMons
+	dbw 0, wDudeNumItems
 	dba PlaceMenuItemName
 	dba PlaceMenuItemQuantity
 	dba UpdateItemDescription
 ; 10807
 
-Function10807: ; 10807 (4:4807)
+.KeyItems: ; 10807 (4:4807)
 	ld a, 2
-	ld hl, MenuDataHeader_0x1080e
-	jr Function1085a
-; 1080e (4:480e)
+	ld hl, .KeyItemsMenuDataHeader
+	jr .DisplayPocket
 
-MenuDataHeader_0x1080e: ; 0x1080e
+; 1080e (4:480e)
+.KeyItemsMenuDataHeader: ; 0x1080e
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw .MenuData2
+	dw .KeyItemsMenuData2
 	db 1 ; default option
 ; 0x10816
 
-.MenuData2: ; 0x10816
+.KeyItemsMenuData2: ; 0x10816
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
-	dbw 0, OTPartyMon1Exp + 2
+	dbw 0, wDudeNumKeyItems
 	dba PlaceMenuItemName
 	dba PlaceMenuItemQuantity
 	dba UpdateItemDescription
 ; 10826
 
-Function10826: ; 10826 (4:4826)
+.TMHM: ; 10826 (4:4826)
 	ld a, 3
 	call InitPocket
 	call WaitBGMap_DrawPackGFX
-	callba Function2c76f
+	callba TMHMPocket
 	ld a, [CurItem]
 	ld [CurItem], a
 	ret
 
-Function1083b: ; 1083b (4:483b)
+.Balls: ; 1083b (4:483b)
 	ld a, 1
-	ld hl, MenuDataHeader_0x10842
-	jr Function1085a
-; 10842 (4:4842)
+	ld hl, .BallsMenuDataHeader
+	jr .DisplayPocket
 
-MenuDataHeader_0x10842: ; 0x10842
+; 10842 (4:4842)
+.BallsMenuDataHeader: ; 0x10842
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw .MenuData2
+	dw .BallsMenuData2
 	db 1 ; default option
 ; 0x1084a
 
-.MenuData2: ; 0x1084a
+.BallsMenuData2: ; 0x1084a
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
-	dbw 0, OTPartyMon1CaughtGender
+	dbw 0, wDudeNumBalls
 	dba PlaceMenuItemName
 	dba PlaceMenuItemQuantity
 	dba UpdateItemDescription
 ; 1085a
 
-Function1085a: ; 1085a (4:485a)
+.DisplayPocket: ; 1085a (4:485a)
 	push hl
 	call InitPocket
 	pop hl
 	call CopyMenuDataHeader
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ret
 
-Function10866: ; 10866 (4:4866)
+Pack_JumptableNext: ; 10866 (4:4866)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function1086b: ; 1086b
+Pack_GetJumptablePointer: ; 1086b
 	ld e, a
 	ld d, 0
 rept 2
@@ -1257,7 +1261,7 @@
 	ret
 ; 10874
 
-Function10874: ; 10874 (4:4874)
+Pack_QuitNoScript: ; 10874 (4:4874)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	xor a
@@ -1264,17 +1268,17 @@
 	ld [wcf66], a
 	ret
 
-Function1087e: ; 1087e (4:487e)
+Pack_QuitRunScript: ; 1087e (4:487e)
 	ld hl, wJumptableIndex
 	set 7, [hl]
-	ld a, $1
+	ld a, TRUE
 	ld [wcf66], a
 	ret
 
-Function10889: ; 10889 (4:4889)
+Pack_PrintTextNoScroll: ; 10889 (4:4889)
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
 	call PrintText
 	pop af
@@ -1283,10 +1287,8 @@
 
 WaitBGMap_DrawPackGFX: ; 1089a (4:489a)
 	call WaitBGMap
-
-
 DrawPackGFX: ; 1089d
-	ld a, [wcf65]
+	ld a, [wCurrPocket]
 	and $3
 	ld e, a
 	ld d, $0
@@ -1296,7 +1298,6 @@
 	ld a, [PlayerGender]
 	bit 0, a
 	jr nz, .female
-
 .male_dude
 	ld hl, PackGFXPointers
 rept 2
@@ -1322,85 +1323,91 @@
 	dw PackGFX + $f0 * 2
 ; 108d4
 
-Function108d4: ; 108d4 (4:48d4)
-	ld hl, wcf73
-	ld a, [wd0e3]
+Pack_InterpretJoypad: ; 108d4 (4:48d4)
+	ld hl, wMenuJoypad
+	ld a, [wSwitchItem]
 	and a
-	jr nz, .asm_10931
+	jr nz, .switching_item
 	ld a, [hl]
-	and $1
-	jr nz, .asm_108f8
+	and A_BUTTON
+	jr nz, .a_button
 	ld a, [hl]
-	and $2
-	jr nz, .asm_108fa
+	and B_BUTTON
+	jr nz, .b_button
 	ld a, [hl]
-	and $20
-	jr nz, .asm_10901
+	and D_LEFT
+	jr nz, .d_left
 	ld a, [hl]
-	and $10
-	jr nz, .asm_10912
+	and D_RIGHT
+	jr nz, .d_right
 	ld a, [hl]
-	and $4
-	jr nz, .asm_10923
+	and SELECT
+	jr nz, .select
 	scf
 	ret
-.asm_108f8
+
+.a_button
 	and a
 	ret
-.asm_108fa
-	ld a, $9
+
+.b_button
+	ld a, 9
 	ld [wJumptableIndex], a
 	scf
 	ret
-.asm_10901
+
+.d_left
 	ld a, b
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	push de
-	ld de, SFX_UNKNOWN_62
+	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
 	pop de
 	scf
 	ret
-.asm_10912
+
+.d_right
 	ld a, c
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	push de
-	ld de, SFX_UNKNOWN_62
+	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
 	pop de
 	scf
 	ret
-.asm_10923
-	callba Function2490c
+
+.select
+	callba SwitchItemsInBag
 	ld hl, Text_MoveItemWhere
-	call Function10889
+	call Pack_PrintTextNoScroll
 	scf
 	ret
-.asm_10931
+
+.switching_item
 	ld a, [hl]
-	and $5
-	jr nz, .asm_1093d
+	and A_BUTTON | SELECT
+	jr nz, .place_insert
 	ld a, [hl]
-	and $2
-	jr nz, .asm_1094f
+	and B_BUTTON
+	jr nz, .end_switch
 	scf
 	ret
-.asm_1093d
-	callba Function2490c
+
+.place_insert
+	callba SwitchItemsInBag
 	ld de, SFX_SWITCH_POKEMON
 	call WaitPlaySFX
 	ld de, SFX_SWITCH_POKEMON
 	call WaitPlaySFX
-.asm_1094f
+.end_switch
 	xor a
-	ld [wd0e3], a
+	ld [wSwitchItem], a
 	scf
 	ret
 
-
-Function10955: ; 10955
+Pack_InitGFX: ; 10955
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -1410,18 +1417,15 @@
 	ld bc, $60 tiles
 	ld a, BANK(PackMenuGFX)
 	call FarCopyBytes
-
 ; Background (blue if male, pink if female)
 	hlcoord 0, 1
 	ld bc, 11 * SCREEN_WIDTH
 	ld a, $24
 	call ByteFill
-
 ; This is where the items themselves will be listed.
 	hlcoord 5, 1
 	lb bc, 11, 15
 	call ClearBox
-
 ; ◀▶ POCKET       ▼▲ ITEMS
 	hlcoord 0, 0
 	ld a, $28
@@ -1431,10 +1435,8 @@
 	inc a
 	dec c
 	jr nz, .loop
-
 	call DrawPocketName
 	call PlacePackGFX
-
 ; Place the textbox for displaying the item description
 	hlcoord 0, SCREEN_HEIGHT - 4 - 2
 	lb bc, 4, SCREEN_WIDTH - 2
@@ -1463,13 +1465,11 @@
 ; 109bb
 
 DrawPocketName: ; 109bb
-	ld a, [wcf65]
-
+	ld a, [wCurrPocket]
 	; * 15
 	ld d, a
 	swap a
 	sub d
-
 	ld d, 0
 	ld e, a
 	ld hl, .tilemap
@@ -1499,15 +1499,12 @@
 	db $00, $04, $04, $04, $01 ; top border
 	db $06, $07, $08, $09, $0a ; Items
 	db $02, $05, $05, $05, $03 ; bottom border
-
 	db $00, $04, $04, $04, $01 ; top border
 	db $15, $16, $17, $18, $19 ; Balls
 	db $02, $05, $05, $05, $03 ; bottom border
-
 	db $00, $04, $04, $04, $01 ; top border
 	db $0b, $0c, $0d, $0e, $0f ; Key Items
 	db $02, $05, $05, $05, $03 ; bottom border
-
 	db $00, $04, $04, $04, $01 ; top border
 	db $10, $11, $12, $13, $14 ; TM/HM
 	db $02, $05, $05, $05, $03 ; bottom border
@@ -1536,10 +1533,9 @@
 	call ClearBox
 	ret
 
-
-Function10a40: ; 10a40
+Pack_InitColors: ; 10a40
 	call WaitBGMap
-	ld b, SCREEN_WIDTH
+	ld b, SCGB_PACKPALS
 	call GetSGBLayout
 	call SetPalettes
 	call DelayFrame
@@ -1546,15 +1542,15 @@
 	ret
 ; 10a4f
 
-MenuDataHeader_0x10a4f: ; 0x10a4f
+ItemsPocketMenuDataHeader: ; 0x10a4f
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10a57
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10a57
 
-MenuData2_0x10a57: ; 0x10a57
+.MenuData2: ; 0x10a57
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
@@ -1564,15 +1560,15 @@
 	dba UpdateItemDescription
 ; 10a67
 
-MenuDataHeader_0x10a67: ; 0x10a67
+PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10a6f
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10a6f
 
-MenuData2_0x10a6f: ; 0x10a6f
+.MenuData2: ; 0x10a6f
 	db $2e ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
@@ -1582,15 +1578,15 @@
 	dba UpdateItemDescription
 ; 10a7f
 
-MenuDataHeader_0x10a7f: ; 0x10a7f
+KeyItemsPocketMenuDataHeader: ; 0x10a7f
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10a87
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10a87
 
-MenuData2_0x10a87: ; 0x10a87
+.MenuData2: ; 0x10a87
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
@@ -1600,15 +1596,15 @@
 	dba UpdateItemDescription
 ; 10a97
 
-MenuDataHeader_0x10a97: ; 0x10a97
+PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10a9f
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10a9f
 
-MenuData2_0x10a9f: ; 0x10a9f
+.MenuData2: ; 0x10a9f
 	db $2e ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
@@ -1618,15 +1614,15 @@
 	dba UpdateItemDescription
 ; 10aaf
 
-MenuDataHeader_0x10aaf: ; 0x10aaf
+BallsPocketMenuDataHeader: ; 0x10aaf
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10ab7
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10ab7
 
-MenuData2_0x10ab7: ; 0x10ab7
+.MenuData2: ; 0x10ab7
 	db $ae ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
@@ -1636,15 +1632,15 @@
 	dba UpdateItemDescription
 ; 10ac7
 
-MenuDataHeader_0x10ac7: ; 0x10ac7
+PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7
 	db $40 ; flags
 	db 01, 07 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x10acf
+	dw .MenuData2
 	db 1 ; default option
 ; 0x10acf
 
-MenuData2_0x10acf: ; 0x10acf
+.MenuData2: ; 0x10acf
 	db $2e ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
@@ -1723,6 +1719,5 @@
 
 PackMenuGFX:
 INCBIN "gfx/misc/pack_menu.2bpp"
-
 PackGFX:
 INCBIN "gfx/misc/pack.2bpp"
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -8,12 +8,12 @@
 	call SetPalettes
 	call DelayFrame
 	call PartyMenuSelect
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	ret
 ; 5001d
 
 
-Function5001d: ; 5001d
+SelectTradeOrDaycareMon: ; 5001d
 	ld a, b
 	ld [PartyMenuActionText], a
 	call DisableSpriteUpdates
@@ -25,7 +25,7 @@
 	call SetPalettes
 	call DelayFrame
 	call PartyMenuSelect
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	ret
 ; 5003f
 
@@ -41,7 +41,7 @@
 LoadPartyMenuGFX: ; 5004f
 	call LoadFontsBattleExtra
 	callab Function8ad1 ; engine/color.asm
-	callab ClearSpriteAnims
+	callab ClearSpriteAnims2
 	ret
 ; 5005f
 
@@ -125,7 +125,7 @@
 
 PlacePartyHPBar: ; 500cf
 	xor a
-	ld [wcda9], a
+	ld [wSGBPals], a
 	ld a, [PartyCount]
 	and a
 	ret z
@@ -143,17 +143,16 @@
 	ld d, $6
 	ld b, $0
 	call DrawBattleHPBar
-	ld hl, wcd9b
-	ld a, [wcda9]
+	ld hl, wHPPals
+	ld a, [wSGBPals]
 	ld c, a
 	ld b, $0
 	add hl, bc
 	call SetHPPal
-	ld b, SCGB_FC
+	ld b, SCGB_PARTY_MENU_HP_PALS
 	call GetSGBLayout
-
 .skip
-	ld hl, wcda9
+	ld hl, wSGBPals
 	inc [hl]
 	pop hl
 	ld de, 2 * SCREEN_WIDTH
@@ -190,7 +189,7 @@
 	ld d, a
 	ld a, [hli]
 	ld e, a
-	predef DrawPartyMenuHPBar
+	predef ComputeHPBarPixels
 	ret
 ; 50138
 
@@ -670,7 +669,7 @@
 	pop bc
 	dec c
 	jr nz, .loop
-	callab Function8cf69
+	callab PlaySpriteAnimations
 	ret
 ; 50405
 
@@ -679,10 +678,10 @@
 	xor a
 	ld [wSwitchMon], a
 	ld de, PartyMenuAttributes
-	call InitMenu3
+	call SetMenuAttributes
 	ld a, [PartyCount]
 	inc a
-	ld [wcfa3], a ; list length
+	ld [w2DMenuNumRows], a ; list length
 	dec a
 	ld b, a
 	ld a, [wPartyMenuCursor]
@@ -693,12 +692,12 @@
 	jr c, .done
 
 .skip
-	ld a, $1
+	ld a, 1
 
 .done
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, A_BUTTON | B_BUTTON
-	ld [wcfa8], a
+	ld [wMenuJoypadFilter], a
 	ret
 ; 5042d
 
@@ -705,9 +704,9 @@
 InitPartyMenuNoCancel: ; 0x5042d
 ; no cancel
 	ld de, PartyMenuAttributes
-	call InitMenu3
+	call SetMenuAttributes
 	ld a, [PartyCount]
-	ld [wcfa3], a ; list length
+	ld [w2DMenuNumRows], a ; list length
 	ld b, a
 	ld a, [wPartyMenuCursor]
 	and a
@@ -716,11 +715,11 @@
 	cp b
 	jr c, .done
 .skip
-	ld a, $1
+	ld a, 1
 .done
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, A_BUTTON | B_BUTTON
-	ld [wcfa8], a
+	ld [wMenuJoypadFilter], a
 	ret
 ; 5044f (14:444f)
 
@@ -727,23 +726,27 @@
 PartyMenuAttributes: ; 5044f
 ; cursor y
 ; cursor x
-; list length
-; ?
+; num rows
+; num cols
 ; 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
+	db 1, 0
+	db 0, 1
+	db $60, $00
+	dn 2, 0
+	db 0
 ; 50457
 
 PartyMenuSelect: ; 0x50457
 ; sets carry if exitted menu.
-	call Function1bc9
-	call Function1bee
+	call StaticMenuJoypad
+	call PlaceHollowCursor
 	ld a, [PartyCount]
 	inc a
 	ld b, a
-	ld a, [MenuSelection2] ; menu selection?
+	ld a, [wMenuCursorY] ; menu selection?
 	cp b
 	jr z, .exitmenu ; CANCEL
 	ld [wPartyMenuCursor], a
@@ -751,7 +754,7 @@
 	ld b, a
 	bit 1, b
 	jr nz, .exitmenu ; B button?
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurPartyMon], a
 	ld c, a
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -274,7 +274,7 @@
 	push hl
 	call LoadCallerScript
 	pop hl
-	ld de, wd048
+	ld de, wPhoneScriptPointer
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -442,10 +442,10 @@
 Script_ReceivePhoneCall: ; 0x90241
 	refreshscreen $0
 	callasm RingTwice_StartCall
-	ptcall wd048
-	closetext
+	ptcall wPhoneScriptPointer
+	waitbutton
 	callasm HangUp
-	loadmovesprites
+	closetext
 	callasm InitCallReceiveDelay
 	end
 ; 0x90255
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -1,3 +1,6 @@
+SWARM_DUNSPARCE EQU 0
+SWARM_YANMA     EQU 1
+
 UnusedPhoneScript: ; 0xbcea5
 	farwritetext UnusedPhoneText
 	end
@@ -19,7 +22,7 @@
 	checkevent EVENT_IN_YOUR_ROOM
 	iftrue MomPhoneHangUpScript
 	farwritetext MomPhoneGreetingText
-	keeptextopen
+	buttonsound
 	mapnametotext $0
 	checkcode VAR_ROOFPALETTE
 	if_equal $1, UnknownScript_0xbcee7
@@ -28,7 +31,7 @@
 
 UnknownScript_0xbcedf: ; 0xbcedf
 	farwritetext UnknownText_0x1b4021
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 UnknownScript_0xbcee7: ; 0xbcee7
@@ -39,37 +42,37 @@
 	if_equal GROUP_AZALEA_TOWN, .azalea
 	if_equal GROUP_GOLDENROD_CITY, .goldenrod
 	farwritetext MomPhoneGenericAreaText
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 .newbark ; 0xbcf05
 	farwritetext MomPhoneNewBarkText
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 .cherrygrove ; 0xbcf0d
 	farwritetext MomPhoneCherrygroveText
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 .violet ; 0xbcf15
-	displaylocation SPROUT_TOWER, 1
+	landmarktotext SPROUT_TOWER, 1
 	jump UnknownScript_0xbcedf
 .azalea ; 0xbcf1b
-	displaylocation SLOWPOKE_WELL, 1
+	landmarktotext SLOWPOKE_WELL, 1
 	jump UnknownScript_0xbcedf
 .goldenrod ; 0xbcf21
-	displaylocation RADIO_TOWER, 1
+	landmarktotext RADIO_TOWER, 1
 	jump UnknownScript_0xbcedf
 
 UnknownScript_0xbcf27: ; 0xbcf27
 	farwritetext UnknownText_0x1b411c
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 UnknownScript_0xbcf2f: ; 0xbcf2f
 	farwritetext UnknownText_0x1b4150
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0xbcf37
 
 UnknownScript_0xbcf37: ; 0xbcf37
@@ -113,13 +116,13 @@
 MomPhoneSaveMoneyScript: ; 0xbcf87
 	setflag ENGINE_MOM_SAVING_MONEY
 	farwritetext UnknownText_0x1b4289
-	keeptextopen
+	buttonsound
 	jump MomPhoneHangUpScript
 
 MomPhoneWontSaveMoneyScript: ; 0xbcf92
 	clearflag ENGINE_MOM_SAVING_MONEY
 	farwritetext MomPhoneWontSaveMoneyText
-	keeptextopen
+	buttonsound
 	jump MomPhoneHangUpScript
 
 MomPhoneHangUpScript: ; 0xbcf9d
@@ -155,22 +158,22 @@
 	checknite
 	iftrue .nitegreet
 	farwritetext BillPhoneMornGreetingText
-	keeptextopen
+	buttonsound
 	jump .main
 
 .daygreet ; 0xbcfd7
 	farwritetext BillPhoneDayGreetingText
-	keeptextopen
+	buttonsound
 	jump .main
 
 .nitegreet ; 0xbcfdf
 	farwritetext BillPhoneNiteGreetingText
-	keeptextopen
+	buttonsound
 	jump .main
 
 .main ; 0xbcfe7
 	farwritetext BillPhoneGeneriText
-	keeptextopen
+	buttonsound
 	checkcode VAR_BOXSPACE
 	RAM2MEM $0
 	if_equal $0, .full
@@ -188,7 +191,7 @@
 
 BillPhoneScript2: ; 0xbd007
 	farwritetext BillPhoneNewlyFullText
-	closetext
+	waitbutton
 	end
 
 ; Elm
@@ -302,7 +305,7 @@
 	trainertotext SCHOOLBOY, JACK1, $0
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0xbd0f3
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_JACK_MONDAY_MORNING
 	iftrue UnknownScript_0xbd0ef
 	checkcode VAR_WEEKDAY
@@ -314,23 +317,23 @@
 	farjump UnknownScript_0xa08f8
 
 UnknownScript_0xbd0f3:
-	displaylocation NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, $2
 	farjump UnknownScript_0xa0a2d
 
 JackPhoneScript2:
 	trainertotext SCHOOLBOY, JACK1, $0
-	farscall UnknownScript_0xbe1b6
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_GreetPhone_Male
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd13b
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0xbd11e
 	checkflag ENGINE_JACK_MONDAY_MORNING
 	iftrue UnknownScript_0xbd11e
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd12d
 
 UnknownScript_0xbd11e:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd137
 	farjump UnknownScript_0xa0000
 
@@ -338,7 +341,7 @@
 	setflag ENGINE_JACK_MONDAY_MORNING
 
 UnknownScript_0xbd12d:
-	displaylocation NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, $2
 	setflag ENGINE_JACK
 	farjump UnknownScript_0xa0376
 
@@ -352,21 +355,21 @@
 
 BeverlyPhoneScript1:
 	trainertotext POKEFANF, BEVERLY1, $0
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0xbd151
 	farjump UnknownScript_0xa0900
 
 UnknownScript_0xbd151:
-	displaylocation NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, $2
 	farjump UnknownScript_0xa0aa5
 
 BeverlyPhoneScript2:
 	trainertotext POKEFANF, BEVERLY1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0xbd16e
-	farscall UnknownScript_0xbde45
+	farscall PhoneScript_Random4
 	if_equal $0, UnknownScript_0xbd172
 
 UnknownScript_0xbd16e:
@@ -374,7 +377,7 @@
 
 UnknownScript_0xbd172:
 	setflag ENGINE_BEVERLY_HAS_NUGGET
-	displaylocation NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, $2
 	farjump UnknownScript_0xa061e
 
 ; Huey
@@ -383,7 +386,7 @@
 	trainertotext SAILOR, HUEY1, $0
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0xbd1a2
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbd19b
 	checkcode VAR_WEEKDAY
@@ -396,28 +399,28 @@
 	farjump UnknownScript_0xa0908
 
 UnknownScript_0xbd1a2:
-	displaylocation LIGHTHOUSE, $2
+	landmarktotext LIGHTHOUSE, $2
 	farjump UnknownScript_0xa0a32
 
 HueyPhoneScript2:
 	trainertotext SAILOR, HUEY1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0xbd1c9
 	checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbd1c9
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd1d0
 	if_equal $1, UnknownScript_0xbd1d0
 
 UnknownScript_0xbd1c9:
-	farjump UnknownScript_0xbe622
+	farjump PhoneScript_MonFlavorText
 
 UnknownScript_0xbd1cd:
 	setflag ENGINE_HUEY_WEDNESDAY_NIGHT
 
 UnknownScript_0xbd1d0:
-	displaylocation LIGHTHOUSE, $2
+	landmarktotext LIGHTHOUSE, $2
 	setflag ENGINE_HUEY
 	farjump UnknownScript_0xa0376
 
@@ -427,7 +430,7 @@
 	trainertotext COOLTRAINERM, GAVEN3, $0
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0xbd1fd
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_GAVEN_THURSDAY_MORNING
 	iftrue UnknownScript_0xbd1f9
 	checkcode VAR_WEEKDAY
@@ -439,21 +442,21 @@
 	farjump UnknownScript_0xa0910
 
 UnknownScript_0xbd1fd:
-	displaylocation ROUTE_26, $2
+	landmarktotext ROUTE_26, $2
 	farjump UnknownScript_0xa0a37
 
 GavenPhoneScript2:
 	trainertotext COOLTRAINERM, GAVEN3, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0xbd220
 	checkflag ENGINE_GAVEN_THURSDAY_MORNING
 	iftrue UnknownScript_0xbd220
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd22f
 
 UnknownScript_0xbd220:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd239
 	farjump UnknownScript_0xa0000
 
@@ -461,7 +464,7 @@
 	setflag ENGINE_GAVEN_THURSDAY_MORNING
 
 UnknownScript_0xbd22f:
-	displaylocation ROUTE_26, $2
+	landmarktotext ROUTE_26, $2
 	setflag ENGINE_GAVEN
 	farjump UnknownScript_0xa0376
 
@@ -474,7 +477,7 @@
 	trainertotext COOLTRAINERF, BETH1, $0
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0xbd260
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_BETH_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbd25c
 	checkcode VAR_WEEKDAY
@@ -486,17 +489,17 @@
 	farjump UnknownScript_0xa0918
 
 UnknownScript_0xbd260:
-	displaylocation ROUTE_26, $2
+	landmarktotext ROUTE_26, $2
 	farjump UnknownScript_0xa0a3c
 
 BethPhoneScript2:
 	trainertotext COOLTRAINERF, BETH1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0xbd283
 	checkflag ENGINE_BETH_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbd283
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd28a
 
 UnknownScript_0xbd283:
@@ -506,7 +509,7 @@
 	setflag ENGINE_BETH_FRIDAY_AFTERNOON
 
 UnknownScript_0xbd28a:
-	displaylocation ROUTE_26, $2
+	landmarktotext ROUTE_26, $2
 	setflag ENGINE_BETH
 	farjump UnknownScript_0xa037e
 
@@ -516,7 +519,7 @@
 	trainertotext BIRD_KEEPER, JOSE2, $0
 	checkflag ENGINE_JOSE
 	iftrue UnknownScript_0xbd2bd
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_JOSE_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbd2b9
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
@@ -530,16 +533,16 @@
 	farjump UnknownScript_0xa0920
 
 UnknownScript_0xbd2bd:
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	farjump UnknownScript_0xa0a41
 
 UnknownScript_0xbd2c4:
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	farjump UnknownScript_0xa0a41
 
 JosePhoneScript2:
 	trainertotext BIRD_KEEPER, JOSE2, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_JOSE
 	iftrue UnknownScript_0xbd2f5
 	checkflag ENGINE_JOSE_SATURDAY_NIGHT
@@ -546,13 +549,13 @@
 	iftrue UnknownScript_0xbd2f5
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue UnknownScript_0xbd2f5
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd304
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd312
 
 UnknownScript_0xbd2f5:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd30e
 	farjump UnknownScript_0xa0000
 
@@ -560,7 +563,7 @@
 	setflag ENGINE_JOSE_SATURDAY_NIGHT
 
 UnknownScript_0xbd304:
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	setflag ENGINE_JOSE
 	farjump UnknownScript_0xa0376
 
@@ -569,7 +572,7 @@
 
 UnknownScript_0xbd312:
 	setflag ENGINE_JOSE_HAS_STAR_PIECE
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	farjump UnknownScript_0xa05e6
 
 ; Reena
@@ -578,7 +581,7 @@
 	trainertotext COOLTRAINERF, REENA1, $0
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0xbd33f
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_REENA_SUNDAY_MORNING
 	iftrue UnknownScript_0xbd33b
 	checkcode VAR_WEEKDAY
@@ -590,17 +593,17 @@
 	farjump UnknownScript_0xa0928
 
 UnknownScript_0xbd33f:
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	farjump UnknownScript_0xa0a46
 
 ReenaPhoneScript2:
 	trainertotext COOLTRAINERF, REENA1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0xbd362
 	checkflag ENGINE_REENA_SUNDAY_MORNING
 	iftrue UnknownScript_0xbd362
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd369
 
 UnknownScript_0xbd362:
@@ -610,7 +613,7 @@
 	setflag ENGINE_REENA_SUNDAY_MORNING
 
 UnknownScript_0xbd369:
-	displaylocation ROUTE_27, $2
+	landmarktotext ROUTE_27, $2
 	setflag ENGINE_REENA
 	farjump UnknownScript_0xa037e
 
@@ -620,7 +623,7 @@
 	trainertotext YOUNGSTER, JOEY1, $0
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0xbd399
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_JOEY_MONDAY_AFTERNOON
 	iftrue UnknownScript_0xbd392
 	checkcode VAR_WEEKDAY
@@ -633,17 +636,17 @@
 	farjump UnknownScript_0xa0930
 
 UnknownScript_0xbd399:
-	displaylocation ROUTE_30, $2
+	landmarktotext ROUTE_30, $2
 	farjump UnknownScript_0xa0a4b
 
 JoeyPhoneScript2:
 	trainertotext YOUNGSTER, JOEY1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0xbd3c0
 	checkflag ENGINE_JOEY_MONDAY_AFTERNOON
 	iftrue UnknownScript_0xbd3c0
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd3c7
 	if_equal $1, UnknownScript_0xbd3c7
 
@@ -654,7 +657,7 @@
 	setflag ENGINE_JOEY_MONDAY_AFTERNOON
 
 UnknownScript_0xbd3c7:
-	displaylocation ROUTE_30, $2
+	landmarktotext ROUTE_30, $2
 	setflag ENGINE_JOEY
 	farjump UnknownScript_0xa0376
 
@@ -664,7 +667,7 @@
 	trainertotext BUG_CATCHER, WADE1, $0
 	checkflag ENGINE_WADE
 	iftrue UnknownScript_0xbd41a
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_WADE_TUESDAY_NIGHT
 	iftrue UnknownScript_0xbd3f6
 	checkflag ENGINE_WADE_HAS_ITEM
@@ -675,7 +678,7 @@
 	iftrue UnknownScript_0xbd484
 
 UnknownScript_0xbd3f6:
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd412
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbd412
@@ -691,17 +694,17 @@
 	farjump UnknownScript_0xa05a4
 
 UnknownScript_0xbd41a:
-	displaylocation ROUTE_31, $2
+	landmarktotext ROUTE_31, $2
 	farjump UnknownScript_0xa0a50
 
 UnknownScript_0xbd421:
-	displaylocation ROUTE_31, $2
+	landmarktotext ROUTE_31, $2
 	farjump UnknownScript_0xa0ab5
 
 WadePhoneScript2:
 	trainertotext BUG_CATCHER, WADE1, $0
-	farscall UnknownScript_0xbe1b6
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_GreetPhone_Male
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd44c
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbd44c
@@ -717,15 +720,15 @@
 	iftrue UnknownScript_0xbd474
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue UnknownScript_0xbd474
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd495
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd474
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd487
 
 UnknownScript_0xbd474:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd491
 	farjump UnknownScript_0xa0000
 
@@ -736,7 +739,7 @@
 	setflag ENGINE_WADE_TUESDAY_NIGHT
 
 UnknownScript_0xbd487:
-	displaylocation ROUTE_31, $2
+	landmarktotext ROUTE_31, $2
 	setflag ENGINE_WADE
 	farjump UnknownScript_0xa0376
 
@@ -745,7 +748,7 @@
 
 UnknownScript_0xbd495:
 	setflag ENGINE_WADE_HAS_ITEM
-	displaylocation ROUTE_31, $2
+	landmarktotext ROUTE_31, $2
 	clearevent EVENT_WADE_HAS_BERRY
 	clearevent EVENT_WADE_HAS_PSNCUREBERRY
 	clearevent EVENT_WADE_HAS_PRZCUREBERRY
@@ -779,59 +782,56 @@
 RalphPhoneScript1:
 	trainertotext FISHER, RALPH1, $0
 	checkflag ENGINE_RALPH
-	iftrue UnknownScript_0xbd4fb
-	farscall UnknownScript_0xbde4e
+	iftrue Ralph_Rematch
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_RALPH_WEDNESDAY_MORNING
-	iftrue UnknownScript_0xbd4f1
+	iftrue Ralph_CheckSwarm
 	checkcode VAR_WEEKDAY
-	if_not_equal WEDNESDAY, UnknownScript_0xbd4f1
+	if_not_equal WEDNESDAY, Ralph_CheckSwarm
 	checkmorn
-	iftrue UnknownScript_0xbd537
-
-UnknownScript_0xbd4f1:
+	iftrue Ralph_WednesdayMorning
+Ralph_CheckSwarm:
 	checkflag ENGINE_SPECIAL_WILDDATA
-	iftrue UnknownScript_0xbd502
+	iftrue Ralph_ReportSwarm
 	farjump UnknownScript_0xa0940
 
-UnknownScript_0xbd4fb:
-	displaylocation ROUTE_32, $2
+Ralph_Rematch:
+	landmarktotext ROUTE_32, $2
 	farjump UnknownScript_0xa0a55
 
-UnknownScript_0xbd502:
-	displaylocation ROUTE_32, $2
+Ralph_ReportSwarm:
+	landmarktotext ROUTE_32, $2
 	farjump UnknownScript_0xa0af5
 
 RalphPhoneScript2:
 	trainertotext FISHER, RALPH1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_FLYPOINT_GOLDENROD
-	iffalse UnknownScript_0xbd52b
+	iffalse Ralph_CheckSwarm2
 	checkflag ENGINE_RALPH
-	iftrue UnknownScript_0xbd52b
+	iftrue Ralph_CheckSwarm2
 	checkflag ENGINE_RALPH_WEDNESDAY_MORNING
-	iftrue UnknownScript_0xbd52b
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xbd53a
-
-UnknownScript_0xbd52b:
-	farscall UnknownScript_0xbde48
-	if_equal $0, UnknownScript_0xbd544
+	iftrue Ralph_CheckSwarm2
+	farscall PhoneScript_Random2
+	if_equal $0, Ralph_FightMe
+Ralph_CheckSwarm2:
+	farscall PhoneScript_Random5
+	if_equal $0, Ralph_SetUpSwarm
 	farjump UnknownScript_0xa0000
 
-UnknownScript_0xbd537:
+Ralph_WednesdayMorning:
 	setflag ENGINE_RALPH_WEDNESDAY_MORNING
-
-UnknownScript_0xbd53a:
-	displaylocation ROUTE_32, $2
+Ralph_FightMe:
+	landmarktotext ROUTE_32, $2
 	setflag ENGINE_RALPH
 	farjump UnknownScript_0xa0376
 
-UnknownScript_0xbd544:
+Ralph_SetUpSwarm:
 	checkflag ENGINE_SPECIAL_WILDDATA
 	iftrue UnknownScript_0xbd55c
 	setflag ENGINE_SPECIAL_WILDDATA
 	pokenamemem QWILFISH, $1
-	displaylocation ROUTE_32, $2
+	landmarktotext ROUTE_32, $2
 	writebyte $1
 	special Special_ActivateFishingSwarm
 	farjump UnknownScript_0xa05d6
@@ -845,7 +845,7 @@
 	trainertotext PICNICKER, LIZ1, $0
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0xbd586
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
 	iftrue UnknownScript_0xbd57f
 	checkcode VAR_WEEKDAY
@@ -858,14 +858,14 @@
 	farjump UnknownScript_0xa0948
 
 UnknownScript_0xbd586:
-	displaylocation ROUTE_32, $2
+	landmarktotext ROUTE_32, $2
 	farjump UnknownScript_0xa0a5a
 
 LizPhoneScript2:
 	trainertotext PICNICKER, LIZ1, $0
-	farscall UnknownScript_0xbde45
+	farscall PhoneScript_Random4
 	if_equal $0, UnknownScript_0xbd5d0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0xbd5a9
 	checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
@@ -872,11 +872,11 @@
 	iftrue UnknownScript_0xbd5a9
 
 UnknownScript_0xbd5a9:
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd5d4
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd5bf
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd5c6
 
 UnknownScript_0xbd5bf:
@@ -886,7 +886,7 @@
 	setflag ENGINE_LIZ_THURSDAY_AFTERNOON
 
 UnknownScript_0xbd5c6:
-	displaylocation ROUTE_32, $2
+	landmarktotext ROUTE_32, $2
 	setflag ENGINE_LIZ
 	farjump UnknownScript_0xa037e
 
@@ -950,7 +950,7 @@
 	trainertotext HIKER, ANTHONY2, $0
 	checkflag ENGINE_ANTHONY
 	iftrue UnknownScript_0xbd65d
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
 	iftrue UnknownScript_0xbd653
 	checkcode VAR_WEEKDAY
@@ -964,16 +964,16 @@
 	farjump UnknownScript_0xa0950
 
 UnknownScript_0xbd65d:
-	displaylocation ROUTE_33, $2
+	landmarktotext ROUTE_33, $2
 	farjump UnknownScript_0xa0a5f
 
 UnknownScript_0xbd664:
-	displaylocation ROUTE_33, $2
+	landmarktotext ROUTE_33, $2
 	farjump UnknownScript_0xa0afa
 
 AnthonyPhoneScript2:
 	trainertotext HIKER, ANTHONY2, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd68d
 	checkflag ENGINE_ANTHONY
@@ -980,11 +980,11 @@
 	iftrue UnknownScript_0xbd68d
 	checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
 	iftrue UnknownScript_0xbd68d
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd69c
 
 UnknownScript_0xbd68d:
-	farscall UnknownScript_0xbde48
+	farscall PhoneScript_Random5
 	if_equal $0, UnknownScript_0xbd6a6
 	farjump UnknownScript_0xa0000
 
@@ -992,7 +992,7 @@
 	setflag ENGINE_ANTHONY_FRIDAY_NIGHT
 
 UnknownScript_0xbd69c:
-	displaylocation ROUTE_33, $2
+	landmarktotext ROUTE_33, $2
 	setflag ENGINE_ANTHONY
 	farjump UnknownScript_0xa0376
 
@@ -1001,8 +1001,8 @@
 	iftrue UnknownScript_0xbd6bd
 	setflag ENGINE_DUNSPARCE_SWARM
 	pokenamemem DUNSPARCE, $1
-	loadwilddata $0, DARK_CAVE_VIOLET_ENTRANCE
-	displaylocation DARK_CAVE, $2
+	swarm SWARM_DUNSPARCE, DARK_CAVE_VIOLET_ENTRANCE
+	landmarktotext DARK_CAVE, $2
 	farjump UnknownScript_0xa05de
 
 UnknownScript_0xbd6bd:
@@ -1014,7 +1014,7 @@
 	trainertotext CAMPER, TODD1, $0
 	checkflag ENGINE_TODD
 	iftrue UnknownScript_0xbd6ea
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_TODD_SATURDAY_MORNING
 	iftrue UnknownScript_0xbd6e0
 	checkcode VAR_WEEKDAY
@@ -1028,7 +1028,7 @@
 	farjump UnknownScript_0xa0958
 
 UnknownScript_0xbd6ea:
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	farjump UnknownScript_0xa0a64
 
 UnknownScript_0xbd6f1:
@@ -1036,7 +1036,7 @@
 
 ToddPhoneScript2:
 	trainertotext CAMPER, TODD1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_TODD
 	iftrue UnknownScript_0xbd717
 	checkflag ENGINE_TODD_SATURDAY_MORNING
@@ -1043,15 +1043,15 @@
 	iftrue UnknownScript_0xbd717
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd71f
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd72e
 
 UnknownScript_0xbd717:
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd73c
 
 UnknownScript_0xbd71f:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd738
 	farjump UnknownScript_0xa0000
 
@@ -1059,7 +1059,7 @@
 	setflag ENGINE_TODD_SATURDAY_MORNING
 
 UnknownScript_0xbd72e:
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	setflag ENGINE_TODD
 	farjump UnknownScript_0xa0376
 
@@ -1076,7 +1076,7 @@
 	trainertotext PICNICKER, GINA1, $0
 	checkflag ENGINE_GINA
 	iftrue UnknownScript_0xbd776
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_GINA_SUNDAY_AFTERNOON
 	iftrue UnknownScript_0xbd768
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
@@ -1095,16 +1095,16 @@
 	farjump UnknownScript_0xa05c6
 
 UnknownScript_0xbd776:
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	farjump UnknownScript_0xa0a69
 
 UnknownScript_0xbd77d:
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	farjump UnknownScript_0xa0abd
 
 GinaPhoneScript2:
 	trainertotext PICNICKER, GINA1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd7d9
 	checkflag ENGINE_GINA
@@ -1115,15 +1115,15 @@
 	iftrue UnknownScript_0xbd7c8
 	checkevent EVENT_GINA_GAVE_LEAF_STONE
 	iftrue UnknownScript_0xbd7b2
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd7dd
 
 UnknownScript_0xbd7b2:
-	farscall UnknownScript_0xbde4b
+	farscall PhoneScript_Random11
 	if_equal $0, UnknownScript_0xbd7dd
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse UnknownScript_0xbd7c8
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd7cf
 
 UnknownScript_0xbd7c8:
@@ -1133,7 +1133,7 @@
 	setflag ENGINE_GINA_SUNDAY_AFTERNOON
 
 UnknownScript_0xbd7cf:
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	setflag ENGINE_GINA
 	farjump UnknownScript_0xa037e
 
@@ -1142,7 +1142,7 @@
 
 UnknownScript_0xbd7dd:
 	setflag ENGINE_GINA_HAS_LEAF_STONE
-	displaylocation ROUTE_34, $2
+	landmarktotext ROUTE_34, $2
 	farjump UnknownScript_0xa061e
 
 ; Irwin
@@ -1149,7 +1149,7 @@
 
 IrwinPhoneScript1:
 	trainertotext JUGGLER, IRWIN1, $0
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd7f9
 	farjump UnknownScript_0xa09c8
@@ -1159,7 +1159,7 @@
 
 IrwinPhoneScript2:
 	trainertotext JUGGLER, IRWIN1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0xbd80f
 	farjump UnknownScript_0xa0848
@@ -1173,7 +1173,7 @@
 	trainertotext BUG_CATCHER, ARNIE1, $0
 	checkflag ENGINE_ARNIE
 	iftrue UnknownScript_0xbd83c
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_ARNIE_TUESDAY_MORNING
 	iftrue UnknownScript_0xbd832
 	checkcode VAR_WEEKDAY
@@ -1187,27 +1187,27 @@
 	farjump UnknownScript_0xa0968
 
 UnknownScript_0xbd83c:
-	displaylocation ROUTE_35, $2
+	landmarktotext ROUTE_35, $2
 	farjump UnknownScript_0xa0a6e
 
 UnknownScript_0xbd843:
-	displaylocation ROUTE_35, $2
+	landmarktotext ROUTE_35, $2
 	farjump UnknownScript_0xa0aff
 
 ArniePhoneScript2:
 	trainertotext BUG_CATCHER, ARNIE1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ARNIE
 	iftrue UnknownScript_0xbd866
 	checkflag ENGINE_ARNIE_TUESDAY_MORNING
 	iftrue UnknownScript_0xbd866
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd87d
 
 UnknownScript_0xbd866:
-	farscall UnknownScript_0xbde48
+	farscall PhoneScript_Random5
 	if_equal $0, UnknownScript_0xbd887
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd89e
 	farjump UnknownScript_0xa0000
 
@@ -1215,17 +1215,17 @@
 	setflag ENGINE_ARNIE_TUESDAY_MORNING
 
 UnknownScript_0xbd87d:
-	displaylocation ROUTE_35, $2
+	landmarktotext ROUTE_35, $2
 	setflag ENGINE_ARNIE
 	farjump UnknownScript_0xa0376
 
-UnknownScript_0xbd887:
+UnknownScript_0xbd887: ; start swarm
 	checkflag ENGINE_YANMA_SWARM
 	iftrue UnknownScript_0xbd8a2
 	setflag ENGINE_YANMA_SWARM
 	pokenamemem YANMA, $1
-	loadwilddata $1, ROUTE_35
-	displaylocation ROUTE_35, $2
+	swarm SWARM_YANMA, ROUTE_35
+	landmarktotext ROUTE_35, $2
 	farjump UnknownScript_0xa05ce
 
 UnknownScript_0xbd89e:
@@ -1240,7 +1240,7 @@
 	trainertotext SCHOOLBOY, ALAN1, $0
 	checkflag ENGINE_ALAN
 	iftrue UnknownScript_0xbd8cf
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 	iftrue UnknownScript_0xbd8cb
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
@@ -1254,16 +1254,16 @@
 	farjump UnknownScript_0xa0970
 
 UnknownScript_0xbd8cf:
-	displaylocation ROUTE_36, $2
+	landmarktotext ROUTE_36, $2
 	farjump UnknownScript_0xa0a73
 
 UnknownScript_0xbd8d6:
-	displaylocation ROUTE_36, $2
+	landmarktotext ROUTE_36, $2
 	farjump UnknownScript_0xa0ac5
 
 AlanPhoneScript2:
 	trainertotext SCHOOLBOY, ALAN1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ALAN
 	iftrue UnknownScript_0xbd915
 	checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
@@ -1270,15 +1270,15 @@
 	iftrue UnknownScript_0xbd915
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue UnknownScript_0xbd915
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd91c
 	checkevent EVENT_ALAN_GAVE_FIRE_STONE
 	iftrue UnknownScript_0xbd90d
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd926
 
 UnknownScript_0xbd90d:
-	farscall UnknownScript_0xbde4b
+	farscall PhoneScript_Random11
 	if_equal $0, UnknownScript_0xbd926
 
 UnknownScript_0xbd915:
@@ -1288,13 +1288,13 @@
 	setflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 
 UnknownScript_0xbd91c:
-	displaylocation ROUTE_36, $2
+	landmarktotext ROUTE_36, $2
 	setflag ENGINE_ALAN
 	farjump UnknownScript_0xa0376
 
 UnknownScript_0xbd926:
 	setflag ENGINE_ALAN_HAS_FIRE_STONE
-	displaylocation ROUTE_36, $2
+	landmarktotext ROUTE_36, $2
 	farjump UnknownScript_0xa05e6
 
 ; Dana
@@ -1303,7 +1303,7 @@
 	trainertotext LASS, DANA1, $0
 	checkflag ENGINE_DANA
 	iftrue UnknownScript_0xbd959
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_DANA_THURSDAY_NIGHT
 	iftrue UnknownScript_0xbd955
 	checkflag ENGINE_DANA_HAS_THUNDERSTONE
@@ -1317,16 +1317,16 @@
 	farjump UnknownScript_0xa0978
 
 UnknownScript_0xbd959:
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	farjump UnknownScript_0xa0a78
 
 UnknownScript_0xbd960:
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	farjump UnknownScript_0xa0acd
 
 DanaPhoneScript2:
 	trainertotext LASS, DANA1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_DANA
 	iftrue UnknownScript_0xbd99f
 	checkflag ENGINE_DANA_THURSDAY_NIGHT
@@ -1333,19 +1333,19 @@
 	iftrue UnknownScript_0xbd99f
 	checkflag ENGINE_DANA_HAS_THUNDERSTONE
 	iftrue UnknownScript_0xbd99f
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd9ae
 	checkevent EVENT_DANA_GAVE_THUNDERSTONE
 	iftrue UnknownScript_0xbd997
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbd9bc
 
 UnknownScript_0xbd997:
-	farscall UnknownScript_0xbde4b
+	farscall PhoneScript_Random11
 	if_equal $0, UnknownScript_0xbd9bc
 
 UnknownScript_0xbd99f:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbd9b8
 	farjump UnknownScript_0xa0017
 
@@ -1353,7 +1353,7 @@
 	setflag ENGINE_DANA_THURSDAY_NIGHT
 
 UnknownScript_0xbd9ae:
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	setflag ENGINE_DANA
 	farjump UnknownScript_0xa037e
 
@@ -1362,7 +1362,7 @@
 
 UnknownScript_0xbd9bc:
 	setflag ENGINE_DANA_HAS_THUNDERSTONE
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	farjump UnknownScript_0xa061e
 
 ; Chad
@@ -1371,7 +1371,7 @@
 	trainertotext SCHOOLBOY, CHAD1, $0
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0xbd9e9
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_CHAD_FRIDAY_MORNING
 	iftrue UnknownScript_0xbd9e5
 	checkcode VAR_WEEKDAY
@@ -1383,23 +1383,23 @@
 	farjump UnknownScript_0xa0980
 
 UnknownScript_0xbd9e9:
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	farjump UnknownScript_0xa0a7d
 
 ChadPhoneScript2:
 	trainertotext SCHOOLBOY, CHAD1, $0
-	farscall UnknownScript_0xbe1b6
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_GreetPhone_Male
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbda31
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0xbda14
 	checkflag ENGINE_CHAD_FRIDAY_MORNING
 	iftrue UnknownScript_0xbda14
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbda23
 
 UnknownScript_0xbda14:
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbda2d
 	farjump UnknownScript_0xa0000
 
@@ -1407,7 +1407,7 @@
 	setflag ENGINE_CHAD_FRIDAY_MORNING
 
 UnknownScript_0xbda23:
-	displaylocation ROUTE_38, $2
+	landmarktotext ROUTE_38, $2
 	setflag ENGINE_CHAD
 	farjump UnknownScript_0xa0376
 
@@ -1419,10 +1419,10 @@
 
 DerekPhoneScript1:
 	trainertotext POKEFANM, DEREK1, $0
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue UnknownScript_0xbda67
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbda5f
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbda5f
@@ -1438,13 +1438,13 @@
 	farjump UnknownScript_0xa05a4
 
 UnknownScript_0xbda67:
-	displaylocation ROUTE_39, $2
+	landmarktotext ROUTE_39, $2
 	farjump UnknownScript_0xa0ad5
 
 DerekPhoneScript2:
 	trainertotext POKEFANM, DEREK1, $0
-	farscall UnknownScript_0xbe1b6
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_GreetPhone_Male
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbda92
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue UnknownScript_0xbda92
@@ -1454,7 +1454,7 @@
 	if_equal SATURDAY, UnknownScript_0xbda9e
 
 UnknownScript_0xbda92:
-	farscall UnknownScript_0xbde45
+	farscall PhoneScript_Random4
 	if_equal $0, UnknownScript_0xbdaa2
 	farjump UnknownScript_0xa0000
 
@@ -1463,7 +1463,7 @@
 
 UnknownScript_0xbdaa2:
 	setflag ENGINE_DEREK_HAS_NUGGET
-	displaylocation ROUTE_39, $2
+	landmarktotext ROUTE_39, $2
 	farjump UnknownScript_0xa05e6
 
 TullyPhoneScript1:
@@ -1470,7 +1470,7 @@
 	trainertotext FISHER, TULLY1, $0
 	checkflag ENGINE_TULLY
 	iftrue UnknownScript_0xbdad5
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_TULLY_SUNDAY_NIGHT
 	iftrue UnknownScript_0xbdad1
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
@@ -1484,16 +1484,16 @@
 	farjump UnknownScript_0xa0990
 
 UnknownScript_0xbdad5:
-	displaylocation ROUTE_42, $2
+	landmarktotext ROUTE_42, $2
 	farjump UnknownScript_0xa0a82
 
 UnknownScript_0xbdadc:
-	displaylocation ROUTE_42, $2
+	landmarktotext ROUTE_42, $2
 	farjump UnknownScript_0xa0add
 
 TullyPhoneScript2:
 	trainertotext FISHER, TULLY1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_TULLY
 	iftrue UnknownScript_0xbdb1b
 	checkflag ENGINE_TULLY_SUNDAY_NIGHT
@@ -1500,15 +1500,15 @@
 	iftrue UnknownScript_0xbdb1b
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue UnknownScript_0xbdb1b
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbdb22
 	checkevent EVENT_TULLY_GAVE_WATER_STONE
 	iftrue UnknownScript_0xbdb13
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdb2c
 
 UnknownScript_0xbdb13:
-	farscall UnknownScript_0xbde4b
+	farscall PhoneScript_Random11
 	if_equal $0, UnknownScript_0xbdb2c
 
 UnknownScript_0xbdb1b:
@@ -1518,13 +1518,13 @@
 	setflag ENGINE_TULLY_SUNDAY_NIGHT
 
 UnknownScript_0xbdb22:
-	displaylocation ROUTE_42, $2
+	landmarktotext ROUTE_42, $2
 	setflag ENGINE_TULLY
 	farjump UnknownScript_0xa0376
 
 UnknownScript_0xbdb2c:
 	setflag ENGINE_TULLY_HAS_WATER_STONE
-	displaylocation ROUTE_42, $2
+	landmarktotext ROUTE_42, $2
 	farjump UnknownScript_0xa05e6
 
 BrentPhoneScript1:
@@ -1531,7 +1531,7 @@
 	trainertotext POKEMANIAC, BRENT1, $0
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0xbdb59
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_BRENT_MONDAY_MORNING
 	iftrue UnknownScript_0xbdb55
 	checkcode VAR_WEEKDAY
@@ -1543,19 +1543,19 @@
 	farjump UnknownScript_0xa0998
 
 UnknownScript_0xbdb59:
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	farjump UnknownScript_0xa0a87
 
 BrentPhoneScript2:
 	trainertotext POKEMANIAC, BRENT1, $0
-	farscall UnknownScript_0xbe1b6
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_GreetPhone_Male
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdb95
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0xbdb84
 	checkflag ENGINE_BRENT_MONDAY_MORNING
 	iftrue UnknownScript_0xbdb84
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdb8b
 
 UnknownScript_0xbdb84:
@@ -1565,7 +1565,7 @@
 	setflag ENGINE_BRENT_MONDAY_MORNING
 
 UnknownScript_0xbdb8b:
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	setflag ENGINE_BRENT
 	farjump UnknownScript_0xa0376
 
@@ -1576,7 +1576,7 @@
 	trainertotext PICNICKER, TIFFANY3, $0
 	checkflag ENGINE_TIFFANY
 	iftrue UnknownScript_0xbdbc2
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 	iftrue UnknownScript_0xbdbbe
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
@@ -1590,18 +1590,18 @@
 	farjump UnknownScript_0xa09a0
 
 UnknownScript_0xbdbc2:
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	farjump UnknownScript_0xa0a8c
 
 UnknownScript_0xbdbc9:
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	farjump UnknownScript_0xa0ae5
 
 TiffanyPhoneScript2:
 	trainertotext PICNICKER, TIFFANY3, $0
-	farscall UnknownScript_0xbde45
+	farscall PhoneScript_Random4
 	if_equal $0, UnknownScript_0xbdc21
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_TIFFANY
 	iftrue UnknownScript_0xbdc10
 	checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
@@ -1608,15 +1608,15 @@
 	iftrue UnknownScript_0xbdc10
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue UnknownScript_0xbdc10
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbdc17
 	checkevent EVENT_TIFFANY_GAVE_PINK_BOW
 	iftrue UnknownScript_0xbdc08
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdc69
 
 UnknownScript_0xbdc08:
-	farscall UnknownScript_0xbde4b
+	farscall PhoneScript_Random11
 	if_equal $0, UnknownScript_0xbdc69
 
 UnknownScript_0xbdc10:
@@ -1626,7 +1626,7 @@
 	setflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 
 UnknownScript_0xbdc17:
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	setflag ENGINE_TIFFANY
 	farjump UnknownScript_0xa037e
 
@@ -1668,7 +1668,7 @@
 
 UnknownScript_0xbdc69:
 	setflag ENGINE_TIFFANY_HAS_PINK_BOW
-	displaylocation ROUTE_43, $2
+	landmarktotext ROUTE_43, $2
 	farjump UnknownScript_0xa061e
 
 ; Vance
@@ -1677,7 +1677,7 @@
 	trainertotext BIRD_KEEPER, VANCE1, $0
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0xbdc96
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbdc92
 	checkcode VAR_WEEKDAY
@@ -1689,17 +1689,17 @@
 	farjump UnknownScript_0xa09a8
 
 UnknownScript_0xbdc96:
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	farjump UnknownScript_0xa0a91
 
 VancePhoneScript2:
 	trainertotext BIRD_KEEPER, VANCE1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0xbdcbd
 	checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
 	iftrue UnknownScript_0xbdcbd
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbdcc4
 	if_equal $1, UnknownScript_0xbdcc4
 
@@ -1710,7 +1710,7 @@
 	setflag ENGINE_VANCE_WEDNESDAY_NIGHT
 
 UnknownScript_0xbdcc4:
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	setflag ENGINE_VANCE
 	farjump UnknownScript_0xa0376
 
@@ -1718,7 +1718,7 @@
 	trainertotext FISHER, WILTON1, $0
 	checkflag ENGINE_WILTON
 	iftrue UnknownScript_0xbdcf7
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_WILTON_THRUSDAY_MORNING
 	iftrue UnknownScript_0xbdcf3
 	checkflag ENGINE_WILTON_HAS_ITEM
@@ -1732,16 +1732,16 @@
 	farjump UnknownScript_0xa09b0
 
 UnknownScript_0xbdcf7:
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	farjump UnknownScript_0xa0a96
 
 UnknownScript_0xbdcfe:
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	farjump UnknownScript_0xa0aed
 
 WiltonPhoneScript2:
 	trainertotext FISHER, WILTON1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_WILTON
 	iftrue UnknownScript_0xbdd2f
 	checkflag ENGINE_WILTON_THRUSDAY_MORNING
@@ -1748,9 +1748,9 @@
 	iftrue UnknownScript_0xbdd2f
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue UnknownScript_0xbdd2f
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdd36
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbdd40
 
 UnknownScript_0xbdd2f:
@@ -1760,13 +1760,13 @@
 	setflag ENGINE_WILTON_THRUSDAY_MORNING
 
 UnknownScript_0xbdd36:
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	setflag ENGINE_WILTON
 	farjump UnknownScript_0xa0376
 
 UnknownScript_0xbdd40:
 	setflag ENGINE_WILTON_HAS_ITEM
-	displaylocation ROUTE_44, $2
+	landmarktotext ROUTE_44, $2
 	clearevent EVENT_WILTON_HAS_ULTRA_BALL
 	clearevent EVENT_WILTON_HAS_GREAT_BALL
 	clearevent EVENT_WILTON_HAS_POKE_BALL
@@ -1794,12 +1794,12 @@
 
 KenjiPhoneScript1:
 	trainertotext BLACKBELT_T, KENJI3, $0
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	farjump UnknownScript_0xa09ee
 
 KenjiPhoneScript2:
 	trainertotext BLACKBELT_T, KENJI3, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	farjump UnknownScript_0xa064c
 
 ; Parry
@@ -1808,7 +1808,7 @@
 	trainertotext HIKER, PARRY1, $0
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0xbddac
-	farscall UnknownScript_0xbde4e
+	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbdda8
 	checkcode VAR_WEEKDAY
@@ -1820,17 +1820,17 @@
 	farjump UnknownScript_0xa09b8
 
 UnknownScript_0xbddac:
-	displaylocation ROUTE_45, $2
+	landmarktotext ROUTE_45, $2
 	farjump UnknownScript_0xa0a9b
 
 ParryPhoneScript2:
 	trainertotext HIKER, PARRY1, $0
-	farscall UnknownScript_0xbe1b6
+	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0xbddd3
 	checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
 	iftrue UnknownScript_0xbddd3
-	farscall UnknownScript_0xbde3f
+	farscall PhoneScript_Random2
 	if_equal $0, UnknownScript_0xbddda
 	if_equal $1, UnknownScript_0xbddda
 
@@ -1841,7 +1841,7 @@
 	setflag ENGINE_PARRY_FRIDAY_AFTERNOON
 
 UnknownScript_0xbddda:
-	displaylocation ROUTE_45, $2
+	landmarktotext ROUTE_45, $2
 	setflag ENGINE_PARRY
 	farjump UnknownScript_0xa0376
 
@@ -1851,7 +1851,7 @@
 	trainertotext PICNICKER, ERIN1, $0
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0xbde07
-	farscall UnknownScript_0xbe0b6
+	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_ERIN_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbde03
 	checkcode VAR_WEEKDAY
@@ -1863,17 +1863,17 @@
 	farjump UnknownScript_0xa09c0
 
 UnknownScript_0xbde07:
-	displaylocation ROUTE_46, $2
+	landmarktotext ROUTE_46, $2
 	farjump UnknownScript_0xa0aa0
 
 ErinPhoneScript2:
 	trainertotext PICNICKER, ERIN1, $0
-	farscall UnknownScript_0xbe41e
+	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0xbde2e
 	checkflag ENGINE_ERIN_SATURDAY_NIGHT
 	iftrue UnknownScript_0xbde2e
-	farscall UnknownScript_0xbde42
+	farscall PhoneScript_Random3
 	if_equal $0, UnknownScript_0xbde35
 	if_equal $1, UnknownScript_0xbde35
 
@@ -1884,35 +1884,35 @@
 	setflag ENGINE_ERIN_SATURDAY_NIGHT
 
 UnknownScript_0xbde35:
-	displaylocation ROUTE_46, $2
+	landmarktotext ROUTE_46, $2
 	setflag ENGINE_ERIN
 	farjump UnknownScript_0xa037e
 
-UnknownScript_0xbde3f:
-	random $2
+PhoneScript_Random2:
+	random 2
 	end
 
-UnknownScript_0xbde42:
-	random $3
+PhoneScript_Random3:
+	random 3
 	end
 
-UnknownScript_0xbde45:
-	random $4
+PhoneScript_Random4:
+	random 4
 	end
 
-UnknownScript_0xbde48:
-	random $5
+PhoneScript_Random5:
+	random 5
 	end
 
-UnknownScript_0xbde4b:
-	random $b
+PhoneScript_Random11:
+	random 11
 	end
 
-UnknownScript_0xbde4e:
+PhoneScript_AnswerPhone_Male:
 	checkday
-	iftrue UnknownScript_0xbdf22
+	iftrue PhoneScript_AnswerPhone_Male_Day
 	checknite
-	iftrue UnknownScript_0xbdfec
+	iftrue PhoneScript_AnswerPhone_Male_Nite
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -1937,105 +1937,105 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4dc5
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b5073
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b5270
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b55ae
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b589a
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5a3b
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5c10
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b5f7a
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b60f5
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b638c
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b6454
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b659d
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b67e2
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b69a8
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6b39
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6c96
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7019
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b71d5
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b730b
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b73c7
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbdf22:
+PhoneScript_AnswerPhone_Male_Day:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2060,105 +2060,105 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4ded
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b509b
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b52a5
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b55da
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b58c2
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5a74
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5c63
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b5f9e
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b611b
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b63a8
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b647e
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b65c7
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b680e
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b69d2
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6b65
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6cc6
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7057
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b71fc
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b7331
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b73ef
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbdfec:
+PhoneScript_AnswerPhone_Male_Nite:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2183,109 +2183,109 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4e16
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b50c2
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b52cc
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b55fc
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b58ea
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5a9f
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5cb6
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b5fc9
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b6149
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b63c4
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b64a8
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b65e3
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b6836
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b69f8
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6b92
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6cf6
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7092
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b722a
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b7357
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b7417
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe0b6:
+PhoneScript_AnswerPhone_Female:
 	checkday
-	iftrue UnknownScript_0xbe112
+	iftrue PhoneScript_AnswerPhone_Female_Day
 	checknite
-	iftrue UnknownScript_0xbe164
+	iftrue PhoneScript_AnswerPhone_Female_Nite
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2298,45 +2298,45 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b4f21
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b53f7
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b5702
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5d9f
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b626a
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b66c8
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6e7c
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b751a
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe112:
+PhoneScript_AnswerPhone_Female_Day:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2349,45 +2349,45 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b4f4d
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b5424
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b572e
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5dcc
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b6296
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b66ec
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6ea6
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b7548
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe164:
+PhoneScript_AnswerPhone_Female_Nite:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2400,49 +2400,49 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b4f75
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b5446
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b575a
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5df8
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b62c5
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b6713
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6ec9
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b756f
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe1b6:
+PhoneScript_GreetPhone_Male:
 	checkday
-	iftrue UnknownScript_0xbe28a
+	iftrue PhoneScript_GreetPhone_Male_Day
 	checknite
-	iftrue UnknownScript_0xbe354
+	iftrue PhoneScript_GreetPhone_Male_Nite
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2467,105 +2467,105 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4e3e
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b50e9
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b5301
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b5628
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b5912
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5ad8
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5d09
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b5ff6
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b616e
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b63e3
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b64d2
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b660d
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b6862
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b6a22
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6bb9
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6d26
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b70e7
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b725c
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b737f
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b743f
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe28a:
+PhoneScript_GreetPhone_Male_Day:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2590,105 +2590,105 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4e72
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b511a
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b5335
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b564c
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b5948
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5b0b
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5d21
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b6017
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b618f
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b6407
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b6506
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b6624
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b6890
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b6a56
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6bef
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6d57
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7112
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b7283
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b7397
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b746f
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe354:
+PhoneScript_GreetPhone_Male_Nite:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2713,109 +2713,109 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4e9e
-	keeptextopen
+	buttonsound
 	end
 
 .Huey:
 	farwritetext UnknownText_0x1b5154
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b535f
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b5670
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b597c
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5b37
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5d39
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b6041
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b61bd
-	keeptextopen
+	buttonsound
 	end
 
 .Irwin:
 	farwritetext UnknownText_0x1b642c
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b6539
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b663b
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b68ba
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b6a8b
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6c23
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6d88
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7132
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b72a5
-	keeptextopen
+	buttonsound
 	end
 
 .Kenji:
 	farwritetext UnknownText_0x1b73af
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b749b
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe41e:
+PhoneScript_GreetPhone_Female:
 	checkday
-	iftrue UnknownScript_0xbe47a
+	iftrue PhoneScript_GreetPhone_Female_Day
 	checknite
-	iftrue UnknownScript_0xbe4cc
+	iftrue PhoneScript_GreetPhone_Female_Nite
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2828,45 +2828,45 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b4fa1
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b5472
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b5786
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5e25
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b62f1
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b6738
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6ef3
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b758f
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe47a:
+PhoneScript_GreetPhone_Female_Day:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2879,45 +2879,45 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b4fda
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b54a6
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b57b7
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5e59
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b630e
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b6757
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6f1c
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b75ac
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe4cc:
+PhoneScript_GreetPhone_Female_Nite:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2930,45 +2930,45 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b5004
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b54d4
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b57e8
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5e8e
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b6331
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b6776
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6f37
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b75c9
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe51e:
+PhoneScript_Generic_Male:
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
@@ -2990,95 +2990,95 @@
 
 .Jack:
 	farwritetext UnknownText_0x1b4ecd
-	keeptextopen
+	buttonsound
 	end
 
 .Unknown:
 	farwritetext UnknownText_0x1b518b
-	keeptextopen
+	buttonsound
 	end
 
 .Gaven:
 	farwritetext UnknownText_0x1b5393
-	keeptextopen
+	buttonsound
 	end
 
 .Jose:
 	farwritetext UnknownText_0x1b5694
-	keeptextopen
+	buttonsound
 	end
 
 .Joey:
 	farwritetext UnknownText_0x1b59b2
-	keeptextopen
+	buttonsound
 	end
 
 .Wade:
 	farwritetext UnknownText_0x1b5b68
-	keeptextopen
+	buttonsound
 	end
 
 .Ralph:
 	farwritetext UnknownText_0x1b5d51
-	keeptextopen
+	buttonsound
 	end
 
 .Anthony:
 	farwritetext UnknownText_0x1b606f
-	keeptextopen
+	buttonsound
 	end
 
 .Todd:
 	farwritetext UnknownText_0x1b61f2
-	keeptextopen
+	buttonsound
 	end
 
 .Arnie:
 	farwritetext UnknownText_0x1b656c
-	keeptextopen
+	buttonsound
 	end
 
 .Alan:
 	farwritetext UnknownText_0x1b6652
-	keeptextopen
+	buttonsound
 	end
 
 .Chad:
 	farwritetext UnknownText_0x1b68e8
-	keeptextopen
+	buttonsound
 	end
 
 .Derek:
 	farwritetext UnknownText_0x1b6ac2
-	keeptextopen
+	buttonsound
 	end
 
 .Tully:
 	farwritetext UnknownText_0x1b6c56
-	keeptextopen
+	buttonsound
 	end
 
 .Brent:
 	farwritetext UnknownText_0x1b6db9
-	keeptextopen
+	buttonsound
 	end
 
 .Vance:
 	farwritetext UnknownText_0x1b7161
-	keeptextopen
+	buttonsound
 	end
 
 .Wilton:
 	farwritetext UnknownText_0x1b72d0
-	keeptextopen
+	buttonsound
 	end
 
 .Parry:
 	farwritetext UnknownText_0x1b74c8
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe5d0:
+PhoneScript_Generic_Female:
 	checkcode VAR_CALLERID
 	if_equal PHONE_POKEFAN_BEVERLY, .Beverly
 	if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -3091,59 +3091,59 @@
 
 .Beverly:
 	farwritetext UnknownText_0x1b502b
-	keeptextopen
+	buttonsound
 	end
 
 .Beth:
 	farwritetext UnknownText_0x1b5510
-	keeptextopen
+	buttonsound
 	end
 
 .Reena:
 	farwritetext UnknownText_0x1b5819
-	keeptextopen
+	buttonsound
 	end
 
 .Liz:
 	farwritetext UnknownText_0x1b5ebe
-	keeptextopen
+	buttonsound
 	end
 
 .Gina:
 	farwritetext UnknownText_0x1b6352
-	keeptextopen
+	buttonsound
 	end
 
 .Dana:
 	farwritetext UnknownText_0x1b6795
-	keeptextopen
+	buttonsound
 	end
 
 .Tiffany:
 	farwritetext UnknownText_0x1b6f60
-	keeptextopen
+	buttonsound
 	end
 
 .Erin:
 	farwritetext UnknownText_0x1b75e5
-	keeptextopen
+	buttonsound
 	end
 
-UnknownScript_0xbe622:
+PhoneScript_MonFlavorText:
 	special RandomPhoneMon
-	farscall UnknownScript_0xbde3f
-	if_equal $0, UnknownScript_0xbe636
+	farscall PhoneScript_Random2
+	if_equal $0, .TooEnergetic
 	farwritetext UnknownText_0x1b518b
-	keeptextopen
-	farjump UnknownScript_0xa0484
+	buttonsound
+	farjump PhoneScript_HangupText_Male
 
-UnknownScript_0xbe636:
-	farjump UnknownScript_0xbe63a
+.TooEnergetic:
+	farjump .unnecessary
 
-UnknownScript_0xbe63a:
+.unnecessary:
 	farwritetext UnknownText_0x1b522b
-	keeptextopen
-	farjump UnknownScript_0xa0484
+	buttonsound
+	farjump PhoneScript_HangupText_Male
 ; be643
 
 
--- /dev/null
+++ b/engine/player_movement.asm
@@ -1,0 +1,846 @@
+DoPlayerMovement:: ; 80000
+
+	call .GetDPad
+	ld a, movement_step_sleep_1
+	ld [MovementAnimation], a
+	xor a
+	ld [wd041], a
+	call .TranslateIntoMovement
+	ld c, a
+	ld a, [MovementAnimation]
+	ld [wPlayerNextMovement], a
+	ret
+
+.GetDPad
+
+	ld a, [hJoyDown]
+	ld [CurInput], a
+
+; Standing downhill instead moves down.
+
+	ld hl, BikeFlags
+	bit 2, [hl] ; downhill
+	ret z
+
+	ld c, a
+	and D_PAD
+	ret nz
+
+	ld a, c
+	or D_DOWN
+	ld [CurInput], a
+	ret
+; 8002d
+
+.TranslateIntoMovement
+	ld a, [PlayerState]
+	cp PLAYER_NORMAL
+	jr z, .Normal
+	cp PLAYER_SURF
+	jr z, .Surf
+	cp PLAYER_SURF_PIKA
+	jr z, .Surf
+	cp PLAYER_BIKE
+	jr z, .Normal
+	cp PLAYER_SLIP
+	jr z, .Ice
+
+.Normal
+	call .CheckForced
+	call .GetAction
+	call .CheckTile
+	ret c
+	call .CheckTurning
+	ret c
+	call .TryStep
+	ret c
+	call .TryJump
+	ret c
+	call .CheckWarp
+	ret c
+	jr .NotMoving
+
+.Surf
+	call .CheckForced
+	call .GetAction
+	call .CheckTile
+	ret c
+	call .CheckTurning
+	ret c
+	call .TrySurf
+	ret c
+	jr .NotMoving
+
+.Ice
+	call .CheckForced
+	call .GetAction
+	call .CheckTile
+	ret c
+	call .CheckTurning
+	ret c
+	call .TryStep
+	ret c
+	call .TryJump
+	ret c
+	call .CheckWarp
+	ret c
+	ld a, [WalkingDirection]
+	cp STANDING
+	jr z, .HitWall
+	call .BumpSound
+.HitWall
+	call .StandInPlace
+	xor a
+	ret
+
+.NotMoving
+	ld a, [WalkingDirection]
+	cp STANDING
+	jr z, .Standing
+
+; Walking into an edge warp won't bump.
+	ld a, [EngineBuffer4]
+	and a
+	jr nz, .CantMove
+	call .BumpSound
+.CantMove
+	call ._WalkInPlace
+	xor a
+	ret
+
+.Standing
+	call .StandInPlace
+	xor a
+	ret
+; 800b7
+
+.CheckTile: ; 800b7
+; Tiles such as waterfalls and warps move the player
+; in a given direction, overriding input.
+
+	ld a, [PlayerNextTile]
+	ld c, a
+	call CheckWhirlpoolTile
+	jr c, .asm_800c4
+	ld a, 3
+	scf
+	ret
+
+.asm_800c4
+	and $f0
+	cp $30 ; moving water
+	jr z, .water
+	cp $40 ; moving land 1
+	jr z, .land1
+	cp $50 ; moving land 2
+	jr z, .land2
+	cp $70 ; warps
+	jr z, .warps
+	jr .asm_8013c
+
+.water
+	ld a, c
+	and 3
+	ld c, a
+	ld b, 0
+	ld hl, .water_table
+	add hl, bc
+	ld a, [hl]
+	ld [WalkingDirection], a
+	jr .asm_8013e
+
+.water_table
+	db RIGHT
+	db LEFT
+	db UP
+	db DOWN
+
+.land1
+	ld a, c
+	and 7
+	ld c, a
+	ld b, 0
+	ld hl, .land1_table
+	add hl, bc
+	ld a, [hl]
+	cp STANDING
+	jr z, .asm_8013c
+	ld [WalkingDirection], a
+	jr .asm_8013e
+
+.land1_table
+	db STANDING
+	db RIGHT
+	db LEFT
+	db UP
+	db DOWN
+	db STANDING
+	db STANDING
+	db STANDING
+
+.land2
+	ld a, c
+	and 7
+	ld c, a
+	ld b, 0
+	ld hl, .land2_table
+	add hl, bc
+	ld a, [hl]
+	cp STANDING
+	jr z, .asm_8013c
+	ld [WalkingDirection], a
+	jr .asm_8013e
+
+.land2_table
+	db RIGHT
+	db LEFT
+	db UP
+	db DOWN
+	db STANDING
+	db STANDING
+	db STANDING
+	db STANDING
+
+.warps
+	ld a, c
+	cp $71 ; door
+	jr z, .down
+	cp $79
+	jr z, .down
+	cp $7a ; stairs
+	jr z, .down
+	cp $7b ; cave
+	jr nz, .asm_8013c
+
+.down
+	ld a, DOWN
+	ld [WalkingDirection], a
+	jr .asm_8013e
+
+.asm_8013c
+	xor a
+	ret
+
+.asm_8013e
+	ld a, STEP_WALK
+	call .DoStep
+	ld a, 5
+	scf
+	ret
+; 80147
+
+.CheckTurning: ; 80147
+; If the player is turning, change direction first. This also lets
+; the player change facing without moving by tapping a direction.
+
+	ld a, [wd04e]
+	cp 0
+	jr nz, .asm_80169
+	ld a, [WalkingDirection]
+	cp STANDING
+	jr z, .asm_80169
+
+	ld e, a
+	ld a, [PlayerDirection]
+	rrca
+	rrca
+	and 3
+	cp e
+	jr z, .asm_80169
+
+	ld a, STEP_TURN
+	call .DoStep
+	ld a, 2
+	scf
+	ret
+
+.asm_80169
+	xor a
+	ret
+; 8016b
+
+.TryStep: ; 8016b
+
+; Surfing actually calls .TrySurf directly instead of passing through here.
+	ld a, [PlayerState]
+	cp PLAYER_SURF
+	jr z, .TrySurf
+	cp PLAYER_SURF_PIKA
+	jr z, .TrySurf
+
+	call .CheckLandPerms
+	jr c, .bump
+
+	call .CheckNPC
+	and a
+	jr z, .bump
+	cp 2
+	jr z, .bump
+
+	ld a, [PlayerNextTile]
+	call CheckIceTile
+	jr nc, .ice
+
+; Downhill riding is slower when not moving down.
+	call .BikeCheck
+	jr nz, .walk
+
+	ld hl, BikeFlags
+	bit 2, [hl] ; downhill
+	jr z, .fast
+
+	ld a, [WalkingDirection]
+	cp DOWN
+	jr z, .fast
+
+	ld a, STEP_WALK
+	call .DoStep
+	scf
+	ret
+
+.fast
+	ld a, STEP_BIKE
+	call .DoStep
+	scf
+	ret
+
+.walk
+	ld a, STEP_WALK
+	call .DoStep
+	scf
+	ret
+
+.ice
+	ld a, STEP_ICE
+	call .DoStep
+	scf
+	ret
+
+; unused?
+	xor a
+	ret
+
+.bump
+	xor a
+	ret
+; 801c0
+
+.TrySurf: ; 801c0
+
+	call .CheckSurfPerms
+	ld [wd040], a
+	jr c, .surf_bump
+
+	call .CheckNPC
+	ld [wd03f], a
+	and a
+	jr z, .surf_bump
+	cp 2
+	jr z, .surf_bump
+
+	ld a, [wd040]
+	and a
+	jr nz, .ExitWater
+
+	ld a, STEP_WALK
+	call .DoStep
+	scf
+	ret
+
+.ExitWater
+	call .GetOutOfWater
+	call PlayMapMusic
+	ld a, STEP_WALK
+	call .DoStep
+	ld a, 6
+	scf
+	ret
+
+.surf_bump
+	xor a
+	ret
+; 801f3
+
+.TryJump: ; 801f3
+	ld a, [PlayerNextTile]
+	ld e, a
+	and $f0
+	cp $a0 ; ledge
+	jr nz, .DontJump
+
+	ld a, e
+	and 7
+	ld e, a
+	ld d, 0
+	ld hl, .data_8021e
+	add hl, de
+	ld a, [FacingDirection]
+	and [hl]
+	jr z, .DontJump
+
+	ld de, SFX_JUMP_OVER_LEDGE
+	call PlaySFX
+	ld a, STEP_LEDGE
+	call .DoStep
+	ld a, 7
+	scf
+	ret
+
+.DontJump
+	xor a
+	ret
+
+.data_8021e
+	db FACE_RIGHT
+	db FACE_LEFT
+	db FACE_UP
+	db FACE_DOWN
+	db FACE_RIGHT | FACE_DOWN
+	db FACE_DOWN | FACE_LEFT
+	db FACE_UP | FACE_RIGHT
+	db FACE_UP | FACE_LEFT
+; 80226
+
+.CheckWarp: ; 80226
+
+; Bug: Since no case is made for STANDING here, it will check
+; [.edgewarps + $ff]. This resolves to $3e at $8035a.
+; This causes wd041 to be nonzero when standing on tile $3e,
+; making bumps silent.
+
+	ld a, [WalkingDirection]
+	ld e, a
+	ld d, 0
+	ld hl, .EdgeWarps
+	add hl, de
+	ld a, [PlayerNextTile]
+	cp [hl]
+	jr nz, .not_warp
+
+	ld a, 1
+	ld [wd041], a
+	ld a, [WalkingDirection]
+	cp STANDING
+	jr z, .not_warp
+
+	ld e, a
+	ld a, [PlayerDirection]
+	rrca
+	rrca
+	and 3
+	cp e
+	jr nz, .not_warp
+	call WarpCheck
+	jr nc, .not_warp
+
+	call .StandInPlace
+	scf
+	ld a, 1
+	ret
+
+.not_warp
+	xor a
+	ret
+
+.EdgeWarps
+	db $70, $78, $76, $7e
+; 8025f
+
+.DoStep: ; 8025f
+	ld e, a
+	ld d, 0
+	ld hl, .Steps
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	ld a, [WalkingDirection]
+	ld e, a
+	cp STANDING
+	jp z, .StandInPlace
+
+	add hl, de
+	ld a, [hl]
+	ld [MovementAnimation], a
+
+	ld hl, .InPlace
+	add hl, de
+	ld a, [hl]
+	ld [wd04e], a
+
+	ld a, 4
+	ret
+
+.Steps
+	dw .SlowStep
+	dw .NormalStep
+	dw .FastStep
+	dw .JumpStep
+	dw .SlideStep
+	dw .TurningStep
+	dw .BackJumpStep
+	dw .InPlace
+
+.SlowStep
+	slow_step_down
+	slow_step_up
+	slow_step_left
+	slow_step_right
+.NormalStep
+	step_down
+	step_up
+	step_left
+	step_right
+.FastStep
+	big_step_down
+	big_step_up
+	big_step_left
+	big_step_right
+.JumpStep
+	jump_step_down
+	jump_step_up
+	jump_step_left
+	jump_step_right
+.SlideStep
+	fast_slide_step_down
+	fast_slide_step_up
+	fast_slide_step_left
+	fast_slide_step_right
+.BackJumpStep
+	jump_step_up
+	jump_step_down
+	jump_step_right
+	jump_step_left
+.TurningStep
+	turn_step_down
+	turn_step_up
+	turn_step_left
+	turn_step_right
+.InPlace
+	db $80 + movement_turn_head_down
+	db $80 + movement_turn_head_up
+	db $80 + movement_turn_head_left
+	db $80 + movement_turn_head_right
+; 802b3
+
+.StandInPlace: ; 802b3
+	ld a, 0
+	ld [wd04e], a
+	ld a, movement_step_sleep_1
+	ld [MovementAnimation], a
+	xor a
+	ret
+; 802bf
+
+._WalkInPlace: ; 802bf
+	ld a, 0
+	ld [wd04e], a
+	ld a, movement_step_bump
+	ld [MovementAnimation], a
+	xor a
+	ret
+; 802cb
+
+.CheckForced: ; 802cb
+; When sliding on ice, input is forced to remain in the same direction.
+
+	call CheckStandingOnIce
+	ret nc
+
+	ld a, [wd04e]
+	cp 0
+	ret z
+
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .forced_dpad
+	add hl, de
+	ld a, [CurInput]
+	and BUTTONS
+	or [hl]
+	ld [CurInput], a
+	ret
+
+.forced_dpad
+	db D_DOWN, D_UP, D_LEFT, D_RIGHT
+; 802ec
+
+.GetAction: ; 802ec
+; Poll player input and update movement info.
+
+	ld hl, .table
+	ld de, .table2 - .table1
+	ld a, [CurInput]
+	bit D_DOWN_F, a
+	jr nz, .d_down
+	bit D_UP_F, a
+	jr nz, .d_up
+	bit D_LEFT_F, a
+	jr nz, .d_left
+	bit D_RIGHT_F, a
+	jr nz, .d_right
+; Standing
+	jr .update
+
+.d_down 	add hl, de
+.d_up   	add hl, de
+.d_left 	add hl, de
+.d_right	add hl, de
+
+.update
+	ld a, [hli]
+	ld [WalkingDirection], a
+	ld a, [hli]
+	ld [FacingDirection], a
+	ld a, [hli]
+	ld [WalkingX], a
+	ld a, [hli]
+	ld [WalkingY], a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	ld [WalkingTile], a
+	ret
+
+.table
+; struct:
+;	walk direction
+;	facing
+;	x movement
+;	y movement
+;	tile collision pointer
+.table1
+	db STANDING, FACE_CURRENT, 0, 0
+	dw PlayerNextTile
+.table2
+	db RIGHT, FACE_RIGHT,  1,  0
+	dw TileRight
+	db LEFT,  FACE_LEFT,  -1,  0
+	dw TileLeft
+	db UP,    FACE_UP,     0, -1
+	dw TileUp
+	db DOWN,  FACE_DOWN,   0,  1
+	dw TileDown
+; 80341
+
+.CheckNPC: ; 80341
+; Returns 0 if there is an NPC in front that you can't move
+; Returns 1 if there is no NPC in front
+; Returns 2 if there is a movable NPC in front
+	ld a, 0
+	ld [hMapObjectIndexBuffer], a
+; Load the next X coordinate into d
+	ld a, [PlayerNextMapX]
+	ld d, a
+	ld a, [WalkingX]
+	add d
+	ld d, a
+; Load the next Y coordinate into e
+	ld a, [PlayerNextMapY]
+	ld e, a
+	ld a, [WalkingY]
+	add e
+	ld e, a
+; Find an object struct with coordinates equal to d,e
+	ld bc, ObjectStructs ; redundant
+	callba IsNPCAtCoord
+	jr nc, .is_npc
+	call .CheckStrengthBoulder
+	jr c, .no_bump
+
+	xor a
+	ret
+
+.is_npc
+	ld a, 1
+	ret
+
+.no_bump
+	ld a, 2
+	ret
+; 8036f
+
+.CheckStrengthBoulder: ; 8036f
+
+	ld hl, BikeFlags
+	bit 0, [hl] ; using strength
+	jr z, .not_boulder
+
+	ld hl, OBJECT_DIRECTION_WALKING
+	add hl, bc
+	ld a, [hl]
+	cp STANDING
+	jr nz, .not_boulder
+
+	ld hl, OBJECT_PALETTE
+	add hl, bc
+	bit 6, [hl]
+	jr z, .not_boulder
+
+	ld hl, OBJECT_FLAGS2
+	add hl, bc
+	set 2, [hl]
+
+	ld a, [WalkingDirection]
+	ld d, a
+	ld hl, OBJECT_RANGE
+	add hl, bc
+	ld a, [hl]
+	and $fc
+	or d
+	ld [hl], a
+
+	scf
+	ret
+
+.not_boulder
+	xor a
+	ret
+; 8039e
+
+.CheckLandPerms: ; 8039e
+; Return 0 if walking onto land and tile permissions allow it.
+; Otherwise, return carry.
+
+	ld a, [TilePermissions]
+	ld d, a
+	ld a, [FacingDirection]
+	and d
+	jr nz, .NotWalkable
+
+	ld a, [WalkingTile]
+	call .CheckWalkable
+	jr c, .NotWalkable
+
+	xor a
+	ret
+
+.NotWalkable
+	scf
+	ret
+; 803b4
+
+.CheckSurfPerms: ; 803b4
+; Return 0 if moving in water, or 1 if moving onto land.
+; Otherwise, return carry.
+
+	ld a, [TilePermissions]
+	ld d, a
+	ld a, [FacingDirection]
+	and d
+	jr nz, .NotSurfable
+
+	ld a, [WalkingTile]
+	call .CheckSurfable
+	jr c, .NotSurfable
+
+	and a
+	ret
+
+.NotSurfable
+	scf
+	ret
+; 803ca
+
+.BikeCheck: ; 803ca
+
+	ld a, [PlayerState]
+	cp PLAYER_BIKE
+	ret z
+	cp PLAYER_SLIP
+	ret
+; 803d3
+
+.CheckWalkable: ; 803d3
+; Return 0 if tile a is land. Otherwise, return carry.
+
+	call GetTileCollision
+	and a ; land
+	ret z
+	scf
+	ret
+; 803da
+
+.CheckSurfable: ; 803da
+; Return 0 if tile a is water, or 1 if land.
+; Otherwise, return carry.
+
+	call GetTileCollision
+	cp 1
+	jr z, .Water
+
+; Can walk back onto land from water.
+	and a
+	jr z, .Land
+
+	jr .Neither
+
+.Water
+	xor a
+	ret
+
+.Land
+	ld a, 1
+	and a
+	ret
+
+.Neither
+	scf
+	ret
+; 803ee
+
+.BumpSound: ; 803ee
+
+	call CheckSFX
+	ret c
+	ld de, SFX_BUMP
+	call PlaySFX
+	ret
+; 803f9
+
+.GetOutOfWater: ; 803f9
+	push bc
+	ld a, PLAYER_NORMAL
+	ld [PlayerState], a
+	call ReplaceKrisSprite ; UpdateSprites
+	pop bc
+	ret
+; 80404
+
+CheckStandingOnIce:: ; 80404
+	ld a, [wd04e]
+	cp 0
+	jr z, .not_ice
+	cp $f0
+	jr z, .not_ice
+	ld a, [PlayerNextTile]
+	call CheckIceTile
+	jr nc, .yep
+	ld a, [PlayerState]
+	cp PLAYER_SLIP
+	jr nz, .not_ice
+
+.yep
+	scf
+	ret
+
+.not_ice
+	and a
+	ret
+; 80422
+
+Function80422:: ; 80422
+	ld hl, wPlayerNextMovement
+	ld a, movement_step_sleep_1
+	cp [hl]
+	ret z
+
+	ld [hl], a
+	ld a, 0
+	ld [wd04e], a
+	ret
+; 80430
--- /dev/null
+++ b/engine/player_step.asm
@@ -1,0 +1,271 @@
+_HandlePlayerStep:: ; d497 (3:5497)
+	ld a, [wPlayerStepFlags]
+	and a
+	ret z
+	bit 7, a ; starting step
+	jr nz, .update_overworld_map
+	bit 6, a ; finishing step
+	jr nz, .update_player_coords
+	bit 5, a ; ongoing step
+	jr nz, .finish
+	ret
+
+.update_overworld_map
+	ld a, 4
+	ld [wHandlePlayerStep], a
+	call UpdateOverworldMap
+	jr .finish
+
+.update_player_coords
+	call UpdatePlayerCoords
+	jr .finish
+
+.finish
+	call HandlePlayerStep
+	ld a, [wPlayerStepVectorX]
+	ld d, a
+	ld a, [wPlayerStepVectorY]
+	ld e, a
+	ld a, [wFollowNotExactPersonX]
+	sub d
+	ld [wFollowNotExactPersonX], a
+	ld a, [wFollowNotExactPersonY]
+	sub e
+	ld [wFollowNotExactPersonY], a
+	ret
+
+ScrollScreen:: ; d4d2 (3:54d2)
+	ld a, [wPlayerStepVectorX]
+	ld d, a
+	ld a, [wPlayerStepVectorY]
+	ld e, a
+	ld a, [hSCX]
+	add d
+	ld [hSCX], a
+	ld a, [hSCY]
+	add e
+	ld [hSCY], a
+	ret
+
+HandlePlayerStep: ; d4e5 (3:54e5)
+	ld hl, wHandlePlayerStep
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ld a, [hl]
+	ld hl, .Jumptable
+	rst JumpTable
+	ret
+
+.Jumptable: ; d4f2 (3:54f2)
+	
+	dw GetMovementPermissions
+	dw BufferScreen
+	dw .mobile
+	dw .fail2
+; The rest are never used.  Ever.
+	dw .fail1
+	dw .fail1
+	dw .fail1
+	dw .fail1
+	dw .fail1
+	dw .fail1
+	dw .fail1
+
+.fail1: ; d508 (3:5508)
+	ret
+
+.mobile: ; d509 (3:5509)
+	callba MobileFn_10602e
+	ret
+
+.fail2: ; d510 (3:5510)
+	ret
+
+UpdatePlayerCoords: ; d511 (3:5511)
+	ld a, [wPlayerStepDirection]
+	and a
+	jr nz, .check_step_down
+	ld hl, YCoord
+	inc [hl]
+	ret
+
+.check_step_down
+	cp UP
+	jr nz, .check_step_left
+	ld hl, YCoord
+	dec [hl]
+	ret
+
+.check_step_left
+	cp LEFT
+	jr nz, .check_step_right
+	ld hl, XCoord
+	dec [hl]
+	ret
+
+.check_step_right
+	cp RIGHT
+	ret nz
+	ld hl, XCoord
+	inc [hl]
+	ret
+
+UpdateOverworldMap: ; d536 (3:5536)
+	ld a, [wPlayerStepDirection]
+	and a
+	jr z, .step_down
+	cp UP
+	jr z, .step_up
+	cp LEFT
+	jr z, .step_left
+	cp RIGHT
+	jr z, .step_right
+	ret
+
+.step_down
+	call .ScrollOverworldMapDown
+	call LoadMapPart
+	call ScrollMapUp
+	ret
+
+.step_up
+	call .ScrollOverworldMapUp
+	call LoadMapPart
+	call ScrollMapDown
+	ret
+
+.step_left
+	call .ScrollOverworldMapLeft
+	call LoadMapPart
+	call ScrollMapRight
+	ret
+
+.step_right
+	call .ScrollOverworldMapRight
+	call LoadMapPart
+	call ScrollMapLeft
+	ret
+
+.ScrollOverworldMapDown: ; d571 (3:5571)
+	ld a, [wBGMapAnchor]
+	add 2 * BG_MAP_WIDTH
+	ld [wBGMapAnchor], a
+	jr nc, .not_overflowed
+	ld a, [wBGMapAnchor + 1]
+	inc a
+	and $3
+	or VBGMap0 / $100
+	ld [wBGMapAnchor + 1], a
+.not_overflowed
+	ld hl, wMetatileStandingY
+	inc [hl]
+	ld a, [hl]
+	cp 2 ; was 1
+	jr nz, .done_down
+	ld [hl], 0
+	call .Add6ToOverworldMapAnchor
+.done_down
+	ret
+
+.Add6ToOverworldMapAnchor: ; d595 (3:5595)
+	ld hl, wOverworldMapAnchor
+	ld a, [MapWidth]
+	add 6
+	add [hl]
+	ld [hli], a
+	ret nc
+	inc [hl]
+	ret
+
+.ScrollOverworldMapUp: ; d5a2 (3:55a2)
+	ld a, [wBGMapAnchor]
+	sub 2 * BG_MAP_WIDTH
+	ld [wBGMapAnchor], a
+	jr nc, .not_underflowed
+	ld a, [wBGMapAnchor + 1]
+	dec a
+	and $3
+	or VBGMap0 / $100
+	ld [wBGMapAnchor + 1], a
+.not_underflowed
+	ld hl, wMetatileStandingY
+	dec [hl]
+	ld a, [hl]
+	cp -1 ; was 0
+	jr nz, .done_up
+	ld [hl], $1
+	call .Sub6FromOverworldMapAnchor
+.done_up
+	ret
+
+.Sub6FromOverworldMapAnchor: ; d5c6 (3:55c6)
+	ld hl, wOverworldMapAnchor
+	ld a, [MapWidth]
+	add 6
+	ld b, a
+	ld a, [hl]
+	sub b
+	ld [hli], a
+	ret nc
+	dec [hl]
+	ret
+
+.ScrollOverworldMapLeft: ; d5d5 (3:55d5)
+	ld a, [wBGMapAnchor]
+	ld e, a
+	and $e0
+	ld d, a
+	ld a, e
+	sub $2
+	and $1f
+	or d
+	ld [wBGMapAnchor], a
+	ld hl, wMetatileStandingX
+	dec [hl]
+	ld a, [hl]
+	cp -1
+	jr nz, .done_left
+	ld [hl], 1
+	call .DecrementwOverworldMapAnchor
+.done_left
+	ret
+
+.DecrementwOverworldMapAnchor: ; d5f4 (3:55f4)
+	ld hl, wOverworldMapAnchor
+	ld a, [hl]
+	sub 1
+	ld [hli], a
+	ret nc
+	dec [hl]
+	ret
+
+.ScrollOverworldMapRight: ; d5fe (3:55fe)
+	ld a, [wBGMapAnchor]
+	ld e, a
+	and $e0
+	ld d, a
+	ld a, e
+	add $2
+	and $1f
+	or d
+	ld [wBGMapAnchor], a
+	ld hl, wMetatileStandingX
+	inc [hl]
+	ld a, [hl]
+	cp 2
+	jr nz, .done_right
+	ld [hl], 0
+	call .IncrementwOverworldMapAnchor
+.done_right
+	ret
+
+.IncrementwOverworldMapAnchor: ; d61d (3:561d)
+	ld hl, wOverworldMapAnchor
+	ld a, [hl]
+	add 1
+	ld [hli], a
+	ret nc
+	inc [hl]
+	ret
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -12,7 +12,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call .ChooseWhichPCListToUse
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	call DoNthMenu
 	jr c, .shutdown
 	ld a, [MenuSelection]
@@ -23,7 +23,7 @@
 .shutdown
 	call PC_PlayShutdownSound
 	call ExitMenu
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 155d6
 
@@ -140,7 +140,7 @@
 	call PC_PlayChoosePCSound
 	call FadeToMenu
 	callba _HallOfFamePC
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	and a
 	ret
 ; 156ab
@@ -208,7 +208,7 @@
 
 _PlayersPC: ; 15704
 	ld a, b
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	ld hl, UnknownText_0x157cc
 	call PC_DisplayTextWaitMenu
 	call Function15715
@@ -323,7 +323,7 @@
 	jr .asm_157da
 
 .asm_157e4
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	xor a
 	ret
 ; 0x157e9
@@ -343,7 +343,7 @@
 .askquantity
 	ld hl, .HowManyText
 	call MenuTextBox
-	callba Function24fbf
+	callba SelectQuantityToToss
 	call ExitMenu
 	call ExitMenu
 	jr c, .done
@@ -403,7 +403,7 @@
 	jr .asm_15868
 
 .asm_15878
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	xor a
 	ret
 ; 0x1587d
@@ -431,9 +431,9 @@
 	jr c, .asm_158b6
 	call DisableSpriteUpdates
 	call LoadStandardMenuDataHeader
-	callba Function106a5
+	callba DepositSellInitPackBuffers
 .asm_1589c
-	callba Function106be
+	callba DepositSellPack
 	ld a, [wcf66]
 	and a
 	jr z, .asm_158b3
@@ -442,7 +442,7 @@
 	jr .asm_1589c
 
 .asm_158b3
-	call ReturnToCallingMenu
+	call CloseSubmenu
 
 .asm_158b6
 	xor a
@@ -472,7 +472,7 @@
 	ld [wSpriteUpdatesEnabled], a
 	callba CheckItemMenu
 	ld a, [wItemAttributeParamBuffer]
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	pop af
 	ld [wSpriteUpdatesEnabled], a
@@ -479,7 +479,7 @@
 	ret
 ; 0x158e7
 
-.jumptable: ; 0x158e7
+.dw: ; 0x158e7
 	dw .tossable
 	dw .no_toss
 	dw .no_toss
@@ -516,7 +516,7 @@
 .asm_1591d
 	ld hl, .HowManyText
 	call MenuTextBox
-	callba Function24fbf
+	callba SelectQuantityToToss
 	push af
 	call ExitMenu
 	call ExitMenu
@@ -591,10 +591,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0dd]
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
 	ld [wd0dd], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wd0d7], a
 	pop af
 	ld [wSpriteUpdatesEnabled], a
@@ -601,7 +601,7 @@
 	ld a, [wd0e3]
 	and a
 	jr nz, .asm_159d8
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp $2
 	jr z, .asm_15a06
 	cp $1
@@ -611,7 +611,7 @@
 	jr .asm_159f8
 
 .asm_159d8
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp $2
 	jr z, .asm_159e9
 	cp $1
@@ -629,7 +629,7 @@
 	call Function156c7
 
 .asm_159f2
-	callba Function2490c
+	callba SwitchItemsInBag
 
 .asm_159f8
 	jp .asm_15989
@@ -636,7 +636,7 @@
 
 .asm_159fb
 	callba Function24706
-	call Function1bee
+	call PlaceHollowCursor
 	and a
 	ret
 
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -31,7 +31,7 @@
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .exit
-	call Function4010b
+	call Pokedex_Main
 	call DelayFrame
 	jr .main
 
@@ -40,8 +40,8 @@
 	call PlaySFX
 	call WaitSFX
 	call ClearSprites
-	ld a, [wc7d4]
-	ld [wd959], a
+	ld a, [wCurrentDexMode]
+	ld [wLastDexMode], a
 
 	pop af
 	ld [hInMenu], a
@@ -63,7 +63,7 @@
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
-	call Function414b7
+	call Pokedex_LoadGFX
 
 	ld hl, wPokedexDataStart
 	ld bc, wPokedexDataEnd - wPokedexDataStart
@@ -76,78 +76,78 @@
 	ld [wcf65], a
 	ld [wcf66], a
 
-	call Function400a2
+	call Pokedex_CheckUnlockedUnownMode
 
-	ld a, [wd959]
-	ld [wc7d4], a
+	ld a, [wLastDexMode]
+	ld [wCurrentDexMode], a
 
-	call Function40bdc
-	call Function400b4
-	call Function400ed
+	call Pokedex_ChangeMode
+	call Pokedex_InitCursorPosition
+	call Pokedex_GetLandmark
 	callba Function1de247
-	call Function41af7
+	call Pokedex_ResetBGMapMode
 	ret
 ; 400a2
 
-Function400a2: ; 400a2
+Pokedex_CheckUnlockedUnownMode: ; 400a2
 	ld a, [StatusFlags]
 	bit 1, a
-	jr nz, .asm_400ae
+	jr nz, .unlocked
 
 	xor a
-	ld [wc7dc], a
+	ld [wUnlockedUnownMode], a
 	ret
 
-.asm_400ae
-	ld a, 1
-	ld [wc7dc], a
+.unlocked
+	ld a, TRUE
+	ld [wUnlockedUnownMode], a
 	ret
 ; 400b4
 
-Function400b4: ; 400b4
-	ld hl, wc6d0
-	ld a, [wc2d6]
+Pokedex_InitCursorPosition: ; 400b4
+	ld hl, wPokedexDataStart
+	ld a, [wLastDexEntry]
 	and a
-	jr z, .asm_400ec
-	cp $fc
-	jr nc, .asm_400ec
+	jr z, .done
+	cp NUM_POKEMON + 1
+	jr nc, .done
 
 	ld b, a
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	cp $8
-	jr c, .asm_400db
+	jr c, .only_one_page
 
 	sub $7
 	ld c, a
-.asm_400cc
+.loop1
 	ld a, b
 	cp [hl]
-	jr z, .asm_400ec
+	jr z, .done
 	inc hl
-	ld a, [wc7d0]
+	ld a, [wDexListingPage]
 	inc a
-	ld [wc7d0], a
+	ld [wDexListingPage], a
 	dec c
-	jr nz, .asm_400cc
+	jr nz, .loop1
 
-.asm_400db
+.only_one_page
 	ld c, $7
-.asm_400dd
+.loop2
 	ld a, b
 	cp [hl]
-	jr z, .asm_400ec
+	jr z, .done
 	inc hl
-	ld a, [wc7d1]
+	ld a, [wDexListingCursor]
 	inc a
-	ld [wc7d1], a
+	ld [wDexListingCursor], a
 	dec c
-	jr nz, .asm_400dd
+	jr nz, .loop2
 
-.asm_400ec
+.done
 	ret
 ; 400ed
 
-Function400ed: ; 400ed
+Pokedex_GetLandmark: ; 400ed
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -155,7 +155,7 @@
 	call GetWorldMapLocation
 
 	cp SPECIAL_MAP
-	jr nz, .asm_40107
+	jr nz, .load
 
 	ld a, [BackupMapGroup]
 	ld b, a
@@ -163,20 +163,20 @@
 	ld c, a
 	call GetWorldMapLocation
 
-.asm_40107
-	ld [wc7e4], a
+.load
+	ld [wDexCurrentLocation], a
 	ret
 ; 4010b
 
-Function4010b: ; 4010b
+Pokedex_Main: ; 4010b
 	ld a, [wJumptableIndex]
-	ld hl, Jumptable_40115
-	call Function41432
+	ld hl, .Jumptable
+	call Pokedex_LoadPointer
 	jp [hl]
 ; 40115
 
 
-Jumptable_40115: ; 40115 (10:4115)
+.Jumptable: ; 40115 (10:4115)
 	dw Function4013c
 	dw Function401ae
 	dw Function40217
@@ -188,17 +188,17 @@
 	dw Function403be
 	dw Function4050a
 	dw Function40562
-	dw Function405bd
+	dw Pokedex_UnownMode ; Unown Dex
 	dw Function405df
-	dw Function40136
+	dw Pokedex_CloseDex ; Exit
 
 
-Function40131: ; 40131 (10:4131)
+Pokedex_IncrementDexPointer: ; 40131 (10:4131)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function40136: ; 40136 (10:4136)
+Pokedex_CloseDex: ; 40136 (10:4136)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
@@ -209,45 +209,46 @@
 	call ClearSprites
 	xor a
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	call ByteFill
-	callba Function1de171
+	callba DrawPokedexListWindow
 	hlcoord 0, 17
 	ld de, String_START_SEARCH
-	call Function40acd
+	call Pokedex_PlaceString
 	ld a, $7
 	ld [wc7d3], a
 	call Function40b0f
-	call Function41aeb
-	call Function41af7
+	call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
+	call Pokedex_ResetBGMapMode
 	call Function4074c
 	ld a, $5
 	ld [hSCX], a
-	ld a, [wc7d4]
-	cp $1
+
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
 	ld a, $4a
-	jr z, .asm_4017b
+	jr z, .okay
 	ld a, $47
-
-.asm_4017b
+.okay
 	ld [hWX], a
 	xor a
 	ld [hWY], a
 	call WaitBGMap
-	call Function41af7
-	ld a, $ff
+
+	call Pokedex_ResetBGMapMode
+	ld a, -1
 	ld [CurPartySpecies], a
 	ld a, $4
 	call Function41423
 	call Function41148
-	callba Function1de171
+	callba DrawPokedexListWindow
 	hlcoord 0, 17
 	ld de, String_START_SEARCH
-	call Function40acd
+	call Pokedex_PlaceString
 	ld a, $7
 	ld [wc7d3], a
 	call Function40b0f
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function401ae: ; 401ae (10:41ae)
@@ -270,13 +271,13 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function40b0f
-	call Function41ad7
-	call Function41af7
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
 	ret
 
 .a
-	call Function40bb1
-	call Function40bd0
+	call Pokedex_GetMonAtCursorPosition
+	call Pokedex_CheckSeen
 	ret z
 	ld a, $2
 	ld [wJumptableIndex], a
@@ -318,27 +319,27 @@
 	xor a
 	ld [hBGMapMode], a
 	call ClearSprites
-	call Function41478
+	call Pokedex_LoadCurrentFootprint
 	call Function407fd
 	call Function4134f
-	call Function40bb1
-	ld [wc2d6], a
-	callba Function4424d
-	call Function40ba0
+	call Pokedex_GetMonAtCursorPosition
+	ld [wLastDexEntry], a
+	callba DisplayDexEntry
+	call Pokedex_DrawFootprint
 	call WaitBGMap
 	ld a, $a7
 	ld [hWX], a
-	call Function40bb1
+	call Pokedex_GetMonAtCursorPosition
 	ld [CurPartySpecies], a
 	ld a, $4
 	call Function41423
 	ld a, [CurPartySpecies]
 	call PlayCry
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function40258: ; 40258 (10:4258)
-	ld de, Unknown_402e8
+	ld de, DexEntryPage_JoypadCoords
 	call Function4135a
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
@@ -347,25 +348,25 @@
 	ld a, [hl]
 	and A_BUTTON
 	jr nz, .a
-	call Function4066c
+	call Pokedex_NextOrPreviousDexEntry
 	ret nc
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 .a
 	ld a, [wc7d8]
-	ld hl, Jumptable_402f2
-	call Function41432
+	ld hl, DexEntryPage_Jumptable
+	call Pokedex_LoadPointer
 	jp [hl]
 
 .b
 	ld a, [LastVolume]
 	and a
-	jr z, .asm_40288
+	jr z, .max_volume
 	ld a, $77
 	ld [LastVolume], a
 
-.asm_40288
+.max_volume
 	call MaxVolume
 	ld a, [wcf64]
 	ld [wJumptableIndex], a
@@ -372,13 +373,13 @@
 	ret
 ; 40292 (10:4292)
 
-Function40292: ; 40292
+Pokedex_Page: ; 40292
 	ld a, [wPokedexStatus]
 	xor $1
 	ld [wPokedexStatus], a
-	call Function40bb1
-	ld [wc2d6], a
-	callba Function4424d
+	call Pokedex_GetMonAtCursorPosition
+	ld [wLastDexEntry], a
+	callba DisplayDexEntry
 	call WaitBGMap
 	ret
 ; 402aa
@@ -391,14 +392,14 @@
 	ld [hBGMapMode], a
 	call Function407fd
 	call Function4134f
-	call Function41478
-	call Function40bb1
-	ld [wc2d6], a
-	callba Function4424d
-	call Function40ba0
+	call Pokedex_LoadCurrentFootprint
+	call Pokedex_GetMonAtCursorPosition
+	ld [wLastDexEntry], a
+	callba DisplayDexEntry
+	call Pokedex_DrawFootprint
 	call Function4143b
 	call WaitBGMap
-	call Function40bb1
+	call Pokedex_GetMonAtCursorPosition
 	ld [CurPartySpecies], a
 	ld a, $4
 	call Function41423
@@ -409,22 +410,23 @@
 	ret
 ; 402e8 (10:42e8)
 
-Unknown_402e8: ; 402e8
-	dw $0430
+DexEntryPage_JoypadCoords: ; 402e8
+	db D_RIGHT | D_LEFT, 4
 	dwcoord 1, 17
 	dwcoord 6, 17
 	dwcoord 11, 17
 	dwcoord 15, 17
+
 ; 402f2
 
-Jumptable_402f2: ; 402f2
-	dw Function40292
-	dw Function402fa
-	dw Function40340
-	dw Function4034f
+DexEntryPage_Jumptable: ; 402f2
+	dw Pokedex_Page
+	dw .Area
+	dw .Cry
+	dw .Print
 ; 402fa
 
-Function402fa: ; 402fa
+.Area: ; 402fa
 	call Function41401
 	xor a
 	ld [hSCX], a
@@ -433,10 +435,10 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	call Function40bb1
-	ld a, [wc7e4]
+	call Pokedex_GetMonAtCursorPosition
+	ld a, [wDexCurrentLocation]
 	ld e, a
-	predef Function91d11
+	predef _Area
 	call Function41401
 	call DelayFrame
 	xor a
@@ -449,7 +451,7 @@
 	call Function4038d
 	call Function4143b
 	call WaitBGMap
-	call Function40bb1
+	call Pokedex_GetMonAtCursorPosition
 	ld [CurPartySpecies], a
 	ld a, $4
 	call Function41423
@@ -456,8 +458,8 @@
 	ret
 ; 40340
 
-Function40340: ; 40340
-	call Function40bb1
+.Cry: ; 40340
+	call Pokedex_GetMonAtCursorPosition
 	ld a, [wd265]
 	call GetCryIndex
 	ld e, c
@@ -466,7 +468,7 @@
 	ret
 ; 4034f
 
-Function4034f: ; 4034f
+.Print: ; 4034f
 	call Function41415
 	xor a
 	ld [hSCX], a
@@ -485,7 +487,7 @@
 	ld [wcf65], a
 	call ClearBGPalettes
 	call DisableLCD
-	call Function414fb
+	call Pokedex_LoadInvertedFont
 	call Function4038d
 	call EnableLCD
 	call WaitBGMap
@@ -497,9 +499,9 @@
 
 Function4038d: ; 4038d
 	call Function407fd
-	call Function40bb1
-	callba Function4424d
-	call Function40ba0
+	call Pokedex_GetMonAtCursorPosition
+	callba DisplayDexEntry
+	call Pokedex_DrawFootprint
 	ret
 ; 4039d
 
@@ -509,17 +511,17 @@
 	call ClearSprites
 	call Function4087c
 	call Function4134f
-	ld a, [wc7d4]
+	ld a, [wCurrentDexMode]
 	ld [wc7d8], a
 	call Function40e5b
 	call WaitBGMap
 	ld a, $10
 	call Function41423
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function403be: ; 403be (10:43be)
-	ld a, [wc7dc]
+	ld a, [wUnlockedUnownMode]
 	and a
 	jr nz, .asm_403c9
 	ld de, Unknown_403f3
@@ -542,7 +544,7 @@
 .asm_403e0
 	ld a, [wc7d8]
 	ld hl, Jumptable_40405
-	call Function41432
+	call Pokedex_LoadPointer
 	jp [hl]
 
 .asm_403ea
@@ -553,17 +555,17 @@
 ; 403f3 (10:43f3)
 
 Unknown_403f3: ; 403f3
-	dw $03c0
-	dwcoord 2, 4
-	dwcoord 2, 6
-	dwcoord 2, 8
+	db D_UP | D_DOWN, 3
+	dwcoord 2,  4
+	dwcoord 2,  6
+	dwcoord 2,  8
 ; 403fb
 
 Unknown_403fb: ; 403fb
-	dw $04c0
-	dwcoord 2, 4
-	dwcoord 2, 6
-	dwcoord 2, 8
+	db D_UP | D_DOWN, 4
+	dwcoord 2,  4
+	dwcoord 2,  6
+	dwcoord 2,  8
 	dwcoord 2, 10
 ; 40405
 
@@ -585,17 +587,17 @@
 Function40415: ; 40415 (10:4415)
 	ld b, $2
 Function40417: ; 40417 (10:4417)
-	ld a, [wc7d4]
+	ld a, [wCurrentDexMode]
 	cp b
 	jr z, .asm_40431
 	ld a, b
-	ld [wc7d4], a
-	call Function40bdc
+	ld [wCurrentDexMode], a
+	call Pokedex_ChangeMode
 	call Function40f08
 	xor a
-	ld [wc7d0], a
-	ld [wc7d1], a
-	call Function400b4
+	ld [wDexListingPage], a
+	ld [wDexListingCursor], a
+	call Pokedex_InitCursorPosition
 
 .asm_40431
 	call Function41401
@@ -621,12 +623,12 @@
 	ld [wc7d6], a
 	call Function40fa8
 	xor a
-	ld [wc7db], a
-	callba Function44207
+	ld [wDexSearchSlowpokeFrame], a
+	callba DoDexSearchSlowpokeFrame
 	call WaitBGMap
 	ld a, $10
 	call Function41423
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function40471: ; 40471 (10:4471)
@@ -646,7 +648,7 @@
 .asm_4048b
 	ld a, [wc7d8]
 	ld hl, Jumptable_404a8
-	call Function41432
+	call Pokedex_LoadPointer
 	jp [hl]
 
 .asm_40495
@@ -657,7 +659,7 @@
 ; 4049e (10:449e)
 
 Unknown_4049e: ; 4049e
-	dw $04c0
+	db D_UP | D_DOWN, 4
 	dwcoord 2, 4
 	dwcoord 2, 6
 	dwcoord 2, 13
@@ -679,11 +681,11 @@
 
 Function404b7: ; 404b7
 	call Function41086
-	callba Function441cf
+	callba AnimateDexSearchSlowpoke
 	ld a, [wc7d7]
 	and a
 	jr nz, .asm_404dc
-	call Function40bdc
+	call Pokedex_ChangeMode
 	call Function41107
 	xor a
 	ld [hBGMapMode], a
@@ -694,16 +696,16 @@
 	ret
 
 .asm_404dc
-	ld [wc7d2], a
-	ld a, [wc7d0]
+	ld [wDexListingEnd], a
+	ld a, [wDexListingPage]
 	ld [wc7e0], a
-	ld a, [wc7d1]
+	ld a, [wDexListingCursor]
 	ld [wc7e1], a
-	ld a, [wc2d6]
+	ld a, [wLastDexEntry]
 	ld [wcf65], a
 	xor a
-	ld [wc7d0], a
-	ld [wc7d1], a
+	ld [wDexListingPage], a
+	ld [wDexListingCursor], a
 	call Function41401
 	ld a, $9
 	ld [wJumptableIndex], a
@@ -722,17 +724,17 @@
 	ld [hBGMapMode], a
 	xor a
 	hlcoord 0, 0, AttrMap
-	ld bc, $168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
-	call Function41ae1
-	call Function41af7
-	callba Function1de1d1
+	call Pokedex_SetBGMapMode4
+	call Pokedex_ResetBGMapMode
+	callba DrawPokedexSearchResultsWindow
 	call Function409cf
 	ld a, $4
 	ld [wc7d3], a
 	call Function40b0f
-	call Function41ad7
-	call Function41af7
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
 	call Function40962
 	ld a, $5
 	ld [hSCX], a
@@ -741,8 +743,8 @@
 	xor a
 	ld [hWY], a
 	call WaitBGMap
-	call Function41af7
-	callba Function1de1d1
+	call Pokedex_ResetBGMapMode
+	callba DrawPokedexSearchResultsWindow
 	call Function409cf
 	call Function41281
 	ld a, $ff
@@ -749,7 +751,7 @@
 	ld [CurPartySpecies], a
 	ld a, $4
 	call Function41423
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function40562: ; 40562 (10:4562)
@@ -766,13 +768,13 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function40b0f
-	call Function41ad7
-	call Function41af7
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
 	ret
 
 .asm_40583
-	call Function40bb1
-	call Function40bd0
+	call Pokedex_GetMonAtCursorPosition
+	call Pokedex_CheckSeen
 	ret z
 	ld a, $2
 	ld [wJumptableIndex], a
@@ -782,14 +784,14 @@
 
 .asm_40595
 	ld a, [wc7e0]
-	ld [wc7d0], a
+	ld [wDexListingPage], a
 	ld a, [wc7e1]
-	ld [wc7d1], a
+	ld [wDexListingCursor], a
 	ld a, [wcf65]
-	ld [wc2d6], a
+	ld [wLastDexEntry], a
 	call Function41401
 	call ClearSprites
-	call Function40bdc
+	call Pokedex_ChangeMode
 	ld a, $5
 	ld [wJumptableIndex], a
 	xor a
@@ -798,18 +800,18 @@
 	ld [hWX], a
 	ret
 
-Function405bd: ; 405bd (10:45bd)
-	call Function41a2c
+Pokedex_UnownMode: ; 405bd (10:45bd)
+	call Pokedex_LoadUnownFont
 	call Function409f1
 	xor a
 	ld [wc7dd], a
 	call Function41a58
 	call Function40658
-	callba Functionfba2e
+	callba PrintUnownWord
 	call WaitBGMap
 	ld a, $16
 	call Function41423
-	call Function40131
+	call Pokedex_IncrementDexPointer
 	ret
 
 Function405df: ; 405df (10:45df)
@@ -816,27 +818,27 @@
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and A_BUTTON | B_BUTTON
-	jr nz, .asm_405eb
+	jr nz, .a_b
 	call Function40610
 	ret
 
-.asm_405eb
+.a_b
 	call Function41401
 	ld a, $7
 	ld [wJumptableIndex], a
 	call DelayFrame
-	call Function41a24
-	jr nz, .asm_40603
+	call Pokedex_CheckSGB
+	jr nz, .decompress
 	callba Function1ddf26
-	jr .asm_4060f
+	jr .done
 
-.asm_40603
+.decompress
 	ld hl, PokedexLZ
 	ld de, VTiles2 tile $31
 	lb bc, BANK(PokedexLZ), $3a
 	call DecompressRequest2bpp
 
-.asm_4060f
+.done
 	ret
 
 Function40610: ; 40610 (10:4610)
@@ -859,7 +861,7 @@
 	ret nc
 	ld a, [hl]
 	inc [hl]
-	jr .asm_40635
+	jr .update
 
 .left
 	ld hl, wc7dd
@@ -869,7 +871,7 @@
 	ld a, [hl]
 	dec [hl]
 
-.asm_40635
+.update
 	push af
 	xor a
 	ld [hBGMapMode], a
@@ -877,7 +879,7 @@
 	call Function40654
 	call Function41a58
 	call Function40658
-	callba Functionfba2e
+	callba PrintUnownWord
 	ld a, $1
 	ld [hBGMapMode], a
 	call DelayFrame
@@ -904,11 +906,11 @@
 	ld [hl], c
 	ret
 
-Function4066c: ; 4066c (10:466c)
-	ld a, [wc7d1]
-	ld [wc7e2], a
-	ld a, [wc7d0]
-	ld [wc7e3], a
+Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
+	ld a, [wDexListingCursor]
+	ld [wBackupDexListingCursor], a
+	ld a, [wDexListingPage]
+	ld [wBackupDexListingPage], a
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -922,36 +924,36 @@
 .up
 	ld a, [wc7d3]
 	ld d, a
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	ld e, a
 	call Function406ea
-	jr nc, .asm_406b7
-	call Function40bb1
-	call Function40bd0
-	jr nz, .asm_406b5
+	jr nc, .nope
+	call Pokedex_GetMonAtCursorPosition
+	call Pokedex_CheckSeen
+	jr nz, .yep
 	jr .up
 
 .down
 	ld a, [wc7d3]
 	ld d, a
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	ld e, a
 	call Function406fe
-	jr nc, .asm_406b7
-	call Function40bb1
-	call Function40bd0
-	jr nz, .asm_406b5
+	jr nc, .nope
+	call Pokedex_GetMonAtCursorPosition
+	call Pokedex_CheckSeen
+	jr nz, .yep
 	jr .down
 
-.asm_406b5
+.yep
 	scf
 	ret
 
-.asm_406b7
-	ld a, [wc7e2]
-	ld [wc7d1], a
-	ld a, [wc7e3]
-	ld [wc7d0], a
+.nope
+	ld a, [wBackupDexListingCursor]
+	ld [wDexListingCursor], a
+	ld a, [wBackupDexListingPage]
+	ld [wDexListingPage], a
 	and a
 	ret
 
@@ -958,7 +960,7 @@
 Function406c5: ; 406c5 (10:46c5)
 	ld a, [wc7d3]
 	ld d, a
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	ld e, a
 	ld hl, hJoyLast
 	ld a, [hl]
@@ -979,7 +981,7 @@
 	jr asm_4073d
 
 Function406ea: ; 406ea (10:46ea)
-	ld hl, wc7d1
+	ld hl, wDexListingCursor
 	ld a, [hl]
 	and a
 	jr z, .asm_406f4
@@ -986,7 +988,7 @@
 	dec [hl]
 	jr asm_4073f
 .asm_406f4
-	ld hl, wc7d0
+	ld hl, wDexListingPage
 	ld a, [hl]
 	and a
 	jr z, asm_4073d
@@ -994,7 +996,7 @@
 	jr asm_4073f
 
 Function406fe: ; 406fe (10:46fe)
-	ld hl, wc7d1
+	ld hl, wDexListingCursor
 	ld a, [hl]
 	inc a
 	cp e
@@ -1004,7 +1006,7 @@
 	inc [hl]
 	jr asm_4073f
 .asm_4070c
-	ld hl, wc7d0
+	ld hl, wDexListingPage
 	add [hl]
 	cp e
 	jr nc, asm_4073d
@@ -1011,7 +1013,7 @@
 	inc [hl]
 	jr asm_4073f
 asm_40716: ; 40716 (10:4716)
-	ld hl, wc7d0
+	ld hl, wDexListingPage
 	ld a, [hl]
 	and a
 	jr z, asm_4073d
@@ -1025,7 +1027,7 @@
 	ld [hl], a
 	jr asm_4073f
 asm_40728: ; 40728 (10:4728)
-	ld hl, wc7d0
+	ld hl, wDexListingPage
 	ld a, d
 	add a
 	add [hl]
@@ -1065,20 +1067,20 @@
 Function4074c: ; 4074c (10:474c)
 	hlcoord 0, 17
 	ld de, String_START_SEARCH
-	call Function40acd
+	call Pokedex_PlaceString
 	ld a, $32
 	hlcoord 0, 0
-	ld bc, $168
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 	hlcoord 0, 0
 	lb bc, 7, 7
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 0, 9
 	ld bc, $607
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 1, 11
 	ld de, String_SEEN
-	call Function40acd
+	call Pokedex_PlaceString
 	ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
 	ld b, EndPokedexSeen - PokedexSeen
 	call CountSetBits
@@ -1088,7 +1090,7 @@
 	call PrintNum
 	hlcoord 1, 14
 	ld de, String_OWN
-	call Function40acd
+	call Pokedex_PlaceString
 	ld hl, PokedexCaught
 	ld b, EndPokedexCaught - PokedexCaught
 	call CountSetBits
@@ -1098,7 +1100,7 @@
 	call PrintNum
 	hlcoord 1, 17
 	ld de, String_SELECT_OPTION
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 8, 1
 	ld b, $7
 	ld a, $5a
@@ -1115,7 +1117,7 @@
 	ld [hl], $54
 	hlcoord 8, 16
 	ld [hl], $5b
-	call Function40ab2
+	call Pokedex_PlaceFrontpicTopLeftCorner
 	ret
 ; 407e1 (10:47e1)
 
@@ -1130,10 +1132,10 @@
 ; 407fd
 
 Function407fd: ; 407fd
-	call Function40aa6
+	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 0
 	ld bc, $0f12
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 19, 0
 	ld [hl], $34
 	hlcoord 19, 1
@@ -1151,14 +1153,14 @@
 	call ByteFill
 	hlcoord 9, 7
 	ld de, Unknown_40852
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 9, 9
 	ld de, Unknown_4085c
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 0, 17
 	ld de, Unknown_40867
-	call Function40acd
-	call Function40ab2
+	call Pokedex_PlaceString
+	call Pokedex_PlaceFrontpicTopLeftCorner
 	ret
 ; 4084f
 
@@ -1173,20 +1175,20 @@
 ; 4087c
 
 Function4087c: ; 4087c (10:487c)
-	call Function40aa6
+	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 2
 	lb bc, 8, 18
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 0, 12
 	lb bc, 4, 18
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 0, 1
 	ld de, Unknown_408b2
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 3, 4
 	ld de, String_408bd
 	call PlaceString
-	ld a, [wc7dc]
+	ld a, [wUnlockedUnownMode]
 	and a
 	ret z
 	hlcoord 3, 10
@@ -1211,19 +1213,19 @@
 ; 408f0
 
 Function408f0: ; 408f0 (10:48f0)
-	call Function40aa6
+	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 2
 	lb bc, 14, 18
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 0, 1
 	ld de, Unknown_4092a
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 8, 4
 	ld de, Unknown_40935
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 8, 6
 	ld de, Unknown_40935
-	call Function40acd
+	call Pokedex_PlaceString
 	hlcoord 3, 4
 	ld de, String_40940
 	call PlaceString
@@ -1254,13 +1256,13 @@
 ; 40962
 
 Function40962: ; 40962 (10:4962)
-	call Function40aa6
+	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 0
 	lb bc, 7, 7
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 0, 11
 	lb bc, 5, 18
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 1, 12
 	ld de, String_409ae
 	call PlaceString
@@ -1280,7 +1282,7 @@
 	ld [hl], $69
 	hlcoord 8, 10
 	ld [hl], $6a
-	call Function40ab2
+	call Pokedex_PlaceFrontpicTopLeftCorner
 	ret
 ; 409ae (10:49ae)
 
@@ -1310,28 +1312,28 @@
 	ret
 
 Function409f1: ; 409f1 (10:49f1)
-	call Function40aa6
+	call Pokedex_FillBackgroundColor2
 	hlcoord 2, 1
 	lb bc, 10, 13
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 2, 14
 	lb bc, 1, 13
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	hlcoord 2, 15
 	ld [hl], $3d
 	hlcoord 16, 15
 	ld [hl], $3e
 	hlcoord 6, 5
-	call Function40ab5
+	call Pokedex_PlaceFrontpicAtHL
 	ld de, 0
 	ld b, 0
 	ld c, 26
-.asm_40a1d
+.loop
 	ld hl, UnownDex
 	add hl, de
 	ld a, [hl]
 	and a
-	jr z, .asm_40a39
+	jr z, .done
 	push af
 	ld hl, Unknown_40a3e
 rept 4
@@ -1341,13 +1343,13 @@
 	ld h, [hl]
 	ld l, a
 	pop af
-	add $3f
+	add $40 - 1 ; Unown A
 	ld [hl], a
 	inc de
 	inc b
 	dec c
-	jr nz, .asm_40a1d
-.asm_40a39
+	jr nz, .loop
+.done
 	ld a, b
 	ld [wc7de], a
 	ret
@@ -1354,6 +1356,7 @@
 ; 40a3e (10:4a3e)
 
 Unknown_40a3e: ; 40a3e
+;           letter, cursor
 	dwcoord   4,11,   3,11
 	dwcoord   4,10,   3,10
 	dwcoord   4, 9,   3, 9
@@ -1382,7 +1385,7 @@
 	dwcoord  14,10,  15,10
 ; 40aa6
 
-Function40aa6: ; 40aa6
+Pokedex_FillBackgroundColor2: ; 40aa6
 	hlcoord 0, 0
 	ld a, $32
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -1390,77 +1393,77 @@
 	ret
 ; 40ab2
 
-Function40ab2: ; 40ab2
+Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
 	hlcoord 1, 1
-Function40ab5: ; 40ab5
+Pokedex_PlaceFrontpicAtHL: ; 40ab5
 	xor a
 	ld b, $7
-.asm_40ab8
+.row
 	ld c, $7
 	push af
 	push hl
-.asm_40abc
+.col
 	ld [hli], a
 	add $7
 	dec c
-	jr nz, .asm_40abc
+	jr nz, .col
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	pop af
 	inc a
 	dec b
-	jr nz, .asm_40ab8
+	jr nz, .row
 	ret
 ; 40acd
 
-Function40acd: ; 40acd
-.asm_40acd
+Pokedex_PlaceString: ; 40acd
+.loop
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	inc de
 	ld [hli], a
-	jr .asm_40acd
+	jr .loop
 ; 40ad5
 
 
-Function40ad5: ; 40ad5
+Pokedex_PlaceBorder: ; 40ad5
 	push hl
 	ld a, $33
 	ld [hli], a
 	ld d, $34
-	call Function40b06
+	call .FillRow
 	ld a, $35
 	ld [hl], a
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
-.asm_40ae6
+.loop
 	push hl
 	ld a, $36
 	ld [hli], a
 	ld d, $7f
-	call Function40b06
+	call .FillRow
 	ld a, $37
 	ld [hl], a
 	pop hl
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	add hl, de
 	dec b
-	jr nz, .asm_40ae6
+	jr nz, .loop
 	ld a, $38
 	ld [hli], a
 	ld d, $39
-	call Function40b06
+	call .FillRow
 	ld a, $3a
 	ld [hl], a
 	ret
 ; 40b06
 
-Function40b06: ; 40b06
+.FillRow: ; 40b06
 	ld e, c
-.asm_40b07
+.row_loop
 	ld a, e
 	and a
 	ret z
@@ -1467,36 +1470,41 @@
 	ld a, d
 	ld [hli], a
 	dec e
-	jr .asm_40b07
+	jr .row_loop
 ; 40b0f
 
 
 Function40b0f: ; 40b0f (10:4b0f)
-	ld a, [wc7d4]
-	cp $1
-	jr z, .asm_40b1a
-	ld c, $b
-	jr .asm_40b1c
-.asm_40b1a
-	ld c, $b
-.asm_40b1c
+; This check is completely useless.
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .okay
+	ld c, 11
+	jr .resume
+.okay
+	ld c, 11
+; End useless check
+.resume
+; Clear (2 * [wc7d3] + 1) by 11 box starting at 0,1
 	hlcoord 0, 1
 	ld a, [wc7d3]
 	add a
 	inc a
 	ld b, a
-	ld a, $7f
-	call Function413fe
-	ld a, [wc7d0]
+	ld a, " "
+	call Pokedex_FillBox
+
+; Load de with wPokedexDataStart + [wDexListingPage]
+	ld a, [wDexListingPage]
 	ld e, a
 	ld d, $0
-	ld hl, wc6d0
+	ld hl, wPokedexDataStart
 	add hl, de
 	ld e, l
 	ld d, h
 	hlcoord 0, 2
 	ld a, [wc7d3]
-.asm_40b3c
+.loop
 	push af
 	ld a, [de]
 	ld [wd265], a
@@ -1504,13 +1512,13 @@
 	push hl
 	call Function40b55
 	pop hl
-	ld de, $28
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop de
 	inc de
 	pop af
 	dec a
-	jr nz, .asm_40b3c
+	jr nz, .loop
 	call Function4143b
 	ret
 
@@ -1517,10 +1525,10 @@
 Function40b55: ; 40b55 (10:4b55)
 	and a
 	ret z
-	call Function40b6a
-	call Function40b8d
+	call Pokedex_PrintNumberIfOldMode
+	call Pokedex_PlaceDefaultStringIfNotSeen
 	ret c
-	call Function40b82
+	call Pokedex_PlaceCaughtSymbolIfCaught
 	push hl
 	call GetPokemonName
 	pop hl
@@ -1527,14 +1535,15 @@
 	call PlaceString
 	ret
 
-Function40b6a: ; 40b6a (10:4b6a)
-	ld a, [wc7d4]
-	cp $1
-	jr z, .asm_40b72
+Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .printnum
 	ret
-.asm_40b72
+
+.printnum
 	push hl
-	ld de, -20
+	ld de, -SCREEN_WIDTH
 	add hl, de
 	ld de, wd265
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
@@ -1542,31 +1551,32 @@
 	pop hl
 	ret
 
-Function40b82: ; 40b82 (10:4b82)
-	call Function40bc4
-	jr nz, .asm_40b89
+Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
+	call Pokedex_CheckCaught
+	jr nz, .place_caught_symbol
 	inc hl
 	ret
-.asm_40b89
+
+.place_caught_symbol
 	ld a, $4f
 	ld [hli], a
 	ret
 
-Function40b8d: ; 40b8d (10:4b8d)
-	call Function40bd0
+Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
+	call Pokedex_CheckSeen
 	ret nz
 	inc hl
-	ld de, String_40b9a
+	ld de, .NameNotSeen
 	call PlaceString
 	scf
 	ret
 ; 40b9a (10:4b9a)
 
-String_40b9a: ; 40b9a
+.NameNotSeen: ; 40b9a
 	db "-----@"
 ; 40ba0
 
-Function40ba0: ; 40ba0
+Pokedex_DrawFootprint: ; 40ba0
 	hlcoord 18, 1
 	ld a, $62
 	ld [hli], a
@@ -1581,13 +1591,13 @@
 ; 40bb1
 
 
-Function40bb1: ; 40bb1
-	ld a, [wc7d1]
-	ld hl, wc7d0
+Pokedex_GetMonAtCursorPosition: ; 40bb1
+	ld a, [wDexListingCursor]
+	ld hl, wDexListingPage
 	add [hl]
 	ld e, a
 	ld d, $0
-	ld hl, wc6d0
+	ld hl, wPokedexDataStart
 	add hl, de
 	ld a, [hl]
 	ld [wd265], a
@@ -1595,7 +1605,7 @@
 ; 40bc4
 
 
-Function40bc4: ; 40bc4 (10:4bc4)
+Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
 	push de
 	push hl
 	ld a, [wd265]
@@ -1606,7 +1616,7 @@
 	ret
 
 
-Function40bd0: ; 40bd0
+Pokedex_CheckSeen: ; 40bd0
 	push de
 	push hl
 	ld a, [wd265]
@@ -1619,100 +1629,100 @@
 
 
 
-Function40bdc: ; 40bdc
-	ld hl, wc6d0
-	ld bc, $100
+Pokedex_ChangeMode: ; 40bdc
+	ld hl, wPokedexDataStart
+	ld bc, wPokedexMetadata - wPokedexDataStart
 	xor a
 	call ByteFill
-	ld a, [wc7d4]
-	ld hl, Jumptable_40bf0
-	call Function41432
+	ld a, [wCurrentDexMode]
+	ld hl, .Jumptable
+	call Pokedex_LoadPointer
 	jp [hl]
 ; 40bf0
 
 
-Jumptable_40bf0: ; 40bf0 (10:4bf0)
-	dw Function40bf6
-	dw Function40c08
-	dw Function40c30
+.Jumptable: ; 40bf0 (10:4bf0)
+	dw .NewMode
+	dw .OldMode
+	dw Pokedex_ABCMode
 
 
-Function40bf6: ; 40bf6 (10:4bf6)
+.NewMode: ; 40bf6 (10:4bf6)
 	ld de, NewPokedexOrder
-	ld hl, wc6d0
+	ld hl, wPokedexDataStart
 	ld c, NUM_POKEMON
-.asm_40bfe
+.loopnew
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_40bfe
-	call Function40c18
+	jr nz, .loopnew
+	call .FindLastSeen
 	ret
 
-Function40c08: ; 40c08 (10:4c08)
-	ld hl, wc6d0
+.OldMode: ; 40c08 (10:4c08)
+	ld hl, wPokedexDataStart
 	ld a, $1
 	ld c, NUM_POKEMON
-.asm_40c0f
+.loopold
 	ld [hli], a
 	inc a
 	dec c
-	jr nz, .asm_40c0f
-	call Function40c18
+	jr nz, .loopold
+	call .FindLastSeen
 	ret
 
-Function40c18: ; 40c18 (10:4c18)
-	ld hl, wc7ca
+.FindLastSeen: ; 40c18 (10:4c18)
+	ld hl, wPokedexDataStart + NUM_POKEMON - 1
 	ld d, NUM_POKEMON
 	ld e, d
-.asm_40c1e
+.loopfindend
 	ld a, [hld]
 	ld [wd265], a
-	call Function40bd0
-	jr nz, .asm_40c2b
+	call Pokedex_CheckSeen
+	jr nz, .foundend
 	dec d
 	dec e
-	jr nz, .asm_40c1e
-.asm_40c2b
+	jr nz, .loopfindend
+.foundend
 	ld a, d
-	ld [wc7d2], a
+	ld [wDexListingEnd], a
 	ret
 
-Function40c30: ; 40c30
+Pokedex_ABCMode: ; 40c30
 	xor a
-	ld [wc7d2], a
-	ld hl, wc6d0
+	ld [wDexListingEnd], a
+	ld hl, wPokedexDataStart
 	ld de, AlphabeticalPokedexOrder
 	ld c, NUM_POKEMON
-.asm_40c3c
+.loop1abc
 	push bc
 	ld a, [de]
 	ld [wd265], a
-	call Function40bd0
-	jr z, .asm_40c51
+	call Pokedex_CheckSeen
+	jr z, .skipabc
 	ld a, [wd265]
 	ld [hli], a
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	inc a
-	ld [wc7d2], a
+	ld [wDexListingEnd], a
 
-.asm_40c51
+.skipabc
 	inc de
 	pop bc
 	dec c
-	jr nz, .asm_40c3c
-	ld a, [wc7d2]
+	jr nz, .loop1abc
+	ld a, [wDexListingEnd]
 	ld c, 0
-.asm_40c5b
+.loop2abc
 	cp NUM_POKEMON
-	jr z, .asm_40c64
+	jr z, .doneabc
 	ld [hl], c
 	inc hl
 	inc a
-	jr .asm_40c5b
+	jr .loop2abc
 
-.asm_40c64
+.doneabc
 	ret
 ; 40c65
 
@@ -1726,11 +1736,11 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	ld bc, $0412
-	call Function40ad5
+	lb bc, 4, SCREEN_WIDTH - 2
+	call Pokedex_PlaceBorder
 	ld a, [wc7d8]
 	ld hl, Unknown_40e7d
-	call Function41432
+	call Pokedex_LoadPointer
 	ld e, l
 	ld d, h
 	hlcoord 1, 14
@@ -1741,28 +1751,28 @@
 ; 40e7d
 
 Unknown_40e7d: ; 40e7d
-	dw String_40e85
-	dw String_40ea6
-	dw String_40ec6
-	dw String_40ee4
+	dw .NewMode
+	dw .OldMode
+	dw .ABCMode
+	dw .UnownMode
 ; 40e85
 
-String_40e85: ; 40e85
-	db   $e1, $e2, " are listed by"
+.NewMode: ; 40e85
+	db   "<PK><MN> are listed by"
 	next "evolution type.@"
 ; 40ea6
 
-String_40ea6: ; 40ea6
-	db   $e1, $e2, " are listed by"
+.OldMode: ; 40ea6
+	db   "<PK><MN> are listed by"
 	next "official type.@"
 ; 40ec6
 
-String_40ec6: ; 40ec6
-	db   $e1, $e2, " are listed"
+.ABCMode: ; 40ec6
+	db   "<PK><MN> are listed"
 	next "alphabetically.@"
 ; 40ee4
 
-String_40ee4: ; 40ee4
+.UnownMode: ; 40ee4
 	db   "UNOWN are listed"
 	next "in catching order.@"
 ; 40f08
@@ -1771,24 +1781,25 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	ld bc, $412
-	call Function40ad5
-	ld de, String_40f32
+	lb bc, 4, SCREEN_WIDTH - 2
+	call Pokedex_PlaceBorder
+	ld de, String_ChangingModesPleaseWait
 	hlcoord 1, 14
 	call PlaceString
 	ld a, $1
 	ld [hBGMapMode], a
-	ld c, $40
+	ld c, 64
 	call DelayFrames
 	ld de, SFX_CHANGE_DEX_MODE
 	call PlaySFX
-	ld c, $40
+	ld c, 64
 	call DelayFrames
 	ret
 ; 40f32 (10:4f32)
 
-String_40f32: ; 40f32
-	db "Changing modes.", $4e, "Please wait.@"
+String_ChangingModesPleaseWait: ; 40f32
+	db   "Changing modes."
+	next "Please wait.@"
 ; 40f4f
 
 Function40f4f: ; 40f4f (10:4f4f)
@@ -1861,7 +1872,7 @@
 	hlcoord 9, 3
 	ld bc, $408
 	ld a, $7f
-	call Function413fe
+	call Pokedex_FillBox
 	ld a, [wc7d5]
 	hlcoord 9, 4
 	call Function40fcd
@@ -1926,8 +1937,8 @@
 	add hl, de
 	ld a, [hl]
 	ld [wc7df], a
-	ld hl, wc6d0
-	ld de, wc6d0
+	ld hl, wPokedexDataStart
+	ld de, wPokedexDataStart
 	ld c, NUM_POKEMON
 	xor a
 	ld [wc7d7], a
@@ -1938,7 +1949,7 @@
 	jr z, .asm_410e0
 	ld [wd265], a
 	ld [CurSpecies], a
-	call Function40bc4
+	call Pokedex_CheckCaught
 	jr z, .asm_410e0
 	push hl
 	push de
@@ -2008,7 +2019,7 @@
 	ld [hBGMapMode], a
 	hlcoord 0, 12
 	ld bc, $0412
-	call Function40ad5
+	call Pokedex_PlaceBorder
 	ld de, String_41126
 	hlcoord 1, 14
 	call PlaceString
@@ -2025,7 +2036,7 @@
 ; 41148
 
 Function41148: ; 41148 (10:5148)
-	ld a, [wc7d4]
+	ld a, [wCurrentDexMode]
 	cp $1
 	jp z, Function41157
 	call Function41229
@@ -2034,7 +2045,7 @@
 
 Function41157: ; 41157 (10:5157)
 	ld hl, Unknown_41167
-	ld a, [wc7d1]
+	ld a, [wDexListingCursor]
 	or a
 	jr nz, .asm_41163
 	ld hl, Unknown_411c8
@@ -2133,7 +2144,7 @@
 ; 41281
 
 Function41281: ; 41281 (10:5281)
-	ld a, [wc7d4]
+	ld a, [wCurrentDexMode]
 	cp $1
 	jp z, Function41157
 	ld hl, Unknown_41290
@@ -2176,7 +2187,7 @@
 	ld a, [hl]
 	cp $ff
 	ret z
-	ld a, [wc7d1]
+	ld a, [wDexListingCursor]
 	and $7
 	swap a
 	add [hl]
@@ -2196,11 +2207,11 @@
 
 Function4130e: ; 4130e (10:530e)
 	push de
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	dec a
 	ld e, a
-	ld a, [wc7d1]
-	ld hl, wc7d0
+	ld a, [wDexListingCursor]
+	ld hl, wDexListingPage
 	add [hl]
 	cp e
 	jr z, .asm_4133f
@@ -2213,7 +2224,7 @@
 	ld a, d
 	or e
 	jr z, .asm_41341
-	ld a, [wc7d2]
+	ld a, [wDexListingEnd]
 	ld c, a
 .asm_41333
 	ld a, e
@@ -2247,6 +2258,7 @@
 	ret
 
 Function4135a: ; 4135a (10:535a)
+; bc = [de] - 1
 	ld a, [de]
 	ld b, a
 	inc de
@@ -2254,52 +2266,55 @@
 	dec a
 	ld c, a
 	inc de
-	call Function413e0
+	call Pokedex_BlinkInfoScreenCursor
+
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and D_LEFT | D_UP
 	and b
-	jr nz, .asm_4138f
+	jr nz, .MoveCursorLeft
 	ld a, [hl]
 	and D_RIGHT | D_DOWN
 	and b
-	jr nz, .asm_413a0
+	jr nz, .MoveCursorRight
 	ld a, [hl]
 	and SELECT
 	and b
-	jr nz, .asm_413c1
-	call Function413f5
-	jr c, .asm_413bf
+	jr nz, .Select
+	call Pokedex_CursorFrameDelay
+	jr c, .NoAction
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT | D_UP
 	and b
-	jr nz, .asm_4138f
+	jr nz, .MoveCursorLeft
 	ld a, [hl]
 	and D_RIGHT | D_DOWN
 	and b
-	jr nz, .asm_413a0
-	jr .asm_413bf
-.asm_4138f
+	jr nz, .MoveCursorRight
+	jr .NoAction
+
+.MoveCursorLeft
 	ld a, [wc7d8]
 	and a
-	jr z, .asm_413bf
-	call Function413d4
-	ld [hl], $7f
+	jr z, .NoAction
+	call Pokedex_GetCursorPosition
+	ld [hl], " "
 	ld hl, wc7d8
 	dec [hl]
-	jr .asm_413af
-.asm_413a0
+	jr .UpdateCursorPosition
+
+.MoveCursorRight
 	ld a, [wc7d8]
 	cp c
-	jr nc, .asm_413bf
-	call Function413d4
-	ld [hl], $7f
+	jr nc, .NoAction
+	call Pokedex_GetCursorPosition
+	ld [hl], " "
 	ld hl, wc7d8
 	inc [hl]
-.asm_413af
-	call Function413d4
-	ld [hl], $ed
+.UpdateCursorPosition
+	call Pokedex_GetCursorPosition
+	ld [hl], "▶"
 	ld a, $c
 	ld [wc7d9], a
 	xor a
@@ -2306,22 +2321,24 @@
 	ld [wc7da], a
 	scf
 	ret
-.asm_413bf
+
+.NoAction
 	and a
 	ret
-.asm_413c1
-	call Function413d4
-	ld [hl], $7f
+
+.Select
+	call Pokedex_GetCursorPosition
+	ld [hl], " "
 	ld a, [wc7d8]
 	cp c
-	jr c, .asm_413ce
+	jr c, .Update
 	ld a, $ff
-.asm_413ce
+.Update
 	inc a
 	ld [wc7d8], a
-	jr .asm_413af
+	jr .UpdateCursorPosition
 
-Function413d4: ; 413d4 (10:53d4)
+Pokedex_GetCursorPosition: ; 413d4 (10:53d4)
 	ld a, [wc7d8]
 	add a
 	ld l, a
@@ -2332,30 +2349,32 @@
 	ld l, a
 	ret
 
-Function413e0: ; 413e0 (10:53e0)
+Pokedex_BlinkInfoScreenCursor: ; 413e0 (10:53e0)
 	ld hl, wc7da
 	ld a, [hl]
 	inc [hl]
 	and $8
-	jr z, .asm_413ef
-	call Function413d4
-	ld [hl], $7f
+	jr z, .blink_on
+	call Pokedex_GetCursorPosition
+	ld [hl], " "
 	ret
-.asm_413ef
-	call Function413d4
-	ld [hl], $ed
+
+.blink_on
+	call Pokedex_GetCursorPosition
+	ld [hl], "▶"
 	ret
 
-Function413f5: ; 413f5 (10:53f5)
+Pokedex_CursorFrameDelay: ; 413f5 (10:53f5)
 	ld hl, wc7d9
 	ld a, [hl]
 	and a
 	ret z
+
 	dec [hl]
 	scf
 	ret
 
-Function413fe: ; 413fe (10:53fe)
+Pokedex_FillBox: ; 413fe (10:53fe)
 	jp FillBoxWithByte
 
 Function41401: ; 41401 (10:5401)
@@ -2374,7 +2393,7 @@
 	ld a, $ff
 	call DmgToCgbBGPals
 	ld a, $ff
-	call Functioncf8
+	call DmgToCgbObjPal0
 	call DelayFrame
 	ret
 
@@ -2386,12 +2405,12 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, $e0
-	call Functioncf8
+	call DmgToCgbObjPal0
 	ret
 ; 41432
 
 
-Function41432: ; 41432
+Pokedex_LoadPointer: ; 41432
 	ld e, a
 	ld d, 0
 rept 2
@@ -2404,10 +2423,10 @@
 ; 4143b
 
 Function4143b: ; 4143b
-	call Function40bb1
-	call Function40bd0
-	jr z, .asm_4145b
-	ld a, [wdef4]
+	call Pokedex_GetMonAtCursorPosition
+	call Pokedex_CheckSeen
+	jr z, .QuestionMark
+	ld a, [wFirstUnownSeen]
 	ld [UnownLetter], a
 	ld a, [wd265]
 	ld [CurPartySpecies], a
@@ -2416,10 +2435,10 @@
 	predef GetFrontpic
 	ret
 
-.asm_4145b
+.QuestionMark
 	ld a, BANK(sScratch)
 	call GetSRAMBank
-	callba Function1de0d7
+	callba LoadQuestionMarkPic
 	ld hl, VTiles2
 	ld de, sScratch
 	ld c, 7 * 7
@@ -2431,13 +2450,13 @@
 ; 41478
 
 
-Function41478: ; 41478 (10:5478)
-	call Function40bb1
+Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
+	call Pokedex_GetMonAtCursorPosition
 
-Function4147b: ; 4147b
+Pokedex_LoadAnyFootprint: ; 4147b
 	ld a, [wd265]
 	dec a
-	and $f8
+	and ($ff ^ $07) ; $f8 ; $1f << 3
 	srl a
 	srl a
 	srl a
@@ -2463,7 +2482,7 @@
 
 	; Whoever was editing footprints forgot to fix their
 	; tile editor. Now each bottom half is 8 tiles off.
-	ld de, $80
+	ld de, 8 tiles
 	add hl, de
 
 	ld e, l
@@ -2476,28 +2495,28 @@
 ; 414b7
 
 
-Function414b7: ; 414b7
+Pokedex_LoadGFX: ; 414b7
 	call DisableLCD
 	ld hl, VTiles2
-	ld bc, $0310
+	ld bc, $31 tiles
 	xor a
 	call ByteFill
-	call Function414fb
+	call Pokedex_LoadInvertedFont
 	call LoadFontsExtra
 	ld hl, VTiles2 tile $60
-	ld bc, $0200
-	call Function41504
-	call Function41a24
-	jr nz, .asm_414e0
-	callba Function1ddf1c
-	jr .asm_414e9
+	ld bc, $20 tiles
+	call Pokedex_InvertTiles
+	call Pokedex_CheckSGB
+	jr nz, .LoadPokedexLZ
+	callba LoadSGBPokedexGFX
+	jr .LoadPokedexSlowpokeLZ
 
-.asm_414e0
+.LoadPokedexLZ
 	ld hl, PokedexLZ
 	ld de, VTiles2 tile $31
 	call Decompress
 
-.asm_414e9
+.LoadPokedexSlowpokeLZ
 	ld hl, PokedexSlowpokeLZ
 	ld de, VTiles0
 	call Decompress
@@ -2506,12 +2525,13 @@
 	call EnableLCD
 	ret
 
-Function414fb: ; 414fb
+Pokedex_LoadInvertedFont: ; 414fb
 	call LoadStandardFont
 	ld hl, VTiles1
-	ld bc, $0800
+	ld bc, $80 tiles
 
-Function41504: ; 41504
+Pokedex_InvertTiles: ; 41504
+.loop
 	ld a, [hl]
 	xor $ff
 	ld [hli], a
@@ -2518,18 +2538,18 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, Function41504
+	jr nz, .loop
 	ret
 ; 4150e
 
 PokedexLZ: ; 4150e
-INCBIN "gfx/unknown/04150e.2bpp.lz"
+INCBIN "gfx/pokedex/pokedex.2bpp.lz"
 ; 416b0
 
 PokedexSlowpokeLZ: ; 416b0
 INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
 
-Function41a24: ; 41a24
+Pokedex_CheckSGB: ; 41a24
 	ld a, [hCGB]
 	or a
 	ret nz
@@ -2538,26 +2558,25 @@
 	ret
 ; 41a2c
 
-Function41a2c: ; 41a2c
+Pokedex_LoadUnownFont: ; 41a2c
 	ld a, BANK(sScratch)
 	call GetSRAMBank
 	ld hl, UnownFont
 	ld de, sScratch + $188
-	ld bc, $270
+	ld bc, 39 tiles
 	ld a, BANK(UnownFont)
 	call FarCopyBytes
 	ld hl, sScratch + $188
-	ld bc, $1b0
-	call Function41504
+	ld bc, 27 tiles
+	call Pokedex_InvertTiles
 	ld de, sScratch + $188
 	ld hl, VTiles2 tile $40
-	lb bc, BANK(Function41a2c), $1b
+	lb bc, BANK(Pokedex_LoadUnownFont), 27
 	call Request2bpp
 	call CloseSRAM
 	ret
 ; 41a58
 
-
 Function41a58: ; 41a58 (10:5a58)
 	ld a, [UnownLetter]
 	push af
@@ -2576,3 +2595,68 @@
 	pop af
 	ld [UnownLetter], a
 	ret
+; 41a7f
+
+_NewPokedexEntry: ; 41a7f
+	xor a
+	ld [hBGMapMode], a
+	callba Function1de247
+	call Pokedex_ResetBGMapMode
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsExtra
+	call Pokedex_LoadGFX
+	call Pokedex_LoadAnyFootprint
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	call Function407fd
+	call Pokedex_DrawFootprint
+	hlcoord 0, 17
+	ld [hl], $3b
+	inc hl
+	ld bc, 19
+	ld a, " "
+	call ByteFill
+	callba DisplayDexEntry
+	call EnableLCD
+	call WaitBGMap
+	call GetBaseData
+	ld de, VTiles2
+	predef GetFrontpic
+	ld a, $4
+	call Function41423
+	ld a, [CurPartySpecies]
+	call PlayCry
+	ret
+; 41ad7
+
+
+Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
+	ld a, $3
+	ld [hBGMapMode], a
+	ld c, 4
+	call DelayFrames
+	ret
+
+Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
+	ld a, $4
+	ld [hBGMapMode], a
+	ld c, 4
+	call DelayFrames
+	ret
+
+Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
+	ld a, [hCGB]
+	and a
+	jr z, .DMG
+	call Pokedex_SetBGMapMode4
+.DMG
+	call Pokedex_SetBGMapMode3
+	ret
+
+
+Pokedex_ResetBGMapMode: ; 41af7
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 41afb
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -24,7 +24,7 @@
 	bit 7, a
 	jr nz, .done
 	call Function90f04
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .loop
 
@@ -59,8 +59,8 @@
 	ld a, $7
 	ld [hWX], a
 	call Function90c4e
-	callba Function8cf53
-	call Function90d32
+	callba ClearSpriteAnims
+	call InitPokegearModeIndicatorArrow
 	ld a, 8
 	call SkipMusic
 	ld a, $e3
@@ -79,14 +79,14 @@
 	ld [wc6db], a
 	call Function90d9e
 	call Function90da8
-	ld b, SCGB_02
+	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
 	ld a, [hCGB]
 	and a
 	ret z
-	ld a, $e4
-	call Functioncf8
+	ld a, %11100100
+	call DmgToCgbObjPal0
 	ret
 
 Function90c4e: ; 90c4e
@@ -121,6 +121,7 @@
 	ld l, e
 	ld a, b
 
+	; standing sprite
 	push af
 	ld de, VTiles0 tile $10
 	ld bc, 4 tiles
@@ -129,7 +130,8 @@
 
 	pop hl
 
-	ld de, $c0
+	; walking sprite
+	ld de, 12 tiles
 	add hl, de
 	ld de, VTiles0 tile $14
 	ld bc, 4 tiles
@@ -148,11 +150,11 @@
 INCBIN "gfx/misc/fast_ship.2bpp"
 ; 90d32
 
-Function90d32: ; 90d32 (24:4d32)
+InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
 	depixel 4, 2, 4, 0
 	ld a, SPRITE_ANIM_INDEX_0D
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $0
 	ret
@@ -199,10 +201,10 @@
 	call GetWorldMapLocation
 
 	cp FAST_SHIP
-	jr z, .asm_90d95
+	jr z, .FastShip
 
 	cp SPECIAL_MAP
-	jr nz, .asm_90d8e
+	jr nz, .LoadLandmark
 
 	ld a, [BackupMapGroup]
 	ld b, a
@@ -210,12 +212,12 @@
 	ld c, a
 	call GetWorldMapLocation
 
-.asm_90d8e
+.LoadLandmark
 	ld [wc6d8], a
 	ld [wc6d7], a
 	ret
 
-.asm_90d95
+.FastShip
 	ld [wc6d8], a
 	ld a, NEW_BARK_TOWN
 	ld [wc6d7], a
@@ -670,8 +672,8 @@
 
 Function9106a: ; 9106a
 	push af
-	ld de, 0
-	ld b, SPRITE_ANIM_INDEX_0A
+	depixel 0, 0
+	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .asm_91079
@@ -680,7 +682,7 @@
 .asm_91079
 	ld a, b
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $10
 	pop af
@@ -688,10 +690,10 @@
 	push bc
 	callba GetLandmarkCoords
 	pop bc
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], e
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld [hl], d
 	ret
@@ -699,15 +701,15 @@
 
 Function91098: ; 91098
 	push af
-	ld de, 0
+	depixel 0, 0
 	ld a, SPRITE_ANIM_INDEX_0D
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $4
-	ld hl, $2
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
-	ld [hl], $0
+	ld [hl], SPRITE_ANIM_SEQ_NULL
 	pop af
 	push bc
 	call Function910d4
@@ -736,10 +738,10 @@
 	ld e, a
 	callba GetLandmarkCoords
 	pop bc
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], e
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld [hl], d
 	ret
@@ -765,7 +767,7 @@
 	depixel 4, 10, 4, 4
 	ld a, SPRITE_ANIM_INDEX_14
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $8
 	call _UpdateRadioStation
@@ -1425,12 +1427,13 @@
 _UpdateRadioStation: ; 9163e (24:563e)
 	jr UpdateRadioStation
 
-Function91640: ; 91640 (24:5640)
+; called from engine/sprite_anims.asm
+AnimateTuningKnob: ; 91640 (24:5640)
 	push bc
 	call .TuningKnob
 	pop bc
 	ld a, [wRadioTuningKnob]
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
@@ -1924,12 +1927,12 @@
 	ld a, e
 	and a
 	jr nz, .kanto
-	call Function91ff2
+	call LoadTownMapGFX
 	call FillJohtoMap
 	ret
 
 .kanto
-	call Function91ff2
+	call LoadTownMapGFX
 	call FillKantoMap
 	ret
 ; 91af3
@@ -1944,15 +1947,15 @@
 	ld [hl], $1
 	xor a
 	ld [hBGMapMode], a
-	callba Function8cf53
-	call Function91ff2
-	ld de, GFX_922e1
+	callba ClearSpriteAnims
+	call LoadTownMapGFX
+	ld de, FlyMapLabelBorderGFX
 	ld hl, VTiles2 tile $30
-	lb bc, BANK(GFX_922e1), 6
+	lb bc, BANK(FlyMapLabelBorderGFX), 6
 	call Request1bpp
 	call FlyMap
-	call Function91c8f
-	ld b, SCGB_02
+	call ret_91c8f
+	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
 .loop
@@ -1966,7 +1969,7 @@
 	jr nz, .pressedA
 	call FlyMapScroll
 	call GetMapCursorCoordinates
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .loop
 
@@ -2181,10 +2184,6 @@
 	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
@@ -2222,7 +2221,7 @@
 	db -1
 ; 91c8f
 
-Function91c8f: ; 91c8f
+ret_91c8f: ; 91c8f
 	ret
 ; 91c90
 
@@ -2343,7 +2342,8 @@
 	ret
 ; 91d11
 
-Function91d11: ; 91d11
+_Area: ; 91d11
+; e: Current landmark
 	ld a, [wd002]
 	push af
 	ld a, [wd003]
@@ -2356,35 +2356,34 @@
 	ld a, $1
 	ld [hInMenu], a
 
-	ld de, GFX_922d1
+	ld de, PokedexNestIconGFX
 	ld hl, VTiles0 tile $7f
-	lb bc, BANK(GFX_922d1), 1
-	call Request2bpp ; actually 1bpp
+	lb bc, BANK(PokedexNestIconGFX), 1
+	call Request2bpp
 
-	call Function91ed0
-
+	call .GetPlayerOrFastShipIcon
 	ld hl, VTiles0 tile $78
-	ld c, $4
+	ld c, 4
 	call Request2bpp
 
-	call Function91ff2
+	call LoadTownMapGFX
 	call FillKantoMap
-	call Function91de9
+	call .PlaceString_MonsNest
 	call TownMapPals
 	hlbgcoord 0, 0, VBGMap1
 	call TownMapBGUpdate
 	call FillJohtoMap
-	call Function91de9
+	call .PlaceString_MonsNest
 	call TownMapPals
 	hlbgcoord 0, 0
 	call TownMapBGUpdate
-	ld b, SCGB_02
+	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
 	xor a
 	ld [hBGMapMode], a
-	xor a
-	call Function91e1e
+	xor a ; Johto
+	call .GetAndPlaceNest
 .loop
 	call JoyTextDelay
 	ld hl, hJoyPressed
@@ -2394,12 +2393,12 @@
 	ld a, [hJoypadDown]
 	and SELECT
 	jr nz, .select
-	call Function91d9b
-	call Function91dcd
+	call .LeftRightInput
+	call .BlinkNestIcons
 	jr .next
 
 .select
-	call Function91e5a
+	call .HideNestsShowPlayer
 
 .next
 	call DelayFrame
@@ -2414,16 +2413,16 @@
 	ret
 ; 91d9b
 
-Function91d9b: ; 91d9b
+.LeftRightInput: ; 91d9b
 	ld a, [hl]
-	and $20
-	jr nz, .asm_91da6
+	and D_LEFT
+	jr nz, .left
 	ld a, [hl]
-	and $10
-	jr nz, .asm_91db7
+	and D_RIGHT
+	jr nz, .right
 	ret
 
-.asm_91da6
+.left
 	ld a, [hWY]
 	cp $90
 	ret z
@@ -2430,11 +2429,11 @@
 	call ClearSprites
 	ld a, $90
 	ld [hWY], a
-	xor a
-	call Function91e1e
+	xor a ; Johto
+	call .GetAndPlaceNest
 	ret
 
-.asm_91db7
+.right
 	ld a, [StatusFlags]
 	bit 6, a ; hall of fame
 	ret z
@@ -2444,12 +2443,12 @@
 	call ClearSprites
 	xor a
 	ld [hWY], a
-	ld a, $1
-	call Function91e1e
+	ld a, 1 ; Kanto
+	call .GetAndPlaceNest
 	ret
 ; 91dcd
 
-Function91dcd: ; 91dcd
+.BlinkNestIcons: ; 91dcd
 	ld a, [hVBlankCounter]
 	ld e, a
 	and $f
@@ -2456,27 +2455,27 @@
 	ret nz
 	ld a, e
 	and $10
-	jr nz, .asm_91ddc
+	jr nz, .copy_sprites
 	call ClearSprites
 	ret
 
-.asm_91ddc
+.copy_sprites
 	hlcoord 0, 0
 	ld de, Sprites
-	ld bc, $a0
+	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
 ; 91de9
 
-Function91de9: ; 91de9
+.PlaceString_MonsNest: ; 91de9
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	hlcoord 0, 1
 	ld a, $6
 	ld [hli], a
-	ld bc, SCREEN_HEIGHT
+	ld bc, SCREEN_WIDTH - 2
 	ld a, $7
 	call ByteFill
 	ld [hl], $17
@@ -2485,54 +2484,56 @@
 	call PlaceString
 	ld h, b
 	ld l, c
-	ld de, String_91e16
+	ld de, .String_SNest
 	call PlaceString
 	ret
 ; 91e16
 
-String_91e16:
+.String_SNest:
 	db "'S NEST@"
 ; 91e1e
 
-Function91e1e: ; 91e1e
+.GetAndPlaceNest: ; 91e1e
 	ld [wd003], a
 	ld e, a
-	callba Function2a01f
+	callba FindNest ; load nest landmarks into TileMap[0,0]
 	decoord 0, 0
 	ld hl, Sprites
-.asm_91e2e
+.nestloop
 	ld a, [de]
 	and a
-	jr z, .asm_91e4d
+	jr z, .done_nest
 	push de
 	ld e, a
 	push hl
 	callba GetLandmarkCoords
 	pop hl
+	; load into OAM
 	ld a, d
-	sub $4
+	sub 4
 	ld [hli], a
 	ld a, e
-	sub $4
+	sub 4
 	ld [hli], a
-	ld a, $7f
+	ld a, $7f ; nest icon in this context
 	ld [hli], a
 	xor a
 	ld [hli], a
+	; next
 	pop de
 	inc de
-	jr .asm_91e2e
+	jr .nestloop
 
-.asm_91e4d
+.done_nest
 	ld hl, Sprites
 	decoord 0, 0
-	ld bc, $a0
+	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
 ; 91e5a
 
-Function91e5a: ; 91e5a
-	call Function91ea9
+.HideNestsShowPlayer: ; 91e5a
+	call .CheckPlayerLocation
 	ret c
 
 	ld a, [wd002]
@@ -2540,12 +2541,12 @@
 	callba GetLandmarkCoords
 	ld c, e
 	ld b, d
-	ld de, Unknown_91e9c
+	ld de, .PlayerOAM
 	ld hl, Sprites
-.asm_91e70
+.ShowPlayerLoop
 	ld a, [de]
 	cp $80
-	jr z, .asm_91e91
+	jr z, .copy
 
 	add b
 	ld [hli], a
@@ -2557,24 +2558,24 @@
 	inc de
 
 	ld a, [de]
-	add $78
+	add $78 ; where the player's sprite is loaded
 	ld [hli], a
 	inc de
 
 	push bc
-	ld c, 0
+	ld c, 0 ; RED
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_91e8c
-	inc c
-.asm_91e8c
+	jr z, .got_gender
+	inc c   ; BLUE
+.got_gender
 	ld a, c
 	ld [hli], a
 	pop bc
 
-	jr .asm_91e70
+	jr .ShowPlayerLoop
 
-.asm_91e91
+.copy
 	ld hl, Sprites + $10
 	ld bc, SpritesEnd - (Sprites + $10)
 	xor a
@@ -2582,15 +2583,18 @@
 	ret
 ; 91e9c
 
-Unknown_91e9c: ; 91e9c
-	db -8, -8,  0
-	db -8,  0,  1
-	db  0, -8,  2
-	db  0,  0,  3
+.PlayerOAM: ; 91e9c
+	db -1 * 8, -1 * 8,  0 ; top left
+	db -1 * 8,  0 * 8,  1 ; top right
+	db  0 * 8, -1 * 8,  2 ; bottom left
+	db  0 * 8,  0 * 8,  3 ; bottom right
 	db $80 ; terminator
 ; 91ea9
 
-Function91ea9: ; 91ea9
+.CheckPlayerLocation: ; 91ea9
+; Don't show the player's sprite if you're
+; not in the same region as what's currently
+; on the screen.
 	ld a, [wd002]
 	cp FAST_SHIP
 	jr z, .johto
@@ -2621,14 +2625,14 @@
 	ret
 ; 91ed0
 
-Function91ed0: ; 91ed0
+.GetPlayerOrFastShipIcon: ; 91ed0
 	ld a, [wd002]
 	cp FAST_SHIP
-	jr z, .asm_91ede
+	jr z, .FastShip
 	callba GetPlayerIcon
 	ret
 
-.asm_91ede
+.FastShip
 	ld de, FastShipGFX
 	ld b, BANK(FastShipGFX)
 	ret
@@ -2678,7 +2682,7 @@
 	hlcoord 0, 0
 .loop
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	ld a, [de]
 	ld [hli], a
@@ -2691,7 +2695,7 @@
 
 	hlcoord 0, 0
 	decoord 0, 0, AttrMap
-	ld bc, 360
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 .loop
 ; Current tile
 	ld a, [hli]
@@ -2743,10 +2747,12 @@
 	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
+	dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 3, 5, 4, 5, 4
+	dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0
+	dn 1, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+	dn 0, 0, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0
+	dn 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3
+	dn 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0
 ; 91f7b
 
 TownMapMon: ; 91f7b
@@ -2766,16 +2772,16 @@
 	callba GetSpeciesIcon
 
 ; Animation/palette
-	ld de, 0
-	ld a, $0
+	depixel 0, 0
+	ld a, SPRITE_ANIM_INDEX_00
 	call _InitSpriteAnimStruct
 
-	ld hl, 3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
-	ld [hl], 8
-	ld hl, 2
+	ld [hl], $8
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
-	ld [hl], 0
+	ld [hl], SPRITE_ANIM_SEQ_NULL
 	ret
 ; 91fa6
 
@@ -2801,17 +2807,17 @@
 	call Request2bpp
 
 ; Animation/palette
-	ld de, 0
-	ld b, $0a ; Male
+	depixel 0, 0
+	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_91fd3
-	ld b, $1e ; Female
-.asm_91fd3
+	jr z, .got_gender
+	ld b, SPRITE_ANIM_INDEX_1E ; Female
+.got_gender
 	ld a, b
 	call _InitSpriteAnimStruct
 
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $10
 
@@ -2821,16 +2827,16 @@
 	callba GetLandmarkCoords
 	pop bc
 
-	ld hl, 4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], e
-	ld hl, 5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld [hl], d
 	ret
 ; 0x91ff2
 
-Function91ff2: ; 91ff2
+LoadTownMapGFX: ; 91ff2
 	ld hl, TownMapGFX
 	ld de, VTiles2
 	lb bc, BANK(TownMapGFX), $30
@@ -2847,14 +2853,14 @@
 INCBIN "gfx/misc/kanto.bin"
 ; 922d1
 
+PokedexNestIconGFX: ; 922d1
+INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
 
-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: ; unreferenced
+FlyMapLabelBorderGFX: ; 922e1
+INCBIN "gfx/pokegear/flymap_label_border.2bpp"
+
+Function92311: ; 92311
+; unreferenced
 	xor a
 	ld [wd002], a
 	call ClearBGPalettes
@@ -2866,11 +2872,11 @@
 	ld [hl], $1
 	xor a
 	ld [hBGMapMode], a
-	callba Function8cf53
-	call Function91ff2
-	ld de, GFX_922e1
+	callba ClearSpriteAnims
+	call LoadTownMapGFX
+	ld de, FlyMapLabelBorderGFX
 	ld hl, VTiles2 tile $30
-	lb bc, BANK(GFX_922e1), 6
+	lb bc, BANK(FlyMapLabelBorderGFX), 6
 	call Request1bpp
 	call FillKantoMap
 	call TownMapBubble
@@ -2887,7 +2893,7 @@
 	ld [wd003], a
 	ld a, b
 	ld [wd004], a
-	ld b, SCGB_02
+	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
 .loop
@@ -2899,9 +2905,9 @@
 	ld a, [hl]
 	and A_BUTTON
 	jr nz, .pressedA
-	call Function923b8
+	call .HandleDPad
 	call GetMapCursorCoordinates
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .loop
 
@@ -2934,36 +2940,36 @@
 	ret
 ; 923b8
 
-Function923b8: ; 923b8
+.HandleDPad: ; 923b8
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_DOWN | D_RIGHT
-	jr nz, .asm_923c6
+	jr nz, .down_right
 	ld a, [hl]
 	and D_UP | D_LEFT
-	jr nz, .asm_923d3
+	jr nz, .up_left
 	ret
 
-.asm_923c6
+.down_right
 	ld hl, wd002
 	ld a, [hl]
 	cp FLY_INDIGO
-	jr c, .asm_923d0
+	jr c, .okay_dr
 	ld [hl], -1
-.asm_923d0
+.okay_dr
 	inc [hl]
-	jr .asm_923dd
+	jr .continue
 
-.asm_923d3
+.up_left
 	ld hl, wd002
 	ld a, [hl]
 	and a
-	jr nz, .asm_923dc
+	jr nz, .okay_ul
 	ld [hl], FLY_INDIGO + 1
-.asm_923dc
+.okay_ul
 	dec [hl]
 
-.asm_923dd
+.continue
 	ld a, [wd002]
 	cp KANTO_FLYPOINT
 	jr c, .johto
@@ -2971,7 +2977,7 @@
 	call FillKantoMap
 	xor a
 	ld b, $9c
-	jr .asm_923f3
+	jr .finish
 
 .johto
 	call FillJohtoMap
@@ -2978,7 +2984,7 @@
 	ld a, $90
 	ld b, $98
 
-.asm_923f3
+.finish
 	ld [hWY], a
 	ld a, b
 	ld [hBGMapAddress + 1], a
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -34,7 +34,7 @@
 	add_predef Predef1
 	add_predef HealParty
 	add_predef FlagPredef
-	add_predef DrawPartyMenuHPBar
+	add_predef ComputeHPBarPixels
 	add_predef FillPP
 	add_predef TryAddMonToParty
 	add_predef AddTempmonToParty
@@ -65,7 +65,7 @@
 	add_predef ListMoves ; $20
 	add_predef PlaceNonFaintStatus
 	add_predef Function50cdb
-	add_predef Function50c50
+	add_predef ListMovePP
 	add_predef GetGender
 	add_predef StatsScreenInit
 	add_predef DrawPlayerHP
@@ -76,11 +76,11 @@
 	add_predef PrintType
 	add_predef PrintMonTypes
 	add_predef GetUnownLetter
-	add_predef Functioncbcdd
+	add_predef LoadPoisonBGPals
 	add_predef Predef2F
 	add_predef Function9853 ; $30
 	add_predef Predef_LoadSGBLayout
-	add_predef Function91d11
+	add_predef _Area
 	add_predef CheckContestMon
 	add_predef Predef_StartBattle
 	add_predef Predef35
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -20,7 +20,7 @@
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_84031
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -31,7 +31,8 @@
 ; 84031
 
 
-Jumptable_84031: ; 84031 (21:4031)
+.Jumptable: ; 84031 (21:4031)
+	
 	dw Function84077
 	dw Function84143
 	dw Function84120
@@ -427,12 +428,12 @@
 ; 842db
 
 
-Function842db:: ; 842db
+_PrinterReceive:: ; 842db
 	ld a, [wc2d5]
 	add a
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_842ea
+	ld hl, .Jumptable
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -441,7 +442,8 @@
 ; 842ea
 
 
-Jumptable_842ea: ; 842ea (21:42ea)
+.Jumptable: ; 842ea (21:42ea)
+	
 	dw Function8432f
 	dw Function84330
 	dw Function84339
@@ -672,7 +674,7 @@
 	call Function84000
 	ld a, $10
 	ld [wcbfa], a
-	callba Function1dc1b0
+	callba PrintPage1
 	call ClearTileMap
 	ld a, $e4
 	call DmgToCgbBGPals
@@ -694,7 +696,7 @@
 	call Function84000
 	ld a, $3
 	ld [wcbfa], a
-	callba Function1dc213
+	callba PrintPage2
 	call Function84742
 	ld a, $4
 	ld [wcf65], a
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -274,7 +274,7 @@
 	ld [CurPartySpecies], a
 	call GetPokemonName
 	ld hl, StringBuffer1
-	ld de, wOaksPkmnTalkPkmnNameBuffer
+	ld de, wMonOrItemNameBuffer
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	; Now that we've chosen our wild Pokemon,
--- /dev/null
+++ b/engine/rtc.asm
@@ -1,0 +1,210 @@
+StopRTC: ; Unreferenced???
+	ld a, SRAM_ENABLE
+	ld [MBC3SRamEnable], a
+	call LatchClock
+	ld a, RTC_DH
+	ld [MBC3SRamBank], a
+	ld a, [MBC3RTC]
+	set 6, a ; halt
+	ld [MBC3RTC], a
+	call CloseSRAM
+	ret
+; 14019
+
+StartRTC: ; 14019
+	ld a, SRAM_ENABLE
+	ld [MBC3SRamEnable], a
+	call LatchClock
+	ld a, RTC_DH
+	ld [MBC3SRamBank], a
+	ld a, [MBC3RTC]
+	res 6, a ; halt
+	ld [MBC3RTC], a
+	call CloseSRAM
+	ret
+; 14032
+
+GetTimeOfDay:: ; 14032
+; get time of day based on the current hour
+	ld a, [hHours] ; hour
+	ld hl, TimesOfDay
+
+.check
+; if we're within the given time period,
+; get the corresponding time of day
+	cp [hl]
+	jr c, .match
+; else, get the next entry
+rept 2
+	inc hl
+endr
+; try again
+	jr .check
+
+.match
+; get time of day
+	inc hl
+	ld a, [hl]
+	ld [TimeOfDay], a
+	ret
+; 14044
+
+TimesOfDay: ; 14044
+; hours for the time of day
+; 04-09 morn | 10-17 day | 18-03 nite
+	db 04, NITE
+	db 10, MORN
+	db 18, DAY
+	db 24, NITE
+	db -1, MORN
+; 1404e
+
+Unknown_1404e: ; Unreferenced
+	db 20, 2
+	db 40, 0
+	db 60, 1
+	db -1, 0
+; 14056
+
+StageRTCTimeForSave: ; 14056
+	call UpdateTime
+	ld hl, wRTC
+	ld a, [CurDay]
+	ld [hli], a
+	ld a, [hHours]
+	ld [hli], a
+	ld a, [hMinutes]
+	ld [hli], a
+	ld a, [hSeconds]
+	ld [hli], a
+	ret
+; 1406a
+
+SaveRTC: ; 1406a
+	ld a, $a
+	ld [MBC3SRamEnable], a
+	call LatchClock
+	ld hl, MBC3RTC
+	ld a, $c
+	ld [MBC3SRamBank], a
+	res 7, [hl]
+	ld a, BANK(sRTCStatusFlags)
+	ld [MBC3SRamBank], a
+	xor a
+	ld [sRTCStatusFlags], a
+	call CloseSRAM
+	ret
+; 14089
+
+StartClock:: ; 14089
+	call GetClock
+	call Function1409b
+	call FixDays
+	jr nc, .skip_set
+	; bit 5: Day count exceeds 139
+	; bit 6: Day count exceeds 255
+	call RecordRTCStatus ; set flag on sRTCStatusFlags
+
+.skip_set
+	call StartRTC
+	ret
+; 1409b
+
+Function1409b: ; 1409b
+	ld hl, hRTCDayHi
+	bit 7, [hl]
+	jr nz, .set_bit_7
+	bit 6, [hl]
+	jr nz, .set_bit_7
+	xor a
+	ret
+
+.set_bit_7
+	; Day count exceeds 16383
+	ld a, %10000000
+	call RecordRTCStatus ; set bit 7 on sRTCStatusFlags
+	ret
+; 140ae
+
+Function140ae: ; 140ae
+	call CheckRTCStatus
+	ld c, a
+	and %11000000 ; Day count exceeded 255 or 16383
+	jr nz, .time_overflow
+
+	ld a, c
+	and %00100000 ; Day count exceeded 139
+	jr z, .dont_update
+
+	call UpdateTime
+	ld a, [wRTC + 0]
+	ld b, a
+	ld a, [CurDay]
+	cp b
+	jr c, .dont_update
+
+.time_overflow
+	callba ClearDailyTimers
+	callba Function170923
+; mobile
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8c]
+	inc a
+	ld [$aa8c], a
+	ld a, [$b2fa]
+	inc a
+	ld [$b2fa], a
+	call CloseSRAM
+	ret
+
+.dont_update
+	xor a
+	ret
+; 140ed
+
+_InitTime:: ; 140ed
+	call GetClock
+	call FixDays
+	ld hl, hRTCSeconds
+	ld de, StartSecond
+
+	ld a, [StringBuffer2 + 3]
+	sub [hl]
+	dec hl
+	jr nc, .okay_secs
+	add 60
+.okay_secs
+	ld [de], a
+	dec de
+
+	ld a, [StringBuffer2 + 2]
+	sbc [hl]
+	dec hl
+	jr nc, .okay_mins
+	add 60
+.okay_mins
+	ld [de], a
+	dec de
+
+	ld a, [StringBuffer2 + 1]
+	sbc [hl]
+	dec hl
+	jr nc, .okay_hrs
+	add 24
+.okay_hrs
+	ld [de], a
+	dec de
+
+	ld a, [StringBuffer2]
+	sbc [hl]
+	dec hl
+	jr nc, .okay_days
+	add 140
+	ld c, 7
+	call SimpleDivide
+
+.okay_days
+	ld [de], a
+	ret
+; 1412a
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -18,7 +18,7 @@
 
 .refused
 	call ExitMenu
-	call Functiond90
+	call ret_d90
 	callba SaveMenu_LoadEDTile
 	scf
 	ret
@@ -182,7 +182,7 @@
 	ld a, [wSaveFileExists]
 	and a
 	jr z, .erase
-	call Function14bcb
+	call CompareLoadedAndSavedPlayerID
 	jr z, .yoursavefile
 	ld hl, UnknownText_0x15297
 	call SaveTheGame_yesorno
@@ -213,17 +213,17 @@
 	call LoadMenuTextBox
 	lb bc, 0, 7
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	call WriteBackup
+	call CloseWindow
 	push af
-	call Functiond90
+	call ret_d90
 	pop af
 	and a
 	ret
 ; 14bcb
 
-Function14bcb: ; 14bcb
+CompareLoadedAndSavedPlayerID: ; 14bcb
 	ld a, BANK(sPlayerData)
 	call GetSRAMBank
 	ld hl, sPlayerData + (PlayerID - wPlayerData)
@@ -291,7 +291,7 @@
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
 	ld a, [sBattleTowerChallengeState]
-	cp $4
+	cp BATTLETOWER_RECEIVED_REWARD
 	jr nz, .ok
 	xor a
 	ld [sBattleTowerChallengeState], a
@@ -373,7 +373,7 @@
 	call EraseLinkBattleStats
 	call EraseMysteryGift
 	call SaveData
-	call Function14d5c
+	call EraseBattleTowerStatus
 	ld a, BANK(sStackTop)
 	call GetSRAMBank
 	xor a
@@ -437,7 +437,7 @@
 	db $11, $0c, $0c, $06, $06, $04
 ; 14d5c
 
-Function14d5c: ; 14d5c
+EraseBattleTowerStatus: ; 14d5c
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
 	xor a
@@ -486,7 +486,7 @@
 ; 14da0
 
 
-Function14da0: ; 14da0
+HallOfFame_InitSaveIfNeeded: ; 14da0
 	ld a, [wSavedAtLeastOnce]
 	and a
 	ret nz
@@ -512,7 +512,7 @@
 	ld bc, OptionsEnd - Options
 	call CopyBytes
 	ld a, [Options]
-	and $ef
+	and $ff ^ (1 << NO_TEXT_SCROLL)
 	ld [sOptions], a
 	jp CloseSRAM
 ; 14dd7
@@ -791,9 +791,9 @@
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
 	ld a, [sBattleTowerChallengeState]
-	cp $4
+	cp BATTLETOWER_RECEIVED_REWARD
 	jr nz, .not_4
-	ld a, $3
+	ld a, BATTLETOWER_WON_CHALLENGE
 	ld [sBattleTowerChallengeState], a
 .not_4
 	call CloseSRAM
@@ -892,7 +892,7 @@
 	jp CloseSRAM
 
 
-Function150b9: ; 150b9
+_LoadData: ; 150b9
 	ld a, BANK(sCrystalData)
 	call GetSRAMBank
 	ld hl, sCrystalData
@@ -938,8 +938,11 @@
 ; 150f9
 
 SaveBoxAddress: ; 150f9
+; Save box via wMisc.
+; We do this in three steps because the size of wMisc is less than
+; the size of sBox.
 	push hl
-
+; Load the first part of the active box.
 	push af
 	push de
 	ld a, BANK(sBox)
@@ -951,7 +954,7 @@
 	call CloseSRAM
 	pop de
 	pop af
-
+; Save it to the target box.
 	push af
 	push de
 	call GetSRAMBank
@@ -959,6 +962,8 @@
 	ld bc, (wMiscEnd - wMisc)
 	call CopyBytes
 	call CloseSRAM
+
+; Load the second part of the active box.
 	ld a, BANK(sBox)
 	call GetSRAMBank
 	ld hl, sBox + (wMiscEnd - wMisc)
@@ -973,7 +978,7 @@
 	add hl, de
 	ld e, l
 	ld d, h
-
+; Save it to the next part of the target box.
 	push af
 	push de
 	call GetSRAMBank
@@ -981,6 +986,8 @@
 	ld bc, (wMiscEnd - wMisc)
 	call CopyBytes
 	call CloseSRAM
+
+; Load the third and final part of the active box.
 	ld a, BANK(sBox)
 	call GetSRAMBank
 	ld hl, sBox + (wMiscEnd - wMisc) * 2
@@ -995,7 +1002,7 @@
 	add hl, de
 	ld e, l
 	ld d, h
-
+; Save it to the final part of the target box.
 	call GetSRAMBank
 	ld hl, wMisc
 	ld bc, sBoxEnd - (sBox + (wMiscEnd - wMisc) * 2) ; $8e
@@ -1008,10 +1015,13 @@
 
 
 LoadBoxAddress: ; 1517d (5:517d)
+; Load box via wMisc.
+; We do this in three steps because the size of wMisc is less than
+; the size of sBox.
 	push hl
 	ld l, e
 	ld h, d
-
+; Load part 1
 	push af
 	push hl
 	call GetSRAMBank
@@ -1031,7 +1041,7 @@
 
 	ld de, (wMiscEnd - wMisc)
 	add hl, de
-
+; Load part 2
 	push af
 	push hl
 	call GetSRAMBank
@@ -1048,7 +1058,7 @@
 	call CloseSRAM
 	pop hl
 	pop af
-
+; Load part 3
 	ld de, (wMiscEnd - wMisc)
 	add hl, de
 	call GetSRAMBank
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -70,178 +70,178 @@
 
 
 ScriptCommandTable: ; 96cb1
-	dw Script_scall
-	dw Script_farscall
-	dw Script_ptcall
-	dw Script_jump
-	dw Script_farjump
-	dw Script_ptjump
-	dw Script_if_equal
-	dw Script_if_not_equal
-	dw Script_iffalse
-	dw Script_iftrue
-	dw Script_if_greater_than
-	dw Script_if_less_than
-	dw Script_jumpstd
-	dw Script_callstd
-	dw Script_callasm
-	dw Script_special
-	dw Script_ptcallasm
-	dw Script_checkmaptriggers
-	dw Script_domaptrigger
-	dw Script_checktriggers
-	dw Script_dotrigger
-	dw Script_writebyte
-	dw Script_addvar
-	dw Script_random
-	dw Script_checkver
-	dw Script_copybytetovar
-	dw Script_copyvartobyte
-	dw Script_loadvar
-	dw Script_checkcode
-	dw Script_writevarcode
-	dw Script_writecode
-	dw Script_giveitem
-	dw Script_takeitem
-	dw Script_checkitem
-	dw Script_givemoney
-	dw Script_takemoney
-	dw Script_checkmoney
-	dw Script_givecoins
-	dw Script_takecoins
-	dw Script_checkcoins
-	dw Script_addcellnum
-	dw Script_delcellnum
-	dw Script_checkcellnum
-	dw Script_checktime
-	dw Script_checkpoke
-	dw Script_givepoke
-	dw Script_giveegg
-	dw Script_givepokeitem
-	dw Script_checkpokeitem
-	dw Script_checkevent
-	dw Script_clearevent
-	dw Script_setevent
-	dw Script_checkflag
-	dw Script_clearflag
-	dw Script_setflag
-	dw Script_wildon
-	dw Script_wildoff
-	dw Script_xycompare
-	dw Script_warpmod
-	dw Script_blackoutmod
-	dw Script_warp
-	dw Script_readmoney
-	dw Script_readcoins
-	dw Script_RAM2MEM
-	dw Script_pokenamemem
-	dw Script_itemtotext
-	dw Script_mapnametotext
-	dw Script_trainertotext
-	dw Script_stringtotext
-	dw Script_itemnotify
-	dw Script_pocketisfull
-	dw Script_loadfont
-	dw Script_refreshscreen
-	dw Script_loadmovesprites
-	dw Script_loadbytec2cf
-	dw Script_farwritetext
-	dw Script_writetext
-	dw Script_repeattext
-	dw Script_yesorno
-	dw Script_loadmenudata
-	dw Script_writebackup
-	dw Script_jumptextfaceplayer
+	dw Script_scall                      ; 00
+	dw Script_farscall                   ; 01
+	dw Script_ptcall                     ; 02
+	dw Script_jump                       ; 03
+	dw Script_farjump                    ; 04
+	dw Script_ptjump                     ; 05
+	dw Script_if_equal                   ; 06
+	dw Script_if_not_equal               ; 07
+	dw Script_iffalse                    ; 08
+	dw Script_iftrue                     ; 09
+	dw Script_if_greater_than            ; 0a
+	dw Script_if_less_than               ; 0b
+	dw Script_jumpstd                    ; 0c
+	dw Script_callstd                    ; 0d
+	dw Script_callasm                    ; 0e
+	dw Script_special                    ; 0f
+	dw Script_ptcallasm                  ; 10
+	dw Script_checkmaptriggers           ; 11
+	dw Script_domaptrigger               ; 12
+	dw Script_checktriggers              ; 13
+	dw Script_dotrigger                  ; 14
+	dw Script_writebyte                  ; 15
+	dw Script_addvar                     ; 16
+	dw Script_random                     ; 17
+	dw Script_checkver                   ; 18
+	dw Script_copybytetovar              ; 19
+	dw Script_copyvartobyte              ; 1a
+	dw Script_loadvar                    ; 1b
+	dw Script_checkcode                  ; 1c
+	dw Script_writevarcode               ; 1d
+	dw Script_writecode                  ; 1e
+	dw Script_giveitem                   ; 1f
+	dw Script_takeitem                   ; 20
+	dw Script_checkitem                  ; 21
+	dw Script_givemoney                  ; 22
+	dw Script_takemoney                  ; 23
+	dw Script_checkmoney                 ; 24
+	dw Script_givecoins                  ; 25
+	dw Script_takecoins                  ; 26
+	dw Script_checkcoins                 ; 27
+	dw Script_addcellnum                 ; 28
+	dw Script_delcellnum                 ; 29
+	dw Script_checkcellnum               ; 2a
+	dw Script_checktime                  ; 2b
+	dw Script_checkpoke                  ; 2c
+	dw Script_givepoke                   ; 2d
+	dw Script_giveegg                    ; 2e
+	dw Script_givepokeitem               ; 2f
+	dw Script_checkpokeitem              ; 30
+	dw Script_checkevent                 ; 31
+	dw Script_clearevent                 ; 32
+	dw Script_setevent                   ; 33
+	dw Script_checkflag                  ; 34
+	dw Script_clearflag                  ; 35
+	dw Script_setflag                    ; 36
+	dw Script_wildon                     ; 37
+	dw Script_wildoff                    ; 38
+	dw Script_xycompare                  ; 39
+	dw Script_warpmod                    ; 3a
+	dw Script_blackoutmod                ; 3b
+	dw Script_warp                       ; 3c
+	dw Script_readmoney                  ; 3d
+	dw Script_readcoins                  ; 3e
+	dw Script_RAM2MEM                    ; 3f
+	dw Script_pokenamemem                ; 40
+	dw Script_itemtotext                 ; 41
+	dw Script_mapnametotext              ; 42
+	dw Script_trainertotext              ; 43
+	dw Script_stringtotext               ; 44
+	dw Script_itemnotify                 ; 45
+	dw Script_pocketisfull               ; 46
+	dw Script_textbox                   ; 47
+	dw Script_refreshscreen              ; 48
+	dw Script_closetext                  ; 49
+	dw Script_loadbytec2cf               ; 4a
+	dw Script_farwritetext               ; 4b
+	dw Script_writetext                  ; 4c
+	dw Script_repeattext                 ; 4d
+	dw Script_yesorno                    ; 4e
+	dw Script_loadmenudata               ; 4f
+	dw Script_closewindow                ; 50
+	dw Script_jumptextfaceplayer         ; 51
 IF _CRYSTAL
-	dw Script_farjumptext
+	dw Script_farjumptext                ; 52
 ENDC
-	dw Script_jumptext
-	dw Script_closetext
-	dw Script_keeptextopen
-	dw Script_pokepic
-	dw Script_pokepicyesorno
-	dw Script_interpretmenu
-	dw Script_interpretmenu2
-	dw Script_loadpikachudata
-	dw Script_battlecheck
-	dw Script_loadtrainerdata
-	dw Script_loadpokedata
-	dw Script_loadtrainer
-	dw Script_startbattle
-	dw Script_returnafterbattle
-	dw Script_catchtutorial
-	dw Script_trainertext
-	dw Script_trainerstatus
-	dw Script_winlosstext
-	dw Script_scripttalkafter
-	dw Script_talkaftercancel
-	dw Script_talkaftercheck
-	dw Script_setlasttalked
-	dw Script_applymovement
-	dw Script_applymovement2
-	dw Script_faceplayer
-	dw Script_faceperson
-	dw Script_variablesprite
-	dw Script_disappear
-	dw Script_appear
-	dw Script_follow
-	dw Script_stopfollow
-	dw Script_moveperson
-	dw Script_writepersonxy
-	dw Script_loademote
-	dw Script_showemote
-	dw Script_spriteface
-	dw Script_follownotexact
-	dw Script_earthquake
-	dw Script_changemap
-	dw Script_changeblock
-	dw Script_reloadmap
-	dw Script_reloadmappart
-	dw Script_writecmdqueue
-	dw Script_delcmdqueue
-	dw Script_playmusic
-	dw Script_playrammusic
-	dw Script_musicfadeout
-	dw Script_playmapmusic
-	dw Script_reloadmapmusic
-	dw Script_cry
-	dw Script_playsound
-	dw Script_waitbutton
-	dw Script_warpsound
-	dw Script_specialsound
-	dw Script_passtoengine
-	dw Script_newloadmap
-	dw Script_pause
-	dw Script_deactivatefacing
-	dw Script_priorityjump
-	dw Script_warpcheck
-	dw Script_ptpriorityjump
-	dw Script_return
-	dw Script_end
-	dw Script_reloadandreturn
-	dw Script_resetfuncs
-	dw Script_pokemart
-	dw Script_elevator
-	dw Script_trade
-	dw Script_askforphonenumber
-	dw Script_phonecall
-	dw Script_hangup
-	dw Script_describedecoration
-	dw Script_fruittree
-	dw Script_specialphonecall
-	dw Script_checkphonecall
-	dw Script_verbosegiveitem
-	dw Script_verbosegiveitem2
-	dw Script_loadwilddata
-	dw Script_halloffame
-	dw Script_credits
-	dw Script_warpfacing
-	dw Script_battletowertext
-	dw Script_displaylocation
-	dw Script_trainerclassname
-	dw Script_name
-	dw Script_wait
-	dw Script_check_save
+	dw Script_jumptext                   ; 53
+	dw Script_waitbutton                 ; 54
+	dw Script_buttonsound                ; 55
+	dw Script_pokepic                    ; 56
+	dw Script_closepokepic               ; 57
+	dw Script__2dmenu              ; 58
+	dw Script_verticalmenu             ; 59
+	dw Script_loadpikachudata            ; 5a
+	dw Script_randomwildmon              ; 5b
+	dw Script_loadmemtrainer             ; 5c
+	dw Script_loadwildmon                ; 5d
+	dw Script_loadtrainer                ; 5e
+	dw Script_startbattle                ; 5f
+	dw Script_reloadmapafterbattle          ; 60
+	dw Script_catchtutorial              ; 61
+	dw Script_trainertext                ; 62
+	dw Script_trainerflagaction          ; 63
+	dw Script_winlosstext                ; 64
+	dw Script_scripttalkafter            ; 65
+	dw Script_end_if_just_battled        ; 66
+	dw Script_check_just_battled         ; 67
+	dw Script_setlasttalked              ; 68
+	dw Script_applymovement              ; 69
+	dw Script_applymovement2             ; 6a
+	dw Script_faceplayer                 ; 6b
+	dw Script_faceperson                 ; 6c
+	dw Script_variablesprite             ; 6d
+	dw Script_disappear                  ; 6e
+	dw Script_appear                     ; 6f
+	dw Script_follow                     ; 70
+	dw Script_stopfollow                 ; 71
+	dw Script_moveperson                 ; 72
+	dw Script_writepersonxy              ; 73
+	dw Script_loademote                  ; 74
+	dw Script_showemote                  ; 75
+	dw Script_spriteface                 ; 76
+	dw Script_follownotexact             ; 77
+	dw Script_earthquake                 ; 78
+	dw Script_changemap                  ; 79
+	dw Script_changeblock                ; 7a
+	dw Script_reloadmap                  ; 7b
+	dw Script_reloadmappart              ; 7c
+	dw Script_writecmdqueue              ; 7d
+	dw Script_delcmdqueue                ; 7e
+	dw Script_playmusic                  ; 7f
+	dw Script_encountermusic             ; 80
+	dw Script_musicfadeout               ; 81
+	dw Script_playmapmusic               ; 82
+	dw Script_dontrestartmapmusic             ; 83
+	dw Script_cry                        ; 84
+	dw Script_playsound                  ; 85
+	dw Script_waitsfx                    ; 86
+	dw Script_warpsound                  ; 87
+	dw Script_specialsound               ; 88
+	dw Script_passtoengine               ; 89
+	dw Script_newloadmap                 ; 8a
+	dw Script_pause                      ; 8b
+	dw Script_deactivatefacing           ; 8c
+	dw Script_priorityjump               ; 8d
+	dw Script_warpcheck                  ; 8e
+	dw Script_ptpriorityjump             ; 8f
+	dw Script_return                     ; 90
+	dw Script_end                        ; 91
+	dw Script_reloadandreturn            ; 92
+	dw Script_end_all                    ; 93
+	dw Script_pokemart                   ; 94
+	dw Script_elevator                   ; 95
+	dw Script_trade                      ; 96
+	dw Script_askforphonenumber          ; 97
+	dw Script_phonecall                  ; 98
+	dw Script_hangup                     ; 99
+	dw Script_describedecoration         ; 9a
+	dw Script_fruittree                  ; 9b
+	dw Script_specialphonecall           ; 9c
+	dw Script_checkphonecall             ; 9d
+	dw Script_verbosegiveitem            ; 9e
+	dw Script_verbosegiveitem2           ; 9f
+	dw Script_swarm                      ; a0
+	dw Script_halloffame                 ; a1
+	dw Script_credits                    ; a2
+	dw Script_warpfacing                 ; a3
+	dw Script_battletowertext            ; a4
+	dw Script_landmarktotext             ; a5
+	dw Script_trainerclassname           ; a6
+	dw Script_name                       ; a7
+	dw Script_wait                       ; a8
+	dw Script_check_save                 ; a9
 ; 96e05
 
 StartScript: ; 96e05
@@ -316,11 +316,11 @@
 ;     text_pointer (RawTextPointerLabelParam)
 
 	ld a, [ScriptBank]
-	ld [wd44e], a
+	ld [wScriptTextBank], a
 	call GetScriptByte
-	ld [wd44f], a
+	ld [wScriptTextAddr], a
 	call GetScriptByte
-	ld [wd450], a
+	ld [wScriptTextAddr + 1], a
 	ld b, BANK(JumpTextFacePlayerScript)
 	ld hl, JumpTextFacePlayerScript
 	jp ScriptJump
@@ -332,11 +332,11 @@
 ;     text_pointer (RawTextPointerLabelParam)
 
 	ld a, [ScriptBank]
-	ld [wd44e], a
+	ld [wScriptTextBank], a
 	call GetScriptByte
-	ld [wd44f], a
+	ld [wScriptTextAddr], a
 	call GetScriptByte
-	ld [wd450], a
+	ld [wScriptTextAddr + 1], a
 	ld b, BANK(JumpTextScript)
 	ld hl, JumpTextScript
 	jp ScriptJump
@@ -345,10 +345,10 @@
 JumpTextFacePlayerScript: ; 96e79
 	faceplayer
 JumpTextScript: ; 96e7a
-	loadfont
+	opentext
 	repeattext -1, -1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 96e81
 
@@ -361,11 +361,11 @@
 ;     text_pointer (PointerLabelBeforeBank)
 
 	call GetScriptByte
-	ld [wd44e], a
+	ld [wScriptTextBank], a
 	call GetScriptByte
-	ld [wd44f], a
+	ld [wScriptTextAddr], a
 	call GetScriptByte
-	ld [wd450], a
+	ld [wScriptTextAddr + 1], a
 	ld b, BANK(JumpTextScript)
 	ld hl, JumpTextScript
 	jp ScriptJump
@@ -419,7 +419,7 @@
 	ld a, l
 	cp -1
 	jr nz, .done
-	ld hl, wd44e
+	ld hl, wScriptTextBank
 	ld a, [hli]
 	ld b, a
 	ld a, [hli]
@@ -427,17 +427,18 @@
 	ld l, a
 	call MapTextbox
 	ret
+
 .done
 	ret
 ; 96ed9
 
-Script_closetext: ; 96ed9
+Script_waitbutton: ; 96ed9
 ; script command 0x54
 
-	jp CloseText
+	jp WaitButton
 ; 96edc
 
-Script_keeptextopen: ; 96edc
+Script_buttonsound: ; 96edc
 ; script command 0x55
 
 	ld a, [hOAMUpdate]
@@ -445,7 +446,7 @@
 	ld a, $1
 	ld [hOAMUpdate], a
 	call WaitBGMap
-	call KeepTextOpen
+	call ButtonSound
 	pop af
 	ld [hOAMUpdate], a
 	ret
@@ -455,9 +456,9 @@
 ; script command 0x4e
 
 	call YesNoBox
-	ld a, 0
+	ld a, FALSE
 	jr c, .no
-	ld a, 1
+	ld a, TRUE
 .no
 	ld [ScriptVar], a
 	ret
@@ -479,10 +480,10 @@
 	ret
 ; 96f0f
 
-Script_writebackup: ; 96f0f
+Script_closewindow: ; 96f0f
 ; script command 0x50
 
-	call WriteBackup
+	call CloseWindow
 	call UpdateSprites
 	ret
 ; 96f16
@@ -502,20 +503,20 @@
 	ret
 ; 96f29
 
-Script_pokepicyesorno: ; 96f29
+Script_closepokepic: ; 96f29
 ; script command 0x57
 
-	callba PokepicYesOrNo
+	callba ClosePokepic
 	ret
 ; 96f30
 
-Script_interpretmenu2: ; 96f30
+Script_verticalmenu: ; 96f30
 ; script command 0x59
 
 	ld a, [ScriptBank]
-	ld hl, InterpretMenu2
+	ld hl, VerticalMenu
 	rst FarCall
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	jr nc, .ok
 	xor a
 .ok
@@ -523,11 +524,11 @@
 	ret
 ; 96f41
 
-Script_interpretmenu: ; 96f41
+Script__2dmenu: ; 96f41
 ; script command 0x58
 
 	ld a, [ScriptBank]
-	ld hl, InterpretMenu
+	ld hl, _2DMenu
 	rst FarCall
 	ld a, [wMenuCursorBuffer]
 	jr nc, .ok
@@ -575,14 +576,14 @@
 	callasm ret_96f76
 	writetext ReceivedItemText
 	iffalse .Full
-	waitbutton
+	waitsfx
 	specialsound
-	closetext
+	waitbutton
 	itemnotify
 	end
 
 .Full
-	keeptextopen
+	buttonsound
 	pocketisfull
 	end
 ; 96f89
@@ -611,7 +612,7 @@
 	ld [wItemQuantityChangeBuffer], a
 	ld hl, NumItems
 	call ReceiveItem
-	ld a, 1
+	ld a, TRUE
 	jr c, .ok2
 	xor a
 .ok2
@@ -748,7 +749,7 @@
 	ld b, a
 	callba Elevator
 	ret c
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 97099
@@ -835,7 +836,7 @@
 	jp ScriptJump
 ; 970fc
 
-Script_loadwilddata: ; 970fc
+Script_swarm: ; 970fc
 ; script command 0xa0
 ; parameters:
 ;     flag (SingleByteParam)
@@ -848,7 +849,7 @@
 	ld d, a
 	call GetScriptByte
 	ld e, a
-	callba LoadWildData
+	callba StoreSwarmMapIndices
 	ret
 ; 9710f
 
@@ -861,9 +862,8 @@
 	ld c, a
 	ld b, 0
 	ld hl, WalkingX
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -876,7 +876,7 @@
 Script_scripttalkafter: ; 97125
 ; script command 0x65
 
-	ld hl, wd04b
+	ld hl, wScriptAfterPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -885,7 +885,7 @@
 	jp ScriptJump
 ; 97132
 
-Script_trainerstatus: ; 97132
+Script_trainerflagaction: ; 97132
 ; script command 0x63
 ; parameters:
 ;     action (SingleByteParam)
@@ -902,7 +902,7 @@
 	ld a, c
 	and a
 	ret z
-	ld a, 1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 9714c
@@ -926,7 +926,7 @@
 	ret
 ; 97163
 
-Script_talkaftercancel: ; 97163
+Script_end_if_just_battled: ; 97163
 ; script command 0x66
 
 	ld a, [wRunningTrainerBattleScript]
@@ -935,10 +935,10 @@
 	jp Script_end
 ; 9716b
 
-Script_talkaftercheck: ; 9716b
+Script_check_just_battled: ; 9716b
 ; script command 0x67
 
-	ld a, 1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ld a, [wRunningTrainerBattleScript]
 	and a
@@ -948,7 +948,7 @@
 	ret
 ; 9717a
 
-Script_playrammusic: ; 9717a
+Script_encountermusic: ; 9717a
 ; script command 0x80
 
 	ld a, [OtherTrainerClass]
@@ -1011,7 +1011,7 @@
 	ret
 ; 971c3
 
-Script_waitbutton: ; 971c3
+Script_waitsfx: ; 971c3
 ; script command 0x86
 
 	call WaitSFX
@@ -1126,9 +1126,8 @@
 	ld e, a
 	callba GetRelativeFacing
 	ld a, d
-rept 2
 	add a
-endr
+	add a
 	ld e, a
 	ld a, [hLastTalked]
 	ld d, a
@@ -1161,9 +1160,8 @@
 	pop bc
 	ret c
 	ld a, d
-rept 2
 	add a
-endr
+	add a
 	ld e, a
 	ld d, c
 	call ApplyPersonFacing
@@ -1184,9 +1182,8 @@
 .ok
 	ld d, a
 	call GetScriptByte
-rept 2
 	add a
-endr
+	add a
 	ld e, a
 	call ApplyPersonFacing
 	ret
@@ -1481,7 +1478,7 @@
 	ret
 ; 973fb
 
-Script_battlecheck: ; 973fb
+Script_randomwildmon: ; 973fb
 ; script command 0x5b
 
 	xor a
@@ -1489,19 +1486,19 @@
 	ret
 ; 97400
 
-Script_loadtrainerdata: ; 97400
+Script_loadmemtrainer: ; 97400
 ; script command 0x5c
 
 	ld a, (1 << 7) | 1
 	ld [wBattleScriptFlags], a
-	ld a, [WalkingDirection]
+	ld a, [wTempTrainerClass]
 	ld [OtherTrainerClass], a
-	ld a, [FacingDirection]
+	ld a, [wTempTrainerID]
 	ld [OtherTrainerID], a
 	ret
 ; 97412
 
-Script_loadpokedata: ; 97412
+Script_loadwildmon: ; 97412
 ; script command 0x5d
 ; parameters:
 ;     pokemon (PokemonParam)
@@ -1554,7 +1551,7 @@
 	jp Script_reloadmap
 ; 97459
 
-Script_returnafterbattle: ; 97459
+Script_reloadmapafterbattle: ; 97459
 ; script command 0x60
 
 	ld hl, wBattleScriptFlags
@@ -1654,7 +1651,7 @@
 	ld e, [hl]
 	inc [hl]
 	ld d, $0
-	ld hl, wScriptStackBA1
+	ld hl, wScriptStack
 rept 3
 	add hl, de
 endr
@@ -1862,11 +1859,11 @@
 ;     pointer (ScriptPointerLabelParam)
 
 	ld a, [ScriptBank]
-	ld [wd44e], a
+	ld [wPriorityScriptBank], a
 	call GetScriptByte
-	ld [wd44f], a
+	ld [wPriorityScriptAddr], a
 	call GetScriptByte
-	ld [wd450], a
+	ld [wPriorityScriptAddr + 1], a
 	ld hl, ScriptFlags
 	set 3, [hl]
 	ret
@@ -2185,7 +2182,7 @@
 	jp ConvertMemToText
 ; 97701
 
-Script_displaylocation: ; 97701
+Script_landmarktotext: ; 97701
 ; script command 0xa5
 ; parameters:
 ;     id (SingleByteParam)
@@ -2362,7 +2359,7 @@
 	ld hl, NumItems
 	call ReceiveItem
 	jr nc, .full
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 .full
@@ -2384,11 +2381,11 @@
 	call GetScriptByte
 	ld [wItemQuantityChangeBuffer], a
 	ld a, -1
-	ld [ItemCountBuffer], a
+	ld [CurItemQuantity], a
 	ld hl, NumItems
 	call TossItem
 	ret nc
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 97812
@@ -2405,7 +2402,7 @@
 	ld hl, NumItems
 	call CheckItem
 	ret nc
-	ld a, 1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 97829
@@ -2534,7 +2531,7 @@
 	call GetScriptByte
 	and c
 	ret z
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 978c3
@@ -2551,7 +2548,7 @@
 	ld de, 1
 	call IsInArray
 	ret nc
-	ld a, 1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 978da
@@ -2567,7 +2564,7 @@
 	ld c, a
 	callba AddPhoneNumber
 	ret nc
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 978ef
@@ -2583,7 +2580,7 @@
 	ld c, a
 	callba DelCellNum
 	ret nc
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 97904
@@ -2600,7 +2597,7 @@
 	ld c, a
 	callba CheckCellNum
 	ret nc
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 97919
@@ -2624,7 +2621,7 @@
 	ld a, [wSpecialPhoneCallID]
 	and a
 	jr z, .ok
-	ld a, 1
+	ld a, TRUE
 .ok
 	ld [ScriptVar], a
 	ret
@@ -2728,7 +2725,7 @@
 	ld a, c
 	and a
 	jr z, .false
-	ld a, 1
+	ld a, TRUE
 .false
 	ld [ScriptVar], a
 	ret
@@ -2743,7 +2740,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 1 ; set
+	ld b, SET_FLAG
 	call _EngineFlagAction
 	ret
 ; 979c9
@@ -2757,7 +2754,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 0 ; clear
+	ld b, RESET_FLAG
 	call _EngineFlagAction
 	ret
 ; 979d7
@@ -2776,7 +2773,7 @@
 	ld a, c
 	and a
 	jr z, .false
-	ld a, 1
+	ld a, TRUE
 .false
 	ld [ScriptVar], a
 	ret
@@ -2904,11 +2901,11 @@
 	ret
 ; 97a85
 
-Script_reloadmapmusic: ; 97a85
+Script_dontrestartmapmusic: ; 97a85
 ; script command 0x83
 
 	ld a, 1
-	ld [wc2c1], a
+	ld [wDontPlayMapMusicOnReload], a
 	ret
 ; 97a8b
 
@@ -3025,10 +3022,10 @@
 	jp Script_end
 ; 97b1c
 
-Script_loadfont: ; 97b1c
+Script_textbox: ; 97b1c
 ; script command 0x47
 
-	call LoadFont
+	call OpenText
 	ret
 ; 97b20
 
@@ -3037,7 +3034,7 @@
 ; parameters:
 ;     dummy (SingleByteParam)
 
-	call ResetWindow
+	call RefreshScreen
 	call GetScriptByte
 	ret
 ; 97b27
@@ -3053,15 +3050,15 @@
 ; 97b2e
 
 
-LoadMoveSpritesScript: ; 97b2e
-	loadmovesprites
+CloseTextScript: ; 97b2e
+	closetext
 ; 97b2f
 
-Script_loadmovesprites: ; 97b2f
+Script_closetext: ; 97b2f
 ; script command 0x49
 
 	call Function2e20
-	call LoadMoveSprites
+	call CloseText
 	ret
 ; 97b36
 
@@ -3165,7 +3162,7 @@
 	dec [hl]
 	ld e, [hl]
 	ld d, $0
-	ld hl, wScriptStackBA1
+	ld hl, wScriptStack
 rept 3
 	add hl,de
 endr
@@ -3186,7 +3183,7 @@
 	ret
 ; 97bc0
 
-Script_resetfuncs: ; 97bc0
+Script_end_all: ; 97bc0
 ; script command 0x93
 
 	xor a
@@ -3210,7 +3207,7 @@
 	callba HallOfFame
 	ld hl, GameTimerPause
 	set 0, [hl]
-	jr DisplayCredits
+	jr ReturnFromCredits
 ; 97bf3
 
 Script_credits: ; 97bf3
@@ -3217,10 +3214,8 @@
 ; script command 0xa2
 
 	callba RedCredits
-	; fallthrough
-
-DisplayCredits:
-	call Script_resetfuncs
+ReturnFromCredits:
+	call Script_end_all
 	ld a, $3
 	call LoadMapStatus
 	call StopScript
--- /dev/null
+++ b/engine/scrolling_menu.asm
@@ -1,0 +1,543 @@
+_InitScrollingMenu:: ; 245af
+	xor a
+	ld [wMenuJoypad], a
+	ld [hBGMapMode], a
+	inc a
+	ld [hInMenu], a
+	call InitScrollingMenuCursor
+	call ScrollingMenu_InitFlags
+	call ScrollingMenu_ValidateSwitchItem
+	call ScrollingMenu_InitDisplay
+	call ApplyTilemap
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 245cb
+
+_ScrollingMenu:: ; 245cb
+.loop
+	call ScrollingMenuJoyAction
+	jp c, .exit
+	call z, .zero
+	jr .loop
+; 245d6
+
+.exit: ; 245d6
+	call MenuClickSound
+	ld [wMenuJoypad], a
+	ld a, 0
+	ld [hInMenu], a
+	ret
+; 245e1
+
+.zero: ; 245e1
+	call ScrollingMenu_InitDisplay
+	ld a, 1
+	ld [hBGMapMode], a
+	ld c, 3
+	call DelayFrames
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 245f1
+
+ScrollingMenu_InitDisplay: ; 245f1
+	xor a
+	ld [hBGMapMode], a
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	call ScrollingMenu_UpdateDisplay
+	call ScrollingMenu_PlaceCursor
+	call ScrollingMenu_CheckCallFunction3
+	pop af
+	ld [Options], a
+	ret
+; 24609
+
+ScrollingMenuJoyAction: ; 24609
+.loop
+	call ScrollingMenuJoypad
+	ld a, [hJoyLast]
+	and D_PAD
+	ld b, a
+	ld a, [hJoyPressed]
+	and BUTTONS
+	or b
+	bit 0, a ; A
+	jp nz, .a_button
+	bit 1, a ; B
+	jp nz, .b_button
+	bit 2, a ; Select
+	jp nz, .select
+	bit 3, a ; Start
+	jp nz, .start
+	bit 4, a ; Right
+	jp nz, .d_right
+	bit 5, a ; Left
+	jp nz, .d_left
+	bit 6, a ; Up
+	jp nz, .d_up
+	bit 7, a ; Down
+	jp nz, .d_down
+	jr .loop
+; 24640
+
+.unreferenced: ; unreferenced
+	ld a, -1
+	and a
+	ret
+; 24644
+
+.a_button: ; 24644
+	call PlaceHollowCursor
+	ld a, [wMenuCursorY]
+	dec a
+	call ScrollingMenu_GetListItemCoordAndFunctionArgs
+	ld a, [MenuSelection]
+	ld [CurItem], a
+	ld a, [MenuSelectionQuantity]
+	ld [wItemQuantityBuffer], a
+	call ScrollingMenu_GetCursorPosition
+	dec a
+	ld [wScrollingMenuCursorPosition], a
+	ld [CurItemQuantity], a
+	ld a, [MenuSelection]
+	cp -1
+	jr z, .b_button
+	ld a, A_BUTTON
+	scf
+	ret
+; 2466f
+
+.b_button: ; 2466f
+	ld a, B_BUTTON
+	scf
+	ret
+; 24673
+
+.select: ; 24673
+	ld a, [wMenuData2Flags]
+	bit 7, a
+	jp z, xor_a_dec_a
+	ld a, [wMenuCursorY]
+	dec a
+	call ScrollingMenu_GetListItemCoordAndFunctionArgs
+	ld a, [MenuSelection]
+	cp -1
+	jp z, xor_a_dec_a
+	call ScrollingMenu_GetCursorPosition
+	dec a
+	ld [wScrollingMenuCursorPosition], a
+	ld a, SELECT
+	scf
+	ret
+; 24695
+
+.start: ; 24695
+	ld a, [wMenuData2Flags]
+	bit 6, a
+	jp z, xor_a_dec_a
+	ld a, START
+	scf
+	ret
+; 246a1
+
+.d_left: ; 246a1
+	ld hl, w2DMenuFlags2
+	bit 7, [hl]
+	jp z, xor_a_dec_a
+	ld a, [wMenuData2Flags]
+	bit 3, a
+	jp z, xor_a_dec_a
+	ld a, D_LEFT
+	scf
+	ret
+; 246b5
+
+.d_right: ; 246b5
+	ld hl, w2DMenuFlags2
+	bit 7, [hl]
+	jp z, xor_a_dec_a
+	ld a, [wMenuData2Flags]
+	bit 2, a
+	jp z, xor_a_dec_a
+	ld a, D_RIGHT
+	scf
+	ret
+; 246c9
+
+.d_up: ; 246c9
+	ld hl, w2DMenuFlags2
+	bit 7, [hl]
+	jp z, xor_a
+	ld hl, wMenuScrollPosition
+	ld a, [hl]
+	and a
+	jr z, .xor_dec_up
+	dec [hl]
+	jp xor_a
+
+.xor_dec_up
+	jp xor_a_dec_a
+; 246df
+
+.d_down: ; 246df
+	ld hl, w2DMenuFlags2
+	bit 7, [hl]
+	jp z, xor_a
+	ld hl, wMenuScrollPosition
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	add [hl]
+	ld b, a
+	ld a, [wScrollingMenuListSize]
+	cp b
+	jr c, .xor_dec_down
+	inc [hl]
+	jp xor_a
+
+.xor_dec_down
+	jp xor_a_dec_a
+; 246fc
+
+ScrollingMenu_GetCursorPosition: ; 246fc
+	ld a, [wMenuScrollPosition]
+	ld c, a
+	ld a, [wMenuCursorY]
+	add c
+	ld c, a
+	ret
+; 24706
+
+Function24706: ; 24706 (9:4706)
+	call MenuBoxCoord2Tile
+	ld de, SCREEN_WIDTH
+	add hl, de
+	ld de, 2 * SCREEN_WIDTH
+	ld a, [wMenuData2_ScrollingMenuHeight]
+.asm_24713
+	ld [hl], " "
+	add hl, de
+	dec a
+	jr nz, .asm_24713
+	ret
+
+InitScrollingMenuCursor: ; 2471a
+	ld hl, wMenuData2_ItemsPointerAddr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wMenuData2_ItemsPointerBank]
+	call GetFarByte
+	ld [wScrollingMenuListSize], a
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	ld c, a
+	ld a, [wMenuScrollPosition]
+	add c
+	ld c, a
+	ld a, [wScrollingMenuListSize]
+	inc a
+	cp c
+	jr nc, .skip
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	ld c, a
+	ld a, [wScrollingMenuListSize]
+	inc a
+	sub c
+	jr nc, .store
+	xor a
+
+.store
+	ld [wMenuScrollPosition], a
+
+.skip
+	ld a, [wMenuScrollPosition]
+	ld c, a
+	ld a, [wMenuCursorBuffer]
+	add c
+	ld b, a
+	ld a, [wScrollingMenuListSize]
+	inc a
+	cp b
+	jr c, .asm_2475a
+	jr nc, .asm_24763
+
+.asm_2475a
+	xor a
+	ld [wMenuScrollPosition], a
+	ld a, $1
+	ld [wMenuCursorBuffer], a
+
+.asm_24763
+	ret
+; 24764
+
+ScrollingMenu_InitFlags: ; 24764
+	ld a, [wMenuData2Flags]
+	ld c, a
+	ld a, [wScrollingMenuListSize]
+	ld b, a
+	ld a, [wMenuBorderTopCoord]
+	add 1
+	ld [w2DMenuCursorInitY], a
+	ld a, [wMenuBorderLeftCoord]
+	add 0
+	ld [w2DMenuCursorInitX], a
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	cp b
+	jr c, .no_extra_row
+	jr z, .no_extra_row
+	ld a, b
+	inc a
+.no_extra_row
+	ld [w2DMenuNumRows], a
+	ld a, 1
+	ld [w2DMenuNumCols], a
+	ld a, $8c
+	bit 2, c
+	jr z, .skip_set_0
+	set 0, a
+
+.skip_set_0
+	bit 3, c
+	jr z, .skip_set_1
+	set 1, a
+
+.skip_set_1
+	ld [w2DMenuFlags1], a
+	xor a
+	ld [w2DMenuFlags2], a
+	ld a, $20
+	ld [w2DMenuCursorOffsets], a
+	ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN
+	bit 7, c
+	jr z, .disallow_select
+	add SELECT
+
+.disallow_select
+	bit 6, c
+	jr z, .disallow_start
+	add START
+
+.disallow_start
+	ld [wMenuJoypadFilter], a
+	ld a, [w2DMenuNumRows]
+	ld b, a
+	ld a, [wMenuCursorBuffer]
+	and a
+	jr z, .reset_cursor
+	cp b
+	jr z, .cursor_okay
+	jr c, .cursor_okay
+
+.reset_cursor
+	ld a, 1
+
+.cursor_okay
+	ld [wMenuCursorY], a
+	ld a, 1
+	ld [wMenuCursorX], a
+	xor a
+	ld [wCursorCurrentTile], a
+	ld [wCursorCurrentTile + 1], a
+	ld [wCursorOffCharacter], a
+	ret
+; 247dd
+
+ScrollingMenu_ValidateSwitchItem: ; 247dd
+	ld a, [wScrollingMenuListSize]
+	ld c, a
+	ld a, [wSwitchItem]
+	and a
+	jr z, .done
+	dec a
+	cp c
+	jr c, .done
+	xor a
+	ld [wSwitchItem], a
+
+.done
+	ret
+; 247f0
+
+ScrollingMenu_UpdateDisplay: ; 247f0
+	call ClearWholeMenuBox
+	ld a, [wMenuData2Flags]
+	bit 4, a ; place arrows
+	jr z, .okay
+	ld a, [wMenuScrollPosition]
+	and a
+	jr z, .okay
+	ld a, [wMenuBorderTopCoord]
+	ld b, a
+	ld a, [wMenuBorderRightCoord]
+	ld c, a
+	call Coord2Tile
+	ld [hl], "▲"
+
+.okay
+	call MenuBoxCoord2Tile
+	ld bc, SCREEN_WIDTH + 1
+	add hl, bc
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	ld b, a
+	ld c, $0
+.loop
+	ld a, [wMenuScrollPosition]
+	add c
+	ld [wScrollingMenuCursorPosition], a
+	ld a, c
+	call ScrollingMenu_GetListItemCoordAndFunctionArgs
+	ld a, [MenuSelection]
+	cp -1
+	jr z, .cancel
+	push bc
+	push hl
+	call ScrollingMenu_CallFunctions1and2
+	pop hl
+	ld bc, 2 * SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	inc c
+	ld a, c
+	cp b
+	jr nz, .loop
+	ld a, [wMenuData2Flags]
+	bit 4, a ; place arrows
+	jr z, .done
+	ld a, [wMenuBorderBottomCoord]
+	ld b, a
+	ld a, [wMenuBorderRightCoord]
+	ld c, a
+	call Coord2Tile
+	ld [hl], "▼"
+
+.done
+	ret
+
+.cancel
+	ld a, [wMenuData2Flags]
+	bit 0, a ; call function on cancel
+	jr nz, .call_function
+	ld de, .string_2485f
+	call PlaceString
+	ret
+
+.string_2485f
+	db "CANCEL@"
+
+.call_function
+	ld d, h
+	ld e, l
+	ld hl, wMenuData2_ScrollingMenuFunction1
+	jp CallPointerAt
+; 2486e
+
+ScrollingMenu_CallFunctions1and2: ; 2486e
+	push hl
+	ld d, h
+	ld e, l
+	ld hl, wMenuData2_ScrollingMenuFunction1
+	call CallPointerAt
+	pop hl
+	ld a, [wMenuData2_ScrollingMenuWidth]
+	and a
+	jr z, .done
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, wMenuData2_ScrollingMenuFunction2
+	call CallPointerAt
+
+.done
+	ret
+; 2488b
+
+ScrollingMenu_PlaceCursor: ; 2488b
+	ld a, [wSwitchItem]
+	and a
+	jr z, .done
+	ld b, a
+	ld a, [wMenuScrollPosition]
+	cp b
+	jr nc, .done
+	ld c, a
+	ld a, [wMenuData2_ScrollingMenuHeight]
+	add c
+	cp b
+	jr c, .done
+	ld a, b
+	sub c
+	dec a
+	add a
+	add $1
+	ld c, a
+	ld a, [wMenuBorderTopCoord]
+	add c
+	ld b, a
+	ld a, [wMenuBorderLeftCoord]
+	add $0
+	ld c, a
+	call Coord2Tile
+	ld [hl], "▷"
+
+.done
+	ret
+; 248b8
+
+ScrollingMenu_CheckCallFunction3: ; 248b8
+	ld a, [wMenuData2Flags]
+	bit 5, a ; call function 3
+	ret z
+	bit 1, a ; call function 3 if not switching items
+	jr z, .call
+	ld a, [wSwitchItem]
+	and a
+	ret nz
+
+.call
+	ld a, [wMenuCursorY]
+	dec a
+	call ScrollingMenu_GetListItemCoordAndFunctionArgs
+	ld hl, wMenuData2_ScrollingMenuFunction3
+	call CallPointerAt
+	ret
+; 248d5
+
+ScrollingMenu_GetListItemCoordAndFunctionArgs: ; 248d5
+	push de
+	push hl
+	ld e, a
+	ld a, [wMenuScrollPosition]
+	add e
+	ld e, a
+	ld d, $0
+	ld hl, wMenuData2_ItemsPointerAddr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl ; items
+	ld a, [wMenuData2_ScrollingMenuSpacing]
+	cp 1
+	jr z, .got_spacing
+	cp 2
+	jr z, .pointless_jump
+.pointless_jump
+	add hl, de
+.got_spacing
+	add hl, de
+	ld a, [wMenuData2_ItemsPointerBank]
+	call GetFarByte
+	ld [MenuSelection], a
+	ld [CurItem], a
+	inc hl
+	ld a, [wMenuData2_ItemsPointerBank]
+	call GetFarByte
+	ld [MenuSelectionQuantity], a
+	pop hl
+	pop de
+	ret
+; 2490c
--- /dev/null
+++ b/engine/search.asm
@@ -1,0 +1,276 @@
+SpecialBeastsCheck: ; 0x4a6e8
+; Check if the player owns all three legendary beasts.
+; They must exist in either party or PC, and have the player's OT and ID.
+; Return the result in ScriptVar.
+
+	ld a, RAIKOU
+	ld [ScriptVar], a
+	call CheckOwnMonAnywhere
+	jr nc, .notexist
+
+	ld a, ENTEI
+	ld [ScriptVar], a
+	call CheckOwnMonAnywhere
+	jr nc, .notexist
+
+	ld a, SUICUNE
+	ld [ScriptVar], a
+	call CheckOwnMonAnywhere
+	jr nc, .notexist
+
+	; they exist
+	ld a, 1
+	ld [ScriptVar], a
+	ret
+
+.notexist
+	xor a
+	ld [ScriptVar], a
+	ret
+
+
+SpecialMonCheck: ; 0x4a711
+; Check if the player owns any monsters of the species in ScriptVar.
+; Return the result in ScriptVar.
+
+	call CheckOwnMonAnywhere
+	jr c, .exists
+
+	; doesn't exist
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.exists
+	ld a, 1
+	ld [ScriptVar], a
+	ret
+
+
+CheckOwnMonAnywhere: ; 0x4a721
+; Check if the player owns any monsters of the species in ScriptVar.
+; It must exist in either party or PC, and have the player's OT and ID.
+
+	; If there are no monsters in the party,
+	; the player must not own any yet.
+	ld a, [PartyCount]
+	and a
+	ret z
+
+	ld d, a
+	ld e, 0
+	ld hl, PartyMon1Species
+	ld bc, PartyMonOT
+
+	; Run CheckOwnMon on each Pokémon in the party.
+.partymon
+	call CheckOwnMon
+	ret c ; found!
+
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call UpdateOTPointer
+	dec d
+	jr nz, .partymon
+
+	; Run CheckOwnMon on each Pokémon in the PC.
+	ld a, BANK(sBoxCount)
+	call GetSRAMBank
+	ld a, [sBoxCount]
+	and a
+	jr z, .boxes
+
+	ld d, a
+	ld hl, sBoxMon1Species
+	ld bc, sBoxMonOT
+.openboxmon
+	call CheckOwnMon
+	jr nc, .loop
+
+	; found!
+	call CloseSRAM
+	ret
+
+.loop
+	push bc
+	ld bc, BOXMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call UpdateOTPointer
+	dec d
+	jr nz, .openboxmon
+
+	; Run CheckOwnMon on each monster in the other 13 PC boxes.
+.boxes
+	call CloseSRAM
+
+	ld c, 0
+.box
+	; Don't search the current box again.
+	ld a, [wCurBox]
+	and $f
+	cp c
+	jr z, .loopbox
+
+	; Load the box.
+	ld hl, BoxAddressTable1
+	ld b, 0
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	call GetSRAMBank
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	; Number of monsters in the box
+	ld a, [hl]
+	and a
+	jr z, .loopbox
+
+	push bc
+
+	push hl
+	ld de, sBoxMons - sBoxCount
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	push de
+	ld de, sBoxMonOT - sBoxCount
+	add hl, de
+	ld b, h
+	ld c, l
+	pop hl
+
+	ld d, a
+
+.boxmon
+	call CheckOwnMon
+	jr nc, .loopboxmon
+
+	; found!
+	pop bc
+	call CloseSRAM
+	ret
+
+.loopboxmon
+	push bc
+	ld bc, BOXMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call UpdateOTPointer
+	dec d
+	jr nz, .boxmon
+	pop bc
+
+.loopbox
+	inc c
+	ld a, c
+	cp NUM_BOXES
+	jr c, .box
+
+	; not found
+	call CloseSRAM
+	and a
+	ret
+
+
+CheckOwnMon: ; 0x4a7ba
+; Check if a Pokémon belongs to the player and is of a specific species.
+
+; inputs:
+; hl, pointer to PartyMonNSpecies
+; bc, pointer to PartyMonNOT
+; ScriptVar should contain the species we're looking for
+
+; outputs:
+; sets carry if monster matches species, ID, and OT name.
+
+	push bc
+	push hl
+	push de
+	ld d, b
+	ld e, c
+
+; check species
+	ld a, [ScriptVar] ; species we're looking for
+	ld b, [hl] ; species we have
+	cp b
+	jr nz, .notfound ; species doesn't match
+
+; check ID number
+	ld bc, MON_ID
+	add hl, bc ; now hl points to ID number
+	ld a, [PlayerID]
+	cp [hl]
+	jr nz, .notfound ; ID doesn't match
+	inc hl
+	ld a, [PlayerID + 1]
+	cp [hl]
+	jr nz, .notfound ; ID doesn't match
+
+; check OT
+; This only checks five characters, which is fine for the Japanese version,
+; but in the English version the player name is 7 characters, so this is wrong.
+
+	ld hl, PlayerName
+
+	rept 4
+	ld a, [de]
+	cp [hl]
+	jr nz, .notfound
+	cp "@"
+	jr z, .found ; reached end of string
+	inc hl
+	inc de
+	endr
+
+	ld a, [de]
+	cp [hl]
+	jr z, .found
+
+.notfound
+	pop de
+	pop hl
+	pop bc
+	and a
+	ret
+
+.found
+	pop de
+	pop hl
+	pop bc
+	scf
+	ret
+; 0x4a810
+
+BoxAddressTable1: ; 4a810
+	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
+; 4a83a
+
+UpdateOTPointer: ; 0x4a83a
+	push hl
+	ld hl, NAME_LENGTH
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 0x4a843
--- a/engine/selectmenu.asm
+++ b/engine/selectmenu.asm
@@ -5,12 +5,12 @@
 	jp UseRegisteredItem
 
 .NotRegistered
-	call LoadFont
+	call OpenText
 	ld b, BANK(ItemMayBeRegisteredText)
 	ld hl, ItemMayBeRegisteredText
 	call MapTextbox
-	call CloseText
-	jp LoadMoveSprites
+	call WaitButton
+	jp CloseText
 ; 13340
 
 
@@ -139,39 +139,39 @@
 ; 133df
 
 .NoFunction ; 133df
-	call LoadFont
+	call OpenText
 	call CantUseItem
-	call LoadMoveSprites
+	call CloseText
 	and a
 	ret
 ; 133ea
 
 .Current ; 133ea
-	call LoadFont
+	call OpenText
 	call DoItemEffect
-	call LoadMoveSprites
+	call CloseText
 	and a
 	ret
 ; 133f5
 
 .Party ; 133f5
-	call ResetWindow
+	call RefreshScreen
 	call FadeToMenu
 	call DoItemEffect
-	call ReturnToCallingMenu
-	call LoadMoveSprites
+	call CloseSubmenu
+	call CloseText
 	and a
 	ret
 ; 13406
 
 .Overworld ; 13406
-	call ResetWindow
+	call RefreshScreen
 	ld a, 1
-	ld [wd0ef], a
+	ld [wUsingItemWithSelect], a
 	call DoItemEffect
 	xor a
-	ld [wd0ef], a
-	ld a, [wd0ec]
+	ld [wUsingItemWithSelect], a
+	ld a, [wItemEffectSucceeded]
 	cp 1
 	jr nz, ._cantuse
 	scf
@@ -181,11 +181,11 @@
 ; 13422
 
 .CantUse ; 13422
-	call ResetWindow
+	call RefreshScreen
 
 ._cantuse
 	call CantUseItem
-	call LoadMoveSprites
+	call CloseText
 	and a
 	ret
 ; 1342d
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1,11 +1,20 @@
+SLOTS_NOMATCH EQU -1
+SLOTS_SEVEN EQU $00
+SLOTS_POKEBALL EQU $04
+SLOTS_CHERRY EQU $08
+SLOTS_PIKACHU EQU $0c
+SLOTS_SQUIRTLE EQU $10
+SLOTS_STARYU EQU $14
+REEL_SIZE EQU 15
+
 _SlotMachine:
 	ld hl, Options
 	set 4, [hl]
-	call Function926f7
+	call .InitGFX
 	call DelayFrame
-.asm_926d2
-	call Function927af
-	jr nc, .asm_926d2
+.loop
+	call SlotsLoop
+	jr nc, .loop
 	call WaitSFX
 	ld de, SFX_QUIT_SLOTS
 	call PlaySFX
@@ -18,7 +27,7 @@
 	res 2, [hl]
 	ret
 
-Function926f7: ; 926f7 (24:66f7)
+.InitGFX: ; 926f7 (24:66f7)
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -27,132 +36,140 @@
 	call DelayFrame
 	call DisableLCD
 	hlbgcoord 0, 0
-	lb bc, 4, 0
+	ld bc, VBGMap1 - VBGMap0
 	ld a, " "
 	call ByteFill
-	ld b, SCGB_05
+	ld b, SCGB_SLOT_MACHINE
 	call GetSGBLayout
-	callab Function8cf53
-	ld hl, wc6d0
-	ld bc, $48
+	callab ClearSpriteAnims
+	ld hl, wSlots
+	ld bc, wSlotsDataEnd - wSlots
 	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
+	ld bc, SCREEN_WIDTH * 12
 	call CopyBytes
+
 	ld hl, rLCDC ; $ff40
 	set 2, [hl]
 	call EnableLCD
-	ld hl, wc6d0
-	ld bc, $64
+	ld hl, wSlots ; Alias: wTrademons
+	ld bc, wSlotsEnd - wSlots ; Alias: wTrademonsEnd
 	xor a
 	call ByteFill
-	call Function92a98
-	call Function9279b
+	call InitReelTiles
+	call Slots_GetPals
 	ld a, $7
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $40
 	xor a
 	ld [wJumptableIndex], a
-	ld a, $ff
-	ld [wc709], a
+	ld a, SLOTS_NOMATCH
+	ld [wSlotBias], a
 	ld de, MUSIC_GAME_CORNER
 	call PlayMusic
 	xor a
 	ld [wd002], a
 	call Random
-	and $2a
+	and %00101010
 	ret nz
 	ld a, $1
 	ld [wd002], a
 	ret
 
-Function9279b: ; 9279b (24:679b)
-	ld a, $e4
+Slots_GetPals: ; 9279b (24:679b)
+	ld a, %11100100
 	call DmgToCgbBGPals
-	lb de, $e4, $e4
+	lb de, %11100100, %11100100
 	ld a, [hCGB]
 	and a
-	jr nz, .asm_927ab
-	lb de, $c0, $e4
-.asm_927ab
+	jr nz, .cgb
+	lb de, %11000000, %11100100
+.cgb
 	call DmgToCgbObjPals
 	ret
 
-Function927af: ; 927af (24:67af)
+SlotsLoop: ; 927af (24:67af)
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_927d1
-	call Function92844
-	call Function92b0f
+	jr nz, .stop
+	call SlotsJumptable
+	call Slots_SpinReels
 	xor a
-	ld [wc3b5], a
-	callab Function8cfa8
-	call Function927f8
-	call Function927d3
+	ld [wCurrSpriteOAMAddr], a
+	callab DoNextFrameForFirst16Sprites
+	call .PrintCoinsAndPayout
+	call .DummyFunc
 	call DelayFrame
 	and a
 	ret
-.asm_927d1
+
+.stop
 	scf
 	ret
 
-Function927d3: ; 927d3 (24:67d3)
+.DummyFunc: ; 927d3 (24:67d3)
+; dummied out
 	ret
-; 927d4 (24:67d4)
-
-Function927d4: ; 927d4
-	ld a, [wc6d0]
+	ld a, [wReel1ReelAction]
 	and a
 	ret nz
-	ld a, [wc6e0]
+	ld a, [wReel2ReelAction]
 	and a
 	ret nz
-	ld a, [wc70c]
+	ld a, [wFirstTwoReelsMatchingSevens]
 	and a
-	jr nz, .asm_927ea
-	ld a, $e4
+	jr nz, .matching_sevens
+	ld a, %11100100
 	call DmgToCgbBGPals
 	ret
 
-.asm_927ea
+.matching_sevens
 	ld a, [TextDelayFrames]
 	and $7
 	ret nz
 	ld a, [rBGP]
-	xor %1100
+	xor %00001100
 	call DmgToCgbBGPals
 	ret
+
 ; 927f8
 
-Function927f8: ; 927f8 (24:67f8)
+.PrintCoinsAndPayout: ; 927f8 (24:67f8)
 	hlcoord 5, 1
 	ld de, Coins
 	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
 	call PrintNum
 	hlcoord 11, 1
-	ld de, wc711
+	ld de, wPayout
 	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
 	call PrintNum
 	ret
+
 ; 92811 (24:6811)
 
 Function92811: ; 92811
-	ld a, [wc709]
+; unreferenced - debug function?
+	ld a, [wSlotBias]
 	add 0
 	daa
 	ld e, a
@@ -167,17 +184,20 @@
 	hlcoord 0, 0
 	ld [hl], a
 	ret
+
 ; 9282c
 
 Function9282c: ; 9282c
+; unreferenced
+; animate OAM tiles?
 	ld hl, wcf66
 	ld a, [hl]
 	inc [hl]
 	and $7
 	ret nz
-	ld hl, Sprites + $42
-	ld c, $18
-.asm_92839
+	ld hl, Sprites + 16 * 4 + 2
+	ld c, 40 - 16
+.loop
 	ld a, [hl]
 	xor $20
 	ld [hli], a
@@ -185,186 +205,172 @@
 	inc hl
 endr
 	dec c
-	jr nz, .asm_92839
+	jr nz, .loop
 	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)
+SlotsJumptable: ; 92844 (24:6844)
+	jumptable .Jumptable, wJumptableIndex
 
+.Jumptable
+	dw Slots_Init        ; 00
+	dw Slots_BetAndStart ; 01
+	dw Slots_WaitStart     ; 02
+	dw Slots_WaitReel1   ; 03
+	dw Slots_WaitStopReel1     ; 04
+	dw Slots_WaitReel2   ; 05
+	dw Slots_WaitStopReel2     ; 06
+	dw Slots_WaitReel3   ; 07
+	dw Slots_WaitStopReel3     ; 08
+	dw Slots_Next          ; 09
+	dw Slots_Next          ; 0a
+	dw Slots_Next          ; 0b
+	dw Slots_FlashIfWin     ; 0c
+	dw Slots_FlashScreen     ; 0d
+	dw Slots_GiveEarnedCoins     ; 0e
+	dw Slots_PayoutTextAndAnim     ; 0f
+	dw Slots_PayoutAnim     ; 10
+	dw Slots_RestartOrQuit     ; 11
+	dw Slots_Quit        ; 12
 
-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)
+Slots_Next: ; 92879 (24:6879)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function9287e: ; 9287e (24:687e)
-	call Function92879
+Slots_Init: ; 9287e (24:687e)
+	call Slots_Next
 	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $ff
-	ld [wc70d], a
+	ld [wFirstTwoReelsMatching], a
+	ld [wFirstTwoReelsMatchingSevens], a
+	ld a, -1
+	ld [wSlotMatched], a
 	ret
 
-Function9288e: ; 9288e (24:688e)
-	call Function9307c
-	jr nc, .asm_92899
-	ld a, $12
+Slots_BetAndStart: ; 9288e (24:688e)
+	call Slots_AskBet
+	jr nc, .proceed
+	ld a, 18
 	ld [wJumptableIndex], a
 	ret
-.asm_92899
-	call Function92879
-	call Function9303f
-	call Function93002
-	ld a, $20
+
+.proceed
+	call Slots_Next
+	call Slots_IlluminateBetLights
+	call Slots_InitBias
+	ld a, 32
 	ld [wcf64], a
+	ld a, 4
+	ld [wReel1ReelAction], a
+	ld [wReel2ReelAction], a
+	ld [wReel3ReelAction], 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
+	ld [wReel1Slot09], a
+	ld [wReel2Slot09], a
+	ld [wReel3Slot09], a
 	call WaitSFX
 	ld a, SFX_SLOT_MACHINE_START
-	call Function9331e
+	call Slots_PlaySFX
 	ret
 
-Function928c6: ; 928c6 (24:68c6)
+Slots_WaitStart: ; 928c6 (24:68c6)
 	ld hl, wcf64
 	ld a, [hl]
 	and a
-	jr z, .asm_928cf
+	jr z, .proceed
 	dec [hl]
 	ret
-.asm_928cf
-	call Function92879
+
+.proceed
+	call Slots_Next
 	xor a
 	ld [hJoypadSum], a
 	ret
 
-Function928d6: ; 928d6 (24:68d6)
+Slots_WaitReel1: ; 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]
+	call Slots_Next
+	call Slots_StopReel1
+	ld [wReel1ReelAction], a
+Slots_WaitStopReel1: ; 928e6 (24:68e6)
+	ld a, [wReel1ReelAction]
 	cp $0
 	ret nz
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6d0
-	ld de, wc700
-	call Function929f6
-	call Function92879
+	call Slots_PlaySFX
+	ld bc, wReel1
+	ld de, wReel1Stopped
+	call Slots_LoadReelState
+	call Slots_Next
 	xor a
 	ld [hJoypadSum], a
-
-Function92900: ; 92900 (24:6900)
+Slots_WaitReel2: ; 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]
+	call Slots_Next
+	call Slots_StopReel2
+	ld [wReel2ReelAction], a
+Slots_WaitStopReel2: ; 92910 (24:6910)
+	ld a, [wReel2ReelAction]
 	cp $0
 	ret nz
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6e0
-	ld de, wc703
-	call Function929f6
-	call Function92879
+	call Slots_PlaySFX
+	ld bc, wReel2
+	ld de, wReel2Stopped
+	call Slots_LoadReelState
+	call Slots_Next
 	xor a
 	ld [hJoypadSum], a
-
-Function9292a: ; 9292a (24:692a)
+Slots_WaitReel3: ; 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]
+	call Slots_Next
+	call Slots_StopReel3
+	ld [wReel3ReelAction], a
+Slots_WaitStopReel3: ; 9293a (24:693a)
+	ld a, [wReel3ReelAction]
 	cp $0
 	ret nz
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6f0
-	ld de, wc706
-	call Function929f6
-	call Function92879
+	call Slots_PlaySFX
+	ld bc, wReel3
+	ld de, wReel3Stopped
+	call Slots_LoadReelState
+	call Slots_Next
 	xor a
 	ld [hJoypadSum], a
 	ret
 
-Function92955: ; 92955 (24:6955)
-	ld a, [wc70d]
-	cp $ff
-	jr nz, .asm_92963
-	call Function92879
-	call Function92879
+Slots_FlashIfWin: ; 92955 (24:6955)
+	ld a, [wSlotMatched]
+	cp -1
+	jr nz, .GotIt
+	call Slots_Next
+	call Slots_Next
 	ret
-.asm_92963
-	call Function92879
-	ld a, $10
-	ld [wcf64], a
 
-Function9296b: ; 9296b (24:696b)
+.GotIt
+	call Slots_Next
+	ld a, 16
+	ld [wcf64], a
+Slots_FlashScreen: ; 9296b (24:696b)
 	ld hl, wcf64
 	ld a, [hl]
 	and a
-	jr z, .asm_92980
+	jr z, .done
 	dec [hl]
 	srl a
 	ret z
+
 	ld a, [rOBP0]
 	xor $ff
 	ld e, a
@@ -371,38 +377,38 @@
 	ld d, a
 	call DmgToCgbObjPals
 	ret
-.asm_92980
-	call Function9279b
-	call Function92879
+
+.done
+	call Slots_GetPals
+	call Slots_Next
 	ret
 
-Function92987: ; 92987 (24:6987)
+Slots_GiveEarnedCoins: ; 92987 (24:6987)
 	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $e4
+	ld [wFirstTwoReelsMatching], a
+	ld [wFirstTwoReelsMatchingSevens], a
+	ld a, %11100100
 	call DmgToCgbBGPals
-	call Function93124
+	call SlotGetPayout
 	xor a
 	ld [wcf64], a
-	call Function92879
+	call Slots_Next
 	ret
 
-Function9299e: ; 9299e (24:699e)
-	call Function93158
-	call Function92879
-
-Function929a4: ; 929a4 (24:69a4)
+Slots_PayoutTextAndAnim: ; 9299e (24:699e)
+	call SlotPayoutText
+	call Slots_Next
+Slots_PayoutAnim: ; 929a4 (24:69a4)
 	ld hl, wcf64
 	ld a, [hl]
 	inc [hl]
 	and $1
 	ret z
-	ld hl, wc711
+	ld hl, wPayout
 	ld a, [hli]
 	ld d, a
 	or [hl]
-	jr z, .asm_929d5
+	jr z, .done
 	ld e, [hl]
 	dec de
 	ld [hl], e
@@ -412,44 +418,46 @@
 	ld d, [hl]
 	inc hl
 	ld e, [hl]
-	call Function92a04
-	jr c, .asm_929c5
+	call Slot_CheckCoinCaseFull
+	jr c, .okay
 	inc de
-.asm_929c5
+.okay
 	ld [hl], e
 	dec hl
 	ld [hl], d
 	ld a, [wcf64]
 	and $7
-	ret z
+	ret z ; ret nz would be more appropriate
 	ld de, SFX_GET_COIN_FROM_SLOTS
 	call PlaySFX
 	ret
-.asm_929d5
-	call Function92879
+
+.done
+	call Slots_Next
 	ret
 
-Function929d9: ; 929d9 (24:69d9)
-	call Function9304c
+Slots_RestartOrQuit: ; 929d9 (24:69d9)
+	call Slots_DeilluminateBetLights
 	call WaitPressAorB_BlinkCursor
-	call Function930e9
-	jr c, .asm_929ea
-	ld a, $0
+	call Slots_AskPlayAgain
+	jr c, .exit_slots
+	ld a, 0
 	ld [wJumptableIndex], a
 	ret
-.asm_929ea
-	ld a, $12
+
+.exit_slots
+	ld a, 18
 	ld [wJumptableIndex], a
 	ret
 
-Function929f0: ; 929f0 (24:69f0)
+Slots_Quit: ; 929f0 (24:69f0)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function929f6: ; 929f6 (24:69f6)
+Slots_LoadReelState: ; 929f6 (24:69f6)
 	push de
-	call Function92a12
+	call Slots_GetCurrentReelState
 	pop de
 	ld a, [hli]
 	ld [de], a
@@ -461,32 +469,33 @@
 	ld [de], a
 	ret
 
-Function92a04: ; 92a04 (24:6a04)
+Slot_CheckCoinCaseFull: ; 92a04 (24:6a04)
 	ld a, d
 	cp 9999 / $100
-	jr c, .asm_92a10
+	jr c, .not_full
 	ld a, e
 	cp 9999 % $100
-	jr c, .asm_92a10
+	jr c, .not_full
 	scf
 	ret
-.asm_92a10
+
+.not_full
 	and a
 	ret
 
-Function92a12: ; 92a12 (24:6a12)
-	ld hl, $3
+Slots_GetCurrentReelState: ; 92a12 (24:6a12)
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr nz, .asm_92a1c
+	jr nz, .okay
 	ld a, $f
-.asm_92a1c
+.okay
 	dec a
 	and $f
 	ld e, a
 	ld d, $0
-	ld hl, $1
+	ld hl, wReel1TilemapAddr - wReel1
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -494,180 +503,186 @@
 	add hl, de
 	ret
 
-Function92a2b: ; 92a2b (24:6a2b)
+Slots_StopReel1: ; 92a2b (24:6a2b)
 	ld a, $7
 	ret
 
-Function92a2e: ; 92a2e (24:6a2e)
-	ld a, [wc70a]
+Slots_StopReel2: ; 92a2e (24:6a2e)
+	ld a, [wSlotBet]
 	cp $2
-	jr c, .asm_92a4e
-	ld a, [wc709]
+	jr c, .dont_jump
+	ld a, [wSlotBias]
 	and a
-	jr z, .asm_92a3f
-	cp $ff
-	jr nz, .asm_92a4e
-.asm_92a3f
-	call Function92a51
-	jr nz, .asm_92a4e
+	jr z, .skip
+	cp SLOTS_NOMATCH
+	jr nz, .dont_jump
+.skip
+	call .CheckReel1ForASeven
+	jr nz, .dont_jump
 	call Random
-	cp $50
-	jr nc, .asm_92a4e
+	cp $50 ; 32%
+	jr nc, .dont_jump
 	ld a, $a
 	ret
-.asm_92a4e
+
+.dont_jump
 	ld a, $8
 	ret
 
-Function92a51: ; 92a51 (24:6a51)
-	ld a, [wc700]
+.CheckReel1ForASeven: ; 92a51 (24:6a51)
+	ld a, [wReel1Stopped]
 	and a
 	ret z
-	ld a, [wc701]
+	ld a, [wReel1Stopped + 1]
 	and a
 	ret z
-	ld a, [wc702]
+	ld a, [wReel1Stopped + 2]
 	and a
 	ret
 
-Function92a60: ; 92a60 (24:6a60)
-	ld a, [wc70b]
+Slots_StopReel3: ; 92a60 (24:6a60)
+	ld a, [wFirstTwoReelsMatching]
 	and a
-	jr z, .asm_92a95
-	ld a, [wc70c]
+	jr z, .stop
+	ld a, [wFirstTwoReelsMatchingSevens]
 	and a
-	jr z, .asm_92a95
-	ld a, [wc709]
+	jr z, .stop
+	ld a, [wSlotBias]
 	and a
-	jr nz, .asm_92a84
+	jr nz, .biased
 	call Random
 	cp 180
-	jr nc, .asm_92a95
+	jr nc, .stop
 	cp 120
-	jr nc, .asm_92a92
+	jr nc, .slow_advance
 	cp 60
-	jr nc, .asm_92a8f
+	jr nc, .golem
 	ld a, $15
 	ret
-.asm_92a84
+
+.biased
 	call Random
-	cp $a0
-	jr nc, .asm_92a95
-	cp $50
-	jr nc, .asm_92a92
-.asm_92a8f
+	cp 160
+	jr nc, .stop
+	cp 80
+	jr nc, .slow_advance
+.golem
 	ld a, $12
 	ret
-.asm_92a92
+
+.slow_advance
 	ld a, $10
 	ret
-.asm_92a95
+
+.stop
 	ld a, $9
 	ret
 
-Function92a98: ; 92a98 (24:6a98)
-	ld bc, wc6d0
-	ld hl, $6
+InitReelTiles: ; 92a98 (24:6a98)
+	ld bc, wReel1
+	ld hl, wReel1OAMAddr - wReel1
 	add hl, bc
-	ld de, Sprites + $40
+	ld de, Sprites + 16 * 4
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $1
+	ld hl, wReel1TilemapAddr - wReel1
 	add hl, bc
-	ld de, Unknown_93327
+	ld de, Reel1Tilemap
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $8
+	ld hl, wReel1XCoord - wReel1
 	add hl, bc
-	ld [hl], $30
-	call Function92af9
-	ld bc, wc6e0
-	ld hl, $6
+	ld [hl], 6 * 8
+	call .OAM
+
+	ld bc, wReel2
+	ld hl, wReel1OAMAddr - wReel1
 	add hl, bc
-	ld de, Sprites + $60
+	ld de, Sprites + 24 * 4
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $1
+	ld hl, wReel1TilemapAddr - wReel1
 	add hl, bc
-	ld de, Unknown_93339
+	ld de, Reel2Tilemap
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $8
+	ld hl, wReel1XCoord - wReel1
 	add hl, bc
-	ld [hl], $50
-	call Function92af9
-	ld bc, wc6f0
-	ld hl, $6
+	ld [hl], 10 * 8
+	call .OAM
+
+	ld bc, wReel3
+	ld hl, wReel1OAMAddr - wReel1
 	add hl, bc
-	ld de, Sprites + $80
+	ld de, Sprites + 32 * 4
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $1
+	ld hl, wReel1TilemapAddr - wReel1
 	add hl, bc
-	ld de, Unknown_9334b
+	ld de, Reel3Tilemap
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, $8
+	ld hl, wReel1XCoord - wReel1
 	add hl, bc
-	ld [hl], $70
-	call Function92af9
+	ld [hl], 14 * 8
+	call .OAM
 	ret
 
-Function92af9: ; 92af9 (24:6af9)
-	ld hl, 0
+.OAM: ; 92af9 (24:6af9)
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	ld [hl], $0
-	ld hl, $3
+	ld hl, wReel1Position - wReel1
 	add hl, bc
-	ld [hl], $e
-	ld hl, $4
+	ld [hl], REEL_SIZE - 1
+	ld hl, wReel1SpinDistance - wReel1
 	add hl, bc
 	ld [hl], $0
-	call Function92b53
+	call UpdateReelPositionAndOAM
 	ret
 
-Function92b0f: ; 92b0f (24:6b0f)
-	ld bc, wc6d0
-	call Function92b22
-	ld bc, wc6e0
-	call Function92b22
-	ld bc, wc6f0
-	call Function92b22
+Slots_SpinReels: ; 92b0f (24:6b0f)
+	ld bc, wReel1
+	call .SpinReel
+	ld bc, wReel2
+	call .SpinReel
+	ld bc, wReel3
+	call .SpinReel
 	ret
 
-Function92b22: ; 92b22 (24:6b22)
-	ld hl, $4
+.SpinReel: ; 92b22 (24:6b22)
+	ld hl, wReel1SpinDistance - wReel1
 	add hl, bc
 	ld a, [hl]
 	and $f
-	jr nz, .asm_92b2e
+	jr nz, .skip
 	call Function92bd4
-.asm_92b2e
-	ld hl, $5
+.skip
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
 	ret z
 	ld d, a
-	ld hl, $4
+	ld hl, wReel1SpinDistance - wReel1
 	add hl, bc
 	add [hl]
 	ld [hl], a
 	and $f
-	jr z, Function92b53
-	ld hl, $6
+	jr z, UpdateReelPositionAndOAM
+	ld hl, wReel1OAMAddr - wReel1
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld e, $8
-.asm_92b49
+.loop
 	ld a, [hl]
 	add d
 	ld [hli], a
@@ -675,21 +690,21 @@
 	inc hl
 endr
 	dec e
-	jr nz, .asm_92b49
+	jr nz, .loop
 	ret
 
-Function92b53: ; 92b53 (24:6b53)
-	ld hl, $8
+UpdateReelPositionAndOAM: ; 92b53 (24:6b53)
+	ld hl, wReel1XCoord - wReel1
 	add hl, bc
 	ld a, [hl]
-	ld [wc712 + 1], a
-	ld a, $50
-	ld [wc712 + 2], a
-	ld hl, $3
+	ld [wCurrReelXCoord], a
+	ld a, 10 * 8
+	ld [wCurrReelYCoord], a
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	ld e, [hl]
-	ld d, $0
-	ld hl, $1
+	ld d, 0
+	ld hl, wReel1TilemapAddr - wReel1
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -697,29 +712,29 @@
 	add hl, de
 	ld e, l
 	ld d, h
-	call Function92b83
-	ld hl, $3
+	call .LoadOAM
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	ld a, [hl]
 	inc a
 	and $f
-	cp $f
-	jr nz, .asm_92b81
+	cp REEL_SIZE
+	jr nz, .load
 	xor a
-.asm_92b81
+.load
 	ld [hl], a
 	ret
 
-Function92b83: ; 92b83 (24:6b83)
-	ld hl, $6
+.LoadOAM: ; 92b83 (24:6b83)
+	ld hl, wReel1OAMAddr - wReel1
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-.asm_92b8a
-	ld a, [wc712 + 2]
+.loop
+	ld a, [wCurrReelYCoord]
 	ld [hli], a
-	ld a, [wc712 + 1]
+	ld a, [wCurrReelXCoord]
 	ld [hli], a
 	ld a, [de]
 	ld [hli], a
@@ -727,15 +742,15 @@
 	srl a
 	set 7, a
 	ld [hli], a
-	ld a, [wc712 + 2]
+
+	ld a, [wCurrReelYCoord]
 	ld [hli], a
-	ld a, [wc712 + 1]
-	add $8
+	ld a, [wCurrReelXCoord]
+	add 1 * 8
 	ld [hli], a
 	ld a, [de]
-rept 2
 	inc a
-endr
+	inc a
 	ld [hli], a
 	srl a
 	srl a
@@ -742,12 +757,13 @@
 	set 7, a
 	ld [hli], a
 	inc de
-	ld a, [wc712 + 2]
-	sub $10
-	ld [wc712 + 2], a
-	cp $10
-	jr nz, .asm_92b8a
+	ld a, [wCurrReelYCoord]
+	sub 2 * 8
+	ld [wCurrReelYCoord], a
+	cp 2 * 8
+	jr nz, .loop
 	ret
+
 ; 92bbe (24:6bbe)
 
 Function92bbe: ; 92bbe
@@ -762,6 +778,7 @@
 	ld a, [hl]
 	pop hl
 	ret
+
 ; 92bce
 
 Unknown_92bce: ; 92bce
@@ -769,136 +786,143 @@
 ; 92bd4
 
 Function92bd4: ; 92bd4 (24:6bd4)
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
-	ld hl, Jumptable_92be4
-rept 2
+	ld hl, .dw
 	add hl, de
-endr
+	add hl, de
 	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
+.dw: ; 92be4
+	
+	dw ReelAction_DoNothing                   ; 00
+	dw Slots_StopReelIgnoreJoypad             ; 01
+	dw ReelAction_QuadrupleRate               ; 02
+	dw ReelAction_DoubleRate                  ; 03
+	dw ReelAction_NormalRate                  ; 04
+	dw ReelAction_HalfRate                    ; 05
+	dw ReelAction_QuarterRate                 ; 06
+	dw ReelAction_StopReel1                   ; 07
+	dw ReelAction_StopReel2                   ; 08
+	dw ReelAction_StopReel3                   ; 09
+	dw ReelAction_SetUpReel2SkipTo7           ; 0a
+	dw ReelAction_WaitReel2SkipTo7            ; 0b
+	dw ReelAction_FastSpinReel2UntilLinedUp7s ; 0c
+	dw ReelAction_BoringReelDrops             ; 0d
+	dw ReelAction_CheckDropReel               ; 0e
+	dw ReelAction_WaitDropReel                ; 0f
+	dw ReelAction_StartSlowAdvanceReel3       ; 10
+	dw ReelAction_WaitSlowAdvanceReel3        ; 11
+	dw ReelAction_InitGolem                   ; 12
+	dw ReelAction_WaitGolem                   ; 13
+	dw ReelAction_EndGolem                    ; 14
+	dw Slots_InitChansey                      ; 15
+	dw ReelAction_WaitChansey                 ; 16
+	dw ReelAction_WaitEgg                     ; 17
+	dw ReelAction_DropReel                    ; 18
 ; 92c16
 
-Function92c16: ; 92c16
+ReelAction_DoNothing: ; 92c16
 	ret
+
 ; 92c17
 
-Function92c17: ; 92c17
-	ld hl, $5
+ReelAction_QuadrupleRate: ; 92c17
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $10
 	ret
+
 ; 92c1e
 
-Function92c1e: ; 92c1e
-	ld hl, $5
+ReelAction_DoubleRate: ; 92c1e
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $8
 	ret
+
 ; 92c25
 
-Function92c25: ; 92c25
-	ld hl, $5
+ReelAction_NormalRate: ; 92c25
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $4
 	ret
+
 ; 92c2c
 
-Function92c2c: ; 92c2c
-	ld hl, $5
+ReelAction_HalfRate: ; 92c2c
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $2
 	ret
+
 ; 92c33
 
-Function92c33: ; 92c33
-	ld hl, $5
+ReelAction_QuarterRate: ; 92c33
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $1
 	ret
+
 ; 92c3a
 
-Function92c3a: ; 92c3a
-	ld hl, $5
+Slots_StopReel: ; 92c3a
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	ld [hl], $1
-	ld hl, $f
+	ld hl, wReel1Slot0f - wReel1
 	add hl, bc
 	ld [hl], $3
-
-Function92c4c: ; 92c4c
-	ld hl, $f
+Slots_StopReelIgnoreJoypad: ; 92c4c
+	ld hl, wReel1Slot0f - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92c56
+	jr z, .EndReel
 	dec [hl]
 	ret
 
-.asm_92c56
-	ld hl, 0
+.EndReel
+	ld hl, wReel1ReelAction - wReel1
 	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
+ReelAction_StopReel1: ; 92c5e
+	ld a, [wSlotBias]
+	cp SLOTS_NOMATCH
+	jr z, .NoBias
+	ld hl, wReel1Slot09 - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92c72
+	jr z, .NoBias
 	dec [hl]
-	call Function92c76
+	call .CheckForBias
 	ret nz
-
-.asm_92c72
-	call Function92c3a
+.NoBias
+	call Slots_StopReel
 	ret
+
 ; 92c76
 
-Function92c76: ; 92c76
-	call Function92a12
-	ld a, [wc709]
+.CheckForBias: ; 92c76
+	call Slots_GetCurrentReelState
+	ld a, [wSlotBias]
 	ld e, a
 	ld a, [hli]
 	cp e
@@ -909,40 +933,41 @@
 	ld a, [hl]
 	cp e
 	ret
+
 ; 92c86
 
-Function92c86: ; 92c86
-	call Function92e94
-	jr nc, .asm_92c94
-	ld a, [wc717]
-	ld hl, wc709
+ReelAction_StopReel2: ; 92c86
+	call Slots_CheckMatchedFirstTwoReels
+	jr nc, .nope
+	ld a, [wSlotBuildingMatch]
+	ld hl, wSlotBias
 	cp [hl]
-	jr z, .asm_92ca5
-
-.asm_92c94
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92ca5
-	ld hl, $9
+	jr z, .NoBias
+.nope
+	ld a, [wSlotBias]
+	cp SLOTS_NOMATCH
+	jr z, .NoBias
+	ld hl, wReel1Slot09 - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92ca5
+	jr z, .NoBias
 	dec [hl]
 	ret
 
-.asm_92ca5
-	call Function92c3a
+.NoBias
+	call Slots_StopReel
 	ret
+
 ; 92ca9
 
-Function92ca9: ; 92ca9
-	call Function92f1d
-	jr nc, .asm_92cbd
-	ld hl, wc709
+ReelAction_StopReel3: ; 92ca9
+	call Slots_CheckMatchedAllThreeReels
+	jr nc, .NoMatch
+	ld hl, wSlotBias
 	cp [hl]
-	jr z, .asm_92cce
-	ld hl, $9
+	jr z, .NoBias
+	ld hl, wReel1Slot09 - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -950,49 +975,51 @@
 	dec [hl]
 	ret
 
-.asm_92cbd
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92cce
-	ld hl, $9
+.NoMatch
+	ld a, [wSlotBias]
+	cp SLOTS_NOMATCH
+	jr z, .NoBias
+	ld hl, wReel1Slot09 - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92cce
+	jr z, .NoBias
 	dec [hl]
 	ret
 
-.asm_92cce
-	call Function92c3a
+.NoBias
+	call Slots_StopReel
 	ret
+
 ; 92cd2
 
-Function92cd2: ; 92cd2
-	call Function92e94
-	jr nc, .asm_92ce1
-	ld a, [wc70c]
+ReelAction_SetUpReel2SkipTo7: ; 92cd2
+	call Slots_CheckMatchedFirstTwoReels
+	jr nc, .no_match
+	ld a, [wFirstTwoReelsMatchingSevens]
 	and a
-	jr z, .asm_92ce1
-	call Function92c3a
+	jr z, .no_match
+	call Slots_StopReel
 	ret
 
-.asm_92ce1
+.no_match
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld hl, 0
+	call Slots_PlaySFX
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $a
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld [hl], $20
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
 	ret
+
 ; 92cf8
 
-Function92cf8: ; 92cf8
-	ld hl, $a
+ReelAction_WaitReel2SkipTo7: ; 92cf8
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -1002,36 +1029,38 @@
 
 .asm_92d02
 	ld a, SFX_THROW_BALL
-	call Function9331e
-	ld hl, 0
+	call Slots_PlaySFX
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $8
 	ret
+
 ; 92d13
 
-Function92d13: ; 92d13
-	call Function92e94
+ReelAction_FastSpinReel2UntilLinedUp7s: ; 92d13
+	call Slots_CheckMatchedFirstTwoReels
 	ret nc
-	ld a, [wc70c]
+	ld a, [wFirstTwoReelsMatchingSevens]
 	and a
 	ret z
-	call Function92c3a
+	call Slots_StopReel
 	ret
+
 ; 92d20
 
-Function92d20: ; 92d20
-	call Function92f1d
+ReelAction_InitGolem: ; 92d20
+	call Slots_CheckMatchedAllThreeReels
 	ret c
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
+	call Slots_PlaySFX
+	call Slots_WaitSFX
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
 	call Function92fc0
@@ -1038,9 +1067,9 @@
 	push bc
 	push af
 	depixel 12, 13
-	ld a, SPRITE_ANIM_INDEX_06
+	ld a, SPRITE_ANIM_INDEX_SLOT_GOLEM
 	call _InitSpriteAnimStruct
-	ld hl, $e
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	pop af
 	ld [hl], a
@@ -1047,444 +1076,459 @@
 	pop bc
 	xor a
 	ld [wcf64], a
-
-Function92d4f: ; 92d4f
+ReelAction_WaitGolem: ; 92d4f
 	ld a, [wcf64]
-	cp $2
-	jr z, .asm_92d5b
-	cp $1
-	jr z, .asm_92d62
+	cp 2
+	jr z, .two
+	cp 1
+	jr z, .one
 	ret
 
-.asm_92d5b
-	call Function92f1d
-	call Function92c3a
+.two
+	call Slots_CheckMatchedAllThreeReels
+	call Slots_StopReel
 	ret
 
-.asm_92d62
-	ld hl, 0
+.one
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $8
 	ret
+
 ; 92d6e
 
-Function92d6e: ; 92d6e
+ReelAction_EndGolem: ; 92d6e
 	xor a
 	ld [wcf64], a
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	dec [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
 	ret
+
 ; 92d7e
 
-Function92d7e: ; 92d7e
-	call Function92f1d
+Slots_InitChansey: ; 92d7e
+	call Slots_CheckMatchedAllThreeReels
 	ret c
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
+	call Slots_PlaySFX
+	call Slots_WaitSFX
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
 	push bc
 	depixel 12, 0
-	ld a, SPRITE_ANIM_INDEX_07
+	ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY
 	call _InitSpriteAnimStruct
 	pop bc
 	xor a
 	ld [wcf64], a
 	ret
+
 ; 92da4
 
-Function92da4: ; 92da4
+ReelAction_WaitChansey: ; 92da4
 	ld a, [wcf64]
 	and a
 	ret z
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
 	ld a, $2
 	ld [wcf64], a
-
-Function92db3: ; 92db3
+ReelAction_WaitEgg: ; 92db3
 	ld a, [wcf64]
 	cp $4
 	ret c
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $10
-	ld hl, $a
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld [hl], $11
-
-Function92dca: ; 92dca
-	ld hl, $a
+ReelAction_DropReel: ; 92dca
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92dd4
+	jr z, .check_match
 	dec [hl]
 	ret
 
-.asm_92dd4
-	call Function92f1d
-	jr nc, .asm_92de5
+.check_match
+	call Slots_CheckMatchedAllThreeReels
+	jr nc, .EggAgain
 	and a
-	jr nz, .asm_92de5
+	jr nz, .EggAgain
 	ld a, $5
 	ld [wcf64], a
-	call Function92c3a
+	call Slots_StopReel
 	ret
 
-.asm_92de5
-	ld hl, $5
+.EggAgain
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
-rept 2
 	dec [hl]
-endr
+	dec [hl]
 	ld a, $1
 	ld [wcf64], a
 	ret
+
 ; 92df7
 
-Function92df7: ; 92df7
-	call Function92f1d
+ReelAction_BoringReelDrops: ; 92df7
+	call Slots_CheckMatchedAllThreeReels
 	ret c
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
+	call Slots_PlaySFX
+	call Slots_WaitSFX
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
 	call Function92fc0
-	ld hl, $a
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld [hl], a
-
-Function92e10: ; 92e10
-	ld hl, $a
+ReelAction_CheckDropReel: ; 92e10
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr nz, .asm_92e1f
-	call Function92f1d
-	call Function92c3a
+	jr nz, .spin
+	call Slots_CheckMatchedAllThreeReels
+	call Slots_StopReel
 	ret
 
-.asm_92e1f
+.spin
 	dec [hl]
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $b
+	ld hl, wReel1Slot0b - wReel1
 	add hl, bc
 	ld [hl], $20
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $0
-
-Function92e31: ; 92e31
-	ld hl, $b
+ReelAction_WaitDropReel: ; 92e31
+	ld hl, wReel1Slot0b - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92e3b
+	jr z, .DropReel
 	dec [hl]
 	ret
 
-.asm_92e3b
-	ld hl, 0
+.DropReel
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	dec [hl]
-	ld hl, $5
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
-	ld [hl], $8
+	ld [hl], $8 ; 2x
 	ret
+
 ; 92e47
 
-Function92e47: ; 92e47
-	call Function92f1d
+ReelAction_StartSlowAdvanceReel3: ; 92e47
+	call Slots_CheckMatchedAllThreeReels
 	ret c
 	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, $5
+	call Slots_PlaySFX
+	call Slots_WaitSFX
+	ld hl, wReel1SpinRate - wReel1
 	add hl, bc
 	ld [hl], $1
-	ld hl, 0
+	ld hl, wReel1ReelAction - wReel1
 	add hl, bc
 	inc [hl]
-	ld hl, $a
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld [hl], $10
-
-Function92e64: ; 92e64
-	ld hl, $a
+ReelAction_WaitSlowAdvanceReel3: ; 92e64
+	ld hl, wReel1Slot0a - wReel1
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_92e73
+	jr z, .check1
 	dec [hl]
-.asm_92e6d
+.play_sfx
 	ld a, SFX_GOT_SAFARI_BALLS
-	call Function9331e
+	call Slots_PlaySFX
 	ret
 
-.asm_92e73
-	ld a, [wc709]
+.check1
+	ld a, [wSlotBias]
 	and a
-	jr nz, .asm_92e88
-	call Function92f1d
-	jr nc, .asm_92e6d
+	jr nz, .check2
+	call Slots_CheckMatchedAllThreeReels
+	jr nc, .play_sfx
 	and a
-	jr nz, .asm_92e6d
-	call Function92c3a
+	jr nz, .play_sfx
+	call Slots_StopReel
 	call WaitSFX
 	ret
 
-.asm_92e88
-	call Function92f1d
-	jr c, .asm_92e6d
-	call Function92c3a
+.check2
+	call Slots_CheckMatchedAllThreeReels
+	jr c, .play_sfx
+	call Slots_StopReel
 	call WaitSFX
 	ret
+
 ; 92e94
 
-Function92e94: ; 92e94
+Slots_CheckMatchedFirstTwoReels: ; 92e94
 	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
+	ld [wFirstTwoReelsMatching], a
+	ld [wFirstTwoReelsMatchingSevens], a
+	call Slots_GetCurrentReelState
+	call Slots_CopyReelState
+	ld a, [wSlotBet]
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_92ebd
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_92eb6
+	ld de, .return
 	push de
 	jp [hl]
 
-.asm_92eb6
-	ld a, [wc70b]
+.return
+	ld a, [wFirstTwoReelsMatching]
 	and a
 	ret z
 	scf
 	ret
+
 ; 92ebd
 
-Jumptable_92ebd: ; 92ebd
-	dw Function92ed4
-	dw Function92ed1
-	dw Function92ecb
-	dw Function92ec5
+.Jumptable: ; 92ebd
+	
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
 ; 92ec5
 
-Function92ec5: ; 92ec5
-	call Function92ee0
-	call Function92ef6
+.three: ; 92ec5
+	call .CheckUpwardsDiag
+	call .CheckDownwardsDiag
 
-Function92ecb: ; 92ecb
-	call Function92ed5
-	call Function92f01
+.two: ; 92ecb
+	call .CheckBottomRow
+	call .CheckTopRow
 
-Function92ed1: ; 92ed1
-	call Function92eeb
+.one: ; 92ed1
+	call .CheckMiddleRow
 
-Function92ed4: ; 92ed4
+.zero: ; 92ed4
 	ret
+
 ; 92ed5
 
-Function92ed5: ; 92ed5
-	ld hl, wc70e
-	ld a, [EnemyScreens]
+.CheckBottomRow: ; 92ed5
+	ld hl, wCurrReelStopped
+	ld a, [wReel1Stopped]
 	cp [hl]
-	call z, Function92f0c
+	call z, .StoreResult
 	ret
+
 ; 92ee0
 
-Function92ee0: ; 92ee0
-	ld hl, wEnemyGoesFirst
-	ld a, [wc700]
+.CheckUpwardsDiag: ; 92ee0
+	ld hl, wCurrReelStopped + 1
+	ld a, [wReel1Stopped]
 	cp [hl]
-	call z, Function92f0c
+	call z, .StoreResult
 	ret
+
 ; 92eeb
 
-Function92eeb: ; 92eeb
-	ld hl, wEnemyGoesFirst
-	ld a, [wc701]
+.CheckMiddleRow: ; 92eeb
+	ld hl, wCurrReelStopped + 1
+	ld a, [wReel1Stopped + 1]
 	cp [hl]
-	call z, Function92f0c
+	call z, .StoreResult
 	ret
+
 ; 92ef6
 
-Function92ef6: ; 92ef6
-	ld hl, wEnemyGoesFirst
-	ld a, [wc702]
+.CheckDownwardsDiag: ; 92ef6
+	ld hl, wCurrReelStopped + 1
+	ld a, [wReel1Stopped + 2]
 	cp [hl]
-	call z, Function92f0c
+	call z, .StoreResult
 	ret
+
 ; 92f01
 
-Function92f01: ; 92f01
-	ld hl, wc710
-	ld a, [wc702]
+.CheckTopRow: ; 92f01
+	ld hl, wCurrReelStopped + 2
+	ld a, [wReel1Stopped + 2]
 	cp [hl]
-	call z, Function92f0c
+	call z, .StoreResult
 	ret
+
 ; 92f0c
 
-Function92f0c: ; 92f0c
-	ld [wc717], a
+.StoreResult: ; 92f0c
+	ld [wSlotBuildingMatch], a
 	and a
-	jr nz, .asm_92f17
+	jr nz, .matching_sevens
 	ld a, $1
-	ld [wc70c], a
+	ld [wFirstTwoReelsMatchingSevens], a
 
-.asm_92f17
+.matching_sevens
 	ld a, $1
-	ld [wc70b], a
+	ld [wFirstTwoReelsMatching], a
 	ret
+
 ; 92f1d
 
-Function92f1d: ; 92f1d
+Slots_CheckMatchedAllThreeReels: ; 92f1d
 	ld a, $ff
-	ld [EffectFailed], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
+	ld [wSlotMatched], a
+	call Slots_GetCurrentReelState
+	call Slots_CopyReelState
+	ld a, [wSlotBet]
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_92f48
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_92f3d
+	ld de, .return
 	push de
 	jp [hl]
 
-.asm_92f3d
-	ld a, [wc70d]
+.return
+	ld a, [wSlotMatched]
 	cp $ff
-	jr nz, .asm_92f46
+	jr nz, .matched_nontrivial
 	and a
 	ret
 
-.asm_92f46
+.matched_nontrivial
 	scf
 	ret
+
 ; 92f48
 
-Jumptable_92f48: ; 92f48
-	dw Function92f5f
-	dw Function92f5c
-	dw Function92f56
-	dw Function92f50
+.Jumptable: ; 92f48
+	
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
 ; 92f50
 
-Function92f50: ; 92f50
-	call Function92f70
-	call Function92f90
+.three: ; 92f50
+	call .CheckUpwardsDiag
+	call .CheckDownwardsDiag
 
-Function92f56: ; 92f56
-	call Function92f60
-	call Function92fa0
+.two: ; 92f56
+	call .CheckBottomRow
+	call .CheckTopRow
 
-Function92f5c: ; 92f5c
-	call Function92f80
+.one: ; 92f5c
+	call .CheckMiddleRow
 
-Function92f5f: ; 92f5f
+.zero: ; 92f5f
 	ret
+
 ; 92f60
 
-Function92f60: ; 92f60
-	ld hl, wc70e
-	ld a, [wc700]
+.CheckBottomRow: ; 92f60
+	ld hl, wCurrReelStopped
+	ld a, [wReel1Stopped]
 	cp [hl]
 	ret nz
-	ld hl, wc703
+	ld hl, wReel2Stopped
 	cp [hl]
-	call z, Function92fb0
+	call z, .StoreResult
 	ret
+
 ; 92f70
 
-Function92f70: ; 92f70
-	ld hl, wc710
-	ld a, [wc700]
+.CheckUpwardsDiag: ; 92f70
+	ld hl, wCurrReelStopped + 2
+	ld a, [wReel1Stopped]
 	cp [hl]
 	ret nz
-	ld hl, wc704
+	ld hl, wReel2Stopped + 1
 	cp [hl]
-	call z, Function92fb0
+	call z, .StoreResult
 	ret
+
 ; 92f80
 
-Function92f80: ; 92f80
-	ld hl, wEnemyGoesFirst
-	ld a, [wc701]
+.CheckMiddleRow: ; 92f80
+	ld hl, wCurrReelStopped + 1
+	ld a, [wReel1Stopped + 1]
 	cp [hl]
 	ret nz
-	ld hl, wc704
+	ld hl, wReel2Stopped + 1
 	cp [hl]
-	call z, Function92fb0
+	call z, .StoreResult
 	ret
+
 ; 92f90
 
-Function92f90: ; 92f90
-	ld hl, wc70e
-	ld a, [wc702]
+.CheckDownwardsDiag: ; 92f90
+	ld hl, wCurrReelStopped
+	ld a, [wReel1Stopped + 2]
 	cp [hl]
 	ret nz
-	ld hl, wc704
+	ld hl, wReel2Stopped + 1
 	cp [hl]
-	call z, Function92fb0
+	call z, .StoreResult
 	ret
+
 ; 92fa0
 
-Function92fa0: ; 92fa0
-	ld hl, wc710
-	ld a, [wc702]
+.CheckTopRow: ; 92fa0
+	ld hl, wCurrReelStopped + 2
+	ld a, [wReel1Stopped + 2]
 	cp [hl]
 	ret nz
-	ld hl, wc705
+	ld hl, wReel2Stopped + 2
 	cp [hl]
-	call z, Function92fb0
+	call z, .StoreResult
 	ret
+
 ; 92fb0
 
-Function92fb0: ; 92fb0
-	ld [wc70d], a
+.StoreResult: ; 92fb0
+	ld [wSlotMatched], a
 	ret
+
 ; 92fb4
 
-Function92fb4: ; 92fb4
-	ld de, wc70e
+Slots_CopyReelState: ; 92fb4
+	ld de, wCurrReelStopped
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -1494,211 +1538,219 @@
 	ld a, [hl]
 	ld [de], a
 	ret
+
 ; 92fc0
 
 Function92fc0: ; 92fc0
-	ld hl, $3
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	ld a, [hl]
 	push af
 	push hl
-	call Function92fcf
+	call .Check7Bias
 	pop hl
 	pop af
 	ld [hl], a
 	ld a, e
 	ret
+
 ; 92fcf
 
-Function92fcf: ; 92fcf
-	ld a, [wc709]
+.Check7Bias: ; 92fcf
+	ld a, [wSlotBias]
 	and a
-	jr nz, .asm_92fe8
+	jr nz, .not_biased_to_seven
 	ld e, $0
-.asm_92fd7
-	ld hl, $3
+.loop1
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	inc [hl]
 	inc e
 	push de
-	call Function92f1d
+	call Slots_CheckMatchedAllThreeReels
 	pop de
-	jr nc, .asm_92fd7
+	jr nc, .loop1
 	and a
-	jr nz, .asm_92fd7
+	jr nz, .loop1
 	ret
 
-.asm_92fe8
+.not_biased_to_seven
 	call Random
 	and $7
-	cp $4
-	jr c, .asm_92fe8
+	cp $4 ; ((50 percent) & 7) + 1
+	jr c, .not_biased_to_seven
 	ld e, a
-.asm_92ff2
+.loop2
 	ld a, e
 	inc e
-	ld hl, $3
+	ld hl, wReel1Position - wReel1
 	add hl, bc
 	add [hl]
 	ld [hl], a
 	push de
-	call Function92f1d
+	call Slots_CheckMatchedAllThreeReels
 	pop de
-	jr c, .asm_92ff2
+	jr c, .loop2
 	ret
+
 ; 93002
 
-Function93002: ; 93002 (24:7002)
-	ld a, [wc709]
+Slots_InitBias: ; 93002 (24:7002)
+	ld a, [wSlotBias]
 	and a
 	ret z
-	ld hl, Unknown_93023
+	ld hl, .Normal
 	ld a, [ScriptVar]
 	and a
-	jr z, .asm_93013
-	ld hl, Unknown_93031
-.asm_93013
+	jr z, .okay
+	ld hl, .Lucky
+.okay
 	call Random
 	ld c, a
-.asm_93017
+.loop
 	ld a, [hli]
 	cp c
-	jr nc, .asm_9301e
+	jr nc, .done
 	inc hl
-	jr .asm_93017
-.asm_9301e
+	jr .loop
+
+.done
 	ld a, [hl]
-	ld [wc709], a
+	ld [wSlotBias], 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
+.Normal: ; 93023
+	db $01, SLOTS_SEVEN    ; 1/256
+	db $03, SLOTS_POKEBALL ; 1/128
+	db $0a, SLOTS_STARYU   ; 7/256
+	db $14, SLOTS_SQUIRTLE ; 5/128
+	db $28, SLOTS_PIKACHU  ; 5/64
+	db $30, SLOTS_CHERRY   ; 1/32
+	db $ff, SLOTS_NOMATCH  ; everything else
 ; 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
+.Lucky: ; 93031
+	db $02, SLOTS_SEVEN    ;  1/128
+	db $03, SLOTS_POKEBALL ;  1/256
+	db $08, SLOTS_STARYU   ;  5/256
+	db $10, SLOTS_SQUIRTLE ;  1/32
+	db $1e, SLOTS_PIKACHU  ;  7/128
+	db $50, SLOTS_CHERRY   ; 25/128
+	db $ff, SLOTS_NOMATCH  ; everything else
 ; 9303f
 
-Function9303f: ; 9303f (24:703f)
-	ld b, $14
-	ld a, [wc70a]
+Slots_IlluminateBetLights: ; 9303f (24:703f)
+	ld b, $14 ; turned on
+	ld a, [wSlotBet]
 	dec a
-	jr z, asm_93066
+	jr z, Slots_Lights1OnOff
 	dec a
-	jr z, asm_9305a
-	jr asm_9304e
+	jr z, Slots_Lights2OnOff
+	jr Slots_Lights3OnOff
 
-Function9304c: ; 9304c (24:704c)
-	ld b, $23
-asm_9304e: ; 9304e (24:704e)
+Slots_DeilluminateBetLights: ; 9304c (24:704c)
+	ld b, $23 ; turned off
+Slots_Lights3OnOff: ; 9304e (24:704e)
 	hlcoord 3, 2
-	call Function93069
+	call Slots_TurnLightsOnOrOff
 	hlcoord 3, 10
-	call Function93069
-asm_9305a: ; 9305a (24:705a)
+	call Slots_TurnLightsOnOrOff
+Slots_Lights2OnOff: ; 9305a (24:705a)
 	hlcoord 3, 4
-	call Function93069
+	call Slots_TurnLightsOnOrOff
 	hlcoord 3, 8
-	call Function93069
-asm_93066: ; 93066 (24:7066)
+	call Slots_TurnLightsOnOrOff
+Slots_Lights1OnOff: ; 93066 (24:7066)
 	hlcoord 3, 6
 
-Function93069: ; 93069 (24:7069)
+Slots_TurnLightsOnOrOff: ; 93069 (24:7069)
 	ld a, b
 	ld [hl], a
-	ld de, $d
+	ld de, SCREEN_WIDTH / 2 + 3
 	add hl, de
 	ld [hl], a
-	ld de, $7
+	ld de, SCREEN_WIDTH / 2 - 3
 	add hl, de
 	inc a
 	ld [hl], a
-	ld de, $d
+	ld de, SCREEN_WIDTH / 2 + 3
 	add hl, de
 	ld [hl], a
 	ret
 
-Function9307c: ; 9307c (24:707c)
-	ld hl, UnknownText_0x930c7
+Slots_AskBet: ; 9307c (24:707c)
+.loop
+	ld hl, .Text_BetHowManyCoins
 	call PrintText
-	ld hl, MenuDataHeader_0x930d6
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
-	call InterpretMenu2
-	call WriteBackup
+	call VerticalMenu
+	call CloseWindow
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld b, a
-	ld a, $4
+	ld a, 4
 	sub b
-	ld [wc70a], a
+	ld [wSlotBet], a
 	ld hl, Coins
 	ld c, a
 	ld a, [hli]
 	and a
-	jr nz, .asm_930ad
+	jr nz, .Start
 	ld a, [hl]
 	cp c
-	jr nc, .asm_930ad
-	ld hl, UnknownText_0x930d1
+	jr nc, .Start
+	ld hl, .Text_NotEnoughCoins
 	call PrintText
-	jr Function9307c
-.asm_930ad
+	jr .loop
+
+.Start
 	ld hl, Coins + 1
 	ld a, [hl]
 	sub c
 	ld [hld], a
-	jr nc, .asm_930b6
+	jr nc, .ok
 	dec [hl]
-.asm_930b6
+.ok
 	call WaitSFX
 	ld de, SFX_PAY_DAY
 	call PlaySFX
-	ld hl, UnknownText_0x930cc
+	ld hl, .Text_Start
 	call PrintText
 	and a
 	ret
+
 ; 930c7 (24:70c7)
 
-UnknownText_0x930c7: ; 0x930c7
+.Text_BetHowManyCoins: ; 0x930c7
 	; Bet how many coins?
 	text_jump UnknownText_0x1c5049
 	db "@"
 ; 0x930cc
 
-UnknownText_0x930cc: ; 0x930cc
+.Text_Start: ; 0x930cc
 	; Start!
 	text_jump UnknownText_0x1c505e
 	db "@"
 ; 0x930d1
 
-UnknownText_0x930d1: ; 0x930d1
+.Text_NotEnoughCoins: ; 0x930d1
 	; Not enough coins.
 	text_jump UnknownText_0x1c5066
 	db "@"
 ; 0x930d6
 
-MenuDataHeader_0x930d6: ; 0x930d6
+.MenuDataHeader: ; 0x930d6
 	db $40 ; flags
 	db 10, 14 ; start coords
 	db 17, 19 ; end coords
-	dw MenuData2_0x930de
+	dw .MenuData2
 	db 1 ; default option
 ; 0x930de
 
-MenuData2_0x930de: ; 0x930de
+.MenuData2: ; 0x930de
 	db $80 ; flags
 	db 3 ; items
 	db " 3@"
@@ -1706,128 +1758,125 @@
 	db " 1@"
 ; 0x930e9
 
-Function930e9: ; 930e9 (24:70e9)
+Slots_AskPlayAgain: ; 930e9 (24:70e9)
 	ld hl, Coins
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_930fd
-	ld hl, UnknownText_9311a
+	jr nz, .you_have_coins
+	ld hl, .Text_OutOfCoins
 	call PrintText
 	ld c, 60
 	call DelayFrames
-	jr .asm_93118
-.asm_930fd
-	ld hl, UnknownText_9311f
+	jr .exit_slots
+
+.you_have_coins
+	ld hl, .Text_PlayAgain
 	call PrintText
 	call LoadMenuTextBox
 	lb bc, 14, 12
 	call PlaceYesNoBox
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
-	call WriteBackup
+	call CloseWindow
 	and a
-	jr nz, .asm_93118
+	jr nz, .exit_slots
 	and a
 	ret
-.asm_93118
+
+.exit_slots
 	scf
 	ret
+
 ; 9311a (24:711a)
 
-UnknownText_9311a: ; 9311a
+.Text_OutOfCoins: ; 9311a
 	text_jump UnknownText_0x1c5079
 	db "@"
 
-UnknownText_9311f: ; 9311f
+.Text_PlayAgain: ; 9311f
 	text_jump UnknownText_0x1c5092
 	db "@"
 
-Function93124: ; 93124 (24:7124)
-	ld a, [EffectFailed]
-	cp $ff
-	jr z, .asm_93151
+SlotGetPayout: ; 93124 (24:7124)
+	ld a, [wSlotMatched]
+	cp -1
+	jr z, .no_win
 	srl a
 	ld e, a
 	ld d, 0
-	ld hl, .data_93145
+	ld hl, .PayoutTable
 	add hl, de
 	ld a, [hli]
-	ld [PlayerUsedMoves], a
+	ld [wPayout + 1], a
 	ld e, a
 	ld a, [hl]
-	ld [wc711], a
+	ld [wPayout], 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
+.PayoutTable
+	dw 300
+	dw  50
+	dw   6
+	dw   8
+	dw  10
+	dw  15
 
-.asm_93151
-	ld hl, wc711
+.no_win
+	ld hl, wPayout
 	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
+SlotPayoutText: ; 93158 (24:7158)
+	ld a, [wSlotMatched]
+	cp -1
+	jr nz, .MatchedSomething
+	ld hl, .Text_Darn
 	call PrintText
 	callba MobileFn_105fd0
 	ret
-.asm_9316c
+
+.MatchedSomething
 	srl a
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_93195
+	ld hl, .PayoutStrings
 rept 3
 	add hl, de
 endr
 	ld de, StringBuffer2
-	ld bc, $4
+	ld bc, 4
 	call CopyBytes
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_93188
+	ld de, .return
 	push de
 	jp [hl]
-.asm_93188
-	ld hl, UnknownText_0x931b9
+
+.return
+	ld hl, .Text_PrintPayout
 	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
+.PayoutStrings: ; 93195
+	dbw "300@", .LinedUpSevens
+	dbw "50@@", .LinedUpPokeballs
+	dbw "6@@@", .LinedUpMonOrCherry
+	dbw "8@@@", .LinedUpMonOrCherry
+	dbw "10@@", .LinedUpMonOrCherry
+	dbw "15@@", .LinedUpMonOrCherry
 ; 931b9
 
-UnknownText_0x931b9: ; 0x931b9
+.Text_PrintPayout: ; 0x931b9
 	start_asm
-; 0x931ba
-
-Function931ba: ; 931ba
-	ld a, [EffectFailed]
+	ld a, [wSlotMatched]
 	add $25
 	ldcoord_a 2, 13
 	inc a
@@ -1837,29 +1886,30 @@
 	inc a
 	ldcoord_a 3, 14
 	hlcoord 18, 17
-	ld [hl], $ee
-	ld hl, UnknownText_0x931db
+	ld [hl], "▼"
+	ld hl, .Text_LinedUpWonCoins
 rept 4
 	inc bc
 endr
 	ret
+
 ; 931db
 
-UnknownText_0x931db: ; 0x931db
+.Text_LinedUpWonCoins: ; 0x931db
 	; lined up! Won @  coins!
 	text_jump UnknownText_0x1c509f
 	db "@"
 ; 0x931e0
 
-UnknownText_0x931e0: ; 0x931e0
+.Text_Darn: ; 0x931e0
 	; Darn!
 	text_jump UnknownText_0x1c50bb
 	db "@"
 ; 0x931e5
 
-Function931e5: ; 931e5
+.LinedUpSevens: ; 931e5
 	ld a, SFX_2ND_PLACE
-	call Function9331e
+	call Slots_PlaySFX
 	call WaitSFX
 	ld a, [wd002]
 	and a
@@ -1868,7 +1918,7 @@
 	and $14
 	ret z
 	ld a, $ff
-	ld [wc709], a
+	ld [wSlotBias], a
 	ret
 
 .asm_931ff
@@ -1876,108 +1926,112 @@
 	and $1c
 	ret z
 	ld a, $ff
-	ld [wc709], a
+	ld [wSlotBias], a
 	ret
+
 ; 9320b
 
-Function9320b: ; 9320b
+.LinedUpPokeballs: ; 9320b
 	ld a, SFX_3RD_PLACE
-	call Function9331e
+	call Slots_PlaySFX
 	call WaitSFX
 	ret
+
 ; 93214
 
-Function93214: ; 93214
+.LinedUpMonOrCherry: ; 93214
 	ld a, SFX_PRESENT
-	call Function9331e
+	call Slots_PlaySFX
 	call WaitSFX
 	ret
+
 ; 9321d
 
-Function9321d: ; 9321d (24:721d)
-	ld hl, $b
+SlotMachine_AnimateGolem: ; 9321d (24:721d)
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
-	ld hl, Jumptable_9322d
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Jumptable_9322d: ; 9322d (24:722d)
-	dw Function93233
-	dw Function93259
-	dw Function93289
+.Jumptable: ; 9322d (24:722d)
+	
+	dw .init
+	dw .fall
+	dw .roll
 
 
-Function93233: ; 93233 (24:7233)
-	ld hl, $e
+.init: ; 93233 (24:7233)
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr nz, .asm_93247
+	jr nz, .retain
 	ld a, $2
 	ld [wcf64], a
-	ld hl, 0
+	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 	ld [hl], $0
 	ret
-.asm_93247
+
+.retain
 	dec [hl]
-	ld hl, $b
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $30
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], $0
 
-Function93259: ; 93259 (24:7259)
-	ld hl, $c
+.fall: ; 93259 (24:7259)
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $20
-	jr c, .asm_93273
+	jr c, .play_sound
 	dec [hl]
 	ld e, a
-	ld d, $70
-	callba Functionce765
+	ld d, 14 * 8
+	callba BattleAnim_Sine_e
 	ld a, e
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
-.asm_93273
-	ld hl, $b
+
+.play_sound
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $2
 	ld a, $1
 	ld [wcf64], a
 	ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call Function9331e
+	call Slots_PlaySFX
 	ret
 
-Function93289: ; 93289 (24:7289)
-	ld hl, $6
+.roll: ; 93289 (24:7289)
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld a, [hl]
-rept 2
 	inc [hl]
-endr
-	cp $48
-	jr nc, .asm_932a3
+	inc [hl]
+	cp 9 * 8
+	jr nc, .restart
 	and $3
 	ret nz
-	ld hl, $d
+	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	xor $ff
@@ -1985,8 +2039,9 @@
 	ld [hl], a
 	ld [hSCY], a
 	ret
-.asm_932a3
-	ld hl, $b
+
+.restart
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	xor a
 	ld [hl], a
@@ -1993,92 +2048,96 @@
 	ld [hSCY], a
 	ret
 
-Function932ac: ; 932ac (24:72ac)
-	ld hl, $b
+Slots_AnimateChansey: ; 932ac (24:72ac)
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
-	ld hl, Jumptable_932bc
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Jumptable_932bc: ; 932bc (24:72bc)
-	dw Function932c2
-	dw Function932e0
-	dw Function932fc
+.Jumptable: ; 932bc (24:72bc)
+	
+	dw .walk
+	dw .one
+	dw .two
 
 
-Function932c2: ; 932c2 (24:72c2)
-	ld hl, $4
+.walk: ; 932c2 (24:72c2)
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
-	cp $68
-	jr z, .asm_932d6
+	cp 13 * 8
+	jr z, .limit
 	and $f
 	ret nz
 	ld de, SFX_JUMP_OVER_LEDGE
 	call PlaySFX
 	ret
-.asm_932d6
-	ld hl, $b
+
+.limit
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
 	ld a, $1
 	ld [wcf64], a
 
-Function932e0: ; 932e0 (24:72e0)
+.one: ; 932e0 (24:72e0)
 	ld a, [wcf64]
 	cp $2
-	jr z, .asm_932f1
+	jr z, .retain
 	cp $5
 	ret nz
-	ld hl, 0
+	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 	ld [hl], $0
 	ret
-.asm_932f1
-	ld hl, $b
+
+.retain
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	inc [hl]
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], $8
-
-Function932fc: ; 932fc (24:72fc)
-	ld hl, $c
+.two: ; 932fc (24:72fc)
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_93306
+	jr z, .spawn_egg
 	dec [hl]
 	ret
-.asm_93306
-	ld hl, $b
+
+.spawn_egg
+	ld hl, SPRITEANIMSTRUCT_0B
 	add hl, bc
 	dec [hl]
 	push bc
 	depixel 12, 13, 0, 4
-	ld a, SPRITE_ANIM_INDEX_08
+	ld a, SPRITE_ANIM_INDEX_SLOTS_EGG
 	call _InitSpriteAnimStruct
 	pop bc
 	ret
+
 ; 93316 (24:7316)
 
-Function93316: ; 93316
+Slots_WaitSFX: ; 93316
 	push bc
 	ld c, 16
 	call DelayFrames
 	pop bc
 	ret
+
 ; 9331e
 
-Function9331e: ; 9331e (24:731e)
+Slots_PlaySFX: ; 9331e (24:731e)
 	push de
 	ld e, a
 	ld d, 0
@@ -2085,14 +2144,70 @@
 	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
+; The first three positions are repeated to
+; avoid needing to check indices when copying.
+Reel1Tilemap: ; 93327
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_CHERRY   ;  1
+	db SLOTS_STARYU   ;  2
+	db SLOTS_PIKACHU  ;  3
+	db SLOTS_SQUIRTLE ;  4
+	db SLOTS_SEVEN    ;  5
+	db SLOTS_CHERRY   ;  6
+	db SLOTS_STARYU   ;  7
+	db SLOTS_PIKACHU  ;  8
+	db SLOTS_SQUIRTLE ;  9
+	db SLOTS_POKEBALL ; 10
+	db SLOTS_CHERRY   ; 11
+	db SLOTS_STARYU   ; 12
+	db SLOTS_PIKACHU  ; 13
+	db SLOTS_SQUIRTLE ; 14
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_CHERRY   ;  1
+	db SLOTS_STARYU   ;  2
+
+Reel2Tilemap: ; 93339
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_PIKACHU  ;  1
+	db SLOTS_CHERRY   ;  2
+	db SLOTS_SQUIRTLE ;  3
+	db SLOTS_STARYU   ;  4
+	db SLOTS_POKEBALL ;  5
+	db SLOTS_PIKACHU  ;  6
+	db SLOTS_CHERRY   ;  7
+	db SLOTS_SQUIRTLE ;  8
+	db SLOTS_STARYU   ;  9
+	db SLOTS_POKEBALL ; 10
+	db SLOTS_PIKACHU  ; 11
+	db SLOTS_CHERRY   ; 12
+	db SLOTS_SQUIRTLE ; 13
+	db SLOTS_STARYU   ; 14
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_PIKACHU  ;  1
+	db SLOTS_CHERRY   ;  2
+
+Reel3Tilemap: ; 9334b
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_PIKACHU  ;  1
+	db SLOTS_CHERRY   ;  2
+	db SLOTS_SQUIRTLE ;  3
+	db SLOTS_STARYU   ;  4
+	db SLOTS_PIKACHU  ;  5
+	db SLOTS_CHERRY   ;  6
+	db SLOTS_SQUIRTLE ;  7
+	db SLOTS_STARYU   ;  8
+	db SLOTS_PIKACHU  ;  9
+	db SLOTS_POKEBALL ; 10
+	db SLOTS_CHERRY   ; 11
+	db SLOTS_SQUIRTLE ; 12
+	db SLOTS_STARYU   ; 13
+	db SLOTS_PIKACHU  ; 14
+	db SLOTS_SEVEN    ;  0
+	db SLOTS_PIKACHU  ;  1
+	db SLOTS_CHERRY   ;  2
 ; 9335d
 
 SlotsTilemap: ; 9335d
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -26,7 +26,7 @@
 	add_special Special_CheckBothSelectedSameRoom
 	add_special Special_FailedLinkToPast
 	add_special Special_CloseLink
-	add_special Special_AbortLink
+	add_special WaitForOtherPlayerToExit
 	add_special Special_SetBitsForBattleRequest
 	add_special Special_SetBitsForTimeCapsuleRequest
 	add_special Special_CheckTimeCapsuleCompatibility
@@ -101,7 +101,7 @@
 	add_special SpecialCheckPokerus
 	add_special Special_DisplayCoinCaseBalance
 	add_special Special_DisplayMoneyAndCoinBalance
-	add_special PlaceMoneyTopRightOW
+	add_special PlaceMoneyTopRight
 	add_special Special_CheckForLuckyNumberWinners
 	add_special Special_CheckLuckyNumberShowFlag
 	add_special Special_ResetLuckyNumberShowFlag
@@ -126,7 +126,7 @@
 	add_special SpecialTrainerHouse
 	add_special PhotoStudio
 	add_special InitRoamMons
-	add_special Special_RotatePalettesRightMusic
+	add_special Special_FadeOutMusic
 	add_special Diploma
 	add_special PrintDiploma
 
@@ -147,7 +147,7 @@
 	add_special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
 	add_special Function11ba38
 	add_special SpecialCheckForBattleTowerRules
-	add_special Function117656
+	add_special Special_GiveOddEgg
 	add_special Reset
 	add_special Function1011f1
 	add_special Function101220
@@ -175,7 +175,7 @@
 	add_special SpecialBeastsCheck
 	add_special SpecialMonCheck
 	add_special Special_SetPlayerPalette
-	add_special Function170bd2
+	add_special ret_170bd2
 	add_special Mobile_SelectThreeMons
 	add_special Function1037eb
 	add_special Function10383c
@@ -256,7 +256,7 @@
 	jr FoundOne
 
 FoundOne: ; c292
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 
@@ -334,11 +334,11 @@
 	call GetSRAMBank
 	ld a, [sMysteryGiftItem]
 	ld [CurItem], a
-	ld a, $1
+	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
 	ld hl, NumItems
 	call ReceiveItem
-	jr nc, .asm_c33d
+	jr nc, .no_room
 	xor a
 	ld [sMysteryGiftItem], a
 	call CloseSRAM
@@ -347,11 +347,11 @@
 	call GetItemName
 	ld hl, .ReceiveItemText
 	call PrintText
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 
-.asm_c33d
+.no_room
 	call CloseSRAM
 	xor a
 	ld [ScriptVar], a
@@ -380,8 +380,8 @@
 
 Special_UnownPuzzle: ; c360
 	call FadeToMenu
-	callba Functione1190
-	ld a, [wd0ec]
+	callba UnownPuzzle
+	ld a, [wSolvedUnownPuzzle]
 	ld [ScriptVar], a
 	call ExitAllMenus
 	ret
@@ -433,35 +433,35 @@
 	ld hl, Coins
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_c3c4
+	jr z, .no_coins
 	ld a, COIN_CASE
 	ld [CurItem], a
 	ld hl, NumItems
 	call CheckItem
-	jr nc, .asm_c3c9
+	jr nc, .no_coin_case
 	and a
 	ret
 
-.asm_c3c4
-	ld hl, UnknownText_0xc3d1
-	jr .asm_c3cc
+.no_coins
+	ld hl, .NoCoinsText
+	jr .print
 
-.asm_c3c9
-	ld hl, UnknownText_0xc3d6
+.no_coin_case
+	ld hl, .NoCoinCaseText
 
-.asm_c3cc
+.print
 	call PrintText
 	scf
 	ret
 ; c3d1
 
-UnknownText_0xc3d1: ; 0xc3d1
+.NoCoinsText: ; 0xc3d1
 	; You have no coins.
 	text_jump UnknownText_0x1bd3d7
 	db "@"
 ; 0xc3d6
 
-UnknownText_0xc3d6: ; 0xc3d6
+.NoCoinCaseText: ; 0xc3d6
 	; You don't have a COIN CASE.
 	text_jump UnknownText_0x1bd3eb
 	db "@"
@@ -498,22 +498,22 @@
 ; c403
 
 
-LoadWildData:: ; c403
+StoreSwarmMapIndices:: ; c403
 	ld a, c
 	and a
-	jr nz, .swarm_route35
+	jr nz, .yanma
 ; swarm dark cave violet entrance
 	ld a, d
-	ld [wdfcc], a
+	ld [wDunsparceMapGroup], a
 	ld a, e
-	ld [wdfcd], a
+	ld [wDunsparceMapNumber], a
 	ret
 
-.swarm_route35
+.yanma
 	ld a, d
-	ld [wdc5a], a
+	ld [wYanmaMapGroup], a
 	ld a, e
-	ld [wdc5b], a
+	ld [wYanmaMapNumber], a
 	ret
 ; c419
 
@@ -557,7 +557,7 @@
 	ld hl, .ProximityCoords
 .loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .nope
 	cp b
 	jr nz, .nextcoord
@@ -565,7 +565,7 @@
 	cp c
 	jr nz, .loop
 
-	ld a, $1
+	ld a, TRUE
 	jr .done
 
 .nextcoord
@@ -585,7 +585,7 @@
 	db 35, 10 ; below
 	db 36,  8 ; right
 	db 36,  9 ; right
-	db $ff
+	db -1
 
 
 PlayCurMonCry: ; c472
@@ -616,7 +616,7 @@
 	ret
 
 
-Special_RotatePalettesRightMusic: ; c48f
+Special_FadeOutMusic: ; c48f
 	ld a, MUSIC_NONE % $100
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
--- /dev/null
+++ b/engine/sprite_anims.asm
@@ -1,0 +1,890 @@
+DoAnimFrame: ; 8d24b
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, .Jumptable
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 8d25b
+
+.Jumptable: ; 8d25b (23:525b)
+	
+	dw .Null        ; null
+	dw .one         ; bouncing mon icon
+	dw .two         ; bouncing mon icon, selected
+	dw .three       ; bouncing mon icon, menu open
+	dw .four
+	dw .five
+	dw .GameFreakLogo         ; Game Freak logo
+	dw .seven
+	dw .eight
+	dw .SlotsGolem        ; Something to do with slots
+	dw .SlotsChansey         ; Something to do with slots
+	dw .SlotsChanseyEgg      ; Something to do with slots
+	dw .twelve      ; blinking cursor
+	dw .thirteen
+	dw .fourteen
+	dw .fifteen
+	dw .sixteen
+	dw .seventeen
+	dw .eighteen
+	dw .EggShell    ; finish egg hatching animation
+	dw .RadioTuningKnob      ; radio tuning knob
+	dw .twentyone   ; cut grass leaves
+	dw .FlyFrom   ; flying sprite
+	dw .FlyLeaf ; flying leaves
+	dw .FlyTo  ; fly to
+	dw .twentyfive
+	dw .twentysix
+	dw .twentyseven
+	dw .twentyeight
+	dw .twentynine  ; intro suicune
+	dw .thirty      ; intro pichu wooper
+	dw .thirtyone   ; celebi
+	dw .thirtytwo   ; intro unown
+	dw .thirtythree ; intro unown F with suicune leaping up
+	dw .thirtyfour  ; intro suicune facing away from us
+
+
+.Null: ; 8d2a1 (23:52a1)
+	ret
+
+.one: ; 8d2a2 (23:52a2)
+	ld a, [wMenuCursorY]
+
+	ld hl, SPRITEANIMSTRUCT_INDEX
+	add hl, bc
+	cp [hl]
+	jr z, .two
+
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], 8 * 2
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.two: ; 8d2b9 (23:52b9)
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], 8 * 3
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	inc [hl]
+	and $f
+	ret nz
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld e, [hl]
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, d
+	and $10 ; bit 4
+	jr z, .load_zero
+	ld a, e
+	and a
+	jr z, .load_minus_two
+	cp $1
+	jr z, .load_minus_one
+.load_zero
+	xor a
+	ld [hl], a
+	ret
+
+.load_minus_one
+	ld a, -1
+	ld [hl], a
+	ret
+
+.load_minus_two
+	ld a, -2
+	ld [hl], a
+	ret
+
+.three: ; 8d2ea (23:52ea)
+	ld a, [wMenuCursorY]
+
+	ld hl, SPRITEANIMSTRUCT_INDEX
+	add hl, bc
+	cp [hl]
+	jr z, .three_offset_right
+
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], 8 * 2
+	ret
+
+.three_offset_right
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], 8 * 3
+	ret
+
+.four: ; 8d302 (23:5302)
+	call .anonymous_dw
+	jp [hl]
+; 8d306 (23:5306)
+
+; Anonymous dw (see .anonymous_dw)
+	dw .four_zero
+	dw .four_one
+; 8d30a
+
+.four_zero: ; 8d30a
+	call .IncrementSpriteAnimStruct0B
+
+	ld hl, SPRITEANIMSTRUCT_INDEX
+	add hl, bc
+	ld a, [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	and $3
+	ld [hl], a
+	inc [hl]
+	swap a
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+
+.four_one: ; 8d321
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $a4
+	jr nc, .asm_8d356
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	add $4
+
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld [hl], a
+
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	inc [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	sla a
+	sla a
+	ld d, $2
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	add $3
+	ld [hl], a
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_8d356
+	call DeinitializeSprite
+	ret
+; 8d35a
+
+.twentyfive: ; 8d35a (23:535a)
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	inc a
+	ld [hl], a
+	ld d, $2
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.five: ; 8d36c (23:536c)
+	callab Function11a3b
+	ret
+
+.twelve: ; 8d373 (23:5373)
+	callab Function120c1
+	ret
+
+.GameFreakLogo: ; 8d37a (23:537a)
+	callab GameFreakLogoJumper
+	ret
+
+.seven: ; 8d381 (23:5381)
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8d3ba
+	dec [hl]
+	dec [hl]
+	ld d, a
+	and $1f
+	jr nz, .asm_8d395
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	dec [hl]
+.asm_8d395
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+.asm_8d3ba
+	ld a, $1
+	ld [wcf64], a
+	call DeinitializeSprite
+	ret
+
+.eight: ; 8d3c3 (23:53c3)
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_8d41e
+
+	ld hl, SPRITEANIMSTRUCT_0F
+	add hl, bc
+	ld d, [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld [hl], e
+	inc hl
+	ld [hl], d
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, -$10
+	add hl, de
+	ld e, l
+	ld d, h
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], e
+	inc hl
+	ld [hl], d
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	xor $20
+	ld [hl], a
+	ret
+
+.asm_8d41e
+	call DeinitializeSprite
+	ret
+
+.SlotsGolem: ; 8d422 (23:5422)
+	callab SlotMachine_AnimateGolem
+	ret
+
+.SlotsChansey: ; 8d429 (23:5429)
+	callab Slots_AnimateChansey
+	ld hl, wcf64
+	ld a, [hl]
+	cp $2
+	ret nz
+	ld [hl], $3
+	ld a, $f
+	call _ReinitSpriteAnimFrame
+	ret
+
+.SlotsChanseyEgg: ; 8d43e (23:543e)
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	ld e, a
+	and $1
+	jr z, .move_vertical
+
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp 15 * 8
+	jr c, .move_right
+	call DeinitializeSprite
+	ld a, $4
+	ld [wcf64], a
+	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call PlaySFX
+	ret
+
+.move_right
+	inc [hl]
+.move_vertical
+	ld a, e
+	ld d, $20
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.thirteen: ; 8d46e (23:546e)
+	callab ret_e00ed
+	ret
+
+.fifteen: ; 8d475 (23:5475)
+	callab Function90d41
+	ret
+
+.fourteen: ; 8d47c (23:547c)
+	callab DummyGame_InterpretJoypad_AnimateCursor
+	ret
+
+.sixteen: ; 8d483 (23:5483)
+	call .anonymous_dw
+	jp [hl]
+; 8d487 (23:5487)
+
+; Anonymous dw (see .anonymous_dw)
+	dw .sixteen_zero
+	dw .sixteen_one
+	dw .sixteen_two
+	dw .sixteen_three
+	dw .sixteen_four
+	dw .sixteen_five
+; 8d493
+
+.sixteen_zero: ; 8d493
+	ld a, $14
+	call _ReinitSpriteAnimFrame
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld [hl], $2
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $20
+	ret
+; 8d4a5
+
+.sixteen_two: ; 8d4a5
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8d4af
+	dec [hl]
+	ret
+
+.asm_8d4af
+	call .IncrementSpriteAnimStruct0B
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $40
+
+.sixteen_three: ; 8d4b8
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $30
+	jr c, .asm_8d4cd
+	dec [hl]
+	ld d, $28
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.asm_8d4cd
+	ld de, SFX_GOT_SAFARI_BALLS
+	call PlaySFX
+	jr .sixteen_five
+; 8d4d5
+
+.sixteen_one: ; 8d4d5
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld [hl], $4
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $30
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], $24
+	ret
+; 8d4e8
+
+.sixteen_four: ; 8d4e8
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8d51c
+	ld d, a
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	call Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	and $3f
+	ret nz
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $20
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	sub $c
+	ld [hl], a
+	ld de, SFX_SWITCH_POKEMON
+	call PlaySFX
+	ret
+
+.asm_8d51c
+	xor a
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	call .IncrementSpriteAnimStruct0B
+	ret
+
+.sixteen_five: ; 8d526
+	call DeinitializeSprite
+	ret
+; 8d52a
+
+.seventeen: ; 8d52a (23:552a)
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	inc [hl]
+	cp $b0
+	jr nc, .asm_8d53f
+	and $3
+	ret nz
+	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
+	call PlaySFX
+	ret
+
+.asm_8d53f
+	call DeinitializeSprite
+	ret
+
+.eighteen: ; 8d543 (23:5543)
+	callab Function29676
+	ret
+
+.EggShell: ; 8d54a (23:554a)
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	jr nc, .finish_EggShell
+	ld d, a
+	add $8
+	ld [hl], a
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld a, [hl]
+	xor $20
+	ld [hl], a
+
+	push af
+	push de
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+
+	pop de
+	pop af
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.finish_EggShell
+	call DeinitializeSprite
+	ret
+
+.RadioTuningKnob: ; 8d578 (23:5578)
+	callab AnimateTuningKnob
+	ret
+
+.twentyone: ; 8d57f (23:557f)
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $80
+	add hl, de
+	ld e, l
+	ld d, h
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], e
+	inc hl
+	ld [hl], d
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+rept 3
+	inc [hl]
+endr
+	push af
+	push de
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.FlyFrom: ; 8d5b0 (23:55b0)
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	cp $40
+	ret c
+
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	dec [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	cp $40
+	jr nc, .skip
+	add $8
+	ld [hl], a
+.skip
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.FlyLeaf: ; 8d5e2 (23:55e2)
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp -9 * 8
+	jr nc, .delete_leaf
+	inc [hl]
+	inc [hl]
+
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+
+	ld d, $40
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.delete_leaf
+	call DeinitializeSprite
+	ret
+
+.FlyTo: ; 8d607 (23:5607)
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	cp 10 * 8 + 4
+	ret z
+
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	inc [hl]
+	inc [hl]
+
+	ld hl, SPRITEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	and a
+	jr z, .asm_8d621
+	sub $2
+	ld [hl], a
+.asm_8d621
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.twentyseven: ; 8d630 (23:5630)
+	callba Function108bc7
+	ret
+
+.twentyeight: ; 8d637 (23:5637)
+	callba Function108be0
+	ret
+
+.twentynine: ; 8d63e (23:563e)
+	ld a, [wcf65]
+	and a
+	jr nz, .asm_8d645
+	ret
+.asm_8d645
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $0
+
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	xor $ff
+	inc a
+	ld d, $20
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	ld a, $36
+	call _ReinitSpriteAnimFrame
+	ret
+
+.thirty: ; 8d666 (23:5666)
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $14
+	jr nc, .asm_8d67f
+	add $2
+	ld [hl], a
+	xor $ff
+	inc a
+	ld d, $20
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+.asm_8d67f
+	ret
+
+.thirtytwo: ; 8d680 (23:5680)
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+rept 3
+	inc [hl]
+endr
+
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	push af
+	push de
+	call .Sprites_Sine
+
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	pop de
+	pop af
+	call .Sprites_Cosine
+
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+.thirtythree: ; 8d6a2 (23:56a2)
+	ld a, [wcf64]
+	cp $40
+	ret nz
+	ld a, $3d
+	call _ReinitSpriteAnimFrame
+	ret
+
+.thirtyfour: ; 8d6ae (23:56ae)
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	ld a, [hl]
+	add $10
+	ld [hl], a
+	ret
+
+.twentysix: ; 8d6b7 (23:56b7)
+	callba Function11d0b6
+	ret
+
+.thirtyone: ; 8d6be (23:56be)
+	callba UpdateCelebiPosition
+	ret
+
+.anonymous_dw: ; 8d6c5 (23:56c5)
+	ld hl, [sp+$0]
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 8d6d8 (23:56d8)
+
+.IncrementSpriteAnimStruct0B: ; 8d6d8
+	ld hl, SPRITEANIMSTRUCT_0B
+	add hl, bc
+	inc [hl]
+	ret
+; 8d6de
+
+.Sprites_Sine: ; 8d6de (23:56de)
+	call Sprites_Sine
+	ret
+
+.Sprites_Cosine: ; 8d6e2 (23:56e2)
+	call Sprites_Cosine
+	ret
+; 8d6e6 (23:56e6)
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -1,6 +1,6 @@
-Function8cf53: ; 8cf53
-	ld hl, wc300
-	ld bc, wc3c1 - wc300
+ClearSpriteAnims: ; 8cf53
+	ld hl, wSpriteAnimDict
+	ld bc, wSpriteAnimsEnd - wSpriteAnimDict
 .loop
 	ld [hl], $0
 	inc hl
@@ -11,21 +11,21 @@
 	ret
 ; 8cf62
 
-Function8cf62: ; 8cf62
-	call Function8cf69
+PlaySpriteAnimationsAndDelayFrame: ; 8cf62
+	call PlaySpriteAnimations
 	call DelayFrame
 	ret
 ; 8cf69
 
-Function8cf69: ; 8cf69
+PlaySpriteAnimations: ; 8cf69
 	push hl
 	push de
 	push bc
 	push af
 
-	ld a, $0
-	ld [wc3b5], a
-	call Function8cf7a
+	ld a, Sprites % $100
+	ld [wCurrSpriteOAMAddr], a
+	call DoNextFrameForAllSprites
 
 	pop af
 	pop bc
@@ -34,8 +34,8 @@
 	ret
 ; 8cf7a
 
-Function8cf7a: ; 8cf7a
-	ld hl, wc314
+DoNextFrameForAllSprites: ; 8cf7a
+	ld hl, wSpriteAnimationStructs
 	ld e, 10 ; There are 10 structs here.
 
 .loop
@@ -46,8 +46,8 @@
 	ld b, h
 	push hl
 	push de
-	call Function8d24b ; Uses a massive jumptable
-	call Function8d04c
+	call DoAnimFrame ; Uses a massive dw
+	call UpdateAnimFrame
 	pop de
 	pop hl
 	jr c, .done
@@ -58,11 +58,11 @@
 	dec e
 	jr nz, .loop
 
-	ld a, [wc3b5]
+	ld a, [wCurrSpriteOAMAddr]
 	ld l, a
-	ld h, Sprites / $0100
+	ld h, Sprites / $100
 
-.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd)
+.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> SpritesEnd)
 	ld a, l
 	cp SpritesEnd % $100
 	jr nc, .done
@@ -74,7 +74,7 @@
 	ret
 ; 8cfa8
 
-Function8cfa8: ; 8cfa8 (23:4fa8)
+DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
 	ld hl, wSpriteAnimationStructs
 	ld e, 10
 
@@ -86,8 +86,8 @@
 	ld b, h
 	push hl
 	push de
-	call Function8d24b ; Uses a massive jumptable
-	call Function8d04c
+	call DoAnimFrame ; Uses a massive dw
+	call UpdateAnimFrame
 	pop de
 	pop hl
 	jr c, .done
@@ -98,13 +98,13 @@
 	dec e
 	jr nz, .loop
 
-	ld a, [wc3b5]
+	ld a, [wCurrSpriteOAMAddr]
 	ld l, a
 	ld h, (Sprites + $40) / $100
 
-.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40)
+.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40)
 	ld a, l
-	cp (Sprites + $40) % $100
+	cp (Sprites + 16 * 4) % $100
 	jr nc, .done
 	xor a
 	ld [hli], a
@@ -114,10 +114,11 @@
 	ret
 
 InitSpriteAnimStruct:: ; 8cfd6
-; Find if there's any room in the wc314 array, which is 10x16
+; Initialize animation a at pixel x=e, y=d
+; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16
 	push de
 	push af
-	ld hl, wc314
+	ld hl, wSpriteAnimationStructs
 	ld e, 10
 .loop
 	ld a, [hl]
@@ -138,9 +139,9 @@
 ; Back up the structure address to bc.
 	ld c, l
 	ld b, h
-; Value [wc3b4] is initially set to -1. Set it to
+; Value [wSpriteAnimCount] is initially set to -1. Set it to
 ; the number of objects loaded into this array.
-	ld hl, wc3b4
+	ld hl, wSpriteAnimCount
 	inc [hl]
 	ld a, [hl]
 	and a
@@ -148,11 +149,11 @@
 	inc [hl]
 
 .initialized
-; Get row a of Unknown_8d1c4, copy the pointer into de
+; Get row a of SpriteAnimSeqData, copy the pointer into de
 	pop af
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_8d1c4
+	ld hl, SpriteAnimSeqData
 rept 3
 	add hl, de
 endr
@@ -159,10 +160,10 @@
 	ld e, l
 	ld d, h
 ; Set hl to the first field (field 0) in the current structure.
-	ld hl, 0
+	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 ; Load the index.
-	ld a, [wc3b4]
+	ld a, [wSpriteAnimCount]
 	ld [hli], a
 ; Copy the table entry to the next two fields.
 	ld a, [de]
@@ -171,14 +172,14 @@
 	ld a, [de]
 	ld [hli], a
 	inc de
-; Look up the third field from the table in the wc300 array (10x2).
+; Look up the third field from the table in the wSpriteAnimDict array (10x2).
 ; Take the value and load it in 
 	ld a, [de]
-	call LookUpInwSpriteAnimDict
+	call GetSpriteAnimVTile
 	ld [hli], a
 	pop de
-; Set hl to field 4.  Kinda pointless, because we're presumably already here.
-	ld hl, $4
+; Set hl to field 4 (X coordinate).  Kinda pointless, because we're presumably already here.
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 ; Load the original value of de into here.
 	ld a, e
@@ -187,13 +188,11 @@
 	ld [hli], a
 ; load 0 into the next four fields
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 ; load -1 into the next field
 	dec a
 	ld [hli], a
@@ -203,17 +202,17 @@
 	ld [hli], a
 endr
 	ld [hl], a
-; back up the address of the first field to wc3b8
+; back up the address of the first field to wSpriteAnimAddrBackup
 	ld a, c
-	ld [wc3b8], a
+	ld [wSpriteAnimAddrBackup], a
 	ld a, b
-	ld [wc3b8 + 1], a
+	ld [wSpriteAnimAddrBackup + 1], a
 	ret
 ; 8d036
 
-Function8d036: ; 8d036
+DeinitializeSprite: ; 8d036
 ; Clear the index field of the struct in bc.
-	ld hl, 0
+	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 	ld [hl], $0
 	ret
@@ -220,9 +219,9 @@
 ; 8d03d
 
 
-Function8d03d: ; 8d03d (23:503d)
-; Clear the index field of every struct in the wc314 array.
-	ld hl, wc314
+DeinitializeAllSprites: ; 8d03d (23:503d)
+; Clear the index field of every struct in the wSpriteAnimationStructs array.
+	ld hl, wSpriteAnimationStructs
 	ld bc, $10
 	ld e, 10
 	xor a
@@ -234,91 +233,101 @@
 	ret
 
 
-Function8d04c: ; 8d04c
-	call Function8d0ec ; init WRAM
-	call Function8d132 ; read from a memory array
+UpdateAnimFrame: ; 8d04c
+	call InitSpriteAnimBuffer ; init WRAM
+	call GetSpriteAnimFrame ; read from a memory array
 	cp -3
 	jr z, .done
 	cp -4
-	jr z, .almost
-	call Function8d1a2 ; read from a pointer table
-	ld a, [wc3ba]
+	jr z, .delete
+	call GetFrameOAMPointer
+	; add byte to [wCurrAnimVTile]
+	ld a, [wCurrAnimVTile]
 	add [hl]
-	ld [wc3ba], a
+	ld [wCurrAnimVTile], a
 	inc hl
+	; load pointer into hl
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	push bc
-	ld a, [wc3b5]
+	ld a, [wCurrSpriteOAMAddr]
 	ld e, a
 	ld d, Sprites / $100
 	ld a, [hli]
-	ld c, a
+	ld c, a ; number of objects
 .loop
-	ld a, [wc3bc]
+	; first byte: y (px)
+	; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl])
+	ld a, [wCurrAnimYCoord]
 	ld b, a
-	ld a, [wc3be]
+	ld a, [wCurrAnimYOffset]
 	add b
 	ld b, a
-	ld a, [wc3bf]
+	ld a, [wGlobalAnimYOffset]
 	add b
 	ld b, a
-	call Function8d0be
+	call AddOrSubtractY
 	add b
 	ld [de], a
 	inc hl
 	inc de
-	ld a, [wc3bb]
+	; second byte: x (px)
+	; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl])
+	ld a, [wCurrAnimXCoord]
 	ld b, a
-	ld a, [wc3bd]
+	ld a, [wCurrAnimXOffset]
 	add b
 	ld b, a
-	ld a, [wc3c0]
+	ld a, [wGlobalAnimXOffset]
 	add b
 	ld b, a
-	call Function8d0ce
+	call AddOrSubtractX
 	add b
 	ld [de], a
 	inc hl
 	inc de
-	ld a, [wc3ba]
+	; third byte: vtile
+	; [de] = [wCurrAnimVTile] + [hl]
+	ld a, [wCurrAnimVTile]
 	add [hl]
 	ld [de], a
 	inc hl
 	inc de
-	call Function8d0de
+	; fourth byte: attributes
+	; [de] = GetSpriteOAMAttr([hl])
+	call GetSpriteOAMAttr
 	ld [de], a
 	inc hl
 	inc de
 	ld a, e
-	ld [wc3b5], a
+	ld [wCurrSpriteOAMAddr], a
 	cp SpritesEnd % $100
-	jr nc, .outofroom
+	jr nc, .reached_the_end
 	dec c
 	jr nz, .loop
 	pop bc
 	jr .done
 
-.almost
-	call Function8d036
-
+.delete
+	call DeinitializeSprite
 .done
 	and a
 	ret
 
-.outofroom
+.reached_the_end
 	pop bc
 	scf
 	ret
 ; 8d0be
 
-Function8d0be: ; 8d0be
+AddOrSubtractY: ; 8d0be
 	push hl
 	ld a, [hl]
-	ld hl, wc3b8
+	ld hl, wCurrSpriteAddSubFlags
 	bit 6, [hl]
 	jr z, .ok
+	; 8 - a
 	add $8
 	xor $ff
 	inc a
@@ -328,12 +337,13 @@
 	ret
 ; 8d0ce
 
-Function8d0ce: ; 8d0ce
+AddOrSubtractX: ; 8d0ce
 	push hl
 	ld a, [hl]
-	ld hl, wc3b8
+	ld hl, wCurrSpriteAddSubFlags
 	bit 5, [hl]
 	jr z, .ok
+	; 8 - a
 	add $8
 	xor $ff
 	inc a
@@ -343,8 +353,8 @@
 	ret
 ; 8d0de
 
-Function8d0de: ; 8d0de
-	ld a, [wc3b8]
+GetSpriteOAMAttr: ; 8d0de
+	ld a, [wCurrSpriteAddSubFlags]
 	ld b, a
 	ld a, [hl]
 	xor b
@@ -356,26 +366,27 @@
 	ret
 ; 8d0ec
 
-Function8d0ec: ; 8d0ec
+InitSpriteAnimBuffer: ; 8d0ec
 	xor a
-	ld [wc3b8], a
-	ld hl, $3
+	ld [wCurrSpriteAddSubFlags], a
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld a, [hli]
-	ld [wc3ba], a
+	ld [wCurrAnimVTile], a
 	ld a, [hli]
-	ld [wc3bb], a
+	ld [wCurrAnimXCoord], a
 	ld a, [hli]
-	ld [wc3bc], a
+	ld [wCurrAnimYCoord], a
 	ld a, [hli]
-	ld [wc3bd], a
+	ld [wCurrAnimXOffset], a
 	ld a, [hli]
-	ld [wc3be], a
+	ld [wCurrAnimYOffset], a
 	ret
 ; 8d109
 
-LookUpInwSpriteAnimDict: ; 8d109
+GetSpriteAnimVTile: ; 8d109
 ; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0
+; VTiles offset
 	push hl
 	push bc
 	ld hl, wSpriteAnimDict
@@ -400,102 +411,103 @@
 	ret
 ; 8d120
 
-Function8d120:: ; 8d120
-	ld hl, $1
+_ReinitSpriteAnimFrame:: ; 8d120
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], a
-	ld hl, $8
+	ld hl, SPRITEANIMSTRUCT_DURATION
 	add hl, bc
-	ld [hl], $0
-	ld hl, $a
+	ld [hl], 0
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], -1
 	ret
 ; 8d132
 
 
-Function8d132: ; 8d132
+GetSpriteAnimFrame: ; 8d132
 .loop
-	ld hl, $8
+	ld hl, SPRITEANIMSTRUCT_DURATION
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .ok
+	jr z, .next_frame ; finished the current sequence
 	dec [hl]
-	call Function8d189
+	call .GetPointer ; load pointer from SpriteAnimFrameData
 	ld a, [hli]
 	push af
-	jr .skip
+	jr .okay
 
-.ok
-	ld hl, $a
+.next_frame
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc
 	inc [hl]
-	call Function8d189
+	call .GetPointer ; load pointer from SpriteAnimFrameData
 	ld a, [hli]
-	cp $fe
-	jr z, .minus_2
-	cp $ff
-	jr z, .minus_1
+	cp -2
+	jr z, .restart
+	cp -1
+	jr z, .repeat_last
+
 	push af
 	ld a, [hl]
 	push hl
 	and $3f
-	ld hl, $9
+	ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
 	add hl, bc
 	add [hl]
-	ld hl, $8
+	ld hl, SPRITEANIMSTRUCT_DURATION
 	add hl, bc
 	ld [hl], a
 	pop hl
-
-.skip
+.okay
 	ld a, [hl]
 	and $c0
 	srl a
-	ld [wc3b8], a
+	ld [wCurrSpriteAddSubFlags], a
 	pop af
 	ret
 
-.minus_1
+.repeat_last
 	xor a
-	ld hl, $8
+	ld hl, SPRITEANIMSTRUCT_DURATION
 	add hl, bc
 	ld [hl], a
-	ld hl, $a
+
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc
-rept 2
 	dec [hl]
-endr
+	dec [hl]
 	jr .loop
 
-.minus_2
+.restart
 	xor a
-	ld hl, $8
+	ld hl, SPRITEANIMSTRUCT_DURATION
 	add hl, bc
 	ld [hl], a
+
 	dec a
-	ld hl, $a
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc
 	ld [hl], a
 	jr .loop
 ; 8d189
 
-Function8d189: ; 8d189
-	; Get the [bc+10]th entry in the data table
-	; indexed at [bc+1] in Unknown_8d6e6
-	ld hl, $1
+.GetPointer: ; 8d189
+	; Get the data for the current frame for the current animation sequence
+
+	; SpriteAnimFrameData[SpriteAnim[SPRITEANIMSTRUCT_FRAMESET_ID]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]]
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_8d6e6
-rept 2
+	ld hl, SpriteAnimFrameData
 	add hl, de
-endr
+	add hl, de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, $a
+	ld hl, SPRITEANIMSTRUCT_FRAME
 	add hl, bc
 	ld l, [hl]
 	ld h, 0
@@ -504,10 +516,11 @@
 	ret
 ; 8d1a2
 
-Function8d1a2: ; 8d1a2
+GetFrameOAMPointer: ; 8d1a2
+; Load OAM data pointer
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_8d94d
+	ld hl, SpriteAnimOAMData
 rept 3
 	add hl, de
 endr
@@ -514,14 +527,14 @@
 	ret
 ; 8d1ac
 
-Function8d1ac: ; unreferenced
+BrokenGetStdGraphics: ; 8d1ac
+; dummied out
 	push hl
 	ld l, a
 	ld h, 0
-rept 2
 	add hl, hl
-endr
-	ld de, Unknown_8e706 ; broken 2bpp pointers
+	add hl, hl
+	ld de, BrokenStdGFXPointers ; broken 2bpp pointers
 	add hl, de
 	ld c, [hl]
 	inc hl
@@ -537,2321 +550,75 @@
 	ret
 ; 8d1c4
 
-Unknown_8d1c4: ; 8d1c4
-	db $01, SPRITE_ANIM_SEQ_01, $00 ; 00
-	db $07, SPRITE_ANIM_SEQ_04, $00 ; 01
-	db $08, SPRITE_ANIM_SEQ_05, $05 ; 02
-	db $0a, SPRITE_ANIM_SEQ_06, $00 ; 03
-	db $0b, SPRITE_ANIM_SEQ_07, $06 ; 04
-	db $0c, SPRITE_ANIM_SEQ_08, $06 ; 05
-	db $0d, SPRITE_ANIM_SEQ_09, $07 ; 06
-	db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07
-	db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08
-	db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09
-	db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a
-	db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b
-	db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c
-	db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d
-	db $13, SPRITE_ANIM_SEQ_10, $00 ; 0e
-	db $15, SPRITE_ANIM_SEQ_00, $00 ; 0f
-	db $16, SPRITE_ANIM_SEQ_11, $00 ; 10
-	db $17, SPRITE_ANIM_SEQ_12, $00 ; 11
-	db $18, SPRITE_ANIM_SEQ_12, $00 ; 12
-	db $19, SPRITE_ANIM_SEQ_13, $00 ; 13
-	db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14
-	db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15
-	db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16
-	db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17
-	db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18
-	db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19
-	db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a
-	db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b
-	db $20, SPRITE_ANIM_SEQ_13, $00 ; 1c
-	db $26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
-	db $2d, SPRITE_ANIM_SEQ_00, $00 ; 1e
-	db $2e, SPRITE_ANIM_SEQ_00, $00 ; 1f
-	db $2f, SPRITE_ANIM_SEQ_00, $00 ; 20
-	db $30, SPRITE_ANIM_SEQ_00, $00 ; 21
-	db $31, SPRITE_ANIM_SEQ_00, $00 ; 22
-	db $32, SPRITE_ANIM_SEQ_1B, $00 ; 23
-	db $33, SPRITE_ANIM_SEQ_1C, $00 ; 24
-	db $34, SPRITE_ANIM_SEQ_00, $00 ; 25
-	db $35, SPRITE_ANIM_SEQ_1D, $00 ; 26
-	db $37, SPRITE_ANIM_SEQ_1E, $00 ; 27
-	db $38, SPRITE_ANIM_SEQ_1E, $00 ; 28
-	db $39, SPRITE_ANIM_SEQ_20, $00 ; 29
-	db $3f, SPRITE_ANIM_SEQ_21, $00 ; 2a
-	db $3e, SPRITE_ANIM_SEQ_22, $00 ; 2b
-	db $40, SPRITE_ANIM_SEQ_00, $00 ; 2c
+SpriteAnimSeqData: ; 8d1c4
+	; frameset sequence, tile
+	db SPRITE_ANIM_FRAMESET_01, SPRITE_ANIM_SEQ_01, $00 ; 00
+	db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00 ; 01
+	db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_05, $05 ; 02
+	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00 ; 03
+	db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04
+	db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05
+	db SPRITE_ANIM_FRAMESET_SLOT_GOLEM, SPRITE_ANIM_SEQ_SLOT_GOLEM, $07 ; 06 slots golem
+	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07 ; 07 slots chansey
+	db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07 ; 08 slots egg
+	db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_0C, $05 ; 09
+	db SPRITE_ANIM_FRAMESET_WALK_CYCLE, SPRITE_ANIM_SEQ_NULL, $00 ; 0a walk cycle
+	db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0D, $08 ; 0b
+	db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0E, $08 ; 0c
+	db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0F, $08 ; 0d
+	db SPRITE_ANIM_FRAMESET_13, SPRITE_ANIM_SEQ_10, $00 ; 0e
+	db SPRITE_ANIM_FRAMESET_15, SPRITE_ANIM_SEQ_NULL, $00 ; 0f
+	db SPRITE_ANIM_FRAMESET_16, SPRITE_ANIM_SEQ_11, $00 ; 10
+	db SPRITE_ANIM_FRAMESET_17, SPRITE_ANIM_SEQ_12, $00 ; 11
+	db SPRITE_ANIM_FRAMESET_18, SPRITE_ANIM_SEQ_12, $00 ; 12
+	db SPRITE_ANIM_FRAMESET_19, SPRITE_ANIM_SEQ_13, $00 ; 13
+	db SPRITE_ANIM_FRAMESET_1A, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
+	db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
+	db SPRITE_ANIM_FRAMESET_1E, SPRITE_ANIM_SEQ_NULL, $00 ; 17
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves
+	db SPRITE_ANIM_FRAMESET_1F, SPRITE_ANIM_SEQ_NULL, $00 ; 19
+	db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00 ; 1a
+	db SPRITE_ANIM_FRAMESET_25, SPRITE_ANIM_SEQ_NULL, $00 ; 1b headbutt
+	db SPRITE_ANIM_FRAMESET_20, SPRITE_ANIM_SEQ_13, $00 ; 1c
+	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
+	db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e
+	db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f
+	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20
+	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21
+	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22
+	db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00 ; 23
+	db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00 ; 24
+	db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00 ; 25
+	db SPRITE_ANIM_FRAMESET_35, SPRITE_ANIM_SEQ_1D, $00 ; 26
+	db SPRITE_ANIM_FRAMESET_37, SPRITE_ANIM_SEQ_1E, $00 ; 27
+	db SPRITE_ANIM_FRAMESET_38, SPRITE_ANIM_SEQ_1E, $00 ; 28
+	db SPRITE_ANIM_FRAMESET_39, SPRITE_ANIM_SEQ_20, $00 ; 29 intro unown
+	db SPRITE_ANIM_FRAMESET_3F, SPRITE_ANIM_SEQ_21, $00 ; 2a
+	db SPRITE_ANIM_FRAMESET_3E, SPRITE_ANIM_SEQ_22, $00 ; 2b
+	db SPRITE_ANIM_FRAMESET_40, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
 ; 8d24b
 
+INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame
 
-Function8d24b: ; 8d24b
-	ld hl, $2 ; field 2, see the second column in the above table
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 8d25b
+INCLUDE "data/sprite_engine.asm"
+; SpriteAnimFrameData
+; SpriteAnimOAMData
 
-
-.Jumptable: ; 8d25b (23:525b)
-	dw .zero        ; town map
-	dw .one         ; bouncing mon icons
-	dw .two
-	dw .three
-	dw .four
-	dw .five
-	dw .six         ; Game Freak logo
-	dw .seven
-	dw .eight
-	dw .nine
-	dw .ten
-	dw .eleven
-	dw .twelve      ; blinking cursor
-	dw .thirteen
-	dw .fourteen
-	dw .fifteen
-	dw .sixteen
-	dw .seventeen
-	dw .eighteen
-	dw .nineteen
-	dw .twenty
-	dw .twentyone
-	dw .twentytwo   ; flying sprite
-	dw .twentythree ; flying leaves
-	dw .twentyfour
-	dw .twentyfive
-	dw .twentysix
-	dw .twentyseven
-	dw .twentyeight
-	dw .twentynine  ; intro suicune
-	dw .thirty      ; intro pichu wooper
-	dw .thirtyone
-	dw .thirtytwo   ; intro unown
-	dw .thirtythree ; intro unown F with suicune leaping up
-	dw .thirtyfour  ; intro suicune facing away from us
-
-
-.zero: ; 8d2a1 (23:52a1)
-	ret
-
-.one: ; 8d2a2 (23:52a2)
-	ld a, [MenuSelection2]
-	ld hl, 0
-	add hl, bc
-	cp [hl]
-	jr z, .two
-	ld hl, $4
-	add hl, bc
-	ld [hl], $10
-	ld hl, $7
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.two: ; 8d2b9 (23:52b9)
-	ld hl, $4
-	add hl, bc
-	ld [hl], $18
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	ld d, a
-	inc [hl]
-	and $f
-	ret nz
-	ld hl, $d
-	add hl, bc
-	ld e, [hl]
-	ld hl, $7
-	add hl, bc
-	ld a, d
-	and $10 ; bit 4
-	jr z, .asm_8d2df
-	ld a, e
-	and a
-	jr z, .asm_8d2e6
-	cp $1
-	jr z, .asm_8d2e2
-.asm_8d2df
-	xor a
-	ld [hl], a
-	ret
-.asm_8d2e2
-	ld a, $ff
-	ld [hl], a
-	ret
-.asm_8d2e6
-	ld a, $fe
-	ld [hl], a
-	ret
-
-.three: ; 8d2ea (23:52ea)
-	ld a, [MenuSelection2]
-	ld hl, 0
-	add hl, bc
-	cp [hl]
-	jr z, .asm_8d2fb
-	ld hl, $4
-	add hl, bc
-	ld [hl], $10
-	ret
-.asm_8d2fb
-	ld hl, $4
-	add hl, bc
-	ld [hl], $18
-	ret
-
-.four: ; 8d302 (23:5302)
-	call .anonymous_jumptable
-	jp [hl]
-; 8d306 (23:5306)
-
-; Anonymous jumptable (see .anonymous_jumptable)
-	dw .four_zero
-	dw .four_one
-; 8d30a
-
-.four_zero: ; 8d30a
-	call .asm_8d6d8
-	ld hl, 0
-	add hl, bc
-	ld a, [hl]
-	ld hl, $d
-	add hl, bc
-	and $3
-	ld [hl], a
-	inc [hl]
-	swap a
-	ld hl, $c
-	add hl, bc
-	ld [hl], a
-
-.four_one: ; 8d321
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	cp $a4
-	jr nc, .asm_8d356
-	ld hl, $d
-	add hl, bc
-	add $4
-	ld hl, $4
-	add hl, bc
-	ld [hl], a
-	ld hl, $5
-	add hl, bc
-	inc [hl]
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	sla a
-	sla a
-	ld d, $2
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	add $3
-	ld [hl], a
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-
-.asm_8d356
-	call Function8d036
-	ret
-; 8d35a
-
-.twentyfive: ; 8d35a (23:535a)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	inc a
-	ld [hl], a
-	ld d, $2
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-
-.five: ; 8d36c (23:536c)
-	callab Function11a3b
-	ret
-
-.twelve: ; 8d373 (23:5373)
-	callab Function120c1
-	ret
-
-.six: ; 8d37a (23:537a)
-	callab GameFreakLogoJumper
-	ret
-
-.seven: ; 8d381 (23:5381)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_8d3ba
-rept 2
-	dec [hl]
-endr
-	ld d, a
-	and $1f
-	jr nz, .asm_8d395
-	ld hl, $d
-	add hl, bc
-	dec [hl]
-.asm_8d395
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	ld hl, $b
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-.asm_8d3ba
-	ld a, $1
-	ld [wcf64], a
-	call Function8d036
-	ret
-
-.eight: ; 8d3c3 (23:53c3)
-	ld hl, $c
-	add hl, bc
-	ld a, [hli]
-	or [hl]
-	jr z, .asm_8d41e
-	ld hl, $f
-	add hl, bc
-	ld d, [hl]
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $e
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $e
-	add hl, bc
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $c
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, -$10
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $c
-	add hl, bc
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	xor $20
-	ld [hl], a
-	ret
-.asm_8d41e
-	call Function8d036
-	ret
-
-.nine: ; 8d422 (23:5422)
-	callab Function9321d
-	ret
-
-.ten: ; 8d429 (23:5429)
-	callab Function932ac
-	ld hl, wcf64
-	ld a, [hl]
-	cp $2
-	ret nz
-	ld [hl], $3
-	ld a, $f
-	call Function8d120
-	ret
-
-.eleven: ; 8d43e (23:543e)
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	ld e, a
-	and $1
-	jr z, .asm_8d462
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	cp $78
-	jr c, .asm_8d461
-	call Function8d036
-	ld a, $4
-	ld [wcf64], a
-	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call PlaySFX
-	ret
-.asm_8d461
-	inc [hl]
-.asm_8d462
-	ld a, e
-	ld d, $20
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-
-.thirteen: ; 8d46e (23:546e)
-	callab Functione00ed
-	ret
-
-.fifteen: ; 8d475 (23:5475)
-	callab Function90d41
-	ret
-
-.fourteen: ; 8d47c (23:547c)
-	callab Functione21a1
-	ret
-
-.sixteen: ; 8d483 (23:5483)
-	call .anonymous_jumptable
-	jp [hl]
-; 8d487 (23:5487)
-
-; Anonymous jumptable (see .anonymous_jumptable)
-	dw .sixteen_zero
-	dw .sixteen_one
-	dw .sixteen_two
-	dw .sixteen_three
-	dw .sixteen_four
-	dw .sixteen_five
-; 8d493
-
-.sixteen_zero: ; 8d493
-	ld a, $14
-	call Function8d120
-	ld hl, $b
-	add hl, bc
-	ld [hl], $2
-	ld hl, $c
-	add hl, bc
-	ld [hl], $20
-	ret
-; 8d4a5
-
-.sixteen_two: ; 8d4a5
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_8d4af
-	dec [hl]
-	ret
-
-.asm_8d4af
-	call .asm_8d6d8
-	ld hl, $c
-	add hl, bc
-	ld [hl], $40
-
-.sixteen_three: ; 8d4b8
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $30
-	jr c, .asm_8d4cd
-	dec [hl]
-	ld d, $28
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-
-.asm_8d4cd
-	ld de, SFX_GOT_SAFARI_BALLS
-	call PlaySFX
-	jr .sixteen_five
-; 8d4d5
-
-.sixteen_one: ; 8d4d5
-	ld hl, $b
-	add hl, bc
-	ld [hl], $4
-	ld hl, $c
-	add hl, bc
-	ld [hl], $30
-	ld hl, $d
-	add hl, bc
-	ld [hl], $24
-	ret
-; 8d4e8
-
-.sixteen_four: ; 8d4e8
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_8d51c
-	ld d, a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	call Function8e72c
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	inc [hl]
-	ld a, [hl]
-	and $3f
-	ret nz
-	ld hl, $c
-	add hl, bc
-	ld [hl], $20
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	sub $c
-	ld [hl], a
-	ld de, SFX_SWITCH_POKEMON
-	call PlaySFX
-	ret
-
-.asm_8d51c
-	xor a
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	call .asm_8d6d8
-	ret
-
-.sixteen_five: ; 8d526
-	call Function8d036
-	ret
-; 8d52a
-
-.seventeen: ; 8d52a (23:552a)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	cp $b0
-	jr nc, .asm_8d53f
-	and $3
-	ret nz
-	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
-	call PlaySFX
-	ret
-
-.asm_8d53f
-	call Function8d036
-	ret
-
-.eighteen: ; 8d543 (23:5543)
-	callab Function29676
-	ret
-
-.nineteen: ; 8d54a (23:554a)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	jr nc, .asm_8d574
-	ld d, a
-	add $8
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld a, [hl]
-	xor $20
-	ld [hl], a
-	push af
-	push de
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_8d574
-	call Function8d036
-	ret
-
-.twenty: ; 8d578 (23:5578)
-	callab Function91640
-	ret
-
-.twentyone: ; 8d57f (23:557f)
-	ld hl, $d
-	add hl, bc
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $80
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, $d
-	add hl, bc
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-rept 3
-	inc [hl]
-endr
-	push af
-	push de
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-
-.twentytwo: ; 8d5b0 (23:55b0)
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	cp $40
-	ret c
-	ld hl, $5
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, a
-	cp $40
-	jr nc, .asm_8d5d3
-	add $8
-	ld [hl], a
-.asm_8d5d3
-	ld hl, $e
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-
-.twentythree: ; 8d5e2 (23:55e2)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	cp $b8
-	jr nc, .asm_8d603
-rept 2
-	inc [hl]
-endr
-	ld hl, $5
-	add hl, bc
-	dec [hl]
-	ld d, $40
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_8d603
-	call Function8d036
-	ret
-
-.twentyfour: ; 8d607 (23:5607)
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	cp $54
-	ret z
-	ld hl, $5
-	add hl, bc
-rept 2
-	inc [hl]
-endr
-	ld hl, $f
-	add hl, bc
-	ld a, [hl]
-	ld d, a
-	and a
-	jr z, .asm_8d621
-	sub $2
-	ld [hl], a
-.asm_8d621
-	ld hl, $e
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-
-.twentyseven: ; 8d630 (23:5630)
-	callba Function108bc7
-	ret
-
-.twentyeight: ; 8d637 (23:5637)
-	callba Function108be0
-	ret
-
-.twentynine: ; 8d63e (23:563e)
-	ld a, [wcf65]
-	and a
-	jr nz, .asm_8d645
-	ret
-.asm_8d645
-	ld hl, $7
-	add hl, bc
-	ld [hl], $0
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	xor $ff
-	inc a
-	ld d, $20
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ld a, $36
-	call Function8d120
-	ret
-
-.thirty: ; 8d666 (23:5666)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $14
-	jr nc, .asm_8d67f
-	add $2
-	ld [hl], a
-	xor $ff
-	inc a
-	ld d, $20
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-.asm_8d67f
-	ret
-
-.thirtytwo: ; 8d680 (23:5680)
-	ld hl, $b
-	add hl, bc
-	ld d, [hl]
-rept 3
-	inc [hl]
-endr
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	push af
-	push de
-	call .asm_8d6de
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	pop de
-	pop af
-	call .asm_8d6e2
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-
-.thirtythree: ; 8d6a2 (23:56a2)
-	ld a, [wcf64]
-	cp $40
-	ret nz
-	ld a, $3d
-	call Function8d120
-	ret
-
-.thirtyfour: ; 8d6ae (23:56ae)
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
+Sprites_Cosine: ; 8e72a
 	add $10
-	ld [hl], a
-	ret
-
-.twentysix: ; 8d6b7 (23:56b7)
-	callba Function11d0b6
-	ret
-
-.thirtyone: ; 8d6be (23:56be)
-	callba Function49aa2
-	ret
-
-.anonymous_jumptable: ; 8d6c5 (23:56c5)
-	ld hl, [sp+$0]
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	ld hl, $b
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, hl
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; 8d6d8 (23:56d8)
-
-.asm_8d6d8: ; 8d6d8
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ret
-; 8d6de
-
-.asm_8d6de: ; 8d6de (23:56de)
-	call Function8e72c
-	ret
-
-.asm_8d6e2: ; 8d6e2 (23:56e2)
-	call Function8e72a
-	ret
-; 8d6e6 (23:56e6)
-
-Unknown_8d6e6: ; 8d6e6
-	dw Unknown_8d76a
-	dw Unknown_8d76d
-	dw Unknown_8d772
-	dw Unknown_8d777
-	dw Unknown_8d77c
-	dw Unknown_8d781
-	dw Unknown_8d786
-	dw Unknown_8d7a6
-	dw Unknown_8d7ab
-	dw Unknown_8d7b0
-	dw Unknown_8d7b5
-	dw Unknown_8d7d4
-	dw Unknown_8d7d9
-	dw Unknown_8d7e2
-	dw Unknown_8d7eb
-	dw Unknown_8d7f4
-	dw Unknown_8d7ff
-	dw Unknown_8d78b
-	dw Unknown_8d802
-	dw Unknown_8d805
-	dw Unknown_8d808
-	dw Unknown_8d811
-	dw Unknown_8d818
-	dw Unknown_8d81d
-	dw Unknown_8d822
-	dw Unknown_8d825
-	dw Unknown_8d82c
-	dw Unknown_8d82f
-	dw Unknown_8d861
-	dw Unknown_8d864
-	dw Unknown_8d867
-	dw Unknown_8d874
-	dw Unknown_8d877
-	dw Unknown_8d87a
-	dw Unknown_8d87d
-	dw Unknown_8d880
-	dw Unknown_8d883
-	dw Unknown_8d890
-	dw Unknown_8d899
-	dw Unknown_8d89c
-	dw Unknown_8d89f
-	dw Unknown_8d8a2
-	dw Unknown_8d8a5
-	dw Unknown_8d8a8
-	dw Unknown_8d8ab
-	dw Unknown_8d794
-	dw Unknown_8d79d
-	dw Unknown_8d8ae
-	dw Unknown_8d8cd
-	dw Unknown_8d8ec
-	dw Unknown_8d8f1
-	dw Unknown_8d8f4
-	dw Unknown_8d8f7
-	dw Unknown_8d8fe
-	dw Unknown_8d907
-	dw Unknown_8d90c
-	dw Unknown_8d913
-	dw Unknown_8d916
-	dw Unknown_8d91d
-	dw Unknown_8d924
-	dw Unknown_8d92b
-	dw Unknown_8d932
-	dw Unknown_8d93d
-	dw Unknown_8d940
-	dw Unknown_8d943
-	dw Unknown_8d948
-; 8d76a
-
-Unknown_8d76a: 	dw $2000
-                db -1
-Unknown_8d76d: 	dw $0800, $0801
-                db -2
-Unknown_8d772: 	dw $083d, $083e
-                db -2
-Unknown_8d777: 	dw $083f, $0840
-                db -2
-Unknown_8d77c: 	dw $0400, $0401
-                db -2
-Unknown_8d781: 	dw $043d, $043e
-                db -2
-Unknown_8d786: 	dw $043f, $0440
-                db -2
-Unknown_8d78b: 	dw $0800, $0801, $0800, $4801
-                db -2
-Unknown_8d794: 	dw $0863, $0864, $0863, $4864
-                db -2
-Unknown_8d79d: 	dw $0865, $0866, $0865, $4866
-                db -2
-Unknown_8d7a6: 	dw $011e, $011f
-                db -2
-Unknown_8d7ab: 	dw $0120, $01fd
-                db -2
-Unknown_8d7b0: 	dw $0121, $01fd
-                db -2
-Unknown_8d7b5: 	dw $0c81, $0182, $0183, $0482, $0c81, $0c82, $0483, $2084, $0385, $0386, $0487, $0488, $0489, $0a8a, $078b
-                db -1
-Unknown_8d7d4: 	dw $0323, $8323
-                db -2
-Unknown_8d7d9: 	dw $0224, $0225, $0226, $0225
-                db -2
-Unknown_8d7e2: 	dw $0727, $0728, $8727, $4728
-                db -2
-Unknown_8d7eb: 	dw $0729, $072a, $0729, $072b
-                db -2
-Unknown_8d7f4: 	dw $0729, $072c, $072d, $072c, $0729
-                db -1
-Unknown_8d7ff: 	dw $142e
-                db -1
-Unknown_8d802: 	dw $202f
-                db -1
-Unknown_8d805: 	dw $2030
-                db -1
-Unknown_8d808: 	dw $0330, $0331, $0330, $4331
-                db -2
-Unknown_8d811: 	dw $0432, $0433, $0434
-                db -4
-Unknown_8d818: 	dw $0335, $0336
-                db -2
-Unknown_8d81d: 	dw $0737, $0738
-                db -2
-Unknown_8d822: 	dw $2039
-                db -1
-Unknown_8d825: 	dw $023b, $023a, $023b
-                db -1
-Unknown_8d82c: 	dw $203c
-                db -1
-Unknown_8d82f: 	dw $0841, $0842, $0841, $4842
-                db -2
-                dw $0843, $0844
-                db -2
-                dw $0845, $0846
-                db -2
-                dw $0847, $0848
-                db -2
-                dw $0149, $4149, $c149, $8149
-                db -2
-                dw $204a
-                db -1
-                dw $204b
-                db -1
-                dw $204c
-                db -1
-                dw $204d
-                db -1
-                dw $034e, $03fd
-                db -2
-Unknown_8d861: 	dw $20fd
-                db -1
-Unknown_8d864: 	dw $204f
-                db -1
-Unknown_8d867: 	dw $0250, $1051, $01fd, $0152, $01fd, $0153
-                db -4
-Unknown_8d874: 	dw $2054
-                db -1
-Unknown_8d877: 	dw $2055
-                db -1
-Unknown_8d87a: 	dw $6055
-                db -1
-Unknown_8d87d: 	dw $a055
-                db -1
-Unknown_8d880: 	dw $e055
-                db -1
-Unknown_8d883: 	dw $0a56, $0957, $0a58, $0a59, $0958, $0a5a
-                db -2
-Unknown_8d890: 	dw $0250, $025b, $0250, $425b
-                db -2
-Unknown_8d899: 	dw $025c
-                db -1
-Unknown_8d89c: 	dw $025d
-                db -1
-Unknown_8d89f: 	dw $025e
-                db -1
-Unknown_8d8a2: 	dw $025f
-                db -1
-Unknown_8d8a5: 	dw $0260
-                db -1
-Unknown_8d8a8: 	dw $0261
-                db -1
-Unknown_8d8ab: 	dw $0262
-                db -1
-Unknown_8d8ae: 	dw $0332, $0333, $0334, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331
-                db -1
-Unknown_8d8cd: 	dw $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0332, $0333, $0334
-                db -4
-Unknown_8d8ec: 	dw $0367, $0368
-                db -2
-Unknown_8d8f1: 	dw $036c
-                db -1
-Unknown_8d8f4: 	dw $036d
-                db -1
-Unknown_8d8f7: 	dw $0269, $026a, $026b
-                db -4
-Unknown_8d8fe: 	dw $036e, $036f, $0370, $0371
-                db -2
-Unknown_8d907: 	dw $0371, $076e
-                db -1
-Unknown_8d90c: 	dw $2072, $0773, $0774
-                db -1
-Unknown_8d913: 	dw $0375
-                db -1
-Unknown_8d916: 	dw $0376, $0377, $0778
-                db -4
-Unknown_8d91d: 	dw $4376, $4377, $4778
-                db -4
-Unknown_8d924: 	dw $8376, $8377, $8778
-                db -4
-Unknown_8d92b: 	dw $c376, $c377, $c778
-                db -4
-Unknown_8d932: 	dw $0379, $037a, $037b, $077c, $077d
-                db -1
-Unknown_8d93d: 	dw $037e
-                db -1
-Unknown_8d940: 	dw $00fd
-                db -1
-Unknown_8d943: 	dw $087f, $0880
-                db -1
-Unknown_8d948: 	dw $487f, $4880
-                db -1
-; 8d94d
-
-Unknown_8d94d: ; 8d94d
-	dbw $00, Unknown_8dd8a ; 00
-	dbw $04, Unknown_8dd8a ; 01
-	dbw $4c, Unknown_8daf1 ; 02
-	dbw $5c, Unknown_8daf1 ; 03
-	dbw $6c, Unknown_8daf6 ; 04
-	dbw $6e, Unknown_8daf6 ; 05
-	dbw $2d, Unknown_8ddf0 ; 06
-	dbw $4d, Unknown_8ddf0 ; 07
-	dbw $60, Unknown_8de09 ; 08
-	dbw $00, Unknown_8de09 ; 09
-	dbw $00, Unknown_8de09 ; 0a
-	dbw $06, Unknown_8de09 ; 0b
-	dbw $0c, Unknown_8de7e ; 0c
-	dbw $0d, Unknown_8daf1 ; 0d
-	dbw $00, Unknown_8dc53 ; 0e
-	dbw $04, Unknown_8dc53 ; 0f
-	dbw $08, Unknown_8dc53 ; 10
-	dbw $40, Unknown_8dc53 ; 11
-	dbw $44, Unknown_8dc53 ; 12
-	dbw $48, Unknown_8dc53 ; 13
-	dbw $4c, Unknown_8dc53 ; 14
-	dbw $80, Unknown_8de87 ; 15
-	dbw $85, Unknown_8de87 ; 16
-	dbw $8a, Unknown_8de87 ; 17
-	dbw $00, Unknown_8db29 ; 18
-	dbw $01, Unknown_8db5c ; 19
-	dbw $09, Unknown_8db9d ; 1a
-	dbw $10, Unknown_8dc94 ; 1b
-	dbw $29, Unknown_8dc94 ; 1c
-	dbw $42, Unknown_8dc94 ; 1d
-	dbw $f8, Unknown_8e17e ; 1e
-	dbw $fa, Unknown_8e17e ; 1f
-	dbw $00, Unknown_8deb2 ; 20
-	dbw $00, Unknown_8dec3 ; 21
-	dbw $00, Unknown_8deec ; 22
-	dbw $0f, Unknown_8db07 ; 23
-	dbw $11, Unknown_8daf1 ; 24
-	dbw $12, Unknown_8daf1 ; 25
-	dbw $13, Unknown_8daf1 ; 26
-	dbw $00, Unknown_8df29 ; 27
-	dbw $08, Unknown_8df29 ; 28
-	dbw $10, Unknown_8df42 ; 29
-	dbw $10, Unknown_8df5b ; 2a
-	dbw $10, Unknown_8df74 ; 2b
-	dbw $10, Unknown_8df8d ; 2c
-	dbw $10, Unknown_8dfa6 ; 2d
-	dbw $3a, Unknown_8daf1 ; 2e
-	dbw $00, Unknown_8dd8a ; 2f
-	dbw $00, Unknown_8db18 ; 30
-	dbw $02, Unknown_8dd9b ; 31
-	dbw $06, Unknown_8db5c ; 32
-	dbw $0a, Unknown_8db5c ; 33
-	dbw $0e, Unknown_8db5c ; 34
-	dbw $12, Unknown_8db3a ; 35
-	dbw $13, Unknown_8db3a ; 36
-	dbw $00, Unknown_8dd8a ; 37
-	dbw $04, Unknown_8dd8a ; 38
-	dbw $10, Unknown_8db5c ; 39
-	dbw $00, Unknown_8dd9b ; 3a
-	dbw $04, Unknown_8daf1 ; 3b
-	dbw $00, Unknown_8dfbf ; 3c
-	dbw $00, Unknown_8ddac ; 3d
-	dbw $00, Unknown_8ddbd ; 3e
-	dbw $00, Unknown_8ddce ; 3f
-	dbw $00, Unknown_8dddf ; 40
-	dbw $00, Unknown_8dd9b ; 41
-	dbw $04, Unknown_8dd9b ; 42
-	dbw $00, Unknown_8dc2e ; 43
-	dbw $30, Unknown_8dc2e ; 44
-	dbw $03, Unknown_8dc2e ; 45
-	dbw $33, Unknown_8dc2e ; 46
-	dbw $06, Unknown_8dc2e ; 47
-	dbw $36, Unknown_8dc2e ; 48
-	dbw $09, Unknown_8dc2e ; 49
-	dbw $39, Unknown_8dc2e ; 4a
-	dbw $0c, Unknown_8dfcc ; 4b
-	dbw $0c, Unknown_8dfe5 ; 4c
-	dbw $3c, Unknown_8daf1 ; 4d
-	dbw $3e, Unknown_8daf1 ; 4e
-	dbw $00, Unknown_8de9c ; 4f
-	dbw $00, Unknown_8dea1 ; 50
-	dbw $00, Unknown_8dff6 ; 51
-	dbw $00, Unknown_8e007 ; 52
-	dbw $00, Unknown_8e018 ; 53
-	dbw $00, Unknown_8daf1 ; 54
-	dbw $01, Unknown_8daf1 ; 55
-	dbw $00, Unknown_8e029 ; 56
-	dbw $00, Unknown_8e076 ; 57
-	dbw $00, Unknown_8e0b7 ; 58
-	dbw $00, Unknown_8e0f4 ; 59
-	dbw $00, Unknown_8e139 ; 5a
-	dbw $04, Unknown_8dea1 ; 5b
-	dbw $00, Unknown_8e183 ; 5c
-	dbw $00, Unknown_8e1b4 ; 5d
-	dbw $00, Unknown_8e1b9 ; 5e
-	dbw $00, Unknown_8e1ca ; 5f
-	dbw $00, Unknown_8e1eb ; 60
-	dbw $00, Unknown_8e1f0 ; 61
-	dbw $00, Unknown_8e1f9 ; 62
-	dbw $00, Unknown_8e202 ; 63
-	dbw $04, Unknown_8e202 ; 64
-	dbw $00, Unknown_8e213 ; 65
-	dbw $04, Unknown_8e213 ; 66
-	dbw $20, Unknown_8e224 ; 67
-	dbw $21, Unknown_8e224 ; 68
-	dbw $22, Unknown_8e24b ; 69
-	dbw $23, Unknown_8e25c ; 6a
-	dbw $27, Unknown_8e27d ; 6b
-	dbw $2a, Unknown_8e229 ; 6c
-	dbw $2a, Unknown_8e23a ; 6d
-	dbw $00, Unknown_8e2ae ; 6e
-	dbw $08, Unknown_8e33f ; 6f
-	dbw $60, Unknown_8e3b0 ; 70
-	dbw $68, Unknown_8e429 ; 71
-	dbw $00, Unknown_8e4a6 ; 72
-	dbw $05, Unknown_8e4a6 ; 73
-	dbw $0a, Unknown_8e4a6 ; 74
-	dbw $50, Unknown_8e50b ; 75
-	dbw $00, Unknown_8e54c ; 76
-	dbw $01, Unknown_8e551 ; 77
-	dbw $04, Unknown_8e55e ; 78
-	dbw $00, Unknown_8db29 ; 79
-	dbw $01, Unknown_8e57b ; 7a
-	dbw $03, Unknown_8e59c ; 7b
-	dbw $08, Unknown_8e5cd ; 7c
-	dbw $1c, Unknown_8e5cd ; 7d
-	dbw $80, Unknown_8e61e ; 7e
-	dbw $00, Unknown_8e66f ; 7f
-	dbw $04, Unknown_8e66f ; 80
-	dbw $d0, Unknown_8e680 ; 81
-	dbw $d3, Unknown_8e680 ; 82
-	dbw $d6, Unknown_8e680 ; 83
-	dbw $6c, Unknown_8e6a5 ; 84
-	dbw $68, Unknown_8e6a5 ; 85
-	dbw $64, Unknown_8e6a5 ; 86
-	dbw $60, Unknown_8e6a5 ; 87
-	dbw $0c, Unknown_8e6a5 ; 88
-	dbw $08, Unknown_8e6a5 ; 89
-	dbw $04, Unknown_8e6a5 ; 8a
-	dbw $00, Unknown_8e6a5 ; 8b
-; 8daf1
-
-
-Unknown_8daf1: ; 8daf1
-	db 1
-	db $fc, $fc, $00, $00
-; 8daf6
-
-Unknown_8daf6: ; 8daf6
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $10, $00
-	db $00, $00, $11, $00
-; 8db07
-
-Unknown_8db07: ; 8db07
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $00, $20
-	db $00, $f8, $01, $00
-	db $00, $00, $01, $20
-; 8db18
-
-Unknown_8db18: ; 8db18
-	db 4
-	db $f8, $f8, $00, $80
-	db $f8, $00, $00, $a0
-	db $00, $f8, $01, $80
-	db $00, $00, $01, $a0
-; 8db29
-
-Unknown_8db29: ; 8db29
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $00, $20
-	db $00, $f8, $00, $40
-	db $00, $00, $00, $60
-; 8db3a
-
-Unknown_8db3a: ; 8db3a
-	db 4
-	db $f8, $f8, $00, $07
-	db $f8, $00, $00, $27
-	db $00, $f8, $00, $47
-	db $00, $00, $00, $67
-; 8db4b
-
-; 8db4b
-	db 4
-	db $f8, $f8, $00, $80
-	db $f8, $00, $00, $a0
-	db $00, $f8, $00, $c0
-	db $00, $00, $00, $e0
-; 8db5c
-
-Unknown_8db5c: ; 8db5c
-	db 16
-	db $f0, $f0, $00, $00
-	db $f0, $f8, $01, $00
-	db $f8, $f0, $02, $00
-	db $f8, $f8, $03, $00
-	db $f0, $00, $01, $20
-	db $f0, $08, $00, $20
-	db $f8, $00, $03, $20
-	db $f8, $08, $02, $20
-	db $00, $f0, $02, $40
-	db $00, $f8, $03, $40
-	db $08, $f0, $00, $40
-	db $08, $f8, $01, $40
-	db $00, $00, $03, $60
-	db $00, $08, $02, $60
-	db $08, $00, $01, $60
-	db $08, $08, $00, $60
-; 8db9d
-
-Unknown_8db9d: ; 8db9d
-	db 36
-	db $e8, $e8, $00, $00
-	db $e8, $f0, $01, $00
-	db $e8, $f8, $02, $00
-	db $f0, $e8, $03, $00
-	db $f0, $f0, $04, $00
-	db $f0, $f8, $05, $00
-	db $f8, $e8, $06, $00
-	db $f8, $f0, $05, $00
-	db $f8, $f8, $05, $00
-	db $e8, $00, $02, $20
-	db $e8, $08, $01, $20
-	db $e8, $10, $00, $20
-	db $f0, $00, $05, $20
-	db $f0, $08, $04, $20
-	db $f0, $10, $03, $20
-	db $f8, $00, $05, $20
-	db $f8, $08, $05, $20
-	db $f8, $10, $06, $20
-	db $00, $e8, $06, $40
-	db $00, $f0, $05, $40
-	db $00, $f8, $05, $40
-	db $08, $e8, $03, $40
-	db $08, $f0, $04, $40
-	db $08, $f8, $05, $40
-	db $10, $e8, $00, $40
-	db $10, $f0, $01, $40
-	db $10, $f8, $02, $40
-	db $00, $00, $05, $60
-	db $00, $08, $05, $60
-	db $00, $10, $06, $60
-	db $08, $00, $05, $60
-	db $08, $08, $04, $60
-	db $08, $10, $03, $60
-	db $10, $00, $02, $60
-	db $10, $08, $01, $60
-	db $10, $10, $00, $60
-; 8dc2e
-
-Unknown_8dc2e: ; 8dc2e
-	db 9
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $02, $00
-	db $fc, $f4, $10, $00
-	db $fc, $fc, $11, $00
-	db $fc, $04, $12, $00
-	db $04, $f4, $20, $00
-	db $04, $fc, $21, $00
-	db $04, $04, $22, $00
-; 8dc53
-
-Unknown_8dc53: ; 8dc53
-	db 16
-	db $f0, $f0, $00, $00
-	db $f0, $f8, $01, $00
-	db $f0, $00, $02, $00
-	db $f0, $08, $03, $00
-	db $f8, $f0, $10, $00
-	db $f8, $f8, $11, $00
-	db $f8, $00, $12, $00
-	db $f8, $08, $13, $00
-	db $00, $f0, $20, $00
-	db $00, $f8, $21, $00
-	db $00, $00, $22, $00
-	db $00, $08, $23, $00
-	db $08, $f0, $30, $00
-	db $08, $f8, $31, $00
-	db $08, $00, $32, $00
-	db $08, $08, $33, $00
-; 8dc94
-
-Unknown_8dc94: ; 8dc94
-	db 25
-	db $ec, $ec, $00, $00
-	db $f4, $ec, $01, $00
-	db $fc, $ec, $02, $00
-	db $04, $ec, $03, $00
-	db $0c, $ec, $04, $00
-	db $ec, $f4, $05, $00
-	db $f4, $f4, $06, $00
-	db $fc, $f4, $07, $00
-	db $04, $f4, $08, $00
-	db $0c, $f4, $09, $00
-	db $ec, $fc, $0a, $00
-	db $f4, $fc, $0b, $00
-	db $fc, $fc, $0c, $00
-	db $04, $fc, $0d, $00
-	db $0c, $fc, $0e, $00
-	db $ec, $04, $0f, $00
-	db $f4, $04, $10, $00
-	db $fc, $04, $11, $00
-	db $04, $04, $12, $00
-	db $0c, $04, $13, $00
-	db $ec, $0c, $14, $00
-	db $f4, $0c, $15, $00
-	db $fc, $0c, $16, $00
-	db $04, $0c, $17, $00
-	db $0c, $0c, $18, $00
-; 8dcf9
-
-; 8dcf9
-	db 36
-	db $e8, $e8, $00, $00
-	db $e8, $f0, $01, $00
-	db $e8, $f8, $02, $00
-	db $e8, $00, $03, $00
-	db $e8, $08, $04, $00
-	db $e8, $10, $05, $00
-	db $f0, $e8, $06, $00
-	db $f0, $f0, $07, $00
-	db $f0, $f8, $08, $00
-	db $f0, $00, $09, $00
-	db $f0, $08, $0a, $00
-	db $f0, $10, $0b, $00
-	db $f8, $e8, $0c, $00
-	db $f8, $f0, $0d, $00
-	db $f8, $f8, $0e, $00
-	db $f8, $00, $0f, $00
-	db $f8, $08, $10, $00
-	db $f8, $10, $11, $00
-	db $00, $e8, $12, $00
-	db $00, $f0, $13, $00
-	db $00, $f8, $14, $00
-	db $00, $00, $15, $00
-	db $00, $08, $16, $00
-	db $00, $10, $17, $00
-	db $08, $e8, $18, $00
-	db $08, $f0, $19, $00
-	db $08, $f8, $1a, $00
-	db $08, $00, $1b, $00
-	db $08, $08, $1c, $00
-	db $08, $10, $1d, $00
-	db $10, $e8, $1e, $00
-	db $10, $f0, $1f, $00
-	db $10, $f8, $20, $00
-	db $10, $00, $21, $00
-	db $10, $08, $22, $00
-	db $10, $10, $23, $00
-; 8dd8a
-
-Unknown_8dd8a: ; 8dd8a
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $02, $00
-	db $00, $00, $03, $00
-; 8dd9b
-
-Unknown_8dd9b: ; 8dd9b
-	db 4
-	db $f8, $f8, $00, $80
-	db $f8, $00, $01, $80
-	db $00, $f8, $02, $80
-	db $00, $00, $03, $80
-; 8ddac
-
-Unknown_8ddac: ; 8ddac
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $08, $00
-	db $00, $00, $03, $00
-; 8ddbd
-
-Unknown_8ddbd: ; 8ddbd
-	db 4
-	db $f8, $f8, $04, $00
-	db $f8, $00, $05, $00
-	db $00, $f8, $08, $00
-	db $00, $00, $07, $00
-; 8ddce
-
-Unknown_8ddce: ; 8ddce
-	db 4
-	db $f8, $f8, $00, $00
-	db $f8, $00, $01, $00
-	db $00, $f8, $09, $00
-	db $00, $00, $03, $00
-; 8dddf
-
-Unknown_8dddf: ; 8dddf
-	db 4
-	db $f8, $f8, $04, $00
-	db $f8, $00, $05, $00
-	db $00, $f8, $09, $00
-	db $00, $00, $07, $00
-; 8ddf0
-
-Unknown_8ddf0: ; 8ddf0
-	db 6
-	db $f8, $f4, $00, $01
-	db $f8, $fc, $01, $01
-	db $f8, $04, $02, $01
-	db $00, $f4, $10, $01
-	db $00, $fc, $11, $01
-	db $00, $04, $12, $01
-; 8de09
-
-Unknown_8de09: ; 8de09
-	db 29
-	db $e8, $e8, $00, $00
-	db $e8, $f0, $01, $00
-	db $e8, $f8, $02, $00
-	db $e8, $00, $03, $00
-	db $f0, $e8, $10, $00
-	db $f0, $f0, $11, $00
-	db $f0, $f8, $12, $00
-	db $f0, $00, $13, $00
-	db $f8, $e8, $20, $00
-	db $f8, $f0, $21, $00
-	db $f8, $f8, $22, $00
-	db $f8, $00, $23, $00
-	db $f8, $08, $24, $00
-	db $00, $e8, $30, $80
-	db $00, $f0, $31, $80
-	db $00, $f8, $32, $80
-	db $00, $00, $33, $80
-	db $00, $08, $34, $80
-	db $08, $e8, $40, $80
-	db $08, $f0, $41, $80
-	db $08, $f8, $42, $80
-	db $08, $00, $43, $80
-	db $08, $08, $44, $80
-	db $08, $10, $45, $80
-	db $10, $f0, $51, $80
-	db $10, $f8, $52, $80
-	db $10, $00, $53, $80
-	db $10, $08, $54, $80
-	db $10, $10, $55, $80
-; 8de7e
-
-Unknown_8de7e: ; 8de7e
-	db 2
-	db $f8, $fc, $00, $00
-	db $00, $fc, $10, $00
-; 8de87
-
-Unknown_8de87: ; 8de87
-	db 5
-	db $f0, $18, $00, $00
-	db $f0, $20, $01, $00
-	db $f8, $10, $02, $00
-	db $f8, $18, $03, $00
-	db $00, $10, $04, $00
-; 8de9c
-
-Unknown_8de9c: ; 8de9c
-	db 1
-	db $fc, $fc, $00, $06
-; 8dea1
-
-Unknown_8dea1: ; 8dea1
-	db 4
-	db $f8, $f8, $00, $06
-	db $f8, $00, $01, $06
-	db $00, $f8, $02, $06
-	db $00, $00, $03, $06
-; 8deb2
-
-Unknown_8deb2: ; 8deb2
-	db 4
-	db $ff, $ff, $00, $00
-	db $ff, $00, $00, $20
-	db $00, $ff, $00, $40
-	db $00, $00, $00, $60
-; 8dec3
-
-Unknown_8dec3: ; 8dec3
-	db 10
-	db $ff, $00, $00, $00
-	db $ff, $08, $01, $00
-	db $ff, $10, $01, $00
-	db $ff, $18, $01, $00
-	db $ff, $20, $00, $20
-	db $00, $00, $00, $40
-	db $00, $08, $01, $40
-	db $00, $10, $01, $40
-	db $00, $18, $01, $40
-	db $00, $20, $00, $60
-; 8deec
-
-Unknown_8deec: ; 8deec
-	db 15
-	db $ec, $f4, $00, $11
-	db $ec, $fc, $01, $11
-	db $ec, $04, $02, $11
-	db $f4, $f4, $03, $11
-	db $f4, $fc, $04, $11
-	db $f4, $04, $05, $11
-	db $fc, $f4, $06, $11
-	db $fc, $fc, $07, $11
-	db $fc, $04, $08, $11
-	db $04, $f4, $09, $11
-	db $04, $fc, $0a, $11
-	db $04, $04, $0b, $11
-	db $0c, $f4, $0c, $11
-	db $0c, $fc, $0d, $11
-	db $0c, $04, $0e, $11
-; 8df29
-
-Unknown_8df29: ; 8df29
-	db 6
-	db $f4, $f4, $00, $15
-	db $f4, $fc, $02, $15
-	db $f4, $04, $00, $35
-	db $04, $f4, $04, $15
-	db $04, $fc, $06, $15
-	db $04, $04, $04, $35
-; 8df42
-
-Unknown_8df42: ; 8df42
-	db 6
-	db $f4, $f4, $00, $16
-	db $f4, $fc, $02, $16
-	db $f4, $04, $04, $16
-	db $04, $f4, $06, $16
-	db $04, $fc, $08, $16
-	db $04, $04, $0a, $16
-; 8df5b
-
-Unknown_8df5b: ; 8df5b
-	db 6
-	db $f4, $f4, $00, $16
-	db $f4, $fc, $02, $16
-	db $f4, $04, $04, $16
-	db $04, $f4, $0c, $16
-	db $04, $fc, $0e, $16
-	db $04, $04, $10, $16
-; 8df74
-
-Unknown_8df74: ; 8df74
-	db 6
-	db $f4, $f4, $00, $16
-	db $f4, $fc, $02, $16
-	db $f4, $04, $04, $16
-	db $04, $f4, $12, $16
-	db $04, $fc, $14, $16
-	db $04, $04, $16, $16
-; 8df8d
-
-Unknown_8df8d: ; 8df8d
-	db 6
-	db $f4, $f4, $00, $16
-	db $f4, $fc, $02, $16
-	db $f4, $04, $04, $16
-	db $04, $f4, $18, $16
-	db $04, $fc, $1a, $16
-	db $04, $04, $1c, $16
-; 8dfa6
-
-Unknown_8dfa6: ; 8dfa6
-	db 6
-	db $f4, $f4, $1e, $16
-	db $f4, $fc, $20, $16
-	db $f4, $04, $22, $16
-	db $04, $f4, $24, $16
-	db $04, $fc, $26, $16
-	db $04, $04, $28, $16
-; 8dfbf
-
-Unknown_8dfbf: ; 8dfbf
-	db 3
-	db $f4, $fc, $00, $10
-	db $fc, $fc, $00, $10
-	db $04, $fc, $00, $10
-; 8dfcc
-
-Unknown_8dfcc: ; 8dfcc
-	db 6
-	db $00, $00, $00, $00
-	db $00, $08, $01, $00
-	db $00, $10, $01, $00
-	db $00, $18, $01, $00
-	db $00, $20, $02, $00
-	db $00, $28, $03, $00
-; 8dfe5
-
-Unknown_8dfe5: ; 8dfe5
-	db 4
-	db $00, $00, $00, $00
-	db $00, $08, $01, $00
-	db $00, $10, $02, $00
-	db $00, $18, $03, $00
-; 8dff6
-
-Unknown_8dff6: ; 8dff6
-	db 4
-	db $f8, $f6, $00, $06
-	db $f8, $02, $01, $06
-	db $00, $f6, $02, $06
-	db $00, $02, $03, $06
-; 8e007
-
-Unknown_8e007: ; 8e007
-	db 4
-	db $f8, $f4, $00, $06
-	db $f8, $04, $01, $06
-	db $00, $f4, $02, $06
-	db $00, $04, $03, $06
-; 8e018
-
-Unknown_8e018: ; 8e018
-	db 4
-	db $f8, $f0, $00, $06
-	db $f8, $08, $01, $06
-	db $00, $f0, $02, $06
-	db $00, $08, $03, $06
-; 8e029
-
-Unknown_8e029: ; 8e029
-	db 19
-	db $f8, $e0, $00, $00
-	db $f0, $e8, $02, $00
-	db $00, $e8, $04, $00
-	db $e8, $f0, $06, $00
-	db $f8, $f0, $08, $00
-	db $08, $f0, $0a, $00
-	db $e8, $f8, $0c, $00
-	db $f8, $f8, $0e, $00
-	db $08, $f8, $10, $00
-	db $e8, $00, $12, $00
-	db $f8, $00, $14, $00
-	db $08, $00, $16, $00
-	db $e8, $08, $18, $00
-	db $f8, $08, $1a, $00
-	db $08, $08, $1c, $00
-	db $f8, $10, $1e, $00
-	db $08, $10, $20, $00
-	db $f0, $18, $22, $00
-	db $00, $18, $24, $00
-; 8e076
-
-Unknown_8e076: ; 8e076
-	db 16
-	db $f8, $e0, $00, $00
-	db $f0, $e8, $02, $00
-	db $00, $e8, $04, $00
-	db $f8, $f0, $26, $00
-	db $08, $f0, $0a, $00
-	db $e8, $f8, $28, $00
-	db $f8, $f8, $2a, $00
-	db $08, $f8, $10, $00
-	db $f8, $00, $2c, $00
-	db $08, $00, $16, $00
-	db $f8, $08, $30, $00
-	db $08, $08, $1c, $00
-	db $f8, $10, $1e, $00
-	db $08, $10, $20, $00
-	db $f0, $18, $22, $00
-	db $00, $18, $24, $00
-; 8e0b7
-
-Unknown_8e0b7: ; 8e0b7
-	db 15
-	db $f8, $e0, $00, $00
-	db $f0, $e8, $02, $00
-	db $00, $e8, $32, $00
-	db $f8, $f0, $34, $00
-	db $08, $f0, $36, $00
-	db $f8, $f8, $38, $00
-	db $08, $f8, $3a, $00
-	db $f8, $00, $3c, $00
-	db $08, $00, $3e, $00
-	db $f8, $08, $30, $00
-	db $08, $08, $1c, $00
-	db $f8, $10, $1e, $00
-	db $08, $10, $20, $00
-	db $f0, $18, $22, $00
-	db $00, $18, $24, $00
-; 8e0f4
-
-Unknown_8e0f4: ; 8e0f4
-	db 17
-	db $f8, $e0, $00, $00
-	db $f0, $e8, $02, $00
-	db $00, $e8, $04, $00
-	db $f8, $f0, $40, $00
-	db $08, $f0, $42, $00
-	db $18, $f0, $44, $00
-	db $f8, $f8, $46, $00
-	db $08, $f8, $48, $00
-	db $18, $f8, $4a, $00
-	db $f8, $00, $4c, $00
-	db $08, $00, $4e, $00
-	db $f8, $08, $30, $00
-	db $08, $08, $1c, $00
-	db $f8, $10, $1e, $00
-	db $08, $10, $20, $00
-	db $f0, $18, $22, $00
-	db $00, $18, $24, $00
-; 8e139
-
-Unknown_8e139: ; 8e139
-	db 17
-	db $f8, $e0, $00, $00
-	db $f0, $e8, $02, $00
-	db $00, $e8, $04, $00
-	db $f8, $f0, $50, $00
-	db $08, $f0, $0a, $00
-	db $e8, $f8, $52, $00
-	db $f8, $f8, $54, $00
-	db $08, $f8, $10, $00
-	db $e8, $00, $56, $00
-	db $f8, $00, $2e, $00
-	db $08, $00, $16, $00
-	db $f8, $08, $30, $00
-	db $08, $08, $1c, $00
-	db $f8, $10, $1e, $00
-	db $08, $10, $20, $00
-	db $f0, $18, $22, $00
-	db $00, $18, $24, $00
-; 8e17e
-
-Unknown_8e17e: ; 8e17e
-	db 1
-	db $fc, $fc, $00, $11
-; 8e183
-
-Unknown_8e183: ; 8e183
-	db 12
-	db $00, $00, $30, $00
-	db $00, $08, $31, $00
-	db $00, $10, $31, $00
-	db $00, $18, $31, $00
-	db $00, $20, $31, $00
-	db $00, $28, $32, $00
-	db $08, $00, $33, $00
-	db $08, $08, $34, $00
-	db $08, $10, $34, $00
-	db $08, $18, $34, $00
-	db $08, $20, $34, $00
-	db $08, $28, $35, $00
-; 8e1b4
-
-Unknown_8e1b4: ; 8e1b4
-	db 1
-	db $00, $00, $ed, $00
-; 8e1b9
-
-Unknown_8e1b9: ; 8e1b9
-	db 4
-	db $ff, $ff, $30, $00
-	db $ff, $01, $32, $00
-	db $01, $ff, $33, $00
-	db $01, $01, $35, $00
-; 8e1ca
-
-Unknown_8e1ca: ; 8e1ca
-	db 8
-	db $ff, $ff, $30, $00
-	db $ff, $04, $31, $00
-	db $ff, $0c, $31, $00
-	db $ff, $11, $32, $00
-	db $01, $ff, $33, $00
-	db $01, $04, $34, $00
-	db $01, $0c, $34, $00
-	db $01, $11, $35, $00
-; 8e1eb
-
-Unknown_8e1eb: ; 8e1eb
-	db 1
-	db $00, $00, $34, $00
-; 8e1f0
-
-Unknown_8e1f0: ; 8e1f0
-	db 2
-	db $00, $00, $30, $00
-	db $08, $00, $33, $00
-; 8e1f9
-
-Unknown_8e1f9: ; 8e1f9
-	db 2
-	db $00, $00, $32, $00
-	db $08, $00, $35, $00
-; 8e202
-
-Unknown_8e202: ; 8e202
-	db 4
-	db $f8, $f8, $00, $01
-	db $f8, $00, $01, $01
-	db $00, $f8, $02, $01
-	db $00, $00, $03, $01
-; 8e213
-
-Unknown_8e213: ; 8e213
-	db 4
-	db $f8, $f8, $00, $81
-	db $f8, $00, $01, $81
-	db $00, $f8, $02, $81
-	db $00, $00, $03, $81
-; 8e224
-
-Unknown_8e224: ; 8e224
-	db 1
-	db $fc, $fc, $00, $02
-; 8e229
-
-Unknown_8e229: ; 8e229
-	db 4
-	db $f0, $fc, $00, $03
-	db $f8, $fc, $01, $03
-	db $00, $fc, $02, $03
-	db $08, $fc, $03, $03
-; 8e23a
-
-Unknown_8e23a: ; 8e23a
-	db 4
-	db $f0, $fc, $03, $44
-	db $f8, $fc, $02, $44
-	db $00, $fc, $01, $44
-	db $08, $fc, $00, $44
-; 8e24b
-
-Unknown_8e24b: ; 8e24b
-	db 4
-	db $f8, $f8, $00, $01
-	db $f8, $00, $00, $21
-	db $00, $f8, $00, $41
-	db $00, $00, $00, $61
-; 8e25c
-
-Unknown_8e25c: ; 8e25c
-	db 8
-	db $f4, $f4, $00, $01
-	db $f4, $fc, $01, $01
-	db $f4, $04, $00, $21
-	db $fc, $f4, $02, $01
-	db $fc, $04, $02, $21
-	db $04, $f4, $00, $41
-	db $04, $fc, $01, $41
-	db $04, $04, $00, $61
-; 8e27d
-
-Unknown_8e27d: ; 8e27d
-	db 12
-	db $f0, $f0, $00, $01
-	db $f0, $f8, $01, $01
-	db $f8, $f0, $02, $01
-	db $f0, $00, $01, $21
-	db $f0, $08, $00, $21
-	db $f8, $08, $02, $21
-	db $00, $f0, $02, $41
-	db $08, $f0, $00, $41
-	db $08, $f8, $01, $41
-	db $00, $08, $02, $61
-	db $08, $00, $01, $61
-	db $08, $08, $00, $61
-; 8e2ae
-
-Unknown_8e2ae: ; 8e2ae
-	db 36
-	db $e8, $08, $05, $00
-	db $e8, $10, $06, $00
-	db $e8, $18, $07, $00
-	db $f0, $e8, $11, $00
-	db $f0, $f0, $12, $00
-	db $f0, $f8, $13, $00
-	db $f0, $00, $14, $00
-	db $f0, $08, $15, $00
-	db $f0, $10, $16, $00
-	db $f0, $18, $17, $00
-	db $f8, $e0, $20, $00
-	db $f8, $e8, $21, $00
-	db $f8, $f0, $22, $00
-	db $f8, $f8, $23, $00
-	db $f8, $00, $24, $00
-	db $f8, $08, $25, $00
-	db $f8, $10, $26, $00
-	db $f8, $18, $27, $00
-	db $00, $e0, $30, $00
-	db $00, $e8, $31, $00
-	db $00, $f0, $32, $00
-	db $00, $f8, $33, $00
-	db $00, $00, $34, $00
-	db $00, $08, $35, $00
-	db $00, $10, $36, $00
-	db $08, $e0, $40, $00
-	db $08, $e8, $41, $00
-	db $08, $f0, $42, $00
-	db $08, $f8, $43, $00
-	db $08, $00, $44, $00
-	db $08, $08, $45, $00
-	db $08, $10, $46, $00
-	db $08, $18, $47, $00
-	db $10, $e0, $50, $00
-	db $10, $e8, $51, $00
-	db $10, $18, $57, $00
-; 8e33f
-
-Unknown_8e33f: ; 8e33f
-	db 28
-	db $e8, $00, $04, $00
-	db $e8, $08, $05, $00
-	db $e8, $10, $06, $00
-	db $f0, $e8, $11, $00
-	db $f0, $f0, $12, $00
-	db $f0, $f8, $13, $00
-	db $f0, $00, $14, $00
-	db $f0, $08, $15, $00
-	db $f0, $10, $16, $00
-	db $f8, $e8, $21, $00
-	db $f8, $f0, $22, $00
-	db $f8, $f8, $23, $00
-	db $f8, $00, $24, $00
-	db $f8, $08, $25, $00
-	db $f8, $10, $26, $00
-	db $00, $e0, $30, $00
-	db $00, $e8, $31, $00
-	db $00, $f0, $32, $00
-	db $00, $f8, $33, $00
-	db $00, $00, $34, $00
-	db $00, $08, $35, $00
-	db $08, $f0, $42, $00
-	db $08, $f8, $43, $00
-	db $08, $00, $44, $00
-	db $08, $08, $45, $00
-	db $10, $f8, $53, $00
-	db $10, $00, $54, $00
-	db $10, $08, $55, $00
-; 8e3b0
-
-Unknown_8e3b0: ; 8e3b0
-	db 30
-	db $e8, $00, $04, $00
-	db $e8, $08, $05, $00
-	db $f0, $e8, $11, $00
-	db $f0, $f0, $12, $00
-	db $f0, $f8, $13, $00
-	db $f0, $00, $14, $00
-	db $f0, $08, $15, $00
-	db $f0, $10, $16, $00
-	db $f0, $18, $17, $00
-	db $f8, $e0, $20, $00
-	db $f8, $e8, $21, $00
-	db $f8, $f0, $22, $00
-	db $f8, $f8, $23, $00
-	db $f8, $00, $24, $00
-	db $f8, $08, $25, $00
-	db $f8, $10, $26, $00
-	db $00, $e0, $30, $00
-	db $00, $e8, $31, $00
-	db $00, $f0, $32, $00
-	db $00, $f8, $33, $00
-	db $00, $00, $34, $00
-	db $00, $08, $35, $00
-	db $08, $f0, $42, $00
-	db $08, $f8, $43, $00
-	db $08, $00, $44, $00
-	db $08, $08, $45, $00
-	db $10, $f0, $52, $00
-	db $10, $f8, $53, $00
-	db $10, $00, $54, $00
-	db $10, $08, $55, $00
-; 8e429
-
-Unknown_8e429: ; 8e429
-	db 31
-	db $f0, $e8, $11, $00
-	db $f0, $f0, $12, $00
-	db $f0, $f8, $13, $00
-	db $f0, $00, $14, $00
-	db $f0, $08, $15, $00
-	db $f0, $10, $16, $00
-	db $f0, $18, $17, $00
-	db $f8, $e0, $20, $00
-	db $f8, $e8, $21, $00
-	db $f8, $f0, $22, $00
-	db $f8, $f8, $23, $00
-	db $f8, $00, $24, $00
-	db $f8, $08, $25, $00
-	db $f8, $10, $26, $00
-	db $f8, $18, $27, $00
-	db $00, $e0, $30, $00
-	db $00, $e8, $31, $00
-	db $00, $f0, $32, $00
-	db $00, $f8, $33, $00
-	db $00, $00, $34, $00
-	db $00, $08, $35, $00
-	db $00, $10, $36, $00
-	db $08, $e8, $41, $00
-	db $08, $f0, $42, $00
-	db $08, $f8, $43, $00
-	db $08, $00, $44, $00
-	db $08, $08, $45, $00
-	db $10, $e8, $51, $00
-	db $10, $f0, $52, $00
-	db $10, $00, $54, $00
-	db $10, $08, $55, $00
-; 8e4a6
-
-Unknown_8e4a6: ; 8e4a6
-	db 25
-	db $ec, $ec, $00, $09
-	db $ec, $f4, $01, $09
-	db $ec, $fc, $02, $09
-	db $ec, $04, $03, $09
-	db $ec, $0c, $04, $09
-	db $f4, $ec, $10, $09
-	db $f4, $f4, $11, $09
-	db $f4, $fc, $12, $09
-	db $f4, $04, $13, $09
-	db $f4, $0c, $14, $09
-	db $fc, $ec, $20, $09
-	db $fc, $f4, $21, $09
-	db $fc, $fc, $22, $09
-	db $fc, $04, $23, $09
-	db $fc, $0c, $24, $09
-	db $04, $ec, $30, $09
-	db $04, $f4, $31, $09
-	db $04, $fc, $32, $09
-	db $04, $04, $33, $09
-	db $04, $0c, $34, $09
-	db $0c, $ec, $40, $09
-	db $0c, $f4, $41, $09
-	db $0c, $fc, $42, $09
-	db $0c, $04, $43, $09
-	db $0c, $0c, $44, $09
-; 8e50b
-
-Unknown_8e50b: ; 8e50b
-	db 16
-	db $f0, $ec, $00, $0a
-	db $f0, $f4, $01, $0a
-	db $f0, $fc, $02, $0a
-	db $f0, $04, $03, $0a
-	db $f8, $ec, $04, $0a
-	db $f8, $f4, $05, $0a
-	db $f8, $fc, $06, $0a
-	db $f8, $04, $07, $0a
-	db $00, $ec, $08, $0a
-	db $00, $f4, $09, $0a
-	db $00, $fc, $0a, $0a
-	db $00, $04, $0b, $0a
-	db $08, $ec, $0c, $0a
-	db $08, $f4, $0d, $0a
-	db $08, $fc, $0e, $0a
-	db $08, $04, $0f, $0a
-; 8e54c
-
-Unknown_8e54c: ; 8e54c
-	db 1
-	db $fc, $fc, $00, $00
-; 8e551
-
-Unknown_8e551: ; 8e551
-	db 3
-	db $00, $f8, $00, $00
-	db $f8, $f8, $01, $00
-	db $f8, $00, $02, $00
-; 8e55e
-
-Unknown_8e55e: ; 8e55e
-	db 7
-	db $08, $f0, $00, $00
-	db $00, $f0, $01, $00
-	db $f8, $f0, $02, $00
-	db $f8, $f8, $03, $00
-	db $f0, $f8, $04, $00
-	db $f0, $00, $05, $00
-	db $f0, $08, $06, $00
-; 8e57b
-
-Unknown_8e57b: ; 8e57b
-	db 8
-	db $f8, $f0, $00, $00
-	db $f8, $f8, $01, $00
-	db $f8, $00, $01, $20
-	db $f8, $08, $00, $20
-	db $00, $f0, $00, $40
-	db $00, $f8, $01, $40
-	db $00, $00, $01, $60
-	db $00, $08, $00, $60
-; 8e59c
-
-Unknown_8e59c: ; 8e59c
-	db 12
-	db $e8, $f8, $00, $00
-	db $f0, $f8, $01, $00
-	db $f8, $f8, $02, $00
-	db $e8, $00, $00, $20
-	db $f0, $00, $01, $20
-	db $f8, $00, $02, $20
-	db $00, $f8, $02, $40
-	db $08, $f8, $01, $40
-	db $10, $f8, $00, $40
-	db $00, $00, $02, $60
-	db $08, $00, $01, $60
-	db $10, $00, $00, $60
-; 8e5cd
-
-Unknown_8e5cd: ; 8e5cd
-	db 20
-	db $ec, $f0, $00, $00
-	db $ec, $f8, $01, $00
-	db $ec, $00, $02, $00
-	db $ec, $08, $03, $00
-	db $f4, $f0, $04, $00
-	db $f4, $f8, $05, $00
-	db $f4, $00, $06, $00
-	db $f4, $08, $07, $00
-	db $fc, $f0, $08, $00
-	db $fc, $f8, $09, $00
-	db $fc, $00, $0a, $00
-	db $fc, $08, $0b, $00
-	db $04, $f0, $0c, $00
-	db $04, $f8, $0d, $00
-	db $04, $00, $0e, $00
-	db $04, $08, $0f, $00
-	db $0c, $f0, $10, $00
-	db $0c, $f8, $11, $00
-	db $0c, $00, $12, $00
-	db $0c, $08, $13, $00
-; 8e61e
-
-Unknown_8e61e: ; 8e61e
-	db 20
-	db $00, $08, $00, $81
-	db $08, $10, $00, $81
-	db $10, $18, $00, $81
-	db $18, $20, $00, $81
-	db $20, $28, $00, $81
-	db $18, $30, $00, $81
-	db $10, $38, $00, $81
-	db $08, $40, $00, $81
-	db $00, $48, $00, $81
-	db $08, $50, $00, $81
-	db $10, $58, $00, $81
-	db $18, $60, $00, $81
-	db $20, $68, $00, $81
-	db $18, $70, $00, $81
-	db $10, $78, $00, $81
-	db $08, $80, $00, $81
-	db $00, $88, $00, $81
-	db $08, $90, $00, $81
-	db $10, $98, $00, $81
-	db $18, $a0, $00, $81
-; 8e66f
-
-Unknown_8e66f: ; 8e66f
-	db 4
-	db $f8, $f8, $00, $02
-	db $f8, $00, $01, $02
-	db $00, $f8, $02, $02
-	db $00, $00, $03, $02
-; 8e680
-
-Unknown_8e680: ; 8e680
-	db 9
-	db $f0, $f4, $00, $01
-	db $f0, $fc, $01, $01
-	db $f0, $04, $02, $01
-	db $f8, $f4, $10, $01
-	db $f8, $fc, $11, $01
-	db $f8, $04, $12, $01
-	db $00, $f4, $20, $01
-	db $00, $fc, $21, $01
-	db $00, $04, $22, $01
-; 8e6a5
-
-Unknown_8e6a5: ; 8e6a5
-	db 24
-	db $d8, $f4, $00, $01
-	db $d8, $fc, $01, $01
-	db $d8, $04, $02, $01
-	db $d8, $0c, $03, $01
-	db $e0, $f4, $10, $01
-	db $e0, $fc, $11, $01
-	db $e0, $04, $12, $01
-	db $e0, $0c, $13, $01
-	db $e8, $f4, $20, $01
-	db $e8, $fc, $21, $01
-	db $e8, $04, $22, $01
-	db $e8, $0c, $23, $01
-	db $f0, $f4, $30, $01
-	db $f0, $fc, $31, $01
-	db $f0, $04, $32, $01
-	db $f0, $0c, $33, $01
-	db $f8, $f4, $40, $01
-	db $f8, $fc, $41, $01
-	db $f8, $04, $42, $01
-	db $f8, $0c, $43, $01
-	db $00, $f4, $50, $01
-	db $00, $fc, $51, $01
-	db $00, $04, $52, $01
-	db $00, $0c, $53, $01
-; 8e706
-Unknown_8e706: ; Broken 2bpp pointers
-	dbbw $80, $01, $672a ; 128-tile 2bpp at 1:672a (inside Multiply)
-	dbbw $80, $01, $672a
-	dbbw $80, $01, $672a
-	dbbw $80, $01, $672a
-	dbbw $10, $37, $672a ; 16-tile 2bpp at 37:672a (within Tileset11GFX)
-	dbbw $10, $11, $672a ; 16-tile 2bpp at 11:672a (empty data)
-	dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data)
-	dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7)
-	dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c)
-
-Function8e72a: ; 8e72a
-	add $10
-Function8e72c: ; 8e72c
+Sprites_Sine: ; 8e72c
+; floor(d * sin(a * pi/32))
 	and $3f
 	cp $20
-	jr nc, .asm_8e737
-	call Function8e741
+	jr nc, .negative
+	call .ApplySineWave
 	ld a, h
 	ret
 
-.asm_8e737
+.negative
 	and $1f
-	call Function8e741
+	call .ApplySineWave
 	ld a, h
 	xor $ff ; cpl
 	inc a
@@ -2858,103 +625,105 @@
 	ret
 ; 8e741
 
-Function8e741: ; 8e741
+.ApplySineWave: ; 8e741
 	ld e, a
 	ld a, d
 	ld d, 0
-	ld hl, Unknown_8e75d
-rept 2
+	ld hl, .sinewave
 	add hl, de
-endr
+	add hl, de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 	ld hl, 0
-.asm_8e750
+.multiply
 	srl a
-	jr nc, .asm_8e755
+	jr nc, .even
 	add hl, de
 
-.asm_8e755
+.even
 	sla e
 	rl d
 	and a
-	jr nz, .asm_8e750
+	jr nz, .multiply
 	ret
 ; 8e75d
 
-Unknown_8e75d: ; 8e75d
+.sinewave: ; 8e75d
 	sine_wave $100
 
 
-Function8e79d: ; 8e79d
+AnimateEndOfExpBar: ; 8e79d
 	ld a, [hSGB]
-	ld de, GFX_8e7f4
+	ld de, EndOfExpBarGFX
 	and a
-	jr z, .asm_8e7a8
-	ld de, GFX_8e804
+	jr z, .load
+	ld de, SGBEndOfExpBarGFX
 
-.asm_8e7a8
-	ld hl, VTiles0
-	lb bc, BANK(GFX_8e7f4), 1
+.load
+	ld hl, VTiles0 tile $00
+	lb bc, BANK(EndOfExpBarGFX), 1
 	call Request2bpp
-	ld c, $8
-	ld d, $0
-.asm_8e7b5
+	ld c, 8
+	ld d, 0
+.loop
 	push bc
-	call Function8e7c6
+	call .AnimateFrame
 	call DelayFrame
 	pop bc
-rept 2
 	inc d
-endr
+	inc d
 	dec c
-	jr nz, .asm_8e7b5
+	jr nz, .loop
 	call ClearSprites
 	ret
 ; 8e7c6
 
-Function8e7c6: ; 8e7c6
+.AnimateFrame: ; 8e7c6
 	ld hl, Sprites
 	ld c, $8
-.asm_8e7cb
+.anim_loop
 	ld a, c
 	and a
 	ret z
 	dec c
 	ld a, c
+; multiply by 8
 	sla a
 	sla a
 	sla a
 	push af
+
 	push de
 	push hl
-	call Function8e72c
+	call Sprites_Sine
 	pop hl
 	pop de
-	add $68
+	add 13 * 8
 	ld [hli], a
+
 	pop af
 	push de
 	push hl
-	call Function8e72a
+	call Sprites_Cosine
 	pop hl
 	pop de
-	add $54
+	add 10 * 8 + 4
 	ld [hli], a
+
 	ld a, $0
 	ld [hli], a
-	ld a, $6
+	ld a, $6 ; OBJ 6
 	ld [hli], a
-	jr .asm_8e7cb
+	jr .anim_loop
 ; 8e7f4
 
-GFX_8e7f4: ; 8e7f4
-INCBIN "gfx/unknown/08e7f4.2bpp"
-GFX_8e804: ; 8e804
-INCBIN "gfx/unknown/08e804.2bpp"
+EndOfExpBarGFX: ; 8e7f4
+INCBIN "gfx/battle/expbarend.2bpp"
+SGBEndOfExpBarGFX: ; 8e804
+INCBIN "gfx/battle/expbarend_sgb.2bpp"
 
-ClearSpriteAnims: ; 8e814
+ClearSpriteAnims2: ; 8e814
 	push hl
 	push de
 	push bc
@@ -2974,451 +743,3 @@
 	pop hl
 	ret
 ; 8e82b
-
-Function8e82b: ; 8e82b
-	ld a, e
-	call ReadMonMenuIcon
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, IconPointers
-	add hl, de
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	ld b, BANK(Icons)
-	ld c, 8
-	ret
-; 8e83f
-
-Function8e83f: ; 8e83f
-	push hl
-	push de
-	push bc
-	call Function8e849
-	pop bc
-	pop de
-	pop hl
-	ret
-; 8e849
-
-Function8e849: ; 8e849
-	ld d, 0
-	ld hl, Jumptable_8e854
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 8e854
-
-
-Jumptable_8e854: ; 8e854 (23:6854)
-	dw Function8e8d5
-	dw Function8e961
-	dw Function8e97d
-	dw Function8e99a
-	dw Function8e898
-	dw Function8e8b1
-	dw Function8e862
-
-
-Function8e862: ; 8e862 (23:6862)
-	call Function8e908
-	call Function8e86c
-	call Function8e936
-	ret
-
-Function8e86c: ; 8e86c (23:686c)
-	push bc
-	ld a, [hObjectStructIndexBuffer]
-	ld hl, PartyMon1Item
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	pop bc
-	ld a, [hl]
-	and a
-	jr z, .asm_8e890
-	push hl
-	push bc
-	ld d, a
-	callab ItemIsMail
-	pop bc
-	pop hl
-	jr c, .asm_8e88e
-	ld a, $6
-	jr .asm_8e892
-.asm_8e88e
-	ld a, $5
-.asm_8e890
-	ld a, $4
-.asm_8e892
-	ld hl, $1
-	add hl, bc
-	ld [hl], a
-	ret
-
-Function8e898: ; 8e898 (23:6898)
-	call Function8e8d5
-	ld hl, $2
-	add hl, bc
-	ld a, $0
-	ld [hl], a
-	ld hl, $4
-	add hl, bc
-	ld a, $48
-	ld [hl], a
-	ld hl, $5
-	add hl, bc
-	ld a, $48
-	ld [hl], a
-	ret
-
-Function8e8b1: ; 8e8b1 (23:68b1)
-	call Function8e908
-	call Function8e936
-	ld hl, $2
-	add hl, bc
-	ld a, $0
-	ld [hl], a
-	ld hl, $4
-	add hl, bc
-	ld a, $18
-	ld [hl], a
-	ld hl, $5
-	add hl, bc
-	ld a, $60
-	ld [hl], a
-	ld a, c
-	ld [wc608], a
-	ld a, b
-	ld [wc608 + 1], a
-	ret
-
-Function8e8d5: ; 8e8d5 (23:68d5)
-	call Function8e908
-	call Function8e8df
-	call Function8e936
-	ret
-
-Function8e8df: ; 8e8df (23:68df)
-	push bc
-	ld a, [hObjectStructIndexBuffer]
-	ld hl, PartyMon1Item
-	ld bc, $30
-	call AddNTimes
-	pop bc
-	ld a, [hl]
-	and a
-	ret z
-	push hl
-	push bc
-	ld d, a
-	callab ItemIsMail
-	pop bc
-	pop hl
-	jr c, .asm_8e900
-	ld a, $3
-	jr .asm_8e902
-.asm_8e900
-	ld a, $2
-.asm_8e902
-	ld hl, $1
-	add hl, bc
-	ld [hl], a
-	ret
-
-Function8e908: ; 8e908 (23:6908)
-	ld a, [wc3b7]
-	push af
-	ld a, [hObjectStructIndexBuffer]
-	ld hl, PartySpecies
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	call Function8e9db
-	ld a, [hObjectStructIndexBuffer]
-; y coord
-rept 4
-	add a
-endr
-	add $1c
-	ld d, a
-; x coord
-	ld e, $10
-; type is partymon icon
-	ld a, SPRITE_ANIM_INDEX_00
-	call InitSpriteAnimStruct
-	pop af
-	ld hl, $3
-	add hl, bc
-	ld [hl], a
-	ret
-
-Function8e936: ; 8e936 (23:6936)
-	push bc
-	ld a, [hObjectStructIndexBuffer]
-	ld b, a
-	call Function8e94c
-	ld a, b
-	pop bc
-	ld hl, $9
-	add hl, bc
-	ld [hl], a
-	rlca
-	rlca
-	ld hl, $d
-	add hl, bc
-	ld [hl], a
-	ret
-
-Function8e94c: ; 8e94c (23:694c)
-	callba PlacePartymonHPBar
-	call GetHPPal
-	ld e, d
-	ld d, 0
-	ld hl, Unknown_8e95e
-	add hl, de
-	ld b, [hl]
-	ret
-; 8e95e (23:695e)
-
-Unknown_8e95e: ; 8e95e
-	db $00, $40, $80
-; 8e961
-
-Function8e961: ; 8e961 (23:6961)
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	xor a
-	call GetIconGFX
-	lb de, $24, $20
-	ld a, SPRITE_ANIM_INDEX_00
-	call InitSpriteAnimStruct
-	ld hl, $2
-	add hl, bc
-	ld [hl], $0
-	ret
-
-Function8e97d: ; 8e97d (23:697d)
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	xor a
-	call GetIconGFX
-	ld d, $1a
-	ld e, $24
-	ld a, SPRITE_ANIM_INDEX_00
-	call InitSpriteAnimStruct
-	ld hl, $2
-	add hl, bc
-	ld [hl], $0
-	ret
-
-Function8e99a: ; 8e99a (23:699a)
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	ld a, $62
-	ld [wc3b7], a
-	call Function8e9db
-	ret
-
-GetSpeciesIcon: ; 8e9ac
-; Load species icon into VRAM at tile a
-	push de
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	pop de
-	ld a, e
-	call GetIconGFX
-	ret
-; 8e9bc
-
-
-Function8e9bc: ; 8e9bc (23:69bc)
-	push de
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	pop de
-	ld a, e
-	call GetIcon_a
-	ret
-; 8e9cc (23:69cc)
-
-Function8e9cc: ; 8e9cc
-	push de
-	ld a, [wd265]
-	call ReadMonMenuIcon
-	ld [CurIcon], a
-	pop de
-	call GetIcon_de
-	ret
-; 8e9db
-
-Function8e9db: ; 8e9db (23:69db)
-	ld a, [wc3b7]
-
-GetIconGFX: ; 8e9de
-	call GetIcon_a
-	ld de, $80 ; 8 tiles
-	add hl, de
-	ld de, HeldItemIcons
-	lb bc, BANK(HeldItemIcons), 2
-	call GetGFXUnlessMobile
-	ld a, [wc3b7]
-	add 10
-	ld [wc3b7], a
-	ret
-
-HeldItemIcons:
-INCBIN "gfx/icon/mail.2bpp"
-INCBIN "gfx/icon/item.2bpp"
-; 8ea17
-
-GetIcon_de: ; 8ea17
-; Load icon graphics into VRAM starting from tile de.
-	ld l, e
-	ld h, d
-	jr GetIcon
-
-GetIcon_a: ; 8ea1b
-; Load icon graphics into VRAM starting from tile a.
-	ld l, a
-	ld h, 0
-
-GetIcon: ; 8ea1e
-; Load icon graphics into VRAM starting from tile hl.
-
-; One tile is 16 bytes long.
-rept 4
-	add hl, hl
-endr
-
-	ld de, VTiles0
-	add hl, de
-	push hl
-
-; The icons are contiguous, in order and of the same
-; size, so the pointer table is somewhat redundant.
-	ld a, [CurIcon]
-	push hl
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, IconPointers
-	add hl, de
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	pop hl
-
-	lb bc, BANK(Icons), 8
-	call GetGFXUnlessMobile
-
-	pop hl
-	ret
-; 8ea3f
-
-GetGFXUnlessMobile: ; 8ea3f
-	ld a, [wLinkMode]
-	cp LINK_MOBILE
-	jp nz, Request2bpp
-	jp Get2bpp_2
-; 8ea4a
-
-Function8ea4a: ; 8ea4a
-	ld hl, wSpriteAnimationStructs
-	ld e, $6
-	ld a, [MenuSelection2]
-	ld d, a
-.loop
-	ld a, [hl]
-	and a
-	jr z, .next
-	cp d
-	jr z, .loadwithtwo
-	ld a, $0
-	jr .ok
-
-.loadwithtwo
-	ld a, $2
-
-.ok
-	push hl
-	ld c, l
-	ld b, h
-	ld hl, $2
-	add hl, bc
-	ld [hl], a
-	pop hl
-
-.next
-	ld bc, $10
-	add hl, bc
-	dec e
-	jr nz, .loop
-	ret
-; 8ea71
-
-Function8ea71: ; 8ea71
-	ld hl, wSpriteAnimationStructs
-	ld e, $6
-.loop
-	ld a, [hl]
-	and a
-	jr z, .zero
-	push hl
-	ld c, l
-	ld b, h
-	ld hl, $2
-	add hl, bc
-	ld [hl], $1
-	pop hl
-.zero
-	ld bc, $10
-	add hl, bc
-	dec e
-	jr nz, .loop
-	ret
-; 8ea8c (23:6a8c)
-
-Function8ea8c: ; 8ea8c
-	ld hl, wSpriteAnimationStructs
-	ld e, $6
-	ld a, [wd0e3]
-	ld d, a
-.asm_8ea95
-	ld a, [hl]
-	and a
-	jr z, .asm_8eaab
-	cp d
-	jr z, .asm_8eaa0
-	ld a, $3
-	jr .asm_8eaa2
-.asm_8eaa0
-	ld a, $2
-.asm_8eaa2
-	push hl
-	ld c, l
-	ld b, h
-	ld hl, $2
-	add hl, bc
-	ld [hl], a
-	pop hl
-.asm_8eaab
-	ld bc, $10
-	add hl, bc
-	dec e
-	jr nz, .asm_8ea95
-	ret
-
-INCLUDE "menu/mon_icons.asm"
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -1,6 +1,6 @@
 StartMenu:: ; 125cd
 
-	call ResetTextRelatedRAM
+	call ClearWindowData
 
 	ld de, SFX_MENU
 	call PlaySFX
@@ -42,7 +42,7 @@
 	ld a, [wMenuCursorBuffer]
 	ld [wd0d2], a
 	call PlayClickSFX
-	call Function1bee
+	call PlaceHollowCursor
 	call .OpenMenu
 
 ; Menu items have different return functions.
@@ -50,9 +50,8 @@
 	ld hl, .MenuReturns
 	ld e, a
 	ld d, 0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -61,8 +60,8 @@
 .MenuReturns
 	dw .Reopen
 	dw .Exit
-	dw .ExitMenuCallFuncLoadMoveSprites
-	dw .ExitMenuRunScriptLoadMoveSprites
+	dw .ExitMenuCallFuncCloseText
+	dw .ExitMenuRunScriptCloseText
 	dw .ExitMenuRunScript
 	dw .ReturnEnd
 	dw .ReturnRedraw
@@ -78,7 +77,7 @@
 .ReturnEnd
 	call ExitMenu
 .ReturnEnd2
-	call LoadMoveSprites
+	call CloseText
 	call UpdateTimePals
 	ret
 
@@ -93,7 +92,7 @@
 .loop
 	call .PrintMenuAccount
 	call Function1f1a
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp B_BUTTON
 	jr z, .b
 	cp A_BUTTON
@@ -115,7 +114,7 @@
 	ret
 ; 12699
 
-.ExitMenuRunScriptLoadMoveSprites ; 12699
+.ExitMenuRunScriptCloseText ; 12699
 	call ExitMenu
 	ld a, HMENURETURN_SCRIPT
 	ld [hMenuReturn], a
@@ -122,7 +121,7 @@
 	jr .ReturnEnd2
 ; 126a2
 
-.ExitMenuCallFuncLoadMoveSprites ; 126a2
+.ExitMenuCallFuncCloseText ; 126a2
 	call ExitMenu
 	ld hl, wQueuedScriptAddr
 	ld a, [hli]
@@ -141,12 +140,12 @@
 .Clear ; 126b7
 	call ClearBGPalettes
 	call Call_ExitMenu
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	call .DrawMenuAccount_
 	call MenuFunc_1e7f
 	call .DrawBugContestStatus
 	call UpdateSprites
-	call Functiond90
+	call ret_d90
 	call Function2b5c
 	ret
 ; 126d3
@@ -235,9 +234,8 @@
 	push de
 	ld a, [MenuSelection]
 	call .GetMenuAccountTextPointer
-rept 2
 	inc hl
-endr
+	inc hl
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -270,7 +268,7 @@
 .GetMenuAccountTextPointer ; 12819
 	ld e, a
 	ld d, 0
-	ld hl, wcf97
+	ld hl, wMenuData2PointerTableAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -283,7 +281,7 @@
 
 .SetUpMenuItems ; 12829
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	call .FillMenuList
 
 	ld hl, StatusFlags
@@ -469,7 +467,7 @@
 
 	call FadeToMenu
 	callba TrainerCard
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ld a, 0
 	ret
 ; 12937
@@ -483,7 +481,7 @@
 
 	call FadeToMenu
 	callba Pokedex
-	call ReturnToCallingMenu
+	call CloseSubmenu
 
 .asm_12949
 	ld a, 0
@@ -495,7 +493,7 @@
 
 	call FadeToMenu
 	callba PokeGear
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ld a, 0
 	ret
 ; 1295b
@@ -508,7 +506,7 @@
 	ld a, [wcf66]
 	and a
 	jr nz, .used_item
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ld a, 0
 	ret
 
@@ -557,7 +555,7 @@
 	jr z, .quit
 
 .return
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ld a, 0
 	ret
 
@@ -602,9 +600,9 @@
 	jr nz, .asm_12a3f
 	ld hl, UnknownText_0x12a45
 	call MenuTextBox
-	callba Function24fbf
+	callba SelectQuantityToToss
 	push af
-	call WriteBackup
+	call CloseWindow
 	call ExitMenu
 	pop af
 	jr c, .asm_12a42
@@ -685,7 +683,7 @@
 
 CancelPokemonAction: ; 12a79
 	callba InitPartyMenuWithCancel
-	callba Function8ea71
+	callba UnfreezeMonIcons
 	ld a, 1
 	ret
 ; 12a88
@@ -748,7 +746,7 @@
 	inc a
 	ld [wSwitchMon], a
 
-	callba Function8ea8c
+	callba HoldSwitchmonIcon
 	callba InitPartyMenuNoCancel
 
 	ld a, 4
@@ -795,26 +793,26 @@
 ; Eggs can't hold items!
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_12ba6
+	jr z, .cancel
 
 	ld hl, GiveTakeItemMenuData
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
-	jr c, .asm_12ba6
+	jr c, .cancel
 
 	call GetCurNick
 	ld hl, StringBuffer1
-	ld de, wd050
-	ld bc, $b
+	ld de, wMonOrItemNameBuffer
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp 1
-	jr nz, .asm_12ba0
+	jr nz, .take
 
 	call LoadStandardMenuDataHeader
 	call ClearPalettes
-	call Function12ba9
+	call .GiveItem
 	call ClearPalettes
 	call LoadFontsBattleExtra
 	call ExitMenu
@@ -821,23 +819,23 @@
 	ld a, 0
 	ret
 
-.asm_12ba0
+.take
 	call TakePartyItem
 	ld a, 3
 	ret
 
-.asm_12ba6
+.cancel
 	ld a, 3
 	ret
 ; 12ba9
 
 
-Function12ba9: ; 12ba9
+.GiveItem: ; 12ba9
 
-	callba Function106a5
+	callba DepositSellInitPackBuffers
 
 .loop
-	callba Function106be
+	callba DepositSellPack
 
 	ld a, [wcf66]
 	and a
@@ -852,7 +850,7 @@
 	and a
 	jr nz, .next
 
-	call Function12bd9
+	call TryGiveItemToPartymon
 	jr .quit
 
 .next
@@ -865,7 +863,7 @@
 ; 12bd9
 
 
-Function12bd9: ; 12bd9
+TryGiveItemToPartymon: ; 12bd9
 
 	call SpeechTextBox
 	call PartyMonItemName
@@ -872,17 +870,17 @@
 	call GetPartyItemLocation
 	ld a, [hl]
 	and a
-	jr z, .asm_12bf4
+	jr z, .give_item_to_mon
 
 	push hl
 	ld d, a
 	callba ItemIsMail
 	pop hl
-	jr c, .asm_12c01
+	jr c, .please_remove_mail
 	ld a, [hl]
-	jr .asm_12c08
+	jr .already_holding_item
 
-.asm_12bf4
+.give_item_to_mon
 	call GiveItemToPokemon
 	ld hl, MadeHoldText
 	call MenuTextBoxBackup
@@ -889,17 +887,17 @@
 	call GivePartyItem
 	ret
 
-.asm_12c01
+.please_remove_mail
 	ld hl, PleaseRemoveMailText
 	call MenuTextBoxBackup
 	ret
 
-.asm_12c08
+.already_holding_item
 	ld [wd265], a
 	call GetItemName
 	ld hl, SwitchAlreadyHoldingText
 	call StartMenuYesNo
-	jr c, .asm_12c4b
+	jr c, .abort
 
 	call GiveItemToPokemon
 	ld a, [wd265]
@@ -909,7 +907,7 @@
 	pop af
 	ld [CurItem], a
 	call ReceiveItemFromPokemon
-	jr nc, .asm_12c3c
+	jr nc, .bag_full
 
 	ld hl, TookAndMadeHoldText
 	call MenuTextBoxBackup
@@ -918,7 +916,7 @@
 	call GivePartyItem
 	ret
 
-.asm_12c3c
+.bag_full
 	ld a, [wd265]
 	ld [CurItem], a
 	call ReceiveItemFromPokemon
@@ -925,7 +923,7 @@
 	ld hl, ItemStorageIsFullText
 	call MenuTextBoxBackup
 
-.asm_12c4b
+.abort
 	ret
 ; 12c4c
 
@@ -1109,12 +1107,12 @@
 ; Show the READ/TAKE/QUIT menu.
 	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 
 ; Interpret the menu.
 	jp c, .done
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .read
 	cp $2
@@ -1280,7 +1278,7 @@
 ; 12e55
 
 MonMenu_Flash: ; 12e55
-	callba Functionc8ac
+	callba OWFlash
 	ld a, [wFieldMoveSucceeded]
 	cp $1
 	jr nz, .Fail
@@ -1322,7 +1320,7 @@
 ; 12e94
 
 MonMenu_Waterfall: ; 12e94
-	callba Functioncade
+	callba WaterfallFunction
 	ld a, [wFieldMoveSucceeded]
 	cp $1
 	jr nz, .Fail
@@ -1457,13 +1455,13 @@
 	ret
 ; 12f5b
 
-Function12f5b: ; 12f5b
+ChooseMoveToDelete: ; 12f5b
 	ld hl, Options
 	ld a, [hl]
 	push af
 	set NO_TEXT_SCROLL, [hl]
 	call LoadFontsBattleExtra
-	call Function12f73
+	call .asm_12f73
 	pop bc
 	ld a, b
 	ld [Options], a
@@ -1473,40 +1471,40 @@
 	ret
 ; 12f73
 
-Function12f73: ; 12f73
+.asm_12f73: ; 12f73
 	call SetUpMoveScreenBG
-	ld de, Unknown_12fb2
-	call InitMenu3
-	call Function131ef
-	ld hl, wcfa5
+	ld de, DeleteMoveScreenAttrs
+	call SetMenuAttributes
+	call SetUpMoveList
+	ld hl, w2DMenuFlags1
 	set 6, [hl]
-	jr Function12f93
+	jr .asm_12f93
 
-Function12f86: ; 12f86
-	call Function1bd3
+.asm_12f86: ; 12f86
+	call ScrollingMenuJoypad
 	bit 1, a
-	jp nz, Function12f9f
+	jp nz, .asm_12f9f
 	bit 0, a
-	jp nz, Function12f9c
+	jp nz, .asm_12f9c
 
-Function12f93: ; 12f93
+.asm_12f93: ; 12f93
 	call PrepareToPlaceMoveData
 	call PlaceMoveData
-	jp Function12f86
+	jp .asm_12f86
 ; 12f9c
 
-Function12f9c: ; 12f9c
+.asm_12f9c: ; 12f9c
 	and a
-	jr Function12fa0
+	jr .asm_12fa0
 
-Function12f9f: ; 12f9f
+.asm_12f9f: ; 12f9f
 	scf
 
-Function12fa0: ; 12fa0
+.asm_12fa0: ; 12fa0
 	push af
 	xor a
 	ld [wSwitchMon], a
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	res 6, [hl]
 	call ClearSprites
 	call ClearTileMap
@@ -1514,8 +1512,12 @@
 	ret
 ; 12fb2
 
-Unknown_12fb2: ; 12fb2
-	db $03, $01, $03, $01, $40, $00, $20, $c3
+DeleteMoveScreenAttrs: ; 12fb2
+	db 3, 1
+	db 3, 1
+	db $40, $00
+	dn 2, 0
+	db D_UP | D_DOWN | A_BUTTON | B_BUTTON
 ; 12fba
 
 ManagePokemonMoves: ; 12fba
@@ -1539,19 +1541,19 @@
 MoveScreenLoop: ; 12fd5
 	ld a, [CurPartyMon]
 	inc a
-	ld [wd0d8], a
+	ld [wPartyMenuCursor], a
 	call SetUpMoveScreenBG
 	call Function132d3
-	ld de, Unknown_13163
-	call InitMenu3
+	ld de, MoveScreenAttributes
+	call SetMenuAttributes
 .loop
-	call Function131ef
-	ld hl, wcfa5
+	call SetUpMoveList
+	ld hl, w2DMenuFlags1
 	set 6, [hl]
 	jr .skip_joy
 
 .joy_loop
-	call Function1bd3
+	call ScrollingMenuJoypad
 	bit 1, a
 	jp nz, .b_button
 	bit 0, a
@@ -1589,7 +1591,7 @@
 	jp z, .exit
 
 	ld a, [wMoveSwapBuffer]
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	xor a
 	ld [wMoveSwapBuffer], a
 	hlcoord 1, 2
@@ -1669,9 +1671,9 @@
 	ld a, [wMoveSwapBuffer]
 	and a
 	jr nz, .place_move
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wMoveSwapBuffer], a
-	call Function1bee
+	call PlaceHollowCursor
 	jp .moving_move
 
 .place_move
@@ -1716,7 +1718,7 @@
 
 .copy_move: ; 1313a
 	push hl
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, $0
@@ -1740,14 +1742,18 @@
 .exit: ; 13154
 	xor a
 	ld [wMoveSwapBuffer], a
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	res 6, [hl]
 	call ClearSprites
 	jp ClearTileMap
 ; 13163
 
-Unknown_13163: ; 13163
-	db $03, $01, $03, $01, $40, $00, $20, $f3
+MoveScreenAttributes: ; 13163
+	db 3, 1
+	db 3, 1
+	db $40, $00
+	dn 2, 0
+	db D_UP | D_DOWN | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
 ; 1316b
 
 String_1316b: ; 1316b
@@ -1761,7 +1767,7 @@
 	xor a
 	ld [hBGMapMode], a
 	callba Functionfb571
-	callba ClearSpriteAnims
+	callba ClearSpriteAnims2
 	ld a, [CurPartyMon]
 	ld e, a
 	ld d, $0
@@ -1802,7 +1808,7 @@
 	jp ClearBox
 ; 131ef
 
-Function131ef: ; 131ef
+SetUpMoveList: ; 131ef
 	xor a
 	ld [hBGMapMode], a
 	ld [wMoveSwapBuffer], a
@@ -1817,12 +1823,12 @@
 	hlcoord 2, 3
 	predef ListMoves
 	hlcoord 10, 4
-	predef Function50c50
+	predef ListMovePP
 	call WaitBGMap
 	call SetPalettes
-	ld a, [wd0eb]
+	ld a, [wNumMoves]
 	inc a
-	ld [wcfa3], a
+	ld [w2DMenuNumRows], a
 	hlcoord 0, 11
 	ld b, 5
 	ld c, 18
@@ -1834,7 +1840,7 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, $0
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -1,4 +1,4 @@
-Function4dc7b: ; 4dc7b (13:5c7b)
+BattleStatsScreenInit: ; 4dc7b (13:5c7b)
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
 	jr nz, StatsScreenInit
@@ -6,13 +6,13 @@
 	ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd)
 	and a
 	jr z, StatsScreenInit
-	jr Function4dc8f
+	jr _BattleStatsScreenInit
 
 StatsScreenInit: ; 4dc8a
 	ld hl, StatsScreenMain
 	jr StatsScreenInit_gotaddress
 
-Function4dc8f: ; 4dc8f
+_BattleStatsScreenInit: ; 4dc8f
 	ld hl, StatsScreenBattle
 	jr StatsScreenInit_gotaddress
 
@@ -21,7 +21,7 @@
 	push af
 	xor a
 	ld [hMapAnims], a ; disable overworld tile animations
-	ld a, [wc2c6] ; whether sprite is to be mirrorred
+	ld a, [wBoxAlignment] ; whether sprite is to be mirrorred
 	push af
 	ld a, [wJumptableIndex]
 	ld b, a
@@ -46,7 +46,7 @@
 	ld a, c
 	ld [wcf64], a
 	pop af
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	pop af
 	ld [hMapAnims], a
 	ret
@@ -66,7 +66,7 @@
 	and $7f
 	ld hl, StatsScreenPointerTable
 	rst JumpTable
-	call Function4dd3a ; check for keys?
+	call StatsScreen_WaitAnim ; check for keys?
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr z, .loop
@@ -83,12 +83,12 @@
 	or $1
 	ld [wcf64], a
 .loop
-	callba Function100dd2
+	callba Mobile_SetOverworldDelay
 	ld a, [wJumptableIndex]
 	and $7f
 	ld hl, StatsScreenPointerTable
 	rst JumpTable
-	call Function4dd3a
+	call StatsScreen_WaitAnim
 	callba Function100dfd
 	jr c, .exit
 	ld a, [wJumptableIndex]
@@ -100,37 +100,39 @@
 ; 4dd2a
 
 StatsScreenPointerTable: ; 4dd2a
-	dw MonStatsInit ; regular pokémon
-	dw EggStatsInit ; egg
+	
+	dw MonStatsInit       ; regular pokémon
+	dw EggStatsInit       ; egg
 	dw StatsScreenWaitCry
-	dw Function4ddac
-	dw Function4ddc6
+	dw EggStatsJoypad
+	dw StatsScreen_LoadPage
 	dw StatsScreenWaitCry
-	dw Function4ddd6
-	dw Function4dd6c
+	dw MonStatsJoypad
+	dw StatsScreen_Exit
 ; 4dd3a
 
 
-Function4dd3a: ; 4dd3a (13:5d3a)
+StatsScreen_WaitAnim: ; 4dd3a (13:5d3a)
 	ld hl, wcf64
 	bit 6, [hl]
-	jr nz, .asm_4dd49
+	jr nz, .try_anim
 	bit 5, [hl]
-	jr nz, .asm_4dd56
+	jr nz, .finish
 	call DelayFrame
 	ret
-.asm_4dd49
-	callba Functiond00b4
-	jr nc, .asm_4dd56
+
+.try_anim
+	callba SetUpPokeAnim
+	jr nc, .finish
 	ld hl, wcf64
 	res 6, [hl]
-.asm_4dd56
+.finish
 	ld hl, wcf64
 	res 5, [hl]
 	callba Function10402d
 	ret
 
-Function4dd62: ; 4dd62 (13:5d62)
+StatsScreen_SetJumptableIndex: ; 4dd62 (13:5d62)
 	ld a, [wJumptableIndex]
 	and $80
 	or h
@@ -137,7 +139,7 @@
 	ld [wJumptableIndex], a
 	ret
 
-Function4dd6c: ; 4dd6c (13:5d6c)
+StatsScreen_Exit: ; 4dd6c (13:5d6c)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
@@ -148,19 +150,20 @@
 	call ClearBGPalettes
 	call ClearTileMap
 	callba Function10402d
-	call Function4ddf2
+	call StatsScreen_CopyToTempMon
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_4dd9b
-	call Function4deea
+	jr z, .egg
+	call StatsScreen_InitUpperHalf
 	ld hl, wcf64
 	set 4, [hl]
-	ld h, $4
-	call Function4dd62
+	ld h, 4
+	call StatsScreen_SetJumptableIndex
 	ret
-.asm_4dd9b
-	ld h, $1
-	call Function4dd62
+
+.egg
+	ld h, 1
+	call StatsScreen_SetJumptableIndex
 	ret
 
 EggStatsInit: ; 4dda1
@@ -172,24 +175,26 @@
 ; 0x4ddac
 
 
-Function4ddac: ; 4ddac (13:5dac)
-	call Function4de2c
-	jr nc, .asm_4ddb7
-	ld h, $0
-	call Function4dd62
+EggStatsJoypad: ; 4ddac (13:5dac)
+	call StatsScreen_GetJoypad
+	jr nc, .check
+	ld h, 0
+	call StatsScreen_SetJumptableIndex
 	ret
-.asm_4ddb7
-	bit 0, a
-	jr nz, .asm_4ddc0
-	and $c3
-	jp Function4de54
-.asm_4ddc0
-	ld h, $7
-	call Function4dd62
+
+.check
+	bit A_BUTTON_F, a
+	jr nz, .quit
+	and D_DOWN | D_UP | A_BUTTON | B_BUTTON
+	jp StatsScreen_JoypadAction
+
+.quit
+	ld h, 7
+	call StatsScreen_SetJumptableIndex
 	ret
 
-Function4ddc6: ; 4ddc6 (13:5dc6)
-	call Function4dfb6
+StatsScreen_LoadPage: ; 4ddc6 (13:5dc6)
+	call StatsScreen_LoadGFX
 	ld hl, wcf64
 	res 4, [hl]
 	ld a, [wJumptableIndex]
@@ -197,16 +202,16 @@
 	ld [wJumptableIndex], a
 	ret
 
-Function4ddd6: ; 4ddd6 (13:5dd6)
-	call Function4de2c
-	jr nc, .asm_4dde1
-	ld h, $0
-	call Function4dd62
+MonStatsJoypad: ; 4ddd6 (13:5dd6)
+	call StatsScreen_GetJoypad
+	jr nc, .next
+	ld h, 0
+	call StatsScreen_SetJumptableIndex
 	ret
 
-.asm_4dde1
-	and $f3
-	jp Function4de54
+.next
+	and D_DOWN | D_UP | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
+	jp StatsScreen_JoypadAction
 
 StatsScreenWaitCry: ; 4dde6 (13:5de6)
 	call IsSFXPlaying
@@ -216,32 +221,33 @@
 	ld [wJumptableIndex], a
 	ret
 
-Function4ddf2: ; 4ddf2 (13:5df2)
+StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2)
 	ld a, [MonType]
 	cp BREEDMON
-	jr nz, .asm_4de10
-	ld a, [wd018_Mon]
+	jr nz, .breedmon
+	ld a, [wBufferMon]
 	ld [CurSpecies], a
 	call GetBaseData
-	ld hl, wd018_Mon
+	ld hl, wBufferMon
 	ld de, TempMon
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
-	jr .asm_4de2a
-.asm_4de10
+	jr .done
+
+.breedmon
 	callba CopyPkmnToTempMon
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_4de2a
+	jr z, .done
 	ld a, [MonType]
 	cp BOXMON
-	jr c, .asm_4de2a
-	callba Function50890
-.asm_4de2a
+	jr c, .done
+	callba CalcTempmonStats
+.done
 	and a
 	ret
 
-Function4de2c: ; 4de2c (13:5e2c)
+StatsScreen_GetJoypad: ; 4de2c (13:5e2c)
 	call GetJoypad
 	ld a, [MonType]
 	cp BREEDMON
@@ -249,14 +255,14 @@
 	push hl
 	push de
 	push bc
-	callba Functione2f95
+	callba StatsScreenDPad
 	pop bc
 	pop de
 	pop hl
-	ld a, [wcf73]
-	and $c0
+	ld a, [wMenuJoypad]
+	and D_DOWN | D_UP
 	jr nz, .set_carry
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	jr .clear_flags
 
 .notbreedmon
@@ -269,100 +275,107 @@
 	scf
 	ret
 
-Function4de54: ; 4de54 (13:5e54)
+StatsScreen_JoypadAction: ; 4de54 (13:5e54)
 	push af
 	ld a, [wcf64]
 	and $3
 	ld c, a
 	pop af
-	bit 1, a
-	jp nz, Function4dee4
-	bit 5, a
-	jr nz, .asm_4dec7
-	bit 4, a
-	jr nz, .asm_4debd
-	bit 0, a
-	jr nz, .asm_4deb8
-	bit 6, a
-	jr nz, .asm_4dea0
-	bit 7, a
-	jr nz, .asm_4de77
-	jr .asm_4dece
-.asm_4de77
+	bit B_BUTTON_F, a
+	jp nz, .b_button
+	bit D_LEFT_F, a
+	jr nz, .d_left
+	bit D_RIGHT_F, a
+	jr nz, .d_right
+	bit A_BUTTON_F, a
+	jr nz, .a_button
+	bit D_UP_F, a
+	jr nz, .d_up
+	bit D_DOWN_F, a
+	jr nz, .d_down
+	jr .done
+
+.d_down
 	ld a, [MonType]
 	cp BOXMON
-	jr nc, .asm_4dece
+	jr nc, .done
 	and a
 	ld a, [PartyCount]
-	jr z, .asm_4de87
+	jr z, .next_mon
 	ld a, [OTPartyCount]
-.asm_4de87
+.next_mon
 	ld b, a
 	ld a, [CurPartyMon]
 	inc a
 	cp b
-	jr z, .asm_4dece
+	jr z, .done
 	ld [CurPartyMon], a
 	ld b, a
 	ld a, [MonType]
 	and a
-	jr nz, .asm_4dede
+	jr nz, .load_mon
 	ld a, b
 	inc a
-	ld [wd0d8], a
-	jr .asm_4dede
-.asm_4dea0
+	ld [wPartyMenuCursor], a
+	jr .load_mon
+
+.d_up
 	ld a, [CurPartyMon]
 	and a
-	jr z, .asm_4dece
+	jr z, .done
 	dec a
 	ld [CurPartyMon], a
 	ld b, a
 	ld a, [MonType]
 	and a
-	jr nz, .asm_4dede
+	jr nz, .load_mon
 	ld a, b
 	inc a
-	ld [wd0d8], a
-	jr .asm_4dede
-.asm_4deb8
+	ld [wPartyMenuCursor], a
+	jr .load_mon
+
+.a_button
 	ld a, c
 	cp $3
-	jr z, Function4dee4
-.asm_4debd
+	jr z, .b_button
+.d_right
 	inc c
 	ld a, $3
 	cp c
-	jr nc, .asm_4decf
+	jr nc, .set_page
 	ld c, $1
-	jr .asm_4decf
-.asm_4dec7
+	jr .set_page
+
+.d_left
 	dec c
-	jr nz, .asm_4decf
+	jr nz, .set_page
 	ld c, $3
-	jr .asm_4decf
-.asm_4dece
+	jr .set_page
+
+.done
 	ret
-.asm_4decf
+
+.set_page
 	ld a, [wcf64]
-	and $fc
+	and %11111100
 	or c
 	ld [wcf64], a
-	ld h, $4
-	call Function4dd62
+	ld h, 4
+	call StatsScreen_SetJumptableIndex
 	ret
-.asm_4dede
-	ld h, $0
-	call Function4dd62
+
+.load_mon
+	ld h, 0
+	call StatsScreen_SetJumptableIndex
 	ret
 
-Function4dee4: ; 4dee4 (13:5ee4)
-	ld h, $7
-	call Function4dd62
+.b_button: ; 4dee4 (13:5ee4)
+	ld h, 7
+	call StatsScreen_SetJumptableIndex
 	ret
 
-Function4deea: ; 4deea (13:5eea)
-	call Function4df45
+StatsScreen_InitUpperHalf: ; 4deea (13:5eea)
+	call .PlaceHPBar
 	xor a
 	ld [hBGMapMode], a
 	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
@@ -379,13 +392,13 @@
 	call PrintNum
 	hlcoord 14, 0
 	call PrintLevel
-	ld hl, Unknown_4df77
-	call Function4e528
-	call Function4e505
+	ld hl, .NicknamePointers
+	call GetNicknamePointer
+	call CopyNickname
 	hlcoord 8, 2
 	call PlaceString
 	hlcoord 18, 0
-	call Function4df66
+	call .PlaceGenderChar
 	hlcoord 9, 4
 	ld a, "/"
 	ld [hli], a
@@ -393,12 +406,12 @@
 	ld [wd265], a
 	call GetPokemonName
 	call PlaceString
-	call Function4df8f
-	call Function4df9b
-	call Function4dfa6
+	call StatsScreen_PlaceHorizontalDivider
+	call StatsScreen_PlacePageSwitchArrows
+	call StatsScreen_PlaceShinyIcon
 	ret
 
-Function4df45: ; 4df45 (13:5f45)
+.PlaceHPBar: ; 4df45 (13:5f45)
 	ld hl, TempMonHP
 	ld a, [hli]
 	ld b, a
@@ -407,15 +420,15 @@
 	ld a, [hli]
 	ld d, a
 	ld e, [hl]
-	callba DrawPartyMenuHPBar
+	callba ComputeHPBarPixels
 	ld hl, wcda1
 	call SetHPPal
-	ld b, SCGB_03
+	ld b, SCGB_STATS_SCREEN_HP_PALS
 	call GetSGBLayout
 	call DelayFrame
 	ret
 
-Function4df66: ; 4df66 (13:5f66)
+.PlaceGenderChar: ; 4df66 (13:5f66)
 	push hl
 	callba GetGender
 	pop hl
@@ -428,14 +441,15 @@
 	ret
 ; 4df77 (13:5f77)
 
-Unknown_4df77: ; 4df77
+.NicknamePointers: ; 4df77
 	dw PartyMonNicknames
 	dw OTPartyMonNicknames
 	dw sBoxMonNicknames
-	dw wd002
+	dw wBufferMonNick
 ; 4df7f
 
 Function4df7f: ; 4df7f
+; unreferenced
 	hlcoord 7, 0
 	ld bc, SCREEN_WIDTH
 	ld d, SCREEN_HEIGHT
@@ -448,7 +462,7 @@
 	ret
 ; 4df8f
 
-Function4df8f: ; 4df8f (13:5f8f)
+StatsScreen_PlaceHorizontalDivider: ; 4df8f (13:5f8f)
 	hlcoord 0, 7
 	ld b, SCREEN_WIDTH
 	ld a, "_"
@@ -458,7 +472,7 @@
 	jr nz, .loop
 	ret
 
-Function4df9b: ; 4df9b (13:5f9b)
+StatsScreen_PlacePageSwitchArrows: ; 4df9b (13:5f9b)
 	hlcoord 12, 6
 	ld [hl], "◀"
 	hlcoord 19, 6
@@ -465,7 +479,7 @@
 	ld [hl], "▶"
 	ret
 
-Function4dfa6: ; 4dfa6 (13:5fa6)
+StatsScreen_PlaceShinyIcon: ; 4dfa6 (13:5fa6)
 	ld bc, TempMonDVs
 	callba CheckShininess
 	ret nc
@@ -473,126 +487,127 @@
 	ld [hl], "<SHINY>"
 	ret
 
-Function4dfb6: ; 4dfb6 (13:5fb6)
-	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
+StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
+	ld a, [BaseDexNo] ; wd236 (aliases: BaseDexNo)
 	ld [wd265], a
 	ld [CurSpecies], a
 	xor a
 	ld [hBGMapMode], a
-	call Function4dfda
-	call Function4e002
-	call Function4dfed
+	call .ClearBox
+	call .PageTilemap
+	call .LoadPals
 	ld hl, wcf64
 	bit 4, [hl]
-	jr nz, .asm_4dfd6
+	jr nz, .place_frontpic
 	call SetPalettes
 	ret
 
-.asm_4dfd6
-	call Function4e226
+.place_frontpic
+	call StatsScreen_PlaceFrontpic
 	ret
 
-Function4dfda: ; 4dfda (13:5fda)
+.ClearBox: ; 4dfda (13:5fda)
 	ld a, [wcf64]
 	and $3
 	ld c, a
-	call Function4e4cd
+	call StatsScreen_LoadPageIndicators
 	hlcoord 0, 8
 	lb bc, 10, 20
 	call ClearBox
 	ret
 
-Function4dfed: ; 4dfed (13:5fed)
+.LoadPals: ; 4dfed (13:5fed)
 	ld a, [wcf64]
 	and $3
 	ld c, a
-	callba Function8c8a
+	callba LoadStatsScreenPals
 	call DelayFrame
 	ld hl, wcf64
 	set 5, [hl]
 	ret
 
-Function4e002: ; 4e002 (13:6002)
+.PageTilemap: ; 4e002 (13:6002)
 	ld a, [wcf64]
 	and $3
 	dec a
-	ld hl, Jumptable_4e00d
+	ld hl, .Jumptable
 	rst JumpTable
 	ret
 
-Jumptable_4e00d: ; 4e00d (13:600d)
-	dw Function4e013
-	dw Function4e147
-	dw Function4e1ae
+.Jumptable: ; 4e00d (13:600d)
+	
+	dw .PinkPage
+	dw .GreenPage
+	dw .BluePage
 
 
-Function4e013: ; 4e013 (13:6013)
+.PinkPage: ; 4e013 (13:6013)
 	hlcoord 0, 9
 	ld b, $0
 	predef DrawPlayerHP
 	hlcoord 8, 9
 	ld [hl], $41
-	ld de, String_4e119
+	ld de, .Status_Type
 	hlcoord 0, 12
 	call PlaceString
 	ld a, [TempMonPokerusStatus]
 	ld b, a
 	and $f
-	jr nz, .asm_4e055
+	jr nz, .HasPokerus
 	ld a, b
 	and $f0
-	jr z, .asm_4e03d
+	jr z, .NotImmuneToPkrs
 	hlcoord 8, 8
-	ld [hl], $e8
-.asm_4e03d
+	ld [hl], "."
+.NotImmuneToPkrs
 	ld a, [MonType]
-	cp $2
-	jr z, .asm_4e060
+	cp BOXMON
+	jr z, .StatusOK
 	hlcoord 6, 13
 	push hl
 	ld de, TempMonStatus
 	predef PlaceStatusString
 	pop hl
-	jr nz, .asm_4e066
-	jr .asm_4e060
-.asm_4e055
-	ld de, String_4e142
+	jr nz, .done_status
+	jr .StatusOK
+.HasPokerus
+	ld de, .PkrsStr
 	hlcoord 1, 13
 	call PlaceString
-	jr .asm_4e066
-.asm_4e060
-	ld de, String_4e127
+	jr .done_status
+.StatusOK
+	ld de, .OK_str
 	call PlaceString
-.asm_4e066
+.done_status
 	hlcoord 1, 15
 	predef PrintMonTypes
 	hlcoord 9, 8
-	ld de, $14
-	ld b, $a
+	ld de, SCREEN_WIDTH
+	ld b, 10
 	ld a, $31
-.asm_4e078
+.vertical_divider
 	ld [hl], a
 	add hl, de
 	dec b
-	jr nz, .asm_4e078
-	ld de, String_4e12b
+	jr nz, .vertical_divider
+	ld de, .ExpPointStr
 	hlcoord 10, 9
 	call PlaceString
 	hlcoord 17, 14
-	call Function4e0d3
+	call .PrintNextLevel
 	hlcoord 13, 10
 	lb bc, 3, 7
 	ld de, TempMonExp
 	call PrintNum
-	call Function4e0e7
+	call .CalcExpToNextLevel
 	hlcoord 13, 13
 	lb bc, 3, 7
 	ld de, Buffer1 ; wd1ea (aliases: MagikarpLength)
 	call PrintNum
-	ld de, String_4e136
+	ld de, .LevelUpStr
 	hlcoord 10, 12
 	call PlaceString
-	ld de, String_4e13f
+	ld de, .ToStr
 	hlcoord 14, 14
 	call PlaceString
 	hlcoord 11, 16
@@ -606,23 +621,23 @@
 	ld [hl], $41
 	ret
 
-Function4e0d3: ; 4e0d3 (13:60d3)
+.PrintNextLevel: ; 4e0d3 (13:60d3)
 	ld a, [TempMonLevel]
 	push af
 	cp MAX_LEVEL
-	jr z, .asm_4e0df
+	jr z, .AtMaxLevel
 	inc a
 	ld [TempMonLevel], a
-.asm_4e0df
+.AtMaxLevel
 	call PrintLevel
 	pop af
 	ld [TempMonLevel], a
 	ret
 
-Function4e0e7: ; 4e0e7 (13:60e7)
+.CalcExpToNextLevel: ; 4e0e7 (13:60e7)
 	ld a, [TempMonLevel]
 	cp MAX_LEVEL
-	jr z, .asm_4e111
+	jr z, .AlreadyAtMaxLevel
 	inc a
 	ld d, a
 	callba CalcExpAtLevel
@@ -629,11 +644,11 @@
 rept 2
 	ld hl, TempMonExp + 2
 endr
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	sub [hl]
 	dec hl
-	ld [wd1ec], a
-	ld a, [$ffb5]
+	ld [Buffer3], a
+	ld a, [hQuotient + 1]
 	sbc [hl]
 	dec hl
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
@@ -641,7 +656,8 @@
 	sbc [hl]
 	ld [Buffer1], a ; wd1ea (aliases: MagikarpLength)
 	ret
-.asm_4e111
+
+.AlreadyAtMaxLevel
 	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
 	xor a
 rept 2
@@ -651,39 +667,39 @@
 	ret
 ; 4e119 (13:6119)
 
-String_4e119: ; 4e119
+.Status_Type: ; 4e119
 	db   "STATUS/"
 	next "TYPE/@"
 ; 4e127
 
-String_4e127: ; 4e127
+.OK_str: ; 4e127
 	db "OK @"
 ; 4e12b
 
-String_4e12b: ; 4e12b
+.ExpPointStr: ; 4e12b
 	db "EXP POINTS@"
 ; 4e136
 
-String_4e136: ; 4e136
+.LevelUpStr: ; 4e136
 	db "LEVEL UP@"
 ; 4e13f
 
-String_4e13f: ; 4e13f
+.ToStr: ; 4e13f
 	db "TO@"
 ; 4e142
 
-String_4e142: ; 4e142
+.PkrsStr: ; 4e142
 	db "#RUS@"
 ; 4e147
 
-Function4e147: ; 4e147 (13:6147)
-	ld de, String_4e1a0
+.GreenPage: ; 4e147 (13:6147)
+	ld de, .Item
 	hlcoord 0, 8
 	call PlaceString
-	call Function4e189
+	call .GetItemName
 	hlcoord 8, 8
 	call PlaceString
-	ld de, String_4e1a9
+	ld de, .Move
 	hlcoord 0, 10
 	call PlaceString
 	ld hl, TempMonMoves
@@ -695,18 +711,18 @@
 	ld [Buffer1], a
 	predef ListMoves
 	hlcoord 12, 11
-	ld a, $28
+	ld a, SCREEN_WIDTH * 2
 	ld [Buffer1], a
-	predef Function50c50
+	predef ListMovePP
 	ret
 
-Function4e189: ; 4e189 (13:6189)
-	ld de, String_4e1a5
+.GetItemName: ; 4e189 (13:6189)
+	ld de, .ThreeDashes
 	ld a, [TempMonItem]
 	and a
 	ret z
 	ld b, a
-	callba Function28771
+	callba TimeCapsule_ReplaceTeruSama
 	ld a, b
 	ld [wd265], a
 	call GetItemName
@@ -713,35 +729,35 @@
 	ret
 ; 4e1a0 (13:61a0)
 
-String_4e1a0: ; 4e1a0
+.Item: ; 4e1a0
 	db "ITEM@"
 ; 4e1a5
 
-String_4e1a5: ; 4e1a5
+.ThreeDashes: ; 4e1a5
 	db "---@"
 ; 4e1a9
 
-String_4e1a9: ; 4e1a9
+.Move: ; 4e1a9
 	db "MOVE@"
 ; 4e1ae
 
-Function4e1ae: ; 4e1ae (13:61ae)
-	call Function4e1cc
+.BluePage: ; 4e1ae (13:61ae)
+	call .PlaceOTInfo
 	hlcoord 10, 8
-	ld de, $14
-	ld b, $a
+	ld de, SCREEN_WIDTH
+	ld b, 10
 	ld a, $31
-.asm_4e1bb
+.BluePageVerticalDivider
 	ld [hl], a
 	add hl, de
 	dec b
-	jr nz, .asm_4e1bb
+	jr nz, .BluePageVerticalDivider
 	hlcoord 11, 8
-	ld bc, $6
+	ld bc, 6
 	predef PrintTempMonStats
 	ret
 
-Function4e1cc: ; 4e1cc (13:61cc)
+.PlaceOTInfo: ; 4e1cc (13:61cc)
 	ld de, IDNoString
 	hlcoord 0, 9
 	call PlaceString
@@ -752,37 +768,37 @@
 	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
 	ld de, TempMonID
 	call PrintNum
-	ld hl, Unknown_4e216
-	call Function4e528
-	call Function4e505
+	ld hl, .OTNamePointers
+	call GetNicknamePointer
+	call CopyNickname
 	callba CheckNickErrors
 	hlcoord 2, 13
 	call PlaceString
 	ld a, [TempMonCaughtGender]
 	and a
-	jr z, .asm_4e215
+	jr z, .done
 	cp $7f
-	jr z, .asm_4e215
+	jr z, .done
 	and $80
 	ld a, "♂"
-	jr z, .asm_4e211
+	jr z, .got_gender
 	ld a, "♀"
-.asm_4e211
+.got_gender
 	hlcoord 9, 13
 	ld [hl], a
-.asm_4e215
+.done
 	ret
 ; 4e216 (13:6216)
 
-Unknown_4e216: ; 4e216
+.OTNamePointers: ; 4e216
 	dw PartyMonOT
 	dw OTPartyMonOT
 	dw sBoxMonOT
-	dw wd00d
+	dw wBufferMonOT
 ; 4e21e
 
 IDNoString: ; 4e21e
-	db $73, "№.@"
+	db "<ID>№.@"
 
 OTString: ; 4e222
 	db "OT/@"
@@ -789,64 +805,69 @@
 ; 4e226
 
 
-Function4e226: ; 4e226 (13:6226)
+StatsScreen_PlaceFrontpic: ; 4e226 (13:6226)
 	ld hl, TempMonDVs
 	predef GetUnownLetter
-	call Function4e2ad
-	jr c, .asm_4e238
+	call StatsScreen_GetAnimationParam
+	jr c, .egg
 	and a
-	jr z, .asm_4e23f
-	jr .asm_4e246
-.asm_4e238
-	call Function4e271
+	jr z, .no_cry
+	jr .cry
+
+.egg
+	call .AnimateEgg
 	call SetPalettes
 	ret
-.asm_4e23f
-	call Function4e253
+
+.no_cry
+	call .AnimateMon
 	call SetPalettes
 	ret
-.asm_4e246
+
+.cry
 	call SetPalettes
-	call Function4e253
+	call .AnimateMon
 	ld a, [CurPartySpecies]
 	call PlayCry2
 	ret
 
-Function4e253: ; 4e253 (13:6253)
+.AnimateMon: ; 4e253 (13:6253)
 	ld hl, wcf64
 	set 5, [hl]
 	ld a, [CurPartySpecies]
 	cp UNOWN
-	jr z, .asm_4e266
+	jr z, .unown
 	hlcoord 0, 0
 	call PrepMonFrontpic
 	ret
-.asm_4e266
+
+.unown
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	hlcoord 0, 0
 	call _PrepMonFrontpic
 	ret
 
-Function4e271: ; 4e271 (13:6271)
+.AnimateEgg: ; 4e271 (13:6271)
 	ld a, [CurPartySpecies]
 	cp UNOWN
-	jr z, .asm_4e281
-	ld a, $1
-	ld [wc2c6], a
-	call Function4e289
+	jr z, .unownegg
+	ld a, TRUE
+	ld [wBoxAlignment], a
+	call .get_animation
 	ret
-.asm_4e281
+
+.unownegg
 	xor a
-	ld [wc2c6], a
-	call Function4e289
+	ld [wBoxAlignment], a
+	call .get_animation
 	ret
 
-Function4e289: ; 4e289 (13:6289)
+.get_animation: ; 4e289 (13:6289)
 	ld a, [CurPartySpecies]
 	call IsAPokemon
 	ret c
-	call Function4e307
+	call StatsScreen_LoadTextBoxSpaceGFX
 	ld de, VTiles2 tile $00
 	predef FrontpicPredef
 	hlcoord 0, 0
@@ -857,7 +878,7 @@
 	set 6, [hl]
 	ret
 
-Function4e2ad: ; 4e2ad (13:62ad)
+StatsScreen_GetAnimationParam: ; 4e2ad (13:62ad)
 	ld a, [MonType]
 	ld hl, .Jumptable
 	rst JumpTable
@@ -864,14 +885,14 @@
 	ret
 
 .Jumptable: ; 4e2b5 (13:62b5)
-	dw Function4e2bf
-	dw Function4e2cf
-	dw Function4e2d1
-	dw Function4e2ed
-	dw Function4e301
+	dw .PartyMon
+	dw .OTPartyMon
+	dw .BoxMon
+	dw .Tempmon
+	dw .Wildmon
 
 
-Function4e2bf: ; 4e2bf (13:62bf)
+.PartyMon: ; 4e2bf (13:62bf)
 	ld a, [CurPartyMon]
 	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
 	ld bc, PARTYMON_STRUCT_LENGTH
@@ -878,13 +899,13 @@
 	call AddNTimes
 	ld b, h
 	ld c, l
-	jr Function4e2f2
+	jr .CheckEggFaintedFrzSlp
 
-Function4e2cf: ; 4e2cf (13:62cf)
+.OTPartyMon: ; 4e2cf (13:62cf)
 	xor a
 	ret
 
-Function4e2d1: ; 4e2d1 (13:62d1)
+.BoxMon: ; 4e2d1 (13:62d1)
 	ld hl, sBoxMons
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
@@ -893,36 +914,37 @@
 	ld c, l
 	ld a, BANK(sBoxMons)
 	call GetSRAMBank
-	call Function4e2f2
+	call .CheckEggFaintedFrzSlp
 	push af
 	call CloseSRAM
 	pop af
 	ret
 
-Function4e2ed: ; 4e2ed (13:62ed)
+.Tempmon: ; 4e2ed (13:62ed)
 	ld bc, TempMonSpecies ; wd10e (aliases: TempMon)
-	jr Function4e2f2 ; utterly pointless
+	jr .CheckEggFaintedFrzSlp ; utterly pointless
 
-Function4e2f2: ; 4e2f2 (13:62f2)
+.CheckEggFaintedFrzSlp: ; 4e2f2 (13:62f2)
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .egg
 	call CheckFaintedFrzSlp
-	jr c, Function4e305
+	jr c, .FaintedFrzSlp
 .egg
 	xor a
 	scf
 	ret
 
-Function4e301: ; 4e301 (13:6301)
+.Wildmon: ; 4e301 (13:6301)
 	ld a, $1
 	and a
 	ret
-Function4e305: ; 4e305 (13:6305)
+
+.FaintedFrzSlp: ; 4e305 (13:6305)
 	xor a
 	ret
 
-Function4e307: ; 4e307 (13:6307)
+StatsScreen_LoadTextBoxSpaceGFX: ; 4e307 (13:6307)
 	nop
 	push hl
 	push de
@@ -956,9 +978,9 @@
 	ld [hBGMapMode], a
 	ld hl, wcda1
 	call SetHPPal
-	ld b, SCGB_03
+	ld b, SCGB_STATS_SCREEN_HP_PALS
 	call GetSGBLayout
-	call Function4df8f
+	call StatsScreen_PlaceHorizontalDivider
 	ld de, EggString
 	hlcoord 8, 1
 	call PlaceString
@@ -995,7 +1017,7 @@
 	hlcoord 0, 0
 	call PrepMonFrontpic
 	callba Function10402d
-	call Function4e497
+	call StatsScreen_AnimateEgg
 
 	ld a, [TempMonHappiness]
 	cp 6
@@ -1034,22 +1056,23 @@
 ; 0x4e497
 
 
-Function4e497: ; 4e497 (13:6497)
-	call Function4e2ad
+StatsScreen_AnimateEgg: ; 4e497 (13:6497)
+	call StatsScreen_GetAnimationParam
 	ret nc
 	ld a, [TempMonHappiness]
 	ld e, $7
-	cp $6
-	jr c, .asm_4e4ab
+	cp 6
+	jr c, .animate
 	ld e, $8
-	cp $b
-	jr c, .asm_4e4ab
+	cp 11
+	jr c, .animate
 	ret
-.asm_4e4ab
+
+.animate
 	push de
 	ld a, $1
-	ld [wc2c6], a
-	call Function4e307
+	ld [wBoxAlignment], a
+	call StatsScreen_LoadTextBoxSpaceGFX
 	ld de, VTiles2 tile $00
 	predef FrontpicPredef
 	pop de
@@ -1060,7 +1083,7 @@
 	set 6, [hl]
 	ret
 
-Function4e4cd: ; 4e4cd (13:64cd)
+StatsScreen_LoadPageIndicators: ; 4e4cd (13:64cd)
 	hlcoord 13, 5
 	ld a, $36
 	call .load_square
@@ -1092,7 +1115,7 @@
 	pop bc
 	ret
 
-Function4e505: ; 4e505 (13:6505)
+CopyNickname: ; 4e505 (13:6505)
 	ld de, StringBuffer1
 	ld bc, PKMN_NAME_LENGTH
 	jr .okay ; uuterly pointless
@@ -1114,7 +1137,7 @@
 	pop de
 	ret
 
-Function4e528: ; 4e528 (13:6528)
+GetNicknamePointer: ; 4e528 (13:6528)
 	ld a, [MonType]
 	add a
 	ld c, a
@@ -1124,7 +1147,7 @@
 	ld h, [hl]
 	ld l, a
 	ld a, [MonType]
-	cp $3
+	cp BREEDMON
 	ret z
 	ld a, [CurPartyMon]
 	jp SkipNames
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -55,7 +55,7 @@
 PokeCenterNurseScript:
 ; EVENT_WELCOMED_TO_POKECOM_CENTER is never set
 
-	loadfont
+	opentext
 	checkmorn
 	iftrue .morn
 	checkday
@@ -68,11 +68,11 @@
 	checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
 	iftrue .morn_comcenter
 	farwritetext NurseMornText
-	keeptextopen
+	buttonsound
 	jump .ok
 .morn_comcenter
 	farwritetext PokeComNurseMornText
-	keeptextopen
+	buttonsound
 	jump .ok
 
 .day
@@ -79,11 +79,11 @@
 	checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
 	iftrue .day_comcenter
 	farwritetext NurseDayText
-	keeptextopen
+	buttonsound
 	jump .ok
 .day_comcenter
 	farwritetext PokeComNurseDayText
-	keeptextopen
+	buttonsound
 	jump .ok
 
 .nite
@@ -90,11 +90,11 @@
 	checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
 	iftrue .nite_comcenter
 	farwritetext NurseNiteText
-	keeptextopen
+	buttonsound
 	jump .ok
 .nite_comcenter
 	farwritetext PokeComNurseNiteText
-	keeptextopen
+	buttonsound
 	jump .ok
 
 .ok
@@ -138,8 +138,8 @@
 	spriteface LAST_TALKED, DOWN
 	pause 10
 
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .pokerus
@@ -146,16 +146,15 @@
 	; already cleared earlier in the script
 	checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
 	iftrue .pokerus_comcenter
-
 	farwritetext NursePokerusText
+	waitbutton
 	closetext
-	loadmovesprites
 	jump .pokerus_done
 
 .pokerus_comcenter
 	farwritetext PokeComNursePokerusText
+	waitbutton
 	closetext
-	loadmovesprites
 
 .pokerus_done
 	setflag ENGINE_POKERUS
@@ -181,11 +180,11 @@
 	farjumptext MerchandiseShelfText
 
 TownMapScript:
-	loadfont
+	opentext
 	farwritetext TownMapText
-	closetext
+	waitbutton
 	special Special_TownMap
-	loadmovesprites
+	closetext
 	end
 
 WindowScript:
@@ -192,10 +191,10 @@
 	farjumptext WindowText
 
 TVScript:
-	loadfont
+	opentext
 	farwritetext TVText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 HomepageScript:
@@ -202,18 +201,18 @@
 	farjumptext HomepageText
 
 Radio1Script:
-	loadfont
-	writebyte $0
+	opentext
+	writebyte MAPRADIO_POKEMON_CHANNEL
 	special MapRadio
-	loadmovesprites
+	closetext
 	end
 
 Radio2Script:
 ; Lucky Channel
-	loadfont
-	writebyte $4
+	opentext
+	writebyte MAPRADIO_LUCKY_CHANNEL
 	special MapRadio
-	loadmovesprites
+	closetext
 	end
 
 TrashCanScript: ; 0xbc1a5
@@ -220,9 +219,9 @@
 	farjumptext TrashCanText
 
 PCScript:
-	loadfont
+	opentext
 	special PokemonCenterPC
-	loadmovesprites
+	closetext
 	end
 
 ElevatorButtonScript:
@@ -317,9 +316,9 @@
 	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
 	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
-	loadfont
+	opentext
 	farwritetext ContestResults_ReadyToJudgeText
-	closetext
+	waitbutton
 	special BugContestJudging
 	RAM2MEM $0
 	if_equal 1, BugContestResults_FirstPlace
@@ -326,26 +325,26 @@
 	if_equal 2, BugContestResults_SecondPlace
 	if_equal 3, BugContestResults_ThirdPlace
 	farwritetext ContestResults_ConsolationPrizeText
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	verbosegiveitem BERRY
 	iffalse BugContestResults_NoRoomForBerry
 
 BugContestResults_DidNotWin
 	farwritetext ContestResults_DidNotWinText
-	keeptextopen
+	buttonsound
 	jump BugContestResults_FinishUp
 ; 0xbc2b1
 
 BugContestResults_ReturnAfterWinnersPrize ; 0xbc2b1
 	farwritetext ContestResults_JoinUsNextTimeText
-	keeptextopen
+	buttonsound
 
 BugContestResults_FinishUp
 	checkevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	iffalse BugContestResults_DidNotLeaveMons
 	farwritetext ContestResults_ReturnPartyText
-	closetext
+	waitbutton
 	special ContestReturnMons
 BugContestResults_DidNotLeaveMons
 	special CheckPartyFullAfterContest
@@ -352,9 +351,9 @@
 	if_equal $0, BugContestResults_CleanUp
 	if_equal $2, BugContestResults_CleanUp
 	farwritetext ContestResults_PartyFullText
-	closetext
+	waitbutton
 BugContestResults_CleanUp
-	loadmovesprites
+	closetext
 	dotrigger $0
 	domaptrigger ROUTE_35_NATIONAL_PARK_GATE, $0
 	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
@@ -386,7 +385,7 @@
 	setevent EVENT_GAVE_KURT_APRICORNS
 	itemtotext SUN_STONE, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
-	closetext
+	waitbutton
 	verbosegiveitem SUN_STONE
 	iffalse BugContestResults_NoRoomForSunStone
 	jump BugContestResults_ReturnAfterWinnersPrize
@@ -395,7 +394,7 @@
 BugContestResults_SecondPlace ; 0xbc332
 	itemtotext EVERSTONE, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
-	closetext
+	waitbutton
 	verbosegiveitem EVERSTONE
 	iffalse BugContestResults_NoRoomForEverstone
 	jump BugContestResults_ReturnAfterWinnersPrize
@@ -404,7 +403,7 @@
 BugContestResults_ThirdPlace ; 0xbc343
 	itemtotext GOLD_BERRY, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
-	closetext
+	waitbutton
 	verbosegiveitem GOLD_BERRY
 	iffalse BugContestResults_NoRoomForGoldBerry
 	jump BugContestResults_ReturnAfterWinnersPrize
@@ -412,7 +411,7 @@
 
 BugContestResults_NoRoomForSunStone ; 0xbc354
 	farwritetext BugContestPrizeNoRoomText
-	keeptextopen
+	buttonsound
 	setevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc35f
@@ -419,7 +418,7 @@
 
 BugContestResults_NoRoomForEverstone ; 0xbc35f
 	farwritetext BugContestPrizeNoRoomText
-	keeptextopen
+	buttonsound
 	setevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc36a
@@ -426,7 +425,7 @@
 
 BugContestResults_NoRoomForGoldBerry ; 0xbc36a
 	farwritetext BugContestPrizeNoRoomText
-	keeptextopen
+	buttonsound
 	setevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc375
@@ -433,7 +432,7 @@
 
 BugContestResults_NoRoomForBerry ; 0xbc375
 	farwritetext BugContestPrizeNoRoomText
-	keeptextopen
+	buttonsound
 	setevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	jump BugContestResults_DidNotWin
 ; 0xbc380
@@ -793,8 +792,8 @@
 RegisteredNumberMScript:
 	farwritetext RegisteredNumber1Text
 	playsound SFX_REGISTER_PHONE_NUMBER
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	end
 
 NumberAcceptedMScript:
@@ -822,103 +821,103 @@
 
 .Jack
 	farwritetext JackNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Huey
 	farwritetext HueyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gaven
 	farwritetext GavenNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Jose
 	farwritetext JoseNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Joey
 	farwritetext JoeyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wade
 	farwritetext WadeNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Ralph
 	farwritetext RalphNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Anthony
 	farwritetext AnthonyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Todd
 	farwritetext ToddNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Irwin
 	farwritetext IrwinNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Arnie
 	farwritetext ArnieNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Alan
 	farwritetext AlanNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Chad
 	farwritetext ChadNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Derek
 	farwritetext DerekNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tully
 	farwritetext TullyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Brent
 	farwritetext BrentNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Vance
 	farwritetext VanceNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wilton
 	farwritetext WiltonNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Kenji
 	farwritetext KenjiNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Parry
 	farwritetext ParryNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 NumberDeclinedMScript:
@@ -946,103 +945,103 @@
 
 .Jack
 	farwritetext JackNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Huey
 	farwritetext HueyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gaven
 	farwritetext GavenNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Jose
 	farwritetext JoseNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Joey
 	farwritetext JoeyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wade
 	farwritetext WadeNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Ralph
 	farwritetext RalphNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Anthony
 	farwritetext AnthonyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Todd
 	farwritetext ToddNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Irwin
 	farwritetext IrwinNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Arnie
 	farwritetext ArnieNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Alan
 	farwritetext AlanNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Chad
 	farwritetext ChadNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Derek
 	farwritetext DerekNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tully
 	farwritetext TullyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Brent
 	farwritetext BrentNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Vance
 	farwritetext VanceNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wilton
 	farwritetext WiltonNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Kenji
 	farwritetext KenjiNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Parry
 	farwritetext ParryNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PhoneFullMScript:
@@ -1070,103 +1069,103 @@
 
 .Jack
 	farwritetext JackPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Huey
 	farwritetext HueyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gaven
 	farwritetext GavenPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Jose
 	farwritetext JosePhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Joey
 	farwritetext JoeyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wade
 	farwritetext WadePhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Ralph
 	farwritetext RalphPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Anthony
 	farwritetext AnthonyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Todd
 	farwritetext ToddPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Irwin
 	farwritetext IrwinPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Arnie
 	farwritetext ArniePhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Alan
 	farwritetext AlanPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Chad
 	farwritetext ChadPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Derek
 	farwritetext DerekPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tully
 	farwritetext TullyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Brent
 	farwritetext BrentPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Vance
 	farwritetext VancePhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wilton
 	farwritetext WiltonPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Kenji
 	farwritetext KenjiPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Parry
 	farwritetext ParryPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RematchMScript:
@@ -1191,88 +1190,88 @@
 
 .Jack
 	farwritetext JackRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Huey
 	farwritetext HueyRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gaven
 	farwritetext GavenRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Jose
 	farwritetext JoseRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Joey
 	farwritetext JoeyRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wade
 	farwritetext WadeRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Ralph
 	farwritetext RalphRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Anthony
 	farwritetext AnthonyRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Todd
 	farwritetext ToddRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Arnie
 	farwritetext ArnieRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Alan
 	farwritetext AlanRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Chad
 	farwritetext ChadRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tully
 	farwritetext TullyRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Brent
 	farwritetext BrentRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Vance
 	farwritetext VanceRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wilton
 	farwritetext WiltonRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Parry
 	farwritetext ParryRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GiftMScript:
@@ -1287,31 +1286,31 @@
 
 .Jose
 	farwritetext JoseGiftText
-	keeptextopen
+	buttonsound
 	end
 .Wade
 	farwritetext WadeGiftText
-	keeptextopen
+	buttonsound
 	end
 .Alan
 	farwritetext AlanGiftText
-	keeptextopen
+	buttonsound
 	end
 .Derek
 	farwritetext DerekGiftText
-	keeptextopen
+	buttonsound
 	end
 .Tully
 	farwritetext TullyGiftText
-	keeptextopen
+	buttonsound
 	end
 .Wilton
 	farwritetext WiltonGiftText
-	keeptextopen
+	buttonsound
 	end
 .Kenji
 	farwritetext KenjiGiftText
-	keeptextopen
+	buttonsound
 	end
 
 PackFullMScript:
@@ -1330,62 +1329,62 @@
 
 .Huey
 	farwritetext HueyPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Jose
 	farwritetext JosePackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Joey
 	farwritetext JoeyPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wade
 	farwritetext WadePackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Alan
 	farwritetext AlanPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Derek
 	farwritetext DerekPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tully
 	farwritetext TullyPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Vance
 	farwritetext VancePackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Wilton
 	farwritetext WiltonPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Kenji
 	farwritetext KenjiPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Parry
 	farwritetext ParryPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RematchGiftMScript:
-	loadfont
+	opentext
 	checkcode VAR_CALLERID
 	if_equal PHONE_SAILOR_HUEY, .Huey
 	if_equal PHONE_YOUNGSTER_JOEY, .Joey
@@ -1394,19 +1393,19 @@
 
 .Huey
 	farwritetext HueyRematchGiftText
-	keeptextopen
+	buttonsound
 	end
 .Joey
 	farwritetext JoeyRematchGiftText
-	keeptextopen
+	buttonsound
 	end
 .Vance
 	farwritetext VanceRematchGiftText
-	keeptextopen
+	buttonsound
 	end
 .Parry
 	farwritetext ParryRematchGiftText
-	keeptextopen
+	buttonsound
 	end
 
 AskNumber1FScript:
@@ -1484,8 +1483,8 @@
 RegisteredNumberFScript:
 	farwritetext RegisteredNumber2Text
 	playsound SFX_REGISTER_PHONE_NUMBER
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	end
 
 NumberAcceptedFScript: ; 0xbcbd3
@@ -1501,43 +1500,43 @@
 
 .Beverly
 	farwritetext BeverlyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Beth
 	farwritetext BethNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Reena
 	farwritetext ReenaNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Liz
 	farwritetext LizNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gina
 	farwritetext GinaNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Dana
 	farwritetext DanaNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tiffany
 	farwritetext TiffanyNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Erin
 	farwritetext ErinNumberAcceptedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 NumberDeclinedFScript:
@@ -1553,43 +1552,43 @@
 
 .Beverly
 	farwritetext BeverlyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Beth
 	farwritetext BethNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Reena
 	farwritetext ReenaNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Liz
 	farwritetext LizNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gina
 	farwritetext GinaNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Dana
 	farwritetext DanaNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tiffany
 	farwritetext TiffanyNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Erin
 	farwritetext ErinNumberDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PhoneFullFScript:
@@ -1605,43 +1604,43 @@
 
 .Beverly
 	farwritetext BeverlyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Beth
 	farwritetext BethPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Reena
 	farwritetext ReenaPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Liz
 	farwritetext LizPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gina
 	farwritetext GinaPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Dana
 	farwritetext DanaPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tiffany
 	farwritetext TiffanyPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Erin
 	farwritetext ErinPhoneFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RematchFScript:
@@ -1656,38 +1655,38 @@
 
 .Beth
 	farwritetext BethRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Reena
 	farwritetext ReenaRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Liz
 	farwritetext LizRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gina
 	farwritetext GinaRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Dana
 	farwritetext DanaRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tiffany
 	farwritetext TiffanyRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Erin
 	farwritetext ErinRematchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GiftFScript:
@@ -1699,19 +1698,19 @@
 
 .Beverly
 	farwritetext BeverlyGiftText
-	keeptextopen
+	buttonsound
 	end
 .Gina
 	farwritetext GinaGiftText
-	keeptextopen
+	buttonsound
 	end
 .Dana
 	farwritetext DanaGiftText
-	keeptextopen
+	buttonsound
 	end
 .Tiffany
 	farwritetext TiffanyGiftText
-	keeptextopen
+	buttonsound
 	end
 
 PackFullFScript:
@@ -1724,28 +1723,28 @@
 
 .Beverly
 	farwritetext BeverlyPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Gina
 	farwritetext GinaPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Dana
 	farwritetext DanaPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Tiffany
 	farwritetext TiffanyPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .Erin
 	farwritetext ErinPackFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RematchGiftFScript:
@@ -1753,55 +1752,55 @@
 	if_equal PHONE_PICNICKER_ERIN, .Erin
 
 .Erin
-	loadfont
+	opentext
 	farwritetext ErinRematchGiftText
-	keeptextopen
+	buttonsound
 	end
 
 GymStatue1Script:
 	mapnametotext $0
-	loadfont
+	opentext
 	farwritetext GymStatue_CityGymText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymStatue2Script:
 	mapnametotext $0
-	loadfont
+	opentext
 	farwritetext GymStatue_CityGymText
-	keeptextopen
+	buttonsound
 	farwritetext GymStatue_WinningTrainersText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ReceiveItemScript: ; 0xbcdb9
-	waitbutton
+	waitsfx
 	farwritetext ReceivedItemText
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	end
 ; 0xbcdc3
 
 ReceiveTogepiEggScript: ; 0xbcdc3
-	waitbutton
+	waitsfx
 	farwritetext ReceivedItemText
 	playsound SFX_GET_EGG_FROM_DAYCARE_LADY
-	waitbutton
+	waitsfx
 	end
 ; 0xbcdcd
 
 GameCornerCoinVendorScript: ; 0xbcdcd
 	faceplayer
-	loadfont
+	opentext
 	farwritetext CoinVendor_WelcomeText
-	keeptextopen
+	buttonsound
 	checkitem COIN_CASE
 	iftrue CoinVendor_IntroScript
 	farwritetext CoinVendor_NoCoinCaseText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xbcde0
 
@@ -1808,75 +1807,74 @@
 CoinVendor_IntroScript: ; 0xbcde0
 	farwritetext CoinVendor_IntroText
 
-CoinVendor_SellCoinsMenuScript: ; 0xbcde4
+.loop: ; 0xbcde4
 	special Special_DisplayMoneyAndCoinBalance
-	loadmenudata CoinVendor_MenuDataHeader
-	interpretmenu2
-	writebackup
-	if_equal $1, CoinVendor_Buy50CoinsScript
-	if_equal $2, CoinVendor_Buy500CoinsScript
-	jump CoinVendor_CancelScript
+	loadmenudata .MenuDataHeader
+	verticalmenu
+	closewindow
+	if_equal $1, .Buy50
+	if_equal $2, .Buy500
+	jump .Cancel
 ; 0xbcdf7
 
-CoinVendor_Buy50CoinsScript: ; 0xbcdf7
+.Buy50: ; 0xbcdf7
 	checkcoins 9949
-	if_equal $0, CoinVendor_CoinCaseFullScript
+	if_equal $0, .CoinCaseFull
 	checkmoney $0, 1000
-	if_equal $2, CoinVendor_NotEnoughMoneyScript
+	if_equal $2, .NotEnoughMoney
 	givecoins 50
 	takemoney $0, 1000
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
 	farwritetext CoinVendor_Buy50CoinsText
-	closetext
-	jump CoinVendor_SellCoinsMenuScript
+	waitbutton
+	jump .loop
 ; 0xbce1b
 
-CoinVendor_Buy500CoinsScript: ; 0xbce1b
+.Buy500: ; 0xbce1b
 	checkcoins 9499
-	if_equal $0, CoinVendor_CoinCaseFullScript
+	if_equal $0, .CoinCaseFull
 	checkmoney $0, 10000
-	if_equal $2, CoinVendor_NotEnoughMoneyScript
+	if_equal $2, .NotEnoughMoney
 	givecoins 500
 	takemoney $0, 10000
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
 	farwritetext CoinVendor_Buy500CoinsText
-	closetext
-	jump CoinVendor_SellCoinsMenuScript
+	waitbutton
+	jump .loop
 ; 0xbce3f
 
-CoinVendor_NotEnoughMoneyScript: ; 0xbce3f
+.NotEnoughMoney: ; 0xbce3f
 	farwritetext CoinVendor_NotEnoughMoneyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xbce46
 
-CoinVendor_CoinCaseFullScript: ; 0xbce46
+.CoinCaseFull: ; 0xbce46
 	farwritetext CoinVendor_CoinCaseFullText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xbce4d
 
-CoinVendor_CancelScript: ; 0xbce4d
+.Cancel: ; 0xbce4d
 	farwritetext CoinVendor_CancelText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xbce54
 
 
-CoinVendor_MenuDataHeader: ; 0xbce54
+.MenuDataHeader
 	db $40 ; flags
 	db 04, 00 ; start coords
 	db 11, 15 ; end coords
-	dw CoinVendor_MenuData2
+	dw .MenuData2
 	db 1 ; default option
-; 0xbce5c
 
-CoinVendor_MenuData2: ; 0xbce5c
+.MenuData2
 	db $80 ; flags
 	db 3 ; items
 	db " 50 :  ¥1000@"
@@ -1887,25 +1885,25 @@
 
 HappinessCheckScript:
 	faceplayer
-	loadfont
+	opentext
 	special GetFirstPokemonHappiness
 	if_less_than 50, .Unhappy
 	if_less_than 150, .KindaHappy
 	farwritetext HappinessText3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .KindaHappy
 	farwritetext HappinessText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Unhappy
 	farwritetext HappinessText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Movement_ContestResults_WalkAfterWarp: ; bcea1
--- /dev/null
+++ b/engine/switch_items.asm
@@ -1,0 +1,275 @@
+SwitchItemsInBag: ; 2490c (9:490c)
+	ld a, [wSwitchItem]
+	and a
+	jr z, .init
+	ld b, a
+	ld a, [wScrollingMenuCursorPosition]
+	inc a
+	cp b
+	jr z, .trivial
+	ld a, [wScrollingMenuCursorPosition]
+	call ItemSwitch_GetNthItem
+	ld a, [hl]
+	cp -1
+	ret z
+	ld a, [wSwitchItem]
+	dec a
+	ld [wSwitchItem], a
+	call Function249a7
+	jp c, Function249d1
+	ld a, [wScrollingMenuCursorPosition]
+	ld c, a
+	ld a, [wSwitchItem]
+	cp c
+	jr c, .asm_2497a
+	jr .asm_2494a
+
+.init
+	ld a, [wScrollingMenuCursorPosition]
+	inc a
+	ld [wSwitchItem], a
+	ret
+
+.trivial
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+.asm_2494a
+	ld a, [wSwitchItem]
+	call Function24a40
+	ld a, [wScrollingMenuCursorPosition]
+	ld d, a
+	ld a, [wSwitchItem]
+	ld e, a
+	call Function24a6c
+	push bc
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	dec hl
+	push hl
+	call ItemSwitch_ConvertSpacingToDW
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	pop bc
+	call Function24aab
+	ld a, [wScrollingMenuCursorPosition]
+	call Function24a4d
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+.asm_2497a
+	ld a, [wSwitchItem]
+	call Function24a40
+	ld a, [wScrollingMenuCursorPosition]
+	ld d, a
+	ld a, [wSwitchItem]
+	ld e, a
+	call Function24a6c
+	push bc
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	ld d, h
+	ld e, l
+	call ItemSwitch_ConvertSpacingToDW
+	add hl, bc
+	pop bc
+	call CopyBytes
+	ld a, [wScrollingMenuCursorPosition]
+	call Function24a4d
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+Function249a7: ; 249a7 (9:49a7)
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	ld d, h
+	ld e, l
+	ld a, [wScrollingMenuCursorPosition]
+	call ItemSwitch_GetNthItem
+	ld a, [de]
+	cp [hl]
+	jr nz, .asm_249cd
+	ld a, [wScrollingMenuCursorPosition]
+	call Function24a97
+	cp 99
+	jr z, .asm_249cd
+	ld a, [wSwitchItem]
+	call Function24a97
+	cp 99
+	jr nz, .asm_249cf
+.asm_249cd
+	and a
+	ret
+
+.asm_249cf
+	scf
+	ret
+
+Function249d1: ; 249d1 (9:49d1)
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	inc hl
+	push hl
+	ld a, [wScrollingMenuCursorPosition]
+	call ItemSwitch_GetNthItem
+	inc hl
+	ld a, [hl]
+	pop hl
+	add [hl]
+	cp 100
+	jr c, .asm_24a01
+	sub 99
+	push af
+	ld a, [wScrollingMenuCursorPosition]
+	call ItemSwitch_GetNthItem
+	inc hl
+	ld [hl], 99
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	inc hl
+	pop af
+	ld [hl], a
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+.asm_24a01
+	push af
+	ld a, [wScrollingMenuCursorPosition]
+	call ItemSwitch_GetNthItem
+	inc hl
+	pop af
+	ld [hl], a
+	ld hl, wMenuData2_ItemsPointerAddr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wSwitchItem]
+	cp [hl]
+	jr nz, .asm_24a25
+	dec [hl]
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	ld [hl], $ff
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+.asm_24a25
+	dec [hl]
+	call ItemSwitch_ConvertSpacingToDW
+	push bc
+	ld a, [wSwitchItem]
+	call ItemSwitch_GetNthItem
+	pop bc
+	push hl
+	add hl, bc
+	pop de
+.asm_24a34
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp $ff
+	jr nz, .asm_24a34
+	xor a
+	ld [wSwitchItem], a
+	ret
+
+Function24a40: ; 24a40 (9:4a40)
+	call ItemSwitch_GetNthItem
+	ld de, wd002
+	call ItemSwitch_ConvertSpacingToDW
+	call CopyBytes
+	ret
+
+Function24a4d: ; 24a4d (9:4a4d)
+	call ItemSwitch_GetNthItem
+	ld d, h
+	ld e, l
+	ld hl, wd002
+	call ItemSwitch_ConvertSpacingToDW
+	call CopyBytes
+	ret
+
+ItemSwitch_GetNthItem: ; 24a5c (9:4a5c)
+	push af
+	call ItemSwitch_ConvertSpacingToDW
+	ld hl, wMenuData2_ItemsPointerAddr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	pop af
+	call AddNTimes
+	ret
+
+Function24a6c: ; 24a6c (9:4a6c)
+	push hl
+	call ItemSwitch_ConvertSpacingToDW
+	ld a, d
+	sub e
+	jr nc, .dont_negate
+	dec a
+	cpl
+.dont_negate
+	ld hl, 0
+	call AddNTimes
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+
+ItemSwitch_ConvertSpacingToDW: ; 24a80 (9:4a80)
+; This function is absolutely idiotic.
+	push hl
+	ld a, [wMenuData2_ScrollingMenuSpacing]
+	ld c, a
+	ld b, 0
+	ld hl, .spacing_dws
+rept 2
+	add hl, bc
+endr
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	pop hl
+	ret
+
+; 24a91 (9:4a91)
+
+.spacing_dws: ; 24a91
+	dw 0, 1, 2
+; 24a97
+
+Function24a97: ; 24a97 (9:4a97)
+	push af
+	call ItemSwitch_ConvertSpacingToDW
+	ld a, c
+	cp 2
+	jr nz, .not_2
+	pop af
+	call ItemSwitch_GetNthItem
+	inc hl
+	ld a, [hl]
+	ret
+
+.not_2
+	pop af
+	ld a, $1
+	ret
+
+Function24aab: ; 24aab (9:4aab)
+.loop
+	ld a, [hld]
+	ld [de], a
+	dec de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .loop
+	ret
--- /dev/null
+++ b/engine/tile_events.asm
@@ -1,0 +1,110 @@
+CheckWarpCollision:: ; 1499a
+; Is this tile a warp?
+	ld a, [PlayerNextTile]
+	cp $60
+	jr z, .warp
+	cp $68
+	jr z, .warp
+	and $f0
+	cp $70
+	jr z, .warp
+	and a
+	ret
+
+.warp
+	scf
+	ret
+; 149af
+
+CheckDirectionalWarp:: ; 149af
+; If this is a directional warp, clear carry (press the designated button to warp).
+; Else, set carry (immediate warp).
+	ld a, [PlayerNextTile]
+	cp $70 ; Warp on down
+	jr z, .not_warp
+	cp $76 ; Warp on left
+	jr z, .not_warp
+	cp $78 ; Warp on up
+	jr z, .not_warp
+	cp $7e ; Warp on right
+	jr z, .not_warp
+	scf
+	ret
+
+.not_warp
+	xor a
+	ret
+; 149c6
+
+CheckWarpFacingDown: ; 149c6
+	ld de, 1
+	ld hl, .blocks
+	ld a, [PlayerNextTile]
+	call IsInArray
+	ret
+; 149d3
+
+.blocks: ; 149d3
+	db $71 ; door
+	db $79
+	db $7a ; stairs
+	db $73
+	db $7b ; cave entrance
+	db $74
+	db $7c ; warp pad
+	db $75
+	db $7d
+	db -1
+; 149dd
+
+CheckGrassCollision:: ; 149dd
+	ld a, [PlayerNextTile]
+	ld hl, .blocks
+	ld de, 1
+	call IsInArray
+	ret
+; 149ea
+
+.blocks: ; 149ea
+	db $08
+	db $18 ; tall grass
+	db $14 ; tall grass
+	db $28
+	db $29
+	db $48
+	db $49
+	db $4a
+	db $4b
+	db $4c
+	db -1
+; 149f5
+
+CheckCutCollision: ; 149f5
+	ld a, c
+	ld hl, .blocks
+	ld de, 1
+	call IsInArray
+	ret
+; 14a00
+
+.blocks: ; 14a00
+	db $12 ; cut tree
+	db $1a ; cut tree
+	db $10 ; tall grass
+	db $18 ; tall grass
+	db $14 ; tall grass
+	db $1c ; tall grass
+	db -1
+; 14a07
+
+Function14a07:: ; 14a07
+	ld a, [PlayerNextTile]
+	ld de, $1f
+	cp $71 ; door
+	ret z
+	ld de, $13
+	cp $7c ; warp pad
+	ret z
+	ld de, $23
+	ret
+; 14a1a
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -118,7 +118,7 @@
 rept 4
 	ld [hli], a
 endr
-	ld hl, wdc58
+	ld hl, wKenjiBreakTimer
 	ld a, [hl]
 	and a
 	jr z, .RestartKenjiBreakCountdown
@@ -137,7 +137,7 @@
 	call Random
 	and 3
 	add 3
-	ld [wdc58], a
+	ld [wKenjiBreakTimer], a
 	ret
 ; 11490
 
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -1,6 +1,6 @@
 ; These functions seem to be related to backwards compatibility
 
-Functionfb57e: ; fb57e
+ValidateOTTrademon: ; fb57e
 	ld a, [wd003]
 	ld hl, OTPartyMon1Species
 	call GetPartyLocation
@@ -14,21 +14,21 @@
 	ld a, [hl]
 	pop hl
 	cp EGG
-	jr z, .asm_fb59c
+	jr z, .matching_or_egg
 	cp [hl]
-	jr nz, .asm_fb5db
+	jr nz, .abnormal
 
-.asm_fb59c
+.matching_or_egg
 	ld b, h
 	ld c, l
 	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
-	cp 101
-	jr nc, .asm_fb5db
+	cp MAX_LEVEL + 1
+	jr nc, .abnormal
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
-	jr nz, .asm_fb5d9
+	jr nz, .normal
 	ld hl, OTPartySpecies
 	ld a, [wd003]
 	ld c, a
@@ -39,29 +39,29 @@
 	; Magnemite and Magneton's types changed
 	; from Electric to Electric/Steel.
 	cp MAGNEMITE
-	jr z, .asm_fb5d9
+	jr z, .normal
 	cp MAGNETON
-	jr z, .asm_fb5d9
+	jr z, .normal
 
 	ld [CurSpecies], a
 	call GetBaseData
-	ld hl, wcbea
+	ld hl, wLinkOTPartyMonTypes
 rept 2
 	add hl, bc
 endr
 	ld a, [BaseType1]
 	cp [hl]
-	jr nz, .asm_fb5db
+	jr nz, .abnormal
 	inc hl
 	ld a, [BaseType2]
 	cp [hl]
-	jr nz, .asm_fb5db
+	jr nz, .abnormal
 
-.asm_fb5d9
+.normal
 	and a
 	ret
 
-.asm_fb5db
+.abnormal
 	scf
 	ret
 ; fb5dd
@@ -72,10 +72,10 @@
 	ld a, [PartyCount]
 	ld b, a
 	ld c, $0
-.asm_fb5e7
+.loop
 	ld a, c
 	cp d
-	jr z, .asm_fb5f8
+	jr z, .next
 	push bc
 	ld a, c
 	ld hl, PartyMon1HP
@@ -83,27 +83,27 @@
 	pop bc
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_fb60b
+	jr nz, .done
 
-.asm_fb5f8
+.next
 	inc c
 	dec b
-	jr nz, .asm_fb5e7
+	jr nz, .loop
 	ld a, [wd003]
 	ld hl, OTPartyMon1HP
 	call GetPartyLocation
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_fb60b
+	jr nz, .done
 	scf
 	ret
 
-.asm_fb60b
+.done
 	and a
 	ret
 ; fb60d
 
-Functionfb60d: ; fb60d
+PlaceTradePartnerNamesAndParty: ; fb60d
 	hlcoord 4, 0
 	ld de, PlayerName
 	call PlaceString
@@ -110,21 +110,20 @@
 	ld a, $14
 	ld [bc], a
 	hlcoord 4, 8
-	ld de, wd26b
+	ld de, OTPlayerName
 	call PlaceString
 	ld a, $14
 	ld [bc], a
 	hlcoord 7, 1
 	ld de, PartySpecies
-	call Functionfb634
+	call .PlaceSpeciesNames
 	hlcoord 7, 9
 	ld de, OTPartySpecies
-
-Functionfb634: ; fb634
+.PlaceSpeciesNames: ; fb634
 	ld c, $0
-.asm_fb636
+.loop
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	ld [wd265], a
 	push bc
@@ -143,7 +142,7 @@
 	add hl, bc
 	pop bc
 	inc c
-	jr .asm_fb636
+	jr .loop
 ; fb656
 
 KantoMonSpecials: ; fb656
@@ -355,11 +354,11 @@
 	ld [hSCX], a
 	xor a
 	ld [wPokedexStatus], a
-	callba Function41a7f
+	callba _NewPokedexEntry
 	call WaitPressAorB_BlinkCursor
 	ld a, $1
 	ld [wPokedexStatus], a
-	callba Function4424d
+	callba DisplayDexEntry
 	call WaitPressAorB_BlinkCursor
 	pop af
 	ld [wPokedexStatus], a
@@ -366,7 +365,7 @@
 	call MaxVolume
 	call RotateThreePalettesRight
 	ld a, [hSCX]
-	add $fb
+	add -5 ; 251 ; NUM_POKEMON
 	ld [hSCX], a
 	call Functionfb8c8
 	pop af
@@ -378,14 +377,14 @@
 	call ClearTileMap
 	call LoadFontsExtra
 	call LoadStandardFont
-	callba Function40ab2
-	call Function3200
+	callba Pokedex_PlaceFrontpicTopLeftCorner
+	call WaitBGMap2
 	callba GetEnemyMonDVs
 	ld a, [hli]
 	ld [TempMonDVs], a
 	ld a, [hl]
 	ld [TempMonDVs + 1], a
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call SetPalettes
 	ret
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -1,4 +1,4 @@
-Function8c001:: ; 8c001
+UpdateTimeOfDayPal:: ; 8c001
 	call UpdateTime
 	ld a, [TimeOfDay]
 	ld [CurTimeOfDay], a
@@ -12,7 +12,7 @@
 ; return carry if pals are changed
 
 ; forced pals?
-	ld hl, wd846
+	ld hl, wTimeOfDayPalFlags
 	bit 7, [hl]
 	jr nz, .dontchange
 
@@ -65,7 +65,7 @@
 
 
 ; update sgb pals
-	ld b, SCGB_09
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
 
 
@@ -125,7 +125,7 @@
 ; 8c084
 
 FadeOutPalettes:: ; 8c084
-	call Function8c0c1
+	call FillWhiteBGColor
 	ld c, $9
 	call GetTimePalFade
 	ld b, $4
@@ -134,7 +134,7 @@
 ; 8c092
 
 Special_BattleTowerFade: ; 8c092
-	call Function8c0c1
+	call FillWhiteBGColor
 	ld c, $9
 	call GetTimePalFade
 	ld b, $4
@@ -167,19 +167,20 @@
 ; 8c0c1
 
 
-Function8c0c1: ; 8c0c1
+FillWhiteBGColor: ; 8c0c1
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld hl, UnknBGPals
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	ld hl, UnknBGPals + 8
-	ld c, $6
-.asm_8c0d4
+	ld hl, UnknBGPals + 1 palettes
+	ld c, 6
+.loop
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -188,7 +189,8 @@
 	inc hl
 endr
 	dec c
-	jr nz, .asm_8c0d4
+	jr nz, .loop
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -198,9 +200,9 @@
 	db (\1 << 6) | (\2 << 4) | (\3 << 2) | \4
 ENDM
 
-Function8c0e5: ; 8c0e5
+ReplaceTimeOfDayPals: ; 8c0e5
 	ld hl, .BrightnessLevels
-	ld a, [wc2d0]
+	ld a, [wMapTimeOfDay]
 	cp $4 ; Dark cave, needs Flash
 	jr z, .DarkCave
 	and $7
@@ -210,18 +212,20 @@
 	adc h
 	ld h, a
 	ld a, [hl]
-	ld [wd847], a
+	ld [wTimeOfDayPalset], a
 	ret
+
 .DarkCave
 	ld a, [StatusFlags]
-	bit 2, a
+	bit 2, a ; Flash
 	jr nz, .UsedFlash
-	ld a, $ff ; 3, 3, 3, 3
-	ld [wd847], a
+	ld a, %11111111 ; 3, 3, 3, 3
+	ld [wTimeOfDayPalset], a
 	ret
+
 .UsedFlash
-	ld a, $aa ; 2, 2, 2, 2
-	ld [wd847], a
+	ld a, %10101010 ; 2, 2, 2, 2
+	ld [wTimeOfDayPalset], a
 	ret
 ; 8c10f (23:410f)
 
@@ -257,12 +261,12 @@
 	dw .DarknessPalette
 
 .MorningPalette
-	ld a, [wd847]
+	ld a, [wTimeOfDayPalset]
 	and %00000011 ; 0
 	ret
 
 .DayPalette
-	ld a, [wd847]
+	ld a, [wTimeOfDayPalset]
 	and %00001100 ; 1
 	srl a
 	srl a
@@ -269,13 +273,13 @@
 	ret
 
 .NitePalette
-	ld a, [wd847]
+	ld a, [wTimeOfDayPalset]
 	and %00110000 ; 2
 	swap a
 	ret
 
 .DarknessPalette
-	ld a, [wd847]
+	ld a, [wTimeOfDayPalset]
 	and %11000000 ; 3
 	rlca
 	rlca
@@ -304,7 +308,7 @@
 rept 3
 	inc hl
 endr
-	ld c, $2
+	ld c, 2
 	call DelayFrames
 	dec b
 	jr nz, .loop
@@ -317,7 +321,7 @@
 rept 3
 	dec hl
 endr
-	ld c, $2
+	ld c, 2
 	call DelayFrames
 	dec b
 	jr nz, .loop
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -38,7 +38,7 @@
 	call .ClearScreen
 	call WaitBGMap
 	call RotateFourPalettesRight
-	ld hl, UnknownText_0x90874
+	ld hl, Text_WokeUpOak
 	call PrintText
 	ld hl, wc608
 	ld bc, 50
@@ -48,7 +48,7 @@
 	ld [wInitHourBuffer], a
 
 .loop
-	ld hl, UnknownText_0x90879
+	ld hl, Text_WhatTimeIsIt
 	call PrintText
 	hlcoord 3, 7
 	ld b, 2
@@ -71,7 +71,7 @@
 	ld a, [wInitHourBuffer]
 	ld [StringBuffer2 + 1], a
 	call .ClearScreen
-	ld hl, UnknownText_0x90886
+	ld hl, Text_WhatHrs
 	call PrintText
 	call YesNoBox
 	jr nc, .HourIsSet
@@ -79,7 +79,7 @@
 	jr .loop
 
 .HourIsSet
-	ld hl, UnknownText_0x9089a
+	ld hl, Text_HowManyMinutes
 	call PrintText
 	hlcoord 11, 7
 	lb bc, 2, 7
@@ -101,7 +101,7 @@
 	ld a, [BattleMonNick + 5]
 	ld [StringBuffer2 + 2], a
 	call .ClearScreen
-	ld hl, UnknownText_0x908a4
+	ld hl, Text_WhoaMins
 	call PrintText
 	call YesNoBox
 	jr nc, .MinutesAreSet
@@ -109,7 +109,7 @@
 	jr .HourIsSet
 
 .MinutesAreSet
-	call Function658
+	call SetTimeOfDay
 	ld hl, OakText_ResponseToSetTime
 	call PrintText
 	call WaitPressAorB_BlinkCursor
@@ -194,7 +194,7 @@
 	ret
 ; 907f1 (24:47f1)
 
-Function907f1: ; 907f1
+UnreferencedFunction907f1: ; 907f1
 	ld h, d
 	ld l, e
 	push hl
@@ -203,11 +203,11 @@
 rept 2
 	inc de
 endr
-	ld a, $9c
+	ld a, ":"
 	ld [de], a
 	inc de
 	push de
-	ld hl, $3
+	ld hl, 3
 	add hl, de
 	ld a, [de]
 	inc de
@@ -225,37 +225,39 @@
 SetMinutes: ; 90810 (24:4810)
 	ld a, [hJoyPressed]
 	and A_BUTTON
-	jr nz, .asm_90857
+	jr nz, .a_button
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
-	jr nz, .asm_90835
+	jr nz, .d_up
 	ld a, [hl]
 	and D_DOWN
-	jr nz, .asm_90828
+	jr nz, .d_down
 	call DelayFrame
 	and a
 	ret
-.asm_90828
+
+.d_down
 	ld hl, BattleMonNick + 5
 	ld a, [hl]
 	and a
-	jr nz, .asm_90831
+	jr nz, .decrease
 	ld a, 59 + 1
-.asm_90831
+.decrease
 	dec a
 	ld [hl], a
-	jr .asm_90841
-.asm_90835
+	jr .finish_dpad
+
+.d_up
 	ld hl, BattleMonNick + 5
 	ld a, [hl]
 	cp 59
-	jr c, .asm_9083f
+	jr c, .increase
 	ld a, -1
-.asm_9083f
+.increase
 	inc a
 	ld [hl], a
-.asm_90841
+.finish_dpad
 	hlcoord 12, 9
 	ld a, " "
 	ld bc, 7
@@ -265,7 +267,7 @@
 	call WaitBGMap
 	and a
 	ret
-.asm_90857
+.a_button
 	scf
 	ret
 
@@ -288,13 +290,13 @@
 	ret
 ; 90874 (24:4874)
 
-UnknownText_0x90874: ; 0x90874
+Text_WokeUpOak: ; 0x90874
 	; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me?
 	text_jump UnknownText_0x1bc29c
 	db "@"
 ; 0x90879
 
-UnknownText_0x90879: ; 0x90879
+Text_WhatTimeIsIt: ; 0x90879
 	; What time is it?
 	text_jump UnknownText_0x1bc2eb
 	db "@"
@@ -304,23 +306,23 @@
 	db "o'clock@"
 ; 90886
 
-UnknownText_0x90886: ; 0x90886
+Text_WhatHrs: ; 0x90886
 	; What?@ @
 	text_jump UnknownText_0x1bc2fd
 	start_asm
 	hlcoord 1, 16
 	call DisplayHourOClock
-	ld hl, UnknownText_0x90895
+	ld hl, .QuestionMark
 	ret
 ; 90895 (24:4895)
 
-UnknownText_0x90895: ; 0x90895
+.QuestionMark: ; 0x90895
 	; ?
 	text_jump UnknownText_0x1bc305
 	db "@"
 ; 0x9089a
 
-UnknownText_0x9089a: ; 0x9089a
+Text_HowManyMinutes: ; 0x9089a
 	; How many minutes?
 	text_jump UnknownText_0x1bc308
 	db "@"
@@ -330,18 +332,17 @@
 	db "min.@"
 ; 908a4
 
-UnknownText_0x908a4: ; 0x908a4
+Text_WhoaMins: ; 0x908a4
 	; Whoa!@ @
 	text_jump UnknownText_0x1bc31b
 	start_asm
-; 0x908a9
 	hlcoord 7, 14
 	call DisplayMinutesWithMinString
-	ld hl, UnknownText_0x908b3
+	ld hl, .QuestionMark
 	ret
 ; 908b3 (24:48b3)
 
-UnknownText_0x908b3: ; 0x908b3
+.QuestionMark: ; 0x908b3
 	; ?
 	text_jump UnknownText_0x1bc323
 	db "@"
@@ -418,13 +419,13 @@
 	lb bc, BANK(GFX_9090b), 1
 	call Request1bpp
 	xor a
-	ld [wd002], a
-.asm_90936
+	ld [wTempDayOfWeek], a
+.loop
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
 	call LoadStandardMenuDataHeader
-	ld hl, UnknownText_0x90a3f
+	ld hl, .WhatDayIsItText
 	call PrintText
 	hlcoord 9, 3
 	ld b, 2
@@ -431,27 +432,27 @@
 	ld c, 9
 	call TextBox
 	hlcoord 14, 3
-	ld [hl], $ef
+	ld [hl], "♂" ; gets overwritten with special up arrow
 	hlcoord 14, 6
-	ld [hl], $f5
+	ld [hl], "♀" ; gets overwritten with special down arrow
 	hlcoord 10, 5
-	call Function909de
+	call .PlaceWeekdayString
 	call ApplyTilemap
 	ld c, 10
 	call DelayFrames
-.asm_9096a
+.loop2
 	call JoyTextDelay
-	call Function90993
-	jr nc, .asm_9096a
+	call .GetJoypadAction
+	jr nc, .loop2
 	call ExitMenu
 	call UpdateSprites
-	ld hl, UnknownText_0x90a44
+	ld hl, .ConfirmWeekdayText
 	call PrintText
 	call YesNoBox
-	jr c, .asm_90936
-	ld a, [wd002]
+	jr c, .loop
+	ld a, [wTempDayOfWeek]
 	ld [StringBuffer2], a
-	call Function663
+	call SetDayOfWeek
 	call LoadStandardFont
 	pop af
 	ld [hInMenu], a
@@ -458,68 +459,68 @@
 	ret
 ; 90993
 
-Function90993: ; 90993
+.GetJoypadAction: ; 90993
 	ld a, [hJoyPressed]
 	and A_BUTTON
-	jr z, .asm_9099b
+	jr z, .not_A
 	scf
 	ret
 
-.asm_9099b
+.not_A
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
-	jr nz, .asm_909ba
+	jr nz, .d_up
 	ld a, [hl]
 	and D_DOWN
-	jr nz, .asm_909ad
+	jr nz, .d_down
 	call DelayFrame
 	and a
 	ret
 
-.asm_909ad
-	ld hl, wd002
+.d_down
+	ld hl, wTempDayOfWeek
 	ld a, [hl]
 	and a
-	jr nz, .asm_909b6
+	jr nz, .decrease
 	ld a, 6 + 1
 
-.asm_909b6
+.decrease
 	dec a
 	ld [hl], a
-	jr .asm_909c6
+	jr .finish_dpad
 
-.asm_909ba
-	ld hl, wd002
+.d_up
+	ld hl, wTempDayOfWeek
 	ld a, [hl]
 	cp 6
-	jr c, .asm_909c4
-	ld a, -1
+	jr c, .increase
+	ld a, 0 - 1
 
-.asm_909c4
+.increase
 	inc a
 	ld [hl], a
 
-.asm_909c6
+.finish_dpad
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 10, 4
-	ld b, $2
-	ld c, $9
+	ld b, 2
+	ld c, 9
 	call ClearBox
 	hlcoord 10, 5
-	call Function909de
+	call .PlaceWeekdayString
 	call WaitBGMap
 	and a
 	ret
 ; 909de
 
-Function909de: ; 909de
+.PlaceWeekdayString: ; 909de
 	push hl
-	ld a, [wd002]
+	ld a, [wTempDayOfWeek]
 	ld e, a
 	ld d, 0
-	ld hl, WeekdaysStrings
+	ld hl, .WeekdayStrings
 rept 2
 	add hl, de
 endr
@@ -531,40 +532,40 @@
 	ret
 ; 909f2
 
-WeekdaysStrings: ; 909f2
-	dw Sunday
-	dw Monday
-	dw Tuesday
-	dw Wednesday
-	dw Thursday
-	dw Friday
-	dw Saturday
-	dw Sunday
+.WeekdayStrings: ; 909f2
+	dw .Sunday
+	dw .Monday
+	dw .Tuesday
+	dw .Wednesday
+	dw .Thursday
+	dw .Friday
+	dw .Saturday
+	dw .Sunday
 
-Sunday:    db " SUNDAY@"
-Monday:    db " MONDAY@"
-Tuesday:   db " TUESDAY@"
-Wednesday: db "WEDNESDAY@"
-Thursday:  db "THURSDAY@"
-Friday:    db " FRIDAY@"
-Saturday:  db "SATURDAY@"
+.Sunday:    db " SUNDAY@"
+.Monday:    db " MONDAY@"
+.Tuesday:   db " TUESDAY@"
+.Wednesday: db "WEDNESDAY@"
+.Thursday:  db "THURSDAY@"
+.Friday:    db " FRIDAY@"
+.Saturday:  db "SATURDAY@"
 
 
-UnknownText_0x90a3f: ; 0x90a3f
+.WhatDayIsItText: ; 0x90a3f
 	; What day is it?
 	text_jump UnknownText_0x1bc369
 	db "@"
 ; 0x90a44
 
-UnknownText_0x90a44: ; 0x90a44
+.ConfirmWeekdayText: ; 0x90a44
 	start_asm
 	hlcoord 1, 14
-	call Function909de
-	ld hl, UnknownText_0x90a4f
+	call .PlaceWeekdayString
+	ld hl, .IsIt
 	ret
 ; 90a4f (24:4a4f)
 
-UnknownText_0x90a4f: ; 0x90a4f
+.IsIt: ; 0x90a4f
 	; , is it?
 	text_jump UnknownText_0x1bc37a
 	db "@"
@@ -577,12 +578,12 @@
 	hlcoord 1, 14
 	lb bc, 3, 18
 	call ClearBox
-	ld hl, UnknownText_0x90a6c
+	ld hl, .Text
 	call PlaceWholeStringInBoxAtOnce
 	ret
 ; 90a6c
 
-UnknownText_0x90a6c: ; 90a6c
+.Text: ; 90a6c
 	start_asm
 	call UpdateTime
 	ld a, [hHours]
@@ -591,11 +592,11 @@
 	ld c, a
 	decoord 1, 14
 	callba PrintHoursMins
-	ld hl, TextJump_DSTIsThatOK
+	ld hl, .DSTIsThatOK
 	ret
 ; 90a83 (24:4a83)
 
-TextJump_DSTIsThatOK: ; 0x90a83
+.DSTIsThatOK: ; 0x90a83
 	; DST, is that OK?
 	text_jump Text_DSTIsThatOK
 	db "@"
@@ -608,12 +609,12 @@
 	hlcoord 1, 14
 	lb bc, 3, 18
 	call ClearBox
-	ld hl, UnknownText_0x90aa0
+	ld hl, .Text
 	call PlaceWholeStringInBoxAtOnce
 	ret
 ; 90aa0
 
-UnknownText_0x90aa0: ; 90aa0
+.Text: ; 90aa0
 	start_asm
 	call UpdateTime
 	ld a, [hHours]
@@ -622,28 +623,27 @@
 	ld c, a
 	decoord 1, 14
 	callba PrintHoursMins
-	ld hl, UnknownText_0x90ab7
+	ld hl, .IsThatOK
 	ret
 ; 90ab7
 
-UnknownText_0x90ab7: ; 0x90ab7
+.IsThatOK: ; 0x90ab7
 	; , is that OK?
 	text_jump UnknownText_0x1c5ff1
 	db "@"
 ; 0x90abc
 
-Function90abc: ; 90abc
+DebugDisplayTime: ; 90abc
 	hlcoord 1, 14
 	lb bc, 3, SCREEN_WIDTH - 2
 	call ClearBox
-	ld hl, UnknownText_0x90acc
+	ld hl, .Text
 	call PlaceWholeStringInBoxAtOnce
 	ret
 ; 90acc
 
-UnknownText_0x90acc: ; 0x90acc
+.Text: ; 0x90acc
 	start_asm
-
 	call UpdateTime
 
 	hlcoord 1, 14
@@ -655,7 +655,7 @@
 	inc hl
 
 	ld de, hRTCDayLo
-	call Function90b23
+	call .PrintTime
 
 	hlcoord 1, 16
 	ld [hl], "D"
@@ -666,7 +666,7 @@
 	inc hl
 
 	ld de, StartDay
-	call Function90b23
+	call .PrintTime
 
 	ld [hl], " "
 	inc hl
@@ -690,16 +690,16 @@
 	inc hl
 
 .done
-	ld hl, UnknownText_0x90b13
+	ld hl, .NowOnDebug
 	ret
 ; 90b13
 
-UnknownText_0x90b13: ; 0x90b13
+.NowOnDebug: ; 0x90b13
 	text "<PARA>Now on DEBUG…"
 	prompt
 ; 0x90b23
 
-Function90b23: ; 90b23
+.PrintTime: ; 90b23
 	lb bc, 1, 3
 	call PrintNum
 	ld [hl], "."
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -189,7 +189,7 @@
 	
 ; Let LCD Stat know we're messing around with SCX
 	ld a, rSCX - rJOYP
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	
 	pop af
 	ld [rSVBK], a
--- a/engine/tmhm.asm
+++ b/engine/tmhm.asm
@@ -5,7 +5,7 @@
 	ld hl, BaseTMHM
 	push hl
 
-	ld a, [wd262]
+	ld a, [wPutativeTMHMMove]
 	ld b, a
 	ld c, 0
 	ld hl, TMHMMoves
--- /dev/null
+++ b/engine/tmhm2.asm
@@ -1,0 +1,592 @@
+TMHMPocket: ; 2c76f (b:476f)
+	ld a, $1
+	ld [hInMenu], a
+	call TMHM_PocketLoop
+	ld a, $0
+	ld [hInMenu], a
+	ret nc
+	call PlaceHollowCursor
+	call WaitBGMap
+	ld a, [CurItem]
+	dec a
+	ld [CurItemQuantity], a
+	ld hl, TMsHMs
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [hl]
+	ld [wItemQuantityBuffer], a
+	call .ConvertItemToTMHMNumber
+	scf
+	ret
+
+.ConvertItemToTMHMNumber: ; 2c798 (b:4798)
+	ld a, [CurItem]
+	ld c, a
+	callab GetNumberedTMHM
+	ld a, c
+	ld [CurItem], a
+	ret
+
+ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7)
+	ld a, [CurItem]
+	ld c, a
+	callab GetTMHMNumber
+	ld a, c
+	ld [wCurTMHM], a
+	ret
+
+GetTMHMItemMove: ; 2c7b6 (b:47b6)
+	call ConvertCurItemIntoCurTMHM
+	predef GetTMHMMove
+	ret
+
+AskTeachTMHM: ; 2c7bf (b:47bf)
+	ld hl, Options
+	ld a, [hl]
+	push af
+	res NO_TEXT_SCROLL, [hl]
+	ld a, [CurItem]
+	cp TM01
+	jr c, .NotTMHM
+	call GetTMHMItemMove
+	ld a, [wCurTMHM]
+	ld [wPutativeTMHMMove], a
+	call GetMoveName
+	call CopyName1
+	ld hl, Text_BootedTM ; Booted up a TM
+	ld a, [CurItem]
+	cp HM01
+	jr c, .TM
+	ld hl, Text_BootedHM ; Booted up an HM
+.TM
+	call PrintText
+	ld hl, Text_ItContained
+	call PrintText
+	call YesNoBox
+.NotTMHM
+	pop bc
+	ld a, b
+	ld [Options], a
+	ret
+
+ChooseMonToLearnTMHM: ; 2c7fb
+	ld hl, StringBuffer2
+	ld de, wTMHMMoveNameBackup
+	ld bc, 12
+	call CopyBytes
+	call ClearBGPalettes
+ChooseMonToLearnTMHM_NoRefresh: ; 2c80a
+	callba LoadPartyMenuGFX
+	callba InitPartyMenuWithCancel
+	callba InitPartyMenuGFX
+	ld a, $3 ; TeachWhichPKMNString
+	ld [PartyMenuActionText], a
+.loopback
+	callba WritePartyMenuTilemap
+	callba PrintPartyMenuText
+	call WaitBGMap
+	call SetPalettes
+	call DelayFrame
+	callba PartyMenuSelect
+	push af
+	ld a, [CurPartySpecies]
+	cp EGG
+	pop bc ; now contains the former contents of af
+	jr z, .egg
+	push bc
+	ld hl, wTMHMMoveNameBackup
+	ld de, StringBuffer2
+	ld bc, 12
+	call CopyBytes
+	pop af ; now contains the original contents of af
+	ret
+
+.egg
+	push hl
+	push de
+	push bc
+	push af
+	ld de, SFX_WRONG
+	call PlaySFX
+	call WaitSFX
+	pop af
+	pop bc
+	pop de
+	pop hl
+	jr .loopback
+; 2c867
+
+TeachTMHM: ; 2c867
+	predef CanLearnTMHMMove
+
+	push bc
+	ld a, [CurPartyMon]
+	ld hl, PartyMonNicknames
+	call GetNick
+	pop bc
+
+	ld a, c
+	and a
+	jr nz, .compatible
+	push de
+	ld de, SFX_WRONG
+	call PlaySFX
+	pop de
+	ld hl, Text_TMHMNotCompatible
+	call PrintText
+	jr .nope
+
+.compatible
+	callab KnowsMove
+	jr c, .nope
+
+	predef LearnMove
+	ld a, b
+	and a
+	jr z, .nope
+
+	callba MobileFn_106049
+	ld a, [CurItem]
+	call IsHM
+	ret c
+
+	ld c, HAPPINESS_LEARNMOVE
+	callab ChangeHappiness
+	call ConsumeTM
+	jr .learned_move
+
+.nope
+	and a
+	ret
+
+.unused
+	ld a, 2
+	ld [wItemEffectSucceeded], a
+.learned_move
+	scf
+	ret
+; 2c8bf (b:48bf)
+
+Text_BootedTM: ; 0x2c8bf
+	; Booted up a TM.
+	text_jump UnknownText_0x1c0373
+	db "@"
+; 0x2c8c4
+
+Text_BootedHM: ; 0x2c8c4
+	; Booted up an HM.
+	text_jump UnknownText_0x1c0384
+	db "@"
+; 0x2c8c9
+
+Text_ItContained: ; 0x2c8c9
+	; It contained @ . Teach @ to a #MON?
+	text_jump UnknownText_0x1c0396
+	db "@"
+; 0x2c8ce
+
+Text_TMHMNotCompatible: ; 0x2c8ce
+	; is not compatible with @ . It can't learn @ .
+	text_jump UnknownText_0x1c03c2
+	db "@"
+; 0x2c8d3
+
+TMHM_PocketLoop: ; 2c8d3 (b:48d3)
+	xor a
+	ld [hBGMapMode], a
+	call TMHM_DisplayPocketItems
+	ld a, $2
+	ld [w2DMenuCursorInitY], a
+	ld a, $7
+	ld [w2DMenuCursorInitX], a
+	ld a, $1
+	ld [w2DMenuNumCols], a
+	ld a, $5
+	sub d
+	inc a
+	cp $6
+	jr nz, .okay
+	dec a
+.okay
+	ld [w2DMenuNumRows], a
+	ld a, $c
+	ld [w2DMenuFlags1], a
+	xor a
+	ld [w2DMenuFlags2], a
+	ld a, $20
+	ld [w2DMenuCursorOffsets], a
+	ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN | D_LEFT | D_RIGHT
+	ld [wMenuJoypadFilter], a
+	ld a, [wTMHMPocketCursor]
+	inc a
+	ld [wMenuCursorY], a
+	ld a, $1
+	ld [wMenuCursorX], a
+	jr TMHM_ShowTMMoveDescription
+
+TMHM_JoypadLoop: ; 2c915 (b:4915)
+	call TMHM_DisplayPocketItems
+	call StaticMenuJoypad
+	ld b, a
+	ld a, [wMenuCursorY]
+	dec a
+	ld [wTMHMPocketCursor], a
+	xor a
+	ld [hBGMapMode], a
+	ld a, [w2DMenuFlags2]
+	bit 7, a
+	jp nz, TMHM_ScrollPocket
+	ld a, b
+	ld [wMenuJoypad], a
+	bit A_BUTTON_F, a
+	jp nz, TMHM_ChooseTMorHM
+	bit B_BUTTON_F, a
+	jp nz, TMHM_ExitPack
+	bit D_RIGHT_F, a
+	jp nz, TMHM_ExitPocket
+	bit D_LEFT_F, a
+	jp nz, TMHM_ExitPocket
+TMHM_ShowTMMoveDescription: ; 2c946 (b:4946)
+	call TMHM_CheckHoveringOverCancel
+	jp nc, TMHM_ExitPocket
+	hlcoord 0, 12
+	ld b, 4
+	ld c, SCREEN_WIDTH - 2
+	call TextBox
+	ld a, [CurItem]
+	cp NUM_TMS + NUM_HMS + 1
+	jr nc, TMHM_JoypadLoop
+	ld [wd265], a
+	predef GetTMHMMove
+	ld a, [wd265]
+	ld [CurSpecies], a
+	hlcoord 1, 14
+	call PrintMoveDesc
+	jp TMHM_JoypadLoop
+
+TMHM_ChooseTMorHM: ; 2c974 (b:4974)
+	call TMHM_PlaySFX_ReadText2
+	call CountTMsHMs ; This stores the count to wd265.
+	ld a, [wMenuCursorY]
+	dec a
+	ld b, a
+	ld a, [wTMHMPocketScrollPosition]
+	add b
+	ld b, a
+	ld a, [wd265]
+	cp b
+	jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL
+TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a)
+	call TMHM_GetCurrentPocketPosition
+	ld a, [wMenuCursorY]
+	ld b, a
+.loop
+	inc c
+	ld a, c
+	cp NUM_TMS + NUM_HMS + 1
+	jr nc, .okay
+	ld a, [hli]
+	and a
+	jr z, .loop
+	dec b
+	jr nz, .loop
+	ld a, c
+.okay
+	ld [CurItem], a
+	cp -1
+	ret
+
+TMHM_ExitPack: ; 2c9a5 (b:49a5)
+	call TMHM_PlaySFX_ReadText2
+_TMHM_ExitPack: ; 2c9a8 (b:49a8)
+	ld a, $2
+	ld [wMenuJoypad], a
+	and a
+	ret
+
+TMHM_ExitPocket: ; 2c9af (b:49af)
+	and a
+	ret
+
+TMHM_ScrollPocket: ; 2c9b1 (b:49b1)
+	ld a, b
+	bit 7, a
+	jr nz, .skip
+	ld hl, wTMHMPocketScrollPosition
+	ld a, [hl]
+	and a
+	jp z, TMHM_JoypadLoop
+	dec [hl]
+	call TMHM_DisplayPocketItems
+	jp TMHM_ShowTMMoveDescription
+
+.skip
+	call TMHM_GetCurrentPocketPosition
+	ld b, 5
+.loop
+	inc c
+	ld a, c
+	cp NUM_TMS + NUM_HMS + 1
+	jp nc, TMHM_JoypadLoop
+	ld a, [hli]
+	and a
+	jr z, .loop
+	dec b
+	jr nz, .loop
+	ld hl, wTMHMPocketScrollPosition
+	inc [hl]
+	call TMHM_DisplayPocketItems
+	jp TMHM_ShowTMMoveDescription
+
+TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2)
+	ld a, [BattleType]
+	cp BATTLETYPE_TUTORIAL
+	jp z, Tutorial_TMHMPocket
+
+	hlcoord 5, 2
+	lb bc, 10, 15
+	ld a, " "
+	call ClearBox
+	call TMHM_GetCurrentPocketPosition
+	ld d, $5
+.loop2
+	inc c
+	ld a, c
+	cp NUM_TMS + NUM_HMS + 1
+	jr nc, .NotTMHM
+	ld a, [hli]
+	and a
+	jr z, .loop2
+	ld b, a
+	ld a, c
+	ld [wd265], a
+	push hl
+	push de
+	push bc
+	call TMHMPocket_GetCurrentLineCoord
+	push hl
+	ld a, [wd265]
+	cp NUM_TMS + 1
+	jr nc, .HM
+	ld de, wd265
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	jr .okay
+
+.HM
+	push af
+	sub NUM_TMS
+	ld [wd265], a
+	ld [hl], "H"
+	inc hl
+	ld de, wd265
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+	call PrintNum
+	pop af
+	ld [wd265], a
+.okay
+	predef GetTMHMMove
+	ld a, [wd265]
+	ld [wPutativeTMHMMove], a
+	call GetMoveName
+	pop hl
+	ld bc, 3
+	add hl, bc
+	push hl
+	call PlaceString
+	pop hl
+	pop bc
+	ld a, c
+	push bc
+	cp NUM_TMS + 1
+	jr nc, .hm2
+	ld bc, SCREEN_WIDTH + 9
+	add hl, bc
+	ld [hl], "×"
+	inc hl
+	ld a, "0" ; why are we doing this?
+	pop bc
+	push bc
+	ld a, b
+	ld [wd265], a
+	ld de, wd265
+	lb bc, 1, 2
+	call PrintNum
+.hm2
+	pop bc
+	pop de
+	pop hl
+	dec d
+	jr nz, .loop2
+	jr .done
+
+.NotTMHM
+	call TMHMPocket_GetCurrentLineCoord
+rept 3
+	inc hl
+endr
+	push de
+	ld de, TMHM_String_Cancel
+	call PlaceString
+	pop de
+.done
+	ret
+
+TMHMPocket_GetCurrentLineCoord: ; 2ca86 (b:4a86)
+	hlcoord 5, 0
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, 6
+	sub d
+	ld e, a
+	; AddNTimes
+.loop
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ret
+; 2ca95 (b:4a95)
+
+Function2ca95: ; 2ca95
+; unreferenced
+	pop hl
+	ld bc, 3
+	add hl, bc
+	predef GetTMHMMove
+	ld a, [wd265]
+	ld [wPutativeTMHMMove], a
+	call GetMoveName
+	push hl
+	call PlaceString
+	pop hl
+	ret
+; 2caae
+
+TMHM_String_Cancel: ; 2caae
+	db "CANCEL@"
+; 2cab5
+
+TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5)
+	ld hl, TMsHMs
+	ld a, [wTMHMPocketScrollPosition]
+	ld b, a
+	inc b
+	ld c, 0
+.loop
+	inc c
+	ld a, [hli]
+	and a
+	jr z, .loop
+	dec b
+	jr nz, .loop
+	dec hl
+	dec c
+	ret
+
+Tutorial_TMHMPocket: ; 2caca (b:4aca)
+	hlcoord 9, 3
+	push de
+	ld de, TMHM_String_Cancel
+	call PlaceString
+	pop de
+	ret
+
+TMHM_PlaySFX_ReadText2: ; 2cad6 (b:4ad6)
+	push de
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	pop de
+	ret
+; 2cadf (b:4adf)
+
+Function2cadf: ; 2cadf
+; unreferenced
+	call ConvertCurItemIntoCurTMHM
+	call .CheckHaveRoomForTMHM
+	ld hl, .NoRoomText
+	jr nc, .print
+	ld hl, .ReceivedText
+.print
+	jp PrintText
+; 2caf0
+
+.NoRoomText: ; 0x2caf0
+	; You have no room for any more @ S.
+	text_jump UnknownText_0x1c03fa
+	db "@"
+; 0x2caf5
+
+.ReceivedText: ; 0x2caf5
+	; You received @ !
+	text_jump UnknownText_0x1c0421
+	db "@"
+; 0x2cafa
+
+.CheckHaveRoomForTMHM: ; 2cafa
+	ld a, [wd265]
+	dec a
+	ld hl, TMsHMs
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	inc a
+	cp NUM_TMS * 2
+	ret nc
+	ld [hl], a
+	ret
+; 2cb0c
+
+ConsumeTM: ; 2cb0c (b:4b0c)
+	call ConvertCurItemIntoCurTMHM
+	ld a, [wd265]
+	dec a
+	ld hl, TMsHMs
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	dec a
+	ld [hl], a
+	ret nz
+	ld a, [wTMHMPocketScrollPosition]
+	and a
+	ret z
+	dec a
+	ld [wTMHMPocketScrollPosition], a
+	ret
+
+CountTMsHMs: ; 2cb2a (b:4b2a)
+	ld b, 0
+	ld c, NUM_TMS + NUM_HMS
+	ld hl, TMsHMs
+.loop
+	ld a, [hli]
+	and a
+	jr z, .skip
+	inc b
+.skip
+	dec c
+	jr nz, .loop
+	ld a, b
+	ld [wd265], a
+	ret
+
+PrintMoveDesc: ; 2cb3e
+	push hl
+	ld hl, MoveDescriptions
+	ld a, [CurSpecies]
+	dec a
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	pop hl
+	jp PlaceString
+; 2cb52
--- a/engine/town_map.asm
+++ b/engine/town_map.asm
@@ -20,7 +20,7 @@
 	call ClearSprites
 	call DisableLCD
 	call Function90c4e
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ld a, 8
 	call SkipMusic
 	ld a, $e3
@@ -31,7 +31,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call Function91a04
-	call Function3200
+	call WaitBGMap2
 	ld a, [wd002]
 	call Function9106a
 	ld a, [wd003]
@@ -40,7 +40,7 @@
 	ld [wd004], a
 	ld a, b
 	ld [wd005], a
-	ld b, SCGB_02
+	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
 	ld a, [hCGB]
@@ -47,7 +47,7 @@
 	and a
 	jr z, .sgb
 	ld a, $e4
-	call Functioncf8
+	call DmgToCgbObjPal0
 	call DelayFrame
 
 .sgb
@@ -92,7 +92,7 @@
 	jr nz, .pressed_down
 .loop2
 	push de
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	pop de
 	call DelayFrame
 	jr .loop
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -142,7 +142,7 @@
 	call ClearTileMap
 	call DisableLCD
 	call LoadFontsBattleExtra
-	callab Function8cf53
+	callab ClearSpriteAnims
 	ld a, [hCGB]
 	and a
 	jr z, .asm_2900b
@@ -180,23 +180,23 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function4d7fd
+	callba GetTrademonFrontpic
 	call EnableLCD
 	call Function2982b
 	ld a, [wPlayerTrademonSpecies]
 	ld hl, wPlayerTrademonDVs
 	ld de, VTiles0
-	call Function29491
+	call TradeAnim_GetFrontpic
 	ld a, [wOTTrademonSpecies]
 	ld hl, wOTTrademonDVs
 	ld de, VTiles0 tile $31
-	call Function29491
+	call TradeAnim_GetFrontpic
 	ld a, [wPlayerTrademonSpecies]
 	ld de, wPlayerTrademonSpeciesName
-	call Function294a9
+	call TradeAnim_GetNickname
 	ld a, [wOTTrademonSpecies]
 	ld de, wOTTrademonSpeciesName
-	call Function294a9
+	call TradeAnim_GetNickname
 	call Function297ed
 	ret
 ; 29082
@@ -206,7 +206,7 @@
 	bit 7, a
 	jr nz, .finished
 	call .DoTradeAnimCommand
-	callab Function8cf69
+	callab PlaySpriteAnimations
 	ld hl, wcf65
 	inc [hl]
 	call DelayFrame
@@ -336,7 +336,7 @@
 	push de
 	push af
 	call DisableLCD
-	callab Function8cf53
+	callab ClearSpriteAnims
 	hlbgcoord 20, 3
 	ld bc, $c
 	ld a, $60
@@ -368,10 +368,10 @@
 	call WaitBGMap
 	ld b, SCGB_1B
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	ld a, $d0
-	call Functioncf8
+	call DmgToCgbObjPal0
 	call NextTradeAnim
 	ld a, $5c
 	ld [wcf64], a
@@ -466,7 +466,7 @@
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
-	callab Function8cf53
+	callab ClearSpriteAnims
 	hlbgcoord 0, 0
 	ld bc, sScratch - VBGMap0
 	ld a, " "
@@ -566,6 +566,7 @@
 	hlcoord 17, 3
 	ld a, $5d
 	ld [hl], a
+
 	ld a, $61
 	ld de, SCREEN_WIDTH
 	ld c, $3
@@ -574,6 +575,7 @@
 	ld [hl], a
 	dec c
 	jr nz, .loop
+
 	add hl, de
 	ld a, $5f
 	ld [hld], a
@@ -644,9 +646,9 @@
 	call WaitBGMap
 	ld b, SCGB_1B
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	ld de, $e4e4
+	lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0
 	call DmgToCgbObjPals
 	ld de, SFX_POTION
 	call PlaySFX
@@ -784,9 +786,9 @@
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	call Function294bb
+	call TradeAnim_ShowGivemonFrontpic
 
 	ld a, [wPlayerTrademonSpecies]
 	call GetCryIndex
@@ -810,20 +812,20 @@
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	call Function294c0
+	call TradeAnim_ShowGetmonFrontpic
 	call TradeAnim_Next
 	ret
 ; 29487
 
 TradeAnim_AnimateFrontpic: ; 29487
-	callba Function4d81e
+	callba AnimateTrademonFrontpic
 	call TradeAnim_Next
 	ret
 ; 29491
 
-Function29491: ; 29491
+TradeAnim_GetFrontpic: ; 29491
 	push de
 	push af
 	predef GetUnownLetter
@@ -836,7 +838,7 @@
 	ret
 ; 294a9
 
-Function294a9: ; 294a9
+TradeAnim_GetNickname: ; 294a9
 	push de
 	ld [wd265], a
 	call GetPokemonName
@@ -847,14 +849,13 @@
 	ret
 ; 294bb
 
-Function294bb: ; 294bb
+TradeAnim_ShowGivemonFrontpic: ; 294bb
 	ld de, VTiles0
-	jr Function294c3
+	jr TradeAnim_ShowFrontpic
 
-Function294c0: ; 294c0
+TradeAnim_ShowGetmonFrontpic: ; 294c0
 	ld de, VTiles0 tile $31
-
-Function294c3: ; 294c3
+TradeAnim_ShowFrontpic: ; 294c3
 	call DelayFrame
 	ld hl, VTiles2
 	lb bc, 10, $31
@@ -1087,8 +1088,8 @@
 ; 29660
 
 TradeAnim_BulgeThroughTube: ; 29660
-	ld a, $e4
-	call Functioncf8
+	ld a, %11100100 ; 3,2,1,0
+	call DmgToCgbObjPal0
 	depixel 5, 11
 	ld a, SPRITE_ANIM_INDEX_10
 	call _InitSpriteAnimStruct
@@ -1374,13 +1375,13 @@
 Function297ed: ; 297ed
 	ld a, [hSGB]
 	and a
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	jr z, .asm_297f6
 	ld a, $f0
 
 .asm_297f6
-	call Functioncf8
-	ld a, $e4
+	call DmgToCgbObjPal0
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	ret
 ; 297ff
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -7,20 +7,21 @@
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	call Function2513b
-.asm_25117
+	call .InitRAM
+.loop
 	call UpdateTime
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_25132
+	jr nz, .quit
 	ld a, [hJoyLast]
 	and B_BUTTON
-	jr nz, .asm_25132
-	call Function2518e
+	jr nz, .quit
+	call .RunJumptable
 	call DelayFrame
-	jr .asm_25117
-.asm_25132
+	jr .loop
+
+.quit
 	pop af
 	ld [Options], a
 	pop af
@@ -27,13 +28,13 @@
 	ld [VramState], a
 	ret
 
-Function2513b: ; 2513b (9:513b)
+.InitRAM: ; 2513b (9:513b)
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
 
-	callba Function8833e
+	callba GetCardPic
 
 	ld hl, CardRightCornerGFX
 	ld de, VTiles2 tile $1c
@@ -43,19 +44,19 @@
 
 	ld hl, CardStatusGFX
 	ld de, VTiles2 tile $29
-	ld bc, $56 tiles
+	ld bc, 86 tiles
 	ld a, BANK(CardStatusGFX)
 	call FarCopyBytes
 
-	call Function25299
+	call TrainerCard_PrintTopHalfOfCard
 
 	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
+	ld d, 6
+	call TrainerCard_InitBorder
 
 	call EnableLCD
 	call WaitBGMap
-	ld b, SCGB_15
+	ld b, SCGB_TRAINER_CARD
 	call GetSGBLayout
 	call SetPalettes
 	call WaitBGMap
@@ -67,55 +68,45 @@
 	ld [hl], a
 	ret
 
-Function2518e: ; 2518e (9:518e)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, Jumptable_2519d
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
+.RunJumptable: ; 2518e (9:518e)
+	jumptable .Jumptable, wJumptableIndex
 
-Jumptable_2519d: ; 2519d (9:519d)
-	dw Function251b6
-	dw Function251d7
-	dw Function251f4
-	dw Function25221
-	dw Function2524c
-	dw Function25279
-	dw Function251b0
+.Jumptable: ; 2519d (9:519d)
+	dw TrainerCard_Page1_LoadGFX
+	dw TrainerCard_Page1_Joypad
+	dw TrainerCard_Page2_LoadGFX
+	dw TrainerCard_Page2_Joypad
+	dw TrainerCard_Page3_LoadGFX
+	dw TrainerCard_Page3_Joypad
+	dw TrainerCard_Quit
 
 
-Function251ab: ; 251ab (9:51ab)
+TrainerCard_IncrementJumptable: ; 251ab (9:51ab)
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function251b0: ; 251b0 (9:51b0)
+TrainerCard_Quit: ; 251b0 (9:51b0)
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function251b6: ; 251b6 (9:51b6)
+TrainerCard_Page1_LoadGFX: ; 251b6 (9:51b6)
 	call ClearSprites
 	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
+	ld d, 6
+	call TrainerCard_InitBorder
 	call WaitBGMap
 	ld de, CardStatusGFX
 	ld hl, VTiles2 tile $29
-	lb bc, BANK(CardStatusGFX), $56
+	lb bc, BANK(CardStatusGFX), 86
 	call Request2bpp
-	call Function2530a
-	call Function251ab
+	call TrainerCard_Page1_PrintDexCaught_GameTime
+	call TrainerCard_IncrementJumptable
 	ret
 
-Function251d7: ; 251d7 (9:51d7)
-	call Function25415
+TrainerCard_Page1_Joypad: ; 251d7 (9:51d7)
+	call TrainerCard_Page1_PrintGameTime
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_RIGHT | A_BUTTON
@@ -126,23 +117,23 @@
 	ld a, $2
 	ld [wJumptableIndex], a
 	ret
-; 251e9 (9:51e9)
 
-Function251e9: ; 251e9
+.KantoCheck
+; unreferenced
 	ld a, [KantoBadges]
 	and a
 	ret z
-
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
+
 ; 251f4
 
-Function251f4: ; 251f4 (9:51f4)
+TrainerCard_Page2_LoadGFX: ; 251f4 (9:51f4)
 	call ClearSprites
 	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
+	ld d, 6
+	call TrainerCard_InitBorder
 	call WaitBGMap
 	ld de, LeaderGFX
 	ld hl, VTiles2 tile $29
@@ -152,28 +143,29 @@
 	ld hl, VTiles0 tile $00
 	lb bc, BANK(BadgeGFX), $2c
 	call Request2bpp
-	call Function2536c
-	call Function251ab
+	call TrainerCard_Page2_3_InitObjectsAndStrings
+	call TrainerCard_IncrementJumptable
 	ret
 
-Function25221: ; 25221 (9:5221)
-	ld hl, Unknown_254c9
-	call Function25438
+TrainerCard_Page2_Joypad: ; 25221 (9:5221)
+	ld hl, TrainerCard_JohtoBadgesOAM
+	call TrainerCard_Page2_3_AnimateBadges
 	ld hl, hJoyLast
 	ld a, [hl]
 	and A_BUTTON
-	jr nz, Function25246
+	jr nz, .Quit
 	ld a, [hl]
 	and D_LEFT
-	jr nz, .asm_25235
+	jr nz, .d_left
 	ret
-.asm_25235
+
+.d_left
 	ld a, $0
 	ld [wJumptableIndex], a
 	ret
-; 2523b (9:523b)
 
-Function2523b: ; 2523b
+.KantoCheck
+; unreferenced
 	ld a, [KantoBadges]
 	and a
 	ret z
@@ -180,18 +172,17 @@
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
-; 25246
 
-Function25246: ; 25246
+.Quit
 	ld a, $6
 	ld [wJumptableIndex], a
 	ret
 
-Function2524c: ; 2524c (9:524c)
+TrainerCard_Page3_LoadGFX: ; 2524c (9:524c)
 	call ClearSprites
 	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
+	ld d, 6
+	call TrainerCard_InitBorder
 	call WaitBGMap
 	ld de, LeaderGFX2
 	ld hl, VTiles2 tile $29
@@ -201,13 +192,13 @@
 	ld hl, VTiles0 tile $00
 	lb bc, BANK(BadgeGFX2), $2c
 	call Request2bpp
-	call Function2536c
-	call Function251ab
+	call TrainerCard_Page2_3_InitObjectsAndStrings
+	call TrainerCard_IncrementJumptable
 	ret
 
-Function25279: ; 25279 (9:5279)
-	ld hl, Unknown_254c9
-	call Function25438
+TrainerCard_Page3_Joypad: ; 25279 (9:5279)
+	ld hl, TrainerCard_JohtoBadgesOAM
+	call TrainerCard_Page2_3_AnimateBadges
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_LEFT
@@ -227,16 +218,16 @@
 	ld [wJumptableIndex], a
 	ret
 
-Function25299: ; 25299 (9:5299)
+TrainerCard_PrintTopHalfOfCard: ; 25299 (9:5299)
 	hlcoord 0, 0
-	ld d, $5
-	call Function253b0
+	ld d, 5
+	call TrainerCard_InitBorder
 	hlcoord 2, 2
-	ld de, String_252ec
+	ld de, .Name_Money
 	call PlaceString
 	hlcoord 2, 4
-	ld de, Tilemap_252f9
-	call Function253a8
+	ld de, .ID_No
+	call TrainerCardSetup_PlaceTilemapString
 	hlcoord 7, 2
 	ld de, PlayerName
 	call PlaceString
@@ -249,8 +240,8 @@
 	lb bc, PRINTNUM_MONEY | 3, 6
 	call PrintNum
 	hlcoord 1, 3
-	ld de, Tilemap_252fc
-	call Function253a8
+	ld de, .HorizontalDivider
+	call TrainerCardSetup_PlaceTilemapString
 	hlcoord 14, 1
 	lb bc, 5, 7
 	xor a
@@ -257,38 +248,39 @@
 	ld [hFillBox], a
 	predef FillBox
 	ret
+
 ; 252ec (9:52ec)
 
-String_252ec: ; 252ec
+.Name_Money: ; 252ec
 	db   "NAME/"
 	next ""
 	next "MONEY@"
 
-Tilemap_252f9: ; 252f9
+.ID_No: ; 252f9
 	db $27, $28, $ff ; ID NO
 
-Tilemap_252fc: ; 252fc
+.HorizontalDivider: ; 252fc
 	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
 ; 2530a
 
-Function2530a: ; 2530a (9:530a)
+TrainerCard_Page1_PrintDexCaught_GameTime: ; 2530a (9:530a)
 	hlcoord 2, 10
-	ld de, String_2534c
+	ld de, .Dex_PlayTime
 	call PlaceString
 	hlcoord 10, 15
-	ld de, String_2535c
+	ld de, .Badges
 	call PlaceString
 	ld hl, PokedexCaught
-	ld b, $20
+	ld b, EndPokedexCaught - PokedexCaught
 	call CountSetBits
 	ld de, wd265
 	hlcoord 15, 10
 	lb bc, 1, 3
 	call PrintNum
-	call Function25415
+	call TrainerCard_Page1_PrintGameTime
 	hlcoord 2, 8
-	ld de, Tilemap_25366
-	call Function253a8
+	ld de, .StatusTilemap
+	call TrainerCardSetup_PlaceTilemapString
 	ld a, [StatusFlags] ; pokedex
 	bit 0, a
 	ret nz
@@ -296,119 +288,122 @@
 	lb bc, 2, 17
 	call ClearBox
 	ret
-; 2534c (9:534c)
 
-String_2534c: ; 2534c
+.Dex_PlayTime
 	db   "#DEX"
-	next "PLAY TIME"
-	db   "@"
+	next "PLAY TIME@@"
 
-String_2535b: ; 2535b
-	db "@"
-
-String_2535c: ; 2535c
+.Badges
 	db "  BADGES▶@"
 
-Tilemap_25366: ; 25366
+.StatusTilemap: ; 25366
 	db $29, $2a, $2b, $2c, $2d, $ff
 ; 2536c
 
-Function2536c: ; 2536c (9:536c)
+TrainerCard_Page2_3_InitObjectsAndStrings: ; 2536c (9:536c)
 	hlcoord 2, 8
-	ld de, Tilemap_253a2
-	call Function253a8
+	ld de, .BadgesTilemap
+	call TrainerCardSetup_PlaceTilemapString
 	hlcoord 2, 10
 	ld a, $29
-	ld c, $4
-.asm_2537c
-	call Function253f4
+	ld c, 4
+.loop
+	call TrainerCard_Page2_3_PlaceLeadersFaces
 rept 4
 	inc hl
 endr
 	dec c
-	jr nz, .asm_2537c
+	jr nz, .loop
 	hlcoord 2, 13
 	ld a, $51
-	ld c, $4
-.asm_2538d
-	call Function253f4
+	ld c, 4
+.loop2
+	call TrainerCard_Page2_3_PlaceLeadersFaces
 rept 4
 	inc hl
 endr
 	dec c
-	jr nz, .asm_2538d
+	jr nz, .loop2
 	xor a
 	ld [wcf64], a
-	ld hl, Unknown_254c9
-	call Function25448
+	ld hl, TrainerCard_JohtoBadgesOAM
+	call TrainerCard_Page2_3_OAMUpdate
 	ret
+
 ; 253a2 (9:53a2)
 
-Tilemap_253a2: ; 253a2
+.BadgesTilemap: ; 253a2
 	db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
 ; 253a8
 
-Function253a8: ; 253a8 (9:53a8)
+TrainerCardSetup_PlaceTilemapString: ; 253a8 (9:53a8)
+.loop
 	ld a, [de]
 	cp $ff
 	ret z
 	ld [hli], a
 	inc de
-	jr Function253a8
+	jr .loop
 
-Function253b0: ; 253b0 (9:53b0)
-	ld e, $14
-.asm_253b2
+TrainerCard_InitBorder: ; 253b0 (9:53b0)
+	ld e, 20
+.loop1
 	ld a, $23
 	ld [hli], a
 	dec e
-	jr nz, .asm_253b2
+	jr nz, .loop1
+
 	ld a, $23
 	ld [hli], a
-	ld e, $11
-	ld a, $7f
-.asm_253bf
+	ld e, 17
+	ld a, " "
+.loop2
 	ld [hli], a
 	dec e
-	jr nz, .asm_253bf
+	jr nz, .loop2
+
 	ld a, $1c
 	ld [hli], a
 	ld a, $23
 	ld [hli], a
-.asm_253c9
+.loop3
 	ld a, $23
 	ld [hli], a
-	ld e, $12
-	ld a, $7f
-.asm_253d0
+
+	ld e, 18
+	ld a, " "
+.loop4
 	ld [hli], a
 	dec e
-	jr nz, .asm_253d0
+	jr nz, .loop4
+
 	ld a, $23
 	ld [hli], a
 	dec d
-	jr nz, .asm_253c9
+	jr nz, .loop3
+
 	ld a, $23
 	ld [hli], a
 	ld a, $24
 	ld [hli], a
-	ld e, $11
-	ld a, $7f
-.asm_253e4
+
+	ld e, 17
+	ld a, " "
+.loop5
 	ld [hli], a
 	dec e
-	jr nz, .asm_253e4
+	jr nz, .loop5
 	ld a, $23
 	ld [hli], a
-	ld e, $14
-.asm_253ed
+	ld e, 20
+.loop6
 	ld a, $23
 	ld [hli], a
 	dec e
-	jr nz, .asm_253ed
+	jr nz, .loop6
 	ret
 
-Function253f4: ; 253f4 (9:53f4)
+TrainerCard_Page2_3_PlaceLeadersFaces: ; 253f4 (9:53f4)
 	push de
 	push hl
 	ld [hli], a
@@ -419,7 +414,7 @@
 	inc a
 	ld [hli], a
 	inc a
-	ld de, $11
+	ld de, SCREEN_WIDTH - 3
 	add hl, de
 	ld [hli], a
 	inc a
@@ -427,7 +422,7 @@
 	inc a
 	ld [hli], a
 	inc a
-	ld de, $11
+	ld de, SCREEN_WIDTH - 3
 	add hl, de
 	ld [hli], a
 	inc a
@@ -439,7 +434,7 @@
 	pop de
 	ret
 
-Function25415: ; 25415 (9:5415)
+TrainerCard_Page1_PrintGameTime: ; 25415 (9:5415)
 	hlcoord 11, 12
 	ld de, GameTimeHours
 	lb bc, 2, 4
@@ -453,11 +448,11 @@
 	ret nz
 	hlcoord 15, 12
 	ld a, [hl]
-	xor $51
+	xor %01010001 ; $7F <--> $2E
 	ld [hl], a
 	ret
 
-Function25438: ; 25438 (9:5438)
+TrainerCard_Page2_3_AnimateBadges: ; 25438 (9:5438)
 	ld a, [hVBlankCounter]
 	and $7
 	ret nz
@@ -465,9 +460,9 @@
 	inc a
 	and $7
 	ld [wcf64], a
-	jr Function25448
+	jr TrainerCard_Page2_3_OAMUpdate
 
-Function25448: ; 25448 (9:5448)
+TrainerCard_Page2_3_OAMUpdate: ; 25448 (9:5448)
 ; copy flag array pointer
 	ld a, [hli]
 	ld e, a
@@ -497,7 +492,7 @@
 	ld h, a
 	ld a, [hl]
 	ld [wcf65], a
-	call Function2547b
+	call .PrepOAM
 	pop hl
 .skip_badge
 	ld bc, $b ; 3 + 2 * 4
@@ -507,15 +502,16 @@
 	jr nz, .loop
 	ret
 
-Function2547b: ; 2547b (9:547b)
+.PrepOAM: ; 2547b (9:547b)
 	ld a, [wcf65]
 	and $80
 	jr nz, .xflip
 	ld hl, .facing1
-	jr .loop
+	jr .loop2
+
 .xflip
 	ld hl, .facing2
-.loop
+.loop2
 	ld a, [hli]
 	cp $ff
 	ret z
@@ -540,7 +536,8 @@
 	ld [de], a
 	inc hl
 	inc de
-	jr .loop
+	jr .loop2
+
 ; 254a7 (9:54a7)
 
 .facing1: ; 254a7
@@ -558,7 +555,7 @@
 	db 8, 8, 2, X_FLIP
 	db -1
 
-Unknown_254c9: ; 254c9
+TrainerCard_JohtoBadgesOAM: ; 254c9
 ; Template OAM data for each badge on the trainer card.
 ; Format:
 	; y, x, palette
--- /dev/null
+++ b/engine/unown_puzzle.asm
@@ -1,0 +1,878 @@
+puzcoord EQUS "* 6 +"
+PUZZLE_BORDER EQU $ee
+PUZZLE_VOID   EQU $ef
+
+UnownPuzzle: ; 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, wMisc
+	ld bc, wMiscEnd - wMisc
+	xor a
+	call ByteFill
+	ld hl, UnownPuzzleCursorGFX
+	ld de, VTiles1 tile $60
+	ld bc, 4 tiles
+	call CopyBytes
+	ld hl, UnownPuzzleStartCancelLZ
+	ld de, VTiles1 tile $6d
+	call Decompress
+	call LoadUnownPuzzlePiecesGFX
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, PUZZLE_BORDER
+	call ByteFill
+	hlcoord 4, 3
+	lb bc, 12, 12
+	ld a, PUZZLE_VOID
+	call UnownPuzzle_FillBox
+	call InitUnownPuzzlePiecePositions
+	call UnownPuzzle_UpdateTilemap
+	call PlaceStartCancelBox
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	ld [rWY], a
+	ld [wJumptableIndex], a
+	ld [wHoldingUnownPuzzlePiece], a
+	ld [wUnownPuzzleCursorPosition], a
+	ld [wUnownPuzzleHeldPiece], a
+	ld a, $93
+	ld [rLCDC], a
+	call WaitBGMap
+	ld b, SCGB_18
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $24
+	call DmgToCgbObjPal0
+	xor a
+	ld [wSolvedUnownPuzzle], a
+	call DelayFrame
+.loop
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .quit
+	call UnownPuzzleJumptable
+	ld a, [wHoldingUnownPuzzlePiece]
+	and a
+	jr nz, .holding_piece
+	ld a, [hVBlankCounter]
+	and $10
+	jr z, .clear
+.holding_piece
+	call RedrawUnownPuzzlePieces
+	jr .next
+
+.clear
+	call ClearSprites
+.next
+	call DelayFrame
+	jr .loop
+
+.quit
+	pop af
+	ld [hInMenu], a
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld a, $e3
+	ld [rLCDC], a
+	ret
+; e124e
+
+InitUnownPuzzlePiecePositions: ; e124e
+	ld c,  1
+	ld b, 16
+.load_loop
+	call Random
+	and $f
+	ld hl, .PuzzlePieceInitialPositions
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, [hl]
+	ld hl, wPuzzlePieces
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .load_loop
+	ld [hl], c
+	inc c
+	dec b
+	jr nz, .load_loop
+	ret
+; e126d
+
+.PuzzlePieceInitialPositions: ; e126d
+initpuzcoord: macro
+rept _NARG / 2
+	db \1 puzcoord \2
+	shift
+	shift
+endr
+endm
+	initpuzcoord 0,0, 0,1, 0,2, 0,3, 0,4, 0,5
+	initpuzcoord 1,0,                     1,5
+	initpuzcoord 2,0,                     2,5
+	initpuzcoord 3,0,                     3,5
+	initpuzcoord 4,0,                     4,5
+	initpuzcoord 5,0,                     5,5
+	                   ; START > CANCEL
+; e127d
+
+PlaceStartCancelBox: ; e127d
+	call PlaceStartCancelBoxBorder
+	hlcoord 5, 16
+	ld a, $f6
+	ld c, 10
+.loop
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .loop
+	ret
+; e128d
+
+PlaceStartCancelBoxBorder: ; e128d
+	hlcoord 4, 15
+	ld a, $f0
+	ld [hli], a
+	ld bc, 10
+	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, 10
+	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, 10
+	ld a, $f1
+	call ByteFill
+	hlcoord 15, 17
+	ld a, $f5
+	ld [hl], a
+	ret
+; e12ca
+
+UnownPuzzleJumptable: ; e12ca
+	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]
+; e12d9
+
+.Jumptable: ; e12d9
+	
+	dw .Function
+; e12db
+
+.Function: ; e12db
+	ld a, [hJoyPressed]
+	and START
+	jp nz, UnownPuzzle_Quit
+	ld a, [hJoyPressed]
+	and A_BUTTON
+	jp nz, UnownPuzzle_A
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .d_up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .d_down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .d_left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .d_right
+	ret
+
+.d_up
+	ld hl, wUnownPuzzleCursorPosition
+	ld a, [hl]
+	cp 1 puzcoord 0
+	ret c
+	sub $6
+	ld [hl], a
+	jr .done_joypad
+
+.d_down
+	ld hl, wUnownPuzzleCursorPosition
+	ld a, [hl]
+	cp 4 puzcoord 1
+	ret z
+	cp 4 puzcoord 2
+	ret z
+	cp 4 puzcoord 3
+	ret z
+	cp 4 puzcoord 4
+	ret z
+	cp 5 puzcoord 0
+	ret nc
+	add $6
+	ld [hl], a
+	jr .done_joypad
+
+.d_left
+	ld hl, wUnownPuzzleCursorPosition
+	ld a, [hl]
+	and a
+	ret z
+	cp 1 puzcoord 0
+	ret z
+	cp 2 puzcoord 0
+	ret z
+	cp 3 puzcoord 0
+	ret z
+	cp 4 puzcoord 0
+	ret z
+	cp 5 puzcoord 0
+	ret z
+	cp 5 puzcoord 5
+	jr z, .left_overflow
+	dec [hl]
+	jr .done_joypad
+
+.left_overflow
+	ld [hl], 5 puzcoord 0
+	jr .done_joypad
+
+.d_right
+	ld hl, wUnownPuzzleCursorPosition
+	ld a, [hl]
+	cp 0 puzcoord 5
+	ret z
+	cp 1 puzcoord 5
+	ret z
+	cp 2 puzcoord 5
+	ret z
+	cp 3 puzcoord 5
+	ret z
+	cp 4 puzcoord 5
+	ret z
+	cp 5 puzcoord 5
+	ret z
+	cp 5 puzcoord 0
+	jr z, .right_overflow
+	inc [hl]
+	jr .done_joypad
+
+.right_overflow
+	ld [hl], 5 puzcoord 5
+
+.done_joypad
+	ld a, [wHoldingUnownPuzzlePiece]
+	and a
+	jr nz, .holding_piece
+	ld de, SFX_POUND
+	jr .play_sfx
+
+.holding_piece
+	ld de, SFX_MOVE_PUZZLE_PIECE
+
+.play_sfx
+	call PlaySFX
+	ret
+; e1376
+
+UnownPuzzle_A: ; e1376
+	ld a, [wHoldingUnownPuzzlePiece]
+	and a
+	jr nz, .TryPlacePiece
+	call UnownPuzzle_CheckCurrentTileOccupancy
+	and a
+	jr z, UnownPuzzle_InvalidAction
+	ld de, SFX_MEGA_KICK
+	call PlaySFX
+	ld [hl], 0
+	ld [wUnownPuzzleHeldPiece], a
+	call RedrawUnownPuzzlePieces
+	call FillUnoccupiedPuzzleSpace
+	call WaitBGMap
+	call WaitSFX
+	ld a, TRUE
+	ld [wHoldingUnownPuzzlePiece], a
+	ret
+
+.TryPlacePiece
+	call UnownPuzzle_CheckCurrentTileOccupancy
+	and a
+	jr nz, UnownPuzzle_InvalidAction
+	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call PlaySFX
+	ld a, [wUnownPuzzleHeldPiece]
+	ld [hl], a
+	call PlaceUnownPuzzlePieceGFX
+	call WaitBGMap
+	xor a
+	ld [wUnownPuzzleHeldPiece], a
+	call RedrawUnownPuzzlePieces
+	xor a
+	ld [wHoldingUnownPuzzlePiece], a
+	call WaitSFX
+	call CheckSolvedUnownPuzzle
+	ret nc
+
+; You solved the puzzle!
+	call PlaceStartCancelBoxBorder
+	call ClearSprites
+	ld de, SFX_1ST_PLACE
+	call PlaySFX
+	call WaitSFX
+	call SimpleWaitPressAorB
+	ld a, TRUE
+	ld [wSolvedUnownPuzzle], a
+UnownPuzzle_Quit: ; e13de
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+UnownPuzzle_InvalidAction: ; e13e4
+	ld de, SFX_WRONG
+	call PlaySFX
+	call WaitSFX
+	ret
+; e13ee
+
+UnownPuzzle_FillBox: ; e13ee
+	ld de, SCREEN_WIDTH
+.row
+	push bc
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .row
+	ret
+; e13fe
+
+UnownPuzzle_UpdateTilemap: ; e13fe
+	xor a
+	ld [wUnownPuzzleCursorPosition], a
+	ld c, 6 * 6
+.loop
+	push bc
+	call UnownPuzzle_CheckCurrentTileOccupancy
+	ld [wUnownPuzzleHeldPiece], a
+	and a
+	jr z, .not_holding_piece
+	call PlaceUnownPuzzlePieceGFX
+	jr .next
+
+.not_holding_piece
+	call FillUnoccupiedPuzzleSpace
+
+.next
+	ld hl, wUnownPuzzleCursorPosition
+	inc [hl]
+	pop bc
+	dec c
+	jr nz, .loop
+	ret
+; e141f
+
+PlaceUnownPuzzlePieceGFX: ; e141f
+	ld a, $2 ; tilemap coords
+	call GetUnownPuzzleCoordData
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	call GetCurrentPuzzlePieceVTileCorner
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, 3
+.row
+	ld c, 3
+	push hl
+.col
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .col
+	add 9
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .row
+	ret
+; e1441
+
+FillUnoccupiedPuzzleSpace: ; e1441
+	ld a, 2 ; tilemap coords
+	call GetUnownPuzzleCoordData
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	ld a, 4 ; tile
+	call GetUnownPuzzleCoordData
+	ld a, [hl]
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, 3
+.row
+	ld c, 3
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .row
+	ret
+; e1463
+
+GetUnownPuzzleCoordData: ; e1463
+	ld e, a
+	ld d, 0
+	ld hl, UnownPuzzleCoordData
+	add hl, de
+	ld a, [wUnownPuzzleCursorPosition]
+	ld e, a
+rept 6
+	add hl, de
+endr
+	ret
+; e1475
+
+UnownPuzzle_CheckCurrentTileOccupancy: ; e1475
+	ld hl, wPuzzlePieces
+	ld a, [wUnownPuzzleCursorPosition]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ret
+; e1481
+
+GetCurrentPuzzlePieceVTileCorner: ; e1481
+	ld a, [wUnownPuzzleHeldPiece]
+	ld hl, .Corners
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+	ld a, [hl]
+	ret
+; e148f
+
+.Corners: ; e148f
+; 00, 01, 02
+; 0c, 0d, 0e
+; 18, 19, 1a
+	db $e0 ; no piece selected
+	db $00, $03, $06, $09
+	db $24, $27, $2a, $2d
+	db $48, $4b, $4e, $51
+	db $6c, $6f, $72, $75
+; e14a0
+
+CheckSolvedUnownPuzzle: ; e14a0
+	ld hl, .SolvedPuzzleConfiguration
+	ld de, wPuzzlePieces
+	ld c, 6 * 6
+.loop
+	ld a, [de]
+	cp [hl]
+	jr nz, .not_solved
+	inc de
+	inc hl
+	dec c
+	jr nz, .loop
+	scf
+	ret
+
+.not_solved
+	and a
+	ret
+; e14b5
+
+.SolvedPuzzleConfiguration: ; 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
+
+RedrawUnownPuzzlePieces: ; e14d9
+	call GetCurrentPuzzlePieceVTileCorner
+	ld [wd002], a
+	xor a
+	call GetUnownPuzzleCoordData ; get pixel positions
+	ld a, [hli]
+	ld b, [hl]
+	ld c, a
+	ld a, [wd002]
+	cp $e0
+	jr z, .NoPiece
+	ld hl, .OAM_HoldingPiece
+	jr .load
+
+.NoPiece
+	ld hl, .OAM_NotHoldingPiece
+
+.load
+	ld de, Sprites
+.loop
+	ld a, [hli]
+	cp -1
+	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 .loop
+; e150f
+
+.OAM_HoldingPiece: ; e150f
+	dsprite -1, -4, -1, -4, $00, $00
+	dsprite -1, -4,  0, -4, $01, $00
+	dsprite -1, -4,  0,  4, $02, $00
+	dsprite  0, -4, -1, -4, $0c, $00
+	dsprite  0, -4,  0, -4, $0d, $00
+	dsprite  0, -4,  0,  4, $0e, $00
+	dsprite  0,  4, -1, -4, $18, $00
+	dsprite  0,  4,  0, -4, $19, $00
+	dsprite  0,  4,  0,  4, $1a, $00
+	db -1
+
+.OAM_NotHoldingPiece: ; e1534
+	dsprite -1, -4, -1, -4, $00, $00
+	dsprite -1, -4,  0, -4, $01, $00
+	dsprite -1, -4,  0,  4, $00, $20 ; xflip
+	dsprite  0, -4, -1, -4, $02, $00
+	dsprite  0, -4,  0, -4, $03, $00
+	dsprite  0, -4,  0,  4, $02, $20 ; xflip
+	dsprite  0,  4, -1, -4, $00, $40 ; yflip
+	dsprite  0,  4,  0, -4, $01, $40 ; yflip
+	dsprite  0,  4,  0,  4, $00, $60 ; xflip, yflip
+	db -1
+
+UnownPuzzleCoordData: ; e1559
+
+puzzle_coords: macro
+	dbpixel \1, \2, \3, \4
+	dwcoord \5, \6
+	db \7, \8
+endm
+; OAM coords, tilemap coords, vacant tile, filler
+	puzzle_coords  3,  3, 4, 4,  1,  0, PUZZLE_BORDER, 0
+	puzzle_coords  6,  3, 4, 4,  4,  0, PUZZLE_BORDER, 0
+	puzzle_coords  9,  3, 4, 4,  7,  0, PUZZLE_BORDER, 0
+	puzzle_coords 12,  3, 4, 4, 10,  0, PUZZLE_BORDER, 0
+	puzzle_coords 15,  3, 4, 4, 13,  0, PUZZLE_BORDER, 0
+	puzzle_coords 18,  3, 4, 4, 16,  0, PUZZLE_BORDER, 0
+
+	puzzle_coords  3,  6, 4, 4,  1,  3, PUZZLE_BORDER, 0
+	puzzle_coords  6,  6, 4, 4,  4,  3, PUZZLE_VOID,   0
+	puzzle_coords  9,  6, 4, 4,  7,  3, PUZZLE_VOID,   0
+	puzzle_coords 12,  6, 4, 4, 10,  3, PUZZLE_VOID,   0
+	puzzle_coords 15,  6, 4, 4, 13,  3, PUZZLE_VOID,   0
+	puzzle_coords 18,  6, 4, 4, 16,  3, PUZZLE_BORDER, 0
+
+	puzzle_coords  3,  9, 4, 4,  1,  6, PUZZLE_BORDER, 0
+	puzzle_coords  6,  9, 4, 4,  4,  6, PUZZLE_VOID,   0
+	puzzle_coords  9,  9, 4, 4,  7,  6, PUZZLE_VOID,   0
+	puzzle_coords 12,  9, 4, 4, 10,  6, PUZZLE_VOID,   0
+	puzzle_coords 15,  9, 4, 4, 13,  6, PUZZLE_VOID,   0
+	puzzle_coords 18,  9, 4, 4, 16,  6, PUZZLE_BORDER, 0
+
+	puzzle_coords  3, 12, 4, 4,  1,  9, PUZZLE_BORDER, 0
+	puzzle_coords  6, 12, 4, 4,  4,  9, PUZZLE_VOID,   0
+	puzzle_coords  9, 12, 4, 4,  7,  9, PUZZLE_VOID,   0
+	puzzle_coords 12, 12, 4, 4, 10,  9, PUZZLE_VOID,   0
+	puzzle_coords 15, 12, 4, 4, 13,  9, PUZZLE_VOID,   0
+	puzzle_coords 18, 12, 4, 4, 16,  9, PUZZLE_BORDER, 0
+
+	puzzle_coords  3, 15, 4, 4,  1, 12, PUZZLE_BORDER, 0
+	puzzle_coords  6, 15, 4, 4,  4, 12, PUZZLE_VOID,   0
+	puzzle_coords  9, 15, 4, 4,  7, 12, PUZZLE_VOID,   0
+	puzzle_coords 12, 15, 4, 4, 10, 12, PUZZLE_VOID,   0
+	puzzle_coords 15, 15, 4, 4, 13, 12, PUZZLE_VOID,   0
+	puzzle_coords 18, 15, 4, 4, 16, 12, PUZZLE_BORDER, 0
+
+	puzzle_coords  3, 18, 4, 4,  1, 15, PUZZLE_BORDER, 0
+	puzzle_coords  6, 18, 4, 4,  4, 15, PUZZLE_BORDER, 0
+	puzzle_coords  9, 18, 4, 4,  7, 15, PUZZLE_BORDER, 0
+	puzzle_coords 12, 18, 4, 4, 10, 15, PUZZLE_BORDER, 0
+	puzzle_coords 15, 18, 4, 4, 13, 15, PUZZLE_BORDER, 0
+	puzzle_coords 18, 18, 4, 4, 16, 15, PUZZLE_BORDER, 0
+
+ConvertLoadedPuzzlePieces: ; e1631
+	ld hl, VTiles2
+	ld de, VTiles0
+	ld b, 6
+.loop
+	push bc
+	push hl
+	push hl
+	call .EnlargePuzzlePieceTiles
+	pop hl
+	ld bc, 1 tiles / 2
+	add hl, bc
+	call .EnlargePuzzlePieceTiles
+	pop hl
+	ld bc, 6 tiles
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .loop
+	call UnownPuzzle_AddPuzzlePieceBorders
+	ret
+; e1654
+
+.EnlargePuzzlePieceTiles: ; e1654
+; double size
+	ld c, 6
+.loop1
+	push bc
+	push hl
+	push hl
+	ld c, 4
+.loop2
+	push bc
+	ld a, [hli]
+	and $f0
+	swap a
+	call .GetEnlargedTile
+	ld c, a
+	ld a, [hli]
+	and $f0
+	swap a
+	call .GetEnlargedTile
+	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, .loop2
+	pop hl
+	ld c, 4
+.loop3
+	push bc
+	ld a, [hli]
+	and $f
+	call .GetEnlargedTile
+	ld c, a
+	ld a, [hli]
+	and $f
+	call .GetEnlargedTile
+	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, .loop3
+	pop hl
+	ld bc, 1 tiles
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .loop1
+	ret
+; e16aa
+
+.GetEnlargedTile: ; e16aa
+	push hl
+	ld hl, .EnlargedTiles
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+	pop hl
+	ret
+; e16b7
+
+.EnlargedTiles: ; e16b7
+
+x = 0
+rept 16
+	db ((x & %1000) * %11000) + ((x & %0100) * %1100) + ((x & %0010) * %110) + ((x & %0001) * %11)
+x = x + 1
+endr
+; e16c7
+
+UnownPuzzle_AddPuzzlePieceBorders: ; e16c7
+	ld hl, GFXHeaders
+	ld a, 8
+.loop
+	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 .LoadGFX
+	pop hl
+rept 4
+	inc hl
+endr
+	pop af
+	dec a
+	jr nz, .loop
+	ret
+; e16e2
+
+.LoadGFX: ; e16e2
+	lb bc, 4, 4
+.loop1
+	push bc
+
+.loop2
+	push de
+	push hl
+
+	ld b, 1 tiles
+.loop3
+	ld a, [de]
+	or [hl]
+	ld [hli], a
+	inc de
+	dec b
+	jr nz, .loop3
+
+	pop hl
+	ld de, 3 tiles
+	add hl, de
+	pop de
+	dec c
+	jr nz, .loop2
+
+	ld bc, 24 tiles
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .loop1
+	ret
+; e1703
+
+GFXHeaders: ; e1703
+	dw .TileBordersGFX + 0 tiles, VTiles0 tile $00
+	dw .TileBordersGFX + 1 tiles, VTiles0 tile $01
+	dw .TileBordersGFX + 2 tiles, VTiles0 tile $02
+	dw .TileBordersGFX + 3 tiles, VTiles0 tile $0c
+	dw .TileBordersGFX + 4 tiles, VTiles0 tile $0e
+	dw .TileBordersGFX + 5 tiles, VTiles0 tile $18
+	dw .TileBordersGFX + 6 tiles, VTiles0 tile $19
+	dw .TileBordersGFX + 7 tiles, VTiles0 tile $1a
+; e1723
+
+.TileBordersGFX: ; e1723
+INCBIN "gfx/unown_puzzle/tile_borders.2bpp"
+
+LoadUnownPuzzlePiecesGFX: ; e17a3
+	ld a, [ScriptVar]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .LZPointers
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, VTiles2
+	call Decompress
+	call ConvertLoadedPuzzlePieces
+	ret
+; e17bd
+
+.LZPointers: ; e17bd
+	dw KabutoPuzzleLZ
+	dw OmanytePuzzleLZ
+	dw AerodactylPuzzleLZ
+	dw HoOhPuzzleLZ
+; e17c5
+
+UnownPuzzleCursorGFX: ; e17c5
+INCBIN "gfx/unown_puzzle/cursor.2bpp"
+
+UnownPuzzleStartCancelLZ: ; e1805
+INCBIN "gfx/unown_puzzle/start_cancel.2bpp.lz"
+
+HoOhPuzzleLZ: ; e18ab
+INCBIN "gfx/unown_puzzle/hooh.2bpp.lz"
+
+AerodactylPuzzleLZ: ; e19fb
+INCBIN "gfx/unown_puzzle/aerodactyl.2bpp.lz"
+
+KabutoPuzzleLZ: ; e1bab
+INCBIN "gfx/unown_puzzle/kabuto.2bpp.lz"
+
+OmanytePuzzleLZ: ; e1c9b
+INCBIN "gfx/unown_puzzle/omanyte.2bpp.lz"
--- /dev/null
+++ b/engine/unowndex.asm
@@ -1,0 +1,119 @@
+UpdateUnownDex: ; fba18
+	ld a, [UnownLetter]
+	ld c, a
+	ld b, 26
+	ld hl, UnownDex
+.loop
+	ld a, [hli]
+	and a
+	jr z, .done
+	cp c
+	ret z
+	dec b
+	jr nz, .loop
+	ret
+
+.done
+	dec hl
+	ld [hl], c
+	ret
+; fba2e
+
+
+PrintUnownWord: ; fba2e (3e:7a2e)
+	hlcoord 4, 15
+	ld bc, 12
+	ld a, " "
+	call ByteFill
+	ld a, [wc7dd]
+	ld e, a
+	ld d, 0
+	ld hl, UnownDex
+	add hl, de
+	ld a, [hl]
+	ld e, a
+	ld d, 0
+	ld hl, UnownWords
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	hlcoord 4, 15
+.loop
+	ld a, [de]
+	cp -1
+	ret z
+	inc de
+	ld [hli], a
+	jr .loop
+; fba5a (3e:7a5a)
+
+UnownWords: ; fba5a
+	dw UnownWord1
+	dw UnownWord1
+	dw UnownWord2
+	dw UnownWord3
+	dw UnownWord4
+	dw UnownWord5
+	dw UnownWord6
+	dw UnownWord7
+	dw UnownWord8
+	dw UnownWord9
+	dw UnownWord10
+	dw UnownWord11
+	dw UnownWord12
+	dw UnownWord13
+	dw UnownWord14
+	dw UnownWord15
+	dw UnownWord16
+	dw UnownWord17
+	dw UnownWord18
+	dw UnownWord19
+	dw UnownWord20
+	dw UnownWord21
+	dw UnownWord22
+	dw UnownWord23
+	dw UnownWord24
+	dw UnownWord25
+	dw UnownWord26
+; fba90
+
+unownword: macro
+x = 1
+	rept STRLEN(\1)
+	db STRSUB(\1, x, 1) - $40
+x = x + 1
+	endr
+	db -1
+endm
+
+
+UnownWord1:	 unownword "ANGRY"
+UnownWord2:	 unownword "BEAR"
+UnownWord3:	 unownword "CHASE"
+UnownWord4:	 unownword "DIRECT"
+UnownWord5:	 unownword "ENGAGE"
+UnownWord6:	 unownword "FIND"
+UnownWord7:	 unownword "GIVE"
+UnownWord8:	 unownword "HELP"
+UnownWord9:	 unownword "INCREASE"
+UnownWord10: unownword "JOIN"
+UnownWord11: unownword "KEEP"
+UnownWord12: unownword "LAUGH"
+UnownWord13: unownword "MAKE"
+UnownWord14: unownword "NUZZLE"
+UnownWord15: unownword "OBSERVE"
+UnownWord16: unownword "PERFORM"
+UnownWord17: unownword "QUICKEN"
+UnownWord18: unownword "REASSURE"
+UnownWord19: unownword "SEARCH"
+UnownWord20: unownword "TELL"
+UnownWord21: unownword "UNDO"
+UnownWord22: unownword "VANISH"
+UnownWord23: unownword "WANT"
+UnownWord24: unownword "XXXXX"
+UnownWord25: unownword "YIELD"
+UnownWord26: unownword "ZOOM"
+; fbb32
--- a/engine/variables.asm
+++ b/engine/variables.asm
@@ -38,34 +38,34 @@
 ; $00: copy [de] to StringBuffer2
 ; $40: return address in de
 ; $80: call function
-	dwb StringBuffer2,         RETVAR_STRBUF2
-	dwb PartyCount,            RETVAR_STRBUF2
-	dwb .BattleResult,         RETVAR_EXECUTE
-	dwb BattleType,            RETVAR_ADDR_DE
-	dwb TimeOfDay,             RETVAR_STRBUF2
-	dwb .CountCaughtMons,      RETVAR_EXECUTE
-	dwb .CountSeenMons,        RETVAR_EXECUTE
-	dwb .CountBadges,          RETVAR_EXECUTE
-	dwb PlayerState,           RETVAR_ADDR_DE
-	dwb .PlayerFacing,         RETVAR_EXECUTE
-	dwb hHours,                RETVAR_STRBUF2
-	dwb .DayOfWeek,            RETVAR_EXECUTE
-	dwb MapGroup,              RETVAR_STRBUF2
-	dwb MapNumber,             RETVAR_STRBUF2
-	dwb .UnownCaught,          RETVAR_EXECUTE
-	dwb wPermission,           RETVAR_STRBUF2
-	dwb .BoxFreeSpace,         RETVAR_EXECUTE
-	dwb wBugContestMinsRemaining,                 RETVAR_STRBUF2
-	dwb XCoord,                RETVAR_STRBUF2
-	dwb YCoord,                RETVAR_STRBUF2
-	dwb wSpecialPhoneCallID,   RETVAR_STRBUF2
-	dwb wcf64,                 RETVAR_STRBUF2
-	dwb wKurtApricornQuantity, RETVAR_STRBUF2
-	dwb wCurrentCaller,        RETVAR_ADDR_DE
-	dwb wBlueCardBalance,      RETVAR_ADDR_DE
-	dwb wBuenasPassword,       RETVAR_ADDR_DE
-	dwb wdc58,                 RETVAR_STRBUF2
-	dwb NULL,                  RETVAR_STRBUF2
+	dwb StringBuffer2,                  RETVAR_STRBUF2
+	dwb PartyCount,                     RETVAR_STRBUF2
+	dwb .BattleResult,                  RETVAR_EXECUTE
+	dwb BattleType,                     RETVAR_ADDR_DE
+	dwb TimeOfDay,                      RETVAR_STRBUF2
+	dwb .CountCaughtMons,               RETVAR_EXECUTE
+	dwb .CountSeenMons,                 RETVAR_EXECUTE
+	dwb .CountBadges,                   RETVAR_EXECUTE
+	dwb PlayerState,                    RETVAR_ADDR_DE
+	dwb .PlayerFacing,                  RETVAR_EXECUTE
+	dwb hHours,                         RETVAR_STRBUF2
+	dwb .DayOfWeek,                     RETVAR_EXECUTE
+	dwb MapGroup,                       RETVAR_STRBUF2
+	dwb MapNumber,                      RETVAR_STRBUF2
+	dwb .UnownCaught,                   RETVAR_EXECUTE
+	dwb wPermission,                    RETVAR_STRBUF2
+	dwb .BoxFreeSpace,                  RETVAR_EXECUTE
+	dwb wBugContestMinsRemaining,       RETVAR_STRBUF2
+	dwb XCoord,                         RETVAR_STRBUF2
+	dwb YCoord,                         RETVAR_STRBUF2
+	dwb wSpecialPhoneCallID,            RETVAR_STRBUF2
+	dwb wNrOfBeatenBattleTowerTrainers, RETVAR_STRBUF2
+	dwb wKurtApricornQuantity,          RETVAR_STRBUF2
+	dwb wCurrentCaller,                 RETVAR_ADDR_DE
+	dwb wBlueCardBalance,               RETVAR_ADDR_DE
+	dwb wBuenasPassword,                RETVAR_ADDR_DE
+	dwb wKenjiBreakTimer,               RETVAR_STRBUF2
+	dwb NULL,                           RETVAR_STRBUF2
 ; 806c5
 
 .CountCaughtMons: ; 806c5
--- /dev/null
+++ b/engine/warp_connection.asm
@@ -1,0 +1,439 @@
+
+RunCallback_05_03: ; 1045b0
+	call Clearwc7e8
+	call ResetMapBufferEventFlags
+	call ResetFlashIfOutOfCave
+	call GetCurrentMapTrigger
+	call ResetBikeFlags
+	ld a, $5
+	call RunMapCallback
+RunCallback_03: ; 1045c4
+	callba ClearCmdQueue
+	ld a, $3
+	call RunMapCallback
+	call GetMapHeaderTimeOfDayNybble
+	ld [wMapTimeOfDay], a
+	ret
+
+
+EnterMapConnection: ; 1045d6
+; Return carry if a connection has been entered.
+	ld a, [wPlayerStepDirection]
+	and a
+	jp z, EnterSouthConnection
+	cp 1
+	jp z, EnterNorthConnection
+	cp 2
+	jp z, EnterWestConnection
+	cp 3
+	jp z, EnterEastConnection
+	ret
+; 1045ed
+
+
+EnterWestConnection: ; 1045ed
+	ld a, [WestConnectedMapGroup]
+	ld [MapGroup], a
+	ld a, [WestConnectedMapNumber]
+	ld [MapNumber], a
+	ld a, [WestConnectionStripXOffset]
+	ld [XCoord], a
+	ld a, [WestConnectionStripYOffset]
+	ld hl, YCoord
+	add [hl]
+	ld [hl], a
+	ld c, a
+	ld hl, WestConnectionWindow
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	srl c
+	jr z, .skip_to_load
+	ld a, [WestConnectedMapWidth]
+	add 6
+	ld e, a
+	ld d, 0
+
+.loop
+	add hl, de
+	dec c
+	jr nz, .loop
+
+.skip_to_load
+	ld a, l
+	ld [wOverworldMapAnchor], a
+	ld a, h
+	ld [wOverworldMapAnchor + 1], a
+	jp EnteredConnection
+; 104629
+
+
+EnterEastConnection: ; 104629
+	ld a, [EastConnectedMapGroup]
+	ld [MapGroup], a
+	ld a, [EastConnectedMapNumber]
+	ld [MapNumber], a
+	ld a, [EastConnectionStripXOffset]
+	ld [XCoord], a
+	ld a, [EastConnectionStripYOffset]
+	ld hl, YCoord
+	add [hl]
+	ld [hl], a
+	ld c, a
+	ld hl, EastConnectionWindow
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	srl c
+	jr z, .skip_to_load
+	ld a, [EastConnectedMapWidth]
+	add 6
+	ld e, a
+	ld d, 0
+
+.loop
+	add hl, de
+	dec c
+	jr nz, .loop
+
+.skip_to_load
+	ld a, l
+	ld [wOverworldMapAnchor], a
+	ld a, h
+	ld [wOverworldMapAnchor + 1], a
+	jp EnteredConnection
+; 104665
+
+
+EnterNorthConnection: ; 104665
+	ld a, [NorthConnectedMapGroup]
+	ld [MapGroup], a
+	ld a, [NorthConnectedMapNumber]
+	ld [MapNumber], a
+	ld a, [NorthConnectionStripYOffset]
+	ld [YCoord], a
+	ld a, [NorthConnectionStripXOffset]
+	ld hl, XCoord
+	add [hl]
+	ld [hl], a
+	ld c, a
+	ld hl, NorthConnectionWindow
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld b, 0
+	srl c
+	add hl, bc
+	ld a, l
+	ld [wOverworldMapAnchor], a
+	ld a, h
+	ld [wOverworldMapAnchor + 1], a
+	jp EnteredConnection
+; 104696
+
+
+EnterSouthConnection: ; 104696
+	ld a, [SouthConnectedMapGroup]
+	ld [MapGroup], a
+	ld a, [SouthConnectedMapNumber]
+	ld [MapNumber], a
+	ld a, [SouthConnectionStripYOffset]
+	ld [YCoord], a
+	ld a, [SouthConnectionStripXOffset]
+	ld hl, XCoord
+	add [hl]
+	ld [hl], a
+	ld c, a
+	ld hl, SouthConnectionWindow
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld b, 0
+	srl c
+	add hl, bc
+	ld a, l
+	ld [wOverworldMapAnchor], a
+	ld a, h
+	ld [wOverworldMapAnchor + 1], a
+	; fallthrough
+; 1046c4
+
+EnteredConnection: ; 1046c4
+	scf
+	ret
+; 1046c6
+
+LoadWarpData: ; 1046c6
+	call .SaveDigWarp
+	call .SetSpawn
+	ld a, [wNextWarp]
+	ld [WarpNumber], a
+	ld a, [wNextMapGroup]
+	ld [MapGroup], a
+	ld a, [wNextMapNumber]
+	ld [MapNumber], a
+	ret
+
+.SaveDigWarp: ; 1046df (41:46df)
+	call GetMapPermission
+	call CheckOutdoorMap
+	ret nz
+	ld a, [wNextMapGroup]
+	ld b, a
+	ld a, [wNextMapNumber]
+	ld c, a
+	call GetAnyMapPermission
+	call CheckIndoorMap
+	ret nz
+	ld a, [wPrevMapGroup]
+	cp GROUP_MOUNT_MOON_SQUARE
+	jr nz, .not_mt_moon_or_tin_tower
+	ld a, [wPrevMapNumber]
+	cp MAP_MOUNT_MOON_SQUARE
+	ret z
+	cp MAP_TIN_TOWER_ROOF
+	ret z
+.not_mt_moon_or_tin_tower
+	ld a, [wPrevWarp]
+	ld [wDigWarp], a
+	ld a, [wPrevMapGroup]
+	ld [wDigMapGroup], a
+	ld a, [wPrevMapNumber]
+	ld [wDigMapNumber], a
+	ret
+
+.SetSpawn: ; 104718 (41:4718)
+	call GetMapPermission
+	call CheckOutdoorMap
+	ret nz
+	ld a, [wNextMapGroup]
+	ld b, a
+	ld a, [wNextMapNumber]
+	ld c, a
+	call GetAnyMapPermission
+	call CheckIndoorMap
+	ret nz
+	ld a, [wNextMapGroup]
+	ld b, a
+	ld a, [wNextMapNumber]
+	ld c, a
+	call GetAnyMapTileset
+	ld a, c
+	cp TILESET_POKECENTER
+	jr z, .pokecenter_pokecom
+	cp TILESET_POKECOM_CENTER
+	jr z, .pokecenter_pokecom
+	ret
+.pokecenter_pokecom
+	ld a, [wPrevMapGroup]
+	ld [wLastSpawnMapGroup], a
+	ld a, [wPrevMapNumber]
+	ld [wLastSpawnMapNumber], a
+	ret
+
+LoadMapTimeOfDay: ; 104750
+	ld hl, VramState
+	res 6, [hl]
+	ld a, $1
+	ld [wSpriteUpdatesEnabled], a
+	callba ReplaceTimeOfDayPals
+	callba UpdateTimeOfDayPal
+	call OverworldTextModeSwitch
+	call Function104770
+	call Function1047a3
+	ret
+
+Function104770: ; 104770 (41:4770)
+	ld a, VBGMap0 / $100
+	ld [wBGMapAnchor + 1], a
+	xor a
+	ld [wBGMapAnchor], a
+	ld [hSCY], a
+	ld [hSCX], a
+	callba Function5958
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	xor a
+	ld bc, VBGMap1 - VBGMap0
+	hlbgcoord 0, 0
+	call ByteFill
+	pop af
+	ld [rVBK], a
+	ld a, $60
+	ld bc, VBGMap1 - VBGMap0
+	hlbgcoord 0, 0
+	call ByteFill
+	ret
+
+Function1047a3: ; 1047a3 (41:47a3)
+	decoord 0, 0
+	call .copy
+	ld a, [hCGB]
+	and a
+	ret z
+
+	decoord 0, 0, AttrMap
+	ld a, $1
+	ld [rVBK], a
+.copy:
+	hlbgcoord 0, 0
+	ld c, SCREEN_WIDTH
+	ld b, SCREEN_HEIGHT
+.row
+	push bc
+.column
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .column
+	ld bc, BG_MAP_WIDTH - SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .row
+	ld a, $0
+	ld [rVBK], a
+	ret
+
+LoadGraphics: ; 1047cf
+	call LoadTilesetHeader
+	call LoadTileset
+	xor a
+	ld [hMapAnims], a
+	xor a
+	ld [hTileAnimFrame], a
+	callba RefreshSprites
+	call LoadFontsExtra
+	callba LoadOverworldFont
+	ret
+
+LoadMapPalettes: ; 1047eb
+	ld b, SCGB_MAPPALS
+	jp GetSGBLayout
+; 1047f0
+
+RefreshMapSprites: ; 1047f0
+	call ClearSprites
+	callba ReturnFromMapSetupScript
+	call GetMovementPermissions
+	callba Function579d
+	callba CheckReplaceKrisSprite
+	ld hl, wPlayerSpriteSetupFlags
+	bit 6, [hl]
+	jr nz, .skip
+	ld hl, VramState
+	set 0, [hl]
+	call Function2e31
+.skip
+	ld a, [wPlayerSpriteSetupFlags]
+	and %00011100
+	ld [wPlayerSpriteSetupFlags], a
+	ret
+
+CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
+	ld a, [wPlayerStepDirection]
+	cp STANDING
+	ret z
+	and a ; DOWN
+	jr z, .down
+	cp UP
+	jr z, .up
+	cp LEFT
+	jr z, .left
+	cp RIGHT
+	jr z, .right
+	and a
+	ret
+
+.down
+	ld a, [PlayerNextMapY]
+	sub 4
+	ld b, a
+	ld a, [MapHeight]
+	add a
+	cp b
+	jr z, .ok
+	and a
+	ret
+
+.up
+	ld a, [PlayerNextMapY]
+	sub 4
+	cp -1
+	jr z, .ok
+	and a
+	ret
+
+.left
+	ld a, [PlayerNextMapX]
+	sub $4
+	cp -1
+	jr z, .ok
+	and a
+	ret
+
+.right
+	ld a, [PlayerNextMapX]
+	sub 4
+	ld b, a
+	ld a, [MapWidth]
+	add a
+	cp b
+	jr z, .ok
+	and a
+	ret
+
+.ok
+	scf
+	ret
+
+
+GetCoordOfUpperLeftCorner:: ; 10486d
+	ld hl, OverworldMap
+	ld a, [XCoord]
+	bit 0, a
+	jr nz, .increment_then_halve1
+	srl a
+	add $1
+	jr .resume
+
+.increment_then_halve1
+	add $1
+	srl a
+
+.resume
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [MapWidth]
+	add $6
+	ld c, a
+	ld b, $0
+	ld a, [YCoord]
+	bit 0, a
+	jr nz, .increment_then_halve2
+	srl a
+	add $1
+	jr .resume2
+
+.increment_then_halve2
+	add $1
+	srl a
+
+.resume2
+	call AddNTimes
+	ld a, l
+	ld [wOverworldMapAnchor], a
+	ld a, h
+	ld [wOverworldMapAnchor + 1], a
+	ld a, [YCoord]
+	and $1
+	ld [wMetatileStandingY], a
+	ld a, [XCoord]
+	and $1
+	ld [wMetatileStandingX], a
+	ret
+; 1048ba
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -1,30 +1,34 @@
 LoadWildMonData: ; 29ff8
 	call _GrassWildmonLookup
 	jr c, .copy
-	ld hl, wd25a
+	ld hl, wMornEncounterRate
 	xor a
 	ld [hli], a
 	ld [hli], a
 	ld [hl], a
 	jr .done_copy
+
 .copy
 	inc hl
 	inc hl
-	ld de, wd25a
-	ld bc, $3
+	ld de, wMornEncounterRate
+	ld bc, 3
 	call CopyBytes
 .done_copy
 	call _WaterWildmonLookup
-	ld a, $0
+	ld a, 0
 	jr nc, .no_copy
 	inc hl
 	inc hl
 	ld a, [hl]
 .no_copy
-	ld [wd25d], a
+	ld [wWaterEncounterRate], a
 	ret
 
-Function2a01f: ; 2a01f
+FindNest: ; 2a01f
+; Parameters:
+; e: 0 = Johto, 1 = Kanto
+; wNamedObjectIndexBuffer: species
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
@@ -34,25 +38,24 @@
 	jr nz, .kanto
 	decoord 0, 0
 	ld hl, JohtoGrassWildMons
-	call Function2a052
+	call .FindGrass
 	ld hl, JohtoWaterWildMons
-	call Function2a06e
-	call Function2a0b7
-	call Function2a0cf
+	call .FindWater
+	call .RoamMon1
+	call .RoamMon2
 	ret
 
 .kanto
 	decoord 0, 0
 	ld hl, KantoGrassWildMons
-	call Function2a052
+	call .FindGrass
 	ld hl, KantoWaterWildMons
-	jp Function2a06e
+	jp .FindWater
 ; 2a052
 
-Function2a052: ; 2a052
-.loop
+.FindGrass: ; 2a052
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
 	push hl
 	ld a, [hli]
@@ -62,23 +65,22 @@
 rept 3
 	inc hl
 endr
-	ld a, $15
-	call Function2a088
-	jr nc, .next
+	ld a, NUM_WILDMONS_PER_AREA_TIME_OF_DAY * 3
+	call .SearchMapForMon
+	jr nc, .next_grass
 	ld [de], a
 	inc de
 
-.next
+.next_grass
 	pop hl
-	ld bc, $2f
+	ld bc, WILDMON_GRASS_STRUCTURE_LENGTH
 	add hl, bc
-	jr .loop
+	jr .FindGrass
 ; 2a06e
 
-Function2a06e: ; 2a06e
-.loop
+.FindWater: ; 2a06e
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
 	push hl
 	ld a, [hli]
@@ -86,24 +88,24 @@
 	ld a, [hli]
 	ld c, a
 	inc hl
-	ld a, $3
-	call Function2a088
-	jr nc, .next
+	ld a, 3
+	call .SearchMapForMon
+	jr nc, .next_water
 	ld [de], a
 	inc de
 
-.next
+.next_water
 	pop hl
-	ld bc, 9
+	ld bc, 3 * 3
 	add hl, bc
-	jr .loop
+	jr .FindWater
 ; 2a088
 
-Function2a088: ; 2a088
+.SearchMapForMon: ; 2a088
 	inc hl
-.loop
+.ScanMapLoop
 	push af
-	ld a, [wd265]
+	ld a, [wNamedObjectIndexBuffer]
 	cp [hl]
 	jr z, .found
 rept 2
@@ -111,44 +113,44 @@
 endr
 	pop af
 	dec a
-	jr nz, .loop
+	jr nz, .ScanMapLoop
 	and a
 	ret
 
 .found
 	pop af
-	jp Function2a09c
+	jp .AppendNest
 ; 2a09c
 
-Function2a09c: ; 2a09c
+.AppendNest: ; 2a09c
 	push de
 	call GetWorldMapLocation
 	ld c, a
 	hlcoord 0, 0
 	ld de, SCREEN_WIDTH * SCREEN_HEIGHT
-.loop
+.AppendNestLoop
 	ld a, [hli]
 	cp c
-	jr z, .found
+	jr z, .found_nest
 	dec de
 	ld a, e
 	or d
-	jr nz, .loop
+	jr nz, .AppendNestLoop
 	ld a, c
 	pop de
 	scf
 	ret
 
-.found
+.found_nest
 	pop de
 	and a
 	ret
 ; 2a0b7
 
-Function2a0b7: ; 2a0b7
+.RoamMon1: ; 2a0b7
 	ld a, [wRoamMon1Species]
 	ld b, a
-	ld a, [wd265]
+	ld a, [wNamedObjectIndexBuffer]
 	cp b
 	ret nz
 	ld a, [wRoamMon1MapGroup]
@@ -155,7 +157,7 @@
 	ld b, a
 	ld a, [wRoamMon1MapNumber]
 	ld c, a
-	call Function2a09c
+	call .AppendNest
 	ret nc
 	ld [de], a
 	inc de
@@ -162,10 +164,10 @@
 	ret
 ; 2a0cf
 
-Function2a0cf: ; 2a0cf
+.RoamMon2: ; 2a0cf
 	ld a, [wRoamMon2Species]
 	ld b, a
-	ld a, [wd265]
+	ld a, [wNamedObjectIndexBuffer]
 	cp b
 	ret nz
 	ld a, [wRoamMon2MapGroup]
@@ -172,7 +174,7 @@
 	ld b, a
 	ld a, [wRoamMon2MapNumber]
 	ld c, a
-	call Function2a09c
+	call .AppendNest
 	ret nc
 	ld [de], a
 	inc de
@@ -209,7 +211,7 @@
 ; 2a111
 
 GetMapEncounterRate: ; 2a111
-	ld hl, wd25a
+	ld hl, wMornEncounterRate
 	call CheckOnWater
 	ld a, 3
 	jr z, .ok
@@ -446,10 +448,10 @@
 	bit 2, [hl]
 	pop hl
 	jr z, .CheckYanma
-	ld a, [wdfcc]
+	ld a, [wDunsparceMapGroup]
 	cp d
 	jr nz, .CheckYanma
-	ld a, [wdfcd]
+	ld a, [wDunsparceMapNumber]
 	cp e
 	jr nz, .CheckYanma
 	call LookUpWildmonsForMapDE
@@ -463,10 +465,10 @@
 	bit 3, [hl]
 	pop hl
 	jr z, _NoSwarmWildmon
-	ld a, [wdc5a]
+	ld a, [wYanmaMapGroup]
 	cp d
 	jr nz, _NoSwarmWildmon
-	ld a, [wdc5b]
+	ld a, [wYanmaMapNumber]
 	cp e
 	jr nz, _NoSwarmWildmon
 	call LookUpWildmonsForMapDE
@@ -702,11 +704,11 @@
 rept 2
 	add hl, bc
 endr
-	ld a, [wdfe7]
+	ld a, [wRoamMons_LastMapGroup]
 	cp [hl]
 	jr nz, .done
 	inc hl
-	ld a, [wdfe6]
+	ld a, [wRoamMons_LastMapNumber]
 	cp [hl]
 	jr z, .update_loop
 	dec hl
@@ -787,14 +789,14 @@
 ; 2a3f6
 
 _BackUpMapIndices: ; 2a3f6
-	ld a, [wdfe4]
-	ld [wdfe6], a
-	ld a, [wdfe5]
-	ld [wdfe7], a
+	ld a, [wRoamMons_CurrentMapNumber]
+	ld [wRoamMons_LastMapNumber], a
+	ld a, [wRoamMons_CurrentMapGroup]
+	ld [wRoamMons_LastMapGroup], a
 	ld a, [MapNumber]
-	ld [wdfe4], a
+	ld [wRoamMons_CurrentMapNumber], a
 	ld a, [MapGroup]
-	ld [wdfe5], a
+	ld [wRoamMons_CurrentMapGroup], a
 	ret
 ; 2a40f
 
@@ -892,7 +894,7 @@
 	ld de, StringBuffer1
 	call CopyName1
 	ld a, c
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, UnknownText_0x2a51a
 	call PrintText
@@ -945,7 +947,7 @@
 endr
 	inc hl
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, StringBuffer4
@@ -1029,7 +1031,7 @@
 	inc hl ; species
 	ld a, BANK(Trainers)
 	call GetFarByte
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, StringBuffer4
--- a/event/basement_key.asm
+++ b/event/basement_key.asm
@@ -18,17 +18,17 @@
 ; Let's use the Basement Key
 	ld hl, .BasementKeyScript
 	call QueueScript
-	ld a, 1
-	ld [wd0ec], a
+	ld a, TRUE
+	ld [wItemEffectSucceeded], a
 	ret
 
 .nope
-	ld a, $0
-	ld [wd0ec], a
+	ld a, FALSE
+	ld [wItemEffectSucceeded], a
 	ret
 ; 507e1
 
 .BasementKeyScript: ; 0x507e1
-	loadmovesprites
+	closetext
 	farjump BasementDoorScript
 ; 0x507e6
--- a/event/battle_tower.asm
+++ b/event/battle_tower.asm
@@ -1,29 +1,29 @@
-Function8b1e1: ; 8b1e1
-	ld de, Unknown_8b1ed
-	call Function8b25b
+CheckForMobileBattleRules: ; 8b1e1
+	ld de, .PointerTables
+	call BattleTower_ExecuteJumptable
 	ret z
-	call Function8b231
+	call BattleTower_PleaseReturnWhenReady
 	scf
 	ret
 ; 8b1ed
 
-Unknown_8b1ed: ; 8b1ed
+.PointerTables: ; 8b1ed
 	db 2
-	dw Unknown_8b1f2
-	dw Unknown_8b1f6
+	dw .Functions
+	dw .TextPointers
 
-Unknown_8b1f2: ; 8b1f2
-	dw Function8b2bb
-	dw Function8b2c1
+.Functions: ; 8b1f2
+	dw BattleTower_CheckPartyLengthIs3
+	dw BattleTower_CheckPartyHasThreeMonsThatAreNotEggs
 ; 8b1f6
 
-Unknown_8b1f6: ; 8b1f6
-	dw UnknownText_0x8b1fc
-	dw UnknownText_0x8b23d
-	dw UnknownText_0x8b242
+.TextPointers: ; 8b1f6
+	dw .ExcuseMeText
+	dw JumpText_NeedAtLeastThreeMon
+	dw JumpText_EggDoesNotQualify
 ; 8b1fc
 
-UnknownText_0x8b1fc: ; 0x8b1fc
+.ExcuseMeText: ; 0x8b1fc
 	; Excuse me!
 	text_jump UnknownText_0x1c5937
 	db "@"
@@ -34,20 +34,20 @@
 	ld [hl], "3"
 	inc hl
 	ld [hl], "@"
-	ld de, CheckForBattleTowerRules_FunctionsText
-	call Function8b25b
+	ld de, .PointerTables
+	call BattleTower_ExecuteJumptable
 	ret z
-	call Function8b231
+	call BattleTower_PleaseReturnWhenReady
 	scf
 	ret
 ; 8b215
 
-CheckForBattleTowerRules_FunctionsText: ; 8b215
+.PointerTables: ; 8b215
 	db 4
-	dw CheckForBattleTowerRules_Functions
-	dw CheckForBattleTowerRules_Text
+	dw .Functions
+	dw .TextPointers
 
-CheckForBattleTowerRules_Functions: ; 8b21a
+.Functions: ; 8b21a
 	dw Function_PartyCountEq3
 	dw Function_PartySpeciesAreUnique
 	dw Function_PartyItemsAreUnique
@@ -54,7 +54,7 @@
 	dw Function_HasPartyAnEgg
 ; 8b222
 
-CheckForBattleTowerRules_Text: ; 8b222
+.TextPointers: ; 8b222
 	dw JumpText_ExcuseMeYoureNotReady
 	dw JumpText_OnlyThreePkmnMayBeEntered
 	dw JumpText_ThePkmnMustAllBeDifferentKinds
@@ -68,25 +68,25 @@
 	db "@"
 ; 0x8b231
 
-Function8b231: ; 8b231
-	ld hl, UnknownText_0x8b238
+BattleTower_PleaseReturnWhenReady: ; 8b231
+	ld hl, .PleaseReturnWhenReady
 	call PrintText
 	ret
 ; 8b238
 
-UnknownText_0x8b238: ; 0x8b238
+.PleaseReturnWhenReady: ; 0x8b238
 	; Please return when you're ready.
 	text_jump UnknownText_0x1c5962
 	db "@"
 ; 0x8b23d
 
-UnknownText_0x8b23d: ; 0x8b23d
+JumpText_NeedAtLeastThreeMon: ; 0x8b23d
 	; You need at least three #MON.
 	text_jump UnknownText_0x1c5983
 	db "@"
 ; 0x8b242
 
-UnknownText_0x8b242: ; 0x8b242
+JumpText_EggDoesNotQualify: ; 0x8b242
 	; Sorry, an EGG doesn't qualify.
 	text_jump UnknownText_0x1c59a3
 	db "@"
@@ -116,22 +116,22 @@
 	db "@"
 ; 0x8b25b
 
-Function8b25b: ; 8b25b
+BattleTower_ExecuteJumptable: ; 8b25b
 	ld bc, 0
-.asm_8b25e
-	call Function8b26c
-	call c, Function8b28e
-	call Function8b276
-	jr nz, .asm_8b25e
+.loop
+	call .DoJumptableFunction
+	call c, .PrintFailureText
+	call .Next_CheckReachedEnd
+	jr nz, .loop
 	ld a, b
 	and a
 	ret
 ; 8b26c
 
-Function8b26c: ; 8b26c
+.DoJumptableFunction: ; 8b26c
 	push de
 	push bc
-	call Function8b27a
+	call .GetFunctionPointer
 	ld a, c
 	rst JumpTable
 	pop bc
@@ -139,7 +139,7 @@
 	ret
 ; 8b276
 
-Function8b276: ; 8b276
+.Next_CheckReachedEnd: ; 8b276
 	inc c
 	ld a, [de]
 	cp c
@@ -146,7 +146,7 @@
 	ret
 ; 8b27a
 
-Function8b27a: ; 8b27a
+.GetFunctionPointer: ; 8b27a
 	inc de
 	ld a, [de]
 	ld l, a
@@ -156,7 +156,7 @@
 	ret
 ; 8b281
 
-Function8b281: ; 8b281
+.GetTextPointers: ; 8b281
 rept 3
 	inc de
 endr
@@ -168,7 +168,7 @@
 	ret
 ; 8b28a
 
-Function8b28a: ; 8b28a
+.LoadTextPointer: ; 8b28a
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -175,31 +175,31 @@
 	ret
 ; 8b28e
 
-Function8b28e: ; 8b28e
+.PrintFailureText: ; 8b28e
 	push de
 	push bc
 	ld a, b
 	and a
-	call z, Function8b29d
+	call z, .PrintFirstText
 	pop bc
-	call Function8b2a9
+	call .PrintNthText
 	ld b, $1
 	pop de
 	ret
 ; 8b29d
 
-Function8b29d: ; 8b29d
+.PrintFirstText: ; 8b29d
 	push de
-	call Function8b281
-	call Function8b28a
+	call .GetTextPointers
+	call .LoadTextPointer
 	call PrintText
 	pop de
 	ret
 ; 8b2a9
 
-Function8b2a9: ; 8b2a9
+.PrintNthText: ; 8b2a9
 	push bc
-	call Function8b281
+	call .GetTextPointers
 rept 2
 	inc hl
 endr
@@ -207,32 +207,32 @@
 rept 2
 	add hl, bc
 endr
-	call Function8b28a
+	call .LoadTextPointer
 	call PrintText
 	pop bc
 	ret
 ; 8b2bb
 
-Function8b2bb: ; 8b2bb
+BattleTower_CheckPartyLengthIs3: ; 8b2bb
 	ld a, [PartyCount]
 	cp 3
 	ret
 ; 8b2c1
 
-Function8b2c1: ; 8b2c1
+BattleTower_CheckPartyHasThreeMonsThatAreNotEggs: ; 8b2c1
 	ld hl, PartyCount
 	ld a, [hli]
 	ld b, $0
 	ld c, a
-.asm_8b2c8
+.loop
 	ld a, [hli]
 	cp EGG
-	jr z, .asm_8b2ce
+	jr z, .egg
 	inc b
 
-.asm_8b2ce
+.egg
 	dec c
-	jr nz, .asm_8b2c8
+	jr nz, .loop
 	ld a, [PartyCount]
 	cp b
 	ret z
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -1,6 +1,6 @@
 SpecialBuenasPassword: ; 8af6b
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	ld hl, .MenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [wBuenasPassword]
@@ -10,7 +10,7 @@
 	add c
 	add $2
 	ld [wMenuBorderRightCoord], a
-	call BackUpTiles
+	call PushWindow
 	call DoNthMenu ; menu
 	callba Buena_ExitMenu
 	ld b, $0
@@ -69,8 +69,8 @@
 	ld [wMenuScrollPosition], a
 	ld a, $1
 	ld [MenuSelection], a
-	call Function8b0d6
-	call Function8b090
+	call Buena_PlacePrizeMenuBox
+	call Buena_DisplayBlueCardBalance
 	ld hl, .Text_AskWhichPrize
 	call PrintText
 	jr .okay
@@ -82,13 +82,13 @@
 .okay
 	call DelayFrame
 	call UpdateSprites
-	call Function8b097
-	call Function8b0e2
+	call PrintBlueCardBalance
+	call Buena_PrizeMenu
 	jr z, .done
-	ld [wcf75], a
+	ld [MenuSelectionQuantity], a
 	call Buena_getprize
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	ld hl, .Text_IsThatRight
 	call BuenaPrintText
@@ -95,7 +95,7 @@
 	call YesNoBox
 	jr c, .loop
 
-	ld a, [wcf75]
+	ld a, [MenuSelectionQuantity]
 	call Buena_getprize
 	inc hl
 	ld a, [hld]
@@ -118,7 +118,7 @@
 	ld a, [wBlueCardBalance]
 	sub c
 	ld [wBlueCardBalance], a
-	call Function8b097
+	call PrintBlueCardBalance
 	jr .Purchase
 
 .InsufficientBalance
@@ -139,8 +139,8 @@
 	jr .loop
 
 .done
-	call WriteBackup
-	call WriteBackup
+	call CloseWindow
+	call CloseWindow
 	ld hl, .Text_PleaseComeBackAgain
 	call PrintText
 	call JoyWaitAorB
@@ -183,28 +183,28 @@
 	db "@"
 ; 0x8b090
 
-Function8b090: ; 8b090
-	ld hl, MenuDataHeader_0x8b0d1
+Buena_DisplayBlueCardBalance: ; 8b090
+	ld hl, BlueCardBalanceMenuDataHeader
 	call LoadMenuDataHeader
 	ret
 ; 8b097
 
-Function8b097: ; 8b097
+PrintBlueCardBalance: ; 8b097
 	ld de, wBlueCardBalance
-	call Function8b09e
+	call .DrawBox
 	ret
 ; 8b09e
 
-Function8b09e: ; 8b09e
+.DrawBox: ; 8b09e
 	push de
 	xor a
 	ld [hBGMapMode], a
-	ld hl, MenuDataHeader_0x8b0d1
+	ld hl, BlueCardBalanceMenuDataHeader
 	call CopyMenuDataHeader
 	call MenuBox
 	call UpdateSprites
 	call MenuBoxCoord2Tile
-	ld bc, $0015
+	ld bc, SCREEN_WIDTH + 1
 	add hl, bc
 	ld de, .Points_string
 	call PlaceString
@@ -211,7 +211,7 @@
 	ld h, b
 	ld l, c
 	inc hl
-	ld a, $7f
+	ld a, " "
 	ld [hli], a
 	ld [hld], a
 	pop de
@@ -224,13 +224,13 @@
 	db "Points@"
 ; 8b0d1
 
-MenuDataHeader_0x8b0d1: ; 0x8b0d1
+BlueCardBalanceMenuDataHeader: ; 0x8b0d1
 	db $40 ; flags
 	db 11, 00 ; start coords
 	db 13, 11 ; end coords
 ; 8b0d6
 
-Function8b0d6: ; 8b0d6
+Buena_PlacePrizeMenuBox: ; 8b0d6
 	ld hl, .menudataheader
 	call LoadMenuDataHeader
 	ret
@@ -242,29 +242,29 @@
 	db 11, 17 ; end coords
 ; 8b0e2
 
-Function8b0e2: ; 8b0e2
+Buena_PrizeMenu: ; 8b0e2
 	ld hl, .MenuDataHeader
 	call CopyMenuDataHeader
 	ld a, [MenuSelection]
 	ld [wMenuCursorBuffer], a
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	ld [hBGMapMode], a
 	call InitScrollingMenu
 	call UpdateSprites
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld a, [MenuSelection]
 	ld c, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [MenuSelection], a
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp $2
-	jr z, .asm_8b111
+	jr z, .cancel
 	ld a, c
 	and a
 	ret nz
 
-.asm_8b111
+.cancel
 	xor a
 	ret
 ; 8b113
@@ -281,8 +281,8 @@
 
 .MenuData2: ; 0x8b11c
 	db $10 ; flags
-	db 4 ; items
-	db $d, $1
+	db 4, 13 ; rows, columns
+	db 1 ; spacing
 	dba .indices
 	dba .prizeitem
 	dba .prizepoints
--- a/event/bug_contest_2.asm
+++ b/event/bug_contest_2.asm
@@ -27,9 +27,9 @@
 .next
 ; Choose a flag at uniform random to be set.
 	call Random
-	cp $fa ; 250
+	cp 250
 	jr nc, .next
-	ld c, $19 ; 25
+	ld c, 25
 	call SimpleDivide
 	ld e, b
 	ld d, 0
@@ -124,7 +124,7 @@
 	ld b, $1
 .loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .done
 	inc b
 	jr .loop
--- a/event/bug_contest_judging.asm
+++ b/event/bug_contest_judging.asm
@@ -1,7 +1,7 @@
 _BugContestJudging: ; 1369d
 	call ContestScore
 	callba MobileFn_105f79
-	call Function13819
+	call BugContest_JudgeContestants
 	ld a, [wBugContestThirdPlacePersonID]
 	call LoadContestantName
 	ld a, [wBugContestThirdPlaceMon]
@@ -23,13 +23,12 @@
 	call GetPokemonName
 	ld hl, BugContest_FirstPlaceText
 	call PrintText
-	jp Function13807
+	jp BugContest_GetPlayersResult
 ; 136eb
 
 BugContest_FirstPlaceText: ; 0x136eb
 	text_jump ContestJudging_FirstPlaceText
 	start_asm
-BugContest_FirstPlace: ; 136f0
 	ld de, SFX_1ST_PLACE
 	call PlaySFX
 	call WaitSFX
@@ -47,7 +46,6 @@
 	; Placing second was @ , who caught a @ !@ @
 	text_jump ContestJudging_SecondPlaceText
 	start_asm
-BugContest_SecondPlace: ; 13707
 	ld de, SFX_2ND_PLACE
 	call PlaySFX
 	call WaitSFX
@@ -65,9 +63,6 @@
 	; 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
@@ -215,13 +210,13 @@
 	dbw KAKUNA,     259
 ; 13807
 
-Function13807: ; 13807
+BugContest_GetPlayersResult: ; 13807
 	ld hl, wBugContestThirdPlacePersonID
 	ld de, -4
 	ld b, 3
 .loop
 	ld a, [hl]
-	cp 1
+	cp 1 ; Player
 	jr z, .done
 	add hl, de
 	dec b
@@ -231,17 +226,17 @@
 	ret
 ; 13819
 
-Function13819: ; 13819
+BugContest_JudgeContestants: ; 13819
 	call ClearContestResults
 	call ComputeAIContestantScores
 	ld hl, wBugContestTempPersonID
-	ld a, 1
+	ld a, 1 ; Player
 	ld [hli], a
 	ld a, [wContestMon]
 	ld [hli], a
 	ld a, [hProduct]
 	ld [hli], a
-	ld a, [hMultiplicand]
+	ld a, [hProduct + 1]
 	ld [hl], a
 	call DetermineContestWinners
 	ret
@@ -248,8 +243,8 @@
 ; 13833
 
 ClearContestResults: ; 13833
-	ld hl, wBugContestFirstPlacePersonID
-	ld b, 12
+	ld hl, wBugContestResults
+	ld b, wBugContestWinnersEnd - wBugContestResults
 	xor a
 .loop
 	ld [hli], a
--- a/event/card_key.asm
+++ b/event/card_key.asm
@@ -9,7 +9,7 @@
 	jr nz, .nope
 ; Are we facing the slot?
 	ld a, [PlayerDirection]
-	and $c
+	and %1100
 	cp OW_UP
 	jr nz, .nope
 
@@ -23,17 +23,17 @@
 ; Let's use the Card Key.
 	ld hl, .CardKeyScript
 	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
+	ld a, TRUE
+	ld [wItemEffectSucceeded], a
 	ret
 
 .nope
-	ld a, $0
-	ld [wd0ec], a
+	ld a, FALSE
+	ld [wItemEffectSucceeded], a
 	ret
 ; 507af
 
 .CardKeyScript: ; 0x507af
-	loadmovesprites
+	closetext
 	farjump MapRadioTower3FSignpost2Script
 ; 0x507b4
--- a/event/celebi.asm
+++ b/event/celebi.asm
@@ -8,17 +8,17 @@
 	depixel 0, 10, 7, 0
 	ld a, SPRITE_ANIM_INDEX_2C
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $84
-	ld hl, $2
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
-	ld [hl], $1f
-	ld hl, $f
+	ld [hl], SPRITE_ANIM_SEQ_1F
+	ld hl, SPRITEANIMSTRUCT_0F
 	add hl, bc
 	ld a, $80
 	ld [hl], a
-	ld a, $a0
+	ld a, 160 ; frame count
 	ld [wcf64], a
 	ld d, $0
 .loop
@@ -26,13 +26,13 @@
 	bit 7, a
 	jr nz, .done
 	push bc
-	call Function49bae
+	call GetCelebiSpriteTile
 	inc d
 	push de
 	ld a, $90
-	ld [wc3b5], a
-	callba Function8cf7a
-	call Function49935
+	ld [wCurrSpriteOAMAddr], a
+	callba DoNextFrameForAllSprites
+	call CelebiEvent_CountDown
 	ld c, 2
 	call DelayFrames
 	pop de
@@ -39,19 +39,21 @@
 	pop bc
 	jr .loop
 
+
 .done
 	pop af
 	ld [VramState], a
-	call Function498f9
-	call Function49bf3
+	call .RefreshPlayerSprite_ClearAllOthers
+	call CelebiEvent_SetBattleType
 	ret
+
 ; 498f9
 
-Function498f9: ; 498f9
+.RefreshPlayerSprite_ClearAllOthers: ; 498f9
 	ld hl, Sprites + 2
 	xor a
 	ld c, $4
-.loop
+.OAMloop
 	ld [hli], a
 rept 3
 	inc hl
@@ -58,44 +60,49 @@
 endr
 	inc a
 	dec c
-	jr nz, .loop
+	jr nz, .OAMloop
 	ld hl, Sprites + $10
 	ld bc, $90
 	xor a
 	call ByteFill
 	ret
+
 ; 49912
 
 LoadCelebiGFX: ; 49912
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ld de, SpecialCelebiLeafGFX
 	ld hl, VTiles1
 	lb bc, BANK(SpecialCelebiLeafGFX), 4
 	call Request2bpp
 	ld de, SpecialCelebiGFX
-	ld hl, VTiles1 tile $04
+	ld hl, VTiles0 tile $84
 	lb bc, BANK(SpecialCelebiGFX), $10
 	call Request2bpp
 	xor a
 	ld [wJumptableIndex], a
 	ret
+
 ; 49935
 
-Function49935: ; 49935
+CelebiEvent_CountDown: ; 49935
 	ld hl, wcf64
 	ld a, [hl]
 	and a
-	jr z, .asm_4993e
+	jr z, .done
 	dec [hl]
 	ret
 
-.asm_4993e
+
+.done
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
+
 ; 49944
 
-Function49944: ; 49944
+CelebiEvent_SpawnLeaf: ; 49944
+; unused
 	ld hl, wcf65
 	ld a, [hl]
 	inc [hl]
@@ -107,12 +114,13 @@
 	add $40
 	ld d, a
 	ld e, $0
-	ld a, SPRITE_ANIM_INDEX_18 ; fly land
+	ld a, SPRITE_ANIM_INDEX_FLY_LEAF ; fly land
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $80
 	ret
+
 ; 49962
 
 SpecialCelebiLeafGFX: ; 49962
@@ -124,126 +132,133 @@
 INCBIN "gfx/special/celebi/4.2bpp"
 
 
-Function49aa2: ; 49aa2 (12:5aa2)
-	ld hl, $6
+UpdateCelebiPosition: ; 49aa2 (12:5aa2)
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld a, [hl]
 	push af
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
-	cp $52
-	jp nc, Function49b30
-	ld hl, $5
+	cp 8 * 10 + 2
+	jp nc, .FreezeCelebiPosition
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	inc [hl]
-	ld hl, $f
+	ld hl, SPRITEANIMSTRUCT_0F
 	add hl, bc
 	ld a, [hl]
 	ld d, a
 	cp $3a
-	jr c, .asm_49ac6
-	jr z, .asm_49ac6
+	jr c, .skip
+	jr z, .skip
 	sub $3
 	ld [hl], a
-.asm_49ac6
-	ld hl, $e
+.skip
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld a, [hl]
 	inc [hl]
-	call Function49b3b
-	ld hl, $6
+	call CelebiEvent_Cosine
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ld d, a
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	add [hl]
-	cp $5c
-	jr nc, .asm_49ae2
-	cp $44
-	jr nc, .asm_49b0d
-.asm_49ae2
+	cp 8 * 11 + 4
+	jr nc, .ShiftY
+	cp 8 *  8 + 4
+	jr nc, .ReinitSpriteAnimFrame
+.ShiftY
 	pop af
 	push af
 	cp d
-	jr nc, .asm_49af2
-	ld hl, $4
+	jr nc, .moving_left
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	add [hl]
-	cp $50
-	jr c, .asm_49b05
-	jr .asm_49afb
-.asm_49af2
-	ld hl, $4
+	cp 8 * 10
+	jr c, .float_up
+	jr .float_down
+
+.moving_left
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	add [hl]
-	cp $50
-	jr nc, .asm_49b05
-.asm_49afb
-	ld hl, $5
+	cp 8 * 10
+	jr nc, .float_up
+.float_down
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
 	sub $2
 	ld [hl], a
-	jr .asm_49b0d
-.asm_49b05
-	ld hl, $5
+	jr .ReinitSpriteAnimFrame
+
+.float_up
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
 	add $1
 	ld [hl], a
-.asm_49b0d
+.ReinitSpriteAnimFrame
 	pop af
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	add [hl]
-	cp $50
-	jr c, .asm_49b26
-	cp $e6
-	jr nc, .asm_49b26
-	ld hl, $1
+	cp 8 * 10
+	jr c, .left
+	cp -(8 * 3 + 2)
+	jr nc, .left
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, $41
-	call Function3b3c
-	jr .asm_49b2f
-.asm_49b26
-	ld hl, $1
+	call ReinitSpriteAnimFrame
+	jr .done
+
+.left
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, $40
-	call Function3b3c
-.asm_49b2f
+	call ReinitSpriteAnimFrame
+.done
 	ret
 
-Function49b30: ; 49b30 (12:5b30)
+
+.FreezeCelebiPosition: ; 49b30 (12:5b30)
 	pop af
-	ld hl, $1
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, $40
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	ret
 
-Function49b3b: ; 49b3b (12:5b3b)
+
+CelebiEvent_Cosine: ; 49b3b (12:5b3b)
 	add $10
 	and $3f
 	cp $20
-	jr nc, .asm_49b48
-	call Function49b52
+	jr nc, .negative
+	call .SineFunction
 	ld a, h
 	ret
-.asm_49b48
+
+.negative
 	and $1f
-	call Function49b52
+	call .SineFunction
 	ld a, h
 	xor $ff
 	inc a
 	ret
 
-Function49b52: ; 49b52 (12:5b52)
+
+.SineFunction: ; 49b52 (12:5b52)
 	ld e, a
 	ld a, d
 	ld d, $0
-	ld hl, Unknown_49b6e
+	ld hl, .sinewave
 rept 2
 	add hl, de
 endr
@@ -251,23 +266,24 @@
 	inc hl
 	ld d, [hl]
 	ld hl, 0
-.asm_49b61
+.multiply
 	srl a
-	jr nc, .asm_49b66
+	jr nc, .even
 	add hl, de
-.asm_49b66
+.even
 	sla e
 	rl d
 	and a
-	jr nz, .asm_49b61
+	jr nz, .multiply
 	ret
+
 ; 49b6e (12:5b6e)
 
-Unknown_49b6e: ; 49b6e
+.sinewave: ; 49b6e
 	sine_wave $100
 ; 49bae
 
-Function49bae: ; 49bae
+GetCelebiSpriteTile: ; 49bae
 	push hl
 	push bc
 	push de
@@ -275,54 +291,60 @@
 	ld d, $3
 	ld e, d
 	cp $0
-	jr z, .asm_49bd0
+	jr z, .Frame1
 	cp d
-	jr z, .asm_49bd4
-	call Function49bed
+	jr z, .Frame2
+	call .AddE
 	cp d
-	jr z, .asm_49bd8
-	call Function49bed
+	jr z, .Frame3
+	call .AddE
 	cp d
-	jr z, .asm_49bdc
-	call Function49bed
+	jr z, .Frame4
+	call .AddE
 	cp d
-	jr c, .asm_49be9
-	jr .asm_49be5
+	jr c, .done
+	jr .restart
 
-.asm_49bd0
+
+.Frame1
 	ld a, $84
-	jr .asm_49bde
+	jr .load_tile
 
-.asm_49bd4
+
+.Frame2
 	ld a, $88
-	jr .asm_49bde
+	jr .load_tile
 
-.asm_49bd8
+
+.Frame3
 	ld a, $8c
-	jr .asm_49bde
+	jr .load_tile
 
-.asm_49bdc
+
+.Frame4
 	ld a, $90
 
-.asm_49bde
-	ld hl, $3
+.load_tile
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], a
-	jr .asm_49be9
+	jr .done
 
-.asm_49be5
+
+.restart
 	pop de
 	ld d, $ff
 	push de
 
-.asm_49be9
+.done
 	pop de
 	pop bc
 	pop hl
 	ret
+
 ; 49bed
 
-Function49bed: ; 49bed
+.AddE: ; 49bed
 	push af
 	ld a, d
 	add e
@@ -329,12 +351,14 @@
 	ld d, a
 	pop af
 	ret
+
 ; 49bf3
 
-Function49bf3: ; 49bf3
+CelebiEvent_SetBattleType: ; 49bf3
 	ld a, BATTLETYPE_CELEBI
 	ld [BattleType], a
 	ret
+
 ; 49bf9
 
 CheckCaughtCelebi: ; 49bf9
@@ -345,6 +369,7 @@
 	ld [ScriptVar], a
 	jr .done
 
+
 .false
 	xor a
 	ld [ScriptVar], a
@@ -351,4 +376,5 @@
 
 .done
 	ret
+
 ; 49c0c
--- a/event/daycare.asm
+++ b/event/daycare.asm
@@ -1,39 +1,61 @@
+	const_def
+	const DAYCARETEXT_MAN_INTRO
+	const DAYCARETEXT_MAN_EGG
+	const DAYCARETEXT_LADY_INTRO
+	const DAYCARETEXT_LADY_EGG
+	const DAYCARETEXT_WHICH_ONE
+	const DAYCARETEXT_DEPOSIT
+	const DAYCARETEXT_CANT_BREED_EGG
+	const DAYCARETEXT_LAST_MON
+	const DAYCARETEXT_LAST_ALIVE_MON
+	const DAYCARETEXT_COME_BACK_LATER
+	const DAYCARETEXT_REMOVE_MAIL
+	const DAYCARETEXT_GENIUSES
+	const DAYCARETEXT_ASK_WITHDRAW
+	const DAYCARETEXT_WITHDRAW
+	const DAYCARETEXT_TOO_SOON
+	const DAYCARETEXT_PARTY_FULL
+	const DAYCARETEXT_NOT_ENOUGH_MONEY
+	const DAYCARETEXT_OH_FINE
+	const DAYCARETEXT_COME_AGAIN
+	const DAYCARETEXT_13
+
 Special_DayCareMan: ; 166d6
 	ld hl, wDaycareMan
 	bit 0, [hl]
-	jr nz, .asm_166fe
+	jr nz, .AskWithdrawMon
 	ld hl, wDaycareMan
-	ld a, $0
-	call Function1678f
-	jr c, .asm_16724
-	call Function16798
-	jr c, .asm_16721
-	callba Functionde2a
+	ld a, DAYCARETEXT_MAN_INTRO
+	call DayCareManIntroText
+	jr c, .cancel
+	call DayCareAskDepositPokemon
+	jr c, .print_text
+	callba DepositMonWithDaycareMan
 	ld hl, wDaycareMan
 	set 0, [hl]
-	call Function167f6
-	call Function16a3b
+	call DayCare_DepositPokemonText
+	call DayCare_InitBreeding
 	ret
 
-.asm_166fe
-	callba Functione698
+.AskWithdrawMon
+	callba GetBreedMon1LevelGrowth
 	ld hl, wBreedMon1Nick
-	call Function1686d
-	call Function16807
-	jr c, .asm_16721
-	callba Functiondd21
-	call Function16850
+	call GetPriceToRetrieveBreedmon
+	call DayCare_AskWithdrawBreedMon
+	jr c, .print_text
+	callba RetrievePokemonFromDaycareMan
+	call DayCare_TakeMoney_PlayCry
 	ld hl, wDaycareMan
 	res 0, [hl]
 	res 5, [hl]
-	jr .asm_16724
+	jr .cancel
 
-.asm_16721
-	call Function1689b
+.print_text
+	call PrintDayCareText
 
-.asm_16724
-	ld a, $13
-	call Function1689b
+.cancel
+	ld a, DAYCARETEXT_13
+	call PrintDayCareText
 	ret
 ; 1672a
 
@@ -40,76 +62,75 @@
 Special_DayCareLady: ; 1672a
 	ld hl, wDaycareLady
 	bit 0, [hl]
-	jr nz, .asm_16752
+	jr nz, .AskWithdrawMon
 	ld hl, wDaycareLady
-	ld a, $2
-	call Function16781
-	jr c, .asm_1677b
-	call Function16798
-	jr c, .asm_16778
-	callba Functionde37
+	ld a, DAYCARETEXT_LADY_INTRO
+	call DayCareLadyIntroText
+	jr c, .cancel
+	call DayCareAskDepositPokemon
+	jr c, .print_text
+	callba DepositMonWithDaycareLady
 	ld hl, wDaycareLady
 	set 0, [hl]
-	call Function167f6
-	call Function16a3b
+	call DayCare_DepositPokemonText
+	call DayCare_InitBreeding
 	ret
 
-.asm_16752
-	callba Functione6b3
+.AskWithdrawMon
+	callba GetBreedMon2LevelGrowth
 	ld hl, wBreedMon2Nick
-	call Function1686d
-	call Function16807
-	jr c, .asm_16778
-	callba Functiondd42
-	call Function16850
+	call GetPriceToRetrieveBreedmon
+	call DayCare_AskWithdrawBreedMon
+	jr c, .print_text
+	callba RetrievePokemonFromDaycareLady
+	call DayCare_TakeMoney_PlayCry
 	ld hl, wDaycareLady
 	res 0, [hl]
 	ld hl, wDaycareMan
 	res 5, [hl]
-	jr .asm_1677b
+	jr .cancel
 
-.asm_16778
-	call Function1689b
+.print_text
+	call PrintDayCareText
 
-.asm_1677b
-	ld a, $13
-	call Function1689b
+.cancel
+	ld a, DAYCARETEXT_13
+	call PrintDayCareText
 	ret
 ; 16781
 
-Function16781: ; 16781
+DayCareLadyIntroText: ; 16781
 	bit 7, [hl]
-	jr nz, .asm_16788
+	jr nz, .okay
 	set 7, [hl]
 	inc a
-
-.asm_16788
-	call Function1689b
+.okay
+	call PrintDayCareText
 	call YesNoBox
 	ret
 ; 1678f
 
-Function1678f: ; 1678f
+DayCareManIntroText: ; 1678f
 	set 7, [hl]
-	call Function1689b
+	call PrintDayCareText
 	call YesNoBox
 	ret
 ; 16798
 
-Function16798: ; 16798
+DayCareAskDepositPokemon: ; 16798
 	ld a, [PartyCount]
 	cp 2
-	jr c, .asm_167e5
-	ld a, 4
-	call Function1689b
+	jr c, .OnlyOneMon
+	ld a, DAYCARETEXT_WHICH_ONE
+	call PrintDayCareText
 	ld b, 6
-	callba Function5001d
-	jr c, .asm_167dd
+	callba SelectTradeOrDaycareMon
+	jr c, .Declined
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_167e1
+	jr z, .Egg
 	callba CheckCurPartyMonFainted
-	jr c, .asm_167e9
+	jr c, .OutOfUsableMons
 	ld hl, PartyMon1Item
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
@@ -116,7 +137,7 @@
 	call AddNTimes
 	ld d, [hl]
 	callba ItemIsMail
-	jr c, .asm_167ed
+	jr c, .HoldingMail
 	ld hl, PartyMonNicknames
 	ld a, [CurPartyMon]
 	call GetNick
@@ -123,109 +144,109 @@
 	and a
 	ret
 
-.asm_167dd
-	ld a, $12
+.Declined
+	ld a, DAYCARETEXT_COME_AGAIN
 	scf
 	ret
 
-.asm_167e1
-	ld a, $6
+.Egg
+	ld a, DAYCARETEXT_CANT_BREED_EGG
 	scf
 	ret
 
-.asm_167e5
-	ld a, $7
+.OnlyOneMon
+	ld a, DAYCARETEXT_LAST_MON
 	scf
 	ret
 
-.asm_167e9
-	ld a, $8
+.OutOfUsableMons
+	ld a, DAYCARETEXT_LAST_ALIVE_MON
 	scf
 	ret
 
-.asm_167ed
-	ld a, $a
+.HoldingMail
+	ld a, DAYCARETEXT_REMOVE_MAIL
 	scf
 	ret
 ; 167f1
 
-UnknownText_0x167f1: ; 0x167f1
+.DummyText: ; 0x167f1
 	;
 	text_jump UnknownText_0x1bdaa7
 	db "@"
 ; 0x167f6
 
-Function167f6: ; 167f6
-	ld a, $5
-	call Function1689b
+DayCare_DepositPokemonText: ; 167f6
+	ld a, DAYCARETEXT_DEPOSIT
+	call PrintDayCareText
 	ld a, [CurPartySpecies]
 	call PlayCry
-	ld a, $9
-	call Function1689b
+	ld a, DAYCARETEXT_COME_BACK_LATER
+	call PrintDayCareText
 	ret
 ; 16807
 
-Function16807: ; 16807
+DayCare_AskWithdrawBreedMon: ; 16807
 	ld a, [StringBuffer2 + 1]
 	and a
-	jr nz, .asm_16819
-	ld a, $f
-	call Function1689b
+	jr nz, .grew_at_least_one_level
+	ld a, DAYCARETEXT_PARTY_FULL
+	call PrintDayCareText
 	call YesNoBox
-	jr c, .asm_16844
-	jr .asm_1682d
+	jr c, .refused
+	jr .check_money
 
-.asm_16819
-	ld a, $b
-	call Function1689b
+.grew_at_least_one_level
+	ld a, DAYCARETEXT_GENIUSES
+	call PrintDayCareText
 	call YesNoBox
-	jr c, .asm_16844
-	ld a, $c
-	call Function1689b
+	jr c, .refused
+	ld a, DAYCARETEXT_ASK_WITHDRAW
+	call PrintDayCareText
 	call YesNoBox
-	jr c, .asm_16844
+	jr c, .refused
 
-.asm_1682d
+.check_money
 	ld de, Money
 	ld bc, StringBuffer2 + 2
 	callba CompareMoney
-	jr c, .asm_16848
+	jr c, .not_enough_money
 	ld a, [PartyCount]
-	cp $6
-	jr nc, .asm_1684c
+	cp PARTY_LENGTH
+	jr nc, .PartyFull
 	and a
 	ret
 
-.asm_16844
-	ld a, $12
+.refused
+	ld a, DAYCARETEXT_COME_AGAIN
 	scf
 	ret
 
-.asm_16848
-	ld a, $11
+.not_enough_money
+	ld a, DAYCARETEXT_OH_FINE
 	scf
 	ret
 
-.asm_1684c
-	ld a, $10
+.PartyFull
+	ld a, DAYCARETEXT_NOT_ENOUGH_MONEY
 	scf
 	ret
 ; 16850
 
-Function16850: ; 16850
+DayCare_TakeMoney_PlayCry: ; 16850
 	ld bc, StringBuffer2 + 2
 	ld de, Money
 	callba TakeMoney
-	ld a, $d
-	call Function1689b
+	ld a, DAYCARETEXT_WITHDRAW
+	call PrintDayCareText
 	ld a, [CurPartySpecies]
 	call PlayCry
-	ld a, $e
-	call Function1689b
+	ld a, DAYCARETEXT_TOO_SOON
+	call PrintDayCareText
 	ret
 ; 1686d
 
-Function1686d: ; 1686d
+GetPriceToRetrieveBreedmon: ; 1686d
 	ld a, b
 	ld [StringBuffer2], a
 	ld a, d
@@ -234,10 +255,10 @@
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld hl, 0
-	ld bc, $64
+	ld bc, 100
 	ld a, [StringBuffer2 + 1]
 	call AddNTimes
-	ld de, $64
+	ld de, 100
 	add hl, de
 	xor a
 	ld [StringBuffer2 + 2], a
@@ -248,13 +269,12 @@
 	ret
 ; 1689b
 
-Function1689b: ; 1689b
+PrintDayCareText: ; 1689b
 	ld e, a
 	ld d, 0
-	ld hl, TextTable_168aa
-rept 2
+	ld hl, .TextTable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -262,144 +282,144 @@
 	ret
 ; 168aa
 
-TextTable_168aa: ; 168aa
-	dw UnknownText_0x168d2
-	dw UnknownText_0x168d7
-	dw UnknownText_0x168dc
-	dw UnknownText_0x168e1
-	dw UnknownText_0x168e6
-	dw UnknownText_0x168ff
-	dw UnknownText_0x168f0
-	dw UnknownText_0x168eb
-	dw UnknownText_0x168fa
-	dw UnknownText_0x16904
-	dw UnknownText_0x168f5
-	dw UnknownText_0x16909
-	dw UnknownText_0x1690e
-	dw UnknownText_0x16913
-	dw UnknownText_0x16918
-	dw UnknownText_0x1691d
-	dw UnknownText_0x16922
-	dw UnknownText_0x16927
-	dw UnknownText_0x1692c
-	dw UnknownText_0x16931
+.TextTable: ; 168aa
+	dw .DayCareManIntro ; 00
+	dw .DayCareManOddEgg ; 01
+	dw .DayCareLadyIntro ; 02
+	dw .DayCareLadyOddEgg ; 03
+	dw .WhichOne ; 04
+	dw .OkayIllRaiseYourMon ; 05
+	dw .CantAcceptEgg ; 06
+	dw .JustOneMon ; 07
+	dw .LastHealthyMon ; 08
+	dw .ComeBackForItLater ; 09
+	dw .RemoveMail ; 0a
+	dw .AreWeGeniusesOrWhat ; 0b
+	dw .AskRetrieveMon ; 0c
+	dw .PerfectHeresYourMon ; 0d
+	dw .GotBackMon ; 0e
+	dw .ImmediatelyWithdrawMon ; 0f
+	dw .PartyFull ; 10
+	dw .NotEnoughMoney ; 11
+	dw .OhFineThen ; 12
+	dw .ComeAgain ; 13
 ; 168d2
 
-UnknownText_0x168d2: ; 0x168d2
+.DayCareManIntro: ; 0x168d2
 	; I'm the DAY-CARE MAN. Want me to raise a #MON?
 	text_jump UnknownText_0x1bdaa9
 	db "@"
 ; 0x168d7
 
-UnknownText_0x168d7: ; 0x168d7
+.DayCareManOddEgg: ; 0x168d7
 	; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON?
 	text_jump UnknownText_0x1bdad8
 	db "@"
 ; 0x168dc
 
-UnknownText_0x168dc: ; 0x168dc
+.DayCareLadyIntro: ; 0x168dc
 	; I'm the DAY-CARE LADY. Should I raise a #MON for you?
 	text_jump UnknownText_0x1bdb85
 	db "@"
 ; 0x168e1
 
-UnknownText_0x168e1: ; 0x168e1
+.DayCareLadyOddEgg: ; 0x168e1
 	; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you?
 	text_jump UnknownText_0x1bdbbb
 	db "@"
 ; 0x168e6
 
-UnknownText_0x168e6: ; 0x168e6
+.WhichOne: ; 0x168e6
 	; What should I raise for you?
 	text_jump UnknownText_0x1bdc79
 	db "@"
 ; 0x168eb
 
-UnknownText_0x168eb: ; 0x168eb
+.JustOneMon: ; 0x168eb
 	; Oh? But you have just one #MON.
 	text_jump UnknownText_0x1bdc97
 	db "@"
 ; 0x168f0
 
-UnknownText_0x168f0: ; 0x168f0
+.CantAcceptEgg: ; 0x168f0
 	; Sorry, but I can't accept an EGG.
 	text_jump UnknownText_0x1bdcb8
 	db "@"
 ; 0x168f5
 
-UnknownText_0x168f5: ; 0x168f5
+.RemoveMail: ; 0x168f5
 	; Remove MAIL before you come see me.
 	text_jump UnknownText_0x1bdcda
 	db "@"
 ; 0x168fa
 
-UnknownText_0x168fa: ; 0x168fa
+.LastHealthyMon: ; 0x168fa
 	; If you give me that, what will you battle with?
 	text_jump UnknownText_0x1bdcff
 	db "@"
 ; 0x168ff
 
-UnknownText_0x168ff: ; 0x168ff
+.OkayIllRaiseYourMon: ; 0x168ff
 	; OK. I'll raise your @ .
 	text_jump UnknownText_0x1bdd30
 	db "@"
 ; 0x16904
 
-UnknownText_0x16904: ; 0x16904
+.ComeBackForItLater: ; 0x16904
 	; Come back for it later.
 	text_jump UnknownText_0x1bdd4b
 	db "@"
 ; 0x16909
 
-UnknownText_0x16909: ; 0x16909
+.AreWeGeniusesOrWhat: ; 0x16909
 	; Are we geniuses or what? Want to see your @ ?
 	text_jump UnknownText_0x1bdd64
 	db "@"
 ; 0x1690e
 
-UnknownText_0x1690e: ; 0x1690e
+.AskRetrieveMon: ; 0x1690e
 	; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ .
 	text_jump UnknownText_0x1bdd96
 	db "@"
 ; 0x16913
 
-UnknownText_0x16913: ; 0x16913
+.PerfectHeresYourMon: ; 0x16913
 	; Perfect! Here's your #MON.
 	text_jump UnknownText_0x1bde04
 	db "@"
 ; 0x16918
 
-UnknownText_0x16918: ; 0x16918
+.GotBackMon: ; 0x16918
 	; got back @ .
 	text_jump UnknownText_0x1bde1f
 	db "@"
 ; 0x1691d
 
-UnknownText_0x1691d: ; 0x1691d
+.ImmediatelyWithdrawMon: ; 0x1691d
 	; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100.
 	text_jump UnknownText_0x1bde32
 	db "@"
 ; 0x16922
 
-UnknownText_0x16922: ; 0x16922
+.PartyFull: ; 0x16922
 	; You have no room for it.
 	text_jump UnknownText_0x1bdea2
 	db "@"
 ; 0x16927
 
-UnknownText_0x16927: ; 0x16927
+.NotEnoughMoney: ; 0x16927
 	; You don't have enough money.
 	text_jump UnknownText_0x1bdebc
 	db "@"
 ; 0x1692c
 
-UnknownText_0x1692c: ; 0x1692c
+.OhFineThen: ; 0x1692c
 	; Oh, fine then.
 	text_jump UnknownText_0x1bded9
 	db "@"
 ; 0x16931
 
-UnknownText_0x16931: ; 0x16931
+.ComeAgain: ; 0x16931
 	; Come again.
 	text_jump UnknownText_0x1bdee9
 	db "@"
@@ -408,49 +428,49 @@
 Special_DayCareManOutside: ; 16936
 	ld hl, wDaycareMan
 	bit 6, [hl]
-	jr nz, Function16949
-	ld hl, UnknownText_0x16944
+	jr nz, .AskGiveEgg
+	ld hl, .NotYet
 	call PrintText
 	ret
 
-UnknownText_0x16944: ; 0x16944
+.NotYet: ; 0x16944
 	; Not yet…
 	text_jump UnknownText_0x1bdef6
 	db "@"
 ; 0x16949
 
-Function16949: ; 16949
-	ld hl, UnknownText_0x16993
+.AskGiveEgg: ; 16949
+	ld hl, .IntroText
 	call PrintText
 	call YesNoBox
-	jr c, .asm_1697c
+	jr c, .Declined
 	ld a, [PartyCount]
 	cp PARTY_LENGTH
-	jr nc, .asm_16987
-	call Function169ac
+	jr nc, .PartyFull
+	call DayCare_GiveEgg
 	ld hl, wDaycareMan
 	res 6, [hl]
-	call Function16a3b
-	ld hl, UnknownText_0x16998
+	call DayCare_InitBreeding
+	ld hl, .GotEggText
 	call PrintText
 	ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
 	call PlaySFX
 	ld c, 120
 	call DelayFrames
-	ld hl, UnknownText_0x1699d
-	jr .asm_1697f
+	ld hl, .TakeGoodCareOfItText
+	jr .Load0
 
-.asm_1697c
-	ld hl, UnknownText_0x169a2
+.Declined
+	ld hl, .IllKeepItThanksText
 
-.asm_1697f
+.Load0
 	call PrintText
 	xor a
 	ld [ScriptVar], a
 	ret
 
-.asm_16987
-	ld hl, UnknownText_0x169a7
+.PartyFull
+	ld hl, .PartyFullText
 	call PrintText
 	ld a, $1
 	ld [ScriptVar], a
@@ -457,45 +477,46 @@
 	ret
 ; 16993
 
-UnknownText_0x16993: ; 0x16993
+.IntroText: ; 0x16993
 	; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it?
 	text_jump UnknownText_0x1bdf00
 	db "@"
 ; 0x16998
 
-UnknownText_0x16998: ; 0x16998
+.GotEggText: ; 0x16998
 	; received the EGG!
 	text_jump UnknownText_0x1bdfa5
 	db "@"
 ; 0x1699d
 
-UnknownText_0x1699d: ; 0x1699d
+.TakeGoodCareOfItText: ; 0x1699d
 	; Take good care of it.
 	text_jump UnknownText_0x1bdfba
 	db "@"
 ; 0x169a2
 
-UnknownText_0x169a2: ; 0x169a2
+.IllKeepItThanksText: ; 0x169a2
 	; Well then, I'll keep it. Thanks!
 	text_jump UnknownText_0x1bdfd1
 	db "@"
 ; 0x169a7
 
-UnknownText_0x169a7: ; 0x169a7
+.PartyFullText: ; 0x169a7
 	; You have no room in your party. Come back later.
 	text_jump UnknownText_0x1bdff2
 	db "@"
 ; 0x169ac
 
-Function169ac: ; 169ac
+DayCare_GiveEgg: ; 169ac
 	ld a, [wEggMonLevel]
 	ld [CurPartyLevel], a
 	ld hl, PartyCount
 	ld a, [hl]
 	cp PARTY_LENGTH
-	jr nc, .asm_16a2f
+	jr nc, .PartyFull
 	inc a
 	ld [hl], a
+
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -504,24 +525,28 @@
 	ld a, [wEggMonSpecies]
 	ld [CurSpecies], a
 	ld [CurPartySpecies], a
-	ld a, $ff
+	ld a, -1
 	ld [hl], a
+
 	ld hl, PartyMonNicknames
 	ld bc, PKMN_NAME_LENGTH
-	call Function16a31
+	call DayCare_GetCurrentPartyMember
 	ld hl, wEggNick
 	call CopyBytes
+
 	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
-	call Function16a31
+	call DayCare_GetCurrentPartyMember
 	ld hl, wEggOT
 	call CopyBytes
+
 	ld hl, PartyMon1
 	ld bc, PARTYMON_STRUCT_LENGTH
-	call Function16a31
+	call DayCare_GetCurrentPartyMember
 	ld hl, wEggMon
 	ld bc, wEggMonEnd - wEggMon
 	call CopyBytes
+
 	call GetBaseData
 	ld a, [PartyCount]
 	dec a
@@ -550,12 +575,12 @@
 	and a
 	ret
 
-.asm_16a2f
+.PartyFull
 	scf
 	ret
 ; 16a31
 
-Function16a31: ; 16a31
+DayCare_GetCurrentPartyMember: ; 16a31
 	ld a, [PartyCount]
 	dec a
 	call AddNTimes
@@ -564,7 +589,7 @@
 	ret
 ; 16a3b
 
-Function16a3b: ; 16a3b
+DayCare_InitBreeding: ; 16a3b
 	ld a, [wDaycareLady]
 	bit 0, a
 	ret z
@@ -571,7 +596,7 @@
 	ld a, [wDaycareMan]
 	bit 0, a
 	ret z
-	callab Function16e1d
+	callab CheckBreedmonCompatibility
 	ld a, [wd265]
 	and a
 	ret z
@@ -579,15 +604,15 @@
 	ret z
 	ld hl, wDaycareMan
 	set 5, [hl]
-.asm_16a59
+.loop
 	call Random
 	cp 150
-	jr c, .asm_16a59
+	jr c, .loop
 	ld [wStepsToEgg], a
-	jp Function16a66
+	jp .UselessJump
 ; 16a66
 
-Function16a66: ; 16a66
+.UselessJump: ; 16a66
 	xor a
 	ld hl, wEggMon
 	ld bc, wEggMonEnd - wEggMon
@@ -609,24 +634,24 @@
 	ld a, [wBreedMon1Species]
 	cp DITTO
 	ld a, $1
-	jr z, .asm_16ab6
+	jr z, .LoadWhichBreedmonIsTheMother
 	ld a, [wBreedMon2Species]
 	cp DITTO
 	ld a, $0
-	jr z, .asm_16ab6
+	jr z, .LoadWhichBreedmonIsTheMother
 	callba GetGender
 	ld a, $0
-	jr z, .asm_16ab6
+	jr z, .LoadWhichBreedmonIsTheMother
 	inc a
 
-.asm_16ab6
-	ld [wDittoInDaycare], a
+.LoadWhichBreedmonIsTheMother
+	ld [wBreedMotherOrNonDitto], a
 	and a
 	ld a, [wBreedMon1Species]
-	jr z, .asm_16ac2
+	jr z, .GotMother
 	ld a, [wBreedMon2Species]
 
-.asm_16ac2
+.GotMother
 	ld [CurPartySpecies], a
 	callab GetPreEvolution
 	callab GetPreEvolution
@@ -635,13 +660,13 @@
 
 	ld a, [CurPartySpecies]
 	cp NIDORAN_F
-	jr nz, .asm_16ae8
+	jr nz, .GotEggSpecies
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	ld a, NIDORAN_F
-	jr c, .asm_16ae8
+	jr c, .GotEggSpecies
 	ld a, NIDORAN_M
-.asm_16ae8
+.GotEggSpecies
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
 	ld [wEggMonSpecies], a
@@ -648,7 +673,7 @@
 
 	call GetBaseData
 	ld hl, wEggNick
-	ld de, String_16be0
+	ld de, .String_EGG
 	call CopyName2
 	ld hl, PlayerName
 	ld de, wEggOT
@@ -660,7 +685,7 @@
 	xor a
 	ld [Buffer1], a
 	predef FillMoves
-	callba Function170bf
+	callba InitEggMoves
 	ld hl, wEggMonID
 	ld a, [PlayerID]
 	ld [hli], a
@@ -672,17 +697,17 @@
 	ld hl, wEggMonExp
 	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
 	xor a
-	ld b, $a
+	ld b, wEggMonDVs - wEggMonStatExp
 	ld hl, wEggMonStatExp
-.asm_16b46
+.loop2
 	ld [hli], a
 	dec b
-	jr nz, .asm_16b46
+	jr nz, .loop2
 	ld hl, wEggMonDVs
 	call Random
 	ld [hli], a
@@ -693,12 +718,12 @@
 	ld de, wBreedMon1DVs
 	ld a, [wBreedMon1Species]
 	cp DITTO
-	jr z, .asm_16b98
+	jr z, .GotDVs
 	ld de, wBreedMon2DVs
 	ld a, [wBreedMon2Species]
 	cp DITTO
-	jr z, .asm_16b98
-	ld a, $3
+	jr z, .GotDVs
+	ld a, BREEDMON
 	ld [MonType], a
 	push hl
 	callba GetGender
@@ -705,23 +730,23 @@
 	pop hl
 	ld de, wBreedMon1DVs
 	ld bc, wBreedMon2DVs
-	jr c, .asm_16bab
-	jr z, .asm_16b90
-	ld a, [wDittoInDaycare]
+	jr c, .SkipDVs
+	jr z, .ParentCheck2
+	ld a, [wBreedMotherOrNonDitto]
 	and a
-	jr z, .asm_16b98
+	jr z, .GotDVs
 	ld d, b
 	ld e, c
-	jr .asm_16b98
+	jr .GotDVs
 
-.asm_16b90
-	ld a, [wDittoInDaycare]
+.ParentCheck2
+	ld a, [wBreedMotherOrNonDitto]
 	and a
-	jr nz, .asm_16b98
+	jr nz, .GotDVs
 	ld d, b
 	ld e, c
 
-.asm_16b98
+.GotDVs
 	ld a, [de]
 	inc de
 	and $f
@@ -738,15 +763,15 @@
 	add b
 	ld [hl], a
 
-.asm_16bab
+.SkipDVs
 	ld hl, StringBuffer1
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld hl, wEggMonMoves
 	ld de, wEggMonPP
 	predef FillPP
-	ld hl, wd050
+	ld hl, wMonOrItemNameBuffer
 	ld de, StringBuffer1
 	ld bc, NAME_LENGTH
 	call CopyBytes
@@ -754,9 +779,8 @@
 	ld hl, wEggMonHappiness
 	ld [hli], a
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 	ld a, [CurPartyLevel]
 	ld [wEggMonLevel], a
@@ -763,6 +787,6 @@
 	ret
 ; 16be0
 
-String_16be0: ; 16be0
+.String_EGG: ; 16be0
 	db "EGG@"
 ; 16be4
--- a/event/dratini.asm
+++ b/event/dratini.asm
@@ -8,8 +8,8 @@
 	ret nc
 	ld bc, PartyCount
 	ld a, [bc]
-	ld hl, 0
-	call GetNthPartyMon
+	ld hl, MON_SPECIES
+	call .GetNthPartyMon
 	ld a, [bc]
 	ld c, a
 	ld de, PARTYMON_STRUCT_LENGTH
@@ -85,7 +85,7 @@
 	db TWISTER
 	db 0
 
-GetNthPartyMon: ; 0x8b1ce
+.GetNthPartyMon: ; 0x8b1ce
 ; inputs:
 ; hl must be set to 0 before calling this function.
 ; a must be set to the number of Pokémon in the party.
@@ -106,6 +106,7 @@
 	dec a
 	jr nz, .loop
 	ret
+
 .EmptyParty
 	scf
 	ret
--- a/event/elevator.asm
+++ b/event/elevator.asm
@@ -1,62 +1,62 @@
 Elevator:: ; 1342d
-	call Function1344a
-	call Function1347d
-	jr c, .asm_13448
-	ld [wd041], a
-	call Function134dd
-	jr c, .asm_13448
-	ld hl, wd041
+	call .LoadPointer
+	call .FindCurrentFloor
+	jr c, .quit
+	ld [wElevatorOriginFloor], a
+	call Elevator_AskWhichFloor
+	jr c, .quit
+	ld hl, wElevatorOriginFloor
 	cp [hl]
-	jr z, .asm_13448
-	call Function134c0
+	jr z, .quit
+	call Elevator_GoToFloor
 	and a
 	ret
 
-.asm_13448
+.quit
 	scf
 	ret
 ; 1344a
 
-Function1344a: ; 1344a
+.LoadPointer: ; 1344a
 	ld a, b
-	ld [EngineBuffer1], a
+	ld [wElevatorPointerBank], a
 	ld a, e
-	ld [wd03f], a
+	ld [wElevatorPointerLo], a
 	ld a, d
-	ld [wd040], a
-	call Function1345a
+	ld [wElevatorPointerHi], a
+	call .LoadFloors
 	ret
 ; 1345a
 
-Function1345a: ; 1345a
-	ld de, OBPals + 8 * 6
+.LoadFloors: ; 1345a
+	ld de, CurElevator
 	ld bc, 4
-	ld hl, wd03f
+	ld hl, wElevatorPointerLo
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [EngineBuffer1]
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
 	inc hl
 	ld [de], a
 	inc de
-.asm_1346f
-	ld a, [EngineBuffer1]
+.loop
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
 	ld [de], a
 	inc de
 	add hl, bc
-	cp $ff
-	jr nz, .asm_1346f
+	cp -1
+	jr nz, .loop
 	ret
 ; 1347d
 
-Function1347d: ; 1347d
-	ld hl, wd03f
+.FindCurrentFloor: ; 1347d
+	ld hl, wElevatorPointerLo
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [EngineBuffer1]
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
 	ld c, a
 	inc hl
@@ -64,47 +64,46 @@
 	ld d, a
 	ld a, [BackupMapNumber]
 	ld e, a
-	ld b, $0
-.asm_13495
-	ld a, [EngineBuffer1]
+	ld b, 0
+.loop2
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
-	cp $ff
-	jr z, .asm_134be
+	cp -1
+	jr z, .fail
 rept 2
 	inc hl
 endr
-	ld a, [EngineBuffer1]
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
 	inc hl
 	cp d
-	jr nz, .asm_134b7
-	ld a, [EngineBuffer1]
+	jr nz, .next1
+	ld a, [wElevatorPointerBank]
 	call GetFarByte
 	inc hl
 	cp e
-	jr nz, .asm_134b8
-	jr .asm_134bb
+	jr nz, .next2
+	jr .done
 
-.asm_134b7
+.next1
 	inc hl
-
-.asm_134b8
+.next2
 	inc b
-	jr .asm_13495
+	jr .loop2
 
-.asm_134bb
+.done
 	xor a
 	ld a, b
 	ret
 
-.asm_134be
+.fail
 	scf
 	ret
 ; 134c0
 
-Function134c0: ; 134c0
+Elevator_GoToFloor: ; 134c0
 	push af
-	ld hl, wd03f
+	ld hl, wElevatorPointerLo
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -114,13 +113,13 @@
 	call AddNTimes
 	inc hl
 	ld de, BackupWarpNumber
-	ld a, [EngineBuffer1]
+	ld a, [wElevatorPointerBank]
 	ld bc, 3
 	call FarCopyBytes
 	ret
 ; 134dd
 
-Function134dd: ; 134dd
+Elevator_AskWhichFloor: ; 134dd
 	call LoadStandardMenuDataHeader
 	ld hl, Elevator_WhichFloorText
 	call PrintText
@@ -131,16 +130,16 @@
 	call UpdateSprites
 	xor a
 	ld [wMenuScrollPosition], a
-	call HandleScrollingMenu
-	call WriteBackup
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_1350b
+	call ScrollingMenu
+	call CloseWindow
+	ld a, [wMenuJoypad]
+	cp B_BUTTON
+	jr z, .cancel
 	xor a
-	ld a, [wcf77]
+	ld a, [wScrollingMenuCursorPosition]
 	ret
 
-.asm_1350b
+.cancel
 	scf
 	ret
 ; 1350d
@@ -178,10 +177,10 @@
 
 Elevator_GetCurrentFloorString: ; 1353f
 	push hl
-	ld a, [wd041]
+	ld a, [wElevatorOriginFloor]
 	ld e, a
 	ld d, 0
-	ld hl, wd0f1
+	ld hl, CurElevatorFloors
 	add hl, de
 	ld a, [hl]
 	pop de
@@ -201,7 +200,7 @@
 	db $10 ; flags
 	db 4, 0 ; rows, columns
 	db 1 ; horizontal spacing
-	dbw 0, OBPals + 8 * 6
+	dbw 0, CurElevator
 	dba GetElevatorFlorStrings
 	dba NULL
 	dba NULL
@@ -209,7 +208,6 @@
 
 GetElevatorFlorStrings: ; 13568
 	ld a, [MenuSelection]
-
 GetFloorString: ; 1356b
 	push de
 	call FloorToString
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -9,18 +9,18 @@
 BlindingFlash: ; 8c7e1
 	callba FadeOutPalettes
 	ld hl, StatusFlags
-	set 2, [hl]
-	callba Function8c0e5
-	callba Function8c001
-	ld b, SCGB_09
+	set 2, [hl] ; Flash
+	callba ReplaceTimeOfDayPals
+	callba UpdateTimeOfDayPal
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
-	callba Function49409
+	callba LoadOW_BGPal7
 	callba FadeInPalettes
 	ret
 ; 8c80a
 
 ShakeHeadbuttTree: ; 8c80a
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ld de, CutGrassGFX
 	ld hl, VTiles1
 	lb bc, BANK(CutGrassGFX), 4
@@ -29,16 +29,16 @@
 	ld hl, VTiles1 tile $04
 	lb bc, BANK(HeadbuttTreeGFX), 8
 	call Request2bpp
-	call Function8cad3
+	call Cut_Headbutt_GetPixelFacing
 	ld a, SPRITE_ANIM_INDEX_1B
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $84
-	ld a, $90
-	ld [wc3b5], a
-	callba Function8cf7a
-	call GetHeadbuttTreeRelativeLocation
+	ld a, 36 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callba DoNextFrameForAllSprites
+	call HideHeadbuttTree
 	ld a, $20
 	ld [wcf64], a
 	call WaitSFX
@@ -50,9 +50,9 @@
 	and a
 	jr z, .done
 	dec [hl]
-	ld a, $90
-	ld [wc3b5], a
-	callba Function8cf7a
+	ld a, 36 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callba DoNextFrameForAllSprites
 	call DelayFrame
 	jr .loop
 
@@ -61,14 +61,14 @@
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
-	callba Function8cf53
-	ld hl, Sprites + $90
-	ld bc, $10
+	callba ClearSpriteAnims
+	ld hl, Sprites + 36 * 4
+	ld bc, SpritesEnd - (Sprites + 36 * 4)
 	xor a
 	call ByteFill
 	ld de, Font
 	ld hl, VTiles1
-	lb bc, BANK(Font), $c
+	lb bc, BANK(Font), 12
 	call Get1bpp
 	call ReplaceKrisSprite
 	ret
@@ -78,7 +78,7 @@
 INCBIN "gfx/unknown/08c893.2bpp"
 ; 8c913
 
-GetHeadbuttTreeRelativeLocation: ; 8c913
+HideHeadbuttTree: ; 8c913
 	xor a
 	ld [hBGMapMode], a
 	ld a, [PlayerDirection]
@@ -113,6 +113,9 @@
 ; 8c940
 
 OWCutAnimation: ; 8c940
+	; Animation index in e
+	; 0: Split tree in half
+	; 1: Mow the lawn
 	ld a, e
 	and $1
 	ld [wJumptableIndex], a
@@ -124,9 +127,9 @@
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .finish
-	ld a, $90
-	ld [wc3b5], a
-	callab Function8cf7a
+	ld a, 36 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callab DoNextFrameForAllSprites
 	call OWCutJumptable
 	call DelayFrame
 	jr .loop
@@ -136,7 +139,7 @@
 ; 8c96d
 
 .LoadCutGFX: ; 8c96d
-	callab Function8cf53 ; pointless to farcall
+	callab ClearSpriteAnims ; pointless to farcall
 	ld de, CutGrassGFX
 	ld hl, VTiles1
 	lb bc, BANK(CutGrassGFX), 4
@@ -160,7 +163,7 @@
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -171,22 +174,23 @@
 ; 8ca1b
 
 
-.jumptable: ; 8ca1b (23:4a1b)
-	dw Function8ca23
-	dw Function8ca3c
-	dw Function8ca5c
-	dw Function8ca64
+.dw: ; 8ca1b (23:4a1b)
+	dw Cut_SpawnAnimateTree
+	dw Cut_SpawnAnimateLeaves
+	dw Cut_StartWaiting
+	dw Cut_WaitAnimSFX
 
 
-Function8ca23: ; 8ca23 (23:4a23)
-	call Function8cad3
-	ld a, SPRITE_ANIM_INDEX_17 ; leaf
+Cut_SpawnAnimateTree: ; 8ca23 (23:4a23)
+	call Cut_Headbutt_GetPixelFacing
+	ld a, SPRITE_ANIM_INDEX_CUT_TREE ; cut tree
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $84
-	ld a, $20
+	ld a, 32
 	ld [wcf64], a
+; Cut_StartWaiting
 	ld hl, wJumptableIndex
 rept 2
 	inc [hl]
@@ -193,75 +197,78 @@
 endr
 	ret
 
-Function8ca3c: ; 8ca3c (23:4a3c)
-	call Function8ca8e
+Cut_SpawnAnimateLeaves: ; 8ca3c (23:4a3c)
+	call Cut_GetLeafSpawnCoords
 	xor a
-	call Function8ca73
+	call Cut_SpawnLeaf
 	ld a, $10
-	call Function8ca73
+	call Cut_SpawnLeaf
 	ld a, $20
-	call Function8ca73
+	call Cut_SpawnLeaf
 	ld a, $30
-	call Function8ca73
-	ld a, $20
+	call Cut_SpawnLeaf
+	ld a, 32 ; frames
 	ld [wcf64], a
+; Cut_StartWaiting
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function8ca5c: ; 8ca5c (23:4a5c)
+Cut_StartWaiting: ; 8ca5c (23:4a5c)
 	ld a, $1
 	ld [hBGMapMode], a
+; Cut_WaitAnimSFX
 	ld hl, wJumptableIndex
 	inc [hl]
 
-Function8ca64: ; 8ca64 (23:4a64)
+Cut_WaitAnimSFX: ; 8ca64 (23:4a64)
 	ld hl, wcf64
 	ld a, [hl]
 	and a
-	jr z, .asm_8ca6d
+	jr z, .finished
 	dec [hl]
 	ret
-.asm_8ca6d
+
+.finished
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function8ca73: ; 8ca73 (23:4a73)
+Cut_SpawnLeaf: ; 8ca73 (23:4a73)
 	push de
 	push af
-	ld a, SPRITE_ANIM_INDEX_16 ; fly takeoff
+	ld a, SPRITE_ANIM_INDEX_LEAF ; leaf
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $80
-	ld hl, $e
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld [hl], $4
 	pop af
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld [hl], a
 	pop de
 	ret
 
-Function8ca8e: ; 8ca8e (23:4a8e)
+Cut_GetLeafSpawnCoords: ; 8ca8e (23:4a8e)
 	ld de, 0
-	ld a, [wd197]
+	ld a, [wMetatileStandingX]
 	bit 0, a
-	jr z, .asm_8ca9a
+	jr z, .left_side
 	set 0, e
-.asm_8ca9a
-	ld a, [wd196]
+.left_side
+	ld a, [wMetatileStandingY]
 	bit 0, a
-	jr z, .asm_8caa3
+	jr z, .top_side
 	set 1, e
-.asm_8caa3
+.top_side
 	ld a, [PlayerDirection]
-	and $c
+	and %00001100
 	add e
 	ld e, a
-	ld hl, Unknown_8cab3
+	ld hl, .Coords
 rept 2
 	add hl, de
 endr
@@ -271,32 +278,35 @@
 	ret
 ; 8cab3 (23:4ab3)
 
-Unknown_8cab3: ; 8cab3
-	db $58, $60
-	db $48, $60
-	db $58, $70
-	db $48, $70
-	db $58, $40
-	db $48, $40
-	db $58, $50
-	db $48, $50
-	db $38, $60
-	db $48, $60
-	db $38, $50
-	db $48, $50
-	db $58, $60
-	db $68, $60
-	db $58, $50
-	db $68, $50
+.Coords: ; 8cab3
+	dbpixel 11, 12 ; facing down,  top left
+	dbpixel  9, 12 ; facing down,  top right
+	dbpixel 11, 14 ; facing down,  bottom left
+	dbpixel  9, 14 ; facing down,  bottom right
+
+	dbpixel 11,  8 ; facing up,    top left
+	dbpixel  9,  8 ; facing up,    top right
+	dbpixel 11, 10 ; facing up,    bottom left
+	dbpixel  9, 10 ; facing up,    bottom right
+
+	dbpixel  7, 12 ; facing left,  top left
+	dbpixel  9, 12 ; facing left,  top right
+	dbpixel  7, 10 ; facing left,  bottom left
+	dbpixel  9, 10 ; facing left,  bottom right
+
+	dbpixel 11, 12 ; facing right, top left
+	dbpixel 13, 12 ; facing right, top right
+	dbpixel 11, 10 ; facing right, bottom left
+	dbpixel 13, 10 ; facing right, bottom right
 ; 8cad3
 
-Function8cad3: ; 8cad3 (23:4ad3)
+Cut_Headbutt_GetPixelFacing: ; 8cad3 (23:4ad3)
 	ld a, [PlayerDirection]
-	and $c
+	and %00001100
 	srl a
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_8cae5
+	ld hl, .Coords
 	add hl, de
 	ld e, [hl]
 	inc hl
@@ -304,9 +314,159 @@
 	ret
 ; 8cae5 (23:4ae5)
 
-Unknown_8cae5: ; 8cae5
-	db $50, $68
-	db $50, $48
-	db $40, $58
-	db $60, $58
+.Coords: ; 8cae5
+	dbpixel 10, 13
+	dbpixel 10,  9
+	dbpixel  8, 11
+	dbpixel 12, 11
 ; 8caed
+
+
+FlyFromAnim: ; 8caed
+	call DelayFrame
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	call FlyFunction_InitGFX
+	depixel 10, 10, 4, 0
+	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	call _InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
+	add hl, bc
+	ld [hl], $84
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], SPRITE_ANIM_SEQ_FLY_FROM
+	ld a, 128
+	ld [wcf64], a
+.loop
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit
+	ld a, 0 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callab DoNextFrameForAllSprites
+	call FlyFunction_FrameTimer
+	call DelayFrame
+	jr .loop
+
+.exit
+	pop af
+	ld [VramState], a
+	ret
+; 8cb33
+
+FlyToAnim: ; 8cb33
+	call DelayFrame
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	call FlyFunction_InitGFX
+	depixel 31, 10, 4, 0
+	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	call _InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
+	add hl, bc
+	ld [hl], $84
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], SPRITE_ANIM_SEQ_FLY_TO
+	ld hl, SPRITEANIMSTRUCT_0F
+	add hl, bc
+	ld [hl], 11 * 8
+	ld a, 64
+	ld [wcf64], a
+.loop
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit
+	ld a, 0 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callab DoNextFrameForAllSprites
+	call FlyFunction_FrameTimer
+	call DelayFrame
+	jr .loop
+
+.exit
+	pop af
+	ld [VramState], a
+	call .RestorePlayerSprite_DespawnLeaves
+	ret
+
+.RestorePlayerSprite_DespawnLeaves: ; 8cb82 (23:4b82)
+	ld hl, Sprites + 2 ; Tile ID
+	xor a
+	ld c, $4
+.loop2
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	inc a
+	dec c
+	jr nz, .loop2
+	ld hl, Sprites + 4 * 4
+	ld bc, SpritesEnd - (Sprites + 4 * 4)
+	xor a
+	call ByteFill
+	ret
+
+FlyFunction_InitGFX: ; 8cb9b (23:4b9b)
+	callab ClearSpriteAnims
+	ld de, CutGrassGFX
+	ld hl, VTiles1 tile $00
+	lb bc, BANK(CutGrassGFX), 4
+	call Request2bpp
+	ld a, [CurPartyMon]
+	ld hl, PartySpecies
+	ld e, a
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+	ld e, $84
+	callba FlyFunction_GetMonIcon
+	xor a
+	ld [wJumptableIndex], a
+	ret
+
+FlyFunction_FrameTimer: ; 8cbc8 (23:4bc8)
+	call .SpawnLeaf
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .exit
+	dec [hl]
+	cp $40
+	ret c
+	and $7
+	ret nz
+	ld de, SFX_FLY
+	call PlaySFX
+	ret
+
+.exit
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.SpawnLeaf: ; 8cbe6 (23:4be6)
+	ld hl, wcf65
+	ld a, [hl]
+	inc [hl]
+	and $7
+	ret nz
+	ld a, [hl]
+	and (6 * 8) >> 1
+	sla a
+	add 8 * 8 ; gives a number in [$40, $50, $60, $70]
+	ld d, a
+	ld e, $0
+	ld a, SPRITE_ANIM_INDEX_FLY_LEAF ; fly land
+	call _InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
+	add hl, bc
+	ld [hl], $80
+	ret
--- a/event/halloffame.asm
+++ b/event/halloffame.asm
@@ -1,5 +1,5 @@
 HallOfFame:: ; 0x8640e
-	call Function8648e
+	call HallOfFame_FadeOutMusic
 	ld a, [StatusFlags]
 	push af
 	ld a, 1
@@ -12,7 +12,7 @@
 	ld hl, StatusFlags
 	set 6, [hl] ; hall of fame
 
-	callba Function14da0
+	callba HallOfFame_InitSaveIfNeeded
 
 	ld hl, wHallOfFameCount
 	ld a, [hl]
@@ -26,10 +26,10 @@
 
 	xor a
 	ld [wc2cd], a
-	call Function864c3
+	call AnimateHallOfFame
 	pop af
 	ld b, a
-	callba Function109847
+	callba Credits
 	ret
 ; 0x86455
 
@@ -38,7 +38,7 @@
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
 	ld [MusicFadeIDHi], a
-	ld a, $a
+	ld a, 10
 	ld [MusicFade], a
 	callba FadeOutPalettes
 	xor a
@@ -52,11 +52,11 @@
 	ld [wSpawnAfterChampion], a
 	ld a, [StatusFlags]
 	ld b, a
-	callba Function109847
+	callba Credits
 	ret
 ; 8648e
 
-Function8648e: ; 8648e
+HallOfFame_FadeOutMusic: ; 8648e
 	ld a, MUSIC_NONE % $100
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
@@ -72,7 +72,7 @@
 	jp DelayFrames
 ; 864b4
 
-Function864b4: ; 864b4
+HallOfFame_PlayMusicDE: ; 864b4
 	push de
 	ld de, MUSIC_NONE
 	call PlayMusic
@@ -82,29 +82,29 @@
 	ret
 ; 864c3
 
-Function864c3: ; 864c3
+AnimateHallOfFame: ; 864c3
 	xor a
 	ld [wJumptableIndex], a
-	call Function8671c
+	call LoadHOFTeam
 	jr c, .done
-	ld de, SCREEN_WIDTH
-	call Function864b4
+	ld de, MUSIC_HALL_OF_FAME
+	call HallOfFame_PlayMusicDE
 	xor a
 	ld [wcf64], a
 .loop
 	ld a, [wcf64]
-	cp 6
+	cp PARTY_LENGTH
 	jr nc, .done
-	ld hl, wc608 + 1
-	ld bc, $10
+	ld hl, wHallOfFameTempMon1
+	ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1
 	call AddNTimes
 	ld a, [hl]
 	cp -1
 	jr z, .done
 	push hl
-	call Function865b5
+	call AnimateHOFMonEntrance
 	pop hl
-	call Function8650c
+	call .DisplayNewHallOfFamer
 	jr c, .done
 	ld hl, wcf64
 	inc [hl]
@@ -120,9 +120,9 @@
 	ret
 ; 8650c
 
-Function8650c: ; 8650c
-	call Function86748
-	ld de, String_8652c
+.DisplayNewHallOfFamer: ; 8650c
+	call DisplayHOFMon
+	ld de, .String_NewHallOfFamer
 	hlcoord 1, 2
 	call PlaceString
 	call WaitBGMap
@@ -135,7 +135,7 @@
 	ret
 ; 8652c
 
-String_8652c:
+.String_NewHallOfFamer:
 	db "New Hall of Famer!@"
 ; 8653f
 
@@ -227,7 +227,7 @@
 	ret
 ; 865b5
 
-Function865b5: ; 865b5
+AnimateHOFMonEntrance: ; 865b5
 	push hl
 	call ClearBGPalettes
 	callba Function4e906
@@ -265,9 +265,9 @@
 	ld b, SCGB_1A
 	call GetSGBLayout
 	call SetPalettes
-	call Function86635
+	call HOF_SlideBackpic
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
@@ -278,12 +278,12 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [hSCY], a
-	call Function86643
+	call HOF_SlideFrontpic
 	ret
 ; 86635
 
-Function86635: ; 86635
-.loop
+HOF_SlideBackpic:
+.backpicloop
 	ld a, [hSCX]
 	cp $70
 	ret z
@@ -290,11 +290,11 @@
 	add $4
 	ld [hSCX], a
 	call DelayFrame
-	jr .loop
+	jr .backpicloop
 ; 86643
 
-Function86643: ; 86643
-.loop
+HOF_SlideFrontpic:
+.frontpicloop
 	ld a, [hSCX]
 	and a
 	ret z
@@ -303,7 +303,7 @@
 endr
 	ld [hSCX], a
 	call DelayFrame
-	jr .loop
+	jr .frontpicloop
 ; 86650
 
 _HallOfFamePC: ; 86650
@@ -311,7 +311,7 @@
 	xor a
 	ld [wJumptableIndex], a
 .loop
-	call Function8671c
+	call LoadHOFTeam
 	ret c
 	call Function86665
 	ret c
@@ -361,8 +361,8 @@
 	ld a, [wcf64]
 	cp $6
 	jr nc, .fail
-	ld hl, wc608 + 1
-	ld bc, $10
+	ld hl, wHallOfFameTempMon1
+	ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1
 	call AddNTimes
 	ld a, [hl]
 	cp $ff
@@ -376,8 +376,8 @@
 	push hl
 	call ClearBGPalettes
 	pop hl
-	call Function86748
-	ld a, [wc608]
+	call DisplayHOFMon
+	ld a, [wHallOfFameTempWinCount]
 	cp 200 + 1
 	jr c, .print_num_hof
 	ld de, String_866fc
@@ -391,7 +391,7 @@
 	hlcoord 1, 2
 	call PlaceString
 	hlcoord 2, 2
-	ld de, wc608
+	ld de, wHallOfFameTempWinCount
 	lb bc, 1, 3
 	call PrintNum
 	hlcoord 11, 2
@@ -423,10 +423,10 @@
 ; 8671c
 
 
-Function8671c: ; 8671c
+LoadHOFTeam: ; 8671c
 	ld a, [wJumptableIndex]
 	cp NUM_HOF_TEAMS
-	jr nc, .full
+	jr nc, .invalid
 	ld hl, sHallOfFame
 	ld bc, HOF_LENGTH
 	call AddNTimes
@@ -434,8 +434,8 @@
 	call GetSRAMBank
 	ld a, [hl]
 	and a
-	jr z, .fail
-	ld de, wc608
+	jr z, .absent
+	ld de, wHallOfFameTemp
 	ld bc, HOF_LENGTH
 	call CopyBytes
 	call CloseSRAM
@@ -442,15 +442,15 @@
 	and a
 	ret
 
-.fail
+.absent
 	call CloseSRAM
 
-.full
+.invalid
 	scf
 	ret
 ; 86748
 
-Function86748: ; 86748
+DisplayHOFMon: ; 86748
 	xor a
 	ld [hBGMapMode], a
 	ld a, [hli]
@@ -466,7 +466,7 @@
 	ld a, [hli]
 	ld [TempMonLevel], a
 	ld de, StringBuffer2
-	ld bc, 10
+	ld bc, PKMN_NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
 	ld [StringBuffer2 + 10], a
@@ -486,7 +486,7 @@
 	ld hl, TempMonDVs
 	predef GetUnownLetter
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	hlcoord 6, 5
 	call _PrepMonFrontpic
 	ld a, [CurPartySpecies]
@@ -540,7 +540,7 @@
 Function86810: ; 86810
 	call ClearBGPalettes
 	ld hl, VTiles2 tile $63
-	ld de, FontExtra + $d0
+	ld de, FontExtra + 13 tiles
 	lb bc, BANK(FontExtra), 1
 	call Request2bpp
 	hlcoord 0, 0
@@ -564,9 +564,9 @@
 	ld b, SCGB_1A
 	call GetSGBLayout
 	call SetPalettes
-	call Function86635
+	call HOF_SlideBackpic
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
@@ -583,7 +583,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [hSCY], a
-	call Function86643
+	call HOF_SlideFrontpic
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 2
@@ -618,7 +618,7 @@
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	call WaitBGMap
-	callba Function26601
+	callba ProfOaksPCRating
 	ret
 ; 868ed
 
--- a/event/itemball.asm
+++ b/event/itemball.asm
@@ -2,22 +2,22 @@
 	callasm .TryReceiveItem
 	iffalse .no_room
 	disappear LAST_TALKED
-	loadfont
+	opentext
 	writetext .text_found
 	playsound SFX_ITEM
 	pause 60
 	itemnotify
-	loadmovesprites
+	closetext
 	end
 ; 0x122e3
 
 .no_room: ; 0x122e3
-	loadfont
+	opentext
 	writetext .text_found
-	closetext
+	waitbutton
 	writetext .text_bag_full
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0x122ee
 
@@ -37,7 +37,7 @@
 	xor a
 	ld [ScriptVar], a
 	ld a, [EngineBuffer1]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	ld hl, StringBuffer3
 	call CopyName2
--- a/event/itemfinder.asm
+++ b/event/itemfinder.asm
@@ -1,5 +1,5 @@
 ItemFinder: ; 12580
-	callba CheckForSignpostItems
+	callba CheckForHiddenItems
 	jr c, .found_something
 	ld hl, .Script_FoundNothing
 	jr .resume
@@ -10,12 +10,12 @@
 .resume
 	call QueueScript
 	ld a, $1
-	ld [wd0ec], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; 12599
 
 .ItemfinderSound: ; 12599
-	ld c, $4
+	ld c, 4
 .sfx_loop
 	push bc
 	ld de, SFX_SECOND_PART_OF_ITEMFINDER
@@ -33,7 +33,7 @@
 	special UpdateTimePals
 	callasm .ItemfinderSound
 	writetext .Text_FoundSomething
-	loadmovesprites
+	closetext
 	end
 ; 0x125ba
 
@@ -41,7 +41,7 @@
 	reloadmappart
 	special UpdateTimePals
 	writetext .Text_FoundNothing
-	loadmovesprites
+	closetext
 	end
 ; 0x125c3
 
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -1,10 +1,10 @@
 Kurt_PrintTextWhichApricorn: ; 88000
-	ld hl, UnknownText_0x88007
+	ld hl, .Text
 	call PrintText
 	ret
 ; 88007
 
-UnknownText_0x88007: ; 0x88007
+.Text: ; 0x88007
 	; Which APRICORN should I use?
 	text_jump UnknownText_0x1bc06b
 	db "@"
@@ -11,12 +11,12 @@
 ; 0x8800c
 
 Kurt_PrintTextHowMany: ; 8800c
-	ld hl, UnknownText_0x88013
+	ld hl, .Text
 	call PrintText
 	ret
 ; 88013
 
-UnknownText_0x88013: ; 0x88013
+.Text: ; 0x88013
 	; How many should I make?
 	text_jump UnknownText_0x1bc089
 	db "@"
@@ -40,7 +40,7 @@
 	and a
 	jr z, .done
 	ld [CurItem], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld c, a
 	push bc
 	call Kurt_PrintTextHowMany
@@ -67,9 +67,9 @@
 	ld [hBGMapMode], a
 	call InitScrollingMenu
 	call UpdateSprites
-	call HandleScrollingMenu
-	ld a, [wcf73]
-	cp $2
+	call ScrollingMenu
+	ld a, [wMenuJoypad]
+	cp B_BUTTON
 	jr z, .nope
 	ld a, [MenuSelection]
 	cp -1
@@ -116,7 +116,7 @@
 	call Kurt_GetQuantityOfApricorn
 	ret z
 	ld a, [wItemQuantityChangeBuffer]
-	ld [wcf75], a
+	ld [MenuSelectionQuantity], a
 	callba PlaceMenuItemQuantity
 	ret
 ; 880c2
@@ -154,7 +154,7 @@
 	scf
 
 .done
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 8810d
 
@@ -167,7 +167,7 @@
 
 .PlaceApricornName: ; 88116
 	call MenuBoxCoord2Tile
-	ld de, $0015
+	ld de, SCREEN_WIDTH + 1
 	add hl, de
 	ld d, h
 	ld e, l
@@ -177,7 +177,7 @@
 
 PlaceApricornQuantity: ; 88126
 	call MenuBoxCoord2Tile
-	ld de, $0032
+	ld de, 2 * SCREEN_WIDTH + 10
 	add hl, de
 	ld [hl], "×"
 	inc hl
@@ -231,16 +231,16 @@
 	ld c, a
 	ld e, $0
 	xor a
-	ld [ItemCountBuffer], a
+	ld [CurItemQuantity], a
 	ld a, -1
-	ld [wd002], a
+	ld [wApricorns], a
 
 ; Search for [CurItem] in the bag.
 .loop1
 ; Increase the total count.
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	inc a
-	ld [ItemCountBuffer], a
+	ld [CurItemQuantity], a
 ; Get the index of the next item.
 	inc hl
 	ld a, [hli]
@@ -253,10 +253,10 @@
 ; Increment the result counter and store the bag index of the match.
 	ld d, $0
 	push hl
-	ld hl, wd002
+	ld hl, wApricorns
 	add hl, de
 	inc e
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	dec a
 	ld [hli], a
 	ld a, -1
@@ -271,7 +271,7 @@
 	jr z, .done
 	dec a
 	jr z, .OnlyOne
-	ld hl, wd002
+	ld hl, wApricorns
 
 .loop2
 	ld a, [hl]
@@ -316,13 +316,13 @@
 	jr nz, .loop2
 
 .OnlyOne
-	ld hl, wd002
+	ld hl, wApricorns
 .loop4
 	ld a, [hl]
 	cp -1
 	jr z, .done
 	push hl
-	ld [ItemCountBuffer], a
+	ld [CurItemQuantity], a
 	call Kurt_GetRidOfItem
 	pop hl
 	ld a, [wItemQuantityChangeBuffer]
@@ -375,7 +375,7 @@
 Kurt_GetRidOfItem: ; 88211
 	push bc
 	ld hl, NumItems
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	ld c, a
 	ld b, $0
 	inc hl
--- a/event/magikarp.asm
+++ b/event/magikarp.asm
@@ -1,5 +1,3 @@
-
-
 Special_CheckMagikarpLength: ; fbb32
 	; Returns 3 if you select a Magikarp that beats the previous record.
 	; Returns 2 if you select a Magikarp, but the current record is longer.
@@ -81,7 +79,7 @@
 ; 0xfbbae
 
 Magikarp_LoadFeetInchesChars: ; fbbae
-	ld hl, VTiles2 + "′" * $10
+	ld hl, VTiles2 tile "′"
 	ld de, .feetinchchars
 	lb bc, BANK(.feetinchchars), 2
 	call Request2bpp
--- a/event/magnet_train.asm
+++ b/event/magnet_train.asm
@@ -3,14 +3,14 @@
 	and a
 	jr nz, .ToGoldenrod
 	ld a, 1 ; forwards
-	lb bc, $40, $60
-	ld de, $fca0
+	lb bc,  $40,  $60
+	lb de, (11 * 8) - (11 * 8 + 4), -$60
 	jr .continue
 
 .ToGoldenrod
 	ld a, -1 ; backwards
-	lb bc, $c0, $a0
-	ld de, $b460
+	lb bc, -$40, -$60
+	lb de, (11 * 8) + (11 * 8 + 4), $60
 
 .continue
 	ld h, a
@@ -18,21 +18,23 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld a, h
-	ld [w5_d191], a
+	ld [wMagnetTrainDirection], a
 	ld a, c
-	ld [w5_d192], a
+	ld [wMagnetTrainInitPosition], a
 	ld a, b
-	ld [w5_d193], a
+	ld [wMagnetTrainHoldPosition], a
 	ld a, e
-	ld [w5_d194], a
+	ld [wMagnetTrainFinalPosition], a
 	ld a, d
-	ld [w5_d195], a
+	ld [wMagnetTrainPlayerSpriteInitX], a
+
 	ld a, [hSCX]
 	push af
 	ld a, [hSCY]
 	push af
-	call Function8ccc9
+	call MagntTrain_LoadGFX_PlayMusic
 	ld hl, hVBlank
 	ld a, [hl]
 	push af
@@ -43,15 +45,15 @@
 	jr z, .initialize
 	bit 7, a
 	jr nz, .done
-	callab Function8cf69
-	call Function8cdf7
-	call Function8cc99
+	callab PlaySpriteAnimations
+	call MagnetTrain_Jumptable
+	call MagnetTrain_UpdateLYOverrides
 	call Function3b0c
 	call DelayFrame
 	jr .loop
 
 .initialize
-	call Function8ceae
+	call MagnetTrain_Jumptable_FirstRunThrough
 	jr .loop
 
 .done
@@ -59,9 +61,9 @@
 	ld [hVBlank], a
 	call ClearBGPalettes
 	xor a
-	ld [hLCDStatCustom], a
-	ld [hLCDStatCustom + 1], a
-	ld [hLCDStatCustom + 2], a
+	ld [hFFC6], a
+	ld [hFFC7], a
+	ld [hFFC8], a
 	ld [hSCX], a
 	ld [Requested2bppSource], a
 	ld [Requested2bppSource + 1], a
@@ -69,6 +71,7 @@
 	ld [Requested2bppDest + 1], a
 	ld [Requested2bpp], a
 	call ClearTileMap
+
 	pop af
 	ld [hSCY], a
 	pop af
@@ -80,21 +83,21 @@
 	ret
 ; 8cc99
 
-Function8cc99: ; 8cc99
+MagnetTrain_UpdateLYOverrides: ; 8cc99
 	ld hl, LYOverridesBackup
 	ld c, $2f
 	ld a, [wcf64]
 	add a
 	ld [hSCX], a
-	call Function8ccc4
+	call .loadloop
 	ld c, $30
 	ld a, [wcf65]
-	call Function8ccc4
+	call .loadloop
 	ld c, $31
 	ld a, [wcf64]
 	add a
-	call Function8ccc4
-	ld a, [wd191]
+	call .loadloop
+	ld a, [wMagnetTrainDirection]
 	ld d, a
 	ld hl, wcf64
 	ld a, [hl]
@@ -103,21 +106,19 @@
 endr
 	ld [hl], a
 	ret
-; 8ccc4
 
-Function8ccc4: ; 8ccc4
-.asm_8ccc4
+.loadloop
 	ld [hli], a
 	dec c
-	jr nz, .asm_8ccc4
+	jr nz, .loadloop
 	ret
 ; 8ccc9
 
-Function8ccc9: ; 8ccc9
+MagntTrain_LoadGFX_PlayMusic: ; 8ccc9
 	call ClearBGPalettes
 	call ClearSprites
 	call DisableLCD
-	callab Function8cf53
+	callab ClearSpriteAnims
 	call SetMagnetTrainPals
 	call DrawMagnetTrain
 	ld a, $90
@@ -135,20 +136,20 @@
 	pop af
 	ld [rSVBK], a
 	ld hl, VTiles0
-	ld c, $4
+	ld c, 4
 	call Request2bpp
-	ld hl, $c0
+	ld hl, 12 tiles
 	add hl, de
 	ld d, h
 	ld e, l
 	ld hl, VTiles0 tile $04
-	ld c, $4
+	ld c, 4
 	call Request2bpp
-	call Function8cda6
+	call MagnetTrain_InitLYOverrides
 	ld hl, wJumptableIndex
 	xor a
 	ld [hli], a
-	ld a, [wd192]
+	ld a, [wMagnetTrainInitPosition]
 rept 3
 	ld [hli], a
 endr
@@ -160,13 +161,13 @@
 DrawMagnetTrain: ; 8cd27
 	hlbgcoord 0, 0
 	xor a
-.asm_8cd2b
+.loop
 	call GetMagnetTrainBGTiles
 	ld b, 32 / 2
 	call .FillAlt
 	inc a
 	cp $12
-	jr c, .asm_8cd2b
+	jr c, .loop
 	hlbgcoord 0, 6
 	ld de, MagnetTrainTilemap1
 	ld c, 20
@@ -243,17 +244,17 @@
 	db $5c, $5d ; bush
 ; 8cda6
 
-Function8cda6: ; 8cda6
+MagnetTrain_InitLYOverrides: ; 8cda6
 	ld hl, LYOverrides
-	ld bc, $90
-	ld a, [wd192]
+	ld bc, LYOverridesEnd - LYOverrides
+	ld a, [wMagnetTrainInitPosition]
 	call ByteFill
 	ld hl, LYOverridesBackup
-	ld bc, $90
-	ld a, [wd192]
+	ld bc, LYOverridesBackupEnd - LYOverridesBackup
+	ld a, [wMagnetTrainInitPosition]
 	call ByteFill
 	ld a, $43
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ret
 ; 8cdc3
 
@@ -290,11 +291,11 @@
 	ret
 ; 8cdf7
 
-Function8cdf7: ; 8cdf7
+MagnetTrain_Jumptable: ; 8cdf7
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_8ce06
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -304,25 +305,26 @@
 	jp [hl]
 ; 8ce06
 
-Jumptable_8ce06: ; 8ce06
-	dw Function8ce19
-	dw Function8ce6d
-	dw Function8ce47
-	dw Function8ce6d
-	dw Function8ce7a
-	dw Function8ce6d
-	dw Function8cea2
+.Jumptable: ; 8ce06
+	
+	dw .InitPlayerSpriteAnim
+	dw .WaitScene
+	dw .MoveTrain1
+	dw .WaitScene
+	dw .MoveTrain2
+	dw .WaitScene
+	dw .TrainArrived
 ; 8ce14
 
-Function8ce14: ; 8ce14
+.Next: ; 8ce14
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 ; 8ce19
 
-Function8ce19: ; 8ce19
-	ld d, $55
-	ld a, [wd194 + 1]
+.InitPlayerSpriteAnim: ; 8ce19
+	ld d, 10 * 8 + 5
+	ld a, [wMagnetTrainPlayerSpriteInitX]
 	ld e, a
 	ld b, SPRITE_ANIM_INDEX_15
 	ld a, [rSVBK]
@@ -331,67 +333,67 @@
 	ld [rSVBK], a
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_8ce31
+	jr z, .got_gender
 	ld b, SPRITE_ANIM_INDEX_1F
 
-.asm_8ce31
+.got_gender
 	pop af
 	ld [rSVBK], a
 	ld a, b
 	call _InitSpriteAnimStruct
-	ld hl, $3
+	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $0
-	call Function8ce14
+	call .Next
 	ld a, $80
 	ld [wcf66], a
 	ret
 ; 8ce47
 
-Function8ce47: ; 8ce47
-	ld hl, wd193
+.MoveTrain1: ; 8ce47
+	ld hl, wMagnetTrainHoldPosition
 	ld a, [wcf65]
 	cp [hl]
-	jr z, .asm_8ce64
+	jr z, .PrepareToHoldTrain
 	ld e, a
-	ld a, [wd191]
+	ld a, [wMagnetTrainDirection]
 	xor $ff
 	inc a
 	add e
 	ld [wcf65], a
-	ld hl, wc3c0
-	ld a, [wd191]
+	ld hl, wGlobalAnimXOffset
+	ld a, [wMagnetTrainDirection]
 	add [hl]
 	ld [hl], a
 	ret
 
-.asm_8ce64
-	call Function8ce14
+.PrepareToHoldTrain
+	call .Next
 	ld a, $80
 	ld [wcf66], a
 	ret
 ; 8ce6d
 
-Function8ce6d: ; 8ce6d
+.WaitScene: ; 8ce6d
 	ld hl, wcf66
 	ld a, [hl]
 	and a
-	jr z, .asm_8ce76
+	jr z, .DoneWaiting
 	dec [hl]
 	ret
 
-.asm_8ce76
-	call Function8ce14
+.DoneWaiting
+	call .Next
 	ret
 ; 8ce7a
 
-Function8ce7a: ; 8ce7a
-	ld hl, wd194
+.MoveTrain2: ; 8ce7a
+	ld hl, wMagnetTrainFinalPosition
 	ld a, [wcf65]
 	cp [hl]
-	jr z, .asm_8ce9e
+	jr z, .PrepareToFinishAnim
 	ld e, a
-	ld a, [wd191]
+	ld a, [wMagnetTrainDirection]
 	xor $ff
 	inc a
 	ld d, a
@@ -400,8 +402,8 @@
 	add d
 endr
 	ld [wcf65], a
-	ld hl, wc3c0
-	ld a, [wd191]
+	ld hl, wGlobalAnimXOffset
+	ld a, [wMagnetTrainDirection]
 	ld d, a
 	ld a, [hl]
 rept 2
@@ -412,12 +414,12 @@
 
 	ret
 
-.asm_8ce9e
-	call Function8ce14
+.PrepareToFinishAnim
+	call .Next
 	ret
 ; 8cea2
 
-Function8cea2: ; 8cea2
+.TrainArrived: ; 8cea2
 	ld a, $80
 	ld [wJumptableIndex], a
 	ld de, SFX_TRAIN_ARRIVED
@@ -425,10 +427,10 @@
 	ret
 ; 8ceae
 
-Function8ceae: ; 8ceae
-	callba Function8cf69
-	call Function8cdf7
-	call Function8cc99
+MagnetTrain_Jumptable_FirstRunThrough: ; 8ceae
+	callba PlaySpriteAnimations
+	call MagnetTrain_Jumptable
+	call MagnetTrain_UpdateLYOverrides
 	call Function3b0c
 	call DelayFrame
 	ld a, [rSVBK]
@@ -444,15 +446,15 @@
 	ld [TimeOfDayPal], a
 	ld a, $1
 	ld [wPermission], a
-	ld b, SCGB_09
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
 	call UpdateTimePals
 	ld a, [rBGP]
-	ld [wcfc7], a
+	ld [wBGP], a
 	ld a, [rOBP0]
-	ld [wcfc8], a
+	ld [wOBP0], a
 	ld a, [rOBP1]
-	ld [wcfc9], a
+	ld [wOBP1], a
 	pop af
 	ld [wPermission], a
 	pop af
--- a/event/mom.asm
+++ b/event/mom.asm
@@ -5,24 +5,24 @@
 	ld [hInMenu], a
 	xor a
 	ld [wJumptableIndex], a
-.asm_16223
+.loop
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_1622f
-	call Function16233
-	jr .asm_16223
+	jr nz, .done
+	call .RunJumptable
+	jr .loop
 
-.asm_1622f
+.done
 	pop af
 	ld [hInMenu], a
 	ret
 ; 16233
 
-Function16233: ; 16233
+.RunJumptable: ; 16233
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -32,7 +32,8 @@
 	jp [hl]
 ; 16242
 
-.jumptable: ; 16242
+.dw: ; 16242
+	
 	dw .CheckIfBankInitialized
 	dw .InitializeBank
 	dw .IsThisAboutYourMoney
@@ -106,10 +107,10 @@
 	call LoadStandardMenuDataHeader
 	ld hl, MenuDataHeader_0x166b5
 	call CopyMenuDataHeader
-	call InterpretMenu2
-	call WriteBackup
+	call VerticalMenu
+	call CloseWindow
 	jr c, .cancel
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .withdraw
 	cp $2
@@ -152,7 +153,7 @@
 	call Function16517
 	call Function1656b
 	call Function16571
-	call WriteBackup
+	call CloseWindow
 	jr c, .CancelDeposit
 	ld hl, StringBuffer2
 	ld a, [hli]
@@ -220,7 +221,7 @@
 	call Function16512
 	call Function1656b
 	call Function16571
-	call WriteBackup
+	call CloseWindow
 	jr c, .CancelWithdraw
 	ld hl, StringBuffer2
 	ld a, [hli]
@@ -309,36 +310,36 @@
 	ld a, [wDST]
 	bit 7, a
 	ld a, [hHours]
-	jr z, .asm_16447
+	jr z, .NotDST
 	and a ; within one hour of 00:00?
 	jr z, .LostBooklet
 	jr .loop
 
-.asm_16447
+.NotDST
 	cp 23 ; within one hour of 23:00?
 	jr nz, .loop
 	; fallthrough
 
 .LostBooklet
-	call Function164ea
+	call .ClearBox
 	bccoord 1, 14
-	ld hl, UnknownText_0x164f4
+	ld hl, .Text_AdjustClock
 	call PlaceWholeStringInBoxAtOnce
 	call YesNoBox
 	ret c
-	call Function164ea
+	call .ClearBox
 	bccoord 1, 14
-	ld hl, LostInstructionBookletText
+	ld hl, .Text_LostInstructionBooklet
 	call PlaceWholeStringInBoxAtOnce
 	ret
 
 .loop
-	call Function164ea
+	call .ClearBox
 	bccoord 1, 14
 	ld a, [wDST]
 	bit 7, a
-	jr z, .asm_16497
-	ld hl, UnknownText_0x16508
+	jr z, .SetDST
+	ld hl, .Text_IsDSTOver
 	call PlaceWholeStringInBoxAtOnce
 	call YesNoBox
 	ret c
@@ -345,15 +346,15 @@
 	ld a, [wDST]
 	res 7, a
 	ld [wDST], a
-	call Function164d1
-	call Function164ea
+	call .SetClockBack
+	call .ClearBox
 	bccoord 1, 14
-	ld hl, UnknownText_0x1650d
+	ld hl, .Text_SetClockBack
 	call PlaceWholeStringInBoxAtOnce
 	ret
 
-.asm_16497
-	ld hl, UnknownText_0x164fe
+.SetDST
+	ld hl, .Text_SwitchToDST
 	call PlaceWholeStringInBoxAtOnce
 	call YesNoBox
 	ret c
@@ -360,21 +361,21 @@
 	ld a, [wDST]
 	set 7, a
 	ld [wDST], a
-	call Function164b9
-	call Function164ea
+	call .SetClockForward
+	call .ClearBox
 	bccoord 1, 14
-	ld hl, UnknownText_0x16503
+	ld hl, .Text_SetClockForward
 	call PlaceWholeStringInBoxAtOnce
 	ret
 ; 164b9
 
-Function164b9: ; 164b9
+.SetClockForward: ; 164b9
 	ld a, [StartHour]
 	add 1
 	sub 24
-	jr nc, .asm_164c4
+	jr nc, .DontLoopHourForward
 	add 24
-.asm_164c4
+.DontLoopHourForward
 	ld [StartHour], a
 	ccf
 	ld a, [StartDay]
@@ -383,23 +384,23 @@
 	ret
 ; 164d1
 
-Function164d1: ; 164d1
+.SetClockBack: ; 164d1
 	ld a, [StartHour]
 	sub 1
-	jr nc, .asm_164da
+	jr nc, .DontLoopHourBack
 	add 24
-.asm_164da
+.DontLoopHourBack
 	ld [StartHour], a
 	ld a, [StartDay]
 	sbc 0
-	jr nc, .asm_164e6
+	jr nc, .DontLoopDayBack
 	add 7
-.asm_164e6
+.DontLoopDayBack
 	ld [StartDay], a
 	ret
 ; 164ea
 
-Function164ea: ; 164ea
+.ClearBox: ; 164ea
 	hlcoord 1, 14
 	lb bc, 3, 18
 	call ClearBox
@@ -406,13 +407,13 @@
 	ret
 ; 164f4
 
-UnknownText_0x164f4: ; 0x164f4
+.Text_AdjustClock: ; 0x164f4
 	; Do you want to adjust your clock for Daylight Saving Time?
 	text_jump UnknownText_0x1c6095
 	db "@"
 ; 0x164f9
 
-LostInstructionBookletText: ; 0x164f9
+.Text_LostInstructionBooklet: ; 0x164f9
 	; I lost the instruction booklet for the POKéGEAR.
 	; Come back again in a while.
 	text_jump UnknownText_0x1c60d1
@@ -419,25 +420,25 @@
 	db "@"
 ; 0x164fe
 
-UnknownText_0x164fe: ; 0x164fe
+.Text_SwitchToDST: ; 0x164fe
 	; Do you want to switch to Daylight Saving Time?
 	text_jump UnknownText_0x1c6000
 	db "@"
 ; 0x16503
 
-UnknownText_0x16503: ; 0x16503
+.Text_SetClockForward: ; 0x16503
 	; I set the clock forward by one hour.
 	text_jump UnknownText_0x1c6030
 	db "@"
 ; 0x16508
 
-UnknownText_0x16508: ; 0x16508
+.Text_IsDSTOver: ; 0x16508
 	; Is Daylight Saving Time over?
 	text_jump UnknownText_0x1c6056
 	db "@"
 ; 0x1650d
 
-UnknownText_0x1650d: ; 0x1650d
+.Text_SetClockBack: ; 0x1650d
 	; I put the clock back one hour.
 	text_jump UnknownText_0x1c6075
 	db "@"
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -6,43 +6,43 @@
 	and a
 	ret nz
 	xor a
-	ld [wdc18], a
+	ld [wWhichMomItemSet], a
 	call CheckBalance_MomItem2
 	ret nc
-	call Functionfd0c3
+	call Mom_GiveItemOrDoll
 	ret nc
-	ld b, BANK(UnknownScript_0xfd00f)
-	ld de, UnknownScript_0xfd00f
+	ld b, BANK(.Script)
+	ld de, .Script
 	callba LoadScriptBDE
 	scf
 	ret
 ; fd00f
 
-UnknownScript_0xfd00f: ; 0xfd00f
-	callasm Functionfd017
+.Script: ; 0xfd00f
+	callasm .ASMFunction
 	farjump Script_ReceivePhoneCall
 ; 0xfd017
 
-Functionfd017: ; fd017
+.ASMFunction: ; fd017
 	call MomBuysItem_DeductFunds
-	call Functionfd0eb
-	ld a, [wdc18]
+	call Mom_GetScriptPointer
+	ld a, [wWhichMomItemSet]
 	and a
 	jr nz, .ok
-	ld hl, wdc17
+	ld hl, wWhichMomItem
 	inc [hl]
 .ok
-	ld a, 1
+	ld a, PHONE_MOM
 	ld [wCurrentCaller], a
-	ld bc, wd03f
+	ld bc, EngineBuffer2
 	ld hl, 0
 	add hl, bc
 	ld [hl], 0
 	inc hl
 	ld [hl], 1
-	ld hl, 9
+	ld hl, wPhoneScriptPointer - EngineBuffer2
 	add hl, bc
-	ld a, $3f
+	ld a, BANK(Mom_GetScriptPointer)
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -52,7 +52,7 @@
 ; fd044
 
 CheckBalance_MomItem2: ; fd044
-	ld a, [wdc17]
+	ld a, [wWhichMomItem]
 	cp 10
 	jr nc, .nope
 	call GetItemFromMom
@@ -82,12 +82,12 @@
 	inc hl
 	ld [hl], (2300 % $100) ; $fc
 .loop
-	ld de, wdc19
+	ld de, MomItemTriggerBalance
 	ld bc, wMomsMoney
 	callba CompareMoney
 	jr z, .exact
 	jr nc, .less_than
-	call Functionfd099
+	call .AddMoney
 	jr .loop
 
 .less_than
@@ -95,17 +95,16 @@
 	ret
 
 .exact
-	call Functionfd099
+	call .AddMoney
 	ld a, 5
 	call RandomRange
 	inc a
-	ld [wdc18], a
+	ld [wWhichMomItemSet], a
 	scf
 	ret
-; fd099
 
-Functionfd099: ; fd099
-	ld de, wdc19
+.AddMoney
+	ld de, MomItemTriggerBalance
 	ld bc, hMoneyTemp
 	callba AddMoney
 	ret
@@ -114,7 +113,7 @@
 
 MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6)
 	call GetItemFromMom
-	ld de, 3
+	ld de, 3 ; cost
 	add hl, de
 	ld a, [hli]
 	ld [hMoneyTemp], a
@@ -128,12 +127,12 @@
 	ret
 
 
-Functionfd0c3: ; fd0c3
+Mom_GiveItemOrDoll: ; fd0c3
 	call GetItemFromMom
-	ld de, 6
+	ld de, 6 ; item type
 	add hl, de
 	ld a, [hli]
-	cp 1
+	cp MOM_ITEM
 	jr z, .not_doll
 	ld a, [hl]
 	ld c, a
@@ -145,7 +144,7 @@
 .not_doll
 	ld a, [hl]
 	ld [CurItem], a
-	ld a, $1
+	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
 	ld hl, PCItems
 	call ReceiveItem
@@ -153,19 +152,19 @@
 ; fd0eb
 
 
-Functionfd0eb: ; fd0eb (3f:50eb)
+Mom_GetScriptPointer: ; fd0eb (3f:50eb)
 	call GetItemFromMom
-	ld de, 6 ; field
+	ld de, 6 ; item type
 	add hl, de
 	ld a, [hli]
-	ld de, Script_MomBoughtItem
-	cp 1
+	ld de, .ItemScript
+	cp MOM_ITEM
 	ret z
-	ld de, Script_MomBoughtDoll
+	ld de, .DollScript
 	ret
 ; fd0fd (3f:50fd)
 
-Script_MomBoughtItem: ; 0xfd0fd
+.ItemScript: ; 0xfd0fd
 	writetext _MomText_HiHowAreYou
 	writetext _MomText_FoundAnItem
 	writetext _MomText_BoughtWithYourMoney
@@ -173,7 +172,7 @@
 	end
 ; 0xfd10a
 
-Script_MomBoughtDoll: ; 0xfd10a
+.DollScript: ; 0xfd10a
 	writetext _MomText_HiHowAreYou
 	writetext _MomText_FoundADoll
 	writetext _MomText_BoughtWithYourMoney
@@ -183,15 +182,15 @@
 
 
 GetItemFromMom: ; fd117
-	ld a, [wdc18]
+	ld a, [wWhichMomItemSet]
 	and a
 	jr z, .zero
 	dec a
 	ld de, MomItems_1
-	jr .incave
+	jr .GetFromList1
 
 .zero
-	ld a, [wdc17]
+	ld a, [wWhichMomItem]
 	cp 10 ; length of MomItems_2
 	jr c, .ok
 	xor a
@@ -199,7 +198,7 @@
 .ok
 	ld de, MomItems_2
 
-.incave
+.GetFromList1
 	ld l, a
 	ld h, 0
 rept 3 ; multiply hl by 8
@@ -223,8 +222,6 @@
 	momitem      0,   180, MOM_ITEM, POKE_BALL
 	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
 	momitem      0,   500, MOM_ITEM, GREAT_BALL
-; fd15e
-
 MomItems_2: ; fd15e
 	momitem    900,   600, MOM_ITEM, SUPER_POTION
 	momitem   4000,   270, MOM_ITEM, REPEL
--- a/event/move_deleter.asm
+++ b/event/move_deleter.asm
@@ -1,15 +1,15 @@
 MoveDeletion:
-	ld hl, UnknownText_0x2c5ef
+	ld hl, .IntroText
 	call PrintText
 	call YesNoBox
-	jr c, .asm_2c5c3
-	ld hl, UnknownText_0x2c5f4
+	jr c, .declined
+	ld hl, .AskWhichMonText
 	call PrintText
 	callba SelectMonFromParty
-	jr c, .asm_2c5c3
+	jr c, .declined
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_2c5bc
+	jr z, .egg
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Moves + 1
 	ld bc, PARTYMON_STRUCT_LENGTH
@@ -16,98 +16,98 @@
 	call AddNTimes
 	ld a, [hl]
 	and a
-	jr z, .asm_2c5ca
-	ld hl, UnknownText_0x2c5ea
+	jr z, .onlyonemove
+	ld hl, .AskWhichMoveText
 	call PrintText
 	call LoadStandardMenuDataHeader
-	callba Function12f5b
+	callba ChooseMoveToDelete
 	push af
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	pop af
-	jr c, .asm_2c5c3
-	ld a, [MenuSelection2]
+	jr c, .declined
+	ld a, [wMenuCursorY]
 	push af
 	ld a, [CurSpecies]
 	ld [wd265], a
 	call GetMoveName
-	ld hl, UnknownText_0x2c5d6
+	ld hl, .ConfirmDeleteText
 	call PrintText
 	call YesNoBox
 	pop bc
-	jr c, .asm_2c5c3
-	call Function2c5f9
+	jr c, .declined
+	call .DeleteMove
 	call WaitSFX
 	ld de, SFX_MOVE_DELETED
 	call PlaySFX
 	call WaitSFX
-	ld hl, UnknownText_0x2c5db
+	ld hl, .MoveDeletedText
 	call PrintText
 	ret
 
-.asm_2c5bc
-	ld hl, UnknownText_0x2c5e0
+.egg
+	ld hl, .EggText
 	call PrintText
 	ret
 
-.asm_2c5c3
-	ld hl, UnknownText_0x2c5e5
+.declined
+	ld hl, .DeclinedDeletionText
 	call PrintText
 	ret
 
-.asm_2c5ca
-	ld hl, UnknownText_0x2c5d1
+.onlyonemove
+	ld hl, .OnlyOneMoveText
 	call PrintText
 	ret
 
-UnknownText_0x2c5d1: ; 0x2c5d1
+.OnlyOneMoveText: ; 0x2c5d1
 	; That #MON knows only one move.
 	text_jump UnknownText_0x1c5eba
 	db "@"
 ; 0x2c5d6
 
-UnknownText_0x2c5d6: ; 0x2c5d6
+.ConfirmDeleteText: ; 0x2c5d6
 	; Oh, make it forget @ ?
 	text_jump UnknownText_0x1c5eda
 	db "@"
 ; 0x2c5db
 
-UnknownText_0x2c5db: ; 0x2c5db
+.MoveDeletedText: ; 0x2c5db
 	; Done! Your #MON forgot the move.
 	text_jump UnknownText_0x1c5ef5
 	db "@"
 ; 0x2c5e0
 
-UnknownText_0x2c5e0: ; 0x2c5e0
+.EggText: ; 0x2c5e0
 	; An EGG doesn't know any moves!
 	text_jump UnknownText_0x1c5f17
 	db "@"
 ; 0x2c5e5
 
-UnknownText_0x2c5e5: ; 0x2c5e5
+.DeclinedDeletionText: ; 0x2c5e5
 	; No? Come visit me again.
 	text_jump UnknownText_0x1c5f36
 	db "@"
 ; 0x2c5ea
 
-UnknownText_0x2c5ea: ; 0x2c5ea
+.AskWhichMoveText: ; 0x2c5ea
 	; Which move should it forget, then?
 	text_jump UnknownText_0x1c5f50
 	db "@"
 ; 0x2c5ef
 
-UnknownText_0x2c5ef: ; 0x2c5ef
+.IntroText: ; 0x2c5ef
 	; Um… Oh, yes, I'm the MOVE DELETER. I can make #MON forget moves. Shall I make a #MON forget?
 	text_jump UnknownText_0x1c5f74
 	db "@"
 ; 0x2c5f4
 
-UnknownText_0x2c5f4: ; 0x2c5f4
+.AskWhichMonText: ; 0x2c5f4
 	; Which #MON?
 	text_jump UnknownText_0x1c5fd1
 	db "@"
 ; 0x2c5f9
 
-Function2c5f9: ; 2c5f9
+.DeleteMove: ; 2c5f9
 	ld a, b
 	push bc
 	dec a
@@ -121,18 +121,18 @@
 	pop bc
 	push bc
 	inc b
-.asm_2c60f
+.loop
 	ld a, b
 	cp NUM_MOVES + 1
-	jr z, .asm_2c61b
+	jr z, .okay
 	inc hl
 	ld a, [hld]
 	ld [hl], a
 	inc hl
 	inc b
-	jr .asm_2c60f
+	jr .loop
 
-.asm_2c61b
+.okay
 	xor a
 	ld [hl], a
 	pop bc
@@ -149,18 +149,18 @@
 	call AddNTimes
 	pop bc
 	inc b
-.asm_2c633
+.loop2
 	ld a, b
 	cp NUM_MOVES + 1
-	jr z, .asm_2c63f
+	jr z, .done
 	inc hl
 	ld a, [hld]
 	ld [hl], a
 	inc hl
 	inc b
-	jr .asm_2c633
+	jr .loop2
 
-.asm_2c63f
+.done
 	xor a
 	ld [hl], a
 	ret
--- a/event/photo.asm
+++ b/event/photo.asm
@@ -50,7 +50,7 @@
 
 	xor a
 	ld [wJumptableIndex], a
-	call Function16cc8
+	call .UpdateUnownFrontpic
 	call WaitBGMap
 
 	ld a, UNOWN
@@ -59,7 +59,7 @@
 	ld [TempMonDVs], a
 	ld [TempMonDVs + 1], a
 
-	ld b, SCGB_1C
+	ld b, SCGB_FRONTPICPALS
 	call GetSGBLayout
 	call SetPalettes
 
@@ -74,7 +74,7 @@
 	and A_BUTTON
 	jr nz, .pressed_a
 
-	call Function16ca0
+	call .LeftRight
 	call DelayFrame
 	jr .joy_loop
 
@@ -96,7 +96,7 @@
 	ret
 ; 16ca0
 
-Function16ca0: ; 16ca0
+.LeftRight: ; 16ca0
 	ld a, [hJoyLast]
 	and D_RIGHT
 	jr nz, .press_right
@@ -110,8 +110,7 @@
 	ld a, [hl]
 	and a
 	jr nz, .wrap_around_left
-	ld [hl], $1b
-
+	ld [hl], 26 + 1
 .wrap_around_left
 	dec [hl]
 	jr .return
@@ -119,19 +118,18 @@
 .press_right
 	ld hl, wJumptableIndex
 	ld a, [hl]
-	cp $1a
+	cp 26
 	jr c, .wrap_around_right
-	ld [hl], $ff
-
+	ld [hl], -1
 .wrap_around_right
 	inc [hl]
 
 .return
-	call Function16cc8
+	call .UpdateUnownFrontpic
 	ret
 ; 16cc8
 
-Function16cc8: ; 16cc8
+.UpdateUnownFrontpic: ; 16cc8
 	ld a, [wJumptableIndex]
 	cp 26
 	jr z, Function16d20
@@ -140,7 +138,7 @@
 	ld a, UNOWN
 	ld [CurPartySpecies], a
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ld de, VTiles2
 	predef GetFrontpic
 	call Function16cff
@@ -162,7 +160,7 @@
 
 	ld a, BANK(sScratch)
 	call GetSRAMBank
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld hl, sScratch
 	ld a, [hROMBank]
 	ld b, a
@@ -249,7 +247,7 @@
 	call PrintText
 	call DisableSpriteUpdates
 	callba PrintPartymon
-	call Function2b74
+	call ReturnToMapWithSpeechTextbox
 	ld a, [hPrinter]
 	and a
 	jr nz, .cancel
--- a/event/poisonstep.asm
+++ b/event/poisonstep.asm
@@ -104,7 +104,7 @@
 	ld de, SFX_POISON
 	call PlaySFX
 	ld b, $2
-	predef Functioncbcdd
+	predef LoadPoisonBGPals
 	call DelayFrame
 	ret
 ; 50669
@@ -111,10 +111,10 @@
 
 .Script_MonFaintedToPoison: ; 50669
 	callasm .PlayPoisonSFX
-	loadfont
+	opentext
 	callasm .CheckWhitedOut
 	iffalse .whiteout
-	loadmovesprites
+	closetext
 	end
 ; 50677
 
--- a/event/sacred_ash.asm
+++ b/event/sacred_ash.asm
@@ -1,7 +1,7 @@
 
 _SacredAsh: ; 507e6
 	ld a, $0
-	ld [wd0ec], a
+	ld [wItemEffectSucceeded], a
 	call CheckAnyFaintedMon
 	ret nc
 
@@ -8,7 +8,7 @@
 	ld hl, SacredAshScript
 	call QueueScript
 	ld a, $1
-	ld [wd0ec], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; 507fb
 
@@ -58,12 +58,12 @@
 	special FadeInPalettes
 	special FadeOutPalettes
 	special FadeInPalettes
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x50845
 	playsound SFX_CAUGHT_MON
+	waitsfx
 	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0x50845
 
--- a/event/squirtbottle.asm
+++ b/event/squirtbottle.asm
@@ -2,7 +2,7 @@
 	ld hl, UnknownScript_0x5073c
 	call QueueScript
 	ld a, $1
-	ld [wd0ec], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; 5073c
 
--- a/event/sweet_scent.asm
+++ b/event/sweet_scent.asm
@@ -2,7 +2,7 @@
 	ld hl, UnknownScript_0x506c8
 	call QueueScript
 	ld a, $1
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; 506c8
 
@@ -11,14 +11,14 @@
 	special UpdateTimePals
 	callasm GetPartyNick
 	writetext UnknownText_0x50726
-	closetext
+	waitbutton
 	callasm SweetScentEncounter
 	iffalse UnknownScript_0x506e9
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue UnknownScript_0x506e5
-	battlecheck
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	end
 ; 0x506e5
 
@@ -28,8 +28,8 @@
 
 UnknownScript_0x506e9: ; 0x506e9
 	writetext UnknownText_0x5072b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0x506ef
 
--- a/event/unown.asm
+++ b/event/unown.asm
@@ -150,10 +150,10 @@
 	ld bc, AttrMap - TileMap
 	add hl, bc
 	call Function8aee9
-	call Function3200
+	call WaitBGMap2
 	call JoyWaitAorB
 	call PlayClickSFX
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 8aebc
 
--- a/event/whiteout.asm
+++ b/event/whiteout.asm
@@ -9,7 +9,7 @@
 
 Script_Whiteout: ; 0x124ce
 	writetext .WhitedOutText
-	closetext
+	waitbutton
 	special FadeOutPalettes
 	pause 40
 	special HealParty
@@ -20,7 +20,7 @@
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	newloadmap MAPSETUP_WARP
-	resetfuncs
+	end_all
 
 .bug_contest
 	jumpstd bugcontestresultswarp
@@ -35,7 +35,7 @@
 OverworldBGMap: ; 124fa
 	call ClearPalettes
 	call ClearScreen
-	call Function3200
+	call WaitBGMap2
 	call HideSprites
 	call RotateThreePalettesLeft
 	ret
@@ -42,7 +42,7 @@
 ; 1250a
 
 BattleBGMap: ; 1250a
-	ld b, SCGB_00
+	ld b, SCGB_BATTLE_GRAYSCALE
 	call GetSGBLayout
 	call SetPalettes
 	ret
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -105,8 +105,10 @@
 rOBP1       EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
 rWY         EQU $ff4a ; Window Y Position (R/W)
 rWX         EQU $ff4b ; Window X Position minus 7 (R/W)
+rLCDMODE    EQU $ff4c
 rKEY1       EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
 rVBK        EQU $ff4f ; CGB Mode Only - VRAM Bank
+rBLCK       EQU $ff50
 rHDMA1      EQU $ff51 ; CGB Mode Only - New DMA Source, High
 rHDMA2      EQU $ff52 ; CGB Mode Only - New DMA Source, Low
 rHDMA3      EQU $ff53 ; CGB Mode Only - New DMA Destination, High
binary files /dev/null b/gfx/battle/expbarend.2bpp differ
binary files /dev/null b/gfx/battle/expbarend_sgb.2bpp differ
binary files /dev/null b/gfx/intro/gender_screen.2bpp differ
binary files /dev/null b/gfx/intro/grass1.2bpp differ
binary files /dev/null b/gfx/intro/grass2.2bpp differ
binary files /dev/null b/gfx/intro/grass3.2bpp differ
binary files /dev/null b/gfx/intro/grass4.2bpp differ
--- a/gfx/mail.asm
+++ b/gfx/mail.asm
@@ -694,22 +694,22 @@
 
 MailGFX_PlaceMessage: ; b9803
 	ld bc, MAIL_STRUCT_LENGTH
-	ld de, wd002
-	ld a, $0
+	ld de, wTempMail
+	ld a, BANK(sPartyMail)
 	call GetSRAMBank
 	call CopyBytes
 	call CloseSRAM
-	ld hl, wd002 + sPartyMon1MailAuthor - sPartyMon1Mail
-	ld de, wd050
+	ld hl, wTempMailAuthor
+	ld de, wMonOrItemNameBuffer
 	ld bc, NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
-	ld [wd002 + sPartyMon1MailAuthor - sPartyMon1Mail], a
-	ld [wd050 + NAME_LENGTH - 1], a
-	ld de, wd002
+	ld [wTempMailAuthor], a
+	ld [wMonOrItemNameBuffer + NAME_LENGTH - 1], a
+	ld de, wTempMailMessage
 	hlcoord 2, 7
 	call PlaceString
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld a, [de]
 	and a
 	ret z
--- a/gfx/pics/animation.asm
+++ b/gfx/pics/animation.asm
@@ -97,7 +97,7 @@
 	ret c
 	call LoadMonAnimation
 .loop
-	call Functiond00b4
+	call SetUpPokeAnim
 	push af
 	callba Function10402d
 	pop af
@@ -121,7 +121,7 @@
 	ret
 ; d00b4
 
-Functiond00b4: ; d00b4
+SetUpPokeAnim: ; d00b4
 	ld a, [rSVBK]
 	push af
 	ld a, $2
@@ -184,8 +184,8 @@
 ; d010b
 
 PokeAnim_Setup: ; d010b
-	ld c, $0
-	ld b, $0
+	ld c, FALSE
+	ld b, 0
 	call Functiond0228
 	call Functiond0504
 	ld a, [wPokeAnimSceneIndex]
@@ -195,8 +195,8 @@
 ; d011d
 
 PokeAnim_Setup2: ; d011d
-	ld c, $0
-	ld b, $4
+	ld c, FALSE
+	ld b, 4
 	call Functiond0228
 	call Functiond0504
 	ld a, [wPokeAnimSceneIndex]
@@ -206,8 +206,8 @@
 ; d012f
 
 PokeAnim_Extra: ; d012f
-	ld c, $1
-	ld b, $0
+	ld c, TRUE
+	ld b, 0
 	call Functiond0228
 	call Functiond0504
 	ld a, [wPokeAnimSceneIndex]
@@ -365,8 +365,8 @@
 	ld a, $2
 	ld [rSVBK], a
 	push bc
-	ld hl, w2_d172
-	ld bc, wPokeAnimStructEnd - w2_d172
+	ld hl, wPokeAnimExtraFlag
+	ld bc, wPokeAnimStructEnd - wPokeAnimExtraFlag
 	xor a
 	call ByteFill
 	pop bc
@@ -373,10 +373,10 @@
 	ld a, b
 	ld [w2_d173], a
 	ld a, c
-	ld [w2_d172], a
-	call Functiond055c
-	call Functiond05ce
-	call Functiond061b
+	ld [wPokeAnimExtraFlag], a
+	call GetMonAnimPointer
+	call GetMonFramesPointer
+	call GetMonBitmaskPointer
 	pop af
 	ld [rSVBK], a
 	ret
@@ -425,16 +425,16 @@
 
 PokeAnim_SetRepeat: ; d028e
 	ld a, [w2_d183]
-	ld [w2_d17f], a
+	ld [wPokeAnimRepeatTimer], a
 	jr Functiond0253
 ; d0296
 
 PokeAnim_DoRepeat: ; d0296
-	ld a, [w2_d17f]
+	ld a, [wPokeAnimRepeatTimer]
 	and a
 	ret z
 	dec a
-	ld [w2_d17f], a
+	ld [wPokeAnimRepeatTimer], a
 	ret z
 	ld a, [w2_d183]
 	ld [w2_d17d], a
@@ -509,7 +509,7 @@
 	ld a, [w2_d17d]
 	ld e, a
 	ld d, $0
-	ld hl, w2_d175
+	ld hl, wPokeAnimPointerAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -516,7 +516,7 @@
 rept 2
 	add hl, de
 endr
-	ld a, [w2_d174]
+	ld a, [wPokeAnimPointerBank]
 	call GetFarHalfword
 	ld a, l
 	ld [w2_d182], a
@@ -533,7 +533,7 @@
 	dec a
 	ld c, a
 	ld b, $0
-	ld hl, w2_d178
+	ld hl, wPokeAnimFramesAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -540,9 +540,9 @@
 rept 2
 	add hl, bc
 endr
-	ld a, [w2_d177]
+	ld a, [wPokeAnimFramesBank]
 	call GetFarHalfword
-	ld a, [w2_d177]
+	ld a, [wPokeAnimFramesBank]
 	call GetFarByte
 	ld [w2_d180], a
 	inc hl
@@ -552,7 +552,7 @@
 Functiond033b: ; d033b
 	call Functiond0356
 	push bc
-	ld hl, w2_d17b
+	ld hl, wPokeAnimBitmaskAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -560,7 +560,7 @@
 	call AddNTimes
 	pop bc
 	ld de, w2_d188
-	ld a, [w2_d17a]
+	ld a, [wPokeAnimBitmaskBank]
 	call FarCopyBytes
 	ret
 ; d0356
@@ -594,7 +594,7 @@
 	and a
 	jr z, .next
 
-	ld a, [w2_d177]
+	ld a, [wPokeAnimFramesBank]
 	call GetFarByte
 	inc hl
 	push hl
@@ -663,7 +663,7 @@
 	ld a, [w2_d186]
 	ld bc, SCREEN_WIDTH
 	call AddNTimes
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	and a
 	jr nz, .go
 	ld a, [w2_d185]
@@ -737,20 +737,34 @@
 	ret
 ; d042f
 
+macro_d042f: MACRO
+y = 7
+rept 7 +- \1
+x = \1
+rept 7 +- \1
+	db x + y
+x = x + 1
+endr
+y = y + 7
+endr
+endm
+
 Unknown_d042f:
-	db  9, 10, 11, 12, 13
-	db 16, 17, 18, 19, 20
-	db 23, 24, 25, 26, 27
-	db 30, 31, 32, 33, 34
-	db 37, 38, 39, 40, 41
+	macro_d042f 2
+	; db  9, 10, 11, 12, 13
+	; db 16, 17, 18, 19, 20
+	; db 23, 24, 25, 26, 27
+	; db 30, 31, 32, 33, 34
+	; db 37, 38, 39, 40, 41
 
 Unknown_d0448:
-	db  8,  9, 10, 11, 12, 13
-	db 15, 16, 17, 18, 19, 20
-	db 22, 23, 24, 25, 26, 27
-	db 29, 30, 31, 32, 33, 34
-	db 36, 37, 38, 39, 40, 41
-	db 43, 44, 45, 46, 47, 48
+	macro_d042f 1
+	; db  8,  9, 10, 11, 12, 13
+	; db 15, 16, 17, 18, 19, 20
+	; db 22, 23, 24, 25, 26, 27
+	; db 29, 30, 31, 32, 33, 34
+	; db 36, 37, 38, 39, 40, 41
+	; db 43, 44, 45, 46, 47, 48
 
 
 Functiond046c: ; d046c
@@ -772,7 +786,7 @@
 	ld bc, 45
 .okay
 
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	and a
 	jr nz, .add_bc
 	add hl, de
@@ -810,7 +824,7 @@
 
 Functiond04bd: ; d04bd
 	call Functiond04f6
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	and a
 	jr nz, .minus_one_and_six
 	ld de, 1
@@ -931,7 +945,7 @@
 	ret
 ; d055c
 
-Functiond055c: ; d055c
+GetMonAnimPointer: ; d055c
 	call PokeAnim_IsEgg
 	jr z, .egg
 
@@ -945,12 +959,12 @@
 	ld de, AnimationExtraPointers
 .unown
 
-	ld a, [w2_d172]
+	ld a, [wPokeAnimExtraFlag]
 	and a
-	jr z, .asm_d057e
+	jr z, .extras
 	ld h, d
 	ld l, e
-.asm_d057e
+.extras
 
 	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
@@ -960,30 +974,30 @@
 	add hl, de
 endr
 	ld a, c
-	ld [w2_d174], a
+	ld [wPokeAnimPointerBank], a
 	call GetFarHalfword
 	ld a, l
-	ld [w2_d175], a
+	ld [wPokeAnimPointerAddr], a
 	ld a, h
-	ld [w2_d176], a
+	ld [wPokeAnimPointerAddr + 1], a
 	ret
 
 .egg
 	ld hl, EggAnimation
 	ld c, BANK(EggAnimation)
-	ld a, [w2_d172]
+	ld a, [wPokeAnimExtraFlag]
 	and a
-	jr z, .asm_d05a7
+	jr z, .extras_egg
 	ld hl, EggAnimationExtra
 	ld c, BANK(EggAnimationExtra)
-.asm_d05a7
+.extras_egg
 
 	ld a, c
-	ld [w2_d174], a
+	ld [wPokeAnimPointerBank], a
 	ld a, l
-	ld [w2_d175], a
+	ld [wPokeAnimPointerAddr], a
 	ld a, h
-	ld [w2_d176], a
+	ld [wPokeAnimPointerAddr + 1], a
 	ret
 ; d05b4
 
@@ -1003,7 +1017,7 @@
 	ret
 ; d05ce
 
-Functiond05ce: ; d05ce
+GetMonFramesPointer: ; d05ce
 	call PokeAnim_IsEgg
 	jr z, .egg
 
@@ -1013,7 +1027,7 @@
 	ld hl, UnownFramesPointers
 	jr z, .got_frames
 	ld a, [wPokeAnimSpecies]
-	cp 151 + 1
+	cp CHIKORITA
 	ld b, BANK(FramesPointers)
 	ld c, BANK(KantoFrames)
 	ld hl, FramesPointers
@@ -1021,7 +1035,7 @@
 	ld c, BANK(JohtoFrames)
 .got_frames
 	ld a, c
-	ld [w2_d177], a
+	ld [wPokeAnimFramesBank], a
 
 	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
@@ -1033,9 +1047,9 @@
 	ld a, b
 	call GetFarHalfword
 	ld a, l
-	ld [w2_d178], a
+	ld [wPokeAnimFramesAddr], a
 	ld a, h
-	ld [w2_d179], a
+	ld [wPokeAnimFramesAddr + 1], a
 	ret
 
 .egg
@@ -1042,15 +1056,15 @@
 	ld hl, EggFrames
 	ld c, BANK(EggFrames)
 	ld a, c
-	ld [w2_d177], a
+	ld [wPokeAnimFramesBank], a
 	ld a, l
-	ld [w2_d178], a
+	ld [wPokeAnimFramesAddr], a
 	ld a, h
-	ld [w2_d179], a
+	ld [wPokeAnimFramesAddr + 1], a
 	ret
 ; d061b
 
-Functiond061b: ; d061b
+GetMonBitmaskPointer: ; d061b
 	call PokeAnim_IsEgg
 	jr z, .egg
 
@@ -1061,7 +1075,7 @@
 	ld a, BANK(BitmasksPointers)
 	ld hl, BitmasksPointers
 .unown
-	ld [w2_d17a], a
+	ld [wPokeAnimBitmaskBank], a
 
 	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
@@ -1070,12 +1084,12 @@
 rept 2
 	add hl, de
 endr
-	ld a, [w2_d17a]
+	ld a, [wPokeAnimBitmaskBank]
 	call GetFarHalfword
 	ld a, l
-	ld [w2_d17b], a
+	ld [wPokeAnimBitmaskAddr], a
 	ld a, h
-	ld [w2_d17c], a
+	ld [wPokeAnimBitmaskAddr + 1], a
 	ret
 
 .egg
@@ -1082,11 +1096,11 @@
 	ld c, BANK(EggBitmasks)
 	ld hl, EggBitmasks
 	ld a, c
-	ld [w2_d17a], a
+	ld [wPokeAnimBitmaskBank], a
 	ld a, l
-	ld [w2_d17b], a
+	ld [wPokeAnimBitmaskAddr], a
 	ld a, h
-	ld [w2_d17c], a
+	ld [wPokeAnimBitmaskAddr + 1], a
 	ret
 ; d065c
 
@@ -1103,7 +1117,7 @@
 
 Functiond0669: ; d0669
 	ld a, $1
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 
 Functiond066e: ; d066e
 	call AnimateMon_CheckIfPokemon
@@ -1120,12 +1134,12 @@
 	ld e, c
 	call AnimateFrontpic
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ret
 
 .asm_d068c
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	inc a
 	ld [CurPartySpecies], a
 	ret
binary files /dev/null b/gfx/pics/questionmark/front.2bpp.lz differ
binary files /dev/null b/gfx/pokedex/pokedex.2bpp.lz differ
binary files /dev/null b/gfx/pokedex/sgb.2bpp.lz differ
--- /dev/null
+++ b/gfx/pokegear/dexmap_nest_icon.2bpp
@@ -1,0 +1,1 @@
+BBff��������ZZ$$
\ No newline at end of file
binary files /dev/null b/gfx/pokegear/flymap_label_border.2bpp differ
binary files a/gfx/unknown/04150e.2bpp.lz /dev/null differ
binary files a/gfx/unknown/048e71.2bpp /dev/null differ
binary files a/gfx/unknown/08e7f4.2bpp /dev/null differ
binary files a/gfx/unknown/08e804.2bpp /dev/null differ
--- a/gfx/unknown/0922d1.2bpp
+++ /dev/null
@@ -1,1 +1,0 @@
-BBff��������ZZ$$
\ No newline at end of file
binary files a/gfx/unknown/0922e1.2bpp /dev/null differ
binary files a/gfx/unknown/092301.2bpp /dev/null differ
binary files a/gfx/unknown/0e1723.2bpp /dev/null differ
binary files a/gfx/unknown/0e17c5.2bpp /dev/null differ
binary files a/gfx/unknown/0e1805.2bpp.lz /dev/null differ
binary files a/gfx/unknown/0e18ab.2bpp.lz /dev/null differ
binary files a/gfx/unknown/0e19fb.2bpp.lz /dev/null differ
binary files a/gfx/unknown/0e1bab.2bpp.lz /dev/null differ
binary files a/gfx/unknown/0e1c9b.2bpp.lz /dev/null differ
binary files a/gfx/unknown/0e799d.2bpp /dev/null differ
binary files a/gfx/unknown/0e79dd.2bpp /dev/null differ
binary files a/gfx/unknown/0e7a1d.2bpp /dev/null differ
binary files a/gfx/unknown/0e7a5d.2bpp /dev/null differ
binary files a/gfx/unknown/1ddf33.2bpp.lz /dev/null differ
binary files a/gfx/unknown/1de0e1.2bpp.lz /dev/null differ
binary files /dev/null b/gfx/unown_puzzle/aerodactyl.2bpp.lz differ
binary files /dev/null b/gfx/unown_puzzle/cursor.2bpp differ
binary files /dev/null b/gfx/unown_puzzle/hooh.2bpp.lz differ
binary files /dev/null b/gfx/unown_puzzle/kabuto.2bpp.lz differ
binary files /dev/null b/gfx/unown_puzzle/omanyte.2bpp.lz differ
binary files /dev/null b/gfx/unown_puzzle/start_cancel.2bpp.lz differ
binary files /dev/null b/gfx/unown_puzzle/tile_borders.2bpp differ
--- a/home.asm
+++ b/home.asm
@@ -3,11 +3,9 @@
 SECTION "NULL", ROM0[0]
 NULL::
 
-
 INCLUDE "rst.asm"
 INCLUDE "interrupts.asm"
 
-
 SECTION "Header", ROM0[$100]
 
 Start::
@@ -14,7 +12,6 @@
 	nop
 	jp _Start
 
-
 SECTION "Home", ROM0[$150]
 
 INCLUDE "home/init.asm"
@@ -40,7 +37,6 @@
 INCLUDE "home/game_time.asm"
 INCLUDE "home/map.asm"
 
-
 Function2d43:: ; 2d43
 ; Inexplicably empty.
 ; Seen in PredefPointers.
@@ -50,12 +46,10 @@
 	ret
 ; 2d54
 
-
 INCLUDE "home/farcall.asm"
 INCLUDE "home/predef.asm"
 INCLUDE "home/window.asm"
 
-
 Function2e4e:: ; 2e4e
 ; Unreferenced.
 	scf
@@ -62,17 +56,16 @@
 	ret
 ; 2e50
 
-
 INCLUDE "home/flag.asm"
 
-
 Function2ebb:: ; 2ebb
-	ld a, [wc2cc]
+; unreferenced
+	ld a, [wMonStatusFlags]
 	bit 1, a
 	ret z
 
 	ld a, [hJoyDown]
-	bit 1, a ; B_BUTTON
+	bit B_BUTTON_F, a
 	ret
 ; 2ec6
 
@@ -88,14 +81,14 @@
 ; 2ecb
 
 Function2ecb:: ; 2ecb
+; unreferenced
 	push hl
-	ld hl, wc2cc
+	ld hl, wMonStatusFlags
 	bit 1, [hl]
 	pop hl
 	ret
 ; 2ed3
 
-
 DisableSpriteUpdates:: ; 0x2ed3
 ; disables overworld sprite updating?
 	xor a
@@ -119,10 +112,8 @@
 	ret
 ; 2ef6
 
-
 INCLUDE "home/string.asm"
 
-
 IsInJohto:: ; 2f17
 ; Return 0 if the player is in Johto, and 1 in Kanto.
 
@@ -157,17 +148,14 @@
 	ret
 ; 2f3e
 
-
 ret_2f3e:: ; 2f3e
 	ret
 ; 2f3f
 
-
 INCLUDE "home/item.asm"
 INCLUDE "home/random.asm"
 INCLUDE "home/sram.asm"
 
-
 ; Register aliases
 
 _hl_:: ; 2fec
@@ -179,10 +167,8 @@
 	ret
 ; 2fef
 
-
 INCLUDE "home/double_speed.asm"
 
-
 ClearSprites:: ; 300b
 ; Erase OAM data
 	ld hl, Sprites
@@ -209,10 +195,8 @@
 	ret
 ; 3026
 
-
 INCLUDE "home/copy2.asm"
 
-
 LoadTileMapToTempTileMap:: ; 309d
 ; Load TileMap into TempTileMap
 	ld a, [rSVBK]
@@ -252,7 +236,6 @@
 	ret
 ; 30d6
 
-
 CopyName1:: ; 30d6
 ; Copies the name from de to StringBuffer2
 	ld hl, StringBuffer2
@@ -305,10 +288,8 @@
 	ret
 ; 0x30fe
 
-
 INCLUDE "home/math.asm"
 
-
 PrintLetterDelay:: ; 313d
 ; Wait before printing the next letter.
 
@@ -317,8 +298,8 @@
 ; 	mid:  3 frames
 ; 	slow: 5 frames
 
-; TextBoxFrame + 1[!0] and A or B override text speed with a one-frame delay.
-; Options[4] and TextBoxFrame + 1[!1] disable the delay.
+; TextBoxFlags[!0] and A or B override text speed with a one-frame delay.
+; Options[4] and TextBoxFlags[!1] disable the delay.
 
 	ld a, [Options]
 	bit NO_TEXT_SCROLL, a
@@ -325,7 +306,7 @@
 	ret nz
 
 ; non-scrolling text?
-	ld a, [TextBoxFrame + 1]
+	ld a, [TextBoxFlags]
 	bit 1, a
 	ret z
 
@@ -342,7 +323,7 @@
 	ld [hl], a
 
 ; force fast scroll?
-	ld a, [TextBoxFrame + 1]
+	ld a, [TextBoxFlags]
 	bit 0, a
 	jr z, .fast
 
@@ -392,7 +373,6 @@
 	ret
 ; 318c
 
-
 CopyDataUntil:: ; 318c
 ; Copy [hl .. bc) to de.
 
@@ -412,7 +392,6 @@
 	ret
 ; 0x3198
 
-
 PrintNum:: ; 3198
 	ld a, [hROMBank]
 	push af
@@ -426,7 +405,6 @@
 	ret
 ; 31a4
 
-
 MobilePrintNum:: ; 31a4
 	ld a, [hROMBank]
 	push af
@@ -440,7 +418,6 @@
 	ret
 ; 31b0
 
-
 FarPrintText:: ; 31b0
 	ld [hBuffer], a
 	ld a, [hROMBank]
@@ -455,7 +432,6 @@
 	ret
 ; 31be
 
-
 CallPointerAt:: ; 31be
 	ld a, [hROMBank]
 	push af
@@ -474,7 +450,6 @@
 	ret
 ; 31cd
 
-
 QueueScript:: ; 31cd
 ; Push pointer hl in the current bank to wQueuedScriptBank.
 	ld a, [hROMBank]
@@ -489,7 +464,6 @@
 	ret
 ; 31db
 
-
 StringCmp:: ; 31db
 ; Compare c bytes at de and hl.
 ; Return z if they all match.
@@ -504,7 +478,6 @@
 	ret
 ; 0x31e4
 
-
 CompareLong:: ; 31e4
 ; Compare bc bytes at de and hl.
 ; Return carry if they all match.
@@ -529,7 +502,6 @@
 	ret
 ; 31f3
 
-
 ClearBGPalettes:: ; 31f3
 	call ClearPalettes
 WaitBGMap:: ; 31f6
@@ -542,7 +514,7 @@
 	ret
 ; 3200
 
-Function3200:: ; 0x3200
+WaitBGMap2:: ; 0x3200
 	ld a, [hCGB]
 	and a
 	jr z, .bg0
@@ -560,7 +532,6 @@
 	ret
 ; 0x3218
 
-
 IsCGB:: ; 3218
 	ld a, [hCGB]
 	and a
@@ -567,7 +538,6 @@
 	ret
 ; 321c
 
-
 ApplyTilemap:: ; 321c
 	ld a, [hCGB]
 	and a
@@ -685,7 +655,6 @@
 	ret
 ; 32f9
 
-
 SetPalettes:: ; 32f9
 ; Inits the Palettes
 ; depending on the system the monochromes palettes or color palettes
@@ -709,7 +678,6 @@
 	ret
 ; 3317
 
-
 ClearPalettes:: ; 3317
 ; Make all palettes white
 
@@ -747,7 +715,6 @@
 	ret
 ; 333e
 
-
 GetMemSGBLayout:: ; 333e
 	ld b, SCGB_RAM
 GetSGBLayout:: ; 3340
@@ -765,7 +732,6 @@
 	predef_jump Predef_LoadSGBLayout ; LoadSGBLayout
 ; 334e
 
-
 SetHPPal:: ; 334e
 ; Set palette for hp bar pixel length e at hl.
 	call GetHPPal
@@ -773,7 +739,6 @@
 	ret
 ; 3353
 
-
 GetHPPal:: ; 3353
 ; Get palette for hp bar pixel length e in d.
 
@@ -788,7 +753,6 @@
 	ret
 ; 335f
 
-
 CountSetBits:: ; 0x335f
 ; Count the number of set bits in b bytes starting from hl.
 ; Return in a, c and [wd265].
@@ -815,7 +779,6 @@
 	ret
 ; 0x3376
 
-
 GetWeekday:: ; 3376
 	ld a, [CurDay]
 .mod
@@ -825,10 +788,8 @@
 	ret
 ; 3380
 
-
 INCLUDE "home/pokedex_flags.asm"
 
-
 NamesPointers:: ; 33ab
 	dba PokemonNames
 	dba MoveNames
@@ -904,7 +865,6 @@
 	ret
 ; 3411
 
-
 GetNthString:: ; 3411
 ; Return the address of the
 ; ath string starting from hl.
@@ -925,7 +885,6 @@
 	ret
 ; 3420
 
-
 GetBasePokemonName:: ; 3420
 ; Discards gender (Nidoran).
 
@@ -951,7 +910,6 @@
 
 ; 343b
 
-
 GetPokemonName:: ; 343b
 ; Get Pokemon name wd265.
 
@@ -968,9 +926,8 @@
 	ld e, a
 	ld h, 0
 	ld l, a
-rept 2
 	add hl, hl ; hl = hl * 4
-endr
+	add hl, hl ; hl = hl * 4
 	add hl, de ; hl = (hl*4) + de
 	add hl, hl ; hl = (5*hl) + (5*hl)
 	ld de, PokemonNames
@@ -991,7 +948,6 @@
 	ret
 ; 3468
 
-
 GetItemName:: ; 3468
 ; Get item name wd265.
 
@@ -1016,7 +972,6 @@
 	ret
 ; 3487
 
-
 GetTMHMName:: ; 3487
 ; Get TM/HM name by item id wd265.
 
@@ -1100,7 +1055,6 @@
 	db "@"
 ; 34df
 
-
 IsHM:: ; 34df
 	cp HM01
 	jr c, .NotHM
@@ -1111,7 +1065,6 @@
 	ret
 ; 34e7
 
-
 IsHMMove:: ; 34e7
 	ld hl, .HMMoves
 	ld de, 1
@@ -1128,7 +1081,6 @@
 	db -1
 ; 34f8
 
-
 GetMoveName:: ; 34f8
 	push hl
 
@@ -1145,27 +1097,26 @@
 	ret
 ; 350c
 
-
-HandleScrollingMenu:: ; 350c
+ScrollingMenu:: ; 350c
 	call CopyMenuData2
 	ld a, [hROMBank]
 	push af
 
-	ld a, BANK(Function245af)
+	ld a, BANK(_ScrollingMenu)
 	rst Bankswitch
 
-	call Function245af
-	call Function3524
-	call Function245cb
+	call _InitScrollingMenu
+	call .UpdatePalettes
+	call _ScrollingMenu
 
 	pop af
 	rst Bankswitch
 
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	ret
 ; 3524
 
-Function3524:: ; 3524
+.UpdatePalettes ; 3524
 	ld hl, VramState
 	bit 0, [hl]
 	jp nz, UpdateTimePals
@@ -1212,7 +1163,6 @@
 	ret
 ; 3567
 
-
 HandleStoneQueue:: ; 3567
 	ld a, [hROMBank]
 	push af
@@ -1344,9 +1294,8 @@
 	inc hl
 
 .next_inc2
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .loop2
 
 .nope3
@@ -1358,7 +1307,6 @@
 	ret
 ; 3600
 
-
 CheckTrainerBattle2:: ; 3600
 
 	ld a, [hROMBank]
@@ -1373,7 +1321,6 @@
 	ret
 ; 360d
 
-
 CheckTrainerBattle:: ; 360d
 ; Check if any trainer on the map sees the player and wants to battle.
 
@@ -1493,7 +1440,6 @@
 	ret
 ; 36a5
 
-
 FacingPlayerDistance_bc:: ; 36a5
 
 	push de
@@ -1504,7 +1450,6 @@
 	ret
 ; 36ad
 
-
 FacingPlayerDistance:: ; 36ad
 ; Return carry if the sprite at bc is facing the player,
 ; and its distance in d.
@@ -1575,7 +1520,6 @@
 	ret
 ; 36f5
 
-
 CheckTrainerFlag:: ; 36f5
 	push bc
 	ld hl, OBJECT_MAP_OBJECT_INDEX
@@ -1601,7 +1545,6 @@
 	ret
 ; 3718
 
-
 PrintWinLossText:: ; 3718
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
@@ -1629,8 +1572,6 @@
 	ret
 ; 3741
 
-
-
 IsAPokemon:: ; 3741
 ; Return carry if species a is not a Pokemon.
 	and a
@@ -1649,7 +1590,6 @@
 	ret
 ; 3750
 
-
 DrawBattleHPBar:: ; 3750
 ; Draw an HP bar d tiles long at hl
 ; Fill it up to e pixels
@@ -1711,10 +1651,9 @@
 	ret
 ; 3786
 
-
 PrepMonFrontpic:: ; 3786
 	ld a, $1
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 
 _PrepMonFrontpic:: ; 378b
 	ld a, [CurPartySpecies]
@@ -1730,21 +1669,19 @@
 	lb bc, 7, 7
 	predef FillBox
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	ret
 
 .not_pokemon
 	xor a
-	ld [wc2c6], a
+	ld [wBoxAlignment], a
 	inc a
 	ld [CurPartySpecies], a
 	ret
 ; 37b6
 
-
 INCLUDE "home/cry.asm"
 
-
 PrintLevel:: ; 382d
 ; Print TempMonLevel at hl
 
@@ -1777,7 +1714,6 @@
 	jp PrintNum
 ; 384d
 
-
 Function384d:: ; 384d
 	ld hl, wListMoves_MoveIndicesBuffer
 	ld c, a
@@ -1787,7 +1723,6 @@
 	ret
 ; 3856
 
-
 GetBaseData:: ; 3856
 	push bc
 	push de
@@ -1845,7 +1780,6 @@
 	ret
 ; 389c
 
-
 GetCurNick:: ; 389c
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
@@ -1871,7 +1805,6 @@
 	ret
 ; 38bb
 
-
 PrintBCDNumber:: ; 38bb
 ; function to print a BCD (Binary-coded decimal) number
 ; de = address of BCD number
@@ -1973,7 +1906,6 @@
 	jp AddNTimes
 ; 392d
 
-
 Function392d:: ; 392d
 	push hl
 	ld a, b
@@ -1991,12 +1923,11 @@
 	ret
 ; 3945
 
-
 INCLUDE "home/battle.asm"
 
 Function3b0c:: ; 3b0c
 
-	ld a, [hLCDStatCustom]
+	ld a, [hFFC6]
 	and a
 	ret z
 
@@ -2015,17 +1946,15 @@
 	ret
 ; 3b2a
 
-
-
 _InitSpriteAnimStruct:: ; 3b2a
 
-	ld [wc3b8], a
+	ld [wSpriteAnimIDBuffer], a
 	ld a, [hROMBank]
 	push af
 
 	ld a, BANK(InitSpriteAnimStruct)
 	rst Bankswitch
-	ld a, [wc3b8]
+	ld a, [wSpriteAnimIDBuffer]
 
 	call InitSpriteAnimStruct
 
@@ -2035,18 +1964,17 @@
 	ret
 ; 3b3c
 
+ReinitSpriteAnimFrame:: ; 3b3c
 
-Function3b3c:: ; 3b3c
-
-	ld [wc3b8], a
+	ld [wSpriteAnimIDBuffer], a
 	ld a, [hROMBank]
 	push af
 
-	ld a, BANK(Function8d120)
+	ld a, BANK(_ReinitSpriteAnimFrame)
 	rst Bankswitch
-	ld a, [wc3b8]
+	ld a, [wSpriteAnimIDBuffer]
 
-	call Function8d120
+	call _ReinitSpriteAnimFrame
 
 	pop af
 	rst Bankswitch
@@ -2054,182 +1982,5 @@
 	ret
 ; 3b4e
 
-
 INCLUDE "home/audio.asm"
 INCLUDE "home/mobile.asm"
-
-
-Function3eea:: ; 3eea
-	push hl
-	push bc
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	call Function3f35
-	pop bc
-	pop hl
-	call Function3f47
-	ret
-; 3efd
-
-Function3efd:: ; 3efd
-	push hl
-	hlcoord 0, 12
-	ld b, 4
-	ld c, 18
-	call Function3f0d
-	pop hl
-	call PrintTextBoxText
-	ret
-; 3f0d
-
-Function3f0d:: ; 3f0d
-	push hl
-	push bc
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	call Function3f35
-	pop bc
-	pop hl
-	call TextBoxBorder
-	ret
-; 3f20
-
-Function3f20:: ; 3f20
-	hlcoord 0, 0, AttrMap
-	ld b, $6
-	ld c, $14
-	call Function3f35
-	hlcoord 0, 0
-	ld b, $4
-	ld c, $12
-	call Function3f47
-	ret
-; 3f35
-
-Function3f35:: ; 3f35
-	ld a, $6
-	ld de, $0014
-.asm_3f3a
-	push bc
-	push hl
-.asm_3f3c
-	ld [hli], a
-	dec c
-	jr nz, .asm_3f3c
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_3f3a
-	ret
-; 3f47
-
-Function3f47:: ; 3f47
-	push bc
-	call Function3f58
-	pop bc
-.asm_3f4c
-	push bc
-	call Function3f68
-	pop bc
-	dec b
-	jr nz, .asm_3f4c
-	call Function3f60
-	ret
-; 3f58
-
-Function3f58:: ; 3f58
-	ld a, $63
-	ld d, $62
-	ld e, $64
-	jr Function3f6e
-
-Function3f60:: ; 3f60
-	ld a, $68
-	ld d, $67
-	ld e, $69
-	jr Function3f6e
-
-Function3f68:: ; 3f68
-	ld a, $7f
-	ld d, $65
-	ld e, $66
-
-Function3f6e:: ; 3f6e
-	push hl
-	ld [hl], d
-	inc hl
-.asm_3f71
-	ld [hli], a
-	dec c
-	jr nz, .asm_3f71
-	ld [hl], e
-	pop hl
-	ld de, $0014
-	add hl, de
-	ret
-; 3f7c
-
-Function3f7c:: ; 3f7c
-	call MenuBoxCoord2Tile
-	call GetMenuBoxDims
-	dec b
-	dec c
-	call Function3eea
-	ret
-; 3f88
-
-Function3f88:: ; 3f88
-	ld hl, w6_d000
-	ld b, $0
-.asm_3f8d
-	push bc
-	ld c, $8
-.asm_3f90
-	ld a, [de]
-	inc de
-	cpl
-	ld [hl], $0
-	inc hl
-	ld [hli], a
-	dec c
-	jr nz, .asm_3f90
-	pop bc
-	dec c
-	jr nz, .asm_3f8d
-	ret
-; 3f9f
-
-Function3f9f:: ; 3f9f
-	ld hl, w6_d000
-.asm_3fa2
-	push bc
-	ld c, $8
-.asm_3fa5
-	ld a, [de]
-rept 2
-	inc de
-endr
-	cpl
-	ld [hl], $0
-	inc hl
-	ld [hli], a
-	dec c
-	jr nz, .asm_3fa5
-	pop bc
-	dec c
-	jr nz, .asm_3fa2
-	ret
-; 3fb5
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -312,13 +312,13 @@
 	ret
 ; 3ca8
 
-Unused_RotatePalettesRightMusic:: ; 3ca8
+Unused_FadeOutMusic:: ; 3ca8
 	ld a, 4
 	ld [MusicFade], a
 	ret
 ; 3cae
 
-RotatePalettesLeftMusic:: ; 3cae
+FadeInMusic:: ; 3cae
 	ld a, 4 | 1 << 7
 	ld [MusicFade], a
 	ret
@@ -397,7 +397,7 @@
 	push af
 
 	xor a
-	ld [wc2c1], a
+	ld [wDontPlayMapMusicOnReload], a
 	ld de, MUSIC_BICYCLE
 	ld a, [PlayerState]
 	cp PLAYER_BIKE
@@ -422,7 +422,7 @@
 ; 3d2f
 
 TryRestartMapMusic:: ; 3d2f
-	ld a, [wc2c1]
+	ld a, [wDontPlayMapMusicOnReload]
 	and a
 	jr z, RestartMapMusic
 	xor a
@@ -431,7 +431,7 @@
 	call PlayMusic
 	call DelayFrame
 	xor a
-	ld [wc2c1], a
+	ld [wDontPlayMapMusicOnReload], a
 	ret
 ; 3d47
 
--- a/home/cry.asm
+++ b/home/cry.asm
@@ -1,7 +1,7 @@
 PlayStereoCry:: ; 37b6
 	push af
 	ld a, 1
-	ld [wc2bc], a
+	ld [wStereoPanningMask], a
 	pop af
 	call _PlayCry
 	call WaitSFX
@@ -13,7 +13,7 @@
 ; Used during pic animations.
 	push af
 	ld a, 1
-	ld [wc2bc], a
+	ld [wStereoPanningMask], a
 	pop af
 	jp _PlayCry
 ; 37ce
@@ -28,7 +28,7 @@
 ; Don't wait for the cry to end.
 	push af
 	xor a
-	ld [wc2bc], a
+	ld [wStereoPanningMask], a
 	ld [CryTracks], a
 	pop af
 	call _PlayCry
--- a/home/handshake.asm
+++ b/home/handshake.asm
@@ -1,3 +1,16 @@
+PrinterReceive:: ; 2057
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(_PrinterReceive)
+	rst Bankswitch
+
+	call _PrinterReceive
+	pop af
+	rst Bankswitch
+
+	ret
+; 2063
+
 AskSerial:: ; 2063
 ; send out a handshake while serial int is off
 	ld a, [wc2d4]
--- a/home/init.asm
+++ b/home/init.asm
@@ -22,17 +22,17 @@
 
 _Start:: ; 16e
 	cp $11
-	jr z, .asm_175
+	jr z, .cgb
 	xor a
-	jr .asm_177
+	jr .load
 
-.asm_175
+.cgb
 	ld a, $1
 
-.asm_177
+.load
 	ld [hCGB], a
 	ld a, $1
-	ld [$ffea], a
+	ld [hFFEA], a
 ; 17d
 
 
@@ -69,15 +69,15 @@
 	ld [rLCDC], a
 
 ; Clear WRAM bank 0
-	ld hl, $c000
-	ld bc, $d000 - $c000
-.asm_1b1
+	ld hl, wc000
+	ld bc, wd000 - wc000
+.ByteFill
 	ld [hl], 0
 	inc hl
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_1b1
+	jr nz, .ByteFill
 
 	ld sp, Stack
 
@@ -84,14 +84,14 @@
 ; Clear HRAM
 	ld a, [hCGB]
 	push af
-	ld a, [$ffea]
+	ld a, [hFFEA]
 	push af
 	xor a
-	ld hl, $ff80
-	ld bc, $ffff - $ff80
+	ld hl, HRAM_START
+	ld bc, HRAM_END - HRAM_START
 	call ByteFill
 	pop af
-	ld [$ffea], a
+	ld [hFFEA], a
 	pop af
 	ld [hCGB], a
 
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -313,7 +313,7 @@
 	jr .loop
 ; a46
 
-CloseText:: ; a46
+WaitButton:: ; a46
 	ld a, [hOAMUpdate]
 	push af
 	ld a, 1
@@ -392,7 +392,7 @@
 	ret
 ; aaf
 
-KeepTextOpen:: ; aaf
+ButtonSound:: ; aaf
 	ld a, [wLinkMode]
 	and a
 	jr nz, .link
--- a/home/lcd.asm
+++ b/home/lcd.asm
@@ -2,7 +2,8 @@
 
 
 Function547:: ; 547
-	ld a, [hLCDStatCustom]
+; Unreferenced
+	ld a, [hFFC6]
 	cp rSCX - $ff00
 	ret nz
 	ld c, a
@@ -14,7 +15,7 @@
 
 LCD:: ; 552
 	push af
-	ld a, [hLCDStatCustom]
+	ld a, [hFFC6]
 	and a
 	jr z, .done
 
@@ -25,7 +26,7 @@
 	ld b, LYOverrides >> 8
 	ld a, [bc]
 	ld b, a
-	ld a, [hLCDStatCustom]
+	ld a, [hFFC6]
 	ld c, a
 	ld a, b
 	ld [$ff00+c], a
--- a/home/map.asm
+++ b/home/map.asm
@@ -114,9 +114,9 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
 
-	ld a, BANK(Function4d15b)
+	ld a, BANK(_LoadMapPart)
 	rst Bankswitch
-	call Function4d15b
+	call _LoadMapPart
 
 	pop af
 	rst Bankswitch
@@ -124,22 +124,24 @@
 ; 2198
 
 LoadMetatiles:: ; 2198
-; de <- wd194
-	ld a, [wd194]
+	; de <- wOverworldMapAnchor
+	ld a, [wOverworldMapAnchor]
 	ld e, a
-	ld a, [wd194 + 1]
+	ld a, [wOverworldMapAnchor + 1]
 	ld d, a
 	ld hl, wMisc
-	ld b, 5 ; SCREEN_WIDTH / 4
+	ld b, WMISC_HEIGHT / 4 ; 5
 
-.loop
+.row
 	push de
 	push hl
-	ld c, 6 ; SCREEN_HEIGHT / 3
+	ld c, WMISC_WIDTH / 4 ; 6
 
-.loop2
+.col
 	push de
 	push hl
+	; Load the current map block.
+	; If the current map block is a border block, load the border block.
 	ld a, [de]
 	and a
 	jr nz, .ok
@@ -146,16 +148,16 @@
 	ld a, [MapBorderBlock]
 
 .ok
+	; Load the current wMisc address into de.
 	ld e, l
 	ld d, h
-; double a, load hl <- a, multiply hl by 8
+	; Set hl to the address of the current metatile data ([TilesetBlocksAddress] + (a) tiles).
 	add a
 	ld l, a
 	ld h, 0
 rept 3
-	add hl,hl
+	add hl, hl
 endr
-; hl <- hl + [TilesetBlocksAddress]
 	ld a, [TilesetBlocksAddress]
 	add l
 	ld l, a
@@ -163,28 +165,26 @@
 	adc h
 	ld h, a
 
+	; copy the 4x4 metatile
 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 SCREEN_WIDTH
+	add WMISC_WIDTH - 4
 	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
 	inc de
 endr
-
+	; Next metatile
 	pop hl
 	ld de, 4
 	add hl, de
@@ -191,9 +191,10 @@
 	pop de
 	inc de
 	dec c
-	jp nz, .loop2
+	jp nz, .col
+	; Next metarow
 	pop hl
-	ld de, $60
+	ld de, WMISC_WIDTH * 4
 	add hl, de
 	pop de
 	ld a, [MapWidth]
@@ -202,10 +203,9 @@
 	ld e, a
 	jr nc, .ok2
 	inc d
-
 .ok2
 	dec b
-	jp nz, .loop
+	jp nz, .row
 	ret
 ; 222a
 
@@ -223,7 +223,7 @@
 	ret nc
 
 	push bc
-	callba Function149af
+	callba CheckDirectionalWarp
 	pop bc
 	ret nc
 
@@ -232,8 +232,6 @@
 	ret
 ; 224a
 
-
-
 WarpCheck:: ; 224a
 	call GetDestinationWarpNumber
 	ret nc
@@ -242,7 +240,7 @@
 ; 2252
 
 GetDestinationWarpNumber:: ; 2252
-	callba Function1499a
+	callba CheckWarpCollision
 	ret nc
 
 	ld a, [hROMBank]
@@ -366,8 +364,6 @@
 	ret
 ; 22ee
 
-
-
 CheckOutdoorMap:: ; 22ee
 	cp ROUTE
 	ret z
@@ -395,7 +391,6 @@
 	ret
 ; 2309
 
-
 LoadMapAttributes:: ; 2309
 	call CopyMapHeaders
 	call SwitchToMapScriptHeaderBank
@@ -503,7 +498,6 @@
 	ret
 ; 23a3
 
-
 GetMapConnection:: ; 23a3
 ; Load map connection struct at hl into de.
 	ld c, SouthMapConnection - NorthMapConnection
@@ -516,7 +510,6 @@
 	ret
 ; 23ac
 
-
 ReadMapTriggers:: ; 23ac
 	ld a, [hli] ; trigger count
 	ld c, a
@@ -524,7 +517,7 @@
 	ld a, l
 	ld [wCurrMapTriggerHeaderPointer], a ; map trigger pointer
 	ld a, h
-	ld [wdc09], a
+	ld [wCurrMapTriggerHeaderPointer + 1], a
 	ld a, c
 	and a
 	ret z
@@ -749,8 +742,6 @@
 	ret
 ; 24e4
 
-
-
 ChangeMap:: ; 24e4
 	ld a, [hROMBank]
 	push af
@@ -801,8 +792,6 @@
 	ret
 ; 2524
 
-
-
 FillMapConnections:: ; 2524
 
 ; North
@@ -901,7 +890,6 @@
 	ret
 ; 25d3
 
-
 FillNorthConnectionStrip::
 FillSouthConnectionStrip:: ; 25d3
 
@@ -938,7 +926,6 @@
 	ret
 ; 25f6
 
-
 FillWestConnectionStrip::
 FillEastConnectionStrip:: ; 25f6
 
@@ -983,7 +970,6 @@
 	ret
 ; 261f
 
-
 CallScript:: ; 261f
 ; Call a script at a:hl.
 
@@ -1138,7 +1124,6 @@
 	ret
 ; 26d4
 
-
 GetScriptByte:: ; 0x26d4
 ; Return byte at ScriptBank:ScriptPos in a.
 
@@ -1170,7 +1155,6 @@
 	ret
 ; 0x26ef
 
-
 ObjectEvent:: ; 0x26ef
 	jumptextfaceplayer ObjectEventText
 ; 0x26f2
@@ -1180,7 +1164,6 @@
 	db "@"
 ; 0x26f7
 
-
 BGEvent:: ; 26f7
 	jumptext BGEventText
 ; 26fa
@@ -1190,7 +1173,6 @@
 	db "@"
 ; 26ff
 
-
 CoordinatesEvent:: ; 26ff
 	jumptext CoordinatesEventText
 ; 2702
@@ -1200,7 +1182,6 @@
 	db "@"
 ; 2707
 
-
 CheckObjectMask:: ; 2707
 	ld a, [hMapObjectIndexBuffer]
 	ld e, a
@@ -1231,7 +1212,6 @@
 	ret
 ; 272a
 
-
 ScrollMapDown:: ; 272a
 	hlcoord 0, 0
 	ld de, BGMapBuffer
@@ -1272,7 +1252,7 @@
 	ret
 ; 2771
 
-ScrollMapLeft:: ; 2771
+ScrollMapRight:: ; 2771
 	hlcoord 0, 0
 	ld de, BGMapBuffer
 	call BackupBGMapColumn
@@ -1288,7 +1268,7 @@
 	ret
 ; 278f
 
-ScrollMapRight:: ; 278f
+ScrollMapLeft:: ; 278f
 	hlcoord SCREEN_WIDTH - 2, 0
 	ld de, BGMapBuffer
 	call BackupBGMapColumn
@@ -1425,10 +1405,10 @@
 	ld [rSVBK], a
 
 	ld a, e
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call FarDecompress
 
-	ld hl, w6_d000
+	ld hl, wDecompressScratch
 	ld de, VTiles2
 	ld bc, $60 tiles
 	call CopyBytes
@@ -1468,11 +1448,11 @@
 ; 2879
 
 BufferScreen:: ; 2879
-	ld hl, wd194
+	ld hl, wOverworldMapAnchor
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, XCoord + 1
+	ld de, wScreenSave
 	ld c, $5
 	ld b, $6
 .asm_2886
@@ -1497,13 +1477,13 @@
 ; 289d
 
 SaveScreen:: ; 289d
-	ld hl, wd194
+	ld hl, wOverworldMapAnchor
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, XCoord + 1
+	ld de, wScreenSave
 	ld a, [MapWidth]
-	add $6
+	add 6
 	ld [hMapObjectIndexBuffer], a
 	ld a, [wPlayerStepDirection]
 	and a
@@ -1517,7 +1497,7 @@
 	ret
 
 .up
-	ld de, wdcbf
+	ld de, wScreenSave + 6
 	ld a, [hMapObjectIndexBuffer]
 	ld c, a
 	ld b, $0
@@ -1525,53 +1505,50 @@
 	jr .vertical
 
 .down
-	ld de, XCoord + 1
-
+	ld de, wScreenSave
 .vertical
-	ld b, $6
-	ld c, $4
-	jr Function28f7
+	ld b, 6
+	ld c, 4
+	jr SaveScreen_LoadNeighbor
 
 .left
-	ld de, XCoord + 2
+	ld de, wScreenSave + 1
 	inc hl
 	jr .horizontal
 
 .right
-	ld de, XCoord + 1
-
+	ld de, wScreenSave
 .horizontal
-	ld b, $5
-	ld c, $5
-	jr Function28f7
+	ld b, 5
+	ld c, 5
+	jr SaveScreen_LoadNeighbor
 
-
 LoadNeighboringBlockData:: ; 28e3
-	ld hl, wd194
+	ld hl, wOverworldMapAnchor
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	ld a, [MapWidth]
-	add $6
+	add 6
 	ld [hConnectionStripLength], a
-	ld de, XCoord + 1
-	ld b, $6
-	ld c, $5
+	ld de, wScreenSave
+	ld b, 6
+	ld c, 5
 
-Function28f7:: ; 28f7
-.loop1
+SaveScreen_LoadNeighbor:: ; 28f7
+.row
 	push bc
 	push hl
 	push de
-.loop2
+.col
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec b
-	jr nz, .loop2
+	jr nz, .col
 	pop de
 	ld a, e
-	add $6
+	add 6
 	ld e, a
 	jr nc, .okay
 	inc d
@@ -1580,11 +1557,11 @@
 	pop hl
 	ld a, [hConnectionStripLength]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	pop bc
 	dec c
-	jr nz, .loop1
+	jr nz, .row
 	ret
 ; 2914
 
@@ -1746,7 +1723,6 @@
 	ret
 ; 2a07
 
-
 GetFacingTileCoord:: ; 2a07
 ; Return map coordinates in (d, e) and tile id in a
 ; of the tile the player is facing.
@@ -1793,7 +1769,6 @@
 	dw TileRight
 ; 2a3c
 
-
 GetCoordTile:: ; 2a3c
 ; Get the collision byte for tile d, e
 	call GetBlockLocation
@@ -1861,7 +1836,6 @@
 	ret
 ; 2a8b
 
-
 CheckFacingSign:: ; 2a8b
 	call GetFacingTileCoord
 ; Load facing into b.
@@ -2002,7 +1976,6 @@
 	ret
 ; 2b29
 
-
 FadeToMenu:: ; 2b29
 	xor a
 	ld [hBGMapMode], a
@@ -2013,13 +1986,12 @@
 	ret
 ; 2b3c
 
-
-ReturnToCallingMenu:: ; 2b3c
+CloseSubmenu:: ; 2b3c
 	call ClearBGPalettes
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	call UpdateSprites
 	call Call_ExitMenu
-	call Functiond90
+	call ret_d90
 	jr Function2b5c
 ; 2b4d
 
@@ -2026,27 +1998,26 @@
 ExitAllMenus:: ; 2b4d
 	call ClearBGPalettes
 	call Call_ExitMenu
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	call UpdateSprites
-	call Functiond90
+	call ret_d90
 Function2b5c:: ; 2b5c
-	ld b, SCGB_09
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
-	callba Function49409
-	call Function3200
+	callba LoadOW_BGPal7
+	call WaitBGMap2
 	callba FadeInPalettes
 	call EnableSpriteUpdates
 	ret
 ; 2b74
 
-
-Function2b74:: ; 0x2b74
+ReturnToMapWithSpeechTextbox:: ; 0x2b74
 	push af
 	ld a, $1
 	ld [wSpriteUpdatesEnabled], a
 	call ClearBGPalettes
 	call ClearSprites
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
@@ -2053,10 +2024,10 @@
 	ld hl, VramState
 	set 0, [hl]
 	call UpdateSprites
-	call Function3200
-	ld b, SCGB_09
+	call WaitBGMap2
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
-	callba Function49409
+	callba LoadOW_BGPal7
 	call UpdateTimePals
 	call DelayFrame
 	ld a, $1
@@ -2065,7 +2036,7 @@
 	ret
 ; 0x2bae
 
-Function2bae:: ; 2bae
+ReloadTilesetAndPalettes:: ; 2bae
 	call DisableLCD
 	call ClearSprites
 	callba RefreshSprites
@@ -2078,7 +2049,7 @@
 	ld a, [MapNumber]
 	ld c, a
 	call SwitchToAnyMapBank
-	callba Function8c001
+	callba UpdateTimeOfDayPal
 	call OverworldTextModeSwitch
 	call LoadTileset
 	ld a, 9
@@ -2090,7 +2061,6 @@
 	ret
 ; 2be5
 
-
 GetMapHeaderPointer:: ; 2be5
 	ld a, [MapGroup]
 	ld b, a
@@ -2167,7 +2137,6 @@
 	ret
 ; 0x2c1c
 
-
 SwitchToMapBank:: ; 2c1c
 	ld a, [MapGroup]
 	ld b, a
@@ -2181,7 +2150,6 @@
 	ret
 ; 2c29
 
-
 GetMapBank:: ; 2c29
 	ld a, [MapGroup]
 	ld b, a
@@ -2223,7 +2191,6 @@
 	rst Bankswitch
 	ret
 ; 2c57
-
 
 GetMapScriptHeaderBank:: ; 2c57
 	ld a, [MapScriptHeaderBank]
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -369,7 +369,7 @@
 	call Function1985
 	pop af
 	call GetObjectStruct
-	callba Function4357
+	callba DeleteMapObject
 	ret
 ; 1985
 
@@ -435,7 +435,7 @@
 .ok
 	ld a, b
 	call GetObjectStruct
-	callba Function4357
+	callba DeleteMapObject
 	ret
 ; 19e9
 
@@ -460,7 +460,7 @@
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], 0
+	ld [hl], STEP_TYPE_00
 
 	ld hl, VramState
 	set 7, [hl]
@@ -611,7 +611,7 @@
 	ret
 ; 1aae
 
-Function1aae:: ; 1aae
+_GetMovementByte:: ; 1aae
 ; Switch to the movement data bank
 	ld a, [hROMBank]
 	push af
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -3,7 +3,7 @@
 
 LoadMenuDataHeader::
 	call CopyMenuDataHeader
-	call BackUpTiles
+	call PushWindow
 	ret
 
 CopyMenuDataHeader::
@@ -15,7 +15,7 @@
 	ret
 ; 0x1d4b
 
-Function1d4b:: ; 1d4b
+StoreTo_wMenuCursorBuffer:: ; 1d4b
 	ld [wMenuCursorBuffer], a
 	ret
 ; 1d4f
@@ -28,17 +28,18 @@
 	jp PrintText
 ; 1d57
 
-Function1d57:: ; 1d57
+ret_1d57:: ; 1d57
+; unreferenced
 	ret
 ; 1d58
 
 LoadMenuTextBox:: ; 1d58
-	ld hl, MenuDataHeader_0x1d5f
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	ret
 ; 1d5f
 
-MenuDataHeader_0x1d5f:: ; 1d5f
+.MenuDataHeader ; 1d5f
 	db $40 ; tile backup
 	db 12, 0 ; start coords
 	db 17, 19 ; end coords
@@ -48,17 +49,17 @@
 
 MenuTextBoxBackup:: ; 1d67
 	call MenuTextBox
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 1d6e
 
 LoadStandardMenuDataHeader:: ; 1d6e
-	ld hl, MenuDataHeader_0x1d75
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	ret
 ; 1d75
 
-MenuDataHeader_0x1d75:: ; 1d75
+.MenuDataHeader ; 1d75
 	db $40 ; tile backup
 	db 0, 0 ; start coords
 	db 17, 19 ; end coords
@@ -71,25 +72,26 @@
 	ret
 ; 1d81
 
-InterpretMenu2::
+VerticalMenu::
 	xor a
 	ld [hBGMapMode], a
 	call MenuBox
 	call UpdateSprites
-	call Function1c89
+	call PlaceVerticalMenuItems
 	call ApplyTilemap
 	call CopyMenuData2
 	ld a, [wMenuData2Flags]
 	bit 7, a
 	jr z, .cancel
-	call Function1c10
-	call Function1bc9
-	call Function1ff8
+	call InitVerticalMenuCursor
+	call StaticMenuJoypad
+	call MenuClickSound
 	bit 1, a
 	jr z, .okay
 .cancel
 	scf
 	ret
+
 .okay
 	and a
 	ret
@@ -97,9 +99,9 @@
 
 GetMenu2:: ; 1dab
 	call LoadMenuDataHeader
-	call InterpretMenu2
-	call WriteBackup
-	ld a, [MenuSelection2]
+	call VerticalMenu
+	call CloseWindow
+	ld a, [wMenuCursorY]
 	ret
 ; 1db8
 
@@ -158,17 +160,17 @@
 	ld [wMenuBorderTopCoord], a
 	add 4
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
+	call PushWindow
 
 InterpretTwoOptionMenu:: ; 1dfe
-	call InterpretMenu2
+	call VerticalMenu
 	push af
 	ld c, $f
 	call DelayFrames
-	call WriteBackup
+	call CloseWindow
 	pop af
 	jr c, .no
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp 2 ; no
 	jr z, .no
 	and a
@@ -176,7 +178,7 @@
 
 .no
 	ld a, 2
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	scf
 	ret
 ; 1e1d
@@ -185,11 +187,11 @@
 	db $40 ; tile backup
 	db 5, 10 ; start coords
 	db 9, 15 ; end coords
-	dw YesNoMenuData2
+	dw .MenuData2
 	db 1 ; default option
 ; 1e25
 
-YesNoMenuData2:: ; 1e25
+.MenuData2 ; 1e25
 	db $c0 ; flags
 	db 2
 	db "YES@"
@@ -196,13 +198,13 @@
 	db "NO@"
 ; 1e2e
 
-Function1e2e:: ; 1e2e
-	call Function1e35
-	call BackUpTiles
+OffsetMenuDataHeader:: ; 1e2e
+	call _OffsetMenuDataHeader
+	call PushWindow
 	ret
 ; 1e35
 
-Function1e35:: ; 1e35
+_OffsetMenuDataHeader:: ; 1e35
 	push de
 	call CopyMenuDataHeader
 	pop de
@@ -232,8 +234,8 @@
 	call MenuWriteText
 	call Function1eff
 	call Function1f23
-	call Function1bdd
-	call Function1ff8
+	call GetMenuJoypad
+	call MenuClickSound
 	ret
 ; 1e70
 
@@ -241,13 +243,13 @@
 	call MenuFunc_1e7f ; ???
 	call MenuWriteText
 	call Function1eff ; set up selection pointer
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	ret
 
 MenuFunc_1e7f::
 	call CopyMenuData2
-	call Function1ebd
+	call GetMenuIndexSet
 	call Function1ea6
 	call MenuBox
 	ret
@@ -255,7 +257,7 @@
 MenuWriteText::
 	xor a
 	ld [hBGMapMode], a
-	call Function1ebd ; sort out the text
+	call GetMenuIndexSet ; sort out the text
 	call Function1eda ; actually write it
 	call Function2e31
 	ld a, [hOAMUpdate]
@@ -284,24 +286,24 @@
 	ret
 ; 1ebd
 
-Function1ebd:: ; 1ebd
-	ld hl, wcf93
+GetMenuIndexSet:: ; 1ebd
+	ld hl, wMenuData2IndicesPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wcf76]
+	ld a, [wWhichIndexSet]
 	and a
-	jr z, .asm_1ed3
+	jr z, .skip
 	ld b, a
-	ld c, $ff
-.asm_1ecc
+	ld c, -1
+.loop
 	ld a, [hli]
 	cp c
-	jr nz, .asm_1ecc
+	jr nz, .loop
 	dec b
-	jr nz, .asm_1ecc
+	jr nz, .loop
 
-.asm_1ed3
+.skip
 	ld d, h
 	ld e, l
 	ld a, [hl]
@@ -311,12 +313,12 @@
 
 Function1eda:: ; 1eda
 	call MenuBoxCoord2Tile
-	ld bc, $002a
+	ld bc, 2 * SCREEN_WIDTH + 2
 	add hl, bc
-.asm_1ee1
+.loop
 	inc de
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	ld [MenuSelection], a
 	push de
@@ -323,16 +325,16 @@
 	push hl
 	ld d, h
 	ld e, l
-	ld hl, wcf95
-	call Function1efb
+	ld hl, wMenuData2DisplayFunctionPointer
+	call .__wMenuData2DisplayFunction__
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop de
-	jr .asm_1ee1
+	jr .loop
 ; 1efb
 
-Function1efb:: ; 1efb
+.__wMenuData2DisplayFunction__ ; 1efb
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -340,28 +342,28 @@
 ; 1eff
 
 Function1eff:: ; 1eff
-	call Function1c10
-	ld hl, wcfa8
+	call InitVerticalMenuCursor
+	ld hl, wMenuJoypadFilter
 	ld a, [wMenuData2Flags]
 	bit 3, a
-	jr z, .asm_1f0e
-	set 3, [hl]
+	jr z, .disallow_select
+	set START_F, [hl]
 
-.asm_1f0e
+.disallow_select
 	ld a, [wMenuData2Flags]
 	bit 2, a
-	jr z, .asm_1f19
-	set 5, [hl]
-	set 4, [hl]
+	jr z, .disallow_left_right
+	set D_LEFT_F, [hl]
+	set D_RIGHT_F, [hl]
 
-.asm_1f19
+.disallow_left_right
 	ret
 ; 1f1a
 
 
 Function1f1a:: ; 1f1a
-	call Function1bd3
-	ld hl, wcfa8
+	call ScrollingMenuJoypad
+	ld hl, wMenuJoypadFilter
 	and [hl]
 	jr Function1f2a
 ; 1f23
@@ -368,64 +370,64 @@
 
 Function1f23:: ; 1f23
 	xor a
-	ld [wcf73], a
-	call Function1bc9
+	ld [wMenuJoypad], a
+	call StaticMenuJoypad
 ; 1f2a
 
 Function1f2a:: ; 1f2a
-	bit 0, a
-	jr nz, .asm_1f52
-	bit 1, a
-	jr nz, .asm_1f6d
-	bit 3, a
-	jr nz, .asm_1f6d
-	bit 4, a
-	jr nz, .asm_1f44
-	bit 5, a
-	jr nz, .asm_1f4b
+	bit A_BUTTON_F, a
+	jr nz, .a_button
+	bit B_BUTTON_F, a
+	jr nz, .b_start
+	bit START_F, a
+	jr nz, .b_start
+	bit D_RIGHT_F, a
+	jr nz, .d_right
+	bit D_LEFT_F, a
+	jr nz, .d_left
 	xor a
-	ld [wcf73], a
-	jr .asm_1f57
+	ld [wMenuJoypad], a
+	jr .done
 
-.asm_1f44
-	ld a, $10
-	ld [wcf73], a
-	jr .asm_1f57
+.d_right
+	ld a, D_RIGHT
+	ld [wMenuJoypad], a
+	jr .done
 
-.asm_1f4b
-	ld a, $20
-	ld [wcf73], a
-	jr .asm_1f57
+.d_left
+	ld a, D_LEFT
+	ld [wMenuJoypad], a
+	jr .done
 
-.asm_1f52
-	ld a, $1
-	ld [wcf73], a
+.a_button
+	ld a, A_BUTTON
+	ld [wMenuJoypad], a
 
-.asm_1f57
-	call Function1ebd
-	ld a, [MenuSelection2]
+.done
+	call GetMenuIndexSet
+	ld a, [wMenuCursorY]
 	ld l, a
 	ld h, $0
 	add hl, de
 	ld a, [hl]
 	ld [MenuSelection], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wMenuCursorBuffer], a
 	and a
 	ret
 
-.asm_1f6d
-	ld a, $2
-	ld [wcf73], a
-	ld a, $ff
+.b_start
+	ld a, B_BUTTON
+	ld [wMenuJoypad], a
+	ld a, -1
 	ld [MenuSelection], a
 	scf
 	ret
 ; 1f79
 
-Function1f79:: ; 1f79
+PlaceMenuStrings:: ; 1f79
 	push de
-	ld hl, wcf97
+	ld hl, wMenuData2PointerTableAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -441,7 +443,7 @@
 PlaceNthMenuStrings:: ; 1f8d
 	push de
 	ld a, [MenuSelection]
-	call Function1fb1
+	call GetMenuDataPointerTableEntry
 rept 2
 	inc hl
 endr
@@ -454,7 +456,8 @@
 ; 1f9e
 
 Function1f9e:: ; 1f9e
-	call Function1fb1
+; unreferenced
+	call GetMenuDataPointerTableEntry
 rept 2
 	inc hl
 endr
@@ -466,7 +469,7 @@
 
 MenuJumptable:: ; 1fa7
 	ld a, [MenuSelection]
-	call Function1fb1
+	call GetMenuDataPointerTableEntry
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -473,10 +476,10 @@
 	jp [hl]
 ; 1fb1
 
-Function1fb1:: ; 1fb1
+GetMenuDataPointerTableEntry:: ; 1fb1
 	ld e, a
 	ld d, $0
-	ld hl, wcf97
+	ld hl, wMenuData2PointerTableAddr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -486,14 +489,14 @@
 	ret
 ; 1fbf
 
-ResetTextRelatedRAM:: ; 1fbf
-	ld hl, wcf71
+ClearWindowData:: ; 1fbf
+	ld hl, wWindowStackPointer
 	call .bytefill
 	ld hl, wMenuDataHeader
 	call .bytefill
 	ld hl, wMenuData2Flags
 	call .bytefill
-	ld hl, wcfa1
+	ld hl, w2DMenuCursorInitY
 	call .bytefill
 
 	ld a, [rSVBK]
@@ -502,14 +505,14 @@
 	ld [rSVBK], a
 
 	xor a
-	ld hl, w7_dfff
+	ld hl, wWindowStackBottom
 rept 2
 	ld [hld], a
 endr
 	ld a, l
-	ld [wcf71], a
+	ld [wWindowStackPointer], a
 	ld a, h
-	ld [wcf72], a
+	ld [wWindowStackPointer + 1], a
 
 	pop af
 	ld [rSVBK], a
@@ -523,15 +526,14 @@
 	ret
 ; 1ff8
 
-Function1ff8:: ; 1ff8
+MenuClickSound:: ; 1ff8
 	push af
-	and $3
+	and A_BUTTON | B_BUTTON
 	jr z, .nosound
 	ld hl, wMenuFlags
 	bit 3, [hl]
 	jr nz, .nosound
 	call PlayClickSFX
-
 .nosound
 	pop af
 	ret
@@ -548,12 +550,12 @@
 
 MenuTextBoxWaitButton:: ; 2012
 	call MenuTextBox
-	call CloseText
+	call WaitButton
 	call ExitMenu
 	ret
 ; 201c
 
-Function201c:: ; 201c
+Place2DMenuItemName:: ; 201c
 	ld [hBuffer], a
 	ld a, [hROMBank]
 	push af
@@ -567,39 +569,26 @@
 	ret
 ; 202a
 
-InterpretMenu:: ; 202a
+_2DMenu:: ; 202a
 	ld a, [hROMBank]
-	ld [wcf94], a
-	callba Function2400e
+	ld [wMenuData2_2DMenuItemStringsBank], a
+	callba _2DMenu_
 	ld a, [wMenuCursorBuffer]
 	ret
 ; 2039
 
-Function2039:: ; 2039
+InterpretBattleMenu:: ; 2039
 	ld a, [hROMBank]
-	ld [wcf94], a
-	callba Function24022
+	ld [wMenuData2_2DMenuItemStringsBank], a
+	callba _InterpretBattleMenu
 	ld a, [wMenuCursorBuffer]
 	ret
 ; 2048
 
-Function2048:: ; 2048
+InterpretMobileMenu:: ; 2048
 	ld a, [hROMBank]
-	ld [wcf94], a
-	callba Function2403c
+	ld [wMenuData2_2DMenuItemStringsBank], a
+	callba _InterpretMobileMenu
 	ld a, [wMenuCursorBuffer]
 	ret
 ; 2057
-
-Function2057:: ; 2057
-	ld a, [hROMBank]
-	push af
-	ld a, BANK(Function842db)
-	rst Bankswitch
-
-	call Function842db
-	pop af
-	rst Bankswitch
-
-	ret
-; 2063
--- a/home/mobile.asm
+++ b/home/mobile.asm
@@ -51,14 +51,14 @@
 	ret
 ; 3e80
 
-Function3e80:: ; 3e80
+MobileReceive:: ; 3e80
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function1116c5)
+	ld a, BANK(_MobileReceive)
 	ld [$c981], a
 	rst Bankswitch
 
-	call Function1116c5
+	call _MobileReceive
 	pop bc
 	ld a, b
 	ld [$c981], a
@@ -92,19 +92,19 @@
 
 	ld a, [$c822]
 	bit 1, a
-	jr nz, .skip_Function1118de
+	jr nz, .skip_Timer
 
 	ld a, [rSC]
 	and 1 << rSC_ON
-	jr nz, .skip_Function1118de
+	jr nz, .skip_Timer
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function1118de)
+	ld a, BANK(_Timer)
 	ld [$c981], a
 	rst Bankswitch
 
-	call Function1118de
+	call _Timer
 
 	pop bc
 	ld a, b
@@ -111,7 +111,7 @@
 	ld [$c981], a
 	rst Bankswitch
 
-.skip_Function1118de
+.skip_Timer
 	ld a, [rTMA]
 	ld [rTIMA], a
 
@@ -127,7 +127,8 @@
 ; 3ed7
 
 Function3ed7:: ; 3ed7
-	ld [$dc02], a
+; unreferenced
+	ld [wdc02], a
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(Function114243)
@@ -138,6 +139,177 @@
 	ld a, b
 	rst Bankswitch
 
-	ld a, [$dc02]
+	ld a, [wdc02]
 	ret
 ; 3eea
+
+Function3eea:: ; 3eea
+	push hl
+	push bc
+	ld de, AttrMap - TileMap
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	call Function3f35
+	pop bc
+	pop hl
+	call MobileHome_PlaceBox
+	ret
+; 3efd
+
+Function3efd:: ; 3efd
+; unreferenced
+	push hl
+	hlcoord 0, 12
+	ld b, 4
+	ld c, 18
+	call .fill_attr
+	pop hl
+	call PrintTextBoxText
+	ret
+; 3f0d
+
+.fill_attr
+	push hl
+	push bc
+	ld de, AttrMap - TileMap
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	call Function3f35
+	pop bc
+	pop hl
+	call TextBoxBorder
+	ret
+; 3f20
+
+Function3f20:: ; 3f20
+	hlcoord 0, 0, AttrMap
+	ld b,  6
+	ld c, 20
+	call Function3f35
+	hlcoord 0, 0
+	ld b,  4
+	ld c, 18
+	call MobileHome_PlaceBox
+	ret
+; 3f35
+
+Function3f35:: ; 3f35
+	ld a, 6
+	ld de, SCREEN_WIDTH
+.row
+	push bc
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .row
+	ret
+; 3f47
+
+MobileHome_PlaceBox: ; 3f47
+	push bc
+	call .FillTop
+	pop bc
+.RowLoop
+	push bc
+	call .FillMiddle
+	pop bc
+	dec b
+	jr nz, .RowLoop
+	call .FillBottom
+	ret
+; 3f58
+
+.FillTop
+	ld a, $63
+	ld d, $62
+	ld e, $64
+	jr .FillRow
+
+.FillBottom
+	ld a, $68
+	ld d, $67
+	ld e, $69
+	jr .FillRow
+
+.FillMiddle
+	ld a, $7f
+	ld d, $65
+	ld e, $66
+
+.FillRow
+	push hl
+	ld [hl], d
+	inc hl
+.FillLoop
+	ld [hli], a
+	dec c
+	jr nz, .FillLoop
+	ld [hl], e
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	ret
+; 3f7c
+
+Function3f7c:: ; 3f7c
+	call MenuBoxCoord2Tile
+	call GetMenuBoxDims
+	dec b
+	dec c
+	call Function3eea
+	ret
+; 3f88
+
+Function3f88:: ; 3f88
+	ld hl, wDecompressScratch
+	ld b, 0
+.row
+	push bc
+	ld c, 1 tiles / 2
+.col
+	ld a, [de]
+	inc de
+	cpl
+	ld [hl], 0
+	inc hl
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop bc
+	dec c
+	jr nz, .row
+	ret
+; 3f9f
+
+Function3f9f:: ; 3f9f
+	ld hl, wDecompressScratch
+.row
+	push bc
+	ld c, 1 tiles / 2
+.col
+	ld a, [de]
+	inc de
+	inc de
+	cpl
+	ld [hl], $0
+	inc hl
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop bc
+	dec c
+	jr nz, .row
+	ret
+; 3fb5
--- a/home/movement.asm
+++ b/home/movement.asm
@@ -136,10 +136,10 @@
 	big_step_right
 ; 1bb1
 
-InitMenu3:: ; 1bb1
+SetMenuAttributes:: ; 1bb1
 	push hl
 	push bc
-	ld hl, wcfa1
+	ld hl, w2DMenuCursorInitY
 	ld b, $8
 .loop
 	ld a, [de]
@@ -160,19 +160,19 @@
 	ret
 ; 1bc9
 
-Function1bc9:: ; 1bc9
-	callab Function241a8
-	call Function1bdd
+StaticMenuJoypad:: ; 1bc9
+	callab _StaticMenuJoypad
+	call GetMenuJoypad
 	ret
 ; 1bd3
 
-Function1bd3:: ; 1bd3
-	callab Function241ab
-	call Function1bdd
+ScrollingMenuJoypad:: ; 1bd3
+	callab _ScrollingMenuJoypad
+	call GetMenuJoypad
 	ret
 ; 1bdd
 
-Function1bdd:: ; 1bdd
+GetMenuJoypad:: ; 1bdd
 	push bc
 	push af
 	ld a, [hJoyLast]
@@ -188,21 +188,21 @@
 	ret
 ; 1bee
 
-Function1bee:: ; 1bee
-	ld hl, wcfac
+PlaceHollowCursor:: ; 1bee
+	ld hl, wCursorCurrentTile
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld [hl], $ec
+	ld [hl], "▷"
 	ret
 ; 1bf7
 
-Function1bf7:: ; 1bf7
-	ld hl, wcfac
+HideCursor:: ; 1bf7
+	ld hl, wCursorCurrentTile
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld [hl], $7f
+	ld [hl], " "
 	ret
 ; 1c00
 
--- a/home/palettes.asm
+++ b/home/palettes.asm
@@ -35,10 +35,10 @@
 	ld c, rBGPD % $100
 	ld b, 4 ; NUM_PALS / 2
 .bgp
-	rept $10
+rept 2 palettes
 	ld a, [hli]
 	ld [$ff00+c], a
-	endr
+endr
 
 	dec b
 	jr nz, .bgp
@@ -48,13 +48,13 @@
 ; copy 8 pals to obpd
 	ld a, %10000000 ; auto increment, index 0
 	ld [rOBPI], a
-	ld c, rOBPD - rJOYP
+	ld c, rOBPD % $100
 	ld b, 4 ; NUM_PALS / 2
 .obp
-	rept $10
+rept 2 palettes
 	ld a, [hli]
 	ld [$ff00+c], a
-	endr
+endr
 
 	dec b
 	jr nz, .obp
@@ -163,14 +163,14 @@
 ; cf8
 
 
-Functioncf8:: ; cf8
+DmgToCgbObjPal0:: ; cf8
 	ld [rOBP0], a
 	push af
 
-; Don't need to be here if CGB
+; Don't need to be here if not CGB
 	ld a, [hCGB]
 	and a
-	jr z, .done
+	jr z, .dmg
 
 	push hl
 	push de
@@ -185,9 +185,9 @@
 	ld de, UnknOBPals
 	ld a, [rOBP0]
 	ld b, a
-	ld c, $1
+	ld c, 1
 	call CopyPals
-	ld a, $1
+	ld a, 1
 	ld [hCGBPalUpdate], a
 
 	pop af
@@ -197,39 +197,45 @@
 	pop de
 	pop hl
 
-.done
+.dmg
 	pop af
 	ret
 ; d24
 
-Functiond24:: ; d24
+DmgToCgbObjPal1:: ; d24
 	ld [rOBP1], a
 	push af
+
 	ld a, [hCGB]
 	and a
-	jr z, .asm_d4e
+	jr z, .dmg
+
 	push hl
 	push de
 	push bc
+
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, 5 ; gfx
 	ld [rSVBK], a
-	ld hl, OBPals + 8
-	ld de, UnknOBPals + 8
+
+	ld hl, OBPals + 1 palettes
+	ld de, UnknOBPals + 1 palettes
 	ld a, [rOBP1]
 	ld b, a
-	ld c, $1
+	ld c, 1
 	call CopyPals
-	ld a, $1
+	ld a, 1
 	ld [hCGBPalUpdate], a
+
 	pop af
 	ld [rSVBK], a
+
 	pop bc
 	pop de
 	pop hl
 
-.asm_d4e
+.dmg
 	pop af
 	ret
 ; d50
@@ -274,7 +280,7 @@
 	jr nz, .loop
 	
 ; de += 8 (next pal)
-	ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal
+	ld a, 1 palettes ; NUM_PAL_COLORS * 2 ; bytes per pal
 	add e
 	jr nc, .ok
 	inc d
@@ -308,7 +314,7 @@
 ; d90
 
 
-Functiond90:: ; d90
+ret_d90:: ; d90
 	ret
 ; d91
 
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -6,17 +6,17 @@
 	push de
 	push hl
 
-	ld a, [hFFC9]
+	ld a, [hMobileReceive]
 	and a
-	jr nz, .asm_71c
+	jr nz, .mobile
 
 	ld a, [wc2d4]
 	bit 0, a
-	jr nz, .asm_721
+	jr nz, .printer
 
 	ld a, [hLinkPlayerNumber]
 	inc a ; is it equal to -1?
-	jr z, .asm_726
+	jr z, .init_player_number
 
 	ld a, [rSB]
 	ld [hSerialReceive], a
@@ -26,34 +26,34 @@
 
 	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr z, .asm_752
+	jr z, .player2
 
 	ld a, 0 << rSC_ON
 	ld [rSC], a
 	ld a, 1 << rSC_ON
 	ld [rSC], a
-	jr .asm_752
+	jr .player2
 
-.asm_71c
-	call Function3e80
-	jr .asm_75a
+.mobile
+	call MobileReceive
+	jr .end
 
-.asm_721
-	call Function2057
-	jr .asm_75a
+.printer
+	call PrinterReceive
+	jr .end
 
-.asm_726
+.init_player_number
 	ld a, [rSB]
 	cp $1
-	jr z, .asm_730
+	jr z, .player1
 	cp $2
-	jr nz, .asm_752
+	jr nz, .player2
 
-.asm_730
+.player1
 	ld [hSerialReceive], a
 	ld [hLinkPlayerNumber], a
 	cp $2
-	jr z, .asm_74f
+	jr z, ._player2
 
 	xor a
 	ld [rSB], a
@@ -60,28 +60,28 @@
 	ld a, $3
 	ld [rDIV], a
 
-.asm_73f
+.wait_bit_7
 	ld a, [rDIV]
 	bit 7, a
-	jr nz, .asm_73f
+	jr nz, .wait_bit_7
 
 	ld a, 0 << rSC_ON
 	ld [rSC], a
 	ld a, 1 << rSC_ON
 	ld [rSC], a
-	jr .asm_752
+	jr .player2
 
-.asm_74f
+._player2
 	xor a
 	ld [rSB], a
 
-.asm_752
+.player2
 	ld a, $1
 	ld [hFFCA], a
-	ld a, $fe
+	ld a, -2
 	ld [hSerialSend], a
 
-.asm_75a
+.end
 	pop hl
 	pop de
 	pop bc
@@ -92,7 +92,7 @@
 Function75f:: ; 75f
 	ld a, $1
 	ld [hFFCC], a
-.asm_763
+.loop
 	ld a, [hl]
 	ld [hSerialSend], a
 	call Function78a
@@ -100,28 +100,28 @@
 	ld b, a
 	inc hl
 	ld a, $30
-.asm_76e
+.wait
 	dec a
-	jr nz, .asm_76e
+	jr nz, .wait
 	ld a, [hFFCC]
 	and a
 	ld a, b
 	pop bc
-	jr z, .asm_782
+	jr z, .load
 	dec hl
 	cp $fd
-	jr nz, .asm_763
+	jr nz, .loop
 	xor a
 	ld [hFFCC], a
-	jr .asm_763
+	jr .loop
 
-.asm_782
+.load
 	ld [de], a
 	inc de
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_763
+	jr nz, .loop
 	ret
 ; 78a
 
@@ -292,7 +292,7 @@
 	ld a, $ff
 	ld [wOtherPlayerLinkAction], a
 .loop
-	call LinkCommunicationsSendReceive
+	call LinkTransfer
 	call DelayFrame
 	call Function82b
 	jr z, .check
@@ -318,7 +318,7 @@
 	ld b, 10
 .receive
 	call DelayFrame
-	call LinkCommunicationsSendReceive
+	call LinkTransfer
 	dec b
 	jr nz, .receive
 
@@ -325,7 +325,7 @@
 	ld b, 10
 .acknowledge
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	dec b
 	jr nz, .acknowledge
 
@@ -334,7 +334,7 @@
 	ret
 ; 8c1
 
-LinkCommunicationsSendReceive:: ; 8c1
+LinkTransfer:: ; 8c1
 	push bc
 	ld b, SERIAL_TIMECAPSULE
 	ld a, [wLinkMode]
@@ -380,7 +380,7 @@
 	ret
 ; 908
 
-LinkCommunicationsSignalDataReceived:: ; 908
+LinkDataReceived:: ; 908
 ; Let the other system know that the data has been received.
 	xor a
 	ld [hSerialSend], a
--- a/home/text.asm
+++ b/home/text.asm
@@ -538,7 +538,7 @@
 
 .linkbattle
 	call Function13b6
-	call KeepTextOpen
+	call ButtonSound
 	hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
 	lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
 	call ClearBox
@@ -561,7 +561,7 @@
 	call Function13b6
 
 	push de
-	call KeepTextOpen
+	call ButtonSound
 	pop de
 
 	ld a, [wLinkMode]
@@ -611,7 +611,7 @@
 
 .ok
 	call Function13b6
-	call KeepTextOpen
+	call ButtonSound
 	ld a, [wLinkMode]
 	cp LINK_COLOSSEUM
 	jr z, DoneText
@@ -723,15 +723,15 @@
 
 
 PlaceWholeStringInBoxAtOnce:: ; 13e5
-	ld a, [TextBoxFrame + 1]
+	ld a, [TextBoxFlags]
 	push af
 	set 1, a
-	ld [TextBoxFrame + 1], a
+	ld [TextBoxFlags], a
 
 	call DoTextUntilTerminator
 
 	pop af
-	ld [TextBoxFrame + 1], a
+	ld [TextBoxFlags], a
 	ret
 ; 13f6
 
@@ -934,7 +934,7 @@
 	push hl
 	call LoadBlinkingCursor
 	push bc
-	call KeepTextOpen
+	call ButtonSound
 	pop bc
 	call UnloadBlinkingCursor
 	pop hl
@@ -1101,7 +1101,7 @@
 ; display arrow
 	push hl
 	push bc
-	call KeepTextOpen
+	call ButtonSound
 	pop bc
 	pop hl
 	ret
--- a/home/tilemap.asm
+++ b/home/tilemap.asm
@@ -1,19 +1,19 @@
-BackUpTiles:: ; 1c00
-	callab _BackUpTiles
+PushWindow:: ; 1c00
+	callab _PushWindow
 	ret
 ; 1c07
 
 ExitMenu:: ; 0x1c07
 	push af
-	callab Function243e8
+	callab _ExitMenu
 	pop af
 	ret
 
-Function1c10:: ; 0x1c10
-	callab Function2446d
+InitVerticalMenuCursor:: ; 0x1c10
+	callab _InitVerticalMenuCursor
 	ret
 
-WriteBackup:: ; 0x1c17
+CloseWindow:: ; 0x1c17
 	push af
 	call ExitMenu
 	call ApplyTilemap
@@ -54,7 +54,7 @@
 
 	ret
 
-Function1c47:: ; 0x1c47
+PopWindow:: ; 0x1c47
 	ld b, $10
 	ld de, wMenuFlags
 .loop
@@ -98,8 +98,8 @@
 	ret
 ; 1c7e
 
-Function1c7e:: ; 1c7e
-	ld hl, wcf71
+GetWindowStackTop:: ; 1c7e
+	ld hl, wWindowStackPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -110,7 +110,7 @@
 	ret
 ; 1c89
 
-Function1c89:: ; 1c89
+PlaceVerticalMenuItems:: ; 1c89
 	call CopyMenuData2
 	ld hl, wMenuData2Pointer
 	ld e, [hl]
@@ -131,6 +131,7 @@
 	pop bc
 	dec b
 	jr nz, .loop
+
 	ld a, [wMenuData2Flags]
 	bit 4, a
 	ret z
@@ -213,13 +214,11 @@
 	ld a, c
 	ld b, h
 	ld c, l
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	add hl, bc
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld c, a
 	xor a
 	ld b, a
@@ -243,13 +242,11 @@
 	ld a, c
 	ld b, h
 	ld c, l
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	add hl, bc
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld c, a
 	xor a
 	ld b, a
--- a/home/time.asm
+++ b/home/time.asm
@@ -187,14 +187,14 @@
 	ret
 ; 658
 
-Function658:: ; 658
+SetTimeOfDay:: ; 658
 	xor a
 	ld [StringBuffer2], a
 	ld a, $0 ; useless
 	ld [StringBuffer2 + 3], a
-	jr Function677
+	jr InitTime
 
-Function663:: ; 663
+SetDayOfWeek:: ; 663
 	call UpdateTime
 	ld a, [hHours]
 	ld [StringBuffer2 + 1], a
@@ -202,10 +202,10 @@
 	ld [StringBuffer2 + 2], a
 	ld a, [hSeconds]
 	ld [StringBuffer2 + 3], a
-	jr Function677 ; useless
+	jr InitTime ; useless
 
-Function677:: ; 677
-	callba Function140ed
+InitTime:: ; 677
+	callba _InitTime
 	ret
 ; 67e
 
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -247,11 +247,11 @@
 	jp nz, UpdateCGBPals
 
 	; update gb pals
-	ld a, [wcfc7]
+	ld a, [wBGP]
 	ld [rBGP], a
-	ld a, [wcfc8]
+	ld a, [wOBP0]
 	ld [rOBP0], a
-	ld a, [wcfc9]
+	ld a, [wOBP1]
 	ld [rOBP1], a
 
 	and a
--- a/home/video.asm
+++ b/home/video.asm
@@ -20,10 +20,10 @@
 
 
 UpdateBGMapBuffer:: ; 15e3
-; Copy [$ffdc] 16x8 tiles from BGMapBuffer
+; Copy [hFFDC] 16x8 tiles from BGMapBuffer
 ; to bg map addresses in BGMapBufferPtrs.
 
-; [$ffdc] must be even since this is done in pairs.
+; [hFFDC] must be even since this is done in pairs.
 
 ; Return carry on success.
 
@@ -76,11 +76,10 @@
 endr
 
 ; We've done 2 16x8 blocks
-	ld a, [$ffdc]
-rept 2
+	ld a, [hFFDC]
 	dec a
-endr
-	ld [$ffdc], a
+	dec a
+	ld [hFFDC], a
 
 	jr nz, .next
 
--- a/home/window.asm
+++ b/home/window.asm
@@ -1,6 +1,6 @@
-ResetWindow:: ; 2dba
+RefreshScreen:: ; 2dba
 
-	call ResetTextRelatedRAM
+	call ClearWindowData
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(Function6454) ; and BANK(Function64bf)
@@ -16,13 +16,13 @@
 ; 2dcf
 
 
-LoadMoveSprites:: ; 2dcf
+CloseText:: ; 2dcf
 	ld a, [hOAMUpdate]
 	push af
 	ld a, $1
 	ld [hOAMUpdate], a
 
-	call Function2de2
+	call .CloseText
 
 	pop af
 	ld [hOAMUpdate], a
@@ -31,8 +31,8 @@
 	ret
 ; 2de2
 
-Function2de2:: ; 2de2
-	call ResetTextRelatedRAM
+.CloseText ; 2de2
+	call ClearWindowData
 	xor a
 	ld [hBGMapMode], a
 	call OverworldTextModeSwitch
@@ -44,21 +44,21 @@
 	ld [hWY], a
 	call ReplaceKrisSprite
 	callba ReturnFromMapSetupScript
-	callba Function106594
+	callba LoadOverworldFont
 	ret
 ; 2e08
 
-LoadFont:: ; 2e08
-	call ResetTextRelatedRAM
+OpenText:: ; 2e08
+	call ClearWindowData
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(Function6454) ; and BANK(Function64bf)
 	rst Bankswitch
 
-	call Function6454
+	call Function6454 ; clear bgmap
 	call SpeechTextBox
-	call Function2e20
-	call Function64bf
+	call Function2e20 ; anchor bgmap
+	call Function64bf ; load font
 	pop af
 	rst Bankswitch
 
--- a/hram.asm
+++ b/hram.asm
@@ -1,8 +1,9 @@
+HRAM_START         EQU $ff80
 hPushOAM           EQU $ff80
 
 hROMBankBackup     EQU $ff8a
 hBuffer            EQU $ff8b
-
+hFF8C              EQU $ff8c
 hRTCDayHi          EQU $ff8d
 hRTCDayLo          EQU $ff8e
 hRTCHours          EQU $ff8f
@@ -34,7 +35,7 @@
 
 hPrinter           EQU $ffac
 hFillBox           EQU $ffad
-
+hMoveMon           EQU $ffae
 hMapObjectIndexBuffer EQU $ffaf
 hObjectStructIndexBuffer EQU $ffb0
 
@@ -75,9 +76,10 @@
 hFFC2              EQU $ffc2
 hMoneyTemp         EQU $ffc3
 
-hLCDStatCustom     EQU $ffc6
-
-hFFC9              EQU $ffc9
+hFFC6              EQU $ffc6
+hFFC7              EQU $ffc7
+hFFC8              EQU $ffc8
+hMobileReceive     EQU $ffc9
 hFFCA              EQU $ffca
 hLinkPlayerNumber  EQU $ffcb
 hFFCC              EQU $ffcc
@@ -114,3 +116,7 @@
 hSGB               EQU $ffe7
 hDMATransfer       EQU $ffe8
 hMobile            EQU $ffe9
+hFFEA              EQU $ffea
+hClockResetTrigger EQU $ffeb
+
+HRAM_END EQU $ffff
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -4,7 +4,7 @@
 	call GetItemName
 	call CopyName1
 	ld a, 1
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ld a, [CurItem]
 	dec a
 	ld hl, ItemEffects
@@ -39,7 +39,7 @@
 	dw Thunderstone
 	dw WaterStone
 	dw Item19
-	dw HpUp
+	dw HPUp
 	dw Protein
 	dw Iron
 	dw Carbos
@@ -75,7 +75,7 @@
 	dw GoodRod
 	dw SilverLeaf
 	dw SuperRod
-	dw PpUp
+	dw PPUp
 	dw Ether
 	dw MaxEther
 	dw Elixer
@@ -413,7 +413,7 @@
 	xor a
 	ld [hBattleTurn], a
 	ld [Buffer2], a
-	ld [wcfca], a
+	ld [wNumHits], a
 	predef PlayBattleAnim
 
 	ld a, [wWildMon]
@@ -654,7 +654,7 @@
 	ld [CurPartyMon], a
 	ld a, BOXMON
 	ld [MonType], a
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld b, $0
 	callba NamingScreen
 
@@ -661,7 +661,7 @@
 	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 
-	ld hl, wd050
+	ld hl, wMonOrItemNameBuffer
 	ld de, sBoxMonNicknames
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
@@ -677,7 +677,7 @@
 	call GetSRAMBank
 
 	ld hl, sBoxMonNicknames
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
@@ -1206,7 +1206,7 @@
 	jr z, .NoEffect
 
 	ld a, $1
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	callba EvolvePokemon
 
 	ld a, [wMonTriedToEvolve]
@@ -1220,12 +1220,12 @@
 
 .DecidedNotToUse
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; ee3d
 
 
-HpUp:
+HPUp:
 Protein:
 Iron:
 Carbos:
@@ -1285,7 +1285,7 @@
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
-	ld a, MON_EXP + 2
+	ld a, MON_STAT_EXP - 1
 	call GetPartyParamLocation
 	ld b, $1
 	predef_jump CalcPkmnStats
@@ -1293,7 +1293,7 @@
 
 RareCandy_StatBooster_ExitMenu: ; ee9f
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	jp ClearPalettes
 ; eea6
 
@@ -1447,7 +1447,7 @@
 	predef LearnLevelMoves
 
 	xor a
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	callba EvolvePokemon
 
 	jp UseDisposableItem
@@ -1614,11 +1614,11 @@
 ; f09e
 
 StatusHealer_Jumptable: ; f09e (3:709e)
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	ret
 
-.jumptable: ; f0a3 (3:70a3)
+.dw: ; f0a3 (3:70a3)
 	dw StatusHealer_ClearPalettes
 	dw StatusHealer_NoEffect
 	dw StatusHealer_ExitMenu
@@ -1842,7 +1842,7 @@
 	ld bc, SCREEN_WIDTH * 2
 	call AddNTimes
 	ld a, $2
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	predef_jump AnimateHPBar
 
 UseItem_SelectMon: ; f1f9 (3:71f9)
@@ -1930,7 +1930,7 @@
 
 StatusHealer_ExitMenu: ; f29e (3:729e)
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 StatusHealer_ClearPalettes: ; f2a2 (3:72a2)
 	call ClearPalettes
 	ret
@@ -2161,7 +2161,7 @@
 
 Softboiled_MilkDrinkFunction: ; f3df (3:73df)
 ; Softboiled/Milk Drink in the field
-	ld a, [wd0d8]
+	ld a, [wPartyMenuCursor]
 	dec a
 	ld b, a
 	call .SelectMilkDrinkRecipient ; select pokemon
@@ -2186,7 +2186,7 @@
 .skip
 	ld a, b
 	inc a
-	ld [wd0d8], a
+	ld [wPartyMenuCursor], a
 	ret
 
 .SelectMilkDrinkRecipient: ; f419 (3:7419)
@@ -2197,7 +2197,7 @@
 	call ChoosePkmnToUseItemOn
 	pop bc
 	jr c, .set_carry
-	ld a, [wd0d8]
+	ld a, [wPartyMenuCursor]
 	dec a
 	ld c, a
 	ld a, b
@@ -2233,10 +2233,10 @@
 
 EscapeRope: ; f44f
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	callba EscapeRopeFunction
 
-	ld a, [wPlayerAction]
+	ld a, [wItemEffectSucceeded]
 	cp 1
 	call z, UseDisposableItem
 	ret
@@ -2298,7 +2298,7 @@
 
 .asm_f4a6
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; f4ab
 
@@ -2512,7 +2512,7 @@
 
 
 MaxElixer:
-PpUp:
+PPUp:
 Ether:
 MaxEther:
 Elixer:
@@ -2667,7 +2667,7 @@
 
 Elixer_RestorePPofAllMoves: ; f6af
 	xor a
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld [hli], a
 	ld [hl], a
 	ld b, NUM_MOVES
@@ -2682,16 +2682,16 @@
 
 	call RestorePP
 	jr z, .next
-	ld hl, wcfaa
+	ld hl, wMenuCursorX
 	inc [hl]
 
 .next
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	inc [hl]
 	pop bc
 	dec b
 	jr nz, .moveLoop
-	ld a, [wcfaa]
+	ld a, [wMenuCursorX]
 	and a
 	jp nz, BattleRestorePP
 
@@ -2701,7 +2701,7 @@
 PPRestoreItem_Cancel: ; f6e0
 	call ClearPalettes
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; f6e8
 
@@ -2802,7 +2802,7 @@
 
 SacredAsh: ; f753
 	callba _SacredAsh
-	ld a, [wPlayerAction]
+	ld a, [wItemEffectSucceeded]
 	cp $1
 	ret nz
 	call UseDisposableItem
@@ -2811,29 +2811,27 @@
 
 
 NormalBox: ; f763
-	ld c, $2c
-	jr Function_0xf769
+	ld c, DECOFLAG_SILVER_TROPHY_DOLL
+	jr OpenBox
 ; f767
 
 GorgeousBox: ; f767
-	ld c, $2b
-; f769
-
-Function_0xf769: ; f769
+	ld c, DECOFLAG_GOLD_TROPHY_DOLL
+OpenBox: ; f769
 	callba SetSpecificDecorationFlag
 
-	ld hl, UnknownText_0xf778
+	ld hl, .text
 	call PrintText
 
 	jp UseDisposableItem
 ; f778
 
-UnknownText_0xf778: ; 0xf778
+.text: ; 0xf778
+	; There was a trophy inside!
 	text_jump UnknownText_0x1c5d03
 	db "@"
 ; 0xf77d
 
-
 Brightpowder:
 Item19:
 LuckyPunch:
@@ -2923,7 +2921,8 @@
 UpGrade:
 ItemB0:
 RainbowWing:
-ItemB3: ; f77d
+ItemB3:
+TeruSama: ; f77d
 	jp IsntTheTimeMessage
 ; f780
 
@@ -2958,7 +2957,7 @@
 	xor a
 	ld [wKickCounter], a
 	ld [hBattleTurn], a
-	ld [wcfca], a
+	ld [wNumHits], a
 	predef PlayBattleAnim
 	ld hl, BlockedTheBallText
 	call PrintText
@@ -2973,7 +2972,7 @@
 
 	; Item wasn't used.
 	ld a, $2
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; f7d6
 
@@ -2988,7 +2987,7 @@
 
 	; Item wasn't used.
 	ld a, $2
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	ret
 ; f7e8
 
@@ -3018,7 +3017,7 @@
 CantUseItemMessage: ; f804
 ; Item couldn't be used.
 	xor a
-	ld [wPlayerAction], a
+	ld [wItemEffectSucceeded], a
 	jp PrintText
 ; f80b
 
@@ -3120,7 +3119,7 @@
 	ld a, [wd265]
 	dec a
 	jr nz, .use
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	inc a
 	cp b
 	jr nz, .skip
@@ -3197,7 +3196,7 @@
 	call GetPartyParamLocation
 	pop de
 	xor a ; PARTYMON
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld [MonType], a
 	ld c, NUM_MOVES
 .loop
@@ -3217,7 +3216,7 @@
 	add b
 	ld [de], a
 	inc de
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	inc [hl]
 	pop hl
 	dec c
@@ -3310,7 +3309,7 @@
 	call AddNTimes
 
 GetMthMoveOfCurrentMon: ; f969
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld c, a
 	ld b, 0
 	add hl, bc
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -1,5 +1,7 @@
 ; A library included as part of the Mobile Adapter GB SDK.
 
+charmap "<CR>", $d
+
 INCLUDE "gbhw.asm"
 
 SECTION "Main", ROMX
@@ -72,7 +74,7 @@
 
 Function110030:: ; 110030 (44:4030)
 ; Use the byte at $c988 as a parameter
-; for a jumptable.
+; for a dw.
 ; If [$c988] in {12, 14, 16},
 ; clear [$c835].
 	push de
@@ -89,7 +91,7 @@
 .noreset
 	ld d, $0
 	ld e, a
-	ld hl, .jumptable
+	ld hl, .dw
 	add hl, de
 	ld a, [hli]
 	ld [$c988], a
@@ -112,10 +114,10 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ret ; indirectly jump to the function loaded from the jumptable, which returns to Function3e60.
+	ret ; indirectly jump to the function loaded from the dw, which returns to Function3e60.
 ; 110070 (44:4070)
 
-.jumptable: ; 110070
+.dw: ; 110070
 	dw Function110115
 	dw Function110236
 	dw Function110291
@@ -608,7 +610,7 @@
 ; 110393
 
 Function110393: ; 110393
-	ld c, $ff
+	ld c, rIE % $100
 	ld a, [$ff00+c]
 	or $c
 	ld [$ff00+c], a
@@ -1971,73 +1973,73 @@
 Function110d37: ; 110d37
 	push bc
 	push de
-	ld b, $0
-.asm_110d3b
-	ld a, $27
+	ld b, 0
+.check_under_10k
+	ld a, 10000 / $100
 	cp h
-	jr c, .asm_110d49
-	jr nz, .asm_110d52
-	ld a, $10
+	jr c, .subtract_10k
+	jr nz, .done_10k
+	ld a, 10000 % $100
 	cp l
-	jr z, .asm_110d49
-	jr nc, .asm_110d52
+	jr z, .subtract_10k
+	jr nc, .done_10k
 
-.asm_110d49
+.subtract_10k
 	inc b
 	ld a, b
-	ld bc, $d8f0
+	ld bc, -10000
 	add hl, bc
 	ld b, a
-	jr .asm_110d3b
+	jr .check_under_10k
 
-.asm_110d52
+.done_10k
 	ld a, $30
 	or b
 	ld [de], a
 	inc de
-	ld b, $0
-.asm_110d59
-	ld a, $3
+	ld b, 0
+.check_under_1k
+	ld a, 1000 / $100
 	cp h
-	jr c, .asm_110d67
-	jr nz, .asm_110d70
-	ld a, $e8
+	jr c, .subtract_1k
+	jr nz, .done_1k
+	ld a, 1000 % $100
 	cp l
-	jr z, .asm_110d67
-	jr nc, .asm_110d70
+	jr z, .subtract_1k
+	jr nc, .done_1k
 
-.asm_110d67
+.subtract_1k
 	inc b
 	ld a, b
-	ld bc, $fc18
+	ld bc, -1000
 	add hl, bc
 	ld b, a
-	jr .asm_110d59
+	jr .check_under_1k
 
-.asm_110d70
+.done_1k
 	ld a, $30
 	or b
 	ld [de], a
 	inc de
-	ld b, $0
-.asm_110d77
-	ld a, $0
+	ld b, 0
+.check_under_100
+	ld a, 100 / $100
 	cp h
-	jr nz, .asm_110d83
-	ld a, $64
+	jr nz, .subtract_100
+	ld a, 100 % $100
 	cp l
-	jr z, .asm_110d83
-	jr nc, .asm_110d8c
+	jr z, .subtract_100
+	jr nc, .check_under_10
 
-.asm_110d83
+.subtract_100
 	inc b
 	ld a, b
-	ld bc, $ff9c
+	ld bc, -100
 	add hl, bc
 	ld b, a
-	jr .asm_110d77
+	jr .check_under_100
 
-.asm_110d8c
+.check_under_10
 	ld a, $30
 	or b
 	ld [de], a
@@ -2044,14 +2046,14 @@
 	inc de
 	ld b, $0
 	ld a, l
-.asm_110d94
-	cp $a
-	jr c, .asm_110d9d
-	sub $a
+.subtract_10
+	cp 10
+	jr c, .done_10
+	sub 10
 	inc b
-	jr .asm_110d94
+	jr .subtract_10
 
-.asm_110d9d
+.done_10
 	ld l, a
 	ld a, $30
 	or b
@@ -2064,19 +2066,19 @@
 	ld l, e
 	ld h, d
 	ld b, $5
-.asm_110dac
+.find_first_digit
 	ld a, [hl]
 	cp $30
-	jr nz, .asm_110db7
+	jr nz, .found_first_digit
 	inc hl
 	dec b
-	jr nz, .asm_110dac
-	jr .asm_110dd5
+	jr nz, .find_first_digit
+	jr .done
 
-.asm_110db7
+.found_first_digit
 	ld a, $5
 	cp b
-	jr z, .asm_110dd5
+	jr z, .done
 	sub b
 	ld c, a
 	ld a, [$cb4c]
@@ -2085,23 +2087,23 @@
 	ld [$cb4c], a
 	push hl
 	ld b, $1
-.asm_110dc9
+.penultimate_loop
 	inc b
 	ld a, [hli]
 	cp $d
-	jr nz, .asm_110dc9
+	jr nz, .penultimate_loop
 	pop hl
 	call Function110000
 	pop hl
 	ret
 
-.asm_110dd5
+.done
 	pop bc
-.asm_110dd6
+.last_loop
 	ld a, [de]
 	inc de
 	cp $a
-	jr nz, .asm_110dd6
+	jr nz, .last_loop
 	ret
 ; 110ddd
 
@@ -2697,7 +2699,7 @@
 	dec hl
 
 .asm_1111ee
-	ld bc, rIE
+	ld bc, -1
 .asm_1111f1
 	ld a, [hli]
 	inc bc
@@ -3530,7 +3532,7 @@
 	ret
 ; 1116c5
 
-Function1116c5:: ; 1116c5 (44:56c5)
+_MobileReceive:: ; 1116c5 (44:56c5)
 	ld a, [$c800]
 	rrca
 	jp nc, Function1118bc
@@ -3636,7 +3638,6 @@
 .asm_111778
 	xor a
 	ld [$c800], a
-
 Function11177c: ; 11177c (44:577c)
 	ld hl, $c820
 	ld a, [hld]
@@ -3835,7 +3836,6 @@
 	xor a
 	ld [hli], a
 	inc [hl]
-
 Function1118bc: ; 1118bc (44:58bc)
 	ld hl, $c822
 	res 1, [hl]
@@ -3859,7 +3859,7 @@
 	inc [hl]
 	ret
 
-Function1118de:: ; 1118de (44:58de)
+_Timer:: ; 1118de (44:58de)
 	ld a, [$c80b]
 	cp $4
 	call z, Function111b3c
@@ -4974,31 +4974,31 @@
 Unknown_1120b0:
 	db "RCPT TO:<", 0
 Unknown_1120ba:
-	db "DATA", $d, "\n", 0
+	db "DATA<CR>\n", 0
 Unknown_1120c1:
-	db "QUIT", $d, "\n", 0
+	db "QUIT<CR>\n", 0
 Unknown_1120c8:
 	db "USER ", 0
 Unknown_1120ce:
 	db "PASS ", 0
 Unknown_1120d4:
-	db "STAT", $d, "\n", 0
+	db "STAT<CR>\n", 0
 Unknown_1120db:
-	db "LIST 00000", $d, "\n", 0
+	db "LIST 00000<CR>\n", 0
 Unknown_1120e8:
-	db "RETR 00000", $d, "\n", 0
+	db "RETR 00000<CR>\n", 0
 Unknown_1120f5:
-	db "DELE 00000", $d, "\n", 0
+	db "DELE 00000<CR>\n", 0
 Unknown_112102:
-	db "TOP 00000 0", $d, "\n", 0
+	db "TOP 00000 0<CR>\n", 0
 Unknown_112110:
 	db "GET ", 0
 Unknown_112115:
-	db " HTTP/1.0", $d, "\n", 0
+	db " HTTP/1.0<CR>\n", 0
 Unknown_112121:
 	db "User-Agent: CGB-", 0
 Unknown_112132:
-	db $d, "\n", $d, "\n", 0
+	db "<CR>\n<CR>\n", 0
 Unknown_112137:
 	db "POST ", 0
 Unknown_11213d:
--- a/macros.asm
+++ b/macros.asm
@@ -16,7 +16,6 @@
 INCLUDE "macros/trainer.asm"
 INCLUDE "macros/trade_anim.asm"
 
-
 RGB: MACRO
 	dw ((\3) << 10) + ((\2) << 5) + (\1)
 	ENDM
@@ -93,11 +92,11 @@
 	ENDM
 
 lb: MACRO ; r, hi, lo
-	ld \1, (\2) << 8 + (\3)
+	ld \1, (\2 & $ff) << 8 + (\3 & $ff)
 	ENDM
 
 ln: MACRO ; r, hi, lo
-	ld \1, (\2) << 4 + (\3)
+	ld \1, (\2 & $f) << 4 + (\3 & $f)
 	ENDM
 
 bccoord equs "coord bc,"
@@ -213,17 +212,26 @@
 palettes EQUS "* 8"
 
 ldpixel: MACRO
-if _NARG == 5
+if _NARG >= 5
 	lb \1, \2 * 8 + \4, \3 * 8 + \5
 else
 	lb \1, \2 * 8, \3 * 8
 endc
-	endm
+endm
 
 depixel EQUS "ldpixel de,"
+bcpixel EQUS "ldpixel bc,"
 
+dbpixel: MACRO
+if _NARG >= 4
+	db \1 * 8 + \3, \2 * 8 + \4
+else
+	db \1 * 8, \2 * 8
+endc
+endm
+
 bgcoord: MACRO
-IF _NARG == 4
+IF _NARG >= 4
 	ld \1, \3 * $20 + \2 + \4
 ELSE
 	ld \1, \3 * $20 + \2 + VBGMap0
@@ -234,3 +242,30 @@
 debgcoord EQUS "bgcoord de,"
 bcbgcoord EQUS "bgcoord bc,"
 bgrows EQUS "* $20"
+
+palred EQUS "$0400 *"
+palgreen EQUS "$0020 *"
+palblue EQUS "$0001 *"
+
+dsprite: MACRO
+; conditional segment is there because not every instance of
+; this macro is directly OAM
+if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette
+	db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & 7)
+else
+	db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
+endc
+endm
+
+jumptable: MACRO
+	ld a, [\2]
+	ld e, a
+	ld d, 0
+	ld hl, \1
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+endm
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -9,8 +9,7 @@
 	enum farscall_command
 farscall: macro
 	db farscall_command
-	db BANK(\1)
-	dw \1
+	dba \1
 	endm
 
 	enum ptcall_command
@@ -28,8 +27,7 @@
 	enum farjump_command
 farjump: macro
 	db farjump_command
-	db BANK(\1)
-	dw \1
+	dba \1
 	endm
 
 	enum ptjump_command
@@ -93,8 +91,7 @@
 	enum callasm_command
 callasm: macro
 	db callasm_command
-	db BANK(\1)
-	dw \1
+	dba \1
 	endm
 
 
@@ -106,8 +103,7 @@
 
 add_special: MACRO
 \1Special::
-	db BANK(\1)
-	dw \1
+	dba \1
 ENDM
 
 
@@ -480,9 +476,9 @@
 	db pocketisfull_command
 	endm
 
-	enum loadfont_command
-loadfont: macro
-	db loadfont_command
+	enum opentext_command
+opentext: macro
+	db opentext_command
 	endm
 
 	enum refreshscreen_command
@@ -491,9 +487,9 @@
 	db \1 ; dummy
 	endm
 
-	enum loadmovesprites_command
-loadmovesprites: macro
-	db loadmovesprites_command
+	enum closetext_command
+closetext: macro
+	db closetext_command
 	endm
 
 	enum loadbytec2cf_command
@@ -505,8 +501,7 @@
 	enum farwritetext_command
 farwritetext: macro
 	db farwritetext_command
-	db BANK(\1)
-	dw \1
+	dba \1
 	endm
 
 	enum writetext_command
@@ -533,9 +528,9 @@
 	dw \1 ; data
 	endm
 
-	enum writebackup_command
-writebackup: macro
-	db writebackup_command
+	enum closewindow_command
+closewindow: macro
+	db closewindow_command
 	endm
 
 	enum jumptextfaceplayer_command
@@ -548,8 +543,7 @@
 	enum farjumptext_command
 farjumptext: macro
 	db farjumptext_command
-	db BANK(\1)
-	dw \1
+	dba \1
 	endm
 ; ENDC
 
@@ -559,14 +553,14 @@
 	dw \1 ; text_pointer
 	endm
 
-	enum closetext_command
-closetext: macro
-	db closetext_command
+	enum waitbutton_command
+waitbutton: macro
+	db waitbutton_command
 	endm
 
-	enum keeptextopen_command
-keeptextopen: macro
-	db keeptextopen_command
+	enum buttonsound_command
+buttonsound: macro
+	db buttonsound_command
 	endm
 
 	enum pokepic_command
@@ -575,19 +569,19 @@
 	db \1 ; pokemon
 	endm
 
-	enum pokepicyesorno_command
-pokepicyesorno: macro
-	db pokepicyesorno_command
+	enum closepokepic_command
+closepokepic: macro
+	db closepokepic_command
 	endm
 
-	enum interpretmenu_command
-interpretmenu: macro
-	db interpretmenu_command
+	enum _2dmenu_command
+_2dmenu: macro
+	db _2dmenu_command
 	endm
 
-	enum interpretmenu2_command
-interpretmenu2: macro
-	db interpretmenu2_command
+	enum verticalmenu_command
+verticalmenu: macro
+	db verticalmenu_command
 	endm
 
 	enum loadpikachudata_command
@@ -595,19 +589,19 @@
 	db loadpikachudata_command
 	endm
 
-	enum battlecheck_command
-battlecheck: macro
-	db battlecheck_command
+	enum randomwildmon_command
+randomwildmon: macro
+	db randomwildmon_command
 	endm
 
-	enum loadtrainerdata_command
-loadtrainerdata: macro
-	db loadtrainerdata_command
+	enum loadmemtrainer_command
+loadmemtrainer: macro
+	db loadmemtrainer_command
 	endm
 
-	enum loadpokedata_command
-loadpokedata: macro
-	db loadpokedata_command
+	enum loadwildmon_command
+loadwildmon: macro
+	db loadwildmon_command
 	db \1 ; pokemon
 	db \2 ; level
 	endm
@@ -624,9 +618,9 @@
 	db startbattle_command
 	endm
 
-	enum returnafterbattle_command
-returnafterbattle: macro
-	db returnafterbattle_command
+	enum reloadmapafterbattle_command
+reloadmapafterbattle: macro
+	db reloadmapafterbattle_command
 	endm
 
 	enum catchtutorial_command
@@ -641,9 +635,9 @@
 	db \1 ; which_text
 	endm
 
-	enum trainerstatus_command
-trainerstatus: macro
-	db trainerstatus_command
+	enum trainerflagaction_command
+trainerflagaction: macro
+	db trainerflagaction_command
 	db \1 ; action
 	endm
 
@@ -659,14 +653,14 @@
 	db scripttalkafter_command
 	endm
 
-	enum talkaftercancel_command
-talkaftercancel: macro
-	db talkaftercancel_command
+	enum end_if_just_battled_command
+end_if_just_battled: macro
+	db end_if_just_battled_command
 	endm
 
-	enum talkaftercheck_command
-talkaftercheck: macro
-	db talkaftercheck_command
+	enum check_just_battled_command
+check_just_battled: macro
+	db check_just_battled_command
 	endm
 
 	enum setlasttalked_command
@@ -822,9 +816,9 @@
 	dw \1 ; music_pointer
 	endm
 
-	enum playrammusic_command
-playrammusic: macro
-	db playrammusic_command
+	enum encountermusic_command
+encountermusic: macro
+	db encountermusic_command
 	endm
 
 	enum musicfadeout_command
@@ -839,9 +833,9 @@
 	db playmapmusic_command
 	endm
 
-	enum reloadmapmusic_command
-reloadmapmusic: macro
-	db reloadmapmusic_command
+	enum dontrestartmapmusic_command
+dontrestartmapmusic: macro
+	db dontrestartmapmusic_command
 	endm
 
 	enum cry_command
@@ -856,9 +850,9 @@
 	dw \1 ; sound_pointer
 	endm
 
-	enum waitbutton_command
-waitbutton: macro
-	db waitbutton_command
+	enum waitsfx_command
+waitsfx: macro
+	db waitsfx_command
 	endm
 
 	enum warpsound_command
@@ -928,9 +922,9 @@
 	db \1 ; which_method
 	endm
 
-	enum resetfuncs_command
-resetfuncs: macro
-	db resetfuncs_command
+	enum end_all_command
+end_all: macro
+	db end_all_command
 	endm
 
 	enum pokemart_command
@@ -1010,9 +1004,9 @@
 	db \2 ; var
 	endm
 
-	enum loadwilddata_command
-loadwilddata: macro
-	db loadwilddata_command
+	enum swarm_command
+swarm: macro
+	db swarm_command
 	db \1 ; flag
 	map \2 ; map
 	endm
@@ -1042,9 +1036,9 @@
 	db \1 ; memory
 	endm
 
-	enum displaylocation_command
-displaylocation: macro
-	db displaylocation_command
+	enum landmarktotext_command
+landmarktotext: macro
+	db landmarktotext_command
 	db \1 ; id
 	db \2 ; memory
 	endm
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -170,3 +170,16 @@
 	db \1, \2
 	map \3
 ENDM
+
+itemball: MACRO
+if _NARG == 2
+	db \1, \2
+else
+	db \1, 1
+endc
+endm
+
+stonetable: MACRO
+	db \1, \2
+	dw \3
+endm
--- a/macros/move_anim.asm
+++ b/macros/move_anim.asm
@@ -11,9 +11,9 @@
 anim_obj: macro
 	db anim_obj_command
 	db \1 ; obj
-	db \2 ; x
-	db \3 ; y
-	db \4 ; param
+	db (\2 << 3) + \3 ; x
+	db (\4 << 3) + \5 ; y
+	db \6 ; param
 	endm
 
 	enum anim_1gfx_command ; d1
@@ -113,8 +113,8 @@
 	enum anim_sound_command ; e0
 anim_sound: macro
 	db anim_sound_command
-	db \1 ; tracks
-	db \2 ; id
+	db (\1 << 2) | \2 ; duration, tracks
+	db \3 ; id
 	endm
 
 	enum anim_cry_command ; e1
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -1,3 +1,4 @@
+
 	enum_start
 
 	enum movement_turn_head_down
@@ -20,24 +21,24 @@
 	db movement_turn_head_right ; $03
 	endm
 
-	enum movement_half_step_down
-half_step_down: macro
-	db movement_half_step_down ; $04
+	enum movement_turn_step_down
+turn_step_down: macro
+	db movement_turn_step_down ; $04
 	endm
 
-	enum movement_half_step_up
-half_step_up: macro
-	db movement_half_step_up ; $05
+	enum movement_turn_step_up
+turn_step_up: macro
+	db movement_turn_step_up ; $05
 	endm
 
-	enum movement_half_step_left
-half_step_left: macro
-	db movement_half_step_left ; $06
+	enum movement_turn_step_left
+turn_step_left: macro
+	db movement_turn_step_left ; $06
 	endm
 
-	enum movement_half_step_right
-half_step_right: macro
-	db movement_half_step_right ; $07
+	enum movement_turn_step_right
+turn_step_right: macro
+	db movement_turn_step_right ; $07
 	endm
 
 	enum movement_slow_step_down
@@ -367,7 +368,10 @@
 	db movement_step_loop ; $4a
 	endm
 
-__enum__ = $4c
+	enum movement_step_4b
+step_4b: macro
+	db movement_step_4b ; $4b
+	endm
 
 	enum movement_teleport_from
 teleport_from: macro
@@ -432,4 +436,9 @@
 return_dig: macro
 	db movement_return_dig ; $58
 	db \1
+	endm
+
+	enum movement_skyfall_top
+skyfall_top: macro
+	db movement_skyfall_top ; $59
 	endm
--- a/macros/sound.asm
+++ b/macros/sound.asm
@@ -3,39 +3,34 @@
 	ENDM
 
 sound: macro
-	db \1 ; duration
-	db \2 ; intensity
-	dw \3 ; frequency
+	note \1, \2
+	db \3 ; intensity
+	dw \4 ; frequency
 	endm
 
 noise: macro
-	db \1 ; duration
-	db \2 ; intensity
-	db \3 ; frequency
+	note \1, \2 ; duration
+	db \3 ; intensity
+	db \4 ; frequency
 	endm
 
-; pitch
-__ EQU 0
-C_ EQU 1
-C# EQU 2
-D_ EQU 3
-D# EQU 4
-E_ EQU 5
-F_ EQU 6
-F# EQU 7
-G_ EQU 8
-G# EQU 9
-A_ EQU 10
-A# EQU 11
-B_ EQU 12
+musicheader: macro
+	; number of tracks, ??, address
+	dbw ((\1 - 1) << 6) + (\2 - 1), \3
+	endm
 
+cry_header: macro
+	dw \1, \2, \3
+	endm
 
+	enum_start $d8
+	enum notetype_cmd
 octave: macro
-	db $d8 - (\1)
+	db notetype_cmd - (\1)
 	endm
 
 notetype: macro
-	db $d8
+	db notetype_cmd
 	db \1 ; note_length
 	if _NARG >= 2
 	db \2 ; intensity
@@ -42,188 +37,228 @@
 	endc
 	endm
 
+	enum forceoctave_cmd
 forceoctave: macro
-	db $d9
+	db forceoctave_cmd
 	db \1 ; octave
 	endm
 
+	enum tempo_cmd
 tempo: macro
-	db $da
+	db tempo_cmd
 	bigdw \1 ; tempo
 	endm
 
+	enum dutycycle_cmd
 dutycycle: macro
-	db $db
+	db dutycycle_cmd
 	db \1 ; duty_cycle
 	endm
 
+	enum intensity_cmd
 intensity: macro
-	db $dc
+	db intensity_cmd
 	db \1 ; intensity
 	endm
 
+	enum soundinput_cmd
 soundinput: macro
-	db $dd
+	db soundinput_cmd
 	db \1 ; input
 	endm
 
+	enum unknownmusic0xde_cmd
 unknownmusic0xde: macro
-	db $de
+	db unknownmusic0xde_cmd
 	db \1 ; unknown
 	endm
 
+	enum togglesfx_cmd
 togglesfx: macro
-	db $df
+	db togglesfx_cmd
 	endm
 
+	enum unknownmusic0xe0_cmd
 unknownmusic0xe0: macro
-	db $e0
+	db unknownmusic0xe0_cmd
 	db \1 ; unknown
-	db \2 ; unknown
+	; db \2 ; unknown
+	dn \2, \3 ; octave, pitch
 	endm
 
+	enum vibrato_cmd
 vibrato: macro
-	db $e1
+	db vibrato_cmd
 	db \1 ; delay
 	db \2 ; extent
 	endm
 
+	enum unknownmusic0xe2_cmd
 unknownmusic0xe2: macro
-	db $e2
+	db unknownmusic0xe2_cmd
 	db \1 ; unknown
 	endm
 
+	enum togglenoise_cmd
 togglenoise: macro
-	db $e3
+	db togglenoise_cmd
 	db \1 ; id
 	endm
 
+	enum panning_cmd
 panning: macro
-	db $e4
+	db panning_cmd
 	db \1 ; tracks
 	endm
 
+	enum volume_cmd
 volume: macro
-	db $e5
+	db volume_cmd
 	db \1 ; volume
 	endm
 
+	enum tone_cmd
 tone: macro
-	db $e6
+	db tone_cmd
 	bigdw \1 ; tone
 	endm
 
+	enum unknownmusic0xe7_cmd
 unknownmusic0xe7: macro
-	db $e7
+	db unknownmusic0xe7_cmd
 	db \1 ; unknown
 	endm
 
+	enum unknownmusic0xe8_cmd
 unknownmusic0xe8: macro
-	db $e8
+	db unknownmusic0xe8_cmd
 	db \1 ; unknown
 	endm
 
-globaltempo: macro
-	db $e9
+	enum tempo_relative_cmd
+tempo_relative: macro
+	db tempo_relative_cmd
 	bigdw \1 ; value
 	endm
 
+	enum restartchannel_cmd
 restartchannel: macro
-	db $ea
+	db restartchannel_cmd
 	dw \1 ; address
 	endm
 
+	enum newsong_cmd
 newsong: macro
-	db $eb
+	db newsong_cmd
 	bigdw \1 ; id
 	endm
 
+	enum sfxpriorityon_cmd
 sfxpriorityon: macro
-	db $ec
+	db sfxpriorityon_cmd
 	endm
 
+	enum sfxpriorityoff_cmd
 sfxpriorityoff: macro
-	db $ed
+	db sfxpriorityoff_cmd
 	endm
 
+	enum unknownmusic0xee_cmd
 unknownmusic0xee: macro
-	db $ee
+	db unknownmusic0xee_cmd
 	dw \1 ; address
 	endm
 
+	enum stereopanning_cmd
 stereopanning: macro
-	db $ef
+	db stereopanning_cmd
 	db \1 ; tracks
 	endm
 
+	enum sfxtogglenoise_cmd
 sfxtogglenoise: macro
-	db $f0
+	db sfxtogglenoise_cmd
 	db \1 ; id
 	endm
 
+	enum music0xf1_cmd
 music0xf1: macro
-	db $f1
+	db music0xf1_cmd
 	endm
 
+	enum music0xf2_cmd
 music0xf2: macro
-	db $f2
+	db music0xf2_cmd
 	endm
 
+	enum music0xf3_cmd
 music0xf3: macro
-	db $f3
+	db music0xf3_cmd
 	endm
 
+	enum music0xf4_cmd
 music0xf4: macro
-	db $f4
+	db music0xf4_cmd
 	endm
 
+	enum music0xf5_cmd
 music0xf5: macro
-	db $f5
+	db music0xf5_cmd
 	endm
 
+	enum music0xf6_cmd
 music0xf6: macro
-	db $f6
+	db music0xf6_cmd
 	endm
 
+	enum music0xf7_cmd
 music0xf7: macro
-	db $f7
+	db music0xf7_cmd
 	endm
 
+	enum music0xf8_cmd
 music0xf8: macro
-	db $f8
+	db music0xf8_cmd
 	endm
 
+	enum unknownmusic0xf9_cmd
 unknownmusic0xf9: macro
-	db $f9
+	db unknownmusic0xf9_cmd
 	endm
 
+	enum setcondition_cmd
 setcondition: macro
-	db $fa
+	db setcondition_cmd
 	db \1 ; condition
 	endm
 
+	enum jumpif_cmd
 jumpif: macro
-	db $fb
+	db jumpif_cmd
 	db \1 ; condition
 	dw \2 ; address
 	endm
 
+	enum jumpchannel_cmd
 jumpchannel: macro
-	db $fc
+	db jumpchannel_cmd
 	dw \1 ; address
 	endm
 
+	enum loopchannel_cmd
 loopchannel: macro
-	db $fd
+	db loopchannel_cmd
 	db \1 ; count
 	dw \2 ; address
 	endm
 
+	enum callchannel_cmd
 callchannel: macro
-	db $fe
+	db callchannel_cmd
 	dw \1 ; address
 	endm
 
+	enum endchannel_cmd
 endchannel: macro
-	db $ff
+	db endchannel_cmd
 	endm
--- a/macros/trade_anim.asm
+++ b/macros/trade_anim.asm
@@ -1,22 +1,22 @@
 	enum_start
 	enum tradeanim_next_command
 tradeanim_next: macro
-	db tradeanim_next_command
+	db tradeanim_next_command ; 00
 endm
 
 	enum tradeanim_show_givemon_data_command
 tradeanim_show_givemon_data: macro
-	db tradeanim_show_givemon_data_command
+	db tradeanim_show_givemon_data_command ; 01
 endm
 
 	enum tradeanim_show_getmon_data_command
 tradeanim_show_getmon_data: macro
-	db tradeanim_show_getmon_data_command
+	db tradeanim_show_getmon_data_command ; 02
 endm
 
 	enum tradeanim_enter_link_tube_command
 tradeanim_enter_link_tube: macro
-	db tradeanim_enter_link_tube_command
+	db tradeanim_enter_link_tube_command ; 03
 endm
 
 __enum__ set $5
@@ -23,12 +23,12 @@
 
 	enum tradeanim_exit_link_tube_command
 tradeanim_exit_link_tube: macro
-	db tradeanim_exit_link_tube_command
+	db tradeanim_exit_link_tube_command ; 05
 endm
 
 	enum tradeanim_tube_to_ot_command
 tradeanim_tube_to_ot: macro
-	db tradeanim_tube_to_ot_command
+	db tradeanim_tube_to_ot_command ; 06
 endm
 
 __enum__ set $e
@@ -35,7 +35,7 @@
 
 	enum tradeanim_tube_to_player_command
 tradeanim_tube_to_player: macro
-	db tradeanim_tube_to_player_command
+	db tradeanim_tube_to_player_command ; 0e
 endm
 
 __enum__ set $16
@@ -42,52 +42,52 @@
 
 	enum tradeanim_sent_to_ot_text_command
 tradeanim_sent_to_ot_text: macro
-	db tradeanim_sent_to_ot_text_command
+	db tradeanim_sent_to_ot_text_command ; 16
 endm
 
 	enum tradeanim_ot_bids_farewell_command
 tradeanim_ot_bids_farewell: macro
-	db tradeanim_ot_bids_farewell_command
+	db tradeanim_ot_bids_farewell_command ; 17
 endm
 
 	enum tradeanim_take_care_of_text_command
 tradeanim_take_care_of_text: macro
-	db tradeanim_take_care_of_text_command
+	db tradeanim_take_care_of_text_command ; 18
 endm
 
 	enum tradeanim_ot_sends_text_1_command
 tradeanim_ot_sends_text_1: macro
-	db tradeanim_ot_sends_text_1_command
+	db tradeanim_ot_sends_text_1_command ; 19
 endm
 
 	enum tradeanim_ot_sends_text_2_command
 tradeanim_ot_sends_text_2: macro
-	db tradeanim_ot_sends_text_2_command
+	db tradeanim_ot_sends_text_2_command ; 1a
 endm
 
 	enum tradeanim_setup_givemon_scroll_command
 tradeanim_setup_givemon_scroll: macro
-	db tradeanim_setup_givemon_scroll_command
+	db tradeanim_setup_givemon_scroll_command ; 1b
 endm
 
 	enum tradeanim_do_givemon_scroll_command
 tradeanim_do_givemon_scroll: macro
-	db tradeanim_do_givemon_scroll_command
+	db tradeanim_do_givemon_scroll_command ; 1c
 endm
 
 	enum tradeanim_1d_command
 tradeanim_1d: macro
-	db tradeanim_1d_command
+	db tradeanim_1d_command ; 1d
 endm
 
 	enum tradeanim_1e_command
 tradeanim_1e: macro
-	db tradeanim_1e_command
+	db tradeanim_1e_command ; 1e
 endm
 
 	enum tradeanim_scroll_out_right_command
 tradeanim_scroll_out_right: macro
-	db tradeanim_scroll_out_right_command
+	db tradeanim_scroll_out_right_command ; 1f
 endm
 
 __enum__ set $21
@@ -94,27 +94,27 @@
 
 	enum tradeanim_wait_80_command
 tradeanim_wait_80: macro
-	db tradeanim_wait_80_command
+	db tradeanim_wait_80_command ; 21
 endm
 
 	enum tradeanim_wait_40_command
 tradeanim_wait_40: macro
-	db tradeanim_wait_40_command
+	db tradeanim_wait_40_command ; 22
 endm
 
 	enum tradeanim_rocking_ball_command
 tradeanim_rocking_ball: macro
-	db tradeanim_rocking_ball_command
+	db tradeanim_rocking_ball_command ; 23
 endm
 
 	enum tradeanim_drop_ball_command
 tradeanim_drop_ball: macro
-	db tradeanim_drop_ball_command
+	db tradeanim_drop_ball_command ; 24
 endm
 
 	enum tradeanim_wait_anim_command
 tradeanim_wait_anim: macro
-	db tradeanim_wait_anim_command
+	db tradeanim_wait_anim_command ; 25
 endm
 
 __enum__ set $27
@@ -121,46 +121,133 @@
 
 	enum tradeanim_poof_command
 tradeanim_poof: macro
-	db tradeanim_poof_command
+	db tradeanim_poof_command ; 27
 endm
 
 	enum tradeanim_bulge_through_tube_command
 tradeanim_bulge_through_tube: macro
-	db tradeanim_bulge_through_tube_command
+	db tradeanim_bulge_through_tube_command ; 28
 endm
 
 	enum tradeanim_give_trademon_sfx_command
 tradeanim_give_trademon_sfx: macro
-	db tradeanim_give_trademon_sfx_command
+	db tradeanim_give_trademon_sfx_command ; 29
 endm
 
 	enum tradeanim_get_trademon_sfx_command
 tradeanim_get_trademon_sfx: macro
-	db tradeanim_get_trademon_sfx_command
+	db tradeanim_get_trademon_sfx_command ; 2a
 endm
 
 	enum tradeanim_end_command
 tradeanim_end: macro
-	db tradeanim_end_command
+	db tradeanim_end_command ; 2b
 endm
 
 	enum tradeanim_animate_frontpic_command
 tradeanim_animate_frontpic: macro
-	db tradeanim_animate_frontpic_command
+	db tradeanim_animate_frontpic_command ; 2c
 endm
 
 	enum tradeanim_wait_96_command
 tradeanim_wait_96: macro
-	db tradeanim_wait_96_command
+	db tradeanim_wait_96_command ; 2d
 endm
 
 	enum tradeanim_wait_80_if_ot_egg_command
 tradeanim_wait_80_if_ot_egg: macro
-	db tradeanim_wait_80_if_ot_egg_command
+	db tradeanim_wait_80_if_ot_egg_command ; 2e
 endm
 
 	enum tradeanim_wait_180_if_ot_egg_command
 tradeanim_wait_180_if_ot_egg: macro
-	db tradeanim_wait_180_if_ot_egg_command
+	db tradeanim_wait_180_if_ot_egg_command ; 2f
 endm
 
+
+; Mobile
+	enum_start 1
+	
+	enum mobiletradeanim_showgivemon_command
+mobiletradeanim_showgivemon: macro
+	db mobiletradeanim_showgivemon_command ; 01
+endm
+
+	enum mobiletradeanim_02_command
+mobiletradeanim_02: macro
+	db mobiletradeanim_02_command ; 02
+endm
+
+	enum mobiletradeanim_sendmon_command
+mobiletradeanim_sendmon: macro
+	db mobiletradeanim_sendmon_command ; 03
+endm
+
+__enum__ set $05
+
+	enum mobiletradeanim_05_command
+mobiletradeanim_05: macro
+	db mobiletradeanim_05_command ; 05
+endm
+
+	enum mobiletradeanim_06_command
+mobiletradeanim_06: macro
+	db mobiletradeanim_06_command ; 06
+endm
+
+	enum mobiletradeanim_07_command
+mobiletradeanim_07: macro
+	db mobiletradeanim_07_command ; 07
+endm
+
+	enum mobiletradeanim_receivemon_command
+mobiletradeanim_receivemon: macro
+	db mobiletradeanim_receivemon_command ; 08
+endm
+
+__enum__ set $0b
+
+	enum mobiletradeanim_showgetmon_command
+mobiletradeanim_showgetmon: macro
+	db mobiletradeanim_showgetmon_command ; 0b
+endm
+
+	enum mobiletradeanim_end_command
+mobiletradeanim_end: macro
+	db mobiletradeanim_end_command ; 0c
+endm
+
+	enum mobiletradeanim_showgtsgivemon_command
+mobiletradeanim_showgtsgivemon: macro
+	db mobiletradeanim_showgtsgivemon_command ; 0d
+endm
+
+	enum mobiletradeanim_showgtsgetmon_command
+mobiletradeanim_showgtsgetmon: macro
+	db mobiletradeanim_showgtsgetmon_command ; 0e
+endm
+
+	enum mobiletradeanim_0f_command
+mobiletradeanim_0f: macro
+	db mobiletradeanim_0f_command ; 0f
+endm
+
+	enum mobiletradeanim_10_command
+mobiletradeanim_10: macro
+	db mobiletradeanim_10_command ; 10
+endm
+
+	enum mobiletradeanim_11_command
+mobiletradeanim_11: macro
+	db mobiletradeanim_11_command ; 11
+endm
+
+	enum mobiletradeanim_12_command
+mobiletradeanim_12: macro
+	db mobiletradeanim_12_command ; 12
+endm
+
+	enum mobiletradeanim_showoddegg_command
+mobiletradeanim_showoddegg: macro
+	db mobiletradeanim_showoddegg_command ; 13
+endm
--- a/main.asm
+++ b/main.asm
@@ -1,9 +1,7 @@
 INCLUDE "includes.asm"
 
-
 SECTION "bank1", ROMX, BANK[$1]
 
-
 PlaceWaitingText:: ; 4000
 	hlcoord 3, 10
 	ld b, 1
@@ -45,9 +43,9 @@
 ; 403f
 
 PushOAM: ; 403f
-	ld a, Sprites >> 8
+	ld a, Sprites / $100
 	ld [rDMA], a
-	ld a, $28
+	ld a, 40
 .loop
 	dec a
 	jr nz, .loop
@@ -55,7 +53,6 @@
 PushOAMEnd
 ; 4049
 
-
 INCLUDE "engine/map_objects.asm"
 
 INCLUDE "engine/intro_menu.asm"
@@ -71,7 +68,7 @@
 	push af
 	xor a
 	ld [hBGMapMode], a
-	call Function6473
+	call .Function6473
 
 	pop af
 	ld [hBGMapMode], a
@@ -82,18 +79,18 @@
 	ret
 ; 6473
 
-Function6473: ; 6473
+.Function6473
 	xor a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld [hBGMapMode], a
 	ld a, $90
 	ld [hWY], a
 	call OverworldTextModeSwitch
 	ld a, VBGMap1 / $100
-	call Function64b9
+	call .Function64b9
 	call Function2e20
-	callba Function49409
-	callba Function96a4
+	callba LoadOW_BGPal7
+	callba ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	xor a
@@ -101,7 +98,7 @@
 	ld [hWY], a
 	callba Function64db ; no need to farcall
 	ld a, VBGMap0 / $100
-	call Function64b9
+	call .Function64b9
 	xor a
 	ld [wBGMapAnchor], a
 	ld a, VBGMap0 / $100
@@ -113,7 +110,7 @@
 	ret
 ; 64b9
 
-Function64b9: ; 64b9
+.Function64b9: ; 64b9
 	ld [hBGMapAddress + 1], a
 	xor a
 	ld [hBGMapAddress], a
@@ -126,14 +123,13 @@
 	ld a, $1
 	ld [hOAMUpdate], a
 
-	call Function64cd
+	call .Function64cd
 
 	pop af
 	ld [hOAMUpdate], a
 	ret
-; 64cd
 
-Function64cd: ; 64cd
+.Function64cd
 	call LoadFontsExtra
 	ld a, $90
 	ld [hWY], a
@@ -149,12 +145,12 @@
 	ld [rSVBK], a
 
 	ld a, $60
-	ld hl, w6_d000
-	lb bc, 4, 0
+	ld hl, wDecompressScratch
+	ld bc, wBackupAttrMap - wDecompressScratch
 	call ByteFill
-	ld a, w6_d000 / $100
+	ld a, wDecompressScratch / $100
 	ld [rHDMA1], a
-	ld a, w6_d000 % $100
+	ld a, wDecompressScratch % $100
 	ld [rHDMA2], a
 	ld a, (VBGMap0 % $8000) / $100
 	ld [rHDMA3], a
@@ -169,265 +165,8 @@
 	ret
 ; 6508
 
-LearnMove: ; 6508
-	call LoadTileMapToTempTileMap
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld hl, StringBuffer1
-	ld de, wd050_MonNick
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
+INCLUDE "engine/learn.asm"
 
-.loop
-	ld hl, PartyMon1Moves
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld b, NUM_MOVES
-; Get the first empty move slot.  This routine also serves to
-; determine whether the Pokemon learning the moves already has
-; all four slots occupied, in which case one would need to be
-; deleted.
-.next
-	ld a, [hl]
-	and a
-	jr z, .learn
-	inc hl
-	dec b
-	jr nz, .next
-; If we're here, we enter the routine for forgetting a move
-; to make room for the new move we're trying to learn.
-	push de
-	call ForgetMove
-	pop de
-	jp c, .cancel
-
-	push hl
-	push de
-	ld [wd265], a
-
-	ld b, a
-	ld a, [wBattleMode]
-	and a
-	jr z, .not_disabled
-	ld a, [DisabledMove]
-	cp b
-	jr nz, .not_disabled
-	xor a
-	ld [DisabledMove], a
-	ld [PlayerDisableCount], a
-.not_disabled
-
-	call GetMoveName
-	ld hl, UnknownText_0x6684 ; 1, 2 and…
-	call PrintText
-	pop de
-	pop hl
-
-.learn
-	ld a, [wd262]
-	ld [hl], a
-	ld bc, MON_PP - MON_MOVES
-	add hl, bc
-
-	push hl
-	push de
-	dec a
-	ld hl, Moves + MOVE_PP
-	ld bc, MOVE_LENGTH
-	call AddNTimes
-	ld a, BANK(Moves)
-	call GetFarByte
-	pop de
-	pop hl
-
-	ld [hl], a
-
-	ld a, [wBattleMode]
-	and a
-	jp z, .learned
-
-	ld a, [CurPartyMon]
-	ld b, a
-	ld a, [CurBattleMon]
-	cp b
-	jp nz, .learned
-
-	ld a, [PlayerSubStatus5]
-	bit SUBSTATUS_TRANSFORMED, a
-	jp nz, .learned
-
-	ld h, d
-	ld l, e
-	ld de, BattleMonMoves
-	ld bc, NUM_MOVES
-	call CopyBytes
-	ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES)
-	add hl, bc
-	ld de, BattleMonPP
-	ld bc, NUM_MOVES
-	call CopyBytes
-	jp .learned
-
-.cancel
-	ld hl, UnknownText_0x6675 ; Stop learning <MOVE>?
-	call PrintText
-	call YesNoBox
-	jp c, .loop
-
-	ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>.
-	call PrintText
-	ld b, 0
-	ret
-
-.learned
-	ld hl, UnknownText_0x666b ; <MON> learned <MOVE>!
-	call PrintText
-	ld b, 1
-	ret
-; 65d3
-
-ForgetMove: ; 65d3
-	push hl
-	ld hl, UnknownText_0x667f
-	call PrintText
-	call YesNoBox
-	pop hl
-	ret c
-	ld bc, -NUM_MOVES
-	add hl, bc
-	push hl
-	ld de, wListMoves_MoveIndicesBuffer
-	ld bc, NUM_MOVES
-	call CopyBytes
-	pop hl
-.loop
-	push hl
-	ld hl, UnknownText_0x6670
-	call PrintText
-	hlcoord 5, 2
-	ld b, NUM_MOVES * 2
-	ld c, MOVE_NAME_LENGTH
-	call TextBox
-	hlcoord 5 + 2, 2 + 2
-	ld a, SCREEN_WIDTH * 2
-	ld [Buffer1], a
-	predef ListMoves
-	; wMenuData3
-	ld a, $4
-	ld [wcfa1], a
-	ld a, $6
-	ld [wcfa2], a
-	ld a, [wd0eb]
-	inc a
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld [MenuSelection2], a
-	ld [wcfaa], a
-	ld a, $3
-	ld [wcfa8], a
-	ld a, $20
-	ld [wcfa5], a
-	xor a
-	ld [wcfa6], a
-	ld a, $20
-	ld [wcfa7], a
-	call Function1bc9
-	push af
-	call Call_LoadTempTileMapToTileMap
-	pop af
-	pop hl
-	bit 1, a
-	jr nz, .cancel
-	push hl
-	ld a, [MenuSelection2]
-	dec a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [hl]
-	push af
-	push bc
-	call IsHMMove
-	pop bc
-	pop de
-	ld a, d
-	jr c, .hmmove
-	pop hl
-	add hl, bc
-	and a
-	ret
-
-.hmmove
-	ld hl, UnknownText_0x669a
-	call PrintText
-	pop hl
-	jr .loop
-
-.cancel
-	scf
-	ret
-; 666b
-
-UnknownText_0x666b: ; 666b
-; <MON> learned <MOVE>!
-	text_jump UnknownText_0x1c5660
-	db "@"
-; 6670
-
-UnknownText_0x6670: ; 6670
-; Which move should be forgotten?
-	text_jump UnknownText_0x1c5678
-	db "@"
-; 6675
-
-UnknownText_0x6675: ; 6675
-; Stop learning <MOVE>?
-	text_jump UnknownText_0x1c5699
-	db "@"
-; 667a
-
-UnknownText_0x667a: ; 667a
-; <MON> did not learn <MOVE>.
-	text_jump UnknownText_0x1c56af
-	db "@"
-; 667f
-
-UnknownText_0x667f: ; 667f
-; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
-; four moves. Delete an older move to make room for <MOVE>?
-	text_jump UnknownText_0x1c56c9
-	db "@"
-; 6684
-
-UnknownText_0x6684: ; 6684
-	text_jump UnknownText_0x1c5740 ; 1, 2 and…
-	start_asm
-	push de
-	ld de, SFX_SWITCH_POKEMON
-	call PlaySFX
-	pop de
-	ld hl, UnknownText_0x6695
-	ret
-; 6695
-
-UnknownText_0x6695: ; 6695
-; Poof! <MON> forgot <MOVE>. And…
-	text_jump UnknownText_0x1c574e
-	db "@"
-; 669a
-
-UnknownText_0x669a: ; 669a
-; HM moves can't be forgotten now.
-	text_jump UnknownText_0x1c5772
-	db "@"
-; 669f
-
-
 CheckNickErrors:: ; 669f
 ; error-check monster nick before use
 ; must be a peace offering to gamesharkers
@@ -494,794 +233,24 @@
 .textcommands ; 66cf
 ; table defining which characters are actually text commands
 ; format:
-	;   ≥    <
-	db $00, $05
-	db $14, $19
-	db $1d, $26
-	db $35, $3a
-	db $3f, $40
-	db $49, $5d
-	db $5e, $7f
-	db $ff ; end
+	;      ≥           <
+	db "<START>",  $04       + 1
+	db "<PLAY_G>", $18       + 1
+	db $1d,        "%"       + 1
+	db $35,        "<GREEN>" + 1
+	db "<ENEMY>",  "<ENEMY>" + 1
+	db $49,        "<TM>"    + 1
+	db "<ROCKET>", "┘"       + 1
+	db -1 ; end
 ; 66de
 
+INCLUDE "engine/math.asm"
 
-_Multiply:: ; 66de
-
-; hMultiplier is one byte.
-	ld a, 8
-	ld b, a
-
-	xor a
-	ld [hMultiplicand - 1], a
-	ld [hMathBuffer + 1], a
-	ld [hMathBuffer + 2], a
-	ld [hMathBuffer + 3], a
-	ld [hMathBuffer + 4], a
-
-
-.loop
-	ld a, [hMultiplier]
-	srl a
-	ld [hMultiplier], a
-	jr nc, .next
-
-	ld a, [hMathBuffer + 4]
-	ld c, a
-	ld a, [hMultiplicand + 2]
-	add c
-	ld [hMathBuffer + 4], a
-
-	ld a, [hMathBuffer + 3]
-	ld c, a
-	ld a, [hMultiplicand + 1]
-	adc c
-	ld [hMathBuffer + 3], a
-
-	ld a, [hMathBuffer + 2]
-	ld c, a
-	ld a, [hMultiplicand + 0]
-	adc c
-	ld [hMathBuffer + 2], a
-
-	ld a, [hMathBuffer + 1]
-	ld c, a
-	ld a, [hMultiplicand - 1]
-	adc c
-	ld [hMathBuffer + 1], a
-
-.next
-	dec b
-	jr z, .done
-
-
-; hMultiplicand <<= 1
-
-	ld a, [hMultiplicand + 2]
-	add a
-	ld [hMultiplicand + 2], a
-
-	ld a, [hMultiplicand + 1]
-	rla
-	ld [hMultiplicand + 1], a
-
-	ld a, [hMultiplicand + 0]
-	rla
-	ld [hMultiplicand + 0], a
-
-	ld a, [hMultiplicand - 1]
-	rla
-	ld [hMultiplicand - 1], a
-
-	jr .loop
-
-
-.done
-	ld a, [hMathBuffer + 4]
-	ld [hProduct + 3], a
-
-	ld a, [hMathBuffer + 3]
-	ld [hProduct + 2], a
-
-	ld a, [hMathBuffer + 2]
-	ld [hProduct + 1], a
-
-	ld a, [hMathBuffer + 1]
-	ld [hProduct + 0], a
-
-	ret
-; 673e
-
-
-_Divide:: ; 673e
-	xor a
-	ld [hMathBuffer + 0], a
-	ld [hMathBuffer + 1], a
-	ld [hMathBuffer + 2], a
-	ld [hMathBuffer + 3], a
-	ld [hMathBuffer + 4], a
-
-	ld a, 9
-	ld e, a
-
-.loop
-	ld a, [hMathBuffer + 0]
-	ld c, a
-	ld a, [hDividend + 1]
-	sub c
-	ld d, a
-
-	ld a, [hDivisor]
-	ld c, a
-	ld a, [hDividend + 0]
-	sbc c
-	jr c, .asm_6767
-
-	ld [hDividend + 0], a
-
-	ld a, d
-	ld [hDividend + 1], a
-
-	ld a, [hMathBuffer + 4]
-	inc a
-	ld [hMathBuffer + 4], a
-
-	jr .loop
-
-.asm_6767
-	ld a, b
-	cp 1
-	jr z, .done
-
-	ld a, [hMathBuffer + 4]
-	add a
-	ld [hMathBuffer + 4], a
-
-	ld a, [hMathBuffer + 3]
-	rla
-	ld [hMathBuffer + 3], a
-
-	ld a, [hMathBuffer + 2]
-	rla
-	ld [hMathBuffer + 2], a
-
-	ld a, [hMathBuffer + 1]
-	rla
-	ld [hMathBuffer + 1], a
-
-	dec e
-	jr nz, .asm_6798
-
-	ld e, 8
-	ld a, [hMathBuffer + 0]
-	ld [hDivisor], a
-	xor a
-	ld [hMathBuffer + 0], a
-
-	ld a, [hDividend + 1]
-	ld [hDividend + 0], a
-
-	ld a, [hDividend + 2]
-	ld [hDividend + 1], a
-
-	ld a, [hDividend + 3]
-	ld [hDividend + 2], a
-
-.asm_6798
-	ld a, e
-	cp 1
-	jr nz, .asm_679e
-	dec b
-
-.asm_679e
-	ld a, [hDivisor]
-	srl a
-	ld [hDivisor], a
-
-	ld a, [hMathBuffer + 0]
-	rr a
-	ld [hMathBuffer + 0], a
-
-	jr .loop
-
-.done
-	ld a, [hDividend + 1]
-	ld [hDivisor], a
-
-	ld a, [hMathBuffer + 4]
-	ld [hDividend + 3], a
-
-	ld a, [hMathBuffer + 3]
-	ld [hDividend + 2], a
-
-	ld a, [hMathBuffer + 2]
-	ld [hDividend + 1], a
-
-	ld a, [hMathBuffer + 1]
-	ld [hDividend + 0], a
-
-	ret
-; 67c1
-
-
 ItemAttributes: ; 67c1
 INCLUDE "items/item_attributes.asm"
 ; 6ec1
+INCLUDE "engine/npc_movement.asm"
 
-
-Function6ec1: ; 6ec1
-
-	ld hl, OBJECT_PALETTE
-	add hl, bc
-	bit 5, [hl]
-	jr z, .not_bit_5
-
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit 4, [hl] ; lost
-	push hl
-	push bc
-	call Function6f2c
-	pop bc
-	pop hl
-	ret c
-	jr .resume
-
-.not_bit_5
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit 4, [hl]
-	jr nz, .resume
-	push hl
-	push bc
-	call Function6f07
-	pop bc
-	pop hl
-	ret c
-
-.resume
-	bit 6, [hl]
-	jr nz, .bit_6
-
-	push hl
-	push bc
-	call WillPersonBumpIntoSomeoneElse
-	pop bc
-	pop hl
-	ret c
-
-.bit_6
-	bit 5, [hl]
-	jr nz, .bit_5
-	push hl
-	call HasPersonReachedMovementLimit
-	pop hl
-	ret c
-
-	push hl
-	call IsPersonMovingOffEdgeOfScreen
-	pop hl
-	ret c
-
-.bit_5
-	and a
-	ret
-; 6f07
-
-
-Function6f07: ; 6f07
-	call Function6f5f
-	ret c
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld d, [hl]
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld e, [hl]
-	ld hl, OBJECT_PALETTE
-	add hl, bc
-	bit 7, [hl]
-	jp nz, Function6fa1
-	ld hl, OBJECT_NEXT_TILE
-	add hl, bc
-	ld a, [hl]
-	ld d, a
-	call GetTileCollision
-	and a
-	jr z, Function6f3e
-	scf
-	ret
-; 6f2c
-
-Function6f2c: ; 6f2c
-	call Function6f5f
-	ret c
-	ld hl, OBJECT_NEXT_TILE
-	add hl, bc
-	ld a, [hl]
-	call GetTileCollision
-	cp $1
-	jr z, Function6f3e
-	scf
-	ret
-; 6f3e
-
-Function6f3e: ; 6f3e
-	ld hl, OBJECT_NEXT_TILE
-	add hl, bc
-	ld a, [hl]
-	call Function6f7f
-	ret nc
-	push af
-	ld hl, OBJECT_DIRECTION_WALKING
-	add hl, bc
-	ld a, [hl]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .data_6f5b
-	add hl, de
-	pop af
-	and [hl]
-	ret z
-	scf
-	ret
-; 6f5b
-
-.data_6f5b
-	db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
-; 6f5f
-
-Function6f5f: ; 6f5f
-	ld hl, OBJECT_STANDING_TILE
-	add hl, bc
-	ld a, [hl]
-	call Function6f7f
-	ret nc
-	push af
-	ld hl, OBJECT_DIRECTION_WALKING
-	add hl, bc
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .data_6f7b
-	add hl, de
-	pop af
-	and [hl]
-	ret z
-	scf
-	ret
-; 6f7b
-
-.data_6f7b
-	db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
-; 6f7f
-
-Function6f7f: ; 6f7f
-	ld d, a
-	and $f0
-	cp $b0
-	jr z, .done
-	cp $c0
-	jr z, .done
-	xor a
-	ret
-
-.done
-	ld a, d
-	and 7
-	ld e, a
-	ld d, 0
-	ld hl, .data_6f99
-	add hl, de
-	ld a, [hl]
-	scf
-	ret
-; 6f99
-
-.data_6f99
-	db 8, 4, 1, 2
-	db 10, 6, 9, 5
-; 6fa1
-
-Function6fa1: ; 6fa1
-	ld hl, OBJECT_DIRECTION_WALKING
-	add hl, bc
-	ld a, [hl]
-	and 3
-	jr z, .asm_6fb2
-	dec a
-	jr z, .asm_6fb7
-	dec a
-	jr z, .asm_6fbb
-	jr .asm_6fbf
-
-.asm_6fb2
-	inc e
-	push de
-	inc d
-	jr .asm_6fc2
-
-.asm_6fb7
-	push de
-	inc d
-	jr .asm_6fc2
-
-.asm_6fbb
-	push de
-	inc e
-	jr .asm_6fc2
-
-.asm_6fbf
-	inc d
-	push de
-	inc e
-
-.asm_6fc2
-	call GetCoordTile
-	call GetTileCollision
-	pop de
-	and a
-	jr nz, .asm_6fd7
-	call GetCoordTile
-	call GetTileCollision
-	and a
-	jr nz, .asm_6fd7
-	xor a
-	ret
-
-.asm_6fd7
-	scf
-	ret
-; 6fd9
-
-
-
-CheckFacingObject:: ; 6fd9
-
-	call GetFacingTileCoord
-
-; Double the distance for counter tiles.
-	call CheckCounterTile
-	jr nz, .asm_6ff1
-
-	ld a, [PlayerNextMapX]
-	sub d
-	cpl
-	inc a
-	add d
-	ld d, a
-
-	ld a, [PlayerNextMapY]
-	sub e
-	cpl
-	inc a
-	add e
-	ld e, a
-
-.asm_6ff1
-	ld bc, ObjectStructs ; redundant
-	ld a, 0
-	ld [hMapObjectIndexBuffer], a
-	call IsNPCAtCoord
-	ret nc
-	ld hl, OBJECT_DIRECTION_WALKING
-	add hl, bc
-	ld a, [hl]
-	cp STANDING
-	jr z, .standing
-	xor a
-	ret
-
-.standing
-	scf
-	ret
-; 7009
-
-
-WillPersonBumpIntoSomeoneElse: ; 7009
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld d, [hl]
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld e, [hl]
-	jr IsNPCAtCoord
-; 7015
-
-Function7015: ; unreferenced
-	ld a, [hMapObjectIndexBuffer]
-	call GetObjectStruct
-	call .CheckWillBeFacingNPC
-	call IsNPCAtCoord
-	ret
-
-.CheckWillBeFacingNPC: ; 7021
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld d, [hl]
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld e, [hl]
-	call GetSpriteDirection
-	and a
-	jr z, .down
-	cp OW_UP
-	jr z, .up
-	cp OW_LEFT
-	jr z, .left
-	inc d
-	ret
-
-.down
-	inc e
-	ret
-
-.up
-	dec e
-	ret
-
-.left
-	dec d
-	ret
-; 7041
-
-IsNPCAtCoord: ; 7041
-	ld bc, ObjectStructs
-	xor a
-.loop
-	ld [hObjectStructIndexBuffer], a
-	call GetObjectSprite
-	jr z, .next
-
-	ld hl, OBJECT_FLAGS1
-	add hl, bc
-	bit 7, [hl]
-	jr nz, .next
-
-	ld hl, OBJECT_PALETTE
-	add hl, bc
-	bit 7, [hl]
-	jr z, .got
-
-	call Function7171
-	jr nc, .ok
-	jr .ok2
-
-.got
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr nz, .ok
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld a, [hl]
-	cp e
-	jr nz, .ok
-
-.ok2
-	ld a, [hMapObjectIndexBuffer]
-	ld l, a
-	ld a, [hObjectStructIndexBuffer]
-	cp l
-	jr nz, .setcarry
-
-.ok
-	ld hl, OBJECT_MAP_X
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr nz, .next
-	ld hl, OBJECT_MAP_Y
-	add hl, bc
-	ld a, [hl]
-	cp e
-	jr nz, .next
-	ld a, [hMapObjectIndexBuffer]
-	ld l, a
-	ld a, [hObjectStructIndexBuffer]
-	cp l
-	jr nz, .setcarry
-
-.next
-	ld hl, OBJECT_STRUCT_LENGTH
-	add hl, bc
-	ld b, h
-	ld c, l
-	ld a, [hObjectStructIndexBuffer]
-	inc a
-	cp NUM_OBJECT_STRUCTS
-	jr nz, .loop
-	and a
-	ret
-
-.setcarry
-	scf
-	ret
-; 70a4
-
-HasPersonReachedMovementLimit: ; 70a4
-	ld hl, OBJECT_RADIUS
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .nope
-	and $f
-	jr z, .check_y
-	ld e, a
-	ld d, a
-	ld hl, OBJECT_INIT_X
-	add hl, bc
-	ld a, [hl]
-	sub d
-	ld d, a
-	ld a, [hl]
-	add e
-	ld e, a
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr z, .yes
-	cp e
-	jr z, .yes
-
-.check_y
-	ld hl, OBJECT_RADIUS
-	add hl, bc
-	ld a, [hl]
-	swap a
-	and $f
-	jr z, .nope
-	ld e, a
-	ld d, a
-	ld hl, OBJECT_INIT_Y
-	add hl, bc
-	ld a, [hl]
-	sub d
-	ld d, a
-	ld a, [hl]
-	add e
-	ld e, a
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr z, .yes
-	cp e
-	jr z, .yes
-
-.nope
-	xor a
-	ret
-
-.yes
-	scf
-	ret
-; 70ed
-
-IsPersonMovingOffEdgeOfScreen: ; 70ed
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld a, [XCoord]
-	cp [hl]
-	jr z, .check_y
-	jr nc, .yes
-	add $9
-	cp [hl]
-	jr c, .yes
-
-.check_y
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld a, [YCoord]
-	cp [hl]
-	jr z, .nope
-	jr nc, .yes
-	add $8
-	cp [hl]
-	jr c, .yes
-
-.nope
-	and a
-	ret
-
-.yes
-	scf
-	ret
-; 7113
-
-Function7113: ; unreferenced
-	ld a, [PlayerNextMapX]
-	ld d, a
-	ld a, [PlayerNextMapY]
-	ld e, a
-	ld bc, ObjectStructs
-	xor a
-.loop
-	ld [hObjectStructIndexBuffer], a
-	call GetObjectSprite
-	jr z, .next
-	ld hl, OBJECT_MOVEMENTTYPE
-	add hl, bc
-	ld a, [hl]
-	cp SPRITEMOVEDATA_SNORLAX
-	jr nz, .not_snorlax
-	call Function7171
-	jr c, .yes
-	jr .next
-
-.not_snorlax
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld a, [hl]
-	cp e
-	jr nz, .check_current_coords
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr nz, .check_current_coords
-	ld a, [hObjectStructIndexBuffer]
-	cp $0
-	jr z, .next
-	jr .yes
-
-.check_current_coords
-	ld hl, OBJECT_MAP_Y
-	add hl, bc
-	ld a, [hl]
-	cp e
-	jr nz, .next
-	ld hl, OBJECT_MAP_X
-	add hl, bc
-	ld a, [hl]
-	cp d
-	jr nz, .next
-	jr .yes
-
-.next
-	ld hl, OBJECT_STRUCT_LENGTH
-	add hl, bc
-	ld b, h
-	ld c, l
-	ld a, [hObjectStructIndexBuffer]
-	inc a
-	cp NUM_OBJECT_STRUCTS
-	jr nz, .loop
-	xor a
-	ret
-
-.yes
-	scf
-	ret
-; 7171
-
-
-Function7171: ; 7171
-	ld hl, OBJECT_NEXT_MAP_X
-	add hl, bc
-	ld a, d
-	sub [hl]
-	jr c, .nope
-	cp $2
-	jr nc, .nope
-	ld hl, OBJECT_NEXT_MAP_Y
-	add hl, bc
-	ld a, e
-	sub [hl]
-	jr c, .nope
-	cp $2
-	jr nc, .nope
-	scf
-	ret
-
-.nope
-	and a
-	ret
-; 718d
-
 GetFirstPokemonHappiness: ; 718d
 	ld hl, PartyMon1Happiness
 	ld bc, PARTYMON_STRUCT_LENGTH
@@ -1316,7 +285,6 @@
 	jp CopyPokemonName_Buffer1_Buffer3
 ; 71c2
 
-
 ChangeHappiness: ; 71c2
 ; Perform happiness action c on CurPartyMon
 
@@ -1382,7 +350,7 @@
 	ret z
 	ld a, [CurPartyMon]
 	ld b, a
-	ld a, [wd0d8]
+	ld a, [wPartyMenuCursor]
 	cp b
 	ret nz
 	ld a, [de]
@@ -1412,7 +380,6 @@
 	db +10,  +6,  +4 ; Gained a level in the place where it was caught
 ; 725a
 
-
 StepHappiness:: ; 725a
 ; Raise the party's happiness by 1 point every other step cycle.
 
@@ -1449,53 +416,52 @@
 	ret
 ; 7282
 
-
 DaycareStep:: ; 7282
 
 	ld a, [wDaycareMan]
 	bit 0, a
-	jr z, .asm_72a4
+	jr z, .daycare_lady
 
 	ld a, [wBreedMon1Level] ; level
 	cp 100
-	jr nc, .asm_72a4
+	jr nc, .daycare_lady
 	ld hl, wBreedMon1Exp + 2 ; exp
 	inc [hl]
-	jr nz, .asm_72a4
+	jr nz, .daycare_lady
 	dec hl
 	inc [hl]
-	jr nz, .asm_72a4
+	jr nz, .daycare_lady
 	dec hl
 	inc [hl]
 	ld a, [hl]
-	cp $50
-	jr c, .asm_72a4
-	ld a, $50
+	cp 5242880 / $10000
+	jr c, .daycare_lady
+	ld a, 5242880 / $10000
 	ld [hl], a
 
-.asm_72a4
+.daycare_lady
 	ld a, [wDaycareLady]
 	bit 0, a
-	jr z, .asm_72c6
+	jr z, .check_egg
 
 	ld a, [wBreedMon2Level] ; level
 	cp 100
-	jr nc, .asm_72c6
+	jr nc, .check_egg
 	ld hl, wBreedMon2Exp + 2 ; exp
 	inc [hl]
-	jr nz, .asm_72c6
+	jr nz, .check_egg
 	dec hl
 	inc [hl]
-	jr nz, .asm_72c6
+	jr nz, .check_egg
 	dec hl
 	inc [hl]
 	ld a, [hl]
-	cp $50
-	jr c, .asm_72c6
-	ld a, $50
+	cp 5242880 / $10000
+	jr c, .check_egg
+	ld a, 5242880 / $10000
 	ld [hl], a
 
-.asm_72c6
+.check_egg
 	ld hl, wDaycareMan
 	bit 5, [hl] ; egg
 	ret z
@@ -1505,22 +471,22 @@
 
 	call Random
 	ld [hl], a
-	callab Function16e1d
+	callab CheckBreedmonCompatibility
 	ld a, [wd265]
-	cp $e6
-	ld b, $50
-	jr nc, .asm_72f8
+	cp 230
+	ld b, -1 + 32 percent
+	jr nc, .okay
 	ld a, [wd265]
-	cp $aa
-	ld b, $28
-	jr nc, .asm_72f8
+	cp 170
+	ld b, 16 percent
+	jr nc, .okay
 	ld a, [wd265]
-	cp $6e
-	ld b, $1e
-	jr nc, .asm_72f8
-	ld b, $a
+	cp 110
+	ld b, 12 percent
+	jr nc, .okay
+	ld b, 4 percent
 
-.asm_72f8
+.okay
 	call Random
 	cp b
 	ret nc
@@ -1530,7 +496,6 @@
 	ret
 ; 7305
 
-
 SpecialGiveShuckle: ; 7305
 
 ; Adding to the party.
@@ -1604,7 +569,6 @@
 	db "SHUCKIE@"
 ; 737e
 
-
 SpecialReturnShuckle: ; 737e
 	callba SelectMonFromParty
 	jr c, .refused
@@ -1655,9 +619,8 @@
 	jr nc, .HappyToStayWithYou
 	xor a ; take from pc
 	ld [wPokemonWithdrawDepositParameter], a
-	callab Functione039
+	callab RemoveMonFromPartyOrBox
 	ld a, $2
-
 .HappyToStayWithYou
 	ld [ScriptVar], a
 	ret
@@ -1777,10 +740,9 @@
 	ret
 ; 747b
 
-
 SECTION "bank2", ROMX, BANK[$2]
 
-Function8000: ; 8000
+BlankScreen: ; 8000
 	call DisableSpriteUpdates
 	xor a
 	ld [hBGMapMode], a
@@ -1794,7 +756,7 @@
 	ld bc, AttrMapEnd - AttrMap
 	ld a, $7
 	call ByteFill
-	call Function3200
+	call WaitBGMap2
 	call SetPalettes
 	ret
 ; 8029
@@ -1869,7 +831,6 @@
 	ret
 ; 80a1
 
-
 WritePersonXY:: ; 80a1
 	ld a, b
 	call CheckObjectVisibility
@@ -1917,7 +878,6 @@
 	ret
 ; 80e7
 
-
 CopyObjectStruct:: ; 80e7
 	call CheckObjectMask
 	and a
@@ -2080,63 +1040,62 @@
 	ret
 ; 81ca
 
-Function81ca:: ; 81ca
+CheckObjectEnteringVisibleRange:: ; 81ca
 	nop
 	ld a, [wPlayerStepDirection]
-	cp $ff
+	cp STANDING
 	ret z
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	ret
 ; 81d6
 
-.jumptable: ; 81d6
-	dw Function81e5
-	dw Function81de
-	dw Function8232
-	dw Function8239
+.dw: ; 81d6
+	dw .Down
+	dw .Up
+	dw .Left
+	dw .Right
 ; 81de
 
-Function81de: ; 81de
+.Up: ; 81de
 	ld a, [YCoord]
-	sub $1
-	jr Function81ea
+	sub 1
+	jr .Vertical
 
-Function81e5: ; 81e5
+.Down: ; 81e5
 	ld a, [YCoord]
-	add $9
-
-Function81ea: ; 81ea
+	add 9
+.Vertical: ; 81ea
 	ld d, a
 	ld a, [XCoord]
 	ld e, a
 	ld bc, MapObjects + OBJECT_LENGTH
 	ld a, 1
-.loop
+.loop_v
 	ld [hMapObjectIndexBuffer], a
 	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .next
+	jr z, .next_v
 	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, d
 	cp [hl]
-	jr nz, .next
+	jr nz, .next_v
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
 	cp -1
-	jr nz, .next
+	jr nz, .next_v
 	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, [hl]
 	add 1
 	sub e
-	jr c, .next
+	jr c, .next_v
 	cp MAPOBJECT_SCREEN_WIDTH
-	jr nc, .next
+	jr nc, .next_v
 	push de
 	push bc
 	call CopyObjectStruct
@@ -2143,7 +1102,7 @@
 	pop bc
 	pop de
 
-.next
+.next_v
 	ld hl, OBJECT_LENGTH
 	add hl, bc
 	ld b, h
@@ -2151,50 +1110,49 @@
 	ld a, [hMapObjectIndexBuffer]
 	inc a
 	cp NUM_OBJECTS
-	jr nz, .loop
+	jr nz, .loop_v
 	ret
 ; 8232
 
-Function8232: ; 8232
+.Left: ; 8232
 	ld a, [XCoord]
 	sub 1
-	jr Function823e
+	jr .Horizontal
 
-Function8239: ; 8239
+.Right: ; 8239
 	ld a, [XCoord]
-	add $a
-
-Function823e: ; 823e
+	add 10
+.Horizontal: ; 823e
 	ld e, a
 	ld a, [YCoord]
 	ld d, a
 	ld bc, MapObjects + OBJECT_LENGTH
 	ld a, 1
-.loop
+.loop_h
 	ld [hMapObjectIndexBuffer], a
 	ld hl, MAPOBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .next
+	jr z, .next_h
 	ld hl, MAPOBJECT_X_COORD
 	add hl, bc
 	ld a, e
 	cp [hl]
-	jr nz, .next
+	jr nz, .next_h
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
 	ld a, [hl]
 	cp -1
-	jr nz, .next
+	jr nz, .next_h
 	ld hl, MAPOBJECT_Y_COORD
 	add hl, bc
 	ld a, [hl]
 	add 1
 	sub d
-	jr c, .next
+	jr c, .next_h
 	cp MAPOBJECT_SCREEN_HEIGHT
-	jr nc, .next
+	jr nc, .next_h
 	push de
 	push bc
 	call CopyObjectStruct
@@ -2201,7 +1159,7 @@
 	pop bc
 	pop de
 
-.next
+.next_h
 	ld hl, OBJECT_LENGTH
 	add hl, bc
 	ld b, h
@@ -2209,11 +1167,10 @@
 	ld a, [hMapObjectIndexBuffer]
 	inc a
 	cp NUM_OBJECTS
-	jr nz, .loop
+	jr nz, .loop_h
 	ret
 ; 8286
 
-
 CopyTempObjectToObjectStruct: ; 8286
 	ld a, [wTempObjectCopyMapObjectIndex]
 	ld hl, OBJECT_MAP_OBJECT_INDEX
@@ -2278,7 +1235,7 @@
 	sub [hl]
 	and $f
 	swap a
-	ld hl, wd14d
+	ld hl, wFollowNotExactPersonY
 	sub [hl]
 	ld hl, OBJECT_SPRITE_Y
 	add hl, de
@@ -2297,7 +1254,7 @@
 	sub [hl]
 	and $f
 	swap a
-	ld hl, wd14c
+	ld hl, wFollowNotExactPersonX
 	sub [hl]
 	ld hl, OBJECT_SPRITE_X
 	add hl, de
@@ -2415,7 +1372,6 @@
 	slow_step_right
 ; 839e
 
-
 FollowNotExact:: ; 839e
 	push bc
 	ld a, c
@@ -2473,7 +1429,7 @@
 	sub [hl]
 	and $f
 	swap a
-	ld hl, wd14c
+	ld hl, wFollowNotExactPersonX
 	sub [hl]
 	ld hl, OBJECT_SPRITE_X
 	add hl, de
@@ -2486,7 +1442,7 @@
 	sub [hl]
 	and $f
 	swap a
-	ld hl, wd14d
+	ld hl, wFollowNotExactPersonY
 	sub [hl]
 	ld hl, OBJECT_SPRITE_Y
 	add hl, de
@@ -2612,21 +1568,21 @@
 	ret
 ; 848a
 
-Function848a: ; 848a
-	call Function849d
+QueueFollowerFirstStep: ; 848a
+	call .QueueFirstStep
 	jr c, .same
-	ld [wd4d1], a
+	ld [wFollowMovementQueue], a
 	xor a
-	ld [wd4d0], a
+	ld [wFollowerMovementQueueLength], a
 	ret
 
 .same
 	ld a, -1
-	ld [wd4d0], a
+	ld [wFollowerMovementQueueLength], a
 	ret
 ; 849d
 
-Function849d: ; 849d
+.QueueFirstStep
 	ld a, [wObjectFollow_Leader]
 	call GetObjectStruct
 	ld hl, OBJECT_NEXT_MAP_X
@@ -2644,12 +1600,12 @@
 	jr z, .check_y
 	jr c, .left
 	and a
-	ld a, $c + RIGHT
+	ld a, movement_step_right
 	ret
 
 .left
 	and a
-	ld a, $c + LEFT
+	ld a, movement_step_left
 	ret
 
 .check_y
@@ -2660,12 +1616,12 @@
 	jr z, .same_xy
 	jr c, .up
 	and a
-	ld a, $c + DOWN
+	ld a, movement_step_down
 	ret
 
 .up
 	and a
-	ld a, $c + UP
+	ld a, movement_step_up
 	ret
 
 .same_xy
@@ -2683,13 +1639,13 @@
 	cp  %100000
 	jr nc, .negative
 
-	call Function84ef
+	call .ApplySineWave
 	ld a, h
 	ret
 
 .negative
 	and %011111
-	call Function84ef
+	call .ApplySineWave
 	ld a, h
 	xor -1
 	inc a
@@ -2696,14 +1652,13 @@
 	ret
 ; 84ef
 
-Function84ef: ; 84ef
+.ApplySineWave: ; 84ef
 	ld e, a
 	ld a, d
 	ld d, 0
-	ld hl, SineWave
-rept 2
+	ld hl, .sinewave
 	add hl, de
-endr
+	add hl, de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -2722,19 +1677,16 @@
 	ret
 ; 850b
 
-SineWave: ; 850b
+.sinewave: ; 850b
 ; A $20-word table representing a sine wave.
 ; 90 degrees is index $10 at a base amplitude of $100.
 	sine_wave $100
 ; 854b
 
-
 INCLUDE "engine/predef.asm"
 
-
 INCLUDE "engine/color.asm"
 
-
 SECTION "bank3", ROMX, BANK[$3]
 
 CheckTime:: ; c000
@@ -2759,10 +1711,8 @@
 	db -1
 ; c01b
 
-
 INCLUDE "engine/specials.asm"
 
-
 _PrintNum:: ; c4c7
 ; Print c digits of the b-byte value from de to hl.
 ; Allows 2 to 7 digits. For 1-digit numbers, add
@@ -2971,7 +1921,7 @@
 	ld a, [hPrintNum5]
 	ld b, a
 	ld a, [hPrintNum2]
-	ld [$ffba], a
+	ld [hPrintNum8], a
 	cp b
 	jr c, .skip1
 	sub b
@@ -3019,7 +1969,7 @@
 	ld a, [hPrintNum9]
 	ld [hPrintNum3], a
 .skip3
-	ld a, [$ffba]
+	ld a, [hPrintNum8]
 	ld [hPrintNum2], a
 .skip1
 	ld a, [hPrintNum1]
@@ -3030,7 +1980,7 @@
 	jr nz, .done
 	bit 5, d
 	jr z, .done
-	ld a, $f0
+	ld a, "¥"
 	ld [hli], a
 	res 5, d
 .done
@@ -3042,7 +1992,7 @@
 	dec e
 	ret nz
 	inc hl
-	ld [hl], $f2
+	ld [hl], "·"
 	ret
 
 .PrintLeadingZero: ; c644
@@ -3067,7 +2017,6 @@
 	ret
 ; c658
 
-
 HealParty: ; c658
 	xor a
 	ld [CurPartyMon], a
@@ -3111,9 +2060,8 @@
 	; bc = MON_HP
 	ld b, h
 	ld c, l
-rept 2
 	dec bc
-endr
+	dec bc
 
 	ld a, [hli]
 	ld [bc], a
@@ -3125,7 +2073,8 @@
 	ret
 ; c699
 
-DrawPartyMenuHPBar: ; c699
+ComputeHPBarPixels: ; c699
+; bc * (6 * 8) / de
 	ld a, b
 	or c
 	jr z, .zero
@@ -3136,12 +2085,14 @@
 	ld [hMultiplicand + 1], a
 	ld a, c
 	ld [hMultiplicand + 2], a
-	ld a, $30
+	ld a, 6 * 8
 	ld [hMultiplier], a
 	call Multiply
+	; We need de to be under 256 because hDivisor is only 1 byte.
 	ld a, d
 	and a
 	jr z, .divide
+	; divide de and hProduct by 4
 	srl d
 	rr e
 	srl d
@@ -3156,11 +2107,10 @@
 	ld [hDividend + 3], a
 	ld a, b
 	ld [hDividend + 2], a
-
 .divide
 	ld a, e
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
 	ld a, [hQuotient + 2]
 	ld e, a
@@ -3167,11 +2117,11 @@
 	pop hl
 	and a
 	ret nz
-	ld e, $1
+	ld e, 1
 	ret
 
 .zero
-	ld e, $0
+	ld e, 0
 	ret
 ; c6e0
 
@@ -3182,7 +2132,6 @@
 	ret
 ; c6ea
 
-
 ClearBuffer1: ; c6ea
 	xor a
 	ld hl, Buffer1
@@ -3206,7 +2155,6 @@
 	ret
 ; c706
 
-
 GetPartyNick: ; c706
 ; write CurPartyMon nickname to StringBuffer1-3
 	ld hl, PartyMonNicknames
@@ -3222,7 +2170,6 @@
 	ret
 ; c721
 
-
 CheckEngineFlag: ; c721
 ; Check engine flag de
 ; Return carry if flag is not set
@@ -3243,13 +2190,13 @@
 ; Display "Badge required" text and return carry if the badge is not owned
 	call CheckEngineFlag
 	ret nc
-	ld hl, BadgeRequiredText
+	ld hl, .BadgeRequiredText
 	call MenuTextBoxBackup ; push text to queue
 	scf
 	ret
 ; c73d
 
-BadgeRequiredText: ; c73d
+.BadgeRequiredText: ; c73d
 	; Sorry! A new BADGE
 	; is required.
 	text_jump _BadgeRequiredText
@@ -3256,7 +2203,6 @@
 	db "@"
 ; c742
 
-
 CheckPartyMove: ; c742
 ; Check if a monster in your party has move d.
 
@@ -3302,14 +2248,14 @@
 	ret
 ; c779
 
-
 FieldMoveFailed: ; c779
-	ld hl, UnknownText_0xc780
+	ld hl, .CantUseHere
 	call MenuTextBoxBackup
 	ret
 ; c780
 
-UnknownText_0xc780: ; 0xc780
+.CantUseHere: ; 0xc780
+	; Can't use that here.
 	text_jump UnknownText_0x1c05c8
 	db "@"
 ; 0xc785
@@ -3321,17 +2267,16 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; c796
 
-
 .Jumptable: ; c796 (3:4796)
+	
 	dw .CheckAble
 	dw .DoCut
 	dw .FailCut
 
-
 .CheckAble: ; c79c (3:479c)
 	ld de, ENGINE_HIVEBADGE
 	call CheckBadge
@@ -3340,9 +2285,11 @@
 	jr c, .nothingtocut
 	ld a, $1
 	ret
+
 .nohivebadge
 	ld a, $80
 	ret
+
 .nothingtocut
 	ld a, $2
 	ret
@@ -3354,18 +2301,18 @@
 	ret
 
 .FailCut: ; c7bb (3:47bb)
-	ld hl, UnknownText_0xc7c9
+	ld hl, Text_NothingToCut
 	call MenuTextBoxBackup
 	ld a, $80
 	ret
 
-UnknownText_0xc7c4: ; 0xc7c4
+Text_UsedCut: ; 0xc7c4
 	; used CUT!
 	text_jump UnknownText_0x1c05dd
 	db "@"
 ; 0xc7c9
 
-UnknownText_0xc7c9: ; 0xc7c9
+Text_NothingToCut: ; 0xc7c9
 	; There's nothing to CUT here.
 	text_jump UnknownText_0x1c05ec
 	db "@"
@@ -3372,6 +2319,7 @@
 ; 0xc7ce
 
 CheckMapForSomethingToCut: ; c7ce
+	; Does the collision data of the facing tile permit cutting?
 	call GetFacingTileCoord
 	ld c, a
 	push de
@@ -3378,21 +2326,26 @@
 	callba CheckCutCollision
 	pop de
 	jr nc, .fail
+	; Get the location of the current block in OverworldMap.
 	call GetBlockLocation
 	ld c, [hl]
+	; See if that block contains something that can be cut.
 	push hl
 	ld hl, CutTreeBlockPointers
 	call CheckOverworldTileArrays
 	pop hl
 	jr nc, .fail
+	; Back up the OverworldMap address to Buffer3
 	ld a, l
-	ld [wd1ec], a
+	ld [Buffer3], a
 	ld a, h
-	ld [wd1ed], a
+	ld [Buffer4], a
+	; Back up the replacement tile to Buffer5
 	ld a, b
-	ld [wd1ee], a
+	ld [Buffer5], a
+	; Back up the animation index to Buffer6
 	ld a, c
-	ld [wd1ef], a
+	ld [Buffer6], a
 	xor a
 	ret
 
@@ -3407,19 +2360,19 @@
 
 Script_Cut: ; 0xc802
 	callasm GetPartyNick
-	writetext UnknownText_0xc7c4
+	writetext Text_UsedCut
 	reloadmappart
 	callasm CutDownTreeOrGrass
-	loadmovesprites
+	closetext
 	end
 ; 0xc810
 
 CutDownTreeOrGrass: ; c810
-	ld hl, wd1ec
+	ld hl, Buffer3 ; OverworldMapTile
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wd1ee]
+	ld a, [Buffer5] ; ReplacementTile
 	ld [hl], a
 	xor a
 	ld [hBGMapMode], a
@@ -3426,7 +2379,7 @@
 	call OverworldTextModeSwitch
 	call UpdateSprites
 	call DelayFrame
-	ld a, [wd1ef]
+	ld a, [Buffer6] ; Animation type
 	ld e, a
 	callba OWCutAnimation
 	call BufferScreen
@@ -3438,6 +2391,12 @@
 ; c840
 
 CheckOverworldTileArrays: ; c840
+	; Input: c contains the tile you're facing
+	; Output: Replacement tile in b and effect on wild encounters in c, plus carry set.
+	;         Carry is not set if the facing tile cannot be replaced, or if the tileset
+	;         does not contain a tile you can replace.
+
+	; Dictionary lookup for pointer to tile replacement table
 	push bc
 	ld a, [wTileset]
 	ld de, 3
@@ -3444,16 +2403,20 @@
 	call IsInArray
 	pop bc
 	jr nc, .nope
+	; Load the pointer
 	inc hl
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+	; Look up the tile you're facing
 	ld de, 3
 	ld a, c
 	call IsInArray
 	jr nc, .nope
+	; Load the replacement to b
 	inc hl
 	ld b, [hl]
+	; Load the animation type parameter to c
 	inc hl
 	ld c, [hl]
 	scf
@@ -3466,16 +2429,16 @@
 
 CutTreeBlockPointers: ; c862
 ; Which tileset are we in?
-	dbw TILESET_JOHTO_1, .one
-	dbw TILESET_JOHTO_2, .two
-	dbw TILESET_KANTO, .three
-	dbw TILESET_PARK, .twentyfive
-	dbw TILESET_ILEX_FOREST, .thirtyone
+	dbw TILESET_JOHTO_1, .johto1
+	dbw TILESET_JOHTO_2, .johto2
+	dbw TILESET_KANTO, .kanto
+	dbw TILESET_PARK, .park
+	dbw TILESET_ILEX_FOREST, .ilex
 	db -1
 ; c872
 
-.one: ; Johto OW
-; Which meta tile are we facing, which should we replace it with, and does it affect encounters?
+.johto1: ; Johto OW
+; Which meta tile are we facing, which should we replace it with, and which animation?
 	db $03, $02, $01 ; grass
 	db $5b, $3c, $00 ; tree
 	db $5f, $3d, $00 ; tree
@@ -3484,12 +2447,12 @@
 	db -1
 ; c882
 
-.two: ; Goldenrod area
+.johto2: ; Goldenrod area
 	db $03, $02, $01 ; grass
 	db -1
 ; c886
 
-.three: ; Kanto OW
+.kanto: ; Kanto OW
 	db $0b, $0a, $01 ; grass
 	db $32, $6d, $00 ; tree
 	db $33, $6c, $00 ; tree
@@ -3499,35 +2462,35 @@
 	db -1
 ; c899
 
-.twentyfive: ; National Park
+.park: ; National Park
 	db $13, $03, $01 ; grass
 	db $03, $04, $01 ; grass
 	db -1
 ; c8a0
 
-.thirtyone: ; Ilex Forest
+.ilex: ; Ilex Forest
 	db $0f, $17, $00
 	db -1
 ; c8a4
 
 WhirlpoolBlockPointers: ; c8a4
-	dbw TILESET_JOHTO_1, .one
+	dbw TILESET_JOHTO_1, .johto
 	db -1
 ; c8a8
 
-.one: ; c8a8
+.johto: ; c8a8
 	db $07, $36, $00
 	db -1
 ; c8ac
 
-Functionc8ac: ; c8ac
-	call Functionc8b5
+OWFlash: ; c8ac
+	call .CheckUseFlash
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; c8b5
 
-Functionc8b5: ; c8b5
+.CheckUseFlash: ; c8b5
 ; Flash
 	ld de, ENGINE_ZEPHYRBADGE
 	callba CheckBadge
@@ -3536,10 +2499,9 @@
 	callba SpecialAerodactylChamber
 	pop hl
 	jr c, .useflash
-	ld a, [wd847]
-	cp -1
+	ld a, [wTimeOfDayPalset]
+	cp %11111111 ; 3, 3, 3, 3
 	jr nz, .notadarkcave
-
 .useflash
 	call UseFlash
 	ld a, $81
@@ -3565,7 +2527,7 @@
 	special UpdateTimePals
 	writetext UnknownText_0xc8f3
 	callasm BlindingFlash
-	loadmovesprites
+	closetext
 	end
 ; 0xc8f3
 
@@ -3576,11 +2538,11 @@
 	ld de, SFX_FLASH
 	call PlaySFX
 	call WaitSFX
-	ld hl, UnknownText_0xc908
+	ld hl, .BlankText
 	ret
 ; c908
 
-UnknownText_0xc908: ; 0xc908
+.BlankText: ; 0xc908
 	db "@"
 ; 0xc909
 
@@ -3591,11 +2553,10 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; c91a
 
-
 .Jumptable: ; c91a (3:491a)
 	dw .TrySurf
 	dw .DoSurf
@@ -3602,7 +2563,6 @@
 	dw .FailSurf
 	dw .AlreadySurfing
 
-
 .TrySurf: ; c922 (3:4922)
 	ld de, ENGINE_FOGBADGE
 	call CheckBadge
@@ -3662,8 +2622,8 @@
 
 UsedSurfScript: ; c986
 	writetext UsedSurfText ; "used SURF!"
+	waitbutton
 	closetext
-	loadmovesprites
 
 	callasm Functionc9a2 ; empty function
 
@@ -3698,7 +2658,6 @@
 	db "@"
 ; c9b8
 
-
 GetSurfType: ; c9b8
 ; Surfing on Pikachu uses an alternate sprite.
 ; This is done by using a separate movement type.
@@ -3717,7 +2676,6 @@
 	ret
 ; c9cb
 
-
 CheckDirection: ; c9cb
 ; Return carry if a tile permission prevents you
 ; from moving in the direction you're facing.
@@ -3750,7 +2708,6 @@
 	db FACE_RIGHT
 ; c9e7
 
-
 TrySurfOW:: ; c9e7
 ; Checking a tile in the overworld.
 ; Return carry if surfing is allowed.
@@ -3800,13 +2757,12 @@
 	ret
 ; ca2c
 
-
 AskSurfScript: ; ca2c
-	loadfont
+	opentext
 	writetext AskSurfText
 	yesorno
 	iftrue UsedSurfScript
-	loadmovesprites
+	closetext
 	end
 ; ca36
 
@@ -3815,25 +2771,23 @@
 	db "@"              ; Want to SURF?
 ; ca3b
 
-
 FlyFunction: ; ca3b
 	call ClearBuffer1
-.asm_ca3e
-	ld hl, .data_ca4c
+.loop
+	ld hl, .Jumptable
 	call FieldMoveJumptable
-	jr nc, .asm_ca3e
+	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; ca4c
 
-.data_ca4c
+.Jumptable
  	dw .TryFly
  	dw .DoFly
  	dw .FailFly
 ; ca52
 
-
 .TryFly: ; ca52
 ; Fly
 	ld de, ENGINE_STORMBADGE
@@ -3853,11 +2807,11 @@
 	ld a, e
 	cp -1
 	jr z, .illegal
-	cp $1c ; NUM_SPAWNS
+	cp NUM_SPAWNS
 	jr nc, .illegal
 
 	ld [wd001], a
-	call WriteBackup
+	call CloseWindow
 	ld a, $1
 	ret
 
@@ -3870,7 +2824,7 @@
 	ret
 
 .illegal
-	call WriteBackup
+	call CloseWindow
 	call WaitBGMap
 	ld a, $80
 	ret
@@ -3893,13 +2847,13 @@
 	reloadmappart
 	callasm HideSprites
 	special UpdateTimePals
-	callasm Function8caed
+	callasm FlyFromAnim
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	callasm DelayLoadingNewSprites
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_FLY
-	callasm Function8cb33
+	callasm FlyToAnim
 	special WaitSFX
 	callasm .ReturnFromFly
 	end
@@ -3909,18 +2863,18 @@
 	callba Function561d
 	call DelayFrame
 	call ReplaceKrisSprite
-	callba Function106594
+	callba LoadOverworldFont
 	ret
 ; cade
 
-Functioncade: ; cade
-	call AttemptToWaterfall
+WaterfallFunction: ; cade
+	call .TryWaterfall
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cae7
 
-AttemptToWaterfall: ; cae7
+.TryWaterfall: ; cae7
 ; Waterfall
 	ld de, ENGINE_RISINGBADGE
 	callba CheckBadge
@@ -3961,18 +2915,18 @@
 
 Script_UsedWaterfall: ; 0xcb20
 	callasm GetPartyNick
-	writetext UnknownText_0xcb51
+	writetext .Text_UsedWaterfall
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_BUBBLEBEAM
 .loop
-	applymovement PLAYER, WaterfallStep
-	callasm CheckContinueWaterfall
+	applymovement PLAYER, .WaterfallStep
+	callasm .CheckContinueWaterfall
 	iffalse .loop
 	end
 ; 0xcb38
 
-CheckContinueWaterfall: ; cb38
+.CheckContinueWaterfall: ; cb38
 	xor a
 	ld [ScriptVar], a
 	ld a, [PlayerNextTile]
@@ -3984,12 +2938,13 @@
 	ret
 ; cb4f
 
-WaterfallStep: ; cb4f
+.WaterfallStep: ; cb4f
 	turn_waterfall_up
 	step_end
 ; cb51
 
-UnknownText_0xcb51: ; 0xcb51
+.Text_UsedWaterfall: ; 0xcb51
+	; used WATERFALL!
 	text_jump UnknownText_0x1c068e
 	db "@"
 ; 0xcb56
@@ -4018,29 +2973,30 @@
 ; cb7e
 
 Script_CantDoWaterfall: ; 0xcb7e
-	jumptext UnknownText_0xcb81
+	jumptext .Text_CantDoWaterfall
 ; 0xcb81
 
-UnknownText_0xcb81: ; 0xcb81
+.Text_CantDoWaterfall: ; 0xcb81
+	; Wow, it's a huge waterfall.
 	text_jump UnknownText_0x1c06a3
 	db "@"
 ; 0xcb86
 
 Script_AskWaterfall: ; 0xcb86
-	loadfont
-	writetext UnknownText_0xcb90
+	opentext
+	writetext .AskUseWaterfall
 	yesorno
 	iftrue Script_UsedWaterfall
-	loadmovesprites
+	closetext
 	end
 ; 0xcb90
 
-UnknownText_0xcb90: ; 0xcb90
+.AskUseWaterfall: ; 0xcb90
+	; Do you want to use WATERFALL?
 	text_jump UnknownText_0x1c06bf
 	db "@"
 ; 0xcb95
 
-
 EscapeRopeFunction: ; cb95
 	call ClearBuffer1
 	ld a, $1
@@ -4057,7 +3013,7 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cbb2
 
@@ -4069,9 +3025,9 @@
 
 .CheckCanDig: ; cbb8
 	call GetMapPermission
-	cp $4
+	cp CAVE
 	jr z, .incave
-	cp $7
+	cp DUNGEON
 	jr z, .incave
 .fail
 	ld a, $2
@@ -4078,7 +3034,7 @@
 	ret
 
 .incave
-	ld hl, wdca9
+	ld hl, wDigWarp
 	ld a, [hli]
 	and a
 	jr z, .fail
@@ -4093,8 +3049,8 @@
 ; cbd8
 
 .DoDig: ; cbd8
-	ld hl, wdca9
-	ld de, wd146
+	ld hl, wDigWarp
+	ld de, wNextWarp
 	ld bc, 3
 	call CopyBytes
 	call GetPartyNick
@@ -4101,7 +3057,7 @@
 	ld a, [Buffer2]
 	cp $2
 	jr nz, .escaperope
-	ld hl, UsedDigScript
+	ld hl, .UsedDigScript
 	call QueueScript
 	ld a, $81
 	ret
@@ -4108,7 +3064,7 @@
 
 .escaperope
 	callba SpecialKabutoChamber
-	ld hl, UsedEscapeRopeScript
+	ld hl, .UsedEscapeRopeScript
 	call QueueScript
 	ld a, $81
 	ret
@@ -4118,10 +3074,10 @@
 	ld a, [Buffer2]
 	cp $2
 	jr nz, .failescaperope
-	ld hl, UnknownText_0xcc26
+	ld hl, .Text_CantUseHere
 	call MenuTextBox
 	call WaitPressAorB_BlinkCursor
-	call WriteBackup
+	call CloseWindow
 
 .failescaperope
 	ld a, $80
@@ -4128,39 +3084,39 @@
 	ret
 ; cc1c
 
-UnknownText_0xcc1c: ; 0xcc1c
+.Text_UsedDig: ; 0xcc1c
 	; used DIG!
 	text_jump UnknownText_0x1c06de
 	db "@"
 ; 0xcc21
 
-UnknownText_0xcc21: ; 0xcc21
+.Text_UsedEscapeRope: ; 0xcc21
 	; used an ESCAPE ROPE.
 	text_jump UnknownText_0x1c06ed
 	db "@"
 ; 0xcc26
 
-UnknownText_0xcc26: ; 0xcc26
+.Text_CantUseHere: ; 0xcc26
 	; Can't use that here.
 	text_jump UnknownText_0x1c0705
 	db "@"
 ; 0xcc2b
 
-UsedEscapeRopeScript: ; 0xcc2b
+.UsedEscapeRopeScript: ; 0xcc2b
 	reloadmappart
 	special UpdateTimePals
-	writetext UnknownText_0xcc21
-	jump UsedDigOrEscapeRopeScript
+	writetext .Text_UsedEscapeRope
+	jump .UsedDigOrEscapeRopeScript
 ; 0xcc35
 
-UsedDigScript: ; 0xcc35
+.UsedDigScript: ; 0xcc35
 	reloadmappart
 	special UpdateTimePals
-	writetext UnknownText_0xcc1c
+	writetext .Text_UsedDig
 
-UsedDigOrEscapeRopeScript: ; 0xcc3c
+.UsedDigOrEscapeRopeScript: ; 0xcc3c
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_WARP_TO
 	applymovement PLAYER, .DigOut
 	farscall Script_AbortBugContest
@@ -4191,7 +3147,7 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cc72
 
@@ -4208,9 +3164,9 @@
 	jr .nope
 
 .CheckIfSpawnPoint
-	ld a, [wdcb2]
+	ld a, [wLastSpawnMapGroup]
 	ld d, a
-	ld a, [wdcb3]
+	ld a, [wLastSpawnMapNumber]
 	ld e, a
 	callba IsSpawnPoint
 	jr nc, .nope
@@ -4226,7 +3182,7 @@
 
 .DoTeleport: ; cc9c
 	call GetPartyNick
-	ld hl, Script_UsedTeleport
+	ld hl, .TeleportScript
 	call QueueScript
 	ld a, $81
 	ret
@@ -4233,31 +3189,31 @@
 ; cca8
 
 .FailTeleport: ; cca8
-	ld hl, UnknownText_0xccb6
+	ld hl, .Text_CantUseHere
 	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; ccb1
 
-UnknownText_0xccb1: ; 0xccb1
+.Text_ReturnToLastMonCenter: ; 0xccb1
 	; Return to the last #MON CENTER.
 	text_jump UnknownText_0x1c071a
 	db "@"
 ; 0xccb6
 
-UnknownText_0xccb6: ; 0xccb6
+.Text_CantUseHere: ; 0xccb6
 	; Can't use that here.
 	text_jump UnknownText_0x1c073b
 	db "@"
 ; 0xccbb
 
-Script_UsedTeleport: ; 0xccbb
+.TeleportScript: ; 0xccbb
 	reloadmappart
 	special UpdateTimePals
-	writetext UnknownText_0xccb1
+	writetext .Text_ReturnToLastMonCenter
 	pause 60
 	reloadmappart
-	loadmovesprites
+	closetext
 	playsound SFX_WARP_TO
 	applymovement PLAYER, .TeleportFrom
 	farscall Script_AbortBugContest
@@ -4282,7 +3238,7 @@
 StrengthFunction: ; cce5
 	call .TryStrength
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; ccee
 
@@ -4290,28 +3246,28 @@
 ; Strength
 	ld de, ENGINE_PLAINBADGE
 	call CheckBadge
-	jr c, FailedStrength
-	jr StartToUseStrength
+	jr c, .Failed
+	jr .UseStrength
 ; ccf8
 
-AlreadyUsingStrength: ; unreferenced
-	ld hl, UnknownText_0xcd01
+.AlreadyUsing: ; unreferenced
+	ld hl, .JumpText
 	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; cd01
 
-UnknownText_0xcd01: ; 0xcd01
+.JumpText: ; 0xcd01
 	text_jump UnknownText_0x1c0751
 	db "@"
 ; 0xcd06
 
-FailedStrength: ; cd06
+.Failed: ; cd06
 	ld a, $80
 	ret
 ; cd09
 
-StartToUseStrength: ; cd09
+.UseStrength: ; cd09
 	ld hl, Script_StrengthFromMenu
 	call QueueScript
 	ld a, $81
@@ -4318,20 +3274,16 @@
 	ret
 ; cd12
 
-Functioncd12: ; cd12
+SetStrengthFlag: ; cd12
 	ld hl, BikeFlags
 	set 0, [hl]
 	ld a, [CurPartyMon]
 	ld e, a
 	ld d, 0
-	; fallthrough
-; cd1d
-
-Functioncd1d: ; cd1d
 	ld hl, PartySpecies
 	add hl, de
 	ld a, [hl]
-	ld [wd1ef], a
+	ld [Buffer6], a
 	call GetPartyNick
 	ret
 ; cd29
@@ -4341,22 +3293,22 @@
 	special UpdateTimePals
 
 Script_UsedStrength: ; 0xcd2d
-	callasm Functioncd12
-	writetext UnknownText_0xcd41
-	copybytetovar wd1ef
+	callasm SetStrengthFlag
+	writetext .UsedStrength
+	copybytetovar Buffer6
 	cry 0
 	pause 3
-	writetext UnknownText_0xcd46
-	loadmovesprites
+	writetext .StrengthAllowedItToMoveBoulders
+	closetext
 	end
 ; 0xcd41
 
-UnknownText_0xcd41: ; 0xcd41
+.UsedStrength: ; 0xcd41
 	text_jump UnknownText_0x1c0774
 	db "@"
 ; 0xcd46
 
-UnknownText_0xcd46: ; 0xcd46
+.StrengthAllowedItToMoveBoulders: ; 0xcd46
 	text_jump UnknownText_0x1c0788
 	db "@"
 ; 0xcd4b
@@ -4377,11 +3329,11 @@
 ; 0xcd5f
 
 .AskStrength: ; 0xcd5f
-	loadfont
+	opentext
 	writetext UnknownText_0xcd69
 	yesorno
 	iftrue Script_UsedStrength
-	loadmovesprites
+	closetext
 	end
 ; 0xcd69
 
@@ -4439,7 +3391,7 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cdae
 
@@ -4480,7 +3432,7 @@
 	ret
 ; cdd9
 
-UnknownText_0xcdd9: ; 0xcdd9
+Text_UsedWhirlpool: ; 0xcdd9
 	; used WHIRLPOOL!
 	text_jump UnknownText_0x1c0816
 	db "@"
@@ -4501,13 +3453,13 @@
 	pop hl
 	jr nc, .failed
 	ld a, l
-	ld [wd1ec], a
+	ld [Buffer3], a
 	ld a, h
-	ld [wd1ed], a
+	ld [Buffer4], a
 	ld a, b
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld a, c
-	ld [wd1ef], a
+	ld [Buffer6], a
 	xor a
 	ret
 
@@ -4522,24 +3474,24 @@
 
 Script_UsedWhirlpool: ; 0xce0f
 	callasm GetPartyNick
-	writetext UnknownText_0xcdd9
+	writetext Text_UsedWhirlpool
 	reloadmappart
 	callasm DisappearWhirlpool
-	loadmovesprites
+	closetext
 	end
 ; 0xce1d
 
 DisappearWhirlpool: ; ce1d
-	ld hl, wd1ec
+	ld hl, Buffer3
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wd1ee]
+	ld a, [Buffer5]
 	ld [hl], a
 	xor a
 	ld [hBGMapMode], a
 	call OverworldTextModeSwitch
-	ld a, [wd1ef]
+	ld a, [Buffer6]
 	ld e, a
 	callba PlayWhirlpoolSound
 	call BufferScreen
@@ -4571,20 +3523,20 @@
 ; ce66
 
 Script_MightyWhirlpool: ; 0xce66
-	jumptext UnknownText_0xce69
+	jumptext .MightyWhirlpoolText
 ; 0xce69
 
-UnknownText_0xce69: ; 0xce69
+.MightyWhirlpoolText: ; 0xce69
 	text_jump UnknownText_0x1c082b
 	db "@"
 ; 0xce6e
 
 Script_AskWhirlpoolOW: ; 0xce6e
-	loadfont
+	opentext
 	writetext UnknownText_0xce78
 	yesorno
 	iftrue Script_UsedWhirlpool
-	loadmovesprites
+	closetext
 	end
 ; 0xce78
 
@@ -4593,11 +3545,10 @@
 	db "@"
 ; 0xce7d
 
-
 HeadbuttFunction: ; ce7d
 	call TryHeadbuttFromMenu
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; ce86
 
@@ -4642,16 +3593,16 @@
 
 	callasm TreeMonEncounter
 	iffalse .no_battle
-	loadmovesprites
-	battlecheck
+	closetext
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 .no_battle
 	writetext UnknownText_0xcea2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xcec9
 
@@ -4672,11 +3623,11 @@
 ; cedc
 
 AskHeadbuttScript: ; 0xcedc
-	loadfont
+	opentext
 	writetext UnknownText_0xcee6
 	yesorno
 	iftrue HeadbuttScript
-	loadmovesprites
+	closetext
 	end
 ; 0xcee6
 
@@ -4686,11 +3637,10 @@
 	db "@"
 ; 0xceeb
 
-
 RockSmashFunction: ; ceeb
 	call TryRockSmashFromMenu
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cef4
 
@@ -4742,7 +3692,7 @@
 RockSmashScript: ; cf32
 	callasm GetPartyNick
 	writetext UnknownText_0xcf58
-	loadmovesprites
+	closetext
 	special WaitSFX
 	playsound SFX_STRENGTH
 	earthquake 84
@@ -4752,9 +3702,9 @@
 	callasm RockMonEncounter
 	copybytetovar TempWildMonSpecies
 	iffalse .done
-	battlecheck
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 .done
 	end
 ; 0xcf55
@@ -4772,11 +3722,11 @@
 	callasm HasRockSmash
 	if_equal 1, .no
 
-	loadfont
+	opentext
 	writetext UnknownText_0xcf77
 	yesorno
 	iftrue RockSmashScript
-	loadmovesprites
+	closetext
 	end
 .no
 	jumptext UnknownText_0xcf72
@@ -4808,7 +3758,6 @@
 	ld [ScriptVar], a
 	ret
 
-
 FishFunction: ; cf8e
 	ld a, e
 	push af
@@ -4820,7 +3769,7 @@
 	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; cfa5
 
@@ -4882,7 +3831,7 @@
 
 .FishGotSomething: ; cff4
 	ld a, $1
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld hl, Script_GotABite
 	call QueueScript
 	ld a, $81
@@ -4891,7 +3840,7 @@
 
 .FishNoBite: ; d002
 	ld a, $2
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld hl, Script_NotEvenANibble
 	call QueueScript
 	ld a, $81
@@ -4900,7 +3849,7 @@
 
 .FailFish: ; d010
 	ld a, $0
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld hl, Script_NotEvenANibble2
 	call QueueScript
 	ld a, $81
@@ -4920,7 +3869,7 @@
 Script_NotEvenANibble_FallThrough: ; 0xd02d
 	loademote EMOTE_SHADOW
 	callasm PutTheRodAway
-	loadmovesprites
+	closetext
 	end
 ; 0xd035
 
@@ -4940,10 +3889,10 @@
 	applymovement PLAYER, .Movement_RestoreRod
 	writetext UnknownText_0xd0a4
 	callasm PutTheRodAway
-	loadmovesprites
-	battlecheck
+	closetext
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	end
 ; 0xd05c
 
@@ -5033,7 +3982,7 @@
 BikeFunction: ; d0b3
 	call .TryBike
 	and $7f
-	ld [wd0ec], a
+	ld [wFieldMoveSucceeded], a
 	ret
 ; d0bc
 
@@ -5090,7 +4039,7 @@
 ; d119
 
 .CheckIfRegistered: ; d119
-	ld a, [wd0ef]
+	ld a, [wUsingItemWithSelect]
 	and a
 	ret z
 	ld h, d
@@ -5125,8 +4074,8 @@
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, PLAYER_BIKE
 	writetext UnknownText_0xd17c
+	waitbutton
 	closetext
-	loadmovesprites
 	special ReplaceKrisSprite
 	end
 ; 0xd14e
@@ -5133,7 +4082,7 @@
 
 Script_GetOnBike_Register: ; 0xd14e
 	writecode VAR_MOVEMENT, PLAYER_BIKE
-	loadmovesprites
+	closetext
 	special ReplaceKrisSprite
 	end
 ; 0xd156
@@ -5147,10 +4096,10 @@
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	writetext UnknownText_0xd181
-	closetext
+	waitbutton
 
 FinishGettingOffBike:
-	loadmovesprites
+	closetext
 	special ReplaceKrisSprite
 	special PlayMapMusic
 	end
@@ -5163,8 +4112,8 @@
 
 UnknownScript_0xd171: ; 0xd171
 	writetext UnknownText_0xd177
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0xd177
 
@@ -5186,7 +4135,6 @@
 	db "@"
 ; 0xd186
 
-
 TryCutOW:: ; d186
 	ld d, CUT
 	call CheckPartyMove
@@ -5211,7 +4159,7 @@
 ; d1a9
 
 AskCutScript: ; 0xd1a9
-	loadfont
+	opentext
 	writetext UnknownText_0xd1c8
 	yesorno
 	iffalse .script_d1b8
@@ -5218,7 +4166,7 @@
 	callasm .CheckMap
 	iftrue Script_Cut
 .script_d1b8
-	loadmovesprites
+	closetext
 	end
 ; 0xd1ba
 
@@ -5227,7 +4175,7 @@
 	ld [ScriptVar], a
 	call CheckMapForSomethingToCut
 	ret c
-	ld a, 1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; d1c8
@@ -5246,7 +4194,6 @@
 	db "@"
 ; 0xd1d5
 
-
 _ReceiveItem:: ; d1d5
 	call DoesHLEqualNumItems
 	jp nz, PutItemInPocket
@@ -5293,7 +4240,6 @@
 	jp ReceiveTMHM
 ; d20d
 
-
 _TossItem:: ; d20d
 	call DoesHLEqualNumItems
 	jr nz, .remove
@@ -5504,14 +4450,13 @@
 	ld e, l
 	ld a, [hli]
 	ld c, a
-	ld a, [ItemCountBuffer]
+	ld a, [CurItemQuantity]
 	cp c
 	jr nc, .ok ; memory
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [CurItem]
 	cp [hl]
 	inc hl
@@ -5545,9 +4490,8 @@
 	dec hl
 	ld b, h
 	ld c, l
-rept 2
 	inc hl
-endr
+	inc hl
 .loop2
 	ld a, [hli]
 	ld [bc], a
@@ -5677,8 +4621,6 @@
 	ret
 ; d3c4
 
-
-
 ReceiveTMHM: ; d3c4
 	dec c
 	ld b, 0
@@ -5737,8 +4679,6 @@
 	ret
 ; d407
 
-
-
 GetTMHMNumber:: ; d407
 ; Return the number of a TM/HM by item id c.
 
@@ -5760,7 +4700,6 @@
 	ret
 ; d417
 
-
 GetNumberedTMHM: ; d417
 ; Return the item id of a TM/HM by number c.
 
@@ -5783,7 +4722,6 @@
 	ret
 ; d427
 
-
 _CheckTossableItem:: ; d427
 ; Return 1 in wItemAttributeParamBuffer and carry if CurItem can't be removed from the bag.
 	ld a, ITEMATTR_PERMISSIONS
@@ -5866,7 +4804,6 @@
 	ret
 ; d486
 
-
 GetItemPrice: ; d486
 ; Return the price of CurItem in de.
 	push hl
@@ -5882,2521 +4819,10 @@
 	ret
 ; d497
 
+INCLUDE "engine/player_step.asm"
+INCLUDE "engine/anim_hp_bar.asm"
+INCLUDE "engine/move_mon.asm"
 
-Functiond497:: ; d497 (3:5497)
-	ld a, [wPlayerStepFlags]
-	and a
-	ret z
-	bit 7, a
-	jr nz, .asm_d4a9
-	bit 6, a
-	jr nz, .asm_d4b3
-	bit 5, a
-	jr nz, .asm_d4b8
-	ret
-.asm_d4a9
-	ld a, $4
-	ld [wd13f], a
-	call Functiond536
-	jr .asm_d4b8
-.asm_d4b3
-	call Functiond511
-	jr .asm_d4b8
-.asm_d4b8
-	call Functiond4e5
-	ld a, [wPlayerStepVectorX]
-	ld d, a
-	ld a, [wPlayerStepVectorY]
-	ld e, a
-	ld a, [wd14c]
-	sub d
-	ld [wd14c], a
-	ld a, [wd14d]
-	sub e
-	ld [wd14d], a
-	ret
-
-Functiond4d2:: ; d4d2 (3:54d2)
-	ld a, [wPlayerStepVectorX]
-	ld d, a
-	ld a, [wPlayerStepVectorY]
-	ld e, a
-	ld a, [hSCX]
-	add d
-	ld [hSCX], a
-	ld a, [hSCY]
-	add e
-	ld [hSCY], a
-	ret
-
-Functiond4e5: ; d4e5 (3:54e5)
-	ld hl, wd13f
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ld a, [hl]
-	ld hl, Jumptable_d4f2
-	rst JumpTable
-	ret
-
-Jumptable_d4f2: ; d4f2 (3:54f2)
-	dw GetMovementPermissions
-	dw BufferScreen
-	dw .mobile
-	dw .fail2
-	dw .fail1
-	dw .fail1
-	dw .fail1
-	dw .fail1
-	dw .fail1
-	dw .fail1
-	dw .fail1
-
-
-.fail1: ; d508 (3:5508)
-	ret
-
-.mobile: ; d509 (3:5509)
-	callba MobileFn_10602e
-	ret
-
-.fail2: ; d510 (3:5510)
-	ret
-
-Functiond511: ; d511 (3:5511)
-	ld a, [wPlayerStepDirection]
-	and a
-	jr nz, .asm_d51c
-	ld hl, YCoord
-	inc [hl]
-	ret
-.asm_d51c
-	cp $1
-	jr nz, .asm_d525
-	ld hl, YCoord
-	dec [hl]
-	ret
-.asm_d525
-	cp $2
-	jr nz, .asm_d52e
-	ld hl, XCoord
-	dec [hl]
-	ret
-.asm_d52e
-	cp $3
-	ret nz
-	ld hl, XCoord
-	inc [hl]
-	ret
-
-Functiond536: ; d536 (3:5536)
-	ld a, [wPlayerStepDirection]
-	and a
-	jr z, .asm_d549
-	cp $1
-	jr z, .asm_d553
-	cp $2
-	jr z, .asm_d55d
-	cp $3
-	jr z, .asm_d567
-	ret
-
-.asm_d549
-	call Functiond571
-	call LoadMapPart
-	call ScrollMapUp
-	ret
-
-.asm_d553
-	call Functiond5a2
-	call LoadMapPart
-	call ScrollMapDown
-	ret
-
-.asm_d55d
-	call Functiond5d5
-	call LoadMapPart
-	call ScrollMapLeft
-	ret
-
-.asm_d567
-	call Functiond5fe
-	call LoadMapPart
-	call ScrollMapRight
-	ret
-
-Functiond571: ; d571 (3:5571)
-	ld a, [wBGMapAnchor]
-	add $40
-	ld [wBGMapAnchor], a
-	jr nc, .not_overflowed
-	ld a, [wBGMapAnchor + 1]
-	inc a
-	and $3
-	or VBGMap0 / $100
-	ld [wBGMapAnchor + 1], a
-.not_overflowed
-	ld hl, wd196
-	inc [hl]
-	ld a, [hl]
-	cp $2 ; was 1
-	jr nz, .skip
-	ld [hl], $0
-	call Functiond595
-.skip
-	ret
-
-Functiond595: ; d595 (3:5595)
-	ld hl, wd194
-	ld a, [MapWidth]
-	add $6
-	add [hl]
-	ld [hli], a
-	ret nc
-	inc [hl]
-	ret
-
-Functiond5a2: ; d5a2 (3:55a2)
-	ld a, [wBGMapAnchor]
-	sub $40
-	ld [wBGMapAnchor], a
-	jr nc, .not_underflowed
-	ld a, [wBGMapAnchor + 1]
-	dec a
-	and $3
-	or VBGMap0 / $100
-	ld [wBGMapAnchor + 1], a
-.not_underflowed
-	ld hl, wd196
-	dec [hl]
-	ld a, [hl]
-	cp $ff ; was 0
-	jr nz, .skip
-	ld [hl], $1
-	call Functiond5c6
-.skip
-	ret
-
-Functiond5c6: ; d5c6 (3:55c6)
-	ld hl, wd194
-	ld a, [MapWidth]
-	add $6
-	ld b, a
-	ld a, [hl]
-	sub b
-	ld [hli], a
-	ret nc
-	dec [hl]
-	ret
-
-Functiond5d5: ; d5d5 (3:55d5)
-	ld a, [wBGMapAnchor]
-	ld e, a
-	and $e0
-	ld d, a
-	ld a, e
-	sub $2
-	and $1f
-	or d
-	ld [wBGMapAnchor], a
-	ld hl, wd197
-	dec [hl]
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_d5f3
-	ld [hl], $1
-	call Functiond5f4
-.asm_d5f3
-	ret
-
-Functiond5f4: ; d5f4 (3:55f4)
-	ld hl, wd194
-	ld a, [hl]
-	sub $1
-	ld [hli], a
-	ret nc
-	dec [hl]
-	ret
-
-Functiond5fe: ; d5fe (3:55fe)
-	ld a, [wBGMapAnchor]
-	ld e, a
-	and $e0
-	ld d, a
-	ld a, e
-	add $2
-	and $1f
-	or d
-	ld [wBGMapAnchor], a
-	ld hl, wd197
-	inc [hl]
-	ld a, [hl]
-	cp $2
-	jr nz, .asm_d61c
-	ld [hl], $0
-	call .Incrementwd194
-.asm_d61c
-	ret
-
-.Incrementwd194: ; d61d (3:561d)
-	ld hl, wd194
-	ld a, [hl]
-	add $1
-	ld [hli], a
-	ret nc
-	inc [hl]
-	ret
-
-_AnimateHPBar: ; d627
-	call Functiond65f
-	jr c, .do_player
-	call Functiond670
-.enemy_loop
-	push bc
-	push hl
-	call Functiond6e2
-	pop hl
-	pop bc
-	push af
-	push bc
-	push hl
-	call Functiond730
-	call Functiond7c9
-	pop hl
-	pop bc
-	pop af
-	jr nc, .enemy_loop
-	ret
-
-.do_player
-	call Functiond670
-.player_loop
-	push bc
-	push hl
-	call Functiond6f5
-	pop hl
-	pop bc
-	ret c
-	push af
-	push bc
-	push hl
-	call Functiond749
-	call Functiond7c9
-	pop hl
-	pop bc
-	pop af
-	jr nc, .player_loop
-	ret
-; d65f
-
-Functiond65f: ; d65f
-	ld a, [Buffer2]
-	and a
-	jr nz, .player
-	ld a, [Buffer1]
-	cp $30
-	jr nc, .player
-	and a
-	ret
-
-.player
-	scf
-	ret
-; d670
-
-Functiond670: ; d670
-	push hl
-	ld hl, Buffer1
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	pop hl
-	call DrawPartyMenuHPBar
-	ld a, e
-	ld [wd1f1], a
-	ld a, [wd1ee]
-	ld c, a
-	ld a, [wd1ef]
-	ld b, a
-	ld a, [Buffer1]
-	ld e, a
-	ld a, [Buffer2]
-	ld d, a
-	call DrawPartyMenuHPBar
-	ld a, e
-	ld [wd1f2], a
-	push hl
-	ld hl, wd1ec
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	pop hl
-	ld a, e
-	sub c
-	ld e, a
-	ld a, d
-	sbc b
-	ld d, a
-	jr c, .asm_d6c1
-	ld a, [wd1ec]
-	ld [wd1f5], a
-	ld a, [wd1ee]
-	ld [wd1f6], a
-	ld bc, 1
-	jr .asm_d6d9
-
-.asm_d6c1
-	ld a, [wd1ec]
-	ld [wd1f6], a
-	ld a, [wd1ee]
-	ld [wd1f5], a
-	ld a, e
-	xor $ff
-	inc a
-	ld e, a
-	ld a, d
-	xor $ff
-	ld d, a
-	ld bc, rIE
-
-.asm_d6d9
-	ld a, d
-	ld [wd1f3], a
-	ld a, e
-	ld [wd1f4], a
-	ret
-; d6e2
-
-Functiond6e2: ; d6e2
-	ld hl, wd1f1
-	ld a, [wd1f2]
-	cp [hl]
-	jr nz, .asm_d6ed
-	scf
-	ret
-
-.asm_d6ed
-	ld a, c
-	add [hl]
-	ld [hl], a
-	call Functiond839
-	and a
-	ret
-; d6f5
-
-Functiond6f5: ; d6f5
-.asm_d6f5
-	ld hl, wd1ec
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, e
-	cp [hl]
-	jr nz, .asm_d707
-	inc hl
-	ld a, d
-	cp [hl]
-	jr nz, .asm_d707
-	scf
-	ret
-
-.asm_d707
-	ld l, e
-	ld h, d
-	add hl, bc
-	ld a, l
-	ld [wd1ec], a
-	ld a, h
-	ld [wd1ed], a
-	push hl
-	push de
-	push bc
-	ld hl, Buffer1
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	call DrawPartyMenuHPBar
-	pop bc
-	pop de
-	pop hl
-	ld a, e
-	ld hl, wd1f1
-	cp [hl]
-	jr z, .asm_d6f5
-	ld [hl], a
-	and a
-	ret
-; d730
-
-Functiond730: ; d730
-	call Functiond784
-	ld d, $6
-	ld a, [wd10a]
-	and $1
-	ld b, a
-	ld a, [wd1f1]
-	ld e, a
-	ld c, a
-	push de
-	call Functiond771
-	pop de
-	call Functiond7b4
-	ret
-; d749
-
-Functiond749: ; d749
-	call Functiond784
-	ld a, [wd1ec]
-	ld c, a
-	ld a, [wd1ed]
-	ld b, a
-	ld a, [Buffer1]
-	ld e, a
-	ld a, [Buffer2]
-	ld d, a
-	call DrawPartyMenuHPBar
-	ld c, e
-	ld d, $6
-	ld a, [wd10a]
-	and $1
-	ld b, a
-	push de
-	call Functiond771
-	pop de
-	call Functiond7b4
-	ret
-; d771
-
-Functiond771: ; d771
-	ld a, [wd10a]
-	cp $2
-	jr nz, .asm_d780
-	ld a, $28
-	add l
-	ld l, a
-	ld a, $0
-	adc h
-	ld h, a
-
-.asm_d780
-	call DrawBattleHPBar
-	ret
-; d784
-
-Functiond784: ; d784
-	ld a, [wd10a]
-	and a
-	ret z
-	cp $1
-	jr z, .load_15
-	ld de, $16
-	jr .loaded_de
-
-.load_15
-	ld de, $15
-
-.loaded_de
-	push hl
-	add hl, de
-	ld a, " "
-rept 2
-	ld [hli], a
-endr
-	ld [hld], a
-	dec hl
-	ld a, [wd1ec]
-	ld [StringBuffer2 + 1], a
-	ld a, [wd1ed]
-	ld [StringBuffer2], a
-	ld de, StringBuffer2
-	lb bc, 2, 3
-	call PrintNum
-	pop hl
-	ret
-; d7b4
-
-Functiond7b4: ; d7b4
-	ld a, [hCGB]
-	and a
-	ret z
-	ld hl, wd1f0
-	call SetHPPal
-	ld a, [wd1f0]
-	ld c, a
-	callba Function8c43
-	ret
-; d7c9
-
-Functiond7c9: ; d7c9
-	ld a, [hCGB]
-	and a
-	jr nz, .cgb
-	call DelayFrame
-	call DelayFrame
-	ret
-
-.cgb
-	ld a, [wd10a]
-	and a
-	jr z, .load_0
-	cp $1
-	jr z, .load_1
-	ld a, [CurPartyMon]
-	cp $3
-	jr nc, .c_is_1
-	ld c, $0
-	jr .c_is_0
-
-.c_is_1
-	ld c, $1
-
-.c_is_0
-	push af
-	cp $2
-	jr z, .skip_delay
-	cp $5
-	jr z, .skip_delay
-	ld a, $2
-	ld [hBGMapMode], a
-	ld a, c
-	ld [hBGMapThird], a
-	call DelayFrame
-
-.skip_delay
-	ld a, $1
-	ld [hBGMapMode], a
-	ld a, c
-	ld [hBGMapThird], a
-	call DelayFrame
-	pop af
-	cp $2
-	jr z, .two_frames
-	cp $5
-	jr z, .two_frames
-	ret
-
-.two_frames
-	inc c
-	ld a, $2
-	ld [hBGMapMode], a
-	ld a, c
-	ld [hBGMapThird], a
-	call DelayFrame
-	ld a, $1
-	ld [hBGMapMode], a
-	ld a, c
-	ld [hBGMapThird], a
-	call DelayFrame
-	ret
-
-.load_0
-	ld c, $0
-	jr .finish
-
-.load_1
-	ld c, $1
-
-.finish
-	call DelayFrame
-	ld a, c
-	ld [hBGMapThird], a
-	call DelayFrame
-	ret
-; d839
-
-Functiond839: ; d839
-	ld a, [Buffer1]
-	ld c, a
-	ld b, $0
-	ld hl, 0
-	ld a, [wd1f1]
-	cp $30
-	jr nc, .coppy_buffer
-	and a
-	jr z, .return_zero
-	call AddNTimes
-	ld b, $0
-.loop
-	ld a, l
-	sub $30
-	ld l, a
-	ld a, h
-	sbc $0
-	ld h, a
-	jr c, .done
-	inc b
-	jr .loop
-
-.done
-	push bc
-	ld bc, $80
-	add hl, bc
-	pop bc
-	ld a, l
-	sub $30
-	ld l, a
-	ld a, h
-	sbc $0
-	ld h, a
-	jr c, .no_carry
-	inc b
-
-.no_carry
-	ld a, [wd1f5]
-	cp b
-	jr nc, .finish
-	ld a, [wd1f6]
-	cp b
-	jr c, .finish
-	ld a, b
-
-.finish
-	ld [wd1ec], a
-	ret
-
-.return_zero
-	xor a
-	ld [wd1ec], a
-	ret
-
-.coppy_buffer
-	ld a, [Buffer1]
-	ld [wd1ec], a
-	ret
-; d88c
-
-
-TryAddMonToParty: ; d88c
-; Check if to copy wild Pkmn or generate new Pkmn
-	; Whose is it?
-	ld de, PartyCount
-	ld a, [MonType]
-	and $f
-	jr z, .getpartylocation ; PARTYMON
-	ld de, OTPartyCount
-
-.getpartylocation
-	; Do we have room for it?
-	ld a, [de]
-	inc a
-	cp PARTY_LENGTH + 1
-	ret nc
-	; Increase the party count
-	ld [de], a
-	ld a, [de] ; Why are we doing this?
-	ld [$ffae], a ; HRAM backup
-	add e
-	ld e, a
-	jr nc, .loadspecies
-	inc d
-
-.loadspecies
-	; Load the species of the Pokemon into the party list.
-	; The terminator is usually here, but it'll be back.
-	ld a, [CurPartySpecies]
-	ld [de], a
-	; Load the terminator into the next slot.
-	inc de
-	ld a, -1
-	ld [de], a
-	; Now let's load the OT name.
-	ld hl, PartyMonOT
-	ld a, [MonType]
-	and $f
-	jr z, .loadOTname
-	ld hl, OTPartyMonOT
-
-.loadOTname
-	ld a, [$ffae] ; Restore index from backup
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-	ld hl, PlayerName
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	ld a, [MonType]
-	and a
-	jr nz, .skipnickname
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, PartyMonNicknames
-	ld a, [$ffae]
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.skipnickname
-	ld hl, PartyMon1Species
-	ld a, [MonType]
-	and $f
-	jr z, .initializeStats
-	ld hl, OTPartyMon1Species
-
-.initializeStats
-	ld a, [$ffae]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-GeneratePartyMonStats: ; d906
-	ld e, l
-	ld d, h
-	push hl
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [BaseDexNo]
-	ld [de], a
-	inc de
-	ld a, [wBattleMode]
-	and a
-	ld a, $0
-	jr z, .skipitem
-	ld a, [EnemyMonItem]
-
-.skipitem
-	ld [de], a
-	inc de
-	push de
-	ld h, d
-	ld l, e
-	ld a, [wBattleMode]
-	and a
-	jr z, .randomlygeneratemoves
-	ld a, [MonType]
-	and a
-	jr nz, .randomlygeneratemoves
-	ld de, EnemyMonMoves
-	rept NUM_MOVES + -1
-	ld a, [de]
-	inc de
-	ld [hli], a
-	endr
-	ld a, [de]
-	ld [hl], a
-	jr .next
-
-.randomlygeneratemoves
-	xor a
-	rept NUM_MOVES + -1
-	ld [hli], a
-	endr
-	ld [hl], a
-	ld [Buffer1], a
-	predef FillMoves
-
-.next
-	pop de
-rept 4
-	inc de
-endr
-	ld a, [PlayerID]
-	ld [de], a
-	inc de
-	ld a, [PlayerID + 1]
-	ld [de], a
-	inc de
-	push de
-	ld a, [CurPartyLevel]
-	ld d, a
-	callab CalcExpAtLevel
-	pop de
-	ld a, [hMultiplicand]
-	ld [de], a
-	inc de
-	ld a, [$ffb5]
-	ld [de], a
-	inc de
-	ld a, [$ffb6]
-	ld [de], a
-	inc de
-	xor a
-	ld b, $a
-.loop
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .loop
-	pop hl
-	push hl
-	ld a, [MonType]
-	and $f
-	jr z, .generateDVs
-	push hl
-	callba GetTrainerDVs
-	pop hl
-	jr .initializetrainermonstats
-
-.generateDVs
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	dec a
-	push de
-	call CheckCaughtMon
-	ld a, [wd265]
-	dec a
-	call SetSeenAndCaughtMon
-	pop de
-	pop hl
-	push hl
-	ld a, [wBattleMode]
-	and a
-	jr nz, .copywildmonstats
-	call Random
-	ld b, a
-	call Random
-	ld c, a
-
-.initializetrainermonstats
-	ld a, b
-	ld [de], a
-	inc de
-	ld a, c
-	ld [de], a
-	inc de
-	push hl
-	push de
-rept 2
-	inc hl
-endr
-	call FillPP
-	pop de
-	pop hl
-rept 4
-	inc de
-endr
-	ld a, 70
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld a, [CurPartyLevel]
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld bc, 10
-	add hl, bc
-	ld a, $1
-	ld c, a
-	ld b, $0
-	call CalcPkmnStatC
-	ld a, [$ffb5]
-	ld [de], a
-	inc de
-	ld a, [$ffb6]
-	ld [de], a
-	inc de
-	jr .next2
-
-.copywildmonstats
-	ld a, [EnemyMonDVs]
-	ld [de], a
-	inc de
-	ld a, [EnemyMonDVs + 1]
-	ld [de], a
-	inc de
-
-	push hl
-	ld hl, EnemyMonPP
-	ld b, NUM_MOVES
-.wildmonpploop
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .wildmonpploop
-	pop hl
-
-	ld a, BASE_HAPPINESS
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld a, [CurPartyLevel]
-	ld [de], a
-	inc de
-	ld hl, EnemyMonStatus
-    ; Copy EnemyMonStatus
-	ld a, [hli]
-	ld [de], a
-	inc de
-    ; Copy EnemyMonUnused
-	ld a, [hli]
-	ld [de], a
-	inc de
-    ; Copy EnemyMonHP
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	inc de
-
-.next2
-	ld a, [wBattleMode]
-	dec a
-	jr nz, .generatestats
-	ld hl, EnemyMonMaxHP
-	ld bc, 2*6 ; MaxHP + 5 Stats
-	call CopyBytes
-	pop hl
-	jr .next3
-
-.generatestats
-	pop hl
-	ld bc, 2*5 ; 5 Stats
-	add hl, bc
-	ld b, $0 ; if b = 1, then the Stats of the Pkmn are calculated
-             ; only the current HP aren't set to MaxHP after this
-	call CalcPkmnStats
-
-.next3
-	ld a, [MonType]
-	and $f
-	jr nz, .done
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr nz, .done
-	ld hl, PartyMon1DVs
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	predef GetUnownLetter
-	callab UpdateUnownDex
-
-.done
-	scf ; When this function returns, the carry flag indicates success vs failure.
-	ret
-; da6d
-
-
-FillPP: ; da6d
-	push bc
-	ld b, NUM_MOVES
-.loop
-	ld a, [hli]
-	and a
-	jr z, .next
-	dec a
-	push hl
-	push de
-	push bc
-	ld hl, Moves
-	ld bc, MOVE_LENGTH
-	call AddNTimes
-	ld de, StringBuffer1
-	ld a, BANK(Moves)
-	call FarCopyBytes
-	pop bc
-	pop de
-	pop hl
-	ld a, [StringBuffer1 + MOVE_PP]
-
-.next
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .loop
-	pop bc
-	ret
-; da96
-
-AddTempmonToParty: ; da96
-	ld hl, PartyCount
-	ld a, [hl]
-	cp PARTY_LENGTH
-	scf
-	ret z
-
-	inc a
-	ld [hl], a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [CurPartySpecies]
-	ld [hli], a
-	ld [hl], $ff
-
-	ld hl, PartyMon1Species
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld e, l
-	ld d, h
-	ld hl, TempMonSpecies
-	call CopyBytes
-
-	ld hl, PartyMonOT
-	ld a, [PartyCount]
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-	ld hl, OTPartyMonOT
-	ld a, [CurPartyMon]
-	call SkipNames
-	ld bc, NAME_LENGTH
-	call CopyBytes
-
-	ld hl, PartyMonNicknames
-	ld a, [PartyCount]
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-	ld hl, OTPartyMonNicknames
-	ld a, [CurPartyMon]
-	call SkipNames
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-	ld a, [CurPartySpecies]
-	ld [wNamedObjectIndexBuffer], a
-	cp EGG
-	jr z, .egg
-	dec a
-	call SetSeenAndCaughtMon
-	ld hl, PartyMon1Happiness
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld [hl], BASE_HAPPINESS
-.egg
-
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr nz, .done
-	ld hl, PartyMon1DVs
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	predef GetUnownLetter
-	callab UpdateUnownDex
-	ld a, [wdef4]
-	and a
-	jr nz, .done
-	ld a, [UnownLetter]
-	ld [wdef4], a
-.done
-
-	and a
-	ret
-
-
-SentGetPkmnIntoFromBox: ; db3f
-; Sents/Gets Pkmn into/from Box depending on Parameter
-; 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, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .check_IfPartyIsFull
-	cp DAYCARE_WITHDRAW
-	jr z, .check_IfPartyIsFull
-	cp DAYCARE_DEPOSIT
-	ld hl, wBreedMon1Species
-	jr z, .breedmon
-
-    ; we want to sent a Pkmn into the Box
-    ; so check if there's enough space
-	ld hl, sBoxCount
-	ld a, [hl]
-	cp MONS_PER_BOX
-	jr nz, .there_is_room
-	jp CloseSRAM_And_SetCarryFlag
-
-.check_IfPartyIsFull
-	ld hl, PartyCount
-	ld a, [hl]
-	cp PARTY_LENGTH
-	jp z, CloseSRAM_And_SetCarryFlag
-
-.there_is_room
-	inc a
-	ld [hl], a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_WITHDRAW
-	ld a, [wBreedMon1Species]
-	jr z, .okay1
-	ld a, [CurPartySpecies]
-
-.okay1
-	ld [hli], a
-	ld [hl], $ff
-	ld a, [wPokemonWithdrawDepositParameter]
-	dec a
-	ld hl, PartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld a, [PartyCount]
-	jr nz, .okay2
-	ld hl, sBoxMon1Species
-	ld bc, BOXMON_STRUCT_LENGTH
-	ld a, [sBoxCount]
-
-.okay2
-	dec a ; PartyCount - 1
-	call AddNTimes
-
-.breedmon
-	push hl
-	ld e, l
-	ld d, h
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	ld hl, sBoxMon1Species
-	ld bc, BOXMON_STRUCT_LENGTH
-	jr z, .okay3
-	cp DAYCARE_WITHDRAW
-	ld hl, wBreedMon1Species
-	jr z, .okay4
-	ld hl, PartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-
-.okay3
-	ld a, [CurPartyMon]
-	call AddNTimes
-
-.okay4
-	ld bc, BOXMON_STRUCT_LENGTH
-	call CopyBytes
-	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_DEPOSIT
-	ld de, wBreedMon1OT
-	jr z, .okay5
-	dec a
-	ld hl, PartyMonOT
-	ld a, [PartyCount]
-	jr nz, .okay6
-	ld hl, sBoxMonOT
-	ld a, [sBoxCount]
-
-.okay6
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-
-.okay5
-	ld hl, sBoxMonOT
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .okay7
-	ld hl, wBreedMon1OT
-	cp DAYCARE_WITHDRAW
-	jr z, .okay8
-	ld hl, PartyMonOT
-
-.okay7
-	ld a, [CurPartyMon]
-	call SkipNames
-
-.okay8
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_DEPOSIT
-	ld de, wBreedMon1Nick
-	jr z, .okay9
-	dec a
-	ld hl, PartyMonNicknames
-	ld a, [PartyCount]
-	jr nz, .okay10
-	ld hl, sBoxMonNicknames
-	ld a, [sBoxCount]
-
-.okay10
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-
-.okay9
-	ld hl, sBoxMonNicknames
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .okay11
-	ld hl, wBreedMon1Nick
-	cp DAYCARE_WITHDRAW
-	jr z, .okay12
-	ld hl, PartyMonNicknames
-
-.okay11
-	ld a, [CurPartyMon]
-	call SkipNames
-
-.okay12
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	pop hl
-
-	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 CalcLevel
-	ld a, d
-	ld [CurPartyLevel], a
-	pop hl
-
-	ld b, h
-	ld c, l
-	ld hl, MON_LEVEL
-	add hl, bc
-	ld [hl], a
-	ld hl, MON_MAXHP
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, MON_EXP + 2
-	add hl, bc
-
-	push bc
-	ld b, $1
-	call CalcPkmnStats
-	pop bc
-
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr nz, .CloseSRAM_And_ClearCarryFlag
-	ld hl, MON_STATUS
-	add hl, bc
-	xor a
-	ld [hl], a
-	ld hl, MON_HP
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .egg
-rept 2
-	inc hl
-endr
-	ld a, [hli]
-	ld [de], a
-	ld a, [hl]
-	inc de
-	ld [de], a
-	jr .CloseSRAM_And_ClearCarryFlag
-
-.egg
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	jr .CloseSRAM_And_ClearCarryFlag
-
-.took_out_of_box
-	ld a, [sBoxCount]
-	dec a
-	ld b, a
-	call Functiondcb6
-
-.CloseSRAM_And_ClearCarryFlag
-	call CloseSRAM
-	and a
-	ret
-; dcb1
-
-CloseSRAM_And_SetCarryFlag: ; dcb1
-	call CloseSRAM
-	scf
-	ret
-; dcb6
-
-
-Functiondcb6: ; dcb6
-	ld a, b
-	ld hl, sBoxMons
-	ld bc, BOXMON_STRUCT_LENGTH
-	call AddNTimes
-	ld b, h
-	ld c, l
-	ld hl, MON_PP
-	add hl, bc
-	push hl
-	push bc
-	ld de, TempMonPP
-	ld bc, NUM_MOVES
-	call CopyBytes
-	pop bc
-	ld hl, MON_MOVES
-	add hl, bc
-	push hl
-	ld de, TempMonMoves
-	ld bc, NUM_MOVES
-	call CopyBytes
-	pop hl
-	pop de
-
-	ld a, [MenuSelection2]
-	push af
-	ld a, [MonType]
-	push af
-	ld b, 0
-.asm_dcec
-	ld a, [hli]
-	and a
-	jr z, .asm_dd18
-	ld [TempMonMoves+0], a
-	ld a, BOXMON
-	ld [MonType], a
-	ld a, b
-	ld [MenuSelection2], a
-	push bc
-	push hl
-	push de
-	callba GetMaxPPOfMove
-	pop de
-	pop hl
-	ld a, [wd265]
-	ld b, a
-	ld a, [de]
-	and %11000000
-	add b
-	ld [de], a
-	pop bc
-	inc de
-	inc b
-	ld a, b
-	cp NUM_MOVES
-	jr c, .asm_dcec
-
-.asm_dd18
-	pop af
-	ld [MonType], a
-	pop af
-	ld [MenuSelection2], a
-	ret
-; dd21
-
-
-Functiondd21: ; dd21
-	ld a, [wBreedMon1Species]
-	ld [CurPartySpecies], a
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	call WaitSFX
-	call Functione698
-	ld a, b
-	ld [wd002], a
-	ld a, e
-	ld [CurPartyLevel], a
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	jp Functiondd64
-; dd42
-
-Functiondd42: ; dd42
-	ld a, [wBreedMon2Species]
-	ld [CurPartySpecies], a
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	call WaitSFX
-	call Functione6b3
-	ld a, b
-	ld [wd002], a
-	ld a, e
-	ld [CurPartyLevel], a
-	ld a, PC_DEPOSIT
-	ld [wPokemonWithdrawDepositParameter], a
-	jp Functiondd64
-; dd64
-
-Functiondd64: ; dd64
-	ld hl, PartyCount
-	ld a, [hl]
-	cp PARTY_LENGTH
-	jr nz, .room_in_party
-	scf
-	ret
-
-.room_in_party
-	inc a
-	ld [hl], a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	ld a, [wBreedMon1Species]
-	ld de, wBreedMon1Nick
-	jr z, .okay
-	ld a, [wBreedMon2Species]
-	ld de, wBreedMon2Nick
-
-.okay
-	ld [hli], a
-	ld [CurSpecies], a
-	ld a, $ff
-	ld [hl], a
-	ld hl, PartyMonNicknames
-	ld a, [PartyCount]
-	dec a
-	call SkipNames
-	push hl
-	ld h, d
-	ld l, e
-	pop de
-	call CopyBytes
-	push hl
-	ld hl, PartyMonOT
-	ld a, [PartyCount]
-	dec a
-	call SkipNames
-	ld d, h
-	ld e, l
-	pop hl
-	call CopyBytes
-	push hl
-	call Functionde1a
-	pop hl
-	ld bc, BOXMON_STRUCT_LENGTH
-	call CopyBytes
-	call GetBaseData
-	call Functionde1a
-	ld b, d
-	ld c, e
-	ld hl, MON_LEVEL
-	add hl, bc
-	ld a, [CurPartyLevel]
-	ld [hl], a
-	ld hl, MON_MAXHP
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, $a
-	add hl, bc
-	push bc
-	ld b, $1
-	call CalcPkmnStats
-	ld hl, PartyMon1Moves
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld a, $1
-	ld [Buffer1], a
-	predef FillMoves
-	ld a, [PartyCount]
-	dec a
-	ld [CurPartyMon], a
-	callba HealPartyMon
-	ld a, [CurPartyLevel]
-	ld d, a
-	callab CalcExpAtLevel
-	pop bc
-	ld hl, $8
-	add hl, bc
-	ld a, [hMultiplicand]
-	ld [hli], a
-	ld a, [hMultiplicand + 1]
-	ld [hli], a
-	ld a, [hMultiplicand + 2]
-	ld [hl], a
-	and a
-	ret
-; de1a
-
-Functionde1a: ; de1a
-	ld a, [PartyCount]
-	dec a
-	ld hl, PartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ret
-; de2a
-
-Functionde2a: ; de2a
-	ld de, wBreedMon1Nick
-	call Functionde44
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	jp Functione039
-; de37
-
-Functionde37: ; de37
-	ld de, wBreedMon2Nick
-	call Functionde44
-	xor a
-	ld [wPokemonWithdrawDepositParameter], a
-	jp Functione039
-; de44
-
-Functionde44: ; de44
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	call SkipNames
-	call CopyBytes
-	ld a, [CurPartyMon]
-	ld hl, PartyMonOT
-	call SkipNames
-	call CopyBytes
-	ld a, [CurPartyMon]
-	ld hl, PartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld bc, BOXMON_STRUCT_LENGTH
-	jp CopyBytes
-
-
-SentPkmnIntoBox: ; de6e
-; Sents the Pkmn into one of Bills Boxes
-; the data comes mainly from 'EnemyMon:'
-	ld a, BANK(sBoxCount)
-	call GetSRAMBank
-	ld de, sBoxCount
-	ld a, [de]
-	cp MONS_PER_BOX
-	jp nc, Functiondf42
-	inc a
-	ld [de], a
-
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	ld c, a
-.asm_de85
-	inc de
-	ld a, [de]
-	ld b, a
-	ld a, c
-	ld c, b
-	ld [de], a
-	inc a
-	jr nz, .asm_de85
-
-	call GetBaseData
-	call ShiftBoxMon
-
-	ld hl, PlayerName
-	ld de, sBoxMonOT
-	ld bc, NAME_LENGTH
-	call CopyBytes
-
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-
-	ld de, sBoxMonNicknames
-	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-	ld hl, EnemyMon
-	ld de, sBoxMon1
-	ld bc, 1 + 1 + NUM_MOVES ; species + item + moves
-	call CopyBytes
-
-	ld hl, PlayerID
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	inc de
-	push de
-	ld a, [CurPartyLevel]
-	ld d, a
-	callab CalcExpAtLevel
-	pop de
-	ld a, [hMultiplicand]
-	ld [de], a
-	inc de
-	ld a, [$ffb5]
-	ld [de], a
-	inc de
-	ld a, [$ffb6]
-	ld [de], a
-	inc de
-
-    ; Set all 5 Experience Values to 0
-	xor a
-	ld b, 2*5
-.asm_dee5
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .asm_dee5
-
-	ld hl, EnemyMonDVs
-	ld b, 2 + NUM_MOVES ; DVs and PP ; EnemyMonHappiness - EnemyMonDVs
-.asm_deef
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .asm_deef
-
-	ld a, BASE_HAPPINESS
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	ld a, [CurPartyLevel]
-	ld [de], a
-	ld a, [CurPartySpecies]
-	dec a
-	call SetSeenAndCaughtMon
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr nz, .asm_df20
-	ld hl, sBoxMon1DVs
-	predef GetUnownLetter
-	callab UpdateUnownDex
-
-.asm_df20
-	ld hl, sBoxMon1Moves
-	ld de, TempMonMoves
-	ld bc, NUM_MOVES
-	call CopyBytes
-
-	ld hl, sBoxMon1PP
-	ld de, TempMonPP
-	ld bc, NUM_MOVES
-	call CopyBytes
-
-	ld b, 0
-	call Functiondcb6
-
-	call CloseSRAM
-	scf
-	ret
-; df42
-
-
-Functiondf42: ; df42
-	call CloseSRAM
-	and a
-	ret
-; df47
-
-ShiftBoxMon: ; df47
-	ld hl, sBoxMonOT
-	ld bc, NAME_LENGTH
-	call .asm_df5f
-
-	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	call .asm_df5f
-
-	ld hl, sBoxMons
-	ld bc, BOXMON_STRUCT_LENGTH
-
-.asm_df5f
-	ld a, [sBoxCount]
-	cp 2
-	ret c
-
-	push hl
-	call AddNTimes
-	dec hl
-	ld e, l
-	ld d, h
-	pop hl
-
-	ld a, [sBoxCount]
-	dec a
-	call AddNTimes
-	dec hl
-
-	push hl
-	ld a, [sBoxCount]
-	dec a
-	ld hl, 0
-	call AddNTimes
-	ld c, l
-	ld b, h
-	pop hl
-.loop
-	ld a, [hld]
-	ld [de], a
-	dec de
-	dec bc
-	ld a, c
-	or b
-	jr nz, .loop
-	ret
-; df8c
-
-GiveEgg:: ; df8c
-	ld a, [CurPartySpecies]
-	push af
-	callab GetPreEvolution
-	callab GetPreEvolution
-	ld a, [CurPartySpecies]
-	dec a
-
-; TryAddMonToParty sets Seen and Caught flags
-; when it is successful.  This routine will make
-; sure that we aren't newly setting flags.
-	push af
-	call CheckCaughtMon
-	pop af
-	push bc
-	call CheckSeenMon
-	push bc
-
-	call TryAddMonToParty
-
-; If we haven't caught this Pokemon before receiving
-; the Egg, reset the flag that was just set by
-; TryAddMonToParty.
-	pop bc
-	ld a, c
-	and a
-	jr nz, .skip_caught_flag
-	ld a, [CurPartySpecies]
-	dec a
-	ld c, a
-	ld d, $0
-	ld hl, PokedexCaught
-	ld b, RESET_FLAG
-	predef FlagPredef
-
-.skip_caught_flag
-; If we haven't seen this Pokemon before receiving
-; the Egg, reset the flag that was just set by
-; TryAddMonToParty.
-	pop bc
-	ld a, c
-	and a
-	jr nz, .skip_seen_flag
-	ld a, [CurPartySpecies]
-	dec a
-	ld c, a
-	ld d, $0
-	ld hl, PokedexSeen
-	ld b, RESET_FLAG
-	predef FlagPredef
-
-.skip_seen_flag
-	pop af
-	ld [CurPartySpecies], a
-	ld a, [PartyCount]
-	dec a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1Species
-	call AddNTimes
-	ld a, [CurPartySpecies]
-	ld [hl], a
-	ld hl, PartyCount
-	ld a, [hl]
-	ld b, 0
-	ld c, a
-	add hl, bc
-	ld a, EGG
-	ld [hl], a
-	ld a, [PartyCount]
-	dec a
-	ld hl, PartyMonNicknames
-	call SkipNames
-	ld de, String_Egg
-	call CopyName2
-	ld a, [PartyCount]
-	dec a
-	ld hl, PartyMon1Happiness
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld a, [wc2cc]
-	bit 1, a
-	ld a, $1
-	jr nz, .asm_e022
-	ld a, [BaseEggSteps]
-
-.asm_e022
-	ld [hl], a
-	ld a, [PartyCount]
-	dec a
-	ld hl, PartyMon1HP
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	xor a
-	ld [hli], a
-	ld [hl], a
-	and a
-	ret
-; e035
-
-String_Egg: ; e035
-	db "EGG@"
-; e039
-
-Functione039: ; e039
-	ld hl, PartyCount
-
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .okay
-
-	ld a, BANK(sBoxCount)
-	call GetSRAMBank
-	ld hl, sBoxCount
-
-.okay
-	ld a, [hl]
-	dec a
-	ld [hli], a
-	ld a, [CurPartyMon]
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld e, l
-	ld d, h
-	inc de
-.asm_e057
-	ld a, [de]
-	inc de
-	ld [hli], a
-	inc a
-	jr nz, .asm_e057
-	ld hl, PartyMonOT
-	ld d, PARTY_LENGTH - 1
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e06d
-	ld hl, sBoxMonOT
-	ld d, MONS_PER_BOX - 1
-
-.asm_e06d
-	ld a, [CurPartyMon]
-	call SkipNames
-	ld a, [CurPartyMon]
-	cp d
-	jr nz, .asm_e07e
-	ld [hl], $ff
-	jp .asm_60f0
-
-.asm_e07e
-	ld d, h
-	ld e, l
-	ld bc, PKMN_NAME_LENGTH
-	add hl, bc
-	ld bc, PartyMonNicknames
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e090
-	ld bc, sBoxMonNicknames
-.asm_e090
-	call CopyDataUntil
-
-	ld hl, PartyMons
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e0a5
-	ld hl, sBoxMons
-	ld bc, BOXMON_STRUCT_LENGTH
-
-.asm_e0a5
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e0bc
-	ld bc, BOXMON_STRUCT_LENGTH
-	add hl, bc
-	ld bc, sBoxMonOT
-	jr .asm_e0c3
-
-.asm_e0bc
-	ld bc, PARTYMON_STRUCT_LENGTH
-	add hl, bc
-	ld bc, PartyMonOT
-
-.asm_e0c3
-	call CopyDataUntil
-	ld hl, PartyMonNicknames
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e0d2
-	ld hl, sBoxMonNicknames
-
-.asm_e0d2
-	ld bc, PKMN_NAME_LENGTH
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld bc, PKMN_NAME_LENGTH
-	add hl, bc
-	ld bc, PartyMonNicknamesEnd
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jr z, .asm_e0ed
-	ld bc, sBoxMonNicknamesEnd
-
-.asm_e0ed
-	call CopyDataUntil
-
-.asm_60f0
-	ld a, [wPokemonWithdrawDepositParameter]
-	and a
-	jp nz, CloseSRAM
-	ld a, [wLinkMode]
-	and a
-	ret nz
-	ld a, BANK(sPartyMail)
-	call GetSRAMBank
-	ld hl, PartyCount
-	ld a, [CurPartyMon]
-	cp [hl]
-	jr z, .asm_e131
-	ld hl, sPartyMail
-	ld bc, MAIL_STRUCT_LENGTH
-	call AddNTimes
-	push hl
-	add hl, bc
-	pop de
-	ld a, [CurPartyMon]
-	ld b, a
-.asm_e11a
-	push bc
-	push hl
-	ld bc, MAIL_STRUCT_LENGTH
-	call CopyBytes
-	pop hl
-	push hl
-	ld bc, MAIL_STRUCT_LENGTH
-	add hl, bc
-	pop de
-	pop bc
-	inc b
-	ld a, [PartyCount]
-	cp b
-	jr nz, .asm_e11a
-
-.asm_e131
-	jp CloseSRAM
-; e134
-
-Functione134: ; e134
-	ld a, MON_LEVEL
-	call GetPartyParamLocation
-	ld a, [hl]
-	ld [MON_LEVEL], a ; wow
-	ld a, MON_SPECIES
-	call GetPartyParamLocation
-	ld a, [hl]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, MON_MAXHP
-	call GetPartyParamLocation
-	ld d, h
-	ld e, l
-	push de
-	ld a, MON_EXP + 2
-	call GetPartyParamLocation
-	ld b, $1
-	call CalcPkmnStats
-	pop de
-	ld a, MON_HP
-	call GetPartyParamLocation
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	ld [hl], a
-	ret
-; e167
-
-CalcPkmnStats: ; e167
-; Calculates all 6 Stats of a Pkmn
-; b = 0 or 1
-; 'c' counts from 1-6 and points with 'BaseStats' to the base value
-; results in $ffb5 and $ffb6 are saved in [de]
-
-	ld c, $0
-.loop
-	inc c
-	call CalcPkmnStatC
-	ld a, [hMultiplicand + 1]
-	ld [de], a
-	inc de
-	ld a, [hMultiplicand + 2]
-	ld [de], a
-	inc de
-	ld a, c
-	cp STAT_SDEF
-	jr nz, .loop
-	ret
-; 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
-	ld a, b
-	ld d, a
-	push hl
-	ld hl, BaseStats
-	dec hl ; has to be decreased, because 'c' begins with 1
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	pop hl
-	push hl
-	ld a, c
-	cp STAT_SDEF
-	jr nz, .not_spdef
-rept 2
-	dec hl
-endr
-
-.not_spdef
-	sla c
-	ld a, d
-	and a
-	jr z, .SkipSqrt
-	add hl, bc
-	push de
-	ld a, [hld]
-	ld e, a
-	ld d, [hl]
-	callba GetSquareRoot
-	pop de
-
-.SkipSqrt
-	srl c
-	pop hl
-	push bc
-	ld bc, MON_DVS - MON_HP_EXP + 1
-	add hl, bc
-	pop bc
-	ld a, c
-	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
-	and $1
-rept 3
-	add a
-endr
-	ld b, a
-	ld a, [hli]
-	and $1
-rept 2
-	add a
-endr
-	add b
-	ld b, a
-	ld a, [hl]
-	swap a
-	and $1
-	add a
-	add b
-	ld b, a
-	ld a, [hl]
-	and $1
-	add b
-	pop bc
-	jr .GotDV
-
-.Attack
-	ld a, [hl]
-	swap a
-	and $f
-	jr .GotDV
-
-.Defense
-	ld a, [hl]
-	and $f
-	jr .GotDV
-
-.Speed
-	inc hl
-	ld a, [hl]
-	swap a
-	and $f
-	jr .GotDV
-
-.Special
-	inc hl
-	ld a, [hl]
-	and $f
-
-.GotDV
-	ld d, 0
-	add e
-	ld e, a
-	jr nc, .no_overflow_1
-	inc d
-
-.no_overflow_1
-	sla e
-	rl d
-	srl b
-	srl b
-	ld a, b
-	add e
-	jr nc, .no_overflow_2
-	inc d
-
-.no_overflow_2
-	ld [hMultiplicand + 2], a
-	ld a, d
-	ld [hMultiplicand + 1], a
-	xor a
-	ld [hMultiplicand + 0], a
-	ld a, [CurPartyLevel]
-	ld [hMultiplier], a
-	call Multiply
-	ld a, [hProduct + 1]
-	ld [hDividend + 0], a
-	ld a, [hProduct + 2]
-	ld [hDividend + 1], a
-	ld a, [hProduct + 3]
-	ld [hDividend + 2], a
-	ld a, 100
-	ld [hDivisor], a
-	ld a, 3
-	ld b, a
-	call Divide
-	ld a, c
-	cp STAT_HP
-	ld a, 5
-	jr nz, .not_hp
-	ld a, [CurPartyLevel]
-	ld b, a
-	ld a, [hQuotient + 2]
-	add b
-	ld [hMultiplicand + 2], a
-	jr nc, .no_overflow_3
-	ld a, [hQuotient + 1]
-	inc a
-	ld [hMultiplicand + 1], a
-
-.no_overflow_3
-	ld a, 10
-
-.not_hp
-	ld b, a
-	ld a, [hQuotient + 2]
-	add b
-	ld [hMultiplicand + 2], a
-	jr nc, .no_overflow_4
-	ld a, [hQuotient + 1]
-	inc a
-	ld [hMultiplicand + 1], a
-
-.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
-
-.max_stat
-	ld a, 999 / $100
-	ld [hMultiplicand + 1], a
-	ld a, 999 % $100
-	ld [hMultiplicand + 2], a
-
-.stat_value_okay
-	pop bc
-	pop de
-	pop hl
-	ret
-; e277
-
-GivePoke:: ; e277
-	push de
-	push bc
-	xor a ; PARTYMON
-	ld [MonType], a
-	call TryAddMonToParty
-	jr nc, .failed
-	ld hl, PartyMonNicknames
-	ld a, [PartyCount]
-	dec a
-	ld [CurPartyMon], a
-	call SkipNames
-	ld d, h
-	ld e, l
-	pop bc
-	ld a, b
-	ld b, $0
-	push bc
-	push de
-	push af
-	ld a, [CurItem]
-	and a
-	jr z, .done
-	ld a, [CurPartyMon]
-	ld hl, PartyMon1Item
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld a, [CurItem]
-	ld [hl], a
-	jr .done
-
-.failed
-	ld a, [CurPartySpecies]
-	ld [TempEnemyMonSpecies], a
-	callab LoadEnemyMon
-	call SentPkmnIntoBox
-	jp nc, Functione3d4
-	ld a, $2
-	ld [MonType], a
-	xor a
-	ld [CurPartyMon], a
-	ld de, wd050
-	pop bc
-	ld a, b
-	ld b, $1
-	push bc
-	push de
-	push af
-	ld a, [CurItem]
-	and a
-	jr z, .done
-	ld a, [CurItem]
-	ld [sBoxMon1Item], a
-
-.done
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	ld [TempEnemyMonSpecies], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	ld de, wd050
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	pop af
-	and a
-	jp z, .asm_e390
-	pop de
-	pop bc
-	pop hl
-	push bc
-	push hl
-	ld a, [ScriptBank]
-	call GetFarHalfword
-	ld bc, PKMN_NAME_LENGTH
-	ld a, [ScriptBank]
-	call FarCopyBytes
-	pop hl
-rept 2
-	inc hl
-endr
-	ld a, [ScriptBank]
-	call GetFarHalfword
-	pop bc
-	ld a, b
-	and a
-	push de
-	push bc
-	jr nz, .asm_e35e
-
-	push hl
-	ld a, [CurPartyMon]
-	ld hl, PartyMonOT
-	call SkipNames
-	ld d, h
-	ld e, l
-	pop hl
-.otnameloop
-	ld a, [ScriptBank]
-	call GetFarByte
-	ld [de], a
-	inc hl
-	inc de
-	cp "@"
-	jr nz, .otnameloop
-	ld a, [ScriptBank]
-	call GetFarByte
-	ld b, a
-	push bc
-	ld a, [CurPartyMon]
-	ld hl, PartyMon1ID
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld a, 01001 / $100
-	ld [hli], a
-	ld [hl], 01001 % $100
-	pop bc
-	callba SetGiftPartyMonCaughtData
-	jr .skip_nickname
-
-.asm_e35e
-	ld a, BANK(sBoxMonOT)
-	call GetSRAMBank
-	ld de, sBoxMonOT
-.loop
-	ld a, [ScriptBank]
-	call GetFarByte
-	ld [de], a
-	inc hl
-	inc de
-	cp "@"
-	jr nz, .loop
-	ld a, [ScriptBank]
-	call GetFarByte
-	ld b, a
-	ld hl, sBoxMon1ID
-	call Random
-	ld [hli], a
-	call Random
-	ld [hl], a
-	call CloseSRAM
-	callba SetGiftBoxMonCaughtData
-	jr .skip_nickname
-
-.asm_e390
-	pop de
-	pop bc
-	push bc
-	push de
-	ld a, b
-	and a
-	jr z, .asm_e3a0
-	callba SetBoxMonCaughtData
-	jr .asm_e3a6
-
-.asm_e3a0
-	callba SetCaughtData
-
-.asm_e3a6
-	callba GiveANickname_YesNo
-	pop de
-	jr c, .skip_nickname
-	call InitNickname
-
-.skip_nickname
-	pop bc
-	pop de
-	ld a, b
-	and a
-	ret z
-	ld hl, TextJump_WasSentToBillsPC
-	call PrintText
-	ld a, BANK(sBoxMonNicknames)
-	call GetSRAMBank
-	ld hl, wd050
-	ld de, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	call CloseSRAM
-	ld b, $1
-	ret
-; e3d4
-
-Functione3d4: ; e3d4
-	pop bc
-	pop de
-	ld b, $2
-	ret
-; e3d9
-
-
-TextJump_WasSentToBillsPC: ; 0xe3d9
-	; was sent to BILL's PC.
-	text_jump Text_WasSentToBillsPC
-	db "@"
-; 0xe3de
-
-InitNickname: ; e3de
-	push de
-	call LoadStandardMenuDataHeader
-	call DisableSpriteUpdates
-	pop de
-	push de
-	ld b, $0
-	callba NamingScreen
-	pop hl
-	ld de, StringBuffer1
-	call InitName
-	ld a, $4 ; XXX could this be in bank 4 in pokered?
-	ld hl, ExitAllMenus
-	rst FarCall
-	ret
-; e3fd
-
 _BillsPC: ; e3fd
 	call .CheckCanUsePC
 	ret c
@@ -8444,7 +4870,7 @@
 ; 0xe43f
 
 .LogOut: ; e43f (3:643f)
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ret
 
 .UseBillsPC: ; e443 (3:6443)
@@ -8455,7 +4881,7 @@
 	ld [wMenuCursorBuffer], a
 	call SetPalettes
 	xor a
-	ld [wcf76], a
+	ld [wWhichIndexSet], a
 	ld [hBGMapMode], a
 	call DoNthMenu
 	jr c, .cancel
@@ -8468,7 +4894,7 @@
 	ld a, b
 	jr nc, .loop
 .cancel
-	call WriteBackup
+	call CloseWindow
 	ret
 ; e46f (3:646f)
 
@@ -8484,7 +4910,7 @@
 	db $80 ; flags
 	db 0 ; items
 	dw .items
-	dw Function1f79
+	dw PlaceMenuStrings
 	dw .strings
 ; 0xe47f
 
@@ -8534,7 +4960,7 @@
 	call ClearPCItemScreen
 
 .quit
-	call WriteBackup
+	call CloseWindow
 	and a
 	ret
 ; e4f9
@@ -8550,7 +4976,7 @@
 	callba _DepositPKMN
 	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
-	call WriteBackup
+	call CloseWindow
 	and a
 	ret
 ; e512 (3:6512)
@@ -8589,7 +5015,6 @@
 	db "@"
 ; 0xe538
 
-
 CheckCurPartyMonFainted: ; e538
 	ld hl, PartyMon1HP
 	ld de, PARTYMON_STRUCT_LENGTH
@@ -8620,13 +5045,12 @@
 	ret
 ; e559
 
-
 BillsPC_WithdrawMenu: ; e559 (3:6559)
 	call LoadStandardMenuDataHeader
 	callba _WithdrawPKMN
 	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
-	call WriteBackup
+	call CloseWindow
 	and a
 	ret
 ; e56d (3:656d)
@@ -8672,18 +5096,18 @@
 	hlcoord 0,12
 	lb bc, 4, 18
 	call TextBox
-	call Function3200
+	call WaitBGMap2
 	call SetPalettes ; load regular palettes?
 	ret
 ; 0xe5bb
 
-Functione5bb: ; e5bb
+CopyBoxmonToTempMon: ; e5bb
 	ld a, [CurPartyMon]
 	ld hl, sBoxMon1Species
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call AddNTimes
 	ld de, TempMonSpecies
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	ld a, BANK(sBoxMon1Species)
 	call GetSRAMBank
 	call CopyBytes
@@ -8694,9 +5118,9 @@
 Functione5d9: ; unreferenced
 	ld a, [wCurBox]
 	cp b
-	jr z, .asm_e5f1
+	jr z, .same_box
 	ld a, b
-	ld hl, Unknown_e66e
+	ld hl, .BoxAddrs
 	ld bc, 3
 	call AddNTimes
 	ld a, [hli]
@@ -8705,16 +5129,16 @@
 	ld h, [hl]
 	ld l, a
 	pop af
-	jr .asm_e5f6
+	jr .okay
 
-.asm_e5f1
+.same_box
 	ld a, BANK(sBoxCount)
 	ld hl, sBoxCount
 
-.asm_e5f6
+.okay
 	call GetSRAMBank
 	ld a, [hl]
-	ld bc, $16
+	ld bc, 1 + MONS_PER_BOX + 1
 	add hl, bc
 	ld b, a
 	ld c, $0
@@ -8721,14 +5145,14 @@
 	ld de, wc608
 	ld a, b
 	and a
-	jr z, .asm_e66a
-.asm_e608
+	jr z, .empty_box
+.loop
 	push hl
 	push bc
 	ld a, c
 	ld bc, 0
 	add hl, bc
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
 	ld [de], a
@@ -8737,21 +5161,23 @@
 	call GetBaseData
 	pop bc
 	pop hl
+
 	push hl
 	push bc
 	ld a, c
-	ld bc, $35c
+	ld bc, MONS_PER_BOX * (BOXMON_STRUCT_LENGTH + NAME_LENGTH)
 	add hl, bc
 	call SkipNames
 	call CopyBytes
 	pop bc
 	pop hl
+
 	push hl
 	push bc
 	ld a, c
-	ld bc, $1f
+	ld bc, MON_LEVEL
 	add hl, bc
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
 	ld [de], a
@@ -8758,12 +5184,13 @@
 	inc de
 	pop bc
 	pop hl
+
 	push hl
 	push bc
 	ld a, c
-	ld bc, $15
+	ld bc, MON_DVS
 	add hl, bc
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hli]
 	and $f0
@@ -8776,24 +5203,23 @@
 	ld a, [BaseGender]
 	cp b
 	ld a, $1
-	jr c, .asm_e662
+	jr c, .okay2
 	xor a
-
-.asm_e662
+.okay2
 	ld [de], a
 	inc de
 	pop bc
 	pop hl
+
 	inc c
 	dec b
-	jr nz, .asm_e608
-
-.asm_e66a
+	jr nz, .loop
+.empty_box
 	call CloseSRAM
 	ret
 ; e66e
 
-Unknown_e66e: ; e66e
+.BoxAddrs: ; e66e
 	dba sBox1
 	dba sBox2
 	dba sBox3
@@ -8810,10 +5236,10 @@
 	dba sBox14
 ; e698
 
-Functione698: ; e698
+GetBreedMon1LevelGrowth: ; e698
 	ld hl, wBreedMon1Stats
 	ld de, TempMon
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	callab CalcLevel
 	ld a, [wBreedMon1Level]
@@ -8825,10 +5251,10 @@
 	ret
 ; e6b3
 
-Functione6b3: ; e6b3
+GetBreedMon2LevelGrowth: ; e6b3
 	ld hl, wBreedMon2Stats
 	ld de, TempMon
-	ld bc, $20
+	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	callab CalcLevel
 	ld a, [wBreedMon2Level]
@@ -8840,7 +5266,6 @@
 	ret
 ; e6ce
 
-
 BugContest_SetCaughtContestMon: ; e6ce
 	ld a, [wContestMon]
 	and a
@@ -8883,10 +5308,8 @@
 	db "@"
 ; 0xe722
 
-
 INCLUDE "items/item_effects.asm"
 
-
 GetPokeBallWobble: ; f971 (3:7971)
 ; Returns whether a Poke Ball will wobble in the catch animation.
 ; Whether a Pokemon is caught is determined beforehand.
@@ -8908,12 +5331,12 @@
 	cp 3 + 1
 	jr z, .finished
 
-	ld a, [wc64e]
+	ld a, [wWildMon]
 	and a
 	ld c, 0 ; next
 	jr nz, .done
 
-	ld hl, WobbleChances
+	ld hl, .WobbleProbabilities
 	ld a, [Buffer1]
 	ld b, a
 .loop
@@ -8933,7 +5356,7 @@
 	jr .done
 
 .finished
-	ld a, [wc64e]
+	ld a, [wWildMon]
 	and a
 	ld c, 1 ; caught
 	jr nz, .done
@@ -8949,8 +5372,9 @@
 	ret
 ; f9ba (3:79ba)
 
-WobbleChances: ; f9ba
+.WobbleProbabilities: ; f9ba
 ; catch rate, chance of wobbling / 255
+; nLeft/255 = (nRight/255) ** 4
 	db   1,  63
 	db   2,  75
 	db   3,  84
@@ -8977,36 +5401,34 @@
 	db 255, 255
 ; f9ea
 
-
 KnowsMove: ; f9ea
 	ld a, MON_MOVES
 	call GetPartyParamLocation
-	ld a, [wd262]
+	ld a, [wPutativeTMHMMove]
 	ld b, a
 	ld c, NUM_MOVES
-.asm_f9f5
+.loop
 	ld a, [hli]
 	cp b
-	jr z, .asm_f9fe
+	jr z, .knows_move
 	dec c
-	jr nz, .asm_f9f5
+	jr nz, .loop
 	and a
 	ret
 
-.asm_f9fe
-	ld hl, UnknownText_0xfa06
+.knows_move
+	ld hl, .Text_knows
 	call PrintText
 	scf
 	ret
 ; fa06
 
-UnknownText_0xfa06: ; 0xfa06
+.Text_knows: ; 0xfa06
 	; knows @ .
 	text_jump UnknownText_0x1c5ea8
 	db "@"
 ; 0xfa0b
 
-
 SECTION "bank4", ROMX, BANK[$4]
 
 INCLUDE "engine/pack.asm"
@@ -9044,9 +5466,9 @@
 
 BugCatchingContestBattleScript:: ; 0x135eb
 	writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST
-	battlecheck
+	randomwildmon
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	copybytetovar wParkBallsRemaining
 	iffalse BugCatchingContestOutOfBallsScript
 	end
@@ -9054,30 +5476,30 @@
 
 BugCatchingContestOverScript:: ; 0x135f8
 	playsound SFX_ELEVATOR_END
-	loadfont
-	writetext UnknownText_0x1360f
-	closetext
+	opentext
+	writetext BugCatchingContestText_BeeepTimesUp
+	waitbutton
 	jump BugCatchingContestReturnToGateScript
 ; 0x13603
 
 BugCatchingContestOutOfBallsScript: ; 0x13603
 	playsound SFX_ELEVATOR_END
-	loadfont
-	writetext UnknownText_0x13614
-	closetext
+	opentext
+	writetext BugCatchingContestText_ContestIsOver
+	waitbutton
 
 BugCatchingContestReturnToGateScript: ; 0x1360b
-	loadmovesprites
+	closetext
 	jumpstd bugcontestresultswarp
 ; 0x1360f
 
-UnknownText_0x1360f: ; 0x1360f
+BugCatchingContestText_BeeepTimesUp: ; 0x1360f
 	; ANNOUNCER: BEEEP! Time's up!
 	text_jump UnknownText_0x1bd2ca
 	db "@"
 ; 0x13614
 
-UnknownText_0x13614: ; 0x13614
+BugCatchingContestText_ContestIsOver: ; 0x13614
 	; ANNOUNCER: The Contest is over!
 	text_jump UnknownText_0x1bd2e7
 	db "@"
@@ -9084,10 +5506,10 @@
 ; 0x13619
 
 RepelWoreOffScript:: ; 0x13619
-	loadfont
+	opentext
 	writetext .text
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 ; 0x13620
 
@@ -9097,8 +5519,8 @@
 	db "@"
 ; 0x13625
 
-SignpostItemScript:: ; 0x13625
-	loadfont
+HiddenItemScript:: ; 0x13625
+	opentext
 	copybytetovar EngineBuffer3
 	itemtotext 0, 0
 	writetext .found_text
@@ -9111,12 +5533,12 @@
 ; 0x1363e
 
 .bag_full: ; 0x1363e
-	keeptextopen
+	buttonsound
 	writetext .no_room_text
-	closetext
+	waitbutton
 
 .finish: ; 13643
-	loadmovesprites
+	closetext
 	end
 ; 0x13645
 
@@ -9141,7 +5563,6 @@
 	call EventFlagAction
 	ret
 
-
 CheckFacingTileForStd:: ; 1365b
 ; Checks to see if the tile you're facing has a std script associated with it.  If so, executes the script and returns carry.
 	ld a, c
@@ -9177,7 +5598,7 @@
 	dbw $97, tv
 	dbw $9d, window
 	dbw $9f, incenseburner
-	db $ff ; end
+	db   -1 ; end
 ; 1369a
 
 Script_JumpStdFromRAM: ; 0x1369a
@@ -9252,357 +5673,21 @@
 	endr
 ; 13d96
 
-
 SECTION "bank5", ROMX, BANK[$5]
 
-
-StopRTC: ; Unreferenced???
-	ld a, SRAM_ENABLE
-	ld [MBC3SRamEnable], a
-	call LatchClock
-	ld a, RTC_DH
-	ld [MBC3SRamBank], a
-	ld a, [MBC3RTC]
-	set 6, a ; halt
-	ld [MBC3RTC], a
-	call CloseSRAM
-	ret
-; 14019
-
-StartRTC: ; 14019
-	ld a, SRAM_ENABLE
-	ld [MBC3SRamEnable], a
-	call LatchClock
-	ld a, RTC_DH
-	ld [MBC3SRamBank], a
-	ld a, [MBC3RTC]
-	res 6, a ; halt
-	ld [MBC3RTC], a
-	call CloseSRAM
-	ret
-; 14032
-
-
-GetTimeOfDay:: ; 14032
-; get time of day based on the current hour
-	ld a, [hHours] ; hour
-	ld hl, TimesOfDay
-
-.check
-; if we're within the given time period,
-; get the corresponding time of day
-	cp [hl]
-	jr c, .match
-; else, get the next entry
-rept 2
-	inc hl
-endr
-; try again
-	jr .check
-
-.match
-; get time of day
-	inc hl
-	ld a, [hl]
-	ld [TimeOfDay], a
-	ret
-; 14044
-
-TimesOfDay: ; 14044
-; hours for the time of day
-; 04-09 morn | 10-17 day | 18-03 nite
-	db 04, NITE
-	db 10, MORN
-	db 18, DAY
-	db 24, NITE
-	db -1, MORN
-; 1404e
-
-Unknown_1404e: ; Unreferenced
-	db 20, 2
-	db 40, 0
-	db 60, 1
-	db -1, 0
-; 14056
-
-
-StageRTCTimeForSave: ; 14056
-	call UpdateTime
-	ld hl, wRTC
-	ld a, [CurDay]
-	ld [hli], a
-	ld a, [hHours]
-	ld [hli], a
-	ld a, [hMinutes]
-	ld [hli], a
-	ld a, [hSeconds]
-	ld [hli], a
-	ret
-; 1406a
-
-SaveRTC: ; 1406a
-	ld a, $a
-	ld [MBC3SRamEnable], a
-	call LatchClock
-	ld hl, MBC3RTC
-	ld a, $c
-	ld [MBC3SRamBank], a
-	res 7, [hl]
-	ld a, BANK(sRTCStatusFlags)
-	ld [MBC3SRamBank], a
-	xor a
-	ld [sRTCStatusFlags], a
-	call CloseSRAM
-	ret
-; 14089
-
-
-
-StartClock:: ; 14089
-	call GetClock
-	call Function1409b
-	call FixDays
-	jr nc, .skip_set
-	; bit 5: Day count exceeds 139
-	; bit 6: Day count exceeds 255
-	call RecordRTCStatus ; set flag on sRTCStatusFlags
-
-.skip_set
-	call StartRTC
-	ret
-; 1409b
-
-Function1409b: ; 1409b
-	ld hl, hRTCDayHi
-	bit 7, [hl]
-	jr nz, .set_bit_7
-	bit 6, [hl]
-	jr nz, .set_bit_7
-	xor a
-	ret
-
-.set_bit_7
-	; Day count exceeds 16383
-	ld a, %10000000
-	call RecordRTCStatus ; set bit 7 on sRTCStatusFlags
-	ret
-; 140ae
-
-Function140ae: ; 140ae
-	call CheckRTCStatus
-	ld c, a
-	and %11000000 ; Day count exceeded 255 or 16383
-	jr nz, .time_overflow
-
-	ld a, c
-	and %00100000 ; Day count exceeded 139
-	jr z, .dont_update
-
-	call UpdateTime
-	ld a, [wRTC + 0]
-	ld b, a
-	ld a, [CurDay]
-	cp b
-	jr c, .dont_update
-
-.time_overflow
-	callba ClearDailyTimers
-	callba Function170923
-; mobile
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8c]
-	inc a
-	ld [$aa8c], a
-	ld a, [$b2fa]
-	inc a
-	ld [$b2fa], a
-	call CloseSRAM
-	ret
-
-.dont_update
-	xor a
-	ret
-; 140ed
-
-
-
-Function140ed:: ; 140ed
-	call GetClock
-	call FixDays
-	ld hl, hRTCSeconds
-	ld de, StartSecond
-
-	ld a, [StringBuffer2 + 3]
-	sub [hl]
-	dec hl
-	jr nc, .okay_secs
-	add 60
-.okay_secs
-	ld [de], a
-	dec de
-
-	ld a, [StringBuffer2 + 2]
-	sbc [hl]
-	dec hl
-	jr nc, .okay_mins
-	add 60
-.okay_mins
-	ld [de], a
-	dec de
-
-	ld a, [StringBuffer2 + 1]
-	sbc [hl]
-	dec hl
-	jr nc, .okay_hrs
-	add 24
-.okay_hrs
-	ld [de], a
-	dec de
-
-	ld a, [StringBuffer2]
-	sbc [hl]
-	dec hl
-	jr nc, .okay_days
-	add 140
-	ld c, 7
-	call SimpleDivide
-
-.okay_days
-	ld [de], a
-	ret
-; 1412a
-
+INCLUDE "engine/rtc.asm"
 INCLUDE "engine/overworld.asm"
-
-Function1499a:: ; 1499a
-	ld a, [PlayerNextTile]
-	cp $60
-	jr z, .warp
-	cp $68
-	jr z, .warp
-	and $f0
-	cp $70
-	jr z, .warp
-	and a
-	ret
-
-.warp
-	scf
-	ret
-; 149af
-
-Function149af:: ; 149af
-	ld a, [PlayerNextTile]
-	cp $70
-	jr z, .not_warp
-	cp $76
-	jr z, .not_warp
-	cp $78
-	jr z, .not_warp
-	cp $7e
-	jr z, .not_warp
-	scf
-	ret
-
-.not_warp
-	xor a
-	ret
-; 149c6
-
-CheckWarpCollision: ; 149c6
-	ld de, 1
-	ld hl, .blocks
-	ld a, [PlayerNextTile]
-	call IsInArray
-	ret
-; 149d3
-
-.blocks: ; 149d3
-	db $71 ; door
-	db $79
-	db $7a ; stairs
-	db $73
-	db $7b ; cave entrance
-	db $74
-	db $7c ; warp pad
-	db $75
-	db $7d
-	db -1
-; 149dd
-
-CheckGrassCollision:: ; 149dd
-	ld a, [PlayerNextTile]
-	ld hl, .blocks
-	ld de, 1
-	call IsInArray
-	ret
-; 149ea
-
-.blocks: ; 149ea
-	db $08
-	db $18 ; tall grass
-	db $14 ; tall grass
-	db $28
-	db $29
-	db $48
-	db $49
-	db $4a
-	db $4b
-	db $4c
-	db -1
-; 149f5
-
-CheckCutCollision: ; 149f5
-	ld a, c
-	ld hl, .blocks
-	ld de, 1
-	call IsInArray
-	ret
-; 14a00
-
-.blocks: ; 14a00
-	db $12 ; cut tree
-	db $1a ; cut tree
-	db $10 ; tall grass
-	db $18 ; tall grass
-	db $14 ; tall grass
-	db $1c ; tall grass
-	db -1
-; 14a07
-
-Function14a07:: ; 14a07
-	ld a, [PlayerNextTile]
-	ld de, $1f
-	cp $71 ; door
-	ret z
-	ld de, $13
-	cp $7c ; warp pad
-	ret z
-	ld de, $23
-	ret
-; 14a1a
-
+INCLUDE "engine/tile_events.asm"
 INCLUDE "engine/save.asm"
-
 INCLUDE "engine/spawn_points.asm"
-
 INCLUDE "engine/map_setup.asm"
-
 INCLUDE "engine/pokecenter_pc.asm"
-
 INCLUDE "engine/mart.asm"
-
 INCLUDE "engine/money.asm"
-
 INCLUDE "items/marts.asm"
-
 INCLUDE "event/mom.asm"
-
 INCLUDE "event/daycare.asm"
-
 INCLUDE "event/photo.asm"
-
 INCLUDE "engine/breeding/egg.asm"
 
 SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1]
@@ -9609,18 +5694,14 @@
 
 INCLUDE "tilesets/data_1.asm"
 
-
 SECTION "Roofs", ROMX, BANK[ROOFS]
 
 INCLUDE "tilesets/roofs.asm"
 
-
 SECTION "Tileset Data 2", ROMX, BANK[TILESETS_2]
 
 INCLUDE "tilesets/data_2.asm"
 
-
-
 SECTION "bank8", ROMX, BANK[$8]
 
 INCLUDE "engine/clock_reset.asm"
@@ -9629,7 +5710,6 @@
 
 INCLUDE "tilesets/data_3.asm"
 
-
 SECTION "bank9", ROMX, BANK[$9]
 
 StringBufferPointers:: ; 24000
@@ -9644,264 +5724,7 @@
 
 INCLUDE "engine/menu.asm"
 
-_BackUpTiles:: ; 24374
-	ld a, [rSVBK]
-	push af
-	ld a, $7
-	ld [rSVBK], a
-
-	ld hl, wcf71
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	push de
-
-	ld b, $10
-	ld hl, wMenuFlags
-.loop
-	ld a, [hli]
-	ld [de], a
-	dec de
-	dec b
-	jr nz, .loop
-
-; 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, [wMenuFlags]
-	bit 6, a
-	jr nz, .bit_6
-	bit 7, a
-	jr z, .not_bit_7
-
-.bit_6
-	ld hl, wcf71
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	set 0, [hl]
-	call MenuBoxCoord2Tile
-	call .copy
-	call MenuBoxCoord2Attr
-	call .copy
-	jr .done
-
-.not_bit_7
-	pop hl ; last-pushed register was de
-	push hl
-	ld a, [hld]
-	ld l, [hl]
-	ld h, a
-	res 0, [hl]
-
-.done
-	pop hl
-	call .ret ; empty function
-	ld a, h
-	ld [de], a
-	dec de
-	ld a, l
-	ld [de], a
-	dec de
-	ld hl, wcf71
-	ld [hl], e
-	inc hl
-	ld [hl], d
-
-	pop af
-	ld [rSVBK], a
-	ld hl, wcf78
-	inc [hl]
-	ret
-; 243cd
-
-.copy: ; 243cd
-	call GetMenuBoxDims
-	inc b
-	inc c
-	call .ret ; empty function
-
-.row
-	push bc
-	push hl
-
-.col
-	ld a, [hli]
-	ld [de], a
-	dec de
-	dec c
-	jr nz, .col
-
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .row
-
-	ret
-; 243e7
-
-.ret: ; 243e7
-	ret
-; 243e8
-
-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
-	jp z, Function2445d
-	ld a, l
-	ld [wcf71], a
-	ld a, h
-	ld [wcf72], a
-	call Function1c47
-	ld a, [wMenuFlags]
-	bit 0, a
-	jr z, .next
-	ld d, h
-	ld e, l
-	call RestoreTileBackup
-
-.next
-	call Function1c7e
-	ld a, h
-	or l
-	jr z, .done
-	call Function1c47
-
-.done
-	pop af
-	ld [rSVBK], a
-	ld hl, wcf78
-	dec [hl]
-	ret
-; 24423
-
-
-Function24423: ; 24423
-	ld a, [VramState]
-	bit 0, a
-	ret z
-	xor a
-	call GetSRAMBank
-	hlcoord 0, 0
-	ld de, sScratch
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call CopyBytes
-	call CloseSRAM
-	call OverworldTextModeSwitch
-	xor a
-	call GetSRAMBank
-	ld hl, sScratch
-	decoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-.asm_2444c
-	ld a, [hl]
-	cp $61
-	jr c, .asm_24452
-	ld [de], a
-
-.asm_24452
-	inc hl
-	inc de
-	dec bc
-	ld a, c
-	or b
-	jr nz, .asm_2444c
-	call CloseSRAM
-	ret
-; 2445d
-
-Function2445d: ; 2445d
-	ld hl, UnknownText_0x24468
-	call PrintText
-	call WaitBGMap
-.asm_24466
-	jr .asm_24466
-; 24468
-
-UnknownText_0x24468: ; 24468
-	text_jump UnknownText_0x1c46b7
-	db "@"
-; 2446d
-
-Function2446d:: ; 2446d
-	ld a, [wMenuData2Flags]
-	ld b, a
-	ld hl, wcfa1
-	ld a, [wMenuBorderTopCoord]
-	inc a
-	bit 6, b
-	jr nz, .asm_2447d
-	inc a
-
-.asm_2447d
-	ld [hli], a
-	ld a, [wMenuBorderLeftCoord]
-	inc a
-	ld [hli], a
-	ld a, [wMenuData2Items]
-	ld [hli], a
-	ld a, $1
-	ld [hli], a
-	ld [hl], $0
-	bit 5, b
-	jr z, .asm_24492
-	set 5, [hl]
-
-.asm_24492
-	ld a, [wMenuFlags]
-	bit 4, a
-	jr z, .asm_2449b
-	set 6, [hl]
-
-.asm_2449b
-	inc hl
-	xor a
-	ld [hli], a
-	ld a, $20
-	ld [hli], a
-	ld a, $1
-	bit 0, b
-	jr nz, .asm_244a9
-	add $2
-
-.asm_244a9
-	ld [hli], a
-	ld a, [wMenuCursorBuffer]
-	and a
-	jr z, .asm_244b7
-	ld c, a
-	ld a, [wMenuData2Items]
-	cp c
-	jr nc, .asm_244b9
-
-.asm_244b7
-	ld c, $1
-
-.asm_244b9
-	ld [hl], c
-	inc hl
-	ld a, $1
-	ld [hli], a
-	xor a
-rept 3
-	ld [hli], a
-endr
-	ret
-; 244c3
-
-
-UpdateItemDescription: ; 0x244c3
+UpdateItemDescription: ; 0x244c3
 	ld a, [MenuSelection]
 	ld [CurSpecies], a
 	hlcoord 0, 12
@@ -9917,7 +5740,7 @@
 ; 0x244e3
 
 Pokepic:: ; 244e3
-	ld hl, MenuDataHeader_0x24547
+	ld hl, PokepicMenuDataHeader
 	call CopyMenuDataHeader
 	call MenuBox
 	call UpdateSprites
@@ -9946,8 +5769,8 @@
 	ret
 ; 24528
 
-PokepicYesOrNo:: ; 24528
-	ld hl, MenuDataHeader_0x24547
+ClosePokepic:: ; 24528
+	ld hl, PokepicMenuDataHeader
 	call CopyMenuDataHeader
 	call ClearMenuBoxInterior
 	call WaitBGMap
@@ -9961,7 +5784,7 @@
 	ret
 ; 24547
 
-MenuDataHeader_0x24547: ; 0x24547
+PokepicMenuDataHeader: ; 0x24547
 	db $40 ; flags
 	db 04, 06 ; start coords
 	db 13, 14 ; end coords
@@ -10040,823 +5863,9 @@
 	xor a
 	ret
 
+INCLUDE "engine/scrolling_menu.asm"
+INCLUDE "engine/switch_items.asm"
 
-Function245af:: ; 245af
-	xor a
-	ld [wcf73], a
-	ld [hBGMapMode], a
-	inc a
-	ld [hInMenu], a
-	call ClearObjectStructsa
-	call Function24764
-	call Function247dd
-	call Function245f1
-	call ApplyTilemap
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 245cb
-
-Function245cb:: ; 245cb
-.loop
-	call MenuJoyAction
-	jp c, .exit
-	call z, .zero
-	jr .loop
-; 245d6
-
-.exit: ; 245d6
-	call Function1ff8
-	ld [wcf73], a
-	ld a, 0
-	ld [hInMenu], a
-	ret
-; 245e1
-
-.zero: ; 245e1
-	call Function245f1
-	ld a, 1
-	ld [hBGMapMode], a
-	ld c, 3
-	call DelayFrames
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 245f1
-
-Function245f1: ; 245f1
-	xor a
-	ld [hBGMapMode], a
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set NO_TEXT_SCROLL, [hl]
-	call Function247f0
-	call Function2488b
-	call Function248b8
-	pop af
-	ld [Options], a
-	ret
-; 24609
-
-MenuJoyAction: ; 24609
-.loop
-	call Function1bd3
-	ld a, [hJoyLast]
-	and D_PAD
-	ld b, a
-	ld a, [hJoyPressed]
-	and BUTTONS
-	or b
-	bit 0, a ; A
-	jp nz, .a_button
-	bit 1, a ; B
-	jp nz, .b_button
-	bit 2, a ; Select
-	jp nz, .select
-	bit 3, a ; Start
-	jp nz, .start
-	bit 4, a ; Right
-	jp nz, .d_right
-	bit 5, a ; Left
-	jp nz, .d_left
-	bit 6, a ; Up
-	jp nz, .d_up
-	bit 7, a ; Down
-	jp nz, .d_down
-	jr .loop
-; 24640
-
-.unreferenced: ; unreferenced
-	ld a, -1
-	and a
-	ret
-; 24644
-
-
-.a_button: ; 24644
-	call Function1bee
-	ld a, [MenuSelection2]
-	dec a
-	call Function248d5
-	ld a, [MenuSelection]
-	ld [CurItem], a
-	ld a, [wcf75]
-	ld [wItemQuantityBuffer], a
-	call Function246fc
-	dec a
-	ld [wcf77], a
-	ld [wd107], a
-	ld a, [MenuSelection]
-	cp -1
-	jr z, .b_button
-	ld a, A_BUTTON
-	scf
-	ret
-; 2466f
-
-.b_button: ; 2466f
-	ld a, B_BUTTON
-	scf
-	ret
-; 24673
-
-.select: ; 24673
-	ld a, [wMenuData2Flags]
-	bit 7, a
-	jp z, xor_a_dec_a
-	ld a, [MenuSelection2]
-	dec a
-	call Function248d5
-	ld a, [MenuSelection]
-	cp -1
-	jp z, xor_a_dec_a
-	call Function246fc
-	dec a
-	ld [wcf77], a
-	ld a, SELECT
-	scf
-	ret
-; 24695
-
-.start: ; 24695
-	ld a, [wMenuData2Flags]
-	bit 6, a
-	jp z, xor_a_dec_a
-	ld a, START
-	scf
-	ret
-; 246a1
-
-.d_left: ; 246a1
-	ld hl, wcfa6
-	bit 7, [hl]
-	jp z, xor_a_dec_a
-	ld a, [wMenuData2Flags]
-	bit 3, a
-	jp z, xor_a_dec_a
-	ld a, D_LEFT
-	scf
-	ret
-; 246b5
-
-.d_right: ; 246b5
-	ld hl, wcfa6
-	bit 7, [hl]
-	jp z, xor_a_dec_a
-	ld a, [wMenuData2Flags]
-	bit 2, a
-	jp z, xor_a_dec_a
-	ld a, D_RIGHT
-	scf
-	ret
-; 246c9
-
-.d_up: ; 246c9
-	ld hl, wcfa6
-	bit 7, [hl]
-	jp z, xor_a
-	ld hl, wMenuScrollPosition
-	ld a, [hl]
-	and a
-	jr z, .xor_dec_up
-	dec [hl]
-	jp xor_a
-
-.xor_dec_up
-	jp xor_a_dec_a
-; 246df
-
-.d_down: ; 246df
-	ld hl, wcfa6
-	bit 7, [hl]
-	jp z, xor_a
-	ld hl, wMenuScrollPosition
-	ld a, [wMenuData2Items]
-	add [hl]
-	ld b, a
-	ld a, [wd144]
-	cp b
-	jr c, .xor_dec_down
-	inc [hl]
-	jp xor_a
-
-.xor_dec_down
-	jp xor_a_dec_a
-; 246fc
-
-Function246fc: ; 246fc
-	ld a, [wMenuScrollPosition]
-	ld c, a
-	ld a, [MenuSelection2]
-	add c
-	ld c, a
-	ret
-; 24706
-
-Function24706: ; 24706 (9:4706)
-	call MenuBoxCoord2Tile
-	ld de, SCREEN_WIDTH
-	add hl, de
-	ld de, 2 * SCREEN_WIDTH
-	ld a, [wMenuData2Items]
-.asm_24713
-	ld [hl], " "
-	add hl, de
-	dec a
-	jr nz, .asm_24713
-	ret
-
-ClearObjectStructsa: ; 2471a
-; Get the value of (wcf95):(wcf96,wcf97) and store it in wd144.
-	ld hl, wcf96
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wcf95]
-	call GetFarByte
-	ld [wd144], a
-; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0)
-	ld a, [wMenuData2Items]
-	ld c, a
-	ld a, [wMenuScrollPosition]
-	add c
-	ld c, a
-	ld a, [wd144]
-	inc a
-	cp c
-	jr nc, .skip
-	ld a, [wMenuData2Items]
-	ld c, a
-	ld a, [wd144]
-	inc a
-	sub c
-	jr nc, .store
-	xor a
-
-.store
-	ld [wMenuScrollPosition], a
-
-.skip
-	ld a, [wMenuScrollPosition]
-	ld c, a
-	ld a, [wMenuCursorBuffer]
-	add c
-	ld b, a
-	ld a, [wd144]
-	inc a
-	cp b
-	jr c, .asm_2475a
-	jr nc, .asm_24763
-
-.asm_2475a
-	xor a
-	ld [wMenuScrollPosition], a
-	ld a, $1
-	ld [wMenuCursorBuffer], a
-
-.asm_24763
-	ret
-; 24764
-
-Function24764: ; 24764
-	ld a, [wMenuData2Flags]
-	ld c, a
-	ld a, [wd144]
-	ld b, a
-	ld a, [wMenuBorderTopCoord]
-	add $1
-	ld [wcfa1], a
-	ld a, [wMenuBorderLeftCoord]
-	add $0
-	ld [wcfa2], a
-	ld a, [wMenuData2Items]
-	cp b
-	jr c, .asm_24786
-	jr z, .asm_24786
-	ld a, b
-	inc a
-
-.asm_24786
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $8c
-	bit 2, c
-	jr z, .asm_24796
-	set 0, a
-
-.asm_24796
-	bit 3, c
-	jr z, .asm_2479c
-	set 1, a
-
-.asm_2479c
-	ld [wcfa5], a
-	xor a
-	ld [wcfa6], a
-	ld a, $20
-	ld [wcfa7], a
-	ld a, $c3
-	bit 7, c
-	jr z, .asm_247b0
-	add $4
-
-.asm_247b0
-	bit 6, c
-	jr z, .asm_247b6
-	add $8
-
-.asm_247b6
-	ld [wcfa8], a
-	ld a, [wcfa3]
-	ld b, a
-	ld a, [wMenuCursorBuffer]
-	and a
-	jr z, .asm_247c8
-	cp b
-	jr z, .asm_247ca
-	jr c, .asm_247ca
-
-.asm_247c8
-	ld a, $1
-
-.asm_247ca
-	ld [MenuSelection2], a
-	ld a, $1
-	ld [wcfaa], a
-	xor a
-	ld [wcfac], a
-	ld [wcfad], a
-	ld [wcfab], a
-	ret
-; 247dd
-
-Function247dd: ; 247dd
-	ld a, [wd144]
-	ld c, a
-	ld a, [wd0e3]
-	and a
-	jr z, .asm_247ef
-	dec a
-	cp c
-	jr c, .asm_247ef
-	xor a
-	ld [wd0e3], a
-
-.asm_247ef
-	ret
-; 247f0
-
-Function247f0: ; 247f0
-	call ClearWholeMenuBox
-	ld a, [wMenuData2Flags]
-	bit 4, a
-	jr z, .asm_2480d
-	ld a, [wMenuScrollPosition]
-	and a
-	jr z, .asm_2480d
-	ld a, [wMenuBorderTopCoord]
-	ld b, a
-	ld a, [wMenuBorderRightCoord]
-	ld c, a
-	call Coord2Tile
-	ld [hl], $61
-
-.asm_2480d
-	call MenuBoxCoord2Tile
-	ld bc, $15
-	add hl, bc
-	ld a, [wMenuData2Items]
-	ld b, a
-	ld c, $0
-.asm_2481a
-	ld a, [wMenuScrollPosition]
-	add c
-	ld [wcf77], a
-	ld a, c
-	call Function248d5
-	ld a, [MenuSelection]
-	cp $ff
-	jr z, .asm_24851
-	push bc
-	push hl
-	call Function2486e
-	pop hl
-	ld bc, $28
-	add hl, bc
-	pop bc
-	inc c
-	ld a, c
-	cp b
-	jr nz, .asm_2481a
-	ld a, [wMenuData2Flags]
-	bit 4, a
-	jr z, .asm_24850
-	ld a, [wMenuBorderBottomCoord]
-	ld b, a
-	ld a, [wMenuBorderRightCoord]
-	ld c, a
-	call Coord2Tile
-	ld [hl], $ee
-
-.asm_24850
-	ret
-
-.asm_24851
-	ld a, [wMenuData2Flags]
-	bit 0, a
-	jr nz, .asm_24866
-	ld de, .string_2485f
-	call PlaceString
-	ret
-
-.string_2485f
-	db "CANCEL@"
-
-.asm_24866
-	ld d, h
-	ld e, l
-	ld hl, wcf98
-	jp CallPointerAt
-; 2486e
-
-Function2486e: ; 2486e
-	push hl
-	ld d, h
-	ld e, l
-	ld hl, wcf98
-	call CallPointerAt
-	pop hl
-	ld a, [wcf93]
-	and a
-	jr z, .asm_2488a
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld d, h
-	ld e, l
-	ld hl, wcf9b
-	call CallPointerAt
-
-.asm_2488a
-	ret
-; 2488b
-
-Function2488b: ; 2488b
-	ld a, [wd0e3]
-	and a
-	jr z, .asm_248b7
-	ld b, a
-	ld a, [wMenuScrollPosition]
-	cp b
-	jr nc, .asm_248b7
-	ld c, a
-	ld a, [wMenuData2Items]
-	add c
-	cp b
-	jr c, .asm_248b7
-	ld a, b
-	sub c
-	dec a
-	add a
-	add $1
-	ld c, a
-	ld a, [wMenuBorderTopCoord]
-	add c
-	ld b, a
-	ld a, [wMenuBorderLeftCoord]
-	add $0
-	ld c, a
-	call Coord2Tile
-	ld [hl], $ec
-
-.asm_248b7
-	ret
-; 248b8
-
-Function248b8: ; 248b8
-	ld a, [wMenuData2Flags]
-	bit 5, a
-	ret z
-	bit 1, a
-	jr z, .asm_248c7
-	ld a, [wd0e3]
-	and a
-	ret nz
-
-.asm_248c7
-	ld a, [MenuSelection2]
-	dec a
-	call Function248d5
-	ld hl, wcf9e
-	call CallPointerAt
-	ret
-; 248d5
-
-Function248d5: ; 248d5
-	push de
-	push hl
-	ld e, a
-	ld a, [wMenuScrollPosition]
-	add e
-	ld e, a
-	ld d, $0
-	ld hl, wcf96
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	inc hl
-	ld a, [wcf94]
-	cp $1
-	jr z, .asm_248f2
-	cp $2
-	jr z, .asm_248f1
-
-.asm_248f1
-	add hl, de
-
-.asm_248f2
-	add hl, de
-	ld a, [wcf95]
-	call GetFarByte
-	ld [MenuSelection], a
-	ld [CurItem], a
-	inc hl
-	ld a, [wcf95]
-	call GetFarByte
-	ld [wcf75], a
-	pop hl
-	pop de
-	ret
-; 2490c
-
-
-Function2490c: ; 2490c (9:490c)
-	ld a, [wd0e3]
-	and a
-	jr z, .asm_2493d
-	ld b, a
-	ld a, [wcf77]
-	inc a
-	cp b
-	jr z, .asm_24945
-	ld a, [wcf77]
-	call Function24a5c
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wd0e3]
-	dec a
-	ld [wd0e3], a
-	call Function249a7
-	jp c, Function249d1
-	ld a, [wcf77]
-	ld c, a
-	ld a, [wd0e3]
-	cp c
-	jr c, .asm_2497a
-	jr .asm_2494a
-.asm_2493d
-	ld a, [wcf77]
-	inc a
-	ld [wd0e3], a
-	ret
-.asm_24945
-	xor a
-	ld [wd0e3], a
-	ret
-.asm_2494a
-	ld a, [wd0e3]
-	call Function24a40
-	ld a, [wcf77]
-	ld d, a
-	ld a, [wd0e3]
-	ld e, a
-	call Function24a6c
-	push bc
-	ld a, [wd0e3]
-	call Function24a5c
-	dec hl
-	push hl
-	call Function24a80
-	add hl, bc
-	ld d, h
-	ld e, l
-	pop hl
-	pop bc
-	call Function24aab
-	ld a, [wcf77]
-	call Function24a4d
-	xor a
-	ld [wd0e3], a
-	ret
-.asm_2497a
-	ld a, [wd0e3]
-	call Function24a40
-	ld a, [wcf77]
-	ld d, a
-	ld a, [wd0e3]
-	ld e, a
-	call Function24a6c
-	push bc
-	ld a, [wd0e3]
-	call Function24a5c
-	ld d, h
-	ld e, l
-	call Function24a80
-	add hl, bc
-	pop bc
-	call CopyBytes
-	ld a, [wcf77]
-	call Function24a4d
-	xor a
-	ld [wd0e3], a
-	ret
-
-Function249a7: ; 249a7 (9:49a7)
-	ld a, [wd0e3]
-	call Function24a5c
-	ld d, h
-	ld e, l
-	ld a, [wcf77]
-	call Function24a5c
-	ld a, [de]
-	cp [hl]
-	jr nz, .asm_249cd
-	ld a, [wcf77]
-	call Function24a97
-	cp $63
-	jr z, .asm_249cd
-	ld a, [wd0e3]
-	call Function24a97
-	cp $63
-	jr nz, .asm_249cf
-.asm_249cd
-	and a
-	ret
-.asm_249cf
-	scf
-	ret
-
-Function249d1: ; 249d1 (9:49d1)
-	ld a, [wd0e3]
-	call Function24a5c
-	inc hl
-	push hl
-	ld a, [wcf77]
-	call Function24a5c
-	inc hl
-	ld a, [hl]
-	pop hl
-	add [hl]
-	cp $64
-	jr c, .asm_24a01
-	sub $63
-	push af
-	ld a, [wcf77]
-	call Function24a5c
-	inc hl
-	ld [hl], $63
-	ld a, [wd0e3]
-	call Function24a5c
-	inc hl
-	pop af
-	ld [hl], a
-	xor a
-	ld [wd0e3], a
-	ret
-.asm_24a01
-	push af
-	ld a, [wcf77]
-	call Function24a5c
-	inc hl
-	pop af
-	ld [hl], a
-	ld hl, wcf96
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wd0e3]
-	cp [hl]
-	jr nz, .asm_24a25
-	dec [hl]
-	ld a, [wd0e3]
-	call Function24a5c
-	ld [hl], $ff
-	xor a
-	ld [wd0e3], a
-	ret
-.asm_24a25
-	dec [hl]
-	call Function24a80
-	push bc
-	ld a, [wd0e3]
-	call Function24a5c
-	pop bc
-	push hl
-	add hl, bc
-	pop de
-.asm_24a34
-	ld a, [hli]
-	ld [de], a
-	inc de
-	cp $ff
-	jr nz, .asm_24a34
-	xor a
-	ld [wd0e3], a
-	ret
-
-Function24a40: ; 24a40 (9:4a40)
-	call Function24a5c
-	ld de, wd002
-	call Function24a80
-	call CopyBytes
-	ret
-
-Function24a4d: ; 24a4d (9:4a4d)
-	call Function24a5c
-	ld d, h
-	ld e, l
-	ld hl, wd002
-	call Function24a80
-	call CopyBytes
-	ret
-
-Function24a5c: ; 24a5c (9:4a5c)
-	push af
-	call Function24a80
-	ld hl, wcf96
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	inc hl
-	pop af
-	call AddNTimes
-	ret
-
-Function24a6c: ; 24a6c (9:4a6c)
-	push hl
-	call Function24a80
-	ld a, d
-	sub e
-	jr nc, .asm_24a76
-	dec a
-	cpl
-.asm_24a76
-	ld hl, 0
-	call AddNTimes
-	ld b, h
-	ld c, l
-	pop hl
-	ret
-
-Function24a80: ; 24a80 (9:4a80)
-	push hl
-	ld a, [wcf94]
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_24a91
-rept 2
-	add hl, bc
-endr
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	pop hl
-	ret
-; 24a91 (9:4a91)
-
-Unknown_24a91: ; 24a91
-	dw 0, 1, 2
-; 24a97
-
-Function24a97: ; 24a97 (9:4a97)
-	push af
-	call Function24a80
-	ld a, c
-	cp $2
-	jr nz, .asm_24aa7
-	pop af
-	call Function24a5c
-	inc hl
-	ld a, [hl]
-	ret
-.asm_24aa7
-	pop af
-	ld a, $1
-	ret
-
-Function24aab: ; 24aab (9:4aab)
-	ld a, [hld]
-	ld [de], a
-	dec de
-	dec bc
-	ld a, b
-	or c
-	jr nz, Function24aab
-	ret
-
 PlaceMenuItemName: ; 0x24ab4
 	push de
 	ld a, [MenuSelection]
@@ -10880,7 +5889,7 @@
 	add hl, de
 	ld [hl], "×"
 	inc hl
-	ld de, wcf75
+	ld de, MenuSelectionQuantity
 	lb bc, 1, 2
 	call PrintNum
 
@@ -10888,25 +5897,25 @@
 	ret
 ; 0x24ae8
 
-PlaceMoneyTopRightOW: ; 24ae8
+PlaceMoneyTopRight: ; 24ae8
 	ld hl, MenuDataHeader_0x24b15
 	call CopyMenuDataHeader
-	jr Function24b01
+	jr PlaceMoneyDataHeader
 
-PlaceMoneyBottomLeftOW: ; 24af0
+PlaceMoneyBottomLeft: ; 24af0
 	ld hl, MenuDataHeader_0x24b1d
 	call CopyMenuDataHeader
-	jr Function24b01
+	jr PlaceMoneyDataHeader
 
-PlaceMoneyTopRightMenu: ; 24af8
+PlaceMoneyAtTopLeftOfTextbox: ; 24af8
 	ld hl, MenuDataHeader_0x24b15
-	ld de, $b
-	call Function1e2e
+	lb de, 0, 11
+	call OffsetMenuDataHeader
 
-Function24b01: ; 24b01
+PlaceMoneyDataHeader: ; 24b01
 	call MenuBox
 	call MenuBoxCoord2Tile
-	ld de, $15
+	ld de, SCREEN_WIDTH + 1
 	add hl, de
 	ld de, Money
 	lb bc, PRINTNUM_MONEY | 3, 6
@@ -11079,7 +6088,6 @@
 	db "LEVEL@"
 ; 24c64
 
-
 FindApricornsInBag: ; 24c64
 ; Checks the bag for Apricorns.
 	ld hl, Buffer1
@@ -11103,9 +6111,8 @@
 	ld a, [hl]
 	call .addtobuffer
 .nope
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .loop
 
 .done
@@ -11139,719 +6146,9 @@
 	db -1
 ; 24caf
 
-
-MonMenuOptionStrings: ; 24caf
-	db "STATS@"
-	db "SWITCH@"
-	db "ITEM@"
-	db "CANCEL@"
-	db "MOVE@"
-	db "MAIL@"
-	db "ERROR!@"
-; 24cd9
-
-MonMenuOptions: ; 24cd9
-
-; Moves
-	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 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 -1
-; 24d19
-
-MonSubmenu: ; 24d19
-	xor a
-	ld [hBGMapMode], a
-	call GetMonSubmenuItems
-	callba Function8ea4a
-	ld hl, .MenuDataHeader
-	call LoadMenuDataHeader
-	call .GetTopCoord
-	call PopulateMonMenu
-
-	ld a, 1
-	ld [hBGMapMode], a
-	call MonMenuLoop
-	ld [MenuSelection], a
-
-	call ExitMenu
-	ret
-; 24d3f
-
-.MenuDataHeader: ; 24d3f
-	db $40 ; tile backup
-	db 00, 06 ; start coords
-	db 17, 19 ; end coords
-	dw 0
-	db 1 ; default option
-; 24d47
-
-.GetTopCoord: ; 24d47
-; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
-	ld a, [Buffer1]
-	inc a
-	add a
-	ld b, a
-	ld a, [wMenuBorderBottomCoord]
-	sub b
-	inc a
-	ld [wMenuBorderTopCoord], a
-	call MenuBox
-	ret
-; 24d59
-
-MonMenuLoop: ; 24d59
-.loop
-	ld a, $a0 ; flags
-	ld [wMenuData2Flags], a
-	ld a, [Buffer1] ; items
-	ld [wMenuData2Items], a
-	call Function1c10
-	ld hl, wcfa5
-	set 6, [hl]
-	call Function1bc9
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	ld a, [hJoyPressed]
-	bit 0, a ; A
-	jr nz, .select
-	bit 1, a ; B
-	jr nz, .cancel
-	jr .loop
-
-.cancel
-	ld a, MONMENU_CANCEL ; CANCEL
-	ret
-
-.select
-	ld a, [MenuSelection2]
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, Buffer2
-	add hl, bc
-	ld a, [hl]
-	ret
-; 24d91
-
-PopulateMonMenu: ; 24d91
-	call MenuBoxCoord2Tile
-	ld bc, $2a ; 42
-	add hl, bc
-	ld de, Buffer2
-.loop
-	ld a, [de]
-	inc de
-	cp -1
-	ret z
-	push de
-	push hl
-	call GetMonMenuString
-	pop hl
-	call PlaceString
-	ld bc, $28 ; 40
-	add hl, bc
-	pop de
-	jr .loop
-; 24db0
-
-GetMonMenuString: ; 24db0
-	ld hl, MonMenuOptions + 1
-	ld de, 3
-	call IsInArray
-	dec hl
-	ld a, [hli]
-	cp 1
-	jr z, .NotMove
-	inc hl
-	ld a, [hl]
-	ld [wd265], a
-	call GetMoveName
-	ret
-
-.NotMove
-	inc hl
-	ld a, [hl]
-	dec a
-	ld hl, MonMenuOptionStrings
-	call GetNthString
-	ld d, h
-	ld e, l
-	ret
-; 24dd4
-
-GetMonSubmenuItems: ; 24dd4
-	call ResetMonSubmenu
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .egg
-	ld a, [wLinkMode]
-	and a
-	jr nz, .skip_moves
-	ld a, MON_MOVES
-	call GetPartyParamLocation
-	ld d, h
-	ld e, l
-	ld c, NUM_MOVES
-.loop
-	push bc
-	push de
-	ld a, [de]
-	and a
-	jr z, .next
-	push hl
-	call IsFieldMove
-	pop hl
-	jr nc, .next
-	call AddMonMenuItem
-
-.next
-	pop de
-	inc de
-	pop bc
-	dec c
-	jr nz, .loop
-
-.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, MON_ITEM
-	call GetPartyParamLocation
-	ld d, [hl]
-	callba ItemIsMail
-	pop hl
-	ld a, MONMENU_MAIL
-	jr c, .ok
-	ld a, MONMENU_ITEM
-
-.ok
-	call AddMonMenuItem
-
-.skip2
-	ld a, [Buffer1]
-	cp NUM_MON_SUBMENU_ITEMS
-	jr z, .ok2
-	ld a, MONMENU_CANCEL
-	call AddMonMenuItem
-
-.ok2
-	call TerminateMonSubmenu
-	ret
-
-.egg
-	ld a, MONMENU_STATS
-	call AddMonMenuItem
-	ld a, MONMENU_SWITCH
-	call AddMonMenuItem
-	ld a, MONMENU_CANCEL
-	call AddMonMenuItem
-	call TerminateMonSubmenu
-	ret
-; 24e52
-
-IsFieldMove: ; 24e52
-	ld b, a
-	ld hl, MonMenuOptions
-.next
-	ld a, [hli]
-	cp -1
-	jr z, .nope
-	cp MONMENU_MENUOPTION
-	jr z, .nope
-	ld d, [hl]
-	inc hl
-	ld a, [hli]
-	cp b
-	jr nz, .next
-	ld a, d
-	scf
-
-.nope
-	ret
-; 24e68
-
-ResetMonSubmenu: ; 24e68
-	xor a
-	ld [Buffer1], a
-	ld hl, Buffer2
-	ld bc, NUM_MON_SUBMENU_ITEMS + 1
-	call ByteFill
-	ret
-; 24e76
-
-TerminateMonSubmenu: ; 24e76
-	ld a, [Buffer1]
-	ld e, a
-	ld d, $0
-	ld hl, Buffer2
-	add hl, de
-	ld [hl], -1
-	ret
-; 24e83
-
-AddMonMenuItem: ; 24e83
-	push hl
-	push de
-	push af
-	ld a, [Buffer1]
-	ld e, a
-	inc a
-	ld [Buffer1], a
-	ld d, $0
-	ld hl, Buffer2
-	add hl, de
-	pop af
-	ld [hl], a
-	pop de
-	pop hl
-	ret
-; 24e99
-
-Function24e99: ; 24e99
-; BattleMonMenu
-	ld hl, MenuDataHeader_0x24ed4
-	call CopyMenuDataHeader
-	xor a
-	ld [hBGMapMode], a
-	call MenuBox
-	call UpdateSprites
-	call Function1c89
-	call WaitBGMap
-	call CopyMenuData2
-	ld a, [wMenuData2Flags]
-	bit 7, a
-	jr z, .asm_24ed0
-	call Function1c10
-	ld hl, wcfa5
-	set 6, [hl]
-	call Function1bc9
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	ld a, [hJoyPressed]
-	bit 1, a
-	jr z, .asm_24ed2
-	ret z
-
-.asm_24ed0
-	scf
-	ret
-
-.asm_24ed2
-	and a
-	ret
-; 24ed4
-
-MenuDataHeader_0x24ed4: ; 24ed4
-	db $00 ; flags
-	db 11, 11 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData2_0x24edc
-	db 1 ; default option
-; 24edc
-
-MenuData2_0x24edc: ; 24edc
-	db $c0 ; flags
-	db 3 ; items
-	db "SWITCH@"
-	db "STATS@"
-	db "CANCEL@"
-; 24ef2
-
-
-LoadBattleMenu: ; 24ef2
-	ld hl, BattleMenuDataHeader
-	call LoadMenuDataHeader
-	ld a, [wd0d2]
-	ld [wMenuCursorBuffer], a
-	call Function2039
-	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
-	call ExitMenu
-	ret
-; 24f0b
-
-
-SafariBattleMenu: ; 24f0b
-; untranslated
-	ld hl, MenuDataHeader_0x24f4e
-	call LoadMenuDataHeader
-	jr Function24f19
-; 24f13
-
-ContestBattleMenu: ; 24f13
-	ld hl, MenuDataHeader_0x24f89
-	call LoadMenuDataHeader
-; 24f19
-
-Function24f19: ; 24f19
-	ld a, [wd0d2]
-	ld [wMenuCursorBuffer], a
-	call InterpretMenu
-	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
-	call ExitMenu
-	ret
-; 24f2c
-
-
-BattleMenuDataHeader: ; 24f2c
-	db $40 ; flags
-	db 12, 08 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData_0x24f34
-	db 1 ; default option
-; 24f34
-
-MenuData_0x24f34: ; 0x24f34
-	db $81 ; flags
-	dn 2, 2 ; rows, columns
-	db 6 ; spacing
-	dba Strings24f3d
-	dbw BANK(MenuData_0x24f34), 0
-; 0x24f3d
-
-Strings24f3d: ; 0x24f3d
-	db "FIGHT@"
-	db "<PKMN>@"
-	db "PACK@"
-	db "RUN@"
-; 24f4e
-
-
-MenuDataHeader_0x24f4e: ; 24f4e
-	db $40 ; flags
-	db 12, 00 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData_0x24f56
-	db 1 ; default option
-; 24f56
-
-MenuData_0x24f56: ; 24f56
-	db $81 ; flags
-	dn 2, 2 ; rows, columns
-	db 11 ; spacing
-	dba Strings24f5f
-	dba Function24f7c
-; 24f5f
-
-Strings24f5f: ; 24f5f
-	db "サファりボール×  @" ; "SAFARI BALL×  @"
-	db "エサをなげる@" ; "THROW BAIT"
-	db "いしをなげる@" ; "THROW ROCK"
-	db "にげる@" ; "RUN"
-; 24f7c
-
-Function24f7c: ; 24f7c
-	hlcoord 17, 13
-	ld de, wSafariBallsRemaining
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ret
-; 24f89
-
-
-MenuDataHeader_0x24f89: ; 24f89
-	db $40 ; flags
-	db 12, 02 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData_0x24f91
-	db 1 ; default option
-; 24f91
-
-MenuData_0x24f91: ; 24f91
-	db $81 ; flags
-	dn 2, 2 ; rows, columns
-	db 12 ; spacing
-	dba Strings24f9a
-	dba Function24fb2
-; 24f9a
-
-Strings24f9a: ; 24f9a
-	db "FIGHT@"
-	db "<PKMN>", "@"
-	db "PARKBALL×  @"
-	db "RUN@"
-; 24fb2
-
-Function24fb2: ; 24fb2
-	hlcoord 13, 16
-	ld de, wParkBallsRemaining
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ret
-; 24fbf
-
-
-Function24fbf: ; 24fbf
-	ld hl, MenuDataHeader_0x250ed
-	call LoadMenuDataHeader
-	call Function24ff9
-	ret
-; 24fc9
-
-
-Function24fc9: ; 24fc9
-	callba GetItemPrice
-Function24fcf: ; 24fcf
-	ld a, d
-	ld [Buffer1], a
-	ld a, e
-	ld [Buffer2], a
-	ld hl, MenuDataHeader_0x250f5
-	call LoadMenuDataHeader
-	call Function24ff9
-	ret
-; 24fe1
-
-Function24fe1: ; 24fe1
-	callba GetItemPrice
-	ld a, d
-	ld [Buffer1], a
-	ld a, e
-	ld [Buffer2], a
-	ld hl, MenuDataHeader_0x250fd
-	call LoadMenuDataHeader
-	call Function24ff9
-	ret
-; 24ff9
-
-Function24ff9: ; 24ff9
-	ld a, $1
-	ld [wItemQuantityChangeBuffer], a
-.loop
-	call Function25072 ; update display
-	call Function2500e ; joy action
-	jr nc, .loop
-	cp -1
-	jr nz, .nope
-	scf
-	ret
-
-.nope
-	and a
-	ret
-; 2500e
-
-Function2500e: ; 2500e
-	call Function354b ; get joypad
-	bit B_BUTTON_F, c
-	jr nz, .b
-	bit A_BUTTON_F, c
-	jr nz, .a
-	bit D_DOWN_F, c
-	jr nz, .down
-	bit D_UP_F, c
-	jr nz, .up
-	bit D_LEFT_F, c
-	jr nz, .left
-	bit D_RIGHT_F, c
-	jr nz, .right
-	and a
-	ret
-
-.b
-	ld a, -1
-	scf
-	ret
-
-.a
-	ld a, 0
-	scf
-	ret
-
-.down
-	ld hl, wItemQuantityChangeBuffer
-	dec [hl]
-	jr nz, .finish_down
-	ld a, [wItemQuantityBuffer]
-	ld [hl], a
-
-.finish_down
-	and a
-	ret
-
-.up
-	ld hl, wItemQuantityChangeBuffer
-	inc [hl]
-	ld a, [wItemQuantityBuffer]
-	cp [hl]
-	jr nc, .finish_up
-	ld [hl], $1
-
-.finish_up
-	and a
-	ret
-
-.left
-	ld a, [wItemQuantityChangeBuffer]
-	sub $a
-	jr c, .load_1
-	jr z, .load_1
-	jr .finish_left
-
-.load_1
-	ld a, $1
-
-.finish_left
-	ld [wItemQuantityChangeBuffer], a
-	and a
-	ret
-
-.right
-	ld a, [wItemQuantityChangeBuffer]
-	add $a
-	ld b, a
-	ld a, [wItemQuantityBuffer]
-	cp b
-	jr nc, .finish_right
-	ld b, a
-
-.finish_right
-	ld a, b
-	ld [wItemQuantityChangeBuffer], a
-	and a
-	ret
-; 25072
-
-Function25072: ; 25072
-	call MenuBox
-	call MenuBoxCoord2Tile
-	ld de, $15
-	add hl, de
-	ld [hl], $f1
-	inc hl
-	ld de, wItemQuantityChangeBuffer
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ld a, [wMenuData2Pointer]
-	ld e, a
-	ld a, [wMenuData2Pointer + 1]
-	ld d, a
-	ld a, [wMenuDataBank]
-	call FarCall_de
-	ret
-; 25097
-
-
-Function25097: ; 25097
-	ret
-; 25098
-
-Function25098: ; 25098
-	call Function250a9
-	call Function250d1
-	ret
-; 2509f
-
-Function2509f: ; 2509f
-	call Function250a9
-	call Function250c1
-	call Function250d1
-	ret
-; 250a9
-
-Function250a9: ; 250a9
-	xor a
-	ld [hMultiplicand + 0], a
-	ld a, [Buffer1]
-	ld [hMultiplicand + 1], a
-	ld a, [Buffer2]
-	ld [hMultiplicand + 2], a
-	ld a, [wItemQuantityChangeBuffer]
-	ld [hMultiplier], a
-	push hl
-	call Multiply
-	pop hl
-	ret
-; 250c1
-
-Function250c1: ; 250c1
-	push hl
-	ld hl, hMultiplicand
-	ld a, [hl]
-	srl a
-	ld [hli], a
-	ld a, [hl]
-	rra
-	ld [hli], a
-	ld a, [hl]
-	rra
-	ld [hl], a
-	pop hl
-	ret
-; 250d1
-
-Function250d1: ; 250d1
-	push hl
-	ld hl, hMoneyTemp
-	ld a, [hMultiplicand]
-	ld [hli], a
-	ld a, [$ffb5]
-	ld [hli], a
-	ld a, [$ffb6]
-	ld [hl], a
-	pop hl
-	inc hl
-	ld de, hMoneyTemp
-	lb bc, PRINTNUM_MONEY | 3, 6
-	call PrintNum
-	call WaitBGMap
-	ret
-; 250ed
-
-MenuDataHeader_0x250ed: ; 0x250ed
-	db $40 ; flags
-	db 09, 15 ; start coords
-	db 11, 19 ; end coords
-	dw Function25097
-	db 0 ; default option
-; 0x250f5
-
-MenuDataHeader_0x250f5: ; 0x250f5
-	db $40 ; flags
-	db 15, 07 ; start coords
-	db 17, 19 ; end coords
-	dw Function25098
-	db -1 ; default option
-; 0x250fd
-
-MenuDataHeader_0x250fd: ; 0x250fd
-	db $40 ; flags
-	db 15, 07 ; start coords
-	db 17, 19 ; end coords
-	dw Function2509f
-	db 0 ; default option
-; 0x25105
-
+INCLUDE "engine/mon_menu.asm"
+INCLUDE "battle/menu.asm"
+INCLUDE "engine/buy_sell_toss.asm"
 INCLUDE "engine/trainer_card.asm"
 
 ProfOaksPC: ; 0x265d3
@@ -11878,7 +6175,7 @@
 	ret
 ; 0x26601
 
-Function26601: ; 0x26601
+ProfOaksPCRating: ; 0x26601
 	call Rate
 	push de
 	ld de, MUSIC_NONE
@@ -11902,7 +6199,7 @@
 	ld [wd003], a
 
 ; print appropriate rating
-	call ClearOakRatingBuffers
+	call .UpdateRatingBuffers
 	ld hl, OakPCText3
 	call PrintText
 	call JoyWaitAorB
@@ -11915,17 +6212,17 @@
 	ret
 ; 0x26647
 
-ClearOakRatingBuffers: ; 0x26647
+.UpdateRatingBuffers: ; 0x26647
 	ld hl, StringBuffer3
 	ld de, wd002
-	call ClearOakRatingBuffer
+	call .UpdateRatingBuffer
 	ld hl, StringBuffer4
 	ld de, wd003
-	call ClearOakRatingBuffer
+	call .UpdateRatingBuffer
 	ret
 ; 0x2665a
 
-ClearOakRatingBuffer: ; 0x2665a
+.UpdateRatingBuffer: ; 0x2665a
 	push hl
 	ld a, "@"
 	ld bc, ITEM_NAME_LENGTH
@@ -11962,86 +6259,32 @@
 ; 0x2667f
 
 OakRatings: ; 0x2667f
-; db count (if number caught ≤ this number, then this entry is used)
-; dw sound effect
-; dw text pointer
+oakrating: MACRO
+	db \1
+	dw \2, \3
+endm
 
-	db 9
-	dw SFX_DEX_FANFARE_LESS_THAN_20
-	dw OakRating01
+; if you caught at most this many, play this sound, load this text
+	oakrating   9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+	oakrating  19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+	oakrating  34, SFX_DEX_FANFARE_20_49,        OakRating03
+	oakrating  49, SFX_DEX_FANFARE_20_49,        OakRating04
+	oakrating  64, SFX_DEX_FANFARE_50_79,        OakRating05
+	oakrating  79, SFX_DEX_FANFARE_50_79,        OakRating06
+	oakrating  94, SFX_DEX_FANFARE_80_109,       OakRating07
+	oakrating 109, SFX_DEX_FANFARE_80_109,       OakRating08
+	oakrating 124, SFX_CAUGHT_MON,               OakRating09
+	oakrating 139, SFX_CAUGHT_MON,               OakRating10
+	oakrating 154, SFX_DEX_FANFARE_140_169,      OakRating11
+	oakrating 169, SFX_DEX_FANFARE_140_169,      OakRating12
+	oakrating 184, SFX_DEX_FANFARE_170_199,      OakRating13
+	oakrating 199, SFX_DEX_FANFARE_170_199,      OakRating14
+	oakrating 214, SFX_DEX_FANFARE_200_229,      OakRating15
+	oakrating 229, SFX_DEX_FANFARE_200_229,      OakRating16
+	oakrating 239, SFX_DEX_FANFARE_230_PLUS,     OakRating17
+	oakrating 248, SFX_DEX_FANFARE_230_PLUS,     OakRating18
+	oakrating 255, SFX_DEX_FANFARE_230_PLUS,     OakRating19
 
-	db 19
-	dw SFX_DEX_FANFARE_LESS_THAN_20
-	dw OakRating02
-
-	db 34
-	dw SFX_DEX_FANFARE_20_49
-	dw OakRating03
-
-	db 49
-	dw SFX_DEX_FANFARE_20_49
-	dw OakRating04
-
-	db 64
-	dw SFX_DEX_FANFARE_50_79
-	dw OakRating05
-
-	db 79
-	dw SFX_DEX_FANFARE_50_79
-	dw OakRating06
-
-	db 94
-	dw SFX_DEX_FANFARE_80_109
-	dw OakRating07
-
-	db 109
-	dw SFX_DEX_FANFARE_80_109
-	dw OakRating08
-
-	db 124
-	dw SFX_CAUGHT_MON
-	dw OakRating09
-
-	db 139
-	dw SFX_CAUGHT_MON
-	dw OakRating10
-
-	db 154
-	dw SFX_DEX_FANFARE_140_169
-	dw OakRating11
-
-	db 169
-	dw SFX_DEX_FANFARE_140_169
-	dw OakRating12
-
-	db 184
-	dw SFX_DEX_FANFARE_170_199
-	dw OakRating13
-
-	db 199
-	dw SFX_DEX_FANFARE_170_199
-	dw OakRating14
-
-	db 214
-	dw SFX_DEX_FANFARE_200_229
-	dw OakRating15
-
-	db 229
-	dw SFX_DEX_FANFARE_200_229
-	dw OakRating16
-
-	db 239
-	dw SFX_DEX_FANFARE_230_PLUS
-	dw OakRating17
-
-	db 248
-	dw SFX_DEX_FANFARE_230_PLUS
-	dw OakRating18
-
-	db 255
-	dw SFX_DEX_FANFARE_230_PLUS
-	dw OakRating19
-
 OakPCText1: ; 0x266de
 	text_jump _OakPCText1
 	db "@"
@@ -12147,7 +6390,6 @@
 	ret
 ; 2709e
 
-
 LevelUpHappinessMod: ; 2709e
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1CaughtLocation
@@ -12183,12 +6425,11 @@
 
 .gettutorialbackpic
 	callba GetTrainerBackpic
-
 .continue
 	callba GetMonFrontpic
 	callba _LoadBattleFontsHPBar
 	call GetMemSGBLayout
-	call WriteBackup
+	call CloseWindow
 	call LoadStandardMenuDataHeader
 	call WaitBGMap
 	jp SetPalettes
@@ -12284,12 +6525,11 @@
 INCLUDE "battle/moves/move_effects.asm"
 
 Function27a28: ; 27a28
-	call Function2500e
+	call BuySellToss_InterpretJoypad
 	ld b, a
 	ret
 ; 27a2d
 
-
 SECTION "bankA", ROMX, BANK[$A]
 
 INCLUDE "engine/link.asm"
@@ -12476,7 +6716,6 @@
 	ret
 ; 2ba1a
 
-
 ChrisBackpic: ; 2ba1a
 INCBIN "gfx/misc/player.6x6.2bpp.lz"
 ; 2bbaa
@@ -12485,1388 +6724,26 @@
 INCBIN "gfx/misc/dude.6x6.2bpp.lz"
 ; 2bcea
 
-
 SECTION "bankB", ROMX, BANK[$B]
 
-Function2c000: ; 2c000
-	ld a, $e4
-	ld [rOBP0], a
-	call Function2c165
-	call Function2c01c
-	ld a, [wBattleMode]
-	dec a
-	ret z
-	jp Function2c03a
-; 2c012
+INCLUDE "battle/trainer_huds.asm"
 
-
-
-Function2c012: ; 2c012
-	ld a, $e4
-	ld [rOBP0], a
-	call Function2c165
-	jp Function2c03a
-; 2c01c
-
-Function2c01c: ; 2c01c
-	call Function2c0ad
-	ld hl, PartyMon1HP
-	ld de, PartyCount
-	call Function2c059
-	ld a, $60
-	ld hl, wcfc4
-	ld [hli], a
-	ld [hl], a
-	ld a, $8
-	ld [wd003], a
-	ld hl, Sprites
-	jp Function2c143
-; 2c03a
-
-
-
-Function2c03a: ; 2c03a
-	call Function2c0c5
-	ld hl, OTPartyMon1HP
-	ld de, OTPartyCount
-	call Function2c059
-	ld hl, wcfc4
-	ld a, $48
-	ld [hli], a
-	ld [hl], $20
-	ld a, $f8
-	ld [wd003], a
-	ld hl, Sprites + $18
-	jp Function2c143
-; 2c059
-
-
-Function2c059: ; 2c059
-	ld a, [de]
-	push af
-	ld de, Buffer1
-	ld c, $6
-	ld a, $34
-.asm_2c062
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_2c062
-	pop af
-	ld de, Buffer1
-.asm_2c06b
-	push af
-	call Function2c075
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_2c06b
-	ret
-; 2c075
-
-Function2c075: ; 2c075
-	ld a, [hli]
-	and a
-	jr nz, .asm_2c07f
-	ld a, [hl]
-	and a
-	ld b, $33
-	jr z, .asm_2c08b
-
-.asm_2c07f
-rept 3
-	dec hl
-endr
-	ld a, [hl]
-	and a
-	ld b, $32
-	jr nz, .asm_2c08e
-	dec b
-	jr .asm_2c08e
-
-.asm_2c08b
-rept 3
-	dec hl
-endr
-
-.asm_2c08e
-	ld a, b
-	ld [de], a
-	ld bc, $32
-	add hl, bc
-	ret
-; 2c095
-
-DrawPlayerExpBar: ; 2c095
-	ld hl, .data_2c0a9
-	ld de, wd004
-	ld bc, 4
-	call CopyBytes
-	hlcoord 18, 10
-	ld de, -1
-	jr Function2c0f1
-
-.data_2c0a9
-	db $73
-	db $77
-	db $6f
-	db $76
-; 2c0ad
-
-Function2c0ad: ; 2c0ad
-	ld hl, .data_2c0c1
-	ld de, wd004
-	ld bc, 4
-	call CopyBytes
-	hlcoord 18, 10
-	ld de, -1
-	jr Function2c0f1
-
-.data_2c0c1
-	db $73, $5c, $6f, $76
-; 2c0c5
-
-Function2c0c5: ; 2c0c5
-	ld hl, .data_2c0ed
-	ld de, wd004
-	ld bc, 4
-	call CopyBytes
-	hlcoord 1, 2
-	ld de, 1
-	call Function2c0f1
-	ld a, [wBattleMode]
-	dec a
-	ret nz
-	ld a, [TempEnemyMonSpecies]
-	dec a
-	call CheckCaughtMon
-	ret z
-	hlcoord 1, 1
-	ld [hl], $5d
-	ret
-
-.data_2c0ed
-	db $6d
-	db $74
-	db $78
-	db $76
-; 2c0f1
-
-Function2c0f1: ; 2c0f1
-	ld a, [wd004]
-	ld [hl], a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld a, [StartFlypoint]
-	ld [hl], a
-	ld b, $8
-.asm_2c0ff
-	add hl, de
-	ld a, [MovementBuffer]
-	ld [hl], a
-	dec b
-	jr nz, .asm_2c0ff
-	add hl, de
-	ld a, [EndFlypoint]
-	ld [hl], a
-	ret
-; 2c10d
-
-
-Function2c10d: ; 2c10d
-	call Function2c165
-	ld hl, PartyMon1HP
-	ld de, PartyCount
-	call Function2c059
-	ld hl, wcfc4
-	ld a, $50
-	ld [hli], a
-	ld [hl], $40
-	ld a, $8
-	ld [wd003], a
-	ld hl, Sprites
-	call Function2c143
-	ld hl, OTPartyMon1HP
-	ld de, OTPartyCount
-	call Function2c059
-	ld hl, wcfc4
-	ld a, "@"
-	ld [hli], a
-	ld [hl], $68
-	ld hl, Sprites + $18
-	jp Function2c143
-; 2c143
-
-Function2c143: ; 2c143
-	ld de, Buffer1
-	ld c, $6
-.loop
-	ld a, [wcfc5]
-	ld [hli], a
-	ld a, [wcfc4]
-	ld [hli], a
-	ld a, [de]
-	ld [hli], a
-	ld a, $3
-	ld [hli], a
-	ld a, [wcfc4]
-	ld b, a
-	ld a, [wd003]
-	add b
-	ld [wcfc4], a
-	inc de
-	dec c
-	jr nz, .loop
-	ret
-; 2c165
-
-Function2c165: ; 2c165
-	ld de, GFX_2c172
-	ld hl, VTiles0 tile $31
-	lb bc, BANK(GFX_2c172), 4
-	call Get2bpp_2
-	ret
-; 2c172
-
-GFX_2c172: ; 2c172
-INCBIN "gfx/battle/balls.2bpp"
-; 2c1b2
-
-_ShowLinkBattleParticipants: ; 2c1b2
-	call ClearBGPalettes
-	call LoadFontsExtra
-	hlcoord 2, 3
-	ld b, 9
-	ld c, 14
-	call TextBox
-	hlcoord 4, 5
-	ld de, PlayerName
-	call PlaceString
-	hlcoord 4, 10
-	ld de, OTPlayerName
-	call PlaceString
-	hlcoord 9, 8
-	ld a, $69
-	ld [hli], a
-	ld [hl], $6a
-	callba Function2c10d ; no need to callba
-	ld b, SCGB_08
-	call GetSGBLayout
-	call SetPalettes
-	ld a, $e4
-	ld [rOBP0], a
-	ret
-; 2c1ef
-
-
 TrainerClassNames:: ; 2c1ef
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "RIVAL@"
-	db "#MON PROF.@"
-	db "ELITE FOUR@"
-	db "<PKMN> TRAINER@"
-	db "ELITE FOUR@"
-	db "ELITE FOUR@"
-	db "ELITE FOUR@"
-	db "CHAMPION@"
-	db "LEADER@"
-	db "LEADER@"
-	db "LEADER@"
-	db "SCIENTIST@"
-	db "LEADER@"
-	db "YOUNGSTER@"
-	db "SCHOOLBOY@"
-	db "BIRD KEEPER@"
-	db "LASS@"
-	db "LEADER@"
-	db "COOLTRAINER@"
-	db "COOLTRAINER@"
-	db "BEAUTY@"
-	db "#MANIAC@"
-	db "ROCKET@"
-	db "GENTLEMAN@"
-	db "SKIER@"
-	db "TEACHER@"
-	db "LEADER@"
-	db "BUG CATCHER@"
-	db "FISHER@"
-	db "SWIMMER♂@"
-	db "SWIMMER♀@"
-	db "SAILOR@"
-	db "SUPER NERD@"
-	db "RIVAL@"
-	db "GUITARIST@"
-	db "HIKER@"
-	db "BIKER@"
-	db "LEADER@"
-	db "BURGLAR@"
-	db "FIREBREATHER@"
-	db "JUGGLER@"
-	db "BLACKBELT@"
-	db "ROCKET@"
-	db "PSYCHIC@"
-	db "PICNICKER@"
-	db "CAMPER@"
-	db "ROCKET@"
-	db "SAGE@"
-	db "MEDIUM@"
-	db "BOARDER@"
-	db "#FAN@"
-	db "KIMONO GIRL@"
-	db "TWINS@"
-	db "#FAN@"
-	db "<PKMN> TRAINER@"
-	db "LEADER@"
-	db "OFFICER@"
-	db "ROCKET@"
-	db "MYSTICALMAN@"
+INCLUDE "text/trainer_class_names.asm"
 
+INCLUDE "battle/ai/redundant.asm"
 
-
-AI_Redundant: ; 2c41a
-; Check if move effect c will fail because it's already been used.
-; Return z if the move is a good choice.
-; Return nz if the move is a bad choice.
-	ld a, c
-	ld de, 3
-	ld hl, .Moves
-	call IsInArray
-	jp nc, .NotRedundant
-	inc hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.Moves: ; 2c42c
-	dbw EFFECT_DREAM_EATER,  .DreamEater
-	dbw EFFECT_HEAL,         .Heal
-	dbw EFFECT_LIGHT_SCREEN, .LightScreen
-	dbw EFFECT_MIST,         .Mist
-	dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
-	dbw EFFECT_CONFUSE,      .Confuse
-	dbw EFFECT_TRANSFORM,    .Transform
-	dbw EFFECT_REFLECT,      .Reflect
-	dbw EFFECT_SUBSTITUTE,   .Substitute
-	dbw EFFECT_LEECH_SEED,   .LeechSeed
-	dbw EFFECT_DISABLE,      .Disable
-	dbw EFFECT_ENCORE,       .Encore
-	dbw EFFECT_SNORE,        .Snore
-	dbw EFFECT_SLEEP_TALK,   .SleepTalk
-	dbw EFFECT_MEAN_LOOK,    .MeanLook
-	dbw EFFECT_NIGHTMARE,    .Nightmare
-	dbw EFFECT_SPIKES,       .Spikes
-	dbw EFFECT_FORESIGHT,    .Foresight
-	dbw EFFECT_PERISH_SONG,  .PerishSong
-	dbw EFFECT_SANDSTORM,    .Sandstorm
-	dbw EFFECT_ATTRACT,      .Attract
-	dbw EFFECT_SAFEGUARD,    .Safeguard
-	dbw EFFECT_RAIN_DANCE,   .RainDance
-	dbw EFFECT_SUNNY_DAY,    .SunnyDay
-	dbw EFFECT_TELEPORT,     .Teleport
-	dbw EFFECT_MORNING_SUN,  .MorningSun
-	dbw EFFECT_SYNTHESIS,    .Synthesis
-	dbw EFFECT_MOONLIGHT,    .Moonlight
-	dbw EFFECT_SWAGGER,      .Swagger
-	dbw EFFECT_FUTURE_SIGHT, .FutureSight
-	db -1
-
-.LightScreen: ; 2c487
-	ld a, [EnemyScreens]
-	bit SCREENS_LIGHT_SCREEN, a
-	ret
-
-.Mist: ; 2c48d
-	ld a, [EnemySubStatus4]
-	bit SUBSTATUS_MIST, a
-	ret
-
-.FocusEnergy: ; 2c493
-	ld a, [EnemySubStatus4]
-	bit SUBSTATUS_FOCUS_ENERGY, a
-	ret
-
-.Confuse: ; 2c499
-	ld a, [PlayerSubStatus3]
-	bit SUBSTATUS_CONFUSED, a
-	ret nz
-	ld a, [PlayerScreens]
-	bit SCREENS_SAFEGUARD, a
-	ret
-
-.Transform: ; 2c4a5
-	ld a, [EnemySubStatus5]
-	bit SUBSTATUS_TRANSFORMED, a
-	ret
-
-.Reflect: ; 2c4ab
-	ld a, [EnemyScreens]
-	bit SCREENS_REFLECT, a
-	ret
-
-.Substitute: ; 2c4b1
-	ld a, [EnemySubStatus4]
-	bit SUBSTATUS_SUBSTITUTE, a
-	ret
-
-.LeechSeed: ; 2c4b7
-	ld a, [PlayerSubStatus4]
-	bit SUBSTATUS_LEECH_SEED, a
-	ret
-
-.Disable: ; 2c4bd
-	ld a, [PlayerDisableCount]
-	and a
-	ret
-
-.Encore: ; 2c4c2
-	ld a, [PlayerSubStatus5]
-	bit SUBSTATUS_ENCORED, a
-	ret
-
-.Snore:
-.SleepTalk: ; 2c4c8
-	ld a, [EnemyMonStatus]
-	and SLP
-	jr z, .Redundant
-	jr .NotRedundant
-
-.MeanLook: ; 2c4d1
-	ld a, [EnemySubStatus5]
-	bit SUBSTATUS_CANT_RUN, a
-	ret
-
-.Nightmare: ; 2c4d7
-	ld a, [BattleMonStatus]
-	and a
-	jr z, .Redundant
-	ld a, [PlayerSubStatus1]
-	bit SUBSTATUS_NIGHTMARE, a
-	ret
-
-.Spikes: ; 2c4e3
-	ld a, [PlayerScreens]
-	bit SCREENS_SPIKES, a
-	ret
-
-.Foresight: ; 2c4e9
-	ld a, [PlayerSubStatus1]
-	bit SUBSTATUS_IDENTIFIED, a
-	ret
-
-.PerishSong: ; 2c4ef
-	ld a, [PlayerSubStatus1]
-	bit SUBSTATUS_PERISH, a
-	ret
-
-.Sandstorm: ; 2c4f5
-	ld a, [Weather]
-	cp WEATHER_SANDSTORM
-	jr z, .Redundant
-	jr .NotRedundant
-
-.Attract: ; 2c4fe
-	callba CheckOppositeGender
-	jr c, .Redundant
-	ld a, [PlayerSubStatus1]
-	bit SUBSTATUS_IN_LOVE, a
-	ret
-
-.Safeguard: ; 2c50c
-	ld a, [EnemyScreens]
-	bit SCREENS_SAFEGUARD, a
-	ret
-
-.RainDance: ; 2c512
-	ld a, [Weather]
-	cp WEATHER_RAIN
-	jr z, .Redundant
-	jr .NotRedundant
-
-.SunnyDay: ; 2c51b
-	ld a, [Weather]
-	cp WEATHER_SUN
-	jr z, .Redundant
-	jr .NotRedundant
-
-.DreamEater: ; 2c524
-	ld a, [BattleMonStatus]
-	and SLP
-	jr z, .Redundant
-	jr .NotRedundant
-
-.Swagger: ; 2c52d
-	ld a, [PlayerSubStatus3]
-	bit SUBSTATUS_CONFUSED, a
-	ret
-
-.FutureSight: ; 2c533
-	ld a, [EnemyScreens]
-	bit 5, a
-	ret
-
-.Heal:
-.MorningSun:
-.Synthesis:
-.Moonlight: ; 2c539
-	callba AICheckEnemyMaxHP
-	jr nc, .NotRedundant
-
-.Teleport:
-.Redundant: ; 2c541
-	ld a, 1
-	and a
-	ret
-
-.NotRedundant: ; 2c545
-	xor a
-	ret
-
-
 INCLUDE "event/move_deleter.asm"
 
+INCLUDE "engine/mysterygift2.asm"
 
-Function2c642: ; 2c642 (b:4642)
-	ld de, OverworldMap
-	ld a, $1
-	ld [de], a
-	inc de
-	ld a, BANK(sGameData)
-	call GetSRAMBank
-	ld hl, sPlayerData + PlayerID - wPlayerData
-	ld a, [hli]
-	ld [de], a
-	ld b, a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	ld c, a
-	inc de
-	push bc
-	ld hl, sPlayerData + PlayerName - wPlayerData
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	push de
-	ld hl, sPokemonData + PokedexCaught - wPokemonData
-	ld b, (NUM_POKEMON + 7) / 8
-	call CountSetBits
-	pop de
-	pop bc
-	ld a, [wd265]
-	ld [de], a
-	inc de
-	call CloseSRAM
-	call Random
-	and $1
-	ld [de], a
-	inc de
-	call Function2c6ac
-	ld [de], a
-	inc de
-	ld a, c
-	ld c, b
-	ld b, a
-	call Function2c6ac
-	ld [de], a
-	inc de
-	ld a, BANK(sBackupMysteryGiftItem)
-	call GetSRAMBank
-	ld a, [sBackupMysteryGiftItem]
-	ld [de], a
-	inc de
-	ld a, [sBackupMysteryGiftItem + 1]
-	ld [de], a
-	ld a, $14
-	ld [wca00], a
-	call CloseSRAM
-	ld hl, OverworldMap
-	ld de, wc950
-	ld bc, SCREEN_WIDTH
-	jp CopyBytes
+INCLUDE "engine/tmhm2.asm"
 
-Function2c6ac: ; 2c6ac (b:46ac)
-	push de
-	call Random
-	cp $19 ; 10 percent
-	jr c, .tenpercent
-	call Random
-	and $7
-	ld d, a
-	rl d
-	ld e, $80
-.loop
-	rlc e
-	dec a
-	jr nz, .loop
-	ld a, e
-	and c
-	jr z, .skip
-	ld a, $1
-.skip
-	add d
-	jr .done
-
-.tenpercent
-	call Random
-	cp $32 ; 20 percent
-	jr c, .twopercent
-	call Random
-	and $3
-	ld d, a
-	rl d
-	ld e, $80
-.loop2
-	rlc e
-	dec a
-	jr nz, .loop2
-	ld a, e
-	and b
-	jr z, .skip2
-	ld a, $1
-.skip2
-	add d
-	add $10
-	jr .done
-
-.twopercent
-	call Random
-	cp $32 ; 50 ; 20 percent
-	jr c, .pointfourpercent
-	ld a, b
-	swap a
-	and $7
-	add $18
-	jr .done
-
-.pointfourpercent
-	ld a, b
-	and $80
-	ld a, $20
-	jr z, .done
-	ld a, $21
-
-.done
-	pop de
-	ret
-
-MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
-	ld a, c
-	cp $25 ; 37
-	jr nc, Function2c722
-	ld hl, Unknown_2c725
-	ld b, 0
-	add hl, bc
-	ld c, [hl]
-	ret
-
-MysteryGiftGetDecoration: ; 2c715 (b:4715)
-	ld a, c
-	cp $25 ; 37
-	jr nc, Function2c722
-	ld hl, Unknown_2c74a
-	ld b, 0
-	add hl, bc
-	ld c, [hl]
-	ret
-
-Function2c722: ; 2c722 (b:4722)
-	ld c, DECO_POLKADOT_BED ; GREAT_BALL
-	ret
-; 2c725 (b:4725)
-
-Unknown_2c725: ; 2c725
-; May or may not be items.
-	db BERRY
-	db PRZCUREBERRY
-	db MINT_BERRY
-	db ICE_BERRY
-	db BURNT_BERRY
-	db PSNCUREBERRY
-	db GUARD_SPEC
-	db X_DEFEND
-	db X_ATTACK
-	db BITTER_BERRY
-	db DIRE_HIT
-	db X_SPECIAL
-	db X_ACCURACY
-	db EON_MAIL
-	db MORPH_MAIL
-	db MUSIC_MAIL
-	db MIRACLEBERRY
-	db GOLD_BERRY
-	db REVIVE
-	db GREAT_BALL
-	db SUPER_REPEL
-	db MAX_REPEL
-	db ELIXER
-	db ETHER
-	db WATER_STONE
-	db FIRE_STONE
-	db LEAF_STONE
-	db THUNDERSTONE
-	db MAX_ETHER
-	db MAX_ELIXER
-	db MAX_REVIVE
-	db SCOPE_LENS
-	db HP_UP
-	db PP_UP
-	db RARE_CANDY
-	db BLUESKY_MAIL
-	db MIRAGE_MAIL
-; 2c74a
-
-Unknown_2c74a: ; 2c74a
-; May or may not be items.
-	db DECO_SNES
-	db DECO_BIG_SNORLAX_DOLL
-	db DECO_BIG_ONIX_DOLL
-	db DECO_BIG_LAPRAS_DOLL
-	db DECO_DOLLS
-	db DECO_PIKACHU_DOLL
-	db DECO_SURF_PIKACHU_DOLL
-	db DECO_CLEFAIRY_DOLL
-	db DECO_JIGGLYPUFF_DOLL
-	db DECO_BULBASAUR_DOLL
-	db DECO_TROPICPLANT
-	db DECO_JUMBOPLANT
-	db DECO_TOWN_MAP
-	db DECO_CHARMANDER_DOLL
-	db DECO_POLIWAG_DOLL
-	db DECO_DIGLETT_DOLL
-	db DECO_BLUE_CARPET
-	db DECO_YELLOW_CARPET
-	db DECO_POSTERS
-	db DECO_PIKACHU_POSTER
-	db DECO_N64
-	db DECO_BIG_DOLLS
-	db DECO_BEDS
-	db DECO_FEATHERY_BED
-	db DECO_POLKADOT_BED
-	db DECO_PIKACHU_BED
-	db DECO_CARPETS
-	db DECO_RED_CARPET
-	db DECO_GREEN_CARPET
-	db DECO_CLEFAIRY_POSTER
-	db DECO_ODDISH_DOLL
-	db DECO_MAGNAPLANT
-	db DECO_GENGAR_DOLL
-	db DECO_CONSOLES
-	db DECO_PINK_BED
-	db DECO_SQUIRTLE_DOLL
-	db DECO_STARMIE_DOLL
-; 2c76f
-
-Function2c76f: ; 2c76f (b:476f)
-	ld a, $1
-	ld [hInMenu], a
-	call Function2c8d3
-	ld a, $0
-	ld [hInMenu], a
-	ret nc
-	call Function1bee
-	call WaitBGMap
-	ld a, [CurItem]
-	dec a
-	ld [wd107], a
-	ld hl, TMsHMs
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [wItemQuantityBuffer], a
-	call Function2c798
-	scf
-	ret
-
-Function2c798: ; 2c798 (b:4798)
-	ld a, [CurItem]
-	ld c, a
-	callab GetNumberedTMHM
-	ld a, c
-	ld [CurItem], a
-	ret
-
-ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7)
-	ld a, [CurItem]
-	ld c, a
-	callab GetTMHMNumber
-	ld a, c
-	ld [wCurTMHM], a
-	ret
-
-GetTMHMItemMove: ; 2c7b6 (b:47b6)
-	call ConvertCurItemIntoCurTMHM
-	predef GetTMHMMove
-	ret
-
-Function2c7bf: ; 2c7bf (b:47bf)
-	ld hl, Options
-	ld a, [hl]
-	push af
-	res 4, [hl]
-	ld a, [CurItem]
-	cp TM01
-	jr c, .NotTMHM
-	call GetTMHMItemMove
-	ld a, [wCurTMHM]
-	ld [wd262], a
-	call GetMoveName
-	call CopyName1
-	ld hl, UnknownText_0x2c8bf ; Booted up a TM
-	ld a, [CurItem]
-	cp HM01
-	jr c, .TM
-	ld hl, UnknownText_0x2c8c4 ; Booted up an HM
-.TM
-	call PrintText
-	ld hl, UnknownText_0x2c8c9
-	call PrintText
-	call YesNoBox
-.NotTMHM
-	pop bc
-	ld a, b
-	ld [Options], a
-	ret
-
-
-Function2c7fb: ; 2c7fb
-	ld hl, StringBuffer2
-	ld de, wd066
-	ld bc, $c
-	call CopyBytes
-	call ClearBGPalettes
-
-Function2c80a: ; 2c80a
-	callba LoadPartyMenuGFX
-	callba InitPartyMenuWithCancel
-	callba InitPartyMenuGFX
-	ld a, $3
-	ld [PartyMenuActionText], a
-.loopback
-	callba WritePartyMenuTilemap
-	callba PrintPartyMenuText
-	call WaitBGMap
-	call SetPalettes
-	call DelayFrame
-	callba PartyMenuSelect
-	push af
-	ld a, [CurPartySpecies]
-	cp EGG
-	pop bc ; now contains the former contents of af
-	jr z, .egg
-	push bc
-	ld hl, wd066
-	ld de, StringBuffer2
-	ld bc, $c
-	call CopyBytes
-	pop af ; now contains the original contents of af
-	ret
-
-.egg
-	push hl
-	push de
-	push bc
-	push af
-	ld de, SFX_WRONG
-	call PlaySFX
-	call WaitSFX
-	pop af
-	pop bc
-	pop de
-	pop hl
-	jr .loopback
-; 2c867
-
-Function2c867: ; 2c867
-	predef CanLearnTMHMMove
-
-	push bc
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	call GetNick
-	pop bc
-
-	ld a, c
-	and a
-	jr nz, .compatible
-	push de
-	ld de, SFX_WRONG
-	call PlaySFX
-	pop de
-	ld hl, UnknownText_0x2c8ce
-	call PrintText
-	jr .nope
-
-.compatible
-	callab KnowsMove
-	jr c, .nope
-
-	predef LearnMove
-	ld a, b
-	and a
-	jr z, .nope
-
-	callba MobileFn_106049
-	ld a, [CurItem]
-	call IsHM
-	ret c
-
-	ld c, HAPPINESS_LEARNMOVE
-	callab ChangeHappiness
-	call Function2cb0c
-	jr .asm_2c8bd
-
-.nope
-	and a
-	ret
-
-.asm_2c8b8
-	ld a, $2
-	ld [wd0ec], a
-
-.asm_2c8bd
-	scf
-	ret
-; 2c8bf (b:48bf)
-
-UnknownText_0x2c8bf: ; 0x2c8bf
-	; Booted up a TM.
-	text_jump UnknownText_0x1c0373
-	db "@"
-; 0x2c8c4
-
-UnknownText_0x2c8c4: ; 0x2c8c4
-	; Booted up an HM.
-	text_jump UnknownText_0x1c0384
-	db "@"
-; 0x2c8c9
-
-UnknownText_0x2c8c9: ; 0x2c8c9
-	; It contained @ . Teach @ to a #MON?
-	text_jump UnknownText_0x1c0396
-	db "@"
-; 0x2c8ce
-
-UnknownText_0x2c8ce: ; 0x2c8ce
-	; is not compatible with @ . It can't learn @ .
-	text_jump UnknownText_0x1c03c2
-	db "@"
-; 0x2c8d3
-
-Function2c8d3: ; 2c8d3 (b:48d3)
-	xor a
-	ld [hBGMapMode], a
-	call Function2c9e2
-	ld a, $2
-	ld [wcfa1], a
-	ld a, $7
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $5
-	sub d
-	inc a
-	cp $6
-	jr nz, .asm_2c8f1
-	dec a
-.asm_2c8f1
-	ld [wcfa3], a
-	ld a, $c
-	ld [wcfa5], a
-	xor a
-	ld [wcfa6], a
-	ld a, $20
-	ld [wcfa7], a
-	ld a, $f3
-	ld [wcfa8], a
-	ld a, [wTMHMPocketCursor]
-	inc a
-	ld [MenuSelection2], a
-	ld a, $1
-	ld [wcfaa], a
-	jr Function2c946
-
-Function2c915: ; 2c915 (b:4915)
-	call Function2c9e2
-	call Function1bc9
-	ld b, a
-	ld a, [MenuSelection2]
-	dec a
-	ld [wTMHMPocketCursor], a
-	xor a
-	ld [hBGMapMode], a
-	ld a, [wcfa6]
-	bit 7, a
-	jp nz, Function2c9b1
-	ld a, b
-	ld [wcf73], a
-	bit 0, a
-	jp nz, Function2c974
-	bit 1, a
-	jp nz, Function2c9a5
-	bit 4, a
-	jp nz, Function2c9af
-	bit 5, a
-	jp nz, Function2c9af
-
-Function2c946: ; 2c946 (b:4946)
-	call Function2c98a
-	jp nc, Function2c9af
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	ld a, [CurItem]
-	cp $3a
-	jr nc, Function2c915
-	ld [wd265], a
-	predef GetTMHMMove
-	ld a, [wd265]
-	ld [CurSpecies], a
-	hlcoord 1, 14
-	call PrintMoveDesc
-	jp Function2c915
-
-Function2c974: ; 2c974 (b:4974)
-	call Function2cad6
-	call Function2cb2a
-	ld a, [MenuSelection2]
-	dec a
-	ld b, a
-	ld a, [wTMHMPocketScrollPosition]
-	add b
-	ld b, a
-	ld a, [wd265]
-	cp b
-	jr z, asm_2c9a8
-
-Function2c98a: ; 2c98a (b:498a)
-	call Function2cab5
-	ld a, [MenuSelection2]
-	ld b, a
-.asm_2c991
-	inc c
-	ld a, c
-	cp $3a
-	jr nc, .asm_2c99f
-	ld a, [hli]
-	and a
-	jr z, .asm_2c991
-	dec b
-	jr nz, .asm_2c991
-	ld a, c
-.asm_2c99f
-	ld [CurItem], a
-	cp $ff
-	ret
-
-Function2c9a5: ; 2c9a5 (b:49a5)
-	call Function2cad6
-
-asm_2c9a8: ; 2c9a8 (b:49a8)
-	ld a, $2
-	ld [wcf73], a
-	and a
-	ret
-
-Function2c9af: ; 2c9af (b:49af)
-	and a
-	ret
-
-Function2c9b1: ; 2c9b1 (b:49b1)
-	ld a, b
-	bit 7, a
-	jr nz, .skip
-	ld hl, wTMHMPocketScrollPosition
-	ld a, [hl]
-	and a
-	jp z, Function2c915
-	dec [hl]
-	call Function2c9e2
-	jp Function2c946
-
-.skip
-	call Function2cab5
-	ld b, $5
-.loop
-	inc c
-	ld a, c
-	cp NUM_TMS + NUM_HMS + 1
-	jp nc, Function2c915
-	ld a, [hli]
-	and a
-	jr z, .loop
-	dec b
-	jr nz, .loop
-	ld hl, wTMHMPocketScrollPosition
-	inc [hl]
-	call Function2c9e2
-	jp Function2c946
-
-Function2c9e2: ; 2c9e2 (b:49e2)
-	ld a, [BattleType]
-	cp BATTLETYPE_TUTORIAL
-	jp z, Function2caca
-
-	hlcoord 5, 2
-	lb bc, 10, 15
-	ld a, " "
-	call ClearBox
-	call Function2cab5
-	ld d, $5
-.loop2
-	inc c
-	ld a, c
-	cp NUM_TMS + NUM_HMS + 1
-	jr nc, .NotTMHM
-	ld a, [hli]
-	and a
-	jr z, .loop2
-	ld b, a
-	ld a, c
-	ld [wd265], a
-	push hl
-	push de
-	push bc
-	call Function2ca86
-	push hl
-	ld a, [wd265]
-	cp NUM_TMS + 1
-	jr nc, .HM
-	ld de, wd265
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	jr .okay
-
-.HM
-	push af
-	sub NUM_TMS
-	ld [wd265], a
-	ld [hl], "H"
-	inc hl
-	ld de, wd265
-	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
-	call PrintNum
-	pop af
-	ld [wd265], a
-.okay
-	predef GetTMHMMove
-	ld a, [wd265]
-	ld [wd262], a
-	call GetMoveName
-	pop hl
-	ld bc, $3
-	add hl, bc
-	push hl
-	call PlaceString
-	pop hl
-	pop bc
-	ld a, c
-	push bc
-	cp NUM_TMS + 1
-	jr nc, .hm2
-	ld bc, $1d
-	add hl, bc
-	ld [hl], $f1
-	inc hl
-	ld a, "0" ; why are we doing this?
-	pop bc
-	push bc
-	ld a, b
-	ld [wd265], a
-	ld de, wd265
-	lb bc, 1, 2
-	call PrintNum
-.hm2
-	pop bc
-	pop de
-	pop hl
-	dec d
-	jr nz, .loop2
-	jr .done
-
-.NotTMHM
-	call Function2ca86
-rept 3
-	inc hl
-endr
-	push de
-	ld de, String_2caae
-	call PlaceString
-	pop de
-.done
-	ret
-
-Function2ca86: ; 2ca86 (b:4a86)
-	hlcoord 5, 0
-	ld bc, $28
-	ld a, 6
-	sub d
-	ld e, a
-.loop
-	add hl, bc
-	dec e
-	jr nz, .loop
-	ret
-; 2ca95 (b:4a95)
-
-Function2ca95: ; 2ca95
-	pop hl
-	ld bc, 3
-	add hl, bc
-	predef GetTMHMMove
-	ld a, [wd265]
-	ld [wd262], a
-	call GetMoveName
-	push hl
-	call PlaceString
-	pop hl
-	ret
-; 2caae
-
-String_2caae: ; 2caae
-	db "CANCEL@"
-; 2cab5
-
-Function2cab5: ; 2cab5 (b:4ab5)
-	ld hl, TMsHMs
-	ld a, [wTMHMPocketScrollPosition]
-	ld b, a
-	inc b
-	ld c, 0
-.loop
-	inc c
-	ld a, [hli]
-	and a
-	jr z, .loop
-	dec b
-	jr nz, .loop
-	dec hl
-	dec c
-	ret
-
-Function2caca: ; 2caca (b:4aca)
-	hlcoord 9, 3
-	push de
-	ld de, String_2caae
-	call PlaceString
-	pop de
-	ret
-
-Function2cad6: ; 2cad6 (b:4ad6)
-	push de
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	pop de
-	ret
-; 2cadf (b:4adf)
-
-Function2cadf: ; 2cadf
-	call ConvertCurItemIntoCurTMHM
-	call Function2cafa
-	ld hl, UnknownText_0x2caf0
-	jr nc, .asm_2caed
-	ld hl, UnknownText_0x2caf5
-
-.asm_2caed
-	jp PrintText
-; 2caf0
-
-UnknownText_0x2caf0: ; 0x2caf0
-	; You have no room for any more @ S.
-	text_jump UnknownText_0x1c03fa
-	db "@"
-; 0x2caf5
-
-UnknownText_0x2caf5: ; 0x2caf5
-	; You received @ !
-	text_jump UnknownText_0x1c0421
-	db "@"
-; 0x2cafa
-
-Function2cafa: ; 2cafa
-	ld a, [wd265]
-	dec a
-	ld hl, TMsHMs
-	ld b, 0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	inc a
-	cp NUM_TMS * 2
-	ret nc
-	ld [hl], a
-	ret
-; 2cb0c
-
-Function2cb0c: ; 2cb0c (b:4b0c)
-	call ConvertCurItemIntoCurTMHM
-	ld a, [wd265]
-	dec a
-	ld hl, TMsHMs
-	ld b, 0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	dec a
-	ld [hl], a
-	ret nz
-	ld a, [wTMHMPocketScrollPosition]
-	and a
-	ret z
-	dec a
-	ld [wTMHMPocketScrollPosition], a
-	ret
-
-Function2cb2a: ; 2cb2a (b:4b2a)
-	ld b, $0
-	ld c, $39
-	ld hl, TMsHMs
-.asm_2cb31
-	ld a, [hli]
-	and a
-	jr z, .asm_2cb36
-	inc b
-.asm_2cb36
-	dec c
-	jr nz, .asm_2cb31
-	ld a, b
-	ld [wd265], a
-	ret
-
-
-PrintMoveDesc: ; 2cb3e
-	push hl
-	ld hl, MoveDescriptions
-	ld a, [CurSpecies]
-	dec a
-	ld c, a
-	ld b, 0
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	pop hl
-	jp PlaceString
-; 2cb52
-
 MoveDescriptions:: ; 2cb52
 INCLUDE "battle/moves/move_descriptions.asm"
 ; 2ed44
 
-
-Function2ed44: ; 2ed44
+GivePokerusAndConvertBerries: ; 2ed44
 	call ConvertBerriesToBerryJuice
 	ld hl, PartyMon1PokerusStatus
 	ld a, [PartyCount]
@@ -13907,12 +6784,11 @@
 	jr z, .randomPokerusLoop
 	ld b, a
 	and $f0
-	jr z, .asm_2ed91
+	jr z, .load_pkrs
 	ld a, b
 	and $7
 	inc a
-
-.asm_2ed91
+.load_pkrs
 	ld b, a
 	swap b
 	and $3
@@ -13923,10 +6799,10 @@
 
 .monHasActivePokerus
 	call Random
-	cp $55
+	cp 1 + 33 percent
 	ret nc              ; 1/3 chance
 	ld a, [PartyCount]
-	cp $1
+	cp 1
 	ret z               ; only one mon, nothing to do
 	ld c, [hl]
 	ld a, b
@@ -14035,7 +6911,6 @@
 	ret
 ; 2ee2f
 
-
 FindFirstAliveMon: ; 2ee2f
 	xor a
 	ld [hMapAnims], a
@@ -14071,7 +6946,6 @@
 	ret
 ; 2ee6c
 
-
 PlayBattleMusic: ; 2ee6c
 
 	push hl
@@ -14174,13 +7048,12 @@
 	ret
 ; 2ef18
 
-
 ClearBattleRAM: ; 2ef18
 	xor a
-	ld [wd0ec], a
+	ld [wPlayerAction], a
 	ld [wBattleResult], a
 
-	ld hl, wd0d8
+	ld hl, wPartyMenuCursor
 rept 3
 	ld [hli], a
 endr
@@ -14217,26 +7090,25 @@
 
 	callab ResetEnemyStatLevels
 
-	call ResetTextRelatedRAM
+	call ClearWindowData
 
 	ld hl, hBGMapAddress
 	xor a
 	ld [hli], a
-	ld [hl], $98
+	ld [hl], VBGMap0 / $100
 	ret
 ; 2ef6e
 
-
 FillBox: ; 2ef6e
-; Fill wc2c6-aligned box width b height c
+; Fill wBoxAlignment-aligned box width b height c
 ; with iterating tile starting from hFillBox at hl.
 ; Predef $13
 
-	ld de, 20
+	ld de, SCREEN_WIDTH
 
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	and a
-	jr nz, .left
+	jr nz, .right
 
 	ld a, [hFillBox]
 .x1
@@ -14257,7 +7129,7 @@
 	jr nz, .x1
 	ret
 
-.left
+.right
 ; Right-aligned.
 	push bc
 	ld b, 0
@@ -14285,25 +7157,21 @@
 	ret
 ; 2ef9f
 
-
 SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4]
 
 INCLUDE "tilesets/data_4.asm"
 
+SECTION "Effect Commands", ROMX, BANK[$D]
 
-SECTION "bankD", ROMX, BANK[$D]
-
 INCLUDE "battle/effect_commands.asm"
 
+SECTION "Enemy Trainers", ROMX, BANK[$E]
 
-SECTION "bankE", ROMX, BANK[$E]
-
 INCLUDE "battle/ai/items.asm"
 
 AIScoring: ; 38591
 INCLUDE "battle/ai/scoring.asm"
 
-
 GetTrainerClassName: ; 3952d
 	ld hl, RivalName
 	ld a, c
@@ -14326,8 +7194,8 @@
 	ret
 ; 39550
 
-Function39550: ; 39550
-	ld hl, wd26b
+GetOTName: ; 39550
+	ld hl, OTPlayerName
 	ld a, [wLinkMode]
 	and a
 	jr nz, .ok
@@ -14352,13 +7220,13 @@
 	ret
 ; 3957b
 
-Function3957b: ; 3957b
+GetTrainerAttributes: ; 3957b
 	ld a, [TrainerClass]
 	ld c, a
-	call Function39550
+	call GetOTName
 	ld a, [TrainerClass]
 	dec a
-	ld hl, TrainerClassAttributes
+	ld hl, TrainerClassAttributes + TRNATTR_ITEM1
 	ld bc, NUM_TRAINER_ATTRIBUTES
 	call AddNTimes
 	ld de, wEnemyTrainerItem1
@@ -14374,491 +7242,22 @@
 
 INCLUDE "trainers/attributes.asm"
 
+INCLUDE "trainers/read_party.asm"
 
-ReadTrainerParty: ; 39771
-	ld a, [InBattleTowerBattle]
-	bit 0, a
-	ret nz
-
-	ld a, [wLinkMode]
-	and a
-	ret nz
-
-	ld hl, OTPartyCount
-	xor a
-	ld [hli], a
-	dec a
-	ld [hl], a
-
-	ld hl, OTPartyMons
-	ld bc, OTPartyMonsEnd - OTPartyMons
-	xor a
-	call ByteFill
-
-	ld a, [OtherTrainerClass]
-	cp CAL
-	jr nz, .not_cal2
-	ld a, [OtherTrainerID]
-	cp CAL2
-	jr z, .cal2
-	ld a, [OtherTrainerClass]
-.not_cal2
-
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, TrainerGroups
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	ld a, [OtherTrainerID]
-	ld b, a
-.skip_trainer
-	dec b
-	jr z, .got_trainer
-.loop
-	ld a, [hli]
-	cp $ff
-	jr nz, .loop
-	jr .skip_trainer
-.got_trainer
-
-.skip_name
-	ld a, [hli]
-	cp "@"
-	jr nz, .skip_name
-
-	ld a, [hli]
-	ld c, a
-	ld b, 0
-	ld d, h
-	ld e, l
-	ld hl, TrainerTypes
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld bc, .done
-	push bc
-	jp [hl]
-
-.done
-	jp ComputeTrainerReward
-
-.cal2
-	ld a, BANK(sMysteryGiftTrainer)
-	call GetSRAMBank
-	ld de, sMysteryGiftTrainer
-	call TrainerType2
-	call CloseSRAM
-	jr .done
-; 397e3
-
-TrainerTypes: ; 397e3
-	dw TrainerType1 ; level, species
-	dw TrainerType2 ; level, species, moves
-	dw TrainerType3 ; level, species, item
-	dw TrainerType4 ; level, species, item, moves
-; 397eb
-
-TrainerType1: ; 397eb
-; normal (level, species)
-	ld h, d
-	ld l, e
-.loop
-	ld a, [hli]
-	cp $ff
-	ret z
-
-	ld [CurPartyLevel], a
-	ld a, [hli]
-	ld [CurPartySpecies], a
-	ld a, OTPARTYMON
-	ld [MonType], a
-	push hl
-	predef TryAddMonToParty
-	pop hl
-	jr .loop
-; 39806
-
-TrainerType2: ; 39806
-; moves
-	ld h, d
-	ld l, e
-.loop
-	ld a, [hli]
-	cp $ff
-	ret z
-
-	ld [CurPartyLevel], a
-	ld a, [hli]
-	ld [CurPartySpecies], a
-	ld a, OTPARTYMON
-	ld [MonType], a
-
-	push hl
-	predef TryAddMonToParty
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1Moves
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	pop hl
-
-	ld b, NUM_MOVES
-.copy_moves
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .copy_moves
-
-	push hl
-
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1Species
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld hl, MON_PP
-	add hl, de
-	push hl
-	ld hl, MON_MOVES
-	add hl, de
-	pop de
-
-	ld b, NUM_MOVES
-.copy_pp
-	ld a, [hli]
-	and a
-	jr z, .copied_pp
-
-	push hl
-	push bc
-	dec a
-	ld hl, Moves + MOVE_PP
-	ld bc, MOVE_LENGTH
-	call AddNTimes
-	ld a, BANK(Moves)
-	call GetFarByte
-	pop bc
-	pop hl
-
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .copy_pp
-.copied_pp
-
-	pop hl
-	jr .loop
-; 39871
-
-TrainerType3: ; 39871
-; item
-	ld h, d
-	ld l, e
-.loop
-	ld a, [hli]
-	cp $ff
-	ret z
-
-	ld [CurPartyLevel], a
-	ld a, [hli]
-	ld [CurPartySpecies], a
-	ld a, OTPARTYMON
-	ld [MonType], a
-	push hl
-	predef TryAddMonToParty
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1Item
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	pop hl
-	ld a, [hli]
-	ld [de], a
-	jr .loop
-; 3989d (e:589d)
-
-TrainerType4: ; 3989d
-; item + moves
-	ld h, d
-	ld l, e
-.loop
-	ld a, [hli]
-	cp $ff
-	ret z
-
-	ld [CurPartyLevel], a
-	ld a, [hli]
-	ld [CurPartySpecies], a
-
-	ld a, OTPARTYMON
-	ld [MonType], a
-
-	push hl
-	predef TryAddMonToParty
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1Item
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	pop hl
-
-	ld a, [hli]
-	ld [de], a
-
-	push hl
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1Moves
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	pop hl
-
-	ld b, NUM_MOVES
-.copy_moves
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .copy_moves
-
-	push hl
-
-	ld a, [OTPartyCount]
-	dec a
-	ld hl, OTPartyMon1
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld hl, MON_PP
-	add hl, de
-
-	push hl
-	ld hl, MON_MOVES
-	add hl, de
-	pop de
-
-	ld b, NUM_MOVES
-.copy_pp
-	ld a, [hli]
-	and a
-	jr z, .copied_pp
-
-	push hl
-	push bc
-	dec a
-	ld hl, Moves + MOVE_PP
-	ld bc, MOVE_LENGTH
-	call AddNTimes
-	ld a, BANK(Moves)
-	call GetFarByte
-	pop bc
-	pop hl
-
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .copy_pp
-.copied_pp
-
-	pop hl
-	jr .loop
-; 3991b
-
-ComputeTrainerReward: ; 3991b (e:591b)
-	ld hl, hProduct
-	xor a
-rept 3
-	ld [hli], a
-endr
-	ld a, [wEnemyTrainerBaseReward]
-	ld [hli], a
-	ld a, [CurPartyLevel]
-	ld [hl], a
-	call Multiply
-	ld hl, wBattleReward
-	xor a
-	ld [hli], a
-	ld a, [hProduct + 2]
-	ld [hli], a
-	ld a, [hProduct + 3]
-	ld [hl], a
-	ret
-
-
-Battle_GetTrainerName:: ; 39939
-	ld a, [InBattleTowerBattle]
-	bit 0, a
-	ld hl, wd26b
-	jp nz, CopyTrainerName
-
-	ld a, [OtherTrainerID]
-	ld b, a
-	ld a, [OtherTrainerClass]
-	ld c, a
-
-GetTrainerName:: ; 3994c
-	ld a, c
-	cp CAL
-	jr nz, .not_cal2
-
-	ld a, BANK(sMysteryGiftTrainerHouseFlag)
-	call GetSRAMBank
-	ld a, [sMysteryGiftTrainerHouseFlag]
-	and a
-	call CloseSRAM
-	jr z, .not_cal2
-
-	ld a, BANK(sMysteryGiftPartnerName)
-	call GetSRAMBank
-	ld hl, sMysteryGiftPartnerName
-	call CopyTrainerName
-	jp CloseSRAM
-
-.not_cal2
-	dec c
-	push bc
-	ld b, 0
-	ld hl, TrainerGroups
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop bc
-
-.loop
-	dec b
-	jr z, CopyTrainerName
-
-.skip
-	ld a, [hli]
-	cp $ff
-	jr nz, .skip
-	jr .loop
-
-CopyTrainerName: ; 39984
-	ld de, StringBuffer1
-	push de
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	pop de
-	ret
-; 39990
-
-Function39990: ; 39990
-; This function is useless.
-	ld de, StringBuffer1
-	push de
-	ld bc, NAME_LENGTH
-	pop de
-	ret
-; 39999
-
 INCLUDE "trainers/trainer_pointers.asm"
 
 INCLUDE "trainers/trainers.asm"
 
+SECTION "Battle Core", ROMX, BANK[$F]
 
-SECTION "bankF", ROMX, BANK[$F]
-
 INCLUDE "battle/core.asm"
 
 INCLUDE "battle/effect_command_pointers.asm"
 
-
 SECTION "bank10", ROMX, BANK[$10]
 
-
 INCLUDE "engine/pokedex.asm"
 
-
-Function41a7f: ; 41a7f
-	xor a
-	ld [hBGMapMode], a
-	callba Function1de247
-	call Function41af7
-	call DisableLCD
-	call LoadStandardFont
-	call LoadFontsExtra
-	call Function414b7
-	call Function4147b
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	call Function407fd
-	call Function40ba0
-	hlcoord 0, 17
-	ld [hl], $3b
-	inc hl
-	ld bc, $13
-	ld a, " "
-	call ByteFill
-	callba Function4424d
-	call EnableLCD
-	call WaitBGMap
-	call GetBaseData
-	ld de, VTiles2
-	predef GetFrontpic
-	ld a, $4
-	call Function41423
-	ld a, [CurPartySpecies]
-	call PlayCry
-	ret
-; 41ad7
-
-
-Function41ad7: ; 41ad7 (10:5ad7)
-	ld a, $3
-	ld [hBGMapMode], a
-	ld c, 4
-	call DelayFrames
-	ret
-
-Function41ae1: ; 41ae1 (10:5ae1)
-	ld a, $4
-	ld [hBGMapMode], a
-	ld c, 4
-	call DelayFrames
-	ret
-
-Function41aeb: ; 41aeb (10:5aeb)
-	ld a, [hCGB]
-	and a
-	jr z, .asm_41af3
-	call Function41ae1
-.asm_41af3
-	call Function41ad7
-	ret
-
-
-Function41af7: ; 41af7
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 41afb
-
-
 INCLUDE "battle/moves/moves.asm"
 
 INCLUDE "engine/evolve.asm"
@@ -14867,233 +7266,10 @@
 
 INCLUDE "engine/fruit_trees.asm"
 
+INCLUDE "battle/ai/move.asm"
 
-AIChooseMove: ; 440ce
-; Score each move in EnemyMonMoves starting from Buffer1. Lower is better.
-; Pick the move with the lowest score.
-
-; Wildmons attack at random.
-	ld a, [wBattleMode]
-	dec a
-	ret z
-
-	ld a, [wLinkMode]
-	and a
-	ret nz
-
-; No use picking a move if there's no choice.
-	callba CheckSubstatus_RechargeChargedRampageBideRollout
-	ret nz
-
-
-; The default score is 20. Unusable moves are given a score of 80.
-	ld a, 20
-	ld hl, Buffer1
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-
-; Don't pick disabled moves.
-	ld a, [EnemyDisabledMove]
-	and a
-	jr z, .CheckPP
-
-	ld hl, EnemyMonMoves
-	ld c, 0
-.CheckDisabledMove
-	cp [hl]
-	jr z, .ScoreDisabledMove
-	inc c
-	inc hl
-	jr .CheckDisabledMove
-.ScoreDisabledMove
-	ld hl, Buffer1
-	ld b, 0
-	add hl, bc
-	ld [hl], 80
-
-; Don't pick moves with 0 PP.
-.CheckPP
-	ld hl, Buffer1 - 1
-	ld de, EnemyMonPP
-	ld b, 0
-.CheckMovePP
-	inc b
-	ld a, b
-	cp EnemyMonMovesEnd - EnemyMonMoves + 1
-	jr z, .ApplyLayers
-	inc hl
-	ld a, [de]
-	inc de
-	and $3f
-	jr nz, .CheckMovePP
-	ld [hl], 80
-	jr .CheckMovePP
-
-
-; Apply AI scoring layers depending on the trainer class.
-.ApplyLayers
-	ld hl, TrainerClassAttributes + 3
-
-	; If we have a battle in BattleTower just load the Attributes of the first TrainerClass (Falkner)
-	; so we have always the same AI, regardless of the loaded class of trainer
-	ld a, [InBattleTowerBattle]
-	bit 0, a
-	jr nz, .battle_tower_skip
-
-	ld a, [TrainerClass]
-	dec a
-	ld bc, 7 ; Trainer2AI - Trainer1AI
-	call AddNTimes
-
-.battle_tower_skip
-	lb bc, CHECK_FLAG, 0
-	push bc
-	push hl
-
-.CheckLayer
-	pop hl
-	pop bc
-
-	ld a, c
-	cp 16 ; up to 16 scoring layers
-	jr z, .DecrementScores
-
-	push bc
-	ld d, BANK(TrainerClassAttributes)
-	predef FlagPredef
-	ld d, c
-	pop bc
-
-	inc c
-	push bc
-	push hl
-
-	ld a, d
-	and a
-	jr z, .CheckLayer
-
-	ld hl, AIScoringPointers
-	dec c
-	ld b, 0
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, BANK(AIScoring)
-	call FarCall_hl
-
-	jr .CheckLayer
-
-; Decrement the scores of all moves one by one until one reaches 0.
-.DecrementScores
-	ld hl, Buffer1
-	ld de, EnemyMonMoves
-	ld c, EnemyMonMovesEnd - EnemyMonMoves
-
-.DecrementNextScore
-	; If the enemy has no moves, this will infinite.
-	ld a, [de]
-	inc de
-	and a
-	jr z, .DecrementScores
-
-	; We are done whenever a score reaches 0
-	dec [hl]
-	jr z, .PickLowestScoreMoves
-
-	; If we just decremented the fourth move's score, go back to the first move
-	inc hl
-	dec c
-	jr z, .DecrementScores
-
-	jr .DecrementNextScore
-
-; In order to avoid bias towards the moves located first in memory, increment the scores
-; that were decremented one more time than the rest (in case there was a tie).
-; This means that the minimum score will be 1.
-.PickLowestScoreMoves
-	ld a, c
-
-.move_loop
-	inc [hl]
-	dec hl
-	inc a
-	cp NUM_MOVES + 1
-	jr nz, .move_loop
-
-	ld hl, Buffer1
-	ld de, EnemyMonMoves
-	ld c, NUM_MOVES
-
-; Give a score of 0 to a blank move	
-.loop2
-	ld a, [de]
-	and a
-	jr nz, .skip_load
-	ld [hl], a
-
-; Disregard the move if its score is not 1	
-.skip_load
-	ld a, [hl]
-	dec a
-	jr z, .keep
-	xor a
-	ld [hli], a
-	jr .after_toss
-
-.keep
-	ld a, [de]
-	ld [hli], a
-.after_toss
-	inc de
-	dec c
-	jr nz, .loop2
-
-; Randomly choose one of the moves with a score of 1 	
-.ChooseMove
-	ld hl, Buffer1
-	call Random
-	and 3
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .ChooseMove
-
-	ld [CurEnemyMove], a
-	ld a, c
-	ld [CurEnemyMoveNum], a
-	ret
-; 441af
-
-
-AIScoringPointers: ; 441af
-	dw AI_Basic
-	dw AI_Setup
-	dw AI_Types
-	dw AI_Offensive
-	dw AI_Smart
-	dw AI_Opportunist
-	dw AI_Aggressive
-	dw AI_Cautious
-	dw AI_Status
-	dw AI_Risky
-	dw AI_None
-	dw AI_None
-	dw AI_None
-	dw AI_None
-	dw AI_None
-	dw AI_None
-; 441cf
-
-
-Function441cf: ; 441cf
-	ld hl, Unknown_441fc
+AnimateDexSearchSlowpoke: ; 441cf
+	ld hl, .FrameIDs
 	ld b, 25
 .loop
 	ld a, [hli]
@@ -15101,16 +7277,16 @@
 	; Wrap around
 	cp $fe
 	jr nz, .ok
-	ld hl, Unknown_441fc
+	ld hl, .FrameIDs
 	ld a, [hli]
 .ok
 
-	ld [wc7db], a
+	ld [wDexSearchSlowpokeFrame], a
 	ld a, [hli]
 	ld c, a
 	push bc
 	push hl
-	call Function44207
+	call DoDexSearchSlowpokeFrame
 	pop hl
 	pop bc
 	call DelayFrames
@@ -15117,30 +7293,30 @@
 	dec b
 	jr nz, .loop
 	xor a
-	ld [wc7db], a
-	call Function44207
+	ld [wDexSearchSlowpokeFrame], a
+	call DoDexSearchSlowpokeFrame
 	ld c, 32
 	call DelayFrames
 	ret
 ; 441fc
 
-Unknown_441fc: ; 441fc
+.FrameIDs: ; 441fc
+	; frame ID, duration
 	db 0, 7
 	db 1, 7
 	db 2, 7
 	db 3, 7
 	db 4, 7
-	db $fe
+	db -2
 ; 44207
 
-
-Function44207: ; 44207
-	ld a, [wc7db]
-	ld hl, Unknown_44228
+DoDexSearchSlowpokeFrame: ; 44207
+	ld a, [wDexSearchSlowpokeFrame]
+	ld hl, .SpriteData
 	ld de, Sprites
-.asm_44210
+.loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	ret z
 	ld [de], a
 	inc de
@@ -15147,7 +7323,7 @@
 	ld a, [hli]
 	ld [de], a
 	inc de
-	ld a, [wc7db]
+	ld a, [wDexSearchSlowpokeFrame]
 	ld b, a
 	add a
 	add b
@@ -15158,44 +7334,46 @@
 	ld a, [hli]
 	ld [de], a
 	inc de
-	jr .asm_44210
+	jr .loop
 ; 44228
 
-Unknown_44228: ; 44228
-	db $58, $48, $00, $00
-	db $58, $50, $01, $00
-	db $58, $58, $02, $00
-	db $60, $48, $10, $00
-	db $60, $50, $11, $00
-	db $60, $58, $12, $00
-	db $68, $48, $20, $00
-	db $68, $50, $21, $00
-	db $68, $58, $22, $00
-	db $ff
+.SpriteData: ; 44228
+	dsprite 11, 0,  9, 0, $00, $00
+	dsprite 11, 0, 10, 0, $01, $00
+	dsprite 11, 0, 11, 0, $02, $00
+	dsprite 12, 0,  9, 0, $10, $00
+	dsprite 12, 0, 10, 0, $11, $00
+	dsprite 12, 0, 11, 0, $12, $00
+	dsprite 13, 0,  9, 0, $20, $00
+	dsprite 13, 0, 10, 0, $21, $00
+	dsprite 13, 0, 11, 0, $22, $00
+	db -1
 ; 4424d
 
-Function4424d: ; 4424d
+DisplayDexEntry: ; 4424d
 	call GetPokemonName
 	hlcoord 9, 3
-	call PlaceString
+	call PlaceString ; mon species
 	ld a, [wd265]
 	ld b, a
-	call Function44333
+	call GetDexEntryPointer
 	ld a, b
 	push af
 	hlcoord 9, 5
-	call FarString
+	call FarString ; dex species
 	ld h, b
 	ld l, c
 	push de
+; Print dex number
 	hlcoord 2, 8
-	ld a, $5c
+	ld a, $5c ; No
 	ld [hli], a
-	ld a, $5d
+	ld a, $5d ; .
 	ld [hli], a
 	ld de, wd265
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
 	call PrintNum
+; Check to see if we caught it.  Get out of here if we haven't.
 	ld a, [wd265]
 	dec a
 	call CheckCaughtMon
@@ -15202,6 +7380,7 @@
 	pop hl
 	pop bc
 	ret z
+; Get the height of the Pokemon.
 	ld a, [CurPartySpecies]
 	ld [CurSpecies], a
 	inc hl
@@ -15212,12 +7391,11 @@
 	ld d, l
 	ld e, h
 	pop hl
-rept 2
 	inc hl
-endr
+	inc hl
 	ld a, d
 	or e
-	jr z, .asm_442b0
+	jr z, .skip_height
 	push hl
 	push de
 	ld hl, [sp+$0]
@@ -15227,11 +7405,11 @@
 	lb bc, 2, 36
 	call PrintNum
 	hlcoord 14, 7
-	ld [hl], "<ROCKET>"
+	ld [hl], $5e ; ft symbol
 	pop af
 	pop hl
 
-.asm_442b0
+.skip_height
 	pop af
 	push af
 	inc hl
@@ -15242,32 +7420,34 @@
 	ld e, h
 	ld a, e
 	or d
-	jr z, .skip
+	jr z, .skip_weight
 	push de
 	ld hl, [sp+$0]
 	ld d, h
 	ld e, l
 	hlcoord 11, 9
-	lb bc, 2, 69
+	lb bc, 2, PRINTNUM_RIGHTALIGN | 5
 	call PrintNum
 	pop de
 
-.skip
+.skip_weight
+; Page 1
 	lb bc, 5, SCREEN_WIDTH - 2
 	hlcoord 2, 11
 	call ClearBox
 	hlcoord 1, 10
-	ld bc, $13
-	ld a, $61
+	ld bc, SCREEN_WIDTH - 1
+	ld a, $61 ; horizontal divider
 	call ByteFill
+	; page number
 	hlcoord 1, 9
-	ld [hl], "<CONT>"
+	ld [hl], $55
 	inc hl
-	ld [hl], "<CONT>"
+	ld [hl], $55
 	hlcoord 1, 10
-	ld [hl], "<......>"
+	ld [hl], $56 ; P.
 	inc hl
-	ld [hl], "<DONE>"
+	ld [hl], $57 ; 1
 	pop de
 	inc de
 	pop af
@@ -15278,6 +7458,8 @@
 	ld a, [wPokedexStatus]
 	or a
 	ret z
+
+; Page 2
 	push bc
 	push de
 	lb bc, 5, SCREEN_WIDTH - 2
@@ -15284,17 +7466,18 @@
 	hlcoord 2, 11
 	call ClearBox
 	hlcoord 1, 10
-	ld bc, $13
+	ld bc, SCREEN_WIDTH - 1
 	ld a, $61
 	call ByteFill
+	; page number
 	hlcoord 1, 9
-	ld [hl], "<CONT>"
+	ld [hl], $55
 	inc hl
-	ld [hl], "<CONT>"
+	ld [hl], $55
 	hlcoord 1, 10
-	ld [hl], "<......>"
+	ld [hl], $56 ; P.
 	inc hl
-	ld [hl], "<PROMPT>"
+	ld [hl], $58 ; 2
 	pop de
 	inc de
 	pop af
@@ -15307,7 +7490,8 @@
 	db "#@"
 ; 44333
 
-Function44333: ; 44333
+GetDexEntryPointer: ; 44333
+; return dex entry pointer b:de
 	push hl
 	ld hl, PokedexDataPointerTable
 	ld a, b
@@ -15314,9 +7498,8 @@
 	dec a
 	ld d, 0
 	ld e, a
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -15324,7 +7507,7 @@
 	rlca
 	rlca
 	and $3
-	ld hl, PokedexEntryBanks
+	ld hl, .PokedexEntryBanks
 	ld d, 0
 	ld e, a
 	add hl, de
@@ -15334,7 +7517,7 @@
 	ret
 ; 44351
 
-PokedexEntryBanks: ; 44351
+.PokedexEntryBanks: ; 44351
 
 GLOBAL PokedexEntries1
 GLOBAL PokedexEntries2
@@ -15347,11 +7530,12 @@
 	db BANK(PokedexEntries4)
 ; 44355
 
-Function44355: ; 44355
-	call Function44333
+GetDexEntryPagePointer: ; 44355
+	call GetDexEntryPointer ; b:de
 	push hl
 	ld h, d
 	ld l, e
+; skip species name
 .loop1
 	ld a, b
 	call GetFarByte
@@ -15358,11 +7542,14 @@
 	inc hl
 	cp "@"
 	jr nz, .loop1
+; skip height and weight
 rept 4
 	inc hl
 endr
+; if c != 1: skip entry
 	dec c
 	jr z, .done
+; skip entry
 .loop2
 	ld a, b
 	call GetFarByte
@@ -15377,136 +7564,19 @@
 	ret
 ; 44378
 
-
 PokedexDataPointerTable: ; 0x44378
 INCLUDE "data/pokedex/entry_pointers.asm"
 
 INCLUDE "engine/mail.asm"
 
-SECTION "bank12", ROMX, BANK[$12]
+SECTION "Crystal Unique", ROMX, BANK[$12]
 
-Function48000: ; 48000
-	ld a, $1
-	ld [wd474], a
-	xor a
-	ld [wd473], a
-	ld [PlayerGender], a
-	ld [wd475], a
-	ld [wd476], a
-	ld [wd477], a
-	ld [wd478], a
-	ld [wd002], a
-	ld [wd003], a
-	; could have done "ld a, [wd479] \ and %11111100", saved four operations
-	ld a, [wd479]
-	res 0, a
-	ld [wd479], a
-	ld a, [wd479]
-	res 1, a
-	ld [wd479], a
-	ret
-; 4802f
+INCLUDE "engine/init_gender.asm"
 
-INCLUDE "misc/mobile_12.asm"
-
-InitGender: ; 48dcb (12:4dcb)
-	call Function48e14
-	call Function48e47
-	call Function48e64
-	call Function3200
-	call SetPalettes
-	ld hl, TextJump_AreYouABoyOrAreYouAGirl
-	call PrintText
-	ld hl, .MenuDataHeader
-	call LoadMenuDataHeader
-	call Function3200
-	call InterpretMenu2
-	call WriteBackup
-	ld a, [MenuSelection2]
-	dec a
-	ld [PlayerGender], a
-	ld c, 10
-	call DelayFrames
-	ret
-; 48dfc (12:4dfc)
-
-.MenuDataHeader: ; 0x48dfc
-	db $40 ; flags
-	db 04, 06 ; start coords
-	db 09, 12 ; end coords
-	dw .MenuData2
-	db 1 ; default option
-; 0x48e04
-
-.MenuData2: ; 0x48e04
-	db $a1 ; flags
-	db 2 ; items
-	db "Boy@"
-	db "Girl@"
-; 0x48e0f
-
-TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f
-	; Are you a boy? Or are you a girl?
-	text_jump Text_AreYouABoyOrAreYouAGirl
-	db "@"
-; 0x48e14
-
-Function48e14: ; 48e14 (12:4e14)
-	ld a, $10
-	ld [MusicFade], a
-	ld a, $0
-	ld [MusicFadeIDLo], a
-	ld a, $0
-	ld [MusicFadeIDHi], a
-	ld c, 8
-	call DelayFrames
-	call ClearBGPalettes
-	call Function48000
-	call LoadFontsExtra
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	ld a, $0
-	call ByteFill
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	ret
-
-Function48e47: ; 48e47 (12:4e47)
-	ld hl, Palette_48e5c
-	ld de, UnknBGPals
-	ld bc, $8
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	ret
-; 48e5c (12:4e5c)
-
-Palette_48e5c: ; 48e5c
-	RGB 31, 31, 31
-	RGB 09, 30, 31
-	RGB 01, 11, 31
-	RGB 00, 00, 00
-; 48e64
-
-Function48e64: ; 48e64 (12:4e64)
-	ld de, GFX_48e71
-	ld hl, VTiles2 tile $00
-	lb bc, BANK(GFX_48e71), 1
-	call Get2bpp
-	ret
-; 48e71 (12:4e71)
-
-GFX_48e71: ; 48e71
-INCBIN "gfx/unknown/048e71.2bpp"
-
-
 DrawKrisPackGFX: ; 48e81
 	ld hl, PackFGFXPointers
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -15517,10 +7587,10 @@
 ; 48e93
 
 PackFGFXPointers: ; 48e93
-	dw PackFGFX + $f0 * 1
-	dw PackFGFX + $f0 * 3
-	dw PackFGFX + $f0 * 0
-	dw PackFGFX + $f0 * 2
+	dw PackFGFX + (15 tiles) * 1
+	dw PackFGFX + (15 tiles) * 3
+	dw PackFGFX + (15 tiles) * 0
+	dw PackFGFX + (15 tiles) * 2
 ; 48e9b
 
 PackFGFX: ; 48e9b
@@ -15532,59 +7602,57 @@
 	call ClearBGPalettes
 	call ClearScreen
 	call DelayFrame
-	ld b, SCGB_14
+	ld b, SCGB_PACKPALS
 	call GetSGBLayout
 	xor a
 	ld [wItemAttributeParamBuffer], a
-	call Function492a5
+	call .GetMoveTutorMove
 	ld [wd265], a
-	ld [wd262], a
+	ld [wPutativeTMHMMove], a
 	call GetMoveName
 	call CopyName1
-	callba Function2c7fb
-	jr c, .asm_4929c
-	jr .asm_49291
+	callba ChooseMonToLearnTMHM
+	jr c, .cancel
+	jr .enter_loop
 
-.asm_49289
-	callba Function2c80a
-	jr c, .asm_4929c
-
-.asm_49291
-	call Function492b9
-	jr nc, .asm_49289
+.loop
+	callba ChooseMonToLearnTMHM_NoRefresh
+	jr c, .cancel
+.enter_loop
+	call CheckCanLearnMoveTutorMove
+	jr nc, .loop
 	xor a
 	ld [ScriptVar], a
-	jr .asm_492a1
+	jr .quit
 
-.asm_4929c
-	ld a, $ff
+.cancel
+	ld a, -1
 	ld [ScriptVar], a
-
-.asm_492a1
-	call ReturnToCallingMenu
+.quit
+	call CloseSubmenu
 	ret
 ; 492a5
 
-Function492a5: ; 492a5
+.GetMoveTutorMove: ; 492a5
 	ld a, [ScriptVar]
-	cp $1
-	jr z, .asm_492b3
-	cp $2
-	jr z, .asm_492b6
+	cp 1
+	jr z, .flamethrower
+	cp 2
+	jr z, .thunderbolt
 	ld a, ICE_BEAM
 	ret
 
-.asm_492b3
+.flamethrower
 	ld a, FLAMETHROWER
 	ret
 
-.asm_492b6
+.thunderbolt
 	ld a, THUNDERBOLT
 	ret
 ; 492b9
 
-Function492b9: ; 492b9
-	ld hl, MenuDataHeader_0x4930a
+CheckCanLearnMoveTutorMove: ; 492b9
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 
 	predef CanLearnTMHMMove
@@ -15602,12 +7670,12 @@
 	ld de, SFX_WRONG
 	call PlaySFX
 	pop de
-	ld a, BANK(UnknownText_0x2c8ce)
-	ld hl, UnknownText_0x2c8ce
+	ld a, BANK(Text_TMHMNotCompatible)
+	ld hl, Text_TMHMNotCompatible
 	call FarPrintText
 	jr .didnt_learn
-.can_learn
 
+.can_learn
 	callab KnowsMove
 	jr c, .didnt_learn
 
@@ -15631,628 +7699,14 @@
 	ret
 ; 4930a
 
-MenuDataHeader_0x4930a: ; 0x4930a
+.MenuDataHeader: ; 0x4930a
 	db $40 ; flags
 	db 12, 00 ; start coords
 	db 17, 19 ; end coords
 ; 4930f
 
-Function4930f: ; 4930f (mobile)
-	ld a, b
-	cp SCGB_RAM
-	jr nz, .not_ram
-	ld a, [SGBPredef]
-.not_ram
-	push af
-	callba Function9673
-	pop af
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, .jumptable
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .done
-	push de
-	jp [hl]
-.done
-	ret
-; 49330 (12:5330)
+INCLUDE "predef/crystal.asm"
 
-.jumptable: ; 49330
-	dw Function4936e
-	dw Function4942f
-	dw Function49706
-; 49336
-
-Function49336: ; 49336
-.asm_49336
-	push bc
-	push hl
-.asm_49338
-	ld [hli], a
-	dec c
-	jr nz, .asm_49338
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_49336
-	ret
-; 49346
-
-
-Function49346: ; 49346 (12:5346)
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	ret
-
-Function49351: ; 49351 (12:5351)
-	ld de, UnknBGPals
-	ld hl, Palette_493e1
-	ld bc, $28
-	ld a, $5 ; BANK(UnknBGPals)
-	call FarCopyWRAM
-	ld de, UnknBGPals + $38
-	ld hl, Palette_49418
-	ld bc, $8
-	ld a, $5 ; BANK(UnknBGPals)
-	call FarCopyWRAM
-	ret
-
-Function4936e: ; 4936e (12:536e)
-	call Function49351
-	call Function49346
-	call Function49384
-	callba Function96b3
-	callba Function96a4
-	ret
-
-Function49384: ; 49384 (12:5384)
-	hlcoord 0, 0, AttrMap
-	lb bc, 4, 1
-	ld a, $1
-	call Function49336
-	lb bc, 2, 1
-	ld a, $2
-	call Function49336
-	lb bc, 6, 1
-	ld a, $3
-	call Function49336
-	hlcoord 1, 0, AttrMap
-	ld a, $1
-	lb bc, 3, 18
-	call Function49336
-	lb bc, 2, 18
-	ld a, $2
-	call Function49336
-	lb bc, 12, 18
-	ld a, $3
-	call Function49336
-	hlcoord 19, 0, AttrMap
-	lb bc, 4, 1
-	ld a, $1
-	call Function49336
-	lb bc, 2, 1
-	ld a, $2
-	call Function49336
-	lb bc, 6, 1
-	ld a, $3
-	call Function49336
-	hlcoord 0, 12, AttrMap
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $7
-	call ByteFill
-	ret
-; 493e1 (12:53e1)
-
-Palette_493e1: ; 493e1
-	RGB 03, 07, 09
-	RGB 26, 31, 00
-	RGB 20, 16, 03
-	RGB 31, 31, 31
-
-	RGB 13, 24, 29
-	RGB 11, 16, 30
-	RGB 07, 11, 22
-	RGB 05, 06, 18
-
-	RGB 31, 31, 31
-	RGB 20, 26, 31
-	RGB 13, 24, 29
-	RGB 11, 16, 30
-
-	RGB 31, 31, 31
-	RGB 20, 26, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 20, 16, 08
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-; 49409
-
-
-Function49409:: ; 49409
-	ld hl, Palette_49418
-	ld de, UnknBGPals + 8 * 7
-	ld bc, 8
-	ld a, $5
-	call FarCopyWRAM
-	ret
-; 49418
-
-Palette_49418: ; 49418
-	RGB 31, 31, 31
-	RGB 08, 19, 28
-	RGB 05, 05, 16
-	RGB 00, 00, 00
-; 49420
-
-Function49420:: ; 49420 (12:5420)
-	ld hl, MansionPalette4
-	ld de, UnknBGPals + $30
-	ld bc, $8
-	ld a, $5 ; BANK(UnknBGPals)
-	call FarCopyWRAM
-	ret
-; 4942f (12:542f)
-
-Function4942f: ; 4942f
-	call Function49351
-	ld de, UnknBGPals + $38
-	ld hl, Palette_49478
-	ld bc, $8
-	ld a, $5 ; BANK(UnknBGPals)
-	call FarCopyWRAM
-	call Function49346
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	hlcoord 0, 14, AttrMap
-	ld bc, 4 * SCREEN_WIDTH
-	ld a, $7
-	call ByteFill
-	ld a, [wd002]
-	bit 6, a
-	jr z, .asm_49464
-	call Function49480
-	jr .asm_49467
-
-.asm_49464
-	call Function49496
-
-.asm_49467
-	callba Function96b3
-	callba Function96a4
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 49478
-
-Palette_49478: ; 49478
-	RGB 31, 31, 31
-	RGB 26, 31, 00
-	RGB 20, 16, 03
-	RGB 00, 00, 00
-; 49480
-
-Function49480: ; 49480
-	hlcoord 0, 0, AttrMap
-	lb bc, 4, SCREEN_WIDTH
-	ld a, $7
-	call Function49336
-	hlcoord 0, 2, AttrMap
-	ld a, $4
-	ld [hl], a
-	hlcoord 19, 2, AttrMap
-	ld [hl], a
-	ret
-; 49496
-
-Function49496: ; 49496
-	hlcoord 0, 0, AttrMap
-	lb bc, 2, SCREEN_WIDTH
-	ld a, $7
-	call Function49336
-	hlcoord 0, 1, AttrMap
-	ld a, $4
-	ld [hl], a
-	hlcoord 19, 1, AttrMap
-	ld [hl], a
-	ret
-; 494ac
-
-LoadSpecialMapPalette: ; 494ac
-	ld a, [wTileset]
-	cp TILESET_POKECOM_CENTER
-	jr z, .pokecom_2f
-	cp TILESET_BATTLE_TOWER
-	jr z, .battle_tower
-	cp TILESET_ICE_PATH
-	jr z, .ice_path
-	cp TILESET_HOUSE_1
-	jr z, .house
-	cp TILESET_RADIO_TOWER
-	jr z, .radio_tower
-	cp TILESET_CELADON_MANSION
-	jr z, .mansion_mobile
-	jr .do_nothing
-
-.pokecom_2f
-	call LoadPokeComPalette
-	scf
-	ret
-
-.battle_tower
-	call LoadBattleTowerPalette
-	scf
-	ret
-
-.ice_path
-	ld a, [wPermission] ; permission
-	and 7
-	cp 3 ; Hall of Fame
-	jr z, .do_nothing
-	call LoadIcePathPalette
-	scf
-	ret
-
-.house
-	call LoadHousePalette
-	scf
-	ret
-
-.radio_tower
-	call LoadRadioTowerPalette
-	scf
-	ret
-
-.mansion_mobile
-	call LoadMansionPalette
-	scf
-	ret
-
-.do_nothing
-	and a
-	ret
-; 494f2
-
-LoadPokeComPalette: ; 494f2
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, PokeComPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 49501
-
-PokeComPalette: ; 49501
-INCLUDE "tilesets/pokecom.pal"
-; 49541
-
-LoadBattleTowerPalette: ; 49541
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, BattleTowerPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 49550
-
-BattleTowerPalette: ; 49550
-INCLUDE "tilesets/battle_tower.pal"
-; 49590
-
-LoadIcePathPalette: ; 49590
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, IcePathPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 4959f
-
-IcePathPalette: ; 4959f
-INCLUDE "tilesets/ice_path.pal"
-; 495df
-
-LoadHousePalette: ; 495df
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, HousePalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 495ee
-
-HousePalette: ; 495ee
-INCLUDE "tilesets/house.pal"
-; 4962e
-
-LoadRadioTowerPalette: ; 4962e
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, RadioTowerPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 4963d
-
-RadioTowerPalette: ; 4963d
-INCLUDE "tilesets/radio_tower.pal"
-; 4967d
-
-MansionPalette1: ; 4967d
-	RGB 30, 28, 26
-	RGB 19, 19, 19
-	RGB 13, 13, 13
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 07, 07, 07
-
-	RGB 18, 24, 09
-	RGB 15, 20, 01
-	RGB 09, 13, 00
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 15, 16, 31
-	RGB 09, 09, 31
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 31, 31, 07
-	RGB 31, 16, 01
-	RGB 07, 07, 07
-
-	RGB 26, 24, 17
-	RGB 21, 17, 07
-	RGB 16, 13, 03
-	RGB 07, 07, 07
-
-MansionPalette3: ; 496ad
-	RGB 30, 28, 26
-	RGB 17, 19, 31
-	RGB 14, 16, 31
-	RGB 07, 07, 07
-
-	RGB 31, 31, 16
-	RGB 31, 31, 16
-	RGB 14, 09, 00
-	RGB 00, 00, 00
-; 496bd
-
-MansionPalette4: ; 496bd
-	RGB 05, 05, 16
-	RGB 08, 19, 28
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-; 496c5
-
-LoadMansionPalette: ; 496c5
-	ld a, $5
-	ld de, UnknBGPals
-	ld hl, MansionPalette1
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ld a, $5
-	ld de, UnknBGPals + 4 palettes
-	ld hl, MansionPalette2
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ld a, $5
-	ld de, UnknBGPals + 3 palettes
-	ld hl, MansionPalette3
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ld a, $5
-	ld de, UnknBGPals + 6 palettes
-	ld hl, MansionPalette4
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ret
-; 496fe
-
-MansionPalette2: ; 496fe
-	RGB 25, 24, 23
-	RGB 20, 19, 19
-	RGB 14, 16, 31
-	RGB 07, 07, 07
-; 49706
-
-Function49706: ; 49706
-	ld hl, Palette_49732
-	ld de, UnknBGPals
-	ld bc, 1 palettes
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	call Function49346
-	callba Function96b3
-	ld hl, Palette_4973a
-	ld de, UnknOBPals
-	ld bc, 1 palettes
-	ld a, $5
-	call FarCopyWRAM
-	ret
-; 49732
-
-Palette_49732: ; 49732
-	RGB 31, 31, 31
-	RGB 23, 16, 07
-	RGB 23, 07, 07
-	RGB 03, 07, 20
-; 4973a
-
-Palette_4973a: ; 4973a
-	RGB 00, 00, 00
-	RGB 07, 05, 31
-	RGB 14, 18, 31
-	RGB 31, 31, 31
-; 49742
-
-Function49742: ; 49742
-	ld hl, Palette_49757
-	ld de, UnknBGPals
-	ld bc, $40
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	ret
-; 49757
-
-Palette_49757: ; 49757
-	RGB 31, 31, 63
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 63
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 31, 00, 00
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 30, 16, 26
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 16, 16, 16
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 31, 12, 12
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 07, 08, 31
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 29, 28, 09
-	RGB 31, 31, 31
-; 49797
-
-Function49797: ; 49797
-	hlcoord 0, 0, AttrMap
-	lb bc, 16, 2
-	ld a, $4
-	call Function49336
-	ld a, $3
-	ldcoord_a 0, 1, AttrMap
-	ldcoord_a 0, 14, AttrMap
-	hlcoord 2, 0, AttrMap
-	lb bc, 8, 18
-	ld a, $5
-	call Function49336
-	hlcoord 2, 8, AttrMap
-	lb bc, 8, 18
-	ld a, $6
-	call Function49336
-	hlcoord 0, 16, AttrMap
-	lb bc, 2, SCREEN_WIDTH
-	ld a, $4
-	call Function49336
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 6, 1, AttrMap
-	call Function49336
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 17, 1, AttrMap
-	call Function49336
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 6, 9, AttrMap
-	call Function49336
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 17, 9, AttrMap
-	call Function49336
-	ld a, $2
-	hlcoord 2, 16, AttrMap
-	ld [hli], a
-	ld a, $7
-rept 3
-	ld [hli], a
-endr
-	ld a, $2
-	ld [hl], a
-	hlcoord 2, 17, AttrMap
-	ld a, $3
-	ld bc, 6
-	call ByteFill
-	ret
-; 49811
-
-Function49811: ; 49811
-	ld hl, Palette_49826
-	ld de, UnknBGPals + $10
-	ld bc, $30
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	ret
-; 49826
-
-Palette_49826: ; 49826
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 31, 00, 00
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 15, 23, 30
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 16, 16, 16
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 25, 07, 04
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 03, 22, 08
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 29, 28, 09
-	RGB 31, 31, 31
-; 49856
-
-Function49856: ; 49856
-	call Function49797
-	ret
-; 4985a
-
 Unknown_4985a: ; unreferenced
 	db $ab, $03, $57, $24, $ac, $0e, $13, $32
 	db $be, $30, $5b, $4c, $47, $60, $ed, $f2
@@ -16265,1224 +7719,11 @@
 
 INCLUDE "event/celebi.asm"
 INCLUDE "engine/main_menu.asm"
-
-SpecialBeastsCheck: ; 0x4a6e8
-; Check if the player owns all three legendary beasts.
-; They must exist in either party or PC, and have the player's OT and ID.
-; Return the result in ScriptVar.
-
-	ld a, RAIKOU
-	ld [ScriptVar], a
-	call CheckOwnMonAnywhere
-	jr nc, .notexist
-
-	ld a, ENTEI
-	ld [ScriptVar], a
-	call CheckOwnMonAnywhere
-	jr nc, .notexist
-
-	ld a, SUICUNE
-	ld [ScriptVar], a
-	call CheckOwnMonAnywhere
-	jr nc, .notexist
-
-	; they exist
-	ld a, 1
-	ld [ScriptVar], a
-	ret
-
-.notexist
-	xor a
-	ld [ScriptVar], a
-	ret
-
-
-SpecialMonCheck: ; 0x4a711
-; Check if the player owns any monsters of the species in ScriptVar.
-; Return the result in ScriptVar.
-
-	call CheckOwnMonAnywhere
-	jr c, .exists
-
-	; doesn't exist
-	xor a
-	ld [ScriptVar], a
-	ret
-
-.exists
-	ld a, 1
-	ld [ScriptVar], a
-	ret
-
-
-CheckOwnMonAnywhere: ; 0x4a721
-; Check if the player owns any monsters of the species in ScriptVar.
-; It must exist in either party or PC, and have the player's OT and ID.
-
-	; If there are no monsters in the party,
-	; the player must not own any yet.
-	ld a, [PartyCount]
-	and a
-	ret z
-
-	ld d, a
-	ld e, 0
-	ld hl, PartyMon1Species
-	ld bc, PartyMonOT
-
-	; Run CheckOwnMon on each Pokémon in the party.
-.partymon
-	call CheckOwnMon
-	ret c ; found!
-
-	push bc
-	ld bc, PARTYMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call UpdateOTPointer
-	dec d
-	jr nz, .partymon
-
-	; Run CheckOwnMon on each Pokémon in the PC.
-	ld a, BANK(sBoxCount)
-	call GetSRAMBank
-	ld a, [sBoxCount]
-	and a
-	jr z, .boxes
-
-	ld d, a
-	ld hl, sBoxMon1Species
-	ld bc, sBoxMonOT
-.openboxmon
-	call CheckOwnMon
-	jr nc, .loop
-
-	; found!
-	call CloseSRAM
-	ret
-
-.loop
-	push bc
-	ld bc, BOXMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call UpdateOTPointer
-	dec d
-	jr nz, .openboxmon
-
-	; Run CheckOwnMon on each monster in the other 13 PC boxes.
-.boxes
-	call CloseSRAM
-
-	ld c, 0
-.box
-	; Don't search the current box again.
-	ld a, [wCurBox]
-	and $f
-	cp c
-	jr z, .loopbox
-
-	; Load the box.
-	ld hl, BoxAddressTable1
-	ld b, 0
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	call GetSRAMBank
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	; Number of monsters in the box
-	ld a, [hl]
-	and a
-	jr z, .loopbox
-
-	push bc
-
-	push hl
-	ld de, sBoxMons - sBoxCount
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	push de
-	ld de, sBoxMonOT - sBoxCount
-	add hl, de
-	ld b, h
-	ld c, l
-	pop hl
-
-	ld d, a
-
-.boxmon
-	call CheckOwnMon
-	jr nc, .loopboxmon
-
-	; found!
-	pop bc
-	call CloseSRAM
-	ret
-
-.loopboxmon
-	push bc
-	ld bc, BOXMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call UpdateOTPointer
-	dec d
-	jr nz, .boxmon
-	pop bc
-
-.loopbox
-	inc c
-	ld a, c
-	cp NUM_BOXES
-	jr c, .box
-
-	; not found
-	call CloseSRAM
-	and a
-	ret
-
-
-CheckOwnMon: ; 0x4a7ba
-; Check if a Pokémon belongs to the player and is of a specific species.
-
-; inputs:
-; hl, pointer to PartyMonNSpecies
-; bc, pointer to PartyMonNOT
-; ScriptVar should contain the species we're looking for
-
-; outputs:
-; sets carry if monster matches species, ID, and OT name.
-
-	push bc
-	push hl
-	push de
-	ld d, b
-	ld e, c
-
-; check species
-	ld a, [ScriptVar] ; species we're looking for
-	ld b, [hl] ; species we have
-	cp b
-	jr nz, .notfound ; species doesn't match
+INCLUDE "misc/mobile_menu.asm"
+INCLUDE "engine/search.asm"
+INCLUDE "misc/mobile_12_2.asm"
+; mobile battle selection
 
-; check ID number
-	ld bc, MON_ID
-	add hl, bc ; now hl points to ID number
-	ld a, [PlayerID]
-	cp [hl]
-	jr nz, .notfound ; ID doesn't match
-	inc hl
-	ld a, [PlayerID + 1]
-	cp [hl]
-	jr nz, .notfound ; ID doesn't match
-
-; check OT
-; This only checks five characters, which is fine for the Japanese version,
-; but in the English version the player name is 7 characters, so this is wrong.
-
-	ld hl, PlayerName
-
-	rept 4
-	ld a, [de]
-	cp [hl]
-	jr nz, .notfound
-	cp "@"
-	jr z, .found ; reached end of string
-	inc hl
-	inc de
-	endr
-
-	ld a, [de]
-	cp [hl]
-	jr z, .found
-
-.notfound
-	pop de
-	pop hl
-	pop bc
-	and a
-	ret
-
-.found
-	pop de
-	pop hl
-	pop bc
-	scf
-	ret
-; 0x4a810
-
-BoxAddressTable1: ; 4a810
-	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
-; 4a83a
-
-UpdateOTPointer: ; 0x4a83a
-	push hl
-	ld hl, NAME_LENGTH
-	add hl, bc
-	ld b, h
-	ld c, l
-	pop hl
-	ret
-; 0x4a843
-
-
-MobileCheckOwnMonAnywhere: ; 4a843
-; Like CheckOwnMonAnywhere, but only check for species.
-; OT/ID don't matter.
-
-	ld a, [PartyCount]
-	and a
-	ret z
-
-	ld d, a
-	ld e, 0
-	ld hl, PartyMon1Species
-	ld bc, PartyMonOT
-.asm_4a851
-	call Function4a8dc
-	ret c
-	push bc
-	ld bc, PARTYMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call Function4a91e
-	dec d
-	jr nz, .asm_4a851
-	ld a, BANK(sBoxCount)
-	call GetSRAMBank
-	ld a, [sBoxCount]
-	and a
-	jr z, .asm_4a888
-	ld d, a
-	ld hl, sBoxMon1Species
-	ld bc, sBoxMonOT
-.asm_4a873
-	call Function4a8dc
-	jr nc, .asm_4a87c
-	call CloseSRAM
-	ret
-
-.asm_4a87c
-	push bc
-	ld bc, BOXMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call Function4a91e
-	dec d
-	jr nz, .asm_4a873
-
-.asm_4a888
-	call CloseSRAM
-	ld c, 0
-.asm_4a88d
-	ld a, [wCurBox]
-	and $f
-	cp c
-	jr z, .asm_4a8d1
-	ld hl, BoxAddressTable2
-	ld b, 0
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	call GetSRAMBank
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	and a
-	jr z, .asm_4a8d1
-	push bc
-	push hl
-	ld de, sBoxMons - sBoxCount
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	push de
-	ld de, sBoxMonOT - sBoxCount
-	add hl, de
-	ld b, h
-	ld c, l
-	pop hl
-	ld d, a
-.asm_4a8ba
-	call Function4a8dc
-	jr nc, .asm_4a8c4
-	pop bc
-	call CloseSRAM
-	ret
-
-.asm_4a8c4
-	push bc
-	ld bc, BOXMON_STRUCT_LENGTH
-	add hl, bc
-	pop bc
-	call Function4a91e
-	dec d
-	jr nz, .asm_4a8ba
-	pop bc
-
-.asm_4a8d1
-	inc c
-	ld a, c
-	cp NUM_BOXES
-	jr c, .asm_4a88d
-	call CloseSRAM
-	and a
-	ret
-; 4a8dc
-
-Function4a8dc: ; 4a8dc
-	push bc
-	push hl
-	push de
-	ld d, b
-	ld e, c
-	ld a, [ScriptVar]
-	ld b, [hl]
-	cp b
-	jr nz, .no_match
-	jr .match
-
-.no_match
-	pop de
-	pop hl
-	pop bc
-	and a
-	ret
-
-.match
-	pop de
-	pop hl
-	pop bc
-	scf
-	ret
-; 4a8f4
-
-BoxAddressTable2: ; 4a8f4
-	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
-; 4a91e
-
-Function4a91e: ; 4a91e
-	push hl
-	ld hl, NAME_LENGTH
-	add hl, bc
-	ld b, h
-	ld c, l
-	pop hl
-	ret
-; 4a927
-
-
-FindItemInPCOrBag: ; 4a927
-	ld a, [ScriptVar]
-	ld [CurItem], a
-	ld hl, PCItems
-	call CheckItem
-	jr c, .found
-
-	ld a, [ScriptVar]
-	ld [CurItem], a
-	ld hl, NumItems
-	call CheckItem
-	jr c, .found
-
-	xor a
-	ld [ScriptVar], a
-	ret
-
-.found
-	ld a, 1
-	ld [ScriptVar], a
-	ret
-; 4a94e
-
-Function4a94e: ; 4a94e
-	call FadeToMenu
-	ld a, -1
-	ld hl, wd002
-	ld bc, 3
-	call ByteFill
-	xor a
-	ld [wd018], a
-	ld [wd019], a
-	ld b, SCGB_14
-	call GetSGBLayout
-	call SetPalettes
-	call Function4aa22
-	jr c, .asm_4a985
-	jr z, .asm_4a9a1
-	jr .asm_4a97b
-
-.asm_4a974
-	call Function4aa25
-	jr c, .asm_4a985
-	jr z, .asm_4a9a1
-
-.asm_4a97b
-	call Function4ac58
-	ld hl, wd019
-	res 1, [hl]
-	jr .asm_4a974
-
-.asm_4a985
-	ld a, [wd018]
-	and a
-	jr nz, .asm_4a990
-	call Function4aba8
-	jr c, .asm_4a974
-
-.asm_4a990
-	call ReturnToCallingMenu
-	ld hl, wd002
-	ld a, -1
-	ld bc, 3
-	call ByteFill
-	scf
-	jr .asm_4a9af
-
-.asm_4a9a1
-	call Function4a9c3
-	jr c, .asm_4a9b0
-	call Function4a9d7
-	jr c, .asm_4a974
-	call ReturnToCallingMenu
-	and a
-
-.asm_4a9af
-	ret
-
-.asm_4a9b0
-	ld de, SFX_WRONG
-	call PlaySFX
-	ld hl, UnknownText_0x4a9be
-	call PrintText
-	jr .asm_4a974
-; 4a9be
-
-UnknownText_0x4a9be: ; 0x4a9be
-	; Pick three #MON for battle.
-	text_jump UnknownText_0x1c51d7
-	db "@"
-; 0x4a9c3
-
-Function4a9c3: ; 4a9c3
-	ld hl, wd002
-	ld a, $ff
-	cp [hl]
-	jr z, .asm_4a9d5
-	inc hl
-	cp [hl]
-	jr z, .asm_4a9d5
-	inc hl
-	cp [hl]
-	jr z, .asm_4a9d5
-	and a
-	ret
-
-.asm_4a9d5
-	scf
-	ret
-; 4a9d7
-
-Function4a9d7: ; 4a9d7
-	ld a, [wd002]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld h, d
-	ld l, e
-	ld de, EndFlypoint
-	ld bc, 6
-	call CopyBytes
-	ld a, [wd003]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld h, d
-	ld l, e
-	ld de, wd00c
-	ld bc, 6
-	call CopyBytes
-	ld a, [wd004]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld h, d
-	ld l, e
-	ld de, wd012
-	ld bc, 6
-	call CopyBytes
-	ld hl, UnknownText_0x4aa1d
-	call PrintText
-	call YesNoBox
-	ret
-; 4aa1d
-
-UnknownText_0x4aa1d: ; 0x4aa1d
-	; , @  and @ . Use these three?
-	text_jump UnknownText_0x1c51f4
-	db "@"
-; 0x4aa22
-
-Function4aa22: ; 4aa22
-	call ClearBGPalettes
-
-Function4aa25: ; 4aa25
-	callba LoadPartyMenuGFX
-	callba InitPartyMenuWithCancel
-	call Function4aad3
-
-Function4aa34: ; 4aa34
-	ld a, $9
-	ld [PartyMenuActionText], a
-	callba WritePartyMenuTilemap
-	xor a
-	ld [PartyMenuActionText], a
-	callba PrintPartyMenuText
-	call Function4aab6
-	call WaitBGMap
-	call SetPalettes
-	call DelayFrame
-	call Function4ab1a
-	jr z, .asm_4aa66
-	push af
-	call Function4aafb
-	jr c, .asm_4aa67
-	call Function4ab06
-	jr c, .asm_4aa67
-	pop af
-
-.asm_4aa66
-	ret
-
-.asm_4aa67
-	ld hl, wd019
-	set 1, [hl]
-	pop af
-	ret
-; 4aa6e
-
-Function4aa6e: ; 4aa6e
-	pop af
-	ld de, SFX_WRONG
-	call PlaySFX
-	call WaitSFX
-	jr Function4aa34
-; 4aa7a
-
-Function4aa7a: ; 4aa7a
-	ld hl, wd002
-	ld d, $3
-.loop
-	ld e, PARTY_LENGTH
-	ld a, [hli]
-	push de
-	push hl
-	cp -1
-	jr z, .done
-	ld hl, wSpriteAnimationStructs
-	inc a
-	ld d, a
-.inner_loop
-	ld a, [hl]
-	and a
-	jr z, .next
-	cp d
-	jr z, .same_as_d
-	jr .next
-
-	ld a, $3
-	jr .proceed
-
-.same_as_d
-	ld a, $2
-
-.proceed
-	push hl
-	ld c, l
-	ld b, h
-	ld hl, $2
-	add hl, bc
-	ld [hl], a
-	pop hl
-
-.next
-	ld bc, $10
-	add hl, bc
-	dec e
-	jr nz, .inner_loop
-	pop hl
-	pop de
-	dec d
-	jr nz, .loop
-	jr .finished
-
-.done
-	pop hl
-	pop de
-
-.finished
-	ret
-; 4aab6
-
-Function4aab6: ; 4aab6
-	ld hl, wd002
-	ld d, $3
-.loop
-	ld a, [hli]
-	cp -1
-	jr z, .done
-	push de
-	push hl
-	hlcoord 0, 1
-	ld bc, $28
-	call AddNTimes
-	ld [hl], $ec
-	pop hl
-	pop de
-	dec d
-	jr nz, .loop
-
-.done
-	ret
-; 4aad3
-
-Function4aad3: ; 4aad3
-	ld hl, PartyCount
-	ld a, [hli]
-	and a
-	ret z ; Nothing in your party
-
-	ld c, a
-	xor a
-	ld [hObjectStructIndexBuffer], a
-.loop
-	push bc
-	push hl
-	ld e, 0
-	callba Function8e83f
-	ld a, [hObjectStructIndexBuffer]
-	inc a
-	ld [hObjectStructIndexBuffer], a
-	pop hl
-	pop bc
-	dec c
-	jr nz, .loop
-
-	call Function4aa7a
-	callba Function8cf69
-	ret
-; 4aafb
-
-Function4aafb: ; 4aafb
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .egg
-	and a
-	ret
-
-.egg
-	scf
-	ret
-; 4ab06
-
-Function4ab06: ; 4ab06
-	ld a, [CurPartyMon]
-	ld bc, PARTYMON_STRUCT_LENGTH
-	ld hl, PartyMon1HP
-	call AddNTimes
-	ld a, [hli]
-	ld b, a
-	ld a, [hl]
-	or b
-	jr nz, .NotFainted
-	scf
-
-.NotFainted
-	ret
-; 4ab1a
-
-Function4ab1a: ; 4ab1a
-.asm_4ab1a
-	ld a, $fb
-	ld [wcfa8], a
-	ld a, $26
-	ld [wcfa7], a
-	ld a, $2
-	ld [wcfa4], a
-	call Function4adf7
-	call Function1bc9
-	call Function4abc3
-	jr c, .asm_4ab1a
-	push af
-	call Function4ab99
-	call nc, Function1bee
-	pop af
-	bit 1, a
-	jr nz, .asm_4ab6d
-	ld a, [PartyCount]
-	inc a
-	ld b, a
-	ld a, [MenuSelection2]
-	ld [wd0d8], a
-	cp b
-	jr z, .asm_4ab7e
-	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
-	ld a, $1
-	and a
-	ret
-
-.asm_4ab6d
-	ld a, [MenuSelection2]
-	ld [wd0d8], a
-.asm_4ab73
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	scf
-	ret
-
-.asm_4ab7e
-	ld a, $1
-	ld [wd018], a
-	ld a, [wcfaa]
-	cp $2
-	jr z, .asm_4ab73
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	xor a
-	ld [wd018], a
-	and a
-	ret
-; 4ab99
-
-Function4ab99: ; 4ab99
-	bit 1, a
-	jr z, .asm_4aba6
-	ld a, [wd002]
-	cp $ff
-	jr z, .asm_4aba6
-	scf
-	ret
-
-.asm_4aba6
-	and a
-	ret
-; 4aba8
-
-Function4aba8: ; 4aba8
-	ld hl, wd004
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_4abbe
-	dec hl
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_4abbe
-	dec hl
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_4abbe
-	and a
-	ret
-
-.asm_4abbe
-	ld a, $ff
-	ld [hl], a
-	scf
-	ret
-; 4abc3
-
-Function4abc3: ; 4abc3
-	bit 3, a
-	jr z, .asm_4abd5
-	ld a, [PartyCount]
-	inc a
-	ld [MenuSelection2], a
-	ld a, $1
-	ld [wcfaa], a
-	jr .asm_4ac29
-
-.asm_4abd5
-	bit 6, a
-	jr z, .asm_4abeb
-	ld a, [MenuSelection2]
-	ld [MenuSelection2], a
-	and a
-	jr nz, .asm_4ac29
-	ld a, [PartyCount]
-	inc a
-	ld [MenuSelection2], a
-	jr .asm_4ac29
-
-.asm_4abeb
-	bit 7, a
-	jr z, .asm_4ac08
-	ld a, [MenuSelection2]
-	ld [MenuSelection2], a
-	ld a, [PartyCount]
-rept 2
-	inc a
-endr
-	ld b, a
-	ld a, [MenuSelection2]
-	cp b
-	jr nz, .asm_4ac29
-	ld a, $1
-	ld [MenuSelection2], a
-	jr .asm_4ac29
-
-.asm_4ac08
-	bit 4, a
-	jr nz, .asm_4ac10
-	bit 5, a
-	jr z, .asm_4ac56
-
-.asm_4ac10
-	ld a, [MenuSelection2]
-	ld b, a
-	ld a, [PartyCount]
-	inc a
-	cp b
-	jr nz, .asm_4ac29
-	ld a, [wcfaa]
-	cp $1
-	jr z, .asm_4ac26
-	ld a, $1
-	jr .asm_4ac29
-
-.asm_4ac26
-	ld [wcfaa], a
-
-.asm_4ac29
-	hlcoord 0, 1
-	lb bc, 13, 1
-	call ClearBox
-	call Function4aab6
-	ld a, [PartyCount]
-	hlcoord 6, 1
-.asm_4ac3b
-	ld bc, $28
-	add hl, bc
-	dec a
-	jr nz, .asm_4ac3b
-	ld [hl], $7f
-	ld a, [MenuSelection2]
-	ld b, a
-	ld a, [PartyCount]
-	inc a
-	cp b
-	jr z, .asm_4ac54
-	ld a, $1
-	ld [wcfaa], a
-
-.asm_4ac54
-	scf
-	ret
-
-.asm_4ac56
-	and a
-	ret
-; 4ac58
-
-Function4ac58: ; 4ac58
-	lb bc, 2, 18
-	hlcoord 1, 15
-	call ClearBox
-	callba Function8ea4a
-	ld hl, MenuDataHeader_0x4aca2
-	call LoadMenuDataHeader
-	ld hl, wd019
-	bit 1, [hl]
-	jr z, .asm_4ac89
-	hlcoord 11, 13
-	ld b, $3
-	ld c, $7
-	call TextBox
-	hlcoord 13, 14
-	ld de, String_4ada7
-	call PlaceString
-	jr .asm_4ac96
-
-.asm_4ac89
-	hlcoord 11, 9
-	ld b, $7
-	ld c, $7
-	call TextBox
-	call Function4ad68
-
-.asm_4ac96
-	ld a, $1
-	ld [hBGMapMode], a
-	call Function4acaa
-	call ExitMenu
-	and a
-	ret
-; 4aca2
-
-MenuDataHeader_0x4aca2: ; 0x4aca2
-	db $40 ; flags
-	db 09, 11 ; start coords
-	db 17, 19 ; end coords
-	dw NULL
-	db 1 ; default option
-; 0x4acaa
-
-Function4acaa: ; 4acaa
-.asm_4acaa
-	ld a, $a0
-	ld [wMenuData2Flags], a
-	ld a, [wd019]
-	bit 1, a
-	jr z, .asm_4acc2
-	ld a, $2
-	ld [wMenuData2Items], a
-	ld a, $c
-	ld [wMenuBorderTopCoord], a
-	jr .asm_4accc
-
-.asm_4acc2
-	ld a, $4
-	ld [wMenuData2Items], a
-	ld a, $8
-	ld [wMenuBorderTopCoord], a
-
-.asm_4accc
-	ld a, $b
-	ld [wMenuBorderLeftCoord], a
-	ld a, $1
-	ld [wMenuCursorBuffer], a
-	call Function1c10
-	ld hl, wcfa5
-	set 6, [hl]
-	call Function1bc9
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	ld a, [hJoyPressed]
-	bit 0, a
-	jr nz, .asm_4acf4
-	bit 1, a
-	jr nz, .asm_4acf3
-	jr .asm_4acaa
-
-.asm_4acf3
-	ret
-
-.asm_4acf4
-	ld a, [wd019]
-	bit 1, a
-	jr nz, .asm_4ad0e
-	ld a, [MenuSelection2]
-	cp $1
-	jr z, Function4ad17
-	cp $2
-	jp z, Function4ad56
-	cp $3
-	jp z, Function4ad60
-	jr .asm_4acf3
-
-.asm_4ad0e
-	ld a, [MenuSelection2]
-	cp $1
-	jr z, Function4ad56
-	jr .asm_4acf3
-
-Function4ad17: ; 4ad17
-	call Function4adb2
-	jr z, .asm_4ad4a
-	ld hl, wd002
-	ld a, $ff
-	cp [hl]
-	jr z, .asm_4ad39
-	inc hl
-	cp [hl]
-	jr z, .asm_4ad39
-	inc hl
-	cp [hl]
-	jr z, .asm_4ad39
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	ld hl, UnknownText_0x4ad51
-	call PrintText
-	ret
-
-.asm_4ad39
-	ld a, [CurPartyMon]
-	ld [hl], a
-	call Function4a9c3
-	ret c
-	ld a, [wd019]
-	set 0, a
-	ld [wd019], a
-	ret
-
-.asm_4ad4a
-	ld a, $ff
-	ld [hl], a
-	call Function4adc2
-	ret
-
-UnknownText_0x4ad51: ; 0x4ad51
-	; Only three #MON may enter.
-	text_jump UnknownText_0x1c521c
-	db "@"
-; 0x4ad56
-
-Function4ad56: ; 4ad56
-	callba OpenPartyStats
-	call Function3200
-	ret
-; 4ad60
-
-Function4ad60: ; 4ad60
-	callba ManagePokemonMoves
-	ret
-; 4ad67
-
-Function4ad67: ; 4ad67
-	ret
-; 4ad68
-
-Function4ad68: ; 4ad68
-	hlcoord 13, 12
-	ld de, String_4ad88
-	call PlaceString
-	call Function4adb2
-	jr c, .asm_4ad7e
-	hlcoord 13, 10
-	ld de, String_4ada0
-	jr .asm_4ad84
-
-.asm_4ad7e
-	hlcoord 13, 10
-	ld de, String_4ad9a
-
-.asm_4ad84
-	call PlaceString
-	ret
-; 4ad88
-
-String_4ad88: ; 4ad88
-	db   "つよさをみる"
-	next "つかえるわざ"
-	next "もどる@"
-; 4ad9a
-
-String_4ad9a: ; 4ad9a
-	db   "さんかする@"
-; 4ada0
-
-String_4ada0: ; 4ada0
-	db   "さんかしない@"
-; 4ada7
-
-String_4ada7: ; 4ada7
-	db   "つよさをみる"
-	next "もどる@" ; BACK
-; 4adb2
-
-Function4adb2: ; 4adb2
-	ld hl, wd002
-	ld a, [CurPartyMon]
-	cp [hl]
-	ret z
-	inc hl
-	cp [hl]
-	ret z
-	inc hl
-	cp [hl]
-	ret z
-	scf
-	ret
-; 4adc2
-
-Function4adc2: ; 4adc2
-	ld a, [wd002]
-	cp $ff
-	jr nz, .skip
-	ld a, [wd003]
-	cp $ff
-	jr nz, .skip2
-	ld a, [wd004]
-	ld [wd002], a
-	ld a, $ff
-	ld [wd004], a
-	jr .skip
-
-.skip2
-	ld [wd002], a
-	ld a, $ff
-	ld [wd003], a
-
-.skip
-	ld a, [wd003]
-	cp $ff
-	ret nz
-	ld b, a
-	ld a, [wd004]
-	ld [wd003], a
-	ld a, b
-	ld [wd004], a
-	ret
-; 4adf7
-
-Function4adf7: ; 4adf7
-	ld a, [wd019]
-	bit 0, a
-	ret z
-	ld a, [PartyCount]
-	inc a
-	ld [MenuSelection2], a
-	ld a, $1
-	ld [wcfaa], a
-	ld a, [wd019]
-	res 0, a
-	ld [wd019], a
-	ret
-; 4ae12
-
 AskRememberPassword: ; 4ae12
 	call .DoMenu
 	ld a, $0
@@ -17508,8 +7749,8 @@
 	ld [wMenuBorderTopCoord], a
 	add $4
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
-	call InterpretMenu2
+	call PushWindow
+	call VerticalMenu
 	push af
 	ld c, 15
 	call DelayFrames
@@ -17516,7 +7757,7 @@
 	call Buena_ExitMenu
 	pop af
 	jr c, .refused
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $2
 	jr z, .refused
 	and a
@@ -17524,7 +7765,7 @@
 
 .refused
 	ld a, $2
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	scf
 	ret
 ; 4ae5e
@@ -17545,13 +7786,12 @@
 	ret
 ; 4ae78
 
-
 SECTION "bank13", ROMX, BANK[$13]
 
 SwapTextboxPalettes:: ; 4c000
 	hlcoord 0, 0
 	decoord 0, 0, AttrMap
-	ld b, $12
+	ld b, SCREEN_HEIGHT
 .loop
 	push bc
 	ld c, SCREEN_WIDTH
@@ -17637,10 +7877,8 @@
 	ret
 ; 4c075
 
-
 INCLUDE "tilesets/palette_maps.asm"
 
-
 TileCollisionTable:: ; 4ce1f
 ; 00 land
 ; 01 water
@@ -17707,7 +7945,6 @@
 	ret
 ; 4cf45
 
-
 SaveMenu_LoadEDTile: ; 4cf45 (13:4f45)
 	ld a, [hCGB]
 	and a
@@ -17731,11 +7968,11 @@
 	ld a, 1 ; BANK(VBGMap2)
 	ld [rVBK], a
 	hlcoord 0, 0, AttrMap
-	call Function4cf80
+	call .LoadEDTile
 	ld a, 0 ; BANK(VBGMap0)
 	ld [rVBK], a
 	hlcoord 0, 0
-	call Function4cf80
+	call .LoadEDTile
 .WaitLY2
 	ld a, [rLY]
 	cp $60
@@ -17748,7 +7985,7 @@
 	ld [hBGMapMode], a
 	ret
 
-Function4cf80: ; 4cf80 (13:4f80)
+.LoadEDTile: ; 4cf80 (13:4f80)
 	ld [hSPBuffer], sp ; $ffd9
 	ld sp, hl
 	ld a, [hBGMapAddress + 1]
@@ -17786,7 +8023,6 @@
 	ld sp, hl
 	ret
 
-
 CheckSave:: ; 4cffe
 	ld a, BANK(s1_a008)
 	call GetSRAMBank
@@ -17809,27 +8045,24 @@
 	ret
 ; 4d01e
 
-
 INCLUDE "engine/map_triggers.asm"
 
-
-Function4d15b:: ; 4d15b
-	ld hl, wc608
-	ld a, [wd196]
+_LoadMapPart:: ; 4d15b
+	ld hl, wMisc
+	ld a, [wMetatileStandingY]
 	and a
-	jr z, .skip
-	ld bc, $30
+	jr z, .top_row
+	ld bc, WMISC_WIDTH * 2
 	add hl, bc
 
-.skip
-	ld a, [wd197]
+.top_row
+	ld a, [wMetatileStandingX]
 	and a
-	jr z, .next_dw
-rept 2
+	jr z, .left_column
 	inc hl
-endr
+	inc hl
 
-.next_dw
+.left_column
 	decoord 0, 0
 	ld b, SCREEN_HEIGHT
 .loop
@@ -17942,8 +8175,8 @@
 INCBIN "gfx/shrink2.2bpp.lz"
 ; 4d319
 
-Function4d319: ; 4d319
-	ld a, [MenuSelection2]
+LinkMonStatsScreen: ; 4d319
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurPartyMon], a
 	call LowVolume
@@ -17950,41 +8183,38 @@
 	predef StatsScreenInit
 	ld a, [CurPartyMon]
 	inc a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	call ClearScreen
 	call ClearBGPalettes
 	call MaxVolume
-	callba Function28ef8
+	callba LoadTradeScreenBorder
 	callba Function4d354
-	callba Function16d673
+	callba InitTradeSpeciesList
 	callba Function28eff
-	call Function3200
+	call WaitBGMap2
 	ret
 ; 4d354
 
 Function4d354: ; 4d354
 	call WaitBGMap
-	call Function3200
+	call WaitBGMap2
 	ret
 ; 4d35b
 
-
-Function4d35b: ; 4d35b
+LinkTextbox2: ; 4d35b
 	ld h, d
 	ld l, e
 	push bc
 	push hl
-	call Function4d37e
+	call .PlaceBorder
 	pop hl
 	pop bc
 	ld de, AttrMap - TileMap
 	add hl, de
-rept 2
 	inc b
-endr
-rept 2
+	inc b
 	inc c
-endr
+	inc c
 	ld a, $7
 .row
 	push bc
@@ -18002,12 +8232,12 @@
 	ret
 ; 4d37e
 
-Function4d37e: ; 4d37e
+.PlaceBorder: ; 4d37e
 	push hl
 	ld a, $76
 	ld [hli], a
 	inc a
-	call Function4d3ab
+	call .PlaceRow
 	inc a
 	ld [hl], a
 	pop hl
@@ -18018,7 +8248,7 @@
 	ld a, "┌"
 	ld [hli], a
 	ld a, " "
-	call Function4d3ab
+	call .PlaceRow
 	ld [hl], "─"
 	pop hl
 	ld de, SCREEN_WIDTH
@@ -18028,22 +8258,22 @@
 	ld a, "┐"
 	ld [hli], a
 	ld a, "│"
-	call Function4d3ab
+	call .PlaceRow
 	ld [hl], "└"
 	ret
 ; 4d3ab
 
-Function4d3ab: ; 4d3ab
+.PlaceRow: ; 4d3ab
 	ld d, c
-.loop
+.row_loop
 	ld [hli], a
 	dec d
-	jr nz, .loop
+	jr nz, .row_loop
 	ret
 ; 4d3b1
 
 _ResetClock: ; 4d3b1
-	callba Function8000
+	callba BlankScreen
 	ld b, SCGB_08
 	call GetSGBLayout
 	call LoadStandardFont
@@ -18054,9 +8284,9 @@
 	call PrintText
 	ld hl, .NoYes_MenuDataHeader
 	call CopyMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	ret z
 	call ClockResetPassword
@@ -18318,8 +8548,8 @@
 	ret
 ; 4d54c
 
-Function4d54c: ; 4d54c
-	callba Function8000
+_DeleteSaveData: ; 4d54c
+	callba BlankScreen
 	ld b, SCGB_08
 	call GetSGBLayout
 	call LoadStandardFont
@@ -18326,13 +8556,13 @@
 	call LoadFontsExtra
 	ld de, MUSIC_MAIN_MENU
 	call PlayMusic
-	ld hl, UnknownText_0x4d580
+	ld hl, .Text_ClearAllSaveData
 	call PrintText
-	ld hl, MenuDataHeader_0x4d585
+	ld hl, .NoYesMenuDataHeader
 	call CopyMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	ret c
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	ret z
 	callba EmptyAllSRAMBanks
@@ -18339,21 +8569,21 @@
 	ret
 ; 4d580
 
-UnknownText_0x4d580: ; 0x4d580
+.Text_ClearAllSaveData: ; 0x4d580
 	; Clear all save data?
 	text_jump UnknownText_0x1c564a
 	db "@"
 ; 0x4d585
 
-MenuDataHeader_0x4d585: ; 0x4d585
+.NoYesMenuDataHeader: ; 0x4d585
 	db $00 ; flags
 	db 07, 14 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x4d58d
+	dw .MenuData2
 	db 1 ; default option
 ; 0x4d58d
 
-MenuData2_0x4d58d: ; 0x4d58d
+.MenuData2: ; 0x4d58d
 	db $c0 ; flags
 	db 2 ; items
 	db "NO@"
@@ -18363,7 +8593,6 @@
 Tilesets::
 INCLUDE "tilesets/tileset_headers.asm"
 
-
 FlagPredef: ; 4d7c1
 ; Perform action b on flag c in flag array hl.
 ; If checking a flag, check flag array d:hl unless d is 0.
@@ -18436,9 +8665,9 @@
 	ret
 ; 4d7fd
 
-Function4d7fd: ; 4d7fd
-	ld a, [wc702]
-	ld hl, wEnemyTrappingMove
+GetTrademonFrontpic: ; 4d7fd
+	ld a, [wOTTrademonSpecies]
+	ld hl, wOTTrademonDVs
 	ld de, VTiles2
 	push de
 	push af
@@ -18452,23 +8681,23 @@
 	ret
 ; 4d81e
 
-Function4d81e: ; 4d81e
-	ld a, [wc702]
+AnimateTrademonFrontpic: ; 4d81e
+	ld a, [wOTTrademonSpecies]
 	call IsAPokemon
 	ret c
 	callba Function29549
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld a, [wEnemyTrappingMove]
+	ld a, [wOTTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [wPlayerWrapCount]
+	ld a, [wOTTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	callba Function294c0
-	ld a, [wc702]
+	callba TradeAnim_ShowGetmonFrontpic
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
 	hlcoord 7, 2
 	ld d, $0
@@ -18780,7 +9009,7 @@
 	ld [wd265], a
 	call GetPokemonName
 	ld hl, StringBuffer1
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	call GiveANickname_YesNo
@@ -18790,7 +9019,7 @@
 	ld [CurPartyMon], a
 	xor a
 	ld [MonType], a
-	ld de, wd050
+	ld de, wMonOrItemNameBuffer
 	callab InitNickname
 
 .Party_SkipNickname
@@ -18800,7 +9029,7 @@
 	call SkipNames
 	ld d, h
 	ld e, l
-	ld hl, wd050
+	ld hl, wMonOrItemNameBuffer
 	call CopyBytes
 	ld a, [PartyCount]
 	dec a
@@ -18836,11 +9065,11 @@
 	xor a
 	ld [CurPartyMon], a
 	ld hl, wContestMon
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	ld hl, PlayerName
-	ld de, wd00d_MonOT
+	ld de, wBufferMonOT
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	callab Function51322
@@ -18852,9 +9081,9 @@
 	jr c, .Box_SkipNickname
 	ld a, BOXMON
 	ld [MonType], a
-	ld de, wd050_MonNick
+	ld de, wMonOrItemNameBuffer
 	callab InitNickname
-	ld hl, wd050_MonNick
+	ld hl, wMonOrItemNameBuffer
 
 .Box_SkipNickname
 	ld a, BANK(sBoxMonNicknames)
@@ -18893,7 +9122,6 @@
 	ret
 ; 4db3b
 
-
 GiveANickname_YesNo: ; 4db3b
 	ld hl, TextJump_GiveANickname
 	call PrintText
@@ -18906,7 +9134,6 @@
 	db "@"
 ; 0x4db49
 
-
 SetCaughtData: ; 4db49
 	ld a, [PartyCount]
 	dec a
@@ -18983,7 +9210,6 @@
 	ret
 ; 4dbb8
 
-
 SetEggMonCaughtData: ; 4dbb8 (13:5bb8)
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1CaughtLevel
@@ -19140,7 +9366,6 @@
 	jr .loop
 ; 4dc7b
 
-
 INCLUDE "engine/stats_screen.asm"
 
 CatchTutorial:: ; 4e554
@@ -19147,11 +9372,10 @@
 	ld a, [BattleType]
 	dec a
 	ld c, a
-	ld hl, .jumptable
+	ld hl, .dw
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -19158,7 +9382,7 @@
 	jp [hl]
 ; 4e564
 
-.jumptable: ; 4e564 (13:6564)
+.dw: ; 4e564 (13:6564)
 	dw .DudeTutorial
 	dw .DudeTutorial
 	dw .DudeTutorial
@@ -19200,26 +9424,25 @@
 	ret
 
 .LoadDudeData: ; 4e5b7 (13:65b7)
-	ld hl, OTPartyMon1
-	ld [hl], BULBASAUR
+	ld hl, wDudeNumItems
+	ld [hl], 1
 	inc hl
 	ld [hl], POTION
 	inc hl
-	ld [hl], POUND
+	ld [hl], 1
 	inc hl
-	ld [hl], $ff
-	ld hl, OTPartyMon1Exp + 2
-	ld [hl], $0
+	ld [hl], -1
+	ld hl, wDudeNumKeyItems
+	ld [hl], 0
 	inc hl
-	ld [hl], $ff
-	ld hl, OTPartyMon1CaughtGender
-	ld a, $1
+	ld [hl], -1
+	ld hl, wDudeNumBalls
+	ld a, 1
 	ld [hli], a
-	ld a, $5
-rept 2
+	ld a, POKE_BALL ; 5
 	ld [hli], a
-endr
-	ld [hl], $ff
+	ld [hli], a
+	ld [hl], -1
 	ret
 ; 4e5da (13:65da)
 
@@ -19233,6 +9456,90 @@
 
 INCLUDE "engine/evolution_animation.asm"
 
+Function4e881: ; 4e881
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	hlbgcoord 0, 0
+	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, .SavingRecordDontTurnOff
+	call PrintText
+	call WaitBGMap2
+	call SetPalettes
+	ret
+; 4e8bd
+
+.SavingRecordDontTurnOff: ; 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
+	hlbgcoord 0, 0
+	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 ; UnknBGPals
+	ld c, 4 * $10
+.load_white_palettes
+	ld a, (palred 31 + palgreen 31 + palblue 31) % $100
+	ld [hli], a
+	ld a, (palred 31 + palgreen 31 + palblue 31) / $100
+	ld [hli], a
+	dec c
+	jr nz, .load_white_palettes
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	call EnableLCD
+	call WaitBGMap2
+	call SetPalettes
+	ret
+; 4e906
+
+Function4e906: ; 4e906
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, wDecompressScratch
+	ld bc, wBackupAttrMap - wDecompressScratch
+	ld a, " "
+	call ByteFill
+	hlbgcoord 0, 0
+	ld de, wDecompressScratch
+	ld b, $0
+	ld c, $40
+	call Request2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 4e929
+
 Function4e929: ; mobile function
 	ld h, b
 	ld l, c
@@ -19323,10 +9630,8 @@
 FemaleTrainersEnd:
 ; 4e980
 
-
 INCLUDE "battle/sliding_intro.asm"
 
-
 Function4ea0a: ; 4ea0a
 	ld a, c
 	push af
@@ -19359,8 +9664,6 @@
 	ret
 ; 4ea44
 
-
-
 CheckBattleScene: ; 4ea44
 ; Return carry if battle scene is turned off.
 
@@ -19410,12 +9713,10 @@
 	ret
 ; 4ea82
 
-
 INCLUDE "misc/gbc_only.asm"
 
 INCLUDE "event/poke_seer.asm"
 
-
 SECTION "bank14", ROMX, BANK[$14]
 
 INCLUDE "engine/party_menu.asm"
@@ -19447,7 +9748,7 @@
 	cp OTPARTYMON
 	jr z, .copywholestruct
 	ld bc, BOXMON_STRUCT_LENGTH
-	callab Functione5bb
+	callab CopyBoxmonToTempMon
 	jr .done
 
 .copywholestruct
@@ -19461,18 +9762,14 @@
 	ret
 ; 5088b
 
-
-Function5088b: ; 5088b
-	ld bc, wd018_Mon
-	jr Function50893
+CalcwBufferMonStats: ; 5088b
+	ld bc, wBufferMon
+	jr _TempMonStatsCalculation
 ; 50890
 
-Function50890: ; 50890
+CalcTempmonStats: ; 50890
 	ld bc, TempMon
-	; fallthrough
-; 50893
-
-Function50893: ; 50893
+_TempMonStatsCalculation: ; 50893
 	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
@@ -19481,7 +9778,7 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	push bc
 	ld b, $1
@@ -19493,14 +9790,14 @@
 	ld e, l
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr nz, .asm_508c1
+	jr nz, .not_egg
 	xor a
 	ld [de], a
 	inc de
 	ld [de], a
-	jr .asm_508cd
+	jr .zero_status
 
-.asm_508c1
+.not_egg
 	push bc
 	ld hl, MON_MAXHP
 	add hl, bc
@@ -19508,7 +9805,7 @@
 	call CopyBytes
 	pop bc
 
-.asm_508cd
+.zero_status
 	ld hl, MON_STATUS
 	add hl, bc
 	xor a
@@ -19562,10 +9859,8 @@
 	ret
 ; 5090d
 
-
 INCLUDE "text/types.asm"
 
-
 Function50a28: ; 50a28
 	ld hl, Strings50a42
 	ld a, [TrainerClass]
@@ -19572,9 +9867,8 @@
 	dec a
 	ld c, a
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -19590,7 +9884,6 @@
 
 Strings50a42: ; 50a42
 ; Untranslated trainer class names from Red.
-
 	dw .Youngster
 	dw .BugCatcher
 	dw .Lass
@@ -19662,7 +9955,6 @@
 .CooltrainerF db "エりート♀@"
 ; 50b0a
 
-
 DrawPlayerHP: ; 50b0a
 	ld a, $1
 	jr DrawHP
@@ -19671,7 +9963,7 @@
 	ld a, $2
 
 DrawHP: ; 50b10
-	ld [wd10a], a
+	ld [wWhichHPBar], a
 	push hl
 	push bc
 	ld a, [MonType]
@@ -19707,7 +9999,7 @@
 	ld c, e
 
 .asm_50b41
-	predef DrawPartyMenuHPBar
+	predef ComputeHPBarPixels
 	ld a, 6
 	ld d, a
 	ld c, a
@@ -19747,7 +10039,6 @@
 	ret
 ; 50b7b
 
-
 PrintTempMonStats: ; 50b7b
 ; Print TempMon's stats at hl, with spacing bc.
 	push bc
@@ -19790,7 +10081,6 @@
 	next "@"
 ; 50bdd
 
-
 GetGender: ; 50bdd
 ; Return the gender of a given monster (CurPartyMon/CurOTMon/CurWildMon).
 ; When calling this function, a should be set to an appropriate MonType value.
@@ -19803,7 +10093,6 @@
 ; This is determined by comparing the Attack and Speed DVs
 ; with the species' gender ratio.
 
-
 ; Figure out what type of monster struct we're looking at.
 
 ; 0: PartyMon
@@ -19833,7 +10122,6 @@
 	ld hl, EnemyMonDVs
 	jr .DVs
 
-
 ; Get our place in the party/box.
 
 .PartyMon
@@ -19841,7 +10129,6 @@
 	ld a, [CurPartyMon]
 	call AddNTimes
 
-
 .DVs
 
 ; sBoxMon data is read directly from SRAM.
@@ -19868,7 +10155,6 @@
 	cp BOXMON
 	call z, CloseSRAM
 
-
 ; We need the gender ratio to do anything with this.
 	push bc
 	ld a, [CurPartySpecies]
@@ -19881,7 +10167,6 @@
 	ld a, BANK(BaseData)
 	call GetFarByte
 
-
 ; The higher the ratio, the more likely the monster is to be female.
 
 	cp $ff
@@ -19911,11 +10196,11 @@
 	ret
 ; 50c50
 
-Function50c50: ; 50c50
-	ld a, [wd0eb]
+ListMovePP: ; 50c50
+	ld a, [wNumMoves]
 	inc a
 	ld c, a
-	ld a, $4
+	ld a, NUM_MOVES
 	sub c
 	ld b, a
 	push hl
@@ -19922,16 +10207,16 @@
 	ld a, [Buffer1]
 	ld e, a
 	ld d, $0
-	ld a, $3e
-	call Function50cc9
+	ld a, $3e ; P
+	call .load_loop
 	ld a, b
 	and a
-	jr z, .asm_50c6f
+	jr z, .skip
 	ld c, a
-	ld a, $e3
-	call Function50cc9
+	ld a, "-"
+	call .load_loop
 
-.asm_50c6f
+.skip
 	pop hl
 rept 3
 	inc hl
@@ -19940,14 +10225,14 @@
 	ld e, l
 	ld hl, TempMonMoves
 	ld b, 0
-.asm_50c7a
+.loop
 	ld a, [hli]
 	and a
-	jr z, .asm_50cc8
+	jr z, .done
 	push bc
 	push hl
 	push de
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld a, [hl]
 	push af
 	ld [hl], b
@@ -19970,7 +10255,7 @@
 	ld de, StringBuffer1 + 4
 	lb bc, 1, 2
 	call PrintNum
-	ld a, $f3
+	ld a, "/"
 	ld [hli], a
 	ld de, wd265
 	lb bc, 1, 2
@@ -19987,19 +10272,18 @@
 	inc b
 	ld a, b
 	cp NUM_MOVES
-	jr nz, .asm_50c7a
+	jr nz, .loop
 
-.asm_50cc8
+.done
 	ret
 ; 50cc9
 
-Function50cc9: ; 50cc9
-.asm_50cc9
+.load_loop: ; 50cc9
 	ld [hli], a
 	ld [hld], a
 	add hl, de
 	dec c
-	jr nz, .asm_50cc9
+	jr nz, .load_loop
 	ret
 ; 50cd0
 
@@ -20044,12 +10328,10 @@
 	ret
 ; 50d0a
 
-
 PlaceStatusString: ; 50d0a
 	push de
-rept 2
 	inc de
-endr
+	inc de
 	ld a, [de]
 	ld b, a
 	inc de
@@ -20140,7 +10422,7 @@
 	call PlaceString
 	pop bc
 	ld a, b
-	ld [wd0eb], a
+	ld [wNumMoves], a
 	inc b
 	pop hl
 	push bc
@@ -20230,7 +10512,6 @@
 	ret
 ; 50e1b
 
-
 CalcLevel: ; 50e1b
 	ld a, [TempMonSpecies]
 	ld [CurSpecies], a
@@ -20264,14 +10545,11 @@
 	ret
 ; 50e47
 
-
-
 CalcExpAtLevel: ; 50e47
 ; (a/b)*n**3 + c*n**2 + d*n - e
 	ld a, [BaseGrowthRate]
-rept 2
 	add a
-endr
+	add a
 	ld c, a
 	ld b, 0
 	ld hl, GrowthRates
@@ -20422,15 +10700,15 @@
 _SwitchPartyMons:
 	ld a, [wd0e3]
 	dec a
-	ld [wd1ec], a
+	ld [Buffer3], a
 	ld b, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
 	cp b
 	jr z, .skip
 	call .SwapMonAndMail
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	call .ClearSprite
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
 	call .ClearSprite
@@ -20616,7 +10894,6 @@
 	ret
 ; 51077
 
-
 GetFrontpic: ; 51077
 	ld a, [CurPartySpecies]
 	ld [CurSpecies], a
@@ -20657,15 +10934,15 @@
 	ld a, $6
 	ld [rSVBK], a
 	ld a, b
-	ld de, w6_d000 + $800
+	ld de, wDecompressScratch + $800
 	call FarDecompress
 	pop bc
-	ld hl, w6_d000
-	ld de, w6_d000 + $800
+	ld hl, wDecompressScratch
+	ld de, wDecompressScratch + $800
 	call Function512ab
 	pop hl
 	push hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld c, 7 * 7
 	ld a, [hROMBank]
 	ld b, a
@@ -20708,7 +10985,7 @@
 	ld a, $1
 	ld [rVBK], a
 	push hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld c, 7 * 7
 	ld a, [hROMBank]
 	ld b, a
@@ -20739,7 +11016,7 @@
 	call Function5114f
 	pop bc
 	pop hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld a, [hROMBank]
 	ld b, a
 	call Get2bpp
@@ -20749,7 +11026,7 @@
 ; 5114f
 
 Function5114f: ; 5114f
-	ld hl, w6_d000
+	ld hl, wDecompressScratch
 	swap c
 	ld a, c
 	and $f
@@ -20758,12 +11035,12 @@
 	and $f0
 	ld c, a
 	push bc
-	call Function512f2
+	call LoadFrontpic
 	pop bc
 .asm_51161
 	push bc
 	ld c, $0
-	call Function512f2
+	call LoadFrontpic
 	pop bc
 	dec b
 	jr nz, .asm_51161
@@ -20808,14 +11085,14 @@
 	inc hl
 	ld a, d
 	call GetFarHalfword
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	pop af
 	call FarDecompress
-	ld hl, w6_d000
+	ld hl, wDecompressScratch
 	ld c, 6 * 6
-	call Function5127c
+	call FixBackpicAlignment
 	pop hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld a, [hROMBank]
 	ld b, a
 	call Get2bpp
@@ -20824,7 +11101,6 @@
 	ret
 ; 511c5
 
-
 FixPicBank: ; 511c5
 ; This is a thing for some reason.
 	push hl
@@ -20886,7 +11162,6 @@
 	ret
 ; 0x5120d
 
-
 GetTrainerPic: ; 5120d
 	ld a, [TrainerClass]
 	and a
@@ -20914,10 +11189,10 @@
 	ld a, BANK(TrainerPicPointers)
 	call GetFarHalfword
 	pop af
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call FarDecompress
 	pop hl
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld c, 7 * 7
 	ld a, [hROMBank]
 	ld b, a
@@ -20930,8 +11205,6 @@
 	ret
 ; 5125d
 
-
-
 DecompressPredef: ; 5125d
 ; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
 
@@ -20943,10 +11216,10 @@
 	push de
 	push bc
 	ld a, b
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	call FarDecompress
 	pop bc
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	pop hl
 	ld a, [hROMBank]
 	ld b, a
@@ -20957,13 +11230,12 @@
 	ret
 ; 5127c
 
-
-Function5127c: ; 5127c
+FixBackpicAlignment: ; 5127c
 	push de
 	push bc
-	ld a, [wc2c6]
+	ld a, [wBoxAlignment]
 	and a
-	jr z, .asm_512a8
+	jr z, .keep_dims
 	ld a, c
 	cp 7 * 7
 	ld de, 7 * 7 tiles
@@ -20989,7 +11261,7 @@
 	or d
 	jr nz, .got_dims
 
-.asm_512a8
+.keep_dims
 	pop bc
 	pop de
 	ret
@@ -21002,11 +11274,11 @@
 	cp 5
 	jr z, .five
 
-.seven
+.seven_loop
 	ld c, $70
-	call Function512f2
+	call LoadFrontpic
 	dec b
-	jr nz, .seven
+	jr nz, .seven_loop
 	ret
 
 .six
@@ -21013,14 +11285,14 @@
 	ld c, $70
 	xor a
 	call .Fill
-.asm_512c3
+.six_loop
 	ld c, $10
 	xor a
 	call .Fill
 	ld c, $60
-	call Function512f2
+	call LoadFrontpic
 	dec b
-	jr nz, .asm_512c3
+	jr nz, .six_loop
 	ret
 
 .five
@@ -21027,14 +11299,14 @@
 	ld c, $70
 	xor a
 	call .Fill
-.asm_512d8
+.five_loop
 	ld c, $20
 	xor a
 	call .Fill
 	ld c, $50
-	call Function512f2
+	call LoadFrontpic
 	dec b
-	jr nz, .asm_512d8
+	jr nz, .five_loop
 	ld c, $70
 	xor a
 	call .Fill
@@ -21047,21 +11319,21 @@
 	ret
 ; 512f2
 
-Function512f2: ; 512f2
-	ld a, [wc2c6]
+LoadFrontpic: ; 512f2
+	ld a, [wBoxAlignment]
 	and a
-	jr nz, .asm_512ff
-.asm_512f8
+	jr nz, .x_flip
+.left_loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_512f8
+	jr nz, .left_loop
 	ret
 
-.asm_512ff
+.x_flip
 	push bc
-.asm_51300
+.right_loop
 	ld a, [de]
 	inc de
 	ld b, a
@@ -21072,7 +11344,7 @@
 	endr
 	ld [hli], a
 	dec c
-	jr nz, .asm_51300
+	jr nz, .right_loop
 	pop bc
 	ret
 ; 51322
@@ -21087,7 +11359,7 @@
 	ld [wd265], a
 	ld hl, sBoxMonNicknames
 	ld bc, PKMN_NAME_LENGTH
-	ld de, wd002
+	ld de, wBufferMonNick
 	call Function513e0
 	ld a, [sBoxCount]
 	dec a
@@ -21094,7 +11366,7 @@
 	ld [wd265], a
 	ld hl, sBoxMonOT
 	ld bc, NAME_LENGTH
-	ld de, wd00d
+	ld de, wBufferMonOT
 	call Function513e0
 	ld a, [sBoxCount]
 	dec a
@@ -21101,13 +11373,13 @@
 	ld [wd265], a
 	ld hl, sBoxMons
 	ld bc, BOXMON_STRUCT_LENGTH
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	call Function513e0
-	ld hl, wd018_MonMoves
+	ld hl, wBufferMonMoves
 	ld de, TempMonMoves
 	ld bc, NUM_MOVES
 	call CopyBytes
-	ld hl, wd018_MonPP
+	ld hl, wBufferMonPP
 	ld de, TempMonPP
 	ld bc, NUM_MOVES
 	call CopyBytes
@@ -21125,7 +11397,7 @@
 	ld [wd265], a
 	ld hl, PartyMonNicknames
 	ld bc, PKMN_NAME_LENGTH
-	ld de, wd002
+	ld de, wBufferMonNick
 	call Function513e0
 	ld a, [PartyCount]
 	dec a
@@ -21132,7 +11404,7 @@
 	ld [wd265], a
 	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
-	ld de, wd00d
+	ld de, wBufferMonOT
 	call Function513e0
 	ld a, [PartyCount]
 	dec a
@@ -21139,7 +11411,7 @@
 	ld [wd265], a
 	ld hl, PartyMons
 	ld bc, PARTYMON_STRUCT_LENGTH
-	ld de, wd018_Mon
+	ld de, wBufferMon
 	call Function513e0
 	ret
 ; 513cb
@@ -21241,892 +11513,14 @@
 INCBIN "gfx/misc/unknown_egg.5x5.2bpp.lz"
 ; 53e2e
 
-
 SECTION "bank19", ROMX, BANK[$19]
 
 INCLUDE "text/phone/extra.asm"
 
-
-
 SECTION "bank20", ROMX, BANK[$20]
 
+INCLUDE "engine/player_movement.asm"
 
-DoPlayerMovement:: ; 80000
-
-	call GetMovementInput
-	ld a, movement_step_sleep_1
-	ld [MovementAnimation], a
-	xor a
-	ld [wd041], a
-	call GetPlayerMovement
-	ld c, a
-	ld a, [MovementAnimation]
-	ld [wc2de], a
-	ret
-; 80017
-
-
-GetMovementInput: ; 80017
-
-	ld a, [hJoyDown]
-	ld [CurInput], a
-
-; Standing downhill instead moves down.
-
-	ld hl, BikeFlags
-	bit 2, [hl] ; downhill
-	ret z
-
-	ld c, a
-	and D_PAD
-	ret nz
-
-	ld a, c
-	or D_DOWN
-	ld [CurInput], a
-	ret
-; 8002d
-
-
-GetPlayerMovement: ; 8002d
-
-	ld a, [PlayerState]
-	cp PLAYER_NORMAL
-	jr z, .Normal
-	cp PLAYER_SURF
-	jr z, .Surf
-	cp PLAYER_SURF_PIKA
-	jr z, .Surf
-	cp PLAYER_BIKE
-	jr z, .Normal
-	cp PLAYER_SLIP
-	jr z, .Ice
-
-.Normal
-	call CheckForcedMovementInput
-	call GetMovementAction
-	call CheckTileMovement
-	ret c
-	call CheckTurning
-	ret c
-	call TryStep
-	ret c
-	call TryJumpLedge
-	ret c
-	call CheckEdgeWarp
-	ret c
-	jr .NotMoving
-
-.Surf
-	call CheckForcedMovementInput
-	call GetMovementAction
-	call CheckTileMovement
-	ret c
-	call CheckTurning
-	ret c
-	call TrySurfStep
-	ret c
-	jr .NotMoving
-
-.Ice
-	call CheckForcedMovementInput
-	call GetMovementAction
-	call CheckTileMovement
-	ret c
-	call CheckTurning
-	ret c
-	call TryStep
-	ret c
-	call TryJumpLedge
-	ret c
-	call CheckEdgeWarp
-	ret c
-	ld a, [WalkingDirection]
-	cp STANDING
-	jr z, .HitWall
-	call PlayBump
-.HitWall
-	call StandInPlace
-	xor a
-	ret
-
-.NotMoving
-	ld a, [WalkingDirection]
-	cp STANDING
-	jr z, .Standing
-
-; Walking into an edge warp won't bump.
-	ld a, [EngineBuffer4]
-	and a
-	jr nz, .CantMove
-	call PlayBump
-.CantMove
-	call WalkInPlace
-	xor a
-	ret
-
-.Standing
-	call StandInPlace
-	xor a
-	ret
-; 800b7
-
-
-CheckTileMovement: ; 800b7
-; Tiles such as waterfalls and warps move the player
-; in a given direction, overriding input.
-
-	ld a, [PlayerNextTile]
-	ld c, a
-	call CheckWhirlpoolTile
-	jr c, .asm_800c4
-	ld a, 3
-	scf
-	ret
-
-.asm_800c4
-	and $f0
-	cp $30 ; moving water
-	jr z, .water
-	cp $40 ; moving land 1
-	jr z, .land1
-	cp $50 ; moving land 2
-	jr z, .land2
-	cp $70 ; warps
-	jr z, .warps
-	jr .asm_8013c
-
-.water
-	ld a, c
-	and 3
-	ld c, a
-	ld b, 0
-	ld hl, .water_table
-	add hl, bc
-	ld a, [hl]
-	ld [WalkingDirection], a
-	jr .asm_8013e
-
-.water_table
-	db RIGHT
-	db LEFT
-	db UP
-	db DOWN
-
-.land1
-	ld a, c
-	and 7
-	ld c, a
-	ld b, 0
-	ld hl, .land1_table
-	add hl, bc
-	ld a, [hl]
-	cp STANDING
-	jr z, .asm_8013c
-	ld [WalkingDirection], a
-	jr .asm_8013e
-
-.land1_table
-	db STANDING
-	db RIGHT
-	db LEFT
-	db UP
-	db DOWN
-	db STANDING
-	db STANDING
-	db STANDING
-
-.land2
-	ld a, c
-	and 7
-	ld c, a
-	ld b, 0
-	ld hl, .land2_table
-	add hl, bc
-	ld a, [hl]
-	cp STANDING
-	jr z, .asm_8013c
-	ld [WalkingDirection], a
-	jr .asm_8013e
-
-.land2_table
-	db RIGHT
-	db LEFT
-	db UP
-	db DOWN
-	db STANDING
-	db STANDING
-	db STANDING
-	db STANDING
-
-.warps
-	ld a, c
-	cp $71 ; door
-	jr z, .down
-	cp $79
-	jr z, .down
-	cp $7a ; stairs
-	jr z, .down
-	cp $7b ; cave
-	jr nz, .asm_8013c
-
-.down
-	ld a, DOWN
-	ld [WalkingDirection], a
-	jr .asm_8013e
-
-.asm_8013c
-	xor a
-	ret
-
-.asm_8013e
-	ld a, STEP_WALK
-	call DoStep
-	ld a, 5
-	scf
-	ret
-; 80147
-
-
-CheckTurning: ; 80147
-; If the player is turning, change direction first. This also lets
-; the player change facing without moving by tapping a direction.
-
-	ld a, [wd04e]
-	cp 0
-	jr nz, .asm_80169
-	ld a, [WalkingDirection]
-	cp STANDING
-	jr z, .asm_80169
-
-	ld e, a
-	ld a, [PlayerDirection]
-	rrca
-	rrca
-	and 3
-	cp e
-	jr z, .asm_80169
-
-	ld a, STEP_TURN
-	call DoStep
-	ld a, 2
-	scf
-	ret
-
-.asm_80169
-	xor a
-	ret
-; 8016b
-
-
-TryStep: ; 8016b
-
-; Surfing actually calls TrySurfStep directly instead of passing through here.
-	ld a, [PlayerState]
-	cp PLAYER_SURF
-	jr z, TrySurfStep
-	cp PLAYER_SURF_PIKA
-	jr z, TrySurfStep
-
-	call CheckLandPermissions
-	jr c, .bump
-
-	call IsNPCInFront
-	and a
-	jr z, .bump
-	cp 2
-	jr z, .bump
-
-	ld a, [PlayerNextTile]
-	call CheckIceTile
-	jr nc, .ice
-
-; Downhill riding is slower when not moving down.
-	call CheckRiding
-	jr nz, .walk
-
-	ld hl, BikeFlags
-	bit 2, [hl] ; downhill
-	jr z, .fast
-
-	ld a, [WalkingDirection]
-	cp DOWN
-	jr z, .fast
-
-	ld a, STEP_WALK
-	call DoStep
-	scf
-	ret
-
-.fast
-	ld a, STEP_BIKE
-	call DoStep
-	scf
-	ret
-
-.walk
-	ld a, STEP_WALK
-	call DoStep
-	scf
-	ret
-
-.ice
-	ld a, STEP_ICE
-	call DoStep
-	scf
-	ret
-
-; unused?
-	xor a
-	ret
-
-.bump
-	xor a
-	ret
-; 801c0
-
-
-TrySurfStep: ; 801c0
-
-	call CheckWaterPermissions
-	ld [wd040], a
-	jr c, .bump
-
-	call IsNPCInFront
-	ld [wd03f], a
-	and a
-	jr z, .bump
-	cp 2
-	jr z, .bump
-
-	ld a, [wd040]
-	and a
-	jr nz, .ExitWater
-
-	ld a, STEP_WALK
-	call DoStep
-	scf
-	ret
-
-.ExitWater
-	call WaterToLandSprite
-	call PlayMapMusic
-	ld a, STEP_WALK
-	call DoStep
-	ld a, 6
-	scf
-	ret
-
-.bump
-	xor a
-	ret
-; 801f3
-
-
-TryJumpLedge: ; 801f3
-	ld a, [PlayerNextTile]
-	ld e, a
-	and $f0
-	cp $a0 ; ledge
-	jr nz, .DontJump
-
-	ld a, e
-	and 7
-	ld e, a
-	ld d, 0
-	ld hl, .data_8021e
-	add hl, de
-	ld a, [FacingDirection]
-	and [hl]
-	jr z, .DontJump
-
-	ld de, SFX_JUMP_OVER_LEDGE
-	call PlaySFX
-	ld a, STEP_LEDGE
-	call DoStep
-	ld a, 7
-	scf
-	ret
-
-.DontJump
-	xor a
-	ret
-
-.data_8021e
-	db FACE_RIGHT
-	db FACE_LEFT
-	db FACE_UP
-	db FACE_DOWN
-	db FACE_RIGHT | FACE_DOWN
-	db FACE_DOWN | FACE_LEFT
-	db FACE_UP | FACE_RIGHT
-	db FACE_UP | FACE_LEFT
-; 80226
-
-
-CheckEdgeWarp: ; 80226
-
-; Bug: Since no case is made for STANDING here, it will check
-; [.edgewarps + $ff]. This resolves to $3e at $8035a.
-; This causes wd041 to be nonzero when standing on tile $3e,
-; making bumps silent.
-
-	ld a, [WalkingDirection]
-	ld e, a
-	ld d, 0
-	ld hl, .EdgeWarps
-	add hl, de
-	ld a, [PlayerNextTile]
-	cp [hl]
-	jr nz, .nope
-
-	ld a, 1
-	ld [wd041], a
-	ld a, [WalkingDirection]
-	cp STANDING
-	jr z, .nope
-
-	ld e, a
-	ld a, [PlayerDirection]
-	rrca
-	rrca
-	and 3
-	cp e
-	jr nz, .nope
-	call WarpCheck
-	jr nc, .nope
-
-	call StandInPlace
-	scf
-	ld a, 1
-	ret
-
-.nope
-	xor a
-	ret
-
-.EdgeWarps
-	db $70, $78, $76, $7e
-; 8025f
-
-
-DoStep: ; 8025f
-	ld e, a
-	ld d, 0
-	ld hl, .Steps
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	ld a, [WalkingDirection]
-	ld e, a
-	cp STANDING
-	jp z, StandInPlace
-
-	add hl, de
-	ld a, [hl]
-	ld [MovementAnimation], a
-
-	ld hl, .WalkInPlace
-	add hl, de
-	ld a, [hl]
-	ld [wd04e], a
-
-	ld a, 4
-	ret
-
-.Steps
-	dw .Slow
-	dw .Walk
-	dw .Bike
-	dw .Ledge
-	dw .Ice
-	dw .Turn
-	dw .BackwardsLedge
-	dw .WalkInPlace
-
-.Slow
-	slow_step_down
-	slow_step_up
-	slow_step_left
-	slow_step_right
-.Walk
-	step_down
-	step_up
-	step_left
-	step_right
-.Bike
-	big_step_down
-	big_step_up
-	big_step_left
-	big_step_right
-.Ledge
-	jump_step_down
-	jump_step_up
-	jump_step_left
-	jump_step_right
-.Ice
-	fast_slide_step_down
-	fast_slide_step_up
-	fast_slide_step_left
-	fast_slide_step_right
-.BackwardsLedge
-	jump_step_up
-	jump_step_down
-	jump_step_right
-	jump_step_left
-.Turn
-	half_step_down
-	half_step_up
-	half_step_left
-	half_step_right
-.WalkInPlace
-	db $80 + movement_turn_head_down
-	db $80 + movement_turn_head_up
-	db $80 + movement_turn_head_left
-	db $80 + movement_turn_head_right
-; 802b3
-
-
-StandInPlace: ; 802b3
-	ld a, 0
-	ld [wd04e], a
-	ld a, movement_step_sleep_1
-	ld [MovementAnimation], a
-	xor a
-	ret
-; 802bf
-
-
-WalkInPlace: ; 802bf
-	ld a, 0
-	ld [wd04e], a
-	ld a, movement_step_bump
-	ld [MovementAnimation], a
-	xor a
-	ret
-; 802cb
-
-
-CheckForcedMovementInput: ; 802cb
-; When sliding on ice, input is forced to remain in the same direction.
-
-	call CheckStandingOnIce
-	ret nc
-
-	ld a, [wd04e]
-	cp 0
-	ret z
-
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .data_802e8
-	add hl, de
-	ld a, [CurInput]
-	and BUTTONS
-	or [hl]
-	ld [CurInput], a
-	ret
-
-.data_802e8
-	db D_DOWN, D_UP, D_LEFT, D_RIGHT
-; 802ec
-
-
-GetMovementAction: ; 802ec
-; Poll player input and update movement info.
-
-	ld hl, .table
-	ld de, .table2 - .table1
-	ld a, [CurInput]
-	bit 7, a
-	jr nz, .down
-	bit 6, a
-	jr nz, .up
-	bit 5, a
-	jr nz, .left
-	bit 4, a
-	jr nz, .right
-; Standing
-	jr .update
-
-.down 	add hl, de
-.up   	add hl, de
-.left 	add hl, de
-.right	add hl, de
-
-.update
-	ld a, [hli]
-	ld [WalkingDirection], a
-	ld a, [hli]
-	ld [FacingDirection], a
-	ld a, [hli]
-	ld [WalkingX], a
-	ld a, [hli]
-	ld [WalkingY], a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	ld [WalkingTile], a
-	ret
-
-.table
-; struct:
-;	walk direction
-;	facing
-;	x movement
-;	y movement
-;	tile collision pointer
-.table1
-	db STANDING, FACE_CURRENT, 0, 0
-	dw PlayerNextTile
-.table2
-	db RIGHT, FACE_RIGHT,  1,  0
-	dw TileRight
-	db LEFT,  FACE_LEFT,  -1,  0
-	dw TileLeft
-	db UP,    FACE_UP,     0, -1
-	dw TileUp
-	db DOWN,  FACE_DOWN,   0,  1
-	dw TileDown
-; 80341
-
-
-IsNPCInFront: ; 80341
-; Returns 0 if there is an NPC in front that you can't move
-; Returns 1 if there is no NPC in front
-; Returns 2 if there is a movable NPC in front
-	ld a, 0
-	ld [hMapObjectIndexBuffer], a
-; Load the next X coordinate into d
-	ld a, [PlayerNextMapX]
-	ld d, a
-	ld a, [WalkingX]
-	add d
-	ld d, a
-; Load the next Y coordinate into e
-	ld a, [PlayerNextMapY]
-	ld e, a
-	ld a, [WalkingY]
-	add e
-	ld e, a
-; Find an object struct with coordinates equal to d,e
-	ld bc, ObjectStructs ; redundant
-	callba IsNPCAtCoord
-	jr nc, .nope
-	call Function8036f
-	jr c, .no_bump
-
-; .bump
-	xor a
-	ret
-
-.nope
-	ld a, 1
-	ret
-
-.no_bump
-	ld a, 2
-	ret
-; 8036f
-
-
-Function8036f: ; 8036f
-
-	ld hl, BikeFlags
-	bit 0, [hl] ; using strength
-	jr z, .nope
-
-	ld hl, OBJECT_DIRECTION_WALKING
-	add hl, bc
-	ld a, [hl]
-	cp STANDING
-	jr nz, .nope
-
-	ld hl, OBJECT_PALETTE
-	add hl, bc
-	bit 6, [hl]
-	jr z, .nope
-
-	ld hl, OBJECT_FLAGS2
-	add hl, bc
-	set 2, [hl]
-
-	ld a, [WalkingDirection]
-	ld d, a
-	ld hl, OBJECT_RANGE
-	add hl, bc
-	ld a, [hl]
-	and $fc
-	or d
-	ld [hl], a
-
-	scf
-	ret
-
-.nope
-	xor a
-	ret
-; 8039e
-
-
-CheckLandPermissions: ; 8039e
-; Return 0 if walking onto land and tile permissions allow it.
-; Otherwise, return carry.
-
-	ld a, [TilePermissions]
-	ld d, a
-	ld a, [FacingDirection]
-	and d
-	jr nz, .NotWalkable
-
-	ld a, [WalkingTile]
-	call CheckWalkable
-	jr c, .NotWalkable
-
-	xor a
-	ret
-
-.NotWalkable
-	scf
-	ret
-; 803b4
-
-CheckWaterPermissions: ; 803b4
-; Return 0 if moving in water, or 1 if moving onto land.
-; Otherwise, return carry.
-
-	ld a, [TilePermissions]
-	ld d, a
-	ld a, [FacingDirection]
-	and d
-	jr nz, .NotSurfable
-
-	ld a, [WalkingTile]
-	call CheckSurfable
-	jr c, .NotSurfable
-
-	and a
-	ret
-
-.NotSurfable
-	scf
-	ret
-; 803ca
-
-
-CheckRiding: ; 803ca
-
-	ld a, [PlayerState]
-	cp PLAYER_BIKE
-	ret z
-	cp PLAYER_SLIP
-	ret
-; 803d3
-
-
-CheckWalkable: ; 803d3
-; Return 0 if tile a is land. Otherwise, return carry.
-
-	call GetTileCollision
-	and a ; land
-	ret z
-	scf
-	ret
-; 803da
-
-
-CheckSurfable: ; 803da
-; Return 0 if tile a is water, or 1 if land.
-; Otherwise, return carry.
-
-	call GetTileCollision
-	cp 1
-	jr z, .Water
-
-; Can walk back onto land from water.
-	and a
-	jr z, .Land
-
-	jr .Neither
-
-.Water
-	xor a
-	ret
-
-.Land
-	ld a, 1
-	and a
-	ret
-
-.Neither
-	scf
-	ret
-; 803ee
-
-
-PlayBump: ; 803ee
-
-	call CheckSFX
-	ret c
-	ld de, SFX_BUMP
-	call PlaySFX
-	ret
-; 803f9
-
-
-WaterToLandSprite: ; 803f9
-	push bc
-	ld a, PLAYER_NORMAL
-	ld [PlayerState], a
-	call ReplaceKrisSprite ; UpdateSprites
-	pop bc
-	ret
-; 80404
-
-
-CheckStandingOnIce:: ; 80404
-	ld a, [wd04e]
-	cp 0
-	jr z, .nope
-	cp $f0
-	jr z, .nope
-	ld a, [PlayerNextTile]
-	call CheckIceTile
-	jr nc, .yep
-	ld a, [PlayerState]
-	cp PLAYER_SLIP
-	jr nz, .nope
-
-.yep
-	scf
-	ret
-
-.nope
-	and a
-	ret
-; 80422
-
-
-Function80422:: ; 80422
-	ld hl, wc2de
-	ld a, movement_step_sleep_1
-	cp [hl]
-	ret z
-
-	ld [hl], a
-	ld a, 0
-	ld [wd04e], a
-	ret
-; 80430
-
-
-
 INCLUDE "engine/engine_flags.asm"
 ; 80648
 
@@ -22216,11 +11610,11 @@
 	ld hl, KrisNameMenuHeader
 .GotGender
 	call LoadMenuDataHeader
-	call InterpretMenu2
-	ld a, [MenuSelection2]
+	call VerticalMenu
+	ld a, [wMenuCursorY]
 	dec a
 	call CopyNameFromMenu
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 882b5
 
@@ -22300,7 +11694,7 @@
 	ret
 ; 8833e
 
-Function8833e: ; 8833e
+GetCardPic: ; 8833e
 	ld hl, ChrisCardPic
 	ld a, [PlayerGender]
 	bit 0, a
@@ -22331,7 +11725,6 @@
 INCBIN "gfx/misc/trainer_card.2bpp"
 ; 88825
 
-
 GetPlayerBackpic: ; 88825
 	ld a, [PlayerGender]
 	bit 0, a
@@ -22378,17 +11771,15 @@
 	ret
 ; 88874
 
-
-
 DrawIntroPlayerPic: ; 88874
 ; Draw the player pic at (6,4).
 
 ; Get class
-	ld e, 0
+	ld e, CHRIS
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .GotClass
-	ld e, 1
+	ld e, KRIS
 .GotClass
 	ld a, e
 	ld [TrainerClass], a
@@ -22414,7 +11805,6 @@
 	ret
 ; 888a9
 
-
 ChrisPic: ; 888a9
 INCBIN "gfx/misc/chris.7x7.2bpp"
 ; 88bb9
@@ -22423,7 +11813,6 @@
 INCBIN "gfx/misc/kris.7x7.2bpp"
 ; 88ec9
 
-
 GetKrisBackpic: ; 88ec9
 ; Kris's backpic is uncompressed.
 	ld de, KrisBackpic
@@ -22437,7 +11826,6 @@
 INCBIN "gfx/misc/kris_back.6x6.2bpp"
 ; 89116
 
-
 String_89116:
 	db "-----@"
 ; 8911c
@@ -22449,7 +11837,6 @@
 INCLUDE "event/battle_tower.asm"
 INCLUDE "misc/mobile_22_2.asm"
 
-
 SECTION "bank23", ROMX, BANK[$23]
 
 Predef35: ; 8c000
@@ -22457,7 +11844,6 @@
 	ret
 ; 8c001
 
-
 INCLUDE "engine/timeofdaypals.asm"
 INCLUDE "engine/battle_start.asm"
 
@@ -22471,153 +11857,6 @@
 ; 8c7d4
 
 INCLUDE "event/field_moves.asm"
-
-Function8caed: ; 8caed
-	call DelayFrame
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	call Function8cb9b
-	depixel 10, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0A
-	call _InitSpriteAnimStruct
-	ld hl, $3
-	add hl, bc
-	ld [hl], $84
-	ld hl, $2
-	add hl, bc
-	ld [hl], $16
-	ld a, $80
-	ld [wcf64], a
-.asm_8cb14
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_8cb2e
-	ld a, $0
-	ld [wc3b5], a
-	callab Function8cf7a
-	call Function8cbc8
-	call DelayFrame
-	jr .asm_8cb14
-.asm_8cb2e
-	pop af
-	ld [VramState], a
-	ret
-; 8cb33
-
-Function8cb33: ; 8cb33
-	call DelayFrame
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	call Function8cb9b
-	depixel 31, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0A
-	call _InitSpriteAnimStruct
-	ld hl, $3
-	add hl, bc
-	ld [hl], $84
-	ld hl, $2
-	add hl, bc
-	ld [hl], $18
-	ld hl, $f
-	add hl, bc
-	ld [hl], $58
-	ld a, $40
-	ld [wcf64], a
-.asm_8cb60
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_8cb7a
-	ld a, $0
-	ld [wc3b5], a
-	callab Function8cf7a
-	call Function8cbc8
-	call DelayFrame
-	jr .asm_8cb60
-.asm_8cb7a
-	pop af
-	ld [VramState], a
-	call Function8cb82
-	ret
-
-Function8cb82: ; 8cb82 (23:4b82)
-	ld hl, Sprites + 2
-	xor a
-	ld c, $4
-.asm_8cb88
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	inc a
-	dec c
-	jr nz, .asm_8cb88
-	ld hl, Sprites + $10
-	ld bc, $90
-	xor a
-	call ByteFill
-	ret
-
-Function8cb9b: ; 8cb9b (23:4b9b)
-	callab Function8cf53
-	ld de, CutGrassGFX
-	ld hl, VTiles1 tile $00
-	lb bc, BANK(CutGrassGFX), 4
-	call Request2bpp
-	ld a, [CurPartyMon]
-	ld hl, PartySpecies
-	ld e, a
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-	ld e, $84
-	callba Function8e9bc
-	xor a
-	ld [wJumptableIndex], a
-	ret
-
-Function8cbc8: ; 8cbc8 (23:4bc8)
-	call Function8cbe6
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_8cbe0
-	dec [hl]
-	cp $40
-	ret c
-	and $7
-	ret nz
-	ld de, SFX_FLY
-	call PlaySFX
-	ret
-.asm_8cbe0
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Function8cbe6: ; 8cbe6 (23:4be6)
-	ld hl, wcf65
-	ld a, [hl]
-	inc [hl]
-	and $7
-	ret nz
-	ld a, [hl]
-	and $18
-	sla a
-	add $40
-	ld d, a
-	ld e, $0
-	ld a, SPRITE_ANIM_INDEX_18 ; fly land
-	call _InitSpriteAnimStruct
-	ld hl, $3
-	add hl, bc
-	ld [hl], $80
-	ret
-
 INCLUDE "event/magnet_train.asm"
 
 Function8cf4f: ; 8cf4f
@@ -22625,9 +11864,9 @@
 	ret
 ; 8cf53
 
-
 INCLUDE "engine/sprites.asm"
 
+INCLUDE "engine/mon_icons.asm"
 
 SECTION "bank24", ROMX, BANK[$24]
 
@@ -22638,13 +11877,11 @@
 INCLUDE "data/wild/fish.asm"
 INCLUDE "engine/slot_machine.asm"
 
-
 SECTION "Phone Engine", ROMX, BANK[$28]
 
 INCLUDE "engine/more_phone_scripts.asm"
 INCLUDE "engine/buena_phone_scripts.asm"
 
-
 SECTION "Phone Text", ROMX, BANK[$29]
 
 INCLUDE "text/phone/anthony_overworld.asm"
@@ -22669,7 +11906,6 @@
 
 INCLUDE "tilesets/data_5.asm"
 
-
 SECTION "bank2E", ROMX, BANK[$2E]
 
 INCLUDE "engine/events_3.asm"
@@ -22686,16 +11922,16 @@
 
 TalkToTrainerScript:: ; 0xbe66a
 	faceplayer
-	trainerstatus CHECK_FLAG
+	trainerflagaction CHECK_FLAG
 	iftrue AlreadyBeatenTrainerScript
-	loadtrainerdata
-	playrammusic
+	loadmemtrainer
+	encountermusic
 	jump StartBattleWithMapTrainerScript
 ; 0xbe675
 
 SeenByTrainerScript:: ; 0xbe675
-	loadtrainerdata
-	playrammusic
+	loadmemtrainer
+	encountermusic
 	showemote EMOTE_SHOCK, LAST_TALKED, 30
 	callasm TrainerWalkToPlayer
 	applymovement2 MovementBuffer
@@ -22705,14 +11941,14 @@
 ; 0xbe68a
 
 StartBattleWithMapTrainerScript: ; 0xbe68a
-	loadfont
+	opentext
 	trainertext $0
+	waitbutton
 	closetext
-	loadmovesprites
-	loadtrainerdata
+	loadmemtrainer
 	startbattle
-	returnafterbattle
-	trainerstatus SET_FLAG
+	reloadmapafterbattle
+	trainerflagaction SET_FLAG
 	loadvar wRunningTrainerBattleScript, -1
 
 AlreadyBeatenTrainerScript:
@@ -22719,8 +11955,6 @@
 	scripttalkafter
 ; 0xbe699
 
-
-
 SECTION "bank30", ROMX, BANK[$30]
 
 INCLUDE "gfx/overworld/sprites_1.asm"
@@ -22729,7 +11963,6 @@
 
 INCLUDE "gfx/overworld/sprites_2.asm"
 
-
 SECTION "bank32", ROMX, BANK[$32]
 
 INCLUDE "battle/bg_effects.asm"
@@ -22736,8 +11969,8 @@
 
 INCLUDE "battle/anims.asm"
 
-Functioncbcdd: ; cbcdd
-	call Functioncbce5
+LoadPoisonBGPals: ; cbcdd
+	call .LoadPals
 	ld a, [hCGB]
 	and a
 	ret nz
@@ -22744,18 +11977,18 @@
 	ret
 ; cbce5
 
-Functioncbce5: ; cbce5
+.LoadPals: ; cbce5
 	ld a, [hCGB]
 	and a
-	jr nz, .asm_cbd06
+	jr nz, .cgb
 	ld a, [TimeOfDayPal]
 	and $3
 	cp $3
 	ld a, $0
-	jr z, .asm_cbcf7
+	jr z, .convert_pals
 	ld a, $aa
 
-.asm_cbcf7
+.convert_pals
 	call DmgToCgbBGPals
 	ld c, 4
 	call DelayFrames
@@ -22762,7 +11995,7 @@
 	callba _UpdateTimePals
 	ret
 
-.asm_cbd06
+.cgb
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -22769,14 +12002,14 @@
 	ld [rSVBK], a
 	ld hl, BGPals
 	ld c, $20
-.asm_cbd12
+.loop
 ; RGB 31, 21, 28
-	ld a, $bc
+	ld a, (palred 31 + palgreen 21 + palblue 28) % $100
 	ld [hli], a
-	ld a, $7e
+	ld a, (palred 31 + palgreen 21 + palblue 28) / $100
 	ld [hli], a
 	dec c
-	jr nz, .asm_cbd12
+	jr nz, .loop
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -22791,7 +12024,6 @@
 INCBIN "gfx/credits/theend.2bpp"
 ; cbe2e
 
-
 SECTION "bank33", ROMX, BANK[$33]
 
 DisplayCaughtContestMonStats: ; cc000
@@ -22908,12 +12140,10 @@
 	ret
 ; cc0d6
 
-
 INCLUDE "battle/anim_commands.asm"
 
 INCLUDE "battle/anim_objects.asm"
 
-
 SECTION "Pic Animations 1", ROMX, BANK[$34]
 
 INCLUDE "gfx/pics/animation.asm"
@@ -22954,18 +12184,15 @@
 INCLUDE "gfx/pics/unown_bitmask_pointers.asm"
 INCLUDE "gfx/pics/unown_bitmasks.asm"
 
-
 SECTION "Pic Animations 2", ROMX, BANK[$35]
 
 INCLUDE "gfx/pics/frame_pointers.asm"
 INCLUDE "gfx/pics/kanto_frames.asm"
 
-
 SECTION "bank36", ROMX, BANK[$36]
 
 FontInversed: INCBIN "gfx/misc/font_inversed.1bpp"
 
-
 SECTION "Pic Animations 3", ROMX, BANK[$36]
 
 INCLUDE "gfx/pics/johto_frames.asm"
@@ -22972,37 +12199,35 @@
 INCLUDE "gfx/pics/unown_frame_pointers.asm"
 INCLUDE "gfx/pics/unown_frames.asm"
 
-
 SECTION "Tileset Data 6", ROMX, BANK[TILESETS_6]
 
 INCLUDE "tilesets/data_6.asm"
 
-
 SECTION "bank38", ROMX, BANK[$38]
 
 Functione0000: ; e0000
+; something to do with Unown printer
 	push de
 	xor a
 	call GetSRAMBank
 	ld hl, sScratch
 	ld bc, 0
-.asm_e000b
+.loop
 	push bc
 	push hl
 	push bc
 	ld de, wd002
-	call Functione004e
-	call Functione0057
+	call .Copy
+	call .Decompress
 	ld hl, Unknown_e008b
 	pop bc
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
 	ld hl, wd012
-	call Functione004e
+	call .Copy
 	pop hl
 	ld bc, $10
 	add hl, bc
@@ -23010,10 +12235,11 @@
 	inc c
 	ld a, c
 	cp $31
-	jr c, .asm_e000b
+	jr c, .loop
+
 	ld hl, OverworldMap
 	ld de, sScratch
-	ld bc, $310
+	ld bc, $31 tiles
 	call CopyBytes
 	pop hl
 	ld de, sScratch
@@ -23025,69 +12251,76 @@
 	ret
 ; e004e
 
-Functione004e: ; e004e
+.Copy: ; e004e
 	ld c, $10
-.asm_e0050
+.loop_copy
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_e0050
+	jr nz, .loop_copy
 	ret
 ; e0057
 
-Functione0057: ; e0057
+.Decompress: ; e0057
 	ld hl, wd012
-	ld e, $80
-	ld d, $8
-.asm_e005e
+	ld e, %10000000
+	ld d, 8
+.loop_decompress
 	push hl
 	ld hl, wd002
-	call Functione0078
+	call .CountSetBit
 	pop hl
 	ld a, b
 	ld [hli], a
 	push hl
 	ld hl, wd003
-	call Functione0078
+	call .CountSetBit
 	pop hl
 	ld a, b
 	ld [hli], a
 	srl e
 	dec d
-	jr nz, .asm_e005e
+	jr nz, .loop_decompress
 	ret
 ; e0078
 
-Functione0078: ; e0078
-	ld b, $0
-	ld c, $8
-.asm_e007c
+.CountSetBit: ; e0078
+	ld b, 0
+	ld c, 8
+.loop_count
 	ld a, [hli]
 	and e
-	jr z, .asm_e0083
+	jr z, .clear
 	scf
-	jr .asm_e0084
+	jr .apply
 
-.asm_e0083
+.clear
 	and a
 
-.asm_e0084
+.apply
 	rr b
 	inc hl
 	dec c
-	jr nz, .asm_e007c
+	jr nz, .loop_count
 	ret
 ; e008b
 
+overworldmaptile EQUS "dw OverworldMap + $10 *"
+overworldmaprect: MACRO
+y = 0
+rept \1
+x = \1 * (\2 +- 1) + y
+rept \2
+	overworldmaptile x
+x = x +- \2
+endr
+y = y + 1
+endr
+endm
+
 Unknown_e008b: ; e008b
-	dw wcaa0, wca30, wc9c0, wc950, wc8e0, wc870, wc800
-	dw wcab0, wca40, wc9d0, wc960, wc8f0, wc880, wc810
-	dw wcac0, wca50, wc9e0, wc970, wc900, wc890, wc820
-	dw wcad0, wca60, wc9f0, wc980, wc910, wc8a0, wc830
-	dw wcae0, wca70, wca00, wc990, wc920, wc8b0, wc840
-	dw wcaf0, wca80, wca10, wc9a0, wc930, wc8c0, wc850
-	dw wcb00, wca90, wca20, wc9b0, wc940, wc8d0, wc860
+	overworldmaprect 7, 7
 ; e00ed
 
 Unknown_e00ed:
@@ -23094,11 +12327,13 @@
 ; Graphics for an unused Game Corner
 ; game were meant to be here.
 
-Functione00ed: ; e00ed (38:40ed)
+ret_e00ed: ; e00ed (38:40ed)
+; How many coins?
 	ret
 ; e00ee (38:40ee)
 
 INCLUDE "engine/card_flip.asm"
+INCLUDE "engine/unown_puzzle.asm"
 INCLUDE "engine/dummy_game.asm"
 INCLUDE "engine/billspc.asm"
 
@@ -23115,127 +12350,7 @@
 
 INCLUDE "gfx/font.asm"
 INCLUDE "engine/time_capsule/conversion.asm"
-
-UpdateUnownDex: ; fba18
-	ld a, [UnownLetter]
-	ld c, a
-	ld b, 26
-	ld hl, UnownDex
-.loop
-	ld a, [hli]
-	and a
-	jr z, .done
-	cp c
-	ret z
-	dec b
-	jr nz, .loop
-	ret
-
-.done
-	dec hl
-	ld [hl], c
-	ret
-; fba2e
-
-
-Functionfba2e: ; fba2e (3e:7a2e)
-	hlcoord 4, 15
-	ld bc, 12
-	ld a, " "
-	call ByteFill
-	ld a, [wc7dd]
-	ld e, a
-	ld d, 0
-	ld hl, UnownDex
-	add hl, de
-	ld a, [hl]
-	ld e, a
-	ld d, 0
-	ld hl, UnownWords
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	hlcoord 4, 15
-.asm_fba52
-	ld a, [de]
-	cp $ff
-	ret z
-	inc de
-	ld [hli], a
-	jr .asm_fba52
-; fba5a (3e:7a5a)
-
-UnownWords: ; fba5a
-	dw UnownWord1
-	dw UnownWord1
-	dw UnownWord2
-	dw UnownWord3
-	dw UnownWord4
-	dw UnownWord5
-	dw UnownWord6
-	dw UnownWord7
-	dw UnownWord8
-	dw UnownWord9
-	dw UnownWord10
-	dw UnownWord11
-	dw UnownWord12
-	dw UnownWord13
-	dw UnownWord14
-	dw UnownWord15
-	dw UnownWord16
-	dw UnownWord17
-	dw UnownWord18
-	dw UnownWord19
-	dw UnownWord20
-	dw UnownWord21
-	dw UnownWord22
-	dw UnownWord23
-	dw UnownWord24
-	dw UnownWord25
-	dw UnownWord26
-; fba90
-
-unownword: macro
-x = 1
-	rept STRLEN(\1)
-	db STRSUB(\1, x, 1) - $40
-x = x + 1
-	endr
-	db -1
-endm
-
-
-UnownWord1:	 unownword "ANGRY"
-UnownWord2:	 unownword "BEAR"
-UnownWord3:	 unownword "CHASE"
-UnownWord4:	 unownword "DIRECT"
-UnownWord5:	 unownword "ENGAGE"
-UnownWord6:	 unownword "FIND"
-UnownWord7:	 unownword "GIVE"
-UnownWord8:	 unownword "HELP"
-UnownWord9:	 unownword "INCREASE"
-UnownWord10: unownword "JOIN"
-UnownWord11: unownword "KEEP"
-UnownWord12: unownword "LAUGH"
-UnownWord13: unownword "MAKE"
-UnownWord14: unownword "NUZZLE"
-UnownWord15: unownword "OBSERVE"
-UnownWord16: unownword "PERFORM"
-UnownWord17: unownword "QUICKEN"
-UnownWord18: unownword "REASSURE"
-UnownWord19: unownword "SEARCH"
-UnownWord20: unownword "TELL"
-UnownWord21: unownword "UNDO"
-UnownWord22: unownword "VANISH"
-UnownWord23: unownword "WANT"
-UnownWord24: unownword "XXXXX"
-UnownWord25: unownword "YIELD"
-UnownWord26: unownword "ZOOM"
-; fbb32
-
+INCLUDE "engine/unowndex.asm"
 INCLUDE "event/magikarp.asm"
 
 INCLUDE "battle/hidden_power.asm"
@@ -23250,1055 +12365,16 @@
 
 INCLUDE "event/mom_phone.asm"
 
+SECTION "bank40", ROMX, BANK[$40]
+
 INCLUDE "misc/mobile_40.asm"
 
-
 SECTION "bank41", ROMX, BANK[$41]
 
-Function104000:: ; 104000
-	ld hl, Function104006
-	jp Function104177
-; 104006
+INCLUDE "misc/gfx_41.asm"
 
-Function104006: ; 104006
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function10425f
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function10419d
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function10419d
-	ret
-; 10402d
+INCLUDE "engine/warp_connection.asm"
 
-Function10402d:: ; 10402d
-	ld hl, Function104033
-	jp Function104177
-; 104033
-
-Function104033: ; 104033
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function10425f
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function10419d
-	ret
-; 104047
-
-Function104047: ; 104047
-	ld hl, Function10404d
-	jp Function104177
-; 10404d
-
-Function10404d: ; 10404d
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function10419d
-	ret
-; 104061
-
-ReloadMapPart:: ; 104061
-	ld hl, Function104067
-	jp Function104177
-; 104067
-
-Function104067: ; 104067
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function10425f
-	call DelayFrame
-	di
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function1041ad
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function1041ad
-	pop af
-	ld [rVBK], a
-	ei
-	ret
-
-Function104099: ; 104099
-	ld hl, ReloadMapPart ; useless
-	ld hl, Function1040a2
-	jp Function104177
-; 1040a2
-
-Function1040a2: ; 1040a2
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function10425f
-	call DelayFrame
-	di
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function1041c1
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function1041c1
-	pop af
-	ld [rVBK], a
-	ei
-	ret
-; 1040d4
-
-Function1040d4: ; 1040d4
-	ld hl, Function1040da
-	jp Function104177
-; 1040da
-
-Function1040da: ; 1040da
-	ld a, $1
-	ld [rVBK], a
-	ld a, $3
-	ld [rSVBK], a
-	ld de, w3_d800
-	ld a, [hBGMapAddress + 1]
-	ld [rHDMA1], a
-	ld a, [hBGMapAddress]
-	ld [rHDMA2], a
-	ld a, d
-	ld [rHDMA3], a
-	ld a, e
-	ld [rHDMA4], a
-	ld a, $23
-	ld [hDMATransfer], a
-	call Function1041a4
-	ret
-; 1040fb
-
-Function1040fb: ; 1040fb
-	ld hl, Function104101
-	jp Function104177
-; 104101
-
-Function104101: ; 104101
-	ld a, $1
-	ld [rVBK], a
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, w3_d800
-	call Function10419d
-	ret
-; 104110
-
-Function104110:: ; 104110
-	ld hl, Function104116
-	jp Function104177
-; 104116
-
-Function104116: ; 104116
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function10425f
-	call DelayFrame
-	di
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function1041b7
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function1041b7
-	pop af
-	ld [rVBK], a
-	ei
-	ret
-; 104148
-
-Function104148: ; 104148 (41:4148)
-	ld hl, Function10414e
-	jp Function104177
-; 10414e (41:414e)
-
-Function10414e: ; 10414e
-	decoord 0, 0, AttrMap
-	ld hl, w6_d400
-	call Function104263
-	ld c, $ff
-	decoord 0, 0
-	ld hl, w6_d000
-	call Function104265
-	ld a, $1
-	ld [rVBK], a
-	ld hl, w6_d400
-	call Function1041ad
-	ld a, $0
-	ld [rVBK], a
-	ld hl, w6_d000
-	call Function1041ad
-	ret
-; 104177
-
-Function104177: ; 104177
-	ld a, [hBGMapMode]
-	push af
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hBGMapMode], a
-	ld [hMapAnims], a
-	ld a, [rSVBK]
-	push af
-	ld a, 6
-	ld [rSVBK], a
-	ld a, [rVBK]
-	push af
-	call Function10419c
-	pop af
-	ld [rVBK], a
-	pop af
-	ld [rSVBK], a
-	pop af
-	ld [hMapAnims], a
-	pop af
-	ld [hBGMapMode], a
-	ret
-; 10419c
-
-Function10419c: ; 10419c
-	jp [hl]
-; 10419d
-
-
-Function10419d: ; 10419d (41:419d)
-	call Function10424e
-	ld a, $23
-	ld [hDMATransfer], a
-
-Function1041a4: ; 104a14
-.asm_1041a4
-	call DelayFrame
-	ld a, [hDMATransfer]
-	and a
-	jr nz, .asm_1041a4
-	ret
-
-Function1041ad: ; 1041ad (41:41ad)
-	ld a, [hBGMapAddress + 1]
-	ld d, a
-	ld a, [hBGMapAddress]
-	ld e, a
-	ld c, $24
-	jr Function104209
-
-Function1041b7: ; 1041b7 (41:41b7)
-	ld a, [hBGMapAddress + 1]
-	ld d, a
-	ld a, [hBGMapAddress]
-	ld e, a
-	ld c, $24
-	jr asm_104205
-; 1041c1 (41:41c1)
-
-Function1041c1: ; 1041c1
-	ld a, [hBGMapAddress + 1]
-	ld d, a
-	ld a, [hBGMapAddress]
-	ld e, a
-	ld c, $24
-	ld a, h
-	ld [rHDMA1], a
-	ld a, l
-	and $f0
-	ld [rHDMA2], a
-	ld a, d
-	and $1f
-	ld [rHDMA3], a
-	ld a, e
-	and $f0
-	ld [rHDMA4], a
-	ld a, c
-	dec c
-	or $80
-	ld b, a
-	ld a, $7f
-	sub c
-	ld d, a
-.loop1
-	ld a, [rLY]
-	cp d
-	jr nc, .loop1
-.loop2
-	ld a, [rSTAT]
-	and $3
-	jr z, .loop2
-	ld a, b
-	ld [rHDMA5], a
-	ld a, [rLY]
-	inc c
-	ld hl, rLY
-.loop3
-	cp [hl]
-	jr z, .loop3
-	ld a, [hl]
-	dec c
-	jr nz, .loop3
-	ld hl, rHDMA5
-	res 7, [hl]
-	ret
-; 104205
-
-asm_104205:
-	ld b, $7b
-	jr asm_10420b
-
-
-Function104209:
-; LY magic
-	ld b, $7f
-asm_10420b:
-	ld a, h
-	ld [rHDMA1], a
-	ld a, l
-	and $f0 ; high nybble
-	ld [rHDMA2], a
-	ld a, d
-	and $1f ; lower 5 bits
-	ld [rHDMA3], a
-	ld a, e
-	and $f0 ; high nybble
-	ld [rHDMA4], a
-	ld a, c
-	dec c
-	or $80 ; set 7, a
-	ld e, a
-	ld a, b
-	sub c
-	ld d, a
-.ly_loop
-	ld a, [rLY]
-	cp d
-	jr nc, .ly_loop
-
-	di
-.rstat_loop_1
-	ld a, [rSTAT]
-	and $3
-	jr nz, .rstat_loop_1
-.rstat_loop_2
-	ld a, [rSTAT]
-	and $3
-	jr z, .rstat_loop_2
-	ld a, e
-	ld [rHDMA5], a
-	ld a, [rLY]
-	inc c
-	ld hl, rLY
-.final_ly_loop
-	cp [hl]
-	jr z, .final_ly_loop
-	ld a, [hl]
-	dec c
-	jr nz, .final_ly_loop
-	ld hl, rHDMA5
-	res 7, [hl]
-	ei
-
-	ret
-; 10424e
-
-
-Function10424e: ; 10424e (41:424e)
-	ld a, h
-	ld [rHDMA1], a
-	ld a, l
-	ld [rHDMA2], a
-	ld a, [hBGMapAddress + 1]
-	and $1f
-	ld [rHDMA3], a
-	ld a, [hBGMapAddress]
-	ld [rHDMA4], a
-	ret
-
-Function10425f: ; 10425f (41:425f)
-	ld c, $7f
-	jr Function104265
-
-Function104263: ; 104263 (41:4263)
-	ld c, $0
-
-Function104265: ; 104265 (41:4265)
-; back up the value of c to hMapObjectIndexBuffer
-	ld a, [hMapObjectIndexBuffer]
-	push af
-	ld a, c
-	ld [hMapObjectIndexBuffer], a
-
-; for each row on the screen
-	ld c, SCREEN_HEIGHT
-.loop1
-; for each tile in the row
-	ld b, SCREEN_WIDTH
-.loop2
-; copy from de to hl
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec b
-	jr nz, .loop2
-
-; load the original value of c into hl 12 times
-	ld a, [hMapObjectIndexBuffer]
-	ld b, 12
-.loop3
-	ld [hli], a
-	dec b
-	jr nz, .loop3
-
-	dec c
-	jr nz, .loop1
-
-; restore the original value of hMapObjectIndexBuffer
-	pop af
-	ld [hMapObjectIndexBuffer], a
-	ret
-
-
-_Get2bpp:: ; 104284
-	; 2bpp when [rLCDC] & $80
-	; switch to WRAM bank 6
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-
-	push bc
-	push hl
-
-	; Copy c tiles of the 2bpp from b:de to w6_d000
-	ld a, b ; bank
-	ld l, c ; number of tiles
-	ld h, $0
-rept 4
-	add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile)
-endr
-	ld b, h
-	ld c, l
-	ld h, d ; address
-	ld l, e
-	ld de, w6_d000
-	call FarCopyBytes
-	
-	pop hl
-	pop bc
-
-	push bc
-	call DelayFrame
-	pop bc
-
-	ld d, h
-	ld e, l
-	ld hl, w6_d000
-	call Function104209
-
-	; restore the previous bank
-	pop af
-	ld [rSVBK], a
-	ret
-; 1042b2
-
-_Get1bpp:: ; 1042b2
-	; 1bpp when [rLCDC] & $80
-.loop
-	ld a, c
-	cp $10
-	jp c, .bankswitch
-	jp z, .bankswitch
-	push bc
-	push hl
-	push de
-	ld c, $10
-	call .bankswitch
-	pop de
-	ld hl, $80
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	lb bc, 1, 0
-	add hl, bc
-	pop bc
-	ld a, c
-	sub $10
-	ld c, a
-	jr .loop
-; 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 ; multiply by 8
-endr
-	ld c, l
-	ld b, h
-	ld h, d
-	ld l, e
-	ld de, w6_d000
-	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
-; 104303
-
-Function104303: ; 104303
-	ld hl, Function104309
-	jp Function104177
-; 104309
-
-Function104309:
-	ld hl, w6_d000
-	decoord 0, 0
-	call Function10433a
-	ld hl, w6_d000 + $80
-	decoord 0, 0, AttrMap
-	call Function10433a
-	ld a, $1
-	ld [rVBK], a
-	ld c, $8
-	ld hl, w6_d000 + $80
-	debgcoord 0, 0, VBGMap1
-	call Function104209
-	ld a, $0
-	ld [rVBK], a
-	ld c, $8
-	ld hl, w6_d000
-	debgcoord 0, 0, VBGMap1
-	call Function104209
-	ret
-
-Function10433a: ; 10433a (41:433a)
-	ld b, 4
-.outer_loop
-	ld c, 20
-.inner_loop
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .inner_loop
-	ld a, l
-	add $20 - 20
-	ld l, a
-	ld a, h
-	adc $0
-	ld h, a
-	dec b
-	jr nz, .outer_loop
-	ret
-; 104350
-
-ShockEmote:     INCBIN "gfx/emotes/shock.2bpp"
-QuestionEmote:  INCBIN "gfx/emotes/question.2bpp"
-HappyEmote:     INCBIN "gfx/emotes/happy.2bpp"
-SadEmote:       INCBIN "gfx/emotes/sad.2bpp"
-HeartEmote:     INCBIN "gfx/emotes/heart.2bpp"
-BoltEmote:      INCBIN "gfx/emotes/bolt.2bpp"
-SleepEmote:     INCBIN "gfx/emotes/sleep.2bpp"
-FishEmote:      INCBIN "gfx/emotes/fish.2bpp"
-JumpShadowGFX:  INCBIN "gfx/misc/shadow.2bpp"
-FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
-BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
-FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
-
-
-RunCallback_05_03: ; 1045b0
-	call Clearwc7e8
-	call ResetMapBufferEventFlags
-	call ResetFlashIfOutOfCave
-	call GetCurrentMapTrigger
-	call ResetBikeFlags
-	ld a, $5
-	call RunMapCallback
-
-RunCallback_03: ; 1045c4
-	callba ClearCmdQueue
-	ld a, $3
-	call RunMapCallback
-	call GetMapHeaderTimeOfDayNybble
-	ld [wc2d0], a
-	ret
-
-
-EnterMapConnection: ; 1045d6
-; Return carry if a connection has been entered.
-	ld a, [wPlayerStepDirection]
-	and a
-	jp z, EnterSouthConnection
-	cp 1
-	jp z, EnterNorthConnection
-	cp 2
-	jp z, EnterWestConnection
-	cp 3
-	jp z, EnterEastConnection
-	ret
-; 1045ed
-
-
-EnterWestConnection: ; 1045ed
-	ld a, [WestConnectedMapGroup]
-	ld [MapGroup], a
-	ld a, [WestConnectedMapNumber]
-	ld [MapNumber], a
-	ld a, [WestConnectionStripXOffset]
-	ld [XCoord], a
-	ld a, [WestConnectionStripYOffset]
-	ld hl, YCoord
-	add [hl]
-	ld [hl], a
-	ld c, a
-	ld hl, WestConnectionWindow
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	srl c
-	jr z, .skip_to_load
-	ld a, [WestConnectedMapWidth]
-	add 6
-	ld e, a
-	ld d, 0
-
-.loop
-	add hl, de
-	dec c
-	jr nz, .loop
-
-.skip_to_load
-	ld a, l
-	ld [wd194], a
-	ld a, h
-	ld [wd194 + 1], a
-	jp EnteredConnection
-; 104629
-
-
-EnterEastConnection: ; 104629
-	ld a, [EastConnectedMapGroup]
-	ld [MapGroup], a
-	ld a, [EastConnectedMapNumber]
-	ld [MapNumber], a
-	ld a, [EastConnectionStripXOffset]
-	ld [XCoord], a
-	ld a, [EastConnectionStripYOffset]
-	ld hl, YCoord
-	add [hl]
-	ld [hl], a
-	ld c, a
-	ld hl, EastConnectionWindow
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	srl c
-	jr z, .skip_to_load
-	ld a, [EastConnectedMapWidth]
-	add 6
-	ld e, a
-	ld d, 0
-
-.loop
-	add hl, de
-	dec c
-	jr nz, .loop
-
-.skip_to_load
-	ld a, l
-	ld [wd194], a
-	ld a, h
-	ld [wd194 + 1], a
-	jp EnteredConnection
-; 104665
-
-
-EnterNorthConnection: ; 104665
-	ld a, [NorthConnectedMapGroup]
-	ld [MapGroup], a
-	ld a, [NorthConnectedMapNumber]
-	ld [MapNumber], a
-	ld a, [NorthConnectionStripYOffset]
-	ld [YCoord], a
-	ld a, [NorthConnectionStripXOffset]
-	ld hl, XCoord
-	add [hl]
-	ld [hl], a
-	ld c, a
-	ld hl, NorthConnectionWindow
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld b, 0
-	srl c
-	add hl, bc
-	ld a, l
-	ld [wd194], a
-	ld a, h
-	ld [wd194 + 1], a
-	jp EnteredConnection
-; 104696
-
-
-EnterSouthConnection: ; 104696
-	ld a, [SouthConnectedMapGroup]
-	ld [MapGroup], a
-	ld a, [SouthConnectedMapNumber]
-	ld [MapNumber], a
-	ld a, [SouthConnectionStripYOffset]
-	ld [YCoord], a
-	ld a, [SouthConnectionStripXOffset]
-	ld hl, XCoord
-	add [hl]
-	ld [hl], a
-	ld c, a
-	ld hl, SouthConnectionWindow
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld b, 0
-	srl c
-	add hl, bc
-	ld a, l
-	ld [wd194], a
-	ld a, h
-	ld [wd194 + 1], a
-	; fallthrough
-; 1046c4
-
-EnteredConnection: ; 1046c4
-	scf
-	ret
-; 1046c6
-
-LoadWarpData: ; 1046c6
-	call Function1046df
-	call Function104718
-	ld a, [wd146]
-	ld [WarpNumber], a
-	ld a, [wd147]
-	ld [MapGroup], a
-	ld a, [wd148]
-	ld [MapNumber], a
-	ret
-
-Function1046df: ; 1046df (41:46df)
-	call GetMapPermission
-	call CheckOutdoorMap
-	ret nz
-	ld a, [wd147]
-	ld b, a
-	ld a, [wd148]
-	ld c, a
-	call GetAnyMapPermission
-	call CheckIndoorMap
-	ret nz
-	ld a, [wd14a]
-	cp $f
-	jr nz, .asm_104705
-	ld a, [wd14b]
-	cp $a
-	ret z
-	cp $c
-	ret z
-.asm_104705
-	ld a, [wd149]
-	ld [wdca9], a
-	ld a, [wd14a]
-	ld [wdcaa], a
-	ld a, [wd14b]
-	ld [wdcab], a
-	ret
-
-Function104718: ; 104718 (41:4718)
-	call GetMapPermission
-	call CheckOutdoorMap
-	ret nz
-	ld a, [wd147]
-	ld b, a
-	ld a, [wd148]
-	ld c, a
-	call GetAnyMapPermission
-	call CheckIndoorMap
-	ret nz
-	ld a, [wd147]
-	ld b, a
-	ld a, [wd148]
-	ld c, a
-	call GetAnyMapTileset
-	ld a, c
-	cp $7
-	jr z, .asm_104743
-	cp $15
-	jr z, .asm_104743
-	ret
-.asm_104743
-	ld a, [wd14a]
-	ld [wdcb2], a
-	ld a, [wd14b]
-	ld [wdcb3], a
-	ret
-
-LoadMapTimeOfDay: ; 104750
-	ld hl, VramState
-	res 6, [hl]
-	ld a, $1
-	ld [wSpriteUpdatesEnabled], a
-	callba Function8c0e5
-	callba Function8c001
-	call OverworldTextModeSwitch
-	call Function104770
-	call Function1047a3
-	ret
-
-Function104770: ; 104770 (41:4770)
-	ld a, VBGMap0 / $100
-	ld [wBGMapAnchor + 1], a
-	xor a
-	ld [wBGMapAnchor], a
-	ld [hSCY], a
-	ld [hSCX], a
-	callba Function5958
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-	xor a
-	lb bc, 4, 0
-	hlbgcoord 0, 0
-	call ByteFill
-	pop af
-	ld [rVBK], a
-	ld a, $60
-	lb bc, 4, 0
-	hlbgcoord 0, 0
-	call ByteFill
-	ret
-
-Function1047a3: ; 1047a3 (41:47a3)
-	decoord 0, 0
-	call .copy
-	ld a, [hCGB]
-	and a
-	ret z
-
-	decoord 0, 0, AttrMap
-	ld a, $1
-	ld [rVBK], a
-.copy:
-	hlbgcoord 0, 0
-	ld c, SCREEN_WIDTH
-	ld b, SCREEN_HEIGHT
-.row
-	push bc
-.column
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .column
-	ld bc, $20 - SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .row
-	ld a, $0
-	ld [rVBK], a
-	ret
-
-LoadGraphics: ; 1047cf
-	call LoadTilesetHeader
-	call LoadTileset
-	xor a
-	ld [hMapAnims], a
-	xor a
-	ld [hTileAnimFrame], a
-	callba RefreshSprites
-	call LoadFontsExtra
-	callba Function106594
-	ret
-
-LoadMapPalettes: ; 1047eb
-	ld b, SCGB_09
-	jp GetSGBLayout
-; 1047f0
-
-RefreshMapSprites: ; 1047f0
-	call ClearSprites
-	callba ReturnFromMapSetupScript
-	call GetMovementPermissions
-	callba Function579d
-	callba CheckReplaceKrisSprite
-	ld hl, wPlayerSpriteSetupFlags
-	bit 6, [hl]
-	jr nz, .skip
-	ld hl, VramState
-	set 0, [hl]
-	call Function2e31
-.skip
-	ld a, [wPlayerSpriteSetupFlags]
-	and $1c
-	ld [wPlayerSpriteSetupFlags], a
-	ret
-
-CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
-	ld a, [wPlayerStepDirection]
-	cp STANDING
-	ret z
-	and a ; DOWN
-	jr z, .down
-	cp UP
-	jr z, .up
-	cp LEFT
-	jr z, .left
-	cp RIGHT
-	jr z, .right
-	and a
-	ret
-
-.down
-	ld a, [PlayerNextMapY]
-	sub 4
-	ld b, a
-	ld a, [MapHeight]
-	add a
-	cp b
-	jr z, .ok
-	and a
-	ret
-
-.up
-	ld a, [PlayerNextMapY]
-	sub 4
-	cp -1
-	jr z, .ok
-	and a
-	ret
-
-.left
-	ld a, [PlayerNextMapX]
-	sub $4
-	cp -1
-	jr z, .ok
-	and a
-	ret
-
-.right
-	ld a, [PlayerNextMapX]
-	sub 4
-	ld b, a
-	ld a, [MapWidth]
-	add a
-	cp b
-	jr z, .ok
-	and a
-	ret
-
-.ok
-	scf
-	ret
-
-
-GetCoordOfUpperLeftCorner:: ; 10486d
-	ld hl, OverworldMap
-	ld a, [XCoord]
-	bit 0, a
-	jr nz, .increment_then_halve1
-	srl a
-	add $1
-	jr .resume
-
-.increment_then_halve1
-	add $1
-	srl a
-
-.resume
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [MapWidth]
-	add $6
-	ld c, a
-	ld b, $0
-	ld a, [YCoord]
-	bit 0, a
-	jr nz, .increment_then_halve2
-	srl a
-	add $1
-	jr .resume2
-
-.increment_then_halve2
-	add $1
-	srl a
-
-.resume2
-	call AddNTimes
-	ld a, l
-	ld [wd194], a
-	ld a, h
-	ld [wd194 + 1], a
-	ld a, [YCoord]
-	and $1
-	ld [wd196], a
-	ld a, [XCoord]
-	and $1
-	ld [wd197], a
-	ret
-; 1048ba
-
 INCLUDE "engine/mysterygift.asm"
 
 INCLUDE "battle/used_move_text.asm"
@@ -24305,9 +12381,10 @@
 
 INCLUDE "misc/mobile_41.asm"
 
+SECTION "bank42", ROMX, BANK[$42]
+
 INCLUDE "misc/mobile_42.asm"
 
-
 SECTION "Intro Logo", ROMX, BANK[$42]
 
 IntroLogoGFX: ; 109407
@@ -24314,13 +12391,10 @@
 INCBIN "gfx/intro/logo.2bpp.lz"
 ; 109847
 
-
 INCLUDE "misc/unused_title.asm"
 
-
 INCLUDE "engine/title.asm"
 
-
 INCLUDE "misc/mobile_45.asm"
 INCLUDE "misc/mobile_46.asm"
 
@@ -24331,6 +12405,7 @@
 SECTION "bank5B", ROMX, BANK[$5B]
 
 INCLUDE "misc/mobile_5b.asm"
+INCLUDE "engine/link_trade.asm"
 
 SECTION "bank5C", ROMX, BANK[$5C]
 
@@ -24340,7 +12415,6 @@
 
 INCLUDE "text/phone/extra3.asm"
 
-
 SECTION "bank5E", ROMX, BANK[$5E]
 
 _UpdateBattleHUDs:
@@ -24354,10 +12428,8 @@
 	ret
 ; 17801f (5e:401f)
 
-
 INCLUDE "misc/mobile_5f.asm"
 
-
 SECTION "Common Text 1", ROMX, BANK[$6C]
 
 INCLUDE "text/stdtext.asm"
@@ -24380,7 +12452,6 @@
 INCLUDE "text/phone/elm.asm"
 INCLUDE "text/phone/trainers1.asm"
 
-
 SECTION "bank72", ROMX, BANK[$72]
 
 ItemNames::
@@ -24393,13 +12464,10 @@
 
 INCLUDE "engine/landmarks.asm"
 
-
 SECTION "bank75", ROMX, BANK[$75]
 
-
 SECTION "bank76", ROMX, BANK[$76]
 
-
 SECTION "bank77", ROMX, BANK[$77]
 
 UnownFont: ; 1dc000
@@ -24406,363 +12474,8 @@
 INCBIN "gfx/misc/unown_font.2bpp"
 ; 1dc1b0
 
-Function1dc1b0: ; 1dc1b0
-	hlcoord 0, 0
-	ld de, wca90
-	ld bc, 17 * SCREEN_WIDTH
-	call CopyBytes
-	ld hl, wcab5
-	ld a, $62
-	ld [hli], a
-	inc a
-	ld [hl], a
-	ld hl, wcac9
-	ld a, $64
-	ld [hli], a
-	inc a
-	ld [hl], a
-	ld hl, wcb45
-	ld a, " "
-	ld [hli], a
-	ld [hl], a
-	ld hl, wcb59
-	ld a, $61
-	ld [hli], a
-	ld [hl], a
-	ld hl, wcb6e
-	lb bc, 5, 18
-	call ClearBox
-	ld a, [wd265]
-	dec a
-	call CheckCaughtMon
-	push af
-	ld a, [wd265]
-	ld b, a
-	ld c, $1
-	callba Function44355
-	pop af
-	ld a, b
-	ld hl, wcb6d
-	call nz, FarString
-	ld hl, wcaa3
-	ld [hl], $35
-	ld de, SCREEN_WIDTH
-	add hl, de
-	ld b, $f
-.asm_1dc20a
-	ld [hl], $37
-	add hl, de
-	dec b
-	jr nz, .asm_1dc20a
-	ld [hl], $3a
-	ret
-; 1dc213
+INCLUDE "misc/printer_77.asm"
 
-Function1dc213: ; 1dc213
-	ld hl, wca90
-	ld bc, $a0
-	ld a, " "
-	call ByteFill
-	ld hl, wca90
-	ld a, $36
-	ld b, $6
-	call Function1dc26a
-	ld hl, wcaa3
-	ld a, $37
-	ld b, $6
-	call Function1dc26a
-	ld hl, wcb08
-	ld [hl], $38
-	inc hl
-	ld a, $39
-	ld bc, SCREEN_HEIGHT
-	call ByteFill
-	ld [hl], $3a
-	ld hl, wcb1c
-	ld bc, SCREEN_WIDTH
-	ld a, $32
-	call ByteFill
-	ld a, [wd265]
-	dec a
-	call CheckCaughtMon
-	push af
-	ld a, [wd265]
-	ld b, a
-	ld c, $2
-	callba Function44355
-	pop af
-	ld hl, wcaa5
-	ld a, b
-	call nz, FarString
-	ret
-; 1dc26a
-
-Function1dc26a: ; 1dc26a
-	push de
-	ld de, SCREEN_WIDTH
-.asm_1dc26e
-	ld [hl], a
-	add hl, de
-	dec b
-	jr nz, .asm_1dc26e
-	pop de
-	ret
-; 1dc275
-
-GBPrinterStrings:
-String_1dc275: db "@"
-String_1dc276: next " CHECKING LINK...@"
-String_1dc289: next "  TRANSMITTING...@"
-String_1dc29c: next "    PRINTING...@"
-String_1dc2ad:
-	db   " Printer Error 1"
-	next ""
-	next "Check the Game Boy"
-	next "Printer Manual."
-	db   "@"
-String_1dc2e2:
-	db   " Printer Error 2"
-	next ""
-	next "Check the Game Boy"
-	next "Printer Manual."
-	db   "@"
-String_1dc317:
-	db   " Printer Error 3"
-	next ""
-	next "Check the Game Boy"
-	next "Printer Manual."
-	db   "@"
-String_1dc34c:
-	db   " Printer Error 4"
-	next ""
-	next "Check the Game Boy"
-	next "Printer Manual."
-	db   "@"
-; 1dc381
-
-Function1dc381: ; 1dc381
-	call ClearBGPalettes
-	call ClearTileMap
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	call LoadFontsBattleExtra
-
-	ld de, MobileHPIcon
-	ld hl, VTiles2 tile $71
-	lb bc, BANK(MobileHPIcon), 1
-	call Request1bpp
-
-	ld de, MobileLvIcon
-	ld hl, VTiles2 tile $6e
-	lb bc, BANK(MobileLvIcon), 1
-	call Request1bpp
-
-	ld de, ShinyIcon
-	ld hl, VTiles2 tile $3f
-	lb bc, BANK(ShinyIcon), 1
-	call Get2bpp
-
-	xor a
-	ld [MonType], a
-	callba CopyPkmnToTempMon
-	hlcoord 0, 7
-	ld b, 9
-	ld c, 18
-	call TextBox
-	hlcoord 8, 2
-	ld a, [TempMonLevel]
-	call Function383d
-	hlcoord 12, 2
-	ld [hl], "◀" ; Filled left triangle
-	inc hl
-	ld de, TempMonMaxHP
-	lb bc, 2, 3
-	call PrintNum
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	ld [CurSpecies], a
-	ld hl, PartyMonNicknames
-	call Function1dc50e
-	hlcoord 8, 4
-	call PlaceString
-	hlcoord 9, 6
-	ld [hl], "/"
-	call GetPokemonName
-	hlcoord 10, 6
-	call PlaceString
-	hlcoord 8, 0
-	ld [hl], "№"
-	inc hl
-	ld [hl], "."
-	inc hl
-	ld de, wd265
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
-	call PrintNum
-	hlcoord 1, 9
-	ld de, String1dc550
-	call PlaceString
-	ld hl, PartyMonOT
-	call Function1dc50e
-	hlcoord 4, 9
-	call PlaceString
-	hlcoord 1, 11
-	ld de, String1dc559
-	call PlaceString
-	hlcoord 4, 11
-	ld de, TempMonID
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
-	call PrintNum
-	hlcoord 1, 14
-	ld de, String1dc554
-	call PlaceString
-	hlcoord 7, 14
-	ld a, [TempMonMoves + 0]
-	call Function1dc51a
-	call Function1dc52c
-	ld hl, TempMonDVs
-	predef GetUnownLetter
-	ld hl, wc2c6
-	xor a
-	ld [hl], a
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr z, .asm_1dc469
-	inc [hl]
-
-.asm_1dc469
-	hlcoord 0, 0
-	call _PrepMonFrontpic
-	call WaitBGMap
-	ld b, SCGB_03
-	call GetSGBLayout
-	call SetPalettes
-	ret
-; 1dc47b
-
-Function1dc47b: ; 1dc47b
-	call ClearBGPalettes
-	call ClearTileMap
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	call LoadFontsBattleExtra
-	xor a
-	ld [MonType], a
-	callba CopyPkmnToTempMon
-	hlcoord 0, 0
-	ld b, 15
-	ld c, 18
-	call TextBox
-	ld bc, SCREEN_WIDTH
-	decoord 0, 0
-	hlcoord 0, 1
-	call CopyBytes
-	hlcoord 7, 0
-	ld a, [TempMonMoves + 1]
-	call Function1dc51a
-	hlcoord 7, 2
-	ld a, [TempMonMoves + 2]
-	call Function1dc51a
-	hlcoord 7, 4
-	ld a, [TempMonMoves + 3]
-	call Function1dc51a
-	hlcoord 7, 7
-	ld de, String1dc55d
-	call PlaceString
-	hlcoord 16, 7
-	ld de, TempMonAttack
-	call .PrintTempMonStats
-	hlcoord 16, 9
-	ld de, TempMonDefense
-	call .PrintTempMonStats
-	hlcoord 16, 11
-	ld de, TempMonSpclAtk
-	call .PrintTempMonStats
-	hlcoord 16, 13
-	ld de, TempMonSpclDef
-	call .PrintTempMonStats
-	hlcoord 16, 15
-	ld de, TempMonSpeed
-	call .PrintTempMonStats
-	call WaitBGMap
-	ld b, SCGB_03
-	call GetSGBLayout
-	call SetPalettes
-	ret
-; 1dc507
-
-.PrintTempMonStats: ; 1dc507
-	lb bc, 2, 3
-	call PrintNum
-	ret
-; 1dc50e
-
-Function1dc50e: ; 1dc50e
-	ld bc, NAME_LENGTH
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld e, l
-	ld d, h
-	ret
-; 1dc51a
-
-Function1dc51a: ; 1dc51a
-	and a
-	jr z, .no_move
-
-	ld [wd265], a
-	call GetMoveName
-	jr .got_string
-
-.no_move
-	ld de, String1dc584
-
-.got_string
-	call PlaceString
-	ret
-; 1dc52c
-
-Function1dc52c: ; 1dc52c
-	callba GetGender
-	ld a, " "
-	jr c, .got_gender
-	ld a, "♂"
-	jr nz, .got_gender
-	ld a, "♀"
-
-.got_gender
-	hlcoord 17, 2
-	ld [hl], a
-	ld bc, TempMonDVs
-	callba CheckShininess
-	ret nc
-	hlcoord 18, 2
-	ld [hl], "<SHINY>"
-	ret
-; 1dc550
-
-String1dc550: ; 1dc550
-	db "OT/@"
-
-String1dc554: ; 1dc554
-	db "MOVE@"
-
-String1dc559: ; 1dc559
-	db "<ID>№.@"
-
-String1dc55d: ; 1dc55d
-	db   "ATTACK"
-	next "DEFENSE"
-	next "SPCL.ATK"
-	next "SPCL.DEF"
-	next "SPEED"
-	db   "@"
-
-String1dc584: ; 1dc584
-	db "------------@"
-; 1dc591
-
 MobileHPIcon: ; 1dc591
 INCBIN "gfx/mobile/hp.1bpp"
 
@@ -24769,14 +12482,10 @@
 MobileLvIcon: ; 1dc599
 INCBIN "gfx/mobile/lv.1bpp"
 
-
-
 SECTION "Tileset Data 7", ROMX, BANK[TILESETS_7]
 
 INCLUDE "tilesets/data_7.asm"
 
-
-
 SECTION "bank77_2", ROMX, BANK[$77]
 
 Function1dd6a9: ; 1dd6a9
@@ -24846,11 +12555,9 @@
 String_PM: db "PM@" ; 1dd6ff
 ; 1dd702
 
-
 INCLUDE "engine/diploma.asm"
 
-
-Function1ddf1c: ; 1ddf1c
+LoadSGBPokedexGFX: ; 1ddf1c
 	ld hl, LZ_1ddf33
 	ld de, VTiles2 tile $31
 	call Decompress
@@ -24866,21 +12573,21 @@
 ; 1ddf33 (77:5f33)
 
 LZ_1ddf33: ; 1ddf33
-INCBIN "gfx/unknown/1ddf33.2bpp.lz"
+INCBIN "gfx/pokedex/sgb.2bpp.lz"
 ; 1de0d7
 
-Function1de0d7: ; 1de0d7
-	ld hl, LZ_1de0e1
+LoadQuestionMarkPic: ; 1de0d7
+	ld hl, .QuestionMarkLZ
 	ld de, sScratch
 	call Decompress
 	ret
 ; 1de0e1
 
-LZ_1de0e1: ; 1de0e1
-INCBIN "gfx/unknown/1de0e1.2bpp.lz"
+.QuestionMarkLZ: ; 1de0e1
+INCBIN "gfx/pics/questionmark/front.2bpp.lz"
 ; 1de171
 
-Function1de171: ; 1de171 (77:6171)
+DrawPokedexListWindow: ; 1de171 (77:6171)
 	ld a, $32
 	hlcoord 0, 17
 	ld bc, 12
@@ -24890,46 +12597,49 @@
 	call ClearBox
 	ld a, $34
 	hlcoord 0, 0
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	ld a, $39
 	hlcoord 0, 16
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	hlcoord 5, 0
 	ld [hl], $3f
 	hlcoord 5, 16
 	ld [hl], $40
-	ld a, [wc7d4]
-	cp $1
-	jr z, .asm_1de1bf
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .OldMode
+; scroll bar
 	hlcoord 11, 0
 	ld [hl], $50
 	ld a, $51
 	hlcoord 11, 1
 	ld b, SCREEN_HEIGHT - 3
-	call Function1de27f
+	call Bank77_FillColumn
 	ld [hl], $52
-	jr .asm_1de1d0
-.asm_1de1bf
+	jr .Done
+
+.OldMode
+; no scroll bar
 	hlcoord 11, 0
 	ld [hl], $66
 	ld a, $67
 	hlcoord 11, 1
 	ld b, SCREEN_HEIGHT - 3
-	call Function1de27f
+	call Bank77_FillColumn
 	ld [hl], $68
-.asm_1de1d0
+.Done
 	ret
 
-Function1de1d1: ; 1de1d1 (77:61d1)
+DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
 	ld a, $34
 	hlcoord 0, 0
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	ld a, $39
 	hlcoord 0, 10
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	hlcoord 5, 0
 	ld [hl], $3f
@@ -24940,15 +12650,15 @@
 	ld a, $67
 	hlcoord 11, 1
 	ld b, SCREEN_HEIGHT / 2
-	call Function1de27f
+	call Bank77_FillColumn
 	ld [hl], $68
 	ld a, $34
 	hlcoord 0, 11
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	ld a, $39
 	hlcoord 0, 17
-	ld bc, $b
+	ld bc, 11
 	call ByteFill
 	hlcoord 11, 11
 	ld [hl], $66
@@ -24955,20 +12665,21 @@
 	ld a, $67
 	hlcoord 11, 12
 	ld b, 5
-	call Function1de27f
+	call Bank77_FillColumn
 	ld [hl], $68
 	hlcoord 0, 12
 	lb bc, 5, 11
 	call ClearBox
-	ld de, String_1de23c
+	ld de, .esults_D
 	hlcoord 0, 12
 	call PlaceString
 	ret
 ; 1de23c (77:623c)
 
-String_1de23c: ; 1de23c
-; At a glance, this is less coherent in the Japanese charset.
+.esults_D: ; 1de23c
+; (SEARCH R)
 	db   "ESULTS<NEXT>"
+; (### FOUN)
 	next "D!@"
 ; 1de247
 
@@ -24987,8 +12698,8 @@
 	ld [hl], $66
 	hlcoord 19, 1
 	ld a, $67
-	ld b, SCREEN_HEIGHT - 3
-	call Function1de27f
+	ld b, 15
+	call Bank77_FillColumn
 	ld [hl], $68
 	hlcoord 19, 17
 	ld [hl], $3c
@@ -24995,8 +12706,8 @@
 	xor a
 	ld b, SCREEN_HEIGHT
 	hlcoord 19, 0, AttrMap
-	call Function1de27f
-	call Function3200
+	call Bank77_FillColumn
+	call WaitBGMap2
 	pop hl
 	ld a, l
 	ld [hBGMapAddress], a
@@ -25005,7 +12716,7 @@
 	ret
 ; 1de27f
 
-Function1de27f: ; 1de27f
+Bank77_FillColumn: ; 1de27f
 	push de
 	ld de, SCREEN_WIDTH
 .loop
@@ -25017,8 +12728,6 @@
 	ret
 ; 1de28a
 
-
-
 _DudeAutoInput_A:: ; 1de28a
 	ld hl, DudeAutoInput_A
 	jr _DudeAutoInput
@@ -25040,7 +12749,6 @@
 	ret
 ; 1de29f
 
-
 DudeAutoInputs:
 
 DudeAutoInput_A: ; 1de29f
@@ -25071,7 +12779,6 @@
 	db NO_INPUT, $ff ; end
 ; 1de2c5
 
-
 Function1de2c5: ; 1de2c5
 	ld hl, StringBuffer1
 .loop
@@ -25233,28 +12940,22 @@
 	ret
 ; 1df238
 
-
 SECTION "Tileset Data 8", ROMX, BANK[TILESETS_8]
 
 INCLUDE "tilesets/data_8.asm"
 
-
 SECTION "bank79", ROMX, BANK[$79]
 
-
 SECTION "bank7A", ROMX, BANK[$7A]
 
-
 SECTION "bank7B", ROMX, BANK[$7B]
 
 INCLUDE "text/battle_tower.asm"
 
-
 SECTION "bank7C", ROMX, BANK[$7C]
 
 INCLUDE "data/battle_tower_2.asm"
 
-
 SECTION "bank7D", ROMX, BANK[$7D]
 
 	db $cc, $6b, $1e ; XXX
@@ -25301,15 +13002,12 @@
 Unknown_1f5db4:
 INCBIN "unknown/1f5db4.bin"
 
-
 SECTION "bank7E", ROMX, BANK[$7E]
 
 INCLUDE "data/battle_tower.asm"
 INCLUDE "data/odd_eggs.asm"
 
-
 SECTION "bank7F", ROMX, BANK[$7F]
-
 
 SECTION "stadium2", ROMX[$8000-$220], BANK[$7F]
 
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const AZALEAGYM_BUGSY
+	const AZALEAGYM_BUG_CATCHER1
+	const AZALEAGYM_BUG_CATCHER2
+	const AZALEAGYM_BUG_CATCHER3
+	const AZALEAGYM_TWIN1
+	const AZALEAGYM_TWIN2
+	const AZALEAGYM_GYM_GUY
+
 AzaleaGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,21 +16,21 @@
 
 BugsyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_BUGSY
 	iftrue .FightDone
 	writetext BugsyText_INeverLose
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext BugsyText_ResearchIncomplete, 0
 	loadtrainer BUGSY, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_BUGSY
-	loadfont
+	opentext
 	writetext Text_ReceivedHiveBadge
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_HIVEBADGE
 	checkcode VAR_BADGES
 	scall AzaleaGymTriggerRockets
@@ -33,20 +42,20 @@
 	setevent EVENT_BEAT_BUG_CATCHER_AL
 	setevent EVENT_BEAT_BUG_CATCHER_JOSH
 	writetext BugsyText_HiveBadgeSpeech
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_FURY_CUTTER
 	iffalse .NoRoomForFuryCutter
 	setevent EVENT_GOT_TM49_FURY_CUTTER
 	writetext BugsyText_FuryCutterSpeech
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GotFuryCutter:
 	writetext BugsyText_BugMonsAreDeep
-	closetext
+	waitbutton
 .NoRoomForFuryCutter:
-	loadmovesprites
+	closetext
 	end
 
 AzaleaGymTriggerRockets:
@@ -64,11 +73,11 @@
 	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY1, TwinsAmyandmay1SeenText, TwinsAmyandmay1BeatenText, 0, .AfterScript
 
 .AfterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext TwinsAmyandmay1AfterBattleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsAmyandmay2:
@@ -75,11 +84,11 @@
 	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY2, TwinsAmyandmay2SeenText, TwinsAmyandmay2BeatenText, 0, .AfterScript
 
 .AfterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext TwinsAmyandmay2AfterBattleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherbenny:
@@ -86,11 +95,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_BENNY, BUG_CATCHER, BUG_CATCHER_BENNY, Bug_catcherbennySeenText, Bug_catcherbennyBeatenText, 0, .AfterScript
 
 .AfterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext Bug_catcherbennyAfterBattleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherAl:
@@ -97,11 +106,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_AL, BUG_CATCHER, AL, Bug_catcherAlSeenText, Bug_catcherAlBeatenText, 0, .AfterScript
 
 .AfterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext Bug_catcherAlAfterBattleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherJosh:
@@ -108,11 +117,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_JOSH, BUG_CATCHER, JOSH, Bug_catcherJoshSeenText, Bug_catcherJoshBeatenText, 0, .AfterScript
 
 .AfterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext Bug_catcherJoshAfterBattleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AzaleaGymGuyScript:
@@ -119,17 +128,17 @@
 	faceplayer
 	checkevent EVENT_BEAT_BUGSY
 	iftrue .AzaleaGymGuyWinScript
-	loadfont
+	opentext
 	writetext AzaleaGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AzaleaGymGuyWinScript
-	loadfont
+	opentext
 	writetext AzaleaGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AzaleaGymStatue:
--- a/maps/AzaleaMart.asm
+++ b/maps/AzaleaMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const AZALEAMART_CLERK
+	const AZALEAMART_COOLTRAINER_M
+	const AZALEAMART_BUG_CATCHER
+
 AzaleaMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x18e040:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_AZALEA
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x18e047:
--- a/maps/AzaleaPokeCenter1F.asm
+++ b/maps/AzaleaPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const AZALEAPOKECENTER1F_NURSE
+	const AZALEAPOKECENTER1F_GENTLEMAN
+	const AZALEAPOKECENTER1F_FISHING_GURU
+	const AZALEAPOKECENTER1F_POKEFAN_F
+
 AzaleaPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 1
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -1,11 +1,25 @@
+const_value set 2
+	const AZALEATOWN_AZALEA_ROCKET1
+	const AZALEATOWN_GRAMPS
+	const AZALEATOWN_TEACHER
+	const AZALEATOWN_YOUNGSTER
+	const AZALEATOWN_SLOWPOKE1
+	const AZALEATOWN_SLOWPOKE2
+	const AZALEATOWN_SLOWPOKE3
+	const AZALEATOWN_SLOWPOKE4
+	const AZALEATOWN_FRUIT_TREE
+	const AZALEATOWN_SILVER
+	const AZALEATOWN_AZALEA_ROCKET3
+	const AZALEATOWN_KURT_OUTSIDE
+
 AzaleaTown_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
-	dw .Trigger3, 0
 
 .MapCallbacks:
 	db 1
@@ -13,6 +27,9 @@
 	; callbacks
 	dbw 5, .Flypoint
 
+.Trigger0
+	end
+
 .Trigger1
 	end
 
@@ -19,158 +36,155 @@
 .Trigger2
 	end
 
-.Trigger3
-	end
-
 .Flypoint
 	setflag ENGINE_FLYPOINT_AZALEA
 	return
 
-UnknownScript_0x198018:
-	moveperson $b, $b, $b
+AzaleaTownRivalBattleTrigger1:
+	moveperson AZALEATOWN_SILVER, $b, $b
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	appear $b
-	applymovement $b, MovementData_0x198134
+	appear AZALEATOWN_SILVER
+	applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleApproachMovement1
 	spriteface PLAYER, DOWN
-	jump UnknownScript_0x198049
+	jump AzaleaTownRivalBattleScript
 
-UnknownScript_0x198034:
+AzaleaTownRivalBattleTrigger2:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	appear $b
-	applymovement $b, MovementData_0x19813c
+	appear AZALEATOWN_SILVER
+	applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleApproachMovement2
 	spriteface PLAYER, UP
-UnknownScript_0x198049:
+AzaleaTownRivalBattleScript:
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
-	writetext UnknownText_0x19814d
+	opentext
+	writetext AzaleaTownRivalBeforeText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RIVAL_AZALEA_TOWN
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue UnknownScript_0x198071
+	iftrue .Totodile
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue UnknownScript_0x198081
-	winlosstext UnknownText_0x1981e6, UnknownText_0x19835b
-	setlasttalked $b
+	iftrue .Chikorita
+	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+	setlasttalked AZALEATOWN_SILVER
 	loadtrainer RIVAL1, RIVAL1_6
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x198091
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .AfterBattle
 
-UnknownScript_0x198071:
-	winlosstext UnknownText_0x1981e6, UnknownText_0x19835b
-	setlasttalked $b
+.Totodile:
+	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+	setlasttalked AZALEATOWN_SILVER
 	loadtrainer RIVAL1, RIVAL1_4
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x198091
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .AfterBattle
 
-UnknownScript_0x198081:
-	winlosstext UnknownText_0x1981e6, UnknownText_0x19835b
-	setlasttalked $b
+.Chikorita:
+	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+	setlasttalked AZALEATOWN_SILVER
 	loadtrainer RIVAL1, RIVAL1_5
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x198091
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .AfterBattle
 
-UnknownScript_0x198091:
+.AfterBattle:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x198233
+	opentext
+	writetext AzaleaTownRivalAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, LEFT
-	applymovement $b, MovementData_0x198144
+	applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleExitMovement
 	playsound SFX_EXIT_BUILDING
-	disappear $b
+	disappear AZALEATOWN_SILVER
 	dotrigger $0
-	waitbutton
+	waitsfx
 	playmapmusic
 	end
 
-AzaleaRocketScript_0x1980ab:
-	jumptextfaceplayer UnknownText_0x19837b
+AzaleaTownRocket1Script:
+	jumptextfaceplayer GoodSamaritanRocketText
 
-AzaleaRocketScript_0x1980ae:
-	jumptextfaceplayer UnknownText_0x1983c7
+AzaleaTownRocket2Script:
+	jumptextfaceplayer TastySlowpokeTailRocketText
 
-GrampsScript_0x1980b1:
+AzaleaTownGrampsScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
-	iftrue UnknownScript_0x1980bf
-	writetext UnknownText_0x19841b
+	iftrue .ClearedWell
+	writetext AzaleaTownGrampsTextBefore
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1980bf:
-	writetext UnknownText_0x198473
+.ClearedWell:
+	writetext AzaleaTownGrampsTextAfter
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-TeacherScript_0x1980c5:
-	jumptextfaceplayer UnknownText_0x1984ce
+AzaleaTownTeacherScript:
+	jumptextfaceplayer AzaleaTownTeacherText
 
-YoungsterScript_0x1980c8:
-	jumptextfaceplayer UnknownText_0x19851a
+AzaleaTownYoungsterScript:
+	jumptextfaceplayer AzaleaTownYoungsterText
 
-SlowpokeScript_0x1980cb:
-	loadfont
-	writetext UnknownText_0x1985b0
+AzaleaTownSlowpokeScript:
+	opentext
+	writetext AzaleaTownSlowpokeText1
 	pause 60
-	writetext UnknownText_0x1985c3
+	writetext AzaleaTownSlowpokeText2
 	cry SLOWPOKE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WoosterScript:
 ; unused
 	faceplayer
-	loadfont
+	opentext
 	writetext WoosterText
 	cry QUAGSIRE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1980e5:
-	applymovement PLAYER, MovementData_0x198148
-	loadfont
-	writetext UnknownText_0x1985df
-	keeptextopen
-	spriteface $d, RIGHT
-	writetext UnknownText_0x19860b
-	keeptextopen
-	writetext UnknownText_0x198628
-	closetext
+AzaleaTown_CelebiEventScript:
+	applymovement PLAYER, Movement_PlayerWalksOutOfKurtsHouse
+	opentext
+	writetext IlexForestIsRestlessText
+	buttonsound
+	spriteface AZALEATOWN_KURT_OUTSIDE, RIGHT
+	writetext HeresTheGSBallBackText
+	buttonsound
+	writetext PleaseInvestigateIlexForestText
+	waitbutton
 	verbosegiveitem GS_BALL
-	spriteface $d, LEFT
+	spriteface AZALEATOWN_KURT_OUTSIDE, LEFT
 	setflag ENGINE_HAVE_EXAMINED_GS_BALL
 	clearevent EVENT_ILEX_FOREST_LASS
 	setevent EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
 	dotrigger $0
-	loadmovesprites
+	closetext
 	end
 
-KurtOutsideScript_0x19810c:
+AzaleaTownKurtScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x198628
+	opentext
+	writetext PleaseInvestigateIlexForestText
+	waitbutton
+	spriteface AZALEATOWN_KURT_OUTSIDE, LEFT
 	closetext
-	spriteface $d, LEFT
-	loadmovesprites
 	end
 
 AzaleaTownSign:
@@ -200,11 +214,11 @@
 WhiteApricornTree:
 	fruittree FRUITTREE_AZALEA_TOWN
 
-MapAzaleaTownSignpostItem8:
+AzaleaTownHiddenFullHeal:
 	dwb EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
-MovementData_0x198134:
+AzaleaTownRivalBattleApproachMovement1:
 	step_left
 	step_left
 	step_left
@@ -214,7 +228,7 @@
 	turn_head_up
 	step_end
 
-MovementData_0x19813c:
+AzaleaTownRivalBattleApproachMovement2:
 	step_left
 	step_left
 	step_left
@@ -224,13 +238,13 @@
 	turn_head_down
 	step_end
 
-MovementData_0x198144:
+AzaleaTownRivalBattleExitMovement:
 	step_left
 	step_left
 	step_left
 	step_end
 
-MovementData_0x198148:
+Movement_PlayerWalksOutOfKurtsHouse:
 	step_left
 	step_left
 	step_up
@@ -237,7 +251,7 @@
 	turn_head_left
 	step_end
 
-UnknownText_0x19814d:
+AzaleaTownRivalBeforeText:
 	text "…Tell me some-"
 	line "thing."
 
@@ -254,7 +268,7 @@
 	cont "good you are."
 	done
 
-UnknownText_0x1981e6:
+AzaleaTownRivalWinText:
 	text "… Humph! Useless"
 	line "#MON!"
 
@@ -265,7 +279,7 @@
 	line "weak."
 	done
 
-UnknownText_0x198233:
+AzaleaTownRivalAfterText:
 	text "I hate the weak."
 
 	para "#MON, trainers."
@@ -295,12 +309,12 @@
 	line "distraction."
 	done
 
-UnknownText_0x19835b:
+AzaleaTownRivalLossText:
 	text "…Humph! I knew"
 	line "you were lying."
 	done
 
-UnknownText_0x19837b:
+GoodSamaritanRocketText:
 	text "It's unsafe to go"
 	line "in there, so I'm"
 	cont "standing guard."
@@ -309,7 +323,7 @@
 	line "Samaritan?"
 	done
 
-UnknownText_0x1983c7:
+TastySlowpokeTailRocketText:
 	text "Do you know about"
 	line "SLOWPOKETAIL? I"
 	cont "heard it's tasty!"
@@ -318,7 +332,7 @@
 	line "told you that?"
 	done
 
-UnknownText_0x19841b:
+AzaleaTownGrampsTextBefore:
 	text "The SLOWPOKE have"
 	line "disappeared from"
 	cont "town…"
@@ -328,7 +342,7 @@
 	cont "sold somewhere."
 	done
 
-UnknownText_0x198473:
+AzaleaTownGrampsTextAfter:
 	text "The SLOWPOKE have"
 	line "returned."
 
@@ -339,7 +353,7 @@
 	line "where."
 	done
 
-UnknownText_0x1984ce:
+AzaleaTownTeacherText:
 	text "Did you come to"
 	line "get KURT to make"
 	cont "some BALLS?"
@@ -348,7 +362,7 @@
 	line "just that."
 	done
 
-UnknownText_0x19851a:
+AzaleaTownYoungsterText:
 	text "Cut through AZALEA"
 	line "and you'll be in"
 	cont "ILEX FOREST."
@@ -364,13 +378,13 @@
 	cont "down trees."
 	done
 
-UnknownText_0x1985b0:
+AzaleaTownSlowpokeText1:
 	text "SLOWPOKE: …"
 
 	para "<......> <......> <......>"
 	done
 
-UnknownText_0x1985c3:
+AzaleaTownSlowpokeText2:
 	text "<......> <......>Yawn?"
 	done
 
@@ -378,7 +392,7 @@
 	text "WOOSTER: Gugyoo…"
 	done
 
-UnknownText_0x1985df:
+IlexForestIsRestlessText:
 	text "ILEX FOREST is"
 	line "restless!"
 
@@ -385,12 +399,12 @@
 	para "What is going on?"
 	done
 
-UnknownText_0x19860b:
+HeresTheGSBallBackText:
 	text "<PLAYER>, here's"
 	line "your GS BALL back!"
 	done
 
-UnknownText_0x198628:
+PleaseInvestigateIlexForestText:
 	text "Could you go see"
 	line "why ILEX FOREST is"
 	cont "so restless?"
@@ -463,9 +477,9 @@
 
 .XYTriggers:
 	db 3
-	xy_trigger 1, $a, $5, $0, UnknownScript_0x198018, $0, $0
-	xy_trigger 1, $b, $5, $0, UnknownScript_0x198034, $0, $0
-	xy_trigger 2, $6, $9, $0, UnknownScript_0x1980e5, $0, $0
+	xy_trigger 1, $a, $5, $0, AzaleaTownRivalBattleTrigger1, $0, $0
+	xy_trigger 1, $b, $5, $0, AzaleaTownRivalBattleTrigger2, $0, $0
+	xy_trigger 2, $6, $9, $0, AzaleaTown_CelebiEventScript, $0, $0
 
 .Signposts:
 	db 9
@@ -477,19 +491,19 @@
 	signpost 9, 16, SIGNPOST_READ, AzaleaTownPokeCenterSign
 	signpost 5, 22, SIGNPOST_READ, AzaleaTownMartSign
 	signpost 9, 3, SIGNPOST_READ, AzaleaTownIlextForestSign
-	signpost 6, 31, SIGNPOST_ITEM, MapAzaleaTownSignpostItem8
+	signpost 6, 31, SIGNPOST_ITEM, AzaleaTownHiddenFullHeal
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_AZALEA_ROCKET, 9, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaRocketScript_0x1980ab, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
-	person_event SPRITE_GRAMPS, 9, 21, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1980b1, -1
-	person_event SPRITE_TEACHER, 13, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1980c5, -1
-	person_event SPRITE_YOUNGSTER, 9, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1980c8, -1
-	person_event SPRITE_SLOWPOKE, 17, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 9, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 9, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_AZALEA_ROCKET, 9, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownRocket1Script, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
+	person_event SPRITE_GRAMPS, 9, 21, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownGrampsScript, -1
+	person_event SPRITE_TEACHER, 13, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, AzaleaTownTeacherScript, -1
+	person_event SPRITE_YOUNGSTER, 9, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, AzaleaTownYoungsterScript, -1
+	person_event SPRITE_SLOWPOKE, 17, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 9, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 9, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
 	person_event SPRITE_FRUIT_TREE, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, WhiteApricornTree, -1
 	person_event SPRITE_AZALEA_ROCKET, 10, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_AZALEA_TOWN
-	person_event SPRITE_AZALEA_ROCKET, 16, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaRocketScript_0x1980ae, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_KURT_OUTSIDE, 5, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, KurtOutsideScript_0x19810c, EVENT_AZALEA_TOWN_KURT
+	person_event SPRITE_AZALEA_ROCKET, 16, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownRocket2Script, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_KURT_OUTSIDE, 5, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownKurtScript, EVENT_AZALEA_TOWN_KURT
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const BATTLETOWER1F_RECEPTIONIST
+	const BATTLETOWER1F_YOUNGSTER
+	const BATTLETOWER1F_COOLTRAINER_F
+	const BATTLETOWER1F_BUG_CATCHER
+	const BATTLETOWER1F_GRANNY
+
 BattleTower1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -10,27 +17,27 @@
 	db 0
 
 .Trigger0:
-	writebyte BATTLE_TOWER_ACTION_09
+	writebyte BATTLETOWERACTION_CHECKSAVEFILEISYOURS
 	special BattleTowerAction
 	iffalse .SkipEverything
-	writebyte BATTLE_TOWER_ACTION_02
+	writebyte BATTLETOWERACTION_02 ; copybytetovar sBattleTowerChallengeState
 	special BattleTowerAction
 	if_equal $0, .SkipEverything
 	if_equal $2, .priorityjump1
 	if_equal $3, .SkipEverything
 	if_equal $4, .SkipEverything
-	loadfont
-	writetext UnknownText_0x9f037
+	opentext
+	writetext Text_WeveBeenWaitingForYou
+	waitbutton
 	closetext
-	loadmovesprites
-	priorityjump UnknownScript_0x9e44e
+	priorityjump Script_ResumeBattleTowerChallenge
 	end
 
 .priorityjump1:
 	priorityjump BattleTower_LeftWithoutSaving
-	writebyte BATTLE_TOWER_ACTION_04
+	writebyte BATTLETOWERACTION_CHALLENGECANCELED
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_06
+	writebyte BATTLETOWERACTION_06
 	special BattleTowerAction
 .SkipEverything:
 	dotrigger $1
@@ -38,24 +45,24 @@
 	end
 
 MapBattleTower1FSignpost0Script:
-	loadfont
+	opentext
 	writetext Text_ReadBattleTowerRules
 	yesorno
 	iffalse UnknownScript_0x9e3e0
 	writetext Text_BattleTowerRules
-	closetext
+	waitbutton
 UnknownScript_0x9e3e0:
-	loadmovesprites
+	closetext
 	end
 
 ReceptionistScript_0x9e3e2:
-	writebyte BATTLE_TOWER_ACTION_02
+	writebyte BATTLETOWERACTION_02 ; copybytetovar sBattleTowerChallengeState
 	special BattleTowerAction
-	if_equal $3, BattleTowerBattleRoomScript_0x9f4e4 ; maps/BattleTowerBattleRoom.asm
-	loadfont
+	if_equal $3, Script_BeatenAllTrainers2 ; maps/BattleTowerBattleRoom.asm
+	opentext
 	writetext Text_BattleTowerWelcomesYou
-	keeptextopen
-	writebyte BATTLE_TOWER_ACTION_00
+	buttonsound
+	writebyte BATTLETOWERACTION_00 ; if new save file: bit 1, [sbe4f]
 	special BattleTowerAction
 	if_not_equal $0, Script_Menu_ChallengeExplanationCancel
 	jump Script_BattleTowerIntroductionYesNo
@@ -66,13 +73,13 @@
 	special Special_Menu_ChallengeExplanationCancel
 	if_equal $1, Script_ChoseChallenge
 	if_equal $2, Script_BattleTowerExplanation
-	jump UnknownScript_0x9e4b0
+	jump Script_BattleTowerHopeToServeYouAgain
 
 Script_ChoseChallenge: ; 0x9e40f
-	writebyte BATTLE_TOWER_ACTION_1A ; ResetBattleTowerTrainerSRAM
+	writebyte BATTLETOWERACTION_RESETDATA ; ResetBattleTowerTrainerSRAM
 	special BattleTowerAction
 	special SpecialCheckForBattleTowerRules
-	if_not_equal $0, Script_CloseText
+	if_not_equal $0, Script_WaitButton
 	writetext Text_SaveBeforeEnteringBattleRoom
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
@@ -80,128 +87,128 @@
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
 	dotrigger $1
-	writebyte BATTLE_TOWER_ACTION_01
+	writebyte BATTLETOWERACTION_01 ; set 1, [sbe4f]
 	special BattleTowerAction
 	special Function1700b0
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, UnknownScript_0x9e550
-	writebyte BATTLE_TOWER_ACTION_11
+	writebyte BATTLETOWERACTION_11
 	special BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
+	waitbutton
 	closetext
-	loadmovesprites
-	writebyte BATTLE_TOWER_ACTION_1E
+	writebyte BATTLETOWERACTION_CHOOSEREWARD
 	special BattleTowerAction
-	jump UnknownScript_0x9e454
+	jump Script_WalkToBattleTowerElevator
 
-UnknownScript_0x9e44e:
-	loadmovesprites
-	writebyte BATTLE_TOWER_ACTION_08
+Script_ResumeBattleTowerChallenge:
+	closetext
+	writebyte BATTLETOWERACTION_LOADLEVELGROUP ; load choice of level group
 	special BattleTowerAction
-UnknownScript_0x9e454:
-	musicfadeout MUSIC_NONE, $8
+Script_WalkToBattleTowerElevator:
+	musicfadeout MUSIC_NONE, 8
 	domaptrigger BATTLE_TOWER_BATTLE_ROOM, $0
 	domaptrigger BATTLE_TOWER_ELEVATOR, $0
 	domaptrigger BATTLE_TOWER_HALLWAY, $0
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x9e571
-	writebyte BATTLE_TOWER_ACTION_0A
+	follow BATTLETOWER1F_RECEPTIONIST, PLAYER
+	applymovement BATTLETOWER1F_RECEPTIONIST, MovementData_BattleTower1FWalkToElevator
+	writebyte BATTLETOWERACTION_0A
 	special BattleTowerAction
 	warpsound
-	disappear $2
+	disappear BATTLETOWER1F_RECEPTIONIST
 	stopfollow
-	applymovement PLAYER, MovementData_0x9e576
+	applymovement PLAYER, MovementData_BattleTowerHallwayPlayerEntersBattleRoom
 	warpcheck
 	end
 
 Script_GivePlayerHisPrize: ; 0x9e47a
-	writebyte BATTLE_TOWER_ACTION_1C
+	writebyte BATTLETOWERACTION_1C
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_1B
+	writebyte BATTLETOWERACTION_GIVEREWARD
 	special BattleTowerAction
 	if_equal POTION, Script_YourPackIsStuffedFull
 	itemtotext $0, $1
 	giveitem ITEM_FROM_MEM, 5
 	writetext Text_PlayerGotFive
-	writebyte BATTLE_TOWER_ACTION_1D
+	writebyte BATTLETOWERACTION_1D
 	special BattleTowerAction
-	loadmovesprites
+	closetext
 	end
 
 Script_YourPackIsStuffedFull: ; 0x9e498
 	writetext Text_YourPackIsStuffedFull
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Script_BattleTowerIntroductionYesNo: ; 0x9e49e
 	writetext Text_WouldYouLikeToHearAboutTheBattleTower
 	yesorno
-	iffalse UnknownScript_0x9e4a8
+	iffalse Script_BattleTowerSkipExplanation
 Script_BattleTowerExplanation: ; 0x9e4a5
 	writetext Text_BattleTowerIntroduction_2
-UnknownScript_0x9e4a8:
-	writebyte BATTLE_TOWER_ACTION_01
+Script_BattleTowerSkipExplanation:
+	writebyte BATTLETOWERACTION_01
 	special BattleTowerAction
 	jump Script_Menu_ChallengeExplanationCancel
 
-UnknownScript_0x9e4b0:
+Script_BattleTowerHopeToServeYouAgain:
 	writetext Text_WeHopeToServeYouAgain
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x9e4b6:
+UnreferencedScript_0x9e4b6:
 	special Function17f53d
-	loadmovesprites
+	closetext
 	end
 
-Script_CloseText: ; 0x9e4bb
+Script_WaitButton: ; 0x9e4bb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
-UnknownScript_0x9e4be:
+UnreferencedScript_0x9e4be:
 	writetext Text_SaveBeforeEnteringBattleRoom
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
-	writebyte BATTLE_TOWER_ACTION_01
+	writebyte BATTLETOWERACTION_01
 	special BattleTowerAction
 	special Function1700ba
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, UnknownScript_0x9e550
 	writetext Text_ReceivedAListOfLeadersOnTheHonorRoll
-	spriteface $2, LEFT
+	spriteface BATTLETOWER1F_RECEPTIONIST, LEFT
 	writetext Text_PleaseConfirmOnThisMonitor
+	waitbutton
+	spriteface BATTLETOWER1F_RECEPTIONIST, DOWN
 	closetext
-	spriteface $2, DOWN
-	loadmovesprites
 	end
 
-UnknownScript_0x9e4ea:
-	writebyte BATTLE_TOWER_ACTION_18
+UnreferencedScript_0x9e4ea:
+	writebyte BATTLETOWERACTION_18
 	special BattleTowerAction
 	if_not_equal $0, Script_APkmnLevelExceeds
-	writebyte BATTLE_TOWER_ACTION_19
+	writebyte BATTLETOWERACTION_19
 	special BattleTowerAction
 	if_not_equal $0, Script_MayNotEnterABattleRoomUnderL70
 	special SpecialCheckForBattleTowerRules
-	if_not_equal $0, Script_CloseText
-	writebyte BATTLE_TOWER_ACTION_05
+	if_not_equal $0, Script_WaitButton
+	writebyte BATTLETOWERACTION_05
 	special BattleTowerAction
-	if_equal $0, UnknownScript_0x9e512
-	writetext UnknownText_0x9ecb0
-	jump UnknownScript_0x9e515
+	if_equal $0, .zero
+	writetext Text_CantBeRegistered_PreviousRecordDeleted
+	jump continue
 
-UnknownScript_0x9e512:
-	writetext UnknownText_0x9ec6d
-UnknownScript_0x9e515:
+.zero:
+	writetext Text_CantBeRegistered
+continue:
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
-	writetext UnknownText_0x9ef79
+	writetext Text_SaveBeforeReentry
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
 	dotrigger $0
@@ -208,47 +215,47 @@
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
 	dotrigger $1
-	writebyte BATTLE_TOWER_ACTION_06
+	writebyte BATTLETOWERACTION_06
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_12
+	writebyte BATTLETOWERACTION_12
 	special BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
-	closetext
-	jump UnknownScript_0x9e44e
+	waitbutton
+	jump Script_ResumeBattleTowerChallenge
 
-UnknownScript_0x9e53b:
-	writetext UnknownText_0x9f076
-	closetext
-	jump UnknownScript_0x9e4b0
+UnreferencedScript_0x9e53b:
+	writetext Text_FiveDayBattleLimit_Mobile
+	waitbutton
+	jump Script_BattleTowerHopeToServeYouAgain
 
 Script_APkmnLevelExceeds: ; 0x9e542
 	writetext Text_APkmnLevelExceeds
-	closetext
+	waitbutton
 	jump Script_Menu_ChallengeExplanationCancel
 
 Script_MayNotEnterABattleRoomUnderL70: ; 0x9e549
 	writetext Text_MayNotEnterABattleRoomUnderL70
-	closetext
+	waitbutton
 	jump Script_Menu_ChallengeExplanationCancel
 
 UnknownScript_0x9e550:
 	special Function17f53d
-	loadmovesprites
+	closetext
 	end
 
 BattleTower_LeftWithoutSaving:
-	loadfont
+	opentext
 	writetext Text_BattleTower_LeftWithoutSaving
-	closetext
-	jump UnknownScript_0x9e4b0
+	waitbutton
+	jump Script_BattleTowerHopeToServeYouAgain
 
 YoungsterScript_0x9e55d:
 	faceplayer
-	loadfont
+	opentext
 	writetext Text_BattleTowerYoungster
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, RIGHT
+	spriteface BATTLETOWER1F_YOUNGSTER, RIGHT
 	end
 
 CooltrainerFScript_0x9e568:
@@ -260,24 +267,24 @@
 GrannyScript_0x9e56e:
 	jumptextfaceplayer Text_BattleTowerGranny
 
-MovementData_0x9e571:
+MovementData_BattleTower1FWalkToElevator:
 	step_up
 	step_up
 	step_up
 	step_up
 	step_up
-MovementData_0x9e576:
+MovementData_BattleTowerHallwayPlayerEntersBattleRoom:
 	step_up
 	step_end
 
-MovementData_0x9e578:
+MovementData_BattleTowerElevatorExitElevator:
 	step_down
 	step_end
 
-MovementData_0x9e57a:
+MovementData_BattleTowerHallwayWalkTo1020Room:
 	step_right
 	step_right
-MovementData_0x9e57c:
+MovementData_BattleTowerHallwayWalkTo3040Room:
 	step_right
 	step_right
 	step_up
@@ -285,13 +292,13 @@
 	turn_head_left
 	step_end
 
-MovementData_0x9e582:
+MovementData_BattleTowerHallwayWalkTo90100Room:
 	step_left
 	step_left
-MovementData_0x9e584:
+MovementData_BattleTowerHallwayWalkTo7080Room:
 	step_left
 	step_left
-MovementData_0x9e586:
+MovementData_BattleTowerHallwayWalkTo5060Room:
 	step_left
 	step_left
 	step_up
@@ -299,7 +306,7 @@
 	turn_head_right
 	step_end
 
-MovementData_0x9e58c:
+MovementData_BattleTowerBattleRoomPlayerWalksIn:
 	step_up
 	step_up
 	step_up
@@ -307,7 +314,7 @@
 	turn_head_right
 	step_end
 
-MovementData_0x9e592:
+MovementData_BattleTowerBattleRoomOpponentWalksIn:
 	slow_step_down
 	slow_step_down
 	slow_step_down
@@ -314,7 +321,7 @@
 	turn_head_left
 	step_end
 
-MovementData_0x9e597:
+MovementData_BattleTowerBattleRoomOpponentWalksOut:
 	turn_head_up
 	slow_step_up
 	slow_step_up
@@ -321,7 +328,7 @@
 	slow_step_up
 	step_end
 
-MovementData_0x9e59c:
+MovementData_BattleTowerBattleRoomReceptionistWalksToPlayer:
 	slow_step_right
 	slow_step_right
 	slow_step_up
@@ -328,7 +335,7 @@
 	slow_step_up
 	step_end
 
-MovementData_0x9e5a1:
+MovementData_BattleTowerBattleRoomReceptionistWalksAway:
 	slow_step_down
 	slow_step_down
 	slow_step_left
@@ -336,11 +343,11 @@
 	turn_head_right
 	step_end
 
-MovementData_0x9e5a7:
+MovementData_BattleTowerBattleRoomPlayerTurnsToFaceReceptionist:
 	turn_head_down
 	step_end
 
-MovementData_0x9e5a9:
+MovementData_BattleTowerBattleRoomPlayerTurnsToFaceNextOpponent:
 	turn_head_right
 	step_end
 
@@ -482,7 +489,7 @@
 	line "visiting!"
 	done
 
-UnknownText_0x9ea5f:
+Text_BeatenAllTheTrainers_Mobile:
 	text "Congratulations!"
 
 	para "You've beaten all"
@@ -512,7 +519,7 @@
 	para ""
 	done
 
-UnknownText_0x9eb45:
+Text_AskRegisterRecord_Mobile:
 	text "Would you like to"
 	line "register your"
 
@@ -560,7 +567,7 @@
 	cont "BATTLE TOWER?"
 	done
 
-UnknownText_0x9ec6d:
+Text_CantBeRegistered:
 	text "Your record from"
 	line "the previous"
 
@@ -568,7 +575,7 @@
 	line "be registered. OK?"
 	done
 
-UnknownText_0x9ecb0:
+Text_CantBeRegistered_PreviousRecordDeleted:
 	text "Your record from"
 	line "the previous"
 
@@ -637,7 +644,7 @@
 	text ". Ready?"
 	done
 
-UnknownText_0x9eee0:
+Text_SaveBeforeConnecting_Mobile:
 	text "Your session will"
 	line "be SAVED before"
 
@@ -658,7 +665,7 @@
 	line "session?"
 	done
 
-UnknownText_0x9ef79:
+Text_SaveBeforeReentry:
 	text "Your record will"
 	line "be SAVED before"
 
@@ -671,7 +678,7 @@
 	line "ROOM challenge?"
 	done
 
-UnknownText_0x9efe3:
+Text_RegisterRecordOnFile_Mobile:
 	text "We have your"
 	line "previous record on"
 
@@ -680,7 +687,7 @@
 	cont "it at the CENTER?"
 	done
 
-UnknownText_0x9f037:
+Text_WeveBeenWaitingForYou:
 	text "We've been waiting"
 	line "for you. This way"
 
@@ -688,7 +695,7 @@
 	line "please."
 	done
 
-UnknownText_0x9f076:
+Text_FiveDayBattleLimit_Mobile:
 	text "You may enter only"
 	line "five BATTLE ROOMS"
 	cont "each day."
@@ -713,7 +720,7 @@
 	done
 
 ; a dupe?
-UnknownText_0x9f151:
+Text_RegisterRecordTimedOut_Mobile:
 	text "Sorry, but it's"
 	line "not possible to"
 
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -1,35 +1,39 @@
+const_value set 2
+	const BATTLETOWERBATTLEROOM_YOUNGSTER
+	const BATTLETOWERBATTLEROOM_RECEPTIONIST
+
 BattleTowerBattleRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw Script_EnterBattleRoom, 0
-	dw UnknownScript_0x9f420, 0
+	dw .EnterBattleRoom, 0
+	dw .DummyTrigger, 0
 
 .MapCallbacks:
 	db 0
 
-Script_EnterBattleRoom: ; 0x9f419
-	disappear $2
+.EnterBattleRoom: ; 0x9f419
+	disappear BATTLETOWERBATTLEROOM_YOUNGSTER
 	priorityjump Script_BattleRoom
 	dotrigger $1
-UnknownScript_0x9f420:
+.DummyTrigger:
 	end
 
 Script_BattleRoom: ; 0x9f421
-	applymovement PLAYER, MovementData_0x9e58c
+	applymovement PLAYER, MovementData_BattleTowerBattleRoomPlayerWalksIn
 ; beat all 7 opponents in a row
 Script_BattleRoomLoop: ; 0x9f425
-	writebyte $2
+	writebyte BATTLETOWERBATTLEROOM_YOUNGSTER
 	special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
-	appear $2
+	appear BATTLETOWERBATTLEROOM_YOUNGSTER
 	warpsound
-	waitbutton
-	applymovement $2, MovementData_0x9e592
-	loadfont
+	waitsfx
+	applymovement BATTLETOWERBATTLEROOM_YOUNGSTER, MovementData_BattleTowerBattleRoomOpponentWalksIn
+	opentext
 	battletowertext 1
-	keeptextopen
-	loadmovesprites
+	buttonsound
+	closetext
 	special BattleTowerBattle ; calls predef startbattle
 	special FadeOutPalettes
 	reloadmap
@@ -36,15 +40,15 @@
 	if_not_equal $0, Script_FailedBattleTowerChallenge
 	copybytetovar wNrOfBeatenBattleTowerTrainers ; wcf64
 	if_equal BATTLETOWER_NROFTRAINERS, Script_BeatenAllTrainers
-	applymovement $2, MovementData_0x9e597
+	applymovement BATTLETOWERBATTLEROOM_YOUNGSTER, MovementData_BattleTowerBattleRoomOpponentWalksOut
 	warpsound
-	disappear $2
-	applymovement $3, MovementData_0x9e59c
-	applymovement PLAYER, MovementData_0x9e5a7
-	loadfont
+	disappear BATTLETOWERBATTLEROOM_YOUNGSTER
+	applymovement BATTLETOWERBATTLEROOM_RECEPTIONIST, MovementData_BattleTowerBattleRoomReceptionistWalksToPlayer
+	applymovement PLAYER, MovementData_BattleTowerBattleRoomPlayerTurnsToFaceReceptionist
+	opentext
 	writetext Text_YourPkmnWillBeHealedToFullHealth
+	waitbutton
 	closetext
-	loadmovesprites
 	playmusic MUSIC_HEAL
 	special FadeOutPalettes
 	special LoadMapPalettes
@@ -51,14 +55,14 @@
 	pause 60
 	special FadeInPalettes
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext Text_NextUpOpponentNo
 	yesorno
 	iffalse Script_DontBattleNextOpponent
 Script_ContinueAndBattleNextOpponent: ; 0x9f477
-	loadmovesprites
-	applymovement PLAYER, MovementData_0x9e5a9
-	applymovement $3, MovementData_0x9e5a1
+	closetext
+	applymovement PLAYER, MovementData_BattleTowerBattleRoomPlayerTurnsToFaceNextOpponent
+	applymovement BATTLETOWERBATTLEROOM_RECEPTIONIST, MovementData_BattleTowerBattleRoomReceptionistWalksAway
 	jump Script_BattleRoomLoop
 
 Script_DontBattleNextOpponent: ; 0x9f483
@@ -65,14 +69,14 @@
 	writetext Text_SaveAndEndTheSession
 	yesorno
 	iffalse Script_DontSaveAndEndTheSession
-	writebyte BATTLE_TOWER_ACTION_07
+	writebyte BATTLETOWERACTION_SAVELEVELGROUP ; save level group
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_1F
+	writebyte BATTLETOWERACTION_SAVEOPTIONS ; choose reward
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_03
+	writebyte BATTLETOWERACTION_SAVE_AND_QUIT ; quicksave
 	special BattleTowerAction
 	playsound SFX_SAVE
-	waitbutton
+	waitsfx
 	special FadeOutPalettes
 	special Reset
 Script_DontSaveAndEndTheSession: ; 0x9f4a3
@@ -79,26 +83,26 @@
 	writetext Text_CancelYourBattleRoomChallenge
 	yesorno
 	iffalse Script_ContinueAndBattleNextOpponent
-	writebyte BATTLE_TOWER_ACTION_04
+	writebyte BATTLETOWERACTION_CHALLENGECANCELED
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_06
+	writebyte BATTLETOWERACTION_06
 	special BattleTowerAction
-	loadmovesprites
+	closetext
 	special FadeOutPalettes
 	warpfacing UP, BATTLE_TOWER_1F, $7, $7
-	loadfont
-	jump UnknownScript_0x9e4b0
+	opentext
+	jump Script_BattleTowerHopeToServeYouAgain
 
 Script_FailedBattleTowerChallenge:
 	pause 60
 	special Special_BattleTowerFade
 	warpfacing UP, BATTLE_TOWER_1F, $7, $7
-	writebyte BATTLE_TOWER_ACTION_04
+	writebyte BATTLETOWERACTION_CHALLENGECANCELED
 	special BattleTowerAction
-	loadfont
+	opentext
 	writetext Text_ThanksForVisiting
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Script_BeatenAllTrainers: ; 0x9f4d9
@@ -105,34 +109,34 @@
 	pause 60
 	special Special_BattleTowerFade
 	warpfacing UP, BATTLE_TOWER_1F, $7, $7
-BattleTowerBattleRoomScript_0x9f4e4:
-	loadfont
+Script_BeatenAllTrainers2:
+	opentext
 	writetext Text_CongratulationsYouveBeatenAllTheTrainers
 	jump Script_GivePlayerHisPrize
 
-UnknownScript_0x9f4eb:
-	writebyte BATTLE_TOWER_ACTION_04
+UnreferencedScript_0x9f4eb:
+	writebyte BATTLETOWERACTION_CHALLENGECANCELED
 	special BattleTowerAction
-	loadfont
+	opentext
 	writetext Text_TooMuchTimeElapsedNoRegister
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x9f4f7:
-	writebyte BATTLE_TOWER_ACTION_04
+UnreferencedScript_0x9f4f7:
+	writebyte BATTLETOWERACTION_CHALLENGECANCELED
 	special BattleTowerAction
-	writebyte BATTLE_TOWER_ACTION_06
+	writebyte BATTLETOWERACTION_06
 	special BattleTowerAction
-	loadfont
+	opentext
 	writetext Text_ThanksForVisiting
 	writetext Text_WeHopeToServeYouAgain
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
-UnknownText_0x9f50b:
+Text_ReturnedAfterSave_Mobile:
 	text "You'll be returned"
 	line "after you SAVE."
 	done
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -1,45 +1,48 @@
+const_value set 2
+	const BATTLETOWERELEVATOR_RECEPTIONIST
+
 BattleTowerElevator_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x9f562, 0
-	dw UnknownScript_0x9f567, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x9f562:
-	priorityjump UnknownScript_0x9f568
+.Trigger0:
+	priorityjump .RideElevator
 	dotrigger $1
 
-UnknownScript_0x9f567:
+.Trigger1:
 	end
 
-UnknownScript_0x9f568:
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x9f58f
-	applymovement PLAYER, MovementData_0x9f592
-	writebyte BATTLE_TOWER_ACTION_0A
+.RideElevator:
+	follow BATTLETOWERELEVATOR_RECEPTIONIST, PLAYER
+	applymovement BATTLETOWERELEVATOR_RECEPTIONIST, MovementData_BattleTowerElevatorReceptionistWalksIn
+	applymovement PLAYER, MovementData_BattleTowerElevatorPlayerWalksIn
+	writebyte BATTLETOWERACTION_0A
 	special BattleTowerAction
 	playsound SFX_ELEVATOR
 	earthquake 60
-	waitbutton
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x9e578
+	waitsfx
+	follow BATTLETOWERELEVATOR_RECEPTIONIST, PLAYER
+	applymovement BATTLETOWERELEVATOR_RECEPTIONIST, MovementData_BattleTowerElevatorExitElevator
 	stopfollow
 	warpsound
-	disappear $2
-	applymovement PLAYER, MovementData_0x9e578
+	disappear BATTLETOWERELEVATOR_RECEPTIONIST
+	applymovement PLAYER, MovementData_BattleTowerElevatorExitElevator
 	warpcheck
 	end
 
-MovementData_0x9f58f:
+MovementData_BattleTowerElevatorReceptionistWalksIn:
 	step_right
 	turn_head_down
 	step_end
 
-MovementData_0x9f592:
+MovementData_BattleTowerElevatorPlayerWalksIn:
 	turn_head_down
 	step_end
 
@@ -60,4 +63,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_RECEPTIONIST, 2, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MovementData_0x9f58f, -1
+	person_event SPRITE_RECEPTIONIST, 2, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MovementData_BattleTowerElevatorReceptionistWalksIn, -1
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const BATTLETOWERHALLWAY_RECEPTIONIST
+
 BattleTowerHallway_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -16,7 +19,7 @@
 	end
 
 .ChooseBattleRoom:
-	follow $2, PLAYER
+	follow BATTLETOWERHALLWAY_RECEPTIONIST, PLAYER
 	callasm .asm_load_battle_room
 	jump .WalkToChosenBattleRoom
 
@@ -47,33 +50,33 @@
 	if_equal 8, .L70L80
 	if_equal 9, .L90L100
 	if_equal 10, .L90L100
-	applymovement $2, MovementData_0x9e57a
+	applymovement BATTLETOWERHALLWAY_RECEPTIONIST, MovementData_BattleTowerHallwayWalkTo1020Room
 	jump .EnterBattleRoom
 
 .L30L40: ; 0x9f603
-	applymovement $2, MovementData_0x9e57c
+	applymovement BATTLETOWERHALLWAY_RECEPTIONIST, MovementData_BattleTowerHallwayWalkTo3040Room
 	jump .EnterBattleRoom
 
 .L50L60: ; 0x9f60a
-	applymovement $2, MovementData_0x9e586
+	applymovement BATTLETOWERHALLWAY_RECEPTIONIST, MovementData_BattleTowerHallwayWalkTo5060Room
 	jump .EnterBattleRoom
 
 .L70L80: ; 0x9f611
-	applymovement $2, MovementData_0x9e584
+	applymovement BATTLETOWERHALLWAY_RECEPTIONIST, MovementData_BattleTowerHallwayWalkTo7080Room
 	jump .EnterBattleRoom
 
 .L90L100: ; 0x9f618
-	applymovement $2, MovementData_0x9e582
+	applymovement BATTLETOWERHALLWAY_RECEPTIONIST, MovementData_BattleTowerHallwayWalkTo90100Room
 	jump .EnterBattleRoom
 
 .EnterBattleRoom: ; 0x9f61f
-	faceperson PLAYER, $2
-	loadfont
+	faceperson PLAYER, BATTLETOWERHALLWAY_RECEPTIONIST
+	opentext
 	writetext Text_PleaseStepThisWay
+	waitbutton
 	closetext
-	loadmovesprites
 	stopfollow
-	applymovement PLAYER, MovementData_0x9e576
+	applymovement PLAYER, MovementData_BattleTowerHallwayPlayerEntersBattleRoom
 	warpcheck
 	end
 
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const BATTLETOWEROUTSIDE_STANDING_YOUNGSTER
+	const BATTLETOWEROUTSIDE_BUENA
+	const BATTLETOWEROUTSIDE_SAILOR
+	const BATTLETOWEROUTSIDE_LASS
+
 BattleTowerOutside_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,19 +22,19 @@
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	return
 
-StandingYoungsterScript_0x9f85f:
-	jumptextfaceplayer UnknownText_0x9f930
+BattleTowerOutsideYoungsterScript:
+	jumptextfaceplayer BattleTowerOutsideYoungsterText
 
-BuenaScript_0x9f862:
-	jumptextfaceplayer UnknownText_0x9f9db
+BattleTowerOutsideBuenaScript:
+	jumptextfaceplayer BattleTowerOutsideBuenaText
 
-SailorScript_0x9f865:
-	jumptextfaceplayer UnknownText_0x9fa8c
+BattleTowerOutsideSailorScript:
+	jumptextfaceplayer BattleTowerOutsideSailorText
 
 MapBattleTowerOutsideSignpost0Script:
-	jumptext UnknownText_0x9fafc
+	jumptext BattleTowerOutsideText_UltimateChallenge
 
-UnknownText_0x9f86b:
+BattleTowerOutsideUnusedText1:
 	text "Wow, the BATTLE"
 	line "TOWER is huge! My"
 
@@ -36,7 +42,7 @@
 	line "looking up at it."
 	done
 
-UnknownText_0x9f8b3:
+BattleTowerOutsideUnusedText2:
 	text "Wow, the BATTLE"
 	line "TOWER is huge!"
 
@@ -50,7 +56,7 @@
 	line "#MON."
 	done
 
-UnknownText_0x9f930:
+BattleTowerOutsideYoungsterText:
 	text "Wow, the BATTLE"
 	line "TOWER is huge!"
 
@@ -59,7 +65,7 @@
 	cont "in there!"
 	done
 
-UnknownText_0x9f97b:
+BattleTowerOutsideUnusedText3:
 	text "What on earth do"
 	line "they do here?"
 
@@ -70,7 +76,7 @@
 	line "#MON battles."
 	done
 
-UnknownText_0x9f9db:
+BattleTowerOutsideBuenaText:
 	text "You can use only"
 	line "three #MON."
 
@@ -81,7 +87,7 @@
 	line "battle…"
 	done
 
-UnknownText_0x9fa32:
+BattleTowerOutsideUnusedText4:
 	text "Ehehehe…"
 	line "I sneaked out of"
 	cont "work to come here."
@@ -91,7 +97,7 @@
 	cont "a LEADER!"
 	done
 
-UnknownText_0x9fa8c:
+BattleTowerOutsideSailorText:
 	text "Hehehe, I snuck"
 	line "out from work."
 
@@ -102,11 +108,11 @@
 	line "all. That I must!"
 	done
 
-UnknownText_0x9faee:
+BattleTowerOutsideText_BattleTower:
 	text "BATTLE TOWER"
 	done
 
-UnknownText_0x9fafc:
+BattleTowerOutsideText_UltimateChallenge:
 	text "BATTLE TOWER"
 
 	para "Take the Ultimate"
@@ -113,12 +119,12 @@
 	line "Trainer Challenge!"
 	done
 
-UnknownText_0x9fb2f:
+BattleTowerOutsideText_DoorsClosed:
 	text "The BATTLE TOWER's"
 	line "doors are closed…"
 	done
 
-UnknownText_0x9fb54:
+BattleTowerOutsideText_DoorsOpen:
 	text "It's open!"
 	done
 
@@ -142,7 +148,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_STANDING_YOUNGSTER, 12, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, StandingYoungsterScript_0x9f85f, -1
-	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BuenaScript_0x9f862, -1
-	person_event SPRITE_SAILOR, 18, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SailorScript_0x9f865, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_STANDING_YOUNGSTER, 12, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideYoungsterScript, -1
+	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideBuenaScript, -1
+	person_event SPRITE_SAILOR, 18, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideSailorScript, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	person_event SPRITE_LASS, 24, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const BILLSHOUSE_GRAMPS
+
 BillsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,208 +10,208 @@
 
 GrampsScript_0x189538:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
-	iftrue UnknownScript_0x1896ba
+	iftrue .JustShowedSomething
 	checkevent EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
-	iftrue UnknownScript_0x1896c0
+	iftrue .GotThunderstone
 	checkevent EVENT_MET_BILLS_GRANDPA
-	iftrue UnknownScript_0x189553
-	writetext UnknownText_0x1896ce
-	keeptextopen
+	iftrue .MetGrandpa
+	writetext BillsGrandpaIntroText
+	buttonsound
 	setevent EVENT_MET_BILLS_GRANDPA
-UnknownScript_0x189553:
+.MetGrandpa:
 	checkevent EVENT_SHOWED_PICHU_TO_BILLS_GRANDPA
-	iftrue UnknownScript_0x189697
+	iftrue .ShowedPichu
 	checkevent EVENT_SHOWED_GROWLITHE_VULPIX_TO_BILLS_GRANDPA
-	iftrue UnknownScript_0x189680
+	iftrue .ShowedGrowlitheVulpix
 	checkevent EVENT_SHOWED_STARYU_TO_BILLS_GRANDPA
-	iftrue UnknownScript_0x189669
+	iftrue .ShowedStaryu
 	checkevent EVENT_SHOWED_ODDISH_TO_BILLS_GRANDPA
-	iftrue UnknownScript_0x189652
+	iftrue .ShowedOddish
 	checkevent EVENT_SHOWED_LICKITUNG_TO_BILLS_GRANDPA
-	iftrue UnknownScript_0x18963b
-	writetext UnknownText_0x1898c0
-	keeptextopen
-	writetext UnknownText_0x189732
+	iftrue .ShowedLickitung
+	writetext BillsGrandpaLickitungText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal LICKITUNG, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal LICKITUNG, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_LICKITUNG_TO_BILLS_GRANDPA
-	jump UnknownScript_0x18963b
+	jump .ShowedLickitung
 
-UnknownScript_0x189592:
-	writetext UnknownText_0x1898ff
-	keeptextopen
-	writetext UnknownText_0x189732
+.GotEverstone:
+	writetext BillsGrandpaOddishText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal ODDISH, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal ODDISH, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_ODDISH_TO_BILLS_GRANDPA
-	jump UnknownScript_0x189652
+	jump .ShowedOddish
 
-UnknownScript_0x1895b3:
-	writetext UnknownText_0x189953
-	keeptextopen
-	writetext UnknownText_0x189732
+.GotLeafStone:
+	writetext BillsGrandpaStaryuText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal STARYU, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal STARYU, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_STARYU_TO_BILLS_GRANDPA
-	jump UnknownScript_0x189669
+	jump .ShowedStaryu
 
-UnknownScript_0x1895d4:
+.GotWaterStone:
 	checkver
-	iftrue UnknownScript_0x1895f9
-	writetext UnknownText_0x1899fe
-	keeptextopen
-	writetext UnknownText_0x189732
+	iftrue .Crystal11
+	writetext BillsGrandpaGrowlitheText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal GROWLITHE, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal GROWLITHE, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_GROWLITHE_VULPIX_TO_BILLS_GRANDPA
-	jump UnknownScript_0x189680
+	jump .ShowedGrowlitheVulpix
 
-UnknownScript_0x1895f9:
-	writetext UnknownText_0x189a57
-	keeptextopen
-	writetext UnknownText_0x189732
+.Crystal11:
+	writetext BillsGrandpaVulpixText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal VULPIX, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal VULPIX, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_GROWLITHE_VULPIX_TO_BILLS_GRANDPA
-	jump UnknownScript_0x189680
+	jump .ShowedGrowlitheVulpix
 
-UnknownScript_0x18961a:
-	writetext UnknownText_0x189ab1
-	keeptextopen
-	writetext UnknownText_0x189732
+.GotFireStone:
+	writetext BillsGrandpaPichuText
+	buttonsound
+	writetext BillsGrandpaAskToSeeMonText
 	yesorno
-	iffalse UnknownScript_0x1896aa
-	scall UnknownScript_0x1896a5
+	iffalse .SaidNo
+	scall .ExcitedToSee
 	special Special_BillsGrandfather
-	iffalse UnknownScript_0x1896aa
-	if_not_equal PICHU, UnknownScript_0x1896c6
-	scall UnknownScript_0x1896b0
+	iffalse .SaidNo
+	if_not_equal PICHU, .WrongPokemon
+	scall .CorrectPokemon
 	setevent EVENT_SHOWED_PICHU_TO_BILLS_GRANDPA
-	jump UnknownScript_0x189697
+	jump .ShowedPichu
 
-UnknownScript_0x18963b:
+.ShowedLickitung:
 	checkevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
-	iftrue UnknownScript_0x189592
-	scall UnknownScript_0x1896b5
+	iftrue .GotEverstone
+	scall .ReceiveItem
 	verbosegiveitem EVERSTONE
-	iffalse UnknownScript_0x1896cc
+	iffalse .BagFull
 	setevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x189652:
+.ShowedOddish:
 	checkevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
-	iftrue UnknownScript_0x1895b3
-	scall UnknownScript_0x1896b5
+	iftrue .GotLeafStone
+	scall .ReceiveItem
 	verbosegiveitem LEAF_STONE
-	iffalse UnknownScript_0x1896cc
+	iffalse .BagFull
 	setevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x189669:
+.ShowedStaryu:
 	checkevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
-	iftrue UnknownScript_0x1895d4
-	scall UnknownScript_0x1896b5
+	iftrue .GotWaterStone
+	scall .ReceiveItem
 	verbosegiveitem WATER_STONE
-	iffalse UnknownScript_0x1896cc
+	iffalse .BagFull
 	setevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x189680:
+.ShowedGrowlitheVulpix:
 	checkevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
-	iftrue UnknownScript_0x18961a
-	scall UnknownScript_0x1896b5
+	iftrue .GotFireStone
+	scall .ReceiveItem
 	verbosegiveitem FIRE_STONE
-	iffalse UnknownScript_0x1896cc
+	iffalse .BagFull
 	setevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x189697:
-	scall UnknownScript_0x1896b5
+.ShowedPichu:
+	scall .ReceiveItem
 	verbosegiveitem THUNDERSTONE
-	iffalse UnknownScript_0x1896cc
+	iffalse .BagFull
 	setevent EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x1896a5:
-	writetext UnknownText_0x189760
-	keeptextopen
+.ExcitedToSee:
+	writetext BillsGrandpaExcitedToSeeText
+	buttonsound
 	end
 
-UnknownScript_0x1896aa:
-	writetext UnknownText_0x189784
+.SaidNo:
+	writetext BillsGrandpaYouDontHaveItTextText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1896b0:
-	writetext UnknownText_0x1897a6
-	keeptextopen
+.CorrectPokemon:
+	writetext BillsGrandpaShownPokemonText
+	buttonsound
 	end
 
-UnknownScript_0x1896b5:
-	writetext UnknownText_0x1897e1
-	keeptextopen
+.ReceiveItem:
+	writetext BillsGrandpaTokenOfAppreciationText
+	buttonsound
 	end
 
-UnknownScript_0x1896ba:
-	writetext UnknownText_0x18980e
+.JustShowedSomething:
+	writetext BillsGrandpaComeAgainText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1896c0:
-	writetext UnknownText_0x18982a
+.GotThunderstone:
+	writetext BillsGrandpaShownAllThePokemonText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1896c6:
-	writetext UnknownText_0x189891
+.WrongPokemon:
+	writetext BillsGrandpaWrongPokemonText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1896cc:
-	loadmovesprites
+.BagFull:
+	closetext
 	end
 
-UnknownText_0x1896ce:
+BillsGrandpaIntroText:
 	text "Hm? You know BILL?"
 	line "He's my grandson."
 
@@ -219,23 +222,23 @@
 	line "house-sitting."
 	done
 
-UnknownText_0x189732:
+BillsGrandpaAskToSeeMonText:
 	text "If you have that"
 	line "#MON, may I see"
 	cont "it, please?"
 	done
 
-UnknownText_0x189760:
+BillsGrandpaExcitedToSeeText:
 	text "You will show me?"
 	line "How good of you!"
 	done
 
-UnknownText_0x189784:
+BillsGrandpaYouDontHaveItTextText:
 	text "You don't have it?"
 	line "That's too bad…"
 	done
 
-UnknownText_0x1897a6:
+BillsGrandpaShownPokemonText:
 	text "Ah, so that is"
 	line "@"
 	text_from_ram StringBuffer3
@@ -246,7 +249,7 @@
 	cont "you."
 	done
 
-UnknownText_0x1897e1:
+BillsGrandpaTokenOfAppreciationText:
 	text "Thanks!"
 
 	para "This is a token of"
@@ -253,12 +256,12 @@
 	line "my appreciation."
 	done
 
-UnknownText_0x18980e:
+BillsGrandpaComeAgainText:
 	text "Come visit again"
 	line "sometime."
 	done
 
-UnknownText_0x18982a:
+BillsGrandpaShownAllThePokemonText:
 	text "Thanks for showing"
 	line "me so many cute"
 	cont "#MON."
@@ -270,7 +273,7 @@
 	line "long life."
 	done
 
-UnknownText_0x189891:
+BillsGrandpaWrongPokemonText:
 	text "Hm?"
 
 	para "That's not the"
@@ -278,7 +281,7 @@
 	cont "told about."
 	done
 
-UnknownText_0x1898c0:
+BillsGrandpaLickitungText:
 	text "My grandson BILL"
 	line "told me about a"
 
@@ -286,7 +289,7 @@
 	line "long tongue."
 	done
 
-UnknownText_0x1898ff:
+BillsGrandpaOddishText:
 	text "Ah, my grandson"
 	line "mentioned a round,"
 
@@ -295,7 +298,7 @@
 	cont "on its head."
 	done
 
-UnknownText_0x189953:
+BillsGrandpaStaryuText:
 	text "Do you know of a"
 	line "sea #MON that"
 
@@ -313,7 +316,7 @@
 	line "like to see it."
 	done
 
-UnknownText_0x1899fe:
+BillsGrandpaGrowlitheText:
 	text "BILL told me about"
 	line "a #MON that is"
 
@@ -324,7 +327,7 @@
 	line "ROAR well."
 	done
 
-UnknownText_0x189a57:
+BillsGrandpaVulpixText:
 	text "I heard about a"
 	line "cute #MON that"
 	cont "has six tails."
@@ -334,7 +337,7 @@
 	cont "like that."
 	done
 
-UnknownText_0x189ab1:
+BillsGrandpaPichuText:
 	text "Do you know that"
 	line "hugely popular"
 	cont "#MON?"
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const BLACKTHORNCITY_SUPER_NERD1
+	const BLACKTHORNCITY_SUPER_NERD2
+	const BLACKTHORNCITY_GRAMPS1
+	const BLACKTHORNCITY_GRAMPS2
+	const BLACKTHORNCITY_BLACK_BELT
+	const BLACKTHORNCITY_COOLTRAINER_F1
+	const BLACKTHORNCITY_YOUNGSTER1
+	const BLACKTHORNCITY_YOUNGSTER2
+	const BLACKTHORNCITY_COOLTRAINER_F2
+
 BlackthornCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,102 +27,102 @@
 .Santos
 	checkcode VAR_WEEKDAY
 	if_equal SATURDAY, .SantosAppears
-	disappear $9
+	disappear BLACKTHORNCITY_YOUNGSTER2
 	return
 
 .SantosAppears
-	appear $9
+	appear BLACKTHORNCITY_YOUNGSTER2
 	return
 
-SuperNerdScript_0x1a46e8:
+BlackthornSuperNerdScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_CLAIR
-	iftrue UnknownScript_0x1a4702
+	iftrue .BeatClair
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x1a46fc
-	writetext UnknownText_0x1a477a
+	iftrue .ClearedRadioTower
+	writetext Text_ClairIsOut
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a46fc:
-	writetext UnknownText_0x1a47f3
+.ClearedRadioTower:
+	writetext Text_ClairIsIn
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a4702:
-	writetext UnknownText_0x1a4865
+.BeatClair:
+	writetext Text_ClairIsBeaten
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-GrampsScript_0x1a4708:
-	jumptextfaceplayer UnknownText_0x1a48c3
+BlackthornGramps1Script:
+	jumptextfaceplayer BlackthornGrampsRefusesEntryText
 
-GrampsScript_0x1a470b:
-	jumptextfaceplayer UnknownText_0x1a48fb
+BlackthornGramps2Script:
+	jumptextfaceplayer BlackthornGrampsGrantsEntryText
 
-BlackBeltScript_0x1a470e:
+BlackthornBlackBeltScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x1a471c
-	writetext UnknownText_0x1a494a
+	iftrue .ClearedRadioTower
+	writetext BlackBeltText_WeirdRadio
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a471c:
-	writetext UnknownText_0x1a4983
+.ClearedRadioTower:
+	writetext BlackBeltText_VoicesInMyHead
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-CooltrainerFScript_0x1a4722:
-	jumptextfaceplayer UnknownText_0x1a49bd
+BlackthornCooltrainerF1Script:
+	jumptextfaceplayer BlackthornCooltrainerF1Text
 
-YoungsterScript_0x1a4725:
-	jumptextfaceplayer UnknownText_0x1a49f1
+BlackthornYoungsterScript:
+	jumptextfaceplayer BlackthornYoungsterText
 
-CooltrainerFScript_0x1a4728:
-	jumptextfaceplayer UnknownText_0x1a4b1e
+BlackthornCooltrainerF2Script:
+	jumptextfaceplayer BlackthornCooltrainerF2Text
 
 SantosScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SPELL_TAG_FROM_SANTOS
-	iftrue SantosSaturdayScript
+	iftrue .Saturday
 	checkcode VAR_WEEKDAY
-	if_not_equal SATURDAY, SantosNotSaturdayScript
+	if_not_equal SATURDAY, .NotSaturday
 	checkevent EVENT_MET_SANTOS_OF_SATURDAY
 	iftrue .MetSantos
 	writetext MeetSantosText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_SANTOS_OF_SATURDAY
 .MetSantos
 	writetext SantosGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem SPELL_TAG
-	iffalse SantosDoneScript
+	iffalse .Done
 	setevent EVENT_GOT_SPELL_TAG_FROM_SANTOS
 	writetext SantosGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-SantosSaturdayScript:
+.Saturday
 	writetext SantosSaturdayText
+	waitbutton
+.Done
 	closetext
-SantosDoneScript:
-	loadmovesprites
 	end
 
-SantosNotSaturdayScript:
+.NotSaturday
 	writetext SantosNotSaturdayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BlackthornCitySign:
@@ -135,7 +146,7 @@
 BlackthornCityMartSign:
 	jumpstd martsign
 
-UnknownText_0x1a477a:
+Text_ClairIsOut:
 	text "I am sorry."
 
 	para "CLAIR, our GYM"
@@ -149,7 +160,7 @@
 	cont "will return."
 	done
 
-UnknownText_0x1a47f3:
+Text_ClairIsIn:
 	text "CLAIR, our GYM"
 	line "LEADER, is waiting"
 	cont "for you."
@@ -161,7 +172,7 @@
 	line "trainer to win."
 	done
 
-UnknownText_0x1a4865:
+Text_ClairIsBeaten:
 	text "You defeated"
 	line "CLAIR?"
 
@@ -174,7 +185,7 @@
 	line "LANCE."
 	done
 
-UnknownText_0x1a48c3:
+BlackthornGrampsRefusesEntryText:
 	text "No. Only chosen"
 	line "trainers may train"
 
@@ -182,7 +193,7 @@
 	line "Please leave."
 	done
 
-UnknownText_0x1a48fb:
+BlackthornGrampsGrantsEntryText:
 	text "If CLAIR allows"
 	line "it, her grand-"
 	cont "father--our MASTER"
@@ -191,13 +202,13 @@
 	para "You may enter."
 	done
 
-UnknownText_0x1a494a:
+BlackBeltText_WeirdRadio:
 	text "My radio's busted?"
 	line "Lately, I only get"
 	cont "this weird signal."
 	done
 
-UnknownText_0x1a4983:
+BlackBeltText_VoicesInMyHead:
 	text "Arooo! Voices in"
 	line "my head!"
 
@@ -205,13 +216,13 @@
 	line "to my radio!"
 	done
 
-UnknownText_0x1a49bd:
+BlackthornCooltrainerF1Text:
 	text "Are you going to"
 	line "make your #MON"
 	cont "forget some moves?"
 	done
 
-UnknownText_0x1a49f1:
+BlackthornYoungsterText:
 	text "Dragon masters all"
 	line "come from the city"
 	cont "of BLACKTHORN."
@@ -257,7 +268,7 @@
 	line "not Saturday…"
 	done
 
-UnknownText_0x1a4b1e:
+BlackthornCooltrainerF2Text:
 	text "Wow, you came"
 	line "through the ICE"
 	cont "PATH?"
@@ -333,12 +344,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_SUPER_NERD, 12, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a46e8, EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
-	person_event SPRITE_SUPER_NERD, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a46e8, EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
-	person_event SPRITE_GRAMPS, 2, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a4708, EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
-	person_event SPRITE_GRAMPS, 2, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a470b, EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
-	person_event SPRITE_BLACK_BELT, 31, 24, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x1a470e, -1
-	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1a4722, -1
-	person_event SPRITE_YOUNGSTER, 15, 13, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a4725, -1
+	person_event SPRITE_SUPER_NERD, 12, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
+	person_event SPRITE_SUPER_NERD, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
+	person_event SPRITE_GRAMPS, 2, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGramps1Script, EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
+	person_event SPRITE_GRAMPS, 2, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGramps2Script, EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
+	person_event SPRITE_BLACK_BELT, 31, 24, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornBlackBeltScript, -1
+	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF1Script, -1
+	person_event SPRITE_YOUNGSTER, 15, 13, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornYoungsterScript, -1
 	person_event SPRITE_YOUNGSTER, 20, 22, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SantosScript, EVENT_BLACKTHORN_CITY_SANTOS_OF_SATURDAY
-	person_event SPRITE_COOLTRAINER_F, 19, 35, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1a4728, -1
+	person_event SPRITE_COOLTRAINER_F, 19, 35, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF2Script, -1
--- a/maps/BlackthornDodrioTradeHouse.asm
+++ b/maps/BlackthornDodrioTradeHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const BLACKTHORNDODRIOTRADEHOUSE_LASS
+
 BlackthornDodrioTradeHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 Emy:
 	faceplayer
-	loadfont
+	opentext
 	trade $3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 EmysHouseBookshelf:
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const BLACKTHORNDRAGONSPEECHHOUSE_GRANNY
+	const BLACKTHORNDRAGONSPEECHHOUSE_EKANS
+
 BlackthornDragonSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	jumptextfaceplayer UnknownText_0x19595c
 
 EkansScript_0x19594c:
-	loadfont
+	opentext
 	writetext UnknownText_0x1959ee
 	cry DRATINI
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x195956:
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const BLACKTHORNGYM1F_CLAIR
+	const BLACKTHORNGYM1F_COOLTRAINER_M1
+	const BLACKTHORNGYM1F_COOLTRAINER_M2
+	const BLACKTHORNGYM1F_COOLTRAINER_F
+	const BLACKTHORNGYM1F_GYM_GUY
+
 BlackthornGym1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -23,25 +30,25 @@
 .skip3
 	return
 
-ClairScript_0x194e24:
+BlackthornGymClairScript:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_RISINGBADGE
-	iftrue UnknownScript_0x194e69
+	iftrue .AlreadyGotBadge
 	checkevent EVENT_BEAT_CLAIR
 	iftrue .FightDone
-	writetext UnknownText_0x194efa
+	writetext ClairIntroText
+	waitbutton
 	closetext
-	loadmovesprites
-	winlosstext UnknownText_0x194fd6, 0
+	winlosstext ClairWinText, 0
 	loadtrainer CLAIR, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_CLAIR
-	loadfont
-	writetext UnknownText_0x19500e
+	opentext
+	writetext ClairText_GoToDragonsDen
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_BEAT_COOLTRAINERM_PAUL
 	setevent EVENT_BEAT_COOLTRAINERM_CODY
 	setevent EVENT_BEAT_COOLTRAINERM_MIKE
@@ -51,39 +58,40 @@
 	setevent EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
 	clearevent EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
 	end
+
 .FightDone
-	writetext UnknownText_0x195162
+	writetext ClairText_TooMuchToExpect
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x194e69:
+.AlreadyGotBadge
 	checkevent EVENT_GOT_TM24_DRAGONBREATH
-	iftrue UnknownScript_0x194e94
-	writetext UnknownText_0x195196
-	keeptextopen
+	iftrue .GotTM24
+	writetext BlackthornGymClairText_YouKeptMeWaiting
+	buttonsound
 	giveitem TM_DRAGONBREATH
-	iffalse UnknownScript_0x194e8e
+	iffalse .BagFull
 	itemtotext TM_DRAGONBREATH, $0
-	writetext UnknownText_0x1951bf
+	writetext BlackthornGymText_ReceivedTM24
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setevent EVENT_GOT_TM24_DRAGONBREATH
-	writetext UnknownText_0x1951d1
-	keeptextopen
-	jump UnknownScript_0x194e94
+	writetext BlackthornGymClairText_DescribeTM24
+	buttonsound
+	jump .GotTM24
 
-UnknownScript_0x194e8e:
-	writetext UnknownText_0x19524f
+.BagFull:
+	writetext BlackthornGymClairText_BagFull
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x194e94:
-	writetext UnknownText_0x195272
+.GotTM24:
+	writetext BlackthornGymClairText_League
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermPaul:
@@ -90,11 +98,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_PAUL, COOLTRAINERM, PAUL, CooltrainermPaulSeenText, CooltrainermPaulBeatenText, 0, CooltrainermPaulScript
 
 CooltrainermPaulScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x1953f1
+	end_if_just_battled
+	opentext
+	writetext CooltrainermPaulAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermMike:
@@ -101,11 +109,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_MIKE, COOLTRAINERM, MIKE, CooltrainermMikeSeenText, CooltrainermMikeBeatenText, 0, CooltrainermMikeScript
 
 CooltrainermMikeScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x195467
+	end_if_just_battled
+	opentext
+	writetext CooltrainermMikeAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfLola:
@@ -112,27 +120,27 @@
 	trainer EVENT_BEAT_COOLTRAINERF_LOLA, COOLTRAINERF, LOLA, CooltrainerfLolaSeenText, CooltrainerfLolaBeatenText, 0, CooltrainerfLolaScript
 
 CooltrainerfLolaScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x195516
+	end_if_just_battled
+	opentext
+	writetext CooltrainerfLolaAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BlackthornGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_CLAIR
 	iftrue .BlackthornGymGuyWinScript
 	writetext BlackthornGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BlackthornGymGuyWinScript
 	writetext BlackthornGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BlackthornGymStatue:
@@ -143,7 +151,7 @@
 	trainertotext CLAIR, 1, $1
 	jumpstd gymstatue2
 
-UnknownText_0x194efa:
+ClairIntroText:
 	text "I am CLAIR."
 
 	para "The world's best"
@@ -168,7 +176,7 @@
 	line "opponent!"
 	done
 
-UnknownText_0x194fd6:
+ClairWinText:
 	text "I lost?"
 
 	para "I don't believe"
@@ -176,7 +184,7 @@
 	cont "some mistake…"
 	done
 
-UnknownText_0x19500e:
+ClairText_GoToDragonsDen:
 	text "I won't admit"
 	line "this."
 
@@ -211,7 +219,7 @@
 	cont "BADGE!"
 	done
 
-UnknownText_0x195162:
+ClairText_TooMuchToExpect:
 	text "What's the matter?"
 
 	para "Is it too much to"
@@ -218,7 +226,7 @@
 	line "expect of you?"
 	done
 
-UnknownText_0x195196:
+BlackthornGymClairText_YouKeptMeWaiting:
 	text "You've kept me"
 	line "waiting!"
 
@@ -225,12 +233,12 @@
 	para "Here! Take this!"
 	done
 
-UnknownText_0x1951bf:
+BlackthornGymText_ReceivedTM24:
 	text "<PLAYER> received"
 	line "TM24."
 	done
 
-UnknownText_0x1951d1:
+BlackthornGymClairText_DescribeTM24:
 	text "That contains"
 	line "DRAGONBREATH."
 
@@ -243,12 +251,12 @@
 	cont "to take it."
 	done
 
-UnknownText_0x19524f:
+BlackthornGymClairText_BagFull:
 	text "What is this? You"
 	line "don't have room?"
 	done
 
-UnknownText_0x195272:
+BlackthornGymClairText_League:
 	text "What's the matter?"
 
 	para "Aren't you headed"
@@ -292,7 +300,7 @@
 	line "lost?"
 	done
 
-UnknownText_0x1953f1:
+CooltrainermPaulAfterText:
 	text "LANCE told you"
 	line "that he'd like to"
 
@@ -310,7 +318,7 @@
 	text "That's odd."
 	done
 
-UnknownText_0x195467:
+CooltrainermMikeAfterText:
 	text "I know my short-"
 	line "comings now."
 
@@ -336,7 +344,7 @@
 	text "Way to go!"
 	done
 
-UnknownText_0x195516:
+CooltrainerfLolaAfterText:
 	text "Dragons are weak"
 	line "against dragon-"
 	cont "type moves."
@@ -404,7 +412,7 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_CLAIR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClairScript_0x194e24, -1
+	person_event SPRITE_CLAIR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornGymClairScript, -1
 	person_event SPRITE_COOLTRAINER_M, 6, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermMike, -1
 	person_event SPRITE_COOLTRAINER_M, 14, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermPaul, -1
 	person_event SPRITE_COOLTRAINER_F, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfLola, -1
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const BLACKTHORNGYM2F_COOLTRAINER_M
+	const BLACKTHORNGYM2F_COOLTRAINER_F
+	const BLACKTHORNGYM2F_BOULDER1
+	const BLACKTHORNGYM2F_BOULDER2
+	const BLACKTHORNGYM2F_BOULDER3
+	const BLACKTHORNGYM2F_BOULDER4
+	const BLACKTHORNGYM2F_BOULDER5
+	const BLACKTHORNGYM2F_BOULDER6
+
 BlackthornGym2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -17,36 +27,30 @@
 	db 0, 0 ; filler
 
 .BoulderTable
-	db 5, 4 ; warp, person
-	dw .Disappear4
+	stonetable 5, BLACKTHORNGYM2F_BOULDER1, .Disappear4
+	stonetable 3, BLACKTHORNGYM2F_BOULDER2, .Disappear5
+	stonetable 4, BLACKTHORNGYM2F_BOULDER3, .Disappear6
+	db -1 ; end
 
-	db 3, 5 ; warp, person
-	dw .Disappear5
-
-	db 4, 6 ; warp, person
-	dw .Disappear6
-
-	db $ff ; end
-
 .Disappear4
-	disappear 4
+	disappear BLACKTHORNGYM2F_BOULDER1
 	jump .Fall
 
 .Disappear5
-	disappear 5
+	disappear BLACKTHORNGYM2F_BOULDER2
 	jump .Fall
 
 .Disappear6
-	disappear 6
+	disappear BLACKTHORNGYM2F_BOULDER3
 	jump .Fall
 
 .Fall
 	pause 30
 	scall .FX
-	loadfont
+	opentext
 	writetext BlackthornGym2FBoulderFellText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FX
@@ -62,11 +66,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_CODY, COOLTRAINERM, CODY, CooltrainermCodySeenText, CooltrainermCodyBeatenText, 0, CooltrainermCodyScript
 
 CooltrainermCodyScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x1957d5
+	end_if_just_battled
+	opentext
+	writetext CooltrainermCodyAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfFran:
@@ -73,11 +77,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_FRAN, COOLTRAINERF, FRAN, CooltrainerfFranSeenText, CooltrainerfFranBeatenText, 0, CooltrainerfFranScript
 
 CooltrainerfFranScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x195883
+	end_if_just_battled
+	opentext
+	writetext CooltrainerfFranAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainermCodySeenText:
@@ -91,7 +95,7 @@
 	line "had a dragon!"
 	done
 
-UnknownText_0x1957d5:
+CooltrainermCodyAfterText:
 	text "Members of our"
 	line "dragon-user clan"
 
@@ -115,7 +119,7 @@
 	text "Awww… I lost…"
 	done
 
-UnknownText_0x195883:
+CooltrainerfFranAfterText:
 	text "Uh-oh… CLAIR is"
 	line "going to be mad…"
 	done
--- a/maps/BlackthornMart.asm
+++ b/maps/BlackthornMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const BLACKTHORNMART_CLERK
+	const BLACKTHORNMART_COOLTRAINER_M
+	const BLACKTHORNMART_BLACK_BELT
+
 BlackthornMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x195a5d:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_BLACKTHORN
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x195a64:
--- a/maps/BlackthornPokeCenter1F.asm
+++ b/maps/BlackthornPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const BLACKTHORNPOKECENTER1F_NURSE
+	const BLACKTHORNPOKECENTER1F_GENTLEMAN
+	const BLACKTHORNPOKECENTER1F_TWIN
+	const BLACKTHORNPOKECENTER1F_COOLTRAINER_M
+
 BlackthornPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const BLUESHOUSE_DAISY
+
 BluesHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,12 +10,12 @@
 
 DaisyScript_0x19b0d0:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_HOUR
 	if_equal $f, UnknownScript_0x19b0de
 	writetext UnknownText_0x19b130
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19b0de:
@@ -22,44 +25,44 @@
 	yesorno
 	iffalse UnknownScript_0x19b124
 	writetext UnknownText_0x19b244
-	closetext
+	waitbutton
 	special Special_DaisyMassage
 	if_equal 0, UnknownScript_0x19b124
 	if_equal 1, UnknownScript_0x19b12a
 	setflag ENGINE_TEA_IN_BLUES_HOUSE
 	writetext UnknownText_0x19b266
+	waitbutton
 	closetext
-	loadmovesprites
 	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
 	special FadeInPalettes
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext UnknownText_0x19b296
 	special PlayCurMonCry
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x19b2aa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19b11e:
 	writetext UnknownText_0x19b2fa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19b124:
 	writetext UnknownText_0x19b334
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19b12a:
 	writetext UnknownText_0x19b377
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x19b130:
--- a/maps/BrunosRoom.asm
+++ b/maps/BrunosRoom.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const BRUNOSROOM_BRUNO
+
 BrunosRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -38,41 +41,41 @@
 	earthquake 80
 	changeblock $4, $e, $2a
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
-	waitbutton
+	waitsfx
 	end
 
 BrunoScript_0x1809c5:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_ELITE_4_BRUNO
 	iftrue UnknownScript_0x1809f3
 	writetext UnknownText_0x1809fe
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x180b23, 0
 	loadtrainer BRUNO, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_BRUNO
-	loadfont
+	opentext
 	writetext UnknownText_0x180b3c
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	changeblock $4, $2, $16
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_BRUNOS_ROOM_EXIT_OPEN
-	waitbutton
+	waitsfx
 	end
 
 UnknownScript_0x1809f3:
 	writetext UnknownText_0x180b3c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x1809f9:
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -1,11 +1,18 @@
+const_value set 2
+	const BURNEDTOWER1F_ROCK
+	const BURNEDTOWER1F_SUPER_NERD
+	const BURNEDTOWER1F_SILVER
+	const BURNEDTOWER1F_MORTY
+	const BURNEDTOWER1F_POKE_BALL
+
 BurnedTower1F_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x185bf2, 0
-	dw UnknownScript_0x185bf6, 0
-	dw UnknownScript_0x185bf7, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
+	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,19 +19,19 @@
 
 	; callbacks
 
-	dbw 1, UnknownScript_0x185bf8
+	dbw 1, .HoleAndLadder
 
-UnknownScript_0x185bf2:
-	priorityjump UnknownScript_0x185c0d
+.Trigger0:
+	priorityjump .EusineTrigger
 	end
 
-UnknownScript_0x185bf6:
+.Trigger1:
 	end
 
-UnknownScript_0x185bf7:
+.Trigger2:
 	end
 
-UnknownScript_0x185bf8:
+.HoleAndLadder:
 	checkevent EVENT_HOLE_IN_BURNED_TOWER
 	iftrue .Next
 	changeblock $a, $8, $32 ; hole
@@ -35,123 +42,123 @@
 .Done
 	return
 
-UnknownScript_0x185c0d:
-	spriteface $3, DOWN
-	showemote EMOTE_SHOCK, $3, 15
-	applymovement $3, MovementData_0x185cd3
-	loadfont
-	writetext UnknownText_0x185ecc
+.EusineTrigger:
+	spriteface BURNEDTOWER1F_SUPER_NERD, DOWN
+	showemote EMOTE_SHOCK, BURNEDTOWER1F_SUPER_NERD, 15
+	applymovement BURNEDTOWER1F_SUPER_NERD, BurnedTower1FEusineMovement
+	opentext
+	writetext BurnedTower1FEusineIntroText
+	waitbutton
 	closetext
-	loadmovesprites
-	moveperson $3, $9, $e
+	moveperson BURNEDTOWER1F_SUPER_NERD, $9, $e
 	dotrigger $1
 	end
 
-UnknownScript_0x185c25:
-	showemote EMOTE_SHOCK, $4, 15
-	special Special_RotatePalettesRightMusic
+BurnedTowerRivalBattleScript:
+	showemote EMOTE_SHOCK, BURNEDTOWER1F_SILVER, 15
+	special Special_FadeOutMusic
 	pause 15
-	spriteface $4, RIGHT
+	spriteface BURNEDTOWER1F_SILVER, RIGHT
 	pause 15
-	applymovement PLAYER, MovementData_0x185ccd
-	applymovement $4, MovementData_0x185ccf
+	applymovement PLAYER, BurnedTowerMovement_PlayerWalksToSilver
+	applymovement BURNEDTOWER1F_SILVER, BurnedTowerMovement_SilverWalksToPlayer
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
-	writetext UnknownText_0x185cd9
+	opentext
+	writetext BurnedTowerSilver_BeforeText
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue UnknownScript_0x185c60
+	iftrue .totodile
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue UnknownScript_0x185c70
-	winlosstext UnknownText_0x185d9b, UnknownText_0x185e2c
-	setlasttalked $4
+	iftrue .chikorita
+	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
+	setlasttalked BURNEDTOWER1F_SILVER
 	loadtrainer RIVAL1, RIVAL1_9
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x185c80
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .returnfrombattle
 
-UnknownScript_0x185c60:
-	winlosstext UnknownText_0x185d9b, UnknownText_0x185e2c
-	setlasttalked $4
+.totodile:
+	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
+	setlasttalked BURNEDTOWER1F_SILVER
 	loadtrainer RIVAL1, RIVAL1_7
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x185c80
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .returnfrombattle
 
-UnknownScript_0x185c70:
-	winlosstext UnknownText_0x185d9b, UnknownText_0x185e2c
-	setlasttalked $4
+.chikorita:
+	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
+	setlasttalked BURNEDTOWER1F_SILVER
 	loadtrainer RIVAL1, RIVAL1_8
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x185c80
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .returnfrombattle
 
-UnknownScript_0x185c80:
+.returnfrombattle:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x185de2
+	opentext
+	writetext BurnedTowerSilver_AfterText1
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $2
 	setevent EVENT_RIVAL_BURNED_TOWER
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
 	earthquake 50
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playsound SFX_ENTER_DOOR
-	waitbutton
+	waitsfx
 	changeblock $a, $8, $25
 	reloadmappart
 	pause 15
-	applymovement PLAYER, MovementData_0x185cd1
+	applymovement PLAYER, BurnedTower1FMovement_PlayerStartsToFall
 	playsound SFX_KINESIS
-	showemote EMOTE_SHOCK, $4, 20
-	loadfont
-	writetext UnknownText_0x185e75
+	showemote EMOTE_SHOCK, BURNEDTOWER1F_SILVER, 20
+	opentext
+	writetext BurnedTowerSilver_AfterText2
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_HOLE_IN_BURNED_TOWER
 	pause 15
 	warpcheck
 	end
 
-SuperNerdScript_0x185cbc:
-	jumptextfaceplayer UnknownText_0x185f99
+BurnedTower1FEusineScript:
+	jumptextfaceplayer BurnedTower1FEusineText
 
-MortyScript_0x185cbf:
-	jumptextfaceplayer UnknownText_0x186002
+BurnedTower1FMortyScript:
+	jumptextfaceplayer BurnedTower1FMortyText
 
 BurnedTower1FRock:
 	jumpstd smashrock
 
-MapBurnedTower1FSignpostItem0:
+BurnedTower1FHiddenEther:
 	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ETHER, ETHER
 	
 
-MapBurnedTower1FSignpostItem1:
+BurnedTower1FHiddenUltraBall:
 	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
-ItemFragment_0x185ccb:
-	db HP_UP, 1
+BurnedTower1FHPUp:
+	itemball HP_UP
 
-MovementData_0x185ccd:
+BurnedTowerMovement_PlayerWalksToSilver:
 	step_left
 	step_end
 
-MovementData_0x185ccf:
+BurnedTowerMovement_SilverWalksToPlayer:
 	step_right
 	step_end
 
-MovementData_0x185cd1:
-	db $59 ; movement
+BurnedTower1FMovement_PlayerStartsToFall:
+	skyfall_top
 	step_end
 
-MovementData_0x185cd3:
+BurnedTower1FEusineMovement:
 	step_down
 	step_left
 	step_left
@@ -159,7 +166,7 @@
 	step_down
 	step_end
 
-UnknownText_0x185cd9:
+BurnedTowerSilver_BeforeText:
 	text "<......> <......> <......>"
 
 	para "…Oh, it's you."
@@ -183,7 +190,7 @@
 	line "fault!"
 	done
 
-UnknownText_0x185d9b:
+BurnedTowerSilver_WinText:
 	text "…Humph!"
 
 	para "This is why I hate"
@@ -193,7 +200,7 @@
 	line "challenge in it."
 	done
 
-UnknownText_0x185de2:
+BurnedTowerSilver_AfterText1:
 	text "…Aw, whatever."
 
 	para "You would never be"
@@ -203,7 +210,7 @@
 	line "anyway."
 	done
 
-UnknownText_0x185e2c:
+BurnedTowerSilver_LossText:
 	text "…Humph!"
 
 	para "This is why I hate"
@@ -213,7 +220,7 @@
 	line "of my time."
 	done
 
-UnknownText_0x185e75:
+BurnedTowerSilver_AfterText2:
 	text "Humph!"
 
 	para "What are you doing"
@@ -225,7 +232,7 @@
 	para "Serves you right!"
 	done
 
-UnknownText_0x185ecc:
+BurnedTower1FEusineIntroText:
 	text "EUSINE: My name's"
 	line "EUSINE."
 
@@ -248,7 +255,7 @@
 	line "could it be?"
 	done
 
-UnknownText_0x185f99:
+BurnedTower1FEusineText:
 	text "EUSINE: I heard"
 	line "that SUICUNE is in"
 
@@ -259,7 +266,7 @@
 	line "could it be?"
 	done
 
-UnknownText_0x186002:
+BurnedTower1FMortyText:
 	text "MORTY: ECRUTEAK's"
 	line "GYM LEADER has to"
 
@@ -285,32 +292,32 @@
 	db 14
 	warp_def $f, $9, 13, ECRUTEAK_CITY
 	warp_def $f, $a, 13, ECRUTEAK_CITY
-	warp_def $9, $a, 1, BURNED_TOWER_B1F
-	warp_def $5, $5, 1, BURNED_TOWER_B1F
-	warp_def $6, $5, 1, BURNED_TOWER_B1F
-	warp_def $6, $4, 1, BURNED_TOWER_B1F
-	warp_def $4, $f, 2, BURNED_TOWER_B1F
-	warp_def $5, $f, 2, BURNED_TOWER_B1F
-	warp_def $7, $a, 3, BURNED_TOWER_B1F
-	warp_def $e, $5, 4, BURNED_TOWER_B1F
-	warp_def $e, $4, 4, BURNED_TOWER_B1F
-	warp_def $e, $e, 5, BURNED_TOWER_B1F
-	warp_def $e, $f, 5, BURNED_TOWER_B1F
-	warp_def $f, $7, 6, BURNED_TOWER_B1F
+	warp_def $9, $a,  1, BURNED_TOWER_B1F
+	warp_def $5, $5,  1, BURNED_TOWER_B1F
+	warp_def $6, $5,  1, BURNED_TOWER_B1F
+	warp_def $6, $4,  1, BURNED_TOWER_B1F
+	warp_def $4, $f,  2, BURNED_TOWER_B1F
+	warp_def $5, $f,  2, BURNED_TOWER_B1F
+	warp_def $7, $a,  3, BURNED_TOWER_B1F
+	warp_def $e, $5,  4, BURNED_TOWER_B1F
+	warp_def $e, $4,  4, BURNED_TOWER_B1F
+	warp_def $e, $e,  5, BURNED_TOWER_B1F
+	warp_def $e, $f,  5, BURNED_TOWER_B1F
+	warp_def $f, $7,  6, BURNED_TOWER_B1F
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $9, $b, $0, UnknownScript_0x185c25, $0, $0
+	xy_trigger 1, $9, $b, $0, BurnedTowerRivalBattleScript, $0, $0
 
 .Signposts:
 	db 2
-	signpost 7, 8, SIGNPOST_ITEM, MapBurnedTower1FSignpostItem0
-	signpost 11, 13, SIGNPOST_ITEM, MapBurnedTower1FSignpostItem1
+	signpost  7,  8, SIGNPOST_ITEM, BurnedTower1FHiddenEther
+	signpost 11, 13, SIGNPOST_ITEM, BurnedTower1FHiddenUltraBall
 
 .PersonEvents:
 	db 5
 	person_event SPRITE_ROCK, 4, 15, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BurnedTower1FRock, -1
-	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x185cbc, EVENT_BURNED_TOWER_1F_EUSINE
+	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BurnedTower1FEusineScript, EVENT_BURNED_TOWER_1F_EUSINE
 	person_event SPRITE_SILVER, 9, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, ObjectEvent, EVENT_RIVAL_BURNED_TOWER
-	person_event SPRITE_MORTY, 14, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, MortyScript_0x185cbf, EVENT_BURNED_TOWER_MORTY
-	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_SCRIPT, 0, BurnedTower1FMortyScript, EVENT_BURNED_TOWER_MORTY
+	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, BurnedTower1FHPUp, EVENT_BURNED_TOWER_1F_HP_UP
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const BURNEDTOWERB1F_BOULDER
+	const BURNEDTOWERB1F_RAIKOU1
+	const BURNEDTOWERB1F_ENTEI1
+	const BURNEDTOWERB1F_SUICUNE1
+	const BURNEDTOWERB1F_RAIKOU2
+	const BURNEDTOWERB1F_ENTEI2
+	const BURNEDTOWERB1F_SUICUNE2
+	const BURNEDTOWERB1F_POKE_BALL
+	const BURNEDTOWERB1F_SUPER_NERD
+
 BurnedTowerB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -29,51 +40,51 @@
 UnknownScript_0x18616b:
 	playmusic MUSIC_NONE
 	pause 30
-	appear $3
+	appear BURNEDTOWERB1F_RAIKOU1
 	spriteface PLAYER, UP
 	pause 5
-	disappear $6
+	disappear BURNEDTOWERB1F_RAIKOU2
 	pause 15
 	cry RAIKOU
-	appear $4
+	appear BURNEDTOWERB1F_ENTEI1
 	spriteface PLAYER, UP
 	pause 5
-	disappear $7
+	disappear BURNEDTOWERB1F_ENTEI2
 	pause 15
 	cry ENTEI
-	appear $5
+	appear BURNEDTOWERB1F_SUICUNE1
 	spriteface PLAYER, UP
 	pause 5
-	disappear $8
+	disappear BURNEDTOWERB1F_SUICUNE2
 	pause 15
 	cry SUICUNE
 	pause 15
 	playsound SFX_WARP_FROM
 	spriteface PLAYER, LEFT
-	applymovement $3, MovementData_0x186236
-	disappear $3
-	waitbutton
+	applymovement BURNEDTOWERB1F_RAIKOU1, MovementData_0x186236
+	disappear BURNEDTOWERB1F_RAIKOU1
+	waitsfx
 	playsound SFX_WARP_FROM
 	spriteface PLAYER, RIGHT
-	applymovement $4, MovementData_0x18623b
-	disappear $4
-	waitbutton
+	applymovement BURNEDTOWERB1F_ENTEI1, MovementData_0x18623b
+	disappear BURNEDTOWERB1F_ENTEI1
+	waitsfx
 	pause 15
 	playsound SFX_WARP_FROM
 	spriteface PLAYER, UP
-	applymovement $5, MovementData_0x186241
+	applymovement BURNEDTOWERB1F_SUICUNE1, MovementData_0x186241
 	playsound SFX_WARP_FROM
 	spriteface PLAYER, DOWN
-	applymovement $5, MovementData_0x186248
+	applymovement BURNEDTOWERB1F_SUICUNE1, MovementData_0x186248
 	spriteface PLAYER, UP
 	pause 20
 	cry SUICUNE
 	pause 30
 	playsound SFX_WARP_FROM
-	applymovement $5, MovementData_0x186253
+	applymovement BURNEDTOWERB1F_SUICUNE1, MovementData_0x186253
 	spriteface PLAYER, DOWN
-	disappear $5
-	waitbutton
+	disappear BURNEDTOWERB1F_SUICUNE1
+	waitsfx
 	special RestartMapMusic
 	dotrigger $1
 	setevent EVENT_RELEASED_THE_BEASTS
@@ -85,35 +96,35 @@
 	clearevent EVENT_ECRUTEAK_CITY_GRAMPS
 	setevent EVENT_BURNED_TOWER_MORTY
 	setevent EVENT_BURNED_TOWER_1F_EUSINE
-	appear $a
+	appear BURNEDTOWERB1F_SUPER_NERD
 	refreshscreen $0
 	changeblock $6, $e, $1b
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	end
 
 SuperNerdScript_0x186212:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x18626a
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
 	if_equal $1, UnknownScript_0x186226
-	applymovement $a, MovementData_0x186263
+	applymovement BURNEDTOWERB1F_SUPER_NERD, MovementData_0x186263
 	jump UnknownScript_0x18622a
 
 UnknownScript_0x186226:
-	applymovement $a, MovementData_0x18625c
+	applymovement BURNEDTOWERB1F_SUPER_NERD, MovementData_0x18625c
 UnknownScript_0x18622a:
-	disappear $a
+	disappear BURNEDTOWERB1F_SUPER_NERD
 	playsound SFX_EXIT_BUILDING
-	waitbutton
+	waitsfx
 	end
 
-ItemFragment_0x186231:
-	db TM_ENDURE, 1
+BurnedTowerB1FTMEndure:
+	itemball TM_ENDURE
 
 BurnedTowerB1FBoulder:
 	jumpstd strengthboulder
@@ -258,5 +269,5 @@
 	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
 	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
 	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
-	person_event SPRITE_POKE_BALL, 4, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x186231, EVENT_BURNED_TOWER_B1F_TM_ENDURE
+	person_event SPRITE_POKE_BALL, 4, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, BurnedTowerB1FTMEndure, EVENT_BURNED_TOWER_B1F_TM_ENDURE
 	person_event SPRITE_SUPER_NERD, 12, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const CELADONCAFE_SUPER_NERD
+	const CELADONCAFE_FISHER1
+	const CELADONCAFE_FISHER2
+	const CELADONCAFE_FISHER3
+	const CELADONCAFE_TEACHER
+
 CeladonCafe_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,77 +14,77 @@
 
 SuperNerdScript_0x73049:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x730de
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x73051:
-	loadfont
+	opentext
 	writetext UnknownText_0x73129
+	waitbutton
 	closetext
-	loadmovesprites
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x7313a
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, LEFT
+	spriteface CELADONCAFE_FISHER1, LEFT
 	end
 
 FisherScript_0x73062:
-	loadfont
+	opentext
 	writetext UnknownText_0x7316a
+	waitbutton
 	closetext
-	loadmovesprites
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x73178
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, RIGHT
+	spriteface CELADONCAFE_FISHER2, RIGHT
 	end
 
 FisherScript_0x73073:
-	loadfont
+	opentext
 	writetext UnknownText_0x731ae
+	waitbutton
 	closetext
-	loadmovesprites
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x731bd
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, RIGHT
+	spriteface CELADONCAFE_FISHER3, RIGHT
 	end
 
 TeacherScript_0x73084:
 	checkitem COIN_CASE
 	iftrue UnknownScript_0x7309a
-	loadfont
+	opentext
 	writetext UnknownText_0x73201
+	waitbutton
 	closetext
-	loadmovesprites
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x73212
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, LEFT
+	spriteface CELADONCAFE_TEACHER, LEFT
 	end
 
 UnknownScript_0x7309a:
-	loadfont
+	opentext
 	writetext UnknownText_0x73254
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
-	loadfont
+	spriteface CELADONCAFE_TEACHER, RIGHT
+	opentext
 	writetext UnknownText_0x73278
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, LEFT
+	spriteface CELADONCAFE_TEACHER, LEFT
 	end
 
 EatathonContestPoster:
@@ -88,24 +95,24 @@
 	iftrue .TrashEmpty
 	giveitem LEFTOVERS
 	iffalse .PackFull
-	loadfont
+	opentext
 	itemtotext LEFTOVERS, $0
 	writetext FoundLeftoversText
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
-	loadmovesprites
+	closetext
 	setevent EVENT_FOUND_LEFTOVERS_IN_CELADON_CAFE
 	end
 
 .PackFull
-	loadfont
+	opentext
 	itemtotext LEFTOVERS, $0
 	writetext FoundLeftoversText
-	keeptextopen
+	buttonsound
 	writetext NoRoomForLeftoversText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .TrashEmpty
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const CELADONCITY_FISHER
+	const CELADONCITY_POLIWAG
+	const CELADONCITY_TEACHER1
+	const CELADONCITY_GRAMPS1
+	const CELADONCITY_GRAMPS2
+	const CELADONCITY_YOUNGSTER1
+	const CELADONCITY_YOUNGSTER2
+	const CELADONCITY_TEACHER2
+	const CELADONCITY_LASS
+
 CeladonCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,11 +27,11 @@
 	jumptextfaceplayer UnknownText_0x1a9f7d
 
 CeladonCityPoliwrath:
-	loadfont
+	opentext
 	writetext CeladonCityPoliwrathText
 	cry POLIWRATH
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TeacherScript_0x1a9f50:
@@ -65,7 +76,7 @@
 CeladonCityPokeCenterSign:
 	jumpstd pokecentersign
 
-MapCeladonCitySignpostItem7:
+CeladonCityHiddenPpUp:
 	dwb EVENT_CELADON_CITY_HIDDEN_PP_UP, PP_UP
 
 UnknownText_0x1a9f7d:
@@ -253,7 +264,7 @@
 	signpost 21, 19, SIGNPOST_READ, CeladonCityGameCornerSign
 	signpost 21, 29, SIGNPOST_READ, CeladonCityTrainerTips
 	signpost 9, 30, SIGNPOST_READ, CeladonCityPokeCenterSign
-	signpost 21, 37, SIGNPOST_ITEM, MapCeladonCitySignpostItem7
+	signpost 21, 37, SIGNPOST_ITEM, CeladonCityHiddenPpUp
 
 .PersonEvents:
 	db 9
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CELADONDEPTSTORE1F_RECEPTIONIST
+	const CELADONDEPTSTORE1F_GENTLEMAN
+	const CELADONDEPTSTORE1F_TEACHER
+
 CeladonDeptStore1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeladonDeptStore2F.asm
+++ b/maps/CeladonDeptStore2F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CELADONDEPTSTORE2F_CLERK1
+	const CELADONDEPTSTORE2F_CLERK2
+	const CELADONDEPTSTORE2F_POKEFAN_M
+	const CELADONDEPTSTORE2F_YOUNGSTER
+
 CeladonDeptStore2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,16 +13,16 @@
 
 ClerkScript_0x70bad:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_2F_1
-	loadmovesprites
+	closetext
 	end
 
 ClerkScript_0x70bb5:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_2F_2
-	loadmovesprites
+	closetext
 	end
 
 PokefanMScript_0x70bbd:
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const CELADONDEPTSTORE3F_CLERK
+	const CELADONDEPTSTORE3F_YOUNGSTER
+	const CELADONDEPTSTORE3F_GAMEBOY_KID1
+	const CELADONDEPTSTORE3F_GAMEBOY_KID2
+	const CELADONDEPTSTORE3F_SUPER_NERD
+
 CeladonDeptStore3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,9 +14,9 @@
 
 ClerkScript_0x70d29:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_3F
-	loadmovesprites
+	closetext
 	end
 
 YoungsterScript_0x70d31:
@@ -17,20 +24,20 @@
 
 GameboyKidScript_0x70d34:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x70d86
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, DOWN
+	spriteface CELADONDEPTSTORE3F_GAMEBOY_KID1, DOWN
 	end
 
 GameboyKidScript_0x70d3f:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x70dc7
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, DOWN
+	spriteface CELADONDEPTSTORE3F_GAMEBOY_KID2, DOWN
 	end
 
 SuperNerdScript_0x70d4a:
--- a/maps/CeladonDeptStore4F.asm
+++ b/maps/CeladonDeptStore4F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CELADONDEPTSTORE4F_CLERK
+	const CELADONDEPTSTORE4F_SUPER_NERD
+	const CELADONDEPTSTORE4F_YOUNGSTER
+
 CeladonDeptStore4F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,9 +12,9 @@
 
 ClerkScript_0x70f0d:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_4F
-	loadmovesprites
+	closetext
 	end
 
 SuperNerdScript_0x70f15:
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const CELADONDEPTSTORE5F_CLERK1
+	const CELADONDEPTSTORE5F_CLERK2
+	const CELADONDEPTSTORE5F_GENTLEMAN
+	const CELADONDEPTSTORE5F_SAILOR
+	const CELADONDEPTSTORE5F_TEACHER
+
 CeladonDeptStore5F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,16 +14,16 @@
 
 ClerkScript_0x71004:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_5F_1
-	loadmovesprites
+	closetext
 	end
 
 ClerkScript_0x7100c:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CELADON_5F_2
-	loadmovesprites
+	closetext
 	end
 
 GentlemanScript_0x71014:
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const CELADONDEPTSTORE6F_SUPER_NERD
+	const CELADONDEPTSTORE6F_YOUNGSTER
+
 CeladonDeptStore6F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -20,17 +24,17 @@
 	jumptextfaceplayer UnknownText_0x71310
 
 CeladonVendingMachine:
-	loadfont
+	opentext
 	writetext CeladonVendingText
 .Start
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	loadmenudata .MenuData
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .FreshWater
 	if_equal $2, .SodaPop
 	if_equal $3, .Lemonade
-	loadmovesprites
+	closetext
 	end
 
 .FreshWater
@@ -64,18 +68,18 @@
 	pause 10
 	playsound SFX_ENTER_DOOR
 	writetext CeladonClangText
-	keeptextopen
+	buttonsound
 	itemnotify
 	jump .Start
 
 .NotEnoughMoney
 	writetext CeladonVendingNoMoneyText
-	closetext
+	waitbutton
 	jump .Start
 
 .NotEnoughSpace
 	writetext CeladonVendingNoSpaceText
-	closetext
+	waitbutton
 	jump .Start
 
 .MenuData
--- a/maps/CeladonDeptStoreElevator.asm
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -1,3 +1,4 @@
+
 CeladonDeptStoreElevator_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,14 +7,14 @@
 	db 0
 
 MapCeladonDeptStoreElevatorSignpost0Script:
-	loadfont
+	opentext
 	elevator Elevator_0x713be
-	loadmovesprites
+	closetext
 	iffalse UnknownScript_0x713bd
 	pause 5
 	playsound SFX_ELEVATOR
 	earthquake 60
-	waitbutton
+	waitsfx
 UnknownScript_0x713bd:
 	end
 
--- a/maps/CeladonGameCorner.asm
+++ b/maps/CeladonGameCorner.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const CELADONGAMECORNER_CLERK
+	const CELADONGAMECORNER_RECEPTIONIST
+	const CELADONGAMECORNER_POKEFAN_M
+	const CELADONGAMECORNER_TEACHER
+	const CELADONGAMECORNER_FISHING_GURU
+	const CELADONGAMECORNER_FISHER1
+	const CELADONGAMECORNER_FISHER2
+	const CELADONGAMECORNER_GYM_GUY
+	const CELADONGAMECORNER_GRAMPS
+
 CeladonGameCorner_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,38 +24,38 @@
 
 PokefanMScript_0x72123:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x72215
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, LEFT
+	spriteface CELADONGAMECORNER_POKEFAN_M, LEFT
 	end
 
 TeacherScript_0x7212e:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x72242
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, RIGHT
+	spriteface CELADONGAMECORNER_TEACHER, RIGHT
 	end
 
 FishingGuruScript_0x72139:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x72295
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
+	spriteface CELADONGAMECORNER_FISHING_GURU, RIGHT
 	end
 
 FisherScript_0x72144:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_COINS_FROM_GAMBLER_AT_CELADON
 	iftrue .UnknownScript_0x72169
 	writetext UnknownText_0x722dc
-	keeptextopen
+	buttonsound
 	checkitem COIN_CASE
 	iffalse UnknownScript_0x7217b
 	checkcoins 9998
@@ -55,8 +66,8 @@
 	setevent EVENT_GOT_COINS_FROM_GAMBLER_AT_CELADON
 .UnknownScript_0x72169
 	writetext UnknownText_0x72345
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface LAST_TALKED, LEFT
 	end
 
@@ -69,15 +80,15 @@
 
 UnknownScript_0x7217b:
 	writetext UnknownText_0x7238a
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface LAST_TALKED, LEFT
 	end
 
 UnknownScript_0x72184:
 	writetext UnknownText_0x723d9
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface LAST_TALKED, LEFT
 	end
 
@@ -86,11 +97,11 @@
 
 GrampsScript_0x72190:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x724ad
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $a, LEFT
+	spriteface CELADONGAMECORNER_GRAMPS, LEFT
 	end
 
 MapCeladonGameCornerSignpost36Script:
@@ -105,7 +116,7 @@
 	refreshscreen $0
 	writebyte $0
 	special Special_SlotMachine
-	loadmovesprites
+	closetext
 	end
 
 MapCeladonGameCornerSignpost16Script:
@@ -112,13 +123,13 @@
 	refreshscreen $0
 	writebyte $1
 	special Special_SlotMachine
-	loadmovesprites
+	closetext
 	end
 
 MapCeladonGameCornerSignpost11Script:
 	refreshscreen $0
 	special Special_CardFlip
-	loadmovesprites
+	closetext
 	end
 
 MapCeladonGameCornerSignpost32Script:
@@ -125,11 +136,11 @@
 	jumptext UnknownText_0x7254f
 
 MapCeladonGameCornerSignpost9Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x72567
-	closetext
+	waitbutton
 	special Special_CardFlip
-	loadmovesprites
+	closetext
 	end
 
 MovementData_0x721cd:
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const CELADONGAMECORNERPRIZEROOM_GENTLEMAN
+	const CELADONGAMECORNERPRIZEROOM_PHARMACIST
+
 CeladonGameCornerPrizeRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,25 +9,25 @@
 .MapCallbacks:
 	db 0
 
-GentlemanScript_0x726e9:
-	jumptextfaceplayer UnknownText_0x728b8
+CeladonGameCornerPrizeRoomGentlemanScript:
+	jumptextfaceplayer CeladonGameCornerPrizeRoomGentlemanText
 
-PharmacistScript_0x726ec:
-	jumptextfaceplayer UnknownText_0x728e9
+CeladonGameCornerPrizeRoomPharmacistScript:
+	jumptextfaceplayer CeladonGameCornerPrizeRoomPharmacistText
 
-MapCeladonGameCornerPrizeRoomSignpost0Script:
+GoldenrodGameCornerTMVendor:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x7293e
-	closetext
+	opentext
+	writetext CeladonPrizeRoom_PrizeVendorIntroText
+	waitbutton
 	checkitem COIN_CASE
 	iffalse CeladonPrizeRoom_NoCoinCase
-	writetext UnknownText_0x72974
+	writetext CeladonPrizeRoom_AskWhichPrizeText
 CeladonPrizeRoom_tmcounterloop:
 	special Special_DisplayCoinCaseBalance
-	loadmenudata MenuDataHeader_0x72790
-	interpretmenu2
-	writebackup
+	loadmenudata CeladonPrizeRoom_TMMenuDataHeader
+	verticalmenu
+	closewindow
 	if_equal $1, .doubleteam
 	if_equal $2, .psychic
 	if_equal $3, .hyperbeam
@@ -63,50 +67,50 @@
 	jump CeladonPrizeRoom_purchased
 
 CeladonPrizeRoom_askbuy:
-	writetext UnknownText_0x72991
+	writetext CeladonPrizeRoom_ConfirmPurchaseText
 	yesorno
 	end
 
 CeladonPrizeRoom_purchased:
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x729ad
-	closetext
+	writetext CeladonPrizeRoom_HereYouGoText
+	waitbutton
 	jump CeladonPrizeRoom_tmcounterloop
 
 CeladonPrizeRoom_notenoughcoins:
-	writetext UnknownText_0x729bb
+	writetext CeladonPrizeRoom_NotEnoughCoinsText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonPrizeRoom_notenoughroom:
-	writetext UnknownText_0x729d8
+	writetext CeladonPrizeRoom_NotEnoughRoomText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonPrizeRoom_cancel:
-	writetext UnknownText_0x729f2
+	writetext CeladonPrizeRoom_ComeAgainText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonPrizeRoom_NoCoinCase:
-	writetext UnknownText_0x72a14
+	writetext CeladonPrizeRoom_NoCoinCaseText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
-MenuDataHeader_0x72790:
+CeladonPrizeRoom_TMMenuDataHeader:
 	db $40 ; flags
 	db 02, 00 ; start coords
 	db 11, 15 ; end coords
-	dw MenuData2_0x72798
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x72798:
+.MenuData2:
 	db $80 ; flags
 	db 4 ; items
 	db "TM32    1500@"
@@ -115,19 +119,19 @@
 	db "CANCEL@"
 
 
-MapCeladonGameCornerPrizeRoomSignpost1Script:
+GoldenrodGameCornerPokemonVendor:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x7293e
-	closetext
+	opentext
+	writetext CeladonPrizeRoom_PrizeVendorIntroText
+	waitbutton
 	checkitem COIN_CASE
 	iffalse CeladonPrizeRoom_NoCoinCase
 .loop:
-	writetext UnknownText_0x72974
+	writetext CeladonPrizeRoom_AskWhichPrizeText
 	special Special_DisplayCoinCaseBalance
-	loadmenudata MenuDataHeader_0x72877
-	interpretmenu2
-	writebackup
+	loadmenudata .MenuDataHeader
+	verticalmenu
+	closewindow
 	if_equal $1, .pikachu
 	if_equal $2, .porygon
 	if_equal $3, .larvitar
@@ -141,10 +145,10 @@
 	pokenamemem PIKACHU, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x729ad
-	closetext
+	writetext CeladonPrizeRoom_HereYouGoText
+	waitbutton
 	writebyte PIKACHU
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke PIKACHU, 25
@@ -159,10 +163,10 @@
 	pokenamemem PORYGON, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x729ad
-	closetext
+	writetext CeladonPrizeRoom_HereYouGoText
+	waitbutton
 	writebyte PORYGON
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke PORYGON, 15
@@ -177,10 +181,10 @@
 	pokenamemem LARVITAR, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x729ad
-	closetext
+	writetext CeladonPrizeRoom_HereYouGoText
+	waitbutton
 	writebyte LARVITAR
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke LARVITAR, 40
@@ -188,14 +192,14 @@
 	jump .loop
 
 
-MenuDataHeader_0x72877:
+.MenuDataHeader:
 	db $40 ; flags
 	db 02, 00 ; start coords
 	db 11, 17 ; end coords
-	dw MenuData2_0x7287f
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x7287f:
+.MenuData2:
 	db $80 ; flags
 	db 4 ; items
 	db "PIKACHU    2222@"
@@ -204,13 +208,13 @@
 	db "CANCEL@"
 
 
-UnknownText_0x728b8:
+CeladonGameCornerPrizeRoomGentlemanText:
 	text "I wanted PORYGON,"
 	line "but I was short by"
 	cont "100 coins…"
 	done
 
-UnknownText_0x728e9:
+CeladonGameCornerPrizeRoomPharmacistText:
 	text "Whew…"
 
 	para "I've got to stay"
@@ -221,7 +225,7 @@
 	cont "all my money…"
 	done
 
-UnknownText_0x7293e:
+CeladonPrizeRoom_PrizeVendorIntroText:
 	text "Welcome!"
 
 	para "We exchange your"
@@ -229,12 +233,12 @@
 	cont "prizes!"
 	done
 
-UnknownText_0x72974:
+CeladonPrizeRoom_AskWhichPrizeText:
 	text "Which prize would"
 	line "you like?"
 	done
 
-UnknownText_0x72991:
+CeladonPrizeRoom_ConfirmPurchaseText:
 	text "OK, so you wanted"
 	line "a @"
 	text_from_ram StringBuffer3
@@ -241,26 +245,26 @@
 	text "?"
 	done
 
-UnknownText_0x729ad:
+CeladonPrizeRoom_HereYouGoText:
 	text "Here you go!"
 	done
 
-UnknownText_0x729bb:
+CeladonPrizeRoom_NotEnoughCoinsText:
 	text "You don't have"
 	line "enough coins."
 	done
 
-UnknownText_0x729d8:
+CeladonPrizeRoom_NotEnoughRoomText:
 	text "You have no room"
 	line "for it."
 	done
 
-UnknownText_0x729f2:
+CeladonPrizeRoom_ComeAgainText:
 	text "Oh. Please come"
 	line "back with coins!"
 	done
 
-UnknownText_0x72a14:
+CeladonPrizeRoom_NoCoinCaseText:
 	text "Oh? You don't have"
 	line "a COIN CASE."
 	done
@@ -279,10 +283,10 @@
 
 .Signposts:
 	db 2
-	signpost 1, 2, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost0Script
-	signpost 1, 4, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, GoldenrodGameCornerTMVendor
+	signpost 1, 4, SIGNPOST_READ, GoldenrodGameCornerPokemonVendor
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GENTLEMAN, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x726e9, -1
-	person_event SPRITE_PHARMACIST, 4, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x726ec, -1
+	person_event SPRITE_GENTLEMAN, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomGentlemanScript, -1
+	person_event SPRITE_PHARMACIST, 4, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomPharmacistScript, -1
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const CELADONGYM_ERIKA
+	const CELADONGYM_LASS1
+	const CELADONGYM_LASS2
+	const CELADONGYM_BUENA
+	const CELADONGYM_TWIN1
+	const CELADONGYM_TWIN2
+
 CeladonGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,38 +15,38 @@
 
 ErikaScript_0x72a6a:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_RAINBOWBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x72b28
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x72c3e, 0
 	loadtrainer ERIKA, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ERIKA
 	setevent EVENT_BEAT_LASS_MICHELLE
 	setevent EVENT_BEAT_PICNICKER_TANYA
 	setevent EVENT_BEAT_BEAUTY_JULIA
 	setevent EVENT_BEAT_TWINS_JO_AND_ZOE
-	loadfont
+	opentext
 	writetext UnknownText_0x72c96
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_RAINBOWBADGE
 .FightDone
 	checkevent EVENT_GOT_TM19_GIGA_DRAIN
 	iftrue UnknownScript_0x72aae
 	writetext UnknownText_0x72cb0
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_GIGA_DRAIN
 	iffalse UnknownScript_0x72aae
 	setevent EVENT_GOT_TM19_GIGA_DRAIN
 UnknownScript_0x72aae:
 	writetext UnknownText_0x72d8f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerLassMichelle:
@@ -45,11 +53,11 @@
 	trainer EVENT_BEAT_LASS_MICHELLE, LASS, MICHELLE, LassMichelleSeenText, LassMichelleBeatenText, 0, LassMichelleScript
 
 LassMichelleScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x72e30
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerTanya:
@@ -56,11 +64,11 @@
 	trainer EVENT_BEAT_PICNICKER_TANYA, PICNICKER, TANYA, PicnickerTanyaSeenText, PicnickerTanyaBeatenText, 0, PicnickerTanyaScript
 
 PicnickerTanyaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x72e8e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBeautyJulia:
@@ -67,11 +75,11 @@
 	trainer EVENT_BEAT_BEAUTY_JULIA, BEAUTY, JULIA, BeautyJuliaSeenText, BeautyJuliaBeatenText, 0, BeautyJuliaScript
 
 BeautyJuliaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x72f01
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsJoandzoe1:
@@ -78,11 +86,11 @@
 	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE1, TwinsJoandzoe1SeenText, TwinsJoandzoe1BeatenText, 0, TwinsJoandzoe1Script
 
 TwinsJoandzoe1Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x72f70
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsJoandzoe2:
@@ -89,11 +97,11 @@
 	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE2, TwinsJoandzoe2SeenText, TwinsJoandzoe2BeatenText, 0, TwinsJoandzoe2Script
 
 TwinsJoandzoe2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x72fc0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonGymStatue:
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CELADONMANSION1F_GRANNY
+	const CELADONMANSION1F_GROWLITHE1
+	const CELADONMANSION1F_CLEFAIRY
+	const CELADONMANSION1F_GROWLITHE2
+
 CeladonMansion1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,27 +15,27 @@
 	jumptextfaceplayer CeladonMansionManagerText
 
 CeladonMansion1FMeowth:
-	loadfont
+	opentext
 	writetext CeladonMansion1FMeowthText
 	cry MEOWTH
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonMansion1FClefairy:
-	loadfont
+	opentext
 	writetext CeladonMansion1FClefairyText
 	cry CLEFAIRY
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonMansion1FNidoranF:
-	loadfont
+	opentext
 	writetext CeladonMansion1FNidoranFText
 	cry NIDORAN_F
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeladonMansionManagersSuiteSign:
--- a/maps/CeladonMansion2F.asm
+++ b/maps/CeladonMansion2F.asm
@@ -1,3 +1,4 @@
+
 CeladonMansion2F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CELADONMANSION3F_COOLTRAINER_M
+	const CELADONMANSION3F_GYM_GUY
+	const CELADONMANSION3F_SUPER_NERD
+	const CELADONMANSION3F_FISHER
+
 CeladonMansion3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,36 +13,36 @@
 
 CooltrainerMScript_0x71670:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x716ce
 	checkcode VAR_DEXCAUGHT
 	if_greater_than 248, UnknownScript_0x7167e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7167e:
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x71725
 	playsound SFX_DEX_FANFARE_230_PLUS
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x71760
-	keeptextopen
+	buttonsound
 	special Diploma
 	writetext UnknownText_0x71763
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_ENABLE_DIPLOMA_PRINTING
 	end
 
 GymGuyScript_0x71696:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_ENABLE_DIPLOMA_PRINTING
 	iftrue UnknownScript_0x716a4
 	writetext UnknownText_0x717b4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x716a4:
@@ -44,19 +50,19 @@
 	yesorno
 	iffalse UnknownScript_0x716b0
 	special PrintDiploma
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x716b0:
 	writetext UnknownText_0x71830
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x716b6:
 	writetext UnknownText_0x71863
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x716bc:
--- a/maps/CeladonMansionRoof.asm
+++ b/maps/CeladonMansionRoof.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CELADONMANSIONROOF_FISHER
+
 CeladonMansionRoof_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CELADONMANSIONROOFHOUSE_PHARMACIST
+
 CeladonMansionRoofHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,29 +10,29 @@
 
 PharmacistScript_0x71afd:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM03_CURSE
 	iftrue UnknownScript_0x71b21
 	writetext UnknownText_0x71b27
-	keeptextopen
+	buttonsound
 	checknite
 	iftrue UnknownScript_0x71b14
 	writetext UnknownText_0x71b4a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x71b14:
 	writetext UnknownText_0x71ba3
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_CURSE
 	iffalse UnknownScript_0x71b25
 	setevent EVENT_GOT_TM03_CURSE
 UnknownScript_0x71b21:
 	writetext UnknownText_0x71db3
-	closetext
+	waitbutton
 UnknownScript_0x71b25:
-	loadmovesprites
+	closetext
 	end
 
 UnknownText_0x71b27:
--- a/maps/CeladonPokeCenter1F.asm
+++ b/maps/CeladonPokeCenter1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const CELADONPOKECENTER1F_NURSE
+	const CELADONPOKECENTER1F_GENTLEMAN
+	const CELADONPOKECENTER1F_PHARMACIST
+	const CELADONPOKECENTER1F_COOLTRAINER_F
+	const CELADONPOKECENTER1F_SUPER_NERD
+
 CeladonPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -19,9 +26,9 @@
 
 SuperNerdScript_0x71e2e:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x71f22
-	keeptextopen
+	buttonsound
 	writebyte SUICUNE
 	special SpecialMonCheck
 	iffalse UnknownScript_0x71e46
@@ -28,26 +35,26 @@
 	special SpecialBeastsCheck
 	iftrue UnknownScript_0x71e48
 	writetext UnknownText_0x7201a
-	closetext
+	waitbutton
 UnknownScript_0x71e46:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x71e48:
 	writetext UnknownText_0x71f65
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
 	if_equal $1, UnknownScript_0x71e5a
-	applymovement $6, MovementData_0x71e6b
+	applymovement CELADONPOKECENTER1F_SUPER_NERD, MovementData_0x71e6b
 	jump UnknownScript_0x71e5e
 
 UnknownScript_0x71e5a:
-	applymovement $6, MovementData_0x71e65
+	applymovement CELADONPOKECENTER1F_SUPER_NERD, MovementData_0x71e65
 UnknownScript_0x71e5e:
-	disappear $6
+	disappear CELADONPOKECENTER1F_SUPER_NERD
 	playsound SFX_EXIT_BUILDING
-	waitbutton
+	waitsfx
 	end
 
 MovementData_0x71e65:
--- a/maps/CeladonPokeCenter2FBeta.asm
+++ b/maps/CeladonPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 CeladonPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const CERULEANCITY_COOLTRAINER_M
+	const CERULEANCITY_SUPER_NERD
+	const CERULEANCITY_SLOWPOKE
+	const CERULEANCITY_COOLTRAINER_F
+	const CERULEANCITY_FISHER
+	const CERULEANCITY_YOUNGSTER
+
 CeruleanCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -14,18 +22,18 @@
 
 CooltrainerMScript_0x184009:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x184017
 	writetext UnknownText_0x1840bc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x184017:
 	writetext UnknownText_0x184144
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x18401d:
@@ -32,38 +40,38 @@
 	jumptextfaceplayer UnknownText_0x1841a8
 
 CeruleanCitySlowbro:
-	loadfont
+	opentext
 	writetext CeruleanCitySlowbroText
 	cry SLOWBRO
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x18402a:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x1841fa
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, LEFT
-	loadfont
+	spriteface CERULEANCITY_COOLTRAINER_F, LEFT
+	opentext
 	writetext UnknownText_0x184229
+	waitbutton
 	closetext
-	loadmovesprites
-	loadfont
+	opentext
 	writetext CeruleanCitySlowbroText
 	cry SLOWBRO
+	waitbutton
 	closetext
-	loadmovesprites
-	loadfont
+	opentext
 	writetext UnknownText_0x18424b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x18404a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x184058
 	checkevent EVENT_MET_ROCKET_GRUNT_AT_CERULEAN_GYM
@@ -70,50 +78,50 @@
 	iftrue UnknownScript_0x18405e
 UnknownScript_0x184058:
 	writetext UnknownText_0x18424e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x18405e:
 	writetext UnknownText_0x184275
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x184064:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x1842a9
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY
 	iffalse UnknownScript_0x184072
 	end
 
 UnknownScript_0x184072:
-	waitbutton
+	waitsfx
 	playsound SFX_SECOND_PART_OF_ITEMFINDER
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	waitbutton
+	waitsfx
 	playsound SFX_SECOND_PART_OF_ITEMFINDER
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	waitbutton
+	waitsfx
 	playsound SFX_SECOND_PART_OF_ITEMFINDER
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	waitbutton
+	waitsfx
 	playsound SFX_SECOND_PART_OF_ITEMFINDER
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
-	waitbutton
-	showemote EMOTE_SHOCK, $7, 15
-	spriteface $7, LEFT
-	loadfont
+	waitsfx
+	showemote EMOTE_SHOCK, CERULEANCITY_YOUNGSTER, 15
+	spriteface CERULEANCITY_YOUNGSTER, LEFT
+	opentext
 	writetext UnknownText_0x1842ee
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeruleanCitySign:
@@ -140,7 +148,7 @@
 CeruleanCityMartSign:
 	jumpstd martsign
 
-MapCeruleanCitySignpostItem8:
+CeruleanCityHiddenBerserkGene:
 	dwb EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY, BERSERK_GENE
 
 UnknownText_0x1840bc:
@@ -295,7 +303,7 @@
 	signpost 29, 14, SIGNPOST_READ, CeruleanLockedDoor
 	signpost 21, 20, SIGNPOST_READ, CeruleanCityPokeCenterSign
 	signpost 29, 26, SIGNPOST_READ, CeruleanCityMartSign
-	signpost 12, 2, SIGNPOST_ITEM, MapCeruleanCitySignpostItem8
+	signpost 12, 2, SIGNPOST_ITEM, CeruleanCityHiddenBerserkGene
 
 .PersonEvents:
 	db 6
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const CERULEANGYM_ROCKET
+	const CERULEANGYM_MISTY
+	const CERULEANGYM_SWIMMER_GIRL1
+	const CERULEANGYM_SWIMMER_GIRL2
+	const CERULEANGYM_SWIMMER_GUY
+	const CERULEANGYM_GYM_GUY
+
 CeruleanGym_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -17,28 +25,28 @@
 	end
 
 UnknownScript_0x1883de:
-	applymovement $2, MovementData_0x1884e3
+	applymovement CERULEANGYM_ROCKET, MovementData_0x1884e3
 	playsound SFX_TACKLE
-	applymovement $2, MovementData_0x1884eb
+	applymovement CERULEANGYM_ROCKET, MovementData_0x1884eb
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1884fb
+	waitbutton
 	closetext
-	loadmovesprites
-	showemote EMOTE_SHOCK, $2, 15
-	applymovement $2, MovementData_0x1884f7
-	loadfont
+	showemote EMOTE_SHOCK, CERULEANGYM_ROCKET, 15
+	applymovement CERULEANGYM_ROCKET, MovementData_0x1884f7
+	opentext
 	writetext UnknownText_0x188574
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x1884f5
-	loadfont
+	applymovement CERULEANGYM_ROCKET, MovementData_0x1884f5
+	opentext
 	writetext UnknownText_0x1885a5
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x1884e8
+	applymovement CERULEANGYM_ROCKET, MovementData_0x1884e8
 	playsound SFX_EXIT_BUILDING
-	disappear $2
+	disappear CERULEANGYM_ROCKET
 	setevent EVENT_MET_ROCKET_GRUNT_AT_CERULEAN_GYM
 	clearevent EVENT_ROUTE_24_ROCKET
 	clearevent EVENT_ROUTE_25_MISTY_BOYFRIEND
@@ -45,7 +53,7 @@
 	dotrigger $0
 	domaptrigger ROUTE_25, $1
 	domaptrigger POWER_PLANT, $0
-	waitbutton
+	waitsfx
 	special RestartMapMusic
 	pause 15
 	spriteface PLAYER, DOWN
@@ -54,29 +62,29 @@
 
 MistyScript_0x188432:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_CASCADEBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x188674
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x18870c, 0
 	loadtrainer MISTY, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_MISTY
 	setevent EVENT_BEAT_SWIMMERF_DIANA
 	setevent EVENT_BEAT_SWIMMERF_BRIANA
 	setevent EVENT_BEAT_SWIMMERM_PARKER
-	loadfont
+	opentext
 	writetext UnknownText_0x188768
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_CASCADEBADGE
 .FightDone
 	writetext UnknownText_0x188782
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfDiana:
@@ -83,11 +91,11 @@
 	trainer EVENT_BEAT_SWIMMERF_DIANA, SWIMMERF, DIANA, SwimmerfDianaSeenText, SwimmerfDianaBeatenText, 0, SwimmerfDianaScript
 
 SwimmerfDianaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x188856
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfBriana:
@@ -94,11 +102,11 @@
 	trainer EVENT_BEAT_SWIMMERF_BRIANA, SWIMMERF, BRIANA, SwimmerfBrianaSeenText, SwimmerfBrianaBeatenText, 0, SwimmerfBrianaScript
 
 SwimmerfBrianaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1888c0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermParker:
@@ -105,30 +113,30 @@
 	trainer EVENT_BEAT_SWIMMERM_PARKER, SWIMMERM, PARKER, SwimmermParkerSeenText, SwimmermParkerBeatenText, 0, SwimmermParkerScript
 
 SwimmermParkerScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x188943
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeruleanGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_MISTY
 	iftrue .CeruleanGymGuyWinScript
 	writetext CeruleanGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .CeruleanGymGuyWinScript
 	writetext CeruleanGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-MapCeruleanGymSignpostItem0:
+CeruleanGymHiddenMachinePart:
 	dwb EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM, MACHINE_PART
 	
 
@@ -135,19 +143,19 @@
 CeruleanGymStatue1:
 	checkevent EVENT_TRAINERS_IN_CERULEAN_GYM
 	iffalse CeruleanGymStatue
-	loadfont
+	opentext
 	writetext CeruleanGymNote1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeruleanGymStatue2:
 	checkevent EVENT_TRAINERS_IN_CERULEAN_GYM
 	iffalse CeruleanGymStatue
-	loadfont
+	opentext
 	writetext CeruleanGymNote2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CeruleanGymStatue:
@@ -371,7 +379,7 @@
 
 .Signposts:
 	db 3
-	signpost 8, 3, SIGNPOST_ITEM, MapCeruleanGymSignpostItem0
+	signpost 8, 3, SIGNPOST_ITEM, CeruleanGymHiddenMachinePart
 	signpost 13, 2, SIGNPOST_READ, CeruleanGymStatue1
 	signpost 13, 6, SIGNPOST_READ, CeruleanGymStatue2
 
--- a/maps/CeruleanGymBadgeSpeechHouse.asm
+++ b/maps/CeruleanGymBadgeSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CERULEANGYMBADGESPEECHHOUSE_POKEFAN_M
+
 CeruleanGymBadgeSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeruleanMart.asm
+++ b/maps/CeruleanMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CERULEANMART_CLERK
+	const CERULEANMART_COOLTRAINER_M
+	const CERULEANMART_COOLTRAINER_F
+
 CeruleanMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x188ac0:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_CERULEAN
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x188ac7:
--- a/maps/CeruleanPokeCenter1F.asm
+++ b/maps/CeruleanPokeCenter1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CERULEANPOKECENTER1F_NURSE
+	const CERULEANPOKECENTER1F_SUPER_NERD
+	const CERULEANPOKECENTER1F_GYM_GUY
+
 CeruleanPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeruleanPokeCenter2FBeta.asm
+++ b/maps/CeruleanPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 CeruleanPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CERULEANPOLICESTATION_FISHING_GURU
+	const CERULEANPOLICESTATION_POKEFAN_F
+	const CERULEANPOLICESTATION_DIGLETT
+
 CeruleanPoliceStation_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,11 +17,11 @@
 	jumptextfaceplayer UnknownText_0x1880c3
 
 DiglettScript_0x188050:
-	loadfont
+	opentext
 	writetext UnknownText_0x1880e7
 	cry DIGLETT
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x18805a:
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CERULEANTRADESPEECHHOUSE_GRANNY
+	const CERULEANTRADESPEECHHOUSE_GRAMPS
+	const CERULEANTRADESPEECHHOUSE_RHYDON
+	const CERULEANTRADESPEECHHOUSE_ZUBAT
+
 CeruleanTradeSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,19 +18,19 @@
 	jumptextfaceplayer UnknownText_0x18818a
 
 RhydonScript_0x188139:
-	loadfont
+	opentext
 	writetext UnknownText_0x18819c
 	cry KANGASKHAN
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ZubatScript_0x188143:
-	loadfont
+	opentext
 	writetext UnknownText_0x1881b5
 	cry ZUBAT
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x18814d:
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CHARCOALKILN_BLACK_BELT
+	const CHARCOALKILN_YOUNGSTER
+	const CHARCOALKILN_MOLTRES
+
 CharcoalKiln_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,63 +12,63 @@
 
 CharcoalKilnBoss:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HM01_CUT
 	iftrue .GotCut
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
 	iftrue .SavedSlowpoke
 	writetext CharcoalKilnBossText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SavedSlowpoke
 	writetext CharcoalKilnBossText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GotCut
 	writetext CharcoalKilnBossText3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CharcoalKilnApprentice:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_CHARCOAL_IN_CHARCOAL_KILN
 	iftrue .YoureTheCoolest
 	checkevent EVENT_GOT_HM01_CUT
 	iftrue .Thanks
 	writetext CharcoalKilnApprenticeText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Thanks
 	writetext CharcoalKilnApprenticeText2
-	keeptextopen
+	buttonsound
 	verbosegiveitem CHARCOAL
 	iffalse .Done
 	setevent EVENT_GOT_CHARCOAL_IN_CHARCOAL_KILN
-	loadmovesprites
+	closetext
 	end
 
 .YoureTheCoolest
 	writetext CharcoalKilnApprenticeText3
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 CharcoalKilnFarfetchd:
 	faceplayer
-	loadfont
+	opentext
 	writetext FarfetchdText
 	cry FARFETCH_D
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CharcoalKilnBookshelf:
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -1,10 +1,17 @@
+const_value set 2
+	const CHERRYGROVECITY_GRAMPS
+	const CHERRYGROVECITY_SILVER
+	const CHERRYGROVECITY_TEACHER
+	const CHERRYGROVECITY_YOUNGSTER
+	const CHERRYGROVECITY_FISHER
+
 CherrygroveCity_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +19,10 @@
 	; callbacks
 	dbw 5, .FlyPoint
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPoint
@@ -24,7 +31,7 @@
 
 CherrygroveCityGuideGent:
 	faceplayer
-	loadfont
+	opentext
 	writetext GuideGentIntroText
 	yesorno
 	iffalse .No
@@ -31,60 +38,60 @@
 	jump .Yes
 .Yes
 	writetext GuideGentTourText1
+	waitbutton
 	closetext
-	loadmovesprites
 	playmusic MUSIC_SHOW_ME_AROUND
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x19c195
-	loadfont
+	follow CHERRYGROVECITY_GRAMPS, PLAYER
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement1
+	opentext
 	writetext GuideGentPokeCenterText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x19c19b
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement2
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext GuideGentMartText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x19c1a3
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement3
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext GuideGentRoute30Text
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x19c1ac
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement4
 	spriteface PLAYER, LEFT
-	loadfont
+	opentext
 	writetext GuideGentSeaText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x19c1b6
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement5
 	spriteface PLAYER, UP
 	pause 60
-	spriteface $2, LEFT
+	spriteface CHERRYGROVECITY_GRAMPS, LEFT
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext GuideGentGiftText
-	keeptextopen
+	buttonsound
 	stringtotext .mapcardname, $1
-	scall .UnknownScript_0x19c097
+	scall .JumpstdReceiveItem
 	setflag ENGINE_MAP_CARD
 	writetext GotMapCardText
-	keeptextopen
+	buttonsound
 	writetext GuideGentPokegearText
+	waitbutton
 	closetext
-	loadmovesprites
 	stopfollow
 	special RestartMapMusic
 	spriteface PLAYER, UP
-	applymovement $2, MovementData_0x19c1cb
+	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement6
 	playsound SFX_ENTER_DOOR
-	disappear $2
+	disappear CHERRYGROVECITY_GRAMPS
 	clearevent EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
-	waitbutton
+	waitsfx
 	end
 
-.UnknownScript_0x19c097
+.JumpstdReceiveItem
 	jumpstd receiveitem
 	end
 
@@ -93,134 +100,133 @@
 
 .No
 	writetext GuideGentNoText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x19c0aa:
-	moveperson $3, $27, $7
-
-UnknownScript_0x19c0ae:
+CherrygroveSilverTriggerSouth:
+	moveperson CHERRYGROVECITY_SILVER, $27, $7
+CherrygroveSilverTriggerNorth:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	appear $3
-	applymovement $3, MovementData_0x19c1ce
+	appear CHERRYGROVECITY_SILVER
+	applymovement CHERRYGROVECITY_SILVER, CherrygroveCity_RivalWalksToYou
 	spriteface PLAYER, RIGHT
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x19c4e2
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue UnknownScript_0x19c0ee
+	iftrue .Totodile
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue UnknownScript_0x19c104
-	winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6
-	setlasttalked $3
+	iftrue .Chikorita
+	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+	setlasttalked CHERRYGROVECITY_SILVER
 	loadtrainer RIVAL1, RIVAL1_3
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
-	reloadmapmusic
+	dontrestartmapmusic
 	reloadmap
-	iftrue UnknownScript_0x19c11a
-	jump UnknownScript_0x19c126
+	iftrue .AfterVictorious
+	jump .AfterYourDefeat
 
-UnknownScript_0x19c0ee:
-	winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6
-	setlasttalked $3
+.Totodile:
+	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+	setlasttalked CHERRYGROVECITY_SILVER
 	loadtrainer RIVAL1, RIVAL1_1
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
-	reloadmapmusic
+	dontrestartmapmusic
 	reloadmap
-	iftrue UnknownScript_0x19c11a
-	jump UnknownScript_0x19c126
+	iftrue .AfterVictorious
+	jump .AfterYourDefeat
 
-UnknownScript_0x19c104:
-	winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6
-	setlasttalked $3
+.Chikorita:
+	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+	setlasttalked CHERRYGROVECITY_SILVER
 	loadtrainer RIVAL1, RIVAL1_2
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
-	reloadmapmusic
+	dontrestartmapmusic
 	reloadmap
-	iftrue UnknownScript_0x19c11a
-	jump UnknownScript_0x19c126
+	iftrue .AfterVictorious
+	jump .AfterYourDefeat
 
-UnknownScript_0x19c11a:
+.AfterVictorious:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x19c608
+	opentext
+	writetext CherrygroveRivalText_YouWon
+	waitbutton
 	closetext
-	loadmovesprites
-	jump UnknownScript_0x19c12f
+	jump .FinishRival
 
-UnknownScript_0x19c126:
+.AfterYourDefeat:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x19c59e
+	opentext
+	writetext CherrygroveRivalText_YouLost
+	waitbutton
 	closetext
-	loadmovesprites
-UnknownScript_0x19c12f:
+.FinishRival:
 	playsound SFX_TACKLE
-	applymovement PLAYER, MovementData_0x19c1d4
+	applymovement PLAYER, CherrygroveCity_RivalPushesYouOutOfTheWay
 	spriteface PLAYER, LEFT
-	applymovement $3, MovementData_0x19c1da
-	disappear $3
+	applymovement CHERRYGROVECITY_SILVER, CherrygroveCity_RivalExitsStageLeft
+	disappear CHERRYGROVECITY_SILVER
 	dotrigger $0
 	special HealParty
 	playmapmusic
 	end
 
-TeacherScript_0x19c146:
+CherrygroveTeacherScript:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_MAP_CARD
-	iftrue UnknownScript_0x19c154
-	writetext UnknownText_0x19c650
+	iftrue .HaveMapCard
+	writetext CherrygroveTeacherText_NoMapCard
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x19c154:
-	writetext UnknownText_0x19c6a8
+.HaveMapCard:
+	writetext CherrygroveTeacherText_HaveMapCard
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-YoungsterScript_0x19c15a:
+CherrygroveYoungsterScript:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_POKEDEX
-	iftrue UnknownScript_0x19c168
-	writetext UnknownText_0x19c6d6
+	iftrue .HavePokedex
+	writetext CherrygroveYoungsterText_NoPokedex
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x19c168:
-	writetext UnknownText_0x19c701
+.HavePokedex:
+	writetext CherrygroveYoungsterText_HavePokedex
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MysticWaterGuy:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
-	iftrue UnknownScript_0x19c183
-	writetext UnknownText_0x19c766
-	keeptextopen
+	iftrue .After
+	writetext MysticWaterGuyTextBefore
+	buttonsound
 	verbosegiveitem MYSTIC_WATER
-	iffalse UnknownScript_0x19c187
+	iffalse .Exit
 	setevent EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
-UnknownScript_0x19c183:
-	writetext UnknownText_0x19c7c1
+.After:
+	writetext MysticWaterGuyTextAfter
+	waitbutton
+.Exit:
 	closetext
-UnknownScript_0x19c187:
-	loadmovesprites
 	end
 
 CherrygroveCitySign:
@@ -235,7 +241,7 @@
 CherrygroveCityMartSign:
 	jumpstd martsign
 
-MovementData_0x19c195:
+GuideGentMovement1:
 	step_left
 	step_left
 	step_up
@@ -243,7 +249,7 @@
 	turn_head_up
 	step_end
 
-MovementData_0x19c19b:
+GuideGentMovement2:
 	step_left
 	step_left
 	step_left
@@ -253,7 +259,7 @@
 	turn_head_up
 	step_end
 
-MovementData_0x19c1a3:
+GuideGentMovement3:
 	step_left
 	step_left
 	step_left
@@ -264,7 +270,7 @@
 	turn_head_up
 	step_end
 
-MovementData_0x19c1ac:
+GuideGentMovement4:
 	step_left
 	step_left
 	step_left
@@ -276,7 +282,7 @@
 	turn_head_left
 	step_end
 
-MovementData_0x19c1b6:
+GuideGentMovement5:
 	step_down
 	step_down
 	step_right
@@ -299,12 +305,12 @@
 	turn_head_up
 	step_end
 
-MovementData_0x19c1cb:
+GuideGentMovement6:
 	step_up
 	step_up
 	step_end
 
-MovementData_0x19c1ce:
+CherrygroveCity_RivalWalksToYou:
 	step_left
 	step_left
 	step_left
@@ -312,17 +318,17 @@
 	step_left
 	step_end
 
-MovementData_0x19c1d4:
+CherrygroveCity_RivalPushesYouOutOfTheWay:
 	big_step_down
 	turn_head_up
 	step_end
 
-MovementData_0x19c1d7:
+CherrygroveCity_UnusedMovementData:
 	step_left
 	turn_head_down
 	step_end
 
-MovementData_0x19c1da:
+CherrygroveCity_RivalExitsStageLeft:
 	big_step_left
 	big_step_left
 	big_step_left
@@ -451,12 +457,12 @@
 	line "what I mean!"
 	done
 
-UnknownText_0x19c57f:
+SilverCherrygroveWinText:
 	text "Humph. Are you"
 	line "happy you won?"
 	done
 
-UnknownText_0x19c59e:
+CherrygroveRivalText_YouLost:
 	text "<......> <......> <......>"
 
 	para "My name's ???."
@@ -467,12 +473,12 @@
 	cont "trainer."
 	done
 
-UnknownText_0x19c5e6:
+SilverCherrygroveLossText:
 	text "Humph. That was a"
 	line "waste of time."
 	done
 
-UnknownText_0x19c608:
+CherrygroveRivalText_YouWon:
 	text "<......> <......> <......>"
 
 	para "My name's ???."
@@ -483,7 +489,7 @@
 	cont "trainer."
 	done
 
-UnknownText_0x19c650:
+CherrygroveTeacherText_NoMapCard:
 	text "Did you talk to"
 	line "the old man by the"
 	cont "#MON CENTER?"
@@ -493,19 +499,19 @@
 	cont "#GEAR."
 	done
 
-UnknownText_0x19c6a8:
+CherrygroveTeacherText_HaveMapCard:
 	text "When you're with"
 	line "#MON, going"
 	cont "anywhere is fun."
 	done
 
-UnknownText_0x19c6d6:
+CherrygroveYoungsterText_NoPokedex:
 	text "MR.#MON's house"
 	line "is still farther"
 	cont "up ahead."
 	done
 
-UnknownText_0x19c701:
+CherrygroveYoungsterText_HavePokedex:
 	text "I battled the"
 	line "trainers on the"
 	cont "road."
@@ -517,7 +523,7 @@
 	line "a #MON CENTER."
 	done
 
-UnknownText_0x19c766:
+MysticWaterGuyTextBefore:
 	text "A #MON I caught"
 	line "had an item."
 
@@ -528,7 +534,7 @@
 	line "so do you want it?"
 	done
 
-UnknownText_0x19c7c1:
+MysticWaterGuyTextAfter:
 	text "Back to fishing"
 	line "for me, then."
 	done
@@ -558,8 +564,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $6, $21, $0, UnknownScript_0x19c0ae, $0, $0
-	xy_trigger 1, $7, $21, $0, UnknownScript_0x19c0aa, $0, $0
+	xy_trigger 1, $6, $21, $0, CherrygroveSilverTriggerNorth, $0, $0
+	xy_trigger 1, $7, $21, $0, CherrygroveSilverTriggerSouth, $0, $0
 
 .Signposts:
 	db 4
@@ -572,6 +578,6 @@
 	db 5
 	person_event SPRITE_GRAMPS, 6, 32, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CherrygroveCityGuideGent, EVENT_GUIDE_GENT_IN_HIS_HOUSE
 	person_event SPRITE_SILVER, 6, 39, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
-	person_event SPRITE_TEACHER, 12, 27, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x19c146, -1
-	person_event SPRITE_YOUNGSTER, 7, 23, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19c15a, -1
+	person_event SPRITE_TEACHER, 12, 27, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CherrygroveTeacherScript, -1
+	person_event SPRITE_YOUNGSTER, 7, 23, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CherrygroveYoungsterScript, -1
 	person_event SPRITE_FISHER, 12, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, MysticWaterGuy, -1
--- a/maps/CherrygroveEvolutionSpeechHouse.asm
+++ b/maps/CherrygroveEvolutionSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const CHERRYGROVEEVOLUTIONSPEECHHOUSE_LASS
+	const CHERRYGROVEEVOLUTIONSPEECHHOUSE_YOUNGSTER
+
 CherrygroveEvolutionSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,17 +10,17 @@
 	db 0
 
 YoungsterScript_0x196cb2:
-	loadfont
+	opentext
 	writetext UnknownText_0x196cc3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x196cb9:
-	loadfont
+	opentext
 	writetext UnknownText_0x196cfc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CherrygroveEvolutionSpeechHouseBookshelf:
--- a/maps/CherrygroveGymSpeechHouse.asm
+++ b/maps/CherrygroveGymSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const CHERRYGROVEGYMSPEECHHOUSE_POKEFAN_M
+	const CHERRYGROVEGYMSPEECHHOUSE_BUG_CATCHER
+
 CherrygroveGymSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CherrygroveMart.asm
+++ b/maps/CherrygroveMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CHERRYGROVEMART_CLERK
+	const CHERRYGROVEMART_COOLTRAINER_M
+	const CHERRYGROVEMART_YOUNGSTER
+
 CherrygroveMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,32 +11,32 @@
 	db 0
 
 ClerkScript_0x19680a:
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iftrue UnknownScript_0x196817
 	pokemart MARTTYPE_STANDARD, MART_CHERRYGROVE
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x196817:
 	pokemart MARTTYPE_STANDARD, MART_CHERRYGROVE_DEX
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x19681d:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iftrue UnknownScript_0x19682b
 	writetext UnknownText_0x196834
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19682b:
 	writetext UnknownText_0x196873
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x196831:
--- a/maps/CherrygrovePokeCenter1F.asm
+++ b/maps/CherrygrovePokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CHERRYGROVEPOKECENTER1F_NURSE
+	const CHERRYGROVEPOKECENTER1F_FISHER
+	const CHERRYGROVEPOKECENTER1F_GENTLEMAN
+	const CHERRYGROVEPOKECENTER1F_TEACHER
+
 CherrygrovePokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,18 +22,18 @@
 
 TeacherScript_0x196976:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iftrue UnknownScript_0x196984
 	writetext UnknownText_0x1969f1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x196984:
 	writetext UnknownText_0x196a46
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x19698a:
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -1,10 +1,24 @@
+const_value set 2
+	const CIANWOODCITY_STANDING_YOUNGSTER
+	const CIANWOODCITY_POKEFAN_M
+	const CIANWOODCITY_LASS
+	const CIANWOODCITY_ROCK1
+	const CIANWOODCITY_ROCK2
+	const CIANWOODCITY_ROCK3
+	const CIANWOODCITY_ROCK4
+	const CIANWOODCITY_ROCK5
+	const CIANWOODCITY_ROCK6
+	const CIANWOODCITY_POKEFAN_F
+	const CIANWOODCITY_EUSINE
+	const CIANWOODCITY_SUICUNE
+
 CianwoodCity_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +26,10 @@
 	; callbacks
 	dbw 5, .FlyPointAndSuicune
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPointAndSuicune
@@ -23,7 +37,7 @@
 	setevent EVENT_EUSINE_IN_BURNED_TOWER
 	checkevent EVENT_FOUGHT_EUSINE
 	iffalse UnknownScript_0x1a001d
-	disappear $c
+	disappear CIANWOODCITY_EUSINE
 UnknownScript_0x1a001d:
 	return
 
@@ -32,12 +46,12 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	pause 15
 	playsound SFX_WARP_FROM
-	applymovement $d, MovementData_0x1a00da
+	applymovement CIANWOODCITY_SUICUNE, MovementData_0x1a00da
 	spriteface PLAYER, DOWN
 	pause 15
 	playsound SFX_WARP_FROM
-	applymovement $d, MovementData_0x1a00e0
-	disappear $d
+	applymovement CIANWOODCITY_SUICUNE, MovementData_0x1a00e0
+	disappear CIANWOODCITY_SUICUNE
 	pause 10
 	dotrigger $0
 	clearevent EVENT_SAW_SUICUNE_ON_ROUTE_42
@@ -46,27 +60,27 @@
 	iftrue .Done
 	setevent EVENT_FOUGHT_EUSINE
 	playmusic MUSIC_MYSTICALMAN_ENCOUNTER
-	appear $c
-	applymovement $c, MovementData_0x1a00e7
-	loadfont
+	appear CIANWOODCITY_EUSINE
+	applymovement CIANWOODCITY_EUSINE, MovementData_0x1a00e7
+	opentext
 	writetext UnknownText_0x1a0433
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1a05a1, 0
-	setlasttalked $c
+	setlasttalked CIANWOODCITY_EUSINE
 	loadtrainer MYSTICALMAN, EUSINE
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	playmusic MUSIC_MYSTICALMAN_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1a05c3
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $c, MovementData_0x1a00ec
-	disappear $c
+	applymovement CIANWOODCITY_EUSINE, MovementData_0x1a00ec
+	disappear CIANWOODCITY_EUSINE
 	pause 20
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	playmapmusic
 	pause 10
 .Done
@@ -74,31 +88,31 @@
 
 PokefanFScript_0x1a0084:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HM02_FLY
 	iftrue UnknownScript_0x1a00ad
 	writetext UnknownText_0x1a00f1
-	keeptextopen
+	buttonsound
 	checkevent EVENT_BEAT_CHUCK
 	iftrue UnknownScript_0x1a009c
 	writetext UnknownText_0x1a0163
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a009c:
 	writetext UnknownText_0x1a01e3
-	keeptextopen
+	buttonsound
 	verbosegiveitem HM_FLY
 	iffalse UnknownScript_0x1a00b1
 	setevent EVENT_GOT_HM02_FLY
 	writetext UnknownText_0x1a021d
-	keeptextopen
+	buttonsound
 UnknownScript_0x1a00ad:
 	writetext UnknownText_0x1a0277
-	closetext
+	waitbutton
 UnknownScript_0x1a00b1:
-	loadmovesprites
+	closetext
 	end
 
 StandingYoungsterScript_0x1a00b3:
@@ -134,10 +148,10 @@
 CianwoodCityRock:
 	jumpstd smashrock
 
-MapCianwoodCitySignpostItem6:
+CianwoodCityHiddenRevive:
 	dwb EVENT_CIANWOOD_CITY_HIDDEN_REVIVE, REVIVE
 
-MapCianwoodCitySignpostItem7:
+CianwoodCityHiddenMaxEther:
 	dwb EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER, MAX_ETHER
 
 MovementData_0x1a00da:
@@ -396,8 +410,8 @@
 	signpost 47, 19, SIGNPOST_READ, CianwoodPharmacySign
 	signpost 32, 8, SIGNPOST_READ, CianwoodPhotoStudioSign
 	signpost 24, 8, SIGNPOST_READ, CianwoodPokeSeerSign
-	signpost 19, 4, SIGNPOST_ITEM, MapCianwoodCitySignpostItem6
-	signpost 29, 5, SIGNPOST_ITEM, MapCianwoodCitySignpostItem7
+	signpost 19, 4, SIGNPOST_ITEM, CianwoodCityHiddenRevive
+	signpost 29, 5, SIGNPOST_ITEM, CianwoodCityHiddenMaxEther
 
 .PersonEvents:
 	db 12
--- a/maps/CianwoodCityPhotoStudio.asm
+++ b/maps/CianwoodCityPhotoStudio.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CIANWOODCITYPHOTOSTUDIO_FISHING_GURU
+
 CianwoodCityPhotoStudio_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,21 +10,21 @@
 
 FishingGuruScript_0x9e0e0:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x9e0f9
 	yesorno
 	iffalse UnknownScript_0x9e0f3
 	writetext UnknownText_0x9e142
-	closetext
+	waitbutton
 	special PhotoStudio
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9e0f3:
 	writetext UnknownText_0x9e156
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x9e0f9:
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const CIANWOODGYM_CHUCK
+	const CIANWOODGYM_BLACK_BELT1
+	const CIANWOODGYM_BLACK_BELT2
+	const CIANWOODGYM_BLACK_BELT3
+	const CIANWOODGYM_BLACK_BELT4
+	const CIANWOODGYM_BOULDER1
+	const CIANWOODGYM_BOULDER2
+	const CIANWOODGYM_BOULDER3
+	const CIANWOODGYM_BOULDER4
+
 CianwoodGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,36 +18,36 @@
 
 ChuckScript_0x9d60f:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_CHUCK
 	iftrue .FightDone
 	writetext UnknownText_0x9d6f9
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, RIGHT
-	loadfont
+	spriteface CIANWOODGYM_CHUCK, RIGHT
+	opentext
 	writetext UnknownText_0x9d76f
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $7, MovementData_0x9d6f3
+	applymovement CIANWOODGYM_BOULDER1, MovementData_0x9d6f3
 	playsound SFX_STRENGTH
 	earthquake 80
-	disappear $7
+	disappear CIANWOODGYM_BOULDER1
 	pause 30
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x9d78a
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x9d7f6, 0
 	loadtrainer CHUCK, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_CHUCK
-	loadfont
+	opentext
 	writetext UnknownText_0x9d835
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_STORMBADGE
 	checkcode VAR_BADGES
 	scall CianwoodGymTriggerRockets
@@ -48,20 +59,20 @@
 	setevent EVENT_BEAT_BLACKBELT_NOB
 	setevent EVENT_BEAT_BLACKBELT_LUNG
 	writetext UnknownText_0x9d84d
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_DYNAMICPUNCH
 	iffalse UnknownScript_0x9d67f
 	setevent EVENT_GOT_TM01_DYNAMICPUNCH
 	writetext UnknownText_0x9d8da
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9d67b:
 	writetext UnknownText_0x9d930
-	closetext
+	waitbutton
 UnknownScript_0x9d67f:
-	loadmovesprites
+	closetext
 	end
 
 CianwoodGymTriggerRockets:
@@ -79,11 +90,11 @@
 	trainer EVENT_BEAT_BLACKBELT_YOSHI, BLACKBELT_T, YOSHI, BlackbeltYoshiSeenText, BlackbeltYoshiBeatenText, 0, BlackbeltYoshiScript
 
 BlackbeltYoshiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9d9fa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBlackbeltLao:
@@ -90,11 +101,11 @@
 	trainer EVENT_BEAT_BLACKBELT_LAO, BLACKBELT_T, LAO, BlackbeltLaoSeenText, BlackbeltLaoBeatenText, 0, BlackbeltLaoScript
 
 BlackbeltLaoScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9da61
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBlackbeltNob:
@@ -101,11 +112,11 @@
 	trainer EVENT_BEAT_BLACKBELT_NOB, BLACKBELT_T, NOB, BlackbeltNobSeenText, BlackbeltNobBeatenText, 0, BlackbeltNobScript
 
 BlackbeltNobScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9dac0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBlackbeltLung:
@@ -112,11 +123,11 @@
 	trainer EVENT_BEAT_BLACKBELT_LUNG, BLACKBELT_T, LUNG, BlackbeltLungSeenText, BlackbeltLungBeatenText, 0, BlackbeltLungScript
 
 BlackbeltLungScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9db14
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CianwoodGymBoulder:
--- a/maps/CianwoodLugiaSpeechHouse.asm
+++ b/maps/CianwoodLugiaSpeechHouse.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CIANWOODLUGIASPEECHHOUSE_TEACHER
+	const CIANWOODLUGIASPEECHHOUSE_LASS
+	const CIANWOODLUGIASPEECHHOUSE_TWIN
+
 CianwoodLugiaSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CIANWOODPHARMACY_PHARMACIST
+
 CianwoodPharmacy_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,27 +16,27 @@
 
 CianwoodPharmacist:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SECRETPOTION_FROM_PHARMACY
 	iftrue .Mart
 	checkevent EVENT_JASMINE_EXPLAINED_AMPHYS_SICKNESS
 	iffalse .Mart
 	writetext PharmacistGiveSecretpotionText
-	keeptextopen
+	buttonsound
 	giveitem SECRETPOTION
 	writetext ReceivedSecretpotionText
 	playsound SFX_KEY_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setevent EVENT_GOT_SECRETPOTION_FROM_PHARMACY
 	writetext PharmacistDescribeSecretpotionText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Mart
 	pokemart MARTTYPE_PHARMACY, MART_CIANWOOD
-	loadmovesprites
+	closetext
 	end
 
 CianwoodPharmacyBookshelf:
--- a/maps/CianwoodPokeCenter1F.asm
+++ b/maps/CianwoodPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const CIANWOODPOKECENTER1F_NURSE
+	const CIANWOODPOKECENTER1F_LASS
+	const CIANWOODPOKECENTER1F_GYM_GUY
+	const CIANWOODPOKECENTER1F_SUPER_NERD
+
 CianwoodPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -15,17 +21,17 @@
 	faceplayer
 	checkevent EVENT_BEAT_CHUCK
 	iftrue .CianwoodGymGuyWinScript
-	loadfont
+	opentext
 	writetext CianwoodGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .CianwoodGymGuyWinScript
-	loadfont
+	opentext
 	writetext CianwoodGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x9dbea:
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const CINNABARISLAND_BLUE
+
 CinnabarIsland_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -14,13 +17,13 @@
 
 CinnabarIslandBlue:
 	faceplayer
-	loadfont
+	opentext
 	writetext CinnabarIslandBlueText
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_WARP_TO
-	applymovement $2, CinnabarIslandBlueTeleport
-	disappear $2
+	applymovement CINNABARISLAND_BLUE, CinnabarIslandBlueTeleport
+	disappear CINNABARISLAND_BLUE
 	clearevent EVENT_VIRIDIAN_GYM_BLUE
 	end
 
@@ -33,7 +36,7 @@
 CinnabarIslandPokeCenterSign:
 	jumpstd pokecentersign
 
-MapCinnabarIslandSignpostItem3:
+CinnabarIslandHiddenRareCandy:
 	dwb EVENT_CINNABAR_ISLAND_HIDDEN_RARE_CANDY, RARE_CANDY
 
 CinnabarIslandBlueTeleport:
@@ -142,7 +145,7 @@
 	signpost 11, 12, SIGNPOST_READ, CinnabarIslandPokeCenterSign
 	signpost 11, 9, SIGNPOST_READ, CinnabarIslandGymSign
 	signpost 7, 7, SIGNPOST_READ, CinnabarIslandSign
-	signpost 1, 9, SIGNPOST_ITEM, MapCinnabarIslandSignpostItem3
+	signpost 1, 9, SIGNPOST_ITEM, CinnabarIslandHiddenRareCandy
 
 .PersonEvents:
 	db 1
--- a/maps/CinnabarPokeCenter1F.asm
+++ b/maps/CinnabarPokeCenter1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const CINNABARPOKECENTER1F_NURSE
+	const CINNABARPOKECENTER1F_COOLTRAINER_F
+	const CINNABARPOKECENTER1F_FISHER
+
 CinnabarPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/CinnabarPokeCenter2FBeta.asm
+++ b/maps/CinnabarPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 CinnabarPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -1,11 +1,15 @@
+const_value set 2
+	const COLOSSEUM_CHRIS1
+	const COLOSSEUM_CHRIS2
+
 Colosseum_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
-	dw .Trigger3, 0
 
 .MapCallbacks:
 	db 2
@@ -16,26 +20,26 @@
 
 	dbw 5, ColosseumScript_InitializeCB
 
-.Trigger1:
+.Trigger0:
 	priorityjump ColosseumScript_Initialize
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
-.Trigger3:
+.Trigger2:
 	end
 
 ColosseumScript_SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
-	disappear $3
-	appear $2
+	disappear COLOSSEUM_CHRIS2
+	appear COLOSSEUM_CHRIS1
 	return
 
 .Chris2:
-	disappear $2
-	appear $3
+	disappear COLOSSEUM_CHRIS1
+	appear COLOSSEUM_CHRIS2
 	return
 
 ColosseumScript_InitializeCB:
@@ -53,10 +57,10 @@
 	end
 
 ChrisScript_0x193499:
-	loadfont
+	opentext
 	writetext .FriendReadyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FriendReadyText:
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const COPYCATSHOUSE1F_POKEFAN_M
+	const COPYCATSHOUSE1F_POKEFAN_F
+	const COPYCATSHOUSE1F_CLEFAIRY
+
 CopycatsHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,26 +15,26 @@
 
 PokefanFScript_0x18ad16:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x18ad24
 	writetext UnknownText_0x18ad95
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x18ad24:
 	writetext UnknownText_0x18add3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ClefairyScript_0x18ad2a:
-	loadfont
+	opentext
 	writetext UnknownText_0x18ae4b
 	cry BLISSEY
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x18ad34:
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const COPYCATSHOUSE2F_COPYCAT1
+	const COPYCATSHOUSE2F_MOLTRES
+	const COPYCATSHOUSE2F_FAIRY
+	const COPYCATSHOUSE2F_MONSTER
+	const COPYCATSHOUSE2F_BIRD
+	const COPYCATSHOUSE2F_COPYCAT2
+
 CopycatsHouse2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,12 +20,12 @@
 CopycatsHouse2FCallback:
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part1
-	disappear $7
-	appear $2
+	disappear COPYCATSHOUSE2F_COPYCAT2
+	appear COPYCATSHOUSE2F_COPYCAT1
 	jump .Done
 .Part1
-	disappear $2
-	appear $7
+	disappear COPYCATSHOUSE2F_COPYCAT1
+	appear COPYCATSHOUSE2F_COPYCAT2
 .Done
 	return
 
@@ -31,13 +39,13 @@
 	iftrue .Part12
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part1
-	applymovement $2, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
 	jump .Part2
 
 .Part1
-	applymovement $7, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .Part2
@@ -44,7 +52,7 @@
 	special RunCallback_04
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue .Part7
-	loadfont
+	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part3
 	writetext UnknownText_0x18afda
@@ -53,27 +61,27 @@
 .Part3
 	writetext UnknownText_0x18b316
 .Part4
+	waitbutton
 	closetext
-	loadmovesprites
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part5
-	applymovement $2, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
 	jump .Part6
 
 .Part5
-	applymovement $7, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
 .Part6
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
 	special RunCallback_04
-	loadfont
+	opentext
 	writetext UnknownText_0x18b028
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Part7
-	loadfont
+	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part8
 	writetext UnknownText_0x18b064
@@ -82,30 +90,30 @@
 .Part8
 	writetext UnknownText_0x18b366
 .Part9
+	waitbutton
 	closetext
-	loadmovesprites
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part10
-	applymovement $2, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
 	jump .Part11
 
 .Part10
-	applymovement $7, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
 .Part11
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
 	special RunCallback_04
-	loadfont
+	opentext
 	writetext UnknownText_0x18b116
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_MET_COPYCAT_FOUND_OUT_ABOUT_LOST_ITEM
 	end
 
 .Part12
-	loadfont
+	opentext
 	writetext UnknownText_0x18b17f
-	keeptextopen
+	buttonsound
 	takeitem LOST_ITEM
 	setevent EVENT_RETURNED_LOST_ITEM_TO_COPYCAT
 	clearevent EVENT_COPYCATS_HOUSE_2F_DOLL
@@ -112,33 +120,33 @@
 	jump .Part14
 
 .Part13
-	loadfont
+	opentext
 .Part14
 	writetext UnknownText_0x18b1e2
-	keeptextopen
+	buttonsound
 	verbosegiveitem PASS
 	iffalse .Part22
 	setevent EVENT_GOT_PASS_FROM_COPYCAT
 	writetext UnknownText_0x18b214
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Part15
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part16
-	applymovement $2, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
 	jump .Part17
 
 .Part16
-	applymovement $7, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .Part17
 	special RunCallback_04
-	loadfont
+	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part18
 	writetext UnknownText_0x18b298
@@ -147,34 +155,34 @@
 .Part18
 	writetext UnknownText_0x18b415
 .Part19
+	waitbutton
 	closetext
-	loadmovesprites
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Part20
-	applymovement $2, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
 	jump .Part21
 
 .Part20
-	applymovement $7, MovementData_0x18afd0
+	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
 .Part21
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
 	special RunCallback_04
-	loadfont
+	opentext
 	writetext UnknownText_0x18b2f5
-	closetext
+	waitbutton
 .Part22
-	loadmovesprites
+	closetext
 	end
 
 CopycatsDodrio:
-	loadfont
+	opentext
 	writetext CopycatsDodrioText1
 	cry DODRIO
-	keeptextopen
+	buttonsound
 	writetext CopycatsDodrioText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CopycatsHouse2FDoll:
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const DANCETHEATRE_KIMONO_GIRL1
+	const DANCETHEATRE_KIMONO_GIRL2
+	const DANCETHEATRE_KIMONO_GIRL3
+	const DANCETHEATRE_KIMONO_GIRL4
+	const DANCETHEATRE_KIMONO_GIRL5
+	const DANCETHEATRE_GENTLEMAN
+	const DANCETHEATRE_RHYDON
+	const DANCETHEATRE_COOLTRAINER_M
+	const DANCETHEATRE_GRANNY
+
 DanceTheatre_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +20,11 @@
 	trainer EVENT_BEAT_KIMONO_GIRL_NAOKO, KIMONO_GIRL, NAOKO2, Kimono_girlNaoko2SeenText, Kimono_girlNaoko2BeatenText, 0, Kimono_girlNaoko2Script
 
 Kimono_girlNaoko2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x99579
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerKimono_girlSayo:
@@ -20,11 +31,11 @@
 	trainer EVENT_BEAT_KIMONO_GIRL_SAYO, KIMONO_GIRL, SAYO, Kimono_girlSayoSeenText, Kimono_girlSayoBeatenText, 0, Kimono_girlSayoScript
 
 Kimono_girlSayoScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9960b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerKimono_girlZuki:
@@ -31,11 +42,11 @@
 	trainer EVENT_BEAT_KIMONO_GIRL_ZUKI, KIMONO_GIRL, ZUKI, Kimono_girlZukiSeenText, Kimono_girlZukiBeatenText, 0, Kimono_girlZukiScript
 
 Kimono_girlZukiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x99688
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerKimono_girlKuni:
@@ -42,11 +53,11 @@
 	trainer EVENT_BEAT_KIMONO_GIRL_KUNI, KIMONO_GIRL, KUNI, Kimono_girlKuniSeenText, Kimono_girlKuniBeatenText, 0, Kimono_girlKuniScript
 
 Kimono_girlKuniScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x99714
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerKimono_girlMiki:
@@ -53,18 +64,18 @@
 	trainer EVENT_BEAT_KIMONO_GIRL_MIKI, KIMONO_GIRL, MIKI, Kimono_girlMikiSeenText, Kimono_girlMikiBeatenText, 0, Kimono_girlMikiScript
 
 Kimono_girlMikiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x997a8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GentlemanScript_0x994c6:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x9980a
-	keeptextopen
+	buttonsound
 	checkevent EVENT_GOT_HM03_SURF
 	iftrue UnknownScript_0x99515
 	checkevent EVENT_BEAT_KIMONO_GIRL_NAOKO
@@ -83,38 +94,38 @@
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue UnknownScript_0x994ff
 	writetext UnknownText_0x99891
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x994ff:
 	writetext UnknownText_0x998d4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x99505:
 	writetext UnknownText_0x9991a
-	keeptextopen
+	buttonsound
 	verbosegiveitem HM_SURF
 	setevent EVENT_GOT_HM03_SURF
 	writetext UnknownText_0x9999b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x99515:
 	writetext UnknownText_0x999d5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RhydonScript_0x9951b:
-	loadfont
+	opentext
 	writetext UnknownText_0x99a0a
 	cry RHYDON
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerMScript_0x99525:
--- a/maps/DarkCaveBlackthornEntrance.asm
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const DARKCAVEBLACKTHORNENTRANCE_PHARMACIST
+	const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL1
+	const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL2
+
 DarkCaveBlackthornEntrance_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,26 +12,26 @@
 
 PharmacistScript_0x18c720:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
 	iftrue UnknownScript_0x18c735
 	writetext UnknownText_0x18c73f
-	keeptextopen
+	buttonsound
 	verbosegiveitem BLACKGLASSES
 	iffalse UnknownScript_0x18c739
 	setevent EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
 UnknownScript_0x18c735:
 	writetext UnknownText_0x18c80c
-	closetext
+	waitbutton
 UnknownScript_0x18c739:
-	loadmovesprites
+	closetext
 	end
 
-ItemFragment_0x18c73b:
-	db REVIVE, 1
+DarkCaveBlackthornEntranceRevive:
+	itemball REVIVE
 
-ItemFragment_0x18c73d:
-	db TM_SNORE, 1
+DarkCaveBlackthornEntranceTMSnore:
+	itemball TM_SNORE
 
 UnknownText_0x18c73f:
 	text "Whoa! You startled"
@@ -74,5 +79,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_PHARMACIST, 3, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x18c720, -1
-	person_event SPRITE_POKE_BALL, 24, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c73b, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
-	person_event SPRITE_POKE_BALL, 22, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c73d, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
+	person_event SPRITE_POKE_BALL, 24, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveBlackthornEntranceRevive, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
+	person_event SPRITE_POKE_BALL, 22, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveBlackthornEntranceTMSnore, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
--- a/maps/DarkCaveVioletEntrance.asm
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const DARKCAVEVIOLETENTRANCE_POKE_BALL1
+	const DARKCAVEVIOLETENTRANCE_ROCK1
+	const DARKCAVEVIOLETENTRANCE_ROCK2
+	const DARKCAVEVIOLETENTRANCE_ROCK3
+	const DARKCAVEVIOLETENTRANCE_ROCK4
+	const DARKCAVEVIOLETENTRANCE_POKE_BALL2
+	const DARKCAVEVIOLETENTRANCE_POKE_BALL3
+	const DARKCAVEVIOLETENTRANCE_POKE_BALL4
+
 DarkCaveVioletEntrance_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,22 +15,22 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c68e:
-	db POTION, 1
+DarkCaveVioletEntrancePotion:
+	itemball POTION
 
-ItemFragment_0x18c690:
-	db FULL_HEAL, 1
+DarkCaveVioletEntranceFullHeal:
+	itemball FULL_HEAL
 
-ItemFragment_0x18c692:
-	db HYPER_POTION, 1
+DarkCaveVioletEntranceHyperPotion:
+	itemball HYPER_POTION
 
-ItemFragment_0x18c694:
-	db DIRE_HIT, 1
+DarkCaveVioletEntranceDireHit:
+	itemball DIRE_HIT
 
 DarkCaveVioletEntranceRock:
 	jumpstd smashrock
 
-MapDarkCaveVioletEntranceSignpostItem0:
+DarkCaveVioletEntranceHiddenElixer:
 	dwb EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER, ELIXER
 	
 
@@ -39,15 +49,15 @@
 
 .Signposts:
 	db 1
-	signpost 3, 26, SIGNPOST_ITEM, MapDarkCaveVioletEntranceSignpostItem0
+	signpost 3, 26, SIGNPOST_ITEM, DarkCaveVioletEntranceHiddenElixer
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 8, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c68e, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
+	person_event SPRITE_POKE_BALL, 8, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveVioletEntrancePotion, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
 	person_event SPRITE_ROCK, 14, 16, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
 	person_event SPRITE_ROCK, 6, 27, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
 	person_event SPRITE_ROCK, 14, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
 	person_event SPRITE_ROCK, 31, 36, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_POKE_BALL, 22, 36, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c694, EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
+	person_event SPRITE_POKE_BALL, 22, 36, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveVioletEntranceFullHeal, EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveVioletEntranceHyperPotion, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 28, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DarkCaveVioletEntranceDireHit, EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
--- a/maps/DayCare.asm
+++ b/maps/DayCare.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const DAYCARE_GRAMPS
+	const DAYCARE_GRANNY
+
 DayCare_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,79 +11,79 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x62f7b
+	dbw 2, .EggCheckCallback
 
-UnknownScript_0x62f7b:
-	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
-	iftrue UnknownScript_0x62f88
+.EggCheckCallback:
+	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
+	iftrue .PutDaycareManOutside
 	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
 	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	return
 
-UnknownScript_0x62f88:
+.PutDaycareManOutside:
 	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
 	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
 	return
 
-GrampsScript_0x62f8f:
+DayCareManScript_Inside:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_ODD_EGG
-	iftrue UnknownScript_0x62fbd
-	writetext UnknownText_0x630ce
-	keeptextopen
-	loadmovesprites
+	iftrue .AlreadyHaveOddEgg
+	writetext DayCareManText_GiveOddEgg
+	buttonsound
+	closetext
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x62fb6
-	special Function117656
-	loadfont
-	writetext UnknownText_0x631ae
+	if_equal PARTY_LENGTH, .PartyFull
+	special Special_GiveOddEgg
+	opentext
+	writetext DayCareText_GotOddEgg
 	playsound SFX_KEY_ITEM
+	waitsfx
+	writetext DayCareText_DescribeOddEgg
 	waitbutton
-	writetext UnknownText_0x631c3
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_ODD_EGG
 	end
 
-UnknownScript_0x62fb6:
-	loadfont
-	writetext UnknownText_0x63237
+.PartyFull:
+	opentext
+	writetext DayCareText_PartyFull
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x62fbd:
+.AlreadyHaveOddEgg:
 	special Special_DayCareMan
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-GrannyScript_0x62fc3:
+DayCareLadyScript:
 	faceplayer
-	loadfont
-	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
-	iftrue UnknownScript_0x62fd1
+	opentext
+	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
+	iftrue .HusbandWasLookingForYou
 	special Special_DayCareLady
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x62fd1:
-	writetext UnknownText_0x62fda
+.HusbandWasLookingForYou:
+	writetext Text_GrampsLookingForYou
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 DayCareBookshelf:
 	jumpstd difficultbookshelf
 
-UnknownText_0x62fda:
+Text_GrampsLookingForYou:
 	text "Gramps was looking"
 	line "for you."
 	done
 
-UnknownText_0x62ff7:
+Text_DayCareManTalksAboutEggTicket:
 	text "I'm the DAY-CARE"
 	line "MAN."
 
@@ -102,7 +106,7 @@
 	line "as well have it."
 	done
 
-UnknownText_0x630ce:
+DayCareManText_GiveOddEgg:
 	text "I'm the DAY-CARE"
 	line "MAN."
 
@@ -126,16 +130,16 @@
 	line "yours to keep!"
 	done
 
-UnknownText_0x631a1:
+DayCareText_ComeAgain:
 	text "Come again."
 	done
 
-UnknownText_0x631ae:
+DayCareText_GotOddEgg:
 	text "<PLAYER> received"
 	line "ODD EGG!"
 	done
 
-UnknownText_0x631c3:
+DayCareText_DescribeOddEgg:
 	text "I found that when"
 	line "I was caring for"
 
@@ -149,7 +153,7 @@
 	line "it around."
 	done
 
-UnknownText_0x63237:
+DayCareText_PartyFull:
 	text "You've no room for"
 	line "this."
 	done
@@ -175,5 +179,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x62f8f, EVENT_DAYCARE_MAN_IN_DAYCARE
-	person_event SPRITE_GRANNY, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GrannyScript_0x62fc3, -1
+	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Inside, EVENT_DAYCARE_MAN_IN_DAYCARE
+	person_event SPRITE_GRANNY, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, DayCareLadyScript, -1
--- a/maps/DiglettsCave.asm
+++ b/maps/DiglettsCave.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const DIGLETTSCAVE_POKEFAN_M
+
 DiglettsCave_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -8,7 +11,7 @@
 PokefanMScript_0x74002:
 	jumptextfaceplayer UnknownText_0x74008
 
-MapDiglettsCaveSignpostItem0:
+DiglettsCaveHiddenMaxRevive:
 	dwb EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE, MAX_REVIVE
 	
 
@@ -38,7 +41,7 @@
 
 .Signposts:
 	db 1
-	signpost 11, 6, SIGNPOST_ITEM, MapDiglettsCaveSignpostItem0
+	signpost 11, 6, SIGNPOST_ITEM, DiglettsCaveHiddenMaxRevive
 
 .PersonEvents:
 	db 1
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -1,34 +1,40 @@
+const_value set 2
+	const DRAGONSHRINE_ELDER1
+	const DRAGONSHRINE_ELDER2
+	const DRAGONSHRINE_ELDER3
+	const DRAGONSHRINE_CLAIR
+
 DragonShrine_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	priorityjump DragonShrineTestScript
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 DragonShrineTestScript:
 	applymovement PLAYER, MovementData_0x18d2bf
-	applymovement $2, MovementData_0x18d2c7
-	loadfont
+	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2c7
+	opentext
 	writetext UnknownText_0x18d2ea
-	keeptextopen
+	buttonsound
 .Question1:
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	writetext UnknownText_0x18d3bc
-	keeptextopen
+	buttonsound
 	loadmenudata MenuDataHeader_0x18d215
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .RightAnswer
 	if_equal $2, .WrongAnswer
 	if_equal $3, .RightAnswer
@@ -37,10 +43,10 @@
 .Question2:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_2
 	writetext UnknownText_0x18d3d3
-	keeptextopen
+	buttonsound
 	loadmenudata MenuDataHeader_0x18d234
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .RightAnswer
 	if_equal $2, .RightAnswer
 	if_equal $3, .WrongAnswer
@@ -47,10 +53,10 @@
 .Question3:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_3
 	writetext UnknownText_0x18d3f3
-	keeptextopen
+	buttonsound
 	loadmenudata MenuDataHeader_0x18d258
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .WrongAnswer
 	if_equal $2, .RightAnswer
 	if_equal $3, .RightAnswer
@@ -57,10 +63,10 @@
 .Question4:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_4
 	writetext UnknownText_0x18d420
-	keeptextopen
+	buttonsound
 	loadmenudata MenuDataHeader_0x18d283
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .RightAnswer
 	if_equal $2, .WrongAnswer
 	if_equal $3, .RightAnswer
@@ -67,10 +73,10 @@
 .Question5:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_5
 	writetext UnknownText_0x18d44a
-	keeptextopen
+	buttonsound
 	loadmenudata MenuDataHeader_0x18d2a5
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .WrongAnswer
 	if_equal $2, .RightAnswer
 	if_equal $3, .WrongAnswer
@@ -78,7 +84,7 @@
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_5
 	iftrue .PassedTheTest
 	writetext UnknownText_0x18d82d
-	keeptextopen
+	buttonsound
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_4
 	iftrue .Question5
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_3
@@ -88,19 +94,19 @@
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue .Question2
 .WrongAnswer:
-	loadmovesprites
-	spriteface $2, LEFT
-	loadfont
+	closetext
+	spriteface DRAGONSHRINE_ELDER1, LEFT
+	opentext
 	writetext UnknownText_0x18d7f6
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, DOWN
-	loadfont
+	spriteface DRAGONSHRINE_ELDER1, DOWN
+	opentext
 	writetext UnknownText_0x18d816
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
-	loadfont
+	opentext
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_5
 	iftrue .Question5
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_4
@@ -113,83 +119,83 @@
 	iftrue .Question1
 .PassedTheTest:
 	writetext UnknownText_0x18d47c
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_CLAIR
-	appear $5
-	waitbutton
+	appear DRAGONSHRINE_CLAIR
+	waitsfx
 	spriteface PLAYER, DOWN
 	pause 30
-	applymovement $5, MovementData_0x18d2d4
-	spriteface $5, RIGHT
+	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2d4
+	spriteface DRAGONSHRINE_CLAIR, RIGHT
 	spriteface PLAYER, LEFT
-	spriteface $2, LEFT
-	loadfont
+	spriteface DRAGONSHRINE_ELDER1, LEFT
+	opentext
 	writetext UnknownText_0x18d916
+	waitbutton
 	closetext
-	loadmovesprites
-	special Special_RotatePalettesRightMusic
-	applymovement $5, MovementData_0x18d2da
-	loadfont
+	special Special_FadeOutMusic
+	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2da
+	opentext
 	writetext UnknownText_0x18d974
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x18d2dd
-	loadfont
+	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2dd
+	opentext
 	writetext UnknownText_0x18d983
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x18d2c9
-	spriteface $5, UP
-	loadfont
+	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2c9
+	spriteface DRAGONSHRINE_CLAIR, UP
+	opentext
 	writetext UnknownText_0x18d520
+	waitbutton
 	closetext
-	loadmovesprites
-	showemote EMOTE_SHOCK, $5, 15
-	loadfont
+	showemote EMOTE_SHOCK, DRAGONSHRINE_CLAIR, 15
+	opentext
 	writetext UnknownText_0x18d9ae
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x18d2e0
-	loadfont
+	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2e0
+	opentext
 	writetext UnknownText_0x18d9bf
-	closetext
+	waitbutton
 	setflag ENGINE_RISINGBADGE
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	special RestartMapMusic
 	specialphonecall SPECIALCALL_MASTERBALL
 	dotrigger $1
 	domaptrigger DRAGONS_DEN_B1F, $1
 	writetext UnknownText_0x18d9f2
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x18da0b
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x18d2ce
-	spriteface $5, UP
-	applymovement $2, MovementData_0x18d2d1
+	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2ce
+	spriteface DRAGONSHRINE_CLAIR, UP
+	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2d1
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x18d5a3
+	waitbutton
 	closetext
-	loadmovesprites
-	loadfont
+	opentext
 	writetext UnknownText_0x18dab4
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x18d2e3
+	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2e3
 	playsound SFX_ENTER_DOOR
-	disappear $5
-	waitbutton
+	disappear DRAGONSHRINE_CLAIR
+	waitsfx
 	setevent EVENT_GAVE_KURT_APRICORNS
 	end
 
 ElderScript_0x18d1a5:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue .DontGiveDratiniYet
 	checkevent EVENT_JUST_RECEIVED_DRATINI
@@ -199,18 +205,18 @@
 	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
 	iftrue .BeatRivalInMtMoon
 	writetext UnknownText_0x18d724
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GiveDratini:
 	writetext UnknownText_0x18d604
-	closetext
+	waitbutton
 	checkcode VAR_PARTYCOUNT
 	if_equal 6, .PartyFull
 	writetext UnknownText_0x18d697
 	playsound SFX_CAUGHT_MON
-	waitbutton
+	waitsfx
 	givepoke DRATINI, 15
 	checkevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
 	special SpecialDratini
@@ -217,48 +223,48 @@
 	setevent EVENT_GOT_DRATINI
 	setevent EVENT_JUST_RECEIVED_DRATINI
 	writetext UnknownText_0x18d6ca
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .PartyFull:
 	writetext UnknownText_0x18d6ac
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BeatRivalInMtMoon:
 	writetext UnknownText_0x18d782
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .DontGiveDratiniYet:
 	writetext UnknownText_0x18d5e5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .ReceivedDratini:
 	writetext UnknownText_0x18d6ca
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElderScript_0x18d205:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x18d840
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElderScript_0x18d20d:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x18d8b1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
--- a/maps/DragonsDen1F.asm
+++ b/maps/DragonsDen1F.asm
@@ -1,3 +1,4 @@
+
 DragonsDen1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -1,10 +1,21 @@
+const_value set 2
+	const DRAGONSDENB1F_POKE_BALL1
+	const DRAGONSDENB1F_CLAIR
+	const DRAGONSDENB1F_SILVER
+	const DRAGONSDENB1F_COOLTRAINER_M
+	const DRAGONSDENB1F_COOLTRAINER_F
+	const DRAGONSDENB1F_TWIN1
+	const DRAGONSDENB1F_TWIN2
+	const DRAGONSDENB1F_POKE_BALL2
+	const DRAGONSDENB1F_POKE_BALL3
+
 DragonsDenB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x18c89d, 0
-	dw UnknownScript_0x18c89e, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 1
@@ -11,69 +22,69 @@
 
 	; callbacks
 
-	dbw 5, UnknownScript_0x18c89f
+	dbw 5, .CheckSilver
 
-UnknownScript_0x18c89d:
+.Trigger0:
 	end
 
-UnknownScript_0x18c89e:
+.Trigger1:
 	end
 
-UnknownScript_0x18c89f:
+.CheckSilver:
 	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
-	iftrue UnknownScript_0x18c8a8
-	disappear $4
+	iftrue .CheckDay
+	disappear DRAGONSDENB1F_SILVER
 	return
 
-UnknownScript_0x18c8a8:
+.CheckDay:
 	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, UnknownScript_0x18c8b5
-	if_equal THURSDAY, UnknownScript_0x18c8b5
-	disappear $4
+	if_equal TUESDAY, .AppearSilver
+	if_equal THURSDAY, .AppearSilver
+	disappear DRAGONSDENB1F_SILVER
 	return
 
-UnknownScript_0x18c8b5:
-	appear $4
+.AppearSilver:
+	appear DRAGONSDENB1F_SILVER
 	return
 
-UnknownScript_0x18c8b8:
-	appear $3
-	loadfont
-	writetext UnknownText_0x18c9b8
+DragonsDenB1F_ClairTrigger:
+	appear DRAGONSDENB1F_CLAIR
+	opentext
+	writetext ClairText_Wait
 	pause 30
-	loadmovesprites
+	closetext
 	showemote EMOTE_SHOCK, PLAYER, 15
 	spriteface PLAYER, LEFT
 	playmusic MUSIC_CLAIR
-	applymovement $3, MovementData_0x18c9ae
-	loadfont
-	writetext UnknownText_0x18c9bf
-	keeptextopen
+	applymovement DRAGONSDENB1F_CLAIR, MovementDragonsDen_ClairWalksToYou
+	opentext
+	writetext ClairText_GiveDragonbreathDragonDen
+	buttonsound
 	giveitem TM_DRAGONBREATH
-	iffalse UnknownScript_0x18c8f4
+	iffalse .BagFull
 	itemtotext TM_DRAGONBREATH, $0
-	writetext UnknownText_0x18c9fb
+	writetext NotifyReceiveDragonbreath
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setevent EVENT_GOT_TM24_DRAGONBREATH
-	writetext UnknownText_0x18ca0d
-	keeptextopen
-	writetext UnknownText_0x18caf1
+	writetext ClairText_DescribeDragonbreathDragonDen
+	buttonsound
+	writetext ClairText_WhatsTheMatterDragonDen
+	waitbutton
 	closetext
-	loadmovesprites
-	jump UnknownScript_0x18c8f9
+	jump .FinishClair
 
-UnknownScript_0x18c8f4:
-	writetext UnknownText_0x18ca8b
+.BagFull:
+	writetext ClairText_NoRoom
+	waitbutton
 	closetext
-	loadmovesprites
-UnknownScript_0x18c8f9:
-	applymovement $3, MovementData_0x18c9b3
-	special Special_RotatePalettesRightMusic
+.FinishClair:
+	applymovement DRAGONSDENB1F_CLAIR, MovementDragonsDen_ClairWalksAway
+	special Special_FadeOutMusic
 	pause 30
 	special RestartMapMusic
-	disappear $3
+	disappear DRAGONSDENB1F_CLAIR
 	dotrigger $0
 	end
 
@@ -81,11 +92,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_DARIN, COOLTRAINERM, DARIN, CooltrainermDarinSeenText, CooltrainermDarinBeatenText, 0, CooltrainermDarinScript
 
 CooltrainermDarinScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x18cd82
+	end_if_just_battled
+	opentext
+	writetext CooltrainermDarinAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfCara:
@@ -92,11 +103,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_CARA, COOLTRAINERF, CARA, CooltrainerfCaraSeenText, CooltrainerfCaraBeatenText, 0, CooltrainerfCaraScript
 
 CooltrainerfCaraScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x18ce11
+	end_if_just_battled
+	opentext
+	writetext CooltrainerfCaraAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsLeaandpia1:
@@ -103,11 +114,11 @@
 	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia1SeenText, TwinsLeaandpia1BeatenText, 0, TwinsLeaandpia1Script
 
 TwinsLeaandpia1Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x18ced3
+	end_if_just_battled
+	opentext
+	writetext TrinsLeaandpia1AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsLeaandpia2:
@@ -114,75 +125,78 @@
 	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia2SeenText, TwinsLeaandpia2BeatenText, 0, TwinsLeaandpia2Script
 
 TwinsLeaandpia2Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x18cf0f
+	end_if_just_battled
+	opentext
+	writetext TrinsLeaandpia2AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokeBallScript_0x18c95a:
+; This whole script is written out rather than as an
+; item fragment because it's left over from the GS
+; event.
 	giveitem DRAGON_FANG
-	iffalse UnknownScript_0x18c970
-	disappear $2
-	loadfont
+	iffalse .BagFull
+	disappear DRAGONSDENB1F_POKE_BALL1
+	opentext
 	itemtotext DRAGON_FANG, $0
-	writetext UnknownText_0x18cf41
+	writetext Text_FoundDragonFang
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x18c970:
-	loadfont
+.BagFull:
+	opentext
 	itemtotext DRAGON_FANG, $0
-	writetext UnknownText_0x18cf41
-	keeptextopen
-	writetext UnknownText_0x18cf51
+	writetext Text_FoundDragonFang
+	buttonsound
+	writetext Text_NoRoomForDragonFang
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SilverScript_0x18c97e:
 	playmusic MUSIC_RIVAL_ENCOUNTER
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
-	iftrue UnknownScript_0x18c995
-	writetext UnknownText_0x18cc83
+	iftrue .SilverTalkAgain
+	writetext SilverText_Training1
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GAVE_KURT_APRICORNS
 	special RestartMapMusic
 	end
 
-UnknownScript_0x18c995:
-	writetext UnknownText_0x18cd2d
+.SilverTalkAgain:
+	writetext SilverText_Training2
+	waitbutton
 	closetext
-	loadmovesprites
 	special RestartMapMusic
 	end
 
 MapDragonsDenB1FSignpost0Script:
-	jumptext UnknownText_0x18cc2e
+	jumptext DragonShrineSignpostText
 
-ItemFragment_0x18c9a1:
-	db CALCIUM, 1
+DragonsDenB1FCalcium:
+	itemball CALCIUM
 
-ItemFragment_0x18c9a3:
-	db MAX_ELIXER, 1
+DragonsDenB1FMaxElixer:
+	itemball MAX_ELIXER
 
-MapDragonsDenB1FSignpostItem1:
+DragonsDenB1FHiddenRevive:
 	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE, REVIVE
 
-MapDragonsDenB1FSignpostItem2:
+DragonsDenB1FHiddenMaxPotion:
 	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
-MapDragonsDenB1FSignpostItem3:
+DragonsDenB1FHiddenMaxElixer:
 	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER, MAX_ELIXER
 
-MovementData_0x18c9ae:
+MovementDragonsDen_ClairWalksToYou:
 	slow_step_right
 	slow_step_right
 	slow_step_right
@@ -189,7 +203,7 @@
 	slow_step_right
 	step_end
 
-MovementData_0x18c9b3:
+MovementDragonsDen_ClairWalksAway:
 	slow_step_left
 	slow_step_left
 	slow_step_left
@@ -196,11 +210,11 @@
 	slow_step_left
 	step_end
 
-UnknownText_0x18c9b8:
+ClairText_Wait:
 	text "Wait!"
 	done
 
-UnknownText_0x18c9bf:
+ClairText_GiveDragonbreathDragonDen:
 	text "CLAIR: I'm sorry"
 	line "about this."
 
@@ -208,12 +222,12 @@
 	line "my apology."
 	done
 
-UnknownText_0x18c9fb:
+NotifyReceiveDragonbreath:
 	text "<PLAYER> received"
 	line "TM24."
 	done
 
-UnknownText_0x18ca0d:
+ClairText_DescribeDragonbreathDragonDen:
 	text "That contains"
 	line "DRAGONBREATH."
 
@@ -226,7 +240,7 @@
 	cont "to take it."
 	done
 
-UnknownText_0x18ca8b:
+ClairText_NoRoom:
 	text "Oh? You don't have"
 	line "any room for this."
 
@@ -237,7 +251,7 @@
 	line "see me there."
 	done
 
-UnknownText_0x18caf1:
+ClairText_WhatsTheMatterDragonDen:
 	text "CLAIR: What's the"
 	line "matter? Aren't you"
 
@@ -270,7 +284,7 @@
 	line "you've got."
 	done
 
-UnknownText_0x18cc2e:
+DragonShrineSignpostText:
 	text "DRAGON SHRINE"
 
 	para "A shrine honoring"
@@ -280,7 +294,7 @@
 	line "in DRAGON'S DEN."
 	done
 
-UnknownText_0x18cc83:
+SilverText_Training1:
 	text "…"
 	line "What? <PLAYER>?"
 
@@ -300,7 +314,7 @@
 	line "MON trainer…"
 	done
 
-UnknownText_0x18cd2d:
+SilverText_Training2:
 	text "…"
 
 	para "Whew…"
@@ -318,7 +332,7 @@
 	text "S-strong!"
 	done
 
-UnknownText_0x18cd82:
+CooltrainermDarinAfterText:
 	text "The SHRINE ahead"
 	line "is home to the"
 
@@ -338,7 +352,7 @@
 	text "Oh yikes, I lost!"
 	done
 
-UnknownText_0x18ce11:
+CooltrainerfCaraAfterText:
 	text "Soon I'm going to"
 	line "get permission"
 
@@ -364,7 +378,7 @@
 	text "Ouchies."
 	done
 
-UnknownText_0x18ced3:
+TrinsLeaandpia1AfterText:
 	text "It was like having"
 	line "to battle LANCE."
 	done
@@ -377,7 +391,7 @@
 	text "Meanie."
 	done
 
-UnknownText_0x18cf0f:
+TrinsLeaandpia2AfterText:
 	text "We'll tell on you."
 
 	para "MASTER will be"
@@ -384,7 +398,7 @@
 	line "angry with you."
 	done
 
-UnknownText_0x18cf41:
+Text_FoundDragonFang:
 	text "<PLAYER> found"
 	line "@"
 	text_from_ram StringBuffer3
@@ -391,7 +405,7 @@
 	text "!"
 	done
 
-UnknownText_0x18cf51:
+Text_NoRoomForDragonFang:
 	text "But <PLAYER> can't"
 	line "carry any more"
 	cont "items."
@@ -408,14 +422,14 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $1e, $13, $0, UnknownScript_0x18c8b8, $0, $0
+	xy_trigger 1, $1e, $13, $0, DragonsDenB1F_ClairTrigger, $0, $0
 
 .Signposts:
 	db 4
 	signpost 24, 18, SIGNPOST_READ, MapDragonsDenB1FSignpost0Script
-	signpost 29, 33, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem1
-	signpost 17, 21, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem2
-	signpost 15, 31, SIGNPOST_ITEM, MapDragonsDenB1FSignpostItem3
+	signpost 29, 33, SIGNPOST_ITEM, DragonsDenB1FHiddenRevive
+	signpost 17, 21, SIGNPOST_ITEM, DragonsDenB1FHiddenMaxPotion
+	signpost 15, 31, SIGNPOST_ITEM, DragonsDenB1FHiddenMaxElixer
 
 .PersonEvents:
 	db 9
@@ -426,5 +440,5 @@
 	person_event SPRITE_COOLTRAINER_F, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfCara, -1
 	person_event SPRITE_TWIN, 17, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia1, -1
 	person_event SPRITE_TWIN, 18, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia2, -1
-	person_event SPRITE_POKE_BALL, 4, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c9a1, EVENT_DRAGONS_DEN_B1F_CALCIUM
-	person_event SPRITE_POKE_BALL, 20, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c9a3, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 4, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DragonsDenB1FCalcium, EVENT_DRAGONS_DEN_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 20, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DragonsDenB1FMaxElixer, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const EARLSPOKEMONACADEMY_FISHER
+	const EARLSPOKEMONACADEMY_YOUNGSTER1
+	const EARLSPOKEMONACADEMY_GAMEBOY_KID1
+	const EARLSPOKEMONACADEMY_GAMEBOY_KID2
+	const EARLSPOKEMONACADEMY_YOUNGSTER2
+	const EARLSPOKEMONACADEMY_POKEDEX
+
 EarlsPokemonAcademy_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +14,9 @@
 	db 0
 
 AcademyEarl:
-	applymovement $2, MovementData_0x68b2d
+	applymovement EARLSPOKEMONACADEMY_FISHER, MovementData_0x68b2d
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x68b3b
 	yesorno
 	iffalse .Part1
@@ -20,14 +28,14 @@
 	yesorno
 	iffalse .Done
 	writetext UnknownText_0x68c7b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Done
 	writetext UnknownText_0x68d31
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x68a83:
@@ -35,20 +43,20 @@
 
 GameboyKidScript_0x68a86:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x68dda
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, DOWN
+	spriteface EARLSPOKEMONACADEMY_GAMEBOY_KID1, DOWN
 	end
 
 GameboyKidScript_0x68a91:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x68e07
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, DOWN
+	spriteface EARLSPOKEMONACADEMY_GAMEBOY_KID2, DOWN
 	end
 
 YoungsterScript_0x68a9c:
@@ -55,43 +63,43 @@
 	jumptextfaceplayer UnknownText_0x68e39
 
 AcademyBlackboard:
-	loadfont
+	opentext
 	writetext AcademyBlackboardText
 .Loop
 	loadmenudata .MenuHeader
-	interpretmenu
-	writebackup
+	_2dmenu
+	closewindow
 	if_equal $1, .Poison
 	if_equal $2, .Paralysis
 	if_equal $3, .Sleep
 	if_equal $4, .Burn
 	if_equal $5, .Freeze
-	loadmovesprites
+	closetext
 	end
 
 .Poison
 	writetext AcademyPoisonText
-	closetext
+	waitbutton
 	jump .Loop
 
 .Paralysis
 	writetext AcademyParalysisText
-	closetext
+	waitbutton
 	jump .Loop
 
 .Sleep
 	writetext AcademySleepText
-	closetext
+	waitbutton
 	jump .Loop
 
 .Burn
 	writetext AcademyBurnText
-	closetext
+	waitbutton
 	jump .Loop
 
 .Freeze:
 	writetext AcademyFreezeText
-	closetext
+	waitbutton
 	jump .Loop
 
 .MenuHeader
@@ -106,7 +114,7 @@
 	dn 3, 2 ; rows, columns
 	db 5 ; spacing
 	dba .Text
-	dbw $1a, 0
+	dbw BANK(AcademyBlackboard), 0
 
 .Text
 	db "PSN@"
@@ -117,7 +125,7 @@
 	db "QUIT@"
 
 AcademyNotebook:
-	loadfont
+	opentext
 	writetext AcademyNotebookText
 	yesorno
 	iffalse .Done
@@ -128,9 +136,9 @@
 	yesorno
 	iffalse .Done
 	writetext AcademyNotebookText3
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 AcademyStickerMachine:
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ECRUTEAKCITY_GRAMPS1
+	const ECRUTEAKCITY_GRAMPS2
+	const ECRUTEAKCITY_LASS1
+	const ECRUTEAKCITY_LASS2
+	const ECRUTEAKCITY_FISHER
+	const ECRUTEAKCITY_YOUNGSTER
+	const ECRUTEAKCITY_GRAMPS3
+
 EcruteakCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -26,34 +35,34 @@
 
 LassScript_0x1a4015:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RELEASED_THE_BEASTS
 	iftrue UnknownScript_0x1a4023
 	writetext UnknownText_0x1a421a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a4023:
 	writetext UnknownText_0x1a4269
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x1a4029:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_JASMINE_RETURNED_TO_GYM
 	iftrue UnknownScript_0x1a4037
 	writetext UnknownText_0x1a42ac
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a4037:
 	writetext UnknownText_0x1a4325
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x1a403d:
@@ -80,7 +89,7 @@
 EcruteakCityMartSign:
 	jumpstd martsign
 
-MapEcruteakCitySignpostItem7:
+EcruteakCityHiddenHyperPotion:
 	dwb EVENT_ECRUTEAK_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
 UnusedMissingDaughterText:
@@ -286,7 +295,7 @@
 	signpost 10, 2, SIGNPOST_READ, BurnedTowerSign
 	signpost 27, 24, SIGNPOST_READ, EcruteakCityPokeCenterSign
 	signpost 21, 30, SIGNPOST_READ, EcruteakCityMartSign
-	signpost 14, 23, SIGNPOST_ITEM, MapEcruteakCitySignpostItem7
+	signpost 14, 23, SIGNPOST_ITEM, EcruteakCityHiddenHyperPotion
 
 .PersonEvents:
 	db 7
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ECRUTEAKGYM_MORTY
+	const ECRUTEAKGYM_SAGE1
+	const ECRUTEAKGYM_SAGE2
+	const ECRUTEAKGYM_GRANNY1
+	const ECRUTEAKGYM_GRANNY2
+	const ECRUTEAKGYM_GYM_GUY
+	const ECRUTEAKGYM_GRAMPS
+
 EcruteakGym_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -18,21 +27,21 @@
 
 MortyScript_0x99d58:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_MORTY
 	iftrue .FightDone
 	writetext UnknownText_0x99e65
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x9a00a, 0
 	loadtrainer MORTY, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_MORTY
-	loadfont
+	opentext
 	writetext UnknownText_0x9a043
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_FOGBADGE
 	checkcode VAR_BADGES
 	scall EcruteakGymTriggerRockets
@@ -47,20 +56,20 @@
 	setevent EVENT_BEAT_MEDIUM_MARTHA
 	setevent EVENT_BEAT_MEDIUM_GRACE
 	writetext UnknownText_0x9a059
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SHADOW_BALL
 	iffalse UnknownScript_0x99db5
 	setevent EVENT_GOT_TM30_SHADOW_BALL
 	writetext UnknownText_0x9a0ec
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x99db1:
 	writetext UnknownText_0x9a145
-	closetext
+	waitbutton
 UnknownScript_0x99db5:
-	loadmovesprites
+	closetext
 	end
 
 EcruteakGymTriggerRockets:
@@ -76,17 +85,17 @@
 
 UnknownScript_0x99dc6:
 	applymovement PLAYER, MovementData_0x99e5d
-	applymovement $8, MovementData_0x99e63
-	loadfont
+	applymovement ECRUTEAKGYM_GRAMPS, MovementData_0x99e63
+	opentext
 	writetext UnknownText_0x9a49c
+	waitbutton
 	closetext
-	loadmovesprites
-	follow PLAYER, $8
+	follow PLAYER, ECRUTEAKGYM_GRAMPS
 	applymovement PLAYER, MovementData_0x99e5f
 	stopfollow
 	special FadeOutPalettes
 	playsound SFX_ENTER_DOOR
-	waitbutton
+	waitsfx
 	warp ECRUTEAK_CITY, $6, $1b
 	end
 
@@ -94,11 +103,11 @@
 	trainer EVENT_BEAT_SAGE_JEFFREY, SAGE, JEFFREY, SageJeffreySeenText, SageJeffreyBeatenText, 0, SageJeffreyScript
 
 SageJeffreyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9a263
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSagePing:
@@ -105,11 +114,11 @@
 	trainer EVENT_BEAT_SAGE_PING, SAGE, PING, SagePingSeenText, SagePingBeatenText, 0, SagePingScript
 
 SagePingScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9a2b7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerMediumMartha:
@@ -116,11 +125,11 @@
 	trainer EVENT_BEAT_MEDIUM_MARTHA, MEDIUM, MARTHA, MediumMarthaSeenText, MediumMarthaBeatenText, 0, MediumMarthaScript
 
 MediumMarthaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9a318
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerMediumGrace:
@@ -127,27 +136,27 @@
 	trainer EVENT_BEAT_MEDIUM_GRACE, MEDIUM, GRACE, MediumGraceSeenText, MediumGraceBeatenText, 0, MediumGraceScript
 
 MediumGraceScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x9a38a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 EcruteakGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_MORTY
 	iftrue .EcruteakGymGuyWinScript
 	writetext EcruteakGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .EcruteakGymGuyWinScript
 	writetext EcruteakGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 EcruteakGymStatue:
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -1,10 +1,16 @@
+const_value set 2
+	const ECRUTEAKHOUSE_SAGE1
+	const ECRUTEAKHOUSE_SAGE2
+	const ECRUTEAKHOUSE_SAGE3
+	const ECRUTEAKHOUSE_GRAMPS
+
 EcruteakHouse_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -13,10 +19,10 @@
 
 	dbw 2, .InitializeSages
 
-.Trigger1:
+.Trigger0:
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 .InitializeSages:
@@ -45,21 +51,21 @@
 EcruteakHouse_XYTrigger1:
 	checkevent EVENT_RANG_CLEAR_BELL_2
 	iftrue EcruteakHouse_XYTrigger_DontMove
-	applymovement $3, MovementData_0x980c7
-	moveperson $2, $4, $6
-	appear $2
+	applymovement ECRUTEAKHOUSE_SAGE2, MovementData_0x980c7
+	moveperson ECRUTEAKHOUSE_SAGE1, $4, $6
+	appear ECRUTEAKHOUSE_SAGE1
 	pause 5
-	disappear $3
+	disappear ECRUTEAKHOUSE_SAGE2
 	end
 
 EcruteakHouse_XYTrigger2:
 	checkevent EVENT_RANG_CLEAR_BELL_1
 	iftrue EcruteakHouse_XYTrigger_DontMove
-	applymovement $2, MovementData_0x980cc
-	moveperson $3, $5, $6
-	appear $3
+	applymovement ECRUTEAKHOUSE_SAGE1, MovementData_0x980cc
+	moveperson ECRUTEAKHOUSE_SAGE2, $5, $6
+	appear ECRUTEAKHOUSE_SAGE2
 	pause 5
-	disappear $2
+	disappear ECRUTEAKHOUSE_SAGE1
 	end
 
 EcruteakHouse_XYTrigger_DontMove:
@@ -67,20 +73,20 @@
 
 SageScript_0x98062:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_RADIO_TOWER
 	iftrue .CheckForClearBell
 	checkflag ENGINE_FOGBADGE
 	iftrue .BlockPassage_GotFogBadge
 	writetext UnknownText_0x980d1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BlockPassage_GotFogBadge:
 	writetext UnknownText_0x98131
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .CheckForClearBell:
@@ -91,14 +97,14 @@
 	checkitem CLEAR_BELL
 	iftrue .RingClearBell
 	writetext UnknownText_0x981a4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .RingClearBell:
 	writetext UnknownText_0x98250
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $1
 	setevent EVENT_RANG_CLEAR_BELL_2
 	clearevent EVENT_RANG_CLEAR_BELL_1
@@ -107,30 +113,30 @@
 
 .AllowedThrough:
 	writetext UnknownText_0x9837e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Event000:
 	writetext UnknownText_0x98391
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SageScript_0x980b0:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_CLEAR_BELL
 	iftrue .GotClearBell
 	writetext UnknownText_0x9840b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GotClearBell:
 	writetext UnknownText_0x9846f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GrampsScript_0x980c4:
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ECRUTEAKITEMFINDERHOUSE_COOLTRAINER_M
+	const ECRUTEAKITEMFINDERHOUSE_POKEDEX
+
 EcruteakItemfinderHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +11,7 @@
 
 CooltrainerMScript_0x9a5fb:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_ITEMFINDER
 	iftrue UnknownScript_0x9a614
 	writetext UnknownText_0x9a63c
@@ -14,27 +18,27 @@
 	yesorno
 	iffalse UnknownScript_0x9a61a
 	writetext UnknownText_0x9a6b5
-	keeptextopen
+	buttonsound
 	verbosegiveitem ITEMFINDER
 	setevent EVENT_GOT_ITEMFINDER
 UnknownScript_0x9a614:
 	writetext UnknownText_0x9a70e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9a61a:
 	writetext UnknownText_0x9a805
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokedexScript_0x9a620:
-	loadfont
+	opentext
 	writetext UnknownText_0x9a826
 	yesorno
 	iftrue UnknownScript_0x9a62a
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x9a62a:
@@ -41,13 +45,13 @@
 	writetext UnknownText_0x9a84c
 	yesorno
 	iftrue UnknownScript_0x9a633
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x9a633:
 	writetext UnknownText_0x9a902
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ItemFinderHouseRadio:
--- a/maps/EcruteakLugiaSpeechHouse.asm
+++ b/maps/EcruteakLugiaSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ECRUTEAKLUGIASPEECHHOUSE_GRAMPS
+	const ECRUTEAKLUGIASPEECHHOUSE_YOUNGSTER
+
 EcruteakLugiaSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/EcruteakMart.asm
+++ b/maps/EcruteakMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ECRUTEAKMART_CLERK
+	const ECRUTEAKMART_SUPER_NERD
+	const ECRUTEAKMART_GRANNY
+
 EcruteakMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x99c3b:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_ECRUTEAK
-	loadmovesprites
+	closetext
 	end
 
 SuperNerdScript_0x99c42:
--- a/maps/EcruteakPokeCenter1F.asm
+++ b/maps/EcruteakPokeCenter1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const ECRUTEAKPOKECENTER1F_NURSE
+	const ECRUTEAKPOKECENTER1F_POKEFAN_M
+	const ECRUTEAKPOKECENTER1F_COOLTRAINER_F
+	const ECRUTEAKPOKECENTER1F_GYM_GUY
+	const ECRUTEAKPOKECENTER1F_BILL
+
 EcruteakPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -19,37 +26,37 @@
 UnknownScript_0x98e64:
 	pause 30
 	playsound SFX_EXIT_BUILDING
-	appear $6
-	waitbutton
-	applymovement $6, MovementData_0x98ec5
+	appear ECRUTEAKPOKECENTER1F_BILL
+	waitsfx
+	applymovement ECRUTEAKPOKECENTER1F_BILL, MovementData_0x98ec5
 	applymovement PLAYER, MovementData_0x98ed4
-	spriteface $2, UP
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
 	pause 10
-	spriteface $2, DOWN
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
 	pause 30
-	spriteface $2, UP
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
 	pause 10
-	spriteface $2, DOWN
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
 	pause 20
-	spriteface $6, DOWN
+	spriteface ECRUTEAKPOKECENTER1F_BILL, DOWN
 	pause 10
-	loadfont
+	opentext
 	writetext UnknownText_0x98ed8
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0x98e95
 
 UnknownScript_0x98e95:
 	writetext UnknownText_0x98f22
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $6, MovementData_0x98ece
+	applymovement ECRUTEAKPOKECENTER1F_BILL, MovementData_0x98ece
 	playsound SFX_EXIT_BUILDING
-	disappear $6
+	disappear ECRUTEAKPOKECENTER1F_BILL
 	clearevent EVENT_MET_BILL
 	setflag ENGINE_TIME_CAPSULE
 	dotrigger $1
-	waitbutton
+	waitsfx
 	end
 
 NurseScript_0x98eb0:
--- a/maps/ElmsHouse.asm
+++ b/maps/ElmsHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ELMSHOUSE_TEACHER
+	const ELMSHOUSE_BUG_CATCHER
+
 ElmsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -1,14 +1,22 @@
+const_value set 2
+	const ELMSLAB_ELM
+	const ELMSLAB_SCIENTIST
+	const ELMSLAB_POKE_BALL1
+	const ELMSLAB_POKE_BALL2
+	const ELMSLAB_POKE_BALL3
+	const ELMSLAB_OFFICER
+
 ElmsLab_MapScriptHeader:
 .MapTriggers:
 	db 6
 
 	; triggers
-	dw UnknownScript_0x78b7a, 0
-	dw UnknownScript_0x78b7e, 0
-	dw UnknownScript_0x78b7f, 0
-	dw UnknownScript_0x78b80, 0
-	dw UnknownScript_0x78b81, 0
-	dw UnknownScript_0x78b82, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
+	dw .Trigger2, 0
+	dw .Trigger3, 0
+	dw .Trigger4, 0
+	dw .Trigger5, 0
 
 .MapCallbacks:
 	db 1
@@ -15,39 +23,39 @@
 
 	; callbacks
 
-	dbw 2, ElmsLab_PutElmAtLaptop
+	dbw 2, .Callback_MoveElm
 
-UnknownScript_0x78b7a:
+.Trigger0:
 	priorityjump ElmsLab_AutowalkUpToElm
 	end
 
-UnknownScript_0x78b7e:
+.Trigger1:
 	end
 
-UnknownScript_0x78b7f:
+.Trigger2:
 	end
 
-UnknownScript_0x78b80:
+.Trigger3:
 	end
 
-UnknownScript_0x78b81:
+.Trigger4:
 	end
 
-UnknownScript_0x78b82:
+.Trigger5:
 	end
 
-ElmsLab_PutElmAtLaptop:
+.Callback_MoveElm:
 	checktriggers
 	iftrue .Skip
-	moveperson $2, $3, $4
+	moveperson ELMSLAB_ELM, $3, $4
 .Skip:
 	return
 
 ElmsLab_AutowalkUpToElm:
 	applymovement PLAYER, ElmsLab_WalkUpToElmMovement
-	showemote EMOTE_SHOCK, $2, 15
-	spriteface $2, RIGHT
-	loadfont
+	showemote EMOTE_SHOCK, ELMSLAB_ELM, 15
+	spriteface ELMSLAB_ELM, RIGHT
+	opentext
 	writetext ElmText_Intro
 ElmsLab_RefuseLoop:
 	yesorno
@@ -57,37 +65,37 @@
 
 ElmsLab_ElmGetsEmail:
 	writetext ElmText_Accepted
-	keeptextopen
+	buttonsound
 	writetext ElmText_ResearchAmbitions
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_GLASS_TING
 	pause 30
-	showemote EMOTE_SHOCK, $2, 10
-	spriteface $2, DOWN
-	loadfont
+	showemote EMOTE_SHOCK, ELMSLAB_ELM, 10
+	spriteface ELMSLAB_ELM, DOWN
+	opentext
 	writetext ElmText_GotAnEmail
+	waitbutton
 	closetext
-	loadmovesprites
-	loadfont
-	spriteface $2, RIGHT
+	opentext
+	spriteface ELMSLAB_ELM, RIGHT
 	writetext ElmText_MissionFromMrPokemon
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, ElmsLab_ElmToDefaultPositionMovement1
+	applymovement ELMSLAB_ELM, ElmsLab_ElmToDefaultPositionMovement1
 	spriteface PLAYER, UP
-	applymovement $2, ElmsLab_ElmToDefaultPositionMovement2
+	applymovement ELMSLAB_ELM, ElmsLab_ElmToDefaultPositionMovement2
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext ElmText_ChooseAPokemon
-	closetext
+	waitbutton
 	dotrigger $1
-	loadmovesprites
+	closetext
 	end
 
 ProfElmScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SS_TICKET_FROM_ELM
 	iftrue ElmCheckMasterBall
 	checkevent EVENT_BEAT_ELITE_FOUR
@@ -111,8 +119,8 @@
 	special Special_FindThatSpeciesYourTrainerID
 	iftrue ShowElmTogepiScript
 	writetext UnknownText_0x79a40
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmEggHatchedScript:
@@ -141,16 +149,16 @@
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue ElmDescribesMrPokemonScript
 	writetext ElmText_LetYourMonBattleIt
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LabTryToLeaveScript:
-	spriteface $2, DOWN
-	loadfont
+	spriteface ELMSLAB_ELM, DOWN
+	opentext
 	writetext LabWhereGoingText
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x78f70
 	end
 
@@ -157,30 +165,30 @@
 CyndaquilPokeBallScript:
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
-	spriteface $2, DOWN
+	spriteface ELMSLAB_ELM, DOWN
 	refreshscreen $0
 	pokepic CYNDAQUIL
 	cry CYNDAQUIL
-	closetext
-	pokepicyesorno
-	loadfont
+	waitbutton
+	closepokepic
+	opentext
 	writetext TakeCyndaquilText
 	yesorno
 	iffalse DidntChooseStarterScript
-	disappear $4
+	disappear ELMSLAB_POKE_BALL1
 	setevent EVENT_GOT_CYNDAQUIL_FROM_ELM
 	writetext ChoseStarterText
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	pokenamemem CYNDAQUIL, $0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	givepoke CYNDAQUIL, 5, BERRY
-	loadmovesprites
+	closetext
 	checkcode VAR_FACING
-	if_equal $3, ElmDirectionsScript
+	if_equal RIGHT, ElmDirectionsScript
 	applymovement PLAYER, AfterCyndaquilMovement
 	jump ElmDirectionsScript
 
@@ -187,28 +195,28 @@
 TotodilePokeBallScript:
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
-	spriteface $2, DOWN
+	spriteface ELMSLAB_ELM, DOWN
 	refreshscreen $0
 	pokepic TOTODILE
 	cry TOTODILE
-	closetext
-	pokepicyesorno
-	loadfont
+	waitbutton
+	closepokepic
+	opentext
 	writetext TakeTotodileText
 	yesorno
 	iffalse DidntChooseStarterScript
-	disappear $5
+	disappear ELMSLAB_POKE_BALL2
 	setevent EVENT_GOT_TOTODILE_FROM_ELM
 	writetext ChoseStarterText
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	pokenamemem TOTODILE, $0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	givepoke TOTODILE, 5, BERRY
-	loadmovesprites
+	closetext
 	applymovement PLAYER, AfterTotodileMovement
 	jump ElmDirectionsScript
 
@@ -215,60 +223,60 @@
 ChikoritaPokeBallScript:
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
-	spriteface $2, DOWN
+	spriteface ELMSLAB_ELM, DOWN
 	refreshscreen $0
 	pokepic CHIKORITA
 	cry CHIKORITA
-	closetext
-	pokepicyesorno
-	loadfont
+	waitbutton
+	closepokepic
+	opentext
 	writetext TakeChikoritaText
 	yesorno
 	iffalse DidntChooseStarterScript
-	disappear $6
+	disappear ELMSLAB_POKE_BALL3
 	setevent EVENT_GOT_CHIKORITA_FROM_ELM
 	writetext ChoseStarterText
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	pokenamemem CHIKORITA, $0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	givepoke CHIKORITA, 5, BERRY
-	loadmovesprites
+	closetext
 	applymovement PLAYER, AfterChikoritaMovement
 	jump ElmDirectionsScript
 
 DidntChooseStarterScript:
 	writetext DidntChooseStarterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmDirectionsScript:
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext ElmDirectionsText1
+	waitbutton
 	closetext
-	loadmovesprites
 	addcellnum PHONE_ELM
-	loadfont
+	opentext
 	writetext GotElmsNumberText
 	playsound SFX_REGISTER_PHONE_NUMBER
+	waitsfx
 	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, LEFT
-	loadfont
+	spriteface ELMSLAB_ELM, LEFT
+	opentext
 	writetext ElmDirectionsText2
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, DOWN
-	loadfont
+	spriteface ELMSLAB_ELM, DOWN
+	opentext
 	writetext ElmDirectionsText3
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_A_POKEMON_FROM_ELM
 	setevent EVENT_RIVAL_CHERRYGROVE_CITY
 	dotrigger $5
@@ -277,24 +285,24 @@
 
 ElmDescribesMrPokemonScript:
 	writetext ElmDescribesMrPokemonText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LookAtElmPokeBallScript:
-	loadfont
+	opentext
 	writetext ElmPokeBallText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmsLabHealingMachine:
-	loadfont
+	opentext
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue .CanHeal
 	writetext ElmsLabHealingMachineText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .CanHeal
@@ -301,7 +309,7 @@
 	writetext ElmsLabHealingMachineText2
 	yesorno
 	iftrue ElmsLabHealingMachine_HealParty
-	loadmovesprites
+	closetext
 	end
 
 ElmsLabHealingMachine_HealParty:
@@ -312,12 +320,12 @@
 	special HealMachineAnim
 	pause 30
 	special RestartMapMusic
-	loadmovesprites
+	closetext
 	end
 
 ElmAfterTheftDoneScript:
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmAfterTheftScript:
@@ -324,18 +332,18 @@
 	writetext ElmAfterTheftText1
 	checkitem MYSTERY_EGG
 	iffalse ElmAfterTheftDoneScript
-	keeptextopen
+	buttonsound
 	writetext ElmAfterTheftText2
-	closetext
+	waitbutton
 	takeitem MYSTERY_EGG
 	scall ElmJumpBackScript1
 	writetext ElmAfterTheftText3
-	closetext
+	waitbutton
 	scall ElmJumpBackScript2
 	writetext ElmAfterTheftText4
-	keeptextopen
+	buttonsound
 	writetext ElmAfterTheftText5
-	keeptextopen
+	buttonsound
 	setevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	setflag ENGINE_BUG_CONTEST_ON
 	domaptrigger ROUTE_29, $1
@@ -342,82 +350,82 @@
 	clearevent EVENT_ROUTE_30_YOUNGSTER_JOEY
 	setevent EVENT_ROUTE_30_BATTLE
 	writetext ElmAfterTheftText6
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $6
 	end
 
 ElmStudyingEggScript:
 	writetext ElmStudyingEggText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmAideHasEggScript:
 	writetext ElmAideHasEggText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmWaitingEggHatchScript:
 	writetext ElmWaitingEggHatchText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ShowElmTogepiScript:
 	writetext ShowElmTogepiText1
+	waitbutton
 	closetext
-	loadmovesprites
-	showemote EMOTE_SHOCK, $2, 15
+	showemote EMOTE_SHOCK, ELMSLAB_ELM, 15
 	setevent EVENT_SHOWED_TOGEPI_TO_ELM
-	loadfont
+	opentext
 	writetext ShowElmTogepiText2
-	keeptextopen
+	buttonsound
 	writetext ShowElmTogepiText3
-	keeptextopen
+	buttonsound
 ElmGiveEverstoneScript:
 	writetext ElmGiveEverstoneText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem EVERSTONE
 	iffalse ElmScript_NoRoomForEverstone
 	writetext ElmGiveEverstoneText2
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_EVERSTONE_FROM_ELM
 	end
 
 ElmScript_CallYou:
 	writetext ElmText_CallYou
-	closetext
+	waitbutton
 ElmScript_NoRoomForEverstone:
-	loadmovesprites
+	closetext
 	end
 
 ElmGiveMasterBallScript:
 	writetext ElmGiveMasterBallText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem MASTER_BALL
 	iffalse .notdone
 	setevent EVENT_GOT_MASTER_BALL_FROM_ELM
 	writetext ElmGiveMasterBallText2
-	closetext
+	waitbutton
 .notdone
-	loadmovesprites
+	closetext
 	end
 
 ElmGiveTicketScript:
 	writetext ElmGiveTicketText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem S_S_TICKET
 	setevent EVENT_GOT_SS_TICKET_FROM_ELM
 	writetext ElmGiveTicketText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmJumpBackScript1:
-	loadmovesprites
+	closetext
 	checkcode VAR_FACING
 	if_equal DOWN, ElmJumpDownScript
 	if_equal UP, ElmJumpUpScript
@@ -426,7 +434,7 @@
 	end
 
 ElmJumpBackScript2:
-	loadmovesprites
+	closetext
 	checkcode VAR_FACING
 	if_equal DOWN, ElmJumpUpScript
 	if_equal UP, ElmJumpDownScript
@@ -435,75 +443,75 @@
 	end
 
 ElmJumpUpScript:
-	applymovement $2, ElmJumpUpMovement
-	loadfont
+	applymovement ELMSLAB_ELM, ElmJumpUpMovement
+	opentext
 	end
 
 ElmJumpDownScript:
-	applymovement $2, ElmJumpDownMovement
-	loadfont
+	applymovement ELMSLAB_ELM, ElmJumpDownMovement
+	opentext
 	end
 
 ElmJumpLeftScript:
-	applymovement $2, ElmJumpLeftMovement
-	loadfont
+	applymovement ELMSLAB_ELM, ElmJumpLeftMovement
+	opentext
 	end
 
 ElmJumpRightScript:
-	applymovement $2, ElmJumpRightMovement
-	loadfont
+	applymovement ELMSLAB_ELM, ElmJumpRightMovement
+	opentext
 	end
 
 AideScript_WalkPotions1:
-	applymovement $3, AideWalksRight1
+	applymovement ELMSLAB_SCIENTIST, AideWalksRight1
 	spriteface PLAYER, DOWN
 	scall AideScript_GivePotions
-	applymovement $3, AideWalksLeft1
+	applymovement ELMSLAB_SCIENTIST, AideWalksLeft1
 	end
 
 AideScript_WalkPotions2:
-	applymovement $3, AideWalksRight2
+	applymovement ELMSLAB_SCIENTIST, AideWalksRight2
 	spriteface PLAYER, DOWN
 	scall AideScript_GivePotions
-	applymovement $3, AideWalksLeft2
+	applymovement ELMSLAB_SCIENTIST, AideWalksLeft2
 	end
 
 AideScript_GivePotions:
-	loadfont
+	opentext
 	writetext AideText_GiveYouPotions
-	keeptextopen
+	buttonsound
 	verbosegiveitem POTION
 	writetext AideText_AlwaysBusy
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $2
 	end
 
 AideScript_WalkBalls1:
-	applymovement $3, AideWalksRight1
+	applymovement ELMSLAB_SCIENTIST, AideWalksRight1
 	spriteface PLAYER, DOWN
 	scall AideScript_GiveYouBalls
-	applymovement $3, AideWalksLeft1
+	applymovement ELMSLAB_SCIENTIST, AideWalksLeft1
 	end
 
 AideScript_WalkBalls2:
-	applymovement $3, AideWalksRight2
+	applymovement ELMSLAB_SCIENTIST, AideWalksRight2
 	spriteface PLAYER, DOWN
 	scall AideScript_GiveYouBalls
-	applymovement $3, AideWalksLeft2
+	applymovement ELMSLAB_SCIENTIST, AideWalksLeft2
 	end
 
 AideScript_GiveYouBalls:
-	loadfont
+	opentext
 	writetext AideText_GiveYouBalls
-	keeptextopen
+	buttonsound
 	itemtotext POKE_BALL, $1
 	scall AideScript_ReceiveTheBalls
 	giveitem POKE_BALL, 5
 	writetext AideText_ExplainBalls
-	keeptextopen
+	buttonsound
 	itemnotify
-	loadmovesprites
+	closetext
 	dotrigger $2
 	end
 
@@ -513,7 +521,7 @@
 
 ElmsAideScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
 	iftrue AideScript_AfterTheft
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
@@ -521,26 +529,26 @@
 	checkevent EVENT_GOT_MYSTERY_EGG_FROM_MR_POKEMON
 	iftrue AideScript_TheftTestimony
 	writetext AideText_AlwaysBusy
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AideScript_TheftTestimony:
 	writetext AideText_TheftTestimony
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AideScript_ExplainBalls:
 	writetext AideText_ExplainBalls
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AideScript_AfterTheft:
 	writetext AideText_AfterTheft
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MeetCopScript2:
@@ -549,21 +557,21 @@
 MeetCopScript:
 	applymovement PLAYER, MeetCopScript_WalkUp
 CopScript:
-	spriteface $7, LEFT
-	loadfont
+	spriteface ELMSLAB_OFFICER, LEFT
+	opentext
 	writetext ElmsLabOfficerText1
-	keeptextopen
+	buttonsound
 	special SpecialNameRival
 	writetext ElmsLabOfficerText2
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $7, OfficerLeavesMovement
-	disappear $7
+	applymovement ELMSLAB_OFFICER, OfficerLeavesMovement
+	disappear ELMSLAB_OFFICER
 	dotrigger $2
 	end
 
 ElmsLabWindow:
-	loadfont
+	opentext
 	checkflag ENGINE_FLYPOINT_VIOLET
 	iftrue .Normal
 	checkevent EVENT_ELM_CALLED_ABOUT_STOLEN_POKEMON
@@ -572,14 +580,14 @@
 
 .BreakIn
 	writetext ElmsLabWindowText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Normal
 	writetext ElmsLabWindowText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ElmsLabTravelTip1:
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -1,29 +1,35 @@
+const_value set 2
+	const FASTSHIP1F_SAILOR1
+	const FASTSHIP1F_SAILOR2
+	const FASTSHIP1F_SAILOR3
+	const FASTSHIP1F_GENTLEMAN
+
 FastShip1F_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
-	dw .Trigger3, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	end
 
-.Trigger2:
+.Trigger1:
 	priorityjump .PriorityJump2
 	end
 
-.Trigger3:
+.Trigger2:
 	end
 
 .PriorityJump2:
-	applymovement $2, MovementData_0x7520e
+	applymovement FASTSHIP1F_SAILOR1, MovementData_0x7520e
 	applymovement PLAYER, MovementData_0x75217
-	applymovement $2, MovementData_0x75211
+	applymovement FASTSHIP1F_SAILOR1, MovementData_0x75211
 	pause 30
 	playsound SFX_BOAT
 	earthquake 30
@@ -40,20 +46,20 @@
 
 SailorScript_0x75160:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FAST_SHIP_HAS_ARRIVED
 	iftrue .Arrived
 	checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	iftrue .Olivine
 	writetext UnknownText_0x7523b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Olivine
 	writetext UnknownText_0x7529b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Arrived:
@@ -60,12 +66,12 @@
 	checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	iftrue ._Olivine
 	writetext UnknownText_0x754be
+	waitbutton
 	closetext
-	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger VERMILION_PORT, $1
 	warp VERMILION_PORT, $7, $11
@@ -73,12 +79,12 @@
 
 ._Olivine
 	writetext UnknownText_0x7548d
+	waitbutton
 	closetext
-	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
 	domaptrigger OLIVINE_PORT, $1
 	warp OLIVINE_PORT, $7, $17
@@ -87,29 +93,29 @@
 .LetThePlayerOut:
 	checkcode VAR_FACING
 	if_equal RIGHT, .YouAreFacingRight
-	applymovement $2, MovementData_0x7520e
+	applymovement FASTSHIP1F_SAILOR1, MovementData_0x7520e
 	applymovement PLAYER, MovementData_0x75235
 	end
 
 .YouAreFacingRight:
-	applymovement $2, MovementData_0x75214
+	applymovement FASTSHIP1F_SAILOR1, MovementData_0x75214
 	applymovement PLAYER, MovementData_0x75238
 	end
 
 SailorScript_0x751d0:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue .Vermilion
 	writetext UnknownText_0x752f9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Vermilion:
 	writetext UnknownText_0x7534f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorScript_0x751e4:
@@ -116,21 +122,21 @@
 	jumptextfaceplayer UnknownText_0x753c0
 
 WorriedGrandpaTriggerRight:
-	moveperson $5, $14, $6
+	moveperson FASTSHIP1F_GENTLEMAN, $14, $6
 
 WorriedGrandpaTriggerLeft:
-	appear $5
-	applymovement $5, MovementData_0x7521b
+	appear FASTSHIP1F_GENTLEMAN
+	applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x7521b
 	playsound SFX_TACKLE
 	applymovement PLAYER, MovementData_0x7522e
-	applymovement $5, MovementData_0x75220
-	loadfont
+	applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x75220
+	opentext
 	writetext UnknownText_0x75412
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, RIGHT
-	applymovement $5, MovementData_0x75222
-	disappear $5
+	applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x75222
+	disappear FASTSHIP1F_GENTLEMAN
 	dotrigger $0
 	end
 
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -1,3 +1,17 @@
+const_value set 2
+	const FASTSHIPB1F_SAILOR1
+	const FASTSHIPB1F_SAILOR2
+	const FASTSHIPB1F_SAILOR3
+	const FASTSHIPB1F_LASS
+	const FASTSHIPB1F_SUPER_NERD
+	const FASTSHIPB1F_SAILOR4
+	const FASTSHIPB1F_FISHER
+	const FASTSHIPB1F_BLACK_BELT
+	const FASTSHIPB1F_SAILOR5
+	const FASTSHIPB1F_TEACHER
+	const FASTSHIPB1F_YOUNGSTER1
+	const FASTSHIPB1F_YOUNGSTER2
+
 FastShipB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -18,21 +32,21 @@
 UnknownScript_0x7673c:
 	checkevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
 	iftrue UnknownScript_0x76766
-	applymovement $3, MovementData_0x76876
-	moveperson $2, $1e, $6
-	appear $2
+	applymovement FASTSHIPB1F_SAILOR2, MovementData_0x76876
+	moveperson FASTSHIPB1F_SAILOR1, $1e, $6
+	appear FASTSHIPB1F_SAILOR1
 	pause 5
-	disappear $3
+	disappear FASTSHIPB1F_SAILOR2
 	end
 
 UnknownScript_0x76751:
 	checkevent EVENT_FAST_SHIP_B1F_SAILOR_LEFT
 	iftrue UnknownScript_0x76766
-	applymovement $2, MovementData_0x76871
-	moveperson $3, $1f, $6
-	appear $3
+	applymovement FASTSHIPB1F_SAILOR1, MovementData_0x76871
+	moveperson FASTSHIPB1F_SAILOR2, $1f, $6
+	appear FASTSHIPB1F_SAILOR2
 	pause 5
-	disappear $2
+	disappear FASTSHIPB1F_SAILOR1
 	end
 
 UnknownScript_0x76766:
@@ -40,7 +54,7 @@
 
 SailorScript_0x76767:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue UnknownScript_0x767a0
 	checkevent EVENT_FAST_SHIP_LAZY_SAILOR
@@ -48,8 +62,8 @@
 	checkevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
 	iftrue UnknownScript_0x76787
 	writetext UnknownText_0x7687b
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
 	clearevent EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
 	end
@@ -56,8 +70,8 @@
 
 UnknownScript_0x76787:
 	writetext UnknownText_0x76907
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7678d:
@@ -64,21 +78,21 @@
 	writetext UnknownText_0x7692e
 	checkevent EVENT_FAST_SHIP_FOUND_GIRL
 	iffalse UnknownScript_0x76799
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x76799:
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x7696d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x767a0:
 	writetext UnknownText_0x7699d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorJeff:
@@ -85,11 +99,11 @@
 	trainer EVENT_BEAT_SAILOR_JEFF, SAILOR, JEFF, SailorJeffSeenText, SailorJeffBeatenText, 0, SailorJeffScript
 
 SailorJeffScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76a38
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerDebra:
@@ -96,11 +110,11 @@
 	trainer EVENT_BEAT_PICNICKER_DEBRA, PICNICKER, DEBRA, PicnickerDebraSeenText, PicnickerDebraBeatenText, 0, PicnickerDebraScript
 
 PicnickerDebraScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76a99
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerJugglerFritz:
@@ -107,11 +121,11 @@
 	trainer EVENT_BEAT_JUGGLER_FRITZ, JUGGLER, FRITZ, JugglerFritzSeenText, JugglerFritzBeatenText, 0, JugglerFritzScript
 
 JugglerFritzScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76b02
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorGarrett:
@@ -118,11 +132,11 @@
 	trainer EVENT_BEAT_SAILOR_GARRETT, SAILOR, GARRETT, SailorGarrettSeenText, SailorGarrettBeatenText, 0, SailorGarrettScript
 
 SailorGarrettScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76b7a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherJonah:
@@ -129,11 +143,11 @@
 	trainer EVENT_BEAT_FISHER_JONAH, FISHER, JONAH, FisherJonahSeenText, FisherJonahBeatenText, 0, FisherJonahScript
 
 FisherJonahScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76c22
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBlackbeltWai:
@@ -140,11 +154,11 @@
 	trainer EVENT_BEAT_BLACKBELT_WAI, BLACKBELT_T, WAI, BlackbeltWaiSeenText, BlackbeltWaiBeatenText, 0, BlackbeltWaiScript
 
 BlackbeltWaiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76c9e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorKenneth:
@@ -151,11 +165,11 @@
 	trainer EVENT_BEAT_SAILOR_KENNETH, SAILOR, KENNETH, SailorKennethSeenText, SailorKennethBeatenText, 0, SailorKennethScript
 
 SailorKennethScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76d5f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTeacherShirley:
@@ -162,11 +176,11 @@
 	trainer EVENT_BEAT_TEACHER_SHIRLEY, TEACHER, SHIRLEY, TeacherShirleySeenText, TeacherShirleyBeatenText, 0, TeacherShirleyScript
 
 TeacherShirleyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76de1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyNate:
@@ -173,11 +187,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_NATE, SCHOOLBOY, NATE, SchoolboyNateSeenText, SchoolboyNateBeatenText, 0, SchoolboyNateScript
 
 SchoolboyNateScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76e3d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyRicky:
@@ -184,11 +198,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_RICKY, SCHOOLBOY, RICKY, SchoolboyRickySeenText, SchoolboyRickyBeatenText, 0, SchoolboyRickyScript
 
 SchoolboyRickyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76eb6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FashShipB1FTrashcan:
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const FASTSHIPCABINS_NNW_NNE_NE_COOLTRAINER_M
+	const FASTSHIPCABINS_NNW_NNE_NE_COOLTRAINER_F
+	const FASTSHIPCABINS_NNW_NNE_NE_SUPER_NERD
+	const FASTSHIPCABINS_NNW_NNE_NE_POKEFAN_M
+	const FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+	const FASTSHIPCABINS_NNW_NNE_NE_GENTLEMAN
+	const FASTSHIPCABINS_NNW_NNE_NE_PHARMACIST
+
 FastShipCabins_NNW_NNE_NE_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +18,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_SEAN, COOLTRAINERM, SEAN, CooltrainermSeanSeenText, CooltrainermSeanBeatenText, 0, CooltrainermSeanScript
 
 CooltrainermSeanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7567b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfCarol:
@@ -20,11 +29,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_CAROL, COOLTRAINERF, CAROL, CooltrainerfCarolSeenText, CooltrainerfCarolBeatenText, 0, CooltrainerfCarolScript
 
 CooltrainerfCarolScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x756f7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacEthan:
@@ -31,11 +40,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_ETHAN, POKEMANIAC, ETHAN, PokemaniacEthanSeenText, PokemaniacEthanBeatenText, 0, PokemaniacEthanScript
 
 PokemaniacEthanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7574b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerNoland:
@@ -42,11 +51,11 @@
 	trainer EVENT_BEAT_HIKER_NOLAND, HIKER, NOLAND, HikerNolandSeenText, HikerNolandBeatenText, 0, HikerNolandScript
 
 HikerNolandScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x757d4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGentlemanEdward:
@@ -53,11 +62,11 @@
 	trainer EVENT_BEAT_GENTLEMAN_EDWARD, GENTLEMAN, EDWARD, GentlemanEdwardSeenText, GentlemanEdwardBeatenText, 0, GentlemanEdwardScript
 
 GentlemanEdwardScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x75937
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBurglarCorey:
@@ -64,20 +73,20 @@
 	trainer EVENT_BEAT_BURGLAR_COREY, BURGLAR, COREY, BurglarCoreySeenText, BurglarCoreyBeatenText, 0, BurglarCoreyScript
 
 BurglarCoreyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x75996
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorScript_0x755f1:
 	playmusic MUSIC_HIKER_ENCOUNTER
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x75812
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x75897, 0
 	loadtrainer SAILOR, STANLY
 	startbattle
@@ -84,25 +93,25 @@
 	reloadmap
 	special HealParty
 	setevent EVENT_BEAT_SAILOR_STANLY
-	loadfont
+	opentext
 	writetext UnknownText_0x758b1
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_FAST_SHIP_LAZY_SAILOR
 	domaptrigger FAST_SHIP_B1F, $1
 	checkcode VAR_FACING
 	if_equal $3, UnknownScript_0x75629
-	applymovement $6, MovementData_0x75637
+	applymovement FASTSHIPCABINS_NNW_NNE_NE_SAILOR, MovementData_0x75637
 	playsound SFX_EXIT_BUILDING
-	disappear $6
-	waitbutton
+	disappear FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+	waitsfx
 	end
 
 UnknownScript_0x75629:
-	applymovement $6, MovementData_0x7563c
+	applymovement FASTSHIPCABINS_NNW_NNE_NE_SAILOR, MovementData_0x7563c
 	playsound SFX_EXIT_BUILDING
-	disappear $6
-	waitbutton
+	disappear FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+	waitsfx
 	end
 
 FastShipCabins_NNW_NNE_NETrashcan:
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_CAPTAIN
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_M1
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN3
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN4
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_SUPER_NERD1
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_M2
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_F
+	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_SUPER_NERD2
+
 FastShipCabins_SE_SSE_CaptainsCabin_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,63 +23,63 @@
 
 CaptainScript_0x75ea7:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue UnknownScript_0x75eb5
 	writetext UnknownText_0x76012
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x75eb5:
 	writetext UnknownText_0x76064
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TwinScript_0x75ebb:
-	spriteface $5, RIGHT
-	loadfont
+	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2, RIGHT
+	opentext
 	writetext UnknownText_0x761e0
+	waitbutton
 	closetext
-	loadmovesprites
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x7621f
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $5
+	disappear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2
 	applymovement PLAYER, MovementData_0x76004
-	moveperson $4, $3, $13
-	appear $4
+	moveperson FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, $3, $13
+	appear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1
 	spriteface PLAYER, UP
-	spriteface $4, UP
+	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, UP
 	special Special_FadeInQuickly
-	spriteface $3, DOWN
-	showemote EMOTE_SHOCK, $3, 15
-	applymovement $4, MovementData_0x7600c
-	spriteface $3, RIGHT
+	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, DOWN
+	showemote EMOTE_SHOCK, FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, 15
+	applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, MovementData_0x7600c
+	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, RIGHT
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue UnknownScript_0x75f03
-	loadfont
+	opentext
 	writetext UnknownText_0x76284
+	waitbutton
 	closetext
-	loadmovesprites
 	jump UnknownScript_0x75f09
 
 UnknownScript_0x75f03:
-	loadfont
+	opentext
 	writetext UnknownText_0x762c6
+	waitbutton
 	closetext
-	loadmovesprites
 UnknownScript_0x75f09:
-	spriteface $5, DOWN
-	applymovement $3, MovementData_0x76010
-	loadfont
+	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2, DOWN
+	applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, MovementData_0x76010
+	opentext
 	writetext UnknownText_0x76143
-	keeptextopen
+	buttonsound
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger FAST_SHIP_1F, $0
 	jump UnknownScript_0x75f37
@@ -73,58 +86,58 @@
 
 GentlemanScript_0x75f1f:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 	iftrue UnknownScript_0x75f67
 	checkevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
 	iftrue UnknownScript_0x75f58
 	writetext UnknownText_0x760ae
+	waitbutton
 	closetext
-	loadmovesprites
 	domaptrigger FAST_SHIP_1F, $0
 	end
 
 UnknownScript_0x75f37:
 	writetext UnknownText_0x7619b
-	keeptextopen
+	buttonsound
 	verbosegiveitem METAL_COAT
 	iffalse UnknownScript_0x75f44
 	setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 UnknownScript_0x75f44:
-	loadmovesprites
-	waitbutton
+	closetext
+	waitsfx
 	playsound SFX_ELEVATOR_END
 	pause 30
-	loadfont
+	opentext
 	writetext UnknownText_0x76645
-	closetext
+	waitbutton
 	setevent EVENT_FAST_SHIP_HAS_ARRIVED
 	setevent EVENT_FAST_SHIP_FOUND_GIRL
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x75f58:
 	writetext UnknownText_0x7619b
-	keeptextopen
+	buttonsound
 	verbosegiveitem METAL_COAT
 	iffalse UnknownScript_0x75f65
 	setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 UnknownScript_0x75f65:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x75f67:
 	writetext UnknownText_0x761be
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TwinScript_0x75f6d:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x7630d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmColin:
@@ -131,11 +144,11 @@
 	trainer EVENT_BEAT_POKEFANM_COLIN, POKEFANM, COLIN, PokefanmColinSeenText, PokefanmColinBeatenText, 0, PokefanmColinScript
 
 PokefanmColinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7635b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsMegandpeg1:
@@ -142,11 +155,11 @@
 	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG1, TwinsMegandpeg1SeenText, TwinsMegandpeg1BeatenText, 0, TwinsMegandpeg1Script
 
 TwinsMegandpeg1Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x763c2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsMegandpeg2:
@@ -153,11 +166,11 @@
 	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG2, TwinsMegandpeg2SeenText, TwinsMegandpeg2BeatenText, 0, TwinsMegandpeg2Script
 
 TwinsMegandpeg2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76428
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicRodney:
@@ -164,11 +177,11 @@
 	trainer EVENT_BEAT_PSYCHIC_RODNEY, PSYCHIC_T, RODNEY, PsychicRodneySeenText, PsychicRodneyBeatenText, 0, PsychicRodneyScript
 
 PsychicRodneyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76497
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmJeremy:
@@ -175,11 +188,11 @@
 	trainer EVENT_BEAT_POKEFANM_JEREMY, POKEFANM, JEREMY, PokefanmJeremySeenText, PokefanmJeremyBeatenText, 0, PokefanmJeremyScript
 
 PokefanmJeremyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7651c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanfGeorgia:
@@ -186,11 +199,11 @@
 	trainer EVENT_BEAT_POKEFANF_GEORGIA, POKEFANF, GEORGIA, PokefanfGeorgiaSeenText, PokefanfGeorgiaBeatenText, 0, PokefanfGeorgiaScript
 
 PokefanfGeorgiaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x76596
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdShawn:
@@ -197,11 +210,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_SHAWN, SUPER_NERD, SHAWN, SupernerdShawnSeenText, SupernerdShawnBeatenText, 0, SupernerdShawnScript
 
 SupernerdShawnScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7660f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FastShipCaptainsCabinTrashcan:
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const FASTSHIPCABINS_SW_SSW_NW_FISHER
+	const FASTSHIPCABINS_SW_SSW_NW_BUG_CATCHER
+	const FASTSHIPCABINS_SW_SSW_NW_BUENA
+	const FASTSHIPCABINS_SW_SSW_NW_ROCKER
+
 FastShipCabins_SW_SSW_NW_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +15,11 @@
 	trainer EVENT_BEAT_FIREBREATHER_LYLE, FIREBREATHER, LYLE, FirebreatherLyleSeenText, FirebreatherLyleBeatenText, 0, FirebreatherLyleScript
 
 FirebreatherLyleScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x75b52
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherKen:
@@ -20,11 +26,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_KEN, BUG_CATCHER, KEN, Bug_catcherKenSeenText, Bug_catcherKenBeatenText, 0, Bug_catcherKenScript
 
 Bug_catcherKenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x75bd5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBeautyCassie:
@@ -31,11 +37,11 @@
 	trainer EVENT_BEAT_BEAUTY_CASSIE, BEAUTY, CASSIE, BeautyCassieSeenText, BeautyCassieBeatenText, 0, BeautyCassieScript
 
 BeautyCassieScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x75c43
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGuitaristClyde:
@@ -42,27 +48,27 @@
 	trainer EVENT_BEAT_GUITARIST_CLYDE, GUITARIST, CLYDE, GuitaristClydeSeenText, GuitaristClydeBeatenText, 0, GuitaristClydeScript
 
 GuitaristClydeScript:
-	talkaftercancel
+	end_if_just_battled
 	special Mobile_DummyReturnFalse
 	iftrue .mobile
-	loadfont
+	opentext
 	writetext UnknownText_0x75d65
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .mobile:
-	loadfont
+	opentext
 	writetext UnknownText_0x75cfe
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FastShipBed:
-	loadfont
+	opentext
 	writetext FastShipBedText1
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
 	special Mobile_HealParty
@@ -71,10 +77,10 @@
 	pause 60
 	special RestartMapMusic
 	special Special_FadeInQuickly
-	loadfont
+	opentext
 	writetext FastShipBedText2
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_FAST_SHIP_HAS_ARRIVED
 	iftrue UnknownScript_0x75ae1
 	checkevent EVENT_FAST_SHIP_FOUND_GIRL
@@ -89,18 +95,18 @@
 	pause 30
 	checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	iftrue UnknownScript_0x75af7
-	loadfont
+	opentext
 	writetext FastShipArrivedVermilionText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_FAST_SHIP_HAS_ARRIVED
 	end
 
 UnknownScript_0x75af7:
-	loadfont
+	opentext
 	writetext FastShipArrivedOlivineText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_FAST_SHIP_HAS_ARRIVED
 	end
 
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const FIGHTINGDOJO_BLACK_BELT
+	const FIGHTINGDOJO_POKE_BALL
+
 FightingDojo_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -14,8 +18,8 @@
 MapFightingDojoSignpost1Script:
 	jumptext UnknownText_0x189be0
 
-ItemFragment_0x189b6a:
-	db FOCUS_BAND, 1
+FightingDojoFocusBand:
+	itemball FOCUS_BAND
 
 UnknownText_0x189b6c:
 	text "Hello!"
@@ -58,4 +62,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_BLACK_BELT, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x189b61, -1
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, FightingDojoFocusBand, EVENT_PICKED_UP_FOCUS_BAND
--- a/maps/FuchsiaBillSpeechHouse.asm
+++ b/maps/FuchsiaBillSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const FUCHSIABILLSPEECHHOUSE_POKEFAN_F
+	const FUCHSIABILLSPEECHHOUSE_YOUNGSTER
+
 FuchsiaBillSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const FUCHSIACITY_YOUNGSTER
+	const FUCHSIACITY_POKEFAN_M
+	const FUCHSIACITY_TEACHER
+	const FUCHSIACITY_FRUIT_TREE
+
 FuchsiaCity_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const FUCHSIAGYM_JANINE
+	const FUCHSIAGYM_FUCHSIA_GYM_1
+	const FUCHSIAGYM_FUCHSIA_GYM_2
+	const FUCHSIAGYM_FUCHSIA_GYM_3
+	const FUCHSIAGYM_FUCHSIA_GYM_4
+	const FUCHSIAGYM_GYM_GUY
+
 FuchsiaGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -8,16 +16,16 @@
 JanineScript_0x195db9:
 	checkflag ENGINE_SOULBADGE
 	iftrue .FightDone
-	applymovement $2, MovementData_0x195f27
+	applymovement FUCHSIAGYM_JANINE, MovementData_0x195f27
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x195f35
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x195fa1, 0
 	loadtrainer JANINE, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_JANINE
 	setevent EVENT_BEAT_LASS_ALICE
 	setevent EVENT_BEAT_LASS_LINDA
@@ -28,179 +36,179 @@
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
 	special RunCallback_04
-	loadfont
+	opentext
 	writetext UnknownText_0x195feb
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_SOULBADGE
 	jump UnknownScript_0x195e02
 .FightDone
 	faceplayer
-	loadfont
+	opentext
 UnknownScript_0x195e02:
 	checkevent EVENT_GOT_TM06_TOXIC
 	iftrue UnknownScript_0x195e15
 	writetext UnknownText_0x196002
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_TOXIC
 	iffalse UnknownScript_0x195e15
 	setevent EVENT_GOT_TM06_TOXIC
 UnknownScript_0x195e15:
 	writetext UnknownText_0x196074
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuschiaGym1Script_0x195e1b:
 	checkevent EVENT_BEAT_LASS_ALICE
 	iftrue UnknownScript_0x195e2c
-	applymovement $3, MovementData_0x195f27
+	applymovement FUCHSIAGYM_FUCHSIA_GYM_1, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_LASS
 	special RunCallback_04
 UnknownScript_0x195e2c:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_LASS_ALICE
 	iftrue UnknownScript_0x195e4f
 	writetext UnknownText_0x1960e6
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x196126, 0
 	loadtrainer LASS, ALICE
 	startbattle
 	iftrue UnknownScript_0x195e4a
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_LASS_ALICE
 	end
 
 UnknownScript_0x195e4a:
 	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_JANINE
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x195e4f:
 	writetext UnknownText_0x196139
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuschiaGym2Script_0x195e55:
 	checkevent EVENT_BEAT_LASS_LINDA
 	iftrue UnknownScript_0x195e66
-	applymovement $4, MovementData_0x195f27
+	applymovement FUCHSIAGYM_FUCHSIA_GYM_2, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
 	special RunCallback_04
 UnknownScript_0x195e66:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_LASS_LINDA
 	iftrue UnknownScript_0x195e89
 	writetext UnknownText_0x196166
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x19617b, 0
 	loadtrainer LASS, LINDA
 	startbattle
 	iftrue UnknownScript_0x195e84
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_LASS_LINDA
 	end
 
 UnknownScript_0x195e84:
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_JANINE
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x195e89:
 	writetext UnknownText_0x196199
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuschiaGym3Script_0x195e8f:
 	checkevent EVENT_BEAT_PICNICKER_CINDY
 	iftrue UnknownScript_0x195ea0
-	applymovement $5, MovementData_0x195f27
+	applymovement FUCHSIAGYM_FUCHSIA_GYM_3, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
 	special RunCallback_04
 UnknownScript_0x195ea0:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_PICNICKER_CINDY
 	iftrue UnknownScript_0x195ec3
 	writetext UnknownText_0x1961bb
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1961f1, 0
 	loadtrainer PICNICKER, CINDY
 	startbattle
 	iftrue UnknownScript_0x195ebe
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_PICNICKER_CINDY
 	end
 
 UnknownScript_0x195ebe:
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_JANINE
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x195ec3:
 	writetext UnknownText_0x19620c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuschiaGym4Script_0x195ec9:
 	checkevent EVENT_BEAT_CAMPER_BARRY
 	iftrue UnknownScript_0x195eda
-	applymovement $6, MovementData_0x195f27
+	applymovement FUCHSIAGYM_FUCHSIA_GYM_4, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
 	special RunCallback_04
 UnknownScript_0x195eda:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_CAMPER_BARRY
 	iftrue UnknownScript_0x195efd
 	writetext UnknownText_0x196228
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x19624a, 0
 	loadtrainer CAMPER, BARRY
 	startbattle
 	iftrue UnknownScript_0x195ef8
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_CAMPER_BARRY
 	end
 
 UnknownScript_0x195ef8:
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_JANINE
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x195efd:
 	writetext UnknownText_0x19626b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuchsiaGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_JANINE
 	iftrue .FuchsiaGymGuyWinScript
 	writetext FuchsiaGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FuchsiaGymGuyWinScript
 	writetext FuchsiaGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FuchsiaGymStatue:
--- a/maps/FuchsiaMart.asm
+++ b/maps/FuchsiaMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const FUCHSIAMART_CLERK
+	const FUCHSIAMART_FISHER
+	const FUCHSIAMART_COOLTRAINER_F
+
 FuchsiaMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x195ce8:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_FUCHSIA
-	loadmovesprites
+	closetext
 	end
 
 FisherScript_0x195cef:
--- a/maps/FuchsiaPokeCenter1F.asm
+++ b/maps/FuchsiaPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const FUCHSIAPOKECENTER1F_NURSE
+	const FUCHSIAPOKECENTER1F_COOLTRAINER_M
+	const FUCHSIAPOKECENTER1F_COOLTRAINER_F
+	const FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR
+
 FuchsiaPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -22,19 +28,19 @@
 
 JanineImpersonatorScript_0x196462:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x19652e
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x196486
+	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
 	special RunCallback_04
-	loadfont
+	opentext
 	writetext UnknownText_0x19654e
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x196486
+	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
 	special RunCallback_04
--- a/maps/FuchsiaPokeCenter2FBeta.asm
+++ b/maps/FuchsiaPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 FuchsiaPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const GOLDENRODBIKESHOP_CLERK
+
 GoldenrodBikeShop_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,7 +13,7 @@
 
 ClerkScript_0x54750:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_BICYCLE
 	iftrue UnknownScript_0x54775
 	writetext UnknownText_0x54787
@@ -17,25 +20,25 @@
 	yesorno
 	iffalse UnknownScript_0x5477b
 	writetext UnknownText_0x547f8
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	giveitem BICYCLE
 	writetext UnknownText_0x54848
 	playsound SFX_KEY_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setflag ENGINE_BIKE_SHOP_CALL_ENABLED
 	setevent EVENT_GOT_BICYCLE
 UnknownScript_0x54775:
 	writetext UnknownText_0x5485f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5477b:
 	writetext UnknownText_0x54898
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ; possibly unused
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const GOLDENRODBILLSHOUSE_BILL
+	const GOLDENRODBILLSHOUSE_POKEFAN_F
+	const GOLDENRODBILLSHOUSE_TWIN
+
 GoldenrodBillsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +12,7 @@
 
 BillsHouseBill:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_EEVEE
 	iftrue UnknownScript_0x54c1f
 	writetext UnknownText_0x54c74
@@ -14,57 +19,57 @@
 	yesorno
 	iffalse UnknownScript_0x54c19
 	writetext UnknownText_0x54d3f
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	checkcode VAR_PARTYCOUNT
 	if_equal $6, UnknownScript_0x54c13
 	writetext UnknownText_0x54dae
 	playsound SFX_CAUGHT_MON
-	waitbutton
+	waitsfx
 	givepoke EEVEE, 20
 	setevent EVENT_GOT_EEVEE
 	writetext UnknownText_0x54dc1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c13:
 	writetext UnknownText_0x54e02
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c19:
 	writetext UnknownText_0x54e2d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c1f:
 	writetext UnknownText_0x54e42
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BillsMom:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_MET_BILL
 	iffalse UnknownScript_0x54c33
 	writetext UnknownText_0x54ea8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c33:
 	writetext UnknownText_0x54f4e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BillsSister:
 	faceplayer
-	loadfont
+	opentext
 	checkcellnum PHONE_BILL
 	iftrue UnknownScript_0x54c58
 	writetext UnknownText_0x54f9e
@@ -71,27 +76,27 @@
 	askforphonenumber PHONE_BILL
 	if_equal $1, UnknownScript_0x54c64
 	if_equal $2, UnknownScript_0x54c5e
-	waitbutton
+	waitsfx
 	addcellnum PHONE_BILL
 	writetext UnknownText_0x54fd9
 	playsound SFX_REGISTER_PHONE_NUMBER
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 UnknownScript_0x54c58: ;0x54c58
 	writetext UnknownText_0x55069
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c5e:
 	writetext UnknownText_0x54ff3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54c64:
 	writetext UnknownText_0x55046
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0x54c5e
 
 BillsHouseBookshelf1:
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -1,3 +1,20 @@
+const_value set 2
+	const GOLDENRODCITY_POKEFAN_M1
+	const GOLDENRODCITY_YOUNGSTER1
+	const GOLDENRODCITY_COOLTRAINER_F1
+	const GOLDENRODCITY_COOLTRAINER_F2
+	const GOLDENRODCITY_YOUNGSTER2
+	const GOLDENRODCITY_LASS
+	const GOLDENRODCITY_GRAMPS
+	const GOLDENRODCITY_ROCKET1
+	const GOLDENRODCITY_ROCKET2
+	const GOLDENRODCITY_ROCKET3
+	const GOLDENRODCITY_ROCKET4
+	const GOLDENRODCITY_ROCKET5
+	const GOLDENRODCITY_ROCKET6
+	const GOLDENRODCITY_ROCKET7
+	const GOLDENRODCITY_POKEFAN_M2
+
 GoldenrodCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -27,19 +44,19 @@
 	if_equal WEDNESDAY, .MoveTutorAppear
 	if_equal SATURDAY, .MoveTutorAppear
 .MoveTutorDisappear
-	disappear $10
+	disappear GOLDENRODCITY_POKEFAN_M2
 	return
 
 .MoveTutorAppear
 	checkflag ENGINE_DAILY_MOVE_TUTOR
 	iftrue .MoveTutorDone
-	appear $10
+	appear GOLDENRODCITY_POKEFAN_M2
 .MoveTutorDone
 	return
 
 MoveTutor:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x199042
 	yesorno
 	iffalse .Refused
@@ -51,8 +68,8 @@
 	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x1990ce
 	loadmenudata .MoveMenuDataHeader
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .Flamethrower
 	if_equal $2, .Thunderbolt
 	if_equal $3, .IceBeam
@@ -98,51 +115,51 @@
 
 .Refused:
 	writetext UnknownText_0x1990b4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Refused2:
 	writetext UnknownText_0x199107
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .TeachMove:
 	writetext UnknownText_0x19913a
-	keeptextopen
+	buttonsound
 	takecoins 4000
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
 	special Special_DisplayCoinCaseBalance
 	writetext UnknownText_0x19918b
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
-	if_equal $2, .WalkAroundPlayer
-	applymovement $10, MovementData_0x198a5f
+	if_equal LEFT, .WalkAroundPlayer
+	applymovement GOLDENRODCITY_POKEFAN_M2, MovementData_0x198a5f
 	jump .GoInside
 
 .WalkAroundPlayer:
-	applymovement $10, MovementData_0x198a63
+	applymovement GOLDENRODCITY_POKEFAN_M2, MovementData_0x198a63
 .GoInside:
 	playsound SFX_ENTER_DOOR
-	disappear $10
+	disappear GOLDENRODCITY_POKEFAN_M2
 	clearevent EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
 	setflag ENGINE_DAILY_MOVE_TUTOR
-	waitbutton
+	waitsfx
 	end
 
 .Incompatible:
 	writetext UnknownText_0x1991a4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NotEnoughMoney:
 	writetext UnknownText_0x1991ac
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x1989e3:
@@ -153,34 +170,34 @@
 
 CooltrainerFScript_0x1989e9:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_RADIO_TOWER
 	iftrue .ClearedRadioTower
 	writetext UnknownText_0x198ae6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .ClearedRadioTower:
 	writetext UnknownText_0x198b2d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x1989fd:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_RADIO_CARD
 	iftrue .GotRadioCard
 	writetext UnknownText_0x198b73
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GotRadioCard:
 	writetext UnknownText_0x198c14
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x198a11:
@@ -193,14 +210,14 @@
 	jumptextfaceplayer UnknownText_0x198ccf
 
 RocketScript_0x198a1a:
-	loadfont
+	opentext
 	writetext UnknownText_0x198d0d
-	keeptextopen
+	buttonsound
 	faceplayer
 	writetext UnknownText_0x198d2a
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $9, UP
+	spriteface GOLDENRODCITY_ROCKET1, UP
 	end
 
 RocketScript_0x198a29:
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE1F_RECEPTIONIST
+	const GOLDENRODDEPTSTORE1F_POKEFAN_F
+	const GOLDENRODDEPTSTORE1F_BUG_CATCHER
+	const GOLDENRODDEPTSTORE1F_GENTLEMAN
+
 GoldenrodDeptStore1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE2F_CLERK1
+	const GOLDENRODDEPTSTORE2F_CLERK2
+	const GOLDENRODDEPTSTORE2F_YOUNGSTER
+	const GOLDENRODDEPTSTORE2F_COOLTRAINER_F
+	const GOLDENRODDEPTSTORE2F_GENTLEMAN
+
 GoldenrodDeptStore2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,16 +14,16 @@
 
 ClerkScript_0x55b5d:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_2F_1
-	loadmovesprites
+	closetext
 	end
 
 ClerkScript_0x55b65:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_2F_2
-	loadmovesprites
+	closetext
 	end
 
 YoungsterScript_0x55b6d:
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE3F_CLERK
+	const GOLDENRODDEPTSTORE3F_SUPER_NERD
+	const GOLDENRODDEPTSTORE3F_ROCKER
+
 GoldenrodDeptStore3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,9 +12,9 @@
 
 ClerkScript_0x55db8:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_3F
-	loadmovesprites
+	closetext
 	end
 
 SuperNerdScript_0x55dc0:
--- a/maps/GoldenrodDeptStore4F.asm
+++ b/maps/GoldenrodDeptStore4F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE4F_CLERK
+	const GOLDENRODDEPTSTORE4F_COOLTRAINER_M
+	const GOLDENRODDEPTSTORE4F_BUG_CATCHER
+	const GOLDENRODDEPTSTORE4F_GAMEBOY_KID
+
 GoldenrodDeptStore4F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,9 +13,9 @@
 
 ClerkScript_0x55ee9:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_4F
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x55ef1:
@@ -20,11 +26,11 @@
 
 GameboyKidScript_0x55ef7:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x55f74
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, DOWN
+	spriteface GOLDENRODDEPTSTORE4F_GAMEBOY_KID, DOWN
 	end
 
 GoldenrodDeptStore4FDirectory:
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE5F_CLERK
+	const GOLDENRODDEPTSTORE5F_LASS
+	const GOLDENRODDEPTSTORE5F_COOLTRAINER_M
+	const GOLDENRODDEPTSTORE5F_POKEFAN_M
+	const GOLDENRODDEPTSTORE5F_TWIN
+	const GOLDENRODDEPTSTORE5F_RECEPTIONIST
+
 GoldenrodDeptStore5F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,16 +20,16 @@
 .CheckIfSunday:
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, .yes
-	disappear $7
+	disappear GOLDENRODDEPTSTORE5F_RECEPTIONIST
 	return
 
 .yes:
-	appear $7
+	appear GOLDENRODDEPTSTORE5F_RECEPTIONIST
 	return
 
 ClerkScript_0x5609c:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM02_HEADBUTT
 	iftrue .headbutt
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
@@ -35,27 +43,27 @@
 
 .neither:
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_5F_1
-	loadmovesprites
+	closetext
 	end
 
 .onlyheadbutt:
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_5F_2
-	loadmovesprites
+	closetext
 	end
 
 .onlyrocksmash:
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_5F_3
-	loadmovesprites
+	closetext
 	end
 
 .both:
 	pokemart MARTTYPE_STANDARD, MART_GOLDENROD_5F_4
-	loadmovesprites
+	closetext
 	end
 
 ReceptionistScript_0x560ce:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_WEEKDAY
 	if_not_equal SUNDAY, .EventIsOver
 	checkflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
@@ -62,7 +70,7 @@
 	iftrue .EventIsOver
 	special GetFirstPokemonHappiness
 	writetext UnknownText_0x56143
-	keeptextopen
+	buttonsound
 	if_greater_than $95, .VeryHappy
 	if_greater_than $31, .SomewhatHappy
 	jump .NotVeryHappy
@@ -69,50 +77,50 @@
 
 .VeryHappy:
 	writetext UnknownText_0x5615a
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_RETURN
 	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
-	loadmovesprites
+	closetext
 	end
 
 .SomewhatHappy:
 	writetext UnknownText_0x561a6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NotVeryHappy:
 	writetext UnknownText_0x561d8
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_FRUSTRATION
 	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
-	loadmovesprites
+	closetext
 	end
 
 .EventIsOver:
 	writetext UnknownText_0x56202
-	closetext
+	waitbutton
 .Done:
-	loadmovesprites
+	closetext
 	end
 
 TwinScript_0x56118:
 	faceplayer
-	loadfont
+	opentext
 	special SpecialGameboyCheck
 	if_not_equal $2, .NotGBC ; This is a dummy check from Gold and Silver.  In normal gameplay, this would not be checked.
 	writetext UnknownText_0x56241
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_UnlockMysteryGift
 	end
 
 .NotGBC:
 	writetext UnknownText_0x56279
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x56130:
@@ -120,10 +128,10 @@
 
 CooltrainerMScript_0x56133:
 	faceplayer
-	loadfont
+	opentext
 	trade $0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x5613a:
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const GOLDENRODDEPTSTORE6F_LASS
+	const GOLDENRODDEPTSTORE6F_SUPER_NERD
+
 GoldenrodDeptStore6F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,17 +10,17 @@
 	db 0
 
 GoldenrodVendingMachine:
-	loadfont
+	opentext
 	writetext GoldenrodVendingText
 .Start
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	loadmenudata .MenuData
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, .FreshWater
 	if_equal $2, .SodaPop
 	if_equal $3, .Lemonade
-	loadmovesprites
+	closetext
 	end
 
 .FreshWater
@@ -50,18 +54,18 @@
 	pause 10
 	playsound SFX_ENTER_DOOR
 	writetext GoldenrodClangText
-	keeptextopen
+	buttonsound
 	itemnotify
 	jump .Start
 
 .NotEnoughMoney
 	writetext GoldenrodVendingNoMoneyText
-	closetext
+	waitbutton
 	jump .Start
 
 .NotEnoughSpace
 	writetext GoldenrodVendingNoSpaceText
-	closetext
+	waitbutton
 	jump .Start
 
 .MenuData
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const GOLDENRODDEPTSTOREB1F_POKE_BALL1
+	const GOLDENRODDEPTSTOREB1F_POKE_BALL2
+	const GOLDENRODDEPTSTOREB1F_POKE_BALL3
+	const GOLDENRODDEPTSTOREB1F_POKE_BALL4
+	const GOLDENRODDEPTSTOREB1F_BLACK_BELT1
+	const GOLDENRODDEPTSTOREB1F_BLACK_BELT2
+	const GOLDENRODDEPTSTOREB1F_BLACK_BELT3
+	const GOLDENRODDEPTSTOREB1F_MACHOP
+
 GoldenrodDeptStoreB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -50,24 +60,24 @@
 	jumptextfaceplayer UnknownText_0x7d875
 
 MachopScript_0x7d7b9:
-	loadfont
+	opentext
 	writetext UnknownText_0x7d8bb
 	cry MACHOKE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x7d7c3:
-	db ETHER, 1
+GoldenrodDeptStoreB1FEther:
+	itemball ETHER
 
-ItemFragment_0x7d7c5:
-	db AMULET_COIN, 1
+GoldenrodDeptStoreB1FAmuletCoin:
+	itemball AMULET_COIN
 
-ItemFragment_0x7d7c7:
-	db BURN_HEAL, 1
+GoldenrodDeptStoreB1FBurnHeal:
+	itemball BURN_HEAL
 
-ItemFragment_0x7d7c9:
-	db ULTRA_BALL, 1
+GoldenrodDeptStoreB1FUltraBall:
+	itemball ULTRA_BALL
 
 UnknownText_0x7d7cb:
 	text "Hey, kid! You're"
@@ -121,10 +131,10 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7d7c3, EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
-	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FEther, EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
+	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FAmuletCoin, EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
+	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FBurnHeal, EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
+	person_event SPRITE_POKE_BALL, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FUltraBall, EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
 	person_event SPRITE_BLACK_BELT, 10, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b0, -1
 	person_event SPRITE_BLACK_BELT, 8, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b3, -1
 	person_event SPRITE_BLACK_BELT, 13, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b6, -1
--- a/maps/GoldenrodDeptStoreElevator.asm
+++ b/maps/GoldenrodDeptStoreElevator.asm
@@ -1,3 +1,4 @@
+
 GoldenrodDeptStoreElevator_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,14 +7,14 @@
 	db 0
 
 MapGoldenrodDeptStoreElevatorSignpost0Script:
-	loadfont
+	opentext
 	elevator Elevator_0x566e0
-	loadmovesprites
+	closetext
 	iffalse .Done
 	pause 5
 	playsound SFX_ELEVATOR
 	earthquake 60
-	waitbutton
+	waitsfx
 	checkevent EVENT_WAREHOUSE_BLOCKED_OFF
 	iftrue .Done
 	checkevent EVENT_WAREHOUSE_LAYOUT_1
@@ -53,7 +54,7 @@
 	elevfloor _4F,  3, GOLDENROD_DEPT_STORE_4F
 	elevfloor _5F,  3, GOLDENROD_DEPT_STORE_5F
 	elevfloor _6F,  2, GOLDENROD_DEPT_STORE_6F
-	db $ff ; end
+	db -1 ; end
 
 
 GoldenrodDeptStoreElevator_MapEventHeader:
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const GOLDENRODDEPTSTOREROOF_CLERK
+	const GOLDENRODDEPTSTOREROOF_POKEFAN_F
+	const GOLDENRODDEPTSTOREROOF_FISHER
+	const GOLDENRODDEPTSTOREROOF_TWIN
+	const GOLDENRODDEPTSTOREROOF_SUPER_NERD
+	const GOLDENRODDEPTSTOREROOF_POKEFAN_M
+	const GOLDENRODDEPTSTOREROOF_TEACHER
+	const GOLDENRODDEPTSTOREROOF_BUG_CATCHER
+
 GoldenrodDeptStoreRoof_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -34,9 +44,9 @@
 	return
 
 ClerkScript_0x5673f:
-	loadfont
+	opentext
 	pokemart MARTTYPE_ROOFTOP, 0
-	loadmovesprites
+	closetext
 	end
 
 PokefanFScript_0x56746:
@@ -44,11 +54,11 @@
 
 FisherScript_0x56749:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x567d2
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, UP
+	spriteface GOLDENRODDEPTSTOREROOF_FISHER, UP
 	end
 
 TwinScript_0x56754:
@@ -55,16 +65,16 @@
 	jumptextfaceplayer UnknownText_0x56839
 
 SuperNerdScript_0x56757:
-	loadfont
+	opentext
 	writetext UnknownText_0x56867
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, UP
-	loadfont
+	spriteface GOLDENRODDEPTSTOREROOF_SUPER_NERD, UP
+	opentext
 	writetext UnknownText_0x56871
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
+	spriteface GOLDENRODDEPTSTOREROOF_SUPER_NERD, RIGHT
 	end
 
 PokefanMScript_0x5676a:
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const GOLDENRODFLOWERSHOP_TEACHER
+	const GOLDENRODFLOWERSHOP_LASS
+
 GoldenrodFlowerShop_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -17,22 +21,22 @@
 	checkflag ENGINE_PLAINBADGE
 	iffalse .NoPlainBadge
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x554c2
-	keeptextopen
+	buttonsound
 	verbosegiveitem SQUIRTBOTTLE
 	setevent EVENT_GOT_SQUIRTBOTTLE
-	loadmovesprites
+	closetext
 	setevent EVENT_FLORIA_AT_SUDOWOODO
 	clearevent EVENT_FLORIA_AT_FLOWER_SHOP
 	end
 
 .Lalala:
-	spriteface $2, LEFT
-	loadfont
+	spriteface GOLDENRODFLOWERSHOP_TEACHER, LEFT
+	opentext
 	writetext UnknownText_0x5552e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GotSquirtbottle:
@@ -46,14 +50,14 @@
 
 FlowerShopFloriaScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOUGHT_SUDOWOODO
 	iftrue .FoughtSudowoodo
 	checkevent EVENT_GOT_SQUIRTBOTTLE
 	iftrue .GotSquirtbottle
 	writetext UnknownText_0x55561
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
 	setevent EVENT_FLORIA_AT_FLOWER_SHOP
 	clearevent EVENT_FLORIA_AT_SUDOWOODO
@@ -61,14 +65,14 @@
 
 .GotSquirtbottle:
 	writetext UnknownText_0x555e6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FoughtSudowoodo:
 	writetext UnknownText_0x55604
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FlowerShopShelf1:
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -1,3 +1,17 @@
+const_value set 2
+	const GOLDENRODGAMECORNER_CLERK
+	const GOLDENRODGAMECORNER_RECEPTIONIST1
+	const GOLDENRODGAMECORNER_RECEPTIONIST2
+	const GOLDENRODGAMECORNER_PHARMACIST1
+	const GOLDENRODGAMECORNER_PHARMACIST2
+	const GOLDENRODGAMECORNER_POKEFAN_M1
+	const GOLDENRODGAMECORNER_COOLTRAINER_M
+	const GOLDENRODGAMECORNER_POKEFAN_F
+	const GOLDENRODGAMECORNER_COOLTRAINER_F
+	const GOLDENRODGAMECORNER_GENTLEMAN
+	const GOLDENRODGAMECORNER_POKEFAN_M2
+	const GOLDENRODGAMECORNER_POKEFAN_M3
+
 GoldenrodGameCorner_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,135 +21,135 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x56bf9
+	dbw 2, .Callback
 
-UnknownScript_0x56bf9:
+.Callback
 	checkevent EVENT_BEAT_ELITE_FOUR
-	iffalse UnknownScript_0x56c19
+	iffalse .finish
 	checkitem COIN_CASE
-	iffalse UnknownScript_0x56c0e
+	iffalse .move_tutor_inside
 	checkcode VAR_WEEKDAY
-	if_equal WEDNESDAY, UnknownScript_0x56c11
-	if_equal SATURDAY, UnknownScript_0x56c11
-UnknownScript_0x56c0e:
-	appear $d
+	if_equal WEDNESDAY, .move_tutor_outside
+	if_equal SATURDAY, .move_tutor_outside
+.move_tutor_inside
+	appear GOLDENRODGAMECORNER_POKEFAN_M3
 	return
 
-UnknownScript_0x56c11:
+.move_tutor_outside
 	checkflag ENGINE_DAILY_MOVE_TUTOR
-	iftrue UnknownScript_0x56c19
-	disappear $d
-UnknownScript_0x56c19: ;0x56c19
+	iftrue .finish
+	disappear GOLDENRODGAMECORNER_POKEFAN_M3
+.finish
 	return
 
-PokefanMScript_0x56c1a:
+GoldenrodGameCornerPokefanM3Script:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x5718a
+	opentext
+	writetext GoldenrodGameCornerPokefanM3Text
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $d, RIGHT
+	spriteface GOLDENRODGAMECORNER_POKEFAN_M3, RIGHT
 	end
 
-ClerkScript_0x56c25:
+GoldenrodGmeCornerCoinVendorScript:
 	jumpstd gamecornercoinvendor
 
-ReceptionistScript_0x56c28:
+GoldenrodGmeCornerTMVendorScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x56e50
-	closetext
+	opentext
+	writetext GoldenrodGameCornerPrizeVendorIntroText
+	waitbutton
 	checkitem COIN_CASE
-	iffalse UnknownScript_0x56cc3
-	writetext UnknownText_0x56e8b
-UnknownScript_0x56c36: ; 056c36
+	iffalse GoldenrodGameCornerPrizeVendor_NoCoinCaseScript
+	writetext GoldenrodGameCornerPrizeVendorWhichPrizeText
+GoldenrodGmeCornerTMVendor_LoopScript: ; 056c36
 	special Special_DisplayCoinCaseBalance
-	loadmenudata MenuDataHeader_0x56cc9
-	interpretmenu2
-	writebackup
-	if_equal $1, UnknownScript_0x56c4d
-	if_equal $2, UnknownScript_0x56c69
-	if_equal $3, UnknownScript_0x56c85
-	jump UnknownScript_0x56cbd
+	loadmenudata GoldenrodGameCornerTMVendorMenuData
+	verticalmenu
+	closewindow
+	if_equal $1, .Thunder
+	if_equal $2, .Blizzard
+	if_equal $3, .FireBlast
+	jump GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 
-UnknownScript_0x56c4d:
+.Thunder:
 	checkcoins 5500
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	itemtotext TM_THUNDER, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_THUNDER
-	iffalse UnknownScript_0x56cb7
+	iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	takecoins 5500
-	jump UnknownScript_0x56ca6
+	jump GoldenrodGmeCornerTMVendor_FinishScript
 
-UnknownScript_0x56c69:
+.Blizzard:
 	checkcoins 5500
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	itemtotext TM_BLIZZARD, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_BLIZZARD
-	iffalse UnknownScript_0x56cb7
+	iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	takecoins 5500
-	jump UnknownScript_0x56ca6
+	jump GoldenrodGmeCornerTMVendor_FinishScript
 
-UnknownScript_0x56c85:
+.FireBlast:
 	checkcoins 5500
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	itemtotext TM_FIRE_BLAST, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_FIRE_BLAST
-	iffalse UnknownScript_0x56cb7
+	iffalse GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	takecoins 5500
-	jump UnknownScript_0x56ca6
+	jump GoldenrodGmeCornerTMVendor_FinishScript
 
-UnknownScript_0x56ca1:
-	writetext UnknownText_0x56ea8
+GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript:
+	writetext GoldenrodGameCornerPrizeVendorConfirmPrizeText
 	yesorno
 	end
 
-UnknownScript_0x56ca6:
-	waitbutton
+GoldenrodGmeCornerTMVendor_FinishScript:
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x56ebd
-	closetext
-	jump UnknownScript_0x56c36
+	writetext GoldenrodGameCornerPrizeVendorHereYouGoText
+	waitbutton
+	jump GoldenrodGmeCornerTMVendor_LoopScript
 
-UnknownScript_0x56cb1:
-	writetext UnknownText_0x56ecb
+GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript:
+	writetext GoldenrodGameCornerPrizeVendorNeedMoreCoinsText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x56cb7:
-	writetext UnknownText_0x56ee8
+GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript:
+	writetext GoldenrodGameCornerPrizeVendorNoMoreRoomText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x56cbd:
-	writetext UnknownText_0x56f09
+GoldenrodGameCornerPrizeVendor_CancelPurchaseScript:
+	writetext GoldenrodGameCornerPrizeVendorQuitText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x56cc3:
-	writetext UnknownText_0x56f35
+GoldenrodGameCornerPrizeVendor_NoCoinCaseScript:
+	writetext GoldenrodGameCornerPrizeVendorNoCoinCaseText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
-MenuDataHeader_0x56cc9:
+GoldenrodGameCornerTMVendorMenuData:
 	db $40 ; flags
 	db 02, 00 ; start coords
 	db 11, 15 ; end coords
-	dw MenuData2_0x56cd1
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x56cd1:
+.MenuData2
 	db $80 ; flags
 	db 4 ; items
 	db "TM25    5500@"
@@ -144,87 +158,87 @@
 	db "CANCEL@"
 
 
-ReceptionistScript_0x56d01:
+GoldenrodGameCornerPrizeMonVendorScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x56e50
-	closetext
+	opentext
+	writetext GoldenrodGameCornerPrizeVendorIntroText
+	waitbutton
 	checkitem COIN_CASE
-	iffalse UnknownScript_0x56cc3
-UnknownScript_0x56d0c:
-	writetext UnknownText_0x56e8b
+	iffalse GoldenrodGameCornerPrizeVendor_NoCoinCaseScript
+.loop
+	writetext GoldenrodGameCornerPrizeVendorWhichPrizeText
 	special Special_DisplayCoinCaseBalance
-	loadmenudata MenuDataHeader_0x56db0
-	interpretmenu2
-	writebackup
-	if_equal $1, UnknownScript_0x56d26
-	if_equal $2, UnknownScript_0x56d54
-	if_equal $3, UnknownScript_0x56d82
-	jump UnknownScript_0x56cbd
+	loadmenudata .MenuDataHeader
+	verticalmenu
+	closewindow
+	if_equal $1, .abra
+	if_equal $2, .cubone
+	if_equal $3, .wobbuffet
+	jump GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 
-UnknownScript_0x56d26:
+.abra:
 	checkcoins 100
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x56cb7
+	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	pokenamemem ABRA, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
-	waitbutton
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x56ebd
-	closetext
+	writetext GoldenrodGameCornerPrizeVendorHereYouGoText
+	waitbutton
 	writebyte ABRA
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke ABRA, 5
 	takecoins 100
-	jump UnknownScript_0x56d0c
+	jump .loop
 
-UnknownScript_0x56d54:
+.cubone:
 	checkcoins 800
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x56cb7
+	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	pokenamemem CUBONE, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
-	waitbutton
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x56ebd
-	closetext
+	writetext GoldenrodGameCornerPrizeVendorHereYouGoText
+	waitbutton
 	writebyte CUBONE
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke CUBONE, 15
 	takecoins 800
-	jump UnknownScript_0x56d0c
+	jump .loop
 
-UnknownScript_0x56d82:
+.wobbuffet:
 	checkcoins 1500
-	if_equal $2, UnknownScript_0x56cb1
+	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x56cb7
+	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
 	pokenamemem WOBBUFFET, $0
-	scall UnknownScript_0x56ca1
-	iffalse UnknownScript_0x56cbd
-	waitbutton
+	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
+	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
+	waitsfx
 	playsound SFX_TRANSACTION
-	writetext UnknownText_0x56ebd
-	closetext
+	writetext GoldenrodGameCornerPrizeVendorHereYouGoText
+	waitbutton
 	writebyte WOBBUFFET
 	special Special_GameCornerPrizeMonCheckDex
 	givepoke WOBBUFFET, 15
 	takecoins 1500
-	jump UnknownScript_0x56d0c
+	jump .loop
 
 
-MenuDataHeader_0x56db0:
+.MenuDataHeader:
 	db $40 ; flags
 	db 02, 00 ; start coords
 	db 11, 17 ; end coords
-	dw MenuData2_0x56db8
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x56db8:
+.MenuData2:
 	db $80 ; flags
 	db 4 ; items
 	db "ABRA        100@"
@@ -233,83 +247,83 @@
 	db "CANCEL@"
 
 
-PharmacistScript_0x56df1:
+GoldenrodGameCornerPharmacistScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x56f55
+	opentext
+	writetext GoldenrodGameCornerPharmacistText
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface LAST_TALKED, LEFT
 	end
 
-PokefanMScript_0x56dfc:
+GoldenrodGameCornerPokefanM1Script:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x56f9e
+	opentext
+	writetext GoldenrodGameCornerPokefanM1Text
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $7, RIGHT
+	spriteface GOLDENRODGAMECORNER_POKEFAN_M1, RIGHT
 	end
 
-CooltrainerMScript_0x56e07:
+GoldenrodGameCornerCooltrainerMScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x56ff4
+	opentext
+	writetext GoldenrodGameCornerCooltrainerMText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $8, LEFT
+	spriteface GOLDENRODGAMECORNER_COOLTRAINER_M, LEFT
 	end
 
-PokefanFScript_0x56e12:
+GoldenrodGameCornerPokefanFScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x5702b
+	opentext
+	writetext GoldenrodGameCornerPokefanFText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $9, RIGHT
+	spriteface GOLDENRODGAMECORNER_POKEFAN_F, RIGHT
 	end
 
-CooltrainerFScript_0x56e1d:
-	jumptextfaceplayer UnknownText_0x57097
+GoldenrodGameCornerCooltrainerFScript:
+	jumptextfaceplayer GoldenrodGameCornerCooltrainerFText
 
-GentlemanScript_0x56e20:
+GoldenrodGameCornerGentlemanScript:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x570b1
+	opentext
+	writetext GoldenrodGameCornerGentlemanText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface GOLDENRODGAMECORNER_GENTLEMAN, RIGHT
 	end
 
-PokefanMScript_0x56e2b:
-	jumptextfaceplayer UnknownText_0x5710d
+GoldenrodGameCornerPokefanM2Script:
+	jumptextfaceplayer GoldenrodGameCornerPokefanM2Text
 
-MapGoldenrodGameCornerSignpost30Script:
-	jumptext UnknownText_0x571af
+GoldenrodGameCornerLeftTheirDrinkScript:
+	jumptext GoldenrodGameCornerLeftTheirDrinkText
 
-MapGoldenrodGameCornerSignpost17Script:
-	random $6
-	if_equal $0, MapGoldenrodGameCornerSignpost7Script
+GoldenrodGameCornerSlotsMachineScript:
+	random 6
+	if_equal 0, GoldenrodGameCornerLuckySlotsMachineScript
 	refreshscreen $0
-	writebyte $0
+	writebyte FALSE
 	special Special_SlotMachine
-	loadmovesprites
+	closetext
 	end
 
-MapGoldenrodGameCornerSignpost7Script:
+GoldenrodGameCornerLuckySlotsMachineScript:
 	refreshscreen $0
-	writebyte $1
+	writebyte TRUE
 	special Special_SlotMachine
-	loadmovesprites
+	closetext
 	end
 
-MapGoldenrodGameCornerSignpost29Script:
+GoldenrodGameCornerCardFlipMachineScript:
 	refreshscreen $0
 	special Special_CardFlip
-	loadmovesprites
+	closetext
 	end
 
-UnknownText_0x56e50:
+GoldenrodGameCornerPrizeVendorIntroText:
 	text "Welcome!"
 
 	para "We exchange your"
@@ -317,43 +331,43 @@
 	cont "fabulous prizes!"
 	done
 
-UnknownText_0x56e8b:
+GoldenrodGameCornerPrizeVendorWhichPrizeText:
 	text "Which prize would"
 	line "you like?"
 	done
 
-UnknownText_0x56ea8:
+GoldenrodGameCornerPrizeVendorConfirmPrizeText:
 	text_from_ram StringBuffer3
 	text "."
 	line "Is that right?"
 	done
 
-UnknownText_0x56ebd:
+GoldenrodGameCornerPrizeVendorHereYouGoText:
 	text "Here you go!"
 	done
 
-UnknownText_0x56ecb:
+GoldenrodGameCornerPrizeVendorNeedMoreCoinsText:
 	text "Sorry! You need"
 	line "more coins."
 	done
 
-UnknownText_0x56ee8:
+GoldenrodGameCornerPrizeVendorNoMoreRoomText:
 	text "Sorry. You can't"
 	line "carry any more."
 	done
 
-UnknownText_0x56f09:
+GoldenrodGameCornerPrizeVendorQuitText:
 	text "OK. Please save"
 	line "your coins and"
 	cont "come again!"
 	done
 
-UnknownText_0x56f35:
+GoldenrodGameCornerPrizeVendorNoCoinCaseText:
 	text "Oh? You don't have"
 	line "a COIN CASE."
 	done
 
-UnknownText_0x56f55:
+GoldenrodGameCornerPharmacistText:
 	text "I always play this"
 	line "slot machine. It"
 
@@ -361,7 +375,7 @@
 	line "others, I think."
 	done
 
-UnknownText_0x56f9e:
+GoldenrodGameCornerPokefanM1Text:
 	text "I just love this"
 	line "new slot machine."
 
@@ -370,13 +384,13 @@
 	cont "ones in CELADON."
 	done
 
-UnknownText_0x56ff4:
+GoldenrodGameCornerCooltrainerMText:
 	text "Life is a gamble."
 	line "I'm going to flip"
 	cont "cards till I drop!"
 	done
 
-UnknownText_0x5702b:
+GoldenrodGameCornerPokefanFText:
 	text "Card flip…"
 
 	para "I prefer it over"
@@ -389,12 +403,12 @@
 	line "much lower."
 	done
 
-UnknownText_0x57097:
+GoldenrodGameCornerCooltrainerFText:
 	text "I won't quit until"
 	line "I win!"
 	done
 
-UnknownText_0x570b1:
+GoldenrodGameCornerGentlemanText:
 	text "I taught BLIZZARD"
 	line "to my #MON."
 
@@ -405,7 +419,7 @@
 	line "worth it."
 	done
 
-UnknownText_0x5710d:
+GoldenrodGameCornerPokefanM2Text:
 	text "I couldn't win at"
 	line "the slots, and I"
 
@@ -419,12 +433,12 @@
 	line "UNDERGROUND."
 	done
 
-UnknownText_0x5718a:
+GoldenrodGameCornerPokefanM3Text:
 	text "Wahahah! The coins"
 	line "keep rolling in!"
 	done
 
-UnknownText_0x571af:
+GoldenrodGameCornerLeftTheirDrinkText:
 	text "Someone left their"
 	line "drink."
 
@@ -445,49 +459,49 @@
 
 .Signposts:
 	db 31
-	signpost 6, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 6, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost7Script
-	signpost 8, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 7, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 12, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 13, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost29Script
-	signpost 6, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 18, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost29Script
-	signpost 1, 12, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost30Script
+	signpost 6, 6, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 7, 6, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 8, 6, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 9, 6, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 10, 6, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 11, 6, SIGNPOST_RIGHT, GoldenrodGameCornerSlotsMachineScript
+	signpost 6, 7, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 7, 7, SIGNPOST_READ, GoldenrodGameCornerLuckySlotsMachineScript
+	signpost 8, 7, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 9, 7, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 10, 7, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 11, 7, SIGNPOST_LEFT, GoldenrodGameCornerSlotsMachineScript
+	signpost 6, 12, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 7, 12, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 8, 12, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 9, 12, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 10, 12, SIGNPOST_READ, GoldenrodGameCornerSlotsMachineScript
+	signpost 11, 12, SIGNPOST_RIGHT, GoldenrodGameCornerSlotsMachineScript
+	signpost 6, 13, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 7, 13, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 8, 13, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 9, 13, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 10, 13, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 11, 13, SIGNPOST_LEFT, GoldenrodGameCornerCardFlipMachineScript
+	signpost 6, 18, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 7, 18, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 8, 18, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 9, 18, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 10, 18, SIGNPOST_READ, GoldenrodGameCornerCardFlipMachineScript
+	signpost 11, 18, SIGNPOST_RIGHT, GoldenrodGameCornerCardFlipMachineScript
+	signpost 1, 12, SIGNPOST_LEFT, GoldenrodGameCornerLeftTheirDrinkScript
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_CLERK, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ClerkScript_0x56c25, -1
-	person_event SPRITE_RECEPTIONIST, 2, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x56c28, -1
-	person_event SPRITE_RECEPTIONIST, 2, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x56d01, -1
-	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, 2, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, 4, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_POKEFAN_M, 10, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x56dfc, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x56e07, -1
-	person_event SPRITE_POKEFAN_F, 6, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x56e12, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x56e1d, -1
-	person_event SPRITE_GENTLEMAN, 10, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x56e20, -1
-	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x56e2b, -1
-	person_event SPRITE_POKEFAN_M, 10, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x56c1a, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
+	person_event SPRITE_CLERK, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerCoinVendorScript, -1
+	person_event SPRITE_RECEPTIONIST, 2, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerTMVendorScript, -1
+	person_event SPRITE_RECEPTIONIST, 2, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPrizeMonVendorScript, -1
+	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, (1 << DAY), (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
+	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, (1 << NITE), (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
+	person_event SPRITE_POKEFAN_M, 10, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM1Script, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerMScript, -1
+	person_event SPRITE_POKEFAN_F, 6, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanFScript, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerFScript, -1
+	person_event SPRITE_GENTLEMAN, 10, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerGentlemanScript, -1
+	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM2Script, -1
+	person_event SPRITE_POKEFAN_M, 10, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM3Script, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const GOLDENRODGYM_WHITNEY
+	const GOLDENRODGYM_LASS1
+	const GOLDENRODGYM_LASS2
+	const GOLDENRODGYM_BUENA1
+	const GOLDENRODGYM_BUENA2
+	const GOLDENRODGYM_GYM_GUY
+
 GoldenrodGym_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -19,14 +27,14 @@
 	faceplayer
 	checkevent EVENT_BEAT_WHITNEY
 	iftrue .FightDone
-	loadfont
+	opentext
 	writetext UnknownText_0x54122
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x541a5, 0
 	loadtrainer WHITNEY, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_WHITNEY
 	setevent EVENT_MADE_WHITNEY_CRY
 	dotrigger $1
@@ -35,12 +43,12 @@
 	setevent EVENT_BEAT_LASS_CARRIE
 	setevent EVENT_BEAT_LASS_BRIDGET
 .FightDone
-	loadfont
+	opentext
 	checkevent EVENT_MADE_WHITNEY_CRY
 	iffalse .StoppedCrying
 	writetext UnknownText_0x541f4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .StoppedCrying
@@ -49,30 +57,30 @@
 	checkflag ENGINE_PLAINBADGE
 	iftrue UnknownScript_0x54064
 	writetext UnknownText_0x54222
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	writetext UnknownText_0x54273
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_PLAINBADGE
 	checkcode VAR_BADGES
 	scall GoldenrodGymTriggerRockets
 UnknownScript_0x54064:
 	writetext UnknownText_0x5428b
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_ATTRACT
 	iffalse UnknownScript_0x5407b
 	setevent EVENT_GOT_TM45_ATTRACT
 	writetext UnknownText_0x54302
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54077:
 	writetext UnknownText_0x54360
-	closetext
+	waitbutton
 UnknownScript_0x5407b:
-	loadmovesprites
+	closetext
 	end
 
 GoldenrodGymTriggerRockets:
@@ -90,22 +98,22 @@
 	trainer EVENT_BEAT_LASS_CARRIE, LASS, CARRIE, LassCarrieSeenText, LassCarrieBeatenText, 0, LassCarrieScript
 
 LassCarrieScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext LassCarrieOWText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WhitneyCriesScript:
-	showemote EMOTE_SHOCK, $4, 15
-	applymovement $4, BridgetWalksUpMovement
+	showemote EMOTE_SHOCK, GOLDENRODGYM_LASS2, 15
+	applymovement GOLDENRODGYM_LASS2, BridgetWalksUpMovement
 	spriteface PLAYER, DOWN
-	loadfont
+	opentext
 	writetext BridgetWhitneyCriesText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, BridgetWalksAwayMovement
+	applymovement GOLDENRODGYM_LASS2, BridgetWalksAwayMovement
 	dotrigger $0
 	clearevent EVENT_MADE_WHITNEY_CRY
 	end
@@ -114,11 +122,11 @@
 	trainer EVENT_BEAT_LASS_BRIDGET, LASS, BRIDGET, LassBridgetSeenText, LassBridgetBeatenText, 0, LassBridgetScript
 
 LassBridgetScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext LassBridgetOWText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBeautyVictoria:
@@ -125,11 +133,11 @@
 	trainer EVENT_BEAT_BEAUTY_VICTORIA, BEAUTY, VICTORIA, BeautyVictoriaSeenText, BeautyVictoriaBeatenText, 0, BeautyVictoriaScript
 
 BeautyVictoriaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext BeautyVictoriaOWText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBeautySamantha:
@@ -136,11 +144,11 @@
 	trainer EVENT_BEAT_BEAUTY_SAMANTHA, BEAUTY, SAMANTHA, BeautySamanthaSeenText, BeautySamanthaBeatenText, 0, BeautySamanthaScript
 
 BeautySamanthaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext BeautySamanthaOWText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GoldenrodGymGuyScript:
@@ -147,17 +155,17 @@
 	faceplayer
 	checkevent EVENT_BEAT_WHITNEY
 	iftrue .GoldenrodGymGuyWinScript
-	loadfont
+	opentext
 	writetext GoldenrodGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GoldenrodGymGuyWinScript
-	loadfont
+	opentext
 	writetext GoldenrodGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GoldenrodGymStatue:
--- a/maps/GoldenrodHappinessRater.asm
+++ b/maps/GoldenrodHappinessRater.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const GOLDENRODHAPPINESSRATER_TEACHER
+	const GOLDENRODHAPPINESSRATER_POKEFAN_M
+	const GOLDENRODHAPPINESSRATER_TWIN
+
 GoldenrodHappinessRater_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +12,10 @@
 
 TeacherScript_0x54953:
 	faceplayer
-	loadfont
+	opentext
 	special GetFirstPokemonHappiness
 	writetext UnknownText_0x549a3
-	keeptextopen
+	buttonsound
 	if_greater_than $f9, UnknownScript_0x54973
 	if_greater_than $c7, UnknownScript_0x54979
 	if_greater_than $95, UnknownScript_0x5497f
@@ -20,38 +25,38 @@
 
 UnknownScript_0x54973:
 	writetext UnknownText_0x549fc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54979:
 	writetext UnknownText_0x54a2c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5497f:
 	writetext UnknownText_0x54a5a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54985:
 	writetext UnknownText_0x54a8e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5498b:
 	writetext UnknownText_0x54a9f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x54991:
 	writetext UnknownText_0x54ad1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x54997:
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -1,24 +1,28 @@
+const_value set 2
+	const GOLDENRODMAGNETTRAINSTATION_OFFICER
+	const GOLDENRODMAGNETTRAINSTATION_GENTLEMAN
+
 GoldenrodMagnetTrainStation_MapScriptHeader:
 .MapTriggers:
 	db 1
 
 	; triggers
-	dw .Trigger1, 0
+	dw .Trigger0, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	end
 
 OfficerScript_0x550ec:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RESTORED_POWER_TO_KANTO
 	iftrue .MagnetTrainToSaffron
 	writetext UnknownText_0x55160
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .MagnetTrainToSaffron:
@@ -28,9 +32,9 @@
 	checkitem PASS
 	iffalse .PassNotInBag
 	writetext UnknownText_0x551ed
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x55146
+	applymovement GOLDENRODMAGNETTRAINSTATION_OFFICER, MovementData_0x55146
 	applymovement PLAYER, MovementData_0x5514f
 	writebyte $0
 	special Special_MagnetTrain
@@ -46,24 +50,24 @@
 
 .PassNotInBag:
 	writetext UnknownText_0x5522c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .DecidedNotToRide:
 	writetext UnknownText_0x5524f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Script_ArriveFromSaffron:
-	applymovement $2, MovementData_0x55146
+	applymovement GOLDENRODMAGNETTRAINSTATION_OFFICER, MovementData_0x55146
 	applymovement PLAYER, MovementData_0x55158
-	applymovement $2, MovementData_0x5514b
-	loadfont
+	applymovement GOLDENRODMAGNETTRAINSTATION_OFFICER, MovementData_0x5514b
+	opentext
 	writetext UnknownText_0x5526a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GentlemanScript_0x55143:
--- a/maps/GoldenrodNameRatersHouse.asm
+++ b/maps/GoldenrodNameRatersHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const GOLDENRODNAMERATERSHOUSE_GENTLEMAN
+
 GoldenrodNameRatersHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 GentlemanScript_0x5577c:
 	faceplayer
-	loadfont
+	opentext
 	special SpecialNameRater
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GoldenrodNameRatersHouseBookshelf:
--- a/maps/GoldenrodPPSpeechHouse.asm
+++ b/maps/GoldenrodPPSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const GOLDENRODPPSPEECHHOUSE_FISHER
+	const GOLDENRODPPSPEECHHOUSE_LASS
+
 GoldenrodPPSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/GoldenrodPokeCenter1F.asm
+++ b/maps/GoldenrodPokeCenter1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const GOLDENRODPOKECENTER1F_NURSE
+	const GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	const GOLDENRODPOKECENTER1F_GAMEBOY_KID
+	const GOLDENRODPOKECENTER1F_LASS
+	const GOLDENRODPOKECENTER1F_POKEFAN_F
+
 GoldenrodPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,7 +16,7 @@
 	jumpstd pokecenternurse
 
 GoldenrodPokeCenter1F_GSBallTriggerLeft:
-	writebyte BATTLE_TOWER_ACTION_0B
+	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
 	special BattleTowerAction
 	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
@@ -18,30 +25,30 @@
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
-	moveperson $3, $0, $7
-	disappear $3
-	appear $3
+	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playmusic MUSIC_SHOW_ME_AROUND
-	applymovement $3, MovementData_0x6105a
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6105a
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x622f0
-	closetext
+	waitbutton
 	verbosegiveitem GS_BALL
 	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	writetext UnknownText_0x62359
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $3, MovementData_0x61060
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61060
 	special RestartMapMusic
-	disappear $3
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playsound SFX_EXIT_BUILDING
 .cancel:
 	end
 
 GoldenrodPokeCenter1F_GSBallTriggerRight:
-	writebyte BATTLE_TOWER_ACTION_0B
+	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
 	special BattleTowerAction
 	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
@@ -50,24 +57,24 @@
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
-	moveperson $3, $0, $7
-	disappear $3
-	appear $3
+	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playmusic MUSIC_SHOW_ME_AROUND
-	applymovement $3, MovementData_0x61065
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61065
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x622f0
-	closetext
+	waitbutton
 	verbosegiveitem GS_BALL
 	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	writetext UnknownText_0x62359
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $3, MovementData_0x6106c
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6106c
 	special RestartMapMusic
-	disappear $3
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playsound SFX_EXIT_BUILDING
 .cancel:
 	end
@@ -80,9 +87,9 @@
 
 PokefanFScript_0x61024:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x623fb
-	closetext
+	waitbutton
 	writetext UnknownText_0x6248c
 	yesorno
 	iffalse UnknownScript_0x6104b
@@ -89,27 +96,27 @@
 	takeitem EON_MAIL
 	iffalse UnknownScript_0x6104b
 	writetext UnknownText_0x62549
-	closetext
+	waitbutton
 	writetext UnknownText_0x624a4
-	closetext
+	waitbutton
 	verbosegiveitem REVIVE
 	iffalse UnknownScript_0x61051
 	writetext UnknownText_0x624e9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6104b:
 	writetext UnknownText_0x62509
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x61051:
 	giveitem EON_MAIL
 	writetext UnknownText_0x6252a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x6105a:
--- a/maps/GoldenrodPokeComCenter2FMobile.asm
+++ b/maps/GoldenrodPokeComCenter2FMobile.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const GOLDENRODPOKECOMCENTER2FMOBILE_SCIENTIST1
+	const GOLDENRODPOKECOMCENTER2FMOBILE_SCIENTIST2
+	const GOLDENRODPOKECOMCENTER2FMOBILE_SCIENTIST3
+
 GoldenrodPokeComCenter2FMobile_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -15,32 +20,32 @@
 	jumptextfaceplayer UnknownText_0x62795
 
 MapGoldenrodPokeComCenter2FMobileSignpost0Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x627ee
-	closetext
+	waitbutton
 UnknownScript_0x625df:
 	reloadmappart
 	loadmenudata MenuDataHeader_0x62602
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, UnknownScript_0x625f0
 	if_equal $2, UnknownScript_0x625f8
 	jump UnknownScript_0x62600
 
 UnknownScript_0x625f0:
-	loadfont
+	opentext
 	writetext UnknownText_0x62828
-	closetext
+	waitbutton
 	jump UnknownScript_0x625df
 
 UnknownScript_0x625f8:
-	loadfont
+	opentext
 	writetext UnknownText_0x628f4
-	closetext
+	waitbutton
 	jump UnknownScript_0x625df
 
 UnknownScript_0x62600:
-	loadmovesprites
+	closetext
 	end
 
 
@@ -60,32 +65,32 @@
 
 
 MapGoldenrodPokeComCenter2FMobileSignpost1Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x62989
-	closetext
+	waitbutton
 UnknownScript_0x62629:
 	reloadmappart
 	loadmenudata MenuDataHeader_0x6264c
-	interpretmenu2
-	writebackup
+	verticalmenu
+	closewindow
 	if_equal $1, UnknownScript_0x6263a
 	if_equal $2, UnknownScript_0x62642
 	jump UnknownScript_0x6264a
 
 UnknownScript_0x6263a:
-	loadfont
+	opentext
 	writetext UnknownText_0x629ae
-	closetext
+	waitbutton
 	jump UnknownScript_0x62629
 
 UnknownScript_0x62642:
-	loadfont
+	opentext
 	writetext UnknownText_0x62a5a
-	closetext
+	waitbutton
 	jump UnknownScript_0x62629
 
 UnknownScript_0x6264a:
-	loadmovesprites
+	closetext
 	end
 
 
--- a/maps/GuideGentsHouse.asm
+++ b/maps/GuideGentsHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const GUIDEGENTSHOUSE_GRAMPS
+
 GuideGentsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/HallOfFame.asm
+++ b/maps/HallOfFame.asm
@@ -1,31 +1,34 @@
+const_value set 2
+	const HALLOFFAME_LANCE
+
 HallOfFame_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	priorityjump HallOfFameScript
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 HallOfFameScript:
-	follow $2, PLAYER
-	applymovement $2, HallOfFame_WalkUpWithLance
+	follow HALLOFFAME_LANCE, PLAYER
+	applymovement HALLOFFAME_LANCE, HallOfFame_WalkUpWithLance
 	stopfollow
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext HallOfFame_LanceText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, UP
+	spriteface HALLOFFAME_LANCE, UP
 	applymovement PLAYER, HallOfFame_SlowlyApproachMachine
 	dotrigger $1
 	pause 15
--- a/maps/IcePath1F.asm
+++ b/maps/IcePath1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ICEPATH1F_POKE_BALL1
+	const ICEPATH1F_POKE_BALL2
+	const ICEPATH1F_POKE_BALL3
+
 IcePath1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,14 +10,14 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x7e472:
-	db HM_WATERFALL, 1
+IcePath1FHMWaterfall:
+	itemball HM_WATERFALL
 
-ItemFragment_0x7e474:
-	db PP_UP, 1
+IcePath1FPPUp:
+	itemball PP_UP
 
-ItemFragment_0x7e476:
-	db PROTEIN, 1
+IcePath1FProtein:
+	itemball PROTEIN
 
 IcePath1F_MapEventHeader:
 	; filler
@@ -33,6 +38,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 7, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e472, EVENT_GOT_HM07_WATERFALL
-	person_event SPRITE_POKE_BALL, 23, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e474, EVENT_ICE_PATH_1F_PP_UP
-	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e476, EVENT_ICE_PATH_1F_PROTEIN
+	person_event SPRITE_POKE_BALL, 7, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePath1FHMWaterfall, EVENT_GOT_HM07_WATERFALL
+	person_event SPRITE_POKE_BALL, 23, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePath1FPPUp, EVENT_ICE_PATH_1F_PP_UP
+	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePath1FProtein, EVENT_ICE_PATH_1F_PROTEIN
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const ICEPATHB1F_BOULDER1
+	const ICEPATHB1F_BOULDER2
+	const ICEPATHB1F_BOULDER3
+	const ICEPATHB1F_BOULDER4
+	const ICEPATHB1F_POKE_BALL
+
 IcePathB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -18,37 +25,29 @@
 	db 0, 0 ; filler
 
 .StoneTable:
-	db 3, 2 ; warp, person
-	dw .Boulder1
+	stonetable 3, ICEPATHB1F_BOULDER1, .Boulder1
+	stonetable 4, ICEPATHB1F_BOULDER2, .Boulder2
+	stonetable 5, ICEPATHB1F_BOULDER3, .Boulder3
+	stonetable 6, ICEPATHB1F_BOULDER4, .Boulder4
+	db -1
 
-	db 4, 3 ; warp, person
-	dw .Boulder2
-
-	db 5, 4 ; warp, person
-	dw .Boulder3
-
-	db 6, 5 ; warp, person
-	dw .Boulder4
-
-	db -1 ; end
-
 .Boulder1:
-	disappear 2
+	disappear ICEPATHB1F_BOULDER1
 	clearevent EVENT_BOULDER_IN_ICE_PATH_1A
 	jump .FinishBoulder
 
 .Boulder2:
-	disappear 3
+	disappear ICEPATHB1F_BOULDER2
 	clearevent EVENT_BOULDER_IN_ICE_PATH_2A
 	jump .FinishBoulder
 
 .Boulder3:
-	disappear 4
+	disappear ICEPATHB1F_BOULDER3
 	clearevent EVENT_BOULDER_IN_ICE_PATH_3A
 	jump .FinishBoulder
 
 .Boulder4:
-	disappear 5
+	disappear ICEPATHB1F_BOULDER4
 	clearevent EVENT_BOULDER_IN_ICE_PATH_4A
 	jump .FinishBoulder
 
@@ -55,10 +54,10 @@
 .FinishBoulder:
 	pause 30
 	scall .BoulderFallsThrough
-	loadfont
-	writetext UnknownText_0x7e512
+	opentext
+	writetext IcePathBoulderFellThroughText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BoulderFallsThrough:
@@ -70,14 +69,14 @@
 IcePathB1FBoulder:
 	jumpstd strengthboulder
 
-ItemFragment_0x7e50d:
-	db IRON, 1
+IcePathB1FIron:
+	itemball IRON
 
-MapIcePathB1FSignpostItem0:
+IcePathB1FHiddenMaxPotion:
 	dwb EVENT_ICE_PATH_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
 
-UnknownText_0x7e512:
+IcePathBoulderFellThroughText:
 	text "The boulder fell"
 	line "through."
 	done
@@ -103,7 +102,7 @@
 
 .Signposts:
 	db 1
-	signpost 30, 17, SIGNPOST_ITEM, MapIcePathB1FSignpostItem0
+	signpost 30, 17, SIGNPOST_ITEM, IcePathB1FHiddenMaxPotion
 
 .PersonEvents:
 	db 5
@@ -111,4 +110,4 @@
 	person_event SPRITE_BOULDER, 8, 7, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_2
 	person_event SPRITE_BOULDER, 9, 8, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_3
 	person_event SPRITE_BOULDER, 7, 17, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_4
-	person_event SPRITE_POKE_BALL, 35, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e50d, EVENT_ICE_PATH_B1F_IRON
+	person_event SPRITE_POKE_BALL, 35, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePathB1FIron, EVENT_ICE_PATH_B1F_IRON
--- a/maps/IcePathB2FBlackthornSide.asm
+++ b/maps/IcePathB2FBlackthornSide.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ICEPATHB2FBLACKTHORNSIDE_POKE_BALL
+
 IcePathB2FBlackthornSide_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,10 +8,10 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x7e646:
-	db TM_REST, 1
+IcePathB2FBlackthornSideTMRest:
+	itemball TM_REST
 
-MapIcePathB2FBlackthornSideSignpostItem0:
+IcePathB2FBlackthornSideHiddenIceHeal:
 	dwb EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_HIDDEN_ICE_HEAL, ICE_HEAL
 	
 
@@ -26,8 +29,8 @@
 
 .Signposts:
 	db 1
-	signpost 10, 2, SIGNPOST_ITEM, MapIcePathB2FBlackthornSideSignpostItem0
+	signpost 10, 2, SIGNPOST_ITEM, IcePathB2FBlackthornSideHiddenIceHeal
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, IcePathB2FBlackthornSideTMRest, EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
--- a/maps/IcePathB2FMahoganySide.asm
+++ b/maps/IcePathB2FMahoganySide.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ICEPATHB2FMAHOGANYSIDE_BOULDER1
+	const ICEPATHB2FMAHOGANYSIDE_BOULDER2
+	const ICEPATHB2FMAHOGANYSIDE_BOULDER3
+	const ICEPATHB2FMAHOGANYSIDE_BOULDER4
+	const ICEPATHB2FMAHOGANYSIDE_POKE_BALL1
+	const ICEPATHB2FMAHOGANYSIDE_POKE_BALL2
+
 IcePathB2FMahoganySide_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -8,13 +16,13 @@
 BoulderScript_0x7e5a3:
 	jumptext UnknownText_0x7e5ad
 
-ItemFragment_0x7e5a6:
-	db FULL_HEAL, 1
+IcePathB2FMahoganySideFullHeal:
+	itemball FULL_HEAL
 
-ItemFragment_0x7e5a8:
-	db MAX_POTION, 1
+IcePathB2FMahoganySideMaxPotion:
+	itemball MAX_POTION
 
-MapIcePathB2FMahoganySideSignpostItem0:
+IcePathB2FMahoganySideHiddenCarbos:
 	dwb EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_HIDDEN_CARBOS, CARBOS
 	
 
@@ -41,7 +49,7 @@
 
 .Signposts:
 	db 1
-	signpost 17, 0, SIGNPOST_ITEM, MapIcePathB2FMahoganySideSignpostItem0
+	signpost 17, 0, SIGNPOST_ITEM, IcePathB2FMahoganySideHiddenCarbos
 
 .PersonEvents:
 	db 6
@@ -49,5 +57,5 @@
 	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2A
 	person_event SPRITE_BOULDER, 12, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3A
 	person_event SPRITE_BOULDER, 13, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4A
-	person_event SPRITE_POKE_BALL, 9, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e5a8, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 9, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePathB2FMahoganySideFullHeal, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 2, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePathB2FMahoganySideMaxPotion, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
--- a/maps/IcePathB3F.asm
+++ b/maps/IcePathB3F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ICEPATHB3F_POKE_BALL
+	const ICEPATHB3F_ROCK
+
 IcePathB3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +9,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x7e66f:
-	db NEVERMELTICE, 1
+IcePathB3FNevermeltice:
+	itemball NEVERMELTICE
 
 IcePathB3FRock:
 	jumpstd smashrock
@@ -28,5 +32,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 7, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e66f, EVENT_ICE_PATH_B3F_NEVERMELTICE
+	person_event SPRITE_POKE_BALL, 7, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IcePathB3FNevermeltice, EVENT_ICE_PATH_B3F_NEVERMELTICE
 	person_event SPRITE_ROCK, 6, 6, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IcePathB3FRock, -1
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const ILEXFOREST_BIRD
+	const ILEXFOREST_YOUNGSTER1
+	const ILEXFOREST_BLACK_BELT
+	const ILEXFOREST_ROCKER
+	const ILEXFOREST_POKE_BALL1
+	const ILEXFOREST_KURT
+	const ILEXFOREST_LASS
+	const ILEXFOREST_YOUNGSTER2
+	const ILEXFOREST_POKE_BALL2
+	const ILEXFOREST_POKE_BALL3
+	const ILEXFOREST_POKE_BALL4
+
 IlexForest_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,343 +20,345 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x6eb03
+	dbw 2, .FarfetchdCallback
 
-UnknownScript_0x6eb03:
+.FarfetchdCallback:
 	checkevent EVENT_GOT_HM01_CUT
-	iftrue UnknownScript_0x6eb34
+	iftrue .Static
 	copybytetovar FarfetchdPosition
-	if_equal $1, UnknownScript_0x6eb35
-	if_equal $2, UnknownScript_0x6eb3c
-	if_equal $3, UnknownScript_0x6eb43
-	if_equal $4, UnknownScript_0x6eb4a
-	if_equal $5, UnknownScript_0x6eb51
-	if_equal $6, UnknownScript_0x6eb58
-	if_equal $7, UnknownScript_0x6eb5f
-	if_equal $8, UnknownScript_0x6eb66
-	if_equal $9, UnknownScript_0x6eb6d
-	if_equal $a, UnknownScript_0x6eb74
-UnknownScript_0x6eb34:
+	if_equal  1, .PositionOne
+	if_equal  2, .PositionTwo
+	if_equal  3, .PositionThree
+	if_equal  4, .PositionFour
+	if_equal  5, .PositionFive
+	if_equal  6, .PositionSix
+	if_equal  7, .PositionSeven
+	if_equal  8, .PositionEight
+	if_equal  9, .PositionNine
+	if_equal 10, .PositionTen
+.Static:
 	return
 
-UnknownScript_0x6eb35:
-	moveperson $2, $e, $1f
-	appear $2
+.PositionOne:
+	moveperson ILEXFOREST_BIRD, $e, $1f
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb3c:
-	moveperson $2, $f, $19
-	appear $2
+.PositionTwo:
+	moveperson ILEXFOREST_BIRD, $f, $19
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb43:
-	moveperson $2, $14, $18
-	appear $2
+.PositionThree:
+	moveperson ILEXFOREST_BIRD, $14, $18
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb4a:
-	moveperson $2, $1d, $16
-	appear $2
+.PositionFour:
+	moveperson ILEXFOREST_BIRD, $1d, $16
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb51:
-	moveperson $2, $1c, $1f
-	appear $2
+.PositionFive:
+	moveperson ILEXFOREST_BIRD, $1c, $1f
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb58:
-	moveperson $2, $18, $23
-	appear $2
+.PositionSix:
+	moveperson ILEXFOREST_BIRD, $18, $23
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb5f:
-	moveperson $2, $16, $1f
-	appear $2
+.PositionSeven:
+	moveperson ILEXFOREST_BIRD, $16, $1f
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb66:
-	moveperson $2, $f, $1d
-	appear $2
+.PositionEight:
+	moveperson ILEXFOREST_BIRD, $f, $1d
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb6d:
-	moveperson $2, $a, $23
-	appear $2
+.PositionNine:
+	moveperson ILEXFOREST_BIRD, $a, $23
+	appear ILEXFOREST_BIRD
 	return
 
-UnknownScript_0x6eb74:
-	moveperson $2, $6, $1c
-	appear $2
+.PositionTen:
+	moveperson ILEXFOREST_BIRD, $6, $1c
+	appear ILEXFOREST_BIRD
 	return
 
-YoungsterScript_0x6eb7b:
+IlexForestCharcoalApprenticeScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_HERDED_FARFETCHD
-	iftrue UnknownScript_0x6eb89
+	iftrue .DoneFarfetchd
 	writetext UnknownText_0x6ef5c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x6eb89:
+.DoneFarfetchd:
 	writetext UnknownText_0x6f019
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-BirdScript_0x6eb8f:
+IlexForestFarfetchdScript:
 	copybytetovar FarfetchdPosition
-	if_equal $1, UnknownScript_0x6ebba
-	if_equal $2, UnknownScript_0x6ebd9
-	if_equal $3, UnknownScript_0x6ec02
-	if_equal $4, UnknownScript_0x6ec2b
-	if_equal $5, UnknownScript_0x6ec54
-	if_equal $6, UnknownScript_0x6eca7
-	if_equal $7, UnknownScript_0x6ecd0
-	if_equal $8, UnknownScript_0x6ed0e
-	if_equal $9, UnknownScript_0x6ed50
-	if_equal $a, UnknownScript_0x6ed96
-UnknownScript_0x6ebba:
+	if_equal  1, .Position1
+	if_equal  2, .Position2
+	if_equal  3, .Position3
+	if_equal  4, .Position4
+	if_equal  5, .Position5
+	if_equal  6, .Position6
+	if_equal  7, .Position7
+	if_equal  8, .Position8
+	if_equal  9, .Position9
+	if_equal 10, .Position10
+
+.Position1:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x6f06f
-	keeptextopen
-	writetext UnknownText_0x6f086
+	opentext
+	writetext Text_ItsTheMissingPokemon
+	buttonsound
+	writetext Text_Kwaaaa
 	cry FARFETCH_D
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x6ee8f
-	moveperson $2, $f, $19
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $2
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos1_Pos2
+	moveperson ILEXFOREST_BIRD, $f, $19
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 2
 	end
 
-UnknownScript_0x6ebd9:
-	scall UnknownScript_0x6eda1
-	if_equal $0, UnknownScript_0x6ebf1
-	applymovement $2, MovementData_0x6ee95
-	moveperson $2, $14, $18
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $3
+.Position2:
+	scall .CryAndCheckFacing
+	if_equal DOWN, .Position2_Down
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos2_Pos3
+	moveperson ILEXFOREST_BIRD, $14, $18
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 3
 	end
 
-UnknownScript_0x6ebf1:
-	applymovement $2, MovementData_0x6ee9e
-	moveperson $2, $f, $1d
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $8
+.Position2_Down:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos2_Pos8
+	moveperson ILEXFOREST_BIRD, $f, $1d
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 8
 	end
 
-UnknownScript_0x6ec02:
-	scall UnknownScript_0x6eda1
-	if_equal $2, UnknownScript_0x6ec1a
-	applymovement $2, MovementData_0x6eea4
-	moveperson $2, $1d, $16
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $4
+.Position3:
+	scall .CryAndCheckFacing
+	if_equal LEFT, .Position3_Left
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos3_Pos4
+	moveperson ILEXFOREST_BIRD, $1d, $16
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 4
 	end
 
-UnknownScript_0x6ec1a:
-	applymovement $2, MovementData_0x6eeab
-	moveperson $2, $f, $19
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $2
+.Position3_Left:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos3_Pos2
+	moveperson ILEXFOREST_BIRD, $f, $19
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 2
 	end
 
-UnknownScript_0x6ec2b:
-	scall UnknownScript_0x6eda1
-	if_equal $1, UnknownScript_0x6ec43
-	applymovement $2, MovementData_0x6eeb1
-	moveperson $2, $1c, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $5
+.Position4:
+	scall .CryAndCheckFacing
+	if_equal UP, .Position4_Up
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos4_Pos5
+	moveperson ILEXFOREST_BIRD, $1c, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 5
 	end
 
-UnknownScript_0x6ec43:
-	applymovement $2, MovementData_0x6eeb8
-	moveperson $2, $14, $18
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $3
+.Position4_Up:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos4_Pos3
+	moveperson ILEXFOREST_BIRD, $14, $18
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 3
 	end
 
-UnknownScript_0x6ec54:
-	scall UnknownScript_0x6eda1
-	if_equal $1, UnknownScript_0x6ec85
-	if_equal $2, UnknownScript_0x6ec74
-	if_equal $3, UnknownScript_0x6ec96
-	applymovement $2, MovementData_0x6eebd
-	moveperson $2, $18, $23
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $6
+.Position5:
+	scall .CryAndCheckFacing
+	if_equal UP, .Position5_Up
+	if_equal LEFT, .Position5_Left
+	if_equal RIGHT, .Position5_Right
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos5_Pos6
+	moveperson ILEXFOREST_BIRD, $18, $23
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 6
 	end
 
-UnknownScript_0x6ec74:
-	applymovement $2, MovementData_0x6eec7
-	moveperson $2, $16, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $7
+.Position5_Left:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetchd_Pos5_Pos7
+	moveperson ILEXFOREST_BIRD, $16, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 7
 	end
 
-UnknownScript_0x6ec85:
-	applymovement $2, MovementData_0x6eecc
-	moveperson $2, $1d, $16
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $4
+.Position5_Up:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos5_Pos4_Up
+	moveperson ILEXFOREST_BIRD, $1d, $16
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 4
 	end
 
-UnknownScript_0x6ec96:
-	applymovement $2, MovementData_0x6eed2
-	moveperson $2, $1d, $16
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $4
+.Position5_Right:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos5_Pos4_Right
+	moveperson ILEXFOREST_BIRD, $1d, $16
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 4
 	end
 
-UnknownScript_0x6eca7:
-	scall UnknownScript_0x6eda1
-	if_equal $3, UnknownScript_0x6ecbf
-	applymovement $2, MovementData_0x6eee6
-	moveperson $2, $16, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $7
+.Position6:
+	scall .CryAndCheckFacing
+	if_equal RIGHT, .Position6_Right
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos6_Pos7
+	moveperson ILEXFOREST_BIRD, $16, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 7
 	end
 
-UnknownScript_0x6ecbf:
-	applymovement $2, MovementData_0x6eeef
-	moveperson $2, $1c, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $5
+.Position6_Right:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos6_Pos5
+	moveperson ILEXFOREST_BIRD, $1c, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 5
 	end
 
-UnknownScript_0x6ecd0:
-	scall UnknownScript_0x6eda1
-	if_equal $0, UnknownScript_0x6ecfd
-	if_equal $2, UnknownScript_0x6ecec
-	applymovement $2, MovementData_0x6eef8
-	moveperson $2, $f, $1d
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $8
+.Position7:
+	scall .CryAndCheckFacing
+	if_equal DOWN, .Position7_Down
+	if_equal LEFT, .Position7_Left
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos7_Pos8
+	moveperson ILEXFOREST_BIRD, $f, $1d
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 8
 	end
 
-UnknownScript_0x6ecec:
-	applymovement $2, MovementData_0x6ef00
-	moveperson $2, $18, $23
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $6
+.Position7_Left:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos7_Pos6
+	moveperson ILEXFOREST_BIRD, $18, $23
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 6
 	end
 
-UnknownScript_0x6ecfd:
-	applymovement $2, MovementData_0x6ef09
-	moveperson $2, $1c, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $5
+.Position7_Down:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos7_Pos5
+	moveperson ILEXFOREST_BIRD, $1c, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 5
 	end
 
-UnknownScript_0x6ed0e:
-	scall UnknownScript_0x6eda1
-	if_equal $1, UnknownScript_0x6ed3f
-	if_equal $2, UnknownScript_0x6ed3f
-	if_equal $3, UnknownScript_0x6ed2e
-	applymovement $2, MovementData_0x6ef10
-	moveperson $2, $a, $23
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $9
+.Position8:
+	scall .CryAndCheckFacing
+	if_equal UP, .Position8_Up
+	if_equal LEFT, .Position8_Left
+	if_equal RIGHT, .Position8_Right
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos8_Pos9
+	moveperson ILEXFOREST_BIRD, $a, $23
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 9
 	end
 
-UnknownScript_0x6ed2e:
-	applymovement $2, MovementData_0x6ef18
-	moveperson $2, $16, $1f
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $7
+.Position8_Right:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos8_Pos7
+	moveperson ILEXFOREST_BIRD, $16, $1f
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 7
 	end
 
-UnknownScript_0x6ed3f:
-	applymovement $2, MovementData_0x6ef1e
-	moveperson $2, $f, $19
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $2
+.Position8_Up:
+.Position8_Left:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos8_Pos2
+	moveperson ILEXFOREST_BIRD, $f, $19
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 2
 	end
 
-UnknownScript_0x6ed50:
-	scall UnknownScript_0x6eda1
-	if_equal $0, UnknownScript_0x6ed85
-	if_equal $3, UnknownScript_0x6ed74
-	applymovement $2, MovementData_0x6ef23
-	moveperson $2, $6, $1c
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $a
-	appear $4
+.Position9:
+	scall .CryAndCheckFacing
+	if_equal DOWN, .Position9_Down
+	if_equal RIGHT, .Position9_Right
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos9_Pos10
+	moveperson ILEXFOREST_BIRD, $6, $1c
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 10
+	appear ILEXFOREST_BLACK_BELT
 	setevent EVENT_CHARCOAL_KILN_BOSS
 	setevent EVENT_HERDED_FARFETCHD
 	end
 
-UnknownScript_0x6ed74:
-	applymovement $2, MovementData_0x6ef33
-	moveperson $2, $f, $1d
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $8
+.Position9_Right:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos9_Pos8_Right
+	moveperson ILEXFOREST_BIRD, $f, $1d
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 8
 	end
 
-UnknownScript_0x6ed85:
-	applymovement $2, MovementData_0x6ef3d
-	moveperson $2, $f, $1d
-	disappear $2
-	appear $2
-	loadvar FarfetchdPosition, $8
+.Position9_Down:
+	applymovement ILEXFOREST_BIRD, MovementData_Farfetched_Pos9_Pos8_Down
+	moveperson ILEXFOREST_BIRD, $f, $1d
+	disappear ILEXFOREST_BIRD
+	appear ILEXFOREST_BIRD
+	loadvar FarfetchdPosition, 8
 	end
 
-UnknownScript_0x6ed96:
+.Position10:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x6f086
+	opentext
+	writetext Text_Kwaaaa
 	cry FARFETCH_D
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x6eda1:
+.CryAndCheckFacing:
 	faceplayer
-	loadfont
-	writetext UnknownText_0x6f086
+	opentext
+	writetext Text_Kwaaaa
 	cry FARFETCH_D
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
 	end
 
-BlackBeltScript_0x6edae:
+IlexForestCharcoalMasterScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HM01_CUT
-	iftrue UnknownScript_0x6edd8
-	writetext UnknownText_0x6f099
-	keeptextopen
+	iftrue .AlreadyGotCut
+	writetext Text_CharcoalMasterIntro
+	buttonsound
 	verbosegiveitem HM_CUT
 	setevent EVENT_GOT_HM01_CUT
-	writetext UnknownText_0x6f141
+	writetext Text_CharcoalMasterOutro
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_ILEX_FOREST_FARFETCHD
 	setevent EVENT_ILEX_FOREST_APPRENTICE
 	setevent EVENT_ILEX_FOREST_CHARCOAL_MASTER
@@ -352,27 +367,27 @@
 	clearevent EVENT_CHARCOAL_KILN_BOSS
 	end
 
-UnknownScript_0x6edd8:
-	writetext UnknownText_0x6f1c0
+.AlreadyGotCut:
+	writetext Text_CharcoalMasterTalkAfter
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-RockerScript_0x6edde:
+IlexForestHeadbuttGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM02_HEADBUTT
-	iftrue UnknownScript_0x6edf3
-	writetext UnknownText_0x6f21b
-	keeptextopen
+	iftrue .AlreadyGotHeadbutt
+	writetext Text_HeadbuttIntro
+	buttonsound
 	verbosegiveitem TM_HEADBUTT
-	iffalse UnknownScript_0x6edf7
+	iffalse .BagFull
 	setevent EVENT_GOT_TM02_HEADBUTT
-UnknownScript_0x6edf3:
-	writetext UnknownText_0x6f26d
+.AlreadyGotHeadbutt:
+	writetext Text_HeadbuttOutro
+	waitbutton
+.BagFull:
 	closetext
-UnknownScript_0x6edf7:
-	loadmovesprites
 	end
 
 TrainerBug_catcherWayne:
@@ -379,37 +394,37 @@
 	trainer EVENT_BEAT_BUG_CATCHER_WAYNE, BUG_CATCHER, WAYNE, Bug_catcherWayneSeenText, Bug_catcherWayneBeatenText, 0, Bug_catcherWayneScript
 
 Bug_catcherWayneScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x6f571
+	end_if_just_battled
+	opentext
+	writetext Bug_catcherWayneAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-LassScript_0x6ee0d:
-	jumptextfaceplayer UnknownText_0x6f2af
+IlexForestLassScript:
+	jumptextfaceplayer Text_IlexForestLass
 
-ItemFragment_0x6ee10:
-	db REVIVE, 1
+IlexForestRevive:
+	itemball REVIVE
 
-ItemFragment_0x6ee12:
-	db X_ATTACK, 1
+IlexForestXAttack:
+	itemball X_ATTACK
 
-ItemFragment_0x6ee14:
-	db ANTIDOTE, 1
+IlexForestAntidote:
+	itemball ANTIDOTE
 
-ItemFragment_0x6ee16:
-	db ETHER, 1
+IlexForestEther:
+	itemball ETHER
 
-MapIlexForestSignpostItem1:
+IlexForestHiddenEther:
 	dwb EVENT_ILEX_FOREST_HIDDEN_ETHER, ETHER
 	
 
-MapIlexForestSignpostItem2:
+IlexForestHiddenSuperPotion:
 	dwb EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
-MapIlexForestSignpostItem3:
+IlexForestHiddenFullHeal:
 	dwb EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL, FULL_HEAL
 
 IlexForestBoulder:
@@ -417,39 +432,39 @@
 	jumpstd strengthboulder
 
 MapIlexForestSignpost0Script:
-	jumptext UnknownText_0x6f2de
+	jumptext Text_IlexForestSignpost0
 
 MapIlexForestSignpost4Script:
 	checkevent EVENT_FOREST_IS_RESTLESS
-	iftrue UnknownScript_0x6ee30
-	jump UnknownScript_0x6ee35
+	iftrue .ForestIsRestless
+	jump .DontDoCelebiEvent
 
-UnknownScript_0x6ee30:
+.ForestIsRestless:
 	checkitem GS_BALL
-	iftrue UnknownScript_0x6ee38
-UnknownScript_0x6ee35:
-	jumptext UnknownText_0x6f358
+	iftrue .AskCelebiEvent
+.DontDoCelebiEvent:
+	jumptext Text_IlexForestShrine
 
-UnknownScript_0x6ee38:
-	loadfont
-	writetext UnknownText_0x6f394
+.AskCelebiEvent:
+	opentext
+	writetext Text_ShrineCelebiEvent
 	yesorno
-	iftrue UnknownScript_0x6ee42
-	loadmovesprites
+	iftrue .CelebiEvent
+	closetext
 	end
 
-UnknownScript_0x6ee42:
+.CelebiEvent:
 	takeitem GS_BALL
 	clearevent EVENT_FOREST_IS_RESTLESS
 	setevent EVENT_AZALEA_TOWN_KURT
-	disappear $8
+	disappear ILEXFOREST_LASS
 	clearevent EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
-	writetext UnknownText_0x6f43b
+	writetext Text_InsertGSBall
+	waitbutton
 	closetext
-	loadmovesprites
 	pause 20
 	showemote EMOTE_SHOCK, PLAYER, 20
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	applymovement PLAYER, MovementData_0x6ef58
 	pause 30
 	spriteface PLAYER, DOWN
@@ -456,24 +471,24 @@
 	pause 20
 	clearflag ENGINE_HAVE_EXAMINED_GS_BALL
 	special Special_CelebiShrineEvent
-	loadpokedata CELEBI, 30
+	loadwildmon CELEBI, 30
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	pause 20
 	special CheckCaughtCelebi
-	iffalse UnknownScript_0x6ee8e
-	appear $7
-	applymovement $7, MovementData_0x6ef4e
-	loadfont
-	writetext UnknownText_0x6f452
+	iffalse .DidntCatchCelebi
+	appear ILEXFOREST_KURT
+	applymovement ILEXFOREST_KURT, MovementData_0x6ef4e
+	opentext
+	writetext Text_KurtCaughtCelebi
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $7, MovementData_0x6ef53
-	disappear $7
-UnknownScript_0x6ee8e:
+	applymovement ILEXFOREST_KURT, MovementData_0x6ef53
+	disappear ILEXFOREST_KURT
+.DidntCatchCelebi:
 	end
 
-MovementData_0x6ee8f:
+MovementData_Farfetchd_Pos1_Pos2:
 	big_step_up
 	big_step_up
 	big_step_up
@@ -481,7 +496,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6ee95:
+MovementData_Farfetchd_Pos2_Pos3:
 	big_step_up
 	big_step_up
 	big_step_right
@@ -492,7 +507,7 @@
 	big_step_down
 	step_end
 
-MovementData_0x6ee9e:
+MovementData_Farfetchd_Pos2_Pos8:
 	big_step_down
 	big_step_down
 	big_step_down
@@ -500,7 +515,7 @@
 	big_step_down
 	step_end
 
-MovementData_0x6eea4:
+MovementData_Farfetchd_Pos3_Pos4:
 	big_step_right
 	big_step_right
 	big_step_right
@@ -509,7 +524,7 @@
 	big_step_right
 	step_end
 
-MovementData_0x6eeab:
+MovementData_Farfetchd_Pos3_Pos2:
 	big_step_up
 	big_step_left
 	big_step_left
@@ -517,7 +532,7 @@
 	big_step_left
 	step_end
 
-MovementData_0x6eeb1:
+MovementData_Farfetchd_Pos4_Pos5:
 	big_step_down
 	big_step_down
 	big_step_down
@@ -526,7 +541,7 @@
 	big_step_down
 	step_end
 
-MovementData_0x6eeb8:
+MovementData_Farfetchd_Pos4_Pos3:
 	big_step_left
 	jump_step_left
 	big_step_left
@@ -533,7 +548,7 @@
 	big_step_left
 	step_end
 
-MovementData_0x6eebd:
+MovementData_Farfetchd_Pos5_Pos6:
 	big_step_down
 	big_step_down
 	big_step_down
@@ -545,7 +560,7 @@
 	big_step_left
 	step_end
 
-MovementData_0x6eec7:
+MovementData_Farfetchd_Pos5_Pos7:
 	big_step_left
 	big_step_left
 	big_step_left
@@ -552,7 +567,7 @@
 	big_step_left
 	step_end
 
-MovementData_0x6eecc:
+MovementData_Farfetched_Pos5_Pos4_Up:
 	big_step_up
 	big_step_up
 	big_step_up
@@ -560,14 +575,14 @@
 	big_step_up
 	step_end
 
-MovementData_0x6eed2:
+MovementData_Farfetched_Pos5_Pos4_Right:
 	big_step_right
 	turn_head_up
-	db $3e ; movement
+	step_sleep_1
 	turn_head_down
-	db $3e ; movement
+	step_sleep_1
 	turn_head_up
-	db $3e ; movement
+	step_sleep_1
 	big_step_down
 	big_step_down
 	fix_facing
@@ -582,7 +597,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6eee6:
+MovementData_Farfetched_Pos6_Pos7:
 	big_step_left
 	big_step_left
 	big_step_left
@@ -593,7 +608,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6eeef:
+MovementData_Farfetched_Pos6_Pos5:
 	big_step_right
 	big_step_right
 	big_step_right
@@ -604,7 +619,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6eef8:
+MovementData_Farfetched_Pos7_Pos8:
 	big_step_up
 	big_step_up
 	big_step_left
@@ -614,7 +629,7 @@
 	big_step_left
 	step_end
 
-MovementData_0x6ef00:
+MovementData_Farfetched_Pos7_Pos6:
 	big_step_down
 	big_step_down
 	big_step_left
@@ -625,7 +640,7 @@
 	big_step_right
 	step_end
 
-MovementData_0x6ef09:
+MovementData_Farfetched_Pos7_Pos5:
 	big_step_right
 	big_step_right
 	big_step_right
@@ -634,7 +649,7 @@
 	big_step_right
 	step_end
 
-MovementData_0x6ef10:
+MovementData_Farfetched_Pos8_Pos9:
 	big_step_down
 	big_step_left
 	big_step_down
@@ -644,7 +659,7 @@
 	big_step_down
 	step_end
 
-MovementData_0x6ef18:
+MovementData_Farfetched_Pos8_Pos7:
 	big_step_right
 	big_step_right
 	big_step_right
@@ -652,7 +667,7 @@
 	big_step_right
 	step_end
 
-MovementData_0x6ef1e:
+MovementData_Farfetched_Pos8_Pos2:
 	big_step_up
 	big_step_up
 	big_step_up
@@ -659,7 +674,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6ef23:
+MovementData_Farfetched_Pos9_Pos10:
 	big_step_left
 	big_step_left
 	fix_facing
@@ -677,7 +692,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6ef33:
+MovementData_Farfetched_Pos9_Pos8_Right:
 	big_step_right
 	big_step_right
 	big_step_right
@@ -689,7 +704,7 @@
 	big_step_up
 	step_end
 
-MovementData_0x6ef3d:
+MovementData_Farfetched_Pos9_Pos8_Down:
 	big_step_left
 	big_step_left
 	fix_facing
@@ -757,16 +772,16 @@
 	cont "a BADGE."
 	done
 
-UnknownText_0x6f06f:
+Text_ItsTheMissingPokemon:
 	text "It's the missing"
 	line "#MON!"
 	done
 
-UnknownText_0x6f086:
+Text_Kwaaaa:
 	text "FARFETCH'D: Kwaa!"
 	done
 
-UnknownText_0x6f099:
+Text_CharcoalMasterIntro:
 	text "Ah! My FARFETCH'D!"
 
 	para "You found it for"
@@ -787,7 +802,7 @@
 	line "this."
 	done
 
-UnknownText_0x6f141:
+Text_CharcoalMasterOutro:
 	text "That's the CUT HM."
 	line "Teach that to a"
 
@@ -801,7 +816,7 @@
 	line "AZALEA to use it."
 	done
 
-UnknownText_0x6f1c0:
+Text_CharcoalMasterTalkAfter:
 	text "Do you want to"
 	line "apprentice as a"
 
@@ -812,7 +827,7 @@
 	line "rate in ten years!"
 	done
 
-UnknownText_0x6f21b:
+Text_HeadbuttIntro:
 	text "What am I doing?"
 
 	para "I'm shaking trees"
@@ -822,7 +837,7 @@
 	line "you try it too!"
 	done
 
-UnknownText_0x6f26d:
+Text_HeadbuttOutro:
 	text "Rattle trees with"
 	line "HEADBUTT. Some-"
 	cont "times, sleeping"
@@ -829,13 +844,13 @@
 	cont "#MON fall out."
 	done
 
-UnknownText_0x6f2af:
+Text_IlexForestLass:
 	text "Did something"
 	line "happen to the"
 	cont "forest's guardian?"
 	done
 
-UnknownText_0x6f2de:
+Text_IlexForestSignpost0:
 	text "ILEX FOREST is"
 	line "so overgrown with"
 
@@ -847,7 +862,7 @@
 	cont "have been dropped."
 	done
 
-UnknownText_0x6f358:
+Text_IlexForestShrine:
 	text "ILEX FOREST"
 	line "SHRINE…"
 
@@ -856,7 +871,7 @@
 	cont "protector…"
 	done
 
-UnknownText_0x6f394:
+Text_ShrineCelebiEvent:
 	text "ILEX FOREST"
 	line "SHRINE…"
 
@@ -876,12 +891,12 @@
 	line "BALL here?"
 	done
 
-UnknownText_0x6f43b:
+Text_InsertGSBall:
 	text "<PLAYER> put in the"
 	line "GS BALL."
 	done
 
-UnknownText_0x6f452:
+Text_KurtCaughtCelebi:
 	text "Whew, wasn't that"
 	line "something!"
 
@@ -914,7 +929,7 @@
 	line "#MON before…"
 	done
 
-UnknownText_0x6f571:
+Bug_catcherWayneAfterText:
 	text "A #MON I've"
 	line "never seen before"
 
@@ -943,21 +958,21 @@
 .Signposts:
 	db 5
 	signpost 17, 3, SIGNPOST_READ, MapIlexForestSignpost0Script
-	signpost 7, 11, SIGNPOST_ITEM, MapIlexForestSignpostItem1
-	signpost 14, 22, SIGNPOST_ITEM, MapIlexForestSignpostItem2
-	signpost 17, 1, SIGNPOST_ITEM, MapIlexForestSignpostItem3
+	signpost 7, 11, SIGNPOST_ITEM, IlexForestHiddenEther
+	signpost 14, 22, SIGNPOST_ITEM, IlexForestHiddenSuperPotion
+	signpost 17, 1, SIGNPOST_ITEM, IlexForestHiddenFullHeal
 	signpost 22, 8, SIGNPOST_UP, MapIlexForestSignpost4Script
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 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, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6eb7b, EVENT_ILEX_FOREST_APPRENTICE
-	person_event SPRITE_BLACK_BELT, 28, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x6edae, EVENT_ILEX_FOREST_CHARCOAL_MASTER
-	person_event SPRITE_ROCKER, 14, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RockerScript_0x6edde, -1
-	person_event SPRITE_POKE_BALL, 32, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6ee10, EVENT_ILEX_FOREST_REVIVE
+	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, IlexForestFarfetchdScript, EVENT_ILEX_FOREST_FARFETCHD
+	person_event SPRITE_YOUNGSTER, 28, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestCharcoalApprenticeScript, EVENT_ILEX_FOREST_APPRENTICE
+	person_event SPRITE_BLACK_BELT, 28, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IlexForestCharcoalMasterScript, EVENT_ILEX_FOREST_CHARCOAL_MASTER
+	person_event SPRITE_ROCKER, 14, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IlexForestHeadbuttGuyScript, -1
+	person_event SPRITE_POKE_BALL, 32, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestRevive, EVENT_ILEX_FOREST_REVIVE
 	person_event SPRITE_KURT, 29, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ILEX_FOREST_KURT
-	person_event SPRITE_LASS, 24, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x6ee0d, EVENT_ILEX_FOREST_LASS
+	person_event SPRITE_LASS, 24, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestLassScript, EVENT_ILEX_FOREST_LASS
 	person_event SPRITE_YOUNGSTER, 1, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 0, TrainerBug_catcherWayne, -1
-	person_event SPRITE_POKE_BALL, 17, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6ee12, EVENT_ILEX_FOREST_X_ATTACK
-	person_event SPRITE_POKE_BALL, 7, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6ee14, EVENT_ILEX_FOREST_ANTIDOTE
-	person_event SPRITE_POKE_BALL, 1, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6ee16, EVENT_ILEX_FOREST_ETHER
+	person_event SPRITE_POKE_BALL, 17, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestXAttack, EVENT_ILEX_FOREST_X_ATTACK
+	person_event SPRITE_POKE_BALL, 7, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestAntidote, EVENT_ILEX_FOREST_ANTIDOTE
+	person_event SPRITE_POKE_BALL, 1, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestEther, EVENT_ILEX_FOREST_ETHER
--- a/maps/IlexForestAzaleaGate.asm
+++ b/maps/IlexForestAzaleaGate.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ILEXFORESTAZALEAGATE_OFFICER
+	const ILEXFORESTAZALEAGATE_GRANNY
+
 IlexForestAzaleaGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const INDIGOPLATEAUPOKECENTER1F_NURSE
+	const INDIGOPLATEAUPOKECENTER1F_CLERK
+	const INDIGOPLATEAUPOKECENTER1F_COOLTRAINER_M
+	const INDIGOPLATEAUPOKECENTER1F_SILVER
+	const INDIGOPLATEAUPOKECENTER1F_GRAMPS
+	const INDIGOPLATEAUPOKECENTER1F_JYNX
+
 IndigoPlateauPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -51,13 +59,13 @@
 	if_equal THURSDAY, UnknownScript_0x18012b
 	if_equal FRIDAY, UnknownScript_0x18012b
 	if_equal SATURDAY, UnknownScript_0x18012b
-	moveperson $5, $11, $9
-	appear $5
+	moveperson INDIGOPLATEAUPOKECENTER1F_SILVER, $11, $9
+	appear INDIGOPLATEAUPOKECENTER1F_SILVER
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	applymovement $5, MovementData_0x180164
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, MovementData_0x180164
 	playmusic MUSIC_RIVAL_ENCOUNTER
 	spriteface PLAYER, RIGHT
 	jump UnknownScript_0x1800ce
@@ -73,19 +81,19 @@
 	if_equal THURSDAY, UnknownScript_0x18012b
 	if_equal FRIDAY, UnknownScript_0x18012b
 	if_equal SATURDAY, UnknownScript_0x18012b
-	appear $5
+	appear INDIGOPLATEAUPOKECENTER1F_SILVER
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	applymovement $5, MovementData_0x18016b
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, MovementData_0x18016b
 	playmusic MUSIC_RIVAL_ENCOUNTER
 	spriteface PLAYER, LEFT
 UnknownScript_0x1800ce:
-	loadfont
+	opentext
 	writetext UnknownText_0x1801f5
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x1800f3
@@ -92,40 +100,40 @@
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
 	iftrue UnknownScript_0x180103
 	winlosstext UnknownText_0x180295, UnknownText_0x1802fd
-	setlasttalked $5
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
 	loadtrainer RIVAL2, 6
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x180113
 
 UnknownScript_0x1800f3:
 	winlosstext UnknownText_0x180295, UnknownText_0x1802fd
-	setlasttalked $5
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
 	loadtrainer RIVAL2, 4
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x180113
 
 UnknownScript_0x180103:
 	winlosstext UnknownText_0x180295, UnknownText_0x1802fd
-	setlasttalked $5
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
 	loadtrainer RIVAL2, 5
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x180113
 
 UnknownScript_0x180113:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1802a4
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $5, MovementData_0x180172
-	disappear $5
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, MovementData_0x180172
+	disappear INDIGOPLATEAUPOKECENTER1F_SILVER
 	dotrigger $0
 	playmapmusic
 	setflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
@@ -136,9 +144,9 @@
 	jumpstd pokecenternurse
 
 ClerkScript_0x18012f:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_INDIGO_PLATEAU
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x180136:
@@ -146,31 +154,31 @@
 
 TeleportGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	writetext TeleportGuyText1
 	yesorno
 	iffalse .No
 	writetext TeleportGuyYesText
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_WARP_TO
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	warp NEW_BARK_TOWN, $d, $6
 	end
 
 .No
 	writetext TeleportGuyNoText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 AbraScript:
-	loadfont
+	opentext
 	writetext AbraText
 	cry ABRA
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x180164:
--- a/maps/KarensRoom.asm
+++ b/maps/KarensRoom.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const KARENSROOM_KAREN
+
 KarensRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -38,41 +41,41 @@
 	earthquake 80
 	changeblock $4, $e, $2a
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
-	waitbutton
+	waitsfx
 	end
 
 KarenScript_0x180bee:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_ELITE_4_KAREN
 	iftrue UnknownScript_0x180c1c
 	writetext UnknownText_0x180c27
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x180cf8, 0
 	loadtrainer KAREN, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_KAREN
-	loadfont
+	opentext
 	writetext UnknownText_0x180d29
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	changeblock $4, $2, $16
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_KARENS_ROOM_EXIT_OPEN
-	waitbutton
+	waitsfx
 	end
 
 UnknownScript_0x180c1c:
 	writetext UnknownText_0x180d29
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x180c22:
--- a/maps/KogasRoom.asm
+++ b/maps/KogasRoom.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const KOGASROOM_KOGA
+
 KogasRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -38,41 +41,41 @@
 	earthquake 80
 	changeblock $4, $e, $2a
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
-	waitbutton
+	waitsfx
 	end
 
 KogaScript_0x18075a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_ELITE_4_KOGA
 	iftrue UnknownScript_0x180788
 	writetext UnknownText_0x180793
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1808a9, 0
 	loadtrainer KOGA, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_KOGA
-	loadfont
+	opentext
 	writetext UnknownText_0x1808ca
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	changeblock $4, $2, $16
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_KOGAS_ROOM_EXIT_OPEN
-	waitbutton
+	waitsfx
 	end
 
 UnknownScript_0x180788:
 	writetext UnknownText_0x1808ca
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x18078e:
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const KRISSHOUSE1F_MOM1
+	const KRISSHOUSE1F_MOM2
+	const KRISSHOUSE1F_MOM3
+	const KRISSHOUSE1F_MOM4
+	const KRISSHOUSE1F_POKEFAN_F
+
 KrissHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -20,19 +27,19 @@
 
 UnknownScript_0x7a4db:
 	playmusic MUSIC_MOM
-	showemote EMOTE_SHOCK, $2, 15
+	showemote EMOTE_SHOCK, KRISSHOUSE1F_MOM1, 15
 	spriteface PLAYER, LEFT
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x7a4f2
-	applymovement $2, MovementData_0x7a5fc
+	applymovement KRISSHOUSE1F_MOM1, MovementData_0x7a5fc
 	jump UnknownScript_0x7a4f6
 
 UnknownScript_0x7a4f2:
-	applymovement $2, MovementData_0x7a5fe
+	applymovement KRISSHOUSE1F_MOM1, MovementData_0x7a5fe
 UnknownScript_0x7a4f6:
-	loadfont
+	opentext
 	writetext UnknownText_0x7a604
-	keeptextopen
+	buttonsound
 	stringtotext GearName, $1
 	scall UnknownScript_0x7a57e
 	setflag ENGINE_POKEGEAR
@@ -42,7 +49,7 @@
 	setevent EVENT_KRISS_HOUSE_MOM_1
 	clearevent EVENT_KRISS_HOUSE_MOM_2
 	writetext UnknownText_0x7a6bd
-	keeptextopen
+	buttonsound
 	special Special_SetDayOfWeek
 UnknownScript_0x7a519:
 	writetext UnknownText_0x7a742
@@ -65,18 +72,18 @@
 
 UnknownScript_0x7a53b:
 	writetext UnknownText_0x7a7cb
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0x7a549
 
 UnknownScript_0x7a542:
 	writetext UnknownText_0x7a807
-	keeptextopen
+	buttonsound
 	jump UnknownScript_0x7a549
 
 UnknownScript_0x7a549:
 	writetext UnknownText_0x7a850
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7a55d
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
@@ -84,16 +91,16 @@
 	jump UnknownScript_0x7a56b
 
 UnknownScript_0x7a55d:
-	applymovement $2, MovementData_0x7a600
+	applymovement KRISSHOUSE1F_MOM1, MovementData_0x7a600
 	jump UnknownScript_0x7a56b
 
 UnknownScript_0x7a564:
-	applymovement $2, MovementData_0x7a602
+	applymovement KRISSHOUSE1F_MOM1, MovementData_0x7a602
 	jump UnknownScript_0x7a56b
 
 UnknownScript_0x7a56b:
 	special RestartMapMusic
-	spriteface $2, LEFT
+	spriteface KRISSHOUSE1F_MOM1, LEFT
 	end
 
 UnknownScript_0x7a572:
@@ -112,7 +119,7 @@
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	checktriggers
 	iffalse UnknownScript_0x7a572
-	loadfont
+	opentext
 	checkevent EVENT_FIRST_TIME_BANKING_WITH_MOM
 	iftrue UnknownScript_0x7a5af
 	checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
@@ -122,20 +129,20 @@
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue UnknownScript_0x7a5a9
 	writetext UnknownText_0x7a8b5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7a5a9:
 	writetext UnknownText_0x7a8e5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7a5af:
 	writetext UnknownText_0x7a957
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7a5b5:
@@ -143,13 +150,13 @@
 UnknownScript_0x7a5b8:
 	setevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
 	special Special_BankOfMom
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 NeighborScript:
 	faceplayer
-	loadfont
+	opentext
 	checkmorn
 	iftrue .MornScript
 	checkday
@@ -159,24 +166,24 @@
 
 .MornScript
 	writetext NeighborMornIntroText
-	keeptextopen
+	buttonsound
 	jump .Main
 
 .DayScript
 	writetext NeighborDayIntroText
-	keeptextopen
+	buttonsound
 	jump .Main
 
 .NiteScript
 	writetext NeighborNiteIntroText
-	keeptextopen
+	buttonsound
 	jump .Main
 
 .Main
 	writetext NeighborText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
+	spriteface KRISSHOUSE1F_POKEFAN_F, RIGHT
 	end
 
 TVScript:
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const KRISSHOUSE2F_CONSOLE
+	const KRISSHOUSE2F_DOLL_1
+	const KRISSHOUSE2F_DOLL_2
+	const KRISSHOUSE2F_BIG_DOLL
+
 KrissHouse2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -34,22 +40,21 @@
 
 
 Doll1:
-	describedecoration $1
+	describedecoration 1
 
 Doll2:
-	describedecoration $2
+	describedecoration 2
 
 BigDoll:
-	describedecoration $3
+	describedecoration 3
 
 GameConsole:
-	describedecoration $4
+	describedecoration 4
 
 KrissHousePoster:
-	dw EVENT_KRISS_ROOM_POSTER ; event
-	dw .Script
+	dw EVENT_KRISS_ROOM_POSTER, .Script
 .Script
-	describedecoration $0
+	describedecoration 0
 
 KrissHouseRadio:
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
@@ -57,7 +62,7 @@
 	checkevent EVENT_LISTENED_TO_INITIAL_RADIO
 	iftrue .AbbreviatedRadio
 	playmusic MUSIC_POKEMON_TALK
-	loadfont
+	opentext
 	writetext KrisRadioText1
 	pause 45
 	writetext KrisRadioText2
@@ -64,10 +69,10 @@
 	pause 45
 	writetext KrisRadioText3
 	pause 45
-	musicfadeout MUSIC_NEW_BARK_TOWN, $10
+	musicfadeout MUSIC_NEW_BARK_TOWN, 16
 	writetext KrisRadioText4
 	pause 45
-	loadmovesprites
+	closetext
 	setevent EVENT_LISTENED_TO_INITIAL_RADIO
 	end
 
@@ -75,10 +80,10 @@
 	jumpstd radio1
 
 .AbbreviatedRadio
-	loadfont
+	opentext
 	writetext KrisRadioText4
 	pause 45
-	loadmovesprites
+	closetext
 	end
 
 KrissHouseBookshelf:
@@ -85,10 +90,10 @@
 	jumpstd picturebookshelf
 
 KrissHousePC:
-	loadfont
+	opentext
 	special Special_KrissHousePC
 	iftrue .Warp
-	loadmovesprites
+	closetext
 	end
 .Warp
 	warp NONE, $0, $0
--- a/maps/KrissNeighborsHouse.asm
+++ b/maps/KrissNeighborsHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const KRISSNEIGHBORSHOUSE_COOLTRAINER_F
+	const KRISSNEIGHBORSHOUSE_POKEFAN_F
+
 KrissNeighborsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -20,7 +24,7 @@
 	checkevent EVENT_LISTENED_TO_INITIAL_RADIO
 	iftrue .AbbreviatedRadio
 	playmusic MUSIC_POKEMON_TALK
-	loadfont
+	opentext
 	writetext KrisNeighborRadioText1
 	pause 45
 	writetext KrisNeighborRadioText2
@@ -30,16 +34,16 @@
 	musicfadeout MUSIC_NEW_BARK_TOWN, $10
 	writetext KrisNeighborRadioText4
 	pause 45
-	loadmovesprites
+	closetext
 	setevent EVENT_LISTENED_TO_INITIAL_RADIO
 	end
 .NormalRadio
 	jumpstd radio1
 .AbbreviatedRadio
-	loadfont
+	opentext
 	writetext KrisNeighborRadioText4
 	pause 45
-	loadmovesprites
+	closetext
 	end
 
 KrissNeighborsDaughterText:
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const KURTSHOUSE_KURT1
+	const KURTSHOUSE_TWIN1
+	const KURTSHOUSE_SLOWPOKE
+	const KURTSHOUSE_KURT2
+	const KURTSHOUSE_TWIN2
+
 KurtsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,40 +23,40 @@
 	iftrue UnknownScript_0x18e177
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue UnknownScript_0x18e16f
-	disappear $5
-	appear $2
-	disappear $6
-	appear $3
+	disappear KURTSHOUSE_KURT2
+	appear KURTSHOUSE_KURT1
+	disappear KURTSHOUSE_TWIN2
+	appear KURTSHOUSE_TWIN1
 	return
 
 UnknownScript_0x18e16f:
-	disappear $2
-	appear $5
-	disappear $3
-	appear $6
+	disappear KURTSHOUSE_KURT1
+	appear KURTSHOUSE_KURT2
+	disappear KURTSHOUSE_TWIN1
+	appear KURTSHOUSE_TWIN2
 UnknownScript_0x18e177:
 	return
 
 KurtScript_0x18e178:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_KURT_GAVE_YOU_LURE_BALL
 	iftrue .GotLureBall
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
 	iftrue .ClearedSlowpokeWell
 	writetext UnknownText_0x18e473
+	waitbutton
 	closetext
-	loadmovesprites
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	setevent EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
 	checkcode VAR_FACING
 	if_equal UP, .RunAround
 	spriteface PLAYER, DOWN
 	playsound SFX_FLY
-	applymovement $2, MovementData_0x18e466
+	applymovement KURTSHOUSE_KURT1, MovementData_0x18e466
 	playsound SFX_EXIT_BUILDING
-	disappear $2
-	waitbutton
+	disappear KURTSHOUSE_KURT1
+	waitsfx
 	special RestartMapMusic
 	end
 
@@ -56,16 +63,16 @@
 .RunAround:
 	spriteface PLAYER, DOWN
 	playsound SFX_FLY
-	applymovement $2, MovementData_0x18e46c
+	applymovement KURTSHOUSE_KURT1, MovementData_0x18e46c
 	playsound SFX_EXIT_BUILDING
-	disappear $2
-	waitbutton
+	disappear KURTSHOUSE_KURT1
+	waitsfx
 	special RestartMapMusic
 	end
 
 .ClearedSlowpokeWell:
 	writetext UnknownText_0x18e615
-	keeptextopen
+	buttonsound
 	verbosegiveitem LURE_BALL
 	iffalse .NoRoomForBall
 	setevent EVENT_KURT_GAVE_YOU_LURE_BALL
@@ -94,7 +101,7 @@
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
 	iftrue .CheckApricorns
 	writetext UnknownText_0x18e6c9
-	closetext
+	waitbutton
 .CheckApricorns:
 	checkitem RED_APRICORN
 	iftrue .AskApricorn
@@ -114,18 +121,18 @@
 	iftrue .ThatTurnedOutGreat
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_2
 	iftrue .IMakeBallsFromApricorns
-	loadmovesprites
+	closetext
 	end
 
 .IMakeBallsFromApricorns:
 	writetext UnknownText_0x18e6c9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AskApricorn:
 	writetext UnknownText_0x18e736
-	keeptextopen
+	buttonsound
 	setevent EVENT_DRAGON_SHRINE_QUESTION_2
 	special Special_SelectApricornForKurt
 	if_equal $0, .Cancel
@@ -168,14 +175,14 @@
 	setflag ENGINE_KURT_MAKING_BALLS
 .WaitForApricorns:
 	writetext UnknownText_0x18e779
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Cancel:
 	writetext UnknownText_0x18e7bc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ._ThatTurnedOutGreat:
@@ -182,9 +189,9 @@
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 .ThatTurnedOutGreat:
 	writetext UnknownText_0x18e82a
-	closetext
+	waitbutton
 .NoRoomForBall:
-	loadmovesprites
+	closetext
 	end
 
 .GiveLevelBall:
@@ -191,7 +198,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 LEVEL_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_RED_APRICORN
@@ -201,7 +208,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 LURE_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_BLU_APRICORN
@@ -211,7 +218,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 MOON_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_YLW_APRICORN
@@ -221,7 +228,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 FRIEND_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_GRN_APRICORN
@@ -231,7 +238,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 FAST_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_WHT_APRICORN
@@ -241,7 +248,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 HEAVY_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_BLK_APRICORN
@@ -251,7 +258,7 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
-	keeptextopen
+	buttonsound
 	verbosegiveitem2 LOVE_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_PNK_APRICORN
@@ -263,8 +270,8 @@
 	checkitem GS_BALL
 	iffalse .NoGSBall
 	writetext UnknownText_0x18e8ab
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GAVE_GS_BALL_TO_KURT
 	takeitem GS_BALL
 	setflag ENGINE_KURT_MAKING_BALLS
@@ -274,38 +281,38 @@
 	checkflag ENGINE_KURT_MAKING_BALLS
 	iffalse .NotMakingBalls
 	writetext UnknownText_0x18e934
-	closetext
+	waitbutton
 	writetext UnknownText_0x18e949
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NotMakingBalls:
 	writetext UnknownText_0x18e95c
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_FOREST_IS_RESTLESS
 	clearevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	clearevent EVENT_GAVE_GS_BALL_TO_KURT
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 20
-	showemote EMOTE_SHOCK, $2, 30
+	showemote EMOTE_SHOCK, KURTSHOUSE_KURT1, 30
 	checkcode VAR_FACING
 	if_equal UP, .GSBallRunAround
 	spriteface PLAYER, DOWN
 	playsound SFX_FLY
-	applymovement $2, MovementData_0x18e466
+	applymovement KURTSHOUSE_KURT1, MovementData_0x18e466
 	jump .KurtHasLeftTheBuilding
 
 .GSBallRunAround:
 	spriteface PLAYER, DOWN
 	playsound SFX_FLY
-	applymovement $2, MovementData_0x18e46c
+	applymovement KURTSHOUSE_KURT1, MovementData_0x18e46c
 .KurtHasLeftTheBuilding:
 	playsound SFX_EXIT_BUILDING
-	disappear $2
+	disappear KURTSHOUSE_KURT1
 	clearevent EVENT_AZALEA_TOWN_KURT
-	waitbutton
+	waitsfx
 	special RestartMapMusic
 	domaptrigger AZALEA_TOWN, $2
 	end
@@ -312,7 +319,7 @@
 
 KurtScript_0x18e3bd:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_GS_BALL_TO_KURT
 	iftrue KurtScript_ImCheckingItNow
 KurtMakingBallsScript:
@@ -319,26 +326,26 @@
 	checkevent EVENT_BUGGING_KURT_TOO_MUCH
 	iffalse Script_FirstTimeBuggingKurt
 	writetext UnknownText_0x18e7d8
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, UP
+	spriteface KURTSHOUSE_KURT2, UP
 	end
 
 Script_FirstTimeBuggingKurt:
 	writetext UnknownText_0x18e863
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, UP
+	spriteface KURTSHOUSE_KURT2, UP
 	setevent EVENT_BUGGING_KURT_TOO_MUCH
 	end
 
 KurtScript_ImCheckingItNow:
 	writetext UnknownText_0x18e934
-	closetext
-	spriteface $5, UP
+	waitbutton
+	spriteface KURTSHOUSE_KURT2, UP
 	writetext UnknownText_0x18e949
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 KurtsGranddaughter1:
@@ -355,66 +362,66 @@
 	iftrue .SlowpokeBack
 	checkevent EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
 	iftrue .Lonely
-	loadfont
+	opentext
 	writetext KurtsGranddaughterSlowpokeGoneText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SlowpokeBack
-	loadfont
+	opentext
 	writetext KurtsGranddaughterSlowpokeBackText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Lonely
-	loadfont
+	opentext
 	writetext KurtsGranddaughterLonelyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Dad
-	loadfont
+	opentext
 	writetext KurtsGranddaughterDadText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 KurtsGranddaughter2:
 	faceplayer
 KurtsGranddaughter2Subscript:
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_GS_BALL_TO_KURT
 	iftrue .GSBall
 	writetext KurtsGranddaughterHelpText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
+	spriteface KURTSHOUSE_TWIN2, RIGHT
 	end
 
 .GSBall
 	writetext KurtsGranddaughterGSBallText
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, RIGHT
+	spriteface KURTSHOUSE_TWIN2, RIGHT
 	end
 
 KurtsGranddaughterFunScript:
-	loadfont
+	opentext
 	writetext KurtsGranddaughterFunText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 KurtsHouseSlowpoke:
 	faceplayer
-	loadfont
+	opentext
 	writetext KurtsHouseSlowpokeText
 	cry SLOWPOKE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 KurtsHouseOakPhoto:
--- a/maps/LakeofRage.asm
+++ b/maps/LakeofRage.asm
@@ -1,10 +1,24 @@
+const_value set 2
+	const LAKEOFRAGE_LANCE
+	const LAKEOFRAGE_GRAMPS
+	const LAKEOFRAGE_SUPER_NERD1
+	const LAKEOFRAGE_COOLTRAINER_F1
+	const LAKEOFRAGE_FISHER1
+	const LAKEOFRAGE_FISHER2
+	const LAKEOFRAGE_COOLTRAINER_M
+	const LAKEOFRAGE_COOLTRAINER_F2
+	const LAKEOFRAGE_GYARADOS
+	const LAKEOFRAGE_SUPER_NERD2
+	const LAKEOFRAGE_POKE_BALL1
+	const LAKEOFRAGE_POKE_BALL2
+
 LakeofRage_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 2
@@ -14,10 +28,10 @@
 	dbw 5, .FlyPoint
 	dbw 2, .Wesley
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPoint
@@ -27,19 +41,19 @@
 .Wesley
 	checkcode VAR_WEEKDAY
 	if_equal WEDNESDAY, .WesleyAppears
-	disappear $b
+	disappear LAKEOFRAGE_SUPER_NERD2
 	return
 
 .WesleyAppears
-	appear $b
+	appear LAKEOFRAGE_SUPER_NERD2
 	return
 
 LanceScript_0x70022:
 	checkevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
 	iftrue UnknownScript_0x70057
-	loadfont
+	opentext
 	writetext UnknownText_0x70157
-	keeptextopen
+	buttonsound
 	faceplayer
 	writetext UnknownText_0x701b4
 	yesorno
@@ -46,11 +60,11 @@
 	iffalse UnknownScript_0x7004e
 UnknownScript_0x70035:
 	writetext UnknownText_0x702c6
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_WARP_TO
-	applymovement $2, MovementData_0x70155
-	disappear $2
+	applymovement LAKEOFRAGE_LANCE, MovementData_0x70155
+	disappear LAKEOFRAGE_LANCE
 	clearevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
 	setevent EVENT_DECIDED_TO_HELP_LANCE
 	domaptrigger MAHOGANY_MART_1F, $1
@@ -58,14 +72,14 @@
 
 UnknownScript_0x7004e:
 	writetext UnknownText_0x70371
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
 	end
 
 UnknownScript_0x70057:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x703a5
 	yesorno
 	iffalse UnknownScript_0x7004e
@@ -72,44 +86,44 @@
 	jump UnknownScript_0x70035
 
 GyaradosScript_0x70063:
-	loadfont
+	opentext
 	writetext UnknownText_0x703cb
 	pause 15
 	cry GYARADOS
-	loadmovesprites
-	loadpokedata GYARADOS, 30
+	closetext
+	loadwildmon GYARADOS, 30
 	writecode VAR_BATTLETYPE, BATTLETYPE_SHINY
 	startbattle
 	if_equal $1, UnknownScript_0x7007a
-	disappear $a
+	disappear LAKEOFRAGE_GYARADOS
 UnknownScript_0x7007a:
-	returnafterbattle
-	loadfont
+	reloadmapafterbattle
+	opentext
 	giveitem RED_SCALE
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x703df
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
-	loadmovesprites
+	closetext
 	dotrigger $0
-	appear $2
+	appear LAKEOFRAGE_LANCE
 	end
 
 GrampsScript_0x7008e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x7009c
 	writetext UnknownText_0x703f8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7009c:
 	writetext UnknownText_0x70421
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x700a2:
@@ -122,18 +136,18 @@
 	jumptext UnknownText_0x708d7
 
 MapLakeofRageSignpost1Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x70903
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x700b8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x700b8:
-	keeptextopen
+	buttonsound
 	special Special_MagikarpHouseSign
-	loadmovesprites
+	closetext
 	end
 
 TrainerFisherAndre:
@@ -140,11 +154,11 @@
 	trainer EVENT_BEAT_FISHER_ANDRE, FISHER, ANDRE, FisherAndreSeenText, FisherAndreBeatenText, 0, FisherAndreScript
 
 FisherAndreScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7058f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherRaymond:
@@ -151,11 +165,11 @@
 	trainer EVENT_BEAT_FISHER_RAYMOND, FISHER, RAYMOND, FisherRaymondSeenText, FisherRaymondBeatenText, 0, FisherRaymondScript
 
 FisherRaymondScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x70611
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermAaron:
@@ -162,11 +176,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_AARON, COOLTRAINERM, AARON, CooltrainermAaronSeenText, CooltrainermAaronBeatenText, 0, CooltrainermAaronScript
 
 CooltrainermAaronScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7069c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfLois:
@@ -173,16 +187,16 @@
 	trainer EVENT_BEAT_COOLTRAINERF_LOIS, COOLTRAINERF, LOIS, CooltrainerfLoisSeenText, CooltrainerfLoisBeatenText, 0, CooltrainerfLoisScript
 
 CooltrainerfLoisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x70752
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WesleyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_BLACKBELT_FROM_WESLEY
 	iftrue WesleyWednesdayScript
 	checkcode VAR_WEEKDAY
@@ -190,47 +204,47 @@
 	checkevent EVENT_MET_WESLEY_OF_WEDNESDAY
 	iftrue .MetWesley
 	writetext MeetWesleyText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_WESLEY_OF_WEDNESDAY
 .MetWesley
 	writetext WesleyGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem BLACKBELT
 	iffalse WesleyDoneScript
 	setevent EVENT_GOT_BLACKBELT_FROM_WESLEY
 	writetext WesleyGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WesleyWednesdayScript:
 	writetext WesleyWednesdayText
-	closetext
+	waitbutton
 WesleyDoneScript:
-	loadmovesprites
+	closetext
 	end
 
 WesleyNotWednesdayScript:
 	writetext WesleyNotWednesdayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x70148:
-	db ELIXER, 1
+LakeofRageElixer:
+	itemball ELIXER
 
-ItemFragment_0x7014a:
-	db TM_DETECT, 1
+LakeofRageTMDetect:
+	itemball TM_DETECT
 
-MapLakeofRageSignpostItem2:
+LakeofRageHiddenFullRestore:
 	dwb EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
-MapLakeofRageSignpostItem3:
+LakeofRageHiddenRareCandy:
 	dwb EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
-MapLakeofRageSignpostItem4:
+LakeofRageHiddenMaxPotion:
 	dwb EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
 	
 
@@ -503,9 +517,9 @@
 	db 5
 	signpost 27, 21, SIGNPOST_READ, MapLakeofRageSignpost0Script
 	signpost 31, 25, SIGNPOST_READ, MapLakeofRageSignpost1Script
-	signpost 28, 11, SIGNPOST_ITEM, MapLakeofRageSignpostItem2
-	signpost 4, 4, SIGNPOST_ITEM, MapLakeofRageSignpostItem3
-	signpost 5, 35, SIGNPOST_ITEM, MapLakeofRageSignpostItem4
+	signpost 28, 11, SIGNPOST_ITEM, LakeofRageHiddenFullRestore
+	signpost 4, 4, SIGNPOST_ITEM, LakeofRageHiddenRareCandy
+	signpost 5, 35, SIGNPOST_ITEM, LakeofRageHiddenMaxPotion
 
 .PersonEvents:
 	db 12
@@ -519,5 +533,5 @@
 	person_event SPRITE_COOLTRAINER_F, 7, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerCooltrainerfLois, EVENT_LAKE_OF_RAGE_CIVILIANS
 	person_event SPRITE_GYARADOS, 22, 18, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
 	person_event SPRITE_SUPER_NERD, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, WesleyScript, EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
-	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x70148, EVENT_LAKE_OF_RAGE_ELIXER
-	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7014a, EVENT_LAKE_OF_RAGE_TM_DETECT
+	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeofRageElixer, EVENT_LAKE_OF_RAGE_ELIXER
+	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeofRageTMDetect, EVENT_LAKE_OF_RAGE_TM_DETECT
--- a/maps/LakeofRageHiddenPowerHouse.asm
+++ b/maps/LakeofRageHiddenPowerHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const LAKEOFRAGEHIDDENPOWERHOUSE_FISHER
+
 LakeofRageHiddenPowerHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,23 +10,23 @@
 
 HiddenPowerGuy:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM10_HIDDEN_POWER
 	iftrue .AlreadyGotItem
 	writetext HiddenPowerGuyText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_HIDDEN_POWER
 	iffalse .Done
 	setevent EVENT_GOT_TM10_HIDDEN_POWER
 	writetext HiddenPowerGuyText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 .AlreadyGotItem
 	writetext HiddenPowerGuyText3
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 HiddenPowerHouseBookshelf:
--- a/maps/LakeofRageMagikarpHouse.asm
+++ b/maps/LakeofRageMagikarpHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const LAKEOFRAGEMAGIKARPHOUSE_FISHING_GURU
+
 LakeofRageMagikarpHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +10,7 @@
 
 FishingGuruScript_0x19a6ae:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	iftrue UnknownScript_0x19a6fe
 	checkevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
@@ -17,21 +20,21 @@
 	checkevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
 	iftrue UnknownScript_0x19a6d1
 	writetext UnknownText_0x19a72e
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
 	end
 
 UnknownScript_0x19a6d1:
 	writetext UnknownText_0x19a84d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19a6d7:
 	writetext UnknownText_0x19a890
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
 	end
 
@@ -40,7 +43,7 @@
 	special Special_FindThatSpecies
 	iffalse UnknownScript_0x19a6d7
 	writetext UnknownText_0x19a93e
-	closetext
+	waitbutton
 	special Special_CheckMagikarpLength
 	if_equal $0, UnknownScript_0x19a71c
 	if_equal $1, UnknownScript_0x19a722
@@ -49,36 +52,36 @@
 
 UnknownScript_0x19a6fe:
 	writetext UnknownText_0x19a977
-	keeptextopen
+	buttonsound
 	verbosegiveitem ELIXER
 	iffalse UnknownScript_0x19a711
 	writetext UnknownText_0x19a9c3
+	waitbutton
 	closetext
-	loadmovesprites
 	clearevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	end
 
 UnknownScript_0x19a711:
-	loadmovesprites
+	closetext
 	setevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
 	end
 
 UnknownScript_0x19a716:
 	writetext UnknownText_0x19aa01
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19a71c:
 	writetext UnknownText_0x19aa5c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19a722:
 	writetext UnknownText_0x19aa79
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19a728:
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const LANCESROOM_LANCE
+	const LANCESROOM_MARY
+	const LANCESROOM_OAK
+
 LancesRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -38,93 +43,93 @@
 	earthquake 80
 	changeblock $4, $16, $34
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
 	end
 
 UnknownScript_0x180e6a:
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	applymovement PLAYER, MovementData_0x180f38
 	jump LanceScript_0x180e7b
 
 UnknownScript_0x180e74:
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	applymovement PLAYER, MovementData_0x180f3c
 LanceScript_0x180e7b:
-	spriteface $2, LEFT
-	loadfont
+	spriteface LANCESROOM_LANCE, LEFT
+	opentext
 	writetext UnknownText_0x180f67
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1810a4, 0
-	setlasttalked $2
+	setlasttalked LANCESROOM_LANCE
 	loadtrainer CHAMPION, LANCE
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	setevent EVENT_BEAT_CHAMPION_LANCE
-	loadfont
+	opentext
 	writetext UnknownText_0x181132
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	changeblock $4, $0, $b
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
 	musicfadeout MUSIC_BEAUTY_ENCOUNTER, $10
 	pause 30
-	showemote EMOTE_SHOCK, $2, 15
-	spriteface $2, DOWN
+	showemote EMOTE_SHOCK, LANCESROOM_LANCE, 15
+	spriteface LANCESROOM_LANCE, DOWN
 	pause 10
 	spriteface PLAYER, DOWN
-	appear $3
-	applymovement $3, MovementData_0x180f41
-	loadfont
+	appear LANCESROOM_MARY
+	applymovement LANCESROOM_MARY, MovementData_0x180f41
+	opentext
 	writetext UnknownText_0x1811dd
+	waitbutton
 	closetext
-	loadmovesprites
-	appear $4
-	applymovement $4, MovementData_0x180f46
-	follow $3, $4
-	applymovement $3, MovementData_0x180f49
+	appear LANCESROOM_OAK
+	applymovement LANCESROOM_OAK, MovementData_0x180f46
+	follow LANCESROOM_MARY, LANCESROOM_OAK
+	applymovement LANCESROOM_MARY, MovementData_0x180f49
 	stopfollow
-	spriteface $4, UP
-	spriteface $2, LEFT
-	loadfont
+	spriteface LANCESROOM_OAK, UP
+	spriteface LANCESROOM_LANCE, LEFT
+	opentext
 	writetext UnknownText_0x18121b
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $3, MovementData_0x180f4c
+	applymovement LANCESROOM_MARY, MovementData_0x180f4c
 	spriteface PLAYER, LEFT
-	loadfont
+	opentext
 	writetext UnknownText_0x18134b
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x180f4f
+	applymovement LANCESROOM_LANCE, MovementData_0x180f4f
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x18137b
+	waitbutton
 	closetext
-	loadmovesprites
-	follow $2, PLAYER
-	spriteface $3, UP
-	spriteface $4, UP
-	applymovement $2, MovementData_0x180f53
+	follow LANCESROOM_LANCE, PLAYER
+	spriteface LANCESROOM_MARY, UP
+	spriteface LANCESROOM_OAK, UP
+	applymovement LANCESROOM_LANCE, MovementData_0x180f53
 	stopfollow
 	playsound SFX_EXIT_BUILDING
-	disappear $2
+	disappear LANCESROOM_LANCE
 	applymovement PLAYER, MovementData_0x180f55
 	playsound SFX_EXIT_BUILDING
 	disappear PLAYER
-	applymovement $3, MovementData_0x180f57
-	showemote EMOTE_SHOCK, $3, 15
-	loadfont
+	applymovement LANCESROOM_MARY, MovementData_0x180f57
+	showemote EMOTE_SHOCK, LANCESROOM_MARY, 15
+	opentext
 	writetext UnknownText_0x1813c5
 	pause 30
-	loadmovesprites
-	applymovement $3, MovementData_0x180f5b
+	closetext
+	applymovement LANCESROOM_MARY, MovementData_0x180f5b
 	special FadeOutPalettes
 	pause 15
 	warpfacing UP, HALL_OF_FAME, $4, $d
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const LAVRADIOTOWER1F_RECEPTIONIST
+	const LAVRADIOTOWER1F_OFFICER
+	const LAVRADIOTOWER1F_SUPER_NERD1
+	const LAVRADIOTOWER1F_GENTLEMAN
+	const LAVRADIOTOWER1F_SUPER_NERD2
+
 LavRadioTower1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,26 +23,26 @@
 
 GentlemanScript_0x7ee6c:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_EXPN_CARD
 	iftrue .UnknownScript_0x7ee8e
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue .UnknownScript_0x7ee80
 	writetext UnknownText_0x7effb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .UnknownScript_0x7ee80:
 	writetext UnknownText_0x7f0a1
-	keeptextopen
+	buttonsound
 	stringtotext .expncardname, $1
 	scall .UnknownScript_0x7ee94
 	setflag ENGINE_EXPN_CARD
 .UnknownScript_0x7ee8e
 	writetext UnknownText_0x7f141
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .UnknownScript_0x7ee94
@@ -47,18 +54,18 @@
 
 SuperNerdScript_0x7eea2:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_EXPN_CARD
 	iftrue UnknownScript_0x7eeb0
 	writetext UnknownText_0x7f193
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7eeb0:
 	writetext UnknownText_0x7f248
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapLavRadioTower1FSignpost0Script:
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const LAVENDERMART_CLERK
+	const LAVENDERMART_POKEFAN_M
+	const LAVENDERMART_ROCKER
+
 LavenderMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x7eb1c:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_LAVENDER
-	loadmovesprites
+	closetext
 	end
 
 PokefanMScript_0x7eb23:
--- a/maps/LavenderNameRater.asm
+++ b/maps/LavenderNameRater.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const LAVENDERNAMERATER_GENTLEMAN
+
 LavenderNameRater_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,10 +16,10 @@
 
 LavenderNameRater:
 	faceplayer
-	loadfont
+	opentext
 	special SpecialNameRater
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LavenderNameRaterBookshelf:
--- a/maps/LavenderPokeCenter1F.asm
+++ b/maps/LavenderPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const LAVENDERPOKECENTER1F_NURSE
+	const LAVENDERPOKECENTER1F_GENTLEMAN
+	const LAVENDERPOKECENTER1F_TEACHER
+	const LAVENDERPOKECENTER1F_YOUNGSTER
+
 LavenderPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -16,18 +22,18 @@
 
 YoungsterScript_0x7e6a9:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x7e6b7
 	writetext UnknownText_0x7e779
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7e6b7:
 	writetext UnknownText_0x7e7ed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x7e6bd:
--- a/maps/LavenderPokeCenter2FBeta.asm
+++ b/maps/LavenderPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 LavenderPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/LavenderTown.asm
+++ b/maps/LavenderTown.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const LAVENDERTOWN_POKEFAN_M
+	const LAVENDERTOWN_TEACHER
+	const LAVENDERTOWN_GRAMPS
+	const LAVENDERTOWN_YOUNGSTER
+
 LavenderTown_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/LavenderTownSpeechHouse.asm
+++ b/maps/LavenderTownSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const LAVENDERTOWNSPEECHHOUSE_POKEFAN_F
+
 LavenderTownSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const MAHOGANYGYM_PRYCE
+	const MAHOGANYGYM_BUENA1
+	const MAHOGANYGYM_ROCKER1
+	const MAHOGANYGYM_BUENA2
+	const MAHOGANYGYM_ROCKER2
+	const MAHOGANYGYM_ROCKER3
+	const MAHOGANYGYM_GYM_GUY
+
 MahoganyGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,21 +16,21 @@
 
 PryceScript_0x199a9e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_PRYCE
 	iftrue .FightDone
 	writetext UnknownText_0x199b8d
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x199cb3, 0
 	loadtrainer PRYCE, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_PRYCE
-	loadfont
+	opentext
 	writetext UnknownText_0x199d3b
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_GLACIERBADGE
 	checkcode VAR_BADGES
 	scall MahoganyGymTriggerRockets
@@ -34,20 +43,20 @@
 	setevent EVENT_BEAT_BOARDER_BRAD
 	setevent EVENT_BEAT_BOARDER_DOUGLAS
 	writetext UnknownText_0x199d55
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_ICY_WIND
 	iffalse UnknownScript_0x199af4
 	setevent EVENT_GOT_TM16_ICY_WIND
 	writetext UnknownText_0x199def
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x199af0:
 	writetext UnknownText_0x199e59
-	closetext
+	waitbutton
 UnknownScript_0x199af4:
-	loadmovesprites
+	closetext
 	end
 
 MahoganyGymTriggerRockets:
@@ -65,11 +74,11 @@
 	trainer EVENT_BEAT_SKIER_ROXANNE, SKIER, ROXANNE, SkierRoxanneSeenText, SkierRoxanneBeatenText, 0, SkierRoxanneScript
 
 SkierRoxanneScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19a116
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSkierClarissa:
@@ -76,11 +85,11 @@
 	trainer EVENT_BEAT_SKIER_CLARISSA, SKIER, CLARISSA, SkierClarissaSeenText, SkierClarissaBeatenText, 0, SkierClarissaScript
 
 SkierClarissaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19a18f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBoarderRonald:
@@ -87,11 +96,11 @@
 	trainer EVENT_BEAT_BOARDER_RONALD, BOARDER, RONALD, BoarderRonaldSeenText, BoarderRonaldBeatenText, 0, BoarderRonaldScript
 
 BoarderRonaldScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x199f2d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBoarderBrad:
@@ -98,11 +107,11 @@
 	trainer EVENT_BEAT_BOARDER_BRAD, BOARDER, BRAD, BoarderBradSeenText, BoarderBradBeatenText, 0, BoarderBradScript
 
 BoarderBradScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x199fdd
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBoarderDouglas:
@@ -109,27 +118,27 @@
 	trainer EVENT_BEAT_BOARDER_DOUGLAS, BOARDER, DOUGLAS, BoarderDouglasSeenText, BoarderDouglasBeatenText, 0, BoarderDouglasScript
 
 BoarderDouglasScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19a047
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MahoganyGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_PRYCE
 	iftrue .MahoganyGymGuyWinScript
 	writetext MahoganyGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .MahoganyGymGuyWinScript
 	writetext MahoganyGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MahoganyGymStatue:
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const MAHOGANYMART1F_PHARMACIST
+	const MAHOGANYMART1F_BLACK_BELT
+	const MAHOGANYMART1F_LANCE
+	const MAHOGANYMART1F_DRAGON
+	const MAHOGANYMART1F_GRANNY
+
 MahoganyMart1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -31,83 +38,83 @@
 
 PharmacistScript_0x6c367:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_DECIDED_TO_HELP_LANCE
 	iftrue UnknownScript_0x6c375
 	pokemart MARTTYPE_STANDARD, MART_MAHOGANY_1
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x6c375:
 	writetext UnknownText_0x6c46b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BlackBeltScript_0x6c37b:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_DECIDED_TO_HELP_LANCE
 	iftrue UnknownScript_0x6c389
 	writetext UnknownText_0x6c494
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6c389:
 	writetext UnknownText_0x6c501
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6c38f:
 	pause 15
-	loadfont
+	opentext
 	writetext UnknownText_0x6c52a
 	pause 15
-	loadmovesprites
+	closetext
 	playsound SFX_TACKLE
-	applymovement $5, MovementData_0x6c3f6
-	applymovement $3, MovementData_0x6c3fb
+	applymovement MAHOGANYMART1F_DRAGON, MovementData_0x6c3f6
+	applymovement MAHOGANYMART1F_BLACK_BELT, MovementData_0x6c3fb
 	pause 15
-	disappear $5
+	disappear MAHOGANYMART1F_DRAGON
 	pause 15
-	applymovement $4, MovementData_0x6c407
-	loadfont
+	applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c407
+	opentext
 	writetext UnknownText_0x6c549
+	waitbutton
 	closetext
-	loadmovesprites
-	follow $4, PLAYER
-	applymovement $4, MovementData_0x6c40a
-	applymovement $2, MovementData_0x6c403
-	applymovement $4, MovementData_0x6c40e
+	follow MAHOGANYMART1F_LANCE, PLAYER
+	applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c40a
+	applymovement MAHOGANYMART1F_PHARMACIST, MovementData_0x6c403
+	applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c40e
 	stopfollow
-	loadfont
+	opentext
 	writetext UnknownText_0x6c59e
-	closetext
-	showemote EMOTE_SHOCK, $2, 10
+	waitbutton
+	showemote EMOTE_SHOCK, MAHOGANYMART1F_PHARMACIST, 10
 	playsound SFX_FAINT
 	changeblock $6, $2, $1e
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
-	spriteface $4, LEFT
-	loadfont
+	spriteface MAHOGANYMART1F_LANCE, LEFT
+	opentext
 	writetext UnknownText_0x6c5ba
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x6c412
+	applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c412
 	playsound SFX_EXIT_BUILDING
-	disappear $4
+	disappear MAHOGANYMART1F_LANCE
 	dotrigger $0
-	waitbutton
+	waitsfx
 	end
 
 GrannyScript_0x6c3ee:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_MAHOGANY_2
-	loadmovesprites
+	closetext
 	end
 
 MovementData_0x6c3f6:
--- a/maps/MahoganyPokeCenter1F.asm
+++ b/maps/MahoganyPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const MAHOGANYPOKECENTER1F_NURSE
+	const MAHOGANYPOKECENTER1F_POKEFAN_M
+	const MAHOGANYPOKECENTER1F_YOUNGSTER
+	const MAHOGANYPOKECENTER1F_COOLTRAINER_F
+
 MahoganyPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/MahoganyRedGyaradosSpeechHouse.asm
+++ b/maps/MahoganyRedGyaradosSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const MAHOGANYREDGYARADOSSPEECHHOUSE_BLACK_BELT
+	const MAHOGANYREDGYARADOSSPEECHHOUSE_TEACHER
+
 MahoganyRedGyaradosSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,18 +14,18 @@
 
 TeacherScript_0x199982:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0x199990
 	writetext UnknownText_0x199a0e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x199990:
 	writetext UnknownText_0x199a3d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x195996:
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -1,10 +1,16 @@
+const_value set 2
+	const MAHOGANYTOWN_POKEFAN_M
+	const MAHOGANYTOWN_GRAMPS
+	const MAHOGANYTOWN_FISHER
+	const MAHOGANYTOWN_LASS
+
 MahoganyTown_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +18,10 @@
 	; callbacks
 	dbw 5, .FlyPoint
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPoint
@@ -23,14 +29,14 @@
 	return
 
 UnknownScript_0x190013:
-	showemote EMOTE_SHOCK, $2, 15
-	applymovement $2, MovementData_0x1900a9
-	follow PLAYER, $2
+	showemote EMOTE_SHOCK, MAHOGANYTOWN_POKEFAN_M, 15
+	applymovement MAHOGANYTOWN_POKEFAN_M, MovementData_0x1900a9
+	follow PLAYER, MAHOGANYTOWN_POKEFAN_M
 	applymovement PLAYER, MovementData_0x1900a7
 	stopfollow
 	spriteface PLAYER, RIGHT
 	scall UnknownScript_0x19002f
-	applymovement $2, MovementData_0x1900ad
+	applymovement MAHOGANYTOWN_POKEFAN_M, MovementData_0x1900ad
 	end
 
 PokefanMScript_0x19002e:
@@ -42,16 +48,16 @@
 	end
 
 UnknownScript_0x190039:
-	loadfont
+	opentext
 	writetext UnknownText_0x1901a6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x190040:
-	loadfont
+	opentext
 	writetext UnknownText_0x1900b0
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	yesorno
 	iffalse UnknownScript_0x190072
 	checkmoney $0, 300
@@ -58,47 +64,47 @@
 	if_equal $2, UnknownScript_0x19006c
 	giveitem RAGECANDYBAR
 	iffalse UnknownScript_0x190078
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
 	takemoney $0, 300
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	writetext UnknownText_0x19014a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19006c:
 	writetext UnknownText_0x19015b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x190072:
 	writetext UnknownText_0x190178
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x190078:
 	writetext UnknownText_0x190188
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GrampsScript_0x19007e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x19008c
 	writetext UnknownText_0x1901e5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19008c:
 	writetext UnknownText_0x19021d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x190092:
--- a/maps/ManiasHouse.asm
+++ b/maps/ManiasHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const MANIASHOUSE_ROCKER
+
 ManiasHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +10,7 @@
 
 ManiaScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_MANIA_TOOK_SHUCKIE_OR_LET_YOU_KEEP_HIM
 	iftrue .default_postevent
 	checkevent EVENT_GOT_SHUCKIE
@@ -18,12 +21,12 @@
 	special SpecialGiveShuckle
 	iffalse .partyfull
 	writetext ManiaText_TakeCareOfShuckle
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	writetext ManiaText_GotShuckle
 	playsound SFX_KEY_ITEM
-	waitbutton
-	loadmovesprites
+	waitsfx
+	closetext
 	setevent EVENT_GOT_SHUCKIE
 	end
 
@@ -31,20 +34,20 @@
 	checkflag ENGINE_SHUCKLE_GIVEN
 	iffalse .returnshuckie
 	writetext ManiaText_TakeCareOfShuckle
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .partyfull:
 	writetext ManiaText_PartyFull
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .refusetotakeshuckie:
 	writetext ManiaText_IfHeComesBack
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .returnshuckie:
@@ -57,40 +60,40 @@
 	if_equal $3, .superhappy
 	if_equal $4, .default_postevent
 	writetext ManiaText_ThankYou
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_MANIA_TOOK_SHUCKIE_OR_LET_YOU_KEEP_HIM
 	end
 
 .wrong:
 	writetext ManiaText_ShuckleNotThere
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .superhappy:
 	writetext ManiaText_ShuckleLikesYou
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_MANIA_TOOK_SHUCKIE_OR_LET_YOU_KEEP_HIM
 	end
 
 .refused:
 	writetext ManiaText_SameAsBeingRobbed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .nothingleft:
 	writetext ManiaText_ShuckleIsYourLastMon
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .default_postevent:
 	writetext ManiaText_HappinessSpeech
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9d300:
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -1,19 +1,20 @@
+
 MobileBattleRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	priorityjump MobileBattleRoom_Initialize
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 MobileBattleRoom_Initialize:
@@ -34,7 +35,7 @@
 .one_:
 	writetext MobileBattleRoom_HealText
 	pause 20
-	loadmovesprites
+	closetext
 	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	special LoadMapPalettes
@@ -50,11 +51,11 @@
 .one:
 	special Function10387b
 	writetext MobileBattleRoom_EstablishingCommsText
-	closetext
+	waitbutton
 	reloadmappart
 	special Function101225
 .false:
-	loadmovesprites
+	closetext
 	end
 
 MobileBattleRoom_EstablishingCommsText:
--- a/maps/MobileTradeRoomMobile.asm
+++ b/maps/MobileTradeRoomMobile.asm
@@ -1,19 +1,20 @@
+
 MobileTradeRoomMobile_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	priorityjump MobileTradeRoomMobile_Initialize
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 MobileTradeRoomMobile_Initialize:
@@ -25,10 +26,10 @@
 	refreshscreen $0
 	special Function1037c2
 	writetext MobileTradeRoomMobile_EstablishingCommsText
-	closetext
+	waitbutton
 	reloadmappart
 	special Function101231
-	loadmovesprites
+	closetext
 	end
 
 MobileTradeRoomMobile_EstablishingCommsText:
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -1,82 +1,85 @@
+const_value set 2
+	const MOUNTMOON_SILVER
+
 MountMoon_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x74089, 0
-	dw UnknownScript_0x7408d, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x74089:
-	priorityjump UnknownScript_0x7408e
+.Trigger0:
+	priorityjump .RivalBattle
 	end
 
-UnknownScript_0x7408d:
+.Trigger1:
 	end
 
-UnknownScript_0x7408e:
+.RivalBattle:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	applymovement $2, MovementData_0x740f9
+	applymovement MOUNTMOON_SILVER, MountMoonSilverMovementBefore
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
-	writetext UnknownText_0x74105
+	opentext
+	writetext MountMoonSilverTextBefore
+	waitbutton
 	closetext
-	loadmovesprites
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue UnknownScript_0x740c3
+	iftrue .Totodile
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue UnknownScript_0x740d3
-	winlosstext UnknownText_0x7419d, UnknownText_0x742e0
-	setlasttalked $2
+	iftrue .Chikorita
+	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
+	setlasttalked MOUNTMOON_SILVER
 	loadtrainer RIVAL2, 3
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x740e3
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishBattle
 
-UnknownScript_0x740c3:
-	winlosstext UnknownText_0x7419d, UnknownText_0x742e0
-	setlasttalked $2
+.Totodile:
+	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
+	setlasttalked MOUNTMOON_SILVER
 	loadtrainer RIVAL2, 1
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x740e3
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishBattle
 
-UnknownScript_0x740d3:
-	winlosstext UnknownText_0x7419d, UnknownText_0x742e0
-	setlasttalked $2
+.Chikorita:
+	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
+	setlasttalked MOUNTMOON_SILVER
 	loadtrainer RIVAL2, 2
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x740e3
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishBattle
 
-UnknownScript_0x740e3:
+.FinishBattle:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x741fa
+	opentext
+	writetext MountMoonSilverTextAfter
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x740fd
-	disappear $2
+	applymovement MOUNTMOON_SILVER, MountMoonSilverMovementAfter
+	disappear MOUNTMOON_SILVER
 	dotrigger $1
 	setevent EVENT_BEAT_RIVAL_IN_MT_MOON
 	playmapmusic
 	end
 
-MovementData_0x740f9:
+MountMoonSilverMovementBefore:
 	step_left
 	step_left
 	step_left
 	step_end
 
-MovementData_0x740fd:
+MountMoonSilverMovementAfter:
 	step_right
 	step_right
 	step_down
@@ -86,7 +89,7 @@
 	step_down
 	step_end
 
-UnknownText_0x74105:
+MountMoonSilverTextBefore:
 	text "<......> <......> <......>"
 
 	para "It's been a while,"
@@ -106,7 +109,7 @@
 	line "show you!"
 	done
 
-UnknownText_0x7419d:
+MountMoonSilverTextWin:
 	text "<......> <......> <......>"
 
 	para "I thought I raised"
@@ -119,7 +122,7 @@
 	line "wasn't enough…"
 	done
 
-UnknownText_0x741fa:
+MountMoonSilverTextAfter:
 	text "<......> <......> <......>"
 
 	para "…You won, fair"
@@ -145,7 +148,7 @@
 	line "beating you."
 	done
 
-UnknownText_0x742e0:
+MountMoonSilverTextLoss:
 	text "<......> <......> <......>"
 
 	para "I've repaid my"
--- a/maps/MountMoonGiftShop.asm
+++ b/maps/MountMoonGiftShop.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const MOUNTMOONGIFTSHOP_GRAMPS1
+	const MOUNTMOONGIFTSHOP_GRAMPS2
+	const MOUNTMOONGIFTSHOP_LASS1
+	const MOUNTMOONGIFTSHOP_LASS2
+
 MountMoonGiftShop_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,9 +13,9 @@
 
 GrampsScript_0x771a8:
 	faceplayer
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_MT_MOON
-	loadmovesprites
+	closetext
 	end
 
 LassScript_0x771b0:
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const MOUNTMOONSQUARE_FAIRY1
+	const MOUNTMOONSQUARE_FAIRY2
+	const MOUNTMOONSQUARE_ROCK
+
 MountMoonSquare_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -22,7 +27,7 @@
 	return
 
 UnknownScript_0x77097:
-	disappear $4
+	disappear MOUNTMOONSQUARE_ROCK
 	return
 
 UnknownScript_0x7709a:
@@ -32,41 +37,41 @@
 	if_not_equal MONDAY, .NoDancing
 	checknite
 	iffalse .NoDancing
-	appear $2
-	appear $3
+	appear MOUNTMOONSQUARE_FAIRY1
+	appear MOUNTMOONSQUARE_FAIRY2
 	applymovement PLAYER, MovementData_0x77121
 	pause 15
-	appear $4
-	spriteface $2, RIGHT
+	appear MOUNTMOONSQUARE_ROCK
+	spriteface MOUNTMOONSQUARE_FAIRY1, RIGHT
 	cry CLEFAIRY
-	waitbutton
+	waitsfx
 	pause 30
-	follow $2, $3
+	follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
 	cry CLEFAIRY
-	applymovement $2, MovementData_0x77123
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x77123
 	cry CLEFAIRY
-	applymovement $2, MovementData_0x77126
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x77126
 	cry CLEFAIRY
-	applymovement $2, MovementData_0x77128
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x77128
 	cry CLEFAIRY
-	applymovement $2, MovementData_0x7712b
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x7712b
 	cry CLEFAIRY
-	applymovement $2, MovementData_0x7712d
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x7712d
 	stopfollow
-	applymovement $3, MovementData_0x77130
-	follow $2, $3
-	applymovement $2, MovementData_0x77132
+	applymovement MOUNTMOONSQUARE_FAIRY2, MovementData_0x77130
+	follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x77132
 	stopfollow
-	spriteface $2, DOWN
+	spriteface MOUNTMOONSQUARE_FAIRY1, DOWN
 	pause 10
-	showemote EMOTE_SHOCK, $2, 15
-	spriteface $2, DOWN
+	showemote EMOTE_SHOCK, MOUNTMOONSQUARE_FAIRY1, 15
+	spriteface MOUNTMOONSQUARE_FAIRY1, DOWN
 	cry CLEFAIRY
 	pause 15
-	follow $2, $3
-	applymovement $2, MovementData_0x77134
-	disappear $2
-	disappear $3
+	follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
+	applymovement MOUNTMOONSQUARE_FAIRY1, MovementData_0x77134
+	disappear MOUNTMOONSQUARE_FAIRY1
+	disappear MOUNTMOONSQUARE_FAIRY2
 	stopfollow
 	clearevent EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
 	setflag ENGINE_MT_MOON_SQUARE_CLEFAIRY
@@ -75,7 +80,7 @@
 .NoDancing:
 	end
 
-MapMountMoonSquareSignpostItem0:
+MountMoonSquareHiddenMoonStone:
 	dwb EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE, MOON_STONE
 	
 
@@ -150,7 +155,7 @@
 
 .Signposts:
 	db 2
-	signpost 7, 7, SIGNPOST_ITEM, MapMountMoonSquareSignpostItem0
+	signpost 7, 7, SIGNPOST_ITEM, MountMoonSquareHiddenMoonStone
 	signpost 7, 17, SIGNPOST_READ, MapMountMoonSquareSignpost1Script
 
 .PersonEvents:
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -1,3 +1,15 @@
+const_value set 2
+	const MOUNTMORTAR1FINSIDE_BOULDER
+	const MOUNTMORTAR1FINSIDE_POKE_BALL1
+	const MOUNTMORTAR1FINSIDE_POKE_BALL2
+	const MOUNTMORTAR1FINSIDE_POKE_BALL3
+	const MOUNTMORTAR1FINSIDE_POKE_BALL4
+	const MOUNTMORTAR1FINSIDE_POKE_BALL5
+	const MOUNTMORTAR1FINSIDE_SUPER_NERD1
+	const MOUNTMORTAR1FINSIDE_SUPER_NERD2
+	const MOUNTMORTAR1FINSIDE_POKE_BALL6
+	const MOUNTMORTAR1FINSIDE_POKE_BALL7
+
 MountMortar1FInside_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +21,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_MILLER, POKEMANIAC, MILLER, PokemaniacMillerSeenText, PokemaniacMillerBeatenText, 0, PokemaniacMillerScript
 
 PokemaniacMillerScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7debd
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdMarkus:
@@ -20,38 +32,38 @@
 	trainer EVENT_BEAT_SUPER_NERD_MARKUS, SUPER_NERD, MARKUS, SupernerdMarkusSeenText, SupernerdMarkusBeatenText, 0, SupernerdMarkusScript
 
 SupernerdMarkusScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7df97
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MountMortar1FBoulder:
 	jumpstd strengthboulder
 
-ItemFragment_0x7de7c:
-	db ESCAPE_ROPE, 1
+MountMortar1FInsideEscapeRope:
+	itemball ESCAPE_ROPE
 
-ItemFragment_0x7de7e:
-	db MAX_REVIVE, 1
+MountMortar1FInsideMaxRevive:
+	itemball MAX_REVIVE
 
-ItemFragment_0x7de80:
-	db HYPER_POTION, 1
+MountMortar1FInsideHyperPotion:
+	itemball HYPER_POTION
 
-ItemFragment_0x7de82:
-	db MAX_POTION, 1
+MountMortar1FInsideMaxPotion:
+	itemball MAX_POTION
 
-ItemFragment_0x7de84:
-	db NUGGET, 1
+MountMortar1FInsideNugget:
+	itemball NUGGET
 
-ItemFragment_0x7de86:
-	db IRON, 1
+MountMortar1FInsideIron:
+	itemball IRON
 
-ItemFragment_0x7de88:
-	db ULTRA_BALL, 1
+MountMortar1FInsideUltraBall:
+	itemball ULTRA_BALL
 
-MapMountMortar1FInsideSignpostItem0:
+MountMortar1FInsideHiddenMaxRepel:
 	dwb EVENT_MOUNT_MORTAR_1F_INSIDE_HIDDEN_MAX_REPEL, MAX_REPEL
 	
 
@@ -123,17 +135,17 @@
 
 .Signposts:
 	db 1
-	signpost 11, 30, SIGNPOST_ITEM, MapMountMortar1FInsideSignpostItem0
+	signpost 11, 30, SIGNPOST_ITEM, MountMortar1FInsideHiddenMaxRepel
 
 .PersonEvents:
 	db 10
 	person_event SPRITE_BOULDER, 43, 21, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MountMortar1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 38, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7de84, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
+	person_event SPRITE_POKE_BALL, 38, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideEscapeRope, EVENT_MOUNT_MORTAR_1F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 10, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideMaxRevive, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 27, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideHyperPotion, EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 20, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideMaxPotion, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 19, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideNugget, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
 	person_event SPRITE_SUPER_NERD, 43, 33, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacMiller, -1
 	person_event SPRITE_SUPER_NERD, 28, 24, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdMarkus, -1
-	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7de86, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
-	person_event SPRITE_POKE_BALL, 17, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7de88, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideIron, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
+	person_event SPRITE_POKE_BALL, 17, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideUltraBall, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
--- a/maps/MountMortar1FOutside.asm
+++ b/maps/MountMortar1FOutside.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const MOUNTMORTAR1FOUTSIDE_POKE_BALL1
+	const MOUNTMORTAR1FOUTSIDE_POKE_BALL2
+
 MountMortar1FOutside_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,13 +9,13 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x7ddf6:
-	db ETHER, 1
+MountMortar1FOutsideEther:
+	itemball ETHER
 
-ItemFragment_0x7ddf8:
-	db REVIVE, 1
+MountMortar1FOutsideRevive:
+	itemball REVIVE
 
-MapMountMortar1FOutsideSignpostItem0:
+MountMortar1FOutsideHiddenHyperPotion:
 	dwb EVENT_MOUNT_MORTAR_1F_OUTSIDE_HIDDEN_HYPER_POTION, HYPER_POTION
 	
 
@@ -36,9 +40,9 @@
 
 .Signposts:
 	db 1
-	signpost 22, 25, SIGNPOST_ITEM, MapMountMortar1FOutsideSignpostItem0
+	signpost 22, 25, SIGNPOST_ITEM, MountMortar1FOutsideHiddenHyperPotion
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 15, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7ddf6, EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
-	person_event SPRITE_POKE_BALL, 18, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7ddf8, EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
+	person_event SPRITE_POKE_BALL, 15, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FOutsideEther, EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
+	person_event SPRITE_POKE_BALL, 18, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FOutsideRevive, EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const MOUNTMORTAR2FINSIDE_POKE_BALL1
+	const MOUNTMORTAR2FINSIDE_POKE_BALL2
+	const MOUNTMORTAR2FINSIDE_POKE_BALL3
+	const MOUNTMORTAR2FINSIDE_POKE_BALL4
+	const MOUNTMORTAR2FINSIDE_POKE_BALL5
+	const MOUNTMORTAR2FINSIDE_POKE_BALL6
+	const MOUNTMORTAR2FINSIDE_SUPER_NERD
+
 MountMortar2FInside_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,32 +18,32 @@
 	trainer EVENT_BEAT_SUPER_NERD_HUGH, SUPER_NERD, HUGH, SupernerdHughSeenText, SupernerdHughBeatenText, 0, SupernerdHughScript
 
 SupernerdHughScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7e10e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x7e0de:
-	db MAX_POTION, 1
+MountMortar2FInsideMaxPotion:
+	itemball MAX_POTION
 
-ItemFragment_0x7e0e0:
-	db RARE_CANDY, 1
+MountMortar2FInsideRareCandy:
+	itemball RARE_CANDY
 
-ItemFragment_0x7e0e2:
-	db TM_DEFENSE_CURL, 1
+MountMortar2FInsideTMDefenseCurl:
+	itemball TM_DEFENSE_CURL
 
-ItemFragment_0x7e0e4:
-	db DRAGON_SCALE, 1
+MountMortar2FInsideDragonScale:
+	itemball DRAGON_SCALE
 
-ItemFragment_0x7e0e6:
-	db ELIXER, 1
+MountMortar2FInsideElixer:
+	itemball ELIXER
 
-ItemFragment_0x7e0e8:
-	db ESCAPE_ROPE, 1
+MountMortar2FInsideEscapeRope:
+	itemball ESCAPE_ROPE
 
-MapMountMortar2FInsideSignpostItem0:
+MountMortar2FInsideHiddenFullRestore:
 	dwb EVENT_MOUNT_MORTAR_2F_INSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
@@ -72,14 +81,14 @@
 
 .Signposts:
 	db 1
-	signpost 8, 24, SIGNPOST_ITEM, MapMountMortar2FInsideSignpostItem0
+	signpost 8, 24, SIGNPOST_ITEM, MountMortar2FInsideHiddenFullRestore
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 22, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e0e6, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
-	person_event SPRITE_POKE_BALL, 5, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e0e8, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 22, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideMaxPotion, EVENT_MOUNT_MORTAR_2F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 33, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideRareCandy, EVENT_MOUNT_MORTAR_2F_INSIDE_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 17, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideTMDefenseCurl, EVENT_MOUNT_MORTAR_2F_INSIDE_TM_DEFENSE_CURL
+	person_event SPRITE_POKE_BALL, 5, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideDragonScale, EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
+	person_event SPRITE_POKE_BALL, 11, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideElixer, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
+	person_event SPRITE_POKE_BALL, 5, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideEscapeRope, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
 	person_event SPRITE_SUPER_NERD, 26, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdHugh, -1
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const MOUNTMORTARB1F_POKE_BALL1
+	const MOUNTMORTARB1F_POKE_BALL2
+	const MOUNTMORTARB1F_BOULDER
+	const MOUNTMORTARB1F_BLACK_BELT
+	const MOUNTMORTARB1F_POKE_BALL3
+	const MOUNTMORTARB1F_POKE_BALL4
+	const MOUNTMORTARB1F_POKE_BALL5
+
 MountMortarB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,62 +16,62 @@
 
 BlackBeltScript_0x7e1f6:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TYROGUE_FROM_KIYO
 	iftrue UnknownScript_0x7e231
 	checkevent EVENT_BEAT_BLACKBELT_KIYO
 	iftrue UnknownScript_0x7e217
 	writetext UnknownText_0x7e24d
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x7e2a9, 0
 	loadtrainer BLACKBELT_T, KIYO
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_BLACKBELT_KIYO
-	loadfont
+	opentext
 UnknownScript_0x7e217:
 	writetext UnknownText_0x7e2c0
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	checkcode VAR_PARTYCOUNT
 	if_equal $6, UnknownScript_0x7e237
 	writetext UnknownText_0x7e355
 	playsound SFX_CAUGHT_MON
-	waitbutton
+	waitsfx
 	givepoke TYROGUE, 10
 	setevent EVENT_GOT_TYROGUE_FROM_KIYO
 UnknownScript_0x7e231:
 	writetext UnknownText_0x7e36a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7e237:
 	writetext UnknownText_0x7e3df
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MountMortarB1FBoulder:
 	jumpstd strengthboulder
 
-ItemFragment_0x7e240:
-	db HYPER_POTION, 1
+MountMortarB1FHyperPotion:
+	itemball HYPER_POTION
 
-ItemFragment_0x7e242:
-	db CARBOS, 1
+MountMortarB1FCarbos:
+	itemball CARBOS
 
-ItemFragment_0x7e244:
-	db FULL_RESTORE, 1
+MountMortarB1FFullRestore:
+	itemball FULL_RESTORE
 
-ItemFragment_0x7e246:
-	db MAX_ETHER, 1
+MountMortarB1FMaxEther:
+	itemball MAX_ETHER
 
-ItemFragment_0x7e248:
-	db PP_UP, 1
+MountMortarB1FPPUp:
+	itemball PP_UP
 
-MapMountMortarB1FSignpostItem0:
+MountMortarB1FHiddenMaxRevive:
 	dwb EVENT_MOUNT_MORTAR_B1F_HIDDEN_MAX_REVIVE, MAX_REVIVE
 	
 
@@ -140,14 +149,14 @@
 
 .Signposts:
 	db 1
-	signpost 6, 4, SIGNPOST_ITEM, MapMountMortarB1FSignpostItem0
+	signpost 6, 4, SIGNPOST_ITEM, MountMortarB1FHiddenMaxRevive
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 12, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e240, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
-	person_event SPRITE_POKE_BALL, 16, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e242, EVENT_MOUNT_MORTAR_B1F_CARBOS
+	person_event SPRITE_POKE_BALL, 12, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FHyperPotion, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 16, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FCarbos, EVENT_MOUNT_MORTAR_B1F_CARBOS
 	person_event SPRITE_BOULDER, 10, 9, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MountMortarB1FBoulder, -1
 	person_event SPRITE_BLACK_BELT, 4, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7e1f6, -1
-	person_event SPRITE_POKE_BALL, 24, 34, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e244, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e246, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
-	person_event SPRITE_POKE_BALL, 26, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7e248, EVENT_MOUNT_MORTAR_B1F_PP_UP
+	person_event SPRITE_POKE_BALL, 24, 34, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FFullRestore, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FMaxEther, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 26, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FPPUp, EVENT_MOUNT_MORTAR_B1F_PP_UP
--- a/maps/MoveDeletersHouse.asm
+++ b/maps/MoveDeletersHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const MOVEDELETERSHOUSE_SUPER_NERD
+
 MoveDeletersHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 MoveDeleter:
 	faceplayer
-	loadfont
+	opentext
 	special MoveDeletion
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MoveDeletersHouseBookshelf:
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const MRFUJISHOUSE_SUPER_NERD
+	const MRFUJISHOUSE_LASS
+	const MRFUJISHOUSE_RHYDON
+	const MRFUJISHOUSE_GROWLITHE
+	const MRFUJISHOUSE_MOLTRES
+
 MrFujisHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,27 +19,27 @@
 	jumptextfaceplayer UnknownText_0x7e940
 
 MrFujisPsyduck:
-	loadfont
+	opentext
 	writetext MrFujisPsyduckText
 	cry PSYDUCK
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MrFujisNidorino:
-	loadfont
+	opentext
 	writetext MrFujisNidorinoText
 	cry NIDORINO
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MrFujisPidgey:
-	loadfont
+	opentext
 	writetext MrFujisPidgeyText
 	cry PIDGEY
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MrFujisHouseBookshelf:
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const MRPOKEMONSHOUSE_GENTLEMAN
+	const MRPOKEMONSHOUSE_OAK
+
 MrPokemonsHouse_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -17,52 +21,52 @@
 	end
 
 UnknownScript_0x196e56:
-	showemote EMOTE_SHOCK, $2, 15
-	spriteface $2, DOWN
-	loadfont
+	showemote EMOTE_SHOCK, MRPOKEMONSHOUSE_GENTLEMAN, 15
+	spriteface MRPOKEMONSHOUSE_GENTLEMAN, DOWN
+	opentext
 	writetext UnknownText_0x196f66
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x196f5a
-	loadfont
+	opentext
 	writetext UnknownText_0x196fa8
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	giveitem MYSTERY_EGG
 	writetext UnknownText_0x196fd2
 	playsound SFX_KEY_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setevent EVENT_GOT_MYSTERY_EGG_FROM_MR_POKEMON
 	blackoutmod CHERRYGROVE_CITY
 	writetext UnknownText_0x196feb
-	keeptextopen
-	spriteface $2, RIGHT
+	buttonsound
+	spriteface MRPOKEMONSHOUSE_GENTLEMAN, RIGHT
 	writetext UnknownText_0x197092
-	keeptextopen
-	spriteface $2, DOWN
-	spriteface $3, LEFT
+	buttonsound
+	spriteface MRPOKEMONSHOUSE_GENTLEMAN, DOWN
+	spriteface MRPOKEMONSHOUSE_OAK, LEFT
 	writetext UnknownText_0x1970b7
+	waitbutton
 	closetext
-	loadmovesprites
 	jump UnknownScript_0x196ec9
 
 GentlemanScript_0x196e97:
 	faceplayer
-	loadfont
+	opentext
 	checkitem RED_SCALE
 	iftrue UnknownScript_0x196eb0
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iftrue UnknownScript_0x196eaa
 	writetext UnknownText_0x197134
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x196eaa:
 	writetext UnknownText_0x19714a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x196eb0:
@@ -76,38 +80,38 @@
 
 UnknownScript_0x196ec3:
 	writetext UnknownText_0x19750d
-	closetext
+	waitbutton
 UnknownScript_0x196ec7:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x196ec9:
 	playmusic MUSIC_PROF_OAK
-	applymovement $3, MovementData_0x196f5d
+	applymovement MRPOKEMONSHOUSE_OAK, MovementData_0x196f5d
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x197185
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	writetext UnknownText_0x1973cc
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	setflag ENGINE_POKEDEX
 	writetext UnknownText_0x1973de
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $3, MovementData_0x196f61
+	applymovement MRPOKEMONSHOUSE_OAK, MovementData_0x196f61
 	playsound SFX_EXIT_BUILDING
-	disappear $3
-	waitbutton
+	disappear MRPOKEMONSHOUSE_OAK
+	waitsfx
 	special RestartMapMusic
 	pause 15
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x1970ed
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
 	playmusic MUSIC_HEAL
@@ -116,10 +120,10 @@
 	pause 60
 	special Special_FadeInQuickly
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext UnknownText_0x197134
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RIVAL_NEW_BARK_TOWN
 	setevent EVENT_KRISS_HOUSE_1F_NEIGHBOR
 	clearevent EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const MRPSYCHICSHOUSE_FISHING_GURU
+
 MrPsychicsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,19 +10,19 @@
 
 MrPsychic:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM29_PSYCHIC
 	iftrue .AlreadyGotItem
 	writetext MrPsychicText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_PSYCHIC
 	iffalse .Done
 	setevent EVENT_GOT_TM29_PSYCHIC
 .AlreadyGotItem
 	writetext MrPsychicText2
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 MrPsychicsHouseBookshelf:
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -1,3 +1,19 @@
+const_value set 2
+	const NATIONALPARK_LASS1
+	const NATIONALPARK_POKEFAN_F1
+	const NATIONALPARK_TEACHER1
+	const NATIONALPARK_YOUNGSTER1
+	const NATIONALPARK_YOUNGSTER2
+	const NATIONALPARK_TEACHER2
+	const NATIONALPARK_GROWLITHE
+	const NATIONALPARK_YOUNGSTER3
+	const NATIONALPARK_POKEFAN_F2
+	const NATIONALPARK_POKEFAN_M
+	const NATIONALPARK_LASS2
+	const NATIONALPARK_POKE_BALL1
+	const NATIONALPARK_GAMEBOY_KID
+	const NATIONALPARK_POKE_BALL2
+
 NationalPark_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,19 +29,19 @@
 
 TeacherScript_0x5c008:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_QUICK_CLAW
 	iftrue UnknownScript_0x5c01d
 	writetext UnknownText_0x5c265
-	keeptextopen
+	buttonsound
 	verbosegiveitem QUICK_CLAW
 	iffalse UnknownScript_0x5c021
 	setevent EVENT_GOT_QUICK_CLAW
 UnknownScript_0x5c01d:
 	writetext UnknownText_0x5c30d
-	closetext
+	waitbutton
 UnknownScript_0x5c021:
-	loadmovesprites
+	closetext
 	end
 
 YoungsterScript_0x5c023:
@@ -39,20 +55,20 @@
 
 GrowlitheScript_0x5c02c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c416
 	cry PERSIAN
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GameboyKidScript_0x5c037:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c42a
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $e, DOWN
+	spriteface NATIONALPARK_GAMEBOY_KID, DOWN
 	end
 
 TrainerSchoolboyJack1:
@@ -60,8 +76,8 @@
 
 SchoolboyJack1Script:
 	writecode VAR_CALLERID, PHONE_SCHOOLBOY_JACK
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0x5c088
 	checkcellnum PHONE_SCHOOLBOY_JACK
@@ -69,7 +85,7 @@
 	checkevent EVENT_JACK_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5c071
 	writetext UnknownText_0x5c4f3
-	keeptextopen
+	buttonsound
 	setevent EVENT_JACK_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x5c0fc
 	jump UnknownScript_0x5c074
@@ -108,7 +124,7 @@
 .LoadFight0
 	loadtrainer SCHOOLBOY, JACK1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJackFightCount, 1
 	clearflag ENGINE_JACK
 	end
@@ -116,7 +132,7 @@
 .LoadFight1
 	loadtrainer SCHOOLBOY, JACK2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJackFightCount, 2
 	clearflag ENGINE_JACK
 	end
@@ -124,7 +140,7 @@
 .LoadFight2
 	loadtrainer SCHOOLBOY, JACK3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJackFightCount, 3
 	clearflag ENGINE_JACK
 	end
@@ -132,7 +148,7 @@
 .LoadFight3
 	loadtrainer SCHOOLBOY, JACK4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJackFightCount, 4
 	clearflag ENGINE_JACK
 	end
@@ -140,7 +156,7 @@
 .LoadFight4
 	loadtrainer SCHOOLBOY, JACK5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_JACK
 	end
 
@@ -176,11 +192,11 @@
 	trainer EVENT_BEAT_POKEFANM_WILLIAM, POKEFANM, WILLIAM, PokefanmWilliamSeenText, PokefanmWilliamBeatenText, 0, PokefanmWilliamScript
 
 PokefanmWilliamScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5c645
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanfBeverly1:
@@ -188,8 +204,8 @@
 
 PokefanfBeverly1Script:
 	writecode VAR_CALLERID, PHONE_POKEFAN_BEVERLY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0x5c177
 	checkcellnum PHONE_POKEFAN_BEVERLY
@@ -199,7 +215,7 @@
 	checkevent EVENT_BEVERLY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5c160
 	writetext UnknownText_0x5c5bd
-	keeptextopen
+	buttonsound
 	setevent EVENT_BEVERLY_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x5c18f
 	jump UnknownScript_0x5c163
@@ -226,8 +242,8 @@
 
 UnknownScript_0x5c189:
 	writetext UnknownText_0x5c68a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5c18f:
@@ -266,11 +282,11 @@
 	trainer EVENT_BEAT_LASS_KRISE, LASS, KRISE, LassKriseSeenText, LassKriseBeatenText, 0, LassKriseScript
 
 LassKriseScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5c71d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapNationalParkSignpost0Script:
@@ -282,13 +298,13 @@
 MapNationalParkSignpost3Script:
 	jumptext UnknownText_0x5c7c6
 
-ItemFragment_0x5c1cc:
-	db PARLYZ_HEAL, 1
+NationalParkParlyzHeal:
+	itemball PARLYZ_HEAL
 
-ItemFragment_0x5c1ce:
-	db TM_DIG, 1
+NationalParkTMDig:
+	itemball TM_DIG
 
-MapNationalParkSignpostItem2:
+NationalParkHiddenFullHeal:
 	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
@@ -516,7 +532,7 @@
 	db 4
 	signpost 44, 14, SIGNPOST_READ, MapNationalParkSignpost0Script
 	signpost 31, 27, SIGNPOST_READ, MapNationalParkSignpost1Script
-	signpost 47, 6, SIGNPOST_ITEM, MapNationalParkSignpostItem2
+	signpost 47, 6, SIGNPOST_ITEM, NationalParkHiddenFullHeal
 	signpost 4, 12, SIGNPOST_READ, MapNationalParkSignpost3Script
 
 .PersonEvents:
@@ -532,6 +548,6 @@
 	person_event SPRITE_POKEFAN_F, 29, 18, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanfBeverly1, -1
 	person_event SPRITE_POKEFAN_M, 9, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanmWilliam, -1
 	person_event SPRITE_LASS, 14, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassKrise, -1
-	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5c1cc, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkParlyzHeal, EVENT_NATIONAL_PARK_PARLYZ_HEAL
 	person_event SPRITE_GAMEBOY_KID, 6, 26, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x5c037, -1
-	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5c1ce, EVENT_NATIONAL_PARK_TM_DIG
+	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkTMDig, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -1,3 +1,17 @@
+const_value set 2
+	const NATIONALPARKBUGCONTEST_YOUNGSTER1
+	const NATIONALPARKBUGCONTEST_YOUNGSTER2
+	const NATIONALPARKBUGCONTEST_ROCKER
+	const NATIONALPARKBUGCONTEST_POKEFAN_M
+	const NATIONALPARKBUGCONTEST_YOUNGSTER3
+	const NATIONALPARKBUGCONTEST_YOUNGSTER4
+	const NATIONALPARKBUGCONTEST_LASS
+	const NATIONALPARKBUGCONTEST_YOUNGSTER5
+	const NATIONALPARKBUGCONTEST_YOUNGSTER6
+	const NATIONALPARKBUGCONTEST_YOUNGSTER7
+	const NATIONALPARKBUGCONTEST_POKE_BALL1
+	const NATIONALPARKBUGCONTEST_POKE_BALL2
+
 NationalParkBugContest_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,82 +21,82 @@
 
 YoungsterScript_0x5c8ec:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c94c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c8f4:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c973
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RockerScript_0x5c8fc:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c9a3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x5c904:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5c9cc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c90c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5ca15
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c914:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5ca52
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x5c91c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5ca8f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c924:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5cac8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c92c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5cb25
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5c934:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5cb64
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapNationalParkBugContestSignpost0Script:
@@ -94,13 +108,13 @@
 MapNationalParkBugContestSignpost3Script:
 	jumptext UnknownText_0x5cc1d
 
-ItemFragment_0x5c945:
-	db PARLYZ_HEAL, 1
+NationalParkBugContestParlyzHeal:
+	itemball PARLYZ_HEAL
 
-ItemFragment_0x5c947:
-	db TM_DIG, 1
+NationalParkBugContestTMDig:
+	itemball TM_DIG
 
-MapNationalParkBugContestSignpostItem2:
+NationalParkBugContestHiddenFullHeal:
 	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
@@ -225,7 +239,7 @@
 	db 4
 	signpost 44, 14, SIGNPOST_READ, MapNationalParkBugContestSignpost0Script
 	signpost 31, 27, SIGNPOST_READ, MapNationalParkBugContestSignpost1Script
-	signpost 47, 6, SIGNPOST_ITEM, MapNationalParkBugContestSignpostItem2
+	signpost 47, 6, SIGNPOST_ITEM, NationalParkBugContestHiddenFullHeal
 	signpost 4, 12, SIGNPOST_READ, MapNationalParkBugContestSignpost3Script
 
 .PersonEvents:
@@ -240,5 +254,5 @@
 	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
 	person_event SPRITE_YOUNGSTER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
 	person_event SPRITE_YOUNGSTER, 34, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
-	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5c945, EVENT_NATIONAL_PARK_PARLYZ_HEAL
-	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5c947, EVENT_NATIONAL_PARK_TM_DIG
+	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkBugContestParlyzHeal, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkBugContestTMDig, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -1,10 +1,15 @@
+const_value set 2
+	const NEWBARKTOWN_TEACHER
+	const NEWBARKTOWN_FISHER
+	const NEWBARKTOWN_SILVER
+
 NewBarkTown_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +17,10 @@
 	; callbacks
 	dbw 5, .FlyPoint
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPoint
@@ -23,122 +28,122 @@
 	clearevent EVENT_FIRST_TIME_BANKING_WITH_MOM
 	return
 
-UnknownScript_0x1a8016:
+NewBarkTown_TeacherStopsYouTrigger1:
 	playmusic MUSIC_MOM
-	spriteface $2, LEFT
-	loadfont
-	writetext UnknownText_0x1a8134
+	spriteface NEWBARKTOWN_TEACHER, LEFT
+	opentext
+	writetext Text_WaitPlayer
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, RIGHT
-	applymovement $2, MovementData_0x1a80d4
-	loadfont
-	writetext UnknownText_0x1a813e
+	applymovement NEWBARKTOWN_TEACHER, Movement_TeacherRunsToYou1_NBT
+	opentext
+	writetext Text_WhatDoYouThinkYoureDoing
+	waitbutton
 	closetext
-	loadmovesprites
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x1a80e0
+	follow NEWBARKTOWN_TEACHER, PLAYER
+	applymovement NEWBARKTOWN_TEACHER, Movement_TeacherBringsYouBack1_NBT
 	stopfollow
-	loadfont
-	writetext UnknownText_0x1a815e
+	opentext
+	writetext Text_ItsDangerousToGoAlone
+	waitbutton
 	closetext
-	loadmovesprites
 	special RestartMapMusic
 	end
 
-UnknownScript_0x1a8041:
+NewBarkTown_TeacherStopsYouTrigger2:
 	playmusic MUSIC_MOM
-	spriteface $2, LEFT
-	loadfont
-	writetext UnknownText_0x1a8134
+	spriteface NEWBARKTOWN_TEACHER, LEFT
+	opentext
+	writetext Text_WaitPlayer
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, RIGHT
-	applymovement $2, MovementData_0x1a80d9
+	applymovement NEWBARKTOWN_TEACHER, Movement_TeacherRunsToYou2_NBT
 	spriteface PLAYER, UP
-	loadfont
-	writetext UnknownText_0x1a813e
+	opentext
+	writetext Text_WhatDoYouThinkYoureDoing
+	waitbutton
 	closetext
-	loadmovesprites
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x1a80e6
+	follow NEWBARKTOWN_TEACHER, PLAYER
+	applymovement NEWBARKTOWN_TEACHER, Movement_TeacherBringsYouBack2_NBT
 	stopfollow
-	loadfont
-	writetext UnknownText_0x1a815e
+	opentext
+	writetext Text_ItsDangerousToGoAlone
+	waitbutton
 	closetext
-	loadmovesprites
 	special RestartMapMusic
 	end
 
-TeacherScript_0x1a806f:
+NewBarkTownTeacherScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
-	iftrue UnknownScript_0x1a8095
+	iftrue .CallMom
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iftrue UnknownScript_0x1a808f
+	iftrue .TellMomYoureLeaving
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
-	iftrue UnknownScript_0x1a8089
-	writetext UnknownText_0x1a80f7
+	iftrue .MonIsAdorable
+	writetext Text_GearIsImpressive
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a8089:
-	writetext UnknownText_0x1a81c4
+.MonIsAdorable:
+	writetext Text_YourMonIsAdorable
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a808f:
-	writetext UnknownText_0x1a81f2
+.TellMomYoureLeaving:
+	writetext Text_TellMomIfLeaving
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a8095:
-	writetext UnknownText_0x1a8236
+.CallMom:
+	writetext Text_CallMomOnGear
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-FisherScript_0x1a809b:
-	jumptextfaceplayer UnknownText_0x1a8274
+NewBarkTownFisherScript:
+	jumptextfaceplayer Text_ElmDiscoveredNewMon
 
-SilverScript_0x1a809e:
-	loadfont
-	writetext UnknownText_0x1a82a6
+NewBarkTownSilverScript:
+	opentext
+	writetext NewBarkTownRivalText1
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, LEFT
-	loadfont
-	writetext UnknownText_0x1a82cd
+	spriteface NEWBARKTOWN_SILVER, LEFT
+	opentext
+	writetext NewBarkTownRivalText2
+	waitbutton
 	closetext
-	loadmovesprites
-	follow PLAYER, $4
-	applymovement PLAYER, MovementData_0x1a80ed
+	follow PLAYER, NEWBARKTOWN_SILVER
+	applymovement PLAYER, Movement_SilverPushesYouAway_NBT
 	stopfollow
 	pause 5
-	spriteface $4, DOWN
+	spriteface NEWBARKTOWN_SILVER, DOWN
 	pause 5
 	playsound SFX_TACKLE
-	applymovement PLAYER, MovementData_0x1a80f0
-	applymovement $4, MovementData_0x1a80f5
+	applymovement PLAYER, Movement_SilverShovesYouOut_NBT
+	applymovement NEWBARKTOWN_SILVER, Movement_SilverReturnsToTheShadows_NBT
 	end
 
 MapNewBarkTownSignpost0Script:
-	jumptext UnknownText_0x1a82e8
+	jumptext NewBarkTownSignText
 
 MapNewBarkTownSignpost1Script:
-	jumptext UnknownText_0x1a8328
+	jumptext PlayersHouseSignText
 
 MapNewBarkTownSignpost2Script:
-	jumptext UnknownText_0x1a8332
+	jumptext ElmsLabSignText
 
 MapNewBarkTownSignpost3Script:
-	jumptext UnknownText_0x1a8340
+	jumptext ElmsHouseSignText
 
-MovementData_0x1a80d4:
+Movement_TeacherRunsToYou1_NBT:
 	step_left
 	step_left
 	step_left
@@ -145,7 +150,7 @@
 	step_left
 	step_end
 
-MovementData_0x1a80d9:
+Movement_TeacherRunsToYou2_NBT:
 	step_left
 	step_left
 	step_left
@@ -154,7 +159,7 @@
 	turn_head_down
 	step_end
 
-MovementData_0x1a80e0:
+Movement_TeacherBringsYouBack1_NBT:
 	step_right
 	step_right
 	step_right
@@ -162,7 +167,7 @@
 	turn_head_left
 	step_end
 
-MovementData_0x1a80e6:
+Movement_TeacherBringsYouBack2_NBT:
 	step_right
 	step_right
 	step_right
@@ -171,12 +176,12 @@
 	turn_head_left
 	step_end
 
-MovementData_0x1a80ed:
+Movement_SilverPushesYouAway_NBT:
 	turn_head_up
 	step_down
 	step_end
 
-MovementData_0x1a80f0:
+Movement_SilverShovesYouOut_NBT:
 	turn_head_up
 	fix_facing
 	jump_step_down
@@ -183,11 +188,11 @@
 	remove_fixed_facing
 	step_end
 
-MovementData_0x1a80f5:
+Movement_SilverReturnsToTheShadows_NBT:
 	step_right
 	step_end
 
-UnknownText_0x1a80f7:
+Text_GearIsImpressive:
 	text "Wow, your #GEAR"
 	line "is impressive!"
 
@@ -195,16 +200,16 @@
 	line "it for you?"
 	done
 
-UnknownText_0x1a8134:
+Text_WaitPlayer:
 	text "Wait, <PLAY_G>!"
 	done
 
-UnknownText_0x1a813e:
+Text_WhatDoYouThinkYoureDoing:
 	text "What do you think"
 	line "you're doing?"
 	done
 
-UnknownText_0x1a815e:
+Text_ItsDangerousToGoAlone:
 	text "It's dangerous to"
 	line "go out without a"
 	cont "#MON!"
@@ -216,13 +221,13 @@
 	line "to the next town."
 	done
 
-UnknownText_0x1a81c4:
+Text_YourMonIsAdorable:
 	text "Oh! Your #MON"
 	line "is adorable!"
 	cont "I wish I had one!"
 	done
 
-UnknownText_0x1a81f2:
+Text_TellMomIfLeaving:
 	text "Hi, <PLAY_G>!"
 	line "Leaving again?"
 
@@ -231,7 +236,7 @@
 	cont "are leaving."
 	done
 
-UnknownText_0x1a8236:
+Text_CallMomOnGear:
 	text "Call your mom on"
 	line "your #GEAR to"
 
@@ -239,7 +244,7 @@
 	line "you're doing."
 	done
 
-UnknownText_0x1a8274:
+Text_ElmDiscoveredNewMon:
 	text "Yo, <PLAYER>!"
 
 	para "I hear PROF.ELM"
@@ -247,8 +252,8 @@
 	cont "new #MON."
 	done
 
-UnknownText_0x1a82a6:
-	text $56
+NewBarkTownRivalText1:
+	text "<......>"
 
 	para "So this is the"
 	line "famous ELM #MON"
@@ -255,12 +260,12 @@
 	cont "LAB…"
 	done
 
-UnknownText_0x1a82cd:
+NewBarkTownRivalText2:
 	text "…What are you"
 	line "staring at?"
 	done
 
-UnknownText_0x1a82e8:
+NewBarkTownSignText:
 	text "NEW BARK TOWN"
 
 	para "The Town Where the"
@@ -268,15 +273,15 @@
 	cont "Beginning Blow"
 	done
 
-UnknownText_0x1a8328:
+PlayersHouseSignText:
 	text "<PLAYER>'s House"
 	done
 
-UnknownText_0x1a8332:
+ElmsLabSignText:
 	text "ELM #MON LAB"
 	done
 
-UnknownText_0x1a8340:
+ElmsHouseSignText:
 	text "ELM'S HOUSE"
 	done
 
@@ -293,8 +298,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $1, $0, UnknownScript_0x1a8016, $0, $0
-	xy_trigger 0, $9, $1, $0, UnknownScript_0x1a8041, $0, $0
+	xy_trigger 0, $8, $1, $0, NewBarkTown_TeacherStopsYouTrigger1, $0, $0
+	xy_trigger 0, $9, $1, $0, NewBarkTown_TeacherStopsYouTrigger2, $0, $0
 
 .Signposts:
 	db 4
@@ -305,6 +310,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a806f, -1
-	person_event SPRITE_FISHER, 9, 12, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a809b, -1
-	person_event SPRITE_SILVER, 2, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SilverScript_0x1a809e, EVENT_RIVAL_NEW_BARK_TOWN
+	person_event SPRITE_TEACHER, 8, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NewBarkTownTeacherScript, -1
+	person_event SPRITE_FISHER, 9, 12, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, NewBarkTownFisherScript, -1
+	person_event SPRITE_SILVER, 2, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NewBarkTownSilverScript, EVENT_RIVAL_NEW_BARK_TOWN
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const OAKSLAB_OAK
+	const OAKSLAB_SCIENTIST1
+	const OAKSLAB_SCIENTIST2
+	const OAKSLAB_SCIENTIST3
+
 OaksLab_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,58 +11,58 @@
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x19b3c7:
+.DummyTrigger:
 	end
 
 Oak:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_OPENED_MT_SILVER
 	iftrue .CheckPokedex
 	checkevent EVENT_TALKED_TO_OAK_IN_KANTO
 	iftrue .CheckBadges
 	writetext OakWelcomeKantoText
-	keeptextopen
+	buttonsound
 	setevent EVENT_TALKED_TO_OAK_IN_KANTO
 .CheckBadges
 	checkcode VAR_BADGES
 	if_equal 16, .OpenMtSilver
-	if_equal 8, .Complain
+	if_equal  8, .Complain
 	jump .AhGood
 
 .CheckPokedex
 	writetext OakLabDexCheckText
-	closetext
+	waitbutton
 	special ProfOaksPCBoot
 	writetext OakLabGoodbyeText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .OpenMtSilver
 	writetext OakOpenMtSilverText
-	keeptextopen
+	buttonsound
 	setevent EVENT_OPENED_MT_SILVER
 	jump .CheckPokedex
 
 .Complain
 	writetext OakNoKantoBadgesText
-	keeptextopen
+	buttonsound
 	jump .CheckPokedex
 
 .AhGood
 	writetext OakYesKantoBadgesText
-	keeptextopen
+	buttonsound
 	jump .CheckPokedex
 
-ScientistScript_0x19b40f:
-	jumptextfaceplayer UnknownText_0x19b7fb
+OaksAssistant1Script:
+	jumptextfaceplayer OaksAssistant1Text
 
-ScientistScript_0x19b412:
-	jumptextfaceplayer UnknownText_0x19b859
+OaksAssistant2Script:
+	jumptextfaceplayer OaksAssistant2Text
 
-ScientistScript_0x19b415:
-	jumptextfaceplayer UnknownText_0x19b8a7
+OaksAssistant3Script:
+	jumptextfaceplayer OaksAssistant3Text
 
 OaksLabBookshelf:
 	jumpstd difficultbookshelf
@@ -178,7 +184,7 @@
 	line "<PLAY_G>!"
 	done
 
-UnknownText_0x19b7fb:
+OaksAssistant1Text:
 	text "The PROF's #MON"
 	line "TALK radio program"
 
@@ -189,7 +195,7 @@
 	line "like to hear it."
 	done
 
-UnknownText_0x19b859:
+OaksAssistant2Text:
 	text "Thanks to your"
 	line "work on the #-"
 	cont "DEX, the PROF's"
@@ -198,7 +204,7 @@
 	line "along great."
 	done
 
-UnknownText_0x19b8a7:
+OaksAssistant3Text:
 	text "Don't tell anyone,"
 	line "but PROF.OAK'S"
 
@@ -284,6 +290,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_OAK, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Oak, -1
-	person_event SPRITE_SCIENTIST, 8, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x19b40f, -1
-	person_event SPRITE_SCIENTIST, 9, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x19b412, -1
-	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x19b415, -1
+	person_event SPRITE_SCIENTIST, 8, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant1Script, -1
+	person_event SPRITE_SCIENTIST, 9, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant2Script, -1
+	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant3Script, -1
--- a/maps/OlivineCafe.asm
+++ b/maps/OlivineCafe.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const OLIVINECAFE_SAILOR1
+	const OLIVINECAFE_FISHING_GURU
+	const OLIVINECAFE_SAILOR2
+
 OlivineCafe_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,17 +12,17 @@
 
 SailorScript_0x9c8c1:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HM04_STRENGTH
 	iftrue UnknownScript_0x9c8d3
 	writetext UnknownText_0x9c8df
-	keeptextopen
+	buttonsound
 	verbosegiveitem HM_STRENGTH
 	setevent EVENT_GOT_HM04_STRENGTH
 UnknownScript_0x9c8d3:
 	writetext UnknownText_0x9c965
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FishingGuruScript_0x9c8d9:
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -1,10 +1,16 @@
+const_value set 2
+	const OLIVINECITY_SAILOR1
+	const OLIVINECITY_STANDING_YOUNGSTER
+	const OLIVINECITY_SAILOR2
+	const OLIVINECITY_OLIVINE_RIVAL
+
 OlivineCity_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +18,10 @@
 	; callbacks
 	dbw 5, .FlyPoint
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	end
 
 .FlyPoint
@@ -25,22 +31,22 @@
 UnknownScript_0x1a8833:
 	spriteface PLAYER, LEFT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
 	playsound SFX_ENTER_DOOR
-	appear $5
-	waitbutton
-	applymovement $5, MovementData_0x1a88d2
+	appear OLIVINECITY_OLIVINE_RIVAL
+	waitsfx
+	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88d2
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1a88fa
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x1a88f4
 	spriteface PLAYER, RIGHT
-	applymovement $5, MovementData_0x1a88db
+	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88db
 	dotrigger $1
-	disappear $5
+	disappear OLIVINECITY_OLIVINE_RIVAL
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
 	special RunCallback_04
@@ -49,21 +55,21 @@
 UnknownScript_0x1a886b:
 	spriteface PLAYER, LEFT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
 	playsound SFX_ENTER_DOOR
-	appear $5
-	waitbutton
-	applymovement $5, MovementData_0x1a88d6
+	appear OLIVINECITY_OLIVINE_RIVAL
+	waitsfx
+	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88d6
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1a88fa
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x1a88f7
 	spriteface PLAYER, RIGHT
-	applymovement $5, MovementData_0x1a88e8
-	disappear $5
+	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88e8
+	disappear OLIVINECITY_OLIVINE_RIVAL
 	dotrigger $1
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
@@ -75,18 +81,18 @@
 
 StandingYoungsterScript_0x1a88a6:
 	faceplayer
-	loadfont
+	opentext
 	random $2
 	if_equal $0, UnknownScript_0x1a88b4
 	writetext UnknownText_0x1a8b04
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a88b4:
 	writetext UnknownText_0x1a8b41
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorScript_0x1a88ba:
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const OLIVINEGOODRODHOUSE_FISHING_GURU
+
 OlivineGoodRodHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +10,7 @@
 
 GoodRodGuru:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_GOOD_ROD
 	iftrue .AlreadyGotItem
 	writetext OfferGoodRodText
@@ -14,24 +17,24 @@
 	yesorno
 	iffalse .DontWantIt
 	writetext GiveGoodRodText
-	keeptextopen
+	buttonsound
 	verbosegiveitem GOOD_ROD
 	writetext GaveGoodRodText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_GOOD_ROD
 	end
 
 .DontWantIt
 	writetext DontWantGoodRodText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AlreadyGotItem
 	writetext HaveGoodRodText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GoodRodHouseBookshelf:
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINEGYM_JASMINE
+	const OLIVINEGYM_GYM_GUY
+
 OlivineGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,21 +11,21 @@
 
 JasmineScript_0x9c12f:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_JASMINE
 	iftrue .FightDone
 	writetext UnknownText_0x9c1b9
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x9c2bb, 0
 	loadtrainer JASMINE, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_JASMINE
-	loadfont
+	opentext
 	writetext UnknownText_0x9c33a
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_MINERALBADGE
 	checkcode VAR_BADGES
 	scall OlivineGymTriggerRockets
@@ -29,20 +33,20 @@
 	checkevent EVENT_GOT_TM23_IRON_TAIL
 	iftrue UnknownScript_0x9c172
 	writetext UnknownText_0x9c354
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_IRON_TAIL
 	iffalse UnknownScript_0x9c176
 	setevent EVENT_GOT_TM23_IRON_TAIL
 	writetext UnknownText_0x9c3a5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9c172:
 	writetext UnknownText_0x9c3d1
-	closetext
+	waitbutton
 UnknownScript_0x9c176:
-	loadmovesprites
+	closetext
 	end
 
 OlivineGymTriggerRockets:
@@ -62,24 +66,24 @@
 	iftrue .OlivineGymGuyWinScript
 	checkevent EVENT_JASMINE_RETURNED_TO_GYM
 	iffalse .OlivineGymGuyPreScript
-	loadfont
+	opentext
 	writetext OlivineGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .OlivineGymGuyWinScript
-	loadfont
+	opentext
 	writetext OlivineGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .OlivineGymGuyPreScript
-	loadfont
+	opentext
 	writetext OlivineGymGuyPreText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 OlivineGymStatue:
--- a/maps/OlivineHouseBeta.asm
+++ b/maps/OlivineHouseBeta.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINEHOUSEBETA_TEACHER
+	const OLIVINEHOUSEBETA_RHYDON
+
 OlivineHouseBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	jumptextfaceplayer UnknownText_0x9c5a2
 
 RhydonScript_0x9c592:
-	loadfont
+	opentext
 	writetext UnknownText_0x9c5f0
 	cry RHYDON
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 OlivineHouseBetaBookshelf1:
--- a/maps/OlivineLighthouse1F.asm
+++ b/maps/OlivineLighthouse1F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE1F_SAILOR
+	const OLIVINELIGHTHOUSE1F_POKEFAN_F
+
 OlivineLighthouse1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE2F_SAILOR
+	const OLIVINELIGHTHOUSE2F_GENTLEMAN
+
 OlivineLighthouse2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	trainer EVENT_BEAT_GENTLEMAN_ALFRED, GENTLEMAN, ALFRED, GentlemanAlfredSeenText, GentlemanAlfredBeatenText, 0, GentlemanAlfredScript
 
 GentlemanAlfredScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b13e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorHuey1:
@@ -21,8 +25,8 @@
 
 SailorHuey1Script:
 	writecode VAR_CALLERID, PHONE_SAILOR_HUEY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0x5afc7
 	checkcellnum PHONE_SAILOR_HUEY
@@ -63,7 +67,7 @@
 .LoadFight0
 	loadtrainer SAILOR, HUEY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wHueyFightCount, 1
 	clearflag ENGINE_HUEY
 	end
@@ -71,7 +75,7 @@
 .LoadFight1
 	loadtrainer SAILOR, HUEY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wHueyFightCount, 2
 	clearflag ENGINE_HUEY
 	end
@@ -79,7 +83,7 @@
 .LoadFight2
 	loadtrainer SAILOR, HUEY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wHueyFightCount, 3
 	clearflag ENGINE_HUEY
 	end
@@ -87,7 +91,7 @@
 .LoadFight3
 	loadtrainer SAILOR, HUEY4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_HUEY
 	checkevent EVENT_HUEY_PROTEIN
 	iftrue UnknownScript_0x5b03f
@@ -103,9 +107,9 @@
 	end
 
 UnknownScript_0x5b03f:
-	loadfont
+	opentext
 	writetext UnknownText_0x5b1b6
-	closetext
+	waitbutton
 	verbosegiveitem PROTEIN
 	iffalse UnknownScript_0x5b06f
 	clearevent EVENT_HUEY_PROTEIN
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE3F_SAILOR
+	const OLIVINELIGHTHOUSE3F_GENTLEMAN
+	const OLIVINELIGHTHOUSE3F_YOUNGSTER
+	const OLIVINELIGHTHOUSE3F_POKE_BALL
+
 OlivineLighthouse3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +15,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_THEO, BIRD_KEEPER, THEO, Bird_keeperTheoSeenText, Bird_keeperTheoBeatenText, 0, Bird_keeperTheoScript
 
 Bird_keeperTheoScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b2df
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGentlemanPreston:
@@ -20,11 +26,11 @@
 	trainer EVENT_BEAT_GENTLEMAN_PRESTON, GENTLEMAN, PRESTON, GentlemanPrestonSeenText, GentlemanPrestonBeatenText, 0, GentlemanPrestonScript
 
 GentlemanPrestonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b457
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorTerrell:
@@ -31,15 +37,15 @@
 	trainer EVENT_BEAT_SAILOR_TERRELL, SAILOR, TERRELL, SailorTerrellSeenText, SailorTerrellBeatenText, 0, SailorTerrellScript
 
 SailorTerrellScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b384
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x5b279:
-	db ETHER, 1
+OlivineLighthouse3FEther:
+	itemball ETHER
 
 Bird_keeperTheoSeenText:
 	text "Why are you here?"
@@ -133,4 +139,4 @@
 	person_event SPRITE_SAILOR, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSailorTerrell, -1
 	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerGentlemanPreston, -1
 	person_event SPRITE_YOUNGSTER, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperTheo, -1
-	person_event SPRITE_POKE_BALL, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5b279, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
+	person_event SPRITE_POKE_BALL, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse3FEther, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE4F_SAILOR
+	const OLIVINELIGHTHOUSE4F_LASS
+
 OlivineLighthouse4F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	trainer EVENT_BEAT_LASS_CONNIE, LASS, CONNIE1, LassConnie1SeenText, LassConnie1BeatenText, 0, LassConnie1Script
 
 LassConnie1Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b63c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorKent:
@@ -20,11 +24,11 @@
 	trainer EVENT_BEAT_SAILOR_KENT, SAILOR, KENT, SailorKentSeenText, SailorKentBeatenText, 0, SailorKentScript
 
 SailorKentScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5b584
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorKentSeenText:
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE5F_SAILOR
+	const OLIVINELIGHTHOUSE5F_YOUNGSTER
+	const OLIVINELIGHTHOUSE5F_POKE_BALL1
+	const OLIVINELIGHTHOUSE5F_POKE_BALL2
+	const OLIVINELIGHTHOUSE5F_POKE_BALL3
+
 OlivineLighthouse5F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +16,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_DENIS, BIRD_KEEPER, DENIS, Bird_keeperDenisSeenText, Bird_keeperDenisBeatenText, 0, Bird_keeperDenisScript
 
 Bird_keeperDenisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x60ac3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorErnest:
@@ -20,23 +27,23 @@
 	trainer EVENT_BEAT_SAILOR_ERNEST, SAILOR, ERNEST, SailorErnestSeenText, SailorErnestBeatenText, 0, SailorErnestScript
 
 SailorErnestScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x60a1f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x609aa:
-	db RARE_CANDY, 1
+OlivineLighthouse5FRareCandy:
+	itemball RARE_CANDY
 
-ItemFragment_0x609ac:
-	db SUPER_REPEL, 1
+OlivineLighthouse5FSuperRepel:
+	itemball SUPER_REPEL
 
-ItemFragment_0x609ae:
-	db TM_SWAGGER, 1
+OlivineLighthouse5FTMSwagger:
+	itemball TM_SWAGGER
 
-MapOlivineLighthouse5FSignpostItem0:
+OlivineLighthouse5FHiddenHyperPotion:
 	dwb EVENT_OLIVINE_LIGHTHOUSE_5F_HIDDEN_HYPER_POTION, HYPER_POTION
 	
 
@@ -103,12 +110,12 @@
 
 .Signposts:
 	db 1
-	signpost 13, 3, SIGNPOST_ITEM, MapOlivineLighthouse5FSignpostItem0
+	signpost 13, 3, SIGNPOST_ITEM, OlivineLighthouse5FHiddenHyperPotion
 
 .PersonEvents:
 	db 5
 	person_event SPRITE_SAILOR, 11, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorErnest, -1
 	person_event SPRITE_YOUNGSTER, 3, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerBird_keeperDenis, -1
-	person_event SPRITE_POKE_BALL, 12, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x609aa, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
-	person_event SPRITE_POKE_BALL, 15, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x609ac, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
-	person_event SPRITE_POKE_BALL, 13, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x609ae, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
+	person_event SPRITE_POKE_BALL, 12, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FRareCandy, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 15, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FSuperRepel, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
+	person_event SPRITE_POKE_BALL, 13, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FTMSwagger, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const OLIVINELIGHTHOUSE6F_JASMINE
+	const OLIVINELIGHTHOUSE6F_MONSTER
+	const OLIVINELIGHTHOUSE6F_POKE_BALL
+
 OlivineLighthouse6F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,18 +12,18 @@
 
 JasmineScript_0x60b91:
 	faceplayer
-	loadfont
+	opentext
 	checkitem SECRETPOTION
 	iftrue UnknownScript_0x60bab
 	checkevent EVENT_JASMINE_EXPLAINED_AMPHYS_SICKNESS
 	iftrue UnknownScript_0x60ba5
 	writetext UnknownText_0x60c81
-	keeptextopen
+	buttonsound
 	setevent EVENT_JASMINE_EXPLAINED_AMPHYS_SICKNESS
 UnknownScript_0x60ba5:
 	writetext UnknownText_0x60d64
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x60bab:
@@ -26,72 +31,72 @@
 	yesorno
 	iffalse UnknownScript_0x60c25
 	writetext UnknownText_0x60dc3
-	keeptextopen
+	buttonsound
 	takeitem SECRETPOTION
 	writetext UnknownText_0x60dea
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, RIGHT
+	spriteface OLIVINELIGHTHOUSE6F_JASMINE, RIGHT
 	pause 15
-	spriteface $3, LEFT
-	loadfont
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, LEFT
+	opentext
 	playmusic MUSIC_HEAL
 	writetext UnknownText_0x60e44
 	pause 60
-	keeptextopen
-	loadmovesprites
+	buttonsound
+	closetext
 	special RestartMapMusic
 	cry AMPHAROS
 	special FadeOutPalettes
 	pause 10
 	special FadeInPalettes
-	loadfont
+	opentext
 	writetext UnknownText_0x60f3d
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, RIGHT
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, RIGHT
 	pause 10
-	spriteface $3, LEFT
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, LEFT
 	pause 10
-	spriteface $3, RIGHT
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, RIGHT
 	pause 10
-	spriteface $3, LEFT
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, LEFT
 	pause 10
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x60e6c
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_JASMINE_RETURNED_TO_GYM
 	clearevent EVENT_OLIVINE_GYM_JASMINE
 	checkcode VAR_FACING
-	if_equal $0, UnknownScript_0x60c17
-	if_equal $3, UnknownScript_0x60c1e
-	applymovement $2, MovementData_0x60c68
-	disappear $2
+	if_equal DOWN, UnknownScript_0x60c17
+	if_equal RIGHT, UnknownScript_0x60c1e
+	applymovement OLIVINELIGHTHOUSE6F_JASMINE, MovementData_0x60c68
+	disappear OLIVINELIGHTHOUSE6F_JASMINE
 	end
 
 UnknownScript_0x60c17:
-	applymovement $2, MovementData_0x60c70
-	disappear $2
+	applymovement OLIVINELIGHTHOUSE6F_JASMINE, MovementData_0x60c70
+	disappear OLIVINELIGHTHOUSE6F_JASMINE
 	end
 
 UnknownScript_0x60c1e:
-	applymovement $2, MovementData_0x60c79
-	disappear $2
+	applymovement OLIVINELIGHTHOUSE6F_JASMINE, MovementData_0x60c79
+	disappear OLIVINELIGHTHOUSE6F_JASMINE
 	end
 
 UnknownScript_0x60c25:
 	writetext UnknownText_0x60edf
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, RIGHT
+	spriteface OLIVINELIGHTHOUSE6F_JASMINE, RIGHT
 	pause 15
-	spriteface $3, LEFT
-	loadfont
+	spriteface OLIVINELIGHTHOUSE6F_MONSTER, LEFT
+	opentext
 	writetext UnknownText_0x60ef1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x60c39:
@@ -99,23 +104,23 @@
 
 MonsterScript_0x60c3a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_JASMINE_RETURNED_TO_GYM
 	iftrue UnknownScript_0x60c51
 	writetext UnknownText_0x60f03
 	writebyte AMPHAROS
 	special PlaySlowCry
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x60f19
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x60c51:
 	writetext UnknownText_0x60f3d
 	cry AMPHAROS
+	waitbutton
 	closetext
-	loadmovesprites
 	special FadeOutPalettes
 	special FadeInPalettes
 	special FadeOutPalettes
@@ -122,8 +127,8 @@
 	special FadeInPalettes
 	end
 
-ItemFragment_0x60c66:
-	db SUPER_POTION, 1
+OlivineLighthouse6FSuperPotion:
+	itemball SUPER_POTION
 
 MovementData_0x60c68:
 	slow_step_up
@@ -272,4 +277,4 @@
 	db 3
 	person_event SPRITE_JASMINE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, JasmineScript_0x60b91, EVENT_OLIVINE_LIGHTHOUSE_JASMINE
 	person_event SPRITE_MONSTER, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, MonsterScript_0x60c3a, -1
-	person_event SPRITE_POKE_BALL, 4, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x60c66, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
+	person_event SPRITE_POKE_BALL, 4, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse6FSuperPotion, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
--- a/maps/OlivineMart.asm
+++ b/maps/OlivineMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const OLIVINEMART_CLERK
+	const OLIVINEMART_COOLTRAINER_F
+	const OLIVINEMART_LASS
+
 OlivineMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x9cac7:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_OLIVINE
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerFScript_0x9cace:
--- a/maps/OlivinePokeCenter1F.asm
+++ b/maps/OlivinePokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const OLIVINEPOKECENTER1F_NURSE
+	const OLIVINEPOKECENTER1F_FISHING_GURU
+	const OLIVINEPOKECENTER1F_FISHER
+	const OLIVINEPOKECENTER1F_TEACHER
+
 OlivinePokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const OLIVINEPORT_SAILOR1
+	const OLIVINEPORT_SAILOR2
+	const OLIVINEPORT_SAILOR3
+	const OLIVINEPORT_FISHING_GURU1
+	const OLIVINEPORT_FISHING_GURU2
+	const OLIVINEPORT_YOUNGSTER
+	const OLIVINEPORT_COOLTRAINER_F
+
 OlivinePort_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -18,7 +27,7 @@
 
 UnknownScript_0x748b1:
 	applymovement PLAYER, MovementData_0x74a32
-	appear $2
+	appear OLIVINEPORT_SAILOR1
 	dotrigger $0
 	setevent EVENT_GAVE_KURT_APRICORNS
 	blackoutmod OLIVINE_CITY
@@ -26,21 +35,21 @@
 
 SailorScript_0x748c0:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74919
 	writetext UnknownText_0x74a55
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, DOWN
+	spriteface OLIVINEPORT_SAILOR1, DOWN
 	pause 10
 	playsound SFX_EXIT_BUILDING
-	disappear $2
-	waitbutton
+	disappear OLIVINEPORT_SAILOR1
+	waitsfx
 	applymovement PLAYER, MovementData_0x74a30
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7490a
 	clearevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
@@ -56,7 +65,7 @@
 	clearevent EVENT_BEAT_BLACKBELT_WAI
 UnknownScript_0x7490a:
 	clearevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
-	appear $2
+	appear OLIVINEPORT_SAILOR1
 	domaptrigger FAST_SHIP_1F, $1
 	warp FAST_SHIP_1F, $19, $1
 	end
@@ -63,18 +72,18 @@
 
 UnknownScript_0x74919:
 	writetext UnknownText_0x74a80
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7491f:
-	spriteface $4, RIGHT
+	spriteface OLIVINEPORT_SAILOR3, RIGHT
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7498b
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x7498b
 	spriteface PLAYER, LEFT
-	loadfont
+	opentext
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7494e
 	checkcode VAR_WEEKDAY
@@ -88,12 +97,12 @@
 	yesorno
 	iffalse UnknownScript_0x74992
 	writetext UnknownText_0x74ada
-	keeptextopen
+	buttonsound
 	checkitem S_S_TICKET
 	iffalse UnknownScript_0x7496d
 	writetext UnknownText_0x74b11
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement PLAYER, MovementData_0x74a37
 	jump SailorScript_0x748c0
@@ -100,22 +109,22 @@
 
 UnknownScript_0x7496d:
 	writetext UnknownText_0x74b41
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74a34
 	end
 
 UnknownScript_0x74977:
 	writetext UnknownText_0x74ba8
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74a34
 	end
 
 UnknownScript_0x74981:
 	writetext UnknownText_0x74bce
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74a34
 	end
 
@@ -124,20 +133,20 @@
 
 UnknownScript_0x7498c:
 	writetext UnknownText_0x74af6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x74992:
 	writetext UnknownText_0x74af6
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74a34
 	end
 
 SailorScript_0x7499c:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74919
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
@@ -153,15 +162,15 @@
 	yesorno
 	iffalse UnknownScript_0x7498c
 	writetext UnknownText_0x74ada
-	keeptextopen
+	buttonsound
 	checkitem S_S_TICKET
 	iffalse UnknownScript_0x749ec
 	writetext UnknownText_0x74b11
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x749e5
+	if_equal RIGHT, UnknownScript_0x749e5
 	applymovement PLAYER, MovementData_0x74a3f
 	jump SailorScript_0x748c0
 
@@ -171,20 +180,20 @@
 
 UnknownScript_0x749ec:
 	writetext UnknownText_0x74b41
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x749f2:
 	writetext UnknownText_0x74ba8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x749f8:
 	writetext UnknownText_0x74bce
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorScript_0x749fe:
@@ -192,41 +201,41 @@
 
 FishingGuruScript_0x74a01:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x74bf4
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $5, UP
+	spriteface OLIVINEPORT_FISHING_GURU1, UP
 	end
 
 FishingGuruScript_0x74a0c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x74c35
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, UP
+	spriteface OLIVINEPORT_FISHING_GURU2, UP
 	end
 
 YoungsterScript_0x74a17:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x74c76
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $7, DOWN
+	spriteface OLIVINEPORT_YOUNGSTER, DOWN
 	end
 
 CooltrainerFScript_0x74a22:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x74ca2
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $8, DOWN
+	spriteface OLIVINEPORT_COOLTRAINER_F, DOWN
 	end
 
-MapOlivinePortSignpostItem0:
+OlivinePortHiddenProtein:
 	dwb EVENT_OLIVINE_PORT_HIDDEN_PROTEIN, PROTEIN
 	
 
@@ -393,7 +402,7 @@
 
 .Signposts:
 	db 1
-	signpost 22, 1, SIGNPOST_ITEM, MapOlivinePortSignpostItem0
+	signpost 22, 1, SIGNPOST_ITEM, OlivinePortHiddenProtein
 
 .PersonEvents:
 	db 7
--- a/maps/OlivinePortPassage.asm
+++ b/maps/OlivinePortPassage.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const OLIVINEPORTPASSAGE_POKEFAN_M
+
 OlivinePortPassage_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/OlivinePunishmentSpeechHouse.asm
+++ b/maps/OlivinePunishmentSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const OLIVINEPUNISHMENTSPEECHHOUSE_POKEFAN_M
+	const OLIVINEPUNISHMENTSPEECHHOUSE_LASS
+
 OlivinePunishmentSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/OlivineVoltorbHouse.asm
+++ b/maps/OlivineVoltorbHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const OLIVINEVOLTORBHOUSE_FISHING_GURU
+
 OlivineVoltorbHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 Tim:
 	faceplayer
-	loadfont
+	opentext
 	trade $2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TimsHouseBookshelf:
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const PALLETTOWN_TEACHER
+	const PALLETTOWN_FISHER
+
 PalletTown_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const PEWTERCITY_COOLTRAINER_F
+	const PEWTERCITY_BUG_CATCHER
+	const PEWTERCITY_GRAMPS
+	const PEWTERCITY_FRUIT_TREE1
+	const PEWTERCITY_FRUIT_TREE2
+
 PewterCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -20,20 +27,20 @@
 
 GrampsScript_0x18c00f:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SILVER_WING
 	iftrue UnknownScript_0x18c023
 	writetext UnknownText_0x18c0c6
-	keeptextopen
+	buttonsound
 	verbosegiveitem SILVER_WING
 	setevent EVENT_GOT_SILVER_WING
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x18c023:
 	writetext UnknownText_0x18c1aa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PewterCitySign:
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const PEWTERGYM_BROCK
+	const PEWTERGYM_YOUNGSTER
+	const PEWTERGYM_GYM_GUY
+
 PewterGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,32 +12,32 @@
 
 BrockScript_0x1a2864:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_BOULDERBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x1a28d0
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1a29bb, 0
 	loadtrainer BROCK, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_BROCK
 	setevent EVENT_BEAT_CAMPER_JERRY
-	loadfont
+	opentext
 	writetext UnknownText_0x1a2a3d
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_BOULDERBADGE
 	writetext UnknownText_0x1a2a57
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FightDone
 	writetext UnknownText_0x1a2ada
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCamperJerry:
@@ -39,27 +44,27 @@
 	trainer EVENT_BEAT_CAMPER_JERRY, CAMPER, JERRY, CamperJerrySeenText, CamperJerryBeatenText, 0, CamperJerryScript
 
 CamperJerryScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a2c0f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PewterGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_BROCK
 	iftrue .PewterGymGuyWinScript
 	writetext PewterGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .PewterGymGuyWinScript
 	writetext PewterGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PewterGymStatue:
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const PEWTERMART_CLERK
+	const PEWTERMART_YOUNGSTER
+	const PEWTERMART_SUPER_NERD
+
 PewterMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x1a2dcb:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_PEWTER
-	loadmovesprites
+	closetext
 	end
 
 YoungsterScript_0x1a2dd2:
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const PEWTERNIDORANSPEECHHOUSE_SUPER_NERD
+	const PEWTERNIDORANSPEECHHOUSE_GROWLITHE
+
 PewterNidoranSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	jumptextfaceplayer UnknownText_0x1a2814
 
 GrowlitheScript_0x1a280a:
-	loadfont
+	opentext
 	writetext UnknownText_0x1a2825
 	cry NIDORAN_M
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x1a2814:
--- a/maps/PewterPokeCEnter2FBeta.asm
+++ b/maps/PewterPokeCEnter2FBeta.asm
@@ -1,3 +1,4 @@
+
 PewterPokeCEnter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/PewterPokeCenter1F.asm
+++ b/maps/PewterPokeCenter1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const PEWTERPOKECENTER1F_NURSE
+	const PEWTERPOKECENTER1F_TEACHER
+	const PEWTERPOKECENTER1F_JIGGLYPUFF
+	const PEWTERPOKECENTER1F_BUG_CATCHER
+	const PEWTERPOKECENTER1F_POKEFAN_M
+
 PewterPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,11 +19,11 @@
 	jumptextfaceplayer UnknownText_0x1a2f01
 
 JigglypuffScript_0x1a2eed:
-	loadfont
+	opentext
 	writetext UnknownText_0x1a2f5d
 	cry JIGGLYPUFF
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BugCatcherScript_0x1a2ef7:
@@ -24,10 +31,10 @@
 
 PokefanMScript_0x1a2efa:
 	faceplayer
-	loadfont
+	opentext
 	trade $4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x1a2f01:
--- a/maps/PewterSnoozeSpeechHouse.asm
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const PEWTERSNOOZESPEECHHOUSE_GRAMPS
+
 PewterSnoozeSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/PokeCenter2F.asm
+++ b/maps/PokeCenter2F.asm
@@ -1,74 +1,80 @@
+const_value set 2
+	const POKECENTER2F_TRADE_RECEPTIONIST
+	const POKECENTER2F_BATTLE_RECEPTIONIST
+	const POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
+	const POKECENTER2F_OFFICER
+
 PokeCenter2F_MapScriptHeader:
 .MapTriggers:
 	db 6
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
 	dw .Trigger3, 0
 	dw .Trigger4, 0
 	dw .Trigger5, 0
-	dw .Trigger6, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	special Special_CheckMysteryGift
-	if_equal $0, .Trigger1Done
+	if_equal $0, .Trigger0Done
 	clearevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
-	iftrue .Trigger1Done
+	iftrue .Trigger0Done
 	priorityjump PokeCenter2F_AppearMysteryGiftDeliveryGuy
 
-.Trigger1Done:
+.Trigger0Done:
 	end
 
-.Trigger2:
+.Trigger1:
 	priorityjump Script_LeftCableTradeCenter
 	end
 
-.Trigger3:
+.Trigger2:
 	priorityjump Script_LeftCableColosseum
 	end
 
-.Trigger4:
+.Trigger3:
 	priorityjump Script_LeftTimeCapsule
 	end
 
-.Trigger5:
+.Trigger4:
 	priorityjump Script_LeftMobileTradeRoom
 	end
 
-.Trigger6:
+.Trigger5:
 	priorityjump Script_LeftMobileBattleRoom
 	end
 
 PokeCenter2F_AppearMysteryGiftDeliveryGuy:
-	appear $5
+	appear POKECENTER2F_OFFICER
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	end
 
 Script_TradeCenterClosed:
 	faceplayer
-	loadfont
+	opentext
 	writetext Text_TradeRoomClosed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Script_BattleRoomClosed:
 	faceplayer
-	loadfont
+	opentext
 	writetext Text_BattleRoomClosed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LinkReceptionistScript_Trade:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iffalse Script_TradeCenterClosed
-	loadfont
+	opentext
 	writetext Text_TradeReceptionistIntro
 	yesorno
 	iffalse .Cancel
@@ -96,16 +102,16 @@
 	special Special_CheckBothSelectedSameRoom
 	iffalse .IncompatibleRooms
 	writetext Text_PleaseComeIn2
+	waitbutton
 	closetext
-	loadmovesprites
 	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
 .FriendNotReady:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
-	loadmovesprites
+	closetext
 	end
 
 .LinkedToFirstGen:
@@ -112,13 +118,13 @@
 	special Special_FailedLinkToPast
 	writetext Text_CantLinkToThePast
 	special Special_CloseLink
-	loadmovesprites
+	closetext
 	end
 
 .IncompatibleRooms:
 	writetext Text_IncompatibleRooms
 	special Special_CloseLink
-	loadmovesprites
+	closetext
 	end
 
 .LinkTimedOut:
@@ -128,9 +134,9 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .AbortLink:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 .Cancel:
-	loadmovesprites
+	closetext
 	end
 
 .Mobile:
@@ -151,26 +157,26 @@
 	iffalse .Mobile_DidNotSave
 	special Function1011f1
 	writetext Text_PleaseComeIn2
+	waitbutton
 	closetext
-	loadmovesprites
 	writebyte $0
 	end
 
 .Mobile_DidNotSave:
 	writetext Text_PleaseComeAgain
-	loadmovesprites
+	closetext
 	writebyte $1
 	end
 
 BattleTradeMobile_WalkIn:
-	applymovement2 MovementData_0x192cce
-	applymovement PLAYER, MovementData_0x192ce7
+	applymovement2 PokeCenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown
+	applymovement PLAYER, PokeCenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom
 	end
 
 LinkReceptionistScript_Battle:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	iffalse Script_BattleRoomClosed
-	loadfont
+	opentext
 	writetext Text_BattleReceptionistIntro
 	yesorno
 	iffalse .Cancel
@@ -198,16 +204,16 @@
 	special Special_CheckBothSelectedSameRoom
 	iffalse .IncompatibleRooms
 	writetext Text_PleaseComeIn2
+	waitbutton
 	closetext
-	loadmovesprites
 	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
 .FriendNotReady:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
-	loadmovesprites
+	closetext
 	end
 
 .LinkedToFirstGen:
@@ -214,13 +220,13 @@
 	special Special_FailedLinkToPast
 	writetext Text_CantLinkToThePast
 	special Special_CloseLink
-	loadmovesprites
+	closetext
 	end
 
 .IncompatibleRooms:
 	writetext Text_IncompatibleRooms
 	special Special_CloseLink
-	loadmovesprites
+	closetext
 	end
 
 .LinkTimedOut:
@@ -230,9 +236,9 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .AbortLink:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 .Cancel:
-	loadmovesprites
+	closetext
 	end
 
 .Mobile:
@@ -255,14 +261,14 @@
 	iffalse .Mobile_DidNotSave
 	special Function1011f1
 	writetext Text_PleaseComeIn2
+	waitbutton
 	closetext
-	loadmovesprites
 	writebyte $0
 	end
 
 .Mobile_DidNotSave:
 	writetext Text_PleaseComeAgain
-	loadmovesprites
+	closetext
 	writebyte $1
 	end
 
@@ -276,9 +282,9 @@
 
 .Mobile_InvalidParty:
 	writetext Text_BrokeStadiumRules
-	closetext
+	waitbutton
 .Mobile_DidNotSelect:
-	loadmovesprites
+	closetext
 	writebyte $0
 	end
 
@@ -288,10 +294,10 @@
 
 Script_TimeCapsuleClosed:
 	faceplayer
-	loadfont
+	opentext
 	writetext Text_TimeCapsuleClosed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LinkReceptionistScript_TimeCapsule:
@@ -301,7 +307,7 @@
 	iftrue Script_TimeCapsuleClosed
 	special Special_SetBitsForTimeCapsuleRequest
 	faceplayer
-	loadfont
+	opentext
 	writetext Text_TimeCapsuleReceptionistIntro
 	yesorno
 	iffalse .Cancel
@@ -325,22 +331,22 @@
 	special Special_CheckBothSelectedSameRoom
 	writetext Text_IncompatibleRooms
 	special Special_CloseLink
-	loadmovesprites
+	closetext
 	end
 
 .OK:
 	special Special_EnterTimeCapsule
 	writetext Text_PleaseComeIn2
+	waitbutton
 	closetext
-	loadmovesprites
 	scall TimeCapsuleScript_CheckPlayerGender
 	warpcheck
 	end
 
 .FriendNotReady:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
-	loadmovesprites
+	closetext
 	end
 
 .LinkTimedOut:
@@ -350,28 +356,28 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .Cancel:
-	special Special_AbortLink
-	loadmovesprites
+	special WaitForOtherPlayerToExit
+	closetext
 	end
 
 .MonTooNew:
 	writetext Text_RejectNewMon
-	loadmovesprites
+	closetext
 	end
 
 .MonMoveTooNew:
 	writetext Text_RejectMonWithNewMove
-	loadmovesprites
+	closetext
 	end
 
 .MonHasMail:
 	writetext Text_RejectMonWithMail
-	loadmovesprites
+	closetext
 	end
 
 Script_LeftCableTradeCenter:
-	special Special_AbortLink
-	scall Script_CleanUpFemaleFlagAfterTrade
+	special WaitForOtherPlayerToExit
+	scall Script_WalkOutOfLinkTradeRoom
 	dotrigger $0
 	domaptrigger TRADE_CENTER, $0
 	end
@@ -384,14 +390,14 @@
 	end
 
 Script_WalkOutOfMobileTradeRoom:
-	applymovement $2, MovementData_0x192d0b
-	applymovement PLAYER, MovementData_0x192d0f
-	applymovement $2, MovementData_0x192d14
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown
 	end
 
 Script_LeftCableColosseum:
-	special Special_AbortLink
-	scall Script_CleanUpFemaleFlagAfterBattle
+	special WaitForOtherPlayerToExit
+	scall Script_WalkOutOfLinkBattleRoom
 	dotrigger $0
 	domaptrigger COLOSSEUM, $0
 	end
@@ -404,88 +410,88 @@
 	end
 
 Script_WalkOutOfMobileBattleRoom:
-	applymovement $3, MovementData_0x192d0b
-	applymovement PLAYER, MovementData_0x192d0f
-	applymovement $3, MovementData_0x192d14
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown
 	end
 
 PokeCenter2F_CheckGender:
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Female
-	applymovement2 MovementData_0x192cca
-	applymovement PLAYER, MovementData_0x192cde
+	applymovement2 PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsUp
 	end
 
 .Female:
-	applymovement2 MovementData_0x192cd8
-	applymovement PLAYER, MovementData_0x192ce2
-	loadfont
+	applymovement2 PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsUp
+	opentext
 	writetext Text_OhPleaseWait
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement2 MovementData_0x192cdc
+	applymovement2 PokeCenter2FMovementData_ReceptionistLooksRight
 	spriteface PLAYER, LEFT
-	loadfont
+	opentext
 	writetext Text_ChangeTheLook
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_TINGLE
-	applymovement PLAYER, MovementData_0x192d17
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
 	writebyte (1 << 7) | (PAL_OW_RED << 4)
 	special Special_SetPlayerPalette
-	applymovement PLAYER, MovementData_0x192d1c
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
 	special ReplaceKrisSprite
-	loadfont
+	opentext
 	writetext Text_LikeTheLook
+	waitbutton
 	closetext
-	loadmovesprites
 	showemote EMOTE_SHOCK, PLAYER, 15
-	applymovement PLAYER, MovementData_0x192ce5
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp
 	end
 
-Script_CleanUpFemaleFlagAfterTrade:
+Script_WalkOutOfLinkTradeRoom:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
 	iftrue .Female
-	applymovement $2, MovementData_0x192d04
-	applymovement PLAYER, MovementData_0x192cf5
-	applymovement $2, MovementData_0x192cfe
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsDown
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
 	end
 
 .Female:
-	applymovement $2, MovementData_0x192d04
-	applymovement PLAYER, MovementData_0x192d28
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown_2
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
 	playsound SFX_TINGLE
-	applymovement PLAYER, MovementData_0x192d17
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
 	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
 	special Special_SetPlayerPalette
-	applymovement PLAYER, MovementData_0x192d1c
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
 	special ReplaceKrisSprite
-	applymovement PLAYER, MovementData_0x192d2a
-	applymovement $2, MovementData_0x192cfe
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
 	end
 
-Script_CleanUpFemaleFlagAfterBattle:
+Script_WalkOutOfLinkBattleRoom:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
 	iftrue .Female
-	applymovement $3, MovementData_0x192d04
-	applymovement PLAYER, MovementData_0x192cf5
-	applymovement $3, MovementData_0x192cfe
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsDown
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
 	end
 
 .Female:
-	applymovement $3, MovementData_0x192d04
-	applymovement PLAYER, MovementData_0x192d28
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown_2
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
 	playsound SFX_TINGLE
-	applymovement PLAYER, MovementData_0x192d17
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
 	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
 	special Special_SetPlayerPalette
-	applymovement PLAYER, MovementData_0x192d1c
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
 	special ReplaceKrisSprite
-	applymovement PLAYER, MovementData_0x192d2a
-	applymovement $3, MovementData_0x192cfe
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
 	end
 
 TimeCapsuleScript_CheckPlayerGender:
@@ -494,18 +500,18 @@
 	checkcode VAR_FACING
 	if_equal LEFT, .MaleFacingLeft
 	if_equal RIGHT, .MaleFacingRight
-	applymovement2 MovementData_0x192cd2
-	applymovement PLAYER, MovementData_0x192cec
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsUp_2
 	end
 
 .MaleFacingLeft:
-	applymovement2 MovementData_0x192cd2
-	applymovement PLAYER, MovementData_0x192cef
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksLeftAndUp
 	end
 
 .MaleFacingRight:
-	applymovement2 MovementData_0x192cd5
-	applymovement PLAYER, MovementData_0x192cf2
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsRightLooksDown
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksRightAndUp
 	end
 
 .Female:
@@ -512,68 +518,68 @@
 	checkcode VAR_FACING
 	if_equal RIGHT, .FemaleFacingRight
 	if_equal LEFT, .FemaleFacingLeft
-	applymovement2 MovementData_0x192d33
-	applymovement PLAYER, MovementData_0x192d2d
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp_2
 	jump .FemaleContinue
 
 .FemaleFacingRight:
-	applymovement2 MovementData_0x192d36
-	applymovement PLAYER, MovementData_0x192d2f
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsRightLooksLeft_2
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepRight
 	jump .FemaleContinue
 
 .FemaleFacingLeft:
-	applymovement2 MovementData_0x192d33
-	applymovement PLAYER, MovementData_0x192d31
+	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepLeft
 .FemaleContinue:
-	loadfont
+	opentext
 	writetext Text_OhPleaseWait
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
 	if_not_equal UP, .FemaleChangeApperance
 	spriteface PLAYER, LEFT
 .FemaleChangeApperance:
-	loadfont
+	opentext
 	writetext Text_ChangeTheLook
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_TINGLE
-	applymovement PLAYER, MovementData_0x192d17
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
 	writebyte (1 << 7) | (PAL_OW_RED << 4)
 	special Special_SetPlayerPalette
-	applymovement PLAYER, MovementData_0x192d22
-	faceperson PLAYER, $4
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown
+	faceperson PLAYER, POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
 	special ReplaceKrisSprite
-	loadfont
+	opentext
 	writetext Text_LikeTheLook
+	waitbutton
 	closetext
-	loadmovesprites
 	showemote EMOTE_SHOCK, PLAYER, 15
-	applymovement PLAYER, MovementData_0x192d2d
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp_2
 	end
 
 Script_LeftTimeCapsule:
-	special Special_AbortLink
+	special WaitForOtherPlayerToExit
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
 	iftrue .Female
-	applymovement $4, MovementData_0x192d08
-	applymovement PLAYER, MovementData_0x192cf9
-	applymovement $4, MovementData_0x192d01
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2
 	jump .Done
 
 .Female:
-	applymovement $4, MovementData_0x192d08
-	applymovement PLAYER, MovementData_0x192cfc
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
 	playsound SFX_TINGLE
-	applymovement PLAYER, MovementData_0x192d17
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
 	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
 	special Special_SetPlayerPalette
-	applymovement PLAYER, MovementData_0x192d1c
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
 	special ReplaceKrisSprite
-	applymovement PLAYER, MovementData_0x192cfc
-	applymovement $4, MovementData_0x192d01
+	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2
 .Done:
 	dotrigger $0
 	domaptrigger TIME_CAPSULE, $0
@@ -582,12 +588,12 @@
 MapPokeCenter2FSignpost0Script:
 	refreshscreen $0
 	special Special_DisplayLinkRecord
-	loadmovesprites
+	closetext
 	end
 
 OfficerScript_0x192c9a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
 	iftrue .AlreadyGotGift
 	writetext Text_MysteryGiftDeliveryGuy_Intro
@@ -594,8 +600,8 @@
 	yesorno
 	iffalse .RefusedGift
 	writetext Text_MysteryGiftDeliveryGuy_HereYouGo
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	special Special_GetMysteryGiftItem
 	iffalse .BagIsFull
 	itemnotify
@@ -602,70 +608,70 @@
 	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
 .AlreadyGotGift:
 	writetext Text_MysteryGiftDeliveryGuy_Outro
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BagIsFull:
 	writetext Text_MysteryGiftDeliveryGuy_NoRoom
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .RefusedGift:
 	writetext Text_MysteryGiftDeliveryGuy_SaidNo
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-MovementData_0x192cca:
+PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight:
 	slow_step_up
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192cce:
+PokeCenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown:
 	slow_step_up
 	slow_step_left
 	turn_head_down
 	step_end
 
-MovementData_0x192cd2:
+PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown:
 	slow_step_left
 	turn_head_down
 	step_end
 
-MovementData_0x192cd5:
+PokeCenter2FMovementData_ReceptionistStepsRightLooksDown:
 	slow_step_right
 	turn_head_down
 	step_end
 
-MovementData_0x192cd8:
+PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2:
 	slow_step_up
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192cdc:
+PokeCenter2FMovementData_ReceptionistLooksRight:
 	turn_head_right
 	step_end
 
-MovementData_0x192cde:
+PokeCenter2FMovementData_PlayerTakesThreeStepsUp:
 	step_up
 	step_up
 	step_up
 	step_end
 
-MovementData_0x192ce2:
+PokeCenter2FMovementData_PlayerTakesTwoStepsUp:
 	step_up
 	step_up
 	step_end
 
-MovementData_0x192ce5:
+PokeCenter2FMovementData_PlayerTakesOneStepUp:
 	step_up
 	step_end
 
-MovementData_0x192ce7:
+PokeCenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom:
 	step_up
 	step_up
 	step_right
@@ -672,64 +678,64 @@
 	step_up
 	step_end
 
-MovementData_0x192cec:
+PokeCenter2FMovementData_PlayerTakesTwoStepsUp_2:
 	step_up
 	step_up
 	step_end
 
-MovementData_0x192cef:
+PokeCenter2FMovementData_PlayerWalksLeftAndUp:
 	step_left
 	step_up
 	step_end
 
-MovementData_0x192cf2:
+PokeCenter2FMovementData_PlayerWalksRightAndUp:
 	step_right
 	step_up
 	step_end
 
-MovementData_0x192cf5:
+PokeCenter2FMovementData_PlayerTakesThreeStepsDown:
 	step_down
 	step_down
 	step_down
 	step_end
 
-MovementData_0x192cf9:
+PokeCenter2FMovementData_PlayerTakesTwoStepsDown:
 	step_down
 	step_down
 	step_end
 
-MovementData_0x192cfc:
+PokeCenter2FMovementData_PlayerTakesOneStepDown:
 	step_down
 	step_end
 
-MovementData_0x192cfe:
+PokeCenter2FMovementData_ReceptionistStepsRightAndDown:
 	slow_step_right
 	slow_step_down
 	step_end
 
-MovementData_0x192d01:
+PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2:
 	slow_step_right
 	turn_head_down
 	step_end
 
-MovementData_0x192d04:
+PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3:
 	slow_step_up
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192d08:
+PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight:
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192d0b:
+PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft:
 	slow_step_up
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192d0f:
+PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom:
 	step_down
 	step_left
 	step_down
@@ -736,12 +742,12 @@
 	step_down
 	step_end
 
-MovementData_0x192d14:
+PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown:
 	slow_step_right
 	slow_step_down
 	step_end
 
-MovementData_0x192d17:
+PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight:
 	turn_head_down
 	turn_head_left
 	turn_head_up
@@ -748,7 +754,7 @@
 	turn_head_right
 	step_end
 
-MovementData_0x192d1c:
+PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft:
 	turn_head_down
 	turn_head_left
 	turn_head_up
@@ -756,7 +762,7 @@
 	turn_head_left
 	step_end
 
-MovementData_0x192d22:
+PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown:
 	turn_head_down
 	turn_head_left
 	turn_head_up
@@ -764,33 +770,33 @@
 	turn_head_down
 	step_end
 
-MovementData_0x192d28:
+PokeCenter2FMovementData_PlayerTakesOneStepDown_2:
 	step_down
 	step_end
 
-MovementData_0x192d2a:
+PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2:
 	step_down
 	step_down
 	step_end
 
-MovementData_0x192d2d:
+PokeCenter2FMovementData_PlayerTakesOneStepUp_2:
 	step_up
 	step_end
 
-MovementData_0x192d2f:
+PokeCenter2FMovementData_PlayerTakesOneStepRight:
 	step_right
 	step_end
 
-MovementData_0x192d31:
+PokeCenter2FMovementData_PlayerTakesOneStepLeft:
 	step_left
 	step_end
 
-MovementData_0x192d33:
+PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2:
 	slow_step_left
 	turn_head_right
 	step_end
 
-MovementData_0x192d36:
+PokeCenter2FMovementData_ReceptionistStepsRightLooksLeft_2:
 	slow_step_right
 	turn_head_left
 	step_end
--- a/maps/PokeSeersHouse.asm
+++ b/maps/PokeSeersHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const POKESEERSHOUSE_GRANNY
+
 PokeSeersHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 SeerScript:
 	faceplayer
-	loadfont
+	opentext
 	special SpecialPokeSeer
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokeSeersHouse_MapEventHeader:
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const POKEMONFANCLUB_GENTLEMAN
+	const POKEMONFANCLUB_RECEPTIONIST
+	const POKEMONFANCLUB_FISHER
+	const POKEMONFANCLUB_TEACHER
+	const POKEMONFANCLUB_FAIRY
+	const POKEMONFANCLUB_ODDISH
+
 PokemonFanClub_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +15,7 @@
 
 GentlemanScript_0x1917e9:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_LISTENED_TO_FAN_CLUB_PRESIDENT
 	iftrue UnknownScript_0x191815
 	checkevent EVENT_LISTENED_TO_FAN_CLUB_PRESIDENT_BUT_BAG_WAS_FULL
@@ -16,29 +24,29 @@
 	yesorno
 	iffalse UnknownScript_0x19181b
 	writetext UnknownText_0x191911
-	keeptextopen
+	buttonsound
 UnknownScript_0x191802:
 	writetext UnknownText_0x191a3d
-	keeptextopen
+	buttonsound
 	verbosegiveitem RARE_CANDY
 	iffalse UnknownScript_0x19181f
 	setevent EVENT_LISTENED_TO_FAN_CLUB_PRESIDENT
 	writetext UnknownText_0x191a72
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x191815:
 	writetext UnknownText_0x191ae0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19181b:
 	writetext UnknownText_0x191b38
-	closetext
+	waitbutton
 UnknownScript_0x19181f:
-	loadmovesprites
+	closetext
 	end
 
 ReceptionistScript_0x191821:
@@ -46,14 +54,14 @@
 
 FisherScript_0x191824:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_LOST_ITEM_FROM_FAN_CLUB
 	iftrue UnknownScript_0x19185f
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x191838
 	writetext UnknownText_0x191ba0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x191838:
@@ -60,36 +68,36 @@
 	writetext UnknownText_0x191bff
 	checkevent EVENT_MET_COPYCAT_FOUND_OUT_ABOUT_LOST_ITEM
 	iftrue UnknownScript_0x191844
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x191844:
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x191c5a
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	giveitem LOST_ITEM
 	iffalse UnknownScript_0x191865
-	disappear $6
+	disappear POKEMONFANCLUB_FAIRY
 	writetext UnknownText_0x191d0a
 	playsound SFX_KEY_ITEM
-	waitbutton
+	waitsfx
 	itemnotify
 	setevent EVENT_GOT_LOST_ITEM_FROM_FAN_CLUB
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x19185f:
 	writetext UnknownText_0x191d1e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x191865:
 	writetext UnknownText_0x191d58
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TeacherScript_0x19186b:
@@ -99,11 +107,11 @@
 	jumptext UnknownText_0x191db1
 
 OddishScript_0x191871:
-	loadfont
+	opentext
 	writetext UnknownText_0x191de9
 	cry BAYLEEF
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapPokemonFanClubSignpost0Script:
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const POWERPLANT_OFFICER1
+	const POWERPLANT_GYM_GUY1
+	const POWERPLANT_GYM_GUY2
+	const POWERPLANT_OFFICER2
+	const POWERPLANT_GYM_GUY3
+	const POWERPLANT_FISHER
+	const POWERPLANT_GYM_GUY4
+
 PowerPlant_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -17,118 +26,118 @@
 
 UnknownScript_0x188dc5:
 	playsound SFX_CALL
-	showemote EMOTE_SHOCK, $2, 15
-	waitbutton
+	showemote EMOTE_SHOCK, POWERPLANT_OFFICER1, 15
+	waitsfx
 	pause 30
-	applymovement $2, MovementData_0x188ed5
-	spriteface $3, DOWN
-	spriteface $4, DOWN
-	loadfont
+	applymovement POWERPLANT_OFFICER1, MovementData_0x188ed5
+	spriteface POWERPLANT_GYM_GUY1, DOWN
+	spriteface POWERPLANT_GYM_GUY2, DOWN
+	opentext
 	writetext UnknownText_0x188f22
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, LEFT
+	spriteface POWERPLANT_OFFICER1, LEFT
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x188f7f
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $2, MovementData_0x188eda
+	applymovement POWERPLANT_OFFICER1, MovementData_0x188eda
 	dotrigger $0
 	end
 
 OfficerScript_0x188df5:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188e0f
 	checkevent EVENT_MET_MANAGER_AT_POWER_PLANT
 	iftrue UnknownScript_0x188e09
 	writetext UnknownText_0x188ee0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e09:
 	writetext UnknownText_0x188f7f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e0f:
 	writetext UnknownText_0x188fa2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymGuyScript_0x188e15:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188e23
 	writetext UnknownText_0x188fcf
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e23:
 	writetext UnknownText_0x189038
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymGuyScript_0x188e29:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188e37
 	writetext UnknownText_0x189079
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e37:
 	writetext UnknownText_0x1890ef
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 OfficerScript_0x188e3d:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188e4b
 	writetext UnknownText_0x18910e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e4b:
 	writetext UnknownText_0x18917f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymGuyScript_0x188e51:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188e5f
 	writetext UnknownText_0x1891c2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e5f:
 	writetext UnknownText_0x189225
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PowerPlantManager:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188eac
 	checkitem MACHINE_PART
@@ -136,8 +145,8 @@
 	checkevent EVENT_MET_MANAGER_AT_POWER_PLANT
 	iftrue UnknownScript_0x188e8d
 	writetext UnknownText_0x189264
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_MET_MANAGER_AT_POWER_PLANT
 	clearevent EVENT_CERULEAN_GYM_ROCKET
 	clearevent EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
@@ -147,13 +156,13 @@
 
 UnknownScript_0x188e8d:
 	writetext UnknownText_0x189308
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188e93:
 	writetext UnknownText_0x18936e
-	keeptextopen
+	buttonsound
 	takeitem MACHINE_PART
 	setevent EVENT_RETURNED_MACHINE_PART
 	clearevent EVENT_SAFFRON_TRAIN_STATION_POPULATION
@@ -165,28 +174,28 @@
 	checkevent EVENT_GOT_TM07_ZAP_CANNON
 	iftrue UnknownScript_0x188ec5
 	writetext UnknownText_0x1893c4
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_ZAP_CANNON
 	iffalse UnknownScript_0x188ec3
 	setevent EVENT_GOT_TM07_ZAP_CANNON
 	writetext UnknownText_0x1893f4
-	closetext
+	waitbutton
 UnknownScript_0x188ec3:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x188ec5:
 	writetext UnknownText_0x189475
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymGuyScript_0x188ecb:
 	faceplayer
-	loadfont
+	opentext
 	trade $6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PowerPlantBookshelf:
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const RADIOTOWER1F_RECEPTIONIST
+	const RADIOTOWER1F_LASS
+	const RADIOTOWER1F_YOUNGSTER
+	const RADIOTOWER1F_ROCKET
+	const RADIOTOWER1F_GENTLEMAN
+	const RADIOTOWER1F_COOLTRAINER_F
+
 RadioTower1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,25 +15,25 @@
 
 ReceptionistScript_0x5cd29:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0x5cd37
 	writetext UnknownText_0x5ce77
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5cd37:
 	writetext UnknownText_0x5ce81
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GentlemanScript_0x5cd3d:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5ceba
-	keeptextopen
+	buttonsound
 	special Special_CheckLuckyNumberShowFlag
 	iffalse .skip
 	special Special_ResetLuckyNumberShowFlag
@@ -34,21 +42,21 @@
 	checkflag ENGINE_LUCKY_NUMBER_SHOW
 	iftrue .GameOver
 	writetext UnknownText_0x5cf3a
-	keeptextopen
-	loadmovesprites
-	applymovement $6, MovementData_0x5ce71
-	loadfont
+	buttonsound
+	closetext
+	applymovement RADIOTOWER1F_GENTLEMAN, MovementData_0x5ce71
+	opentext
 	writetext UnknownText_0x5cf5a
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	writetext UnknownText_0x5cf79
 	playsound SFX_DEX_FANFARE_20_49
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	special Special_CheckForLuckyNumberWinners
-	loadmovesprites
-	applymovement $6, MovementData_0x5ce74
-	loadfont
+	closetext
+	applymovement RADIOTOWER1F_GENTLEMAN, MovementData_0x5ce74
+	opentext
 	if_equal 1, .FirstPlace
 	if_equal 2, .SecondPlace
 	if_equal 3, .ThirdPlace
@@ -56,15 +64,15 @@
 
 .GameOver
 	writetext UnknownText_0x5cf7e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FirstPlace
 	writetext UnknownText_0x5cfb5
 	playsound SFX_1ST_PLACE
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	giveitem MASTER_BALL
 	iffalse .BagFull
 	itemnotify
@@ -74,8 +82,8 @@
 .SecondPlace
 	writetext UnknownText_0x5d023
 	playsound SFX_2ND_PLACE
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	giveitem EXP_SHARE
 	iffalse .BagFull
 	itemnotify
@@ -85,8 +93,8 @@
 .ThirdPlace
 	writetext UnknownText_0x5d076
 	playsound SFX_3RD_PLACE
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	giveitem PP_UP
 	iffalse .BagFull
 	itemnotify
@@ -95,19 +103,19 @@
 
 .NoPrize
 	writetext UnknownText_0x5d0c0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BagFull:
 	writetext UnknownText_0x5d0e6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x5cdd5:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_RADIO_CARD
 	iftrue UnknownScript_0x5ce2d
 	writetext UnknownText_0x5d12d
@@ -117,38 +125,38 @@
 	yesorno
 	iffalse UnknownScript_0x5ce42
 	playsound SFX_ELEVATOR_END
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x5d231
 	yesorno
 	iffalse UnknownScript_0x5ce42
 	playsound SFX_ELEVATOR_END
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x5d282
 	yesorno
 	iftrue UnknownScript_0x5ce42
 	playsound SFX_ELEVATOR_END
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x5d2bc
 	yesorno
 	iffalse UnknownScript_0x5ce42
 	playsound SFX_ELEVATOR_END
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x5d30e
 	yesorno
 	iftrue UnknownScript_0x5ce42
 	playsound SFX_ELEVATOR_END
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x5d37b
-	keeptextopen
+	buttonsound
 	stringtotext RadioCardText, $1
 	scall UnknownScript_0x5ce3e
 	writetext UnknownText_0x5d3c0
-	keeptextopen
+	buttonsound
 	setflag ENGINE_RADIO_CARD
 UnknownScript_0x5ce2d:
 	writetext UnknownText_0x5d3e5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RadioCardText:
@@ -161,14 +169,14 @@
 UnknownScript_0x5ce42:
 	playsound SFX_WRONG
 	writetext UnknownText_0x5d409
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5ce4b:
 	writetext UnknownText_0x5d443
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x5ce51:
@@ -181,11 +189,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_3, GRUNTM, 3, GruntM3SeenText, GruntM3BeatenText, 0, GruntM3Script
 
 GruntM3Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5d5a2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRadioTower1FSignpost0Script:
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const RADIOTOWER2F_SUPER_NERD
+	const RADIOTOWER2F_TEACHER
+	const RADIOTOWER2F_ROCKET1
+	const RADIOTOWER2F_ROCKET2
+	const RADIOTOWER2F_ROCKET3
+	const RADIOTOWER2F_ROCKET_GIRL
+	const RADIOTOWER2F_BLACK_BELT1
+	const RADIOTOWER2F_BLACK_BELT2
+	const RADIOTOWER2F_JIGGLYPUFF
+	const RADIOTOWER2F_BUENA
+	const RADIOTOWER2F_RECEPTIONIST
+
 RadioTower2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,26 +26,26 @@
 
 TeacherScript_0x5d701:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0x5d70f
 	writetext UnknownText_0x5d956
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5d70f:
 	writetext UnknownText_0x5d983
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 JigglypuffScript_0x5d715:
-	loadfont
+	opentext
 	writetext UnknownText_0x5d9b6
 	cry JIGGLYPUFF
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BlackBeltScript_0x5d71f:
@@ -45,11 +58,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_4, GRUNTM, 4, GruntM4SeenText, GruntM4BeatenText, 0, GruntM4Script
 
 GruntM4Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5db07
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM5:
@@ -56,11 +69,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_5, GRUNTM, 5, GruntM5SeenText, GruntM5BeatenText, 0, GruntM5Script
 
 GruntM5Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5db99
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM6:
@@ -67,11 +80,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_6, GRUNTM, 6, GruntM6SeenText, GruntM6BeatenText, 0, GruntM6Script
 
 GruntM6Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5dc00
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntF2:
@@ -78,16 +91,16 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTF_2, GRUNTF, 2, GruntF2SeenText, GruntF2BeatenText, 0, GruntF2Script
 
 GruntF2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5dcd0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Buena:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue UnknownScript_0x5d865
 	checkevent EVENT_MET_BUENA
@@ -107,40 +120,40 @@
 	special AskRememberPassword
 	iffalse UnknownScript_0x5d81e
 	writetext UnknownText_0x5de84
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	checkcode VAR_FACING
-	if_not_equal $3, UnknownScript_0x5d7be
+	if_not_equal RIGHT, UnknownScript_0x5d7be
 	applymovement PLAYER, MovementData_0x5d921
 UnknownScript_0x5d7be:
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x5dedd
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, DOWN
+	spriteface RADIOTOWER2F_BUENA, DOWN
 	refreshscreen $0
 	special SpecialBuenasPassword
-	loadmovesprites
+	closetext
 	iffalse UnknownScript_0x5d845
-	loadfont
+	opentext
 	writetext UnknownText_0x5dfc1
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_BLUECARDBALANCE
 	addvar $1
 	writevarcode VAR_BLUECARDBALANCE
-	waitbutton
+	waitsfx
 	playsound SFX_TRANSACTION
 	setflag ENGINE_BUENAS_PASSWORD_2
 	pause 20
-	spriteface $b, RIGHT
-	loadfont
+	spriteface RADIOTOWER2F_BUENA, RIGHT
+	opentext
 	writetext UnknownText_0x5e054
+	waitbutton
 	closetext
-	loadmovesprites
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 20
 	special RestartMapMusic
 	checkcode VAR_BLUECARDBALANCE
@@ -149,27 +162,27 @@
 
 UnknownScript_0x5d800:
 	writetext UnknownText_0x5dcf4
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_BUENA
 	verbosegiveitem BLUE_CARD
 UnknownScript_0x5d80a:
 	writetext UnknownText_0x5de10
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d81a
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
 UnknownScript_0x5d81a:
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	end
 
 UnknownScript_0x5d81e:
 	writetext UnknownText_0x5df29
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
-	special Special_RotatePalettesRightMusic
+	spriteface RADIOTOWER2F_BUENA, RIGHT
+	special Special_FadeOutMusic
 	pause 20
 	special RestartMapMusic
 	end
@@ -176,31 +189,31 @@
 
 UnknownScript_0x5d82f:
 	writetext UnknownText_0x5df6c
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d83f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
 UnknownScript_0x5d83f:
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	pause 10
 	end
 
 UnknownScript_0x5d845:
 	setflag ENGINE_BUENAS_PASSWORD_2
-	loadfont
+	opentext
 	writetext UnknownText_0x5e01c
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	pause 20
-	loadfont
+	opentext
 	writetext UnknownText_0x5e054
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
-	special Special_RotatePalettesRightMusic
+	spriteface RADIOTOWER2F_BUENA, RIGHT
+	special Special_FadeOutMusic
 	pause 20
 	special RestartMapMusic
 	end
@@ -207,38 +220,38 @@
 
 UnknownScript_0x5d865:
 	writetext UnknownText_0x5e0c2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5d86b:
 	writetext UnknownText_0x5e192
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d87b
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
 UnknownScript_0x5d87b:
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	end
 
 UnknownScript_0x5d87f:
 	writetext UnknownText_0x5e0f1
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d88f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
 UnknownScript_0x5d88f:
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	end
 
 UnknownScript_0x5d893:
 	writetext UnknownText_0x5e131
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8a3
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
@@ -250,21 +263,21 @@
 	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8fe
 	pause 20
-	spriteface $b, DOWN
+	spriteface RADIOTOWER2F_BUENA, DOWN
 	pause 15
 	spriteface PLAYER, UP
 	pause 15
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
-	showemote EMOTE_SHOCK, $b, 15
+	showemote EMOTE_SHOCK, RADIOTOWER2F_BUENA, 15
 	setevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	setevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
-	loadfont
+	opentext
 	writetext UnknownText_0x5e1ee
 	jump UnknownScript_0x5d8d0
 
 UnknownScript_0x5d8cc:
-	loadfont
+	opentext
 	writetext UnknownText_0x5e2bf
 UnknownScript_0x5d8d0:
 	askforphonenumber PHONE_BUENA
@@ -272,45 +285,45 @@
 	if_equal $2, UnknownScript_0x5d8ed
 	writetext UnknownText_0x5e2f3
 	playsound SFX_REGISTER_PHONE_NUMBER
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	writetext UnknownText_0x5e310
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	addcellnum PHONE_BUENA
 	end
 
 UnknownScript_0x5d8ed:
 	writetext UnknownText_0x5e33c
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 	end
 
 UnknownScript_0x5d8f6:
 	writetext UnknownText_0x5e35e
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $b, RIGHT
+	spriteface RADIOTOWER2F_BUENA, RIGHT
 UnknownScript_0x5d8fe:
 	end
 
 ReceptionistScript_0x5d8ff:
 	faceplayer
-	loadfont
+	opentext
 	checkitem BLUE_CARD
 	iffalse UnknownScript_0x5d90f
 	writetext UnknownText_0x5e392
-	keeptextopen
+	buttonsound
 	special SpecialBuenaPrize
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x5d90f:
 	writetext UnknownText_0x5e3d8
-	keeptextopen
-	loadmovesprites
+	buttonsound
+	closetext
 	end
 
 MapRadioTower2FSignpost0Script:
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const RADIOTOWER3F_SUPER_NERD
+	const RADIOTOWER3F_GYM_GUY
+	const RADIOTOWER3F_COOLTRAINER_F
+	const RADIOTOWER3F_ROCKET1
+	const RADIOTOWER3F_ROCKET2
+	const RADIOTOWER3F_ROCKET3
+	const RADIOTOWER3F_SCIENTIST
+
 RadioTower3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -24,23 +33,23 @@
 
 GymGuyScript_0x5e556:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_RADIO_TOWER
 	iftrue UnknownScript_0x5e564
 	writetext UnknownText_0x5e682
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5e564:
 	writetext UnknownText_0x5e6eb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x5e56a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SUNNY_DAY_FROM_RADIO_TOWER
 	iftrue UnknownScript_0x5e59d
 	checkevent EVENT_CLEARED_RADIO_TOWER
@@ -48,32 +57,32 @@
 	checkevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	iftrue UnknownScript_0x5e584
 	writetext UnknownText_0x5e754
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5e584:
 	writetext UnknownText_0x5e7cb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5e58a:
 	writetext UnknownText_0x5e7e2
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SUNNY_DAY
 	iffalse UnknownScript_0x5e5a1
 	writetext UnknownText_0x5e821
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_SUNNY_DAY_FROM_RADIO_TOWER
 	end
 
 UnknownScript_0x5e59d:
 	writetext UnknownText_0x5e85c
-	closetext
+	waitbutton
 UnknownScript_0x5e5a1:
-	loadmovesprites
+	closetext
 	end
 
 TrainerGruntM7:
@@ -80,11 +89,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_7, GRUNTM, 7, GruntM7SeenText, GruntM7BeatenText, 0, GruntM7Script
 
 GruntM7Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5e8d0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM8:
@@ -91,11 +100,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_8, GRUNTM, 8, GruntM8SeenText, GruntM8BeatenText, 0, GruntM8Script
 
 GruntM8Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5e944
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM9:
@@ -102,11 +111,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_9, GRUNTM, 9, GruntM9SeenText, GruntM9BeatenText, 0, GruntM9Script
 
 GruntM9Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5e9d0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerScientistMarc:
@@ -113,35 +122,35 @@
 	trainer EVENT_BEAT_SCIENTIST_MARC, SCIENTIST, MARC, ScientistMarcSeenText, ScientistMarcBeatenText, 0, ScientistMarcScript
 
 ScientistMarcScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5ea61
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRadioTower3FSignpost2Script::
-	loadfont
+	opentext
 	writetext UnknownText_0x5eaa4
-	closetext
+	waitbutton
 	checkevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	iftrue UnknownScript_0x5e603
 	checkitem CARD_KEY
 	iftrue UnknownScript_0x5e605
 UnknownScript_0x5e603:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x5e605:
 	writetext UnknownText_0x5eabc
-	closetext
+	waitbutton
 	setevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	playsound SFX_ENTER_DOOR
 	changeblock $e, $2, $2a
 	changeblock $e, $4, $1
 	reloadmappart
-	loadmovesprites
-	waitbutton
+	closetext
+	waitsfx
 	end
 
 MapRadioTower3FSignpost0Script:
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const RADIOTOWER4F_FISHER
+	const RADIOTOWER4F_TEACHER
+	const RADIOTOWER4F_GROWLITHE
+	const RADIOTOWER4F_ROCKET1
+	const RADIOTOWER4F_ROCKET2
+	const RADIOTOWER4F_ROCKET_GIRL
+	const RADIOTOWER4F_SCIENTIST
+
 RadioTower4F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,40 +19,40 @@
 
 TeacherScript_0x5eb85:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_PINK_BOW_FROM_MARY
 	iftrue UnknownScript_0x5ebac
 	checkevent EVENT_CLEARED_RADIO_TOWER
 	iftrue UnknownScript_0x5eb99
 	writetext UnknownText_0x5ec68
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5eb99:
 	writetext UnknownText_0x5ecab
-	keeptextopen
+	buttonsound
 	verbosegiveitem PINK_BOW
 	iffalse UnknownScript_0x5ebb0
 	writetext UnknownText_0x5ecef
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_PINK_BOW_FROM_MARY
 	end
 
 UnknownScript_0x5ebac:
 	writetext UnknownText_0x5ed2c
-	closetext
+	waitbutton
 UnknownScript_0x5ebb0:
-	loadmovesprites
+	closetext
 	end
 
 GrowlitheScript_0x5ebb2:
-	loadfont
+	opentext
 	writetext UnknownText_0x5ed66
 	cry MEOWTH
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM10:
@@ -50,11 +59,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_10, GRUNTM, 10, GruntM10SeenText, GruntM10BeatenText, 0, GruntM10Script
 
 GruntM10Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5ede2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerExecutivem2:
@@ -61,11 +70,11 @@
 	trainer EVENT_BEAT_ROCKET_EXECUTIVEM_2, EXECUTIVEM, 2, Executivem2SeenText, Executivem2BeatenText, 0, Executivem2Script
 
 Executivem2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5ee69
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntF4:
@@ -72,11 +81,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTF_4, GRUNTF, 4, GruntF4SeenText, GruntF4BeatenText, 0, GruntF4Script
 
 GruntF4Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5ef31
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerScientistRich:
@@ -83,11 +92,11 @@
 	trainer EVENT_BEAT_SCIENTIST_RICH, SCIENTIST, RICH, ScientistRichSeenText, ScientistRichBeatenText, 0, ScientistRichScript
 
 ScientistRichScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5efcb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRadioTower4FSignpost0Script:
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -1,47 +1,54 @@
+const_value set 2
+	const RADIOTOWER5F_DIRECTOR
+	const RADIOTOWER5F_ROCKET
+	const RADIOTOWER5F_ROCKET_GIRL
+	const RADIOTOWER5F_ROCKER
+	const RADIOTOWER5F_POKE_BALL
+
 RadioTower5F_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x6000e, 0
-	dw UnknownScript_0x6000f, 0
-	dw UnknownScript_0x60010, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
+	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x6000e:
+.Trigger0:
 	end
 
-UnknownScript_0x6000f:
+.Trigger1:
 	end
 
-UnknownScript_0x60010:
+.Trigger2:
 	end
 
-UnknownScript_0x60011:
-	spriteface $2, UP
-	showemote EMOTE_SHOCK, $2, 15
-	loadfont
-	writetext UnknownText_0x60128
+FakeDirectorScript:
+	spriteface RADIOTOWER5F_DIRECTOR, UP
+	showemote EMOTE_SHOCK, RADIOTOWER5F_DIRECTOR, 15
+	opentext
+	writetext FakeDirectorTextBefore1
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x60109
+	applymovement RADIOTOWER5F_DIRECTOR, FakeDirectorMovement
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	loadfont
-	writetext UnknownText_0x60147
+	opentext
+	writetext FakeDirectorTextBefore2
+	waitbutton
 	closetext
-	loadmovesprites
-	winlosstext UnknownText_0x60223, 0
-	setlasttalked $2
+	winlosstext FakeDirectorWinText, 0
+	setlasttalked RADIOTOWER5F_DIRECTOR
 	loadtrainer EXECUTIVEM, 3
 	startbattle
-	returnafterbattle
-	loadfont
-	writetext UnknownText_0x60246
-	keeptextopen
+	reloadmapafterbattle
+	opentext
+	writetext FakeDirectorTextAfter
+	buttonsound
 	verbosegiveitem BASEMENT_KEY
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_3
 	end
@@ -48,18 +55,18 @@
 
 Director:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_RADIO_TOWER
-	iftrue UnknownScript_0x60054
-	writetext UnknownText_0x60246
+	iftrue .TrueDirector
+	writetext FakeDirectorTextAfter
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x60054:
-	writetext UnknownText_0x60824
+.TrueDirector:
+	writetext RadioTower5FDirectorText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerExecutivef1:
@@ -66,34 +73,34 @@
 	trainer EVENT_BEAT_ROCKET_EXECUTIVEF_1, EXECUTIVEF, 1, Executivef1SeenText, Executivef1BeatenText, 0, Executivef1Script
 
 Executivef1Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x60358
+	end_if_just_battled
+	opentext
+	writetext Executivef1AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x6006e:
+RadioTower5FRocketBossTrigger:
 	applymovement PLAYER, MovementData_0x60125
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	spriteface $3, RIGHT
-	loadfont
-	writetext UnknownText_0x603d1
+	spriteface RADIOTOWER5F_ROCKET, RIGHT
+	opentext
+	writetext RadioTower5FRocketBossBeforeText
+	waitbutton
 	closetext
-	loadmovesprites
-	winlosstext UnknownText_0x604f3, 0
-	setlasttalked $3
+	winlosstext RadioTower5FRocketBossWinText, 0
+	setlasttalked RADIOTOWER5F_ROCKET
 	loadtrainer EXECUTIVEM, 1
 	startbattle
-	returnafterbattle
-	loadfont
-	writetext UnknownText_0x6050e
+	reloadmapafterbattle
+	opentext
+	writetext RadioTower5FRocketBossAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $3
-	disappear $4
+	disappear RADIOTOWER5F_ROCKET
+	disappear RADIOTOWER5F_ROCKET_GIRL
 	pause 15
 	special Special_FadeInQuickly
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_1
@@ -109,46 +116,46 @@
 	setevent EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
 	clearevent EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
 	special PlayMapMusic
-	disappear $2
-	moveperson $2, $c, $0
-	appear $2
-	applymovement $2, MovementData_0x6010f
+	disappear RADIOTOWER5F_DIRECTOR
+	moveperson RADIOTOWER5F_DIRECTOR, $c, $0
+	appear RADIOTOWER5F_DIRECTOR
+	applymovement RADIOTOWER5F_DIRECTOR, RadioTower5FDirectorWalksIn
 	spriteface PLAYER, RIGHT
-	loadfont
-	writetext UnknownText_0x605b2
-	keeptextopen
+	opentext
+	writetext RadioTower5FDirectorThankYouText
+	buttonsound
 	verbosegiveitem CLEAR_BELL
-	writetext UnknownText_0x6062c
+	writetext RadioTower5FDirectorDescribeClearBellText
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $2
 	domaptrigger ECRUTEAK_HOUSE, $0
 	setevent EVENT_GOT_CLEAR_BELL
 	setevent EVENT_TEAM_ROCKET_DISBANDED
-	jump UnknownScript_0x600f1
+	jump .UselessJump
 
-UnknownScript_0x600f1:
-	applymovement $2, MovementData_0x6011a
+.UselessJump:
+	applymovement RADIOTOWER5F_DIRECTOR, RadioTower5FDirectorWalksOut
 	playsound SFX_EXIT_BUILDING
-	disappear $2
+	disappear RADIOTOWER5F_DIRECTOR
 	end
 
 Ben:
 	jumptextfaceplayer BenText
 
-ItemFragment_0x600fe:
-	db ULTRA_BALL, 1
+RadioTower5FUltraBall:
+	itemball ULTRA_BALL
 
 MapRadioTower5FSignpost0Script:
-	jumptext UnknownText_0x608e0
+	jumptext SignpostRadioTower5FOffice
 
 MapRadioTower5FSignpost2Script:
-	jumptext UnknownText_0x608f9
+	jumptext SignpostRadioTower5FStudio
 
 RadioTower5FBookshelf:
 	jumpstd magazinebookshelf
 
-MovementData_0x60109:
+FakeDirectorMovement:
 	step_left
 	step_left
 	step_left
@@ -156,7 +163,7 @@
 	step_up
 	step_end
 
-MovementData_0x6010f:
+RadioTower5FDirectorWalksIn:
 	step_down
 	step_down
 	step_right
@@ -169,7 +176,7 @@
 	step_left
 	step_end
 
-MovementData_0x6011a:
+RadioTower5FDirectorWalksOut:
 	step_right
 	step_up
 	step_up
@@ -187,12 +194,12 @@
 	step_left
 	step_end
 
-UnknownText_0x60128:
+FakeDirectorTextBefore1:
 	text "Y-you! You came to"
 	line "rescue me?"
 	done
 
-UnknownText_0x60147:
+FakeDirectorTextBefore2:
 	text "Is that what you"
 	line "were expecting?"
 
@@ -214,12 +221,12 @@
 	cont "you can beat me!"
 	done
 
-UnknownText_0x60223:
+FakeDirectorWinText:
 	text "OK, OK. I'll tell"
 	line "you where he is."
 	done
 
-UnknownText_0x60246:
+FakeDirectorTextAfter:
 	text "We stashed the"
 	line "real DIRECTOR in"
 
@@ -251,7 +258,7 @@
 	line "I still lost…"
 	done
 
-UnknownText_0x60358:
+Executivef1AfterText:
 	text "<PLAYER>, isn't it?"
 
 	para "A brat like you"
@@ -265,7 +272,7 @@
 	cont "your power."
 	done
 
-UnknownText_0x603d1:
+RadioTower5FRocketBossBeforeText:
 	text "Oh? You managed to"
 	line "get this far?"
 
@@ -294,12 +301,12 @@
 	cont "our plans."
 	done
 
-UnknownText_0x604f3:
+RadioTower5FRocketBossWinText:
 	text "No! Forgive me,"
 	line "GIOVANNI!"
 	done
 
-UnknownText_0x6050e:
+RadioTower5FRocketBossAfterText:
 	text "How could this be?"
 
 	para "Our dreams have"
@@ -317,7 +324,7 @@
 	para "Farewell."
 	done
 
-UnknownText_0x605b2:
+RadioTower5FDirectorThankYouText:
 	text "DIRECTOR: <PLAY_G>,"
 	line "thank you!"
 
@@ -332,7 +339,7 @@
 	cont "take this."
 	done
 
-UnknownText_0x6062c:
+RadioTower5FDirectorDescribeClearBellText:
 	text "There used to be a"
 	line "tower right here"
 	cont "in GOLDENROD CITY."
@@ -383,7 +390,7 @@
 	line "my OFFICE."
 	done
 
-UnknownText_0x60824:
+RadioTower5FDirectorText:
 	text "DIRECTOR: Hello,"
 	line "<PLAY_G>!"
 
@@ -406,12 +413,12 @@
 	line "to our music?"
 	done
 
-UnknownText_0x608e0:
+SignpostRadioTower5FOffice:
 	text "5F DIRECTOR'S"
 	line "   OFFICE"
 	done
 
-UnknownText_0x608f9:
+SignpostRadioTower5FStudio:
 	text "5F STUDIO 1"
 	done
 
@@ -426,8 +433,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $3, $0, $0, UnknownScript_0x60011, $0, $0
-	xy_trigger 1, $5, $10, $0, UnknownScript_0x6006e, $0, $0
+	xy_trigger 0, $3, $0, $0, FakeDirectorScript, $0, $0
+	xy_trigger 1, $5, $10, $0, RadioTower5FRocketBossTrigger, $0, $0
 
 .Signposts:
 	db 5
@@ -443,4 +450,4 @@
 	person_event SPRITE_ROCKET, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET_GIRL, 2, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerExecutivef1, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKER, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Ben, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_POKE_BALL, 5, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x600fe, EVENT_RADIO_TOWER_5F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 5, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RadioTower5FUltraBall, EVENT_RADIO_TOWER_5F_ULTRA_BALL
--- a/maps/RedsHouse1F.asm
+++ b/maps/RedsHouse1F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const REDSHOUSE1F_REDS_MOM
+
 RedsHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,18 +16,18 @@
 
 RedsMom:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_MET_REDS_MOM
 	iftrue .MetAlready
 	writetext RedsMomText1
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_MET_REDS_MOM
 	end
 .MetAlready
 	writetext RedsMomText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RedsHouse1FTV:
--- a/maps/RedsHouse2F.asm
+++ b/maps/RedsHouse2F.asm
@@ -1,3 +1,4 @@
+
 RedsHouse2F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/RockTunnel1F.asm
+++ b/maps/RockTunnel1F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROCKTUNNEL1F_POKE_BALL1
+	const ROCKTUNNEL1F_POKE_BALL2
+
 RockTunnel1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,17 +9,17 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x743b5:
-	db ELIXER, 1
+RockTunnel1FElixer:
+	itemball ELIXER
 
-ItemFragment_0x743b7:
-	db TM_STEEL_WING, 1
+RockTunnel1FTMSteelWing:
+	itemball TM_STEEL_WING
 
-MapRockTunnel1FSignpostItem0:
+RockTunnel1FHiddenXAccuracy:
 	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_ACCURACY, X_ACCURACY
 	
 
-MapRockTunnel1FSignpostItem1:
+RockTunnel1FHiddenXDefend:
 	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_DEFEND, X_DEFEND
 	
 
@@ -37,10 +41,10 @@
 
 .Signposts:
 	db 2
-	signpost 4, 24, SIGNPOST_ITEM, MapRockTunnel1FSignpostItem0
-	signpost 15, 21, SIGNPOST_ITEM, MapRockTunnel1FSignpostItem1
+	signpost 4, 24, SIGNPOST_ITEM, RockTunnel1FHiddenXAccuracy
+	signpost 15, 21, SIGNPOST_ITEM, RockTunnel1FHiddenXDefend
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 18, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x743b5, EVENT_ROCK_TUNNEL_1F_ELIXER
-	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, RockTunnel1FElixer, EVENT_ROCK_TUNNEL_1F_ELIXER
+	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RockTunnel1FTMSteelWing, EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
--- a/maps/RockTunnelB1F.asm
+++ b/maps/RockTunnelB1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROCKTUNNELB1F_POKE_BALL1
+	const ROCKTUNNELB1F_POKE_BALL2
+	const ROCKTUNNELB1F_POKE_BALL3
+
 RockTunnelB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,16 +10,16 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x74409:
-	db IRON, 1
+RockTunnelB1FIron:
+	itemball IRON
 
-ItemFragment_0x7440b:
-	db PP_UP, 1
+RockTunnelB1FPPUp:
+	itemball PP_UP
 
-ItemFragment_0x7440d:
-	db REVIVE, 1
+RockTunnelB1FRevive:
+	itemball REVIVE
 
-MapRockTunnelB1FSignpostItem0:
+RockTunnelB1FHiddenMaxPotion:
 	dwb EVENT_ROCK_TUNNEL_B1F_HIDDEN_MAX_POTION, MAX_POTION
 	
 
@@ -34,10 +39,10 @@
 
 .Signposts:
 	db 1
-	signpost 14, 4, SIGNPOST_ITEM, MapRockTunnelB1FSignpostItem0
+	signpost 14, 4, SIGNPOST_ITEM, RockTunnelB1FHiddenMaxPotion
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x74409, EVENT_ROCK_TUNNEL_B1F_IRON
-	person_event SPRITE_POKE_BALL, 17, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7440b, EVENT_ROCK_TUNNEL_B1F_PP_UP
-	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7440d, EVENT_ROCK_TUNNEL_B1F_REVIVE
+	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RockTunnelB1FIron, EVENT_ROCK_TUNNEL_B1F_IRON
+	person_event SPRITE_POKE_BALL, 17, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RockTunnelB1FPPUp, EVENT_ROCK_TUNNEL_B1F_PP_UP
+	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RockTunnelB1FRevive, EVENT_ROCK_TUNNEL_B1F_REVIVE
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE1_YOUNGSTER
+	const ROUTE1_COOLTRAINER_F
+	const ROUTE1_FRUIT_TREE
+
 Route1_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +14,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_DANNY, SCHOOLBOY, DANNY, SchoolboyDannySeenText, SchoolboyDannyBeatenText, 0, SchoolboyDannyScript
 
 SchoolboyDannyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac5d7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfQuinn:
@@ -20,11 +25,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_QUINN, COOLTRAINERF, QUINN, CooltrainerfQuinnSeenText, CooltrainerfQuinnBeatenText, 0, CooltrainerfQuinnScript
 
 CooltrainerfQuinnScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac640
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute1Signpost0Script:
--- a/maps/Route10North.asm
+++ b/maps/Route10North.asm
@@ -1,3 +1,4 @@
+
 Route10North_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route10PokeCenter1F.asm
+++ b/maps/Route10PokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE10POKECENTER1F_NURSE
+	const ROUTE10POKECENTER1F_GENTLEMAN
+	const ROUTE10POKECENTER1F_GYM_GUY
+	const ROUTE10POKECENTER1F_COOLTRAINER_F
+
 Route10PokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,18 +19,18 @@
 
 GymGuyScript_0x188bda:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x188be8
 	writetext UnknownText_0x188c26
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x188be8:
 	writetext UnknownText_0x188c9e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x188bee:
--- a/maps/Route10PokeCenter2FBeta.asm
+++ b/maps/Route10PokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 Route10PokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE10SOUTH_POKEFAN_M1
+	const ROUTE10SOUTH_POKEFAN_M2
+
 Route10South_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	trainer EVENT_BEAT_HIKER_JIM, HIKER, JIM, HikerJimSeenText, HikerJimBeatenText, 0, HikerJimScript
 
 HikerJimScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae43b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmRobert:
@@ -20,11 +24,11 @@
 	trainer EVENT_BEAT_POKEFANM_ROBERT, POKEFANM, ROBERT, PokefanmRobertSeenText, PokefanmRobertBeatenText, 0, PokefanmRobertScript
 
 PokefanmRobertScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae4a9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute10SouthSignpost0Script:
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const ROUTE11_YOUNGSTER1
+	const ROUTE11_YOUNGSTER2
+	const ROUTE11_YOUNGSTER3
+	const ROUTE11_YOUNGSTER4
+	const ROUTE11_FRUIT_TREE
+
 Route11_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +16,11 @@
 	trainer EVENT_BEAT_YOUNGSTER_OWEN, YOUNGSTER, OWEN, YoungsterOwenSeenText, YoungsterOwenBeatenText, 0, YoungsterOwenScript
 
 YoungsterOwenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x680b2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterJason:
@@ -20,11 +27,11 @@
 	trainer EVENT_BEAT_YOUNGSTER_JASON, YOUNGSTER, JASON, YoungsterJasonSeenText, YoungsterJasonBeatenText, 0, YoungsterJasonScript
 
 YoungsterJasonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6814a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicHerman:
@@ -31,11 +38,11 @@
 	trainer EVENT_BEAT_PSYCHIC_HERMAN, PSYCHIC_T, HERMAN, PsychicHermanSeenText, PsychicHermanBeatenText, 0, PsychicHermanScript
 
 PsychicHermanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6817b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicFidel:
@@ -42,11 +49,11 @@
 	trainer EVENT_BEAT_PSYCHIC_FIDEL, PSYCHIC_T, FIDEL, PsychicFidelSeenText, PsychicFidelBeatenText, 0, PsychicFidelScript
 
 PsychicFidelScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x681ec
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute11Signpost0Script:
@@ -55,7 +62,7 @@
 FruitTreeScript_0x68055:
 	fruittree FRUITTREE_ROUTE_11
 
-MapRoute11SignpostItem1:
+Route11HiddenRevive:
 	dwb EVENT_ROUTE_11_HIDDEN_REVIVE, REVIVE
 	
 
@@ -152,7 +159,7 @@
 .Signposts:
 	db 2
 	signpost 7, 3, SIGNPOST_READ, MapRoute11Signpost0Script
-	signpost 5, 32, SIGNPOST_ITEM, MapRoute11SignpostItem1
+	signpost 5, 32, SIGNPOST_ITEM, Route11HiddenRevive
 
 .PersonEvents:
 	db 5
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ROUTE12_FISHER1
+	const ROUTE12_FISHER2
+	const ROUTE12_FISHER3
+	const ROUTE12_FISHER4
+	const ROUTE12_POKE_BALL1
+	const ROUTE12_POKE_BALL2
+
 Route12_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +17,11 @@
 	trainer EVENT_BEAT_FISHER_KYLE, FISHER, KYLE, FisherKyleSeenText, FisherKyleBeatenText, 0, FisherKyleScript
 
 FisherKyleScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a7238
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherMartin:
@@ -20,11 +28,11 @@
 	trainer EVENT_BEAT_FISHER_MARTIN, FISHER, MARTIN, FisherMartinSeenText, FisherMartinBeatenText, 0, FisherMartinScript
 
 FisherMartinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a704c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherStephen:
@@ -31,11 +39,11 @@
 	trainer EVENT_BEAT_FISHER_STEPHEN, FISHER, STEPHEN, FisherStephenSeenText, FisherStephenBeatenText, 0, FisherStephenScript
 
 FisherStephenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a70d4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherBarney:
@@ -42,11 +50,11 @@
 	trainer EVENT_BEAT_FISHER_BARNEY, FISHER, BARNEY, FisherBarneySeenText, FisherBarneyBeatenText, 0, FisherBarneyScript
 
 FisherBarneyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a716d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute12Signpost0Script:
@@ -55,13 +63,13 @@
 MapRoute12Signpost1Script:
 	jumptext UnknownText_0x1a72c1
 
-ItemFragment_0x1a700b:
-	db CALCIUM, 1
+Route12Calcium:
+	itemball CALCIUM
 
-ItemFragment_0x1a700d:
-	db NUGGET, 1
+Route12Nugget:
+	itemball NUGGET
 
-MapRoute12SignpostItem2:
+Route12HiddenElixer:
 	dwb EVENT_ROUTE_12_HIDDEN_ELIXER, ELIXER
 	
 
@@ -174,7 +182,7 @@
 	db 3
 	signpost 27, 11, SIGNPOST_READ, MapRoute12Signpost0Script
 	signpost 9, 13, SIGNPOST_READ, MapRoute12Signpost1Script
-	signpost 13, 14, SIGNPOST_ITEM, MapRoute12SignpostItem2
+	signpost 13, 14, SIGNPOST_ITEM, Route12HiddenElixer
 
 .PersonEvents:
 	db 6
@@ -182,5 +190,5 @@
 	person_event SPRITE_FISHER, 23, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherStephen, -1
 	person_event SPRITE_FISHER, 38, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 5, TrainerFisherBarney, -1
 	person_event SPRITE_FISHER, 7, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherKyle, -1
-	person_event SPRITE_POKE_BALL, 43, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a700b, EVENT_ROUTE_12_CALCIUM
-	person_event SPRITE_POKE_BALL, 51, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a700d, EVENT_ROUTE_12_NUGGET
+	person_event SPRITE_POKE_BALL, 43, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route12Calcium, EVENT_ROUTE_12_CALCIUM
+	person_event SPRITE_POKE_BALL, 51, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route12Nugget, EVENT_ROUTE_12_NUGGET
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE12SUPERRODHOUSE_FISHING_GURU
+
 Route12SuperRodHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +10,7 @@
 
 FishingGuruScript_0x7f484:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SUPER_ROD
 	iftrue UnknownScript_0x7f4a0
 	writetext UnknownText_0x7f4af
@@ -14,21 +17,21 @@
 	yesorno
 	iffalse UnknownScript_0x7f4a6
 	writetext UnknownText_0x7f52f
-	keeptextopen
+	buttonsound
 	verbosegiveitem SUPER_ROD
 	iffalse UnknownScript_0x7f4aa
 	setevent EVENT_GOT_SUPER_ROD
 UnknownScript_0x7f4a0:
 	writetext UnknownText_0x7f57c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7f4a6:
 	writetext UnknownText_0x7f5ec
-	closetext
+	waitbutton
 UnknownScript_0x7f4aa:
-	loadmovesprites
+	closetext
 	end
 
 SuperRodHouseBookshelf:
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const ROUTE13_YOUNGSTER1
+	const ROUTE13_YOUNGSTER2
+	const ROUTE13_POKEFAN_M1
+	const ROUTE13_POKEFAN_M2
+	const ROUTE13_POKEFAN_M3
+
 Route13_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +16,11 @@
 	trainer EVENT_BEAT_POKEFANM_ALEX, POKEFANM, ALEX, PokefanmAlexSeenText, PokefanmAlexBeatenText, 0, PokefanmAlexScript
 
 PokefanmAlexScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a24e3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmJoshua:
@@ -20,11 +27,11 @@
 	trainer EVENT_BEAT_POKEFANM_JOSHUA, POKEFANM, JOSHUA, PokefanmJoshuaSeenText, PokefanmJoshuaBeatenText, 0, PokefanmJoshuaScript
 
 PokefanmJoshuaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a254f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperPerry:
@@ -31,11 +38,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_PERRY, BIRD_KEEPER, PERRY, Bird_keeperPerrySeenText, Bird_keeperPerryBeatenText, 0, Bird_keeperPerryScript
 
 Bird_keeperPerryScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a25db
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperBret:
@@ -42,11 +49,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_BRET, BIRD_KEEPER, BRET, Bird_keeperBretSeenText, Bird_keeperBretBeatenText, 0, Bird_keeperBretScript
 
 Bird_keeperBretScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a2662
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerKenny:
@@ -53,11 +60,11 @@
 	trainer EVENT_BEAT_HIKER_KENNY, HIKER, KENNY, HikerKennySeenText, HikerKennyBeatenText, 0, HikerKennyScript
 
 HikerKennyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a26c2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute13Signpost0Script:
@@ -69,7 +76,7 @@
 MapRoute13Signpost2Script:
 	jumptext UnknownText_0x1a277d
 
-MapRoute13SignpostItem3:
+Route13HiddenCalcium:
 	dwb EVENT_ROUTE_13_HIDDEN_CALCIUM, CALCIUM
 	
 
@@ -200,7 +207,7 @@
 	signpost 13, 29, SIGNPOST_READ, MapRoute13Signpost0Script
 	signpost 11, 41, SIGNPOST_READ, MapRoute13Signpost1Script
 	signpost 13, 17, SIGNPOST_READ, MapRoute13Signpost2Script
-	signpost 13, 30, SIGNPOST_ITEM, MapRoute13SignpostItem3
+	signpost 13, 30, SIGNPOST_ITEM, Route13HiddenCalcium
 
 .PersonEvents:
 	db 5
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE14_POKEFAN_M1
+	const ROUTE14_YOUNGSTER
+	const ROUTE14_POKEFAN_M2
+	const ROUTE14_TEACHER
+
 Route14_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +13,10 @@
 
 TeacherScript_0x1ad47f:
 	faceplayer
-	loadfont
+	opentext
 	trade $5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmCarter:
@@ -17,11 +23,11 @@
 	trainer EVENT_BEAT_POKEFANM_CARTER, POKEFANM, CARTER, PokefanmCarterSeenText, PokefanmCarterBeatenText, 0, PokefanmCarterScript
 
 PokefanmCarterScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad508
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperRoy:
@@ -28,11 +34,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_ROY, BIRD_KEEPER, ROY, Bird_keeperRoySeenText, Bird_keeperRoyBeatenText, 0, Bird_keeperRoyScript
 
 Bird_keeperRoyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad5a4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmTrevor:
@@ -39,11 +45,11 @@
 	trainer EVENT_BEAT_POKEFANM_TREVOR, POKEFANM, TREVOR, PokefanmTrevorSeenText, PokefanmTrevorBeatenText, 0, PokefanmTrevorScript
 
 PokefanmTrevorScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad660
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanmCarterSeenText:
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ROUTE15_YOUNGSTER1
+	const ROUTE15_YOUNGSTER2
+	const ROUTE15_YOUNGSTER3
+	const ROUTE15_YOUNGSTER4
+	const ROUTE15_TEACHER1
+	const ROUTE15_TEACHER2
+	const ROUTE15_POKE_BALL
+
 Route15_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +18,11 @@
 	trainer EVENT_BEAT_TEACHER_COLETTE, TEACHER, COLETTE, TeacherColetteSeenText, TeacherColetteBeatenText, 0, TeacherColetteScript
 
 TeacherColetteScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa60d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTeacherHillary:
@@ -20,11 +29,11 @@
 	trainer EVENT_BEAT_TEACHER_HILLARY, TEACHER, HILLARY, TeacherHillarySeenText, TeacherHillaryBeatenText, 0, TeacherHillaryScript
 
 TeacherHillaryScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa6ca
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyKipp:
@@ -31,11 +40,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_KIP, SCHOOLBOY, KIPP, SchoolboyKippSeenText, SchoolboyKippBeatenText, 0, SchoolboyKippScript
 
 SchoolboyKippScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa740
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyTommy:
@@ -42,11 +51,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_TOMMY, SCHOOLBOY, TOMMY, SchoolboyTommySeenText, SchoolboyTommyBeatenText, 0, SchoolboyTommyScript
 
 SchoolboyTommyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa7bc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyJohnny:
@@ -53,11 +62,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_JOHNNY, SCHOOLBOY, JOHNNY, SchoolboyJohnnySeenText, SchoolboyJohnnyBeatenText, 0, SchoolboyJohnnyScript
 
 SchoolboyJohnnyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa84a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyBilly:
@@ -64,18 +73,18 @@
 	trainer EVENT_BEAT_SCHOOLBOY_BILLY, SCHOOLBOY, BILLY, SchoolboyBillySeenText, SchoolboyBillyBeatenText, 0, SchoolboyBillyScript
 
 SchoolboyBillyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aa8b0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute15Signpost0Script:
 	jumptext UnknownText_0x1aa8e3
 
-ItemFragment_0x1aa5e4:
-	db PP_UP, 1
+Route15PPUp:
+	itemball PP_UP
 
 TeacherColetteSeenText:
 	text "Have you forgotten"
@@ -216,4 +225,4 @@
 	person_event SPRITE_YOUNGSTER, 10, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyBilly, -1
 	person_event SPRITE_TEACHER, 12, 30, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerTeacherColette, -1
 	person_event SPRITE_TEACHER, 10, 20, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerTeacherHillary, -1
-	person_event SPRITE_POKE_BALL, 5, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1aa5e4, EVENT_ROUTE_15_PP_UP
+	person_event SPRITE_POKE_BALL, 5, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route15PPUp, EVENT_ROUTE_15_PP_UP
--- a/maps/Route15FuchsiaGate.asm
+++ b/maps/Route15FuchsiaGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE15FUCHSIAGATE_OFFICER
+
 Route15FuchsiaGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route16.asm
+++ b/maps/Route16.asm
@@ -1,3 +1,4 @@
+
 Route16_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route16FuchsiaSpeechHouse.asm
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE16FUCHSIASPEECHHOUSE_SUPER_NERD
+
 Route16FuchsiaSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE16GATE_OFFICER
+
 Route16Gate_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -20,12 +23,12 @@
 	end
 
 UnknownScript_0x733f3:
-	showemote EMOTE_SHOCK, $2, 15
+	showemote EMOTE_SHOCK, ROUTE16GATE_OFFICER, 15
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x73496
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x73405
 	end
 
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE17_BIKER1
+	const ROUTE17_BIKER2
+	const ROUTE17_BIKER3
+	const ROUTE17_BIKER4
+
 Route17_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -18,11 +24,11 @@
 	trainer EVENT_BEAT_BIKER_CHARLES, BIKER, CHARLES, BikerCharlesSeenText, BikerCharlesBeatenText, 0, BikerCharlesScript
 
 BikerCharlesScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad293
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBikerRiley:
@@ -29,11 +35,11 @@
 	trainer EVENT_BEAT_BIKER_RILEY, BIKER, RILEY, BikerRileySeenText, BikerRileyBeatenText, 0, BikerRileyScript
 
 BikerRileyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad13b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBikerJoel:
@@ -40,11 +46,11 @@
 	trainer EVENT_BEAT_BIKER_JOEL, BIKER, JOEL, BikerJoelSeenText, BikerJoelBeatenText, 0, BikerJoelScript
 
 BikerJoelScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad196
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBikerGlenn:
@@ -51,18 +57,18 @@
 	trainer EVENT_BEAT_BIKER_GLENN, BIKER, GLENN, BikerGlennSeenText, BikerGlennBeatenText, 0, BikerGlennScript
 
 BikerGlennScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad225
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-MapRoute17SignpostItem0:
+Route17HiddenMaxEther:
 	dwb EVENT_ROUTE_17_HIDDEN_MAX_ETHER, MAX_ETHER
 	
 
-MapRoute17SignpostItem1:
+Route17HiddenMaxElixer:
 	dwb EVENT_ROUTE_17_HIDDEN_MAX_ELIXER, MAX_ELIXER
 	
 
@@ -145,8 +151,8 @@
 
 .Signposts:
 	db 2
-	signpost 54, 9, SIGNPOST_ITEM, MapRoute17SignpostItem0
-	signpost 77, 8, SIGNPOST_ITEM, MapRoute17SignpostItem1
+	signpost 54, 9, SIGNPOST_ITEM, Route17HiddenMaxEther
+	signpost 77, 8, SIGNPOST_ITEM, Route17HiddenMaxElixer
 
 .PersonEvents:
 	db 4
--- a/maps/Route1718Gate.asm
+++ b/maps/Route1718Gate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE1718GATE_OFFICER
+
 Route1718Gate_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -20,12 +23,12 @@
 	end
 
 UnknownScript_0x73617:
-	showemote EMOTE_SHOCK, $2, 15
+	showemote EMOTE_SHOCK, ROUTE1718GATE_OFFICER, 15
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x7364d
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x73629
 	end
 
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE18_YOUNGSTER1
+	const ROUTE18_YOUNGSTER2
+
 Route18_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +13,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_BORIS, BIRD_KEEPER, BORIS, Bird_keeperBorisSeenText, Bird_keeperBorisBeatenText, 0, Bird_keeperBorisScript
 
 Bird_keeperBorisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1acfa5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperBob:
@@ -20,11 +24,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_BOB, BIRD_KEEPER, BOB, Bird_keeperBobSeenText, Bird_keeperBobBeatenText, 0, Bird_keeperBobScript
 
 Bird_keeperBobScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad00d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute18Signpost0Script:
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ROUTE19_SWIMMER_GIRL
+	const ROUTE19_SWIMMER_GUY1
+	const ROUTE19_SWIMMER_GUY2
+	const ROUTE19_SWIMMER_GUY3
+	const ROUTE19_FISHER1
+	const ROUTE19_FISHER2
+
 Route19_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -25,11 +33,11 @@
 	trainer EVENT_BEAT_SWIMMERF_DAWN, SWIMMERF, DAWN, SwimmerfDawnSeenText, SwimmerfDawnBeatenText, 0, SwimmerfDawnScript
 
 SwimmerfDawnScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19ebad
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermHarold:
@@ -36,11 +44,11 @@
 	trainer EVENT_BEAT_SWIMMERM_HAROLD, SWIMMERM, HAROLD, SwimmermHaroldSeenText, SwimmermHaroldBeatenText, 0, SwimmermHaroldScript
 
 SwimmermHaroldScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19eab4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermJerome:
@@ -47,11 +55,11 @@
 	trainer EVENT_BEAT_SWIMMERM_JEROME, SWIMMERM, JEROME, SwimmermJeromeSeenText, SwimmermJeromeBeatenText, 0, SwimmermJeromeScript
 
 SwimmermJeromeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19ec7e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermTucker:
@@ -58,43 +66,43 @@
 	trainer EVENT_BEAT_SWIMMERM_TUCKER, SWIMMERM, TUCKER, SwimmermTuckerSeenText, SwimmermTuckerBeatenText, 0, SwimmermTuckerScript
 
 SwimmermTuckerScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19eb3b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x19ea4d:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CINNABAR_ROCKS_CLEARED
 	iftrue UnknownScript_0x19ea5b
 	writetext UnknownText_0x19ecaf
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19ea5b:
 	writetext UnknownText_0x19ed24
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x19ea61:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CINNABAR_ROCKS_CLEARED
 	iftrue UnknownScript_0x19ea6f
 	writetext UnknownText_0x19ed45
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19ea6f:
 	writetext UnknownText_0x19ed7d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute19Signpost0Script:
--- a/maps/Route19FuchsiaGate.asm
+++ b/maps/Route19FuchsiaGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE19FUCHSIAGATE_OFFICER
+
 Route19FuchsiaGate_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,18 +10,18 @@
 
 OfficerScript_0x1ab3f6:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CINNABAR_ROCKS_CLEARED
 	iftrue .RocksCleared
 	writetext UnknownText_0x1ab40a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .RocksCleared
 	writetext UnknownText_0x1ab48a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x1ab40a:
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const ROUTE2_BUG_CATCHER1
+	const ROUTE2_BUG_CATCHER2
+	const ROUTE2_BUG_CATCHER3
+	const ROUTE2_POKE_BALL1
+	const ROUTE2_POKE_BALL2
+	const ROUTE2_POKE_BALL3
+	const ROUTE2_POKE_BALL4
+	const ROUTE2_FRUIT_TREE
+
 Route2_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +19,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_ROB, BUG_CATCHER, ROB, Bug_catcherRobSeenText, Bug_catcherRobBeatenText, 0, Bug_catcherRobScript
 
 Bug_catcherRobScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac34d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherEd:
@@ -20,11 +30,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_ED, BUG_CATCHER, ED, Bug_catcherEdSeenText, Bug_catcherEdBeatenText, 0, Bug_catcherEdScript
 
 Bug_catcherEdScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac3cf
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherDoug:
@@ -31,11 +41,11 @@
 	trainer EVENT_BEAT_BUG_CATCHER_DOUG, BUG_CATCHER, DOUG, Bug_catcherDougSeenText, Bug_catcherDougBeatenText, 0, Bug_catcherDougScript
 
 Bug_catcherDougScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac423
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute2Signpost0Script:
@@ -44,31 +54,31 @@
 MapRoute2Signpost1Script:
 	jumptext UnknownText_0x1ac49f
 
-ItemFragment_0x1ac2fe:
-	db DIRE_HIT, 1
+Route2DireHit:
+	itemball DIRE_HIT
 
-ItemFragment_0x1ac300:
-	db MAX_POTION, 1
+Route2MaxPotion:
+	itemball MAX_POTION
 
-ItemFragment_0x1ac302:
-	db CARBOS, 1
+Route2Carbos:
+	itemball CARBOS
 
-ItemFragment_0x1ac304:
-	db ELIXER, 1
+Route2Elixer:
+	itemball ELIXER
 
 FruitTreeScript_0x1ac306:
 	fruittree FRUITTREE_ROUTE_2
 
-MapRoute2SignpostItem2:
+Route2HiddenMaxEther:
 	dwb EVENT_ROUTE_2_HIDDEN_MAX_ETHER, MAX_ETHER
 
-MapRoute2SignpostItem3:
+Route2HiddenFullHeal:
 	dwb EVENT_ROUTE_2_HIDDEN_FULL_HEAL, FULL_HEAL
 
-MapRoute2SignpostItem4:
+Route2HiddenFullRestore:
 	dwb EVENT_ROUTE_2_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-MapRoute2SignpostItem5:
+Route2HiddenRevive:
 	dwb EVENT_ROUTE_2_HIDDEN_REVIVE, REVIVE
 
 Bug_catcherRobSeenText:
@@ -155,10 +165,10 @@
 	db 6
 	signpost 51, 7, SIGNPOST_READ, MapRoute2Signpost0Script
 	signpost 9, 11, SIGNPOST_READ, MapRoute2Signpost1Script
-	signpost 23, 7, SIGNPOST_ITEM, MapRoute2SignpostItem2
-	signpost 14, 4, SIGNPOST_ITEM, MapRoute2SignpostItem3
-	signpost 27, 4, SIGNPOST_ITEM, MapRoute2SignpostItem4
-	signpost 30, 11, SIGNPOST_ITEM, MapRoute2SignpostItem5
+	signpost 23, 7, SIGNPOST_ITEM, Route2HiddenMaxEther
+	signpost 14, 4, SIGNPOST_ITEM, Route2HiddenFullHeal
+	signpost 27, 4, SIGNPOST_ITEM, Route2HiddenFullRestore
+	signpost 30, 11, SIGNPOST_ITEM, Route2HiddenRevive
 
 .PersonEvents:
 	db 8
@@ -165,8 +175,8 @@
 	person_event SPRITE_BUG_CATCHER, 45, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherRob, -1
 	person_event SPRITE_BUG_CATCHER, 4, 6, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherEd, -1
 	person_event SPRITE_BUG_CATCHER, 40, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDoug, -1
-	person_event SPRITE_POKE_BALL, 29, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1ac2fe, EVENT_ROUTE_2_DIRE_HIT
-	person_event SPRITE_POKE_BALL, 23, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1ac300, EVENT_ROUTE_2_MAX_POTION
-	person_event SPRITE_POKE_BALL, 2, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1ac302, EVENT_ROUTE_2_CARBOS
-	person_event SPRITE_POKE_BALL, 50, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1ac304, EVENT_ROUTE_2_ELIXER
+	person_event SPRITE_POKE_BALL, 29, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2DireHit, EVENT_ROUTE_2_DIRE_HIT
+	person_event SPRITE_POKE_BALL, 23, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2MaxPotion, EVENT_ROUTE_2_MAX_POTION
+	person_event SPRITE_POKE_BALL, 2, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2Carbos, EVENT_ROUTE_2_CARBOS
+	person_event SPRITE_POKE_BALL, 50, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2Elixer, EVENT_ROUTE_2_ELIXER
 	person_event SPRITE_FRUIT_TREE, 14, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1ac306, -1
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE20_SWIMMER_GIRL1
+	const ROUTE20_SWIMMER_GIRL2
+	const ROUTE20_SWIMMER_GUY
+
 Route20_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -17,11 +22,11 @@
 	trainer EVENT_BEAT_SWIMMERF_NICOLE, SWIMMERF, NICOLE, SwimmerfNicoleSeenText, SwimmerfNicoleBeatenText, 0, SwimmerfNicoleScript
 
 SwimmerfNicoleScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1acd93
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfLori:
@@ -28,11 +33,11 @@
 	trainer EVENT_BEAT_SWIMMERF_LORI, SWIMMERF, LORI, SwimmerfLoriSeenText, SwimmerfLoriBeatenText, 0, SwimmerfLoriScript
 
 SwimmerfLoriScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ace15
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermCameron:
@@ -39,11 +44,11 @@
 	trainer EVENT_BEAT_SWIMMERM_CAMERON, SWIMMERM, CAMERON, SwimmermCameronSeenText, SwimmermCameronBeatenText, 0, SwimmermCameronScript
 
 SwimmermCameronScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ace8b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute20Signpost0Script:
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE21_SWIMMER_GIRL
+	const ROUTE21_SWIMMER_GUY
+	const ROUTE21_FISHER
+
 Route21_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +14,11 @@
 	trainer EVENT_BEAT_SWIMMERM_SETH, SWIMMERM, SETH, SwimmermSethSeenText, SwimmermSethBeatenText, 0, SwimmermSethScript
 
 SwimmermSethScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac873
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfNikki:
@@ -20,11 +25,11 @@
 	trainer EVENT_BEAT_SWIMMERF_NIKKI, SWIMMERF, NIKKI, SwimmerfNikkiSeenText, SwimmerfNikkiBeatenText, 0, SwimmerfNikkiScript
 
 SwimmerfNikkiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac8f1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherArnold:
@@ -31,11 +36,11 @@
 	trainer EVENT_BEAT_FISHER_ARNOLD, FISHER, ARNOLD, FisherArnoldSeenText, FisherArnoldBeatenText, 0, FisherArnoldScript
 
 FisherArnoldScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ac95c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SwimmermSethSeenText:
--- a/maps/Route22.asm
+++ b/maps/Route22.asm
@@ -1,3 +1,4 @@
+
 Route22_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route23.asm
+++ b/maps/Route23.asm
@@ -1,3 +1,4 @@
+
 Route23_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route24.asm
+++ b/maps/Route24.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE24_ROCKET
+
 Route24_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -8,26 +11,26 @@
 RocketScript_0x1adbfa:
 	faceplayer
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1adc2e
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1add67, -1
 	loadtrainer GRUNTM, 31
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x1addc0
-	keeptextopen
-	special Special_RotatePalettesRightMusic
+	buttonsound
+	special Special_FadeOutMusic
 	writetext UnknownText_0x1adee1
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $2
+	disappear ROUTE24_ROCKET
 	pause 25
 	special Special_FadeInQuickly
 	playmapmusic
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const ROUTE25_MISTY
+	const ROUTE25_COOLTRAINER_M1
+	const ROUTE25_YOUNGSTER1
+	const ROUTE25_LASS1
+	const ROUTE25_YOUNGSTER2
+	const ROUTE25_LASS2
+	const ROUTE25_YOUNGSTER3
+	const ROUTE25_LASS3
+	const ROUTE25_SUPER_NERD
+	const ROUTE25_COOLTRAINER_M2
+	const ROUTE25_POKE_BALL
+
 Route25_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -16,26 +29,26 @@
 	end
 
 UnknownScript_0x19eea0:
-	showemote EMOTE_HEART, $2, 15
+	showemote EMOTE_HEART, ROUTE25_MISTY, 15
 	pause 30
-	showemote EMOTE_SHOCK, $3, 10
-	spriteface $2, DOWN
-	applymovement $3, MovementData_0x19efe8
-	disappear $3
+	showemote EMOTE_SHOCK, ROUTE25_COOLTRAINER_M1, 10
+	spriteface ROUTE25_MISTY, DOWN
+	applymovement ROUTE25_COOLTRAINER_M1, MovementData_0x19efe8
+	disappear ROUTE25_COOLTRAINER_M1
 	pause 15
 	playmusic MUSIC_BEAUTY_ENCOUNTER
-	spriteface $2, UP
+	spriteface ROUTE25_MISTY, UP
 	pause 10
-	applymovement $2, MovementData_0x19efed
-	loadfont
+	applymovement ROUTE25_MISTY, MovementData_0x19efed
+	opentext
 	writetext UnknownText_0x19f006
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $2, MovementData_0x19effa
+	applymovement ROUTE25_MISTY, MovementData_0x19effa
 	spriteface PLAYER, LEFT
-	applymovement $2, MovementData_0x19f000
-	disappear $2
+	applymovement ROUTE25_MISTY, MovementData_0x19f000
+	disappear ROUTE25_MISTY
 	clearevent EVENT_TRAINERS_IN_CERULEAN_GYM
 	dotrigger $0
 	special RestartMapMusic
@@ -42,26 +55,26 @@
 	end
 
 UnknownScript_0x19eee0:
-	showemote EMOTE_HEART, $2, 15
+	showemote EMOTE_HEART, ROUTE25_MISTY, 15
 	pause 30
-	showemote EMOTE_SHOCK, $3, 10
-	spriteface $2, DOWN
-	applymovement $3, MovementData_0x19efea
-	disappear $3
+	showemote EMOTE_SHOCK, ROUTE25_COOLTRAINER_M1, 10
+	spriteface ROUTE25_MISTY, DOWN
+	applymovement ROUTE25_COOLTRAINER_M1, MovementData_0x19efea
+	disappear ROUTE25_COOLTRAINER_M1
 	pause 15
 	playmusic MUSIC_BEAUTY_ENCOUNTER
-	spriteface $2, UP
+	spriteface ROUTE25_MISTY, UP
 	pause 10
-	applymovement $2, MovementData_0x19eff4
-	loadfont
+	applymovement ROUTE25_MISTY, MovementData_0x19eff4
+	opentext
 	writetext UnknownText_0x19f006
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, UP
-	applymovement $2, MovementData_0x19effd
+	applymovement ROUTE25_MISTY, MovementData_0x19effd
 	spriteface PLAYER, LEFT
-	applymovement $2, MovementData_0x19f000
-	disappear $2
+	applymovement ROUTE25_MISTY, MovementData_0x19f000
+	disappear ROUTE25_MISTY
 	clearevent EVENT_TRAINERS_IN_CERULEAN_GYM
 	dotrigger $0
 	special RestartMapMusic
@@ -71,11 +84,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_DUDLEY, SCHOOLBOY, DUDLEY, SchoolboyDudleySeenText, SchoolboyDudleyBeatenText, 0, SchoolboyDudleyScript
 
 SchoolboyDudleyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f1b5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerLassEllen:
@@ -82,11 +95,11 @@
 	trainer EVENT_BEAT_LASS_ELLEN, LASS, ELLEN, LassEllenSeenText, LassEllenBeatenText, 0, LassEllenScript
 
 LassEllenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f208
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyJoe:
@@ -93,11 +106,11 @@
 	trainer EVENT_BEAT_SCHOOLBOY_JOE, SCHOOLBOY, JOE, SchoolboyJoeSeenText, SchoolboyJoeBeatenText, 0, SchoolboyJoeScript
 
 SchoolboyJoeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f25c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerLassLaura:
@@ -104,11 +117,11 @@
 	trainer EVENT_BEAT_LASS_LAURA, LASS, LAURA, LassLauraSeenText, LassLauraBeatenText, 0, LassLauraScript
 
 LassLauraScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f2a6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCamperLloyd:
@@ -115,11 +128,11 @@
 	trainer EVENT_BEAT_CAMPER_LLOYD, CAMPER, LLOYD, CamperLloydSeenText, CamperLloydBeatenText, 0, CamperLloydScript
 
 CamperLloydScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f2f8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerLassShannon:
@@ -126,11 +139,11 @@
 	trainer EVENT_BEAT_LASS_SHANNON, LASS, SHANNON, LassShannonSeenText, LassShannonBeatenText, 0, LassShannonScript
 
 LassShannonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f35b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdPat:
@@ -137,49 +150,49 @@
 	trainer EVENT_BEAT_SUPER_NERD_PAT, SUPER_NERD, PAT, SupernerdPatSeenText, SupernerdPatBeatenText, 0, SupernerdPatScript
 
 SupernerdPatScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19f41a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerMScript_0x19efac:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_COOLTRAINERM_KEVIN
 	iftrue UnknownScript_0x19efda
 	checkevent EVENT_CLEARED_NUGGET_BRIDGE
 	iftrue UnknownScript_0x19efc7
 	writetext UnknownText_0x19f43b
-	keeptextopen
+	buttonsound
 	verbosegiveitem NUGGET
 	iffalse UnknownScript_0x19efde
 	setevent EVENT_CLEARED_NUGGET_BRIDGE
 UnknownScript_0x19efc7:
 	writetext UnknownText_0x19f49d
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x19f4fd, 0
 	loadtrainer COOLTRAINERM, KEVIN
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_COOLTRAINERM_KEVIN
-	loadfont
+	opentext
 UnknownScript_0x19efda:
 	writetext UnknownText_0x19f520
-	closetext
+	waitbutton
 UnknownScript_0x19efde:
-	loadmovesprites
+	closetext
 	end
 
 MapRoute25Signpost0Script:
 	jumptext UnknownText_0x19f567
 
-ItemFragment_0x19efe3:
-	db PROTEIN, 1
+Route25Protein:
+	itemball PROTEIN
 
-MapRoute25SignpostItem1:
+Route25HiddenPotion:
 	dwb EVENT_ROUTE_25_HIDDEN_POTION, POTION
 	
 
@@ -435,7 +448,7 @@
 .Signposts:
 	db 2
 	signpost 5, 45, SIGNPOST_READ, MapRoute25Signpost0Script
-	signpost 5, 4, SIGNPOST_ITEM, MapRoute25SignpostItem1
+	signpost 5, 4, SIGNPOST_ITEM, Route25HiddenPotion
 
 .PersonEvents:
 	db 11
@@ -449,4 +462,4 @@
 	person_event SPRITE_LASS, 11, 28, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassShannon, -1
 	person_event SPRITE_SUPER_NERD, 7, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerSupernerdPat, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 37, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19efac, -1
-	person_event SPRITE_POKE_BALL, 4, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19efe3, EVENT_ROUTE_25_PROTEIN
+	person_event SPRITE_POKE_BALL, 4, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route25Protein, EVENT_ROUTE_25_PROTEIN
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const ROUTE26_COOLTRAINER_M1
+	const ROUTE26_COOLTRAINER_M2
+	const ROUTE26_COOLTRAINER_F1
+	const ROUTE26_COOLTRAINER_F2
+	const ROUTE26_YOUNGSTER
+	const ROUTE26_FISHER
+	const ROUTE26_FRUIT_TREE
+	const ROUTE26_POKE_BALL
+
 Route26_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +19,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_JAKE, COOLTRAINERM, JAKE, CooltrainermJakeSeenText, CooltrainermJakeBeatenText, 0, CooltrainermJakeScript
 
 CooltrainermJakeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a4f08
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermGaven3:
@@ -21,8 +31,8 @@
 
 CooltrainermGaven3Script:
 	writecode VAR_CALLERID, PHONE_COOLTRAINERM_GAVEN
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0x1a4d79
 	checkcellnum PHONE_COOLTRAINERM_GAVEN
@@ -30,7 +40,7 @@
 	checkevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4d62
 	writetext UnknownText_0x1a4fe4
-	keeptextopen
+	buttonsound
 	setevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a4dbf
 	jump UnknownScript_0x1a4d65
@@ -61,7 +71,7 @@
 .LoadFight0
 	loadtrainer COOLTRAINERM, GAVEN3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGavenFightCount, 1
 	clearflag ENGINE_GAVEN
 	end
@@ -69,7 +79,7 @@
 .LoadFight1
 	loadtrainer COOLTRAINERM, GAVEN1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGavenFightCount, 2
 	clearflag ENGINE_GAVEN
 	end
@@ -77,7 +87,7 @@
 .LoadFight2
 	loadtrainer COOLTRAINERM, GAVEN2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_GAVEN
 	end
 
@@ -113,11 +123,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_JOYCE, COOLTRAINERF, JOYCE, CooltrainerfJoyceSeenText, CooltrainerfJoyceBeatenText, 0, CooltrainerfJoyceScript
 
 CooltrainerfJoyceScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a50d7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfBeth1:
@@ -125,8 +135,8 @@
 
 CooltrainerfBeth1Script:
 	writecode VAR_CALLERID, PHONE_COOLTRAINERF_BETH
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0x1a4e35
 	checkcellnum PHONE_COOLTRAINERF_BETH
@@ -134,7 +144,7 @@
 	checkevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4e1e
 	writetext UnknownText_0x1a51d9
-	keeptextopen
+	buttonsound
 	setevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a4e7b
 	jump UnknownScript_0x1a4e21
@@ -165,7 +175,7 @@
 .LoadFight0
 	loadtrainer COOLTRAINERF, BETH1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wBethFightCount, 1
 	clearflag ENGINE_BETH
 	end
@@ -173,7 +183,7 @@
 .LoadFight1
 	loadtrainer COOLTRAINERF, BETH2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wBethFightCount, 2
 	clearflag ENGINE_BETH
 	end
@@ -181,7 +191,7 @@
 .LoadFight2
 	loadtrainer COOLTRAINERF, BETH3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_BETH
 	end
 
@@ -217,11 +227,11 @@
 	trainer EVENT_BEAT_PSYCHIC_RICHARD, PSYCHIC_T, RICHARD, PsychicRichardSeenText, PsychicRichardBeatenText, 0, PsychicRichardScript
 
 PsychicRichardScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a5278
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherScott:
@@ -228,11 +238,11 @@
 	trainer EVENT_BEAT_FISHER_SCOTT, FISHER, SCOTT, FisherScottSeenText, FisherScottBeatenText, 0, FisherScottScript
 
 FisherScottScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a5326
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute26Signpost0Script:
@@ -241,8 +251,8 @@
 FruitTreeScript_0x1a4ec2:
 	fruittree FRUITTREE_ROUTE_26
 
-ItemFragment_0x1a4ec4:
-	db MAX_ELIXER, 1
+Route26MaxElixer:
+	itemball MAX_ELIXER
 
 CooltrainermJakeSeenText:
 	text "I'm making my"
@@ -428,4 +438,4 @@
 	person_event SPRITE_YOUNGSTER, 79, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPsychicRichard, -1
 	person_event SPRITE_FISHER, 92, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherScott, -1
 	person_event SPRITE_FRUIT_TREE, 54, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a4ec2, -1
-	person_event SPRITE_POKE_BALL, 15, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a4ec4, EVENT_ROUTE_26_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 15, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route26MaxElixer, EVENT_ROUTE_26_MAX_ELIXER
--- a/maps/Route26DayofWeekSiblingsHouse.asm
+++ b/maps/Route26DayofWeekSiblingsHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE26DAYOFWEEKSIBLINGSHOUSE_POKEDEX
+
 Route26DayofWeekSiblingsHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,7 +9,7 @@
 	db 0
 
 PokedexScript_0x7b1e4:
-	loadfont
+	opentext
 	writetext UnknownText_0x7b1f9
 	yesorno
 	iffalse UnknownText_0x7b1f7
@@ -14,9 +17,9 @@
 	yesorno
 	iffalse UnknownText_0x7b1f7
 	writetext UnknownText_0x7b2b9
-	closetext
+	waitbutton
 UnknownText_0x7b1f7:
-	loadmovesprites
+	closetext
 	end
 
 UnknownText_0x7b1f9:
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE26HEALSPEECHHOUSE_TEACHER
+
 Route26HealSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,10 +10,10 @@
 
 TeacherScript_0x7b125:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x7b14d
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
 	special Mobile_HealParty
@@ -19,10 +22,10 @@
 	pause 60
 	special Special_FadeInQuickly
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext UnknownText_0x7b18b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route26HealHouseBookshelf:
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const ROUTE27_COOLTRAINER_M1
+	const ROUTE27_COOLTRAINER_M2
+	const ROUTE27_COOLTRAINER_F1
+	const ROUTE27_COOLTRAINER_F2
+	const ROUTE27_YOUNGSTER1
+	const ROUTE27_YOUNGSTER2
+	const ROUTE27_POKE_BALL1
+	const ROUTE27_POKE_BALL2
+	const ROUTE27_FISHER
+
 Route27_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -16,23 +27,23 @@
 	end
 
 UnknownScript_0x1a0873:
-	spriteface $a, LEFT
-	showemote EMOTE_SHOCK, $a, 15
-	applymovement $a, MovementData_0x1a0a66
+	spriteface ROUTE27_FISHER, LEFT
+	showemote EMOTE_SHOCK, ROUTE27_FISHER, 15
+	applymovement ROUTE27_FISHER, MovementData_0x1a0a66
 	jump UnknownScript_0x1a088c
 
 UnknownScript_0x1a0881:
-	spriteface $a, LEFT
-	showemote EMOTE_SHOCK, $a, 15
-	applymovement $a, MovementData_0x1a0a69
+	spriteface ROUTE27_FISHER, LEFT
+	showemote EMOTE_SHOCK, ROUTE27_FISHER, 15
+	applymovement ROUTE27_FISHER, MovementData_0x1a0a69
 UnknownScript_0x1a088c:
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x1a0a6b
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x1a0a71
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $1
 	end
 
@@ -43,11 +54,11 @@
 	trainer EVENT_BEAT_PSYCHIC_GILBERT, PSYCHIC_T, GILBERT, PsychicGilbertSeenText, PsychicGilbertBeatenText, 0, PsychicGilbertScript
 
 PsychicGilbertScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a0dd2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperJose2:
@@ -55,8 +66,8 @@
 
 Bird_keeperJose2Script:
 	writecode VAR_CALLERID, PHONE_BIRDKEEPER_JOSE
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_JOSE
 	iftrue UnknownScript_0x1a08ff
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
@@ -66,7 +77,7 @@
 	checkevent EVENT_JOSE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a08e8
 	writetext UnknownText_0x1a0e42
-	keeptextopen
+	buttonsound
 	setevent EVENT_JOSE_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a0957
 	jump UnknownScript_0x1a08eb
@@ -97,7 +108,7 @@
 .LoadFight0
 	loadtrainer BIRD_KEEPER, JOSE2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoseFightCount, 1
 	clearflag ENGINE_JOSE
 	end
@@ -105,7 +116,7 @@
 .LoadFight1
 	loadtrainer BIRD_KEEPER, JOSE1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoseFightCount, 2
 	clearflag ENGINE_JOSE
 	end
@@ -113,7 +124,7 @@
 .LoadFight2
 	loadtrainer BIRD_KEEPER, JOSE3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_JOSE
 	end
 
@@ -167,11 +178,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_BLAKE, COOLTRAINERM, BLAKE, CooltrainermBlakeSeenText, CooltrainermBlakeBeatenText, 0, CooltrainermBlakeScript
 
 CooltrainermBlakeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a0b0b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermBrian:
@@ -178,11 +189,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_BRIAN, COOLTRAINERM, BRIAN, CooltrainermBrianSeenText, CooltrainermBrianBeatenText, 0, CooltrainermBrianScript
 
 CooltrainermBrianScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a0bac
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfReena:
@@ -190,8 +201,8 @@
 
 CooltrainerfReena1Script:
 	writecode VAR_CALLERID, PHONE_COOLTRAINERF_REENA
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0x1a09e9
 	checkcellnum PHONE_COOLTRAINERF_REENA
@@ -199,7 +210,7 @@
 	checkevent EVENT_REENA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a09d2
 	writetext UnknownText_0x1a0c35
-	keeptextopen
+	buttonsound
 	setevent EVENT_REENA_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a0a2f
 	jump UnknownScript_0x1a09d5
@@ -230,7 +241,7 @@
 .LoadFight0
 	loadtrainer COOLTRAINERF, REENA1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wReenaFightCount, 1
 	clearflag ENGINE_REENA
 	end
@@ -238,7 +249,7 @@
 .LoadFight1
 	loadtrainer COOLTRAINERF, REENA2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wReenaFightCount, 2
 	clearflag ENGINE_REENA
 	end
@@ -246,7 +257,7 @@
 .LoadFight2
 	loadtrainer COOLTRAINERF, REENA3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_REENA
 	end
 
@@ -282,21 +293,21 @@
 	trainer EVENT_BEAT_COOLTRAINERF_MEGAN, COOLTRAINERF, MEGAN, CooltrainerfMeganSeenText, CooltrainerfMeganBeatenText, 0, CooltrainerfMeganScript
 
 CooltrainerfMeganScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a0cce
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute27Signpost0Script:
 	jumptext UnknownText_0x1a0e7f
 
-ItemFragment_0x1a0a62:
-	db TM_SOLARBEAM, 1
+Route27TMSolarbeam:
+	itemball TM_SOLARBEAM
 
-ItemFragment_0x1a0a64:
-	db RARE_CANDY, 1
+Route27RareCandy:
+	itemball RARE_CANDY
 
 MovementData_0x1a0a66:
 	step_left
@@ -485,6 +496,6 @@
 	person_event SPRITE_COOLTRAINER_F, 6, 37, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfMegan, -1
 	person_event SPRITE_YOUNGSTER, 7, 65, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicGilbert, -1
 	person_event SPRITE_YOUNGSTER, 13, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperJose2, -1
-	person_event SPRITE_POKE_BALL, 12, 60, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a0a62, EVENT_ROUTE_27_TM_SOLARBEAM
-	person_event SPRITE_POKE_BALL, 12, 53, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a0a64, EVENT_ROUTE_27_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 12, 60, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route27TMSolarbeam, EVENT_ROUTE_27_TM_SOLARBEAM
+	person_event SPRITE_POKE_BALL, 12, 53, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route27RareCandy, EVENT_ROUTE_27_RARE_CANDY
 	person_event SPRITE_FISHER, 10, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 3, FisherScript_0x1a089c, -1
--- a/maps/Route27SandstormHouse.asm
+++ b/maps/Route27SandstormHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE27SANDSTORMHOUSE_GRANNY
+
 Route27SandstormHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,32 +10,32 @@
 
 SandstormHouseWoman:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM37_SANDSTORM
 	iftrue .AlreadyGotItem
 	special GetFirstPokemonHappiness
 	writetext SandstormHouseWomanText1
-	keeptextopen
+	buttonsound
 	if_greater_than $95, .Loyal
 	jump .Disloyal
 
 .Loyal
 	writetext SandstormHouseWomanLoyalText
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SANDSTORM
 	iffalse .Done
 	setevent EVENT_GOT_TM37_SANDSTORM
 .AlreadyGotItem
 	writetext SandstormHouseSandstormDescription
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 .Disloyal
 	writetext SandstormHouseWomanDisloyalText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SandstormHouseBookshelf:
--- a/maps/Route28.asm
+++ b/maps/Route28.asm
@@ -1,3 +1,4 @@
+
 Route28_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -8,7 +9,7 @@
 MapRoute28Signpost0Script:
 	jumptext UnknownText_0x1a5413
 
-MapRoute28SignpostItem1:
+Route28HiddenRareCandy:
 	dwb EVENT_ROUTE_28_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
@@ -31,7 +32,7 @@
 .Signposts:
 	db 2
 	signpost 5, 31, SIGNPOST_READ, MapRoute28Signpost0Script
-	signpost 2, 25, SIGNPOST_ITEM, MapRoute28SignpostItem1
+	signpost 2, 25, SIGNPOST_ITEM, Route28HiddenRareCandy
 
 .PersonEvents:
 	db 0
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE28FAMOUSSPEECHHOUSE_COOLTRAINER_F
+	const ROUTE28FAMOUSSPEECHHOUSE_MOLTRES
+
 Route28FamousSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,29 +17,29 @@
 
 Celebrity:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM47_STEEL_WING
 	iftrue .AlreadyGotItem
 	writetext CelebrityText1
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_STEEL_WING
 	iffalse .Done
 	setevent EVENT_GOT_TM47_STEEL_WING
 .Done
-	loadmovesprites
+	closetext
 	end
 .AlreadyGotItem
 	writetext CelebrityText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CelebritysFearow:
-	loadfont
+	opentext
 	writetext CelebritysFearowText
 	cry FEAROW
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CelebrityHouseBookshelf:
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -1,10 +1,20 @@
+const_value set 2
+	const ROUTE29_COOLTRAINER_M1
+	const ROUTE29_YOUNGSTER
+	const ROUTE29_TEACHER1
+	const ROUTE29_FRUIT_TREE
+	const ROUTE29_FISHER
+	const ROUTE29_COOLTRAINER_M2
+	const ROUTE29_TEACHER2
+	const ROUTE29_POKE_BALL
+
 Route29_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1a0f59, 0
-	dw UnknownScript_0x1a0f5a, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 1
@@ -11,159 +21,159 @@
 
 	; callbacks
 
-	dbw 2, TuscanyCallback
+	dbw 2, .Tuscany
 
-UnknownScript_0x1a0f59:
+.Trigger0:
 	end
 
-UnknownScript_0x1a0f5a:
+.Trigger1:
 	end
 
-TuscanyCallback:
+.Tuscany:
 	checkflag ENGINE_ZEPHYRBADGE
 	iftrue .DoesTuscanyAppear
 
 .TuscanyDisappears
-	disappear $8
+	disappear ROUTE29_TEACHER2
 	return
 
 .DoesTuscanyAppear
 	checkcode VAR_WEEKDAY
 	if_not_equal TUESDAY, .TuscanyDisappears
-	appear $8
+	appear ROUTE29_TEACHER2
 	return
 
-UnknownScript_0x1a0f6d:
-	spriteface $2, UP
-	showemote EMOTE_SHOCK, $2, 15
-	applymovement $2, MovementData_0x1a108d
+Route29Tutorial1:
+	spriteface ROUTE29_COOLTRAINER_M1, UP
+	showemote EMOTE_SHOCK, ROUTE29_COOLTRAINER_M1, 15
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData1a
 	spriteface PLAYER, LEFT
 	setevent EVENT_DUDE_TALKED_TO_YOU
-	loadfont
-	writetext UnknownText_0x1a10df
+	opentext
+	writetext CatchingTutorialIntroText
 	yesorno
-	iffalse UnknownScript_0x1a0fd9
-	loadmovesprites
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x1a109a
+	iffalse Script_RefusedTutorial1
+	closetext
+	follow ROUTE29_COOLTRAINER_M1, PLAYER
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData1b
 	stopfollow
-	loadpokedata RATTATA, 5
+	loadwildmon RATTATA, 5
 	catchtutorial BATTLETYPE_TUTORIAL
-	spriteface $2, UP
-	loadfont
-	writetext UnknownText_0x1a114d
+	spriteface ROUTE29_COOLTRAINER_M1, UP
+	opentext
+	writetext CatchingTutorialDebriefText
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $0
 	setevent EVENT_LEARNED_TO_CATCH_POKEMON
 	end
 
-UnknownScript_0x1a0fa3:
-	spriteface $2, UP
-	showemote EMOTE_SHOCK, $2, 15
-	applymovement $2, MovementData_0x1a1094
+Route29Tutorial2:
+	spriteface ROUTE29_COOLTRAINER_M1, UP
+	showemote EMOTE_SHOCK, ROUTE29_COOLTRAINER_M1, 15
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData2a
 	spriteface PLAYER, LEFT
 	setevent EVENT_DUDE_TALKED_TO_YOU
-	loadfont
-	writetext UnknownText_0x1a10df
+	opentext
+	writetext CatchingTutorialIntroText
 	yesorno
-	iffalse UnknownScript_0x1a0fe5
-	loadmovesprites
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x1a10a1
+	iffalse Script_RefusedTutorial2
+	closetext
+	follow ROUTE29_COOLTRAINER_M1, PLAYER
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData2b
 	stopfollow
-	loadpokedata RATTATA, 5
+	loadwildmon RATTATA, 5
 	catchtutorial BATTLETYPE_TUTORIAL
-	spriteface $2, UP
-	loadfont
-	writetext UnknownText_0x1a114d
+	spriteface ROUTE29_COOLTRAINER_M1, UP
+	opentext
+	writetext CatchingTutorialDebriefText
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $0
 	setevent EVENT_LEARNED_TO_CATCH_POKEMON
 	end
 
-UnknownScript_0x1a0fd9:
-	writetext UnknownText_0x1a1197
+Script_RefusedTutorial1:
+	writetext CatchingTutorialDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x1a109a
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData1b
 	dotrigger $0
 	end
 
-UnknownScript_0x1a0fe5:
-	writetext UnknownText_0x1a1197
+Script_RefusedTutorial2:
+	writetext CatchingTutorialDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x1a10a1
+	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData2b
 	dotrigger $0
 	end
 
-CooltrainerMScript_0x1a0ff1:
+CatchingTutorialDudeScript:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_BOXSPACE
-	if_equal $0, UnknownScript_0x1a101c
+	if_equal $0, .BoxFull
 	checkevent EVENT_LEARNED_TO_CATCH_POKEMON
-	iftrue UnknownScript_0x1a101c
+	iftrue .BoxFull
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse UnknownScript_0x1a101c
-	writetext UnknownText_0x1a11e3
+	iffalse .BoxFull
+	writetext CatchingTutorialRepeatText
 	yesorno
-	iffalse UnknownScript_0x1a1022
-	loadmovesprites
-	loadpokedata RATTATA, 5
+	iffalse .Declined
+	closetext
+	loadwildmon RATTATA, 5
 	catchtutorial BATTLETYPE_TUTORIAL
-	loadfont
-	writetext UnknownText_0x1a114d
+	opentext
+	writetext CatchingTutorialDebriefText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LEARNED_TO_CATCH_POKEMON
 	end
 
-UnknownScript_0x1a101c:
+.BoxFull:
 	writetext UnknownText_0x1a10a7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a1022:
-	writetext UnknownText_0x1a1197
+.Declined:
+	writetext CatchingTutorialDeclinedText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-YoungsterScript_0x1a1028:
-	jumptextfaceplayer UnknownText_0x1a1214
+Route29YoungsterScript:
+	jumptextfaceplayer Route29YoungsterText
 
-TeacherScript_0x1a102b:
-	jumptextfaceplayer UnknownText_0x1a126c
+Route29TeacherScript:
+	jumptextfaceplayer Route29TeacherText
 
-FisherScript_0x1a102e:
-	jumptextfaceplayer UnknownText_0x1a12d9
+Route29FisherScript:
+	jumptextfaceplayer Route29FisherText
 
 CooltrainerMScript_0x1a1031:
 	faceplayer
-	loadfont
+	opentext
 	checkday
-	iftrue UnknownScript_0x1a103d
+	iftrue .day_morn
 	checknite
-	iftrue UnknownScript_0x1a1043
-UnknownScript_0x1a103d:
-	writetext UnknownText_0x1a134c
+	iftrue .nite
+.day_morn:
+	writetext Text_WaitingForNight
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a1043:
-	writetext UnknownText_0x1a137c
+.nite:
+	writetext Text_WaitingForMorning
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TuscanyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_PINK_BOW_FROM_TUSCANY
 	iftrue TuscanyTuesdayScript
 	checkcode VAR_WEEKDAY
@@ -171,45 +181,45 @@
 	checkevent EVENT_MET_TUSCANY_OF_TUESDAY
 	iftrue .MetTuscany
 	writetext MeetTuscanyText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_TUSCANY_OF_TUESDAY
 .MetTuscany
 	writetext TuscanyGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem PINK_BOW
 	iffalse TuscanyDoneScript
 	setevent EVENT_GOT_PINK_BOW_FROM_TUSCANY
 	writetext TuscanyGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TuscanyTuesdayScript:
 	writetext TuscanyTuesdayText
-	closetext
+	waitbutton
 TuscanyDoneScript:
-	loadmovesprites
+	closetext
 	end
 
 TuscanyNotTuesdayScript:
 	writetext TuscanyNotTuesdayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute29Signpost0Script:
-	jumptext UnknownText_0x1a158e
+	jumptext Route29SignText1
 
 MapRoute29Signpost1Script:
-	jumptext UnknownText_0x1a15b9
+	jumptext Route29SignText2
 
-FruitTreeScript_0x1a1089:
+Route29FruitTree:
 	fruittree FRUITTREE_ROUTE_29
 
-ItemFragment_0x1a108b:
-	db POTION, 1
+Route29Potion:
+	itemball POTION
 
-MovementData_0x1a108d:
+DudeMovementData1a:
 	step_up
 	step_up
 	step_up
@@ -218,7 +228,7 @@
 	step_right
 	step_end
 
-MovementData_0x1a1094:
+DudeMovementData2a:
 	step_up
 	step_up
 	step_up
@@ -226,7 +236,7 @@
 	step_right
 	step_end
 
-MovementData_0x1a109a:
+DudeMovementData1b:
 	step_left
 	step_left
 	step_down
@@ -235,7 +245,7 @@
 	step_down
 	step_end
 
-MovementData_0x1a10a1:
+DudeMovementData2b:
 	step_left
 	step_left
 	step_down
@@ -251,7 +261,7 @@
 	line "pop out…"
 	done
 
-UnknownText_0x1a10df:
+CatchingTutorialIntroText:
 	text "I've seen you a"
 	line "couple times. How"
 
@@ -263,7 +273,7 @@
 	cont "catch #MON?"
 	done
 
-UnknownText_0x1a114d:
+CatchingTutorialDebriefText:
 	text "That's how you do"
 	line "it."
 
@@ -272,7 +282,7 @@
 	cont "easier to catch."
 	done
 
-UnknownText_0x1a1197:
+CatchingTutorialDeclinedText:
 	text "Oh. Fine, then."
 
 	para "Anyway, if you"
@@ -282,13 +292,13 @@
 	line "to walk a lot."
 	done
 
-UnknownText_0x1a11e3:
+CatchingTutorialRepeatText:
 	text "Huh? You want me"
 	line "to show you how to"
 	cont "catch #MON?"
 	done
 
-UnknownText_0x1a1214:
+Route29YoungsterText:
 	text "Yo. How are your"
 	line "#MON?"
 
@@ -299,7 +309,7 @@
 	line "of the grass."
 	done
 
-UnknownText_0x1a126c:
+Route29TeacherText:
 	text "See those ledges?"
 	line "It's scary to jump"
 	cont "off them."
@@ -311,7 +321,7 @@
 	line "the grass."
 	done
 
-UnknownText_0x1a12d9:
+Route29FisherText:
 	text "I wanted to take a"
 	line "break, so I saved"
 
@@ -320,7 +330,7 @@
 	done
 
 ; possibly unused
-UnknownText_0x1a1316:
+Text_WaitingForDay:
 	text "I'm waiting for"
 	line "#MON that"
 
@@ -328,7 +338,7 @@
 	line "daytime."
 	done
 
-UnknownText_0x1a134c:
+Text_WaitingForNight:
 	text "I'm waiting for"
 	line "#MON that"
 
@@ -336,7 +346,7 @@
 	line "night."
 	done
 
-UnknownText_0x1a137c:
+Text_WaitingForMorning:
 	text "I'm waiting for"
 	line "#MON that"
 
@@ -396,7 +406,7 @@
 	cont "is unfortunate…"
 	done
 
-UnknownText_0x1a158e:
+Route29SignText1:
 	text "ROUTE 29"
 
 	para "CHERRYGROVE CITY -"
@@ -403,7 +413,7 @@
 	line "NEW BARK TOWN"
 	done
 
-UnknownText_0x1a15b9:
+Route29SignText2:
 	text "ROUTE 29"
 
 	para "CHERRYGROVE CITY -"
@@ -420,8 +430,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $8, $35, $0, UnknownScript_0x1a0f6d, $0, $0
-	xy_trigger 1, $9, $35, $0, UnknownScript_0x1a0fa3, $0, $0
+	xy_trigger 1, $8, $35, $0, Route29Tutorial1, $0, $0
+	xy_trigger 1, $9, $35, $0, Route29Tutorial2, $0, $0
 
 .Signposts:
 	db 2
@@ -430,11 +440,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x1a0ff1, -1
-	person_event SPRITE_YOUNGSTER, 16, 27, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a1028, -1
-	person_event SPRITE_TEACHER, 11, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a102b, -1
-	person_event SPRITE_FRUIT_TREE, 2, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a1089, -1
-	person_event SPRITE_FISHER, 3, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a102e, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CatchingTutorialDudeScript, -1
+	person_event SPRITE_YOUNGSTER, 16, 27, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Route29YoungsterScript, -1
+	person_event SPRITE_TEACHER, 11, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Route29TeacherScript, -1
+	person_event SPRITE_FRUIT_TREE, 2, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route29FruitTree, -1
+	person_event SPRITE_FISHER, 3, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Route29FisherScript, -1
 	person_event SPRITE_COOLTRAINER_M, 4, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x1a1031, -1
 	person_event SPRITE_TEACHER, 12, 29, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TuscanyScript, EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
-	person_event SPRITE_POKE_BALL, 2, 48, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a108b, EVENT_ROUTE_29_POTION
+	person_event SPRITE_POKE_BALL, 2, 48, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route29Potion, EVENT_ROUTE_29_POTION
--- a/maps/Route2946Gate.asm
+++ b/maps/Route2946Gate.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE2946GATE_OFFICER
+	const ROUTE2946GATE_YOUNGSTER
+
 Route2946Gate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route2Gate.asm
+++ b/maps/Route2Gate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE2GATE_SCIENTIST
+
 Route2Gate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE2NUGGETSPEECHHOUSE_FISHER
+
 Route2NuggetSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,19 +10,19 @@
 
 FisherScript_0x9b847:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_NUGGET_FROM_GUY
 	iftrue .GotItem
 	writetext UnknownText_0x9b865
-	keeptextopen
+	buttonsound
 	verbosegiveitem NUGGET
 	iffalse .Done
 	setevent EVENT_GOT_NUGGET_FROM_GUY
 .GotItem
 	writetext UnknownText_0x9b8e5
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 Route2NuggetSpeechHouseBookshelf:
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE3_FISHER1
+	const ROUTE3_YOUNGSTER1
+	const ROUTE3_YOUNGSTER2
+	const ROUTE3_FISHER2
+
 Route3_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +15,11 @@
 	trainer EVENT_BEAT_FIREBREATHER_OTIS, FIREBREATHER, OTIS, FirebreatherOtisSeenText, FirebreatherOtisBeatenText, 0, FirebreatherOtisScript
 
 FirebreatherOtisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1adff7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterWarren:
@@ -20,11 +26,11 @@
 	trainer EVENT_BEAT_YOUNGSTER_WARREN, YOUNGSTER, WARREN, YoungsterWarrenSeenText, YoungsterWarrenBeatenText, 0, YoungsterWarrenScript
 
 YoungsterWarrenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae051
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterJimmy:
@@ -31,11 +37,11 @@
 	trainer EVENT_BEAT_YOUNGSTER_JIMMY, YOUNGSTER, JIMMY, YoungsterJimmySeenText, YoungsterJimmyBeatenText, 0, YoungsterJimmyScript
 
 YoungsterJimmyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae0a9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFirebreatherBurt:
@@ -42,11 +48,11 @@
 	trainer EVENT_BEAT_FIREBREATHER_BURT, FIREBREATHER, BURT, FirebreatherBurtSeenText, FirebreatherBurtBeatenText, 0, FirebreatherBurtScript
 
 FirebreatherBurtScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae118
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute3Signpost0Script:
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const ROUTE30_YOUNGSTER1
+	const ROUTE30_YOUNGSTER2
+	const ROUTE30_YOUNGSTER3
+	const ROUTE30_BUG_CATCHER
+	const ROUTE30_YOUNGSTER4
+	const ROUTE30_MONSTER1
+	const ROUTE30_MONSTER2
+	const ROUTE30_FRUIT_TREE1
+	const ROUTE30_FRUIT_TREE2
+	const ROUTE30_COOLTRAINER_F
+	const ROUTE30_POKE_BALL
+
 Route30_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,57 +18,57 @@
 .MapCallbacks:
 	db 0
 
-YoungsterScript_0x1a1673:
-	waitbutton
+YoungsterJoey_ImportantBattleScript:
+	waitsfx
 	playmusic MUSIC_JOHTO_TRAINER_BATTLE
-	loadfont
-	writetext UnknownText_0x1a1806
+	opentext
+	writetext Text_UseTackle
 	pause 30
-	loadmovesprites
+	closetext
 	playsound SFX_TACKLE
-	applymovement $8, MovementData_0x1a17fe
-	loadfont
+	applymovement ROUTE30_MONSTER2, Route30_JoeysRattataAttacksMovement
+	opentext
 	faceplayer
-	writetext UnknownText_0x1a181c
+	writetext Text_ThisIsABigBattle
+	waitbutton
+	spriteface ROUTE30_YOUNGSTER1, UP
 	closetext
-	spriteface $2, UP
-	loadmovesprites
 	playsound SFX_TACKLE
-	applymovement $7, MovementData_0x1a1802
+	applymovement ROUTE30_MONSTER1, Route30_MikeysRattataAttacksMovement
 	special RestartMapMusic
 	end
 
 TrainerYoungsterJoey:
-	trainer EVENT_BEAT_YOUNGSTER_JOEY, YOUNGSTER, JOEY1, YoungsterJoey1SeenText, YoungsterJoey1BeatenText, 0, YoungsterJoey1Script
+	trainer EVENT_BEAT_YOUNGSTER_JOEY, YOUNGSTER, JOEY1, YoungsterJoey1SeenText, YoungsterJoey1BeatenText, 0, .Script
 
-YoungsterJoey1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_YOUNGSTER_JOEY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_JOEY
-	iftrue UnknownScript_0x1a16e0
+	iftrue .Rematch
 	checkcellnum PHONE_YOUNGSTER_JOEY
-	iftrue UnknownScript_0x1a178f
+	iftrue .NumberAccepted
 	checkevent EVENT_JOEY_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x1a16c9
-	writetext UnknownText_0x1a18c2
-	keeptextopen
+	iftrue .AskAgain
+	writetext YoungsterJoey1AfterText
+	buttonsound
 	setevent EVENT_JOEY_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1a1783
-	jump UnknownScript_0x1a16cc
+	scall .AskNumber1
+	jump .RequestNumber
 
-UnknownScript_0x1a16c9:
-	scall UnknownScript_0x1a1787
-UnknownScript_0x1a16cc:
+.AskAgain:
+	scall .AskNumber2
+.RequestNumber:
 	askforphonenumber PHONE_YOUNGSTER_JOEY
-	if_equal $1, UnknownScript_0x1a1797
-	if_equal $2, UnknownScript_0x1a1793
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext YOUNGSTER, JOEY1, $0
-	scall UnknownScript_0x1a178b
-	jump UnknownScript_0x1a178f
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x1a16e0:
-	scall UnknownScript_0x1a179b
+.Rematch:
+	scall .RematchStd
 	winlosstext YoungsterJoey1BeatenText, 0
 	copybytetovar wJoeyFightCount
 	if_equal 4, .Fight4
@@ -78,7 +91,7 @@
 .LoadFight0
 	loadtrainer YOUNGSTER, JOEY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoeyFightCount, 1
 	clearflag ENGINE_JOEY
 	end
@@ -86,7 +99,7 @@
 .LoadFight1
 	loadtrainer YOUNGSTER, JOEY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoeyFightCount, 2
 	clearflag ENGINE_JOEY
 	end
@@ -94,7 +107,7 @@
 .LoadFight2
 	loadtrainer YOUNGSTER, JOEY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoeyFightCount, 3
 	clearflag ENGINE_JOEY
 	end
@@ -102,7 +115,7 @@
 .LoadFight3
 	loadtrainer YOUNGSTER, JOEY4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wJoeyFightCount, 4
 	clearflag ENGINE_JOEY
 	end
@@ -110,153 +123,153 @@
 .LoadFight4
 	loadtrainer YOUNGSTER, JOEY5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_JOEY
 	checkevent EVENT_JOEY_HP_UP
-	iftrue UnknownScript_0x1a176f
+	iftrue .GiveHPUp
 	checkevent EVENT_GOT_HP_UP_FROM_JOEY
-	iftrue UnknownScript_0x1a176e
-	scall UnknownScript_0x1a17a6
+	iftrue .done
+	scall .RematchGift
 	verbosegiveitem HP_UP
-	iffalse UnknownScript_0x1a179f
+	iffalse .PackFull
 	setevent EVENT_GOT_HP_UP_FROM_JOEY
-	jump UnknownScript_0x1a178f
+	jump .NumberAccepted
 
-UnknownScript_0x1a176e:
+.done:
 	end
 
-UnknownScript_0x1a176f:
-	loadfont
-	writetext UnknownText_0x1a1bc0
-	closetext
+.GiveHPUp:
+	opentext
+	writetext YoungsterJoeyText_GiveHPUpAfterBattle
+	waitbutton
 	verbosegiveitem HP_UP
-	iffalse UnknownScript_0x1a179f
+	iffalse .PackFull
 	clearevent EVENT_JOEY_HP_UP
 	setevent EVENT_GOT_HP_UP_FROM_JOEY
-	jump UnknownScript_0x1a178f
+	jump .NumberAccepted
 
-UnknownScript_0x1a1783:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-UnknownScript_0x1a1787:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-UnknownScript_0x1a178b:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-UnknownScript_0x1a178f:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-UnknownScript_0x1a1793:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-UnknownScript_0x1a1797:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-UnknownScript_0x1a179b:
+.RematchStd:
 	jumpstd rematchm
 	end
 
-UnknownScript_0x1a179f:
+.PackFull:
 	setevent EVENT_JOEY_HP_UP
 	jumpstd packfullm
 	end
 
-UnknownScript_0x1a17a6:
+.RematchGift:
 	jumpstd rematchgiftm
 	end
 
 TrainerYoungsterMikey:
-	trainer EVENT_BEAT_YOUNGSTER_MIKEY, YOUNGSTER, MIKEY, YoungsterMikeySeenText, YoungsterMikeyBeatenText, 0, YoungsterMikeyScript
+	trainer EVENT_BEAT_YOUNGSTER_MIKEY, YOUNGSTER, MIKEY, YoungsterMikeySeenText, YoungsterMikeyBeatenText, 0, .Script
 
-YoungsterMikeyScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x1a197d
+.Script:
+	end_if_just_battled
+	opentext
+	writetext YoungsterMikeyAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherDon:
-	trainer EVENT_BEAT_BUG_CATCHER_DON, BUG_CATCHER, DON, Bug_catcherDonSeenText, Bug_catcherDonBeatenText, 0, Bug_catcherDonScript
+	trainer EVENT_BEAT_BUG_CATCHER_DON, BUG_CATCHER, DON, Bug_catcherDonSeenText, Bug_catcherDonBeatenText, 0, .Script
 
-Bug_catcherDonScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x1a1a1c
+.Script:
+	end_if_just_battled
+	opentext
+	writetext Bug_catcherDonAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-YoungsterScript_0x1a17d2:
+Route30YoungsterScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iftrue UnknownScript_0x1a17e0
-	writetext UnknownText_0x1a1a6a
+	iftrue .CompletedEggQuest
+	writetext Route30YoungsterText_DirectionsToMrPokemonsHouse
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a17e0:
-	writetext UnknownText_0x1a1a94
+.CompletedEggQuest:
+	writetext Route30YoungsterText_EveryoneIsBattling
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-CooltrainerFScript_0x1a17e6:
-	jumptextfaceplayer UnknownText_0x1a1ac4
+Route30CooltrainerFScript:
+	jumptextfaceplayer Route30CooltrainerFText
 
 MapRoute30Signpost0Script:
-	jumptext UnknownText_0x1a1b0b
+	jumptext Route30MapSignText
 
 MapRoute30Signpost1Script:
-	jumptext UnknownText_0x1a1b34
+	jumptext Route30DirectionsToMrPokemonsHouseSignText
 
 MapRoute30Signpost2Script:
-	jumptext UnknownText_0x1a1b55
+	jumptext Route30MrPokemonsHouseSignText
 
 MapRoute30Signpost3Script:
-	jumptext UnknownText_0x1a1b66
+	jumptext Route30TrainerTipsSignText
 
-ItemFragment_0x1a17f5:
-	db ANTIDOTE, 1
+Route30Antidote:
+	itemball ANTIDOTE
 
-FruitTreeScript_0x1a17f7:
+Route30FruitTree1:
 	fruittree FRUITTREE_ROUTE_30_1
 
-FruitTreeScript_0x1a17f9:
+Route30FruitTree2:
 	fruittree FRUITTREE_ROUTE_30_2
 
-MapRoute30SignpostItem4:
+Route30HiddenPotion:
 	dwb EVENT_ROUTE_30_HIDDEN_POTION, POTION
 	
 
-MovementData_0x1a17fe:
+Route30_JoeysRattataAttacksMovement:
 	fix_facing
 	big_step_up
 	big_step_down
 	step_end
 
-MovementData_0x1a1802:
+Route30_MikeysRattataAttacksMovement:
 	fix_facing
 	big_step_down
 	big_step_up
 	step_end
 
-UnknownText_0x1a1806:
+Text_UseTackle:
 	text "Go, RATTATA!"
 
 	para "TACKLE!"
 	done
 
-UnknownText_0x1a181c:
+Text_ThisIsABigBattle:
 	text "What? This is a"
 	line "big battle!"
 	cont "Leave me alone!"
@@ -277,7 +290,7 @@
 	line "Doggone it!"
 	done
 
-UnknownText_0x1a18c2:
+YoungsterJoey1AfterText:
 	text "Do I have to have"
 	line "more #MON in"
 
@@ -302,7 +315,7 @@
 	line "I won before."
 	done
 
-UnknownText_0x1a197d:
+YoungsterMikeyAfterText:
 	text "Becoming a good"
 	line "trainer is really"
 	cont "tough."
@@ -323,7 +336,7 @@
 	line "strong!"
 	done
 
-UnknownText_0x1a1a1c:
+Bug_catcherDonAfterText:
 	text "I ran out of #"
 	line "BALLS while I was"
 	cont "catching #MON."
@@ -332,19 +345,19 @@
 	line "some more…"
 	done
 
-UnknownText_0x1a1a6a:
+Route30YoungsterText_DirectionsToMrPokemonsHouse:
 	text "MR.#MON's"
 	line "house? It's a bit"
 	cont "farther ahead."
 	done
 
-UnknownText_0x1a1a94:
+Route30YoungsterText_EveryoneIsBattling:
 	text "Everyone's having"
 	line "fun battling!"
 	cont "You should too!"
 	done
 
-UnknownText_0x1a1ac4:
+Route30CooltrainerFText:
 	text "I'm not a trainer."
 
 	para "But if you look"
@@ -352,7 +365,7 @@
 	cont "prepare to battle."
 	done
 
-UnknownText_0x1a1b0b:
+Route30MapSignText:
 	text "ROUTE 30"
 
 	para "VIOLET CITY -"
@@ -359,16 +372,16 @@
 	line "CHERRYGROVE CITY"
 	done
 
-UnknownText_0x1a1b34:
+Route30DirectionsToMrPokemonsHouseSignText:
 	text "MR.#MON'S HOUSE"
 	line "STRAIGHT AHEAD!"
 	done
 
-UnknownText_0x1a1b55:
+Route30MrPokemonsHouseSignText:
 	text "MR.#MON'S HOUSE"
 	done
 
-UnknownText_0x1a1b66:
+Route30TrainerTipsSignText:
 	text "TRAINER TIPS"
 
 	para "No stealing other"
@@ -379,7 +392,7 @@
 	cont "wild #MON!"
 	done
 
-UnknownText_0x1a1bc0:
+YoungsterJoeyText_GiveHPUpAfterBattle:
 	text "I lost again…"
 	line "Gee, you're tough!"
 
@@ -412,18 +425,18 @@
 	signpost 29, 13, SIGNPOST_READ, MapRoute30Signpost1Script
 	signpost 5, 15, SIGNPOST_READ, MapRoute30Signpost2Script
 	signpost 21, 3, SIGNPOST_READ, MapRoute30Signpost3Script
-	signpost 9, 14, SIGNPOST_ITEM, MapRoute30SignpostItem4
+	signpost 9, 14, SIGNPOST_ITEM, Route30HiddenPotion
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 26, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a1673, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_YOUNGSTER, 26, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterJoey_ImportantBattleScript, EVENT_ROUTE_30_BATTLE
 	person_event SPRITE_YOUNGSTER, 28, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterJoey, EVENT_ROUTE_30_YOUNGSTER_JOEY
 	person_event SPRITE_YOUNGSTER, 23, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerYoungsterMikey, -1
 	person_event SPRITE_BUG_CATCHER, 7, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDon, -1
-	person_event SPRITE_YOUNGSTER, 30, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a17d2, -1
+	person_event SPRITE_YOUNGSTER, 30, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Route30YoungsterScript, -1
 	person_event SPRITE_MONSTER, 24, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
 	person_event SPRITE_MONSTER, 25, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
-	person_event SPRITE_FRUIT_TREE, 39, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a17f7, -1
-	person_event SPRITE_FRUIT_TREE, 5, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a17f9, -1
-	person_event SPRITE_COOLTRAINER_F, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1a17e6, -1
-	person_event SPRITE_POKE_BALL, 35, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a17f5, EVENT_ROUTE_30_ANTIDOTE
+	person_event SPRITE_FRUIT_TREE, 39, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30FruitTree1, -1
+	person_event SPRITE_FRUIT_TREE, 5, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30FruitTree2, -1
+	person_event SPRITE_COOLTRAINER_F, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30CooltrainerFScript, -1
+	person_event SPRITE_POKE_BALL, 35, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route30Antidote, EVENT_ROUTE_30_ANTIDOTE
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE30BERRYSPEECHHOUSE_POKEFAN_M
+
 Route30BerrySpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,19 +10,19 @@
 
 PokefanMScript_0x196d64:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_BERRY_FROM_ROUTE_30_HOUSE
 	iftrue UnknownScript_0x196d79
 	writetext UnknownText_0x196d82
-	keeptextopen
+	buttonsound
 	verbosegiveitem BERRY
 	iffalse UnknownScript_0x196d7d
 	setevent EVENT_GOT_BERRY_FROM_ROUTE_30_HOUSE
 UnknownScript_0x196d79:
 	writetext UnknownText_0x196dec
-	closetext
+	waitbutton
 UnknownScript_0x196d7d:
-	loadmovesprites
+	closetext
 	end
 
 Route30BerrySpeechHouseBookshelf:
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ROUTE31_FISHER
+	const ROUTE31_YOUNGSTER
+	const ROUTE31_BUG_CATCHER
+	const ROUTE31_COOLTRAINER_M
+	const ROUTE31_FRUIT_TREE
+	const ROUTE31_POKE_BALL1
+	const ROUTE31_POKE_BALL2
+
 Route31_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -19,12 +28,12 @@
 	return
 
 TrainerBug_catcherWade1:
-	trainer EVENT_BEAT_BUG_CATCHER_WADE, BUG_CATCHER, WADE1, Bug_catcherWade1SeenText, Bug_catcherWade1BeatenText, 0, Bug_catcherWade1Script
+	trainer EVENT_BEAT_BUG_CATCHER_WADE, BUG_CATCHER, WADE1, Bug_catcherWade1SeenText, Bug_catcherWade1BeatenText, 0, .Script
 
-Bug_catcherWade1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_BUG_CATCHER_WADE
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_WADE
 	iftrue .WadeRematch
 	checkflag ENGINE_WADE_HAS_ITEM
@@ -33,8 +42,8 @@
 	iftrue .AcceptedNumberSTD
 	checkevent EVENT_WADE_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskAgain
-	writetext UnknownText_0x1a5671
-	closetext
+	writetext Bug_catcherWade1AfterText
+	waitbutton
 	setevent EVENT_WADE_ASKED_FOR_PHONE_NUMBER
 	scall .AskPhoneNumberSTD
 	jump .Continue
@@ -73,7 +82,7 @@
 .LoadFight0
 	loadtrainer BUG_CATCHER, WADE1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWadeFightCount, 1
 	clearflag ENGINE_WADE
 	end
@@ -81,7 +90,7 @@
 .LoadFight1
 	loadtrainer BUG_CATCHER, WADE2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWadeFightCount, 2
 	clearflag ENGINE_WADE
 	end
@@ -89,7 +98,7 @@
 .LoadFight2
 	loadtrainer BUG_CATCHER, WADE3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWadeFightCount, 3
 	clearflag ENGINE_WADE
 	end
@@ -97,7 +106,7 @@
 .LoadFight3
 	loadtrainer BUG_CATCHER, WADE4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWadeFightCount, 4
 	clearflag ENGINE_WADE
 	end
@@ -105,7 +114,7 @@
 .LoadFight4
 	loadtrainer BUG_CATCHER, WADE5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_WADE
 	end
 
@@ -176,63 +185,63 @@
 	jumpstd packfullm
 	end
 
-FisherScript_0x1a5570:
+Route31MailRecipientScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM50_NIGHTMARE
 	iftrue .DescribeNightmare
 	checkevent EVENT_GOT_KENYA
 	iftrue .TryGiveKenya
-	writetext UnknownText_0x1a56d9
+	writetext Text_Route31SleepyMan
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .TryGiveKenya:
-	writetext UnknownText_0x1a5761
-	keeptextopen
+	writetext Text_Route31SleepyManGotMail
+	buttonsound
 	checkpokeitem ReceivedSpearowMailText
 	if_equal $0, .WrongMail
 	if_equal $2, .Refused
 	if_equal $3, .NoMail
 	if_equal $4, .LastMon
-	writetext UnknownText_0x1a5790
-	keeptextopen
-	writetext UnknownText_0x1a57ba
-	keeptextopen
+	writetext Text_Route31HandOverMailMon
+	buttonsound
+	writetext Text_Route31ReadingMail
+	buttonsound
 	setevent EVENT_GAVE_KENYA
 	verbosegiveitem TM_NIGHTMARE
 	iffalse .NoRoomForItems
 	setevent EVENT_GOT_TM50_NIGHTMARE
 .DescribeNightmare:
-	writetext UnknownText_0x1a5896
-	closetext
+	writetext Text_Route31DescribeNightmare
+	waitbutton
 .NoRoomForItems:
-	loadmovesprites
+	closetext
 	end
 
 .WrongMail:
-	writetext UnknownText_0x1a5921
+	writetext Text_Route31WrongMail
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NoMail:
-	writetext UnknownText_0x1a5939
+	writetext Text_Route31MissingMail
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Refused:
-	writetext UnknownText_0x1a5972
+	writetext Text_Route31DeclinedToHandOverMail
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .LastMon:
-	writetext UnknownText_0x1a5991
+	writetext Text_Route31CantTakeLastMon
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ReceivedSpearowMailText:
@@ -239,28 +248,28 @@
 	db   "DARK CAVE leads"
 	next "to another road@"
 
-YoungsterScript_0x1a55ed:
-	jumptextfaceplayer UnknownText_0x1a59d5
+Route31YoungsterScript:
+	jumptextfaceplayer Route31YoungsterText
 
 MapRoute31Signpost0Script:
-	jumptext UnknownText_0x1a5a45
+	jumptext Route31Signpost0Text
 
 MapRoute31Signpost1Script:
-	jumptext UnknownText_0x1a5a6e
+	jumptext Route31Signpost1Text
 
-CooltrainerMScript_0x1a55f6:
-	jumptextfaceplayer UnknownText_0x1a55ff
+Route31CooltrainerMScript:
+	jumptextfaceplayer Route31CooltrainerMText
 
-FruitTreeScript_0x1a55f9:
+Route31FruitTree:
 	fruittree FRUITTREE_ROUTE_31
 
-ItemFragment_0x1a55fb:
-	db POTION, 1
+Route31Potion:
+	itemball POTION
 
-ItemFragment_0x1a55fd:
-	db POKE_BALL, 1
+Route31PokeBall:
+	itemball POKE_BALL
 
-UnknownText_0x1a55ff:
+Route31CooltrainerMText:
 	text "DARK CAVE…"
 
 	para "If #MON could"
@@ -278,7 +287,7 @@
 	text "Awwwww…"
 	done
 
-UnknownText_0x1a5671:
+Bug_catcherWade1AfterText:
 	text "You can catch"
 	line "#MON even if"
 
@@ -290,7 +299,7 @@
 	cont "BOX automatically."
 	done
 
-UnknownText_0x1a56d9:
+Text_Route31SleepyMan:
 	text "… Hnuurg… Huh?"
 
 	para "I walked too far"
@@ -307,7 +316,7 @@
 	para "…Zzzz…"
 	done
 
-UnknownText_0x1a5761:
+Text_Route31SleepyManGotMail:
 	text "…Zzzz… Huh?"
 
 	para "What's that? You"
@@ -314,13 +323,13 @@
 	line "have MAIL for me?"
 	done
 
-UnknownText_0x1a5790:
+Text_Route31HandOverMailMon:
 	text "<PLAYER> handed"
 	line "over the #MON"
 	cont "holding the MAIL."
 	done
 
-UnknownText_0x1a57ba:
+Text_Route31ReadingMail:
 	text "Let's see…"
 
 	para "…DARK CAVE leads"
@@ -344,7 +353,7 @@
 	line "to have this!"
 	done
 
-UnknownText_0x1a5896:
+Text_Route31DescribeNightmare:
 	text "TM50 is NIGHTMARE."
 
 	para "It's a wicked move"
@@ -360,12 +369,12 @@
 	line "have bad dreams."
 	done
 
-UnknownText_0x1a5921:
+Text_Route31WrongMail:
 	text "This MAIL isn't"
 	line "for me."
 	done
 
-UnknownText_0x1a5939:
+Text_Route31MissingMail:
 	text "Why is this #-"
 	line "MON so special?"
 
@@ -373,12 +382,12 @@
 	line "any MAIL."
 	done
 
-UnknownText_0x1a5972:
+Text_Route31DeclinedToHandOverMail:
 	text "What? You don't"
 	line "want anything?"
 	done
 
-UnknownText_0x1a5991:
+Text_Route31CantTakeLastMon:
 	text "If I take that"
 	line "#MON from you,"
 
@@ -386,7 +395,7 @@
 	line "to use in battle?"
 	done
 
-UnknownText_0x1a59d5:
+Route31YoungsterText:
 	text "I found a good"
 	line "#MON in DARK"
 	cont "CAVE."
@@ -399,7 +408,7 @@
 	line "VIOLET CITY's GYM."
 	done
 
-UnknownText_0x1a5a45:
+Route31Signpost0Text:
 	text "ROUTE 31"
 
 	para "VIOLET CITY -"
@@ -406,7 +415,7 @@
 	line "CHERRYGROVE CITY"
 	done
 
-UnknownText_0x1a5a6e:
+Route31Signpost1Text:
 	text "DARK CAVE"
 	done
 
@@ -430,10 +439,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_FISHER, 7, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a5570, -1
-	person_event SPRITE_YOUNGSTER, 5, 9, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a55ed, -1
+	person_event SPRITE_FISHER, 7, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31MailRecipientScript, -1
+	person_event SPRITE_YOUNGSTER, 5, 9, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31YoungsterScript, -1
 	person_event SPRITE_BUG_CATCHER, 13, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherWade1, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 33, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x1a55f6, -1
-	person_event SPRITE_FRUIT_TREE, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a55f9, -1
-	person_event SPRITE_POKE_BALL, 5, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a55fb, EVENT_ROUTE_31_POTION
-	person_event SPRITE_POKE_BALL, 15, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a55fd, EVENT_ROUTE_31_POKE_BALL
+	person_event SPRITE_COOLTRAINER_M, 8, 33, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31CooltrainerMScript, -1
+	person_event SPRITE_FRUIT_TREE, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31FruitTree, -1
+	person_event SPRITE_POKE_BALL, 5, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route31Potion, EVENT_ROUTE_31_POTION
+	person_event SPRITE_POKE_BALL, 15, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route31PokeBall, EVENT_ROUTE_31_POKE_BALL
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE31VIOLETGATE_OFFICER
+	const ROUTE31VIOLETGATE_COOLTRAINER_F
+
 Route31VioletGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -1,11 +1,27 @@
+const_value set 2
+	const ROUTE32_FISHER1
+	const ROUTE32_FISHER2
+	const ROUTE32_FISHER3
+	const ROUTE32_YOUNGSTER1
+	const ROUTE32_YOUNGSTER2
+	const ROUTE32_YOUNGSTER3
+	const ROUTE32_LASS1
+	const ROUTE32_COOLTRAINER_M
+	const ROUTE32_YOUNGSTER4
+	const ROUTE32_FISHER4
+	const ROUTE32_POKE_BALL1
+	const ROUTE32_FISHER5
+	const ROUTE32_LASS2
+	const ROUTE32_POKE_BALL2
+
 Route32_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
-	dw UnknownScript_0x190460, 0
-	dw UnknownScript_0x190461, 0
-	dw UnknownScript_0x190462, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
+	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,181 +28,181 @@
 
 	; callbacks
 
-	dbw 2, FriedaCallback
+	dbw 2, .Frieda
 
-UnknownScript_0x190460:
+.Trigger0:
 	end
 
-UnknownScript_0x190461:
+.Trigger1:
 	end
 
-UnknownScript_0x190462:
+.Trigger2:
 	end
 
-FriedaCallback:
+.Frieda:
 	checkcode VAR_WEEKDAY
 	if_equal FRIDAY, .FriedaAppears
-	disappear $e
+	disappear ROUTE32_LASS2
 	return
 
 .FriedaAppears
-	appear $e
+	appear ROUTE32_LASS2
 	return
 
-CooltrainerMScript_0x19046f:
+Route32CooltrainerMScript:
 	faceplayer
-UnknownScript_0x190470:
-	loadfont
+Route32CooltrainerMTrigger:
+	opentext
 	checkevent EVENT_GOT_MIRACLE_SEED_IN_ROUTE_32
-	iftrue UnknownScript_0x1904a5
+	iftrue .GotMiracleSeed
 	checkflag ENGINE_ZEPHYRBADGE
-	iffalse UnknownScript_0x19049f
+	iffalse .DontHaveZephyrBadge
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
-	iftrue UnknownScript_0x19048f
-	writetext UnknownText_0x1907ab
+	iftrue .GiveMiracleSeed
+	writetext Route32CooltrainerMText_AideIsWaiting
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x190489:
-	writetext UnknownText_0x190820
+.Unused:
+	writetext Route32CooltrainerMText_UnusedSproutTower
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x19048f:
-	writetext UnknownText_0x190925
-	keeptextopen
+.GiveMiracleSeed:
+	writetext Route32CooltrainerMText_HaveThisSeed
+	buttonsound
 	verbosegiveitem MIRACLE_SEED
-	iffalse UnknownScript_0x1904a9
+	iffalse .BagFull
 	setevent EVENT_GOT_MIRACLE_SEED_IN_ROUTE_32
-	jump UnknownScript_0x1904a5
+	jump .GotMiracleSeed
 
-UnknownScript_0x19049f:
-	writetext UnknownText_0x1908b0
+.DontHaveZephyrBadge:
+	writetext Route32CooltrainerMText_VioletGym
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1904a5:
-	writetext UnknownText_0x190a15
+.GotMiracleSeed:
+	writetext Route32CooltrainerMText_ExperiencesShouldBeUseful
+	waitbutton
+.BagFull:
 	closetext
-UnknownScript_0x1904a9:
-	loadmovesprites
 	end
 
-UnknownScript_0x1904ab:
-	spriteface $9, LEFT
+Route32CooltrainerMStopsYou:
+	spriteface ROUTE32_COOLTRAINER_M, LEFT
 	spriteface PLAYER, RIGHT
-	loadfont
-	writetext UnknownText_0x190790
+	opentext
+	writetext Route32CooltrainerMText_WhatsTheHurry
+	waitbutton
 	closetext
-	loadmovesprites
-	follow PLAYER, $9
-	applymovement PLAYER, MovementData_0x190789
+	follow PLAYER, ROUTE32_COOLTRAINER_M
+	applymovement PLAYER, Movement_Route32CooltrainerMPushesYouBackToViolet
 	stopfollow
 	spriteface PLAYER, DOWN
-	scall UnknownScript_0x190470
-	applymovement $9, MovementData_0x19078c
-	applymovement $9, MovementData_0x19078e
+	scall Route32CooltrainerMTrigger
+	applymovement ROUTE32_COOLTRAINER_M, Movement_Route32CooltrainerMReset1
+	applymovement ROUTE32_COOLTRAINER_M, Movement_Route32CooltrainerMReset2
 	end
 
-FisherScript_0x1904ce:
+Route32RoarTMGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM05_ROAR
-	iftrue UnknownScript_0x1904e3
-	writetext UnknownText_0x191133
-	keeptextopen
+	iftrue .AlreadyHaveRoar
+	writetext Text_RoarIntro
+	buttonsound
 	verbosegiveitem TM_ROAR
-	iffalse UnknownScript_0x1904e7
+	iffalse .Finish
 	setevent EVENT_GOT_TM05_ROAR
-UnknownScript_0x1904e3:
-	writetext UnknownText_0x19118c
+.AlreadyHaveRoar:
+	writetext Text_RoarOutro
+	waitbutton
+.Finish:
 	closetext
-UnknownScript_0x1904e7:
-	loadmovesprites
 	end
 
-UnknownScript_0x1904e9:
-	spriteface $b, DOWN
+Route32WannaBuyASlowpokeTailScript:
+	spriteface ROUTE32_FISHER4, DOWN
 	spriteface PLAYER, UP
-	jump UnknownScript_0x1904f3
+	jump _OfferToSellSlowpokeTail
 
-FisherScript_0x1904f2:
+SlowpokeTailSalesmanScript:
 	faceplayer
-UnknownScript_0x1904f3:
+_OfferToSellSlowpokeTail:
 	dotrigger $2
-	loadfont
-	writetext UnknownText_0x190a59
+	opentext
+	writetext Text_MillionDollarSlowpokeTail
 	yesorno
-	iffalse UnknownScript_0x190503
-	writetext UnknownText_0x190acf
+	iffalse .refused
+	writetext Text_ThoughtKidsWereLoaded
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x190503:
-	writetext UnknownText_0x190afc
+.refused:
+	writetext Text_RefusedToBuySlowpokeTail
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCamperRoland:
-	trainer EVENT_BEAT_CAMPER_ROLAND, CAMPER, ROLAND, CamperRolandSeenText, CamperRolandBeatenText, 0, CamperRolandScript
+	trainer EVENT_BEAT_CAMPER_ROLAND, CAMPER, ROLAND, CamperRolandSeenText, CamperRolandBeatenText, 0, .Script
 
-CamperRolandScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x190faa
+.Script:
+	end_if_just_battled
+	opentext
+	writetext CamperRolandAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherJustin:
-	trainer EVENT_BEAT_FISHER_JUSTIN, FISHER, JUSTIN, FisherJustinSeenText, FisherJustinBeatenText, 0, FisherJustinScript
+	trainer EVENT_BEAT_FISHER_JUSTIN, FISHER, JUSTIN, FisherJustinSeenText, FisherJustinBeatenText, 0, .Script
 
-FisherJustinScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x190b4e
+.Script:
+	end_if_just_battled
+	opentext
+	writetext FisherJustinAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherRalph1:
-	trainer EVENT_BEAT_FISHER_RALPH, FISHER, RALPH1, FisherRalph1SeenText, FisherRalph1BeatenText, 0, FisherRalph1Script
+	trainer EVENT_BEAT_FISHER_RALPH, FISHER, RALPH1, FisherRalph1SeenText, FisherRalph1BeatenText, 0, .Script
 
-FisherRalph1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_FISHER_RALPH
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_RALPH
-	iftrue UnknownScript_0x19057d
+	iftrue .Rematch
 	checkflag ENGINE_SPECIAL_WILDDATA
-	iftrue UnknownScript_0x1905f1
+	iftrue .Swarm
 	checkcellnum PHONE_FISHER_RALPH
-	iftrue UnknownScript_0x190603
+	iftrue .NumberAccepted
 	checkevent EVENT_RALPH_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x190566
-	writetext UnknownText_0x190bf8
-	keeptextopen
+	iftrue .AskAgain
+	writetext FisherRalphAfterText
+	buttonsound
 	setevent EVENT_RALPH_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1905f7
-	jump UnknownScript_0x190569
+	scall .AskNumber1
+	jump .AskForNumber
 
-UnknownScript_0x190566:
-	scall UnknownScript_0x1905fb
-UnknownScript_0x190569:
+.AskAgain:
+	scall .AskNumber2
+.AskForNumber:
 	askforphonenumber PHONE_FISHER_RALPH
-	if_equal $1, UnknownScript_0x19060b
-	if_equal $2, UnknownScript_0x190607
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext FISHER, RALPH1, $0
-	scall UnknownScript_0x1905ff
-	jump UnknownScript_0x190603
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x19057d:
-	scall UnknownScript_0x19060f
+.Rematch:
+	scall .RematchStd
 	winlosstext FisherRalph1BeatenText, 0
 	copybytetovar wRalphFightCount
 	if_equal 4, .Fight4
@@ -209,7 +225,7 @@
 .LoadFight0
 	loadtrainer FISHER, RALPH1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wRalphFightCount, 1
 	clearflag ENGINE_RALPH
 	end
@@ -217,7 +233,7 @@
 .LoadFight1
 	loadtrainer FISHER, RALPH2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wRalphFightCount, 2
 	clearflag ENGINE_RALPH
 	end
@@ -225,7 +241,7 @@
 .LoadFight2
 	loadtrainer FISHER, RALPH3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wRalphFightCount, 3
 	clearflag ENGINE_RALPH
 	end
@@ -233,7 +249,7 @@
 .LoadFight3
 	loadtrainer FISHER, RALPH4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wRalphFightCount, 4
 	clearflag ENGINE_RALPH
 	end
@@ -241,86 +257,86 @@
 .LoadFight4
 	loadtrainer FISHER, RALPH5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_RALPH
 	end
 
-UnknownScript_0x1905f1:
-	writetext UnknownText_0x190c37
+.Swarm:
+	writetext FisherRalphSwarmText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1905f7:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-UnknownScript_0x1905fb:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-UnknownScript_0x1905ff:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-UnknownScript_0x190603:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-UnknownScript_0x190607:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-UnknownScript_0x19060b:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-UnknownScript_0x19060f:
+.RematchStd:
 	jumpstd rematchm
 	end
 
 TrainerFisherHenry:
-	trainer EVENT_BEAT_FISHER_HENRY, FISHER, HENRY, FisherHenrySeenText, FisherHenryBeatenText, 0, FisherHenryScript
+	trainer EVENT_BEAT_FISHER_HENRY, FISHER, HENRY, FisherHenrySeenText, FisherHenryBeatenText, 0, .Script
 
-FisherHenryScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x190df2
+.Script:
+	end_if_just_battled
+	opentext
+	writetext FisherHenryAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerLiz1:
-	trainer EVENT_BEAT_PICNICKER_LIZ, PICNICKER, LIZ1, PicnickerLiz1SeenText, PicnickerLiz1BeatenText, 0, PicnickerLiz1Script
+	trainer EVENT_BEAT_PICNICKER_LIZ, PICNICKER, LIZ1, PicnickerLiz1SeenText, PicnickerLiz1BeatenText, 0, .Script
 
-PicnickerLiz1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_PICNICKER_LIZ
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_LIZ
-	iftrue UnknownScript_0x19066d
+	iftrue .Rematch
 	checkcellnum PHONE_PICNICKER_LIZ
-	iftrue UnknownScript_0x1906ed
+	iftrue .NumberAccepted	
 	checkevent EVENT_LIZ_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x190656
-	writetext UnknownText_0x191060
-	keeptextopen
+	iftrue .AskAgain
+	writetext PicnickerLiz1AfterText
+	buttonsound
 	setevent EVENT_LIZ_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1906e1
-	jump UnknownScript_0x190659
+	scall .AskNumber1
+	jump .AskForNumber
 
-UnknownScript_0x190656:
-	scall UnknownScript_0x1906e5
-UnknownScript_0x190659:
+.AskAgain:
+	scall .AskNumber2
+.AskForNumber:
 	askforphonenumber PHONE_PICNICKER_LIZ
-	if_equal $1, UnknownScript_0x1906f5
-	if_equal $2, UnknownScript_0x1906f1
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext PICNICKER, LIZ1, $0
-	scall UnknownScript_0x1906e9
-	jump UnknownScript_0x1906ed
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x19066d:
-	scall UnknownScript_0x1906f9
+.Rematch:
+	scall .RematchStd
 	winlosstext PicnickerLiz1BeatenText, 0
 	copybytetovar wLizFightCount
 	if_equal 4, .Fight4
@@ -343,7 +359,7 @@
 .LoadFight0
 	loadtrainer PICNICKER, LIZ1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wLizFightCount, 1
 	clearflag ENGINE_LIZ
 	end
@@ -351,7 +367,7 @@
 .LoadFight1
 	loadtrainer PICNICKER, LIZ2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wLizFightCount, 2
 	clearflag ENGINE_LIZ
 	end
@@ -359,7 +375,7 @@
 .LoadFight2
 	loadtrainer PICNICKER, LIZ3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wLizFightCount, 3
 	clearflag ENGINE_LIZ
 	end
@@ -367,7 +383,7 @@
 .LoadFight3
 	loadtrainer PICNICKER, LIZ4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wLizFightCount, 4
 	clearflag ENGINE_LIZ
 	end
@@ -375,112 +391,112 @@
 .LoadFight4
 	loadtrainer PICNICKER, LIZ5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_LIZ
 	end
 
-UnknownScript_0x1906e1:
+.AskNumber1:
 	jumpstd asknumber1f
 	end
 
-UnknownScript_0x1906e5:
+.AskNumber2:
 	jumpstd asknumber2f
 	end
 
-UnknownScript_0x1906e9:
+.RegisteredNumber:
 	jumpstd registerednumberf
 	end
 
-UnknownScript_0x1906ed:
+.NumberAccepted:
 	jumpstd numberacceptedf
 	end
 
-UnknownScript_0x1906f1:
+.NumberDeclined:
 	jumpstd numberdeclinedf
 	end
 
-UnknownScript_0x1906f5:
+.PhoneFull:
 	jumpstd phonefullf
 	end
 
-UnknownScript_0x1906f9:
+.RematchStd:
 	jumpstd rematchf
 	end
 
 TrainerYoungsterAlbert:
-	trainer EVENT_BEAT_YOUNGSTER_ALBERT, YOUNGSTER, ALBERT, YoungsterAlbertSeenText, YoungsterAlbertBeatenText, 0, YoungsterAlbertScript
+	trainer EVENT_BEAT_YOUNGSTER_ALBERT, YOUNGSTER, ALBERT, YoungsterAlbertSeenText, YoungsterAlbertBeatenText, 0, .Script
 
-YoungsterAlbertScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x190e82
+.Script:
+	end_if_just_battled
+	opentext
+	writetext YoungsterAlbertAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterGordon:
-	trainer EVENT_BEAT_YOUNGSTER_GORDON, YOUNGSTER, GORDON, YoungsterGordonSeenText, YoungsterGordonBeatenText, 0, YoungsterGordonScript
+	trainer EVENT_BEAT_YOUNGSTER_GORDON, YOUNGSTER, GORDON, YoungsterGordonSeenText, YoungsterGordonBeatenText, 0, .Script
 
-YoungsterGordonScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x190f49
+.Script:
+	end_if_just_battled
+	opentext
+	writetext YoungsterGordonAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperPeter:
-	trainer EVENT_BEAT_BIRD_KEEPER_PETER, BIRD_KEEPER, PETER, Bird_keeperPeterSeenText, Bird_keeperPeterBeatenText, 0, Bird_keeperPeterScript
+	trainer EVENT_BEAT_BIRD_KEEPER_PETER, BIRD_KEEPER, PETER, Bird_keeperPeterSeenText, Bird_keeperPeterBeatenText, 0, .Script
 
-Bird_keeperPeterScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x1910d4
+.Script:
+	end_if_just_battled
+	opentext
+	writetext Bird_keeperPeterAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FriedaScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_POISON_BARB_FROM_FRIEDA
-	iftrue FriedaFridayScript
+	iftrue .Friday
 	checkcode VAR_WEEKDAY
-	if_not_equal FRIDAY, FriedaNotFridayScript
+	if_not_equal FRIDAY, .NotFriday
 	checkevent EVENT_MET_FRIEDA_OF_FRIDAY
 	iftrue .MetFrieda
 	writetext MeetFriedaText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_FRIEDA_OF_FRIDAY
 .MetFrieda
 	writetext FriedaGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem POISON_BARB
-	iffalse FriedaDoneScript
+	iffalse .Done
 	setevent EVENT_GOT_POISON_BARB_FROM_FRIEDA
 	writetext FriedaGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-FriedaFridayScript:
+.Friday:
 	writetext FriedaFridayText
+	waitbutton
+.Done:
 	closetext
-FriedaDoneScript:
-	loadmovesprites
 	end
 
-FriedaNotFridayScript:
+.NotFriday:
 	writetext FriedaNotFridayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x190773:
-	db GREAT_BALL, 1
+Route32GreatBall:
+	itemball GREAT_BALL
 
-ItemFragment_0x190775:
-	db REPEL, 1
+Route32Repel:
+	itemball REPEL
 
 Route32Sign:
 	jumptext Route32SignText
@@ -494,33 +510,33 @@
 Route32PokeCenterSign:
 	jumpstd pokecentersign
 
-MapRoute32SignpostItem4:
+Route32HiddenGreatBall:
 	dwb EVENT_ROUTE_32_HIDDEN_GREAT_BALL, GREAT_BALL
 	
 
-MapRoute32SignpostItem5:
+Route32HiddenSuperPotion:
 	dwb EVENT_ROUTE_32_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
-MovementData_0x190789:
+Movement_Route32CooltrainerMPushesYouBackToViolet:
 	step_up
 	step_up
 	step_end
 
-MovementData_0x19078c:
+Movement_Route32CooltrainerMReset1:
 	step_down
 	step_end
 
-MovementData_0x19078e:
+Movement_Route32CooltrainerMReset2:
 	step_right
 	step_end
 
-UnknownText_0x190790:
+Route32CooltrainerMText_WhatsTheHurry:
 	text "Wait up!"
 	line "What's the hurry?"
 	done
 
-UnknownText_0x1907ab:
+Route32CooltrainerMText_AideIsWaiting:
 	text "<PLAYER>, right?"
 	line "Some guy wearing"
 
@@ -535,7 +551,7 @@
 	done
 
 ; might not be referenced anywhere
-UnknownText_0x190820:
+Route32CooltrainerMText_UnusedSproutTower:
 	text "Have you gone to"
 	line "SPROUT TOWER?"
 
@@ -550,7 +566,7 @@
 	cont "SPROUT TOWER!"
 	done
 
-UnknownText_0x1908b0:
+Route32CooltrainerMText_VioletGym:
 	text "Have you gone to"
 	line "the #MON GYM?"
 
@@ -563,7 +579,7 @@
 	cont "trainers!"
 	done
 
-UnknownText_0x190925:
+Route32CooltrainerMText_HaveThisSeed:
 	text "You have some good"
 	line "#MON there."
 
@@ -588,7 +604,7 @@
 	cont "type moves."
 	done
 
-UnknownText_0x190a15:
+Route32CooltrainerMText_ExperiencesShouldBeUseful:
 	text "Your experiences"
 	line "in VIOLET CITY"
 
@@ -596,7 +612,7 @@
 	line "for your journey."
 	done
 
-UnknownText_0x190a59:
+Text_MillionDollarSlowpokeTail:
 	text "How would you like"
 	line "to have this"
 
@@ -609,13 +625,13 @@
 	para "You'll want this!"
 	done
 
-UnknownText_0x190acf:
+Text_ThoughtKidsWereLoaded:
 	text "Tch! I thought"
 	line "kids these days"
 	cont "were loaded…"
 	done
 
-UnknownText_0x190afc:
+Text_RefusedToBuySlowpokeTail:
 	text "You don't want it?"
 	line "Then scram. Shoo!"
 	done
@@ -631,7 +647,7 @@
 	text "Sploosh!"
 	done
 
-UnknownText_0x190b4e:
+FisherJustinAfterText:
 	text "Calm, collected…"
 	line "The essence of"
 
@@ -653,7 +669,7 @@
 	line "rush things…"
 	done
 
-UnknownText_0x190bf8:
+FisherRalphAfterText:
 	text "Fishing is a life-"
 	line "long passion."
 
@@ -661,7 +677,7 @@
 	line "long friends!"
 	done
 
-UnknownText_0x190c37:
+FisherRalphSwarmText:
 	text "One, two, three…"
 	line "Muahahaha, what a"
 
@@ -674,7 +690,7 @@
 
 ; --- start a segment of possibly unused texts
 
-UnknownText_0x190c9c:
+Route32UnusedFisher1SeenText:
 	text "I keep catching"
 	line "the same #MON…"
 
@@ -683,29 +699,29 @@
 	cont "around for me."
 	done
 
-UnknownText_0x190ceb:
+Route32UnusedFisher1BeatenText:
 	text "Nothing ever goes"
 	line "right for me now…"
 	done
 
-UnknownText_0x190d10:
+Route32UnusedFisher1AfterText:
 	text "How come the guy"
 	line "next to me catches"
 	cont "good #MON?"
 	done
 
-UnknownText_0x190d40:
+Route32UnusedFisher2SeenText:
 	text "Heh, I'm on a roll"
 	line "today. How about a"
 	cont "battle, kid?"
 	done
 
-UnknownText_0x190d73:
+Route32UnusedFisher2BeatenText:
 	text "Oof. I wasn't"
 	line "lucky that time."
 	done
 
-UnknownText_0x190d92:
+Route32UnusedFisher2AfterText:
 	text "You have to have a"
 	line "good ROD if you"
 
@@ -724,7 +740,7 @@
 	text "SPLASH?"
 	done
 
-UnknownText_0x190df2:
+FisherHenryAfterText:
 	text "Freshly caught"
 	line "#MON are no"
 
@@ -744,7 +760,7 @@
 	text "You're strong!"
 	done
 
-UnknownText_0x190e82:
+YoungsterAlbertAfterText:
 	text "I'm going to try"
 	line "to be the best"
 	cont "with my favorites."
@@ -768,7 +784,7 @@
 	line "could win."
 	done
 
-UnknownText_0x190f49:
+YoungsterGordonAfterText:
 	text "The grass is full"
 	line "of clingy things."
 	done
@@ -783,7 +799,7 @@
 	line "disappointing."
 	done
 
-UnknownText_0x190faa:
+CamperRolandAfterText:
 	text "If you don't want"
 	line "to battle, just"
 	cont "avoid eye contact."
@@ -805,7 +821,7 @@
 	line "relieve my anger!"
 	done
 
-UnknownText_0x191060:
+PicnickerLiz1AfterText:
 	text "I was having a"
 	line "nice chat too."
 	done
@@ -822,7 +838,7 @@
 	line "weaknesses are."
 	done
 
-UnknownText_0x1910d4:
+Bird_keeperPeterAfterText:
 	text "I should train"
 	line "again at the GYM"
 	cont "in VIOLET CITY."
@@ -829,13 +845,13 @@
 	done
 
 ; possibly unused
-UnknownText_0x191105:
+Route32UnusedText:
 	text "The fishermen"
 	line "yelled at me for"
 	cont "bugging them…"
 	done
 
-UnknownText_0x191133:
+Text_RoarIntro:
 	text "WROOOOAR!"
 	line "PEOPLE RUN WHEN I"
 
@@ -846,7 +862,7 @@
 	line "NOW TAKE THIS!"
 	done
 
-UnknownText_0x19118c:
+Text_RoarOutro:
 	text "WROOOAR!"
 	line "IT'S ROAR!"
 
@@ -932,17 +948,17 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $12, $0, UnknownScript_0x1904ab, $0, $0
-	xy_trigger 1, $47, $7, $0, UnknownScript_0x1904e9, $0, $0
+	xy_trigger 0, $8, $12, $0, Route32CooltrainerMStopsYou, $0, $0
+	xy_trigger 1, $47, $7, $0, Route32WannaBuyASlowpokeTailScript, $0, $0
 
 .Signposts:
 	db 6
-	signpost 5, 13, SIGNPOST_READ, Route32Sign
-	signpost 1, 9, SIGNPOST_READ, Route32RuinsSign
+	signpost  5, 13, SIGNPOST_READ, Route32Sign
+	signpost  1,  9, SIGNPOST_READ, Route32RuinsSign
 	signpost 84, 10, SIGNPOST_READ, Route32UnionCaveSign
 	signpost 73, 12, SIGNPOST_READ, Route32PokeCenterSign
-	signpost 67, 12, SIGNPOST_ITEM, MapRoute32SignpostItem4
-	signpost 40, 11, SIGNPOST_ITEM, MapRoute32SignpostItem5
+	signpost 67, 12, SIGNPOST_ITEM, Route32HiddenGreatBall
+	signpost 40, 11, SIGNPOST_ITEM, Route32HiddenSuperPotion
 
 .PersonEvents:
 	db 14
@@ -953,10 +969,10 @@
 	person_event SPRITE_YOUNGSTER, 63, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterGordon, -1
 	person_event SPRITE_YOUNGSTER, 45, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperRoland, -1
 	person_event SPRITE_LASS, 30, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerLiz1, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 19, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19046f, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 19, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route32CooltrainerMScript, -1
 	person_event SPRITE_YOUNGSTER, 82, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperPeter, -1
-	person_event SPRITE_FISHER, 70, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FisherScript_0x1904f2, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_POKE_BALL, 53, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x190773, EVENT_ROUTE_32_GREAT_BALL
-	person_event SPRITE_FISHER, 13, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FisherScript_0x1904ce, -1
+	person_event SPRITE_FISHER, 70, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeTailSalesmanScript, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_POKE_BALL, 53, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route32GreatBall, EVENT_ROUTE_32_GREAT_BALL
+	person_event SPRITE_FISHER, 13, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route32RoarTMGuyScript, -1
 	person_event SPRITE_LASS, 67, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FriedaScript, EVENT_ROUTE_32_FRIEDA_OF_FRIDAY
-	person_event SPRITE_POKE_BALL, 30, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x190775, EVENT_ROUTE_32_REPEL
+	person_event SPRITE_POKE_BALL, 30, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route32Repel, EVENT_ROUTE_32_REPEL
--- a/maps/Route32PokeCenter1F.asm
+++ b/maps/Route32PokeCenter1F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE32POKECENTER1F_NURSE
+	const ROUTE32POKECENTER1F_FISHING_GURU
+	const ROUTE32POKECENTER1F_COOLTRAINER_F
+
 Route32PokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,7 +15,7 @@
 
 FishingGuruScript_0x69b55:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_OLD_ROD
 	iftrue UnknownScript_0x69b7a
 	writetext UnknownText_0x69b83
@@ -17,24 +22,24 @@
 	yesorno
 	iffalse UnknownScript_0x69b74
 	writetext UnknownText_0x69be8
-	keeptextopen
+	buttonsound
 	verbosegiveitem OLD_ROD
 	writetext UnknownText_0x69c1b
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_GOT_OLD_ROD
 	end
 
 UnknownScript_0x69b74:
 	writetext UnknownText_0x69c6c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x69b7a:
 	writetext UnknownText_0x69c8d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x69b80:
--- a/maps/Route32RuinsofAlphGate.asm
+++ b/maps/Route32RuinsofAlphGate.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE32RUINSOFALPHGATE_OFFICER
+	const ROUTE32RUINSOFALPHGATE_POKEFAN_M
+	const ROUTE32RUINSOFALPHGATE_YOUNGSTER
+
 Route32RuinsofAlphGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE33_POKEFAN_M
+	const ROUTE33_LASS
+	const ROUTE33_FRUIT_TREE
+
 Route33_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,42 +10,42 @@
 .MapCallbacks:
 	db 0
 
-LassScript_0x1ac002:
-	jumptextfaceplayer UnknownText_0x1ac1e7
+Route33LassScript:
+	jumptextfaceplayer Route33LassText
 
 TrainerHikerAnthony:
-	trainer EVENT_BEAT_HIKER_ANTHONY, HIKER, ANTHONY2, HikerAnthony2SeenText, HikerAnthony2BeatenText, 0, HikerAnthony2Script
+	trainer EVENT_BEAT_HIKER_ANTHONY, HIKER, ANTHONY2, HikerAnthony2SeenText, HikerAnthony2BeatenText, 0, .Script
 
-HikerAnthony2Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_HIKER_ANTHONY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_ANTHONY
-	iftrue UnknownScript_0x1ac051
+	iftrue .Rematch
 	checkflag ENGINE_DUNSPARCE_SWARM
-	iftrue UnknownScript_0x1ac0c5
+	iftrue .Swarm
 	checkcellnum PHONE_HIKER_ANTHONY
-	iftrue UnknownScript_0x1ac0d7
+	iftrue .NumberAccepted
 	checkevent EVENT_ANTHONY_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x1ac03a
-	writetext UnknownText_0x1ac153
-	keeptextopen
+	iftrue .AskAgain
+	writetext HikerAnthony2AfterText
+	buttonsound
 	setevent EVENT_ANTHONY_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1ac0cb
-	jump UnknownScript_0x1ac03d
+	scall .AskNumber1
+	jump .AskForPhoneNumber
 
-UnknownScript_0x1ac03a:
-	scall UnknownScript_0x1ac0cf
-UnknownScript_0x1ac03d:
+.AskAgain:
+	scall .AskNumber2
+.AskForPhoneNumber:
 	askforphonenumber PHONE_HIKER_ANTHONY
-	if_equal $1, UnknownScript_0x1ac0df
-	if_equal $2, UnknownScript_0x1ac0db
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext HIKER, ANTHONY2, $0
-	scall UnknownScript_0x1ac0d3
-	jump UnknownScript_0x1ac0d7
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x1ac051:
-	scall UnknownScript_0x1ac0e3
+.Rematch:
+	scall .RematchStd
 	winlosstext HikerAnthony2BeatenText, 0
 	copybytetovar wAnthonyFightCount
 	if_equal 4, .Fight4
@@ -63,7 +68,7 @@
 .LoadFight0
 	loadtrainer HIKER, ANTHONY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAnthonyFightCount, 1
 	clearflag ENGINE_ANTHONY
 	end
@@ -71,7 +76,7 @@
 .LoadFight1
 	loadtrainer HIKER, ANTHONY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAnthonyFightCount, 2
 	clearflag ENGINE_ANTHONY
 	end
@@ -79,7 +84,7 @@
 .LoadFight2
 	loadtrainer HIKER, ANTHONY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAnthonyFightCount, 3
 	clearflag ENGINE_ANTHONY
 	end
@@ -87,7 +92,7 @@
 .LoadFight3
 	loadtrainer HIKER, ANTHONY4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAnthonyFightCount, 4
 	clearflag ENGINE_ANTHONY
 	end
@@ -95,48 +100,48 @@
 .LoadFight4
 	loadtrainer HIKER, ANTHONY5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_ANTHONY
 	end
 
-UnknownScript_0x1ac0c5:
-	writetext UnknownText_0x1ac180
+.Swarm:
+	writetext HikerAnthonyDunsparceText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1ac0cb:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-UnknownScript_0x1ac0cf:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-UnknownScript_0x1ac0d3:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-UnknownScript_0x1ac0d7:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-UnknownScript_0x1ac0db:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-UnknownScript_0x1ac0df:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-UnknownScript_0x1ac0e3:
+.RematchStd:
 	jumpstd rematchm
 	end
 
 MapRoute33Signpost0Script:
-	jumptext UnknownText_0x1ac279
+	jumptext Route33RouteSignText
 
-FruitTreeScript_0x1ac0ea:
+Route33FruitTreeScript:
 	fruittree FRUITTREE_ROUTE_33
 
 HikerAnthony2SeenText:
@@ -152,13 +157,13 @@
 	line "more zip than me!"
 	done
 
-UnknownText_0x1ac153:
+HikerAnthony2AfterText:
 	text "We HIKERS are at"
 	line "our best in the"
 	cont "mountains."
 	done
 
-UnknownText_0x1ac180:
+HikerAnthonyDunsparceText:
 	text "Hey, did you get a"
 	line "DUNSPARCE?"
 
@@ -169,7 +174,7 @@
 	cont "got a funny face!"
 	done
 
-UnknownText_0x1ac1e7:
+Route33LassText:
 	text "Pant, pant…"
 
 	para "I finally got"
@@ -185,7 +190,7 @@
 	line "outside."
 	done
 
-UnknownText_0x1ac279:
+Route33RouteSignText:
 	text "ROUTE 33"
 	done
 
@@ -207,5 +212,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_POKEFAN_M, 13, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerAnthony, -1
-	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x1ac002, -1
-	person_event SPRITE_FRUIT_TREE, 16, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1ac0ea, -1
+	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Route33LassScript, -1
+	person_event SPRITE_FRUIT_TREE, 16, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route33FruitTreeScript, -1
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -1,3 +1,18 @@
+const_value set 2
+	const ROUTE34_YOUNGSTER1
+	const ROUTE34_YOUNGSTER2
+	const ROUTE34_YOUNGSTER3
+	const ROUTE34_LASS
+	const ROUTE34_OFFICER
+	const ROUTE34_POKEFAN_M
+	const ROUTE34_GRAMPS
+	const ROUTE34_DAYCARE_MON_1
+	const ROUTE34_DAYCARE_MON_2
+	const ROUTE34_COOLTRAINER_F1
+	const ROUTE34_COOLTRAINER_F2
+	const ROUTE34_COOLTRAINER_F3
+	const ROUTE34_POKE_BALL
+
 Route34_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,107 +22,107 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x78005
+	dbw 2, .EggCheckCallback
 
-UnknownScript_0x78005:
-	checkflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
-	iftrue UnknownScript_0x78014
+.EggCheckCallback:
+	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
+	iftrue .PutDaycareManOutside
 	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
 	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
-	jump UnknownScript_0x7801d
+	jump .CheckMon1
 
-UnknownScript_0x78014:
+.PutDaycareManOutside:
 	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
 	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
-	jump UnknownScript_0x7801d
+	jump .CheckMon1
 
-UnknownScript_0x7801d:
+.CheckMon1:
 	checkflag ENGINE_DAYCARE_MAN_HAS_MON
-	iffalse UnknownScript_0x78029
+	iffalse .HideMon1
 	clearevent EVENT_DAYCARE_MON_1
-	jump UnknownScript_0x7802f
+	jump .CheckMon2
 
-UnknownScript_0x78029:
+.HideMon1:
 	setevent EVENT_DAYCARE_MON_1
-	jump UnknownScript_0x7802f
+	jump .CheckMon2
 
-UnknownScript_0x7802f:
+.CheckMon2:
 	checkflag ENGINE_DAYCARE_LADY_HAS_MON
-	iffalse UnknownScript_0x78039
+	iffalse .HideMon2
 	clearevent EVENT_DAYCARE_MON_2
 	return
 
-UnknownScript_0x78039:
+.HideMon2:
 	setevent EVENT_DAYCARE_MON_2
 	return
 
-GrampsScript_0x7803d:
+DayCareManScript_Outside:
 	faceplayer
-	loadfont
+	opentext
 	special Special_DayCareManOutside
+	waitbutton
 	closetext
-	loadmovesprites
-	if_equal $1, UnknownScript_0x7805a
-	clearflag ENGINE_DAYCARE_MONS_ARE_COMPATIBLE
+	if_equal $1, .end_fail
+	clearflag ENGINE_DAYCARE_MAN_HAS_EGG
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x7805b
-	applymovement $8, MovementData_0x78333
+	if_equal RIGHT, .walk_around_player
+	applymovement ROUTE34_GRAMPS, Route34MovementData_DayCareManWalksBackInside
 	playsound SFX_ENTER_DOOR
-	disappear $8
-UnknownScript_0x7805a:
+	disappear ROUTE34_GRAMPS
+.end_fail:
 	end
 
-UnknownScript_0x7805b:
-	applymovement $8, MovementData_0x78337
+.walk_around_player:
+	applymovement ROUTE34_GRAMPS, Route34MovementData_DayCareManWalksBackInside_WalkAroundPlayer
 	playsound SFX_ENTER_DOOR
-	disappear $8
+	disappear ROUTE34_GRAMPS
 	end
 
-DaycareMon1Script_0x78065:
-	loadfont
+DaycareMon1Script:
+	opentext
 	special Special_DayCareMon1
-	loadmovesprites
+	closetext
 	end
 
-DaycareMon2Script_0x7806b:
-	loadfont
+DaycareMon2Script:
+	opentext
 	special Special_DayCareMon2
-	loadmovesprites
+	closetext
 	end
 
 TrainerCamperTodd1:
-	trainer EVENT_BEAT_CAMPER_TODD, CAMPER, TODD1, CamperTodd1SeenText, CamperTodd1BeatenText, 0, CamperTodd1Script
+	trainer EVENT_BEAT_CAMPER_TODD, CAMPER, TODD1, CamperTodd1SeenText, CamperTodd1BeatenText, 0, .Script
 
-CamperTodd1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_CAMPER_TODD
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_TODD
-	iftrue UnknownScript_0x780bd
+	iftrue .Rematch
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
-	iftrue UnknownScript_0x78131
+	iftrue .SaleIsOn
 	checkcellnum PHONE_CAMPER_TODD
-	iftrue UnknownScript_0x78143
+	iftrue .NumberAccepted
 	checkevent EVENT_TODD_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x780a6
-	writetext UnknownText_0x784f0
-	keeptextopen
+	iftrue .AskAgain
+	writetext CamperTodd1AfterText
+	buttonsound
 	setevent EVENT_TODD_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x78137
-	jump UnknownScript_0x780a9
+	scall .AskNumber
+	jump .FinishAsk
 
-UnknownScript_0x780a6:
-	scall UnknownScript_0x7813b
-UnknownScript_0x780a9:
+.AskAgain:
+	scall .AskNumber2
+.FinishAsk:
 	askforphonenumber PHONE_CAMPER_TODD
-	if_equal $1, UnknownScript_0x7814b
-	if_equal $2, UnknownScript_0x78147
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext CAMPER, TODD1, $0
-	scall UnknownScript_0x7813f
-	jump UnknownScript_0x78143
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x780bd:
-	scall UnknownScript_0x7814f
+.Rematch:
+	scall .RematchStd
 	winlosstext CamperTodd1BeatenText, 0
 	copybytetovar wToddFightCount
 	if_equal 4, .Fight4
@@ -130,7 +145,7 @@
 .LoadFight0
 	loadtrainer CAMPER, TODD1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wToddFightCount, 1
 	clearflag ENGINE_TODD
 	end
@@ -138,7 +153,7 @@
 .LoadFight1
 	loadtrainer CAMPER, TODD2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wToddFightCount, 2
 	clearflag ENGINE_TODD
 	end
@@ -146,7 +161,7 @@
 .LoadFight2
 	loadtrainer CAMPER, TODD3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wToddFightCount, 3
 	clearflag ENGINE_TODD
 	end
@@ -154,7 +169,7 @@
 .LoadFight3
 	loadtrainer CAMPER, TODD4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wToddFightCount, 4
 	clearflag ENGINE_TODD
 	end
@@ -162,77 +177,77 @@
 .LoadFight4
 	loadtrainer CAMPER, TODD5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_TODD
 	end
 
-UnknownScript_0x78131:
-	writetext UnknownText_0x78532
+.SaleIsOn:
+	writetext CamperToddSaleText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x78137:
+.AskNumber:
 	jumpstd asknumber1m
 	end
 
-UnknownScript_0x7813b:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-UnknownScript_0x7813f:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-UnknownScript_0x78143:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-UnknownScript_0x78147:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-UnknownScript_0x7814b:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-UnknownScript_0x7814f:
+.RematchStd:
 	jumpstd rematchm
 	end
 
 TrainerPicnickerGina1:
-	trainer EVENT_BEAT_PICNICKER_GINA, PICNICKER, GINA1, PicnickerGina1SeenText, PicnickerGina1BeatenText, 0, PicnickerGina1Script
+	trainer EVENT_BEAT_PICNICKER_GINA, PICNICKER, GINA1, PicnickerGina1SeenText, PicnickerGina1BeatenText, 0, .Script
 
-PicnickerGina1Script:
+.Script:
 	writecode VAR_CALLERID, PHONE_PICNICKER_GINA
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_GINA
-	iftrue UnknownScript_0x7819f
+	iftrue .Rematch
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
-	iftrue UnknownScript_0x78213
+	iftrue .LeafStone
 	checkcellnum PHONE_PICNICKER_GINA
-	iftrue UnknownScript_0x78234
+	iftrue .NumberAccepted
 	checkevent EVENT_GINA_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x78188
-	writetext UnknownText_0x785b8
-	keeptextopen
+	iftrue .AskAgain
+	writetext PicnickerGina1AfterText
+	buttonsound
 	setevent EVENT_GINA_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x78228
-	jump UnknownScript_0x7818b
+	scall .AskNumber1
+	jump .FinishAsk
 
-UnknownScript_0x78188:
-	scall UnknownScript_0x7822c
-UnknownScript_0x7818b:
+.AskAgain:
+	scall .AskNumber2
+.FinishAsk:
 	askforphonenumber PHONE_PICNICKER_GINA
-	if_equal $1, UnknownScript_0x7823c
-	if_equal $2, UnknownScript_0x78238
+	if_equal $1, .PhoneFull
+	if_equal $2, .NumberDeclined
 	trainertotext PICNICKER, GINA1, $0
-	scall UnknownScript_0x78230
-	jump UnknownScript_0x78234
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
-UnknownScript_0x7819f:
-	scall UnknownScript_0x78240
+.Rematch:
+	scall .RematchStd
 	winlosstext PicnickerGina1BeatenText, 0
 	copybytetovar wGinaFightCount
 	if_equal 4, .Fight4
@@ -255,7 +270,7 @@
 .LoadFight0
 	loadtrainer PICNICKER, GINA1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGinaFightCount, 1
 	clearflag ENGINE_GINA
 	end
@@ -263,7 +278,7 @@
 .LoadFight1
 	loadtrainer PICNICKER, GINA2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGinaFightCount, 2
 	clearflag ENGINE_GINA
 	end
@@ -271,7 +286,7 @@
 .LoadFight2
 	loadtrainer PICNICKER, GINA3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGinaFightCount, 3
 	clearflag ENGINE_GINA
 	end
@@ -279,7 +294,7 @@
 .LoadFight3
 	loadtrainer PICNICKER, GINA4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wGinaFightCount, 4
 	clearflag ENGINE_GINA
 	end
@@ -287,209 +302,209 @@
 .LoadFight4
 	loadtrainer PICNICKER, GINA5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_GINA
 	end
 
-UnknownScript_0x78213:
-	scall UnknownScript_0x78244
+.LeafStone:
+	scall .Gift
 	verbosegiveitem LEAF_STONE
-	iffalse UnknownScript_0x78225
+	iffalse .BagFull
 	clearflag ENGINE_GINA_HAS_LEAF_STONE
 	setevent EVENT_GINA_GAVE_LEAF_STONE
-	jump UnknownScript_0x78234
+	jump .NumberAccepted
 
-UnknownScript_0x78225:
-	jump UnknownScript_0x78248
+.BagFull:
+	jump .PackFull
 
-UnknownScript_0x78228:
+.AskNumber1:
 	jumpstd asknumber1f
 	end
 
-UnknownScript_0x7822c:
+.AskNumber2:
 	jumpstd asknumber2f
 	end
 
-UnknownScript_0x78230:
+.RegisteredNumber:
 	jumpstd registerednumberf
 	end
 
-UnknownScript_0x78234:
+.NumberAccepted:
 	jumpstd numberacceptedf
 	end
 
-UnknownScript_0x78238:
+.NumberDeclined:
 	jumpstd numberdeclinedf
 	end
 
-UnknownScript_0x7823c:
+.PhoneFull:
 	jumpstd phonefullf
 	end
 
-UnknownScript_0x78240:
+.RematchStd:
 	jumpstd rematchf
 	end
 
-UnknownScript_0x78244:
+.Gift:
 	jumpstd giftf
 	end
 
-UnknownScript_0x78248:
+.PackFull:
 	jumpstd packfullf
 	end
 
-OfficerScript_0x7824c:
+OfficerKeithScript:
 	faceplayer
-	loadfont
+	opentext
 	checknite
-	iffalse UnknownScript_0x78276
+	iffalse .NoFight
 	checkevent EVENT_BEAT_OFFICER_KEITH
-	iftrue UnknownScript_0x78270
+	iftrue .AfterScript
 	playmusic MUSIC_OFFICER_ENCOUNTER
-	writetext UnknownText_0x785e4
+	writetext OfficerKeithSeenText
+	waitbutton
 	closetext
-	loadmovesprites
-	winlosstext UnknownText_0x78609, 0
+	winlosstext OfficerKeithWinText, 0
 	loadtrainer OFFICER, KEITH
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_OFFICER_KEITH
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x78270:
-	writetext UnknownText_0x78624
+.AfterScript:
+	writetext OfficerKeithAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x78276:
-	writetext UnknownText_0x7866a
+.NoFight:
+	writetext OfficerKeithDaytimeText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterSamuel:
-	trainer EVENT_BEAT_YOUNGSTER_SAMUEL, YOUNGSTER, SAMUEL, YoungsterSamuelSeenText, YoungsterSamuelBeatenText, 0, YoungsterSamuelScript
+	trainer EVENT_BEAT_YOUNGSTER_SAMUEL, YOUNGSTER, SAMUEL, YoungsterSamuelSeenText, YoungsterSamuelBeatenText, 0, .Script
 
-YoungsterSamuelScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x783d8
+.Script:
+	end_if_just_battled
+	opentext
+	writetext YoungsterSamuelAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerYoungsterIan:
-	trainer EVENT_BEAT_YOUNGSTER_IAN, YOUNGSTER, IAN, YoungsterIanSeenText, YoungsterIanBeatenText, 0, YoungsterIanScript
+	trainer EVENT_BEAT_YOUNGSTER_IAN, YOUNGSTER, IAN, YoungsterIanSeenText, YoungsterIanBeatenText, 0, .Script
 
-YoungsterIanScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x78469
+.Script:
+	end_if_just_battled
+	opentext
+	writetext YoungsterIanAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmBrandon:
-	trainer EVENT_BEAT_POKEFANM_BRANDON, POKEFANM, BRANDON, PokefanmBrandonSeenText, PokefanmBrandonBeatenText, 0, PokefanmBrandonScript
+	trainer EVENT_BEAT_POKEFANM_BRANDON, POKEFANM, BRANDON, PokefanmBrandonSeenText, PokefanmBrandonBeatenText, 0, .Script
 
-PokefanmBrandonScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x786fc
+.Script:
+	end_if_just_battled
+	opentext
+	writetext PokefanmBrandonAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfIrene:
-	trainer EVENT_BEAT_COOLTRAINERF_IRENE, COOLTRAINERF, IRENE, CooltrainerfIreneSeenText, CooltrainerfIreneBeatenText, 0, CooltrainerfIreneScript
+	trainer EVENT_BEAT_COOLTRAINERF_IRENE, COOLTRAINERF, IRENE, CooltrainerfIreneSeenText, CooltrainerfIreneBeatenText, 0, .Script
 
-CooltrainerfIreneScript:
-	talkaftercancel
-	loadfont
+.Script:
+	end_if_just_battled
+	opentext
 	checkevent EVENT_GOT_SOFT_SAND_FROM_KATE
-	iftrue UnknownScript_0x782d2
-	writetext UnknownText_0x7877f
+	iftrue .GotSoftSand
+	writetext CooltrainerfIreneAfterText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x782d2:
-	writetext UnknownText_0x787ad
+.GotSoftSand:
+	writetext CooltrainerfIreneAfterText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfJenn:
-	trainer EVENT_BEAT_COOLTRAINERF_JENN, COOLTRAINERF, JENN, CooltrainerfJennSeenText, CooltrainerfJennBeatenText, 0, CooltrainerfJennScript
+	trainer EVENT_BEAT_COOLTRAINERF_JENN, COOLTRAINERF, JENN, CooltrainerfJennSeenText, CooltrainerfJennBeatenText, 0, .Script
 
-CooltrainerfJennScript:
-	talkaftercancel
-	loadfont
+.Script:
+	end_if_just_battled
+	opentext
 	checkevent EVENT_GOT_SOFT_SAND_FROM_KATE
-	iftrue UnknownScript_0x782f2
-	writetext UnknownText_0x78836
+	iftrue .GotSoftSand
+	writetext CooltrainerfJennAfterText1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x782f2:
-	writetext UnknownText_0x78866
+.GotSoftSand:
+	writetext CooltrainerfJennAfterText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfKate:
-	trainer EVENT_BEAT_COOLTRAINERF_KATE, COOLTRAINERF, KATE, CooltrainerfKateSeenText, CooltrainerfKateBeatenText, 0, CooltrainerfKateScript
+	trainer EVENT_BEAT_COOLTRAINERF_KATE, COOLTRAINERF, KATE, CooltrainerfKateSeenText, CooltrainerfKateBeatenText, 0, .Script
 
-CooltrainerfKateScript:
-	talkaftercancel
-	loadfont
+.Script:
+	end_if_just_battled
+	opentext
 	checkevent EVENT_GOT_SOFT_SAND_FROM_KATE
-	iftrue UnknownScript_0x78319
-	writetext UnknownText_0x788e2
-	keeptextopen
+	iftrue .GotSoftSand
+	writetext CooltrainerfKateOfferSoftSandText
+	buttonsound
 	verbosegiveitem SOFT_SAND
-	iffalse UnknownScript_0x7831d
+	iffalse .BagFull
 	setevent EVENT_GOT_SOFT_SAND_FROM_KATE
-UnknownScript_0x78319:
-	writetext UnknownText_0x7892b
+.GotSoftSand:
+	writetext CooltrainerfKateAfterText
+	waitbutton
+.BagFull:
 	closetext
-UnknownScript_0x7831d:
-	loadmovesprites
 	end
 
-UnknownScript_0x7831f:
-	jumptext UnknownText_0x7898a
+MapRoute34UnusedSignpostScript:
+	jumptext MapRoute34UnusedSignpostText
 
 MapRoute34Signpost0Script:
-	jumptext UnknownText_0x789a8
+	jumptext MapRoute34Signpost0Text
 
 MapRoute34Signpost1Script:
-	jumptext UnknownText_0x789ed
+	jumptext MapRoute34Signpost1Text
 
 MapRoute34Signpost2Script:
-	jumptext UnknownText_0x78a52
+	jumptext MapRoute34Signpost2Text
 
-ItemFragment_0x7832b:
-	db NUGGET, 1
+Route34Nugget:
+	itemball NUGGET
 
-MapRoute34SignpostItem3:
+Route34HiddenRareCandy:
 	dwb EVENT_ROUTE_34_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
-MapRoute34SignpostItem4:
+Route34HiddenSuperPotion:
 	dwb EVENT_ROUTE_34_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
-MovementData_0x78333:
+Route34MovementData_DayCareManWalksBackInside:
 	slow_step_left
 	slow_step_left
 	slow_step_up
 	step_end
 
-MovementData_0x78337:
+Route34MovementData_DayCareManWalksBackInside_WalkAroundPlayer:
 	slow_step_down
 	slow_step_left
 	slow_step_left
@@ -507,7 +522,7 @@
 	line "passing stranger!"
 	done
 
-UnknownText_0x7837d:
+YoungsterSamuelMobileText:
 	text "Have you been to"
 	line "GOLDENROD CITY?"
 
@@ -518,7 +533,7 @@
 	line "#MON CENTER?"
 	done
 
-UnknownText_0x783d8:
+YoungsterSamuelAfterText:
 	text "I'm going to train"
 	line "even harder."
 
@@ -537,7 +552,7 @@
 	line "ter trainers…"
 	done
 
-UnknownText_0x78469:
+YoungsterIanAfterText:
 	text "I'm trying hard so"
 	line "I can be the star"
 	cont "in my class."
@@ -556,7 +571,7 @@
 	line "training?"
 	done
 
-UnknownText_0x784f0:
+CamperTodd1AfterText:
 	text "Maybe I should"
 	line "take one to a DAY-"
 
@@ -564,7 +579,7 @@
 	line "some items…"
 	done
 
-UnknownText_0x78532:
+CamperToddSaleText:
 	text "Shopping under the"
 	line "sky!"
 
@@ -584,24 +599,24 @@
 	line "can't win…"
 	done
 
-UnknownText_0x785b8:
+PicnickerGina1AfterText:
 	text "You're too strong"
 	line "to be a practice"
 	cont "partner."
 	done
 
-UnknownText_0x785e4:
+OfficerKeithSeenText:
 	text "Who goes there?"
 	line "What are you up"
 	cont "to?"
 	done
 
-UnknownText_0x78609:
+OfficerKeithWinText:
 	text "You're a tough"
 	line "little kid."
 	done
 
-UnknownText_0x78624:
+OfficerKeithAfterText:
 	text "Yep, I see nothing"
 	line "wrong today. You"
 
@@ -609,7 +624,7 @@
 	line "out of trouble."
 	done
 
-UnknownText_0x7866a:
+OfficerKeithDaytimeText:
 	text "I'm on patrol for"
 	line "suspicious indi-"
 	cont "viduals."
@@ -629,7 +644,7 @@
 	line "this way?"
 	done
 
-UnknownText_0x786fc:
+PokefanmBrandonAfterText:
 	text "My #MON knew"
 	line "moves I didn't"
 	cont "know it had."
@@ -648,13 +663,13 @@
 	line "Too strong!"
 	done
 
-UnknownText_0x7877f:
+CooltrainerfIreneAfterText1:
 	text "IRENE: My sister"
 	line "KATE will get you"
 	cont "for this!"
 	done
 
-UnknownText_0x787ad:
+CooltrainerfIreneAfterText2:
 	text "IRENE: Isn't this"
 	line "beach great?"
 
@@ -673,13 +688,13 @@
 	line "IRENE! Sis!"
 	done
 
-UnknownText_0x78836:
+CooltrainerfJennAfterText1:
 	text "JENN: Don't get"
 	line "cocky! My sister"
 	cont "KATE is tough!"
 	done
 
-UnknownText_0x78866:
+CooltrainerfJennAfterText2:
 	text "JENN: Sunlight"
 	line "makes your body"
 	cont "stronger."
@@ -696,7 +711,7 @@
 	line "believe I lost."
 	done
 
-UnknownText_0x788e2:
+CooltrainerfKateOfferSoftSandText:
 	text "KATE: You're too"
 	line "strong. I didn't"
 	cont "stand a chance."
@@ -705,7 +720,7 @@
 	line "this."
 	done
 
-UnknownText_0x7892b:
+CooltrainerfKateAfterText:
 	text "KATE: I'm sorry we"
 	line "jumped you."
 
@@ -716,12 +731,12 @@
 	line "startled us."
 	done
 
-UnknownText_0x7898a:
+MapRoute34UnusedSignpostText:
 	text "ILEX FOREST"
 	line "THROUGH THE GATE"
 	done
 
-UnknownText_0x789a8:
+MapRoute34Signpost0Text:
 	text "ROUTE 34"
 
 	para "GOLDENROD CITY -"
@@ -731,7 +746,7 @@
 	line "SOMEWHERE BETWEEN"
 	done
 
-UnknownText_0x789ed:
+MapRoute34Signpost1Text:
 	text "TRAINER TIPS"
 
 	para "BERRY trees grow"
@@ -743,7 +758,7 @@
 	cont "which BERRIES."
 	done
 
-UnknownText_0x78a52:
+MapRoute34Signpost2Text:
 	text "DAY-CARE"
 
 	para "LET US RAISE YOUR"
@@ -770,8 +785,8 @@
 	signpost 6, 12, SIGNPOST_READ, MapRoute34Signpost0Script
 	signpost 33, 13, SIGNPOST_READ, MapRoute34Signpost1Script
 	signpost 13, 10, SIGNPOST_READ, MapRoute34Signpost2Script
-	signpost 32, 8, SIGNPOST_ITEM, MapRoute34SignpostItem3
-	signpost 19, 17, SIGNPOST_ITEM, MapRoute34SignpostItem4
+	signpost 32, 8, SIGNPOST_ITEM, Route34HiddenRareCandy
+	signpost 19, 17, SIGNPOST_ITEM, Route34HiddenSuperPotion
 
 .PersonEvents:
 	db 13
@@ -779,12 +794,12 @@
 	person_event SPRITE_YOUNGSTER, 32, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterSamuel, -1
 	person_event SPRITE_YOUNGSTER, 20, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterIan, -1
 	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerGina1, -1
-	person_event SPRITE_OFFICER, 11, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7824c, -1
+	person_event SPRITE_OFFICER, 11, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerKeithScript, -1
 	person_event SPRITE_POKEFAN_M, 28, 18, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmBrandon, -1
-	person_event SPRITE_GRAMPS, 16, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7803d, EVENT_DAYCARE_MAN_ON_ROUTE_34
-	person_event SPRITE_DAYCARE_MON_1, 18, 14, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon1Script_0x78065, EVENT_DAYCARE_MON_1
-	person_event SPRITE_DAYCARE_MON_2, 19, 17, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon2Script_0x7806b, EVENT_DAYCARE_MON_2
+	person_event SPRITE_GRAMPS, 16, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Outside, EVENT_DAYCARE_MAN_ON_ROUTE_34
+	person_event SPRITE_DAYCARE_MON_1, 18, 14, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon1Script, EVENT_DAYCARE_MON_1
+	person_event SPRITE_DAYCARE_MON_2, 19, 17, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon2Script, EVENT_DAYCARE_MON_2
 	person_event SPRITE_COOLTRAINER_F, 48, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfIrene, -1
 	person_event SPRITE_COOLTRAINER_F, 48, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfJenn, -1
 	person_event SPRITE_COOLTRAINER_F, 51, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfKate, -1
-	person_event SPRITE_POKE_BALL, 30, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7832b, EVENT_ROUTE_34_NUGGET
+	person_event SPRITE_POKE_BALL, 30, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route34Nugget, EVENT_ROUTE_34_NUGGET
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE34ILEXFORESTGATE_TEACHER1
+	const ROUTE34ILEXFORESTGATE_BUTTERFREE
+	const ROUTE34ILEXFORESTGATE_LASS
+	const ROUTE34ILEXFORESTGATE_TEACHER2
+
 Route34IlexForestGate_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,64 +18,64 @@
 UnknownScript_0x62d2d:
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iffalse UnknownScript_0x62d38
-	disappear $2
-	appear $5
+	disappear ROUTE34ILEXFORESTGATE_TEACHER1
+	appear ROUTE34ILEXFORESTGATE_TEACHER2
 	return
 
 UnknownScript_0x62d38:
-	disappear $5
-	appear $2
+	disappear ROUTE34ILEXFORESTGATE_TEACHER2
+	appear ROUTE34ILEXFORESTGATE_TEACHER1
 	return
 
 UnknownScript_0x62d3d:
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iffalse UnknownScript_0x62d62
-	showemote EMOTE_SHOCK, $5, 20
-	spriteface $5, LEFT
+	showemote EMOTE_SHOCK, ROUTE34ILEXFORESTGATE_TEACHER2, 20
+	spriteface ROUTE34ILEXFORESTGATE_TEACHER2, LEFT
 	spriteface PLAYER, RIGHT
-	follow PLAYER, $5
+	follow PLAYER, ROUTE34ILEXFORESTGATE_TEACHER2
 	applymovement PLAYER, MovementData_0x62d97
 	stopfollow
 	spriteface PLAYER, DOWN
-	loadfont
+	opentext
 	writetext UnknownText_0x62e41
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x62d9a
+	applymovement ROUTE34ILEXFORESTGATE_TEACHER2, MovementData_0x62d9a
 UnknownScript_0x62d62:
 	end
 
 TeacherScript_0x62d63:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iftrue UnknownScript_0x62d84
 	checkevent EVENT_GOT_TM12_SWEET_SCENT
 	iftrue UnknownScript_0x62d7e
 	writetext UnknownText_0x62d9d
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SWEET_SCENT
 	iffalse UnknownScript_0x62d82
 	setevent EVENT_GOT_TM12_SWEET_SCENT
 UnknownScript_0x62d7e:
 	writetext UnknownText_0x62df6
-	closetext
+	waitbutton
 UnknownScript_0x62d82:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x62d84:
 	writetext UnknownText_0x62e41
-	keeptextopen
-	loadmovesprites
+	buttonsound
+	closetext
 	end
 
 ButterfreeScript_0x62d8a:
-	loadfont
+	opentext
 	writetext UnknownText_0x62e83
 	cry BUTTERFREE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x62d94:
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const ROUTE35_YOUNGSTER1
+	const ROUTE35_YOUNGSTER2
+	const ROUTE35_LASS1
+	const ROUTE35_LASS2
+	const ROUTE35_YOUNGSTER3
+	const ROUTE35_FISHER
+	const ROUTE35_BUG_CATCHER
+	const ROUTE35_SUPER_NERD
+	const ROUTE35_OFFICER
+	const ROUTE35_FRUIT_TREE
+	const ROUTE35_POKE_BALL
+
 Route35_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +22,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_BRYAN, BIRD_KEEPER, BRYAN, Bird_keeperBryanSeenText, Bird_keeperBryanBeatenText, 0, Bird_keeperBryanScript
 
 Bird_keeperBryanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cc87
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerJugglerIrwin:
@@ -21,14 +34,14 @@
 
 JugglerIrwin1Script:
 	writecode VAR_CALLERID, PHONE_JUGGLER_IRWIN
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkcellnum PHONE_JUGGLER_IRWIN
 	iftrue UnknownScript_0x19c90f
 	checkevent EVENT_IRWIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c8ec
 	writetext UnknownText_0x19cd5a
-	keeptextopen
+	buttonsound
 	setevent EVENT_IRWIN_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19c903
 	jump UnknownScript_0x19c8ef
@@ -75,11 +88,11 @@
 	trainer EVENT_BEAT_CAMPER_IVAN, CAMPER, IVAN, CamperIvanSeenText, CamperIvanBeatenText, 0, CamperIvanScript
 
 CamperIvanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cac4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCamperElliot:
@@ -86,11 +99,11 @@
 	trainer EVENT_BEAT_CAMPER_ELLIOT, CAMPER, ELLIOT, CamperElliotSeenText, CamperElliotBeatenText, 0, CamperElliotScript
 
 CamperElliotScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cb47
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerBrooke:
@@ -97,11 +110,11 @@
 	trainer EVENT_BEAT_PICNICKER_BROOKE, PICNICKER, BROOKE, PicnickerBrookeSeenText, PicnickerBrookeBeatenText, 0, PicnickerBrookeScript
 
 PicnickerBrookeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cbba
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerKim:
@@ -108,11 +121,11 @@
 	trainer EVENT_BEAT_PICNICKER_KIM, PICNICKER, KIM, PicnickerKimSeenText, PicnickerKimBeatenText, 0, PicnickerKimScript
 
 PicnickerKimScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cc21
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBug_catcherArnie1:
@@ -120,8 +133,8 @@
 
 Bug_catcherArnie1Script:
 	writecode VAR_CALLERID, PHONE_BUG_CATCHER_ARNIE
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_ARNIE
 	iftrue UnknownScript_0x19c9bb
 	checkflag ENGINE_YANMA_SWARM
@@ -131,7 +144,7 @@
 	checkevent EVENT_ARNIE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c9a4
 	writetext UnknownText_0x19cdf6
-	keeptextopen
+	buttonsound
 	setevent EVENT_ARNIE_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19c903
 	jump UnknownScript_0x19c9a7
@@ -170,7 +183,7 @@
 .LoadFight0
 	loadtrainer BUG_CATCHER, ARNIE1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wArnieFightCount, 1
 	clearflag ENGINE_ARNIE
 	end
@@ -178,7 +191,7 @@
 .LoadFight1
 	loadtrainer BUG_CATCHER, ARNIE2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wArnieFightCount, 2
 	clearflag ENGINE_ARNIE
 	end
@@ -186,7 +199,7 @@
 .LoadFight2
 	loadtrainer BUG_CATCHER, ARNIE3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wArnieFightCount, 3
 	clearflag ENGINE_ARNIE
 	end
@@ -194,7 +207,7 @@
 .LoadFight3
 	loadtrainer BUG_CATCHER, ARNIE4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wArnieFightCount, 4
 	clearflag ENGINE_ARNIE
 	end
@@ -202,14 +215,14 @@
 .LoadFight4
 	loadtrainer BUG_CATCHER, ARNIE5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_ARNIE
 	end
 
 UnknownScript_0x19ca2f:
 	writetext UnknownText_0x19ce38
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFirebreatherWalt:
@@ -216,16 +229,16 @@
 	trainer EVENT_BEAT_FIREBREATHER_WALT, FIREBREATHER, WALT, FirebreatherWaltSeenText, FirebreatherWaltBeatenText, 0, FirebreatherWaltScript
 
 FirebreatherWaltScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19cebc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 OfficerScript_0x19ca49:
 	faceplayer
-	loadfont
+	opentext
 	checknite
 	iffalse UnknownScript_0x19ca73
 	checkevent EVENT_BEAT_OFFICER_DIRK
@@ -232,33 +245,33 @@
 	iftrue UnknownScript_0x19ca6d
 	playmusic MUSIC_OFFICER_ENCOUNTER
 	writetext UnknownText_0x19ceea
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x19cf06, 0
 	loadtrainer OFFICER, DIRK
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_OFFICER_DIRK
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x19ca6d:
 	writetext UnknownText_0x19cf0f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19ca73:
 	writetext UnknownText_0x19cf56
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute35Signpost1Script:
 	jumptext UnknownText_0x19cf94
 
-ItemFragment_0x19ca7c:
-	db TM_ROLLOUT, 1
+Route35TMRollout:
+	itemball TM_ROLLOUT
 
 FruitTreeScript_0x19ca7e:
 	fruittree FRUITTREE_ROUTE_35
@@ -479,4 +492,4 @@
 	person_event SPRITE_SUPER_NERD, 10, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerJugglerIrwin, -1
 	person_event SPRITE_OFFICER, 6, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19ca49, -1
 	person_event SPRITE_FRUIT_TREE, 25, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19ca7e, -1
-	person_event SPRITE_POKE_BALL, 16, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19ca7c, EVENT_ROUTE_35_TM_ROLLOUT
+	person_event SPRITE_POKE_BALL, 16, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route35TMRollout, EVENT_ROUTE_35_TM_ROLLOUT
--- a/maps/Route35Goldenrodgate.asm
+++ b/maps/Route35Goldenrodgate.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE35GOLDENRODGATE_OFFICER
+	const ROUTE35GOLDENRODGATE_POKEFAN_F
+	const ROUTE35GOLDENRODGATE_FISHER
+
 Route35Goldenrodgate_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,7 +12,7 @@
 
 OfficerScript_0x69d37:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HP_UP_FROM_RANDY
 	iftrue .gothpup
 	checkevent EVENT_GAVE_KENYA
@@ -18,45 +23,45 @@
 	yesorno
 	iffalse .refused
 	writetext UnknownText_0x69e48
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	checkcode VAR_PARTYCOUNT
 	if_equal PARTY_LENGTH, .partyfull
 	writetext UnknownText_0x69eb8
 	playsound SFX_KEY_ITEM
-	waitbutton
+	waitsfx
 	givepoke SPEAROW, 10, NO_ITEM, 1, GiftSpearowName, GiftSpearowOTName
 	givepokeitem GiftSpearowMail
 	setevent EVENT_GOT_KENYA
 .alreadyhavekenya:
 	writetext UnknownText_0x69ed6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .partyfull:
 	writetext UnknownText_0x69f56
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .refused:
 	writetext UnknownText_0x69f74
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .questcomplete:
 	writetext UnknownText_0x69f8b
-	keeptextopen
+	buttonsound
 	verbosegiveitem HP_UP
 	iffalse .bagfull
 	setevent EVENT_GOT_HP_UP_FROM_RANDY
 .gothpup:
 	writetext UnknownText_0x69fd9
-	closetext
+	waitbutton
 .bagfull:
-	loadmovesprites
+	closetext
 	end
 
 GiftSpearowMail:
@@ -72,18 +77,18 @@
 
 PokefanFScript_0x69dc6:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOUGHT_SUDOWOODO
 	iftrue .aftersudowoodo
 	writetext UnknownText_0x6a00a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .aftersudowoodo:
 	writetext UnknownText_0x6a09a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x69dda:
--- a/maps/Route35NationalParkgate.asm
+++ b/maps/Route35NationalParkgate.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE35NATIONALPARKGATE_OFFICER1
+	const ROUTE35NATIONALPARKGATE_YOUNGSTER
+	const ROUTE35NATIONALPARKGATE_OFFICER2
+
 Route35NationalParkgate_MapScriptHeader:
 .MapTriggers:
 	db 3
@@ -43,21 +48,21 @@
 	if_equal SATURDAY, Route35NationalParkgate_IsContestDay
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue Route35NationalParkgate_Yes
-	disappear $2
-	appear $3
-	appear $4
+	disappear ROUTE35NATIONALPARKGATE_OFFICER1
+	appear ROUTE35NATIONALPARKGATE_YOUNGSTER
+	appear ROUTE35NATIONALPARKGATE_OFFICER2
 	return
 
 Route35NationalParkgate_IsContestDay:
-	appear $2
-	disappear $3
-	disappear $4
+	appear ROUTE35NATIONALPARKGATE_OFFICER1
+	disappear ROUTE35NATIONALPARKGATE_YOUNGSTER
+	disappear ROUTE35NATIONALPARKGATE_OFFICER2
 	return
 
 Route35NationalParkGate_LeavingContestEarly:
 	applymovement PLAYER, MovementData_0x6a2e2
-	spriteface $2, RIGHT
-	loadfont
+	spriteface ROUTE35NATIONALPARKGATE_OFFICER1, RIGHT
+	opentext
 	checkcode VAR_CONTESTMINUTES
 	addvar $1
 	RAM2MEM $0
@@ -65,18 +70,18 @@
 	yesorno
 	iffalse Route35NationalParkgate_GoBackIn
 	writetext UnknownText_0x6a7db
+	waitbutton
 	closetext
-	loadmovesprites
 	jumpstd bugcontestresultswarp
 
 Route35NationalParkgate_GoBackIn:
 	writetext UnknownText_0x6a823
+	waitbutton
 	closetext
-	loadmovesprites
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
 
@@ -87,7 +92,7 @@
 	if_equal WEDNESDAY, Route35NationalParkgate_NoContestToday
 	if_equal FRIDAY, Route35NationalParkgate_NoContestToday
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue Route35NationalParkgate_ContestIsOver
 	scall Route35NationalParkgate_GetDayOfWeek
@@ -102,18 +107,18 @@
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special PlayMapMusic
 	writetext UnknownText_0x6a39d
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x6a3c7
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x6a3e2
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_GiveParkBalls
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	special Special_SelectRandomBugContestContestants
 	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
@@ -144,47 +149,47 @@
 	iftrue Route35NationalParkgate_FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6a537
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x6a56b
 	playsound SFX_GOT_SAFARI_BALLS
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	jump Route35NationalParkgate_OkayToProceed
 
 Route35NationalParkgate_DeclinedToParticipate:
 	writetext UnknownText_0x6a5dc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_DeclinedToLeaveMonsBehind:
 	writetext UnknownText_0x6a597
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_FirstMonIsFainted:
 	writetext UnknownText_0x6a608
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_NoRoomInBox:
 	writetext UnknownText_0x6a67c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_FirstMonIsEgg:
 	writetext UnknownText_0x6a71f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_ContestIsOver:
 	writetext UnknownText_0x6a84f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route35NationalParkgate_NoContestToday:
@@ -192,12 +197,12 @@
 
 OfficerScript_0x6a2ca:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue Route35NationalParkgate_ContestIsOver
 	writetext UnknownText_0x6a894
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6a2d8:
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const ROUTE36_YOUNGSTER1
+	const ROUTE36_YOUNGSTER2
+	const ROUTE36_WEIRD_TREE
+	const ROUTE36_LASS1
+	const ROUTE36_FISHER
+	const ROUTE36_FRUIT_TREE
+	const ROUTE36_YOUNGSTER3
+	const ROUTE36_LASS2
+	const ROUTE36_SUICUNE
+
 Route36_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -22,11 +33,11 @@
 ArthurCallback:
 	checkcode VAR_WEEKDAY
 	if_equal THURSDAY, .ArthurAppears
-	disappear $8
+	disappear ROUTE36_YOUNGSTER3
 	return
 
 .ArthurAppears
-	appear $8
+	appear ROUTE36_YOUNGSTER3
 	return
 
 UnknownScript_0x19401b:
@@ -34,8 +45,8 @@
 	pause 15
 	playsound SFX_WARP_FROM
 	spriteface PLAYER, UP
-	applymovement $a, MovementData_0x194262
-	disappear $a
+	applymovement ROUTE36_SUICUNE, MovementData_0x194262
+	disappear ROUTE36_SUICUNE
 	spriteface PLAYER, DOWN
 	pause 10
 	dotrigger $0
@@ -46,48 +57,48 @@
 WeirdTreeScript_0x19403c:
 	checkitem SQUIRTBOTTLE
 	iftrue UnknownScript_0x19404a
-	waitbutton
+	waitsfx
 	playsound SFX_SANDSTORM
-	applymovement $4, MovementData_0x194249
+	applymovement ROUTE36_WEIRD_TREE, MovementData_0x194249
 	end
 
 UnknownScript_0x19404a:
-	loadfont
+	opentext
 	writetext UnknownText_0x19426b
 	yesorno
 	iffalse UnknownScript_0x194079
-	loadmovesprites
+	closetext
 	; fallthrough
 
 WateredWeirdTreeScript::
-	loadfont
+	opentext
 	writetext UnknownText_0x194290
-	closetext
-	loadmovesprites
 	waitbutton
+	closetext
+	waitsfx
 	playsound SFX_SANDSTORM
-	applymovement $4, MovementData_0x194249
-	loadfont
+	applymovement ROUTE36_WEIRD_TREE, MovementData_0x194249
+	opentext
 	writetext UnknownText_0x1942aa
+	waitbutton
 	closetext
-	loadmovesprites
-	loadpokedata SUDOWOODO, 20
+	loadwildmon SUDOWOODO, 20
 	startbattle
 	setevent EVENT_FOUGHT_SUDOWOODO
 	if_equal $2, UnknownScript_0x19407b
-	disappear $4
+	disappear ROUTE36_WEIRD_TREE
 	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x194079:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x19407b:
-	returnafterbattle
-	applymovement $4, MovementData_0x19424b
-	disappear $4
+	reloadmapafterbattle
+	applymovement ROUTE36_WEIRD_TREE, MovementData_0x19424b
+	disappear ROUTE36_WEIRD_TREE
 	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
 	special RunCallback_04
 	special RefreshSprites
@@ -95,70 +106,70 @@
 
 LassScript_0x19408c:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_TALKED_TO_FLORIA_AT_FLOWER_SHOP
 	iftrue UnknownScript_0x1940b3
 	setevent EVENT_MET_FLORIA
 	writetext UnknownText_0x1942f1
+	waitbutton
 	closetext
-	loadmovesprites
 	clearevent EVENT_FLORIA_AT_FLOWER_SHOP
 	checkcode VAR_FACING
-	if_equal $1, UnknownScript_0x1940ac
-	applymovement $9, MovementData_0x19424e
-	disappear $9
+	if_equal UP, UnknownScript_0x1940ac
+	applymovement ROUTE36_LASS2, MovementData_0x19424e
+	disappear ROUTE36_LASS2
 	end
 
 UnknownScript_0x1940ac:
-	applymovement $9, MovementData_0x194258
-	disappear $9
+	applymovement ROUTE36_LASS2, MovementData_0x194258
+	disappear ROUTE36_LASS2
 	end
 
 UnknownScript_0x1940b3:
 	writetext UnknownText_0x1943ed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x1940b9:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
 	iftrue UnknownScript_0x1940da
 	checkevent EVENT_FOUGHT_SUDOWOODO
 	iftrue UnknownScript_0x1940cd
 	writetext UnknownText_0x19446f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1940cd:
 	writetext UnknownText_0x1944d0
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_ROCK_SMASH
 	iffalse UnknownScript_0x1940de
 	setevent EVENT_GOT_TM08_ROCK_SMASH
 UnknownScript_0x1940da:
 	writetext UnknownText_0x19452c
-	closetext
+	waitbutton
 UnknownScript_0x1940de:
-	loadmovesprites
+	closetext
 	end
 
 LassScript_0x1940e0:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOUGHT_SUDOWOODO
 	iftrue UnknownScript_0x1940ee
 	writetext UnknownText_0x194626
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1940ee:
 	writetext UnknownText_0x19469e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSchoolboyAlan1:
@@ -166,8 +177,8 @@
 
 SchoolboyAlan1Script:
 	writecode VAR_CALLERID, PHONE_SCHOOLBOY_ALAN
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_ALAN
 	iftrue UnknownScript_0x194140
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
@@ -177,7 +188,7 @@
 	checkevent EVENT_ALAN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x194129
 	writetext UnknownText_0x1947aa
-	keeptextopen
+	buttonsound
 	setevent EVENT_ALAN_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1941c9
 	jump UnknownScript_0x19412c
@@ -216,7 +227,7 @@
 .LoadFight0
 	loadtrainer SCHOOLBOY, ALAN1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAlanFightCount, 1
 	clearflag ENGINE_ALAN
 	end
@@ -224,7 +235,7 @@
 .LoadFight1
 	loadtrainer SCHOOLBOY, ALAN2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAlanFightCount, 2
 	clearflag ENGINE_ALAN
 	end
@@ -232,7 +243,7 @@
 .LoadFight2
 	loadtrainer SCHOOLBOY, ALAN3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAlanFightCount, 3
 	clearflag ENGINE_ALAN
 	end
@@ -240,7 +251,7 @@
 .LoadFight3
 	loadtrainer SCHOOLBOY, ALAN4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wAlanFightCount, 4
 	clearflag ENGINE_ALAN
 	end
@@ -248,7 +259,7 @@
 .LoadFight4
 	loadtrainer SCHOOLBOY, ALAN5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_ALAN
 	end
 
@@ -303,16 +314,16 @@
 	trainer EVENT_BEAT_PSYCHIC_MARK, PSYCHIC_T, MARK, PsychicMarkSeenText, PsychicMarkBeatenText, 0, PsychicMarkScript
 
 PsychicMarkScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19471e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ArthurScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HARD_STONE_FROM_ARTHUR
 	iftrue ArthurThursdayScript
 	checkcode VAR_WEEKDAY
@@ -320,30 +331,30 @@
 	checkevent EVENT_MET_ARTHUR_OF_THURSDAY
 	iftrue .MetArthur
 	writetext MeetArthurText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_ARTHUR_OF_THURSDAY
 .MetArthur
 	writetext ArthurGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem HARD_STONE
 	iffalse ArthurDoneScript
 	setevent EVENT_GOT_HARD_STONE_FROM_ARTHUR
 	writetext ArthurGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ArthurThursdayScript:
 	writetext ArthurThursdayText
-	closetext
+	waitbutton
 ArthurDoneScript:
-	loadmovesprites
+	closetext
 	end
 
 ArthurNotThursdayScript:
 	writetext ArthurNotThursdayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute36Signpost2Script:
--- a/maps/Route36NationalParkgate.asm
+++ b/maps/Route36NationalParkgate.asm
@@ -1,11 +1,25 @@
+const_value set 2
+	const ROUTE36NATIONALPARKGATE_OFFICER1
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER1
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER2
+	const ROUTE36NATIONALPARKGATE_ROCKER
+	const ROUTE36NATIONALPARKGATE_POKEFAN_M
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER3
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER4
+	const ROUTE36NATIONALPARKGATE_LASS
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER5
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER6
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER7
+	const ROUTE36NATIONALPARKGATE_OFFICER2
+
 Route36NationalParkgate_MapScriptHeader:
 .MapTriggers:
 	db 3
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
-	dw .Trigger3, 0
 
 .MapCallbacks:
 	db 2
@@ -16,13 +30,13 @@
 
 	dbw 2, .CheckIfContestAvailable
 
-.Trigger1:
+.Trigger0:
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
-.Trigger3:
+.Trigger2:
 	priorityjump .LeftTheContestEarly
 	end
 
@@ -45,19 +59,19 @@
 	if_equal SATURDAY, .SetContestOfficer
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue .SetContestOfficer
-	disappear $2
-	appear $d
+	disappear ROUTE36NATIONALPARKGATE_OFFICER1
+	appear ROUTE36NATIONALPARKGATE_OFFICER2
 	return
 
 .SetContestOfficer:
-	appear $2
-	disappear $d
+	appear ROUTE36NATIONALPARKGATE_OFFICER1
+	disappear ROUTE36NATIONALPARKGATE_OFFICER2
 .Return:
 	return
 
 .LeftTheContestEarly:
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	checkcode VAR_CONTESTMINUTES
 	addvar $1
 	RAM2MEM $0
@@ -65,13 +79,13 @@
 	yesorno
 	iffalse .GoBackToContest
 	writetext UnknownText_0x6b2c5
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
 	scall .CopyContestants
-	disappear $2
-	appear $d
+	disappear ROUTE36NATIONALPARKGATE_OFFICER1
+	appear ROUTE36NATIONALPARKGATE_OFFICER2
 	applymovement PLAYER, MovementData_0x6add1
 	pause 15
 	special Special_FadeInQuickly
@@ -79,12 +93,12 @@
 
 .GoBackToContest:
 	writetext UnknownText_0x6b300
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
@@ -91,43 +105,43 @@
 .CopyContestants:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	iftrue .Not1
-	appear $3
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER1
 .Not1:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	iftrue .Not2
-	appear $4
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER2
 .Not2:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
 	iftrue .Not3
-	appear $5
+	appear ROUTE36NATIONALPARKGATE_ROCKER
 .Not3:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
 	iftrue .Not4
-	appear $6
+	appear ROUTE36NATIONALPARKGATE_POKEFAN_M
 .Not4:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
 	iftrue .Not5
-	appear $7
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER3
 .Not5:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
 	iftrue .Not6
-	appear $8
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER4
 .Not6:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
 	iftrue .Not7
-	appear $9
+	appear ROUTE36NATIONALPARKGATE_LASS
 .Not7:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
 	iftrue .Not8
-	appear $a
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER5
 .Not8:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
 	iftrue .Not9
-	appear $b
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER6
 .Not9:
 	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
 	iftrue .Not10
-	appear $c
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER7
 .Not10:
 	special UpdateSprites
 	end
@@ -139,7 +153,7 @@
 	if_equal WEDNESDAY, _ContestNotOn
 	if_equal FRIDAY, _ContestNotOn
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue Route36Officer_ContestHasConcluded
 	scall Route36Parkgate_DayToText
@@ -154,20 +168,20 @@
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special PlayMapMusic
 	writetext UnknownText_0x6ae87
-	keeptextopen
-	waitbutton
+	buttonsound
+	waitsfx
 	writetext UnknownText_0x6aeb1
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	writetext UnknownText_0x6aecc
+	waitbutton
 	closetext
-	loadmovesprites
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special Special_GiveParkBalls
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	special Special_SelectRandomBugContestContestants
 	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
@@ -187,41 +201,41 @@
 	iftrue .FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6b021
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x6b055
 	playsound SFX_GOT_SAFARI_BALLS
-	waitbutton
-	keeptextopen
+	waitsfx
+	buttonsound
 	jump .ResumeStartingContest
 
 .DecidedNotToJoinContest:
 	writetext UnknownText_0x6b0c6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .RefusedToLeaveMons:
 	writetext UnknownText_0x6b081
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FirstMonIsFainted:
 	writetext UnknownText_0x6b0f2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BoxFull:
 	writetext UnknownText_0x6b166
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FirstMonIsEgg:
 	writetext UnknownText_0x6b209
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route36Officer_ContestHasConcluded:
@@ -234,50 +248,50 @@
 	checkevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	iftrue .Berry
 	writetext UnknownText_0x6b32b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Sunstone:
 	writetext UnknownText_0x6b97f
-	keeptextopen
+	buttonsound
 	verbosegiveitem SUN_STONE
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
-	loadmovesprites
+	closetext
 	end
 
 .Everstone:
 	writetext UnknownText_0x6b97f
-	keeptextopen
+	buttonsound
 	verbosegiveitem EVERSTONE
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
-	loadmovesprites
+	closetext
 	end
 
 .GoldBerry:
 	writetext UnknownText_0x6b97f
-	keeptextopen
+	buttonsound
 	verbosegiveitem GOLD_BERRY
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
-	loadmovesprites
+	closetext
 	end
 
 .Berry:
 	writetext UnknownText_0x6b97f
-	keeptextopen
+	buttonsound
 	verbosegiveitem BERRY
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
-	loadmovesprites
+	closetext
 	end
 
 .BagFull:
 	writetext UnknownText_0x6b910
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 _ContestNotOn:
@@ -285,12 +299,12 @@
 
 OfficerScript_0x6acf4:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue Route36Officer_ContestHasConcluded
 	writetext UnknownText_0x6b370
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route36Parkgate_DayToText:
@@ -299,162 +313,162 @@
 
 YoungsterScript_0x6ad06:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad14
 	writetext UnknownText_0x6b399
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad14:
 	writetext UnknownText_0x6b3c4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6ad1a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad28
 	writetext UnknownText_0x6b40f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad28:
 	writetext UnknownText_0x6b440
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 RockerScript_0x6ad2e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad3c
 	writetext UnknownText_0x6b462
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad3c:
 	writetext UnknownText_0x6b496
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x6ad42:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad50
 	writetext UnknownText_0x6b4da
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad50:
 	writetext UnknownText_0x6b50a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6ad56:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad64
 	writetext UnknownText_0x6b54e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad64:
 	writetext UnknownText_0x6b57c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6ad6a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad78
 	writetext UnknownText_0x6b5b0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad78:
 	writetext UnknownText_0x6b5dd
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x6ad7e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ad8c
 	writetext UnknownText_0x6b64b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ad8c:
 	writetext UnknownText_0x6b698
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6ad92:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6ada0
 	writetext UnknownText_0x6b6b8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6ada0:
 	writetext UnknownText_0x6b6e9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6ada6:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6adb4
 	writetext UnknownText_0x6b71b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6adb4:
 	writetext UnknownText_0x6b740
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x6adba:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iffalse UnknownScript_0x6adc8
 	writetext UnknownText_0x6b76f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6adc8:
 	writetext UnknownText_0x6b7af
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6adce:
--- a/maps/Route36RuinsofAlphgate.asm
+++ b/maps/Route36RuinsofAlphgate.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE36RUINSOFALPHGATE_OFFICER
+	const ROUTE36RUINSOFALPHGATE_GRAMPS
+
 Route36RuinsofAlphgate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ROUTE37_WEIRD_TREE1
+	const ROUTE37_WEIRD_TREE2
+	const ROUTE37_YOUNGSTER
+	const ROUTE37_FRUIT_TREE1
+	const ROUTE37_BUG_CATCHER
+	const ROUTE37_FRUIT_TREE2
+	const ROUTE37_FRUIT_TREE3
+
 Route37_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,11 +21,11 @@
 SunnyCallback:
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, .SunnyAppears
-	disappear $6
+	disappear ROUTE37_BUG_CATCHER
 	return
 
 .SunnyAppears
-	appear $6
+	appear ROUTE37_BUG_CATCHER
 	return
 
 TrainerTwinsAnnandanne1:
@@ -23,11 +32,11 @@
 	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE1, TwinsAnnandanne1SeenText, TwinsAnnandanne1BeatenText, 0, TwinsAnnandanne1Script
 
 TwinsAnnandanne1Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a8e62
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerTwinsAnnandanne2:
@@ -34,11 +43,11 @@
 	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE2, TwinsAnnandanne2SeenText, TwinsAnnandanne2BeatenText, 0, TwinsAnnandanne2Script
 
 TwinsAnnandanne2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a8eec
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicGreg:
@@ -45,16 +54,16 @@
 	trainer EVENT_BEAT_PSYCHIC_GREG, PSYCHIC_T, GREG, PsychicGregSeenText, PsychicGregBeatenText, 0, PsychicGregScript
 
 PsychicGregScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a8f80
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SunnyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_MAGNET_FROM_SUNNY
 	iftrue SunnySundayScript
 	checkcode VAR_WEEKDAY
@@ -62,37 +71,37 @@
 	checkevent EVENT_MET_SUNNY_OF_SUNDAY
 	iftrue .MetSunny
 	writetext MeetSunnyText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_SUNNY_OF_SUNDAY
 .MetSunny
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .Kris
 	writetext SunnyGivesGiftText1
-	keeptextopen
+	buttonsound
 	jump .next
 .Kris
 	writetext SunnyGivesGiftText2
-	keeptextopen
+	buttonsound
 .next
 	verbosegiveitem MAGNET
 	iffalse SunnyDoneScript
 	setevent EVENT_GOT_MAGNET_FROM_SUNNY
 	writetext SunnyGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SunnySundayScript:
 	writetext SunnySundayText
-	closetext
+	waitbutton
 SunnyDoneScript:
-	loadmovesprites
+	closetext
 	end
 
 SunnyNotSundayScript:
 	writetext SunnyNotSundayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute37Signpost0Script:
@@ -107,7 +116,7 @@
 FruitTreeScript_0x1a8e0d:
 	fruittree FRUITTREE_ROUTE_37_3
 
-MapRoute37SignpostItem1:
+Route37HiddenEther:
 	dwb EVENT_ROUTE_37_HIDDEN_ETHER, ETHER
 	
 
@@ -245,7 +254,7 @@
 .Signposts:
 	db 2
 	signpost 3, 5, SIGNPOST_READ, MapRoute37Signpost0Script
-	signpost 2, 4, SIGNPOST_ITEM, MapRoute37SignpostItem1
+	signpost 2, 4, SIGNPOST_ITEM, Route37HiddenEther
 
 .PersonEvents:
 	db 7
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const ROUTE38_STANDING_YOUNGSTER1
+	const ROUTE38_LASS
+	const ROUTE38_STANDING_YOUNGSTER2
+	const ROUTE38_BUENA1
+	const ROUTE38_SAILOR
+	const ROUTE38_FRUIT_TREE
+	const ROUTE38_BUENA2
+
 Route38_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +18,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_TOBY, BIRD_KEEPER, TOBY, Bird_keeperTobySeenText, Bird_keeperTobyBeatenText, 0, .script
 
 .script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a1f86
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorHarry:
@@ -20,11 +29,11 @@
 	trainer EVENT_BEAT_SAILOR_HARRY, SAILOR, HARRY, SailorHarrySeenText, SailorHarryBeatenText, 0, .script
 
 .script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a220c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerLassDana1:
@@ -32,8 +41,8 @@
 
 .script:
 	writecode VAR_CALLERID, PHONE_LASS_DANA
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_DANA
 	iftrue .DanaRematch
 	checkflag ENGINE_DANA_HAS_THUNDERSTONE
@@ -43,7 +52,7 @@
 	checkevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
 	iftrue .SecondTimeAsking
 	writetext UnknownText_0x1a20ec
-	keeptextopen
+	buttonsound
 	setevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
 	scall .AskNumber1F
 	jump .AskForPhoneNumber
@@ -82,7 +91,7 @@
 .LoadFight0
 	loadtrainer LASS, DANA1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wDanaFightCount, 1
 	clearflag ENGINE_DANA
 	end
@@ -90,7 +99,7 @@
 .LoadFight1
 	loadtrainer LASS, DANA2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wDanaFightCount, 2
 	clearflag ENGINE_DANA
 	end
@@ -98,7 +107,7 @@
 .LoadFight2
 	loadtrainer LASS, DANA3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wDanaFightCount, 3
 	clearflag ENGINE_DANA
 	end
@@ -106,7 +115,7 @@
 .LoadFight3
 	loadtrainer LASS, DANA4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wDanaFightCount, 4
 	clearflag ENGINE_DANA
 	end
@@ -114,7 +123,7 @@
 .LoadFight4
 	loadtrainer LASS, DANA5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_DANA
 	end
 
@@ -170,8 +179,8 @@
 
 .script:
 	writecode VAR_CALLERID, PHONE_SCHOOLBOY_CHAD
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_CHAD
 	iftrue .ChadRematch
 	checkcellnum PHONE_SCHOOLBOY_CHAD
@@ -179,7 +188,7 @@
 	checkevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
 	iftrue .SecondTimeAsking
 	writetext UnknownText_0x1a200e
-	keeptextopen
+	buttonsound
 	setevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
 	scall .AskPhoneNumber1
 	jump .AskToRegisterNumber
@@ -218,7 +227,7 @@
 .LoadFight0
 	loadtrainer SCHOOLBOY, CHAD1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wChadFightCount, 1
 	clearflag ENGINE_CHAD
 	end
@@ -226,7 +235,7 @@
 .LoadFight1
 	loadtrainer SCHOOLBOY, CHAD2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wChadFightCount, 2
 	clearflag ENGINE_CHAD
 	end
@@ -234,7 +243,7 @@
 .LoadFight2
 	loadtrainer SCHOOLBOY, CHAD3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wChadFightCount, 3
 	clearflag ENGINE_CHAD
 	end
@@ -242,7 +251,7 @@
 .LoadFight3
 	loadtrainer SCHOOLBOY, CHAD4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wChadFightCount, 4
 	clearflag ENGINE_CHAD
 	end
@@ -250,7 +259,7 @@
 .LoadFight4
 	loadtrainer SCHOOLBOY, CHAD5
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_CHAD
 	end
 
@@ -286,11 +295,11 @@
 	trainer EVENT_BEAT_BEAUTY_VALERIE, BEAUTY, VALERIE, BeautyValerieSeenText, BeautyValerieBeatenText, 0, .script
 
 .script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a2185
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBeautyOlivia:
@@ -297,11 +306,11 @@
 	trainer EVENT_BEAT_BEAUTY_OLIVIA, BEAUTY, OLIVIA, BeautyOliviaSeenText, BeautyOliviaBeatenText, 0, .script
 
 .script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a229a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute38Signpost0Script:
--- a/maps/Route38EcruteakGate.asm
+++ b/maps/Route38EcruteakGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE38ECRUTEAKGATE_OFFICER
+
 Route38EcruteakGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -1,3 +1,15 @@
+const_value set 2
+	const ROUTE39_SAILOR
+	const ROUTE39_POKEFAN_M
+	const ROUTE39_POKEFAN_F1
+	const ROUTE39_TAUROS1
+	const ROUTE39_TAUROS2
+	const ROUTE39_TAUROS3
+	const ROUTE39_TAUROS4
+	const ROUTE39_STANDING_YOUNGSTER
+	const ROUTE39_FRUIT_TREE
+	const ROUTE39_POKEFAN_F2
+
 Route39_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,11 +18,11 @@
 	db 0
 
 TaurosScript_0x1a5af5:
-	loadfont
+	opentext
 	writetext UnknownText_0x1a5bf9
 	cry MILTANK
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmDerek1:
@@ -18,8 +30,8 @@
 
 PokefanmDerek1Script:
 	writecode VAR_CALLERID, PHONE_POKEFANM_DEREK
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue UnknownScript_0x1a5b4a
 	checkcellnum PHONE_POKEFANM_DEREK
@@ -29,7 +41,7 @@
 	checkevent EVENT_DEREK_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a5b33
 	writetext UnknownText_0x1a5cf8
-	keeptextopen
+	buttonsound
 	setevent EVENT_DEREK_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a5b62
 	jump UnknownScript_0x1a5b36
@@ -56,8 +68,8 @@
 
 UnknownScript_0x1a5b5c:
 	writetext UnknownText_0x1a5dec
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a5b62:
@@ -96,11 +108,11 @@
 	trainer EVENT_BEAT_POKEFANF_RUTH, POKEFANF, RUTH, PokefanfRuthSeenText, PokefanfRuthBeatenText, 0, PokefanfRuthScript
 
 PokefanfRuthScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a5db2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSailorEugene:
@@ -107,11 +119,11 @@
 	trainer EVENT_BEAT_SAILOR_EUGENE, SAILOR, EUGENE, SailorEugeneSeenText, SailorEugeneBeatenText, 0, SailorEugeneScript
 
 SailorEugeneScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a5c4d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicNorman:
@@ -118,41 +130,41 @@
 	trainer EVENT_BEAT_PSYCHIC_NORMAN, PSYCHIC_T, NORMAN, PsychicNormanSeenText, PsychicNormanBeatenText, 0, PsychicNormanScript
 
 PsychicNormanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a5e57
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanFScript_0x1a5bbe:
 	faceplayer
-	loadfont
+	opentext
 	checknite
 	iffalse UnknownScript_0x1a5be5
 	checkevent EVENT_BEAT_POKEFANF_JAIME
 	iftrue UnknownScript_0x1a5bdf
 	writetext UnknownText_0x1a5ee8
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1a5f17, 0
 	loadtrainer POKEFANF, JAIME
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_POKEFANF_JAIME
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x1a5bdf:
 	writetext UnknownText_0x1a5f31
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a5be5:
 	writetext UnknownText_0x1a5ec4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute39Signpost2Script:
@@ -167,7 +179,7 @@
 FruitTreeScript_0x1a5bf4:
 	fruittree FRUITTREE_ROUTE_39
 
-MapRoute39SignpostItem3:
+Route39HiddenNugget:
 	dwb EVENT_ROUTE_39_HIDDEN_NUGGET, NUGGET
 	
 
@@ -349,7 +361,7 @@
 	signpost 31, 5, SIGNPOST_READ, MapRoute39Signpost0Script
 	signpost 5, 9, SIGNPOST_READ, MapRoute39Signpost1Script
 	signpost 7, 15, SIGNPOST_READ, MapRoute39Signpost2Script
-	signpost 13, 5, SIGNPOST_ITEM, MapRoute39SignpostItem3
+	signpost 13, 5, SIGNPOST_ITEM, Route39HiddenNugget
 
 .PersonEvents:
 	db 10
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE39BARN_TWIN1
+	const ROUTE39BARN_TWIN2
+	const ROUTE39BARN_TAUROS
+
 Route39Barn_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,57 +12,57 @@
 
 TwinScript_0x9cc76:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_HEALED_MOOMOO
 	iftrue .FeedingMooMoo
 	writetext Text_MoomooIsSick
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, RIGHT
+	spriteface ROUTE39BARN_TWIN1, RIGHT
 	end
 
 .FeedingMooMoo:
 	writetext Text_WereFeedingMoomoo
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, RIGHT
+	spriteface ROUTE39BARN_TWIN1, RIGHT
 	end
 
 TwinScript_0x9cc90:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_HEALED_MOOMOO
 	iftrue .FeedingMooMoo
 	writetext Text_MoomooIsSick
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, LEFT
+	spriteface ROUTE39BARN_TWIN2, LEFT
 	end
 
 .FeedingMooMoo:
 	writetext Text_WereFeedingMoomoo
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, LEFT
+	spriteface ROUTE39BARN_TWIN2, LEFT
 	end
 
 TaurosScript_0x9ccaa:
-	loadfont
+	opentext
 	checkevent EVENT_HEALED_MOOMOO
 	iftrue .HappyCow
 	writetext Text_WeakMoo
 	writebyte MILTANK
 	special PlaySlowCry
-	keeptextopen
+	buttonsound
 	writetext Text_ItsCryIsWeak
 	checkevent EVENT_TALKED_TO_FARMER_ABOUT_MOOMOO
 	iftrue .GiveBerry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .GiveBerry:
-	keeptextopen
+	buttonsound
 	writetext Text_AskGiveBerry
 	yesorno
 	iffalse .Refused
@@ -71,24 +76,24 @@
 	if_equal 5, .FiveBerries
 	if_equal 7, .SevenBerries
 	writetext Text_GaveBerry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .ThreeBerries:
 	writetext Text_GaveBerry
-	keeptextopen
+	buttonsound
 	writetext Text_LittleHealthier
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FiveBerries:
 	writetext Text_GaveBerry
-	keeptextopen
+	buttonsound
 	writetext Text_QuiteHealthy
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SevenBerries:
@@ -95,31 +100,31 @@
 	playmusic MUSIC_HEAL
 	writetext Text_GaveBerry
 	pause 60
-	keeptextopen
+	buttonsound
 	special RestartMapMusic
 	writetext Text_TotallyHealthy
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_HEALED_MOOMOO
 	end
 
 .NoBerriesInBag:
 	writetext Text_NoBerries
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Refused:
 	writetext Text_RefusedToGiveBerry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .HappyCow:
 	writetext UnknownText_0x9cd92
 	cry MILTANK
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Text_MoomooIsSick:
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE39FARMHOUSE_POKEFAN_M
+	const ROUTE39FARMHOUSE_POKEFAN_F
+
 Route39Farmhouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,12 +11,12 @@
 
 PokefanMScript_0x9ceb4:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_HEALED_MOOMOO
 	iftrue UnknownScript_0x9cec5
 	writetext UnknownText_0x9cf38
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_TALKED_TO_FARMER_ABOUT_MOOMOO
 	end
 
@@ -20,7 +24,7 @@
 	checkitem MOOMOO_MILK
 	iftrue UnknownScript_0x9cf08
 	writetext UnknownText_0x9cfe1
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	yesorno
 	iffalse UnknownScript_0x9cf02
 	checkmoney $0, 500
@@ -28,62 +32,62 @@
 	giveitem MOOMOO_MILK
 	iffalse UnknownScript_0x9cefc
 	takemoney $0, 500
-	special PlaceMoneyTopRightOW
-	waitbutton
+	special PlaceMoneyTopRight
+	waitsfx
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x9d05d
-	keeptextopen
+	buttonsound
 	itemnotify
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x9cef6:
 	writetext UnknownText_0x9d07c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9cefc:
 	writetext UnknownText_0x9d09d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9cf02:
 	writetext UnknownText_0x9d0b7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9cf08:
 	writetext UnknownText_0x9d0dc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanFScript_0x9cf0e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM13_SNORE_FROM_MOOMOO_FARM
 	iftrue UnknownScript_0x9cf2f
 	checkevent EVENT_HEALED_MOOMOO
 	iftrue UnknownScript_0x9cf22
 	writetext UnknownText_0x9d0f6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x9cf22:
 	writetext UnknownText_0x9d156
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SNORE
 	iffalse UnknownScript_0x9cf33
 	setevent EVENT_GOT_TM13_SNORE_FROM_MOOMOO_FARM
 UnknownScript_0x9cf2f:
 	writetext UnknownText_0x9d1c7
-	closetext
+	waitbutton
 UnknownScript_0x9cf33:
-	loadmovesprites
+	closetext
 	end
 
 FarmhouseBookshelf:
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const ROUTE4_YOUNGSTER
+	const ROUTE4_LASS1
+	const ROUTE4_LASS2
+	const ROUTE4_POKE_BALL
+
 Route4_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +15,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_HANK, BIRD_KEEPER, HANK, Bird_keeperHankSeenText, Bird_keeperHankBeatenText, 0, Bird_keeperHankScript
 
 Bird_keeperHankScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae258
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerHope:
@@ -20,11 +26,11 @@
 	trainer EVENT_BEAT_PICNICKER_HOPE, PICNICKER, HOPE, PicnickerHopeSeenText, PicnickerHopeBeatenText, 0, PicnickerHopeScript
 
 PicnickerHopeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae320
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerSharon:
@@ -31,20 +37,20 @@
 	trainer EVENT_BEAT_PICNICKER_SHARON, PICNICKER, SHARON, PicnickerSharonSeenText, PicnickerSharonBeatenText, 0, PicnickerSharonScript
 
 PicnickerSharonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ae369
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute4Signpost0Script:
 	jumptext UnknownText_0x1ae384
 
-ItemFragment_0x1ae20f:
-	db HP_UP, 1
+Route4HPUp:
+	itemball HP_UP
 
-MapRoute4SignpostItem1:
+Route4HiddenUltraBall:
 	dwb EVENT_ROUTE_4_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
@@ -129,7 +135,7 @@
 .Signposts:
 	db 2
 	signpost 7, 3, SIGNPOST_READ, MapRoute4Signpost0Script
-	signpost 3, 10, SIGNPOST_ITEM, MapRoute4SignpostItem1
+	signpost 3, 10, SIGNPOST_ITEM, Route4HiddenUltraBall
 
 .PersonEvents:
 	db 4
@@ -136,4 +142,4 @@
 	person_event SPRITE_YOUNGSTER, 9, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperHank, -1
 	person_event SPRITE_LASS, 8, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerHope, -1
 	person_event SPRITE_LASS, 6, 21, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerSharon, -1
-	person_event SPRITE_POKE_BALL, 3, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1ae20f, EVENT_ROUTE_4_HP_UP
+	person_event SPRITE_POKE_BALL, 3, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route4HPUp, EVENT_ROUTE_4_HP_UP
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -1,3 +1,17 @@
+const_value set 2
+	const ROUTE40_OLIVINE_RIVAL1
+	const ROUTE40_OLIVINE_RIVAL2
+	const ROUTE40_SWIMMER_GIRL1
+	const ROUTE40_SWIMMER_GIRL2
+	const ROUTE40_ROCK1
+	const ROUTE40_ROCK2
+	const ROUTE40_ROCK3
+	const ROUTE40_LASS1
+	const ROUTE40_BUENA
+	const ROUTE40_POKEFAN_M
+	const ROUTE40_LASS2
+	const ROUTE40_STANDING_YOUNGSTER
+
 Route40_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,11 +27,11 @@
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, .MonicaAppears
-	disappear $a
+	disappear ROUTE40_BUENA
 	return
 
 .MonicaAppears
-	appear $a
+	appear ROUTE40_BUENA
 	return
 
 TrainerSwimmerfElaine:
@@ -24,11 +38,11 @@
 	trainer EVENT_BEAT_SWIMMERF_ELAINE, SWIMMERF, ELAINE, SwimmerfElaineSeenText, SwimmerfElaineBeatenText, 0, SwimmerfElaineScript
 
 SwimmerfElaineScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a637b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfPaula:
@@ -35,11 +49,11 @@
 	trainer EVENT_BEAT_SWIMMERF_PAULA, SWIMMERF, PAULA, SwimmerfPaulaSeenText, SwimmerfPaulaBeatenText, 0, SwimmerfPaulaScript
 
 SwimmerfPaulaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a63f5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermSimon:
@@ -46,11 +60,11 @@
 	trainer EVENT_BEAT_SWIMMERM_SIMON, SWIMMERM, SIMON, SwimmermSimonSeenText, SwimmermSimonBeatenText, 0, SwimmermSimonScript
 
 SwimmermSimonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6282
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermRandall:
@@ -57,11 +71,11 @@
 	trainer EVENT_BEAT_SWIMMERM_RANDALL, SWIMMERM, RANDALL, SwimmermRandallSeenText, SwimmermRandallBeatenText, 0, SwimmermRandallScript
 
 SwimmermRandallScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a62fa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 LassScript_0x1a61c4:
@@ -83,7 +97,7 @@
 
 MonicaScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_SHARP_BEAK_FROM_MONICA
 	iftrue MonicaMondayScript
 	checkcode VAR_WEEKDAY
@@ -91,30 +105,30 @@
 	checkevent EVENT_MET_MONICA_OF_MONDAY
 	iftrue .MetMonica
 	writetext MeetMonicaText
-	keeptextopen
+	buttonsound
 	setevent EVENT_MET_MONICA_OF_MONDAY
 .MetMonica
 	writetext MonicaGivesGiftText
-	keeptextopen
+	buttonsound
 	verbosegiveitem SHARP_BEAK
 	iffalse MonicaDoneScript
 	setevent EVENT_GOT_SHARP_BEAK_FROM_MONICA
 	writetext MonicaGaveGiftText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MonicaMondayScript:
 	writetext MonicaMondayText
-	closetext
+	waitbutton
 MonicaDoneScript:
-	loadmovesprites
+	closetext
 	end
 
 MonicaNotMondayScript:
 	writetext MonicaNotMondayText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute40Signpost0Script:
@@ -123,7 +137,7 @@
 Route40Rock:
 	jumpstd smashrock
 
-MapRoute40SignpostItem1:
+Route40HiddenHyperPotion:
 	dwb EVENT_ROUTE_40_HIDDEN_HYPER_POTION, HYPER_POTION
 
 MovementData_0x1a621c:
@@ -340,7 +354,7 @@
 .Signposts:
 	db 2
 	signpost 10, 14, SIGNPOST_READ, MapRoute40Signpost0Script
-	signpost 8, 7, SIGNPOST_ITEM, MapRoute40SignpostItem1
+	signpost 8, 7, SIGNPOST_ITEM, Route40HiddenHyperPotion
 
 .PersonEvents:
 	db 12
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE40BATTLETOWERGATE_ROCKER
+	const ROUTE40BATTLETOWERGATE_TWIN
+
 Route40BattleTowerGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -1,3 +1,15 @@
+const_value set 2
+	const ROUTE41_OLIVINE_RIVAL1
+	const ROUTE41_OLIVINE_RIVAL2
+	const ROUTE41_OLIVINE_RIVAL3
+	const ROUTE41_OLIVINE_RIVAL4
+	const ROUTE41_OLIVINE_RIVAL5
+	const ROUTE41_SWIMMER_GIRL1
+	const ROUTE41_SWIMMER_GIRL2
+	const ROUTE41_SWIMMER_GIRL3
+	const ROUTE41_SWIMMER_GIRL4
+	const ROUTE41_SWIMMER_GIRL5
+
 Route41_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +21,11 @@
 	trainer EVENT_BEAT_SWIMMERF_KAYLEE, SWIMMERF, KAYLEE, SwimmerfKayleeSeenText, SwimmerfKayleeBeatenText, 0, SwimmerfKayleeScript
 
 SwimmerfKayleeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6c7f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfSusie:
@@ -20,11 +32,11 @@
 	trainer EVENT_BEAT_SWIMMERF_SUSIE, SWIMMERF, SUSIE, SwimmerfSusieSeenText, SwimmerfSusieBeatenText, 0, SwimmerfSusieScript
 
 SwimmerfSusieScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6d11
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfDenise:
@@ -31,11 +43,11 @@
 	trainer EVENT_BEAT_SWIMMERF_DENISE, SWIMMERF, DENISE, SwimmerfDeniseSeenText, SwimmerfDeniseBeatenText, 0, SwimmerfDeniseScript
 
 SwimmerfDeniseScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6d79
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfKara:
@@ -42,11 +54,11 @@
 	trainer EVENT_BEAT_SWIMMERF_KARA, SWIMMERF, KARA, SwimmerfKaraSeenText, SwimmerfKaraBeatenText, 0, SwimmerfKaraScript
 
 SwimmerfKaraScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6e58
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmerfWendy:
@@ -53,11 +65,11 @@
 	trainer EVENT_BEAT_SWIMMERF_WENDY, SWIMMERF, WENDY, SwimmerfWendySeenText, SwimmerfWendyBeatenText, 0, SwimmerfWendyScript
 
 SwimmerfWendyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6ec2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermCharlie:
@@ -64,11 +76,11 @@
 	trainer EVENT_BEAT_SWIMMERM_CHARLIE, SWIMMERM, CHARLIE, SwimmermCharlieSeenText, SwimmermCharlieBeatenText, 0, SwimmermCharlieScript
 
 SwimmermCharlieScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a696e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermGeorge:
@@ -75,11 +87,11 @@
 	trainer EVENT_BEAT_SWIMMERM_GEORGE, SWIMMERM, GEORGE, SwimmermGeorgeSeenText, SwimmermGeorgeBeatenText, 0, SwimmermGeorgeScript
 
 SwimmermGeorgeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a69d4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermBerke:
@@ -86,11 +98,11 @@
 	trainer EVENT_BEAT_SWIMMERM_BERKE, SWIMMERM, BERKE, SwimmermBerkeSeenText, SwimmermBerkeBeatenText, 0, SwimmermBerkeScript
 
 SwimmermBerkeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6aa4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermKirk:
@@ -97,11 +109,11 @@
 	trainer EVENT_BEAT_SWIMMERM_KIRK, SWIMMERM, KIRK, SwimmermKirkSeenText, SwimmermKirkBeatenText, 0, SwimmermKirkScript
 
 SwimmermKirkScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6b6c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSwimmermMathew:
@@ -108,11 +120,11 @@
 	trainer EVENT_BEAT_SWIMMERM_MATHEW, SWIMMERM, MATHEW, SwimmermMathewSeenText, SwimmermMathewBeatenText, 0, SwimmermMathewScript
 
 SwimmermMathewScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a6bed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Route41Rock:
@@ -119,7 +131,7 @@
 ; unused
 	jumpstd smashrock
 
-MapRoute41SignpostItem0:
+Route41HiddenMaxEther:
 	dwb EVENT_ROUTE_41_HIDDEN_MAX_ETHER, MAX_ETHER
 
 SwimmermCharlieSeenText:
@@ -345,7 +357,7 @@
 
 .Signposts:
 	db 1
-	signpost 35, 9, SIGNPOST_ITEM, MapRoute41SignpostItem0
+	signpost 35, 9, SIGNPOST_ITEM, Route41HiddenMaxEther
 
 .PersonEvents:
 	db 10
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const ROUTE42_FISHER
+	const ROUTE42_POKEFAN_M
+	const ROUTE42_SUPER_NERD
+	const ROUTE42_FRUIT_TREE1
+	const ROUTE42_FRUIT_TREE2
+	const ROUTE42_FRUIT_TREE3
+	const ROUTE42_POKE_BALL1
+	const ROUTE42_POKE_BALL2
+	const ROUTE42_SUICUNE
+
 Route42_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -19,8 +30,8 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	pause 15
 	playsound SFX_WARP_FROM
-	applymovement $a, MovementData_0x1a9356
-	disappear $a
+	applymovement ROUTE42_SUICUNE, MovementData_0x1a9356
+	disappear ROUTE42_SUICUNE
 	pause 10
 	dotrigger $0
 	clearevent EVENT_SAW_SUICUNE_ON_ROUTE_36
@@ -32,8 +43,8 @@
 
 FisherTully1Script:
 	writecode VAR_CALLERID, PHONE_FISHER_TULLY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_TULLY
 	iftrue UnknownScript_0x1a927f
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
@@ -43,7 +54,7 @@
 	checkevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a9268
 	writetext UnknownText_0x1a93ab
-	keeptextopen
+	buttonsound
 	setevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a92f1
 	jump UnknownScript_0x1a926b
@@ -78,7 +89,7 @@
 .LoadFight0
 	loadtrainer FISHER, TULLY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTullyFightCount, 1
 	clearflag ENGINE_TULLY
 	end
@@ -86,7 +97,7 @@
 .LoadFight1
 	loadtrainer FISHER, TULLY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTullyFightCount, 2
 	clearflag ENGINE_TULLY
 	end
@@ -94,7 +105,7 @@
 .LoadFight2
 	loadtrainer FISHER, TULLY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTullyFightCount, 3
 	clearflag ENGINE_TULLY
 	end
@@ -102,7 +113,7 @@
 .LoadFight3
 	loadtrainer FISHER, TULLY4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_TULLY
 	end
 
@@ -157,11 +168,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_SHANE, POKEMANIAC, SHANE, PokemaniacShaneSeenText, PokemaniacShaneBeatenText, 0, PokemaniacShaneScript
 
 PokemaniacShaneScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a94d6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerBenjamin:
@@ -168,11 +179,11 @@
 	trainer EVENT_BEAT_HIKER_BENJAMIN, HIKER, BENJAMIN, HikerBenjaminSeenText, HikerBenjaminBeatenText, 0, HikerBenjaminScript
 
 HikerBenjaminScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a943f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute42Signpost0Script:
@@ -187,11 +198,11 @@
 MapRoute42Signpost3Script:
 	jumptext UnknownText_0x1a95a1
 
-ItemFragment_0x1a9349:
-	db ULTRA_BALL, 1
+Route42UltraBall:
+	itemball ULTRA_BALL
 
-ItemFragment_0x1a934b:
-	db SUPER_POTION, 1
+Route42SuperPotion:
+	itemball SUPER_POTION
 
 FruitTreeScript_0x1a934d:
 	fruittree FRUITTREE_ROUTE_42_1
@@ -202,7 +213,7 @@
 FruitTreeScript_0x1a9351:
 	fruittree FRUITTREE_ROUTE_42_3
 
-MapRoute42SignpostItem4:
+Route42HiddenMaxPotion:
 	dwb EVENT_ROUTE_42_HIDDEN_MAX_POTION, MAX_POTION
 	
 
@@ -332,7 +343,7 @@
 	signpost 5, 7, SIGNPOST_READ, MapRoute42Signpost1Script
 	signpost 9, 45, SIGNPOST_READ, MapRoute42Signpost2Script
 	signpost 8, 54, SIGNPOST_READ, MapRoute42Signpost3Script
-	signpost 11, 16, SIGNPOST_ITEM, MapRoute42SignpostItem4
+	signpost 11, 16, SIGNPOST_ITEM, Route42HiddenMaxPotion
 
 .PersonEvents:
 	db 9
@@ -342,6 +353,6 @@
 	person_event SPRITE_FRUIT_TREE, 16, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a934d, -1
 	person_event SPRITE_FRUIT_TREE, 16, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a934f, -1
 	person_event SPRITE_FRUIT_TREE, 16, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a9351, -1
-	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a9349, EVENT_ROUTE_42_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 8, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a934b, EVENT_ROUTE_42_SUPER_POTION
+	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route42UltraBall, EVENT_ROUTE_42_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 8, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route42SuperPotion, EVENT_ROUTE_42_SUPER_POTION
 	person_event SPRITE_SUICUNE, 16, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
--- a/maps/Route42EcruteakGate.asm
+++ b/maps/Route42EcruteakGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE42ECRUTEAKGATE_OFFICER
+
 Route42EcruteakGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const ROUTE43_SUPER_NERD1
+	const ROUTE43_SUPER_NERD2
+	const ROUTE43_SUPER_NERD3
+	const ROUTE43_FISHER
+	const ROUTE43_LASS
+	const ROUTE43_YOUNGSTER
+	const ROUTE43_FRUIT_TREE
+	const ROUTE43_POKE_BALL
+
 Route43_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -23,11 +33,11 @@
 	trainer EVENT_BEAT_CAMPER_SPENCER, CAMPER, SPENCER, CamperSpencerSeenText, CamperSpencerBeatenText, 0, CamperSpencerScript
 
 CamperSpencerScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19d57e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacBen:
@@ -34,11 +44,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_BEN, POKEMANIAC, BEN, PokemaniacBenSeenText, PokemaniacBenBeatenText, 0, PokemaniacBenScript
 
 PokemaniacBenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19d2d2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacBrent1:
@@ -46,8 +56,8 @@
 
 PokemaniacBrent1Script:
 	writecode VAR_CALLERID, PHONE_POKEMANIAC_BRENT
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0x19d0cf
 	checkcellnum PHONE_POKEMANIAC_BRENT
@@ -55,7 +65,7 @@
 	checkevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d0b8
 	writetext UnknownText_0x19d359
-	keeptextopen
+	buttonsound
 	setevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19d12c
 	jump UnknownScript_0x19d0bb
@@ -90,7 +100,7 @@
 .LoadFight0
 	loadtrainer POKEMANIAC, BRENT1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wBrentFightCount, 1
 	clearflag ENGINE_BRENT
 	end
@@ -98,7 +108,7 @@
 .LoadFight1
 	loadtrainer POKEMANIAC, BRENT2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wBrentFightCount, 2
 	clearflag ENGINE_BRENT
 	end
@@ -106,7 +116,7 @@
 .LoadFight2
 	loadtrainer POKEMANIAC, BRENT3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wBrentFightCount, 3
 	clearflag ENGINE_BRENT
 	end
@@ -114,7 +124,7 @@
 .LoadFight3
 	loadtrainer POKEMANIAC, BRENT4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_BRENT
 	end
 
@@ -150,11 +160,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_RON, POKEMANIAC, RON, PokemaniacRonSeenText, PokemaniacRonBeatenText, 0, PokemaniacRonScript
 
 PokemaniacRonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19d3f8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherMarvin:
@@ -161,11 +171,11 @@
 	trainer EVENT_BEAT_FISHER_MARVIN, FISHER, MARVIN, FisherMarvinSeenText, FisherMarvinBeatenText, 0, FisherMarvinScript
 
 FisherMarvinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19d4d3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerTiffany3:
@@ -173,8 +183,8 @@
 
 PicnickerTiffany3Script:
 	writecode VAR_CALLERID, PHONE_PICNICKER_TIFFANY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_TIFFANY
 	iftrue UnknownScript_0x19d1c1
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
@@ -186,7 +196,7 @@
 	checkevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d1aa
 	writetext UnknownText_0x19d618
-	keeptextopen
+	buttonsound
 	setevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19d239
 	jump UnknownScript_0x19d1ad
@@ -221,7 +231,7 @@
 .LoadFight0
 	loadtrainer PICNICKER, TIFFANY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTiffanyFightCount, 1
 	clearflag ENGINE_TIFFANY
 	end
@@ -229,7 +239,7 @@
 .LoadFight1
 	loadtrainer PICNICKER, TIFFANY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTiffanyFightCount, 2
 	clearflag ENGINE_TIFFANY
 	end
@@ -237,7 +247,7 @@
 .LoadFight2
 	loadtrainer PICNICKER, TIFFANY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wTiffanyFightCount, 3
 	clearflag ENGINE_TIFFANY
 	end
@@ -245,7 +255,7 @@
 .LoadFight3
 	loadtrainer PICNICKER, TIFFANY4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_TIFFANY
 	end
 
@@ -262,8 +272,8 @@
 
 UnknownScript_0x19d233:
 	writetext UnknownText_0x19d64b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19d239:
@@ -314,8 +324,8 @@
 FruitTreeScript_0x19d266:
 	fruittree FRUITTREE_ROUTE_43
 
-ItemFragment_0x19d268:
-	db MAX_ETHER, 1
+Route43MaxEther:
+	itemball MAX_ETHER
 
 PokemaniacBenSeenText:
 	text "I love #MON!"
@@ -523,4 +533,4 @@
 	person_event SPRITE_LASS, 25, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerTiffany3, -1
 	person_event SPRITE_YOUNGSTER, 40, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperSpencer, -1
 	person_event SPRITE_FRUIT_TREE, 26, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19d266, -1
-	person_event SPRITE_POKE_BALL, 32, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19d268, EVENT_ROUTE_43_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 32, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route43MaxEther, EVENT_ROUTE_43_MAX_ETHER
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE43GATE_OFFICER
+	const ROUTE43GATE_ROCKET1
+	const ROUTE43GATE_ROCKET2
+
 Route43Gate_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -33,21 +38,21 @@
 UnknownScript_0x19abda:
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	checkcode VAR_FACING
-	if_equal $0, UnknownScript_0x19abea
-	if_equal $1, UnknownScript_0x19ac38
+	if_equal DOWN, UnknownScript_0x19abea
+	if_equal UP, UnknownScript_0x19ac38
 	dotrigger $1
 	end
 
 UnknownScript_0x19abea:
 	applymovement PLAYER, MovementData_0x19aca2
-	showemote EMOTE_SHOCK, $4, 15
-	applymovement $4, MovementData_0x19acbb
-	spriteface $3, UP
-	showemote EMOTE_SHOCK, $3, 15
-	applymovement $3, MovementData_0x19aca4
-	loadfont
+	showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET2, 15
+	applymovement ROUTE43GATE_ROCKET2, MovementData_0x19acbb
+	spriteface ROUTE43GATE_ROCKET1, UP
+	showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET1, 15
+	applymovement ROUTE43GATE_ROCKET1, MovementData_0x19aca4
+	opentext
 	writetext UnknownText_0x19acd2
-	keeptextopen
+	buttonsound
 	checkmoney $0, 999
 	if_equal $0, UnknownScript_0x19ac12
 	jump UnknownScript_0x19ac1d
@@ -63,23 +68,23 @@
 	jump UnknownScript_0x19ac28
 
 UnknownScript_0x19ac28:
-	keeptextopen
-	loadmovesprites
-	applymovement $3, MovementData_0x19acaa
-	applymovement $4, MovementData_0x19acc1
+	buttonsound
+	closetext
+	applymovement ROUTE43GATE_ROCKET1, MovementData_0x19acaa
+	applymovement ROUTE43GATE_ROCKET2, MovementData_0x19acc1
 	dotrigger $1
 	special RestartMapMusic
 	end
 
 UnknownScript_0x19ac38:
-	showemote EMOTE_SHOCK, $3, 15
-	applymovement $3, MovementData_0x19acaf
-	spriteface $4, DOWN
-	showemote EMOTE_SHOCK, $4, 15
-	applymovement $4, MovementData_0x19acc7
-	loadfont
+	showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET1, 15
+	applymovement ROUTE43GATE_ROCKET1, MovementData_0x19acaf
+	spriteface ROUTE43GATE_ROCKET2, DOWN
+	showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET2, 15
+	applymovement ROUTE43GATE_ROCKET2, MovementData_0x19acc7
+	opentext
 	writetext UnknownText_0x19acd2
-	keeptextopen
+	buttonsound
 	checkmoney $0, 999
 	if_equal $0, UnknownScript_0x19ac5c
 	jump UnknownScript_0x19ac67
@@ -95,10 +100,10 @@
 	jump UnknownScript_0x19ac72
 
 UnknownScript_0x19ac72:
-	keeptextopen
-	loadmovesprites
-	applymovement $4, MovementData_0x19accd
-	applymovement $3, MovementData_0x19acb5
+	buttonsound
+	closetext
+	applymovement ROUTE43GATE_ROCKET2, MovementData_0x19accd
+	applymovement ROUTE43GATE_ROCKET1, MovementData_0x19acb5
 	dotrigger $1
 	special RestartMapMusic
 	end
@@ -108,22 +113,22 @@
 
 OfficerScript_0x19ac85:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM36_SLUDGE_BOMB
 	iftrue UnknownScript_0x19ac9c
 	writetext UnknownText_0x19ad9b
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_SLUDGE_BOMB
 	iffalse UnknownScript_0x19aca0
 	setevent EVENT_GOT_TM36_SLUDGE_BOMB
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x19ac9c:
 	writetext UnknownText_0x19ae2d
-	closetext
+	waitbutton
 UnknownScript_0x19aca0:
-	loadmovesprites
+	closetext
 	end
 
 MovementData_0x19aca2:
--- a/maps/Route43MahoganyGate.asm
+++ b/maps/Route43MahoganyGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE43MAHOGANYGATE_OFFICER
+
 Route43MahoganyGate_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,18 +10,18 @@
 
 OfficerScript_0x19ab0b:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x19ab19
 	writetext UnknownText_0x19ab1f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19ab19:
 	writetext UnknownText_0x19ab65
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x19ab1f:
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -1,3 +1,16 @@
+const_value set 2
+	const ROUTE44_FISHER1
+	const ROUTE44_FISHER2
+	const ROUTE44_YOUNGSTER1
+	const ROUTE44_SUPER_NERD
+	const ROUTE44_YOUNGSTER2
+	const ROUTE44_COOLTRAINER_M
+	const ROUTE44_COOLTRAINER_F
+	const ROUTE44_FRUIT_TREE
+	const ROUTE44_POKE_BALL1
+	const ROUTE44_POKE_BALL2
+	const ROUTE44_POKE_BALL3
+
 Route44_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,8 +23,8 @@
 
 Bird_keeperVance1Script:
 	writecode VAR_CALLERID, PHONE_BIRDKEEPER_VANCE
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0x19d86a
 	checkcellnum PHONE_BIRDKEEPER_VANCE
@@ -19,7 +32,7 @@
 	checkevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d853
 	writetext UnknownText_0x19dbf3
-	keeptextopen
+	buttonsound
 	setevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19d8df
 	jump UnknownScript_0x19d856
@@ -50,7 +63,7 @@
 .LoadFight0
 	loadtrainer BIRD_KEEPER, VANCE1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wVanceFightCount, 1
 	clearflag ENGINE_VANCE
 	end
@@ -58,7 +71,7 @@
 .LoadFight1
 	loadtrainer BIRD_KEEPER, VANCE2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wVanceFightCount, 2
 	clearflag ENGINE_VANCE
 	end
@@ -66,7 +79,7 @@
 .LoadFight2
 	loadtrainer BIRD_KEEPER, VANCE3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_VANCE
 	checkevent EVENT_VANCE_CARBOS
 	iftrue UnknownScript_0x19d8cb
@@ -82,9 +95,9 @@
 	end
 
 UnknownScript_0x19d8cb:
-	loadfont
+	opentext
 	writetext UnknownText_0x19dc67
-	closetext
+	waitbutton
 	verbosegiveitem CARBOS
 	iffalse UnknownScript_0x19d903
 	clearevent EVENT_VANCE_CARBOS
@@ -140,11 +153,11 @@
 	trainer EVENT_BEAT_PSYCHIC_PHIL, PSYCHIC_T, PHIL, PsychicPhilSeenText, PsychicPhilBeatenText, 0, PsychicPhilScript
 
 PsychicPhilScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19dcfc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFisherWilton1:
@@ -152,8 +165,8 @@
 
 FisherWilton1Script:
 	writecode VAR_CALLERID, PHONE_FISHER_WILTON
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_WILTON
 	iftrue UnknownScript_0x19d96e
 	checkflag ENGINE_WILTON_HAS_ITEM
@@ -163,7 +176,7 @@
 	checkevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d957
 	writetext UnknownText_0x19daa8
-	keeptextopen
+	buttonsound
 	setevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19d8df
 	jump UnknownScript_0x19d95a
@@ -194,7 +207,7 @@
 .LoadFight0
 	loadtrainer FISHER, WILTON1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWiltonFightCount, 1
 	clearflag ENGINE_WILTON
 	end
@@ -202,7 +215,7 @@
 .LoadFight1
 	loadtrainer FISHER, WILTON2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wWiltonFightCount, 2
 	clearflag ENGINE_WILTON
 	end
@@ -210,7 +223,7 @@
 .LoadFight2
 	loadtrainer FISHER, WILTON3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_WILTON
 	end
 
@@ -246,11 +259,11 @@
 	trainer EVENT_BEAT_FISHER_EDGAR, FISHER, EDGAR, FisherEdgarSeenText, FisherEdgarBeatenText, 0, FisherEdgarScript
 
 FisherEdgarScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19db6f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfCybil:
@@ -257,11 +270,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_CYBIL, COOLTRAINERF, CYBIL, CooltrainerfCybilSeenText, CooltrainerfCybilBeatenText, 0, CooltrainerfCybilScript
 
 CooltrainerfCybilScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19df4d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacZach:
@@ -268,11 +281,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_ZACH, POKEMANIAC, ZACH, PokemaniacZachSeenText, PokemaniacZachBeatenText, 0, PokemaniacZachScript
 
 PokemaniacZachScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19dd7e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermAllen:
@@ -279,11 +292,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_ALLEN, COOLTRAINERM, ALLEN, CooltrainermAllenSeenText, CooltrainermAllenBeatenText, 0, CooltrainermAllenScript
 
 CooltrainermAllenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19de66
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute44Signpost0Script:
@@ -295,16 +308,16 @@
 FruitTreeScript_0x19da40:
 	fruittree FRUITTREE_ROUTE_44
 
-ItemFragment_0x19da42:
-	db MAX_REVIVE, 1
+Route44MaxRevive:
+	itemball MAX_REVIVE
 
-ItemFragment_0x19da44:
-	db ULTRA_BALL, 1
+Route44UltraBall:
+	itemball ULTRA_BALL
 
-ItemFragment_0x19da46:
-	db MAX_REPEL, 1
+Route44MaxRepel:
+	itemball MAX_REPEL
 
-MapRoute44SignpostItem2:
+Route44HiddenElixer:
 	dwb EVENT_ROUTE_44_HIDDEN_ELIXER, ELIXER
 	
 
@@ -509,7 +522,7 @@
 	db 3
 	signpost 7, 53, SIGNPOST_READ, MapRoute44Signpost0Script
 	signpost 10, 6, SIGNPOST_READ, MapRoute44Signpost1Script
-	signpost 9, 32, SIGNPOST_ITEM, MapRoute44SignpostItem2
+	signpost 9, 32, SIGNPOST_ITEM, Route44HiddenElixer
 
 .PersonEvents:
 	db 11
@@ -521,6 +534,6 @@
 	person_event SPRITE_COOLTRAINER_M, 15, 41, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainermAllen, -1
 	person_event SPRITE_COOLTRAINER_F, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfCybil, -1
 	person_event SPRITE_FRUIT_TREE, 5, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19da40, -1
-	person_event SPRITE_POKE_BALL, 8, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19da42, EVENT_ROUTE_44_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 4, 45, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19da44, EVENT_ROUTE_44_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19da46, EVENT_ROUTE_44_MAX_REPEL
+	person_event SPRITE_POKE_BALL, 8, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route44MaxRevive, EVENT_ROUTE_44_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 4, 45, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route44UltraBall, EVENT_ROUTE_44_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route44MaxRepel, EVENT_ROUTE_44_MAX_REPEL
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -1,3 +1,18 @@
+const_value set 2
+	const ROUTE45_POKEFAN_M1
+	const ROUTE45_POKEFAN_M2
+	const ROUTE45_POKEFAN_M3
+	const ROUTE45_POKEFAN_M4
+	const ROUTE45_BLACK_BELT
+	const ROUTE45_COOLTRAINER_M
+	const ROUTE45_COOLTRAINER_F
+	const ROUTE45_FRUIT_TREE
+	const ROUTE45_POKE_BALL1
+	const ROUTE45_POKE_BALL2
+	const ROUTE45_POKE_BALL3
+	const ROUTE45_POKE_BALL4
+	const ROUTE45_YOUNGSTER
+
 Route45_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,8 +25,8 @@
 
 BlackbeltKenji3Script:
 	writecode VAR_CALLERID, PHONE_BLACKBELT_KENJI
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkcellnum PHONE_BLACKBELT_KENJI
 	iftrue UnknownScript_0x19e0e4
 	checkevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
@@ -18,7 +33,7 @@
 	iftrue UnknownScript_0x19e0cd
 	special Special_SampleKenjiBreakCountdown
 	writetext UnknownText_0x19e5e2
-	closetext
+	waitbutton
 	setevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19e11b
 	jump UnknownScript_0x19e0d0
@@ -51,14 +66,14 @@
 
 UnknownScript_0x19e10c:
 	writetext UnknownText_0x19e634
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19e112:
 	writetext UnknownText_0x19e66c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19e118:
@@ -113,11 +128,11 @@
 	trainer EVENT_BEAT_HIKER_ERIK, HIKER, ERIK, HikerErikSeenText, HikerErikBeatenText, 0, HikerErikScript
 
 HikerErikScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19e301
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerMichael:
@@ -124,11 +139,11 @@
 	trainer EVENT_BEAT_HIKER_MICHAEL, HIKER, MICHAEL, HikerMichaelSeenText, HikerMichaelBeatenText, 0, HikerMichaelScript
 
 HikerMichaelScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19e3b1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerParry:
@@ -136,8 +151,8 @@
 
 HikerParry3Script:
 	writecode VAR_CALLERID, PHONE_HIKER_PARRY
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0x19e1b8
 	checkcellnum PHONE_HIKER_PARRY
@@ -145,7 +160,7 @@
 	checkevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19e1a1
 	writetext UnknownText_0x19e434
-	keeptextopen
+	buttonsound
 	setevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x19e11b
 	jump UnknownScript_0x19e1a4
@@ -176,7 +191,7 @@
 .LoadFight0
 	loadtrainer HIKER, PARRY3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wParryFightCount, 1
 	clearflag ENGINE_PARRY
 	end
@@ -184,7 +199,7 @@
 .LoadFight1
 	loadtrainer HIKER, PARRY1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wParryFightCount, 2
 	clearflag ENGINE_PARRY
 	end
@@ -192,7 +207,7 @@
 .LoadFight2
 	loadtrainer HIKER, PARRY2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_PARRY
 	checkevent EVENT_PARRY_IRON
 	iftrue UnknownScript_0x19e219
@@ -208,9 +223,9 @@
 	end
 
 UnknownScript_0x19e219:
-	loadfont
+	opentext
 	writetext UnknownText_0x19e52c
-	closetext
+	waitbutton
 	verbosegiveitem IRON
 	iffalse UnknownScript_0x19e13f
 	clearevent EVENT_PARRY_IRON
@@ -221,11 +236,11 @@
 	trainer EVENT_BEAT_HIKER_TIMOTHY, HIKER, TIMOTHY, HikerTimothySeenText, HikerTimothyBeatenText, 0, HikerTimothyScript
 
 HikerTimothyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19e4f1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainermRyan:
@@ -232,11 +247,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_RYAN, COOLTRAINERM, RYAN, CooltrainermRyanSeenText, CooltrainermRyanBeatenText, 0, CooltrainermRyanScript
 
 CooltrainermRyanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19e70d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfKelly:
@@ -243,39 +258,39 @@
 	trainer EVENT_BEAT_COOLTRAINERF_KELLY, COOLTRAINERF, KELLY, CooltrainerfKellySeenText, CooltrainerfKellyBeatenText, 0, CooltrainerfKellyScript
 
 CooltrainerfKellyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19e7d1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x19e269:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_CAMPER_QUENTIN
 	iftrue UnknownScript_0x19e285
 	writetext UnknownText_0x19e87f
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x19e899, 0
 	loadtrainer CAMPER, QUENTIN
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_CAMPER_QUENTIN
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x19e285:
 	writetext UnknownText_0x19e8bb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19e28b:
 	writetext UnknownText_0x19e830
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute45Signpost0Script:
@@ -284,19 +299,19 @@
 FruitTreeScript_0x19e294:
 	fruittree FRUITTREE_ROUTE_45
 
-ItemFragment_0x19e296:
-	db NUGGET, 1
+Route45Nugget:
+	itemball NUGGET
 
-ItemFragment_0x19e298:
-	db REVIVE, 1
+Route45Revive:
+	itemball REVIVE
 
-ItemFragment_0x19e29a:
-	db ELIXER, 1
+Route45Elixer:
+	itemball ELIXER
 
-ItemFragment_0x19e29c:
-	db MAX_POTION, 1
+Route45MaxPotion:
+	itemball MAX_POTION
 
-MapRoute45SignpostItem1:
+Route45HiddenPpUp:
 	dwb EVENT_ROUTE_45_HIDDEN_PP_UP, PP_UP
 	
 
@@ -531,7 +546,7 @@
 .Signposts:
 	db 2
 	signpost 4, 10, SIGNPOST_READ, MapRoute45Signpost0Script
-	signpost 80, 13, SIGNPOST_ITEM, MapRoute45SignpostItem1
+	signpost 80, 13, SIGNPOST_ITEM, Route45HiddenPpUp
 
 .PersonEvents:
 	db 13
@@ -543,8 +558,8 @@
 	person_event SPRITE_COOLTRAINER_M, 18, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermRyan, -1
 	person_event SPRITE_COOLTRAINER_F, 36, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfKelly, -1
 	person_event SPRITE_FRUIT_TREE, 82, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19e294, -1
-	person_event SPRITE_POKE_BALL, 51, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19e296, EVENT_ROUTE_45_NUGGET
-	person_event SPRITE_POKE_BALL, 66, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19e298, EVENT_ROUTE_45_REVIVE
-	person_event SPRITE_POKE_BALL, 20, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19e29a, EVENT_ROUTE_45_ELIXER
-	person_event SPRITE_POKE_BALL, 33, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x19e29c, EVENT_ROUTE_45_MAX_POTION
+	person_event SPRITE_POKE_BALL, 51, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Nugget, EVENT_ROUTE_45_NUGGET
+	person_event SPRITE_POKE_BALL, 66, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Revive, EVENT_ROUTE_45_REVIVE
+	person_event SPRITE_POKE_BALL, 20, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Elixer, EVENT_ROUTE_45_ELIXER
+	person_event SPRITE_POKE_BALL, 33, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45MaxPotion, EVENT_ROUTE_45_MAX_POTION
 	person_event SPRITE_YOUNGSTER, 70, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19e269, -1
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ROUTE46_POKEFAN_M
+	const ROUTE46_YOUNGSTER
+	const ROUTE46_LASS
+	const ROUTE46_FRUIT_TREE1
+	const ROUTE46_FRUIT_TREE2
+	const ROUTE46_POKE_BALL
+
 Route46_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +17,11 @@
 	trainer EVENT_BEAT_CAMPER_TED, CAMPER, TED, CamperTedSeenText, CamperTedBeatenText, 0, CamperTedScript
 
 CamperTedScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a9851
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerErin1:
@@ -21,8 +29,8 @@
 
 PicnickerErin1Script:
 	writecode VAR_CALLERID, PHONE_PICNICKER_ERIN
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0x1a96da
 	checkcellnum PHONE_PICNICKER_ERIN
@@ -30,7 +38,7 @@
 	checkevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a96c3
 	writetext UnknownText_0x1a98c6
-	keeptextopen
+	buttonsound
 	setevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	scall UnknownScript_0x1a974f
 	jump UnknownScript_0x1a96c6
@@ -61,7 +69,7 @@
 .LoadFight0
 	loadtrainer PICNICKER, ERIN1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wErinFightCount, 1
 	clearflag ENGINE_ERIN
 	end
@@ -69,7 +77,7 @@
 .LoadFight1
 	loadtrainer PICNICKER, ERIN2
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	loadvar wErinFightCount, 2
 	clearflag ENGINE_ERIN
 	end
@@ -77,7 +85,7 @@
 .LoadFight2
 	loadtrainer PICNICKER, ERIN3
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	clearflag ENGINE_ERIN
 	checkevent EVENT_ERIN_CALCIUM
 	iftrue UnknownScript_0x1a973b
@@ -93,9 +101,9 @@
 	end
 
 UnknownScript_0x1a973b:
-	loadfont
+	opentext
 	writetext UnknownText_0x1a9927
-	closetext
+	waitbutton
 	verbosegiveitem CALCIUM
 	iffalse UnknownScript_0x1a976b
 	clearevent EVENT_ERIN_CALCIUM
@@ -143,18 +151,18 @@
 	trainer EVENT_BEAT_HIKER_BAILEY, HIKER, BAILEY, HikerBaileySeenText, HikerBaileyBeatenText, 0, HikerBaileyScript
 
 HikerBaileyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1a97e8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute46Signpost0Script:
 	jumptext UnknownText_0x1a99be
 
-ItemFragment_0x1a978d:
-	db X_SPEED, 1
+Route46XSpeed:
+	itemball X_SPEED
 
 FruitTreeScript_0x1a978f:
 	fruittree FRUITTREE_ROUTE_46_1
@@ -266,4 +274,4 @@
 	person_event SPRITE_LASS, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerErin1, -1
 	person_event SPRITE_FRUIT_TREE, 5, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a978f, -1
 	person_event SPRITE_FRUIT_TREE, 6, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a9791, -1
-	person_event SPRITE_POKE_BALL, 15, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a978d, EVENT_ROUTE_46_X_SPEED
+	person_event SPRITE_POKE_BALL, 15, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route46XSpeed, EVENT_ROUTE_46_X_SPEED
--- a/maps/Route5.asm
+++ b/maps/Route5.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE5_POKEFAN_M
+
 Route5_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const ROUTE5CLEANSETAGSPEECHHOUSE_GRANNY
+	const ROUTE5CLEANSETAGSPEECHHOUSE_TEACHER
+
 Route5CleanseTagSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,19 +11,19 @@
 
 GrannyScript_0x18b634:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_CLEANSE_TAG
 	iftrue UnknownScript_0x18b649
 	writetext UnknownText_0x18b655
-	keeptextopen
+	buttonsound
 	verbosegiveitem CLEANSE_TAG
 	iffalse UnknownScript_0x18b64d
 	setevent EVENT_GOT_CLEANSE_TAG
 UnknownScript_0x18b649:
 	writetext UnknownText_0x18b6a7
-	closetext
+	waitbutton
 UnknownScript_0x18b64d:
-	loadmovesprites
+	closetext
 	end
 
 TeacherScript_0x18b64f:
--- a/maps/Route5SaffronCityGate.asm
+++ b/maps/Route5SaffronCityGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE5SAFFRONCITYGATE_OFFICER
+
 Route5SaffronCityGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route5UndergroundEntrance.asm
+++ b/maps/Route5UndergroundEntrance.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE5UNDERGROUNDENTRANCE_TEACHER
+
 Route5UndergroundEntrance_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const ROUTE6_POKEFAN_M1
+	const ROUTE6_POKEFAN_M2
+	const ROUTE6_POKEFAN_M3
+
 Route6_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +14,11 @@
 	trainer EVENT_BEAT_POKEFANM_REX, POKEFANM, REX, PokefanmRexSeenText, PokefanmRexBeatenText, 0, PokefanmRexScript
 
 PokefanmRexScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ad9ff
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokefanmAllan:
@@ -20,11 +25,11 @@
 	trainer EVENT_BEAT_POKEFANM_ALLAN, POKEFANM, ALLAN, PokefanmAllanSeenText, PokefanmAllanBeatenText, 0, PokefanmAllanScript
 
 PokefanmAllanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ada88
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x1ad951:
--- a/maps/Route6SaffronGate.asm
+++ b/maps/Route6SaffronGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE6SAFFRONGATE_OFFICER
+
 Route6SaffronGate_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,18 +16,18 @@
 
 OfficerScript_0x1926ea:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x1926f8
 	writetext UnknownText_0x1926fe
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1926f8:
 	writetext UnknownText_0x1927cb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x1926fe:
--- a/maps/Route6UndergroundEntrance.asm
+++ b/maps/Route6UndergroundEntrance.asm
@@ -1,3 +1,4 @@
+
 Route6UndergroundEntrance_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route7.asm
+++ b/maps/Route7.asm
@@ -1,3 +1,4 @@
+
 Route7_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route7SaffronGate.asm
+++ b/maps/Route7SaffronGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE7SAFFRONGATE_OFFICER
+
 Route7SaffronGate_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,18 +10,18 @@
 
 OfficerScript_0x73518:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x73526
 	writetext UnknownText_0x7352c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x73526:
 	writetext UnknownText_0x73592
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x7352c:
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ROUTE8_BIKER1
+	const ROUTE8_BIKER2
+	const ROUTE8_BIKER3
+	const ROUTE8_SUPER_NERD1
+	const ROUTE8_SUPER_NERD2
+	const ROUTE8_FRUIT_TREE
+
 Route8_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +17,11 @@
 	trainer EVENT_BEAT_BIKER_DWAYNE, BIKER, DWAYNE, BikerDwayneSeenText, BikerDwayneBeatenText, 0, BikerDwayneScript
 
 BikerDwayneScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6c0c8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBikerHarris:
@@ -20,11 +28,11 @@
 	trainer EVENT_BEAT_BIKER_HARRIS, BIKER, HARRIS, BikerHarrisSeenText, BikerHarrisBeatenText, 0, BikerHarrisScript
 
 BikerHarrisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6c143
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBikerZeke:
@@ -31,11 +39,11 @@
 	trainer EVENT_BEAT_BIKER_ZEKE, BIKER, ZEKE, BikerZekeSeenText, BikerZekeBeatenText, 0, BikerZekeScript
 
 BikerZekeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6c1a3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdSam:
@@ -42,11 +50,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_SAM, SUPER_NERD, SAM, SupernerdSamSeenText, SupernerdSamBeatenText, 0, SupernerdSamScript
 
 SupernerdSamScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6c219
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdTom:
@@ -53,11 +61,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_TOM, SUPER_NERD, TOM, SupernerdTomSeenText, SupernerdTomBeatenText, 0, SupernerdTomScript
 
 SupernerdTomScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6c27e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute8Signpost1Script:
--- a/maps/Route8SaffronGate.asm
+++ b/maps/Route8SaffronGate.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const ROUTE8SAFFRONGATE_OFFICER
+
 Route8SaffronGate_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const ROUTE9_YOUNGSTER1
+	const ROUTE9_LASS1
+	const ROUTE9_YOUNGSTER2
+	const ROUTE9_LASS2
+	const ROUTE9_POKEFAN_M1
+	const ROUTE9_POKEFAN_M2
+
 Route9_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +17,11 @@
 	trainer EVENT_BEAT_CAMPER_DEAN, CAMPER, DEAN, CamperDeanSeenText, CamperDeanBeatenText, 0, CamperDeanScript
 
 CamperDeanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1aafd9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerHeidi:
@@ -20,11 +28,11 @@
 	trainer EVENT_BEAT_PICNICKER_HEIDI, PICNICKER, HEIDI, PicnickerHeidiSeenText, PicnickerHeidiBeatenText, 0, PicnickerHeidiScript
 
 PicnickerHeidiScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ab07c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCamperSid:
@@ -31,11 +39,11 @@
 	trainer EVENT_BEAT_CAMPER_SID, CAMPER, SID, CamperSidSeenText, CamperSidBeatenText, 0, CamperSidScript
 
 CamperSidScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ab0f6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPicnickerEdna:
@@ -42,11 +50,11 @@
 	trainer EVENT_BEAT_PICNICKER_EDNA, PICNICKER, EDNA, PicnickerEdnaSeenText, PicnickerEdnaBeatenText, 0, PicnickerEdnaScript
 
 PicnickerEdnaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ab15f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerTim:
@@ -53,11 +61,11 @@
 	trainer EVENT_BEAT_HIKER_TIM, HIKER, TIM, HikerTimSeenText, HikerTimBeatenText, 0, HikerTimScript
 
 HikerTimScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ab210
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerSidney:
@@ -64,17 +72,17 @@
 	trainer EVENT_BEAT_HIKER_SIDNEY, HIKER, SIDNEY, HikerSidneySeenText, HikerSidneyBeatenText, 0, HikerSidneyScript
 
 HikerSidneyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1ab278
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRoute9Signpost0Script:
 	jumptext UnknownText_0x1ab2a2
 
-MapRoute9SignpostItem1:
+Route9HiddenEther:
 	dwb EVENT_ROUTE_9_HIDDEN_ETHER, ETHER
 	
 
@@ -212,7 +220,7 @@
 .Signposts:
 	db 2
 	signpost 7, 15, SIGNPOST_READ, MapRoute9Signpost0Script
-	signpost 15, 41, SIGNPOST_ITEM, MapRoute9SignpostItem1
+	signpost 15, 41, SIGNPOST_ITEM, Route9HiddenEther
 
 .PersonEvents:
 	db 6
--- a/maps/RuinsofAlphAerodactylChamber.asm
+++ b/maps/RuinsofAlphAerodactylChamber.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphAerodactylChamber_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -49,7 +50,7 @@
 	reloadmappart
 	earthquake 50
 	dotrigger $1
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphAerodactylChamberSignpost2Script:
@@ -56,7 +57,7 @@
 	refreshscreen $0
 	writebyte $2
 	special Special_UnownPuzzle
-	loadmovesprites
+	closetext
 	iftrue UnknownScript_0x58df7
 	end
 
@@ -74,7 +75,7 @@
 	earthquake 80
 	applymovement PLAYER, MovementData_0x58e4d
 	playsound SFX_KINESIS
-	waitbutton
+	waitsfx
 	pause 20
 	warpcheck
 	end
@@ -86,28 +87,28 @@
 	jumptext UnknownText_0x58ee7
 
 MapRuinsofAlphAerodactylChamberSignpost4Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x58e4f
 	writebyte $1
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphAerodactylChamberSignpost5Script:
 	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
 	iftrue UnknownScript_0x58e46
-	loadfont
+	opentext
 	writetext UnknownText_0x58e81
 	writebyte $1
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x58e46:
-	loadfont
+	opentext
 	writetext UnknownText_0x58ea2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x58e4d:
--- a/maps/RuinsofAlphAerodactylItemRoom.asm
+++ b/maps/RuinsofAlphAerodactylItemRoom.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL1
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL2
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL3
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL4
+
 RuinsofAlphAerodactylItemRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,17 +11,17 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x59ab6:
-	db GOLD_BERRY, 1
+RuinsofAlphAerodactylItemRoomGoldBerry:
+	itemball GOLD_BERRY
 
-ItemFragment_0x59ab8:
-	db MOON_STONE, 1
+RuinsofAlphAerodactylItemRoomMoonStone:
+	itemball MOON_STONE
 
-ItemFragment_0x59aba:
-	db HEAL_POWDER, 1
+RuinsofAlphAerodactylItemRoomHealPowder:
+	itemball HEAL_POWDER
 
-ItemFragment_0x59abc:
-	db ENERGY_ROOT, 1
+RuinsofAlphAerodactylItemRoomEnergyRoot:
+	itemball ENERGY_ROOT
 
 MapRuinsofAlphAerodactylItemRoomSignpost1Script:
 	jumptext UnknownText_0x59ac1
@@ -47,7 +53,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomMoonStone, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomEnergyRoot, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- a/maps/RuinsofAlphAerodactylWordRoom.asm
+++ b/maps/RuinsofAlphAerodactylWordRoom.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphAerodactylWordRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/RuinsofAlphHoOhChamber.asm
+++ b/maps/RuinsofAlphHoOhChamber.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphHoOhChamber_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -50,7 +51,7 @@
 	reloadmappart
 	earthquake 50
 	dotrigger $1
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphHoOhChamberSignpost2Script:
@@ -57,7 +58,7 @@
 	refreshscreen $0
 	writebyte $3
 	special Special_UnownPuzzle
-	loadmovesprites
+	closetext
 	iftrue UnknownScript_0x585ba
 	end
 
@@ -75,7 +76,7 @@
 	earthquake 80
 	applymovement PLAYER, MovementData_0x58610
 	playsound SFX_KINESIS
-	waitbutton
+	waitsfx
 	pause 20
 	warpcheck
 	end
@@ -87,28 +88,28 @@
 	jumptext UnknownText_0x586aa
 
 MapRuinsofAlphHoOhChamberSignpost4Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x58612
 	writebyte $3
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphHoOhChamberSignpost5Script:
 	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	iftrue UnknownScript_0x58609
-	loadfont
+	opentext
 	writetext UnknownText_0x58644
 	writebyte $3
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x58609:
-	loadfont
+	opentext
 	writetext UnknownText_0x58665
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x58610:
--- a/maps/RuinsofAlphHoOhItemRoom.asm
+++ b/maps/RuinsofAlphHoOhItemRoom.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL1
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL2
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL3
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL4
+
 RuinsofAlphHoOhItemRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,17 +11,17 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x59918:
-	db GOLD_BERRY, 1
+RuinsofAlphHoOhItemRoomGoldBerry:
+	itemball GOLD_BERRY
 
-ItemFragment_0x5991a:
-	db MYSTERYBERRY, 1
+RuinsofAlphHoOhItemRoomMysteryberry:
+	itemball MYSTERYBERRY
 
-ItemFragment_0x5991c:
-	db REVIVAL_HERB, 1
+RuinsofAlphHoOhItemRoomRevivalHerb:
+	itemball REVIVAL_HERB
 
-ItemFragment_0x5991e:
-	db CHARCOAL, 1
+RuinsofAlphHoOhItemRoomCharcoal:
+	itemball CHARCOAL
 
 MapRuinsofAlphHoOhItemRoomSignpost1Script:
 	jumptext UnknownText_0x59923
@@ -47,7 +53,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomRevivalHerb, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomCharcoal, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- a/maps/RuinsofAlphHoOhWordRoom.asm
+++ b/maps/RuinsofAlphHoOhWordRoom.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphHoOhWordRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/RuinsofAlphInnerChamber.asm
+++ b/maps/RuinsofAlphInnerChamber.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const RUINSOFALPHINNERCHAMBER_FISHER
+	const RUINSOFALPHINNERCHAMBER_TEACHER
+	const RUINSOFALPHINNERCHAMBER_GRAMPS
+
 RuinsofAlphInnerChamber_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -19,10 +24,10 @@
 	end
 
 UnknownScript_0x58f6e:
-	loadfont
+	opentext
 	writetext UnknownText_0x58f89
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $0
 	setevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
--- a/maps/RuinsofAlphKabutoChamber.asm
+++ b/maps/RuinsofAlphKabutoChamber.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const RUINSOFALPHKABUTOCHAMBER_RECEPTIONIST
+	const RUINSOFALPHKABUTOCHAMBER_SCIENTIST
+
 RuinsofAlphKabutoChamber_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -51,7 +55,7 @@
 	reloadmappart
 	earthquake 50
 	dotrigger $1
-	loadmovesprites
+	closetext
 	end
 
 ReceptionistScript_0x58769:
@@ -61,7 +65,7 @@
 	refreshscreen $0
 	writebyte $0
 	special Special_UnownPuzzle
-	loadmovesprites
+	closetext
 	iftrue UnknownScript_0x58778
 	end
 
@@ -80,7 +84,7 @@
 	earthquake 80
 	applymovement PLAYER, MovementData_0x587fe
 	playsound SFX_KINESIS
-	waitbutton
+	waitsfx
 	pause 20
 	warpcheck
 	end
@@ -87,7 +91,7 @@
 
 ScientistScript_0x587a8:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x587cf
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
@@ -95,24 +99,24 @@
 	checkevent EVENT_SOLVED_KABUTO_PUZZLE
 	iffalse UnknownScript_0x587c0
 	writetext UnknownText_0x589b8
-	keeptextopen
+	buttonsound
 UnknownScript_0x587c0:
 	writetext UnknownText_0x588f5
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $3, UP
+	spriteface RUINSOFALPHKABUTOCHAMBER_SCIENTIST, UP
 	end
 
 UnknownScript_0x587c9:
 	writetext UnknownText_0x5897c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x587cf:
 	writetext UnknownText_0x594cb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRuinsofAlphKabutoChamberSignpost1Script:
@@ -122,28 +126,28 @@
 	jumptext UnknownText_0x58b3f
 
 MapRuinsofAlphKabutoChamberSignpost4Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x58aa7
 	writebyte $0
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphKabutoChamberSignpost5Script:
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	iftrue UnknownScript_0x587f7
-	loadfont
+	opentext
 	writetext UnknownText_0x58ad9
 	writebyte $0
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x587f7:
-	loadfont
+	opentext
 	writetext UnknownText_0x58afa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x587fe:
--- a/maps/RuinsofAlphKabutoItemRoom.asm
+++ b/maps/RuinsofAlphKabutoItemRoom.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL1
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL2
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL3
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL4
+
 RuinsofAlphKabutoItemRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,17 +11,17 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x599a2:
-	db BERRY, 1
+RuinsofAlphKabutoItemRoomBerry:
+	itemball BERRY
 
-ItemFragment_0x599a4:
-	db PSNCUREBERRY, 1
+RuinsofAlphKabutoItemRoomPsncureberry:
+	itemball PSNCUREBERRY
 
-ItemFragment_0x599a6:
-	db HEAL_POWDER, 1
+RuinsofAlphKabutoItemRoomHealPowder:
+	itemball HEAL_POWDER
 
-ItemFragment_0x599a8:
-	db ENERGYPOWDER, 1
+RuinsofAlphKabutoItemRoomEnergypowder:
+	itemball ENERGYPOWDER
 
 MapRuinsofAlphKabutoItemRoomSignpost1Script:
 	jumptext UnknownText_0x599ad
@@ -47,7 +53,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomBerry, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomPsncureberry, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomEnergypowder, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- a/maps/RuinsofAlphKabutoWordRoom.asm
+++ b/maps/RuinsofAlphKabutoWordRoom.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphKabutoWordRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/RuinsofAlphOmanyteChamber.asm
+++ b/maps/RuinsofAlphOmanyteChamber.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphOmanyteChamber_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -50,7 +51,7 @@
 	reloadmappart
 	earthquake 50
 	dotrigger $1
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphOmanyteChamberSignpost2Script:
@@ -57,7 +58,7 @@
 	refreshscreen $0
 	writebyte $1
 	special Special_UnownPuzzle
-	loadmovesprites
+	closetext
 	iftrue UnknownScript_0x58c36
 	end
 
@@ -75,7 +76,7 @@
 	earthquake 80
 	applymovement PLAYER, MovementData_0x58c8c
 	playsound SFX_KINESIS
-	waitbutton
+	waitsfx
 	pause 20
 	warpcheck
 	end
@@ -87,28 +88,28 @@
 	jumptext UnknownText_0x58d26
 
 MapRuinsofAlphOmanyteChamberSignpost4Script:
-	loadfont
+	opentext
 	writetext UnknownText_0x58c8e
 	writebyte $2
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 MapRuinsofAlphOmanyteChamberSignpost5Script:
 	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	iftrue UnknownScript_0x58c85
-	loadfont
+	opentext
 	writetext UnknownText_0x58cc0
 	writebyte $2
 	special Special_DisplayUnownWords
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x58c85:
-	loadfont
+	opentext
 	writetext UnknownText_0x58ce1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x58c8c:
--- a/maps/RuinsofAlphOmanyteItemRoom.asm
+++ b/maps/RuinsofAlphOmanyteItemRoom.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL1
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL2
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL3
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL4
+
 RuinsofAlphOmanyteItemRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,17 +11,17 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x59a2c:
-	db MYSTERYBERRY, 1
+RuinsofAlphOmanyteItemRoomMysteryberry:
+	itemball MYSTERYBERRY
 
-ItemFragment_0x59a2e:
-	db MYSTIC_WATER, 1
+RuinsofAlphOmanyteItemRoomMysticWater:
+	itemball MYSTIC_WATER
 
-ItemFragment_0x59a30:
-	db STARDUST, 1
+RuinsofAlphOmanyteItemRoomStardust:
+	itemball STARDUST
 
-ItemFragment_0x59a32:
-	db STAR_PIECE, 1
+RuinsofAlphOmanyteItemRoomStarPiece:
+	itemball STAR_PIECE
 
 MapRuinsofAlphOmanyteItemRoomSignpost1Script:
 	jumptext UnknownText_0x59a37
@@ -47,7 +53,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomMysticWater, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomStardust, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomStarPiece, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- a/maps/RuinsofAlphOmanyteWordRoom.asm
+++ b/maps/RuinsofAlphOmanyteWordRoom.asm
@@ -1,3 +1,4 @@
+
 RuinsofAlphOmanyteWordRoom_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/RuinsofAlphOutside.asm
+++ b/maps/RuinsofAlphOutside.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const RUINSOFALPHOUTSIDE_YOUNGSTER1
+	const RUINSOFALPHOUTSIDE_SCIENTIST
+	const RUINSOFALPHOUTSIDE_FISHER
+	const RUINSOFALPHOUTSIDE_YOUNGSTER2
+	const RUINSOFALPHOUTSIDE_YOUNGSTER3
+
 RuinsofAlphOutside_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -32,22 +39,22 @@
 	jump UnknownScript_0x5802c
 
 UnknownScript_0x58027:
-	appear $3
+	appear RUINSOFALPHOUTSIDE_SCIENTIST
 	dotrigger $1
 	return
 
 UnknownScript_0x5802c:
-	disappear $3
+	disappear RUINSOFALPHOUTSIDE_SCIENTIST
 	dotrigger $0
 	return
 
 UnknownScript_0x58031:
-	spriteface $3, UP
+	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, UP
 	spriteface PLAYER, DOWN
 	jump UnknownScript_0x58044
 
 UnknownScript_0x5803a:
-	spriteface $3, LEFT
+	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, LEFT
 	spriteface PLAYER, RIGHT
 	jump UnknownScript_0x58044
 
@@ -54,14 +61,14 @@
 ScientistScript_0x58043:
 	faceplayer
 UnknownScript_0x58044:
-	loadfont
+	opentext
 	writetext UnknownText_0x580c7
+	waitbutton
 	closetext
-	loadmovesprites
 	playmusic MUSIC_SHOW_ME_AROUND
-	follow $3, PLAYER
-	applymovement $3, MovementData_0x580ba
-	disappear $3
+	follow RUINSOFALPHOUTSIDE_SCIENTIST, PLAYER
+	applymovement RUINSOFALPHOUTSIDE_SCIENTIST, MovementData_0x580ba
+	disappear RUINSOFALPHOUTSIDE_SCIENTIST
 	stopfollow
 	applymovement PLAYER, MovementData_0x580c5
 	domaptrigger RUINS_OF_ALPH_RESEARCH_CENTER, $1
@@ -70,33 +77,33 @@
 
 FisherScript_0x58061:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_TALKED_TO_RUINS_COWARD
 	iftrue .Next
 	setevent EVENT_TALKED_TO_RUINS_COWARD
 	writetext UnknownText_0x583a4
-	keeptextopen
+	buttonsound
 .Next
 	writetext UnknownText_0x58420
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x58076:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x58449
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x5807e:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5848e
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $6, UP
+	spriteface RUINSOFALPHOUTSIDE_YOUNGSTER3, UP
 	end
 
 TrainerPsychicNathan:
@@ -103,11 +110,11 @@
 	trainer EVENT_BEAT_PSYCHIC_NATHAN, PSYCHIC_T, NATHAN, PsychicNathanSeenText, PsychicNathanBeatenText, 0, PsychicNathanScript
 
 PsychicNathanScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5830e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
@@ -115,11 +122,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, 0, UnknownScript_0x580a9
 
 UnknownScript_0x580a9:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x58250
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 
--- a/maps/RuinsofAlphResearchCenter.asm
+++ b/maps/RuinsofAlphResearchCenter.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST1
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST2
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST3
+
 RuinsofAlphResearchCenter_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -26,12 +31,12 @@
 	return
 
 UnknownScript_0x5918b:
-	moveperson $4, $3, $7
-	appear $4
+	moveperson RUINSOFALPHRESEARCHCENTER_SCIENTIST3, $3, $7
+	appear RUINSOFALPHRESEARCHCENTER_SCIENTIST3
 	return
 
 UnknownScript_0x59192:
-	applymovement $4, MovementData_0x5926f
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x5926f
 	playsound SFX_BOOT_PC
 	pause 60
 	playsound SFX_SWITCH_POKEMON
@@ -40,21 +45,21 @@
 	pause 30
 	playsound SFX_TRANSACTION
 	pause 30
-	spriteface $4, DOWN
-	loadfont
+	spriteface RUINSOFALPHRESEARCHCENTER_SCIENTIST3, DOWN
+	opentext
 	writetext UnknownText_0x59278
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x59274
-	loadfont
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59274
+	opentext
 	writetext UnknownText_0x592fa
 	playsound SFX_ITEM
-	waitbutton
+	waitsfx
 	setflag ENGINE_UNOWN_DEX
 	writetext UnknownText_0x59311
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x59276
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59276
 	dotrigger $0
 	special RestartMapMusic
 	end
@@ -61,23 +66,23 @@
 
 ScientistScript_0x591d1:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x591df
 	writetext UnknownText_0x59311
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x591df:
 	writetext UnknownText_0x5935f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ScientistScript_0x591e5:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x5920b
 	checkflag ENGINE_UNOWN_DEX
@@ -85,55 +90,55 @@
 	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	iftrue UnknownScript_0x591ff
 	writetext UnknownText_0x593ed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x591ff:
 	writetext UnknownText_0x59478
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x59205:
 	writetext UnknownText_0x59445
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5920b:
 	writetext UnknownText_0x594cb
+	waitbutton
 	closetext
-	loadmovesprites
 	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
 	end
 
 ScientistScript_0x59214:
 	faceplayer
-	loadfont
+	opentext
 	checkcode VAR_UNOWNCOUNT
 	if_equal 26, UnknownScript_0x5922e
 	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	iftrue UnknownScript_0x59228
 	writetext UnknownText_0x5954f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x59228:
 	writetext UnknownText_0x595cb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x5922e:
 	writetext UnknownText_0x59769
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRuinsofAlphResearchCenterSignpost1Script:
-	loadfont
+	opentext
 	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x59241
 	checkcode VAR_UNOWNCOUNT
@@ -140,18 +145,18 @@
 	if_equal 26, UnknownScript_0x59247
 UnknownScript_0x59241:
 	writetext UnknownText_0x597b6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x59247:
 	writetext UnknownText_0x597d9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapRuinsofAlphResearchCenterSignpost2Script:
-	loadfont
+	opentext
 	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x5925a
 	checkcode VAR_UNOWNCOUNT
@@ -158,15 +163,15 @@
 	if_equal 26, UnknownScript_0x59260
 UnknownScript_0x5925a:
 	writetext UnknownText_0x5980e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x59260:
 	writetext UnknownText_0x5982d
-	closetext
+	waitbutton
 	special Special_UnownPrinter
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x59269:
--- a/maps/SafariZoneBeta.asm
+++ b/maps/SafariZoneBeta.asm
@@ -1,3 +1,4 @@
+
 SafariZoneBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SafariZoneFuchsiaGateBeta.asm
+++ b/maps/SafariZoneFuchsiaGateBeta.asm
@@ -1,3 +1,4 @@
+
 SafariZoneFuchsiaGateBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SafariZoneMainOffice.asm
+++ b/maps/SafariZoneMainOffice.asm
@@ -1,3 +1,4 @@
+
 SafariZoneMainOffice_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SafariZoneWardensHome.asm
+++ b/maps/SafariZoneWardensHome.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const SAFARIZONEWARDENSHOME_LASS
+
 SafariZoneWardensHome_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,18 +10,18 @@
 
 WardensGranddaughter:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_TALKED_TO_WARDENS_GRANDDAUGHTER
 	iftrue .AlreadyMet
 	writetext WardensGranddaughterText1
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_TALKED_TO_WARDENS_GRANDDAUGHTER
 	end
 .AlreadyMet
 	writetext WardensGranddaughterText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WardenPhoto:
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const SAFFRONCITY_LASS1
+	const SAFFRONCITY_POKEFAN_M
+	const SAFFRONCITY_COOLTRAINER_M
+	const SAFFRONCITY_COOLTRAINER_F
+	const SAFFRONCITY_FISHER
+	const SAFFRONCITY_YOUNGSTER1
+	const SAFFRONCITY_YOUNGSTER2
+	const SAFFRONCITY_LASS2
+
 SaffronCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -14,34 +24,34 @@
 
 LassScript_0x19932a:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x199338
 	writetext UnknownText_0x19938d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x199338:
 	writetext UnknownText_0x19940d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 PokefanMScript_0x19933e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x19934c
 	writetext UnknownText_0x199460
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x19934c:
 	writetext UnknownText_0x1994ae
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerMScript_0x199352:
@@ -52,18 +62,18 @@
 
 FisherScript_0x199358:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x199366
 	writetext UnknownText_0x1995fc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x199366:
 	writetext UnknownText_0x19964b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x19936c:
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const SAFFRONGYM_SABRINA
+	const SAFFRONGYM_GRANNY1
+	const SAFFRONGYM_YOUNGSTER1
+	const SAFFRONGYM_GRANNY2
+	const SAFFRONGYM_YOUNGSTER2
+	const SAFFRONGYM_GYM_GUY
+
 SaffronGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,35 +15,35 @@
 
 SabrinaScript_0x189c2e:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_MARSHBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x189cdf
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x189df4, 0
 	loadtrainer SABRINA, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_SABRINA
 	setevent EVENT_BEAT_MEDIUM_REBECCA
 	setevent EVENT_BEAT_MEDIUM_DORIS
 	setevent EVENT_BEAT_PSYCHIC_FRANKLIN
 	setevent EVENT_BEAT_PSYCHIC_JARED
-	loadfont
+	opentext
 	writetext UnknownText_0x189e95
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_MARSHBADGE
 	writetext UnknownText_0x189ead
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FightDone
 	writetext UnknownText_0x189f6c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerMediumRebecca:
@@ -42,11 +50,11 @@
 	trainer EVENT_BEAT_MEDIUM_REBECCA, MEDIUM, REBECCA, MediumRebeccaSeenText, MediumRebeccaBeatenText, 0, MediumRebeccaScript
 
 MediumRebeccaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x18a034
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicFranklin:
@@ -53,11 +61,11 @@
 	trainer EVENT_BEAT_PSYCHIC_FRANKLIN, PSYCHIC_T, FRANKLIN, PsychicFranklinSeenText, PsychicFranklinBeatenText, 0, PsychicFranklinScript
 
 PsychicFranklinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x18a0a6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerMediumDoris:
@@ -64,11 +72,11 @@
 	trainer EVENT_BEAT_MEDIUM_DORIS, MEDIUM, DORIS, MediumDorisSeenText, MediumDorisBeatenText, 0, MediumDorisScript
 
 MediumDorisScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x18a136
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPsychicJared:
@@ -75,27 +83,27 @@
 	trainer EVENT_BEAT_PSYCHIC_JARED, PSYCHIC_T, JARED, PsychicJaredSeenText, PsychicJaredBeatenText, 0, PsychicJaredScript
 
 PsychicJaredScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x18a1b3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SaffronGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_SABRINA
 	iftrue .SaffronGymGuyWinScript
 	writetext SaffronGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SaffronGymGuyWinScript
 	writetext SaffronGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SaffronGymStatue:
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const SAFFRONMART_CLERK
+	const SAFFRONMART_COOLTRAINER_M
+	const SAFFRONMART_COOLTRAINER_F
+
 SaffronMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x18a3bf:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_SAFFRON
-	loadmovesprites
+	closetext
 	end
 
 CooltrainerMScript_0x18a3c6:
--- a/maps/SaffronPokeCenter1F.asm
+++ b/maps/SaffronPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const SAFFRONPOKECENTER1F_NURSE
+	const SAFFRONPOKECENTER1F_TEACHER
+	const SAFFRONPOKECENTER1F_FISHER
+	const SAFFRONPOKECENTER1F_YOUNGSTER
+
 SaffronPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -18,18 +24,18 @@
 
 FisherScript_0x18a48c:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue .SolvedKantoPowerCrisis
 	writetext UnknownText_0x18a5d3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SolvedKantoPowerCrisis:
 	writetext UnknownText_0x18a62e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungsterScript_0x18a4a0:
--- a/maps/SaffronPokeCenter2FBeta.asm
+++ b/maps/SaffronPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 SaffronPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -1,24 +1,30 @@
+const_value set 2
+	const SAFFRONTRAINSTATION_OFFICER
+	const SAFFRONTRAINSTATION_GYM_GUY
+	const SAFFRONTRAINSTATION_TEACHER
+	const SAFFRONTRAINSTATION_LASS
+
 SaffronTrainStation_MapScriptHeader:
 .MapTriggers:
 	db 1
 
 	; triggers
-	dw .Trigger1, 0
+	dw .Trigger0, 0
 
 .MapCallbacks:
 	db 0
 
-.Trigger1:
+.Trigger0:
 	end
 
 OfficerScript_0x18a81e:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RESTORED_POWER_TO_KANTO
 	iftrue .MagnetTrainToGoldenrod
 	writetext UnknownText_0x18a8a9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .MagnetTrainToGoldenrod:
@@ -28,9 +34,9 @@
 	checkitem PASS
 	iffalse .PassNotInBag
 	writetext UnknownText_0x18a917
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x18a88f
+	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a88f
 	applymovement PLAYER, MovementData_0x18a898
 	writebyte $1
 	special Special_MagnetTrain
@@ -46,40 +52,40 @@
 
 .PassNotInBag:
 	writetext UnknownText_0x18a956
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .DecidedNotToRide:
 	writetext UnknownText_0x18a978
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 Script_ArriveFromGoldenrod:
-	applymovement $2, MovementData_0x18a88f
+	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a88f
 	applymovement PLAYER, MovementData_0x18a8a1
-	applymovement $2, MovementData_0x18a894
-	loadfont
+	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a894
+	opentext
 	writetext UnknownText_0x18a993
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GymGuyScript_0x18a875:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue UnknownScript_0x18a883
 	writetext UnknownText_0x18a9ca
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x18a883:
 	writetext UnknownText_0x18aa61
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TeacherScript_0x18a889:
--- a/maps/SeafoamGym.asm
+++ b/maps/SeafoamGym.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const SEAFOAMGYM_BLAINE
+	const SEAFOAMGYM_GYM_GUY
+
 SeafoamGym_MapScriptHeader:
 .MapTriggers:
 	db 1
@@ -13,51 +17,51 @@
 
 BlaineScript_0x1ab4fb:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_VOLCANOBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x1ab548
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x1ab646, 0
 	loadtrainer BLAINE, 1
 	startbattle
 	iftrue .ReturnAfterBattle
-	appear $3
+	appear SEAFOAMGYM_GYM_GUY
 .ReturnAfterBattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_BLAINE
-	loadfont
+	opentext
 	writetext UnknownText_0x1ab683
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_VOLCANOBADGE
 	writetext UnknownText_0x1ab69d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FightDone
 	writetext UnknownText_0x1ab71c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SeafoamGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_TALKED_TO_SEAFOAM_GYM_GUY_ONCE
 	iftrue .TalkedToSeafoamGymGuyScript
 	writetext SeafoamGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_TALKED_TO_SEAFOAM_GYM_GUY_ONCE
 	end
 
 .TalkedToSeafoamGymGuyScript
 	writetext SeafoamGymGuyWinText2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x1ab548:
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const SILPHCO1F_RECEPTIONIST
+	const SILPHCO1F_OFFICER
+
 SilphCo1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,19 +14,19 @@
 
 OfficerScript_0x18abe8:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_UP_GRADE
 	iftrue UnknownScript_0x18abfd
 	writetext UnknownText_0x18ac36
-	keeptextopen
+	buttonsound
 	verbosegiveitem UP_GRADE
 	iffalse UnknownScript_0x18ac01
 	setevent EVENT_GOT_UP_GRADE
 UnknownScript_0x18abfd:
 	writetext UnknownText_0x18aca8
-	closetext
+	waitbutton
 UnknownScript_0x18ac01:
-	loadmovesprites
+	closetext
 	end
 
 UnknownText_0x18ac03:
--- a/maps/SilverCaveItemRooms.asm
+++ b/maps/SilverCaveItemRooms.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const SILVERCAVEITEMROOMS_POKE_BALL1
+	const SILVERCAVEITEMROOMS_POKE_BALL2
+
 SilverCaveItemRooms_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,11 +9,11 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c65e:
-	db MAX_REVIVE, 1
+SilverCaveItemRoomsMaxRevive:
+	itemball MAX_REVIVE
 
-ItemFragment_0x18c660:
-	db FULL_RESTORE, 1
+SilverCaveItemRoomsFullRestore:
+	itemball FULL_RESTORE
 
 SilverCaveItemRooms_MapEventHeader:
 	; filler
@@ -28,5 +32,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, SilverCaveItemRoomsMaxRevive, EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 11, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveItemRoomsFullRestore, EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
--- a/maps/SilverCaveOutside.asm
+++ b/maps/SilverCaveOutside.asm
@@ -1,3 +1,4 @@
+
 SilverCaveOutside_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -18,7 +19,7 @@
 MtSilverSign:
 	jumptext MtSilverSignText
 
-MapSilverCaveOutsideSignpostItem2:
+SilverCaveOutsideHiddenFullRestore:
 	dwb EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
 MtSilverSignText:
@@ -41,7 +42,7 @@
 	db 3
 	signpost 19, 24, SIGNPOST_READ, MtSilverPokeCenterSign
 	signpost 13, 17, SIGNPOST_READ, MtSilverSign
-	signpost 25, 9, SIGNPOST_ITEM, MapSilverCaveOutsideSignpostItem2
+	signpost 25, 9, SIGNPOST_ITEM, SilverCaveOutsideHiddenFullRestore
 
 .PersonEvents:
 	db 0
--- a/maps/SilverCavePokeCenter1F.asm
+++ b/maps/SilverCavePokeCenter1F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const SILVERCAVEPOKECENTER1F_NURSE
+	const SILVERCAVEPOKECENTER1F_GRANNY
+
 SilverCavePokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SilverCaveRoom1.asm
+++ b/maps/SilverCaveRoom1.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const SILVERCAVEROOM1_POKE_BALL1
+	const SILVERCAVEROOM1_POKE_BALL2
+	const SILVERCAVEROOM1_POKE_BALL3
+	const SILVERCAVEROOM1_POKE_BALL4
+
 SilverCaveRoom1_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,23 +11,23 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c554:
-	db MAX_ELIXER, 1
+SilverCaveRoom1MaxElixer:
+	itemball MAX_ELIXER
 
-ItemFragment_0x18c556:
-	db PROTEIN, 1
+SilverCaveRoom1Protein:
+	itemball PROTEIN
 
-ItemFragment_0x18c558:
-	db ESCAPE_ROPE, 1
+SilverCaveRoom1EscapeRope:
+	itemball ESCAPE_ROPE
 
-ItemFragment_0x18c55a:
-	db ULTRA_BALL, 1
+SilverCaveRoom1UltraBall:
+	itemball ULTRA_BALL
 
-MapSilverCaveRoom1SignpostItem0:
+SilverCaveRoom1HiddenDireHit:
 	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT, DIRE_HIT
 	
 
-MapSilverCaveRoom1SignpostItem1:
+SilverCaveRoom1HiddenUltraBall:
 	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
@@ -39,12 +45,12 @@
 
 .Signposts:
 	db 2
-	signpost 23, 16, SIGNPOST_ITEM, MapSilverCaveRoom1SignpostItem0
-	signpost 12, 17, SIGNPOST_ITEM, MapSilverCaveRoom1SignpostItem1
+	signpost 23, 16, SIGNPOST_ITEM, SilverCaveRoom1HiddenDireHit
+	signpost 12, 17, SIGNPOST_ITEM, SilverCaveRoom1HiddenUltraBall
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 9, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c556, EVENT_SILVER_CAVE_ROOM_1_PROTEIN
-	person_event SPRITE_POKE_BALL, 30, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom1MaxElixer, EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 29, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom1Protein, EVENT_SILVER_CAVE_ROOM_1_PROTEIN
+	person_event SPRITE_POKE_BALL, 30, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom1EscapeRope, EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 18, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom1UltraBall, EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
--- a/maps/SilverCaveRoom2.asm
+++ b/maps/SilverCaveRoom2.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const SILVERCAVEROOM2_POKE_BALL1
+	const SILVERCAVEROOM2_POKE_BALL2
+	const SILVERCAVEROOM2_POKE_BALL3
+
 SilverCaveRoom2_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,16 +10,16 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c5b2:
-	db CALCIUM, 1
+SilverCaveRoom2Calcium:
+	itemball CALCIUM
 
-ItemFragment_0x18c5b4:
-	db ULTRA_BALL, 1
+SilverCaveRoom2UltraBall:
+	itemball ULTRA_BALL
 
-ItemFragment_0x18c5b6:
-	db PP_UP, 1
+SilverCaveRoom2PPUp:
+	itemball PP_UP
 
-MapSilverCaveRoom2SignpostItem0:
+SilverCaveRoom2HiddenMaxPotion:
 	dwb EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION, MAX_POTION
 	
 
@@ -34,10 +39,10 @@
 
 .Signposts:
 	db 1
-	signpost 31, 14, SIGNPOST_ITEM, MapSilverCaveRoom2SignpostItem0
+	signpost 31, 14, SIGNPOST_ITEM, SilverCaveRoom2HiddenMaxPotion
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 10, 24, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c5b2, EVENT_SILVER_CAVE_ROOM_2_CALCIUM
-	person_event SPRITE_POKE_BALL, 24, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom2Calcium, EVENT_SILVER_CAVE_ROOM_2_CALCIUM
+	person_event SPRITE_POKE_BALL, 24, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom2UltraBall, EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 20, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SilverCaveRoom2PPUp, EVENT_SILVER_CAVE_ROOM_2_PP_UP
--- a/maps/SilverCaveRoom3.asm
+++ b/maps/SilverCaveRoom3.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const SILVERCAVEROOM3_RED
+
 SilverCaveRoom3_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,25 +9,25 @@
 	db 0
 
 RedScript_0x18c603:
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x18c637
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x18c63c, UnknownText_0x18c63c
 	loadtrainer RED, 1
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	special Special_RotatePalettesRightMusic
-	loadfont
+	dontrestartmapmusic
+	reloadmapafterbattle
+	special Special_FadeOutMusic
+	opentext
 	writetext UnknownText_0x18c63f
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $2
+	disappear SILVERCAVEROOM3_RED
 	pause 15
 	special Special_FadeInQuickly
 	pause 30
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const SLOWPOKEWELLB1F_ROCKET1
+	const SLOWPOKEWELLB1F_ROCKET2
+	const SLOWPOKEWELLB1F_ROCKET3
+	const SLOWPOKEWELLB1F_ROCKET_GIRL
+	const SLOWPOKEWELLB1F_SLOWPOKE1
+	const SLOWPOKEWELLB1F_SLOWPOKE2
+	const SLOWPOKEWELLB1F_KURT
+	const SLOWPOKEWELLB1F_BOULDER
+	const SLOWPOKEWELLB1F_POKE_BALL
+
 SlowpokeWellB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,11 +23,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_29, GRUNTM, 29, GruntM29SeenText, GruntM29BeatenText, 0, GruntM29Script
 
 GruntM29Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext TrainerGruntM29SlowpokeProfitText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM1:
@@ -23,27 +34,27 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_1, GRUNTM, 1, GruntM1SeenText, GruntM1BeatenText, 0, GruntM1Script
 
 GruntM1Script:
-	loadfont
+	opentext
 	writetext TrainerGruntM1WhenTalkText
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $2
-	disappear $3
-	disappear $4
-	disappear $5
+	disappear SLOWPOKEWELLB1F_ROCKET1
+	disappear SLOWPOKEWELLB1F_ROCKET2
+	disappear SLOWPOKEWELLB1F_ROCKET3
+	disappear SLOWPOKEWELLB1F_ROCKET_GIRL
 	pause 15
 	special Special_FadeInQuickly
-	disappear $8
-	moveperson $8, $b, $6
-	appear $8
-	applymovement $8, KurtSlowpokeWellVictoryMovementData
+	disappear SLOWPOKEWELLB1F_KURT
+	moveperson SLOWPOKEWELLB1F_KURT, $b, $6
+	appear SLOWPOKEWELLB1F_KURT
+	applymovement SLOWPOKEWELLB1F_KURT, KurtSlowpokeWellVictoryMovementData
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext KurtLeaveSlowpokeWellText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_CLEARED_SLOWPOKE_WELL
 	variablesprite SPRITE_AZALEA_ROCKET, SPRITE_SILVER
 	domaptrigger AZALEA_TOWN, $1
@@ -66,11 +77,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_2, GRUNTM, 2, GruntM2SeenText, GruntM2BeatenText, 0, GruntM2Script
 
 GruntM2Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5aaf2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntF1:
@@ -77,43 +88,43 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTF_1, GRUNTF, 1, GruntF1SeenText, GruntF1BeatenText, 0, GruntF1Script
 
 GruntF1Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5ab8d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SlowpokeScript_0x5a681:
 	faceplayer
-	loadfont
+	opentext
 	cry SLOWPOKE
 	writetext UnknownText_0x5abcb
 	yesorno
 	iftrue UnknownScript_0x5a68f
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x5a68f:
 	writetext UnknownText_0x5ac09
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SlowpokeScript_0x5a695:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x5ac61
 	cry SLOWPOKE
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SlowpokeWellB1FBoulder:
 	jumpstd strengthboulder
 
-ItemFragment_0x5a6a3:
-	db SUPER_POTION, 1
+SlowpokeWellB1FSuperPotion:
+	itemball SUPER_POTION
 
 KurtSlowpokeWellVictoryMovementData:
 	step_left
@@ -334,4 +345,4 @@
 	person_event SPRITE_SLOWPOKE, 2, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
 	person_event SPRITE_KURT, 14, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, KurtScript_0x5a5d5, EVENT_SLOWPOKE_WELL_KURT
 	person_event SPRITE_BOULDER, 2, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeWellB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 3, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5a6a3, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
+	person_event SPRITE_POKE_BALL, 3, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SlowpokeWellB1FSuperPotion, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
--- a/maps/SlowpokeWellB2F.asm
+++ b/maps/SlowpokeWellB2F.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const SLOWPOKEWELLB2F_GYM_GUY
+	const SLOWPOKEWELLB2F_POKE_BALL
+
 SlowpokeWellB2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,26 +11,26 @@
 
 GymGuyScript_0x5ad0b:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_KINGS_ROCK_IN_SLOWPOKE_WELL
 	iftrue UnknownScript_0x5ad22
 	writetext UnknownText_0x5ad2a
-	keeptextopen
+	buttonsound
 	verbosegiveitem KINGS_ROCK
 	iffalse UnknownScript_0x5ad20
 	setevent EVENT_GOT_KINGS_ROCK_IN_SLOWPOKE_WELL
 UnknownScript_0x5ad20:
-	loadmovesprites
+	closetext
 	end
 
 UnknownScript_0x5ad22:
 	writetext UnknownText_0x5adf2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x5ad28:
-	db TM_RAIN_DANCE, 1
+SlowpokeWellB2FTMRainDance:
+	itemball TM_RAIN_DANCE
 
 UnknownText_0x5ad2a:
 	text "I'm waiting to see"
@@ -74,4 +78,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_GYM_GUY, 4, 5, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 1, GymGuyScript_0x5ad0b, -1
-	person_event SPRITE_POKE_BALL, 5, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5ad28, EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
+	person_event SPRITE_POKE_BALL, 5, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SlowpokeWellB2FTMRainDance, EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
--- a/maps/SoulHouse.asm
+++ b/maps/SoulHouse.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const SOULHOUSE_GRAMPS
+	const SOULHOUSE_TEACHER
+	const SOULHOUSE_LASS
+	const SOULHOUSE_GRANNY
+
 SoulHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const SPROUTTOWER1F_SAGE1
+	const SPROUTTOWER1F_SAGE2
+	const SPROUTTOWER1F_GRANNY
+	const SPROUTTOWER1F_TEACHER
+	const SPROUTTOWER1F_SAGE3
+	const SPROUTTOWER1F_POKE_BALL
+
 SproutTower1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -21,15 +29,15 @@
 	trainer EVENT_BEAT_SAGE_CHOW, SAGE, CHOW, SageChowSeenText, SageChowBeatenText, 0, SageChowScript
 
 SageChowScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x184583
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x18451e:
-	db PARLYZ_HEAL, 1
+SproutTower1FParlyzHeal:
+	itemball PARLYZ_HEAL
 
 MapSproutTower1FSignpost1Script:
 	jumptext UnknownText_0x1846d6
@@ -121,4 +129,4 @@
 	person_event SPRITE_GRANNY, 12, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x184504, -1
 	person_event SPRITE_TEACHER, 9, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x184507, -1
 	person_event SPRITE_SAGE, 5, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageChow, -1
-	person_event SPRITE_POKE_BALL, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18451e, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower1FParlyzHeal, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const SPROUTTOWER2F_SAGE1
+	const SPROUTTOWER2F_SAGE2
+	const SPROUTTOWER2F_POKE_BALL
+
 SproutTower2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +14,11 @@
 	trainer EVENT_BEAT_SAGE_NICO, SAGE, NICO, SageNicoSeenText, SageNicoBeatenText, 0, SageNicoScript
 
 SageNicoScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1847ff
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageEdmond:
@@ -20,18 +25,18 @@
 	trainer EVENT_BEAT_SAGE_EDMOND, SAGE, EDMOND, SageEdmondSeenText, SageEdmondBeatenText, 0, SageEdmondScript
 
 SageEdmondScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x18486f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapSproutTower2FSignpost0Script:
 	jumptext UnknownText_0x1848c8
 
-ItemFragment_0x1847a7:
-	db X_ACCURACY, 1
+SproutTower2FXAccuracy:
+	itemball X_ACCURACY
 
 SageNicoSeenText:
 	text "However hard we"
@@ -101,4 +106,4 @@
 	db 3
 	person_event SPRITE_SAGE, 3, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageNico, -1
 	person_event SPRITE_SAGE, 14, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerSageEdmond, -1
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1847a7, EVENT_SPROUT_TOWER2F_X_ACCURACY
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower2FXAccuracy, EVENT_SPROUT_TOWER2F_X_ACCURACY
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const SPROUTTOWER3F_SAGE1
+	const SPROUTTOWER3F_SAGE2
+	const SPROUTTOWER3F_SAGE3
+	const SPROUTTOWER3F_SAGE4
+	const SPROUTTOWER3F_POKE_BALL1
+	const SPROUTTOWER3F_POKE_BALL2
+	const SPROUTTOWER3F_SILVER
+
 SproutTower3F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -18,7 +27,7 @@
 UnknownScript_0x184947:
 	spriteface PLAYER, UP
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	playsound SFX_TACKLE
 	playsound SFX_ELEVATOR
 	earthquake 79
@@ -27,30 +36,30 @@
 	playsound SFX_ELEVATOR
 	earthquake 79
 	applymovement PLAYER, MovementData_0x184a1d
-	applymovement $8, MovementData_0x184a22
-	loadfont
+	applymovement SPROUTTOWER3F_SILVER, MovementData_0x184a22
+	opentext
 	writetext UnknownText_0x184a27
+	waitbutton
 	closetext
-	loadmovesprites
-	showemote EMOTE_SHOCK, $8, 15
-	spriteface $8, DOWN
+	showemote EMOTE_SHOCK, SPROUTTOWER3F_SILVER, 15
+	spriteface SPROUTTOWER3F_SILVER, DOWN
 	pause 15
-	applymovement $8, MovementData_0x184a24
+	applymovement SPROUTTOWER3F_SILVER, MovementData_0x184a24
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x184aec
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $8, UP
-	loadfont
+	spriteface SPROUTTOWER3F_SILVER, UP
+	opentext
 	writetext UnknownText_0x184bc8
 	pause 15
-	loadmovesprites
+	closetext
 	playsound SFX_WARP_TO
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $8
-	waitbutton
+	disappear SPROUTTOWER3F_SILVER
+	waitsfx
 	special Special_FadeInQuickly
 	dotrigger $1
 	special RestartMapMusic
@@ -58,31 +67,31 @@
 
 SageLiScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HM05_FLASH
 	iftrue UnknownScript_0x1849d1
 	writetext SageLiSeenText
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext SageLiBeatenText, 0
 	loadtrainer SAGE, LI
 	startbattle
-	returnafterbattle
-	loadfont
+	reloadmapafterbattle
+	opentext
 	writetext UnknownText_0x184cc2
-	keeptextopen
+	buttonsound
 	verbosegiveitem HM_FLASH
 	setevent EVENT_GOT_HM05_FLASH
 	setevent EVENT_BEAT_SAGE_LI
 	writetext UnknownText_0x184d13
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1849d1:
 	writetext UnknownText_0x184d88
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageJin:
@@ -89,11 +98,11 @@
 	trainer EVENT_BEAT_SAGE_JIN, SAGE, JIN, SageJinSeenText, SageJinBeatenText, 0, SageJinScript
 
 SageJinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x184dfa
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageTroy:
@@ -100,11 +109,11 @@
 	trainer EVENT_BEAT_SAGE_TROY, SAGE, TROY, SageTroySeenText, SageTroyBeatenText, 0, SageTroyScript
 
 SageTroyScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x184ea4
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageNeal:
@@ -111,11 +120,11 @@
 	trainer EVENT_BEAT_SAGE_NEAL, SAGE, NEAL, SageNealSeenText, SageNealBeatenText, 0, SageNealScript
 
 SageNealScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x184f12
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapSproutTower3FSignpost3Script:
@@ -124,11 +133,11 @@
 MapSproutTower3FSignpost5Script:
 	jumptext UnknownText_0x184f61
 
-ItemFragment_0x184a19:
-	db POTION, 1
+SproutTower3FPotion:
+	itemball POTION
 
-ItemFragment_0x184a1b:
-	db ESCAPE_ROPE, 1
+SproutTower3FEscapeRope:
+	itemball ESCAPE_ROPE
 
 MovementData_0x184a1d:
 	step_up
@@ -349,6 +358,6 @@
 	person_event SPRITE_SAGE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerSageTroy, -1
 	person_event SPRITE_SAGE, 2, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SageLiScript, -1
 	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSageNeal, -1
-	person_event SPRITE_POKE_BALL, 14, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x184a19, EVENT_SPROUT_TOWER_3F_POTION
-	person_event SPRITE_POKE_BALL, 1, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x184a1b, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 14, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower3FPotion, EVENT_SPROUT_TOWER_3F_POTION
+	person_event SPRITE_POKE_BALL, 1, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower3FEscapeRope, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
 	person_event SPRITE_SILVER, 4, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -1,9 +1,17 @@
+const_value set 2
+	const TEAMROCKETBASEB1F_ROCKET1
+	const TEAMROCKETBASEB1F_ROCKET2
+	const TEAMROCKETBASEB1F_SCIENTIST
+	const TEAMROCKETBASEB1F_POKE_BALL1
+	const TEAMROCKETBASEB1F_POKE_BALL2
+	const TEAMROCKETBASEB1F_POKE_BALL3
+
 TeamRocketBaseB1F_MapScriptHeader:
 .MapTriggers:
 	db 1
 
 	; triggers
-	dw UnknownScript_0x6c65a, 0
+	dw .Trigger0, 0
 
 .MapCallbacks:
 	db 1
@@ -10,13 +18,13 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x6c65b
+	dbw 2, .Callback1
 
-UnknownScript_0x6c65a:
+.Trigger0:
 	end
 
-UnknownScript_0x6c65b:
-	disappear $2
+.Callback1:
+	disappear TEAMROCKETBASEB1F_ROCKET1
 	return
 
 SecurityCamera1a:
@@ -27,18 +35,18 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $2
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $2
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $2
-	appear $2
-	applymovement $2, SecurityCameraMovement1
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $2
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_1
@@ -52,18 +60,18 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $3
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $3
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $3
-	appear $2
-	applymovement $2, SecurityCameraMovement1
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $3
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_1
@@ -77,10 +85,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $4, $7
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $4, $7
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement2
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement2
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -87,9 +95,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $c, $5
-	appear $2
-	applymovement $2, SecurityCameraMovement3
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $c, $5
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement3
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_2
@@ -103,10 +111,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $4, $8
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $4, $8
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement4
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement4
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -113,9 +121,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $c, $5
-	appear $2
-	applymovement $2, SecurityCameraMovement5
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $c, $5
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement5
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_2
@@ -129,10 +137,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $6
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $6
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -139,9 +147,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $19, $b
-	appear $2
-	applymovement $2, SecurityCameraMovement6
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $19, $b
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement6
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_3
@@ -155,10 +163,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $13, $7
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $13, $7
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -165,9 +173,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $19, $c
-	appear $2
-	applymovement $2, SecurityCameraMovement7
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $19, $c
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement7
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_3
@@ -181,10 +189,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $11, $10
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $11, $10
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -191,9 +199,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $19, $b
-	appear $2
-	applymovement $2, SecurityCameraMovement8
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $19, $b
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement8
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_4
@@ -207,10 +215,10 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveperson $2, $3, $10
-	appear $2
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $3, $10
+	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
-	applymovement $2, SecurityCameraMovement1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
 	if_equal $1, NoSecurityCamera
 	scall PlaySecurityCameraSounds
@@ -217,9 +225,9 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveperson $2, $e, $10
-	appear $2
-	applymovement $2, SecurityCameraMovement9
+	moveperson TEAMROCKETBASEB1F_ROCKET1, $e, $10
+	appear TEAMROCKETBASEB1F_ROCKET1
+	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement9
 	scall TrainerCameraGrunt2
 	if_equal $1, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_5
@@ -229,29 +237,29 @@
 	end
 
 TrainerCameraGrunt1:
-	loadfont
+	opentext
 	writetext CameraGrunt1SeenText
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext CameraGrunt1BeatenText, 0
-	setlasttalked $2
+	setlasttalked TEAMROCKETBASEB1F_ROCKET1
 	loadtrainer GRUNTM, 20
 	startbattle
-	disappear $2
-	returnafterbattle
+	disappear TEAMROCKETBASEB1F_ROCKET1
+	reloadmapafterbattle
 	end
 
 TrainerCameraGrunt2:
-	loadfont
+	opentext
 	writetext CameraGrunt2SeenText
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext CameraGrunt2BeatenText, 0
-	setlasttalked $2
+	setlasttalked TEAMROCKETBASEB1F_ROCKET1
 	loadtrainer GRUNTM, 21
 	startbattle
-	disappear $2
-	returnafterbattle
+	disappear TEAMROCKETBASEB1F_ROCKET1
+	reloadmapafterbattle
 	end
 
 PlaySecurityCameraSounds:
@@ -272,7 +280,7 @@
 	checkevent EVENT_EXPLODING_TRAP_1
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_1
 	end
 
@@ -280,7 +288,7 @@
 	checkevent EVENT_EXPLODING_TRAP_2
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_2
 	end
 
@@ -288,7 +296,7 @@
 	checkevent EVENT_EXPLODING_TRAP_3
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_3
 	end
 
@@ -296,7 +304,7 @@
 	checkevent EVENT_EXPLODING_TRAP_4
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_4
 	end
 
@@ -304,7 +312,7 @@
 	checkevent EVENT_EXPLODING_TRAP_5
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_5
 	end
 
@@ -312,7 +320,7 @@
 	checkevent EVENT_EXPLODING_TRAP_6
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_6
 	end
 
@@ -320,7 +328,7 @@
 	checkevent EVENT_EXPLODING_TRAP_7
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_7
 	end
 
@@ -328,7 +336,7 @@
 	checkevent EVENT_EXPLODING_TRAP_8
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_8
 	end
 
@@ -336,7 +344,7 @@
 	checkevent EVENT_EXPLODING_TRAP_9
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_9
 	end
 
@@ -344,7 +352,7 @@
 	checkevent EVENT_EXPLODING_TRAP_10
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_10
 	end
 
@@ -352,7 +360,7 @@
 	checkevent EVENT_EXPLODING_TRAP_11
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_11
 	end
 
@@ -360,7 +368,7 @@
 	checkevent EVENT_EXPLODING_TRAP_12
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_12
 	end
 
@@ -368,7 +376,7 @@
 	checkevent EVENT_EXPLODING_TRAP_13
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_13
 	end
 
@@ -376,7 +384,7 @@
 	checkevent EVENT_EXPLODING_TRAP_14
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_14
 	end
 
@@ -384,7 +392,7 @@
 	checkevent EVENT_EXPLODING_TRAP_15
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_15
 	end
 
@@ -392,7 +400,7 @@
 	checkevent EVENT_EXPLODING_TRAP_16
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_16
 	end
 
@@ -400,7 +408,7 @@
 	checkevent EVENT_EXPLODING_TRAP_17
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_17
 	end
 
@@ -408,7 +416,7 @@
 	checkevent EVENT_EXPLODING_TRAP_18
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_18
 	end
 
@@ -416,7 +424,7 @@
 	checkevent EVENT_EXPLODING_TRAP_19
 	iftrue NoExplodingTrap
 	scall GeodudeExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_19
 	end
 
@@ -424,7 +432,7 @@
 	checkevent EVENT_EXPLODING_TRAP_20
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_20
 	end
 
@@ -432,7 +440,7 @@
 	checkevent EVENT_EXPLODING_TRAP_21
 	iftrue NoExplodingTrap
 	scall KoffingExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_21
 	end
 
@@ -440,7 +448,7 @@
 	checkevent EVENT_EXPLODING_TRAP_22
 	iftrue NoExplodingTrap
 	scall VoltorbExplodingTrap
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_EXPLODING_TRAP_22
 	end
 
@@ -448,9 +456,9 @@
 	special FadeOutPalettes
 	cry VOLTORB
 	special FadeInPalettes
-	setlasttalked $ff
+	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
-	loadpokedata VOLTORB, 23
+	loadwildmon VOLTORB, 23
 	startbattle
 	end
 
@@ -458,9 +466,9 @@
 	special FadeOutPalettes
 	cry GEODUDE
 	special FadeInPalettes
-	setlasttalked $ff
+	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
-	loadpokedata GEODUDE, 21
+	loadwildmon GEODUDE, 21
 	startbattle
 	end
 
@@ -468,9 +476,9 @@
 	special FadeOutPalettes
 	cry KOFFING
 	special FadeInPalettes
-	setlasttalked $ff
+	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
-	loadpokedata KOFFING, 21
+	loadwildmon KOFFING, 21
 	startbattle
 	end
 
@@ -481,11 +489,11 @@
 	trainer EVENT_BEAT_SCIENTIST_JED, SCIENTIST, JED, ScientistJedSeenText, ScientistJedBeatenText, 0, ScientistJedScript
 
 ScientistJedScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6cc16
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM16:
@@ -492,11 +500,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_16, GRUNTM, 16, GruntM16SeenText, GruntM16BeatenText, 0, GruntM16Script
 
 GruntM16Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6cd1b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapTeamRocketBaseB1FSignpost5Script:
@@ -506,13 +514,13 @@
 	jumpstd teamrocketoath
 
 MapTeamRocketBaseB1FSignpost0Script:
-	loadfont
+	opentext
 	checkevent EVENT_TURNED_OFF_SECURITY_CAMERAS
 	iftrue UnknownScript_0x6cabe
 	writetext UnknownText_0x6cdad
 	playsound SFX_TALLY
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_TURNED_OFF_SECURITY_CAMERAS
 	setevent EVENT_SECURITY_CAMERA_1
 	setevent EVENT_SECURITY_CAMERA_2
@@ -523,20 +531,20 @@
 
 UnknownScript_0x6cabe:
 	writetext UnknownText_0x6cdd0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x6cac4:
-	db HYPER_POTION, 1
+TeamRocketBaseB1FHyperPotion:
+	itemball HYPER_POTION
 
-ItemFragment_0x6cac6:
-	db NUGGET, 1
+TeamRocketBaseB1FNugget:
+	itemball NUGGET
 
-ItemFragment_0x6cac8:
-	db GUARD_SPEC, 1
+TeamRocketBaseB1FGuardSpec:
+	itemball GUARD_SPEC
 
-MapTeamRocketBaseB1FSignpostItem8:
+TeamRocketBaseB1FHiddenRevive:
 	dwb EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE, REVIVE
 	
 
@@ -782,7 +790,7 @@
 	signpost 5, 24, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
 	signpost 11, 20, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
 	signpost 11, 21, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
-	signpost 11, 3, SIGNPOST_ITEM, MapTeamRocketBaseB1FSignpostItem8
+	signpost 11, 3, SIGNPOST_ITEM, TeamRocketBaseB1FHiddenRevive
 
 .PersonEvents:
 	db 6
@@ -789,6 +797,6 @@
 	person_event SPRITE_ROCKET, 0, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
 	person_event SPRITE_ROCKET, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM16, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SCIENTIST, 12, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_POKE_BALL, 6, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6cac6, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
-	person_event SPRITE_POKE_BALL, 12, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FHyperPotion, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 15, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FNugget, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 12, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FGuardSpec, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -1,3 +1,19 @@
+const_value set 2
+	const TEAMROCKETBASEB2F_ROCKET1
+	const TEAMROCKETBASEB2F_ROCKET_GIRL
+	const TEAMROCKETBASEB2F_LANCE
+	const TEAMROCKETBASEB2F_DRAGON
+	const TEAMROCKETBASEB2F_VOLTORB1
+	const TEAMROCKETBASEB2F_VOLTORB2
+	const TEAMROCKETBASEB2F_VOLTORB3
+	const TEAMROCKETBASEB2F_VOLTORB4
+	const TEAMROCKETBASEB2F_VOLTORB5
+	const TEAMROCKETBASEB2F_VOLTORB6
+	const TEAMROCKETBASEB2F_ROCKET2
+	const TEAMROCKETBASEB2F_ROCKET3
+	const TEAMROCKETBASEB2F_ROCKET4
+	const TEAMROCKETBASEB2F_POKE_BALL
+
 TeamRocketBaseB2F_MapScriptHeader:
 .MapTriggers:
 	db 4
@@ -37,99 +53,99 @@
 	return
 
 UnknownScript_0x6cf95:
-	moveperson $4, $9, $d
+	moveperson TEAMROCKETBASEB2F_LANCE, $9, $d
 	jump UnknownScript_0x6cfac
 
 UnknownScript_0x6cf9c:
-	moveperson $3, $15, $10
-	moveperson $2, $15, $10
-	moveperson $5, $a, $d
-	moveperson $4, $a, $d
+	moveperson TEAMROCKETBASEB2F_ROCKET_GIRL, $15, $10
+	moveperson TEAMROCKETBASEB2F_ROCKET1, $15, $10
+	moveperson TEAMROCKETBASEB2F_DRAGON, $a, $d
+	moveperson TEAMROCKETBASEB2F_LANCE, $a, $d
 UnknownScript_0x6cfac:
-	appear $3
-	appear $2
-	loadfont
+	appear TEAMROCKETBASEB2F_ROCKET_GIRL
+	appear TEAMROCKETBASEB2F_ROCKET1
+	opentext
 	writetext UnknownText_0x6d2ad
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
 	applymovement PLAYER, MovementData_0x6d21f
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	applymovement $3, MovementData_0x6d224
+	applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d224
 	spriteface PLAYER, UP
-	applymovement $2, MovementData_0x6d22f
-	loadfont
+	applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d22f
+	opentext
 	writetext UnknownText_0x6d2c3
+	waitbutton
 	closetext
-	loadmovesprites
 	cry DRAGONITE
-	spriteface $3, LEFT
+	spriteface TEAMROCKETBASEB2F_ROCKET_GIRL, LEFT
 	spriteface PLAYER, LEFT
-	appear $5
-	applymovement $5, MovementData_0x6d236
-	applymovement $3, MovementData_0x6d23b
-	applymovement $2, MovementData_0x6d24c
-	appear $4
-	applymovement $4, MovementData_0x6d244
-	loadfont
+	appear TEAMROCKETBASEB2F_DRAGON
+	applymovement TEAMROCKETBASEB2F_DRAGON, MovementData_0x6d236
+	applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d23b
+	applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d24c
+	appear TEAMROCKETBASEB2F_LANCE
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d244
+	opentext
 	writetext UnknownText_0x6d38c
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, RIGHT
-	applymovement $3, MovementData_0x6d241
-	loadfont
+	applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d241
+	opentext
 	writetext UnknownText_0x6d3bd
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x6d24a
-	applymovement $3, MovementData_0x6d248
+	applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d24a
+	applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d248
 	winlosstext UnknownText_0x6d45c, 0
-	setlasttalked $3
+	setlasttalked TEAMROCKETBASEB2F_ROCKET_GIRL
 	loadtrainer EXECUTIVEF, 2
 	startbattle
-	disappear $5
+	disappear TEAMROCKETBASEB2F_DRAGON
 	setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
 	setevent EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
 	setevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEF_2
-	loadfont
+	opentext
 	writetext UnknownText_0x6d4c6
+	waitbutton
 	closetext
-	loadmovesprites
 	special Special_FadeBlackQuickly
 	special Special_ReloadSpritesNoPalettes
-	disappear $2
-	disappear $3
-	disappear $c
-	disappear $d
-	disappear $e
+	disappear TEAMROCKETBASEB2F_ROCKET1
+	disappear TEAMROCKETBASEB2F_ROCKET_GIRL
+	disappear TEAMROCKETBASEB2F_ROCKET2
+	disappear TEAMROCKETBASEB2F_ROCKET3
+	disappear TEAMROCKETBASEB2F_ROCKET4
 	pause 15
 	special Special_FadeInQuickly
 	dotrigger $2
 	clearevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
-	spriteface $4, DOWN
-	loadfont
+	spriteface TEAMROCKETBASEB2F_LANCE, DOWN
+	opentext
 	writetext UnknownText_0x6d5d8
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x6d250
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d250
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	writetext UnknownText_0x6d64e
+	waitbutton
 	closetext
-	loadmovesprites
-	follow $4, PLAYER
-	applymovement $4, MovementData_0x6d254
+	follow TEAMROCKETBASEB2F_LANCE, PLAYER
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d254
 	stopfollow
-	applymovement $4, MovementData_0x6d258
-	loadfont
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d258
+	opentext
 	writetext UnknownText_0x6d6cf
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x6d267
-	disappear $4
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d267
+	disappear TEAMROCKETBASEB2F_LANCE
 
 UnknownScript_0x6d075:
 	applymovement PLAYER, MovementData_0x6d271
@@ -136,10 +152,10 @@
 	end
 
 UnknownScript_0x6d07a:
-	loadfont
+	opentext
 	writetext UnknownText_0x6d7ea
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x6d278
 	end
 
@@ -149,32 +165,32 @@
 
 UnknownScript_0x6d08b:
 	spriteface PLAYER, RIGHT
-	spriteface $4, LEFT
+	spriteface TEAMROCKETBASEB2F_LANCE, LEFT
 UnknownScript_0x6d091:
-	loadfont
+	opentext
 	writetext UnknownText_0x6da97
+	waitbutton
 	closetext
-	loadmovesprites
 	special FadeOutPalettes
 	special Mobile_HealParty
 	playsound SFX_FULL_HEAL
 	special HealParty
 	special FadeInPalettes
-	loadfont
+	opentext
 	writetext UnknownText_0x6daf7
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $1
 	setevent EVENT_LANCE_HEALED_YOU_IN_TEAM_ROCKET_BASE
 	checkcode VAR_FACING
 	if_equal RIGHT, UnknownScript_0x6d0be
-	applymovement $4, MovementData_0x6d212
-	disappear $4
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d212
+	disappear TEAMROCKETBASEB2F_LANCE
 	end
 
 UnknownScript_0x6d0be:
-	applymovement $4, MovementData_0x6d219
-	disappear $4
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d219
+	disappear TEAMROCKETBASEB2F_LANCE
 	end
 
 TrainerGruntM17:
@@ -181,11 +197,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_17, GRUNTM, 17, GruntM17SeenText, GruntM17BeatenText, 0, GruntM17Script
 
 GruntM17Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6db88
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM18:
@@ -192,11 +208,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_18, GRUNTM, 18, GruntM18SeenText, GruntM18BeatenText, 0, GruntM18Script
 
 GruntM18Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6dc1a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM19:
@@ -203,20 +219,20 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_19, GRUNTM, 19, GruntM19SeenText, GruntM19BeatenText, 0, GruntM19Script
 
 GruntM19Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6dcd1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 VoltorbScript_0x6d101:
 	cry ELECTRODE
-	loadpokedata ELECTRODE, 23
+	loadwildmon ELECTRODE, 23
 	startbattle
 	iftrue UnknownScript_0x6d182
-	disappear $6
-	disappear $9
+	disappear TEAMROCKETBASEB2F_VOLTORB1
+	disappear TEAMROCKETBASEB2F_VOLTORB4
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
@@ -223,7 +239,7 @@
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
-	returnafterbattle
+	reloadmapafterbattle
 	special PlayMapMusic
 	applymovement PLAYER, MovementData_0x6d28c
 	jump UnknownScript_0x6d184
@@ -230,11 +246,11 @@
 
 VoltorbScript_0x6d12c:
 	cry ELECTRODE
-	loadpokedata ELECTRODE, 23
+	loadwildmon ELECTRODE, 23
 	startbattle
 	iftrue UnknownScript_0x6d182
-	disappear $7
-	disappear $a
+	disappear TEAMROCKETBASEB2F_VOLTORB2
+	disappear TEAMROCKETBASEB2F_VOLTORB5
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
@@ -241,7 +257,7 @@
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
-	returnafterbattle
+	reloadmapafterbattle
 	special PlayMapMusic
 	applymovement PLAYER, MovementData_0x6d299
 	jump UnknownScript_0x6d184
@@ -248,11 +264,11 @@
 
 VoltorbScript_0x6d157:
 	cry ELECTRODE
-	loadpokedata ELECTRODE, 23
+	loadwildmon ELECTRODE, 23
 	startbattle
 	iftrue UnknownScript_0x6d182
-	disappear $8
-	disappear $b
+	disappear TEAMROCKETBASEB2F_VOLTORB3
+	disappear TEAMROCKETBASEB2F_VOLTORB6
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
@@ -259,36 +275,36 @@
 	iffalse UnknownScript_0x6d182
 	checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	iffalse UnknownScript_0x6d182
-	returnafterbattle
+	reloadmapafterbattle
 	special PlayMapMusic
 	applymovement PLAYER, MovementData_0x6d2a4
 	jump UnknownScript_0x6d184
 
 UnknownScript_0x6d182:
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 UnknownScript_0x6d184:
-	moveperson $4, $12, $6
-	appear $4
-	applymovement $4, MovementData_0x6d27a
+	moveperson TEAMROCKETBASEB2F_LANCE, $12, $6
+	appear TEAMROCKETBASEB2F_LANCE
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d27a
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x6d809
-	keeptextopen
+	buttonsound
 	verbosegiveitem HM_WHIRLPOOL
 	setevent EVENT_GOT_HM06_WHIRLPOOL
 	writetext UnknownText_0x6d8f8
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $4, DOWN
-	loadfont
+	spriteface TEAMROCKETBASEB2F_LANCE, DOWN
+	opentext
 	writetext UnknownText_0x6d994
+	waitbutton
 	closetext
-	loadmovesprites
 	spriteface PLAYER, DOWN
-	applymovement $4, MovementData_0x6d283
-	disappear $4
+	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d283
+	disappear TEAMROCKETBASEB2F_LANCE
 	setevent EVENT_CLEARED_ROCKET_HIDEOUT
 	clearflag ENGINE_ROCKET_SIGNAL_ON_CH20
 	setevent EVENT_ROUTE_43_GATE_ROCKETS
@@ -309,44 +325,44 @@
 	
 
 MapTeamRocketBaseB2FSignpost1Script:
-	loadfont
+	opentext
 	checkevent EVENT_LEARNED_HAIL_GIOVANNI
 	iftrue UnknownScript_0x6d1e8
 	writetext UnknownText_0x6dd39
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6d1e8:
 	writetext UnknownText_0x6dd6b
-	closetext
+	waitbutton
 	playsound SFX_ENTER_DOOR
 	changeblock $e, $c, $7
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
-	waitbutton
+	waitsfx
 	end
 
 MapTeamRocketBaseB2FSignpost21Script:
-	loadfont
+	opentext
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue UnknownScript_0x6d207
 	writetext UnknownText_0x6dda7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x6d207:
 	writetext UnknownText_0x6de03
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x6d20d:
-	db TM_THIEF, 1
+TeamRocketBaseB2FTMThief:
+	itemball TM_THIEF
 
-MapTeamRocketBaseB2FSignpostItem22:
+TeamRocketBaseB2FHiddenFullHeal:
 	dwb EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
@@ -948,7 +964,7 @@
 	signpost 6, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
 	signpost 7, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
 	signpost 8, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 26, SIGNPOST_ITEM, MapTeamRocketBaseB2FSignpostItem22
+	signpost 7, 26, SIGNPOST_ITEM, TeamRocketBaseB2FHiddenFullHeal
 
 .PersonEvents:
 	db 14
@@ -965,4 +981,4 @@
 	person_event SPRITE_ROCKET, 13, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM17, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 1, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 1, TrainerGruntM18, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 4, TrainerGruntM19, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_POKE_BALL, 10, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB2FTMThief, EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -1,12 +1,28 @@
+const_value set 2
+	const TEAMROCKETBASEB3F_LANCE
+	const TEAMROCKETBASEB3F_ROCKET1
+	const TEAMROCKETBASEB3F_MOLTRES
+	const TEAMROCKETBASEB3F_ROCKET_GIRL
+	const TEAMROCKETBASEB3F_ROCKET2
+	const TEAMROCKETBASEB3F_SCIENTIST1
+	const TEAMROCKETBASEB3F_SCIENTIST2
+	const TEAMROCKETBASEB3F_ROCKET3
+	const TEAMROCKETBASEB3F_SILVER
+	const TEAMROCKETBASEB3F_POKE_BALL1
+	const TEAMROCKETBASEB3F_POKE_BALL2
+	const TEAMROCKETBASEB3F_POKE_BALL3
+	const TEAMROCKETBASEB3F_POKE_BALL4
+	const TEAMROCKETBASEB3F_POKE_BALL5
+
 TeamRocketBaseB3F_MapScriptHeader:
 .MapTriggers:
 	db 4
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
 	dw .Trigger2, 0
 	dw .Trigger3, 0
-	dw .Trigger4, 0
 
 .MapCallbacks:
 	db 1
@@ -15,10 +31,13 @@
 
 	dbw 1, .CheckGiovanniDoor
 
-.Trigger1:
+.Trigger0:
 	priorityjump LanceScript_0x6dffc
 	end
 
+.Trigger1:
+	end
+
 .Trigger2:
 	end
 
@@ -25,9 +44,6 @@
 .Trigger3:
 	end
 
-.Trigger4:
-	end
-
 .CheckGiovanniDoor:
 	checkevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
 	iftrue .OpenSesame
@@ -40,15 +56,15 @@
 LanceScript_0x6dffc:
 	spriteface PLAYER, LEFT
 	pause 5
-	spriteface $4, RIGHT
+	spriteface TEAMROCKETBASEB3F_MOLTRES, RIGHT
 	pause 20
-	applymovement $2, MovementData_0x6e12a
-	loadfont
+	applymovement TEAMROCKETBASEB3F_LANCE, MovementData_0x6e12a
+	opentext
 	writetext UnknownText_0x6e179
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x6e12c
-	disappear $2
+	applymovement TEAMROCKETBASEB3F_LANCE, MovementData_0x6e12c
+	disappear TEAMROCKETBASEB3F_LANCE
 	dotrigger $1
 	end
 
@@ -55,19 +71,19 @@
 UnknownScript_0x6e019:
 	spriteface PLAYER, LEFT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
-	appear $a
-	applymovement $a, MovementData_0x6e164
+	special Special_FadeOutMusic
+	appear TEAMROCKETBASEB3F_SILVER
+	applymovement TEAMROCKETBASEB3F_SILVER, MovementData_0x6e164
 	spriteface PLAYER, LEFT
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x6e267
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_TACKLE
 	applymovement PLAYER, MovementData_0x6e175
-	applymovement $a, MovementData_0x6e16d
-	disappear $a
+	applymovement TEAMROCKETBASEB3F_SILVER, MovementData_0x6e16d
+	disappear TEAMROCKETBASEB3F_SILVER
 	dotrigger $2
 	special RestartMapMusic
 	end
@@ -83,36 +99,36 @@
 	applymovement PLAYER, MovementData_0x6e13a
 UnknownScript_0x6e056:
 	pause 30
-	showemote EMOTE_SHOCK, $3, 15
+	showemote EMOTE_SHOCK, TEAMROCKETBASEB3F_ROCKET1, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	spriteface $3, DOWN
-	loadfont
+	spriteface TEAMROCKETBASEB3F_ROCKET1, DOWN
+	opentext
 	writetext UnknownText_0x6e400
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $3, MovementData_0x6e142
+	applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e142
 	winlosstext UnknownText_0x6e511, 0
-	setlasttalked $3
+	setlasttalked TEAMROCKETBASEB3F_ROCKET1
 	loadtrainer EXECUTIVEM, 4
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_4
-	loadfont
+	opentext
 	writetext UnknownText_0x6e548
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $3, MovementData_0x6e144
+	applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e144
 	playsound SFX_TACKLE
-	applymovement $3, MovementData_0x6e147
-	disappear $3
+	applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e147
+	disappear TEAMROCKETBASEB3F_ROCKET1
 	dotrigger $3
 	end
 
 MoltresScript_0x6e091:
-	loadfont
+	opentext
 	writetext UnknownText_0x6e585
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LEARNED_HAIL_GIOVANNI
 	end
 
@@ -120,11 +136,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTF_5, GRUNTF, 5, GruntF5SeenText, GruntF5BeatenText, 0, GruntF5Script
 
 GruntF5Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6e611
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LEARNED_SLOWPOKETAIL
 	end
 
@@ -132,11 +148,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_28, GRUNTM, 28, GruntM28SeenText, GruntM28BeatenText, 0, GruntM28Script
 
 GruntM28Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6e737
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_LEARNED_RATICATE_TAIL
 	end
 
@@ -144,11 +160,11 @@
 	trainer EVENT_BEAT_SCIENTIST_ROSS, SCIENTIST, ROSS, ScientistRossSeenText, ScientistRossBeatenText, 0, ScientistRossScript
 
 ScientistRossScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6e822
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerScientistMitch:
@@ -155,11 +171,11 @@
 	trainer EVENT_BEAT_SCIENTIST_MITCH, SCIENTIST, MITCH, ScientistMitchSeenText, ScientistMitchBeatenText, 0, ScientistMitchScript
 
 ScientistMitchScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x6e90a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BossDoor:
@@ -167,7 +183,7 @@
 	dw .Script
 	
 .Script
-	loadfont
+	opentext
 	checkevent EVENT_LEARNED_SLOWPOKETAIL
 	iffalse .NeedsPassword
 	checkevent EVENT_LEARNED_RATICATE_TAIL
@@ -176,38 +192,38 @@
 
 .NeedsPassword
 	writetext UnknownText_0x6e970
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .OpenSesame
 	writetext UnknownText_0x6e9a3
-	closetext
+	waitbutton
 	playsound SFX_ENTER_DOOR
 	changeblock $a, $8, $7
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
-	waitbutton
+	waitsfx
 	end
 
 MapTeamRocketBaseB3FSignpost9Script:
 	jumpstd teamrocketoath
 
-ItemFragment_0x6e120:
-	db PROTEIN, 1
+TeamRocketBaseB3FProtein:
+	itemball PROTEIN
 
-ItemFragment_0x6e122:
-	db X_SPECIAL, 1
+TeamRocketBaseB3FXSpecial:
+	itemball X_SPECIAL
 
-ItemFragment_0x6e124:
-	db FULL_HEAL, 1
+TeamRocketBaseB3FFullHeal:
+	itemball FULL_HEAL
 
-ItemFragment_0x6e126:
-	db ICE_HEAL, 1
+TeamRocketBaseB3FIceHeal:
+	itemball ICE_HEAL
 
-ItemFragment_0x6e128:
-	db ULTRA_BALL, 1
+TeamRocketBaseB3FUltraBall:
+	itemball ULTRA_BALL
 
 MovementData_0x6e12a:
 	step_right
@@ -596,8 +612,8 @@
 	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 24, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x6e048, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SILVER, 5, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE
-	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x6e120, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
-	person_event SPRITE_POKE_BALL, 12, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FProtein, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
+	person_event SPRITE_POKE_BALL, 12, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FXSpecial, EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
+	person_event SPRITE_POKE_BALL, 9, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FFullHeal, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 2, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FIceHeal, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
+	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FUltraBall, EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -1,10 +1,14 @@
+const_value set 2
+	const TIMECAPSULE_CHRIS1
+	const TIMECAPSULE_CHRIS2
+
 TimeCapsule_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -13,23 +17,23 @@
 
 	dbw 2, TimeCapsule_SetWhichChris
 
-.Trigger1:
+.Trigger0:
 	priorityjump TimeCapsule_Initialize
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 TimeCapsule_SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
-	disappear $3
-	appear $2
+	disappear TIMECAPSULE_CHRIS2
+	appear TIMECAPSULE_CHRIS1
 	return
 
 .Chris2:
-	disappear $2
-	appear $3
+	disappear TIMECAPSULE_CHRIS1
+	appear TIMECAPSULE_CHRIS2
 	return
 
 TimeCapsule_Initialize:
@@ -43,10 +47,10 @@
 	end
 
 ChrisScript_0x19351a:
-	loadfont
+	opentext
 	writetext UnknownText_0x193521
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x193521:
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -1,3 +1,15 @@
+const_value set 2
+	const TINTOWER1F_SUICUNE
+	const TINTOWER1F_RAIKOU
+	const TINTOWER1F_ENTEI
+	const TINTOWER1F_SUPER_NERD
+	const TINTOWER1F_SAGE1
+	const TINTOWER1F_SAGE2
+	const TINTOWER1F_SAGE3
+	const TINTOWER1F_SAGE4
+	const TINTOWER1F_SAGE5
+	const TINTOWER1F_SAGE6
+
 TinTower1F_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -34,7 +46,7 @@
 UnknownScript_0x185047:
 	checkevent EVENT_FOUGHT_HO_OH
 	iffalse UnknownScript_0x18504f
-	appear $5
+	appear TINTOWER1F_SUPER_NERD
 UnknownScript_0x18504f:
 	return
 
@@ -41,31 +53,31 @@
 UnknownScript_0x185050:
 	checkevent EVENT_FOUGHT_SUICUNE
 	iftrue UnknownScript_0x185077
-	appear $2
+	appear TINTOWER1F_SUICUNE
 	writebyte RAIKOU
 	special SpecialMonCheck
 	iftrue UnknownScript_0x185065
-	appear $3
+	appear TINTOWER1F_RAIKOU
 	jump UnknownScript_0x185067
 
 UnknownScript_0x185065:
-	disappear $3
+	disappear TINTOWER1F_RAIKOU
 UnknownScript_0x185067:
 	writebyte ENTEI
 	special SpecialMonCheck
 	iftrue UnknownScript_0x185074
-	appear $4
+	appear TINTOWER1F_ENTEI
 	jump UnknownScript_0x185076
 
 UnknownScript_0x185074:
-	disappear $4
+	disappear TINTOWER1F_ENTEI
 UnknownScript_0x185076:
 	return
 
 UnknownScript_0x185077:
-	disappear $2
-	disappear $3
-	disappear $4
+	disappear TINTOWER1F_SUICUNE
+	disappear TINTOWER1F_RAIKOU
+	disappear TINTOWER1F_ENTEI
 	clearevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
 	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	return
@@ -83,40 +95,40 @@
 	writebyte RAIKOU
 	special SpecialMonCheck
 	iftrue UnknownScript_0x1850b6
-	applymovement $3, MovementData_0x1851d0
+	applymovement TINTOWER1F_RAIKOU, MovementData_0x1851d0
 	spriteface PLAYER, LEFT
 	cry RAIKOU
 	pause 10
 	playsound SFX_WARP_FROM
-	applymovement $3, MovementData_0x1851d4
-	disappear $3
+	applymovement TINTOWER1F_RAIKOU, MovementData_0x1851d4
+	disappear TINTOWER1F_RAIKOU
 	playsound SFX_EXIT_BUILDING
-	waitbutton
+	waitsfx
 UnknownScript_0x1850b6:
 	writebyte ENTEI
 	special SpecialMonCheck
 	iftrue UnknownScript_0x1850d7
-	applymovement $4, MovementData_0x1851da
+	applymovement TINTOWER1F_ENTEI, MovementData_0x1851da
 	spriteface PLAYER, RIGHT
 	cry ENTEI
 	pause 10
 	playsound SFX_WARP_FROM
-	applymovement $4, MovementData_0x1851de
-	disappear $4
+	applymovement TINTOWER1F_ENTEI, MovementData_0x1851de
+	disappear TINTOWER1F_ENTEI
 	playsound SFX_EXIT_BUILDING
-	waitbutton
+	waitsfx
 UnknownScript_0x1850d7:
 	spriteface PLAYER, UP
 	pause 10
 	applymovement PLAYER, MovementData_0x1851e8
-	applymovement $2, MovementData_0x1851e4
+	applymovement TINTOWER1F_SUICUNE, MovementData_0x1851e4
 	cry SUICUNE
 	pause 20
-	loadpokedata SUICUNE, 40
+	loadwildmon SUICUNE, 40
 	writecode VAR_BATTLETYPE, BATTLETYPE_SUICUNE
 	startbattle
-	reloadmapmusic
-	disappear $2
+	dontrestartmapmusic
+	disappear TINTOWER1F_SUICUNE
 	setevent EVENT_FOUGHT_SUICUNE
 	setevent EVENT_SAW_SUICUNE_ON_ROUTE_42
 	domaptrigger ROUTE_42, $0
@@ -126,39 +138,39 @@
 	domaptrigger CIANWOOD_CITY, $0
 	dotrigger $1
 	clearevent EVENT_SET_WHEN_FOUGHT_HO_OH
-	returnafterbattle
+	reloadmapafterbattle
 	pause 20
 	spriteface PLAYER, DOWN
 	playmusic MUSIC_MYSTICALMAN_ENCOUNTER
 	playsound SFX_ENTER_DOOR
-	moveperson $5, $a, $f
-	appear $5
-	applymovement $5, MovementData_0x1851ec
+	moveperson TINTOWER1F_SUPER_NERD, $a, $f
+	appear TINTOWER1F_SUPER_NERD
+	applymovement TINTOWER1F_SUPER_NERD, MovementData_0x1851ec
 	playsound SFX_ENTER_DOOR
-	moveperson $6, $9, $f
-	appear $6
-	applymovement $6, MovementData_0x1851f5
+	moveperson TINTOWER1F_SAGE1, $9, $f
+	appear TINTOWER1F_SAGE1
+	applymovement TINTOWER1F_SAGE1, MovementData_0x1851f5
 	playsound SFX_ENTER_DOOR
-	moveperson $7, $9, $f
-	appear $7
-	applymovement $7, MovementData_0x1851fb
+	moveperson TINTOWER1F_SAGE2, $9, $f
+	appear TINTOWER1F_SAGE2
+	applymovement TINTOWER1F_SAGE2, MovementData_0x1851fb
 	playsound SFX_ENTER_DOOR
-	moveperson $8, $9, $f
-	appear $8
-	applymovement $8, MovementData_0x1851fe
-	moveperson $6, $7, $d
-	moveperson $7, $9, $d
-	moveperson $8, $b, $d
+	moveperson TINTOWER1F_SAGE3, $9, $f
+	appear TINTOWER1F_SAGE3
+	applymovement TINTOWER1F_SAGE3, MovementData_0x1851fe
+	moveperson TINTOWER1F_SAGE1, $7, $d
+	moveperson TINTOWER1F_SAGE2, $9, $d
+	moveperson TINTOWER1F_SAGE3, $b, $d
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x185203
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $5, MovementData_0x1851f1
+	applymovement TINTOWER1F_SUPER_NERD, MovementData_0x1851f1
 	playsound SFX_EXIT_BUILDING
-	disappear $5
-	waitbutton
-	special Special_RotatePalettesRightMusic
+	disappear TINTOWER1F_SUPER_NERD
+	waitsfx
+	special Special_FadeOutMusic
 	pause 20
 	playmapmusic
 	end
@@ -182,34 +194,34 @@
 
 SageScript_0x185188:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOUGHT_HO_OH
 	iftrue UnknownScript_0x1851b6
 	checkevent EVENT_GOT_RAINBOW_WING
 	iftrue UnknownScript_0x1851b0
 	writetext UnknownText_0x185629
-	keeptextopen
+	buttonsound
 	verbosegiveitem RAINBOW_WING
-	loadmovesprites
+	closetext
 	refreshscreen $0
 	earthquake 72
-	waitbutton
+	waitsfx
 	playsound SFX_STRENGTH
 	changeblock $a, $2, $20
 	reloadmappart
 	setevent EVENT_GOT_RAINBOW_WING
-	loadmovesprites
-	loadfont
+	closetext
+	opentext
 UnknownScript_0x1851b0:
 	writetext UnknownText_0x18564a
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1851b6:
 	writetext UnknownText_0x185803
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SageScript_0x1851bc:
--- a/maps/TinTower2F.asm
+++ b/maps/TinTower2F.asm
@@ -1,3 +1,4 @@
+
 TinTower2F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/TinTower3F.asm
+++ b/maps/TinTower3F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWER3F_POKE_BALL
+
 TinTower3F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185a37:
-	db FULL_HEAL, 1
+TinTower3FFullHeal:
+	itemball FULL_HEAL
 
 TinTower3F_MapEventHeader:
 	; filler
@@ -25,4 +28,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 14, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185a37, EVENT_TIN_TOWER_3F_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 14, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower3FFullHeal, EVENT_TIN_TOWER_3F_FULL_HEAL
--- a/maps/TinTower4F.asm
+++ b/maps/TinTower4F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const TINTOWER4F_POKE_BALL1
+	const TINTOWER4F_POKE_BALL2
+	const TINTOWER4F_POKE_BALL3
+
 TinTower4F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,16 +10,16 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185a58:
-	db ULTRA_BALL, 1
+TinTower4FUltraBall:
+	itemball ULTRA_BALL
 
-ItemFragment_0x185a5a:
-	db PP_UP, 1
+TinTower4FPPUp:
+	itemball PP_UP
 
-ItemFragment_0x185a5c:
-	db ESCAPE_ROPE, 1
+TinTower4FEscapeRope:
+	itemball ESCAPE_ROPE
 
-MapTinTower4FSignpostItem0:
+TinTower4FHiddenMaxPotion:
 	dwb EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION, MAX_POTION
 	
 
@@ -34,10 +39,10 @@
 
 .Signposts:
 	db 1
-	signpost 6, 11, SIGNPOST_ITEM, MapTinTower4FSignpostItem0
+	signpost 6, 11, SIGNPOST_ITEM, TinTower4FHiddenMaxPotion
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185a58, EVENT_TIN_TOWER_4F_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 14, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185a5a, EVENT_TIN_TOWER_4F_PP_UP
-	person_event SPRITE_POKE_BALL, 12, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185a5c, EVENT_TIN_TOWER_4F_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower4FUltraBall, EVENT_TIN_TOWER_4F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 14, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower4FPPUp, EVENT_TIN_TOWER_4F_PP_UP
+	person_event SPRITE_POKE_BALL, 12, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower4FEscapeRope, EVENT_TIN_TOWER_4F_ESCAPE_ROPE
--- a/maps/TinTower5F.asm
+++ b/maps/TinTower5F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWER5F_POKE_BALL
+
 TinTower5F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,14 +8,14 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185aa9:
-	db RARE_CANDY, 1
+TinTower5FRareCandy:
+	itemball RARE_CANDY
 
-MapTinTower5FSignpostItem0:
+TinTower5FHiddenFullRestore:
 	dwb EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
-MapTinTower5FSignpostItem1:
+TinTower5FHiddenCarbos:
 	dwb EVENT_TIN_TOWER_5F_HIDDEN_CARBOS, CARBOS
 	
 
@@ -32,9 +35,9 @@
 
 .Signposts:
 	db 2
-	signpost 14, 16, SIGNPOST_ITEM, MapTinTower5FSignpostItem0
-	signpost 15, 3, SIGNPOST_ITEM, MapTinTower5FSignpostItem1
+	signpost 14, 16, SIGNPOST_ITEM, TinTower5FHiddenFullRestore
+	signpost 15, 3, SIGNPOST_ITEM, TinTower5FHiddenCarbos
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185aa9, EVENT_TIN_TOWER_5F_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower5FRareCandy, EVENT_TIN_TOWER_5F_RARE_CANDY
--- a/maps/TinTower6F.asm
+++ b/maps/TinTower6F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWER6F_POKE_BALL
+
 TinTower6F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185ae4:
-	db MAX_POTION, 1
+TinTower6FMaxPotion:
+	itemball MAX_POTION
 
 TinTower6F_MapEventHeader:
 	; filler
@@ -25,4 +28,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 8, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185ae4, EVENT_TIN_TOWER_6F_MAX_POTION
+	person_event SPRITE_POKE_BALL, 8, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower6FMaxPotion, EVENT_TIN_TOWER_6F_MAX_POTION
--- a/maps/TinTower7F.asm
+++ b/maps/TinTower7F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWER7F_POKE_BALL
+
 TinTower7F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185b05:
-	db MAX_REVIVE, 1
+TinTower7FMaxRevive:
+	itemball MAX_REVIVE
 
 TinTower7F_MapEventHeader:
 	; filler
@@ -28,4 +31,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 1, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185b05, EVENT_TIN_TOWER_7F_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 1, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower7FMaxRevive, EVENT_TIN_TOWER_7F_MAX_REVIVE
--- a/maps/TinTower8F.asm
+++ b/maps/TinTower8F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const TINTOWER8F_POKE_BALL1
+	const TINTOWER8F_POKE_BALL2
+	const TINTOWER8F_POKE_BALL3
+
 TinTower8F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,14 +10,14 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185b35:
-	db NUGGET, 1
+TinTower8FNugget:
+	itemball NUGGET
 
-ItemFragment_0x185b37:
-	db MAX_ELIXER, 1
+TinTower8FMaxElixer:
+	itemball MAX_ELIXER
 
-ItemFragment_0x185b39:
-	db FULL_RESTORE, 1
+TinTower8FFullRestore:
+	itemball FULL_RESTORE
 
 TinTower8F_MapEventHeader:
 	; filler
@@ -35,6 +40,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185b35, EVENT_TIN_TOWER_8F_NUGGET
-	person_event SPRITE_POKE_BALL, 6, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185b37, EVENT_TIN_TOWER_8F_MAX_ELIXER
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185b39, EVENT_TIN_TOWER_8F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower8FNugget, EVENT_TIN_TOWER_8F_NUGGET
+	person_event SPRITE_POKE_BALL, 6, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower8FMaxElixer, EVENT_TIN_TOWER_8F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower8FFullRestore, EVENT_TIN_TOWER_8F_FULL_RESTORE
--- a/maps/TinTower9F.asm
+++ b/maps/TinTower9F.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWER9F_POKE_BALL
+
 TinTower9F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x185b88:
-	db HP_UP, 1
+TinTower9FHPUp:
+	itemball HP_UP
 
 UnknownText_0x185b8a:
 	text "HO-OH: Shaoooh!"
@@ -38,4 +41,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 1, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x185b88, EVENT_TIN_TOWER_9F_HP_UP
+	person_event SPRITE_POKE_BALL, 1, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TinTower9FHPUp, EVENT_TIN_TOWER_9F_HP_UP
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TINTOWERROOF_HO_OH
+
 TinTowerRoof_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -17,26 +20,26 @@
 	jump UnknownScript_0x77241
 
 UnknownScript_0x7723e:
-	appear $2
+	appear TINTOWERROOF_HO_OH
 	return
 
 UnknownScript_0x77241:
-	disappear $2
+	disappear TINTOWERROOF_HO_OH
 	return
 
 HoOhScript_0x77244:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x77260
 	cry HO_OH
 	pause 15
-	loadmovesprites
+	closetext
 	setevent EVENT_FOUGHT_HO_OH
 	writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
-	loadpokedata HO_OH, 60
+	loadwildmon HO_OH, 60
 	startbattle
-	disappear $2
-	returnafterbattle
+	disappear TINTOWERROOF_HO_OH
+	reloadmapafterbattle
 	setevent EVENT_SET_WHEN_FOUGHT_HO_OH
 	end
 
--- a/maps/TohjoFalls.asm
+++ b/maps/TohjoFalls.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const TOHJOFALLS_POKE_BALL
+
 TohjoFalls_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18db02:
-	db MOON_STONE, 1
+TohjoFallsMoonStone:
+	itemball MOON_STONE
 
 TohjoFalls_MapEventHeader:
 	; filler
@@ -25,4 +28,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18db02, EVENT_TOHJO_FALLS_MOON_STONE
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TohjoFallsMoonStone, EVENT_TOHJO_FALLS_MOON_STONE
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -1,10 +1,14 @@
+const_value set 2
+	const TRADECENTER_CHRIS1
+	const TRADECENTER_CHRIS2
+
 TradeCenter_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -13,23 +17,23 @@
 
 	dbw 2, TradeCenter_SetWhichChris
 
-.Trigger1:
+.Trigger0:
 	priorityjump TradeCenter_Initialize
 	end
 
-.Trigger2:
+.Trigger1:
 	end
 
 TradeCenter_SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
-	disappear $3
-	appear $2
+	disappear TRADECENTER_CHRIS2
+	appear TRADECENTER_CHRIS1
 	return
 
 .Chris2:
-	disappear $2
-	appear $3
+	disappear TRADECENTER_CHRIS1
+	appear TRADECENTER_CHRIS2
 	return
 
 TradeCenter_Initialize:
@@ -43,10 +47,10 @@
 	end
 
 ChrisScript_0x19340b:
-	loadfont
+	opentext
 	writetext .FriendReadyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FriendReadyText:
--- a/maps/TrainerHouse1F.asm
+++ b/maps/TrainerHouse1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const TRAINERHOUSE1F_RECEPTIONIST
+	const TRAINERHOUSE1F_COOLTRAINER_M
+	const TRAINERHOUSE1F_COOLTRAINER_F
+	const TRAINERHOUSE1F_YOUNGSTER
+	const TRAINERHOUSE1F_GENTLEMAN
+
 TrainerHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -1,78 +1,82 @@
+const_value set 2
+	const TRAINERHOUSEB1F_RECEPTIONIST
+	const TRAINERHOUSEB1F_CHRIS
+
 TrainerHouseB1F_MapScriptHeader:
 .MapTriggers:
 	db 1
 
 	; triggers
-	dw UnknownScript_0x9b38a, 0
+	dw Trigger0, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x9b38a:
+Trigger0:
 	end
 
-UnknownScript_0x9b38b:
+TrainerHouseReceptionistScript:
 	spriteface PLAYER, UP
-	loadfont
+	opentext
 	checkflag ENGINE_FOUGHT_IN_TRAINER_HALL_TODAY
-	iftrue UnknownScript_0x9b3f7
-	writetext UnknownText_0x9b420
-	keeptextopen
+	iftrue .FoughtTooManyTimes
+	writetext TrainerHouseB1FIntroText
+	buttonsound
 	special SpecialTrainerHouse
-	iffalse UnknownScript_0x9b3a6
+	iffalse .GetCal3Name
 	trainertotext CAL, CAL2, $0
-	jump UnknownScript_0x9b3aa
+	jump .GotName
 
-UnknownScript_0x9b3a6:
+.GetCal3Name:
 	trainertotext CAL, CAL3, $0
-UnknownScript_0x9b3aa:
-	writetext UnknownText_0x9b46a
-	keeptextopen
-	writetext UnknownText_0x9b487
+.GotName:
+	writetext TrainerHouseB1FYourOpponentIsText
+	buttonsound
+	writetext TrainerHouseB1FAskWantToBattleText
 	yesorno
-	iffalse UnknownScript_0x9b3ed
+	iffalse .Declined
 	setflag ENGINE_FOUGHT_IN_TRAINER_HALL_TODAY
-	writetext UnknownText_0x9b4a2
+	writetext TrainerHouseB1FGoRightInText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement PLAYER, MovementData_0x9b401
-	loadfont
-	writetext UnknownText_0x9b587
+	applymovement PLAYER, Movement_EnterTrainerHouseBattleRoom
+	opentext
+	writetext TrainerHouseB1FCalBeforeText
+	waitbutton
 	closetext
-	loadmovesprites
 	special SpecialTrainerHouse
-	iffalse UnknownScript_0x9b3dc
-	winlosstext UnknownText_0x9b578, 0
-	setlasttalked $3
+	iffalse .NoSpecialBattle
+	winlosstext TrainerHouseB1FCalBeatenText, 0
+	setlasttalked TRAINERHOUSEB1F_CHRIS
 	loadtrainer CAL, CAL2
 	startbattle
-	returnafterbattle
-	iffalse UnknownScript_0x9b3e8
-UnknownScript_0x9b3dc:
-	winlosstext UnknownText_0x9b578, 0
-	setlasttalked $3
+	reloadmapafterbattle
+	iffalse .End
+.NoSpecialBattle:
+	winlosstext TrainerHouseB1FCalBeatenText, 0
+	setlasttalked TRAINERHOUSEB1F_CHRIS
 	loadtrainer CAL, CAL3
 	startbattle
-	returnafterbattle
-UnknownScript_0x9b3e8:
-	applymovement PLAYER, MovementData_0x9b40f
+	reloadmapafterbattle
+.End:
+	applymovement PLAYER, Movement_ExitTrainerHouseBattleRoom
 	end
 
-UnknownScript_0x9b3ed:
-	writetext UnknownText_0x9b4d6
+.Declined:
+	writetext TrainerHouseB1FPleaseComeAgainText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement PLAYER, MovementData_0x9b41d
+	applymovement PLAYER, Movement_TrainerHouseTurnBack
 	end
 
-UnknownScript_0x9b3f7:
-	writetext UnknownText_0x9b51d
+.FoughtTooManyTimes:
+	writetext TrainerHouseB1FSecondChallengeDeniedText
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement PLAYER, MovementData_0x9b41d
+	applymovement PLAYER, Movement_TrainerHouseTurnBack
 	end
 
-MovementData_0x9b401:
+Movement_EnterTrainerHouseBattleRoom:
 	step_left
 	step_left
 	step_left
@@ -88,7 +92,7 @@
 	turn_head_right
 	step_end
 
-MovementData_0x9b40f:
+Movement_ExitTrainerHouseBattleRoom:
 	step_up
 	step_up
 	step_up
@@ -104,12 +108,12 @@
 	step_right
 	step_end
 
-MovementData_0x9b41d:
+Movement_TrainerHouseTurnBack:
 	step_right
 	turn_head_left
 	step_end
 
-UnknownText_0x9b420:
+TrainerHouseB1FIntroText:
 	text "Hi. Welcome to our"
 	line "TRAINING HALL."
 
@@ -118,18 +122,18 @@
 	cont "day."
 	done
 
-UnknownText_0x9b46a:
+TrainerHouseB1FYourOpponentIsText:
 	text_from_ram StringBuffer3
 	text " is your"
 	line "opponent today."
 	done
 
-UnknownText_0x9b487:
+TrainerHouseB1FAskWantToBattleText:
 	text "Would you like to"
 	line "battle?"
 	done
 
-UnknownText_0x9b4a2:
+TrainerHouseB1FGoRightInText:
 	text "Please go right"
 	line "through."
 
@@ -137,7 +141,7 @@
 	line "right away."
 	done
 
-UnknownText_0x9b4d6:
+TrainerHouseB1FPleaseComeAgainText:
 	text "Sorry. Only those"
 	line "trainers who will"
 
@@ -145,7 +149,7 @@
 	line "allowed to go in."
 	done
 
-UnknownText_0x9b51d:
+TrainerHouseB1FSecondChallengeDeniedText:
 	text "I'm sorry."
 	line "This would be your"
 
@@ -156,12 +160,12 @@
 	line "a day."
 	done
 
-UnknownText_0x9b578:
+TrainerHouseB1FCalBeatenText:
 	text "I lost…"
 	line "Darn…"
 	done
 
-UnknownText_0x9b587:
+TrainerHouseB1FCalBeforeText:
 	text "I traveled out"
 	line "here just so I"
 	cont "could battle you."
@@ -177,7 +181,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $3, $7, $0, UnknownScript_0x9b38b, $0, $0
+	xy_trigger 0, $3, $7, $0, TrainerHouseReceptionistScript, $0, $0
 
 .Signposts:
 	db 0
--- a/maps/Underground.asm
+++ b/maps/Underground.asm
@@ -1,3 +1,4 @@
+
 Underground_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,11 +6,11 @@
 .MapCallbacks:
 	db 0
 
-MapUndergroundSignpostItem0:
+UndergroundHiddenFullRestore:
 	dwb EVENT_UNDERGROUND_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
-MapUndergroundSignpostItem1:
+UndergroundHiddenXSpecial:
 	dwb EVENT_UNDERGROUND_HIDDEN_X_SPECIAL, X_SPECIAL
 	
 
@@ -27,8 +28,8 @@
 
 .Signposts:
 	db 2
-	signpost 9, 3, SIGNPOST_ITEM, MapUndergroundSignpostItem0
-	signpost 19, 1, SIGNPOST_ITEM, MapUndergroundSignpostItem1
+	signpost 9, 3, SIGNPOST_ITEM, UndergroundHiddenFullRestore
+	signpost 19, 1, SIGNPOST_ITEM, UndergroundHiddenXSpecial
 
 .PersonEvents:
 	db 0
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -1,10 +1,55 @@
+UNDERGROUND_DOOR_CLOSED1 EQU $2a
+UNDERGROUND_DOOR_CLOSED2 EQU $3e
+UNDERGROUND_DOOR_CLOSED3 EQU $3f
+UNDERGROUND_DOOR_OPEN1   EQU $2d
+UNDERGROUND_DOOR_OPEN2   EQU $3d
+
+ugdoor: macro
+\1_YCOORD EQU \2
+\1_XCOORD EQU \3
+endm
+
+	ugdoor UGDOOR_1,  $10, $06
+	ugdoor UGDOOR_2,  $0a, $06
+	ugdoor UGDOOR_3,  $02, $06
+	ugdoor UGDOOR_4,  $02, $0a
+	ugdoor UGDOOR_5,  $0a, $0a
+	ugdoor UGDOOR_6,  $10, $0a
+	ugdoor UGDOOR_7,  $0c, $06
+	ugdoor UGDOOR_8,  $0c, $08
+	ugdoor UGDOOR_9,  $06, $06
+	ugdoor UGDOOR_10, $06, $08
+	ugdoor UGDOOR_11, $0c, $0a
+	ugdoor UGDOOR_12, $0c, $0c
+	ugdoor UGDOOR_13, $06, $0a
+	ugdoor UGDOOR_14, $06, $0c
+	ugdoor UGDOOR_15, $12, $0a
+	ugdoor UGDOOR_16, $12, $0c
+
+doorstate: macro
+	changeblock UGDOOR_\1_YCOORD, UGDOOR_\1_XCOORD, UNDERGROUND_DOOR_\2
+endm
+
+const_value set 2
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_PHARMACIST1
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_PHARMACIST2
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_ROCKET1
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_ROCKET2
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_ROCKET3
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_ROCKET_GIRL
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_TEACHER
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_SUPER_NERD
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_POKE_BALL1
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_POKE_BALL2
+	const UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
+
 UndergroundPathSwitchRoomEntrances_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x7c9f5, 0
-	dw UnknownScript_0x7c9f6, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 1
@@ -11,158 +56,158 @@
 
 	; callbacks
 
-	dbw 1, UnknownScript_0x7c9f7
+	dbw 1, .UpdateDoorPositions
 
-UnknownScript_0x7c9f5:
+.Trigger0:
 	end
 
-UnknownScript_0x7c9f6:
+.Trigger1:
 	end
 
-UnknownScript_0x7c9f7:
+.UpdateDoorPositions:
 	checkevent EVENT_SWITCH_4
-	iffalse UnknownScript_0x7ca01
-	changeblock $10, $6, $2d
-UnknownScript_0x7ca01:
+	iffalse .false4
+	doorstate 1, OPEN1
+.false4:
 	checkevent EVENT_SWITCH_5
-	iffalse UnknownScript_0x7ca0b
-	changeblock $a, $6, $2d
-UnknownScript_0x7ca0b:
+	iffalse .false5
+	doorstate 2, OPEN1
+.false5:
 	checkevent EVENT_SWITCH_6
-	iffalse UnknownScript_0x7ca15
-	changeblock $2, $6, $2d
-UnknownScript_0x7ca15:
+	iffalse .false6
+	doorstate 3, OPEN1
+.false6:
 	checkevent EVENT_SWITCH_7
-	iffalse UnknownScript_0x7ca1f
-	changeblock $2, $a, $2d
-UnknownScript_0x7ca1f:
+	iffalse .false7
+	doorstate 4, OPEN1
+.false7:
 	checkevent EVENT_SWITCH_8
-	iffalse UnknownScript_0x7ca29
-	changeblock $a, $a, $2d
-UnknownScript_0x7ca29:
+	iffalse .false8
+	doorstate 5, OPEN1
+.false8:
 	checkevent EVENT_SWITCH_9
-	iffalse UnknownScript_0x7ca33
-	changeblock $10, $a, $2d
-UnknownScript_0x7ca33:
+	iffalse .false9
+	doorstate 6, OPEN1
+.false9:
 	checkevent EVENT_SWITCH_10
-	iffalse UnknownScript_0x7ca41
-	changeblock $c, $6, $2a
-	changeblock $c, $8, $2d
-UnknownScript_0x7ca41:
+	iffalse .false10
+	doorstate 7, CLOSED1
+	doorstate 8, OPEN1
+.false10:
 	checkevent EVENT_SWITCH_11
-	iffalse UnknownScript_0x7ca4f
-	changeblock $6, $6, $2a
-	changeblock $6, $8, $2d
-UnknownScript_0x7ca4f:
+	iffalse .false11
+	doorstate 9, CLOSED1
+	doorstate 10, OPEN1
+.false11:
 	checkevent EVENT_SWITCH_12
-	iffalse UnknownScript_0x7ca5d
-	changeblock $c, $a, $2a
-	changeblock $c, $c, $2d
-UnknownScript_0x7ca5d:
+	iffalse .false12
+	doorstate 11, CLOSED1
+	doorstate 12, OPEN1
+.false12:
 	checkevent EVENT_SWITCH_13
-	iffalse UnknownScript_0x7ca6b
-	changeblock $6, $a, $2a
-	changeblock $6, $c, $2d
-UnknownScript_0x7ca6b:
+	iffalse .false13
+	doorstate 13, CLOSED1
+	doorstate 14, OPEN1
+.false13:
 	checkevent EVENT_SWITCH_14
-	iffalse UnknownScript_0x7ca79
-	changeblock $12, $a, $2a
-	changeblock $12, $c, $2d
-UnknownScript_0x7ca79:
+	iffalse .false14
+	doorstate 15, CLOSED1
+	doorstate 16, OPEN1
+.false14:
 	return
 
 SuperNerdScript_0x7ca7a:
-	jumptextfaceplayer UnknownText_0x7d176
+	jumptextfaceplayer UndergroundPathSwitchRoomEntrances_SuperNerdText
 
 TeacherScript_0x7ca7d:
-	jumptextfaceplayer UnknownText_0x7d1d0
+	jumptextfaceplayer UndergroundPathSwitchRoomEntrances_TeacherText
 
-UnknownScript_0x7ca80:
+UndergroundSilverTrigger1:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
 	playsound SFX_EXIT_BUILDING
-	appear $c
-	waitbutton
-	applymovement $c, MovementData_0x7ce87
+	appear UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
+	waitsfx
+	applymovement UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER, UndergroundSilverApproachMovement1
 	spriteface PLAYER, RIGHT
-	scall UnknownScript_0x7cad4
-	applymovement $c, MovementData_0x7ce92
+	scall UndergroundSilverBattleScript
+	applymovement UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER, UndergroundSilverRetreatMovement1
 	playsound SFX_EXIT_BUILDING
-	disappear $c
-	dotrigger $1
-	waitbutton
+	disappear UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
+	dotrigger 1
+	waitsfx
 	playmapmusic
 	end
 
-UnknownScript_0x7caaa:
+UndergroundSilverTrigger2:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
 	playsound SFX_EXIT_BUILDING
-	appear $c
-	waitbutton
-	applymovement $c, MovementData_0x7ce8c
+	appear UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
+	waitsfx
+	applymovement UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER, UndergroundSilverApproachMovement2
 	spriteface PLAYER, RIGHT
-	scall UnknownScript_0x7cad4
-	applymovement $c, MovementData_0x7ce97
+	scall UndergroundSilverBattleScript
+	applymovement UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER, UndergroundSilverRetreatMovement2
 	playsound SFX_EXIT_BUILDING
-	disappear $c
-	dotrigger $1
-	waitbutton
+	disappear UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
+	dotrigger 1
+	waitsfx
 	playmapmusic
 	end
 
-UnknownScript_0x7cad4:
+UndergroundSilverBattleScript:
 	checkevent EVENT_RIVAL_BURNED_TOWER
-	iftrue UnknownScript_0x7cae1
+	iftrue .Continue
 	setevent EVENT_RIVAL_BURNED_TOWER
-	domaptrigger BURNED_TOWER_1F, $1
-UnknownScript_0x7cae1:
+	domaptrigger BURNED_TOWER_1F, 1
+.Continue:
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
-	writetext UnknownText_0x7ce9d
+	opentext
+	writetext UndergroundSilverBeforeText
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RIVAL_UNDERGROUND_PATH
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue UnknownScript_0x7cb09
+	iftrue .Totodile
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue UnknownScript_0x7cb19
-	winlosstext UnknownText_0x7cf5d, UnknownText_0x7d102
-	setlasttalked $c
+	iftrue .Chikorita
+	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
+	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
 	loadtrainer RIVAL1, RIVAL1_12
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x7cb29
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishRivalBattle
 
-UnknownScript_0x7cb09:
-	winlosstext UnknownText_0x7cf5d, UnknownText_0x7d102
-	setlasttalked $c
+.Totodile:
+	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
+	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
 	loadtrainer RIVAL1, RIVAL1_10
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x7cb29
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishRivalBattle
 
-UnknownScript_0x7cb19:
-	winlosstext UnknownText_0x7cf5d, UnknownText_0x7d102
-	setlasttalked $c
+.Chikorita:
+	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
+	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
 	loadtrainer RIVAL1, RIVAL1_11
 	startbattle
-	reloadmapmusic
-	returnafterbattle
-	jump UnknownScript_0x7cb29
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump .FinishRivalBattle
 
-UnknownScript_0x7cb29:
+.FinishRivalBattle:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
-	writetext UnknownText_0x7cfc2
+	opentext
+	writetext UndergroundSilverAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM11:
@@ -169,11 +214,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_11, GRUNTM, 11, GruntM11SeenText, GruntM11BeatenText, 0, GruntM11Script
 
 GruntM11Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d290
+	end_if_just_battled
+	opentext
+	writetext GruntM11AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM25:
@@ -180,11 +225,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_25, GRUNTM, 25, GruntM25SeenText, GruntM25BeatenText, 0, GruntM25Script
 
 GruntM25Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d347
+	end_if_just_battled
+	opentext
+	writetext GruntM25AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBurglarDuncan:
@@ -191,11 +236,11 @@
 	trainer EVENT_BEAT_BURGLAR_DUNCAN, BURGLAR, DUNCAN, BurglarDuncanSeenText, BurglarDuncanBeatenText, 0, BurglarDuncanScript
 
 BurglarDuncanScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d3cf
+	end_if_just_battled
+	opentext
+	writetext BurglarDuncanAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBurglarEddie:
@@ -202,11 +247,11 @@
 	trainer EVENT_BEAT_BURGLAR_EDDIE, BURGLAR, EDDIE, BurglarEddieSeenText, BurglarEddieBeatenText, 0, BurglarEddieScript
 
 BurglarEddieScript:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d45b
+	end_if_just_battled
+	opentext
+	writetext BurglarEddieAfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM13:
@@ -213,11 +258,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_13, GRUNTM, 13, GruntM13SeenText, GruntM13BeatenText, 0, GruntM13Script
 
 GruntM13Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d51f
+	end_if_just_battled
+	opentext
+	writetext GruntM13AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntF3:
@@ -224,380 +269,380 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTF_3, GRUNTF, 3, GruntF3SeenText, GruntF3BeatenText, 0, GruntF3Script
 
 GruntF3Script:
-	talkaftercancel
-	loadfont
-	writetext UnknownText_0x7d5e6
+	end_if_just_battled
+	opentext
+	writetext GruntF3AfterText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-MapUndergroundPathSwitchRoomEntrancesSignpost0Script:
-	loadfont
-	writetext UnknownText_0x7d554
-	keeptextopen
+Switch1Script:
+	opentext
+	writetext SwitchRoomText_Switch1
+	buttonsound
 	checkevent EVENT_SWITCH_1
-	iftrue UnknownScript_0x7cbcb
-	writetext UnknownText_0x7d617
+	iftrue .On
+	writetext SwitchRoomText_OffTurnOn
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
-	addvar $1
+	addvar 1
 	copyvartobyte UndergroundSwitchPositions
 	setevent EVENT_SWITCH_1
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-UnknownScript_0x7cbcb:
-	writetext UnknownText_0x7d62d
+.On:
+	writetext SwitchRoomText_OnTurnOff
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
 	addvar -1
 	copyvartobyte UndergroundSwitchPositions
 	clearevent EVENT_SWITCH_1
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-MapUndergroundPathSwitchRoomEntrancesSignpost1Script:
-	loadfont
-	writetext UnknownText_0x7d643
-	keeptextopen
+Switch2Script:
+	opentext
+	writetext SwitchRoomText_Switch2
+	buttonsound
 	checkevent EVENT_SWITCH_2
-	iftrue UnknownScript_0x7cc00
-	writetext UnknownText_0x7d617
+	iftrue .On
+	writetext SwitchRoomText_OffTurnOn
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
-	addvar $2
+	addvar 2
 	copyvartobyte UndergroundSwitchPositions
 	setevent EVENT_SWITCH_2
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-UnknownScript_0x7cc00:
-	writetext UnknownText_0x7d62d
+.On:
+	writetext SwitchRoomText_OnTurnOff
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
 	addvar -2
 	copyvartobyte UndergroundSwitchPositions
 	clearevent EVENT_SWITCH_2
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-MapUndergroundPathSwitchRoomEntrancesSignpost2Script:
-	loadfont
-	writetext UnknownText_0x7d65a
-	keeptextopen
+Switch3Script:
+	opentext
+	writetext SwitchRoomText_Switch3
+	buttonsound
 	checkevent EVENT_SWITCH_3
-	iftrue UnknownScript_0x7cc35
-	writetext UnknownText_0x7d617
+	iftrue .On
+	writetext SwitchRoomText_OffTurnOn
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
-	addvar $3
+	addvar 3
 	copyvartobyte UndergroundSwitchPositions
 	setevent EVENT_SWITCH_3
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-UnknownScript_0x7cc35:
-	writetext UnknownText_0x7d62d
+.On:
+	writetext SwitchRoomText_OnTurnOff
 	yesorno
-	iffalse UnknownScript_0x7cc8b
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
 	copybytetovar UndergroundSwitchPositions
 	addvar -3
 	copyvartobyte UndergroundSwitchPositions
 	clearevent EVENT_SWITCH_3
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-MapUndergroundPathSwitchRoomEntrancesSignpost3Script:
-	loadfont
-	writetext UnknownText_0x7d671
-	keeptextopen
+EmergencySwitchScript:
+	opentext
+	writetext SwitchRoomText_Emergency
+	buttonsound
 	checkevent EVENT_EMERGENCY_SWITCH
-	iftrue UnknownScript_0x7cc70
-	writetext UnknownText_0x7d617
+	iftrue .On
+	writetext SwitchRoomText_OffTurnOn
 	yesorno
-	iffalse UnknownScript_0x7cc8b
-	writebyte $7
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
+	writebyte 7
 	copyvartobyte UndergroundSwitchPositions
 	setevent EVENT_EMERGENCY_SWITCH
 	setevent EVENT_SWITCH_1
 	setevent EVENT_SWITCH_2
 	setevent EVENT_SWITCH_3
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-UnknownScript_0x7cc70:
-	writetext UnknownText_0x7d62d
+.On:
+	writetext SwitchRoomText_OnTurnOff
 	yesorno
-	iffalse UnknownScript_0x7cc8b
-	writebyte $0
+	iffalse UndergroundPathSwitchRoomEntrances_DontToggle
+	writebyte 0
 	copyvartobyte UndergroundSwitchPositions
 	clearevent EVENT_EMERGENCY_SWITCH
 	clearevent EVENT_SWITCH_1
 	clearevent EVENT_SWITCH_2
 	clearevent EVENT_SWITCH_3
-	jump UnknownScript_0x7cc8d
+	jump UndergroundPathSwitchRoomEntrances_UpdateDoors
 
-UnknownScript_0x7cc8b:
-	loadmovesprites
+UndergroundPathSwitchRoomEntrances_DontToggle:
+	closetext
 	end
 
-UnknownScript_0x7cc8d:
+UndergroundPathSwitchRoomEntrances_UpdateDoors:
 	copybytetovar UndergroundSwitchPositions
-	if_equal $0, UnknownScript_0x7ccb0
-	if_equal $1, UnknownScript_0x7ccd7
-	if_equal $2, UnknownScript_0x7ccf2
-	if_equal $3, UnknownScript_0x7cd0d
-	if_equal $4, UnknownScript_0x7cd28
-	if_equal $5, UnknownScript_0x7cd43
-	if_equal $6, UnknownScript_0x7cd5e
-	if_equal $7, UnknownScript_0x7cd79
-UnknownScript_0x7ccb0:
+	if_equal 0, .Position0
+	if_equal 1, .Position1
+	if_equal 2, .Position2
+	if_equal 3, .Position3
+	if_equal 4, .Position4
+	if_equal 5, .Position5
+	if_equal 6, .Position6
+	if_equal 7, .EmergencyPosition
+.Position0:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7ce11
-	scall UnknownScript_0x7ce19
-	scall UnknownScript_0x7ce21
-	scall UnknownScript_0x7ce29
-	scall UnknownScript_0x7ce31
-	scall UnknownScript_0x7ce39
-	scall UnknownScript_0x7ce41
-	scall UnknownScript_0x7ce4d
-	scall UnknownScript_0x7ce59
-	scall UnknownScript_0x7ce65
-	scall UnknownScript_0x7ce71
+	scall .Clear4
+	scall .Clear5
+	scall .Clear6
+	scall .Clear7
+	scall .Clear8
+	scall .Clear9
+	scall .Clear10
+	scall .Clear11
+	scall .Clear12
+	scall .Clear13
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7ccd7:
+.Position1:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cda5
-	scall UnknownScript_0x7cdd5
-	scall UnknownScript_0x7cdf9
-	scall UnknownScript_0x7ce39
-	scall UnknownScript_0x7ce4d
-	scall UnknownScript_0x7ce59
-	scall UnknownScript_0x7ce71
+	scall .Set4
+	scall .Set10
+	scall .Set13
+	scall .Clear9
+	scall .Clear11
+	scall .Clear12
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7ccf2:
+.Position2:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cdad
-	scall UnknownScript_0x7cde1
-	scall UnknownScript_0x7cded
-	scall UnknownScript_0x7ce31
-	scall UnknownScript_0x7ce41
-	scall UnknownScript_0x7ce65
-	scall UnknownScript_0x7ce71
+	scall .Set5
+	scall .Set11
+	scall .Set12
+	scall .Clear8
+	scall .Clear10
+	scall .Clear13
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7cd0d:
+.Position3:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cdb5
-	scall UnknownScript_0x7cdd5
-	scall UnknownScript_0x7cdf9
-	scall UnknownScript_0x7ce29
-	scall UnknownScript_0x7ce4d
-	scall UnknownScript_0x7ce59
-	scall UnknownScript_0x7ce71
+	scall .Set6
+	scall .Set10
+	scall .Set13
+	scall .Clear7
+	scall .Clear11
+	scall .Clear12
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7cd28:
+.Position4:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cdbd
-	scall UnknownScript_0x7cde1
-	scall UnknownScript_0x7cded
-	scall UnknownScript_0x7ce21
-	scall UnknownScript_0x7ce41
-	scall UnknownScript_0x7ce65
-	scall UnknownScript_0x7ce71
+	scall .Set7
+	scall .Set11
+	scall .Set12
+	scall .Clear6
+	scall .Clear10
+	scall .Clear13
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7cd43:
+.Position5:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cdc5
-	scall UnknownScript_0x7cdd5
-	scall UnknownScript_0x7cdf9
-	scall UnknownScript_0x7ce19
-	scall UnknownScript_0x7ce4d
-	scall UnknownScript_0x7ce59
-	scall UnknownScript_0x7ce71
+	scall .Set8
+	scall .Set10
+	scall .Set13
+	scall .Clear5
+	scall .Clear11
+	scall .Clear12
+	scall .Clear14
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7cd5e:
+.Position6:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7cdcd
-	scall UnknownScript_0x7cde1
-	scall UnknownScript_0x7cded
-	scall UnknownScript_0x7ce05
-	scall UnknownScript_0x7ce11
-	scall UnknownScript_0x7ce41
-	scall UnknownScript_0x7ce65
+	scall .Set9
+	scall .Set11
+	scall .Set12
+	scall .Set14
+	scall .Clear4
+	scall .Clear10
+	scall .Clear13
 	reloadmappart
-	loadmovesprites
+	closetext
 	end
 
-UnknownScript_0x7cd79:
+.EmergencyPosition:
 	playsound SFX_ENTER_DOOR
-	scall UnknownScript_0x7ce11
-	scall UnknownScript_0x7ce19
-	scall UnknownScript_0x7cdb5
-	scall UnknownScript_0x7ce29
-	scall UnknownScript_0x7cdc5
-	scall UnknownScript_0x7cdcd
-	scall UnknownScript_0x7ce41
-	scall UnknownScript_0x7cde1
-	scall UnknownScript_0x7cded
-	scall UnknownScript_0x7ce65
-	scall UnknownScript_0x7ce05
+	scall .Clear4
+	scall .Clear5
+	scall .Set6
+	scall .Clear7
+	scall .Set8
+	scall .Set9
+	scall .Clear10
+	scall .Set11
+	scall .Set12
+	scall .Clear13
+	scall .Set14
 	reloadmappart
-	loadmovesprites
-	writebyte $6
+	closetext
+	writebyte 6
 	copyvartobyte UndergroundSwitchPositions
 	end
 
-UnknownScript_0x7cda5:
-	changeblock $10, $6, $2d
+.Set4:
+	doorstate 1, OPEN1
 	setevent EVENT_SWITCH_4
 	end
 
-UnknownScript_0x7cdad:
-	changeblock $a, $6, $2d
+.Set5:
+	doorstate 2, OPEN1
 	setevent EVENT_SWITCH_5
 	end
 
-UnknownScript_0x7cdb5:
-	changeblock $2, $6, $2d
+.Set6:
+	doorstate 3, OPEN1
 	setevent EVENT_SWITCH_6
 	end
 
-UnknownScript_0x7cdbd:
-	changeblock $2, $a, $2d
+.Set7:
+	doorstate 4, OPEN1
 	setevent EVENT_SWITCH_7
 	end
 
-UnknownScript_0x7cdc5:
-	changeblock $a, $a, $2d
+.Set8:
+	doorstate 5, OPEN1
 	setevent EVENT_SWITCH_8
 	end
 
-UnknownScript_0x7cdcd:
-	changeblock $10, $a, $2d
+.Set9:
+	doorstate 6, OPEN1
 	setevent EVENT_SWITCH_9
 	end
 
-UnknownScript_0x7cdd5:
-	changeblock $c, $6, $2a
-	changeblock $c, $8, $2d
+.Set10:
+	doorstate 7, CLOSED1
+	doorstate 8, OPEN1
 	setevent EVENT_SWITCH_10
 	end
 
-UnknownScript_0x7cde1:
-	changeblock $6, $6, $2a
-	changeblock $6, $8, $2d
+.Set11:
+	doorstate 9, CLOSED1
+	doorstate 10, OPEN1
 	setevent EVENT_SWITCH_11
 	end
 
-UnknownScript_0x7cded:
-	changeblock $c, $a, $2a
-	changeblock $c, $c, $2d
+.Set12:
+	doorstate 11, CLOSED1
+	doorstate 12, OPEN1
 	setevent EVENT_SWITCH_12
 	end
 
-UnknownScript_0x7cdf9:
-	changeblock $6, $a, $2a
-	changeblock $6, $c, $2d
+.Set13:
+	doorstate 13, CLOSED1
+	doorstate 14, OPEN1
 	setevent EVENT_SWITCH_13
 	end
 
-UnknownScript_0x7ce05:
-	changeblock $12, $a, $2a
-	changeblock $12, $c, $2d
+.Set14:
+	doorstate 15, CLOSED1
+	doorstate 16, OPEN1
 	setevent EVENT_SWITCH_14
 	end
 
-UnknownScript_0x7ce11:
-	changeblock $10, $6, $3e
+.Clear4:
+	doorstate 1, CLOSED2
 	clearevent EVENT_SWITCH_4
 	end
 
-UnknownScript_0x7ce19:
-	changeblock $a, $6, $3e
+.Clear5:
+	doorstate 2, CLOSED2
 	clearevent EVENT_SWITCH_5
 	end
 
-UnknownScript_0x7ce21:
-	changeblock $2, $6, $3e
+.Clear6:
+	doorstate 3, CLOSED2
 	clearevent EVENT_SWITCH_6
 	end
 
-UnknownScript_0x7ce29:
-	changeblock $2, $a, $3e
+.Clear7:
+	doorstate 4, CLOSED2
 	clearevent EVENT_SWITCH_7
 	end
 
-UnknownScript_0x7ce31:
-	changeblock $a, $a, $3e
+.Clear8:
+	doorstate 5, CLOSED2
 	clearevent EVENT_SWITCH_8
 	end
 
-UnknownScript_0x7ce39:
-	changeblock $10, $a, $3e
+.Clear9:
+	doorstate 6, CLOSED2
 	clearevent EVENT_SWITCH_9
 	end
 
-UnknownScript_0x7ce41:
-	changeblock $c, $6, $3f
-	changeblock $c, $8, $3d
+.Clear10:
+	doorstate 7, CLOSED3
+	doorstate 8, OPEN2
 	clearevent EVENT_SWITCH_10
 	end
 
-UnknownScript_0x7ce4d:
-	changeblock $6, $6, $3f
-	changeblock $6, $8, $3d
+.Clear11:
+	doorstate 9, CLOSED3
+	doorstate 10, OPEN2
 	clearevent EVENT_SWITCH_11
 	end
 
-UnknownScript_0x7ce59:
-	changeblock $c, $a, $3f
-	changeblock $c, $c, $3d
+.Clear12:
+	doorstate 11, CLOSED3
+	doorstate 12, OPEN2
 	clearevent EVENT_SWITCH_12
 	end
 
-UnknownScript_0x7ce65:
-	changeblock $6, $a, $3f
-	changeblock $6, $c, $3d
+.Clear13:
+	doorstate 13, CLOSED3
+	doorstate 14, OPEN2
 	clearevent EVENT_SWITCH_13
 	end
 
-UnknownScript_0x7ce71:
-	changeblock $12, $a, $3f
-	changeblock $12, $c, $3d
+.Clear14:
+	doorstate 15, CLOSED3
+	doorstate 16, OPEN2
 	clearevent EVENT_SWITCH_14
 	end
 
-ItemFragment_0x7ce7d:
-	db SMOKE_BALL, 1
+UndergroundPathSwitchRoomEntrancesSmokeBall:
+	itemball SMOKE_BALL
 
-ItemFragment_0x7ce7f:
-	db FULL_HEAL, 1
+UndergroundPathSwitchRoomEntrancesFullHeal:
+	itemball FULL_HEAL
 
-MapUndergroundPathSwitchRoomEntrancesSignpostItem4:
+UndergroundPathSwitchRoomEntrancesHiddenMaxPotion:
 	dwb EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_MAX_POTION, MAX_POTION
 	
 
-MapUndergroundPathSwitchRoomEntrancesSignpostItem5:
+UndergroundPathSwitchRoomEntrancesHiddenRevive:
 	dwb EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HIDDEN_REVIVE, REVIVE
 	
 
-MovementData_0x7ce87:
+UndergroundSilverApproachMovement1:
 	step_down
 	step_left
 	step_left
@@ -604,7 +649,7 @@
 	step_left
 	step_end
 
-MovementData_0x7ce8c:
+UndergroundSilverApproachMovement2:
 	step_down
 	step_down
 	step_left
@@ -612,7 +657,7 @@
 	step_left
 	step_end
 
-MovementData_0x7ce92:
+UndergroundSilverRetreatMovement1:
 	step_right
 	step_right
 	step_right
@@ -619,7 +664,7 @@
 	step_up
 	step_end
 
-MovementData_0x7ce97:
+UndergroundSilverRetreatMovement2:
 	step_right
 	step_right
 	step_right
@@ -627,7 +672,7 @@
 	step_up
 	step_end
 
-UnknownText_0x7ce9d:
+UndergroundSilverBeforeText:
 	text "Hold it!"
 
 	para "I saw you, so I"
@@ -650,7 +695,7 @@
 	line "debts!"
 	done
 
-UnknownText_0x7cf5d:
+UndergroundSilverWinText:
 	text "…Why…"
 	line "Why do I lose?"
 
@@ -663,7 +708,7 @@
 	para "So why do I lose?"
 	done
 
-UnknownText_0x7cfc2:
+UndergroundSilverAfterText:
 	text "…I don't under-"
 	line "stand…"
 
@@ -699,7 +744,7 @@
 	line "#MON trainer!"
 	done
 
-UnknownText_0x7d102:
+UndergroundSilverLossText:
 	text "Humph. This is my"
 	line "real power, wimp."
 
@@ -711,7 +756,7 @@
 	cont "under my heels."
 	done
 
-UnknownText_0x7d176:
+UndergroundPathSwitchRoomEntrances_SuperNerdText:
 	text "I was challenged"
 	line "to a battle down-"
 	cont "stairs."
@@ -721,7 +766,7 @@
 	cont "better be careful."
 	done
 
-UnknownText_0x7d1d0:
+UndergroundPathSwitchRoomEntrances_TeacherText:
 	text "There are some"
 	line "shops downstairs…"
 
@@ -745,7 +790,7 @@
 	line "by indecision!"
 	done
 
-UnknownText_0x7d290:
+GruntM11AfterText:
 	text "I'm confused too…"
 	line "The switch on the"
 
@@ -769,7 +814,7 @@
 	line "I blew it."
 	done
 
-UnknownText_0x7d347:
+GruntM25AfterText:
 	text "All right. A hint!"
 
 	para "Change the order"
@@ -789,7 +834,7 @@
 	text "Mercy!"
 	done
 
-UnknownText_0x7d3cf:
+BurglarDuncanAfterText:
 	text "Steal and sell!"
 	line "That's basic in"
 	cont "crime, kid!"
@@ -808,7 +853,7 @@
 	text "Over the top!"
 	done
 
-UnknownText_0x7d45b:
+BurglarEddieAfterText:
 	text "UNDERGROUND WARE-"
 	line "HOUSE?"
 
@@ -833,13 +878,13 @@
 	line "you're cool, huh?"
 	done
 
-UnknownText_0x7d51f:
+GruntM13AfterText:
 	text "You must have ice"
 	line "in your veins to"
 	cont "dis TEAM ROCKET."
 	done
 
-UnknownText_0x7d554:
+SwitchRoomText_Switch1:
 	text "It's labeled"
 	line "SWITCH 1."
 	done
@@ -860,33 +905,33 @@
 	text "How could you?"
 	done
 
-UnknownText_0x7d5e6:
+GruntF3AfterText:
 	text "Go wherever you'd"
 	line "like! Get lost!"
 	cont "See if I care!"
 	done
 
-UnknownText_0x7d617:
+SwitchRoomText_OffTurnOn:
 	text "It's OFF."
 	line "Turn it ON?"
 	done
 
-UnknownText_0x7d62d:
+SwitchRoomText_OnTurnOff:
 	text "It's ON."
 	line "Turn it OFF?"
 	done
 
-UnknownText_0x7d643:
+SwitchRoomText_Switch2:
 	text "It's labeled"
 	line "SWITCH 2."
 	done
 
-UnknownText_0x7d65a:
+SwitchRoomText_Switch3:
 	text "It's labeled"
 	line "SWITCH 3."
 	done
 
-UnknownText_0x7d671:
+SwitchRoomText_Emergency:
 	text "It's labeled"
 	line "EMERGENCY."
 	done
@@ -909,17 +954,17 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $13, $0, UnknownScript_0x7ca80, $0, $0
-	xy_trigger 0, $5, $13, $0, UnknownScript_0x7caaa, $0, $0
+	xy_trigger 0, $4, $13, $0, UndergroundSilverTrigger1, $0, 0
+	xy_trigger 0, $5, $13, $0, UndergroundSilverTrigger2, $0, 0
 
 .Signposts:
 	db 6
-	signpost 1, 16, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost0Script
-	signpost 1, 10, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost1Script
-	signpost 1, 2, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost2Script
-	signpost 11, 20, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost3Script
-	signpost 9, 8, SIGNPOST_ITEM, MapUndergroundPathSwitchRoomEntrancesSignpostItem4
-	signpost 8, 1, SIGNPOST_ITEM, MapUndergroundPathSwitchRoomEntrancesSignpostItem5
+	signpost 1, 16, SIGNPOST_READ, Switch1Script
+	signpost 1, 10, SIGNPOST_READ, Switch2Script
+	signpost 1, 2, SIGNPOST_READ, Switch3Script
+	signpost 11, 20, SIGNPOST_READ, EmergencySwitchScript
+	signpost 9, 8, SIGNPOST_ITEM, UndergroundPathSwitchRoomEntrancesHiddenMaxPotion
+	signpost 8, 1, SIGNPOST_ITEM, UndergroundPathSwitchRoomEntrancesHiddenRevive
 
 .PersonEvents:
 	db 11
@@ -931,6 +976,6 @@
 	person_event SPRITE_ROCKET_GIRL, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerGruntF3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_TEACHER, 27, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7ca7d, -1
 	person_event SPRITE_SUPER_NERD, 27, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7ca7a, -1
-	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMFRAGMENT, 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, PERSONTYPE_ITEMBALL, 0, UndergroundPathSwitchRoomEntrancesSmokeBall, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
+	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UndergroundPathSwitchRoomEntrancesFullHeal, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_FULL_HEAL
 	person_event SPRITE_SILVER, 3, 23, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_UNDERGROUND_PATH
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const UNDERGROUNDWAREHOUSE_ROCKET1
+	const UNDERGROUNDWAREHOUSE_ROCKET2
+	const UNDERGROUNDWAREHOUSE_ROCKET3
+	const UNDERGROUNDWAREHOUSE_GENTLEMAN
+	const UNDERGROUNDWAREHOUSE_POKE_BALL1
+	const UNDERGROUNDWAREHOUSE_POKE_BALL2
+	const UNDERGROUNDWAREHOUSE_POKE_BALL3
+
 UndergroundWarehouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -33,11 +42,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_24, GRUNTM, 24, GruntM24SeenText, GruntM24BeatenText, 0, GruntM24Script
 
 GruntM24Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7da48
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM14:
@@ -44,11 +53,11 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_14, GRUNTM, 14, GruntM14SeenText, GruntM14BeatenText, 0, GruntM14Script
 
 GruntM14Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7db01
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGruntM15:
@@ -55,20 +64,20 @@
 	trainer EVENT_BEAT_ROCKET_GRUNTM_15, GRUNTM, 15, GruntM15SeenText, GruntM15BeatenText, 0, GruntM15Script
 
 GruntM15Script:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7db8e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GentlemanScript_0x7d9bf:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_RECEIVED_CARD_KEY
 	iftrue UnknownScript_0x7d9de
 	writetext UnknownText_0x7dbc6
-	keeptextopen
+	buttonsound
 	verbosegiveitem CARD_KEY
 	setevent EVENT_RECEIVED_CARD_KEY
 	setevent EVENT_WAREHOUSE_LAYOUT_1
@@ -75,21 +84,21 @@
 	clearevent EVENT_WAREHOUSE_LAYOUT_2
 	clearevent EVENT_WAREHOUSE_LAYOUT_3
 	writetext UnknownText_0x7dc5b
-	keeptextopen
+	buttonsound
 UnknownScript_0x7d9de:
 	writetext UnknownText_0x7dc8d
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x7d9e4:
-	db MAX_ETHER, 1
+UndergroundWarehouseMaxEther:
+	itemball MAX_ETHER
 
-ItemFragment_0x7d9e6:
-	db TM_SLEEP_TALK, 1
+UndergroundWarehouseTMSleepTalk:
+	itemball TM_SLEEP_TALK
 
-ItemFragment_0x7d9e8:
-	db ULTRA_BALL, 1
+UndergroundWarehouseUltraBall:
+	itemball ULTRA_BALL
 
 GruntM24SeenText:
 	text "How did you get"
@@ -226,6 +235,6 @@
 	person_event SPRITE_ROCKET, 15, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM14, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 3, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 4, TrainerGruntM15, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_GENTLEMAN, 8, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x7d9bf, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_POKE_BALL, 15, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7d9e4, EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
-	person_event SPRITE_POKE_BALL, 9, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7d9e6, EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
-	person_event SPRITE_POKE_BALL, 1, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7d9e8, EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 15, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UndergroundWarehouseMaxEther, EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 9, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UndergroundWarehouseTMSleepTalk, EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
+	person_event SPRITE_POKE_BALL, 1, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UndergroundWarehouseUltraBall, EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const UNIONCAVE1F_POKEFAN_M1
+	const UNIONCAVE1F_SUPER_NERD
+	const UNIONCAVE1F_POKEFAN_M2
+	const UNIONCAVE1F_FISHER1
+	const UNIONCAVE1F_FISHER2
+	const UNIONCAVE1F_POKE_BALL1
+	const UNIONCAVE1F_POKE_BALL2
+	const UNIONCAVE1F_POKE_BALL3
+	const UNIONCAVE1F_POKE_BALL4
+
 UnionCave1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +20,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_LARRY, POKEMANIAC, LARRY, PokemaniacLarrySeenText, PokemaniacLarryBeatenText, 0, PokemaniacLarryScript
 
 PokemaniacLarryScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x59d31
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerRussell:
@@ -20,11 +31,11 @@
 	trainer EVENT_BEAT_HIKER_RUSSELL, HIKER, RUSSELL, HikerRussellSeenText, HikerRussellBeatenText, 0, HikerRussellScript
 
 HikerRussellScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x59c6c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerDaniel:
@@ -31,11 +42,11 @@
 	trainer EVENT_BEAT_HIKER_DANIEL, HIKER, DANIEL, HikerDanielSeenText, HikerDanielBeatenText, 0, HikerDanielScript
 
 HikerDanielScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x59dc9
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFirebreatherBill:
@@ -42,11 +53,11 @@
 	trainer EVENT_BEAT_FIREBREATHER_BILL, FIREBREATHER, BILL, FirebreatherBillSeenText, FirebreatherBillBeatenText, 0, FirebreatherBillScript
 
 FirebreatherBillScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x59e6f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerFirebreatherRay:
@@ -53,24 +64,24 @@
 	trainer EVENT_BEAT_FIREBREATHER_RAY, FIREBREATHER, RAY, FirebreatherRaySeenText, FirebreatherRayBeatenText, 0, FirebreatherRayScript
 
 FirebreatherRayScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x59efc
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x59c00:
-	db GREAT_BALL, 1
+UnionCave1FGreatBall:
+	itemball GREAT_BALL
 
-ItemFragment_0x59c02:
-	db X_ATTACK, 1
+UnionCave1FXAttack:
+	itemball X_ATTACK
 
-ItemFragment_0x59c04:
-	db POTION, 1
+UnionCave1FPotion:
+	itemball POTION
 
-ItemFragment_0x59c06:
-	db AWAKENING, 1
+UnionCave1FAwakening:
+	itemball AWAKENING
 
 UnknownScript_0x59c08:
 	jumptext UnknownText_0x59f29
@@ -212,7 +223,7 @@
 	person_event SPRITE_POKEFAN_M, 8, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerRussell, -1
 	person_event SPRITE_FISHER, 27, 15, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherRay, -1
 	person_event SPRITE_FISHER, 19, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherBill, -1
-	person_event SPRITE_POKE_BALL, 21, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x59c00, EVENT_UNION_CAVE_1F_GREAT_BALL
-	person_event SPRITE_POKE_BALL, 2, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x59c02, EVENT_UNION_CAVE_1F_X_ATTACK
-	person_event SPRITE_POKE_BALL, 17, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x59c04, EVENT_UNION_CAVE_1F_POTION
-	person_event SPRITE_POKE_BALL, 33, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x59c06, EVENT_UNION_CAVE_1F_AWAKENING
+	person_event SPRITE_POKE_BALL, 21, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FGreatBall, EVENT_UNION_CAVE_1F_GREAT_BALL
+	person_event SPRITE_POKE_BALL, 2, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FXAttack, EVENT_UNION_CAVE_1F_X_ATTACK
+	person_event SPRITE_POKE_BALL, 17, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FPotion, EVENT_UNION_CAVE_1F_POTION
+	person_event SPRITE_POKE_BALL, 33, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FAwakening, EVENT_UNION_CAVE_1F_AWAKENING
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -1,3 +1,12 @@
+const_value set 2
+	const UNIONCAVEB1F_POKEFAN_M1
+	const UNIONCAVEB1F_POKEFAN_M2
+	const UNIONCAVEB1F_SUPER_NERD1
+	const UNIONCAVEB1F_SUPER_NERD2
+	const UNIONCAVEB1F_POKE_BALL1
+	const UNIONCAVEB1F_BOULDER
+	const UNIONCAVEB1F_POKE_BALL2
+
 UnionCaveB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -9,11 +18,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_ANDREW, POKEMANIAC, ANDREW, PokemaniacAndrewSeenText, PokemaniacAndrewBeatenText, 0, PokemaniacAndrewScript
 
 PokemaniacAndrewScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a181
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacCalvin:
@@ -20,11 +29,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_CALVIN, POKEMANIAC, CALVIN, PokemaniacCalvinSeenText, PokemaniacCalvinBeatenText, 0, PokemaniacCalvinScript
 
 PokemaniacCalvinScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a230
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerPhillip:
@@ -31,11 +40,11 @@
 	trainer EVENT_BEAT_HIKER_PHILLIP, HIKER, PHILLIP, HikerPhillipSeenText, HikerPhillipBeatenText, 0, HikerPhillipScript
 
 HikerPhillipScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a073
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerHikerLeonard:
@@ -42,18 +51,18 @@
 	trainer EVENT_BEAT_HIKER_LEONARD, HIKER, LEONARD, HikerLeonardSeenText, HikerLeonardBeatenText, 0, HikerLeonardScript
 
 HikerLeonardScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a0fb
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x5a016:
-	db TM_SWIFT, 1
+UnionCaveB1FTMSwift:
+	itemball TM_SWIFT
 
-ItemFragment_0x5a018:
-	db X_DEFEND, 1
+UnionCaveB1FXDefend:
+	itemball X_DEFEND
 
 UnionCaveB1FBoulder:
 	jumpstd strengthboulder
@@ -167,6 +176,6 @@
 	person_event SPRITE_POKEFAN_M, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerLeonard, -1
 	person_event SPRITE_SUPER_NERD, 32, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacAndrew, -1
 	person_event SPRITE_SUPER_NERD, 30, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacCalvin, -1
-	person_event SPRITE_POKE_BALL, 16, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5a016, EVENT_UNION_CAVE_B1F_TM_SWIFT
+	person_event SPRITE_POKE_BALL, 16, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB1FTMSwift, EVENT_UNION_CAVE_B1F_TM_SWIFT
 	person_event SPRITE_BOULDER, 10, 7, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, UnionCaveB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 23, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5a018, EVENT_UNION_CAVE_B1F_X_DEFEND
+	person_event SPRITE_POKE_BALL, 23, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB1FXDefend, EVENT_UNION_CAVE_B1F_X_DEFEND
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const UNIONCAVEB2F_ROCKER
+	const UNIONCAVEB2F_COOLTRAINER_F1
+	const UNIONCAVEB2F_COOLTRAINER_F2
+	const UNIONCAVEB2F_POKE_BALL1
+	const UNIONCAVEB2F_POKE_BALL2
+	const UNIONCAVEB2F_SURF
+
 UnionCaveB2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -15,21 +23,21 @@
 	checkcode VAR_WEEKDAY
 	if_equal FRIDAY, UnknownScript_0x5a31c
 UnknownScript_0x5a319:
-	disappear $7
+	disappear UNIONCAVEB2F_SURF
 	return
 
 UnknownScript_0x5a31c:
-	appear $7
+	appear UNIONCAVEB2F_SURF
 	return
 
 SurfScript_0x5a31f:
 	faceplayer
 	cry LAPRAS
-	loadpokedata LAPRAS, 20
+	loadwildmon LAPRAS, 20
 	startbattle
-	disappear $7
+	disappear UNIONCAVEB2F_SURF
 	setflag ENGINE_UNION_CAVE_LAPRAS
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 TrainerCooltrainermNick:
@@ -36,11 +44,11 @@
 	trainer EVENT_BEAT_COOLTRAINERM_NICK, COOLTRAINERM, NICK, CooltrainermNickSeenText, CooltrainermNickBeatenText, 0, CooltrainermNickScript
 
 CooltrainermNickScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a3f0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfGwen:
@@ -47,11 +55,11 @@
 	trainer EVENT_BEAT_COOLTRAINERF_GWEN, COOLTRAINERF, GWEN, CooltrainerfGwenSeenText, CooltrainerfGwenBeatenText, 0, CooltrainerfGwenScript
 
 CooltrainerfGwenScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a488
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerCooltrainerfEmma:
@@ -58,18 +66,18 @@
 	trainer EVENT_BEAT_COOLTRAINERF_EMMA, COOLTRAINERF, EMMA, CooltrainerfEmmaSeenText, CooltrainerfEmmaBeatenText, 0, CooltrainerfEmmaScript
 
 CooltrainerfEmmaScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x5a52b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x5a36a:
-	db ELIXER, 1
+UnionCaveB2FElixer:
+	itemball ELIXER
 
-ItemFragment_0x5a36c:
-	db HYPER_POTION, 1
+UnionCaveB2FHyperPotion:
+	itemball HYPER_POTION
 
 CooltrainermNickSeenText:
 	text "There are two"
@@ -155,6 +163,6 @@
 	person_event SPRITE_ROCKER, 19, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermNick, -1
 	person_event SPRITE_COOLTRAINER_F, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfGwen, -1
 	person_event SPRITE_COOLTRAINER_F, 30, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfEmma, -1
-	person_event SPRITE_POKE_BALL, 2, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5a36a, EVENT_UNION_CAVE_B2F_ELIXER
-	person_event SPRITE_POKE_BALL, 19, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x5a36c, EVENT_UNION_CAVE_B2F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 2, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB2FElixer, EVENT_UNION_CAVE_B2F_ELIXER
+	person_event SPRITE_POKE_BALL, 19, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB2FHyperPotion, EVENT_UNION_CAVE_B2F_HYPER_POTION
 	person_event SPRITE_SURF, 31, 11, SPRITEMOVEDATA_LAPRAS, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SurfScript_0x5a31f, EVENT_UNION_CAVE_B2F_LAPRAS
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const VERMILIONCITY_TEACHER
+	const VERMILIONCITY_GRAMPS
+	const VERMILIONCITY_MACHOP
+	const VERMILIONCITY_SUPER_NERD
+	const VERMILIONCITY_BIG_SNORLAX
+	const VERMILIONCITY_POKEFAN_M
+
 VermilionCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -19,16 +27,16 @@
 	jumptextfaceplayer UnknownText_0x1aaa6f
 
 VermilionMachop:
-	loadfont
+	opentext
 	writetext UnknownText_0x1aaaca
 	cry MACHOP
+	waitbutton
 	closetext
-	loadmovesprites
 	earthquake 30
-	loadfont
+	opentext
 	writetext UnknownText_0x1aaae2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x1aa99b:
@@ -35,12 +43,12 @@
 	jumptextfaceplayer UnknownText_0x1aab1a
 
 VermilionSnorlax:
-	loadfont
+	opentext
 	special SpecialSnorlaxAwake
 	iftrue UnknownScript_0x1aa9ab
 	writetext UnknownText_0x1aab64
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1aa9ab:
@@ -47,18 +55,18 @@
 	writetext UnknownText_0x1aab84
 	pause 15
 	cry SNORLAX
-	loadmovesprites
+	closetext
 	writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
-	loadpokedata SNORLAX, 50
+	loadwildmon SNORLAX, 50
 	startbattle
-	disappear $6
+	disappear VERMILIONCITY_BIG_SNORLAX
 	setevent EVENT_FOUGHT_SNORLAX
-	returnafterbattle
+	reloadmapafterbattle
 	end
 
 VermilionGymBadgeGuy:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 	iftrue .AlreadyGotItem
 	checkcode VAR_BADGES
@@ -66,33 +74,33 @@
 	if_greater_than 13, .MostBadges
 	if_greater_than 9, .SomeBadges
 	writetext UnknownText_0x1aabc8
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SomeBadges
 	writetext UnknownText_0x1aac2b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .MostBadges
 	writetext UnknownText_0x1aac88
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AllBadges
 	writetext UnknownText_0x1aacf3
-	keeptextopen
+	buttonsound
 	verbosegiveitem HP_UP
 	iffalse .Done
 	setevent EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 .AlreadyGotItem
 	writetext UnknownText_0x1aad4a
-	closetext
+	waitbutton
 .Done
-	loadmovesprites
+	closetext
 	end
 
 VermilionCitySign:
@@ -116,7 +124,7 @@
 VermilionCityMartSign:
 	jumpstd martsign
 
-MapVermilionCitySignpostItem7:
+VermilionCityHiddenFullHeal:
 	dwb EVENT_VERMILION_CITY_HIDDEN_FULL_HEAL, FULL_HEAL
 
 UnknownText_0x1aaa15:
@@ -290,7 +298,7 @@
 	signpost 15, 27, SIGNPOST_READ, VermilionCityPortSign
 	signpost 5, 10, SIGNPOST_READ, VermilionCityPokeCenterSign
 	signpost 13, 22, SIGNPOST_READ, VermilionCityMartSign
-	signpost 19, 12, SIGNPOST_ITEM, MapVermilionCitySignpostItem7
+	signpost 19, 12, SIGNPOST_ITEM, VermilionCityHiddenFullHeal
 
 .PersonEvents:
 	db 6
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const VERMILIONGYM_SURGE
+	const VERMILIONGYM_GENTLEMAN
+	const VERMILIONGYM_ROCKER
+	const VERMILIONGYM_SUPER_NERD
+	const VERMILIONGYM_GYM_GUY
+
 VermilionGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,34 +14,34 @@
 
 SurgeScript_0x1920a5:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_THUNDERBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x192142
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x192238, 0
 	loadtrainer LT_SURGE, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_LTSURGE
 	setevent EVENT_BEAT_GENTLEMAN_GREGORY
 	setevent EVENT_BEAT_GUITARIST_VINCENT
 	setevent EVENT_BEAT_JUGGLER_HORTON
-	loadfont
+	opentext
 	writetext UnknownText_0x192277
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_THUNDERBADGE
 	writetext UnknownText_0x192291
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FightDone
 	writetext UnknownText_0x192303
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGentlemanGregory:
@@ -41,11 +48,11 @@
 	trainer EVENT_BEAT_GENTLEMAN_GREGORY, GENTLEMAN, GREGORY, GentlemanGregorySeenText, GentlemanGregoryBeatenText, 0, GentlemanGregoryScript
 
 GentlemanGregoryScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1923b0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerGuitaristVincent:
@@ -52,11 +59,11 @@
 	trainer EVENT_BEAT_GUITARIST_VINCENT, GUITARIST, VINCENT, GuitaristVincentSeenText, GuitaristVincentBeatenText, 0, GuitaristVincentScript
 
 GuitaristVincentScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x19244b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerJugglerHorton:
@@ -63,27 +70,27 @@
 	trainer EVENT_BEAT_JUGGLER_HORTON, JUGGLER, HORTON, JugglerHortonSeenText, JugglerHortonBeatenText, 0, JugglerHortonScript
 
 JugglerHortonScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x1924d6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 VermilionGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_LTSURGE
 	iftrue .VermilionGymGuyWinScript
 	writetext VermilionGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .VermilionGymGuyWinScript
 	writetext VermilionGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MapVermilionGymSignpost14Script:
--- a/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
+++ b/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const VERMILIONHOUSEDIGLETTSCAVESPEECHHOUSE_GENTLEMAN
+
 VermilionHouseDiglettsCaveSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/VermilionHouseFishingSpeechHouse.asm
+++ b/maps/VermilionHouseFishingSpeechHouse.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const VERMILIONHOUSEFISHINGSPEECHHOUSE_FISHING_GURU
+
 VermilionHouseFishingSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const VERMILIONMAGNETTRAINSPEECHHOUSE_POKEFAN_F
+	const VERMILIONMAGNETTRAINSPEECHHOUSE_YOUNGSTER
+
 VermilionMagnetTrainSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/VermilionMart.asm
+++ b/maps/VermilionMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const VERMILIONMART_CLERK
+	const VERMILIONMART_SUPER_NERD
+	const VERMILIONMART_BUENA
+
 VermilionMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x191f7e:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_VERMILION
-	loadmovesprites
+	closetext
 	end
 
 SuperNerdScript_0x191f85:
--- a/maps/VermilionPokeCenter1F.asm
+++ b/maps/VermilionPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const VERMILIONPOKECENTER1F_NURSE
+	const VERMILIONPOKECENTER1F_FISHING_GURU
+	const VERMILIONPOKECENTER1F_SAILOR
+	const VERMILIONPOKECENTER1F_BUG_CATCHER
+
 VermilionPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,18 +16,18 @@
 
 FishingGuruScript_0x191606:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_FOUGHT_SNORLAX
 	iftrue UnknownScript_0x191614
 	writetext UnknownText_0x191620
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x191614:
 	writetext UnknownText_0x191698
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SailorScript_0x19161a:
--- a/maps/VermilionPokeCenter2FBeta.asm
+++ b/maps/VermilionPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 VermilionPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -1,10 +1,15 @@
+const_value set 2
+	const VERMILIONPORT_SAILOR1
+	const VERMILIONPORT_SAILOR2
+	const VERMILIONPORT_SUPER_NERD
+
 VermilionPort_MapScriptHeader:
 .MapTriggers:
 	db 2
 
 	; triggers
+	dw .Trigger0, 0
 	dw .Trigger1, 0
-	dw .Trigger2, 0
 
 .MapCallbacks:
 	db 1
@@ -12,10 +17,10 @@
 	; callbacks
 	dbw 5, .FlyPoint
 
-.Trigger1
+.Trigger0
 	end
 
-.Trigger2
+.Trigger1
 	priorityjump UnknownScript_0x74da6
 	end
 
@@ -25,7 +30,7 @@
 
 UnknownScript_0x74da6:
 	applymovement PLAYER, MovementData_0x74ef3
-	appear $2
+	appear VERMILIONPORT_SAILOR1
 	dotrigger $0
 	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
 	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
@@ -38,21 +43,21 @@
 
 SailorScript_0x74dc4:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e1a
 	writetext UnknownText_0x74f06
+	waitbutton
 	closetext
-	loadmovesprites
-	spriteface $2, DOWN
+	spriteface VERMILIONPORT_SAILOR1, DOWN
 	pause 10
 	playsound SFX_EXIT_BUILDING
-	disappear $2
-	waitbutton
+	disappear VERMILIONPORT_SAILOR1
+	waitsfx
 	applymovement PLAYER, MovementData_0x74ef1
 	playsound SFX_EXIT_BUILDING
 	special FadeOutPalettes
-	waitbutton
+	waitsfx
 	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	clearevent EVENT_BEAT_POKEMANIAC_ETHAN
@@ -66,7 +71,7 @@
 	clearevent EVENT_BEAT_SCHOOLBOY_NATE
 	clearevent EVENT_BEAT_SCHOOLBOY_RICKY
 	setevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
-	appear $2
+	appear VERMILIONPORT_SAILOR1
 	domaptrigger FAST_SHIP_1F, $1
 	warp FAST_SHIP_1F, $19, $1
 	end
@@ -73,18 +78,18 @@
 
 UnknownScript_0x74e1a:
 	writetext UnknownText_0x74f31
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x74e20:
-	spriteface $3, RIGHT
+	spriteface VERMILIONPORT_SAILOR2, RIGHT
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e86
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue UnknownScript_0x74e86
 	spriteface PLAYER, LEFT
-	loadfont
+	opentext
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, UnknownScript_0x74e72
 	if_equal TUESDAY, UnknownScript_0x74e72
@@ -95,12 +100,12 @@
 	yesorno
 	iffalse UnknownScript_0x74e8d
 	writetext UnknownText_0x74f8b
-	keeptextopen
+	buttonsound
 	checkitem S_S_TICKET
 	iffalse UnknownScript_0x74e68
 	writetext UnknownText_0x74fc2
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement PLAYER, MovementData_0x74ef8
 	jump SailorScript_0x74dc4
@@ -107,22 +112,22 @@
 
 UnknownScript_0x74e68:
 	writetext UnknownText_0x74ff2
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74ef5
 	end
 
 UnknownScript_0x74e72:
 	writetext UnknownText_0x75059
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74ef5
 	end
 
 UnknownScript_0x74e7c:
 	writetext UnknownText_0x75080
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74ef5
 	end
 
@@ -131,20 +136,20 @@
 
 UnknownScript_0x74e87:
 	writetext UnknownText_0x74fa7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x74e8d:
 	writetext UnknownText_0x74fa7
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x74ef5
 	end
 
 SailorScript_0x74e97:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x74e1a
 	checkcode VAR_WEEKDAY
@@ -157,12 +162,12 @@
 	yesorno
 	iffalse UnknownScript_0x74e87
 	writetext UnknownText_0x74f8b
-	keeptextopen
+	buttonsound
 	checkitem S_S_TICKET
 	iffalse UnknownScript_0x74ed4
 	writetext UnknownText_0x74fc2
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
 	applymovement PLAYER, MovementData_0x74efe
 	jump SailorScript_0x74dc4
@@ -169,31 +174,31 @@
 
 UnknownScript_0x74ed4:
 	writetext UnknownText_0x74ff2
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x74eda:
 	writetext UnknownText_0x75059
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x74ee0:
 	writetext UnknownText_0x75080
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 SuperNerdScript_0x74ee6:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x750a6
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-MapVermilionPortSignpostItem0:
+VermilionPortHiddenIron:
 	dwb EVENT_VERMILION_PORT_HIDDEN_IRON, IRON
 	
 
@@ -313,7 +318,7 @@
 
 .Signposts:
 	db 1
-	signpost 13, 16, SIGNPOST_ITEM, MapVermilionPortSignpostItem0
+	signpost 13, 16, SIGNPOST_ITEM, VermilionPortHiddenIron
 
 .PersonEvents:
 	db 3
--- a/maps/VermilionPortPassage.asm
+++ b/maps/VermilionPortPassage.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const VERMILIONPORTPASSAGE_TEACHER
+
 VermilionPortPassage_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const VICTORYROAD_SILVER
+	const VICTORYROAD_POKE_BALL1
+	const VICTORYROAD_POKE_BALL2
+	const VICTORYROAD_POKE_BALL3
+	const VICTORYROAD_POKE_BALL4
+	const VICTORYROAD_POKE_BALL5
+
 VictoryRoad_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -16,16 +24,16 @@
 	end
 
 UnknownScript_0x74492:
-	moveperson $2, $12, $b
+	moveperson VICTORYROAD_SILVER, $12, $b
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	appear $2
-	applymovement $2, MovementData_0x74539
+	appear VICTORYROAD_SILVER
+	applymovement VICTORYROAD_SILVER, MovementData_0x74539
 	scall UnknownScript_0x744d4
-	applymovement $2, MovementData_0x7454c
-	disappear $2
+	applymovement VICTORYROAD_SILVER, MovementData_0x7454c
+	disappear VICTORYROAD_SILVER
 	dotrigger $1
 	playmapmusic
 	end
@@ -33,13 +41,13 @@
 UnknownScript_0x744b5:
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_RotatePalettesRightMusic
+	special Special_FadeOutMusic
 	pause 15
-	appear $2
-	applymovement $2, MovementData_0x74542
+	appear VICTORYROAD_SILVER
+	applymovement VICTORYROAD_SILVER, MovementData_0x74542
 	scall UnknownScript_0x744d4
-	applymovement $2, MovementData_0x74555
-	disappear $2
+	applymovement VICTORYROAD_SILVER, MovementData_0x74555
+	disappear VICTORYROAD_SILVER
 	dotrigger $1
 	playmapmusic
 	end
@@ -47,10 +55,10 @@
 UnknownScript_0x744d4:
 	spriteface PLAYER, DOWN
 	playmusic MUSIC_RIVAL_ENCOUNTER
-	loadfont
+	opentext
 	writetext UnknownText_0x7455f
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_RIVAL_VICTORY_ROAD
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x744ff
@@ -57,59 +65,59 @@
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
 	iftrue UnknownScript_0x7450f
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
-	setlasttalked $2
+	setlasttalked VICTORYROAD_SILVER
 	loadtrainer RIVAL1, RIVAL1_15
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x7451f
 
 UnknownScript_0x744ff:
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
-	setlasttalked $2
+	setlasttalked VICTORYROAD_SILVER
 	loadtrainer RIVAL1, RIVAL1_13
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x7451f
 
 UnknownScript_0x7450f:
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
-	setlasttalked $2
+	setlasttalked VICTORYROAD_SILVER
 	loadtrainer RIVAL1, RIVAL1_14
 	startbattle
-	reloadmapmusic
-	returnafterbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
 	jump UnknownScript_0x7451f
 
 UnknownScript_0x7451f:
 	playmusic MUSIC_RIVAL_AFTER
-	loadfont
+	opentext
 	writetext UnknownText_0x746ce
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x74529:
-	db TM_EARTHQUAKE, 1
+VictoryRoadTMEarthquake:
+	itemball TM_EARTHQUAKE
 
-ItemFragment_0x7452b:
-	db MAX_REVIVE, 1
+VictoryRoadMaxRevive:
+	itemball MAX_REVIVE
 
-ItemFragment_0x7452d:
-	db FULL_RESTORE, 1
+VictoryRoadFullRestore:
+	itemball FULL_RESTORE
 
-ItemFragment_0x7452f:
-	db FULL_HEAL, 1
+VictoryRoadFullHeal:
+	itemball FULL_HEAL
 
-ItemFragment_0x74531:
-	db HP_UP, 1
+VictoryRoadHPUp:
+	itemball HP_UP
 
-MapVictoryRoadSignpostItem0:
+VictoryRoadHiddenMaxPotion:
 	dwb EVENT_VICTORY_ROAD_HIDDEN_MAX_POTION, MAX_POTION
 	
 
-MapVictoryRoadSignpostItem1:
+VictoryRoadHiddenFullHeal:
 	dwb EVENT_VICTORY_ROAD_HIDDEN_FULL_HEAL, FULL_HEAL
 	
 
@@ -258,14 +266,14 @@
 
 .Signposts:
 	db 2
-	signpost 29, 3, SIGNPOST_ITEM, MapVictoryRoadSignpostItem0
-	signpost 65, 3, SIGNPOST_ITEM, MapVictoryRoadSignpostItem1
+	signpost 29, 3, SIGNPOST_ITEM, VictoryRoadHiddenMaxPotion
+	signpost 65, 3, SIGNPOST_ITEM, VictoryRoadHiddenFullHeal
 
 .PersonEvents:
 	db 6
 	person_event SPRITE_SILVER, 13, 18, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_VICTORY_ROAD
-	person_event SPRITE_POKE_BALL, 28, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x74529, EVENT_VICTORY_ROAD_TM_EARTHQUAKE
-	person_event SPRITE_POKE_BALL, 48, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7452b, EVENT_VICTORY_ROAD_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 29, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7452d, EVENT_VICTORY_ROAD_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 48, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7452f, EVENT_VICTORY_ROAD_FULL_HEAL
-	person_event SPRITE_POKE_BALL, 38, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x74531, EVENT_VICTORY_ROAD_HP_UP
+	person_event SPRITE_POKE_BALL, 28, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VictoryRoadTMEarthquake, EVENT_VICTORY_ROAD_TM_EARTHQUAKE
+	person_event SPRITE_POKE_BALL, 48, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VictoryRoadMaxRevive, EVENT_VICTORY_ROAD_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 29, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VictoryRoadFullRestore, EVENT_VICTORY_ROAD_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 48, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VictoryRoadFullHeal, EVENT_VICTORY_ROAD_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 38, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VictoryRoadHPUp, EVENT_VICTORY_ROAD_HP_UP
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const VICTORYROADGATE_OFFICER
+	const VICTORYROADGATE_BLACK_BELT1
+	const VICTORYROADGATE_BLACK_BELT2
+
 VictoryRoadGate_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -22,21 +27,21 @@
 OfficerScript_0x9ba03:
 	faceplayer
 UnknownScript_0x9ba04:
-	loadfont
+	opentext
 	writetext UnknownText_0x9ba29
-	keeptextopen
+	buttonsound
 	checkcode VAR_BADGES
 	if_greater_than 7, UnknownScript_0x9ba19
 	writetext UnknownText_0x9ba5f
+	waitbutton
 	closetext
-	loadmovesprites
 	applymovement PLAYER, MovementData_0x9ba27
 	end
 
 UnknownScript_0x9ba19:
 	writetext UnknownText_0x9bab4
+	waitbutton
 	closetext
-	loadmovesprites
 	dotrigger $1
 	end
 
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -1,3 +1,13 @@
+const_value set 2
+	const VIOLETCITY_FISHER
+	const VIOLETCITY_LASS
+	const VIOLETCITY_SUPER_NERD
+	const VIOLETCITY_GRAMPS
+	const VIOLETCITY_YOUNGSTER
+	const VIOLETCITY_FRUIT_TREE
+	const VIOLETCITY_POKE_BALL1
+	const VIOLETCITY_POKE_BALL2
+
 VioletCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,55 +22,55 @@
 	setflag ENGINE_FLYPOINT_VIOLET
 	return
 
-FisherScript_0x1a83bb:
-	applymovement $2, MovementData_0x1a8465
+VioletCityEarlScript:
+	applymovement VIOLETCITY_FISHER, VioletCitySpinningEarl_MovementData
 	faceplayer
-	loadfont
-	writetext UnknownText_0x1a8473
+	opentext
+	writetext Text_EarlAsksIfYouBeatFalkner
 	yesorno
-	iffalse UnknownScript_0x1a83d1
-	jump UnknownScript_0x1a83cb
+	iffalse .FollowEarl
+	jump .PointlessJump
 
-UnknownScript_0x1a83cb:
-	writetext UnknownText_0x1a84ac
+.PointlessJump:
+	writetext Text_VeryNiceIndeed
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x1a83d1:
-	writetext UnknownText_0x1a84cb
+.FollowEarl:
+	writetext Text_FollowEarl
+	waitbutton
 	closetext
-	loadmovesprites
 	playmusic MUSIC_SHOW_ME_AROUND
-	follow $2, PLAYER
-	applymovement $2, MovementData_0x1a842a
+	follow VIOLETCITY_FISHER, PLAYER
+	applymovement VIOLETCITY_FISHER, VioletCityFollowEarl_MovementData
 	spriteface PLAYER, UP
-	applymovement $2, MovementData_0x1a8465
+	applymovement VIOLETCITY_FISHER, VioletCitySpinningEarl_MovementData
 	stopfollow
 	special RestartMapMusic
-	loadfont
-	writetext UnknownText_0x1a84f9
+	opentext
+	writetext Text_HereTeacherIAm
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $2, MovementData_0x1a8465
-	applymovement $2, MovementData_0x1a8463
+	applymovement VIOLETCITY_FISHER, VioletCitySpinningEarl_MovementData
+	applymovement VIOLETCITY_FISHER, VioletCityFinishFollowEarl_MovementData
 	playsound SFX_ENTER_DOOR
-	disappear $2
+	disappear VIOLETCITY_FISHER
 	clearevent EVENT_EARLS_ACADEMY_EARL
-	waitbutton
+	waitsfx
 	end
 
-LassScript_0x1a8403:
-	jumptextfaceplayer UnknownText_0x1a8529
+VioletCityLassScript:
+	jumptextfaceplayer VioletCityLassText
 
-SuperNerdScript_0x1a8406:
-	jumptextfaceplayer UnknownText_0x1a8593
+VioletCitySuperNerdScript:
+	jumptextfaceplayer VioletCitySuperNerdText
 
-GrampsScript_0x1a8409:
-	jumptextfaceplayer UnknownText_0x1a85ef
+VioletCityGrampsScript:
+	jumptextfaceplayer VioletCityGrampsText
 
-YoungsterScript_0x1a840c:
-	jumptextfaceplayer UnknownText_0x1a8665
+VioletCityYoungsterScript:
+	jumptextfaceplayer VioletCityYoungsterText
 
 VioletCitySign:
 	jumptext VioletCitySignText
@@ -80,19 +90,19 @@
 VioletCityMartSign:
 	jumpstd martsign
 
-ItemFragment_0x1a8421:
-	db PP_UP, 1
+VioletCityPPUp:
+	itemball PP_UP
 
-ItemFragment_0x1a8423:
-	db RARE_CANDY, 1
+VioletCityRareCandy:
+	itemball RARE_CANDY
 
-FruitTreeScript_0x1a8425:
+VioletCityFruitTreeScript:
 	fruittree FRUITTREE_VIOLET_CITY
 
-MapVioletCitySignpostItem6:
+VioletCityHiddenHyperPotion:
 	dwb EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
-MovementData_0x1a842a:
+VioletCityFollowEarl_MovementData:
 	big_step_down
 	big_step_down
 	turn_head_down
@@ -151,11 +161,11 @@
 	turn_head_down
 	step_end
 
-MovementData_0x1a8463:
+VioletCityFinishFollowEarl_MovementData:
 	step_up
 	step_end
 
-MovementData_0x1a8465:
+VioletCitySpinningEarl_MovementData:
 	turn_head_down
 	turn_head_left
 	turn_head_up
@@ -171,7 +181,7 @@
 	turn_head_down
 	step_end
 
-UnknownText_0x1a8473:
+Text_EarlAsksIfYouBeatFalkner:
 	text "Hello!"
 	line "You are trainer?"
 
@@ -179,24 +189,24 @@
 	line "win you did?"
 	done
 
-UnknownText_0x1a84ac:
+Text_VeryNiceIndeed:
 	text "Ooh, la la!"
 	line "Very indeed nice!"
 	done
 
-UnknownText_0x1a84cb:
+Text_FollowEarl:
 	text "Is that so? Then"
 	line "study shall you!"
 	cont "Follow me!"
 	done
 
-UnknownText_0x1a84f9:
+Text_HereTeacherIAm:
 	text "Here, teacher I"
 	line "am. Good it is"
 	cont "you study here!"
 	done
 
-UnknownText_0x1a8529:
+VioletCityLassText:
 	text "Ghosts are rumored"
 	line "to appear in"
 	cont "SPROUT TOWER."
@@ -208,7 +218,7 @@
 	line "ghosts."
 	done
 
-UnknownText_0x1a8593:
+VioletCitySuperNerdText:
 	text "Hey, you're a"
 	line "#MON trainer?"
 
@@ -219,7 +229,7 @@
 	line "for prime time!"
 	done
 
-UnknownText_0x1a85ef:
+VioletCityGrampsText:
 	text "FALKNER, from the"
 	line "VIOLET #MON"
 
@@ -233,7 +243,7 @@
 	line "job with it."
 	done
 
-UnknownText_0x1a8665:
+VioletCityYoungsterText:
 	text "I saw a wiggly"
 	line "tree up ahead!"
 
@@ -293,19 +303,19 @@
 	db 7
 	signpost 20, 24, SIGNPOST_READ, VioletCitySign
 	signpost 17, 15, SIGNPOST_READ, VioletGymSign
-	signpost 8, 24, SIGNPOST_READ, SproutTowerSign
+	signpost  8, 24, SIGNPOST_READ, SproutTowerSign
 	signpost 17, 27, SIGNPOST_READ, EarlsPokemonAcademySign
 	signpost 25, 32, SIGNPOST_READ, VioletCityPokeCenterSign
 	signpost 17, 10, SIGNPOST_READ, VioletCityMartSign
-	signpost 14, 37, SIGNPOST_ITEM, MapVioletCitySignpostItem6
+	signpost 14, 37, SIGNPOST_ITEM, VioletCityHiddenHyperPotion
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a83bb, EVENT_VIOLET_CITY_EARL
-	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x1a8403, -1
-	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a8406, -1
-	person_event SPRITE_GRAMPS, 20, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a8409, -1
-	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a840c, -1
-	person_event SPRITE_FRUIT_TREE, 29, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a8425, -1
-	person_event SPRITE_POKE_BALL, 1, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a8421, EVENT_VIOLET_CITY_PP_UP
-	person_event SPRITE_POKE_BALL, 5, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x1a8423, EVENT_VIOLET_CITY_RARE_CANDY
+	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityEarlScript, EVENT_VIOLET_CITY_EARL
+	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityLassScript, -1
+	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, VioletCitySuperNerdScript, -1
+	person_event SPRITE_GRAMPS, 20, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletCityGrampsScript, -1
+	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityYoungsterScript, -1
+	person_event SPRITE_FRUIT_TREE, 29, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletCityFruitTreeScript, -1
+	person_event SPRITE_POKE_BALL, 1, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VioletCityPPUp, EVENT_VIOLET_CITY_PP_UP
+	person_event SPRITE_POKE_BALL, 5, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VioletCityRareCandy, EVENT_VIOLET_CITY_RARE_CANDY
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const VIOLETGYM_FALKNER
+	const VIOLETGYM_YOUNGSTER1
+	const VIOLETGYM_YOUNGSTER2
+	const VIOLETGYM_GYM_GUY
+
 VioletGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,21 +13,21 @@
 
 FalknerScript_0x683c2:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_FALKNER
 	iftrue .FightDone
 	writetext UnknownText_0x68473
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x6854a, 0
 	loadtrainer FALKNER, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_FALKNER
-	loadfont
+	opentext
 	writetext UnknownText_0x685af
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_ZEPHYRBADGE
 	checkcode VAR_BADGES
 	scall VioletGymTriggerRockets
@@ -33,20 +39,20 @@
 	domaptrigger ELMS_LAB, $2
 	specialphonecall SPECIALCALL_ASSISTANT
 	writetext UnknownText_0x685c8
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_MUD_SLAP
 	iffalse .NoRoomForMudSlap
 	setevent EVENT_GOT_TM31_MUD_SLAP
 	writetext UnknownText_0x68648
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .SpeechAfterTM:
 	writetext UnknownText_0x68735
-	closetext
+	waitbutton
 .NoRoomForMudSlap:
-	loadmovesprites
+	closetext
 	end
 
 VioletGymTriggerRockets:
@@ -64,11 +70,11 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_ROD, BIRD_KEEPER, ROD, Bird_keeperRodSeenText, Bird_keeperRodBeatenText, 0, Bird_keeperRodScript
 
 Bird_keeperRodScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x68837
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerBird_keeperAbe:
@@ -75,27 +81,27 @@
 	trainer EVENT_BEAT_BIRD_KEEPER_ABE, BIRD_KEEPER, ABE, Bird_keeperAbeSeenText, Bird_keeperAbeBeatenText, 0, Bird_keeperAbeScript
 
 Bird_keeperAbeScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x688c7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 VioletGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_FALKNER
 	iftrue .VioletGymGuyWinScript
 	writetext VioletGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .VioletGymGuyWinScript
 	writetext VioletGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 VioletGymStatue:
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const VIOLETMART_CLERK
+	const VIOLETMART_GRANNY
+	const VIOLETMART_COOLTRAINER_M
+
 VioletMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x68295:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_VIOLET
-	loadmovesprites
+	closetext
 	end
 
 GrannyScript_0x6829c:
--- a/maps/VioletNicknameSpeechHouse.asm
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const VIOLETNICKNAMESPEECHHOUSE_TEACHER
+	const VIOLETNICKNAMESPEECHHOUSE_LASS
+	const VIOLETNICKNAMESPEECHHOUSE_BIRD
+
 VioletNicknameSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -13,11 +18,11 @@
 
 BirdScript_0x693ef:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x6947c
 	cry PIDGEY
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x693fa:
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const VIOLETONIXTRADEHOUSE_POKEFAN_M
+	const VIOLETONIXTRADEHOUSE_YOUNGSTER
+
 VioletOnixTradeHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,10 +14,10 @@
 
 YoungsterScript_0x69990:
 	faceplayer
-	loadfont
+	opentext
 	trade $1
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x69997:
--- a/maps/VioletPokeCenter1F.asm
+++ b/maps/VioletPokeCenter1F.asm
@@ -1,3 +1,10 @@
+const_value set 2
+	const VIOLETPOKECENTER1F_NURSE
+	const VIOLETPOKECENTER1F_GAMEBOY_KID
+	const VIOLETPOKECENTER1F_GENTLEMAN
+	const VIOLETPOKECENTER1F_YOUNGSTER
+	const VIOLETPOKECENTER1F_SCIENTIST
+
 VioletPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,71 +12,71 @@
 .MapCallbacks:
 	db 0
 
-NurseScript_0x694c9:
+VioletPokeCenterNurse:
 	jumpstd pokecenternurse
 
-ScientistScript_0x694cc:
+VioletPokeCenter1F_ElmsAideScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
-	iftrue UnknownScript_0x6953a
+	iftrue .SecondTimeAsking
 	writetext UnknownText_0x69555
-UnknownScript_0x694d7:
+.AskTakeEgg:
 	yesorno
-	iffalse UnknownScript_0x69531
+	iffalse .RefusedEgg
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x6952b
+	if_equal PARTY_LENGTH, .PartyFull
 	giveegg TOGEPI, 5
 	stringtotext .eggname, $1
-	scall UnknownScript_0x69527
+	scall .AideGivesEgg
 	setevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
 	clearevent EVENT_ELMS_AIDE_IN_LAB
 	clearevent EVENT_TOGEPI_HATCHED
 	domaptrigger ROUTE_32, $1
 	writetext UnknownText_0x695c5
+	waitbutton
 	closetext
-	loadmovesprites
 	checkcode VAR_FACING
-	if_equal $1, .UnknownScript_0x69511
+	if_equal UP, .AideWalksAroundPlayer
 	spriteface PLAYER, DOWN
-	applymovement $6, MovementData_0x69549
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksStraightOutOfPokecenter
 	playsound SFX_EXIT_BUILDING
-	disappear $6
-	waitbutton
+	disappear VIOLETPOKECENTER1F_SCIENTIST
+	waitsfx
 	end
 
-.UnknownScript_0x69511
-	applymovement $6, MovementData_0x6954e
+.AideWalksAroundPlayer
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksLeftToExitPokecenter
 	spriteface PLAYER, DOWN
-	applymovement $6, MovementData_0x69551
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideFinishesLeavingPokecenter
 	playsound SFX_EXIT_BUILDING
-	disappear $6
-	waitbutton
+	disappear VIOLETPOKECENTER1F_SCIENTIST
+	waitsfx
 	end
 
 .eggname
 	db "EGG@"
 
-UnknownScript_0x69527:
+.AideGivesEgg:
 	jumpstd receivetogepiegg
 	end
 
-UnknownScript_0x6952b:
+.PartyFull:
 	writetext UnknownText_0x69693
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-UnknownScript_0x69531:
+.RefusedEgg:
 	writetext UnknownText_0x696f2
+	waitbutton
 	closetext
-	loadmovesprites
 	setevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
 	end
 
-UnknownScript_0x6953a:
+.SecondTimeAsking:
 	writetext UnknownText_0x69712
-	jump UnknownScript_0x694d7
+	jump .AskTakeEgg
 
 GameboyKidScript_0x69540:
 	jumptextfaceplayer UnknownText_0x69809
@@ -80,7 +87,7 @@
 YoungsterScript_0x69546:
 	jumptextfaceplayer UnknownText_0x698b8
 
-MovementData_0x69549:
+MovementData_AideWalksStraightOutOfPokecenter:
 	step_down
 	step_down
 	step_down
@@ -87,12 +94,12 @@
 	step_down
 	step_end
 
-MovementData_0x6954e:
+MovementData_AideWalksLeftToExitPokecenter:
 	step_left
 	step_down
 	step_end
 
-MovementData_0x69551:
+MovementData_AideFinishesLeavingPokecenter:
 	step_down
 	step_down
 	step_down
@@ -226,8 +233,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x694c9, -1
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletPokeCenterNurse, -1
 	person_event SPRITE_GAMEBOY_KID, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x69540, -1
 	person_event SPRITE_GENTLEMAN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x69543, -1
 	person_event SPRITE_YOUNGSTER, 1, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x69546, -1
-	person_event SPRITE_SCIENTIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
+	person_event SPRITE_SCIENTIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, VioletPokeCenter1F_ElmsAideScript, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const VIRIDIANCITY_GRAMPS1
+	const VIRIDIANCITY_GRAMPS2
+	const VIRIDIANCITY_FISHER
+	const VIRIDIANCITY_YOUNGSTER
+
 ViridianCity_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -14,52 +20,52 @@
 
 GrampsScript_0x1a9a4c:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x1a9aa5
 	yesorno
 	iffalse UnknownScript_0x1a9a5b
 	writetext UnknownText_0x1a9b6f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x1a9a5b:
 	writetext UnknownText_0x1a9bb7
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GrampsScript_0x1a9a61:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BLUE_IN_CINNABAR
 	iftrue .BlueReturned
 	writetext UnknownText_0x1a9c11
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BlueReturned
 	writetext UnknownText_0x1a9c7e
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 FisherScript_0x1a9a75:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_GOT_TM42_DREAM_EATER
 	iftrue UnknownScript_0x1a9a8a
 	writetext UnknownText_0x1a9cc4
-	keeptextopen
+	buttonsound
 	verbosegiveitem TM_DREAM_EATER
 	iffalse UnknownScript_0x1a9a8e
 	setevent EVENT_GOT_TM42_DREAM_EATER
 UnknownScript_0x1a9a8a:
 	writetext UnknownText_0x1a9d86
-	closetext
+	waitbutton
 UnknownScript_0x1a9a8e:
-	loadmovesprites
+	closetext
 	end
 
 YoungsterScript_0x1a9a90:
--- a/maps/ViridianGym.asm
+++ b/maps/ViridianGym.asm
@@ -1,3 +1,7 @@
+const_value set 2
+	const VIRIDIANGYM_BLUE
+	const VIRIDIANGYM_GYM_GUY
+
 ViridianGym_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -7,47 +11,47 @@
 
 BlueScript_0x9aa26:
 	faceplayer
-	loadfont
+	opentext
 	checkflag ENGINE_EARTHBADGE
 	iftrue .FightDone
 	writetext UnknownText_0x9aa7b
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x9abae, 0
 	loadtrainer BLUE, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_BLUE
-	loadfont
+	opentext
 	writetext UnknownText_0x9ac0f
 	playsound SFX_GET_BADGE
-	waitbutton
+	waitsfx
 	setflag ENGINE_EARTHBADGE
 	writetext UnknownText_0x9ac27
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .FightDone
 	writetext UnknownText_0x9acab
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ViridianGymGuyScript:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_BLUE
 	iftrue .ViridianGymGuyWinScript
 	writetext ViridianGymGuyText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .ViridianGymGuyWinScript
 	writetext ViridianGymGuyWinText
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 ViridianGymStatue:
--- a/maps/ViridianMart.asm
+++ b/maps/ViridianMart.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const VIRIDIANMART_CLERK
+	const VIRIDIANMART_LASS
+	const VIRIDIANMART_COOLTRAINER_M
+
 ViridianMart_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -6,9 +11,9 @@
 	db 0
 
 ClerkScript_0x9b5e7:
-	loadfont
+	opentext
 	pokemart MARTTYPE_STANDARD, MART_VIRIDIAN
-	loadmovesprites
+	closetext
 	end
 
 LassScript_0x9b5ee:
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const VIRIDIANNICKNAMESPEECHHOUSE_POKEFAN_M
+	const VIRIDIANNICKNAMESPEECHHOUSE_LASS
+	const VIRIDIANNICKNAMESPEECHHOUSE_MOLTRES
+	const VIRIDIANNICKNAMESPEECHHOUSE_GROWLITHE
+
 ViridianNicknameSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -12,19 +18,19 @@
 	jumptextfaceplayer UnknownText_0x9aecb
 
 MoltresScript_0x9ae40:
-	loadfont
+	opentext
 	writetext UnknownText_0x9aefe
 	cry SPEAROW
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GrowlitheScript_0x9ae4a:
-	loadfont
+	opentext
 	writetext UnknownText_0x9af10
 	cry RATTATA
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownText_0x9ae54:
--- a/maps/ViridianPokeCenter1F.asm
+++ b/maps/ViridianPokeCenter1F.asm
@@ -1,3 +1,9 @@
+const_value set 2
+	const VIRIDIANPOKECENTER1F_NURSE
+	const VIRIDIANPOKECENTER1F_COOLTRAINER_M
+	const VIRIDIANPOKECENTER1F_COOLTRAINER_F
+	const VIRIDIANPOKECENTER1F_BUG_CATCHER
+
 ViridianPokeCenter1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -10,18 +16,18 @@
 
 CooltrainerMScript_0x9b693:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BLUE_IN_CINNABAR
 	iftrue .BlueReturned
 	writetext UnknownText_0x9b6ad
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .BlueReturned
 	writetext UnknownText_0x9b6f5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 CooltrainerFScript_0x9b6a7:
--- a/maps/ViridianPokeCenter2FBeta.asm
+++ b/maps/ViridianPokeCenter2FBeta.asm
@@ -1,3 +1,4 @@
+
 ViridianPokeCenter2FBeta_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -1,3 +1,14 @@
+const_value set 2
+	const WAREHOUSEENTRANCE_SUPER_NERD1
+	const WAREHOUSEENTRANCE_SUPER_NERD2
+	const WAREHOUSEENTRANCE_SUPER_NERD3
+	const WAREHOUSEENTRANCE_SUPER_NERD4
+	const WAREHOUSEENTRANCE_POKE_BALL
+	const WAREHOUSEENTRANCE_GRAMPS
+	const WAREHOUSEENTRANCE_SUPER_NERD5
+	const WAREHOUSEENTRANCE_SUPER_NERD6
+	const WAREHOUSEENTRANCE_GRANNY
+
 WarehouseEntrance_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -52,56 +63,56 @@
 	if_equal SATURDAY, .Saturday
 
 .Sunday:
-	disappear $7
-	disappear $8
-	appear $9
-	appear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	disappear WAREHOUSEENTRANCE_SUPER_NERD5
+	appear WAREHOUSEENTRANCE_SUPER_NERD6
+	appear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Monday:
-	disappear $7
+	disappear WAREHOUSEENTRANCE_GRAMPS
 	checkmorn
 	iffalse .NotMondayMorning
-	appear $7
+	appear WAREHOUSEENTRANCE_GRAMPS
 .NotMondayMorning:
-	disappear $8
-	disappear $9
-	disappear $a
+	disappear WAREHOUSEENTRANCE_SUPER_NERD5
+	disappear WAREHOUSEENTRANCE_SUPER_NERD6
+	disappear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Tuesday:
-	disappear $7
-	appear $8
-	disappear $9
-	disappear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	appear WAREHOUSEENTRANCE_SUPER_NERD5
+	disappear WAREHOUSEENTRANCE_SUPER_NERD6
+	disappear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Wednesday:
-	disappear $7
-	disappear $8
-	appear $9
-	disappear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	disappear WAREHOUSEENTRANCE_SUPER_NERD5
+	appear WAREHOUSEENTRANCE_SUPER_NERD6
+	disappear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Thursday:
-	disappear $7
-	appear $8
-	disappear $9
-	disappear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	appear WAREHOUSEENTRANCE_SUPER_NERD5
+	disappear WAREHOUSEENTRANCE_SUPER_NERD6
+	disappear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Friday:
-	disappear $7
-	disappear $8
-	appear $9
-	disappear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	disappear WAREHOUSEENTRANCE_SUPER_NERD5
+	appear WAREHOUSEENTRANCE_SUPER_NERD6
+	disappear WAREHOUSEENTRANCE_GRANNY
 	return
 
 .Saturday:
-	disappear $7
-	appear $8
-	disappear $9
-	appear $a
+	disappear WAREHOUSEENTRANCE_GRAMPS
+	appear WAREHOUSEENTRANCE_SUPER_NERD5
+	disappear WAREHOUSEENTRANCE_SUPER_NERD6
+	appear WAREHOUSEENTRANCE_GRANNY
 	return
 
 TrainerSupernerdEric:
@@ -108,11 +119,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_ERIC, SUPER_NERD, ERIC, SupernerdEricSeenText, SupernerdEricBeatenText, 0, SupernerdEricScript
 
 SupernerdEricScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7c36c
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSupernerdTeru:
@@ -119,11 +130,11 @@
 	trainer EVENT_BEAT_SUPER_NERD_TERU, SUPER_NERD, TERU, SupernerdTeruSeenText, SupernerdTeruBeatenText, 0, SupernerdTeruScript
 
 SupernerdTeruScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7c410
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacIssac:
@@ -130,11 +141,11 @@
 	trainer EVENT_BEAT_POKEMANIAC_ISSAC, POKEMANIAC, ISSAC, PokemaniacIssacSeenText, PokemaniacIssacBeatenText, 0, PokemaniacIssacScript
 
 PokemaniacIssacScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7c498
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerPokemaniacDonald:
@@ -141,15 +152,15 @@
 	trainer EVENT_BEAT_POKEMANIAC_DONALD, POKEMANIAC, DONALD, PokemaniacDonaldSeenText, PokemaniacDonaldBeatenText, 0, PokemaniacDonaldScript
 
 PokemaniacDonaldScript:
-	talkaftercancel
-	loadfont
+	end_if_just_battled
+	opentext
 	writetext UnknownText_0x7c52f
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 GrannyScript_0x7c132:
-	loadfont
+	opentext
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, .Open
 	if_equal SATURDAY, .Open
@@ -157,11 +168,11 @@
 
 .Open:
 	pokemart MARTTYPE_BITTER, MART_UNDERGROUND
-	loadmovesprites
+	closetext
 	end
 
 GrampsScript_0x7c146:
-	loadfont
+	opentext
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_MERCHANT_CLOSED
 	iftrue WarehouseEntranceScript_ShopClosed
 	checkcode VAR_WEEKDAY
@@ -172,11 +183,11 @@
 	checkmorn
 	iffalse WarehouseEntranceScript_ShopClosed
 	pokemart MARTTYPE_BARGAIN, 0
-	loadmovesprites
+	closetext
 	end
 
 OlderHaircutBrotherScript:
-	loadfont
+	opentext
 	checkcode VAR_WEEKDAY
 	if_equal TUESDAY, .DoHaircut
 	if_equal THURSDAY, .DoHaircut
@@ -186,7 +197,7 @@
 .DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
 	iftrue .AlreadyGotHaircut
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	writetext UnknownText_0x7c5f9
 	yesorno
 	iffalse .Refused
@@ -193,7 +204,7 @@
 	checkmoney $0, 500
 	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x7c69a
-	keeptextopen
+	buttonsound
 	special Special_YoungerHaircutBrother
 	if_equal $0, .Refused
 	if_equal $1, .Refused
@@ -222,18 +233,18 @@
 
 .then:
 	takemoney $0, 500
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	writetext UnknownText_0x7c6b8
+	waitbutton
 	closetext
-	loadmovesprites
 	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
 	special FadeInPalettes
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext UnknownText_0x7c6d8
-	closetext
+	waitbutton
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7c2bb
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
@@ -242,24 +253,24 @@
 
 .Refused:
 	writetext UnknownText_0x7c6ea
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NotEnoughMoney:
 	writetext UnknownText_0x7c709
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AlreadyGotHaircut:
 	writetext UnknownText_0x7c72b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 YoungerHaircutBrotherScript:
-	loadfont
+	opentext
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, .DoHaircut
 	if_equal WEDNESDAY, .DoHaircut
@@ -269,7 +280,7 @@
 .DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
 	iftrue .AlreadyGotHaircut
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	writetext UnknownText_0x7c75c
 	yesorno
 	iffalse .Refused
@@ -276,7 +287,7 @@
 	checkmoney $0, 300
 	if_equal $2, .NotEnoughMoney
 	writetext UnknownText_0x7c7f1
-	keeptextopen
+	buttonsound
 	special Special_OlderHaircutBrother
 	if_equal $0, .Refused
 	if_equal $1, .Refused
@@ -305,18 +316,18 @@
 
 .then:
 	takemoney $0, 300
-	special PlaceMoneyTopRightOW
+	special PlaceMoneyTopRight
 	writetext UnknownText_0x7c80e
+	waitbutton
 	closetext
-	loadmovesprites
 	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
 	special FadeInPalettes
 	special RestartMapMusic
-	loadfont
+	opentext
 	writetext UnknownText_0x7c82a
-	closetext
+	waitbutton
 	checkevent EVENT_GAVE_KURT_APRICORNS
 	iftrue UnknownScript_0x7c2bb
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
@@ -325,92 +336,92 @@
 
 .Refused:
 	writetext UnknownText_0x7c842
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .NotEnoughMoney:
 	writetext UnknownText_0x7c85b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .AlreadyGotHaircut:
 	writetext UnknownText_0x7c87b
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7c2bb:
 	writetext HaircutBrosText_SlightlyHappier
 	special PlayCurMonCry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7c2c4:
 	writetext HaircutBrosText_Happier
 	special PlayCurMonCry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 UnknownScript_0x7c2cd:
 	writetext HaircutBrosText_MuchHappier
 	special PlayCurMonCry
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 BasementDoorScript::
-	loadfont
+	opentext
 	checkevent EVENT_USED_BASEMENT_KEY
 	iftrue .Open
 	checkitem BASEMENT_KEY
 	iftrue .Unlock
 	writetext UnknownText_0x7c5b0
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 .Unlock:
 	playsound SFX_TRANSACTION
 	writetext UnknownText_0x7c5d6
+	waitbutton
 	closetext
-	loadmovesprites
 	changeblock $12, $6, $2e
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_USED_BASEMENT_KEY
 	end
 
 .Open:
 	writetext UnknownText_0x7c5c3
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 WarehouseEntranceScript_ShopClosed:
 	writetext UnknownText_0x7c904
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
-ItemFragment_0x7c306:
-	db COIN_CASE, 1
+WarehouseEntranceCoinCase:
+	itemball COIN_CASE
 
 MapWarehouseEntranceSignpost1Script:
 	jumptext UnknownText_0x7c91a
 
-MapWarehouseEntranceSignpostItem2:
+WarehouseEntranceHiddenParlyzHeal:
 	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_PARLYZ_HEAL, PARLYZ_HEAL
 	
 
-MapWarehouseEntranceSignpostItem3:
+WarehouseEntranceHiddenSuperPotion:
 	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_SUPER_POTION, SUPER_POTION
 	
 
-MapWarehouseEntranceSignpostItem4:
+WarehouseEntranceHiddenAntidote:
 	dwb EVENT_WAREHOUSE_ENTRANCE_HIDDEN_ANTIDOTE, ANTIDOTE
 	
 
@@ -663,9 +674,9 @@
 	db 5
 	signpost 6, 18, SIGNPOST_READ, BasementDoorScript
 	signpost 6, 19, SIGNPOST_READ, MapWarehouseEntranceSignpost1Script
-	signpost 13, 6, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem2
-	signpost 18, 4, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem3
-	signpost 8, 17, SIGNPOST_ITEM, MapWarehouseEntranceSignpostItem4
+	signpost 13, 6, SIGNPOST_ITEM, WarehouseEntranceHiddenParlyzHeal
+	signpost 18, 4, SIGNPOST_ITEM, WarehouseEntranceHiddenSuperPotion
+	signpost 8, 17, SIGNPOST_ITEM, WarehouseEntranceHiddenAntidote
 
 .PersonEvents:
 	db 9
@@ -673,7 +684,7 @@
 	person_event SPRITE_SUPER_NERD, 9, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdTeru, -1
 	person_event SPRITE_SUPER_NERD, 27, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacIssac, -1
 	person_event SPRITE_SUPER_NERD, 6, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacDonald, -1
-	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x7c306, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
+	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WarehouseEntranceCoinCase, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
 	person_event SPRITE_GRAMPS, 11, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7c146, EVENT_WAREHOUSE_ENTRANCE_GRAMPS
 	person_event SPRITE_SUPER_NERD, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OlderHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
 	person_event SPRITE_SUPER_NERD, 15, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungerHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
--- a/maps/WhirlIslandB1F.asm
+++ b/maps/WhirlIslandB1F.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const WHIRLISLANDB1F_POKE_BALL1
+	const WHIRLISLANDB1F_POKE_BALL2
+	const WHIRLISLANDB1F_POKE_BALL3
+	const WHIRLISLANDB1F_POKE_BALL4
+	const WHIRLISLANDB1F_POKE_BALL5
+	const WHIRLISLANDB1F_BOULDER
+
 WhirlIslandB1F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,33 +13,33 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c410:
-	db FULL_RESTORE, 1
+WhirlIslandB1FFullRestore:
+	itemball FULL_RESTORE
 
-ItemFragment_0x18c412:
-	db CARBOS, 1
+WhirlIslandB1FCarbos:
+	itemball CARBOS
 
-ItemFragment_0x18c414:
-	db CALCIUM, 1
+WhirlIslandB1FCalcium:
+	itemball CALCIUM
 
-ItemFragment_0x18c416:
-	db NUGGET, 1
+WhirlIslandB1FNugget:
+	itemball NUGGET
 
-ItemFragment_0x18c418:
-	db ESCAPE_ROPE, 1
+WhirlIslandB1FEscapeRope:
+	itemball ESCAPE_ROPE
 
 WhirlIslandB1FBoulder:
 	jumpstd strengthboulder
 
-MapWhirlIslandB1FSignpostItem0:
+WhirlIslandB1FHiddenRareCandy:
 	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY, RARE_CANDY
 	
 
-MapWhirlIslandB1FSignpostItem1:
+WhirlIslandB1FHiddenUltraBall:
 	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 	
 
-MapWhirlIslandB1FSignpostItem2:
+WhirlIslandB1FHiddenFullRestore:
 	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 	
 
@@ -56,15 +64,15 @@
 
 .Signposts:
 	db 3
-	signpost 4, 30, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem0
-	signpost 18, 36, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem1
-	signpost 23, 2, SIGNPOST_ITEM, MapWhirlIslandB1FSignpostItem2
+	signpost 4, 30, SIGNPOST_ITEM, WhirlIslandB1FHiddenRareCandy
+	signpost 18, 36, SIGNPOST_ITEM, WhirlIslandB1FHiddenUltraBall
+	signpost 23, 2, SIGNPOST_ITEM, WhirlIslandB1FHiddenFullRestore
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c410, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 18, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c412, EVENT_WHIRL_ISLAND_B1F_CARBOS
-	person_event SPRITE_POKE_BALL, 23, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c414, EVENT_WHIRL_ISLAND_B1F_CALCIUM
-	person_event SPRITE_POKE_BALL, 8, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c416, EVENT_WHIRL_ISLAND_B1F_NUGGET
-	person_event SPRITE_POKE_BALL, 26, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c418, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB1FFullRestore, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 18, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB1FCarbos, EVENT_WHIRL_ISLAND_B1F_CARBOS
+	person_event SPRITE_POKE_BALL, 23, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB1FCalcium, EVENT_WHIRL_ISLAND_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 8, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB1FNugget, EVENT_WHIRL_ISLAND_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 26, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB1FEscapeRope, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
 	person_event SPRITE_BOULDER, 26, 23, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, WhirlIslandB1FBoulder, -1
--- a/maps/WhirlIslandB2F.asm
+++ b/maps/WhirlIslandB2F.asm
@@ -1,3 +1,8 @@
+const_value set 2
+	const WHIRLISLANDB2F_POKE_BALL1
+	const WHIRLISLANDB2F_POKE_BALL2
+	const WHIRLISLANDB2F_POKE_BALL3
+
 WhirlIslandB2F_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,14 +10,14 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c4b8:
-	db FULL_RESTORE, 1
+WhirlIslandB2FFullRestore:
+	itemball FULL_RESTORE
 
-ItemFragment_0x18c4ba:
-	db MAX_REVIVE, 1
+WhirlIslandB2FMaxRevive:
+	itemball MAX_REVIVE
 
-ItemFragment_0x18c4bc:
-	db MAX_ELIXER, 1
+WhirlIslandB2FMaxElixer:
+	itemball MAX_ELIXER
 
 WhirlIslandB2F_MapEventHeader:
 	; filler
@@ -33,6 +38,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 11, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c4b8, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c4ba, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 12, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c4bc, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 11, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB2FFullRestore, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB2FMaxRevive, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 12, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandB2FMaxElixer, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
--- a/maps/WhirlIslandCave.asm
+++ b/maps/WhirlIslandCave.asm
@@ -1,3 +1,4 @@
+
 WhirlIslandCave_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const WHIRLISLANDLUGIACHAMBER_LUGIA
+
 WhirlIslandLugiaChamber_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -17,26 +20,26 @@
 	jump UnknownScript_0x18c515
 
 UnknownScript_0x18c512:
-	appear $2
+	appear WHIRLISLANDLUGIACHAMBER_LUGIA
 	return
 
 UnknownScript_0x18c515:
-	disappear $2
+	disappear WHIRLISLANDLUGIACHAMBER_LUGIA
 	return
 
 LugiaScript_0x18c518:
 	faceplayer
-	loadfont
+	opentext
 	writetext UnknownText_0x18c531
 	cry LUGIA
 	pause 15
-	loadmovesprites
+	closetext
 	setevent EVENT_FOUGHT_LUGIA
 	writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
-	loadpokedata LUGIA, 60
+	loadwildmon LUGIA, 60
 	startbattle
-	disappear $2
-	returnafterbattle
+	disappear WHIRLISLANDLUGIACHAMBER_LUGIA
+	reloadmapafterbattle
 	end
 
 UnknownText_0x18c531:
--- a/maps/WhirlIslandNE.asm
+++ b/maps/WhirlIslandNE.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const WHIRLISLANDNE_POKE_BALL
+
 WhirlIslandNE_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c396:
-	db ULTRA_BALL, 1
+WhirlIslandNEUltraBall:
+	itemball ULTRA_BALL
 
 WhirlIslandNE_MapEventHeader:
 	; filler
@@ -26,4 +29,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 11, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c396, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 11, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandNEUltraBall, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
--- a/maps/WhirlIslandNW.asm
+++ b/maps/WhirlIslandNW.asm
@@ -1,3 +1,4 @@
+
 WhirlIslandNW_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/WhirlIslandSE.asm
+++ b/maps/WhirlIslandSE.asm
@@ -1,3 +1,4 @@
+
 WhirlIslandSE_MapScriptHeader:
 .MapTriggers:
 	db 0
--- a/maps/WhirlIslandSW.asm
+++ b/maps/WhirlIslandSW.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const WHIRLISLANDSW_POKE_BALL
+
 WhirlIslandSW_MapScriptHeader:
 .MapTriggers:
 	db 0
@@ -5,8 +8,8 @@
 .MapCallbacks:
 	db 0
 
-ItemFragment_0x18c3bc:
-	db ULTRA_BALL, 1
+WhirlIslandSWUltraBall:
+	itemball ULTRA_BALL
 
 WhirlIslandSW_MapEventHeader:
 	; filler
@@ -28,4 +31,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMFRAGMENT, 0, ItemFragment_0x18c3bc, EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WhirlIslandSWUltraBall, EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
--- a/maps/WillsRoom.asm
+++ b/maps/WillsRoom.asm
@@ -1,3 +1,6 @@
+const_value set 2
+	const WILLSROOM_WILL
+
 WillsRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -38,41 +41,41 @@
 	earthquake 80
 	changeblock $4, $e, $2a
 	reloadmappart
-	loadmovesprites
+	closetext
 	dotrigger $1
 	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	waitbutton
+	waitsfx
 	end
 
 WillScript_0x1804f8:
 	faceplayer
-	loadfont
+	opentext
 	checkevent EVENT_BEAT_ELITE_4_WILL
 	iftrue UnknownScript_0x180526
 	writetext UnknownText_0x180531
+	waitbutton
 	closetext
-	loadmovesprites
 	winlosstext UnknownText_0x18062c, 0
 	loadtrainer WILL, 1
 	startbattle
-	returnafterbattle
+	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_WILL
-	loadfont
+	opentext
 	writetext UnknownText_0x180644
+	waitbutton
 	closetext
-	loadmovesprites
 	playsound SFX_ENTER_DOOR
 	changeblock $4, $2, $16
 	reloadmappart
-	loadmovesprites
+	closetext
 	setevent EVENT_WILLS_ROOM_EXIT_OPEN
-	waitbutton
+	waitsfx
 	end
 
 UnknownScript_0x180526:
 	writetext UnknownText_0x180644
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x18052c:
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -1,3 +1,11 @@
+const_value set 2
+	const WISETRIOSROOM_SAGE1
+	const WISETRIOSROOM_SAGE2
+	const WISETRIOSROOM_SAGE3
+	const WISETRIOSROOM_SAGE4
+	const WISETRIOSROOM_SAGE5
+	const WISETRIOSROOM_SAGE6
+
 WiseTriosRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
@@ -50,19 +58,19 @@
 	jumptextfaceplayer UnknownText_0x987af
 
 UnknownScript_0x985a3:
-	spriteface $4, UP
+	spriteface WISETRIOSROOM_SAGE3, UP
 	spriteface PLAYER, DOWN
-	showemote EMOTE_SHOCK, $4, 20
-	follow PLAYER, $4
+	showemote EMOTE_SHOCK, WISETRIOSROOM_SAGE3, 20
+	follow PLAYER, WISETRIOSROOM_SAGE3
 	applymovement PLAYER, MovementData_0x98622
 	stopfollow
 	spriteface PLAYER, RIGHT
-	loadfont
+	opentext
 	writetext UnknownText_0x98712
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $4, MovementData_0x98625
-	spriteface $4, LEFT
+	applymovement WISETRIOSROOM_SAGE3, MovementData_0x98625
+	spriteface WISETRIOSROOM_SAGE3, LEFT
 	end
 
 TrainerSageGaku:
@@ -69,10 +77,10 @@
 	trainer EVENT_BEAT_SAGE_GAKU, SAGE, GAKU, SageGakuSeenText, SageGakuBeatenText, 0, SageGakuScript
 
 SageGakuScript:
-	loadfont
+	opentext
 	writetext UnknownText_0x98938
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageMasa:
@@ -79,10 +87,10 @@
 	trainer EVENT_BEAT_SAGE_MASA, SAGE, MASA, SageMasaSeenText, SageMasaBeatenText, 0, SageMasaScript
 
 SageMasaScript:
-	loadfont
+	opentext
 	writetext UnknownText_0x98a35
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 TrainerSageKoji:
@@ -92,24 +100,24 @@
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
 	iftrue UnknownScript_0x9861b
 	pause 10
-	showemote EMOTE_SHOCK, $7, 20
-	loadfont
+	showemote EMOTE_SHOCK, WISETRIOSROOM_SAGE6, 20
+	opentext
 	writetext UnknownText_0x98c6c
-	keeptextopen
+	buttonsound
 	writetext UnknownText_0x98cac
+	waitbutton
 	closetext
-	loadmovesprites
-	applymovement $7, MovementData_0x98628
-	spriteface $7, UP
+	applymovement WISETRIOSROOM_SAGE6, MovementData_0x98628
+	spriteface WISETRIOSROOM_SAGE6, UP
 	setevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
 	dotrigger $1
 	end
 
 UnknownScript_0x9861b:
-	loadfont
+	opentext
 	writetext UnknownText_0x98db5
+	waitbutton
 	closetext
-	loadmovesprites
 	end
 
 MovementData_0x98622:
--- a/misc/battle_tower_5c.asm
+++ b/misc/battle_tower_5c.asm
@@ -1,11 +1,12 @@
 Function1700b0: ; 1700b0
-	call Function17021e
+; special
+	call InitBattleTowerChallengeRAM
 	callba Function118121
 	ret
 ; 1700ba
 
 Function1700ba: ; 1700ba
-	call Function17021e
+	call InitBattleTowerChallengeRAM
 	callba Function11811a
 	ret
 ; 1700c4
@@ -17,6 +18,7 @@
 	ld [rSVBK], a
 
 	call Function17042c
+
 	ld a, $5
 	call GetSRAMBank
 	ld a, $1
@@ -23,15 +25,15 @@
 	ld [$be45], a
 	xor a
 	ld [$be46], a
-	ld hl, $dffc
+	ld hl, w3_dffc
 	ld de, $aa41
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
-	ld hl, $d202
+	ld hl, w3_d202Name
 	ld de, $aa8e
-	ld bc, $0594
+	ld bc, 7 * $cc ; length of battle tower struct from japanese games?
 	call CopyBytes
-	ld hl, $aa5d
+	ld hl, $aa5d ; some sort of count
 	ld a, [hl]
 	inc [hl]
 	inc hl
@@ -42,8 +44,8 @@
 	add hl, de
 	ld e, l
 	ld d, h
-	ld hl, $dffc
-	ld bc, $0004
+	ld hl, w3_dffc
+	ld bc, 4
 	call CopyBytes
 	call CloseSRAM
 	pop af
@@ -52,18 +54,18 @@
 ; 170114
 
 Function170114: ; 170114
-	call Function17021e
-	call Function170121
+	call InitBattleTowerChallengeRAM
+	call .Function170121
 	callba Function11805f
 	ret
 ; 170121
 
-Function170121: ; 170121
+.Function170121: ; 170121
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $a948
-	ld de, $c608
-	ld bc, $00f6
+	ld de, wMisc
+	ld bc, $f6 ; 246
 	call CopyBytes
 	call CloseSRAM
 	call Function170c8b
@@ -71,27 +73,29 @@
 ; 170139
 
 Function170139: ; 170139
+; Convert the 4-digit decimal number at 5:aa41 into binary
 	ld a, $5
 	call GetSRAMBank
 	ld de, $aa41
 	ld h, $0
 	ld l, h
-	ld bc, $03e8
-	call Function17020c
-	ld bc, $0064
-	call Function17020c
-	ld bc, $000a
-	call Function17020c
+	ld bc, 1000
+	call .DecToBin
+	ld bc, 100
+	call .DecToBin
+	ld bc, 10
+	call .DecToBin
 	ld a, [de]
 	ld c, a
 	ld b, $0
 	add hl, bc
 	call CloseSRAM
+; Store that number in wMisc
 	ld a, h
-	ld [$c608], a
+	ld [wMisc], a
 	ld a, l
-	ld [$c608 + 1], a
-	ld hl, $c628
+	ld [wMisc + 1], a
+	ld hl, wBT_OTTempPkmn1DVs
 	ld a, [PlayerID]
 	ld [hli], a
 	ld a, [PlayerID + 1]
@@ -103,31 +107,31 @@
 	ld e, l
 	ld d, h
 	ld hl, PlayerName
-	ld bc, $0005 ; Japanese name length
+	ld bc, 5 ; Japanese name length
 	call CopyBytes
 	ld bc, PlayerID
 	ld de, PlayerGender
 	callba Function4e929
-	ld de, $c62c + 5
+	ld de, wBT_OTTempPkmn1CaughtGender
 	ld a, c
 	ld [de], a
 	inc de
-	ld a, $df
+	ld a, PartyMons % $100
 	ld [wcd49], a
-	ld a, $dc
+	ld a, PartyMons / $100
 	ld [wcd4a], a
-	ld a, $41
+	ld a, PartyMonNicknames % $100
 	ld [wcd4b], a
-	ld a, $de
+	ld a, PartyMonNicknames / $100
 	ld [wcd4c], a
-	ld a, $3
-.asm_1701ac
+	ld a, 3
+.CopyLoop
 	push af
 	ld a, [wcd49]
 	ld l, a
 	ld a, [wcd4a]
 	ld h, a
-	ld bc, $0030
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	ld a, l
 	ld [wcd49], a
@@ -145,42 +149,42 @@
 	ld [wcd4c], a
 	pop af
 	dec a
-	jr nz, .asm_1701ac
+	jr nz, .CopyLoop
 	ld a, $4
 	call GetSRAMBank
 	ld hl, $a013
-	ld bc, $0024
+	ld bc, $24
 	call CopyBytes
 	call CloseSRAM
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $a894
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
-	ld hl, $c608
+	ld hl, wMisc
 	ld de, $a948
-	ld bc, $00f6
+	ld bc, $f6
 	call CopyBytes
 	call CloseSRAM
 	ret
 ; 17020c
 
-Function17020c: ; 17020c
+.DecToBin: ; 17020c
 	ld a, [de]
 	inc de
 	and a
 	ret z
 
-.loop
+.digit_loop
 	add hl, bc
 	dec a
-	jr nz, .loop
+	jr nz, .digit_loop
 	ret
 ; 170215
 
 BattleTowerBattle: ; 170215
 	xor a
-	ld [wcf63], a
+	ld [wBattleTowerBattleEnded], a
 	call _BattleTowerBattle
 	ret
 ; 17021d
@@ -189,10 +193,10 @@
 	ret
 ; 17021e
 
-Function17021e: ; 17021e
+InitBattleTowerChallengeRAM: ; 17021e
 	xor a
-	ld [wcf63], a
-	ld [wcf64], a
+	ld [wBattleTowerBattleEnded], a
+	ld [wNrOfBeatenBattleTowerTrainers], a
 	ld [wcf65], a
 	ld [wcf66], a
 	ret
@@ -200,19 +204,19 @@
 
 _BattleTowerBattle: ; 17022c
 .loop
-	call .do_jumptable
+	call .do_dw
 	call DelayFrame
-	ld a, [wcf63]
+	ld a, [wBattleTowerBattleEnded]
 	cp $1
 	jr nz, .loop
 	ret
 ; 17023a
 
-.do_jumptable: ; 17023a
-	ld a, [wcf63]
+.do_dw: ; 17023a
+	ld a, [wBattleTowerBattleEnded]
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -222,7 +226,7 @@
 	jp [hl]
 ; 170249
 
-.jumptable: ; 170249
+.dw: ; 170249
 	dw RunBattleTowerTrainer
 	dw SkipBattleTowerTrainer
 ; 17024d
@@ -256,10 +260,10 @@
 	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
 	call GetSRAMBank
 	ld a, [sNrOfBeatenBattleTowerTrainers]
-	ld [wNrOfBeatenBattleTowerTrainers], a ; wcf64
+	ld [wNrOfBeatenBattleTowerTrainers], a
 	call CloseSRAM
 	ld hl, StringBuffer3
-	ld a, [wNrOfBeatenBattleTowerTrainers] ; wcf64
+	ld a, [wNrOfBeatenBattleTowerTrainers]
 	add "1"
 	ld [hli], a
 	ld a, "@"
@@ -271,7 +275,7 @@
 	pop af
 	ld [Options], a
 	ld a, $1
-	ld [wcf63], a
+	ld [wBattleTowerBattleEnded], a
 	ret
 
 
@@ -479,7 +483,7 @@
 	ld e, l
 	push hl
 	push de
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	ld b, $1
 	predef CalcPkmnStats
@@ -508,7 +512,7 @@
 
 Function17042c: ; 17042c
 	ld hl, w3_d202TrainerData
-	ld a, 7
+	ld a, BATTLETOWER_NROFTRAINERS
 .loop
 	push af
 	push hl
@@ -521,7 +525,7 @@
 	ld a, [hli]
 	and a
 	jr z, .empty
-	cp $f
+	cp 15
 	jr nc, .copy_data
 
 	push hl
@@ -615,7 +619,7 @@
 	ld [rSVBK], a
 
 	ld hl, BT_OTTrainer ; $d100
-	ld de, wBT_OTTemp ; $c608
+	ld de, wBT_OTTemp ; wMisc
 	ld bc, BATTLE_TOWER_STRUCT_LENGTH
 	call CopyBytes
 
@@ -624,7 +628,7 @@
 
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
-	ld a, $2
+	ld a, BATTLETOWER_CHALLENGE_IN_PROGESS
 	ld [sBattleTowerChallengeState], a
 	ld hl, sNrOfBeatenBattleTowerTrainers
 	inc [hl]
@@ -632,7 +636,9 @@
 SkipBattleTowerTrainer: ; 1704c9
 	ret
 ; 1704ca
+
 Function1704ca: ; 1704ca
+; unreferenced mobile function
 	ld a, [$be46]
 	cp $7
 	jr c, .asm_1704d3
@@ -653,36 +659,37 @@
 ; 1704e1
 
 Function1704e1: ; 1704e1
+; unreferenced special
 	call SpeechTextBox
 	call FadeToMenu
-	call Function17021e
-	call Function1704f1
-	call ReturnToCallingMenu
+	call InitBattleTowerChallengeRAM
+	call .JumptableLoop
+	call CloseSubmenu
 	ret
 ; 1704f1
 
-Function1704f1: ; 1704f1
+.JumptableLoop: ; 1704f1
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
-.asm_1704fa
+.loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_17050f
-	call Function170510
+	jr nz, .done
+	call .DoJumptable
 	callba ReloadMapPart
-	jr .asm_1704fa
+	jr .loop
 
-.asm_17050f
+.done
 	ret
 ; 170510
 
-Function170510: ; 170510
+.DoJumptable: ; 170510
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_17051f
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -692,23 +699,23 @@
 	jp [hl]
 ; 17051f
 
-Jumptable_17051f: ; 17051f
-	dw Function170525
-	dw Function170571
-	dw Function170577
+.dw: ; 17051f
+	dw .Jumptable_0
+	dw .Jumptable_1
+	dw .Jumptable_2
 ; 170525
 
-Function170525: ; 170525
+.Jumptable_0: ; 170525
 	ld a, $5
 	call GetSRAMBank
 
 	ld hl, $a89c
 	ld de, StringBuffer3
-	ld bc, $0016
+	ld bc, $16
 	call CopyBytes
 
 	ld hl, $a8b2
-	ld de, $c608
+	ld de, wMisc
 	ld bc, $0096
 	call CopyBytes
 
@@ -717,118 +724,118 @@
 	ld de, StringBuffer3
 	call PlaceString
 	hlcoord 1, 3
-	ld de, String_170676
+	ld de, .String_Mail
 	call PlaceString
 	hlcoord 4, 3
 	ld de, StringBuffer4
 	call PlaceString
 	hlcoord 8, 3
-	ld de, String_17067a
+	ld de, .String_PastReaders
 	call PlaceString
-	call Function1705b7
-	call Function1705f0
-	jr Function1705b2
+	call .DrawBorder
+	call .PlaceTextItems
+	jr .NextJumptableFunction
 
 
-Function170571:
+.Jumptable_1:
 	call SetPalettes
-	call Function1705b2
+	call .NextJumptableFunction
 
 
-Function170577:
+.Jumptable_2:
 	ld hl, hJoyPressed
 	ld a, [hl]
-	and $1
-	jr nz, .asm_1705ac
+	and A_BUTTON
+	jr nz, .pressed_a_or_b
 	ld a, [hl]
-	and $2
-	jr nz, .asm_1705ac
+	and B_BUTTON
+	jr nz, .pressed_a_or_b
 	ld a, [hl]
-	and $40
-	jr nz, .asm_17058f
+	and D_UP
+	jr nz, .pressed_up
 	ld a, [hl]
-	and $80
-	jr nz, .asm_17059d
+	and D_DOWN
+	jr nz, .pressed_down
 	ret
 
-.asm_17058f
-	ld a, [wcf64]
+.pressed_up
+	ld a, [wNrOfBeatenBattleTowerTrainers]
 	and a
 	ret z
-	sub $f
-	ld [wcf64], a
-	call Function1705f0
+	sub 15
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	call .PlaceTextItems
 	ret
 
-.asm_17059d
-	ld a, [wcf64]
-	cp $3c
+.pressed_down
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	cp 60
 	ret z
-	add $f
-	ld [wcf64], a
-	call Function1705f0
+	add 15
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	call .PlaceTextItems
 	ret
 
-.asm_1705ac
+.pressed_a_or_b
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function1705b2:
+.NextJumptableFunction:
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 ; 1705b7
 
-Function1705b7: ; 1705b7
+.DrawBorder: ; 1705b7
 	hlcoord 0, 4
 	ld a, $79
 	ld [hli], a
-	ld c, $12
-.asm_1705bf
+	ld c, SCREEN_WIDTH - 2
+.top_border_loop
 	ld a, $7a
 	ld [hli], a
 	dec c
-	jr nz, .asm_1705bf
+	jr nz, .top_border_loop
 	ld a, $7b
 	ld [hli], a
-	ld de, $0014
-	ld c, $c
-.asm_1705cd
+	ld de, SCREEN_WIDTH
+	ld c, 12
+.left_border_loop
 	ld a, $7c
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_1705cd
+	jr nz, .left_border_loop
 	ld a, $7d
 	ld [hli], a
-	ld c, $12
-.asm_1705d9
+	ld c, SCREEN_WIDTH - 2
+.bottom_border_loop
 	ld a, $7a
 	ld [hli], a
 	dec c
-	jr nz, .asm_1705d9
+	jr nz, .bottom_border_loop
 	ld a, $7e
 	ld [hl], a
-	ld de, $ffec
+	ld de, -SCREEN_WIDTH
 	add hl, de
-	ld c, $c
-.asm_1705e8
+	ld c, 12
+.right_border_loop
 	ld a, $7c
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_1705e8
+	jr nz, .right_border_loop
 	ret
 ; 1705f0
 
-Function1705f0: ; 1705f0
-	call Function17064b
-	call Function17065d
+.PlaceTextItems: ; 1705f0
+	call .ClearBox
+	call .PlaceUpDownArrows
 	ld a, $50
 	ld [wcd4e], a
-	ld hl, $c608
-	ld a, [wcf64]
+	ld hl, wMisc
+	ld a, [wNrOfBeatenBattleTowerTrainers]
 	ld c, a
 	xor a
 	ld b, a
@@ -836,19 +843,20 @@
 	push hl
 	pop bc
 	hlcoord 1, 6
-	ld a, $6
-.asm_17060c
+	ld a, 6
+.loop1
 	push af
 	push hl
-	ld a, $3
-.asm_170610
+	ld a, 3
+.loop2
 	push af
 	ld de, wcd49
 	ld a, [bc]
 	and a
-	jr z, .asm_170625
-	ld a, $5
-.asm_17061a
+	jr z, .fill_with_e3
+; .copy
+	ld a, 5
+.loop3a
 	push af
 	ld a, [bc]
 	ld [de], a
@@ -856,12 +864,12 @@
 	inc de
 	pop af
 	dec a
-	jr nz, .asm_17061a
-	jr .asm_170631
+	jr nz, .loop3a
+	jr .rejoin
 
-.asm_170625
-	ld a, $5
-.asm_170627
+.fill_with_e3
+	ld a, 5
+.loop3b
 	push af
 	ld a, $e3
 	ld [de], a
@@ -869,68 +877,68 @@
 	inc bc
 	pop af
 	dec a
-	jr nz, .asm_170627
+	jr nz, .loop3b
 
-.asm_170631
+.rejoin
 	ld de, wcd49
 	push bc
 	call PlaceString
-	ld de, $0006
+	ld de, 6
 	add hl, de
 	pop bc
 	pop af
 	dec a
-	jr nz, .asm_170610
+	jr nz, .loop2
 	pop hl
-	ld de, $0028
+	ld de, $28
 	add hl, de
 	pop af
 	dec a
-	jr nz, .asm_17060c
+	jr nz, .loop1
 	ret
 ; 17064b
 
-Function17064b: ; 17064b
+.ClearBox: ; 17064b
 	hlcoord 1, 5
 	xor a
-	ld b, $c
-.asm_170651
-	ld c, $12
-.asm_170653
+	ld b, 12
+.clearbox_row
+	ld c, SCREEN_WIDTH - 2
+.clearbox_column
 	ld [hli], a
 	dec c
-	jr nz, .asm_170653
+	jr nz, .clearbox_column
 rept 2
 	inc hl
 endr
 	dec b
-	jr nz, .asm_170651
+	jr nz, .clearbox_row
 	ret
 ; 17065d
 
-Function17065d: ; 17065d
-	ld a, [wcf64]
+.PlaceUpDownArrows: ; 17065d
+	ld a, [wNrOfBeatenBattleTowerTrainers]
 	and a
-	jr z, .asm_170669
+	jr z, .nope
 	hlcoord 18, 5
-	ld a, $61
+	ld a, "▲"
 	ld [hl], a
 
-.asm_170669
-	ld a, [wcf64]
-	cp $3c
+.nope
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	cp 60
 	ret z
 	hlcoord 18, 16
-	ld a, $ee
+	ld a, "▼"
 	ld [hl], a
 	ret
 ; 170676
 
-String_170676: ; 170676
+.String_Mail: ; 170676
 	db "ルーム@"
 ; 17067a
 
-String_17067a: ; 17067a
+.String_PastReaders: ; 17067a
 	db "れきだいりーダーいちらん@"
 ; 170687
 
@@ -938,7 +946,7 @@
 	ld a, [ScriptVar]
 	ld e, a
 	ld d, 0
-	ld hl, .jumptable
+	ld hl, .dw
 rept 2
 	add hl, de
 endr
@@ -949,17 +957,17 @@
 ; 170696
 
 
-.jumptable: ; 170696 (5c:4696)
+.dw: ; 170696 (5c:4696)
 	dw Function17075f ; 0x00
 	dw Function170788 ; 0x01
 	dw Function170778 ; 0x02
-	dw Function170799 ; 0x03
-	dw Function17079d ; 0x04
+	dw BattleTowerAction_SetByteToQuickSaveChallenge ; 0x03
+	dw BattleTowerAction_SetByteToCancelChallenge ; 0x04
 	dw Function1707ac ; 0x05
 	dw Function1707f4 ; 0x06
-	dw Function170868 ; 0x07
-	dw Function170881 ; 0x08
-	dw Function17089a ; 0x09
+	dw SaveBattleTowerLevelGroup ; 0x07
+	dw LoadBattleTowerLevelGroup ; 0x08
+	dw BattleTower_CheckSaveFileExistsAndIsYours ; 0x09
 	dw Function1708b1 ; 0x0a
 	dw CheckMobileEventIndex ; 0x0b
 	dw Function1708c8 ; 0x0c
@@ -977,11 +985,11 @@
 	dw Function170ae8 ; 0x18
 	dw Function170b16 ; 0x19
 	dw ResetBattleTowerTrainersSRAM ; 0x1a
-	dw Function1706ee ; 0x1b
+	dw BattleTower_GiveReward ; 0x1b
 	dw Function17071b ; 0x1c
 	dw Function170729 ; 0x1d
-	dw Function17073e ; 0x1e
-	dw Function170737 ; 0x1f
+	dw BattleTower_RandomlyChooseReward ; 0x1e
+	dw BattleTower_SaveOptions ; 0x1f
 
 
 ; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
@@ -1001,7 +1009,7 @@
 
 	ret
 
-Function1706ee: ; 1706ee (5c:46ee) BattleTowerAction $1b
+BattleTower_GiveReward: ; 1706ee (5c:46ee) BattleTowerAction $1b
 	ld a, BANK(sBattleTowerReward)
 	call GetSRAMBank
 
@@ -1033,7 +1041,7 @@
 Function17071b: ; 17071b (5c:471b) BattleTowerAction $1c
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
-	ld a, $3
+	ld a, BATTLETOWER_WON_CHALLENGE
 	ld [sBattleTowerChallengeState], a
 	call CloseSRAM
 	ret
@@ -1041,16 +1049,16 @@
 Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
-	ld a, $4
+	ld a, BATTLETOWER_RECEIVED_REWARD
 	ld [sBattleTowerChallengeState], a
 	call CloseSRAM
 	ret
 
-Function170737: ; 170737 (5c:4737) BattleTowerAction $1e
+BattleTower_SaveOptions: ; 170737 (5c:4737) BattleTowerAction $1f
 	callba SaveOptions
 	ret
 
-Function17073e: ; 17073e (5c:473e) BattleTowerAction $1f
+BattleTower_RandomlyChooseReward: ; 17073e (5c:473e) BattleTowerAction $1e
 ; Generate a random stat boosting item.
 .loop
 	call Random
@@ -1072,7 +1080,7 @@
 	ret
 
 Function17075f: ; 17075f (5c:475f) BattleTowerAction $00
-	call Function17089a
+	call BattleTower_CheckSaveFileExistsAndIsYours
 	ld a, [ScriptVar]
 	and a
 	ret z
@@ -1103,12 +1111,12 @@
 	call CloseSRAM
 	ret
 
-Function170799: ; 170799 (5c:4799) BattleTowerAction $03
-	ld c, $1
+BattleTowerAction_SetByteToQuickSaveChallenge: ; 170799 (5c:4799) BattleTowerAction $03
+	ld c, BATTLETOWER_SAVED_AND_LEFT
 	jr asm_17079f
 
-Function17079d: ; 17079d (5c:479d) BattleTowerAction $04
-	ld c, $0
+BattleTowerAction_SetByteToCancelChallenge: ; 17079d (5c:479d) BattleTowerAction $04
+	ld c, BATTLETOWER_NO_CHALLENGE
 asm_17079f: ; 17079f (5c:479f)
 	ld a, BANK(sBattleTowerChallengeState)
 	call GetSRAMBank
@@ -1203,9 +1211,10 @@
 	and a
 	jr nz, .asm_170853
 	ret
+
 .asm_170849
 	ld hl, CurDay
-	ld a, $8c
+	ld a, 140
 	sub c
 	add [hl]
 	cp $b
@@ -1221,39 +1230,39 @@
 	call CloseSRAM
 	ret
 
-Function170868: ; 170868 (5c:4868) BattleTowerAction $07
-	ld a, BANK(sbe47)
+SaveBattleTowerLevelGroup: ; 170868 (5c:4868) BattleTowerAction $07
+	ld a, BANK(sBTChoiceOfLevelGroup)
 	call GetSRAMBank
 	ld a, [rSVBK]
 	push af
 	ld a, $3
 	ld [rSVBK], a
-	ld a, [wd000 + $800]
-	ld [sbe47], a
+	ld a, [wBTChoiceOfLvlGroup]
+	ld [sBTChoiceOfLevelGroup], a
 	pop af
 	ld [rSVBK], a
 	call CloseSRAM
 	ret
 
-Function170881: ; 170881 (5c:4881) BattleTowerAction $08
-	ld a, BANK(sbe47)
+LoadBattleTowerLevelGroup: ; 170881 (5c:4881) BattleTowerAction $08 ; Load level group choice
+	ld a, BANK(sBTChoiceOfLevelGroup)
 	call GetSRAMBank
 	ld a, [rSVBK]
 	push af
 	ld a, $3
 	ld [rSVBK], a
-	ld a, [sbe47]
-	ld [wd000 + $800], a
+	ld a, [sBTChoiceOfLevelGroup]
+	ld [wBTChoiceOfLvlGroup], a
 	pop af
 	ld [rSVBK], a
 	call CloseSRAM
 	ret
 
-Function17089a: ; 17089a BattleTowerAction $09
+BattleTower_CheckSaveFileExistsAndIsYours: ; 17089a BattleTowerAction $09
 	ld a, [wSaveFileExists]
 	and a
 	jr z, .nope
-	callba Function14bcb
+	callba CompareLoadedAndSavedPlayerID
 	jr z, .yes
 	xor a
 	jr .nope
@@ -1359,7 +1368,7 @@
 	jr nz, .not_egg
 	push hl
 	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
-	ld de, $6
+	ld de, $6 ; NAME_LENGTH
 	ld a, b
 	and a
 	jr z, .skip
@@ -1369,21 +1378,21 @@
 	jr nz, .loop2
 .skip
 	ld de, String_1709a4
-	ld a, $6
-.asm_17096e
+	ld a, $6 ; NAME_LENGTH
+.compare_loop
 	push af
 	ld a, [de]
 	inc de
 	cp [hl]
 	inc hl
-	jr nz, .asm_17099d
+	jr nz, .different
 	pop af
 	dec a
-	jr nz, .asm_17096e
+	jr nz, .compare_loop
 rept 4
 	dec hl
 endr
-	ld a, $50
+	ld a, "@"
 rept 2
 	ld [hli], a
 endr
@@ -1390,10 +1399,10 @@
 	pop hl
 	ld a, EGG_TICKET
 	ld [CurItem], a
-	ld a, $1
+	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
-	ld a, $ff
-	ld [wd107], a
+	ld a, -1
+	ld [CurItemQuantity], a
 	ld hl, NumItems
 	call TossItem
 	ld a, $1
@@ -1400,7 +1409,7 @@
 	ld [ScriptVar], a
 	ret
 
-.asm_17099d
+.different
 	pop af
 	pop hl
 .not_egg
@@ -1454,15 +1463,15 @@
 ; 1709e7 (5c:49e7)
 
 Jumptable_1709e7: ; 1709e7
-	dw Function170a00
-	dw Function170a00
-	dw Function1709f3
-	dw Function1709f3
-	dw Function170a01
-	dw Function170a33
+	dw .NoAction
+	dw .NoAction
+	dw .DoAction1
+	dw .DoAction1
+	dw .Action4
+	dw .Action5
 ; 1709f3
 
-Function1709f3: ; 1709f3
+.DoAction1: ; 1709f3
 	ld a, $5
 	call GetSRAMBank
 	ld a, $1
@@ -1469,15 +1478,15 @@
 	ld [$a800], a
 	call CloseSRAM
 
-Function170a00: ; 170a00
+.NoAction: ; 170a00
 	ret
 ; 170a01
 
-Function170a01: ; 170a01
+.Action4: ; 170a01
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $b023
-	ld de, $c608
+	ld de, wMisc
 	ld bc, $0069
 	call CopyBytes
 	ld a, [$a825]
@@ -1492,11 +1501,11 @@
 	ret
 ; 170a33
 
-Function170a33: ; 170a33
+.Action5: ; 170a33
 	ld a, $0
 	call GetSRAMBank
 	ld hl, wRTC
-	ld de, $c608
+	ld de, wMisc
 	ld bc, $0004
 	call CopyBytes
 	call CloseSRAM
@@ -1503,16 +1512,16 @@
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $b08c
-	ld de, $c608
+	ld de, wMisc
 	ld c, $4
-.asm_170a54
+.compare_loop
 	ld a, [de]
 	inc de
 	cp [hl]
-	jr nz, .asm_170a78
+	jr nz, .different
 	inc hl
 	dec c
-	jr nz, .asm_170a54
+	jr nz, .compare_loop
 	call CloseSRAM
 	ld a, [MapGroup]
 	ld b, a
@@ -1521,17 +1530,17 @@
 	call GetMapTrigger
 	ld a, d
 	or e
-	jr z, .asm_170a72
+	jr z, .no_trigger
 	ld a, [de]
 	and a
 	ret nz
 
-.asm_170a72
+.no_trigger
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 
-.asm_170a78
+.different
 	call CloseSRAM
 	ld a, $5
 	call GetSRAMBank
@@ -1546,11 +1555,11 @@
 	call GetMapTrigger
 	ld a, d
 	or e
-	jr z, .asm_170a9b
+	jr z, .no_trigger_2
 	xor a
 	ld [de], a
 
-.asm_170a9b
+.no_trigger_2
 	ret
 ; 170a9c
 
@@ -1577,10 +1586,11 @@
 	ret
 
 Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
-	call Function17089a
+	call BattleTower_CheckSaveFileExistsAndIsYours
 	ld a, [ScriptVar]
 	and a
 	ret z
+
 	ld a, BANK(sbe4f)
 	call GetSRAMBank
 	ld a, [sbe4f]
@@ -1603,13 +1613,13 @@
 	call GetSRAMBank
 	ld a, [$b2fb]
 	call CloseSRAM
-	ld c, $a
+	ld c, 10
 	call SimpleDivide
 	ld a, b
 	ld [wcd4f], a
 	xor a
 	ld [ScriptVar], a
-	callba Function119d93
+	callba Function119d93 ; level check
 	ret nc
 	ld a, $5
 	call GetSRAMBank
@@ -1629,7 +1639,7 @@
 	ld [wcd4f], a
 	xor a
 	ld [ScriptVar], a
-	callba Function119dd1
+	callba Function119dd1 ; ubers check
 	ret nc
 	ld a, $5
 	call GetSRAMBank
@@ -1637,3 +1647,134 @@
 	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, BT_OTTrainerClass
+	ld a, [hl]
+	dec a
+	ld c, a
+	ld b, $0
+	pop af
+	ld [rSVBK], a
+	ld hl, .Sprites
+	add hl, bc
+	ld a, [hl]
+	ld [wBTTempOTSprite], a
+
+; Load sprite of the opponent trainer
+; because s/he is chosen randomly and appears out of nowhere
+	ld a, [ScriptVar]
+	dec a
+	sla a
+	ld e, a
+	sla a
+	sla a
+	sla a
+	ld c, a
+	ld b, 0
+	ld d, 0
+	ld hl, MapObjects
+	add hl, bc
+	inc hl
+	ld a, [wBTTempOTSprite]
+	ld [hl], a
+	ld hl, UsedSprites
+	add hl, de
+	ld [hli], a
+	ld [hUsedSpriteIndex], a
+	ld a, [hl]
+	ld [hUsedSpriteTile], a
+	callba GetUsedSprite
+	ret
+; 170b90
+
+.Sprites:
+	db SPRITE_FALKNER
+	db SPRITE_WHITNEY
+	db SPRITE_BUGSY
+	db SPRITE_MORTY
+	db SPRITE_PRYCE
+	db SPRITE_JASMINE
+	db SPRITE_CHUCK
+	db SPRITE_CLAIR
+	db SPRITE_SILVER
+	db SPRITE_OAK
+	db SPRITE_WILL
+	db SPRITE_CHRIS
+	db SPRITE_BRUNO
+	db SPRITE_KAREN
+	db SPRITE_KOGA
+	db SPRITE_LANCE
+	db SPRITE_BROCK
+	db SPRITE_MISTY
+	db SPRITE_SURGE
+	db SPRITE_SCIENTIST
+	db SPRITE_ERIKA
+	db SPRITE_YOUNGSTER
+	db SPRITE_YOUNGSTER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_JANINE
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_BUENA
+	db SPRITE_SUPER_NERD
+	db SPRITE_ROCKET
+	db SPRITE_GENTLEMAN
+	db SPRITE_BUENA
+	db SPRITE_TEACHER
+	db SPRITE_SABRINA
+	db SPRITE_BUG_CATCHER
+	db SPRITE_FISHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SAILOR
+	db SPRITE_SUPER_NERD
+	db SPRITE_BLUE
+	db SPRITE_ROCKER
+	db SPRITE_POKEFAN_M
+	db SPRITE_BIKER
+	db SPRITE_BLAINE
+	db SPRITE_PHARMACIST
+	db SPRITE_FISHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BLACK_BELT
+	db SPRITE_ROCKET
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_YOUNGSTER
+	db SPRITE_ROCKET_GIRL
+	db SPRITE_SAGE
+	db SPRITE_GRANNY
+	db SPRITE_ROCKER
+	db SPRITE_POKEFAN_M
+	db SPRITE_KIMONO_GIRL
+	db SPRITE_TWIN
+	db SPRITE_POKEFAN_F
+	db SPRITE_RED
+	db SPRITE_BLUE
+	db SPRITE_OFFICER
+	db SPRITE_ROCKET_GIRL
+
+ret_170bd2: ; 170bd2
+	ret
+; 170bd3
+
+SpecialCheckForBattleTowerRules: ; 170bd3
+	callba CheckForBattleTowerRules
+	jr c, .asm_170bde
+	xor a
+	jr .asm_170be0
+
+.asm_170bde
+	ld a, $1
+
+.asm_170be0
+	ld [ScriptVar], a
+	ret
+; 170be4
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -49,7 +49,7 @@
 	call Function17ac0c
 	callba Function104000
 	call Function17abcf
-	callba Function49409
+	callba LoadOW_BGPal7
 	callba Function49420
 	call SetPalettes
 	call DelayFrame
--- a/misc/fixed_words.asm
+++ b/misc/fixed_words.asm
@@ -21,6 +21,7 @@
 	ld b, h
 	scf
 	ret
+
 ; 11c075
 
 Function11c075: ; 11c075
@@ -31,6 +32,7 @@
 	ld bc, wcd36
 	call Function11c08f
 	ret
+
 ; 11c082
 
 Function11c082: ; 11c082
@@ -41,6 +43,7 @@
 	ld bc, wcd36
 	call Function11c0c6
 	ret
+
 ; 11c08f
 
 Function11c08f: ; 11c08f
@@ -93,6 +96,7 @@
 	dec a
 	jr nz, .asm_11c0b0
 	ret
+
 ; 11c0c6
 
 
@@ -187,6 +191,7 @@
 	ld a, h
 	ld [wcf64], a
 	ret
+
 ; 11c14a
 
 Function11c14a: ; 11c14a
@@ -211,8 +216,8 @@
 	call ByteFill
 	ld a, d
 	and a
-	jr z, .asm_11c19c
-	ld hl, Unknown_11daac
+	jr z, .get_name
+	ld hl, MobileFixedWordCategoryPointers
 	dec d
 	sla d
 	ld c, d
@@ -233,8 +238,8 @@
 	sla c
 	rl b
 	add hl, bc
-	ld bc, $0005
-.asm_11c18f
+	ld bc, 5 ; length of a string
+.loop
 	ld de, $c608
 	call CopyBytes
 	ld de, $c608
@@ -242,13 +247,13 @@
 	ld [rSVBK], a
 	ret
 
-.asm_11c19c
+.get_name
 	ld a, e
 	ld [wd265], a
 	call GetPokemonName
 	ld hl, StringBuffer1
-	ld bc, $000a
-	jr .asm_11c18f
+	ld bc, PKMN_NAME_LENGTH - 1
+	jr .loop
 ; 11c1ab
 
 Function11c1ab: ; 11c1ab
@@ -260,6 +265,7 @@
 	pop af
 	ld [hInMenu], a
 	ret
+
 ; 11c1b9
 
 Function11c1b9: ; 11c1b9
@@ -272,6 +278,7 @@
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 11c1ca
 
 Function11c1ca: ; 11c1ca
@@ -281,14 +288,14 @@
 	ld [wcf65], a
 	ld [wcf66], a
 	ld [wcd23], a
-	ld [BGMapBuffer], a
+	ld [wcd20], a
 	ld [wcd21], a
-	ld [CreditsTimer], a
+	ld [wcd22], a
 	ld [wcd35], a
 	ld [wcd2b], a
 	ld a, $ff
 	ld [wcd24], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	call Function11c254
 	call ClearBGPalettes
@@ -306,9 +313,9 @@
 	call Decompress
 	call EnableLCD
 	callba ReloadMapPart
-	callba Function8cf53
+	callba ClearSpriteAnims
 	callba LoadPokemonData
-	callba Function40c30
+	callba Pokedex_ABCMode
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -322,6 +329,7 @@
 	call Function11d4aa
 	call Function11d3ba
 	ret
+
 ; 11c254
 
 Function11c254: ; 11c254
@@ -343,6 +351,7 @@
 	call CopyBytes
 	call CloseSRAM
 	ret
+
 ; 11c277
 
 
@@ -362,28 +371,19 @@
 	bit 7, a
 	jr nz, .exit
 	call .DoJumptableFunction
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	callba ReloadMapPart
 	jr .loop
 
 .exit
-	callba Function8cf53
+	callba ClearSpriteAnims
 	call ClearSprites
 	ret
+
 ; 11c2ac
 
 .DoJumptableFunction: ; 11c2ac
-	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]
+	jumptable .Jumptable, wJumptableIndex
 ; 11c2bb
 
 
@@ -470,12 +470,10 @@
 
 Function11c35f: ; 11c35f (47:435f)
 	ld hl, wcd2f
-rept 2
 	inc [hl]
-endr
-rept 2
+	inc [hl]
 	dec hl
-endr
+	dec hl
 	dec [hl]
 	push af
 	ld de, wcd2d
@@ -486,12 +484,10 @@
 
 Function11c373: ; 11c373 (47:4373)
 	ld hl, wcd30
-rept 2
 	inc [hl]
-endr
-rept 2
+	inc [hl]
 	dec hl
-endr
+	dec hl
 	dec [hl]
 	push af
 	ld de, wcd2d
@@ -539,6 +535,7 @@
 	dec a
 	jr nz, .asm_11c392
 	ret
+
 ; 11c3bc (47:43bc)
 
 String_11c3bc: ; 11c3bc
@@ -563,7 +560,7 @@
 	call Function11cfb5
 
 Function11c3ed: ; 11c3ed (47:43ed)
-	ld hl, BGMapBuffer ; wcd20 (aliases: CreditsPos)
+	ld hl, wcd20 ; wcd20 (aliases: CreditsPos)
 	ld de, hJoypadPressed ; $ffa3
 	ld a, [de]
 	and $8
@@ -588,6 +585,7 @@
 	and $10
 	jr nz, .asm_11c498
 	ret
+
 .asm_11c41a
 	call PlayClickSFX
 .asm_11c41d
@@ -597,10 +595,11 @@
 	jr .asm_11c475
 .asm_11c426
 	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+	ld [wcd20], a ; wcd20 (aliases: CreditsPos)
 	ret
+
 .asm_11c42c
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	cp $6
 	jr c, .asm_11c472
 	sub $6
@@ -642,6 +641,7 @@
 	ld [wJumptableIndex], a
 	call PlayClickSFX
 	ret
+
 .asm_11c47c
 	ld a, [hl]
 	cp $3
@@ -687,9 +687,10 @@
 	ld [wcd21], a
 	ld a, $6
 	ret
+
 .asm_11c4b7
 	xor a
-	ld [CreditsTimer], a
+	ld [wcd22], a
 	ld a, $15
 	ret
 
@@ -704,6 +705,7 @@
 	call ByteFill
 	callba ReloadMapPart
 	ret
+
 ; 11c4db (47:44db)
 
 String_11c4db: ; 11c4db
@@ -780,7 +782,7 @@
 	ld hl, wcd24
 	set 0, [hl]
 	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+	ld [wcd20], a ; wcd20 (aliases: CreditsPos)
 
 .b
 	ld a, $4
@@ -808,7 +810,7 @@
 	ret
 
 .asm_11c5ab
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	call Function11ca6a
 	call PlayClickSFX
 	ret
@@ -863,10 +865,11 @@
 .asm_11c5ee
 	ld [hl], a
 	ret
+
 ; 11c5f0
 
 Function11c5f0: ; 11c5f0 (47:45f0)
-	ld de, Strings_11da52
+	ld de, MobileFixedWordCategoryNames
 	ld bc, Unknown_11c63a
 	ld a, $f
 .asm_11c5f8
@@ -900,6 +903,7 @@
 	call ByteFill
 	callba ReloadMapPart
 	ret
+
 ; 11c62a (47:462a)
 
 String_11c62a: ; 11c62a
@@ -1024,6 +1028,7 @@
 	set 3, [hl]
 	call PlayClickSFX
 	ret
+
 .asm_11c708
 	ld a, [hl]
 	cp $3
@@ -1117,6 +1122,7 @@
 .asm_11c795
 	ld [wcd29], a
 	ret
+
 .asm_11c799
 	ld a, [wc7d2]
 	ld [wcd28], a
@@ -1131,12 +1137,11 @@
 	jr .asm_11c795
 .asm_11c7ab
 	ld hl, $c68a + 30
-	ld a, [CreditsTimer]
+	ld a, [wcd22]
 	ld c, a
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hl]
 	ld [wcd28], a
 	jr .asm_11c79f
@@ -1172,6 +1177,7 @@
 	cp e
 	jr nz, .asm_11c7d0
 	ret
+
 .asm_11c7e9
 	ld hl, wd100
 	ld a, [wcd26]
@@ -1202,18 +1208,19 @@
 	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
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -1223,9 +1230,8 @@
 	ld a, [wcd26]
 	ld e, a
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [wcd26]
 	ld e, a
 .asm_11c831
@@ -1254,10 +1260,12 @@
 	cp e
 	jr nz, .asm_11c831
 	ret
+
 .asm_11c851
 	pop hl
 	pop de
 	ret
+
 ; 11c854 (47:4854)
 
 Unknown_11c854: ; 11c854
@@ -1281,7 +1289,7 @@
 	and a
 	jr z, .asm_11c88a
 	hlcoord 2, 17
-	ld de, String_11c8f0
+	ld de, MobileString_Prev
 	call PlaceString
 	hlcoord 6, 17
 	ld c, $3
@@ -1308,7 +1316,7 @@
 	cp [hl]
 	jr nc, .asm_11c8b7
 	hlcoord 16, 17
-	ld de, String_11c8f3
+	ld de, MobileString_Next
 	call PlaceString
 	hlcoord 11, 17
 	ld a, $3
@@ -1319,6 +1327,7 @@
 	dec c
 	jr nz, .asm_11c8b1
 	ret
+
 .asm_11c8b7
 	hlcoord 17, 16
 	ld a, $7f
@@ -1330,9 +1339,10 @@
 	dec c
 	jr nz, .asm_11c8c2
 	ret
+
 ; 11c8c7 (47:48c7)
 
-Function11c8c7: ; 11c8c7
+BCD2String: ; 11c8c7
 	inc a
 	push af
 	and $f
@@ -1340,35 +1350,36 @@
 	pop af
 	and $f0
 	swap a
-	ld [hQuotient], a
+	ld [hDividend + 1], a
 	xor a
-	ld [$ffb5], a
+	ld [hDividend + 2], a
 	push hl
 	callba Function11a80c
 	pop hl
 	ld a, [wcd63]
-	add $f6
+	add "0"
 	ld [hli], a
 	ld a, [wcd62]
-	add $f6
+	add "0"
 	ld [hli], a
 	ret
+
 ; 11c8ec
 
-String_11c8ec: ; 11c8ec
+MobileString_Page: ; 11c8ec
 	db "ぺージ@"
 ; 11c8f0
 
-String_11c8f0: ; 11c8f0
+MobileString_Prev: ; 11c8f0
 	db "まえ@"
 ; 11c8f3
 
-String_11c8f3: ; 11c8f3
+MobileString_Next: ; 11c8f3
 	db "つぎ@"
 ; 11c8f6
 
 Function11c8f6: ; 11c8f6 (47:48f6)
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	call Function11c95d
 	push hl
 	ld a, [wcd2b]
@@ -1388,17 +1399,17 @@
 	push de
 	call Function11c05d
 	pop de
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	ld c, a
 	ld b, $0
 	ld hl, wcd36
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld [hl], e
 	inc hl
 	ld [hl], d
 	ret
+
 .asm_11c927
 	ld hl, wcd26
 	ld a, [wcd25]
@@ -1414,9 +1425,8 @@
 	ld a, [wcd22]
 	ld e, a
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -1426,14 +1436,12 @@
 	ld a, [wcd26]
 	ld e, a
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [wcd25]
 	ld e, a
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -1472,6 +1480,7 @@
 	jr nz, .asm_11c980
 	pop hl
 	ret
+
 ; 11c986 (47:4986)
 
 Unknown_11c986:
@@ -1528,6 +1537,7 @@
 	and $80
 	jr nz, .asm_11c9fc
 	ret
+
 .asm_11c9de
 	ld a, [hl]
 	and a
@@ -1534,7 +1544,7 @@
 	jr nz, .asm_11c9e9
 	call Function11ca5e
 	xor a
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+	ld [wcd20], a ; wcd20 (aliases: CreditsPos)
 .asm_11c9e9
 	ld hl, wcd24
 	set 4, [hl]
@@ -1542,6 +1552,7 @@
 	ld [wJumptableIndex], a
 	call PlayClickSFX
 	ret
+
 .asm_11c9f7
 	ld a, [hl]
 	and a
@@ -1548,6 +1559,7 @@
 	ret z
 	dec [hl]
 	ret
+
 .asm_11c9fc
 	ld a, [hl]
 	and a
@@ -1594,6 +1606,7 @@
 	jr nz, .asm_11ca22
 	callba ReloadMapPart
 	ret
+
 ; 11ca38 (47:4a38)
 
 String_11ca38: ; 11ca38
@@ -1621,9 +1634,8 @@
 	ld hl, wcd36
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld [hl], b
 	inc hl
 	ld [hl], b
@@ -1672,6 +1684,7 @@
 	and $80
 	jr nz, .asm_11cb17
 	ret
+
 .asm_11cace
 	call PlayClickSFX
 	ld a, [hl]
@@ -1690,10 +1703,12 @@
 	ld a, $1
 	ld [wcd2a], a
 	ret
+
 .asm_11caf3
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
+
 .asm_11caf9
 	call PlayClickSFX
 .asm_11cafc
@@ -1707,6 +1722,7 @@
 	ld a, $1
 	ld [wcd35], a
 	ret
+
 .asm_11cb12
 	ld a, [hl]
 	and a
@@ -1713,6 +1729,7 @@
 	ret z
 	dec [hl]
 	ret
+
 .asm_11cb17
 	ld a, [hl]
 	and a
@@ -1719,6 +1736,7 @@
 	ret nz
 	inc [hl]
 	ret
+
 ; 11cb1c (47:4b1c)
 
 String_11cb1c: ; 11cb1c
@@ -1733,13 +1751,12 @@
 
 Function11cb52: ; 11cb52 (47:4b52)
 	ld hl, Unknown_11cc01
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 .asm_11cb58
 	dec a
 	jr z, .asm_11cb5f
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .asm_11cb58
 .asm_11cb5f
 	ld a, [hli]
@@ -1764,6 +1781,7 @@
 	and $80
 	jr nz, .asm_11cbf0
 	ret
+
 .asm_11cb81
 	ld a, [hl]
 	and a
@@ -1771,7 +1789,7 @@
 	ld a, $4
 	call GetSRAMBank
 	ld hl, $a007
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	sla a
 	sla a
@@ -1794,13 +1812,12 @@
 	ld de, Unknown_11cfc6
 	call Function11cfce
 	ld hl, Unknown_11cc7e
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 .asm_11cbba
 	dec a
 	jr z, .asm_11cbc1
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .asm_11cbba
 .asm_11cbc1
 	ld a, [hli]
@@ -1815,6 +1832,7 @@
 	ld a, $10
 	ld [hl], a
 	ret
+
 .asm_11cbd4
 	call PlayClickSFX
 .asm_11cbd7
@@ -1826,6 +1844,7 @@
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
+
 .asm_11cbeb
 	ld a, [hl]
 	and a
@@ -1832,6 +1851,7 @@
 	ret z
 	dec [hl]
 	ret
+
 .asm_11cbf0
 	ld a, [hl]
 	and a
@@ -1847,6 +1867,7 @@
 	dec hl
 	set 7, [hl]
 	ret
+
 ; 11cc01 (47:4c01)
 
 Unknown_11cc01: ; 11cc01
@@ -1912,6 +1933,7 @@
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
+
 ; 11cd10 (47:4d10)
 
 String_11cd10: ; 11cd10
@@ -2011,6 +2033,7 @@
 	call ByteFill
 	callba ReloadMapPart
 	ret
+
 ; 11cdc7 (47:4dc7)
 
 String_11cdc7: ; 11cdc7
@@ -2044,7 +2067,7 @@
 	call Function11cfb5
 
 Function11ce2b: ; 11ce2b (47:4e2b)
-	ld a, [CreditsTimer]
+	ld a, [wcd22]
 	sla a
 	sla a
 	ld c, a
@@ -2083,7 +2106,7 @@
 	ret
 
 .a
-	ld a, [CreditsTimer]
+	ld a, [wcd22]
 	cp NUM_KANA
 	jr c, .place
 	sub NUM_KANA
@@ -2096,7 +2119,7 @@
 	ld hl, wcd24
 	set 0, [hl]
 	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+	ld [wcd20], a ; wcd20 (aliases: CreditsPos)
 .b
 	ld a, $4
 	jr .load
@@ -2122,7 +2145,7 @@
 	ret
 
 .asm_11cea4
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	call Function11ca6a
 	call PlayClickSFX
 	ret
@@ -2137,60 +2160,109 @@
 	ld a, [hl]
 	cp $ff
 	ret z
-	ld [CreditsTimer], a
+	ld [wcd22], 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
+	db $ff, $01
+	db $05, $ff
+	db $ff, $02
+	db $06, $00
+	db $ff, $03
+	db $07, $01
+	db $ff, $04
+	db $08, $02
+	db $ff, $14
+	db $09, $03
+	db $00, $06
+	db $0a, $ff
+	db $01, $07
+	db $0b, $05
+	db $02, $08
+	db $0c, $06
+	db $03, $09
+	db $0d, $07
+	db $04, $19
+	db $0e, $08
+	db $05, $0b
+	db $0f, $ff
+	db $06, $0c
+	db $10, $0a
+	db $07, $0d
+	db $11, $0b
+	db $08, $0e
+	db $12, $0c
+	db $09, $1e
+	db $13, $0d
+	db $0a, $10
+	db $2d, $ff
+	db $0b, $11
+	db $2d, $0f
+	db $0c, $12
+	db $2d, $10
+	db $0d, $13
+	db $2d, $11
+	db $0e, $26
+	db $2d, $12
+	db $ff, $15
+	db $19, $04
+	db $ff, $16
+	db $1a, $14
+	db $ff, $17
+	db $1b, $15
+	db $ff, $18
+	db $1c, $16
+	db $ff, $23
+	db $1d, $17
+	db $14, $1a
+	db $1e, $09
+	db $15, $1b
+	db $1f, $19
+	db $16, $1c
+	db $20, $1a
+	db $17, $1d
+	db $21, $1b
+	db $18, $2b
+	db $22, $1c
+	db $19, $1f
+	db $26, $0e
+	db $1a, $20
+	db $27, $1e
+	db $1b, $21
+	db $28, $1f
+	db $1c, $22
+	db $29, $20
+	db $1d, $2c
+	db $2a, $21
+	db $ff, $24
+	db $2b, $18
+	db $ff, $25
+	db $2b, $23
+	db $ff, $ff
+	db $2b, $24
+	db $1e, $27
+	db $2e, $13
+	db $1f, $28
+	db $2e, $26
+	db $20, $29
+	db $2e, $27
+	db $21, $2a
+	db $2e, $28
+	db $22, $ff
+	db $2e, $29
+	db $23, $ff
+	db $2c, $1d
+	db $2b, $ff
+	db $2f, $22
+	db $0f, $2e
+	db $ff, $ff
+	db $26, $2f
+	db $ff, $2d
+	db $2c, $ff
+	db $ff, $2e
 ; 11cf79
 
 String_11cf79: ; 11cf79
@@ -2206,6 +2278,7 @@
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
+
 ; 11cfba (47:4fba)
 
 Unknown_11cfba:
@@ -2253,9 +2326,8 @@
 	ld [hli], a
 	ld a, [de]
 	inc de
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_11cff6
 	ld c, a
 	ld a, $7a
@@ -2271,9 +2343,8 @@
 	add hl, bc
 	ld a, [de]
 	dec de
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_11d022
 	ld b, a
 .asm_11d005
@@ -2281,9 +2352,8 @@
 	ld a, $7c
 	ld [hli], a
 	ld a, [de]
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_11d015
 	ld c, a
 	ld a, $7f
@@ -2305,9 +2375,8 @@
 	ld a, $7d
 	ld [hli], a
 	ld a, [de]
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_11d031
 	ld c, a
 	ld a, $7a
@@ -2369,9 +2438,8 @@
 	ld a, [de]
 	cp $2
 	jr z, .asm_11d082
-rept 2
 	dec a
-endr
+	dec a
 .asm_11d078
 	push af
 	ld a, $7a
@@ -2397,9 +2465,8 @@
 	cp $2
 	ret z
 	push bc
-rept 2
 	dec a
-endr
+	dec a
 	ld c, a
 	ld b, a
 	ld de, $14
@@ -2429,71 +2496,69 @@
 	ret
 
 Function11d0b6: ; 11d0b6 (47:50b6)
-	ld hl, $c
+	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_11d0c7
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	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
+.Jumptable
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+	dw .six
+	dw .seven
+	dw .eight
+	dw .nine
+	dw .ten
 
 
-Function11d0dd: ; 11d0dd (47:50dd)
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+.zero: ; 11d0dd (47:50dd)
+	ld a, [wcd20] ; wcd20 (aliases: CreditsPos)
 	sla a
 	ld hl, Unknown_11d208
 	ld e, $1
-	jr asm_11d11e
+	jr .load
 
-Function11d0e9: ; 11d0e9 (47:50e9)
+.one: ; 11d0e9 (47:50e9)
 	ld a, [wcd21]
 	sla a
 	ld hl, Unknown_11d21a
 	ld e, $2
-	jr asm_11d11e
+	jr .load
 
-Function11d0f5: ; 11d0f5 (47:50f5)
+.two: ; 11d0f5 (47:50f5)
 	ld hl, Unknown_11d2be
-	ld a, [CreditsTimer]
+	ld a, [wcd22]
 	ld e, a
 	ld d, $0
 	add hl, de
 	ld a, [hl]
-	call Function3b3c
-	ld a, [CreditsTimer]
+	call ReinitSpriteAnimFrame
+	ld a, [wcd22]
 	sla a
 	ld hl, Unknown_11d23e
 	ld e, $4
-	jr asm_11d11e
+	jr .load
 
-Function11d10f: ; 11d10f (47:510f)
-	ld a, $27
-	call Function3b3c
+.three: ; 11d10f (47:510f)
+	ld a, SPRITE_ANIM_FRAMESET_27
+	call ReinitSpriteAnimFrame
 	ld a, [wcd25]
 	sla a
 	ld hl, Unknown_11d29e
 	ld e, $8
-
-asm_11d11e: ; 11d11e (47:511e)
+.load: ; 11d11e (47:511e)
 	push de
 	ld e, a
 	ld d, $0
@@ -2500,7 +2565,7 @@
 	add hl, de
 	push hl
 	pop de
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld a, [de]
 	inc de
@@ -2512,27 +2577,27 @@
 	call Function11d2ee
 	ret
 
-Function11d134: ; 11d134 (47:5134)
-	ld a, $27
-	call Function3b3c
+.four: ; 11d134 (47:5134)
+	ld a, SPRITE_ANIM_FRAMESET_27
+	call ReinitSpriteAnimFrame
 	ld a, [wcd2a]
 	sla a
 	ld hl, Unknown_11d2b6
 	ld e, $10
-	jr asm_11d11e
+	jr .load
 
-Function11d145: ; 11d145 (47:5145)
-	ld a, $27
-	call Function3b3c
+.five: ; 11d145 (47:5145)
+	ld a, SPRITE_ANIM_FRAMESET_27
+	call ReinitSpriteAnimFrame
 	ld a, [wcd2c]
 	sla a
 	ld hl, Unknown_11d2ba
 	ld e, $20
-	jr asm_11d11e
+	jr .load
 
-Function11d156: ; 11d156 (47:5156)
-	ld a, $2a
-	call Function3b3c
+.six: ; 11d156 (47:5156)
+	ld a, SPRITE_ANIM_FRAMESET_2A
+	call ReinitSpriteAnimFrame
 	ld a, [wcd4a]
 	sla a
 	sla a
@@ -2548,16 +2613,16 @@
 	call Function11d2ee
 	ret
 
-Function11d175: ; 11d175 (47:5175)
+.seven: ; 11d175 (47:5175)
 	ld a, [wcd4d]
 	cp $4
 	jr z, .asm_11d180
-	ld a, $28
+	ld a, SPRITE_ANIM_FRAMESET_28
 	jr .asm_11d182
 .asm_11d180
-	ld a, $26
+	ld a, SPRITE_ANIM_FRAMESET_26
 .asm_11d182
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	ld a, [wcd4d]
 	cp $4
 	jr z, .asm_11d1b1
@@ -2566,7 +2631,7 @@
 	sla a
 	sla a
 	add $20
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hli], a
 	ld a, [wcd4d]
@@ -2580,6 +2645,7 @@
 	ld e, a
 	call Function11d2ee
 	ret
+
 .asm_11d1b1
 	ld a, [wcd4c]
 	sla a
@@ -2590,7 +2656,7 @@
 	sla a
 	add e
 	add $18
-	ld hl, $4
+	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hli], a
 	ld a, $8a
@@ -2600,18 +2666,17 @@
 	call Function11d2ee
 	ret
 
-Function11d1d1: ; 11d1d1 (47:51d1)
-	ld d, $98
-	ld a, $2c
-	jr asm_11d1db
+.nine: ; 11d1d1 (47:51d1)
+	ld d, -13 * 8
+	ld a, SPRITE_ANIM_FRAMESET_2C
+	jr .eight_nine_load
 
-Function11d1d7: ; 11d1d7 (47:51d7)
-	ld d, $10
-	ld a, $2b
-
-asm_11d1db: ; 11d1db (47:51db)
+.eight: ; 11d1d7 (47:51d7)
+	ld d, 2 * 8
+	ld a, SPRITE_ANIM_FRAMESET_2B
+.eight_nine_load: ; 11d1db (47:51db)
 	push de
-	call Function3b3c
+	call ReinitSpriteAnimFrame
 	ld a, [wcd4a]
 	sla a
 	sla a
@@ -2619,8 +2684,8 @@
 	ld e, a
 	sla a
 	add e
-	add $40
-	ld hl, $5
+	add 8 * 8
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld [hld], a
 	pop af
@@ -2630,13 +2695,14 @@
 	call Function11d2ee
 	ret
 
-Function11d1fc: ; 11d1fc (47:51fc)
-	ld a, $26
-	call Function3b3c
+.ten: ; 11d1fc (47:51fc)
+	ld a, SPRITE_ANIM_FRAMESET_26
+	call ReinitSpriteAnimFrame
 	ld a, $8
 	ld e, a
 	call Function11d2ee
 	ret
+
 ; 11d208 (47:5208)
 
 Unknown_11d208: ; 11d208
@@ -2771,19 +2837,20 @@
 Function11d2ee: ; 11d2ee (47:52ee)
 	ld hl, wcd24
 	and [hl]
-	jr nz, .asm_11d316
+	jr nz, .update_y_offset
 	ld a, e
 	ld hl, wcd23
 	and [hl]
-	jr z, .asm_11d30f
-	ld hl, $e
+	jr z, .reset_y_offset
+	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_11d305
+	jr z, .flip_bit_0
 	dec [hl]
 	ret
-.asm_11d305
+
+.flip_bit_0
 	ld a, $0
 	ld [hld], a
 	ld a, $1
@@ -2790,19 +2857,20 @@
 	xor [hl]
 	ld [hl], a
 	and a
-	jr nz, .asm_11d316
-.asm_11d30f
-	ld hl, $7
+	jr nz, .update_y_offset
+.reset_y_offset
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	xor a
 	ld [hl], a
 	ret
-.asm_11d316
-	ld hl, $5
+
+.update_y_offset
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, $b0
 	sub [hl]
-	ld hl, $7
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
@@ -2814,11 +2882,12 @@
 	ld [rSVBK], a
 	ld hl, Palette_11d33a
 	ld de, UnknBGPals
-	ld bc, 16 * 8
+	ld bc, 16 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 11d33a
 
 Palette_11d33a:
@@ -3077,6 +3146,7 @@
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 11d493
 
 .CheckSeenMon: ; 11d493
@@ -3095,6 +3165,7 @@
 	pop bc
 	pop hl
 	ret
+
 ; 11d4aa
 
 Function11d4aa: ; 11d4aa
@@ -3102,7 +3173,7 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
-	ld hl, Unknown_11daac
+	ld hl, MobileFixedWordCategoryPointers
 	ld bc, Unknown_11f220
 	xor a
 	ld [wcd2d], a
@@ -3109,7 +3180,7 @@
 	inc a
 	ld [wcd2e], a
 	ld a, $e
-.asm_11d4c1
+.loop1
 	push af
 	ld a, [hli]
 	ld e, a
@@ -3116,14 +3187,13 @@
 	ld a, [hli]
 	ld d, a
 	push hl
-	ld hl, $0005
+	ld hl, 5 ; length of a string
 	add hl, de
 	ld a, [bc]
-rept 2
 	inc bc
-endr
+	inc bc
 	push bc
-.asm_11d4cf
+.loop2
 	push af
 	push hl
 	ld a, [hli]
@@ -3130,7 +3200,7 @@
 	ld e, a
 	ld a, [hl]
 	ld d, a
-	ld hl, wd000
+	ld hl, w3_d000
 	add hl, de
 	ld a, [wcd2d]
 	ld [hli], a
@@ -3139,11 +3209,11 @@
 	ld a, [wcd2e]
 	ld [hl], a
 	pop hl
-	ld de, $0008
+	ld de, 8
 	add hl, de
 	pop af
 	dec a
-	jr nz, .asm_11d4cf
+	jr nz, .loop2
 	ld hl, wcd2d
 	xor a
 	ld [hli], a
@@ -3152,10 +3222,11 @@
 	pop hl
 	pop af
 	dec a
-	jr nz, .asm_11d4c1
+	jr nz, .loop1
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 11d4fe
 
 
@@ -3162,7 +3233,6 @@
 SortedPokemon:
 ; Pokemon sorted by kana.
 ; Notably, Rhydon is missing.
-
 	dw .a
 	dw .i
 	dw .u
@@ -3307,40 +3377,40 @@
 INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
 ; 11da52
 
-Strings_11da52: ; 11da52
+MobileFixedWordCategoryNames: ; 11da52
 ; Fixed message categories
-	db "ポケモン@@"
-	db "タイプ@@@"
-	db "あいさつ@@"
-	db "ひと@@@@"
-	db "バトル@@@"
-	db "こえ@@@@"
-	db "かいわ@@@"
-	db "きもち@@@"
-	db "じょうたい@"
-	db "せいかつ@@"
-	db "しゅみ@@@"
-	db "こうどう@@"
-	db "じかん@@@"
-	db "むすび@@@"
-	db "あれこれ@@"
+	db "ポケモン@@" ; 00
+	db "タイプ@@@" ; 01
+	db "あいさつ@@" ; 02
+	db "ひと@@@@" ; 03
+	db "バトル@@@" ; 04
+	db "こえ@@@@" ; 05
+	db "かいわ@@@" ; 06
+	db "きもち@@@" ; 07
+	db "じょうたい@" ; 08
+	db "せいかつ@@" ; 09
+	db "しゅみ@@@" ; 0a
+	db "こうどう@@" ; 0b
+	db "じかん@@@" ; 0c
+	db "むすび@@@" ; 0d
+	db "あれこれ@@" ; 0e
 ; 11daac
 
-Unknown_11daac: ; 11daac
-	dw .Types
-	dw .Greetings
-	dw .People
-	dw .Battle
-	dw .Exclamations
-	dw .Conversation
-	dw .Feelings
-	dw .Conditions
-	dw .Life
-	dw .Hobbies
-	dw .Actions
-	dw .Time
-	dw .Farewells
-	dw .ThisAndThat
+MobileFixedWordCategoryPointers: ; 11daac
+	dw .Types          ; 01
+	dw .Greetings      ; 02
+	dw .People         ; 03
+	dw .Battle         ; 04
+	dw .Exclamations   ; 05
+	dw .Conversation   ; 06
+	dw .Feelings       ; 07
+	dw .Conditions     ; 08
+	dw .Life           ; 09
+	dw .Hobbies        ; 0a
+	dw .Actions        ; 0b
+	dw .Time           ; 0c
+	dw .Farewells      ; 0d
+	dw .ThisAndThat    ; 0e
 
 .Types: ; 11dac8
 	db "あく@@@", $26, $0, $0
@@ -4119,13 +4189,20 @@
 ; 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
+	db $12, $01 ; 01
+	db $24, $02 ; 02
+	db $45, $05 ; 03
+	db $45, $05 ; 04
+	db $42, $05 ; 05
+	db $42, $05 ; 06
+	db $45, $05 ; 07
+	db $42, $05 ; 08
+	db $27, $03 ; 09
+	db $27, $03 ; 0a
+	db $45, $05 ; 0b
+	db $27, $03 ; 0c
+	db $42, $05 ; 0d
+	db $24, $02 ; 0e
 
 Unknown_11f23c:
 macro_11f23c: macro
--- /dev/null
+++ b/misc/gfx_41.asm
@@ -1,0 +1,600 @@
+Function104000:: ; 104000
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteTilemap
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function10419d
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function10419d
+	ret
+; 10402d
+
+Function10402d:: ; 10402d
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteTilemap
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function10419d
+	ret
+; 104047
+
+Function104047: ; 104047
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function10419d
+	ret
+; 104061
+
+ReloadMapPart:: ; 104061
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteTilemap
+	call DelayFrame
+	di
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function1041ad
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function1041ad
+	pop af
+	ld [rVBK], a
+	ei
+	ret
+
+Function104099: ; 104099
+	ld hl, ReloadMapPart ; useless
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteTilemap
+	call DelayFrame
+	di
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function1041c1
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function1041c1
+	pop af
+	ld [rVBK], a
+	ei
+	ret
+; 1040d4
+
+Function1040d4: ; 1040d4
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	ld a, $1
+	ld [rVBK], a
+	ld a, $3
+	ld [rSVBK], a
+	ld de, w3_d800
+	ld a, [hBGMapAddress + 1]
+	ld [rHDMA1], a
+	ld a, [hBGMapAddress]
+	ld [rHDMA2], a
+	ld a, d
+	ld [rHDMA3], a
+	ld a, e
+	ld [rHDMA4], a
+	ld a, $23
+	ld [hDMATransfer], a
+	call WaitDMATransfer
+	ret
+; 1040fb
+
+Function1040fb: ; 1040fb
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	ld a, $1
+	ld [rVBK], a
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, w3_d800
+	call Function10419d
+	ret
+; 104110
+
+Function104110:: ; 104110
+; OpenText
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteTilemap
+	call DelayFrame
+
+	di
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function1041b7
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function1041b7
+	pop af
+	ld [rVBK], a
+	ei
+	ret
+; 104148
+
+Function104148: ; 104148 (41:4148)
+	ld hl, .Function
+	jp CallInSafeGFXMode
+
+.Function
+	decoord 0, 0, AttrMap
+	ld hl, wBackupAttrMap
+	call CutAndPasteAttrMap
+	ld c, $ff
+	decoord 0, 0
+	ld hl, wDecompressScratch
+	call CutAndPasteMap
+	ld a, $1
+	ld [rVBK], a
+	ld hl, wBackupAttrMap
+	call Function1041ad
+	ld a, $0
+	ld [rVBK], a
+	ld hl, wDecompressScratch
+	call Function1041ad
+	ret
+; 104177
+
+CallInSafeGFXMode: ; 104177
+	ld a, [hBGMapMode]
+	push af
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld [hMapAnims], a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld a, [rVBK]
+	push af
+
+	call ._hl_
+
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	pop af
+	ld [hMapAnims], a
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 10419c
+
+._hl_: ; 10419c
+	jp [hl]
+; 10419d
+
+
+Function10419d: ; 10419d (41:419d)
+	call Function10424e
+	ld a, $23
+	ld [hDMATransfer], a
+
+WaitDMATransfer: ; 104a14
+.loop
+	call DelayFrame
+	ld a, [hDMATransfer]
+	and a
+	jr nz, .loop
+	ret
+
+Function1041ad: ; 1041ad (41:41ad)
+	ld a, [hBGMapAddress + 1]
+	ld d, a
+	ld a, [hBGMapAddress]
+	ld e, a
+	ld c, $24
+	jr Function104209
+
+Function1041b7: ; 1041b7 (41:41b7)
+; hBGMapAddress -> de
+; $24 -> c
+; $7b --> b
+	ld a, [hBGMapAddress + 1]
+	ld d, a
+	ld a, [hBGMapAddress]
+	ld e, a
+	ld c, $24
+	jr asm_104205
+; 1041c1 (41:41c1)
+
+Function1041c1: ; 1041c1
+	ld a, [hBGMapAddress + 1]
+	ld d, a
+	ld a, [hBGMapAddress]
+	ld e, a
+	ld c, $24
+	ld a, h
+	ld [rHDMA1], a
+	ld a, l
+	and $f0
+	ld [rHDMA2], a
+	ld a, d
+	and $1f
+	ld [rHDMA3], a
+	ld a, e
+	and $f0
+	ld [rHDMA4], a
+	ld a, c
+	dec c
+	or $80
+	ld b, a
+	ld a, $7f
+	sub c
+	ld d, a
+.loop1
+	ld a, [rLY]
+	cp d
+	jr nc, .loop1
+.loop2
+	ld a, [rSTAT]
+	and $3
+	jr z, .loop2
+	ld a, b
+	ld [rHDMA5], a
+	ld a, [rLY]
+	inc c
+	ld hl, rLY
+.loop3
+	cp [hl]
+	jr z, .loop3
+	ld a, [hl]
+	dec c
+	jr nz, .loop3
+	ld hl, rHDMA5
+	res 7, [hl]
+	ret
+; 104205
+
+asm_104205:
+	ld b, $7b
+	jr asm_10420b
+
+
+Function104209:
+; LY magic
+	ld b, $7f
+asm_10420b:
+	ld a, h
+	ld [rHDMA1], a
+	ld a, l
+	and $f0 ; high nybble
+	ld [rHDMA2], a
+	ld a, d
+	and $1f ; lower 5 bits
+	ld [rHDMA3], a
+	ld a, e
+	and $f0 ; high nybble
+	ld [rHDMA4], a
+	ld a, c
+	dec c
+	or $80 ; set 7, a
+	ld e, a
+	ld a, b
+	sub c
+	ld d, a
+.ly_loop
+	ld a, [rLY]
+	cp d
+	jr nc, .ly_loop
+
+	di
+.rstat_loop_1
+	ld a, [rSTAT]
+	and $3
+	jr nz, .rstat_loop_1
+.rstat_loop_2
+	ld a, [rSTAT]
+	and $3
+	jr z, .rstat_loop_2
+	ld a, e
+	ld [rHDMA5], a
+	ld a, [rLY]
+	inc c
+	ld hl, rLY
+.final_ly_loop
+	cp [hl]
+	jr z, .final_ly_loop
+	ld a, [hl]
+	dec c
+	jr nz, .final_ly_loop
+	ld hl, rHDMA5
+	res 7, [hl]
+	ei
+
+	ret
+; 10424e
+
+
+Function10424e: ; 10424e (41:424e)
+	ld a, h
+	ld [rHDMA1], a
+	ld a, l
+	ld [rHDMA2], a
+	ld a, [hBGMapAddress + 1]
+	and $1f
+	ld [rHDMA3], a
+	ld a, [hBGMapAddress]
+	ld [rHDMA4], a
+	ret
+
+CutAndPasteTilemap: ; 10425f (41:425f)
+	ld c, " "
+	jr CutAndPasteMap
+
+CutAndPasteAttrMap: ; 104263 (41:4263)
+	ld c, $0
+
+CutAndPasteMap: ; 104265 (41:4265)
+; back up the value of c to hMapObjectIndexBuffer
+	ld a, [hMapObjectIndexBuffer]
+	push af
+	ld a, c
+	ld [hMapObjectIndexBuffer], a
+
+; for each row on the screen
+	ld c, SCREEN_HEIGHT
+.loop1
+; for each tile in the row
+	ld b, SCREEN_WIDTH
+.loop2
+; copy from de to hl
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec b
+	jr nz, .loop2
+
+; load the original value of c into hl 12 times
+	ld a, [hMapObjectIndexBuffer]
+	ld b, 12
+.loop3
+	ld [hli], a
+	dec b
+	jr nz, .loop3
+
+	dec c
+	jr nz, .loop1
+
+; restore the original value of hMapObjectIndexBuffer
+	pop af
+	ld [hMapObjectIndexBuffer], a
+	ret
+
+
+_Get2bpp:: ; 104284
+	; 2bpp when [rLCDC] & $80
+	; switch to WRAM bank 6
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+
+	push bc
+	push hl
+
+	; Copy c tiles of the 2bpp from b:de to wDecompressScratch
+	ld a, b ; bank
+	ld l, c ; number of tiles
+	ld h, $0
+rept 4
+	add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile)
+endr
+	ld b, h
+	ld c, l
+	ld h, d ; address
+	ld l, e
+	ld de, wDecompressScratch
+	call FarCopyBytes
+	
+	pop hl
+	pop bc
+
+	push bc
+	call DelayFrame
+	pop bc
+
+	ld d, h
+	ld e, l
+	ld hl, wDecompressScratch
+	call Function104209
+
+	; restore the previous bank
+	pop af
+	ld [rSVBK], a
+	ret
+; 1042b2
+
+_Get1bpp:: ; 1042b2
+	; 1bpp when [rLCDC] & $80
+.loop
+	ld a, c
+	cp $10
+	jp c, .bankswitch
+	jp z, .bankswitch
+	push bc
+	push hl
+	push de
+	ld c, $10
+	call .bankswitch
+	pop de
+	ld hl, $80
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	lb bc, 1, 0
+	add hl, bc
+	pop bc
+	ld a, c
+	sub $10
+	ld c, a
+	jr .loop
+; 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 ; multiply by 8
+endr
+	ld c, l
+	ld b, h
+	ld h, d
+	ld l, e
+	ld de, wDecompressScratch
+	call FarCopyBytesDouble_DoubleBankSwitch
+
+	pop hl
+	pop bc
+
+	push bc
+	call DelayFrame
+	pop bc
+
+	ld d, h
+	ld e, l
+	ld hl, wDecompressScratch
+	call Function104209
+
+	pop af
+	ld [rSVBK], a
+	ret
+; 104303
+
+Function104303: ; 104303
+	ld hl, Function104309
+	jp CallInSafeGFXMode
+; 104309
+
+Function104309:
+	ld hl, wDecompressScratch
+	decoord 0, 0
+	call Function10433a
+	ld hl, wDecompressScratch + $80
+	decoord 0, 0, AttrMap
+	call Function10433a
+	ld a, $1
+	ld [rVBK], a
+	ld c, $8
+	ld hl, wDecompressScratch + $80
+	debgcoord 0, 0, VBGMap1
+	call Function104209
+	ld a, $0
+	ld [rVBK], a
+	ld c, $8
+	ld hl, wDecompressScratch
+	debgcoord 0, 0, VBGMap1
+	call Function104209
+	ret
+
+Function10433a: ; 10433a (41:433a)
+	ld b, 4
+.outer_loop
+	ld c, SCREEN_WIDTH
+.inner_loop
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .inner_loop
+	ld a, l
+	add $20 - SCREEN_WIDTH
+	ld l, a
+	ld a, h
+	adc $0
+	ld h, a
+	dec b
+	jr nz, .outer_loop
+	ret
+; 104350
+
+ShockEmote:     INCBIN "gfx/emotes/shock.2bpp"
+QuestionEmote:  INCBIN "gfx/emotes/question.2bpp"
+HappyEmote:     INCBIN "gfx/emotes/happy.2bpp"
+SadEmote:       INCBIN "gfx/emotes/sad.2bpp"
+HeartEmote:     INCBIN "gfx/emotes/heart.2bpp"
+BoltEmote:      INCBIN "gfx/emotes/bolt.2bpp"
+SleepEmote:     INCBIN "gfx/emotes/sleep.2bpp"
+FishEmote:      INCBIN "gfx/emotes/fish.2bpp"
+JumpShadowGFX:  INCBIN "gfx/misc/shadow.2bpp"
+FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
+BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
+FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
--- a/misc/mobile_12.asm
+++ b/misc/mobile_12.asm
@@ -6,7 +6,7 @@
 	set 0, [hl]
 	ld a, c
 	and a
-	call z, Function48000
+	call z, InitCrystalData
 	call ClearBGPalettes
 	call Function48d3d
 	ld a, [wd479]
@@ -46,11 +46,11 @@
 	ld c, 20
 	call DelayFrames
 	ld b, $1
-	call Function4930f
+	call GetMysteryGift_MobileAdapterLayout
 	call ClearBGPalettes
 	hlcoord 0, 0
-	ld b, $2
-	ld c, $14
+	ld b,  2
+	ld c, 20
 	call ClearBox
 	hlcoord 0, 1
 	ld a, $c
@@ -66,20 +66,20 @@
 	ld c, $12
 	call Function48cdc
 	hlcoord 2, 4
-	ld de, String_48482
+	ld de, MobileString_Gender
 	call PlaceString
 .asm_480d7
 	hlcoord 2, 6
-	ld de, String_48489
+	ld de, MobileString_Age
 	call PlaceString
 	hlcoord 2, 8
-	ld de, String_4848d
+	ld de, MobileString_Address
 	call PlaceString
 	hlcoord 2, 10
-	ld de, String_48495
+	ld de, MobileString_ZipCode
 	call PlaceString
 	hlcoord 2, 12
-	ld de, String_4849e
+	ld de, MobileString_OK
 	call PlaceString
 	ld a, [wd002]
 	bit 6, a
@@ -109,20 +109,20 @@
 	ld c, $12
 	call TextBox
 	hlcoord 1, 16
-	ld de, String_48275
+	ld de, MobileString_PersonalInfo
 	call PlaceString
 	call Function48187
-	call Function3200
+	call WaitBGMap2
 	call SetPalettes
-	call Function1bc9
-	ld hl, MenuSelection2
+	call StaticMenuJoypad
+	ld hl, wMenuCursorY
 	ld b, [hl]
 	push bc
 	jr asm_4815f
 
 Function48157: ; 48157 (12:4157)
-	call Function1bd3
-	ld hl, MenuSelection2
+	call ScrollingMenuJoypad
+	ld hl, wMenuCursorY
 	ld b, [hl]
 	push bc
 
@@ -163,7 +163,7 @@
 .asm_481a2
 	push de
 	hlcoord 2, 12
-	ld de, String_4849e
+	ld de, MobileString_OK
 	call PlaceString
 	pop de
 .asm_481ad
@@ -203,19 +203,19 @@
 	jr nz, .asm_48201
 .asm_481f8
 	hlcoord 11, 10
-	ld de, String_48202
+	ld de, .String_TellLater
 	call PlaceString
 .asm_48201
 	ret
 ; 48202 (12:4202)
 
-String_48202: ; 48202
+.String_TellLater: ; 48202
 	db "Tell Later@"
 ; 4820d
 
 Function4820d: ; 4820d (12:420d)
-	call Function1bee
-	ld hl, MenuSelection2
+	call PlaceHollowCursor
+	ld hl, wMenuCursorY
 	ld a, [hl]
 	push af
 	ld a, [wd002]
@@ -235,7 +235,7 @@
 	cp $4
 	jp z, Function488d3
 	ld a, $2
-	call Function1ff8
+	call MenuClickSound
 	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4825c
@@ -246,7 +246,7 @@
 	ld b, $2
 	ld c, $12
 	call ClearBox
-	ld de, String_484a1
+	ld de, MobileString_ProfileChanged
 	hlcoord 1, 16
 	call PlaceString
 	call WaitBGMap
@@ -269,7 +269,7 @@
 	jp Function4840c
 ; 48275 (12:4275)
 
-String_48275: ; 48275
+MobileString_PersonalInfo: ; 48275
 	db "Personal Info@"
 ; 48283
 
@@ -282,7 +282,7 @@
 asm_4828d: ; 4828d (12:428d)
 	call Function48283
 	hlcoord 1, 16
-	ld de, String_484b1
+	ld de, MobileDesc_Gender
 	call PlaceString
 	ld hl, MenuDataHeader_0x484f1
 	call LoadMenuDataHeader
@@ -301,12 +301,12 @@
 	ld a, [PlayerGender]
 	inc a
 	ld [wMenuCursorBuffer], a
-	call Function1bc9
+	call StaticMenuJoypad
 	call PlayClickSFX
 	call ExitMenu
 	bit 0, a
 	jp z, Function4840c
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld a, [hl]
 	ld hl, Strings_484fb
 	cp $1
@@ -334,7 +334,7 @@
 Function48304: ; 48304 (12:4304)
 	call Function48283
 	hlcoord 1, 16
-	ld de, String_484cf
+	ld de, MobileDesc_Address
 	call PlaceString
 	ld hl, MenuDataHeader_0x48504
 	call LoadMenuDataHeader
@@ -361,7 +361,7 @@
 	ld [wMenuScrollPosition], a
 	callba Function104148
 .asm_48348
-	call HandleScrollingMenu
+	call ScrollingMenu
 	ld de, $629
 	call Function48383
 	jr c, .asm_48348
@@ -415,7 +415,7 @@
 	ld [wMenuScrollPosition], a
 	jr .asm_483af
 .asm_483af
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld a, [hl]
 	ld [wMenuCursorBuffer], a
 	scf
@@ -426,7 +426,7 @@
 	ret
 
 Function483bb: ; 483bb (12:43bb)
-	ld hl, wcf77
+	ld hl, wScrollingMenuCursorPosition
 	ld a, [hl]
 	inc a
 	ld [wd474], a
@@ -489,42 +489,41 @@
 	call Function48187
 	call Function48283
 	hlcoord 1, 16
-	ld de, String_48275
+	ld de, MobileString_PersonalInfo
 	call PlaceString
 	call Function486bf
 	pop bc
-	ld hl, MenuSelection2
+	ld hl, wMenuCursorY
 	ld [hl], b
 	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_48437
-	ld b, $9
-	ld c, $1
+	ld b, 9
+	ld c, 1
 	hlcoord 1, 4
 	call ClearBox
 	jp Function48157
 .asm_48437
-	ld b, $7
-	ld c, $1
+	ld b, 7
+	ld c, 1
 	hlcoord 1, 6
 	call ClearBox
 	jp Function48157
 
-Function48444: ; 48444 (12:4444)
+Mobile12_Bin2Dec: ; 48444 (12:4444)
 	push bc
 	push af
 	push de
 	push hl
-	ld hl, Unknown_4845d
-.asm_4844b
+	ld hl, .DigitStrings
+.loop
 	and a
-	jr z, .asm_48453
-rept 2
+	jr z, .got_string
 	inc hl
-endr
+	inc hl
 	dec a
-	jr .asm_4844b
-.asm_48453
+	jr .loop
+.got_string
 	ld d, h
 	ld e, l
 	pop hl
@@ -535,7 +534,7 @@
 	ret
 ; 4845d (12:445d)
 
-Unknown_4845d: ; 4845d
+.DigitStrings: ; 4845d
 ; 4845d
 	db "0@"
 	db "1@"
@@ -549,17 +548,17 @@
 	db "9@"
 ; 48471
 
-MobileProfileString: db "  Mobile Profile@"
-String_48482: db "Gender@"
-String_48489: db "Age@"
-String_4848d: db "Address@"
-String_48495: db "Zip Code@"
-String_4849e: db "OK@"
-String_484a1: db "Profile Changed@"
-String_484b1: db "Boy or girl?@"
-String_484be: db "How old are you?@"
-String_484cf: db "Where do you live?@"
-String_484e2: db "Your zip code?@"
+MobileProfileString:         db "  Mobile Profile@"
+MobileString_Gender:         db "Gender@"
+MobileString_Age:            db "Age@"
+MobileString_Address:        db "Address@"
+MobileString_ZipCode:        db "Zip Code@"
+MobileString_OK:             db "OK@"
+MobileString_ProfileChanged: db "Profile Changed@"
+MobileDesc_Gender:           db "Boy or girl?@"
+MobileDesc_Age:              db "How old are you?@"
+MobileDesc_Address:          db "Where do you live?@"
+MobileDesc_ZipCode:          db "Your zip code?@"
 ; 484f1
 
 MenuDataHeader_0x484f1: ; 0x484f1
@@ -665,7 +664,7 @@
 	ld c, 7
 	call DelayFrames
 	ld b, $1
-	call Function4930f
+	call GetMysteryGift_MobileAdapterLayout
 	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $4
@@ -687,7 +686,7 @@
 	ret
 
 Function486bf: ; 486bf (12:46bf)
-	ld hl, wcfa1
+	ld hl, w2DMenuCursorInitY
 	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_486ce
@@ -746,9 +745,8 @@
 	pop af
 	ld [hli], a
 	ld a, $1
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	xor a
 rept 3
 	ld [hli], a
@@ -772,7 +770,7 @@
 	ret
 
 Function4873c: ; 4873c (12:473c)
-	ld hl, wcfa1
+	ld hl, w2DMenuCursorInitY
 	ld a, $4
 	ld [hli], a
 	ld a, $c
@@ -811,7 +809,7 @@
 Function4876f: ; 4876f (12:476f)
 	call Function48283
 	hlcoord 1, 16
-	ld de, String_484be
+	ld de, MobileDesc_Age
 	call PlaceString
 	ld hl, MenuDataHeader_0x48509
 	call LoadMenuDataHeader
@@ -853,7 +851,7 @@
 	call Function4880e
 	jr nc, .asm_487c6
 	ld a, $1
-	call Function1ff8
+	call MenuClickSound
 	pop bc
 	jr nz, .asm_487da
 	ld a, b
@@ -1012,7 +1010,7 @@
 Function488d3: ; 488d3 (12:48d3)
 	call Function48283
 	hlcoord 1, 16
-	ld de, String_484e2
+	ld de, MobileDesc_ZipCode
 	call PlaceString
 	call Function48a3a
 	jp c, Function4840c
@@ -1154,7 +1152,7 @@
 	push de
 	push hl
 	ld a, $1
-	call Function1ff8
+	call MenuClickSound
 	pop hl
 	pop de
 	pop bc
@@ -1173,16 +1171,16 @@
 	push de
 	ld a, [wd475]
 	and $f
-	call Function48444
+	call Mobile12_Bin2Dec
 	ld a, [wd476]
 	and $f0
 	swap a
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	ld a, [wd476]
 	and $f
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	inc hl
 	ld de, String_48a38
 	call PlaceString
@@ -1190,20 +1188,20 @@
 	and $f0
 	swap a
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	ld a, [wd477]
 	and $f
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	ld a, [wd478]
 	and $f0
 	swap a
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	ld a, [wd478]
 	and $f
 	inc hl
-	call Function48444
+	call Mobile12_Bin2Dec
 	pop de
 	ret
 ; 48a38 (12:4a38)
@@ -1217,11 +1215,11 @@
 	call LoadMenuDataHeader
 	call Function4873c
 	ld a, $a
-	ld [wcfa1], a
+	ld [w2DMenuCursorInitY], a
 	ld a, $b
-	ld [wcfa2], a
+	ld [w2DMenuCursorInitX], a
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	hlcoord 10, 8
 	ld b, $4
 	ld c, $8
@@ -1229,7 +1227,7 @@
 	hlcoord 12, 10
 	ld de, String_48aa1
 	call PlaceString
-	call Function1bc9
+	call StaticMenuJoypad
 	push af
 	call PlayClickSFX
 	call ExitMenu
@@ -1236,7 +1234,7 @@
 	pop af
 	bit 1, a
 	jp nz, Function48a9a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .asm_48a98
 	ld a, [wd003]
@@ -1605,7 +1603,8 @@
 ; 48c8e
 
 Function48c8e: ; 48c8e
-	ld hl, wd02a
+; unreferenced
+	ld hl, $d02a
 	ld d, h
 	ld e, l
 	callba Function48c63
@@ -1646,13 +1645,13 @@
 
 .asm_48cc7
 	ld a, b
-	call Function48444
+	call Mobile12_Bin2Dec
 	inc hl
 	ld a, c
-	call Function48444
+	call Mobile12_Bin2Dec
 	inc hl
 	ld a, d
-	call Function48444
+	call Mobile12_Bin2Dec
 	pop hl
 	pop de
 	pop bc
@@ -1672,12 +1671,10 @@
 	pop bc
 	ld de, AttrMap - TileMap
 	add hl, de
-rept 2
 	inc b
-endr
-rept 2
+	inc b
 	inc c
-endr
+	inc c
 	ld a, $0
 .asm_48ced
 	push bc
--- /dev/null
+++ b/misc/mobile_12_2.asm
@@ -1,0 +1,937 @@
+MobileCheckOwnMonAnywhere: ; 4a843
+; Like CheckOwnMonAnywhere, but only check for species.
+; OT/ID don't matter.
+
+	ld a, [PartyCount]
+	and a
+	ret z
+
+	ld d, a
+	ld e, 0
+	ld hl, PartyMon1Species
+	ld bc, PartyMonOT
+.asm_4a851
+	call .CheckMatch
+	ret c
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call .CopyName
+	dec d
+	jr nz, .asm_4a851
+	ld a, BANK(sBoxCount)
+	call GetSRAMBank
+	ld a, [sBoxCount]
+	and a
+	jr z, .asm_4a888
+	ld d, a
+	ld hl, sBoxMon1Species
+	ld bc, sBoxMonOT
+.asm_4a873
+	call .CheckMatch
+	jr nc, .asm_4a87c
+	call CloseSRAM
+	ret
+
+.asm_4a87c
+	push bc
+	ld bc, BOXMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call .CopyName
+	dec d
+	jr nz, .asm_4a873
+
+.asm_4a888
+	call CloseSRAM
+	ld c, 0
+.asm_4a88d
+	ld a, [wCurBox]
+	and $f
+	cp c
+	jr z, .asm_4a8d1
+	ld hl, .BoxAddrs
+	ld b, 0
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	call GetSRAMBank
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	and a
+	jr z, .asm_4a8d1
+	push bc
+	push hl
+	ld de, sBoxMons - sBoxCount
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	push de
+	ld de, sBoxMonOT - sBoxCount
+	add hl, de
+	ld b, h
+	ld c, l
+	pop hl
+	ld d, a
+.asm_4a8ba
+	call .CheckMatch
+	jr nc, .asm_4a8c4
+	pop bc
+	call CloseSRAM
+	ret
+
+.asm_4a8c4
+	push bc
+	ld bc, BOXMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	call .CopyName
+	dec d
+	jr nz, .asm_4a8ba
+	pop bc
+
+.asm_4a8d1
+	inc c
+	ld a, c
+	cp NUM_BOXES
+	jr c, .asm_4a88d
+	call CloseSRAM
+	and a
+	ret
+; 4a8dc
+
+.CheckMatch: ; 4a8dc
+	push bc
+	push hl
+	push de
+	ld d, b
+	ld e, c
+	ld a, [ScriptVar]
+	ld b, [hl]
+	cp b
+	jr nz, .no_match
+	jr .match
+
+.no_match
+	pop de
+	pop hl
+	pop bc
+	and a
+	ret
+
+.match
+	pop de
+	pop hl
+	pop bc
+	scf
+	ret
+; 4a8f4
+
+.BoxAddrs: ; 4a8f4
+	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
+; 4a91e
+
+.CopyName: ; 4a91e
+	push hl
+	ld hl, NAME_LENGTH
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 4a927
+
+FindItemInPCOrBag: ; 4a927
+	ld a, [ScriptVar]
+	ld [CurItem], a
+	ld hl, PCItems
+	call CheckItem
+	jr c, .found
+
+	ld a, [ScriptVar]
+	ld [CurItem], a
+	ld hl, NumItems
+	call CheckItem
+	jr c, .found
+
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.found
+	ld a, 1
+	ld [ScriptVar], a
+	ret
+; 4a94e
+
+Function4a94e: ; 4a94e
+	call FadeToMenu
+	ld a, -1
+	ld hl, wd002
+	ld bc, 3
+	call ByteFill
+	xor a
+	ld [wd018], a
+	ld [wd019], a
+	ld b, SCGB_PACKPALS
+	call GetSGBLayout
+	call SetPalettes
+	call Function4aa22
+	jr c, .asm_4a985
+	jr z, .asm_4a9a1
+	jr .asm_4a97b
+
+.asm_4a974
+	call Function4aa25
+	jr c, .asm_4a985
+	jr z, .asm_4a9a1
+
+.asm_4a97b
+	call Function4ac58
+	ld hl, wd019
+	res 1, [hl]
+	jr .asm_4a974
+
+.asm_4a985
+	ld a, [wd018]
+	and a
+	jr nz, .asm_4a990
+	call Function4aba8
+	jr c, .asm_4a974
+
+.asm_4a990
+	call CloseSubmenu
+	ld hl, wd002
+	ld a, -1
+	ld bc, 3
+	call ByteFill
+	scf
+	jr .asm_4a9af
+
+.asm_4a9a1
+	call Function4a9c3
+	jr c, .asm_4a9b0
+	call Function4a9d7
+	jr c, .asm_4a974
+	call CloseSubmenu
+	and a
+
+.asm_4a9af
+	ret
+
+.asm_4a9b0
+	ld de, SFX_WRONG
+	call PlaySFX
+	ld hl, UnknownText_0x4a9be
+	call PrintText
+	jr .asm_4a974
+; 4a9be
+
+UnknownText_0x4a9be: ; 0x4a9be
+	; Pick three #MON for battle.
+	text_jump UnknownText_0x1c51d7
+	db "@"
+; 0x4a9c3
+
+Function4a9c3: ; 4a9c3
+	ld hl, wd002
+	ld a, $ff
+	cp [hl]
+	jr z, .asm_4a9d5
+	inc hl
+	cp [hl]
+	jr z, .asm_4a9d5
+	inc hl
+	cp [hl]
+	jr z, .asm_4a9d5
+	and a
+	ret
+
+.asm_4a9d5
+	scf
+	ret
+; 4a9d7
+
+Function4a9d7: ; 4a9d7
+	ld a, [wd002]
+	ld hl, PartyMonNicknames
+	call GetNick
+	ld h, d
+	ld l, e
+	ld de, EndFlypoint
+	ld bc, 6
+	call CopyBytes
+	ld a, [wd003]
+	ld hl, PartyMonNicknames
+	call GetNick
+	ld h, d
+	ld l, e
+	ld de, wd00c
+	ld bc, 6
+	call CopyBytes
+	ld a, [wd004]
+	ld hl, PartyMonNicknames
+	call GetNick
+	ld h, d
+	ld l, e
+	ld de, wd012
+	ld bc, 6
+	call CopyBytes
+	ld hl, UnknownText_0x4aa1d
+	call PrintText
+	call YesNoBox
+	ret
+; 4aa1d
+
+UnknownText_0x4aa1d: ; 0x4aa1d
+	; , @  and @ . Use these three?
+	text_jump UnknownText_0x1c51f4
+	db "@"
+; 0x4aa22
+
+Function4aa22: ; 4aa22
+	call ClearBGPalettes
+
+Function4aa25: ; 4aa25
+	callba LoadPartyMenuGFX
+	callba InitPartyMenuWithCancel
+	call Function4aad3
+
+Function4aa34: ; 4aa34
+	ld a, $9
+	ld [PartyMenuActionText], a
+	callba WritePartyMenuTilemap
+	xor a
+	ld [PartyMenuActionText], a
+	callba PrintPartyMenuText
+	call Function4aab6
+	call WaitBGMap
+	call SetPalettes
+	call DelayFrame
+	call Function4ab1a
+	jr z, .asm_4aa66
+	push af
+	call Function4aafb
+	jr c, .asm_4aa67
+	call Function4ab06
+	jr c, .asm_4aa67
+	pop af
+
+.asm_4aa66
+	ret
+
+.asm_4aa67
+	ld hl, wd019
+	set 1, [hl]
+	pop af
+	ret
+; 4aa6e
+
+Function4aa6e: ; 4aa6e
+	pop af
+	ld de, SFX_WRONG
+	call PlaySFX
+	call WaitSFX
+	jr Function4aa34
+; 4aa7a
+
+Function4aa7a: ; 4aa7a
+	ld hl, wd002
+	ld d, $3
+.loop
+	ld e, PARTY_LENGTH
+	ld a, [hli]
+	push de
+	push hl
+	cp -1
+	jr z, .done
+	ld hl, wSpriteAnimationStructs
+	inc a
+	ld d, a
+.inner_loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	cp d
+	jr z, .same_as_d
+	jr .next
+
+	ld a, $3
+	jr .proceed
+
+.same_as_d
+	ld a, $2
+
+.proceed
+	push hl
+	ld c, l
+	ld b, h
+	ld hl, $2
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.next
+	ld bc, $10
+	add hl, bc
+	dec e
+	jr nz, .inner_loop
+	pop hl
+	pop de
+	dec d
+	jr nz, .loop
+	jr .finished
+
+.done
+	pop hl
+	pop de
+
+.finished
+	ret
+; 4aab6
+
+Function4aab6: ; 4aab6
+	ld hl, wd002
+	ld d, $3
+.loop
+	ld a, [hli]
+	cp -1
+	jr z, .done
+	push de
+	push hl
+	hlcoord 0, 1
+	ld bc, $28
+	call AddNTimes
+	ld [hl], $ec
+	pop hl
+	pop de
+	dec d
+	jr nz, .loop
+
+.done
+	ret
+; 4aad3
+
+Function4aad3: ; 4aad3
+	ld hl, PartyCount
+	ld a, [hli]
+	and a
+	ret z ; Nothing in your party
+
+	ld c, a
+	xor a
+	ld [hObjectStructIndexBuffer], a
+.loop
+	push bc
+	push hl
+	ld e, 0
+	callba Function8e83f
+	ld a, [hObjectStructIndexBuffer]
+	inc a
+	ld [hObjectStructIndexBuffer], a
+	pop hl
+	pop bc
+	dec c
+	jr nz, .loop
+
+	call Function4aa7a
+	callba PlaySpriteAnimations
+	ret
+; 4aafb
+
+Function4aafb: ; 4aafb
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .egg
+	and a
+	ret
+
+.egg
+	scf
+	ret
+; 4ab06
+
+Function4ab06: ; 4ab06
+	ld a, [CurPartyMon]
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1HP
+	call AddNTimes
+	ld a, [hli]
+	ld b, a
+	ld a, [hl]
+	or b
+	jr nz, .NotFainted
+	scf
+
+.NotFainted
+	ret
+; 4ab1a
+
+Function4ab1a: ; 4ab1a
+.asm_4ab1a
+	ld a, $fb
+	ld [wMenuJoypadFilter], a
+	ld a, $26
+	ld [w2DMenuCursorOffsets], a
+	ld a, $2
+	ld [w2DMenuNumCols], a
+	call Function4adf7
+	call StaticMenuJoypad
+	call Function4abc3
+	jr c, .asm_4ab1a
+	push af
+	call Function4ab99
+	call nc, PlaceHollowCursor
+	pop af
+	bit 1, a
+	jr nz, .asm_4ab6d
+	ld a, [PartyCount]
+	inc a
+	ld b, a
+	ld a, [wMenuCursorY]
+	ld [wPartyMenuCursor], a
+	cp b
+	jr z, .asm_4ab7e
+	ld a, [wMenuCursorY]
+	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
+	ld a, $1
+	and a
+	ret
+
+.asm_4ab6d
+	ld a, [wMenuCursorY]
+	ld [wPartyMenuCursor], a
+.asm_4ab73
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	call WaitSFX
+	scf
+	ret
+
+.asm_4ab7e
+	ld a, $1
+	ld [wd018], a
+	ld a, [wMenuCursorX]
+	cp $2
+	jr z, .asm_4ab73
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	call WaitSFX
+	xor a
+	ld [wd018], a
+	and a
+	ret
+; 4ab99
+
+Function4ab99: ; 4ab99
+	bit 1, a
+	jr z, .asm_4aba6
+	ld a, [wd002]
+	cp $ff
+	jr z, .asm_4aba6
+	scf
+	ret
+
+.asm_4aba6
+	and a
+	ret
+; 4aba8
+
+Function4aba8: ; 4aba8
+	ld hl, wd004
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_4abbe
+	dec hl
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_4abbe
+	dec hl
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_4abbe
+	and a
+	ret
+
+.asm_4abbe
+	ld a, $ff
+	ld [hl], a
+	scf
+	ret
+; 4abc3
+
+Function4abc3: ; 4abc3
+	bit 3, a
+	jr z, .asm_4abd5
+	ld a, [PartyCount]
+	inc a
+	ld [wMenuCursorY], a
+	ld a, $1
+	ld [wMenuCursorX], a
+	jr .asm_4ac29
+
+.asm_4abd5
+	bit 6, a
+	jr z, .asm_4abeb
+	ld a, [wMenuCursorY]
+	ld [wMenuCursorY], a
+	and a
+	jr nz, .asm_4ac29
+	ld a, [PartyCount]
+	inc a
+	ld [wMenuCursorY], a
+	jr .asm_4ac29
+
+.asm_4abeb
+	bit 7, a
+	jr z, .asm_4ac08
+	ld a, [wMenuCursorY]
+	ld [wMenuCursorY], a
+	ld a, [PartyCount]
+rept 2
+	inc a
+endr
+	ld b, a
+	ld a, [wMenuCursorY]
+	cp b
+	jr nz, .asm_4ac29
+	ld a, $1
+	ld [wMenuCursorY], a
+	jr .asm_4ac29
+
+.asm_4ac08
+	bit 4, a
+	jr nz, .asm_4ac10
+	bit 5, a
+	jr z, .asm_4ac56
+
+.asm_4ac10
+	ld a, [wMenuCursorY]
+	ld b, a
+	ld a, [PartyCount]
+	inc a
+	cp b
+	jr nz, .asm_4ac29
+	ld a, [wMenuCursorX]
+	cp $1
+	jr z, .asm_4ac26
+	ld a, $1
+	jr .asm_4ac29
+
+.asm_4ac26
+	ld [wMenuCursorX], a
+
+.asm_4ac29
+	hlcoord 0, 1
+	lb bc, 13, 1
+	call ClearBox
+	call Function4aab6
+	ld a, [PartyCount]
+	hlcoord 6, 1
+.asm_4ac3b
+	ld bc, $28
+	add hl, bc
+	dec a
+	jr nz, .asm_4ac3b
+	ld [hl], $7f
+	ld a, [wMenuCursorY]
+	ld b, a
+	ld a, [PartyCount]
+	inc a
+	cp b
+	jr z, .asm_4ac54
+	ld a, $1
+	ld [wMenuCursorX], a
+
+.asm_4ac54
+	scf
+	ret
+
+.asm_4ac56
+	and a
+	ret
+; 4ac58
+
+Function4ac58: ; 4ac58
+	lb bc, 2, 18
+	hlcoord 1, 15
+	call ClearBox
+	callba FreezeMonIcons
+	ld hl, MenuDataHeader_0x4aca2
+	call LoadMenuDataHeader
+	ld hl, wd019
+	bit 1, [hl]
+	jr z, .asm_4ac89
+	hlcoord 11, 13
+	ld b, $3
+	ld c, $7
+	call TextBox
+	hlcoord 13, 14
+	ld de, String_4ada7
+	call PlaceString
+	jr .asm_4ac96
+
+.asm_4ac89
+	hlcoord 11, 9
+	ld b, $7
+	ld c, $7
+	call TextBox
+	call Function4ad68
+
+.asm_4ac96
+	ld a, $1
+	ld [hBGMapMode], a
+	call Function4acaa
+	call ExitMenu
+	and a
+	ret
+; 4aca2
+
+MenuDataHeader_0x4aca2: ; 0x4aca2
+	db $40 ; flags
+	db 09, 11 ; start coords
+	db 17, 19 ; end coords
+	dw NULL
+	db 1 ; default option
+; 0x4acaa
+
+Function4acaa: ; 4acaa
+.asm_4acaa
+	ld a, $a0
+	ld [wMenuData2Flags], a
+	ld a, [wd019]
+	bit 1, a
+	jr z, .asm_4acc2
+	ld a, $2
+	ld [wMenuData2Items], a
+	ld a, $c
+	ld [wMenuBorderTopCoord], a
+	jr .asm_4accc
+
+.asm_4acc2
+	ld a, $4
+	ld [wMenuData2Items], a
+	ld a, $8
+	ld [wMenuBorderTopCoord], a
+
+.asm_4accc
+	ld a, $b
+	ld [wMenuBorderLeftCoord], a
+	ld a, $1
+	ld [wMenuCursorBuffer], a
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
+	set 6, [hl]
+	call StaticMenuJoypad
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	ld a, [hJoyPressed]
+	bit 0, a
+	jr nz, .asm_4acf4
+	bit 1, a
+	jr nz, .asm_4acf3
+	jr .asm_4acaa
+
+.asm_4acf3
+	ret
+
+.asm_4acf4
+	ld a, [wd019]
+	bit 1, a
+	jr nz, .asm_4ad0e
+	ld a, [wMenuCursorY]
+	cp $1
+	jr z, Function4ad17
+	cp $2
+	jp z, Function4ad56
+	cp $3
+	jp z, Function4ad60
+	jr .asm_4acf3
+
+.asm_4ad0e
+	ld a, [wMenuCursorY]
+	cp $1
+	jr z, Function4ad56
+	jr .asm_4acf3
+
+Function4ad17: ; 4ad17
+	call Function4adb2
+	jr z, .asm_4ad4a
+	ld hl, wd002
+	ld a, $ff
+	cp [hl]
+	jr z, .asm_4ad39
+	inc hl
+	cp [hl]
+	jr z, .asm_4ad39
+	inc hl
+	cp [hl]
+	jr z, .asm_4ad39
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	ld hl, UnknownText_0x4ad51
+	call PrintText
+	ret
+
+.asm_4ad39
+	ld a, [CurPartyMon]
+	ld [hl], a
+	call Function4a9c3
+	ret c
+	ld a, [wd019]
+	set 0, a
+	ld [wd019], a
+	ret
+
+.asm_4ad4a
+	ld a, $ff
+	ld [hl], a
+	call Function4adc2
+	ret
+
+UnknownText_0x4ad51: ; 0x4ad51
+	; Only three #MON may enter.
+	text_jump UnknownText_0x1c521c
+	db "@"
+; 0x4ad56
+
+Function4ad56: ; 4ad56
+	callba OpenPartyStats
+	call WaitBGMap2
+	ret
+; 4ad60
+
+Function4ad60: ; 4ad60
+	callba ManagePokemonMoves
+	ret
+; 4ad67
+
+Function4ad67: ; 4ad67
+	ret
+; 4ad68
+
+Function4ad68: ; 4ad68
+	hlcoord 13, 12
+	ld de, String_4ad88
+	call PlaceString
+	call Function4adb2
+	jr c, .asm_4ad7e
+	hlcoord 13, 10
+	ld de, String_4ada0
+	jr .asm_4ad84
+
+.asm_4ad7e
+	hlcoord 13, 10
+	ld de, String_4ad9a
+
+.asm_4ad84
+	call PlaceString
+	ret
+; 4ad88
+
+String_4ad88: ; 4ad88
+	db   "つよさをみる"
+	next "つかえるわざ"
+	next "もどる@"
+; 4ad9a
+
+String_4ad9a: ; 4ad9a
+	db   "さんかする@"
+; 4ada0
+
+String_4ada0: ; 4ada0
+	db   "さんかしない@"
+; 4ada7
+
+String_4ada7: ; 4ada7
+	db   "つよさをみる"
+	next "もどる@" ; BACK
+; 4adb2
+
+Function4adb2: ; 4adb2
+	ld hl, wd002
+	ld a, [CurPartyMon]
+	cp [hl]
+	ret z
+	inc hl
+	cp [hl]
+	ret z
+	inc hl
+	cp [hl]
+	ret z
+	scf
+	ret
+; 4adc2
+
+Function4adc2: ; 4adc2
+	ld a, [wd002]
+	cp $ff
+	jr nz, .skip
+	ld a, [wd003]
+	cp $ff
+	jr nz, .skip2
+	ld a, [wd004]
+	ld [wd002], a
+	ld a, $ff
+	ld [wd004], a
+	jr .skip
+
+.skip2
+	ld [wd002], a
+	ld a, $ff
+	ld [wd003], a
+
+.skip
+	ld a, [wd003]
+	cp $ff
+	ret nz
+	ld b, a
+	ld a, [wd004]
+	ld [wd003], a
+	ld a, b
+	ld [wd004], a
+	ret
+; 4adf7
+
+Function4adf7: ; 4adf7
+	ld a, [wd019]
+	bit 0, a
+	ret z
+	ld a, [PartyCount]
+	inc a
+	ld [wMenuCursorY], a
+	ld a, $1
+	ld [wMenuCursorX], a
+	ld a, [wd019]
+	res 0, a
+	ld [wd019], a
+	ret
+; 4ae12
--- a/misc/mobile_22.asm
+++ b/misc/mobile_22.asm
@@ -214,7 +214,7 @@
 Function89245: ; 89245 (22:5245)
 	callba TryLoadSaveFile
 	ret c
-	callba Function150b9
+	callba _LoadData
 	and a
 	ret
 
@@ -248,18 +248,18 @@
 	ld [hl], a
 	pop af
 	ld [wMenuCursorBuffer], a
-	call BackUpTiles
+	call PushWindow
 	call Function8923c
 	call Function89209
-	call InterpretMenu2
+	call VerticalMenu
 	push af
 	ld c, $a
 	call DelayFrames
-	call WriteBackup
+	call CloseWindow
 	call Function8920f
 	pop af
 	jr c, .done
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $2
 	jr z, .done
 	and a
@@ -1308,7 +1308,7 @@
 	call Function894bb
 	call Function897af
 	push bc
-	call Function3200
+	call WaitBGMap2
 	call SetPalettes
 	pop bc
 	ret
@@ -1694,7 +1694,7 @@
 
 Function89a8a: ; 89a8a
 	push af
-	ld de, SFX_UNKNOWN_62
+	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
 	pop af
 	ret
@@ -1791,7 +1791,7 @@
 
 
 Function89b00: ; 89b00 (22:5b00)
-	callba Function49351
+	callba MG_Mobile_Layout_LoadPals
 	ret
 ; 89b07 (22:5b07)
 
@@ -2198,9 +2198,9 @@
 	pop af
 	ld [wMenuCursorBuffer], a
 	call Function8923c
-	call Function1c89
-	call Function1c10
-	ld hl, wcfa5
+	call PlaceVerticalMenuItems
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	ret
 
@@ -2224,7 +2224,7 @@
 	push hl
 	call _hl_
 	call Function89dab
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
 	call Function891ab
 	pop af
@@ -2239,10 +2239,10 @@
 
 Function89dab: ; 89dab (22:5dab)
 	call Function8923c
-	callba Function241ba
+	callba MobileMenuJoypad
 	call Function8923c
 	ld a, c
-	ld hl, wcfa8
+	ld hl, wMenuJoypadFilter
 	and [hl]
 	ret z
 	bit 0, a
@@ -2253,12 +2253,12 @@
 	ret
 .asm_89dc7
 	call PlayClickSFX
-	ld a, [wcfa3]
+	ld a, [w2DMenuNumRows]
 	ld c, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp c
 	jr z, .asm_89dd9
-	call Function1bee
+	call PlaceHollowCursor
 	scf
 	ret
 .asm_89dd9
@@ -2275,7 +2275,7 @@
 .asm_89dea
 	call Function8a31c
 	jr z, .asm_89dfd
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld c, a
 	push bc
 	ld hl, Jumptable_89e04
@@ -2384,8 +2384,8 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_89eb1
-	ld de, wd028
-	ld bc, $8
+	ld de, UnknBGPals + 5 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -2420,7 +2420,7 @@
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
-	callba Function49384
+	callba MG_Mobile_Layout_CreatePalBoxes
 	hlcoord 1, 0
 	call Function8a53d
 	ret
@@ -2784,7 +2784,7 @@
 	call Function8923c
 	call Function8a17b
 	jr c, .asm_8a16b
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wd030], a
 	dec d
 	jr z, .asm_8a140
@@ -2816,7 +2816,7 @@
 	ret
 .asm_8a16b
 	call Function89209
-	call WriteBackup
+	call CloseWindow
 	call Function8920f
 	scf
 	ret
@@ -2867,7 +2867,7 @@
 	ld c, $12
 	call TextBox
 	hlcoord 1, 14
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld de, Strings_8a1cc
 	dec a
 	ld c, a
@@ -2950,7 +2950,7 @@
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
-	callba Function49384
+	callba MG_Mobile_Layout_CreatePalBoxes
 	hlcoord 1, 0
 	call Function8a53d
 	hlcoord 12, 4
@@ -2999,7 +2999,7 @@
 	and a
 	ret
 .asm_8a2ea
-	call WriteBackup
+	call CloseWindow
 .asm_8a2ed
 	scf
 	ret
@@ -3044,7 +3044,7 @@
 	push bc
 	call Function8923c
 	callba Function4a3a7
-	callba Function49384
+	callba MG_Mobile_Layout_CreatePalBoxes
 	hlcoord 1, 0
 	call Function8a53d
 	hlcoord 12, 4
@@ -3054,9 +3054,9 @@
 	ld a, c
 	ld [wMenuCursorBuffer], a
 	ld [MenuSelection], a
-	call Function1c89
-	call Function1c10
-	ld hl, wcfa5
+	call PlaceVerticalMenuItems
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 .asm_8a34e
 	call Function8a3a2
@@ -3076,7 +3076,7 @@
 	ret
 .asm_8a370
 	call Function89448
-	call Function1bee
+	call PlaceHollowCursor
 	call Function8a3a2
 	ld a, [MenuSelection]
 	cp $ff
@@ -3086,9 +3086,9 @@
 	ret
 
 Function8a383: ; 8a383 (22:6383)
-	callba Function241ba
+	callba MobileMenuJoypad
 	ld a, c
-	ld hl, wcfa8
+	ld hl, wMenuJoypadFilter
 	and [hl]
 	ret z
 	bit 0, a
@@ -3106,7 +3106,7 @@
 	ret
 
 Function8a3a2: ; 8a3a2 (22:63a2)
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld hl, wd002
 	ld e, a
@@ -3390,16 +3390,16 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_8a5e5
-	ld de, wd020
-	ld bc, $18
+	ld de, UnknBGPals + 4 palettes
+	ld bc, 3 palettes
 	call CopyBytes
 	ld hl, Palette_8a5fd
 	ld de, UnknOBPals
-	ld bc, $8
+	ld bc, 1 palettes
 	call CopyBytes
 	ld hl, Palette_8a605
-	ld de, wd048
-	ld bc, $8
+	ld de, UnknOBPals + 1 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -3411,10 +3411,12 @@
 	RGB 27, 19, 00
 	RGB 07, 11, 22
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 16, 16, 31
 	RGB 27, 19, 00
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 00, 00
 	RGB 27, 19, 00
@@ -3442,7 +3444,7 @@
 	ld [rSVBK], a
 	ld hl, Palette_8a624
 	ld de, UnknOBPals
-	ld bc, $0008
+	ld bc, 1 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -3473,7 +3475,7 @@
 	jr z, .asm_8a66a
 	ld [MenuSelection], a
 	ld b, a
-	ld a, [wcf77]
+	ld a, [wScrollingMenuCursorPosition]
 	inc a
 	ld [wd034], a
 	push bc
@@ -3834,7 +3836,7 @@
 	ld [wd0e3], a
 .asm_8a943
 	call Function8b7bd
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	and $1
 	jr nz, .asm_8a953
 	ld a, c
@@ -3899,7 +3901,7 @@
 	jr .asm_8a9a1
 .asm_8a9bb
 	call Function89209
-	call WriteBackup
+	call CloseWindow
 	call Function8920f
 	ret
 
--- a/misc/mobile_22_2.asm
+++ b/misc/mobile_22_2.asm
@@ -1,6 +1,6 @@
 Function8b342:: ; 8b342
 ; Loads the secondary map header pointer, then runs through a
-; jumptable with three dummy functions.  Spends a lot of energy
+; dw with three dummy functions.  Spends a lot of energy
 ; doing pretty much nothing.
 	call GetSecondaryMapHeaderPointer
 	ld d, h
@@ -10,7 +10,7 @@
 	xor a
 .loop
 	push af
-	ld hl, .jumptable
+	ld hl, .dw
 	rst JumpTable
 	pop af
 	inc a
@@ -19,7 +19,7 @@
 	ret
 ; 8b354
 
-.jumptable: ; 8b354
+.dw: ; 8b354
 	dw .zero
 	dw .one
 	dw .two
@@ -48,7 +48,7 @@
 
 Function8b363: ; 8b363
 	push bc
-	callba Function10632f
+	callba Mobile_AlwaysReturnNotCarry
 	pop bc
 	ret
 ; 8b36c
@@ -542,9 +542,6 @@
 	; CARD FOLDER open.@ @
 	text_jump UnknownText_0x1bc288
 	start_asm
-; 0x8b651
-
-Function8b651: ; 8b651
 	ld de, SFX_TWINKLE
 	call PlaySFX
 	call WaitSFX
@@ -818,7 +815,7 @@
 	and a
 	jr z, .asm_8b7ea
 	dec a
-	ld [wcf77], a
+	ld [wScrollingMenuCursorPosition], a
 
 .asm_8b7ea
 	hlcoord 0, 2
@@ -828,9 +825,9 @@
 	call Function8b75d
 	call UpdateSprites
 	call Function89209
-	call HandleScrollingMenu
+	call ScrollingMenu
 	call Function8920f
-	ld a, [wcf73]
+	ld a, [wMenuJoypad]
 	cp $2
 	jr z, .asm_8b823
 	cp $20
@@ -854,7 +851,7 @@
 
 .asm_8b824
 	ld c, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wd030], a
 	ld a, [wMenuScrollPosition]
 	ld [wd031], a
@@ -880,7 +877,7 @@
 
 Function8b84b: ; 8b84b
 	ld [wMenuScrollPosition], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wMenuCursorBuffer], a
 	ret
 ; 8b855
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -1,7 +1,7 @@
-
-SECTION "bank40", ROMX, BANK[$40]
-
 Function100000: ; 100000
+; d: 1 or 2
+; e: bank
+; bc: addr
 	ld a, [rSVBK]
 	push af
 	ld a, $1
@@ -32,15 +32,15 @@
 	ld a, d
 	ld [wcd21], a
 	ld a, e
-	ld [CreditsTimer], a
+	ld [wcd22], a
 	ld a, c
 	ld [wcd23], a
 	ld a, b
 	ld [wcd24], a
 	callba Function10127e
-	callba Function106462
-	callba Function106464
-	callba Function11615a
+	callba MobileFunc_106462
+	callba Function106464 ; load broken gfx
+	callba Function11615a ; init RAM
 	ld hl, VramState
 	set 1, [hl]
 	ret
@@ -57,7 +57,7 @@
 Function100063: ; 100063
 	xor a
 	ld hl, BGMapBuffer
-	ld bc, $0065
+	ld bc, $65
 	call ByteFill
 	xor a
 	ld hl, wc300
@@ -67,7 +67,7 @@
 	ld [BGMapBuffer], a
 	xor a
 	ld [hMapAnims], a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ret
 ; 100082
 
@@ -84,9 +84,9 @@
 	ld [rIE], a
 	xor a
 	ld [hMapAnims], a
-	ld [hLCDStatCustom], a
+	ld [hFFC6], a
 	ld a, $1
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld [hMobile], a
 	ei
 	ret
@@ -95,7 +95,7 @@
 Function1000a4: ; 1000a4
 	di
 	xor a
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld [hMobile], a
 	xor a
 	ld [hVBlank], a
@@ -109,7 +109,8 @@
 ; 1000ba
 
 Function1000ba: ; 1000ba
-.asm_1000ba
+.loop
+	; call [wcd22]:([wcd23][wcd24] + [wcd25])
 	ld hl, wcd23
 	ld a, [hli]
 	ld h, [hl]
@@ -116,14 +117,14 @@
 	ld l, a
 	ld a, [wcd25]
 	ld e, a
-	ld d, $0
-rept 2
+	ld d, 0
 	add hl, de
-endr
-	ld a, [CreditsTimer]
+	add hl, de
+	ld a, [wcd22]
 	call GetFarHalfword
-	ld a, [CreditsTimer]
+	ld a, [wcd22]
 	rst FarCall
+
 	call Function1000e8
 	call Function1000fa
 	call Function100144
@@ -130,7 +131,7 @@
 	call Function100163
 	ld a, [wcd2b]
 	and a
-	jr z, .asm_1000ba
+	jr z, .loop
 	call DelayFrame
 	ret
 ; 1000e8
@@ -168,7 +169,7 @@
 	and $13
 	ld [rIE], a
 	xor a
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld [hMobile], a
 	ei
 
@@ -265,12 +266,12 @@
 
 .asm_1001c4
 	ld a, $d2
-	ld de, $0002
+	ld de, 2
 	jr .asm_1001d7
 
 .asm_1001cb
 	ld a, $d1
-	ld de, $0001
+	ld de, 1
 	jr .asm_1001d7
 
 .asm_1001d2
@@ -379,7 +380,7 @@
 
 .asm_10029f
 	call Function1002dc
-	ld c, $0
+	ld c, 0
 	ret
 
 .asm_1002a5
@@ -423,8 +424,8 @@
 ; 1002ed
 
 Function1002ed: ; 1002ed
-	callba Function49409
-	callba Function96a4
+	callba LoadOW_BGPal7
+	callba ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	call DelayFrame
@@ -504,7 +505,7 @@
 	ret
 
 .asm_10036a
-	ld a, $0
+	ld a, 0
 	call Function3e32
 	ld [wcd2c], a
 	ld a, h
@@ -545,7 +546,7 @@
 Function10039c: ; 10039c
 	ld hl, wcc60
 	ld de, w3_d000
-	ld bc, $0054
+	ld bc, $54
 	ld a, $3
 	call FarCopyWRAM
 	ret
@@ -554,7 +555,7 @@
 Function1003ab: ; 1003ab
 	ld hl, w3_d000
 	ld de, wcc60
-	ld bc, $0054
+	ld bc, $54
 	ld a, $3
 	call FarCopyWRAM
 	ret
@@ -563,7 +564,7 @@
 Function1003ba: ; 1003ba
 	ld hl, wccb4
 	ld de, w3_d080
-	ld bc, $0054
+	ld bc, $54
 	ld a, $3
 	call FarCopyWRAM
 	ret
@@ -572,7 +573,7 @@
 Function1003c9: ; 1003c9
 	ld hl, w3_d080
 	ld de, wccb4
-	ld bc, $0054
+	ld bc, $54
 	ld a, $3
 	call FarCopyWRAM
 	ret
@@ -582,7 +583,7 @@
 	ld hl, wccb4
 	ld a, [hli]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	push hl
 	add hl, bc
 	ld a, [BGMapPalBuffer]
@@ -614,7 +615,7 @@
 	ld a, [wcc60]
 	sub $2
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, wcc61
 	call Function10043a
 	add hl, bc
@@ -658,7 +659,7 @@
 	add e
 	ld e, a
 	ld a, d
-	adc $0
+	adc 0
 	ld d, a
 	dec bc
 	ld a, b
@@ -813,9 +814,9 @@
 
 Function100513: ; 100513
 	call Function3f7c
-	call Function1c89
-	call Function1c10
-	ld hl, wcfa5
+	call PlaceVerticalMenuItems
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	ret
 ; 100522
@@ -853,12 +854,12 @@
 ; 10054d
 
 Function10054d: ; 10054d
-	callba Function241ba
+	callba MobileMenuJoypad
 	ld a, c
-	ld hl, wcfa8
+	ld hl, wMenuJoypadFilter
 	and [hl]
 	ret z
-	call Function1ff8
+	call MenuClickSound
 	bit 0, a
 	jr nz, .asm_100565
 	bit 1, a
@@ -895,7 +896,7 @@
 Function100585: ; 100585
 	ld hl, MenuDataHeader_1005b2
 	call LoadMenuDataHeader
-	ld a, $0
+	ld a, 0
 	ld [wcd28], a
 	ld a, [wcd26]
 	inc a
@@ -908,7 +909,7 @@
 	ret z
 	jr nc, .asm_1005a6
 	xor a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 
 .asm_1005a6
 	call ExitMenu
@@ -947,7 +948,7 @@
 Function1005cf: ; 1005cf
 	ld hl, MenuDataHeader_1005fc
 	call LoadMenuDataHeader
-	ld a, $0
+	ld a, 0
 	ld [wcd28], a
 	ld a, [wcd26]
 	inc a
@@ -960,7 +961,7 @@
 	ret z
 	jr nc, .asm_1005f0
 	xor a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 .asm_1005f0
 	call ExitMenu
 	ld a, [wcd26]
@@ -1374,7 +1375,7 @@
 	jr nz, .asm_10087c
 	ld a, [wcd6e]
 	ld c, a
-	ld a, $0
+	ld a, 0
 	sub c
 	jr nc, .asm_100858
 	add $3c
@@ -1429,7 +1430,7 @@
 	call CloseSRAM
 	ld a, [StringBuffer2 + 2]
 	ld b, a
-	ld a, $0
+	ld a, 0
 	sub b
 	jr nc, .asm_1008c8
 	add $3c
@@ -1449,7 +1450,7 @@
 
 .asm_1008da
 	call Function10070d
-	ld c, $0
+	ld c, 0
 	ret
 ; 1008e0
 
@@ -1674,7 +1675,7 @@
 	ld a, $ff
 	ld [wOtherPlayerLinkAction], a
 .waiting
-	call LinkCommunicationsSendReceive
+	call LinkTransfer
 	call DelayFrame
 	ld a, [wOtherPlayerLinkAction]
 	inc a
@@ -1683,7 +1684,7 @@
 	ld b, 10
 .receive
 	call DelayFrame
-	call LinkCommunicationsSendReceive
+	call LinkTransfer
 	dec b
 	jr nz, .receive
 
@@ -1690,7 +1691,7 @@
 	ld b, 10
 .acknowledge
 	call DelayFrame
-	call LinkCommunicationsSignalDataReceived
+	call LinkDataReceived
 	dec b
 	jr nz, .acknowledge
 
@@ -1702,7 +1703,7 @@
 Function100a87: ; 100a87
 	call Function100acf
 	call Function100641
-	ld a, $0
+	ld a, 0
 	ld [wcd27], a
 .asm_100a92
 	call DelayFrame
@@ -1801,12 +1802,12 @@
 	ld de, LoadMenuDataHeader
 	call FarCall_de
 	ld a, BANK(BattleMenuDataHeader)
-	ld [wcf94], a
+	ld [wMenuData2_2DMenuItemStringsBank], a
 	ld a, [wd0d2]
 	ld [wMenuCursorBuffer], a
 	call Function100e72
 	call Function100b45
-	callba Function8e85
+	callba InitPartyMenuBGPal7
 	call Function100ed4
 	ld a, [wMenuCursorBuffer]
 	ld [wd0d2], a
@@ -1816,24 +1817,24 @@
 
 Function100b45: ; 100b45
 	call Function100b7a
-.asm_100b48
-	call Function100dd2
-	callba Function241ba
+.loop
+	call Mobile_SetOverworldDelay
+	callba MobileMenuJoypad
 	push bc
 	callba Function10402d
 	call Function100e2d
 	pop bc
 	jr c, .asm_100b6b
-	ld a, [wcfa8]
+	ld a, [wMenuJoypadFilter]
 	and c
-	jr z, .asm_100b48
-	callba Function24098
+	jr z, .loop
+	callba Mobile_GetMenuSelection
 	ret
 
 .asm_100b6b
-	ld a, [wcfa4]
+	ld a, [w2DMenuNumCols]
 	ld c, a
-	ld a, [wcfa3]
+	ld a, [w2DMenuNumRows]
 	call SimpleMultiply
 	ld [wMenuCursorBuffer], a
 	and a
@@ -1842,14 +1843,14 @@
 
 Function100b7a: ; 100b7a
 	ld hl, CopyMenuData2
-	ld a, [wcf94]
+	ld a, [wMenuData2_2DMenuItemStringsBank]
 	rst FarCall
-	callba Function24085
+	callba Draw2DMenu
 	callba MobileTextBorder
 	call UpdateSprites
 	call ApplyTilemap
-	callba Function2411a
-	ld hl, wcfa5
+	callba Init2DMenuCursorPosition
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	ret
 ; 100b9f
@@ -1856,71 +1857,70 @@
 
 MobileMoveSelectionScreen: ; 100b9f
 	xor a
-	ld [wd0e3], a
+	ld [wMoveSwapBuffer], a
 	callba CheckPlayerHasUsableMoves
 	ret z
 	call Function100dd8
 	jp c, xor_a_dec_a
 	call Function100e72
-	call Function100bc2
+	call .GetMoveSelection
 	push af
-	callba Function8e85
+	callba InitPartyMenuBGPal7
 	call Function100ed4
 	pop af
 	ret
 ; 100bc2
 
-Function100bc2: ; 100bc2
+.GetMoveSelection: ; 100bc2
 	xor a
 	ld [hBGMapMode], a
 	call Function100c74
 	call Function100c98
-.asm_100bcb
+.master_loop
 	callba MoveInfoBox
-.asm_100bd1
-	call Function100dd2
-	callba Function241ba
+.loop
+	call Mobile_SetOverworldDelay
+	callba MobileMenuJoypad
 	push bc
 	callba Function10402d
 	call Function100e2d
 	pop bc
-	jr c, .asm_100c25
-	ld a, [wcfa8]
+	jr c, .b_button
+	ld a, [wMenuJoypadFilter]
 	and c
-	bit 6, a
-	jp nz, .asm_100bff
-	bit 7, a
-	jp nz, .asm_100c10
-	bit 0, a
-	jr nz, .asm_100c30
-	bit 1, a
-	jr nz, .asm_100c25
-	jr .asm_100bd1
+	bit D_UP_F, a
+	jp nz, .d_up
+	bit D_DOWN_F, a
+	jp nz, .d_down
+	bit A_BUTTON_F, a
+	jr nz, .a_button
+	bit B_BUTTON_F, a
+	jr nz, .b_button
+	jr .loop
 
-.asm_100bff
-	ld a, [MenuSelection2]
+.d_up
+	ld a, [wMenuCursorY]
 	and a
-	jp nz, .asm_100bcb
-	ld a, [wd0eb]
+	jp nz, .master_loop
+	ld a, [wNumMoves]
 	inc a
-	ld [MenuSelection2], a
-	jp .asm_100bcb
+	ld [wMenuCursorY], a
+	jp .master_loop
 
-.asm_100c10
-	ld a, [MenuSelection2]
+.d_down
+	ld a, [wMenuCursorY]
 	ld b, a
-	ld a, [wd0eb]
-rept 2
+	ld a, [wNumMoves]
 	inc a
-endr
+	inc a
 	cp b
-	jp nz, .asm_100bcb
+	jp nz, .master_loop
 	ld a, $1
-	ld [MenuSelection2], a
-	jp .asm_100bcb
+	ld [wMenuCursorY], a
+	jp .master_loop
 
-.asm_100c25
-	ld a, [MenuSelection2]
+.b_button
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurMoveNum], a
 	ld a, $1
@@ -1927,11 +1927,11 @@
 	and a
 	ret
 
-.asm_100c30
-	ld a, [MenuSelection2]
+.a_button
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurMoveNum], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, 0
@@ -1939,14 +1939,14 @@
 	add hl, bc
 	ld a, [hl]
 	and $3f
-	jr z, .asm_100c68
+	jr z, .no_pp_left
 	ld a, [PlayerDisableCount]
 	swap a
 	and $f
 	dec a
 	cp c
-	jr z, .asm_100c63
-	ld a, [MenuSelection2]
+	jr z, .move_disabled
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, 0
@@ -1957,17 +1957,17 @@
 	xor a
 	ret
 
-.asm_100c63
+.move_disabled
 	ld hl, BattleText_TheMoveIsDisabled
-	jr .asm_100c6b
+	jr .print_text
 
-.asm_100c68
+.no_pp_left
 	ld hl, BattleText_TheresNoPPLeftForThisMove
 
-.asm_100c6b
+.print_text
 	call StdBattleTextBox
 	call Call_LoadTempTileMapToTileMap
-	jp Function100bc2
+	jp .GetMoveSelection
 ; 100c74
 
 Function100c74: ; 100c74
@@ -1987,55 +1987,59 @@
 ; 100c98
 
 Function100c98: ; 100c98
-	ld de, Unknown_100cad
-	call InitMenu3
-	ld a, [wd0eb]
+	ld de, .attrs
+	call SetMenuAttributes
+	ld a, [wNumMoves]
 	inc a
-	ld [wcfa3], a
+	ld [w2DMenuNumRows], a
 	ld a, [CurMoveNum]
 	inc a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ret
 ; 100cad
 
-Unknown_100cad: ; 100cad
-	db $0a, $01, $ff, $01, $a0, $00, $20, $c3
+.attrs: ; 100cad
+	db 10, 1
+	db 255, 1
+	db $a0, $00
+	dn 2, 0
+	db D_UP | D_DOWN | A_BUTTON | B_BUTTON
 
 Function100cb5: ; 100cb5
 	call Function100dd8
 	ret c
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	res 6, [hl]
-.asm_100cc0
-	call Function100dd2
-	callba Function241ba
+.loop
+	call Mobile_SetOverworldDelay
+	callba MobileMenuJoypad
 	push bc
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	callba Function10402d
 	call Function100dfd
 	pop bc
-	jr c, .asm_100d17
-	ld a, [wcfa8]
+	jr c, .done
+	ld a, [wMenuJoypadFilter]
 	and c
-	jr z, .asm_100cc0
-	call Function1bee
+	jr z, .loop
+	call PlaceHollowCursor
 	ld a, [PartyCount]
 	inc a
 	ld b, a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp b
-	jr z, .asm_100d17
-	ld [wd0d8], a
+	jr z, .done
+	ld [wPartyMenuCursor], a
 	ld a, [hJoyLast]
 	ld b, a
 	bit 1, b
-	jr nz, .asm_100d17
-	ld a, [MenuSelection2]
+	jr nz, .done
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurPartyMon], a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, PartySpecies
 	add hl, bc
 	ld a, [hl]
@@ -2046,7 +2050,7 @@
 	and a
 	ret
 
-.asm_100d17
+.done
 	ld de, SFX_READ_TEXT_2
 	call PlaySFX
 	call WaitSFX
@@ -2054,23 +2058,23 @@
 	ret
 ; 100d22
 
-Function100d22: ; 100d22
+MobileBattleMonMenu: ; 100d22
 	call Function100dd8
 	ret c
 	call Function100d67
-	ld hl, wcfa5
+	ld hl, w2DMenuFlags1
 	set 7, [hl]
 	res 6, [hl]
 .asm_100d30
-	call Function100dd2
-	callba Function241ba
+	call Mobile_SetOverworldDelay
+	callba MobileMenuJoypad
 	push bc
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	callba Function10402d
 	call Function100dfd
 	pop bc
 	jr c, .asm_100d54
-	ld a, [wcfa8]
+	ld a, [wMenuJoypadFilter]
 	and c
 	jr nz, .asm_100d56
 	jr .asm_100d30
@@ -2102,11 +2106,11 @@
 	ld [hBGMapMode], a
 	call MenuBox
 	call UpdateSprites
-	call Function1c89
+	call PlaceVerticalMenuItems
 	call WaitBGMap
 	call CopyMenuData2
-	call Function1c10
-	ld hl, wcfa5
+	call InitVerticalMenuCursor
+	ld hl, w2DMenuFlags1
 	set 6, [hl]
 	ret
 ; 100d88
@@ -2153,19 +2157,19 @@
 Function100dc0: ; 100dc0
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
-	jr nz, .asm_100dd0
+	jr nz, .mobile
 	ld hl, wcd2a
 	bit 3, [hl]
-	jr z, .asm_100dd0
+	jr z, .mobile
 	scf
 	ret
 
-.asm_100dd0
+.mobile
 	xor a
 	ret
 ; 100dd2
 
-Function100dd2: ; 100dd2
+Mobile_SetOverworldDelay: ; 100dd2
 	ld a, 30
 	ld [OverworldDelay], a
 	ret
@@ -2320,7 +2324,7 @@
 	ld a, [hl]
 	cp $2
 	ret c
-	ld [hl], $0
+	ld [hl], 0
 	jr Function100ec5
 
 Function100ec4: ; 100ec4
@@ -2333,13 +2337,13 @@
 ; 100eca
 
 Function100eca: ; 100eca
-	callba Function8e8b
+	callba Mobile_InitPartyMenuBGPal7
 	call Function100ed4
 	ret
 ; 100ed4
 
 Function100ed4: ; 100ed4
-	callba Function96a4
+	callba ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -2406,7 +2410,7 @@
 	call Function100f3d
 	; next line
 	pop hl
-	ld de, $0007
+	ld de, 7
 	add hl, de
 	jr .loop
 
@@ -2527,7 +2531,7 @@
 	db -1
 
 Unknown_100feb: ; 100feb
-	dbwww $00, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
+	dbwww $0, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
 	db -1
 
 Unknown_100ff3: ; 100ff3
@@ -2537,8 +2541,8 @@
 	dbwww $80, PlayerID, 2, NULL
 	dbwww $80, wSecretID, 2, NULL
 	dbwww $80, PlayerGender, 1, NULL
-	dbwww $04, $a603, 8, NULL
-	dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
+	dbwww $4, $a603, 8, NULL
+	dbwww $4, $a007, PARTYMON_STRUCT_LENGTH, NULL
 	db -1
 
 Unknown_10102c: ; 10102c
@@ -2553,10 +2557,10 @@
 Function101050: ; 101050
 	call Function10107d
 	ld a, [OTPartyCount]
-rept 2
+rept 2 ; ???
 	ld hl, wc608
 endr
-	ld bc, $01b3
+	ld bc, wc7bb - wc608
 	call Function1010de
 	ld hl, wc7bb
 	ld [hl], e
@@ -2566,7 +2570,7 @@
 	call GetSRAMBank
 	ld hl, wc608
 	ld de, $a001
-	ld bc, $01b5
+	ld bc, wc7bd - wc608
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -2575,11 +2579,11 @@
 Function10107d: ; 10107d
 	xor a
 	ld hl, wc608
-	ld bc, $01b5
+	ld bc, wc7bd - wc608
 	call ByteFill
-	ld hl, wd26b
+	ld hl, OTPlayerName
 	ld de, wc608
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld hl, wd271
 	ld a, [hli]
@@ -2588,16 +2592,16 @@
 	ld [wc608 + 12], a
 	ld hl, OTPartyMonNicknames
 	ld de, wc608 + 13
-	ld bc, $000b
-	call Function1010cd
+	ld bc, NAME_LENGTH
+	call .CopyAllFromOT
 	ld hl, OTPartyMonOT
-	ld de, wc656 + 1
-	ld bc, $000b
-	call Function1010cd
+	ld de, OTName + 1
+	ld bc, NAME_LENGTH
+	call .CopyAllFromOT
 	ld hl, OTPartyMon1Species
 	ld de, wc68a + 15
-	ld bc, $0030
-	call Function1010cd
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call .CopyAllFromOT
 	ld a, $50
 	ld [wc7b9], a
 	ld a, $33
@@ -2605,7 +2609,7 @@
 	ret
 ; 1010cd
 
-Function1010cd: ; 1010cd
+.CopyAllFromOT: ; 1010cd
 	push hl
 	ld hl, 0
 	ld a, [OTPartyCount]
@@ -2621,7 +2625,7 @@
 	push hl
 	push bc
 	ld de, 0
-.asm_1010e3
+.loop
 	ld a, [hli]
 	add e
 	ld e, a
@@ -2631,7 +2635,7 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_1010e3
+	jr nz, .loop
 	pop bc
 	pop hl
 	ret
@@ -2640,7 +2644,7 @@
 Function1010f2: ; 1010f2
 	xor a
 	ld hl, StringBuffer2
-	ld bc, $0009
+	ld bc, 9
 	call ByteFill
 	ld hl, wdc5c
 	ld de, PartyCount
@@ -2687,7 +2691,7 @@
 	ld [de], a
 	inc de
 	ld hl, StringBuffer2 + 6
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	ld a, $ff
 	ld [de], a
@@ -2699,7 +2703,7 @@
 	add l
 	ld l, a
 	ld a, h
-	adc $0
+	adc 0
 	ld h, a
 	ld a, [hl]
 	pop hl
@@ -2708,7 +2712,7 @@
 	add e
 	ld e, a
 	ld a, d
-	adc $0
+	adc 0
 	ld d, a
 	ld a, [de]
 	pop de
@@ -2716,11 +2720,11 @@
 ; 10117c
 
 Function10117c: ; 10117c
-	ld bc, $0030
+	ld bc, $30
 	jr asm_101184
 
 Function101181: ; 101181
-	ld bc, $000b
+	ld bc, 11
 
 asm_101184:
 	ld a, wc608 % $100
@@ -2851,7 +2855,7 @@
 
 Function101251: ; 101251
 	call UpdateSprites
-	call ResetWindow
+	call RefreshScreen
 	ld hl, UnknownText_0x1021f4
 	call Function1021e0
 	call Function1020ea
@@ -2894,7 +2898,7 @@
 	jr z, .asm_101292
 
 .asm_101290
-	ld c, $0
+	ld c, 0
 
 .asm_101292
 	ld a, c
@@ -3029,7 +3033,7 @@
 
 Function10138b: ; 10138b
 	callba Function8adcc
-	ld c, $0
+	ld c, 0
 	jr c, .asm_101396
 	inc c
 
@@ -3054,7 +3058,7 @@
 Function1013aa: ; 1013aa
 	call ClearBGPalettes
 	call Call_ExitMenu
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	callba Function106464
 	call UpdateSprites
 	call Function2b5c
@@ -3062,8 +3066,8 @@
 ; 1013c0
 
 Function1013c0: ; 1013c0
-	callba Function8000
-	callba Function106462
+	callba BlankScreen
+	callba MobileFunc_106462
 	callba Function106464
 	call Function2b5c
 	ret
@@ -3083,7 +3087,7 @@
 	push de
 	inc de
 	ld b, a
-	ld c, $0
+	ld c, 0
 .asm_1013e6
 	inc c
 	ld a, [hli]
@@ -3125,7 +3129,7 @@
 
 Function101406: ; 101406
 	ld c, a
-	ld b, $0
+	ld b, 0
 .asm_101409
 	ld a, [de]
 	inc de
@@ -3176,7 +3180,7 @@
 	ld a, [wcd26]
 	bit 7, a
 	ret z
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3215,7 +3219,7 @@
 	ld a, [wcd26]
 	bit 7, a
 	ret z
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3274,7 +3278,7 @@
 Function1014e2: ; 1014e2
 	ld hl, wcd29
 	set 6, [hl]
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3294,8 +3298,8 @@
 
 Function101507: ; 101507
 	ld de, wcd30
-	ld hl, $0040
-	ld bc, $0040
+	ld hl, $40
+	ld bc, $40
 	ld a, $2
 	call Function3e32
 	ld a, [wcd25]
@@ -3390,7 +3394,7 @@
 	ld a, $5
 	ld hl, w5_d800
 	call Function10174c
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3405,7 +3409,7 @@
 	ld a, $5
 	ld hl, w5_d800
 	call Function10174c
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3420,7 +3424,7 @@
 	ld a, $5
 	ld hl, w5_d800
 	call Function10174c
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3431,7 +3435,7 @@
 Function101600: ; 101600
 	ld hl, w5_d800
 	ld de, wc608
-	ld bc, $01e0
+	ld bc, $1e0
 	ld a, $5
 	call FarCopyWRAM
 	ld de, wc608
@@ -3460,7 +3464,7 @@
 
 Function101635: ; 101635
 	ld de, wc608
-	ld bc, $01e0
+	ld bc, $1e0
 	call FarCopyWRAM
 	ret
 ; 10163f
@@ -3467,7 +3471,7 @@
 
 Function10163f: ; 10163f
 	ld hl, wc608
-	ld bc, $01e0
+	ld bc, $1e0
 	call FarCopyWRAM
 	ret
 ; 101649
@@ -3507,7 +3511,7 @@
 ; 10167d
 
 Function10167d: ; 10167d
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3520,7 +3524,7 @@
 	ret c
 
 Function10168e: ; 10168e
-	ld b, $0
+	ld b, 0
 	ld c, $1
 	callba Function10079c
 	ret c
@@ -3536,7 +3540,7 @@
 	ld a, [wcd26]
 	bit 7, a
 	ret z
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -3581,7 +3585,7 @@
 ; 1016f8
 
 Function1016f8: ; 1016f8
-	ld a, $0
+	ld a, 0
 	ld [wcd27], a
 	ld a, [wcd26]
 	inc a
@@ -3612,7 +3616,7 @@
 	ld a, [wcd39]
 	cp $ff
 	jr z, .asm_101731
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 
@@ -3634,7 +3638,7 @@
 	ld l, a
 	ld a, [Unknown_10173a]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	pop af
 	call AddNTimes
 	pop bc
@@ -3663,7 +3667,7 @@
 
 Function10176f: ; 10176f
 	ld hl, wccb4
-	ld bc, $0054
+	ld bc, $54
 	ld a, $11
 	call ByteFill
 	ret
@@ -3672,7 +3676,7 @@
 Function10177b: ; 10177b
 	ld a, [Unknown_10173a]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld a, [wcd3a]
 	ld hl, 0
 	call AddNTimes
@@ -3725,7 +3729,7 @@
 Function1017c7: ; 1017c7
 	ld a, [wcc60]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld a, [wcd3a]
 	dec a
 	ld hl, wcd3e
@@ -3740,7 +3744,7 @@
 ; 1017e4
 
 Function1017e4: ; 1017e4
-	ld a, $0
+	ld a, 0
 	ld [wcd27], a
 	ld a, [wcd25]
 	inc a
@@ -3753,7 +3757,7 @@
 	ret c
 
 Function1017f5: ; 1017f5
-	ld b, $0
+	ld b, 0
 	ld c, $1
 	callba Function10079c
 	ret c
@@ -3825,17 +3829,17 @@
 
 Unknown_10186f:
 	db .end - @
-	db $19, $73, $09, $13, "trade_crystal"
+	db $19, $73, $9, $13, "trade_crystal"
 .end	db 0
 
 Unknown_101882:
 	db .end - @
-	db $19, $67, $10, $01, "free__crystal"
+	db $19, $67, $10, $1, "free__crystal"
 .end	db 0
 
 Unknown_101895:
 	db .end - @
-	db $19, $67, $10, $01, "limit_crystal"
+	db $19, $67, $10, $1, "limit_crystal"
 .end	db 0
 ; 1018a8
 
@@ -3910,7 +3914,7 @@
 
 .asm_101909
 	ld de, LinkBattleRNs
-	ld bc, $000a
+	ld bc, 10
 	call CopyBytes
 	ret
 ; 101913
@@ -3967,7 +3971,7 @@
 ; 10196d
 
 Function10196d: ; 10196d
-	callba Function8000
+	callba BlankScreen
 	callba Function10060d
 	ld hl, wcd29
 	set 5, [hl]
@@ -3977,7 +3981,7 @@
 	ld [wccb4], a
 	ld hl, wdc5c
 	ld de, wccb5
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	ld hl, wcd6c
 	ld a, [hli]
@@ -3998,7 +4002,7 @@
 	xor a
 	ld [wdc5f], a
 	ld [wdc60], a
-	callba Function8000
+	callba BlankScreen
 	call SpeechTextBox
 	callba Function100846
 	ld c, $78
@@ -4034,8 +4038,8 @@
 
 	ld a, c
 	ld [OtherTrainerClass], a
-	ld hl, wd26b
-	ld de, wc656
+	ld hl, OTPlayerName
+	ld de, OTName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd2f]
@@ -4059,7 +4063,7 @@
 	ld a, $1
 	ld [wc2d7], a
 	callba BattleIntro
-	callba SendOutFirstMons
+	callba DoBattle
 	callba ShowLinkBattleParticipantsAfterEnd
 	xor a
 	ld [wc2d7], a
@@ -4073,7 +4077,7 @@
 Function101a4f: ; 101a4f
 	ld a, $1
 	ld [wc2d7], a
-	callba Function3f77c
+	callba DetermineMobileBattleResult
 	xor a
 	ld [wc2d7], a
 	callba CleanUpBattleRAM
@@ -4088,7 +4092,7 @@
 Function101a75: ; 101a75
 	ld hl, wcc61
 	ld de, wcd75
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	ld de, wcc64
 	callba Function100772
@@ -4157,7 +4161,7 @@
 ; 101b0f
 
 Function101b0f: ; 101b0f
-	ld c, $0
+	ld c, 0
 	call Function10142c
 	ld e, $3
 	call Function101ee4
@@ -4166,7 +4170,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101b2b
@@ -4179,9 +4183,9 @@
 	bit 7, a
 	ret z
 	call Function1013dd
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .asm_101b51
 	ld a, $2
@@ -4219,7 +4223,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101b8f
@@ -4232,9 +4236,9 @@
 	bit 7, a
 	ret z
 	call Function1013dd
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .asm_101bbc
 	ld a, $1
@@ -4260,7 +4264,7 @@
 	call Function101ee4
 	call Function102048
 	call Function1013dd
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -4276,9 +4280,9 @@
 	bit 7, a
 	ret z
 	call Function1013dd
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr nz, .asm_101c0b
 	ld a, $2a
@@ -4355,7 +4359,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101c92
@@ -4378,7 +4382,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101cbc
@@ -4465,7 +4469,7 @@
 	ld a, [wcd26]
 	bit 7, a
 	ret z
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ld a, [wcd25]
 	inc a
@@ -4518,7 +4522,7 @@
 ; 101d8d
 
 Unknown_101d8d: ; 101d8d
-	db $15, $15, $1f, $1f, $0c, $12, $3a, $3a
+	db $15, $15, $1f, $1f, $c, $12, $3a, $3a
 ; 101d95
 
 Function101d95: ; 101d95
@@ -4531,7 +4535,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101db2
@@ -4646,7 +4650,7 @@
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
-	ld a, $0
+	ld a, 0
 	ld [wcd26], a
 	ret
 ; 101e64
@@ -4740,9 +4744,8 @@
 Function101ee4: ; 101ee4
 	ld d, 0
 	ld hl, Unknown_101ef5
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -4890,7 +4893,7 @@
 	ret
 
 .asm_10208a
-	ld [hl], $0
+	ld [hl], 0
 	scf
 	ret
 ; 10208e
@@ -4900,7 +4903,7 @@
 	ld h, d
 	ld l, e
 	ld de, wdc42
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	pop de
 	ret
@@ -4909,7 +4912,7 @@
 Function10209c: ; 10209c
 	ld a, $ff
 	ld hl, wdc42
-	ld bc, $0008
+	ld bc, 8
 	call ByteFill
 	ret
 ; 1020a8
@@ -4934,7 +4937,7 @@
 	jr z, .asm_1020e8
 	dec a
 	ld hl, $a04c
-	ld bc, $0025
+	ld bc, $25
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -4998,7 +5001,7 @@
 
 .asm_10212f
 	pop hl
-	ld de, $0025
+	ld de, $25
 	add hl, de
 	dec c
 	jr nz, .asm_10211c
@@ -5043,7 +5046,7 @@
 Function102180: ; 102180
 	ld hl, wc608 + 1
 	ld de, StringBuffer2
-	ld bc, $000b
+	ld bc, 11
 	call CopyBytes
 	ret
 ; 10218d
@@ -5051,7 +5054,7 @@
 Function10218d: ; 10218d
 	ld hl, wdc00
 	ld de, wc608
-	ld bc, $0026
+	ld bc, $26
 	ld a, $5
 	call FarCopyWRAM
 	ld de, wc608 + 1
@@ -5117,13 +5120,13 @@
 
 Function1021f9: ; 1021f9
 	call Function102233
-	ld a, $0
+	ld a, $0 ; Function10234b
 	ld [wcd49], a
 	ld hl, wcd29
 	bit 3, [hl]
 	res 3, [hl]
 	jr z, .asm_10220f
-	ld a, $1
+	ld a, $1 ; Function102361
 	ld [wcd49], a
 
 .asm_10220f
@@ -5151,7 +5154,7 @@
 
 Function102233: ; 102233
 	ld hl, wcd49
-	ld bc, $000a
+	ld bc, 10
 	xor a
 	call ByteFill
 	call Function10304f
@@ -5197,7 +5200,7 @@
 	bit 3, [hl]
 	ret z
 	res 3, [hl]
-	ld de, $0008
+	ld de, 8
 	call PlaySFX
 	ret
 ; 102283
@@ -5277,49 +5280,49 @@
 ; 1022f5
 
 Jumptable_1022f5: ; 1022f5
-	dw Function10234b
-	dw Function102361
-	dw Function10236e
-	dw Function102387
-	dw Function1023a1
-	dw Function1025c7
-	dw Function1025dc
-	dw Function1024f6
-	dw Function10250c
-	dw Function1024a8
-	dw Function102591
-	dw Function1024a8
-	dw Function1025b0
-	dw Function1025bd
-	dw Function102814
-	dw Function10283c
-	dw Function102862
-	dw Function10286f
-	dw Function1024a8
-	dw Function1028a5
-	dw Function1028ab
-	dw Function1023b5
-	dw Function1023c6
-	dw Function1024af
-	dw Function102416
-	dw Function102423
-	dw Function10244b
-	dw Function1024af
-	dw Function10246a
-	dw Function102652
-	dw Function10266b
-	dw Function1025e9
-	dw Function1025ff
-	dw Function102738
-	dw Function102754
-	dw Function1026b7
-	dw Function1026c8
-	dw Function1028bf
-	dw Function1028c6
-	dw Function1028d3
-	dw Function1028da
-	dw Function1024a8
-	dw Function10248d
+	dw Function10234b ; 00
+	dw Function102361 ; 01
+	dw Function10236e ; 02
+	dw Function102387 ; 03
+	dw Function1023a1 ; 04
+	dw Function1025c7 ; 05
+	dw Function1025dc ; 06
+	dw Function1024f6 ; 07
+	dw Function10250c ; 08
+	dw Function1024a8 ; 09
+	dw Function102591 ; 0a
+	dw Function1024a8 ; 0b
+	dw Function1025b0 ; 0c
+	dw Function1025bd ; 0d
+	dw Function102814 ; 0e
+	dw Function10283c ; 0f
+	dw Function102862 ; 10
+	dw Function10286f ; 11
+	dw Function1024a8 ; 12
+	dw Function1028a5 ; 13
+	dw Function1028ab ; 14
+	dw Function1023b5 ; 15
+	dw Function1023c6 ; 16
+	dw Function1024af ; 17
+	dw Function102416 ; 18
+	dw Function102423 ; 19
+	dw Function10244b ; 1a
+	dw Function1024af ; 1b
+	dw Function10246a ; 1c
+	dw Function102652 ; 1d
+	dw Function10266b ; 1e
+	dw Function1025e9 ; 1f
+	dw Function1025ff ; 20
+	dw Function102738 ; 21
+	dw Function102754 ; 22
+	dw Function1026b7 ; 23
+	dw Function1026c8 ; 24
+	dw Function1028bf ; 25
+	dw Function1028c6 ; 26
+	dw Function1028d3 ; 27
+	dw Function1028da ; 28
+	dw Function1024a8 ; 29
+	dw Function10248d ; 2a
 ; 10234b
 
 Function10234b: ; 10234b
@@ -5370,7 +5373,7 @@
 	call Function102d9a
 	call Function102dd3
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 
 Function1023a1: ; 1023a1
 	call Function102283
@@ -5401,12 +5404,12 @@
 	ld [CurPartyMon], a
 	xor a
 	ld [wd10b], a
-	callba Functione039
+	callba RemoveMonFromPartyOrBox
 	ld hl, PartyCount
 	inc [hl]
 	ld a, [hli]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld [hl], $ff
 	ld a, [PartyCount]
@@ -5419,9 +5422,9 @@
 	set 1, [hl]
 	ld a, $14
 	ld [wcd4e], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4f], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -5446,7 +5449,7 @@
 	callba BackupMobileEventIndex
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -5460,9 +5463,9 @@
 	set 1, [hl]
 	ld a, $19
 	ld [wcd4e], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4f], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -5502,7 +5505,7 @@
 	ld hl, wcd4e
 	dec [hl]
 	ret nz
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -5555,7 +5558,7 @@
 	ret z
 
 .asm_1024e9
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -5564,7 +5567,7 @@
 ; 1024f6
 
 Function1024f6: ; 1024f6
-	call Function1bee
+	call PlaceHollowCursor
 	ld hl, wcd4b
 	set 1, [hl]
 	ld a, [wcd4c]
@@ -5608,7 +5611,7 @@
 	call Function103021
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, $1e
 	ld [wcd4e], a
@@ -5633,7 +5636,7 @@
 .asm_102577
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, $1e
 	ld [wcd4e], a
@@ -5648,7 +5651,7 @@
 	call Function102ee7
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, $1e
 	ld [wcd4e], a
@@ -5716,43 +5719,43 @@
 	set 2, [hl]
 	callba Function1009f3
 	ret c
-	callba Function241ba
-	ld a, [wcfa8]
+	callba MobileMenuJoypad
+	ld a, [wMenuJoypadFilter]
 	and c
 	ret z
-	bit 0, c
-	jr nz, .asm_102623
-	bit 6, c
-	jr nz, .asm_10262e
-	bit 7, c
-	jr nz, .asm_102646
+	bit A_BUTTON_F, c
+	jr nz, .a_button
+	bit D_UP_F, c
+	jr nz, .d_up
+	bit D_DOWN_F, c
+	jr nz, .d_down
 	ret
 
-.asm_102623
+.a_button
 	ld hl, wcd4b
 	set 3, [hl]
-	ld a, $27
+	ld a, $27 ; Function1028d3
 	ld [wcd49], a
 	ret
 
-.asm_10262e
-	ld a, [MenuSelection2]
+.d_up
+	ld a, [wMenuCursorY]
 	ld b, a
 	ld a, [OTPartyCount]
 	cp b
 	ret nz
-	call Function1bf7
+	call HideCursor
 	ld a, [PartyCount]
-	ld [MenuSelection2], a
-	ld a, $1d
+	ld [wMenuCursorY], a
+	ld a, $1d ; Function102652
 	ld [wcd49], a
 	ret
 
-.asm_102646
-	ld a, [MenuSelection2]
+.d_down
+	ld a, [wMenuCursorY]
 	cp $1
 	ret nz
-	ld a, $23
+	ld a, $23 ; Function1026b7
 	ld [wcd49], a
 	ret
 ; 102652
@@ -5778,41 +5781,41 @@
 	set 2, [hl]
 	callba Function1009f3
 	ret c
-	callba Function241ba
-	ld a, [wcfa8]
+	callba MobileMenuJoypad
+	ld a, [wMenuJoypadFilter]
 	and c
 	ret z
-	bit 0, c
-	jr nz, .asm_10268f
-	bit 7, c
-	jr nz, .asm_10269a
-	bit 6, c
-	jr nz, .asm_1026a8
+	bit A_BUTTON_F, c
+	jr nz, .a_button
+	bit D_DOWN_F, c
+	jr nz, .d_down
+	bit D_UP_F, c
+	jr nz, .d_up
 	ret
 
-.asm_10268f
+.a_button
 	ld hl, wcd4b
 	set 3, [hl]
-	ld a, $21
+	ld a, $21 ; Function102738
 	ld [wcd49], a
 	ret
 
-.asm_10269a
-	ld a, [MenuSelection2]
+.d_down
+	ld a, [wMenuCursorY]
 	dec a
 	ret nz
-	call Function1bf7
-	ld a, $1f
+	call HideCursor
+	ld a, $1f ; Function1025e9
 	ld [wcd49], a
 	ret
 
-.asm_1026a8
-	ld a, [MenuSelection2]
+.d_up
+	ld a, [wMenuCursorY]
 	ld b, a
 	ld a, [PartyCount]
 	cp b
 	ret nz
-	ld a, $23
+	ld a, $23 ; Function1026b7
 	ld [wcd49], a
 	ret
 ; 1026b7
@@ -5823,7 +5826,7 @@
 	ld a, [wcd49]
 	inc a
 	ld [wcd49], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 
 Function1026c8: ; 1026c8
@@ -5842,7 +5845,7 @@
 ; 1026de
 
 Function1026de: ; 1026de
-	call Function1bf7
+	call HideCursor
 	hlcoord 9, 17
 	ld [hl], $ed
 	ld a, [wcd4a]
@@ -5855,40 +5858,40 @@
 
 Function1026f3: ; 1026f3
 	ld a, [hJoyPressed]
-	bit 0, a
+	bit A_BUTTON_F, a
 	jr nz, .asm_102723
-	bit 6, a
+	bit D_UP_F, a
 	jr nz, .asm_102712
-	bit 7, a
+	bit D_DOWN_F, a
 	jr nz, .asm_102702
 	ret
 
 .asm_102702
 	hlcoord 9, 17
-	ld [hl], $7f
+	ld [hl], " "
 	ld a, $1
-	ld [MenuSelection2], a
-	ld a, $1d
+	ld [wMenuCursorY], a
+	ld a, $1d ; Function102652
 	ld [wcd49], a
 	ret
 
 .asm_102712
 	hlcoord 9, 17
-	ld [hl], $7f
+	ld [hl], " "
 	ld a, [OTPartyCount]
-	ld [MenuSelection2], a
-	ld a, $1f
+	ld [wMenuCursorY], a
+	ld a, $1f ; Function1025e9
 	ld [wcd49], a
 	ret
 
 .asm_102723
 	hlcoord 9, 17
-	ld [hl], $ec
+	ld [hl], "▷"
 	ld hl, wcd4b
 	set 3, [hl]
 	ld hl, wcd4b
 	set 2, [hl]
-	ld a, $5
+	ld a, $5 ; Function1025c7
 	ld [wcd49], a
 	ret
 ; 102738
@@ -5896,7 +5899,7 @@
 Function102738: ; 102738
 	ld hl, wcd4b
 	set 6, [hl]
-	call Function1bee
+	call PlaceHollowCursor
 	call Function1027eb
 	ld hl, wcd4b
 	set 1, [hl]
@@ -5903,7 +5906,7 @@
 	ld a, [wcd49]
 	inc a
 	ld [wcd49], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 
 Function102754: ; 102754
@@ -5930,9 +5933,9 @@
 
 Function102775: ; 102775
 	hlcoord 1, 16
-	ld [hl], $ed
+	ld [hl], "▶"
 	hlcoord 11, 16
-	ld [hl], $7f
+	ld [hl], " "
 	ld hl, wcd4b
 	set 2, [hl]
 	ld a, [wcd4a]
@@ -5943,11 +5946,11 @@
 
 Function10278c: ; 10278c
 	ld a, [hJoyPressed]
-	bit 0, a
+	bit A_BUTTON_F, a
 	jr nz, asm_1027c6
-	bit 1, a
+	bit B_BUTTON_F, a
 	jr nz, asm_1027e2
-	bit 4, a
+	bit D_RIGHT_F, a
 	jr nz, .asm_10279b
 	ret
 
@@ -5954,12 +5957,11 @@
 .asm_10279b
 	ld a, $3
 	ld [wcd4a], a
-
 Function1027a0: ; 1027a0
 	hlcoord 1, 16
-	ld [hl], $7f
+	ld [hl], " "
 	hlcoord 11, 16
-	ld [hl], $ed
+	ld [hl], "▶"
 	ld hl, wcd4b
 	set 2, [hl]
 	ld a, [wcd4a]
@@ -5969,11 +5971,11 @@
 
 Function1027b7: ; 1027b7
 	ld a, [hJoyPressed]
-	bit 0, a
+	bit A_BUTTON_F, a
 	jr nz, asm_1027d1
-	bit 1, a
+	bit B_BUTTON_F, a
 	jr nz, asm_1027e2
-	bit 5, a
+	bit D_LEFT_F, a
 	jr nz, Function102770
 	ret
 
@@ -5980,7 +5982,7 @@
 asm_1027c6:
 	ld hl, wcd4b
 	set 3, [hl]
-	ld a, $25
+	ld a, $25 ; Function1028bf
 	ld [wcd49], a
 	ret
 
@@ -5987,15 +5989,15 @@
 asm_1027d1:
 	ld hl, wcd4b
 	set 3, [hl]
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wcd4c], a
-	ld a, $7
+	ld a, $7 ; Function1024f6
 	ld [wcd49], a
 	ret
 
 asm_1027e2:
 	call Function102db7
-	ld a, $1d
+	ld a, $1d ; Function102652
 	ld [wcd49], a
 	ret
 ; 1027eb
@@ -6002,23 +6004,23 @@
 
 Function1027eb: ; 1027eb
 	hlcoord 0, 14
-	ld b, $2
-	ld c, $12
+	ld b, 2
+	ld c, 18
 	ld d, h
 	ld e, l
-	callba Function16d61d
-	ld de, String_102804
+	callba _LinkTextbox
+	ld de, .Stats_Trade
 	hlcoord 2, 16
 	call PlaceString
 	ret
 ; 102804
 
-String_102804: ; 102804
+.Stats_Trade: ; 102804
 	db "STATS     TRADE@"
 ; 102814
 
 Function102814: ; 102814
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wcd52], a
 	ld a, [wcd4c]
 	dec a
@@ -6030,7 +6032,7 @@
 	ld a, [wcd49]
 	inc a
 	ld [wcd49], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld hl, wcd4b
 	set 1, [hl]
@@ -6041,7 +6043,7 @@
 	call Function1029c3
 	ret z
 	jr c, .asm_102852
-	ld a, $10
+	ld a, $10 ; Function102862
 	ld [wcd49], a
 	ld hl, wcd4b
 	set 1, [hl]
@@ -6048,7 +6050,7 @@
 	ret
 
 .asm_102852
-	ld a, $14
+	ld a, $14 ; Function1028ab
 	ld [wcd49], a
 	ld hl, wcd4b
 	set 3, [hl]
@@ -6070,11 +6072,11 @@
 	call Function1028fc
 	ret nc
 	ld a, [wcd52]
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, [wcd51]
 	cp $8
 	jr nz, .asm_102886
-	ld a, $15
+	ld a, $15 ; Function1023b5
 	ld [wcd49], a
 	ret
 
@@ -6086,7 +6088,7 @@
 	ld [wcd4e], a
 	ld a, $3c
 	ld [wcd4f], a
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ld a, [wcd49]
 	inc a
@@ -6095,7 +6097,7 @@
 ; 1028a5
 
 Function1028a5: ; 1028a5
-	ld a, $4
+	ld a, $4 ; Function1023a1
 	ld [wcd49], a
 	ret
 ; 1028ab
@@ -6102,11 +6104,11 @@
 
 Function1028ab: ; 1028ab
 	ld a, [wcd52]
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	call Function102f15
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $c
+	ld a, $c ; Function1025b0
 	ld [wcd49], a
 	ret
 ; 1028bf
@@ -6120,7 +6122,7 @@
 	xor a
 	ld [MonType], a
 	call Function102bac
-	ld a, $1d
+	ld a, $1d ; Function102652
 	ld [wcd49], a
 	ret
 ; 1028d3
@@ -6131,10 +6133,10 @@
 	ld [wcd49], a
 
 Function1028da: ; 1028da
-	ld a, $1
+	ld a, OTPARTYMON
 	ld [MonType], a
 	call Function102bac
-	ld a, $1f
+	ld a, $1f ; Function1025e9
 	ld [wcd49], a
 	ret
 ; 1028e8
@@ -6144,7 +6146,7 @@
 	res 6, [hl]
 	ld [wcd50], a
 	callba Function100641
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ret
 ; 1028fc
@@ -6161,7 +6163,7 @@
 	ld hl, Jumptable_102917
 	rst JumpTable
 	ret nc
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ret
 ; 102917
@@ -6179,7 +6181,7 @@
 	ld hl, Jumptable_10292f
 	rst JumpTable
 	ret nc
-	ld a, $0
+	ld a, 0
 	ld [wcd4a], a
 	ret
 ; 10292f
@@ -6217,7 +6219,7 @@
 
 Function10295d: ; 10295d
 	call Function10299e
-	ld a, $0
+	ld a, 0
 	ld [wcd27], a
 	ld a, [wcd4a]
 	inc a
@@ -6298,18 +6300,18 @@
 Function1029cf: ; 1029cf
 	call LoadStandardMenuDataHeader
 	hlcoord 10, 7
-	ld b, $3
-	ld c, $8
+	ld b, 3
+	ld c, 8
 	ld d, h
 	ld e, l
-	callba Function16d61d
+	callba _LinkTextbox
 	ld de, String_102a26
 	hlcoord 12, 8
 	call PlaceString
 	ld hl, wcd4b
 	set 1, [hl]
-	ld de, Unknown_102a33
-	call InitMenu3
+	ld de, MenuData3_102a33
+	call SetMenuAttributes
 	ld a, [wcd4a]
 	inc a
 	ld [wcd4a], a
@@ -6320,15 +6322,15 @@
 Function1029fe: ; 1029fe
 	callba Function1009f3
 	ret c
-	callba Function241ba
+	callba MobileMenuJoypad
 	ld a, c
-	ld hl, wcfa8
+	ld hl, wMenuJoypadFilter
 	and [hl]
 	ret z
 	push af
 	call ExitMenu
 	pop af
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr nz, .asm_102a21
 	ld a, $1
@@ -6348,8 +6350,12 @@
 	db   "@"
 ; 102a33
 
-Unknown_102a33:
-	db $08, $0b, $02, $01, $80, $00, $20, $01
+MenuData3_102a33:
+	db 8, 11
+	db 2,  1
+	db $80, $00
+	dn 2, 0
+	db A_BUTTON
 
 Function102a3b: ; 102a3b
 	ld a, [wcd30]
@@ -6356,22 +6362,22 @@
 	ld [wc74e], a
 	ld hl, PlayerName
 	ld de, wc6e7
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd4c]
 	dec a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, PartySpecies
 	add hl, bc
 	ld a, [hl]
-	ld [wc6d0], a
+	ld [wPlayerTrademonSpecies], a
 	ld a, [wcd4c]
 	dec a
 	ld hl, PartyMonOT
 	call SkipNames
-	ld de, wc6f2
-	ld bc, $000b
+	ld de, wPlayerTrademonOTName
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd4c]
 	dec a
@@ -6378,17 +6384,17 @@
 	ld hl, PartyMon1ID
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc6ff], a
+	ld [wPlayerTrademonID], a
 	ld a, [hl]
-	ld [wc700], a
+	ld [wPlayerTrademonID + 1], a
 	ld a, [wcd4c]
 	dec a
 	ld hl, PartyMon1DVs
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc6fd], a
+	ld [wPlayerTrademonDVs], a
 	ld a, [hl]
-	ld [wc6fe], a
+	ld [wPlayerTrademonDVs + 1], a
 	ld a, [wcd4c]
 	dec a
 	ld hl, PartyMon1Species
@@ -6397,25 +6403,26 @@
 	ld c, l
 	callba GetCaughtGender
 	ld a, c
-	ld [wc701], a
-	ld hl, wd26b
-	ld de, wc719
-	ld bc, $000b
+	ld [wPlayerTrademonCaughtData], a
+	ld hl, OTPlayerName
+	ld de, wOTTrademonSenderName
+	ld bc, NAME_LENGTH
 	call CopyBytes
+
 	ld a, [wcd4d]
 	dec a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, OTPartySpecies
 	add hl, bc
 	ld a, [hl]
-	ld [wc702], a
+	ld [wOTTrademonSpecies], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMonOT
 	call SkipNames
-	ld de, wc724
-	ld bc, $000b
+	ld de, wOTTrademonOTName
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd4d]
 	dec a
@@ -6422,17 +6429,17 @@
 	ld hl, OTPartyMon1ID
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wEnemyWrapCount], a
+	ld [wOTTrademonID], a
 	ld a, [hl]
-	ld [wPlayerCharging], a
+	ld [wOTTrademonID + 1], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMon1DVs
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wEnemyTrappingMove], a
+	ld [wOTTrademonDVs], a
 	ld a, [hl]
-	ld [wPlayerWrapCount], a
+	ld [wOTTrademonDVs + 1], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMon1Species
@@ -6441,12 +6448,12 @@
 	ld c, l
 	callba GetCaughtGender
 	ld a, c
-	ld [wEnemyCharging], a
+	ld [wOTTrademonCaughtData], a
 	ret
 ; 102b12
 
 Function102b12: ; 102b12
-	ld c, $64
+	ld c, 100
 	call DelayFrames
 	call Function102d9a
 	call LoadFontsBattleExtra
@@ -6468,7 +6475,7 @@
 	dec a
 	ld [CurPartyMon], a
 	ld a, $1
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	callba EvolvePokemon
 	call Function102d9a
 	call Function102dd3
@@ -6477,52 +6484,60 @@
 ; 102b4e
 
 Function102b4e: ; 102b4e
-	ld a, $1
+	ld a, OTPARTYMON
 	ld [MonType], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
 	ld de, Unknown_102b73
-	call InitMenu3
+	call SetMenuAttributes
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, [OTPartyCount]
-	ld [wcfa3], a
+	ld [w2DMenuNumRows], a
 	ret
 ; 102b68
 
 Function102b68: ; 102b68 ; unreferenced
 	xor a
-	ld hl, wcf71
-	ld bc, $0010
+	ld hl, wWindowStackPointer
+	ld bc, $10
 	call ByteFill
 	ret
 ; 102b73
 
 Unknown_102b73:
-	db $09, $06, $ff, $01, $a0, $00, $10, $c1
+	db 9, 6
+	db 255, 1
+	db $a0, $00
+	dn 1, 0
+	db D_UP | D_DOWN | A_BUTTON
 
 Function102b7b: ; 102b7b
 	xor a
 	ld [MonType], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	push af
 	ld de, Unknown_102b94
-	call InitMenu3
+	call SetMenuAttributes
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld a, [PartyCount]
-	ld [wcfa3], a
+	ld [w2DMenuNumRows], a
 	ret
 ; 102b94
 
 Unknown_102b94:
-	db $01, $06, $ff, $01, $a0, $00, $10, $c1
+	db 1, 6
+	db 255, 1
+	db $a0, $00
+	dn 1, 0
+	db D_UP | D_DOWN | A_BUTTON
 
 Function102b9c: ; 102b9c
 	ld a, [wcd4d]
 	dec a
 	hlcoord 6, 9
-	ld bc, $0014
+	ld bc, $14
 	call AddNTimes
 	ld [hl], $ec
 	ret
@@ -6529,15 +6544,15 @@
 ; 102bac
 
 Function102bac: ; 102bac
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld [CurPartyMon], a
 	call LowVolume
 	call ClearSprites
-	callba Function4dc8f
+	callba _BattleStatsScreenInit
 	ld a, [CurPartyMon]
 	inc a
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	call Function102d9a
 	call ClearPalettes
 	call DelayFrame
@@ -6556,7 +6571,7 @@
 	push hl
 	ld a, [wcd4d]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, OTPartyCount
 	add hl, bc
 	ld a, [hl]
@@ -6591,7 +6606,7 @@
 Function102c14: ; 102c14
 	ld hl, PartySpecies
 	ld de, OTPartySpecies
-	ld bc, $0001
+	ld bc, 1
 	call Function102c71
 	ret
 ; 102c21
@@ -6599,7 +6614,7 @@
 Function102c21: ; 102c21
 	ld hl, PartyMonNicknames
 	ld de, OTPartyMonNicknames
-	ld bc, $000b
+	ld bc, 11
 	call Function102c71
 	ret
 ; 102c2e
@@ -6607,7 +6622,7 @@
 Function102c2e: ; 102c2e
 	ld hl, PartyMonOT
 	ld de, OTPartyMonOT
-	ld bc, $000b
+	ld bc, 11
 	call Function102c71
 	ret
 ; 102c3b
@@ -6615,7 +6630,7 @@
 Function102c3b: ; 102c3b
 	ld hl, PartyMon1
 	ld de, OTPartyMon1
-	ld bc, $0030
+	ld bc, $30
 	call Function102c71
 	ret
 ; 102c48
@@ -6622,16 +6637,16 @@
 
 Function102c48: ; 102c48
 	callba Function10165a
-	ld a, $0
+	ld a, 0
 	call GetSRAMBank
 	ld hl, $a600
 	ld de, wc608
-	ld bc, $002f
+	ld bc, $2f
 	call Function102c71
 	call CloseSRAM
 	ld hl, wc608
 	ld de, wda00
-	ld bc, $01e0
+	ld bc, $1e0
 	ld a, $5
 	call FarCopyWRAM
 	ret
@@ -6661,16 +6676,16 @@
 	ld [wJumptableIndex], a
 	ld a, [PartyCount]
 	ld [wcf64], a
-	ld a, $0
+	ld a, 0
 	ld hl, $a600
 	ld de, wc608
-	ld bc, $011a
+	ld bc, $11a
 	call Function102d3e
 	call Function102cee
-	ld a, $0
+	ld a, 0
 	ld hl, wc608
 	ld de, $a600
-	ld bc, $011a
+	ld bc, $11a
 	call Function102d3e
 	ld a, [wcd4d]
 	ld [wJumptableIndex], a
@@ -6679,13 +6694,13 @@
 	ld a, $5
 	ld hl, wda00
 	ld de, wc608
-	ld bc, $011a
+	ld bc, $11a
 	call FarCopyWRAM
 	call Function102cee
 	ld a, $5
 	ld hl, wc608
 	ld de, wda00
-	ld bc, $011a
+	ld bc, $11a
 	call FarCopyWRAM
 	pop af
 	ld [wcf64], a
@@ -6699,7 +6714,7 @@
 	dec a
 	call Function102d34
 	ld de, wd002
-	ld bc, $002f
+	ld bc, $2f
 	call CopyBytes
 	ld a, [wJumptableIndex]
 	ld c, a
@@ -6706,7 +6721,7 @@
 	ld a, $6
 	sub c
 	ret z
-	ld bc, $002f
+	ld bc, $2f
 	ld hl, 0
 	call AddNTimes
 	push hl
@@ -6715,7 +6730,7 @@
 	call Function102d34
 	ld d, h
 	ld e, l
-	ld hl, $002f
+	ld hl, $2f
 	add hl, de
 	pop bc
 	call CopyBytes
@@ -6725,7 +6740,7 @@
 	ld d, h
 	ld e, l
 	ld hl, wd002
-	ld bc, $002f
+	ld bc, $2f
 	call CopyBytes
 	ret
 ; 102d34
@@ -6732,7 +6747,7 @@
 
 Function102d34: ; 102d34
 	ld hl, wc608
-	ld bc, $002f
+	ld bc, $2f
 	call AddNTimes
 	ret
 ; 102d3e
@@ -6774,11 +6789,11 @@
 	call AddNTimes
 	predef GetUnownLetter
 	callba UpdateUnownDex
-	ld a, [wdef4]
+	ld a, [wFirstUnownSeen]
 	and a
 	jr nz, .asm_102d98
 	ld a, [UnownLetter]
-	ld [wdef4], a
+	ld [wFirstUnownSeen], a
 
 .asm_102d98
 	and a
@@ -6812,7 +6827,7 @@
 	ld c, $12
 	ld d, h
 	ld e, l
-	callba Function16d61d
+	callba _LinkTextbox
 	ret
 ; 102dd3
 
@@ -6822,7 +6837,7 @@
 	ld hl, VTiles0
 	lb bc, BANK(GFX_1032a2), 4
 	call Get2bpp
-	callba Function16d421
+	callba __LoadTradeScreenBorder
 	call EnableLCD
 	ret
 ; 102dec
@@ -6830,7 +6845,7 @@
 Function102dec: ; 102dec
 	ld hl, Unknown_1032e2
 	ld de, UnknOBPals
-	ld bc, $0020
+	ld bc, $20
 	ld a, $5
 	call FarCopyWRAM
 	callba Function49742
@@ -6855,7 +6870,7 @@
 	ld c, $b
 	ld d, h
 	ld e, l
-	callba Function16d61d
+	callba _LinkTextbox
 
 .asm_102e28
 	ld de, String_102e32
@@ -6881,13 +6896,13 @@
 
 Function102e4f: ; 102e4f
 	callba Function16d42e
-	callba Function49797
+	callba _InitMG_Mobile_LinkTradePalMap
 	ld de, PlayerName
 	hlcoord 4, 0
 	call PlaceString
 	ld a, $14
 	ld [bc], a
-	ld de, wd26b
+	ld de, OTPlayerName
 	hlcoord 4, 8
 	call PlaceString
 	ld a, $14
@@ -6902,7 +6917,7 @@
 ; 102e86
 
 Function102e86: ; 102e86
-	ld c, $0
+	ld c, 0
 .asm_102e88
 	ld a, [de]
 	cp $ff
@@ -6920,7 +6935,7 @@
 	pop de
 	inc de
 	pop hl
-	ld bc, $0014
+	ld bc, $14
 	add hl, bc
 	pop bc
 	inc c
@@ -6932,7 +6947,7 @@
 	ld a, [wcd4c]
 	dec a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, PartySpecies
 	add hl, bc
 	ld a, [hl]
@@ -6940,12 +6955,12 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, StringBuffer2
-	ld bc, $000b
+	ld bc, 11
 	call CopyBytes
 	ld a, [wcd4d]
 	dec a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, OTPartySpecies
 	add hl, bc
 	ld a, [hl]
@@ -7025,7 +7040,7 @@
 Function102f85: ; 102f85
 	ld a, [wd003]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, OTPartySpecies
 	add hl, bc
 	ld a, [hl]
@@ -7200,7 +7215,7 @@
 	ld hl, wcd4b
 	bit 7, [hl]
 	pop hl
-	ld a, $0
+	ld a, 0
 	jr z, .asm_1030eb
 	ld a, $5
 .asm_1030eb
@@ -7209,9 +7224,8 @@
 	inc hl
 	push hl
 
-rept 2
 	add a
-endr
+	add a
 
 	add Unknown_10327a % $100
 	ld l, a
@@ -7245,77 +7259,77 @@
 ; 103112
 
 Unknown_103112: ; 103112
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $01, $00, $00, $00, $00, $00, $00, $00
-	db $02, $01, $00, $00, $00, $00, $00, $00
-	db $03, $02, $01, $00, $00, $00, $00, $00
-	db $04, $03, $02, $01, $00, $00, $00, $00
-	db $04, $04, $03, $02, $01, $00, $00, $00
-	db $04, $04, $04, $03, $02, $01, $00, $00
-	db $04, $04, $04, $04, $03, $02, $01, $00
-	db $04, $04, $04, $04, $04, $03, $02, $01
-	db $04, $04, $04, $04, $04, $04, $03, $02
-	db $04, $04, $04, $04, $04, $04, $04, $03
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $04, $04, $04, $04, $04, $04, $04, $04
-	db $03, $04, $04, $04, $04, $04, $04, $04
-	db $02, $03, $04, $04, $04, $04, $04, $04
-	db $01, $02, $03, $04, $04, $04, $04, $04
-	db $00, $01, $02, $03, $04, $04, $04, $04
-	db $00, $00, $01, $02, $03, $04, $04, $04
-	db $00, $00, $00, $01, $02, $03, $04, $04
-	db $00, $00, $00, $00, $01, $02, $03, $04
-	db $00, $00, $00, $00, $00, $01, $02, $03
-	db $00, $00, $00, $00, $00, $00, $01, $02
-	db $00, $00, $00, $00, $00, $00, $00, $01
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00, $00, $00
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $1, $0, $0, $0, $0, $0, $0, $
+	db $2, $1, $0, $0, $0, $0, $0, $
+	db $3, $2, $1, $0, $0, $0, $0, $
+	db $4, $3, $2, $1, $0, $0, $0, $
+	db $4, $4, $3, $2, $1, $0, $0, $
+	db $4, $4, $4, $3, $2, $1, $0, $
+	db $4, $4, $4, $4, $3, $2, $1, $
+	db $4, $4, $4, $4, $4, $3, $2, $1
+	db $4, $4, $4, $4, $4, $4, $3, $2
+	db $4, $4, $4, $4, $4, $4, $4, $3
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $4, $4, $4, $4, $4, $4, $4, $4
+	db $3, $4, $4, $4, $4, $4, $4, $4
+	db $2, $3, $4, $4, $4, $4, $4, $4
+	db $1, $2, $3, $4, $4, $4, $4, $4
+	db $0, $1, $2, $3, $4, $4, $4, $4
+	db $0, $0, $1, $2, $3, $4, $4, $4
+	db $0, $0, $0, $1, $2, $3, $4, $4
+	db $0, $0, $0, $0, $1, $2, $3, $4
+	db $0, $0, $0, $0, $0, $1, $2, $3
+	db $0, $0, $0, $0, $0, $0, $1, $2
+	db $0, $0, $0, $0, $0, $0, $0, $1
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
+	db $0, $0, $0, $0, $0, $0, $0, $
 ; 10327a
 
 Unknown_10327a: ; 10327a
-	db $00, $00, $00, $00
-	db $00, $00, $01, $00
-	db $00, $00, $02, $00
-	db $00, $00, $03, $00
-	db $00, $00, $01, $01
-	db $00, $00, $00, $00
-	db $00, $00, $01, $02
-	db $00, $00, $02, $02
-	db $00, $00, $03, $02
-	db $00, $00, $01, $03
+	db $0, $0, $0, $
+	db $0, $0, $1, $
+	db $0, $0, $2, $
+	db $0, $0, $3, $
+	db $0, $0, $1, $1
+	db $0, $0, $0, $
+	db $0, $0, $1, $2
+	db $0, $0, $2, $2
+	db $0, $0, $3, $2
+	db $0, $0, $1, $3
 
 GFX_1032a2:
 INCBIN "gfx/unknown/1032a2.2bpp"
 
 Unknown_1032e2:
-	db $00, $00, $ff, $1f
+	db $0, $0, $ff, $1f
 	db $f4, $1b, $8d, $42
-	db $00, $00, $67, $45
-	db $00, $00, $00, $00
-	db $00, $00, $1f, $13
-	db $99, $01, $ff, $10
-	db $00, $00, $19, $00
-	db $00, $00, $00, $00
+	db $0, $0, $67, $45
+	db $0, $0, $0, $
+	db $0, $0, $1f, $13
+	db $99, $1, $ff, $10
+	db $0, $0, $19, $
+	db $0, $0, $0, $
 ; 103302
 
 Function103302: ; 103302
@@ -7328,7 +7342,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld hl, Buffer1
-	ld bc, $000a
+	ld bc, 10
 	xor a
 	call ByteFill
 	ld a, $4
@@ -7402,7 +7416,7 @@
 	ld a, [wd1f0]
 	ld [wd1f2], a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, wd1ec
 	ld a, [hli]
 	ld h, [hl]
@@ -7478,7 +7492,7 @@
 	ret z
 	ld de, SFX_PUSH_BUTTON
 	call PlaySFX
-	ld bc, $0008
+	ld bc, 8
 	call Function10350f
 	ld a, [Buffer1]
 	xor e
@@ -7499,7 +7513,7 @@
 	ld a, [wd1f3]
 	cp $2
 	jr nz, .asm_103452
-	ld bc, $0001
+	ld bc, 1
 	call Function1034f7
 	ld c, $12
 	ld b, $1
@@ -7516,19 +7530,19 @@
 .asm_10345f
 	ld bc, 0
 	call Function10350f
-	ld bc, $0001
+	ld bc, 1
 	call Function103487
-	ld bc, $0008
+	ld bc, 8
 	call Function10350f
 	ld a, [Buffer1]
 	and e
-	ld bc, $0002
+	ld bc, 2
 	jr z, .asm_10347d
-	ld bc, $0004
+	ld bc, 4
 
 .asm_10347d
 	call Function10350f
-	ld bc, $000b
+	ld bc, 11
 	call Function103487
 	ret
 ; 103487
@@ -7546,7 +7560,7 @@
 	ld c, $14
 	ld b, $3
 	call Function1034e0
-	ld bc, $0006
+	ld bc, 6
 	call Function10350f
 	hlcoord 1, 16
 	call PlaceString
@@ -7556,10 +7570,10 @@
 Function1034a7: ; 1034a7
 	ld a, [wd1f1]
 	ld [wd1f2], a
-	ld bc, $000a
+	ld bc, 10
 	call Function1034f7
 	ld [hl], $7f
-	ld bc, $000a
+	ld bc, 10
 	call Function1034f1
 	ld [hl], $ed
 	ret
@@ -7623,7 +7637,7 @@
 	ld a, [wd1f3]
 	push bc
 	ld hl, Unknown_103522
-	ld bc, $0009
+	ld bc, 9
 	call AddNTimes
 	pop bc
 	add hl, bc
@@ -7674,9 +7688,8 @@
 	callba Function10138b
 	ld b, 0
 	ld hl, Unknown_1035d7
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -7689,7 +7702,6 @@
 	dw Unknown_103608
 	dw Unknown_103608
 	dw Unknown_1035fe
-
 	dw AskMobileOrCable
 	dw AskMobileOrCable
 	dw AskMobileOrCable
@@ -7696,7 +7708,7 @@
 
 Unknown_1035e7: ; 1035e7
 	dwcoord 0, 6
-	db $12, $07, $07
+	db $12, $7, $7
 	dw .this
 .this
 	db 4, 2, 1, 0, 3
@@ -7703,7 +7715,7 @@
 
 Unknown_1035f3: ; 1035f3
 	dwcoord 0, 7
-	db $12, $06, $09
+	db $12, $6, $9
 	dw .this
 .this
 	db 3, 2, 1, 3
@@ -7710,7 +7722,7 @@
 
 Unknown_1035fe: ; 1035fe
 	dwcoord 0, 9
-	db $12, $04, $0b
+	db $12, $4, $b
 	dw .this
 .this
 	db 2, 0, 3
@@ -7717,7 +7729,7 @@
 
 Unknown_103608: ; 103608
 	dwcoord 0, 9
-	db $12, $04, $0b
+	db $12, $4, $b
 	dw .this
 .this
 	db 2, 2, 3
@@ -7732,10 +7744,10 @@
 	ld [wMenuCursorBuffer], a
 
 .skip_load
-	call InterpretMenu2
-	call WriteBackup
+	call VerticalMenu
+	call CloseWindow
 	jr c, .pressed_b
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [ScriptVar], a
 	ld c, a
 	ld a, [wdc40]
@@ -7765,7 +7777,7 @@
 ; 103654
 
 Function103654: ; 103654
-	callba Function10632f
+	callba Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	jr nz, .asm_103666
 	ld hl, wcd2a
@@ -7781,7 +7793,7 @@
 ; 10366e
 
 Mobile_SelectThreeMons: ; 10366e
-	callba Function10632f
+	callba Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	jr z, .asm_10369b
 	ld hl, UnknownText_0x10375d
@@ -7788,7 +7800,7 @@
 	call PrintText
 	call YesNoBox
 	jr c, .asm_103696
-	callba Function8b1e1
+	callba CheckForMobileBattleRules
 	jr nc, .asm_103690
 	call JoyWaitAorB
 	jr .asm_103696
@@ -7820,10 +7832,10 @@
 	jr c, .asm_1036f4
 	ld hl, MenuDataHeader_103747
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	call ExitMenu
 	jr c, .asm_1036f4
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr z, .asm_1036d9
 	cp $2
@@ -7833,7 +7845,7 @@
 	jr .asm_1036b5
 
 .asm_1036d9
-	callba Function8b1e1
+	callba CheckForMobileBattleRules
 	jr nc, .asm_1036e6
 	call JoyWaitAorB
 	jr .asm_1036f4
@@ -7959,7 +7971,7 @@
 ; 10378c
 
 Function10378c: ; 10378c
-	ld c, $0
+	ld c, 0
 	ld hl, SwarmFlags
 	bit 4, [hl]
 	jr nz, .already_set
@@ -8055,7 +8067,7 @@
 ; 0x103823
 
 Function103823: ; 103823
-	callba Function10632f
+	callba Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	jr nz, .asm_103838
 	callba Function1008a6
@@ -8077,9 +8089,8 @@
 	ld [wdc60], a
 	xor a
 	ld hl, wdc5c
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
 	ld hl, UnknownText_0x103876
 	call PrintText
@@ -8089,7 +8100,7 @@
 	jr c, .asm_103870
 	ld hl, wd002
 	ld de, wdc5c
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	xor a
 	ld [ScriptVar], a
@@ -8107,7 +8118,7 @@
 ; 0x10387b
 
 Function10387b: ; 10387b
-	callba Function10632f
+	callba Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	ret nz
 	callba Function1008a6
--- a/misc/mobile_41.asm
+++ b/misc/mobile_41.asm
@@ -766,7 +766,7 @@
 	ret
 ; 10632f
 
-Function10632f: ; 10632f
+Mobile_AlwaysReturnNotCarry: ; 10632f
 	or a
 	ret
 
@@ -851,7 +851,7 @@
 	ret
 
 .asm_1063a2
-	call Function10632f
+	call Mobile_AlwaysReturnNotCarry
 	ld a, c
 	and a
 	jr nz, .asm_1063b4
@@ -937,7 +937,7 @@
 	ret
 
 .asm_106426
-	call Function10632f
+	call Mobile_AlwaysReturnNotCarry
 	ld a, c
 	and a
 	jr z, .asm_106435
@@ -960,7 +960,7 @@
 	call Function3e32
 	xor a
 	ld [hMobile], a
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
@@ -975,12 +975,8 @@
 	ret
 ; 106462
 
-Function106462: ; 106462
+MobileFunc_106462: mobile
 	ret
-; 106463
-
-Function106463: ; 106463
-	ret
 ; 106464
 
 Function106464:: ; 106464
@@ -1008,7 +1004,7 @@
 Function10649b: ; 10649b
 	ld a, [TextBoxFrame]
 	and $7
-	ld bc, $30
+	ld bc, 3 tiles
 	ld hl, Frames
 	call AddNTimes
 	ld d, h
@@ -1058,7 +1054,7 @@
 	jr asm_1064ed
 
 asm_1064ed
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld b, $0
 	ld a, [rSVBK]
 	push af
@@ -1087,17 +1083,17 @@
 INCBIN "gfx/unknown/106514.2bpp"
 
 
-Function106594:: ; 106594
-	ld de, GFX_1065ad
+LoadOverworldFont:: ; 106594
+	ld de, .bgfont
 	ld hl, VTiles1
-	lb bc, BANK(GFX_1065ad), $80
+	lb bc, BANK(.bgfont), $80
 	call Get2bpp
-	ld de, GFX_1065ad + $800
+	ld de, .bgfont + $80 tiles
 	ld hl, VTiles2 tile $7f
-	lb bc, BANK(GFX_1065ad), 1
+	lb bc, BANK(.bgfont), 1
 	call Get2bpp
 	ret
 ; 1065ad
 
-GFX_1065ad:
+.bgfont:
 INCBIN "gfx/unknown/1065ad.2bpp"
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -1,30 +1,37 @@
-
-SECTION "bank42", ROMX, BANK[$42]
-
-Function108000: ; 108000
+MobileTradeAnimation_SendGivemonToGTS: ; 108000
 	ld a, $80
 	ld [wcf65], a
-	ld de, Unknown_10800b
-	jp Function108089
+	ld de, .TradeAnimScript
+	jp RunMobileTradeAnim_NoFrontpics
 ; 10800b
 
-Unknown_10800b:
-	db $0d, $12, $10, $03, $06, $0f, $0c
+.TradeAnimScript:
+	mobiletradeanim_showgtsgivemon
+	mobiletradeanim_12
+	mobiletradeanim_10
+	mobiletradeanim_sendmon 
+	mobiletradeanim_06
+	mobiletradeanim_0f
+	mobiletradeanim_end
 
-Function108012:
+MobileTradeAnimation_RetrieveGivemonFromGTS:
 	ld a, $80
 	jr asm_108018
 
-Function108016: ; 108016
+MobileTradeAnimation_ReceiveGetmonFromGTS: ; 108016
 	ld a, $0
 asm_108018:
 	ld [wcf65], a
-	ld de, Unknown_108021
-	jp Function108089
+	ld de, .TradeAnimScript
+	jp RunMobileTradeAnim_NoFrontpics
 ; 108021
 
-Unknown_108021:
-	db $11, $07, $08, $0e, $0c
+.TradeAnimScript:
+	mobiletradeanim_11
+	mobiletradeanim_07
+	mobiletradeanim_receivemon 
+	mobiletradeanim_showgtsgetmon
+	mobiletradeanim_end
 
 Function108026: ; 108026
 	ld a, $0
@@ -35,35 +42,48 @@
 
 asm_10802c:
 	ld [wcf65], a
-	ld de, Unknown_108035
-	jp Function10805b
+	ld de, .TradeAnimScript
+	jp RunMobileTradeAnim_Frontpics
 ; 108035
 
-Unknown_108035:
-	db $01, $12, $02, $03, $05, $08, $0b, $0c
+.TradeAnimScript: ; trade
+	mobiletradeanim_showgivemon
+	mobiletradeanim_12
+	mobiletradeanim_02
+	mobiletradeanim_sendmon 
+	mobiletradeanim_05
+	mobiletradeanim_receivemon 
+	mobiletradeanim_showgetmon
+	mobiletradeanim_end
 
 Function10803d: ; 10803d
 	ld a, $0
 	ld [wcf65], a
-	ld de, Unknown_108048
-	jp Function108089
+	ld de, .TradeAnimScript
+	jp RunMobileTradeAnim_NoFrontpics
 ; 108048
 
-Unknown_108048:
-	db $11, $07, $08, $13, $0c
+.TradeAnimScript:
+	mobiletradeanim_11
+	mobiletradeanim_07
+	mobiletradeanim_receivemon 
+	mobiletradeanim_showoddegg
+	mobiletradeanim_end
 
 Function10804d: ; 10804d
 	ld a, $0
 	ld [wcf65], a
-	ld de, Unknown_108058
-	jp Function108089
+	ld de, .TradeAnimScript
+	jp RunMobileTradeAnim_NoFrontpics
 ; 108058
 
-Unknown_108058:
-	db $11, $0e, $0c
+.TradeAnimScript:
+	mobiletradeanim_11
+	mobiletradeanim_showgtsgetmon
+	mobiletradeanim_end
 
-Function10805b: ; 10805b
-	ld hl, wc734
+RunMobileTradeAnim_Frontpics: ; 10805b
+	ld hl, wTradeAnimPointer
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -78,11 +98,11 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call Function1080b7
-.asm_108078
-	call Function10824b
-	jr nc, .asm_108078
+.loop
+	call MobileTradeAnim_JumptableLoop
+	jr nc, .loop
 	pop af
 	ld [Options], a
 	pop af
@@ -92,8 +112,8 @@
 	ret
 ; 108089
 
-Function108089: ; 108089
-	ld hl, BattleEnded
+RunMobileTradeAnim_NoFrontpics: ; 108089
+	ld hl, wTradeAnimPointer
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -108,11 +128,11 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call Function108157
-.asm_1080a6
-	call Function10824b
-	jr nc, .asm_1080a6
+.loop
+	call MobileTradeAnim_JumptableLoop
+	jr nc, .loop
 	pop af
 	ld [Options], a
 	pop af
@@ -129,21 +149,25 @@
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ad
-	call Function1081ca
+	call MobileTradeAnim_ClearVTiles
+	call MobileTradeAnim_ClearBGMap
 	call LoadStandardFont
 	call LoadFontsBattleExtra
+
 	ld a, $1
 	ld [rVBK], a
 	ld hl, LZ_108da7
 	ld de, VTiles2
 	call Decompress
+
 	ld a, $0
 	ld [rVBK], a
 	ld hl, LZ_108d27
 	ld de, VTiles0 tile $20
 	call Decompress
+
 	call EnableLCD
+
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -151,34 +175,43 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
+	callba ClearSpriteAnims
+
 	call DelayFrame
+
 	ld de, TradeBallGFX
 	ld hl, VTiles0
 	lb bc, BANK(TradeBallGFX), $06
 	call Request2bpp
+
 	ld de, TradePoofGFX
 	ld hl, VTiles0 tile $06
 	lb bc, BANK(TradePoofGFX), $0c
 	call Request2bpp
+
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $0
-	ld a, [$c6d0]
-	ld hl, $c6fd
+
+	ld a, [wPlayerTrademonSpecies]
+	ld hl, wPlayerTrademonDVs
 	ld de, VTiles0 tile $30
-	call Function1081e9
-	ld a, [wc702]
-	ld hl, wEnemyTrappingMove
+	call MobileTradeAnim_GetFrontpic
+
+	ld a, [wOTTrademonSpecies]
+	ld hl, wOTTrademonDVs
 	ld de, VTiles2 tile $31
-	call Function1081e9
-	ld a, [$c6d0]
-	ld de, $c6d1
-	call Function108239
-	ld a, [wc702]
-	ld de, wc703
-	call Function108239
+	call MobileTradeAnim_GetFrontpic
+
+	ld a, [wPlayerTrademonSpecies]
+	ld de, wPlayerTrademonSpeciesName
+	call MobileTradeAnim_InitSpeciesName
+
+	ld a, [wOTTrademonSpecies]
+	ld de, wOTTrademonSpeciesName
+	call MobileTradeAnim_InitSpeciesName
+
 	xor a
 	call Function108b98
 	call Function108af4
@@ -192,8 +225,8 @@
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ad
-	call Function1081ca
+	call MobileTradeAnim_ClearVTiles
+	call MobileTradeAnim_ClearBGMap
 	call LoadStandardFont
 	call LoadFontsBattleExtra
 	call EnableLCD
@@ -204,18 +237,18 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	callba Function8cf53
+	callba ClearSpriteAnims
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $0
 	call DelayFrame
-	ld a, [$c6d0]
-	ld de, $c6d1
-	call Function108239
-	ld a, [wc702]
-	ld de, wc703
-	call Function108239
+	ld a, [wPlayerTrademonSpecies]
+	ld de, wPlayerTrademonSpeciesName
+	call MobileTradeAnim_InitSpeciesName
+	ld a, [wOTTrademonSpecies]
+	ld de, wOTTrademonSpeciesName
+	call MobileTradeAnim_InitSpeciesName
 	xor a
 	call Function108b98
 	call Function108af4
@@ -222,39 +255,39 @@
 	ret
 ; 1081ad
 
-Function1081ad: ; 1081ad
+MobileTradeAnim_ClearVTiles: ; 1081ad
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles0
-	ld bc, $1800
+	ld bc, 3 * $80 tiles
 	xor a
 	call ByteFill
 	ld a, $0
 	ld [rVBK], a
 	ld hl, VTiles0
-	ld bc, $1800
+	ld bc, 3 * $80 tiles
 	xor a
 	call ByteFill
 	ret
 ; 1081ca
 
-Function1081ca: ; 1081ca
+MobileTradeAnim_ClearBGMap: ; 1081ca
 	ld a, $1
 	ld [rVBK], a
 	hlbgcoord 0, 0
-	ld bc, $0800
+	ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
 	ld a, $0
 	call ByteFill
 	ld a, $0
 	ld [rVBK], a
 	hlbgcoord 0, 0
-	ld bc, $0800
+	ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
 	ld a, $7f
 	call ByteFill
 	ret
 ; 1081e9
 
-Function1081e9: ; 1081e9
+MobileTradeAnim_GetFrontpic: ; 1081e9
 	push de
 	push af
 	predef GetUnownLetter
@@ -298,7 +331,7 @@
 	ret
 ; 108239
 
-Function108239: ; 108239
+MobileTradeAnim_InitSpeciesName: ; 108239
 	push de
 	ld [wd265], a
 	call GetPokemonName
@@ -309,16 +342,16 @@
 	ret
 ; 10824b
 
-Function10824b: ; 10824b
+MobileTradeAnim_JumptableLoop: ; 10824b
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_10825a
-	call Function10827b
+	jr nz, .StopAnim
+	call .ExecuteMobileTradeAnimCommand
 	call DelayFrame
 	and a
 	ret
 
-.asm_10825a
+.StopAnim
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -328,17 +361,17 @@
 	ld [hWY], a
 	call LoadStandardFont
 	call LoadFontsBattleExtra
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
 	scf
 	ret
 ; 10827b
 
-Function10827b: ; 10827b
+.ExecuteMobileTradeAnimCommand: ; 10827b
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_10828a
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -348,37 +381,38 @@
 	jp [hl]
 ; 10828a
 
-Jumptable_10828a: ; 10828a
-	dw Function1082b7
-	dw Function10830e
-	dw Function108638
-	dw Function108763
-	dw Function1087cf
-	dw Function108811
-	dw Function108838
-	dw Function10884c
-	dw Function108863
-	dw Function108894
-	dw Function10890a
-	dw Function10839b
-	dw Function1082c6
-	dw Function10842c
-	dw Function1084d7
-	dw Function108919
-	dw Function108689
-	dw Function1086f4
-	dw Function10893d
-	dw Function108589
+.Jumptable: ; 10828a
+	
+	dw GetMobileTradeAnimByte ; 00
+	dw MobileTradeAnim_ShowPlayerMonToBeSent ; 01
+	dw MobileTradeAnim_02 ; 02
+	dw MobileTradeAnim_GiveTrademon1 ; 03
+	dw MobileTradeAnim_GiveTrademon2 ; 04
+	dw MobileTradeAnim_05 ; 05
+	dw MobileTradeAnim_06 ; 06
+	dw MobileTradeAnim_07 ; 07
+	dw MobileTradeAnim_GetTrademon1 ; 08
+	dw MobileTradeAnim_GetTrademon2 ; 09
+	dw MobileTradeAnim_GetTrademon3 ; 0a
+	dw MobileTradeAnim_ShowOTMonFromTrade ; 0b
+	dw EndMobileTradeAnim ; 0c
+	dw MobileTradeAnim_ShowPlayerMonForGTS ; 0d
+	dw MobileTradeAnim_ShowOTMonFromGTS ; 0e
+	dw MobileTradeAnim_0f ; 0f
+	dw MobileTradeAnim_10 ; 10
+	dw MobileTradeAnim_11 ; 11
+	dw MobileTradeAnim_FadeToBlack ; 12
+	dw MobileTradeAnim_GetOddEgg ; 13 get odd egg
 ; 1082b2
 
-Function1082b2: ; 1082b2
+MobileTradeAnim_Next: ; 1082b2
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 ; 1082b7
 
-Function1082b7: ; 1082b7
-	ld hl, wc734
+GetMobileTradeAnimByte: ; 1082b7
+	ld hl, wTradeAnimPointer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -391,56 +425,56 @@
 	ret
 ; 1082c6
 
-Function1082c6: ; 1082c6
+EndMobileTradeAnim: ; 1082c6
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 ; 1082cc
 
-Function1082cc: ; 1082cc
-.asm_1082cc
+WaitMobileTradeSpriteAnims: ; 1082cc
+.loop
 	push bc
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	pop bc
 	call DelayFrame
 	dec c
-	jr nz, .asm_1082cc
+	jr nz, .loop
 	ret
 ; 1082db
 
 Function1082db: ; 1082db
-.asm_1082db
-	callba Function8cf69
-	callba Functiond00b4
+.loop
+	callba PlaySpriteAnimations
+	callba SetUpPokeAnim
 	callba Function10402d
-	jr nc, .asm_1082db
+	jr nc, .loop
 	ret
 ; 1082f0
 
 Function1082f0: ; 1082f0
-.asm_1082f0
+.loop
 	call Function108b78
 	call DelayFrame
 	dec c
-	jr nz, .asm_1082f0
+	jr nz, .loop
 	ret
 ; 1082fa
 
 Function1082fa: ; 1082fa
-.asm_1082fa
+.loop
 	call Function108b78
 	push hl
 	push bc
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	pop bc
 	pop hl
 	call DelayFrame
 	dec c
-	jr nz, .asm_1082fa
+	jr nz, .loop
 	ret
 ; 10830e
 
-Function10830e: ; 10830e
+MobileTradeAnim_ShowPlayerMonToBeSent: ; 10830e
 	ld de, MUSIC_EVOLUTION
 	call PlayMusic2
 	ld a, $80
@@ -451,23 +485,23 @@
 	ld [hWX], a
 	ld a, $50
 	ld [hWY], a
-	call Function1089a8
-	ld a, [$c6d0]
+	call MobileTradeAnim_DisplayMonToBeSent
+	ld a, [wPlayerTrademonSpecies]
 	ld [CurPartySpecies], a
 	call Function10895e
-	ld a, [$c6fd]
+	ld a, [wPlayerTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [$c6fe]
+	ld a, [wPlayerTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	call WaitBGMap
-.asm_108348
+.loop
 	ld a, [hWX]
 	cp $7
-	jr z, .asm_10835d
+	jr z, .okay
 	sub $4
 	ld [hWX], a
 	ld a, [hSCX]
@@ -474,22 +508,22 @@
 	sub $4
 	ld [hSCX], a
 	call DelayFrame
-	jr .asm_108348
+	jr .loop
 
-.asm_10835d
+.okay
 	ld a, $7
 	ld [hWX], a
 	xor a
 	ld [hSCX], a
-	ld a, [$c6d0]
+	ld a, [wPlayerTrademonSpecies]
 	call GetCryIndex
-	jr c, .asm_108371
+	jr c, .skip_cry
 	ld e, c
 	ld d, b
 	call PlayCryHeader
 
-.asm_108371
-	ld c, $50
+.skip_cry
+	ld c, 80
 	call DelayFrames
 	call Function108bec
 	depixel 10, 11, 4, 0
@@ -498,28 +532,28 @@
 	ld de, SFX_BALL_POOF
 	call PlaySFX
 	hlcoord 0, 0
-	ld bc, $00f0
+	ld bc, 12 * SCREEN_WIDTH
 	ld a, " "
 	call ByteFill
-	ld c, $50
-	call Function1082cc
-	call Function1082b7
+	ld c, 80
+	call WaitMobileTradeSpriteAnims
+	call GetMobileTradeAnimByte
 	ret
 ; 10839b
 
-Function10839b: ; 10839b
+MobileTradeAnim_ShowOTMonFromTrade: ; 10839b
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ca
-	ld a, [wc702]
+	call MobileTradeAnim_ClearBGMap
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld hl, wEnemyTrappingMove
+	ld hl, wOTTrademonDVs
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -534,11 +568,11 @@
 	ld a, $1
 	call Function108b98
 	call Function108af4
-	ld c, $30
-	call Function1082cc
+	ld c, 48
+	call WaitMobileTradeSpriteAnims
 	ld de, SFX_BALL_POOF
 	call PlaySFX
-	call Function1089d2
+	call MobileTradeAnim_DisplayReceivedMon
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -546,26 +580,26 @@
 	ld [hWX], a
 	ld a, $50
 	ld [hWY], a
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld a, [wEnemyTrappingMove]
+	ld a, [wOTTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [wPlayerWrapCount]
+	ld a, [wOTTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	call Function108963
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	call Function108229
 	call Function1082db
 	call Function108c16
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 10842c
 
-Function10842c: ; 10842c
+MobileTradeAnim_ShowPlayerMonForGTS: ; 10842c
 	ld de, MUSIC_EVOLUTION
 	call PlayMusic2
 	ld a, $80
@@ -576,10 +610,10 @@
 	ld [hWX], a
 	ld a, $50
 	ld [hWY], a
-	call Function1089a8
-	ld a, [$c6d0]
+	call MobileTradeAnim_DisplayMonToBeSent
+	ld a, [wPlayerTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld hl, $c6fd
+	ld hl, wPlayerTrademonDVs
 	call Function10898a
 	call DelayFrame
 	ld de, TradeBallGFX
@@ -590,19 +624,19 @@
 	ld hl, VTiles0 tile $06
 	lb bc, BANK(TradePoofGFX), $0c
 	call Request2bpp
-	ld a, [$c6fd]
+	ld a, [wPlayerTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [$c6fe]
+	ld a, [wPlayerTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	call WaitBGMap
-.asm_108484
+.loop
 	ld a, [hWX]
 	cp $7
-	jr z, .asm_108499
+	jr z, .done
 	sub $4
 	ld [hWX], a
 	ld a, [hSCX]
@@ -609,22 +643,22 @@
 	sub $4
 	ld [hSCX], a
 	call DelayFrame
-	jr .asm_108484
+	jr .loop
 
-.asm_108499
+.done
 	ld a, $7
 	ld [hWX], a
 	xor a
 	ld [hSCX], a
-	ld a, [$c6d0]
+	ld a, [wPlayerTrademonSpecies]
 	call GetCryIndex
-	jr c, .asm_1084ad
+	jr c, .skip_cry
 	ld e, c
 	ld d, b
 	call PlayCryHeader
 
-.asm_1084ad
-	ld c, $50
+.skip_cry
+	ld c, 80
 	call DelayFrames
 	call Function108c2b
 	depixel 10, 11, 4, 0
@@ -633,28 +667,28 @@
 	ld de, SFX_BALL_POOF
 	call PlaySFX
 	hlcoord 0, 0
-	ld bc, $00f0
+	ld bc, 12 * SCREEN_WIDTH
 	ld a, " "
 	call ByteFill
-	ld c, $50
-	call Function1082cc
-	call Function1082b7
+	ld c, 80
+	call WaitMobileTradeSpriteAnims
+	call GetMobileTradeAnimByte
 	ret
 ; 1084d7
 
-Function1084d7: ; 1084d7
+MobileTradeAnim_ShowOTMonFromGTS: ; 1084d7
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ca
-	ld a, [wc702]
+	call MobileTradeAnim_ClearBGMap
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld hl, wEnemyTrappingMove
+	ld hl, wOTTrademonDVs
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, VTiles0
@@ -678,11 +712,11 @@
 	ld a, $1
 	call Function108b98
 	call Function108af4
-	ld c, $30
-	call Function1082cc
+	ld c, 48
+	call WaitMobileTradeSpriteAnims
 	ld de, SFX_BALL_POOF
 	call PlaySFX
-	call Function1089d2
+	call MobileTradeAnim_DisplayReceivedMon
 	xor a
 	ld [hSCX], a
 	ld [hSCY], a
@@ -690,40 +724,40 @@
 	ld [hWX], a
 	ld a, $50
 	ld [hWY], a
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld a, [wEnemyTrappingMove]
+	ld a, [wOTTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [wPlayerWrapCount]
+	ld a, [wOTTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	ld a, [wc702]
-	ld hl, wEnemyTrappingMove
+	ld a, [wOTTrademonSpecies]
+	ld hl, wOTTrademonDVs
 	call Function10898a
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	call Function108229
 	call Function1082db
 	call Function108c40
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 108589
 
-Function108589: ; 108589
+MobileTradeAnim_GetOddEgg: ; 108589
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ca
-	ld a, [wc702]
+	call MobileTradeAnim_ClearBGMap
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld hl, wEnemyTrappingMove
+	ld hl, wOTTrademonDVs
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
-	callba Function8d03d
+	callba DeinitializeAllSprites
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, VTiles0
@@ -747,8 +781,8 @@
 	ld a, $1
 	call Function108b98
 	call Function108af4
-	ld c, $30
-	call Function1082cc
+	ld c, 48
+	call WaitMobileTradeSpriteAnims
 	ld de, SFX_BALL_POOF
 	call PlaySFX
 	call Function108a33
@@ -759,28 +793,28 @@
 	ld [hWX], a
 	ld a, $50
 	ld [hWY], a
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	ld [CurPartySpecies], a
-	ld a, [wEnemyTrappingMove]
+	ld a, [wOTTrademonDVs]
 	ld [TempMonDVs], a
-	ld a, [wPlayerWrapCount]
+	ld a, [wOTTrademonDVs + 1]
 	ld [TempMonDVs + 1], a
 	ld b, SCGB_1A
 	call GetSGBLayout
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
-	ld a, [wc702]
-	ld hl, wEnemyTrappingMove
+	ld a, [wOTTrademonSpecies]
+	ld hl, wOTTrademonDVs
 	call Function10898a
-	ld a, [wc702]
+	ld a, [wOTTrademonSpecies]
 	call Function108229
 	call Function1082db
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 108638
 
-Function108638: ; 108638
-	callba Function8d03d
+MobileTradeAnim_02: ; 108638
+	callba DeinitializeAllSprites
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
@@ -787,7 +821,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call DisableLCD
-	call Function1081ca
+	call MobileTradeAnim_ClearBGMap
 	call Function108c80
 	call Function108c6d
 	call EnableLCD
@@ -805,18 +839,18 @@
 	ld [rSVBK], a
 	ld hl, Palette_109107
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
 	call Function108d07
 	call Function108af4
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 108689
 
-Function108689: ; 108689
-	callba Function8d03d
+MobileTradeAnim_10: ; 108689
+	callba DeinitializeAllSprites
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
@@ -823,7 +857,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call DisableLCD
-	call Function1081ca
+	call MobileTradeAnim_ClearBGMap
 	ld a, $1
 	ld [rVBK], a
 	ld hl, LZ_108da7
@@ -851,17 +885,17 @@
 	ld [rSVBK], a
 	ld hl, Palette_109107
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
 	call Function108d07
 	call Function108af4
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 1086f4
 
-Function1086f4: ; 1086f4
+MobileTradeAnim_11: ; 1086f4
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
@@ -895,7 +929,7 @@
 	ld [rSVBK], a
 	ld hl, Palette_109107
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -906,82 +940,81 @@
 	ld [hSCX], a
 	ld de, MUSIC_EVOLUTION
 	call PlayMusic2
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 108763
 
-Function108763: ; 108763
+MobileTradeAnim_GiveTrademon1: ; 108763
 	ld de, SFX_GIVE_TRADEMON
 	call PlaySFX
-	ld c, $28
-	ld hl, $d0b0
+	ld c, 40
+	ld hl, BGPals + 6 palettes
 	call Function1082f0
 	call Function108af4
-.asm_108774
+.loop
 	ld a, [hSCX]
 	cp $e0
-	jr z, .asm_108791
+	jr z, .loop2
 rept 2
 	dec a
 endr
 	ld [hSCX], a
 	cp $f8
-	jr nz, .asm_10878a
+	jr nz, .next
 	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 
-.asm_10878a
-	ld c, $1
-	call Function1082cc
-	jr .asm_108774
+.next
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
+	jr .loop
 
-.asm_108791
+.loop2
 	ld a, [hSCY]
 	cp $f8
-	jr z, .asm_1087cb
+	jr z, .done
 rept 2
 	dec a
 endr
 	ld [hSCY], a
 	cp $40
-	jr z, .asm_1087a9
+	jr z, .init
 	cp $30
-	jr z, .asm_1087b7
+	jr z, .delete
 	cp $68
-	jr z, .asm_1087bc
-	jr .asm_1087c4
+	jr z, .replace
+	jr .next2
 
-.asm_1087a9
+.init
 	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 	xor a
 	call Function108ad4
-	jr .asm_1087c4
+	jr .next2
 
-.asm_1087b7
-	call Function108bbd
-	jr .asm_1087c4
+.delete
+	call MobileTradeAnim_DeleteSprites
+	jr .next2
 
-.asm_1087bc
-	call Function108bbd
+.replace
+	call MobileTradeAnim_DeleteSprites
 	ld a, $1
 	call Function108ad4
+.next2
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
+	jr .loop2
 
-.asm_1087c4
-	ld c, $1
-	call Function1082cc
-	jr .asm_108791
-
-.asm_1087cb
-	call Function1082b2
+.done
+	call MobileTradeAnim_Next
 	ret
 ; 1087cf
 
-Function1087cf: ; 1087cf
-	ld c, $28
-	ld hl, StringBuffer2 + 2
+MobileTradeAnim_GiveTrademon2: ; 1087cf
+	ld c, 40
+	ld hl, BGPals + 1 palettes
 	call Function1082f0
 	call Function108af4
 	call Function108b5a
@@ -990,84 +1023,84 @@
 	call _InitSpriteAnimStruct
 	ld de, SFX_FORESIGHT
 	call PlaySFX
-	ld c, $a
-	call Function1082cc
+	ld c, 10
+	call WaitMobileTradeSpriteAnims
 	xor a
 	ld [wcf64], a
 	depixel 9, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_23
 	call _InitSpriteAnimStruct
-.asm_1087fc
+.loop
 	ld a, [hSCY]
 	cp $90
-	jr z, .asm_10880d
+	jr z, .done
 	sub $8
 	ld [hSCY], a
-	ld c, $1
-	call Function1082cc
-	jr .asm_1087fc
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
+	jr .loop
 
-.asm_10880d
-	call Function1082b7
+.done
+	call GetMobileTradeAnimByte
 	ret
 ; 108811
 
-Function108811: ; 108811
-	ld c, $28
-	call Function1082cc
+MobileTradeAnim_05: ; 108811
+	ld c, 40
+	call WaitMobileTradeSpriteAnims
 	ld a, $1
 	ld [wcf64], a
 	ld de, SFX_SHARPEN
 	call PlaySFX
-	ld c, $3c
-	call Function1082cc
+	ld c, 60
+	call WaitMobileTradeSpriteAnims
 	depixel 30, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_24
 	call _InitSpriteAnimStruct
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
 	call PlaySFX
 	ret
 ; 108838
 
-Function108838: ; 108838
-	ld c, $28
-	call Function1082cc
+MobileTradeAnim_06: ; 108838
+	ld c, 40
+	call WaitMobileTradeSpriteAnims
 	ld a, $1
 	ld [wcf64], a
 	ld de, SFX_SHARPEN
 	call PlaySFX
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 10884c
 
-Function10884c: ; 10884c
+MobileTradeAnim_07: ; 10884c
 	ld c, 80
 	call DelayFrames
 	depixel 30, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_24
 	call _InitSpriteAnimStruct
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
 	call PlaySFX
 	ret
 ; 108863
 
-Function108863: ; 108863
-	ld c, $28
-	call Function1082cc
-.asm_108868
+MobileTradeAnim_GetTrademon1: ; 108863
+	ld c, 40
+	call WaitMobileTradeSpriteAnims
+.loop
 	ld a, [hSCY]
 	cp $f8
-	jr z, .asm_108879
+	jr z, .done
 	add $8
 	ld [hSCY], a
-	ld c, $1
-	call Function1082cc
-	jr .asm_108868
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
+	jr .loop
 
-.asm_108879
-	callba Function8d03d
+.done
+	callba DeinitializeAllSprites
 	depixel 9, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_25
 	call _InitSpriteAnimStruct
@@ -1074,18 +1107,18 @@
 	ld de, SFX_GLASS_TING_2
 	call PlaySFX
 	call Function108af4
-	call Function1082b2
+	call MobileTradeAnim_Next
 	ret
 ; 108894
 
-Function108894: ; 108894
-	ld c, $14
-	ld hl, StringBuffer2 + 2
+MobileTradeAnim_GetTrademon2: ; 108894
+	ld c, 20
+	ld hl, BGPals + 1 palettes
 	call Function1082fa
 	ld de, SFX_GIVE_TRADEMON
 	call PlaySFX
-	ld c, $14
-	ld hl, StringBuffer2 + 2
+	ld c, 20
+	ld hl, BGPals + 1 palettes
 	call Function1082fa
 	call Function108af4
 .asm_1088ad
@@ -1119,14 +1152,14 @@
 	jr .asm_1088e7
 
 .asm_1088dd
-	call Function108bbd
+	call MobileTradeAnim_DeleteSprites
 	ld a, $1
 	call Function108ad4
 	jr .asm_1088e7
 
 .asm_1088e7
-	ld c, $1
-	call Function1082cc
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
 	jr .asm_1088ad
 
 .asm_1088ee
@@ -1137,60 +1170,60 @@
 	inc a
 endr
 	ld [hSCX], a
-	cp $f8
+	cp -8
 	jr nz, .asm_1088e7
-	call Function108bbd
-	ld c, $1
-	call Function1082cc
+	call MobileTradeAnim_DeleteSprites
+	ld c, 1
+	call WaitMobileTradeSpriteAnims
 	jr .asm_1088ee
 
 .asm_108906
-	call Function1082b2
+	call MobileTradeAnim_Next
 	ret
 ; 10890a
 
-Function10890a: ; 10890a
-	ld c, $28
-	ld hl, $d0b0
+MobileTradeAnim_GetTrademon3: ; 10890a
+	ld c, 40
+	ld hl, BGPals + 6 palettes
 	call Function1082f0
 	call Function108af4
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 108919
 
-Function108919: ; 108919
-	ld c, $28
-	call Function1082cc
-	callba Function8d03d
+MobileTradeAnim_0f: ; 108919
+	ld c, 40
+	call WaitMobileTradeSpriteAnims
+	callba DeinitializeAllSprites
 	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Function1081ad
-	call Function1081ca
+	call MobileTradeAnim_ClearVTiles
+	call MobileTradeAnim_ClearBGMap
 	call EnableLCD
-	call Function1082b7
+	call GetMobileTradeAnimByte
 	ret
 ; 10893d
 
-Function10893d: ; 10893d
-.asm_10893d
+MobileTradeAnim_FadeToBlack: ; 10893d
+.loop
 	ld a, [rBGP]
 	and a
-	jr z, .asm_108953
+	jr z, .blank
 	sla a
 	sla a
 	call DmgToCgbBGPals
-	call Functioncf8
-	ld c, $4
+	call DmgToCgbObjPal0
+	ld c, 4
 	call DelayFrames
-	jr .asm_10893d
+	jr .loop
 
-.asm_108953
+.blank
 	xor a
 	call DmgToCgbBGPals
-	call Functioncf8
-	call Function1082b7
+	call DmgToCgbObjPal0
+	call GetMobileTradeAnimByte
 	ret
 ; 10895e
 
@@ -1200,18 +1233,17 @@
 
 Function108963:
 	ld de, VTiles2 tile $31
-
 asm_108966
 	call DelayFrame
 	ld hl, VTiles2
-	lb bc, $0a, $31
+	lb bc, $a, $31 ; $a is the bank of ?????
 	call Request2bpp
 	call WaitTop
-	call Function108ac8
+	call MobileTradeAnim_ClearTilemap
 	hlcoord 7, 2
 	xor a
 	ld [hFillBox], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	call WaitBGMap
 	ret
@@ -1219,121 +1251,121 @@
 
 Function10898a: ; 10898a
 	ld de, VTiles2
-	call Function1081e9
+	call MobileTradeAnim_GetFrontpic
 	call WaitTop
-	call Function108ac8
+	call MobileTradeAnim_ClearTilemap
 	hlcoord 7, 2
 	xor a
 	ld [hFillBox], a
-	ld bc, $0707
+	lb bc, 7, 7
 	predef FillBox
 	call WaitBGMap
 	ret
 ; 1089a8
 
-Function1089a8: ; 1089a8
-	ld de, $c6d0
+MobileTradeAnim_DisplayMonToBeSent: ; 1089a8
+	ld de, wPlayerTrademonSpecies
 	ld a, [de]
-	cp $fd
-	jr z, asm_1089fc
-	call Function108a5b
-	ld de, $c6d0
-	call Function108a92
-	ld de, $c6d1
-	call Function108a9c
-	ld a, [wc701]
-	ld de, $c6f2
-	call Function108aa3
-	ld de, $c6ff
-	call Function108abe
-	call Function108a87
+	cp EGG
+	jr z, MobileTradeAnim_DisplayEggData
+	call MobileTradeAnim_LoadMonTemplate
+	ld de, wPlayerTrademonSpecies
+	call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
+	ld de, wPlayerTrademonSpeciesName
+	call MobileTradeAnim_MonDisplay_PrintSpeciesName
+	ld a, [wPlayerTrademonCaughtData]
+	ld de, wPlayerTrademonOTName
+	call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
+	ld de, wPlayerTrademonID
+	call MobileTradeAnim_MonDisplay_PrintIDNumber
+	call MobileTradeAnim_MonDisplay_UpdateBGMap
 	ret
 
-Function1089d2:
-	ld de, wc702
+MobileTradeAnim_DisplayReceivedMon:
+	ld de, wOTTrademonSpecies
 	ld a, [de]
-	cp $fd
-	jr z, asm_1089fc
-	call Function108a5b
-	ld de, wc702
-	call Function108a92
-	ld de, wc703
-	call Function108a9c
-	ld a, [wEnemyCharging]
-	ld de, wc724
-	call Function108aa3
-	ld de, wEnemyWrapCount
-	call Function108abe
-	call Function108a87
+	cp EGG
+	jr z, MobileTradeAnim_DisplayEggData
+	call MobileTradeAnim_LoadMonTemplate
+	ld de, wOTTrademonSpecies
+	call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
+	ld de, wOTTrademonSpeciesName
+	call MobileTradeAnim_MonDisplay_PrintSpeciesName
+	ld a, [wOTTrademonCaughtData]
+	ld de, wOTTrademonOTName
+	call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
+	ld de, wOTTrademonID
+	call MobileTradeAnim_MonDisplay_PrintIDNumber
+	call MobileTradeAnim_MonDisplay_UpdateBGMap
 	ret
 
-asm_1089fc
+MobileTradeAnim_DisplayEggData
 	call WaitTop
-	call Function108ac8
+	call MobileTradeAnim_ClearTilemap
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
 	hlcoord 5, 0
-	ld b, $6
-	ld c, $9
+	ld b, 6
+	ld c, 9
 	call TextBox
 	hlcoord 6, 2
-	ld de, String_108a1d
+	ld de, .EggTemplate
 	call PlaceString
-	call Function108a87
+	call MobileTradeAnim_MonDisplay_UpdateBGMap
 	ret
 ; 108a1d
 
-String_108a1d: ; 108a1d
+.EggTemplate: ; 108a1d
 	db   "タマゴ"
 	next "おや/?????"
-	next $73, "№", $f2, "?????"
+	next "<ID>№·?????"
 	db   "@"
 ; 108a33
 
 Function108a33: ; 108a33
 	call WaitTop
-	call Function108ac8
+	call MobileTradeAnim_ClearTilemap
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
 	hlcoord 5, 0
-	ld b, $6
-	ld c, $9
+	ld b, 6
+	ld c, 9
 	call TextBox
 	hlcoord 7, 4
-	ld de, String_108a54
+	ld de, .OddEgg
 	call PlaceString
-	call Function108a87
+	call MobileTradeAnim_MonDisplay_UpdateBGMap
 	ret
 ; 108a54
 
-String_108a54: ; 108a54
+.OddEgg: ; 108a54
 	db "なぞのタマゴ@"
 ; 108a5b
 
-Function108a5b: ; 108a5b
+MobileTradeAnim_LoadMonTemplate: ; 108a5b
 	call WaitTop
-	call Function108ac8
+	call MobileTradeAnim_ClearTilemap
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
 	hlcoord 4, 0
-	ld b, $6
-	ld c, $a
+	ld b,  6
+	ld c, 10
 	call TextBox
 	hlcoord 5, 0
-	ld de, String_108a79
+	ld de, .MonTemplate
 	call PlaceString
 	ret
 ; 108a79
 
-String_108a79: ; 108a79
-	db   "─ №", $f2
+.MonTemplate: ; 108a79
+	db   "─ №·"
 	next ""
 	next "おや/"
-	next $73, "№", $f2
+	next "<ID>№·"
 	db   "@"
 ; 108a87
 
-Function108a87: ; 108a87
+MobileTradeAnim_MonDisplay_UpdateBGMap: ; 108a87
 	call WaitBGMap
 	call WaitTop
 	ld a, VBGMap0 / $100
@@ -1341,7 +1373,7 @@
 	ret
 ; 108a92
 
-Function108a92: ; 108a92
+MobileTradeAnim_MonDisplay_PrintSpeciesNumber: ; 108a92
 	hlcoord 9, 0
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
 	call PrintNum
@@ -1348,24 +1380,23 @@
 	ret
 ; 108a9c
 
-Function108a9c: ; 108a9c
+MobileTradeAnim_MonDisplay_PrintSpeciesName: ; 108a9c
 	hlcoord 5, 2
 	call PlaceString
 	ret
 ; 108aa3
 
-Function108aa3: ; 108aa3
+MobileTradeAnim_MonDisplay_PrintOTNameAndGender: ; 108aa3
 	cp $3
-	jr c, .asm_108aa8
+	jr c, .got_gender
 	xor a
-
-.asm_108aa8
+.got_gender
 	push af
 	hlcoord 8, 4
 	call PlaceString
 	inc bc
 	pop af
-	ld hl, Unknown_108abb
+	ld hl, .GenderChars
 	ld d, 0
 	ld e, a
 	add hl, de
@@ -1374,11 +1405,13 @@
 	ret
 ; 108abb
 
-Unknown_108abb: ; 108abb
-	db " ", "♂", "♀"
+.GenderChars: ; 108abb
+	db " "
+	db "♂"
+	db "♀"
 ; 108abe
 
-Function108abe: ; 108abe
+MobileTradeAnim_MonDisplay_PrintIDNumber: ; 108abe
 	hlcoord 8, 6
 	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
 	call PrintNum
@@ -1385,10 +1418,10 @@
 	ret
 ; 108ac8
 
-Function108ac8: ; 108ac8
+MobileTradeAnim_ClearTilemap: ; 108ac8
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $7f
+	ld a, " "
 	call ByteFill
 	ret
 ; 108ad4
@@ -1401,12 +1434,11 @@
 
 .asm_108adc
 	ld de, GFX_1091c7
-
 .asm_108adf
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles2 tile $4a
-	lb bc, $42, $10
+	lb bc, BANK(GFX_1092c7), 16
 	call Get2bpp_2
 	call DelayFrame
 	ld a, $0
@@ -1421,33 +1453,33 @@
 	ld [rSVBK], a
 	ld a, [wcf65]
 	and $1
-	jr z, .asm_108b1c
+	jr z, .copy_palette_109147
 	ld hl, Palette_109187
 	ld de, UnknOBPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	ld hl, Palette_109187
 	ld de, OBPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
-	jr .asm_108b34
+	jr .done_copy
 
-.asm_108b1c
+.copy_palette_109147
 	ld hl, Palette_109147
 	ld de, UnknOBPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	ld hl, Palette_109147
 	ld de, OBPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 
-.asm_108b34
+.done_copy
 	pop af
 	ld [rSVBK], a
-	ld a, $e4
-	call Functioncf8
-	ld a, $e4
+	ld a, %11100100 ; 3,2,1,0
+	call DmgToCgbObjPal0
+	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	call DelayFrame
 	ret
@@ -1458,7 +1490,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld de, $7fff
+	ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
 	ld hl, UnknBGPals
 	ld a, e
 	ld [hli], a
@@ -1474,16 +1506,16 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld de, $3ff2
-	ld hl, $d0a0
+	ld de, (15 << 10) + (31 << 5) + 18 ; $3ff2
+	ld hl, BGPals + 4 palettes
 	ld c, $10
-.asm_108b69
+.loop
 	ld a, e
 	ld [hli], a
 	ld a, d
 	ld [hli], a
 	dec c
-	jr nz, .asm_108b69
+	jr nz, .loop
 	pop af
 	ld [rSVBK], a
 	ld a, $1
@@ -1498,14 +1530,13 @@
 	ld [rSVBK], a
 	ld a, c
 	and $2
-	jr z, .asm_108b89
-	ld de, $7fff
-	jr .asm_108b8c
+	jr z, .Orange
+	ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
+	jr .load_pal
 
-.asm_108b89
-	ld de, $05ff
-
-.asm_108b8c
+.Orange
+	ld de, ( 1 << 10) + (15 << 5) + 31 ; $05ff
+.load_pal
 	ld a, e
 	ld [hli], a
 	ld a, d
@@ -1530,15 +1561,14 @@
 	and $1
 	xor d
 	jr z, .asm_108bad
-	ld hl, Palette_108b98 + 8
+	ld hl, Palette_108b98 + 1 palettes
 	jr .asm_108bb0
 
 .asm_108bad
 	ld hl, Palette_108b98
-
 .asm_108bb0
-	ld de, UnknBGPals + 8 * 7
-	ld bc, $0040
+	ld de, UnknBGPals + 7 palettes
+	ld bc, 8 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -1545,8 +1575,8 @@
 	ret
 ; 108bbd
 
-Function108bbd: ; 108bbd
-	callba Function8d03d
+MobileTradeAnim_DeleteSprites: ; 108bbd
+	callba DeinitializeAllSprites
 	call ClearSprites
 	ret
 ; 108bc7
@@ -1555,25 +1585,26 @@
 	ld a, [wcf64]
 	and a
 	ret z
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
-	cp $f2
-	jr z, .asm_108bd9
-	sub $8
+	cp -1 * 8 - 6
+	jr z, .delete
+	sub 1 * 8
 	ld [hl], a
 	ret
-.asm_108bd9
-	callba Function8d036
+
+.delete
+	callba DeinitializeSprite
 	ret
 
 Function108be0: ; 108be0 (42:4be0)
-	ld hl, $5
+	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
-	cp $4a
+	cp 9 * 8 + 2
 	ret z
-	add $8
+	add 1 * 8
 	ld [hl], a
 	ret
 ; 108bec (42:4bec)
@@ -1581,28 +1612,28 @@
 Function108bec: ; 108bec
 	ld a, $90
 	ld [hWY], a
-	ld hl, UnknownText_0x108c07
+	ld hl, .PlayerWillTradeMon
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
-	ld hl, UnknownText_0x108c0c
+	ld hl, .ForPartnersMon
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	ret
 ; 108c07
 
-UnknownText_0x108c07: ; 0x108c07
+.PlayerWillTradeMon: ; 0x108c07
 	text_jump UnknownText_0x1bc787
 	db "@"
 ; 0x108c0c
 
-UnknownText_0x108c0c: ; 0x108c0c
+.ForPartnersMon: ; 0x108c0c
 	text_jump UnknownText_0x1bc79d
 	db "@"
 ; 0x108c11
 
-UnknownText_0x108c11: ; 0x108c11
+.UnusedTextPlayersMonTrade: ; 0x108c11
 	text_jump UnknownText_0x1bc7b0
 	db "@"
 ; 0x108c16
@@ -1610,14 +1641,14 @@
 Function108c16: ; 108c16
 	ld a, $90
 	ld [hWY], a
-	ld hl, UnknownText_0x108c26
+	ld hl, .TakeGoodCareOfMon
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	ret
 ; 108c26
 
-UnknownText_0x108c26: ; 0x108c26
+.TakeGoodCareOfMon: ; 0x108c26
 	text_jump UnknownText_0x1bc7c3
 	db "@"
 ; 0x108c2b
@@ -1625,16 +1656,16 @@
 Function108c2b: ; 108c2b
 	ld a, $90
 	ld [hWY], a
-	ld hl, UnknownText_0x108c3b
+	ld hl, .PlayersMonTrade
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	ret
 ; 108c3b
 
-UnknownText_0x108c3b: ; 0x108c3b
+.PlayersMonTrade: ; 0x108c3b
 	text_jump UnknownText_0x1bc7dd
-	db $50
+	db "@"
 ; 0x108c40
 
 Function108c40: ; 108c40
@@ -1641,28 +1672,28 @@
 	ld a, $90
 	ld [hWY], a
 	ld a, [wcf65]
-	and $80
-	jr z, .asm_108c57
-	ld hl, UnknownText_0x108c68
+	and %10000000
+	jr z, .Getmon
+	ld hl, .CameBack
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	ret
 
-.asm_108c57
-	ld hl, UnknownText_0x108c63
+.Getmon
+	ld hl, .TakeGoodCareOf
 	call PrintText
-	ld c, $50
+	ld c, 80
 	call DelayFrames
 	ret
 ; 108c63
 
-UnknownText_0x108c63: ; 0x108c63
+.TakeGoodCareOf: ; 0x108c63
 	text_jump UnknownText_0x1bc7f0
 	db "@"
 ; 0x108c68
 
-UnknownText_0x108c68: ; 0x108c68
+.CameBack: ; 0x108c68
 	text_jump UnknownText_0x1bc80a
 	db "@"
 ; 0x108c6d
@@ -1691,81 +1722,81 @@
 	ret
 ; 108c9b
 
-Function108c9b: ; 108c9b
-; localization error: $b should be 6 here
+DebugMobileTrade: ; 108c9b
+; localization error: NAME_LENGTH (11) should be 6 here
 
-	ld hl, Unknown_108ce9
+	ld hl, .DebugTradeData
 	ld a, [hli]
-	ld [$c6d0], a
+	ld [wPlayerTrademonSpecies], a
 
-	ld de, $c6e7
-	ld c, $b
-.asm_108ca7
+	ld de, wPlayerTrademonSenderName
+	ld c, NAME_LENGTH
+.your_name_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108ca7
+	jr nz, .your_name_loop
 
-	ld de, $c6ff
-	ld c, $2
-.asm_108cb2
+	ld de, wPlayerTrademonID
+	ld c, 2
+.your_id_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108cb2
+	jr nz, .your_id_loop
 
-	ld de, $c6f2
-	ld c, $b
-.asm_108cbd
+	ld de, wPlayerTrademonOTName
+	ld c, NAME_LENGTH
+.your_ot_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108cbd
+	jr nz, .your_ot_loop
 
 	ld a, [hli]
-	ld [wc702], a
+	ld [wOTTrademonSpecies], a
 
-	ld de, wc719
-	ld c, $b
-.asm_108ccc
+	ld de, wOTTrademonSenderName
+	ld c, NAME_LENGTH
+.their_name_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108ccc
+	jr nz, .their_name_loop
 
-	ld de, wEnemyWrapCount
-	ld c, $2
-.asm_108cd7
+	ld de, wOTTrademonID
+	ld c, 2
+.their_id_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108cd7
+	jr nz, .their_id_loop
 
-	ld de, wc724
-	ld c, $b
-.asm_108ce2
+	ld de, wOTTrademonOTName
+	ld c, NAME_LENGTH
+.their_ot_loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_108ce2
+	jr nz, .their_ot_loop
 
 	ret
 ; 108ce9
 
-Unknown_108ce9:
-	db 3
+.DebugTradeData:
+	db VENUSAUR
 	db "ゲーフり@@"
-	db $23, $01
+	dw $0123
 	db "かびーん@@"
-	db 6
+	db CHARIZARD
 	db "クりーチャ@"
-	db $56, $04
+	dw $0456
 	db "マツミヤ@@"
 ; 108d07
 
@@ -1777,12 +1808,12 @@
 	ld a, $7
 
 .asm_108d12
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld hl, Palette_1093c7
 	call AddNTimes
 	ld a, $5
-	ld de, wd020
-	ld bc, $0008
+	ld de, UnknBGPals + 4 palettes
+	ld bc, 1 palettes
 	call FarCopyWRAM
 	ret
 ; 108d27
@@ -1800,12 +1831,16 @@
 INCBIN "gfx/unknown/1090a7.tilemap.lz"
 
 Palette_1090f7:
+; unreferenced
 	RGB 31, 31, 31
 	RGB  0,  0,  0
+
 	RGB 31,  0, 25
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
+
 	RGB  9, 19, 31
 	RGB  0,  0,  0
 
@@ -1814,30 +1849,37 @@
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 15,  1
 	RGB 14, 14, 31
 	RGB 12,  9, 31
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 14, 14, 31
 	RGB 12,  9, 31
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 31,  7,  9
 	RGB 18,  0,  1
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 15,  1
 	RGB 18,  0, 30
 	RGB  9,  0, 17
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 18,  0, 30
 	RGB  9,  0, 17
@@ -1848,30 +1890,37 @@
 	RGB 31, 31, 12
 	RGB 31, 13, 12
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 31, 23, 15
 	RGB 31, 18,  7
 	RGB 31, 15,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 31,  0, 25
 	RGB 31,  0, 25
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  9, 19, 31
 	RGB  9, 19, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
@@ -1882,30 +1931,37 @@
 	RGB 31, 31, 12
 	RGB 31, 13, 12
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 31, 23, 15
 	RGB 31, 18,  7
 	RGB 31, 15,  0
+
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  9, 19, 31
 	RGB  9, 19, 31
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB 31,  0, 25
 	RGB 31,  0, 25
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
 	RGB  0,  0,  0
+
 	RGB 31, 31, 31
 	RGB  0,  0,  0
 	RGB  0,  0,  0
@@ -1921,30 +1977,37 @@
 	RGB  4, 13, 31
 	RGB  0,  0, 31
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 31, 31,  0
 	RGB 31, 15,  0
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB  9, 24,  0
 	RGB  2, 16,  0
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 31,  7,  9
 	RGB 18,  0,  1
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 28,  5, 31
 	RGB 17,  0, 17
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB  9,  9,  9
 	RGB  4,  4,  4
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 31, 13, 21
 	RGB 27,  7, 12
 	RGB  0,  0,  0
+
 	RGB 18, 31, 15
 	RGB 21, 20, 20
 	RGB 14, 14, 31
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -78,45 +78,45 @@
 ; 11417f
 
 Unknown_11417f: ; 11417f
-	dw String_114199
-	dw String_11419f
-	dw String_1141a7
-	dw String_1141b1
-	dw String_1141b5
-	dw String_1141b9
-	dw String_1141c2
-	dw String_1141c8
-	dw String_1141d6
-	dw String_1141e4
-	dw String_1141ee
-	dw String_1141fc
-	dw String_114209
+	dw .From
+	dw .Sender
+	dw .ReplyTo
+	dw .To
+	dw .CC
+	dw .Subject
+	dw .Date
+	dw .ContentType
+	dw .MimeVersion
+	dw .XMailer
+	dw .XGameTitle
+	dw .XGameCode
+	dw .XGBMailType
 
-String_114199: ; 114199
+.From: ; 114199
 	db "FROM:", 0
-String_11419f: ; 11419f
+.Sender: ; 11419f
 	db "SENDER:", 0
-String_1141a7: ; 1141a7
+.ReplyTo: ; 1141a7
 	db "REPLY-TO:", 0
-String_1141b1: ; 1141b1
+.To: ; 1141b1
 	db "TO:", 0
-String_1141b5: ; 1141b5
+.CC: ; 1141b5
 	db "CC:", 0
-String_1141b9: ; 1141b9
+.Subject: ; 1141b9
 	db "SUBJECT:", 0
-String_1141c2: ; 1141c2
+.Date: ; 1141c2
 	db "DATE:", 0
-String_1141c8: ; 1141c8
+.ContentType: ; 1141c8
 	db "CONTENT-TYPE:", 0
-String_1141d6: ; 1141d6
+.MimeVersion: ; 1141d6
 	db "MIME-VERSION:", 0
-String_1141e4: ; 1141e4
+.XMailer: ; 1141e4
 	db "X-MAILER:", 0
-String_1141ee: ; 1141ee
+.XGameTitle: ; 1141ee
 	db "X-GAME-TITLE:", 0
-String_1141fc: ; 1141fc
+.XGameCode: ; 1141fc
 	db "X-GAME-CODE:", 0
-String_114209: ; 114209
+.XGBMailType: ; 114209
 	db "X-GBMAIL-TYPE:", 0
 ; 114218
 
@@ -131,10 +131,10 @@
 ; 114243
 
 Function114243:: ; 114243
-	ld a, $a
+	ld a, SRAM_ENABLE
 	ld [MBC3SRamEnable], a
-	ld a, [$ff8c]
-	push af
+	ld a, [hFF8C]
+	push af ; if [wdc02] == 0, this is popped to pc.
 	push de
 	ld a, [wdc02]
 	add a
@@ -153,9 +153,9 @@
 	ld [wdc02], a
 	pop af
 rept 2
-	ld [$ff8c], a
+	ld [hFF8C], a
 endr
-	ld [$4000], a
+	ld [MBC3SRamBank], a
 	ret
 ; 114268
 
@@ -171,8 +171,8 @@
 	ld [wdc03], a
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -370,8 +370,8 @@
 	pop bc
 	ld a, [wdc03]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	call Function114c0b
 	ld hl, String_114004
 .asm_114394
@@ -429,8 +429,8 @@
 	push af
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -473,7 +473,7 @@
 	jr nc, .asm_114400
 
 .asm_114407
-	ld bc, VBlank5
+	lb bc, $4, $0
 	ld a, $2
 	ret
 
@@ -486,8 +486,8 @@
 Function114412: ; 114412
 	ld a, c
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, Unknown_11417f
 	ld a, b
 	add a
@@ -506,17 +506,17 @@
 	jp z, .asm_1144c2
 	inc e
 	call z, Function1144c8
-	cp $d
+	cp $d ; CR
 	jr nz, .asm_11442b
 	ld a, [de]
 	inc e
 	call z, Function1144c8
-	cp $a
+	cp $a ; NL
 	jr nz, .asm_11442b
 	ld a, [de]
-	cp $2e
+	cp $2e ; .
 	jr z, .asm_1144ae
-	cp $d
+	cp $d  ; CR
 	jr z, .asm_1144b8
 
 .asm_11444a
@@ -527,9 +527,9 @@
 	jr z, .asm_1144c2
 	inc e
 	call z, Function1144c8
-	cp $61
+	cp $61 ; "a"
 	jr c, .asm_114462
-	cp $7b
+	cp $7b ; "z" + 1
 	jr nc, .asm_114462
 	sub $20
 
@@ -553,10 +553,10 @@
 	jr .asm_11446e
 
 .asm_114476
-	ld a, $20
+	ld a, $20 ; " "
 	cp b
 	jr z, .asm_114481
-	ld a, $a
+	ld a, $a ; NL
 	cp b
 	jr z, .asm_114481
 	dec de
@@ -572,18 +572,18 @@
 	inc bc
 	inc e
 	call z, Function1144c8
-	cp $d
+	cp $d ; CR
 	jr nz, .asm_114486
 	ld a, [de]
 	inc bc
 	inc e
 	call z, Function1144c8
-	cp $a
+	cp $a ; NL
 	jr nz, .asm_114486
 	ld a, [de]
-	cp $20
+	cp $20 ; " "
 	jr z, .asm_114486
-	cp $9
+	cp $9 ; TAB
 	jr z, .asm_114486
 	ld d, h
 	ld e, l
@@ -596,7 +596,7 @@
 	inc e
 	call z, Function1144c8
 	ld a, [de]
-	cp $d
+	cp $d ; CR
 	jp nz, .asm_11442b
 
 .asm_1144b8
@@ -603,7 +603,7 @@
 	inc e
 	call z, Function1144c8
 	ld a, [de]
-	cp $a
+	cp $a ; NL
 	jp nz, .asm_11442b
 
 .asm_1144c2
@@ -676,8 +676,8 @@
 	pop hl
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -693,8 +693,8 @@
 	ld hl, wdc06
 	ld a, [hl]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, wdc09
 	ld e, [hl]
 	inc hl
@@ -753,8 +753,8 @@
 	jr nz, .asm_1145b4
 	ld a, h
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	push hl
 	push de
 	push bc
@@ -771,8 +771,8 @@
 	jr nz, .asm_1145ba
 	ld a, h
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, String_114218
 	call Function114acf
 
@@ -945,8 +945,8 @@
 	pop de
 	pop af
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	xor a
 	ld [Carpet], a
 	ld a, $1
@@ -968,8 +968,8 @@
 	ld hl, wdc03
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -982,8 +982,8 @@
 	ld hl, wdc03
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1027,8 +1027,8 @@
 	ld hl, wdc03
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1041,8 +1041,8 @@
 	ld a, $1
 	ld [wdc0e], a
 	ld a, [wdc00]
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, $1
 	ld [RightOrnament], a
 	call Function1147cd
@@ -1068,8 +1068,8 @@
 	ld hl, wdc03
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1123,8 +1123,8 @@
 	ld hl, wdc03
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	call Function114a7a
 	and a
 	jr z, .asm_1147cb
@@ -1236,8 +1236,8 @@
 	ld a, [wdc00]
 	push af
 	push de
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	call Function114a18
 	and a
 	jr nz, .asm_11485f
@@ -1260,8 +1260,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1327,8 +1327,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1427,8 +1427,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1519,8 +1519,8 @@
 	ld hl, wdc06
 	ld a, [hl]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	push de
 	ld hl, wdc09
 	ld e, [hl]
@@ -1874,8 +1874,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1913,8 +1913,8 @@
 	jr nz, .asm_114bff
 	ld a, h
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	call Function114c0b
 	ld hl, wdc24
 	call Function114c5e
@@ -1924,8 +1924,8 @@
 	pop hl
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
@@ -2136,8 +2136,8 @@
 	ld [wdc04], a
 	ld a, h
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, wdc24
 	call Function114d39
 	ld hl, wdc24
@@ -2155,8 +2155,8 @@
 	pop hl
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2460,8 +2460,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2666,8 +2666,8 @@
 	inc hl
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -2745,8 +2745,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2804,8 +2804,8 @@
 	ld c, a
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -2958,8 +2958,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3013,8 +3013,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3133,8 +3133,8 @@
 	ld hl, wdc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3228,8 +3228,8 @@
 	inc hl
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3483,8 +3483,8 @@
 .asm_1153f5
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -3617,8 +3617,8 @@
 	ld hl, RightOrnament
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -3854,8 +3854,8 @@
 	ld [wCurrentMapSignpostCount], a
 	ld a, [wdc17]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, wdc1a
 	ld c, [hl]
 	inc hl
@@ -3927,8 +3927,8 @@
 	ld [hl], d
 	pop bc
 	ld a, [wCurrentMapSignpostCount]
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld hl, wCurrMapTriggerCount
 	ld e, [hl]
 	inc hl
@@ -4238,8 +4238,8 @@
 	ld hl, wdc02
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4292,8 +4292,8 @@
 	ld hl, wCurrMapTriggerCount
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4767,8 +4767,8 @@
 	ld hl, wdc02
 	ld a, [hli]
 	ld [wdc00], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -4856,8 +4856,8 @@
 	ld hl, wCurrMapTriggerCount
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -5258,8 +5258,8 @@
 	ld a, [bc]
 	inc a
 	ld [bc], a
-	ld [$ff8c], a
-	ld [$4000], a
+	ld [hFF8C], a
+	ld [MBC3SRamBank], a
 	ld a, e
 	ld d, $a0
 	ld e, $0
@@ -5588,7 +5588,7 @@
 Function11615a: ; 11615a
 	xor a
 	ld [wc30d], a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld [wc310], a
 	ld [wc311], a
 	ld [wc312], a
@@ -5617,7 +5617,7 @@
 	ld a, [wc30d]
 	and a
 	ret z
-	ld a, [wc314 + 5]
+	ld a, [$c319]
 	cp $2
 	jr c, .asm_1161b4
 	ld a, $a0
@@ -5631,10 +5631,10 @@
 ; 1161b8
 
 Function1161b8: ; 1161b8
-	ld a, [wc314 + 5]
+	ld a, [$c319]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_1161c7
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -5644,7 +5644,7 @@
 	jp [hl]
 ; 1161c7
 
-Jumptable_1161c7: ; 1161c7
+.Jumptable: ; 1161c7
 	dw Function1161d5
 	dw Function116294
 	dw Function1162cb
@@ -5662,16 +5662,17 @@
 	ld [rSVBK], a
 
 	ld hl, Unknown_117356
-	ld de, w6_d000
+	ld de, wDecompressScratch
 	ld bc, $0300
 	call CopyBytes
 
 	di
 
-.asm_1161e9
+.wait_for_vblank
+; Wait until a vblank would occur had interrupts not just been disabled.
 	ld a, [rLY]
 	cp $91
-	jr nz, .asm_1161e9
+	jr nz, .wait_for_vblank
 
 	ld a, $d0
 	ld [rHDMA1], a
@@ -5755,12 +5756,12 @@
 	ld [MusicFade], a
 	ld de, MUSIC_MOBILE_ADAPTER
 	ld a, e
-	ld [wc2a9], a
+	ld [MusicFadeIDLo], a
 	ld a, d
-	ld [wc2aa], a
-	ld a, [wc314 + 5]
+	ld [MusicFadeIDHi], a
+	ld a, [$c319]
 	inc a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ret
 ; 11628c
 
@@ -5774,20 +5775,20 @@
 
 Function116294: ; 116294
 	callba Function170d02
-	ld a, [wc314 + 5]
+	ld a, [$c319]
 	inc a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, wd030
-	ld de, wc314 + 12
-	ld bc, $0010
+	ld hl, UnknBGPals + 8 * 6
+	ld de, $c320
+	ld bc, 2 palettes
 	call CopyBytes
 	ld hl, Palette_11734e
 	ld de, UnknBGPals + 8 * 7
-	ld bc, $0008
+	ld bc, 1 palettes
 	call CopyBytes
 	call SetPalettes
 	pop af
@@ -5799,16 +5800,16 @@
 
 Function1162cb: ; 1162cb
 	callba Function170cc6
-	ld a, [wc314 + 5]
+	ld a, [$c319]
 	inc a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_11730e
-	ld de, wd050
-	ld bc, $0030
+	ld de, UnknOBPals + 2 palettes
+	ld bc, 6 palettes
 	call CopyBytes
 	call SetPalettes
 	pop af
@@ -5821,7 +5822,7 @@
 	call Function116758
 	call Function1167a6
 	ld a, [wc310]
-	cp $fd
+	cp EGG
 	ret z
 	sla a
 	ld c, a
@@ -5924,7 +5925,7 @@
 	ld [rSVBK], a
 	ld a, $a0
 	ld hl, Sprites
-	ld bc, $0040
+	ld bc, 16 * 4
 	call ByteFill
 	ld a, $90
 	ld [hWY], a
@@ -5934,12 +5935,12 @@
 	callba ReloadMapPart
 	ld a, $8
 	ld [MusicFade], a
-	ld a, [wc2c0]
-	ld [wc2a9], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
 	xor a
-	ld [wc2aa], a
+	ld [MusicFadeIDHi], a
 	xor a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld [wc30d], a
 	ret
 ; 1163c0
@@ -5951,17 +5952,17 @@
 	ld [rSVBK], a
 	ld a, $a0
 	ld hl, Sprites
-	ld bc, $0040
+	ld bc, 16 * 4
 	call ByteFill
 	call DelayFrame
 	callba Function14146
-	ld b, SCGB_09
+	ld b, SCGB_MAPPALS
 	call GetSGBLayout
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, wc314 + 12
+	ld hl, $c320
 	ld de, wd030
 	ld bc, $0010
 	call CopyBytes
@@ -5981,10 +5982,10 @@
 	jr z, .asm_11642a
 	ld a, $8
 	ld [MusicFade], a
-	ld a, [wc2c0]
-	ld [wc2a9], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
 	xor a
-	ld [wc2aa], a
+	ld [MusicFadeIDHi], a
 	jr .asm_116439
 
 .asm_11642a
@@ -5991,13 +5992,13 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, $0
-	ld [wc2a9], a
+	ld [MusicFadeIDLo], a
 	ld a, $0
-	ld [wc2aa], a
+	ld [MusicFadeIDHi], a
 
 .asm_116439
 	xor a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld [wc30d], a
 	ret
 ; 116441
@@ -6009,12 +6010,12 @@
 	callba ReloadMapPart
 	ld a, $8
 	ld [MusicFade], a
-	ld a, [wc2c0]
-	ld [wc2a9], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
 	xor a
-	ld [wc2aa], a
+	ld [MusicFadeIDHi], a
 	xor a
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld [wc30d], a
 	ret
 ; 116468
@@ -6424,7 +6425,7 @@
 	cp $ff
 	ret nz
 	ld a, $4
-	ld [wc314 + 5], a
+	ld [$c319], a
 	xor a
 	ld [wc314], a
 	ret
@@ -7595,7 +7596,7 @@
 	RGB 10,  9,  9
 	RGB 15, 14, 14
 
-Unknown_117356:
+Unknown_117356: ; 117356
 	db $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9
 	db $c9, $c9, $c9, $c9, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
 	db $c5, $c6, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
@@ -7650,7 +7651,7 @@
 
 SECTION "Mobile Stadium", ROMX, BANK[$45]
 
-Function117656: ; 117656
+Special_GiveOddEgg: ; 117656
 	callba GiveOddEgg
 	ret
 ; 11765d
@@ -7712,20 +7713,22 @@
 	call ClearSprites
 	callba Function171c87
 	callba ReloadMapPart
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ret
 
 Function1176ee: ; 1176ee (45:76ee)
+.loop
 	call JoyTextDelay
 	ld a, [wcd49]
 	bit 7, a
-	jr nz, .asm_117709
+	jr nz, .quit
 	call Function117719
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	callba ReloadMapPart
-	jr Function1176ee
-.asm_117709
-	callba Function8cf53
+	jr .loop
+
+.quit
+	callba ClearSpriteAnims
 	call ClearBGPalettes
 	call ClearScreen
 	call ClearSprites
@@ -7773,7 +7776,7 @@
 	ld [hl], a
 	ld a, $3
 	ld [wcd23], a
-	jp Function117a0a
+	jp MobilePassword_IncrementJumptable
 
 Function117764: ; 117764 (45:7764)
 	ld a, [wcd4a]
@@ -7787,37 +7790,37 @@
 	ld [wcd24], a
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
-	and $4
-	jr nz, Function1177a5
+	and SELECT
+	jr nz, Function117764_select
 	ld a, [hl]
-	and $8
-	jr nz, Function1177ac
+	and START
+	jr nz, Function117764_start
 	ld a, [hl]
-	and $1
-	jp nz, Function11784c
+	and A_BUTTON
+	jp nz, Function117764_a_button
 	ld a, [hl]
-	and $2
-	jr nz, asm_1177d6
+	and B_BUTTON
+	jr nz, Function117764_b_button
 	ld hl, hJoyLast
 	ld a, [hl]
-	and $40
-	jr nz, asm_1177f1
+	and D_UP
+	jr nz, Function117764_d_up
 	ld a, [hl]
-	and $80
-	jr nz, asm_11780a
+	and D_DOWN
+	jr nz, Function117764_d_down
 	ld a, [hl]
-	and $20
-	jp nz, Function11782d
+	and D_LEFT
+	jp nz, Function117764_d_left
 	ld a, [hl]
-	and $10
-	jp nz, Function117837
+	and D_RIGHT
+	jp nz, Function117764_d_right
 	ret
 
-Function1177a5: ; 1177a5 (45:77a5)
+Function117764_select: ; 1177a5 (45:77a5)
 	callba Function171cf0
 	ret
 
-Function1177ac: ; 1177ac (45:77ac)
+Function117764_start: ; 1177ac (45:77ac)
 	ld a, $2
 	ld [wcd4c], a
 	ld a, $4
@@ -7830,7 +7833,8 @@
 	ld a, [wcd4a]
 	and a
 	jr z, .asm_1177c5
-	jp Function117a0a
+	jp MobilePassword_IncrementJumptable
+
 .asm_1177c5
 	ld a, $6
 	ld [wcd49], a
@@ -7840,8 +7844,9 @@
 	ld a, $80
 	ld [wcd49], a
 	ld [ScriptVar], a
-	jp Function117a0a
-asm_1177d6: ; 1177d6 (45:77d6)
+	jp MobilePassword_IncrementJumptable
+
+Function117764_b_button: ; 1177d6 (45:77d6)
 	call PlayClickSFX
 	ld a, [wcd4a]
 	and a
@@ -7858,7 +7863,8 @@
 	add hl, de
 	ld [hl], a
 	ret
-asm_1177f1: ; 1177f1 (45:77f1)
+
+Function117764_d_up: ; 1177f1 (45:77f1)
 	ld a, [wcd4d]
 	and a
 	ret z
@@ -7871,10 +7877,10 @@
 	sla a
 	sla a
 	add e
-asm_117806: ; 117806 (45:7806)
+Function117764_d_vertical_load: ; 117806 (45:7806)
 	ld [wcd4c], a
 	ret
-asm_11780a: ; 11780a (45:780a)
+Function117764_d_down: ; 11780a (45:780a)
 	ld a, [wcd4d]
 	cp $4
 	ret z
@@ -7888,15 +7894,15 @@
 	cp $5
 	jr nc, .asm_117829
 	xor a
-	jr asm_117806
+	jr Function117764_d_vertical_load
 .asm_117825
 	ld a, $2
-	jr asm_117806
+	jr Function117764_d_vertical_load
 .asm_117829
 	ld a, $1
-	jr asm_117806
+	jr Function117764_d_vertical_load
 
-Function11782d: ; 11782d (45:782d)
+Function117764_d_left: ; 11782d (45:782d)
 	ld a, [wcd4c]
 	and a
 	ret z
@@ -7904,13 +7910,13 @@
 	ld [wcd4c], a
 	ret
 
-Function117837: ; 117837 (45:7837)
+Function117764_d_right: ; 117837 (45:7837)
 	ld e, $d
 	ld a, [wcd4d]
 	cp $4
-	jr nz, .asm_117842
+	jr nz, .wrap
 	ld e, $2
-.asm_117842
+.wrap
 	ld a, [wcd4c]
 	cp e
 	ret z
@@ -7918,33 +7924,34 @@
 	ld [wcd4c], a
 	ret
 
-Function11784c: ; 11784c (45:784c)
+Function117764_a_button: ; 11784c (45:784c)
 	call PlayClickSFX
 	ld a, [wcd4d]
 	cp $4
-	jr nz, .asm_117866
+	jr nz, .not_4
 	ld a, [wcd4c]
 	cp $2
 	jp z, Function1177b7
 	cp $1
 	jp z, Function1177cb
-	jp Function1177a5
-.asm_117866
+	jp Function117764_select
+
+.not_4
 	ld a, [wcd4a]
 	ld e, a
 	cp $10
-	jp z, Function1177ac
+	jp z, Function117764_start
 	inc a
 	ld [wcd4a], a
 	ld d, $0
 	ld a, [wcd4b]
 	and a
-	jr nz, .asm_117880
+	jr nz, .ascii_symbols
 	ld hl, Unknown_117a0f
-	jr .asm_117883
-.asm_117880
+	jr .got_ascii
+.ascii_symbols
 	ld hl, Unknown_117a47
-.asm_117883
+.got_ascii
 	push de
 	ld a, [wcd4c]
 	ld b, a
@@ -7967,7 +7974,7 @@
 	ld a, e
 	cp $f
 	ret nz
-	jp Function1177ac
+	jp Function117764_start
 
 Function1178aa: ; 1178aa (45:78aa)
 	ld hl, MenuDataHeader_1179b5
@@ -7980,27 +7987,27 @@
 	call MenuBoxCoord2Tile
 	callba ReloadMapPart
 	hlcoord 16, 8
-	ld de, String_1179c5
+	ld de, YessNoString_1179c5
 	call PlaceString
 	hlcoord 15, 10
-	ld a, $ed
+	ld a, "▶"
 	ld [hl], a
 	hlcoord 1, 14
-	ld de, String_1179cc
+	ld de, AskSavePasswordString
 	call PlaceString
 	ld a, $1
 	ld [wcd4e], a
-	jp Function117a0a
+	jp MobilePassword_IncrementJumptable
 
 Function1178e8: ; 1178e8 (45:78e8)
 	ld a, [hJoyPressed]
-	cp $2
-	jr z, .asm_117939
-	cp $1
-	jr z, .asm_117925
-	cp $80
-	jr z, .asm_11790f
-	cp $40
+	cp B_BUTTON
+	jr z, .b_button
+	cp A_BUTTON
+	jr z, .a_button
+	cp D_DOWN
+	jr z, .d_down
+	cp D_UP
 	ret nz
 	ld a, [wcd4e]
 	and a
@@ -8008,13 +8015,14 @@
 	dec a
 	ld [wcd4e], a
 	hlcoord 15, 8
-	ld a, $ed
+	ld a, "▶"
 	ld [hl], a
 	hlcoord 15, 10
-	ld a, $7f
+	ld a, " "
 	ld [hl], a
 	ret
-.asm_11790f
+
+.d_down
 	ld a, [wcd4e]
 	and a
 	ret nz
@@ -8021,30 +8029,32 @@
 	inc a
 	ld [wcd4e], a
 	hlcoord 15, 8
-	ld a, $7f
+	ld a, " "
 	ld [hl], a
 	hlcoord 15, 10
-	ld a, $ed
+	ld a, "▶"
 	ld [hl], a
 	ret
-.asm_117925
+
+.a_button
 	call PlayClickSFX
 	ld a, [wcd4e]
 	and a
-	jr nz, .asm_117939
+	jr nz, .b_button
 	call ExitMenu
 	ld a, $1
 	ld [wcd4f], a
-	jp Function117a0a
-.asm_117939
+	jp MobilePassword_IncrementJumptable
+
+.b_button
 	call ExitMenu
 	call ExitMenu
-	jp Function117a0a
+	jp MobilePassword_IncrementJumptable
 
 Function117942: ; 117942 (45:7942)
 	call SpeechTextBox
 	hlcoord 1, 14
-	ld de, String_1179f7
+	ld de, SavedPasswordString
 	call PlaceString
 	ld a, $1e
 	ld [wcd4e], a
@@ -8051,16 +8061,16 @@
 	ld a, $5
 	call GetSRAMBank
 	ld a, [wcd4f]
-	ld [$aa4b], a
+	ld [sMobileLoginPassword], a
 	ld hl, wc708
-	ld de, $aa4c
-	ld bc, $11
+	ld de, sMobileLoginPassword + 1
+	ld bc, LOGIN_PASSWORD_LENGTH
 	call CopyBytes
 	call CloseSRAM
 	ld a, [wcd4f]
 	and a
 	jr z, asm_11797e
-	call Function117a0a
+	call MobilePassword_IncrementJumptable
 
 Function117976: ; 117976 (45:7976)
 	ld hl, wcd4e
@@ -8079,11 +8089,11 @@
 	call MenuBoxCoord2Tile
 	callba ReloadMapPart
 	hlcoord 1, 14
-	ld de, String_1179e1
+	ld de, NotAPokemonPasswordString
 	call PlaceString
 	ld a, $1e
 	ld [wcd4e], a
-	call Function117a0a
+	call MobilePassword_IncrementJumptable
 
 Function1179a7: ; 1179a7 (45:79a7)
 	ld hl, wcd4e
@@ -8112,27 +8122,27 @@
 ; 1179c5
 
 
-String_1179c5: ; 1179c5
+YessNoString_1179c5: ; 1179c5
 	db   "はい"
 	next "いいえ@"
 ; 1179cc
 
-String_1179cc: ; 1179cc
-	db   "こ", $25, "パスワード", $1f, "ほぞんして"
+AskSavePasswordString: ; 1179cc
+	db   "こ%パスワード¯ほぞんして"
 	line "おきますか?@"
 ; 1179e1
 
-String_1179e1: ; 1179e1
-	db   "パスワード", $4a, "にゅうりょく"
+NotAPokemonPasswordString: ; 1179e1
+	db   "パスワード<PKMN>にゅうりょく"
 	line "されていません!@"
 ; 1179f7
 
-String_1179f7: ; 1179f7
-	db   "ログインパスワード", $1f, "ほぞん"
+SavedPasswordString: ; 1179f7
+	db   "ログインパスワード¯ほぞん"
 	line "しました@"
 ; 117a0a
 
-Function117a0a: ; 117a0a (45:7a0a)
+MobilePassword_IncrementJumptable: ; 117a0a (45:7a0a)
 	ld hl, wcd49
 	inc [hl]
 	ret
@@ -8192,7 +8202,7 @@
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_117ae2 ; 0x117ad5 $b
+	jr nz, .asm_117ae2
 	call Function117ae9
 	callba Function104000
 	jr Function117acd
@@ -8205,7 +8215,7 @@
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, $0
-	ld hl, Pointers117af8
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -8214,7 +8224,7 @@
 	ld l, a
 	jp [hl]
 
-Pointers117af8: ; 0x117af8
+.Jumptable: ; 0x117af8
 	dw Function117b06
 	dw Function117b14
 	dw Function117b28
@@ -8227,25 +8237,25 @@
 	callba Function172eb9
 	ld a, $10
 	ld [wcf64], a
-	jp Function117cdd
+	jp MobileStudium_JumptableIncrement
 
 Function117b14:
 	ld hl, wcf64
 	dec [hl]
 	ret nz
-	ld hl, Data117cbc
+	ld hl, MenuDataHeader_117cbc
 	call LoadMenuDataHeader
 	call MenuBox
 	call MenuBoxCoord2Tile
-	jp Function117cdd
+	jp MobileStudium_JumptableIncrement
 
 Function117b28:
 	ld hl, MobileStadiumEntryText
 	call PrintText
-	jp Function117cdd
+	jp MobileStudium_JumptableIncrement
 
 Function117b31:
-	ld hl, Data117cc4
+	ld hl, MenuDataHeader_117cc4
 	call LoadMenuDataHeader
 	call MenuBox
 	call MenuBoxCoord2Tile
@@ -8255,17 +8265,17 @@
 	hlcoord 15, 8
 	ld a, "▶"
 	ld [hl], a
-	jp Function117cdd
+	jp MobileStudium_JumptableIncrement
 
 Function117b4f:
 	ld a, [hJoyPressed]
-	cp $2
-	jr z, .asm_117ba4 ; 0x117b53 $4f
-	cp $1
-	jr z, .asm_117b8c ; 0x117b57 $33
-	cp $80
-	jr z, .asm_117b76 ; 0x117b5b $19
-	cp $40
+	cp B_BUTTON
+	jr z, .b_button
+	cp A_BUTTON
+	jr z, .a_button
+	cp D_DOWN
+	jr z, .d_down
+	cp D_UP
 	ret nz
 	ld a, [wcf64]
 	and a
@@ -8279,7 +8289,8 @@
 	ld a, " "
 	ld [hl], a
 	ret
-.asm_117b76
+
+.d_down
 	ld a, [wcf64]
 	and a
 	ret nz
@@ -8292,16 +8303,18 @@
 	ld a, "▶"
 	ld [hl], a
 	ret
-.asm_117b8c
+
+.a_button
 	call PlayClickSFX
 	ld a, [wcf64]
 	and a
-	jr nz, .asm_117ba4 ; 0x117b93 $f
+	jr nz, .b_button
 	call ExitMenu
 	call ExitMenu
 	callba ReloadMapPart
-	jp Function117cdd
-.asm_117ba4
+	jp MobileStudium_JumptableIncrement
+
+.b_button
 	call ExitMenu
 	call ExitMenu
 	callba ReloadMapPart
@@ -8317,9 +8330,9 @@
 	call ClearSprites
 	ld a, [wc300]
 	and a
-	jr z, .asm_117be7 ; 0x117bca $1b
+	jr z, .asm_117be7
 	cp $a
-	jr z, .asm_117be1 ; 0x117bce $11
+	jr z, .asm_117be1
 .asm_117bd0
 	ld a, $2
 	ld [wc303], a
@@ -8338,14 +8351,14 @@
 	ld [rSVBK], a
 	ld a, [wcd89]
 	and $1
-	jr nz, .asm_117c16 ; 0x117bf3 $21
-	ld a, [wd000]
+	jr nz, .asm_117c16
+	ld a, [w3_d000]
 	cp $fe
-	jr nz, .asm_117c16 ; 0x117bfa $1a
-	ld a, [wd001]
+	jr nz, .asm_117c16
+	ld a, [w3_d001]
 	cp $f
-	jr nz, .asm_117c16 ; 0x117c01 $13
-	ld hl, $e000 - 20
+	jr nz, .asm_117c16
+	ld hl, w3_dfec
 	ld de, wcd69
 	ld c, $10
 .asm_117c0b
@@ -8352,17 +8365,17 @@
 	ld a, [de]
 	inc de
 	cp [hl]
-	jr nz, .asm_117c16 ; 0x117c0e $6
+	jr nz, .asm_117c16
 	inc hl
 	dec c
-	jr nz, .asm_117c0b ; 0x117c12 $f7
-	jr .asm_117c20 ; 0x117c14 $a
+	jr nz, .asm_117c0b
+	jr .asm_117c20
 .asm_117c16
 	pop af
 	ld [rSVBK], a
 	ld a, $d3
 	ld [wc300], a
-	jr .asm_117bd0 ; 0x117c1e $b0
+	jr .asm_117bd0
 .asm_117c20
 	pop af
 	ld [rSVBK], a
@@ -8373,7 +8386,7 @@
 	ld [rSVBK], a
 	ld a, $7
 	call GetSRAMBank
-	ld hl, wd002
+	ld hl, w3_d002
 	ld de, $b000
 	ld bc, $1000
 	call CopyBytes
@@ -8380,10 +8393,10 @@
 	call CloseSRAM
 	pop af
 	ld [rSVBK], a
-	jp Function117cdd
+	jp MobileStudium_JumptableIncrement
 
 Function117c4a:
-	ld hl, Data117cbc
+	ld hl, MenuDataHeader_117cbc
 	call LoadMenuDataHeader
 	call MenuBox
 	call MenuBoxCoord2Tile
@@ -8394,19 +8407,19 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, wd000
-	ld de, $0008
-	ld c, $8
-.asm_117c71
+	ld hl, UnknBGPals
+	ld de, 1 palettes
+	ld c, 8
+.loop
 	push hl
-	ld a, $ff
+	ld a, $7fff % $100
 	ld [hli], a
-	ld a, " "
+	ld a, $7fff / $100
 	ld [hl], a
 	pop hl
 	add hl, de
 	dec c
-	jr nz, .asm_117c71 ; 0x117c7b $f4
+	jr nz, .loop
 	call RotateThreePalettesRight
 	pop af
 	ld [rSVBK], a
@@ -8432,7 +8445,7 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_117c97 ; 0x117ca2 $f3
+	jr nz, .asm_117c97
 	ld a, l
 	ld [wcd83], a
 	ld a, h
@@ -8439,21 +8452,28 @@
 	ld [wcd84], a
 	ld hl, $bfea
 	ld de, wcd69
-	ld bc, $0010
+	ld bc, $10
 	call CopyBytes
 	call CloseSRAM
 	ret
 
-Data117cbc: ; 0x117cbc
-	db $40, $0c, $00, $11, $13, $00, $00, $00
+MenuDataHeader_117cbc: ; 0x117cbc
+	db $40    ; flags
+	db 12,  0 ; start coords
+	db 17, 19 ; end coords
+	dw NULL   ; menu data 2
+	db 0      ; default option
 
-Data117cc4: ; 0x117cc4
-	db $40, $07, $0e, $0b, $13, $00, $00, $00 ; XXX what is this
+MenuDataHeader_117cc4: ; 0x117cc4
+	db $40    ; flags
+	db  7, 14 ; start coords
+	db 11, 19 ; end coords
+	dw NULL   ; menu data 2
+	db 0      ; default item
 
 YesNo117ccc: ; 0x117ccc
 	db   "はい"
-	next "いいえ"
-	db   "@"
+	next "いいえ@"
 
 MobileStadiumEntryText: ; 0x117cd3
 	text_jump _MobileStadiumEntryText
@@ -8463,9 +8483,7 @@
 	text_jump _MobileStadiumSuccessText
 	db "@"
 
-Function117cdd: ; 0x117cdd
+MobileStudium_JumptableIncrement: ; 0x117cdd
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
-
-
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -21,16 +21,16 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
-.asm_118024
+.loop
 	call JoyTextDelay
 	call Function118473
 	ld a, [wcf66]
 	cp $1b
-	jr c, .asm_118037
+	jr c, .skip
 	ld a, [wcd34]
 	ld [wcf66], a
 
-.asm_118037
+.skip
 	call Function1184a5
 	call Function11a8fa
 	callba Function115dd3
@@ -39,7 +39,7 @@
 	ld a, [wcf66]
 	ld hl, wcd33
 	cp [hl]
-	jr nz, .asm_118024
+	jr nz, .loop
 	pop af
 	ld [rSVBK], a
 	call Function118452
@@ -142,7 +142,6 @@
 Function118121: ; 118121
 	xor a
 	ld [wcd38], a
-
 Function118125: ; 118125
 	call Function1183cb
 	ld a, $3
@@ -155,16 +154,15 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
-.asm_11813e
+.loop
 	call JoyTextDelay
 	call Function118473
 	ld a, [wcf66]
 	cp $f
-	jr c, .asm_118151
+	jr c, .skip
 	ld a, [wcd34]
 	ld [wcf66], a
-
-.asm_118151
+.skip
 	call Function11854d
 	call Function11a8fa
 	callba Function115dd3
@@ -173,7 +171,7 @@
 	ld a, [wcf66]
 	ld hl, wcd33
 	cp [hl]
-	jr nz, .asm_11813e
+	jr nz, .loop
 	xor a
 	ld [w3_d000], a
 	pop af
@@ -471,7 +469,7 @@
 	ld [wcd66], a
 	ld [wcd67], a
 	ld [wcd68], a
-	ld [wc314 + 6], a
+	ld [$c31a], a
 	ld [wcd89], a
 	ld [wcd8a], a
 	ld [wcd8b], a
@@ -486,10 +484,10 @@
 	ld a, $f
 	ld [rIE], a
 	ld a, $1
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld [hMobile], a
 	ei
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
 	callba Function115d99
 	callba Function11615a
@@ -516,7 +514,7 @@
 Function118452: ; 118452
 	di
 	xor a
-	ld [hFFC9], a
+	ld [hMobileReceive], a
 	ld [hMobile], a
 	ld [hVBlank], a
 	call NormalSpeed
@@ -539,7 +537,7 @@
 	ld a, [wcd66]
 	inc a
 	ld [wcd66], a
-	cp $3c
+	cp 60
 	ret nz
 	xor a
 	ld [wcd66], a
@@ -546,18 +544,18 @@
 	ld a, [wcd67]
 	inc a
 	ld [wcd67], a
-	cp $3c
+	cp 60
 	ret nz
 	ld a, [wcd68]
 	inc a
 	ld [wcd68], a
-	cp $63
-	jr z, .asm_1184a0
+	cp 99
+	jr z, .ninety_nine
 	xor a
 	ld [wcd67], a
 	ret
 
-.asm_1184a0
+.ninety_nine
 	xor a
 	ld [wcd65], a
 	ret
@@ -564,20 +562,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 1184b4
 
-Jumptable_1184b4: ; 1184b4
+.Jumptable: ; 1184b4
 	dw Function11886e
 	dw Function118880
 	dw Function11878d
@@ -609,20 +597,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 1184fb
 
-Jumptable_1184fb: ; 1184fb
+.Jumptable: ; 1184fb
 	dw Function11886e
 	dw Function118880
 	dw Function11878d
@@ -667,20 +645,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 11855c
 
-Jumptable_11855c: ; 11855c
+.Jumptable: ; 11855c
 	dw Function118922
 	dw Function118936
 	dw Function118982
@@ -700,20 +668,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 11858b
 
-Jumptable_11858b: ; 11858b
+.Jumptable: ; 11858b
 	dw Function11886e
 	dw Function118880
 	dw Function11878d
@@ -745,20 +703,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 1185d2
 
-Jumptable_1185d2: ; 1185d2
+.Jumptable: ; 1185d2
 	dw Function11886e
 	dw Function118880
 	dw Function11878d
@@ -803,20 +751,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 118633
 
-Jumptable_118633: ; 118633
+.Jumptable: ; 118633
 	dw Function118866
 	dw Function118880
 	dw Function11878d
@@ -851,20 +789,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 118680
 
-Jumptable_118680: ; 118680
+.Jumptable: ; 118680
 	dw Function118866
 	dw Function118880
 	dw Function11878d
@@ -893,20 +821,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 1186c1
 
-Jumptable_1186c1: ; 1186c1
+.Jumptable: ; 1186c1
 	dw Function118866
 	dw Function118880
 	dw Function11878d
@@ -936,20 +854,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 118704 (46:4704)
 
-Jumptable_118704: ; 118704 (46:4704)
+.Jumptable: ; 118704 (46:4704)
 	dw Function11886a
 	dw Function118880
 	dw Function11878d
@@ -986,20 +894,10 @@
 ; 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]
+	jumptable .Jumptable, wcf66
 ; 118755
 
-Jumptable_118755: ; 118755
+.Jumptable: ; 118755
 	dw Function11886e
 	dw Function118880
 	dw Function11878d
@@ -1060,7 +958,7 @@
 	ld a, $a
 	call Function3e32
 	ld a, [wc3f0]
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld a, [wcd34]
 	ld [wcf66], a
 	ret
@@ -1071,7 +969,7 @@
 	set 0, [hl]
 	ld a, $6
 	ld [rSVBK], a
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	ld a, [hl]
 	sla a
@@ -1104,13 +1002,13 @@
 	ld a, $a
 	call Function3e32
 	ld a, [wc3f0]
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld a, [wcd34]
 	ld [wcf66], a
 	ret
 
 Function118821: ; 118821 (46:4821)
-	ld a, [wc314 + 5]
+	ld a, [$c319]
 	cp $3
 	jr c, .asm_11884a
 	cp $4
@@ -1123,7 +1021,7 @@
 	ld a, $a
 	ld [wc300], a
 	ld a, [wc3f0]
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld a, [wcd34]
 	ld [wcf66], a
 	scf
@@ -1202,7 +1100,7 @@
 ; 1188b0
 
 Function1188b0: ; 1188b0 (46:48b0)
-	ld de, wc314 + 48 + 2
+	ld de, $c346
 	ld a, $c
 	jp Function119e2b
 
@@ -1234,7 +1132,7 @@
 	jp Function119e2b
 
 Function1188e7: ; 1188e7 (46:48e7)
-	ld de, wc314 + 48 + 2
+	ld de, $c346
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$aa4a]
@@ -1254,7 +1152,7 @@
 
 Function118903: ; 118903 (46:4903)
 	ld a, [wc3f0]
-	ld [wc314 + 5], a
+	ld [$c319], a
 	ld c, $1
 	callba Function115e18
 	ld a, $8
@@ -1283,7 +1181,7 @@
 	call Function119e2e
 
 Function118936:
-	ld a, [wc314 + 6]
+	ld a, [$c31a]
 	and a
 	ret nz
 	ld hl, MenuDataHeader_119cf7
@@ -1295,13 +1193,13 @@
 	ld a, $40
 	or [hl]
 	ld [hl], a
-	call Function3200
+	call WaitBGMap2
 	ld a, $1
 	ld [wcd4f], a
 	ld a, $1
 	ld [rSVBK], a
 	ld a, [StatusFlags]
-	bit 6, a
+	bit 6, a ; Hall Of Fame
 	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
@@ -1416,7 +1314,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	call WriteBackup
+	call CloseWindow
 	pop af
 	ld [rSVBK], a
 	ld a, [wcd38]
@@ -1429,7 +1327,7 @@
 
 .asm_118a30
 	ld a, [wcd4f]
-	ld [wd000 + $800], a
+	ld [w3_d800], a
 	jp Function119e2e
 
 .asm_118a39
@@ -1440,7 +1338,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	call WriteBackup
+	call CloseWindow
 	pop af
 	ld [rSVBK], a
 	ld a, $7
@@ -1466,7 +1364,7 @@
 	ld de, wcc60
 	ld bc, $80
 	call CopyBytes
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jp Function118b10
 ; 118a7a
@@ -1476,7 +1374,7 @@
 	ld de, wcc60
 	ld bc, $80
 	call CopyBytes
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jp Function118b10
 ; 118a8f
@@ -1486,7 +1384,7 @@
 	ld de, wcc60
 	ld bc, $80
 	call CopyBytes
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jp Function118b10
 ; 118aa4
@@ -1498,7 +1396,7 @@
 	call CopyBytes
 	ld a, $5
 	ld [rSVBK], a
-	ld de, LYOverrides
+	ld de, w3_d100
 	ld bc, $e00
 	jr Function118b10
 ; 118abc
@@ -1508,7 +1406,7 @@
 	ld de, wcc60
 	ld bc, $80
 	call CopyBytes
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jr Function118b10
 ; 118ad0 (46:4ad0)
@@ -1518,7 +1416,7 @@
 	ld de, wcc60
 	ld bc, $80
 	call CopyBytes
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jr Function118b10
 
@@ -1566,7 +1464,7 @@
 	jp Function119e2b
 
 Function118b24: ; 118b24 (46:4b24)
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld a, $8
 	ld [hli], a
 	ld a, $c7
@@ -1579,7 +1477,7 @@
 	call Function119ec2
 	ld a, $80
 	ld [wcd89], a
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ret
 ; 118b42 (46:4b42)
 
@@ -1627,9 +1525,8 @@
 	jr nz, .asm_118b8c
 	dec hl
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ret
 ; 118b9a
 
@@ -1663,7 +1560,8 @@
 
 
 Function118d35: ; 118d35
-	ld hl, LYOverridesBackup
+; unreferenced
+	ld hl, $d200
 	ld a, [wcd38]
 	and a
 	jr nz, .asm_118d6e
@@ -1739,7 +1637,7 @@
 	ld [wcd3b], a
 
 .asm_118db7
-	ld hl, $d800
+	ld hl, w3_d800
 	ld a, $8
 	ld [hli], a
 	ld a, $c6
@@ -1760,7 +1658,7 @@
 	call Function119ec2
 	ld a, $40
 	ld [wcd89], a
-	ld hl, $d800
+	ld hl, w3_d800
 	ld de, $de00
 	ld bc, $0200
 	ld a, $2c
@@ -1829,9 +1727,8 @@
 	ld a, [hld]
 	cp $2f
 	jr nz, .asm_118e3e
-rept 2
 	inc hl
-endr
+	inc hl
 	ld de, wcd85
 	ld c, $4
 .asm_118e4a
@@ -1894,7 +1791,7 @@
 	ld de, wcc60
 	call Function1191ad
 	ret c
-	ld de, $d800
+	ld de, w3_d800
 	ld bc, $0800
 	jp Function118b10
 ; 118eb0
@@ -1914,22 +1811,22 @@
 	call Function118440
 	call SpeechTextBox
 	ld hl, $d80e
-	ld de, wc314 + 12
+	ld de, $c320
 	ld bc, $0026
 	call CopyBytes
 	xor a
-	ld [wc314 + 11], a
+	ld [$c31f], a
 	ld a, $20
-	ld [wc314 + 7], a
+	ld [$c31b], a
 	ld a, $c3
-	ld [wc314 + 8], a
+	ld [$c31c], a
 	hlcoord 1, 14
 	ld a, l
-	ld [wc314 + 9], a
+	ld [$c31d], a
 	ld a, h
-	ld [wc314 + 10], a
+	ld [$c31e], a
 	ld a, $2
-	ld [wc314 + 6], a
+	ld [$c31a], a
 	ld a, $1d
 	ld [wcd3c], a
 	ld a, $24
@@ -1957,11 +1854,11 @@
 	ret c
 	ld a, [wcc60]
 	and a
-	jr z, .asm_118f32
-	ld hl, UnknownText_0x11aa13
+	jr z, .DontSendSaveFile
+	ld hl, Text_SaveFileWillBeSent
 	call Function11a9c0
 
-.asm_118f32
+.DontSendSaveFile
 	ld a, [wcd57]
 	ld l, a
 	ld a, [wcd58]
@@ -2002,7 +1899,7 @@
 	ld a, [wcc60]
 	and a
 	jr z, .asm_118fba
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld a, $c608 % $100
 	ld [hli], a
 	ld a, $c608 / $100
@@ -2023,7 +1920,7 @@
 	call Function119ec2
 	ld a, $40
 	ld [wcd89], a
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld de, $de00
 	ld bc, $0200
 	ld a, $2c
@@ -2056,11 +1953,11 @@
 	ld a, [wcc60]
 	and a
 	jr z, .asm_118ff2
-	ld hl, UnknownText_0x11aa2c
+	ld hl, Text_SentSaveFileReadingNews
 	jr .asm_118ff5
 
 .asm_118ff2
-	ld hl, UnknownText_0x11aa4b
+	ld hl, Text_ReadingNews
 
 .asm_118ff5
 	call Function11a9c0
@@ -2067,7 +1964,7 @@
 	jr Function119009
 
 .asm_118ffa
-	ld hl, UnknownText_0x11aa4b
+	ld hl, Text_ReadingNews
 	call Function11a9c0
 	call Function119e2e
 	call Function119e2e
@@ -2083,7 +1980,7 @@
 	ld de, wcc60
 	call Function1191ad
 	ret c
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld a, $8
 	ld [hli], a
 	ld a, $c6
@@ -2104,8 +2001,8 @@
 	call Function119ec2
 	ld a, $40
 	ld [wcd89], a
-	ld hl, wc314 + 48 + 2
-	ld de, UnknBGPals
+	ld hl, $c346
+	ld de, w3_d000
 	ld bc, $1000
 	ld a, $2c
 	jp Function119e2b
@@ -2119,9 +2016,9 @@
 	ld e, a
 	ld a, [wcd50]
 	ld d, a
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
 	call Function119192
 	ret c
@@ -2131,9 +2028,9 @@
 	ld a, $6
 	ld [rSVBK], a
 	ld hl, wd002
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
 	call Function119192
 	ret c
@@ -2178,7 +2075,7 @@
 	ld de, wcc60
 	call Function1191ad
 	ret c
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jp Function118b10
 ; 1190ec
@@ -2198,9 +2095,9 @@
 	call CloseSRAM
 	ld a, $6
 	call GetSRAMBank
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
 	ld hl, wd002
 	ld de, $a000
@@ -2211,9 +2108,9 @@
 	jr z, .asm_11913e
 	ld a, $6
 	ld [rSVBK], a
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
 	ld hl, wd002
 	call Function119192
@@ -2223,7 +2120,7 @@
 	ld a, $3
 	ld [rSVBK], a
 	call CloseSRAM
-	ld hl, UnknownText_0x11aa5a
+	ld hl, Text_ReceivedNews
 	call Function11a9c0
 	jp Function119e2e
 ; 11914e
@@ -2330,7 +2227,7 @@
 ; 1191d3
 
 Function1191d3: ; 1191d3
-	ld hl, wd102
+	ld hl, w3_d100 + 2
 	ld a, l
 	ld [wcd53], a
 	ld a, h
@@ -2631,7 +2528,7 @@
 	ld a, $8
 	ld [wcd3c], a
 	call Function119ed8
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld a, wd000 % $100
 	ld [hli], a
 	ld a, wd000 / $100
@@ -2652,7 +2549,7 @@
 	call Function119ec2
 	ld a, $40
 	ld [wcd89], a
-	ld hl, wc314 + 48 + 2
+	ld hl, $c346
 	ld de, $de00
 	ld bc, $0200
 	ld a, $2c
@@ -2678,7 +2575,7 @@
 	ld a, $8
 	ld [wcd3c], a
 	call Function119ed8
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	jp Function118b10
 ; 119413
@@ -2686,13 +2583,12 @@
 Function119413: ; 119413
 	ld a, $6
 	call GetSRAMBank
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
-rept 2
 	dec bc
-endr
+	dec bc
 	ld hl, wd002
 	ld a, [hli]
 	ld e, a
@@ -2707,7 +2603,7 @@
 	ld [rSVBK], a
 	ld a, [wd000]
 	ld c, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld b, a
 	ld hl, wd002
 	call Function119192
@@ -2882,9 +2778,8 @@
 .asm_119552
 	inc hl
 .asm_119553
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .asm_11955b
 .asm_119557
 	ld de, $14
@@ -3043,7 +2938,7 @@
 	ld [wcd3c], a
 	call Function119ed8
 	call Function118b24
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	ld a, $2a
 	jp Function119e2b
@@ -3229,9 +3124,8 @@
 	ld a, [hld]
 	cp $58
 	jr z, .asm_11975b
-rept 2
 	inc hl
-endr
+	inc hl
 	ld a, d
 	dec a
 	jr z, .asm_11978e
@@ -3338,7 +3232,7 @@
 	xor a
 	ld [de], a
 	call Function118b24
-	ld de, UnknBGPals
+	ld de, w3_d000
 	ld bc, $1000
 	ld a, $2a
 	jp Function119e2b
@@ -3347,7 +3241,7 @@
 Function119800: ; 119800
 	ld a, $fd
 	ld [$c6d0], a
-	ld [wc702], a
+	ld [wOTTrademonSpecies], a
 	ld a, [wcd81]
 	ld [wc74e], a
 	ld a, [wJumptableIndex]
@@ -3397,7 +3291,7 @@
 	ld a, $1
 	ld [rSVBK], a
 	call FadeToMenu
-	callba Function108000
+	callba MobileTradeAnimation_SendGivemonToGTS
 	call Function11a9ce
 	call RestartMapMusic
 	ld a, $3
@@ -3431,7 +3325,7 @@
 	ld a, $1
 	ld [rSVBK], a
 	call FadeToMenu
-	callba Function108012
+	callba MobileTradeAnimation_RetrieveGivemonFromGTS
 	call Function11a9ce
 	call RestartMapMusic
 	ld a, $3
@@ -3449,17 +3343,17 @@
 ; 1198ee
 
 Function1198ee: ; 1198ee
-	ld hl, UnknownText_0x11aab2
+	ld hl, Text_RegisteringRecord
 	call Function11a9c0
 	call Function119e2e
 
 Function1198f7:
-	ld a, [wc314 + 6]
+	ld a, [$c31a]
 	and a
 	ret nz
 	ld hl, $c608 + 2
 	call Function119940
-	ld hl, $d800
+	ld hl, w3_d800
 	ld a, $c608 % $100
 	ld [hli], a
 	ld a, $c608 / $100
@@ -3480,7 +3374,7 @@
 	call Function119ec2
 	ld a, $40
 	ld [wcd89], a
-	ld hl, $d800
+	ld hl, w3_d800
 	ld de, $de00
 	ld bc, $0200
 	ld a, $2c
@@ -3536,15 +3430,15 @@
 	ld [wcf64], a
 	xor a
 	ld [wcf65], a
-	ld [StringBuffer2 + 10], a
-	ld de, UnknBGPals
+	ld [w3_d090], a
+	ld de, w3_d000
 	ld a, $20
 	jp Function119e2b
 ; 119987
 
 Function119987: ; 119987
-	ld hl, wd001
-	ld a, [UnknBGPals]
+	ld hl, w3_d000 + 1
+	ld a, [w3_d000]
 	or [hl]
 	jr z, .asm_1199a0
 	ld a, [wcf64]
@@ -3556,7 +3450,7 @@
 	jp Function119e2b
 
 .asm_1199a0
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	and a
 	jr z, .asm_1199ae
 	ld a, $16
@@ -3590,7 +3484,7 @@
 	ld l, a
 	ld a, [wcf65]
 	ld h, a
-	ld de, LYOverrides
+	ld de, w3_d100
 	ld bc, $0700
 	ld a, $28
 	jp Function119e2b
@@ -3598,49 +3492,49 @@
 
 Function1199e2: ; 1199e2
 	ld c, $c
-	ld de, Unknown_119e33
+	ld de, XGameCodePrefix
 	call Function119e4f
 	jp c, Function119ac9
 	ld a, c
 	cp $1
 	jp nz, Function119ac9
-	ld hl, $d880
-	ld bc, Unknown_119af1
-.asm_1199f9
+	ld hl, w3_d880
+	ld bc, XGameCode
+.loop
 	ld a, [bc]
 	and a
-	jr z, .asm_119a05
+	jr z, .game_result_prefix
 	cp [hl]
 	jp nz, Function119ac9
 	inc bc
 	inc hl
-	jr .asm_1199f9
+	jr .loop
 
-.asm_119a05
+.game_result_prefix
 	ld c, $17
-	ld de, Unknown_119e40
+	ld de, XGameResultPrefix
 	call Function119e4f
 	jp c, .asm_119aa7
 	ld a, c
 	cp $1
 	jp nz, .asm_119aa7
-	ld a, [wd000 + $880]
+	ld a, [w3_d880]
 	cp $31
 	jp nz, .asm_119aa7
-	ld a, [wd000 + $881]
+	ld a, [w3_d881]
 	cp $20
 	jp nz, .asm_119aa7
-	ld a, [wd000 + $88a]
+	ld a, [w3_d88a]
 	cp $20
 	jp nz, .asm_119aa7
-	ld a, [wd000 + $894]
+	ld a, [w3_d894]
 	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 [w3_d8a0], a
+	ld [w3_d8a1], a
+	ld [w3_d8a2], a
+	ld [w3_d8a3], a
 	ld hl, $d8a0
 	ld bc, $d889
 	call Function119e98
@@ -3662,10 +3556,10 @@
 	cp [hl]
 	jr nz, Function119ac9
 	xor a
-	ld [wd000 + $8a0], a
-	ld [wd000 + $8a1], a
-	ld [wd000 + $8a2], a
-	ld [wd000 + $8a3], a
+	ld [w3_d8a0], a
+	ld [w3_d8a1], a
+	ld [w3_d8a2], a
+	ld [w3_d8a3], a
 	ld hl, $d8a0
 	ld bc, $d88e
 	call Function119e98
@@ -3694,27 +3588,27 @@
 	jp Function119b45
 
 .asm_119aaf
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	and a
 	jr nz, .asm_119aa7
-	ld a, [wd000 + $895]
+	ld a, [w3_d895]
 	sub $30
-	ld [StringBuffer2 + 10], a
+	ld [w3_d090], a
 	ld a, [wcf64]
-	ld [StringBuffer2 + 11], a
+	ld [w3_d090 + 1], a
 	ld a, [wcf65]
-	ld [StringBuffer2 + 12], a
+	ld [w3_d090 + 2], a
 
 Function119ac9:
-	ld a, [UnknBGPals]
+	ld a, [w3_d000]
 	ld l, a
-	ld a, [wd001]
+	ld a, [w3_d000 + 1]
 	ld h, a
 	dec hl
 	ld a, l
-	ld [UnknBGPals], a
+	ld [w3_d000], a
 	ld a, h
-	ld [wd001], a
+	ld [w3_d000 + 1], a
 	ld a, [wcf64]
 	ld l, a
 	ld a, [wcf65]
@@ -3729,9 +3623,10 @@
 	ret
 ; 119af1
 
-Unknown_119af1:
-	INCBIN "data/mobile/x-game-code.txt"
-	INCBIN "data/mobile/x-game-result.txt"
+XGameCode:
+INCBIN "data/mobile/x-game-code.txt"
+XGameResult:
+INCBIN "data/mobile/x-game-result.txt"
 ; 119b0d
 
 Function119b0d: ; 119b0d
@@ -3738,7 +3633,7 @@
 	ld a, $8
 	ld [wcd3c], a
 	call Function119ed8
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	cp $1
 	jr z, .asm_119b23
 	ld a, $19
@@ -3748,19 +3643,19 @@
 .asm_119b23
 	ld a, $10
 	ld [wcd89], a
-	ld a, [StringBuffer2 + 11]
+	ld a, [w3_d090 + 1]
 	ld l, a
-	ld a, [StringBuffer2 + 12]
+	ld a, [w3_d090 + 2]
 	ld h, a
-	ld de, LYOverrides
+	ld de, w3_d100
 	ld bc, $0700
 	ld a, $24
 	jp Function119e2b
 
 Function119b3b:
-	ld a, [StringBuffer2 + 11]
+	ld a, [w3_d090 + 1]
 	ld l, a
-	ld a, [StringBuffer2 + 12]
+	ld a, [w3_d090 + 2]
 	ld h, a
 	jr asm_119b4d
 
@@ -3776,7 +3671,7 @@
 ; 119b52
 
 Function119b52: ; 119b52
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	cp $1
 	jr nz, .asm_119b66
 	ld a, $5
@@ -3791,19 +3686,19 @@
 ; 119b6b
 
 Function119b6b: ; 119b6b
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	cp $1
 	jr z, .asm_119b75
 	jp Function119e2e
 
 .asm_119b75
-	ld a, [LYOverrides]
+	ld a, [w3_d100]
 	ld b, a
-	ld a, [wd101]
+	ld a, [w3_d100 + 1]
 	or b
 	jr z, .asm_119be3
-	ld hl, $d800
-	ld de, wd102
+	ld hl, w3_d800
+	ld de, w3_d100 + 2
 .asm_119b85
 	ld a, [de]
 	inc de
@@ -3813,9 +3708,8 @@
 	ld a, [de]
 	cp $d
 	jr nz, .asm_119b85
-rept 2
 	inc de
-endr
+	inc de
 .asm_119b93
 	ld a, [de]
 	inc de
@@ -3887,7 +3781,7 @@
 	ld [$a800], a
 	call CloseSRAM
 	xor a
-	ld [StringBuffer2 + 10], a
+	ld [w3_d090], a
 	ret
 
 .asm_119bfa
@@ -3896,10 +3790,10 @@
 	cp $d
 	jr nz, .asm_119b93
 	ld a, l
-	cp (wd000 + $800 + $69) % $100
+	cp (w3_d869) % $100
 	jr nz, .asm_119be3
 	ld a, h
-	cp (wd000 + $800 + $69) / $100
+	cp (w3_d869) / $100
 	jr nz, .asm_119be3
 	ld a, $5
 	call GetSRAMBank
@@ -3907,7 +3801,7 @@
 	ld [$b090], a
 	ld a, [wcf65]
 	ld [$b091], a
-	ld hl, $d800
+	ld hl, w3_d800
 	ld de, $b023
 	ld bc, $0069
 	call CopyBytes
@@ -3914,7 +3808,7 @@
 	ld a, $3
 	ld [$a800], a
 	call CloseSRAM
-	ld hl, $d800
+	ld hl, w3_d800
 	ld de, $c608
 	ld bc, $0069
 	call CopyBytes
@@ -3953,7 +3847,7 @@
 	ld [$a800], a
 	call CloseSRAM
 	xor a
-	ld [StringBuffer2 + 10], a
+	ld [w3_d090], a
 	scf
 	ret
 
@@ -3989,18 +3883,18 @@
 ; 119c97
 
 Function119c97: ; 119c97
-	ld hl, UnknownText_0x11ab0f
+	ld hl, Text_UberRestriction
 	call Function11a9c0
 	call Function119e2e
 	jr Function119cab
 
 Function119ca2:
-	ld hl, UnknownText_0x11aaf0
+	ld hl, Text_PartyMonTopsThisLevel
 	call Function11a9c0
 	call Function119e2e
 
 Function119cab:
-	ld a, [wc314 + 6]
+	ld a, [$c31a]
 	and a
 	ret nz
 	ld a, $80
@@ -4022,15 +3916,15 @@
 	jr z, .asm_119cd1
 	dec a
 	jr z, .asm_119cd6
-	ld hl, UnknownText_0x11aa6a
+	ld hl, Text_QuitReadingNews
 	jr .asm_119cd9
 
 .asm_119cd1
-	ld hl, UnknownText_0x11ab4a
+	ld hl, Text_CancelBattleRoomChallenge
 	jr .asm_119cd9
 
 .asm_119cd6
-	ld hl, UnknownText_0x11ab6e
+	ld hl, Text_ExitGymLeaderHonorRoll
 
 .asm_119cd9
 	call Function11a9c0
@@ -4037,7 +3931,7 @@
 	call Function119e2e
 
 Function119cdf:
-	ld a, [wc314 + 6]
+	ld a, [$c31a]
 	and a
 	ret nz
 	ld a, $f
@@ -4108,7 +4002,7 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld de, PartyMon1Level
 	ld a, [PartyCount]
-.asm_119daf
+.party_loop
 	push af
 	ld a, [de]
 	push hl
@@ -4119,17 +4013,18 @@
 	pop de
 	pop hl
 	cp [hl]
-	jr z, .asm_119dbd
-	jr nc, .asm_119dc6
-.asm_119dbd
+	jr z, .equal
+	jr nc, .exceeds
+.equal
 	pop af
 	dec a
-	jr nz, .asm_119daf
+	jr nz, .party_loop
 	pop af
 	ld [rSVBK], a
 	and a
 	ret
-.asm_119dc6
+
+.exceeds
 	pop af
 	ld a, $4
 	ld [wcf66], a
@@ -4143,7 +4038,7 @@
 	push af
 	ld a, [wcd4f]
 	cp 70 / 10
-	jr nc, .asm_119e08
+	jr nc, .level_70_or_more
 	ld a, $1
 	ld [rSVBK], a
 	ld hl, PartyMon1Level
@@ -4150,33 +4045,34 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld de, PartySpecies
 	ld a, [PartyCount]
-.asm_119deb
+.loop
 	push af
 	ld a, [de]
 	cp MEWTWO
-	jr z, .asm_119dfd
+	jr z, .uber
 	cp MEW
-	jr z, .asm_119dfd
+	jr z, .uber
 	cp LUGIA
-	jr c, .asm_119e02
+	jr c, .next
 	cp NUM_POKEMON + 1
-	jr nc, .asm_119e02
-.asm_119dfd
+	jr nc, .next
+.uber
 	ld a, [hl]
 	cp 70
-	jr c, .asm_119e0d
-.asm_119e02
+	jr c, .uber_under_70
+.next
 	add hl, bc
 	inc de
 	pop af
 	dec a
-	jr nz, .asm_119deb
-.asm_119e08
+	jr nz, .loop
+.level_70_or_more
 	pop af
 	ld [rSVBK], a
 	and a
 	ret
-.asm_119e0d
+
+.uber_under_70
 	pop af
 	ld a, [de]
 	ld [wd265], a
@@ -4202,72 +4098,76 @@
 	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"
+XGameCodePrefix: ; 119e33
+INCBIN "data/mobile/x-game-code-prefix.txt"
+XGameCodePrefixEnd:
+;119e40
+
+XGameResultPrefix: ; 119e40
+INCBIN "data/mobile/x-game-result-prefix.txt"
+XGameResultPrefixEnd:
 ; 119e4f
 
 Function119e4f: ; 119e4f
 	push bc
-	ld hl, LYOverrides
+	ld hl, w3_d100
 	ld a, [hli]
 	ld c, a
 	ld a, [hli]
 	ld b, a
-.asm_119e57
+.loop
 	ld a, [de]
 	cp [hl]
-	jr z, .asm_119e64
-.asm_119e5b
+	jr z, .found_equality
+.next
 	inc hl
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_119e57
-.asm_119e61
+	jr nz, .loop
+.return_carry
 	pop bc
 	scf
 	ret
 
-.asm_119e64
+.found_equality
 	push de
-.asm_119e65
+.loop2
 	ld a, [de]
 	inc de
 	cp "\n"
-	jr z, .asm_119e7a
+	jr z, .newline
 	cp [hl]
-	jr nz, .asm_119e77
+	jr nz, .unequal
 	inc hl
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_119e65
+	jr nz, .loop2
 	pop de
-	jr .asm_119e61
+	jr .return_carry
 
-.asm_119e77
+.unequal
 	pop de
-	jr .asm_119e5b
+	jr .next
 
-.asm_119e7a
+.newline
 	pop de
 	pop bc
 	inc hl
-	ld de, $d880
-.asm_119e80
+	ld de, w3_d880
+.loop3
 	ld a, [hli]
 	ld [de], a
 	inc de
 	cp $d
-	jr z, .asm_119e8c
+	jr z, .finish
 	dec c
-	jr nz, .asm_119e80
+	jr nz, .loop3
 	scf
 	ret
 
-.asm_119e8c
+.finish
 	and a
 	ret
 ; 119e8e
@@ -4274,11 +4174,11 @@
 
 Function119e8e: ; 119e8e
 	cp $60
-	jr c, .asm_119e95
+	jr c, .less_than_0x60
 	sub $57
 	ret
 
-.asm_119e95
+.less_than_0x60
 	sub $30
 	ret
 ; 119e98
@@ -4285,7 +4185,7 @@
 
 Function119e98: ; 119e98
 	ld a, $2
-.asm_119e9a
+.loop
 	push af
 	ld a, [bc]
 	dec bc
@@ -4305,7 +4205,7 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_119e9a
+	jr nz, .loop
 	ret
 ; 119eb4
 
@@ -4313,12 +4213,12 @@
 	xor a
 	ld [wc3cc], a
 	ld de, wc3ac
-.asm_119ebb
+.loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	and a
-	jr nz, .asm_119ebb
+	jr nz, .loop
 	ret
 
 Function119ec2: ; 119ec2 (46:5ec2)
@@ -4325,14 +4225,14 @@
 	ld a, $5
 	call GetSRAMBank
 	xor a
-	ld [$aa5c], a
-	ld de, $aa4c
-.asm_119ece
+	ld [sMobileLoginPassword + LOGIN_PASSWORD_LENGTH], a
+	ld de, sMobileLoginPassword + 1
+.loop
 	ld a, [de]
 	inc de
 	ld [hli], a
 	and a
-	jr nz, .asm_119ece
+	jr nz, .loop
 	call CloseSRAM
 	ret
 
@@ -4341,7 +4241,9 @@
 	ld [wcd8c], a
 	ld a, $1
 	ld [rSVBK], a
-	call Function119eee
+
+	call .RunJumptable
+
 	ld a, [wcd8c]
 	ld [rSVBK], a
 	ld a, $1
@@ -4348,21 +4250,10 @@
 	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)
+.RunJumptable
+	jumptable .Jumptable, wcd3c
 
-Jumptable_119efd: ; 119efd
+.Jumptable
 	dw Function119f3f
 	dw Function119f45
 	dw Function119f56
@@ -4504,10 +4395,10 @@
 Function11a00e: ; 11a00e
 	ld a, $5
 	call GetSRAMBank
-	ld a, [$aa4b]
+	ld a, [sMobileLoginPassword]
 	and a
 	jr z, .asm_11a02a
-	ld a, [$aa4c]
+	ld a, [sMobileLoginPassword + 1]
 	call CloseSRAM
 	and a
 	ret nz
@@ -4514,7 +4405,7 @@
 	ld a, $5
 	call GetSRAMBank
 	xor a
-	ld [$aa4b], a
+	ld [sMobileLoginPassword], a
 
 .asm_11a02a
 	call CloseSRAM
@@ -4529,7 +4420,7 @@
 	ld a, $3
 	ld [rSVBK], a
 	ld hl, $c608
-	ld de, $d800
+	ld de, w3_d800
 	ld bc, $00f6
 	call CopyBytes
 	ld a, $1
@@ -4539,7 +4430,7 @@
 	call Function11a9ce
 	ld a, $3
 	ld [rSVBK], a
-	ld hl, $d800
+	ld hl, w3_d800
 	ld de, $c608
 	ld bc, $00f6
 	call CopyBytes
@@ -4560,10 +4451,10 @@
 	ld [wMenuBorderRightCoord], a
 	ld a, $5
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
+	call PushWindow
 	callba Function11765d
 	callba Function117ab4
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
 	call ExitMenu
 	callba ReloadMapPart
@@ -4583,10 +4474,10 @@
 	ld [wMenuBorderRightCoord], a
 	ld a, $11
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
+	call PushWindow
 	callba Function11765d
 	callba Function17d3f6
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
 	call ExitMenu
 	callba ReloadMapPart
@@ -4665,7 +4556,7 @@
 	call Function11a63c
 	call Function11a1e6
 	hlcoord 4, 2
-	ld de, wc314 + 48 + 2
+	ld de, $c346
 	call PlaceString
 	call Function11a5f5
 	xor a
@@ -4719,7 +4610,7 @@
 
 Function11a1e6: ; 11a1e6
 	ld hl, String_11a706
-	ld de, wc314 + 48 + 2
+	ld de, $c346
 	call Function11a1ff
 	ld hl, wcd85
 	call Function11a1ff
@@ -5267,7 +5158,7 @@
 	ld [wMenuBorderRightCoord], a
 	ld a, $5
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
+	call PushWindow
 	hlcoord 0, 0, AttrMap
 	ld b, $6
 	ld c, $14
@@ -5293,7 +5184,7 @@
 	ld [wMenuBorderTopCoord], a
 	ld a, $a
 	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
+	call PushWindow
 	hlcoord 14, 6, AttrMap
 	ld b, $5
 	ld c, $6
@@ -5445,7 +5336,7 @@
 	ld bc, hQuotient
 	ld hl, Unknown_11a8ba
 	call Function11a88c
-	ld bc, $ffb5
+	ld bc, hPrintNum3
 	ld hl, Unknown_11a8da
 	call Function11a88c
 	xor a
@@ -5453,11 +5344,11 @@
 	ld a, [hDivisor]
 	and $f
 	ld e, a
-	ld a, [$ffb9]
+	ld a, [hPrintNum7]
 	and $f
 	call Function11a884
 	ld e, a
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	and $f
 	call Function11a884
 	ld [wcd62], a
@@ -5469,12 +5360,12 @@
 	swap a
 	call Function11a884
 	ld e, a
-	ld a, [$ffb9]
+	ld a, [hPrintNum7]
 	and $f0
 	swap a
 	call Function11a884
 	ld e, a
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	and $f0
 	swap a
 	call Function11a884
@@ -5486,11 +5377,11 @@
 	and $f
 	call Function11a884
 	ld e, a
-	ld a, [$ffba]
+	ld a, [hPrintNum8]
 	and $f
 	call Function11a884
 	ld e, a
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	and $f
 	call Function11a884
 	ld [wcd64], a
@@ -5545,20 +5436,10 @@
 ; 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]
+	jumptable .Jumptable, $c31a
 ; 11a909
 
-Jumptable_11a909: ; 11a909
+.Jumptable: ; 11a909
 	dw Function11a970
 	dw Function11a90f
 	dw Function11a971
@@ -5569,14 +5450,14 @@
 	ld [rSVBK], a
 	call SpeechTextBox
 	ld a, $50
-	ld hl, wc314 + 12
+	ld hl, $c320
 	ld bc, $008c
 	call ByteFill
-	ld a, [wc314 + 7]
+	ld a, [$c31b]
 	ld l, a
-	ld a, [wc314 + 8]
+	ld a, [$c31c]
 	ld h, a
-	ld de, wc314 + 12
+	ld de, $c320
 .asm_11a92c
 	ld a, [hli]
 	cp $57
@@ -5607,17 +5488,17 @@
 
 .asm_11a94f
 	xor a
-	ld [wc314 + 11], a
-	ld a, $20
-	ld [wc314 + 7], a
-	ld a, $c3
-	ld [wc314 + 8], a
+	ld [$c31f], a
+	ld a, $c320 % $100
+	ld [$c31b], a
+	ld a, $c320 / $100
+	ld [$c31c], a
 	hlcoord 1, 14
 	ld a, l
-	ld [wc314 + 9], a
+	ld [$c31d], a
 	ld a, h
-	ld [wc314 + 10], a
-	ld hl, wc314 + 6
+	ld [$c31e], a
+	ld hl, $c31a
 	inc [hl]
 	ld a, $3
 	ld [rSVBK], a
@@ -5627,7 +5508,7 @@
 ; 11a971
 
 Function11a971: ; 11a971
-	ld hl, wc314 + 11
+	ld hl, $c31f
 	ld a, [hJoyDown]
 	and a
 	jr nz, .asm_11a97f
@@ -5642,34 +5523,34 @@
 	and $7
 	ld [hl], a
 	ld hl, wcd8d
-	ld a, [wc314 + 7]
+	ld a, [$c31b]
 	ld e, a
-	ld a, [wc314 + 8]
+	ld a, [$c31c]
 	ld d, a
 	ld a, [de]
 	inc de
 	ld [hli], a
 	ld a, e
-	ld [wc314 + 7], a
+	ld [$c31b], a
 	ld a, d
-	ld [wc314 + 8], a
+	ld [$c31c], a
 	ld a, $50
 	ld [hl], a
-	ld a, [wc314 + 9]
+	ld a, [$c31d]
 	ld l, a
-	ld a, [wc314 + 10]
+	ld a, [$c31e]
 	ld h, a
 	ld de, wcd8d
 	call PlaceString
 	ld a, c
-	ld [wc314 + 9], a
+	ld [$c31d], a
 	ld a, b
-	ld [wc314 + 10], a
+	ld [$c31e], a
 	ld a, [wcd8d]
 	cp $50
 	jr nz, .asm_11a9bf
 	xor a
-	ld [wc314 + 6], a
+	ld [$c31a], a
 
 .asm_11a9bf
 	ret
@@ -5677,21 +5558,21 @@
 
 Function11a9c0: ; 11a9c0
 	ld a, l
-	ld [wc314 + 7], a
+	ld [$c31b], a
 	ld a, h
-	ld [wc314 + 8], a
+	ld [$c31c], a
 	ld a, $1
-	ld [wc314 + 6], a
+	ld [$c31a], a
 	ret
 ; 11a9ce
 
 Function11a9ce: ; 11a9ce
 	call ClearBGPalettes
-	call Function2bae
+	call ReloadTilesetAndPalettes
 	call Call_ExitMenu
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
-	call Functiond90
+	call ret_d90
 	callba Function2b5c
 	call UpdateSprites
 	ret
@@ -5723,64 +5604,64 @@
 	ret
 ; 11aa13
 
-UnknownText_0x11aa13: ; 0x11aa13
+Text_SaveFileWillBeSent: ; 0x11aa13
 	text "SAVE FILE will be"
 	line "sent."
 	done
 ; 0x11aa2c
 
-UnknownText_0x11aa2c: ; 0x11aa2c
+Text_SentSaveFileReadingNews: ; 0x11aa2c
 	text "Sent SAVE FILE."
 	line "Reading NEWS…"
 	done
 ; 0x11aa4b
 
-UnknownText_0x11aa4b: ; 0x11aa4b
+Text_ReadingNews: ; 0x11aa4b
 	text "Reading NEWS…"
 	done
 ; 0x11aa5a
 
-UnknownText_0x11aa5a: ; 0x11aa5a
+Text_ReceivedNews: ; 0x11aa5a
 	text "Received NEWS!"
 	done
 ; 0x11aa6a
 
-UnknownText_0x11aa6a: ; 0x11aa6a
+Text_QuitReadingNews: ; 0x11aa6a
 	text "Quit reading NEWS?"
 	done
 ; 0x11aa7e
 
-UnknownText_0x11aa7e: ; 0x11aa7e
+Text_CanceledSendingSaveFile: ; 0x11aa7e
 	text "Canceled sending"
 	line "SAVE FILE."
 	done
 ; 0x11aa9b
 
-UnknownText_0x11aa9b: ; 0x11aa9b
+Text_ReceivedOddEgg: ; 0x11aa9b
 	text "ODD EGG"
 	line "was received!"
 	done
 ; 0x11aab2
 
-UnknownText_0x11aab2: ; 0x11aab2
+Text_RegisteringRecord: ; 0x11aab2
 	text "Registering your"
 	line "record…"
 	done
 ; 0x11aacc
 
-UnknownText_0x11aacc: ; 0x11aacc
+Text_BattleRoomVisitLimit: ; 0x11aacc
 	text "One visit per day"
 	line "per BATTLE ROOM!"
 	done
 ; 0x11aaf0
 
-UnknownText_0x11aaf0: ; 0x11aaf0
+Text_PartyMonTopsThisLevel: ; 0x11aaf0
 	text "A party #MON"
 	line "tops this level."
 	done
 ; 0x11ab0f
 
-UnknownText_0x11ab0f: ; 0x11ab0f
+Text_UberRestriction: ; 0x11ab0f
 	text_from_ram wcd49
 	text " may go"
 	line "only to BATTLE"
@@ -5790,19 +5671,19 @@
 	done
 ; 0x11ab4a
 
-UnknownText_0x11ab4a: ; 0x11ab4a
+Text_CancelBattleRoomChallenge: ; 0x11ab4a
 	text "Cancel your BATTLE"
 	line "ROOM challenge?"
 	done
 ; 0x11ab6e
 
-UnknownText_0x11ab6e: ; 0x11ab6e
+Text_ExitGymLeaderHonorRoll: ; 0x11ab6e
 	text "Exit GYM LEADER"
 	line "HONOR ROLL?"
 	done
 ; 0x11ab8b
 
-UnknownText_0x11ab8b: ; 0x11ab8b
+Text_LinkingWithCenter: ; 0x11ab8b
 	text "Linking with the"
 	line "CENTER…"
 	done
@@ -5820,18 +5701,18 @@
 	done
 ; 0x11abf1
 
-UnknownText_0x11abf1: ; 0x11abf1
+Text_EnterWhichBattleRoom: ; 0x11abf1
 	text "Enter which"
 	line "BATTLE ROOM?"
 	done
 ; 0x11ac0b
 
-UnknownText_0x11ac0b: ; 0x11ac0b
+Text_WhichBattleRoom: ; 0x11ac0b
 	text "Which BATTLE ROOM?"
 	done
 ; 0x11ac1f
 
-UnknownText_0x11ac1f: ; 0x11ac1f
+Text_ThisBattleRoomPleaseWait: ; 0x11ac1f
 	text_from_ram StringBuffer3
 	text "'s ROOM"
 	line "@"
@@ -5844,9 +5725,9 @@
 Function11ac3e: ; 11ac3e
 	call SpeechTextBox
 	call FadeToMenu
-	callab ClearSpriteAnims
+	callab ClearSpriteAnims2
 	call Function11ac51
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ret
 ; 11ac51
 
@@ -5874,7 +5755,7 @@
 	ld [wcd4e], a
 	call Function11ad1b
 	call DelayFrame
-.asm_11ac82
+.loop
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
@@ -5882,11 +5763,11 @@
 	call Function11b314
 	call Function11acb7
 	call Function11ad6e
-	ld a, $78
-	ld [wc3b5], a
-	callba Function8cf7a
+	ld a, 30 * 4
+	ld [wCurrSpriteOAMAddr], a
+	callba DoNextFrameForAllSprites
 	callba ReloadMapPart
-	jr .asm_11ac82
+	jr .loop
 
 .asm_11aca8
 	call ClearSprites
@@ -5900,7 +5781,7 @@
 ; 11acb7
 
 Function11acb7: ; 11acb7
-	ld hl, Unknown_11ba44
+	ld hl, TilemapPack_11ba44
 	ld a, [wcd49]
 	ld c, a
 	ld b, $0
@@ -5915,7 +5796,7 @@
 	ld a, [hli]
 	ld [de], a
 	decoord 0, 7
-	ld bc, $0007
+	ld bc, 7
 	call CopyBytes
 	ld a, [wcd49]
 	inc a
@@ -5922,12 +5803,11 @@
 	ld [wcd49], a
 	ld a, [hl]
 	cp $ff
-	jr nz, .asm_11aceb
+	jr nz, .get_the_other
 	xor a
 	ld [wcd49], a
-
-.asm_11aceb
-	ld hl, Unknown_11bb7d
+.get_the_other
+	ld hl, TilemapPack_11bb7d
 	ld a, [wcd4a]
 	ld c, a
 	ld b, $0
@@ -5939,7 +5819,7 @@
 	rl b
 	add hl, bc
 	decoord 3, 9
-	ld bc, $0007
+	ld bc, 7
 	call CopyBytes
 	ld a, [wcd4a]
 	inc a
@@ -5958,12 +5838,12 @@
 	call ClearSprites
 	call ClearTileMap
 	callba Function17c000
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	ld [wcd82], a
 	dec a
 	ld [hObjectStructIndexBuffer], a
 	ld a, $10
-	ld [wc3b7], a
+	ld [wCurIconTile], a
 	ld hl, Function8e83f
 	ld a, BANK(Function8e83f)
 	ld e, $4
@@ -5984,7 +5864,7 @@
 	ld [wcd30], a
 	ld a, $2
 	ld [wc7d4], a
-	callba Function40bdc
+	callba Pokedex_ChangeMode
 	ret
 ; 11ad6e
 
@@ -6027,12 +5907,12 @@
 	ld de, String_11ae40
 	call PlaceString
 	hlcoord 10, 10, AttrMap
-	ld bc, $0808
+	lb bc, 8, 8
 	call Function11afd6
 	callba ReloadMapPart
 	call Function11ad8a
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afcc
 	call Function11afb7
 
@@ -6059,13 +5939,13 @@
 	jr .asm_11ae2e
 
 .asm_11ade6
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ret z
 	jr .asm_11adf4
 
 .asm_11aded
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	inc a
 	cp $4
 	ret z
@@ -6075,7 +5955,7 @@
 	ld hl, Unknown_11afcc
 	call Function11afbb
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afcc
 	call Function11afb7
 	ret
@@ -6082,7 +5962,7 @@
 
 .asm_11ae06
 	call PlayClickSFX
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld hl, wcd30
 	ld [hl], a
@@ -6089,7 +5969,7 @@
 	and a
 	jr z, .asm_11ae28
 	hlcoord 2, 14
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $2
 	jr z, .asm_11ae23
 	call Function11b272
@@ -6149,7 +6029,7 @@
 	callba ReloadMapPart
 	call Function11ad8a
 	ld a, $1
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afd2
 	call Function11afb7
 
@@ -6180,13 +6060,13 @@
 	jr .asm_11aef7
 
 .asm_11aec1
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ret z
 	jr .asm_11aecf
 
 .asm_11aec8
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	inc a
 	cp $3
 	ret z
@@ -6196,7 +6076,7 @@
 	ld hl, Unknown_11afd2
 	call Function11afbb
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afd2
 	call Function11afb7
 	ret
@@ -6203,7 +6083,7 @@
 
 .asm_11aee1
 	call PlayClickSFX
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $2
 	jr z, .asm_11aeb4
 	ld a, [wcd4b]
@@ -6240,7 +6120,7 @@
 	callba ReloadMapPart
 	call Function11ad8a
 	ld a, $2
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afd2
 	call Function11afb7
 
@@ -6271,13 +6151,13 @@
 	jr .asm_11afaa
 
 .asm_11af77
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ret z
 	jr .asm_11af85
 
 .asm_11af7e
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	inc a
 	cp $3
 	ret z
@@ -6287,7 +6167,7 @@
 	ld hl, Unknown_11afd2
 	call Function11afbb
 	pop af
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 	ld hl, Unknown_11afd2
 	call Function11afb7
 	ret
@@ -6294,7 +6174,7 @@
 
 .asm_11af97
 	call PlayClickSFX
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $2
 	jr z, .asm_11af6a
 	ld a, $6
@@ -6317,13 +6197,12 @@
 	ld e, $7f
 
 asm_11afbd:
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	dec a
 	ld c, a
 	ld b, 0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, e
 	ld e, [hl]
 	inc hl
@@ -6343,20 +6222,20 @@
 ; 11afd6
 
 Function11afd6: ; 11afd6
-	ld de, $0014
+	ld de, SCREEN_WIDTH
 	ld a, $3
-.asm_11afdb
+.row
 	push bc
 	push hl
-.asm_11afdd
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_11afdd
+	jr nz, .col
 	pop hl
 	add hl, de
 	pop bc
 	dec b
-	jr nz, .asm_11afdb
+	jr nz, .row
 	ret
 ; 11afe8
 
@@ -6413,55 +6292,55 @@
 	push hl
 	push af
 	ld c, $1
-.asm_11b041
+.loop
 	ld a, [hli]
-	cp $ef
-	jr z, .asm_11b051
-	cp $f5
-	jr z, .asm_11b051
-	cp $50
-	jr z, .asm_11b055
+	cp "♂"
+	jr z, .gender
+	cp "♀"
+	jr z, .gender
+	cp "@"
+	jr z, .done
 	inc c
-	jr .asm_11b041
+	jr .loop
 
-.asm_11b051
+.gender
 	dec hl
-	ld a, $50
+	ld a, "@"
 	ld [hli], a
 
-.asm_11b055
+.done
 	dec hl
 	push hl
-	ld e, $4
-	ld d, $0
+	ld e, 4
+	ld d, 0
 	add hl, de
 	ld e, l
 	ld d, h
 	pop hl
-.asm_11b05f
+.loop2
 	ld a, [hld]
 	ld [de], a
 	dec de
 	dec c
-	jr nz, .asm_11b05f
+	jr nz, .loop2
 	pop af
 	pop de
 	cp $1
-	jr nz, .asm_11b070
-	ld hl, String_11b07a
-	jr .asm_11b073
+	jr nz, .female
+	ld hl, .MaleString
+	jr .got_string
 
-.asm_11b070
-	ld hl, String_11b07e
+.female
+	ld hl, .FemaleString
 
-.asm_11b073
-	ld bc, 4
+.got_string
+	ld bc, 4 ; string length
 	call CopyBytes
 	ret
 ; 11b07a
 
-String_11b07a: db "ォスの "
-String_11b07e: db "メスの "
+.MaleString: db "ォスの "
+.FemaleString: db "メスの "
 
 Function11b082: ; 11b082
 	call Function11b242
@@ -6485,36 +6364,38 @@
 	ld a, [wc7d0]
 	ld e, a
 	ld d, $0
-	ld hl, $c6d0
+	ld hl, wc6d0
 	add hl, de
 	ld e, l
 	ld d, h
 	hlcoord 11, 2
 	ld a, [wc7d3]
-.asm_11b0b9
+.loop
 	push af
 	ld a, [de]
 	ld [wd265], a
 	push de
 	push hl
-	call Function11b0cf
+	call .PlaceMonNameOrPlaceholderString
 	pop hl
-	ld de, $0028
+	ld de, 2 * SCREEN_WIDTH
 	add hl, de
 	pop de
 	inc de
 	pop af
 	dec a
-	jr nz, .asm_11b0b9
+	jr nz, .loop
 	ret
 ; 11b0cf
 
-Function11b0cf: ; 11b0cf
+.PlaceMonNameOrPlaceholderString: ; 11b0cf
 	and a
 	ret z
-	call Function11b0ec
+
+	call .CheckSeenFlag
 	ret c
-	call Function11b0e1
+
+	call .SetCaughtFlag
 	push hl
 	call GetPokemonName
 	pop hl
@@ -6522,29 +6403,30 @@
 	ret
 ; 11b0e1
 
-Function11b0e1: ; 11b0e1
-	call Function11b21e
-	jr nz, .asm_11b0e8
+.SetCaughtFlag: ; 11b0e1
+	call CheckCaughtMemMon
+	jr nz, .okay
 	inc hl
 	ret
 
-.asm_11b0e8
+.okay
 	ld a, $1
 	ld [hli], a
 	ret
 ; 11b0ec
 
-Function11b0ec: ; 11b0ec
-	call Function11b22a
+.CheckSeenFlag: ; 11b0ec
+	call CheckSeenMemMon
 	ret nz
+
 	inc hl
-	ld de, String_11b0f9
+	ld de, .EmptySlot
 	call PlaceString
 	scf
 	ret
 ; 11b0f9
 
-String_11b0f9: ; 11b0f9
+.EmptySlot: ; 11b0f9
 	db "ーーーーー@"
 ; 11b0ff
 
@@ -6580,7 +6462,7 @@
 
 .asm_11b131
 	call Function11b20b
-	call Function11b22a
+	call CheckSeenMemMon
 	jr z, .asm_11b13d
 	ld a, $1
 	jr .asm_11b148
@@ -6764,7 +6646,7 @@
 	ret
 ; 11b21e
 
-Function11b21e: ; 11b21e
+CheckCaughtMemMon: ; 11b21e
 	push de
 	push hl
 	ld a, [wd265]
@@ -6775,7 +6657,7 @@
 	ret
 ; 11b22a
 
-Function11b22a: ; 11b22a
+CheckSeenMemMon: ; 11b22a
 	push de
 	push hl
 	ld a, [wd265]
@@ -6793,9 +6675,8 @@
 Function11b239: ; 11b239
 	ld e, a
 	ld d, 0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -6846,7 +6727,7 @@
 Function11b279: ; 11b279
 	ld a, [wd265]
 	ld [CurSpecies], a
-	call Function11b22a
+	call CheckSeenMemMon
 	jr z, .asm_11b28f
 	call GetBaseData
 	ld a, [BaseGender]
@@ -6869,7 +6750,7 @@
 	ld de, String_11b308
 	call PlaceString
 	call Function11b20b
-	call Function11b22a
+	call CheckSeenMemMon
 	jr z, .asm_11b2d1
 	ld a, [$c608]
 	ld c, a
@@ -6882,7 +6763,7 @@
 	ld hl, $0003
 	add hl, bc
 	ld e, [hl]
-	callba Function8e9bc
+	callba FlyFunction_GetMonIcon
 	hlcoord 4, 14
 	push hl
 	call GetPokemonName
@@ -6943,53 +6824,106 @@
 ; 11b31b
 
 Function11b31b: ; 11b31b
-	ld hl, Unknown_11b350
+	ld hl, .Coords
 	ld a, [wJumptableIndex]
-	cp $2
-	jr c, .asm_11b349
+	cp 2
+	jr c, .tilemap_1
 	ld a, [wc7d1]
-	cp $4
-	jr nc, .asm_11b344
-	cp $3
-	jr c, .asm_11b349
+	cp 4
+	jr nc, .tilemap_3
+	cp 3
+	jr c, .tilemap_1
 	ld a, [wJumptableIndex]
-	cp $2
-	jr z, .asm_11b349
-	cp $3
-	jr z, .asm_11b349
-	cp $6
-	jr z, .asm_11b349
+	cp 2
+	jr z, .tilemap_1
+	cp 3
+	jr z, .tilemap_1
+	cp 6
+	jr z, .tilemap_1
 
-	ld bc, Unknown_11b37b
-	jr .asm_11b34c
+	ld bc, .Tilemap2
+	jr .load_sprites
 
-.asm_11b344
-	ld bc, Unknown_11b389
-	jr .asm_11b34c
+.tilemap_3
+	ld bc, .Tilemap3
+	jr .load_sprites
 
-.asm_11b349
-	ld bc, Unknown_11b36d
+.tilemap_1
+	ld bc, .Tilemap1
 
-.asm_11b34c
+.load_sprites
 	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
+.Coords:
+	dbpixel 3, 11, 2, 6 ;  0
+	dbpixel 3, 12, 2, 6 ;  1
+	dbpixel 3, 13, 2, 6 ;  2
+	dbpixel 3, 14, 2, 6 ;  3
+	dbpixel 3, 15, 2, 6 ;  4
+	dbpixel 3, 16, 2, 6 ;  5
+	dbpixel 3, 17, 2, 6 ;  6
+	dbpixel 4, 11, 2, 6 ;  7
+	dbpixel 4, 12, 2, 6 ;  8
+	dbpixel 4, 13, 2, 6 ;  9
+	dbpixel 4, 14, 2, 6 ; 10
+	dbpixel 4, 15, 2, 6 ; 11
+	dbpixel 4, 16, 2, 6 ; 12
+	dbpixel 4, 17, 2, 6 ; 13
+	db -1
 
-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
+.Tilemap1: ; vtiles
+	db $30 ;  0
+	db $31 ;  1
+	db $31 ;  2
+	db $31 ;  3
+	db $31 ;  4
+	db $31 ;  5
+	db $32 ;  6
+	db $40 ;  7
+	db $41 ;  8
+	db $41 ;  9
+	db $41 ; 10
+	db $41 ; 11
+	db $41 ; 12
+	db $42 ; 13
 
+.Tilemap2: ; vtiles
+	db $30 ;  0
+	db $31 ;  1
+	db $31 ;  2
+	db $39 ;  3
+	db $39 ;  4
+	db $39 ;  5
+	db $39 ;  6
+	db $40 ;  7
+	db $41 ;  8
+	db $41 ;  9
+	db $39 ; 10
+	db $39 ; 11
+	db $39 ; 12
+	db $39 ; 13
+
+.Tilemap3: ; vtiles
+	db $39 ;  0
+	db $39 ;  1
+	db $39 ;  2
+	db $39 ;  3
+	db $39 ;  4
+	db $39 ;  5
+	db $39 ;  6
+	db $39 ;  7
+	db $39 ;  8
+	db $39 ;  9
+	db $39 ; 10
+	db $39 ; 11
+	db $39 ; 12
+	db $39 ; 13
+
 Function11b397: ; 11b397
 	ld de, Sprites
-.asm_11b39a
+.loop
 	ld a, [hl]
 	cp $ff
 	ret z
@@ -6997,26 +6931,29 @@
 	and $7
 	swap a
 	add [hl]
-	inc hl
+	inc hl ; 1
 	ld [de], a
 	inc de
-	ld a, [hli]
+
+	ld a, [hli] ; 2
 	ld [de], a
 	inc de
+
 	ld a, [bc]
 	inc bc
 	ld [de], a
 	inc de
-	ld a, $5
+	ld a, $5 ; OBPal 5
 	ld [de], a
 	inc de
-	jr .asm_11b39a
+	jr .loop
 ; 11b3b6
 
 Function11b3b6: ; 11b3b6
-.asm_11b3b6
+; unreferenced
+.loop
 	ld a, [hl]
-	cp $ff
+	cp -1
 	ret z
 	ld a, [wcd4d]
 	and $7
@@ -7040,11 +6977,11 @@
 	ld a, $5
 	ld [de], a
 	inc de
-	jr .asm_11b3b6
+	jr .loop
 ; 11b3d9
 
 Function11b3d9: ; 11b3d9
-	ld de, Sprites + $70
+	ld de, Sprites + 28 * 4
 	push de
 	ld a, [wc7d2]
 	dec a
@@ -7053,19 +6990,19 @@
 	ld hl, wc7d0
 	add [hl]
 	cp e
-	jr z, .asm_11b40d
+	jr z, .skip
 	ld hl, 0
-	ld bc, $0070
+	ld bc, $70
 	call AddNTimes
 	ld e, l
 	ld d, h
-	ld b, $0
+	ld b, 0
 	ld a, d
 	or e
-	jr z, .asm_11b40f
+	jr z, .load_sprites
 	ld a, [wc7d2]
 	ld c, a
-.asm_11b401
+.loop1
 	ld a, e
 	sub c
 	ld e, a
@@ -7072,32 +7009,32 @@
 	ld a, d
 	sbc $0
 	ld d, a
-	jr c, .asm_11b40f
+	jr c, .load_sprites
 	inc b
-	jr .asm_11b401
+	jr .loop1
 
-.asm_11b40d
-	ld b, $70
+.skip
+	ld b, 14 * 8
 
-.asm_11b40f
-	ld a, $15
+.load_sprites
+	ld a, 2 * 8 + 5
 	add b
 	pop hl
 	ld [hli], a
 	cp $41
-	jr c, .asm_11b42b
+	jr c, .version1
 	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
+	cp 4
+	jr z, .version2
+	cp 5
+	jr z, .version2
+	cp 7
+	jr z, .version2
+	cp 8
+	jr z, .version2
 
-.asm_11b42b
-	ld a, $9b
+.version1
+	ld a, 19 * 8 + 3
 	ld [hli], a
 	ld a, [wcd4c]
 	add $3c
@@ -7107,8 +7044,8 @@
 	ld [hl], a
 	ret
 
-.asm_11b43b
-	ld a, $9b
+.version2
+	ld a, 19 * 8 + 3
 	ld [hli], a
 	ld a, $39
 	ld [hli], a
@@ -7118,12 +7055,13 @@
 ; 11b444
 
 Function11b444: ; 11b444
-	call Function11b44b
-	call Function11b45c
+; special
+	call Mobile46_InitJumptable
+	call Mobile46_RunJumptable
 	ret
 ; 11b44b
 
-Function11b44b: ; 11b44b
+Mobile46_InitJumptable: ; 11b44b
 	xor a
 	ld [wJumptableIndex], a
 	ld [wcf64], a
@@ -7133,43 +7071,32 @@
 	ret
 ; 11b45c
 
-Function11b45c: ; 11b45c
-.asm_11b45c
-	call Function11b46a
+Mobile46_RunJumptable: ; 11b45c
+.loop
+	call .IterateJumptable
 	call DelayFrame
 	ld a, [wJumptableIndex]
-	cp $4
-	jr nz, .asm_11b45c
+	cp 4
+	jr nz, .loop
 	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
+.IterateJumptable: ; 11b46a
+	jumptable .Jumptable, wJumptableIndex
 
-Jumptable_11b479: ; 11b479
+.Jumptable
 	dw Function11b483
 	dw Function11b570
 	dw Function11b5c0
 	dw Function11b5e0
-	dw Function11b5e7
+	dw Function11b5e7 ; unused
 ; 11b483
 
 Function11b483: ; 11b483
-	call Function11b538
+	call .InitRAM
 	ld hl, PlayerName
-	ld a, $5
-.asm_11b48b
+	ld a, $5 ; Japanese Name Length
+.loop1
 	push af
 	ld a, [hli]
 	ld [bc], a
@@ -7177,23 +7104,24 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_11b48b
-	ld de, $0030
+	jr nz, .loop1
+
+	ld de, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Species
 	ld a, [wcd82]
 	dec a
 	push af
-.asm_11b49f
+.loop2
 	and a
-	jr z, .asm_11b4a6
+	jr z, .okay
 	add hl, de
 	dec a
-	jr .asm_11b49f
+	jr .loop2
 
-.asm_11b4a6
+.okay
 	push bc
-	ld a, $30
-.asm_11b4a9
+	ld a, PARTYMON_STRUCT_LENGTH
+.loop3
 	push af
 	ld a, [hli]
 	ld [bc], a
@@ -7201,31 +7129,31 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_11b4a9
+	jr nz, .loop3
+
 	pop de
 	push bc
 	ld a, [de]
 	ld [CurSpecies], a
 	call GetBaseData
-	ld hl, $001f
+	ld hl, MON_LEVEL
 	add hl, de
 	ld a, [hl]
 	ld [CurPartyLevel], a
-	ld hl, $0024
+	ld hl, MON_MAXHP
 	add hl, de
 	push hl
-	ld hl, $000a
+	ld hl, MON_STAT_EXP - 1
 	add hl, de
 	pop de
 	push de
-	ld b, $1
+	ld b, OTPARTYMON
 	predef CalcPkmnStats
 	pop de
 	ld h, d
 	ld l, e
-rept 2
 	dec hl
-endr
+	dec hl
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -7232,20 +7160,20 @@
 	ld a, [de]
 	ld [hl], a
 	pop bc
-	ld de, $000b
+	ld de, NAME_LENGTH
 	ld hl, PartyMonOT
 	pop af
 	push af
-.asm_11b4e8
+.loop4
 	and a
-	jr z, .asm_11b4ef
+	jr z, .okay2
 	add hl, de
 	dec a
-	jr .asm_11b4e8
+	jr .loop4
 
-.asm_11b4ef
-	ld a, $a
-.asm_11b4f1
+.okay2
+	ld a, NAME_LENGTH - 1
+.loop5
 	push af
 	ld a, [hli]
 	ld [bc], a
@@ -7253,21 +7181,21 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_11b4f1
-	ld de, $000b
+	jr nz, .loop5
+	ld de, NAME_LENGTH
 	ld hl, PartyMonNicknames
 	pop af
 	push af
-.asm_11b502
+.loop6
 	and a
-	jr z, .asm_11b509
+	jr z, .okay3
 	add hl, de
 	dec a
-	jr .asm_11b502
+	jr .loop6
 
-.asm_11b509
-	ld a, $a
-.asm_11b50b
+.okay3
+	ld a, NAME_LENGTH - 1
+.loop7
 	push af
 	ld a, [hli]
 	ld [bc], a
@@ -7275,22 +7203,22 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_11b50b
-	ld de, $002f
-	ld hl, $a600
+	jr nz, .loop7
+	ld de, MAIL_STRUCT_LENGTH
+	ld hl, sPartyMail
 	pop af
-.asm_11b51b
+.loop8
 	and a
-	jr z, .asm_11b522
+	jr z, .okay4
 	add hl, de
 	dec a
-	jr .asm_11b51b
+	jr .loop8
 
-.asm_11b522
-	ld a, $0
+.okay4
+	ld a, $0 ; BANK(sPartyMail)
 	call GetSRAMBank
-	ld a, $2f
-.asm_11b529
+	ld a, MAIL_STRUCT_LENGTH
+.loop9
 	push af
 	ld a, [hli]
 	ld [bc], a
@@ -7298,38 +7226,44 @@
 	pop af
 	dec a
 	and a
-	jr nz, .asm_11b529
+	jr nz, .loop9
 	call CloseSRAM
 	jp Function11ad8a
-; 11b538
 
-Function11b538: ; 11b538
-	ld bc, BattleMonNick + 5
+.InitRAM
+	ld bc, wc626
 	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
@@ -7340,36 +7274,40 @@
 	call Function118007
 	ld a, [ScriptVar]
 	and a
-	jr nz, .asm_11b57f
-	call Function11b585
+	jr nz, .exit
+	call .SaveData
 	jp Function11ad8a
 
-.asm_11b57f
+.exit
 	ld a, $4
 	ld [wJumptableIndex], a
 	ret
-; 11b585
 
-Function11b585: ; 11b585
+.SaveData
 	ld a, $3
 	ld [rSVBK], a
-	ld hl, $d800
+
+	ld hl, w3_d800
 	ld de, $c608
-	ld bc, $008f
+	ld bc, w3_d88f - w3_d800
 	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
+	ld bc, w3_d88f - w3_d800
 	call CopyBytes
+
 	push de
 	pop hl
+
 	ld a, [hRTCMinutes]
 	ld [hli], a
 	ld a, [hRTCHours]
@@ -7378,6 +7316,7 @@
 	ld [hli], a
 	ld a, [hRTCDayHi]
 	ld [hl], a
+
 	call CloseSRAM
 	ret
 ; 11b5c0
@@ -7387,8 +7326,8 @@
 	dec a
 	ld [CurPartyMon], a
 	xor a
-	ld [wd10b], a
-	callba Functione039
+	ld [wPokemonWithdrawDepositParameter], a
+	callba RemoveMonFromPartyOrBox
 	callba Function170807
 	callba Function14a58
 	jp Function11ad8a
@@ -7409,7 +7348,7 @@
 	call GetSRAMBank
 	ld hl, wRTC
 	ld de, $c608
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	call CloseSRAM
 	ld a, $5
@@ -7416,7 +7355,7 @@
 	call GetSRAMBank
 	ld hl, $c608
 	ld de, $b08c
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld a, $2
 	ld [$a800], a
@@ -7437,36 +7376,21 @@
 	ld a, [$a826]
 	ld [wcd31], a
 	call CloseSRAM
-	call Function11b44b
-	call Function11b64c
+	call Mobile46_InitJumptable
+	call .loop
 	ret
-; 11b64c
 
-Function11b64c: ; 11b64c
-.asm_11b64c
-	call Function11b65a
+.loop
+	call .RunJumptable
 	call DelayFrame
 	ld a, [wJumptableIndex]
 	cp $1
-	jr nz, .asm_11b64c
+	jr nz, .loop
 	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
+.RunJumptable
+	jumptable .Jumptable, wJumptableIndex
+.Jumptable
 	dw Function11b66d
 	dw Function11b6b3
 ; 11b66d
@@ -7480,7 +7404,7 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
-	ld a, [StringBuffer2 + 10]
+	ld a, [w3_d090]
 	ld b, a
 	pop af
 	ld [rSVBK], a
@@ -7504,7 +7428,7 @@
 	ld a, $3
 	ld [rSVBK], a
 	ld a, $2
-	ld [StringBuffer2 + 10], a
+	ld [w3_d090], a
 	pop af
 	ld [rSVBK], a
 
@@ -7523,161 +7447,168 @@
 	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, $c708 % $100
+	ld [wMobileMonSpeciesPointerBuffer], a
+	ld a, $c708 / $100
+	ld [wMobileMonSpeciesPointerBuffer + 1], a
+
+	ld a, $c60d % $100 ; Partymon Struct
+	ld [wMobileMonStructurePointerBuffer], a
+	ld a, $c60d / $100
+	ld [wMobileMonStructurePointerBuffer + 1], a
+
+	ld a, $c63d % $100 ; OT
+	ld [wMobileMonOTNamePointerBuffer], a
+	ld a, $c63d / $100
+	ld [wMobileMonOTNamePointerBuffer + 1], a
+
+	ld a, $c642 % $100 ; Nickname
+	ld [wMobileMonNicknamePointerBuffer], a
+	ld a, $c642 / $100
+	ld [wMobileMonNicknamePointerBuffer + 1], a
+
+	ld a, $c647 % $100 ; ???
+	ld [wMobileMonMailPointerBuffer], a
+	ld a, $c647 / $100
+	ld [wMobileMonMailPointerBuffer + 1], a
+
 	ld a, $46
 	ld [$c628], a
+
 	ld de, $c63d
-	ld c, $5
+	ld c, 5
 	callba CheckStringForErrors
-	jr nc, .asm_11b70f
-	callba Function17d187
+	jr nc, .length_check_OT
+	callba Mobile_CopyDefaultOTName
 
-.asm_11b70f
+.length_check_OT
 	ld de, $c63d
 	lb bc, 1, 5
 	callba CheckStringContainsLessThanBNextCharacters
-	jr nc, .asm_11b723
-	callba Function17d187
+	jr nc, .error_check_nick
+	callba Mobile_CopyDefaultOTName
 
-.asm_11b723
+.error_check_nick
 	ld de, $c642
-	ld c, $5
+	ld c, 5
 	callba CheckStringForErrors
-	jr nc, .asm_11b736
-	callba Function17d199
+	jr nc, .length_check_nick
+	callba Mobile_CopyDefaultNickname
 
-.asm_11b736
+.length_check_nick
 	ld de, $c642
 	lb bc, 1, 5
 	callba CheckStringContainsLessThanBNextCharacters
-	jr nc, .asm_11b74a
-	callba Function17d199
+	jr nc, .error_check_mail
+	callba Mobile_CopyDefaultNickname
 
-.asm_11b74a
+.error_check_mail
 	ld de, $c647
-	ld c, $21
+	ld c, MAIL_MSG_LENGTH + 1
 	callba CheckStringForErrors
-	jr nc, .asm_11b75d
-	callba Function17d1ab
+	jr nc, .length_check_mail
+	callba Mobile_CopyDefaultMail
 
-.asm_11b75d
+.length_check_mail
 	ld de, $c647
-	lb bc, 2, $21
+	lb bc, 2, MAIL_MSG_LENGTH + 1
 	callba CheckStringContainsLessThanBNextCharacters
-	jr c, .asm_11b770
+	jr c, .fix_mail
 	ld a, b
 	cp $2
-	jr nz, .asm_11b776
+	jr nz, .mail_ok
 
-.asm_11b770
-	callba Function17d1ab
+.fix_mail
+	callba Mobile_CopyDefaultMail
 
-.asm_11b776
+.mail_ok
 	ld de, $c668
 	ld c, $5
 	callba CheckStringForErrors
-	jr nc, .asm_11b789
-	callba Function17d1c9
+	jr nc, .length_check_author
+	callba Mobile_CopyDefaultMailAuthor
 
-.asm_11b789
+.length_check_author
 	ld de, $c668
 	lb bc, 1, 5
 	callba CheckStringContainsLessThanBNextCharacters
-	jr nc, .asm_11b79d
-	callba Function17d1c9
+	jr nc, .author_okay
+	callba Mobile_CopyDefaultMailAuthor
 
-.asm_11b79d
-	ld a, [$c608 + 6]
-	cp $ff
-	jr nz, .asm_11b7a8
+.author_okay
+	ld a, [$c60e]
+	cp -1
+	jr nz, .item_okay
 	xor a
-	ld [$c608 + 6], a
+	ld [$c60e], a
 
-.asm_11b7a8
+.item_okay
 	ld a, [wcd31]
-	ld [$c608 + 5], a
+	ld [$c60d], a
 	ld [CurSpecies], a
 	call GetBaseData
 
-	ld hl, $c62c
+	ld hl, $c60d + MON_LEVEL
 	ld a, [hl]
 	cp MIN_LEVEL
 	ld a, MIN_LEVEL
-	jr c, .asm_11b7c5
+	jr c, .replace_level
 	ld a, [hl]
 	cp MAX_LEVEL
-	jr c, .asm_11b7c6
+	jr c, .done_level
 	ld a, MAX_LEVEL
-.asm_11b7c5
+.replace_level
 	ld [hl], a
-.asm_11b7c6
+.done_level
 	ld [CurPartyLevel], a
 
-	ld hl, $c616 + 1
-	ld de, $c62c + 5
+	ld hl, $c60d + MON_STAT_EXP - 1
+	ld de, $c60d + MON_MAXHP
 	ld b, $1
 	predef CalcPkmnStats
-	ld de, $c62c + 5
-	ld hl, $c62c + 3
+	ld de, $c60d + MON_MAXHP
+	ld hl, $c60d + MON_HP
 	ld a, [de]
 	ld [hli], a
 	inc de
 	ld a, [de]
 	ld [hl], a
-	call Function11b98f
+	call AddMobileMonToParty
 	ret
 ; 11b7e5
 
 Function11b7e5: ; 11b7e5
-	ld a, [$c608 + 5]
-	ld [wc702], a
+	ld a, [$c60d] ; species
+	ld [wOTTrademonSpecies], a
 	ld [CurPartySpecies], a
 	ld a, [wcd81]
 	ld [wc74e], a
-	ld hl, $c63d
-	ld de, wc724
-	ld bc, $0005
+	ld hl, $c63d ; OT
+	ld de, wOTTrademonOTName
+	ld bc, 5
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
-	ld a, [$c608 + 11]
-	ld [wEnemyWrapCount], a
-	ld a, [$c608 + 12]
-	ld [wPlayerCharging], a
-	ld hl, $c608 + 26
+	ld a, [$c60d + MON_ID] ; id
+	ld [wOTTrademonID], a
+	ld a, [$c60d + MON_ID + 1]
+	ld [wOTTrademonID + 1], a
+	ld hl, $c60d + MON_DVS ; dvs
 	ld a, [hli]
-	ld [wEnemyTrappingMove], a
+	ld [wOTTrademonDVs], a
 	ld a, [hl]
-	ld [wPlayerWrapCount], a
-	ld bc, $c608 + 5
+	ld [wOTTrademonDVs + 1], a
+	ld bc, $c60d ; pokemon_data_start
 	callba GetCaughtGender
 	ld a, c
-	ld [wEnemyCharging], a
+	ld [wOTTrademonCaughtData], a
 	call SpeechTextBox
 	call FadeToMenu
-	callba Function108016
+	callba MobileTradeAnimation_ReceiveGetmonFromGTS
 	callba Function17d1f1
 	ld a, $1
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	ld a, $2
 	ld [wLinkMode], a
 	callba EvolvePokemon
@@ -7701,13 +7632,13 @@
 	ld [de], a
 
 .asm_11b872
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	call RestartMapMusic
 	ret
 ; 11b879
 
 Function11b879: ; 11b879
-	callba Function17089a
+	callba BattleTower_CheckSaveFileExistsAndIsYours
 	ld a, [ScriptVar]
 	and a
 	ret z
@@ -7800,11 +7731,11 @@
 ; 11b920
 
 Function11b920: ; 11b920
-	call Function11b44b
+	call Mobile46_InitJumptable
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $a81f
-	ld de, BattleMonNick + 5
+	ld de, wc626
 	ld bc, $0008
 	call CopyBytes
 	call CloseSRAM
@@ -7818,43 +7749,49 @@
 	xor a
 	ld [$a800], a
 	ld hl, $a823
-	ld de, wEnemyMoveStruct
+	ld de, $c608
 	ld bc, $008f
 	call CopyBytes
 	call CloseSRAM
-	ld a, wEnemyMoveStruct % $100
-	ld [wcd20], a
-	ld a, wEnemyMoveStruct / $100
-	ld [wcd21], a
+
+	ld a, $c608 % $100
+	ld [wMobileMonSpeciesPointerBuffer], a
+	ld a, $c608 / $100
+	ld [wMobileMonSpeciesPointerBuffer + 1], a
+
 	ld a, $c611 % $100
-	ld [wcd22], a
+	ld [wMobileMonStructurePointerBuffer], a
 	ld a, $c611 / $100
-	ld [wcd23], a
+	ld [wMobileMonStructurePointerBuffer + 1], a
+
 	ld a, $c641 % $100
-	ld [wcd24], a
+	ld [wMobileMonOTNamePointerBuffer], a
 	ld a, $c641 / $100
-	ld [wcd25], a
+	ld [wMobileMonOTNamePointerBuffer + 1], a
+
 	ld a, $c646 % $100
-	ld [wcd26], a
+	ld [wMobileMonNicknamePointerBuffer], a
 	ld a, $c646 / $100
-	ld [wcd27], a
+	ld [wMobileMonNicknamePointerBuffer + 1], a
+
 	ld a, $c64b % $100
-	ld [wcd28], a
+	ld [wMobileMonMailPointerBuffer], a
 	ld a, $c64b / $100
-	ld [wcd29], a
-	call Function11b98f
+	ld [wMobileMonMailPointerBuffer + 1], a
+	call AddMobileMonToParty
 	callba Function14a58
 	ret
 ; 11b98f
 
-Function11b98f: ; 11b98f
+AddMobileMonToParty: ; 11b98f
 	ld hl, PartyCount
 	ld a, [hl]
 	ld e, a
 	inc [hl]
-	ld a, [wcd20]
+
+	ld a, [wMobileMonSpeciesPointerBuffer]
 	ld l, a
-	ld a, [wcd21]
+	ld a, [wMobileMonSpeciesPointerBuffer + 1]
 	ld h, a
 	inc hl
 	ld bc, PartySpecies
@@ -7868,12 +7805,13 @@
 	ld a, [hl]
 	ld [bc], a
 	inc bc
-	ld a, $ff
+	ld a, -1
 	ld [bc], a
+
 	ld hl, PartyMon1Species
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, e
-	ld [wcd2a], a
+	ld [wMobileMonSpeciesBuffer], a
 .loop2
 	add hl, bc
 	dec a
@@ -7881,15 +7819,16 @@
 	jr nz, .loop2
 	ld e, l
 	ld d, h
-	ld a, [CreditsTimer]
+	ld a, [wMobileMonStructurePointerBuffer]
 	ld l, a
-	ld a, [wcd23]
+	ld a, [wMobileMonStructurePointerBuffer + 1]
 	ld h, a
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
+
 	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
-	ld a, [wcd2a]
+	ld a, [wMobileMonSpeciesBuffer]
 .loop3
 	add hl, bc
 	dec a
@@ -7897,17 +7836,18 @@
 	jr nz, .loop3
 	ld e, l
 	ld d, h
-	ld a, [wcd24]
+	ld a, [wMobileMonOTNamePointerBuffer]
 	ld l, a
-	ld a, [wcd25]
+	ld a, [wMobileMonOTNamePointerBuffer + 1]
 	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]
+	ld a, [wMobileMonSpeciesBuffer]
 .loop4
 	add hl, bc
 	dec a
@@ -7915,32 +7855,34 @@
 	jr nz, .loop4
 	ld e, l
 	ld d, h
-	ld a, [wcd26]
+	ld a, [wMobileMonNicknamePointerBuffer]
 	ld l, a
-	ld a, [wcd27]
+	ld a, [wMobileMonNicknamePointerBuffer + 1]
 	ld h, a
 	ld bc, PKMN_NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
 	ld [de], a
+
 	ld hl, sPartyMail
-	ld bc, PARTYMON_STRUCT_LENGTH - 1
-	ld a, [wcd2a]
+	ld bc, MAIL_STRUCT_LENGTH
+	ld a, [wMobileMonSpeciesBuffer]
 .loop5
 	add hl, bc
 	dec a
 	and a
 	jr nz, .loop5
-	ld a, $0
+	ld a, BANK(sPartyMail)
 	call GetSRAMBank
 	ld e, l
 	ld d, h
-	ld a, [wcd28]
+	ld a, [wMobileMonMailPointerBuffer]
 	ld l, a
-	ld a, [wcd29]
+	ld a, [wMobileMonMailPointerBuffer + 1]
 	ld h, a
-	ld bc, PARTYMON_STRUCT_LENGTH - 1
+	ld bc, MAIL_STRUCT_LENGTH
 	call CopyBytes
+
 	call CloseSRAM
 	ret
 ; 11ba38
@@ -7953,85 +7895,85 @@
 	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
+TilemapPack_11ba44:
+	db $47, $30, $0a, $0a, $0a, $0a, $0a, $56 ; 00
+	db $46, $2f, $0a, $0a, $0a, $0a, $0a, $55 ; 01
+	db $45, $3d, $0a, $0a, $0a, $0a, $0a, $54 ; 02
+	db $44, $30, $0a, $0a, $0a, $0a, $0a, $53 ; 03
+	db $43, $2f, $0a, $0a, $0a, $0a, $0a, $52 ; 04
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $51 ; 05
+	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $50 ; 06
+	db $4a, $2f, $0a, $0a, $0a, $0a, $0a, $4f ; 07
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $4e ; 08
+	db $4a, $30, $0a, $0a, $0a, $0a, $4d, $42 ; 09
+	db $4a, $2f, $0a, $0a, $0a, $0a, $6b, $58 ; 0a
+	db $4a, $3d, $0a, $0a, $0a, $0a, $6a, $58 ; 0b
+	db $4a, $30, $0a, $0a, $0a, $0a, $69, $58 ; 0c
+	db $4a, $2f, $0a, $0a, $0a, $0a, $68, $58 ; 0d
+	db $4a, $3d, $0a, $0a, $0a, $66, $67, $58 ; 0e
+	db $4a, $30, $0a, $0a, $0a, $65, $0a, $58 ; 0f
+	db $4a, $2f, $0a, $0a, $0a, $64, $0a, $58 ; 10
+	db $4a, $3d, $0a, $0a, $0a, $63, $0a, $58 ; 11
+	db $4a, $30, $0a, $0a, $61, $62, $0a, $58 ; 12
+	db $4a, $2f, $0a, $0a, $5f, $60, $0a, $58 ; 13
+	db $4a, $3d, $0a, $61, $62, $0a, $0a, $58 ; 14
+	db $4a, $30, $0a, $63, $0a, $0a, $0a, $58 ; 15
+	db $4a, $2f, $69, $0a, $0a, $0a, $0a, $58 ; 16
+	db $4a, $3d, $81, $0a, $0a, $0a, $0a, $58 ; 17
+	db $4a, $30, $80, $0a, $0a, $0a, $0a, $58 ; 18
+	db $4a, $2f, $7f, $0a, $0a, $0a, $0a, $58 ; 19
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $58 ; 1a
+	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $58 ; 1b
+	db $4a, $2f, $68, $87, $88, $89, $0a, $58 ; 1c
+	db $4a, $3d, $6e, $6f, $70, $75, $76, $58 ; 1d
+	db $4a, $30, $75, $76, $5c, $5d, $5e, $58 ; 1e
+	db $4a, $2f, $71, $72, $73, $74, $6d, $58 ; 1f
+	db $4a, $3d, $75, $76, $77, $8a, $8b, $58 ; 20
+	db $4a, $30, $66, $67, $65, $0a, $6a, $58 ; 21
+	db $4a, $2f, $83, $84, $0a, $83, $84, $58 ; 22
+	db $4a, $3d, $0a, $85, $82, $84, $0a, $58 ; 23
+	db $4a, $30, $41, $80, $40, $0a, $0a, $58 ; 24
+	db $4a, $2f, $83, $0a, $0a, $0a, $0a, $58 ; 25
+	db $4a, $3d, $40, $0a, $0a, $0a, $0a, $58 ; 26
+	db -1
 
-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
+TilemapPack_11bb7d:
+	db $0a, $0a, $0a, $0a, $0a, $0a, $16, $00 ; 00
+	db $78, $0a, $0a, $0a, $0a, $0a, $8c, $00 ; 01
+	db $79, $0a, $0a, $0a, $0a, $0a, $8d, $00 ; 02
+	db $7a, $0a, $0a, $0a, $0a, $0a, $8e, $00 ; 03
+	db $7b, $0a, $0a, $0a, $0a, $0a, $8c, $00 ; 04
+	db $7c, $0a, $0a, $0a, $0a, $0a, $8d, $00 ; 05
+	db $7d, $0a, $0a, $0a, $0a, $0a, $8e, $00 ; 06
+	db $2e, $7e, $0a, $0a, $0a, $0a, $8c, $00 ; 07
+	db $2e, $80, $0a, $0a, $0a, $0a, $8d, $00 ; 08
+	db $2e, $81, $0a, $0a, $0a, $0a, $8e, $00 ; 09
+	db $2e, $82, $0a, $0a, $0a, $0a, $8c, $00 ; 0a
+	db $2e, $69, $0a, $0a, $0a, $0a, $8d, $00 ; 0b
+	db $2e, $6a, $0a, $0a, $0a, $0a, $8e, $00 ; 0c
+	db $2e, $6b, $0a, $0a, $0a, $0a, $8c, $00 ; 0d
+	db $2e, $0a, $68, $0a, $0a, $0a, $8d, $00 ; 0e
+	db $2e, $0a, $69, $0a, $0a, $0a, $8e, $00 ; 0f
+	db $2e, $0a, $0a, $6a, $0a, $0a, $8c, $00 ; 10
+	db $2e, $0a, $0a, $6b, $0a, $0a, $8d, $00 ; 11
+	db $2e, $0a, $0a, $0a, $80, $0a, $8e, $00 ; 12
+	db $2e, $0a, $0a, $0a, $82, $0a, $8c, $00 ; 13
+	db $2e, $0a, $0a, $0a, $6c, $0a, $8d, $00 ; 14
+	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00 ; 15
+	db $2e, $0a, $6b, $0a, $0a, $0a, $8c, $00 ; 16
+	db $2e, $0a, $0a, $69, $0a, $0a, $8d, $00 ; 17
+	db $2e, $0a, $0a, $6a, $0a, $0a, $8e, $00 ; 18
+	db $2e, $0a, $0a, $0a, $68, $0a, $8c, $00 ; 19
+	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00 ; 1a
+	db $2e, $0a, $0a, $61, $62, $0a, $8e, $00 ; 1b
+	db $2e, $0a, $0a, $0a, $5f, $60, $8c, $00 ; 1c
+	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00 ; 1d
+	db $2e, $0a, $0a, $0a, $0a, $69, $8c, $00 ; 1e
+	db $2e, $0a, $0a, $0a, $0a, $6b, $8d, $00 ; 1f
+	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00 ; 20
+	db $2e, $0a, $0a, $0a, $0a, $86, $8c, $00 ; 21
+	db $2e, $0a, $85, $0a, $0a, $0a, $8d, $00 ; 22
+	db $2e, $0a, $0a, $84, $0a, $0a, $8e, $00 ; 23
+	db -1
 
 
--- a/misc/mobile_5b.asm
+++ b/misc/mobile_5b.asm
@@ -2,7 +2,7 @@
 	ld a, [hCGB]
 	and a
 	ret z
-	ld a, [$ffea]
+	ld a, [hFFEA]
 	and a
 	ret z
 	ld a, [wcfbe]
@@ -15,7 +15,7 @@
 	call Function16c031
 	callba Function1000a4
 	xor a
-	ld [$ffea], a
+	ld [hFFEA], a
 	pop af
 	ld [wcfbe], a
 	ret
@@ -184,7 +184,7 @@
 	ld bc, 8
 	ld a, $5
 	call FarCopyWRAM
-	callba Function96a4
+	callba ApplyPals
 	ret
 ; 16c145
 
@@ -362,7 +362,7 @@
 	ld a, e
 	cp $8
 	jr nz, .asm_16c969
-	callba Function96a4
+	callba ApplyPals
 	call SetPalettes
 	ld a, [rSVBK]
 	push af
@@ -392,7 +392,7 @@
 	ld a, [wd003]
 	and a
 	jr nz, .asm_16ca1d
-	callba Function96a4
+	callba ApplyPals
 
 .asm_16ca1d
 	ld a, [rSVBK]
@@ -465,7 +465,7 @@
 	ld a, e
 	cp $8
 	jr nz, .asm_16ca28
-	callba Function96a4
+	callba ApplyPals
 	call SetPalettes
 	ld a, [rSVBK]
 	push af
@@ -711,14 +711,14 @@
 	ld hl, Unknown_16cbfb
 	add hl, bc
 	ld a, [hl]
-	ld bc, $0002
+	ld bc, 2
 	ld hl, Unknown_16cfa3
 	call AddNTimes
-	ld de, wd00c
-	ld bc, $0002
+	ld de, UnknBGPals + 1 palettes + 4
+	ld bc, 2
 	ld a, $5
 	call FarCopyWRAM
-	callba Function96a4
+	callba ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -749,19 +749,19 @@
 
 Function16cc25: ; 16cc25
 	ld hl, Unknown_16cfa9
-	ld de, wd008
-	call Function16cc41
+	ld de, UnknBGPals + 1 palettes
+	call .CopyPal
 	ld hl, Unknown_16cfb1
 	ld de, UnknOBPals
-	call Function16cc41
+	call .CopyPal
 	ld hl, Unknown_16cfb9
-	ld de, wd048
-	call Function16cc41
+	ld de, UnknOBPals + 1 palettes
+	call .CopyPal
 	ret
 ; 16cc41
 
-Function16cc41: ; 16cc41
-	ld bc, $0008
+.CopyPal: ; 16cc41
+	ld bc, 1 palettes
 	ld a, $5
 	jp FarCopyWRAM
 ; 16cc49
@@ -863,374 +863,3 @@
 	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, SCGB_08
-	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
-.loop
-	push bc
-	push hl
-.loop2
-	ld [hli], a
-	dec c
-	jr nz, .loop2
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .loop
-	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, SCREEN_WIDTH
-	add hl, de
-.loop
-	push hl
-	ld a, $33
-	ld [hli], a
-	ld a, " "
-	call Function16d66d
-	ld [hl], $34
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	dec b
-	jr nz, .loop
-	ld a, $35
-	ld [hli], a
-	ld a, $36
-	call Function16d66d
-	ld [hl], $37
-	ret
-; 16d66d
-
-Function16d66d: ; 16d66d
-	ld d, c
-.loop
-	ld [hli], a
-	dec d
-	jr nz, .loop
-	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
-
-LinkTextbox: ; 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, 10
-	predef Predef_LinkTextbox
-	hlcoord 5, 11
-	ld de, .Waiting
-	call PlaceString
-	call WaitBGMap
-	call Function3200
-	ld c, $32
-	jp DelayFrames
-; 16d701
-
-.Waiting: ; 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
-
-
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -34,6 +34,7 @@
 	ld bc, $008f
 	call CopyBytes
 	ret
+
 ; 17005a
 
 Function17005a: ; 17005a
@@ -71,85 +72,11 @@
 	ld [wc74e], a
 	call CloseSRAM
 	ret
+
 ; 1700b0
 
 INCLUDE "misc/battle_tower_5c.asm"
 
-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 GetUsedSprite
-	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
@@ -159,6 +86,7 @@
 	call ByteFill
 	call CloseSRAM
 	ret
+
 ; 170bf7
 
 Clears5_a89a: ; 170bf7
@@ -170,6 +98,7 @@
 	ld [hl], a
 	call CloseSRAM
 	ret
+
 ; 170c06
 
 Function170c06: ; 170c06
@@ -275,6 +204,7 @@
 	ld [hl], a
 	call CloseSRAM
 	ret
+
 ; 170c8b
 
 Function170c8b: ; 170c8b
@@ -287,6 +217,7 @@
 	dec b
 	jr nz, .asm_170c90
 	ret
+
 ; 170c98
 
 CheckBTMonMovesForErrors: ; 170c98
@@ -330,6 +261,7 @@
 	dec c
 	jr nz, .loop
 	ret
+
 ; 170cc6
 
 Function170cc6: ; 170cc6
@@ -338,7 +270,7 @@
 	ld a, $6
 	ld [rSVBK], a
 	ld hl, LZ_170d16
-	ld de, wd000
+	ld de, wDecompressScratch
 	call Decompress
 	ld a, $1
 	ld [rVBK], a
@@ -358,6 +290,7 @@
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 170d02
 
 Function170d02: ; 170d02
@@ -370,6 +303,7 @@
 	xor a
 	ld [rVBK], a
 	ret
+
 ; 170d16
 
 LZ_170d16:
@@ -413,20 +347,21 @@
 	call ClearSprites
 	callba Function171d2b
 	callba ReloadMapPart
-	callba Function8cf53
+	callba ClearSpriteAnims
 	ret
 
 Function171a11: ; 171a11 (5c:5a11)
+.loop
 	call JoyTextDelay
 	ld a, [wcd49]
 	bit 7, a
-	jr nz, .asm_171a2c
+	jr nz, .done
 	call Function171a36
-	callba Function8cf69
+	callba PlaySpriteAnimations
 	callba ReloadMapPart
-	jr Function171a11
-.asm_171a2c
-	callba Function8cf53
+	jr .loop
+.done
+	callba ClearSpriteAnims
 	call ClearSprites
 	ret
 
@@ -465,6 +400,7 @@
 	bit 0, a
 	ret nz
 	jp Function171c66
+
 .asm_171a6a
 	ld a, $0
 	call Function3e32
@@ -492,6 +428,7 @@
 	ld de, String_171aa7
 	call PlaceString
 	jp Function171c66
+
 ; 171aa7 (5c:5aa7)
 
 String_171aa7: ; 171aa7
@@ -626,6 +563,7 @@
 	ld a, $80
 	ld [wcd49], a
 	ret
+
 asm_171ba5: ; 171ba5 (5c:5ba5)
 	ld a, [wcd4a]
 	and a
@@ -633,6 +571,7 @@
 	dec a
 	ld [wcd4a], a
 	ret
+
 asm_171baf: ; 171baf (5c:5baf)
 	ld a, [wcd4b]
 	ld c, a
@@ -715,7 +654,7 @@
 	dec [hl]
 	ret nz
 	call ClearBGPalettes
-	callba Function106462
+	callba MobileFunc_106462
 	callba Function106464
 	ld a, $2
 	ld [wc303], a
@@ -729,6 +668,7 @@
 	ld hl, wcd49
 	inc [hl]
 	ret
+
 ; 171c6b (5c:5c6b)
 
 MenuDataHeader_171c6b: ; 171c6b
@@ -807,6 +747,7 @@
 	hlcoord 3, 16
 	ld de, String_172e3f
 	jp PlaceString
+
 .asm_171d16
 	ld hl, Tilemap_1725f9
 	decoord 0, 7
@@ -841,6 +782,7 @@
 	ld de, String_172e58
 	call PlaceString
 	ret
+
 ; 171d71 (5c:5d71)
 
 Palette_171d71:
@@ -931,6 +873,7 @@
 	ld bc, $168
 	call CopyBytes
 	ret
+
 ; 172eb9 (5c:6eb9)
 
 Function172eb9:
@@ -950,6 +893,7 @@
 	pop af
 	ld [rSVBK], a
 	ret
+
 ; 172edf (5c:6edf)
 
 Palette_172edf:
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -274,35 +274,35 @@
 
 Function17d0f3: ; 17d0f3
 	ld a, [$c608 + 5]
-	ld [wc702], a
+	ld [wOTTrademonSpecies], a
 	ld [CurPartySpecies], a
 	ld a, [wcd81]
 	ld [wc74e], a
 	ld hl, $c63d
-	ld de, wc724
-	ld bc, $0005
+	ld de, wOTTrademonOTName
+	ld bc, 5
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	ld a, [$c608 + 11]
-	ld [wEnemyWrapCount], a
+	ld [wOTTrademonID], a
 	ld a, [$c608 + 12]
-	ld [wPlayerCharging], a
+	ld [wOTTrademonID + 1], a
 	ld hl, $c608 + 26
 	ld a, [hli]
-	ld [wEnemyTrappingMove], a
+	ld [wOTTrademonDVs], a
 	ld a, [hl]
-	ld [wPlayerWrapCount], a
+	ld [wOTTrademonDVs + 1], a
 	ld bc, $c608 + 5
 	callba GetCaughtGender
 	ld a, c
-	ld [wEnemyCharging], a
+	ld [wOTTrademonCaughtData], a
 	call SpeechTextBox
 	call FadeToMenu
 	callba Function10804d
 	callba Function17d1f1
 	ld a, $1
-	ld [wd1e9], a
+	ld [wForceEvolution], a
 	ld a, $2
 	ld [wLinkMode], a
 	callba EvolvePokemon
@@ -326,58 +326,58 @@
 	ld [de], a
 
 .asm_17d180
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	call RestartMapMusic
 	ret
 ; 17d187
 
-Function17d187: ; 17d187
-	ld hl, Unknown_17d194
+Mobile_CopyDefaultOTName: ; 17d187
+	ld hl, Mobile5F_KrissName
 	ld de, $c63d
-	ld bc, $0005
+	ld bc, 5
 	call CopyBytes
 	ret
 ; 17d194
 
-Unknown_17d194:
+Mobile5F_KrissName:
 	db "クりス@@"
 ; 17d198
 
-Function17d199: ; 17d199
-	ld hl, Unknown_17d1a6
+Mobile_CopyDefaultNickname: ; 17d199
+	ld hl, .DefaultNickname
 	ld de, $c642
-	ld bc, $0005
+	ld bc, 5
 	call CopyBytes
 	ret
 ; 17d1a6
 
-Unknown_17d1a6:
+.DefaultNickname:
 	db "?????"
 
-Function17d1ab: ; 17d1ab
-	ld a, $50
+Mobile_CopyDefaultMail: ; 17d1ab
+	ld a, "@"
 	ld hl, $c647
-	ld bc, $0021
+	ld bc, MAIL_MSG_LENGTH + 1
 	call ByteFill
-	ld hl, Unknown_17d1c3
+	ld hl, .DefaultMessage
 	ld de, $c647
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ret
 ; 17d1c3
 
-Unknown_17d1c3:
+.DefaultMessage:
 	db "こんにちは@"
 ; 17d1c9
 
-Function17d1c9: ; 17d1c9
-	ld a, $50
+Mobile_CopyDefaultMailAuthor: ; 17d1c9
+	ld a, "@"
 	ld de, $c668
-	ld bc, $0005
+	ld bc, 5
 	call ByteFill
-	ld hl, Unknown_17d194
+	ld hl, Mobile5F_KrissName
 	ld de, $c668
-	ld bc, $0005
+	ld bc, 5
 	call CopyBytes
 	ret
 ; 17d1e1
@@ -418,12 +418,12 @@
 	call AddNTimes
 	predef GetUnownLetter
 	callab UpdateUnownDex
-	ld a, [wdef4]
+	ld a, [wFirstUnownSeen]
 	and a
 	jr nz, .asm_17d223
 
 	ld a, [UnownLetter]
-	ld [wdef4], a
+	ld [wFirstUnownSeen], a
 
 .asm_17d223
 	ret
@@ -456,25 +456,25 @@
 .Load_Interpret
 	call LoadMenuDataHeader
 	call Function17d246
-	call WriteBackup
+	call CloseWindow
 	ret
 ; 17d246
 
 Function17d246: ; 17d246
-	call InterpretMenu2
+	call VerticalMenu
 	jr c, .Exit
 	ld a, [ScriptVar]
 	cp $5
-	jr nz, .UseMenuSelection2
-	ld a, [MenuSelection2]
+	jr nz, .UsewMenuCursorY
+	ld a, [wMenuCursorY]
 	cp $3
 	ret z
-	jr c, .UseMenuSelection2
+	jr c, .UsewMenuCursorY
 	dec a
 	jr .LoadToScriptVar
 
-.UseMenuSelection2
-	ld a, [MenuSelection2]
+.UsewMenuCursorY
+	ld a, [wMenuCursorY]
 
 .LoadToScriptVar
 	ld [ScriptVar], a
@@ -564,7 +564,7 @@
 	ld [MusicFadeIDHi], a
 	call PlayMusic
 	call ReturnToMapFromSubmenu
-	call ReturnToCallingMenu
+	call CloseSubmenu
 	ret
 ; 17d314
 
@@ -708,7 +708,7 @@
 	ld [rSVBK], a
 	ld hl, Palette_17eff6
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	call SetPalettes
 	pop af
@@ -733,17 +733,7 @@
 ; 17d474
 
 Function17d474: ; 17d474
-	ld a, [wcd77]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_17d483
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
+	jumptable Jumptable_17d483, wcd77
 ; 17d483
 
 Jumptable_17d483: ; 17d483
@@ -802,7 +792,7 @@
 	jr z, .asm_17d4e0
 	ld a, e
 	ld [wcd6c], a
-	ld [wc2c0], a
+	ld [wMapMusic], a
 	ld d, $0
 	call PlayMusic2
 
@@ -920,16 +910,14 @@
 	ld a, [wcd42]
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, l
 	ld [wcd4b], a
 	ld a, h
 	ld [wcd4c], a
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, l
 	ld [wcd4d], a
 	ld a, h
@@ -949,18 +937,17 @@
 	ld a, [hJoyPressed]
 	and a
 	ret z
-	ld c, $0
+	ld c, 0
 	ld b, c
 	ld hl, wcd32
-.asm_17d5ce
+.loop
 	srl a
-	jr c, .asm_17d5d6
-rept 2
+	jr c, .got_button
 	inc c
-endr
-	jr .asm_17d5ce
+	inc c
+	jr .loop
 
-.asm_17d5d6
+.got_button
 	add hl, bc
 	ld a, [hli]
 	ld c, a
@@ -969,7 +956,7 @@
 	and c
 	cp $ff
 	ret z
-	ld a, [BGMapBuffer]
+	ld a, [wcd20]
 	ld l, a
 	ld a, [wcd21]
 	ld h, a
@@ -988,7 +975,7 @@
 	ld [rSVBK], a
 	ld hl, $c608
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	call CopyBytes
 	ld a, $4
 	ld [rSVBK], a
@@ -1044,12 +1031,10 @@
 	ld [wcd4c], a
 	pop de
 	pop hl
-rept 2
 	inc b
-endr
-rept 2
+	inc b
 	dec c
-endr
+	dec c
 	jr z, .asm_17d684
 	push bc
 	push de
@@ -1095,17 +1080,15 @@
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $b1d3
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld [wcd47], a
 	ld a, [hl]
 	ld [BGMapPalBuffer], a
 	ld hl, $b1b3
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -1121,9 +1104,8 @@
 	ld de, wcd60
 	ld bc, $0004
 	call CopyBytes
-rept 2
 	inc hl
-endr
+	inc hl
 	ld de, wcd64
 	ld bc, $0004
 	call CopyBytes
@@ -1153,15 +1135,14 @@
 	jr z, asm_17d721
 
 Function17d711:
-.asm_17d711
+.crash_loop
 	cp $31
-	jr nc, .asm_17d711
+	jr nc, .crash_loop
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_17d72a
-rept 2
+	ld hl, Jumptable17d72a
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1174,7 +1155,7 @@
 	ret
 ; 17d72a
 
-Jumptable_17d72a: ; 17d72a
+Jumptable17d72a: ; 17d72a
 	dw Function17d78c
 	dw Function17d78d
 	dw Function17d7b4
@@ -1933,16 +1914,16 @@
 	ld [wEnemyGoesFirst], a
 	ld hl, wc708
 	call LoadMenuDataHeader
-	call InterpretMenu2
+	call VerticalMenu
 	jr nc, .asm_17dc6e
 	ld a, $2
-	ld [MenuSelection2], a
+	ld [wMenuCursorY], a
 
 .asm_17dc6e
-	call WriteBackup
+	call CloseWindow
 	pop af
 	ld [rSVBK], a
-	ld a, [MenuSelection2]
+	ld a, [wMenuCursorY]
 	cp $1
 	jr nz, .asm_17dc85
 	ld a, [$c68a]
@@ -2015,9 +1996,8 @@
 	ld a, [wcd2e]
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld c, a
 	ld a, [hl]
@@ -2032,9 +2012,9 @@
 	ld a, [hl]
 	cp $ff
 	jr z, .asm_17dd0d
-.asm_17dcfa
+.crash_loop
 	cp $31
-	jr nc, .asm_17dcfa
+	jr nc, .crash_loop
 	call Function17d711
 	ld a, [wcd77]
 	bit 7, a
@@ -2432,9 +2412,8 @@
 	jr .asm_17df7b
 
 .asm_17df79
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17df7b
 	bit 4, b
@@ -2487,9 +2466,8 @@
 	jr .asm_17dfd2
 
 .asm_17dfd0
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17dfd2
 	bit 5, b
@@ -2614,9 +2592,8 @@
 	jr .asm_17e0a4
 
 .asm_17e0a2
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17e0a4
 	bit 4, b
@@ -2632,9 +2609,8 @@
 	jr .asm_17e0b6
 
 .asm_17e0b4
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17e0b6
 	bit 5, b
@@ -2656,9 +2632,8 @@
 	call CloseSRAM
 	pop hl
 	pop bc
-rept 2
 	inc hl
-endr
+	inc hl
 	jr asm_17e0ee
 
 .asm_17e0e1
@@ -2703,9 +2678,8 @@
 	call ReceiveItem
 	pop hl
 	jr c, .asm_17e127
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17e127
 	ld a, [hli]
@@ -2735,9 +2709,8 @@
 	callba MobileCheckOwnMonAnywhere
 	pop hl
 	jr c, .asm_17e159
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17e159
 	ld a, [hli]
@@ -2773,9 +2746,8 @@
 	call CheckItem
 	pop hl
 	jr c, .asm_17e195
-rept 2
 	inc hl
-endr
+	inc hl
 
 .asm_17e195
 	ld a, [hli]
@@ -3240,9 +3212,8 @@
 	ld [wcd2e], a
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	push hl
 	hlcoord 0, 0
 	ld bc, $0014
@@ -3467,9 +3438,8 @@
 	ld l, a
 	ld a, [wcd4e]
 	ld h, a
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3534,9 +3504,8 @@
 	ld [hli], a
 	ld a, [de]
 	inc de
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_17e63f
 	ld c, a
 	ld a, [wcd53]
@@ -3555,9 +3524,8 @@
 	add hl, bc
 	ld a, [de]
 	dec de
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_17e674
 	ld b, a
 .asm_17e651
@@ -3566,9 +3534,8 @@
 	add $3
 	ld [hli], a
 	ld a, [de]
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_17e664
 	ld c, a
 	ld a, $7f
@@ -3594,9 +3561,8 @@
 	add $5
 	ld [hli], a
 	ld a, [de]
-rept 2
 	dec a
-endr
+	dec a
 	jr z, .asm_17e689
 	ld c, a
 	ld a, [wcd53]
@@ -3622,9 +3588,8 @@
 	inc de
 	push af
 	ld a, [de]
-rept 2
 	inc de
-endr
+	inc de
 	and a
 .asm_17e69f
 	jr z, .asm_17e6a5
@@ -3776,9 +3741,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_17f061
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -3815,9 +3779,8 @@
 	ld de, $0004
 	add hl, de
 	ld a, [hli]
-rept 2
 	inc hl
-endr
+	inc hl
 	ld e, l
 	ld d, h
 	ld l, c
@@ -3960,9 +3923,8 @@
 	pop hl
 	call Function17f524
 	jr c, .asm_17f167
-rept 2
 	inc hl
-endr
+	inc hl
 	ld e, l
 	ld d, h
 	ld a, [de]
@@ -4150,9 +4112,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, .Genders
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -4414,9 +4375,8 @@
 	ld a, [de]
 	ld c, a
 	ld b, $0
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -4431,9 +4391,8 @@
 	ld e, a
 	ld d, $0
 	pop hl
-rept 2
 	add hl, de
-endr
+	add hl, de
 rept 3
 	inc hl
 endr
@@ -4497,9 +4456,8 @@
 	ld de, $0005
 	add hl, de
 	ld a, [hli]
-rept 2
 	inc hl
-endr
+	inc hl
 	ld e, l
 	ld d, h
 	ld l, c
@@ -4673,7 +4631,9 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
+
 	call Function17f555
+
 	pop af
 	ld [rSVBK], a
 	call ExitAllMenus
@@ -4681,21 +4641,20 @@
 ; 17f555
 
 Function17f555: ; 17f555
-.asm_17f555
+.loop
 	call JoyTextDelay
-	call Function17f5ae
+	call .RunJumptable
 	ld a, [wc303]
 	bit 7, a
-	jr nz, .asm_17f56a
+	jr nz, .quit
 	callba Function104000
-	jr .asm_17f555
+	jr .loop
 
-.asm_17f56a
-	call Function17f56e
+.quit
+	call .deinit
 	ret
-; 17f56e
 
-Function17f56e: ; 17f56e
+.deinit
 	ld a, [wc300]
 	cp $22
 	jr z, .asm_17f597
@@ -4732,26 +4691,16 @@
 	ld a, $5
 	call GetSRAMBank
 	xor a
-	ld [$aa4b], a
+	ld [sMobileLoginPassword], a
 	call CloseSRAM
 	ret
 ; 17f5ae
 
-Function17f5ae: ; 17f5ae
-	ld a, [wc303]
-	ld e, a
-	ld d, 0
-	ld hl, Table17f5bd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
+.RunJumptable: ; 17f5ae
+	jumptable .Jumptable, wc303
 ; 17f5bd
 
-Table17f5bd: ; 17f5bd
+.Jumptable: ; 17f5bd
 	dw Function17f5c3
 	dw Function17ff23
 	dw Function17f5d2
@@ -4818,9 +4767,8 @@
 	ld e, a
 	ld d, $0
 	ld hl, Table_17f706
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [wc301]
 	ld e, a
 	ld a, [wc302]
@@ -4858,9 +4806,8 @@
 	jr .asm_17f67d
 
 .asm_17f674
-rept 2
 	inc hl
-endr
+	inc hl
 	dec c
 	jr nz, .asm_17f65d
 
@@ -4878,9 +4825,8 @@
 	ld e, a
 	ld d, 0
 	ld hl, Table_17f699
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld a, [hl]
@@ -4913,26 +4859,26 @@
 
 Function17f6b7: ; 17f6b7
 	ld a, [wc300]
-	call Function17f6cd
+	call .bcd_two_digits
 	inc hl
 	ld a, [wc302]
 	and $f
-	call Function17f6d8
+	call .bcd_digit
 	ld a, [wc301]
-	call Function17f6cd
+	call .bcd_two_digits
 	ret
 ; 17f6cd
 
-Function17f6cd: ; 17f6cd
+.bcd_two_digits: ; 17f6cd
 	ld c, a
 	and $f0
 	swap a
-	call Function17f6d8
+	call .bcd_digit
 	ld a, c
 	and $f
 
-Function17f6d8: ; 17f6d8
-	add $f6
+.bcd_digit: ; 17f6d8
+	add "0"
 	ld [hli], a
 	ret
 ; 17f6dc
--- /dev/null
+++ b/misc/mobile_menu.asm
@@ -1,0 +1,879 @@
+MainMenu_Mobile: ; 49efc
+	call ClearBGPalettes
+	ld a, MUSIC_MOBILE_ADAPTER_MENU
+	ld [wMapMusic], a
+	ld de, MUSIC_MOBILE_ADAPTER_MENU
+	call Function4a6c5
+Function49f0a: ; 49f0a
+	call ClearBGPalettes
+	call Function4a3a7
+	call Function4a492
+	call ClearBGPalettes
+Function49f16: ; 49f16
+	call MobileMenu_InitMenuBuffers
+	ld c, 12
+	call DelayFrames
+	hlcoord 4, 0
+	ld b, 10
+	ld c, 10
+	call Function48cdc
+	hlcoord 6, 2
+	ld de, MobileString1
+	call PlaceString
+	hlcoord 0, 12
+	ld b, 4
+	ld c, SCREEN_HEIGHT
+	call TextBox
+	xor a
+	ld de, String_0x49fe9
+	hlcoord 1, 14
+	call PlaceString
+	call WaitBGMap2
+	call SetPalettes
+	call StaticMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+	jr .check_buttons
+
+.joy_loop
+	call ScrollingMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+
+.check_buttons
+	bit A_BUTTON_F, a
+	jr nz, .a_button
+	bit B_BUTTON_F, a
+	jr nz, .b_button
+	jr .next
+
+.a_button
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	cp 1
+	jp z, Function4a098
+	cp 2
+	jp z, Function4a0b9
+	cp 3
+	jp z, Function4a0c2
+	cp 4
+	jp z, Function4a100
+	ld a, 1
+	call MenuClickSound
+.b_button
+	pop bc
+	call ClearBGPalettes
+	call ClearTileMap
+	ld a, MUSIC_MAIN_MENU
+	ld [wMapMusic], a
+	ld de, MUSIC_MAIN_MENU
+	call Function4a6c5
+	ret
+
+.next
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	dec a
+	ld hl, MobileStrings2
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 13
+	ld b, 4
+	ld c, SCREEN_HEIGHT
+	call ClearBox
+	hlcoord 1, 14
+	call PlaceString
+	jp .useless_jump
+
+.useless_jump
+	call MobileMenu_InitMenuBuffers
+	pop bc
+	ld hl, wMenuCursorY
+	ld [hl], b
+	ld b, $a
+	ld c, $1
+	hlcoord 5, 1
+	call ClearBox
+	jp .joy_loop
+; 49fcc
+
+
+MobileString1: ; 49fcc
+	db   "めいしフ,ルダー"
+	next "あいさつ"
+	next "プロフィール"
+	next "せ", $1e, "い"
+	next "もどる"
+	db   "@"
+; 49fe9
+
+
+MobileStrings2:
+
+String_0x49fe9: ; 49fe9
+	db   "めいし¯つくったり"
+	next "ほぞんしておける フ,ルダーです@"
+; 4a004
+
+String_0x4a004: ; 4a004
+	db   "モバイルたいせんや じぶんのめいしで"
+	next "つかう あいさつ¯つくります@"
+; 4a026
+
+String_0x4a026: ; 4a026
+	db   "あなた%じゅうしょや ねんれいの"
+	next "せ", $1e, "い¯かえられます@"
+; 4a042
+
+String_0x4a042: ; 4a042
+	db  "モバイルセンター", $1d, "せつぞくするとき"
+	next "ひつような こと¯きめます@"
+; 4a062
+
+String_0x4a062: ; 4a062
+	db   "まえ%がめん ", $1d, "もどります"
+	next "@"
+; 4a071
+
+MobileMenu_InitMenuBuffers: ; 4a071 (12:6071)
+	ld hl, w2DMenuCursorInitY
+	ld a, 2
+	ld [hli], a
+	ld a, 5 ; w2DMenuCursorInitX
+	ld [hli], a
+	ld a, 5 ; w2DMenuNumRows
+	ld [hli], a
+	ld a, 1 ; w2DMenuNumCols
+	ld [hli], a
+	ld [hl], $0 ; w2DMenuFlags1
+	set 5, [hl]
+	inc hl
+	xor a ; w2DMenuFlags2
+	ld [hli], a
+	ld a, $20 ; w2DMenuCursorOffsets
+	ld [hli], a
+	; this is a stupid way to load $c3
+	ld a, A_BUTTON
+	add D_UP
+	add D_DOWN
+	add B_BUTTON
+	ld [hli], a ; wMenuJoypadFilter
+	ld a, 1
+	ld [hli], a ; wMenuCursorY, wMenuCursorX
+	ld [hli], a ; wMenuCursorY, wMenuCursorX
+	ret
+
+Function4a098: ; 4a098 (12:6098)
+	ld a, 2
+	call MenuClickSound
+	call PlaceHollowCursor
+	call WaitBGMap
+	call LoadStandardMenuDataHeader
+	callba Function89de0
+	call Call_ExitMenu
+	call MG_Mobile_Layout_LoadPals
+	call Function4a485
+	pop bc
+	jp Function49f16
+
+Function4a0b9: ; 4a0b9 (12:60b9)
+	ld a, 2
+	call MenuClickSound
+	pop bc
+	jp Function4a4c4
+
+Function4a0c2: ; 4a0c2 (12:60c2)
+	ld a, 2
+	call MenuClickSound
+	ld a, BANK(sPlayerData)
+	call GetSRAMBank
+	ld hl, sPlayerData + PlayerName - wPlayerData
+	ld de, PlayerName
+	ld bc, 6 ; japanese name length
+	call CopyBytes
+	call CloseSRAM
+	callba _LoadData
+	ld c, 2
+	call DelayFrames
+	ld c, $1
+	call InitMobileProfile
+	push af
+	call ClearBGPalettes
+	pop af
+	and a
+	jr nz, .skip_save
+	callba _SaveData
+.skip_save
+	ld c, 5
+	call DelayFrames
+	jr asm_4a111
+
+Function4a100: ; 4a100 (12:6100)
+	ld a, 2
+	call MenuClickSound
+	call ClearBGPalettes
+	call Function4a13b
+	call ClearBGPalettes
+	call ClearTileMap
+
+asm_4a111: ; 4a111 (12:6111)
+	pop bc
+	call LoadFontsExtra
+	jp Function49f0a
+
+Function4a118: ; 4a118 (12:6118)
+	ld hl, w2DMenuCursorInitY
+	ld a, $1
+	ld [hli], a
+	ld a, $d
+	ld [hli], a
+	ld a, $3
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hl], $0
+	set 5, [hl]
+	inc hl
+	xor a
+	ld [hli], a
+	ld a, $20
+	ld [hli], a
+	ld a, $1
+	add $2
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hli], a
+	ret
+
+Function4a13b: ; 4a13b (12:613b)
+	call Function4a3a7
+	call Function4a492
+	call Function4a373
+	ld c, 10
+	call DelayFrames
+
+Function4a149: ; 4a149 (12:6149)
+	hlcoord 1, 2
+	ld b, $6
+	ld c, $10
+	call Function48cdc
+	hlcoord 3, 4
+	ld de, String_4a1ef
+	call PlaceString
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	ld a, [wMenuCursorY]
+	dec a
+	ld hl, Strings_4a23d
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 13
+	ld b, $4
+	ld c, $12
+	call ClearBox
+	hlcoord 1, 14
+	call PlaceString
+	callba Function104148
+	call SetPalettes
+	call StaticMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+	jr asm_4a19d
+
+Function4a195: ; 4a195 (12:6195)
+	call ScrollingMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+
+asm_4a19d: ; 4a19d (12:619d)
+	bit 0, a
+	jr nz, .asm_4a1a7
+	bit 1, a
+	jr nz, .asm_4a1ba
+	jr .asm_4a1bc
+.asm_4a1a7
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	cp $1
+	jp z, Function4a20e
+	cp $2
+	jp z, Function4a221
+	ld a, $1
+	call MenuClickSound
+.asm_4a1ba
+	pop bc
+	ret
+.asm_4a1bc
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	dec a
+	ld hl, Strings_4a23d
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 13
+	ld b, $4
+	ld c, $12
+	call ClearBox
+	hlcoord 1, 14
+	call PlaceString
+	jr .asm_4a1db
+.asm_4a1db
+	call Function4a373
+	pop bc
+	ld hl, wMenuCursorY
+	ld [hl], b
+	lb bc, 6, 1
+	hlcoord 2, 3
+	call ClearBox
+	jp Function4a195
+; 4a1ef (12:61ef)
+
+String_4a1ef: ; 4a1ef
+	db   "モバイルセンター¯えらぶ"
+	next "ログインパスワード¯いれる"
+	next "もどる@"
+; 4a20e
+
+Function4a20e: ; 4a20e (12:620e)
+	ld a, $1
+	call MenuClickSound
+	callba Function1719c8
+	call ClearBGPalettes
+	call DelayFrame
+	jr Function4a239
+
+Function4a221: ; 4a221 (12:6221)
+	ld a, $1
+	call MenuClickSound
+	call Function4a28a
+	jr c, Function4a239
+	call Function4a373
+	ld a, $2
+	ld [wMenuCursorY], a
+	jr .asm_4a235
+.asm_4a235
+	pop bc
+	jp Function4a149
+
+Function4a239: ; 4a239 (12:6239)
+	pop bc
+	jp Function4a13b
+; 4a23d (12:623d)
+
+Strings_4a23d: ; 4a23d
+	db   "いつも せつぞく¯する"
+	next "モバイルセンター¯えらびます@"
+
+	db   "モバイルセンター", $1d, "せつぞくするとき"
+	next "つかうパスワード¯ほぞんできます@"
+
+	db   "まえ%がめん ", $1d, "もどります@"
+
+	db   "@"
+; 4a28a
+
+Function4a28a: ; 4a28a (12:628a)
+	hlcoord 2, 3
+	lb bc, 6, 1
+	ld a, " "
+	call Function4a6d8
+	call PlaceHollowCursor
+	call WaitBGMap
+	call LoadStandardMenuDataHeader
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa4b]
+	call CloseSRAM
+	and a
+	jr z, .asm_4a2df
+	hlcoord 12, 0
+	ld b, $5
+	ld c, $6
+	call Function48cdc
+	hlcoord 14, 1
+	ld de, String_4a34b
+	call PlaceString
+	callba Function104148
+	call Function4a118
+	call ScrollingMenuJoypad
+	push af
+	call PlayClickSFX
+	pop af
+	bit B_BUTTON_F, a
+	jr nz, .quit
+	ld a, [wMenuCursorY]
+	cp $2
+	jr z, .DeleteLoginPassword
+	cp $3
+	jr z, .quit
+.asm_4a2df
+	callba Function11765d
+	call ClearBGPalettes
+	call Call_ExitMenu
+	call LoadFontsExtra
+	scf
+	ret
+
+.DeleteLoginPassword
+	call PlaceHollowCursor
+	ld hl, UnknownText_0x4a358
+	call PrintText
+	hlcoord 14, 7
+	ld b, 3
+	ld c, 4
+	call TextBox
+	callba Function104148
+	ld hl, DeletePassword_YesNo_MenuDataHeader
+	call LoadMenuDataHeader
+	call VerticalMenu
+	bit B_BUTTON_F, a
+	jr nz, .dont_delete_password
+	ld a, [wMenuCursorY]
+	cp $2
+	jr z, .dont_delete_password
+	ld a, $5
+	call GetSRAMBank
+	ld hl, sMobileLoginPassword
+	xor a
+	ld bc, LOGIN_PASSWORD_LENGTH
+	call ByteFill
+	call CloseSRAM
+	ld hl, UnknownText_0x4a35d
+	call PrintText
+	call JoyWaitAorB
+.dont_delete_password
+	call ExitMenu
+.quit
+	call Call_ExitMenu
+	callba Function104148
+	xor a
+	ret
+; 4a346 (12:6346)
+
+MenuDataHeader_0x4a346: ; 0x4a346
+	db $40 ; flags
+	db 00, 12 ; start coords
+	db 06, 19 ; end coords
+
+String_4a34b: ; 4a34b
+	db   "いれなおす"
+	next "けす"
+	next "もどる@"
+; 4a358
+
+UnknownText_0x4a358: ; 0x4a358
+	; Delete the saved LOG-IN PASSWORD?
+	text_jump UnknownText_0x1c5196
+	db "@"
+; 0x4a35d
+
+UnknownText_0x4a35d: ; 0x4a35d
+	; Deleted the LOG-IN PASSWORD.
+	text_jump UnknownText_0x1c51b9
+	db "@"
+; 0x4a362
+
+DeletePassword_YesNo_MenuDataHeader: ; 0x4a362
+	db $40 ; flags
+	db 07, 14 ; start coords
+	db 11, 19 ; end coords
+	dw MenuData2_0x4a36a
+	db 2 ; default option
+; 0x4a36a
+
+MenuData2_0x4a36a: ; 0x4a36a
+	db $e0 ; flags
+	db 2 ; items
+	db "はい@"
+	db "いいえ@"
+; 0x4a373
+
+Function4a373: ; 4a373 (12:6373)
+	ld hl, w2DMenuCursorInitY
+	ld a, $4
+	ld [hli], a
+	ld a, $2
+	ld [hli], a
+	ld a, $3
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hl], $0
+	set 5, [hl]
+	inc hl
+	xor a
+	ld [hli], a
+	ld a, $20
+	ld [hli], a
+	ld a, $1
+	add $40
+	add $80
+	add $2
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hli], a
+	ret
+; 4a39a (12:639a)
+
+Function4a39a: ; 4a39a
+	call Function4a485
+	call Function4a492
+	call Function4a3aa
+	call SetPalettes
+	ret
+; 4a3a7
+
+Function4a3a7: ; 4a3a7 (12:63a7)
+	call Function4a485
+Function4a3aa: ; 4a3aa
+	hlcoord 0, 0
+	lb bc, 3, 1
+	xor a
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $1
+	call Function4a6d8
+	lb bc, 1, 1
+	xor a
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $1
+	call Function4a6d8
+	lb bc, 4, 1
+	ld a, $2
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $3
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, " "
+	call Function4a6d8
+	hlcoord 1, 0
+	ld a, $1
+	lb bc, 3, 18
+	call Function4a6d8
+	lb bc, 1, 18
+	ld a, $0
+	call Function4a6d8
+	lb bc, 1, 18
+	ld a, $1
+	call Function4a6d8
+	lb bc, 1, 18
+	ld a, $2
+	call Function4a6d8
+	lb bc, 11, 18
+	ld a, " "
+	call Function4a6d8
+	hlcoord 19, 0
+	lb bc, 3, 1
+	ld a, $0
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $1
+	call Function4a6d8
+	lb bc, 1, 1
+	xor a
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $1
+	call Function4a6d8
+	lb bc, 4, 1
+	ld a, $2
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, $3
+	call Function4a6d8
+	lb bc, 1, 1
+	ld a, " "
+	call Function4a6d8
+	ret
+; 4a449 (12:6449)
+
+Function4a449: ; 4a449
+	ld bc, 3 * SCREEN_WIDTH
+	ld a, $0
+	hlcoord 0, 0
+	call ByteFill
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, $1
+	call ByteFill
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, $0
+	call ByteFill
+	ld bc, 2 * SCREEN_WIDTH
+	ld a, $1
+	call ByteFill
+	ld bc, SCREEN_WIDTH
+	ld a, $2
+	call ByteFill
+	ld bc, SCREEN_WIDTH
+	ld a, $3
+	call ByteFill
+	ld bc, SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	ret
+; 4a485
+
+Function4a485: ; 4a485 (12:6485)
+	ld de, GFX_49c0c
+	ld hl, VTiles2 tile $00
+	lb bc, BANK(GFX_49c0c), 13
+	call Get2bpp
+	ret
+
+Function4a492: ; 4a492 (12:6492)
+	call MG_Mobile_Layout00
+	ret
+
+
+MainMenu_MobileStudium: ; 4a496
+	ld a, [StartDay]
+	ld b, a
+	ld a, [StartHour]
+	ld c, a
+	ld a, [StartMinute]
+	ld d, a
+	ld a, [StartSecond]
+	ld e, a
+	push bc
+	push de
+	callba MobileStudium
+	call ClearBGPalettes
+	pop de
+	pop bc
+	ld a, b
+	ld [StartDay], a
+	ld a, c
+	ld [StartHour], a
+	ld a, d
+	ld [StartMinute], a
+	ld a, e
+	ld [StartSecond], a
+	ret
+; 4a4c4
+
+
+Function4a4c4: ; 4a4c4 (12:64c4)
+	call ClearBGPalettes
+	call Function4a3a7
+	call Function4a492
+	call Function4a680
+	call ClearBGPalettes
+	ld c, 20
+	call DelayFrames
+	hlcoord 2, 0
+	ld b, $a
+	ld c, $e
+	call Function48cdc
+	hlcoord 4, 2
+	ld de, String_4a5c5
+	call PlaceString
+	hlcoord 4, 4
+	ld de, String_4a5cd
+	call PlaceString
+	hlcoord 4, 6
+	ld de, String_4a5da
+	call PlaceString
+	hlcoord 4, 8
+	ld de, String_4a5e6
+	call PlaceString
+	hlcoord 4, 10
+	ld de, String_4a5f2
+	call PlaceString
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	xor a
+	ld hl, Strings_4a5f6
+	ld d, h
+	ld e, l
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $1
+	ld hl, Strings_4a5f6
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 16
+	call PlaceString
+	call WaitBGMap2
+	call SetPalettes
+	call StaticMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+	jr asm_4a54d
+
+Function4a545: ; 4a545 (12:6545)
+	call ScrollingMenuJoypad
+	ld hl, wMenuCursorY
+	ld b, [hl]
+	push bc
+
+asm_4a54d: ; 4a54d (12:654d)
+	bit 0, a
+	jr nz, .asm_4a557
+	bit 1, a
+	jr nz, .asm_4a574
+	jr .asm_4a57e
+.asm_4a557
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	cp $1
+	jp z, Function4a6ab
+	cp $2
+	jp z, Function4a6ab
+	cp $3
+	jp z, Function4a6ab
+	cp $4
+	jp z, Function4a6ab
+	ld a, $1
+	call MenuClickSound
+.asm_4a574
+	pop bc
+	call ClearBGPalettes
+	call ClearTileMap
+	jp Function49f0a
+.asm_4a57e
+	ld hl, wMenuCursorY
+	ld a, [hl]
+	dec a
+	add a
+	push af
+	ld hl, Strings_4a5f6
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 13
+	ld b, $4
+	ld c, $12
+	call ClearBox
+	hlcoord 1, 14
+	call PlaceString
+	pop af
+	inc a
+	ld hl, Strings_4a5f6
+	call GetNthString
+	ld d, h
+	ld e, l
+	hlcoord 1, 16
+	call PlaceString
+	jp Function4a5b0
+
+Function4a5b0: ; 4a5b0 (12:65b0)
+	call Function4a680
+	pop bc
+	ld hl, wMenuCursorY
+	ld [hl], b
+	ld b, $a
+	ld c, $1
+	hlcoord 3, 1
+	call ClearBox
+	jp Function4a545
+; 4a5c5 (12:65c5)
+
+String_4a5c5: ; 4a5c5
+	db "じこしょうかい@"
+String_4a5cd: ; 4a5cd
+	db "たいせん ", $4a, "はじまるとき@"
+String_4a5da: ; 4a5da
+	db "たいせん ", $1d, "かったとき@"
+String_4a5e6: ; 4a5e6
+	db "たいせん ", $1d, "まけたとき@"
+String_4a5f2: ; 4a5f2
+	db "もどる@"
+; 4a5f6
+
+Strings_4a5f6: ; 4a5f6
+	db "めいし や ニュース ", $1d, "のせる@"
+	db "あなた%あいさつです@"
+	db "モバイル たいせん", $4a, "はじまるとき@"
+	db "あいて", $1d, "みえる あいさつです@"
+	db "モバイル たいせんで かったとき@"
+	db "あいて", $1d, "みえる あいさつです@"
+	db "モバイル たいせんで まけたとき@"
+	db "あいて", $1d, "みえる あいさつです@"
+	db "まえ%がめん ", $1d, "もどります@"
+	db "@"
+; 4a680
+
+Function4a680: ; 4a680 (12:6680)
+	ld hl, w2DMenuCursorInitY
+	ld a, $2
+	ld [hli], a
+	ld a, $3
+	ld [hli], a
+	ld a, $5
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hl], $0
+	set 5, [hl]
+	inc hl
+	xor a
+	ld [hli], a
+	ld a, $20
+	ld [hli], a
+	ld a, $1
+	add $40
+	add $80
+	add $2
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hli], a
+	xor a
+rept 3
+	ld [hli], a
+endr
+	ret
+
+Function4a6ab: ; 4a6ab (12:66ab)
+	ld a, $2
+	call MenuClickSound
+	call ClearBGPalettes
+	ld b, SCGB_08
+	call GetSGBLayout
+	callba Function11c1ab
+	pop bc
+	call LoadFontsExtra
+	jp Function4a4c4
+
+Function4a6c5: ; 4a6c5 (12:66c5)
+	ld a, $5
+	ld [MusicFade], a
+	ld a, e
+	ld [MusicFadeIDLo], a
+	ld a, d
+	ld [MusicFadeIDHi], a
+	ld c, 22
+	call DelayFrames
+	ret
+
+Function4a6d8: ; 4a6d8 (12:66d8)
+	push bc
+	push hl
+.asm_4a6da
+	ld [hli], a
+	dec c
+	jr nz, .asm_4a6da
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, Function4a6d8
+	ret
--- /dev/null
+++ b/misc/printer_77.asm
@@ -1,0 +1,356 @@
+PrintPage1: ; 1dc1b0
+	hlcoord 0, 0
+	ld de, wca90
+	ld bc, 17 * SCREEN_WIDTH
+	call CopyBytes
+	ld hl, wcab5
+	ld a, $62
+	ld [hli], a
+	inc a
+	ld [hl], a
+	ld hl, wcac9
+	ld a, $64
+	ld [hli], a
+	inc a
+	ld [hl], a
+	ld hl, wcb45
+	ld a, " "
+	ld [hli], a
+	ld [hl], a
+	ld hl, wcb59
+	ld a, $61
+	ld [hli], a
+	ld [hl], a
+	ld hl, wcb6e
+	lb bc, 5, 18
+	call ClearBox
+	ld a, [wd265]
+	dec a
+	call CheckCaughtMon
+	push af
+	ld a, [wd265]
+	ld b, a
+	ld c, 1 ; get page 1
+	callba GetDexEntryPagePointer
+	pop af
+	ld a, b
+	ld hl, wcb6d
+	call nz, FarString
+	ld hl, wcaa3
+	ld [hl], $35
+	ld de, SCREEN_WIDTH
+	add hl, de
+	ld b, $f
+.column_loop
+	ld [hl], $37
+	add hl, de
+	dec b
+	jr nz, .column_loop
+	ld [hl], $3a
+	ret
+; 1dc213
+
+PrintPage2: ; 1dc213
+	ld hl, wca90
+	ld bc, $a0
+	ld a, " "
+	call ByteFill
+	ld hl, wca90
+	ld a, $36
+	ld b, $6
+	call .FillColumn
+	ld hl, wcaa3
+	ld a, $37
+	ld b, $6
+	call .FillColumn
+	ld hl, wcb08
+	ld [hl], $38
+	inc hl
+	ld a, $39
+	ld bc, SCREEN_HEIGHT
+	call ByteFill
+	ld [hl], $3a
+	ld hl, wcb1c
+	ld bc, SCREEN_WIDTH
+	ld a, $32
+	call ByteFill
+	ld a, [wd265]
+	dec a
+	call CheckCaughtMon
+	push af
+	ld a, [wd265]
+	ld b, a
+	ld c, 2 ; get page 2
+	callba GetDexEntryPagePointer
+	pop af
+	ld hl, wcaa5
+	ld a, b
+	call nz, FarString
+	ret
+; 1dc26a
+
+.FillColumn: ; 1dc26a
+	push de
+	ld de, SCREEN_WIDTH
+.column_loop
+	ld [hl], a
+	add hl, de
+	dec b
+	jr nz, .column_loop
+	pop de
+	ret
+; 1dc275
+
+GBPrinterStrings:
+String_1dc275: db "@"
+String_1dc276: next " CHECKING LINK...@"
+String_1dc289: next "  TRANSMITTING...@"
+String_1dc29c: next "    PRINTING...@"
+String_1dc2ad:
+	db   " Printer Error 1"
+	next ""
+	next "Check the Game Boy"
+	next "Printer Manual."
+	db   "@"
+String_1dc2e2:
+	db   " Printer Error 2"
+	next ""
+	next "Check the Game Boy"
+	next "Printer Manual."
+	db   "@"
+String_1dc317:
+	db   " Printer Error 3"
+	next ""
+	next "Check the Game Boy"
+	next "Printer Manual."
+	db   "@"
+String_1dc34c:
+	db   " Printer Error 4"
+	next ""
+	next "Check the Game Boy"
+	next "Printer Manual."
+	db   "@"
+; 1dc381
+
+Function1dc381: ; 1dc381
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	call LoadFontsBattleExtra
+
+	ld de, MobileHPIcon
+	ld hl, VTiles2 tile $71
+	lb bc, BANK(MobileHPIcon), 1
+	call Request1bpp
+
+	ld de, MobileLvIcon
+	ld hl, VTiles2 tile $6e
+	lb bc, BANK(MobileLvIcon), 1
+	call Request1bpp
+
+	ld de, ShinyIcon
+	ld hl, VTiles2 tile $3f
+	lb bc, BANK(ShinyIcon), 1
+	call Get2bpp
+
+	xor a
+	ld [MonType], a
+	callba CopyPkmnToTempMon
+	hlcoord 0, 7
+	ld b, 9
+	ld c, 18
+	call TextBox
+	hlcoord 8, 2
+	ld a, [TempMonLevel]
+	call Function383d
+	hlcoord 12, 2
+	ld [hl], "◀" ; Filled left triangle
+	inc hl
+	ld de, TempMonMaxHP
+	lb bc, 2, 3
+	call PrintNum
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	ld [CurSpecies], a
+	ld hl, PartyMonNicknames
+	call Function1dc50e
+	hlcoord 8, 4
+	call PlaceString
+	hlcoord 9, 6
+	ld [hl], "/"
+	call GetPokemonName
+	hlcoord 10, 6
+	call PlaceString
+	hlcoord 8, 0
+	ld [hl], "№"
+	inc hl
+	ld [hl], "."
+	inc hl
+	ld de, wd265
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+	call PrintNum
+	hlcoord 1, 9
+	ld de, String1dc550
+	call PlaceString
+	ld hl, PartyMonOT
+	call Function1dc50e
+	hlcoord 4, 9
+	call PlaceString
+	hlcoord 1, 11
+	ld de, String1dc559
+	call PlaceString
+	hlcoord 4, 11
+	ld de, TempMonID
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+	call PrintNum
+	hlcoord 1, 14
+	ld de, String1dc554
+	call PlaceString
+	hlcoord 7, 14
+	ld a, [TempMonMoves + 0]
+	call Function1dc51a
+	call Function1dc52c
+	ld hl, TempMonDVs
+	predef GetUnownLetter
+	ld hl, wBoxAlignment
+	xor a
+	ld [hl], a
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr z, .asm_1dc469
+	inc [hl]
+
+.asm_1dc469
+	hlcoord 0, 0
+	call _PrepMonFrontpic
+	call WaitBGMap
+	ld b, SCGB_STATS_SCREEN_HP_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ret
+; 1dc47b
+
+Function1dc47b: ; 1dc47b
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	call LoadFontsBattleExtra
+	xor a
+	ld [MonType], a
+	callba CopyPkmnToTempMon
+	hlcoord 0, 0
+	ld b, 15
+	ld c, 18
+	call TextBox
+	ld bc, SCREEN_WIDTH
+	decoord 0, 0
+	hlcoord 0, 1
+	call CopyBytes
+	hlcoord 7, 0
+	ld a, [TempMonMoves + 1]
+	call Function1dc51a
+	hlcoord 7, 2
+	ld a, [TempMonMoves + 2]
+	call Function1dc51a
+	hlcoord 7, 4
+	ld a, [TempMonMoves + 3]
+	call Function1dc51a
+	hlcoord 7, 7
+	ld de, String1dc55d
+	call PlaceString
+	hlcoord 16, 7
+	ld de, TempMonAttack
+	call .PrintTempMonStats
+	hlcoord 16, 9
+	ld de, TempMonDefense
+	call .PrintTempMonStats
+	hlcoord 16, 11
+	ld de, TempMonSpclAtk
+	call .PrintTempMonStats
+	hlcoord 16, 13
+	ld de, TempMonSpclDef
+	call .PrintTempMonStats
+	hlcoord 16, 15
+	ld de, TempMonSpeed
+	call .PrintTempMonStats
+	call WaitBGMap
+	ld b, SCGB_STATS_SCREEN_HP_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ret
+; 1dc507
+
+.PrintTempMonStats: ; 1dc507
+	lb bc, 2, 3
+	call PrintNum
+	ret
+; 1dc50e
+
+Function1dc50e: ; 1dc50e
+	ld bc, NAME_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ret
+; 1dc51a
+
+Function1dc51a: ; 1dc51a
+	and a
+	jr z, .no_move
+
+	ld [wd265], a
+	call GetMoveName
+	jr .got_string
+
+.no_move
+	ld de, String1dc584
+
+.got_string
+	call PlaceString
+	ret
+; 1dc52c
+
+Function1dc52c: ; 1dc52c
+	callba GetGender
+	ld a, " "
+	jr c, .got_gender
+	ld a, "♂"
+	jr nz, .got_gender
+	ld a, "♀"
+
+.got_gender
+	hlcoord 17, 2
+	ld [hl], a
+	ld bc, TempMonDVs
+	callba CheckShininess
+	ret nc
+	hlcoord 18, 2
+	ld [hl], "<SHINY>"
+	ret
+; 1dc550
+
+String1dc550: ; 1dc550
+	db "OT/@"
+
+String1dc554: ; 1dc554
+	db "MOVE@"
+
+String1dc559: ; 1dc559
+	db "<ID>№.@"
+
+String1dc55d: ; 1dc55d
+	db   "ATTACK"
+	next "DEFENSE"
+	next "SPCL.ATK"
+	next "SPCL.DEF"
+	next "SPEED"
+	db   "@"
+
+String1dc584: ; 1dc584
+	db "------------@"
+; 1dc591
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -11,15 +11,14 @@
 	cp SCGB_RAM
 	jr nz, .not_ram
 	ld a, [SGBPredef]
-
 .not_ram
-	cp SCGB_FC
-	jp z, Function96f3
+	cp SCGB_PARTY_MENU_HP_PALS
+	jp z, CGB_ApplyPartyMenuHPPals
 	call Function9673
 	ld l, a
 	ld h, 0
 	add hl, hl
-	ld de, .jumptable
+	ld de, .dw
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -33,17 +32,17 @@
 	ret
 ; 8d7a
 
-.jumptable: ; 8d7a
-	dw _CGB00
-	dw _CGB01
-	dw _CGB02
-	dw _CGB03
+.dw: ; 8d7a
+	dw _CGB_BattleGrayscale
+	dw _CGB_BattleColors
+	dw _CGB_PokegearPals
+	dw _CGB_StatsScreenHPPals
 	dw _CGB04
-	dw _CGB05
+	dw _CGB_SlotMachine
 	dw _CGB06
 	dw _CGB07
 	dw _CGB08
-	dw _CGB09
+	dw _CGB_MapPals
 	dw _CGB0a
 	dw _CGB0b
 	dw _CGB0c
@@ -54,8 +53,8 @@
 	dw _CGB11
 	dw _CGB12
 	dw _CGB13
-	dw _CGB14
-	dw _CGB15
+	dw _CGB_PackPals
+	dw _CGB_TrainerCard
 	dw _CGB16
 	dw _CGB17
 	dw _CGB18
@@ -62,18 +61,18 @@
 	dw _CGB19
 	dw _CGB1a
 	dw _CGB1b
-	dw _CGB1c
+	dw _CGB_FrontpicPals
 	dw _CGB1d
 	dw _CGB1e
 ; 8db8
 
-_CGB00: ; 8db8
+_CGB_BattleGrayscale: ; 8db8
 	ld hl, PalPacket_9c66 + 1
 	ld de, UnknBGPals
 	ld c, $4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
-	ld de, UnknBGPals + $20
+	ld de, UnknBGPals + 4 palettes
 	ld c, $4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
@@ -80,47 +79,44 @@
 	ld de, UnknOBPals
 	ld c, $2
 	call CopyPalettes
-	jr Function8e23
+	jr _CGB_FinishBattleScreenLayout
 
-_CGB01: ; 8ddb
+_CGB_BattleColors: ; 8ddb
 	ld de, UnknBGPals
-	call Function9729
+	call GetBattlemonBackpicPalettePointer
 	push hl
-	call Function9643
-	call Function973a
+	call LoadPalette_White_Col1_Col2_Black
+	call GetEnemyFrontpicPalettePointer
 	push hl
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, [EnemyHPPal]
 	ld l, a
 	ld h, $0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, $0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld hl, Palettes_a8ca
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld de, UnknOBPals
 	pop hl
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	pop hl
-	call Function9643
-	ld a, SCGB_01
+	call LoadPalette_White_Col1_Col2_Black
+	ld a, SCGB_BATTLE_COLORS
 	ld [SGBPredef], a
-	call Function96a4
-
-Function8e23: ; 8e23
-	call Function8e85
+	call ApplyPals
+_CGB_FinishBattleScreenLayout: ; 8e23
+	call InitPartyMenuBGPal7
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $2
@@ -150,111 +146,112 @@
 	ld a, $7
 	call ByteFill
 	ld hl, Palettes_979c
-	ld de, UnknOBPals + $10
-	ld bc, $0030
+	ld de, UnknOBPals + 2 palettes
+	ld bc, 6 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96b3
+	call ApplyAttrMap
 	ret
 ; 8e85
 
 
-Function8e85: ; 8e85
+InitPartyMenuBGPal7: ; 8e85
 	callba Function100dc0
-
-Function8e8b: ; 8e8b
+Mobile_InitPartyMenuBGPal7: ; 8e8b
 	ld hl, Palette_b311
-	jr nc, .asm_8e93
+	jr nc, .not_mobile
 	ld hl, Palette_b309
-
-.asm_8e93
+.not_mobile
 	ld de, UnknBGPals + 8 * 7
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
 ; 8e9f
 
-Function8e9f: ; 8e9f
+InitPartyMenuBGPal0: ; 8e9f
 	callba Function100dc0
 	ld hl, Palette_b311
-	jr nc, .asm_8ead
+	jr nc, .not_mobile
 	ld hl, Palette_b309
-
-.asm_8ead
+.not_mobile
 	ld de, UnknBGPals
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
 ; 8eb9
 
-_CGB02: ; 8eb9
+_CGB_PokegearPals: ; 8eb9
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_8ec5
-	ld hl, Palettes_b759
-	jr .asm_8ec8
+	jr z, .male
+	ld hl, FemalePokegearPals
+	jr .got_pals
 
-.asm_8ec5
-	ld hl, Palettes_b729
-
-.asm_8ec8
+.male
+	ld hl, MalePokegearPals
+.got_pals
 	ld de, UnknBGPals
-	ld bc, $0030
+	ld bc, 6 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96a4
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
 ; 8edb
 
-_CGB03: ; 8edb
+_CGB_StatsScreenHPPals: ; 8edb
 	ld de, UnknBGPals
 	ld a, [wcda1]
 	ld l, a
 	ld h, $0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
-	call Function974b
-	call Function9643
+	call GetPlayerOrMonPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld hl, Palettes_a8ca
-	call Function9643
+	call LoadPalette_White_Col1_Col2_Black
 	ld hl, Palette8f52
 	ld de, UnknBGPals + 8 * 3
-	ld bc, $0018
+	ld bc, 3 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function9699
+	call WipeAttrMap
+
 	hlcoord 0, 0, AttrMap
 	lb bc, 8, SCREEN_WIDTH
 	ld a, $1
 	call FillBoxCGB
+
 	hlcoord 10, 16, AttrMap
-	ld bc, $000a
+	ld bc, 10
 	ld a, $2
 	call ByteFill
+
 	hlcoord 13, 5, AttrMap
 	lb bc, 2, 2
 	ld a, $3
 	call FillBoxCGB
+
 	hlcoord 15, 5, AttrMap
 	lb bc, 2, 2
 	ld a, $4
 	call FillBoxCGB
+
 	hlcoord 17, 5, AttrMap
 	lb bc, 2, 2
 	ld a, $5
 	call FillBoxCGB
-	call Function96b3
-	call Function96a4
+
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -277,7 +274,7 @@
 	RGB 00, 00, 00
 ; 8f6a
 
-Unknown_8f6a: ; 8f6a
+StatsScreenPals: ; 8f6a
 	RGB 31, 19, 31
 
 	RGB 21, 31, 14
@@ -288,33 +285,32 @@
 _CGB04: ; 8f70
 	ld de, UnknBGPals
 	ld a, $1d
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [CurPartySpecies]
 	cp $ff
-	jr nz, .asm_8f8a
+	jr nz, .is_pokemon
 	ld hl, Palette8fba
 	call LoadHLPaletteIntoDE
-	jr .asm_8f90
+	jr .got_palette
 
-.asm_8f8a
-	call Function9775
-	call Function9643
-
-.asm_8f90
-	call Function9699
+.is_pokemon
+	call GetMonPalettePointer_
+	call LoadPalette_White_Col1_Col2_Black
+.got_palette
+	call WipeAttrMap
 	hlcoord 1, 1, AttrMap
 	lb bc, 7, 7
 	ld a, $1
 	call FillBoxCGB
-	call Function971a
+	call InitPartyMenuOBPals
 	ld hl, Palette8fc2
-	ld de, UnknOBPals + $38
-	ld bc, $0008
+	ld de, UnknOBPals + 7 palettes
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -336,29 +332,28 @@
 _CGB17: ; 8fca
 	ld de, UnknBGPals
 	ld a, $1d
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [CurPartySpecies]
 	cp $ff
-	jr nz, .asm_8fe4
+	jr nz, .GetMonPalette
 	ld hl, Palette9036
 	call LoadHLPaletteIntoDE
-	jr .asm_8fed
+	jr .Resume
 
-.asm_8fe4
+.GetMonPalette
 	ld bc, TempMonDVs
-	call Function974b
-	call Function9643
-
-.asm_8fed
-	call Function9699
+	call GetPlayerOrMonPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
+.Resume
+	call WipeAttrMap
 	hlcoord 1, 4, AttrMap
 	lb bc, 7, 7
 	ld a, $1
 	call FillBoxCGB
-	call Function971a
-	call Function96b3
-	call Function96a4
+	call InitPartyMenuOBPals
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -369,19 +364,19 @@
 	call LoadHLPaletteIntoDE
 	jr .asm_901a
 
+.unused
 	ld bc, TempMonDVs
-	call Function974b
-	call Function9643
-
+	call GetPlayerOrMonPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 .asm_901a
-	call Function9699
+	call WipeAttrMap
 	hlcoord 1, 1, AttrMap
 	lb bc, 7, 7
 	ld a, $1
 	call FillBoxCGB
-	call Function971a
-	call Function96b3
-	call Function96a4
+	call InitPartyMenuOBPals
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -397,31 +392,31 @@
 _CGB16: ; 903e
 	ld de, UnknBGPals
 	ld a, $1d
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [CurPartySpecies]
-	call Function9775
-	call Function9643
-	call Function9699
+	call GetMonPalettePointer_
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
 	hlcoord 7, 5, AttrMap
 	lb bc, 7, 7
 	ld a, $1
 	call FillBoxCGB
-	call Function971a
-	call Function96b3
-	call Function96a4
+	call InitPartyMenuOBPals
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
 ; 906e
 
-_CGB05: ; 906e
+_CGB_SlotMachine: ; 906e
 	ld hl, Palettes_b7a9
 	ld de, UnknBGPals
-	ld bc, $0080
+	ld bc, $80
 	ld a, $5
 	call FarCopyWRAM
-	call Function9699
+	call WipeAttrMap
 	hlcoord 0, 2, AttrMap
 	lb bc, 10, 3
 	ld a, $2
@@ -459,11 +454,11 @@
 	ld a, $1
 	call FillBoxCGB
 	hlcoord 0, 12, AttrMap
-	ld bc, $0078
+	ld bc, $78
 	ld a, $7
 	call ByteFill
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -472,17 +467,17 @@
 _CGB06: ; 90f8
 	ld hl, PalPacket_9ca6 + 1
 	call CopyFourPalettes
-	call Function9699
+	call WipeAttrMap
 	ld de, UnknOBPals
 	ld a, $3c
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	hlcoord 0, 6, AttrMap
 	lb bc, 12, SCREEN_WIDTH
 	ld a, $1
 	call FillBoxCGB
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -491,9 +486,8 @@
 _CGB07: ; 9122
 	ld b, 0
 	ld hl, Jumptable_912d
-rept 2
 	add hl, bc
-endr
+	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -512,10 +506,10 @@
 	call LoadHLPaletteIntoDE
 	ld hl, Palette_9156
 	ld de, UnknOBPals
-	ld bc, $0010
+	ld bc, 2 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function9699
+	call WipeAttrMap
 	ret
 ; 914e
 
@@ -540,13 +534,14 @@
 Function9166: ; 9166
 	ld de, UnknBGPals
 	ld a, $38
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
+
 	ld de, UnknOBPals
 	ld a, $39
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	call Function9699
+	call WipeAttrMap
 	ret
 ; 9180
 
@@ -555,9 +550,9 @@
 	call CopyFourPalettes
 	ld de, UnknOBPals
 	ld a, $3a
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	call Function9699
+	call WipeAttrMap
 	ret
 ; 9195
 
@@ -564,12 +559,12 @@
 _CGB11: ; 9195
 	ld hl, Palettes_b789
 	ld de, UnknBGPals
-	ld bc, $0028
+	ld bc, 5 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96a4
-	call Function9699
-	call Function96b3
+	call ApplyPals
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 91ad
 
@@ -576,19 +571,20 @@
 _CGB08: ; 91ad
 	ld hl, Palettes_b641
 	ld de, UnknBGPals
-	ld bc, $0080
+	ld bc, 16 palettes
 	ld a, $5
 	call FarCopyWRAM
+
 	ld hl, PalPacket_9cb6 + 1
 	call CopyFourPalettes
-	call Function9699
-	call Function96b3
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 91c8
 
-_CGB09: ; 91c8
-	call Functionb1de
-	ld a, SCGB_09
+_CGB_MapPals: ; 91c8
+	call LoadMapPals
+	ld a, SCGB_MAPPALS
 	ld [SGBPredef], a
 	ret
 ; 91d1
@@ -596,10 +592,10 @@
 _CGB0a: ; 91d1
 	ld hl, PalPacket_9c56 + 1
 	call CopyFourPalettes
-	call Function8e9f
-	call Function8e85
-	call Function971a
-	call Function96b3
+	call InitPartyMenuBGPal0
+	call InitPartyMenuBGPal7
+	call InitPartyMenuOBPals
+	call ApplyAttrMap
 	ret
 ; 91e4
 
@@ -607,13 +603,13 @@
 	ld de, UnknBGPals
 	ld a, c
 	and a
-	jr z, .asm_91f5
+	jr z, .pokemon
 	ld a, $1a
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	jr .asm_921a
+	jr .got_palette
 
-.asm_91f5
+.pokemon
 	ld hl, PartyMon1DVs
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
@@ -621,18 +617,18 @@
 	ld c, l
 	ld b, h
 	ld a, [PlayerHPPal]
-	call Function974b
-	call Function9643
+	call GetPlayerOrMonPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld hl, Palettes_979c
-	ld de, UnknOBPals + $10
-	ld bc, $0030
+	ld de, UnknOBPals + 2 palettes
+	ld bc, 6 palettes
 	ld a, $5
 	call FarCopyWRAM
 
-.asm_921a
-	call Function9699
-	call Function96b3
-	call Function96a4
+.got_palette
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -641,17 +637,17 @@
 _CGB0c: ; 9228
 	ld hl, Palettes_b6f1
 	ld de, UnknBGPals
-	ld bc, $0028
+	ld bc, 5 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ld hl, Palettes_b719
 	ld de, UnknOBPals
-	ld bc, $0010
+	ld bc, 2 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ld a, SCGB_08
 	ld [SGBPredef], a
-	call Function96a4
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -660,8 +656,8 @@
 _CGB0d: ; 9251
 	ld hl, PalPacket_9cb6 + 1
 	call CopyFourPalettes
-	call Function9699
-	call Function96b3
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 925e
 
@@ -670,7 +666,7 @@
 	call CopyFourPalettes
 	ld de, UnknOBPals
 	ld a, $4c
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [rSVBK]
 	push af
@@ -683,49 +679,49 @@
 	ld [hl], a
 	pop af
 	ld [rSVBK], a
-	call Function9699
-	call Function96b3
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 9289
 
-_CGB15: ; 9289
+_CGB_TrainerCard: ; 9289
 	ld de, UnknBGPals
 	xor a
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $1
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $3
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $2
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $4
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $7
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $6
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $5
-	call Function976b
-	call Function9643
+	call GetTrainerPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
 	ld a, $24
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
+
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, [PlayerGender]
 	and a
 	ld a, $1
-	jr z, .asm_92e3
+	jr z, .got_gender
 	ld a, $0
-
-.asm_92e3
+.got_gender
 	call ByteFill
 	hlcoord 14, 1, AttrMap
 	lb bc, 7, 5
@@ -732,10 +728,9 @@
 	ld a, [PlayerGender]
 	and a
 	ld a, $0
-	jr z, .asm_92f6
+	jr z, .got_gender2
 	ld a, $1
-
-.asm_92f6
+.got_gender2
 	call FillBoxCGB
 	hlcoord 18, 1, AttrMap
 	ld [hl], $1
@@ -770,24 +765,22 @@
 	ld a, [PlayerGender]
 	and a
 	push af
-	jr z, .asm_935d
+	jr z, .got_gender3
 	hlcoord 14, 14, AttrMap
 	lb bc, 2, 4
 	ld a, $1
 	call FillBoxCGB
-
-.asm_935d
+.got_gender3
 	pop af
 	ld c, $0
-	jr nz, .asm_9363
+	jr nz, .got_gender4
 	inc c
-
-.asm_9363
+.got_gender4
 	ld a, c
 	hlcoord 18, 1, AttrMap
 	ld [hl], a
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -796,24 +789,23 @@
 _CGB0e: ; 9373
 	ld de, UnknBGPals
 	ld a, $10
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, 0
-rept 2
 	add hl, hl
-endr
+	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call Function9643
-	call Function9699
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
 	hlcoord 11, 1, AttrMap
 	lb bc, 2, 9
 	ld a, $1
 	call FillBoxCGB
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -822,9 +814,9 @@
 _CGB0f: ; 93a6
 	ld hl, PalPacket_9c46 + 1
 	call CopyFourPalettes
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -833,37 +825,38 @@
 _CGB10: ; 93ba
 	ld de, UnknBGPals
 	ld a, $1d
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
 ; 93d3
 
-_CGB14: ; 93d3
+_CGB_PackPals: ; 93d3
+; pack pals
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
-	jr z, .asm_93e6
+	jr z, .tutorial_male
 
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_93e6
+	jr z, .tutorial_male
 
-	ld hl, Palettes_9469
-	jr .asm_93e9
+	ld hl, .KrisPackPals
+	jr .got_gender
 
-.asm_93e6
-	ld hl, Palettes_9439
+.tutorial_male
+	ld hl, .ChrisPackPals
 
-.asm_93e9
+.got_gender
 	ld de, UnknBGPals
-	ld bc, $0040
+	ld bc, 8 palettes ; 6 palettes?
 	ld a, $5
 	call FarCopyWRAM
-	call Function9699
+	call WipeAttrMap
 	hlcoord 0, 0, AttrMap
 	lb bc, 1, 10
 	ld a, $1
@@ -884,34 +877,39 @@
 	lb bc, 3, 5
 	ld a, $5
 	call FillBoxCGB
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
 ; 9439
 
-Palettes_9439: ; 9439
+.ChrisPackPals: ; 9439
 	RGB 31, 31, 31
 	RGB 15, 15, 31
 	RGB 00, 00, 31
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 15, 15, 31
 	RGB 00, 00, 31
 	RGB 00, 00, 00
+
 	RGB 31, 11, 31
 	RGB 15, 15, 31
 	RGB 00, 00, 31
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 15, 15, 31
 	RGB 00, 00, 31
 	RGB 31, 00, 00
+
 	RGB 31, 31, 31
 	RGB 15, 15, 31
 	RGB 31, 00, 00
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 07, 19, 07
 	RGB 07, 19, 07
@@ -918,27 +916,32 @@
 	RGB 00, 00, 00
 ; 9469
 
-Palettes_9469: ; 9469
+.KrisPackPals: ; 9469
 	RGB 31, 31, 31
 	RGB 31, 14, 31
 	RGB 31, 07, 31
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 14, 31
 	RGB 31, 07, 31
 	RGB 00, 00, 00
+
 	RGB 15, 15, 31
 	RGB 31, 14, 31
 	RGB 31, 07, 31
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 14, 31
 	RGB 31, 07, 31
 	RGB 31, 00, 00
+
 	RGB 31, 31, 31
 	RGB 31, 14, 31
 	RGB 31, 00, 00
 	RGB 00, 00, 00
+
 	RGB 31, 31, 31
 	RGB 07, 19, 07
 	RGB 07, 19, 07
@@ -946,18 +949,18 @@
 ; 9499
 
 _CGB12: ; 9499
-	call _CGB09
-	ld de, $0014
+	call _CGB_MapPals
+	ld de, SCREEN_WIDTH
 	hlcoord 0, 0, AttrMap
 	ld a, [wMenuBorderTopCoord]
-.asm_94a5
+.loop
 	and a
-	jr z, .asm_94ac
+	jr z, .found_top
 	dec a
 	add hl, de
-	jr .asm_94a5
+	jr .loop
 
-.asm_94ac
+.found_top
 	ld a, [wMenuBorderLeftCoord]
 	ld e, a
 	ld d, $0
@@ -976,7 +979,7 @@
 	ld c, a
 	ld a, $0
 	call FillBoxCGB
-	call Function96b3
+	call ApplyAttrMap
 	ret
 ; 94d0
 
@@ -983,7 +986,7 @@
 _CGB13: ; 94d0
 	ld hl, PalPacket_9ba6 + 1
 	call CopyFourPalettes
-	call Function9699
+	call WipeAttrMap
 	hlcoord 0, 4, AttrMap
 	lb bc, 10, SCREEN_WIDTH
 	ld a, $2
@@ -992,8 +995,8 @@
 	lb bc, 6, SCREEN_WIDTH
 	ld a, $1
 	call FillBoxCGB
-	call Function96b3
-	call Function96a4
+	call ApplyAttrMap
+	call ApplyPals
 	ld a, $1
 	ld [hCGBPalUpdate], a
 	ret
@@ -1002,21 +1005,21 @@
 _CGB19: ; 94fa
 	ld de, UnknBGPals
 	ld a, $4e
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	ld hl, Palette_9521
+	ld hl, .Palette
 	ld de, UnknOBPals
 	call LoadHLPaletteIntoDE
-	ld hl, Palette_9521
-	ld de, UnknOBPals + 8
+	ld hl, .Palette
+	ld de, UnknOBPals + 1 palettes
 	call LoadHLPaletteIntoDE
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ret
 ; 9521
 
-Palette_9521: ; 9521
+.Palette: ; 9521
 	RGB 31, 31, 31
 	RGB 13, 11, 00
 	RGB 23, 12, 28
@@ -1027,11 +1030,11 @@
 	ld de, UnknBGPals
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
-	call Function974b
-	call Function9643
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call GetPlayerOrMonPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ret
 ; 9542
 
@@ -1038,10 +1041,10 @@
 _CGB1e: ; 9542
 	ld de, UnknBGPals
 	ld a, [CurPartySpecies]
-	call Function9775
-	call Function9643
-	call Function9699
-	call Function96b3
+	call GetMonPalettePointer_
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
+	call ApplyAttrMap
 	ret
 ; 9555
 
@@ -1050,37 +1053,37 @@
 	call CopyFourPalettes
 	ld hl, Palettes_b681
 	ld de, UnknOBPals
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
-	ld de, UnknOBPals + $38
+	ld de, UnknOBPals + 7 palettes
 	ld a, $1c
-	call GetAthPalletFromPalettes9df6
+	call GetPredefPal
 	call LoadHLPaletteIntoDE
-	call Function9699
+	call WipeAttrMap
 	ret
 ; 9578
 
-_CGB1c: ; 9578
+_CGB_FrontpicPals: ; 9578
 	ld de, UnknBGPals
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
-	call Function9764
-	call Function9643
-	call Function9699
-	call Function96b3
-	call Function96a4
+	call GetFrontpicPalettePointer
+	call LoadPalette_White_Col1_Col2_Black
+	call WipeAttrMap
+	call ApplyAttrMap
+	call ApplyPals
 	ret
 ; 9591
 
 _CGB1d: ; 9591
-	ld hl, Palette95e0
+	ld hl, .Palettes
 	ld de, UnknBGPals
-	ld bc, $0010
+	ld bc, 2 palettes
 	ld a, $5
 	call FarCopyWRAM
-	call Function96a4
-	call Function9699
+	call ApplyPals
+	call WipeAttrMap
 	hlcoord 3, 7, AttrMap
 	lb bc, 8, 14
 	ld a, $1
@@ -1101,11 +1104,11 @@
 	lb bc, 12, 1
 	ld a, $1
 	call FillBoxCGB
-	call Function96b3
+	call ApplyAttrMap
 	ret
 ; 95e0
 
-Palette95e0: ; 95e0
+.Palettes: ; 95e0
 	RGB 31, 31, 31
 	RGB 16, 31, 14
 	RGB 05, 14, 21
--- /dev/null
+++ b/predef/crystal.asm
@@ -1,0 +1,614 @@
+GetMysteryGift_MobileAdapterLayout: ; 4930f (mobile)
+	ld a, b
+	cp SCGB_RAM
+	jr nz, .not_ram
+	ld a, [SGBPredef]
+.not_ram
+	push af
+	callba Function9673
+	pop af
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, .dw
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .done
+	push de
+	jp [hl]
+.done
+	ret
+; 49330 (12:5330)
+
+.dw: ; 49330
+	
+	dw MG_Mobile_Layout00
+	dw MG_Mobile_Layout01
+	dw MG_Mobile_Layout02
+; 49336
+
+MG_Mobile_Layout_FillBox: ; 49336
+.row
+	push bc
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .row
+	ret
+; 49346
+
+MG_Mobile_Layout_WipeAttrMap: ; 49346 (12:5346)
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	ret
+
+MG_Mobile_Layout_LoadPals: ; 49351 (12:5351)
+	ld de, UnknBGPals
+	ld hl, Palette_493e1
+	ld bc, 5 palettes
+	ld a, $5 ; BANK(UnknBGPals)
+	call FarCopyWRAM
+	ld de, UnknBGPals + 7 palettes
+	ld hl, Palette_TextBG7
+	ld bc, 1 palettes
+	ld a, $5 ; BANK(UnknBGPals)
+	call FarCopyWRAM
+	ret
+
+MG_Mobile_Layout00: ; 4936e (12:536e)
+	call MG_Mobile_Layout_LoadPals
+	call MG_Mobile_Layout_WipeAttrMap
+	call MG_Mobile_Layout_CreatePalBoxes
+	callba ApplyAttrMap
+	callba ApplyPals
+	ret
+
+MG_Mobile_Layout_CreatePalBoxes: ; 49384 (12:5384)
+	hlcoord 0, 0, AttrMap
+	lb bc, 4, 1
+	ld a, $1
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 1
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 6, 1
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 1, 0, AttrMap
+	ld a, $1
+	lb bc, 3, 18
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 18
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 12, 18
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 19, 0, AttrMap
+	lb bc, 4, 1
+	ld a, $1
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 1
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 6, 1
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 12, AttrMap
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, $7
+	call ByteFill
+	ret
+; 493e1 (12:53e1)
+
+Palette_493e1: ; 493e1
+	RGB 03, 07, 09
+	RGB 26, 31, 00
+	RGB 20, 16, 03
+	RGB 31, 31, 31
+
+	RGB 13, 24, 29
+	RGB 11, 16, 30
+	RGB 07, 11, 22
+	RGB 05, 06, 18
+
+	RGB 31, 31, 31
+	RGB 20, 26, 31
+	RGB 13, 24, 29
+	RGB 11, 16, 30
+
+	RGB 31, 31, 31
+	RGB 20, 26, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 20, 16, 08
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+; 49409
+
+LoadOW_BGPal7:: ; 49409
+	ld hl, Palette_TextBG7
+	ld de, UnknBGPals + 8 * 7
+	ld bc, 8
+	ld a, $5
+	call FarCopyWRAM
+	ret
+; 49418
+
+Palette_TextBG7: ; 49418
+	RGB 31, 31, 31
+	RGB 08, 19, 28
+	RGB 05, 05, 16
+	RGB 00, 00, 00
+; 49420
+
+Function49420:: ; 49420 (12:5420)
+	ld hl, MansionPalette4
+	ld de, UnknBGPals + $30
+	ld bc, $8
+	ld a, $5 ; BANK(UnknBGPals)
+	call FarCopyWRAM
+	ret
+; 4942f (12:542f)
+
+MG_Mobile_Layout01: ; 4942f
+	call MG_Mobile_Layout_LoadPals
+	ld de, UnknBGPals + $38
+	ld hl, Palette_49478
+	ld bc, $8
+	ld a, $5 ; BANK(UnknBGPals)
+	call FarCopyWRAM
+	call MG_Mobile_Layout_WipeAttrMap
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	xor a
+	call ByteFill
+	hlcoord 0, 14, AttrMap
+	ld bc, 4 * SCREEN_WIDTH
+	ld a, $7
+	call ByteFill
+	ld a, [wd002]
+	bit 6, a
+	jr z, .asm_49464
+	call Function49480
+	jr .asm_49467
+
+.asm_49464
+	call Function49496
+
+.asm_49467
+	callba ApplyAttrMap
+	callba ApplyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 49478
+
+Palette_49478: ; 49478
+	RGB 31, 31, 31
+	RGB 26, 31, 00
+	RGB 20, 16, 03
+	RGB 00, 00, 00
+; 49480
+
+Function49480: ; 49480
+	hlcoord 0, 0, AttrMap
+	lb bc, 4, SCREEN_WIDTH
+	ld a, $7
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 2, AttrMap
+	ld a, $4
+	ld [hl], a
+	hlcoord 19, 2, AttrMap
+	ld [hl], a
+	ret
+; 49496
+
+Function49496: ; 49496
+	hlcoord 0, 0, AttrMap
+	lb bc, 2, SCREEN_WIDTH
+	ld a, $7
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 1, AttrMap
+	ld a, $4
+	ld [hl], a
+	hlcoord 19, 1, AttrMap
+	ld [hl], a
+	ret
+; 494ac
+
+LoadSpecialMapPalette: ; 494ac
+	ld a, [wTileset]
+	cp TILESET_POKECOM_CENTER
+	jr z, .pokecom_2f
+	cp TILESET_BATTLE_TOWER
+	jr z, .battle_tower
+	cp TILESET_ICE_PATH
+	jr z, .ice_path
+	cp TILESET_HOUSE_1
+	jr z, .house
+	cp TILESET_RADIO_TOWER
+	jr z, .radio_tower
+	cp TILESET_CELADON_MANSION
+	jr z, .mansion_mobile
+	jr .do_nothing
+
+.pokecom_2f
+	call LoadPokeComPalette
+	scf
+	ret
+
+.battle_tower
+	call LoadBattleTowerPalette
+	scf
+	ret
+
+.ice_path
+	ld a, [wPermission] ; permission
+	and 7
+	cp 3 ; Hall of Fame
+	jr z, .do_nothing
+	call LoadIcePathPalette
+	scf
+	ret
+
+.house
+	call LoadHousePalette
+	scf
+	ret
+
+.radio_tower
+	call LoadRadioTowerPalette
+	scf
+	ret
+
+.mansion_mobile
+	call LoadMansionPalette
+	scf
+	ret
+
+.do_nothing
+	and a
+	ret
+; 494f2
+
+LoadPokeComPalette: ; 494f2
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, PokeComPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 49501
+
+PokeComPalette: ; 49501
+INCLUDE "tilesets/pokecom.pal"
+; 49541
+
+LoadBattleTowerPalette: ; 49541
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, BattleTowerPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 49550
+
+BattleTowerPalette: ; 49550
+INCLUDE "tilesets/battle_tower.pal"
+; 49590
+
+LoadIcePathPalette: ; 49590
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, IcePathPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 4959f
+
+IcePathPalette: ; 4959f
+INCLUDE "tilesets/ice_path.pal"
+; 495df
+
+LoadHousePalette: ; 495df
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, HousePalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 495ee
+
+HousePalette: ; 495ee
+INCLUDE "tilesets/house.pal"
+; 4962e
+
+LoadRadioTowerPalette: ; 4962e
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, RadioTowerPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 4963d
+
+RadioTowerPalette: ; 4963d
+INCLUDE "tilesets/radio_tower.pal"
+; 4967d
+
+MansionPalette1: ; 4967d
+	RGB 30, 28, 26
+	RGB 19, 19, 19
+	RGB 13, 13, 13
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 07, 07, 07
+
+	RGB 18, 24, 09
+	RGB 15, 20, 01
+	RGB 09, 13, 00
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 15, 16, 31
+	RGB 09, 09, 31
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 31, 31, 07
+	RGB 31, 16, 01
+	RGB 07, 07, 07
+
+	RGB 26, 24, 17
+	RGB 21, 17, 07
+	RGB 16, 13, 03
+	RGB 07, 07, 07
+
+MansionPalette3: ; 496ad
+	RGB 30, 28, 26
+	RGB 17, 19, 31
+	RGB 14, 16, 31
+	RGB 07, 07, 07
+
+	RGB 31, 31, 16
+	RGB 31, 31, 16
+	RGB 14, 09, 00
+	RGB 00, 00, 00
+; 496bd
+
+MansionPalette4: ; 496bd
+	RGB 05, 05, 16
+	RGB 08, 19, 28
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+; 496c5
+
+LoadMansionPalette: ; 496c5
+	ld a, $5
+	ld de, UnknBGPals
+	ld hl, MansionPalette1
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ld a, $5
+	ld de, UnknBGPals + 4 palettes
+	ld hl, MansionPalette2
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ld a, $5
+	ld de, UnknBGPals + 3 palettes
+	ld hl, MansionPalette3
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ld a, $5
+	ld de, UnknBGPals + 6 palettes
+	ld hl, MansionPalette4
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ret
+; 496fe
+
+MansionPalette2: ; 496fe
+	RGB 25, 24, 23
+	RGB 20, 19, 19
+	RGB 14, 16, 31
+	RGB 07, 07, 07
+; 49706
+
+MG_Mobile_Layout02: ; 49706
+	ld hl, Palette_49732
+	ld de, UnknBGPals
+	ld bc, 1 palettes
+	ld a, $5
+	call FarCopyWRAM
+	callba ApplyPals
+	call MG_Mobile_Layout_WipeAttrMap
+	callba ApplyAttrMap
+	ld hl, Palette_4973a
+	ld de, UnknOBPals
+	ld bc, 1 palettes
+	ld a, $5
+	call FarCopyWRAM
+	ret
+; 49732
+
+Palette_49732: ; 49732
+	RGB 31, 31, 31
+	RGB 23, 16, 07
+	RGB 23, 07, 07
+	RGB 03, 07, 20
+; 4973a
+
+Palette_4973a: ; 4973a
+	RGB 00, 00, 00
+	RGB 07, 05, 31
+	RGB 14, 18, 31
+	RGB 31, 31, 31
+; 49742
+
+Function49742: ; 49742
+	ld hl, Palette_49757
+	ld de, UnknBGPals
+	ld bc, $40
+	ld a, $5
+	call FarCopyWRAM
+	callba ApplyPals
+	ret
+; 49757
+
+Palette_49757: ; 49757
+	RGB 31, 31, 63
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 63
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 31, 00, 00
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 30, 16, 26
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 16, 16, 16
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 31, 12, 12
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 07, 08, 31
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 29, 28, 09
+	RGB 31, 31, 31
+; 49797
+
+_InitMG_Mobile_LinkTradePalMap: ; 49797
+	hlcoord 0, 0, AttrMap
+	lb bc, 16, 2
+	ld a, $4
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	ldcoord_a 0, 1, AttrMap
+	ldcoord_a 0, 14, AttrMap
+	hlcoord 2, 0, AttrMap
+	lb bc, 8, 18
+	ld a, $5
+	call MG_Mobile_Layout_FillBox
+	hlcoord 2, 8, AttrMap
+	lb bc, 8, 18
+	ld a, $6
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 16, AttrMap
+	lb bc, 2, SCREEN_WIDTH
+	ld a, $4
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 6, 1, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 17, 1, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 6, 9, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 17, 9, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $2
+	hlcoord 2, 16, AttrMap
+	ld [hli], a
+	ld a, $7
+rept 3
+	ld [hli], a
+endr
+	ld a, $2
+	ld [hl], a
+	hlcoord 2, 17, AttrMap
+	ld a, $3
+	ld bc, 6
+	call ByteFill
+	ret
+; 49811
+
+Function49811: ; 49811
+	ld hl, Palette_49826
+	ld de, UnknBGPals + $10
+	ld bc, $30
+	ld a, $5
+	call FarCopyWRAM
+	callba ApplyPals
+	ret
+; 49826
+
+Palette_49826: ; 49826
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 31, 00, 00
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 15, 23, 30
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 16, 16, 16
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 25, 07, 04
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 03, 22, 08
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 29, 28, 09
+	RGB 31, 31, 31
+; 49856
+
+InitMG_Mobile_LinkTradePalMap: ; 49856
+	call _InitMG_Mobile_LinkTradePalMap
+	ret
+; 4985a
--- a/predef/sgb.asm
+++ b/predef/sgb.asm
@@ -7,10 +7,9 @@
 	cp SCGB_RAM
 	jr nz, .not_ram
 	ld a, [SGBPredef]
-
 .not_ram
-	cp SCGB_FC
-	jp z, Function8ade
+	cp SCGB_PARTY_MENU_HP_PALS
+	jp z, SGB_ApplyPartyMenuHPPals
 	ld l, a
 	ld h, 0
 	add hl, hl
@@ -25,16 +24,16 @@
 ; 866f
 
 .Jumptable: ; 866f
-	dw .SGB00
-	dw .SGB01
-	dw .SGB02
-	dw .SGB03
+	dw .SGB_BattleGrayscale
+	dw .SGB_BattleColors
+	dw .SGB_PokegearPals
+	dw .SGB_StatsScreenHPPals
 	dw .SGB04
-	dw .SGB05
+	dw .SGB_SlotMachine
 	dw .SGB06
 	dw .SGB07
 	dw .SGB08
-	dw .SGB09
+	dw .SGB_MapPals
 	dw .SGB0a
 	dw .SGB0b
 	dw .SGB0c
@@ -45,8 +44,8 @@
 	dw .SGB11
 	dw .SGB12
 	dw .SGB13
-	dw .SGB14
-	dw .SGB15
+	dw .SGB_PackPals
+	dw .SGB_TrainerCard
 	dw .SGB16
 	dw .SGB17
 	dw .SGB18
@@ -53,24 +52,24 @@
 	dw .SGB19
 	dw .SGB1a
 	dw .SGB1b
-	dw .SGB1c
+	dw .SGB_FrontpicPals
 	dw .SGB1d
 	dw .SGB1e
 ; 86ad
 
-.SGB00: ; 86ad
+.SGB_BattleGrayscale: ; 86ad
 	ld hl, PalPacket_9c66
 	ld de, BlkPacket_9aa6
 	ret
 ; 86b4
 
-.SGB01: ; 86b4
+.SGB_BattleColors: ; 86b4
 	ld hl, BlkPacket_9aa6
 	call Function9809
 
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 
 	ld a, [PlayerHPPal]
@@ -83,17 +82,17 @@
 	add hl, de
 
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
+	ld [wSGBPals + 6], a
 
 	ld a, [EnemyHPPal]
 	ld l, a
-	ld h, $0
+	ld h, 0
 rept 2
 	add hl, hl
 endr
@@ -101,42 +100,42 @@
 	ld de, Palettes_a8be
 	add hl, de
 	ld a, [hli]
-	ld [wcda9 + 9], a
+	ld [wSGBPals + 9], a
 	ld a, [hli]
-	ld [wcda9 + 10], a
+	ld [wSGBPals + 10], a
 	ld a, [hli]
-	ld [wcda9 + 11], a
+	ld [wSGBPals + 11], a
 	ld a, [hl]
-	ld [wcda9 + 12], a
+	ld [wSGBPals + 12], a
 
 	ld hl, PalPacket_9cf6
-	ld de, wcda9 + $10
-	ld bc, $0010
+	ld de, wSGBPals + $10
+	ld bc, $10
 	call CopyBytes
 
-	call Function9729
+	call GetBattlemonBackpicPalettePointer
 
 	ld a, [hli]
-	ld [wcda9 + $13], a
+	ld [wSGBPals + $13], a
 	ld a, [hli]
-	ld [wcda9 + $14], a
+	ld [wSGBPals + $14], a
 	ld a, [hli]
-	ld [wcda9 + $15], a
+	ld [wSGBPals + $15], a
 	ld a, [hl]
-	ld [wcda9 + $16], a
-	call Function973a
+	ld [wSGBPals + $16], a
+	call GetEnemyFrontpicPalettePointer
 	ld a, [hli]
-	ld [wcda9 + $19], a
+	ld [wSGBPals + $19], a
 	ld a, [hli]
-	ld [wcda9 + $1a], a
+	ld [wSGBPals + $1a], a
 	ld a, [hli]
-	ld [wcda9 + $1b], a
+	ld [wSGBPals + $1b], a
 	ld a, [hl]
-	ld [wcda9 + $1c], a
+	ld [wSGBPals + $1c], a
 
-	ld hl, wcda9
-	ld de, wcda9 + $10
-	ld a, SCGB_01
+	ld hl, wSGBPals
+	ld de, wSGBPals + $10
+	ld a, SCGB_BATTLE_COLORS
 	ld [SGBPredef], a
 	ret
 ; 873c
@@ -143,11 +142,11 @@
 
 .SGB0e: ; 873c
 	ld hl, PalPacket_9bd6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 
-	ld hl, wcda9 + 1
+	ld hl, wSGBPals + 1
 	ld [hl], $10
 rept 2
 	inc hl
@@ -156,25 +155,25 @@
 	ld a, [PlayerHPPal]
 	add $2f
 	ld [hl], a
-	ld hl, wcda9
+	ld hl, wSGBPals
 	ld de, BlkPacket_9ad6
 	ret
 ; 875c
 
-.SGB02: ; 875c
+.SGB_PokegearPals: ; 875c
 	ld hl, PalPacket_9c76
 	ld de, BlkPacket_9a86
 	ret
 ; 8763
 
-.SGB03: ; 8763
+.SGB_StatsScreenHPPals: ; 8763
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	ld a, [wcda1]
 	ld l, a
-	ld h, $0
+	ld h, 0
 rept 2
 	add hl, hl
 endr
@@ -181,25 +180,25 @@
 	ld de, Palettes_a8be
 	add hl, de
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
+	ld [wSGBPals + 6], a
 	ld a, [CurPartySpecies]
-	ld bc, wd10e + 21
-	call Function974b
+	ld bc, TempMonDVs
+	call GetPlayerOrMonPalettePointer
 	ld a, [hli]
-	ld [wcda9 + 9], a
+	ld [wSGBPals + 9], a
 	ld a, [hli]
-	ld [wcda9 + 10], a
+	ld [wSGBPals + 10], a
 	ld a, [hli]
-	ld [wcda9 + 11], a
+	ld [wSGBPals + 11], a
 	ld a, [hl]
-	ld [wcda9 + 12], a
-	ld hl, wcda9
+	ld [wSGBPals + 12], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9ac6
 	ret
 ; 87ab
@@ -206,16 +205,16 @@
 
 .SGB0a: ; 87ab
 	ld hl, PalPacket_9c56
-	ld de, wcda9 + 1
+	ld de, wSGBPals + 1
 	ret
 ; 87b2
 
 .SGB04: ; 87b2
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
-	ld hl, wcda9 + 3
+	ld hl, wSGBPals + 3
 	ld [hl], $9f
 	inc hl
 	ld [hl], $2a
@@ -224,16 +223,16 @@
 	inc hl
 	ld [hl], $19
 	ld a, [CurPartySpecies]
-	call Function9775
+	call GetMonPalettePointer_
 	ld a, [hli]
-	ld [wcda9 + 9], a
+	ld [wSGBPals + 9], a
 	ld a, [hli]
-	ld [wcda9 + 10], a
+	ld [wSGBPals + 10], a
 	ld a, [hli]
-	ld [wcda9 + 11], a
+	ld [wSGBPals + 11], a
 	ld a, [hl]
-	ld [wcda9 + 12], a
-	ld hl, wcda9
+	ld [wSGBPals + 12], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9ae6
 	ret
 ; 87e9
@@ -240,10 +239,10 @@
 
 .SGB17: ; 87e9
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
-	ld hl, wcda9 + 3
+	ld hl, wSGBPals + 3
 	ld [hl], $9f
 	inc hl
 	ld [hl], $2a
@@ -252,17 +251,17 @@
 	inc hl
 	ld [hl], $19
 	ld a, [CurPartySpecies]
-	ld bc, wd10e + 21
-	call Function974b
+	ld bc, TempMonDVs
+	call GetPlayerOrMonPalettePointer
 	ld a, [hli]
-	ld [wcda9 + 9], a
+	ld [wSGBPals + 9], a
 	ld a, [hli]
-	ld [wcda9 + 10], a
+	ld [wSGBPals + 10], a
 	ld a, [hli]
-	ld [wcda9 + 11], a
+	ld [wSGBPals + 11], a
 	ld a, [hl]
-	ld [wcda9 + 12], a
-	ld hl, wcda9
+	ld [wSGBPals + 12], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9ae6
 	ret
 ; 8823
@@ -275,10 +274,10 @@
 
 .SGB10: ; 882a
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
-	ld hl, wcda9 + 3
+	ld hl, wSGBPals + 3
 	ld [hl], $9f
 	inc hl
 	ld [hl], $2a
@@ -286,18 +285,18 @@
 	ld [hl], $5a
 	inc hl
 	ld [hl], $19
-	ld hl, wcda9
+	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
 ; 884b
 
-.SGB14: ; 884b
+.SGB_PackPals: ; 884b
 	ld hl, PalPacket_9c36
 	ld de, BlkPacket_9a86
 	ret
 ; 8852
 
-.SGB05: ; 8852
+.SGB_SlotMachine: ; 8852
 	ld hl, PalPacket_9c96
 	ld de, BlkPacket_9b06
 	ret
@@ -361,7 +360,7 @@
 .SGB11: ; 889e
 	ld hl, BlkPacket_9a86
 	ld de, PlayerLightScreenCount
-	ld bc, $0010
+	ld bc, $10
 	call CopyBytes
 	ld hl, PalPacket_9bb6
 	ld de, BlkPacket_9a86
@@ -368,16 +367,16 @@
 	ret
 ; 88b1
 
-.SGB09: ; 88b1
+.SGB_MapPals: ; 88b1
 	ld hl, PalPacket_9bd6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
-	call .GetPermission
-	ld hl, wcda9 + 1
+	call .GetMapPalsIndex
+	ld hl, wSGBPals + 1
 	ld [hld], a
 	ld de, BlkPacket_9a86
-	ld a, SCGB_09
+	ld a, SCGB_MAPPALS
 	ld [SGBPredef], a
 	ret
 ; 88cd
@@ -385,14 +384,14 @@
 .SGB0b: ; 88cd
 	push bc
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	pop bc
 	ld a, c
 	and a
-	jr z, .asm_88ef
-	ld hl, wcda9 + 3
+	jr z, .partymon
+	ld hl, wSGBPals + 3
 	ld [hl], $e7
 	inc hl
 	ld [hl], $1c
@@ -400,34 +399,34 @@
 	ld [hl], $62
 	inc hl
 	ld [hl], $c
-	jr .asm_8913
+	jr .done
 
-.asm_88ef
+.partymon
 	ld hl, PartyMon1DVs
-	ld bc, $0030
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld c, l
 	ld b, h
 	ld a, [PlayerHPPal]
-	call Function974b
+	call GetPlayerOrMonPalettePointer
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
+	ld [wSGBPals + 6], a
 
-.asm_8913
-	ld hl, wcda9
+.done
+	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
 ; 891a
 
 .SGB0d:
-.SGB15: ; 891a
+.SGB_TrainerCard: ; 891a
 	ld hl, PalPacket_9cb6
 	ld de, BlkPacket_9a86
 	ret
@@ -441,20 +440,20 @@
 
 .SGB12: ; 8928
 	ld hl, PalPacket_9bd6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	ld hl, BlkPacket_9a86
-	ld de, wcda9 + $10
-	ld bc, $0010
+	ld de, wSGBPals + $10
+	ld bc, $10
 	call CopyBytes
-	call .GetPermission
-	ld hl, wcda9 + 1
+	call .GetMapPalsIndex
+	ld hl, wSGBPals + 1
 	ld [hl], a
-	ld hl, wcda9 + 3
+	ld hl, wSGBPals + 3
 	ld [hl], $2e
-	ld hl, wcda9 + $13
-	ld a, $5
+	ld hl, wSGBPals + $13
+	ld a, 5
 	ld [hli], a
 	ld a, [wMenuBorderLeftCoord]
 	ld [hli], a
@@ -464,15 +463,15 @@
 	ld [hli], a
 	ld a, [wMenuBorderBottomCoord]
 	ld [hl], a
-	ld hl, wcda9
-	ld de, wcda9 + $10
+	ld hl, wSGBPals
+	ld de, wSGBPals + $10
 	ret
 ; 8969
 
 .SGB1e: ; 8969
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	ld a, [CurPartySpecies]
 	ld l, a
@@ -490,14 +489,14 @@
 	ld b, 0
 	add hl, bc
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
 ; 89a6
@@ -510,21 +509,21 @@
 
 .SGB1a: ; 89ad
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	ld a, [CurPartySpecies]
-	ld bc, wd10e + 21
-	call Function974b
+	ld bc, TempMonDVs
+	call GetPlayerOrMonPalettePointer
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
 ; 89d9
@@ -535,99 +534,99 @@
 	ret
 ; 89e0
 
-.SGB1c: ; 89e0
+.SGB_FrontpicPals: ; 89e0
 	ld hl, PalPacket_9ce6
-	ld de, wcda9
-	ld bc, $0010
+	ld de, wSGBPals
+	ld bc, $10
 	call CopyBytes
 	ld a, [CurPartySpecies]
-	ld bc, wd10e + 21
-	call Function9764
+	ld bc, TempMonDVs
+	call GetFrontpicPalettePointer
 	ld a, [hli]
-	ld [wcda9 + 3], a
+	ld [wSGBPals + 3], a
 	ld a, [hli]
-	ld [wcda9 + 4], a
+	ld [wSGBPals + 4], a
 	ld a, [hli]
-	ld [wcda9 + 5], a
+	ld [wSGBPals + 5], a
 	ld a, [hl]
-	ld [wcda9 + 6], a
-	ld hl, wcda9
+	ld [wSGBPals + 6], a
+	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
 ; 8a0c
 
-.GetPermission: ; 8a0c
+.GetMapPalsIndex: ; 8a0c
 	ld a, [TimeOfDayPal]
-	cp $2
-	jr c, .asm_8a16
+	cp NITE
+	jr c, .morn_day
 	ld a, $19
 	ret
 
-.asm_8a16
+.morn_day
 	ld a, [wPermission]
-	cp $2
-	jr z, .asm_8a39
-	cp $4
-	jr z, .asm_8a3c
-	cp $7
-	jr z, .asm_8a3c
-	cp $5
-	jr z, .asm_8a3f
-	cp $6
-	jr z, .asm_8a42
+	cp ROUTE
+	jr z, .route
+	cp CAVE
+	jr z, .cave
+	cp DUNGEON
+	jr z, .cave
+	cp PERM_5
+	jr z, .perm5
+	cp GATE
+	jr z, .gate
 	ld a, [MapGroup]
 	ld e, a
 	ld d, 0
-	ld hl, .Unknown_8a45
+	ld hl, .SGBRoofPalInds
 	add hl, de
 	ld a, [hl]
 	ret
 
-.asm_8a39
-	ld a, $0
+.route
+	ld a, $00
 	ret
 
-.asm_8a3c
+.cave
 	ld a, $18
 	ret
 
-.asm_8a3f
-	ld a, $6
+.perm5
+	ld a, $06
 	ret
 
-.asm_8a42
-	ld a, $3
+.gate
+	ld a, $03
 	ret
 ; 8a45
 
-.Unknown_8a45: ; 8a45
-	db $00
-	db $12
-	db $14
-	db $18
-	db $11
-	db $15
-	db $09
-	db $04
-	db $0f
-	db $16
-	db $0e
-	db $10
-	db $06
-	db $01
-	db $03
-	db $06
-	db $0b
-	db $08
-	db $05
-	db $17
-	db $08
-	db $07
-	db $13
-	db $02
-	db $0c
-	db $0a
-	db $0d
+.SGBRoofPalInds: ; 8a45
+	db $00 ; Unused
+	db $12 ; Olivine
+	db $14 ; Mahogany
+	db $18 ; Various Dungeons
+	db $11 ; Ecruteak
+	db $15 ; Blackthorn
+	db $09 ; Cinnabar
+	db $04 ; Cerulean
+	db $0f ; Azalea
+	db $16 ; Lake Of Rage
+	db $0e ; Violet
+	db $10 ; Goldenrod
+	db $06 ; Vermilion
+	db $01 ; Palette
+	db $03 ; Pewter
+	db $06 ; Fast Ship
+	db $0b ; Indigo Plateau
+	db $08 ; Fuchsia
+	db $05 ; Lavender
+	db $17 ; Silver Cave Outside
+	db $08 ; Pokemon Center 2F
+	db $07 ; Celadon
+	db $13 ; Cianwood
+	db $02 ; Viridian
+	db $0c ; New Bark
+	db $0a ; Saffron
+	db $0d ; Cherrygrove
 ; 8a60
 
 .Finish: ; 8a60
--- a/sram.asm
+++ b/sram.asm
@@ -135,7 +135,50 @@
 sLinkBattleStatsEnd::
 
 sHallOfFame:: ; b2c0
-	ds HOF_LENGTH * NUM_HOF_TEAMS
+; temporary until I can find a way to macrofy it
+	hall_of_fame sHallOfFame01
+	hall_of_fame sHallOfFame02
+	hall_of_fame sHallOfFame03
+	hall_of_fame sHallOfFame04
+	hall_of_fame sHallOfFame05
+	hall_of_fame sHallOfFame06
+	hall_of_fame sHallOfFame07
+	hall_of_fame sHallOfFame08
+	hall_of_fame sHallOfFame09
+	hall_of_fame sHallOfFame10
+	hall_of_fame sHallOfFame11
+	hall_of_fame sHallOfFame12
+	hall_of_fame sHallOfFame13
+	hall_of_fame sHallOfFame14
+	hall_of_fame sHallOfFame15
+	hall_of_fame sHallOfFame16
+	hall_of_fame sHallOfFame17
+	hall_of_fame sHallOfFame18
+	hall_of_fame sHallOfFame19
+	hall_of_fame sHallOfFame20
+	hall_of_fame sHallOfFame21
+	hall_of_fame sHallOfFame22
+	hall_of_fame sHallOfFame23
+	hall_of_fame sHallOfFame24
+	hall_of_fame sHallOfFame25
+	hall_of_fame sHallOfFame26
+	hall_of_fame sHallOfFame27
+	hall_of_fame sHallOfFame28
+	hall_of_fame sHallOfFame29
+	hall_of_fame sHallOfFame30
+
+; x = 1
+; rept NUM_HOF_TEAMS
+; ; PRINTT("{x}\n")
+; if STRLEN({x}) == 2
+	; PRINTT(STRSUB({x},2,1))
+	; hall_of_fame STRCAT("sHallOfFame0", STRSUB({x},2,1))
+; else
+	; PRINTT(STRSUB({x},2,2))
+	; hall_of_fame STRCAT("sHallOfFame", STRSUB({x},2,2))
+; endc
+; x = x + 1
+; endr
 sHallOfFameEnd::
 
 sMobileEventIndex:: ds 1
@@ -152,7 +195,7 @@
 
 sBattleTower:: ; be46
 sNrOfBeatenBattleTowerTrainers:: ds 1
-sbe47:: ds 1
+sBTChoiceOfLevelGroup:: ds 1
 ; The 7 trainers of the BattleTower are saved here, so nobody appears more than once
 sBTTrainers:: ; sbe48
 	ds 7
--- a/text/battle.asm
+++ b/text/battle.asm
@@ -1,4 +1,4 @@
-BattleText_PlayerPickuedUpPayDayMoney: ; 0x80730
+BattleText_PlayerPickedUpPayDayMoney: ; 0x80730
 	text "<PLAYER> picked up"
 	line "¥@"
 	deciram wPayDayMoney, 3, 6
@@ -474,9 +474,9 @@
 	text "<TARGET>"
 	line "became confused!"
 	prompt
-; 0x80dab
+; ItemHealedConfusion
 
-BattleText_0x80dab: ; 0x80dab
+BattleText_ItemHealedConfusion: ; ItemHealedConfusion
 	text "A @"
 	text_from_ram StringBuffer1
 	text " rid"
--- a/text/common_1.asm
+++ b/text/common_1.asm
@@ -500,7 +500,7 @@
 UnknownText_0x1bc84b::
 	text ""
 	line "OAK: @"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	db "@@"
 
 UnknownText_0x1bc858::
@@ -1080,7 +1080,7 @@
 Text_EnemyUsedOn::
 	text "<ENEMY>"
 	line "used @"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text ""
 	cont "on @"
 	text_from_ram EnemyMonNick
@@ -1329,7 +1329,7 @@
 UnknownText_0x1bd429::
 	text "<PLAYER> traded"
 	line "@"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text " for"
 	cont "@"
 	text_from_ram StringBuffer2
@@ -1423,7 +1423,7 @@
 
 UnknownText_0x1bd5f4::
 	text "Hi! The @"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text ""
 	line "you traded me is"
 	cont "doing great!"
@@ -1430,7 +1430,7 @@
 	done
 
 UnknownText_0x1bd621::
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text "'s cute,"
 	line "but I don't have"
 
@@ -1464,7 +1464,7 @@
 	text "Wow! Thank you!"
 	line "I always wanted"
 	cont "@"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text "!"
 	done
 
@@ -1476,7 +1476,7 @@
 	cont "traded you doing?"
 
 	para "Your @"
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text "'s"
 	line "so cute!"
 	done
--- a/text/common_2.asm
+++ b/text/common_2.asm
@@ -247,7 +247,7 @@
 	text_from_ram StringBuffer1
 	text ""
 	cont "to @"
-	text_from_ram wc950 + 3
+	text_from_ram wMysteryGiftPlayerName
 	text "'s home."
 	prompt
 
@@ -307,9 +307,3 @@
 	line "lights the area!@"
 	text_waitbutton
 	db "@@"
-
-_UsedSurfText::
-	text_from_ram StringBuffer2
-	text " used"
-	line "SURF!"
-	done
--- a/text/common_3.asm
+++ b/text/common_3.asm
@@ -1,3 +1,9 @@
+_UsedSurfText::
+	text_from_ram StringBuffer2
+	text " used"
+	line "SURF!"
+	done
+
 _CantSurfText::
 	text "You can't SURF"
 	line "here."
@@ -1059,7 +1065,7 @@
 
 UnknownText_0x1c1b2c::
 	text "Took @"
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text "'s"
 	line "@"
 	text_from_ram StringBuffer1
@@ -1073,7 +1079,7 @@
 
 UnknownText_0x1c1b57::
 	text "Made @"
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text ""
 	line "hold @"
 	text_from_ram StringBuffer2
@@ -1086,7 +1092,7 @@
 	prompt
 
 UnknownText_0x1c1b8e::
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text " isn't"
 	line "holding anything."
 	prompt
@@ -1101,12 +1107,12 @@
 	text_from_ram StringBuffer1
 	text ""
 	line "from @"
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text "."
 	prompt
 
 UnknownText_0x1c1bdc::
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text " is"
 	line "already holding"
 
--- a/text/common_5.asm
+++ b/text/common_5.asm
@@ -230,7 +230,7 @@
 	done
 
 UnknownText_0x1c5660::
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text " learned"
 	line "@"
 	text_from_ram StringBuffer2
@@ -252,7 +252,7 @@
 	done
 
 UnknownText_0x1c56af::
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text ""
 	line "did not learn"
 	cont "@"
@@ -261,7 +261,7 @@
 	prompt
 
 UnknownText_0x1c56c9::
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text " is"
 	line "trying to learn"
 	cont "@"
@@ -269,7 +269,7 @@
 	text "."
 
 	para "But @"
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text ""
 	line "can't learn more"
 	cont "than four moves."
@@ -291,7 +291,7 @@
 	interpret_data
 	text ""
 	para "@"
-	text_from_ram wd050_MonNick
+	text_from_ram wMonOrItemNameBuffer
 	text " forgot"
 	line "@"
 	text_from_ram StringBuffer1
@@ -505,7 +505,7 @@
 	db "@@"
 
 UnknownText_0x1c5b38::
-	text_from_ram wd050
+	text_from_ram wMonOrItemNameBuffer
 	text " was"
 	line "sent to BILL's PC."
 	prompt
--- /dev/null
+++ b/text/trainer_class_names.asm
@@ -1,0 +1,67 @@
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "RIVAL@"
+	db "#MON PROF.@"
+	db "ELITE FOUR@"
+	db "<PKMN> TRAINER@"
+	db "ELITE FOUR@"
+	db "ELITE FOUR@"
+	db "ELITE FOUR@"
+	db "CHAMPION@"
+	db "LEADER@"
+	db "LEADER@"
+	db "LEADER@"
+	db "SCIENTIST@"
+	db "LEADER@"
+	db "YOUNGSTER@"
+	db "SCHOOLBOY@"
+	db "BIRD KEEPER@"
+	db "LASS@"
+	db "LEADER@"
+	db "COOLTRAINER@"
+	db "COOLTRAINER@"
+	db "BEAUTY@"
+	db "#MANIAC@"
+	db "ROCKET@"
+	db "GENTLEMAN@"
+	db "SKIER@"
+	db "TEACHER@"
+	db "LEADER@"
+	db "BUG CATCHER@"
+	db "FISHER@"
+	db "SWIMMER♂@"
+	db "SWIMMER♀@"
+	db "SAILOR@"
+	db "SUPER NERD@"
+	db "RIVAL@"
+	db "GUITARIST@"
+	db "HIKER@"
+	db "BIKER@"
+	db "LEADER@"
+	db "BURGLAR@"
+	db "FIREBREATHER@"
+	db "JUGGLER@"
+	db "BLACKBELT@"
+	db "ROCKET@"
+	db "PSYCHIC@"
+	db "PICNICKER@"
+	db "CAMPER@"
+	db "ROCKET@"
+	db "SAGE@"
+	db "MEDIUM@"
+	db "BOARDER@"
+	db "#FAN@"
+	db "KIMONO GIRL@"
+	db "TWINS@"
+	db "#FAN@"
+	db "<PKMN> TRAINER@"
+	db "LEADER@"
+	db "OFFICER@"
+	db "ROCKET@"
+	db "MYSTICALMAN@"
\ No newline at end of file
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -99,7 +99,7 @@
 
 TilesetAnimfc0d7: ; 0xfc0d7
 	dw VTiles2 tile $03, WriteTileToBuffer
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw VTiles2 tile $03, WriteTileFromBuffer
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -113,7 +113,7 @@
 
 TilesetAnimfc103: ; 0xfc103
 	dw VTiles2 tile $14, WriteTileToBuffer
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw VTiles2 tile $14, WriteTileFromBuffer
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -153,15 +153,15 @@
 
 TilesetAnimfc17f: ; 0xfc17f
 	dw VTiles2 tile $53, WriteTileToBuffer
-	dw wcf41, ScrollTileDown
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw VTiles2 tile $53, WriteTileFromBuffer
 	dw VTiles2 tile $03, WriteTileToBuffer
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw VTiles2 tile $03, WriteTileFromBuffer
 	dw VTiles2 tile $53, WriteTileToBuffer
-	dw wcf41, ScrollTileDown
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw VTiles2 tile $53, WriteTileFromBuffer
 	dw NULL,  DoneTileAnimation
 ; 0xfc1af
@@ -168,17 +168,17 @@
 
 TilesetAnimfc1af: ; 0xfc1af
 	dw VTiles2 tile $54, WriteTileToBuffer
-	dw wcf41, ScrollTileDown
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw VTiles2 tile $54, WriteTileFromBuffer
 	dw NULL,  WaitTileAnimation
 	dw VTiles2 tile $03, WriteTileToBuffer
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw VTiles2 tile $03, WriteTileFromBuffer
 	dw NULL,  WaitTileAnimation
 	dw VTiles2 tile $54, WriteTileToBuffer
-	dw wcf41, ScrollTileDown
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw VTiles2 tile $54, WriteTileFromBuffer
 	dw NULL,  DoneTileAnimation
 ; 0xfc1e7
@@ -187,7 +187,7 @@
 Tileset30Anim: ; 0xfc1e7
 	dw VTiles2 tile $14, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $14, WriteTileFromBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
@@ -195,11 +195,11 @@
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $40, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $40, WriteTileFromBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
@@ -209,7 +209,7 @@
 Tileset29Anim: ; 0xfc233
 	dw VTiles2 tile $35, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $35, WriteTileFromBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
@@ -217,11 +217,11 @@
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $31, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
-	dw wcf41, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw VTiles2 tile $31, WriteTileFromBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
@@ -249,7 +249,7 @@
 
 TilesetAnimfc2bf: ; 0xfc2bf
 	dw VTiles2 tile $4f, WriteTileToBuffer
-	dw wcf41, ScrollTileRightLeft
+	dw wTileAnimBuffer, ScrollTileRightLeft
 	dw VTiles2 tile $4f, WriteTileFromBuffer
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -430,10 +430,9 @@
 	add a
 	add l
 	ld l, a
-	jr nc, .asm_fc399
+	jr nc, .okay
 	inc h
-
-.asm_fc399
+.okay
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -860,14 +859,14 @@
 	
 	
 WriteTileFromBuffer: ; fc696
-; Write tiledata at wcf41 to de.
-; wcf41 is loaded to sp for WriteTile.
+; Write tiledata at wTileAnimBuffer to de.
+; wTileAnimBuffer is loaded to sp for WriteTile.
 
 	ld hl, [sp+0]
 	ld b, h
 	ld c, l
 	
-	ld hl, wcf41
+	ld hl, wTileAnimBuffer
 	ld sp, hl
 	
 	ld h, d
@@ -877,7 +876,7 @@
 	
 	
 WriteTileToBuffer: ; fc6a2
-; Write tiledata de to wcf41.
+; Write tiledata de to wTileAnimBuffer.
 ; de is loaded to sp for WriteTile.
 
 	ld hl, [sp+0]
@@ -888,7 +887,7 @@
 	ld l, e
 	ld sp, hl
 	
-	ld hl, wcf41
+	ld hl, wTileAnimBuffer
 	
 	; fallthrough
 
@@ -997,7 +996,7 @@
 	cp %11100100
 	ret nz
 ; We only want to be here if we're in a dark cave.
-	ld a, [wd847]
+	ld a, [wTimeOfDayPalset]
 	cp $ff ; 3,3,3,3
 	ret nz
 
--- /dev/null
+++ b/trainers/read_party.asm
@@ -1,0 +1,401 @@
+
+ReadTrainerParty: ; 39771
+	ld a, [InBattleTowerBattle]
+	bit 0, a
+	ret nz
+
+	ld a, [wLinkMode]
+	and a
+	ret nz
+
+	ld hl, OTPartyCount
+	xor a
+	ld [hli], a
+	dec a
+	ld [hl], a
+
+	ld hl, OTPartyMons
+	ld bc, OTPartyMonsEnd - OTPartyMons
+	xor a
+	call ByteFill
+
+	ld a, [OtherTrainerClass]
+	cp CAL
+	jr nz, .not_cal2
+	ld a, [OtherTrainerID]
+	cp CAL2
+	jr z, .cal2
+	ld a, [OtherTrainerClass]
+.not_cal2
+
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, TrainerGroups
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	ld a, [OtherTrainerID]
+	ld b, a
+.skip_trainer
+	dec b
+	jr z, .got_trainer
+.loop
+	ld a, [hli]
+	cp $ff
+	jr nz, .loop
+	jr .skip_trainer
+.got_trainer
+
+.skip_name
+	ld a, [hli]
+	cp "@"
+	jr nz, .skip_name
+
+	ld a, [hli]
+	ld c, a
+	ld b, 0
+	ld d, h
+	ld e, l
+	ld hl, TrainerTypes
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld bc, .done
+	push bc
+	jp [hl]
+
+.done
+	jp ComputeTrainerReward
+
+.cal2
+	ld a, BANK(sMysteryGiftTrainer)
+	call GetSRAMBank
+	ld de, sMysteryGiftTrainer
+	call TrainerType2
+	call CloseSRAM
+	jr .done
+; 397e3
+
+TrainerTypes: ; 397e3
+	dw TrainerType1 ; level, species
+	dw TrainerType2 ; level, species, moves
+	dw TrainerType3 ; level, species, item
+	dw TrainerType4 ; level, species, item, moves
+; 397eb
+
+TrainerType1: ; 397eb
+; normal (level, species)
+	ld h, d
+	ld l, e
+.loop
+	ld a, [hli]
+	cp $ff
+	ret z
+
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld a, OTPARTYMON
+	ld [MonType], a
+	push hl
+	predef TryAddMonToParty
+	pop hl
+	jr .loop
+; 39806
+
+TrainerType2: ; 39806
+; moves
+	ld h, d
+	ld l, e
+.loop
+	ld a, [hli]
+	cp $ff
+	ret z
+
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld a, OTPARTYMON
+	ld [MonType], a
+
+	push hl
+	predef TryAddMonToParty
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Moves
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+
+	ld b, NUM_MOVES
+.copy_moves
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .copy_moves
+
+	push hl
+
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, MON_PP
+	add hl, de
+	push hl
+	ld hl, MON_MOVES
+	add hl, de
+	pop de
+
+	ld b, NUM_MOVES
+.copy_pp
+	ld a, [hli]
+	and a
+	jr z, .copied_pp
+
+	push hl
+	push bc
+	dec a
+	ld hl, Moves + MOVE_PP
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	pop bc
+	pop hl
+
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .copy_pp
+.copied_pp
+
+	pop hl
+	jr .loop
+; 39871
+
+TrainerType3: ; 39871
+; item
+	ld h, d
+	ld l, e
+.loop
+	ld a, [hli]
+	cp $ff
+	ret z
+
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld a, OTPARTYMON
+	ld [MonType], a
+	push hl
+	predef TryAddMonToParty
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Item
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [hli]
+	ld [de], a
+	jr .loop
+; 3989d (e:589d)
+
+TrainerType4: ; 3989d
+; item + moves
+	ld h, d
+	ld l, e
+.loop
+	ld a, [hli]
+	cp $ff
+	ret z
+
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+
+	ld a, OTPARTYMON
+	ld [MonType], a
+
+	push hl
+	predef TryAddMonToParty
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Item
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+
+	ld a, [hli]
+	ld [de], a
+
+	push hl
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Moves
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+
+	ld b, NUM_MOVES
+.copy_moves
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .copy_moves
+
+	push hl
+
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, MON_PP
+	add hl, de
+
+	push hl
+	ld hl, MON_MOVES
+	add hl, de
+	pop de
+
+	ld b, NUM_MOVES
+.copy_pp
+	ld a, [hli]
+	and a
+	jr z, .copied_pp
+
+	push hl
+	push bc
+	dec a
+	ld hl, Moves + MOVE_PP
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	pop bc
+	pop hl
+
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .copy_pp
+.copied_pp
+
+	pop hl
+	jr .loop
+; 3991b
+
+ComputeTrainerReward: ; 3991b (e:591b)
+	ld hl, hProduct
+	xor a
+rept 3
+	ld [hli], a
+endr
+	ld a, [wEnemyTrainerBaseReward]
+	ld [hli], a
+	ld a, [CurPartyLevel]
+	ld [hl], a
+	call Multiply
+	ld hl, wBattleReward
+	xor a
+	ld [hli], a
+	ld a, [hProduct + 2]
+	ld [hli], a
+	ld a, [hProduct + 3]
+	ld [hl], a
+	ret
+
+
+Battle_GetTrainerName:: ; 39939
+	ld a, [InBattleTowerBattle]
+	bit 0, a
+	ld hl, wd26b
+	jp nz, CopyTrainerName
+
+	ld a, [OtherTrainerID]
+	ld b, a
+	ld a, [OtherTrainerClass]
+	ld c, a
+
+GetTrainerName:: ; 3994c
+	ld a, c
+	cp CAL
+	jr nz, .not_cal2
+
+	ld a, BANK(sMysteryGiftTrainerHouseFlag)
+	call GetSRAMBank
+	ld a, [sMysteryGiftTrainerHouseFlag]
+	and a
+	call CloseSRAM
+	jr z, .not_cal2
+
+	ld a, BANK(sMysteryGiftPartnerName)
+	call GetSRAMBank
+	ld hl, sMysteryGiftPartnerName
+	call CopyTrainerName
+	jp CloseSRAM
+
+.not_cal2
+	dec c
+	push bc
+	ld b, 0
+	ld hl, TrainerGroups
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop bc
+
+.loop
+	dec b
+	jr z, CopyTrainerName
+
+.skip
+	ld a, [hli]
+	cp $ff
+	jr nz, .skip
+	jr .loop
+
+CopyTrainerName: ; 39984
+	ld de, StringBuffer1
+	push de
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	pop de
+	ret
+; 39990
+
+Function39990: ; 39990
+; This function is useless.
+	ld de, StringBuffer1
+	push de
+	ld bc, NAME_LENGTH
+	pop de
+	ret
+; 39999
--- a/unknown/013a47.asm
+++ b/unknown/013a47.asm
@@ -87,7 +87,7 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, MON_EXP + 2
+	ld hl, MON_STAT_EXP - 1
 	add hl, bc
 	ld b, $1
 	predef CalcPkmnStats
--- a/wram.asm
+++ b/wram.asm
@@ -44,6 +44,39 @@
 \1StatsEnd::
 ENDM
 
+red_box_struct: MACRO
+\1Species::    db
+\1HP::         dw
+\1BoxLevel::   db
+\1Status::     db
+\1Type::
+\1Type1::      db
+\1Type2::      db
+\1CatchRate::  db
+\1Moves::      ds NUM_MOVES
+\1OTID::       dw
+\1Exp::        ds 3
+\1HPExp::      dw
+\1AttackExp::  dw
+\1DefenseExp:: dw
+\1SpeedExp::   dw
+\1SpecialExp:: dw
+\1DVs::        ds 2
+\1PP::         ds NUM_MOVES
+ENDM
+
+red_party_struct: MACRO
+	red_box_struct \1
+\1Level::      db
+\1Stats::
+\1MaxHP::      dw
+\1Attack::     dw
+\1Defense::    dw
+\1Speed::      dw
+\1Special::    dw
+ENDM
+
+
 battle_struct: MACRO
 \1Species::   db
 \1Item::      db
@@ -87,8 +120,8 @@
 ; Addreses are Channel1 (c101).
 \1MusicID::           dw
 \1MusicBank::         db
-\1Flags::             db ; 0:on/off 1:subroutine 4:noise
-\1Flags2::            db ; 0:vibrato on/off 2:duty
+\1Flags::             db ; 0:on/off 1:subroutine 3:sfx 4:noise 5:rest
+\1Flags2::            db ; 0:vibrato on/off 2:duty 4:cry pitch
 \1Flags3::            db ; 0:vibrato up/down
 \1MusicAddress::      dw
 \1LastMusicAddress::  dw
@@ -104,28 +137,30 @@
 \1Octave::            db ; 7-0 (0 is highest)
 \1StartingOctave::    db ; raises existing octaves (to repeat phrases)
 \1NoteDuration::      db ; frames remaining for the current note
-                      ds 1 ; c117
+\1Field0x16::         ds 1 ; c117
                       ds 1 ; c118
 \1LoopCount::         db
 \1Tempo::             dw
 \1Tracks::            db ; hi:left lo:right
-                      ds 1 ; c11d
+\1Field0x1c::         ds 1 ; c11d
 \1VibratoDelayCount:: db ; initialized by \1VibratoDelay
 \1VibratoDelay::      db ; number of frames a note plays until vibrato starts
 \1VibratoExtent::     db
 \1VibratoRate::       db ; hi:frames for each alt lo:frames to the next alt
-                      ds 1 ; c122
-                      ds 1 ; c123
-                      ds 1 ; c124
-                      ds 1 ; c125
-                      ds 1 ; c126
+\1Field0x21::         ds 1 ; c122
+\1Field0x22::         ds 1 ; c123
+\1Field0x23::         ds 1 ; c124
+\1Field0x24::         ds 1 ; c125
+\1Field0x25::         ds 1 ; c126
                       ds 1 ; c127
 \1CryPitch::          dw
-                      ds 4
+\1Field0x29::         ds 1
+\1Field0x2a::         ds 2
+\1Field0x2c::         ds 1
 \1NoteLength::        db ; frames per 16th note
-                      ds 1 ; c12f
-                      ds 1 ; c130
-                      ds 1 ; c131
+\1Field0x2e::         ds 1 ; c12f
+\1Field0x2f::         ds 1 ; c130
+\1Field0x30::         ds 1 ; c131
                       ds 1 ; c132
 ENDM
 
@@ -156,7 +191,27 @@
 \1End::
 endm
 
+hof_mon: MACRO
+\1Species:: ds 1
+\1ID:: ds 2
+\1DVs:: ds 2
+\1Level:: ds 1
+\1Nickname:: ds PKMN_NAME_LENGTH +- 1
+\1End::
+endm
 
+hall_of_fame: MACRO
+\1::
+\1WinCount:: ds 1
+\1Mon1:: hof_mon \1Mon1	
+\1Mon2:: hof_mon \1Mon2	
+\1Mon3:: hof_mon \1Mon3	
+\1Mon4:: hof_mon \1Mon4	
+\1Mon5:: hof_mon \1Mon5	
+\1Mon6:: hof_mon \1Mon6
+\1End:: ds 1
+ENDM
+
 INCLUDE "vram.asm"
 
 SECTION "Stack", WRAM0
@@ -187,12 +242,11 @@
 Channel8:: channel_struct Channel8 ; c25f
 
 	ds 1 ; c291
-wc292:: ds 1
-wc293:: ds 1
-wc294:: ds 1
-wc295:: ds 1
-wc296:: ds 1
-wc297:: ds 1
+wCurTrackDuty:: ds 1
+wCurTrackIntensity:: ds 1
+wCurTrackFrequency:: dw
+wc296:: ds 1 ; used only in an unused script
+wc297:: ds 1 ; used in MusicE0 and LoadNote
 
 CurMusicByte:: ; c298
 	ds 1
@@ -232,7 +286,7 @@
 	ds 1
 NoiseSampleAddressHi:: ; c2a1
 	ds 1
-wc2a2:: ; noise delay? ; c2a2
+wNoiseSampleDelay:: ; noise delay? ; c2a2
 	ds 1
 ; c2a3
 	ds 1
@@ -272,24 +326,24 @@
 ; if nonzero, turn off music when playing sfx
 	ds 1
 	ds 1
-wc2b8:: ds 1
-wc2b9:: ds 1
-wc2ba:: ds 1
-wc2bb:: ds 1
-wc2bc:: ds 1
+Channel1JumpCondition:: ds 1
+Channel2JumpCondition:: ds 1
+Channel3JumpCondition:: ds 1
+Channel4JumpCondition:: ds 1
+wStereoPanningMask:: ds 1
 CryTracks:: ; c2bd
 ; plays only in left or right track depending on what side the monster is on
 ; both tracks active outside of battle
 	ds 1
-wc2be:: ds 1
+wSFXDuration:: ds 1
 CurSFX:: ; c2bf
 ; id of sfx currently playing
 	ds 1
-wc2c0::
+
 wMapMusic:: ; c2c0
 	ds 1
 
-wc2c1:: ds 1
+wDontPlayMapMusicOnReload:: ds 1
 
 
 SECTION "WRAM", WRAM0
@@ -299,7 +353,7 @@
 
 	ds 1
 
-wc2c6:: ds 1
+wBoxAlignment:: ds 1
 InputType:: ; c2c7
 	ds 1
 AutoInputAddress:: ; c2c8
@@ -309,14 +363,15 @@
 AutoInputLength:: ; c2cb
 	ds 1
 
-wc2cc:: ds 1
+wMonStatusFlags:: ds 1
 wc2cd:: ds 1
 wSpriteUpdatesEnabled:: ds 1
 wc2cf:: ds 1
-wc2d0:: ds 4
+wMapTimeOfDay:: ds 1
+	ds 3
 wc2d4:: ds 1
 wc2d5:: ds 1
-wc2d6:: ds 1
+wLastDexEntry:: ds 1
 wc2d7:: ds 1
 wPreviousLandmark:: ds 1
 wCurrentLandmark:: ds 1
@@ -330,14 +385,14 @@
 ScriptVar:: ; c2dd
 	ds 1
 
-wc2de:: ds 1
-wc2df:: ds 1
+wPlayerNextMovement:: ds 1
+wPlayerMovement:: ds 1
 	ds 2
+wc2e2::
 wMovementPerson:: ds 1
 wMovementDataPointer:: ds 3 ; dba
 wc2e6:: ds 4
-wc2ea:: ds 1
-wc2eb::
+wMovementByteWasControlSwitch:: ds 1
 wMovementPointer:: ds 2 ; c2eb
 	ds 3
 
@@ -373,8 +428,10 @@
 
 	ds 1
 
-SECTION "c300", WRAM0 [$c300]
+SECTION "wSpriteAnims", WRAM0 [$c300]
 ; wc300 - wc313 is a 10x2 dictionary.
+; keys: taken from third column of SpriteAnimSeqData
+; values: VTiles
 wSpriteAnimDict:: ds 10 * 2
 	ds wSpriteAnimDict - @
 wc300:: ds 1
@@ -399,17 +456,17 @@
 wSpriteAnimationStructs::
 
 sprite_anim_struct: MACRO
-\1Index:: ds 1      ; 0
-\1Sprite01:: ds 1   ; 1
-\1AnimSeqID:: ds 1  ; 2
-\1TileID:: ds 1     ; 3
-\1XCoord:: ds 1     ; 4
-\1YCoord:: ds 1     ; 5
-\1XOffset:: ds 1    ; 6
-\1YOffset:: ds 1    ; 7
-\1FrameTimer:: ds 1 ; 8 
-\1Sprite09:: ds 1   ; 9
-\1FrameIndex:: ds 1 ; a
+\1Index:: ds 1          ; 0
+\1FramesetID:: ds 1     ; 1
+\1AnimSeqID:: ds 1      ; 2
+\1TileID:: ds 1         ; 3
+\1XCoord:: ds 1         ; 4
+\1YCoord:: ds 1         ; 5
+\1XOffset:: ds 1        ; 6
+\1YOffset:: ds 1        ; 7
+\1Duration:: ds 1       ; 8 
+\1DurationOffset:: ds 1 ; 9
+\1FrameIndex:: ds 1     ; a
 \1Sprite0b:: ds 1
 \1Sprite0c:: ds 1
 \1Sprite0d:: ds 1
@@ -418,7 +475,7 @@
 ENDM
 
 ; Field  0: Index
-; Fields 1-3: Loaded from Unknown_8d1c4
+; Fields 1-3: Loaded from SpriteAnimSeqData
 wc314::
 SpriteAnim1:: sprite_anim_struct SpriteAnim1
 wc324::
@@ -442,23 +499,25 @@
 wSpriteAnimationStructsEnd::
 	ds -8
 wc3ac:: ds 8 ; c3ac
-wSpriteAnimCount::
-wc3b4:: ds 1
-wc3b5:: ds 1
+wSpriteAnimCount:: ds 1
+wCurrSpriteOAMAddr:: ds 1
 
 CurIcon:: ; c3b6
 	ds 1
 
 
-wc3b7:: ds 1
-wc3b8:: dw
-wc3ba:: ds 1
-wc3bb:: ds 1
-wc3bc:: ds 1
-wc3bd:: ds 1
-wc3be:: ds 1
-wc3bf:: ds 1
-wc3c0:: ds 1
+wCurIconTile:: ds 1
+wSpriteAnimAddrBackup::
+wSpriteAnimIDBuffer::
+wCurrSpriteAddSubFlags::
+	ds 2
+wCurrAnimVTile:: ds 1
+wCurrAnimXCoord:: ds 1
+wCurrAnimYCoord:: ds 1
+wCurrAnimXOffset:: ds 1
+wCurrAnimYOffset:: ds 1
+wGlobalAnimYOffset:: ds 1
+wGlobalAnimXOffset:: ds 1
 wSpriteAnimsEnd::
 
 wc3c1:: ds 11
@@ -512,15 +571,18 @@
 
 
 SECTION "Battle", WRAM0
-	party_struct OddEgg
+wOddEgg:: party_struct OddEgg
 wOddEggName:: ds PKMN_NAME_LENGTH
 wOddEggOTName:: ds PKMN_NAME_LENGTH
-	ds -70
+	ds wOddEgg - @
 
 wBT_OTTemp:: battle_tower_struct wBT_OTTemp
 	ds wBT_OTTemp - @
 
-wMisc::
+	hall_of_fame wHallOfFameTemp
+	ds wHallOfFameTemp - @
+
+wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
 wBattle::
 wc608::
 
@@ -528,30 +590,29 @@
 wc60f::
 wPlayerMoveStruct:: ds MOVE_LENGTH ; c60f
 wc616::
+	ds -4
+wc612:: ds 4
 EnemyMonNick::  ds PKMN_NAME_LENGTH ; c616
 	ds -5
 wInitHourBuffer:: ds 5
 BattleMonNick:: ds PKMN_NAME_LENGTH ; c621
+	ds -6
+wc626:: ds 6
 
 BattleMon:: battle_struct BattleMon ; c62c
 
-wc64c::
-	ds 1
+	ds 2
 
-wc64d:: ds 1
-wWildMon::
-wc64e:: ds 1
+wWildMon:: ds 1
 	ds 1
 wEnemyTrainerItem1:: ds 1
 wEnemyTrainerItem2:: ds 1
 wEnemyTrainerBaseReward:: ds 1
 wEnemyTrainerAIFlags:: ds 3
-wc656::
 OTName:: ds NAME_LENGTH ; c656
 
 	ds 2
 
-wc663::
 CurOTMon:: ; c663
 	ds 1
 
@@ -571,7 +632,9 @@
 	ds 1
 
 CriticalHit:: ; c666
-; nonzero for a critical hit
+; 0 if not critical
+; 1 for a critical hit
+; 2 for a OHKO
 	ds 1
 
 AttackMissed:: ; c667
@@ -692,6 +755,7 @@
 	ds 2
 
 wBattleReward:: ds 3
+wBattleAnimParam::
 wKickCounter::
 wPresentPower:: ds 1
 wc68a::
@@ -723,8 +787,8 @@
 	ds 1
 
 trademon: MACRO
-\1Species:: ds 1 ; wc6d0 | wc702
-\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703
+\1Species:: ds 1 ; wc6d0 | wDummyGameNumberTriesRemaining
+\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wDummyGameLastMatches
 \1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e
 \1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719
 \1OTName:: ds NAME_LENGTH ; wc6f2 | wc724
@@ -733,14 +797,92 @@
 \1CaughtData:: ds 1 ; wc701 | wc733
 \1End::
 ENDM
-
+wTrademons::
 wPlayerTrademon:: trademon wPlayerTrademon
 wOTTrademon::     trademon wOTTrademon
+wTrademonsEnd::
+	ds wTrademons - @
 
-	ds wPlayerTrademon - @
+; Slot Machine
+wSlots::
+slot_reel: MACRO
+\1ReelAction::   db
+\1TilemapAddr::  dw
+\1Position::     db
+\1SpinDistance:: db
+\1SpinRate::     db
+\1OAMAddr::      dw
+\1XCoord::       db
+\1Slot09::       ds 1
+\1Slot0a::       ds 1
+\1Slot0b::       ds 1
+\1Slot0c::       ds 1
+\1Slot0d::       ds 1
+\1Slot0e::       ds 1
+\1Slot0f::       ds 1
+endm
+; c6d0
+wReel1:: slot_reel wReel1
+wReel2:: slot_reel wReel2
+wReel3:: slot_reel wReel3
+; c700
+wReel1Stopped:: ds 3
+wReel2Stopped:: ds 3
+wReel3Stopped:: ds 3
+wSlotBias:: ds 1
+wSlotBet:: ds 1
+wFirstTwoReelsMatching:: ds 1
+wFirstTwoReelsMatchingSevens:: ds 1
+wSlotMatched:: ds 1
+wCurrReelStopped:: ds 3
+wPayout:: ds 2
+wCurrReelXCoord:: ds 1
+wCurrReelYCoord:: ds 1
+	ds 2
+wSlotBuildingMatch:: ds 1
+wSlotsDataEnd::
+	ds 28
+wSlotsEnd::
+	ds wSlots - @
 
+; Card Flip
+; c6d0
+wCardFlip::
+wDeck:: ds 24
+wDeckEnd::
+; c6e8
+wCardFlipNumCardsPlayed:: ds 1
+wCardFlipFaceUpCard:: ds 1
+wDiscardPile:: ds 24
+wDiscardPileEnd::
+wCardFlipEnd::
+	ds wCardFlip - @
+
+; Dummy Game
+; c6d0
+wDummyGame::
+wDummyGameCards:: ds 9 * 5
+wDummyGameCardsEnd::
+wDummyGameLastCardPicked:: ds 1 ; c6fd
+wDummyGameCard1:: ds 1 ; c6fe
+wDummyGameCard2:: ds 1 ; c6ff
+wDummyGameCard1Location:: ds 1 ; c700
+wDummyGameCard2Location:: ds 1 ; c701
+wDummyGameNumberTriesRemaining:: ds 1 ; c702
+wDummyGameLastMatches:: ds 5 ; c703
+wDummyGameCounter:: ds 1 ; c708
+wDummyGameNumCardsMatched:: ds 1 ; c709
+wDummyGameEnd::
+	ds wDummyGame - @
+; Unown Puzzle
+wUnownPuzzle::
+wPuzzlePieces::
+	ds 6 * 6
+wUnownPuzzleEnd::
+	ds wUnownPuzzle - @
+
+; Battle RAM
 wc6d0::
-wPokedexDataStart::
 PlayerSDefLevel:: ; c6d0
 	ds 1
 wc6d1::
@@ -905,8 +1047,9 @@
 wc70e::
 FailedMessage:: ; c70e
 	ds 1
-
-wEnemyGoesFirst:: ds 1
+wc70f::
+wEnemyGoesFirst::
+	ds 1
 wc710::
 wPlayerIsSwitching:: ds 1 ; c710
 wc711::
@@ -921,7 +1064,9 @@
 wc716:: ds 1
 wEnemySwitchMonParam::
 wc717:: ds 1
+wc718::
 wEnemySwitchMonIndex:: ds 1
+wTempLevel::
 wc719:: ds 1
 LastPlayerMon:: ; c71a
 wc71a:: ds 1
@@ -935,8 +1080,8 @@
 wc71f:: ds 1
 wc720:: ds 4 ; copy from/to EnemyMonBaseStats, length=7
 wc724:: ds 3
-wc727:: ds 2
-wc729:: ds 2
+wPlayerFutureSightDamage:: ds 2
+wEnemyFutureSightDamage:: ds 2
 wPlayerRageCounter:: ds 1
 wEnemyRageCounter:: ds 1
 wc72d:: ds 1 ; if 0 then PrintButItFailed
@@ -963,8 +1108,7 @@
 wLinkPlayer2Name:: ds NAME_LENGTH
 	ds wLinkPlayer1Name - @
 wc736:: ds 3
-wWildMonPP::
-wc739:: ds 4
+wWildMonPP:: ds NUM_MOVES
 wAmuletCoin:: ds 1
 wc73e:: ds 1
 wPlayerJustGotFrozen:: ds 1
@@ -979,12 +1123,22 @@
 wc74e:: ds 107
 wc7b9:: ds 1
 wc7ba:: ds 1
-wc7bb:: ds 15
-wc7ca:: ds 6
-wc7d0:: ds 1
-wc7d1:: ds 1
-wc7d2:: ds 1
-wc7d3:: ds 1
+wc7bb:: ds 2
+wc7bd::
+	ds wc6d0 - @
+
+wPokedexDataStart::
+wPokedexOrder:: ds NUM_POKEMON +- 1
+wPokedexOrderEnd:: ds 6
+wPokedexMetadata::
+wDexListingPage::
+wc7d0:: ds 1 ; Dex list page
+wDexListingCursor::
+wc7d1:: ds 1 ; Dex cursor
+wDexListingEnd::
+wc7d2:: ds 1 ; Last mon to display
+wc7d3:: ds 1 ; Number of mons visible per dex list page
+wCurrentDexMode::   ; Pokedex Mode
 wc7d4:: ds 1 ; Index of the topmost visible item in a scrolling menu
 wc7d5:: ds 1 ; Which row the cursor is at in a scrolling menu (0-6)
 wc7d6:: ds 1
@@ -992,15 +1146,18 @@
 wc7d8:: ds 1
 wc7d9:: ds 1
 wc7da:: ds 1
-wc7db:: ds 1
-wc7dc:: ds 1
+wDexSearchSlowpokeFrame:: ds 1
+wUnlockedUnownMode:: ds 1
 wc7dd:: ds 1
 wc7de:: ds 1
 wc7df:: ds 1
 wc7e0:: ds 1
 wc7e1:: ds 1
+wBackupDexListingCursor::
 wc7e2:: ds 1
+wBackupDexListingPage::
 wc7e3:: ds 1
+wDexCurrentLocation::
 wc7e4:: ds 1
 IF DEF(CRYSTAL11)
 wPokedexStatus::
@@ -1024,13 +1181,57 @@
 OverworldMapEnd::
 	ds OverworldMap - @
 
+wBillsPCPokemonList::
+; Pokemon, box number, list index
+
+wMysteryGiftPartyTemp:: ; ds PARTY_LENGTH * (1 + 1 + NUM_MOVES)
+wMysteryGiftStaging::
+
+wLinkData:: ; ds $514
+wLinkPlayerName:: ds NAME_LENGTH
+wLinkPartyCount:: ds 1
+wLinkPartySpecies:: ds PARTY_LENGTH
+wLinkPartySpeciesEnd:: ds 1
+
+wTimeCapsulePlayerData::
+wTimeCapsulePartyMon1:: red_party_struct wTimeCapsulePartyMon1
+wTimeCapsulePartyMon2:: red_party_struct wTimeCapsulePartyMon2
+wTimeCapsulePartyMon3:: red_party_struct wTimeCapsulePartyMon3
+wTimeCapsulePartyMon4:: red_party_struct wTimeCapsulePartyMon4
+wTimeCapsulePartyMon5:: red_party_struct wTimeCapsulePartyMon5
+wTimeCapsulePartyMon6:: red_party_struct wTimeCapsulePartyMon6
+wTimeCapsulePartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
+wTimeCapsulePartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
+wTimeCapsulePlayerDataEnd::
+	ds wTimeCapsulePlayerData - @
+
+wLinkPlayerData::
+wLinkPlayerPartyMon1:: party_struct wLinkPlayerPartyMon1
+wLinkPlayerPartyMon2:: party_struct wLinkPlayerPartyMon2
+wLinkPlayerPartyMon3:: party_struct wLinkPlayerPartyMon3
+wLinkPlayerPartyMon4:: party_struct wLinkPlayerPartyMon4
+wLinkPlayerPartyMon5:: party_struct wLinkPlayerPartyMon5
+wLinkPlayerPartyMon6:: party_struct wLinkPlayerPartyMon6
+wLinkPlayerPartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
+wLinkPlayerPartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
+wLinkPlayerDataEnd::
+	ds $35d
+
+wLinkDataEnd::
+	ds wLinkData - @
+
 wc800::	ds 1
 wc801:: ds 1
 wc802:: ds 1
 wc803:: ds 4
-wc807:: ds 9
-wc810:: ds 3
-wc813:: ds 5
+wc807:: ds 7
+wc80e:: ds 1
+wc80f:: ds 1
+wc810:: ds 1
+wc811:: ds 1
+wc812:: ds 1
+wc813:: ds 1
+wc814:: ds 4
 wc818:: ds 8
 wc820:: ds 1
 wc821:: ds 15
@@ -1037,6 +1238,7 @@
 wc830:: ds 16
 wc840:: ds 16
 wMysteryGiftTrainerData:: ds (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2
+wMysteryGiftTrainerDataEnd::
 	ds wMysteryGiftTrainerData - @
 wc850:: ds 16
 wc860:: ds 16
@@ -1049,20 +1251,34 @@
 wc8d0:: ds 16
 wc8e0:: ds 16
 wc8f0:: ds 16
+
+wMysteryGiftPartnerData::
 wc900:: ds 1
 wMysteryGiftPartnerID:: ds 2
 wMysteryGiftPartnerName:: ds NAME_LENGTH
-wc90e:: ds 1
-wc90f:: ds 1
-wc910:: ds 1
-wc911:: ds 1
-wc912:: ds 14
+wMysteryGiftPartnerDexCaught:: ds 1
+wc90f::
+wMysteryGiftPartnerSentDeco:: ds 1
+wMysteryGiftPartnerWhichItem:: ds 1
+wMysteryGiftPartnerWhichDeco:: ds 1
+wMysteryGiftPartnerBackupItem:: ds 2
+wMysteryGiftPartnerDataEnd::
+	ds 12
 wc920:: ds 16
 wc930:: ds 16
 wc940:: ds 16
-wc950:: ds 16
-wc960:: ds 2
-wc962:: ds 14
+wMysteryGiftPlayerData::
+wc950:: ds 1
+wMysteryGiftPlayerID:: ds 2
+wMysteryGiftPlayerName:: ds NAME_LENGTH
+wMysteryGiftPlayerDexCaught:: ds 1
+wMysteryGiftPlayerSentDeco:: ds 1
+wMysteryGiftPlayerWhichItem:: ds 1
+wMysteryGiftPlayerWhichDeco:: ds 1
+wMysteryGiftPlayerBackupItem:: ds 2
+wMysteryGiftPlayerDataEnd::
+
+wc964:: ds 12
 wc970:: ds 16
 wc980:: ds 16
 wc990:: ds 16
@@ -1074,6 +1290,8 @@
 wc9f0:: ds 4
 wc9f4:: ds 5
 wc9f9:: ds 7
+
+wCreditsFaux2bpp::
 wca00:: ds 1
 wca01:: ds 1
 wca02:: ds 14
@@ -1126,23 +1344,25 @@
 wcb0e:: ds 5
 wcb13:: ds 9
 wcb1c:: ds 14
-wcb2a:: ds 1
-wcb2b:: ds 1
-wcb2c:: ds 1
-wcb2d:: ds 1
-wcb2e:: ds 1
-wcb2f:: ds 1
-wcb30:: ds 1
-wcb31:: ds 1
-wcb32:: ds 19
+wBillsPC_ScrollPosition:: ds 1
+wBillsPC_CursorPosition:: ds 1
+wBillsPC_NumMonsInBox:: ds 1
+wBillsPC_NumMonsOnScreen:: ds 1
+wBillsPC_LoadedBox:: ds 1 ; 0 if party, 1 - 14 if box, 15 if active box
+wBillsPC_BackupScrollPosition:: ds 1
+wBillsPC_BackupCursorPosition:: ds 1
+wBillsPC_BackupLoadedBox:: ds 1
+wBillsPC_MonHasMail:: ds 1
+	ds 18
 wcb45:: ds 20
 wcb59:: ds 20
 wcb6d:: ds 1
 wcb6e:: ds 22
 wcb84:: ds 100
-wcbe8:: ds 1
-wcbe9:: ds 1
-wcbea:: ds 14
+wcbe8:: dw
+wLinkOTPartyMonTypes::
+	ds 2 * PARTY_LENGTH
+	ds 2
 
 wcbf8:: ds 2
 wcbfa:: ds 1
@@ -1162,7 +1382,14 @@
 
 SECTION "Video", WRAM0
 CreditsPos::
-BGMapBuffer:: ; cd20
+BGMapBuffer::
+wMobileMonSpeciesPointerBuffer:: dw
+wMobileMonStructurePointerBuffer:: dw
+wMobileMonOTNamePointerBuffer:: dw
+wMobileMonNicknamePointerBuffer:: dw
+wMobileMonMailPointerBuffer:: dw
+	ds CreditsPos - @
+
 wcd20:: ds 1
 wcd21:: ds 1
 wcd22::
@@ -1176,7 +1403,9 @@
 wcd27:: ds 1
 wcd28:: ds 1
 wcd29:: ds 1
+wMobileMonSpeciesBuffer::
 wcd2a:: ds 1
+wTempOddEggNickname::
 wcd2b:: ds 1
 wcd2c:: ds 1
 wcd2d:: ds 1
@@ -1209,6 +1438,7 @@
 BGMapPalBuffer:: ; cd48
 	ds 1 ; 40
 
+wBTTempOTSprite::
 wcd49:: ds 1
 wcd4a:: ds 1
 wcd4b:: ds 1
@@ -1282,9 +1512,9 @@
 EnemyHPPal:: ; cd9a
 	ds 1
 
-wcd9b:: ds 6
+wHPPals:: ds PARTY_LENGTH
 wcda1:: ds 8
-wcda9:: ds 48
+wSGBPals:: ds 48 ; cda9
 
 AttrMap:: ; cdd9
 ; 20x18 grid of palettes for 8x8 tiles
@@ -1293,11 +1523,13 @@
 ; bit 0-2: palette id
 	ds SCREEN_WIDTH * SCREEN_HEIGHT
 AttrMapEnd::
-
-wcf41:: ds 1
+	ds 1
 wcf42:: ds 2
 wcf44:: ds 1
-wcf45:: ds 12
+wcf45::
+	ds AttrMapEnd - @
+wTileAnimBuffer::
+	ds $10
 ; addresses dealing with serial comms
 wOtherPlayerLinkMode:: ds 1
 wOtherPlayerLinkAction:: ds 4
@@ -1317,20 +1549,32 @@
 wNamedObjectTypeBuffer:: ds 1
 	ds 1
 wJumptableIndex::
+wBattleTowerBattleEnded::
 wcf63:: ds 1
 wNrOfBeatenBattleTowerTrainers::
 wMomBankDigitCursorPosition::
 wIntroSceneFrameCounter::
+wHoldingUnownPuzzlePiece::
+wCardFlipCursorY::
+wCreditsBorderFrame::
 wcf64:: ds 1
 IF !DEF(CRYSTAL11)
 wPokedexStatus::
 ENDC
+wCreditsBorderMon::
 wTitleScreenTimerLo::
+wUnownPuzzleCursorPosition::
+wCardFlipCursorX::
+wCurrPocket::
 wcf65:: ds 1
+wCreditsLYOverride::
 wTitleScreenTimerHi::
+wUnownPuzzleHeldPiece::
+wCardFlipWhichCard::
 wcf66:: ds 1
 
 Requested2bpp:: ; cf67
+Requested2bppSize::
 	ds 1
 Requested2bppSource:: ; cf68
 	ds 2
@@ -1338,6 +1582,7 @@
 	ds 2
 
 Requested1bpp:: ; cf6c
+Requested1bppSize::
 	ds 1
 Requested1bppSource:: ; cf6d
 	ds 2
@@ -1344,18 +1589,14 @@
 Requested1bppDest:: ; cf6f
 	ds 2
 
-; something to do with menu
-wcf71:: ds 1
-wcf72:: ds 1
-wcf73:: ds 1
-MenuSelection:: ; cf74
-	ds 1
+wWindowStackPointer:: dw ; cf71
+wMenuJoypad:: ds 1   ; cf73
+MenuSelection:: ds 1 ; cf74
+MenuSelectionQuantity:: ds 1 ; cf75
+wWhichIndexSet:: ds 1
+wScrollingMenuCursorPosition:: ds 1
+wWindowStackSize:: ds 9
 
-wcf75:: ds 1
-wcf76:: ds 1
-wcf77:: ds 1
-wcf78:: ds 9
-
 ; menu data header
 wMenuDataHeader:: ; cf81
 wMenuFlags:: ds 1
@@ -1373,40 +1614,61 @@
 wMenuData2::
 wMenuData2Flags:: ds 1 ; cf91
 ; bit 7: When set, start printing text one tile to the right of the border
+;        In scrolling menus, SELECT is functional
 ; bit 6: When set, start printing text one tile below the border
+;        In scrolling menus, START is functional
 ; bit 5: ????
 ; bit 4: ????
 ; bit 3: ????
 ; bit 2: ????
-; bit 1: ????
-; bit 0: ????
+; bit 1: Enable Select button
+; bit 0: Disable B button
 
-wMenuData2Items:: ds 1
-wcf93:: ds 1
-wcf94:: ds 1
-wcf95:: ds 1 ; bank
-wcf96:: ds 1 ; addr lo
-wcf97:: ds 1 ; addr hi
-wcf98:: ds 3
-wcf9b:: ds 3
-wcf9e:: ds 3
+wMenuData2_ScrollingMenuHeight::
+wMenuData2Items::
+	ds 1 ; cf92
+wMenuData2IndicesPointer::
+wMenuData2Spacing::
+wMenuData2_ScrollingMenuWidth::
+	ds 1 ; cf93
+wMenuData2_2DMenuItemStringsBank::
+wMenuData2_ScrollingMenuSpacing::
+	ds 1 ; cf94
+wMenuData2_2DMenuItemStringsAddr::
+wMenuData2DisplayFunctionPointer::
+wMenuData2_ItemsPointerBank::
+	ds 1 ; cf95
+wMenuData2_ItemsPointerAddr::
+	ds 1 ; cf96
+wMenuData2PointerTableAddr::
+wMenuData2_2DMenuFunctionBank::
+	ds 1 ; cf97
+wMenuData2_2DMenuFunctionAddr::
+wMenuData2_ScrollingMenuFunction1::
+	ds 3 ; cf98
+wMenuData2_ScrollingMenuFunction2::
+	ds 3 ; cf9b
+wMenuData2_ScrollingMenuFunction3::
+	ds 3 ; cf9e
 wMenuData2End::
+
 wMenuData3::
-wcfa1:: ds 1
-wcfa2:: ds 1
-wcfa3:: ds 1
-wcfa4:: ds 1
-wcfa5:: ds 1 ; dynamic menu flags?
-wcfa6:: ds 1 ; dynamic menu flags?
-wcfa7:: ds 1
-wcfa8:: ds 1
+w2DMenuCursorInitY:: ds 1 ; cfa1
+w2DMenuCursorInitX:: ds 1 ; cfa2
+w2DMenuNumRows:: ds 1 ; cfa3
+w2DMenuNumCols:: ds 1 ; cfa4
+w2DMenuFlags1:: ds 1 ; cfa5
+w2DMenuFlags2:: ds 1 ; cfa6
+w2DMenuCursorOffsets:: ds 1 ; cfa7
+wMenuJoypadFilter:: ds 1 ; cfa8
 wMenuData3End::
-MenuSelection2:: ds 1
-wcfaa:: ds 1
-wcfab:: ds 1
-wcfac:: ds 1
-wcfad:: ds 4
 
+wMenuCursorY:: ds 1 ; cfa9
+wMenuCursorX:: ds 1 ; cfaa
+wCursorOffCharacter:: ds 1 ; cfab
+wCursorCurrentTile:: ds 2 ; cfac
+	ds 3
+
 OverworldDelay:: ; cfb1
 	ds 1
 TextDelayFrames:: ; cfb2
@@ -1430,7 +1692,9 @@
 
 	ds 1
 
-wcfbe:: ds 2
+wcfbe::
+; SGB flags?
+	ds 2
 
 InBattleTowerBattle:: ; cfc0
 ; 0 not in BattleTower-Battle
@@ -1444,18 +1708,20 @@
 	ds 1
 FXAnimIDHi:: ; cfc3
 	ds 1
-
-wcfc4:: ds 1
-wcfc5:: ds 1
-
+wPlaceBallsX:: ; cfc4
+	ds 1
+wPlaceBallsY:: ; cfc5
+	ds 1
 TileAnimationTimer:: ; cfc6
 	ds 1
 
-wcfc7:: ds 1
-wcfc8:: ds 1
-wcfc9:: ds 1
-wcfca:: ds 2
+; palette backups?
+wBGP:: ds 1
+wOBP0:: ds 1
+wOBP1:: ds 1
 
+wNumHits:: ds 2
+
 Options:: ; cfcc
 ; bit 0-2: number of frames to delay when printing text
 ;   fast 1; mid 3; slow 5
@@ -1471,7 +1737,7 @@
 TextBoxFrame:: ; cfce
 ; bits 0-2: textbox frame 0-7
 	ds 1
-
+TextBoxFlags::
 	ds 1
 
 GBPrinter:: ; cfd0
@@ -1498,7 +1764,7 @@
 wHoursSince:: ds 1
 wDaysSince:: ds 1
 
-	ds 40
+wRAM0End:: ; cfc0
 
 
 SECTION "WRAM 1", WRAMX, BANK [1]
@@ -1507,6 +1773,7 @@
 DefaultSpawnpoint::
 wd001:: ds 1
 
+; d002
 wTempMail:: mailmsg wTempMail
 	ds wTempMail - @
 
@@ -1522,13 +1789,37 @@
 wSeerCaughtGender:: ds 1
 	ds wSeerAction - @
 
+wBufferMonNick:: ds PKMN_NAME_LENGTH
+wBufferMonOT:: ds NAME_LENGTH
+wBufferMon:: party_struct wBufferMon
+	ds 8
+wMonOrItemNameBuffer::
+	ds wBufferMonNick - @
+
+bugcontestwinner: macro
+\1PersonID:: ds 1
+\1Mon:: ds 1
+\1Score:: ds 2
+endm
+wBugContestResults::
+	bugcontestwinner wBugContestFirstPlace
+	bugcontestwinner wBugContestSecondPlace
+	bugcontestwinner wBugContestThirdPlace
+wBugContestWinnersEnd::
+	bugcontestwinner wBugContestTemp
+	ds 4
+wBugContestWinnerName:: ds NAME_LENGTH
+
+	ds wBugContestResults - @
+
 wd002::
+wTempDayOfWeek::
+wApricorns::
 PhoneScriptBank::
 LuckyNumberDigit1Buffer::
 wCurrentRadioLine::
 wMovementBufferCount::
 wMartItem1BCD::
-wBugContestFirstPlacePersonID::
 	ds 1
 wd003::
 LuckyNumberDigit2Buffer::
@@ -1535,13 +1826,13 @@
 PhoneCallerLo::
 wNextRadioLine::
 wMovementBufferPerson::
-wBugContestFirstPlaceMon::
+wPlaceBallsDirection::
 	ds 1
 wd004::
 LuckyNumberDigit3Buffer::
 PhoneCallerHi::
 wRadioTextDelay::
-wBugContestFirstPlaceScore::
+wTrainerHUDTiles::
 	ds 1
 wd005::
 LuckyNumberDigit4Buffer::
@@ -1554,20 +1845,15 @@
 LuckyNumberDigit5Buffer::
 EndFlypoint:: ; d006
 wOaksPkmnTalkSegmentCounter::
-wBugContestSecondPlacePersonID::
 	ds 1
 
 wd007::
 MovementBuffer:: ; d007
-wBugContestSecondPlaceMon::
 	ds 1
 
 wMartItem3BCD::
-wBugContestSecondPlaceScore::
 wd008:: ds 2
-wBugContestThirdPlacePersonID::
 wd00a:: ds 1
-wBugContestThirdPlaceMon::
 wMartItem4BCD::
 wd00b:: ds 1
 
@@ -1576,15 +1862,11 @@
 	ds wRadioText - @
 
 wMobileParticipant2Nickname::
-wBugContestThirdPlaceScore::
 wd00c:: ds 1
 wd00d:: ds 1
 wMartItem5BCD::
-wBugContestTempPersonID::
 wd00e:: ds 1
-wBugContestTempMon::
 wd00f:: ds 1
-wBugContestTempScore::
 wd010:: ds 1
 wMartItem6BCD::
 wd011:: ds 1
@@ -1593,16 +1875,10 @@
 wd013:: ds 1
 wMartItem7BCD::
 wd014:: ds 2
-wBugContestWinnerName::
 wd016:: ds 1
 wMartItem8BCD::
 wd017:: ds 1
 
-	ds wd00d - @
-wd00d_MonOT:: ds NAME_LENGTH
-wd018_Mon:: party_struct wd018_Mon
-	ds wd018_Mon - @
-
 wd018:: ds 1
 wd019:: ds 1
 wMartItem9BCD::
@@ -1610,10 +1886,7 @@
 wMartItem10BCD:: ds 2
 wd01f:: ds 1
 wMartItemBCDEnd::
-wd020:: ds 3
-wd023:: ds 5
-wd028:: ds 2
-wd02a:: ds 3
+	ds 13
 wd02d:: ds 1
 wd02e:: ds 1
 wd02f:: ds 1
@@ -1629,6 +1902,7 @@
 MenuItemsList::
 CurFruitTree::
 CurInput::
+wElevatorPointerBank::
 EngineBuffer1:: ; d03e
 	ds 1
 
@@ -1636,15 +1910,18 @@
 wJumpStdScriptBuffer::
 CurFruit:: ; d03f
 MartPointerBank::
+wElevatorPointerLo::
 EngineBuffer2::
 	ds 1
 
 wd040::
+wElevatorPointerHi::
 MartPointer:: ; d040
 EngineBuffer3::
 	ds 1
 
 wd041::
+wElevatorOriginFloor::
 EngineBuffer4::
 wTempTrainerHeader::
 wTempTrainerEventFlagLo::
@@ -1675,20 +1952,14 @@
 wWinTextPointer::
 	ds 1
 
-wd048:: ds 1
+wPhoneScriptPointer:: ds 1
 wLossTextPointer:: ds 2
-wScriptAfterPointer::
-wd04b:: ds 2
+wScriptAfterPointer:: ds 2
 wRunningTrainerBattleScript:: ds 1
 MenuItemsListEnd::
 wTempTrainerHeaderEnd::
-wd04e:: ds 2
-wOaksPkmnTalkPkmnNameBuffer::
-wd050_MonNick::
-wd050:: ds PKMN_NAME_LENGTH +- 1
-wd05a:: ds 12
-wd066:: ds 10
-wd070:: ds 3
+wd04e:: ds 24
+wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH
 
 StringBuffer1:: ; d073
 	ds 19
@@ -1714,8 +1985,8 @@
 
 wLastPocket:: ds 1
 wd0d7:: ds 1
-wPartyMenuCursor::
-wd0d8:: ds 1
+wd0d8::
+wPartyMenuCursor:: ds 1
 wItemsPocketCursor:: ds 1
 wKeyItemsPocketCursor:: ds 1
 wBallsPocketCursor:: ds 1
@@ -1727,17 +1998,21 @@
 wTMHMPocketScrollPosition:: ds 1
 wMoveSwapBuffer::
 wSwitchMon::
+wSwitchItem::
 wd0e3:: ds 1
 wMenuScrollPosition:: ds 4
 wQueuedScriptBank:: ds 1
 wQueuedScriptAddr:: ds 2
+wNumMoves::
 wd0eb:: ds 1
 wFieldMoveSucceeded::
+wItemEffectSucceeded::
 wPlayerAction::
 ; 0 - use move
 ; 1 - use item
 ; 2 - switch
-wd0ec:: ds 1
+wSolvedUnownPuzzle::
+	ds 1 ; d0ec
 
 VramState:: ; d0ed
 ; bit 0: overworld sprite updating on/off
@@ -1747,11 +2022,13 @@
 	ds 1
 
 wBattleResult:: ds 1
-wd0ef:: ds 1
+wUsingItemWithSelect:: ds 1
 CurMart:: ds 16
+CurMartEnd::
 	ds CurMart - @
-wd0f0:: ds 1
+CurElevator:: ds 1
 wd0f1::
+CurElevatorFloors::
 wCurMessageIndex:: ds 1
 wd0f2::
 wMailboxCount:: ds 1
@@ -1758,7 +2035,6 @@
 wMailboxItems:: ds MAILBOX_CAPACITY
 wMailboxEnd:: ds 1 ; d1fe
 	ds 2
-CurMartEnd::
 
 wd100:: ds 1
 wd101:: ds 1
@@ -1770,7 +2046,7 @@
 CurItem:: ; d106
 	ds 1
 
-ItemCountBuffer:: ; d107
+CurItemQuantity:: ; d107
 wMartItemID::
 wd107:: ds 1
 
@@ -1783,7 +2059,10 @@
 ; 0-5
 	ds 1
 
-wd10a:: ds 1
+wWhichHPBar::
+; 0: Enemy
+; 1: Player
+	ds 1
 wPokemonWithdrawDepositParameter::
 ; 0: Take from PC
 ; 1: Put into PC
@@ -1793,50 +2072,49 @@
 wItemQuantityChangeBuffer:: ds 1
 wItemQuantityBuffer:: ds 1
 
-wd10e::
 TempMon::
 	party_struct TempMon
 
 wSpriteFlags:: ds 1
 
-wd13f:: ds 2
+wHandlePlayerStep:: ds 2
 
 PartyMenuActionText:: ; d141
 	ds 1
 
-wItemAttributeParamBuffer::
-wd142::
+wItemAttributeParamBuffer:: ; d142
 	ds 1
 
 CurPartyLevel:: ; d143
 	ds 1
 
-wd144:: ds 2
+wScrollingMenuListSize:: 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
+; d146
+wNextWarp:: ds 1
+wNextMapGroup:: ds 1
+wNextMapNumber:: ds 1
+wPrevWarp:: ds 1
+wPrevMapGroup:: ds 1
+wPrevMapNumber:: ds 1
+; d14c
 
-wd14c:: ds 1 ; used in FollowNotExact
-wd14d:: ds 1 ; used in FollowNotExact
+wFollowNotExactPersonX:: ds 1 ; used in FollowNotExact
+wFollowNotExactPersonY:: ds 1 ; used in FollowNotExact
 
 ; Player movement
-wPlayerStepVectorX:: ds 1
-wPlayerStepVectorY:: ds 1
-wPlayerStepFlags:: ds 1
-wPlayerStepDirection:: ds 1
+wPlayerStepVectorX:: ds 1   ; d14e
+wPlayerStepVectorY:: ds 1   ; d14f
+wPlayerStepFlags:: ds 1     ; d150
+; bit 7: Start step
+; bit 6: Stop step
+; bit 5: Doing step
+; bit 4: In midair
+; bits 0-3: unused
+wPlayerStepDirection:: ds 1 ; d151
 
-wBGMapAnchor:: ds 2
+wBGMapAnchor:: ds 2 ; d152
 
 UsedSprites:: ds 64 ; d154
 UsedSpritesEnd::
@@ -1854,13 +2132,13 @@
 wd191:: ds 1
 wd192:: ds 1
 wd193:: ds 1
-wd194:: dw
-wd196:: ds 1
-wd197:: ds 1
+wOverworldMapAnchor:: dw
+wMetatileStandingY:: ds 1
+wMetatileStandingX:: ds 1
 wSecondMapHeaderBank:: ds 1
 wTileset:: ds 1
-wPermission:: ds 1
-wSecondMapHeaderAddr:: dw
+wPermission:: ds 1 ; d19a
+wSecondMapHeaderAddr:: dw ; d19b
 
 ; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
 MapHeader:: ; d19d
@@ -1989,7 +2267,7 @@
 EvolvableFlags:: ; d1e8
 	flag_array PARTY_LENGTH
 
-wd1e9:: ds 1
+wForceEvolution:: ds 1
 MagikarpLength::
 Buffer1:: ; d1ea
 	ds 1
@@ -2120,10 +2398,12 @@
 	ds 2
 
 	ds 2
-wd25a:: ds 3
-wd25d:: ds 1
+wMornEncounterRate::  ds 1
+wDayEncounterRate::   ds 1
+wNiteEncounterRate::  ds 1
+wWaterEncounterRate:: ds 1
 wListMoves_MoveIndicesBuffer:: ds 4
-wd262:: ds 1
+wPutativeTMHMMove:: ds 1
 wd263:: ds 1
 wd264:: ds 1
 wFoundMatchingIDInParty::
@@ -2139,9 +2419,8 @@
 	ds 1
 
 	ds 1
+
 SECTION "Enemy Party", WRAMX, BANK [1]
-OTPlayerName:: ds NAME_LENGTH
-	ds OTPlayerName - @
 wPokedexShowPointerAddr::
 wd26b:: ds 1
 wd26c:: ds 1
@@ -2149,13 +2428,33 @@
 wd26d:: ds 1
 	ds 3
 wd271:: ds 5
-OTPlayerID::
 wd276:: ds 10
+	ds wd26b - @
 
+
+; SECTION "Enemy Party", WRAMX, BANK [1]
+OTPlayerName:: ds NAME_LENGTH
+OTPlayerID:: ds 2
+	ds 8
 OTPartyCount::   ds 1 ; d280
 OTPartySpecies:: ds PARTY_LENGTH ; d281
 OTPartyEnd::     ds 1
 
+wDudeBag:: ; d288
+wDudeNumItems:: ds 1
+wDudeItems:: ds 2 * 4
+wDudeItemsEnd:: ds 1
+
+wDudeNumKeyItems:: ds 1 ; d292
+wDudeKeyItems:: ds 18
+wDudeKeyItemsEnd:: ds 1
+
+wDudeNumBalls:: ds 1 ; d2a6
+wDudeBalls:: ds 2 * 4
+wDudeBallsEnd:: ds 1
+wDudeBagEnd::
+	ds wDudeBag - @
+
 OTPartyMons::
 OTPartyMon1:: party_struct OTPartyMon1 ; d288
 OTPartyMon2:: party_struct OTPartyMon2 ; d2b8
@@ -2182,6 +2481,7 @@
 	ds 1
 
 ScriptFlags:: ; d434
+; bit 3: priority jump
 	ds 1
 ScriptFlags2:: ; d435
 	ds 1
@@ -2203,16 +2503,16 @@
 	ds 2
 
 wScriptStackSize:: ds 1
-wScriptStackBA1:: ds 3
-wScriptStackBA2:: ds 3
-wScriptStackBA3:: ds 3
-wScriptStackBA4:: ds 3
-wScriptStackBA5:: ds 3
+wScriptStack:: ds 3 * 5
 	ds 1
 ScriptDelay:: ; d44d
 	ds 1
 
+wPriorityScriptBank::
+wScriptTextBank::
 wd44e:: ds 1
+wPriorityScriptAddr::
+wScriptTextAddr::
 wd44f:: ds 1
 wd450:: ds 1
 wd451:: ds 1
@@ -2233,7 +2533,8 @@
 	ds 3
 wBugContestMinsRemaining:: ds 1
 wBugContestSecsRemaining:: ds 1
-	ds 4
+	ds 2
+wMapStatusEnd:: ds 2 ; d470
 
 wCrystalData::
 PlayerGender:: ; d472
@@ -2300,9 +2601,8 @@
 wObjectFollow_Leader:: ds 1
 wObjectFollow_Follower:: ds 1
 wCenteredObject:: ds 1
-wd4d0:: ds 1
-wd4d1:: ds 1
-	ds 4
+wFollowerMovementQueueLength:: ds 1
+wFollowMovementQueue:: ds 5
 
 ObjectStructs:: ; d4d6
 object_struct: MACRO
@@ -2408,8 +2708,8 @@
 	ds 1
 	ds 4
 ; d846
-wd846:: ds 1
-wd847:: ds 1
+wTimeOfDayPalFlags:: ds 1
+wTimeOfDayPalset:: ds 1
 CurTimeOfDay:: ; d848
 	ds 1
 
@@ -2487,7 +2787,7 @@
 
 wPokegearFlags:: ds 1
 wRadioTuningKnob:: ds 1
-wd959:: ds 2
+wLastDexMode:: ds 2
 WhichRegisteredItem:: ; d95b
 	ds 1
 RegisteredItem:: ; d95c
@@ -2699,11 +2999,16 @@
 BigDoll:: ; dc16
 	ds 1
 
+; Items bought from Mom
+wWhichMomItem::
 wdc17:: ds 1
-wdc18:: ds 1
+wWhichMomItemSet::
+	ds 1
+MomItemTriggerBalance::
 wdc19:: ds 1
 wdc1a:: ds 1
 wdc1b:: ds 1
+
 wDailyResetTimer:: ds 2
 DailyFlags:: ds 1
 WeeklyFlags:: ds 1
@@ -2736,9 +3041,9 @@
 wDailyRematchFlags:: ds 4
 wDailyPhoneItemFlags:: ds 4
 wDailyPhoneTimeOfDayFlags:: ds 4
-wdc58:: ds 2
-wdc5a:: ds 1
-wdc5b:: ds 1
+wKenjiBreakTimer:: ds 2 ; Kenji
+wYanmaMapGroup:: ds 1 ; dc5a
+wYanmaMapNumber:: ds 1
 wdc5c:: ds 3
 wdc5f:: ds 1
 wdc60:: ds 19
@@ -2768,11 +3073,11 @@
 wMapData::
 
 VisitedSpawns:: ; dca5
-	flag_array 27
+	flag_array NUM_SPAWNS
 
-wdca9:: ds 1
-wdcaa:: ds 1
-wdcab:: ds 1
+wDigWarp:: ds 1
+wDigMapGroup:: ds 1
+wDigMapNumber:: ds 1
 ; used on maps like second floor pokécenter, which are reused, so we know which
 ; map to return to
 BackupWarpNumber:: ; dcac
@@ -2784,10 +3089,8 @@
 
 	ds 3
 
-wLastSpawnMapGroup::
-wdcb2:: ds 1
-wLastSpawnMapNumber::
-wdcb3:: ds 1
+wLastSpawnMapGroup:: ds 1
+wLastSpawnMapNumber:: ds 1
 
 WarpNumber:: ; dcb4
 	ds 1
@@ -2799,11 +3102,8 @@
 	ds 1 ; current y coordinate relative to top-left corner of current map
 XCoord:: ; dcb8
 	ds 1 ; current x coordinate relative to top-left corner of current map
+wScreenSave:: ds 6 * 5
 
-	ds 6
-wdcbf:: ds 1
-	ds 23
-
 wMapDataEnd::
 
 
@@ -2816,7 +3116,7 @@
 PartySpecies:: ; dcd8
 	ds PARTY_LENGTH ; species of each Pokémon in party
 PartyEnd:: ; dcde
-	ds 1 ; legacy functions don't check PartyCount
+	ds 1 ; legacy scripts don't check PartyCount
 		
 PartyMons::
 PartyMon1:: party_struct PartyMon1 ; dcdf
@@ -2848,7 +3148,7 @@
 UnlockedUnowns:: ; def3
 	ds 1
 
-wdef4:: ds 1
+wFirstUnownSeen:: ds 1
 
 
 wDaycareMan:: ; def5
@@ -2870,7 +3170,7 @@
 
 wStepsToEgg:: ; df2d
 	ds 1
-wDittoInDaycare:: ; df2e
+wBreedMotherOrNonDitto:: ; df2e
 ;  z: yes
 ; nz: no
 	ds 1
@@ -2891,8 +3191,8 @@
 wdf9c::
 wContestMon:: party_struct wContestMon ; df9c
 
-wdfcc:: ds 1
-wdfcd:: ds 1
+wDunsparceMapGroup:: ds 1
+wDunsparceMapNumber:: ds 1
 wFishingSwarmFlag:: ds 1
 
 roam_struct: MACRO
@@ -2908,10 +3208,10 @@
 wRoamMon2:: roam_struct wRoamMon2 ; dfd6
 wRoamMon3:: roam_struct wRoamMon3 ; dfdd
 
-wdfe4:: ds 1
-wdfe5:: ds 1
-wdfe6:: ds 1
-wdfe7:: ds 1
+wRoamMons_CurrentMapNumber:: ds 1
+wRoamMons_CurrentMapGroup:: ds 1
+wRoamMons_LastMapNumber:: ds 1
+wRoamMons_LastMapGroup:: ds 1
 wBestMagikarpLengthFeet:: ds 1
 wBestMagikarpLengthInches:: ds 1
 wMagikarpRecordHoldersName:: ds NAME_LENGTH
@@ -2935,20 +3235,17 @@
 wPokeAnimCoord:: ds 2
 wPokeAnimFrontpicHeight:: ds 1
 ; PokeAnim Data
-w2_d172:: ds 1
+wPokeAnimExtraFlag:: ds 1
 w2_d173:: ds 1
-w2_d174:: ds 1
-w2_d175:: ds 1
-w2_d176:: ds 1
-w2_d177:: ds 1
-w2_d178:: ds 1
-w2_d179:: ds 1
-w2_d17a:: ds 1
-w2_d17b:: ds 1
-w2_d17c:: ds 1
+wPokeAnimPointerBank:: ds 1
+wPokeAnimPointerAddr:: ds 2
+wPokeAnimFramesBank:: ds 1
+wPokeAnimFramesAddr:: ds 2
+wPokeAnimBitmaskBank:: ds 1
+wPokeAnimBitmaskAddr:: ds 2
 w2_d17d:: ds 1
 w2_d17e:: ds 1
-w2_d17f:: ds 1
+wPokeAnimRepeatTimer:: ds 1
 w2_d180:: ds 1
 wPokeAnimWaitCounter:: ds 1
 w2_d182:: ds 1
@@ -2964,8 +3261,10 @@
 
 SECTION "Battle Tower", WRAMX, BANK [3]
 
-w3_d000:: ; d000
-	ds $80
+w3_d000:: ds 1 ; d000
+w3_d001:: ds 1
+w3_d002::
+	ds $7e
 w3_d080::
 	ds $10
 w3_d090::
@@ -2988,11 +3287,26 @@
 	ds -$22
 
 wBTChoiceOfLvlGroup::
-w3_d800:: ds $400
+w3_d800:: ds $69
+w3_d869:: ds $17
+w3_d880:: ds 1
+w3_d881:: ds 1
+w3_d882:: ds 1
+w3_d883:: ds 7
+w3_d88a:: ds 5
+w3_d88f:: ds 5
+w3_d894:: ds 1
+w3_d895:: ds 11
+w3_d8a0:: ds 1
+w3_d8a1:: ds 1
+w3_d8a2:: ds 1
+w3_d8a3:: ds 1
+	ds $35c
 w3_dc00:: ds $168
-w3_dd68::
+w3_dd68:: ds $284
+w3_dfec:: ds $10
+w3_dffc:: ds 4
 
-
 SECTION "GBC Video", WRAMX, BANK [5]
 
 ; 8 4-color palettes
@@ -3006,12 +3320,11 @@
 LYOverridesEnd:: ; d190
 
 	ds 1
-w5_d191:: ds 1
-w5_d192:: ds 1
-w5_d193:: ds 1
-w5_d194:: ds 1
-w5_d195:: ds 1
-
+wMagnetTrainDirection:: ds 1
+wMagnetTrainInitPosition:: ds 1
+wMagnetTrainHoldPosition:: ds 1
+wMagnetTrainFinalPosition:: ds 1
+wMagnetTrainPlayerSpriteInitX:: ds 1
 ds 106
 
 LYOverridesBackup:: ; d200
@@ -3018,22 +3331,68 @@
 	ds SCREEN_HEIGHT_PX
 LYOverridesBackupEnd::
 
-	ds $100 - SCREEN_HEIGHT_PX
 
+SECTION "Battle Animations", WRAMX [$d300], BANK [5]
 
-SECTION "Battle Animations", WRAMX, BANK [5]
+wBattleAnimTileDict:: ds 10
 
-w5_d300:: ds 10
+battle_anim_struct: MACRO
+; Placeholder until we can figure out what it all means
+\1_Index::  ds 1
+\1_Anim01:: ds 1
+\1_Anim02:: ds 1
+\1_FramesetIndex:: ds 1
+\1_FunctionIndex:: ds 1
+\1_Anim05:: ds 1
+\1_TileID:: ds 1
+\1_XCoord:: ds 1
+\1_YCoord:: ds 1
+\1_XOffset:: ds 1
+\1_YOffset:: ds 1
+\1_Anim0b:: ds 1
+\1_Anim0c:: ds 1
+\1_Anim0d:: ds 1
+\1_AnonJumptableIndex:: ds 1
+\1_Anim0f:: ds 1
+\1_Anim10:: ds 1
+\1_Anim11:: ds 1
+\1_Anim12:: ds 1
+\1_Anim13:: ds 1
+\1_Anim14:: ds 1
+\1_Anim15:: ds 1
+\1_Anim16:: ds 1
+\1_Anim17:: ds 1
+endm
 
 ActiveAnimObjects:: ; d30a
-	ds 4 * 40
+AnimObject01:: battle_anim_struct AnimObject01
+AnimObject02:: battle_anim_struct AnimObject02
+AnimObject03:: battle_anim_struct AnimObject03
+AnimObject04:: battle_anim_struct AnimObject04
+AnimObject05:: battle_anim_struct AnimObject05
+AnimObject06:: battle_anim_struct AnimObject06
+AnimObject07:: battle_anim_struct AnimObject07
+AnimObject08:: battle_anim_struct AnimObject08
+AnimObject09:: battle_anim_struct AnimObject09
+AnimObject10:: battle_anim_struct AnimObject10
+ActiveAnimObjectsEnd:: ; d3aa
 
-	ds 80
+battle_bg_effect: MACRO
+\1_Function:: ds 1
+\1_01:: ds 1
+\1_02:: ds 1
+\1_03:: ds 1
+endm
 
 ActiveBGEffects:: ; d3fa
-	ds 4 * 5
+BGEffect1:: battle_bg_effect BGEffect1
+BGEffect2:: battle_bg_effect BGEffect2
+BGEffect3:: battle_bg_effect BGEffect3
+BGEffect4:: battle_bg_effect BGEffect4
+BGEffect5:: battle_bg_effect BGEffect5
+ActiveBGEffectsEnd::
 
-w5_d40e:: ds 1
+wNumActiveBattleAnims:: ds 1 ; d40e
 
 BattleAnimFlags:: ; d40f
 	ds 1
@@ -3049,14 +3408,29 @@
 	ds 1
 BattleAnimByte:: ; d417
 	ds 1
-w5_d418:: ds 1
+wBattleAnimOAMPointerLo:: ds 1 ; d418
 BattleAnimTemps:: ; d419
-	ds 8
-	ds 1
-w5_d422:: ds $32
+wBattleAnimTempOAMFlags::
+wBattleAnimTemp0:: ds 1
+wBattleAnimTemp1:: ds 1
+wBattleAnimTempTileID::
+wBattleAnimTemp2:: ds 1
+wBattleAnimTempXCoord::
+wBattleAnimTemp3:: ds 1
+wBattleAnimTempYCoord::
+wBattleAnimTemp4:: ds 1
+wBattleAnimTempXOffset::
+wBattleAnimTemp5:: ds 1
+wBattleAnimTempYOffset::
+wBattleAnimTemp6:: ds 1
+wBattleAnimTemp7:: ds 1
+wBattleAnimTempPalette::
+wBattleAnimTemp8:: ds 1
+
+wSurfWaveBGEffect:: ds $40
+wSurfWaveBGEffectEnd::
+	ds -$e
 wBattleAnimEnd::
-	ds $e
-; d462
 
 SECTION "WRAM 5 MOBILE", WRAMX [$d800], BANK [5]
 w5_d800:: ds $200
@@ -3071,8 +3445,8 @@
 
 SECTION "WRAM 6", WRAMX, BANK [6]
 
-w6_d000:: ds $400
-w6_d400:: ds $200
+wDecompressScratch:: ds $400
+wBackupAttrMap:: ds $200
 w6_d600:: ds $200
 w6_d800::
 
@@ -3079,5 +3453,5 @@
 INCLUDE "sram.asm"
 
 SECTION "WRAM 7", WRAMX, BANK [7]
-w7_d000:: ds $1000 - 1
-w7_dfff:: ds 1
+wWindowStack:: ds $1000 - 1
+wWindowStackBottom:: ds 1