shithub: pokecrystal

Download patch

ref: 35a3a19fda87d95e829aa99bf1b6cf18a839c1a6
parent: b5417fafec7dd37cb4be391f3bd3d4541a2a381e
author: Remy Oukaour <remy.oukaour@gmail.com>
date: Tue Dec 26 13:45:04 EST 2017

Use "battle_anims" and "sprite_anims" for clarity, not just "anims"

--- a/Makefile
+++ b/Makefile
@@ -169,23 +169,23 @@
 
 gfx/card_flip/card_flip_2.2bpp: tools/gfx += --remove-whitespace
 
-gfx/anims/angels.2bpp: tools/gfx += --trim-whitespace
-gfx/anims/beam.2bpp: tools/gfx += --remove-xflip --remove-yflip --remove-whitespace
-gfx/anims/bubble.2bpp: tools/gfx += --trim-whitespace
-gfx/anims/charge.2bpp: tools/gfx += --trim-whitespace
-gfx/anims/egg.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/explosion.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/hit.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/horn.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/lightning.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/misc.2bpp: tools/gfx += --remove-duplicates --remove-xflip
-gfx/anims/noise.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/objects.2bpp: tools/gfx += --remove-whitespace --remove-xflip
-gfx/anims/pokeball.2bpp: tools/gfx += --remove-xflip --keep-whitespace
-gfx/anims/reflect.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/rocks.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/skyattack.2bpp: tools/gfx += --remove-whitespace
-gfx/anims/status.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/angels.2bpp: tools/gfx += --trim-whitespace
+gfx/battle_anims/beam.2bpp: tools/gfx += --remove-xflip --remove-yflip --remove-whitespace
+gfx/battle_anims/bubble.2bpp: tools/gfx += --trim-whitespace
+gfx/battle_anims/charge.2bpp: tools/gfx += --trim-whitespace
+gfx/battle_anims/egg.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/explosion.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/hit.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/horn.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/lightning.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/misc.2bpp: tools/gfx += --remove-duplicates --remove-xflip
+gfx/battle_anims/noise.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/objects.2bpp: tools/gfx += --remove-whitespace --remove-xflip
+gfx/battle_anims/pokeball.2bpp: tools/gfx += --remove-xflip --keep-whitespace
+gfx/battle_anims/reflect.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/rocks.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/skyattack.2bpp: tools/gfx += --remove-whitespace
+gfx/battle_anims/status.2bpp: tools/gfx += --remove-whitespace
 
 gfx/player/chris.2bpp: rgbgfx += -h
 gfx/player/chris_back.2bpp: rgbgfx += -h
--- a/constants.asm
+++ b/constants.asm
@@ -8,6 +8,7 @@
 INCLUDE "constants/type_constants.asm"
 INCLUDE "constants/move_constants.asm"
 INCLUDE "constants/battle_constants.asm"
+INCLUDE "constants/battle_anim_constants.asm"
 INCLUDE "constants/map_constants.asm"
 INCLUDE "constants/map_data_constants.asm"
 INCLUDE "constants/map_setup_constants.asm"
@@ -20,12 +21,12 @@
 INCLUDE "constants/engine_flags.asm"
 INCLUDE "constants/music_constants.asm"
 INCLUDE "constants/sfx_constants.asm"
-INCLUDE "constants/animation_constants.asm"
 INCLUDE "constants/phone_constants.asm"
 INCLUDE "constants/credits_constants.asm"
 INCLUDE "constants/gfx_constants.asm"
 INCLUDE "constants/input_constants.asm"
 INCLUDE "constants/pokemon_data_constants.asm"
+INCLUDE "constants/icon_constants.asm"
 INCLUDE "constants/serial_constants.asm"
 INCLUDE "constants/mobile_constants.asm"
 INCLUDE "constants/misc_constants.asm"
--- a/constants/animation_constants.asm
+++ /dev/null
@@ -1,835 +1,0 @@
-; battle_anim_struct members (see macros/wram.asm)
-	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
-
-; BattleAnimObjects indexes (see data/anims/objects.asm)
-	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_BLIZZARD
-	const ANIM_OBJ_12
-	const ANIM_OBJ_ICE_BEAM
-	const ANIM_OBJ_RAZOR_LEAF
-	const ANIM_OBJ_POKE_BALL
-	const ANIM_OBJ_POKE_BALL_BLOCKED
-	const ANIM_OBJ_17
-	const ANIM_OBJ_18
-	const ANIM_OBJ_19
-	const ANIM_OBJ_1A
-	const ANIM_OBJ_1B
-	const ANIM_OBJ_BALL_POOF
-	const ANIM_OBJ_1D
-	const ANIM_OBJ_1E
-	const ANIM_OBJ_1F
-	const ANIM_OBJ_20
-	const ANIM_OBJ_BUBBLE
-	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_ICE_BUILDUP
-	const ANIM_OBJ_FROZEN
-	const ANIM_OBJ_MASTER_BALL_SPARKLE
-	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_LIGHTNING_BOLT
-	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_ABSORB
-	const ANIM_OBJ_46
-	const ANIM_OBJ_47
-	const ANIM_OBJ_48
-	const ANIM_OBJ_49
-	const ANIM_OBJ_LEECH_SEED
-	const ANIM_OBJ_4B
-	const ANIM_OBJ_4C
-	const ANIM_OBJ_4D
-	const ANIM_OBJ_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_HAZE
-	const ANIM_OBJ_MIST
-	const ANIM_OBJ_SMOG
-	const ANIM_OBJ_POISON_GAS
-	const ANIM_OBJ_HORN
-	const ANIM_OBJ_60
-	const ANIM_OBJ_61
-	const ANIM_OBJ_62
-	const ANIM_OBJ_63
-	const ANIM_OBJ_64
-	const ANIM_OBJ_65
-	const ANIM_OBJ_66
-	const ANIM_OBJ_67
-	const ANIM_OBJ_68
-	const ANIM_OBJ_69
-	const ANIM_OBJ_6A
-	const ANIM_OBJ_6B
-	const ANIM_OBJ_6C
-	const ANIM_OBJ_6D
-	const ANIM_OBJ_SKY_ATTACK_FEAROW
-	const ANIM_OBJ_LICK
-	const ANIM_OBJ_WITHDRAW
-	const ANIM_OBJ_71
-	const ANIM_OBJ_72
-	const ANIM_OBJ_73
-	const ANIM_OBJ_74
-	const ANIM_OBJ_75
-	const ANIM_OBJ_76
-	const ANIM_OBJ_77
-	const ANIM_OBJ_78
-	const ANIM_OBJ_79
-	const ANIM_OBJ_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_COTTON_SPORE
-	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_SPIKES
-	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_PERISH_SONG
-	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
-
-; DoBattleAnimFrame arguments (see engine/anims/functions.asm)
-	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_RAZOR_LEAF
-	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_LEECH_SEED
-	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_SPRIAL_DESCENT
-	const BATTLEANIMFUNC_POISON_GAS
-	const BATTLEANIMFUNC_HORN
-	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
-
-; BattleAnimFrameData indexes (see data/anims/framesets.asm)
-	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
-
-; BattleAnimOAMData indexes (see data/anims/oam.asm)
-	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
-
-; BattleBGEffects indexes (see engine/anims/bg_effects.asm)
-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_WITHDRAW
-	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_WAVE_DEFORM_USER
-	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
-
-; AnimObjGFX indexes (see data/anims/object_gfx.asm)
-const_value SET 1
-	const ANIM_GFX_HIT
-	const ANIM_GFX_CUT
-	const ANIM_GFX_FIRE
-	const ANIM_GFX_WATER
-	const ANIM_GFX_LIGHTNING
-	const ANIM_GFX_PLANT
-	const ANIM_GFX_SMOKE
-	const ANIM_GFX_EXPLOSION
-	const ANIM_GFX_ROCKS
-	const ANIM_GFX_ICE
-	const ANIM_GFX_POKE_BALL
-	const ANIM_GFX_POISON
-	const ANIM_GFX_BUBBLE
-	const ANIM_GFX_NOISE
-	const ANIM_GFX_POWDER
-	const ANIM_GFX_BEAM
-	const ANIM_GFX_SPEED
-	const ANIM_GFX_CHARGE
-	const ANIM_GFX_WIND
-	const ANIM_GFX_WHIP
-	const ANIM_GFX_EGG
-	const ANIM_GFX_ROPE
-	const ANIM_GFX_PSYCHIC
-	const ANIM_GFX_REFLECT
-	const ANIM_GFX_STATUS
-	const ANIM_GFX_SAND
-	const ANIM_GFX_WEB
-	const ANIM_GFX_HAZE
-	const ANIM_GFX_HORN
-	const ANIM_GFX_FLOWER
-	const ANIM_GFX_MISC
-	const ANIM_GFX_SKY_ATTACK
-	const ANIM_GFX_GLOBE
-	const ANIM_GFX_SHAPES
-	const ANIM_GFX_OBJECTS
-	const ANIM_GFX_SHINE
-	const ANIM_GFX_ANGELS
-	const ANIM_GFX_WAVE
-	const ANIM_GFX_AEROBLAST
-
-; battle_bg_effect struct members (see macros/wram.asm)
-	const_def
-	const BG_EFFECT_STRUCT_FUNCTION
-	const BG_EFFECT_STRUCT_JT_INDEX
-	const BG_EFFECT_STRUCT_BATTLE_TURN
-	const BG_EFFECT_STRUCT_03
-
-; battle palettes
-	const_def
-	const PAL_BATTLE_BG_PLAYER    ; 0
-	const PAL_BATTLE_BG_ENEMY     ; 1
-	const PAL_BATTLE_BG_ENEMY_HP  ; 2
-	const PAL_BATTLE_BG_PLAYER_HP ; 3
-	const PAL_BATTLE_BG_EXP       ; 4
-	const PAL_BATTLE_BG_5         ; 5
-	const PAL_BATTLE_BG_6         ; 6
-	const PAL_BATTLE_BG_TEXT      ; 7
-
-; animation object palettes
-	const_def
-	const PAL_BATTLE_OB_ENEMY  ; 0
-	const PAL_BATTLE_OB_PLAYER ; 1
-	const PAL_BATTLE_OB_GRAY   ; 2
-	const PAL_BATTLE_OB_YELLOW ; 3
-	const PAL_BATTLE_OB_RED    ; 4
-	const PAL_BATTLE_OB_GREEN  ; 5
-	const PAL_BATTLE_OB_BLUE   ; 6
-	const PAL_BATTLE_OB_BROWN  ; 7
--- /dev/null
+++ b/constants/battle_anim_constants.asm
@@ -1,0 +1,835 @@
+; battle_anim_struct members (see macros/wram.asm)
+	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
+
+; BattleAnimObjects indexes (see data/battle_anims/objects.asm)
+	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_BLIZZARD
+	const ANIM_OBJ_12
+	const ANIM_OBJ_ICE_BEAM
+	const ANIM_OBJ_RAZOR_LEAF
+	const ANIM_OBJ_POKE_BALL
+	const ANIM_OBJ_POKE_BALL_BLOCKED
+	const ANIM_OBJ_17
+	const ANIM_OBJ_18
+	const ANIM_OBJ_19
+	const ANIM_OBJ_1A
+	const ANIM_OBJ_1B
+	const ANIM_OBJ_BALL_POOF
+	const ANIM_OBJ_1D
+	const ANIM_OBJ_1E
+	const ANIM_OBJ_1F
+	const ANIM_OBJ_20
+	const ANIM_OBJ_BUBBLE
+	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_ICE_BUILDUP
+	const ANIM_OBJ_FROZEN
+	const ANIM_OBJ_MASTER_BALL_SPARKLE
+	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_LIGHTNING_BOLT
+	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_ABSORB
+	const ANIM_OBJ_46
+	const ANIM_OBJ_47
+	const ANIM_OBJ_48
+	const ANIM_OBJ_49
+	const ANIM_OBJ_LEECH_SEED
+	const ANIM_OBJ_4B
+	const ANIM_OBJ_4C
+	const ANIM_OBJ_4D
+	const ANIM_OBJ_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_HAZE
+	const ANIM_OBJ_MIST
+	const ANIM_OBJ_SMOG
+	const ANIM_OBJ_POISON_GAS
+	const ANIM_OBJ_HORN
+	const ANIM_OBJ_60
+	const ANIM_OBJ_61
+	const ANIM_OBJ_62
+	const ANIM_OBJ_63
+	const ANIM_OBJ_64
+	const ANIM_OBJ_65
+	const ANIM_OBJ_66
+	const ANIM_OBJ_67
+	const ANIM_OBJ_68
+	const ANIM_OBJ_69
+	const ANIM_OBJ_6A
+	const ANIM_OBJ_6B
+	const ANIM_OBJ_6C
+	const ANIM_OBJ_6D
+	const ANIM_OBJ_SKY_ATTACK_FEAROW
+	const ANIM_OBJ_LICK
+	const ANIM_OBJ_WITHDRAW
+	const ANIM_OBJ_71
+	const ANIM_OBJ_72
+	const ANIM_OBJ_73
+	const ANIM_OBJ_74
+	const ANIM_OBJ_75
+	const ANIM_OBJ_76
+	const ANIM_OBJ_77
+	const ANIM_OBJ_78
+	const ANIM_OBJ_79
+	const ANIM_OBJ_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_COTTON_SPORE
+	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_SPIKES
+	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_PERISH_SONG
+	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
+
+; DoBattleAnimFrame arguments (see engine/battle_anims/functions.asm)
+	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_RAZOR_LEAF
+	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_LEECH_SEED
+	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_SPRIAL_DESCENT
+	const BATTLEANIMFUNC_POISON_GAS
+	const BATTLEANIMFUNC_HORN
+	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
+
+; BattleAnimFrameData indexes (see data/battle_anims/framesets.asm)
+	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
+
+; BattleAnimOAMData indexes (see data/battle_anims/oam.asm)
+	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
+
+; BattleBGEffects indexes (see engine/battle_anims/bg_effects.asm)
+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_WITHDRAW
+	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_WAVE_DEFORM_USER
+	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
+
+; AnimObjGFX indexes (see data/battle_anims/object_gfx.asm)
+const_value SET 1
+	const ANIM_GFX_HIT
+	const ANIM_GFX_CUT
+	const ANIM_GFX_FIRE
+	const ANIM_GFX_WATER
+	const ANIM_GFX_LIGHTNING
+	const ANIM_GFX_PLANT
+	const ANIM_GFX_SMOKE
+	const ANIM_GFX_EXPLOSION
+	const ANIM_GFX_ROCKS
+	const ANIM_GFX_ICE
+	const ANIM_GFX_POKE_BALL
+	const ANIM_GFX_POISON
+	const ANIM_GFX_BUBBLE
+	const ANIM_GFX_NOISE
+	const ANIM_GFX_POWDER
+	const ANIM_GFX_BEAM
+	const ANIM_GFX_SPEED
+	const ANIM_GFX_CHARGE
+	const ANIM_GFX_WIND
+	const ANIM_GFX_WHIP
+	const ANIM_GFX_EGG
+	const ANIM_GFX_ROPE
+	const ANIM_GFX_PSYCHIC
+	const ANIM_GFX_REFLECT
+	const ANIM_GFX_STATUS
+	const ANIM_GFX_SAND
+	const ANIM_GFX_WEB
+	const ANIM_GFX_HAZE
+	const ANIM_GFX_HORN
+	const ANIM_GFX_FLOWER
+	const ANIM_GFX_MISC
+	const ANIM_GFX_SKY_ATTACK
+	const ANIM_GFX_GLOBE
+	const ANIM_GFX_SHAPES
+	const ANIM_GFX_OBJECTS
+	const ANIM_GFX_SHINE
+	const ANIM_GFX_ANGELS
+	const ANIM_GFX_WAVE
+	const ANIM_GFX_AEROBLAST
+
+; battle_bg_effect struct members (see macros/wram.asm)
+	const_def
+	const BG_EFFECT_STRUCT_FUNCTION
+	const BG_EFFECT_STRUCT_JT_INDEX
+	const BG_EFFECT_STRUCT_BATTLE_TURN
+	const BG_EFFECT_STRUCT_03
+
+; battle palettes
+	const_def
+	const PAL_BATTLE_BG_PLAYER    ; 0
+	const PAL_BATTLE_BG_ENEMY     ; 1
+	const PAL_BATTLE_BG_ENEMY_HP  ; 2
+	const PAL_BATTLE_BG_PLAYER_HP ; 3
+	const PAL_BATTLE_BG_EXP       ; 4
+	const PAL_BATTLE_BG_5         ; 5
+	const PAL_BATTLE_BG_6         ; 6
+	const PAL_BATTLE_BG_TEXT      ; 7
+
+; animation object palettes
+	const_def
+	const PAL_BATTLE_OB_ENEMY  ; 0
+	const PAL_BATTLE_OB_PLAYER ; 1
+	const PAL_BATTLE_OB_GRAY   ; 2
+	const PAL_BATTLE_OB_YELLOW ; 3
+	const PAL_BATTLE_OB_RED    ; 4
+	const PAL_BATTLE_OB_GREEN  ; 5
+	const PAL_BATTLE_OB_BLUE   ; 6
+	const PAL_BATTLE_OB_BROWN  ; 7
--- /dev/null
+++ b/constants/icon_constants.asm
@@ -1,0 +1,41 @@
+; IconPointers indexes (see data/icon_pointers.asm)
+	const_def
+	const ICON_NULL
+	const ICON_POLIWAG
+	const ICON_JIGGLYPUFF
+	const ICON_DIGLETT
+	const ICON_PIKACHU
+	const ICON_STARYU
+	const ICON_FISH
+	const ICON_BIRD
+	const ICON_MONSTER
+	const ICON_CLEFAIRY
+	const ICON_ODDISH
+	const ICON_BUG
+	const ICON_GHOST
+	const ICON_LAPRAS
+	const ICON_HUMANSHAPE
+	const ICON_FOX
+	const ICON_EQUINE
+	const ICON_SHELL
+	const ICON_BLOB
+	const ICON_SERPENT
+	const ICON_VOLTORB
+	const ICON_SQUIRTLE
+	const ICON_BULBASAUR
+	const ICON_CHARMANDER
+	const ICON_CATERPILLAR
+	const ICON_UNOWN
+	const ICON_GEODUDE
+	const ICON_FIGHTER
+	const ICON_EGG
+	const ICON_JELLYFISH
+	const ICON_MOTH
+	const ICON_BAT
+	const ICON_SNORLAX
+	const ICON_HO_OH
+	const ICON_LUGIA
+	const ICON_GYARADOS
+	const ICON_SLOWPOKE
+	const ICON_SUDOWOODO
+	const ICON_BIGMON
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -10,8 +10,8 @@
 ; - BitmasksPointers (see gfx/pokemon/bitmask_pointers.asm)
 ; - AnimationExtraPointers (see gfx/pokemon/extra_pointers.asm)
 ; - FramesPointers (see gfx/pokemon/frame_pointers.asm)
-; - PokemonPalettes (see gfx/pokemon/palette_pointers.asm)
 ; - PicPointers (see gfx/pokemon/pic_pointers.asm)
+; - PokemonPalettes (see data/palettes/pokemon_palettes.asm)
 ; - AlphabeticalPokedexOrder (see data/pokemon/dex_order_alpha.asm)
 ; - NewPokedexOrder (see data/pokemon/dex_order_new.asm)
 ; - MonMenuIcons (see data/pokemon/menu_icons.asm)
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -102,49 +102,6 @@
 PARTY_LENGTH EQU 6
 
 
-; IconPointers indexes (see gfx/icon_pointers.asm)
-	const_def
-	const ICON_NULL
-	const ICON_POLIWAG
-	const ICON_JIGGLYPUFF
-	const ICON_DIGLETT
-	const ICON_PIKACHU
-	const ICON_STARYU
-	const ICON_FISH
-	const ICON_BIRD
-	const ICON_MONSTER
-	const ICON_CLEFAIRY
-	const ICON_ODDISH
-	const ICON_BUG
-	const ICON_GHOST
-	const ICON_LAPRAS
-	const ICON_HUMANSHAPE
-	const ICON_FOX
-	const ICON_EQUINE
-	const ICON_SHELL
-	const ICON_BLOB
-	const ICON_SERPENT
-	const ICON_VOLTORB
-	const ICON_SQUIRTLE
-	const ICON_BULBASAUR
-	const ICON_CHARMANDER
-	const ICON_CATERPILLAR
-	const ICON_UNOWN
-	const ICON_GEODUDE
-	const ICON_FIGHTER
-	const ICON_EGG
-	const ICON_JELLYFISH
-	const ICON_MOTH
-	const ICON_BAT
-	const ICON_SNORLAX
-	const ICON_HO_OH
-	const ICON_LUGIA
-	const ICON_GYARADOS
-	const ICON_SLOWPOKE
-	const ICON_SUDOWOODO
-	const ICON_BIGMON
-
-
 ; evolution types (used in data/pokemon/evos_attacks.asm)
 const_value SET 1
 	const EVOLVE_LEVEL
--- a/constants/sprite_anim_constants.asm
+++ b/constants/sprite_anim_constants.asm
@@ -17,7 +17,7 @@
 	const SPRITEANIMSTRUCT_0E              ; e
 	const SPRITEANIMSTRUCT_0F              ; f
 
-; SpriteAnimSeqData indexes (see data/sprites/sequences.asm)
+; SpriteAnimSeqData indexes (see data/sprite_anims/sequences.asm)
 	const_def
 	const SPRITE_ANIM_INDEX_PARTY_MON               ; 00
 	const SPRITE_ANIM_INDEX_GS_TITLE_TRAIL          ; 01
@@ -103,7 +103,7 @@
 	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F        ; 21
 	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY   ; 22
 
-; SpriteAnimFrameData indexes (see data/sprites/framesets.asm)
+; SpriteAnimFrameData indexes (see data/sprite_anims/framesets.asm)
 	const_def
 	const SPRITE_ANIM_FRAMESET_00
 	const SPRITE_ANIM_FRAMESET_PARTY_MON ; 01
@@ -172,7 +172,7 @@
 	const SPRITE_ANIM_FRAMESET_CELEBI_LEFT ; 40
 	const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT ; 41
 
-; SpriteAnimOAMData indexes (see data/sprites/oam.asm)
+; SpriteAnimOAMData indexes (see data/sprite_anims/oam.asm)
 	const_def
 	const SPRITE_ANIM_OAMSET_RED_WALK_1 ; 00
 	const SPRITE_ANIM_OAMSET_RED_WALK_2 ; 01
--- a/data/anims/ball_colors.asm
+++ /dev/null
@@ -1,16 +1,0 @@
-; colors of balls thrown in battle
-
-BallColors: ; cd26c (33:526c)
-	db MASTER_BALL, PAL_BATTLE_OB_GREEN
-	db ULTRA_BALL,  PAL_BATTLE_OB_YELLOW
-	db GREAT_BALL,  PAL_BATTLE_OB_BLUE
-	db POKE_BALL,   PAL_BATTLE_OB_RED
-	db HEAVY_BALL,  PAL_BATTLE_OB_GRAY
-	db LEVEL_BALL,  PAL_BATTLE_OB_BROWN
-	db LURE_BALL,   PAL_BATTLE_OB_BLUE
-	db FAST_BALL,   PAL_BATTLE_OB_BLUE
-	db FRIEND_BALL, PAL_BATTLE_OB_YELLOW
-	db MOON_BALL,   PAL_BATTLE_OB_GRAY
-	db LOVE_BALL,   PAL_BATTLE_OB_RED
-	db -1,          PAL_BATTLE_OB_GRAY
-; cd284
--- a/data/anims/framesets.asm
+++ /dev/null
@@ -1,1271 +1,0 @@
-BattleAnimFrameData: ; ce85e
-; entries correspond to BATTLEANIMFRAMESET_* constants
-	dw .Frameset_00 ; BATTLEANIMFRAMESET_00
-	dw .Frameset_01 ; BATTLEANIMFRAMESET_01
-	dw .Frameset_02 ; BATTLEANIMFRAMESET_02
-	dw .Frameset_03 ; BATTLEANIMFRAMESET_03
-	dw .Frameset_04 ; BATTLEANIMFRAMESET_04
-	dw .Frameset_05 ; BATTLEANIMFRAMESET_05
-	dw .Frameset_06 ; BATTLEANIMFRAMESET_06
-	dw .Frameset_07 ; BATTLEANIMFRAMESET_07
-	dw .Frameset_08 ; BATTLEANIMFRAMESET_08
-	dw .Frameset_09 ; BATTLEANIMFRAMESET_09
-	dw .Frameset_0a ; BATTLEANIMFRAMESET_0A
-	dw .Frameset_0b ; BATTLEANIMFRAMESET_0B
-	dw .Frameset_0c ; BATTLEANIMFRAMESET_0C
-	dw .Frameset_0d ; BATTLEANIMFRAMESET_0D
-	dw .Frameset_0e ; BATTLEANIMFRAMESET_0E
-	dw .Frameset_0f ; BATTLEANIMFRAMESET_0F
-	dw .Frameset_10 ; BATTLEANIMFRAMESET_10
-	dw .Frameset_11 ; BATTLEANIMFRAMESET_11
-	dw .Frameset_12 ; BATTLEANIMFRAMESET_12
-	dw .Frameset_13 ; BATTLEANIMFRAMESET_13
-	dw .Frameset_14 ; BATTLEANIMFRAMESET_14
-	dw .Frameset_15 ; BATTLEANIMFRAMESET_15
-	dw .Frameset_16 ; BATTLEANIMFRAMESET_16
-	dw .Frameset_17 ; BATTLEANIMFRAMESET_17
-	dw .Frameset_18 ; BATTLEANIMFRAMESET_18
-	dw .Frameset_19 ; BATTLEANIMFRAMESET_19
-	dw .Frameset_1a ; BATTLEANIMFRAMESET_1A
-	dw .Frameset_1b ; BATTLEANIMFRAMESET_1B
-	dw .Frameset_1c ; BATTLEANIMFRAMESET_1C
-	dw .Frameset_1d ; BATTLEANIMFRAMESET_1D
-	dw .Frameset_1e ; BATTLEANIMFRAMESET_1E
-	dw .Frameset_1f ; BATTLEANIMFRAMESET_1F
-	dw .Frameset_20 ; BATTLEANIMFRAMESET_20
-	dw .Frameset_21 ; BATTLEANIMFRAMESET_21
-	dw .Frameset_22 ; BATTLEANIMFRAMESET_22
-	dw .Frameset_23 ; BATTLEANIMFRAMESET_23
-	dw .Frameset_24 ; BATTLEANIMFRAMESET_24
-	dw .Frameset_25 ; BATTLEANIMFRAMESET_25
-	dw .Frameset_26 ; BATTLEANIMFRAMESET_26
-	dw .Frameset_27 ; BATTLEANIMFRAMESET_27
-	dw .Frameset_28 ; BATTLEANIMFRAMESET_28
-	dw .Frameset_29 ; BATTLEANIMFRAMESET_29
-	dw .Frameset_2a ; BATTLEANIMFRAMESET_2A
-	dw .Frameset_2b ; BATTLEANIMFRAMESET_2B
-	dw .Frameset_2c ; BATTLEANIMFRAMESET_2C
-	dw .Frameset_2d ; BATTLEANIMFRAMESET_2D
-	dw .Frameset_2e ; BATTLEANIMFRAMESET_2E
-	dw .Frameset_2f ; BATTLEANIMFRAMESET_2F
-	dw .Frameset_30 ; BATTLEANIMFRAMESET_30
-	dw .Frameset_31 ; BATTLEANIMFRAMESET_31
-	dw .Frameset_32 ; BATTLEANIMFRAMESET_32
-	dw .Frameset_33 ; BATTLEANIMFRAMESET_33
-	dw .Frameset_34 ; BATTLEANIMFRAMESET_34
-	dw .Frameset_35 ; BATTLEANIMFRAMESET_35
-	dw .Frameset_36 ; BATTLEANIMFRAMESET_36
-	dw .Frameset_37 ; BATTLEANIMFRAMESET_37
-	dw .Frameset_38 ; BATTLEANIMFRAMESET_38
-	dw .Frameset_39 ; BATTLEANIMFRAMESET_39
-	dw .Frameset_3a ; BATTLEANIMFRAMESET_3A
-	dw .Frameset_3b ; BATTLEANIMFRAMESET_3B
-	dw .Frameset_3c ; BATTLEANIMFRAMESET_3C
-	dw .Frameset_3d ; BATTLEANIMFRAMESET_3D
-	dw .Frameset_3e ; BATTLEANIMFRAMESET_3E
-	dw .Frameset_3f ; BATTLEANIMFRAMESET_3F
-	dw .Frameset_40 ; BATTLEANIMFRAMESET_40
-	dw .Frameset_41 ; BATTLEANIMFRAMESET_41
-	dw .Frameset_42 ; BATTLEANIMFRAMESET_42
-	dw .Frameset_43 ; BATTLEANIMFRAMESET_43
-	dw .Frameset_44 ; BATTLEANIMFRAMESET_44
-	dw .Frameset_45 ; BATTLEANIMFRAMESET_45
-	dw .Frameset_46 ; BATTLEANIMFRAMESET_46
-	dw .Frameset_47 ; BATTLEANIMFRAMESET_47
-	dw .Frameset_48 ; BATTLEANIMFRAMESET_48
-	dw .Frameset_49 ; BATTLEANIMFRAMESET_49
-	dw .Frameset_4a ; BATTLEANIMFRAMESET_4A
-	dw .Frameset_4b ; BATTLEANIMFRAMESET_4B
-	dw .Frameset_4c ; BATTLEANIMFRAMESET_4C
-	dw .Frameset_4d ; BATTLEANIMFRAMESET_4D
-	dw .Frameset_4e ; BATTLEANIMFRAMESET_4E
-	dw .Frameset_4f ; BATTLEANIMFRAMESET_4F
-	dw .Frameset_50 ; BATTLEANIMFRAMESET_50
-	dw .Frameset_51 ; BATTLEANIMFRAMESET_51
-	dw .Frameset_52 ; BATTLEANIMFRAMESET_52
-	dw .Frameset_53 ; BATTLEANIMFRAMESET_53
-	dw .Frameset_54 ; BATTLEANIMFRAMESET_54
-	dw .Frameset_55 ; BATTLEANIMFRAMESET_55
-	dw .Frameset_56 ; BATTLEANIMFRAMESET_56
-	dw .Frameset_57 ; BATTLEANIMFRAMESET_57
-	dw .Frameset_58 ; BATTLEANIMFRAMESET_58
-	dw .Frameset_59 ; BATTLEANIMFRAMESET_59
-	dw .Frameset_5a ; BATTLEANIMFRAMESET_5A
-	dw .Frameset_5b ; BATTLEANIMFRAMESET_5B
-	dw .Frameset_5c ; BATTLEANIMFRAMESET_5C
-	dw .Frameset_5d ; BATTLEANIMFRAMESET_5D
-	dw .Frameset_5e ; BATTLEANIMFRAMESET_5E
-	dw .Frameset_5f ; BATTLEANIMFRAMESET_5F
-	dw .Frameset_60 ; BATTLEANIMFRAMESET_60
-	dw .Frameset_61 ; BATTLEANIMFRAMESET_61
-	dw .Frameset_62 ; BATTLEANIMFRAMESET_62
-	dw .Frameset_63 ; BATTLEANIMFRAMESET_63
-	dw .Frameset_64 ; BATTLEANIMFRAMESET_64
-	dw .Frameset_65 ; BATTLEANIMFRAMESET_65
-	dw .Frameset_66 ; BATTLEANIMFRAMESET_66
-	dw .Frameset_67 ; BATTLEANIMFRAMESET_67
-	dw .Frameset_68 ; BATTLEANIMFRAMESET_68
-	dw .Frameset_69 ; BATTLEANIMFRAMESET_69
-	dw .Frameset_6a ; BATTLEANIMFRAMESET_6A
-	dw .Frameset_6b ; BATTLEANIMFRAMESET_6B
-	dw .Frameset_6c ; BATTLEANIMFRAMESET_6C
-	dw .Frameset_6d ; BATTLEANIMFRAMESET_6D
-	dw .Frameset_6e ; BATTLEANIMFRAMESET_6E
-	dw .Frameset_6f ; BATTLEANIMFRAMESET_6F
-	dw .Frameset_70 ; BATTLEANIMFRAMESET_70
-	dw .Frameset_71 ; BATTLEANIMFRAMESET_71
-	dw .Frameset_72 ; BATTLEANIMFRAMESET_72
-	dw .Frameset_73 ; BATTLEANIMFRAMESET_73
-	dw .Frameset_74 ; BATTLEANIMFRAMESET_74
-	dw .Frameset_75 ; BATTLEANIMFRAMESET_75
-	dw .Frameset_76 ; BATTLEANIMFRAMESET_76
-	dw .Frameset_77 ; BATTLEANIMFRAMESET_77
-	dw .Frameset_78 ; BATTLEANIMFRAMESET_78
-	dw .Frameset_79 ; BATTLEANIMFRAMESET_79
-	dw .Frameset_7a ; BATTLEANIMFRAMESET_7A
-	dw .Frameset_7b ; BATTLEANIMFRAMESET_7B
-	dw .Frameset_7c ; BATTLEANIMFRAMESET_7C
-	dw .Frameset_7d ; BATTLEANIMFRAMESET_7D
-	dw .Frameset_7e ; BATTLEANIMFRAMESET_7E
-	dw .Frameset_7f ; BATTLEANIMFRAMESET_7F
-	dw .Frameset_80 ; BATTLEANIMFRAMESET_80
-	dw .Frameset_81 ; BATTLEANIMFRAMESET_81
-	dw .Frameset_82 ; BATTLEANIMFRAMESET_82
-	dw .Frameset_83 ; BATTLEANIMFRAMESET_83
-	dw .Frameset_84 ; BATTLEANIMFRAMESET_84
-	dw .Frameset_85 ; BATTLEANIMFRAMESET_85
-	dw .Frameset_86 ; BATTLEANIMFRAMESET_86
-	dw .Frameset_87 ; BATTLEANIMFRAMESET_87
-	dw .Frameset_88 ; BATTLEANIMFRAMESET_88
-	dw .Frameset_89 ; BATTLEANIMFRAMESET_89
-	dw .Frameset_8a ; BATTLEANIMFRAMESET_8A
-	dw .Frameset_8b ; BATTLEANIMFRAMESET_8B
-	dw .Frameset_8c ; BATTLEANIMFRAMESET_8C
-	dw .Frameset_8d ; BATTLEANIMFRAMESET_8D
-	dw .Frameset_8e ; BATTLEANIMFRAMESET_8E
-	dw .Frameset_8f ; BATTLEANIMFRAMESET_8F
-	dw .Frameset_90 ; BATTLEANIMFRAMESET_90
-	dw .Frameset_91 ; BATTLEANIMFRAMESET_91
-	dw .Frameset_92 ; BATTLEANIMFRAMESET_92
-	dw .Frameset_93 ; BATTLEANIMFRAMESET_93
-	dw .Frameset_94 ; BATTLEANIMFRAMESET_94
-	dw .Frameset_95 ; BATTLEANIMFRAMESET_95
-	dw .Frameset_96 ; BATTLEANIMFRAMESET_96
-	dw .Frameset_97 ; BATTLEANIMFRAMESET_97
-	dw .Frameset_98 ; BATTLEANIMFRAMESET_98
-	dw .Frameset_99 ; BATTLEANIMFRAMESET_99
-	dw .Frameset_9a ; BATTLEANIMFRAMESET_9A
-	dw .Frameset_9b ; BATTLEANIMFRAMESET_9B
-	dw .Frameset_9c ; BATTLEANIMFRAMESET_9C
-	dw .Frameset_9d ; BATTLEANIMFRAMESET_9D
-	dw .Frameset_9e ; BATTLEANIMFRAMESET_9E
-	dw .Frameset_9f ; BATTLEANIMFRAMESET_9F
-	dw .Frameset_a0 ; BATTLEANIMFRAMESET_A0
-	dw .Frameset_a1 ; BATTLEANIMFRAMESET_A1
-	dw .Frameset_a2 ; BATTLEANIMFRAMESET_A2
-	dw .Frameset_a3 ; BATTLEANIMFRAMESET_A3
-	dw .Frameset_a4 ; BATTLEANIMFRAMESET_A4
-	dw .Frameset_a5 ; BATTLEANIMFRAMESET_A5
-	dw .Frameset_a6 ; BATTLEANIMFRAMESET_A6
-	dw .Frameset_a7 ; BATTLEANIMFRAMESET_A7
-	dw .Frameset_a8 ; BATTLEANIMFRAMESET_A8
-	dw .Frameset_a9 ; BATTLEANIMFRAMESET_A9
-	dw .Frameset_aa ; BATTLEANIMFRAMESET_AA
-	dw .Frameset_ab ; BATTLEANIMFRAMESET_AB
-	dw .Frameset_ac ; BATTLEANIMFRAMESET_AC
-	dw .Frameset_ad ; BATTLEANIMFRAMESET_AD
-	dw .Frameset_ae ; BATTLEANIMFRAMESET_AE
-	dw .Frameset_af ; BATTLEANIMFRAMESET_AF
-	dw .Frameset_b0 ; BATTLEANIMFRAMESET_B0
-	dw .Frameset_b1 ; BATTLEANIMFRAMESET_B1
-	dw .Frameset_b2 ; BATTLEANIMFRAMESET_B2
-	dw .Frameset_b3 ; BATTLEANIMFRAMESET_B3
-	dw .Frameset_b4 ; BATTLEANIMFRAMESET_B4
-	dw .Frameset_b5 ; BATTLEANIMFRAMESET_B5
-	dw .Frameset_b6 ; BATTLEANIMFRAMESET_B6
-	dw .Frameset_b7 ; BATTLEANIMFRAMESET_B7
-	dw .Frameset_b8 ; BATTLEANIMFRAMESET_B8
-
-     ; OAM index (see data/anims/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
--- a/data/anims/oam.asm
+++ /dev/null
@@ -1,1086 +1,0 @@
-BattleAnimOAMData: ; ceeae
-; entries correspond to BATTLEANIMOAMSET_* constants
-	; vtile offset, length, pointer
-	dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
-	dbbw $04,  9, .OAMData_01 ; BATTLEANIMOAMSET_01
-	dbbw $08,  4, .OAMData_02 ; BATTLEANIMOAMSET_02
-	dbbw $09,  4, .OAMData_03 ; BATTLEANIMOAMSET_03
-	dbbw $0d,  4, .OAMData_04 ; BATTLEANIMOAMSET_04
-	dbbw $0f,  4, .OAMData_03 ; BATTLEANIMOAMSET_05
-	dbbw $13,  4, .OAMData_04 ; BATTLEANIMOAMSET_06
-	dbbw $04, 16, .OAMData_00 ; BATTLEANIMOAMSET_07
-	dbbw $08, 16, .OAMData_00 ; BATTLEANIMOAMSET_08
-	dbbw $08, 16, .OAMData_09 ; BATTLEANIMOAMSET_09
-	dbbw $00,  4, .OAMData_04 ; BATTLEANIMOAMSET_0A
-	dbbw $02,  4, .OAMData_03 ; BATTLEANIMOAMSET_0B
-	dbbw $06,  2, .OAMData_0c ; BATTLEANIMOAMSET_0C
-	dbbw $07,  2, .OAMData_0c ; BATTLEANIMOAMSET_0D
-	dbbw $02,  4, .OAMData_04 ; BATTLEANIMOAMSET_0E
-	dbbw $04,  1, .OAMData_0f ; BATTLEANIMOAMSET_0F
-	dbbw $05,  1, .OAMData_0f ; BATTLEANIMOAMSET_10
-	dbbw $00,  2, .OAMData_11 ; BATTLEANIMOAMSET_11
-	dbbw $02,  2, .OAMData_11 ; BATTLEANIMOAMSET_12
-	dbbw $00,  4, .OAMData_13 ; BATTLEANIMOAMSET_13
-	dbbw $00,  1, .OAMData_0f ; BATTLEANIMOAMSET_14
-	dbbw $01,  1, .OAMData_0f ; BATTLEANIMOAMSET_15
-	dbbw $02,  1, .OAMData_0f ; BATTLEANIMOAMSET_16
-	dbbw $03,  1, .OAMData_0f ; BATTLEANIMOAMSET_17
-	dbbw $00,  4, .OAMData_02 ; BATTLEANIMOAMSET_18
-	dbbw $01, 16, .OAMData_00 ; BATTLEANIMOAMSET_19
-	dbbw $05, 16, .OAMData_00 ; BATTLEANIMOAMSET_1A
-	dbbw $00,  4, .OAMData_03 ; BATTLEANIMOAMSET_1B
-	dbbw $05, 12, .OAMData_1c ; BATTLEANIMOAMSET_1C
-	dbbw $02,  4, .OAMData_02 ; BATTLEANIMOAMSET_1D
-	dbbw $06,  1, .OAMData_0f ; BATTLEANIMOAMSET_1E
-	dbbw $07,  1, .OAMData_0f ; BATTLEANIMOAMSET_1F
-	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_20
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_21
-	dbbw $09, 22, .OAMData_22 ; BATTLEANIMOAMSET_22
-	dbbw $04,  2, .OAMData_11 ; BATTLEANIMOAMSET_23
-	dbbw $06,  2, .OAMData_11 ; BATTLEANIMOAMSET_24
-	dbbw $0c,  1, .OAMData_0f ; BATTLEANIMOAMSET_25
-	dbbw $0a,  1, .OAMData_0f ; BATTLEANIMOAMSET_26
-	dbbw $0b,  4, .OAMData_02 ; BATTLEANIMOAMSET_27
-	dbbw $08,  4, .OAMData_04 ; BATTLEANIMOAMSET_28
-	dbbw $06,  4, .OAMData_04 ; BATTLEANIMOAMSET_29
-	dbbw $00,  5, .OAMData_2a ; BATTLEANIMOAMSET_2A
-	dbbw $03,  6, .OAMData_2b ; BATTLEANIMOAMSET_2B
-	dbbw $00,  7, .OAMData_2c ; BATTLEANIMOAMSET_2C
-	dbbw $03,  8, .OAMData_2d ; BATTLEANIMOAMSET_2D
-	dbbw $00,  9, .OAMData_2e ; BATTLEANIMOAMSET_2E
-	dbbw $00,  4, .OAMData_2f ; BATTLEANIMOAMSET_2F
-	dbbw $02,  4, .OAMData_30 ; BATTLEANIMOAMSET_30
-	dbbw $04,  6, .OAMData_31 ; BATTLEANIMOAMSET_31
-	dbbw $00,  2, .OAMData_32 ; BATTLEANIMOAMSET_32
-	dbbw $00,  7, .OAMData_33 ; BATTLEANIMOAMSET_33
-	dbbw $00, 14, .OAMData_32 ; BATTLEANIMOAMSET_34
-	dbbw $00, 21, .OAMData_33 ; BATTLEANIMOAMSET_35
-	dbbw $00,  2, .OAMData_36 ; BATTLEANIMOAMSET_36
-	dbbw $00,  6, .OAMData_36 ; BATTLEANIMOAMSET_37
-	dbbw $00, 10, .OAMData_36 ; BATTLEANIMOAMSET_38
-	dbbw $00, 14, .OAMData_36 ; BATTLEANIMOAMSET_39
-	dbbw $00,  2, .OAMData_3a ; BATTLEANIMOAMSET_3A
-	dbbw $00,  6, .OAMData_3a ; BATTLEANIMOAMSET_3B
-	dbbw $00, 10, .OAMData_3a ; BATTLEANIMOAMSET_3C
-	dbbw $00, 14, .OAMData_3a ; BATTLEANIMOAMSET_3D
-	dbbw $00,  4, .OAMData_3e ; BATTLEANIMOAMSET_3E
-	dbbw $00, 16, .OAMData_3e ; BATTLEANIMOAMSET_3F
-	dbbw $00, 26, .OAMData_3e ; BATTLEANIMOAMSET_40
-	dbbw $00, 26, .OAMData_41 ; BATTLEANIMOAMSET_41
-	dbbw $0e,  4, .OAMData_42 ; BATTLEANIMOAMSET_42
-	dbbw $0e,  8, .OAMData_42 ; BATTLEANIMOAMSET_43
-	dbbw $0e,  4, .OAMData_44 ; BATTLEANIMOAMSET_44
-	dbbw $0e,  8, .OAMData_44 ; BATTLEANIMOAMSET_45
-	dbbw $0e,  4, .OAMData_46 ; BATTLEANIMOAMSET_46
-	dbbw $0e,  4, .OAMData_47 ; BATTLEANIMOAMSET_47
-	dbbw $00,  6, .OAMData_48 ; BATTLEANIMOAMSET_48
-	dbbw $03,  4, .OAMData_49 ; BATTLEANIMOAMSET_49
-	dbbw $03,  2, .OAMData_4a ; BATTLEANIMOAMSET_4A
-	dbbw $01,  5, .OAMData_0f ; BATTLEANIMOAMSET_4B
-	dbbw $01,  6, .OAMData_4c ; BATTLEANIMOAMSET_4C
-	dbbw $01,  7, .OAMData_4d ; BATTLEANIMOAMSET_4D
-	dbbw $01,  3, .OAMData_4d ; BATTLEANIMOAMSET_4E
-	dbbw $01,  8, .OAMData_4f ; BATTLEANIMOAMSET_4F
-	dbbw $01,  9, .OAMData_50 ; BATTLEANIMOAMSET_50
-	dbbw $01, 10, .OAMData_51 ; BATTLEANIMOAMSET_51
-	dbbw $01,  6, .OAMData_51 ; BATTLEANIMOAMSET_52
-	dbbw $00,  9, .OAMData_01 ; BATTLEANIMOAMSET_53
-	dbbw $04,  4, .OAMData_02 ; BATTLEANIMOAMSET_54
-	dbbw $05,  4, .OAMData_02 ; BATTLEANIMOAMSET_55
-	dbbw $00,  2, .OAMData_56 ; BATTLEANIMOAMSET_56
-	dbbw $02,  2, .OAMData_56 ; BATTLEANIMOAMSET_57
-	dbbw $04,  2, .OAMData_56 ; BATTLEANIMOAMSET_58
-	dbbw $02,  4, .OAMData_59 ; BATTLEANIMOAMSET_59
-	dbbw $02,  4, .OAMData_5a ; BATTLEANIMOAMSET_5A
-	dbbw $02,  2, .OAMData_0c ; BATTLEANIMOAMSET_5B
-	dbbw $04,  2, .OAMData_0c ; BATTLEANIMOAMSET_5C
-	dbbw $06,  4, .OAMData_5d ; BATTLEANIMOAMSET_5D
-	dbbw $08,  2, .OAMData_0c ; BATTLEANIMOAMSET_5E
-	dbbw $09,  2, .OAMData_0c ; BATTLEANIMOAMSET_5F
-	dbbw $05,  2, .OAMData_60 ; BATTLEANIMOAMSET_60
-	dbbw $00,  2, .OAMData_61 ; BATTLEANIMOAMSET_61
-	dbbw $00,  5, .OAMData_61 ; BATTLEANIMOAMSET_62
-	dbbw $00,  9, .OAMData_61 ; BATTLEANIMOAMSET_63
-	dbbw $09,  9, .OAMData_61 ; BATTLEANIMOAMSET_64
-	dbbw $00,  4, .OAMData_65 ; BATTLEANIMOAMSET_65
-	dbbw $00,  7, .OAMData_65 ; BATTLEANIMOAMSET_66
-	dbbw $00,  9, .OAMData_65 ; BATTLEANIMOAMSET_67
-	dbbw $09,  9, .OAMData_65 ; BATTLEANIMOAMSET_68
-	dbbw $04,  1, .OAMData_69 ; BATTLEANIMOAMSET_69
-	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_6A
-	dbbw $06,  4, .OAMData_03 ; BATTLEANIMOAMSET_6B
-	dbbw $0a,  4, .OAMData_03 ; BATTLEANIMOAMSET_6C
-	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_6D
-	dbbw $08,  5, .OAMData_6e ; BATTLEANIMOAMSET_6E
-	dbbw $0d,  3, .OAMData_6f ; BATTLEANIMOAMSET_6F
-	dbbw $01,  8, .OAMData_70 ; BATTLEANIMOAMSET_70
-	dbbw $03,  8, .OAMData_70 ; BATTLEANIMOAMSET_71
-	dbbw $05,  8, .OAMData_70 ; BATTLEANIMOAMSET_72
-	dbbw $07,  8, .OAMData_70 ; BATTLEANIMOAMSET_73
-	dbbw $06,  4, .OAMData_02 ; BATTLEANIMOAMSET_74
-	dbbw $07,  4, .OAMData_02 ; BATTLEANIMOAMSET_75
-	dbbw $0a,  2, .OAMData_76 ; BATTLEANIMOAMSET_76
-	dbbw $00,  1, .OAMData_77 ; BATTLEANIMOAMSET_77
-	dbbw $00,  3, .OAMData_78 ; BATTLEANIMOAMSET_78
-	dbbw $00,  6, .OAMData_79 ; BATTLEANIMOAMSET_79
-	dbbw $00,  9, .OAMData_7a ; BATTLEANIMOAMSET_7A
-	dbbw $00, 12, .OAMData_7b ; BATTLEANIMOAMSET_7B
-	dbbw $00, 14, .OAMData_7c ; BATTLEANIMOAMSET_7C
-	dbbw $00, 15, .OAMData_7d ; BATTLEANIMOAMSET_7D
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_7E
-	dbbw $08,  4, .OAMData_03 ; BATTLEANIMOAMSET_7F
-	dbbw $0d,  1, .OAMData_0f ; BATTLEANIMOAMSET_80
-	dbbw $0e,  4, .OAMData_81 ; BATTLEANIMOAMSET_81
-	dbbw $10,  1, .OAMData_0f ; BATTLEANIMOAMSET_82
-	dbbw $11,  1, .OAMData_0f ; BATTLEANIMOAMSET_83
-	dbbw $04,  2, .OAMData_6a ; BATTLEANIMOAMSET_84
-	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_85
-	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_86
-	dbbw $00,  8, .OAMData_87 ; BATTLEANIMOAMSET_87
-	dbbw $00, 12, .OAMData_88 ; BATTLEANIMOAMSET_88
-	dbbw $00, 16, .OAMData_87 ; BATTLEANIMOAMSET_89
-	dbbw $09,  2, .OAMData_8a ; BATTLEANIMOAMSET_8A
-	dbbw $09,  4, .OAMData_8a ; BATTLEANIMOAMSET_8B
-	dbbw $09,  6, .OAMData_8a ; BATTLEANIMOAMSET_8C
-	dbbw $09,  8, .OAMData_8a ; BATTLEANIMOAMSET_8D
-	dbbw $12,  5, .OAMData_8e ; BATTLEANIMOAMSET_8E
-	dbbw $00,  4, .OAMData_8f ; BATTLEANIMOAMSET_8F
-	dbbw $04,  4, .OAMData_8f ; BATTLEANIMOAMSET_90
-	dbbw $08,  4, .OAMData_8f ; BATTLEANIMOAMSET_91
-	dbbw $0c,  4, .OAMData_8f ; BATTLEANIMOAMSET_92
-	dbbw $00,  6, .OAMData_93 ; BATTLEANIMOAMSET_93
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_94
-	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_95
-	dbbw $15,  4, .OAMData_30 ; BATTLEANIMOAMSET_96
-	dbbw $04,  4, .OAMData_30 ; BATTLEANIMOAMSET_97
-	dbbw $0c,  4, .OAMData_04 ; BATTLEANIMOAMSET_98
-	dbbw $0a,  4, .OAMData_99 ; BATTLEANIMOAMSET_99
-	dbbw $0c,  4, .OAMData_03 ; BATTLEANIMOAMSET_9A
-	dbbw $00, 36, .OAMData_9b ; BATTLEANIMOAMSET_9B
-	dbbw $0d,  2, .OAMData_9c ; BATTLEANIMOAMSET_9C
-	dbbw $0d,  4, .OAMData_9c ; BATTLEANIMOAMSET_9D
-	dbbw $0d,  6, .OAMData_9c ; BATTLEANIMOAMSET_9E
-	dbbw $02,  8, .OAMData_9f ; BATTLEANIMOAMSET_9F
-	dbbw $08,  7, .OAMData_a0 ; BATTLEANIMOAMSET_A0
-	dbbw $08,  5, .OAMData_a0 ; BATTLEANIMOAMSET_A1
-	dbbw $08,  3, .OAMData_a0 ; BATTLEANIMOAMSET_A2
-	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_A3
-	dbbw $00,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A4
-	dbbw $06,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A5
-	dbbw $0c,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A6
-	dbbw $12,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A7
-	dbbw $18,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A8
-	dbbw $1e,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A9
-	dbbw $24,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AA
-	dbbw $2a,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AB
-	dbbw $03,  4, .OAMData_ac ; BATTLEANIMOAMSET_AC
-	dbbw $12,  4, .OAMData_03 ; BATTLEANIMOAMSET_AD
-	dbbw $10,  4, .OAMData_04 ; BATTLEANIMOAMSET_AE
-	dbbw $16,  1, .OAMData_0f ; BATTLEANIMOAMSET_AF
-	dbbw $17,  4, .OAMData_02 ; BATTLEANIMOAMSET_B0
-	dbbw $18,  4, .OAMData_03 ; BATTLEANIMOAMSET_B1
-	dbbw $1c,  4, .OAMData_03 ; BATTLEANIMOAMSET_B2
-	dbbw $20,  3, .OAMData_03 ; BATTLEANIMOAMSET_B3
-	dbbw $23,  4, .OAMData_04 ; BATTLEANIMOAMSET_B4
-	dbbw $25,  3, .OAMData_03 ; BATTLEANIMOAMSET_B5
-	dbbw $17,  4, .OAMData_03 ; BATTLEANIMOAMSET_B6
-	dbbw $0a, 16, .OAMData_00 ; BATTLEANIMOAMSET_B7
-	dbbw $10, 16, .OAMData_1c ; BATTLEANIMOAMSET_B8
-	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_B9
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BA
-	dbbw $08,  2, .OAMData_11 ; BATTLEANIMOAMSET_BB
-	dbbw $20,  6, .OAMData_bc ; BATTLEANIMOAMSET_BC
-	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_BD
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BE
-	dbbw $1a,  4, .OAMData_30 ; BATTLEANIMOAMSET_BF
-	dbbw $16,  9, .OAMData_01 ; BATTLEANIMOAMSET_C0
-	dbbw $10, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C1
-	dbbw $09,  6, .OAMData_c2 ; BATTLEANIMOAMSET_C2
-	dbbw $11,  9, .OAMData_c3 ; BATTLEANIMOAMSET_C3
-	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_C4
-	dbbw $0b,  4, .OAMData_30 ; BATTLEANIMOAMSET_C5
-	dbbw $1c,  6, .OAMData_02 ; BATTLEANIMOAMSET_C6
-	dbbw $20, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C7
-	dbbw $05,  6, .OAMData_c8 ; BATTLEANIMOAMSET_C8
-	dbbw $0b,  4, .OAMData_03 ; BATTLEANIMOAMSET_C9
-	dbbw $09,  4, .OAMData_ca ; BATTLEANIMOAMSET_CA
-	dbbw $0b,  4, .OAMData_04 ; BATTLEANIMOAMSET_CB
-	dbbw $11, 13, .OAMData_cc ; BATTLEANIMOAMSET_CC
-	dbbw $00,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CD
-	dbbw $09,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CE
-	dbbw $00, 12, .OAMData_cf ; BATTLEANIMOAMSET_CF
-	dbbw $06, 12, .OAMData_cf ; BATTLEANIMOAMSET_D0
-	dbbw $0c, 12, .OAMData_cf ; BATTLEANIMOAMSET_D1
-	dbbw $12, 12, .OAMData_cf ; BATTLEANIMOAMSET_D2
-	dbbw $00, 13, .OAMData_cc ; BATTLEANIMOAMSET_D3
-	dbbw $00,  7, .OAMData_d4 ; BATTLEANIMOAMSET_D4
-	dbbw $00,  6, .OAMData_d5 ; BATTLEANIMOAMSET_D5
-	dbbw $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6
-	dbbw $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_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/data/anims/object_gfx.asm
+++ /dev/null
@@ -1,51 +1,0 @@
-anim_obj_gfx: MACRO
-; # tiles, label
-	db  \1
-	dba \2
-ENDM
-
-AnimObjGFX: ; cfcf6
-; entries correspond to ANIM_GFX_* constants
-	anim_obj_gfx  0, AnimObj00GFX
-	anim_obj_gfx 21, AnimObjHitGFX
-	anim_obj_gfx  6, AnimObjCutGFX
-	anim_obj_gfx  6, AnimObjFireGFX
-	anim_obj_gfx 20, AnimObjWaterGFX
-	anim_obj_gfx 26, AnimObjLightningGFX
-	anim_obj_gfx 18, AnimObjPlantGFX
-	anim_obj_gfx 12, AnimObjSmokeGFX
-	anim_obj_gfx  9, AnimObjExplosionGFX
-	anim_obj_gfx 17, AnimObjRocksGFX
-	anim_obj_gfx  6, AnimObjIceGFX
-	anim_obj_gfx 10, AnimObjPokeBallGFX
-	anim_obj_gfx  9, AnimObjPoisonGFX
-	anim_obj_gfx 13, AnimObjBubbleGFX
-	anim_obj_gfx 16, AnimObjNoiseGFX
-	anim_obj_gfx  2, AnimObjPowderGFX
-	anim_obj_gfx 11, AnimObjBeamGFX
-	anim_obj_gfx  9, AnimObjSpeedGFX
-	anim_obj_gfx  9, AnimObjChargeGFX
-	anim_obj_gfx 19, AnimObjWindGFX
-	anim_obj_gfx 10, AnimObjWhipGFX
-	anim_obj_gfx 12, AnimObjEggGFX
-	anim_obj_gfx 18, AnimObjRopeGFX
-	anim_obj_gfx 13, AnimObjPsychicGFX
-	anim_obj_gfx 10, AnimObjReflectGFX
-	anim_obj_gfx 27, AnimObjStatusGFX
-	anim_obj_gfx 12, AnimObjSandGFX
-	anim_obj_gfx 14, AnimObjWebGFX
-	anim_obj_gfx 16, AnimObjHazeGFX
-	anim_obj_gfx  7, AnimObjHornGFX
-	anim_obj_gfx  8, AnimObjFlowerGFX
-	anim_obj_gfx 40, AnimObjMiscGFX
-	anim_obj_gfx 36, AnimObjSkyAttackGFX
-	anim_obj_gfx 16, AnimObjGlobeGFX
-	anim_obj_gfx 48, AnimObjShapesGFX
-	anim_obj_gfx 18, AnimObjObjectsGFX
-	anim_obj_gfx 38, AnimObjShineGFX
-	anim_obj_gfx 35, AnimObjAngelsGFX
-	anim_obj_gfx 18, AnimObjWaveGFX
-	anim_obj_gfx 24, AnimObjAeroblastGFX
-	anim_obj_gfx  1, NULL
-	anim_obj_gfx  1, NULL
-; cfd9e
--- a/data/anims/objects.asm
+++ /dev/null
@@ -1,209 +1,0 @@
-ABSOLUTE_X EQU $00
-RELATIVE_X EQU $01
-
-battleanimobj: MACRO
-	db \1 ; flags
-	; bit 7: priority
-	; bit 6: y flip (for enemy)
-	; bit 5: x flip (for enemy)
-	; bit 0: enable enemy animation coord fixing (x = $b4 - x; see below for y)
-	db \2 ; enemy animation y fix param
-	; if $FF: y = y + 5 tiles
-	; else:   y = -y - (1 tile) * (is_softboiled_animation)
-	db \3 ; video sequence
-	db \4 ; callback
-	db \5 ; palette
-	db \6 ; tile offset
-endm
-
-BattleAnimObjects: ; ccb56
-; entries correspond to ANIM_OBJ_* constants
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_00
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_01
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_02
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_03
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_04
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_05
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_06
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_07
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_08
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_09
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_0A
-	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0B
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0D
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0E
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0F
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_BURNED
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_BLIZZARD
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_12
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BEAM
-	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_RAZOR_LEAF
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL_BLOCKED
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_17
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_18
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_19
-	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_1A
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_1B
-	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_BALL_POOF
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1D
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1E
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1F
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_20
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_BUBBLE
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_22
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_23
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_24
-	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_25
-	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_26
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_27
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_28
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BUILDUP
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_FROZEN
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 ; ANIM_OBJ_MASTER_BALL_SPARKLE
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_2C
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2D
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2E
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2F
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_30
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_31
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_LIGHTNING_BOLT
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_33
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_34
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_35
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_36
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_37
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_38
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_39
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3A
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3B
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3C
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3D
-	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_GUST
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_3F
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_40
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_41
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_42
-	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_43
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_44
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_ABSORB
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_46
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_47
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_48
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_49
-	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_LEECH_SEED
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_4B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_4C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_4D
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4E
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4F
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_50
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_51
-	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_CHICK
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_53
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_54
-	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_SKULL
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_56
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_57
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a ; ANIM_OBJ_58
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_PARALYZED
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_5A
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_HAZE
-	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_MIST
-	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOG
-	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_POISON_GAS
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_HORN
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_60
-	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_61
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_62
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_63
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_64
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_65
-	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_66
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_67
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_68
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_69
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_6A
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_6B
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6C
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6D
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK_FEAROW
-	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_LICK
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_WITHDRAW
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_71
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_72
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_73
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_74
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_75
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_76
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_77
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_78
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_79
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_7A
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_7B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_7C
-	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_7D
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_HEART
-	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_7F
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_80
-	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_COTTON_SPORE
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_82
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_83
-	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f ; ANIM_OBJ_84
-	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_85
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_86
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_87
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_88
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_89
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_8A
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_8B
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_8C
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_8D
-	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SPIKES
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_8F
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_90
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_91
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_92
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_93
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_94
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_95
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_96
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_97
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_98
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_99
-	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_9A
-	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_9B
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9C
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_9D
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9E
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_9F
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A0
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A1
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_A2
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_A3
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_A4
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_A5
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_PERISH_SONG
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_A7
-	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A8
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A9
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AA
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_AB
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_AC
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AD
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_AE
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_AF
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c ; ANIM_OBJ_B0
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_B1
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B2
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_B3
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_B4
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B5
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_FLOWER
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_COTTON
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERFEETFOLLOW
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYFEETFOLLOW
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_BA
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_BB
-; ccfbe
--- /dev/null
+++ b/data/battle_anims/ball_colors.asm
@@ -1,0 +1,16 @@
+; colors of balls thrown in battle
+
+BallColors: ; cd26c (33:526c)
+	db MASTER_BALL, PAL_BATTLE_OB_GREEN
+	db ULTRA_BALL,  PAL_BATTLE_OB_YELLOW
+	db GREAT_BALL,  PAL_BATTLE_OB_BLUE
+	db POKE_BALL,   PAL_BATTLE_OB_RED
+	db HEAVY_BALL,  PAL_BATTLE_OB_GRAY
+	db LEVEL_BALL,  PAL_BATTLE_OB_BROWN
+	db LURE_BALL,   PAL_BATTLE_OB_BLUE
+	db FAST_BALL,   PAL_BATTLE_OB_BLUE
+	db FRIEND_BALL, PAL_BATTLE_OB_YELLOW
+	db MOON_BALL,   PAL_BATTLE_OB_GRAY
+	db LOVE_BALL,   PAL_BATTLE_OB_RED
+	db -1,          PAL_BATTLE_OB_GRAY
+; cd284
--- /dev/null
+++ b/data/battle_anims/framesets.asm
@@ -1,0 +1,1270 @@
+BattleAnimFrameData: ; ce85e
+; entries correspond to BATTLEANIMFRAMESET_* constants
+	dw .Frameset_00 ; BATTLEANIMFRAMESET_00
+	dw .Frameset_01 ; BATTLEANIMFRAMESET_01
+	dw .Frameset_02 ; BATTLEANIMFRAMESET_02
+	dw .Frameset_03 ; BATTLEANIMFRAMESET_03
+	dw .Frameset_04 ; BATTLEANIMFRAMESET_04
+	dw .Frameset_05 ; BATTLEANIMFRAMESET_05
+	dw .Frameset_06 ; BATTLEANIMFRAMESET_06
+	dw .Frameset_07 ; BATTLEANIMFRAMESET_07
+	dw .Frameset_08 ; BATTLEANIMFRAMESET_08
+	dw .Frameset_09 ; BATTLEANIMFRAMESET_09
+	dw .Frameset_0a ; BATTLEANIMFRAMESET_0A
+	dw .Frameset_0b ; BATTLEANIMFRAMESET_0B
+	dw .Frameset_0c ; BATTLEANIMFRAMESET_0C
+	dw .Frameset_0d ; BATTLEANIMFRAMESET_0D
+	dw .Frameset_0e ; BATTLEANIMFRAMESET_0E
+	dw .Frameset_0f ; BATTLEANIMFRAMESET_0F
+	dw .Frameset_10 ; BATTLEANIMFRAMESET_10
+	dw .Frameset_11 ; BATTLEANIMFRAMESET_11
+	dw .Frameset_12 ; BATTLEANIMFRAMESET_12
+	dw .Frameset_13 ; BATTLEANIMFRAMESET_13
+	dw .Frameset_14 ; BATTLEANIMFRAMESET_14
+	dw .Frameset_15 ; BATTLEANIMFRAMESET_15
+	dw .Frameset_16 ; BATTLEANIMFRAMESET_16
+	dw .Frameset_17 ; BATTLEANIMFRAMESET_17
+	dw .Frameset_18 ; BATTLEANIMFRAMESET_18
+	dw .Frameset_19 ; BATTLEANIMFRAMESET_19
+	dw .Frameset_1a ; BATTLEANIMFRAMESET_1A
+	dw .Frameset_1b ; BATTLEANIMFRAMESET_1B
+	dw .Frameset_1c ; BATTLEANIMFRAMESET_1C
+	dw .Frameset_1d ; BATTLEANIMFRAMESET_1D
+	dw .Frameset_1e ; BATTLEANIMFRAMESET_1E
+	dw .Frameset_1f ; BATTLEANIMFRAMESET_1F
+	dw .Frameset_20 ; BATTLEANIMFRAMESET_20
+	dw .Frameset_21 ; BATTLEANIMFRAMESET_21
+	dw .Frameset_22 ; BATTLEANIMFRAMESET_22
+	dw .Frameset_23 ; BATTLEANIMFRAMESET_23
+	dw .Frameset_24 ; BATTLEANIMFRAMESET_24
+	dw .Frameset_25 ; BATTLEANIMFRAMESET_25
+	dw .Frameset_26 ; BATTLEANIMFRAMESET_26
+	dw .Frameset_27 ; BATTLEANIMFRAMESET_27
+	dw .Frameset_28 ; BATTLEANIMFRAMESET_28
+	dw .Frameset_29 ; BATTLEANIMFRAMESET_29
+	dw .Frameset_2a ; BATTLEANIMFRAMESET_2A
+	dw .Frameset_2b ; BATTLEANIMFRAMESET_2B
+	dw .Frameset_2c ; BATTLEANIMFRAMESET_2C
+	dw .Frameset_2d ; BATTLEANIMFRAMESET_2D
+	dw .Frameset_2e ; BATTLEANIMFRAMESET_2E
+	dw .Frameset_2f ; BATTLEANIMFRAMESET_2F
+	dw .Frameset_30 ; BATTLEANIMFRAMESET_30
+	dw .Frameset_31 ; BATTLEANIMFRAMESET_31
+	dw .Frameset_32 ; BATTLEANIMFRAMESET_32
+	dw .Frameset_33 ; BATTLEANIMFRAMESET_33
+	dw .Frameset_34 ; BATTLEANIMFRAMESET_34
+	dw .Frameset_35 ; BATTLEANIMFRAMESET_35
+	dw .Frameset_36 ; BATTLEANIMFRAMESET_36
+	dw .Frameset_37 ; BATTLEANIMFRAMESET_37
+	dw .Frameset_38 ; BATTLEANIMFRAMESET_38
+	dw .Frameset_39 ; BATTLEANIMFRAMESET_39
+	dw .Frameset_3a ; BATTLEANIMFRAMESET_3A
+	dw .Frameset_3b ; BATTLEANIMFRAMESET_3B
+	dw .Frameset_3c ; BATTLEANIMFRAMESET_3C
+	dw .Frameset_3d ; BATTLEANIMFRAMESET_3D
+	dw .Frameset_3e ; BATTLEANIMFRAMESET_3E
+	dw .Frameset_3f ; BATTLEANIMFRAMESET_3F
+	dw .Frameset_40 ; BATTLEANIMFRAMESET_40
+	dw .Frameset_41 ; BATTLEANIMFRAMESET_41
+	dw .Frameset_42 ; BATTLEANIMFRAMESET_42
+	dw .Frameset_43 ; BATTLEANIMFRAMESET_43
+	dw .Frameset_44 ; BATTLEANIMFRAMESET_44
+	dw .Frameset_45 ; BATTLEANIMFRAMESET_45
+	dw .Frameset_46 ; BATTLEANIMFRAMESET_46
+	dw .Frameset_47 ; BATTLEANIMFRAMESET_47
+	dw .Frameset_48 ; BATTLEANIMFRAMESET_48
+	dw .Frameset_49 ; BATTLEANIMFRAMESET_49
+	dw .Frameset_4a ; BATTLEANIMFRAMESET_4A
+	dw .Frameset_4b ; BATTLEANIMFRAMESET_4B
+	dw .Frameset_4c ; BATTLEANIMFRAMESET_4C
+	dw .Frameset_4d ; BATTLEANIMFRAMESET_4D
+	dw .Frameset_4e ; BATTLEANIMFRAMESET_4E
+	dw .Frameset_4f ; BATTLEANIMFRAMESET_4F
+	dw .Frameset_50 ; BATTLEANIMFRAMESET_50
+	dw .Frameset_51 ; BATTLEANIMFRAMESET_51
+	dw .Frameset_52 ; BATTLEANIMFRAMESET_52
+	dw .Frameset_53 ; BATTLEANIMFRAMESET_53
+	dw .Frameset_54 ; BATTLEANIMFRAMESET_54
+	dw .Frameset_55 ; BATTLEANIMFRAMESET_55
+	dw .Frameset_56 ; BATTLEANIMFRAMESET_56
+	dw .Frameset_57 ; BATTLEANIMFRAMESET_57
+	dw .Frameset_58 ; BATTLEANIMFRAMESET_58
+	dw .Frameset_59 ; BATTLEANIMFRAMESET_59
+	dw .Frameset_5a ; BATTLEANIMFRAMESET_5A
+	dw .Frameset_5b ; BATTLEANIMFRAMESET_5B
+	dw .Frameset_5c ; BATTLEANIMFRAMESET_5C
+	dw .Frameset_5d ; BATTLEANIMFRAMESET_5D
+	dw .Frameset_5e ; BATTLEANIMFRAMESET_5E
+	dw .Frameset_5f ; BATTLEANIMFRAMESET_5F
+	dw .Frameset_60 ; BATTLEANIMFRAMESET_60
+	dw .Frameset_61 ; BATTLEANIMFRAMESET_61
+	dw .Frameset_62 ; BATTLEANIMFRAMESET_62
+	dw .Frameset_63 ; BATTLEANIMFRAMESET_63
+	dw .Frameset_64 ; BATTLEANIMFRAMESET_64
+	dw .Frameset_65 ; BATTLEANIMFRAMESET_65
+	dw .Frameset_66 ; BATTLEANIMFRAMESET_66
+	dw .Frameset_67 ; BATTLEANIMFRAMESET_67
+	dw .Frameset_68 ; BATTLEANIMFRAMESET_68
+	dw .Frameset_69 ; BATTLEANIMFRAMESET_69
+	dw .Frameset_6a ; BATTLEANIMFRAMESET_6A
+	dw .Frameset_6b ; BATTLEANIMFRAMESET_6B
+	dw .Frameset_6c ; BATTLEANIMFRAMESET_6C
+	dw .Frameset_6d ; BATTLEANIMFRAMESET_6D
+	dw .Frameset_6e ; BATTLEANIMFRAMESET_6E
+	dw .Frameset_6f ; BATTLEANIMFRAMESET_6F
+	dw .Frameset_70 ; BATTLEANIMFRAMESET_70
+	dw .Frameset_71 ; BATTLEANIMFRAMESET_71
+	dw .Frameset_72 ; BATTLEANIMFRAMESET_72
+	dw .Frameset_73 ; BATTLEANIMFRAMESET_73
+	dw .Frameset_74 ; BATTLEANIMFRAMESET_74
+	dw .Frameset_75 ; BATTLEANIMFRAMESET_75
+	dw .Frameset_76 ; BATTLEANIMFRAMESET_76
+	dw .Frameset_77 ; BATTLEANIMFRAMESET_77
+	dw .Frameset_78 ; BATTLEANIMFRAMESET_78
+	dw .Frameset_79 ; BATTLEANIMFRAMESET_79
+	dw .Frameset_7a ; BATTLEANIMFRAMESET_7A
+	dw .Frameset_7b ; BATTLEANIMFRAMESET_7B
+	dw .Frameset_7c ; BATTLEANIMFRAMESET_7C
+	dw .Frameset_7d ; BATTLEANIMFRAMESET_7D
+	dw .Frameset_7e ; BATTLEANIMFRAMESET_7E
+	dw .Frameset_7f ; BATTLEANIMFRAMESET_7F
+	dw .Frameset_80 ; BATTLEANIMFRAMESET_80
+	dw .Frameset_81 ; BATTLEANIMFRAMESET_81
+	dw .Frameset_82 ; BATTLEANIMFRAMESET_82
+	dw .Frameset_83 ; BATTLEANIMFRAMESET_83
+	dw .Frameset_84 ; BATTLEANIMFRAMESET_84
+	dw .Frameset_85 ; BATTLEANIMFRAMESET_85
+	dw .Frameset_86 ; BATTLEANIMFRAMESET_86
+	dw .Frameset_87 ; BATTLEANIMFRAMESET_87
+	dw .Frameset_88 ; BATTLEANIMFRAMESET_88
+	dw .Frameset_89 ; BATTLEANIMFRAMESET_89
+	dw .Frameset_8a ; BATTLEANIMFRAMESET_8A
+	dw .Frameset_8b ; BATTLEANIMFRAMESET_8B
+	dw .Frameset_8c ; BATTLEANIMFRAMESET_8C
+	dw .Frameset_8d ; BATTLEANIMFRAMESET_8D
+	dw .Frameset_8e ; BATTLEANIMFRAMESET_8E
+	dw .Frameset_8f ; BATTLEANIMFRAMESET_8F
+	dw .Frameset_90 ; BATTLEANIMFRAMESET_90
+	dw .Frameset_91 ; BATTLEANIMFRAMESET_91
+	dw .Frameset_92 ; BATTLEANIMFRAMESET_92
+	dw .Frameset_93 ; BATTLEANIMFRAMESET_93
+	dw .Frameset_94 ; BATTLEANIMFRAMESET_94
+	dw .Frameset_95 ; BATTLEANIMFRAMESET_95
+	dw .Frameset_96 ; BATTLEANIMFRAMESET_96
+	dw .Frameset_97 ; BATTLEANIMFRAMESET_97
+	dw .Frameset_98 ; BATTLEANIMFRAMESET_98
+	dw .Frameset_99 ; BATTLEANIMFRAMESET_99
+	dw .Frameset_9a ; BATTLEANIMFRAMESET_9A
+	dw .Frameset_9b ; BATTLEANIMFRAMESET_9B
+	dw .Frameset_9c ; BATTLEANIMFRAMESET_9C
+	dw .Frameset_9d ; BATTLEANIMFRAMESET_9D
+	dw .Frameset_9e ; BATTLEANIMFRAMESET_9E
+	dw .Frameset_9f ; BATTLEANIMFRAMESET_9F
+	dw .Frameset_a0 ; BATTLEANIMFRAMESET_A0
+	dw .Frameset_a1 ; BATTLEANIMFRAMESET_A1
+	dw .Frameset_a2 ; BATTLEANIMFRAMESET_A2
+	dw .Frameset_a3 ; BATTLEANIMFRAMESET_A3
+	dw .Frameset_a4 ; BATTLEANIMFRAMESET_A4
+	dw .Frameset_a5 ; BATTLEANIMFRAMESET_A5
+	dw .Frameset_a6 ; BATTLEANIMFRAMESET_A6
+	dw .Frameset_a7 ; BATTLEANIMFRAMESET_A7
+	dw .Frameset_a8 ; BATTLEANIMFRAMESET_A8
+	dw .Frameset_a9 ; BATTLEANIMFRAMESET_A9
+	dw .Frameset_aa ; BATTLEANIMFRAMESET_AA
+	dw .Frameset_ab ; BATTLEANIMFRAMESET_AB
+	dw .Frameset_ac ; BATTLEANIMFRAMESET_AC
+	dw .Frameset_ad ; BATTLEANIMFRAMESET_AD
+	dw .Frameset_ae ; BATTLEANIMFRAMESET_AE
+	dw .Frameset_af ; BATTLEANIMFRAMESET_AF
+	dw .Frameset_b0 ; BATTLEANIMFRAMESET_B0
+	dw .Frameset_b1 ; BATTLEANIMFRAMESET_B1
+	dw .Frameset_b2 ; BATTLEANIMFRAMESET_B2
+	dw .Frameset_b3 ; BATTLEANIMFRAMESET_B3
+	dw .Frameset_b4 ; BATTLEANIMFRAMESET_B4
+	dw .Frameset_b5 ; BATTLEANIMFRAMESET_B5
+	dw .Frameset_b6 ; BATTLEANIMFRAMESET_B6
+	dw .Frameset_b7 ; BATTLEANIMFRAMESET_B7
+	dw .Frameset_b8 ; BATTLEANIMFRAMESET_B8
+
+.Frameset_00:
+	frame BATTLEANIMOAMSET_00, $06
+	delanim
+
+.Frameset_01:
+	frame BATTLEANIMOAMSET_01, $06
+	delanim
+
+.Frameset_02:
+	frame BATTLEANIMOAMSET_02, $06
+	delanim
+
+.Frameset_03:
+	frame BATTLEANIMOAMSET_03, $06
+	delanim
+
+.Frameset_04:
+	frame BATTLEANIMOAMSET_04, $06
+	delanim
+
+.Frameset_05:
+	frame BATTLEANIMOAMSET_05, $06
+	delanim
+
+.Frameset_06:
+	frame BATTLEANIMOAMSET_06, $06
+	delanim
+
+.Frameset_07:
+	frame BATTLEANIMOAMSET_03, $04
+	frame BATTLEANIMOAMSET_01, $01
+	frame BATTLEANIMOAMSET_03, $04
+	frame BATTLEANIMOAMSET_01, $01
+	frame BATTLEANIMOAMSET_03, $04
+	frame BATTLEANIMOAMSET_01, $01
+	frame BATTLEANIMOAMSET_03, $04
+	frame BATTLEANIMOAMSET_01, $01
+	delanim
+
+.Frameset_3e:
+	frame BATTLEANIMOAMSET_4B, $02
+	frame BATTLEANIMOAMSET_4C, $02
+	frame BATTLEANIMOAMSET_4D, $04
+	frame BATTLEANIMOAMSET_4E, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $02
+	delanim
+
+.Frameset_3f:
+	frame BATTLEANIMOAMSET_4B, $42
+	frame BATTLEANIMOAMSET_4C, $42
+	frame BATTLEANIMOAMSET_4D, $44
+	frame BATTLEANIMOAMSET_4E, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $42
+	delanim
+
+.Frameset_40:
+	frame BATTLEANIMOAMSET_4B, $c2
+	frame BATTLEANIMOAMSET_4C, $c2
+	frame BATTLEANIMOAMSET_4D, $c4
+	frame BATTLEANIMOAMSET_4E, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_4E, $c2
+	delanim
+
+.Frameset_41:
+	frame BATTLEANIMOAMSET_4B, $01
+	frame BATTLEANIMOAMSET_4C, $01
+	frame BATTLEANIMOAMSET_4D, $01
+	frame BATTLEANIMOAMSET_4F, $01
+	frame BATTLEANIMOAMSET_50, $01
+	frame BATTLEANIMOAMSET_51, $01
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	delanim
+
+.Frameset_42:
+	frame BATTLEANIMOAMSET_4B, $41
+	frame BATTLEANIMOAMSET_4C, $41
+	frame BATTLEANIMOAMSET_4D, $41
+	frame BATTLEANIMOAMSET_4F, $41
+	frame BATTLEANIMOAMSET_50, $41
+	frame BATTLEANIMOAMSET_51, $41
+	frame BATTLEANIMOAMSET_52, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $42
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $42
+	delanim
+
+.Frameset_08:
+	frame BATTLEANIMOAMSET_00, $03
+	frame BATTLEANIMOAMSET_07, $03
+	frame BATTLEANIMOAMSET_08, $03
+	frame BATTLEANIMOAMSET_09, $03
+	delanim
+
+.Frameset_09:
+	frame BATTLEANIMOAMSET_0A, $07
+	frame BATTLEANIMOAMSET_0B, $07
+	frame BATTLEANIMOAMSET_0A, $07
+	frame BATTLEANIMOAMSET_0B, $47
+	dorestart
+
+.Frameset_0a:
+	frame BATTLEANIMOAMSET_0C, $08
+	endanim
+
+.Frameset_0b:
+	frame BATTLEANIMOAMSET_0D, $08
+	endanim
+
+.Frameset_0c:
+	frame BATTLEANIMOAMSET_0A, $08
+	endanim
+
+.Frameset_0d:
+	frame BATTLEANIMOAMSET_0A, $07
+	frame BATTLEANIMOAMSET_0B, $07
+	frame BATTLEANIMOAMSET_0A, $07
+	frame BATTLEANIMOAMSET_0B, $47
+	frame BATTLEANIMOAMSET_0A, $07
+	endanim
+
+.Frameset_0e:
+	frame BATTLEANIMOAMSET_0A, $08
+	endanim
+
+.Frameset_0f:
+	frame BATTLEANIMOAMSET_0A, $04
+	frame BATTLEANIMOAMSET_0E, $04
+	dorestart
+
+.Frameset_10:
+	frame BATTLEANIMOAMSET_0F, $04
+	frame BATTLEANIMOAMSET_10, $04
+	dorestart
+
+.Frameset_11:
+	frame BATTLEANIMOAMSET_10, $04
+	frame BATTLEANIMOAMSET_0F, $04
+	frame BATTLEANIMOAMSET_0E, $04
+	frame BATTLEANIMOAMSET_0A, $04
+	frame BATTLEANIMOAMSET_0E, $04
+	frame BATTLEANIMOAMSET_0A, $04
+	frame BATTLEANIMOAMSET_0E, $04
+	frame BATTLEANIMOAMSET_0A, $04
+	delanim
+
+.Frameset_12:
+	frame BATTLEANIMOAMSET_10, $01
+	frame BATTLEANIMOAMSET_0F, $01
+	frame BATTLEANIMOAMSET_12, $01
+	frame BATTLEANIMOAMSET_11, $01
+	frame BATTLEANIMOAMSET_12, $01
+	frame BATTLEANIMOAMSET_0F, $01
+	dorestart
+
+.Frameset_13:
+	frame BATTLEANIMOAMSET_10, $03
+	frame BATTLEANIMOAMSET_0F, $03
+	frame BATTLEANIMOAMSET_12, $01
+	dorepeat 1
+	frame BATTLEANIMOAMSET_12, $01
+	dorepeat 1
+	frame BATTLEANIMOAMSET_12, $01
+	dorepeat 1
+	frame BATTLEANIMOAMSET_12, $01
+	dorepeat 1
+	frame BATTLEANIMOAMSET_12, $03
+	delanim
+
+.Frameset_14:
+	frame BATTLEANIMOAMSET_13, $14
+	delanim
+
+.Frameset_15:
+	frame BATTLEANIMOAMSET_10, $01
+	frame BATTLEANIMOAMSET_0F, $01
+	dorestart
+
+.Frameset_16:
+	frame BATTLEANIMOAMSET_14, $08
+	endanim
+
+.Frameset_17:
+	frame BATTLEANIMOAMSET_17, $04
+	frame BATTLEANIMOAMSET_16, $08
+	frame BATTLEANIMOAMSET_15, $08
+	frame BATTLEANIMOAMSET_16, $08
+	frame BATTLEANIMOAMSET_17, $04
+	frame BATTLEANIMOAMSET_17, $04
+	frame BATTLEANIMOAMSET_16, $48
+	frame BATTLEANIMOAMSET_15, $48
+	frame BATTLEANIMOAMSET_16, $48
+	frame BATTLEANIMOAMSET_17, $04
+	dorestart
+
+.Frameset_56:
+	frame BATTLEANIMOAMSET_69, $08
+	endanim
+
+.Frameset_57:
+	frame BATTLEANIMOAMSET_69, $20
+	frame BATTLEANIMOAMSET_6A, $04
+	frame BATTLEANIMOAMSET_6B, $04
+	frame BATTLEANIMOAMSET_6D, $04
+	frame BATTLEANIMOAMSET_6C, $04
+	endanim
+
+.Frameset_58:
+	frame BATTLEANIMOAMSET_6C, $08
+	frame BATTLEANIMOAMSET_6D, $08
+	dorestart
+
+.Frameset_18:
+	frame BATTLEANIMOAMSET_18, $04
+	frame BATTLEANIMOAMSET_19, $04
+	frame BATTLEANIMOAMSET_1A, $04
+	delanim
+
+.Frameset_19:
+	frame BATTLEANIMOAMSET_1B, $08
+	endanim
+
+.Frameset_1a:
+	frame BATTLEANIMOAMSET_0F, $08
+	endanim
+
+.Frameset_1b:
+	frame BATTLEANIMOAMSET_1C, $08
+	endanim
+
+.Frameset_1c:
+	frame BATTLEANIMOAMSET_0A, $08
+	delanim
+
+.Frameset_1d:
+	frame BATTLEANIMOAMSET_1D, $08
+	endanim
+
+.Frameset_1e:
+	frame BATTLEANIMOAMSET_17, $08
+	endanim
+
+.Frameset_1f:
+	frame BATTLEANIMOAMSET_0F, $03
+	frame BATTLEANIMOAMSET_10, $03
+	frame BATTLEANIMOAMSET_1E, $03
+	endanim
+
+.Frameset_20:
+	frame BATTLEANIMOAMSET_1F, $10
+	frame BATTLEANIMOAMSET_20, $03
+	delanim
+
+.Frameset_21:
+	frame BATTLEANIMOAMSET_20, $08
+	endanim
+
+.Frameset_22:
+	frame BATTLEANIMOAMSET_20, $08
+	frame BATTLEANIMOAMSET_21, $08
+	frame BATTLEANIMOAMSET_1B, $08
+	frame BATTLEANIMOAMSET_21, $08
+	dorestart
+
+.Frameset_23:
+	frame BATTLEANIMOAMSET_22, $08
+	endanim
+
+.Frameset_24:
+	frame BATTLEANIMOAMSET_1B, $08
+	endanim
+
+.Frameset_25:
+	frame BATTLEANIMOAMSET_23, $08
+	endanim
+
+.Frameset_26:
+	frame BATTLEANIMOAMSET_24, $08
+	endanim
+
+.Frameset_27:
+	frame BATTLEANIMOAMSET_25, $08
+	endanim
+
+.Frameset_28:
+	frame BATTLEANIMOAMSET_26, $08
+	frame BATTLEANIMOAMSET_27, $08
+	endanim
+
+.Frameset_29:
+	frame BATTLEANIMOAMSET_28, $08
+	frame BATTLEANIMOAMSET_29, $08
+	delanim
+
+.Frameset_2a:
+	frame BATTLEANIMOAMSET_2A, $01
+	frame BATTLEANIMOAMSET_2B, $01
+	frame BATTLEANIMOAMSET_2C, $01
+	frame BATTLEANIMOAMSET_2D, $01
+	frame BATTLEANIMOAMSET_2E, $01
+	frame BATTLEANIMOAMSET_2D, $01
+	frame BATTLEANIMOAMSET_2C, $01
+	frame BATTLEANIMOAMSET_2B, $01
+	frame BATTLEANIMOAMSET_2A, $01
+	delanim
+
+.Frameset_2b:
+	frame BATTLEANIMOAMSET_14, $01
+	frame BATTLEANIMOAMSET_15, $01
+	dorestart
+
+.Frameset_2c:
+	frame BATTLEANIMOAMSET_2F, $04
+	frame BATTLEANIMOAMSET_30, $28
+	delanim
+
+.Frameset_2d:
+	frame BATTLEANIMOAMSET_31, $08
+	endanim
+
+.Frameset_2e:
+	frame BATTLEANIMOAMSET_32, $20
+	frame BATTLEANIMOAMSET_33, $20
+	frame BATTLEANIMOAMSET_34, $20
+	frame BATTLEANIMOAMSET_35, $20 ; fallthrough
+.Frameset_2f:
+	dorepeat 2
+	frame BATTLEANIMOAMSET_35, $04
+	dorepeat 2
+	frame BATTLEANIMOAMSET_35, $04
+	dorepeat 2
+	frame BATTLEANIMOAMSET_35, $04
+	dorepeat 2
+	frame BATTLEANIMOAMSET_35, $04
+	delanim
+
+.Frameset_30:
+	frame BATTLEANIMOAMSET_14, $04
+	frame BATTLEANIMOAMSET_15, $04
+	dorestart
+
+.Frameset_31:
+	frame BATTLEANIMOAMSET_36, $02
+	frame BATTLEANIMOAMSET_37, $02
+	frame BATTLEANIMOAMSET_38, $02
+	frame BATTLEANIMOAMSET_39, $20
+	delanim
+
+.Frameset_32:
+	frame BATTLEANIMOAMSET_3A, $02
+	frame BATTLEANIMOAMSET_3B, $02
+	frame BATTLEANIMOAMSET_3C, $02
+	frame BATTLEANIMOAMSET_3D, $20
+	delanim
+
+.Frameset_33:
+	frame BATTLEANIMOAMSET_3A, $42
+	frame BATTLEANIMOAMSET_3B, $42
+	frame BATTLEANIMOAMSET_3C, $42
+	frame BATTLEANIMOAMSET_3D, $60
+	delanim
+
+.Frameset_34:
+	frame BATTLEANIMOAMSET_3E, $08
+	frame BATTLEANIMOAMSET_3F, $08
+	frame BATTLEANIMOAMSET_40, $08
+	endanim
+
+.Frameset_35:
+	frame BATTLEANIMOAMSET_40, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_40, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_41, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_41, $02
+	dorepeat 2
+	dorestart
+
+.Frameset_36:
+	frame BATTLEANIMOAMSET_42, $02
+	frame BATTLEANIMOAMSET_43, $02
+	frame BATTLEANIMOAMSET_44, $02
+	frame BATTLEANIMOAMSET_45, $02
+	dorestart
+
+.Frameset_37:
+	frame BATTLEANIMOAMSET_19, $02
+	dorepeat 2
+	dorestart
+
+.Frameset_38:
+	frame BATTLEANIMOAMSET_46, $04
+	frame BATTLEANIMOAMSET_47, $04
+	dorestart
+
+.Frameset_39:
+	frame BATTLEANIMOAMSET_18, $02
+	dorepeat 2
+	dorestart
+
+.Frameset_3a:
+	frame BATTLEANIMOAMSET_48, $08
+	endanim
+
+.Frameset_3b:
+	frame BATTLEANIMOAMSET_48, $48
+	endanim
+
+.Frameset_3c:
+	frame BATTLEANIMOAMSET_49, $08
+	endanim
+
+.Frameset_3d:
+	frame BATTLEANIMOAMSET_4A, $08
+	endanim
+
+.Frameset_43:
+	frame BATTLEANIMOAMSET_20, $10
+	frame BATTLEANIMOAMSET_1F, $10
+	frame BATTLEANIMOAMSET_1E, $10
+	endanim
+
+.Frameset_4c:
+	frame BATTLEANIMOAMSET_20, $08
+	frame BATTLEANIMOAMSET_1F, $08
+	frame BATTLEANIMOAMSET_1E, $08
+	endanim
+
+.Frameset_44:
+	dorepeat 20
+	frame BATTLEANIMOAMSET_55, $28
+	frame BATTLEANIMOAMSET_54, $28
+	frame BATTLEANIMOAMSET_53, $14
+	dorepeat 4
+	frame BATTLEANIMOAMSET_53, $04
+	dorepeat 4
+	frame BATTLEANIMOAMSET_53, $04
+	dorepeat 4
+	frame BATTLEANIMOAMSET_53, $04
+	delanim
+
+.Frameset_7e:
+	frame BATTLEANIMOAMSET_1E, $08
+	frame BATTLEANIMOAMSET_1F, $08
+	frame BATTLEANIMOAMSET_20, $08
+	delanim
+
+.Frameset_45:
+	dorepeat 0
+	frame BATTLEANIMOAMSET_14, $00
+	frame BATTLEANIMOAMSET_15, $00
+	frame BATTLEANIMOAMSET_14, $40
+	dorepeat 0
+	frame BATTLEANIMOAMSET_16, $40
+	frame BATTLEANIMOAMSET_15, $00
+	frame BATTLEANIMOAMSET_16, $00
+	dorestart
+
+.Frameset_46:
+	frame BATTLEANIMOAMSET_56, $02
+	frame BATTLEANIMOAMSET_57, $04
+	delanim
+
+.Frameset_47:
+	frame BATTLEANIMOAMSET_56, $c2
+	frame BATTLEANIMOAMSET_57, $c4
+	delanim
+
+.Frameset_48:
+	frame BATTLEANIMOAMSET_56, $01
+	frame BATTLEANIMOAMSET_57, $01
+	frame BATTLEANIMOAMSET_58, $01
+	frame BATTLEANIMOAMSET_57, $c1
+	frame BATTLEANIMOAMSET_58, $c1
+	frame BATTLEANIMOAMSET_57, $02
+	delanim
+
+.Frameset_49:
+	frame BATTLEANIMOAMSET_56, $c1
+	frame BATTLEANIMOAMSET_57, $c1
+	frame BATTLEANIMOAMSET_58, $c1
+	frame BATTLEANIMOAMSET_57, $01
+	frame BATTLEANIMOAMSET_58, $01
+	frame BATTLEANIMOAMSET_57, $c2
+	delanim
+
+.Frameset_4a:
+	frame BATTLEANIMOAMSET_57, $c1
+	frame BATTLEANIMOAMSET_58, $c1
+	frame BATTLEANIMOAMSET_57, $01
+	frame BATTLEANIMOAMSET_58, $01
+	dorestart
+
+.Frameset_4b:
+	frame BATTLEANIMOAMSET_59, $01
+	frame BATTLEANIMOAMSET_5A, $01
+	frame BATTLEANIMOAMSET_5B, $01
+	frame BATTLEANIMOAMSET_5C, $02
+	delanim
+
+.Frameset_4d:
+	frame BATTLEANIMOAMSET_0A, $0a
+	frame BATTLEANIMOAMSET_0B, $43
+	frame BATTLEANIMOAMSET_5D, $43
+	frame BATTLEANIMOAMSET_0B, $c3
+	frame BATTLEANIMOAMSET_0A, $82
+	frame BATTLEANIMOAMSET_0B, $81
+	frame BATTLEANIMOAMSET_5D, $01
+	frame BATTLEANIMOAMSET_0B, $01
+	dorestart
+
+.Frameset_4e:
+	frame BATTLEANIMOAMSET_0A, $03
+	frame BATTLEANIMOAMSET_0B, $47
+	frame BATTLEANIMOAMSET_0A, $07
+	frame BATTLEANIMOAMSET_0B, $07
+	frame BATTLEANIMOAMSET_0A, $03
+	dorestart
+
+.Frameset_4f:
+	frame BATTLEANIMOAMSET_5E, $20
+	frame BATTLEANIMOAMSET_5E, $20
+	delanim
+
+.Frameset_50:
+	frame BATTLEANIMOAMSET_5F, $20
+	frame BATTLEANIMOAMSET_5F, $20
+	delanim
+
+.Frameset_51:
+	frame BATTLEANIMOAMSET_60, $08
+	endanim
+
+.Frameset_52:
+	frame BATTLEANIMOAMSET_61, $01
+	frame BATTLEANIMOAMSET_62, $01
+	frame BATTLEANIMOAMSET_63, $01
+	endanim
+
+.Frameset_53:
+	frame BATTLEANIMOAMSET_63, $07
+	frame BATTLEANIMOAMSET_64, $07
+	dorestart
+
+.Frameset_54:
+	frame BATTLEANIMOAMSET_65, $01
+	frame BATTLEANIMOAMSET_66, $01
+	frame BATTLEANIMOAMSET_67, $01
+	endanim
+
+.Frameset_55:
+	frame BATTLEANIMOAMSET_67, $07
+	frame BATTLEANIMOAMSET_68, $07
+	dorestart
+
+.Frameset_59:
+	frame BATTLEANIMOAMSET_6E, $08
+	endanim
+
+.Frameset_5a:
+	frame BATTLEANIMOAMSET_6F, $08
+	endanim
+
+.Frameset_5b:
+	frame BATTLEANIMOAMSET_6E, $88
+	endanim
+
+.Frameset_5c:
+	frame BATTLEANIMOAMSET_18, $04
+	frame BATTLEANIMOAMSET_70, $04
+	frame BATTLEANIMOAMSET_71, $04
+	frame BATTLEANIMOAMSET_72, $04
+	frame BATTLEANIMOAMSET_73, $04
+	delanim
+
+.Frameset_5d:
+	frame BATTLEANIMOAMSET_74, $04
+	frame BATTLEANIMOAMSET_75, $04
+	dorestart
+
+.Frameset_5e:
+	frame BATTLEANIMOAMSET_14, $08
+	endanim
+
+.Frameset_7a:
+	frame BATTLEANIMOAMSET_74, $03
+	frame BATTLEANIMOAMSET_14, $03
+	frame BATTLEANIMOAMSET_15, $03
+	frame BATTLEANIMOAMSET_14, $03
+	frame BATTLEANIMOAMSET_15, $03
+	delanim
+
+.Frameset_af:
+	frame BATTLEANIMOAMSET_14, $00
+	frame BATTLEANIMOAMSET_15, $00
+	frame BATTLEANIMOAMSET_14, $00
+	frame BATTLEANIMOAMSET_15, $00
+	frame BATTLEANIMOAMSET_74, $0c
+	delanim
+
+.Frameset_5f:
+	frame BATTLEANIMOAMSET_76, $08
+	endanim
+
+.Frameset_60:
+	frame BATTLEANIMOAMSET_77, $01
+	frame BATTLEANIMOAMSET_78, $01
+	frame BATTLEANIMOAMSET_79, $01
+	frame BATTLEANIMOAMSET_7A, $01
+	frame BATTLEANIMOAMSET_7B, $01
+	frame BATTLEANIMOAMSET_7C, $01
+	frame BATTLEANIMOAMSET_7D, $01
+	frame BATTLEANIMOAMSET_7C, $c1
+	frame BATTLEANIMOAMSET_7B, $c1
+	frame BATTLEANIMOAMSET_7A, $c1
+	frame BATTLEANIMOAMSET_79, $c1
+	frame BATTLEANIMOAMSET_78, $c1
+	frame BATTLEANIMOAMSET_77, $c1
+	delanim
+
+.Frameset_61:
+	frame BATTLEANIMOAMSET_1B, $04
+	frame BATTLEANIMOAMSET_7E, $04
+	dorestart
+
+.Frameset_62:
+	frame BATTLEANIMOAMSET_1B, $44
+	frame BATTLEANIMOAMSET_7E, $44
+	dorestart
+
+.Frameset_63:
+	frame BATTLEANIMOAMSET_7F, $08
+	endanim
+
+.Frameset_64:
+	frame BATTLEANIMOAMSET_25, $08
+	endanim
+
+.Frameset_65:
+	frame BATTLEANIMOAMSET_80, $08
+	endanim
+
+.Frameset_66:
+	frame BATTLEANIMOAMSET_83, $07
+	frame BATTLEANIMOAMSET_82, $07
+	frame BATTLEANIMOAMSET_81, $07
+	frame BATTLEANIMOAMSET_82, $07
+	frame BATTLEANIMOAMSET_83, $07
+	frame BATTLEANIMOAMSET_82, $07
+	frame BATTLEANIMOAMSET_81, $07
+	delanim
+
+.Frameset_67:
+	frame BATTLEANIMOAMSET_1B, $10
+	delanim
+
+.Frameset_68:
+	dorepeat 15
+	frame BATTLEANIMOAMSET_84, $0f
+	frame BATTLEANIMOAMSET_85, $0f
+	frame BATTLEANIMOAMSET_29, $0f
+	frame BATTLEANIMOAMSET_28, $0f
+	frame BATTLEANIMOAMSET_86, $20
+	delanim
+
+.Frameset_69:
+	frame BATTLEANIMOAMSET_1B, $03
+	frame BATTLEANIMOAMSET_87, $03
+	frame BATTLEANIMOAMSET_88, $03
+	frame BATTLEANIMOAMSET_89, $03
+	delanim
+
+.Frameset_6a:
+	frame BATTLEANIMOAMSET_8A, $02
+	frame BATTLEANIMOAMSET_8B, $02
+	frame BATTLEANIMOAMSET_8C, $02
+	frame BATTLEANIMOAMSET_8D, $02
+	delanim
+
+.Frameset_6b:
+	frame BATTLEANIMOAMSET_61, $02
+	frame BATTLEANIMOAMSET_62, $02
+	frame BATTLEANIMOAMSET_63, $02
+	endanim
+
+.Frameset_6c:
+	frame BATTLEANIMOAMSET_65, $02
+	frame BATTLEANIMOAMSET_66, $02
+	frame BATTLEANIMOAMSET_67, $02
+	endanim
+
+.Frameset_6d:
+	frame BATTLEANIMOAMSET_8E, $08
+	endanim
+
+.Frameset_6e:
+	frame BATTLEANIMOAMSET_8E, $48
+	endanim
+
+.Frameset_6f:
+	frame BATTLEANIMOAMSET_8F, $10
+	frame BATTLEANIMOAMSET_90, $10
+	dorestart
+
+.Frameset_70:
+	frame BATTLEANIMOAMSET_91, $10
+	frame BATTLEANIMOAMSET_92, $10
+	dorestart
+
+.Frameset_71:
+	frame BATTLEANIMOAMSET_93, $08
+	endanim
+
+.Frameset_72:
+	frame BATTLEANIMOAMSET_1E, $08
+	endanim
+
+.Frameset_73:
+	frame BATTLEANIMOAMSET_1B, $07
+	frame BATTLEANIMOAMSET_94, $07
+	dorestart
+
+.Frameset_74:
+	frame BATTLEANIMOAMSET_95, $08
+	endanim
+
+.Frameset_75:
+	frame BATTLEANIMOAMSET_96, $08
+	endanim
+
+.Frameset_76:
+	frame BATTLEANIMOAMSET_95, $08
+	endanim
+
+.Frameset_77:
+	frame BATTLEANIMOAMSET_97, $01
+	frame BATTLEANIMOAMSET_97, $41
+	dorestart
+
+.Frameset_78:
+	frame BATTLEANIMOAMSET_98, $08
+	endanim
+
+.Frameset_79:
+	frame BATTLEANIMOAMSET_99, $20
+	frame BATTLEANIMOAMSET_99, $20
+	frame BATTLEANIMOAMSET_99, $20
+	frame BATTLEANIMOAMSET_99, $20
+	frame BATTLEANIMOAMSET_99, $20
+	frame BATTLEANIMOAMSET_9A, $08
+	endanim
+
+.Frameset_7b:
+	frame BATTLEANIMOAMSET_9B, $08
+	endanim
+
+.Frameset_7c:
+	frame BATTLEANIMOAMSET_9C, $02
+	frame BATTLEANIMOAMSET_9D, $02
+	frame BATTLEANIMOAMSET_9E, $08
+	dorepeat 2
+	frame BATTLEANIMOAMSET_9E, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_9E, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_9E, $02
+	delanim
+
+.Frameset_7d:
+	frame BATTLEANIMOAMSET_9F, $08
+	endanim
+
+.Frameset_7f:
+	frame BATTLEANIMOAMSET_0F, $08
+	endanim
+
+.Frameset_80:
+	frame BATTLEANIMOAMSET_6B, $18
+	delanim
+
+.Frameset_81:
+	frame BATTLEANIMOAMSET_A0, $01 ; fallthrough
+.Frameset_82:
+	frame BATTLEANIMOAMSET_A1, $01 ; fallthrough
+.Frameset_83:
+	frame BATTLEANIMOAMSET_A2, $01
+	delanim
+
+.Frameset_84:
+	frame BATTLEANIMOAMSET_A3, $08
+	endanim
+
+.Frameset_85:
+	frame BATTLEANIMOAMSET_A4, $04
+	frame BATTLEANIMOAMSET_A5, $04
+	frame BATTLEANIMOAMSET_A6, $04
+	frame BATTLEANIMOAMSET_A7, $04
+	frame BATTLEANIMOAMSET_A6, $44
+	frame BATTLEANIMOAMSET_A5, $44
+	dorestart
+
+.Frameset_86:
+	frame BATTLEANIMOAMSET_A8, $04
+	frame BATTLEANIMOAMSET_A9, $04
+	frame BATTLEANIMOAMSET_AA, $04
+	frame BATTLEANIMOAMSET_AB, $04
+	frame BATTLEANIMOAMSET_AA, $44
+	frame BATTLEANIMOAMSET_A9, $44
+	dorestart
+
+.Frameset_87:
+	frame BATTLEANIMOAMSET_1B, $08
+	endanim
+
+.Frameset_88:
+	frame BATTLEANIMOAMSET_AC, $08
+	endanim
+
+.Frameset_89:
+	frame BATTLEANIMOAMSET_AD, $08
+	endanim
+
+.Frameset_8a:
+	frame BATTLEANIMOAMSET_AE, $08
+	endanim
+
+.Frameset_8b:
+	frame BATTLEANIMOAMSET_AF, $08
+	endanim
+
+.Frameset_8c:
+	frame BATTLEANIMOAMSET_B0, $20
+	delanim
+
+.Frameset_8d:
+	frame BATTLEANIMOAMSET_B1, $07
+	frame BATTLEANIMOAMSET_B1, $47
+	dorestart
+
+.Frameset_8e:
+	frame BATTLEANIMOAMSET_B2, $08
+	endanim
+
+.Frameset_8f:
+	frame BATTLEANIMOAMSET_B3, $08
+	endanim
+
+.Frameset_90:
+	frame BATTLEANIMOAMSET_B3, $48
+	endanim
+
+.Frameset_91:
+	frame BATTLEANIMOAMSET_B3, $88
+	endanim
+
+.Frameset_92:
+	frame BATTLEANIMOAMSET_B3, $c8
+	endanim
+
+.Frameset_93:
+	frame BATTLEANIMOAMSET_B5, $08
+	endanim
+
+.Frameset_94:
+	frame BATTLEANIMOAMSET_B5, $48
+	endanim
+
+.Frameset_95:
+	frame BATTLEANIMOAMSET_B5, $88
+	endanim
+
+.Frameset_96:
+	frame BATTLEANIMOAMSET_B5, $c8
+	endanim
+
+.Frameset_97:
+	frame BATTLEANIMOAMSET_B4, $08
+	endanim
+
+.Frameset_98:
+	frame BATTLEANIMOAMSET_6B, $08
+	endanim
+
+.Frameset_99:
+	frame BATTLEANIMOAMSET_B6, $08
+	endanim
+
+.Frameset_9a:
+	frame BATTLEANIMOAMSET_B7, $20
+	endanim
+
+.Frameset_9b:
+	frame BATTLEANIMOAMSET_1B, $20
+	endanim
+
+.Frameset_9c:
+	frame BATTLEANIMOAMSET_B8, $20
+	endanim
+
+.Frameset_9d:
+	frame BATTLEANIMOAMSET_B8, $60
+	endanim
+
+.Frameset_9e:
+	frame BATTLEANIMOAMSET_B9, $20
+	endanim
+
+.Frameset_9f:
+	frame BATTLEANIMOAMSET_BA, $20
+	endanim
+
+.Frameset_a0:
+	frame BATTLEANIMOAMSET_BB, $60
+	endanim
+
+.Frameset_a1:
+	frame BATTLEANIMOAMSET_BB, $20
+	endanim
+
+.Frameset_a2:
+	frame BATTLEANIMOAMSET_BC, $20
+	endanim
+
+.Frameset_a3:
+	frame BATTLEANIMOAMSET_BD, $0b
+	frame BATTLEANIMOAMSET_BE, $0b
+	frame BATTLEANIMOAMSET_1B, $0b
+	delanim
+
+.Frameset_a4:
+	frame BATTLEANIMOAMSET_BF, $04
+	frame BATTLEANIMOAMSET_C0, $04
+	frame BATTLEANIMOAMSET_C1, $04
+	delanim
+
+.Frameset_a5:
+	frame BATTLEANIMOAMSET_C2, $20
+	frame BATTLEANIMOAMSET_C2, $20
+	delanim
+
+.Frameset_a6:
+	frame BATTLEANIMOAMSET_4B, $02
+	frame BATTLEANIMOAMSET_4C, $02
+	frame BATTLEANIMOAMSET_4D, $20
+	frame BATTLEANIMOAMSET_4D, $20
+	frame BATTLEANIMOAMSET_4D, $20
+	frame BATTLEANIMOAMSET_4F, $01
+	frame BATTLEANIMOAMSET_50, $01
+	frame BATTLEANIMOAMSET_51, $01
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $02
+	delanim
+
+.Frameset_a7:
+	frame BATTLEANIMOAMSET_4B, $c2
+	frame BATTLEANIMOAMSET_4C, $c2
+	frame BATTLEANIMOAMSET_4D, $e0
+	frame BATTLEANIMOAMSET_4D, $e0
+	frame BATTLEANIMOAMSET_4D, $e0
+	frame BATTLEANIMOAMSET_4F, $c1
+	frame BATTLEANIMOAMSET_50, $c1
+	frame BATTLEANIMOAMSET_51, $c1
+	frame BATTLEANIMOAMSET_52, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $c2
+	dorepeat 2
+	frame BATTLEANIMOAMSET_52, $c2
+	delanim
+
+.Frameset_a8:
+	frame BATTLEANIMOAMSET_C3, $01
+	frame BATTLEANIMOAMSET_C3, $c1
+	dorestart
+
+.Frameset_a9:
+	frame BATTLEANIMOAMSET_C4, $20
+	endanim
+
+.Frameset_aa:
+	frame BATTLEANIMOAMSET_C5, $04
+	frame BATTLEANIMOAMSET_C6, $04
+	frame BATTLEANIMOAMSET_C7, $04
+	delanim
+
+.Frameset_ab:
+	frame BATTLEANIMOAMSET_C8, $01
+	frame BATTLEANIMOAMSET_C8, $41
+	dorestart
+
+.Frameset_ac:
+	frame BATTLEANIMOAMSET_C9, $03
+	frame BATTLEANIMOAMSET_05, $03
+	delanim
+
+.Frameset_ad:
+	frame BATTLEANIMOAMSET_CA, $20
+	frame BATTLEANIMOAMSET_CB, $03
+	frame BATTLEANIMOAMSET_CA, $03
+	frame BATTLEANIMOAMSET_CB, $03
+	dorestart
+
+.Frameset_ae:
+	frame BATTLEANIMOAMSET_03, $a0
+	endanim
+
+.Frameset_b0:
+	frame BATTLEANIMOAMSET_CC, $20
+	endanim
+
+.Frameset_b1:
+	frame BATTLEANIMOAMSET_7F, $02
+	frame BATTLEANIMOAMSET_25, $02
+	frame BATTLEANIMOAMSET_80, $02
+	frame BATTLEANIMOAMSET_25, $02
+	dorestart
+
+.Frameset_b2:
+	frame BATTLEANIMOAMSET_CD, $04
+	frame BATTLEANIMOAMSET_CE, $04
+	frame BATTLEANIMOAMSET_CD, $c4
+	frame BATTLEANIMOAMSET_CE, $c4
+	dorestart
+
+.Frameset_b3:
+	frame BATTLEANIMOAMSET_CF, $04
+	frame BATTLEANIMOAMSET_D0, $04
+	frame BATTLEANIMOAMSET_D1, $04
+	frame BATTLEANIMOAMSET_D2, $04
+	delanim
+
+.Frameset_b4:
+	frame BATTLEANIMOAMSET_D3, $20
+	endanim
+
+.Frameset_b5:
+	frame BATTLEANIMOAMSET_D4, $08
+	endanim
+
+.Frameset_b6:
+	frame BATTLEANIMOAMSET_D5, $08
+	endanim
+
+.Frameset_b7:
+	frame BATTLEANIMOAMSET_D6, $08
+	endanim
+
+.Frameset_b8:
+	frame BATTLEANIMOAMSET_D7, $08
+	endanim
+
+; ceeae
--- /dev/null
+++ b/data/battle_anims/oam.asm
@@ -1,0 +1,1086 @@
+BattleAnimOAMData: ; ceeae
+; entries correspond to BATTLEANIMOAMSET_* constants
+	; vtile offset, length, pointer
+	dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
+	dbbw $04,  9, .OAMData_01 ; BATTLEANIMOAMSET_01
+	dbbw $08,  4, .OAMData_02 ; BATTLEANIMOAMSET_02
+	dbbw $09,  4, .OAMData_03 ; BATTLEANIMOAMSET_03
+	dbbw $0d,  4, .OAMData_04 ; BATTLEANIMOAMSET_04
+	dbbw $0f,  4, .OAMData_03 ; BATTLEANIMOAMSET_05
+	dbbw $13,  4, .OAMData_04 ; BATTLEANIMOAMSET_06
+	dbbw $04, 16, .OAMData_00 ; BATTLEANIMOAMSET_07
+	dbbw $08, 16, .OAMData_00 ; BATTLEANIMOAMSET_08
+	dbbw $08, 16, .OAMData_09 ; BATTLEANIMOAMSET_09
+	dbbw $00,  4, .OAMData_04 ; BATTLEANIMOAMSET_0A
+	dbbw $02,  4, .OAMData_03 ; BATTLEANIMOAMSET_0B
+	dbbw $06,  2, .OAMData_0c ; BATTLEANIMOAMSET_0C
+	dbbw $07,  2, .OAMData_0c ; BATTLEANIMOAMSET_0D
+	dbbw $02,  4, .OAMData_04 ; BATTLEANIMOAMSET_0E
+	dbbw $04,  1, .OAMData_0f ; BATTLEANIMOAMSET_0F
+	dbbw $05,  1, .OAMData_0f ; BATTLEANIMOAMSET_10
+	dbbw $00,  2, .OAMData_11 ; BATTLEANIMOAMSET_11
+	dbbw $02,  2, .OAMData_11 ; BATTLEANIMOAMSET_12
+	dbbw $00,  4, .OAMData_13 ; BATTLEANIMOAMSET_13
+	dbbw $00,  1, .OAMData_0f ; BATTLEANIMOAMSET_14
+	dbbw $01,  1, .OAMData_0f ; BATTLEANIMOAMSET_15
+	dbbw $02,  1, .OAMData_0f ; BATTLEANIMOAMSET_16
+	dbbw $03,  1, .OAMData_0f ; BATTLEANIMOAMSET_17
+	dbbw $00,  4, .OAMData_02 ; BATTLEANIMOAMSET_18
+	dbbw $01, 16, .OAMData_00 ; BATTLEANIMOAMSET_19
+	dbbw $05, 16, .OAMData_00 ; BATTLEANIMOAMSET_1A
+	dbbw $00,  4, .OAMData_03 ; BATTLEANIMOAMSET_1B
+	dbbw $05, 12, .OAMData_1c ; BATTLEANIMOAMSET_1C
+	dbbw $02,  4, .OAMData_02 ; BATTLEANIMOAMSET_1D
+	dbbw $06,  1, .OAMData_0f ; BATTLEANIMOAMSET_1E
+	dbbw $07,  1, .OAMData_0f ; BATTLEANIMOAMSET_1F
+	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_20
+	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_21
+	dbbw $09, 22, .OAMData_22 ; BATTLEANIMOAMSET_22
+	dbbw $04,  2, .OAMData_11 ; BATTLEANIMOAMSET_23
+	dbbw $06,  2, .OAMData_11 ; BATTLEANIMOAMSET_24
+	dbbw $0c,  1, .OAMData_0f ; BATTLEANIMOAMSET_25
+	dbbw $0a,  1, .OAMData_0f ; BATTLEANIMOAMSET_26
+	dbbw $0b,  4, .OAMData_02 ; BATTLEANIMOAMSET_27
+	dbbw $08,  4, .OAMData_04 ; BATTLEANIMOAMSET_28
+	dbbw $06,  4, .OAMData_04 ; BATTLEANIMOAMSET_29
+	dbbw $00,  5, .OAMData_2a ; BATTLEANIMOAMSET_2A
+	dbbw $03,  6, .OAMData_2b ; BATTLEANIMOAMSET_2B
+	dbbw $00,  7, .OAMData_2c ; BATTLEANIMOAMSET_2C
+	dbbw $03,  8, .OAMData_2d ; BATTLEANIMOAMSET_2D
+	dbbw $00,  9, .OAMData_2e ; BATTLEANIMOAMSET_2E
+	dbbw $00,  4, .OAMData_2f ; BATTLEANIMOAMSET_2F
+	dbbw $02,  4, .OAMData_30 ; BATTLEANIMOAMSET_30
+	dbbw $04,  6, .OAMData_31 ; BATTLEANIMOAMSET_31
+	dbbw $00,  2, .OAMData_32 ; BATTLEANIMOAMSET_32
+	dbbw $00,  7, .OAMData_33 ; BATTLEANIMOAMSET_33
+	dbbw $00, 14, .OAMData_32 ; BATTLEANIMOAMSET_34
+	dbbw $00, 21, .OAMData_33 ; BATTLEANIMOAMSET_35
+	dbbw $00,  2, .OAMData_36 ; BATTLEANIMOAMSET_36
+	dbbw $00,  6, .OAMData_36 ; BATTLEANIMOAMSET_37
+	dbbw $00, 10, .OAMData_36 ; BATTLEANIMOAMSET_38
+	dbbw $00, 14, .OAMData_36 ; BATTLEANIMOAMSET_39
+	dbbw $00,  2, .OAMData_3a ; BATTLEANIMOAMSET_3A
+	dbbw $00,  6, .OAMData_3a ; BATTLEANIMOAMSET_3B
+	dbbw $00, 10, .OAMData_3a ; BATTLEANIMOAMSET_3C
+	dbbw $00, 14, .OAMData_3a ; BATTLEANIMOAMSET_3D
+	dbbw $00,  4, .OAMData_3e ; BATTLEANIMOAMSET_3E
+	dbbw $00, 16, .OAMData_3e ; BATTLEANIMOAMSET_3F
+	dbbw $00, 26, .OAMData_3e ; BATTLEANIMOAMSET_40
+	dbbw $00, 26, .OAMData_41 ; BATTLEANIMOAMSET_41
+	dbbw $0e,  4, .OAMData_42 ; BATTLEANIMOAMSET_42
+	dbbw $0e,  8, .OAMData_42 ; BATTLEANIMOAMSET_43
+	dbbw $0e,  4, .OAMData_44 ; BATTLEANIMOAMSET_44
+	dbbw $0e,  8, .OAMData_44 ; BATTLEANIMOAMSET_45
+	dbbw $0e,  4, .OAMData_46 ; BATTLEANIMOAMSET_46
+	dbbw $0e,  4, .OAMData_47 ; BATTLEANIMOAMSET_47
+	dbbw $00,  6, .OAMData_48 ; BATTLEANIMOAMSET_48
+	dbbw $03,  4, .OAMData_49 ; BATTLEANIMOAMSET_49
+	dbbw $03,  2, .OAMData_4a ; BATTLEANIMOAMSET_4A
+	dbbw $01,  5, .OAMData_0f ; BATTLEANIMOAMSET_4B
+	dbbw $01,  6, .OAMData_4c ; BATTLEANIMOAMSET_4C
+	dbbw $01,  7, .OAMData_4d ; BATTLEANIMOAMSET_4D
+	dbbw $01,  3, .OAMData_4d ; BATTLEANIMOAMSET_4E
+	dbbw $01,  8, .OAMData_4f ; BATTLEANIMOAMSET_4F
+	dbbw $01,  9, .OAMData_50 ; BATTLEANIMOAMSET_50
+	dbbw $01, 10, .OAMData_51 ; BATTLEANIMOAMSET_51
+	dbbw $01,  6, .OAMData_51 ; BATTLEANIMOAMSET_52
+	dbbw $00,  9, .OAMData_01 ; BATTLEANIMOAMSET_53
+	dbbw $04,  4, .OAMData_02 ; BATTLEANIMOAMSET_54
+	dbbw $05,  4, .OAMData_02 ; BATTLEANIMOAMSET_55
+	dbbw $00,  2, .OAMData_56 ; BATTLEANIMOAMSET_56
+	dbbw $02,  2, .OAMData_56 ; BATTLEANIMOAMSET_57
+	dbbw $04,  2, .OAMData_56 ; BATTLEANIMOAMSET_58
+	dbbw $02,  4, .OAMData_59 ; BATTLEANIMOAMSET_59
+	dbbw $02,  4, .OAMData_5a ; BATTLEANIMOAMSET_5A
+	dbbw $02,  2, .OAMData_0c ; BATTLEANIMOAMSET_5B
+	dbbw $04,  2, .OAMData_0c ; BATTLEANIMOAMSET_5C
+	dbbw $06,  4, .OAMData_5d ; BATTLEANIMOAMSET_5D
+	dbbw $08,  2, .OAMData_0c ; BATTLEANIMOAMSET_5E
+	dbbw $09,  2, .OAMData_0c ; BATTLEANIMOAMSET_5F
+	dbbw $05,  2, .OAMData_60 ; BATTLEANIMOAMSET_60
+	dbbw $00,  2, .OAMData_61 ; BATTLEANIMOAMSET_61
+	dbbw $00,  5, .OAMData_61 ; BATTLEANIMOAMSET_62
+	dbbw $00,  9, .OAMData_61 ; BATTLEANIMOAMSET_63
+	dbbw $09,  9, .OAMData_61 ; BATTLEANIMOAMSET_64
+	dbbw $00,  4, .OAMData_65 ; BATTLEANIMOAMSET_65
+	dbbw $00,  7, .OAMData_65 ; BATTLEANIMOAMSET_66
+	dbbw $00,  9, .OAMData_65 ; BATTLEANIMOAMSET_67
+	dbbw $09,  9, .OAMData_65 ; BATTLEANIMOAMSET_68
+	dbbw $04,  1, .OAMData_69 ; BATTLEANIMOAMSET_69
+	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_6A
+	dbbw $06,  4, .OAMData_03 ; BATTLEANIMOAMSET_6B
+	dbbw $0a,  4, .OAMData_03 ; BATTLEANIMOAMSET_6C
+	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_6D
+	dbbw $08,  5, .OAMData_6e ; BATTLEANIMOAMSET_6E
+	dbbw $0d,  3, .OAMData_6f ; BATTLEANIMOAMSET_6F
+	dbbw $01,  8, .OAMData_70 ; BATTLEANIMOAMSET_70
+	dbbw $03,  8, .OAMData_70 ; BATTLEANIMOAMSET_71
+	dbbw $05,  8, .OAMData_70 ; BATTLEANIMOAMSET_72
+	dbbw $07,  8, .OAMData_70 ; BATTLEANIMOAMSET_73
+	dbbw $06,  4, .OAMData_02 ; BATTLEANIMOAMSET_74
+	dbbw $07,  4, .OAMData_02 ; BATTLEANIMOAMSET_75
+	dbbw $0a,  2, .OAMData_76 ; BATTLEANIMOAMSET_76
+	dbbw $00,  1, .OAMData_77 ; BATTLEANIMOAMSET_77
+	dbbw $00,  3, .OAMData_78 ; BATTLEANIMOAMSET_78
+	dbbw $00,  6, .OAMData_79 ; BATTLEANIMOAMSET_79
+	dbbw $00,  9, .OAMData_7a ; BATTLEANIMOAMSET_7A
+	dbbw $00, 12, .OAMData_7b ; BATTLEANIMOAMSET_7B
+	dbbw $00, 14, .OAMData_7c ; BATTLEANIMOAMSET_7C
+	dbbw $00, 15, .OAMData_7d ; BATTLEANIMOAMSET_7D
+	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_7E
+	dbbw $08,  4, .OAMData_03 ; BATTLEANIMOAMSET_7F
+	dbbw $0d,  1, .OAMData_0f ; BATTLEANIMOAMSET_80
+	dbbw $0e,  4, .OAMData_81 ; BATTLEANIMOAMSET_81
+	dbbw $10,  1, .OAMData_0f ; BATTLEANIMOAMSET_82
+	dbbw $11,  1, .OAMData_0f ; BATTLEANIMOAMSET_83
+	dbbw $04,  2, .OAMData_6a ; BATTLEANIMOAMSET_84
+	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_85
+	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_86
+	dbbw $00,  8, .OAMData_87 ; BATTLEANIMOAMSET_87
+	dbbw $00, 12, .OAMData_88 ; BATTLEANIMOAMSET_88
+	dbbw $00, 16, .OAMData_87 ; BATTLEANIMOAMSET_89
+	dbbw $09,  2, .OAMData_8a ; BATTLEANIMOAMSET_8A
+	dbbw $09,  4, .OAMData_8a ; BATTLEANIMOAMSET_8B
+	dbbw $09,  6, .OAMData_8a ; BATTLEANIMOAMSET_8C
+	dbbw $09,  8, .OAMData_8a ; BATTLEANIMOAMSET_8D
+	dbbw $12,  5, .OAMData_8e ; BATTLEANIMOAMSET_8E
+	dbbw $00,  4, .OAMData_8f ; BATTLEANIMOAMSET_8F
+	dbbw $04,  4, .OAMData_8f ; BATTLEANIMOAMSET_90
+	dbbw $08,  4, .OAMData_8f ; BATTLEANIMOAMSET_91
+	dbbw $0c,  4, .OAMData_8f ; BATTLEANIMOAMSET_92
+	dbbw $00,  6, .OAMData_93 ; BATTLEANIMOAMSET_93
+	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_94
+	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_95
+	dbbw $15,  4, .OAMData_30 ; BATTLEANIMOAMSET_96
+	dbbw $04,  4, .OAMData_30 ; BATTLEANIMOAMSET_97
+	dbbw $0c,  4, .OAMData_04 ; BATTLEANIMOAMSET_98
+	dbbw $0a,  4, .OAMData_99 ; BATTLEANIMOAMSET_99
+	dbbw $0c,  4, .OAMData_03 ; BATTLEANIMOAMSET_9A
+	dbbw $00, 36, .OAMData_9b ; BATTLEANIMOAMSET_9B
+	dbbw $0d,  2, .OAMData_9c ; BATTLEANIMOAMSET_9C
+	dbbw $0d,  4, .OAMData_9c ; BATTLEANIMOAMSET_9D
+	dbbw $0d,  6, .OAMData_9c ; BATTLEANIMOAMSET_9E
+	dbbw $02,  8, .OAMData_9f ; BATTLEANIMOAMSET_9F
+	dbbw $08,  7, .OAMData_a0 ; BATTLEANIMOAMSET_A0
+	dbbw $08,  5, .OAMData_a0 ; BATTLEANIMOAMSET_A1
+	dbbw $08,  3, .OAMData_a0 ; BATTLEANIMOAMSET_A2
+	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_A3
+	dbbw $00,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A4
+	dbbw $06,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A5
+	dbbw $0c,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A6
+	dbbw $12,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A7
+	dbbw $18,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A8
+	dbbw $1e,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A9
+	dbbw $24,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AA
+	dbbw $2a,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AB
+	dbbw $03,  4, .OAMData_ac ; BATTLEANIMOAMSET_AC
+	dbbw $12,  4, .OAMData_03 ; BATTLEANIMOAMSET_AD
+	dbbw $10,  4, .OAMData_04 ; BATTLEANIMOAMSET_AE
+	dbbw $16,  1, .OAMData_0f ; BATTLEANIMOAMSET_AF
+	dbbw $17,  4, .OAMData_02 ; BATTLEANIMOAMSET_B0
+	dbbw $18,  4, .OAMData_03 ; BATTLEANIMOAMSET_B1
+	dbbw $1c,  4, .OAMData_03 ; BATTLEANIMOAMSET_B2
+	dbbw $20,  3, .OAMData_03 ; BATTLEANIMOAMSET_B3
+	dbbw $23,  4, .OAMData_04 ; BATTLEANIMOAMSET_B4
+	dbbw $25,  3, .OAMData_03 ; BATTLEANIMOAMSET_B5
+	dbbw $17,  4, .OAMData_03 ; BATTLEANIMOAMSET_B6
+	dbbw $0a, 16, .OAMData_00 ; BATTLEANIMOAMSET_B7
+	dbbw $10, 16, .OAMData_1c ; BATTLEANIMOAMSET_B8
+	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_B9
+	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BA
+	dbbw $08,  2, .OAMData_11 ; BATTLEANIMOAMSET_BB
+	dbbw $20,  6, .OAMData_bc ; BATTLEANIMOAMSET_BC
+	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_BD
+	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BE
+	dbbw $1a,  4, .OAMData_30 ; BATTLEANIMOAMSET_BF
+	dbbw $16,  9, .OAMData_01 ; BATTLEANIMOAMSET_C0
+	dbbw $10, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C1
+	dbbw $09,  6, .OAMData_c2 ; BATTLEANIMOAMSET_C2
+	dbbw $11,  9, .OAMData_c3 ; BATTLEANIMOAMSET_C3
+	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_C4
+	dbbw $0b,  4, .OAMData_30 ; BATTLEANIMOAMSET_C5
+	dbbw $1c,  6, .OAMData_02 ; BATTLEANIMOAMSET_C6
+	dbbw $20, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C7
+	dbbw $05,  6, .OAMData_c8 ; BATTLEANIMOAMSET_C8
+	dbbw $0b,  4, .OAMData_03 ; BATTLEANIMOAMSET_C9
+	dbbw $09,  4, .OAMData_ca ; BATTLEANIMOAMSET_CA
+	dbbw $0b,  4, .OAMData_04 ; BATTLEANIMOAMSET_CB
+	dbbw $11, 13, .OAMData_cc ; BATTLEANIMOAMSET_CC
+	dbbw $00,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CD
+	dbbw $09,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CE
+	dbbw $00, 12, .OAMData_cf ; BATTLEANIMOAMSET_CF
+	dbbw $06, 12, .OAMData_cf ; BATTLEANIMOAMSET_D0
+	dbbw $0c, 12, .OAMData_cf ; BATTLEANIMOAMSET_D1
+	dbbw $12, 12, .OAMData_cf ; BATTLEANIMOAMSET_D2
+	dbbw $00, 13, .OAMData_cc ; BATTLEANIMOAMSET_D3
+	dbbw $00,  7, .OAMData_d4 ; BATTLEANIMOAMSET_D4
+	dbbw $00,  6, .OAMData_d5 ; BATTLEANIMOAMSET_D5
+	dbbw $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6
+	dbbw $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_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
--- /dev/null
+++ b/data/battle_anims/object_gfx.asm
@@ -1,0 +1,51 @@
+anim_obj_gfx: MACRO
+; # tiles, label
+	db  \1
+	dba \2
+ENDM
+
+AnimObjGFX: ; cfcf6
+; entries correspond to ANIM_GFX_* constants
+	anim_obj_gfx  0, AnimObj00GFX
+	anim_obj_gfx 21, AnimObjHitGFX
+	anim_obj_gfx  6, AnimObjCutGFX
+	anim_obj_gfx  6, AnimObjFireGFX
+	anim_obj_gfx 20, AnimObjWaterGFX
+	anim_obj_gfx 26, AnimObjLightningGFX
+	anim_obj_gfx 18, AnimObjPlantGFX
+	anim_obj_gfx 12, AnimObjSmokeGFX
+	anim_obj_gfx  9, AnimObjExplosionGFX
+	anim_obj_gfx 17, AnimObjRocksGFX
+	anim_obj_gfx  6, AnimObjIceGFX
+	anim_obj_gfx 10, AnimObjPokeBallGFX
+	anim_obj_gfx  9, AnimObjPoisonGFX
+	anim_obj_gfx 13, AnimObjBubbleGFX
+	anim_obj_gfx 16, AnimObjNoiseGFX
+	anim_obj_gfx  2, AnimObjPowderGFX
+	anim_obj_gfx 11, AnimObjBeamGFX
+	anim_obj_gfx  9, AnimObjSpeedGFX
+	anim_obj_gfx  9, AnimObjChargeGFX
+	anim_obj_gfx 19, AnimObjWindGFX
+	anim_obj_gfx 10, AnimObjWhipGFX
+	anim_obj_gfx 12, AnimObjEggGFX
+	anim_obj_gfx 18, AnimObjRopeGFX
+	anim_obj_gfx 13, AnimObjPsychicGFX
+	anim_obj_gfx 10, AnimObjReflectGFX
+	anim_obj_gfx 27, AnimObjStatusGFX
+	anim_obj_gfx 12, AnimObjSandGFX
+	anim_obj_gfx 14, AnimObjWebGFX
+	anim_obj_gfx 16, AnimObjHazeGFX
+	anim_obj_gfx  7, AnimObjHornGFX
+	anim_obj_gfx  8, AnimObjFlowerGFX
+	anim_obj_gfx 40, AnimObjMiscGFX
+	anim_obj_gfx 36, AnimObjSkyAttackGFX
+	anim_obj_gfx 16, AnimObjGlobeGFX
+	anim_obj_gfx 48, AnimObjShapesGFX
+	anim_obj_gfx 18, AnimObjObjectsGFX
+	anim_obj_gfx 38, AnimObjShineGFX
+	anim_obj_gfx 35, AnimObjAngelsGFX
+	anim_obj_gfx 18, AnimObjWaveGFX
+	anim_obj_gfx 24, AnimObjAeroblastGFX
+	anim_obj_gfx  1, NULL
+	anim_obj_gfx  1, NULL
+; cfd9e
--- /dev/null
+++ b/data/battle_anims/objects.asm
@@ -1,0 +1,209 @@
+ABSOLUTE_X EQU $00
+RELATIVE_X EQU $01
+
+battleanimobj: MACRO
+	db \1 ; flags
+	; bit 7: priority
+	; bit 6: y flip (for enemy)
+	; bit 5: x flip (for enemy)
+	; bit 0: enable enemy animation coord fixing (x = $b4 - x; see below for y)
+	db \2 ; enemy animation y fix param
+	; if $FF: y = y + 5 tiles
+	; else:   y = -y - (1 tile) * (is_softboiled_animation)
+	db \3 ; video sequence
+	db \4 ; callback
+	db \5 ; palette
+	db \6 ; tile offset
+endm
+
+BattleAnimObjects: ; ccb56
+; entries correspond to ANIM_OBJ_* constants
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_00
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_02
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_04
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_05
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_06
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_07
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_08
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_09
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_0A
+	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0B
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0C
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0D
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0E
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0F
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_BURNED
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_BLIZZARD
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_12
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BEAM
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_RAZOR_LEAF
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL_BLOCKED
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_17
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_18
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_19
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_1A
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_1B
+	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_BALL_POOF
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1D
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1E
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1F
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_20
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_BUBBLE
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_22
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_23
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_24
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_25
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_26
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_27
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_28
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BUILDUP
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_FROZEN
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 ; ANIM_OBJ_MASTER_BALL_SPARKLE
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_2C
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2D
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2E
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2F
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_30
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_31
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_LIGHTNING_BOLT
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_33
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_34
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_35
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_36
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_37
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_38
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_39
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3A
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3B
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3C
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3D
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_GUST
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_3F
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_40
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_41
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_42
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_43
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_44
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_ABSORB
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_46
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_47
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_48
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_49
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_LEECH_SEED
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_4B
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_4C
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_4D
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4E
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4F
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_50
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_51
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_CHICK
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_53
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_54
+	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_SKULL
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_56
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_57
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a ; ANIM_OBJ_58
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_PARALYZED
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_5A
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_HAZE
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_MIST
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOG
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_POISON_GAS
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_HORN
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_60
+	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_61
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_62
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_63
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_64
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_65
+	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_66
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_67
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_68
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_69
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_6A
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_6B
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6C
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6D
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK_FEAROW
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_LICK
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_WITHDRAW
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_71
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_72
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_73
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_74
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_75
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_76
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_77
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_78
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_79
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_7A
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_7B
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_7C
+	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_7D
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_HEART
+	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_7F
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_80
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_COTTON_SPORE
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_82
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_83
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f ; ANIM_OBJ_84
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_85
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_86
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_87
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_88
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_89
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_8A
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_8B
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_8C
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_8D
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SPIKES
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_8F
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_90
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_91
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_92
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_93
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_94
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_95
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_96
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_97
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_98
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_99
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_9A
+	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_9B
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9C
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_9D
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9E
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_9F
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A0
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A1
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_A2
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_A3
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_A4
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_A5
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_PERISH_SONG
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_A7
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A8
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A9
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AA
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_AB
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_AC
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AD
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_AE
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_AF
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c ; ANIM_OBJ_B0
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_B1
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B2
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_B3
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_B4
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B5
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_FLOWER
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_COTTON
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERFEETFOLLOW
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYFEETFOLLOW
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_BA
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_BB
+; ccfbe
--- /dev/null
+++ b/data/icon_pointers.asm
@@ -1,0 +1,41 @@
+IconPointers:
+; entries correspond to ICON_* constants
+	dw NullIcon
+	dw PoliwagIcon
+	dw JigglypuffIcon
+	dw DiglettIcon
+	dw PikachuIcon
+	dw StaryuIcon
+	dw FishIcon
+	dw BirdIcon
+	dw MonsterIcon
+	dw ClefairyIcon
+	dw OddishIcon
+	dw BugIcon
+	dw GhostIcon
+	dw LaprasIcon
+	dw HumanshapeIcon
+	dw FoxIcon
+	dw EquineIcon
+	dw ShellIcon
+	dw BlobIcon
+	dw SerpentIcon
+	dw VoltorbIcon
+	dw SquirtleIcon
+	dw BulbasaurIcon
+	dw CharmanderIcon
+	dw CaterpillarIcon
+	dw UnownIcon
+	dw GeodudeIcon
+	dw FighterIcon
+	dw EggIcon
+	dw JellyfishIcon
+	dw MothIcon
+	dw BatIcon
+	dw SnorlaxIcon
+	dw HoOhIcon
+	dw LugiaIcon
+	dw GyaradosIcon
+	dw SlowpokeIcon
+	dw SudowoodoIcon
+	dw BigmonIcon
--- /dev/null
+++ b/data/palettes/pokemon_palettes.asm
@@ -1,0 +1,541 @@
+PokemonPalettes: ; a8ce
+
+; 000
+	RGB 30, 22, 17
+	RGB 16, 14, 19
+; 000 shiny
+	RGB 30, 22, 17
+	RGB 16, 14, 19
+
+INCLUDE "gfx/pokemon/bulbasaur/normal.pal"
+INCLUDE "gfx/pokemon/bulbasaur/shiny.pal"
+INCLUDE "gfx/pokemon/ivysaur/normal.pal"
+INCLUDE "gfx/pokemon/ivysaur/shiny.pal"
+INCLUDE "gfx/pokemon/venusaur/normal.pal"
+INCLUDE "gfx/pokemon/venusaur/shiny.pal"
+INCLUDE "gfx/pokemon/charmander/normal.pal"
+INCLUDE "gfx/pokemon/charmander/shiny.pal"
+INCLUDE "gfx/pokemon/charmeleon/normal.pal"
+INCLUDE "gfx/pokemon/charmeleon/shiny.pal"
+INCLUDE "gfx/pokemon/charizard/normal.pal"
+INCLUDE "gfx/pokemon/charizard/shiny.pal"
+INCLUDE "gfx/pokemon/squirtle/normal.pal"
+INCLUDE "gfx/pokemon/squirtle/shiny.pal"
+INCLUDE "gfx/pokemon/wartortle/normal.pal"
+INCLUDE "gfx/pokemon/wartortle/shiny.pal"
+INCLUDE "gfx/pokemon/blastoise/normal.pal"
+INCLUDE "gfx/pokemon/blastoise/shiny.pal"
+INCLUDE "gfx/pokemon/caterpie/normal.pal"
+INCLUDE "gfx/pokemon/caterpie/shiny.pal"
+INCLUDE "gfx/pokemon/metapod/normal.pal"
+INCLUDE "gfx/pokemon/metapod/shiny.pal"
+INCLUDE "gfx/pokemon/butterfree/normal.pal"
+INCLUDE "gfx/pokemon/butterfree/shiny.pal"
+INCLUDE "gfx/pokemon/weedle/normal.pal"
+INCLUDE "gfx/pokemon/weedle/shiny.pal"
+INCLUDE "gfx/pokemon/kakuna/normal.pal"
+INCLUDE "gfx/pokemon/kakuna/shiny.pal"
+INCLUDE "gfx/pokemon/beedrill/normal.pal"
+INCLUDE "gfx/pokemon/beedrill/shiny.pal"
+INCLUDE "gfx/pokemon/pidgey/normal.pal"
+INCLUDE "gfx/pokemon/pidgey/shiny.pal"
+INCLUDE "gfx/pokemon/pidgeotto/normal.pal"
+INCLUDE "gfx/pokemon/pidgeotto/shiny.pal"
+INCLUDE "gfx/pokemon/pidgeot/normal.pal"
+INCLUDE "gfx/pokemon/pidgeot/shiny.pal"
+INCLUDE "gfx/pokemon/rattata/normal.pal"
+INCLUDE "gfx/pokemon/rattata/shiny.pal"
+INCLUDE "gfx/pokemon/raticate/normal.pal"
+INCLUDE "gfx/pokemon/raticate/shiny.pal"
+INCLUDE "gfx/pokemon/spearow/normal.pal"
+INCLUDE "gfx/pokemon/spearow/shiny.pal"
+INCLUDE "gfx/pokemon/fearow/normal.pal"
+INCLUDE "gfx/pokemon/fearow/shiny.pal"
+INCLUDE "gfx/pokemon/ekans/normal.pal"
+INCLUDE "gfx/pokemon/ekans/shiny.pal"
+INCLUDE "gfx/pokemon/arbok/normal.pal"
+INCLUDE "gfx/pokemon/arbok/shiny.pal"
+INCLUDE "gfx/pokemon/pikachu/normal.pal"
+INCLUDE "gfx/pokemon/pikachu/shiny.pal"
+INCLUDE "gfx/pokemon/raichu/normal.pal"
+INCLUDE "gfx/pokemon/raichu/shiny.pal"
+INCLUDE "gfx/pokemon/sandshrew/normal.pal"
+INCLUDE "gfx/pokemon/sandshrew/shiny.pal"
+INCLUDE "gfx/pokemon/sandslash/normal.pal"
+INCLUDE "gfx/pokemon/sandslash/shiny.pal"
+INCLUDE "gfx/pokemon/nidoran_f/normal.pal"
+INCLUDE "gfx/pokemon/nidoran_f/shiny.pal"
+INCLUDE "gfx/pokemon/nidorina/normal.pal"
+INCLUDE "gfx/pokemon/nidorina/shiny.pal"
+INCLUDE "gfx/pokemon/nidoqueen/normal.pal"
+INCLUDE "gfx/pokemon/nidoqueen/shiny.pal"
+INCLUDE "gfx/pokemon/nidoran_m/normal.pal"
+INCLUDE "gfx/pokemon/nidoran_m/shiny.pal"
+INCLUDE "gfx/pokemon/nidorino/normal.pal"
+INCLUDE "gfx/pokemon/nidorino/shiny.pal"
+INCLUDE "gfx/pokemon/nidoking/normal.pal"
+INCLUDE "gfx/pokemon/nidoking/shiny.pal"
+INCLUDE "gfx/pokemon/clefairy/normal.pal"
+INCLUDE "gfx/pokemon/clefairy/shiny.pal"
+INCLUDE "gfx/pokemon/clefable/normal.pal"
+INCLUDE "gfx/pokemon/clefable/shiny.pal"
+INCLUDE "gfx/pokemon/vulpix/normal.pal"
+INCLUDE "gfx/pokemon/vulpix/shiny.pal"
+INCLUDE "gfx/pokemon/ninetales/normal.pal"
+INCLUDE "gfx/pokemon/ninetales/shiny.pal"
+INCLUDE "gfx/pokemon/jigglypuff/normal.pal"
+INCLUDE "gfx/pokemon/jigglypuff/shiny.pal"
+INCLUDE "gfx/pokemon/wigglytuff/normal.pal"
+INCLUDE "gfx/pokemon/wigglytuff/shiny.pal"
+INCLUDE "gfx/pokemon/zubat/normal.pal"
+INCLUDE "gfx/pokemon/zubat/shiny.pal"
+INCLUDE "gfx/pokemon/golbat/normal.pal"
+INCLUDE "gfx/pokemon/golbat/shiny.pal"
+INCLUDE "gfx/pokemon/oddish/normal.pal"
+INCLUDE "gfx/pokemon/oddish/shiny.pal"
+INCLUDE "gfx/pokemon/gloom/normal.pal"
+INCLUDE "gfx/pokemon/gloom/shiny.pal"
+INCLUDE "gfx/pokemon/vileplume/normal.pal"
+INCLUDE "gfx/pokemon/vileplume/shiny.pal"
+INCLUDE "gfx/pokemon/paras/normal.pal"
+INCLUDE "gfx/pokemon/paras/shiny.pal"
+INCLUDE "gfx/pokemon/parasect/normal.pal"
+INCLUDE "gfx/pokemon/parasect/shiny.pal"
+INCLUDE "gfx/pokemon/venonat/normal.pal"
+INCLUDE "gfx/pokemon/venonat/shiny.pal"
+INCLUDE "gfx/pokemon/venomoth/normal.pal"
+INCLUDE "gfx/pokemon/venomoth/shiny.pal"
+INCLUDE "gfx/pokemon/diglett/normal.pal"
+INCLUDE "gfx/pokemon/diglett/shiny.pal"
+INCLUDE "gfx/pokemon/dugtrio/normal.pal"
+INCLUDE "gfx/pokemon/dugtrio/shiny.pal"
+INCLUDE "gfx/pokemon/meowth/normal.pal"
+INCLUDE "gfx/pokemon/meowth/shiny.pal"
+INCLUDE "gfx/pokemon/persian/normal.pal"
+INCLUDE "gfx/pokemon/persian/shiny.pal"
+INCLUDE "gfx/pokemon/psyduck/normal.pal"
+INCLUDE "gfx/pokemon/psyduck/shiny.pal"
+INCLUDE "gfx/pokemon/golduck/normal.pal"
+INCLUDE "gfx/pokemon/golduck/shiny.pal"
+INCLUDE "gfx/pokemon/mankey/normal.pal"
+INCLUDE "gfx/pokemon/mankey/shiny.pal"
+INCLUDE "gfx/pokemon/primeape/normal.pal"
+INCLUDE "gfx/pokemon/primeape/shiny.pal"
+INCLUDE "gfx/pokemon/growlithe/normal.pal"
+INCLUDE "gfx/pokemon/growlithe/shiny.pal"
+INCLUDE "gfx/pokemon/arcanine/normal.pal"
+INCLUDE "gfx/pokemon/arcanine/shiny.pal"
+INCLUDE "gfx/pokemon/poliwag/normal.pal"
+INCLUDE "gfx/pokemon/poliwag/shiny.pal"
+INCLUDE "gfx/pokemon/poliwhirl/normal.pal"
+INCLUDE "gfx/pokemon/poliwhirl/shiny.pal"
+INCLUDE "gfx/pokemon/poliwrath/normal.pal"
+INCLUDE "gfx/pokemon/poliwrath/shiny.pal"
+INCLUDE "gfx/pokemon/abra/normal.pal"
+INCLUDE "gfx/pokemon/abra/shiny.pal"
+INCLUDE "gfx/pokemon/kadabra/normal.pal"
+INCLUDE "gfx/pokemon/kadabra/shiny.pal"
+INCLUDE "gfx/pokemon/alakazam/normal.pal"
+INCLUDE "gfx/pokemon/alakazam/shiny.pal"
+INCLUDE "gfx/pokemon/machop/normal.pal"
+INCLUDE "gfx/pokemon/machop/shiny.pal"
+INCLUDE "gfx/pokemon/machoke/normal.pal"
+INCLUDE "gfx/pokemon/machoke/shiny.pal"
+INCLUDE "gfx/pokemon/machamp/normal.pal"
+INCLUDE "gfx/pokemon/machamp/shiny.pal"
+INCLUDE "gfx/pokemon/bellsprout/normal.pal"
+INCLUDE "gfx/pokemon/bellsprout/shiny.pal"
+INCLUDE "gfx/pokemon/weepinbell/normal.pal"
+INCLUDE "gfx/pokemon/weepinbell/shiny.pal"
+INCLUDE "gfx/pokemon/victreebel/normal.pal"
+INCLUDE "gfx/pokemon/victreebel/shiny.pal"
+INCLUDE "gfx/pokemon/tentacool/normal.pal"
+INCLUDE "gfx/pokemon/tentacool/shiny.pal"
+INCLUDE "gfx/pokemon/tentacruel/normal.pal"
+INCLUDE "gfx/pokemon/tentacruel/shiny.pal"
+INCLUDE "gfx/pokemon/geodude/normal.pal"
+INCLUDE "gfx/pokemon/geodude/shiny.pal"
+INCLUDE "gfx/pokemon/graveler/normal.pal"
+INCLUDE "gfx/pokemon/graveler/shiny.pal"
+INCLUDE "gfx/pokemon/golem/normal.pal"
+INCLUDE "gfx/pokemon/golem/shiny.pal"
+INCLUDE "gfx/pokemon/ponyta/normal.pal"
+INCLUDE "gfx/pokemon/ponyta/shiny.pal"
+INCLUDE "gfx/pokemon/rapidash/normal.pal"
+INCLUDE "gfx/pokemon/rapidash/shiny.pal"
+INCLUDE "gfx/pokemon/slowpoke/normal.pal"
+INCLUDE "gfx/pokemon/slowpoke/shiny.pal"
+INCLUDE "gfx/pokemon/slowbro/normal.pal"
+INCLUDE "gfx/pokemon/slowbro/shiny.pal"
+INCLUDE "gfx/pokemon/magnemite/normal.pal"
+INCLUDE "gfx/pokemon/magnemite/shiny.pal"
+INCLUDE "gfx/pokemon/magneton/normal.pal"
+INCLUDE "gfx/pokemon/magneton/shiny.pal"
+INCLUDE "gfx/pokemon/farfetch_d/normal.pal"
+INCLUDE "gfx/pokemon/farfetch_d/shiny.pal"
+INCLUDE "gfx/pokemon/doduo/normal.pal"
+INCLUDE "gfx/pokemon/doduo/shiny.pal"
+INCLUDE "gfx/pokemon/dodrio/normal.pal"
+INCLUDE "gfx/pokemon/dodrio/shiny.pal"
+INCLUDE "gfx/pokemon/seel/normal.pal"
+INCLUDE "gfx/pokemon/seel/shiny.pal"
+INCLUDE "gfx/pokemon/dewgong/normal.pal"
+INCLUDE "gfx/pokemon/dewgong/shiny.pal"
+INCLUDE "gfx/pokemon/grimer/normal.pal"
+INCLUDE "gfx/pokemon/grimer/shiny.pal"
+INCLUDE "gfx/pokemon/muk/normal.pal"
+INCLUDE "gfx/pokemon/muk/shiny.pal"
+INCLUDE "gfx/pokemon/shellder/normal.pal"
+INCLUDE "gfx/pokemon/shellder/shiny.pal"
+INCLUDE "gfx/pokemon/cloyster/normal.pal"
+INCLUDE "gfx/pokemon/cloyster/shiny.pal"
+INCLUDE "gfx/pokemon/gastly/normal.pal"
+INCLUDE "gfx/pokemon/gastly/shiny.pal"
+INCLUDE "gfx/pokemon/haunter/normal.pal"
+INCLUDE "gfx/pokemon/haunter/shiny.pal"
+INCLUDE "gfx/pokemon/gengar/normal.pal"
+INCLUDE "gfx/pokemon/gengar/shiny.pal"
+INCLUDE "gfx/pokemon/onix/normal.pal"
+INCLUDE "gfx/pokemon/onix/shiny.pal"
+INCLUDE "gfx/pokemon/drowzee/normal.pal"
+INCLUDE "gfx/pokemon/drowzee/shiny.pal"
+INCLUDE "gfx/pokemon/hypno/normal.pal"
+INCLUDE "gfx/pokemon/hypno/shiny.pal"
+INCLUDE "gfx/pokemon/krabby/normal.pal"
+INCLUDE "gfx/pokemon/krabby/shiny.pal"
+INCLUDE "gfx/pokemon/kingler/normal.pal"
+INCLUDE "gfx/pokemon/kingler/shiny.pal"
+INCLUDE "gfx/pokemon/voltorb/normal.pal"
+INCLUDE "gfx/pokemon/voltorb/shiny.pal"
+INCLUDE "gfx/pokemon/electrode/normal.pal"
+INCLUDE "gfx/pokemon/electrode/shiny.pal"
+INCLUDE "gfx/pokemon/exeggcute/normal.pal"
+INCLUDE "gfx/pokemon/exeggcute/shiny.pal"
+INCLUDE "gfx/pokemon/exeggutor/normal.pal"
+INCLUDE "gfx/pokemon/exeggutor/shiny.pal"
+INCLUDE "gfx/pokemon/cubone/normal.pal"
+INCLUDE "gfx/pokemon/cubone/shiny.pal"
+INCLUDE "gfx/pokemon/marowak/normal.pal"
+INCLUDE "gfx/pokemon/marowak/shiny.pal"
+INCLUDE "gfx/pokemon/hitmonlee/normal.pal"
+INCLUDE "gfx/pokemon/hitmonlee/shiny.pal"
+INCLUDE "gfx/pokemon/hitmonchan/normal.pal"
+INCLUDE "gfx/pokemon/hitmonchan/shiny.pal"
+INCLUDE "gfx/pokemon/lickitung/normal.pal"
+INCLUDE "gfx/pokemon/lickitung/shiny.pal"
+INCLUDE "gfx/pokemon/koffing/normal.pal"
+INCLUDE "gfx/pokemon/koffing/shiny.pal"
+INCLUDE "gfx/pokemon/weezing/normal.pal"
+INCLUDE "gfx/pokemon/weezing/shiny.pal"
+INCLUDE "gfx/pokemon/rhyhorn/normal.pal"
+INCLUDE "gfx/pokemon/rhyhorn/shiny.pal"
+INCLUDE "gfx/pokemon/rhydon/normal.pal"
+INCLUDE "gfx/pokemon/rhydon/shiny.pal"
+INCLUDE "gfx/pokemon/chansey/normal.pal"
+INCLUDE "gfx/pokemon/chansey/shiny.pal"
+INCLUDE "gfx/pokemon/tangela/normal.pal"
+INCLUDE "gfx/pokemon/tangela/shiny.pal"
+INCLUDE "gfx/pokemon/kangaskhan/normal.pal"
+INCLUDE "gfx/pokemon/kangaskhan/shiny.pal"
+INCLUDE "gfx/pokemon/horsea/normal.pal"
+INCLUDE "gfx/pokemon/horsea/shiny.pal"
+INCLUDE "gfx/pokemon/seadra/normal.pal"
+INCLUDE "gfx/pokemon/seadra/shiny.pal"
+INCLUDE "gfx/pokemon/goldeen/normal.pal"
+INCLUDE "gfx/pokemon/goldeen/shiny.pal"
+INCLUDE "gfx/pokemon/seaking/normal.pal"
+INCLUDE "gfx/pokemon/seaking/shiny.pal"
+INCLUDE "gfx/pokemon/staryu/normal.pal"
+INCLUDE "gfx/pokemon/staryu/shiny.pal"
+INCLUDE "gfx/pokemon/starmie/normal.pal"
+INCLUDE "gfx/pokemon/starmie/shiny.pal"
+INCLUDE "gfx/pokemon/mr__mime/normal.pal"
+INCLUDE "gfx/pokemon/mr__mime/shiny.pal"
+INCLUDE "gfx/pokemon/scyther/normal.pal"
+INCLUDE "gfx/pokemon/scyther/shiny.pal"
+INCLUDE "gfx/pokemon/jynx/normal.pal"
+INCLUDE "gfx/pokemon/jynx/shiny.pal"
+INCLUDE "gfx/pokemon/electabuzz/normal.pal"
+INCLUDE "gfx/pokemon/electabuzz/shiny.pal"
+INCLUDE "gfx/pokemon/magmar/normal.pal"
+INCLUDE "gfx/pokemon/magmar/shiny.pal"
+INCLUDE "gfx/pokemon/pinsir/normal.pal"
+INCLUDE "gfx/pokemon/pinsir/shiny.pal"
+INCLUDE "gfx/pokemon/tauros/normal.pal"
+INCLUDE "gfx/pokemon/tauros/shiny.pal"
+INCLUDE "gfx/pokemon/magikarp/normal.pal"
+INCLUDE "gfx/pokemon/magikarp/shiny.pal"
+INCLUDE "gfx/pokemon/gyarados/normal.pal"
+INCLUDE "gfx/pokemon/gyarados/shiny.pal"
+INCLUDE "gfx/pokemon/lapras/normal.pal"
+INCLUDE "gfx/pokemon/lapras/shiny.pal"
+INCLUDE "gfx/pokemon/ditto/normal.pal"
+INCLUDE "gfx/pokemon/ditto/shiny.pal"
+INCLUDE "gfx/pokemon/eevee/normal.pal"
+INCLUDE "gfx/pokemon/eevee/shiny.pal"
+INCLUDE "gfx/pokemon/vaporeon/normal.pal"
+INCLUDE "gfx/pokemon/vaporeon/shiny.pal"
+INCLUDE "gfx/pokemon/jolteon/normal.pal"
+INCLUDE "gfx/pokemon/jolteon/shiny.pal"
+INCLUDE "gfx/pokemon/flareon/normal.pal"
+INCLUDE "gfx/pokemon/flareon/shiny.pal"
+INCLUDE "gfx/pokemon/porygon/normal.pal"
+INCLUDE "gfx/pokemon/porygon/shiny.pal"
+INCLUDE "gfx/pokemon/omanyte/normal.pal"
+INCLUDE "gfx/pokemon/omanyte/shiny.pal"
+INCLUDE "gfx/pokemon/omastar/normal.pal"
+INCLUDE "gfx/pokemon/omastar/shiny.pal"
+INCLUDE "gfx/pokemon/kabuto/normal.pal"
+INCLUDE "gfx/pokemon/kabuto/shiny.pal"
+INCLUDE "gfx/pokemon/kabutops/normal.pal"
+INCLUDE "gfx/pokemon/kabutops/shiny.pal"
+INCLUDE "gfx/pokemon/aerodactyl/normal.pal"
+INCLUDE "gfx/pokemon/aerodactyl/shiny.pal"
+INCLUDE "gfx/pokemon/snorlax/normal.pal"
+INCLUDE "gfx/pokemon/snorlax/shiny.pal"
+INCLUDE "gfx/pokemon/articuno/normal.pal"
+INCLUDE "gfx/pokemon/articuno/shiny.pal"
+INCLUDE "gfx/pokemon/zapdos/normal.pal"
+INCLUDE "gfx/pokemon/zapdos/shiny.pal"
+INCLUDE "gfx/pokemon/moltres/normal.pal"
+INCLUDE "gfx/pokemon/moltres/shiny.pal"
+INCLUDE "gfx/pokemon/dratini/normal.pal"
+INCLUDE "gfx/pokemon/dratini/shiny.pal"
+INCLUDE "gfx/pokemon/dragonair/normal.pal"
+INCLUDE "gfx/pokemon/dragonair/shiny.pal"
+INCLUDE "gfx/pokemon/dragonite/normal.pal"
+INCLUDE "gfx/pokemon/dragonite/shiny.pal"
+INCLUDE "gfx/pokemon/mewtwo/normal.pal"
+INCLUDE "gfx/pokemon/mewtwo/shiny.pal"
+INCLUDE "gfx/pokemon/mew/normal.pal"
+INCLUDE "gfx/pokemon/mew/shiny.pal"
+INCLUDE "gfx/pokemon/chikorita/normal.pal"
+INCLUDE "gfx/pokemon/chikorita/shiny.pal"
+INCLUDE "gfx/pokemon/bayleef/normal.pal"
+INCLUDE "gfx/pokemon/bayleef/shiny.pal"
+INCLUDE "gfx/pokemon/meganium/normal.pal"
+INCLUDE "gfx/pokemon/meganium/shiny.pal"
+INCLUDE "gfx/pokemon/cyndaquil/normal.pal"
+INCLUDE "gfx/pokemon/cyndaquil/shiny.pal"
+INCLUDE "gfx/pokemon/quilava/normal.pal"
+INCLUDE "gfx/pokemon/quilava/shiny.pal"
+INCLUDE "gfx/pokemon/typhlosion/normal.pal"
+INCLUDE "gfx/pokemon/typhlosion/shiny.pal"
+INCLUDE "gfx/pokemon/totodile/normal.pal"
+INCLUDE "gfx/pokemon/totodile/shiny.pal"
+INCLUDE "gfx/pokemon/croconaw/normal.pal"
+INCLUDE "gfx/pokemon/croconaw/shiny.pal"
+INCLUDE "gfx/pokemon/feraligatr/normal.pal"
+INCLUDE "gfx/pokemon/feraligatr/shiny.pal"
+INCLUDE "gfx/pokemon/sentret/normal.pal"
+INCLUDE "gfx/pokemon/sentret/shiny.pal"
+INCLUDE "gfx/pokemon/furret/normal.pal"
+INCLUDE "gfx/pokemon/furret/shiny.pal"
+INCLUDE "gfx/pokemon/hoothoot/normal.pal"
+INCLUDE "gfx/pokemon/hoothoot/shiny.pal"
+INCLUDE "gfx/pokemon/noctowl/normal.pal"
+INCLUDE "gfx/pokemon/noctowl/shiny.pal"
+INCLUDE "gfx/pokemon/ledyba/normal.pal"
+INCLUDE "gfx/pokemon/ledyba/shiny.pal"
+INCLUDE "gfx/pokemon/ledian/normal.pal"
+INCLUDE "gfx/pokemon/ledian/shiny.pal"
+INCLUDE "gfx/pokemon/spinarak/normal.pal"
+INCLUDE "gfx/pokemon/spinarak/shiny.pal"
+INCLUDE "gfx/pokemon/ariados/normal.pal"
+INCLUDE "gfx/pokemon/ariados/shiny.pal"
+INCLUDE "gfx/pokemon/crobat/normal.pal"
+INCLUDE "gfx/pokemon/crobat/shiny.pal"
+INCLUDE "gfx/pokemon/chinchou/normal.pal"
+INCLUDE "gfx/pokemon/chinchou/shiny.pal"
+INCLUDE "gfx/pokemon/lanturn/normal.pal"
+INCLUDE "gfx/pokemon/lanturn/shiny.pal"
+INCLUDE "gfx/pokemon/pichu/normal.pal"
+INCLUDE "gfx/pokemon/pichu/shiny.pal"
+INCLUDE "gfx/pokemon/cleffa/normal.pal"
+INCLUDE "gfx/pokemon/cleffa/shiny.pal"
+INCLUDE "gfx/pokemon/igglybuff/normal.pal"
+INCLUDE "gfx/pokemon/igglybuff/shiny.pal"
+INCLUDE "gfx/pokemon/togepi/normal.pal"
+INCLUDE "gfx/pokemon/togepi/shiny.pal"
+INCLUDE "gfx/pokemon/togetic/normal.pal"
+INCLUDE "gfx/pokemon/togetic/shiny.pal"
+INCLUDE "gfx/pokemon/natu/normal.pal"
+INCLUDE "gfx/pokemon/natu/shiny.pal"
+INCLUDE "gfx/pokemon/xatu/normal.pal"
+INCLUDE "gfx/pokemon/xatu/shiny.pal"
+INCLUDE "gfx/pokemon/mareep/normal.pal"
+INCLUDE "gfx/pokemon/mareep/shiny.pal"
+INCLUDE "gfx/pokemon/flaaffy/normal.pal"
+INCLUDE "gfx/pokemon/flaaffy/shiny.pal"
+INCLUDE "gfx/pokemon/ampharos/normal.pal"
+INCLUDE "gfx/pokemon/ampharos/shiny.pal"
+INCLUDE "gfx/pokemon/bellossom/normal.pal"
+INCLUDE "gfx/pokemon/bellossom/shiny.pal"
+INCLUDE "gfx/pokemon/marill/normal.pal"
+INCLUDE "gfx/pokemon/marill/shiny.pal"
+INCLUDE "gfx/pokemon/azumarill/normal.pal"
+INCLUDE "gfx/pokemon/azumarill/shiny.pal"
+INCLUDE "gfx/pokemon/sudowoodo/normal.pal"
+INCLUDE "gfx/pokemon/sudowoodo/shiny.pal"
+INCLUDE "gfx/pokemon/politoed/normal.pal"
+INCLUDE "gfx/pokemon/politoed/shiny.pal"
+INCLUDE "gfx/pokemon/hoppip/normal.pal"
+INCLUDE "gfx/pokemon/hoppip/shiny.pal"
+INCLUDE "gfx/pokemon/skiploom/normal.pal"
+INCLUDE "gfx/pokemon/skiploom/shiny.pal"
+INCLUDE "gfx/pokemon/jumpluff/normal.pal"
+INCLUDE "gfx/pokemon/jumpluff/shiny.pal"
+INCLUDE "gfx/pokemon/aipom/normal.pal"
+INCLUDE "gfx/pokemon/aipom/shiny.pal"
+INCLUDE "gfx/pokemon/sunkern/normal.pal"
+INCLUDE "gfx/pokemon/sunkern/shiny.pal"
+INCLUDE "gfx/pokemon/sunflora/normal.pal"
+INCLUDE "gfx/pokemon/sunflora/shiny.pal"
+INCLUDE "gfx/pokemon/yanma/normal.pal"
+INCLUDE "gfx/pokemon/yanma/shiny.pal"
+INCLUDE "gfx/pokemon/wooper/normal.pal"
+INCLUDE "gfx/pokemon/wooper/shiny.pal"
+INCLUDE "gfx/pokemon/quagsire/normal.pal"
+INCLUDE "gfx/pokemon/quagsire/shiny.pal"
+INCLUDE "gfx/pokemon/espeon/normal.pal"
+INCLUDE "gfx/pokemon/espeon/shiny.pal"
+INCLUDE "gfx/pokemon/umbreon/normal.pal"
+INCLUDE "gfx/pokemon/umbreon/shiny.pal"
+INCLUDE "gfx/pokemon/murkrow/normal.pal"
+INCLUDE "gfx/pokemon/murkrow/shiny.pal"
+INCLUDE "gfx/pokemon/slowking/normal.pal"
+INCLUDE "gfx/pokemon/slowking/shiny.pal"
+INCLUDE "gfx/pokemon/misdreavus/normal.pal"
+INCLUDE "gfx/pokemon/misdreavus/shiny.pal"
+INCLUDE "gfx/pokemon/unown/normal.pal"
+INCLUDE "gfx/pokemon/unown/shiny.pal"
+INCLUDE "gfx/pokemon/wobbuffet/normal.pal"
+INCLUDE "gfx/pokemon/wobbuffet/shiny.pal"
+INCLUDE "gfx/pokemon/girafarig/normal.pal"
+INCLUDE "gfx/pokemon/girafarig/shiny.pal"
+INCLUDE "gfx/pokemon/pineco/normal.pal"
+INCLUDE "gfx/pokemon/pineco/shiny.pal"
+INCLUDE "gfx/pokemon/forretress/normal.pal"
+INCLUDE "gfx/pokemon/forretress/shiny.pal"
+INCLUDE "gfx/pokemon/dunsparce/normal.pal"
+INCLUDE "gfx/pokemon/dunsparce/shiny.pal"
+INCLUDE "gfx/pokemon/gligar/normal.pal"
+INCLUDE "gfx/pokemon/gligar/shiny.pal"
+INCLUDE "gfx/pokemon/steelix/normal.pal"
+INCLUDE "gfx/pokemon/steelix/shiny.pal"
+INCLUDE "gfx/pokemon/snubbull/normal.pal"
+INCLUDE "gfx/pokemon/snubbull/shiny.pal"
+INCLUDE "gfx/pokemon/granbull/normal.pal"
+INCLUDE "gfx/pokemon/granbull/shiny.pal"
+INCLUDE "gfx/pokemon/qwilfish/normal.pal"
+INCLUDE "gfx/pokemon/qwilfish/shiny.pal"
+INCLUDE "gfx/pokemon/scizor/normal.pal"
+INCLUDE "gfx/pokemon/scizor/shiny.pal"
+INCLUDE "gfx/pokemon/shuckle/normal.pal"
+INCLUDE "gfx/pokemon/shuckle/shiny.pal"
+INCLUDE "gfx/pokemon/heracross/normal.pal"
+INCLUDE "gfx/pokemon/heracross/shiny.pal"
+INCLUDE "gfx/pokemon/sneasel/normal.pal"
+INCLUDE "gfx/pokemon/sneasel/shiny.pal"
+INCLUDE "gfx/pokemon/teddiursa/normal.pal"
+INCLUDE "gfx/pokemon/teddiursa/shiny.pal"
+INCLUDE "gfx/pokemon/ursaring/normal.pal"
+INCLUDE "gfx/pokemon/ursaring/shiny.pal"
+INCLUDE "gfx/pokemon/slugma/normal.pal"
+INCLUDE "gfx/pokemon/slugma/shiny.pal"
+INCLUDE "gfx/pokemon/magcargo/normal.pal"
+INCLUDE "gfx/pokemon/magcargo/shiny.pal"
+INCLUDE "gfx/pokemon/swinub/normal.pal"
+INCLUDE "gfx/pokemon/swinub/shiny.pal"
+INCLUDE "gfx/pokemon/piloswine/normal.pal"
+INCLUDE "gfx/pokemon/piloswine/shiny.pal"
+INCLUDE "gfx/pokemon/corsola/normal.pal"
+INCLUDE "gfx/pokemon/corsola/shiny.pal"
+INCLUDE "gfx/pokemon/remoraid/normal.pal"
+INCLUDE "gfx/pokemon/remoraid/shiny.pal"
+INCLUDE "gfx/pokemon/octillery/normal.pal"
+INCLUDE "gfx/pokemon/octillery/shiny.pal"
+INCLUDE "gfx/pokemon/delibird/normal.pal"
+INCLUDE "gfx/pokemon/delibird/shiny.pal"
+INCLUDE "gfx/pokemon/mantine/normal.pal"
+INCLUDE "gfx/pokemon/mantine/shiny.pal"
+INCLUDE "gfx/pokemon/skarmory/normal.pal"
+INCLUDE "gfx/pokemon/skarmory/shiny.pal"
+INCLUDE "gfx/pokemon/houndour/normal.pal"
+INCLUDE "gfx/pokemon/houndour/shiny.pal"
+INCLUDE "gfx/pokemon/houndoom/normal.pal"
+INCLUDE "gfx/pokemon/houndoom/shiny.pal"
+INCLUDE "gfx/pokemon/kingdra/normal.pal"
+INCLUDE "gfx/pokemon/kingdra/shiny.pal"
+INCLUDE "gfx/pokemon/phanpy/normal.pal"
+INCLUDE "gfx/pokemon/phanpy/shiny.pal"
+INCLUDE "gfx/pokemon/donphan/normal.pal"
+INCLUDE "gfx/pokemon/donphan/shiny.pal"
+INCLUDE "gfx/pokemon/porygon2/normal.pal"
+INCLUDE "gfx/pokemon/porygon2/shiny.pal"
+INCLUDE "gfx/pokemon/stantler/normal.pal"
+INCLUDE "gfx/pokemon/stantler/shiny.pal"
+INCLUDE "gfx/pokemon/smeargle/normal.pal"
+INCLUDE "gfx/pokemon/smeargle/shiny.pal"
+INCLUDE "gfx/pokemon/tyrogue/normal.pal"
+INCLUDE "gfx/pokemon/tyrogue/shiny.pal"
+INCLUDE "gfx/pokemon/hitmontop/normal.pal"
+INCLUDE "gfx/pokemon/hitmontop/shiny.pal"
+INCLUDE "gfx/pokemon/smoochum/normal.pal"
+INCLUDE "gfx/pokemon/smoochum/shiny.pal"
+INCLUDE "gfx/pokemon/elekid/normal.pal"
+INCLUDE "gfx/pokemon/elekid/shiny.pal"
+INCLUDE "gfx/pokemon/magby/normal.pal"
+INCLUDE "gfx/pokemon/magby/shiny.pal"
+INCLUDE "gfx/pokemon/miltank/normal.pal"
+INCLUDE "gfx/pokemon/miltank/shiny.pal"
+INCLUDE "gfx/pokemon/blissey/normal.pal"
+INCLUDE "gfx/pokemon/blissey/shiny.pal"
+INCLUDE "gfx/pokemon/raikou/normal.pal"
+INCLUDE "gfx/pokemon/raikou/shiny.pal"
+INCLUDE "gfx/pokemon/entei/normal.pal"
+INCLUDE "gfx/pokemon/entei/shiny.pal"
+INCLUDE "gfx/pokemon/suicune/normal.pal"
+INCLUDE "gfx/pokemon/suicune/shiny.pal"
+INCLUDE "gfx/pokemon/larvitar/normal.pal"
+INCLUDE "gfx/pokemon/larvitar/shiny.pal"
+INCLUDE "gfx/pokemon/pupitar/normal.pal"
+INCLUDE "gfx/pokemon/pupitar/shiny.pal"
+INCLUDE "gfx/pokemon/tyranitar/normal.pal"
+INCLUDE "gfx/pokemon/tyranitar/shiny.pal"
+INCLUDE "gfx/pokemon/lugia/normal.pal"
+INCLUDE "gfx/pokemon/lugia/shiny.pal"
+INCLUDE "gfx/pokemon/ho_oh/normal.pal"
+INCLUDE "gfx/pokemon/ho_oh/shiny.pal"
+INCLUDE "gfx/pokemon/celebi/normal.pal"
+INCLUDE "gfx/pokemon/celebi/shiny.pal"
+
+; 252
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+; 252 shiny
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+
+; Egg
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+; Egg shiny
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+
+; 254
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+; 254 shiny
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+
+; 255
+	RGB 23, 23, 23
+	RGB 17, 17, 17
+; 255 shiny
+	RGB 23, 23, 23
+	RGB 17, 17, 17
+
+; b0ce
--- /dev/null
+++ b/data/palettes/trainer_palettes.asm
@@ -1,0 +1,76 @@
+TrainerPalettes: ; b0ce
+; entries correspond to trainer classes
+
+PlayerPalette: ; b0ce
+; Chris uses the same colors as Cal
+INCLUDE "gfx/trainers/cal.pal"
+KrisPalette: ; b0d0
+; Kris shares Falkner's palette
+INCLUDE "gfx/trainers/falkner.pal"
+INCLUDE "gfx/trainers/whitney.pal"
+INCLUDE "gfx/trainers/bugsy.pal"
+INCLUDE "gfx/trainers/morty.pal"
+INCLUDE "gfx/trainers/pryce.pal"
+INCLUDE "gfx/trainers/jasmine.pal"
+INCLUDE "gfx/trainers/chuck.pal"
+INCLUDE "gfx/trainers/clair.pal"
+INCLUDE "gfx/trainers/rival1.pal"
+INCLUDE "gfx/trainers/oak.pal"
+INCLUDE "gfx/trainers/will.pal"
+INCLUDE "gfx/trainers/cal.pal"
+INCLUDE "gfx/trainers/bruno.pal"
+INCLUDE "gfx/trainers/karen.pal"
+INCLUDE "gfx/trainers/koga.pal"
+INCLUDE "gfx/trainers/champion.pal"
+INCLUDE "gfx/trainers/brock.pal"
+INCLUDE "gfx/trainers/misty.pal"
+INCLUDE "gfx/trainers/lt_surge.pal"
+INCLUDE "gfx/trainers/scientist.pal"
+INCLUDE "gfx/trainers/erika.pal"
+INCLUDE "gfx/trainers/youngster.pal"
+INCLUDE "gfx/trainers/schoolboy.pal"
+INCLUDE "gfx/trainers/bird_keeper.pal"
+INCLUDE "gfx/trainers/lass.pal"
+INCLUDE "gfx/trainers/janine.pal"
+INCLUDE "gfx/trainers/cooltrainer_m.pal"
+INCLUDE "gfx/trainers/cooltrainer_f.pal"
+INCLUDE "gfx/trainers/beauty.pal"
+INCLUDE "gfx/trainers/pokemaniac.pal"
+INCLUDE "gfx/trainers/grunt_m.pal"
+INCLUDE "gfx/trainers/gentleman.pal"
+INCLUDE "gfx/trainers/skier.pal"
+INCLUDE "gfx/trainers/teacher.pal"
+INCLUDE "gfx/trainers/sabrina.pal"
+INCLUDE "gfx/trainers/bug_catcher.pal"
+INCLUDE "gfx/trainers/fisher.pal"
+INCLUDE "gfx/trainers/swimmer_m.pal"
+INCLUDE "gfx/trainers/swimmer_f.pal"
+INCLUDE "gfx/trainers/sailor.pal"
+INCLUDE "gfx/trainers/super_nerd.pal"
+INCLUDE "gfx/trainers/rival2.pal"
+INCLUDE "gfx/trainers/guitarist.pal"
+INCLUDE "gfx/trainers/hiker.pal"
+INCLUDE "gfx/trainers/biker.pal"
+INCLUDE "gfx/trainers/blaine.pal"
+INCLUDE "gfx/trainers/burglar.pal"
+INCLUDE "gfx/trainers/firebreather.pal"
+INCLUDE "gfx/trainers/juggler.pal"
+INCLUDE "gfx/trainers/blackbelt_t.pal"
+INCLUDE "gfx/trainers/executive_m.pal"
+INCLUDE "gfx/trainers/psychic_t.pal"
+INCLUDE "gfx/trainers/picnicker.pal"
+INCLUDE "gfx/trainers/camper.pal"
+INCLUDE "gfx/trainers/executive_f.pal"
+INCLUDE "gfx/trainers/sage.pal"
+INCLUDE "gfx/trainers/medium.pal"
+INCLUDE "gfx/trainers/boarder.pal"
+INCLUDE "gfx/trainers/pokefan_m.pal"
+INCLUDE "gfx/trainers/kimono_girl.pal"
+INCLUDE "gfx/trainers/twins.pal"
+INCLUDE "gfx/trainers/pokefan_f.pal"
+INCLUDE "gfx/trainers/red.pal"
+INCLUDE "gfx/trainers/blue.pal"
+INCLUDE "gfx/trainers/officer.pal"
+INCLUDE "gfx/trainers/grunt_f.pal"
+INCLUDE "gfx/trainers/mysticalman.pal"
+; b1de
--- /dev/null
+++ b/data/pokemon/pic_pointers.asm
@@ -1,0 +1,511 @@
+PicPointers::
+; entries correspond to constants/pokemon_constants.asm, two apiece
+	dba_pic BulbasaurFrontpic
+	dba_pic BulbasaurBackpic
+	dba_pic IvysaurFrontpic
+	dba_pic IvysaurBackpic
+	dba_pic VenusaurFrontpic
+	dba_pic VenusaurBackpic
+	dba_pic CharmanderFrontpic
+	dba_pic CharmanderBackpic
+	dba_pic CharmeleonFrontpic
+	dba_pic CharmeleonBackpic
+	dba_pic CharizardFrontpic
+	dba_pic CharizardBackpic
+	dba_pic SquirtleFrontpic
+	dba_pic SquirtleBackpic
+	dba_pic WartortleFrontpic
+	dba_pic WartortleBackpic
+	dba_pic BlastoiseFrontpic
+	dba_pic BlastoiseBackpic
+	dba_pic CaterpieFrontpic
+	dba_pic CaterpieBackpic
+	dba_pic MetapodFrontpic
+	dba_pic MetapodBackpic
+	dba_pic ButterfreeFrontpic
+	dba_pic ButterfreeBackpic
+	dba_pic WeedleFrontpic
+	dba_pic WeedleBackpic
+	dba_pic KakunaFrontpic
+	dba_pic KakunaBackpic
+	dba_pic BeedrillFrontpic
+	dba_pic BeedrillBackpic
+	dba_pic PidgeyFrontpic
+	dba_pic PidgeyBackpic
+	dba_pic PidgeottoFrontpic
+	dba_pic PidgeottoBackpic
+	dba_pic PidgeotFrontpic
+	dba_pic PidgeotBackpic
+	dba_pic RattataFrontpic
+	dba_pic RattataBackpic
+	dba_pic RaticateFrontpic
+	dba_pic RaticateBackpic
+	dba_pic SpearowFrontpic
+	dba_pic SpearowBackpic
+	dba_pic FearowFrontpic
+	dba_pic FearowBackpic
+	dba_pic EkansFrontpic
+	dba_pic EkansBackpic
+	dba_pic ArbokFrontpic
+	dba_pic ArbokBackpic
+	dba_pic PikachuFrontpic
+	dba_pic PikachuBackpic
+	dba_pic RaichuFrontpic
+	dba_pic RaichuBackpic
+	dba_pic SandshrewFrontpic
+	dba_pic SandshrewBackpic
+	dba_pic SandslashFrontpic
+	dba_pic SandslashBackpic
+	dba_pic NidoranFFrontpic
+	dba_pic NidoranFBackpic
+	dba_pic NidorinaFrontpic
+	dba_pic NidorinaBackpic
+	dba_pic NidoqueenFrontpic
+	dba_pic NidoqueenBackpic
+	dba_pic NidoranMFrontpic
+	dba_pic NidoranMBackpic
+	dba_pic NidorinoFrontpic
+	dba_pic NidorinoBackpic
+	dba_pic NidokingFrontpic
+	dba_pic NidokingBackpic
+	dba_pic ClefairyFrontpic
+	dba_pic ClefairyBackpic
+	dba_pic ClefableFrontpic
+	dba_pic ClefableBackpic
+	dba_pic VulpixFrontpic
+	dba_pic VulpixBackpic
+	dba_pic NinetalesFrontpic
+	dba_pic NinetalesBackpic
+	dba_pic JigglypuffFrontpic
+	dba_pic JigglypuffBackpic
+	dba_pic WigglytuffFrontpic
+	dba_pic WigglytuffBackpic
+	dba_pic ZubatFrontpic
+	dba_pic ZubatBackpic
+	dba_pic GolbatFrontpic
+	dba_pic GolbatBackpic
+	dba_pic OddishFrontpic
+	dba_pic OddishBackpic
+	dba_pic GloomFrontpic
+	dba_pic GloomBackpic
+	dba_pic VileplumeFrontpic
+	dba_pic VileplumeBackpic
+	dba_pic ParasFrontpic
+	dba_pic ParasBackpic
+	dba_pic ParasectFrontpic
+	dba_pic ParasectBackpic
+	dba_pic VenonatFrontpic
+	dba_pic VenonatBackpic
+	dba_pic VenomothFrontpic
+	dba_pic VenomothBackpic
+	dba_pic DiglettFrontpic
+	dba_pic DiglettBackpic
+	dba_pic DugtrioFrontpic
+	dba_pic DugtrioBackpic
+	dba_pic MeowthFrontpic
+	dba_pic MeowthBackpic
+	dba_pic PersianFrontpic
+	dba_pic PersianBackpic
+	dba_pic PsyduckFrontpic
+	dba_pic PsyduckBackpic
+	dba_pic GolduckFrontpic
+	dba_pic GolduckBackpic
+	dba_pic MankeyFrontpic
+	dba_pic MankeyBackpic
+	dba_pic PrimeapeFrontpic
+	dba_pic PrimeapeBackpic
+	dba_pic GrowlitheFrontpic
+	dba_pic GrowlitheBackpic
+	dba_pic ArcanineFrontpic
+	dba_pic ArcanineBackpic
+	dba_pic PoliwagFrontpic
+	dba_pic PoliwagBackpic
+	dba_pic PoliwhirlFrontpic
+	dba_pic PoliwhirlBackpic
+	dba_pic PoliwrathFrontpic
+	dba_pic PoliwrathBackpic
+	dba_pic AbraFrontpic
+	dba_pic AbraBackpic
+	dba_pic KadabraFrontpic
+	dba_pic KadabraBackpic
+	dba_pic AlakazamFrontpic
+	dba_pic AlakazamBackpic
+	dba_pic MachopFrontpic
+	dba_pic MachopBackpic
+	dba_pic MachokeFrontpic
+	dba_pic MachokeBackpic
+	dba_pic MachampFrontpic
+	dba_pic MachampBackpic
+	dba_pic BellsproutFrontpic
+	dba_pic BellsproutBackpic
+	dba_pic WeepinbellFrontpic
+	dba_pic WeepinbellBackpic
+	dba_pic VictreebelFrontpic
+	dba_pic VictreebelBackpic
+	dba_pic TentacoolFrontpic
+	dba_pic TentacoolBackpic
+	dba_pic TentacruelFrontpic
+	dba_pic TentacruelBackpic
+	dba_pic GeodudeFrontpic
+	dba_pic GeodudeBackpic
+	dba_pic GravelerFrontpic
+	dba_pic GravelerBackpic
+	dba_pic GolemFrontpic
+	dba_pic GolemBackpic
+	dba_pic PonytaFrontpic
+	dba_pic PonytaBackpic
+	dba_pic RapidashFrontpic
+	dba_pic RapidashBackpic
+	dba_pic SlowpokeFrontpic
+	dba_pic SlowpokeBackpic
+	dba_pic SlowbroFrontpic
+	dba_pic SlowbroBackpic
+	dba_pic MagnemiteFrontpic
+	dba_pic MagnemiteBackpic
+	dba_pic MagnetonFrontpic
+	dba_pic MagnetonBackpic
+	dba_pic FarfetchDFrontpic
+	dba_pic FarfetchDBackpic
+	dba_pic DoduoFrontpic
+	dba_pic DoduoBackpic
+	dba_pic DodrioFrontpic
+	dba_pic DodrioBackpic
+	dba_pic SeelFrontpic
+	dba_pic SeelBackpic
+	dba_pic DewgongFrontpic
+	dba_pic DewgongBackpic
+	dba_pic GrimerFrontpic
+	dba_pic GrimerBackpic
+	dba_pic MukFrontpic
+	dba_pic MukBackpic
+	dba_pic ShellderFrontpic
+	dba_pic ShellderBackpic
+	dba_pic CloysterFrontpic
+	dba_pic CloysterBackpic
+	dba_pic GastlyFrontpic
+	dba_pic GastlyBackpic
+	dba_pic HaunterFrontpic
+	dba_pic HaunterBackpic
+	dba_pic GengarFrontpic
+	dba_pic GengarBackpic
+	dba_pic OnixFrontpic
+	dba_pic OnixBackpic
+	dba_pic DrowzeeFrontpic
+	dba_pic DrowzeeBackpic
+	dba_pic HypnoFrontpic
+	dba_pic HypnoBackpic
+	dba_pic KrabbyFrontpic
+	dba_pic KrabbyBackpic
+	dba_pic KinglerFrontpic
+	dba_pic KinglerBackpic
+	dba_pic VoltorbFrontpic
+	dba_pic VoltorbBackpic
+	dba_pic ElectrodeFrontpic
+	dba_pic ElectrodeBackpic
+	dba_pic ExeggcuteFrontpic
+	dba_pic ExeggcuteBackpic
+	dba_pic ExeggutorFrontpic
+	dba_pic ExeggutorBackpic
+	dba_pic CuboneFrontpic
+	dba_pic CuboneBackpic
+	dba_pic MarowakFrontpic
+	dba_pic MarowakBackpic
+	dba_pic HitmonleeFrontpic
+	dba_pic HitmonleeBackpic
+	dba_pic HitmonchanFrontpic
+	dba_pic HitmonchanBackpic
+	dba_pic LickitungFrontpic
+	dba_pic LickitungBackpic
+	dba_pic KoffingFrontpic
+	dba_pic KoffingBackpic
+	dba_pic WeezingFrontpic
+	dba_pic WeezingBackpic
+	dba_pic RhyhornFrontpic
+	dba_pic RhyhornBackpic
+	dba_pic RhydonFrontpic
+	dba_pic RhydonBackpic
+	dba_pic ChanseyFrontpic
+	dba_pic ChanseyBackpic
+	dba_pic TangelaFrontpic
+	dba_pic TangelaBackpic
+	dba_pic KangaskhanFrontpic
+	dba_pic KangaskhanBackpic
+	dba_pic HorseaFrontpic
+	dba_pic HorseaBackpic
+	dba_pic SeadraFrontpic
+	dba_pic SeadraBackpic
+	dba_pic GoldeenFrontpic
+	dba_pic GoldeenBackpic
+	dba_pic SeakingFrontpic
+	dba_pic SeakingBackpic
+	dba_pic StaryuFrontpic
+	dba_pic StaryuBackpic
+	dba_pic StarmieFrontpic
+	dba_pic StarmieBackpic
+	dba_pic MrMimeFrontpic
+	dba_pic MrMimeBackpic
+	dba_pic ScytherFrontpic
+	dba_pic ScytherBackpic
+	dba_pic JynxFrontpic
+	dba_pic JynxBackpic
+	dba_pic ElectabuzzFrontpic
+	dba_pic ElectabuzzBackpic
+	dba_pic MagmarFrontpic
+	dba_pic MagmarBackpic
+	dba_pic PinsirFrontpic
+	dba_pic PinsirBackpic
+	dba_pic TaurosFrontpic
+	dba_pic TaurosBackpic
+	dba_pic MagikarpFrontpic
+	dba_pic MagikarpBackpic
+	dba_pic GyaradosFrontpic
+	dba_pic GyaradosBackpic
+	dba_pic LaprasFrontpic
+	dba_pic LaprasBackpic
+	dba_pic DittoFrontpic
+	dba_pic DittoBackpic
+	dba_pic EeveeFrontpic
+	dba_pic EeveeBackpic
+	dba_pic VaporeonFrontpic
+	dba_pic VaporeonBackpic
+	dba_pic JolteonFrontpic
+	dba_pic JolteonBackpic
+	dba_pic FlareonFrontpic
+	dba_pic FlareonBackpic
+	dba_pic PorygonFrontpic
+	dba_pic PorygonBackpic
+	dba_pic OmanyteFrontpic
+	dba_pic OmanyteBackpic
+	dba_pic OmastarFrontpic
+	dba_pic OmastarBackpic
+	dba_pic KabutoFrontpic
+	dba_pic KabutoBackpic
+	dba_pic KabutopsFrontpic
+	dba_pic KabutopsBackpic
+	dba_pic AerodactylFrontpic
+	dba_pic AerodactylBackpic
+	dba_pic SnorlaxFrontpic
+	dba_pic SnorlaxBackpic
+	dba_pic ArticunoFrontpic
+	dba_pic ArticunoBackpic
+	dba_pic ZapdosFrontpic
+	dba_pic ZapdosBackpic
+	dba_pic MoltresFrontpic
+	dba_pic MoltresBackpic
+	dba_pic DratiniFrontpic
+	dba_pic DratiniBackpic
+	dba_pic DragonairFrontpic
+	dba_pic DragonairBackpic
+	dba_pic DragoniteFrontpic
+	dba_pic DragoniteBackpic
+	dba_pic MewtwoFrontpic
+	dba_pic MewtwoBackpic
+	dba_pic MewFrontpic
+	dba_pic MewBackpic
+	dba_pic ChikoritaFrontpic
+	dba_pic ChikoritaBackpic
+	dba_pic BayleefFrontpic
+	dba_pic BayleefBackpic
+	dba_pic MeganiumFrontpic
+	dba_pic MeganiumBackpic
+	dba_pic CyndaquilFrontpic
+	dba_pic CyndaquilBackpic
+	dba_pic QuilavaFrontpic
+	dba_pic QuilavaBackpic
+	dba_pic TyphlosionFrontpic
+	dba_pic TyphlosionBackpic
+	dba_pic TotodileFrontpic
+	dba_pic TotodileBackpic
+	dba_pic CroconawFrontpic
+	dba_pic CroconawBackpic
+	dba_pic FeraligatrFrontpic
+	dba_pic FeraligatrBackpic
+	dba_pic SentretFrontpic
+	dba_pic SentretBackpic
+	dba_pic FurretFrontpic
+	dba_pic FurretBackpic
+	dba_pic HoothootFrontpic
+	dba_pic HoothootBackpic
+	dba_pic NoctowlFrontpic
+	dba_pic NoctowlBackpic
+	dba_pic LedybaFrontpic
+	dba_pic LedybaBackpic
+	dba_pic LedianFrontpic
+	dba_pic LedianBackpic
+	dba_pic SpinarakFrontpic
+	dba_pic SpinarakBackpic
+	dba_pic AriadosFrontpic
+	dba_pic AriadosBackpic
+	dba_pic CrobatFrontpic
+	dba_pic CrobatBackpic
+	dba_pic ChinchouFrontpic
+	dba_pic ChinchouBackpic
+	dba_pic LanturnFrontpic
+	dba_pic LanturnBackpic
+	dba_pic PichuFrontpic
+	dba_pic PichuBackpic
+	dba_pic CleffaFrontpic
+	dba_pic CleffaBackpic
+	dba_pic IgglybuffFrontpic
+	dba_pic IgglybuffBackpic
+	dba_pic TogepiFrontpic
+	dba_pic TogepiBackpic
+	dba_pic TogeticFrontpic
+	dba_pic TogeticBackpic
+	dba_pic NatuFrontpic
+	dba_pic NatuBackpic
+	dba_pic XatuFrontpic
+	dba_pic XatuBackpic
+	dba_pic MareepFrontpic
+	dba_pic MareepBackpic
+	dba_pic FlaaffyFrontpic
+	dba_pic FlaaffyBackpic
+	dba_pic AmpharosFrontpic
+	dba_pic AmpharosBackpic
+	dba_pic BellossomFrontpic
+	dba_pic BellossomBackpic
+	dba_pic MarillFrontpic
+	dba_pic MarillBackpic
+	dba_pic AzumarillFrontpic
+	dba_pic AzumarillBackpic
+	dba_pic SudowoodoFrontpic
+	dba_pic SudowoodoBackpic
+	dba_pic PolitoedFrontpic
+	dba_pic PolitoedBackpic
+	dba_pic HoppipFrontpic
+	dba_pic HoppipBackpic
+	dba_pic SkiploomFrontpic
+	dba_pic SkiploomBackpic
+	dba_pic JumpluffFrontpic
+	dba_pic JumpluffBackpic
+	dba_pic AipomFrontpic
+	dba_pic AipomBackpic
+	dba_pic SunkernFrontpic
+	dba_pic SunkernBackpic
+	dba_pic SunfloraFrontpic
+	dba_pic SunfloraBackpic
+	dba_pic YanmaFrontpic
+	dba_pic YanmaBackpic
+	dba_pic WooperFrontpic
+	dba_pic WooperBackpic
+	dba_pic QuagsireFrontpic
+	dba_pic QuagsireBackpic
+	dba_pic EspeonFrontpic
+	dba_pic EspeonBackpic
+	dba_pic UmbreonFrontpic
+	dba_pic UmbreonBackpic
+	dba_pic MurkrowFrontpic
+	dba_pic MurkrowBackpic
+	dba_pic SlowkingFrontpic
+	dba_pic SlowkingBackpic
+	dba_pic MisdreavusFrontpic
+	dba_pic MisdreavusBackpic
+
+	; Unown pics have their own table. See UnownPicPointers
+	dbw -1, -1
+	dbw -1, -1
+
+	dba_pic WobbuffetFrontpic
+	dba_pic WobbuffetBackpic
+	dba_pic GirafarigFrontpic
+	dba_pic GirafarigBackpic
+	dba_pic PinecoFrontpic
+	dba_pic PinecoBackpic
+	dba_pic ForretressFrontpic
+	dba_pic ForretressBackpic
+	dba_pic DunsparceFrontpic
+	dba_pic DunsparceBackpic
+	dba_pic GligarFrontpic
+	dba_pic GligarBackpic
+	dba_pic SteelixFrontpic
+	dba_pic SteelixBackpic
+	dba_pic SnubbullFrontpic
+	dba_pic SnubbullBackpic
+	dba_pic GranbullFrontpic
+	dba_pic GranbullBackpic
+	dba_pic QwilfishFrontpic
+	dba_pic QwilfishBackpic
+	dba_pic ScizorFrontpic
+	dba_pic ScizorBackpic
+	dba_pic ShuckleFrontpic
+	dba_pic ShuckleBackpic
+	dba_pic HeracrossFrontpic
+	dba_pic HeracrossBackpic
+	dba_pic SneaselFrontpic
+	dba_pic SneaselBackpic
+	dba_pic TeddiursaFrontpic
+	dba_pic TeddiursaBackpic
+	dba_pic UrsaringFrontpic
+	dba_pic UrsaringBackpic
+	dba_pic SlugmaFrontpic
+	dba_pic SlugmaBackpic
+	dba_pic MagcargoFrontpic
+	dba_pic MagcargoBackpic
+	dba_pic SwinubFrontpic
+	dba_pic SwinubBackpic
+	dba_pic PiloswineFrontpic
+	dba_pic PiloswineBackpic
+	dba_pic CorsolaFrontpic
+	dba_pic CorsolaBackpic
+	dba_pic RemoraidFrontpic
+	dba_pic RemoraidBackpic
+	dba_pic OctilleryFrontpic
+	dba_pic OctilleryBackpic
+	dba_pic DelibirdFrontpic
+	dba_pic DelibirdBackpic
+	dba_pic MantineFrontpic
+	dba_pic MantineBackpic
+	dba_pic SkarmoryFrontpic
+	dba_pic SkarmoryBackpic
+	dba_pic HoundourFrontpic
+	dba_pic HoundourBackpic
+	dba_pic HoundoomFrontpic
+	dba_pic HoundoomBackpic
+	dba_pic KingdraFrontpic
+	dba_pic KingdraBackpic
+	dba_pic PhanpyFrontpic
+	dba_pic PhanpyBackpic
+	dba_pic DonphanFrontpic
+	dba_pic DonphanBackpic
+	dba_pic Porygon2Frontpic
+	dba_pic Porygon2Backpic
+	dba_pic StantlerFrontpic
+	dba_pic StantlerBackpic
+	dba_pic SmeargleFrontpic
+	dba_pic SmeargleBackpic
+	dba_pic TyrogueFrontpic
+	dba_pic TyrogueBackpic
+	dba_pic HitmontopFrontpic
+	dba_pic HitmontopBackpic
+	dba_pic SmoochumFrontpic
+	dba_pic SmoochumBackpic
+	dba_pic ElekidFrontpic
+	dba_pic ElekidBackpic
+	dba_pic MagbyFrontpic
+	dba_pic MagbyBackpic
+	dba_pic MiltankFrontpic
+	dba_pic MiltankBackpic
+	dba_pic BlisseyFrontpic
+	dba_pic BlisseyBackpic
+	dba_pic RaikouFrontpic
+	dba_pic RaikouBackpic
+	dba_pic EnteiFrontpic
+	dba_pic EnteiBackpic
+	dba_pic SuicuneFrontpic
+	dba_pic SuicuneBackpic
+	dba_pic LarvitarFrontpic
+	dba_pic LarvitarBackpic
+	dba_pic PupitarFrontpic
+	dba_pic PupitarBackpic
+	dba_pic TyranitarFrontpic
+	dba_pic TyranitarBackpic
+	dba_pic LugiaFrontpic
+	dba_pic LugiaBackpic
+	dba_pic HoOhFrontpic
+	dba_pic HoOhBackpic
+	dba_pic CelebiFrontpic
+	dba_pic CelebiBackpic
+	dbw -1, -1 ; unused
+	dbw -1, -1 ; unused
+	dba_pic EggPic
+	dbw -1, -1 ; unused
--- /dev/null
+++ b/data/pokemon/unown_pic_pointers.asm
@@ -1,0 +1,54 @@
+UnownPicPointers::
+; entries correspond to Unown letters, two apiece
+	dba_pic UnownAFrontpic
+	dba_pic UnownABackpic
+	dba_pic UnownBFrontpic
+	dba_pic UnownBBackpic
+	dba_pic UnownCFrontpic
+	dba_pic UnownCBackpic
+	dba_pic UnownDFrontpic
+	dba_pic UnownDBackpic
+	dba_pic UnownEFrontpic
+	dba_pic UnownEBackpic
+	dba_pic UnownFFrontpic
+	dba_pic UnownFBackpic
+	dba_pic UnownGFrontpic
+	dba_pic UnownGBackpic
+	dba_pic UnownHFrontpic
+	dba_pic UnownHBackpic
+	dba_pic UnownIFrontpic
+	dba_pic UnownIBackpic
+	dba_pic UnownJFrontpic
+	dba_pic UnownJBackpic
+	dba_pic UnownKFrontpic
+	dba_pic UnownKBackpic
+	dba_pic UnownLFrontpic
+	dba_pic UnownLBackpic
+	dba_pic UnownMFrontpic
+	dba_pic UnownMBackpic
+	dba_pic UnownNFrontpic
+	dba_pic UnownNBackpic
+	dba_pic UnownOFrontpic
+	dba_pic UnownOBackpic
+	dba_pic UnownPFrontpic
+	dba_pic UnownPBackpic
+	dba_pic UnownQFrontpic
+	dba_pic UnownQBackpic
+	dba_pic UnownRFrontpic
+	dba_pic UnownRBackpic
+	dba_pic UnownSFrontpic
+	dba_pic UnownSBackpic
+	dba_pic UnownTFrontpic
+	dba_pic UnownTBackpic
+	dba_pic UnownUFrontpic
+	dba_pic UnownUBackpic
+	dba_pic UnownVFrontpic
+	dba_pic UnownVBackpic
+	dba_pic UnownWFrontpic
+	dba_pic UnownWBackpic
+	dba_pic UnownXFrontpic
+	dba_pic UnownXBackpic
+	dba_pic UnownYFrontpic
+	dba_pic UnownYBackpic
+	dba_pic UnownZFrontpic
+	dba_pic UnownZBackpic
--- /dev/null
+++ b/data/sprite_anims/framesets.asm
@@ -1,0 +1,499 @@
+SpriteAnimFrameData: ; 8d6e6
+; entries correspond to SPRITE_ANIM_FRAMESET_* constants
+	dw .Frameset_00
+	dw .Frameset_PartyMon
+	dw .Frameset_PartyMonWithMail
+	dw .Frameset_PartyMonWithItem
+	dw .Frameset_PartyMonFast
+	dw .Frameset_PartyMonWithMailFast
+	dw .Frameset_PartyMonWithItemFast
+	dw .Frameset_GSTitleTrail
+	dw .Frameset_TextEntryCursor
+	dw .Frameset_09
+	dw .Frameset_GameFreakLogo
+	dw .Frameset_GSIntroStar
+	dw .Frameset_GSIntroSparkle
+	dw .Frameset_SlotsGolem
+	dw .Frameset_SlotsChansey
+	dw .Frameset_SlotsChansey2
+	dw .Frameset_SlotsEgg
+	dw .Frameset_RedWalk
+	dw .Frameset_StillCursor
+	dw .Frameset_TradePokeBall
+	dw .Frameset_TradePokeBall0
+	dw .Frameset_TradePoof
+	dw .Frameset_TradeTubeBulge
+	dw .Frameset_TrademonIcon
+	dw .Frameset_TrademonBubble
+	dw .Frameset_EvolutionBallOfLight
+	dw .Frameset_RadioTuningKnob
+	dw .Frameset_MagnetTrainRed
+	dw .Frameset_1c
+	dw .Frameset_Leaf
+	dw .Frameset_CutTree
+	dw .Frameset_EggCrack
+	dw .Frameset_EggHatch
+	dw .Frameset_21
+	dw .Frameset_22
+	dw .Frameset_23
+	dw .Frameset_24
+	dw .Frameset_HeadbuttTree
+	dw .Frameset_26
+	dw .Frameset_27
+	dw .Frameset_28
+	dw .Frameset_29
+	dw .Frameset_2a
+	dw .Frameset_2b
+	dw .Frameset_2c
+	dw .Frameset_BlueWalk
+	dw .Frameset_MagnetTrainBlue
+	dw .Frameset_MobileTradeSentBall
+	dw .Frameset_MobileTradeOTBall
+	dw .Frameset_ForMobile22
+	dw .Frameset_ForMobile23
+	dw .Frameset_ForMobile24
+	dw .Frameset_ForMobile25
+	dw .Frameset_IntroSuicune
+	dw .Frameset_IntroSuicune2
+	dw .Frameset_IntroPichu
+	dw .Frameset_IntroWooper
+	dw .Frameset_IntroUnown1
+	dw .Frameset_IntroUnown2
+	dw .Frameset_IntroUnown3
+	dw .Frameset_IntroUnown4
+	dw .Frameset_IntroUnownF2
+	dw .Frameset_IntroSuicuneAway
+	dw .Frameset_IntroUnownF
+	dw .Frameset_CelebiLeft
+	dw .Frameset_CelebiRight
+; 8d76a
+
+.Frameset_00:
+	frame SPRITE_ANIM_OAMSET_RED_WALK_1, 32
+	endanim
+
+.Frameset_PartyMon:
+	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
+	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8
+	dorestart
+
+.Frameset_PartyMonWithMail:
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1,  8
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2,  8
+	dorestart
+
+.Frameset_PartyMonWithItem:
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1,  8
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2,  8
+	dorestart
+
+.Frameset_PartyMonFast:
+	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  4
+	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  4
+	dorestart
+
+.Frameset_PartyMonWithMailFast:
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1,  4
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2,  4
+	dorestart
+
+.Frameset_PartyMonWithItemFast:
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1,  4
+	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2,  4
+	dorestart
+
+.Frameset_RedWalk:
+	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
+	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8
+	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
+	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_BlueWalk:
+	frame SPRITE_ANIM_OAMSET_BLUE_WALK_1,  8
+	frame SPRITE_ANIM_OAMSET_BLUE_WALK_2,  8
+	frame SPRITE_ANIM_OAMSET_BLUE_WALK_1,  8
+	frame SPRITE_ANIM_OAMSET_BLUE_WALK_2,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_MagnetTrainBlue:
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_GSTitleTrail:
+	frame SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1,  1
+	frame SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2,  1
+	dorestart
+
+.Frameset_TextEntryCursor:
+	frame SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR,  1
+	dorepeat  1
+	dorestart
+
+.Frameset_09:
+	frame SPRITE_ANIM_OAMSET_FOR_FRAMESET_09,  1
+	dorepeat  1
+	dorestart
+
+.Frameset_GameFreakLogo:
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1,  12
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,   1
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3,   1
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,   4
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1,  12
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,  12
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3,   4
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4,  32
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5,   3
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6,   3
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7,   4
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8,   4
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9,   4
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10, 10
+	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11,  7
+	endanim
+
+.Frameset_GSIntroStar:
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_STAR,  3
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_STAR,  3, OAM_Y_FLIP
+	dorestart
+
+.Frameset_GSIntroSparkle:
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1,  2
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2,  2
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3,  2
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2,  2
+	dorestart
+
+.Frameset_SlotsGolem:
+	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1,  7, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2,  7, OAM_X_FLIP
+	dorestart
+
+.Frameset_SlotsChansey:
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3,  7
+	dorestart
+
+.Frameset_SlotsChansey2:
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4,  7
+	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
+	endanim
+
+.Frameset_SlotsEgg:
+	frame SPRITE_ANIM_OAMSET_SLOTS_EGG, 20
+	endanim
+
+.Frameset_StillCursor:
+	frame SPRITE_ANIM_OAMSET_STILL_CURSOR, 32
+	endanim
+
+.Frameset_TradePokeBall:
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 32
+	endanim
+
+.Frameset_TradePokeBall0:
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	dorestart
+
+.Frameset_TradePoof:
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  4
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  4
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  4
+	delanim
+
+.Frameset_TradeTubeBulge:
+	frame SPRITE_ANIM_OAMSET_35,  3
+	frame SPRITE_ANIM_OAMSET_36,  3
+	dorestart
+
+.Frameset_TrademonIcon:
+	frame SPRITE_ANIM_OAMSET_TRADEMON_ICON_1,  7
+	frame SPRITE_ANIM_OAMSET_TRADEMON_ICON_2,  7
+	dorestart
+
+.Frameset_TrademonBubble:
+	frame SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE, 32
+	endanim
+
+.Frameset_EvolutionBallOfLight:
+	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2,  2
+	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1,  2
+	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2,  2
+	endanim
+
+.Frameset_RadioTuningKnob:
+	frame SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB, 32
+	endanim
+
+.Frameset_MagnetTrainRed:
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1,  8
+	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2,  8, OAM_X_FLIP
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_43,  8
+	frame SPRITE_ANIM_OAMSET_44,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_45,  8
+	frame SPRITE_ANIM_OAMSET_46,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_47,  8
+	frame SPRITE_ANIM_OAMSET_48,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_49,  1
+	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_49,  1, OAM_Y_FLIP
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_4A, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_4B, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_4C, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_4D, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_OAMSET_4E,  3
+	dorepeat  3
+	dorestart
+
+.Frameset_1c:
+	dorepeat 32
+	endanim
+
+.Frameset_Leaf:
+	frame SPRITE_ANIM_OAMSET_LEAF, 32
+	endanim
+
+.Frameset_CutTree:
+	frame SPRITE_ANIM_OAMSET_TREE_1,      2
+	frame SPRITE_ANIM_OAMSET_CUT_TREE_2, 16
+	dorepeat  1
+	frame SPRITE_ANIM_OAMSET_CUT_TREE_3,  1
+	dorepeat  1
+	frame SPRITE_ANIM_OAMSET_CUT_TREE_4,  1
+	delanim
+
+.Frameset_EggCrack:
+	frame SPRITE_ANIM_OAMSET_EGG_CRACK, 32
+	endanim
+
+.Frameset_EggHatch:
+	frame SPRITE_ANIM_OAMSET_55, 32
+	endanim
+
+.Frameset_21:
+	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP
+	endanim
+
+.Frameset_22:
+	frame SPRITE_ANIM_OAMSET_55, 32, OAM_Y_FLIP
+	endanim
+
+.Frameset_23:
+	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP, OAM_Y_FLIP
+	endanim
+
+.Frameset_24:
+	frame SPRITE_ANIM_OAMSET_56, 10
+	frame SPRITE_ANIM_OAMSET_57,  9
+	frame SPRITE_ANIM_OAMSET_58, 10
+	frame SPRITE_ANIM_OAMSET_59, 10
+	frame SPRITE_ANIM_OAMSET_58,  9
+	frame SPRITE_ANIM_OAMSET_5A, 10
+	dorestart
+
+.Frameset_HeadbuttTree:
+	frame SPRITE_ANIM_OAMSET_TREE_1,           2
+	frame SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2,  2
+	frame SPRITE_ANIM_OAMSET_TREE_1,           2
+	frame SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2,  2, OAM_X_FLIP
+	dorestart
+
+.Frameset_26:
+	frame SPRITE_ANIM_OAMSET_5C,  2
+	endanim
+
+.Frameset_27:
+	frame SPRITE_ANIM_OAMSET_5D,  2
+	endanim
+
+.Frameset_28:
+	frame SPRITE_ANIM_OAMSET_5E,  2
+	endanim
+
+.Frameset_29:
+	frame SPRITE_ANIM_OAMSET_5F,  2
+	endanim
+
+.Frameset_2a:
+	frame SPRITE_ANIM_OAMSET_60,  2
+	endanim
+
+.Frameset_2b:
+	frame SPRITE_ANIM_OAMSET_61,  2
+	endanim
+
+.Frameset_2c:
+	frame SPRITE_ANIM_OAMSET_62,  2
+	endanim
+
+.Frameset_MobileTradeSentBall:
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	endanim
+
+.Frameset_MobileTradeOTBall:
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  3
+	delanim
+
+.Frameset_ForMobile22:
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1,  3
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2,  3
+	dorestart
+
+.Frameset_ForMobile23:
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_23,  3
+	endanim
+
+.Frameset_ForMobile24:
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_24,  3
+	endanim
+
+.Frameset_ForMobile25:
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1,  2
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2,  2
+	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3,  2
+	delanim
+
+.Frameset_IntroSuicune:
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4,  3
+	dorestart
+
+.Frameset_IntroSuicune2:
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1,  7
+	endanim
+
+.Frameset_IntroPichu:
+	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_1, 32
+	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_2,  7
+	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_3,  7
+	endanim
+
+.Frameset_IntroWooper:
+	frame SPRITE_ANIM_OAMSET_INTRO_WOOPER,  3
+	endanim
+
+.Frameset_IntroUnown1:
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7
+	delanim
+
+.Frameset_IntroUnown2:
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_X_FLIP
+	delanim
+
+.Frameset_IntroUnown3:
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_Y_FLIP
+	delanim
+
+.Frameset_IntroUnown4:
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_X_FLIP, OAM_Y_FLIP
+	delanim
+
+.Frameset_IntroUnownF2:
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3,  3
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4,  7
+	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5,  7
+	endanim
+
+.Frameset_IntroSuicuneAway:
+	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY,  3
+	endanim
+
+.Frameset_IntroUnownF:
+	dorepeat 0
+	endanim
+
+.Frameset_CelebiLeft:
+	frame SPRITE_ANIM_OAMSET_CELEBI_1,  8
+	frame SPRITE_ANIM_OAMSET_CELEBI_2,  8
+	endanim
+
+.Frameset_CelebiRight:
+	frame SPRITE_ANIM_OAMSET_CELEBI_1,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_CELEBI_2,  8, OAM_X_FLIP
+	endanim
+; 8d94d
--- /dev/null
+++ b/data/sprite_anims/oam.asm
@@ -1,0 +1,1131 @@
+SpriteAnimOAMData: ; 8d94d
+; entries correspond to SPRITE_ANIM_OAMSET_* constants
+	; vtile offset, pointer
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_1
+	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_2
+	dbw $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_02
+	dbw $5c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_03
+	dbw $6c, .OAMData_04 ; SPRITE_ANIM_OAMSET_04
+	dbw $6e, .OAMData_04 ; SPRITE_ANIM_OAMSET_05
+	dbw $2d, .OAMData_06 ; SPRITE_ANIM_OAMSET_06
+	dbw $4d, .OAMData_06 ; SPRITE_ANIM_OAMSET_07
+	dbw $60, .OAMData_08 ; SPRITE_ANIM_OAMSET_08
+	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_09
+	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_0A
+	dbw $06, .OAMData_08 ; SPRITE_ANIM_OAMSET_0B
+	dbw $0c, .OAMData_0c ; SPRITE_ANIM_OAMSET_0C
+	dbw $0d, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_0D
+	dbw $00, .OAMData_0e ; SPRITE_ANIM_OAMSET_0E
+	dbw $04, .OAMData_0e ; SPRITE_ANIM_OAMSET_0F
+	dbw $08, .OAMData_0e ; SPRITE_ANIM_OAMSET_10
+	dbw $40, .OAMData_0e ; SPRITE_ANIM_OAMSET_11
+	dbw $44, .OAMData_0e ; SPRITE_ANIM_OAMSET_12
+	dbw $48, .OAMData_0e ; SPRITE_ANIM_OAMSET_13
+	dbw $4c, .OAMData_0e ; SPRITE_ANIM_OAMSET_14
+	dbw $80, .OAMData_15 ; SPRITE_ANIM_OAMSET_15
+	dbw $85, .OAMData_15 ; SPRITE_ANIM_OAMSET_16
+	dbw $8a, .OAMData_15 ; SPRITE_ANIM_OAMSET_17
+	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_18
+	dbw $01, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_19
+	dbw $09, .OAMData_1a ; SPRITE_ANIM_OAMSET_1A
+	dbw $10, .OAMData_1b ; SPRITE_ANIM_OAMSET_1B
+	dbw $29, .OAMData_1b ; SPRITE_ANIM_OAMSET_1C
+	dbw $42, .OAMData_1b ; SPRITE_ANIM_OAMSET_1D
+	dbw $f8, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1
+	dbw $fa, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2
+	dbw $00, .OAMData_TextEntryCursor ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR
+	dbw $00, .OAMData_ForFrameset09 ; SPRITE_ANIM_OAMSET_FOR_FRAMESET_09
+	dbw $00, .OAMData_22 ; SPRITE_ANIM_OAMSET_22
+	dbw $0f, .OAMData_GSIntroStar ; SPRITE_ANIM_OAMSET_GS_INTRO_STAR
+	dbw $11, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1
+	dbw $12, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2
+	dbw $13, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3
+	dbw $00, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1
+	dbw $08, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2
+	dbw $10, .OAMData_SlotsChansey1 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1
+	dbw $10, .OAMData_SlotsChansey2 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2
+	dbw $10, .OAMData_SlotsChansey3 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3
+	dbw $10, .OAMData_SlotsChansey4 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4
+	dbw $10, .OAMData_SlotsChansey5 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5
+	dbw $3a, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_SLOTS_EGG
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_STILL_CURSOR
+	dbw $00, .OAMData_TradePokeBall1 ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1
+	dbw $02, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2
+	dbw $06, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_1
+	dbw $0a, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_2
+	dbw $0e, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_3
+	dbw $12, .OAMData_35 ; SPRITE_ANIM_OAMSET_35
+	dbw $13, .OAMData_35 ; SPRITE_ANIM_OAMSET_36
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_1
+	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_2
+	dbw $10, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE
+	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1
+	dbw $04, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2
+	dbw $00, .OAMData_RadioTuningKnob ; SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB
+	dbw $00, .OAMData_PartyMonWithMail1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1
+	dbw $00, .OAMData_PartyMonWithMail2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2
+	dbw $00, .OAMData_PartyMonWithItem1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1
+	dbw $00, .OAMData_PartyMonWithItem2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2
+	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1
+	dbw $04, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2
+	dbw $00, .OAMData_43 ; SPRITE_ANIM_OAMSET_43
+	dbw $30, .OAMData_43 ; SPRITE_ANIM_OAMSET_44
+	dbw $03, .OAMData_43 ; SPRITE_ANIM_OAMSET_45
+	dbw $33, .OAMData_43 ; SPRITE_ANIM_OAMSET_46
+	dbw $06, .OAMData_43 ; SPRITE_ANIM_OAMSET_47
+	dbw $36, .OAMData_43 ; SPRITE_ANIM_OAMSET_48
+	dbw $09, .OAMData_43 ; SPRITE_ANIM_OAMSET_49
+	dbw $39, .OAMData_43 ; SPRITE_ANIM_OAMSET_4A
+	dbw $0c, .OAMData_4b ; SPRITE_ANIM_OAMSET_4B
+	dbw $0c, .OAMData_4c ; SPRITE_ANIM_OAMSET_4C
+	dbw $3c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4D
+	dbw $3e, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4E
+	dbw $00, .OAMData_Leaf ; SPRITE_ANIM_OAMSET_LEAF
+	dbw $00, .OAMData_Tree ; SPRITE_ANIM_OAMSET_TREE_1
+	dbw $00, .OAMData_CutTree2 ; SPRITE_ANIM_OAMSET_CUT_TREE_2
+	dbw $00, .OAMData_CutTree3 ; SPRITE_ANIM_OAMSET_CUT_TREE_3
+	dbw $00, .OAMData_CutTree4 ; SPRITE_ANIM_OAMSET_CUT_TREE_4
+	dbw $00, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EGG_CRACK
+	dbw $01, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_55
+	dbw $00, .OAMData_56 ; SPRITE_ANIM_OAMSET_56
+	dbw $00, .OAMData_57 ; SPRITE_ANIM_OAMSET_57
+	dbw $00, .OAMData_58 ; SPRITE_ANIM_OAMSET_58
+	dbw $00, .OAMData_59 ; SPRITE_ANIM_OAMSET_59
+	dbw $00, .OAMData_5a ; SPRITE_ANIM_OAMSET_5A
+	dbw $04, .OAMData_Tree ; SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2
+	dbw $00, .OAMData_5c ; SPRITE_ANIM_OAMSET_5C
+	dbw $00, .OAMData_5d ; SPRITE_ANIM_OAMSET_5D
+	dbw $00, .OAMData_5e ; SPRITE_ANIM_OAMSET_5E
+	dbw $00, .OAMData_5f ; SPRITE_ANIM_OAMSET_5F
+	dbw $00, .OAMData_60 ; SPRITE_ANIM_OAMSET_60
+	dbw $00, .OAMData_61 ; SPRITE_ANIM_OAMSET_61
+	dbw $00, .OAMData_62 ; SPRITE_ANIM_OAMSET_62
+	dbw $00, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_1
+	dbw $04, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_2
+	dbw $00, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1
+	dbw $04, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2
+	dbw $20, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1
+	dbw $21, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2
+	dbw $22, .OAMData_ForMobile25_1 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1
+	dbw $23, .OAMData_ForMobile25_2 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2
+	dbw $27, .OAMData_ForMobile25_3 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3
+	dbw $2a, .OAMData_ForMobile23 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_23
+	dbw $2a, .OAMData_ForMobile24 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_24
+	dbw $00, .OAMData_IntroSuicune1 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1
+	dbw $08, .OAMData_IntroSuicune2 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2
+	dbw $60, .OAMData_IntroSuicune3 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3
+	dbw $68, .OAMData_IntroSuicune4 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4
+	dbw $00, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_1
+	dbw $05, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_2
+	dbw $0a, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_3
+	dbw $50, .OAMData_IntroWooper ; SPRITE_ANIM_OAMSET_INTRO_WOOPER
+	dbw $00, .OAMData_IntroUnown1 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_1
+	dbw $01, .OAMData_IntroUnown2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_2
+	dbw $04, .OAMData_IntroUnown3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_3
+	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1
+	dbw $01, .OAMData_IntroUnownF2_2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2
+	dbw $03, .OAMData_IntroUnownF2_3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3
+	dbw $08, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4
+	dbw $1c, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5
+	dbw $80, .OAMData_IntroSuicuneAway ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY
+	dbw $00, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_1
+	dbw $04, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_2
+	dbw $d0, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1
+	dbw $d3, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2
+	dbw $d6, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3
+	dbw $6c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4
+	dbw $68, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5
+	dbw $64, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6
+	dbw $60, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7
+	dbw $0c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8
+	dbw $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9
+	dbw $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10
+	dbw $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11
+
+.OAMData_1x1_Palette0:
+	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_GSIntroStar:
+	db 4
+	dsprite -1,  0, -1,  0, $00, 0
+	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -1,  0, $01, 0
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP
+
+.OAMData_TradePokeBall1:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $00, $a0
+	dsprite  0,  0, -1,  0, $01, $80
+	dsprite  0,  0,  0,  0, $01, $a0
+
+.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_TradePoofBubble:
+	db 16
+	dsprite -2,  0, -2,  0, $00, 0
+	dsprite -2,  0, -1,  0, $01, 0
+	dsprite -1,  0, -2,  0, $02, 0
+	dsprite -1,  0, -1,  0, $03, 0
+	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -2,  0,  1,  0, $00, 0 | X_FLIP
+	dsprite -1,  0,  0,  0, $03, 0 | X_FLIP
+	dsprite -1,  0,  1,  0, $02, 0 | X_FLIP
+	dsprite  0,  0, -2,  0, $02, 0 | Y_FLIP
+	dsprite  0,  0, -1,  0, $03, 0 | Y_FLIP
+	dsprite  1,  0, -2,  0, $00, 0 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $03, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  1,  0, $02, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
+
+.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_RedWalk:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $02, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
+
+.OAMData_MagnetTrainRed:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED | BEHIND_BG
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED | BEHIND_BG
+	dsprite  0,  0, -1,  0, $02, PAL_OW_RED | BEHIND_BG
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED | BEHIND_BG
+
+.OAMData_PartyMonWithMail1:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
+
+.OAMData_PartyMonWithMail2:
+	db 4
+	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
+
+.OAMData_PartyMonWithItem1:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
+
+.OAMData_PartyMonWithItem2:
+	db 4
+	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
+
+.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_Leaf:
+	db 1
+	dsprite -1,  4, -1,  4, $00, PAL_OW_TREE
+
+.OAMData_Tree:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  0, $01, PAL_OW_TREE
+	dsprite  0,  0, -1,  0, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  0, $03, PAL_OW_TREE
+
+.OAMData_TextEntryCursor:
+	db 4
+	dsprite -1,  7, -1,  7, $00, 0
+	dsprite -1,  7,  0,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -1,  7, $00, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
+
+.OAMData_ForFrameset09:
+	db 10
+	dsprite -1,  7,  0,  0, $00, 0
+	dsprite -1,  7,  1,  0, $01, 0
+	dsprite -1,  7,  2,  0, $01, 0
+	dsprite -1,  7,  3,  0, $01, 0
+	dsprite -1,  7,  4,  0, $00, 0 | X_FLIP
+	dsprite  0,  0,  0,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0,  1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  2,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  3,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  4,  0, $00, 0 | X_FLIP | Y_FLIP
+
+.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_SlotsGolem:
+	db 6
+	dsprite -2,  4, -2,  4, $00, 5 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 5 | OBP_NUM
+	dsprite -2,  4,  0,  4, $00, 5 | OBP_NUM | X_FLIP
+	dsprite  0,  4, -2,  4, $04, 5 | OBP_NUM
+	dsprite  0,  4, -1,  4, $06, 5 | OBP_NUM
+	dsprite  0,  4,  0,  4, $04, 5 | OBP_NUM | X_FLIP
+
+.OAMData_SlotsChansey1:
+	db 6
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $06, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $08, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $0a, 6 | OBP_NUM
+
+.OAMData_SlotsChansey2:
+	db 6
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $0c, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $0e, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $10, 6 | OBP_NUM
+
+.OAMData_SlotsChansey3:
+	db 6
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $12, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $14, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $16, 6 | OBP_NUM
+
+.OAMData_SlotsChansey4:
+	db 6
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $18, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $1a, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $1c, 6 | OBP_NUM
+
+.OAMData_SlotsChansey5:
+	db 6
+	dsprite -2,  4, -2,  4, $1e, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $20, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $22, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $24, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $26, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $28, 6 | OBP_NUM
+
+.OAMData_RadioTuningKnob:
+	db 3
+	dsprite -2,  4, -1,  4, $00, 0 | OBP_NUM
+	dsprite -1,  4, -1,  4, $00, 0 | OBP_NUM
+	dsprite  0,  4, -1,  4, $00, 0 | OBP_NUM
+
+.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_CutTree2:
+	db 4
+	dsprite -1,  0, -2,  6, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  2, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  6, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  2, $03, PAL_OW_TREE
+
+.OAMData_CutTree3:
+	db 4
+	dsprite -1,  0, -2,  4, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  4, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  4, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  4, $03, PAL_OW_TREE
+
+.OAMData_CutTree4:
+	db 4
+	dsprite -1,  0, -2,  0, $00, PAL_OW_TREE
+	dsprite -1,  0,  1,  0, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  0, $02, PAL_OW_TREE
+	dsprite  0,  0,  1,  0, $03, PAL_OW_TREE
+
+.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_GSTitleTrail:
+	db 1
+	dsprite -1,  4, -1,  4, $00, 1 | OBP_NUM
+
+.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_BlueWalk:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE
+	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE
+	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE
+	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE
+
+.OAMData_MagnetTrainBlue:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE | BEHIND_BG
+	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE | BEHIND_BG
+	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE | BEHIND_BG
+	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE | BEHIND_BG
+
+.OAMData_ForMobile22:
+	db 1
+	dsprite -1,  4, -1,  4, $00, 2
+
+.OAMData_ForMobile23:
+	db 4
+	dsprite -2,  0, -1,  4, $00, 3
+	dsprite -1,  0, -1,  4, $01, 3
+	dsprite  0,  0, -1,  4, $02, 3
+	dsprite  1,  0, -1,  4, $03, 3
+
+.OAMData_ForMobile24:
+	db 4
+	dsprite -2,  0, -1,  4, $03, 4 | Y_FLIP
+	dsprite -1,  0, -1,  4, $02, 4 | Y_FLIP
+	dsprite  0,  0, -1,  4, $01, 4 | Y_FLIP
+	dsprite  1,  0, -1,  4, $00, 4 | Y_FLIP
+
+.OAMData_ForMobile25_1:
+	db 4
+	dsprite -1,  0, -1,  0, $00, 1
+	dsprite -1,  0,  0,  0, $00, 1 | X_FLIP
+	dsprite  0,  0, -1,  0, $00, 1 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 1 | X_FLIP | Y_FLIP
+
+.OAMData_ForMobile25_2:
+	db 8
+	dsprite -2,  4, -2,  4, $00, 1
+	dsprite -2,  4, -1,  4, $01, 1
+	dsprite -2,  4,  0,  4, $00, 1 | X_FLIP
+	dsprite -1,  4, -2,  4, $02, 1
+	dsprite -1,  4,  0,  4, $02, 1 | X_FLIP
+	dsprite  0,  4, -2,  4, $00, 1 | Y_FLIP
+	dsprite  0,  4, -1,  4, $01, 1 | Y_FLIP
+	dsprite  0,  4,  0,  4, $00, 1 | X_FLIP | Y_FLIP
+
+.OAMData_ForMobile25_3:
+	db 12
+	dsprite -2,  0, -2,  0, $00, 1
+	dsprite -2,  0, -1,  0, $01, 1
+	dsprite -1,  0, -2,  0, $02, 1
+	dsprite -2,  0,  0,  0, $01, 1 | X_FLIP
+	dsprite -2,  0,  1,  0, $00, 1 | X_FLIP
+	dsprite -1,  0,  1,  0, $02, 1 | X_FLIP
+	dsprite  0,  0, -2,  0, $02, 1 | Y_FLIP
+	dsprite  1,  0, -2,  0, $00, 1 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 1 | Y_FLIP
+	dsprite  0,  0,  1,  0, $02, 1 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 1 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  1,  0, $00, 1 | X_FLIP | Y_FLIP
+
+.OAMData_IntroSuicune1:
+	db 36
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -3,  0,  2,  0, $06, 0
+	dsprite -3,  0,  3,  0, $07, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite -1,  0,  3,  0, $27, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  0,  0,  2,  0, $36, 0
+	dsprite  1,  0, -4,  0, $40, 0
+	dsprite  1,  0, -3,  0, $41, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  1,  0,  2,  0, $46, 0
+	dsprite  1,  0,  3,  0, $47, 0
+	dsprite  2,  0, -4,  0, $50, 0
+	dsprite  2,  0, -3,  0, $51, 0
+	dsprite  2,  0,  3,  0, $57, 0
+
+.OAMData_IntroSuicune2:
+	db 28
+	dsprite -3,  0,  0,  0, $04, 0
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -3,  0,  2,  0, $06, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -1,  0, $53, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
+
+.OAMData_IntroSuicune3:
+	db 30
+	dsprite -3,  0,  0,  0, $04, 0
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -2,  0, $52, 0
+	dsprite  2,  0, -1,  0, $53, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
+
+.OAMData_IntroSuicune4:
+	db 31
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite -1,  0,  3,  0, $27, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  0,  0,  2,  0, $36, 0
+	dsprite  1,  0, -3,  0, $41, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -3,  0, $51, 0
+	dsprite  2,  0, -2,  0, $52, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
+
+.OAMData_IntroPichu:
+	db 25
+	dsprite -3,  4, -3,  4, $00, 1 | VRAM_BANK_1
+	dsprite -3,  4, -2,  4, $01, 1 | VRAM_BANK_1
+	dsprite -3,  4, -1,  4, $02, 1 | VRAM_BANK_1
+	dsprite -3,  4,  0,  4, $03, 1 | VRAM_BANK_1
+	dsprite -3,  4,  1,  4, $04, 1 | VRAM_BANK_1
+	dsprite -2,  4, -3,  4, $10, 1 | VRAM_BANK_1
+	dsprite -2,  4, -2,  4, $11, 1 | VRAM_BANK_1
+	dsprite -2,  4, -1,  4, $12, 1 | VRAM_BANK_1
+	dsprite -2,  4,  0,  4, $13, 1 | VRAM_BANK_1
+	dsprite -2,  4,  1,  4, $14, 1 | VRAM_BANK_1
+	dsprite -1,  4, -3,  4, $20, 1 | VRAM_BANK_1
+	dsprite -1,  4, -2,  4, $21, 1 | VRAM_BANK_1
+	dsprite -1,  4, -1,  4, $22, 1 | VRAM_BANK_1
+	dsprite -1,  4,  0,  4, $23, 1 | VRAM_BANK_1
+	dsprite -1,  4,  1,  4, $24, 1 | VRAM_BANK_1
+	dsprite  0,  4, -3,  4, $30, 1 | VRAM_BANK_1
+	dsprite  0,  4, -2,  4, $31, 1 | VRAM_BANK_1
+	dsprite  0,  4, -1,  4, $32, 1 | VRAM_BANK_1
+	dsprite  0,  4,  0,  4, $33, 1 | VRAM_BANK_1
+	dsprite  0,  4,  1,  4, $34, 1 | VRAM_BANK_1
+	dsprite  1,  4, -3,  4, $40, 1 | VRAM_BANK_1
+	dsprite  1,  4, -2,  4, $41, 1 | VRAM_BANK_1
+	dsprite  1,  4, -1,  4, $42, 1 | VRAM_BANK_1
+	dsprite  1,  4,  0,  4, $43, 1 | VRAM_BANK_1
+	dsprite  1,  4,  1,  4, $44, 1 | VRAM_BANK_1
+
+.OAMData_IntroWooper:
+	db 16
+	dsprite -2,  0, -3,  4, $00, 2 | VRAM_BANK_1
+	dsprite -2,  0, -2,  4, $01, 2 | VRAM_BANK_1
+	dsprite -2,  0, -1,  4, $02, 2 | VRAM_BANK_1
+	dsprite -2,  0,  0,  4, $03, 2 | VRAM_BANK_1
+	dsprite -1,  0, -3,  4, $04, 2 | VRAM_BANK_1
+	dsprite -1,  0, -2,  4, $05, 2 | VRAM_BANK_1
+	dsprite -1,  0, -1,  4, $06, 2 | VRAM_BANK_1
+	dsprite -1,  0,  0,  4, $07, 2 | VRAM_BANK_1
+	dsprite  0,  0, -3,  4, $08, 2 | VRAM_BANK_1
+	dsprite  0,  0, -2,  4, $09, 2 | VRAM_BANK_1
+	dsprite  0,  0, -1,  4, $0a, 2 | VRAM_BANK_1
+	dsprite  0,  0,  0,  4, $0b, 2 | VRAM_BANK_1
+	dsprite  1,  0, -3,  4, $0c, 2 | VRAM_BANK_1
+	dsprite  1,  0, -2,  4, $0d, 2 | VRAM_BANK_1
+	dsprite  1,  0, -1,  4, $0e, 2 | VRAM_BANK_1
+	dsprite  1,  0,  0,  4, $0f, 2 | VRAM_BANK_1
+
+.OAMData_IntroUnown1:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $00
+
+.OAMData_IntroUnown2:
+	db 3
+	dsprite  0,  0, -1,  0, $00, $00
+	dsprite -1,  0, -1,  0, $01, $00
+	dsprite -1,  0,  0,  0, $02, $00
+
+.OAMData_IntroUnown3:
+	db 7
+	dsprite  1,  0, -2,  0, $00, $00
+	dsprite  0,  0, -2,  0, $01, $00
+	dsprite -1,  0, -2,  0, $02, $00
+	dsprite -1,  0, -1,  0, $03, $00
+	dsprite -2,  0, -1,  0, $04, $00
+	dsprite -2,  0,  0,  0, $05, $00
+	dsprite -2,  0,  1,  0, $06, $00
+
+.OAMData_IntroUnownF2_2:
+	db 8
+	dsprite -1,  0, -2,  0, $00, 0
+	dsprite -1,  0, -1,  0, $01, 0
+	dsprite -1,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -1,  0,  1,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -2,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
+
+.OAMData_IntroUnownF2_3:
+	db 12
+	dsprite -3,  0, -1,  0, $00, 0
+	dsprite -2,  0, -1,  0, $01, 0
+	dsprite -1,  0, -1,  0, $02, 0
+	dsprite -3,  0,  0,  0, $00, 0 | X_FLIP
+	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -1,  0,  0,  0, $02, 0 | X_FLIP
+	dsprite  0,  0, -1,  0, $02, 0 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  2,  0, -1,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $02, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  2,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
+
+.OAMData_IntroUnownF2_4_5:
+	db 20
+	dsprite -3,  4, -2,  0, $00, 0
+	dsprite -3,  4, -1,  0, $01, 0
+	dsprite -3,  4,  0,  0, $02, 0
+	dsprite -3,  4,  1,  0, $03, 0
+	dsprite -2,  4, -2,  0, $04, 0
+	dsprite -2,  4, -1,  0, $05, 0
+	dsprite -2,  4,  0,  0, $06, 0
+	dsprite -2,  4,  1,  0, $07, 0
+	dsprite -1,  4, -2,  0, $08, 0
+	dsprite -1,  4, -1,  0, $09, 0
+	dsprite -1,  4,  0,  0, $0a, 0
+	dsprite -1,  4,  1,  0, $0b, 0
+	dsprite  0,  4, -2,  0, $0c, 0
+	dsprite  0,  4, -1,  0, $0d, 0
+	dsprite  0,  4,  0,  0, $0e, 0
+	dsprite  0,  4,  1,  0, $0f, 0
+	dsprite  1,  4, -2,  0, $10, 0
+	dsprite  1,  4, -1,  0, $11, 0
+	dsprite  1,  4,  0,  0, $12, 0
+	dsprite  1,  4,  1,  0, $13, 0
+
+.OAMData_IntroSuicuneAway:
+	db 20
+	dsprite  0,  0,   1,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,   2,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,   3,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,   4,  0, $00, 1 | BEHIND_BG
+	dsprite  4,  0,   5,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,   6,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,   7,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,   8,  0, $00, 1 | BEHIND_BG
+	dsprite  0,  0,   9,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,  10,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,  11,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,  12,  0, $00, 1 | BEHIND_BG
+	dsprite  4,  0,  13,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,  14,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,  15,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,  16,  0, $00, 1 | BEHIND_BG
+	dsprite  0,  0, -15,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0, -14,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0, -13,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0, -12,  0, $00, 1 | BEHIND_BG
+
+.OAMData_Celebi:
+	db 4
+	dsprite -1,  0, -1,  0, $00, PAL_OW_GREEN
+	dsprite -1,  0,  0,  0, $01, PAL_OW_GREEN
+	dsprite  0,  0, -1,  0, $02, PAL_OW_GREEN
+	dsprite  0,  0,  0,  0, $03, PAL_OW_GREEN
+
+.OAMData_GameFreakLogo1_3:
+	db 9
+	dsprite -2,  0, -2,  4, $00, 1
+	dsprite -2,  0, -1,  4, $01, 1
+	dsprite -2,  0,  0,  4, $02, 1
+	dsprite -1,  0, -2,  4, $10, 1
+	dsprite -1,  0, -1,  4, $11, 1
+	dsprite -1,  0,  0,  4, $12, 1
+	dsprite  0,  0, -2,  4, $20, 1
+	dsprite  0,  0, -1,  4, $21, 1
+	dsprite  0,  0,  0,  4, $22, 1
+
+.OAMData_GameFreakLogo4_11:
+	db 24
+	dsprite -5,  0, -2,  4, $00, 1
+	dsprite -5,  0, -1,  4, $01, 1
+	dsprite -5,  0,  0,  4, $02, 1
+	dsprite -5,  0,  1,  4, $03, 1
+	dsprite -4,  0, -2,  4, $10, 1
+	dsprite -4,  0, -1,  4, $11, 1
+	dsprite -4,  0,  0,  4, $12, 1
+	dsprite -4,  0,  1,  4, $13, 1
+	dsprite -3,  0, -2,  4, $20, 1
+	dsprite -3,  0, -1,  4, $21, 1
+	dsprite -3,  0,  0,  4, $22, 1
+	dsprite -3,  0,  1,  4, $23, 1
+	dsprite -2,  0, -2,  4, $30, 1
+	dsprite -2,  0, -1,  4, $31, 1
+	dsprite -2,  0,  0,  4, $32, 1
+	dsprite -2,  0,  1,  4, $33, 1
+	dsprite -1,  0, -2,  4, $40, 1
+	dsprite -1,  0, -1,  4, $41, 1
+	dsprite -1,  0,  0,  4, $42, 1
+	dsprite -1,  0,  1,  4, $43, 1
+	dsprite  0,  0, -2,  4, $50, 1
+	dsprite  0,  0, -1,  4, $51, 1
+	dsprite  0,  0,  0,  4, $52, 1
+	dsprite  0,  0,  1,  4, $53, 1
+; 8e706
--- /dev/null
+++ b/data/sprite_anims/sequences.asm
@@ -1,0 +1,49 @@
+SpriteAnimSeqData: ; 8d1c4
+; entries correspond to SPRITE_ANIM_INDEX_* constants
+	; frameset sequence, tile
+	db SPRITE_ANIM_FRAMESET_PARTY_MON,               SPRITE_ANIM_SEQ_PARTY_MON,            $00 ; SPRITE_ANIM_INDEX_PARTY_MON
+	db SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL,          SPRITE_ANIM_SEQ_GS_TITLE_TRAIL,       $00 ; SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05 ; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
+	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO,          SPRITE_ANIM_SEQ_GAMEFREAK_LOGO,       $00 ; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR,           SPRITE_ANIM_SEQ_GS_INTRO_STAR,        $06 ; SPRITE_ANIM_INDEX_GS_INTRO_STAR
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE,        SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE,     $06 ; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
+	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM,             SPRITE_ANIM_SEQ_SLOTS_GOLEM,          $07 ; SPRITE_ANIM_INDEX_SLOTS_GOLEM
+	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY,           SPRITE_ANIM_SEQ_SLOTS_CHANSEY,        $07 ; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+	db SPRITE_ANIM_FRAMESET_SLOTS_EGG,               SPRITE_ANIM_SEQ_SLOTS_EGG,            $07 ; SPRITE_ANIM_INDEX_SLOTS_EGG
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_MAIL_CURSOR,          $05 ; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	db SPRITE_ANIM_FRAMESET_RED_WALK,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_RED_WALK
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR,    $08 ; SPRITE_ANIM_INDEX_UNUSED_CURSOR
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR,    $08 ; SPRITE_ANIM_INDEX_DUMMY_GAME
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_POKEGEAR_ARROW,       $08 ; SPRITE_ANIM_INDEX_POKEGEAR_ARROW
+	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL,         SPRITE_ANIM_SEQ_TRADE_POKE_BALL,      $00 ; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
+	db SPRITE_ANIM_FRAMESET_TRADE_POOF,              SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_TRADE_POOF
+	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE,        SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE,     $00 ; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
+	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON,           SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_ICON
+	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE,         SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
+	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
+	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB,       SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB,    $00 ; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED,        SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
+	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_CUT_LEAVES,           $00 ; SPRITE_ANIM_INDEX_LEAF
+	db SPRITE_ANIM_FRAMESET_CUT_TREE,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CUT_TREE
+	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_FLY_LEAF,             $00 ; SPRITE_ANIM_INDEX_FLY_LEAF
+	db SPRITE_ANIM_FRAMESET_EGG_CRACK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_EGG_CRACK
+	db SPRITE_ANIM_FRAMESET_24,                      SPRITE_ANIM_SEQ_19,                   $00 ; SPRITE_ANIM_INDEX_1A
+	db SPRITE_ANIM_FRAMESET_HEADBUTT,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_HEADBUTT
+	db SPRITE_ANIM_FRAMESET_EGG_HATCH,               SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EGG_HATCH
+	db SPRITE_ANIM_FRAMESET_26,                      SPRITE_ANIM_SEQ_1A,                   $00 ; SPRITE_ANIM_INDEX_1D
+	db SPRITE_ANIM_FRAMESET_BLUE_WALK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_BLUE_WALK
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE,       SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL,  SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL,    SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_22,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_22
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_23,           SPRITE_ANIM_SEQ_FOR_MOBILE_23,        $00 ; SPRITE_ANIM_INDEX_MOBILE_23
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_24,           SPRITE_ANIM_SEQ_FOR_MOBILE_24,        $00 ; SPRITE_ANIM_INDEX_MOBILE_24
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_25,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_25
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE,           SPRITE_ANIM_SEQ_INTRO_SUICUNE,        $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE
+	db SPRITE_ANIM_FRAMESET_INTRO_PICHU,             SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_PICHU
+	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER,            SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_WOOPER
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1,           SPRITE_ANIM_SEQ_INTRO_UNOWN,          $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F,           SPRITE_ANIM_SEQ_INTRO_UNOWN_F,        $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY,      SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY,   $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
+	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT,             SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CELEBI
+; 8d24b
--- a/data/sprites/framesets.asm
+++ /dev/null
@@ -1,499 +1,0 @@
-SpriteAnimFrameData: ; 8d6e6
-; entries correspond to SPRITE_ANIM_FRAMESET_* constants
-	dw .Frameset_00
-	dw .Frameset_PartyMon
-	dw .Frameset_PartyMonWithMail
-	dw .Frameset_PartyMonWithItem
-	dw .Frameset_PartyMonFast
-	dw .Frameset_PartyMonWithMailFast
-	dw .Frameset_PartyMonWithItemFast
-	dw .Frameset_GSTitleTrail
-	dw .Frameset_TextEntryCursor
-	dw .Frameset_09
-	dw .Frameset_GameFreakLogo
-	dw .Frameset_GSIntroStar
-	dw .Frameset_GSIntroSparkle
-	dw .Frameset_SlotsGolem
-	dw .Frameset_SlotsChansey
-	dw .Frameset_SlotsChansey2
-	dw .Frameset_SlotsEgg
-	dw .Frameset_RedWalk
-	dw .Frameset_StillCursor
-	dw .Frameset_TradePokeBall
-	dw .Frameset_TradePokeBall0
-	dw .Frameset_TradePoof
-	dw .Frameset_TradeTubeBulge
-	dw .Frameset_TrademonIcon
-	dw .Frameset_TrademonBubble
-	dw .Frameset_EvolutionBallOfLight
-	dw .Frameset_RadioTuningKnob
-	dw .Frameset_MagnetTrainRed
-	dw .Frameset_1c
-	dw .Frameset_Leaf
-	dw .Frameset_CutTree
-	dw .Frameset_EggCrack
-	dw .Frameset_EggHatch
-	dw .Frameset_21
-	dw .Frameset_22
-	dw .Frameset_23
-	dw .Frameset_24
-	dw .Frameset_HeadbuttTree
-	dw .Frameset_26
-	dw .Frameset_27
-	dw .Frameset_28
-	dw .Frameset_29
-	dw .Frameset_2a
-	dw .Frameset_2b
-	dw .Frameset_2c
-	dw .Frameset_BlueWalk
-	dw .Frameset_MagnetTrainBlue
-	dw .Frameset_MobileTradeSentBall
-	dw .Frameset_MobileTradeOTBall
-	dw .Frameset_ForMobile22
-	dw .Frameset_ForMobile23
-	dw .Frameset_ForMobile24
-	dw .Frameset_ForMobile25
-	dw .Frameset_IntroSuicune
-	dw .Frameset_IntroSuicune2
-	dw .Frameset_IntroPichu
-	dw .Frameset_IntroWooper
-	dw .Frameset_IntroUnown1
-	dw .Frameset_IntroUnown2
-	dw .Frameset_IntroUnown3
-	dw .Frameset_IntroUnown4
-	dw .Frameset_IntroUnownF2
-	dw .Frameset_IntroSuicuneAway
-	dw .Frameset_IntroUnownF
-	dw .Frameset_CelebiLeft
-	dw .Frameset_CelebiRight
-; 8d76a
-
-.Frameset_00:
-	frame SPRITE_ANIM_OAMSET_RED_WALK_1, 32
-	endanim
-
-.Frameset_PartyMon:
-	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
-	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8
-	dorestart
-
-.Frameset_PartyMonWithMail:
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1,  8
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2,  8
-	dorestart
-
-.Frameset_PartyMonWithItem:
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1,  8
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2,  8
-	dorestart
-
-.Frameset_PartyMonFast:
-	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  4
-	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  4
-	dorestart
-
-.Frameset_PartyMonWithMailFast:
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1,  4
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2,  4
-	dorestart
-
-.Frameset_PartyMonWithItemFast:
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1,  4
-	frame SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2,  4
-	dorestart
-
-.Frameset_RedWalk:
-	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
-	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8
-	frame SPRITE_ANIM_OAMSET_RED_WALK_1,  8
-	frame SPRITE_ANIM_OAMSET_RED_WALK_2,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_BlueWalk:
-	frame SPRITE_ANIM_OAMSET_BLUE_WALK_1,  8
-	frame SPRITE_ANIM_OAMSET_BLUE_WALK_2,  8
-	frame SPRITE_ANIM_OAMSET_BLUE_WALK_1,  8
-	frame SPRITE_ANIM_OAMSET_BLUE_WALK_2,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_MagnetTrainBlue:
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_GSTitleTrail:
-	frame SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1,  1
-	frame SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2,  1
-	dorestart
-
-.Frameset_TextEntryCursor:
-	frame SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR,  1
-	dorepeat  1
-	dorestart
-
-.Frameset_09:
-	frame SPRITE_ANIM_OAMSET_FOR_FRAMESET_09,  1
-	dorepeat  1
-	dorestart
-
-.Frameset_GameFreakLogo:
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1,  12
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,   1
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3,   1
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,   4
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1,  12
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2,  12
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3,   4
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4,  32
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5,   3
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6,   3
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7,   4
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8,   4
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9,   4
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10, 10
-	frame SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11,  7
-	endanim
-
-.Frameset_GSIntroStar:
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_STAR,  3
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_STAR,  3, OAM_Y_FLIP
-	dorestart
-
-.Frameset_GSIntroSparkle:
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1,  2
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2,  2
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3,  2
-	frame SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2,  2
-	dorestart
-
-.Frameset_SlotsGolem:
-	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1,  7, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2,  7, OAM_X_FLIP
-	dorestart
-
-.Frameset_SlotsChansey:
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3,  7
-	dorestart
-
-.Frameset_SlotsChansey2:
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4,  7
-	frame SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1,  7
-	endanim
-
-.Frameset_SlotsEgg:
-	frame SPRITE_ANIM_OAMSET_SLOTS_EGG, 20
-	endanim
-
-.Frameset_StillCursor:
-	frame SPRITE_ANIM_OAMSET_STILL_CURSOR, 32
-	endanim
-
-.Frameset_TradePokeBall:
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 32
-	endanim
-
-.Frameset_TradePokeBall0:
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	dorestart
-
-.Frameset_TradePoof:
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  4
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  4
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  4
-	delanim
-
-.Frameset_TradeTubeBulge:
-	frame SPRITE_ANIM_OAMSET_35,  3
-	frame SPRITE_ANIM_OAMSET_36,  3
-	dorestart
-
-.Frameset_TrademonIcon:
-	frame SPRITE_ANIM_OAMSET_TRADEMON_ICON_1,  7
-	frame SPRITE_ANIM_OAMSET_TRADEMON_ICON_2,  7
-	dorestart
-
-.Frameset_TrademonBubble:
-	frame SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE, 32
-	endanim
-
-.Frameset_EvolutionBallOfLight:
-	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2,  2
-	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1,  2
-	frame SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2,  2
-	endanim
-
-.Frameset_RadioTuningKnob:
-	frame SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB, 32
-	endanim
-
-.Frameset_MagnetTrainRed:
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1,  8
-	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2,  8, OAM_X_FLIP
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_43,  8
-	frame SPRITE_ANIM_OAMSET_44,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_45,  8
-	frame SPRITE_ANIM_OAMSET_46,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_47,  8
-	frame SPRITE_ANIM_OAMSET_48,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_49,  1
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_Y_FLIP
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_4A, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_4B, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_4C, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_4D, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_OAMSET_4E,  3
-	dorepeat  3
-	dorestart
-
-.Frameset_1c:
-	dorepeat 32
-	endanim
-
-.Frameset_Leaf:
-	frame SPRITE_ANIM_OAMSET_LEAF, 32
-	endanim
-
-.Frameset_CutTree:
-	frame SPRITE_ANIM_OAMSET_TREE_1,      2
-	frame SPRITE_ANIM_OAMSET_CUT_TREE_2, 16
-	dorepeat  1
-	frame SPRITE_ANIM_OAMSET_CUT_TREE_3,  1
-	dorepeat  1
-	frame SPRITE_ANIM_OAMSET_CUT_TREE_4,  1
-	delanim
-
-.Frameset_EggCrack:
-	frame SPRITE_ANIM_OAMSET_EGG_CRACK, 32
-	endanim
-
-.Frameset_EggHatch:
-	frame SPRITE_ANIM_OAMSET_55, 32
-	endanim
-
-.Frameset_21:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP
-	endanim
-
-.Frameset_22:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_Y_FLIP
-	endanim
-
-.Frameset_23:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP, OAM_Y_FLIP
-	endanim
-
-.Frameset_24:
-	frame SPRITE_ANIM_OAMSET_56, 10
-	frame SPRITE_ANIM_OAMSET_57,  9
-	frame SPRITE_ANIM_OAMSET_58, 10
-	frame SPRITE_ANIM_OAMSET_59, 10
-	frame SPRITE_ANIM_OAMSET_58,  9
-	frame SPRITE_ANIM_OAMSET_5A, 10
-	dorestart
-
-.Frameset_HeadbuttTree:
-	frame SPRITE_ANIM_OAMSET_TREE_1,           2
-	frame SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2,  2
-	frame SPRITE_ANIM_OAMSET_TREE_1,           2
-	frame SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2,  2, OAM_X_FLIP
-	dorestart
-
-.Frameset_26:
-	frame SPRITE_ANIM_OAMSET_5C,  2
-	endanim
-
-.Frameset_27:
-	frame SPRITE_ANIM_OAMSET_5D,  2
-	endanim
-
-.Frameset_28:
-	frame SPRITE_ANIM_OAMSET_5E,  2
-	endanim
-
-.Frameset_29:
-	frame SPRITE_ANIM_OAMSET_5F,  2
-	endanim
-
-.Frameset_2a:
-	frame SPRITE_ANIM_OAMSET_60,  2
-	endanim
-
-.Frameset_2b:
-	frame SPRITE_ANIM_OAMSET_61,  2
-	endanim
-
-.Frameset_2c:
-	frame SPRITE_ANIM_OAMSET_62,  2
-	endanim
-
-.Frameset_MobileTradeSentBall:
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	endanim
-
-.Frameset_MobileTradeOTBall:
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_1,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_2,  3
-	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  3
-	delanim
-
-.Frameset_ForMobile22:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1,  3
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2,  3
-	dorestart
-
-.Frameset_ForMobile23:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_23,  3
-	endanim
-
-.Frameset_ForMobile24:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_24,  3
-	endanim
-
-.Frameset_ForMobile25:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1,  2
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2,  2
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3,  2
-	delanim
-
-.Frameset_IntroSuicune:
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4,  3
-	dorestart
-
-.Frameset_IntroSuicune2:
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1,  7
-	endanim
-
-.Frameset_IntroPichu:
-	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_1, 32
-	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_2,  7
-	frame SPRITE_ANIM_OAMSET_INTRO_PICHU_3,  7
-	endanim
-
-.Frameset_IntroWooper:
-	frame SPRITE_ANIM_OAMSET_INTRO_WOOPER,  3
-	endanim
-
-.Frameset_IntroUnown1:
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7
-	delanim
-
-.Frameset_IntroUnown2:
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_X_FLIP
-	delanim
-
-.Frameset_IntroUnown3:
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_Y_FLIP
-	delanim
-
-.Frameset_IntroUnown4:
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_1,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_2,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_3,  7, OAM_X_FLIP, OAM_Y_FLIP
-	delanim
-
-.Frameset_IntroUnownF2:
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3,  3
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4,  7
-	frame SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5,  7
-	endanim
-
-.Frameset_IntroSuicuneAway:
-	frame SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY,  3
-	endanim
-
-.Frameset_IntroUnownF:
-	dorepeat 0
-	endanim
-
-.Frameset_CelebiLeft:
-	frame SPRITE_ANIM_OAMSET_CELEBI_1,  8
-	frame SPRITE_ANIM_OAMSET_CELEBI_2,  8
-	endanim
-
-.Frameset_CelebiRight:
-	frame SPRITE_ANIM_OAMSET_CELEBI_1,  8, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_CELEBI_2,  8, OAM_X_FLIP
-	endanim
-; 8d94d
--- a/data/sprites/oam.asm
+++ /dev/null
@@ -1,1131 +1,0 @@
-SpriteAnimOAMData: ; 8d94d
-; entries correspond to SPRITE_ANIM_OAMSET_* constants
-	; vtile offset, pointer
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_1
-	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_2
-	dbw $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_02
-	dbw $5c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_03
-	dbw $6c, .OAMData_04 ; SPRITE_ANIM_OAMSET_04
-	dbw $6e, .OAMData_04 ; SPRITE_ANIM_OAMSET_05
-	dbw $2d, .OAMData_06 ; SPRITE_ANIM_OAMSET_06
-	dbw $4d, .OAMData_06 ; SPRITE_ANIM_OAMSET_07
-	dbw $60, .OAMData_08 ; SPRITE_ANIM_OAMSET_08
-	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_09
-	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_0A
-	dbw $06, .OAMData_08 ; SPRITE_ANIM_OAMSET_0B
-	dbw $0c, .OAMData_0c ; SPRITE_ANIM_OAMSET_0C
-	dbw $0d, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_0D
-	dbw $00, .OAMData_0e ; SPRITE_ANIM_OAMSET_0E
-	dbw $04, .OAMData_0e ; SPRITE_ANIM_OAMSET_0F
-	dbw $08, .OAMData_0e ; SPRITE_ANIM_OAMSET_10
-	dbw $40, .OAMData_0e ; SPRITE_ANIM_OAMSET_11
-	dbw $44, .OAMData_0e ; SPRITE_ANIM_OAMSET_12
-	dbw $48, .OAMData_0e ; SPRITE_ANIM_OAMSET_13
-	dbw $4c, .OAMData_0e ; SPRITE_ANIM_OAMSET_14
-	dbw $80, .OAMData_15 ; SPRITE_ANIM_OAMSET_15
-	dbw $85, .OAMData_15 ; SPRITE_ANIM_OAMSET_16
-	dbw $8a, .OAMData_15 ; SPRITE_ANIM_OAMSET_17
-	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_18
-	dbw $01, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_19
-	dbw $09, .OAMData_1a ; SPRITE_ANIM_OAMSET_1A
-	dbw $10, .OAMData_1b ; SPRITE_ANIM_OAMSET_1B
-	dbw $29, .OAMData_1b ; SPRITE_ANIM_OAMSET_1C
-	dbw $42, .OAMData_1b ; SPRITE_ANIM_OAMSET_1D
-	dbw $f8, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1
-	dbw $fa, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2
-	dbw $00, .OAMData_TextEntryCursor ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR
-	dbw $00, .OAMData_ForFrameset09 ; SPRITE_ANIM_OAMSET_FOR_FRAMESET_09
-	dbw $00, .OAMData_22 ; SPRITE_ANIM_OAMSET_22
-	dbw $0f, .OAMData_GSIntroStar ; SPRITE_ANIM_OAMSET_GS_INTRO_STAR
-	dbw $11, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1
-	dbw $12, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2
-	dbw $13, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3
-	dbw $00, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1
-	dbw $08, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2
-	dbw $10, .OAMData_SlotsChansey1 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1
-	dbw $10, .OAMData_SlotsChansey2 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2
-	dbw $10, .OAMData_SlotsChansey3 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3
-	dbw $10, .OAMData_SlotsChansey4 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4
-	dbw $10, .OAMData_SlotsChansey5 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5
-	dbw $3a, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_SLOTS_EGG
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_STILL_CURSOR
-	dbw $00, .OAMData_TradePokeBall1 ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1
-	dbw $02, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2
-	dbw $06, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_1
-	dbw $0a, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_2
-	dbw $0e, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_3
-	dbw $12, .OAMData_35 ; SPRITE_ANIM_OAMSET_35
-	dbw $13, .OAMData_35 ; SPRITE_ANIM_OAMSET_36
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_1
-	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_2
-	dbw $10, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE
-	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1
-	dbw $04, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2
-	dbw $00, .OAMData_RadioTuningKnob ; SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB
-	dbw $00, .OAMData_PartyMonWithMail1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1
-	dbw $00, .OAMData_PartyMonWithMail2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2
-	dbw $00, .OAMData_PartyMonWithItem1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1
-	dbw $00, .OAMData_PartyMonWithItem2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2
-	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1
-	dbw $04, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2
-	dbw $00, .OAMData_43 ; SPRITE_ANIM_OAMSET_43
-	dbw $30, .OAMData_43 ; SPRITE_ANIM_OAMSET_44
-	dbw $03, .OAMData_43 ; SPRITE_ANIM_OAMSET_45
-	dbw $33, .OAMData_43 ; SPRITE_ANIM_OAMSET_46
-	dbw $06, .OAMData_43 ; SPRITE_ANIM_OAMSET_47
-	dbw $36, .OAMData_43 ; SPRITE_ANIM_OAMSET_48
-	dbw $09, .OAMData_43 ; SPRITE_ANIM_OAMSET_49
-	dbw $39, .OAMData_43 ; SPRITE_ANIM_OAMSET_4A
-	dbw $0c, .OAMData_4b ; SPRITE_ANIM_OAMSET_4B
-	dbw $0c, .OAMData_4c ; SPRITE_ANIM_OAMSET_4C
-	dbw $3c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4D
-	dbw $3e, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4E
-	dbw $00, .OAMData_Leaf ; SPRITE_ANIM_OAMSET_LEAF
-	dbw $00, .OAMData_Tree ; SPRITE_ANIM_OAMSET_TREE_1
-	dbw $00, .OAMData_CutTree2 ; SPRITE_ANIM_OAMSET_CUT_TREE_2
-	dbw $00, .OAMData_CutTree3 ; SPRITE_ANIM_OAMSET_CUT_TREE_3
-	dbw $00, .OAMData_CutTree4 ; SPRITE_ANIM_OAMSET_CUT_TREE_4
-	dbw $00, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EGG_CRACK
-	dbw $01, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_55
-	dbw $00, .OAMData_56 ; SPRITE_ANIM_OAMSET_56
-	dbw $00, .OAMData_57 ; SPRITE_ANIM_OAMSET_57
-	dbw $00, .OAMData_58 ; SPRITE_ANIM_OAMSET_58
-	dbw $00, .OAMData_59 ; SPRITE_ANIM_OAMSET_59
-	dbw $00, .OAMData_5a ; SPRITE_ANIM_OAMSET_5A
-	dbw $04, .OAMData_Tree ; SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2
-	dbw $00, .OAMData_5c ; SPRITE_ANIM_OAMSET_5C
-	dbw $00, .OAMData_5d ; SPRITE_ANIM_OAMSET_5D
-	dbw $00, .OAMData_5e ; SPRITE_ANIM_OAMSET_5E
-	dbw $00, .OAMData_5f ; SPRITE_ANIM_OAMSET_5F
-	dbw $00, .OAMData_60 ; SPRITE_ANIM_OAMSET_60
-	dbw $00, .OAMData_61 ; SPRITE_ANIM_OAMSET_61
-	dbw $00, .OAMData_62 ; SPRITE_ANIM_OAMSET_62
-	dbw $00, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_1
-	dbw $04, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_2
-	dbw $00, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1
-	dbw $04, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2
-	dbw $20, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1
-	dbw $21, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2
-	dbw $22, .OAMData_ForMobile25_1 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1
-	dbw $23, .OAMData_ForMobile25_2 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2
-	dbw $27, .OAMData_ForMobile25_3 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3
-	dbw $2a, .OAMData_ForMobile23 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_23
-	dbw $2a, .OAMData_ForMobile24 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_24
-	dbw $00, .OAMData_IntroSuicune1 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1
-	dbw $08, .OAMData_IntroSuicune2 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2
-	dbw $60, .OAMData_IntroSuicune3 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3
-	dbw $68, .OAMData_IntroSuicune4 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4
-	dbw $00, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_1
-	dbw $05, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_2
-	dbw $0a, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_3
-	dbw $50, .OAMData_IntroWooper ; SPRITE_ANIM_OAMSET_INTRO_WOOPER
-	dbw $00, .OAMData_IntroUnown1 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_1
-	dbw $01, .OAMData_IntroUnown2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_2
-	dbw $04, .OAMData_IntroUnown3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_3
-	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1
-	dbw $01, .OAMData_IntroUnownF2_2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2
-	dbw $03, .OAMData_IntroUnownF2_3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3
-	dbw $08, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4
-	dbw $1c, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5
-	dbw $80, .OAMData_IntroSuicuneAway ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY
-	dbw $00, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_1
-	dbw $04, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_2
-	dbw $d0, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1
-	dbw $d3, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2
-	dbw $d6, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3
-	dbw $6c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4
-	dbw $68, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5
-	dbw $64, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6
-	dbw $60, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7
-	dbw $0c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8
-	dbw $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9
-	dbw $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10
-	dbw $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11
-
-.OAMData_1x1_Palette0:
-	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_GSIntroStar:
-	db 4
-	dsprite -1,  0, -1,  0, $00, 0
-	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP
-	dsprite  0,  0, -1,  0, $01, 0
-	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP
-
-.OAMData_TradePokeBall1:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $80
-	dsprite -1,  0,  0,  0, $00, $a0
-	dsprite  0,  0, -1,  0, $01, $80
-	dsprite  0,  0,  0,  0, $01, $a0
-
-.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_TradePoofBubble:
-	db 16
-	dsprite -2,  0, -2,  0, $00, 0
-	dsprite -2,  0, -1,  0, $01, 0
-	dsprite -1,  0, -2,  0, $02, 0
-	dsprite -1,  0, -1,  0, $03, 0
-	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
-	dsprite -2,  0,  1,  0, $00, 0 | X_FLIP
-	dsprite -1,  0,  0,  0, $03, 0 | X_FLIP
-	dsprite -1,  0,  1,  0, $02, 0 | X_FLIP
-	dsprite  0,  0, -2,  0, $02, 0 | Y_FLIP
-	dsprite  0,  0, -1,  0, $03, 0 | Y_FLIP
-	dsprite  1,  0, -2,  0, $00, 0 | Y_FLIP
-	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
-	dsprite  0,  0,  0,  0, $03, 0 | X_FLIP | Y_FLIP
-	dsprite  0,  0,  1,  0, $02, 0 | X_FLIP | Y_FLIP
-	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
-	dsprite  1,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
-
-.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_RedWalk:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
-	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
-	dsprite  0,  0, -1,  0, $02, PAL_OW_RED
-	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
-
-.OAMData_MagnetTrainRed:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_RED | BEHIND_BG
-	dsprite -1,  0,  0,  0, $01, PAL_OW_RED | BEHIND_BG
-	dsprite  0,  0, -1,  0, $02, PAL_OW_RED | BEHIND_BG
-	dsprite  0,  0,  0,  0, $03, PAL_OW_RED | BEHIND_BG
-
-.OAMData_PartyMonWithMail1:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
-	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
-	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
-	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
-
-.OAMData_PartyMonWithMail2:
-	db 4
-	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
-	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
-	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
-	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
-
-.OAMData_PartyMonWithItem1:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
-	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
-	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
-	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
-
-.OAMData_PartyMonWithItem2:
-	db 4
-	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
-	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
-	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
-	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
-
-.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_Leaf:
-	db 1
-	dsprite -1,  4, -1,  4, $00, PAL_OW_TREE
-
-.OAMData_Tree:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_TREE
-	dsprite -1,  0,  0,  0, $01, PAL_OW_TREE
-	dsprite  0,  0, -1,  0, $02, PAL_OW_TREE
-	dsprite  0,  0,  0,  0, $03, PAL_OW_TREE
-
-.OAMData_TextEntryCursor:
-	db 4
-	dsprite -1,  7, -1,  7, $00, 0
-	dsprite -1,  7,  0,  0, $00, 0 | X_FLIP
-	dsprite  0,  0, -1,  7, $00, 0 | Y_FLIP
-	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
-
-.OAMData_ForFrameset09:
-	db 10
-	dsprite -1,  7,  0,  0, $00, 0
-	dsprite -1,  7,  1,  0, $01, 0
-	dsprite -1,  7,  2,  0, $01, 0
-	dsprite -1,  7,  3,  0, $01, 0
-	dsprite -1,  7,  4,  0, $00, 0 | X_FLIP
-	dsprite  0,  0,  0,  0, $00, 0 | Y_FLIP
-	dsprite  0,  0,  1,  0, $01, 0 | Y_FLIP
-	dsprite  0,  0,  2,  0, $01, 0 | Y_FLIP
-	dsprite  0,  0,  3,  0, $01, 0 | Y_FLIP
-	dsprite  0,  0,  4,  0, $00, 0 | X_FLIP | Y_FLIP
-
-.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_SlotsGolem:
-	db 6
-	dsprite -2,  4, -2,  4, $00, 5 | OBP_NUM
-	dsprite -2,  4, -1,  4, $02, 5 | OBP_NUM
-	dsprite -2,  4,  0,  4, $00, 5 | OBP_NUM | X_FLIP
-	dsprite  0,  4, -2,  4, $04, 5 | OBP_NUM
-	dsprite  0,  4, -1,  4, $06, 5 | OBP_NUM
-	dsprite  0,  4,  0,  4, $04, 5 | OBP_NUM | X_FLIP
-
-.OAMData_SlotsChansey1:
-	db 6
-	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
-	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
-	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
-	dsprite  0,  4, -2,  4, $06, 6 | OBP_NUM
-	dsprite  0,  4, -1,  4, $08, 6 | OBP_NUM
-	dsprite  0,  4,  0,  4, $0a, 6 | OBP_NUM
-
-.OAMData_SlotsChansey2:
-	db 6
-	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
-	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
-	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
-	dsprite  0,  4, -2,  4, $0c, 6 | OBP_NUM
-	dsprite  0,  4, -1,  4, $0e, 6 | OBP_NUM
-	dsprite  0,  4,  0,  4, $10, 6 | OBP_NUM
-
-.OAMData_SlotsChansey3:
-	db 6
-	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
-	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
-	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
-	dsprite  0,  4, -2,  4, $12, 6 | OBP_NUM
-	dsprite  0,  4, -1,  4, $14, 6 | OBP_NUM
-	dsprite  0,  4,  0,  4, $16, 6 | OBP_NUM
-
-.OAMData_SlotsChansey4:
-	db 6
-	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
-	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
-	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
-	dsprite  0,  4, -2,  4, $18, 6 | OBP_NUM
-	dsprite  0,  4, -1,  4, $1a, 6 | OBP_NUM
-	dsprite  0,  4,  0,  4, $1c, 6 | OBP_NUM
-
-.OAMData_SlotsChansey5:
-	db 6
-	dsprite -2,  4, -2,  4, $1e, 6 | OBP_NUM
-	dsprite -2,  4, -1,  4, $20, 6 | OBP_NUM
-	dsprite -2,  4,  0,  4, $22, 6 | OBP_NUM
-	dsprite  0,  4, -2,  4, $24, 6 | OBP_NUM
-	dsprite  0,  4, -1,  4, $26, 6 | OBP_NUM
-	dsprite  0,  4,  0,  4, $28, 6 | OBP_NUM
-
-.OAMData_RadioTuningKnob:
-	db 3
-	dsprite -2,  4, -1,  4, $00, 0 | OBP_NUM
-	dsprite -1,  4, -1,  4, $00, 0 | OBP_NUM
-	dsprite  0,  4, -1,  4, $00, 0 | OBP_NUM
-
-.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_CutTree2:
-	db 4
-	dsprite -1,  0, -2,  6, $00, PAL_OW_TREE
-	dsprite -1,  0,  0,  2, $01, PAL_OW_TREE
-	dsprite  0,  0, -2,  6, $02, PAL_OW_TREE
-	dsprite  0,  0,  0,  2, $03, PAL_OW_TREE
-
-.OAMData_CutTree3:
-	db 4
-	dsprite -1,  0, -2,  4, $00, PAL_OW_TREE
-	dsprite -1,  0,  0,  4, $01, PAL_OW_TREE
-	dsprite  0,  0, -2,  4, $02, PAL_OW_TREE
-	dsprite  0,  0,  0,  4, $03, PAL_OW_TREE
-
-.OAMData_CutTree4:
-	db 4
-	dsprite -1,  0, -2,  0, $00, PAL_OW_TREE
-	dsprite -1,  0,  1,  0, $01, PAL_OW_TREE
-	dsprite  0,  0, -2,  0, $02, PAL_OW_TREE
-	dsprite  0,  0,  1,  0, $03, PAL_OW_TREE
-
-.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_GSTitleTrail:
-	db 1
-	dsprite -1,  4, -1,  4, $00, 1 | OBP_NUM
-
-.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_BlueWalk:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE
-	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE
-	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE
-	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE
-
-.OAMData_MagnetTrainBlue:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE | BEHIND_BG
-	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE | BEHIND_BG
-	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE | BEHIND_BG
-	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE | BEHIND_BG
-
-.OAMData_ForMobile22:
-	db 1
-	dsprite -1,  4, -1,  4, $00, 2
-
-.OAMData_ForMobile23:
-	db 4
-	dsprite -2,  0, -1,  4, $00, 3
-	dsprite -1,  0, -1,  4, $01, 3
-	dsprite  0,  0, -1,  4, $02, 3
-	dsprite  1,  0, -1,  4, $03, 3
-
-.OAMData_ForMobile24:
-	db 4
-	dsprite -2,  0, -1,  4, $03, 4 | Y_FLIP
-	dsprite -1,  0, -1,  4, $02, 4 | Y_FLIP
-	dsprite  0,  0, -1,  4, $01, 4 | Y_FLIP
-	dsprite  1,  0, -1,  4, $00, 4 | Y_FLIP
-
-.OAMData_ForMobile25_1:
-	db 4
-	dsprite -1,  0, -1,  0, $00, 1
-	dsprite -1,  0,  0,  0, $00, 1 | X_FLIP
-	dsprite  0,  0, -1,  0, $00, 1 | Y_FLIP
-	dsprite  0,  0,  0,  0, $00, 1 | X_FLIP | Y_FLIP
-
-.OAMData_ForMobile25_2:
-	db 8
-	dsprite -2,  4, -2,  4, $00, 1
-	dsprite -2,  4, -1,  4, $01, 1
-	dsprite -2,  4,  0,  4, $00, 1 | X_FLIP
-	dsprite -1,  4, -2,  4, $02, 1
-	dsprite -1,  4,  0,  4, $02, 1 | X_FLIP
-	dsprite  0,  4, -2,  4, $00, 1 | Y_FLIP
-	dsprite  0,  4, -1,  4, $01, 1 | Y_FLIP
-	dsprite  0,  4,  0,  4, $00, 1 | X_FLIP | Y_FLIP
-
-.OAMData_ForMobile25_3:
-	db 12
-	dsprite -2,  0, -2,  0, $00, 1
-	dsprite -2,  0, -1,  0, $01, 1
-	dsprite -1,  0, -2,  0, $02, 1
-	dsprite -2,  0,  0,  0, $01, 1 | X_FLIP
-	dsprite -2,  0,  1,  0, $00, 1 | X_FLIP
-	dsprite -1,  0,  1,  0, $02, 1 | X_FLIP
-	dsprite  0,  0, -2,  0, $02, 1 | Y_FLIP
-	dsprite  1,  0, -2,  0, $00, 1 | Y_FLIP
-	dsprite  1,  0, -1,  0, $01, 1 | Y_FLIP
-	dsprite  0,  0,  1,  0, $02, 1 | X_FLIP | Y_FLIP
-	dsprite  1,  0,  0,  0, $01, 1 | X_FLIP | Y_FLIP
-	dsprite  1,  0,  1,  0, $00, 1 | X_FLIP | Y_FLIP
-
-.OAMData_IntroSuicune1:
-	db 36
-	dsprite -3,  0,  1,  0, $05, 0
-	dsprite -3,  0,  2,  0, $06, 0
-	dsprite -3,  0,  3,  0, $07, 0
-	dsprite -2,  0, -3,  0, $11, 0
-	dsprite -2,  0, -2,  0, $12, 0
-	dsprite -2,  0, -1,  0, $13, 0
-	dsprite -2,  0,  0,  0, $14, 0
-	dsprite -2,  0,  1,  0, $15, 0
-	dsprite -2,  0,  2,  0, $16, 0
-	dsprite -2,  0,  3,  0, $17, 0
-	dsprite -1,  0, -4,  0, $20, 0
-	dsprite -1,  0, -3,  0, $21, 0
-	dsprite -1,  0, -2,  0, $22, 0
-	dsprite -1,  0, -1,  0, $23, 0
-	dsprite -1,  0,  0,  0, $24, 0
-	dsprite -1,  0,  1,  0, $25, 0
-	dsprite -1,  0,  2,  0, $26, 0
-	dsprite -1,  0,  3,  0, $27, 0
-	dsprite  0,  0, -4,  0, $30, 0
-	dsprite  0,  0, -3,  0, $31, 0
-	dsprite  0,  0, -2,  0, $32, 0
-	dsprite  0,  0, -1,  0, $33, 0
-	dsprite  0,  0,  0,  0, $34, 0
-	dsprite  0,  0,  1,  0, $35, 0
-	dsprite  0,  0,  2,  0, $36, 0
-	dsprite  1,  0, -4,  0, $40, 0
-	dsprite  1,  0, -3,  0, $41, 0
-	dsprite  1,  0, -2,  0, $42, 0
-	dsprite  1,  0, -1,  0, $43, 0
-	dsprite  1,  0,  0,  0, $44, 0
-	dsprite  1,  0,  1,  0, $45, 0
-	dsprite  1,  0,  2,  0, $46, 0
-	dsprite  1,  0,  3,  0, $47, 0
-	dsprite  2,  0, -4,  0, $50, 0
-	dsprite  2,  0, -3,  0, $51, 0
-	dsprite  2,  0,  3,  0, $57, 0
-
-.OAMData_IntroSuicune2:
-	db 28
-	dsprite -3,  0,  0,  0, $04, 0
-	dsprite -3,  0,  1,  0, $05, 0
-	dsprite -3,  0,  2,  0, $06, 0
-	dsprite -2,  0, -3,  0, $11, 0
-	dsprite -2,  0, -2,  0, $12, 0
-	dsprite -2,  0, -1,  0, $13, 0
-	dsprite -2,  0,  0,  0, $14, 0
-	dsprite -2,  0,  1,  0, $15, 0
-	dsprite -2,  0,  2,  0, $16, 0
-	dsprite -1,  0, -3,  0, $21, 0
-	dsprite -1,  0, -2,  0, $22, 0
-	dsprite -1,  0, -1,  0, $23, 0
-	dsprite -1,  0,  0,  0, $24, 0
-	dsprite -1,  0,  1,  0, $25, 0
-	dsprite -1,  0,  2,  0, $26, 0
-	dsprite  0,  0, -4,  0, $30, 0
-	dsprite  0,  0, -3,  0, $31, 0
-	dsprite  0,  0, -2,  0, $32, 0
-	dsprite  0,  0, -1,  0, $33, 0
-	dsprite  0,  0,  0,  0, $34, 0
-	dsprite  0,  0,  1,  0, $35, 0
-	dsprite  1,  0, -2,  0, $42, 0
-	dsprite  1,  0, -1,  0, $43, 0
-	dsprite  1,  0,  0,  0, $44, 0
-	dsprite  1,  0,  1,  0, $45, 0
-	dsprite  2,  0, -1,  0, $53, 0
-	dsprite  2,  0,  0,  0, $54, 0
-	dsprite  2,  0,  1,  0, $55, 0
-
-.OAMData_IntroSuicune3:
-	db 30
-	dsprite -3,  0,  0,  0, $04, 0
-	dsprite -3,  0,  1,  0, $05, 0
-	dsprite -2,  0, -3,  0, $11, 0
-	dsprite -2,  0, -2,  0, $12, 0
-	dsprite -2,  0, -1,  0, $13, 0
-	dsprite -2,  0,  0,  0, $14, 0
-	dsprite -2,  0,  1,  0, $15, 0
-	dsprite -2,  0,  2,  0, $16, 0
-	dsprite -2,  0,  3,  0, $17, 0
-	dsprite -1,  0, -4,  0, $20, 0
-	dsprite -1,  0, -3,  0, $21, 0
-	dsprite -1,  0, -2,  0, $22, 0
-	dsprite -1,  0, -1,  0, $23, 0
-	dsprite -1,  0,  0,  0, $24, 0
-	dsprite -1,  0,  1,  0, $25, 0
-	dsprite -1,  0,  2,  0, $26, 0
-	dsprite  0,  0, -4,  0, $30, 0
-	dsprite  0,  0, -3,  0, $31, 0
-	dsprite  0,  0, -2,  0, $32, 0
-	dsprite  0,  0, -1,  0, $33, 0
-	dsprite  0,  0,  0,  0, $34, 0
-	dsprite  0,  0,  1,  0, $35, 0
-	dsprite  1,  0, -2,  0, $42, 0
-	dsprite  1,  0, -1,  0, $43, 0
-	dsprite  1,  0,  0,  0, $44, 0
-	dsprite  1,  0,  1,  0, $45, 0
-	dsprite  2,  0, -2,  0, $52, 0
-	dsprite  2,  0, -1,  0, $53, 0
-	dsprite  2,  0,  0,  0, $54, 0
-	dsprite  2,  0,  1,  0, $55, 0
-
-.OAMData_IntroSuicune4:
-	db 31
-	dsprite -2,  0, -3,  0, $11, 0
-	dsprite -2,  0, -2,  0, $12, 0
-	dsprite -2,  0, -1,  0, $13, 0
-	dsprite -2,  0,  0,  0, $14, 0
-	dsprite -2,  0,  1,  0, $15, 0
-	dsprite -2,  0,  2,  0, $16, 0
-	dsprite -2,  0,  3,  0, $17, 0
-	dsprite -1,  0, -4,  0, $20, 0
-	dsprite -1,  0, -3,  0, $21, 0
-	dsprite -1,  0, -2,  0, $22, 0
-	dsprite -1,  0, -1,  0, $23, 0
-	dsprite -1,  0,  0,  0, $24, 0
-	dsprite -1,  0,  1,  0, $25, 0
-	dsprite -1,  0,  2,  0, $26, 0
-	dsprite -1,  0,  3,  0, $27, 0
-	dsprite  0,  0, -4,  0, $30, 0
-	dsprite  0,  0, -3,  0, $31, 0
-	dsprite  0,  0, -2,  0, $32, 0
-	dsprite  0,  0, -1,  0, $33, 0
-	dsprite  0,  0,  0,  0, $34, 0
-	dsprite  0,  0,  1,  0, $35, 0
-	dsprite  0,  0,  2,  0, $36, 0
-	dsprite  1,  0, -3,  0, $41, 0
-	dsprite  1,  0, -2,  0, $42, 0
-	dsprite  1,  0, -1,  0, $43, 0
-	dsprite  1,  0,  0,  0, $44, 0
-	dsprite  1,  0,  1,  0, $45, 0
-	dsprite  2,  0, -3,  0, $51, 0
-	dsprite  2,  0, -2,  0, $52, 0
-	dsprite  2,  0,  0,  0, $54, 0
-	dsprite  2,  0,  1,  0, $55, 0
-
-.OAMData_IntroPichu:
-	db 25
-	dsprite -3,  4, -3,  4, $00, 1 | VRAM_BANK_1
-	dsprite -3,  4, -2,  4, $01, 1 | VRAM_BANK_1
-	dsprite -3,  4, -1,  4, $02, 1 | VRAM_BANK_1
-	dsprite -3,  4,  0,  4, $03, 1 | VRAM_BANK_1
-	dsprite -3,  4,  1,  4, $04, 1 | VRAM_BANK_1
-	dsprite -2,  4, -3,  4, $10, 1 | VRAM_BANK_1
-	dsprite -2,  4, -2,  4, $11, 1 | VRAM_BANK_1
-	dsprite -2,  4, -1,  4, $12, 1 | VRAM_BANK_1
-	dsprite -2,  4,  0,  4, $13, 1 | VRAM_BANK_1
-	dsprite -2,  4,  1,  4, $14, 1 | VRAM_BANK_1
-	dsprite -1,  4, -3,  4, $20, 1 | VRAM_BANK_1
-	dsprite -1,  4, -2,  4, $21, 1 | VRAM_BANK_1
-	dsprite -1,  4, -1,  4, $22, 1 | VRAM_BANK_1
-	dsprite -1,  4,  0,  4, $23, 1 | VRAM_BANK_1
-	dsprite -1,  4,  1,  4, $24, 1 | VRAM_BANK_1
-	dsprite  0,  4, -3,  4, $30, 1 | VRAM_BANK_1
-	dsprite  0,  4, -2,  4, $31, 1 | VRAM_BANK_1
-	dsprite  0,  4, -1,  4, $32, 1 | VRAM_BANK_1
-	dsprite  0,  4,  0,  4, $33, 1 | VRAM_BANK_1
-	dsprite  0,  4,  1,  4, $34, 1 | VRAM_BANK_1
-	dsprite  1,  4, -3,  4, $40, 1 | VRAM_BANK_1
-	dsprite  1,  4, -2,  4, $41, 1 | VRAM_BANK_1
-	dsprite  1,  4, -1,  4, $42, 1 | VRAM_BANK_1
-	dsprite  1,  4,  0,  4, $43, 1 | VRAM_BANK_1
-	dsprite  1,  4,  1,  4, $44, 1 | VRAM_BANK_1
-
-.OAMData_IntroWooper:
-	db 16
-	dsprite -2,  0, -3,  4, $00, 2 | VRAM_BANK_1
-	dsprite -2,  0, -2,  4, $01, 2 | VRAM_BANK_1
-	dsprite -2,  0, -1,  4, $02, 2 | VRAM_BANK_1
-	dsprite -2,  0,  0,  4, $03, 2 | VRAM_BANK_1
-	dsprite -1,  0, -3,  4, $04, 2 | VRAM_BANK_1
-	dsprite -1,  0, -2,  4, $05, 2 | VRAM_BANK_1
-	dsprite -1,  0, -1,  4, $06, 2 | VRAM_BANK_1
-	dsprite -1,  0,  0,  4, $07, 2 | VRAM_BANK_1
-	dsprite  0,  0, -3,  4, $08, 2 | VRAM_BANK_1
-	dsprite  0,  0, -2,  4, $09, 2 | VRAM_BANK_1
-	dsprite  0,  0, -1,  4, $0a, 2 | VRAM_BANK_1
-	dsprite  0,  0,  0,  4, $0b, 2 | VRAM_BANK_1
-	dsprite  1,  0, -3,  4, $0c, 2 | VRAM_BANK_1
-	dsprite  1,  0, -2,  4, $0d, 2 | VRAM_BANK_1
-	dsprite  1,  0, -1,  4, $0e, 2 | VRAM_BANK_1
-	dsprite  1,  0,  0,  4, $0f, 2 | VRAM_BANK_1
-
-.OAMData_IntroUnown1:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $00
-
-.OAMData_IntroUnown2:
-	db 3
-	dsprite  0,  0, -1,  0, $00, $00
-	dsprite -1,  0, -1,  0, $01, $00
-	dsprite -1,  0,  0,  0, $02, $00
-
-.OAMData_IntroUnown3:
-	db 7
-	dsprite  1,  0, -2,  0, $00, $00
-	dsprite  0,  0, -2,  0, $01, $00
-	dsprite -1,  0, -2,  0, $02, $00
-	dsprite -1,  0, -1,  0, $03, $00
-	dsprite -2,  0, -1,  0, $04, $00
-	dsprite -2,  0,  0,  0, $05, $00
-	dsprite -2,  0,  1,  0, $06, $00
-
-.OAMData_IntroUnownF2_2:
-	db 8
-	dsprite -1,  0, -2,  0, $00, 0
-	dsprite -1,  0, -1,  0, $01, 0
-	dsprite -1,  0,  0,  0, $01, 0 | X_FLIP
-	dsprite -1,  0,  1,  0, $00, 0 | X_FLIP
-	dsprite  0,  0, -2,  0, $00, 0 | Y_FLIP
-	dsprite  0,  0, -1,  0, $01, 0 | Y_FLIP
-	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
-	dsprite  0,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
-
-.OAMData_IntroUnownF2_3:
-	db 12
-	dsprite -3,  0, -1,  0, $00, 0
-	dsprite -2,  0, -1,  0, $01, 0
-	dsprite -1,  0, -1,  0, $02, 0
-	dsprite -3,  0,  0,  0, $00, 0 | X_FLIP
-	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
-	dsprite -1,  0,  0,  0, $02, 0 | X_FLIP
-	dsprite  0,  0, -1,  0, $02, 0 | Y_FLIP
-	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
-	dsprite  2,  0, -1,  0, $00, 0 | Y_FLIP
-	dsprite  0,  0,  0,  0, $02, 0 | X_FLIP | Y_FLIP
-	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
-	dsprite  2,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
-
-.OAMData_IntroUnownF2_4_5:
-	db 20
-	dsprite -3,  4, -2,  0, $00, 0
-	dsprite -3,  4, -1,  0, $01, 0
-	dsprite -3,  4,  0,  0, $02, 0
-	dsprite -3,  4,  1,  0, $03, 0
-	dsprite -2,  4, -2,  0, $04, 0
-	dsprite -2,  4, -1,  0, $05, 0
-	dsprite -2,  4,  0,  0, $06, 0
-	dsprite -2,  4,  1,  0, $07, 0
-	dsprite -1,  4, -2,  0, $08, 0
-	dsprite -1,  4, -1,  0, $09, 0
-	dsprite -1,  4,  0,  0, $0a, 0
-	dsprite -1,  4,  1,  0, $0b, 0
-	dsprite  0,  4, -2,  0, $0c, 0
-	dsprite  0,  4, -1,  0, $0d, 0
-	dsprite  0,  4,  0,  0, $0e, 0
-	dsprite  0,  4,  1,  0, $0f, 0
-	dsprite  1,  4, -2,  0, $10, 0
-	dsprite  1,  4, -1,  0, $11, 0
-	dsprite  1,  4,  0,  0, $12, 0
-	dsprite  1,  4,  1,  0, $13, 0
-
-.OAMData_IntroSuicuneAway:
-	db 20
-	dsprite  0,  0,   1,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,   2,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,   3,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,   4,  0, $00, 1 | BEHIND_BG
-	dsprite  4,  0,   5,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,   6,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,   7,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,   8,  0, $00, 1 | BEHIND_BG
-	dsprite  0,  0,   9,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,  10,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,  11,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,  12,  0, $00, 1 | BEHIND_BG
-	dsprite  4,  0,  13,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,  14,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,  15,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,  16,  0, $00, 1 | BEHIND_BG
-	dsprite  0,  0, -15,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0, -14,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0, -13,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0, -12,  0, $00, 1 | BEHIND_BG
-
-.OAMData_Celebi:
-	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_GREEN
-	dsprite -1,  0,  0,  0, $01, PAL_OW_GREEN
-	dsprite  0,  0, -1,  0, $02, PAL_OW_GREEN
-	dsprite  0,  0,  0,  0, $03, PAL_OW_GREEN
-
-.OAMData_GameFreakLogo1_3:
-	db 9
-	dsprite -2,  0, -2,  4, $00, 1
-	dsprite -2,  0, -1,  4, $01, 1
-	dsprite -2,  0,  0,  4, $02, 1
-	dsprite -1,  0, -2,  4, $10, 1
-	dsprite -1,  0, -1,  4, $11, 1
-	dsprite -1,  0,  0,  4, $12, 1
-	dsprite  0,  0, -2,  4, $20, 1
-	dsprite  0,  0, -1,  4, $21, 1
-	dsprite  0,  0,  0,  4, $22, 1
-
-.OAMData_GameFreakLogo4_11:
-	db 24
-	dsprite -5,  0, -2,  4, $00, 1
-	dsprite -5,  0, -1,  4, $01, 1
-	dsprite -5,  0,  0,  4, $02, 1
-	dsprite -5,  0,  1,  4, $03, 1
-	dsprite -4,  0, -2,  4, $10, 1
-	dsprite -4,  0, -1,  4, $11, 1
-	dsprite -4,  0,  0,  4, $12, 1
-	dsprite -4,  0,  1,  4, $13, 1
-	dsprite -3,  0, -2,  4, $20, 1
-	dsprite -3,  0, -1,  4, $21, 1
-	dsprite -3,  0,  0,  4, $22, 1
-	dsprite -3,  0,  1,  4, $23, 1
-	dsprite -2,  0, -2,  4, $30, 1
-	dsprite -2,  0, -1,  4, $31, 1
-	dsprite -2,  0,  0,  4, $32, 1
-	dsprite -2,  0,  1,  4, $33, 1
-	dsprite -1,  0, -2,  4, $40, 1
-	dsprite -1,  0, -1,  4, $41, 1
-	dsprite -1,  0,  0,  4, $42, 1
-	dsprite -1,  0,  1,  4, $43, 1
-	dsprite  0,  0, -2,  4, $50, 1
-	dsprite  0,  0, -1,  4, $51, 1
-	dsprite  0,  0,  0,  4, $52, 1
-	dsprite  0,  0,  1,  4, $53, 1
-; 8e706
--- a/data/sprites/sequences.asm
+++ /dev/null
@@ -1,49 +1,0 @@
-SpriteAnimSeqData: ; 8d1c4
-; entries correspond to SPRITE_ANIM_INDEX_* constants
-	; frameset sequence, tile
-	db SPRITE_ANIM_FRAMESET_PARTY_MON,               SPRITE_ANIM_SEQ_PARTY_MON,            $00 ; SPRITE_ANIM_INDEX_PARTY_MON
-	db SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL,          SPRITE_ANIM_SEQ_GS_TITLE_TRAIL,       $00 ; SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05 ; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO,          SPRITE_ANIM_SEQ_GAMEFREAK_LOGO,       $00 ; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR,           SPRITE_ANIM_SEQ_GS_INTRO_STAR,        $06 ; SPRITE_ANIM_INDEX_GS_INTRO_STAR
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE,        SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE,     $06 ; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
-	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM,             SPRITE_ANIM_SEQ_SLOTS_GOLEM,          $07 ; SPRITE_ANIM_INDEX_SLOTS_GOLEM
-	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY,           SPRITE_ANIM_SEQ_SLOTS_CHANSEY,        $07 ; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
-	db SPRITE_ANIM_FRAMESET_SLOTS_EGG,               SPRITE_ANIM_SEQ_SLOTS_EGG,            $07 ; SPRITE_ANIM_INDEX_SLOTS_EGG
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_MAIL_CURSOR,          $05 ; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
-	db SPRITE_ANIM_FRAMESET_RED_WALK,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_RED_WALK
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR,    $08 ; SPRITE_ANIM_INDEX_UNUSED_CURSOR
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR,    $08 ; SPRITE_ANIM_INDEX_DUMMY_GAME
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_POKEGEAR_ARROW,       $08 ; SPRITE_ANIM_INDEX_POKEGEAR_ARROW
-	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL,         SPRITE_ANIM_SEQ_TRADE_POKE_BALL,      $00 ; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
-	db SPRITE_ANIM_FRAMESET_TRADE_POOF,              SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_TRADE_POOF
-	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE,        SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE,     $00 ; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
-	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON,           SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_ICON
-	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE,         SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
-	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
-	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB,       SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB,    $00 ; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED,        SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
-	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_CUT_LEAVES,           $00 ; SPRITE_ANIM_INDEX_LEAF
-	db SPRITE_ANIM_FRAMESET_CUT_TREE,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CUT_TREE
-	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_FLY_LEAF,             $00 ; SPRITE_ANIM_INDEX_FLY_LEAF
-	db SPRITE_ANIM_FRAMESET_EGG_CRACK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_EGG_CRACK
-	db SPRITE_ANIM_FRAMESET_24,                      SPRITE_ANIM_SEQ_19,                   $00 ; SPRITE_ANIM_INDEX_1A
-	db SPRITE_ANIM_FRAMESET_HEADBUTT,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_HEADBUTT
-	db SPRITE_ANIM_FRAMESET_EGG_HATCH,               SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EGG_HATCH
-	db SPRITE_ANIM_FRAMESET_26,                      SPRITE_ANIM_SEQ_1A,                   $00 ; SPRITE_ANIM_INDEX_1D
-	db SPRITE_ANIM_FRAMESET_BLUE_WALK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_BLUE_WALK
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE,       SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
-	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL,  SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
-	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL,    SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_22,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_22
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_23,           SPRITE_ANIM_SEQ_FOR_MOBILE_23,        $00 ; SPRITE_ANIM_INDEX_MOBILE_23
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_24,           SPRITE_ANIM_SEQ_FOR_MOBILE_24,        $00 ; SPRITE_ANIM_INDEX_MOBILE_24
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_25,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_25
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE,           SPRITE_ANIM_SEQ_INTRO_SUICUNE,        $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE
-	db SPRITE_ANIM_FRAMESET_INTRO_PICHU,             SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_PICHU
-	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER,            SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_WOOPER
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1,           SPRITE_ANIM_SEQ_INTRO_UNOWN,          $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F,           SPRITE_ANIM_SEQ_INTRO_UNOWN_F,        $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY,      SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY,   $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
-	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT,             SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CELEBI
-; 8d24b
--- /dev/null
+++ b/data/trainers/pic_pointers.asm
@@ -1,0 +1,69 @@
+TrainerPicPointers::
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+	dba_pic FalknerPic
+	dba_pic WhitneyPic
+	dba_pic BugsyPic
+	dba_pic MortyPic
+	dba_pic PrycePic
+	dba_pic JasminePic
+	dba_pic ChuckPic
+	dba_pic ClairPic
+	dba_pic Rival1Pic
+	dba_pic PokemonProfPic
+	dba_pic WillPic
+	dba_pic CalPic
+	dba_pic BrunoPic
+	dba_pic KarenPic
+	dba_pic KogaPic
+	dba_pic ChampionPic
+	dba_pic BrockPic
+	dba_pic MistyPic
+	dba_pic LtSurgePic
+	dba_pic ScientistPic
+	dba_pic ErikaPic
+	dba_pic YoungsterPic
+	dba_pic SchoolboyPic
+	dba_pic BirdKeeperPic
+	dba_pic LassPic
+	dba_pic JaninePic
+	dba_pic CooltrainermPic
+	dba_pic CooltrainerfPic
+	dba_pic BeautyPic
+	dba_pic PokemaniacPic
+	dba_pic GruntmPic
+	dba_pic GentlemanPic
+	dba_pic SkierPic
+	dba_pic TeacherPic
+	dba_pic SabrinaPic
+	dba_pic BugCatcherPic
+	dba_pic FisherPic
+	dba_pic SwimmermPic
+	dba_pic SwimmerfPic
+	dba_pic SailorPic
+	dba_pic SuperNerdPic
+	dba_pic Rival2Pic
+	dba_pic GuitaristPic
+	dba_pic HikerPic
+	dba_pic BikerPic
+	dba_pic BlainePic
+	dba_pic BurglarPic
+	dba_pic FirebreatherPic
+	dba_pic JugglerPic
+	dba_pic BlackbeltTPic
+	dba_pic ExecutivemPic
+	dba_pic PsychicTPic
+	dba_pic PicnickerPic
+	dba_pic CamperPic
+	dba_pic ExecutivefPic
+	dba_pic SagePic
+	dba_pic MediumPic
+	dba_pic BoarderPic
+	dba_pic PokefanmPic
+	dba_pic KimonoGirlPic
+	dba_pic TwinsPic
+	dba_pic PokefanfPic
+	dba_pic RedPic
+	dba_pic BluePic
+	dba_pic OfficerPic
+	dba_pic GruntfPic
+	dba_pic MysticalmanPic
--- /dev/null
+++ b/docs/battle_anim_commands.md
@@ -1,0 +1,121 @@
+# Battle Animation Commands
+
+Defined in [macros/scripts/battle_anims.asm](/macros/scripts/battle_anims.asm) and [data/moves/move_anims.asm:BattleAnimations](/data/moves/move_anims.asm).
+
+
+## `$00`−`$EF`: `anim_wait` *length*
+
+## `$D0`: `anim_obj` *object*, *x1*, *x2*, *y1*, *y2*, *param*
+
+The *x1*/*x2* and *y1*/*y2* pairs specify the position on screen of the animation object.
+*x1*/*y1* specify a tile position, and *x2*/*y2* specify a pixel offset from that tile. 
+
+Values for *x2*/*y2* are in the 0-7 range, since 8 pixels make a tile.
+
+Values for *x1* are between -16 to 31. In practice *x1* starts between 0 to 15, then between -16 to -10. Negative values are relative to the opponent, while positive values are relative to the player. Useful values are between 14 to -10 (for the opponent) and between 0 to 13 (for the player).
+
+Some sample values are:
+
+- 0: player left border
+- 6: player center
+- -15: enemy center
+- -10: enemy right border
+
+Values for *y1* are also between -16 to 31; the useful range is between 2 to 14.
+Values between 2 to 8 will be in the opponent's area (2 being the top border and 8 being the
+bottom border), and values between 8 to 14 will be in the player's area (again, 8 being the top border and 14 being the bottom border).
+The center of the body is often 2 to 4 tiles away from the border (i.e., 5-6 for the opponent or 10-11 for the player).
+
+## `$D1`: `anim_1gfx` *gfx*
+
+## `$D2`: `anim_2gfx` *gfx1*, *gfx2*
+
+## `$D3`: `anim_3gfx` *gfx1*, *gfx2*, *gfx3*
+
+## `$D4`: `anim_4gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*
+
+## `$D5`: `anim_5gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*, *gfx5*
+
+## `$D6`: `anim_incobj` *id*
+
+## `$D7`: `anim_setobj` *id*, *object*
+
+## `$D8`: `anim_incbgeffect` *effect*
+
+## `$D9`: `anim_enemyfeetobj`
+
+## `$DA`: `anim_playerheadobj`
+
+## `$DB`: `anim_checkpokeball`
+
+## `$DC`: `anim_transform`
+
+## `$DD`: `anim_raisesub`
+
+## `$DE`: `anim_dropsub`
+
+## `$DF`: `anim_resetobp0`
+
+## `$E0`: `anim_sound` *duration*, *tracks*, *id*
+
+## `$E1`: `anim_cry` *pitch*
+
+## `$E2`: `anim_minimizeopp`
+
+## `$E3`: `anim_oamon`
+
+## `$E4`: `anim_oamoff`
+
+## `$E5`: `anim_clearobjs`
+
+## `$E6`: `anim_beatup`
+
+## `$E7`: `anim_0xe7`
+
+## `$E8`: `anim_updateactorpic`
+
+## `$E9`: `anim_minimize`
+
+## `$EA`: `anim_0xea`
+
+## `$EB`: `anim_0xeb`
+
+## `$EC`: `anim_0xec`
+
+## `$ED`: `anim_0xed`
+
+## `$EE`: `anim_if_param_and` *value*, *address*
+
+## `$EF`: `anim_jumpuntil` *address*
+
+## `$F0`: `anim_bgeffect` *effect*, *unknown1*, *unknown2*, *unknown3*
+
+## `$F1`: `anim_bgp` *colors*
+
+## `$F2`: `anim_obp0` *colors*
+
+## `$F3`: `anim_obp1` *colors*
+
+## `$F4`: `anim_clearsprites`
+
+## `$F5`: `anim_0xf5`
+
+## `$F6`: `anim_0xf6`
+
+## `$F7`: `anim_0xf7`
+
+## `$F8`: `anim_if_param_equal` *value*, *address*
+
+## `$F9`: `anim_setvar` *value*
+
+## `$FA`: `anim_incvar`
+
+## `$FB`: `anim_if_var_equal` *value*, *address*
+
+## `$FC`: `anim_jump` *address*
+
+## `$FD`: `anim_loop` *count*, *address*
+
+## `$FE`: `anim_call` *address*
+
+## `$FF`: `anim_ret`
--- a/docs/event_commands.md
+++ b/docs/event_commands.md
@@ -1,6 +1,6 @@
 # Event Commands
 
-Defined in [macros/scripts/event.asm](/macros/scripts/event.asm) and [engine/scripting.asm:ScriptCommandTable](/engine/scripting.asm).
+Defined in [macros/scripts/events.asm](/macros/scripts/events.asm) and [engine/scripting.asm:ScriptCommandTable](/engine/scripting.asm).
 
 
 ## `$00`: `scall` *script*
--- a/docs/move_anim_commands.md
+++ /dev/null
@@ -1,121 +1,0 @@
-# Move Animation Commands
-
-Defined in [macros/scripts/move_anim.asm](/macros/scripts/move_anim.asm) and [data/moves/move_anims.asm:BattleAnimations](/data/moves/move_anims.asm).
-
-
-## `$00`−`$EF`: `anim_wait` *length*
-
-## `$D0`: `anim_obj` *object*, *x1*, *x2*, *y1*, *y2*, *param*
-
-The *x1*/*x2* and *y1*/*y2* pairs specify the position on screen of the animation object.
-*x1*/*y1* specify a tile position, and *x2*/*y2* specify a pixel offset from that tile. 
-
-Values for *x2*/*y2* are in the 0-7 range, since 8 pixels make a tile.
-
-Values for *x1* are between -16 to 31. In practice *x1* starts between 0 to 15, then between -16 to -10. Negative values are relative to the opponent, while positive values are relative to the player. Useful values are between 14 to -10 (for the opponent) and between 0 to 13 (for the player).
-
-Some sample values are:
-
-- 0: player left border
-- 6: player center
-- -15: enemy center
-- -10: enemy right border
-
-Values for *y1* are also between -16 to 31; the useful range is between 2 to 14.
-Values between 2 to 8 will be in the opponent's area (2 being the top border and 8 being the
-bottom border), and values between 8 to 14 will be in the player's area (again, 8 being the top border and 14 being the bottom border).
-The center of the body is often 2 to 4 tiles away from the border (i.e., 5-6 for the opponent or 10-11 for the player).
-
-## `$D1`: `anim_1gfx` *gfx*
-
-## `$D2`: `anim_2gfx` *gfx1*, *gfx2*
-
-## `$D3`: `anim_3gfx` *gfx1*, *gfx2*, *gfx3*
-
-## `$D4`: `anim_4gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*
-
-## `$D5`: `anim_5gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*, *gfx5*
-
-## `$D6`: `anim_incobj` *id*
-
-## `$D7`: `anim_setobj` *id*, *object*
-
-## `$D8`: `anim_incbgeffect` *effect*
-
-## `$D9`: `anim_enemyfeetobj`
-
-## `$DA`: `anim_playerheadobj`
-
-## `$DB`: `anim_checkpokeball`
-
-## `$DC`: `anim_transform`
-
-## `$DD`: `anim_raisesub`
-
-## `$DE`: `anim_dropsub`
-
-## `$DF`: `anim_resetobp0`
-
-## `$E0`: `anim_sound` *duration*, *tracks*, *id*
-
-## `$E1`: `anim_cry` *pitch*
-
-## `$E2`: `anim_minimizeopp`
-
-## `$E3`: `anim_oamon`
-
-## `$E4`: `anim_oamoff`
-
-## `$E5`: `anim_clearobjs`
-
-## `$E6`: `anim_beatup`
-
-## `$E7`: `anim_0xe7`
-
-## `$E8`: `anim_updateactorpic`
-
-## `$E9`: `anim_minimize`
-
-## `$EA`: `anim_0xea`
-
-## `$EB`: `anim_0xeb`
-
-## `$EC`: `anim_0xec`
-
-## `$ED`: `anim_0xed`
-
-## `$EE`: `anim_if_param_and` *value*, *address*
-
-## `$EF`: `anim_jumpuntil` *address*
-
-## `$F0`: `anim_bgeffect` *effect*, *unknown1*, *unknown2*, *unknown3*
-
-## `$F1`: `anim_bgp` *colors*
-
-## `$F2`: `anim_obp0` *colors*
-
-## `$F3`: `anim_obp1` *colors*
-
-## `$F4`: `anim_clearsprites`
-
-## `$F5`: `anim_0xf5`
-
-## `$F6`: `anim_0xf6`
-
-## `$F7`: `anim_0xf7`
-
-## `$F8`: `anim_if_param_equal` *value*, *address*
-
-## `$F9`: `anim_setvar` *value*
-
-## `$FA`: `anim_incvar`
-
-## `$FB`: `anim_if_var_equal` *value*, *address*
-
-## `$FC`: `anim_jump` *address*
-
-## `$FD`: `anim_loop` *count*, *address*
-
-## `$FE`: `anim_call` *address*
-
-## `$FF`: `anim_ret`
--- a/docs/pic_animations.md
+++ b/docs/pic_animations.md
@@ -1,8 +1,7 @@
 # Pic Animations
 
-Defined in [macros/scripts/gfx_anim.asm](/macros/scripts/gfx_anim.asm) and [engine/anims/anim_commands.asm:BattleAnimCommands](/engine/anims/anim_commands.asm).
+Defined in [macros/scripts/gfx_anims.asm](/macros/scripts/gfx_anims.asm).
 
-
 Pic animations are assembled in 3 parts:
 
 - Top-level animations:
@@ -20,12 +19,12 @@
 
 Animation data is in these files:
 
-- gfx/pics/anims.asm:
+- [gfx/pokemon/anims.asm](/gfx/pokemon/anims.asm):
   Main animations (played everywhere)
 
-- gfx/pics/extras.asm:
+- [gfx/pokemon/extras.asm](/gfx/pokemon/extras.asm):
   Extra animations, appended to the main animation.  
   Used in the status screen (blinking, tail wags etc.)
 
-- gfx/pics/unown_anims.asm and gfx/pics/unown_extras.asm:
+- [gfx/pokemon/unown_anims.asm](/gfx/pokemon/unown_anims.asm) and [gfx/pokemon/unown_extras.asm](/gfx/pokemon/unown_extras.asm):
   Unown has its own animation data despite having an entry in the main tables.
--- a/engine/anims/anim_commands.asm
+++ /dev/null
@@ -1,1514 +1,0 @@
-; Battle animation command interpreter.
-
-PlayBattleAnim: ; cc0d6
-
-	ld a, [rSVBK]
-	push af
-
-	ld a, 5
-	ld [rSVBK], a
-
-	call _PlayBattleAnim
-
-	pop af
-	ld [rSVBK], a
-	ret
-; cc0e4
-
-_PlayBattleAnim: ; cc0e4
-
-	ld c, 6
-.wait
-	call BattleAnimDelayFrame
-	dec c
-	jr nz, .wait
-
-	call BattleAnimAssignPals
-	call BattleAnimRequestPals
-	call BattleAnimDelayFrame
-
-	ld c, 1
-	ld a, [rKEY1]
-	bit 7, a
-	jr nz, .asm_cc0ff
-	ld c, 3
-
-.asm_cc0ff
-	ld hl, hVBlank
-	ld a, [hl]
-	push af
-
-	ld [hl], c
-	call BattleAnimRunScript
-
-	pop af
-	ld [hVBlank], a
-
-	ld a, $1
-	ld [hBGMapMode], a
-
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call WaitSFX
-	ret
-; cc11c
-
-BattleAnimRunScript: ; cc11c
-
-	ld a, [FXAnimID + 1]
-	and a
-	jr nz, .hi_byte
-
-	farcall CheckBattleScene
-	jr c, .disabled
-
-	call BattleAnimClearHud
-	call RunBattleAnimScript
-
-	call BattleAnimAssignPals
-	call BattleAnimRequestPals
-
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	call BattleAnimDelayFrame
-	call BattleAnimRestoreHuds
-
-.disabled
-	ld a, [wNumHits]
-	and a
-	jr z, .done
-
-	ld l, a
-	ld h, 0
-	ld de, ANIM_MISS
-	add hl, de
-	ld a, l
-	ld [FXAnimID], a
-	ld a, h
-	ld [FXAnimID + 1], a
-
-.hi_byte
-	call WaitSFX
-	call PlayHitSound
-	call RunBattleAnimScript
-
-.done
-	call BattleAnim_RevertPals
-	ret
-; cc163
-
-RunBattleAnimScript: ; cc163
-
-	call ClearBattleAnims
-
-.playframe
-	call RunBattleAnimCommand
-	call _ExecuteBGEffects
-	call BattleAnim_UpdateOAM_All
-	call PushLYOverrides
-	call BattleAnimRequestPals
-
-; Speed up Rollout's animation.
-	ld a, [FXAnimID + 1]
-	or a
-	jr nz, .not_rollout
-
-	ld a, [FXAnimID]
-	cp ROLLOUT
-	jr nz, .not_rollout
-
-	ld a, $2e
-	ld b, 5
-	ld de, 4
-	ld hl, ActiveBGEffects
-.find
-	cp [hl]
-	jr z, .done
-	add hl, de
-	dec b
-	jr nz, .find
-
-.not_rollout
-	call BattleAnimDelayFrame
-
-.done
-	ld a, [BattleAnimFlags]
-	bit 0, a
-	jr z, .playframe
-
-	call BattleAnim_ClearCGB_OAMFlags
-	ret
-; cc1a1
-
-BattleAnimClearHud: ; cc1a1
-
-	call BattleAnimDelayFrame
-	call WaitTop
-	call ClearActorHud
-	ld a, $1
-	ld [hBGMapMode], a
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call WaitTop
-	ret
-; cc1bb
-
-BattleAnimRestoreHuds: ; cc1bb
-
-	call BattleAnimDelayFrame
-	call WaitTop
-
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-
-	ld hl, UpdateBattleHuds
-	ld a, BANK(UpdatePlayerHUD)
-	rst FarCall ; Why not "call UpdateBattleHuds"?
-
-	pop af
-	ld [rSVBK], a
-
-	ld a, $1
-	ld [hBGMapMode], a
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call BattleAnimDelayFrame
-	call WaitTop
-	ret
-; cc1e2
-
-BattleAnimRequestPals: ; cc1e2
-
-	ld a, [hCGB]
-	and a
-	ret z
-
-	ld a, [rBGP]
-	ld b, a
-	ld a, [wBGP]
-	cp b
-	call nz, BattleAnim_SetBGPals
-
-	ld a, [rOBP0]
-	ld b, a
-	ld a, [wOBP0]
-	cp b
-	call nz, BattleAnim_SetOBPals
-	ret
-; cc1fb
-
-BattleAnimDelayFrame: ; cc1fb
-; Like DelayFrame but wastes battery life.
-
-	ld a, 1
-	ld [VBlankOccurred], a
-.wait
-	ld a, [VBlankOccurred]
-	and a
-	jr nz, .wait
-	ret
-; cc207
-
-ClearActorHud: ; cc207
-
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	hlcoord 1, 0
-	lb bc, 4, 10
-	call ClearBox
-	ret
-
-.player
-	hlcoord 9, 7
-	lb bc, 5, 11
-	call ClearBox
-	ret
-; cc220
-
-Functioncc220: ; cc220
-; Appears to be unused.
-	xor a
-	ld [hBGMapMode], a
-	ld a, LOW(VBGMap0 tile $28)
-	ld [hBGMapAddress], a
-	ld a, HIGH(VBGMap0 tile $28)
-	ld [hBGMapAddress + 1], a
-	call WaitBGMap2
-	ld a, $60
-	ld [hWY], a
-	xor a ; LOW(VBGMap0)
-	ld [hBGMapAddress], a
-	ld a, HIGH(VBGMap0)
-	ld [hBGMapAddress + 1], a
-	call BattleAnimDelayFrame
-	ret
-; cc23d
-
-
-BattleAnim_ClearCGB_OAMFlags: ; cc23d
-
-	ld a, [BattleAnimFlags]
-	bit 3, a
-	jr z, .delete
-
-	ld hl, Sprites + 3
-	ld c, (SpritesEnd - Sprites) / 4
-.loop
-	ld a, [hl]
-	and $f0
-	ld [hli], a
-	inc hl
-	inc hl
-	inc hl
-	dec c
-	jr nz, .loop
-	ret
-
-.delete
-	ld hl, Sprites
-	ld c, SpritesEnd - Sprites
-	xor a
-.loop2
-	ld [hli], a
-	dec c
-	jr nz, .loop2
-	ret
-; cc25f
-
-RunBattleAnimCommand: ; cc25f
-	call .CheckTimer
-	ret nc
-	call .RunScript
-	ret
-; cc267
-
-.CheckTimer: ; cc267
-	ld a, [BattleAnimDuration]
-	and a
-	jr z, .done
-
-	dec a
-	ld [BattleAnimDuration], a
-	and a
-	ret
-
-.done
-	scf
-	ret
-; cc275
-
-.RunScript: ; cc275
-.loop
-	call GetBattleAnimByte
-
-	cp $ff
-	jr nz, .not_done_with_anim
-
-; Return from a subroutine.
-	ld hl, BattleAnimFlags
-	bit 1, [hl]
-	jr nz, .do_anim
-
-	set 0, [hl]
-	ret
-
-.not_done_with_anim
-	cp $d0
-	jr nc, .do_anim
-
-	ld [BattleAnimDuration], a
-	ret
-
-.do_anim
-	call .DoCommand
-
-	jr .loop
-; cc293
-
-.DoCommand: ; cc293
-; Execute battle animation command in [BattleAnimByte].
-	ld a, [BattleAnimByte]
-	sub $d0
-
-	ld e, a
-	ld d, 0
-	ld hl, BattleAnimCommands
-	add hl, de
-	add hl, de
-
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-; cc2a4
-
-
-BattleAnimCommands:: ; cc2a4 (33:42a4)
-; entries correspond to macros/move_anim.asm enumeration
-	dw BattleAnimCmd_Obj
-	dw BattleAnimCmd_1GFX
-	dw BattleAnimCmd_2GFX
-	dw BattleAnimCmd_3GFX
-	dw BattleAnimCmd_4GFX
-	dw BattleAnimCmd_5GFX
-	dw BattleAnimCmd_IncObj
-	dw BattleAnimCmd_SetObj
-	dw BattleAnimCmd_IncBGEffect
-	dw BattleAnimCmd_EnemyFeetObj
-	dw BattleAnimCmd_PlayerHeadObj
-	dw BattleAnimCmd_CheckPokeball
-	dw BattleAnimCmd_Transform
-	dw BattleAnimCmd_RaiseSub
-	dw BattleAnimCmd_DropSub
-	dw BattleAnimCmd_ResetObp0
-	dw BattleAnimCmd_Sound
-	dw BattleAnimCmd_Cry
-	dw BattleAnimCmd_MinimizeOpp
-	dw BattleAnimCmd_OAMOn
-	dw BattleAnimCmd_OAMOff
-	dw BattleAnimCmd_ClearObjs
-	dw BattleAnimCmd_BeatUp
-	dw BattleAnimCmd_E7
-	dw BattleAnimCmd_UpdateActorPic
-	dw BattleAnimCmd_Minimize
-	dw BattleAnimCmd_EA ; dummy
-	dw BattleAnimCmd_EB ; dummy
-	dw BattleAnimCmd_EC ; dummy
-	dw BattleAnimCmd_ED ; dummy
-	dw BattleAnimCmd_IfParamAnd
-	dw BattleAnimCmd_JumpUntil
-	dw BattleAnimCmd_BGEffect
-	dw BattleAnimCmd_BGP
-	dw BattleAnimCmd_OBP0
-	dw BattleAnimCmd_OBP1
-	dw BattleAnimCmd_ClearSprites
-	dw BattleAnimCmd_F5
-	dw BattleAnimCmd_F6
-	dw BattleAnimCmd_F7
-	dw BattleAnimCmd_IfParamEqual
-	dw BattleAnimCmd_SetVar
-	dw BattleAnimCmd_IncVar
-	dw BattleAnimCmd_IfVarEqual
-	dw BattleAnimCmd_Jump
-	dw BattleAnimCmd_Loop
-	dw BattleAnimCmd_Call
-	dw BattleAnimCmd_Ret
-
-
-BattleAnimCmd_EA:
-BattleAnimCmd_EB:
-BattleAnimCmd_EC:
-BattleAnimCmd_ED: ; cc304 (33:4304)
-	ret
-
-BattleAnimCmd_Ret: ; cc305 (33:4305)
-	ld hl, BattleAnimFlags
-	res 1, [hl]
-	ld hl, BattleAnimParent
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-BattleAnimCmd_Call: ; cc317 (33:4317)
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	push de
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, BattleAnimParent
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	pop de
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, BattleAnimFlags
-	set 1, [hl]
-	ret
-
-BattleAnimCmd_Jump: ; cc339 (33:4339)
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-BattleAnimCmd_Loop: ; cc348 (33:4348)
-	call GetBattleAnimByte
-	ld hl, BattleAnimFlags
-	bit 2, [hl]
-	jr nz, .continue_loop
-	and a
-	jr z, .perpetual
-	dec a
-	set 2, [hl]
-	ld [BattleAnimLoops], a
-.continue_loop
-	ld hl, BattleAnimLoops
-	ld a, [hl]
-	and a
-	jr z, .return_from_loop
-	dec [hl]
-.perpetual
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-.return_from_loop
-	ld hl, BattleAnimFlags
-	res 2, [hl]
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-
-BattleAnimCmd_JumpUntil: ; cc383 (33:4383)
-	ld hl, wBattleAnimParam
-	ld a, [hl]
-	and a
-	jr z, .dont_jump
-
-	dec [hl]
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-.dont_jump
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-
-BattleAnimCmd_SetVar: ; cc3a6 (33:43a6)
-	call GetBattleAnimByte
-	ld [BattleAnimVar], a
-	ret
-
-BattleAnimCmd_IncVar: ; cc3ad (33:43ad)
-	ld hl, BattleAnimVar
-	inc [hl]
-	ret
-
-BattleAnimCmd_IfVarEqual: ; cc3b2 (33:43b2)
-	call GetBattleAnimByte
-	ld hl, BattleAnimVar
-	cp [hl]
-	jr z, .jump
-
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-
-.jump
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-BattleAnimCmd_IfParamEqual: ; cc3d6 (33:43d6)
-	call GetBattleAnimByte
-	ld hl, wBattleAnimParam
-	cp [hl]
-	jr z, .jump
-
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-
-.jump
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-BattleAnimCmd_IfParamAnd: ; cc3fa (33:43fa)
-	call GetBattleAnimByte
-	ld e, a
-	ld a, [wBattleAnimParam]
-	and e
-	jr nz, .jump
-
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc de
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-
-.jump
-	call GetBattleAnimByte
-	ld e, a
-	call GetBattleAnimByte
-	ld d, a
-	ld hl, BattleAnimAddress
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-
-BattleAnimCmd_Obj: ; cc41f (33:441f)
-; index, x, y, param
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp0], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp1], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp2], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp3], a
-	call QueueBattleAnimation
-	ret
-
-BattleAnimCmd_BGEffect: ; cc43b (33:443b)
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp0], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp1], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp2], a
-	call GetBattleAnimByte
-	ld [wBattleAnimTemp3], a
-	call _QueueBGEffect
-	ret
-
-BattleAnimCmd_BGP: ; cc457 (33:4457)
-	call GetBattleAnimByte
-	ld [wBGP], a
-	ret
-
-BattleAnimCmd_OBP0: ; cc45e (33:445e)
-	call GetBattleAnimByte
-	ld [wOBP0], a
-	ret
-
-BattleAnimCmd_OBP1: ; cc465 (33:4465)
-	call GetBattleAnimByte
-	ld [wOBP1], a
-	ret
-
-BattleAnimCmd_ResetObp0: ; cc46c (33:446c)
-	ld a, [hSGB]
-	and a
-	ld a, $e0
-	jr z, .not_sgb
-	ld a, $f0
-.not_sgb
-	ld [wOBP0], a
-	ret
-
-BattleAnimCmd_ClearObjs: ; cc479 (33:4479)
-	ld hl, ActiveAnimObjects
-	ld a, $a0
-.loop
-	ld [hl], $0
-	inc hl
-	dec a
-	jr nz, .loop
-	ret
-
-BattleAnimCmd_1GFX:
-BattleAnimCmd_2GFX:
-BattleAnimCmd_3GFX:
-BattleAnimCmd_4GFX:
-BattleAnimCmd_5GFX: ; cc485 (33:4485)
-	ld a, [BattleAnimByte]
-	and $f
-	ld c, a
-	ld hl, wBattleAnimTileDict
-	xor a
-	ld [wBattleAnimTemp0], a
-.loop
-	ld a, [wBattleAnimTemp0]
-	cp (VTiles1 - VTiles0) / $10 - $31
-	ret nc
-	call GetBattleAnimByte
-	ld [hli], a
-	ld a, [wBattleAnimTemp0]
-	ld [hli], a
-	push bc
-	push hl
-	ld l, a
-	ld h, $0
-rept 4
-	add hl, hl
-endr
-	ld de, VTiles0 tile $31
-	add hl, de
-	ld a, [BattleAnimByte]
-	call LoadBattleAnimObj
-	ld a, [wBattleAnimTemp0]
-	add c
-	ld [wBattleAnimTemp0], a
-	pop hl
-	pop bc
-	dec c
-	jr nz, .loop
-	ret
-
-BattleAnimCmd_IncObj: ; cc4c0 (33:44c0)
-	call GetBattleAnimByte
-	ld e, 10
-	ld bc, ActiveAnimObjects
-.loop
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld d, [hl]
-	ld a, [BattleAnimByte]
-	cp d
-	jr z, .found
-	ld hl, BATTLEANIMSTRUCT_LENGTH
-	add hl, bc
-	ld c, l
-	ld b, h
-	dec e
-	jr nz, .loop
-	ret
-
-.found
-	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
-	add hl, bc
-	inc [hl]
-	ret
-
-BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3)
-	call GetBattleAnimByte
-	ld e, 5
-	ld bc, ActiveBGEffects
-.loop
-	ld hl, $0
-	add hl, bc
-	ld d, [hl]
-	ld a, [BattleAnimByte]
-	cp d
-	jr z, .found
-	ld hl, 4
-	add hl, bc
-	ld c, l
-	ld b, h
-	dec e
-	jr nz, .loop
-	ret
-
-.found
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	inc [hl]
-	ret
-
-BattleAnimCmd_SetObj: ; cc506 (33:4506)
-	call GetBattleAnimByte
-	ld e, 10
-	ld bc, ActiveAnimObjects
-.loop
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld d, [hl]
-	ld a, [BattleAnimByte]
-	cp d
-	jr z, .found
-	ld hl, BATTLEANIMSTRUCT_LENGTH
-	add hl, bc
-	ld c, l
-	ld b, h
-	dec e
-	jr nz, .loop
-	ret
-
-.found
-	call GetBattleAnimByte
-	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
-	add hl, bc
-	ld [hl], a
-	ret
-
-BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c)
-
-	ld hl, wBattleAnimTileDict
-.loop
-	ld a, [hl]
-	and a
-	jr z, .okay
-	inc hl
-	inc hl
-	jr .loop
-
-.okay
-	ld a, $28
-	ld [hli], a
-	ld a, $42
-	ld [hli], a
-	ld a, $29
-	ld [hli], a
-	ld a, $49
-	ld [hl], a
-
-	ld hl, VTiles0 tile $73
-	ld de, VTiles2 tile $06
-	ld a, $70
-	ld [wBattleAnimTemp0], a
-	ld a, $7
-	call .LoadFootprint
-	ld de, VTiles2 tile $31
-	ld a, $60
-	ld [wBattleAnimTemp0], a
-	ld a, $6
-	call .LoadFootprint
-	ret
-
-.LoadFootprint: ; cc561 (33:4561)
-	push af
-	push hl
-	push de
-	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
-	call Request2bpp
-	pop de
-	ld a, [wBattleAnimTemp0]
-	ld l, a
-	ld h, 0
-	add hl, de
-	ld e, l
-	ld d, h
-	pop hl
-	ld bc, 1 tiles
-	add hl, bc
-	pop af
-	dec a
-	jr nz, .LoadFootprint
-	ret
-
-BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e)
-
-	ld hl, wBattleAnimTileDict
-.loop
-	ld a, [hl]
-	and a
-	jr z, .okay
-	inc hl
-	inc hl
-	jr .loop
-
-.okay
-	ld a, $28
-	ld [hli], a
-	ld a, $35
-	ld [hli], a
-	ld a, $29
-	ld [hli], a
-	ld a, $43
-	ld [hl], a
-
-	ld hl, VTiles0 tile $66
-	ld de, VTiles2 tile $05
-	ld a, $70
-	ld [wBattleAnimTemp0], a
-	ld a, $7
-	call .LoadHead
-	ld de, VTiles2 tile $31
-	ld a, $60
-	ld [wBattleAnimTemp0], a
-	ld a, $6
-	call .LoadHead
-	ret
-
-.LoadHead: ; cc5b3 (33:45b3)
-	push af
-	push hl
-	push de
-	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
-	call Request2bpp
-	pop de
-	ld a, [wBattleAnimTemp0]
-	ld l, a
-	ld h, 0
-	add hl, de
-	ld e, l
-	ld d, h
-	pop hl
-	ld bc, 2 tiles
-	add hl, bc
-	pop af
-	dec a
-	jr nz, .LoadHead
-	ret
-
-BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0)
-	callfar GetPokeBallWobble
-	ld a, c
-	ld [BattleAnimVar], a
-	ret
-
-BattleAnimCmd_E7: ; cc5db (33:45db)
-	ret
-
-BattleAnimCmd_Transform: ; cc5dc (33:45dc)
-	ld a, [rSVBK]
-	push af
-	ld a, 1
-	ld [rSVBK], a
-	ld a, [CurPartySpecies] ; CurPartySpecies
-	push af
-
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies
-	ld [CurPartySpecies], a ; CurPartySpecies
-	ld hl, BattleMonDVs ; BattleMonDVs
-	predef GetUnownLetter
-	ld de, VTiles0 tile $00
-	predef GetMonFrontpic
-	jr .done
-
-.player
-	ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies
-	ld [CurPartySpecies], a ; CurPartySpecies
-	ld hl, EnemyMonDVs ; EnemyMonDVs
-	predef GetUnownLetter
-	ld de, VTiles0 tile $00
-	predef GetMonBackpic
-
-.done
-	pop af
-	ld [CurPartySpecies], a ; CurPartySpecies
-	pop af
-	ld [rSVBK], a
-	ret
-
-BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622)
-
-	ld de, VTiles0 tile $00
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	ld hl, VTiles2 tile $00
-	ld b, 0
-	ld c, $31
-	call Request2bpp
-	ret
-
-.player
-	ld hl, VTiles2 tile $31
-	ld b, 0
-	ld c, $24
-	call Request2bpp
-	ret
-
-BattleAnimCmd_RaiseSub: ; cc640 (33:4640)
-
-	ld a, [rSVBK]
-	push af
-	ld a, 1
-	ld [rSVBK], a
-	xor a
-	call GetSRAMBank
-
-GetSubstitutePic: ; cc64c
-
-	ld hl, sScratch
-	ld bc, (7 * 7) tiles
-.loop
-	xor a
-	ld [hli], a
-	dec bc
-	ld a, c
-	or b
-	jr nz, .loop
-
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	ld hl, MonsterSpriteGFX + 0 tiles
-	ld de, sScratch + (2 * 7 + 5) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 1 tiles
-	ld de, sScratch + (3 * 7 + 5) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 2 tiles
-	ld de, sScratch + (2 * 7 + 6) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 3 tiles
-	ld de, sScratch + (3 * 7 + 6) tiles
-	call .CopyTile
-
-	ld hl, VTiles2 tile $00
-	ld de, sScratch
-	lb bc, BANK(GetSubstitutePic), 7 * 7
-	call Request2bpp
-	jr .done
-
-.player
-	ld hl, MonsterSpriteGFX + 4 tiles
-	ld de, sScratch + (2 * 6 + 4) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 5 tiles
-	ld de, sScratch + (3 * 6 + 4) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 6 tiles
-	ld de, sScratch + (2 * 6 + 5) tiles
-	call .CopyTile
-	ld hl, MonsterSpriteGFX + 7 tiles
-	ld de, sScratch + (3 * 6 + 5) tiles
-	call .CopyTile
-
-	ld hl, VTiles2 tile $31
-	ld de, sScratch
-	lb bc, BANK(GetSubstitutePic), 6 * 6
-	call Request2bpp
-
-.done
-	call CloseSRAM
-	pop af
-	ld [rSVBK], a
-	ret
-
-.CopyTile: ; cc6c6 (33:46c6)
-	ld bc, 1 tiles
-	ld a, BANK(MonsterSpriteGFX)
-	call FarCopyBytes
-	ret
-
-BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf)
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	xor a
-	call GetSRAMBank
-	call GetMinimizePic
-	call Request2bpp
-	call CloseSRAM
-	pop af
-	ld [rSVBK], a
-	ret
-
-GetMinimizePic: ; cc6e7 (33:46e7)
-	ld hl, sScratch
-	ld bc, $31 tiles
-.loop
-	xor a
-	ld [hli], a
-	dec bc
-	ld a, c
-	or b
-	jr nz, .loop
-
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	ld de, sScratch + $1a tiles
-	call CopyMinimizePic
-	ld hl, VTiles2 tile $00
-	ld de, sScratch
-	lb bc, BANK(GetMinimizePic), $31
-	ret
-
-.player
-	ld de, sScratch + $160
-	call CopyMinimizePic
-	ld hl, VTiles2 tile $31
-	ld de, sScratch
-	lb bc, BANK(GetMinimizePic), $24
-	ret
-
-CopyMinimizePic: ; cc719 (33:4719)
-	ld hl, MinimizePic
-	ld bc, $10
-	ld a, BANK(MinimizePic)
-	call FarCopyBytes
-	ret
-; cc725 (33:4725)
-
-MinimizePic: ; cc725
-INCBIN "gfx/battle/minimize.2bpp"
-; cc735
-
-BattleAnimCmd_Minimize: ; cc735 (33:4735)
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	xor a
-	call GetSRAMBank
-	call GetMinimizePic
-	ld hl, VTiles0 tile $00
-	call Request2bpp
-	call CloseSRAM
-	pop af
-	ld [rSVBK], a
-	ret
-
-BattleAnimCmd_DropSub: ; cc750 (33:4750)
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-
-	ld a, [CurPartySpecies] ; CurPartySpecies
-	push af
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	callfar DropEnemySub
-	jr .done
-
-.player
-	callfar DropPlayerSub
-
-.done
-	pop af
-	ld [CurPartySpecies], a ; CurPartySpecies
-	pop af
-	ld [rSVBK], a
-	ret
-
-BattleAnimCmd_BeatUp: ; cc776 (33:4776)
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [CurPartySpecies] ; CurPartySpecies
-	push af
-
-	ld a, [wBattleAnimParam]
-	ld [CurPartySpecies], a ; CurPartySpecies
-
-	ld a, [hBattleTurn]
-	and a
-	jr z, .player
-
-	ld hl, BattleMonDVs
-	predef GetUnownLetter
-	ld de, VTiles2 tile $00
-	predef GetMonFrontpic
-	jr .done
-
-.player
-	ld hl, EnemyMonDVs
-	predef GetUnownLetter
-	ld de, VTiles2 tile $31
-	predef GetMonBackpic
-
-.done
-	pop af
-	ld [CurPartySpecies], a ; CurPartySpecies
-	ld b, SCGB_BATTLE_COLORS
-	call GetSGBLayout
-	pop af
-	ld [rSVBK], a
-	ret
-
-BattleAnimCmd_OAMOn: ; cc7bb (33:47bb)
-	xor a
-	ld [hOAMUpdate], a
-	ret
-
-BattleAnimCmd_OAMOff: ; cc7bf (33:47bf)
-	ld a, $1
-	ld [hOAMUpdate], a
-	ret
-
-BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4)
-	ld hl, BattleAnimFlags
-	set 3, [hl]
-	ret
-
-BattleAnimCmd_F5: ; cc7ca (33:47ca)
-	ret
-
-BattleAnimCmd_F6: ; cc7cb (33:47cb)
-	ret
-
-BattleAnimCmd_F7: ; cc7cc (33:47cc)
-	ret
-
-BattleAnimCmd_Sound: ; cc7cd (33:47cd)
-	call GetBattleAnimByte
-	ld e, a
-	srl a
-	srl a
-	ld [wSFXDuration], a
-	call .GetCryTrack
-	and 3
-	ld [CryTracks], a ; CryTracks
-
-	ld e, a
-	ld d, 0
-	ld hl, .GetPanning
-	add hl, de
-	ld a, [hl]
-	ld [wStereoPanningMask], a
-
-	call GetBattleAnimByte
-	ld e, a
-	ld d, 0
-	callfar PlayStereoSFX
-
-	ret
-; cc7f8 (33:47f8)
-
-.GetPanning: ; cc7f8
-	db $f0, $0f, $f0, $0f
-; cc7fc
-
-.GetCryTrack: ; cc7fc (33:47fc)
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .enemy
-
-	ld a, e
-	ret
-
-.enemy
-	ld a, e
-	xor 1
-	ret
-
-BattleAnimCmd_Cry: ; cc807 (33:4807)
-	call GetBattleAnimByte
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .CryData
-rept 4
-	add hl, de
-endr
-
-	ld a, [rSVBK]
-	push af
-	ld a, 1
-	ld [rSVBK], a
-
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .enemy
-
-	ld a, $f0
-	ld [CryTracks], a ; CryTracks
-	ld a, [BattleMonSpecies] ; BattleMonSpecies
-	jr .done_cry_tracks
-
-.enemy
-	ld a, $0f
-	ld [CryTracks], a ; CryTracks
-	ld a, [EnemyMonSpecies] ; EnemyMon
-
-.done_cry_tracks
-	push hl
-	call LoadCryHeader
-	pop hl
-	jr c, .done
-
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-
-	push hl
-	ld hl, CryPitch
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, bc
-	ld a, l
-	ld [CryPitch], a
-	ld a, h
-	ld [CryPitch + 1], a
-	pop hl
-
-	ld a, [hli]
-	ld c, a
-	ld b, [hl]
-	ld hl, CryLength ; CryLength
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, bc
-
-	ld a, l
-	ld [CryLength], a ; CryLength
-	ld a, h
-	ld [CryLength + 1], a
-	ld a, 1
-	ld [wStereoPanningMask], a
-
-	callfar _PlayCryHeader
-
-.done
-	pop af
-	ld [rSVBK], a
-	ret
-; cc871 (33:4871)
-
-.CryData: ; cc871
-; +pitch, +length
-	dw $0000, $00c0
-	dw $0000, $0040
-	dw $0000, $0000
-	dw $0000, $0000
-; cc881
-
-
-PlayHitSound: ; cc881
-	ld a, [wNumHits]
-	cp $1
-	jr z, .okay
-	cp $4
-	ret nz
-
-.okay
-	ld a, [TypeModifier]
-	and $7f
-	ret z
-
-	cp 10
-	ld de, SFX_DAMAGE
-	jr z, .play
-
-	ld de, SFX_SUPER_EFFECTIVE
-	jr nc, .play
-
-	ld de, SFX_NOT_VERY_EFFECTIVE
-
-.play
-	call PlaySFX
-	ret
-; cc8a4
-
-BattleAnimAssignPals: ; cc8a4
-	ld a, [hCGB]
-	and a
-	jr nz, .cgb
-	ld a, [hSGB]
-	and a
-	ld a, %11100000
-	jr z, .sgb
-	ld a, %11110000
-
-.sgb
-	ld [wOBP0], a
-	ld a, %11100100
-	ld [wBGP], a
-	ld [wOBP1], a
-	ret
-
-.cgb
-	ld a, %11100100
-	ld [wBGP], a
-	ld [wOBP0], a
-	ld [wOBP1], a
-	call DmgToCgbBGPals
-	lb de, %11100100, %11100100
-	call DmgToCgbObjPals
-	ret
-; cc8d3
-
-ClearBattleAnims: ; cc8d3
-; Clear animation block
-	ld hl, LYOverrides
-	ld bc, wBattleAnimEnd - LYOverrides
-.loop
-	ld [hl], $0
-	inc hl
-	dec bc
-	ld a, c
-	or b
-	jr nz, .loop
-
-	ld hl, FXAnimID
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, BattleAnimations
-	add hl, de
-	add hl, de
-	call GetBattleAnimPointer
-	call BattleAnimAssignPals
-	call BattleAnimDelayFrame
-	ret
-; cc8f6
-
-BattleAnim_RevertPals: ; cc8f6
-	call WaitTop
-	ld a, %11100100
-	ld [wBGP], a
-	ld [wOBP0], a
-	ld [wOBP1], a
-	call DmgToCgbBGPals
-	lb de, %11100100, %11100100
-	call DmgToCgbObjPals
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	call BattleAnimDelayFrame
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-; cc91a
-
-BattleAnim_SetBGPals: ; cc91a
-	ld [rBGP], a
-	ld a, [hCGB]
-	and a
-	ret z
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, BGPals
-	ld de, UnknBGPals
-	ld a, [rBGP]
-	ld b, a
-	ld c, 7
-	call CopyPals
-	ld hl, OBPals
-	ld de, UnknOBPals
-	ld a, [rBGP]
-	ld b, a
-	ld c, 2
-	call CopyPals
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; cc94b
-
-BattleAnim_SetOBPals: ; cc94b
-	ld [rOBP0], a
-	ld a, [hCGB]
-	and a
-	ret z
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, OBPals palette PAL_BATTLE_OB_GRAY
-	ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY
-	ld a, [rOBP0]
-	ld b, a
-	ld c, 2
-	call CopyPals
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; cc96e
-
-BattleAnim_UpdateOAM_All: ; cc96e
-	ld a, $0
-	ld [wBattleAnimOAMPointerLo], a
-	ld hl, ActiveAnimObjects
-	ld e, 10
-.loop
-	ld a, [hl]
-	and a
-	jr z, .next
-	ld c, l
-	ld b, h
-	push hl
-	push de
-	call DoBattleAnimFrame
-	call BattleAnimOAMUpdate
-	pop de
-	pop hl
-	jr c, .done
-
-.next
-	ld bc, BATTLEANIMSTRUCT_LENGTH
-	add hl, bc
-	dec e
-	jr nz, .loop
-	ld a, [wBattleAnimOAMPointerLo]
-	ld l, a
-	ld h, HIGH(Sprites)
-.loop2
-	ld a, l
-	cp LOW(SpritesEnd)
-	jr nc, .done
-	xor a
-	ld [hli], a
-	jr .loop2
-
-.done
-	ret
-; cc9a1
--- a/engine/anims/bg_effects.asm
+++ /dev/null
@@ -1,2958 +1,0 @@
-	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.
-
-ExecuteBGEffects: ; c8000 (32:4000)
-	ld hl, ActiveBGEffects
-	ld e, 5
-.loop
-	ld a, [hl]
-	and a
-	jr z, .next
-	ld c, l
-	ld b, h
-	push hl
-	push de
-	call DoBattleBGEffectFunction
-	pop de
-	pop hl
-.next
-	ld bc, 4
-	add hl, bc
-	dec e
-	jr nz, .loop
-	ret
-
-QueueBGEffect: ; c801a (32:401a)
-	ld hl, ActiveBGEffects
-	ld e, 5
-.loop
-	ld a, [hl]
-	and a
-	jr z, .load
-	ld bc, 4
-	add hl, bc
-	dec e
-	jr nz, .loop
-	scf
-	ret
-
-.load
-	ld c, l
-	ld b, h
-	ld hl, BG_EFFECT_STRUCT_FUNCTION
-	add hl, bc
-	ld a, [wBattleAnimTemp0]
-	ld [hli], a
-	ld a, [wBattleAnimTemp1]
-	ld [hli], a
-	ld a, [wBattleAnimTemp2]
-	ld [hli], a
-	ld a, [wBattleAnimTemp3]
-	ld [hl], a
-	ret
-
-EndBattleBGEffect: ; c8043 (32:4043)
-	ld hl, BG_EFFECT_STRUCT_FUNCTION
-	add hl, bc
-	ld [hl], 0
-	ret
-
-DoBattleBGEffectFunction: ; c804a (32:404a)
-	ld hl, BG_EFFECT_STRUCT_FUNCTION
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, BattleBGEffects
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-
-BattleBGEffects: ; c805a (32:405a)
-; entries correspond to ANIM_BG_* constants
-	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_Withdraw
-	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_End: ; c80c6 (32:40c6)
-	call EndBattleBGEffect
-	ret
-
-BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca)
-	ld hl, BG_EFFECT_STRUCT_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
-	ret
-
-BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7)
-	pop de
-	ld hl, BG_EFFECT_STRUCT_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
-
-BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5)
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	inc [hl]
-	ret
-
-BattleBGEffect_FlashInverted: ; c80eb (32:40eb)
-	ld de, .inverted
-	jp BattleBGEffect_FlashContinue
-
-.inverted
-	db %11100100 ; 3210
-	db %00011011 ; 0123
-; c80f3
-
-BattleBGEffect_FlashWhite: ; c80f3 (32:40f3)
-	ld de, .white
-	jp BattleBGEffect_FlashContinue
-
-.white
-	db %11100100 ; 3210
-	db %00000000 ; 0000
-; c80fb
-
-BattleBGEffect_FlashContinue: ; c80fb (32:40fb)
-; current timer, flash duration, number of flashes
-	ld a, $1
-	ld [wBattleAnimTemp0], a
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .init
-	dec [hl]
-	ret
-
-.init
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld [hl], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .apply_pal
-	call EndBattleBGEffect
-	ret
-
-.apply_pal
-	dec a
-	ld [hl], a
-	and 1
-	ld l, a
-	ld h, 0
-	add hl, de
-	ld a, [hl]
-	ld [wBGP], a
-	ret
-
-BattleBGEffect_WhiteHues: ; c812d (32:412d)
-	ld de, .Pals
-	call BattleBGEffect_GetNthDMGPal
-	jr c, .quit
-	ld [wBGP], a
-	ret
-
-.quit
-	call EndBattleBGEffect
-	ret
-
-.Pals:
-	db %11100100
-	db %11100000
-	db %11010000
-	db -1
-; c8141
-
-BattleBGEffect_BlackHues: ; c8141 (32:4141)
-	ld de, .Pals
-	call BattleBGEffect_GetNthDMGPal
-	jr c, .quit
-	ld [wBGP], a
-	ret
-
-.quit
-	call EndBattleBGEffect
-	ret
-
-.Pals:
-	db %11100100
-	db %11110100
-	db %11111000
-	db -1
-; c8155
-
-BattleBGEffect_AlternateHues: ; c8155 (32:4155)
-	ld de, .Pals
-	call BattleBGEffect_GetNthDMGPal
-	jr c, .quit
-	ld [wBGP], a
-	ld [wOBP1], a
-	ret
-
-.quit
-	call EndBattleBGEffect
-	ret
-
-.Pals:
-	db %11100100
-	db %11111000
-	db %11111100
-	db %11111000
-	db %11100100
-	db %10010000
-	db %01000000
-	db %10010000
-	db -2
-; c8171
-
-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
-
-.PalsCGB:
-	db %11100100
-	db %10010000
-	db -2
-
-.PalsSGB:
-	db %11110000
-	db %11000000
-	db -2
-; c818b
-
-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
-
-.PalsCGB:
-	db %11100100
-	db %11011000
-	db -2
-
-.PalsSGB:
-	db %11110000
-	db %11001100
-	db -2
-; c81a5
-
-BattleBGEffect_08: ; c81a5 (32:41a5)
-	ld de, .Pals
-	call BattleBGEffect_GetNthDMGPal
-	ld [wBGP], a
-	ret
-
-.Pals:
-	db %00011011
-	db %01100011
-	db %10000111
-	db -2
-; c81b3
-
-BattleBGEffect_HideMon: ; c81b3 (32:41b3)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw BattleBGEffects_IncrementJumptable
-	dw BattleBGEffects_IncrementJumptable
-	dw BattleBGEffects_IncrementJumptable
-	dw .four
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	push bc
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_side
-	hlcoord 12, 0
-	lb bc, 7, 7
-	jr .got_pointer
-
-.player_side
-	hlcoord 2, 6
-	lb bc, 6, 6
-.got_pointer
-	call ClearBox
-	pop bc
-	xor a
-	ld [hBGMapThird], a
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.four
-	xor a
-	ld [hBGMapMode], a
-	call EndBattleBGEffect
-	ret
-
-BattleBGEffect_ShowMon: ; c81ea (32:41ea)
-	call BGEffect_CheckFlyDigStatus
-	jr z, .not_flying
-	call EndBattleBGEffect
-	ret
-
-.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 [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	call BattleBGEffect_RunPicResizeScript
-	ret
-
-.PlayerData:
-	db  0, $31, 0
-	db -1
-.EnemyData:
-	db  3, $00, 3
-	db -1
-; c8214
-
-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
-
-
-.zero
-	call BGEffect_CheckFlyDigStatus
-	jr z, .not_flying_digging
-	ld hl, wNumActiveBattleAnims
-	inc [hl]
-	call EndBattleBGEffect
-	ret
-
-.not_flying_digging
-	call BattleBGEffects_IncrementJumptable
-	push bc
-	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 [wBattleAnimTemp3], a
-	call _QueueBattleAnimation
-	pop bc
-	ret
-
-.one
-	call BattleBGEffects_IncrementJumptable
-	push bc
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_turn_2
-	hlcoord 12, 6
-	lb bc, 1, 7
-	jr .okay2
-
-.player_turn_2
-	hlcoord 2, 6
-	lb bc, 1, 6
-.okay2
-	call ClearBox
-	ld a, $1
-	ld [hBGMapMode], a
-	pop bc
-	ret
-
-.five
-	xor a
-	ld [hBGMapMode], a
-	call EndBattleBGEffect
-	ret
-
-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
-
-
-.zero
-	call BGEffect_CheckFlyDigStatus
-	jr z, .not_flying_digging
-	ld hl, wNumActiveBattleAnims
-	inc [hl]
-	call EndBattleBGEffect
-	ret
-
-.not_flying_digging
-	call BattleBGEffects_IncrementJumptable
-	push bc
-	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 [wBattleAnimTemp3], a
-	call _QueueBattleAnimation
-	pop bc
-	ret
-
-.one
-	call BattleBGEffects_IncrementJumptable
-	push bc
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_turn_2
-	hlcoord 12, 5
-	lb bc, 2, 7
-	jr .okay2
-
-.player_turn_2
-	hlcoord 2, 6
-	lb bc, 2, 6
-.okay2
-	call ClearBox
-	ld a, $1
-	ld [hBGMapMode], a
-	pop bc
-	ret
-
-.five
-	xor a
-	ld [hBGMapMode], a
-	call EndBattleBGEffect
-	ret
-
-_QueueBattleAnimation: ; c82ee (32:42ee)
-	callfar QueueBattleAnimation
-	ret
-
-BattleBGEffect_27: ; c82f5 (32:42f5)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw BattleBGEffects_IncrementJumptable
-	dw BattleBGEffects_IncrementJumptable
-	dw .four
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BGEffect_CheckBattleTurn
-	ld [hl], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .user
-	ld a, $9
-	jr .okay
-
-.user
-	ld a, $8
-.okay
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], a
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .user_2
-	hlcoord 0, 6
-	lb de, 8, 6
-.row1
-	push de
-	push hl
-.col1
-	inc hl
-	ld a, [hld]
-	ld [hli], a
-	dec d
-	jr nz, .col1
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop de
-	dec e
-	jr nz, .row1
-	jr .okay2
-
-.user_2
-	hlcoord 19, 0
-	lb de, 8, 7
-.row2
-	push de
-	push hl
-.col2
-	dec hl
-	ld a, [hli]
-	ld [hld], a
-	dec d
-	jr nz, .col2
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop de
-	dec e
-	jr nz, .row2
-.okay2
-	xor a
-	ld [hBGMapThird], a
-	ld a, $1
-	ld [hBGMapMode], a
-	call BattleBGEffects_IncrementJumptable
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	dec [hl]
-	ret
-
-.four
-	xor a
-	ld [hBGMapMode], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .done
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld [hl], $1
-	ret
-
-.done
-	call EndBattleBGEffect
-	ret
-
-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 [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	call BattleBGEffect_RunPicResizeScript
-	ret
-
-.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
-
-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 [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	call BattleBGEffect_RunPicResizeScript
-	ret
-
-.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
-
-BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw BattleBGEffects_IncrementJumptable
-	dw BattleBGEffects_IncrementJumptable
-	dw .restart
-	dw .end
-
-
-.zero
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld e, [hl]
-	ld d, $0
-	inc [hl]
-	ld a, [wBattleAnimTemp1]
-	ld l, a
-	ld a, [wBattleAnimTemp2]
-	ld h, a
-	add hl, de
-	add hl, de
-	add hl, de
-	ld a, [hl]
-	cp -1
-	jr z, .end
-	cp -2
-	jr z, .clear
-	cp -3
-	jr z, .skip
-	call .PlaceGraphic
-.skip
-	call BattleBGEffects_IncrementJumptable
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.clear
-	call .ClearBox
-	jr .zero
-
-.restart
-	xor a
-	ld [hBGMapMode], a
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.end
-	xor a
-	ld [hBGMapMode], a
-	call EndBattleBGEffect
-	ret
-
-.ClearBox:
-; get dims
-	push bc
-	inc hl
-	ld a, [hli]
-	ld b, a
-	and $f
-	ld c, a
-	ld a, b
-	swap a
-	and $f
-	ld b, a
-; get coords
-	ld e, [hl]
-	ld d, 0
-	ld hl, .Coords
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call ClearBox
-	pop bc
-	ret
-
-.PlaceGraphic:
-; get dims
-	push bc
-	push hl
-	ld e, [hl]
-	ld d, 0
-	ld hl, .BGSquares
-	add hl, de
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld b, a
-	and $f
-	ld c, a
-	ld a, b
-	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 [wBattleAnimTemp0], a
-; get coord
-	push de
-	ld e, [hl]
-	ld d, 0
-	ld hl, .Coords
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop de
-; fill box
-.row
-	push bc
-	push hl
-	ld a, [wBattleAnimTemp0]
-	ld b, a
-.col
-	ld a, [de]
-	add b
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .col
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .row
-	pop bc
-	ret
-
-.Coords:
-	dwcoord  2,  6
-	dwcoord  3,  8
-	dwcoord  4, 10
-	dwcoord 12,  0
-	dwcoord 13,  2
-	dwcoord 14,  4
-
-.BGSquares:
-bgsquare: MACRO
-	dn \1, \2
-	dw \3
-endm
-
-	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
-	db $03, $09, $0f, $15, $1b, $21
-	db $04, $0a, $10, $16, $1c, $22
-	db $05, $0b, $11, $17, $1d, $23
-
-.FourByFour:
-	db $00, $0c, $12, $1e
-	db $02, $0e, $14, $20
-	db $03, $0f, $15, $21
-	db $05, $11, $17, $23
-
-.TwoByTwo:
-	db $00, $1e
-	db $05, $23
-
-.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
-	db $03, $0a, $11, $18, $1f, $26, $2d
-	db $04, $0b, $12, $19, $20, $27, $2e
-	db $05, $0c, $13, $1a, $21, $28, $2f
-	db $06, $0d, $14, $1b, $22, $29, $30
-
-.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
-
-.ThreeByThree:
-	db $00, $15, $2a
-	db $03, $18, $2d
-	db $06, $1b, $30
-; c8545
-
-BattleBGEffect_Surf: ; c8545 (32:4545)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	lb de, 2, 2
-	call InitSurfWaves
-
-.one
-	ld a, [hLCDCPointer]
-	and a
-	ret z
-	push bc
-	call .RotatewSurfWaveBGEffect
-	pop bc
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-.RotatewSurfWaveBGEffect:
-	ld hl, wSurfWaveBGEffect
-	ld de, wSurfWaveBGEffect + 1
-	ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1
-	ld a, [hl]
-	push af
-.loop
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	pop af
-	ld [hl], a
-	ld de, LYOverridesBackup
-	ld hl, wSurfWaveBGEffect
-	ld bc, $0
-.loop2
-	ld a, [hLYOverrideStart]
-	cp e
-	jr nc, .load_zero
-	push hl
-	add hl, bc
-	ld a, [hl]
-	pop hl
-	jr .okay
-
-.load_zero
-	xor a
-.okay
-	ld [de], a
-	ld a, c
-	inc a
-	and $3f
-	ld c, a
-	inc de
-	ld a, e
-	cp $5f
-	jr c, .loop2
-	ret
-
-BattleBGEffect_Whirlpool: ; c8599 (32:4599)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	ld [hLCDCPointer], a
-	xor a
-	ld [hLYOverrideStart], a
-	ld a, $5e
-	ld [hLYOverrideEnd], a
-	lb de, 2, 2
-	call Functionc8f2e
-	ret
-
-.one
-	call BattleBGEffect_WavyScreenFX
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_30: ; c85c2 (32:45c2)
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	call EndBattleBGEffect
-	ret
-
-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, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and $f0
-	swap a
-	xor $ff
-	add $4
-	ld d, a
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld a, [hl]
-	ld [wBattleAnimTemp0], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr nc, .done
-	inc [hl]
-	inc [hl]
-	call Functionc8f9a
-	ret
-
-.done
-	call BattleBGEffects_ClearLYOverrides
-	call EndBattleBGEffect
-	ret
-
-BattleBGEffect_32: ; c8603 (32:4603)
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_Psychic: ; c8607 (32:4607)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	ld [hLCDCPointer], a
-	xor a
-	ld [hLYOverrideStart], a
-	ld a, $5f
-	ld [hLYOverrideEnd], a
-	lb de, 6, 5
-	call Functionc8f2e
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	and $3
-	ret nz
-	call BattleBGEffect_WavyScreenFX
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_Teleport: ; c863f (32:463f)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	lb de, 6, 5
-	call Functionc8f2e
-	ret
-
-.one
-	call BattleBGEffect_WavyScreenFX
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_NightShade: ; c8662 (32:4662)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld e, [hl]
-	ld d, 2
-	call Functionc8f2e
-	ret
-
-.one
-	call BattleBGEffect_WavyScreenFX
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_DoubleTeam: ; c8689 (32:4689)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-	dw .three
-	dw .four
-	dw .five
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp $10
-	jr nc, .next
-	inc [hl]
-	call .UpdateLYOverrides
-	ret
-
-.three
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp $ff
-	jr z, .next
-	dec [hl]
-	call .UpdateLYOverrides
-	ret
-
-.next
-	call BattleBGEffects_IncrementJumptable
-	ret
-
-.two
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	ld d, $2
-	call BattleBGEffects_Sine
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	add [hl]
-	call .UpdateLYOverrides
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	add $4
-	ld [hl], a
-
-.four
-	ret
-
-.UpdateLYOverrides:
-	ld e, a
-	xor $ff
-	inc a
-	ld d, a
-	ld h, HIGH(LYOverridesBackup)
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, [hLYOverrideEnd]
-	sub l
-	srl a
-	push af
-.loop
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	inc hl
-	dec a
-	jr nz, .loop
-	pop af
-	ret nc
-	ld [hl], e
-	ret
-
-.five
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_AcidArmor: ; c8709 (32:4709)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld e, [hl]
-	ld d, 2
-	call Functionc8f2e
-	ld h, HIGH(LYOverridesBackup)
-	ld a, [hLYOverrideEnd]
-	ld l, a
-	ld [hl], $0
-	dec l
-	ld [hl], $0
-	ret
-
-.one
-	ld a, [hLYOverrideEnd]
-	ld l, a
-	ld h, HIGH(LYOverridesBackup)
-	ld e, l
-	ld d, h
-	dec de
-.loop
-	ld a, [de]
-	dec de
-	ld [hld], a
-	ld a, [hLYOverrideStart]
-	cp l
-	jr nz, .loop
-	ld [hl], $90
-	ld a, [hLYOverrideEnd]
-	ld l, a
-	ld a, [hl]
-	cp $1
-	jr c, .okay
-	cp $90
-	jr z, .okay
-	ld [hl], $0
-.okay
-	dec l
-	ld a, [hl]
-	cp $2
-	ret c
-	cp $90
-	ret z
-	ld [hl], $0
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_Withdraw: ; c8761 (32:4761)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $1
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and $3f
-	ld d, a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	cp d
-	ret nc
-	call BGEffect_DisplaceLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	rlca
-	rlca
-	and $3
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_Dig: ; c87a7 (32:47a7)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-	dw .three
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $2
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .next
-	dec [hl]
-	ret
-
-.next
-	ld [hl], $10
-	call BattleBGEffects_IncrementJumptable
-.two
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, [hLYOverrideEnd]
-	sub l
-	dec a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	cp [hl]
-	ret c
-	ld a, [hl]
-	push af
-	and $7
-	jr nz, .skip
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	dec [hl]
-.skip
-	pop af
-	call BGEffect_DisplaceLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	inc [hl]
-	inc [hl]
-	ret
-
-.three
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_Tackle: ; c8805 (32:4805)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw Tackle_BGEffect25_2d_one
-	dw Tackle_BGEffect25_2d_two
-	dw .three
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_side
-	ld a, 2
-	jr .okay
-
-.player_side
-	ld a, -2
-.okay
-	ld [hl], a
-	ret
-
-.three
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_25: ; c8837 (32:4837)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw Tackle_BGEffect25_2d_one
-	dw Tackle_BGEffect25_2d_two
-	dw .three
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms2
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_side
-	ld a,  2
-	jr .okay
-
-.player_side
-	ld a, -2
-.okay
-	ld [hl], a
-	ret
-
-.three
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-Tackle_BGEffect25_2d_one:
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp -8
-	jr z, .reached_limit
-	cp  8
-	jr nz, .finish
-.reached_limit
-	call BattleBGEffects_IncrementJumptable
-.finish
-	call Functionc88a5
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-
-Tackle_BGEffect25_2d_two:
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_c8893
-	call BattleBGEffects_IncrementJumptable
-.asm_c8893
-	call Functionc88a5
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ret
-
-Functionc88a5: ; c88a5 (32:48a5)
-	push af
-	ld a, [FXAnimID + 1] ; FXAnimID + 1
-	or a
-	jr nz, .not_rollout
-	ld a, [FXAnimID] ; FXAnimID
-	cp ROLLOUT
-	jr z, .rollout
-.not_rollout
-	pop af
-	jp BGEffect_FillLYOverridesBackup
-
-.rollout
-	ld a, [hLYOverrideStart]
-	ld d, a
-	ld a, [hLYOverrideEnd]
-	sub d
-	ld d, a
-	ld h, HIGH(LYOverridesBackup)
-	ld a, [hSCY]
-	or a
-	jr nz, .skip1
-	ld a, [hLYOverrideStart]
-	or a
-	jr z, .skip2
-	dec a
-	ld l, a
-	ld [hl], $0
-	jr .skip2
-
-.skip1
-	ld a, [hLYOverrideEnd]
-	dec a
-	ld l, a
-	ld [hl], $0
-.skip2
-	ld a, [hSCY]
-	ld l, a
-	ld a, [hLYOverrideStart]
-	sub l
-	jr nc, .skip3
-	xor a
-	dec d
-.skip3
-	ld l, a
-	pop af
-.loop
-	ld [hli], a
-	dec d
-	jr nz, .loop
-	ret
-
-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
-
-
-.three
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BGEffect2d_2f_zero:
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_turn
-	ld a, -2
-	jr .okay
-
-.player_turn
-	ld a, 2
-.okay
-	ld [hl], a
-	ret
-
-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
-
-.four
-	call BattleAnim_ResetLCDStatCustom
-.two
-	ret
-
-BattleBGEffect_26: ; c892a (32:492a)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	ld d, $8
-	call BattleBGEffects_Sine
-	call BGEffect_FillLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	add $4
-	ld [hl], a
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_2c: ; c8964 (32:4964)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	xor a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	ld d, $6
-	call BattleBGEffects_Sine
-	push af
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	ld d, $2
-	call BattleBGEffects_Sine
-	ld e, a
-	pop af
-	add e
-	call BGEffect_FillLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	add $8
-	ld [hl], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_28: ; c89b5 (32:49b5)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	ret nc
-	inc [hl]
-	ld d, a
-	ld e, 4
-	call Functionc8f2e
-	ret
-
-.two
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .reset
-	dec [hl]
-	ld d, a
-	ld e, 4
-	call Functionc8f2e
-	ret
-
-.reset
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_BounceDown: ; c89ee (32:49ee)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCY - $ff00
-	call BattleBGEffect_SetLCDStatCustoms2
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $1
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $20
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	cp $38
-	ret nc
-	push af
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	ld d, $10
-	call BattleBGEffects_Cosine
-	add $10
-	ld d, a
-	pop af
-	add d
-	call BGEffect_DisplaceLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	inc [hl]
-	inc [hl]
-	ret
-
-.two
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_2a: ; c8a3a (32:4a3a)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-	dw .three
-	dw .four
-	dw .five
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	ld a, $e4
-	call BattleBGEffects_SetLYOverrides
-	ld a, $47
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld h, HIGH(LYOverridesBackup)
-.loop
-	ld a, [hLYOverrideEnd]
-	cp l
-	jr z, .done
-	xor a
-	ld [hli], a
-	jr .loop
-
-.done
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-.one
-.four
-	ret
-
-.two
-	call .GetLYOverride
-	jr nc, .next
-	call .SetLYOverridesBackup
-	ret
-
-.next
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	ld a, [hLYOverrideStart]
-	inc a
-	ld [hLYOverrideStart], a
-	call BattleBGEffects_IncrementJumptable
-	ret
-
-.three
-	call .GetLYOverride
-	jr nc, .finish
-	call .SetLYOverridesBackup
-	ld a, [hLYOverrideEnd]
-	dec a
-	ld l, a
-	ld [hl], e
-	ret
-
-.finish
-	call BattleBGEffects_IncrementJumptable
-	ret
-
-.SetLYOverridesBackup:
-	ld e, a
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, [hLYOverrideEnd]
-	sub l
-	srl a
-	ld h, HIGH(LYOverridesBackup)
-.loop2
-	ld [hl], e
-	inc hl
-	inc hl
-	dec a
-	jr nz, .loop2
-	ret
-
-.five
-	call BattleBGEffects_ResetVideoHRAM
-	ret
-
-.GetLYOverride:
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	srl a
-	srl a
-	srl a
-	ld e, a
-	ld d, 0
-	ld hl, .data
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret
-
-.data
-	db $00, $40, $90, $e4
-	db -1
-; c8acc
-
-BattleBGEffect_2b: ; c8acc (32:4acc)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $40
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .done
-	dec [hl]
-	srl a
-	srl a
-	srl a
-	and $f
-	ld d, a
-	ld e, a
-	call Functionc8f2e
-	ret
-
-.done
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_1c: ; c8b00 (32:4b00)
-	ld a, [hCGB]
-	and a
-	jr nz, .cgb
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero
-	call BattleBGEffects_IncrementJumptable
-	ld a, $e4
-	call BattleBGEffects_SetLYOverrides
-	ld a, rBGP - $ff00
-	ld [hLCDCPointer], a
-	xor a
-	ld [hLYOverrideStart], a
-	ld a, $60
-	ld [hLYOverrideEnd], a
-	ret
-
-.one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld e, a
-	and $7
-	ret nz
-	ld a, e
-	and $18
-	sla a
-	swap a
-	sla a
-	ld e, a
-	ld d, $0
-	push bc
-	call BGEffect_CheckBattleTurn
-	jr nz, .player
-	ld hl, .CGB_DMGEnemyData
-	add hl, de
-	ld a, [hli]
-	ld [wOBP1], a
-	ld d, a
-	ld e, [hl]
-	lb bc, $2f, $30
-	jr .okay
-
-.player
-	ld hl, .DMG_PlayerData
-	add hl, de
-	ld d, [hl]
-	inc hl
-	ld a, [hl]
-	ld [wOBP1], a
-	ld e, a
-	lb bc, $37, $28
-.okay
-	call .DMG_LYOverrideLoads
-	pop bc
-	ret
-
-.two
-	call BattleBGEffects_ResetVideoHRAM
-	ld a, $e4
-	ld [wBGP], a
-	ld [wOBP1], a
-	ret
-
-.DMG_LYOverrideLoads:
-	ld hl, LYOverridesBackup
-.loop1
-	ld [hl], d
-	inc hl
-	dec b
-	jr nz, .loop1
-.loop2
-	ld [hl], e
-	inc hl
-	dec c
-	jr nz, .loop2
-	ret
-
-.cgb
-	ld de, .Jumptable
-	call BatttleBGEffects_GetNamedJumptablePointer
-	jp hl
-
-.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
-
-.cgb_one
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	ld e, a
-	and $7
-	ret nz
-	ld a, e
-	and $18
-	sla a
-	swap a
-	sla a
-	ld e, a
-	ld d, 0
-	call BGEffect_CheckBattleTurn
-	jr nz, .player_2
-	ld hl, .CGB_DMGEnemyData
-	add hl, de
-	ld a, [hli]
-	push hl
-	call BGEffects_LoadBGPal1_OBPal0
-	pop hl
-	ld a, [hl]
-	call BGEffects_LoadBGPal0_OBPal1
-	ret
-
-.player_2
-	ld hl, .CGB_DMGEnemyData
-	add hl, de
-	ld a, [hli]
-	push hl
-	call BGEffects_LoadBGPal0_OBPal1
-	pop hl
-	ld a, [hl]
-	call BGEffects_LoadBGPal1_OBPal0
-	ret
-
-.cgb_two
-	ld a, $e4
-	call BGEffects_LoadBGPal0_OBPal1
-	ld a, $e4
-	call BGEffects_LoadBGPal1_OBPal0
-	call EndBattleBGEffect
-	ret
-
-.CGB_DMGEnemyData:
-	db $e4, $e4
-	db $f8, $90
-	db $fc, $40
-	db $f8, $90
-.DMG_PlayerData:
-	db $e4, $e4
-	db $90, $f8
-	db $40, $fc
-	db $90, $f8
-; c8be8
-
-BattleBGEffect_RapidFlash: ; c8be8 (32:4be8)
-	ld de, .FlashPals
-	call BGEffect_RapidCyclePals
-	ret
-
-.FlashPals:
-	db $e4, $6c, $fe
-; c8bf2
-
-BattleBGEffect_16: ; c8bf2 (32:4bf2)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $90, $40, $ff
-; c8bfd
-
-BattleBGEffect_17: ; c8bfd (32:4bfd)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $f8, $fc, $ff
-; c8c08
-
-BattleBGEffect_18: ; c8c08 (32:4c08)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $90, $40, $90, $fe
-; c8c14
-
-BattleBGEffect_19: ; c8c14 (32:4c14)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $f8, $fc, $f8, $fe
-; c8c20
-
-BattleBGEffect_1a: ; c8c20 (32:4c20)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
-; c8c30
-
-BattleBGEffect_1b: ; c8c30 (32:4c30)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $fc, $e4, $00, $fe
-; c8c3c
-
-BattleBGEffect_1d: ; c8c3c (32:4c3c)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff
-; c8c55
-
-BattleBGEffect_1e: ; c8c55 (32:4c55)
-	ld de, .Pals
-	call BGEffect_RapidCyclePals
-	ret
-
-.Pals:
-	db $00, $40, $90, $e4, $ff
-; c8c61
-
-BattleBGEffect_VibrateMon: ; c8c61 (32:4c61)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-
-
-.zero ; c8c68 (32:4c68)
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], $1
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $20
-	ret
-
-.one ; c8c85 (32:4c85)
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .finish
-	dec [hl]
-	and $1
-	ret nz
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	call BGEffect_FillLYOverridesBackup
-	ret
-
-.finish
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2)
-	call BattleBGEffects_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-
-
-.zero ; c8cab (32:4cab)
-	call BattleBGEffects_IncrementJumptable
-	call BattleBGEffects_ClearLYOverrides
-	ld a, rSCX - $ff00
-	ld [hLCDCPointer], a
-	xor a
-	ld [hLYOverrideStart], a
-	ld a, $37
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-	ret
-
-.one ; c8cc3 (32:4cc3)
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	jr nc, .two
-	ld d, $6
-	call BattleBGEffects_Sine
-	call BGEffect_FillLYOverridesBackup
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	ret
-
-.two ; c8cdd (32:4cdd)
-	call BattleAnim_ResetLCDStatCustom
-	ret
-
-BattleBGEffect_2e: ; c8ce1 (32:4ce1)
-	call Functionc8d0b
-	jr c, .xor_a
-	bit 7, a
-	jr z, .okay
-.xor_a
-	xor a
-.okay
-	push af
-	call DelayFrame
-	pop af
-	ld [hSCY], a
-	xor $ff
-	inc a
-	ld [AnimObject01_YOffset], a
-	ret
-
-BattleBGEffect_1f: ; c8cf9 (32:4cf9)
-	call Functionc8d0b
-	jr nc, .skip
-	xor a
-.skip
-	ld [hSCX], a
-	ret
-
-BattleBGEffect_20: ; c8d02 (32:4d02)
-	call Functionc8d0b
-	jr nc, .skip
-	xor a
-.skip
-	ld [hSCY], a
-	ret
-
-Functionc8d0b: ; c8d0b (32:4d0b)
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .okay
-	call EndBattleBGEffect
-	scf
-	ret
-
-.okay
-	dec [hl]
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr z, .every_16_frames
-	dec [hl]
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret
-
-.every_16_frames
-	ld a, [hl]
-	swap a
-	or [hl]
-	ld [hl], a
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	and a
-	ret
-
-BattleBGEffect_35: ; c8d3a (32:4d3a)
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	jr nc, .finish
-	ld d, $6
-	call BattleBGEffects_Sine
-	ld [hSCX], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	add $2
-	ld [hl], a
-	ret
-
-.finish
-	xor a
-	ld [hSCX], a
-	ret
-
-BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57)
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .zero
-	dec [hl]
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	call BattleBGEffect_GetNextDMGPal
-	ret
-
-.zero
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	ld hl, BG_EFFECT_STRUCT_JT_INDEX
-	add hl, bc
-	ld [hl], a
-	call BattleBGEffect_GetFirstDMGPal
-	ret
-
-BGEffect_RapidCyclePals: ; c8d77 (32:4d77)
-	ld a, [hCGB]
-	and a
-	jr nz, .cgb
-	push de
-	ld de, .Jumptable_DMG
-	call BatttleBGEffects_GetNamedJumptablePointer
-	pop de
-	jp hl
-
-.Jumptable_DMG:
-	dw .zero_dmg
-	dw .one_dmg
-	dw .two_dmg
-
-
-.zero_dmg ; c8d8b (32:4d8b)
-	call BattleBGEffects_IncrementJumptable
-	ld a, $e4
-	call BattleBGEffects_SetLYOverrides
-	ld a, $47
-	call BattleBGEffect_SetLCDStatCustoms1
-	ld a, [hLYOverrideEnd]
-	inc a
-	ld [hLYOverrideEnd], a
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	ld [hl], $0
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], a
-	ret
-
-.one_dmg ; c8daa (32:4daa)
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr z, .okay_1_dmg
-	dec [hl]
-	ret
-
-.okay_1_dmg
-	ld a, [hl]
-	swap a
-	or [hl]
-	ld [hl], a
-	call BattleBGEffect_GetFirstDMGPal
-	jr c, .okay_2_dmg
-	call BGEffect_FillLYOverridesBackup
-	ret
-
-.okay_2_dmg
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	dec [hl]
-	ret
-
-.two_dmg ; c8dc9 (32:4dc9)
-	call BattleBGEffects_ResetVideoHRAM
-	ld a, %11100100
-	ld [rBGP], a
-	call EndBattleBGEffect
-	ret
-
-.cgb
-	push de
-	ld de, .Jumptable_CGB
-	call BatttleBGEffects_GetNamedJumptablePointer
-	pop de
-	jp hl
-
-.Jumptable_CGB: ; c8ddd (32:4ddd)
-	dw .zero_cgb
-	dw .one_cgb
-	dw .two_cgb
-	dw .three_cgb
-	dw .four_cgb
-
-
-.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, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld [hl], a
-	ret
-
-.one_cgb ; c8e02 (32:4e02)
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr z, .okay_1_cgb
-	dec [hl]
-	ret
-
-.okay_1_cgb
-	ld a, [hl]
-	swap a
-	or [hl]
-	ld [hl], a
-	call BattleBGEffect_GetFirstDMGPal
-	jr c, .okay_2_cgb
-	call BGEffects_LoadBGPal0_OBPal1
-	ret
-
-.okay_2_cgb
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	dec [hl]
-	ret
-
-.two_cgb ; c8e21 (32:4e21)
-	ld a, $e4
-	call BGEffects_LoadBGPal0_OBPal1
-	call EndBattleBGEffect
-	ret
-
-.three_cgb ; c8e2a (32:4e2a)
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr z, .okay_3_cgb
-	dec [hl]
-	ret
-
-.okay_3_cgb
-	ld a, [hl]
-	swap a
-	or [hl]
-	ld [hl], a
-	call BattleBGEffect_GetFirstDMGPal
-	jr c, .okay_4_cgb
-	call BGEffects_LoadBGPal1_OBPal0
-	ret
-
-.okay_4_cgb
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	dec [hl]
-	ret
-
-.four_cgb ; c8e49 (32:4e49)
-	ld a, $e4
-	call BGEffects_LoadBGPal1_OBPal0
-	call EndBattleBGEffect
-	ret
-
-BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52)
-	ld h, a
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld a, h
-	push bc
-	push af
-	ld hl, BGPals
-	ld de, UnknBGPals
-	ld b, a
-	ld c, $1
-	call CopyPals
-	ld hl, OBPals + 8
-	ld de, UnknOBPals + 8
-	pop af
-	ld b, a
-	ld c, $1
-	call CopyPals
-	pop bc
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-
-BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f)
-	ld h, a
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld a, h
-	push bc
-	push af
-	ld hl, BGPals + 8
-	ld de, UnknBGPals + 8
-	ld b, a
-	ld c, $1
-	call CopyPals
-	ld hl, OBPals ; OBPals
-	ld de, UnknOBPals ; wd040
-	pop af
-	ld b, a
-	ld c, $1
-	call CopyPals
-	pop bc
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-
-BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac)
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2)
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	cp -1
-	jr z, .quit
-	cp -2
-	jr nz, .repeat
-	ld a, [de]
-	ld hl, BG_EFFECT_STRUCT_03
-	add hl, bc
-	ld [hl], $0
-.repeat
-	and a
-	ret
-
-.quit
-	scf
-	ret
-
-BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca)
-	xor a
-BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb)
-	ld hl, LYOverrides ; wListPointer
-	ld e, $99
-.loop1
-	ld [hli], a
-	dec e
-	jr nz, .loop1
-	ld hl, LYOverridesBackup
-	ld e, $91
-.loop2
-	ld [hli], a
-	dec e
-	jr nz, .loop2
-	ret
-
-BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede)
-	ld [hLCDCPointer], 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 [hLYOverrideStart], a
-	ld a, e
-	ld [hLYOverrideEnd], a
-	ret
-
-BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4)
-	ld [hLCDCPointer], 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 [hLYOverrideStart], a
-	ld a, e
-	ld [hLYOverrideEnd], a
-	ret
-
-BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a)
-	xor a
-	ld [hLYOverrideStart], a
-	ld [hLYOverrideEnd], a
-	call BattleBGEffects_ClearLYOverrides
-	xor a
-	ld [hLCDCPointer], a
-	call EndBattleBGEffect
-	ret
-
-BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19)
-	xor a
-	ld [hLCDCPointer], a
-	ld a, %11100100
-	ld [rBGP], a
-	ld [wBGP], a
-	ld [wOBP1], a
-	ld [hLYOverrideStart], a
-	ld [hLYOverrideEnd], a
-	call BattleBGEffects_ClearLYOverrides
-	ret
-
-Functionc8f2e: ; c8f2e (32:4f2e)
-	push bc
-	xor a
-	ld [wBattleAnimTemp0], a
-	ld a, e
-	ld [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	ld a, $80
-	ld [wBattleAnimTemp3], a
-	ld bc, LYOverridesBackup
-.loop
-	ld a, [hLYOverrideStart]
-	cp c
-	jr nc, .next
-	ld a, [hLYOverrideEnd]
-	cp c
-	jr c, .next
-	ld a, [wBattleAnimTemp2]
-	ld d, a
-	ld a, [wBattleAnimTemp0]
-	call BattleBGEffects_Sine
-	ld [bc], a
-.next
-	inc bc
-	ld a, [wBattleAnimTemp1]
-	ld hl, wBattleAnimTemp0
-	add [hl]
-	ld [hl], a
-	ld hl, wBattleAnimTemp3
-	dec [hl]
-	jr nz, .loop
-	pop bc
-	ret
-
-InitSurfWaves: ; c8f69 (32:4f69)
-	push bc
-	xor a
-	ld [wBattleAnimTemp0], a
-	ld a, e
-	ld [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	ld a, $40
-	ld [wBattleAnimTemp3], a
-	ld bc, wSurfWaveBGEffect
-.loop
-	ld a, [wBattleAnimTemp2]
-	ld d, a
-	ld a, [wBattleAnimTemp0]
-	call BattleBGEffects_Sine
-	ld [bc], a
-	inc bc
-	ld a, [wBattleAnimTemp1]
-	ld hl, wBattleAnimTemp0
-	add [hl]
-	ld [hl], a
-	ld hl, wBattleAnimTemp3
-	dec [hl]
-	jr nz, .loop
-	pop bc
-	ret
-
-Functionc8f9a: ; c8f9a (32:4f9a)
-	push bc
-	ld [wBattleAnimTemp3], a
-	ld a, e
-	ld [wBattleAnimTemp1], a
-	ld a, d
-	ld [wBattleAnimTemp2], a
-	call .GetLYOverrideBackupAddrOffset
-	ld hl, LYOverridesBackup
-	add hl, de
-	ld c, l
-	ld b, h
-.loop
-	ld a, [wBattleAnimTemp3]
-	and a
-	jr z, .done
-	dec a
-	ld [wBattleAnimTemp3], a
-	push af
-	ld a, [wBattleAnimTemp2]
-	ld d, a
-	ld a, [wBattleAnimTemp1]
-	push hl
-	call BattleBGEffects_Sine
-	ld e, a
-	pop hl
-	ld a, [hLYOverrideEnd]
-	cp c
-	jr c, .skip1
-	ld a, e
-	ld [bc], a
-	inc bc
-.skip1
-	ld a, [hLYOverrideStart]
-	cp l
-	jr nc, .skip2
-	ld [hl], e
-	dec hl
-.skip2
-	ld a, [wBattleAnimTemp1]
-	add $4
-	ld [wBattleAnimTemp1], a
-	pop af
-	jr .loop
-
-.done
-	pop bc
-	and a
-	ret
-
-.GetLYOverrideBackupAddrOffset:
-	ld a, [hLYOverrideStart]
-	ld e, a
-	ld a, [wBattleAnimTemp0]
-	add e
-	ld e, a
-	ld d, $0
-	ret
-
-BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef)
-	push bc
-	ld a, [hLYOverrideStart]
-	ld l, a
-	inc a
-	ld e, a
-	ld h, HIGH(LYOverridesBackup)
-	ld d, h
-	ld a, [hLYOverrideEnd]
-	sub l
-	and a
-	jr z, .done
-	ld c, a
-	ld a, [hl]
-	push af
-.loop
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	pop af
-	ld [hl], a
-.done
-	pop bc
-	ret
-
-BGEffect_FillLYOverridesBackup: ; c900b (32:500b)
-	push af
-	ld h, HIGH(LYOverridesBackup)
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, [hLYOverrideEnd]
-	sub l
-	ld d, a
-	pop af
-.loop
-	ld [hli], a
-	dec d
-	jr nz, .loop
-	ret
-
-BGEffect_DisplaceLYOverridesBackup: ; c901b (32:501b)
-	; e = a; d = [hLYOverrideEnd] - [hLYOverrideStart] - a
-	push af
-	ld e, a
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, [hLYOverrideEnd]
-	sub l
-	sub e
-	ld d, a
-	ld h, HIGH(LYOverridesBackup)
-	ld a, [hLYOverrideStart]
-	ld l, a
-	ld a, $90
-.loop
-	ld [hli], a
-	dec e
-	jr nz, .loop
-	pop af
-	xor $ff
-.loop2
-	ld [hli], a
-	dec d
-	jr nz, .loop2
-	ret
-
-BGEffect_CheckBattleTurn: ; c9038 (32:5038)
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hBattleTurn]
-	and $1
-	xor [hl]
-	ret
-
-BGEffect_CheckFlyDigStatus: ; c9042 (32:5042)
-	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
-	add hl, bc
-	ld a, [hBattleTurn]
-	and $1
-	xor [hl]
-	jr nz, .player
-	ld a, [EnemySubStatus3] ; EnemySubStatus3
-	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	ret
-
-.player
-	ld a, [PlayerSubStatus3] ; PlayerSubStatus3
-	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	ret
-
-BattleBGEffects_CheckSGB: ; c9059 (32:5059)
-	ld a, [hSGB]
-	and a
-	ret
-
-BattleBGEffects_Sine: ; c905d (32:505d)
-	ld e, a
-	callfar BattleAnim_Sine_e
-	ld a, e
-	ret
-
-BattleBGEffects_Cosine: ; c9066 (32:5066)
-	ld e, a
-	callfar BattleAnim_Cosine_e
-	ld a, e
-	ret
-
-; c906f (32:506f)
--- a/engine/anims/engine.asm
+++ /dev/null
@@ -1,314 +1,0 @@
-QueueBattleAnimation: ; cc9a1 (33:49a1)
-	ld hl, ActiveAnimObjects
-	ld e, 10
-.loop
-	ld a, [hl]
-	and a
-	jr z, .done
-	ld bc, BATTLEANIMSTRUCT_LENGTH
-	add hl, bc
-	dec e
-	jr nz, .loop
-	scf
-	ret
-
-.done
-	ld c, l
-	ld b, h
-	ld hl, wNumActiveBattleAnims
-	inc [hl]
-	call InitBattleAnimation
-	ret
-
-DeinitBattleAnimation: ; cc9bd
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld [hl], $0
-	ret
-
-; cc9c4
-
-InitBattleAnimation: ; cc9c4 (33:49c4)
-	ld a, [wBattleAnimTemp0]
-	ld e, a
-	ld d, 0
-	ld hl, BattleAnimObjects
-rept 6
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld a, [wNumActiveBattleAnims]
-	ld [hli], a ; Index
-	ld a, [de]
-	inc de
-	ld [hli], a ; 01
-	ld a, [de]
-	inc de
-	ld [hli], a ; 02
-	ld a, [de]
-	inc de
-	ld [hli], a ; Frameset ID
-	ld a, [de]
-	inc de
-	ld [hli], a ; Function
-	ld a, [de]
-	inc de
-	ld [hli], a ; 05
-	ld a, [de]
-	call GetBattleAnimTileOffset
-	ld [hli], a ; Tile ID
-	ld a, [wBattleAnimTemp1]
-	ld [hli], a ; X Coord
-	ld a, [wBattleAnimTemp2]
-	ld [hli], a ; Y Coord
-	xor a
-	ld [hli], a ; X Offset
-	ld [hli], a ; Y Offset
-	ld a, [wBattleAnimTemp3]
-	ld [hli], a ; 0b
-	xor a
-	ld [hli], a ; 0c
-	dec a
-	ld [hli], a ; 0d
-	xor a
-	ld [hli], a ; 0e
-	ld [hli], a ; 0f
-	ld [hl], a  ; 10
-	ret
-
-BattleAnimOAMUpdate: ; cca09
-	call InitBattleAnimBuffer
-	call GetBattleAnimFrame
-	cp -3
-	jp z, .done
-	cp -4
-	jp z, .delete
-	push af
-	ld hl, wBattleAnimTempOAMFlags
-	ld a, [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, HIGH(Sprites)
-.loop
-	ld a, [wBattleAnimTempYCoord]
-	ld b, a
-	ld a, [wBattleAnimTempYOffset]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, wBattleAnimTempOAMFlags
-	bit 6, [hl]
-	jr z, .no_yflip
-	add $8
-	xor $ff
-	inc a
-
-.no_yflip
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempXCoord]
-	ld b, a
-	ld a, [wBattleAnimTempXOffset]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, wBattleAnimTempOAMFlags
-	bit 5, [hl]
-	jr z, .no_xflip
-	add $8
-	xor $ff
-	inc a
-
-.no_xflip
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempTileID]
-	add $31
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempOAMFlags]
-	ld b, a
-	ld a, [hl]
-	xor b
-	and $e0
-	ld b, a
-	ld a, [hl]
-	and $10
-	or b
-	ld b, a
-	ld a, [wBattleAnimTempPalette]
-	and $f
-	or b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, e
-	ld [wBattleAnimOAMPointerLo], a
-	cp $a0
-	jr nc, .exit_set_carry
-	dec c
-	jr nz, .loop
-	pop bc
-	jr .done
-
-.delete
-	call DeinitBattleAnimation
-
-.done
-	and a
-	ret
-
-.exit_set_carry
-	pop bc
-	scf
-	ret
-
-; ccaaa
-
-InitBattleAnimBuffer: ; ccaaa
-	ld hl, BATTLEANIMSTRUCT_01
-	add hl, bc
-	ld a, [hl]
-	and %10000000
-	ld [wBattleAnimTempOAMFlags], a
-	xor a
-	ld [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, [FXAnimID + 1]
-	or a
-	jr nz, .no_sub
-	ld a, [FXAnimID]
-	cp KINESIS
-	jr z, .kinesis
-	cp SOFTBOILED
-	jr z, .softboiled
-	cp MILK_DRINK
-	jr nz, .no_sub
-.kinesis
-.softboiled
-.milk_drink
-	pop af
-	sub 1 * 8
-	jr .done
-
-.no_sub
-	pop af
-.done
-	ld [wBattleAnimTempYCoord], a
-	ld a, [hli]
-	xor $ff
-	inc a
-	ld [wBattleAnimTempXOffset], a
-	ret
-
-; ccb31
-
-GetBattleAnimTileOffset: ; ccb31 (33:4b31)
-	push hl
-	push bc
-	ld hl, wBattleAnimTileDict
-	ld b, a
-	ld c, 10 / 2
-.loop
-	ld a, [hli]
-	cp b
-	jr z, .load
-	inc hl
-	dec c
-	jr nz, .loop
-	xor a
-	jr .done
-
-.load
-	ld a, [hl]
-.done
-	pop bc
-	pop hl
-	ret
-
-_ExecuteBGEffects: ; ccb48
-	callfar ExecuteBGEffects
-	ret
-
-; ccb4f
-
-_QueueBGEffect: ; ccb4f (33:4b4f)
-	callfar QueueBGEffect
-	ret
-
-; ccb56 (33:4b56)
--- a/engine/anims/functions.asm
+++ /dev/null
@@ -1,4157 +1,0 @@
-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:
-; entries correspond to BATTLEANIMFUNC_* constants
-	dw BattleAnimFunction_Null ; 00
-	dw BattleAnimFunction_01 ; 01
-	dw BattleAnimFunction_02 ; 02
-	dw BattleAnimFunction_03 ; 03
-	dw BattleAnimFunction_04 ; 04
-	dw BattleAnimFunction_ThrowFromPlayerToEnemy ; 05
-	dw BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear ; 06
-	dw BattleAnimFunction_07 ; 07
-	dw BattleAnimFunction_08 ; 08
-	dw BattleAnimFunction_09 ; 09
-	dw BattleAnimFunction_0A ; 0a
-	dw BattleAnimFunction_RazorLeaf ; 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_PokeBall ; 12
-	dw BattleAnimFunction_PokeBallBlocked ; 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_LeechSeed ; 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_SpiralDescent ; 29
-	dw BattleAnimFunction_PoisonGas ; 2a
-	dw BattleAnimFunction_Horn ; 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_Null: ; cd06e (33:506e)
-	call BattleAnim_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-.one
-	call DeinitBattleAnimation
-.zero
-	ret
-
-BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear: ; cd079 (33:5079)
-	call BattleAnimFunction_ThrowFromPlayerToEnemy
-	ret c
-	call DeinitBattleAnimation
-	ret
-
-BattleAnimFunction_ThrowFromPlayerToEnemy: ; cd081 (33:5081)
-	; If x coord at $88 or beyond, abort.
-	ld hl, BATTLEANIMSTRUCT_XCOORD
-	add hl, bc
-	ld a, [hl]
-	cp $88
-	ret nc
-	; Move right 2 pixels
-	add $2
-	ld [hl], a
-	; Move down 1 pixel
-	ld hl, BATTLEANIMSTRUCT_YCOORD
-	add hl, bc
-	dec [hl]
-	; Decrease ??? and hold onto its previous value (argument of the sine function)
-	ld hl, BATTLEANIMSTRUCT_0F
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	; Get ???, which is the amplitude of the sine function
-	ld hl, BATTLEANIMSTRUCT_0B
-	add hl, bc
-	ld d, [hl]
-	call BattleAnim_Sine
-	; Store the result in the Y offset
-	ld hl, BATTLEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], a
-	; Carry flag denotes success
-	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]
-	inc [hl]
-	inc [hl]
-	inc [hl]
-	inc [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
-	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_PokeBall: ; 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 ; init
-	call GetBallAnimPal
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-.one
-	call BattleAnimFunction_ThrowFromPlayerToEnemy
-	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, BATTLEANIMFRAMESET_0B
-	call ReinitBattleAnimFrameset
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-.three
-	call BattleAnim_IncAnonJumptableIndex
-	ld a, BATTLEANIMFRAMESET_09
-	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, BATTLEANIMFRAMESET_0C
-	call ReinitBattleAnimFrameset
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-.six
-	ld a, BATTLEANIMFRAMESET_0D
-	call ReinitBattleAnimFrameset
-	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
-	add hl, bc
-	dec [hl]
-.two
-.five
-.nine
-	ret
-
-.seven
-	call GetBallAnimPal
-	ld a, BATTLEANIMFRAMESET_0A
-	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_PokeBallBlocked: ; cd212 (33:5212)
-	call BattleAnim_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-.zero
-	call GetBallAnimPal
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-.one
-	ld hl, BATTLEANIMSTRUCT_XCOORD
-	add hl, bc
-	ld a, [hl]
-	cp $70
-	jr nc, .next
-	call BattleAnimFunction_ThrowFromPlayerToEnemy
-	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
-
-GetBallAnimPal: ; cd249 (33:5249)
-	ld hl, BallColors
-	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)
-
-INCLUDE "data/anims/ball_colors.asm"
-
-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, BATTLEANIMFRAMESET_0F
-	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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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_RazorLeaf: ; 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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, rSCY - $ff00
-	ld [hLCDCPointer], a
-	ld a, $58
-	ld [hLYOverrideStart], a
-	ld a, $5e
-	ld [hLYOverrideEnd], 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 [hLYOverrideStart], 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 [hLYOverrideStart], 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 [hLCDCPointer], a
-	ld [hLYOverrideStart], a
-	ld [hLYOverrideEnd], a
-.four
-	call DeinitBattleAnimation
-	ret
-
-asm_cd6da: ; cd6da (33:56da)
-	inc a
-	inc a
-	ld [hl], a
-	sub $10
-	ret c
-	ld [hLYOverrideStart], 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, BATTLEANIMFRAMESET_24
-	add [hl] ; offset
-	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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, .load_no_inc
-	ld hl, BATTLEANIMSTRUCT_10
-	add hl, bc
-	ld a, [hl]
-	inc a
-	jr .reinit
-
-.load_no_inc
-	ld hl, BATTLEANIMSTRUCT_10
-	add hl, bc
-	ld a, [hl]
-.reinit
-	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_LeechSeed: ; cda4d (33:5a4d)
-	call BattleAnim_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-	dw .three
-.zero: ; cda58 (33:5a58)
-	call BattleAnim_IncAnonJumptableIndex
-	ld hl, BATTLEANIMSTRUCT_10
-	add hl, bc
-	ld [hl], $40
-	ret
-
-.one: ; cda62 (33:5a62)
-	ld hl, BATTLEANIMSTRUCT_10
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .sprout
-	call Functioncda8d
-	ret
-
-.sprout
-	ld [hl], $40
-	ld a, BATTLEANIMFRAMESET_57
-	call ReinitBattleAnimFrameset
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-.two: ; cda7a (33:5a7a)
-	ld hl, BATTLEANIMSTRUCT_10
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .flutter
-	dec [hl]
-	ret
-
-.flutter
-	call BattleAnim_IncAnonJumptableIndex
-	ld a, BATTLEANIMFRAMESET_58
-	call ReinitBattleAnimFrameset
-.three: ; 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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_50
-	call ReinitBattleAnimFrameset
-	ld hl, BATTLEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], $4
-	call BattleAnim_IncAnonJumptableIndex
-	ret
-
-Functioncdc48: ; cdc48 (33:5c48)
-	ld a, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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_SpiralDescent: ; 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, .delete
-	inc [hl]
-	ret
-
-.delete
-	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_PoisonGas: ; cdf59 (33:5f59)
-	call BattleAnim_AnonJumptable
-.anon_dw
-	dw Functioncdf60
-	dw BattleAnimFunction_SpiralDescent
-Functioncdf60: ; cdf60 (33:5f60)
-	ld hl, BATTLEANIMSTRUCT_XCOORD
-	add hl, bc
-	ld a, [hl]
-	cp $84
-	jr nc, .next
-	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
-
-.next
-	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_Horn: ; ce063 (33:6063)
-	call BattleAnim_AnonJumptable
-.anon_dw
-	dw .zero
-	dw .one
-	dw .two
-	dw Functionce09e
-.zero: ; 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
-
-.one: ; ce083 (33:6083)
-	ld hl, BATTLEANIMSTRUCT_XCOORD
-	add hl, bc
-	ld a, [hl]
-	cp $58
-	ret nc
-	ld a, $2
-	call Functionce70a
-	ret
-
-.two: ; 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 BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, .disappear
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	ret
-
-.disappear
-	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
-	inc [hl]
-	inc [hl]
-	inc [hl]
-	inc [hl]
-	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
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	dec [hl]
-	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)
-; a = d sin a
-	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
--- a/engine/anims/helpers.asm
+++ /dev/null
@@ -1,130 +1,0 @@
-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/engine/battle/battlestart_copytilemapatonce.asm
@@ -1,0 +1,3 @@
+BattleStart_CopyTilemapAtOnce: ; 8cf4f
+	call CGBOnly_CopyTilemapAtOnce
+	ret
--- /dev/null
+++ b/engine/battle/checkbattlescene.asm
@@ -1,0 +1,47 @@
+CheckBattleScene: ; 4ea44
+; Return carry if battle scene is turned off.
+
+	ld a, 0
+	ld hl, wLinkMode
+	call GetFarWRAMByte
+	cp LINK_MOBILE
+	jr z, .mobile
+
+	ld a, [Options]
+	bit BATTLE_SCENE, a
+	jr nz, .off
+
+	and a
+	ret
+
+.mobile
+	ld a, [wcd2f]
+	and a
+	jr nz, .from_wram
+
+	ld a, $4
+	call GetSRAMBank
+	ld a, [$a60c]
+	ld c, a
+	call CloseSRAM
+
+	ld a, c
+	bit 0, c
+	jr z, .off
+
+	and a
+	ret
+
+.from_wram
+	ld a, $5
+	ld hl, w5_dc00
+	call GetFarWRAMByte
+	bit 0, a
+	jr z, .off
+
+	and a
+	ret
+
+.off
+	scf
+	ret
--- /dev/null
+++ b/engine/battle/consumehelditem.asm
@@ -1,0 +1,80 @@
+ConsumeHeldItem: ; 27192
+	push hl
+	push de
+	push bc
+	ld a, [hBattleTurn]
+	and a
+	ld hl, OTPartyMon1Item
+	ld de, EnemyMonItem
+	ld a, [CurOTMon]
+	jr z, .theirturn
+	ld hl, PartyMon1Item
+	ld de, BattleMonItem
+	ld a, [CurBattleMon]
+
+.theirturn
+	push hl
+	push af
+	ld a, [de]
+	ld b, a
+	farcall GetItemHeldEffect
+	ld hl, .ConsumableEffects
+.loop
+	ld a, [hli]
+	cp b
+	jr z, .ok
+	inc a
+	jr nz, .loop
+	pop af
+	pop hl
+	pop bc
+	pop de
+	pop hl
+	ret
+
+.ok
+	xor a
+	ld [de], a
+	pop af
+	pop hl
+	call GetPartyLocation
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .ourturn
+	ld a, [wBattleMode]
+	dec a
+	jr z, .done
+
+.ourturn
+	ld [hl], $0
+
+.done
+	pop bc
+	pop de
+	pop hl
+	ret
+
+.ConsumableEffects: ; 271de
+; Consumable items?
+	db HELD_BERRY
+	db HELD_2
+	db HELD_5
+	db HELD_HEAL_POISON
+	db HELD_HEAL_FREEZE
+	db HELD_HEAL_BURN
+	db HELD_HEAL_SLEEP
+	db HELD_HEAL_PARALYZE
+	db HELD_HEAL_STATUS
+	db HELD_30
+	db HELD_ATTACK_UP
+	db HELD_DEFENSE_UP
+	db HELD_SPEED_UP
+	db HELD_SP_ATTACK_UP
+	db HELD_SP_DEFENSE_UP
+	db HELD_ACCURACY_UP
+	db HELD_EVASION_UP
+	db HELD_38
+	db HELD_71
+	db HELD_ESCAPE
+	db HELD_CRITICAL_UP
+	db -1
--- /dev/null
+++ b/engine/battle/returntobattle_useball.asm
@@ -1,0 +1,19 @@
+_ReturnToBattle_UseBall: ; 2715c
+	call ClearBGPalettes
+	call ClearTileMap
+	ld a, [BattleType]
+	cp BATTLETYPE_TUTORIAL
+	jr z, .gettutorialbackpic
+	farcall GetBattleMonBackpic
+	jr .continue
+
+.gettutorialbackpic
+	farcall GetTrainerBackpic
+.continue
+	farcall GetEnemyMonFrontpic
+	farcall _LoadBattleFontsHPBar
+	call GetMemSGBLayout
+	call CloseWindow
+	call LoadStandardMenuDataHeader
+	call WaitBGMap
+	jp SetPalettes
--- /dev/null
+++ b/engine/battle/updatebattlehuds.asm
@@ -1,0 +1,9 @@
+_UpdateBattleHUDs:
+	farcall DrawPlayerHUD
+	ld hl, PlayerHPPal
+	call SetHPPal
+	farcall DrawEnemyHUD
+	ld hl, EnemyHPPal
+	call SetHPPal
+	farcall FinishBattleAnim
+	ret
--- /dev/null
+++ b/engine/battle_anims/anim_commands.asm
@@ -1,0 +1,1514 @@
+; Battle animation command interpreter.
+
+PlayBattleAnim: ; cc0d6
+
+	ld a, [rSVBK]
+	push af
+
+	ld a, 5
+	ld [rSVBK], a
+
+	call _PlayBattleAnim
+
+	pop af
+	ld [rSVBK], a
+	ret
+; cc0e4
+
+_PlayBattleAnim: ; cc0e4
+
+	ld c, 6
+.wait
+	call BattleAnimDelayFrame
+	dec c
+	jr nz, .wait
+
+	call BattleAnimAssignPals
+	call BattleAnimRequestPals
+	call BattleAnimDelayFrame
+
+	ld c, 1
+	ld a, [rKEY1]
+	bit 7, a
+	jr nz, .asm_cc0ff
+	ld c, 3
+
+.asm_cc0ff
+	ld hl, hVBlank
+	ld a, [hl]
+	push af
+
+	ld [hl], c
+	call BattleAnimRunScript
+
+	pop af
+	ld [hVBlank], a
+
+	ld a, $1
+	ld [hBGMapMode], a
+
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call WaitSFX
+	ret
+; cc11c
+
+BattleAnimRunScript: ; cc11c
+
+	ld a, [FXAnimID + 1]
+	and a
+	jr nz, .hi_byte
+
+	farcall CheckBattleScene
+	jr c, .disabled
+
+	call BattleAnimClearHud
+	call RunBattleAnimScript
+
+	call BattleAnimAssignPals
+	call BattleAnimRequestPals
+
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	call BattleAnimDelayFrame
+	call BattleAnimRestoreHuds
+
+.disabled
+	ld a, [wNumHits]
+	and a
+	jr z, .done
+
+	ld l, a
+	ld h, 0
+	ld de, ANIM_MISS
+	add hl, de
+	ld a, l
+	ld [FXAnimID], a
+	ld a, h
+	ld [FXAnimID + 1], a
+
+.hi_byte
+	call WaitSFX
+	call PlayHitSound
+	call RunBattleAnimScript
+
+.done
+	call BattleAnim_RevertPals
+	ret
+; cc163
+
+RunBattleAnimScript: ; cc163
+
+	call ClearBattleAnims
+
+.playframe
+	call RunBattleAnimCommand
+	call _ExecuteBGEffects
+	call BattleAnim_UpdateOAM_All
+	call PushLYOverrides
+	call BattleAnimRequestPals
+
+; Speed up Rollout's animation.
+	ld a, [FXAnimID + 1]
+	or a
+	jr nz, .not_rollout
+
+	ld a, [FXAnimID]
+	cp ROLLOUT
+	jr nz, .not_rollout
+
+	ld a, $2e
+	ld b, 5
+	ld de, 4
+	ld hl, ActiveBGEffects
+.find
+	cp [hl]
+	jr z, .done
+	add hl, de
+	dec b
+	jr nz, .find
+
+.not_rollout
+	call BattleAnimDelayFrame
+
+.done
+	ld a, [BattleAnimFlags]
+	bit 0, a
+	jr z, .playframe
+
+	call BattleAnim_ClearCGB_OAMFlags
+	ret
+; cc1a1
+
+BattleAnimClearHud: ; cc1a1
+
+	call BattleAnimDelayFrame
+	call WaitTop
+	call ClearActorHud
+	ld a, $1
+	ld [hBGMapMode], a
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call WaitTop
+	ret
+; cc1bb
+
+BattleAnimRestoreHuds: ; cc1bb
+
+	call BattleAnimDelayFrame
+	call WaitTop
+
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+
+	ld hl, UpdateBattleHuds
+	ld a, BANK(UpdatePlayerHUD)
+	rst FarCall ; Why not "call UpdateBattleHuds"?
+
+	pop af
+	ld [rSVBK], a
+
+	ld a, $1
+	ld [hBGMapMode], a
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call BattleAnimDelayFrame
+	call WaitTop
+	ret
+; cc1e2
+
+BattleAnimRequestPals: ; cc1e2
+
+	ld a, [hCGB]
+	and a
+	ret z
+
+	ld a, [rBGP]
+	ld b, a
+	ld a, [wBGP]
+	cp b
+	call nz, BattleAnim_SetBGPals
+
+	ld a, [rOBP0]
+	ld b, a
+	ld a, [wOBP0]
+	cp b
+	call nz, BattleAnim_SetOBPals
+	ret
+; cc1fb
+
+BattleAnimDelayFrame: ; cc1fb
+; Like DelayFrame but wastes battery life.
+
+	ld a, 1
+	ld [VBlankOccurred], a
+.wait
+	ld a, [VBlankOccurred]
+	and a
+	jr nz, .wait
+	ret
+; cc207
+
+ClearActorHud: ; cc207
+
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	hlcoord 1, 0
+	lb bc, 4, 10
+	call ClearBox
+	ret
+
+.player
+	hlcoord 9, 7
+	lb bc, 5, 11
+	call ClearBox
+	ret
+; cc220
+
+Functioncc220: ; cc220
+; Appears to be unused.
+	xor a
+	ld [hBGMapMode], a
+	ld a, LOW(VBGMap0 tile $28)
+	ld [hBGMapAddress], a
+	ld a, HIGH(VBGMap0 tile $28)
+	ld [hBGMapAddress + 1], a
+	call WaitBGMap2
+	ld a, $60
+	ld [hWY], a
+	xor a ; LOW(VBGMap0)
+	ld [hBGMapAddress], a
+	ld a, HIGH(VBGMap0)
+	ld [hBGMapAddress + 1], a
+	call BattleAnimDelayFrame
+	ret
+; cc23d
+
+
+BattleAnim_ClearCGB_OAMFlags: ; cc23d
+
+	ld a, [BattleAnimFlags]
+	bit 3, a
+	jr z, .delete
+
+	ld hl, Sprites + 3
+	ld c, (SpritesEnd - Sprites) / 4
+.loop
+	ld a, [hl]
+	and $f0
+	ld [hli], a
+	inc hl
+	inc hl
+	inc hl
+	dec c
+	jr nz, .loop
+	ret
+
+.delete
+	ld hl, Sprites
+	ld c, SpritesEnd - Sprites
+	xor a
+.loop2
+	ld [hli], a
+	dec c
+	jr nz, .loop2
+	ret
+; cc25f
+
+RunBattleAnimCommand: ; cc25f
+	call .CheckTimer
+	ret nc
+	call .RunScript
+	ret
+; cc267
+
+.CheckTimer: ; cc267
+	ld a, [BattleAnimDuration]
+	and a
+	jr z, .done
+
+	dec a
+	ld [BattleAnimDuration], a
+	and a
+	ret
+
+.done
+	scf
+	ret
+; cc275
+
+.RunScript: ; cc275
+.loop
+	call GetBattleAnimByte
+
+	cp $ff
+	jr nz, .not_done_with_anim
+
+; Return from a subroutine.
+	ld hl, BattleAnimFlags
+	bit 1, [hl]
+	jr nz, .do_anim
+
+	set 0, [hl]
+	ret
+
+.not_done_with_anim
+	cp $d0
+	jr nc, .do_anim
+
+	ld [BattleAnimDuration], a
+	ret
+
+.do_anim
+	call .DoCommand
+
+	jr .loop
+; cc293
+
+.DoCommand: ; cc293
+; Execute battle animation command in [BattleAnimByte].
+	ld a, [BattleAnimByte]
+	sub $d0
+
+	ld e, a
+	ld d, 0
+	ld hl, BattleAnimCommands
+	add hl, de
+	add hl, de
+
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+; cc2a4
+
+
+BattleAnimCommands:: ; cc2a4 (33:42a4)
+; entries correspond to macros/scripts/battle_anims.asm enumeration
+	dw BattleAnimCmd_Obj
+	dw BattleAnimCmd_1GFX
+	dw BattleAnimCmd_2GFX
+	dw BattleAnimCmd_3GFX
+	dw BattleAnimCmd_4GFX
+	dw BattleAnimCmd_5GFX
+	dw BattleAnimCmd_IncObj
+	dw BattleAnimCmd_SetObj
+	dw BattleAnimCmd_IncBGEffect
+	dw BattleAnimCmd_EnemyFeetObj
+	dw BattleAnimCmd_PlayerHeadObj
+	dw BattleAnimCmd_CheckPokeball
+	dw BattleAnimCmd_Transform
+	dw BattleAnimCmd_RaiseSub
+	dw BattleAnimCmd_DropSub
+	dw BattleAnimCmd_ResetObp0
+	dw BattleAnimCmd_Sound
+	dw BattleAnimCmd_Cry
+	dw BattleAnimCmd_MinimizeOpp
+	dw BattleAnimCmd_OAMOn
+	dw BattleAnimCmd_OAMOff
+	dw BattleAnimCmd_ClearObjs
+	dw BattleAnimCmd_BeatUp
+	dw BattleAnimCmd_E7
+	dw BattleAnimCmd_UpdateActorPic
+	dw BattleAnimCmd_Minimize
+	dw BattleAnimCmd_EA ; dummy
+	dw BattleAnimCmd_EB ; dummy
+	dw BattleAnimCmd_EC ; dummy
+	dw BattleAnimCmd_ED ; dummy
+	dw BattleAnimCmd_IfParamAnd
+	dw BattleAnimCmd_JumpUntil
+	dw BattleAnimCmd_BGEffect
+	dw BattleAnimCmd_BGP
+	dw BattleAnimCmd_OBP0
+	dw BattleAnimCmd_OBP1
+	dw BattleAnimCmd_ClearSprites
+	dw BattleAnimCmd_F5
+	dw BattleAnimCmd_F6
+	dw BattleAnimCmd_F7
+	dw BattleAnimCmd_IfParamEqual
+	dw BattleAnimCmd_SetVar
+	dw BattleAnimCmd_IncVar
+	dw BattleAnimCmd_IfVarEqual
+	dw BattleAnimCmd_Jump
+	dw BattleAnimCmd_Loop
+	dw BattleAnimCmd_Call
+	dw BattleAnimCmd_Ret
+
+
+BattleAnimCmd_EA:
+BattleAnimCmd_EB:
+BattleAnimCmd_EC:
+BattleAnimCmd_ED: ; cc304 (33:4304)
+	ret
+
+BattleAnimCmd_Ret: ; cc305 (33:4305)
+	ld hl, BattleAnimFlags
+	res 1, [hl]
+	ld hl, BattleAnimParent
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+BattleAnimCmd_Call: ; cc317 (33:4317)
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	push de
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, BattleAnimParent
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	pop de
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, BattleAnimFlags
+	set 1, [hl]
+	ret
+
+BattleAnimCmd_Jump: ; cc339 (33:4339)
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+BattleAnimCmd_Loop: ; cc348 (33:4348)
+	call GetBattleAnimByte
+	ld hl, BattleAnimFlags
+	bit 2, [hl]
+	jr nz, .continue_loop
+	and a
+	jr z, .perpetual
+	dec a
+	set 2, [hl]
+	ld [BattleAnimLoops], a
+.continue_loop
+	ld hl, BattleAnimLoops
+	ld a, [hl]
+	and a
+	jr z, .return_from_loop
+	dec [hl]
+.perpetual
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+.return_from_loop
+	ld hl, BattleAnimFlags
+	res 2, [hl]
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+
+BattleAnimCmd_JumpUntil: ; cc383 (33:4383)
+	ld hl, wBattleAnimParam
+	ld a, [hl]
+	and a
+	jr z, .dont_jump
+
+	dec [hl]
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+.dont_jump
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+
+BattleAnimCmd_SetVar: ; cc3a6 (33:43a6)
+	call GetBattleAnimByte
+	ld [BattleAnimVar], a
+	ret
+
+BattleAnimCmd_IncVar: ; cc3ad (33:43ad)
+	ld hl, BattleAnimVar
+	inc [hl]
+	ret
+
+BattleAnimCmd_IfVarEqual: ; cc3b2 (33:43b2)
+	call GetBattleAnimByte
+	ld hl, BattleAnimVar
+	cp [hl]
+	jr z, .jump
+
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+
+.jump
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+BattleAnimCmd_IfParamEqual: ; cc3d6 (33:43d6)
+	call GetBattleAnimByte
+	ld hl, wBattleAnimParam
+	cp [hl]
+	jr z, .jump
+
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+
+.jump
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+BattleAnimCmd_IfParamAnd: ; cc3fa (33:43fa)
+	call GetBattleAnimByte
+	ld e, a
+	ld a, [wBattleAnimParam]
+	and e
+	jr nz, .jump
+
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc de
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+
+.jump
+	call GetBattleAnimByte
+	ld e, a
+	call GetBattleAnimByte
+	ld d, a
+	ld hl, BattleAnimAddress
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+
+BattleAnimCmd_Obj: ; cc41f (33:441f)
+; index, x, y, param
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp0], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp1], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp2], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp3], a
+	call QueueBattleAnimation
+	ret
+
+BattleAnimCmd_BGEffect: ; cc43b (33:443b)
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp0], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp1], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp2], a
+	call GetBattleAnimByte
+	ld [wBattleAnimTemp3], a
+	call _QueueBGEffect
+	ret
+
+BattleAnimCmd_BGP: ; cc457 (33:4457)
+	call GetBattleAnimByte
+	ld [wBGP], a
+	ret
+
+BattleAnimCmd_OBP0: ; cc45e (33:445e)
+	call GetBattleAnimByte
+	ld [wOBP0], a
+	ret
+
+BattleAnimCmd_OBP1: ; cc465 (33:4465)
+	call GetBattleAnimByte
+	ld [wOBP1], a
+	ret
+
+BattleAnimCmd_ResetObp0: ; cc46c (33:446c)
+	ld a, [hSGB]
+	and a
+	ld a, $e0
+	jr z, .not_sgb
+	ld a, $f0
+.not_sgb
+	ld [wOBP0], a
+	ret
+
+BattleAnimCmd_ClearObjs: ; cc479 (33:4479)
+	ld hl, ActiveAnimObjects
+	ld a, $a0
+.loop
+	ld [hl], $0
+	inc hl
+	dec a
+	jr nz, .loop
+	ret
+
+BattleAnimCmd_1GFX:
+BattleAnimCmd_2GFX:
+BattleAnimCmd_3GFX:
+BattleAnimCmd_4GFX:
+BattleAnimCmd_5GFX: ; cc485 (33:4485)
+	ld a, [BattleAnimByte]
+	and $f
+	ld c, a
+	ld hl, wBattleAnimTileDict
+	xor a
+	ld [wBattleAnimTemp0], a
+.loop
+	ld a, [wBattleAnimTemp0]
+	cp (VTiles1 - VTiles0) / $10 - $31
+	ret nc
+	call GetBattleAnimByte
+	ld [hli], a
+	ld a, [wBattleAnimTemp0]
+	ld [hli], a
+	push bc
+	push hl
+	ld l, a
+	ld h, $0
+rept 4
+	add hl, hl
+endr
+	ld de, VTiles0 tile $31
+	add hl, de
+	ld a, [BattleAnimByte]
+	call LoadBattleAnimObj
+	ld a, [wBattleAnimTemp0]
+	add c
+	ld [wBattleAnimTemp0], a
+	pop hl
+	pop bc
+	dec c
+	jr nz, .loop
+	ret
+
+BattleAnimCmd_IncObj: ; cc4c0 (33:44c0)
+	call GetBattleAnimByte
+	ld e, 10
+	ld bc, ActiveAnimObjects
+.loop
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld d, [hl]
+	ld a, [BattleAnimByte]
+	cp d
+	jr z, .found
+	ld hl, BATTLEANIMSTRUCT_LENGTH
+	add hl, bc
+	ld c, l
+	ld b, h
+	dec e
+	jr nz, .loop
+	ret
+
+.found
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3)
+	call GetBattleAnimByte
+	ld e, 5
+	ld bc, ActiveBGEffects
+.loop
+	ld hl, $0
+	add hl, bc
+	ld d, [hl]
+	ld a, [BattleAnimByte]
+	cp d
+	jr z, .found
+	ld hl, 4
+	add hl, bc
+	ld c, l
+	ld b, h
+	dec e
+	jr nz, .loop
+	ret
+
+.found
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleAnimCmd_SetObj: ; cc506 (33:4506)
+	call GetBattleAnimByte
+	ld e, 10
+	ld bc, ActiveAnimObjects
+.loop
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld d, [hl]
+	ld a, [BattleAnimByte]
+	cp d
+	jr z, .found
+	ld hl, BATTLEANIMSTRUCT_LENGTH
+	add hl, bc
+	ld c, l
+	ld b, h
+	dec e
+	jr nz, .loop
+	ret
+
+.found
+	call GetBattleAnimByte
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ret
+
+BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c)
+
+	ld hl, wBattleAnimTileDict
+.loop
+	ld a, [hl]
+	and a
+	jr z, .okay
+	inc hl
+	inc hl
+	jr .loop
+
+.okay
+	ld a, $28
+	ld [hli], a
+	ld a, $42
+	ld [hli], a
+	ld a, $29
+	ld [hli], a
+	ld a, $49
+	ld [hl], a
+
+	ld hl, VTiles0 tile $73
+	ld de, VTiles2 tile $06
+	ld a, $70
+	ld [wBattleAnimTemp0], a
+	ld a, $7
+	call .LoadFootprint
+	ld de, VTiles2 tile $31
+	ld a, $60
+	ld [wBattleAnimTemp0], a
+	ld a, $6
+	call .LoadFootprint
+	ret
+
+.LoadFootprint: ; cc561 (33:4561)
+	push af
+	push hl
+	push de
+	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
+	call Request2bpp
+	pop de
+	ld a, [wBattleAnimTemp0]
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld e, l
+	ld d, h
+	pop hl
+	ld bc, 1 tiles
+	add hl, bc
+	pop af
+	dec a
+	jr nz, .LoadFootprint
+	ret
+
+BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e)
+
+	ld hl, wBattleAnimTileDict
+.loop
+	ld a, [hl]
+	and a
+	jr z, .okay
+	inc hl
+	inc hl
+	jr .loop
+
+.okay
+	ld a, $28
+	ld [hli], a
+	ld a, $35
+	ld [hli], a
+	ld a, $29
+	ld [hli], a
+	ld a, $43
+	ld [hl], a
+
+	ld hl, VTiles0 tile $66
+	ld de, VTiles2 tile $05
+	ld a, $70
+	ld [wBattleAnimTemp0], a
+	ld a, $7
+	call .LoadHead
+	ld de, VTiles2 tile $31
+	ld a, $60
+	ld [wBattleAnimTemp0], a
+	ld a, $6
+	call .LoadHead
+	ret
+
+.LoadHead: ; cc5b3 (33:45b3)
+	push af
+	push hl
+	push de
+	lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
+	call Request2bpp
+	pop de
+	ld a, [wBattleAnimTemp0]
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld e, l
+	ld d, h
+	pop hl
+	ld bc, 2 tiles
+	add hl, bc
+	pop af
+	dec a
+	jr nz, .LoadHead
+	ret
+
+BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0)
+	callfar GetPokeBallWobble
+	ld a, c
+	ld [BattleAnimVar], a
+	ret
+
+BattleAnimCmd_E7: ; cc5db (33:45db)
+	ret
+
+BattleAnimCmd_Transform: ; cc5dc (33:45dc)
+	ld a, [rSVBK]
+	push af
+	ld a, 1
+	ld [rSVBK], a
+	ld a, [CurPartySpecies] ; CurPartySpecies
+	push af
+
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies
+	ld [CurPartySpecies], a ; CurPartySpecies
+	ld hl, BattleMonDVs ; BattleMonDVs
+	predef GetUnownLetter
+	ld de, VTiles0 tile $00
+	predef GetMonFrontpic
+	jr .done
+
+.player
+	ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies
+	ld [CurPartySpecies], a ; CurPartySpecies
+	ld hl, EnemyMonDVs ; EnemyMonDVs
+	predef GetUnownLetter
+	ld de, VTiles0 tile $00
+	predef GetMonBackpic
+
+.done
+	pop af
+	ld [CurPartySpecies], a ; CurPartySpecies
+	pop af
+	ld [rSVBK], a
+	ret
+
+BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622)
+
+	ld de, VTiles0 tile $00
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	ld hl, VTiles2 tile $00
+	ld b, 0
+	ld c, $31
+	call Request2bpp
+	ret
+
+.player
+	ld hl, VTiles2 tile $31
+	ld b, 0
+	ld c, $24
+	call Request2bpp
+	ret
+
+BattleAnimCmd_RaiseSub: ; cc640 (33:4640)
+
+	ld a, [rSVBK]
+	push af
+	ld a, 1
+	ld [rSVBK], a
+	xor a
+	call GetSRAMBank
+
+GetSubstitutePic: ; cc64c
+
+	ld hl, sScratch
+	ld bc, (7 * 7) tiles
+.loop
+	xor a
+	ld [hli], a
+	dec bc
+	ld a, c
+	or b
+	jr nz, .loop
+
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	ld hl, MonsterSpriteGFX + 0 tiles
+	ld de, sScratch + (2 * 7 + 5) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 1 tiles
+	ld de, sScratch + (3 * 7 + 5) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 2 tiles
+	ld de, sScratch + (2 * 7 + 6) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 3 tiles
+	ld de, sScratch + (3 * 7 + 6) tiles
+	call .CopyTile
+
+	ld hl, VTiles2 tile $00
+	ld de, sScratch
+	lb bc, BANK(GetSubstitutePic), 7 * 7
+	call Request2bpp
+	jr .done
+
+.player
+	ld hl, MonsterSpriteGFX + 4 tiles
+	ld de, sScratch + (2 * 6 + 4) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 5 tiles
+	ld de, sScratch + (3 * 6 + 4) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 6 tiles
+	ld de, sScratch + (2 * 6 + 5) tiles
+	call .CopyTile
+	ld hl, MonsterSpriteGFX + 7 tiles
+	ld de, sScratch + (3 * 6 + 5) tiles
+	call .CopyTile
+
+	ld hl, VTiles2 tile $31
+	ld de, sScratch
+	lb bc, BANK(GetSubstitutePic), 6 * 6
+	call Request2bpp
+
+.done
+	call CloseSRAM
+	pop af
+	ld [rSVBK], a
+	ret
+
+.CopyTile: ; cc6c6 (33:46c6)
+	ld bc, 1 tiles
+	ld a, BANK(MonsterSpriteGFX)
+	call FarCopyBytes
+	ret
+
+BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	xor a
+	call GetSRAMBank
+	call GetMinimizePic
+	call Request2bpp
+	call CloseSRAM
+	pop af
+	ld [rSVBK], a
+	ret
+
+GetMinimizePic: ; cc6e7 (33:46e7)
+	ld hl, sScratch
+	ld bc, $31 tiles
+.loop
+	xor a
+	ld [hli], a
+	dec bc
+	ld a, c
+	or b
+	jr nz, .loop
+
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	ld de, sScratch + $1a tiles
+	call CopyMinimizePic
+	ld hl, VTiles2 tile $00
+	ld de, sScratch
+	lb bc, BANK(GetMinimizePic), $31
+	ret
+
+.player
+	ld de, sScratch + $160
+	call CopyMinimizePic
+	ld hl, VTiles2 tile $31
+	ld de, sScratch
+	lb bc, BANK(GetMinimizePic), $24
+	ret
+
+CopyMinimizePic: ; cc719 (33:4719)
+	ld hl, MinimizePic
+	ld bc, $10
+	ld a, BANK(MinimizePic)
+	call FarCopyBytes
+	ret
+; cc725 (33:4725)
+
+MinimizePic: ; cc725
+INCBIN "gfx/battle/minimize.2bpp"
+; cc735
+
+BattleAnimCmd_Minimize: ; cc735 (33:4735)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	xor a
+	call GetSRAMBank
+	call GetMinimizePic
+	ld hl, VTiles0 tile $00
+	call Request2bpp
+	call CloseSRAM
+	pop af
+	ld [rSVBK], a
+	ret
+
+BattleAnimCmd_DropSub: ; cc750 (33:4750)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+
+	ld a, [CurPartySpecies] ; CurPartySpecies
+	push af
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	callfar DropEnemySub
+	jr .done
+
+.player
+	callfar DropPlayerSub
+
+.done
+	pop af
+	ld [CurPartySpecies], a ; CurPartySpecies
+	pop af
+	ld [rSVBK], a
+	ret
+
+BattleAnimCmd_BeatUp: ; cc776 (33:4776)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [CurPartySpecies] ; CurPartySpecies
+	push af
+
+	ld a, [wBattleAnimParam]
+	ld [CurPartySpecies], a ; CurPartySpecies
+
+	ld a, [hBattleTurn]
+	and a
+	jr z, .player
+
+	ld hl, BattleMonDVs
+	predef GetUnownLetter
+	ld de, VTiles2 tile $00
+	predef GetMonFrontpic
+	jr .done
+
+.player
+	ld hl, EnemyMonDVs
+	predef GetUnownLetter
+	ld de, VTiles2 tile $31
+	predef GetMonBackpic
+
+.done
+	pop af
+	ld [CurPartySpecies], a ; CurPartySpecies
+	ld b, SCGB_BATTLE_COLORS
+	call GetSGBLayout
+	pop af
+	ld [rSVBK], a
+	ret
+
+BattleAnimCmd_OAMOn: ; cc7bb (33:47bb)
+	xor a
+	ld [hOAMUpdate], a
+	ret
+
+BattleAnimCmd_OAMOff: ; cc7bf (33:47bf)
+	ld a, $1
+	ld [hOAMUpdate], a
+	ret
+
+BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4)
+	ld hl, BattleAnimFlags
+	set 3, [hl]
+	ret
+
+BattleAnimCmd_F5: ; cc7ca (33:47ca)
+	ret
+
+BattleAnimCmd_F6: ; cc7cb (33:47cb)
+	ret
+
+BattleAnimCmd_F7: ; cc7cc (33:47cc)
+	ret
+
+BattleAnimCmd_Sound: ; cc7cd (33:47cd)
+	call GetBattleAnimByte
+	ld e, a
+	srl a
+	srl a
+	ld [wSFXDuration], a
+	call .GetCryTrack
+	and 3
+	ld [CryTracks], a ; CryTracks
+
+	ld e, a
+	ld d, 0
+	ld hl, .GetPanning
+	add hl, de
+	ld a, [hl]
+	ld [wStereoPanningMask], a
+
+	call GetBattleAnimByte
+	ld e, a
+	ld d, 0
+	callfar PlayStereoSFX
+
+	ret
+; cc7f8 (33:47f8)
+
+.GetPanning: ; cc7f8
+	db $f0, $0f, $f0, $0f
+; cc7fc
+
+.GetCryTrack: ; cc7fc (33:47fc)
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .enemy
+
+	ld a, e
+	ret
+
+.enemy
+	ld a, e
+	xor 1
+	ret
+
+BattleAnimCmd_Cry: ; cc807 (33:4807)
+	call GetBattleAnimByte
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .CryData
+rept 4
+	add hl, de
+endr
+
+	ld a, [rSVBK]
+	push af
+	ld a, 1
+	ld [rSVBK], a
+
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .enemy
+
+	ld a, $f0
+	ld [CryTracks], a ; CryTracks
+	ld a, [BattleMonSpecies] ; BattleMonSpecies
+	jr .done_cry_tracks
+
+.enemy
+	ld a, $0f
+	ld [CryTracks], a ; CryTracks
+	ld a, [EnemyMonSpecies] ; EnemyMon
+
+.done_cry_tracks
+	push hl
+	call LoadCryHeader
+	pop hl
+	jr c, .done
+
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+
+	push hl
+	ld hl, CryPitch
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, bc
+	ld a, l
+	ld [CryPitch], a
+	ld a, h
+	ld [CryPitch + 1], a
+	pop hl
+
+	ld a, [hli]
+	ld c, a
+	ld b, [hl]
+	ld hl, CryLength ; CryLength
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, bc
+
+	ld a, l
+	ld [CryLength], a ; CryLength
+	ld a, h
+	ld [CryLength + 1], a
+	ld a, 1
+	ld [wStereoPanningMask], a
+
+	callfar _PlayCryHeader
+
+.done
+	pop af
+	ld [rSVBK], a
+	ret
+; cc871 (33:4871)
+
+.CryData: ; cc871
+; +pitch, +length
+	dw $0000, $00c0
+	dw $0000, $0040
+	dw $0000, $0000
+	dw $0000, $0000
+; cc881
+
+
+PlayHitSound: ; cc881
+	ld a, [wNumHits]
+	cp $1
+	jr z, .okay
+	cp $4
+	ret nz
+
+.okay
+	ld a, [TypeModifier]
+	and $7f
+	ret z
+
+	cp 10
+	ld de, SFX_DAMAGE
+	jr z, .play
+
+	ld de, SFX_SUPER_EFFECTIVE
+	jr nc, .play
+
+	ld de, SFX_NOT_VERY_EFFECTIVE
+
+.play
+	call PlaySFX
+	ret
+; cc8a4
+
+BattleAnimAssignPals: ; cc8a4
+	ld a, [hCGB]
+	and a
+	jr nz, .cgb
+	ld a, [hSGB]
+	and a
+	ld a, %11100000
+	jr z, .sgb
+	ld a, %11110000
+
+.sgb
+	ld [wOBP0], a
+	ld a, %11100100
+	ld [wBGP], a
+	ld [wOBP1], a
+	ret
+
+.cgb
+	ld a, %11100100
+	ld [wBGP], a
+	ld [wOBP0], a
+	ld [wOBP1], a
+	call DmgToCgbBGPals
+	lb de, %11100100, %11100100
+	call DmgToCgbObjPals
+	ret
+; cc8d3
+
+ClearBattleAnims: ; cc8d3
+; Clear animation block
+	ld hl, LYOverrides
+	ld bc, wBattleAnimEnd - LYOverrides
+.loop
+	ld [hl], $0
+	inc hl
+	dec bc
+	ld a, c
+	or b
+	jr nz, .loop
+
+	ld hl, FXAnimID
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, BattleAnimations
+	add hl, de
+	add hl, de
+	call GetBattleAnimPointer
+	call BattleAnimAssignPals
+	call BattleAnimDelayFrame
+	ret
+; cc8f6
+
+BattleAnim_RevertPals: ; cc8f6
+	call WaitTop
+	ld a, %11100100
+	ld [wBGP], a
+	ld [wOBP0], a
+	ld [wOBP1], a
+	call DmgToCgbBGPals
+	lb de, %11100100, %11100100
+	call DmgToCgbObjPals
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	call BattleAnimDelayFrame
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; cc91a
+
+BattleAnim_SetBGPals: ; cc91a
+	ld [rBGP], a
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, BGPals
+	ld de, UnknBGPals
+	ld a, [rBGP]
+	ld b, a
+	ld c, 7
+	call CopyPals
+	ld hl, OBPals
+	ld de, UnknOBPals
+	ld a, [rBGP]
+	ld b, a
+	ld c, 2
+	call CopyPals
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; cc94b
+
+BattleAnim_SetOBPals: ; cc94b
+	ld [rOBP0], a
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, OBPals palette PAL_BATTLE_OB_GRAY
+	ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY
+	ld a, [rOBP0]
+	ld b, a
+	ld c, 2
+	call CopyPals
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; cc96e
+
+BattleAnim_UpdateOAM_All: ; cc96e
+	ld a, $0
+	ld [wBattleAnimOAMPointerLo], a
+	ld hl, ActiveAnimObjects
+	ld e, 10
+.loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	ld c, l
+	ld b, h
+	push hl
+	push de
+	call DoBattleAnimFrame
+	call BattleAnimOAMUpdate
+	pop de
+	pop hl
+	jr c, .done
+
+.next
+	ld bc, BATTLEANIMSTRUCT_LENGTH
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ld a, [wBattleAnimOAMPointerLo]
+	ld l, a
+	ld h, HIGH(Sprites)
+.loop2
+	ld a, l
+	cp LOW(SpritesEnd)
+	jr nc, .done
+	xor a
+	ld [hli], a
+	jr .loop2
+
+.done
+	ret
+; cc9a1
--- /dev/null
+++ b/engine/battle_anims/bg_effects.asm
@@ -1,0 +1,2958 @@
+	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.
+
+ExecuteBGEffects: ; c8000 (32:4000)
+	ld hl, ActiveBGEffects
+	ld e, 5
+.loop
+	ld a, [hl]
+	and a
+	jr z, .next
+	ld c, l
+	ld b, h
+	push hl
+	push de
+	call DoBattleBGEffectFunction
+	pop de
+	pop hl
+.next
+	ld bc, 4
+	add hl, bc
+	dec e
+	jr nz, .loop
+	ret
+
+QueueBGEffect: ; c801a (32:401a)
+	ld hl, ActiveBGEffects
+	ld e, 5
+.loop
+	ld a, [hl]
+	and a
+	jr z, .load
+	ld bc, 4
+	add hl, bc
+	dec e
+	jr nz, .loop
+	scf
+	ret
+
+.load
+	ld c, l
+	ld b, h
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
+	add hl, bc
+	ld a, [wBattleAnimTemp0]
+	ld [hli], a
+	ld a, [wBattleAnimTemp1]
+	ld [hli], a
+	ld a, [wBattleAnimTemp2]
+	ld [hli], a
+	ld a, [wBattleAnimTemp3]
+	ld [hl], a
+	ret
+
+EndBattleBGEffect: ; c8043 (32:4043)
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
+	add hl, bc
+	ld [hl], 0
+	ret
+
+DoBattleBGEffectFunction: ; c804a (32:404a)
+	ld hl, BG_EFFECT_STRUCT_FUNCTION
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, BattleBGEffects
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+
+BattleBGEffects: ; c805a (32:405a)
+; entries correspond to ANIM_BG_* constants
+	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_Withdraw
+	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_End: ; c80c6 (32:40c6)
+	call EndBattleBGEffect
+	ret
+
+BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca)
+	ld hl, BG_EFFECT_STRUCT_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
+	ret
+
+BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7)
+	pop de
+	ld hl, BG_EFFECT_STRUCT_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
+
+BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	inc [hl]
+	ret
+
+BattleBGEffect_FlashInverted: ; c80eb (32:40eb)
+	ld de, .inverted
+	jp BattleBGEffect_FlashContinue
+
+.inverted
+	db %11100100 ; 3210
+	db %00011011 ; 0123
+; c80f3
+
+BattleBGEffect_FlashWhite: ; c80f3 (32:40f3)
+	ld de, .white
+	jp BattleBGEffect_FlashContinue
+
+.white
+	db %11100100 ; 3210
+	db %00000000 ; 0000
+; c80fb
+
+BattleBGEffect_FlashContinue: ; c80fb (32:40fb)
+; current timer, flash duration, number of flashes
+	ld a, $1
+	ld [wBattleAnimTemp0], a
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .init
+	dec [hl]
+	ret
+
+.init
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .apply_pal
+	call EndBattleBGEffect
+	ret
+
+.apply_pal
+	dec a
+	ld [hl], a
+	and 1
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld a, [hl]
+	ld [wBGP], a
+	ret
+
+BattleBGEffect_WhiteHues: ; c812d (32:412d)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
+	ret
+
+.quit
+	call EndBattleBGEffect
+	ret
+
+.Pals:
+	db %11100100
+	db %11100000
+	db %11010000
+	db -1
+; c8141
+
+BattleBGEffect_BlackHues: ; c8141 (32:4141)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
+	ret
+
+.quit
+	call EndBattleBGEffect
+	ret
+
+.Pals:
+	db %11100100
+	db %11110100
+	db %11111000
+	db -1
+; c8155
+
+BattleBGEffect_AlternateHues: ; c8155 (32:4155)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	jr c, .quit
+	ld [wBGP], a
+	ld [wOBP1], a
+	ret
+
+.quit
+	call EndBattleBGEffect
+	ret
+
+.Pals:
+	db %11100100
+	db %11111000
+	db %11111100
+	db %11111000
+	db %11100100
+	db %10010000
+	db %01000000
+	db %10010000
+	db -2
+; c8171
+
+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
+
+.PalsCGB:
+	db %11100100
+	db %10010000
+	db -2
+
+.PalsSGB:
+	db %11110000
+	db %11000000
+	db -2
+; c818b
+
+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
+
+.PalsCGB:
+	db %11100100
+	db %11011000
+	db -2
+
+.PalsSGB:
+	db %11110000
+	db %11001100
+	db -2
+; c81a5
+
+BattleBGEffect_08: ; c81a5 (32:41a5)
+	ld de, .Pals
+	call BattleBGEffect_GetNthDMGPal
+	ld [wBGP], a
+	ret
+
+.Pals:
+	db %00011011
+	db %01100011
+	db %10000111
+	db -2
+; c81b3
+
+BattleBGEffect_HideMon: ; c81b3 (32:41b3)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .four
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	push bc
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	hlcoord 12, 0
+	lb bc, 7, 7
+	jr .got_pointer
+
+.player_side
+	hlcoord 2, 6
+	lb bc, 6, 6
+.got_pointer
+	call ClearBox
+	pop bc
+	xor a
+	ld [hBGMapThird], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.four
+	xor a
+	ld [hBGMapMode], a
+	call EndBattleBGEffect
+	ret
+
+BattleBGEffect_ShowMon: ; c81ea (32:41ea)
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying
+	call EndBattleBGEffect
+	ret
+
+.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 [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
+	ret
+
+.PlayerData:
+	db  0, $31, 0
+	db -1
+.EnemyData:
+	db  3, $00, 3
+	db -1
+; c8214
+
+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
+
+
+.zero
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying_digging
+	ld hl, wNumActiveBattleAnims
+	inc [hl]
+	call EndBattleBGEffect
+	ret
+
+.not_flying_digging
+	call BattleBGEffects_IncrementJumptable
+	push bc
+	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 [wBattleAnimTemp3], a
+	call _QueueBattleAnimation
+	pop bc
+	ret
+
+.one
+	call BattleBGEffects_IncrementJumptable
+	push bc
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn_2
+	hlcoord 12, 6
+	lb bc, 1, 7
+	jr .okay2
+
+.player_turn_2
+	hlcoord 2, 6
+	lb bc, 1, 6
+.okay2
+	call ClearBox
+	ld a, $1
+	ld [hBGMapMode], a
+	pop bc
+	ret
+
+.five
+	xor a
+	ld [hBGMapMode], a
+	call EndBattleBGEffect
+	ret
+
+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
+
+
+.zero
+	call BGEffect_CheckFlyDigStatus
+	jr z, .not_flying_digging
+	ld hl, wNumActiveBattleAnims
+	inc [hl]
+	call EndBattleBGEffect
+	ret
+
+.not_flying_digging
+	call BattleBGEffects_IncrementJumptable
+	push bc
+	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 [wBattleAnimTemp3], a
+	call _QueueBattleAnimation
+	pop bc
+	ret
+
+.one
+	call BattleBGEffects_IncrementJumptable
+	push bc
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn_2
+	hlcoord 12, 5
+	lb bc, 2, 7
+	jr .okay2
+
+.player_turn_2
+	hlcoord 2, 6
+	lb bc, 2, 6
+.okay2
+	call ClearBox
+	ld a, $1
+	ld [hBGMapMode], a
+	pop bc
+	ret
+
+.five
+	xor a
+	ld [hBGMapMode], a
+	call EndBattleBGEffect
+	ret
+
+_QueueBattleAnimation: ; c82ee (32:42ee)
+	callfar QueueBattleAnimation
+	ret
+
+BattleBGEffect_27: ; c82f5 (32:42f5)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .four
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BGEffect_CheckBattleTurn
+	ld [hl], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .user
+	ld a, $9
+	jr .okay
+
+.user
+	ld a, $8
+.okay
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], a
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .user_2
+	hlcoord 0, 6
+	lb de, 8, 6
+.row1
+	push de
+	push hl
+.col1
+	inc hl
+	ld a, [hld]
+	ld [hli], a
+	dec d
+	jr nz, .col1
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop de
+	dec e
+	jr nz, .row1
+	jr .okay2
+
+.user_2
+	hlcoord 19, 0
+	lb de, 8, 7
+.row2
+	push de
+	push hl
+.col2
+	dec hl
+	ld a, [hli]
+	ld [hld], a
+	dec d
+	jr nz, .col2
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop de
+	dec e
+	jr nz, .row2
+.okay2
+	xor a
+	ld [hBGMapThird], a
+	ld a, $1
+	ld [hBGMapMode], a
+	call BattleBGEffects_IncrementJumptable
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	dec [hl]
+	ret
+
+.four
+	xor a
+	ld [hBGMapMode], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .done
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld [hl], $1
+	ret
+
+.done
+	call EndBattleBGEffect
+	ret
+
+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 [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
+	ret
+
+.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
+
+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 [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	call BattleBGEffect_RunPicResizeScript
+	ret
+
+.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
+
+BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw BattleBGEffects_IncrementJumptable
+	dw BattleBGEffects_IncrementJumptable
+	dw .restart
+	dw .end
+
+
+.zero
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	inc [hl]
+	ld a, [wBattleAnimTemp1]
+	ld l, a
+	ld a, [wBattleAnimTemp2]
+	ld h, a
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, [hl]
+	cp -1
+	jr z, .end
+	cp -2
+	jr z, .clear
+	cp -3
+	jr z, .skip
+	call .PlaceGraphic
+.skip
+	call BattleBGEffects_IncrementJumptable
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.clear
+	call .ClearBox
+	jr .zero
+
+.restart
+	xor a
+	ld [hBGMapMode], a
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.end
+	xor a
+	ld [hBGMapMode], a
+	call EndBattleBGEffect
+	ret
+
+.ClearBox:
+; get dims
+	push bc
+	inc hl
+	ld a, [hli]
+	ld b, a
+	and $f
+	ld c, a
+	ld a, b
+	swap a
+	and $f
+	ld b, a
+; get coords
+	ld e, [hl]
+	ld d, 0
+	ld hl, .Coords
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call ClearBox
+	pop bc
+	ret
+
+.PlaceGraphic:
+; get dims
+	push bc
+	push hl
+	ld e, [hl]
+	ld d, 0
+	ld hl, .BGSquares
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld b, a
+	and $f
+	ld c, a
+	ld a, b
+	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 [wBattleAnimTemp0], a
+; get coord
+	push de
+	ld e, [hl]
+	ld d, 0
+	ld hl, .Coords
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+; fill box
+.row
+	push bc
+	push hl
+	ld a, [wBattleAnimTemp0]
+	ld b, a
+.col
+	ld a, [de]
+	add b
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .col
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .row
+	pop bc
+	ret
+
+.Coords:
+	dwcoord  2,  6
+	dwcoord  3,  8
+	dwcoord  4, 10
+	dwcoord 12,  0
+	dwcoord 13,  2
+	dwcoord 14,  4
+
+.BGSquares:
+bgsquare: MACRO
+	dn \1, \2
+	dw \3
+endm
+
+	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
+	db $03, $09, $0f, $15, $1b, $21
+	db $04, $0a, $10, $16, $1c, $22
+	db $05, $0b, $11, $17, $1d, $23
+
+.FourByFour:
+	db $00, $0c, $12, $1e
+	db $02, $0e, $14, $20
+	db $03, $0f, $15, $21
+	db $05, $11, $17, $23
+
+.TwoByTwo:
+	db $00, $1e
+	db $05, $23
+
+.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
+	db $03, $0a, $11, $18, $1f, $26, $2d
+	db $04, $0b, $12, $19, $20, $27, $2e
+	db $05, $0c, $13, $1a, $21, $28, $2f
+	db $06, $0d, $14, $1b, $22, $29, $30
+
+.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
+
+.ThreeByThree:
+	db $00, $15, $2a
+	db $03, $18, $2d
+	db $06, $1b, $30
+; c8545
+
+BattleBGEffect_Surf: ; c8545 (32:4545)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	lb de, 2, 2
+	call InitSurfWaves
+
+.one
+	ld a, [hLCDCPointer]
+	and a
+	ret z
+	push bc
+	call .RotatewSurfWaveBGEffect
+	pop bc
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+.RotatewSurfWaveBGEffect:
+	ld hl, wSurfWaveBGEffect
+	ld de, wSurfWaveBGEffect + 1
+	ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1
+	ld a, [hl]
+	push af
+.loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	pop af
+	ld [hl], a
+	ld de, LYOverridesBackup
+	ld hl, wSurfWaveBGEffect
+	ld bc, $0
+.loop2
+	ld a, [hLYOverrideStart]
+	cp e
+	jr nc, .load_zero
+	push hl
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	jr .okay
+
+.load_zero
+	xor a
+.okay
+	ld [de], a
+	ld a, c
+	inc a
+	and $3f
+	ld c, a
+	inc de
+	ld a, e
+	cp $5f
+	jr c, .loop2
+	ret
+
+BattleBGEffect_Whirlpool: ; c8599 (32:4599)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	ld [hLCDCPointer], a
+	xor a
+	ld [hLYOverrideStart], a
+	ld a, $5e
+	ld [hLYOverrideEnd], a
+	lb de, 2, 2
+	call Functionc8f2e
+	ret
+
+.one
+	call BattleBGEffect_WavyScreenFX
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_30: ; c85c2 (32:45c2)
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	call EndBattleBGEffect
+	ret
+
+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, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	swap a
+	xor $ff
+	add $4
+	ld d, a
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTemp0], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr nc, .done
+	inc [hl]
+	inc [hl]
+	call Functionc8f9a
+	ret
+
+.done
+	call BattleBGEffects_ClearLYOverrides
+	call EndBattleBGEffect
+	ret
+
+BattleBGEffect_32: ; c8603 (32:4603)
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_Psychic: ; c8607 (32:4607)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	ld [hLCDCPointer], a
+	xor a
+	ld [hLYOverrideStart], a
+	ld a, $5f
+	ld [hLYOverrideEnd], a
+	lb de, 6, 5
+	call Functionc8f2e
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	and $3
+	ret nz
+	call BattleBGEffect_WavyScreenFX
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_Teleport: ; c863f (32:463f)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	lb de, 6, 5
+	call Functionc8f2e
+	ret
+
+.one
+	call BattleBGEffect_WavyScreenFX
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_NightShade: ; c8662 (32:4662)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld e, [hl]
+	ld d, 2
+	call Functionc8f2e
+	ret
+
+.one
+	call BattleBGEffect_WavyScreenFX
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_DoubleTeam: ; c8689 (32:4689)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp $10
+	jr nc, .next
+	inc [hl]
+	call .UpdateLYOverrides
+	ret
+
+.three
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .next
+	dec [hl]
+	call .UpdateLYOverrides
+	ret
+
+.next
+	call BattleBGEffects_IncrementJumptable
+	ret
+
+.two
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	ld d, $2
+	call BattleBGEffects_Sine
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	add [hl]
+	call .UpdateLYOverrides
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	add $4
+	ld [hl], a
+
+.four
+	ret
+
+.UpdateLYOverrides:
+	ld e, a
+	xor $ff
+	inc a
+	ld d, a
+	ld h, HIGH(LYOverridesBackup)
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, [hLYOverrideEnd]
+	sub l
+	srl a
+	push af
+.loop
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	inc hl
+	dec a
+	jr nz, .loop
+	pop af
+	ret nc
+	ld [hl], e
+	ret
+
+.five
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_AcidArmor: ; c8709 (32:4709)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld e, [hl]
+	ld d, 2
+	call Functionc8f2e
+	ld h, HIGH(LYOverridesBackup)
+	ld a, [hLYOverrideEnd]
+	ld l, a
+	ld [hl], $0
+	dec l
+	ld [hl], $0
+	ret
+
+.one
+	ld a, [hLYOverrideEnd]
+	ld l, a
+	ld h, HIGH(LYOverridesBackup)
+	ld e, l
+	ld d, h
+	dec de
+.loop
+	ld a, [de]
+	dec de
+	ld [hld], a
+	ld a, [hLYOverrideStart]
+	cp l
+	jr nz, .loop
+	ld [hl], $90
+	ld a, [hLYOverrideEnd]
+	ld l, a
+	ld a, [hl]
+	cp $1
+	jr c, .okay
+	cp $90
+	jr z, .okay
+	ld [hl], $0
+.okay
+	dec l
+	ld a, [hl]
+	cp $2
+	ret c
+	cp $90
+	ret z
+	ld [hl], $0
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_Withdraw: ; c8761 (32:4761)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $1
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld d, a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	cp d
+	ret nc
+	call BGEffect_DisplaceLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	rlca
+	rlca
+	and $3
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_Dig: ; c87a7 (32:47a7)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $2
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .next
+	dec [hl]
+	ret
+
+.next
+	ld [hl], $10
+	call BattleBGEffects_IncrementJumptable
+.two
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, [hLYOverrideEnd]
+	sub l
+	dec a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	cp [hl]
+	ret c
+	ld a, [hl]
+	push af
+	and $7
+	jr nz, .skip
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	dec [hl]
+.skip
+	pop af
+	call BGEffect_DisplaceLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ret
+
+.three
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_Tackle: ; c8805 (32:4805)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw Tackle_BGEffect25_2d_one
+	dw Tackle_BGEffect25_2d_two
+	dw .three
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	ld a, 2
+	jr .okay
+
+.player_side
+	ld a, -2
+.okay
+	ld [hl], a
+	ret
+
+.three
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_25: ; c8837 (32:4837)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw Tackle_BGEffect25_2d_one
+	dw Tackle_BGEffect25_2d_two
+	dw .three
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms2
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_side
+	ld a,  2
+	jr .okay
+
+.player_side
+	ld a, -2
+.okay
+	ld [hl], a
+	ret
+
+.three
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+Tackle_BGEffect25_2d_one:
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp -8
+	jr z, .reached_limit
+	cp  8
+	jr nz, .finish
+.reached_limit
+	call BattleBGEffects_IncrementJumptable
+.finish
+	call Functionc88a5
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+Tackle_BGEffect25_2d_two:
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_c8893
+	call BattleBGEffects_IncrementJumptable
+.asm_c8893
+	call Functionc88a5
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ret
+
+Functionc88a5: ; c88a5 (32:48a5)
+	push af
+	ld a, [FXAnimID + 1] ; FXAnimID + 1
+	or a
+	jr nz, .not_rollout
+	ld a, [FXAnimID] ; FXAnimID
+	cp ROLLOUT
+	jr z, .rollout
+.not_rollout
+	pop af
+	jp BGEffect_FillLYOverridesBackup
+
+.rollout
+	ld a, [hLYOverrideStart]
+	ld d, a
+	ld a, [hLYOverrideEnd]
+	sub d
+	ld d, a
+	ld h, HIGH(LYOverridesBackup)
+	ld a, [hSCY]
+	or a
+	jr nz, .skip1
+	ld a, [hLYOverrideStart]
+	or a
+	jr z, .skip2
+	dec a
+	ld l, a
+	ld [hl], $0
+	jr .skip2
+
+.skip1
+	ld a, [hLYOverrideEnd]
+	dec a
+	ld l, a
+	ld [hl], $0
+.skip2
+	ld a, [hSCY]
+	ld l, a
+	ld a, [hLYOverrideStart]
+	sub l
+	jr nc, .skip3
+	xor a
+	dec d
+.skip3
+	ld l, a
+	pop af
+.loop
+	ld [hli], a
+	dec d
+	jr nz, .loop
+	ret
+
+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
+
+
+.three
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BGEffect2d_2f_zero:
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_turn
+	ld a, -2
+	jr .okay
+
+.player_turn
+	ld a, 2
+.okay
+	ld [hl], a
+	ret
+
+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
+
+.four
+	call BattleAnim_ResetLCDStatCustom
+.two
+	ret
+
+BattleBGEffect_26: ; c892a (32:492a)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	ld d, $8
+	call BattleBGEffects_Sine
+	call BGEffect_FillLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	add $4
+	ld [hl], a
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_2c: ; c8964 (32:4964)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	xor a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	ld d, $6
+	call BattleBGEffects_Sine
+	push af
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	ld d, $2
+	call BattleBGEffects_Sine
+	ld e, a
+	pop af
+	add e
+	call BGEffect_FillLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	add $8
+	ld [hl], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_28: ; c89b5 (32:49b5)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	ret nc
+	inc [hl]
+	ld d, a
+	ld e, 4
+	call Functionc8f2e
+	ret
+
+.two
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .reset
+	dec [hl]
+	ld d, a
+	ld e, 4
+	call Functionc8f2e
+	ret
+
+.reset
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_BounceDown: ; c89ee (32:49ee)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCY - $ff00
+	call BattleBGEffect_SetLCDStatCustoms2
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $1
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $20
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	cp $38
+	ret nc
+	push af
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	ld d, $10
+	call BattleBGEffects_Cosine
+	add $10
+	ld d, a
+	pop af
+	add d
+	call BGEffect_DisplaceLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	inc [hl]
+	inc [hl]
+	ret
+
+.two
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_2a: ; c8a3a (32:4a3a)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	ld a, $e4
+	call BattleBGEffects_SetLYOverrides
+	ld a, $47
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld h, HIGH(LYOverridesBackup)
+.loop
+	ld a, [hLYOverrideEnd]
+	cp l
+	jr z, .done
+	xor a
+	ld [hli], a
+	jr .loop
+
+.done
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+.one
+.four
+	ret
+
+.two
+	call .GetLYOverride
+	jr nc, .next
+	call .SetLYOverridesBackup
+	ret
+
+.next
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	ld a, [hLYOverrideStart]
+	inc a
+	ld [hLYOverrideStart], a
+	call BattleBGEffects_IncrementJumptable
+	ret
+
+.three
+	call .GetLYOverride
+	jr nc, .finish
+	call .SetLYOverridesBackup
+	ld a, [hLYOverrideEnd]
+	dec a
+	ld l, a
+	ld [hl], e
+	ret
+
+.finish
+	call BattleBGEffects_IncrementJumptable
+	ret
+
+.SetLYOverridesBackup:
+	ld e, a
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, [hLYOverrideEnd]
+	sub l
+	srl a
+	ld h, HIGH(LYOverridesBackup)
+.loop2
+	ld [hl], e
+	inc hl
+	inc hl
+	dec a
+	jr nz, .loop2
+	ret
+
+.five
+	call BattleBGEffects_ResetVideoHRAM
+	ret
+
+.GetLYOverride:
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	srl a
+	srl a
+	srl a
+	ld e, a
+	ld d, 0
+	ld hl, .data
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret
+
+.data
+	db $00, $40, $90, $e4
+	db -1
+; c8acc
+
+BattleBGEffect_2b: ; c8acc (32:4acc)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $40
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .done
+	dec [hl]
+	srl a
+	srl a
+	srl a
+	and $f
+	ld d, a
+	ld e, a
+	call Functionc8f2e
+	ret
+
+.done
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_1c: ; c8b00 (32:4b00)
+	ld a, [hCGB]
+	and a
+	jr nz, .cgb
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero
+	call BattleBGEffects_IncrementJumptable
+	ld a, $e4
+	call BattleBGEffects_SetLYOverrides
+	ld a, rBGP - $ff00
+	ld [hLCDCPointer], a
+	xor a
+	ld [hLYOverrideStart], a
+	ld a, $60
+	ld [hLYOverrideEnd], a
+	ret
+
+.one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld e, a
+	and $7
+	ret nz
+	ld a, e
+	and $18
+	sla a
+	swap a
+	sla a
+	ld e, a
+	ld d, $0
+	push bc
+	call BGEffect_CheckBattleTurn
+	jr nz, .player
+	ld hl, .CGB_DMGEnemyData
+	add hl, de
+	ld a, [hli]
+	ld [wOBP1], a
+	ld d, a
+	ld e, [hl]
+	lb bc, $2f, $30
+	jr .okay
+
+.player
+	ld hl, .DMG_PlayerData
+	add hl, de
+	ld d, [hl]
+	inc hl
+	ld a, [hl]
+	ld [wOBP1], a
+	ld e, a
+	lb bc, $37, $28
+.okay
+	call .DMG_LYOverrideLoads
+	pop bc
+	ret
+
+.two
+	call BattleBGEffects_ResetVideoHRAM
+	ld a, $e4
+	ld [wBGP], a
+	ld [wOBP1], a
+	ret
+
+.DMG_LYOverrideLoads:
+	ld hl, LYOverridesBackup
+.loop1
+	ld [hl], d
+	inc hl
+	dec b
+	jr nz, .loop1
+.loop2
+	ld [hl], e
+	inc hl
+	dec c
+	jr nz, .loop2
+	ret
+
+.cgb
+	ld de, .Jumptable
+	call BatttleBGEffects_GetNamedJumptablePointer
+	jp hl
+
+.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
+
+.cgb_one
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	ld e, a
+	and $7
+	ret nz
+	ld a, e
+	and $18
+	sla a
+	swap a
+	sla a
+	ld e, a
+	ld d, 0
+	call BGEffect_CheckBattleTurn
+	jr nz, .player_2
+	ld hl, .CGB_DMGEnemyData
+	add hl, de
+	ld a, [hli]
+	push hl
+	call BGEffects_LoadBGPal1_OBPal0
+	pop hl
+	ld a, [hl]
+	call BGEffects_LoadBGPal0_OBPal1
+	ret
+
+.player_2
+	ld hl, .CGB_DMGEnemyData
+	add hl, de
+	ld a, [hli]
+	push hl
+	call BGEffects_LoadBGPal0_OBPal1
+	pop hl
+	ld a, [hl]
+	call BGEffects_LoadBGPal1_OBPal0
+	ret
+
+.cgb_two
+	ld a, $e4
+	call BGEffects_LoadBGPal0_OBPal1
+	ld a, $e4
+	call BGEffects_LoadBGPal1_OBPal0
+	call EndBattleBGEffect
+	ret
+
+.CGB_DMGEnemyData:
+	db $e4, $e4
+	db $f8, $90
+	db $fc, $40
+	db $f8, $90
+.DMG_PlayerData:
+	db $e4, $e4
+	db $90, $f8
+	db $40, $fc
+	db $90, $f8
+; c8be8
+
+BattleBGEffect_RapidFlash: ; c8be8 (32:4be8)
+	ld de, .FlashPals
+	call BGEffect_RapidCyclePals
+	ret
+
+.FlashPals:
+	db $e4, $6c, $fe
+; c8bf2
+
+BattleBGEffect_16: ; c8bf2 (32:4bf2)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $90, $40, $ff
+; c8bfd
+
+BattleBGEffect_17: ; c8bfd (32:4bfd)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $f8, $fc, $ff
+; c8c08
+
+BattleBGEffect_18: ; c8c08 (32:4c08)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $90, $40, $90, $fe
+; c8c14
+
+BattleBGEffect_19: ; c8c14 (32:4c14)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $f8, $fc, $f8, $fe
+; c8c20
+
+BattleBGEffect_1a: ; c8c20 (32:4c20)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
+; c8c30
+
+BattleBGEffect_1b: ; c8c30 (32:4c30)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $fc, $e4, $00, $fe
+; c8c3c
+
+BattleBGEffect_1d: ; c8c3c (32:4c3c)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff
+; c8c55
+
+BattleBGEffect_1e: ; c8c55 (32:4c55)
+	ld de, .Pals
+	call BGEffect_RapidCyclePals
+	ret
+
+.Pals:
+	db $00, $40, $90, $e4, $ff
+; c8c61
+
+BattleBGEffect_VibrateMon: ; c8c61 (32:4c61)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+
+
+.zero ; c8c68 (32:4c68)
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], $1
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $20
+	ret
+
+.one ; c8c85 (32:4c85)
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .finish
+	dec [hl]
+	and $1
+	ret nz
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	call BGEffect_FillLYOverridesBackup
+	ret
+
+.finish
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2)
+	call BattleBGEffects_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+
+
+.zero ; c8cab (32:4cab)
+	call BattleBGEffects_IncrementJumptable
+	call BattleBGEffects_ClearLYOverrides
+	ld a, rSCX - $ff00
+	ld [hLCDCPointer], a
+	xor a
+	ld [hLYOverrideStart], a
+	ld a, $37
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.one ; c8cc3 (32:4cc3)
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	jr nc, .two
+	ld d, $6
+	call BattleBGEffects_Sine
+	call BGEffect_FillLYOverridesBackup
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	ret
+
+.two ; c8cdd (32:4cdd)
+	call BattleAnim_ResetLCDStatCustom
+	ret
+
+BattleBGEffect_2e: ; c8ce1 (32:4ce1)
+	call Functionc8d0b
+	jr c, .xor_a
+	bit 7, a
+	jr z, .okay
+.xor_a
+	xor a
+.okay
+	push af
+	call DelayFrame
+	pop af
+	ld [hSCY], a
+	xor $ff
+	inc a
+	ld [AnimObject01_YOffset], a
+	ret
+
+BattleBGEffect_1f: ; c8cf9 (32:4cf9)
+	call Functionc8d0b
+	jr nc, .skip
+	xor a
+.skip
+	ld [hSCX], a
+	ret
+
+BattleBGEffect_20: ; c8d02 (32:4d02)
+	call Functionc8d0b
+	jr nc, .skip
+	xor a
+.skip
+	ld [hSCY], a
+	ret
+
+Functionc8d0b: ; c8d0b (32:4d0b)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .okay
+	call EndBattleBGEffect
+	scf
+	ret
+
+.okay
+	dec [hl]
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr z, .every_16_frames
+	dec [hl]
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret
+
+.every_16_frames
+	ld a, [hl]
+	swap a
+	or [hl]
+	ld [hl], a
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	and a
+	ret
+
+BattleBGEffect_35: ; c8d3a (32:4d3a)
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	jr nc, .finish
+	ld d, $6
+	call BattleBGEffects_Sine
+	ld [hSCX], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	add $2
+	ld [hl], a
+	ret
+
+.finish
+	xor a
+	ld [hSCX], a
+	ret
+
+BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57)
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .zero
+	dec [hl]
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	call BattleBGEffect_GetNextDMGPal
+	ret
+
+.zero
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	ld hl, BG_EFFECT_STRUCT_JT_INDEX
+	add hl, bc
+	ld [hl], a
+	call BattleBGEffect_GetFirstDMGPal
+	ret
+
+BGEffect_RapidCyclePals: ; c8d77 (32:4d77)
+	ld a, [hCGB]
+	and a
+	jr nz, .cgb
+	push de
+	ld de, .Jumptable_DMG
+	call BatttleBGEffects_GetNamedJumptablePointer
+	pop de
+	jp hl
+
+.Jumptable_DMG:
+	dw .zero_dmg
+	dw .one_dmg
+	dw .two_dmg
+
+
+.zero_dmg ; c8d8b (32:4d8b)
+	call BattleBGEffects_IncrementJumptable
+	ld a, $e4
+	call BattleBGEffects_SetLYOverrides
+	ld a, $47
+	call BattleBGEffect_SetLCDStatCustoms1
+	ld a, [hLYOverrideEnd]
+	inc a
+	ld [hLYOverrideEnd], a
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	ld [hl], $0
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], a
+	ret
+
+.one_dmg ; c8daa (32:4daa)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr z, .okay_1_dmg
+	dec [hl]
+	ret
+
+.okay_1_dmg
+	ld a, [hl]
+	swap a
+	or [hl]
+	ld [hl], a
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_2_dmg
+	call BGEffect_FillLYOverridesBackup
+	ret
+
+.okay_2_dmg
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	dec [hl]
+	ret
+
+.two_dmg ; c8dc9 (32:4dc9)
+	call BattleBGEffects_ResetVideoHRAM
+	ld a, %11100100
+	ld [rBGP], a
+	call EndBattleBGEffect
+	ret
+
+.cgb
+	push de
+	ld de, .Jumptable_CGB
+	call BatttleBGEffects_GetNamedJumptablePointer
+	pop de
+	jp hl
+
+.Jumptable_CGB: ; c8ddd (32:4ddd)
+	dw .zero_cgb
+	dw .one_cgb
+	dw .two_cgb
+	dw .three_cgb
+	dw .four_cgb
+
+
+.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, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld [hl], a
+	ret
+
+.one_cgb ; c8e02 (32:4e02)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr z, .okay_1_cgb
+	dec [hl]
+	ret
+
+.okay_1_cgb
+	ld a, [hl]
+	swap a
+	or [hl]
+	ld [hl], a
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_2_cgb
+	call BGEffects_LoadBGPal0_OBPal1
+	ret
+
+.okay_2_cgb
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	dec [hl]
+	ret
+
+.two_cgb ; c8e21 (32:4e21)
+	ld a, $e4
+	call BGEffects_LoadBGPal0_OBPal1
+	call EndBattleBGEffect
+	ret
+
+.three_cgb ; c8e2a (32:4e2a)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr z, .okay_3_cgb
+	dec [hl]
+	ret
+
+.okay_3_cgb
+	ld a, [hl]
+	swap a
+	or [hl]
+	ld [hl], a
+	call BattleBGEffect_GetFirstDMGPal
+	jr c, .okay_4_cgb
+	call BGEffects_LoadBGPal1_OBPal0
+	ret
+
+.okay_4_cgb
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	dec [hl]
+	ret
+
+.four_cgb ; c8e49 (32:4e49)
+	ld a, $e4
+	call BGEffects_LoadBGPal1_OBPal0
+	call EndBattleBGEffect
+	ret
+
+BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52)
+	ld h, a
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, h
+	push bc
+	push af
+	ld hl, BGPals
+	ld de, UnknBGPals
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld hl, OBPals + 8
+	ld de, UnknOBPals + 8
+	pop af
+	ld b, a
+	ld c, $1
+	call CopyPals
+	pop bc
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+
+BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f)
+	ld h, a
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, h
+	push bc
+	push af
+	ld hl, BGPals + 8
+	ld de, UnknBGPals + 8
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld hl, OBPals ; OBPals
+	ld de, UnknOBPals ; wd040
+	pop af
+	ld b, a
+	ld c, $1
+	call CopyPals
+	pop bc
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+
+BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac)
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2)
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	cp -1
+	jr z, .quit
+	cp -2
+	jr nz, .repeat
+	ld a, [de]
+	ld hl, BG_EFFECT_STRUCT_03
+	add hl, bc
+	ld [hl], $0
+.repeat
+	and a
+	ret
+
+.quit
+	scf
+	ret
+
+BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca)
+	xor a
+BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb)
+	ld hl, LYOverrides ; wListPointer
+	ld e, $99
+.loop1
+	ld [hli], a
+	dec e
+	jr nz, .loop1
+	ld hl, LYOverridesBackup
+	ld e, $91
+.loop2
+	ld [hli], a
+	dec e
+	jr nz, .loop2
+	ret
+
+BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede)
+	ld [hLCDCPointer], 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 [hLYOverrideStart], a
+	ld a, e
+	ld [hLYOverrideEnd], a
+	ret
+
+BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4)
+	ld [hLCDCPointer], 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 [hLYOverrideStart], a
+	ld a, e
+	ld [hLYOverrideEnd], a
+	ret
+
+BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a)
+	xor a
+	ld [hLYOverrideStart], a
+	ld [hLYOverrideEnd], a
+	call BattleBGEffects_ClearLYOverrides
+	xor a
+	ld [hLCDCPointer], a
+	call EndBattleBGEffect
+	ret
+
+BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19)
+	xor a
+	ld [hLCDCPointer], a
+	ld a, %11100100
+	ld [rBGP], a
+	ld [wBGP], a
+	ld [wOBP1], a
+	ld [hLYOverrideStart], a
+	ld [hLYOverrideEnd], a
+	call BattleBGEffects_ClearLYOverrides
+	ret
+
+Functionc8f2e: ; c8f2e (32:4f2e)
+	push bc
+	xor a
+	ld [wBattleAnimTemp0], a
+	ld a, e
+	ld [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	ld a, $80
+	ld [wBattleAnimTemp3], a
+	ld bc, LYOverridesBackup
+.loop
+	ld a, [hLYOverrideStart]
+	cp c
+	jr nc, .next
+	ld a, [hLYOverrideEnd]
+	cp c
+	jr c, .next
+	ld a, [wBattleAnimTemp2]
+	ld d, a
+	ld a, [wBattleAnimTemp0]
+	call BattleBGEffects_Sine
+	ld [bc], a
+.next
+	inc bc
+	ld a, [wBattleAnimTemp1]
+	ld hl, wBattleAnimTemp0
+	add [hl]
+	ld [hl], a
+	ld hl, wBattleAnimTemp3
+	dec [hl]
+	jr nz, .loop
+	pop bc
+	ret
+
+InitSurfWaves: ; c8f69 (32:4f69)
+	push bc
+	xor a
+	ld [wBattleAnimTemp0], a
+	ld a, e
+	ld [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	ld a, $40
+	ld [wBattleAnimTemp3], a
+	ld bc, wSurfWaveBGEffect
+.loop
+	ld a, [wBattleAnimTemp2]
+	ld d, a
+	ld a, [wBattleAnimTemp0]
+	call BattleBGEffects_Sine
+	ld [bc], a
+	inc bc
+	ld a, [wBattleAnimTemp1]
+	ld hl, wBattleAnimTemp0
+	add [hl]
+	ld [hl], a
+	ld hl, wBattleAnimTemp3
+	dec [hl]
+	jr nz, .loop
+	pop bc
+	ret
+
+Functionc8f9a: ; c8f9a (32:4f9a)
+	push bc
+	ld [wBattleAnimTemp3], a
+	ld a, e
+	ld [wBattleAnimTemp1], a
+	ld a, d
+	ld [wBattleAnimTemp2], a
+	call .GetLYOverrideBackupAddrOffset
+	ld hl, LYOverridesBackup
+	add hl, de
+	ld c, l
+	ld b, h
+.loop
+	ld a, [wBattleAnimTemp3]
+	and a
+	jr z, .done
+	dec a
+	ld [wBattleAnimTemp3], a
+	push af
+	ld a, [wBattleAnimTemp2]
+	ld d, a
+	ld a, [wBattleAnimTemp1]
+	push hl
+	call BattleBGEffects_Sine
+	ld e, a
+	pop hl
+	ld a, [hLYOverrideEnd]
+	cp c
+	jr c, .skip1
+	ld a, e
+	ld [bc], a
+	inc bc
+.skip1
+	ld a, [hLYOverrideStart]
+	cp l
+	jr nc, .skip2
+	ld [hl], e
+	dec hl
+.skip2
+	ld a, [wBattleAnimTemp1]
+	add $4
+	ld [wBattleAnimTemp1], a
+	pop af
+	jr .loop
+
+.done
+	pop bc
+	and a
+	ret
+
+.GetLYOverrideBackupAddrOffset:
+	ld a, [hLYOverrideStart]
+	ld e, a
+	ld a, [wBattleAnimTemp0]
+	add e
+	ld e, a
+	ld d, $0
+	ret
+
+BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef)
+	push bc
+	ld a, [hLYOverrideStart]
+	ld l, a
+	inc a
+	ld e, a
+	ld h, HIGH(LYOverridesBackup)
+	ld d, h
+	ld a, [hLYOverrideEnd]
+	sub l
+	and a
+	jr z, .done
+	ld c, a
+	ld a, [hl]
+	push af
+.loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	pop af
+	ld [hl], a
+.done
+	pop bc
+	ret
+
+BGEffect_FillLYOverridesBackup: ; c900b (32:500b)
+	push af
+	ld h, HIGH(LYOverridesBackup)
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, [hLYOverrideEnd]
+	sub l
+	ld d, a
+	pop af
+.loop
+	ld [hli], a
+	dec d
+	jr nz, .loop
+	ret
+
+BGEffect_DisplaceLYOverridesBackup: ; c901b (32:501b)
+	; e = a; d = [hLYOverrideEnd] - [hLYOverrideStart] - a
+	push af
+	ld e, a
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, [hLYOverrideEnd]
+	sub l
+	sub e
+	ld d, a
+	ld h, HIGH(LYOverridesBackup)
+	ld a, [hLYOverrideStart]
+	ld l, a
+	ld a, $90
+.loop
+	ld [hli], a
+	dec e
+	jr nz, .loop
+	pop af
+	xor $ff
+.loop2
+	ld [hli], a
+	dec d
+	jr nz, .loop2
+	ret
+
+BGEffect_CheckBattleTurn: ; c9038 (32:5038)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hBattleTurn]
+	and $1
+	xor [hl]
+	ret
+
+BGEffect_CheckFlyDigStatus: ; c9042 (32:5042)
+	ld hl, BG_EFFECT_STRUCT_BATTLE_TURN
+	add hl, bc
+	ld a, [hBattleTurn]
+	and $1
+	xor [hl]
+	jr nz, .player
+	ld a, [EnemySubStatus3] ; EnemySubStatus3
+	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
+	ret
+
+.player
+	ld a, [PlayerSubStatus3] ; PlayerSubStatus3
+	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
+	ret
+
+BattleBGEffects_CheckSGB: ; c9059 (32:5059)
+	ld a, [hSGB]
+	and a
+	ret
+
+BattleBGEffects_Sine: ; c905d (32:505d)
+	ld e, a
+	callfar BattleAnim_Sine_e
+	ld a, e
+	ret
+
+BattleBGEffects_Cosine: ; c9066 (32:5066)
+	ld e, a
+	callfar BattleAnim_Cosine_e
+	ld a, e
+	ret
+
+; c906f (32:506f)
--- /dev/null
+++ b/engine/battle_anims/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, HIGH(Sprites)
+.loop
+	ld a, [wBattleAnimTempYCoord]
+	ld b, a
+	ld a, [wBattleAnimTempYOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 6, [hl]
+	jr z, .no_yflip
+	add $8
+	xor $ff
+	inc a
+
+.no_yflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempXCoord]
+	ld b, a
+	ld a, [wBattleAnimTempXOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 5, [hl]
+	jr z, .no_xflip
+	add $8
+	xor $ff
+	inc a
+
+.no_xflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempTileID]
+	add $31
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempOAMFlags]
+	ld b, a
+	ld a, [hl]
+	xor b
+	and $e0
+	ld b, a
+	ld a, [hl]
+	and $10
+	or b
+	ld b, a
+	ld a, [wBattleAnimTempPalette]
+	and $f
+	or b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, e
+	ld [wBattleAnimOAMPointerLo], a
+	cp $a0
+	jr nc, .exit_set_carry
+	dec c
+	jr nz, .loop
+	pop bc
+	jr .done
+
+.delete
+	call DeinitBattleAnimation
+
+.done
+	and a
+	ret
+
+.exit_set_carry
+	pop bc
+	scf
+	ret
+
+; ccaaa
+
+InitBattleAnimBuffer: ; ccaaa
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	and %10000000
+	ld [wBattleAnimTempOAMFlags], a
+	xor a
+	ld [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, [FXAnimID + 1]
+	or a
+	jr nz, .no_sub
+	ld a, [FXAnimID]
+	cp KINESIS
+	jr z, .kinesis
+	cp SOFTBOILED
+	jr z, .softboiled
+	cp MILK_DRINK
+	jr nz, .no_sub
+.kinesis
+.softboiled
+.milk_drink
+	pop af
+	sub 1 * 8
+	jr .done
+
+.no_sub
+	pop af
+.done
+	ld [wBattleAnimTempYCoord], a
+	ld a, [hli]
+	xor $ff
+	inc a
+	ld [wBattleAnimTempXOffset], a
+	ret
+
+; ccb31
+
+GetBattleAnimTileOffset: ; ccb31 (33:4b31)
+	push hl
+	push bc
+	ld hl, wBattleAnimTileDict
+	ld b, a
+	ld c, 10 / 2
+.loop
+	ld a, [hli]
+	cp b
+	jr z, .load
+	inc hl
+	dec c
+	jr nz, .loop
+	xor a
+	jr .done
+
+.load
+	ld a, [hl]
+.done
+	pop bc
+	pop hl
+	ret
+
+_ExecuteBGEffects: ; ccb48
+	callfar ExecuteBGEffects
+	ret
+
+; ccb4f
+
+_QueueBGEffect: ; ccb4f (33:4b4f)
+	callfar QueueBGEffect
+	ret
+
+; ccb56 (33:4b56)
--- /dev/null
+++ b/engine/battle_anims/functions.asm
@@ -1,0 +1,4157 @@
+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:
+; entries correspond to BATTLEANIMFUNC_* constants
+	dw BattleAnimFunction_Null ; 00
+	dw BattleAnimFunction_01 ; 01
+	dw BattleAnimFunction_02 ; 02
+	dw BattleAnimFunction_03 ; 03
+	dw BattleAnimFunction_04 ; 04
+	dw BattleAnimFunction_ThrowFromPlayerToEnemy ; 05
+	dw BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear ; 06
+	dw BattleAnimFunction_07 ; 07
+	dw BattleAnimFunction_08 ; 08
+	dw BattleAnimFunction_09 ; 09
+	dw BattleAnimFunction_0A ; 0a
+	dw BattleAnimFunction_RazorLeaf ; 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_PokeBall ; 12
+	dw BattleAnimFunction_PokeBallBlocked ; 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_LeechSeed ; 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_SpiralDescent ; 29
+	dw BattleAnimFunction_PoisonGas ; 2a
+	dw BattleAnimFunction_Horn ; 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_Null: ; cd06e (33:506e)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+.one
+	call DeinitBattleAnimation
+.zero
+	ret
+
+BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear: ; cd079 (33:5079)
+	call BattleAnimFunction_ThrowFromPlayerToEnemy
+	ret c
+	call DeinitBattleAnimation
+	ret
+
+BattleAnimFunction_ThrowFromPlayerToEnemy: ; cd081 (33:5081)
+	; If x coord at $88 or beyond, abort.
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $88
+	ret nc
+	; Move right 2 pixels
+	add $2
+	ld [hl], a
+	; Move down 1 pixel
+	ld hl, BATTLEANIMSTRUCT_YCOORD
+	add hl, bc
+	dec [hl]
+	; Decrease ??? and hold onto its previous value (argument of the sine function)
+	ld hl, BATTLEANIMSTRUCT_0F
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	; Get ???, which is the amplitude of the sine function
+	ld hl, BATTLEANIMSTRUCT_0B
+	add hl, bc
+	ld d, [hl]
+	call BattleAnim_Sine
+	; Store the result in the Y offset
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], a
+	; Carry flag denotes success
+	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]
+	inc [hl]
+	inc [hl]
+	inc [hl]
+	inc [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
+	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_PokeBall: ; 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 ; init
+	call GetBallAnimPal
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.one
+	call BattleAnimFunction_ThrowFromPlayerToEnemy
+	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, BATTLEANIMFRAMESET_0B
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.three
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, BATTLEANIMFRAMESET_09
+	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, BATTLEANIMFRAMESET_0C
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.six
+	ld a, BATTLEANIMFRAMESET_0D
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
+	add hl, bc
+	dec [hl]
+.two
+.five
+.nine
+	ret
+
+.seven
+	call GetBallAnimPal
+	ld a, BATTLEANIMFRAMESET_0A
+	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_PokeBallBlocked: ; cd212 (33:5212)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+.zero
+	call GetBallAnimPal
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.one
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $70
+	jr nc, .next
+	call BattleAnimFunction_ThrowFromPlayerToEnemy
+	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
+
+GetBallAnimPal: ; cd249 (33:5249)
+	ld hl, BallColors
+	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)
+
+INCLUDE "data/battle_anims/ball_colors.asm"
+
+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, BATTLEANIMFRAMESET_0F
+	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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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_RazorLeaf: ; 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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, rSCY - $ff00
+	ld [hLCDCPointer], a
+	ld a, $58
+	ld [hLYOverrideStart], a
+	ld a, $5e
+	ld [hLYOverrideEnd], 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 [hLYOverrideStart], 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 [hLYOverrideStart], 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 [hLCDCPointer], a
+	ld [hLYOverrideStart], a
+	ld [hLYOverrideEnd], a
+.four
+	call DeinitBattleAnimation
+	ret
+
+asm_cd6da: ; cd6da (33:56da)
+	inc a
+	inc a
+	ld [hl], a
+	sub $10
+	ret c
+	ld [hLYOverrideStart], 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, BATTLEANIMFRAMESET_24
+	add [hl] ; offset
+	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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, .load_no_inc
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	inc a
+	jr .reinit
+
+.load_no_inc
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+.reinit
+	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_LeechSeed: ; cda4d (33:5a4d)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+.zero: ; cda58 (33:5a58)
+	call BattleAnim_IncAnonJumptableIndex
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld [hl], $40
+	ret
+
+.one: ; cda62 (33:5a62)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .sprout
+	call Functioncda8d
+	ret
+
+.sprout
+	ld [hl], $40
+	ld a, BATTLEANIMFRAMESET_57
+	call ReinitBattleAnimFrameset
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+.two: ; cda7a (33:5a7a)
+	ld hl, BATTLEANIMSTRUCT_10
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .flutter
+	dec [hl]
+	ret
+
+.flutter
+	call BattleAnim_IncAnonJumptableIndex
+	ld a, BATTLEANIMFRAMESET_58
+	call ReinitBattleAnimFrameset
+.three: ; 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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_50
+	call ReinitBattleAnimFrameset
+	ld hl, BATTLEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], $4
+	call BattleAnim_IncAnonJumptableIndex
+	ret
+
+Functioncdc48: ; cdc48 (33:5c48)
+	ld a, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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 BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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_SpiralDescent: ; 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, .delete
+	inc [hl]
+	ret
+
+.delete
+	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_PoisonGas: ; cdf59 (33:5f59)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw Functioncdf60
+	dw BattleAnimFunction_SpiralDescent
+Functioncdf60: ; cdf60 (33:5f60)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $84
+	jr nc, .next
+	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
+
+.next
+	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_Horn: ; ce063 (33:6063)
+	call BattleAnim_AnonJumptable
+.anon_dw
+	dw .zero
+	dw .one
+	dw .two
+	dw Functionce09e
+.zero: ; 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
+
+.one: ; ce083 (33:6083)
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hl]
+	cp $58
+	ret nc
+	ld a, $2
+	call Functionce70a
+	ret
+
+.two: ; 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 BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, BATTLEANIMFRAMESET_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, .disappear
+	dec [hl]
+	dec [hl]
+	dec [hl]
+	dec [hl]
+	ret
+
+.disappear
+	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
+	inc [hl]
+	inc [hl]
+	inc [hl]
+	inc [hl]
+	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
+	dec [hl]
+	dec [hl]
+	dec [hl]
+	dec [hl]
+	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)
+; a = d sin a
+	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/engine/battle_anims/getpokeballwobble.asm
@@ -1,0 +1,88 @@
+GetPokeBallWobble: ; f971 (3:7971)
+; Returns whether a Poke Ball will wobble in the catch animation.
+; Whether a Pokemon is caught is determined beforehand.
+
+	push de
+
+	ld a, [rSVBK]
+	ld d, a
+	push de
+
+	ld a, 1 ; BANK(Buffer2)
+	ld [rSVBK], a
+
+	ld a, [Buffer2]
+	inc a
+	ld [Buffer2], a
+
+; Wobble up to 3 times.
+	cp 3 + 1
+	jr z, .finished
+
+	ld a, [wWildMon]
+	and a
+	ld c, 0 ; next
+	jr nz, .done
+
+	ld hl, .WobbleProbabilities
+	ld a, [Buffer1]
+	ld b, a
+.loop
+	ld a, [hli]
+	cp b
+	jr nc, .checkwobble
+	inc hl
+	jr .loop
+
+.checkwobble
+	ld b, [hl]
+	call Random
+	cp b
+	ld c, 0 ; next
+	jr c, .done
+	ld c, 2 ; escaped
+	jr .done
+
+.finished
+	ld a, [wWildMon]
+	and a
+	ld c, 1 ; caught
+	jr nz, .done
+	ld c, 2 ; escaped
+
+.done
+	pop de
+	ld e, a
+	ld a, d
+	ld [rSVBK], a
+	ld a, e
+	pop de
+	ret
+
+.WobbleProbabilities: ; f9ba
+; catch rate, chance of wobbling / 255
+; nLeft/255 = (nRight/255) ** 4
+	db   1,  63
+	db   2,  75
+	db   3,  84
+	db   4,  90
+	db   5,  95
+	db   7, 103
+	db  10, 113
+	db  15, 126
+	db  20, 134
+	db  30, 149
+	db  40, 160
+	db  50, 169
+	db  60, 177
+	db  80, 191
+	db 100, 201
+	db 120, 211
+	db 140, 220
+	db 160, 227
+	db 180, 234
+	db 200, 240
+	db 220, 246
+	db 240, 251
+	db 254, 253
+	db 255, 255
--- /dev/null
+++ b/engine/battle_anims/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)
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -1218,8 +1218,9 @@
 ExpBarPalette:
 INCLUDE "data/palettes/exp_bar.pal"
 
-INCLUDE "gfx/pokemon/palette_pointers.asm"
-INCLUDE "gfx/trainer_palettes.asm"
+INCLUDE "data/palettes/pokemon_palettes.asm"
+
+INCLUDE "data/palettes/trainer_palettes.asm"
 
 LoadMapPals:
 	farcall LoadSpecialMapPalette
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -468,6 +468,6 @@
 
 INCLUDE "data/pokemon/menu_icons.asm"
 
-INCLUDE "gfx/icon_pointers.asm"
+INCLUDE "data/icon_pointers.asm"
 
 INCLUDE "gfx/icons.asm"
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -1,5 +1,5 @@
 MovementPointers: ; 5075
-; entries correspond to macros/movement.asm enumeration
+; entries correspond to macros/scripts/movement.asm enumeration
 	dw Movement_turn_head_down        ; 00
 	dw Movement_turn_head_up          ; 01
 	dw Movement_turn_head_left        ; 02
--- a/engine/routines/battlestart_copytilemapatonce.asm
+++ /dev/null
@@ -1,3 +1,0 @@
-BattleStart_CopyTilemapAtOnce: ; 8cf4f
-	call CGBOnly_CopyTilemapAtOnce
-	ret
--- a/engine/routines/checkbattlescene.asm
+++ /dev/null
@@ -1,47 +1,0 @@
-CheckBattleScene: ; 4ea44
-; Return carry if battle scene is turned off.
-
-	ld a, 0
-	ld hl, wLinkMode
-	call GetFarWRAMByte
-	cp LINK_MOBILE
-	jr z, .mobile
-
-	ld a, [Options]
-	bit BATTLE_SCENE, a
-	jr nz, .off
-
-	and a
-	ret
-
-.mobile
-	ld a, [wcd2f]
-	and a
-	jr nz, .from_wram
-
-	ld a, $4
-	call GetSRAMBank
-	ld a, [$a60c]
-	ld c, a
-	call CloseSRAM
-
-	ld a, c
-	bit 0, c
-	jr z, .off
-
-	and a
-	ret
-
-.from_wram
-	ld a, $5
-	ld hl, w5_dc00
-	call GetFarWRAMByte
-	bit 0, a
-	jr z, .off
-
-	and a
-	ret
-
-.off
-	scf
-	ret
--- a/engine/routines/consumehelditem.asm
+++ /dev/null
@@ -1,80 +1,0 @@
-ConsumeHeldItem: ; 27192
-	push hl
-	push de
-	push bc
-	ld a, [hBattleTurn]
-	and a
-	ld hl, OTPartyMon1Item
-	ld de, EnemyMonItem
-	ld a, [CurOTMon]
-	jr z, .theirturn
-	ld hl, PartyMon1Item
-	ld de, BattleMonItem
-	ld a, [CurBattleMon]
-
-.theirturn
-	push hl
-	push af
-	ld a, [de]
-	ld b, a
-	farcall GetItemHeldEffect
-	ld hl, .ConsumableEffects
-.loop
-	ld a, [hli]
-	cp b
-	jr z, .ok
-	inc a
-	jr nz, .loop
-	pop af
-	pop hl
-	pop bc
-	pop de
-	pop hl
-	ret
-
-.ok
-	xor a
-	ld [de], a
-	pop af
-	pop hl
-	call GetPartyLocation
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .ourturn
-	ld a, [wBattleMode]
-	dec a
-	jr z, .done
-
-.ourturn
-	ld [hl], $0
-
-.done
-	pop bc
-	pop de
-	pop hl
-	ret
-
-.ConsumableEffects: ; 271de
-; Consumable items?
-	db HELD_BERRY
-	db HELD_2
-	db HELD_5
-	db HELD_HEAL_POISON
-	db HELD_HEAL_FREEZE
-	db HELD_HEAL_BURN
-	db HELD_HEAL_SLEEP
-	db HELD_HEAL_PARALYZE
-	db HELD_HEAL_STATUS
-	db HELD_30
-	db HELD_ATTACK_UP
-	db HELD_DEFENSE_UP
-	db HELD_SPEED_UP
-	db HELD_SP_ATTACK_UP
-	db HELD_SP_DEFENSE_UP
-	db HELD_ACCURACY_UP
-	db HELD_EVASION_UP
-	db HELD_38
-	db HELD_71
-	db HELD_ESCAPE
-	db HELD_CRITICAL_UP
-	db -1
--- a/engine/routines/getpokeballwobble.asm
+++ /dev/null
@@ -1,88 +1,0 @@
-GetPokeBallWobble: ; f971 (3:7971)
-; Returns whether a Poke Ball will wobble in the catch animation.
-; Whether a Pokemon is caught is determined beforehand.
-
-	push de
-
-	ld a, [rSVBK]
-	ld d, a
-	push de
-
-	ld a, 1 ; BANK(Buffer2)
-	ld [rSVBK], a
-
-	ld a, [Buffer2]
-	inc a
-	ld [Buffer2], a
-
-; Wobble up to 3 times.
-	cp 3 + 1
-	jr z, .finished
-
-	ld a, [wWildMon]
-	and a
-	ld c, 0 ; next
-	jr nz, .done
-
-	ld hl, .WobbleProbabilities
-	ld a, [Buffer1]
-	ld b, a
-.loop
-	ld a, [hli]
-	cp b
-	jr nc, .checkwobble
-	inc hl
-	jr .loop
-
-.checkwobble
-	ld b, [hl]
-	call Random
-	cp b
-	ld c, 0 ; next
-	jr c, .done
-	ld c, 2 ; escaped
-	jr .done
-
-.finished
-	ld a, [wWildMon]
-	and a
-	ld c, 1 ; caught
-	jr nz, .done
-	ld c, 2 ; escaped
-
-.done
-	pop de
-	ld e, a
-	ld a, d
-	ld [rSVBK], a
-	ld a, e
-	pop de
-	ret
-
-.WobbleProbabilities: ; f9ba
-; catch rate, chance of wobbling / 255
-; nLeft/255 = (nRight/255) ** 4
-	db   1,  63
-	db   2,  75
-	db   3,  84
-	db   4,  90
-	db   5,  95
-	db   7, 103
-	db  10, 113
-	db  15, 126
-	db  20, 134
-	db  30, 149
-	db  40, 160
-	db  50, 169
-	db  60, 177
-	db  80, 191
-	db 100, 201
-	db 120, 211
-	db 140, 220
-	db 160, 227
-	db 180, 234
-	db 200, 240
-	db 220, 246
-	db 240, 251
-	db 254, 253
-	db 255, 255
--- a/engine/routines/kurt_selectquantity_interpretjoypad.asm
+++ /dev/null
@@ -1,4 +1,0 @@
-Kurt_SelectQuantity_InterpretJoypad: ; 27a28
-	call BuySellToss_InterpretJoypad
-	ld b, a
-	ret
--- a/engine/routines/returntobattle_useball.asm
+++ /dev/null
@@ -1,19 +1,0 @@
-_ReturnToBattle_UseBall: ; 2715c
-	call ClearBGPalettes
-	call ClearTileMap
-	ld a, [BattleType]
-	cp BATTLETYPE_TUTORIAL
-	jr z, .gettutorialbackpic
-	farcall GetBattleMonBackpic
-	jr .continue
-
-.gettutorialbackpic
-	farcall GetTrainerBackpic
-.continue
-	farcall GetEnemyMonFrontpic
-	farcall _LoadBattleFontsHPBar
-	call GetMemSGBLayout
-	call CloseWindow
-	call LoadStandardMenuDataHeader
-	call WaitBGMap
-	jp SetPalettes
--- a/engine/routines/updatebattlehuds.asm
+++ /dev/null
@@ -1,9 +1,0 @@
-_UpdateBattleHUDs:
-	farcall DrawPlayerHUD
-	ld hl, PlayerHPPal
-	call SetHPPal
-	farcall DrawEnemyHUD
-	ld hl, EnemyHPPal
-	call SetHPPal
-	farcall FinishBattleAnim
-	ret
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -64,7 +64,7 @@
 
 
 ScriptCommandTable:
-; entries correspond to macros/event.asm enumeration
+; entries correspond to macros/scripts/events.asm enumeration
 	dw Script_scall                      ; 00
 	dw Script_farscall                   ; 01
 	dw Script_ptcall                     ; 02
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -551,13 +551,13 @@
 ; 8d1c4
 
 
-INCLUDE "data/sprites/sequences.asm"
+INCLUDE "data/sprite_anims/sequences.asm"
 
 INCLUDE "engine/sprite_anims.asm"
 
-INCLUDE "data/sprites/framesets.asm"
+INCLUDE "data/sprite_anims/framesets.asm"
 
-INCLUDE "data/sprites/oam.asm"
+INCLUDE "data/sprite_anims/oam.asm"
 
 
 BrokenStdGFXPointers: ; Broken 2bpp pointers
--- a/engine/trade_animation.asm
+++ b/engine/trade_animation.asm
@@ -236,7 +236,7 @@
 ; 290af
 
 .JumpTable: ; 290af
-; entries correspond to macros/trade_anim.asm enumeration
+; entries correspond to macros/scripts/trade_anims.asm enumeration
 	dw TradeAnim_AdvanceScriptPointer ; 00
 	dw TradeAnim_ShowGivemonData      ; 01
 	dw TradeAnim_ShowGetmonData       ; 02
--- /dev/null
+++ b/event/kurt_selectquantity_interpretjoypad.asm
@@ -1,0 +1,4 @@
+Kurt_SelectQuantity_InterpretJoypad: ; 27a28
+	call BuySellToss_InterpretJoypad
+	ld b, a
+	ret
--- a/gfx/anims.asm
+++ /dev/null
@@ -1,41 +1,0 @@
-AnimObj00GFX: ; 84a2e
-AnimObjHitGFX:       INCBIN "gfx/anims/hit.2bpp.lz"
-AnimObjCutGFX:       INCBIN "gfx/anims/cut.2bpp.lz"
-AnimObjFireGFX:      INCBIN "gfx/anims/fire.2bpp.lz"
-AnimObjWaterGFX:     INCBIN "gfx/anims/water.2bpp.lz"
-AnimObjLightningGFX: INCBIN "gfx/anims/lightning.2bpp.lz"
-AnimObjSmokeGFX:     INCBIN "gfx/anims/smoke.2bpp.lz"
-AnimObjExplosionGFX: INCBIN "gfx/anims/explosion.2bpp.lz"
-AnimObjIceGFX:       INCBIN "gfx/anims/ice.2bpp.lz"
-AnimObjRocksGFX:     INCBIN "gfx/anims/rocks.2bpp.lz"
-AnimObjPoisonGFX:    INCBIN "gfx/anims/poison.2bpp.lz"
-AnimObjPlantGFX:     INCBIN "gfx/anims/plant.2bpp.lz"
-AnimObjPokeBallGFX:  INCBIN "gfx/anims/pokeball.2bpp.lz"
-AnimObjBubbleGFX:    INCBIN "gfx/anims/bubble.2bpp.lz"
-AnimObjNoiseGFX:     INCBIN "gfx/anims/noise.2bpp.lz"
-AnimObjReflectGFX:   INCBIN "gfx/anims/reflect.2bpp.lz"
-AnimObjPowderGFX:    INCBIN "gfx/anims/powder.2bpp.lz"
-AnimObjBeamGFX:      INCBIN "gfx/anims/beam.2bpp.lz"
-AnimObjSpeedGFX:     INCBIN "gfx/anims/speed.2bpp.lz"
-AnimObjChargeGFX:    INCBIN "gfx/anims/charge.2bpp.lz"
-AnimObjWindGFX:      INCBIN "gfx/anims/wind.2bpp.lz"
-AnimObjWhipGFX:      INCBIN "gfx/anims/whip.2bpp.lz"
-AnimObjRopeGFX:      INCBIN "gfx/anims/rope.2bpp.lz"
-AnimObjEggGFX:       INCBIN "gfx/anims/egg.2bpp.lz"
-AnimObjPsychicGFX:   INCBIN "gfx/anims/psychic.2bpp.lz"
-AnimObjSandGFX:      INCBIN "gfx/anims/sand.2bpp.lz"
-AnimObjWebGFX:       INCBIN "gfx/anims/web.2bpp.lz"
-AnimObjHazeGFX:      INCBIN "gfx/anims/haze.2bpp.lz"
-AnimObjHornGFX:      INCBIN "gfx/anims/horn.2bpp.lz"
-AnimObjFlowerGFX:    INCBIN "gfx/anims/flower.2bpp.lz"
-AnimObjMiscGFX:      INCBIN "gfx/anims/misc.2bpp.lz"
-AnimObjSkyAttackGFX: INCBIN "gfx/anims/skyattack.2bpp.lz"
-AnimObjGlobeGFX:     INCBIN "gfx/anims/globe.2bpp.lz"
-AnimObjShapesGFX:    INCBIN "gfx/anims/shapes.2bpp.lz"
-AnimObjStatusGFX:    INCBIN "gfx/anims/status.2bpp.lz"
-AnimObjObjectsGFX:   INCBIN "gfx/anims/objects.2bpp.lz"
-AnimObjShineGFX:     INCBIN "gfx/anims/shine.2bpp.lz"
-AnimObjAngelsGFX:    INCBIN "gfx/anims/angels.2bpp.lz"
-AnimObjWaveGFX:      INCBIN "gfx/anims/wave.2bpp.lz"
-AnimObjAeroblastGFX: INCBIN "gfx/anims/aeroblast.2bpp.lz"
-; 8640e
binary files a/gfx/anims/aeroblast.2bpp.lz.2f07c4ea /dev/null differ
binary files a/gfx/anims/aeroblast.png /dev/null differ
binary files a/gfx/anims/angels.2bpp.lz.b026d81e /dev/null differ
binary files a/gfx/anims/angels.png /dev/null differ
binary files a/gfx/anims/beam.2bpp.lz.80b6d613 /dev/null differ
binary files a/gfx/anims/beam.png /dev/null differ
binary files a/gfx/anims/bubble.2bpp.lz.03b8ac99 /dev/null differ
binary files a/gfx/anims/bubble.png /dev/null differ
binary files a/gfx/anims/charge.2bpp.lz.95d3ea98 /dev/null differ
binary files a/gfx/anims/charge.png /dev/null differ
binary files a/gfx/anims/cut.2bpp.lz.03d343ed /dev/null differ
binary files a/gfx/anims/cut.png /dev/null differ
binary files a/gfx/anims/egg.2bpp.lz.41dd1a53 /dev/null differ
binary files a/gfx/anims/egg.png /dev/null differ
binary files a/gfx/anims/explosion.2bpp.lz.55fc334f /dev/null differ
binary files a/gfx/anims/explosion.png /dev/null differ
binary files a/gfx/anims/fire.2bpp.lz.d7701cda /dev/null differ
binary files a/gfx/anims/fire.png /dev/null differ
binary files a/gfx/anims/flower.2bpp.lz.1bc2e9d2 /dev/null differ
binary files a/gfx/anims/flower.png /dev/null differ
binary files a/gfx/anims/globe.2bpp.lz.710dbb8e /dev/null differ
binary files a/gfx/anims/globe.png /dev/null differ
binary files a/gfx/anims/haze.2bpp.lz.91424607 /dev/null differ
binary files a/gfx/anims/haze.png /dev/null differ
binary files a/gfx/anims/hit.2bpp.lz.2b3c83f2 /dev/null differ
binary files a/gfx/anims/hit.png /dev/null differ
binary files a/gfx/anims/horn.2bpp.lz.48908aae /dev/null differ
binary files a/gfx/anims/horn.png /dev/null differ
binary files a/gfx/anims/ice.2bpp.lz.664d900f /dev/null differ
binary files a/gfx/anims/ice.png /dev/null differ
binary files a/gfx/anims/lightning.2bpp.lz.a88fc131 /dev/null differ
binary files a/gfx/anims/lightning.png /dev/null differ
binary files a/gfx/anims/misc.2bpp.lz.4b20c3d7 /dev/null differ
binary files a/gfx/anims/misc.png /dev/null differ
binary files a/gfx/anims/noise.2bpp.lz.acb4a76e /dev/null differ
binary files a/gfx/anims/noise.png /dev/null differ
binary files a/gfx/anims/objects.2bpp.lz.83f812de /dev/null differ
binary files a/gfx/anims/objects.png /dev/null differ
--- a/gfx/anims/plant.2bpp.lz.4a00c417
+++ /dev/null
@@ -1,3 +1,0 @@
-a<<~B��ߡ>�����
-<$xx��c	>2��88i��~Bø}c}CC��➆�xx<$|D~B^b3=a��C	e00PpC��
-=%}EC_c�����<�>��c����_aOq'83<e
79Nr����
)���`�@I@�  00<,.2/1'9a��
,4\d����	������
\ No newline at end of file
binary files a/gfx/anims/plant.png /dev/null differ
binary files a/gfx/anims/poison.2bpp.lz.fc7dc9c1 /dev/null differ
binary files a/gfx/anims/poison.png /dev/null differ
binary files a/gfx/anims/pokeball.2bpp.lz.c58f7e01 /dev/null differ
binary files a/gfx/anims/pokeball.png /dev/null differ
--- a/gfx/anims/powder.2bpp.lz.bfd566bb
+++ /dev/null
@@ -1,1 +1,0 @@
-@@��GEa8(@@��EG��Î
\ No newline at end of file
binary files a/gfx/anims/powder.png /dev/null differ
binary files a/gfx/anims/psychic.2bpp.lz.d80f285c /dev/null differ
binary files a/gfx/anims/psychic.png /dev/null differ
binary files a/gfx/anims/reflect.2bpp.lz.9a9c822d /dev/null differ
binary files a/gfx/anims/reflect.png /dev/null differ
binary files a/gfx/anims/rocks.2bpp.lz.73d0153e /dev/null differ
binary files a/gfx/anims/rocks.png /dev/null differ
binary files a/gfx/anims/rope.2bpp.lz.209d63dd /dev/null differ
binary files a/gfx/anims/rope.png /dev/null differ
binary files a/gfx/anims/sand.2bpp.lz.c87c0eaa /dev/null differ
binary files a/gfx/anims/sand.png /dev/null differ
binary files a/gfx/anims/shapes.2bpp.lz.262d77f0 /dev/null differ
binary files a/gfx/anims/shapes.png /dev/null differ
binary files a/gfx/anims/shine.2bpp.lz.5fb79056 /dev/null differ
binary files a/gfx/anims/shine.png /dev/null differ
binary files a/gfx/anims/skyattack.2bpp.lz.31738ab8 /dev/null differ
binary files a/gfx/anims/skyattack.png /dev/null differ
binary files a/gfx/anims/smoke.2bpp.lz.aa05905e /dev/null differ
binary files a/gfx/anims/smoke.png /dev/null differ
binary files a/gfx/anims/speed.2bpp.lz.1732b364 /dev/null differ
binary files a/gfx/anims/speed.png /dev/null differ
binary files a/gfx/anims/status.2bpp.lz.0c0aa13e /dev/null differ
binary files a/gfx/anims/status.png /dev/null differ
binary files a/gfx/anims/water.2bpp.lz.7b52ed12 /dev/null differ
binary files a/gfx/anims/water.png /dev/null differ
binary files a/gfx/anims/wave.2bpp.lz.bee99402 /dev/null differ
binary files a/gfx/anims/wave.png /dev/null differ
binary files a/gfx/anims/web.2bpp.lz.80e3d480 /dev/null differ
binary files a/gfx/anims/web.png /dev/null differ
binary files a/gfx/anims/whip.2bpp.lz.d80d8d6e /dev/null differ
binary files a/gfx/anims/whip.png /dev/null differ
binary files a/gfx/anims/wind.2bpp.lz.5a785180 /dev/null differ
binary files a/gfx/anims/wind.png /dev/null differ
--- /dev/null
+++ b/gfx/battle_anims.asm
@@ -1,0 +1,41 @@
+AnimObj00GFX: ; 84a2e
+AnimObjHitGFX:       INCBIN "gfx/battle_anims/hit.2bpp.lz"
+AnimObjCutGFX:       INCBIN "gfx/battle_anims/cut.2bpp.lz"
+AnimObjFireGFX:      INCBIN "gfx/battle_anims/fire.2bpp.lz"
+AnimObjWaterGFX:     INCBIN "gfx/battle_anims/water.2bpp.lz"
+AnimObjLightningGFX: INCBIN "gfx/battle_anims/lightning.2bpp.lz"
+AnimObjSmokeGFX:     INCBIN "gfx/battle_anims/smoke.2bpp.lz"
+AnimObjExplosionGFX: INCBIN "gfx/battle_anims/explosion.2bpp.lz"
+AnimObjIceGFX:       INCBIN "gfx/battle_anims/ice.2bpp.lz"
+AnimObjRocksGFX:     INCBIN "gfx/battle_anims/rocks.2bpp.lz"
+AnimObjPoisonGFX:    INCBIN "gfx/battle_anims/poison.2bpp.lz"
+AnimObjPlantGFX:     INCBIN "gfx/battle_anims/plant.2bpp.lz"
+AnimObjPokeBallGFX:  INCBIN "gfx/battle_anims/pokeball.2bpp.lz"
+AnimObjBubbleGFX:    INCBIN "gfx/battle_anims/bubble.2bpp.lz"
+AnimObjNoiseGFX:     INCBIN "gfx/battle_anims/noise.2bpp.lz"
+AnimObjReflectGFX:   INCBIN "gfx/battle_anims/reflect.2bpp.lz"
+AnimObjPowderGFX:    INCBIN "gfx/battle_anims/powder.2bpp.lz"
+AnimObjBeamGFX:      INCBIN "gfx/battle_anims/beam.2bpp.lz"
+AnimObjSpeedGFX:     INCBIN "gfx/battle_anims/speed.2bpp.lz"
+AnimObjChargeGFX:    INCBIN "gfx/battle_anims/charge.2bpp.lz"
+AnimObjWindGFX:      INCBIN "gfx/battle_anims/wind.2bpp.lz"
+AnimObjWhipGFX:      INCBIN "gfx/battle_anims/whip.2bpp.lz"
+AnimObjRopeGFX:      INCBIN "gfx/battle_anims/rope.2bpp.lz"
+AnimObjEggGFX:       INCBIN "gfx/battle_anims/egg.2bpp.lz"
+AnimObjPsychicGFX:   INCBIN "gfx/battle_anims/psychic.2bpp.lz"
+AnimObjSandGFX:      INCBIN "gfx/battle_anims/sand.2bpp.lz"
+AnimObjWebGFX:       INCBIN "gfx/battle_anims/web.2bpp.lz"
+AnimObjHazeGFX:      INCBIN "gfx/battle_anims/haze.2bpp.lz"
+AnimObjHornGFX:      INCBIN "gfx/battle_anims/horn.2bpp.lz"
+AnimObjFlowerGFX:    INCBIN "gfx/battle_anims/flower.2bpp.lz"
+AnimObjMiscGFX:      INCBIN "gfx/battle_anims/misc.2bpp.lz"
+AnimObjSkyAttackGFX: INCBIN "gfx/battle_anims/skyattack.2bpp.lz"
+AnimObjGlobeGFX:     INCBIN "gfx/battle_anims/globe.2bpp.lz"
+AnimObjShapesGFX:    INCBIN "gfx/battle_anims/shapes.2bpp.lz"
+AnimObjStatusGFX:    INCBIN "gfx/battle_anims/status.2bpp.lz"
+AnimObjObjectsGFX:   INCBIN "gfx/battle_anims/objects.2bpp.lz"
+AnimObjShineGFX:     INCBIN "gfx/battle_anims/shine.2bpp.lz"
+AnimObjAngelsGFX:    INCBIN "gfx/battle_anims/angels.2bpp.lz"
+AnimObjWaveGFX:      INCBIN "gfx/battle_anims/wave.2bpp.lz"
+AnimObjAeroblastGFX: INCBIN "gfx/battle_anims/aeroblast.2bpp.lz"
+; 8640e
binary files /dev/null b/gfx/battle_anims/aeroblast.2bpp.lz.2f07c4ea differ
binary files /dev/null b/gfx/battle_anims/aeroblast.png differ
binary files /dev/null b/gfx/battle_anims/angels.2bpp.lz.b026d81e differ
binary files /dev/null b/gfx/battle_anims/angels.png differ
binary files /dev/null b/gfx/battle_anims/beam.2bpp.lz.80b6d613 differ
binary files /dev/null b/gfx/battle_anims/beam.png differ
binary files /dev/null b/gfx/battle_anims/bubble.2bpp.lz.03b8ac99 differ
binary files /dev/null b/gfx/battle_anims/bubble.png differ
binary files /dev/null b/gfx/battle_anims/charge.2bpp.lz.95d3ea98 differ
binary files /dev/null b/gfx/battle_anims/charge.png differ
binary files /dev/null b/gfx/battle_anims/cut.2bpp.lz.03d343ed differ
binary files /dev/null b/gfx/battle_anims/cut.png differ
binary files /dev/null b/gfx/battle_anims/egg.2bpp.lz.41dd1a53 differ
binary files /dev/null b/gfx/battle_anims/egg.png differ
binary files /dev/null b/gfx/battle_anims/explosion.2bpp.lz.55fc334f differ
binary files /dev/null b/gfx/battle_anims/explosion.png differ
binary files /dev/null b/gfx/battle_anims/fire.2bpp.lz.d7701cda differ
binary files /dev/null b/gfx/battle_anims/fire.png differ
binary files /dev/null b/gfx/battle_anims/flower.2bpp.lz.1bc2e9d2 differ
binary files /dev/null b/gfx/battle_anims/flower.png differ
binary files /dev/null b/gfx/battle_anims/globe.2bpp.lz.710dbb8e differ
binary files /dev/null b/gfx/battle_anims/globe.png differ
binary files /dev/null b/gfx/battle_anims/haze.2bpp.lz.91424607 differ
binary files /dev/null b/gfx/battle_anims/haze.png differ
binary files /dev/null b/gfx/battle_anims/hit.2bpp.lz.2b3c83f2 differ
binary files /dev/null b/gfx/battle_anims/hit.png differ
binary files /dev/null b/gfx/battle_anims/horn.2bpp.lz.48908aae differ
binary files /dev/null b/gfx/battle_anims/horn.png differ
binary files /dev/null b/gfx/battle_anims/ice.2bpp.lz.664d900f differ
binary files /dev/null b/gfx/battle_anims/ice.png differ
binary files /dev/null b/gfx/battle_anims/lightning.2bpp.lz.a88fc131 differ
binary files /dev/null b/gfx/battle_anims/lightning.png differ
binary files /dev/null b/gfx/battle_anims/misc.2bpp.lz.4b20c3d7 differ
binary files /dev/null b/gfx/battle_anims/misc.png differ
binary files /dev/null b/gfx/battle_anims/noise.2bpp.lz.acb4a76e differ
binary files /dev/null b/gfx/battle_anims/noise.png differ
binary files /dev/null b/gfx/battle_anims/objects.2bpp.lz.83f812de differ
binary files /dev/null b/gfx/battle_anims/objects.png differ
--- /dev/null
+++ b/gfx/battle_anims/plant.2bpp.lz.4a00c417
@@ -1,0 +1,3 @@
+a<<~B��ߡ>�����
+<$xx��c	>2��88i��~Bø}c}CC��➆�xx<$|D~B^b3=a��C	e00PpC��
+=%}EC_c�����<�>��c����_aOq'83<e
79Nr����
)���`�@I@�  00<,.2/1'9a��
,4\d����	������
\ No newline at end of file
binary files /dev/null b/gfx/battle_anims/plant.png differ
binary files /dev/null b/gfx/battle_anims/poison.2bpp.lz.fc7dc9c1 differ
binary files /dev/null b/gfx/battle_anims/poison.png differ
binary files /dev/null b/gfx/battle_anims/pokeball.2bpp.lz.c58f7e01 differ
binary files /dev/null b/gfx/battle_anims/pokeball.png differ
--- /dev/null
+++ b/gfx/battle_anims/powder.2bpp.lz.bfd566bb
@@ -1,0 +1,1 @@
+@@��GEa8(@@��EG��Î
\ No newline at end of file
binary files /dev/null b/gfx/battle_anims/powder.png differ
binary files /dev/null b/gfx/battle_anims/psychic.2bpp.lz.d80f285c differ
binary files /dev/null b/gfx/battle_anims/psychic.png differ
binary files /dev/null b/gfx/battle_anims/reflect.2bpp.lz.9a9c822d differ
binary files /dev/null b/gfx/battle_anims/reflect.png differ
binary files /dev/null b/gfx/battle_anims/rocks.2bpp.lz.73d0153e differ
binary files /dev/null b/gfx/battle_anims/rocks.png differ
binary files /dev/null b/gfx/battle_anims/rope.2bpp.lz.209d63dd differ
binary files /dev/null b/gfx/battle_anims/rope.png differ
binary files /dev/null b/gfx/battle_anims/sand.2bpp.lz.c87c0eaa differ
binary files /dev/null b/gfx/battle_anims/sand.png differ
binary files /dev/null b/gfx/battle_anims/shapes.2bpp.lz.262d77f0 differ
binary files /dev/null b/gfx/battle_anims/shapes.png differ
binary files /dev/null b/gfx/battle_anims/shine.2bpp.lz.5fb79056 differ
binary files /dev/null b/gfx/battle_anims/shine.png differ
binary files /dev/null b/gfx/battle_anims/skyattack.2bpp.lz.31738ab8 differ
binary files /dev/null b/gfx/battle_anims/skyattack.png differ
binary files /dev/null b/gfx/battle_anims/smoke.2bpp.lz.aa05905e differ
binary files /dev/null b/gfx/battle_anims/smoke.png differ
binary files /dev/null b/gfx/battle_anims/speed.2bpp.lz.1732b364 differ
binary files /dev/null b/gfx/battle_anims/speed.png differ
binary files /dev/null b/gfx/battle_anims/status.2bpp.lz.0c0aa13e differ
binary files /dev/null b/gfx/battle_anims/status.png differ
binary files /dev/null b/gfx/battle_anims/water.2bpp.lz.7b52ed12 differ
binary files /dev/null b/gfx/battle_anims/water.png differ
binary files /dev/null b/gfx/battle_anims/wave.2bpp.lz.bee99402 differ
binary files /dev/null b/gfx/battle_anims/wave.png differ
binary files /dev/null b/gfx/battle_anims/web.2bpp.lz.80e3d480 differ
binary files /dev/null b/gfx/battle_anims/web.png differ
binary files /dev/null b/gfx/battle_anims/whip.2bpp.lz.d80d8d6e differ
binary files /dev/null b/gfx/battle_anims/whip.png differ
binary files /dev/null b/gfx/battle_anims/wind.2bpp.lz.5a785180 differ
binary files /dev/null b/gfx/battle_anims/wind.png differ
--- a/gfx/icon_pointers.asm
+++ /dev/null
@@ -1,41 +1,0 @@
-IconPointers:
-; entries correspond to ICON_* constants
-	dw NullIcon
-	dw PoliwagIcon
-	dw JigglypuffIcon
-	dw DiglettIcon
-	dw PikachuIcon
-	dw StaryuIcon
-	dw FishIcon
-	dw BirdIcon
-	dw MonsterIcon
-	dw ClefairyIcon
-	dw OddishIcon
-	dw BugIcon
-	dw GhostIcon
-	dw LaprasIcon
-	dw HumanshapeIcon
-	dw FoxIcon
-	dw EquineIcon
-	dw ShellIcon
-	dw BlobIcon
-	dw SerpentIcon
-	dw VoltorbIcon
-	dw SquirtleIcon
-	dw BulbasaurIcon
-	dw CharmanderIcon
-	dw CaterpillarIcon
-	dw UnownIcon
-	dw GeodudeIcon
-	dw FighterIcon
-	dw EggIcon
-	dw JellyfishIcon
-	dw MothIcon
-	dw BatIcon
-	dw SnorlaxIcon
-	dw HoOhIcon
-	dw LugiaIcon
-	dw GyaradosIcon
-	dw SlowpokeIcon
-	dw SudowoodoIcon
-	dw BigmonIcon
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -6,17 +6,17 @@
 
 SECTION "Pic Pointers", ROMX
 
-INCLUDE "gfx/pokemon/pic_pointers.asm"
+INCLUDE "data/pokemon/pic_pointers.asm"
 
 
 SECTION "Unown Pic Pointers", ROMX
 
-INCLUDE "gfx/pokemon/unown_pic_pointers.asm"
+INCLUDE "data/pokemon/unown_pic_pointers.asm"
 
 
 SECTION "Trainer Pic Pointers", ROMX
 
-INCLUDE "gfx/trainer_pic_pointers.asm"
+INCLUDE "data/trainers/pic_pointers.asm"
 
 
 SECTION "Pics 1", ROMX
--- a/gfx/pokemon/palette_pointers.asm
+++ /dev/null
@@ -1,541 +1,0 @@
-PokemonPalettes: ; a8ce
-
-; 000
-	RGB 30, 22, 17
-	RGB 16, 14, 19
-; 000 shiny
-	RGB 30, 22, 17
-	RGB 16, 14, 19
-
-BulbasaurPalette:       INCLUDE "gfx/pokemon/bulbasaur/normal.pal"
-BulbasaurShinyPalette:  INCLUDE "gfx/pokemon/bulbasaur/shiny.pal"
-IvysaurPalette:         INCLUDE "gfx/pokemon/ivysaur/normal.pal"
-IvysaurShinyPalette:    INCLUDE "gfx/pokemon/ivysaur/shiny.pal"
-VenusaurPalette:        INCLUDE "gfx/pokemon/venusaur/normal.pal"
-VenusaurShinyPalette:   INCLUDE "gfx/pokemon/venusaur/shiny.pal"
-CharmanderPalette:      INCLUDE "gfx/pokemon/charmander/normal.pal"
-CharmanderShinyPalette: INCLUDE "gfx/pokemon/charmander/shiny.pal"
-CharmeleonPalette:      INCLUDE "gfx/pokemon/charmeleon/normal.pal"
-CharmeleonShinyPalette: INCLUDE "gfx/pokemon/charmeleon/shiny.pal"
-CharizardPalette:       INCLUDE "gfx/pokemon/charizard/normal.pal"
-CharizardShinyPalette:  INCLUDE "gfx/pokemon/charizard/shiny.pal"
-SquirtlePalette:        INCLUDE "gfx/pokemon/squirtle/normal.pal"
-SquirtleShinyPalette:   INCLUDE "gfx/pokemon/squirtle/shiny.pal"
-WartortlePalette:       INCLUDE "gfx/pokemon/wartortle/normal.pal"
-WartortleShinyPalette:  INCLUDE "gfx/pokemon/wartortle/shiny.pal"
-BlastoisePalette:       INCLUDE "gfx/pokemon/blastoise/normal.pal"
-BlastoiseShinyPalette:  INCLUDE "gfx/pokemon/blastoise/shiny.pal"
-CaterpiePalette:        INCLUDE "gfx/pokemon/caterpie/normal.pal"
-CaterpieShinyPalette:   INCLUDE "gfx/pokemon/caterpie/shiny.pal"
-MetapodPalette:         INCLUDE "gfx/pokemon/metapod/normal.pal"
-MetapodShinyPalette:    INCLUDE "gfx/pokemon/metapod/shiny.pal"
-ButterfreePalette:      INCLUDE "gfx/pokemon/butterfree/normal.pal"
-ButterfreeShinyPalette: INCLUDE "gfx/pokemon/butterfree/shiny.pal"
-WeedlePalette:          INCLUDE "gfx/pokemon/weedle/normal.pal"
-WeedleShinyPalette:     INCLUDE "gfx/pokemon/weedle/shiny.pal"
-KakunaPalette:          INCLUDE "gfx/pokemon/kakuna/normal.pal"
-KakunaShinyPalette:     INCLUDE "gfx/pokemon/kakuna/shiny.pal"
-BeedrillPalette:        INCLUDE "gfx/pokemon/beedrill/normal.pal"
-BeedrillShinyPalette:   INCLUDE "gfx/pokemon/beedrill/shiny.pal"
-PidgeyPalette:          INCLUDE "gfx/pokemon/pidgey/normal.pal"
-PidgeyShinyPalette:     INCLUDE "gfx/pokemon/pidgey/shiny.pal"
-PidgeottoPalette:       INCLUDE "gfx/pokemon/pidgeotto/normal.pal"
-PidgeottoShinyPalette:  INCLUDE "gfx/pokemon/pidgeotto/shiny.pal"
-PidgeotPalette:         INCLUDE "gfx/pokemon/pidgeot/normal.pal"
-PidgeotShinyPalette:    INCLUDE "gfx/pokemon/pidgeot/shiny.pal"
-RattataPalette:         INCLUDE "gfx/pokemon/rattata/normal.pal"
-RattataShinyPalette:    INCLUDE "gfx/pokemon/rattata/shiny.pal"
-RaticatePalette:        INCLUDE "gfx/pokemon/raticate/normal.pal"
-RaticateShinyPalette:   INCLUDE "gfx/pokemon/raticate/shiny.pal"
-SpearowPalette:         INCLUDE "gfx/pokemon/spearow/normal.pal"
-SpearowShinyPalette:    INCLUDE "gfx/pokemon/spearow/shiny.pal"
-FearowPalette:          INCLUDE "gfx/pokemon/fearow/normal.pal"
-FearowShinyPalette:     INCLUDE "gfx/pokemon/fearow/shiny.pal"
-EkansPalette:           INCLUDE "gfx/pokemon/ekans/normal.pal"
-EkansShinyPalette:      INCLUDE "gfx/pokemon/ekans/shiny.pal"
-ArbokPalette:           INCLUDE "gfx/pokemon/arbok/normal.pal"
-ArbokShinyPalette:      INCLUDE "gfx/pokemon/arbok/shiny.pal"
-PikachuPalette:         INCLUDE "gfx/pokemon/pikachu/normal.pal"
-PikachuShinyPalette:    INCLUDE "gfx/pokemon/pikachu/shiny.pal"
-RaichuPalette:          INCLUDE "gfx/pokemon/raichu/normal.pal"
-RaichuShinyPalette:     INCLUDE "gfx/pokemon/raichu/shiny.pal"
-SandshrewPalette:       INCLUDE "gfx/pokemon/sandshrew/normal.pal"
-SandshrewShinyPalette:  INCLUDE "gfx/pokemon/sandshrew/shiny.pal"
-SandslashPalette:       INCLUDE "gfx/pokemon/sandslash/normal.pal"
-SandslashShinyPalette:  INCLUDE "gfx/pokemon/sandslash/shiny.pal"
-NidoranFPalette:        INCLUDE "gfx/pokemon/nidoran_f/normal.pal"
-NidoranFShinyPalette:   INCLUDE "gfx/pokemon/nidoran_f/shiny.pal"
-NidorinaPalette:        INCLUDE "gfx/pokemon/nidorina/normal.pal"
-NidorinaShinyPalette:   INCLUDE "gfx/pokemon/nidorina/shiny.pal"
-NidoqueenPalette:       INCLUDE "gfx/pokemon/nidoqueen/normal.pal"
-NidoqueenShinyPalette:  INCLUDE "gfx/pokemon/nidoqueen/shiny.pal"
-NidoranMPalette:        INCLUDE "gfx/pokemon/nidoran_m/normal.pal"
-NidoranMShinyPalette:   INCLUDE "gfx/pokemon/nidoran_m/shiny.pal"
-NidorinoPalette:        INCLUDE "gfx/pokemon/nidorino/normal.pal"
-NidorinoShinyPalette:   INCLUDE "gfx/pokemon/nidorino/shiny.pal"
-NidokingPalette:        INCLUDE "gfx/pokemon/nidoking/normal.pal"
-NidokingShinyPalette:   INCLUDE "gfx/pokemon/nidoking/shiny.pal"
-ClefairyPalette:        INCLUDE "gfx/pokemon/clefairy/normal.pal"
-ClefairyShinyPalette:   INCLUDE "gfx/pokemon/clefairy/shiny.pal"
-ClefablePalette:        INCLUDE "gfx/pokemon/clefable/normal.pal"
-ClefableShinyPalette:   INCLUDE "gfx/pokemon/clefable/shiny.pal"
-VulpixPalette:          INCLUDE "gfx/pokemon/vulpix/normal.pal"
-VulpixShinyPalette:     INCLUDE "gfx/pokemon/vulpix/shiny.pal"
-NinetalesPalette:       INCLUDE "gfx/pokemon/ninetales/normal.pal"
-NinetalesShinyPalette:  INCLUDE "gfx/pokemon/ninetales/shiny.pal"
-JigglypuffPalette:      INCLUDE "gfx/pokemon/jigglypuff/normal.pal"
-JigglypuffShinyPalette: INCLUDE "gfx/pokemon/jigglypuff/shiny.pal"
-WigglytuffPalette:      INCLUDE "gfx/pokemon/wigglytuff/normal.pal"
-WigglytuffShinyPalette: INCLUDE "gfx/pokemon/wigglytuff/shiny.pal"
-ZubatPalette:           INCLUDE "gfx/pokemon/zubat/normal.pal"
-ZubatShinyPalette:      INCLUDE "gfx/pokemon/zubat/shiny.pal"
-GolbatPalette:          INCLUDE "gfx/pokemon/golbat/normal.pal"
-GolbatShinyPalette:     INCLUDE "gfx/pokemon/golbat/shiny.pal"
-OddishPalette:          INCLUDE "gfx/pokemon/oddish/normal.pal"
-OddishShinyPalette:     INCLUDE "gfx/pokemon/oddish/shiny.pal"
-GloomPalette:           INCLUDE "gfx/pokemon/gloom/normal.pal"
-GloomShinyPalette:      INCLUDE "gfx/pokemon/gloom/shiny.pal"
-VileplumePalette:       INCLUDE "gfx/pokemon/vileplume/normal.pal"
-VileplumeShinyPalette:  INCLUDE "gfx/pokemon/vileplume/shiny.pal"
-ParasPalette:           INCLUDE "gfx/pokemon/paras/normal.pal"
-ParasShinyPalette:      INCLUDE "gfx/pokemon/paras/shiny.pal"
-ParasectPalette:        INCLUDE "gfx/pokemon/parasect/normal.pal"
-ParasectShinyPalette:   INCLUDE "gfx/pokemon/parasect/shiny.pal"
-VenonatPalette:         INCLUDE "gfx/pokemon/venonat/normal.pal"
-VenonatShinyPalette:    INCLUDE "gfx/pokemon/venonat/shiny.pal"
-VenomothPalette:        INCLUDE "gfx/pokemon/venomoth/normal.pal"
-VenomothShinyPalette:   INCLUDE "gfx/pokemon/venomoth/shiny.pal"
-DiglettPalette:         INCLUDE "gfx/pokemon/diglett/normal.pal"
-DiglettShinyPalette:    INCLUDE "gfx/pokemon/diglett/shiny.pal"
-DugtrioPalette:         INCLUDE "gfx/pokemon/dugtrio/normal.pal"
-DugtrioShinyPalette:    INCLUDE "gfx/pokemon/dugtrio/shiny.pal"
-MeowthPalette:          INCLUDE "gfx/pokemon/meowth/normal.pal"
-MeowthShinyPalette:     INCLUDE "gfx/pokemon/meowth/shiny.pal"
-PersianPalette:         INCLUDE "gfx/pokemon/persian/normal.pal"
-PersianShinyPalette:    INCLUDE "gfx/pokemon/persian/shiny.pal"
-PsyduckPalette:         INCLUDE "gfx/pokemon/psyduck/normal.pal"
-PsyduckShinyPalette:    INCLUDE "gfx/pokemon/psyduck/shiny.pal"
-GolduckPalette:         INCLUDE "gfx/pokemon/golduck/normal.pal"
-GolduckShinyPalette:    INCLUDE "gfx/pokemon/golduck/shiny.pal"
-MankeyPalette:          INCLUDE "gfx/pokemon/mankey/normal.pal"
-MankeyShinyPalette:     INCLUDE "gfx/pokemon/mankey/shiny.pal"
-PrimeapePalette:        INCLUDE "gfx/pokemon/primeape/normal.pal"
-PrimeapeShinyPalette:   INCLUDE "gfx/pokemon/primeape/shiny.pal"
-GrowlithePalette:       INCLUDE "gfx/pokemon/growlithe/normal.pal"
-GrowlitheShinyPalette:  INCLUDE "gfx/pokemon/growlithe/shiny.pal"
-ArcaninePalette:        INCLUDE "gfx/pokemon/arcanine/normal.pal"
-ArcanineShinyPalette:   INCLUDE "gfx/pokemon/arcanine/shiny.pal"
-PoliwagPalette:         INCLUDE "gfx/pokemon/poliwag/normal.pal"
-PoliwagShinyPalette:    INCLUDE "gfx/pokemon/poliwag/shiny.pal"
-PoliwhirlPalette:       INCLUDE "gfx/pokemon/poliwhirl/normal.pal"
-PoliwhirlShinyPalette:  INCLUDE "gfx/pokemon/poliwhirl/shiny.pal"
-PoliwrathPalette:       INCLUDE "gfx/pokemon/poliwrath/normal.pal"
-PoliwrathShinyPalette:  INCLUDE "gfx/pokemon/poliwrath/shiny.pal"
-AbraPalette:            INCLUDE "gfx/pokemon/abra/normal.pal"
-AbraShinyPalette:       INCLUDE "gfx/pokemon/abra/shiny.pal"
-KadabraPalette:         INCLUDE "gfx/pokemon/kadabra/normal.pal"
-KadabraShinyPalette:    INCLUDE "gfx/pokemon/kadabra/shiny.pal"
-AlakazamPalette:        INCLUDE "gfx/pokemon/alakazam/normal.pal"
-AlakazamShinyPalette:   INCLUDE "gfx/pokemon/alakazam/shiny.pal"
-MachopPalette:          INCLUDE "gfx/pokemon/machop/normal.pal"
-MachopShinyPalette:     INCLUDE "gfx/pokemon/machop/shiny.pal"
-MachokePalette:         INCLUDE "gfx/pokemon/machoke/normal.pal"
-MachokeShinyPalette:    INCLUDE "gfx/pokemon/machoke/shiny.pal"
-MachampPalette:         INCLUDE "gfx/pokemon/machamp/normal.pal"
-MachampShinyPalette:    INCLUDE "gfx/pokemon/machamp/shiny.pal"
-BellsproutPalette:      INCLUDE "gfx/pokemon/bellsprout/normal.pal"
-BellsproutShinyPalette: INCLUDE "gfx/pokemon/bellsprout/shiny.pal"
-WeepinbellPalette:      INCLUDE "gfx/pokemon/weepinbell/normal.pal"
-WeepinbellShinyPalette: INCLUDE "gfx/pokemon/weepinbell/shiny.pal"
-VictreebelPalette:      INCLUDE "gfx/pokemon/victreebel/normal.pal"
-VictreebelShinyPalette: INCLUDE "gfx/pokemon/victreebel/shiny.pal"
-TentacoolPalette:       INCLUDE "gfx/pokemon/tentacool/normal.pal"
-TentacoolShinyPalette:  INCLUDE "gfx/pokemon/tentacool/shiny.pal"
-TentacruelPalette:      INCLUDE "gfx/pokemon/tentacruel/normal.pal"
-TentacruelShinyPalette: INCLUDE "gfx/pokemon/tentacruel/shiny.pal"
-GeodudePalette:         INCLUDE "gfx/pokemon/geodude/normal.pal"
-GeodudeShinyPalette:    INCLUDE "gfx/pokemon/geodude/shiny.pal"
-GravelerPalette:        INCLUDE "gfx/pokemon/graveler/normal.pal"
-GravelerShinyPalette:   INCLUDE "gfx/pokemon/graveler/shiny.pal"
-GolemPalette:           INCLUDE "gfx/pokemon/golem/normal.pal"
-GolemShinyPalette:      INCLUDE "gfx/pokemon/golem/shiny.pal"
-PonytaPalette:          INCLUDE "gfx/pokemon/ponyta/normal.pal"
-PonytaShinyPalette:     INCLUDE "gfx/pokemon/ponyta/shiny.pal"
-RapidashPalette:        INCLUDE "gfx/pokemon/rapidash/normal.pal"
-RapidashShinyPalette:   INCLUDE "gfx/pokemon/rapidash/shiny.pal"
-SlowpokePalette:        INCLUDE "gfx/pokemon/slowpoke/normal.pal"
-SlowpokeShinyPalette:   INCLUDE "gfx/pokemon/slowpoke/shiny.pal"
-SlowbroPalette:         INCLUDE "gfx/pokemon/slowbro/normal.pal"
-SlowbroShinyPalette:    INCLUDE "gfx/pokemon/slowbro/shiny.pal"
-MagnemitePalette:       INCLUDE "gfx/pokemon/magnemite/normal.pal"
-MagnemiteShinyPalette:  INCLUDE "gfx/pokemon/magnemite/shiny.pal"
-MagnetonPalette:        INCLUDE "gfx/pokemon/magneton/normal.pal"
-MagnetonShinyPalette:   INCLUDE "gfx/pokemon/magneton/shiny.pal"
-FarfetchDPalette:       INCLUDE "gfx/pokemon/farfetch_d/normal.pal"
-FarfetchDShinyPalette:  INCLUDE "gfx/pokemon/farfetch_d/shiny.pal"
-DoduoPalette:           INCLUDE "gfx/pokemon/doduo/normal.pal"
-DoduoShinyPalette:      INCLUDE "gfx/pokemon/doduo/shiny.pal"
-DodrioPalette:          INCLUDE "gfx/pokemon/dodrio/normal.pal"
-DodrioShinyPalette:     INCLUDE "gfx/pokemon/dodrio/shiny.pal"
-SeelPalette:            INCLUDE "gfx/pokemon/seel/normal.pal"
-SeelShinyPalette:       INCLUDE "gfx/pokemon/seel/shiny.pal"
-DewgongPalette:         INCLUDE "gfx/pokemon/dewgong/normal.pal"
-DewgongShinyPalette:    INCLUDE "gfx/pokemon/dewgong/shiny.pal"
-GrimerPalette:          INCLUDE "gfx/pokemon/grimer/normal.pal"
-GrimerShinyPalette:     INCLUDE "gfx/pokemon/grimer/shiny.pal"
-MukPalette:             INCLUDE "gfx/pokemon/muk/normal.pal"
-MukShinyPalette:        INCLUDE "gfx/pokemon/muk/shiny.pal"
-ShellderPalette:        INCLUDE "gfx/pokemon/shellder/normal.pal"
-ShellderShinyPalette:   INCLUDE "gfx/pokemon/shellder/shiny.pal"
-CloysterPalette:        INCLUDE "gfx/pokemon/cloyster/normal.pal"
-CloysterShinyPalette:   INCLUDE "gfx/pokemon/cloyster/shiny.pal"
-GastlyPalette:          INCLUDE "gfx/pokemon/gastly/normal.pal"
-GastlyShinyPalette:     INCLUDE "gfx/pokemon/gastly/shiny.pal"
-HaunterPalette:         INCLUDE "gfx/pokemon/haunter/normal.pal"
-HaunterShinyPalette:    INCLUDE "gfx/pokemon/haunter/shiny.pal"
-GengarPalette:          INCLUDE "gfx/pokemon/gengar/normal.pal"
-GengarShinyPalette:     INCLUDE "gfx/pokemon/gengar/shiny.pal"
-OnixPalette:            INCLUDE "gfx/pokemon/onix/normal.pal"
-OnixShinyPalette:       INCLUDE "gfx/pokemon/onix/shiny.pal"
-DrowzeePalette:         INCLUDE "gfx/pokemon/drowzee/normal.pal"
-DrowzeeShinyPalette:    INCLUDE "gfx/pokemon/drowzee/shiny.pal"
-HypnoPalette:           INCLUDE "gfx/pokemon/hypno/normal.pal"
-HypnoShinyPalette:      INCLUDE "gfx/pokemon/hypno/shiny.pal"
-KrabbyPalette:          INCLUDE "gfx/pokemon/krabby/normal.pal"
-KrabbyShinyPalette:     INCLUDE "gfx/pokemon/krabby/shiny.pal"
-KinglerPalette:         INCLUDE "gfx/pokemon/kingler/normal.pal"
-KinglerShinyPalette:    INCLUDE "gfx/pokemon/kingler/shiny.pal"
-VoltorbPalette:         INCLUDE "gfx/pokemon/voltorb/normal.pal"
-VoltorbShinyPalette:    INCLUDE "gfx/pokemon/voltorb/shiny.pal"
-ElectrodePalette:       INCLUDE "gfx/pokemon/electrode/normal.pal"
-ElectrodeShinyPalette:  INCLUDE "gfx/pokemon/electrode/shiny.pal"
-ExeggcutePalette:       INCLUDE "gfx/pokemon/exeggcute/normal.pal"
-ExeggcuteShinyPalette:  INCLUDE "gfx/pokemon/exeggcute/shiny.pal"
-ExeggutorPalette:       INCLUDE "gfx/pokemon/exeggutor/normal.pal"
-ExeggutorShinyPalette:  INCLUDE "gfx/pokemon/exeggutor/shiny.pal"
-CubonePalette:          INCLUDE "gfx/pokemon/cubone/normal.pal"
-CuboneShinyPalette:     INCLUDE "gfx/pokemon/cubone/shiny.pal"
-MarowakPalette:         INCLUDE "gfx/pokemon/marowak/normal.pal"
-MarowakShinyPalette:    INCLUDE "gfx/pokemon/marowak/shiny.pal"
-HitmonleePalette:       INCLUDE "gfx/pokemon/hitmonlee/normal.pal"
-HitmonleeShinyPalette:  INCLUDE "gfx/pokemon/hitmonlee/shiny.pal"
-HitmonchanPalette:      INCLUDE "gfx/pokemon/hitmonchan/normal.pal"
-HitmonchanShinyPalette: INCLUDE "gfx/pokemon/hitmonchan/shiny.pal"
-LickitungPalette:       INCLUDE "gfx/pokemon/lickitung/normal.pal"
-LickitungShinyPalette:  INCLUDE "gfx/pokemon/lickitung/shiny.pal"
-KoffingPalette:         INCLUDE "gfx/pokemon/koffing/normal.pal"
-KoffingShinyPalette:    INCLUDE "gfx/pokemon/koffing/shiny.pal"
-WeezingPalette:         INCLUDE "gfx/pokemon/weezing/normal.pal"
-WeezingShinyPalette:    INCLUDE "gfx/pokemon/weezing/shiny.pal"
-RhyhornPalette:         INCLUDE "gfx/pokemon/rhyhorn/normal.pal"
-RhyhornShinyPalette:    INCLUDE "gfx/pokemon/rhyhorn/shiny.pal"
-RhydonPalette:          INCLUDE "gfx/pokemon/rhydon/normal.pal"
-RhydonShinyPalette:     INCLUDE "gfx/pokemon/rhydon/shiny.pal"
-ChanseyPalette:         INCLUDE "gfx/pokemon/chansey/normal.pal"
-ChanseyShinyPalette:    INCLUDE "gfx/pokemon/chansey/shiny.pal"
-TangelaPalette:         INCLUDE "gfx/pokemon/tangela/normal.pal"
-TangelaShinyPalette:    INCLUDE "gfx/pokemon/tangela/shiny.pal"
-KangaskhanPalette:      INCLUDE "gfx/pokemon/kangaskhan/normal.pal"
-KangaskhanShinyPalette: INCLUDE "gfx/pokemon/kangaskhan/shiny.pal"
-HorseaPalette:          INCLUDE "gfx/pokemon/horsea/normal.pal"
-HorseaShinyPalette:     INCLUDE "gfx/pokemon/horsea/shiny.pal"
-SeadraPalette:          INCLUDE "gfx/pokemon/seadra/normal.pal"
-SeadraShinyPalette:     INCLUDE "gfx/pokemon/seadra/shiny.pal"
-GoldeenPalette:         INCLUDE "gfx/pokemon/goldeen/normal.pal"
-GoldeenShinyPalette:    INCLUDE "gfx/pokemon/goldeen/shiny.pal"
-SeakingPalette:         INCLUDE "gfx/pokemon/seaking/normal.pal"
-SeakingShinyPalette:    INCLUDE "gfx/pokemon/seaking/shiny.pal"
-StaryuPalette:          INCLUDE "gfx/pokemon/staryu/normal.pal"
-StaryuShinyPalette:     INCLUDE "gfx/pokemon/staryu/shiny.pal"
-StarmiePalette:         INCLUDE "gfx/pokemon/starmie/normal.pal"
-StarmieShinyPalette:    INCLUDE "gfx/pokemon/starmie/shiny.pal"
-MrMimePalette:          INCLUDE "gfx/pokemon/mr__mime/normal.pal"
-MrMimeShinyPalette:     INCLUDE "gfx/pokemon/mr__mime/shiny.pal"
-ScytherPalette:         INCLUDE "gfx/pokemon/scyther/normal.pal"
-ScytherShinyPalette:    INCLUDE "gfx/pokemon/scyther/shiny.pal"
-JynxPalette:            INCLUDE "gfx/pokemon/jynx/normal.pal"
-JynxShinyPalette:       INCLUDE "gfx/pokemon/jynx/shiny.pal"
-ElectabuzzPalette:      INCLUDE "gfx/pokemon/electabuzz/normal.pal"
-ElectabuzzShinyPalette: INCLUDE "gfx/pokemon/electabuzz/shiny.pal"
-MagmarPalette:          INCLUDE "gfx/pokemon/magmar/normal.pal"
-MagmarShinyPalette:     INCLUDE "gfx/pokemon/magmar/shiny.pal"
-PinsirPalette:          INCLUDE "gfx/pokemon/pinsir/normal.pal"
-PinsirShinyPalette:     INCLUDE "gfx/pokemon/pinsir/shiny.pal"
-TaurosPalette:          INCLUDE "gfx/pokemon/tauros/normal.pal"
-TaurosShinyPalette:     INCLUDE "gfx/pokemon/tauros/shiny.pal"
-MagikarpPalette:        INCLUDE "gfx/pokemon/magikarp/normal.pal"
-MagikarpShinyPalette:   INCLUDE "gfx/pokemon/magikarp/shiny.pal"
-GyaradosPalette:        INCLUDE "gfx/pokemon/gyarados/normal.pal"
-GyaradosShinyPalette:   INCLUDE "gfx/pokemon/gyarados/shiny.pal"
-LaprasPalette:          INCLUDE "gfx/pokemon/lapras/normal.pal"
-LaprasShinyPalette:     INCLUDE "gfx/pokemon/lapras/shiny.pal"
-DittoPalette:           INCLUDE "gfx/pokemon/ditto/normal.pal"
-DittoShinyPalette:      INCLUDE "gfx/pokemon/ditto/shiny.pal"
-EeveePalette:           INCLUDE "gfx/pokemon/eevee/normal.pal"
-EeveeShinyPalette:      INCLUDE "gfx/pokemon/eevee/shiny.pal"
-VaporeonPalette:        INCLUDE "gfx/pokemon/vaporeon/normal.pal"
-VaporeonShinyPalette:   INCLUDE "gfx/pokemon/vaporeon/shiny.pal"
-JolteonPalette:         INCLUDE "gfx/pokemon/jolteon/normal.pal"
-JolteonShinyPalette:    INCLUDE "gfx/pokemon/jolteon/shiny.pal"
-FlareonPalette:         INCLUDE "gfx/pokemon/flareon/normal.pal"
-FlareonShinyPalette:    INCLUDE "gfx/pokemon/flareon/shiny.pal"
-PorygonPalette:         INCLUDE "gfx/pokemon/porygon/normal.pal"
-PorygonShinyPalette:    INCLUDE "gfx/pokemon/porygon/shiny.pal"
-OmanytePalette:         INCLUDE "gfx/pokemon/omanyte/normal.pal"
-OmanyteShinyPalette:    INCLUDE "gfx/pokemon/omanyte/shiny.pal"
-OmastarPalette:         INCLUDE "gfx/pokemon/omastar/normal.pal"
-OmastarShinyPalette:    INCLUDE "gfx/pokemon/omastar/shiny.pal"
-KabutoPalette:          INCLUDE "gfx/pokemon/kabuto/normal.pal"
-KabutoShinyPalette:     INCLUDE "gfx/pokemon/kabuto/shiny.pal"
-KabutopsPalette:        INCLUDE "gfx/pokemon/kabutops/normal.pal"
-KabutopsShinyPalette:   INCLUDE "gfx/pokemon/kabutops/shiny.pal"
-AerodactylPalette:      INCLUDE "gfx/pokemon/aerodactyl/normal.pal"
-AerodactylShinyPalette: INCLUDE "gfx/pokemon/aerodactyl/shiny.pal"
-SnorlaxPalette:         INCLUDE "gfx/pokemon/snorlax/normal.pal"
-SnorlaxShinyPalette:    INCLUDE "gfx/pokemon/snorlax/shiny.pal"
-ArticunoPalette:        INCLUDE "gfx/pokemon/articuno/normal.pal"
-ArticunoShinyPalette:   INCLUDE "gfx/pokemon/articuno/shiny.pal"
-ZapdosPalette:          INCLUDE "gfx/pokemon/zapdos/normal.pal"
-ZapdosShinyPalette:     INCLUDE "gfx/pokemon/zapdos/shiny.pal"
-MoltresPalette:         INCLUDE "gfx/pokemon/moltres/normal.pal"
-MoltresShinyPalette:    INCLUDE "gfx/pokemon/moltres/shiny.pal"
-DratiniPalette:         INCLUDE "gfx/pokemon/dratini/normal.pal"
-DratiniShinyPalette:    INCLUDE "gfx/pokemon/dratini/shiny.pal"
-DragonairPalette:       INCLUDE "gfx/pokemon/dragonair/normal.pal"
-DragonairShinyPalette:  INCLUDE "gfx/pokemon/dragonair/shiny.pal"
-DragonitePalette:       INCLUDE "gfx/pokemon/dragonite/normal.pal"
-DragoniteShinyPalette:  INCLUDE "gfx/pokemon/dragonite/shiny.pal"
-MewtwoPalette:          INCLUDE "gfx/pokemon/mewtwo/normal.pal"
-MewtwoShinyPalette:     INCLUDE "gfx/pokemon/mewtwo/shiny.pal"
-MewPalette:             INCLUDE "gfx/pokemon/mew/normal.pal"
-MewShinyPalette:        INCLUDE "gfx/pokemon/mew/shiny.pal"
-ChikoritaPalette:       INCLUDE "gfx/pokemon/chikorita/normal.pal"
-ChikoritaShinyPalette:  INCLUDE "gfx/pokemon/chikorita/shiny.pal"
-BayleefPalette:         INCLUDE "gfx/pokemon/bayleef/normal.pal"
-BayleefShinyPalette:    INCLUDE "gfx/pokemon/bayleef/shiny.pal"
-MeganiumPalette:        INCLUDE "gfx/pokemon/meganium/normal.pal"
-MeganiumShinyPalette:   INCLUDE "gfx/pokemon/meganium/shiny.pal"
-CyndaquilPalette:       INCLUDE "gfx/pokemon/cyndaquil/normal.pal"
-CyndaquilShinyPalette:  INCLUDE "gfx/pokemon/cyndaquil/shiny.pal"
-QuilavaPalette:         INCLUDE "gfx/pokemon/quilava/normal.pal"
-QuilavaShinyPalette:    INCLUDE "gfx/pokemon/quilava/shiny.pal"
-TyphlosionPalette:      INCLUDE "gfx/pokemon/typhlosion/normal.pal"
-TyphlosionShinyPalette: INCLUDE "gfx/pokemon/typhlosion/shiny.pal"
-TotodilePalette:        INCLUDE "gfx/pokemon/totodile/normal.pal"
-TotodileShinyPalette:   INCLUDE "gfx/pokemon/totodile/shiny.pal"
-CroconawPalette:        INCLUDE "gfx/pokemon/croconaw/normal.pal"
-CroconawShinyPalette:   INCLUDE "gfx/pokemon/croconaw/shiny.pal"
-FeraligatrPalette:      INCLUDE "gfx/pokemon/feraligatr/normal.pal"
-FeraligatrShinyPalette: INCLUDE "gfx/pokemon/feraligatr/shiny.pal"
-SentretPalette:         INCLUDE "gfx/pokemon/sentret/normal.pal"
-SentretShinyPalette:    INCLUDE "gfx/pokemon/sentret/shiny.pal"
-FurretPalette:          INCLUDE "gfx/pokemon/furret/normal.pal"
-FurretShinyPalette:     INCLUDE "gfx/pokemon/furret/shiny.pal"
-HoothootPalette:        INCLUDE "gfx/pokemon/hoothoot/normal.pal"
-HoothootShinyPalette:   INCLUDE "gfx/pokemon/hoothoot/shiny.pal"
-NoctowlPalette:         INCLUDE "gfx/pokemon/noctowl/normal.pal"
-NoctowlShinyPalette:    INCLUDE "gfx/pokemon/noctowl/shiny.pal"
-LedybaPalette:          INCLUDE "gfx/pokemon/ledyba/normal.pal"
-LedybaShinyPalette:     INCLUDE "gfx/pokemon/ledyba/shiny.pal"
-LedianPalette:          INCLUDE "gfx/pokemon/ledian/normal.pal"
-LedianShinyPalette:     INCLUDE "gfx/pokemon/ledian/shiny.pal"
-SpinarakPalette:        INCLUDE "gfx/pokemon/spinarak/normal.pal"
-SpinarakShinyPalette:   INCLUDE "gfx/pokemon/spinarak/shiny.pal"
-AriadosPalette:         INCLUDE "gfx/pokemon/ariados/normal.pal"
-AriadosShinyPalette:    INCLUDE "gfx/pokemon/ariados/shiny.pal"
-CrobatPalette:          INCLUDE "gfx/pokemon/crobat/normal.pal"
-CrobatShinyPalette:     INCLUDE "gfx/pokemon/crobat/shiny.pal"
-ChinchouPalette:        INCLUDE "gfx/pokemon/chinchou/normal.pal"
-ChinchouShinyPalette:   INCLUDE "gfx/pokemon/chinchou/shiny.pal"
-LanturnPalette:         INCLUDE "gfx/pokemon/lanturn/normal.pal"
-LanturnShinyPalette:    INCLUDE "gfx/pokemon/lanturn/shiny.pal"
-PichuPalette:           INCLUDE "gfx/pokemon/pichu/normal.pal"
-PichuShinyPalette:      INCLUDE "gfx/pokemon/pichu/shiny.pal"
-CleffaPalette:          INCLUDE "gfx/pokemon/cleffa/normal.pal"
-CleffaShinyPalette:     INCLUDE "gfx/pokemon/cleffa/shiny.pal"
-IgglybuffPalette:       INCLUDE "gfx/pokemon/igglybuff/normal.pal"
-IgglybuffShinyPalette:  INCLUDE "gfx/pokemon/igglybuff/shiny.pal"
-TogepiPalette:          INCLUDE "gfx/pokemon/togepi/normal.pal"
-TogepiShinyPalette:     INCLUDE "gfx/pokemon/togepi/shiny.pal"
-TogeticPalette:         INCLUDE "gfx/pokemon/togetic/normal.pal"
-TogeticShinyPalette:    INCLUDE "gfx/pokemon/togetic/shiny.pal"
-NatuPalette:            INCLUDE "gfx/pokemon/natu/normal.pal"
-NatuShinyPalette:       INCLUDE "gfx/pokemon/natu/shiny.pal"
-XatuPalette:            INCLUDE "gfx/pokemon/xatu/normal.pal"
-XatuShinyPalette:       INCLUDE "gfx/pokemon/xatu/shiny.pal"
-MareepPalette:          INCLUDE "gfx/pokemon/mareep/normal.pal"
-MareepShinyPalette:     INCLUDE "gfx/pokemon/mareep/shiny.pal"
-FlaaffyPalette:         INCLUDE "gfx/pokemon/flaaffy/normal.pal"
-FlaaffyShinyPalette:    INCLUDE "gfx/pokemon/flaaffy/shiny.pal"
-AmpharosPalette:        INCLUDE "gfx/pokemon/ampharos/normal.pal"
-AmpharosShinyPalette:   INCLUDE "gfx/pokemon/ampharos/shiny.pal"
-BellossomPalette:       INCLUDE "gfx/pokemon/bellossom/normal.pal"
-BellossomShinyPalette:  INCLUDE "gfx/pokemon/bellossom/shiny.pal"
-MarillPalette:          INCLUDE "gfx/pokemon/marill/normal.pal"
-MarillShinyPalette:     INCLUDE "gfx/pokemon/marill/shiny.pal"
-AzumarillPalette:       INCLUDE "gfx/pokemon/azumarill/normal.pal"
-AzumarillShinyPalette:  INCLUDE "gfx/pokemon/azumarill/shiny.pal"
-SudowoodoPalette:       INCLUDE "gfx/pokemon/sudowoodo/normal.pal"
-SudowoodoShinyPalette:  INCLUDE "gfx/pokemon/sudowoodo/shiny.pal"
-PolitoedPalette:        INCLUDE "gfx/pokemon/politoed/normal.pal"
-PolitoedShinyPalette:   INCLUDE "gfx/pokemon/politoed/shiny.pal"
-HoppipPalette:          INCLUDE "gfx/pokemon/hoppip/normal.pal"
-HoppipShinyPalette:     INCLUDE "gfx/pokemon/hoppip/shiny.pal"
-SkiploomPalette:        INCLUDE "gfx/pokemon/skiploom/normal.pal"
-SkiploomShinyPalette:   INCLUDE "gfx/pokemon/skiploom/shiny.pal"
-JumpluffPalette:        INCLUDE "gfx/pokemon/jumpluff/normal.pal"
-JumpluffShinyPalette:   INCLUDE "gfx/pokemon/jumpluff/shiny.pal"
-AipomPalette:           INCLUDE "gfx/pokemon/aipom/normal.pal"
-AipomShinyPalette:      INCLUDE "gfx/pokemon/aipom/shiny.pal"
-SunkernPalette:         INCLUDE "gfx/pokemon/sunkern/normal.pal"
-SunkernShinyPalette:    INCLUDE "gfx/pokemon/sunkern/shiny.pal"
-SunfloraPalette:        INCLUDE "gfx/pokemon/sunflora/normal.pal"
-SunfloraShinyPalette:   INCLUDE "gfx/pokemon/sunflora/shiny.pal"
-YanmaPalette:           INCLUDE "gfx/pokemon/yanma/normal.pal"
-YanmaShinyPalette:      INCLUDE "gfx/pokemon/yanma/shiny.pal"
-WooperPalette:          INCLUDE "gfx/pokemon/wooper/normal.pal"
-WooperShinyPalette:     INCLUDE "gfx/pokemon/wooper/shiny.pal"
-QuagsirePalette:        INCLUDE "gfx/pokemon/quagsire/normal.pal"
-QuagsireShinyPalette:   INCLUDE "gfx/pokemon/quagsire/shiny.pal"
-EspeonPalette:          INCLUDE "gfx/pokemon/espeon/normal.pal"
-EspeonShinyPalette:     INCLUDE "gfx/pokemon/espeon/shiny.pal"
-UmbreonPalette:         INCLUDE "gfx/pokemon/umbreon/normal.pal"
-UmbreonShinyPalette:    INCLUDE "gfx/pokemon/umbreon/shiny.pal"
-MurkrowPalette:         INCLUDE "gfx/pokemon/murkrow/normal.pal"
-MurkrowShinyPalette:    INCLUDE "gfx/pokemon/murkrow/shiny.pal"
-SlowkingPalette:        INCLUDE "gfx/pokemon/slowking/normal.pal"
-SlowkingShinyPalette:   INCLUDE "gfx/pokemon/slowking/shiny.pal"
-MisdreavusPalette:      INCLUDE "gfx/pokemon/misdreavus/normal.pal"
-MisdreavusShinyPalette: INCLUDE "gfx/pokemon/misdreavus/shiny.pal"
-UnownPalette:           INCLUDE "gfx/pokemon/unown/normal.pal"
-UnownShinyPalette:      INCLUDE "gfx/pokemon/unown/shiny.pal"
-WobbuffetPalette:       INCLUDE "gfx/pokemon/wobbuffet/normal.pal"
-WobbuffetShinyPalette:  INCLUDE "gfx/pokemon/wobbuffet/shiny.pal"
-GirafarigPalette:       INCLUDE "gfx/pokemon/girafarig/normal.pal"
-GirafarigShinyPalette:  INCLUDE "gfx/pokemon/girafarig/shiny.pal"
-PinecoPalette:          INCLUDE "gfx/pokemon/pineco/normal.pal"
-PinecoShinyPalette:     INCLUDE "gfx/pokemon/pineco/shiny.pal"
-ForretressPalette:      INCLUDE "gfx/pokemon/forretress/normal.pal"
-ForretressShinyPalette: INCLUDE "gfx/pokemon/forretress/shiny.pal"
-DunsparcePalette:       INCLUDE "gfx/pokemon/dunsparce/normal.pal"
-DunsparceShinyPalette:  INCLUDE "gfx/pokemon/dunsparce/shiny.pal"
-GligarPalette:          INCLUDE "gfx/pokemon/gligar/normal.pal"
-GligarShinyPalette:     INCLUDE "gfx/pokemon/gligar/shiny.pal"
-SteelixPalette:         INCLUDE "gfx/pokemon/steelix/normal.pal"
-SteelixShinyPalette:    INCLUDE "gfx/pokemon/steelix/shiny.pal"
-SnubbullPalette:        INCLUDE "gfx/pokemon/snubbull/normal.pal"
-SnubbullShinyPalette:   INCLUDE "gfx/pokemon/snubbull/shiny.pal"
-GranbullPalette:        INCLUDE "gfx/pokemon/granbull/normal.pal"
-GranbullShinyPalette:   INCLUDE "gfx/pokemon/granbull/shiny.pal"
-QwilfishPalette:        INCLUDE "gfx/pokemon/qwilfish/normal.pal"
-QwilfishShinyPalette:   INCLUDE "gfx/pokemon/qwilfish/shiny.pal"
-ScizorPalette:          INCLUDE "gfx/pokemon/scizor/normal.pal"
-ScizorShinyPalette:     INCLUDE "gfx/pokemon/scizor/shiny.pal"
-ShucklePalette:         INCLUDE "gfx/pokemon/shuckle/normal.pal"
-ShuckleShinyPalette:    INCLUDE "gfx/pokemon/shuckle/shiny.pal"
-HeracrossPalette:       INCLUDE "gfx/pokemon/heracross/normal.pal"
-HeracrossShinyPalette:  INCLUDE "gfx/pokemon/heracross/shiny.pal"
-SneaselPalette:         INCLUDE "gfx/pokemon/sneasel/normal.pal"
-SneaselShinyPalette:    INCLUDE "gfx/pokemon/sneasel/shiny.pal"
-TeddiursaPalette:       INCLUDE "gfx/pokemon/teddiursa/normal.pal"
-TeddiursaShinyPalette:  INCLUDE "gfx/pokemon/teddiursa/shiny.pal"
-UrsaringPalette:        INCLUDE "gfx/pokemon/ursaring/normal.pal"
-UrsaringShinyPalette:   INCLUDE "gfx/pokemon/ursaring/shiny.pal"
-SlugmaPalette:          INCLUDE "gfx/pokemon/slugma/normal.pal"
-SlugmaShinyPalette:     INCLUDE "gfx/pokemon/slugma/shiny.pal"
-MagcargoPalette:        INCLUDE "gfx/pokemon/magcargo/normal.pal"
-MagcargoShinyPalette:   INCLUDE "gfx/pokemon/magcargo/shiny.pal"
-SwinubPalette:          INCLUDE "gfx/pokemon/swinub/normal.pal"
-SwinubShinyPalette:     INCLUDE "gfx/pokemon/swinub/shiny.pal"
-PiloswinePalette:       INCLUDE "gfx/pokemon/piloswine/normal.pal"
-PiloswineShinyPalette:  INCLUDE "gfx/pokemon/piloswine/shiny.pal"
-CorsolaPalette:         INCLUDE "gfx/pokemon/corsola/normal.pal"
-CorsolaShinyPalette:    INCLUDE "gfx/pokemon/corsola/shiny.pal"
-RemoraidPalette:        INCLUDE "gfx/pokemon/remoraid/normal.pal"
-RemoraidShinyPalette:   INCLUDE "gfx/pokemon/remoraid/shiny.pal"
-OctilleryPalette:       INCLUDE "gfx/pokemon/octillery/normal.pal"
-OctilleryShinyPalette:  INCLUDE "gfx/pokemon/octillery/shiny.pal"
-DelibirdPalette:        INCLUDE "gfx/pokemon/delibird/normal.pal"
-DelibirdShinyPalette:   INCLUDE "gfx/pokemon/delibird/shiny.pal"
-MantinePalette:         INCLUDE "gfx/pokemon/mantine/normal.pal"
-MantineShinyPalette:    INCLUDE "gfx/pokemon/mantine/shiny.pal"
-SkarmoryPalette:        INCLUDE "gfx/pokemon/skarmory/normal.pal"
-SkarmoryShinyPalette:   INCLUDE "gfx/pokemon/skarmory/shiny.pal"
-HoundourPalette:        INCLUDE "gfx/pokemon/houndour/normal.pal"
-HoundourShinyPalette:   INCLUDE "gfx/pokemon/houndour/shiny.pal"
-HoundoomPalette:        INCLUDE "gfx/pokemon/houndoom/normal.pal"
-HoundoomShinyPalette:   INCLUDE "gfx/pokemon/houndoom/shiny.pal"
-KingdraPalette:         INCLUDE "gfx/pokemon/kingdra/normal.pal"
-KingdraShinyPalette:    INCLUDE "gfx/pokemon/kingdra/shiny.pal"
-PhanpyPalette:          INCLUDE "gfx/pokemon/phanpy/normal.pal"
-PhanpyShinyPalette:     INCLUDE "gfx/pokemon/phanpy/shiny.pal"
-DonphanPalette:         INCLUDE "gfx/pokemon/donphan/normal.pal"
-DonphanShinyPalette:    INCLUDE "gfx/pokemon/donphan/shiny.pal"
-Porygon2Palette:        INCLUDE "gfx/pokemon/porygon2/normal.pal"
-Porygon2ShinyPalette:   INCLUDE "gfx/pokemon/porygon2/shiny.pal"
-StantlerPalette:        INCLUDE "gfx/pokemon/stantler/normal.pal"
-StantlerShinyPalette:   INCLUDE "gfx/pokemon/stantler/shiny.pal"
-SmearglePalette:        INCLUDE "gfx/pokemon/smeargle/normal.pal"
-SmeargleShinyPalette:   INCLUDE "gfx/pokemon/smeargle/shiny.pal"
-TyroguePalette:         INCLUDE "gfx/pokemon/tyrogue/normal.pal"
-TyrogueShinyPalette:    INCLUDE "gfx/pokemon/tyrogue/shiny.pal"
-HitmontopPalette:       INCLUDE "gfx/pokemon/hitmontop/normal.pal"
-HitmontopShinyPalette:  INCLUDE "gfx/pokemon/hitmontop/shiny.pal"
-SmoochumPalette:        INCLUDE "gfx/pokemon/smoochum/normal.pal"
-SmoochumShinyPalette:   INCLUDE "gfx/pokemon/smoochum/shiny.pal"
-ElekidPalette:          INCLUDE "gfx/pokemon/elekid/normal.pal"
-ElekidShinyPalette:     INCLUDE "gfx/pokemon/elekid/shiny.pal"
-MagbyPalette:           INCLUDE "gfx/pokemon/magby/normal.pal"
-MagbyShinyPalette:      INCLUDE "gfx/pokemon/magby/shiny.pal"
-MiltankPalette:         INCLUDE "gfx/pokemon/miltank/normal.pal"
-MiltankShinyPalette:    INCLUDE "gfx/pokemon/miltank/shiny.pal"
-BlisseyPalette:         INCLUDE "gfx/pokemon/blissey/normal.pal"
-BlisseyShinyPalette:    INCLUDE "gfx/pokemon/blissey/shiny.pal"
-RaikouPalette:          INCLUDE "gfx/pokemon/raikou/normal.pal"
-RaikouShinyPalette:     INCLUDE "gfx/pokemon/raikou/shiny.pal"
-EnteiPalette:           INCLUDE "gfx/pokemon/entei/normal.pal"
-EnteiShinyPalette:      INCLUDE "gfx/pokemon/entei/shiny.pal"
-SuicunePalette:         INCLUDE "gfx/pokemon/suicune/normal.pal"
-SuicuneShinyPalette:    INCLUDE "gfx/pokemon/suicune/shiny.pal"
-LarvitarPalette:        INCLUDE "gfx/pokemon/larvitar/normal.pal"
-LarvitarShinyPalette:   INCLUDE "gfx/pokemon/larvitar/shiny.pal"
-PupitarPalette:         INCLUDE "gfx/pokemon/pupitar/normal.pal"
-PupitarShinyPalette:    INCLUDE "gfx/pokemon/pupitar/shiny.pal"
-TyranitarPalette:       INCLUDE "gfx/pokemon/tyranitar/normal.pal"
-TyranitarShinyPalette:  INCLUDE "gfx/pokemon/tyranitar/shiny.pal"
-LugiaPalette:           INCLUDE "gfx/pokemon/lugia/normal.pal"
-LugiaShinyPalette:      INCLUDE "gfx/pokemon/lugia/shiny.pal"
-HoOhPalette:            INCLUDE "gfx/pokemon/ho_oh/normal.pal"
-HoOhShinyPalette:       INCLUDE "gfx/pokemon/ho_oh/shiny.pal"
-CelebiPalette:          INCLUDE "gfx/pokemon/celebi/normal.pal"
-CelebiShinyPalette:     INCLUDE "gfx/pokemon/celebi/shiny.pal"
-
-; 252
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-; 252 shiny
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-
-; Egg
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-; Egg shiny
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-
-; 254
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-; 254 shiny
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-
-; 255
-	RGB 23, 23, 23
-	RGB 17, 17, 17
-; 255 shiny
-	RGB 23, 23, 23
-	RGB 17, 17, 17
-
-; b0ce
--- a/gfx/pokemon/pic_pointers.asm
+++ /dev/null
@@ -1,511 +1,0 @@
-PicPointers::
-; entries correspond to constants/pokemon_constants.asm, two apiece
-	dba_pic BulbasaurFrontpic
-	dba_pic BulbasaurBackpic
-	dba_pic IvysaurFrontpic
-	dba_pic IvysaurBackpic
-	dba_pic VenusaurFrontpic
-	dba_pic VenusaurBackpic
-	dba_pic CharmanderFrontpic
-	dba_pic CharmanderBackpic
-	dba_pic CharmeleonFrontpic
-	dba_pic CharmeleonBackpic
-	dba_pic CharizardFrontpic
-	dba_pic CharizardBackpic
-	dba_pic SquirtleFrontpic
-	dba_pic SquirtleBackpic
-	dba_pic WartortleFrontpic
-	dba_pic WartortleBackpic
-	dba_pic BlastoiseFrontpic
-	dba_pic BlastoiseBackpic
-	dba_pic CaterpieFrontpic
-	dba_pic CaterpieBackpic
-	dba_pic MetapodFrontpic
-	dba_pic MetapodBackpic
-	dba_pic ButterfreeFrontpic
-	dba_pic ButterfreeBackpic
-	dba_pic WeedleFrontpic
-	dba_pic WeedleBackpic
-	dba_pic KakunaFrontpic
-	dba_pic KakunaBackpic
-	dba_pic BeedrillFrontpic
-	dba_pic BeedrillBackpic
-	dba_pic PidgeyFrontpic
-	dba_pic PidgeyBackpic
-	dba_pic PidgeottoFrontpic
-	dba_pic PidgeottoBackpic
-	dba_pic PidgeotFrontpic
-	dba_pic PidgeotBackpic
-	dba_pic RattataFrontpic
-	dba_pic RattataBackpic
-	dba_pic RaticateFrontpic
-	dba_pic RaticateBackpic
-	dba_pic SpearowFrontpic
-	dba_pic SpearowBackpic
-	dba_pic FearowFrontpic
-	dba_pic FearowBackpic
-	dba_pic EkansFrontpic
-	dba_pic EkansBackpic
-	dba_pic ArbokFrontpic
-	dba_pic ArbokBackpic
-	dba_pic PikachuFrontpic
-	dba_pic PikachuBackpic
-	dba_pic RaichuFrontpic
-	dba_pic RaichuBackpic
-	dba_pic SandshrewFrontpic
-	dba_pic SandshrewBackpic
-	dba_pic SandslashFrontpic
-	dba_pic SandslashBackpic
-	dba_pic NidoranFFrontpic
-	dba_pic NidoranFBackpic
-	dba_pic NidorinaFrontpic
-	dba_pic NidorinaBackpic
-	dba_pic NidoqueenFrontpic
-	dba_pic NidoqueenBackpic
-	dba_pic NidoranMFrontpic
-	dba_pic NidoranMBackpic
-	dba_pic NidorinoFrontpic
-	dba_pic NidorinoBackpic
-	dba_pic NidokingFrontpic
-	dba_pic NidokingBackpic
-	dba_pic ClefairyFrontpic
-	dba_pic ClefairyBackpic
-	dba_pic ClefableFrontpic
-	dba_pic ClefableBackpic
-	dba_pic VulpixFrontpic
-	dba_pic VulpixBackpic
-	dba_pic NinetalesFrontpic
-	dba_pic NinetalesBackpic
-	dba_pic JigglypuffFrontpic
-	dba_pic JigglypuffBackpic
-	dba_pic WigglytuffFrontpic
-	dba_pic WigglytuffBackpic
-	dba_pic ZubatFrontpic
-	dba_pic ZubatBackpic
-	dba_pic GolbatFrontpic
-	dba_pic GolbatBackpic
-	dba_pic OddishFrontpic
-	dba_pic OddishBackpic
-	dba_pic GloomFrontpic
-	dba_pic GloomBackpic
-	dba_pic VileplumeFrontpic
-	dba_pic VileplumeBackpic
-	dba_pic ParasFrontpic
-	dba_pic ParasBackpic
-	dba_pic ParasectFrontpic
-	dba_pic ParasectBackpic
-	dba_pic VenonatFrontpic
-	dba_pic VenonatBackpic
-	dba_pic VenomothFrontpic
-	dba_pic VenomothBackpic
-	dba_pic DiglettFrontpic
-	dba_pic DiglettBackpic
-	dba_pic DugtrioFrontpic
-	dba_pic DugtrioBackpic
-	dba_pic MeowthFrontpic
-	dba_pic MeowthBackpic
-	dba_pic PersianFrontpic
-	dba_pic PersianBackpic
-	dba_pic PsyduckFrontpic
-	dba_pic PsyduckBackpic
-	dba_pic GolduckFrontpic
-	dba_pic GolduckBackpic
-	dba_pic MankeyFrontpic
-	dba_pic MankeyBackpic
-	dba_pic PrimeapeFrontpic
-	dba_pic PrimeapeBackpic
-	dba_pic GrowlitheFrontpic
-	dba_pic GrowlitheBackpic
-	dba_pic ArcanineFrontpic
-	dba_pic ArcanineBackpic
-	dba_pic PoliwagFrontpic
-	dba_pic PoliwagBackpic
-	dba_pic PoliwhirlFrontpic
-	dba_pic PoliwhirlBackpic
-	dba_pic PoliwrathFrontpic
-	dba_pic PoliwrathBackpic
-	dba_pic AbraFrontpic
-	dba_pic AbraBackpic
-	dba_pic KadabraFrontpic
-	dba_pic KadabraBackpic
-	dba_pic AlakazamFrontpic
-	dba_pic AlakazamBackpic
-	dba_pic MachopFrontpic
-	dba_pic MachopBackpic
-	dba_pic MachokeFrontpic
-	dba_pic MachokeBackpic
-	dba_pic MachampFrontpic
-	dba_pic MachampBackpic
-	dba_pic BellsproutFrontpic
-	dba_pic BellsproutBackpic
-	dba_pic WeepinbellFrontpic
-	dba_pic WeepinbellBackpic
-	dba_pic VictreebelFrontpic
-	dba_pic VictreebelBackpic
-	dba_pic TentacoolFrontpic
-	dba_pic TentacoolBackpic
-	dba_pic TentacruelFrontpic
-	dba_pic TentacruelBackpic
-	dba_pic GeodudeFrontpic
-	dba_pic GeodudeBackpic
-	dba_pic GravelerFrontpic
-	dba_pic GravelerBackpic
-	dba_pic GolemFrontpic
-	dba_pic GolemBackpic
-	dba_pic PonytaFrontpic
-	dba_pic PonytaBackpic
-	dba_pic RapidashFrontpic
-	dba_pic RapidashBackpic
-	dba_pic SlowpokeFrontpic
-	dba_pic SlowpokeBackpic
-	dba_pic SlowbroFrontpic
-	dba_pic SlowbroBackpic
-	dba_pic MagnemiteFrontpic
-	dba_pic MagnemiteBackpic
-	dba_pic MagnetonFrontpic
-	dba_pic MagnetonBackpic
-	dba_pic FarfetchDFrontpic
-	dba_pic FarfetchDBackpic
-	dba_pic DoduoFrontpic
-	dba_pic DoduoBackpic
-	dba_pic DodrioFrontpic
-	dba_pic DodrioBackpic
-	dba_pic SeelFrontpic
-	dba_pic SeelBackpic
-	dba_pic DewgongFrontpic
-	dba_pic DewgongBackpic
-	dba_pic GrimerFrontpic
-	dba_pic GrimerBackpic
-	dba_pic MukFrontpic
-	dba_pic MukBackpic
-	dba_pic ShellderFrontpic
-	dba_pic ShellderBackpic
-	dba_pic CloysterFrontpic
-	dba_pic CloysterBackpic
-	dba_pic GastlyFrontpic
-	dba_pic GastlyBackpic
-	dba_pic HaunterFrontpic
-	dba_pic HaunterBackpic
-	dba_pic GengarFrontpic
-	dba_pic GengarBackpic
-	dba_pic OnixFrontpic
-	dba_pic OnixBackpic
-	dba_pic DrowzeeFrontpic
-	dba_pic DrowzeeBackpic
-	dba_pic HypnoFrontpic
-	dba_pic HypnoBackpic
-	dba_pic KrabbyFrontpic
-	dba_pic KrabbyBackpic
-	dba_pic KinglerFrontpic
-	dba_pic KinglerBackpic
-	dba_pic VoltorbFrontpic
-	dba_pic VoltorbBackpic
-	dba_pic ElectrodeFrontpic
-	dba_pic ElectrodeBackpic
-	dba_pic ExeggcuteFrontpic
-	dba_pic ExeggcuteBackpic
-	dba_pic ExeggutorFrontpic
-	dba_pic ExeggutorBackpic
-	dba_pic CuboneFrontpic
-	dba_pic CuboneBackpic
-	dba_pic MarowakFrontpic
-	dba_pic MarowakBackpic
-	dba_pic HitmonleeFrontpic
-	dba_pic HitmonleeBackpic
-	dba_pic HitmonchanFrontpic
-	dba_pic HitmonchanBackpic
-	dba_pic LickitungFrontpic
-	dba_pic LickitungBackpic
-	dba_pic KoffingFrontpic
-	dba_pic KoffingBackpic
-	dba_pic WeezingFrontpic
-	dba_pic WeezingBackpic
-	dba_pic RhyhornFrontpic
-	dba_pic RhyhornBackpic
-	dba_pic RhydonFrontpic
-	dba_pic RhydonBackpic
-	dba_pic ChanseyFrontpic
-	dba_pic ChanseyBackpic
-	dba_pic TangelaFrontpic
-	dba_pic TangelaBackpic
-	dba_pic KangaskhanFrontpic
-	dba_pic KangaskhanBackpic
-	dba_pic HorseaFrontpic
-	dba_pic HorseaBackpic
-	dba_pic SeadraFrontpic
-	dba_pic SeadraBackpic
-	dba_pic GoldeenFrontpic
-	dba_pic GoldeenBackpic
-	dba_pic SeakingFrontpic
-	dba_pic SeakingBackpic
-	dba_pic StaryuFrontpic
-	dba_pic StaryuBackpic
-	dba_pic StarmieFrontpic
-	dba_pic StarmieBackpic
-	dba_pic MrMimeFrontpic
-	dba_pic MrMimeBackpic
-	dba_pic ScytherFrontpic
-	dba_pic ScytherBackpic
-	dba_pic JynxFrontpic
-	dba_pic JynxBackpic
-	dba_pic ElectabuzzFrontpic
-	dba_pic ElectabuzzBackpic
-	dba_pic MagmarFrontpic
-	dba_pic MagmarBackpic
-	dba_pic PinsirFrontpic
-	dba_pic PinsirBackpic
-	dba_pic TaurosFrontpic
-	dba_pic TaurosBackpic
-	dba_pic MagikarpFrontpic
-	dba_pic MagikarpBackpic
-	dba_pic GyaradosFrontpic
-	dba_pic GyaradosBackpic
-	dba_pic LaprasFrontpic
-	dba_pic LaprasBackpic
-	dba_pic DittoFrontpic
-	dba_pic DittoBackpic
-	dba_pic EeveeFrontpic
-	dba_pic EeveeBackpic
-	dba_pic VaporeonFrontpic
-	dba_pic VaporeonBackpic
-	dba_pic JolteonFrontpic
-	dba_pic JolteonBackpic
-	dba_pic FlareonFrontpic
-	dba_pic FlareonBackpic
-	dba_pic PorygonFrontpic
-	dba_pic PorygonBackpic
-	dba_pic OmanyteFrontpic
-	dba_pic OmanyteBackpic
-	dba_pic OmastarFrontpic
-	dba_pic OmastarBackpic
-	dba_pic KabutoFrontpic
-	dba_pic KabutoBackpic
-	dba_pic KabutopsFrontpic
-	dba_pic KabutopsBackpic
-	dba_pic AerodactylFrontpic
-	dba_pic AerodactylBackpic
-	dba_pic SnorlaxFrontpic
-	dba_pic SnorlaxBackpic
-	dba_pic ArticunoFrontpic
-	dba_pic ArticunoBackpic
-	dba_pic ZapdosFrontpic
-	dba_pic ZapdosBackpic
-	dba_pic MoltresFrontpic
-	dba_pic MoltresBackpic
-	dba_pic DratiniFrontpic
-	dba_pic DratiniBackpic
-	dba_pic DragonairFrontpic
-	dba_pic DragonairBackpic
-	dba_pic DragoniteFrontpic
-	dba_pic DragoniteBackpic
-	dba_pic MewtwoFrontpic
-	dba_pic MewtwoBackpic
-	dba_pic MewFrontpic
-	dba_pic MewBackpic
-	dba_pic ChikoritaFrontpic
-	dba_pic ChikoritaBackpic
-	dba_pic BayleefFrontpic
-	dba_pic BayleefBackpic
-	dba_pic MeganiumFrontpic
-	dba_pic MeganiumBackpic
-	dba_pic CyndaquilFrontpic
-	dba_pic CyndaquilBackpic
-	dba_pic QuilavaFrontpic
-	dba_pic QuilavaBackpic
-	dba_pic TyphlosionFrontpic
-	dba_pic TyphlosionBackpic
-	dba_pic TotodileFrontpic
-	dba_pic TotodileBackpic
-	dba_pic CroconawFrontpic
-	dba_pic CroconawBackpic
-	dba_pic FeraligatrFrontpic
-	dba_pic FeraligatrBackpic
-	dba_pic SentretFrontpic
-	dba_pic SentretBackpic
-	dba_pic FurretFrontpic
-	dba_pic FurretBackpic
-	dba_pic HoothootFrontpic
-	dba_pic HoothootBackpic
-	dba_pic NoctowlFrontpic
-	dba_pic NoctowlBackpic
-	dba_pic LedybaFrontpic
-	dba_pic LedybaBackpic
-	dba_pic LedianFrontpic
-	dba_pic LedianBackpic
-	dba_pic SpinarakFrontpic
-	dba_pic SpinarakBackpic
-	dba_pic AriadosFrontpic
-	dba_pic AriadosBackpic
-	dba_pic CrobatFrontpic
-	dba_pic CrobatBackpic
-	dba_pic ChinchouFrontpic
-	dba_pic ChinchouBackpic
-	dba_pic LanturnFrontpic
-	dba_pic LanturnBackpic
-	dba_pic PichuFrontpic
-	dba_pic PichuBackpic
-	dba_pic CleffaFrontpic
-	dba_pic CleffaBackpic
-	dba_pic IgglybuffFrontpic
-	dba_pic IgglybuffBackpic
-	dba_pic TogepiFrontpic
-	dba_pic TogepiBackpic
-	dba_pic TogeticFrontpic
-	dba_pic TogeticBackpic
-	dba_pic NatuFrontpic
-	dba_pic NatuBackpic
-	dba_pic XatuFrontpic
-	dba_pic XatuBackpic
-	dba_pic MareepFrontpic
-	dba_pic MareepBackpic
-	dba_pic FlaaffyFrontpic
-	dba_pic FlaaffyBackpic
-	dba_pic AmpharosFrontpic
-	dba_pic AmpharosBackpic
-	dba_pic BellossomFrontpic
-	dba_pic BellossomBackpic
-	dba_pic MarillFrontpic
-	dba_pic MarillBackpic
-	dba_pic AzumarillFrontpic
-	dba_pic AzumarillBackpic
-	dba_pic SudowoodoFrontpic
-	dba_pic SudowoodoBackpic
-	dba_pic PolitoedFrontpic
-	dba_pic PolitoedBackpic
-	dba_pic HoppipFrontpic
-	dba_pic HoppipBackpic
-	dba_pic SkiploomFrontpic
-	dba_pic SkiploomBackpic
-	dba_pic JumpluffFrontpic
-	dba_pic JumpluffBackpic
-	dba_pic AipomFrontpic
-	dba_pic AipomBackpic
-	dba_pic SunkernFrontpic
-	dba_pic SunkernBackpic
-	dba_pic SunfloraFrontpic
-	dba_pic SunfloraBackpic
-	dba_pic YanmaFrontpic
-	dba_pic YanmaBackpic
-	dba_pic WooperFrontpic
-	dba_pic WooperBackpic
-	dba_pic QuagsireFrontpic
-	dba_pic QuagsireBackpic
-	dba_pic EspeonFrontpic
-	dba_pic EspeonBackpic
-	dba_pic UmbreonFrontpic
-	dba_pic UmbreonBackpic
-	dba_pic MurkrowFrontpic
-	dba_pic MurkrowBackpic
-	dba_pic SlowkingFrontpic
-	dba_pic SlowkingBackpic
-	dba_pic MisdreavusFrontpic
-	dba_pic MisdreavusBackpic
-
-	; Unown pics have their own table. See UnownPicPointers
-	dbw -1, -1
-	dbw -1, -1
-
-	dba_pic WobbuffetFrontpic
-	dba_pic WobbuffetBackpic
-	dba_pic GirafarigFrontpic
-	dba_pic GirafarigBackpic
-	dba_pic PinecoFrontpic
-	dba_pic PinecoBackpic
-	dba_pic ForretressFrontpic
-	dba_pic ForretressBackpic
-	dba_pic DunsparceFrontpic
-	dba_pic DunsparceBackpic
-	dba_pic GligarFrontpic
-	dba_pic GligarBackpic
-	dba_pic SteelixFrontpic
-	dba_pic SteelixBackpic
-	dba_pic SnubbullFrontpic
-	dba_pic SnubbullBackpic
-	dba_pic GranbullFrontpic
-	dba_pic GranbullBackpic
-	dba_pic QwilfishFrontpic
-	dba_pic QwilfishBackpic
-	dba_pic ScizorFrontpic
-	dba_pic ScizorBackpic
-	dba_pic ShuckleFrontpic
-	dba_pic ShuckleBackpic
-	dba_pic HeracrossFrontpic
-	dba_pic HeracrossBackpic
-	dba_pic SneaselFrontpic
-	dba_pic SneaselBackpic
-	dba_pic TeddiursaFrontpic
-	dba_pic TeddiursaBackpic
-	dba_pic UrsaringFrontpic
-	dba_pic UrsaringBackpic
-	dba_pic SlugmaFrontpic
-	dba_pic SlugmaBackpic
-	dba_pic MagcargoFrontpic
-	dba_pic MagcargoBackpic
-	dba_pic SwinubFrontpic
-	dba_pic SwinubBackpic
-	dba_pic PiloswineFrontpic
-	dba_pic PiloswineBackpic
-	dba_pic CorsolaFrontpic
-	dba_pic CorsolaBackpic
-	dba_pic RemoraidFrontpic
-	dba_pic RemoraidBackpic
-	dba_pic OctilleryFrontpic
-	dba_pic OctilleryBackpic
-	dba_pic DelibirdFrontpic
-	dba_pic DelibirdBackpic
-	dba_pic MantineFrontpic
-	dba_pic MantineBackpic
-	dba_pic SkarmoryFrontpic
-	dba_pic SkarmoryBackpic
-	dba_pic HoundourFrontpic
-	dba_pic HoundourBackpic
-	dba_pic HoundoomFrontpic
-	dba_pic HoundoomBackpic
-	dba_pic KingdraFrontpic
-	dba_pic KingdraBackpic
-	dba_pic PhanpyFrontpic
-	dba_pic PhanpyBackpic
-	dba_pic DonphanFrontpic
-	dba_pic DonphanBackpic
-	dba_pic Porygon2Frontpic
-	dba_pic Porygon2Backpic
-	dba_pic StantlerFrontpic
-	dba_pic StantlerBackpic
-	dba_pic SmeargleFrontpic
-	dba_pic SmeargleBackpic
-	dba_pic TyrogueFrontpic
-	dba_pic TyrogueBackpic
-	dba_pic HitmontopFrontpic
-	dba_pic HitmontopBackpic
-	dba_pic SmoochumFrontpic
-	dba_pic SmoochumBackpic
-	dba_pic ElekidFrontpic
-	dba_pic ElekidBackpic
-	dba_pic MagbyFrontpic
-	dba_pic MagbyBackpic
-	dba_pic MiltankFrontpic
-	dba_pic MiltankBackpic
-	dba_pic BlisseyFrontpic
-	dba_pic BlisseyBackpic
-	dba_pic RaikouFrontpic
-	dba_pic RaikouBackpic
-	dba_pic EnteiFrontpic
-	dba_pic EnteiBackpic
-	dba_pic SuicuneFrontpic
-	dba_pic SuicuneBackpic
-	dba_pic LarvitarFrontpic
-	dba_pic LarvitarBackpic
-	dba_pic PupitarFrontpic
-	dba_pic PupitarBackpic
-	dba_pic TyranitarFrontpic
-	dba_pic TyranitarBackpic
-	dba_pic LugiaFrontpic
-	dba_pic LugiaBackpic
-	dba_pic HoOhFrontpic
-	dba_pic HoOhBackpic
-	dba_pic CelebiFrontpic
-	dba_pic CelebiBackpic
-	dbw -1, -1 ; unused
-	dbw -1, -1 ; unused
-	dba_pic EggPic
-	dbw -1, -1 ; unused
--- a/gfx/pokemon/unown_pic_pointers.asm
+++ /dev/null
@@ -1,54 +1,0 @@
-UnownPicPointers::
-; entries correspond to Unown letters, two apiece
-	dba_pic UnownAFrontpic
-	dba_pic UnownABackpic
-	dba_pic UnownBFrontpic
-	dba_pic UnownBBackpic
-	dba_pic UnownCFrontpic
-	dba_pic UnownCBackpic
-	dba_pic UnownDFrontpic
-	dba_pic UnownDBackpic
-	dba_pic UnownEFrontpic
-	dba_pic UnownEBackpic
-	dba_pic UnownFFrontpic
-	dba_pic UnownFBackpic
-	dba_pic UnownGFrontpic
-	dba_pic UnownGBackpic
-	dba_pic UnownHFrontpic
-	dba_pic UnownHBackpic
-	dba_pic UnownIFrontpic
-	dba_pic UnownIBackpic
-	dba_pic UnownJFrontpic
-	dba_pic UnownJBackpic
-	dba_pic UnownKFrontpic
-	dba_pic UnownKBackpic
-	dba_pic UnownLFrontpic
-	dba_pic UnownLBackpic
-	dba_pic UnownMFrontpic
-	dba_pic UnownMBackpic
-	dba_pic UnownNFrontpic
-	dba_pic UnownNBackpic
-	dba_pic UnownOFrontpic
-	dba_pic UnownOBackpic
-	dba_pic UnownPFrontpic
-	dba_pic UnownPBackpic
-	dba_pic UnownQFrontpic
-	dba_pic UnownQBackpic
-	dba_pic UnownRFrontpic
-	dba_pic UnownRBackpic
-	dba_pic UnownSFrontpic
-	dba_pic UnownSBackpic
-	dba_pic UnownTFrontpic
-	dba_pic UnownTBackpic
-	dba_pic UnownUFrontpic
-	dba_pic UnownUBackpic
-	dba_pic UnownVFrontpic
-	dba_pic UnownVBackpic
-	dba_pic UnownWFrontpic
-	dba_pic UnownWBackpic
-	dba_pic UnownXFrontpic
-	dba_pic UnownXBackpic
-	dba_pic UnownYFrontpic
-	dba_pic UnownYBackpic
-	dba_pic UnownZFrontpic
-	dba_pic UnownZBackpic
--- a/gfx/trainer_palettes.asm
+++ /dev/null
@@ -1,76 +1,0 @@
-TrainerPalettes: ; b0ce
-; entries correspond to trainer classes
-
-PlayerPalette: ; b0ce
-; Chris uses the same colors as Cal
-INCLUDE "gfx/trainers/cal.pal"
-KrisPalette: ; b0d0
-; Kris shares Falkner's palette
-INCLUDE "gfx/trainers/falkner.pal"
-INCLUDE "gfx/trainers/whitney.pal"
-INCLUDE "gfx/trainers/bugsy.pal"
-INCLUDE "gfx/trainers/morty.pal"
-INCLUDE "gfx/trainers/pryce.pal"
-INCLUDE "gfx/trainers/jasmine.pal"
-INCLUDE "gfx/trainers/chuck.pal"
-INCLUDE "gfx/trainers/clair.pal"
-INCLUDE "gfx/trainers/rival1.pal"
-INCLUDE "gfx/trainers/oak.pal"
-INCLUDE "gfx/trainers/will.pal"
-INCLUDE "gfx/trainers/cal.pal"
-INCLUDE "gfx/trainers/bruno.pal"
-INCLUDE "gfx/trainers/karen.pal"
-INCLUDE "gfx/trainers/koga.pal"
-INCLUDE "gfx/trainers/champion.pal"
-INCLUDE "gfx/trainers/brock.pal"
-INCLUDE "gfx/trainers/misty.pal"
-INCLUDE "gfx/trainers/lt_surge.pal"
-INCLUDE "gfx/trainers/scientist.pal"
-INCLUDE "gfx/trainers/erika.pal"
-INCLUDE "gfx/trainers/youngster.pal"
-INCLUDE "gfx/trainers/schoolboy.pal"
-INCLUDE "gfx/trainers/bird_keeper.pal"
-INCLUDE "gfx/trainers/lass.pal"
-INCLUDE "gfx/trainers/janine.pal"
-INCLUDE "gfx/trainers/cooltrainer_m.pal"
-INCLUDE "gfx/trainers/cooltrainer_f.pal"
-INCLUDE "gfx/trainers/beauty.pal"
-INCLUDE "gfx/trainers/pokemaniac.pal"
-INCLUDE "gfx/trainers/grunt_m.pal"
-INCLUDE "gfx/trainers/gentleman.pal"
-INCLUDE "gfx/trainers/skier.pal"
-INCLUDE "gfx/trainers/teacher.pal"
-INCLUDE "gfx/trainers/sabrina.pal"
-INCLUDE "gfx/trainers/bug_catcher.pal"
-INCLUDE "gfx/trainers/fisher.pal"
-INCLUDE "gfx/trainers/swimmer_m.pal"
-INCLUDE "gfx/trainers/swimmer_f.pal"
-INCLUDE "gfx/trainers/sailor.pal"
-INCLUDE "gfx/trainers/super_nerd.pal"
-INCLUDE "gfx/trainers/rival2.pal"
-INCLUDE "gfx/trainers/guitarist.pal"
-INCLUDE "gfx/trainers/hiker.pal"
-INCLUDE "gfx/trainers/biker.pal"
-INCLUDE "gfx/trainers/blaine.pal"
-INCLUDE "gfx/trainers/burglar.pal"
-INCLUDE "gfx/trainers/firebreather.pal"
-INCLUDE "gfx/trainers/juggler.pal"
-INCLUDE "gfx/trainers/blackbelt_t.pal"
-INCLUDE "gfx/trainers/executive_m.pal"
-INCLUDE "gfx/trainers/psychic_t.pal"
-INCLUDE "gfx/trainers/picnicker.pal"
-INCLUDE "gfx/trainers/camper.pal"
-INCLUDE "gfx/trainers/executive_f.pal"
-INCLUDE "gfx/trainers/sage.pal"
-INCLUDE "gfx/trainers/medium.pal"
-INCLUDE "gfx/trainers/boarder.pal"
-INCLUDE "gfx/trainers/pokefan_m.pal"
-INCLUDE "gfx/trainers/kimono_girl.pal"
-INCLUDE "gfx/trainers/twins.pal"
-INCLUDE "gfx/trainers/pokefan_f.pal"
-INCLUDE "gfx/trainers/red.pal"
-INCLUDE "gfx/trainers/blue.pal"
-INCLUDE "gfx/trainers/officer.pal"
-INCLUDE "gfx/trainers/grunt_f.pal"
-INCLUDE "gfx/trainers/mysticalman.pal"
-; b1de
--- a/gfx/trainer_pic_pointers.asm
+++ /dev/null
@@ -1,69 +1,0 @@
-TrainerPicPointers::
-; entries correspond to trainer classes (see constants/trainer_constants.asm)
-	dba_pic FalknerPic
-	dba_pic WhitneyPic
-	dba_pic BugsyPic
-	dba_pic MortyPic
-	dba_pic PrycePic
-	dba_pic JasminePic
-	dba_pic ChuckPic
-	dba_pic ClairPic
-	dba_pic Rival1Pic
-	dba_pic PokemonProfPic
-	dba_pic WillPic
-	dba_pic CalPic
-	dba_pic BrunoPic
-	dba_pic KarenPic
-	dba_pic KogaPic
-	dba_pic ChampionPic
-	dba_pic BrockPic
-	dba_pic MistyPic
-	dba_pic LtSurgePic
-	dba_pic ScientistPic
-	dba_pic ErikaPic
-	dba_pic YoungsterPic
-	dba_pic SchoolboyPic
-	dba_pic BirdKeeperPic
-	dba_pic LassPic
-	dba_pic JaninePic
-	dba_pic CooltrainermPic
-	dba_pic CooltrainerfPic
-	dba_pic BeautyPic
-	dba_pic PokemaniacPic
-	dba_pic GruntmPic
-	dba_pic GentlemanPic
-	dba_pic SkierPic
-	dba_pic TeacherPic
-	dba_pic SabrinaPic
-	dba_pic BugCatcherPic
-	dba_pic FisherPic
-	dba_pic SwimmermPic
-	dba_pic SwimmerfPic
-	dba_pic SailorPic
-	dba_pic SuperNerdPic
-	dba_pic Rival2Pic
-	dba_pic GuitaristPic
-	dba_pic HikerPic
-	dba_pic BikerPic
-	dba_pic BlainePic
-	dba_pic BurglarPic
-	dba_pic FirebreatherPic
-	dba_pic JugglerPic
-	dba_pic BlackbeltTPic
-	dba_pic ExecutivemPic
-	dba_pic PsychicTPic
-	dba_pic PicnickerPic
-	dba_pic CamperPic
-	dba_pic ExecutivefPic
-	dba_pic SagePic
-	dba_pic MediumPic
-	dba_pic BoarderPic
-	dba_pic PokefanmPic
-	dba_pic KimonoGirlPic
-	dba_pic TwinsPic
-	dba_pic PokefanfPic
-	dba_pic RedPic
-	dba_pic BluePic
-	dba_pic OfficerPic
-	dba_pic GruntfPic
-	dba_pic MysticalmanPic
--- a/macros.asm
+++ b/macros.asm
@@ -11,13 +11,13 @@
 
 INCLUDE "macros/scripts/audio.asm"
 INCLUDE "macros/scripts/maps.asm"
-INCLUDE "macros/scripts/event.asm"
+INCLUDE "macros/scripts/events.asm"
 INCLUDE "macros/scripts/text.asm"
 INCLUDE "macros/scripts/movement.asm"
 INCLUDE "macros/scripts/effect_commands.asm"
-INCLUDE "macros/scripts/move_anim.asm"
-INCLUDE "macros/scripts/trade_anim.asm"
-INCLUDE "macros/scripts/gfx_anim.asm"
+INCLUDE "macros/scripts/battle_anims.asm"
+INCLUDE "macros/scripts/trade_anims.asm"
+INCLUDE "macros/scripts/gfx_anims.asm"
 
 percent EQUS "* $ff / 100"
 
--- /dev/null
+++ b/macros/scripts/battle_anims.asm
@@ -1,0 +1,294 @@
+anim_wait: macro
+if \1 >= $d0
+	flip out
+endc
+	db \1
+	endm
+
+; BattleAnimCommands indexes (see engine/battle_anims/anim_commands.asm)
+	enum_start $d0
+
+	enum anim_obj_command ; $d0
+anim_obj: macro
+	db anim_obj_command
+	db \1 ; obj
+	db (\2 << 3) + \3 ; x
+	db (\4 << 3) + \5 ; y
+	db \6 ; param
+	endm
+
+	enum anim_1gfx_command ; $d1
+anim_1gfx: macro
+	db anim_1gfx_command
+	db \1 ; gfx1
+	endm
+
+	enum anim_2gfx_command ; $d2
+anim_2gfx: macro
+	db anim_2gfx_command
+	db \1 ; gfx1
+	db \2 ; gfx2
+	endm
+
+	enum anim_3gfx_command ; $d3
+anim_3gfx: macro
+	db anim_3gfx_command
+	db \1 ; gfx1
+	db \2 ; gfx2
+	db \3 ; gfx3
+	endm
+
+	enum anim_4gfx_command ; $d4
+anim_4gfx: macro
+	db anim_4gfx_command
+	db \1 ; gfx1
+	db \2 ; gfx2
+	db \3 ; gfx3
+	db \4 ; gfx4
+	endm
+
+	enum anim_5gfx_command ; $d5
+anim_5gfx: macro
+	db anim_5gfx_command
+	db \1 ; gfx1
+	db \2 ; gfx2
+	db \3 ; gfx3
+	db \4 ; gfx4
+	db \5 ; gfx5
+	endm
+
+	enum anim_incobj_command ; $d6
+anim_incobj: macro
+	db anim_incobj_command
+	db \1 ; id
+	endm
+
+	enum anim_setobj_command ; $d7
+anim_setobj: macro
+	db anim_setobj_command
+	db \1 ; id
+	db \2 ; obj
+	endm
+
+	enum anim_incbgeffect_command ; $d8
+anim_incbgeffect: macro
+	db anim_incbgeffect_command
+	db \1 ; effect
+	endm
+
+	enum anim_enemyfeetobj_command ; $d9
+anim_enemyfeetobj: macro
+	db anim_enemyfeetobj_command
+	endm
+
+	enum anim_playerheadobj_command ; $da
+anim_playerheadobj: macro
+	db anim_playerheadobj_command
+	endm
+
+	enum anim_checkpokeball_command ; $db
+anim_checkpokeball: macro
+	db anim_checkpokeball_command
+	endm
+
+	enum anim_transform_command ; $dc
+anim_transform: macro
+	db anim_transform_command
+	endm
+
+	enum anim_raisesub_command ; $dd
+anim_raisesub: macro
+	db anim_raisesub_command
+	endm
+
+	enum anim_dropsub_command ; $de
+anim_dropsub: macro
+	db anim_dropsub_command
+	endm
+
+	enum anim_resetobp0_command ; $df
+anim_resetobp0: macro
+	db anim_resetobp0_command
+	endm
+
+	enum anim_sound_command ; $e0
+anim_sound: macro
+	db anim_sound_command
+	db (\1 << 2) | \2 ; duration, tracks
+	db \3 ; id
+	endm
+
+	enum anim_cry_command ; $e1
+anim_cry: macro
+	db anim_cry_command
+	db \1 ; pitch
+	endm
+
+	enum anim_minimizeopp_command ; $e2
+anim_minimizeopp: macro
+	db anim_minimizeopp_command
+	endm
+
+	enum anim_oamon_command ; $e3
+anim_oamon: macro
+	db anim_oamon_command
+	endm
+
+	enum anim_oamoff_command ; $e4
+anim_oamoff: macro
+	db anim_oamoff_command
+	endm
+
+	enum anim_clearobjs_command ; $e5
+anim_clearobjs: macro
+	db anim_clearobjs_command
+	endm
+
+	enum anim_beatup_command ; $e6
+anim_beatup: macro
+	db anim_beatup_command
+	endm
+
+	enum anim_0xe7_command ; $e7
+anim_0xe7: macro
+	db anim_0xe7_command
+	endm
+
+	enum anim_updateactorpic_command ; $e8
+anim_updateactorpic: macro
+	db anim_updateactorpic_command
+	endm
+
+	enum anim_minimize_command ; $e9
+anim_minimize: macro
+	db anim_minimize_command
+	endm
+
+	enum anim_0xea_command ; $ea
+anim_0xea: macro
+	db anim_0xea_command
+	endm
+
+	enum anim_0xeb_command ; $eb
+anim_0xeb: macro
+	db anim_0xeb_command
+	endm
+
+	enum anim_0xec_command ; $ec
+anim_0xec: macro
+	db anim_0xec_command
+	endm
+
+	enum anim_0xed_command ; $ed
+anim_0xed: macro
+	db anim_0xed_command
+	endm
+
+	enum anim_if_param_and_command ; $ee
+anim_if_param_and: macro
+	db anim_if_param_and_command
+	db \1 ; value
+	dw \2 ; address
+	endm
+
+	enum anim_jumpuntil_command ; $ef
+anim_jumpuntil: macro
+	db anim_jumpuntil_command
+	dw \1 ; address
+	endm
+
+	enum anim_bgeffect_command ; $f0
+anim_bgeffect: macro
+	db anim_bgeffect_command
+	db \1 ; effect
+	db \2 ; unknown
+	db \3 ; unknown
+	db \4 ; unknown
+	endm
+
+	enum anim_bgp_command ; $f1
+anim_bgp: macro
+	db anim_bgp_command
+	db \1 ; colors
+	endm
+
+	enum anim_obp0_command ; $f2
+anim_obp0: macro
+	db anim_obp0_command
+	db \1 ; colors
+	endm
+
+	enum anim_obp1_command ; $f3
+anim_obp1: macro
+	db anim_obp1_command
+	db \1 ; colors
+	endm
+
+	enum anim_clearsprites_command ; $f4
+anim_clearsprites: macro
+	db anim_clearsprites_command
+	endm
+
+	enum anim_0xf5_command ; $f5
+anim_0xf5: macro
+	db anim_0xf5_command
+	endm
+
+	enum anim_0xf6_command ; $f6
+anim_0xf6: macro
+	db anim_0xf6_command
+	endm
+
+	enum anim_0xf7_command ; $f7
+anim_0xf7: macro
+	db anim_0xf7_command
+	endm
+
+	enum anim_if_param_equal_command ; $f8
+anim_if_param_equal: macro
+	db anim_if_param_equal_command
+	db \1 ; value
+	dw \2 ; address
+	endm
+
+	enum anim_setvar_command ; $f9
+anim_setvar: macro
+	db anim_setvar_command
+	db \1 ; value
+	endm
+
+	enum anim_incvar_command ; $fa
+anim_incvar: macro
+	db anim_incvar_command
+	endm
+
+	enum anim_if_var_equal_command ; $fb
+anim_if_var_equal: macro
+	db anim_if_var_equal_command
+	db \1 ; value
+	dw \2 ; address
+	endm
+
+	enum anim_jump_command ; $fc
+anim_jump: macro
+	db anim_jump_command
+	dw \1 ; address
+	endm
+
+	enum anim_loop_command ; $fd
+anim_loop: macro
+	db anim_loop_command
+	db \1 ; count
+	dw \2 ; address
+	endm
+
+	enum anim_call_command ; $fe
+anim_call: macro
+	db anim_call_command
+	dw \1 ; address
+	endm
+
+	enum anim_ret_command ; $ff
+anim_ret: macro
+	db anim_ret_command
+	endm
--- a/macros/scripts/event.asm
+++ /dev/null
@@ -1,1069 +1,0 @@
-; ScriptCommandTable indexes (see engine/scripting.asm)
-	enum_start
-
-	enum scall_command ; $00
-scall: macro
-	db scall_command
-	dw \1 ; pointer
-	endm
-
-	enum farscall_command ; $01
-farscall: macro
-	db farscall_command
-	dba \1
-	endm
-
-	enum ptcall_command ; $02
-ptcall: macro
-	db ptcall_command
-	dw \1 ; pointer
-	endm
-
-	enum jump_command ; $03
-jump: macro
-	db jump_command
-	dw \1 ; pointer
-	endm
-
-	enum farjump_command ; $04
-farjump: macro
-	db farjump_command
-	dba \1
-	endm
-
-	enum ptjump_command ; $05
-ptjump: macro
-	db ptjump_command
-	dw \1 ; pointer
-	endm
-
-	enum if_equal_command ; $06
-if_equal: macro
-	db if_equal_command
-	db \1 ; byte
-	dw \2 ; pointer
-	endm
-
-	enum if_not_equal_command ; $07
-if_not_equal: macro
-	db if_not_equal_command
-	db \1 ; byte
-	dw \2 ; pointer
-	endm
-
-	enum iffalse_command ; $08
-iffalse: macro
-	db iffalse_command
-	dw \1 ; pointer
-	endm
-
-	enum iftrue_command ; $09
-iftrue: macro
-	db iftrue_command
-	dw \1 ; pointer
-	endm
-
-	enum if_greater_than_command ; $0a
-if_greater_than: macro
-	db if_greater_than_command
-	db \1 ; byte
-	dw \2 ; pointer
-	endm
-
-	enum if_less_than_command ; $0b
-if_less_than: macro
-	db if_less_than_command
-	db \1 ; byte
-	dw \2 ; pointer
-	endm
-
-	enum jumpstd_command ; $0c
-jumpstd: macro
-	db jumpstd_command
-	dw \1 ; predefined_script
-	endm
-
-	enum callstd_command ; $0d
-callstd: macro
-	db callstd_command
-	dw \1 ; predefined_script
-	endm
-
-	enum callasm_command ; $0e
-callasm: macro
-	db callasm_command
-	dba \1
-	endm
-
-	enum special_command ; $0f
-special: macro
-	db special_command
-	dw (\1Special - SpecialsPointers) / 3
-	endm
-
-add_special: MACRO
-\1Special::
-	dba \1
-ENDM
-
-	enum ptcallasm_command ; $10
-ptcallasm: macro
-	db ptcallasm_command
-	dw \1 ; asm
-	endm
-
-	enum checkmapscene_command ; $11
-checkmapscene: macro
-	db checkmapscene_command
-	map \1 ; map
-	endm
-
-	enum setmapscene_command ; $12
-setmapscene: macro
-	db setmapscene_command
-	map \1 ; map
-	db \2 ; scene_id
-	endm
-
-	enum checkscene_command ; $13
-checkscene: macro
-	db checkscene_command
-	endm
-
-	enum setscene_command ; $14
-setscene: macro
-	db setscene_command
-	db \1 ; scene_id
-	endm
-
-	enum writebyte_command ; $15
-writebyte: macro
-	db writebyte_command
-	db \1 ; value
-	endm
-
-	enum addvar_command ; $16
-addvar: macro
-	db addvar_command
-	db \1 ; value
-	endm
-
-	enum random_command ; $17
-random: macro
-	db random_command
-	db \1 ; input
-	endm
-
-	enum checkver_command ; $18
-checkver: macro
-	db checkver_command
-	endm
-
-	enum copybytetovar_command ; $19
-copybytetovar: macro
-	db copybytetovar_command
-	dw \1 ; address
-	endm
-
-	enum copyvartobyte_command ; $1a
-copyvartobyte: macro
-	db copyvartobyte_command
-	dw \1 ; address
-	endm
-
-	enum loadvar_command ; $1b
-loadvar: macro
-	db loadvar_command
-	dw \1 ; address
-	db \2 ; value
-	endm
-
-	enum checkcode_command ; $1c
-checkcode: macro
-	db checkcode_command
-	db \1 ; variable_id
-	endm
-
-	enum writevarcode_command ; $1d
-writevarcode: macro
-	db writevarcode_command
-	db \1 ; variable_id
-	endm
-
-	enum writecode_command ; $1e
-writecode: macro
-	db writecode_command
-	db \1 ; variable_id
-	db \2 ; value
-	endm
-
-	enum giveitem_command ; $1f
-giveitem: macro
-	db giveitem_command
-	db \1 ; item
-if _NARG == 2
-	db \2 ; quantity
-else
-	db 1
-endc
-	endm
-
-	enum takeitem_command ; $20
-takeitem: macro
-	db takeitem_command
-	db \1 ; item
-if _NARG == 2
-	db \2 ; quantity
-else
-	db 1
-endc
-	endm
-
-	enum checkitem_command ; $21
-checkitem: macro
-	db checkitem_command
-	db \1 ; item
-	endm
-
-	enum givemoney_command ; $22
-givemoney: macro
-	db givemoney_command
-	db \1 ; account
-	dt \2 ; money
-	endm
-
-	enum takemoney_command ; $23
-takemoney: macro
-	db takemoney_command
-	db \1 ; account
-	dt \2 ; money
-	endm
-
-	enum checkmoney_command ; $24
-checkmoney: macro
-	db checkmoney_command
-	db \1 ; account
-	dt \2 ; money
-	endm
-
-	enum givecoins_command ; $25
-givecoins: macro
-	db givecoins_command
-	dw \1 ; coins
-	endm
-
-	enum takecoins_command ; $26
-takecoins: macro
-	db takecoins_command
-	dw \1 ; coins
-	endm
-
-	enum checkcoins_command ; $27
-checkcoins: macro
-	db checkcoins_command
-	dw \1 ; coins
-	endm
-
-	enum addcellnum_command ; $28
-addcellnum: macro
-	db addcellnum_command
-	db \1 ; person
-	endm
-
-	enum delcellnum_command ; $29
-delcellnum: macro
-	db delcellnum_command
-	db \1 ; person
-	endm
-
-	enum checkcellnum_command ; $2a
-checkcellnum: macro
-	db checkcellnum_command
-	db \1 ; person
-	endm
-
-	enum checktime_command ; $2b
-checktime: macro
-	db checktime_command
-	db \1 ; time
-	endm
-
-checkmorn EQUS "checktime MORN"
-checkday  EQUS "checktime DAY"
-checknite EQUS "checktime NITE"
-
-	enum checkpoke_command ; $2c
-checkpoke: macro
-	db checkpoke_command
-	db \1 ; pkmn
-	endm
-
-	enum givepoke_command ; $2d
-givepoke: macro
-	db givepoke_command
-	db \1 ; pokemon
-	db \2 ; level
-	if _NARG >= 3
-	db \3 ; item
-	if _NARG >= 4
-	db \4 ; trainer
-	if \4
-	dw \5 ; trainer_name_pointer
-	dw \6 ; pkmn_nickname
-	endc
-	else
-	db 0
-	endc
-	else
-	db 0, 0
-	endc
-	endm
-
-	enum giveegg_command ; $2e
-giveegg: macro
-	db giveegg_command
-	db \1 ; pkmn
-	db \2 ; level
-	endm
-
-	enum givepokeitem_command ; $2f
-givepokeitem: macro
-	db givepokeitem_command
-	dw \1 ; pointer
-	endm
-
-	enum checkpokeitem_command ; $30
-checkpokeitem: macro
-	db checkpokeitem_command
-	dw \1 ; pointer
-	endm
-
-	enum checkevent_command ; $31
-checkevent: macro
-	db checkevent_command
-	dw \1 ; event_flag
-	endm
-
-	enum clearevent_command ; $32
-clearevent: macro
-	db clearevent_command
-	dw \1 ; event_flag
-	endm
-
-	enum setevent_command ; $33
-setevent: macro
-	db setevent_command
-	dw \1 ; event_flag
-	endm
-
-	enum checkflag_command ; $34
-checkflag: macro
-	db checkflag_command
-	dw \1 ; engine_flag
-	endm
-
-	enum clearflag_command ; $35
-clearflag: macro
-	db clearflag_command
-	dw \1 ; engine_flag
-	endm
-
-	enum setflag_command ; $36
-setflag: macro
-	db setflag_command
-	dw \1 ; engine_flag
-	endm
-
-	enum wildon_command ; $37
-wildon: macro
-	db wildon_command
-	endm
-
-	enum wildoff_command ; $38
-wildoff: macro
-	db wildoff_command
-	endm
-
-	enum xycompare_command ; $39
-xycompare: macro
-	db xycompare_command
-	dw \1 ; pointer
-	endm
-
-	enum warpmod_command ; $3a
-warpmod: macro
-	db warpmod_command
-	db \1 ; warp_id
-	map \2 ; map
-	endm
-
-	enum blackoutmod_command ; $3b
-blackoutmod: macro
-	db blackoutmod_command
-	map \1 ; map
-	endm
-
-	enum warp_command ; $3c
-warp: macro
-	db warp_command
-	map \1 ; map
-	db \2 ; x
-	db \3 ; y
-	endm
-
-	enum readmoney_command ; $3d
-readmoney: macro
-	db readmoney_command
-	db \1 ; account
-	db \2 ; memory
-	endm
-
-	enum readcoins_command ; $3e
-readcoins: macro
-	db readcoins_command
-	db \1 ; memory
-	endm
-
-	enum RAM2MEM_command ; $3f
-RAM2MEM: macro
-	db RAM2MEM_command
-	db \1 ; memory
-	endm
-
-	enum pokenamemem_command ; $40
-pokenamemem: macro
-	db pokenamemem_command
-	db \1 ; pokemon
-	db \2 ; memory
-	endm
-
-	enum itemtotext_command ; $41
-itemtotext: macro
-	db itemtotext_command
-	db \1 ; item
-	db \2 ; memory
-	endm
-
-	enum mapnametotext_command ; $42
-mapnametotext: macro
-	db mapnametotext_command
-	db \1 ; memory
-	endm
-
-	enum trainertotext_command ; $43
-trainertotext: macro
-	db trainertotext_command
-	db \1 ; trainer_id
-	db \2 ; trainer_group
-	db \3 ; memory
-	endm
-
-	enum stringtotext_command ; $44
-stringtotext: macro
-	db stringtotext_command
-	dw \1 ; text_pointer
-	db \2 ; memory
-	endm
-
-	enum itemnotify_command ; $45
-itemnotify: macro
-	db itemnotify_command
-	endm
-
-	enum pocketisfull_command ; $46
-pocketisfull: macro
-	db pocketisfull_command
-	endm
-
-	enum opentext_command ; $47
-opentext: macro
-	db opentext_command
-	endm
-
-	enum refreshscreen_command ; $48
-refreshscreen: macro
-	db refreshscreen_command
-	db \1 ; dummy
-	endm
-
-	enum closetext_command ; $49
-closetext: macro
-	db closetext_command
-	endm
-
-	enum loadbytec2cf_command ; $4a
-loadbytec2cf: macro
-	db loadbytec2cf_command
-	db \1 ; byte
-	endm
-
-	enum farwritetext_command ; $4b
-farwritetext: macro
-	db farwritetext_command
-	dba \1
-	endm
-
-	enum writetext_command ; $4c
-writetext: macro
-	db writetext_command
-	dw \1 ; text_pointer
-	endm
-
-	enum repeattext_command ; $4d
-repeattext: macro
-	db repeattext_command
-	db \1 ; byte
-	db \2 ; byte
-	endm
-
-	enum yesorno_command ; $4e
-yesorno: macro
-	db yesorno_command
-	endm
-
-	enum loadmenudata_command ; $4f
-loadmenudata: macro
-	db loadmenudata_command
-	dw \1 ; data
-	endm
-
-	enum closewindow_command ; $50
-closewindow: macro
-	db closewindow_command
-	endm
-
-	enum jumptextfaceplayer_command ; $51
-jumptextfaceplayer: macro
-	db jumptextfaceplayer_command
-	dw \1 ; text_pointer
-	endm
-
-; IF _CRYSTAL
-	enum farjumptext_command ; $52
-farjumptext: macro
-	db farjumptext_command
-	dba \1
-	endm
-; ENDC
-
-	enum jumptext_command ; $53
-jumptext: macro
-	db jumptext_command
-	dw \1 ; text_pointer
-	endm
-
-	enum waitbutton_command ; $54
-waitbutton: macro
-	db waitbutton_command
-	endm
-
-	enum buttonsound_command ; $55
-buttonsound: macro
-	db buttonsound_command
-	endm
-
-	enum pokepic_command ; $56
-pokepic: macro
-	db pokepic_command
-	db \1 ; pokemon
-	endm
-
-	enum closepokepic_command ; $57
-closepokepic: macro
-	db closepokepic_command
-	endm
-
-	enum _2dmenu_command ; $58
-_2dmenu: macro
-	db _2dmenu_command
-	endm
-
-	enum verticalmenu_command ; $59
-verticalmenu: macro
-	db verticalmenu_command
-	endm
-
-	enum loadpikachudata_command ; $5a
-loadpikachudata: macro
-	db loadpikachudata_command
-	endm
-
-	enum randomwildmon_command ; $5b
-randomwildmon: macro
-	db randomwildmon_command
-	endm
-
-	enum loadmemtrainer_command ; $5c
-loadmemtrainer: macro
-	db loadmemtrainer_command
-	endm
-
-	enum loadwildmon_command ; $5d
-loadwildmon: macro
-	db loadwildmon_command
-	db \1 ; pokemon
-	db \2 ; level
-	endm
-
-	enum loadtrainer_command ; $5e
-loadtrainer: macro
-	db loadtrainer_command
-	db \1 ; trainer_group
-	db \2 ; trainer_id
-	endm
-
-	enum startbattle_command ; $5f
-startbattle: macro
-	db startbattle_command
-	endm
-
-	enum reloadmapafterbattle_command ; $60
-reloadmapafterbattle: macro
-	db reloadmapafterbattle_command
-	endm
-
-	enum catchtutorial_command ; $61
-catchtutorial: macro
-	db catchtutorial_command
-	db \1 ; byte
-	endm
-
-	enum trainertext_command ; $62
-trainertext: macro
-	db trainertext_command
-	db \1 ; which_text
-	endm
-
-	enum trainerflagaction_command ; $63
-trainerflagaction: macro
-	db trainerflagaction_command
-	db \1 ; action
-	endm
-
-	enum winlosstext_command ; $64
-winlosstext: macro
-	db winlosstext_command
-	dw \1 ; win_text_pointer
-	dw \2 ; loss_text_pointer
-	endm
-
-	enum scripttalkafter_command ; $65
-scripttalkafter: macro
-	db scripttalkafter_command
-	endm
-
-	enum end_if_just_battled_command ; $66
-end_if_just_battled: macro
-	db end_if_just_battled_command
-	endm
-
-	enum check_just_battled_command ; $67
-check_just_battled: macro
-	db check_just_battled_command
-	endm
-
-	enum setlasttalked_command ; $68
-setlasttalked: macro
-	db setlasttalked_command
-	db \1 ; object id
-	endm
-
-	enum applymovement_command ; $69
-applymovement: macro
-	db applymovement_command
-	db \1 ; object id
-	dw \2 ; data
-	endm
-
-	enum applymovement2_command ; $6a
-applymovement2: macro
-	db applymovement2_command
-	dw \1 ; data
-	endm
-
-	enum faceplayer_command ; $6b
-faceplayer: macro
-	db faceplayer_command
-	endm
-
-	enum faceobject_command ; $6c
-faceobject: macro
-	db faceobject_command
-	db \1 ; object1
-	db \2 ; object2
-	endm
-
-	enum variablesprite_command ; $6d
-variablesprite: macro
-	db variablesprite_command
-	db \1 - SPRITE_VARS ; byte
-	db \2 ; sprite
-	endm
-
-	enum disappear_command ; $6e
-disappear: macro
-	db disappear_command
-	db \1 ; object id
-	endm
-
-	enum appear_command ; $6f
-appear: macro
-	db appear_command
-	db \1 ; object id
-	endm
-
-	enum follow_command ; $70
-follow: macro
-	db follow_command
-	db \1 ; object2
-	db \2 ; object1
-	endm
-
-	enum stopfollow_command ; $71
-stopfollow: macro
-	db stopfollow_command
-	endm
-
-	enum moveobject_command ; $72
-moveobject: macro
-	db moveobject_command
-	db \1 ; object id
-	db \2 ; x
-	db \3 ; y
-	endm
-
-	enum writeobjectxy_command ; $73
-writeobjectxy: macro
-	db writeobjectxy_command
-	db \1 ; object id
-	endm
-
-	enum loademote_command ; $74
-loademote: macro
-	db loademote_command
-	db \1 ; bubble
-	endm
-
-	enum showemote_command ; $75
-showemote: macro
-	db showemote_command
-	db \1 ; bubble
-	db \2 ; object id
-	db \3 ; time
-	endm
-
-	enum spriteface_command ; $76
-spriteface: macro
-	db spriteface_command
-	db \1 ; object id
-	db \2 ; facing
-	endm
-
-	enum follownotexact_command ; $77
-follownotexact: macro
-	db follownotexact_command
-	db \1 ; object2
-	db \2 ; object1
-	endm
-
-	enum earthquake_command ; $78
-earthquake: macro
-	db earthquake_command
-	db \1 ; param
-	endm
-
-	enum changemap_command ; $79
-changemap: macro
-	db changemap_command
-	db \1 ; map_bank
-	dw \2 ; map_data_pointer
-	endm
-
-	enum changeblock_command ; $7a
-changeblock: macro
-	db changeblock_command
-	db \1 ; x
-	db \2 ; y
-	db \3 ; block
-	endm
-
-	enum reloadmap_command ; $7b
-reloadmap: macro
-	db reloadmap_command
-	endm
-
-	enum reloadmappart_command ; $7c
-reloadmappart: macro
-	db reloadmappart_command
-	endm
-
-	enum writecmdqueue_command ; $7d
-writecmdqueue: macro
-	db writecmdqueue_command
-	dw \1 ; queue_pointer
-	endm
-
-	enum delcmdqueue_command ; $7e
-delcmdqueue: macro
-	db delcmdqueue_command
-	db \1 ; byte
-	endm
-
-	enum playmusic_command ; $7f
-playmusic: macro
-	db playmusic_command
-	dw \1 ; music_pointer
-	endm
-
-	enum encountermusic_command ; $80
-encountermusic: macro
-	db encountermusic_command
-	endm
-
-	enum musicfadeout_command ; $81
-musicfadeout: macro
-	db musicfadeout_command
-	dw \1 ; music
-	db \2 ; fadetime
-	endm
-
-	enum playmapmusic_command ; $82
-playmapmusic: macro
-	db playmapmusic_command
-	endm
-
-	enum dontrestartmapmusic_command ; $83
-dontrestartmapmusic: macro
-	db dontrestartmapmusic_command
-	endm
-
-	enum cry_command ; $84
-cry: macro
-	db cry_command
-	dw \1 ; cry_id
-	endm
-
-	enum playsound_command ; $85
-playsound: macro
-	db playsound_command
-	dw \1 ; sound_pointer
-	endm
-
-	enum waitsfx_command ; $86
-waitsfx: macro
-	db waitsfx_command
-	endm
-
-	enum warpsound_command ; $87
-warpsound: macro
-	db warpsound_command
-	endm
-
-	enum specialsound_command ; $88
-specialsound: macro
-	db specialsound_command
-	endm
-
-	enum passtoengine_command ; $89
-passtoengine: macro
-	db passtoengine_command
-	db \1 ; data_pointer
-	endm
-
-	enum newloadmap_command ; $8a
-newloadmap: macro
-	db newloadmap_command
-	db \1 ; which_method
-	endm
-
-	enum pause_command ; $8b
-pause: macro
-	db pause_command
-	db \1 ; length
-	endm
-
-	enum deactivatefacing_command ; $8c
-deactivatefacing: macro
-	db deactivatefacing_command
-	db \1 ; time
-	endm
-
-	enum priorityjump_command ; $8d
-priorityjump: macro
-	db priorityjump_command
-	dw \1 ; pointer
-	endm
-
-	enum warpcheck_command ; $8e
-warpcheck: macro
-	db warpcheck_command
-	endm
-
-	enum ptpriorityjump_command ; $8f
-ptpriorityjump: macro
-	db ptpriorityjump_command
-	dw \1 ; pointer
-	endm
-
-	enum return_command ; $90
-return: macro
-	db return_command
-	endm
-
-	enum end_command ; $91
-end: macro
-	db end_command
-	endm
-
-	enum reloadandreturn_command ; $92
-reloadandreturn: macro
-	db reloadandreturn_command
-	db \1 ; which_method
-	endm
-
-	enum end_all_command ; $93
-end_all: macro
-	db end_all_command
-	endm
-
-	enum pokemart_command ; $94
-pokemart: macro
-	db pokemart_command
-	db \1 ; dialog_id
-	dw \2 ; mart_id
-	endm
-
-	enum elevator_command ; $95
-elevator: macro
-	db elevator_command
-	dw \1 ; floor_list_pointer
-	endm
-
-	enum trade_command ; $96
-trade: macro
-	db trade_command
-	db \1 ; trade_id
-	endm
-
-	enum askforphonenumber_command ; $97
-askforphonenumber: macro
-	db askforphonenumber_command
-	db \1 ; number
-	endm
-
-	enum phonecall_command ; $98
-phonecall: macro
-	db phonecall_command
-	dw \1 ; caller_name
-	endm
-
-	enum hangup_command ; $99
-hangup: macro
-	db hangup_command
-	endm
-
-	enum describedecoration_command ; $9a
-describedecoration: macro
-	db describedecoration_command
-	db \1 ; byte
-	endm
-
-	enum fruittree_command ; $9b
-fruittree: macro
-	db fruittree_command
-	db \1 ; tree_id
-	endm
-
-	enum specialphonecall_command ; $9c
-specialphonecall: macro
-	db specialphonecall_command
-	dw \1 ; call_id
-	endm
-
-	enum checkphonecall_command ; $9d
-checkphonecall: macro
-	db checkphonecall_command
-	endm
-
-	enum verbosegiveitem_command ; $9e
-verbosegiveitem: macro
-	db verbosegiveitem_command
-	db \1 ; item
-if _NARG == 2
-	db \2 ; quantity
-else
-	db 1
-endc
-	endm
-
-	enum verbosegiveitem2_command ; $9f
-verbosegiveitem2: macro
-	db verbosegiveitem2_command
-	db \1 ; item
-	db \2 ; var
-	endm
-
-	enum swarm_command ; $a0
-swarm: macro
-	db swarm_command
-	db \1 ; flag
-	map \2 ; map
-	endm
-
-	enum halloffame_command ; $a1
-halloffame: macro
-	db halloffame_command
-	endm
-
-	enum credits_command ; $a2
-credits: macro
-	db credits_command
-	endm
-
-	enum warpfacing_command ; $a3
-warpfacing: macro
-	db warpfacing_command
-	db \1 ; facing
-	map \2 ; map
-	db \3 ; x
-	db \4 ; y
-	endm
-
-	enum battletowertext_command ; $a4
-battletowertext: macro
-	db battletowertext_command
-	db \1 ; memory
-	endm
-
-	enum landmarktotext_command ; $a5
-landmarktotext: macro
-	db landmarktotext_command
-	db \1 ; id
-	db \2 ; memory
-	endm
-
-	enum trainerclassname_command ; $a6
-trainerclassname: macro
-	db trainerclassname_command
-	db \1 ; id
-	db \2 ; memory
-	endm
-
-	enum name_command ; $a7
-name: macro
-	db name_command
-	db \1 ; type
-	db \2 ; id
-	db \3 ; memory
-	endm
-
-	enum wait_command ; $a8
-wait: macro
-	db wait_command
-	db \1 ; duration
-	endm
-
-	enum check_save_command ; $a9
-check_save: macro
-	db check_save_command
-	endm
--- /dev/null
+++ b/macros/scripts/events.asm
@@ -1,0 +1,1069 @@
+; ScriptCommandTable indexes (see engine/scripting.asm)
+	enum_start
+
+	enum scall_command ; $00
+scall: macro
+	db scall_command
+	dw \1 ; pointer
+	endm
+
+	enum farscall_command ; $01
+farscall: macro
+	db farscall_command
+	dba \1
+	endm
+
+	enum ptcall_command ; $02
+ptcall: macro
+	db ptcall_command
+	dw \1 ; pointer
+	endm
+
+	enum jump_command ; $03
+jump: macro
+	db jump_command
+	dw \1 ; pointer
+	endm
+
+	enum farjump_command ; $04
+farjump: macro
+	db farjump_command
+	dba \1
+	endm
+
+	enum ptjump_command ; $05
+ptjump: macro
+	db ptjump_command
+	dw \1 ; pointer
+	endm
+
+	enum if_equal_command ; $06
+if_equal: macro
+	db if_equal_command
+	db \1 ; byte
+	dw \2 ; pointer
+	endm
+
+	enum if_not_equal_command ; $07
+if_not_equal: macro
+	db if_not_equal_command
+	db \1 ; byte
+	dw \2 ; pointer
+	endm
+
+	enum iffalse_command ; $08
+iffalse: macro
+	db iffalse_command
+	dw \1 ; pointer
+	endm
+
+	enum iftrue_command ; $09
+iftrue: macro
+	db iftrue_command
+	dw \1 ; pointer
+	endm
+
+	enum if_greater_than_command ; $0a
+if_greater_than: macro
+	db if_greater_than_command
+	db \1 ; byte
+	dw \2 ; pointer
+	endm
+
+	enum if_less_than_command ; $0b
+if_less_than: macro
+	db if_less_than_command
+	db \1 ; byte
+	dw \2 ; pointer
+	endm
+
+	enum jumpstd_command ; $0c
+jumpstd: macro
+	db jumpstd_command
+	dw \1 ; predefined_script
+	endm
+
+	enum callstd_command ; $0d
+callstd: macro
+	db callstd_command
+	dw \1 ; predefined_script
+	endm
+
+	enum callasm_command ; $0e
+callasm: macro
+	db callasm_command
+	dba \1
+	endm
+
+	enum special_command ; $0f
+special: macro
+	db special_command
+	dw (\1Special - SpecialsPointers) / 3
+	endm
+
+add_special: MACRO
+\1Special::
+	dba \1
+ENDM
+
+	enum ptcallasm_command ; $10
+ptcallasm: macro
+	db ptcallasm_command
+	dw \1 ; asm
+	endm
+
+	enum checkmapscene_command ; $11
+checkmapscene: macro
+	db checkmapscene_command
+	map \1 ; map
+	endm
+
+	enum setmapscene_command ; $12
+setmapscene: macro
+	db setmapscene_command
+	map \1 ; map
+	db \2 ; scene_id
+	endm
+
+	enum checkscene_command ; $13
+checkscene: macro
+	db checkscene_command
+	endm
+
+	enum setscene_command ; $14
+setscene: macro
+	db setscene_command
+	db \1 ; scene_id
+	endm
+
+	enum writebyte_command ; $15
+writebyte: macro
+	db writebyte_command
+	db \1 ; value
+	endm
+
+	enum addvar_command ; $16
+addvar: macro
+	db addvar_command
+	db \1 ; value
+	endm
+
+	enum random_command ; $17
+random: macro
+	db random_command
+	db \1 ; input
+	endm
+
+	enum checkver_command ; $18
+checkver: macro
+	db checkver_command
+	endm
+
+	enum copybytetovar_command ; $19
+copybytetovar: macro
+	db copybytetovar_command
+	dw \1 ; address
+	endm
+
+	enum copyvartobyte_command ; $1a
+copyvartobyte: macro
+	db copyvartobyte_command
+	dw \1 ; address
+	endm
+
+	enum loadvar_command ; $1b
+loadvar: macro
+	db loadvar_command
+	dw \1 ; address
+	db \2 ; value
+	endm
+
+	enum checkcode_command ; $1c
+checkcode: macro
+	db checkcode_command
+	db \1 ; variable_id
+	endm
+
+	enum writevarcode_command ; $1d
+writevarcode: macro
+	db writevarcode_command
+	db \1 ; variable_id
+	endm
+
+	enum writecode_command ; $1e
+writecode: macro
+	db writecode_command
+	db \1 ; variable_id
+	db \2 ; value
+	endm
+
+	enum giveitem_command ; $1f
+giveitem: macro
+	db giveitem_command
+	db \1 ; item
+if _NARG == 2
+	db \2 ; quantity
+else
+	db 1
+endc
+	endm
+
+	enum takeitem_command ; $20
+takeitem: macro
+	db takeitem_command
+	db \1 ; item
+if _NARG == 2
+	db \2 ; quantity
+else
+	db 1
+endc
+	endm
+
+	enum checkitem_command ; $21
+checkitem: macro
+	db checkitem_command
+	db \1 ; item
+	endm
+
+	enum givemoney_command ; $22
+givemoney: macro
+	db givemoney_command
+	db \1 ; account
+	dt \2 ; money
+	endm
+
+	enum takemoney_command ; $23
+takemoney: macro
+	db takemoney_command
+	db \1 ; account
+	dt \2 ; money
+	endm
+
+	enum checkmoney_command ; $24
+checkmoney: macro
+	db checkmoney_command
+	db \1 ; account
+	dt \2 ; money
+	endm
+
+	enum givecoins_command ; $25
+givecoins: macro
+	db givecoins_command
+	dw \1 ; coins
+	endm
+
+	enum takecoins_command ; $26
+takecoins: macro
+	db takecoins_command
+	dw \1 ; coins
+	endm
+
+	enum checkcoins_command ; $27
+checkcoins: macro
+	db checkcoins_command
+	dw \1 ; coins
+	endm
+
+	enum addcellnum_command ; $28
+addcellnum: macro
+	db addcellnum_command
+	db \1 ; person
+	endm
+
+	enum delcellnum_command ; $29
+delcellnum: macro
+	db delcellnum_command
+	db \1 ; person
+	endm
+
+	enum checkcellnum_command ; $2a
+checkcellnum: macro
+	db checkcellnum_command
+	db \1 ; person
+	endm
+
+	enum checktime_command ; $2b
+checktime: macro
+	db checktime_command
+	db \1 ; time
+	endm
+
+checkmorn EQUS "checktime MORN"
+checkday  EQUS "checktime DAY"
+checknite EQUS "checktime NITE"
+
+	enum checkpoke_command ; $2c
+checkpoke: macro
+	db checkpoke_command
+	db \1 ; pkmn
+	endm
+
+	enum givepoke_command ; $2d
+givepoke: macro
+	db givepoke_command
+	db \1 ; pokemon
+	db \2 ; level
+	if _NARG >= 3
+	db \3 ; item
+	if _NARG >= 4
+	db \4 ; trainer
+	if \4
+	dw \5 ; trainer_name_pointer
+	dw \6 ; pkmn_nickname
+	endc
+	else
+	db 0
+	endc
+	else
+	db 0, 0
+	endc
+	endm
+
+	enum giveegg_command ; $2e
+giveegg: macro
+	db giveegg_command
+	db \1 ; pkmn
+	db \2 ; level
+	endm
+
+	enum givepokeitem_command ; $2f
+givepokeitem: macro
+	db givepokeitem_command
+	dw \1 ; pointer
+	endm
+
+	enum checkpokeitem_command ; $30
+checkpokeitem: macro
+	db checkpokeitem_command
+	dw \1 ; pointer
+	endm
+
+	enum checkevent_command ; $31
+checkevent: macro
+	db checkevent_command
+	dw \1 ; event_flag
+	endm
+
+	enum clearevent_command ; $32
+clearevent: macro
+	db clearevent_command
+	dw \1 ; event_flag
+	endm
+
+	enum setevent_command ; $33
+setevent: macro
+	db setevent_command
+	dw \1 ; event_flag
+	endm
+
+	enum checkflag_command ; $34
+checkflag: macro
+	db checkflag_command
+	dw \1 ; engine_flag
+	endm
+
+	enum clearflag_command ; $35
+clearflag: macro
+	db clearflag_command
+	dw \1 ; engine_flag
+	endm
+
+	enum setflag_command ; $36
+setflag: macro
+	db setflag_command
+	dw \1 ; engine_flag
+	endm
+
+	enum wildon_command ; $37
+wildon: macro
+	db wildon_command
+	endm
+
+	enum wildoff_command ; $38
+wildoff: macro
+	db wildoff_command
+	endm
+
+	enum xycompare_command ; $39
+xycompare: macro
+	db xycompare_command
+	dw \1 ; pointer
+	endm
+
+	enum warpmod_command ; $3a
+warpmod: macro
+	db warpmod_command
+	db \1 ; warp_id
+	map \2 ; map
+	endm
+
+	enum blackoutmod_command ; $3b
+blackoutmod: macro
+	db blackoutmod_command
+	map \1 ; map
+	endm
+
+	enum warp_command ; $3c
+warp: macro
+	db warp_command
+	map \1 ; map
+	db \2 ; x
+	db \3 ; y
+	endm
+
+	enum readmoney_command ; $3d
+readmoney: macro
+	db readmoney_command
+	db \1 ; account
+	db \2 ; memory
+	endm
+
+	enum readcoins_command ; $3e
+readcoins: macro
+	db readcoins_command
+	db \1 ; memory
+	endm
+
+	enum RAM2MEM_command ; $3f
+RAM2MEM: macro
+	db RAM2MEM_command
+	db \1 ; memory
+	endm
+
+	enum pokenamemem_command ; $40
+pokenamemem: macro
+	db pokenamemem_command
+	db \1 ; pokemon
+	db \2 ; memory
+	endm
+
+	enum itemtotext_command ; $41
+itemtotext: macro
+	db itemtotext_command
+	db \1 ; item
+	db \2 ; memory
+	endm
+
+	enum mapnametotext_command ; $42
+mapnametotext: macro
+	db mapnametotext_command
+	db \1 ; memory
+	endm
+
+	enum trainertotext_command ; $43
+trainertotext: macro
+	db trainertotext_command
+	db \1 ; trainer_id
+	db \2 ; trainer_group
+	db \3 ; memory
+	endm
+
+	enum stringtotext_command ; $44
+stringtotext: macro
+	db stringtotext_command
+	dw \1 ; text_pointer
+	db \2 ; memory
+	endm
+
+	enum itemnotify_command ; $45
+itemnotify: macro
+	db itemnotify_command
+	endm
+
+	enum pocketisfull_command ; $46
+pocketisfull: macro
+	db pocketisfull_command
+	endm
+
+	enum opentext_command ; $47
+opentext: macro
+	db opentext_command
+	endm
+
+	enum refreshscreen_command ; $48
+refreshscreen: macro
+	db refreshscreen_command
+	db \1 ; dummy
+	endm
+
+	enum closetext_command ; $49
+closetext: macro
+	db closetext_command
+	endm
+
+	enum loadbytec2cf_command ; $4a
+loadbytec2cf: macro
+	db loadbytec2cf_command
+	db \1 ; byte
+	endm
+
+	enum farwritetext_command ; $4b
+farwritetext: macro
+	db farwritetext_command
+	dba \1
+	endm
+
+	enum writetext_command ; $4c
+writetext: macro
+	db writetext_command
+	dw \1 ; text_pointer
+	endm
+
+	enum repeattext_command ; $4d
+repeattext: macro
+	db repeattext_command
+	db \1 ; byte
+	db \2 ; byte
+	endm
+
+	enum yesorno_command ; $4e
+yesorno: macro
+	db yesorno_command
+	endm
+
+	enum loadmenudata_command ; $4f
+loadmenudata: macro
+	db loadmenudata_command
+	dw \1 ; data
+	endm
+
+	enum closewindow_command ; $50
+closewindow: macro
+	db closewindow_command
+	endm
+
+	enum jumptextfaceplayer_command ; $51
+jumptextfaceplayer: macro
+	db jumptextfaceplayer_command
+	dw \1 ; text_pointer
+	endm
+
+; IF _CRYSTAL
+	enum farjumptext_command ; $52
+farjumptext: macro
+	db farjumptext_command
+	dba \1
+	endm
+; ENDC
+
+	enum jumptext_command ; $53
+jumptext: macro
+	db jumptext_command
+	dw \1 ; text_pointer
+	endm
+
+	enum waitbutton_command ; $54
+waitbutton: macro
+	db waitbutton_command
+	endm
+
+	enum buttonsound_command ; $55
+buttonsound: macro
+	db buttonsound_command
+	endm
+
+	enum pokepic_command ; $56
+pokepic: macro
+	db pokepic_command
+	db \1 ; pokemon
+	endm
+
+	enum closepokepic_command ; $57
+closepokepic: macro
+	db closepokepic_command
+	endm
+
+	enum _2dmenu_command ; $58
+_2dmenu: macro
+	db _2dmenu_command
+	endm
+
+	enum verticalmenu_command ; $59
+verticalmenu: macro
+	db verticalmenu_command
+	endm
+
+	enum loadpikachudata_command ; $5a
+loadpikachudata: macro
+	db loadpikachudata_command
+	endm
+
+	enum randomwildmon_command ; $5b
+randomwildmon: macro
+	db randomwildmon_command
+	endm
+
+	enum loadmemtrainer_command ; $5c
+loadmemtrainer: macro
+	db loadmemtrainer_command
+	endm
+
+	enum loadwildmon_command ; $5d
+loadwildmon: macro
+	db loadwildmon_command
+	db \1 ; pokemon
+	db \2 ; level
+	endm
+
+	enum loadtrainer_command ; $5e
+loadtrainer: macro
+	db loadtrainer_command
+	db \1 ; trainer_group
+	db \2 ; trainer_id
+	endm
+
+	enum startbattle_command ; $5f
+startbattle: macro
+	db startbattle_command
+	endm
+
+	enum reloadmapafterbattle_command ; $60
+reloadmapafterbattle: macro
+	db reloadmapafterbattle_command
+	endm
+
+	enum catchtutorial_command ; $61
+catchtutorial: macro
+	db catchtutorial_command
+	db \1 ; byte
+	endm
+
+	enum trainertext_command ; $62
+trainertext: macro
+	db trainertext_command
+	db \1 ; which_text
+	endm
+
+	enum trainerflagaction_command ; $63
+trainerflagaction: macro
+	db trainerflagaction_command
+	db \1 ; action
+	endm
+
+	enum winlosstext_command ; $64
+winlosstext: macro
+	db winlosstext_command
+	dw \1 ; win_text_pointer
+	dw \2 ; loss_text_pointer
+	endm
+
+	enum scripttalkafter_command ; $65
+scripttalkafter: macro
+	db scripttalkafter_command
+	endm
+
+	enum end_if_just_battled_command ; $66
+end_if_just_battled: macro
+	db end_if_just_battled_command
+	endm
+
+	enum check_just_battled_command ; $67
+check_just_battled: macro
+	db check_just_battled_command
+	endm
+
+	enum setlasttalked_command ; $68
+setlasttalked: macro
+	db setlasttalked_command
+	db \1 ; object id
+	endm
+
+	enum applymovement_command ; $69
+applymovement: macro
+	db applymovement_command
+	db \1 ; object id
+	dw \2 ; data
+	endm
+
+	enum applymovement2_command ; $6a
+applymovement2: macro
+	db applymovement2_command
+	dw \1 ; data
+	endm
+
+	enum faceplayer_command ; $6b
+faceplayer: macro
+	db faceplayer_command
+	endm
+
+	enum faceobject_command ; $6c
+faceobject: macro
+	db faceobject_command
+	db \1 ; object1
+	db \2 ; object2
+	endm
+
+	enum variablesprite_command ; $6d
+variablesprite: macro
+	db variablesprite_command
+	db \1 - SPRITE_VARS ; byte
+	db \2 ; sprite
+	endm
+
+	enum disappear_command ; $6e
+disappear: macro
+	db disappear_command
+	db \1 ; object id
+	endm
+
+	enum appear_command ; $6f
+appear: macro
+	db appear_command
+	db \1 ; object id
+	endm
+
+	enum follow_command ; $70
+follow: macro
+	db follow_command
+	db \1 ; object2
+	db \2 ; object1
+	endm
+
+	enum stopfollow_command ; $71
+stopfollow: macro
+	db stopfollow_command
+	endm
+
+	enum moveobject_command ; $72
+moveobject: macro
+	db moveobject_command
+	db \1 ; object id
+	db \2 ; x
+	db \3 ; y
+	endm
+
+	enum writeobjectxy_command ; $73
+writeobjectxy: macro
+	db writeobjectxy_command
+	db \1 ; object id
+	endm
+
+	enum loademote_command ; $74
+loademote: macro
+	db loademote_command
+	db \1 ; bubble
+	endm
+
+	enum showemote_command ; $75
+showemote: macro
+	db showemote_command
+	db \1 ; bubble
+	db \2 ; object id
+	db \3 ; time
+	endm
+
+	enum spriteface_command ; $76
+spriteface: macro
+	db spriteface_command
+	db \1 ; object id
+	db \2 ; facing
+	endm
+
+	enum follownotexact_command ; $77
+follownotexact: macro
+	db follownotexact_command
+	db \1 ; object2
+	db \2 ; object1
+	endm
+
+	enum earthquake_command ; $78
+earthquake: macro
+	db earthquake_command
+	db \1 ; param
+	endm
+
+	enum changemap_command ; $79
+changemap: macro
+	db changemap_command
+	db \1 ; map_bank
+	dw \2 ; map_data_pointer
+	endm
+
+	enum changeblock_command ; $7a
+changeblock: macro
+	db changeblock_command
+	db \1 ; x
+	db \2 ; y
+	db \3 ; block
+	endm
+
+	enum reloadmap_command ; $7b
+reloadmap: macro
+	db reloadmap_command
+	endm
+
+	enum reloadmappart_command ; $7c
+reloadmappart: macro
+	db reloadmappart_command
+	endm
+
+	enum writecmdqueue_command ; $7d
+writecmdqueue: macro
+	db writecmdqueue_command
+	dw \1 ; queue_pointer
+	endm
+
+	enum delcmdqueue_command ; $7e
+delcmdqueue: macro
+	db delcmdqueue_command
+	db \1 ; byte
+	endm
+
+	enum playmusic_command ; $7f
+playmusic: macro
+	db playmusic_command
+	dw \1 ; music_pointer
+	endm
+
+	enum encountermusic_command ; $80
+encountermusic: macro
+	db encountermusic_command
+	endm
+
+	enum musicfadeout_command ; $81
+musicfadeout: macro
+	db musicfadeout_command
+	dw \1 ; music
+	db \2 ; fadetime
+	endm
+
+	enum playmapmusic_command ; $82
+playmapmusic: macro
+	db playmapmusic_command
+	endm
+
+	enum dontrestartmapmusic_command ; $83
+dontrestartmapmusic: macro
+	db dontrestartmapmusic_command
+	endm
+
+	enum cry_command ; $84
+cry: macro
+	db cry_command
+	dw \1 ; cry_id
+	endm
+
+	enum playsound_command ; $85
+playsound: macro
+	db playsound_command
+	dw \1 ; sound_pointer
+	endm
+
+	enum waitsfx_command ; $86
+waitsfx: macro
+	db waitsfx_command
+	endm
+
+	enum warpsound_command ; $87
+warpsound: macro
+	db warpsound_command
+	endm
+
+	enum specialsound_command ; $88
+specialsound: macro
+	db specialsound_command
+	endm
+
+	enum passtoengine_command ; $89
+passtoengine: macro
+	db passtoengine_command
+	db \1 ; data_pointer
+	endm
+
+	enum newloadmap_command ; $8a
+newloadmap: macro
+	db newloadmap_command
+	db \1 ; which_method
+	endm
+
+	enum pause_command ; $8b
+pause: macro
+	db pause_command
+	db \1 ; length
+	endm
+
+	enum deactivatefacing_command ; $8c
+deactivatefacing: macro
+	db deactivatefacing_command
+	db \1 ; time
+	endm
+
+	enum priorityjump_command ; $8d
+priorityjump: macro
+	db priorityjump_command
+	dw \1 ; pointer
+	endm
+
+	enum warpcheck_command ; $8e
+warpcheck: macro
+	db warpcheck_command
+	endm
+
+	enum ptpriorityjump_command ; $8f
+ptpriorityjump: macro
+	db ptpriorityjump_command
+	dw \1 ; pointer
+	endm
+
+	enum return_command ; $90
+return: macro
+	db return_command
+	endm
+
+	enum end_command ; $91
+end: macro
+	db end_command
+	endm
+
+	enum reloadandreturn_command ; $92
+reloadandreturn: macro
+	db reloadandreturn_command
+	db \1 ; which_method
+	endm
+
+	enum end_all_command ; $93
+end_all: macro
+	db end_all_command
+	endm
+
+	enum pokemart_command ; $94
+pokemart: macro
+	db pokemart_command
+	db \1 ; dialog_id
+	dw \2 ; mart_id
+	endm
+
+	enum elevator_command ; $95
+elevator: macro
+	db elevator_command
+	dw \1 ; floor_list_pointer
+	endm
+
+	enum trade_command ; $96
+trade: macro
+	db trade_command
+	db \1 ; trade_id
+	endm
+
+	enum askforphonenumber_command ; $97
+askforphonenumber: macro
+	db askforphonenumber_command
+	db \1 ; number
+	endm
+
+	enum phonecall_command ; $98
+phonecall: macro
+	db phonecall_command
+	dw \1 ; caller_name
+	endm
+
+	enum hangup_command ; $99
+hangup: macro
+	db hangup_command
+	endm
+
+	enum describedecoration_command ; $9a
+describedecoration: macro
+	db describedecoration_command
+	db \1 ; byte
+	endm
+
+	enum fruittree_command ; $9b
+fruittree: macro
+	db fruittree_command
+	db \1 ; tree_id
+	endm
+
+	enum specialphonecall_command ; $9c
+specialphonecall: macro
+	db specialphonecall_command
+	dw \1 ; call_id
+	endm
+
+	enum checkphonecall_command ; $9d
+checkphonecall: macro
+	db checkphonecall_command
+	endm
+
+	enum verbosegiveitem_command ; $9e
+verbosegiveitem: macro
+	db verbosegiveitem_command
+	db \1 ; item
+if _NARG == 2
+	db \2 ; quantity
+else
+	db 1
+endc
+	endm
+
+	enum verbosegiveitem2_command ; $9f
+verbosegiveitem2: macro
+	db verbosegiveitem2_command
+	db \1 ; item
+	db \2 ; var
+	endm
+
+	enum swarm_command ; $a0
+swarm: macro
+	db swarm_command
+	db \1 ; flag
+	map \2 ; map
+	endm
+
+	enum halloffame_command ; $a1
+halloffame: macro
+	db halloffame_command
+	endm
+
+	enum credits_command ; $a2
+credits: macro
+	db credits_command
+	endm
+
+	enum warpfacing_command ; $a3
+warpfacing: macro
+	db warpfacing_command
+	db \1 ; facing
+	map \2 ; map
+	db \3 ; x
+	db \4 ; y
+	endm
+
+	enum battletowertext_command ; $a4
+battletowertext: macro
+	db battletowertext_command
+	db \1 ; memory
+	endm
+
+	enum landmarktotext_command ; $a5
+landmarktotext: macro
+	db landmarktotext_command
+	db \1 ; id
+	db \2 ; memory
+	endm
+
+	enum trainerclassname_command ; $a6
+trainerclassname: macro
+	db trainerclassname_command
+	db \1 ; id
+	db \2 ; memory
+	endm
+
+	enum name_command ; $a7
+name: macro
+	db name_command
+	db \1 ; type
+	db \2 ; id
+	db \3 ; memory
+	endm
+
+	enum wait_command ; $a8
+wait: macro
+	db wait_command
+	db \1 ; duration
+	endm
+
+	enum check_save_command ; $a9
+check_save: macro
+	db check_save_command
+	endm
--- a/macros/scripts/gfx_anim.asm
+++ /dev/null
@@ -1,44 +1,0 @@
-; pic + oam animations
-
-frame: macro
-	db \1
-x = \2
-if _NARG > 2
-rept _NARG +- 2
-x = x | (1 << (\3 + 1))
-	shift
-endr
-endc
-	db x
-	endm
-
-	enum_start $fc
-
-	enum delanim_command ; $fc
-delanim: macro ; used for oam
-	db delanim_command
-	endm
-
-	enum dorepeat_command ; $fd
-dorepeat: macro
-	db dorepeat_command
-	db \1 ; #
-	endm
-
-	enum setrepeat_command ; $fe
-setrepeat: macro
-	db setrepeat_command
-	db \1 ; #
-	endm
-
-	enum endanim_command ; $ff
-endanim: macro
-	db endanim_command
-	endm
-
-__enum__ = $fe
-
-	enum dorestart_command ; $fe
-dorestart: macro ; used for oam
-	db dorestart_command
-	endm
--- /dev/null
+++ b/macros/scripts/gfx_anims.asm
@@ -1,0 +1,44 @@
+; pic + oam animations
+
+frame: macro
+	db \1
+x = \2
+if _NARG > 2
+rept _NARG +- 2
+x = x | (1 << (\3 + 1))
+	shift
+endr
+endc
+	db x
+	endm
+
+	enum_start $fc
+
+	enum delanim_command ; $fc
+delanim: macro ; used for oam
+	db delanim_command
+	endm
+
+	enum dorepeat_command ; $fd
+dorepeat: macro
+	db dorepeat_command
+	db \1 ; #
+	endm
+
+	enum setrepeat_command ; $fe
+setrepeat: macro
+	db setrepeat_command
+	db \1 ; #
+	endm
+
+	enum endanim_command ; $ff
+endanim: macro
+	db endanim_command
+	endm
+
+__enum__ = $fe
+
+	enum dorestart_command ; $fe
+dorestart: macro ; used for oam
+	db dorestart_command
+	endm
--- a/macros/scripts/move_anim.asm
+++ /dev/null
@@ -1,294 +1,0 @@
-anim_wait: macro
-if \1 >= $d0
-	flip out
-endc
-	db \1
-	endm
-
-; BattleAnimCommands indexes (see engine/anims/anim_commands.asm)
-	enum_start $d0
-
-	enum anim_obj_command ; $d0
-anim_obj: macro
-	db anim_obj_command
-	db \1 ; obj
-	db (\2 << 3) + \3 ; x
-	db (\4 << 3) + \5 ; y
-	db \6 ; param
-	endm
-
-	enum anim_1gfx_command ; $d1
-anim_1gfx: macro
-	db anim_1gfx_command
-	db \1 ; gfx1
-	endm
-
-	enum anim_2gfx_command ; $d2
-anim_2gfx: macro
-	db anim_2gfx_command
-	db \1 ; gfx1
-	db \2 ; gfx2
-	endm
-
-	enum anim_3gfx_command ; $d3
-anim_3gfx: macro
-	db anim_3gfx_command
-	db \1 ; gfx1
-	db \2 ; gfx2
-	db \3 ; gfx3
-	endm
-
-	enum anim_4gfx_command ; $d4
-anim_4gfx: macro
-	db anim_4gfx_command
-	db \1 ; gfx1
-	db \2 ; gfx2
-	db \3 ; gfx3
-	db \4 ; gfx4
-	endm
-
-	enum anim_5gfx_command ; $d5
-anim_5gfx: macro
-	db anim_5gfx_command
-	db \1 ; gfx1
-	db \2 ; gfx2
-	db \3 ; gfx3
-	db \4 ; gfx4
-	db \5 ; gfx5
-	endm
-
-	enum anim_incobj_command ; $d6
-anim_incobj: macro
-	db anim_incobj_command
-	db \1 ; id
-	endm
-
-	enum anim_setobj_command ; $d7
-anim_setobj: macro
-	db anim_setobj_command
-	db \1 ; id
-	db \2 ; obj
-	endm
-
-	enum anim_incbgeffect_command ; $d8
-anim_incbgeffect: macro
-	db anim_incbgeffect_command
-	db \1 ; effect
-	endm
-
-	enum anim_enemyfeetobj_command ; $d9
-anim_enemyfeetobj: macro
-	db anim_enemyfeetobj_command
-	endm
-
-	enum anim_playerheadobj_command ; $da
-anim_playerheadobj: macro
-	db anim_playerheadobj_command
-	endm
-
-	enum anim_checkpokeball_command ; $db
-anim_checkpokeball: macro
-	db anim_checkpokeball_command
-	endm
-
-	enum anim_transform_command ; $dc
-anim_transform: macro
-	db anim_transform_command
-	endm
-
-	enum anim_raisesub_command ; $dd
-anim_raisesub: macro
-	db anim_raisesub_command
-	endm
-
-	enum anim_dropsub_command ; $de
-anim_dropsub: macro
-	db anim_dropsub_command
-	endm
-
-	enum anim_resetobp0_command ; $df
-anim_resetobp0: macro
-	db anim_resetobp0_command
-	endm
-
-	enum anim_sound_command ; $e0
-anim_sound: macro
-	db anim_sound_command
-	db (\1 << 2) | \2 ; duration, tracks
-	db \3 ; id
-	endm
-
-	enum anim_cry_command ; $e1
-anim_cry: macro
-	db anim_cry_command
-	db \1 ; pitch
-	endm
-
-	enum anim_minimizeopp_command ; $e2
-anim_minimizeopp: macro
-	db anim_minimizeopp_command
-	endm
-
-	enum anim_oamon_command ; $e3
-anim_oamon: macro
-	db anim_oamon_command
-	endm
-
-	enum anim_oamoff_command ; $e4
-anim_oamoff: macro
-	db anim_oamoff_command
-	endm
-
-	enum anim_clearobjs_command ; $e5
-anim_clearobjs: macro
-	db anim_clearobjs_command
-	endm
-
-	enum anim_beatup_command ; $e6
-anim_beatup: macro
-	db anim_beatup_command
-	endm
-
-	enum anim_0xe7_command ; $e7
-anim_0xe7: macro
-	db anim_0xe7_command
-	endm
-
-	enum anim_updateactorpic_command ; $e8
-anim_updateactorpic: macro
-	db anim_updateactorpic_command
-	endm
-
-	enum anim_minimize_command ; $e9
-anim_minimize: macro
-	db anim_minimize_command
-	endm
-
-	enum anim_0xea_command ; $ea
-anim_0xea: macro
-	db anim_0xea_command
-	endm
-
-	enum anim_0xeb_command ; $eb
-anim_0xeb: macro
-	db anim_0xeb_command
-	endm
-
-	enum anim_0xec_command ; $ec
-anim_0xec: macro
-	db anim_0xec_command
-	endm
-
-	enum anim_0xed_command ; $ed
-anim_0xed: macro
-	db anim_0xed_command
-	endm
-
-	enum anim_if_param_and_command ; $ee
-anim_if_param_and: macro
-	db anim_if_param_and_command
-	db \1 ; value
-	dw \2 ; address
-	endm
-
-	enum anim_jumpuntil_command ; $ef
-anim_jumpuntil: macro
-	db anim_jumpuntil_command
-	dw \1 ; address
-	endm
-
-	enum anim_bgeffect_command ; $f0
-anim_bgeffect: macro
-	db anim_bgeffect_command
-	db \1 ; effect
-	db \2 ; unknown
-	db \3 ; unknown
-	db \4 ; unknown
-	endm
-
-	enum anim_bgp_command ; $f1
-anim_bgp: macro
-	db anim_bgp_command
-	db \1 ; colors
-	endm
-
-	enum anim_obp0_command ; $f2
-anim_obp0: macro
-	db anim_obp0_command
-	db \1 ; colors
-	endm
-
-	enum anim_obp1_command ; $f3
-anim_obp1: macro
-	db anim_obp1_command
-	db \1 ; colors
-	endm
-
-	enum anim_clearsprites_command ; $f4
-anim_clearsprites: macro
-	db anim_clearsprites_command
-	endm
-
-	enum anim_0xf5_command ; $f5
-anim_0xf5: macro
-	db anim_0xf5_command
-	endm
-
-	enum anim_0xf6_command ; $f6
-anim_0xf6: macro
-	db anim_0xf6_command
-	endm
-
-	enum anim_0xf7_command ; $f7
-anim_0xf7: macro
-	db anim_0xf7_command
-	endm
-
-	enum anim_if_param_equal_command ; $f8
-anim_if_param_equal: macro
-	db anim_if_param_equal_command
-	db \1 ; value
-	dw \2 ; address
-	endm
-
-	enum anim_setvar_command ; $f9
-anim_setvar: macro
-	db anim_setvar_command
-	db \1 ; value
-	endm
-
-	enum anim_incvar_command ; $fa
-anim_incvar: macro
-	db anim_incvar_command
-	endm
-
-	enum anim_if_var_equal_command ; $fb
-anim_if_var_equal: macro
-	db anim_if_var_equal_command
-	db \1 ; value
-	dw \2 ; address
-	endm
-
-	enum anim_jump_command ; $fc
-anim_jump: macro
-	db anim_jump_command
-	dw \1 ; address
-	endm
-
-	enum anim_loop_command ; $fd
-anim_loop: macro
-	db anim_loop_command
-	db \1 ; count
-	dw \2 ; address
-	endm
-
-	enum anim_call_command ; $fe
-anim_call: macro
-	db anim_call_command
-	dw \1 ; address
-	endm
-
-	enum anim_ret_command ; $ff
-anim_ret: macro
-	db anim_ret_command
-	endm
--- a/macros/scripts/trade_anim.asm
+++ /dev/null
@@ -1,255 +1,0 @@
-; DoTradeAnimation.JumpTable indexes (see engine/trade/animation.asm)
-	enum_start
-
-	enum tradeanim_next_command ; $00
-tradeanim_next: macro
-	db tradeanim_next_command
-endm
-
-	enum tradeanim_show_givemon_data_command ; $01
-tradeanim_show_givemon_data: macro
-	db tradeanim_show_givemon_data_command
-endm
-
-	enum tradeanim_show_getmon_data_command ; $02
-tradeanim_show_getmon_data: macro
-	db tradeanim_show_getmon_data_command
-endm
-
-	enum tradeanim_enter_link_tube_command ; $03
-tradeanim_enter_link_tube: macro
-	db tradeanim_enter_link_tube_command
-endm
-
-__enum__ set $5
-
-	enum tradeanim_exit_link_tube_command ; $05
-tradeanim_exit_link_tube: macro
-	db tradeanim_exit_link_tube_command
-endm
-
-	enum tradeanim_tube_to_ot_command ; $06
-tradeanim_tube_to_ot: macro
-	db tradeanim_tube_to_ot_command
-endm
-
-__enum__ set $0e
-
-	enum tradeanim_tube_to_player_command ; $0e
-tradeanim_tube_to_player: macro
-	db tradeanim_tube_to_player_command
-endm
-
-__enum__ set $16
-
-	enum tradeanim_sent_to_ot_text_command ; $16
-tradeanim_sent_to_ot_text: macro
-	db tradeanim_sent_to_ot_text_command
-endm
-
-	enum tradeanim_ot_bids_farewell_command ; $17
-tradeanim_ot_bids_farewell: macro
-	db tradeanim_ot_bids_farewell_command
-endm
-
-	enum tradeanim_take_care_of_text_command ; $18
-tradeanim_take_care_of_text: macro
-	db tradeanim_take_care_of_text_command
-endm
-
-	enum tradeanim_ot_sends_text_1_command ; $19
-tradeanim_ot_sends_text_1: macro
-	db tradeanim_ot_sends_text_1_command
-endm
-
-	enum tradeanim_ot_sends_text_2_command ; $1a
-tradeanim_ot_sends_text_2: macro
-	db tradeanim_ot_sends_text_2_command
-endm
-
-	enum tradeanim_setup_givemon_scroll_command ; $1b
-tradeanim_setup_givemon_scroll: macro
-	db tradeanim_setup_givemon_scroll_command
-endm
-
-	enum tradeanim_do_givemon_scroll_command ; $1c
-tradeanim_do_givemon_scroll: macro
-	db tradeanim_do_givemon_scroll_command
-endm
-
-	enum tradeanim_frontpic_scroll_command ; $1d
-tradeanim_frontpic_scroll: macro
-	db tradeanim_frontpic_scroll_command
-endm
-
-	enum tradeanim_textbox_scroll_command ; $1e
-tradeanim_textbox_scroll: macro
-	db tradeanim_textbox_scroll_command
-endm
-
-	enum tradeanim_scroll_out_right_command ; $1f
-tradeanim_scroll_out_right: macro
-	db tradeanim_scroll_out_right_command
-endm
-
-__enum__ set $21
-
-	enum tradeanim_wait_80_command ; $21
-tradeanim_wait_80: macro
-	db tradeanim_wait_80_command
-endm
-
-	enum tradeanim_wait_40_command ; $22
-tradeanim_wait_40: macro
-	db tradeanim_wait_40_command
-endm
-
-	enum tradeanim_rocking_ball_command ; $23
-tradeanim_rocking_ball: macro
-	db tradeanim_rocking_ball_command
-endm
-
-	enum tradeanim_drop_ball_command ; $24
-tradeanim_drop_ball: macro
-	db tradeanim_drop_ball_command
-endm
-
-	enum tradeanim_wait_anim_command ; $25
-tradeanim_wait_anim: macro
-	db tradeanim_wait_anim_command
-endm
-
-__enum__ set $27
-
-	enum tradeanim_poof_command ; $27
-tradeanim_poof: macro
-	db tradeanim_poof_command
-endm
-
-	enum tradeanim_bulge_through_tube_command ; $28
-tradeanim_bulge_through_tube: macro
-	db tradeanim_bulge_through_tube_command
-endm
-
-	enum tradeanim_give_trademon_sfx_command ; $29
-tradeanim_give_trademon_sfx: macro
-	db tradeanim_give_trademon_sfx_command
-endm
-
-	enum tradeanim_get_trademon_sfx_command ; $2a
-tradeanim_get_trademon_sfx: macro
-	db tradeanim_get_trademon_sfx_command
-endm
-
-	enum tradeanim_end_command ; $2b
-tradeanim_end: macro
-	db tradeanim_end_command
-endm
-
-	enum tradeanim_animate_frontpic_command ; $2c
-tradeanim_animate_frontpic: macro
-	db tradeanim_animate_frontpic_command
-endm
-
-	enum tradeanim_wait_96_command ; $2d
-tradeanim_wait_96: macro
-	db tradeanim_wait_96_command
-endm
-
-	enum tradeanim_wait_80_if_ot_egg_command ; $2e
-tradeanim_wait_80_if_ot_egg: macro
-	db tradeanim_wait_80_if_ot_egg_command
-endm
-
-	enum tradeanim_wait_180_if_ot_egg_command ; $2f
-tradeanim_wait_180_if_ot_egg: macro
-	db tradeanim_wait_180_if_ot_egg_command
-endm
-
-
-; Mobile
-	enum_start $01
-
-	enum mobiletradeanim_showgivemon_command ; $01
-mobiletradeanim_showgivemon: macro
-	db mobiletradeanim_showgivemon_command
-endm
-
-	enum mobiletradeanim_02_command ; $02
-mobiletradeanim_02: macro
-	db mobiletradeanim_02_command
-endm
-
-	enum mobiletradeanim_sendmon_command ; $03
-mobiletradeanim_sendmon: macro
-	db mobiletradeanim_sendmon_command
-endm
-
-__enum__ set $05
-
-	enum mobiletradeanim_05_command ; $05
-mobiletradeanim_05: macro
-	db mobiletradeanim_05_command
-endm
-
-	enum mobiletradeanim_06_command ; $06
-mobiletradeanim_06: macro
-	db mobiletradeanim_06_command
-endm
-
-	enum mobiletradeanim_07_command ; $07
-mobiletradeanim_07: macro
-	db mobiletradeanim_07_command
-endm
-
-	enum mobiletradeanim_receivemon_command ; $08
-mobiletradeanim_receivemon: macro
-	db mobiletradeanim_receivemon_command
-endm
-
-__enum__ set $0b
-
-	enum mobiletradeanim_showgetmon_command ; $0b
-mobiletradeanim_showgetmon: macro
-	db mobiletradeanim_showgetmon_command
-endm
-
-	enum mobiletradeanim_end_command ; $0c
-mobiletradeanim_end: macro
-	db mobiletradeanim_end_command
-endm
-
-	enum mobiletradeanim_showgtsgivemon_command ; $0d
-mobiletradeanim_showgtsgivemon: macro
-	db mobiletradeanim_showgtsgivemon_command
-endm
-
-	enum mobiletradeanim_showgtsgetmon_command ; $0e
-mobiletradeanim_showgtsgetmon: macro
-	db mobiletradeanim_showgtsgetmon_command
-endm
-
-	enum mobiletradeanim_0f_command ; $0f
-mobiletradeanim_0f: macro
-	db mobiletradeanim_0f_command
-endm
-
-	enum mobiletradeanim_10_command ; $10
-mobiletradeanim_10: macro
-	db mobiletradeanim_10_command
-endm
-
-	enum mobiletradeanim_11_command ; $11
-mobiletradeanim_11: macro
-	db mobiletradeanim_11_command
-endm
-
-	enum mobiletradeanim_12_command ; $12
-mobiletradeanim_12: macro
-	db mobiletradeanim_12_command
-endm
-
-	enum mobiletradeanim_showoddegg_command ; $13
-mobiletradeanim_showoddegg: macro
-	db mobiletradeanim_showoddegg_command
-endm
--- /dev/null
+++ b/macros/scripts/trade_anims.asm
@@ -1,0 +1,255 @@
+; DoTradeAnimation.JumpTable indexes (see engine/trade/animation.asm)
+	enum_start
+
+	enum tradeanim_next_command ; $00
+tradeanim_next: macro
+	db tradeanim_next_command
+endm
+
+	enum tradeanim_show_givemon_data_command ; $01
+tradeanim_show_givemon_data: macro
+	db tradeanim_show_givemon_data_command
+endm
+
+	enum tradeanim_show_getmon_data_command ; $02
+tradeanim_show_getmon_data: macro
+	db tradeanim_show_getmon_data_command
+endm
+
+	enum tradeanim_enter_link_tube_command ; $03
+tradeanim_enter_link_tube: macro
+	db tradeanim_enter_link_tube_command
+endm
+
+__enum__ set $5
+
+	enum tradeanim_exit_link_tube_command ; $05
+tradeanim_exit_link_tube: macro
+	db tradeanim_exit_link_tube_command
+endm
+
+	enum tradeanim_tube_to_ot_command ; $06
+tradeanim_tube_to_ot: macro
+	db tradeanim_tube_to_ot_command
+endm
+
+__enum__ set $0e
+
+	enum tradeanim_tube_to_player_command ; $0e
+tradeanim_tube_to_player: macro
+	db tradeanim_tube_to_player_command
+endm
+
+__enum__ set $16
+
+	enum tradeanim_sent_to_ot_text_command ; $16
+tradeanim_sent_to_ot_text: macro
+	db tradeanim_sent_to_ot_text_command
+endm
+
+	enum tradeanim_ot_bids_farewell_command ; $17
+tradeanim_ot_bids_farewell: macro
+	db tradeanim_ot_bids_farewell_command
+endm
+
+	enum tradeanim_take_care_of_text_command ; $18
+tradeanim_take_care_of_text: macro
+	db tradeanim_take_care_of_text_command
+endm
+
+	enum tradeanim_ot_sends_text_1_command ; $19
+tradeanim_ot_sends_text_1: macro
+	db tradeanim_ot_sends_text_1_command
+endm
+
+	enum tradeanim_ot_sends_text_2_command ; $1a
+tradeanim_ot_sends_text_2: macro
+	db tradeanim_ot_sends_text_2_command
+endm
+
+	enum tradeanim_setup_givemon_scroll_command ; $1b
+tradeanim_setup_givemon_scroll: macro
+	db tradeanim_setup_givemon_scroll_command
+endm
+
+	enum tradeanim_do_givemon_scroll_command ; $1c
+tradeanim_do_givemon_scroll: macro
+	db tradeanim_do_givemon_scroll_command
+endm
+
+	enum tradeanim_frontpic_scroll_command ; $1d
+tradeanim_frontpic_scroll: macro
+	db tradeanim_frontpic_scroll_command
+endm
+
+	enum tradeanim_textbox_scroll_command ; $1e
+tradeanim_textbox_scroll: macro
+	db tradeanim_textbox_scroll_command
+endm
+
+	enum tradeanim_scroll_out_right_command ; $1f
+tradeanim_scroll_out_right: macro
+	db tradeanim_scroll_out_right_command
+endm
+
+__enum__ set $21
+
+	enum tradeanim_wait_80_command ; $21
+tradeanim_wait_80: macro
+	db tradeanim_wait_80_command
+endm
+
+	enum tradeanim_wait_40_command ; $22
+tradeanim_wait_40: macro
+	db tradeanim_wait_40_command
+endm
+
+	enum tradeanim_rocking_ball_command ; $23
+tradeanim_rocking_ball: macro
+	db tradeanim_rocking_ball_command
+endm
+
+	enum tradeanim_drop_ball_command ; $24
+tradeanim_drop_ball: macro
+	db tradeanim_drop_ball_command
+endm
+
+	enum tradeanim_wait_anim_command ; $25
+tradeanim_wait_anim: macro
+	db tradeanim_wait_anim_command
+endm
+
+__enum__ set $27
+
+	enum tradeanim_poof_command ; $27
+tradeanim_poof: macro
+	db tradeanim_poof_command
+endm
+
+	enum tradeanim_bulge_through_tube_command ; $28
+tradeanim_bulge_through_tube: macro
+	db tradeanim_bulge_through_tube_command
+endm
+
+	enum tradeanim_give_trademon_sfx_command ; $29
+tradeanim_give_trademon_sfx: macro
+	db tradeanim_give_trademon_sfx_command
+endm
+
+	enum tradeanim_get_trademon_sfx_command ; $2a
+tradeanim_get_trademon_sfx: macro
+	db tradeanim_get_trademon_sfx_command
+endm
+
+	enum tradeanim_end_command ; $2b
+tradeanim_end: macro
+	db tradeanim_end_command
+endm
+
+	enum tradeanim_animate_frontpic_command ; $2c
+tradeanim_animate_frontpic: macro
+	db tradeanim_animate_frontpic_command
+endm
+
+	enum tradeanim_wait_96_command ; $2d
+tradeanim_wait_96: macro
+	db tradeanim_wait_96_command
+endm
+
+	enum tradeanim_wait_80_if_ot_egg_command ; $2e
+tradeanim_wait_80_if_ot_egg: macro
+	db tradeanim_wait_80_if_ot_egg_command
+endm
+
+	enum tradeanim_wait_180_if_ot_egg_command ; $2f
+tradeanim_wait_180_if_ot_egg: macro
+	db tradeanim_wait_180_if_ot_egg_command
+endm
+
+
+; Mobile
+	enum_start $01
+
+	enum mobiletradeanim_showgivemon_command ; $01
+mobiletradeanim_showgivemon: macro
+	db mobiletradeanim_showgivemon_command
+endm
+
+	enum mobiletradeanim_02_command ; $02
+mobiletradeanim_02: macro
+	db mobiletradeanim_02_command
+endm
+
+	enum mobiletradeanim_sendmon_command ; $03
+mobiletradeanim_sendmon: macro
+	db mobiletradeanim_sendmon_command
+endm
+
+__enum__ set $05
+
+	enum mobiletradeanim_05_command ; $05
+mobiletradeanim_05: macro
+	db mobiletradeanim_05_command
+endm
+
+	enum mobiletradeanim_06_command ; $06
+mobiletradeanim_06: macro
+	db mobiletradeanim_06_command
+endm
+
+	enum mobiletradeanim_07_command ; $07
+mobiletradeanim_07: macro
+	db mobiletradeanim_07_command
+endm
+
+	enum mobiletradeanim_receivemon_command ; $08
+mobiletradeanim_receivemon: macro
+	db mobiletradeanim_receivemon_command
+endm
+
+__enum__ set $0b
+
+	enum mobiletradeanim_showgetmon_command ; $0b
+mobiletradeanim_showgetmon: macro
+	db mobiletradeanim_showgetmon_command
+endm
+
+	enum mobiletradeanim_end_command ; $0c
+mobiletradeanim_end: macro
+	db mobiletradeanim_end_command
+endm
+
+	enum mobiletradeanim_showgtsgivemon_command ; $0d
+mobiletradeanim_showgtsgivemon: macro
+	db mobiletradeanim_showgtsgivemon_command
+endm
+
+	enum mobiletradeanim_showgtsgetmon_command ; $0e
+mobiletradeanim_showgtsgetmon: macro
+	db mobiletradeanim_showgtsgetmon_command
+endm
+
+	enum mobiletradeanim_0f_command ; $0f
+mobiletradeanim_0f: macro
+	db mobiletradeanim_0f_command
+endm
+
+	enum mobiletradeanim_10_command ; $10
+mobiletradeanim_10: macro
+	db mobiletradeanim_10_command
+endm
+
+	enum mobiletradeanim_11_command ; $11
+mobiletradeanim_11: macro
+	db mobiletradeanim_11_command
+endm
+
+	enum mobiletradeanim_12_command ; $12
+mobiletradeanim_12: macro
+	db mobiletradeanim_12_command
+endm
+
+	enum mobiletradeanim_showoddegg_command ; $13
+mobiletradeanim_showoddegg: macro
+	db mobiletradeanim_showoddegg_command
+endm
--- a/main.asm
+++ b/main.asm
@@ -40,7 +40,7 @@
 INCLUDE "engine/routines/getbreedmonlevelgrowth.asm"
 INCLUDE "event/bug_contest/caught_mon.asm"
 INCLUDE "engine/item_effects.asm"
-INCLUDE "engine/routines/getpokeballwobble.asm"
+INCLUDE "engine/battle_anims/getpokeballwobble.asm"
 INCLUDE "engine/routines/knowsmove.asm"
 
 
@@ -118,11 +118,11 @@
 INCLUDE "engine/decorations.asm"
 INCLUDE "engine/routines/leveluphappinessmod.asm"
 INCLUDE "data/trainers/trainer_dvs.asm"
-INCLUDE "engine/routines/returntobattle_useball.asm"
-INCLUDE "engine/routines/consumehelditem.asm"
+INCLUDE "engine/battle/returntobattle_useball.asm"
+INCLUDE "engine/battle/consumehelditem.asm"
 INCLUDE "data/moves/move_effects_pointers.asm"
 INCLUDE "data/moves/move_effects.asm"
-INCLUDE "engine/routines/kurt_selectquantity_interpretjoypad.asm"
+INCLUDE "event/kurt_selectquantity_interpretjoypad.asm"
 
 
 SECTION "bankA", ROMX
@@ -246,7 +246,7 @@
 INCLUDE "mobile/get_trainer_class.asm"
 INCLUDE "engine/battle/sliding_intro.asm"
 INCLUDE "mobile/print_opp_message.asm"
-INCLUDE "engine/routines/checkbattlescene.asm"
+INCLUDE "engine/battle/checkbattlescene.asm"
 INCLUDE "engine/gbc_only.asm"
 INCLUDE "event/poke_seer.asm"
 
@@ -308,7 +308,7 @@
 SECTION "bank21", ROMX
 
 INCLUDE "engine/printer.asm"
-INCLUDE "gfx/anims.asm"
+INCLUDE "gfx/battle_anims.asm"
 INCLUDE "event/halloffame.asm"
 
 
@@ -330,7 +330,7 @@
 INCLUDE "engine/battle/battle_transition.asm"
 INCLUDE "event/field_moves.asm"
 INCLUDE "event/magnet_train.asm"
-INCLUDE "engine/routines/battlestart_copytilemapatonce.asm"
+INCLUDE "engine/battle/battlestart_copytilemapatonce.asm"
 INCLUDE "engine/sprites.asm"
 INCLUDE "engine/mon_icons.asm"
 
@@ -389,7 +389,7 @@
 
 SECTION "bank32", ROMX
 
-INCLUDE "engine/anims/bg_effects.asm"
+INCLUDE "engine/battle_anims/bg_effects.asm"
 INCLUDE "data/moves/move_anims.asm"
 INCLUDE "event/poisonstep_pals.asm"
 
@@ -400,14 +400,14 @@
 SECTION "Move Animations", ROMX
 
 INCLUDE "event/bug_contest/display_stats.asm"
-INCLUDE "engine/anims/anim_commands.asm"
-INCLUDE "engine/anims/engine.asm"
-INCLUDE "data/anims/objects.asm"
-INCLUDE "engine/anims/functions.asm"
-INCLUDE "engine/anims/helpers.asm"
-INCLUDE "data/anims/framesets.asm"
-INCLUDE "data/anims/oam.asm"
-INCLUDE "data/anims/object_gfx.asm"
+INCLUDE "engine/battle_anims/anim_commands.asm"
+INCLUDE "engine/battle_anims/engine.asm"
+INCLUDE "data/battle_anims/objects.asm"
+INCLUDE "engine/battle_anims/functions.asm"
+INCLUDE "engine/battle_anims/helpers.asm"
+INCLUDE "data/battle_anims/framesets.asm"
+INCLUDE "data/battle_anims/oam.asm"
+INCLUDE "data/battle_anims/object_gfx.asm"
 
 
 SECTION "Pic Animations 1", ROMX
@@ -554,7 +554,7 @@
 
 SECTION "bank5E", ROMX
 
-INCLUDE "engine/routines/updatebattlehuds.asm"
+INCLUDE "engine/battle/updatebattlehuds.asm"
 
 
 SECTION "mobile_5e", ROMX
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -382,7 +382,7 @@
 	map_header Route12SuperRodHouse, TILESET_HOUSE_1, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup_Silver    :
+MapGroup_Silver:
 	map_header Route28, TILESET_KANTO, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header SilverCaveOutside, TILESET_KANTO, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header SilverCavePokecenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE