summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-11-14 12:57:49 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-11-19 10:26:40 +0800
commit1d3ae2fe78823a6a0d4d9d93a988aa5ca1092801 (patch)
treeacb385b82e1b361e36e6075b13329563fe93f415
parent17b55f50dbcdf9797d0aecfba356bc8681dea8f5 (diff)
parentf6dfeba742c415d964b415bfefb859c3a3764930 (diff)
Merge branch 'master' into battle
-rw-r--r--asm/battle_anim.s8
-rw-r--r--asm/battle_anim_status_effects.s4
-rw-r--r--asm/battle_message.s4
-rw-r--r--asm/battle_tower.s3664
-rw-r--r--asm/field_camera.s6
-rw-r--r--asm/field_door.s667
-rw-r--r--asm/item_menu.s2
-rw-r--r--asm/learn_move.s1954
-rw-r--r--asm/link_rfu_3.s8
-rw-r--r--asm/macros/battle_anim_script.inc285
-rw-r--r--asm/map_name_popup.s490
-rw-r--r--asm/overworld.s10
-rw-r--r--asm/party_menu.s42
-rw-r--r--asm/save_menu_util.s149
-rw-r--r--asm/script_pokemon_util_80A0058.s12
-rw-r--r--baserom.ipsbin414160 -> 298582 bytes
-rw-r--r--data/battle_anim_effects_3.s133
-rw-r--r--data/battle_anim_effects_misc.s422
-rw-r--r--data/battle_anim_scripts.s11101
-rw-r--r--data/battle_anim_special.s8
-rw-r--r--data/battle_anim_status_effects.s104
-rw-r--r--data/berry_crush.s120
-rw-r--r--data/box_party_pokemon_dropdown.s10
-rw-r--r--data/clear_save_data_screen.s20
-rw-r--r--data/data_8466FB8.s12
-rw-r--r--data/evolution_graphics.s3
-rw-r--r--data/field_door.s17
-rw-r--r--data/field_effect_helpers.s20
-rw-r--r--data/field_map_obj.s10
-rw-r--r--data/field_tasks.s19
-rw-r--r--data/fldeff_cut.s30
-rw-r--r--data/item_use.s15
-rw-r--r--data/learn_move.s28
-rw-r--r--data/map_name_popup.s10
-rw-r--r--data/metatile_behavior.s6
-rw-r--r--data/mevent/script_common.inc87
-rw-r--r--data/mevent/script_ish.inc65
-rw-r--r--data/pokemon_jump.s (renamed from data/data_8468C98.s)117
-rw-r--r--data/save_failed_screen.s2
-rw-r--r--data/specials.inc2
-rw-r--r--data/strings.s18
-rw-r--r--data/unknown_serial_data.s2
-rw-r--r--graphics/door_anims/frame_8353088_1.pngbin0 -> 139 bytes
-rw-r--r--graphics/door_anims/frame_8353088_2.pngbin0 -> 124 bytes
-rw-r--r--graphics/door_anims/frame_8353088_3.pngbin0 -> 102 bytes
-rw-r--r--graphics/door_anims/frame_8353228_1.pngbin0 -> 105 bytes
-rw-r--r--graphics/door_anims/frame_8353228_2.pngbin0 -> 116 bytes
-rw-r--r--graphics/door_anims/frame_8353228_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_83533C8_1.pngbin0 -> 121 bytes
-rw-r--r--graphics/door_anims/frame_83533C8_2.pngbin0 -> 128 bytes
-rw-r--r--graphics/door_anims/frame_83533C8_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_8353568_1.pngbin0 -> 147 bytes
-rw-r--r--graphics/door_anims/frame_8353568_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8353568_3.pngbin0 -> 102 bytes
-rw-r--r--graphics/door_anims/frame_8353708_1.pngbin0 -> 144 bytes
-rw-r--r--graphics/door_anims/frame_8353708_2.pngbin0 -> 127 bytes
-rw-r--r--graphics/door_anims/frame_8353708_3.pngbin0 -> 102 bytes
-rw-r--r--graphics/door_anims/frame_83538A8_1.pngbin0 -> 131 bytes
-rw-r--r--graphics/door_anims/frame_83538A8_2.pngbin0 -> 123 bytes
-rw-r--r--graphics/door_anims/frame_83538A8_3.pngbin0 -> 108 bytes
-rw-r--r--graphics/door_anims/frame_8353A48_1.pngbin0 -> 146 bytes
-rw-r--r--graphics/door_anims/frame_8353A48_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8353A48_3.pngbin0 -> 102 bytes
-rw-r--r--graphics/door_anims/frame_8353BE8_1.pngbin0 -> 140 bytes
-rw-r--r--graphics/door_anims/frame_8353BE8_2.pngbin0 -> 124 bytes
-rw-r--r--graphics/door_anims/frame_8353BE8_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_8353D88_1.pngbin0 -> 125 bytes
-rw-r--r--graphics/door_anims/frame_8353D88_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8353D88_3.pngbin0 -> 95 bytes
-rw-r--r--graphics/door_anims/frame_8353F28_1.pngbin0 -> 145 bytes
-rw-r--r--graphics/door_anims/frame_8353F28_2.pngbin0 -> 133 bytes
-rw-r--r--graphics/door_anims/frame_8353F28_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_83540C8_1.pngbin0 -> 141 bytes
-rw-r--r--graphics/door_anims/frame_83540C8_2.pngbin0 -> 125 bytes
-rw-r--r--graphics/door_anims/frame_83540C8_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_8354268_1.pngbin0 -> 138 bytes
-rw-r--r--graphics/door_anims/frame_8354268_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8354268_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_8354408_1.pngbin0 -> 146 bytes
-rw-r--r--graphics/door_anims/frame_8354408_2.pngbin0 -> 138 bytes
-rw-r--r--graphics/door_anims/frame_8354408_3.pngbin0 -> 119 bytes
-rw-r--r--graphics/door_anims/frame_83545A8_1.pngbin0 -> 122 bytes
-rw-r--r--graphics/door_anims/frame_83545A8_2.pngbin0 -> 129 bytes
-rw-r--r--graphics/door_anims/frame_83545A8_3.pngbin0 -> 105 bytes
-rw-r--r--graphics/door_anims/frame_8354748_1.pngbin0 -> 151 bytes
-rw-r--r--graphics/door_anims/frame_8354748_2.pngbin0 -> 129 bytes
-rw-r--r--graphics/door_anims/frame_8354748_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_83548E8_1.pngbin0 -> 150 bytes
-rw-r--r--graphics/door_anims/frame_83548E8_2.pngbin0 -> 131 bytes
-rw-r--r--graphics/door_anims/frame_83548E8_3.pngbin0 -> 90 bytes
-rw-r--r--graphics/door_anims/frame_8354A88_1.pngbin0 -> 140 bytes
-rw-r--r--graphics/door_anims/frame_8354A88_2.pngbin0 -> 127 bytes
-rw-r--r--graphics/door_anims/frame_8354A88_3.pngbin0 -> 98 bytes
-rw-r--r--graphics/door_anims/frame_8354C28_1.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8354C28_2.pngbin0 -> 127 bytes
-rw-r--r--graphics/door_anims/frame_8354C28_3.pngbin0 -> 104 bytes
-rw-r--r--graphics/door_anims/frame_8354F48_1.pngbin0 -> 139 bytes
-rw-r--r--graphics/door_anims/frame_8354F48_2.pngbin0 -> 141 bytes
-rw-r--r--graphics/door_anims/frame_8354F48_3.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_8355268_1.pngbin0 -> 137 bytes
-rw-r--r--graphics/door_anims/frame_8355268_2.pngbin0 -> 137 bytes
-rw-r--r--graphics/door_anims/frame_8355268_3.pngbin0 -> 115 bytes
-rw-r--r--graphics/door_anims/frame_8355588_1.pngbin0 -> 177 bytes
-rw-r--r--graphics/door_anims/frame_8355588_2.pngbin0 -> 160 bytes
-rw-r--r--graphics/door_anims/frame_8355588_3.pngbin0 -> 123 bytes
-rw-r--r--graphics/door_anims/frame_8359588_1.pngbin0 -> 79 bytes
-rw-r--r--graphics/door_anims/frame_8359588_2.pngbin0 -> 79 bytes
-rw-r--r--graphics/door_anims/frame_8359788_1.pngbin0 -> 101 bytes
-rw-r--r--graphics/door_anims/frame_8359788_2.pngbin0 -> 100 bytes
-rw-r--r--graphics/door_anims/frame_8359788_3.pngbin0 -> 88 bytes
-rw-r--r--graphics/door_anims/frame_8359788_4.pngbin0 -> 80 bytes
-rw-r--r--graphics/door_anims/frame_8359988_1.pngbin0 -> 104 bytes
-rw-r--r--graphics/door_anims/frame_8359988_2.pngbin0 -> 112 bytes
-rw-r--r--graphics/door_anims/frame_8359988_3.pngbin0 -> 102 bytes
-rw-r--r--graphics/door_anims/frame_8359988_4.pngbin0 -> 90 bytes
-rw-r--r--graphics/door_anims/frame_8359B88_1.pngbin0 -> 105 bytes
-rw-r--r--graphics/door_anims/frame_8359B88_2.pngbin0 -> 109 bytes
-rw-r--r--graphics/door_anims/frame_8359B88_3.pngbin0 -> 109 bytes
-rw-r--r--graphics/door_anims/frame_8359B88_4.pngbin0 -> 89 bytes
-rw-r--r--graphics/door_anims/frame_8359CA8_1.pngbin0 -> 139 bytes
-rw-r--r--graphics/door_anims/frame_8359CA8_2.pngbin0 -> 139 bytes
-rw-r--r--graphics/door_anims/frame_8359CA8_3.pngbin0 -> 117 bytes
-rw-r--r--graphics/door_anims/frame_8359FC8_1.pngbin0 -> 132 bytes
-rw-r--r--graphics/door_anims/frame_8359FC8_2.pngbin0 -> 125 bytes
-rw-r--r--graphics/door_anims/frame_8359FC8_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_835A168_1.pngbin0 -> 121 bytes
-rw-r--r--graphics/door_anims/frame_835A168_2.pngbin0 -> 127 bytes
-rw-r--r--graphics/door_anims/frame_835A168_3.pngbin0 -> 104 bytes
-rw-r--r--graphics/door_anims/frame_835A308_1.pngbin0 -> 128 bytes
-rw-r--r--graphics/door_anims/frame_835A308_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_835A308_3.pngbin0 -> 104 bytes
-rw-r--r--graphics/door_anims/frame_835A4A8_1.pngbin0 -> 132 bytes
-rw-r--r--graphics/door_anims/frame_835A4A8_2.pngbin0 -> 125 bytes
-rw-r--r--graphics/door_anims/frame_835A4A8_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_835A648_1.pngbin0 -> 144 bytes
-rw-r--r--graphics/door_anims/frame_835A648_2.pngbin0 -> 130 bytes
-rw-r--r--graphics/door_anims/frame_835A648_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_835A7E8_1.pngbin0 -> 140 bytes
-rw-r--r--graphics/door_anims/frame_835A7E8_2.pngbin0 -> 138 bytes
-rw-r--r--graphics/door_anims/frame_835A7E8_3.pngbin0 -> 107 bytes
-rw-r--r--graphics/door_anims/frame_835A988_1.pngbin0 -> 132 bytes
-rw-r--r--graphics/door_anims/frame_835A988_2.pngbin0 -> 125 bytes
-rw-r--r--graphics/door_anims/frame_835A988_3.pngbin0 -> 103 bytes
-rw-r--r--graphics/door_anims/frame_835AB28_1.pngbin0 -> 223 bytes
-rw-r--r--graphics/door_anims/frame_835AB28_2.pngbin0 -> 212 bytes
-rw-r--r--graphics/door_anims/frame_835AB28_3.pngbin0 -> 192 bytes
-rw-r--r--graphics/door_anims/frame_835AE48_1.pngbin0 -> 141 bytes
-rw-r--r--graphics/door_anims/frame_835AE48_2.pngbin0 -> 141 bytes
-rw-r--r--graphics/door_anims/frame_835AE48_3.pngbin0 -> 119 bytes
-rw-r--r--graphics/door_anims/frame_835B168_1.pngbin0 -> 137 bytes
-rw-r--r--graphics/door_anims/frame_835B168_2.pngbin0 -> 137 bytes
-rw-r--r--graphics/door_anims/frame_835B168_3.pngbin0 -> 115 bytes
-rw-r--r--graphics/interface/save_failed_screen.pal19
-rw-r--r--graphics/learn_move/interface_sprites.pngbin0 -> 316 bytes
-rw-r--r--graphics/map_objects/fldeff_cut.pngbin0 -> 173 bytes
-rw-r--r--include/battle.h2
-rw-r--r--include/battle_tower.h4
-rw-r--r--include/constants/battle_tower.h7
-rw-r--r--include/field_camera.h1
-rw-r--r--include/field_door.h10
-rw-r--r--include/gba/macro.h14
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--include/graphics.h6
-rw-r--r--include/link_rfu.h3
-rw-r--r--include/map_name_popup.h8
-rw-r--r--include/metatile_behavior.h1
-rw-r--r--include/mevent_server.h32
-rw-r--r--include/party_menu.h1
-rw-r--r--include/save_menu_util.h3
-rw-r--r--include/script_pokemon_util_80A0058.h1
-rw-r--r--include/strings.h17
-rw-r--r--include/text_window.h1
-rw-r--r--ld_script.txt23
-rw-r--r--src/battle_tower.c1303
-rw-r--r--src/field_door.c537
-rw-r--r--src/item_use.c63
-rw-r--r--src/learn_move.c842
-rw-r--r--src/map_name_popup.c216
-rw-r--r--src/metatile_behavior.c37
-rw-r--r--src/mevent.c2
-rw-r--r--src/mevent_client.c4
-rw-r--r--src/mevent_scripts.c192
-rw-r--r--src/pokemon_size_record.c17
-rw-r--r--src/quest_log.c2
-rw-r--r--src/save_menu_util.c58
-rw-r--r--src/slot_machine.c604
-rw-r--r--src/trainer_tower.c149
-rw-r--r--sym_ewram.txt31
188 files changed, 15683 insertions, 8215 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index d9471c9dd..42d099c4c 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -118,7 +118,7 @@ DoMoveAnim: @ 807259C
ldr r0, _080725CC @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r2]
- ldr r0, _080725D0 @ =gUnknown_81C68F4
+ ldr r0, _080725D0 @ =gBattleAnims_Moves
movs r2, 0x1
bl LaunchBattleAnimation
pop {r0}
@@ -128,7 +128,7 @@ _080725C0: .4byte gBattleAnimAttacker
_080725C4: .4byte gBattlerAttacker
_080725C8: .4byte gBattleAnimTarget
_080725CC: .4byte gBattlerTarget
-_080725D0: .4byte gUnknown_81C68F4
+_080725D0: .4byte gBattleAnims_Moves
thumb_func_end DoMoveAnim
thumb_func_start LaunchBattleAnimation
@@ -247,7 +247,7 @@ _080726A6:
cmp r0, 0
beq _08072706
movs r4, 0
- ldr r2, _080726E8 @ =gUnknown_81C68EC
+ ldr r2, _080726E8 @ =gMovesWithQuietBGM
b _080726EE
.align 2, 0
_080726C0: .4byte gUnknown_2037F18
@@ -260,7 +260,7 @@ _080726D8: .4byte RunAnimScriptCommand
_080726DC: .4byte gBattleAnimArgs
_080726E0: .4byte 0x0000ffff
_080726E4: .4byte gUnknown_2037EEE
-_080726E8: .4byte gUnknown_81C68EC
+_080726E8: .4byte gMovesWithQuietBGM
_080726EC:
adds r4, 0x1
_080726EE:
diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s
index c70d88cef..c8b1ddbf5 100644
--- a/asm/battle_anim_status_effects.s
+++ b/asm/battle_anim_status_effects.s
@@ -905,7 +905,7 @@ LaunchStatusAnimation: @ 807886C
strb r4, [r0]
ldr r0, _080788AC @ =gBattleAnimTarget
strb r4, [r0]
- ldr r0, _080788B0 @ =gUnknown_81C6E84
+ ldr r0, _080788B0 @ =gBattleAnims_StatusConditions
movs r2, 0
bl LaunchBattleAnimation
ldr r0, _080788B4 @ =task0A_80788BC
@@ -925,7 +925,7 @@ LaunchStatusAnimation: @ 807886C
.align 2, 0
_080788A8: .4byte gBattleAnimAttacker
_080788AC: .4byte gBattleAnimTarget
-_080788B0: .4byte gUnknown_81C6E84
+_080788B0: .4byte gBattleAnims_StatusConditions
_080788B4: .4byte task0A_80788BC
_080788B8: .4byte gTasks
thumb_func_end LaunchStatusAnimation
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 28d7b196d..6f4cb083c 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -1686,7 +1686,7 @@ _080D8038:
ands r0, r1
cmp r0, 0
beq _080D8058
- bl sub_80E60E4
+ bl GetBattleTowerTrainerClassNameId
lsls r0, 24
lsrs r0, 24
movs r1, 0xD
@@ -1781,7 +1781,7 @@ _080D80F0:
cmp r0, 0
beq _080D810C
mov r0, sp
- bl sub_80E6150
+ bl GetBattleTowerTrainerName
b _080D8382
.align 2, 0
_080D8108: .4byte gBattleTypeFlags
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
deleted file mode 100644
index d4bad6bd1..000000000
--- a/asm/battle_tower.s
+++ /dev/null
@@ -1,3664 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80E5970
-sub_80E5970: @ 80E5970
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0
-_080E5976:
- ldr r0, _080E5990 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E5994 @ =0x0000055e
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x6
- bhi _080E59B8
- lsls r0, 2
- ldr r1, _080E5998 @ =_080E599C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E5990: .4byte gSaveBlock2Ptr
-_080E5994: .4byte 0x0000055e
-_080E5998: .4byte _080E599C
- .align 2, 0
-_080E599C:
- .4byte _080E59B8
- .4byte _080E59D0
- .4byte _080E59F0
- .4byte _080E5A00
- .4byte _080E59E0
- .4byte _080E59E8
- .4byte _080E5A00
-_080E59B8:
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_80E5A38
- cmp r4, 0
- bne _080E5A00
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x5
- bl VarSet
- b _080E5A00
-_080E59D0:
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_80E5A38
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x1
- b _080E59F6
-_080E59E0:
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x2
- b _080E59F6
-_080E59E8:
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x3
- b _080E59F6
-_080E59F0:
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x4
-_080E59F6:
- bl VarSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080E5A00:
- adds r5, 0x1
- cmp r5, 0x1
- ble _080E5976
- ldr r0, _080E5A2C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E5A30 @ =0x0000055e
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _080E5A34 @ =0x00000303
- cmp r1, r0
- bne _080E5A20
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0x5
- bl VarSet
-_080E5A20:
- bl sub_80E7064
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5A2C: .4byte gSaveBlock2Ptr
-_080E5A30: .4byte 0x0000055e
-_080E5A34: .4byte 0x00000303
- thumb_func_end sub_80E5970
-
- thumb_func_start sub_80E5A38
-sub_80E5A38: @ 80E5A38
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080E5A64 @ =gSaveBlock2Ptr
- ldr r1, [r3]
- ldr r2, _080E5A68 @ =0x0000055e
- adds r1, r2
- adds r1, r0
- movs r2, 0
- strb r2, [r1]
- ldr r2, [r3]
- lsls r0, 1
- movs r3, 0xAC
- lsls r3, 3
- adds r1, r2, r3
- adds r1, r0
- movs r3, 0x1
- strh r3, [r1]
- ldr r1, _080E5A6C @ =0x00000564
- adds r2, r1
- adds r2, r0
- strh r3, [r2]
- bx lr
- .align 2, 0
-_080E5A64: .4byte gSaveBlock2Ptr
-_080E5A68: .4byte 0x0000055e
-_080E5A6C: .4byte 0x00000564
- thumb_func_end sub_80E5A38
-
- thumb_func_start sub_80E5A70
-sub_80E5A70: @ 80E5A70
- push {r4-r7,lr}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- add r4, sp, 0x28
- movs r0, 0
- strb r0, [r4]
- bl ValidateEReaderTrainer
- ldr r0, _080E5AA4 @ =gSpecialVar_Result
- ldrh r0, [r0]
- adds r7, r4, 0
- cmp r0, 0
- bne _080E5A9E
- ldr r0, _080E5AA8 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E5AAC @ =0x000004a2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r6
- beq _080E5AB0
-_080E5A9E:
- movs r0, 0
- b _080E5B02
- .align 2, 0
-_080E5AA4: .4byte gSpecialVar_Result
-_080E5AA8: .4byte gSaveBlock2Ptr
-_080E5AAC: .4byte 0x000004a2
-_080E5AB0:
- movs r6, 0x32
- cmp r5, 0
- beq _080E5AB8
- movs r6, 0x64
-_080E5AB8:
- movs r4, 0
-_080E5ABA:
- ldr r0, _080E5B0C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0x2C
- muls r0, r4
- adds r1, r0
- movs r2, 0x9C
- lsls r2, 3
- adds r0, r1, r2
- ldrb r2, [r0]
- cmp r2, r6
- bne _080E5A9E
- ldr r3, _080E5B10 @ =0x000004d4
- adds r0, r1, r3
- ldrh r0, [r0]
- adds r3, 0x2
- adds r1, r3
- ldrh r1, [r1]
- str r2, [sp]
- add r2, sp, 0x10
- str r2, [sp, 0x4]
- add r2, sp, 0x1C
- str r2, [sp, 0x8]
- str r7, [sp, 0xC]
- movs r2, 0x1
- adds r3, r5, 0
- bl sub_80E6564
- adds r4, 0x1
- cmp r4, 0x2
- ble _080E5ABA
- movs r1, 0
- ldrb r0, [r7]
- cmp r0, 0x3
- bne _080E5B00
- movs r1, 0x1
-_080E5B00:
- adds r0, r1, 0
-_080E5B02:
- add sp, 0x2C
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5B0C: .4byte gSaveBlock2Ptr
-_080E5B10: .4byte 0x000004d4
- thumb_func_end sub_80E5A70
-
- thumb_func_start sub_80E5B14
-sub_80E5B14: @ 80E5B14
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- movs r0, 0
- str r0, [sp, 0x14]
- ldr r4, _080E5B58 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r1, _080E5B5C @ =0x0000055c
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- mov r8, r0
- bl sub_80E7188
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r0, r8
- mov r1, r9
- bl sub_80E5A70
- lsls r0, 24
- cmp r0, 0
- beq _080E5B64
- ldr r0, [r4]
- ldr r2, _080E5B60 @ =0x0000056c
- adds r0, r2
- movs r1, 0xC8
- strb r1, [r0]
- b _080E5C0C
- .align 2, 0
-_080E5B58: .4byte gSaveBlock2Ptr
-_080E5B5C: .4byte 0x0000055c
-_080E5B60: .4byte 0x0000056c
-_080E5B64:
- movs r6, 0
- movs r3, 0xA4
- mov r10, r3
- movs r7, 0xAA
- lsls r7, 1
- mov r12, r7
- ldr r0, _080E5BE8 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- str r0, [sp, 0x18]
- mov r1, sp
- str r1, [sp, 0x1C]
-_080E5B7A:
- mov r0, r10
- muls r0, r6
- add r0, r12
- movs r4, 0
- movs r5, 0
- movs r1, 0
- adds r2, r6, 0x1
- str r2, [sp, 0x20]
- ldr r3, [sp, 0x18]
- adds r2, r3, r0
-_080E5B8E:
- ldm r2!, {r0}
- orrs r4, r0
- adds r5, r0
- adds r1, 0x1
- cmp r1, 0x27
- bls _080E5B8E
- ldr r7, _080E5BE8 @ =gSaveBlock2Ptr
- ldr r2, [r7]
- mov r3, r10
- muls r3, r6
- adds r1, r2, r3
- movs r7, 0xAB
- lsls r7, 1
- adds r0, r1, r7
- ldrh r0, [r0]
- cmp r0, r9
- bne _080E5BD8
- mov r7, r12
- adds r0, r1, r7
- ldrb r0, [r0]
- cmp r0, r8
- bne _080E5BD8
- cmp r4, 0
- beq _080E5BD8
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r2, r1
- adds r0, r3
- ldr r0, [r0]
- cmp r0, r5
- bne _080E5BD8
- ldr r2, [sp, 0x1C]
- stm r2!, {r6}
- str r2, [sp, 0x1C]
- ldr r3, [sp, 0x14]
- adds r3, 0x1
- str r3, [sp, 0x14]
-_080E5BD8:
- ldr r6, [sp, 0x20]
- cmp r6, 0x4
- ble _080E5B7A
- ldr r7, [sp, 0x14]
- cmp r7, 0
- bne _080E5BEC
- movs r0, 0
- b _080E5C0E
- .align 2, 0
-_080E5BE8: .4byte gSaveBlock2Ptr
-_080E5BEC:
- bl Random
- ldr r1, _080E5C20 @ =gSaveBlock2Ptr
- ldr r4, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x14]
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- adds r0, 0x64
- ldr r1, _080E5C24 @ =0x0000056c
- adds r4, r1
- strb r0, [r4]
-_080E5C0C:
- movs r0, 0x1
-_080E5C0E:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080E5C20: .4byte gSaveBlock2Ptr
-_080E5C24: .4byte 0x0000056c
- thumb_func_end sub_80E5B14
-
- thumb_func_start ChooseNextBattleTowerTrainer
-ChooseNextBattleTowerTrainer: @ 80E5C28
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, _080E5C6C @ =gSaveBlock2Ptr
- ldr r0, [r5]
- ldr r1, _080E5C70 @ =0x0000055c
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r6, r0, 31
- bl sub_80E5B14
- lsls r0, 24
- cmp r0, 0
- beq _080E5C7C
- ldr r0, [r5]
- ldr r4, _080E5C74 @ =0x0000056c
- adds r0, r4
- ldrb r0, [r0]
- bl sub_80E5E5C
- ldr r1, [r5]
- lsls r2, r6, 1
- movs r3, 0xAC
- lsls r3, 3
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- adds r0, r1, r0
- ldr r2, _080E5C78 @ =0x00000571
- adds r0, r2
- adds r1, r4
- b _080E5E3E
- .align 2, 0
-_080E5C6C: .4byte gSaveBlock2Ptr
-_080E5C70: .4byte 0x0000055c
-_080E5C74: .4byte 0x0000056c
-_080E5C78: .4byte 0x00000571
-_080E5C7C:
- ldr r2, [r5]
- lsls r0, r6, 1
- ldr r3, _080E5D1C @ =0x00000564
- adds r1, r2, r3
- adds r1, r0
- ldrh r1, [r1]
- adds r6, r0, 0
- cmp r1, 0x7
- bls _080E5C90
- b _080E5DB8
-_080E5C90:
- movs r1, 0xAC
- lsls r1, 3
- adds r0, r2, r1
- adds r0, r6
- ldrh r0, [r0]
- cmp r0, 0x7
- bne _080E5D2C
- adds r7, r6, 0
- mov r8, r5
-_080E5CA2:
- bl Random
- movs r1, 0xFF
- ands r1, r0
- lsls r2, r1, 2
- adds r2, r1
- mov r3, r8
- ldr r4, [r3]
- ldr r1, _080E5D1C @ =0x00000564
- adds r0, r4, r1
- adds r0, r7
- ldrh r1, [r0]
- subs r1, 0x1
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r0, 0x14
- lsrs r2, 7
- adds r2, r0
- lsls r2, 16
- lsrs r5, r2, 16
- movs r3, 0
- movs r0, 0xAC
- lsls r0, 3
- adds r2, r4, r0
- adds r0, r2, r7
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r3, r0
- bge _080E5CFC
- ldr r0, _080E5D20 @ =0x00000572
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, r5
- beq _080E5CFC
- adds r0, r2, r6
- ldrh r0, [r0]
- subs r4, r0, 0x1
-_080E5CEE:
- adds r3, 0x1
- cmp r3, r4
- bge _080E5CFC
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r5
- bne _080E5CEE
-_080E5CFC:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r2
- adds r0, r6
- ldrh r0, [r0]
- subs r0, 0x1
- ldr r4, _080E5D24 @ =gSaveBlock2Ptr
- cmp r3, r0
- bne _080E5CA2
- ldr r0, [r4]
- ldr r3, _080E5D28 @ =0x0000056c
- adds r0, r3
- b _080E5E16
- .align 2, 0
-_080E5D1C: .4byte 0x00000564
-_080E5D20: .4byte 0x00000572
-_080E5D24: .4byte gSaveBlock2Ptr
-_080E5D28: .4byte 0x0000056c
-_080E5D2C:
- adds r7, r6, 0
- mov r8, r5
-_080E5D30:
- bl Random
- movs r1, 0xFF
- ands r1, r0
- lsls r0, r1, 2
- adds r0, r1
- lsrs r5, r0, 6
- mov r0, r8
- ldr r4, [r0]
- ldr r1, _080E5DA8 @ =0x00000564
- adds r0, r4, r1
- adds r0, r7
- ldrh r1, [r0]
- subs r1, 0x1
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0
- movs r0, 0xAC
- lsls r0, 3
- adds r2, r4, r0
- adds r0, r2, r7
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r3, r0
- bge _080E5D88
- ldr r0, _080E5DAC @ =0x00000572
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, r5
- beq _080E5D88
- adds r0, r2, r6
- ldrh r0, [r0]
- subs r4, r0, 0x1
-_080E5D7A:
- adds r3, 0x1
- cmp r3, r4
- bge _080E5D88
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r5
- bne _080E5D7A
-_080E5D88:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r2
- adds r0, r6
- ldrh r0, [r0]
- subs r0, 0x1
- ldr r4, _080E5DB0 @ =gSaveBlock2Ptr
- cmp r3, r0
- bne _080E5D30
- ldr r0, [r4]
- ldr r3, _080E5DB4 @ =0x0000056c
- adds r0, r3
- b _080E5E16
- .align 2, 0
-_080E5DA8: .4byte 0x00000564
-_080E5DAC: .4byte 0x00000572
-_080E5DB0: .4byte gSaveBlock2Ptr
-_080E5DB4: .4byte 0x0000056c
-_080E5DB8:
- adds r7, r5, 0
-_080E5DBA:
- bl Random
- movs r1, 0xFF
- ands r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 1
- asrs r0, 8
- adds r0, 0x46
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0
- ldr r1, [r7]
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r1, r2
- adds r0, r6
- ldrh r0, [r0]
- subs r4, r0, 0x1
- cmp r3, r4
- bge _080E5DFC
- ldr r0, _080E5E4C @ =0x00000572
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, r5
- beq _080E5DFC
-_080E5DEE:
- adds r3, 0x1
- cmp r3, r4
- bge _080E5DFC
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r5
- bne _080E5DEE
-_080E5DFC:
- ldr r0, [r7]
- movs r1, 0xAC
- lsls r1, 3
- adds r0, r1
- adds r0, r6
- ldrh r0, [r0]
- subs r0, 0x1
- ldr r4, _080E5E50 @ =gSaveBlock2Ptr
- cmp r3, r0
- bne _080E5DBA
- ldr r0, [r4]
- ldr r2, _080E5E54 @ =0x0000056c
- adds r0, r2
-_080E5E16:
- strb r5, [r0]
- ldr r0, [r4]
- ldr r3, _080E5E54 @ =0x0000056c
- adds r0, r3
- ldrb r0, [r0]
- bl sub_80E5E5C
- ldr r1, [r4]
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r1, r2
- adds r2, r0, r6
- ldrh r0, [r2]
- cmp r0, 0x6
- bhi _080E5E42
- adds r0, r1, r0
- ldr r3, _080E5E58 @ =0x00000571
- adds r0, r3
- ldr r2, _080E5E54 @ =0x0000056c
- adds r1, r2
-_080E5E3E:
- ldrb r1, [r1]
- strb r1, [r0]
-_080E5E42:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5E4C: .4byte 0x00000572
-_080E5E50: .4byte gSaveBlock2Ptr
-_080E5E54: .4byte 0x0000056c
-_080E5E58: .4byte 0x00000571
- thumb_func_end ChooseNextBattleTowerTrainer
-
- thumb_func_start sub_80E5E5C
-sub_80E5E5C: @ 80E5E5C
- push {lr}
- ldr r0, _080E5E6C @ =0x00004010
- movs r1, 0x12
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_080E5E6C: .4byte 0x00004010
- thumb_func_end sub_80E5E5C
-
- thumb_func_start SetEReaderTrainerGfxId
-SetEReaderTrainerGfxId: @ 80E5E70
- push {lr}
- movs r0, 0xC8
- bl sub_80E5E5C
- pop {r0}
- bx r0
- thumb_func_end SetEReaderTrainerGfxId
-
- thumb_func_start sub_80E5E7C
-sub_80E5E7C: @ 80E5E7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- movs r1, 0
- mov r8, r1
- mov r10, r0
- movs r5, 0
- ldr r2, _080E5F08 @ =gSaveBlock2Ptr
- ldr r0, [r2]
- mov r4, r10
- ldrb r4, [r4, 0xC]
- str r4, [sp, 0x18]
- mov r9, r5
- movs r7, 0x4
- str r7, [sp, 0x1C]
- movs r1, 0xB0
- lsls r1, 1
- adds r1, r0
- mov r12, r1
-_080E5EA8:
- movs r6, 0
- movs r3, 0
- mov r2, r12
- ldrb r0, [r2]
- ldr r4, [sp, 0x18]
- cmp r0, r4
- bne _080E5EDA
- mov r4, r9
- mov r2, r10
- adds r2, 0xC
-_080E5EBC:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _080E5EDA
- ldr r7, _080E5F08 @ =gSaveBlock2Ptr
- ldr r0, [r7]
- adds r1, r3, r4
- movs r7, 0xB0
- lsls r7, 1
- adds r0, r7
- adds r0, r1
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _080E5EBC
-_080E5EDA:
- cmp r3, 0x4
- bne _080E5F20
- movs r6, 0
- ldr r1, _080E5F08 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r3, 0xAC
- lsls r3, 1
- adds r0, r3
- ldr r2, [sp, 0x1C]
- adds r0, r2
- ldrb r0, [r0]
- mov r4, r10
- ldrb r4, [r4, 0x8]
- cmp r0, r4
- bne _080E5F20
- adds r1, r0, 0
- mov r2, r9
- adds r2, 0x4
-_080E5EFE:
- cmp r1, 0xFF
- bne _080E5F0C
- movs r6, 0x7
- b _080E5F20
- .align 2, 0
-_080E5F08: .4byte gSaveBlock2Ptr
-_080E5F0C:
- adds r6, 0x1
- cmp r6, 0x6
- bgt _080E5F20
- ldr r7, _080E5F4C @ =gSaveBlock2Ptr
- ldr r0, [r7]
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, r1
- beq _080E5EFE
-_080E5F20:
- cmp r6, 0x7
- beq _080E5F36
- movs r0, 0xA4
- add r9, r0
- ldr r1, [sp, 0x1C]
- adds r1, 0xA4
- str r1, [sp, 0x1C]
- add r12, r0
- adds r5, 0x1
- cmp r5, 0x4
- ble _080E5EA8
-_080E5F36:
- cmp r5, 0x4
- bgt _080E5F50
- ldr r2, _080E5F4C @ =gSaveBlock2Ptr
- ldr r0, [r2]
- movs r1, 0xA4
- muls r1, r5
- adds r0, r1
- movs r4, 0xAA
- lsls r4, 1
- adds r0, r4
- b _080E5F90
- .align 2, 0
-_080E5F4C: .4byte gSaveBlock2Ptr
-_080E5F50:
- movs r5, 0
- ldr r7, _080E5F9C @ =gSaveBlock2Ptr
- ldr r0, [r7]
- movs r1, 0xAB
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080E5F7C
- adds r3, r7, 0
- adds r2, r1, 0
- movs r1, 0
-_080E5F68:
- adds r1, 0xA4
- adds r5, 0x1
- cmp r5, 0x4
- bgt _080E5FA0
- ldr r0, [r3]
- adds r0, r1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0
- bne _080E5F68
-_080E5F7C:
- cmp r5, 0x4
- bgt _080E5FA0
- ldr r1, _080E5F9C @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r1, 0xA4
- muls r1, r5
- adds r0, r1
- movs r2, 0xAA
- lsls r2, 1
- adds r0, r2
-_080E5F90:
- mov r1, r10
- movs r2, 0xA4
- bl memcpy
- b _080E6062
- .align 2, 0
-_080E5F9C: .4byte gSaveBlock2Ptr
-_080E5FA0:
- mov r2, sp
- ldr r4, _080E5FF8 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- movs r3, 0xAB
- lsls r3, 1
- adds r0, r3
- ldrh r0, [r0]
- movs r1, 0
- strh r0, [r2]
- add r0, sp, 0xC
- strh r1, [r0]
- movs r7, 0x1
- add r8, r7
- movs r5, 0x1
- add r0, sp, 0xC
- mov r9, r0
- mov r12, r3
-_080E5FC2:
- movs r3, 0
- adds r7, r5, 0x1
- cmp r3, r8
- bge _080E6006
- ldr r1, _080E5FF8 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r2, 0xA4
- adds r1, r5, 0
- muls r1, r2
- adds r0, r1
- mov r1, r12
- adds r4, r0, r1
- mov r6, sp
-_080E5FDC:
- lsls r0, r3, 1
- add r0, sp
- ldrh r2, [r4]
- adds r1, r2, 0
- ldrh r0, [r0]
- cmp r1, r0
- bcs _080E5FFC
- movs r3, 0
- movs r4, 0x1
- mov r8, r4
- strh r2, [r6]
- mov r0, r9
- strh r5, [r0]
- b _080E6006
- .align 2, 0
-_080E5FF8: .4byte gSaveBlock2Ptr
-_080E5FFC:
- cmp r1, r0
- bhi _080E6006
- adds r3, 0x1
- cmp r3, r8
- blt _080E5FDC
-_080E6006:
- cmp r3, r8
- bne _080E602C
- mov r1, r8
- lsls r2, r1, 1
- mov r4, sp
- adds r3, r4, r2
- ldr r1, _080E6074 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r4, 0xA4
- adds r1, r5, 0
- muls r1, r4
- adds r0, r1
- add r0, r12
- ldrh r0, [r0]
- strh r0, [r3]
- add r2, r9
- strh r5, [r2]
- movs r0, 0x1
- add r8, r0
-_080E602C:
- adds r5, r7, 0
- cmp r5, 0x4
- ble _080E5FC2
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- bl __modsi3
- adds r5, r0, 0
- ldr r0, _080E6074 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- lsls r1, r5, 1
- add r1, sp
- adds r1, 0xC
- ldrh r2, [r1]
- movs r1, 0xA4
- muls r1, r2
- adds r0, r1
- movs r1, 0xAA
- lsls r1, 1
- adds r0, r1
- mov r1, r10
- movs r2, 0xA4
- bl memcpy
-_080E6062:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6074: .4byte gSaveBlock2Ptr
- thumb_func_end sub_80E5E7C
-
- thumb_func_start GetBattleTowerTrainerFrontSpriteId
-GetBattleTowerTrainerFrontSpriteId: @ 80E6078
- push {lr}
- ldr r0, _080E6094 @ =gSaveBlock2Ptr
- ldr r3, [r0]
- ldr r0, _080E6098 @ =0x0000056c
- adds r1, r3, r0
- ldrb r0, [r1]
- cmp r0, 0xC8
- bne _080E60A4
- ldr r1, _080E609C @ =gFacilityClassToPicIndex
- ldr r2, _080E60A0 @ =0x000004a1
- adds r0, r3, r2
- ldrb r0, [r0]
- adds r0, r1
- b _080E60D6
- .align 2, 0
-_080E6094: .4byte gSaveBlock2Ptr
-_080E6098: .4byte 0x0000056c
-_080E609C: .4byte gFacilityClassToPicIndex
-_080E60A0: .4byte 0x000004a1
-_080E60A4:
- cmp r0, 0x63
- bls _080E60C4
- ldr r2, _080E60C0 @ =gFacilityClassToPicIndex
- ldrb r0, [r1]
- subs r0, 0x64
- movs r1, 0xA4
- muls r0, r1
- adds r0, r3, r0
- adds r1, 0xB1
- adds r0, r1
- ldrb r0, [r0]
- adds r0, r2
- b _080E60D6
- .align 2, 0
-_080E60C0: .4byte gFacilityClassToPicIndex
-_080E60C4:
- ldr r3, _080E60DC @ =gFacilityClassToPicIndex
- ldr r2, _080E60E0 @ =gBattleTowerTrainers
- ldrb r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r3
-_080E60D6:
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_080E60DC: .4byte gFacilityClassToPicIndex
-_080E60E0: .4byte gBattleTowerTrainers
- thumb_func_end GetBattleTowerTrainerFrontSpriteId
-
- thumb_func_start sub_80E60E4
-sub_80E60E4: @ 80E60E4
- push {lr}
- ldr r0, _080E6100 @ =gSaveBlock2Ptr
- ldr r3, [r0]
- ldr r0, _080E6104 @ =0x0000056c
- adds r1, r3, r0
- ldrb r0, [r1]
- cmp r0, 0xC8
- bne _080E6110
- ldr r1, _080E6108 @ =gFacilityClassToTrainerClass
- ldr r2, _080E610C @ =0x000004a1
- adds r0, r3, r2
- ldrb r0, [r0]
- adds r0, r1
- b _080E6144
- .align 2, 0
-_080E6100: .4byte gSaveBlock2Ptr
-_080E6104: .4byte 0x0000056c
-_080E6108: .4byte gFacilityClassToTrainerClass
-_080E610C: .4byte 0x000004a1
-_080E6110:
- cmp r0, 0x63
- bhi _080E6130
- ldr r3, _080E6128 @ =gFacilityClassToTrainerClass
- ldr r2, _080E612C @ =gBattleTowerTrainers
- ldrb r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r3
- b _080E6144
- .align 2, 0
-_080E6128: .4byte gFacilityClassToTrainerClass
-_080E612C: .4byte gBattleTowerTrainers
-_080E6130:
- ldr r2, _080E614C @ =gFacilityClassToTrainerClass
- ldrb r0, [r1]
- subs r0, 0x64
- movs r1, 0xA4
- muls r0, r1
- adds r0, r3, r0
- adds r1, 0xB1
- adds r0, r1
- ldrb r0, [r0]
- adds r0, r2
-_080E6144:
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_080E614C: .4byte gFacilityClassToTrainerClass
- thumb_func_end sub_80E60E4
-
- thumb_func_start sub_80E6150
-sub_80E6150: @ 80E6150
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, _080E6178 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, _080E617C @ =0x0000056c
- adds r0, r1, r2
- ldrb r2, [r0]
- cmp r2, 0xC8
- bne _080E6184
- movs r3, 0
- ldr r0, _080E6180 @ =0x000004a4
- adds r2, r1, r0
-_080E6168:
- adds r0, r4, r3
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, 0x6
- ble _080E6168
- b _080E61CE
- .align 2, 0
-_080E6178: .4byte gSaveBlock2Ptr
-_080E617C: .4byte 0x0000056c
-_080E6180: .4byte 0x000004a4
-_080E6184:
- cmp r2, 0x63
- bhi _080E61AC
- movs r3, 0
- adds r5, r0, 0
- ldr r6, _080E61A8 @ =gBattleTowerTrainers + 1
-_080E618E:
- adds r2, r4, r3
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r2]
- adds r3, 0x1
- cmp r3, 0x2
- ble _080E618E
- b _080E61CE
- .align 2, 0
-_080E61A8: .4byte gBattleTowerTrainers + 1
-_080E61AC:
- movs r3, 0
- adds r5, r0, 0
- movs r0, 0xAC
- lsls r0, 1
- adds r2, r1, r0
- movs r6, 0xA4
-_080E61B8:
- adds r1, r4, r3
- ldrb r0, [r5]
- subs r0, 0x64
- muls r0, r6
- adds r0, r3, r0
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0x6
- ble _080E61B8
-_080E61CE:
- adds r1, r4, r3
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E6150
-
- thumb_func_start sub_80E61DC
-sub_80E61DC: @ 80E61DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- movs r0, 0
- str r0, [sp, 0x18]
- movs r1, 0x3C
- str r1, [sp, 0x1C]
- add r4, sp, 0xC
- movs r0, 0xFF
- strb r0, [r4]
- bl ZeroEnemyPartyMons
- ldr r1, _080E6210 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- ldr r2, _080E6214 @ =0x0000056c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x13
- bhi _080E6218
- movs r3, 0x6
- str r3, [sp, 0x14]
- b _080E62F4
- .align 2, 0
-_080E6210: .4byte gSaveBlock2Ptr
-_080E6214: .4byte 0x0000056c
-_080E6218:
- cmp r0, 0x1D
- bhi _080E6226
- movs r0, 0x9
- str r0, [sp, 0x14]
- movs r1, 0x1E
- str r1, [sp, 0x18]
- b _080E62F4
-_080E6226:
- cmp r0, 0x27
- bhi _080E6234
- movs r2, 0xC
- str r2, [sp, 0x14]
- movs r3, 0x3C
- str r3, [sp, 0x18]
- b _080E62F4
-_080E6234:
- cmp r0, 0x31
- bhi _080E6242
- movs r0, 0xF
- str r0, [sp, 0x14]
- movs r1, 0x5A
- str r1, [sp, 0x18]
- b _080E62F4
-_080E6242:
- cmp r0, 0x3B
- bhi _080E6250
- movs r2, 0x12
- str r2, [sp, 0x14]
- movs r3, 0x78
- str r3, [sp, 0x18]
- b _080E62F4
-_080E6250:
- cmp r0, 0x45
- bhi _080E625E
- movs r0, 0x15
- str r0, [sp, 0x14]
- movs r1, 0x96
- str r1, [sp, 0x18]
- b _080E62F4
-_080E625E:
- cmp r0, 0x4F
- bhi _080E626C
- movs r2, 0x1F
- str r2, [sp, 0x14]
- movs r3, 0xB4
- str r3, [sp, 0x18]
- b _080E62F4
-_080E626C:
- cmp r0, 0x63
- bhi _080E627E
- movs r0, 0x1F
- str r0, [sp, 0x14]
- movs r1, 0xC8
- str r1, [sp, 0x18]
- movs r2, 0x64
- str r2, [sp, 0x1C]
- b _080E62F4
-_080E627E:
- cmp r0, 0xC8
- bne _080E62B0
- movs r6, 0
- adds r4, r1, 0
-_080E6286:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080E62A8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2C
- adds r2, r6, 0
- muls r2, r1
- ldr r3, _080E62AC @ =0x000004d4
- adds r2, r3
- ldr r1, [r4]
- adds r1, r2
- bl CreateBattleTowerMon
- adds r6, 0x1
- cmp r6, 0x2
- ble _080E6286
- b _080E64A6
- .align 2, 0
-_080E62A8: .4byte gEnemyParty
-_080E62AC: .4byte 0x000004d4
-_080E62B0:
- movs r6, 0
-_080E62B2:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080E62E4 @ =gEnemyParty
- adds r0, r1
- ldr r1, _080E62E8 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- ldr r3, _080E62EC @ =0x0000056c
- adds r2, r1, r3
- ldrb r3, [r2]
- movs r2, 0xA4
- muls r2, r3
- ldr r3, _080E62F0 @ =0xffffc144
- adds r2, r3
- adds r1, r2
- movs r2, 0x2C
- muls r2, r6
- adds r2, 0x1C
- adds r1, r2
- bl CreateBattleTowerMon
- adds r6, 0x1
- cmp r6, 0x2
- ble _080E62B2
- b _080E64A6
- .align 2, 0
-_080E62E4: .4byte gEnemyParty
-_080E62E8: .4byte gSaveBlock2Ptr
-_080E62EC: .4byte 0x0000056c
-_080E62F0: .4byte 0xffffc144
-_080E62F4:
- ldr r2, _080E6314 @ =gSaveBlock2Ptr
- ldr r0, [r2]
- ldr r1, _080E6318 @ =0x0000055c
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r1, r2, 0
- cmp r0, 0
- beq _080E6320
- ldr r2, _080E631C @ =gBattleTowerLevel100Mons
- mov r10, r2
- movs r3, 0x64
- str r3, [sp, 0x10]
- b _080E6328
- .align 2, 0
-_080E6314: .4byte gSaveBlock2Ptr
-_080E6318: .4byte 0x0000055c
-_080E631C: .4byte gBattleTowerLevel100Mons
-_080E6320:
- ldr r0, _080E6378 @ =gBattleTowerLevel50Mons
- mov r10, r0
- movs r2, 0x32
- str r2, [sp, 0x10]
-_080E6328:
- ldr r2, _080E637C @ =gBattleTowerTrainers
- ldr r0, [r1]
- ldr r3, _080E6380 @ =0x0000056c
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- str r0, [sp, 0x20]
- movs r6, 0
-_080E6340:
- bl Random
- movs r1, 0xFF
- ands r1, r0
- ldr r2, [sp, 0x1C]
- adds r0, r1, 0
- muls r0, r2
- asrs r0, 8
- ldr r3, [sp, 0x18]
- adds r7, r0, r3
- ldr r0, [sp, 0x20]
- cmp r0, 0
- beq _080E636A
- lsls r0, r7, 4
- add r0, r10
- ldrb r0, [r0, 0x3]
- ldr r1, [sp, 0x20]
- ands r0, r1
- cmp r0, r1
- beq _080E636A
- b _080E64A0
-_080E636A:
- movs r5, 0
- lsls r0, r7, 4
- mov r2, r10
- adds r3, r0, r2
- movs r4, 0
- b _080E6388
- .align 2, 0
-_080E6378: .4byte gBattleTowerLevel50Mons
-_080E637C: .4byte gBattleTowerTrainers
-_080E6380: .4byte 0x0000056c
-_080E6384:
- adds r4, 0x64
- adds r5, 0x1
-_080E6388:
- cmp r5, r6
- bge _080E63A2
- ldr r1, _080E64B8 @ =gEnemyParty
- adds r0, r4, r1
- movs r1, 0xB
- movs r2, 0
- str r3, [sp, 0x24]
- bl GetMonData
- ldr r3, [sp, 0x24]
- ldrh r2, [r3]
- cmp r0, r2
- bne _080E6384
-_080E63A2:
- cmp r5, r6
- bne _080E64A0
- movs r5, 0
- cmp r5, r6
- bge _080E63F0
- ldr r3, _080E64BC @ =sBattleTowerHeldItems
- mov r9, r3
- lsls r0, r7, 4
- add r0, r10
- mov r8, r0
- movs r3, 0
-_080E63B8:
- ldr r0, _080E64B8 @ =gEnemyParty
- adds r4, r3, r0
- adds r0, r4, 0
- movs r1, 0xC
- movs r2, 0
- str r3, [sp, 0x24]
- bl GetMonData
- ldr r3, [sp, 0x24]
- cmp r0, 0
- beq _080E63E8
- adds r0, r4, 0
- movs r1, 0xC
- movs r2, 0
- bl GetMonData
- mov r2, r8
- ldrb r1, [r2, 0x2]
- lsls r1, 1
- add r1, r9
- ldr r3, [sp, 0x24]
- ldrh r1, [r1]
- cmp r0, r1
- beq _080E63F0
-_080E63E8:
- adds r3, 0x64
- adds r5, 0x1
- cmp r5, r6
- blt _080E63B8
-_080E63F0:
- cmp r5, r6
- bne _080E64A0
- movs r5, 0
- cmp r5, r6
- bge _080E6412
- add r0, sp, 0x4
- ldrh r0, [r0]
- cmp r0, r7
- beq _080E6412
- add r1, sp, 0x4
-_080E6404:
- adds r1, 0x2
- adds r5, 0x1
- cmp r5, r6
- bge _080E6412
- ldrh r0, [r1]
- cmp r0, r7
- bne _080E6404
-_080E6412:
- cmp r5, r6
- bne _080E64A0
- lsls r0, r6, 1
- add r0, sp
- adds r0, 0x4
- strh r7, [r0]
- movs r3, 0x64
- adds r0, r6, 0
- muls r0, r3
- ldr r1, _080E64B8 @ =gEnemyParty
- adds r0, r1
- lsls r4, r7, 4
- mov r3, r10
- adds r2, r4, r3
- ldrh r1, [r2]
- ldrb r2, [r2, 0xC]
- str r2, [sp]
- ldr r2, [sp, 0x10]
- ldr r3, [sp, 0x14]
- bl CreateMonWithEVSpread
- movs r5, 0
- adds r0, r6, 0x1
- mov r9, r0
- mov r8, r4
- movs r0, 0x64
- adds r7, r6, 0
- muls r7, r0
- mov r0, r10
- adds r0, 0x4
- adds r4, r0
- ldr r3, _080E64B8 @ =gEnemyParty
-_080E6452:
- ldrh r1, [r4]
- lsls r2, r5, 24
- lsrs r2, 24
- adds r0, r7, r3
- str r3, [sp, 0x24]
- bl SetMonMoveSlot
- ldrh r0, [r4]
- ldr r3, [sp, 0x24]
- cmp r0, 0xDA
- bne _080E646E
- movs r0, 0
- mov r1, sp
- strb r0, [r1, 0xC]
-_080E646E:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _080E6452
- movs r2, 0x64
- adds r4, r6, 0
- muls r4, r2
- ldr r3, _080E64B8 @ =gEnemyParty
- adds r4, r3
- adds r0, r4, 0
- movs r1, 0x20
- add r2, sp, 0xC
- bl SetMonData
- mov r0, r8
- add r0, r10
- ldrb r2, [r0, 0x2]
- lsls r2, 1
- ldr r0, _080E64BC @ =sBattleTowerHeldItems
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
- mov r6, r9
-_080E64A0:
- cmp r6, 0x3
- beq _080E64A6
- b _080E6340
-_080E64A6:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E64B8: .4byte gEnemyParty
-_080E64BC: .4byte sBattleTowerHeldItems
- thumb_func_end sub_80E61DC
-
- thumb_func_start sub_80E64C0
-sub_80E64C0: @ 80E64C0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080E6554
- cmp r4, 0
- bne _080E64EC
- ldr r0, _080E6514 @ =gStringVar1
- ldr r1, _080E6518 @ =gUnknown_83FE859
- bl StringAppend
-_080E64EC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _080E6514 @ =gStringVar1
- movs r0, 0xB
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _080E651C @ =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- bl StringAppend
- cmp r4, 0x5
- beq _080E6538
- cmp r4, 0x5
- bgt _080E6520
- cmp r4, 0x2
- beq _080E652A
- b _080E654C
- .align 2, 0
-_080E6514: .4byte gStringVar1
-_080E6518: .4byte gUnknown_83FE859
-_080E651C: .4byte gSpeciesNames
-_080E6520:
- cmp r4, 0x8
- beq _080E6538
- cmp r4, 0xB
- beq _080E6538
- b _080E654C
-_080E652A:
- ldr r1, _080E6534 @ =gUnknown_83FE85E
- adds r0, r6, 0
- bl StringAppend
- b _080E6554
- .align 2, 0
-_080E6534: .4byte gUnknown_83FE85E
-_080E6538:
- ldr r0, _080E6544 @ =gStringVar1
- ldr r1, _080E6548 @ =gUnknown_83FE85C
- bl StringAppend
- b _080E6554
- .align 2, 0
-_080E6544: .4byte gStringVar1
-_080E6548: .4byte gUnknown_83FE85C
-_080E654C:
- ldr r0, _080E655C @ =gStringVar1
- ldr r1, _080E6560 @ =gUnknown_83FE859
- bl StringAppend
-_080E6554:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080E655C: .4byte gStringVar1
-_080E6560: .4byte gUnknown_83FE859
- thumb_func_end sub_80E64C0
-
- thumb_func_start sub_80E6564
-sub_80E6564: @ 80E6564
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, [sp, 0x20]
- ldr r4, [sp, 0x24]
- mov r9, r4
- ldr r4, [sp, 0x28]
- mov r10, r4
- ldr r7, [sp, 0x2C]
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r12, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- movs r2, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- beq _080E6632
- cmp r4, 0
- beq _080E6632
- ldr r0, _080E6640 @ =gBattleTowerBannedSpecies
- ldrh r1, [r0]
- ldr r5, _080E6644 @ =0x0000ffff
- adds r3, r0, 0
- cmp r1, r5
- beq _080E65C8
- cmp r1, r4
- beq _080E65BC
- adds r1, r3, 0
-_080E65AE:
- adds r1, 0x2
- adds r2, 0x1
- ldrh r0, [r1]
- cmp r0, r5
- beq _080E65C8
- cmp r0, r4
- bne _080E65AE
-_080E65BC:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- ldr r0, _080E6644 @ =0x0000ffff
- cmp r1, r0
- bne _080E6632
-_080E65C8:
- mov r0, r12
- cmp r0, 0
- bne _080E65D4
- mov r1, r8
- cmp r1, 0x32
- bhi _080E6632
-_080E65D4:
- movs r2, 0
- ldrb r3, [r7]
- cmp r2, r3
- bge _080E65F4
- mov r1, r9
- ldrh r0, [r1]
- cmp r0, r4
- beq _080E65F4
- adds r5, r3, 0
-_080E65E6:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _080E65F4
- ldrh r0, [r1]
- cmp r0, r4
- bne _080E65E6
-_080E65F4:
- cmp r2, r3
- bne _080E6632
- cmp r6, 0
- beq _080E661E
- movs r2, 0
- cmp r2, r3
- bge _080E661A
- mov r1, r10
- ldrh r0, [r1]
- cmp r0, r6
- beq _080E661A
- adds r5, r3, 0
-_080E660C:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _080E661A
- ldrh r0, [r1]
- cmp r0, r6
- bne _080E660C
-_080E661A:
- cmp r2, r3
- bne _080E6632
-_080E661E:
- lsls r0, r3, 1
- add r0, r9
- strh r4, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- add r0, r10
- strh r6, [r0]
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
-_080E6632:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6640: .4byte gBattleTowerBannedSpecies
-_080E6644: .4byte 0x0000ffff
- thumb_func_end sub_80E6564
-
- thumb_func_start CheckPartyBattleTowerBanlist
-CheckPartyBattleTowerBanlist: @ 80E6648
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- add r1, sp, 0x28
- movs r0, 0
- strb r0, [r1]
- movs r7, 0
- mov r9, r1
- add r0, sp, 0x1C
- mov r10, r0
-_080E6662:
- movs r0, 0x64
- adds r5, r7, 0
- muls r5, r0
- ldr r0, _080E6724 @ =gPlayerParty
- adds r5, r0
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- mov r8, r0
- mov r1, r8
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r5, _080E6728 @ =gSpecialVar_Result
- ldrb r3, [r5]
- str r4, [sp]
- add r0, sp, 0x10
- str r0, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- mov r0, r8
- adds r1, r6, 0
- bl sub_80E6564
- adds r7, 0x1
- cmp r7, 0x5
- ble _080E6662
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _080E6750
- ldr r1, _080E672C @ =gStringVar1
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080E6730 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0
- mov r1, r9
- strb r0, [r1]
- ldr r2, _080E6734 @ =gBattleTowerBannedSpecies
- ldrh r0, [r2]
- ldr r1, _080E6738 @ =0x0000ffff
- cmp r0, r1
- beq _080E6704
- mov r5, r9
- adds r6, r1, 0
- adds r4, r2, 0
-_080E66F2:
- ldrh r0, [r4]
- ldrb r1, [r5]
- bl sub_80E64C0
- strb r0, [r5]
- adds r4, 0x2
- ldrh r0, [r4]
- cmp r0, r6
- bne _080E66F2
-_080E6704:
- ldr r4, _080E672C @ =gStringVar1
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r7, r0, 16
- subs r0, r7, 0x1
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _080E6740
- ldr r1, _080E673C @ =gUnknown_83FE860
- b _080E6742
- .align 2, 0
-_080E6724: .4byte gPlayerParty
-_080E6728: .4byte gSpecialVar_Result
-_080E672C: .4byte gStringVar1
-_080E6730: .4byte gSpecialVar_0x8004
-_080E6734: .4byte gBattleTowerBannedSpecies
-_080E6738: .4byte 0x0000ffff
-_080E673C: .4byte gUnknown_83FE860
-_080E6740:
- ldr r1, _080E674C @ =gUnknown_83FE864
-_080E6742:
- adds r0, r4, 0
- bl StringAppend
- b _080E6770
- .align 2, 0
-_080E674C: .4byte gUnknown_83FE864
-_080E6750:
- ldr r1, _080E6780 @ =gSpecialVar_0x8004
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080E6784 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r5]
- ldr r1, _080E6788 @ =0x0000055c
- adds r2, r1
- movs r1, 0x1
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080E6770:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6780: .4byte gSpecialVar_0x8004
-_080E6784: .4byte gSaveBlock2Ptr
-_080E6788: .4byte 0x0000055c
- thumb_func_end CheckPartyBattleTowerBanlist
-
- thumb_func_start sub_80E678C
-sub_80E678C: @ 80E678C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0x12
- bl EC_DoesEasyChatStringFitOnLine
- lsls r0, 24
- cmp r0, 0
- beq _080E67E4
- ldr r5, _080E67E0 @ =gStringVar4
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertEasyChatWordsToString
- ldrb r0, [r5]
- movs r1, 0x1
- cmp r0, 0xFE
- beq _080E67C2
- adds r2, r5, 0
-_080E67B8:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r1, 0x1
- cmp r0, 0xFE
- bne _080E67B8
-_080E67C2:
- ldr r2, _080E67E0 @ =gStringVar4
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, r2, 0
- cmp r0, 0xFE
- beq _080E67D8
-_080E67CE:
- adds r1, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFE
- bne _080E67CE
-_080E67D8:
- adds r1, r3
- movs r0, 0xFA
- strb r0, [r1]
- b _080E67F0
- .align 2, 0
-_080E67E0: .4byte gStringVar4
-_080E67E4:
- ldr r0, _080E67F8 @ =gStringVar4
- adds r1, r4, 0
- movs r2, 0x3
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
-_080E67F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E67F8: .4byte gStringVar4
- thumb_func_end sub_80E678C
-
- thumb_func_start PrintBattleTowerTrainerGreeting
-PrintBattleTowerTrainerGreeting: @ 80E67FC
- push {lr}
- ldr r0, _080E6818 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldr r1, _080E681C @ =0x0000056c
- adds r0, r2, r1
- ldrb r1, [r0]
- cmp r1, 0xC8
- bne _080E6820
- movs r1, 0x96
- lsls r1, 3
- adds r0, r2, r1
- bl sub_80E678C
- b _080E684C
- .align 2, 0
-_080E6818: .4byte gSaveBlock2Ptr
-_080E681C: .4byte 0x0000056c
-_080E6820:
- cmp r1, 0x63
- bhi _080E683C
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E6838 @ =gBattleTowerTrainers + 6
- adds r0, r1
- bl sub_80E678C
- b _080E684C
- .align 2, 0
-_080E6838: .4byte gBattleTowerTrainers + 6
-_080E683C:
- ldrb r1, [r0]
- movs r0, 0xA4
- muls r0, r1
- adds r0, r2
- ldr r1, _080E6850 @ =0xffffc154
- adds r0, r1
- bl sub_80E678C
-_080E684C:
- pop {r0}
- bx r0
- .align 2, 0
-_080E6850: .4byte 0xffffc154
- thumb_func_end PrintBattleTowerTrainerGreeting
-
- thumb_func_start sub_80E6854
-sub_80E6854: @ 80E6854
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _080E686C @ =gUnknown_203AAB8
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080E6870
- cmp r0, 0x1
- ble _080E68B0
- cmp r0, 0x2
- beq _080E68AC
- b _080E68B0
- .align 2, 0
-_080E686C: .4byte gUnknown_203AAB8
-_080E6870:
- movs r5, 0
- ldr r6, _080E68A4 @ =gSaveBlock1Ptr
-_080E6874:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- adds r1, r4, 0
- adds r1, 0x38
- ldr r0, [r6]
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _080E68A8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _080E6874
- b _080E68B0
- .align 2, 0
-_080E68A4: .4byte gSaveBlock1Ptr
-_080E68A8: .4byte gPlayerParty
-_080E68AC:
- bl sub_80E7550
-_080E68B0:
- ldr r0, _080E68C0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E68C0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end sub_80E6854
-
- thumb_func_start sub_80E68C4
-sub_80E68C4: @ 80E68C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl BT_IsDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E68EC
- ldr r0, _080E68F4 @ =gMain
- ldr r1, _080E68F8 @ =sub_80E6854
- str r1, [r0, 0x8]
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _080E68FC @ =CB2_InitBattle
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080E68EC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E68F4: .4byte gMain
-_080E68F8: .4byte sub_80E6854
-_080E68FC: .4byte CB2_InitBattle
- thumb_func_end sub_80E68C4
-
- thumb_func_start StartSpecialBattle
-StartSpecialBattle: @ 80E6900
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _080E691C @ =gUnknown_203AAB8
- ldr r1, _080E6920 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strh r1, [r0]
- ldrh r2, [r0]
- cmp r2, 0x1
- beq _080E6944
- cmp r2, 0x1
- bgt _080E6924
- cmp r2, 0
- beq _080E692A
- b _080E69E6
- .align 2, 0
-_080E691C: .4byte gUnknown_203AAB8
-_080E6920: .4byte gSpecialVar_0x8004
-_080E6924:
- cmp r2, 0x2
- beq _080E6998
- b _080E69E6
-_080E692A:
- ldr r1, _080E693C @ =gBattleTypeFlags
- movs r0, 0x84
- lsls r0, 1
- str r0, [r1]
- ldr r0, _080E6940 @ =gTrainerBattleOpponent_A
- strh r2, [r0]
- bl sub_80E61DC
- b _080E6970
- .align 2, 0
-_080E693C: .4byte gBattleTypeFlags
-_080E6940: .4byte gTrainerBattleOpponent_A
-_080E6944:
- movs r5, 0
- ldr r6, _080E698C @ =gSaveBlock1Ptr
-_080E6948:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080E6990 @ =gPlayerParty
- adds r0, r4, r0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r4, 0x38
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _080E6948
-_080E6970:
- ldr r0, _080E6994 @ =sub_80E68C4
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl PlayMapChosenOrBattleBGM
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BT_StartOnField
- b _080E69E6
- .align 2, 0
-_080E698C: .4byte gSaveBlock1Ptr
-_080E6990: .4byte gPlayerParty
-_080E6994: .4byte sub_80E68C4
-_080E6998:
- bl ZeroEnemyPartyMons
- movs r5, 0
- ldr r4, _080E69F0 @ =gSaveBlock2Ptr
-_080E69A0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080E69F4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2C
- adds r2, r5, 0
- muls r2, r1
- ldr r1, _080E69F8 @ =0x000004d4
- adds r2, r1
- ldr r1, [r4]
- adds r1, r2
- bl CreateBattleTowerMon
- adds r5, 0x1
- cmp r5, 0x2
- ble _080E69A0
- ldr r1, _080E69FC @ =gBattleTypeFlags
- ldr r0, _080E6A00 @ =0x00000808
- str r0, [r1]
- ldr r1, _080E6A04 @ =gTrainerBattleOpponent_A
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080E6A08 @ =sub_80E68C4
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl PlayMapChosenOrBattleBGM
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BT_StartOnField
-_080E69E6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E69F0: .4byte gSaveBlock2Ptr
-_080E69F4: .4byte gEnemyParty
-_080E69F8: .4byte 0x000004d4
-_080E69FC: .4byte gBattleTypeFlags
-_080E6A00: .4byte 0x00000808
-_080E6A04: .4byte gTrainerBattleOpponent_A
-_080E6A08: .4byte sub_80E68C4
- thumb_func_end StartSpecialBattle
-
- thumb_func_start SetBattleTowerProperty
-SetBattleTowerProperty: @ 80E6A0C
- push {r4-r6,lr}
- ldr r1, _080E6A34 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- ldr r2, _080E6A38 @ =0x0000055c
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r5, r0, 31
- ldr r0, _080E6A3C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r6, r1, 0
- cmp r0, 0xE
- bls _080E6A28
- b _080E6C80
-_080E6A28:
- lsls r0, 2
- ldr r1, _080E6A40 @ =_080E6A44
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E6A34: .4byte gSaveBlock2Ptr
-_080E6A38: .4byte 0x0000055c
-_080E6A3C: .4byte gSpecialVar_0x8004
-_080E6A40: .4byte _080E6A44
- .align 2, 0
-_080E6A44:
- .4byte _080E6A80
- .4byte _080E6AAC
- .4byte _080E6AD0
- .4byte _080E6AE4
- .4byte _080E6AFC
- .4byte _080E6B14
- .4byte _080E6B3C
- .4byte _080E6BA4
- .4byte _080E6BD8
- .4byte _080E6C80
- .4byte _080E6C00
- .4byte _080E6C14
- .4byte _080E6C30
- .4byte _080E6C4C
- .4byte _080E6C6C
-_080E6A80:
- ldr r0, _080E6AA0 @ =gBattleStruct
- ldr r1, [r0]
- adds r1, 0xDA
- ldr r0, [r6]
- ldr r2, _080E6AA4 @ =0x0000055e
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r2
- adds r0, r5
- ldr r1, _080E6AA8 @ =gSpecialVar_0x8005
- ldrh r1, [r1]
- strb r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6AA0: .4byte gBattleStruct
-_080E6AA4: .4byte 0x0000055e
-_080E6AA8: .4byte gSpecialVar_0x8005
-_080E6AAC:
- ldr r2, [r6]
- ldr r0, _080E6AC8 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r3, _080E6ACC @ =0x0000055c
- adds r2, r3
- movs r1, 0x1
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- b _080E6C80
- .align 2, 0
-_080E6AC8: .4byte gSpecialVar_0x8005
-_080E6ACC: .4byte 0x0000055c
-_080E6AD0:
- ldr r0, [r6]
- lsls r1, r5, 1
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r2
- adds r0, r1
- ldr r1, _080E6AE0 @ =gSpecialVar_0x8005
- b _080E6BC6
- .align 2, 0
-_080E6AE0: .4byte gSpecialVar_0x8005
-_080E6AE4:
- ldr r0, [r6]
- lsls r1, r5, 1
- ldr r3, _080E6AF4 @ =0x00000564
- adds r0, r3
- adds r0, r1
- ldr r1, _080E6AF8 @ =gSpecialVar_0x8005
- b _080E6BC6
- .align 2, 0
-_080E6AF4: .4byte 0x00000564
-_080E6AF8: .4byte gSpecialVar_0x8005
-_080E6AFC:
- ldr r0, [r6]
- ldr r1, _080E6B0C @ =gSpecialVar_0x8005
- ldrh r1, [r1]
- ldr r2, _080E6B10 @ =0x0000056c
- adds r0, r2
- strb r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6B0C: .4byte gSpecialVar_0x8005
-_080E6B10: .4byte 0x0000056c
-_080E6B14:
- movs r2, 0
- ldr r5, _080E6B30 @ =gSaveBlock2Ptr
- ldr r4, _080E6B34 @ =0x0000056d
- ldr r3, _080E6B38 @ =gUnknown_203B0D4
-_080E6B1C:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _080E6B1C
- b _080E6C80
- .align 2, 0
-_080E6B30: .4byte gSaveBlock2Ptr
-_080E6B34: .4byte 0x0000056d
-_080E6B38: .4byte gUnknown_203B0D4
-_080E6B3C:
- ldr r1, [r6]
- ldr r3, _080E6B94 @ =0x0000056c
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0xC8
- bne _080E6B52
- movs r2, 0x94
- lsls r2, 3
- adds r0, r1, r2
- bl sub_80E7524
-_080E6B52:
- ldr r0, [r6]
- movs r3, 0xAF
- lsls r3, 3
- adds r2, r0, r3
- ldrh r1, [r2]
- ldr r0, _080E6B98 @ =0x0000270e
- cmp r1, r0
- bhi _080E6B66
- adds r0, r1, 0x1
- strh r0, [r2]
-_080E6B66:
- ldr r1, [r6]
- lsls r5, 1
- movs r4, 0xAC
- lsls r4, 3
- adds r1, r4
- adds r1, r5
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- bl sub_80E6E48
- ldr r1, _080E6B9C @ =gSpecialVar_Result
- ldr r0, [r6]
- adds r0, r4
- adds r0, r5
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080E6BA0 @ =gStringVar1
- adds r0, 0xA1
- strb r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- b _080E6C80
- .align 2, 0
-_080E6B94: .4byte 0x0000056c
-_080E6B98: .4byte 0x0000270e
-_080E6B9C: .4byte gSpecialVar_Result
-_080E6BA0: .4byte gStringVar1
-_080E6BA4:
- ldr r0, [r6]
- lsls r5, 1
- ldr r4, _080E6BCC @ =0x00000564
- adds r0, r4
- adds r2, r0, r5
- ldrh r1, [r2]
- ldr r0, _080E6BD0 @ =0x00000595
- cmp r1, r0
- bhi _080E6BBA
- adds r0, r1, 0x1
- strh r0, [r2]
-_080E6BBA:
- bl sub_80E6E48
- ldr r0, _080E6BD4 @ =gSpecialVar_Result
- ldr r1, [r6]
- adds r1, r4
- adds r1, r5
-_080E6BC6:
- ldrh r1, [r1]
- strh r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6BCC: .4byte 0x00000564
-_080E6BD0: .4byte 0x00000595
-_080E6BD4: .4byte gSpecialVar_Result
-_080E6BD8:
- ldr r3, [r6]
- ldr r0, _080E6BF8 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _080E6BFC @ =0x0000055c
- adds r3, r1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080E6C80
- .align 2, 0
-_080E6BF8: .4byte gSpecialVar_0x8005
-_080E6BFC: .4byte 0x0000055c
-_080E6C00:
- ldr r0, [r6]
- ldr r2, _080E6C10 @ =0x0000057a
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGameStat
- b _080E6C80
- .align 2, 0
-_080E6C10: .4byte 0x0000057a
-_080E6C14:
- ldr r0, [r6]
- ldr r3, _080E6C2C @ =0x0000055e
- adds r0, r3
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _080E6C80
- adds r0, r5, 0
- bl sub_80E5A38
- b _080E6C80
- .align 2, 0
-_080E6C2C: .4byte 0x0000055e
-_080E6C30:
- ldr r1, [r6]
- ldr r0, _080E6C44 @ =0x0000055e
- adds r1, r0
- adds r1, r5
- ldr r0, _080E6C48 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xDA
- ldrb r0, [r0]
- b _080E6C7E
- .align 2, 0
-_080E6C44: .4byte 0x0000055e
-_080E6C48: .4byte gBattleStruct
-_080E6C4C:
- adds r0, r5, 0
- bl sub_80E7188
- ldr r1, _080E6C64 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- lsls r2, r5, 1
- ldr r3, _080E6C68 @ =0x0000057c
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
- b _080E6C80
- .align 2, 0
-_080E6C64: .4byte gSaveBlock2Ptr
-_080E6C68: .4byte 0x0000057c
-_080E6C6C:
- ldr r1, [r6]
- ldr r2, _080E6C88 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- movs r3, 0xB0
- lsls r3, 3
- adds r1, r3
-_080E6C7E:
- strb r0, [r1]
-_080E6C80:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6C88: .4byte 0x0000055c
- thumb_func_end SetBattleTowerProperty
-
- thumb_func_start BattleTowerUtil
-BattleTowerUtil: @ 80E6C8C
- push {r4,lr}
- ldr r1, _080E6CB4 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- ldr r2, _080E6CB8 @ =0x0000055c
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r4, r0, 31
- ldr r0, _080E6CBC @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xE
- bls _080E6CA8
- b _080E6E08
-_080E6CA8:
- lsls r0, 2
- ldr r1, _080E6CC0 @ =_080E6CC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E6CB4: .4byte gSaveBlock2Ptr
-_080E6CB8: .4byte 0x0000055c
-_080E6CBC: .4byte gSpecialVar_0x8004
-_080E6CC0: .4byte _080E6CC4
- .align 2, 0
-_080E6CC4:
- .4byte _080E6D00
- .4byte _080E6D14
- .4byte _080E6D2C
- .4byte _080E6D3C
- .4byte _080E6D58
- .4byte _080E6E08
- .4byte _080E6E08
- .4byte _080E6E08
- .4byte _080E6D70
- .4byte _080E6D8C
- .4byte _080E6D9C
- .4byte _080E6DB0
- .4byte _080E6DB8
- .4byte _080E6DD4
- .4byte _080E6DF4
-_080E6D00:
- ldr r0, _080E6D0C @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r3, _080E6D10 @ =0x0000055e
- adds r1, r3
- adds r1, r4
- b _080E6D60
- .align 2, 0
-_080E6D0C: .4byte gSpecialVar_Result
-_080E6D10: .4byte 0x0000055e
-_080E6D14:
- ldr r0, _080E6D24 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r2, _080E6D28 @ =0x0000055c
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 31
- b _080E6D7C
- .align 2, 0
-_080E6D24: .4byte gSpecialVar_Result
-_080E6D28: .4byte 0x0000055c
-_080E6D2C:
- ldr r2, _080E6D38 @ =gSpecialVar_Result
- ldr r0, [r3]
- lsls r1, r4, 1
- movs r3, 0xAC
- lsls r3, 3
- b _080E6D44
- .align 2, 0
-_080E6D38: .4byte gSpecialVar_Result
-_080E6D3C:
- ldr r2, _080E6D50 @ =gSpecialVar_Result
- ldr r0, [r3]
- lsls r1, r4, 1
- ldr r3, _080E6D54 @ =0x00000564
-_080E6D44:
- adds r0, r3
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- b _080E6E08
- .align 2, 0
-_080E6D50: .4byte gSpecialVar_Result
-_080E6D54: .4byte 0x00000564
-_080E6D58:
- ldr r0, _080E6D68 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r2, _080E6D6C @ =0x0000056c
- adds r1, r2
-_080E6D60:
- ldrb r1, [r1]
- strh r1, [r0]
- b _080E6E08
- .align 2, 0
-_080E6D68: .4byte gSpecialVar_Result
-_080E6D6C: .4byte 0x0000056c
-_080E6D70:
- ldr r0, _080E6D84 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r3, _080E6D88 @ =0x0000055c
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 30
-_080E6D7C:
- lsrs r1, 31
- strh r1, [r0]
- b _080E6E08
- .align 2, 0
-_080E6D84: .4byte gSpecialVar_Result
-_080E6D88: .4byte 0x0000055c
-_080E6D8C:
- adds r0, r4, 0
- bl sub_80E7188
- ldr r1, _080E6D98 @ =gSpecialVar_Result
- strh r0, [r1]
- b _080E6E08
- .align 2, 0
-_080E6D98: .4byte gSpecialVar_Result
-_080E6D9C:
- ldr r0, [r3]
- ldr r1, _080E6DAC @ =0x0000057a
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGameStat
- b _080E6E08
- .align 2, 0
-_080E6DAC: .4byte 0x0000057a
-_080E6DB0:
- adds r0, r4, 0
- bl sub_80E5A38
- b _080E6E08
-_080E6DB8:
- ldr r1, [r3]
- ldr r2, _080E6DCC @ =0x0000055e
- adds r1, r2
- adds r1, r4
- ldr r0, _080E6DD0 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xDA
- ldrb r0, [r0]
- b _080E6E06
- .align 2, 0
-_080E6DCC: .4byte 0x0000055e
-_080E6DD0: .4byte gBattleStruct
-_080E6DD4:
- adds r0, r4, 0
- bl sub_80E7188
- ldr r1, _080E6DEC @ =gSaveBlock2Ptr
- ldr r1, [r1]
- lsls r2, r4, 1
- ldr r3, _080E6DF0 @ =0x0000057c
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
- b _080E6E08
- .align 2, 0
-_080E6DEC: .4byte gSaveBlock2Ptr
-_080E6DF0: .4byte 0x0000057c
-_080E6DF4:
- ldr r1, [r3]
- ldr r2, _080E6E10 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- movs r3, 0xB0
- lsls r3, 3
- adds r1, r3
-_080E6E06:
- strb r0, [r1]
-_080E6E08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6E10: .4byte 0x0000055c
- thumb_func_end BattleTowerUtil
-
- thumb_func_start SetBattleTowerParty
-SetBattleTowerParty: @ 80E6E14
- push {r4,r5,lr}
- movs r2, 0
- ldr r5, _080E6E3C @ =gUnknown_203B0D4
- ldr r4, _080E6E40 @ =gSaveBlock2Ptr
- ldr r3, _080E6E44 @ =0x0000056d
-_080E6E1E:
- adds r0, r2, r5
- ldr r1, [r4]
- adds r1, r3
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _080E6E1E
- bl ReducePlayerPartyToThree
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6E3C: .4byte gUnknown_203B0D4
-_080E6E40: .4byte gSaveBlock2Ptr
-_080E6E44: .4byte 0x0000056d
- thumb_func_end SetBattleTowerParty
-
- thumb_func_start sub_80E6E48
-sub_80E6E48: @ 80E6E48
- push {r4-r6,lr}
- ldr r6, _080E6E98 @ =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, _080E6E9C @ =0x0000055c
- adds r0, r1
- ldrb r4, [r0]
- lsls r4, 31
- lsrs r4, 31
- adds r0, r4, 0
- bl sub_80E7188
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r6]
- lsls r4, 1
- movs r2, 0xAD
- lsls r2, 3
- adds r0, r2
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, r5
- bcs _080E6E76
- strh r5, [r1]
-_080E6E76:
- ldr r0, [r6]
- adds r2, r0, r2
- ldr r3, _080E6EA0 @ =0x0000056a
- adds r1, r0, r3
- ldrh r0, [r2]
- ldrh r3, [r1]
- cmp r0, r3
- bls _080E6EA8
- adds r5, r0, 0
- movs r0, 0x20
- adds r1, r5, 0
- bl SetGameStat
- ldr r1, _080E6EA4 @ =0x0000270f
- cmp r5, r1
- bhi _080E6EB8
- b _080E6ECC
- .align 2, 0
-_080E6E98: .4byte gSaveBlock2Ptr
-_080E6E9C: .4byte 0x0000055c
-_080E6EA0: .4byte 0x0000056a
-_080E6EA4: .4byte 0x0000270f
-_080E6EA8:
- ldrh r5, [r1]
- movs r0, 0x20
- adds r1, r5, 0
- bl SetGameStat
- ldr r1, _080E6EC4 @ =0x0000270f
- cmp r5, r1
- bls _080E6ECC
-_080E6EB8:
- ldr r0, [r6]
- ldr r2, _080E6EC8 @ =0x0000057a
- adds r0, r2
- strh r1, [r0]
- b _080E6ED4
- .align 2, 0
-_080E6EC4: .4byte 0x0000270f
-_080E6EC8: .4byte 0x0000057a
-_080E6ECC:
- ldr r0, [r6]
- ldr r3, _080E6EDC @ =0x0000057a
- adds r0, r3
- strh r5, [r0]
-_080E6ED4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6EDC: .4byte 0x0000057a
- thumb_func_end sub_80E6E48
-
- thumb_func_start sub_80E6EE0
-sub_80E6EE0: @ 80E6EE0
- push {r4-r6,lr}
- ldr r0, _080E6F00 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r5, r2, 0
- adds r5, 0xB0
- ldr r1, _080E6F04 @ =0x0000055c
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r6, r0, 31
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _080E6F0C
- ldr r4, _080E6F08 @ =sFemaleTrainerClasses
- b _080E6F0E
- .align 2, 0
-_080E6F00: .4byte gSaveBlock2Ptr
-_080E6F04: .4byte 0x0000055c
-_080E6F08: .4byte sFemaleTrainerClasses
-_080E6F0C:
- ldr r4, _080E6FA0 @ =sMaleTrainerClasses
-_080E6F0E:
- ldrb r0, [r2, 0xA]
- ldrb r1, [r2, 0xB]
- adds r0, r1
- ldrb r1, [r2, 0xC]
- adds r0, r1
- ldrb r1, [r2, 0xD]
- adds r0, r1
- movs r1, 0
- bl __umodsi3
- adds r0, r4
- ldrb r0, [r0]
- strb r6, [r5]
- strb r0, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0xC
- ldr r4, _080E6FA4 @ =gSaveBlock2Ptr
- ldr r1, [r4]
- adds r1, 0xA
- bl CopyTrainerId
- adds r0, r5, 0x4
- ldr r1, [r4]
- bl StringCopy7
- adds r0, r6, 0
- bl sub_80E7188
- strh r0, [r5, 0x2]
- movs r4, 0
- ldr r6, _080E6FA8 @ =gSaveBlock1Ptr
- ldr r3, _080E6FAC @ =0x00002cac
- adds r2, r5, 0
- adds r2, 0x10
-_080E6F52:
- lsls r0, r4, 1
- ldr r1, [r6]
- adds r1, r3
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r2]
- adds r2, 0x2
- adds r4, 0x1
- cmp r4, 0x5
- ble _080E6F52
- movs r4, 0
-_080E6F68:
- ldr r6, _080E6FA4 @ =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, _080E6FB0 @ =0x0000056d
- adds r0, r1
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E6FB4 @ =gEnemyParty + 500 @ &gEnemyParty[5]
- adds r0, r1
- movs r1, 0x2C
- muls r1, r4
- adds r1, 0x1C
- adds r1, r5, r1
- bl sub_803E23C
- adds r4, 0x1
- cmp r4, 0x2
- ble _080E6F68
- ldr r0, [r6]
- adds r0, 0xB0
- bl SetBattleTowerRecordChecksum
- bl sub_80E6E48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6FA0: .4byte sMaleTrainerClasses
-_080E6FA4: .4byte gSaveBlock2Ptr
-_080E6FA8: .4byte gSaveBlock1Ptr
-_080E6FAC: .4byte 0x00002cac
-_080E6FB0: .4byte 0x0000056d
-_080E6FB4: .4byte gEnemyParty + 500 @ &gEnemyParty[5]
- thumb_func_end sub_80E6EE0
-
- thumb_func_start SaveBattleTowerProgress
-SaveBattleTowerProgress: @ 80E6FB8
- push {r4,r5,lr}
- ldr r0, _080E703C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, _080E7040 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r5, r0, 31
- ldr r0, _080E7044 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x3
- beq _080E6FD4
- cmp r0, 0
- bne _080E6FF2
-_080E6FD4:
- lsls r2, r5, 1
- ldr r3, _080E7048 @ =0x00000564
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _080E6FEE
- subs r3, 0x4
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _080E6FF2
-_080E6FEE:
- bl sub_80E6EE0
-_080E6FF2:
- bl sub_80E712C
- ldr r4, _080E703C @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r1, _080E704C @ =gBattleOutcome
- ldrb r1, [r1]
- ldr r2, _080E7050 @ =0x0000055d
- adds r0, r2
- strb r1, [r0]
- ldr r0, _080E7044 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- cmp r1, 0x3
- beq _080E7016
- ldr r0, [r4]
- ldr r3, _080E7054 @ =0x0000055e
- adds r0, r3
- adds r0, r5
- strb r1, [r0]
-_080E7016:
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0
- bl VarSet
- ldr r1, [r4]
- ldr r0, _080E7040 @ =0x0000055c
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- movs r0, 0x2
- bl TrySavingData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E703C: .4byte gSaveBlock2Ptr
-_080E7040: .4byte 0x0000055c
-_080E7044: .4byte gSpecialVar_0x8004
-_080E7048: .4byte 0x00000564
-_080E704C: .4byte gBattleOutcome
-_080E7050: .4byte 0x0000055d
-_080E7054: .4byte 0x0000055e
- thumb_func_end SaveBattleTowerProgress
-
- thumb_func_start BattleTower_SoftReset
-BattleTower_SoftReset: @ 80E7058
- push {lr}
- bl DoSoftReset
- pop {r0}
- bx r0
- thumb_func_end BattleTower_SoftReset
-
- thumb_func_start sub_80E7064
-sub_80E7064: @ 80E7064
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _080E70F0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r3, 0
- movs r2, 0
- adds r1, r0, 0
- adds r1, 0xB0
-_080E7076:
- ldm r1!, {r0}
- adds r3, r0
- adds r2, 0x1
- cmp r2, 0x27
- bls _080E7076
- ldr r5, _080E70F0 @ =gSaveBlock2Ptr
- ldr r1, [r5]
- movs r2, 0xA8
- lsls r2, 1
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, r3
- beq _080E7098
- adds r0, r1, 0
- adds r0, 0xB0
- bl ClearBattleTowerRecord
-_080E7098:
- movs r4, 0
- adds r7, r5, 0
- movs r6, 0xA4
- mov r8, r7
-_080E70A0:
- adds r0, r4, 0
- muls r0, r6
- movs r3, 0xAA
- lsls r3, 1
- adds r0, r3
- ldr r1, [r7]
- movs r3, 0
- movs r2, 0
- adds r5, r4, 0x1
- adds r1, r0
-_080E70B4:
- ldm r1!, {r0}
- adds r3, r0
- adds r2, 0x1
- cmp r2, 0x27
- bls _080E70B4
- mov r0, r8
- ldr r2, [r0]
- adds r1, r4, 0
- muls r1, r6
- movs r4, 0xFA
- lsls r4, 1
- adds r0, r2, r4
- adds r0, r1
- ldr r0, [r0]
- cmp r0, r3
- beq _080E70E0
- movs r3, 0xAA
- lsls r3, 1
- adds r0, r1, r3
- adds r0, r2, r0
- bl ClearBattleTowerRecord
-_080E70E0:
- adds r4, r5, 0
- cmp r4, 0x4
- ble _080E70A0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E70F0: .4byte gSaveBlock2Ptr
- thumb_func_end sub_80E7064
-
- thumb_func_start SetBattleTowerRecordChecksum
-SetBattleTowerRecordChecksum: @ 80E70F4
- push {r4,lr}
- adds r2, r0, 0
- adds r2, 0xA0
- movs r1, 0
- str r1, [r2]
- movs r3, 0
- adds r4, r0, 0
-_080E7102:
- ldr r0, [r2]
- ldm r4!, {r1}
- adds r0, r1
- str r0, [r2]
- adds r3, 0x1
- cmp r3, 0x27
- bls _080E7102
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SetBattleTowerRecordChecksum
-
- thumb_func_start ClearBattleTowerRecord
-ClearBattleTowerRecord: @ 80E7118
- push {lr}
- movs r1, 0
- movs r2, 0
-_080E711E:
- stm r0!, {r2}
- adds r1, 0x1
- cmp r1, 0x28
- bls _080E711E
- pop {r0}
- bx r0
- thumb_func_end ClearBattleTowerRecord
-
- thumb_func_start sub_80E712C
-sub_80E712C: @ 80E712C
- push {r4,r5,lr}
- ldr r4, _080E7174 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r1, _080E7178 @ =0x0000048c
- adds r0, r1
- bl sub_80E6150
- ldr r1, [r4]
- ldr r3, _080E717C @ =gBattleMons
- adds r0, r3, 0
- adds r0, 0x58
- ldrh r2, [r0]
- ldr r5, _080E7180 @ =0x0000048a
- adds r0, r1, r5
- strh r2, [r0]
- ldrh r0, [r3]
- movs r2, 0x91
- lsls r2, 3
- adds r1, r2
- strh r0, [r1]
- movs r2, 0
- adds r5, r4, 0
- ldr r4, _080E7184 @ =0x00000494
- adds r3, 0x30
-_080E715C:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x9
- ble _080E715C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7174: .4byte gSaveBlock2Ptr
-_080E7178: .4byte 0x0000048c
-_080E717C: .4byte gBattleMons
-_080E7180: .4byte 0x0000048a
-_080E7184: .4byte 0x00000494
- thumb_func_end sub_80E712C
-
- thumb_func_start sub_80E7188
-sub_80E7188: @ 80E7188
- push {lr}
- lsls r0, 24
- ldr r1, _080E71C0 @ =gSaveBlock2Ptr
- ldr r3, [r1]
- lsrs r0, 23
- ldr r2, _080E71C4 @ =0x00000564
- adds r1, r3, r2
- adds r1, r0
- ldrh r2, [r1]
- subs r2, 0x1
- lsls r1, r2, 3
- subs r1, r2
- movs r2, 0xAC
- lsls r2, 3
- adds r3, r2
- adds r3, r0
- ldr r0, _080E71C8 @ =0x0000ffff
- adds r1, r0
- ldrh r3, [r3]
- adds r1, r3
- lsls r1, 16
- lsrs r0, r1, 16
- ldr r1, _080E71CC @ =0x0000270f
- cmp r0, r1
- bls _080E71BC
- adds r0, r1, 0
-_080E71BC:
- pop {r1}
- bx r1
- .align 2, 0
-_080E71C0: .4byte gSaveBlock2Ptr
-_080E71C4: .4byte 0x00000564
-_080E71C8: .4byte 0x0000ffff
-_080E71CC: .4byte 0x0000270f
- thumb_func_end sub_80E7188
-
- thumb_func_start DetermineBattleTowerPrize
-DetermineBattleTowerPrize: @ 80E71D0
- push {r4,r5,lr}
- ldr r4, _080E7214 @ =gSaveBlock2Ptr
- ldr r1, [r4]
- ldr r2, _080E7218 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- lsls r0, 1
- adds r2, 0x8
- adds r1, r2
- adds r1, r0
- ldrh r0, [r1]
- subs r0, 0x1
- cmp r0, 0x5
- ble _080E7220
- bl Random
- ldr r4, [r4]
- ldr r5, _080E721C @ =sLongStreakPrizes
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 15
- adds r0, r5
- ldrh r0, [r0]
- movs r1, 0xAE
- lsls r1, 3
- adds r4, r1
- b _080E7240
- .align 2, 0
-_080E7214: .4byte gSaveBlock2Ptr
-_080E7218: .4byte 0x0000055c
-_080E721C: .4byte sLongStreakPrizes
-_080E7220:
- bl Random
- ldr r4, [r4]
- ldr r5, _080E7248 @ =sShortStreakPrizes
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 15
- adds r0, r5
- ldrh r0, [r0]
- movs r2, 0xAE
- lsls r2, 3
- adds r4, r2
-_080E7240:
- strh r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7248: .4byte sShortStreakPrizes
- thumb_func_end DetermineBattleTowerPrize
-
- thumb_func_start GiveBattleTowerPrize
-GiveBattleTowerPrize: @ 80E724C
- push {r4-r6,lr}
- ldr r5, _080E7288 @ =gSaveBlock2Ptr
- ldr r1, [r5]
- ldr r2, _080E728C @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r6, r0, 31
- movs r0, 0xAE
- lsls r0, 3
- adds r1, r0
- ldrh r0, [r1]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _080E7298
- ldr r0, [r5]
- movs r1, 0xAE
- lsls r1, 3
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080E7290 @ =gStringVar1
- bl CopyItemName
- ldr r0, _080E7294 @ =gSpecialVar_Result
- strh r4, [r0]
- b _080E72AA
- .align 2, 0
-_080E7288: .4byte gSaveBlock2Ptr
-_080E728C: .4byte 0x0000055c
-_080E7290: .4byte gStringVar1
-_080E7294: .4byte gSpecialVar_Result
-_080E7298:
- ldr r1, _080E72B0 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r5]
- ldr r2, _080E72B4 @ =0x0000055e
- adds r0, r2
- adds r0, r6
- movs r1, 0x6
- strb r1, [r0]
-_080E72AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E72B0: .4byte gSpecialVar_Result
-_080E72B4: .4byte 0x0000055e
- thumb_func_end GiveBattleTowerPrize
-
- thumb_func_start AwardBattleTowerRibbons
-AwardBattleTowerRibbons: @ 80E72B8
- push {r4-r7,lr}
- ldr r0, _080E7334 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7338 @ =0x0000055c
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r0, 0
- movs r7, 0x44
- cmp r1, 0
- beq _080E72D2
- movs r7, 0x45
-_080E72D2:
- ldr r4, _080E733C @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r4]
- adds r0, r1, 0
- bl sub_80E7188
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x37
- bls _080E7320
- movs r5, 0
- adds r6, r4, 0
-_080E72EA:
- ldr r0, _080E7334 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7340 @ =0x0000056d
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- subs r0, 0x1
- movs r1, 0x64
- muls r1, r0
- ldr r0, _080E7344 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- adds r1, r7, 0
- bl GetMonData
- cmp r0, 0
- bne _080E731A
- movs r0, 0x1
- strh r0, [r6]
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl SetMonData
-_080E731A:
- adds r5, 0x1
- cmp r5, 0x2
- ble _080E72EA
-_080E7320:
- ldr r0, _080E733C @ =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0
- beq _080E732E
- movs r0, 0x2A
- bl IncrementGameStat
-_080E732E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7334: .4byte gSaveBlock2Ptr
-_080E7338: .4byte 0x0000055c
-_080E733C: .4byte gSpecialVar_Result
-_080E7340: .4byte 0x0000056d
-_080E7344: .4byte gPlayerParty
- thumb_func_end AwardBattleTowerRibbons
-
- thumb_func_start sub_80E7348
-sub_80E7348: @ 80E7348
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r1, _080E7368 @ =gSaveBlock2Ptr
- ldr r2, [r1]
- movs r0, 0x94
- lsls r0, 3
- adds r7, r2, r0
- ldrb r0, [r2, 0x8]
- adds r5, r1, 0
- cmp r0, 0
- beq _080E7370
- ldr r4, _080E736C @ =sFemaleTrainerClasses
- b _080E7372
- .align 2, 0
-_080E7368: .4byte gSaveBlock2Ptr
-_080E736C: .4byte sFemaleTrainerClasses
-_080E7370:
- ldr r4, _080E7410 @ =sMaleTrainerClasses
-_080E7372:
- ldrb r0, [r2, 0xA]
- ldrb r1, [r2, 0xB]
- adds r0, r1
- ldrb r1, [r2, 0xC]
- adds r0, r1
- ldrb r1, [r2, 0xD]
- adds r0, r1
- movs r1, 0
- bl __umodsi3
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r7, 0x1]
- adds r0, r7, 0
- adds r0, 0xC
- ldr r1, [r5]
- adds r1, 0xA
- bl CopyTrainerId
- adds r0, r7, 0x4
- ldr r1, [r5]
- bl StringCopy7
- movs r0, 0x1
- strh r0, [r7, 0x2]
- movs r6, 0x7
- movs r4, 0
- ldr r0, _080E7414 @ =gSaveBlock1Ptr
- mov r8, r0
- adds r5, r7, 0
- adds r5, 0x10
- ldr r1, _080E7418 @ =0x00002cac
- mov r12, r1
- adds r3, r7, 0
- adds r3, 0x28
- adds r2, r7, 0
- adds r2, 0x1C
-_080E73BC:
- lsls r0, r4, 1
- mov r9, r0
- mov r1, r8
- ldr r0, [r1]
- add r0, r12
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r5]
- strh r6, [r2]
- adds r0, r6, 0x6
- strh r0, [r3]
- adds r6, 0x1
- adds r5, 0x2
- adds r3, 0x2
- adds r2, 0x2
- adds r4, 0x1
- cmp r4, 0x5
- ble _080E73BC
- movs r4, 0
-_080E73E2:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080E741C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2C
- muls r1, r4
- adds r1, 0x34
- adds r1, r7, r1
- bl sub_803E23C
- adds r4, 0x1
- cmp r4, 0x2
- ble _080E73E2
- adds r0, r7, 0
- bl sub_80E7500
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7410: .4byte sMaleTrainerClasses
-_080E7414: .4byte gSaveBlock1Ptr
-_080E7418: .4byte 0x00002cac
-_080E741C: .4byte gPlayerParty
- thumb_func_end sub_80E7348
-
- thumb_func_start GetEreaderTrainerFrontSpriteId
-GetEreaderTrainerFrontSpriteId: @ 80E7420
- ldr r1, _080E7434 @ =gFacilityClassToPicIndex
- ldr r0, _080E7438 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _080E743C @ =0x000004a1
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080E7434: .4byte gFacilityClassToPicIndex
-_080E7438: .4byte gSaveBlock2Ptr
-_080E743C: .4byte 0x000004a1
- thumb_func_end GetEreaderTrainerFrontSpriteId
-
- thumb_func_start GetEreaderTrainerClassId
-GetEreaderTrainerClassId: @ 80E7440
- ldr r1, _080E7454 @ =gFacilityClassToTrainerClass
- ldr r0, _080E7458 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _080E745C @ =0x000004a1
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080E7454: .4byte gFacilityClassToTrainerClass
-_080E7458: .4byte gSaveBlock2Ptr
-_080E745C: .4byte 0x000004a1
- thumb_func_end GetEreaderTrainerClassId
-
- thumb_func_start CopyEReaderTrainerName5
-CopyEReaderTrainerName5: @ 80E7460
- push {r4,lr}
- adds r3, r0, 0
- movs r2, 0
- ldr r0, _080E7488 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E748C @ =0x000004a4
- adds r4, r0, r1
-_080E746E:
- adds r0, r3, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x4
- ble _080E746E
- adds r1, r3, r2
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7488: .4byte gSaveBlock2Ptr
-_080E748C: .4byte 0x000004a4
- thumb_func_end CopyEReaderTrainerName5
-
- thumb_func_start ValidateEReaderTrainer
-ValidateEReaderTrainer: @ 80E7490
- push {r4-r6,lr}
- ldr r2, _080E74C0 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r2]
- ldr r1, _080E74C4 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r3, 0x94
- lsls r3, 3
- adds r5, r0, r3
- movs r4, 0
- movs r3, 0
- adds r6, r1, 0
- adds r1, r5, 0
-_080E74AA:
- ldm r1!, {r0}
- orrs r4, r0
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E74AA
- cmp r4, 0
- bne _080E74C8
- movs r0, 0x1
- strh r0, [r2]
- b _080E74F6
- .align 2, 0
-_080E74C0: .4byte gSpecialVar_Result
-_080E74C4: .4byte gSaveBlock2Ptr
-_080E74C8:
- movs r4, 0
- movs r3, 0
- adds r2, r5, 0
-_080E74CE:
- ldm r2!, {r0}
- adds r4, r0
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E74CE
- ldr r1, [r6]
- movs r2, 0xAB
- lsls r2, 3
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, r4
- beq _080E74F6
- movs r3, 0x94
- lsls r3, 3
- adds r0, r1, r3
- bl sub_80E7524
- ldr r1, _080E74FC @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_080E74F6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E74FC: .4byte gSpecialVar_Result
- thumb_func_end ValidateEReaderTrainer
-
- thumb_func_start sub_80E7500
-sub_80E7500: @ 80E7500
- push {r4,lr}
- adds r2, r0, 0
- adds r2, 0xB8
- movs r1, 0
- str r1, [r2]
- movs r3, 0
- adds r4, r0, 0
-_080E750E:
- ldr r0, [r2]
- ldm r4!, {r1}
- adds r0, r1
- str r0, [r2]
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E750E
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E7500
-
- thumb_func_start sub_80E7524
-sub_80E7524: @ 80E7524
- push {lr}
- movs r1, 0
- movs r2, 0
-_080E752A:
- stm r0!, {r2}
- adds r1, 0x1
- cmp r1, 0x2E
- bls _080E752A
- pop {r0}
- bx r0
- thumb_func_end sub_80E7524
-
- thumb_func_start PrintEReaderTrainerGreeting
-PrintEReaderTrainerGreeting: @ 80E7538
- push {lr}
- ldr r0, _080E754C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x96
- lsls r1, 3
- adds r0, r1
- bl sub_80E678C
- pop {r0}
- bx r0
- .align 2, 0
-_080E754C: .4byte gSaveBlock2Ptr
- thumb_func_end PrintEReaderTrainerGreeting
-
- thumb_func_start sub_80E7550
-sub_80E7550: @ 80E7550
- push {lr}
- ldr r0, _080E7564 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080E756C
- ldr r1, _080E7568 @ =gStringVar4
- movs r0, 0xFF
- strb r0, [r1]
- b _080E7590
- .align 2, 0
-_080E7564: .4byte gBattleOutcome
-_080E7568: .4byte gStringVar4
-_080E756C:
- cmp r0, 0x1
- bne _080E7584
- ldr r0, _080E7580 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x99
- lsls r1, 3
- adds r0, r1
- bl sub_80E678C
- b _080E7590
- .align 2, 0
-_080E7580: .4byte gSaveBlock2Ptr
-_080E7584:
- ldr r0, _080E7594 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7598 @ =0x000004bc
- adds r0, r1
- bl sub_80E678C
-_080E7590:
- pop {r0}
- bx r0
- .align 2, 0
-_080E7594: .4byte gSaveBlock2Ptr
-_080E7598: .4byte 0x000004bc
- thumb_func_end sub_80E7550
-
- thumb_func_start Dummy_TryEnableBravoTrainerBattleTower
-Dummy_TryEnableBravoTrainerBattleTower: @ 80E759C
- push {lr}
- movs r0, 0x1
-_080E75A0:
- subs r0, 0x1
- cmp r0, 0
- bge _080E75A0
- pop {r0}
- bx r0
- thumb_func_end Dummy_TryEnableBravoTrainerBattleTower
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_camera.s b/asm/field_camera.s
index f6cbbd0ef..0016e6381 100644
--- a/asm/field_camera.s
+++ b/asm/field_camera.s
@@ -490,8 +490,8 @@ _0805A914: .4byte gUnknown_3000E90
_0805A918: .4byte gMapHeader
thumb_func_end CurrentMapDrawMetatileAt
- thumb_func_start sub_805A91C
-sub_805A91C: @ 805A91C
+ thumb_func_start DrawDoorMetatileAt
+DrawDoorMetatileAt: @ 805A91C
push {r4,r5,lr}
adds r3, r0, 0
adds r4, r1, 0
@@ -513,7 +513,7 @@ _0805A93E:
bx r0
.align 2, 0
_0805A944: .4byte gUnknown_3000E90
- thumb_func_end sub_805A91C
+ thumb_func_end DrawDoorMetatileAt
thumb_func_start sub_805A948
sub_805A948: @ 805A948
diff --git a/asm/field_door.s b/asm/field_door.s
deleted file mode 100644
index bcb8a6082..000000000
--- a/asm/field_door.s
+++ /dev/null
@@ -1,667 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_805AF14
-sub_805AF14: @ 805AF14
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r7, r3, 0
- ldrh r1, [r5, 0x2]
- ldr r0, _0805AF34 @ =0x0000ffff
- cmp r1, r0
- bne _0805AF38
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r7, 0
- bl sub_805AF54
- b _0805AF4E
- .align 2, 0
-_0805AF34: .4byte 0x0000ffff
-_0805AF38:
- ldrh r1, [r5, 0x2]
- ldr r0, [r4, 0x4]
- adds r0, r1
- bl sub_805AF80
- ldr r3, [r4, 0x8]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r7, 0
- bl sub_805AF94
-_0805AF4E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_805AF14
-
- thumb_func_start sub_805AF54
-sub_805AF54: @ 805AF54
- push {r4,r5,lr}
- adds r5, r1, 0
- adds r4, r2, 0
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- bne _0805AF6A
- adds r0, r5, 0
- adds r1, r4, 0
- bl CurrentMapDrawMetatileAt
- b _0805AF7A
-_0805AF6A:
- adds r0, r5, 0
- adds r1, r4, 0
- bl CurrentMapDrawMetatileAt
- subs r1, r4, 0x1
- adds r0, r5, 0
- bl CurrentMapDrawMetatileAt
-_0805AF7A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_805AF54
-
- thumb_func_start sub_805AF80
-sub_805AF80: @ 805AF80
- push {lr}
- ldr r1, _0805AF90 @ =0x06007f00
- movs r2, 0x40
- bl CpuFastSet
- pop {r0}
- bx r0
- .align 2, 0
-_0805AF90: .4byte 0x06007f00
- thumb_func_end sub_805AF80
-
- thumb_func_start sub_805AF94
-sub_805AF94: @ 805AF94
- push {r4-r6,lr}
- sub sp, 0x10
- adds r5, r1, 0
- adds r6, r2, 0
- adds r4, r3, 0
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- bne _0805AFB2
- movs r1, 0xFE
- lsls r1, 2
- mov r0, sp
- adds r2, r4, 0
- bl sub_805AFE8
- b _0805AFD4
-_0805AFB2:
- movs r1, 0xFE
- lsls r1, 2
- mov r0, sp
- adds r2, r4, 0
- bl sub_805AFE8
- subs r1, r6, 0x1
- adds r0, r5, 0
- mov r2, sp
- bl sub_805A91C
- movs r1, 0xFF
- lsls r1, 2
- adds r2, r4, 0x4
- mov r0, sp
- bl sub_805AFE8
-_0805AFD4:
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, sp
- bl sub_805A91C
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_805AF94
-
- thumb_func_start sub_805AFE8
-sub_805AFE8: @ 805AFE8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
- adds r1, r6, 0
-_0805AFF4:
- ldrb r0, [r2]
- lsls r0, 28
- lsrs r3, r0, 16
- adds r2, 0x1
- adds r0, r5, r4
- orrs r3, r0
- strh r3, [r1]
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0805AFF4
- cmp r4, 0x7
- bgt _0805B022
- lsls r0, r4, 1
- adds r1, r0, r6
-_0805B012:
- ldrb r0, [r2]
- lsls r3, r0, 12
- adds r2, 0x1
- strh r3, [r1]
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x7
- ble _0805B012
-_0805B022:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_805AFE8
-
- thumb_func_start sub_805B028
-sub_805B028: @ 805B028
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- ldr r0, _0805B05C @ =gTasks+0x8
- adds r2, r0
- ldrh r1, [r2]
- lsls r1, 16
- ldrh r0, [r2, 0x2]
- orrs r1, r0
- ldrh r0, [r2, 0x4]
- lsls r0, 16
- ldrh r3, [r2, 0x6]
- orrs r0, r3
- bl sub_805B060
- cmp r0, 0
- bne _0805B056
- adds r0, r4, 0
- bl DestroyTask
-_0805B056:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B05C: .4byte gTasks+0x8
- thumb_func_end sub_805B028
-
- thumb_func_start sub_805B060
-sub_805B060: @ 805B060
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0805B086
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r1, 2
- adds r1, r5, r1
- movs r0, 0xC
- ldrsh r2, [r4, r0]
- movs r0, 0xE
- ldrsh r3, [r4, r0]
- adds r0, r6, 0
- bl sub_805AF14
-_0805B086:
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0]
- cmp r1, r0
- bne _0805B0B4
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805B0BA
- movs r0, 0
- b _0805B0BC
-_0805B0B4:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
-_0805B0BA:
- movs r0, 0x1
-_0805B0BC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805B060
-
- thumb_func_start door_find
-door_find: @ 805B0C4
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- b _0805B0DA
-_0805B0CE:
- ldrh r0, [r2]
- cmp r0, r1
- bne _0805B0D8
- adds r0, r2, 0
- b _0805B0E2
-_0805B0D8:
- adds r2, 0xC
-_0805B0DA:
- ldr r0, [r2, 0x4]
- cmp r0, 0
- bne _0805B0CE
- movs r0, 0
-_0805B0E2:
- pop {r1}
- bx r1
- thumb_func_end door_find
-
- thumb_func_start task_overworld_door_add_if_inactive
-task_overworld_door_add_if_inactive: @ 805B0E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- mov r8, r3
- ldr r4, _0805B134 @ =sub_805B028
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0805B13C
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _0805B138 @ =gTasks+0x8
- adds r1, r2
- strh r7, [r1, 0xC]
- mov r2, r8
- strh r2, [r1, 0xE]
- strh r5, [r1, 0x2]
- lsrs r2, r5, 16
- strh r2, [r1]
- strh r6, [r1, 0x6]
- lsrs r2, r6, 16
- strh r2, [r1, 0x4]
- lsls r0, 24
- asrs r0, 24
- b _0805B140
- .align 2, 0
-_0805B134: .4byte sub_805B028
-_0805B138: .4byte gTasks+0x8
-_0805B13C:
- movs r0, 0x1
- negs r0, r0
-_0805B140:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end task_overworld_door_add_if_inactive
-
- thumb_func_start DrawClosedDoor
-DrawClosedDoor: @ 805B14C
- push {lr}
- bl sub_805AF54
- pop {r0}
- bx r0
- thumb_func_end DrawClosedDoor
-
- thumb_func_start sub_805B158
-sub_805B158: @ 805B158
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- adds r4, r0, 0
- cmp r0, 0
- beq _0805B196
- ldrb r0, [r0, 0x3]
- ldr r1, _0805B19C @ =gUnknown_835B49C
- cmp r0, 0
- bne _0805B184
- ldr r1, _0805B1A0 @ =gUnknown_835B488
-_0805B184:
- adds r0, r1, 0
- bl sub_805B1A4
- adds r1, r0, 0
- adds r0, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_805AF14
-_0805B196:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B19C: .4byte gUnknown_835B49C
-_0805B1A0: .4byte gUnknown_835B488
- thumb_func_end sub_805B158
-
- thumb_func_start sub_805B1A4
-sub_805B1A4: @ 805B1A4
- push {lr}
- adds r1, r0, 0
- b _0805B1AC
-_0805B1AA:
- adds r1, 0x4
-_0805B1AC:
- ldrb r0, [r1]
- cmp r0, 0
- bne _0805B1AA
- subs r0, r1, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_805B1A4
-
- thumb_func_start sub_805B1B8
-sub_805B1B8: @ 805B1B8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- adds r2, r0, 0
- adds r4, r2, 0
- cmp r2, 0
- bne _0805B1E2
- movs r0, 0x1
- negs r0, r0
- b _0805B204
-_0805B1E2:
- ldrb r0, [r2, 0x3]
- cmp r0, 0
- beq _0805B1F4
- ldr r1, _0805B1F0 @ =gUnknown_835B49C
- adds r0, r2, 0
- b _0805B1F8
- .align 2, 0
-_0805B1F0: .4byte gUnknown_835B49C
-_0805B1F4:
- ldr r1, _0805B20C @ =gUnknown_835B488
- adds r0, r4, 0
-_0805B1F8:
- adds r2, r5, 0
- adds r3, r6, 0
- bl task_overworld_door_add_if_inactive
- lsls r0, 24
- asrs r0, 24
-_0805B204:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B20C: .4byte gUnknown_835B488
- thumb_func_end sub_805B1B8
-
- thumb_func_start sub_805B210
-sub_805B210: @ 805B210
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- adds r2, r0, 0
- adds r4, r2, 0
- cmp r2, 0
- bne _0805B23A
- movs r0, 0x1
- negs r0, r0
- b _0805B25C
-_0805B23A:
- ldrb r0, [r2, 0x3]
- cmp r0, 0
- beq _0805B24C
- ldr r1, _0805B248 @ =gUnknown_835B4C4
- adds r0, r2, 0
- b _0805B250
- .align 2, 0
-_0805B248: .4byte gUnknown_835B4C4
-_0805B24C:
- ldr r1, _0805B264 @ =gUnknown_835B4B0
- adds r0, r4, 0
-_0805B250:
- adds r2, r5, 0
- adds r3, r6, 0
- bl task_overworld_door_add_if_inactive
- lsls r0, 24
- asrs r0, 24
-_0805B25C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B264: .4byte gUnknown_835B4B0
- thumb_func_end sub_805B210
-
- thumb_func_start FieldSetDoorOpened
-FieldSetDoorOpened: @ 805B268
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 16
- asrs r0, 16
- lsls r1, r5, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWarpDoor_2
- lsls r0, 24
- cmp r0, 0
- beq _0805B292
- ldr r0, _0805B298 @ =gUnknown_835B5D8
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_805B158
-_0805B292:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B298: .4byte gUnknown_835B5D8
- thumb_func_end FieldSetDoorOpened
-
- thumb_func_start FieldSetDoorClosed
-FieldSetDoorClosed: @ 805B29C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 16
- asrs r0, 16
- lsls r1, r5, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWarpDoor_2
- lsls r0, 24
- cmp r0, 0
- beq _0805B2C6
- ldr r0, _0805B2CC @ =gUnknown_835B5D8
- adds r1, r4, 0
- adds r2, r5, 0
- bl DrawClosedDoor
-_0805B2C6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B2CC: .4byte gUnknown_835B5D8
- thumb_func_end FieldSetDoorClosed
-
- thumb_func_start FieldAnimateDoorClose
-FieldAnimateDoorClose: @ 805B2D0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 16
- asrs r0, 16
- lsls r1, r5, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWarpDoor_2
- lsls r0, 24
- cmp r0, 0
- beq _0805B304
- ldr r0, _0805B300 @ =gUnknown_835B5D8
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_805B210
- lsls r0, 24
- asrs r0, 24
- b _0805B308
- .align 2, 0
-_0805B300: .4byte gUnknown_835B5D8
-_0805B304:
- movs r0, 0x1
- negs r0, r0
-_0805B308:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldAnimateDoorClose
-
- thumb_func_start FieldAnimateDoorOpen
-FieldAnimateDoorOpen: @ 805B310
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 16
- asrs r0, 16
- lsls r1, r5, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWarpDoor_2
- lsls r0, 24
- cmp r0, 0
- beq _0805B344
- ldr r0, _0805B340 @ =gUnknown_835B5D8
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_805B1B8
- lsls r0, 24
- asrs r0, 24
- b _0805B348
- .align 2, 0
-_0805B340: .4byte gUnknown_835B5D8
-_0805B344:
- movs r0, 0x1
- negs r0, r0
-_0805B348:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldAnimateDoorOpen
-
- thumb_func_start FieldIsDoorAnimationRunning
-FieldIsDoorAnimationRunning: @ 805B350
- push {lr}
- ldr r0, _0805B360 @ =sub_805B028
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B360: .4byte sub_805B028
- thumb_func_end FieldIsDoorAnimationRunning
-
- thumb_func_start GetDoorSoundEffect
-GetDoorSoundEffect: @ 805B364
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _0805B37C @ =gUnknown_835B5D8
- adds r1, r3, 0
- bl sub_805B388
- lsls r0, 24
- cmp r0, 0
- beq _0805B380
- movs r0, 0x12
- b _0805B382
- .align 2, 0
-_0805B37C: .4byte gUnknown_835B5D8
-_0805B380:
- movs r0, 0xF1
-_0805B382:
- pop {r1}
- bx r1
- thumb_func_end GetDoorSoundEffect
-
- thumb_func_start sub_805B388
-sub_805B388: @ 805B388
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- cmp r0, 0
- beq _0805B3AC
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _0805B3B0
-_0805B3AC:
- movs r0, 0x1
- negs r0, r0
-_0805B3B0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805B388
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_menu.s b/asm/item_menu.s
index a143d2776..a8487864a 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5826,7 +5826,7 @@ UseRegisteredKeyItemOnField: @ 810AD10
movs r0, 0
b _0810ADA0
_0810AD1E:
- bl sub_80982EC
+ bl DismissMapNamePopup
movs r0, 0
movs r1, 0
movs r2, 0
diff --git a/asm/learn_move.s b/asm/learn_move.s
deleted file mode 100644
index 36b88bc20..000000000
--- a/asm/learn_move.s
+++ /dev/null
@@ -1,1954 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80E4620
-sub_80E4620: @ 80E4620
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80E4620
-
- thumb_func_start DisplayMoveTutorMenu
-DisplayMoveTutorMenu: @ 80E4634
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080E465C @ =sub_80E4660
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080E465C: .4byte sub_80E4660
- thumb_func_end DisplayMoveTutorMenu
-
- thumb_func_start sub_80E4660
-sub_80E4660: @ 80E4660
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E468C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E4684
- ldr r0, _080E4690 @ =sub_80E478C
- bl SetMainCallback2
- ldr r1, _080E4694 @ =gFieldCallback
- ldr r0, _080E4698 @ =FieldCallback_ReturnToEventScript2
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_080E4684:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E468C: .4byte gPaletteFade
-_080E4690: .4byte sub_80E478C
-_080E4694: .4byte gFieldCallback
-_080E4698: .4byte FieldCallback_ReturnToEventScript2
- thumb_func_end sub_80E4660
-
- thumb_func_start sub_80E469C
-sub_80E469C: @ 80E469C
- push {r4,r5,lr}
- sub sp, 0xC
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080E4774 @ =gUnknown_83FFA3C
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- bl ResetTempTileDataBuffers
- ldr r0, _080E4778 @ =gUnknown_83FFA44
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- beq _080E476C
- bl DeactivateAllTextPrinters
- movs r5, 0
-_080E46C6:
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl ClearWindowTilemap
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r5, 0x1
- cmp r5, 0x8
- bls _080E46C6
- movs r0, 0x7
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, _080E477C @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xE0
- bl TextWindow_SetUserSelectedFrame
- movs r0, 0xD0
- movs r1, 0x1
- bl sub_8107D38
- ldr r0, _080E4780 @ =gUnknown_8E97DDC
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _080E4784 @ =gUnknown_8E97DFC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, _080E4788 @ =gUnknown_8E97EC4
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
-_080E476C:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4774: .4byte gUnknown_83FFA3C
-_080E4778: .4byte gUnknown_83FFA44
-_080E477C: .4byte gUnknown_203AAB4
-_080E4780: .4byte gUnknown_8E97DDC
-_080E4784: .4byte gUnknown_8E97DFC
-_080E4788: .4byte gUnknown_8E97EC4
- thumb_func_end sub_80E469C
-
- thumb_func_start sub_80E478C
-sub_80E478C: @ 80E478C
- push {r4,lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r4, _080E47EC @ =gUnknown_203AAB4
- ldr r0, _080E47F0 @ =0x00000a6c
- bl AllocZeroed
- str r0, [r4]
- bl sub_80E4F54
- ldr r0, [r4]
- ldr r1, _080E47F4 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- movs r2, 0x98
- lsls r2, 2
- adds r0, r2
- strb r1, [r0]
- bl sub_80E50CC
- ldr r0, _080E47F8 @ =sub_80E4620
- bl SetVBlankCallback
- bl sub_80E469C
- bl sub_80E5004
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _080E47FC @ =sub_80E4870
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E47EC: .4byte gUnknown_203AAB4
-_080E47F0: .4byte 0x00000a6c
-_080E47F4: .4byte gSpecialVar_0x8004
-_080E47F8: .4byte sub_80E4620
-_080E47FC: .4byte sub_80E4870
- thumb_func_end sub_80E478C
-
- thumb_func_start sub_80E4800
-sub_80E4800: @ 80E4800
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl sub_80E50CC
- ldr r0, _080E485C @ =gUnknown_203AAB4
- ldr r0, [r0]
- ldr r1, _080E4860 @ =gSpecialVar_0x8005
- ldrh r1, [r1]
- ldr r2, _080E4864 @ =0x00000261
- adds r0, r2
- strb r1, [r0]
- ldr r0, _080E4868 @ =sub_80E4620
- bl SetVBlankCallback
- bl sub_80E469C
- bl sub_80E5004
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _080E486C @ =sub_80E4870
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080E485C: .4byte gUnknown_203AAB4
-_080E4860: .4byte gSpecialVar_0x8005
-_080E4864: .4byte 0x00000261
-_080E4868: .4byte sub_80E4620
-_080E486C: .4byte sub_80E4870
- thumb_func_end sub_80E4800
-
- thumb_func_start sub_80E4870
-sub_80E4870: @ 80E4870
- push {r4,lr}
- movs r0, 0x7
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _080E4882
- bl sub_80E48F4
-_080E4882:
- ldr r4, _080E48B8 @ =gUnknown_203AAB4
- ldr r0, [r4]
- ldr r1, _080E48BC @ =0x0000025f
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080E489E
- bl sub_80E54C0
- ldr r0, [r4]
- ldr r1, _080E48BC @ =0x0000025f
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080E489E:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E48B8: .4byte gUnknown_203AAB4
-_080E48BC: .4byte 0x0000025f
- thumb_func_end sub_80E4870
-
- thumb_func_start sub_80E48C0
-sub_80E48C0: @ 80E48C0
- push {r4,lr}
- sub sp, 0x8
- adds r1, r0, 0
- ldr r4, _080E48F0 @ =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x7
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl sub_80E559C
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E48F0: .4byte gStringVar4
- thumb_func_end sub_80E48C0
-
- thumb_func_start sub_80E48F4
-sub_80E48F4: @ 80E48F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r1, _080E4918 @ =gUnknown_203AAB4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x21
- bls _080E490C
- b _080E4EDA
-_080E490C:
- lsls r0, 2
- ldr r1, _080E491C @ =_080E4920
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E4918: .4byte gUnknown_203AAB4
-_080E491C: .4byte _080E4920
- .align 2, 0
-_080E4920:
- .4byte _080E49A8
- .4byte _080E49F4
- .4byte _080E4A0C
- .4byte _080E4A14
- .4byte _080E4A38
- .4byte _080E4EDA
- .4byte _080E4EDA
- .4byte _080E4EDA
- .4byte _080E4A3E
- .4byte _080E4A68
- .4byte _080E4EDA
- .4byte _080E4EDA
- .4byte _080E4AF4
- .4byte _080E4B20
- .4byte _080E4CFA
- .4byte _080E4D18
- .4byte _080E4B58
- .4byte _080E4B70
- .4byte _080E4B98
- .4byte _080E4C5A
- .4byte _080E4C70
- .4byte _080E4CE4
- .4byte _080E4CE8
- .4byte _080E4EDA
- .4byte _080E4BDC
- .4byte _080E4BF4
- .4byte _080E4C1C
- .4byte _080E4C54
- .4byte _080E4D48
- .4byte _080E4D8C
- .4byte _080E4E70
- .4byte _080E4E90
- .4byte _080E4EA8
- .4byte _080E4EC0
-_080E49A8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- bl sub_80E5444
- ldr r4, _080E49EC @ =gUnknown_203AAB4
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80E4EF0
- movs r0, 0
- bl sub_80E4F0C
- bl sub_80E5300
- ldr r0, [r4]
- ldr r1, _080E49F0 @ =0x0000025f
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _080E4EDA
- .align 2, 0
-_080E49EC: .4byte gUnknown_203AAB4
-_080E49F0: .4byte 0x0000025f
-_080E49F4:
- ldr r0, _080E4A08 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E4A02
- b _080E4EDA
-_080E4A02:
- ldr r1, [r7]
- movs r0, 0x4
- b _080E4ED8
- .align 2, 0
-_080E4A08: .4byte gPaletteFade
-_080E4A0C:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
-_080E4A14:
- movs r0, 0
- bl sub_80E4F0C
- ldr r2, _080E4A30 @ =gUnknown_203AAB4
- ldr r0, [r2]
- ldr r3, _080E4A34 @ =0x0000025f
- adds r0, r3
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4A30: .4byte gUnknown_203AAB4
-_080E4A34: .4byte 0x0000025f
-_080E4A38:
- bl sub_80E5204
- b _080E4EDA
-_080E4A3E:
- ldr r0, _080E4A60 @ =gUnknown_83FFA8C
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, _080E4A64 @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4A60: .4byte gUnknown_83FFA8C
-_080E4A64: .4byte gUnknown_203AAB4
-_080E4A68:
- bl sub_80E5574
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080E4A88
- cmp r1, 0
- bgt _080E4A82
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080E4AE6
- b _080E4EDA
-_080E4A82:
- cmp r1, 0x1
- beq _080E4AE6
- b _080E4EDA
-_080E4A88:
- ldr r4, _080E4AC8 @ =gUnknown_203AAB4
- ldr r2, [r4]
- movs r6, 0x98
- lsls r6, 2
- adds r0, r2, r6
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E4ACC @ =gPlayerParty
- adds r0, r1
- ldr r3, _080E4AD0 @ =0x00000a67
- adds r1, r2, r3
- ldrb r1, [r1]
- lsls r1, 1
- adds r2, 0xE8
- adds r2, r1
- ldrh r1, [r2]
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, _080E4AD4 @ =0xffff0000
- cmp r0, r1
- beq _080E4AE0
- ldr r0, _080E4AD8 @ =gUnknown_841E405
- bl sub_80E48C0
- ldr r1, _080E4ADC @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, [r4]
- movs r0, 0x1F
- b _080E4ED8
- .align 2, 0
-_080E4AC8: .4byte gUnknown_203AAB4
-_080E4ACC: .4byte gPlayerParty
-_080E4AD0: .4byte 0x00000a67
-_080E4AD4: .4byte 0xffff0000
-_080E4AD8: .4byte gUnknown_841E405
-_080E4ADC: .4byte gSpecialVar_0x8004
-_080E4AE0:
- ldr r1, [r4]
- movs r0, 0x10
- b _080E4ED8
-_080E4AE6:
- ldr r0, _080E4AF0 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x3
- b _080E4ED8
- .align 2, 0
-_080E4AF0: .4byte gUnknown_203AAB4
-_080E4AF4:
- ldr r0, _080E4B18 @ =gUnknown_83FFA8C
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, _080E4B1C @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4B18: .4byte gUnknown_83FFA8C
-_080E4B1C: .4byte gUnknown_203AAB4
-_080E4B20:
- bl sub_80E5574
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080E4B40
- cmp r1, 0
- bgt _080E4B3A
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080E4B4C
- b _080E4EDA
-_080E4B3A:
- cmp r1, 0x1
- beq _080E4B4C
- b _080E4EDA
-_080E4B40:
- ldr r0, _080E4B48 @ =gSpecialVar_0x8004
- strh r1, [r0]
- b _080E4ED2
- .align 2, 0
-_080E4B48: .4byte gSpecialVar_0x8004
-_080E4B4C:
- ldr r0, _080E4B54 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x3
- b _080E4ED8
- .align 2, 0
-_080E4B54: .4byte gUnknown_203AAB4
-_080E4B58:
- ldr r0, _080E4B68 @ =gUnknown_841E414
- bl sub_80E48C0
- ldr r0, _080E4B6C @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4B68: .4byte gUnknown_841E414
-_080E4B6C: .4byte gUnknown_203AAB4
-_080E4B70:
- ldr r0, _080E4B90 @ =gUnknown_83FFA8C
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, _080E4B94 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x12
- b _080E4ED8
- .align 2, 0
-_080E4B90: .4byte gUnknown_83FFA8C
-_080E4B94: .4byte gUnknown_203AAB4
-_080E4B98:
- bl sub_80E5574
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080E4BB8
- cmp r1, 0
- bgt _080E4BB2
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080E4BD0
- b _080E4EDA
-_080E4BB2:
- cmp r1, 0x1
- beq _080E4BD0
- b _080E4EDA
-_080E4BB8:
- ldr r0, _080E4BC8 @ =gUnknown_841E50C
- bl sub_80E48C0
- ldr r0, _080E4BCC @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x13
- b _080E4ED8
- .align 2, 0
-_080E4BC8: .4byte gUnknown_841E50C
-_080E4BCC: .4byte gUnknown_203AAB4
-_080E4BD0:
- ldr r0, _080E4BD8 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x18
- b _080E4ED8
- .align 2, 0
-_080E4BD8: .4byte gUnknown_203AAB4
-_080E4BDC:
- ldr r0, _080E4BEC @ =gUnknown_841E481
- bl sub_80E48C0
- ldr r0, _080E4BF0 @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4BEC: .4byte gUnknown_841E481
-_080E4BF0: .4byte gUnknown_203AAB4
-_080E4BF4:
- ldr r0, _080E4C14 @ =gUnknown_83FFA8C
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, _080E4C18 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x1A
- b _080E4ED8
- .align 2, 0
-_080E4C14: .4byte gUnknown_83FFA8C
-_080E4C18: .4byte gUnknown_203AAB4
-_080E4C1C:
- bl sub_80E5574
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080E4C3C
- cmp r1, 0
- bgt _080E4C36
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080E4C48
- b _080E4EDA
-_080E4C36:
- cmp r1, 0x1
- beq _080E4C48
- b _080E4EDA
-_080E4C3C:
- ldr r0, _080E4C44 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x1B
- b _080E4ED8
- .align 2, 0
-_080E4C44: .4byte gUnknown_203AAB4
-_080E4C48:
- ldr r0, _080E4C50 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x10
- b _080E4ED8
- .align 2, 0
-_080E4C50: .4byte gUnknown_203AAB4
-_080E4C54:
- ldr r1, [r7]
- movs r0, 0x3
- b _080E4ED8
-_080E4C5A:
- ldr r1, [r7]
- movs r2, 0
- movs r0, 0x14
- strb r0, [r1]
- subs r0, 0x15
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080E4EDA
-_080E4C70:
- ldr r0, _080E4CC8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E4C7E
- b _080E4EDA
-_080E4C7E:
- ldr r2, [r7]
- ldr r6, _080E4CCC @ =0x00000263
- adds r0, r2, r6
- ldrb r0, [r0]
- ldr r3, _080E4CD0 @ =0x00000a68
- adds r1, r2, r3
- ldr r6, _080E4CD4 @ =0x00000a6a
- adds r2, r6
- bl ListMenuGetScrollAndRow
- bl FreeAllWindowBuffers
- ldr r0, _080E4CD8 @ =gPlayerParty
- ldr r5, [r7]
- movs r2, 0x98
- lsls r2, 2
- adds r1, r5, r2
- ldrb r1, [r1]
- ldr r2, _080E4CDC @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080E4CE0 @ =sub_80E4800
- subs r6, 0x3
- adds r4, r5, r6
- ldrb r4, [r4]
- lsls r4, 1
- adds r5, 0xE8
- adds r5, r4
- ldrh r4, [r5]
- str r4, [sp]
- bl ShowSelectMovePokemonSummaryScreen
- ldr r1, [r7]
- movs r0, 0x1C
- b _080E4ED8
- .align 2, 0
-_080E4CC8: .4byte gPaletteFade
-_080E4CCC: .4byte 0x00000263
-_080E4CD0: .4byte 0x00000a68
-_080E4CD4: .4byte 0x00000a6a
-_080E4CD8: .4byte gPlayerParty
-_080E4CDC: .4byte gPlayerPartyCount
-_080E4CE0: .4byte sub_80E4800
-_080E4CE4:
- ldr r1, [r7]
- b _080E4ED6
-_080E4CE8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080E4EDA
-_080E4CFA:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080E4D14 @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _080E4ED8
- .align 2, 0
-_080E4D14: .4byte gUnknown_203AAB4
-_080E4D18:
- ldr r0, _080E4D3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E4D26
- b _080E4EDA
-_080E4D26:
- bl FreeAllWindowBuffers
- ldr r0, _080E4D40 @ =gUnknown_203AAB4
- ldr r0, [r0]
- bl Free
- ldr r0, _080E4D44 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080E4EDA
- .align 2, 0
-_080E4D3C: .4byte gPaletteFade
-_080E4D40: .4byte gUnknown_203AAB4
-_080E4D44: .4byte CB2_ReturnToField
-_080E4D48:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- ldr r0, _080E4D88 @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80E5444
- bl sub_80E4EF0
- bl sub_80E5300
- movs r0, 0x1
- bl sub_80E4F0C
- bl sub_80E54C0
- b _080E4EDA
- .align 2, 0
-_080E4D88: .4byte gUnknown_203AAB4
-_080E4D8C:
- ldr r0, _080E4DAC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E4D9A
- b _080E4EDA
-_080E4D9A:
- ldr r1, [r7]
- ldr r0, _080E4DB0 @ =0x00000261
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _080E4DB4
- movs r0, 0x18
- b _080E4ED8
- .align 2, 0
-_080E4DAC: .4byte gPaletteFade
-_080E4DB0: .4byte 0x00000261
-_080E4DB4:
- movs r4, 0x98
- lsls r4, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080E4E50 @ =gPlayerParty
- adds r0, r5
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080E4E54 @ =gStringVar3
- movs r1, 0xD
- mov r9, r1
- mov r1, r9
- muls r1, r0
- ldr r3, _080E4E58 @ =gMoveNames
- mov r8, r3
- add r1, r8
- adds r0, r2, 0
- bl StringCopy
- ldr r1, [r7]
- adds r0, r1, r4
- ldrb r0, [r0]
- muls r0, r6
- adds r0, r5
- ldr r2, _080E4E5C @ =0x00000261
- adds r1, r2
- ldrb r1, [r1]
- bl RemoveMonPPBonus
- ldr r3, [r7]
- adds r4, r3, r4
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- ldr r4, _080E4E60 @ =0x00000a67
- adds r1, r3, r4
- ldrb r2, [r1]
- lsls r2, 1
- adds r1, r3, 0
- adds r1, 0xE8
- adds r1, r2
- ldrh r1, [r1]
- ldr r6, _080E4E5C @ =0x00000261
- adds r3, r6
- ldrb r2, [r3]
- bl SetMonMoveSlot
- ldr r0, _080E4E64 @ =gStringVar2
- ldr r2, [r7]
- adds r4, r2, r4
- ldrb r1, [r4]
- lsls r1, 1
- adds r2, 0xE8
- adds r2, r1
- ldrh r1, [r2]
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- add r1, r8
- bl StringCopy
- ldr r0, _080E4E68 @ =gUnknown_841E493
- bl sub_80E48C0
- ldr r1, [r7]
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, _080E4E6C @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- b _080E4EDA
- .align 2, 0
-_080E4E50: .4byte gPlayerParty
-_080E4E54: .4byte gStringVar3
-_080E4E58: .4byte gMoveNames
-_080E4E5C: .4byte 0x00000261
-_080E4E60: .4byte 0x00000a67
-_080E4E64: .4byte gStringVar2
-_080E4E68: .4byte gUnknown_841E493
-_080E4E6C: .4byte gSpecialVar_0x8004
-_080E4E70:
- ldr r0, _080E4E88 @ =gUnknown_841E4C0
- bl sub_80E48C0
- ldr r0, _080E4E8C @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x1F
- strb r0, [r1]
- adds r0, 0xE2
- bl PlayFanfare
- b _080E4EDA
- .align 2, 0
-_080E4E88: .4byte gUnknown_841E4C0
-_080E4E8C: .4byte gUnknown_203AAB4
-_080E4E90:
- ldr r0, _080E4EA0 @ =0x00000101
- bl PlayFanfare
- ldr r0, _080E4EA4 @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x20
- b _080E4ED8
- .align 2, 0
-_080E4EA0: .4byte 0x00000101
-_080E4EA4: .4byte gUnknown_203AAB4
-_080E4EA8:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _080E4EDA
- ldr r0, _080E4EBC @ =gUnknown_203AAB4
- ldr r1, [r0]
- movs r0, 0x21
- b _080E4ED8
- .align 2, 0
-_080E4EBC: .4byte gUnknown_203AAB4
-_080E4EC0:
- ldr r0, _080E4EE8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E4EDA
- movs r0, 0x5
- bl PlaySE
-_080E4ED2:
- ldr r0, _080E4EEC @ =gUnknown_203AAB4
- ldr r1, [r0]
-_080E4ED6:
- movs r0, 0xE
-_080E4ED8:
- strb r0, [r1]
-_080E4EDA:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4EE8: .4byte gMain
-_080E4EEC: .4byte gUnknown_203AAB4
- thumb_func_end sub_80E48F4
-
- thumb_func_start sub_80E4EF0
-sub_80E4EF0: @ 80E4EF0
- push {r4,lr}
- movs r4, 0x6
-_080E4EF4:
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- adds r4, 0x1
- cmp r4, 0x7
- ble _080E4EF4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E4EF0
-
- thumb_func_start sub_80E4F0C
-sub_80E4F0C: @ 80E4F0C
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080E4F42
- ldr r4, _080E4F4C @ =gStringVar4
- ldr r1, _080E4F50 @ =gUnknown_841E3E3
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x7
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl sub_80E559C
- movs r0, 0x7
- bl PutWindowTilemap
- movs r0, 0x7
- movs r1, 0x3
- bl CopyWindowToVram
-_080E4F42:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4F4C: .4byte gStringVar4
-_080E4F50: .4byte gUnknown_841E3E3
- thumb_func_end sub_80E4F0C
-
- thumb_func_start sub_80E4F54
-sub_80E4F54: @ 80E4F54
- push {r4,lr}
- ldr r2, _080E4FA4 @ =gUnknown_203AAB4
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x2]
- ldr r0, [r2]
- strb r1, [r0, 0x19]
- ldr r0, [r2]
- strb r1, [r0, 0x18]
- ldr r0, [r2]
- strb r1, [r0, 0x1C]
- ldr r0, [r2]
- strb r1, [r0, 0x1A]
- ldr r0, [r2]
- strb r1, [r0, 0x1B]
- ldr r0, [r2]
- strb r1, [r0, 0x1D]
- ldr r0, [r2]
- strb r1, [r0, 0x1E]
- ldr r0, [r2]
- ldr r3, _080E4FA8 @ =0x0000025f
- adds r0, r3
- strb r1, [r0]
- movs r3, 0
- adds r4, r2, 0
- movs r2, 0
-_080E4F8C:
- ldr r0, [r4]
- lsls r1, r3, 1
- adds r0, 0xE8
- adds r0, r1
- strh r2, [r0]
- adds r3, 0x1
- cmp r3, 0x13
- ble _080E4F8C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4FA4: .4byte gUnknown_203AAB4
-_080E4FA8: .4byte 0x0000025f
- thumb_func_end sub_80E4F54
-
- thumb_func_start sub_80E4FAC
-sub_80E4FAC: @ 80E4FAC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- movs r0, 0xFF
- ands r1, r0
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- beq _080E4FD0
- cmp r0, 0x1
- ble _080E4FF6
- cmp r0, 0x2
- beq _080E4FE4
- b _080E4FF6
-_080E4FD0:
- adds r0, r1, 0
- movs r1, 0x3
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x24]
- b _080E4FF6
-_080E4FE4:
- adds r0, r1, 0
- movs r1, 0x1
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x26]
-_080E4FF6:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E4FAC
-
- thumb_func_start sub_80E5004
-sub_80E5004: @ 80E5004
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _080E50B4 @ =gUnknown_83FF9F4
- bl LoadSpriteSheet
- ldr r0, _080E50B8 @ =gUnknown_83FF9FC
- bl LoadSpritePalette
- ldr r0, _080E50BC @ =gUnknown_83FFA24
- mov r8, r0
- movs r1, 0xC8
- movs r2, 0x4
- movs r3, 0
- bl CreateSprite
- ldr r5, _080E50C0 @ =gUnknown_203AAB4
- ldr r1, [r5]
- strb r0, [r1, 0x3]
- ldr r0, [r5]
- ldrb r1, [r0, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080E50C4 @ =gSprites
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r5]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0x2
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080E50C8 @ =0x0000ffff
- strh r1, [r0, 0x32]
- mov r0, r8
- movs r1, 0xC8
- movs r2, 0x6C
- movs r3, 0
- bl CreateSprite
- ldr r1, [r5]
- strb r0, [r1, 0x3]
- ldr r2, [r5]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- strh r1, [r0, 0x32]
- movs r2, 0
- movs r3, 0x4
-_080E508C:
- ldr r0, [r5]
- adds r0, 0x3
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x1
- ble _080E508C
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E50B4: .4byte gUnknown_83FF9F4
-_080E50B8: .4byte gUnknown_83FF9FC
-_080E50BC: .4byte gUnknown_83FFA24
-_080E50C0: .4byte gUnknown_203AAB4
-_080E50C4: .4byte gSprites
-_080E50C8: .4byte 0x0000ffff
- thumb_func_end sub_80E5004
-
- thumb_func_start sub_80E50CC
-sub_80E50CC: @ 80E50CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r7, _080E51E8 @ =gUnknown_203AAB4
- ldr r1, [r7]
- movs r4, 0x98
- lsls r4, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080E51EC @ =gPlayerParty
- adds r0, r5
- adds r1, 0xE8
- bl GetMoveRelearnerMoves
- ldr r1, [r7]
- strb r0, [r1, 0x1A]
- ldr r1, [r7]
- adds r4, r1, r4
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- adds r1, 0xE8
- bl GetMoveRelearnerMoves
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- ldr r0, [r7]
- ldrb r0, [r0, 0x1A]
- cmp r5, r0
- bge _080E513C
- adds r6, r7, 0
- movs r7, 0xD
- movs r4, 0x8D
- lsls r4, 1
-_080E511A:
- ldr r1, [r6]
- adds r0, r1, r4
- lsls r2, r5, 1
- adds r1, 0xE8
- adds r1, r2
- ldrh r1, [r1]
- muls r1, r7
- ldr r2, _080E51F0 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r4, 0xD
- adds r5, 0x1
- ldr r0, [r6]
- ldrb r0, [r0, 0x1A]
- cmp r5, r0
- blt _080E511A
-_080E513C:
- ldr r4, _080E51E8 @ =gUnknown_203AAB4
- ldr r0, [r4]
- movs r1, 0x98
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E51EC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _080E51F4 @ =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r0, [r4]
- ldrb r2, [r0, 0x1A]
- movs r1, 0xD
- muls r1, r2
- movs r7, 0x8D
- lsls r7, 1
- adds r1, r7
- adds r0, r1
- ldr r1, _080E51F8 @ =gFameCheckerText_Cancel
- bl StringCopy
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- adds r0, 0x1
- strb r0, [r1, 0x1A]
- movs r5, 0
- movs r3, 0x1
- add r3, r8
- mov r12, r3
- cmp r5, r8
- bge _080E51AA
- adds r6, r4, 0
- adds r4, r7, 0
-_080E518E:
- ldr r0, [r6]
- lsls r3, r5, 3
- adds r1, r0, 0
- adds r1, 0x20
- adds r1, r3
- adds r2, r0, r4
- str r2, [r1]
- adds r0, 0x24
- adds r0, r3
- str r5, [r0]
- adds r4, 0xD
- adds r5, 0x1
- cmp r5, r8
- blt _080E518E
-_080E51AA:
- ldr r4, _080E51E8 @ =gUnknown_203AAB4
- ldr r2, [r4]
- lsls r3, r5, 3
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r3
- ldr r1, _080E51F8 @ =gFameCheckerText_Cancel
- str r1, [r0]
- adds r2, 0x24
- adds r2, r3
- movs r0, 0xFE
- str r0, [r2]
- ldr r2, _080E51FC @ =gMultiuseListMenuTemplate
- adds r1, r2, 0
- ldr r0, _080E5200 @ =gUnknown_83FFA94
- ldm r0!, {r3,r5,r6}
- stm r1!, {r3,r5,r6}
- ldm r0!, {r3,r5,r6}
- stm r1!, {r3,r5,r6}
- ldr r0, [r4]
- adds r0, 0x20
- str r0, [r2]
- mov r5, r12
- strh r5, [r2, 0xC]
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E51E8: .4byte gUnknown_203AAB4
-_080E51EC: .4byte gPlayerParty
-_080E51F0: .4byte gMoveNames
-_080E51F4: .4byte gStringVar1
-_080E51F8: .4byte gFameCheckerText_Cancel
-_080E51FC: .4byte gMultiuseListMenuTemplate
-_080E5200: .4byte gUnknown_83FFA94
- thumb_func_end sub_80E50CC
-
- thumb_func_start sub_80E5204
-sub_80E5204: @ 80E5204
- push {r4,r5,lr}
- ldr r4, _080E5258 @ =gUnknown_203AAB4
- ldr r0, [r4]
- ldr r1, _080E525C @ =0x00000263
- adds r0, r1
- ldrb r0, [r0]
- bl ListMenu_ProcessInput
- ldr r0, _080E5260 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E5284
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldr r2, _080E5264 @ =0x00000a67
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFE
- beq _080E5270
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _080E5268 @ =gStringVar2
- ldr r1, [r4]
- adds r2, r1, r2
- ldrb r3, [r2]
- movs r2, 0xD
- muls r2, r3
- movs r3, 0x8D
- lsls r3, 1
- adds r2, r3
- adds r1, r2
- bl StringCopy
- ldr r0, _080E526C @ =gUnknown_841E3FB
- bl sub_80E48C0
- b _080E529E
- .align 2, 0
-_080E5258: .4byte gUnknown_203AAB4
-_080E525C: .4byte 0x00000263
-_080E5260: .4byte gMain
-_080E5264: .4byte 0x00000a67
-_080E5268: .4byte gStringVar2
-_080E526C: .4byte gUnknown_841E3FB
-_080E5270:
- ldr r0, _080E5280 @ =gUnknown_841E4E2
- bl sub_80E48C0
- ldr r1, [r4]
- movs r0, 0xC
- strb r0, [r1]
- b _080E529E
- .align 2, 0
-_080E5280: .4byte gUnknown_841E4E2
-_080E5284:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080E529E
- movs r0, 0x5
- bl PlaySE
- ldr r0, [r4]
- movs r1, 0xC
- strb r1, [r0]
- ldr r0, _080E52DC @ =gUnknown_841E4E2
- bl sub_80E48C0
-_080E529E:
- ldr r0, _080E52E0 @ =gUnknown_203AAB4
- ldr r4, [r0]
- ldrb r0, [r4, 0x1A]
- cmp r0, 0x6
- bls _080E52FA
- ldr r2, _080E52E4 @ =gSprites
- movs r0, 0x3E
- adds r0, r2
- mov r12, r0
- ldrb r0, [r0]
- movs r1, 0x5
- negs r1, r1
- adds r3, r1, 0
- ands r3, r0
- mov r0, r12
- strb r3, [r0]
- adds r5, r2, 0
- adds r5, 0x82
- ldrb r0, [r5]
- adds r2, r1, 0
- ands r2, r0
- strb r2, [r5]
- ldrb r0, [r4, 0x19]
- cmp r0, 0
- bne _080E52E8
- movs r1, 0x4
- adds r0, r3, 0
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- b _080E52FA
- .align 2, 0
-_080E52DC: .4byte gUnknown_841E4E2
-_080E52E0: .4byte gUnknown_203AAB4
-_080E52E4: .4byte gSprites
-_080E52E8:
- ldrb r1, [r4, 0x19]
- ldrb r0, [r4, 0x1A]
- subs r0, 0x6
- cmp r1, r0
- bne _080E52FA
- movs r1, 0x4
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r5]
-_080E52FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E5204
-
- thumb_func_start sub_80E5300
-sub_80E5300: @ 80E5300
- push {r4,lr}
- ldr r0, _080E5330 @ =gMultiuseListMenuTemplate
- ldr r4, _080E5334 @ =gUnknown_203AAB4
- ldr r2, [r4]
- ldr r3, _080E5338 @ =0x00000a68
- adds r1, r2, r3
- ldrh r1, [r1]
- adds r3, 0x2
- adds r2, r3
- ldrh r2, [r2]
- bl ListMenuInit
- ldr r1, [r4]
- ldr r2, _080E533C @ =0x00000263
- adds r1, r2
- strb r0, [r1]
- movs r0, 0x6
- movs r1, 0x1
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5330: .4byte gMultiuseListMenuTemplate
-_080E5334: .4byte gUnknown_203AAB4
-_080E5338: .4byte 0x00000a68
-_080E533C: .4byte 0x00000263
- thumb_func_end sub_80E5300
-
- thumb_func_start sub_80E5340
-sub_80E5340: @ 80E5340
- push {r4,r5,lr}
- sub sp, 0x3C
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _080E5380 @ =gBattleMoves
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x2]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x2
- movs r2, 0x1
- movs r3, 0x4
- bl BlitMoveInfoIcon
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- bhi _080E5388
- ldr r1, _080E5384 @ =gText_ThreeHyphens
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1
- movs r3, 0x4
- bl sub_80E559C
- b _080E53A6
- .align 2, 0
-_080E5380: .4byte gBattleMoves
-_080E5384: .4byte gText_ThreeHyphens
-_080E5388:
- ldrb r1, [r4, 0x1]
- add r0, sp, 0x8
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x3
- add r1, sp, 0x8
- movs r2, 0x1
- movs r3, 0x4
- bl sub_80E559C
-_080E53A6:
- ldr r2, _080E53CC @ =gBattleMoves
- lsls r1, r5, 1
- adds r0, r1, r5
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x3]
- adds r4, r1, 0
- cmp r2, 0
- bne _080E53D4
- ldr r1, _080E53D0 @ =gText_ThreeHyphens
- str r2, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80E559C
- b _080E53F4
- .align 2, 0
-_080E53CC: .4byte gBattleMoves
-_080E53D0: .4byte gText_ThreeHyphens
-_080E53D4:
- ldrb r1, [r0, 0x3]
- add r0, sp, 0x8
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x3
- add r1, sp, 0x8
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80E559C
-_080E53F4:
- ldr r1, _080E543C @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x4]
- add r0, sp, 0x8
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x4
- add r1, sp, 0x8
- movs r2, 0x2
- movs r3, 0x2
- bl sub_80E559C
- ldr r1, _080E5440 @ =gMoveDescriptionPointers
- subs r0, r5, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x1
- movs r3, 0
- bl sub_80E559C
- add sp, 0x3C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E543C: .4byte gBattleMoves
-_080E5440: .4byte gMoveDescriptionPointers
- thumb_func_end sub_80E5340
-
- thumb_func_start sub_80E5444
-sub_80E5444: @ 80E5444
- push {lr}
- movs r0, 0
- movs r1, 0x13
- movs r2, 0x1
- movs r3, 0x4
- bl BlitMoveInfoIcon
- movs r0, 0x1
- movs r1, 0x14
- movs r2, 0
- movs r3, 0x4
- bl BlitMoveInfoIcon
- movs r0, 0x1
- movs r1, 0x15
- movs r2, 0
- movs r3, 0x13
- bl BlitMoveInfoIcon
- movs r0, 0
- movs r1, 0x16
- movs r2, 0x1
- movs r3, 0x13
- bl BlitMoveInfoIcon
- movs r0, 0
- movs r1, 0x17
- movs r2, 0x1
- movs r3, 0x22
- bl BlitMoveInfoIcon
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x7
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_80E5444
-
- thumb_func_start sub_80E54C0
-sub_80E54C0: @ 80E54C0
- push {r4,r5,lr}
- ldr r0, _080E54E0 @ =gUnknown_203AAB4
- ldr r1, [r0]
- ldr r0, _080E54E4 @ =0x00000a67
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0xFE
- beq _080E54E8
- lsls r0, 1
- adds r1, 0xE8
- adds r1, r0
- ldrh r0, [r1]
- bl sub_80E5340
- b _080E5504
- .align 2, 0
-_080E54E0: .4byte gUnknown_203AAB4
-_080E54E4: .4byte 0x00000a67
-_080E54E8:
- movs r5, 0x2
-_080E54EA:
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- adds r5, 0x1
- cmp r5, 0x5
- ble _080E54EA
-_080E5504:
- movs r0, 0x3
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x4
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x5
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x7
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E54C0
-
- thumb_func_start sub_80E553C
-sub_80E553C: @ 80E553C
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _080E5560
- movs r0, 0x5
- bl PlaySE
- ldr r2, _080E5568 @ =gUnknown_203AAB4
- ldr r0, [r2]
- ldr r1, _080E556C @ =0x0000025f
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _080E5570 @ =0x00000a67
- adds r0, r1
- strb r4, [r0]
-_080E5560:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5568: .4byte gUnknown_203AAB4
-_080E556C: .4byte 0x0000025f
-_080E5570: .4byte 0x00000a67
- thumb_func_end sub_80E553C
-
- thumb_func_start sub_80E5574
-sub_80E5574: @ 80E5574
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _080E5594
- movs r0, 0x6
- bl PutWindowTilemap
- movs r0, 0x6
- movs r1, 0x1
- bl CopyWindowToVram
-_080E5594:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80E5574
-
- thumb_func_start sub_80E559C
-sub_80E559C: @ 80E559C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r10, r1
- ldr r4, [sp, 0x38]
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- movs r0, 0x1
- mov r8, r0
- mov r9, r0
- cmp r4, 0x1
- bhi _080E55C8
- movs r1, 0
- mov r8, r1
- mov r9, r1
-_080E55C8:
- cmp r4, 0
- blt _080E5622
- cmp r4, 0x1
- ble _080E55D6
- cmp r4, 0x2
- beq _080E5604
- b _080E5622
-_080E55D6:
- ldr r2, _080E55F4 @ =gUnknown_203AAB4
- ldr r0, [r2]
- ldr r1, _080E55F8 @ =0x00000a64
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _080E55FC @ =0x00000a65
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _080E5600 @ =0x00000a66
- b _080E561C
- .align 2, 0
-_080E55F4: .4byte gUnknown_203AAB4
-_080E55F8: .4byte 0x00000a64
-_080E55FC: .4byte 0x00000a65
-_080E5600: .4byte 0x00000a66
-_080E5604:
- ldr r2, _080E5678 @ =gUnknown_203AAB4
- ldr r0, [r2]
- ldr r1, _080E567C @ =0x00000a64
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _080E5680 @ =0x00000a65
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r2]
- adds r1, 0x1
-_080E561C:
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
-_080E5622:
- cmp r4, 0x1
- beq _080E563E
- ldr r0, _080E5678 @ =gUnknown_203AAB4
- ldr r0, [r0]
- ldr r1, _080E567C @ =0x00000a64
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FillWindowPixelBuffer
-_080E563E:
- mov r0, r8
- str r0, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- ldr r0, _080E5678 @ =gUnknown_203AAB4
- ldr r0, [r0]
- ldr r1, _080E567C @ =0x00000a64
- adds r0, r1
- str r0, [sp, 0x8]
- ldr r0, [sp, 0x34]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp, 0xC]
- mov r0, r10
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r7, 0
- adds r3, r6, 0
- bl AddTextPrinterParameterized4
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5678: .4byte gUnknown_203AAB4
-_080E567C: .4byte 0x00000a64
-_080E5680: .4byte 0x00000a65
- thumb_func_end sub_80E559C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 63a894247..24125485e 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -12663,7 +12663,7 @@ sub_811C04C: @ 811C04C
ldr r6, _0811C0CC @ =gPlayerParty
ldr r5, _0811C0D0 @ =gEnemyParty
_0811C05C:
- ldr r0, _0811C0D4 @ =gUnknown_203B0D4
+ ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
adds r0, r4, r0
ldrb r0, [r0]
subs r0, 0x1
@@ -12717,7 +12717,7 @@ _0811C096:
.align 2, 0
_0811C0CC: .4byte gPlayerParty
_0811C0D0: .4byte gEnemyParty
-_0811C0D4: .4byte gUnknown_203B0D4
+_0811C0D4: .4byte gSelectedOrderFromParty
_0811C0D8: .4byte gTrainerBattleOpponent_A
_0811C0DC: .4byte CB2_InitBattle
thumb_func_end sub_811C04C
@@ -13029,7 +13029,7 @@ _0811C3BC:
movs r1, 0
movs r2, 0x20
bl memset
- ldr r0, _0811C3DC @ =gUnknown_203B0D4
+ ldr r0, _0811C3DC @ =gSelectedOrderFromParty
ldrb r1, [r0]
ldrb r0, [r0, 0x1]
cmn r1, r0
@@ -13038,7 +13038,7 @@ _0811C3BC:
b _0811C3E2
.align 2, 0
_0811C3D8: .4byte gBlockSendBuffer
-_0811C3DC: .4byte gUnknown_203B0D4
+_0811C3DC: .4byte gSelectedOrderFromParty
_0811C3E0:
movs r0, 0x51
_0811C3E2:
diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc
new file mode 100644
index 000000000..5426cdfba
--- /dev/null
+++ b/asm/macros/battle_anim_script.inc
@@ -0,0 +1,285 @@
+@ commands
+
+ .macro loadspritegfx tag:req
+ .byte 0x0
+ .2byte \tag
+ .endm
+
+ .macro unloadspritegfx tag:req
+ .byte 0x1
+ .2byte \tag
+ .endm
+
+.macro createsprite template:req, anim_battler:req, subpriority_offset:req, argv:vararg
+ .byte 0x02
+ .4byte \template
+ .if \anim_battler == ANIM_TARGET
+ .byte 0x80 | (\subpriority_offset & 0x7F)
+ .else
+ .byte (\subpriority_offset & 0x7F)
+ .endif
+ .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2
+.Lsprite_\@_1:
+ .2byte \argv
+.Lsprite_\@_2:
+ .endm
+
+ .macro createvisualtask addr:req, priority:req, argv:vararg
+ .byte 0x03
+ .4byte \addr
+ .byte \priority
+ .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2
+.Lcreatetask_\@_1:
+ .2byte \argv
+.Lcreatetask_\@_2:
+ .endm
+
+ .macro delay param0:req
+ .byte 0x4
+ .byte \param0
+ .endm
+
+ .macro waitforvisualfinish
+ .byte 0x5
+ .endm
+
+ .macro hang1
+ .byte 0x6
+ .endm
+
+ .macro hang2
+ .byte 0x7
+ .endm
+
+ .macro end
+ .byte 0x8
+ .endm
+
+ .macro playse se:req
+ .byte 0x9
+ .2byte \se
+ .endm
+
+ .macro monbg battler:req
+ .byte 0xa
+ .byte \battler
+ .endm
+
+ .macro clearmonbg battler:req
+ .byte 0xb
+ .byte \battler
+ .endm
+
+ .macro setalpha eva:req, evb:req
+ .byte 0x0C
+ .2byte ((\evb) << 8) | (\eva)
+ .endm
+
+ .macro blendoff
+ .byte 0xd
+ .endm
+
+ .macro call param0:req
+ .byte 0xe
+ .4byte \param0
+ .endm
+
+ .macro return
+ .byte 0xf
+ .endm
+
+ .macro setarg param0:req, param1:req
+ .byte 0x10
+ .byte \param0
+ .2byte \param1
+ .endm
+
+ .macro choosetwoturnanim param0:req, param1:req
+ .byte 0x11
+ .4byte \param0
+ .4byte \param1
+ .endm
+
+ .macro jumpifmoveturn param0:req, ptr:req
+ .byte 0x12
+ .byte \param0
+ .4byte \ptr
+ .endm
+
+ .macro goto ptr:req
+ .byte 0x13
+ .4byte \ptr
+ .endm
+
+ .macro fadetobg bg:req
+ .byte 0x14
+ .byte \bg
+ .endm
+
+ .macro restorebg
+ .byte 0x15
+ .endm
+
+ .macro waitbgfadeout
+ .byte 0x16
+ .endm
+
+ .macro waitbgfadein
+ .byte 0x17
+ .endm
+
+ .macro changebg bg:req
+ .byte 0x18
+ .byte \bg
+ .endm
+
+ .macro playsewithpan se:req, pan:req
+ .byte 0x19
+ .2byte \se
+ .byte \pan
+ .endm
+
+ .macro setpan pan:req
+ .byte 0x1a
+ .byte \pan
+ .endm
+
+ .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
+ .byte 0x1b
+ .2byte \se
+ .byte \param1
+ .byte \param2
+ .byte \param3
+ .byte \param4
+ .endm
+
+ .macro loopsewithpan se:req, pan:req, wait:req, times:req
+ .byte 0x1c
+ .2byte \se
+ .byte \pan
+ .byte \wait
+ .byte \times
+ .endm
+
+ .macro waitplaysewithpan se:req, pan:req, wait:req
+ .byte 0x1d
+ .2byte \se
+ .byte \pan
+ .byte \wait
+ .endm
+
+ .macro setbldcnt param0:req
+ .byte 0x1e
+ .2byte \param0
+ .endm
+
+ .macro createsoundtask addr:req, argv:vararg
+ .byte 0x1F
+ .4byte \addr
+ .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2
+.Lcreatetask_1F_\@_1:
+ .2byte \argv
+.Lcreatetask_1F_\@_2:
+ .endm
+
+ .macro waitsound
+ .byte 0x20
+ .endm
+
+ .macro jumpargeq param0:req, param1:req, ptr:req
+ .byte 0x21
+ .byte \param0
+ .2byte \param1
+ .4byte \ptr
+ .endm
+
+ .macro monbg_22 battler:req
+ .byte 0x22
+ .byte \battler
+ .endm
+
+ .macro clearmonbg_23 battler:req
+ .byte 0x23
+ .byte \battler
+ .endm
+
+ .macro jumpifcontest ptr:req
+ .byte 0x24
+ .4byte \ptr
+ .endm
+
+ .macro fadetobgfromset param0:req, param1:req, param2:req
+ .byte 0x25
+ .byte \param0
+ .byte \param1
+ .byte \param2
+ .endm
+
+ .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
+ .byte 0x26
+ .2byte \se
+ .byte \param1
+ .byte \param2
+ .byte \param3
+ .byte \param4
+ .endm
+
+ .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
+ .byte 0x27
+ .2byte \se
+ .byte \param1
+ .byte \param2
+ .byte \param3
+ .byte \param4
+ .endm
+
+ .macro monbgprio_28 battler:req
+ .byte 0x28
+ .byte \battler
+ .endm
+
+ .macro monbgprio_29
+ .byte 0x29
+ .endm
+
+ .macro monbgprio_2A battler:req
+ .byte 0x2a
+ .byte \battler
+ .endm
+
+ .macro invisible battler:req
+ .byte 0x2b
+ .byte \battler
+ .endm
+
+ .macro visible battler:req
+ .byte 0x2c
+ .byte \battler
+ .endm
+
+ .macro doublebattle_2D battler:req
+ .byte 0x2d
+ .byte \battler
+ .endm
+
+ .macro doublebattle_2E battler:req
+ .byte 0x2e
+ .byte \battler
+ .endm
+
+ .macro stopsound
+ .byte 0x2f
+ .endm
+
+@ useful macros
+ .macro jumpreteq value:req, ptr:req
+ jumpargeq ARG_RET_ID, \value, \ptr
+ .endm
+
+ .macro jumprettrue ptr:req
+ jumpreteq TRUE, \ptr
+ .endm
+
+ .macro jumpretfalse ptr:req
+ jumpreteq FALSE, \ptr
+ .endm
diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s
deleted file mode 100644
index ba64bdbe8..000000000
--- a/asm/map_name_popup.s
+++ /dev/null
@@ -1,490 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8098110
-sub_8098110: @ 8098110
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r0, 0x80
- lsls r0, 7
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080981A2
- ldr r0, _08098178 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080981A2
- ldr r5, _0809817C @ =sub_80981AC
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _08098188
- adds r0, r5, 0
- movs r1, 0x5A
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- ldr r1, _08098180 @ =0xffffef7f
- movs r0, 0
- movs r2, 0
- bl ChangeBgY
- ldr r1, _08098184 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- strh r1, [r0, 0xC]
- strh r6, [r0, 0x18]
- b _080981A2
- .align 2, 0
-_08098178: .4byte gUnknown_203ADFA
-_0809817C: .4byte sub_80981AC
-_08098180: .4byte 0xffffef7f
-_08098184: .4byte gTasks
-_08098188:
- ldr r0, _080981A8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _0809819E
- movs r0, 0x4
- strh r0, [r1, 0x8]
-_0809819E:
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080981A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080981A8: .4byte gTasks
- thumb_func_end sub_8098110
-
- thumb_func_start sub_80981AC
-sub_80981AC: @ 80981AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080981D0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bls _080981C6
- b _080982DE
-_080981C6:
- lsls r0, 2
- ldr r1, _080981D4 @ =_080981D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080981D0: .4byte gTasks
-_080981D4: .4byte _080981D8
- .align 2, 0
-_080981D8:
- .4byte _080981FC
- .4byte _0809820E
- .4byte _08098218
- .4byte _08098234
- .4byte _0809824C
- .4byte _080982DE
- .4byte _0809827E
- .4byte _080982A6
- .4byte _080982D6
-_080981FC:
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- bl sub_8098340
- strh r0, [r4, 0x10]
- movs r0, 0x1
- strh r0, [r4, 0x12]
- strh r0, [r4, 0x8]
- b _080982DE
-_0809820E:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _080982DE
-_08098218:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x18
- negs r1, r1
- cmp r0, r1
- bgt _080982DE
- movs r0, 0x3
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080982DE
-_08098234:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080982DE
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x4
- strh r0, [r4, 0x8]
- b _080982DE
-_0809824C:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- blt _080982DE
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08098278
- ldrh r0, [r4, 0x10]
- bl sub_8098400
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0xE]
- b _080982DE
-_08098278:
- movs r0, 0x6
- strh r0, [r4, 0x8]
- b _080982E6
-_0809827E:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080982A0
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080982A0
- ldrb r0, [r4, 0x10]
- bl rbox_fill_rectangle
- ldrb r0, [r4, 0x10]
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_080982A0:
- movs r0, 0x7
- strh r0, [r4, 0x8]
- b _080982E6
-_080982A6:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080982E6
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080982C6
- ldrb r0, [r4, 0x10]
- bl RemoveWindow
- strh r5, [r4, 0x12]
- movs r0, 0x1
- strh r0, [r4, 0x16]
-_080982C6:
- movs r0, 0x8
- strh r0, [r4, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- b _080982E6
-_080982D6:
- adds r0, r2, 0
- bl DestroyTask
- b _080982E6
-_080982DE:
- ldrh r1, [r4, 0xC]
- movs r0, 0x12
- bl SetGpuReg
-_080982E6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80981AC
-
- thumb_func_start sub_80982EC
-sub_80982EC: @ 80982EC
- push {lr}
- ldr r0, _08098318 @ =sub_80981AC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _08098312
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0809831C @ =gTasks+0x8
- adds r1, r0, r1
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x5
- bgt _08098312
- movs r0, 0x6
- strh r0, [r1]
-_08098312:
- pop {r0}
- bx r0
- .align 2, 0
-_08098318: .4byte sub_80981AC
-_0809831C: .4byte gTasks+0x8
- thumb_func_end sub_80982EC
-
- thumb_func_start sub_8098320
-sub_8098320: @ 8098320
- push {lr}
- ldr r0, _0809833C @ =sub_80981AC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xFF
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809833C: .4byte sub_80981AC
- thumb_func_end sub_8098320
-
- thumb_func_start sub_8098340
-sub_8098340: @ 8098340
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, _08098378 @ =gUnknown_83D4164
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r6, 0x1D
- ldr r0, _0809837C @ =gMapHeader
- ldrb r0, [r0, 0x1A]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _08098396
- cmp r0, 0x7F
- beq _08098384
- ldr r2, [sp]
- lsrs r1, r2, 24
- adds r1, 0x5
- lsls r1, 24
- ldr r0, _08098380 @ =0x00ffffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- movs r6, 0x27
- b _08098396
- .align 2, 0
-_08098378: .4byte gUnknown_83D4164
-_0809837C: .4byte gMapHeader
-_08098380: .4byte 0x00ffffff
-_08098384:
- ldr r2, [sp]
- lsrs r1, r2, 24
- adds r1, 0x8
- lsls r1, 24
- ldr r0, _080983B4 @ =0x00ffffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- movs r6, 0x2D
-_08098396:
- mov r0, sp
- bl AddWindow
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0
- beq _080983B8
- movs r0, 0x3
- bl stdpal_get
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- b _080983C6
- .align 2, 0
-_080983B4: .4byte 0x00ffffff
-_080983B8:
- movs r0, 0x3
- bl stdpal_get
- ldr r1, _080983FC @ =gPlttBufferUnfaded + 0x1A0
- movs r2, 0x10
- bl CpuSet
-_080983C6:
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_814FF6C
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0xD
- bl DrawTextBorderOuter
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r5, 0
- bl sub_8098400
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- adds r0, r5, 0
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080983FC: .4byte gPlttBufferUnfaded + 0x1A0
- thumb_func_end sub_8098340
-
- thumb_func_start sub_8098400
-sub_8098400: @ 8098400
- push {r4-r6,lr}
- sub sp, 0x28
- lsls r0, 16
- lsrs r6, r0, 16
- movs r5, 0x70
- ldr r4, _08098478 @ =gMapHeader
- ldrb r1, [r4, 0x14]
- add r0, sp, 0xC
- movs r2, 0
- bl GetMapName
- adds r2, r0, 0
- movs r0, 0x1A
- ldrsb r0, [r4, r0]
- cmp r0, 0
- beq _08098434
- adds r1, r0, 0
- adds r0, r2, 0
- bl sub_809847C
- movs r0, 0x1A
- ldrsb r0, [r4, r0]
- movs r5, 0xB0
- cmp r0, 0x7F
- beq _08098434
- movs r5, 0x98
-_08098434:
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x2
- add r1, sp, 0xC
- bl GetStringWidth
- adds r4, r0, 0
- subs r4, r5, r4
- lsrs r4, 1
- lsls r5, r6, 24
- lsrs r5, 24
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x2
- add r2, sp, 0xC
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- add sp, 0x28
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098478: .4byte gMapHeader
- thumb_func_end sub_8098400
-
- thumb_func_start sub_809847C
-sub_809847C: @ 809847C
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r3, r1, 24
- asrs r1, 24
- cmp r1, 0
- beq _080984D2
- movs r0, 0
- strb r0, [r2]
- adds r2, 0x1
- cmp r1, 0x7F
- bne _080984A4
- ldr r1, _080984A0 @ =gUnknown_841D18D
- adds r0, r2, 0
- bl StringCopy
- b _080984D2
- .align 2, 0
-_080984A0: .4byte gUnknown_841D18D
-_080984A4:
- cmp r1, 0
- bge _080984B4
- movs r0, 0xBC
- strb r0, [r2]
- adds r2, 0x1
- negs r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
-_080984B4:
- lsls r1, r3, 24
- asrs r1, 24
- adds r0, r2, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- adds r1, r2, 0
- movs r0, 0xC0
- strb r0, [r2]
- adds r2, 0x1
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- adds r0, r2, 0
-_080984D2:
- pop {r1}
- bx r1
- thumb_func_end sub_809847C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index 9b9fe037f..28bcd8ecb 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -1747,7 +1747,7 @@ _080558D4:
cmp r0, r1
beq _08055914
movs r0, 0x1
- bl sub_8098110
+ bl CreateMapNamePopupIfNotAlreadyRunning
_08055914:
add sp, 0x4
pop {r4,r5}
@@ -3282,7 +3282,7 @@ sub_805644C: @ 805644C
bl sub_81127F8
_0805649E:
bl ScriptContext2_Enable
- bl sub_80982EC
+ bl DismissMapNamePopup
b _080564BA
.align 2, 0
_080564A8: .4byte gUnknown_3005E88
@@ -3323,7 +3323,7 @@ sub_80564C8: @ 80564C8
cmp r0, 0x1
bne _0805650C
bl ScriptContext2_Enable
- bl sub_80982EC
+ bl DismissMapNamePopup
b _08056522
.align 2, 0
_08056508: .4byte gUnknown_3005E90
@@ -3824,7 +3824,7 @@ sub_8056918: @ 8056918
cmp r0, 0x4
bne _0805692C
movs r0, 0
- bl sub_8098110
+ bl CreateMapNamePopupIfNotAlreadyRunning
_0805692C:
bl sub_807DF7C
pop {r0}
@@ -4223,7 +4223,7 @@ _08056CA8:
cmp r0, 0x4
bne _08056CCA
movs r0, 0
- bl sub_8098110
+ bl CreateMapNamePopupIfNotAlreadyRunning
b _08056CCA
.align 2, 0
_08056CBC: .4byte gMapHeader
diff --git a/asm/party_menu.s b/asm/party_menu.s
index aab14bbf0..dfe4e02c0 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -1152,7 +1152,7 @@ sub_811F388: @ 811F388
muls r0, r4
ldr r1, _0811F3AC @ =gPlayerParty
adds r0, r1
- ldr r5, _0811F3B0 @ =gUnknown_203B0D4
+ ldr r5, _0811F3B0 @ =gSelectedOrderFromParty
bl sub_8127550
lsls r0, 24
cmp r0, 0
@@ -1163,7 +1163,7 @@ sub_811F388: @ 811F388
b _0811F3F8
.align 2, 0
_0811F3AC: .4byte gPlayerParty
-_0811F3B0: .4byte gUnknown_203B0D4
+_0811F3B0: .4byte gSelectedOrderFromParty
_0811F3B4:
adds r1, 0x2
lsls r1, 24
@@ -11131,7 +11131,7 @@ _0812418C:
adds r0, r1
mov r10, r0
_081241B6:
- ldr r0, _0812420C @ =gUnknown_203B0D4
+ ldr r0, _0812420C @ =gSelectedOrderFromParty
adds r4, r5, r0
ldrb r0, [r4]
cmp r0, 0
@@ -11168,7 +11168,7 @@ _081241FC: .4byte gUnknown_8416B16
_08124200: .4byte gUnknown_203B09C
_08124204: .4byte gUnknown_203B0A0
_08124208: .4byte gTasks
-_0812420C: .4byte gUnknown_203B0D4
+_0812420C: .4byte gSelectedOrderFromParty
_08124210: .4byte gUnknown_203B0B4
_08124214: .4byte sub_811FB28
_08124218:
@@ -11237,7 +11237,7 @@ sub_8124278: @ 8124278
adds r0, 0xD
bl sub_8121CE4
movs r4, 0
- ldr r3, _081242C0 @ =gUnknown_203B0D4
+ ldr r3, _081242C0 @ =gSelectedOrderFromParty
ldr r6, _081242C4 @ =gUnknown_203B0A0
adds r5, r6, 0
_0812429E:
@@ -11257,7 +11257,7 @@ _0812429E:
b _081242E6
.align 2, 0
_081242BC: .4byte gUnknown_203B09C
-_081242C0: .4byte gUnknown_203B0D4
+_081242C0: .4byte gSelectedOrderFromParty
_081242C4: .4byte gUnknown_203B0A0
_081242C8:
ldrb r0, [r3, 0x1]
@@ -11287,7 +11287,7 @@ _081242E6:
movs r0, 0x1
movs r2, 0x1
bl sub_8121C70
- ldr r4, _08124348 @ =gUnknown_203B0D4
+ ldr r4, _08124348 @ =gSelectedOrderFromParty
ldrb r0, [r4]
cmp r0, 0
beq _08124312
@@ -11324,7 +11324,7 @@ _08124328:
bx r0
.align 2, 0
_08124344: .4byte gUnknown_203B0B4
-_08124348: .4byte gUnknown_203B0D4
+_08124348: .4byte gSelectedOrderFromParty
_0812434C: .4byte gTasks
_08124350: .4byte sub_811FB28
thumb_func_end sub_8124278
@@ -17411,14 +17411,14 @@ _081274F8: .4byte sub_812773C
thumb_func_start sub_81274FC
sub_81274FC: @ 81274FC
push {lr}
- ldr r0, _0812750C @ =gUnknown_203B0D4
+ ldr r0, _0812750C @ =gSelectedOrderFromParty
movs r1, 0
movs r2, 0x3
bl memset
pop {r0}
bx r0
.align 2, 0
-_0812750C: .4byte gUnknown_203B0D4
+_0812750C: .4byte gSelectedOrderFromParty
thumb_func_end sub_81274FC
thumb_func_start sub_8127510
@@ -17564,18 +17564,18 @@ sub_81275F8: @ 81275F8
_08127618: .4byte gPlayerParty
_0812761C: .4byte gUnknown_203B0A0
_08127620:
- ldr r1, _0812762C @ =gUnknown_203B0D4
+ ldr r1, _0812762C @ =gSelectedOrderFromParty
ldrb r0, [r1, 0x2]
cmp r0, 0
bne _08127630
movs r0, 0x11
b _08127702
.align 2, 0
-_0812762C: .4byte gUnknown_203B0D4
+_0812762C: .4byte gSelectedOrderFromParty
_08127630:
movs r5, 0
_08127632:
- ldr r2, _081276DC @ =gUnknown_203B0D4
+ ldr r2, _081276DC @ =gSelectedOrderFromParty
adds r4, r2, r5
ldrb r0, [r4]
movs r1, 0x64
@@ -17618,7 +17618,7 @@ _0812767E:
adds r0, r2
movs r1, 0
ldrsh r4, [r0, r1]
- ldr r2, _081276DC @ =gUnknown_203B0D4
+ ldr r2, _081276DC @ =gSelectedOrderFromParty
adds r6, r2, r5
ldrb r0, [r6]
muls r0, r7
@@ -17660,18 +17660,18 @@ _081276D0:
bls _08127632
b _08127700
.align 2, 0
-_081276DC: .4byte gUnknown_203B0D4
+_081276DC: .4byte gSelectedOrderFromParty
_081276E0: .4byte gUnknown_203B09C
_081276E4: .4byte 0x00000236
_081276E8:
- ldr r2, _081276F4 @ =gUnknown_203B0D4
+ ldr r2, _081276F4 @ =gSelectedOrderFromParty
ldrb r0, [r2, 0x1]
cmp r0, 0
bne _08127700
movs r0, 0x12
b _08127702
.align 2, 0
-_081276F4: .4byte gUnknown_203B0D4
+_081276F4: .4byte gSelectedOrderFromParty
_081276F8:
movs r0, 0x13
b _08127702
@@ -17696,7 +17696,7 @@ sub_8127710: @ 8127710
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
- ldr r3, _08127728 @ =gUnknown_203B0D4
+ ldr r3, _08127728 @ =gSelectedOrderFromParty
_0812771A:
adds r0, r1, r3
ldrb r0, [r0]
@@ -17705,7 +17705,7 @@ _0812771A:
movs r0, 0x1
b _08127738
.align 2, 0
-_08127728: .4byte gUnknown_203B0D4
+_08127728: .4byte gSelectedOrderFromParty
_0812772C:
adds r0, r1, 0x1
lsls r0, 24
@@ -17740,7 +17740,7 @@ sub_812773C: @ 812773C
.align 2, 0
_08127764: .4byte gTasks
_08127768:
- ldr r0, _08127780 @ =gUnknown_203B0D4
+ ldr r0, _08127780 @ =gSelectedOrderFromParty
ldrb r0, [r0]
cmp r0, 0
beq _08127784
@@ -17750,7 +17750,7 @@ _08127768:
bl sub_811FA78
b _0812779E
.align 2, 0
-_08127780: .4byte gUnknown_203B0D4
+_08127780: .4byte gSelectedOrderFromParty
_08127784:
movs r0, 0x1A
bl PlaySE
diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s
deleted file mode 100644
index 8ebfc3731..000000000
--- a/asm/save_menu_util.s
+++ /dev/null
@@ -1,149 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SaveStatToString
-SaveStatToString: @ 80F7FCC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r5, r1, 0
- movs r1, 0xFC
- strb r1, [r5]
- adds r5, 0x1
- movs r0, 0x1
- strb r0, [r5]
- adds r5, 0x1
- strb r2, [r5]
- adds r5, 0x1
- strb r1, [r5]
- adds r5, 0x1
- movs r0, 0x3
- strb r0, [r5]
- adds r5, 0x1
- adds r2, 0x1
- strb r2, [r5]
- adds r5, 0x1
- cmp r3, 0x5
- bhi _080F80D8
- lsls r0, r3, 2
- ldr r1, _080F8008 @ =_080F800C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F8008: .4byte _080F800C
- .align 2, 0
-_080F800C:
- .4byte _080F8024
- .4byte _080F8034
- .4byte _080F805C
- .4byte _080F8098
- .4byte _080F80A8
- .4byte _080F806C
-_080F8024:
- ldr r0, _080F8030 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringCopy
- b _080F80D8
- .align 2, 0
-_080F8030: .4byte gSaveBlock2Ptr
-_080F8034:
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080F8044
- movs r0, 0x1
- bl GetNationalPokedexCount
- b _080F804A
-_080F8044:
- movs r0, 0x1
- bl GetKantoPokedexCount
-_080F804A:
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- b _080F80D8
-_080F805C:
- ldr r4, _080F8068 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- adds r0, r5, 0
- movs r2, 0
- b _080F8076
- .align 2, 0
-_080F8068: .4byte gSaveBlock2Ptr
-_080F806C:
- ldr r4, _080F8094 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- adds r0, r5, 0
- movs r2, 0x1
-_080F8076:
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- movs r0, 0xF0
- strb r0, [r5]
- adds r5, 0x1
- ldr r0, [r4]
- ldrb r1, [r0, 0x10]
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- b _080F80D8
- .align 2, 0
-_080F8094: .4byte gSaveBlock2Ptr
-_080F8098:
- ldr r0, _080F80A4 @ =gMapHeader
- ldrb r1, [r0, 0x14]
- adds r0, r5, 0
- bl sub_80C4DF8
- b _080F80D8
- .align 2, 0
-_080F80A4: .4byte gMapHeader
-_080F80A8:
- movs r4, 0x82
- lsls r4, 4
- movs r6, 0
- adds r7, r5, 0x1
-_080F80B0:
- lsls r0, r4, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F80C0
- adds r6, 0x1
-_080F80C0:
- adds r4, 0x1
- ldr r0, _080F80E0 @ =0x00000827
- cmp r4, r0
- ble _080F80B0
- adds r0, r6, 0
- subs r0, 0x5F
- strb r0, [r5]
- adds r5, r7, 0
- movs r0, 0xA
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
-_080F80D8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F80E0: .4byte 0x00000827
- thumb_func_end SaveStatToString
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
index 525293081..81b3b7efe 100644
--- a/asm/script_pokemon_util_80A0058.s
+++ b/asm/script_pokemon_util_80A0058.s
@@ -396,7 +396,7 @@ _080A034C: .4byte sub_80A0350
thumb_func_start sub_80A0350
sub_80A0350: @ 80A0350
push {lr}
- ldr r0, _080A0360 @ =gUnknown_203B0D4
+ ldr r0, _080A0360 @ =gSelectedOrderFromParty
ldrb r1, [r0]
cmp r1, 0
bne _080A0368
@@ -404,7 +404,7 @@ sub_80A0350: @ 80A0350
strh r1, [r0]
b _080A036E
.align 2, 0
-_080A0360: .4byte gUnknown_203B0D4
+_080A0360: .4byte gSelectedOrderFromParty
_080A0364: .4byte gSpecialVar_Result
_080A0368:
ldr r1, _080A0378 @ =gSpecialVar_Result
@@ -438,7 +438,7 @@ _080A0398: .4byte sub_80A039C
thumb_func_start sub_80A039C
sub_80A039C: @ 80A039C
push {r4,lr}
- ldr r0, _080A03B0 @ =gUnknown_203B0D4
+ ldr r0, _080A03B0 @ =gSelectedOrderFromParty
ldrb r4, [r0]
cmp r4, 0
bne _080A03B8
@@ -447,7 +447,7 @@ sub_80A039C: @ 80A039C
strh r4, [r0]
b _080A03C2
.align 2, 0
-_080A03B0: .4byte gUnknown_203B0D4
+_080A03B0: .4byte gSelectedOrderFromParty
_080A03B4: .4byte gSpecialVar_Result
_080A03B8:
bl ReducePlayerPartyToThree
@@ -481,7 +481,7 @@ ReducePlayerPartyToThree: @ 80A03D8
ldr r6, _080A0454 @ =gPlayerParty
adds r4, r7, 0
_080A03F4:
- ldr r0, _080A0458 @ =gUnknown_203B0D4
+ ldr r0, _080A0458 @ =gSelectedOrderFromParty
adds r1, r5, r0
ldrb r0, [r1]
cmp r0, 0
@@ -528,7 +528,7 @@ _080A042C:
bx r0
.align 2, 0
_080A0454: .4byte gPlayerParty
-_080A0458: .4byte gUnknown_203B0D4
+_080A0458: .4byte gSelectedOrderFromParty
_080A045C: .4byte 0x05000096
thumb_func_end ReducePlayerPartyToThree
diff --git a/baserom.ips b/baserom.ips
index 370073252..1150e0779 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/battle_anim_effects_3.s b/data/battle_anim_effects_3.s
index 23dd1e1fd..ebd42dfb5 100644
--- a/data/battle_anim_effects_3.s
+++ b/data/battle_anim_effects_3.s
@@ -7,13 +7,67 @@
.align 2
gUnknown_83FEDE4:: @ 83FEDE4
- .incbin "baserom.gba", 0x3FEDE4, 0x29C
+ .incbin "baserom.gba", 0x3FEDE4, 0x1C
+
+gUnknown_83FEE00::
+ .incbin "baserom.gba", 0x3FEE00, 0x18
+
+gUnknown_83FEE18::
+ .incbin "baserom.gba", 0x3FEE18, 0x18
+
+gUnknown_83FEE30::
+ .incbin "baserom.gba", 0x3FEE30, 0x2C
+
+gUnknown_83FEE5C::
+ .incbin "baserom.gba", 0x3FEE5C, 0x18
+
+gUnknown_83FEE74::
+ .incbin "baserom.gba", 0x3FEE74, 0x18
+
+gUnknown_83FEE8C::
+ .incbin "baserom.gba", 0x3FEE8C, 0x58
+
+gUnknown_83FEEE4::
+ .incbin "baserom.gba", 0x3FEEE4, 0x18
+
+gUnknown_83FEEFC::
+ .incbin "baserom.gba", 0x3FEEFC, 0x34
+
+gUnknown_83FEF30::
+ .incbin "baserom.gba", 0x3FEF30, 0x40
+
+gUnknown_83FEF70::
+ .incbin "baserom.gba", 0x3FEF70, 0x4C
+
+gUnknown_83FEFBC::
+ .incbin "baserom.gba", 0x3FEFBC, 0x50
+
+gUnknown_83FF00C::
+ .incbin "baserom.gba", 0x3FF00C, 0x18
+
+gUnknown_83FF024::
+ .incbin "baserom.gba", 0x3FF024, 0x18
+
+gUnknown_83FF03C::
+ .incbin "baserom.gba", 0x3FF03C, 0x2C
+
+gUnknown_83FF068::
+ .incbin "baserom.gba", 0x3FF068, 0x18
gUnknown_83FF080:: @ 83FF080
- .incbin "baserom.gba", 0x3FF080, 0xB0
+ .incbin "baserom.gba", 0x3FF080, 0x58
+
+gUnknown_83FF0D8::
+ .incbin "baserom.gba", 0x3FF0D8, 0x40
+
+gUnknown_83FF118::
+ .incbin "baserom.gba", 0x3FF118, 0x18
gUnknown_83FF130:: @ 83FF130
- .incbin "baserom.gba", 0x3FF130, 0x38
+ .incbin "baserom.gba", 0x3FF130, 0x20
+
+gUnknown_83FF150::
+ .incbin "baserom.gba", 0x3FF150, 0x18
gUnknown_83FF168:: @ 83FF168
.incbin "baserom.gba", 0x3FF168, 0x18
@@ -25,7 +79,10 @@ gUnknown_83FF198:: @ 83FF198
.incbin "baserom.gba", 0x3FF198, 0x28
gUnknown_83FF1C0:: @ 83FF1C0
- .incbin "baserom.gba", 0x3FF1C0, 0x50
+ .incbin "baserom.gba", 0x3FF1C0, 0x38
+
+gUnknown_83FF1F8::
+ .incbin "baserom.gba", 0x3FF1F8, 0x18
gUnknown_83FF210:: @ 83FF210
.incbin "baserom.gba", 0x3FF210, 0x30
@@ -43,10 +100,34 @@ gUnknown_83FF288:: @ 83FF288
.incbin "baserom.gba", 0x3FF288, 0x8
gUnknown_83FF290:: @ 83FF290
- .incbin "baserom.gba", 0x3FF290, 0x140
+ .incbin "baserom.gba", 0x3FF290, 0x20
+
+gUnknown_83FF2B0::
+ .incbin "baserom.gba", 0x3FF2B0, 0x74
+
+gUnknown_83FF324::
+ .incbin "baserom.gba", 0x3FF324, 0x4C
+
+gUnknown_83FF370::
+ .incbin "baserom.gba", 0x3FF370, 0x18
+
+gUnknown_83FF388::
+ .incbin "baserom.gba", 0x3FF388, 0x18
+
+gUnknown_83FF3A0::
+ .incbin "baserom.gba", 0x3FF3A0, 0x18
+
+gUnknown_83FF3B8::
+ .incbin "baserom.gba", 0x3FF3B8, 0x18
gUnknown_83FF3D0:: @ 83FF3D0
- .incbin "baserom.gba", 0x3FF3D0, 0x15C
+ .incbin "baserom.gba", 0x3FF3D0, 0x9C
+
+gUnknown_83FF46C::
+ .incbin "baserom.gba", 0x3FF46C, 0xA8
+
+gUnknown_83FF514::
+ .incbin "baserom.gba", 0x3FF514, 0x18
gUnknown_83FF52C:: @ 83FF52C
.incbin "baserom.gba", 0x3FF52C, 0x20
@@ -55,16 +136,46 @@ gUnknown_83FF54C:: @ 83FF54C
.incbin "baserom.gba", 0x3FF54C, 0x18
gUnknown_83FF564:: @ 83FF564
- .incbin "baserom.gba", 0x3FF564, 0x68
+ .incbin "baserom.gba", 0x3FF564, 0x50
+
+gUnknown_83FF5B4::
+ .incbin "baserom.gba", 0x3FF5B4, 0x18
gUnknown_83FF5CC:: @ 83FF5CC
- .incbin "baserom.gba", 0x3FF5CC, 0x60
+ .incbin "baserom.gba", 0x3FF5CC, 0x18
+
+gUnknown_83FF5E4::
+ .incbin "baserom.gba", 0x3FF5E4, 0x48
gUnknown_83FF62C:: @ 83FF62C
- .incbin "baserom.gba", 0x3FF62C, 0x30
+ .incbin "baserom.gba", 0x3FF62C, 0x18
+
+gUnknown_83FF644::
+ .incbin "baserom.gba", 0x3FF644, 0x18
gUnknown_83FF65C:: @ 83FF65C
- .incbin "baserom.gba", 0x3FF65C, 0x14C
+ .incbin "baserom.gba", 0x3FF65C, 0x18
+
+gUnknown_83FF674::
+ .incbin "baserom.gba", 0x3FF674, 0x18
+
+gUnknown_83FF68C::
+ .incbin "baserom.gba", 0x3FF68C, 0x18
+
+gUnknown_83FF6A4::
+ .incbin "baserom.gba", 0x3FF6A4, 0x18
+
+gUnknown_83FF6BC::
+ .incbin "baserom.gba", 0x3FF6BC, 0x30
+
+gUnknown_83FF6EC::
+ .incbin "baserom.gba", 0x3FF6EC, 0x78
+
+gUnknown_83FF764::
+ .incbin "baserom.gba", 0x3FF764, 0x2C
+
+gUnknown_83FF790::
+ .incbin "baserom.gba", 0x3FF790, 0x18
gUnknown_83FF7A8:: @ 83FF7A8
- .incbin "baserom.gba", 0x3FF7A8, 0x24C
+ .incbin "baserom.gba", 0x3FF7A8, 0x30
diff --git a/data/battle_anim_effects_misc.s b/data/battle_anim_effects_misc.s
index 182ebc850..e9e96f2c8 100644
--- a/data/battle_anim_effects_misc.s
+++ b/data/battle_anim_effects_misc.s
@@ -7,7 +7,30 @@
.align 2
gUnknown_83E2964:: @ 83E2964
- .incbin "baserom.gba", 0x3E2964, 0x74
+ .byte 0x02, 0x04, 0x01, 0x03
+
+gUnknown_83E2968::
+ obj_image_anim_frame 0x0000, 5
+ obj_image_anim_frame 0x0002, 5
+ obj_image_anim_frame 0x0004, 5
+ obj_image_anim_frame 0x0006, 5
+ obj_image_anim_frame 0x0008, 5
+ obj_image_anim_frame 0x000a, 5
+ obj_image_anim_frame 0x000c, 5
+ obj_image_anim_frame 0x000e, 5
+ obj_image_anim_jump 0x0000
+
+gUnknown_83E298C::
+ .4byte gUnknown_83E2968
+
+gUnknown_83E2990::
+ spr_template 10067, 10067, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8
+
+gUnknown_83E29A8::
+ spr_template 10068, 10068, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8
+
+gUnknown_83E29C0::
+ spr_template 10065, 10065, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8
gAnimCmd_83E29D8::
obj_image_anim_frame 0, 1
@@ -76,46 +99,296 @@ gUnknown_83E2A70::
gUnknown_83E2A88:: @ 83E2A88
spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A3C, NULL, gDummySpriteAffineAnimTable, sub_80A2430
- .incbin "baserom.gba", 0x3E2AA0, 0x4D8
+gSpriteTemplate_83E2AA0::
+ .incbin "baserom.gba", 0x3E2AA0, 0x1C
+
+gUnknown_83E2ABC::
+ .incbin "baserom.gba", 0x3E2ABC, 0x2C
+
+gUnknown_83E2AE8::
+ .incbin "baserom.gba", 0x3E2AE8, 0x18
+
+gUnknown_83E2B00::
+ .incbin "baserom.gba", 0x3E2B00, 0x34
+
+gUnknown_83E2B34::
+ .incbin "baserom.gba", 0x3E2B34, 0x30
+
+gUnknown_83E2B64::
+ .incbin "baserom.gba", 0x3E2B64, 0x30
+
+gUnknown_83E2B94::
+ .incbin "baserom.gba", 0x3E2B94, 0x18
+
+gUnknown_83E2BAC::
+ .incbin "baserom.gba", 0x3E2BAC, 0x5C
+
+gUnknown_83E2C08::
+ .incbin "baserom.gba", 0x3E2C08, 0x18
+
+gUnknown_83E2C20::
+ .incbin "baserom.gba", 0x3E2C20, 0x30
+
+gUnknown_83E2C50::
+ .incbin "baserom.gba", 0x3E2C50, 0x2C
+
+gUnknown_83E2C7C::
+ .incbin "baserom.gba", 0x3E2C7C, 0x90
+
+gUnknown_83E2D0C::
+ .incbin "baserom.gba", 0x3E2D0C, 0x48
+
+gUnknown_83E2D54::
+ .incbin "baserom.gba", 0x3E2D54, 0x70
+
+gUnknown_83E2DC4::
+ .incbin "baserom.gba", 0x3E2DC4, 0x18
+
+gUnknown_83E2DDC::
+ .incbin "baserom.gba", 0x3E2DDC, 0x28
+
+gUnknown_83E2E04::
+ .incbin "baserom.gba", 0x3E2E04, 0x84
+
+gUnknown_83E2E88::
+ .incbin "baserom.gba", 0x3E2E88, 0x18
+
+gUnknown_83E2EA0::
+ .incbin "baserom.gba", 0x3E2EA0, 0x30
+
+gUnknown_83E2ED0::
+ .incbin "baserom.gba", 0x3E2ED0, 0x18
+
+gUnknown_83E2EE8::
+ .incbin "baserom.gba", 0x3E2EE8, 0x78
+
+gUnknown_83E2F60::
+ .incbin "baserom.gba", 0x3E2F60, 0x18
gUnknown_83E2F78:: @ 83E2F78
.incbin "baserom.gba", 0x3E2F78, 0x78
gUnknown_83E2FF0:: @ 83E2FF0
- .incbin "baserom.gba", 0x3E2FF0, 0x100
+ .incbin "baserom.gba", 0x3E2FF0, 0x34
+
+gUnknown_83E3024::
+ .incbin "baserom.gba", 0x3E3024, 0x18
+
+gUnknown_83E303C::
+ .incbin "baserom.gba", 0x3E303C, 0x6C
+
+gUnknown_83E30A8::
+ .incbin "baserom.gba", 0x3E30A8, 0x18
+
+gUnknown_83E30C0::
+ .incbin "baserom.gba", 0x3E30C0, 0x18
+
+gUnknown_83E30D8::
+ .incbin "baserom.gba", 0x3E30D8, 0x18
gUnknown_83E30F0:: @ 83E30F0
- .incbin "baserom.gba", 0x3E30F0, 0x458
+ .incbin "baserom.gba", 0x3E30F0, 0x10
+
+gUnknown_83E3100::
+ .incbin "baserom.gba", 0x3E3100, 0x48
+
+gUnknown_83E3148::
+ .incbin "baserom.gba", 0x3E3148, 0x18
+
+gUnknown_83E3160::
+ .incbin "baserom.gba", 0x3E3160, 0x134
+
+gUnknown_83E3294::
+ .incbin "baserom.gba", 0x3E3294, 0x18
+
+gUnknown_83E32AC::
+ .incbin "baserom.gba", 0x3E32AC, 0xA8
+
+gUnknown_83E3354::
+ .incbin "baserom.gba", 0x3E3354, 0x60
+
+gUnknown_83E33B4::
+ .incbin "baserom.gba", 0x3E33B4, 0x40
+
+gUnknown_83E33F4::
+ .incbin "baserom.gba", 0x3E33F4, 0x18
+
+gUnknown_83E340C::
+ .incbin "baserom.gba", 0x3E340C, 0xF4
+
+gUnknown_83E3500::
+ .incbin "baserom.gba", 0x3E3500, 0x18
+
+gUnknown_83E3518::
+ .incbin "baserom.gba", 0x3E3518, 0x18
+
+gUnknown_83E3530::
+ .incbin "baserom.gba", 0x3E3530, 0x18
gUnknown_83E3548:: @ 83E3548
- .incbin "baserom.gba", 0x3E3548, 0x1EC
+ .incbin "baserom.gba", 0x3E3548, 0x8
+
+gUnknown_83E3550::
+ .incbin "baserom.gba", 0x3E3550, 0x54
+
+gUnknown_83E35A4::
+ .incbin "baserom.gba", 0x3E35A4, 0x18
+
+gUnknown_83E35BC::
+ .incbin "baserom.gba", 0x3E35BC, 0x18
+
+gUnknown_83E35D4::
+ .incbin "baserom.gba", 0x3E35D4, 0x30
+
+gUnknown_83E3604::
+ .incbin "baserom.gba", 0x3E3604, 0x58
+
+gUnknown_83E365C::
+ .incbin "baserom.gba", 0x3E365C, 0x18
+
+gUnknown_83E3674::
+ .incbin "baserom.gba", 0x3E3674, 0x34
+
+gUnknown_83E36A8::
+ .incbin "baserom.gba", 0x3E36A8, 0x44
+
+gUnknown_83E36EC::
+ .incbin "baserom.gba", 0x3E36EC, 0x30
+
+gUnknown_83E371C::
+ .incbin "baserom.gba", 0x3E371C, 0x18
gUnknown_83E3734:: @ 83E3734
.incbin "baserom.gba", 0x3E3734, 0x30
gUnknown_83E3764:: @ 83E3764
- .incbin "baserom.gba", 0x3E3764, 0x134
+ .incbin "baserom.gba", 0x3E3764, 0x40
+
+gUnknown_83E37A4::
+ .incbin "baserom.gba", 0x3E37A4, 0x18
+
+gUnknown_83E37BC::
+ .incbin "baserom.gba", 0x3E37BC, 0x30
+
+gUnknown_83E37EC::
+ .incbin "baserom.gba", 0x3E37EC, 0x94
+
+gUnknown_83E3880::
+ .incbin "baserom.gba", 0x3E3880, 0x18
gUnknown_83E3898:: @ 83E3898
- .incbin "baserom.gba", 0x3E3898, 0xF4
+ .incbin "baserom.gba", 0x3E3898, 0x30
+
+gUnknown_83E38C8::
+ .incbin "baserom.gba", 0x3E38C8, 0x18
+
+gUnknown_83E38E0::
+ .incbin "baserom.gba", 0x3E38E0, 0x34
+
+gUnknown_83E3914::
+ .incbin "baserom.gba", 0x3E3914, 0x78
gUnknown_83E398C:: @ 83E398C
- .incbin "baserom.gba", 0x3E398C, 0x29C
+ .incbin "baserom.gba", 0x3E398C, 0xA8
+
+gUnknown_83E3A34::
+ .incbin "baserom.gba", 0x3E3A34, 0x18
+
+gUnknown_83E3A4C::
+ .incbin "baserom.gba", 0x3E3A4C, 0x78
+
+gUnknown_83E3AC4::
+ .incbin "baserom.gba", 0x3E3AC4, 0xF8
+
+gUnknown_83E3BBC::
+ .incbin "baserom.gba", 0x3E3BBC, 0x3C
+
+gUnknown_83E3BF8::
+ .incbin "baserom.gba", 0x3E3BF8, 0x18
+
+gUnknown_83E3C10::
+ .incbin "baserom.gba", 0x3E3C10, 0x18
gUnknown_83E3C28:: @ 83E3C28
- .incbin "baserom.gba", 0x3E3C28, 0xF0
+ .incbin "baserom.gba", 0x3E3C28, 0x78
+
+gUnknown_83E3CA0::
+ .incbin "baserom.gba", 0x3E3CA0, 0x18
+
+gUnknown_83E3CB8::
+ .incbin "baserom.gba", 0x3E3CB8, 0x18
+
+gUnknown_83E3CD0::
+ .incbin "baserom.gba", 0x3E3CD0, 0x18
+
+gUnknown_83E3CE8::
+ .incbin "baserom.gba", 0x3E3CE8, 0x18
+
+gUnknown_83E3D00::
+ .incbin "baserom.gba", 0x3E3D00, 0x18
gUnknown_83E3D18:: @ 83E3D18
- .incbin "baserom.gba", 0x3E3D18, 0x148
+ .incbin "baserom.gba", 0x3E3D18, 0x38
+
+gUnknown_83E3D50::
+ .incbin "baserom.gba", 0x3E3D50, 0x18
+
+gUnknown_83E3D68::
+ .incbin "baserom.gba", 0x3E3D68, 0x2C
+
+gUnknown_83E3D94::
+ .incbin "baserom.gba", 0x3E3D94, 0x34
+
+gUnknown_83E3DC8::
+ .incbin "baserom.gba", 0x3E3DC8, 0x40
+
+gUnknown_83E3E08::
+ .incbin "baserom.gba", 0x3E3E08, 0x40
+
+gUnknown_83E3E48::
+ .incbin "baserom.gba", 0x3E3E48, 0x18
gUnknown_83E3E60:: @ 83E3E60
.incbin "baserom.gba", 0x3E3E60, 0x20
gUnknown_83E3E80:: @ 83E3E80
- .incbin "baserom.gba", 0x3E3E80, 0x9C
+ .incbin "baserom.gba", 0x3E3E80, 0x50
+
+gUnknown_83E3ED0::
+ .incbin "baserom.gba", 0x3E3ED0, 0x34
+
+gUnknown_83E3F04::
+ .incbin "baserom.gba", 0x3E3F04, 0x18
gUnknown_83E3F1C:: @ 83E3F1C
- .incbin "baserom.gba", 0x3E3F1C, 0x20C
+ .incbin "baserom.gba", 0x3E3F1C, 0x30
+
+gUnknown_83E3F4C::
+ .incbin "baserom.gba", 0x3E3F4C, 0x18
+
+gUnknown_83E3F64::
+ .incbin "baserom.gba", 0x3E3F64, 0x30
+
+gUnknown_83E3F94::
+ .incbin "baserom.gba", 0x3E3F94, 0x94
+
+gUnknown_83E4028::
+ .incbin "baserom.gba", 0x3E4028, 0x6C
+
+gUnknown_83E4094::
+ .incbin "baserom.gba", 0x3E4094, 0x34
+
+gUnknown_83E40C8::
+ .incbin "baserom.gba", 0x3E40C8, 0x18
+
+gUnknown_83E40E0::
+ .incbin "baserom.gba", 0x3E40E0, 0x18
+
+gUnknown_83E40F8::
+ .incbin "baserom.gba", 0x3E40F8, 0x18
+
+gUnknown_83E4110::
+ .incbin "baserom.gba", 0x3E4110, 0x18
gUnknown_83E4128:: @ 83E4128
.incbin "baserom.gba", 0x3E4128, 0x2C
@@ -124,28 +397,133 @@ gUnknown_83E4154:: @ 83E4154
.incbin "baserom.gba", 0x3E4154, 0x18
gUnknown_83E416C:: @ 83E416C
- .incbin "baserom.gba", 0x3E416C, 0x5C
+ .incbin "baserom.gba", 0x3E416C, 0x44
+
+gUnknown_83E41B0::
+ .incbin "baserom.gba", 0x3E41B0, 0x18
gUnknown_83E41C8:: @ 83E41C8
- .incbin "baserom.gba", 0x3E41C8, 0x38
+ .incbin "baserom.gba", 0x3E41C8, 0x8
+
+gUnknown_83E41D0::
+ .incbin "baserom.gba", 0x3E41D0, 0x18
+
+gUnknown_83E41E8::
+ .incbin "baserom.gba", 0x3E41E8, 0x18
gUnknown_83E4200:: @ 83E4200
- .incbin "baserom.gba", 0x3E4200, 0x210
+ .incbin "baserom.gba", 0x3E4200, 0x18
+
+gUnknown_83E4218::
+ .incbin "baserom.gba", 0x3E4218, 0x18
+
+gUnknown_83E4230::
+ .incbin "baserom.gba", 0x3E4230, 0x18
+
+gUnknown_83E4248::
+ .incbin "baserom.gba", 0x3E4248, 0x34
+
+gUnknown_83E427C::
+ .incbin "baserom.gba", 0x3E427C, 0x18
+
+gUnknown_83E4294::
+ .incbin "baserom.gba", 0x3E4294, 0x34
+
+gUnknown_83E42C8::
+ .incbin "baserom.gba", 0x3E42C8, 0x34
+
+gUnknown_83E42FC::
+ .incbin "baserom.gba", 0x3E42FC, 0x24
+
+gUnknown_83E4320::
+ .incbin "baserom.gba", 0x3E4320, 0x18
+
+gUnknown_83E4338::
+ .incbin "baserom.gba", 0x3E4338, 0x30
+
+gUnknown_83E4368::
+ .incbin "baserom.gba", 0x3E4368, 0x48
+
+gUnknown_83E43B0::
+ .incbin "baserom.gba", 0x3E43B0, 0x48
+
+gUnknown_83E43F8::
+ .incbin "baserom.gba", 0x3E43F8, 0x18
gUnknown_83E4410:: @ 83E4410
- .incbin "baserom.gba", 0x3E4410, 0x1488
+ .incbin "baserom.gba", 0x3E4410, 0x20
+
+gUnknown_83E4430::
+ .incbin "baserom.gba", 0x3E4430, 0x54
+
+gUnknown_83E4484::
+ .incbin "baserom.gba", 0x3E4484, 0x18
+
+gUnknown_83E449C::
+ .incbin "baserom.gba", 0x3E449C, 0x40
+
+gUnknown_83E44DC::
+ .incbin "baserom.gba", 0x3E44DC, 0x13BC
gUnknown_83E5898:: @ 83E5898
- .incbin "baserom.gba", 0x3E5898, 0xC0
+ .incbin "baserom.gba", 0x3E5898, 0x48
+
+gUnknown_83E58E0::
+ .incbin "baserom.gba", 0x3E58E0, 0x4C
+
+gUnknown_83E592C::
+ .incbin "baserom.gba", 0x3E592C, 0x2C
gUnknown_83E5958:: @ 83E5958
- .incbin "baserom.gba", 0x3E5958, 0x120
+ .incbin "baserom.gba", 0x3E5958, 0x4
+
+gUnknown_83E595C::
+ .incbin "baserom.gba", 0x3E595C, 0x18
+
+gUnknown_83E5974::
+ .incbin "baserom.gba", 0x3E5974, 0x18
+
+gUnknown_83E598C::
+ .incbin "baserom.gba", 0x3E598C, 0x18
+
+gUnknown_83E59A4::
+ .incbin "baserom.gba", 0x3E59A4, 0x2C
+
+gUnknown_83E59D0::
+ .incbin "baserom.gba", 0x3E59D0, 0x18
+
+gUnknown_83E59E8::
+ .incbin "baserom.gba", 0x3E59E8, 0x50
+
+gUnknown_83E5A38::
+ .incbin "baserom.gba", 0x3E5A38, 0x18
-gUnknown_83E5A78:: @ 83E5A78
- .incbin "baserom.gba", 0x3E5A78, 0x68
+gUnknown_83E5A50::
+ .incbin "baserom.gba", 0x3E5A50, 0x28
+
+gUnknown_83E5A78::
+ .incbin "baserom.gba", 0x3E5A78, 0x8
+
+gUnknown_83E5A80::
+ .incbin "baserom.gba", 0x3E5A80, 0x18
+
+gUnknown_83E5A98::
+ .incbin "baserom.gba", 0x3E5A98, 0x18
+
+gUnknown_83E5AB0::
+ .incbin "baserom.gba", 0x3E5AB0, 0x18
+
+gUnknown_83E5AC8::
+ .incbin "baserom.gba", 0x3E5AC8, 0x18
gUnknown_83E5AE0:: @ 83E5AE0
- .incbin "baserom.gba", 0x3E5AE0, 0xA8
+ .incbin "baserom.gba", 0x3E5AE0, 0x90
+
+gUnknown_83E5B70::
+ .incbin "baserom.gba", 0x3E5B70, 0x18
gUnknown_83E5B88:: @ 83E5B88
- .incbin "baserom.gba", 0x3E5B88, 0x30
+ .incbin "baserom.gba", 0x3E5B88, 0x18
+
+gUnknown_83E5BA0:: @ 83E5BA0
+ .incbin "baserom.gba", 0x3E5BA0, 0x18
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 4b45f3669..cf4cf25cb 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,17 +1,11098 @@
+#include "constants/battle.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
+#include "constants/moves.h"
+ .include "asm/macros.inc"
+ .include "asm/macros/battle_anim_script.inc"
+
.section script_data, "aw", %progbits
+
.align 2
+gMovesWithQuietBGM:: @ 81C68EC
+ .2byte MOVE_SING
+ .2byte MOVE_PERISH_SONG
+ .2byte MOVE_GRASS_WHISTLE
+ .2byte 0xFFFF
+
+gBattleAnims_Moves::
+ .4byte Move_NONE
+ .4byte Move_NONE
+ .4byte Move_KARATE_CHOP
+ .4byte Move_DOUBLE_SLAP
+ .4byte Move_COMET_PUNCH
+ .4byte Move_MEGA_PUNCH
+ .4byte Move_PAY_DAY
+ .4byte Move_FIRE_PUNCH
+ .4byte Move_ICE_PUNCH
+ .4byte Move_THUNDER_PUNCH
+ .4byte Move_SCRATCH
+ .4byte Move_VICE_GRIP
+ .4byte Move_GUILLOTINE
+ .4byte Move_RAZOR_WIND
+ .4byte Move_SWORDS_DANCE
+ .4byte Move_CUT
+ .4byte Move_GUST
+ .4byte Move_WING_ATTACK
+ .4byte Move_WHIRLWIND
+ .4byte Move_FLY
+ .4byte Move_BIND
+ .4byte Move_SLAM
+ .4byte Move_VINE_WHIP
+ .4byte Move_STOMP
+ .4byte Move_DOUBLE_KICK
+ .4byte Move_MEGA_KICK
+ .4byte Move_JUMP_KICK
+ .4byte Move_ROLLING_KICK
+ .4byte Move_SAND_ATTACK
+ .4byte Move_HEADBUTT
+ .4byte Move_HORN_ATTACK
+ .4byte Move_FURY_ATTACK
+ .4byte Move_HORN_DRILL
+ .4byte Move_TACKLE
+ .4byte Move_BODY_SLAM
+ .4byte Move_WRAP
+ .4byte Move_TAKE_DOWN
+ .4byte Move_THRASH
+ .4byte Move_DOUBLE_EDGE
+ .4byte Move_TAIL_WHIP
+ .4byte Move_POISON_STING
+ .4byte Move_TWINEEDLE
+ .4byte Move_PIN_MISSILE
+ .4byte Move_LEER
+ .4byte Move_BITE
+ .4byte Move_GROWL
+ .4byte Move_ROAR
+ .4byte Move_SING
+ .4byte Move_SUPERSONIC
+ .4byte Move_SONIC_BOOM
+ .4byte Move_DISABLE
+ .4byte Move_ACID
+ .4byte Move_EMBER
+ .4byte Move_FLAMETHROWER
+ .4byte Move_MIST
+ .4byte Move_WATER_GUN
+ .4byte Move_HYDRO_PUMP
+ .4byte Move_SURF
+ .4byte Move_ICE_BEAM
+ .4byte Move_BLIZZARD
+ .4byte Move_PSYBEAM
+ .4byte Move_BUBBLE_BEAM
+ .4byte Move_AURORA_BEAM
+ .4byte Move_HYPER_BEAM
+ .4byte Move_PECK
+ .4byte Move_DRILL_PECK
+ .4byte Move_SUBMISSION
+ .4byte Move_LOW_KICK
+ .4byte Move_COUNTER
+ .4byte Move_SEISMIC_TOSS
+ .4byte Move_STRENGTH
+ .4byte Move_ABSORB
+ .4byte Move_MEGA_DRAIN
+ .4byte Move_LEECH_SEED
+ .4byte Move_GROWTH
+ .4byte Move_RAZOR_LEAF
+ .4byte Move_SOLAR_BEAM
+ .4byte Move_POISON_POWDER
+ .4byte Move_STUN_SPORE
+ .4byte Move_SLEEP_POWDER
+ .4byte Move_PETAL_DANCE
+ .4byte Move_STRING_SHOT
+ .4byte Move_DRAGON_RAGE
+ .4byte Move_FIRE_SPIN
+ .4byte Move_THUNDER_SHOCK
+ .4byte Move_THUNDERBOLT
+ .4byte Move_THUNDER_WAVE
+ .4byte Move_THUNDER
+ .4byte Move_ROCK_THROW
+ .4byte Move_EARTHQUAKE
+ .4byte Move_FISSURE
+ .4byte Move_DIG
+ .4byte Move_TOXIC
+ .4byte Move_CONFUSION
+ .4byte Move_PSYCHIC
+ .4byte Move_HYPNOSIS
+ .4byte Move_MEDITATE
+ .4byte Move_AGILITY
+ .4byte Move_QUICK_ATTACK
+ .4byte Move_RAGE
+ .4byte Move_TELEPORT
+ .4byte Move_NIGHT_SHADE
+ .4byte Move_MIMIC
+ .4byte Move_SCREECH
+ .4byte Move_DOUBLE_TEAM
+ .4byte Move_RECOVER
+ .4byte Move_HARDEN
+ .4byte Move_MINIMIZE
+ .4byte Move_SMOKESCREEN
+ .4byte Move_CONFUSE_RAY
+ .4byte Move_WITHDRAW
+ .4byte Move_DEFENSE_CURL
+ .4byte Move_BARRIER
+ .4byte Move_LIGHT_SCREEN
+ .4byte Move_HAZE
+ .4byte Move_REFLECT
+ .4byte Move_FOCUS_ENERGY
+ .4byte Move_BIDE
+ .4byte Move_METRONOME
+ .4byte Move_NONE
+ .4byte Move_SELF_DESTRUCT
+ .4byte Move_EGG_BOMB
+ .4byte Move_LICK
+ .4byte Move_SMOG
+ .4byte Move_SLUDGE
+ .4byte Move_BONE_CLUB
+ .4byte Move_FIRE_BLAST
+ .4byte Move_WATERFALL
+ .4byte Move_CLAMP
+ .4byte Move_SWIFT
+ .4byte Move_SKULL_BASH
+ .4byte Move_SPIKE_CANNON
+ .4byte Move_CONSTRICT
+ .4byte Move_AMNESIA
+ .4byte Move_KINESIS
+ .4byte Move_SOFT_BOILED
+ .4byte Move_HI_JUMP_KICK
+ .4byte Move_GLARE
+ .4byte Move_DREAM_EATER
+ .4byte Move_POISON_GAS
+ .4byte Move_BARRAGE
+ .4byte Move_LEECH_LIFE
+ .4byte Move_LOVELY_KISS
+ .4byte Move_SKY_ATTACK
+ .4byte Move_TRANSFORM
+ .4byte Move_BUBBLE
+ .4byte Move_DIZZY_PUNCH
+ .4byte Move_SPORE
+ .4byte Move_FLASH
+ .4byte Move_PSYWAVE
+ .4byte Move_SPLASH
+ .4byte Move_ACID_ARMOR
+ .4byte Move_CRABHAMMER
+ .4byte Move_EXPLOSION
+ .4byte Move_FURY_SWIPES
+ .4byte Move_BONEMERANG
+ .4byte Move_REST
+ .4byte Move_ROCK_SLIDE
+ .4byte Move_HYPER_FANG
+ .4byte Move_SHARPEN
+ .4byte Move_CONVERSION
+ .4byte Move_TRI_ATTACK
+ .4byte Move_SUPER_FANG
+ .4byte Move_SLASH
+ .4byte Move_SUBSTITUTE
+ .4byte Move_STRUGGLE
+ .4byte Move_SKETCH
+ .4byte Move_TRIPLE_KICK
+ .4byte Move_THIEF
+ .4byte Move_SPIDER_WEB
+ .4byte Move_MIND_READER
+ .4byte Move_NIGHTMARE
+ .4byte Move_FLAME_WHEEL
+ .4byte Move_SNORE
+ .4byte Move_CURSE
+ .4byte Move_FLAIL
+ .4byte Move_CONVERSION_2
+ .4byte Move_AEROBLAST
+ .4byte Move_COTTON_SPORE
+ .4byte Move_REVERSAL
+ .4byte Move_SPITE
+ .4byte Move_POWDER_SNOW
+ .4byte Move_PROTECT
+ .4byte Move_MACH_PUNCH
+ .4byte Move_SCARY_FACE
+ .4byte Move_FAINT_ATTACK
+ .4byte Move_SWEET_KISS
+ .4byte Move_BELLY_DRUM
+ .4byte Move_SLUDGE_BOMB
+ .4byte Move_MUD_SLAP
+ .4byte Move_OCTAZOOKA
+ .4byte Move_SPIKES
+ .4byte Move_ZAP_CANNON
+ .4byte Move_FORESIGHT
+ .4byte Move_DESTINY_BOND
+ .4byte Move_PERISH_SONG
+ .4byte Move_ICY_WIND
+ .4byte Move_DETECT
+ .4byte Move_BONE_RUSH
+ .4byte Move_LOCK_ON
+ .4byte Move_OUTRAGE
+ .4byte Move_SANDSTORM
+ .4byte Move_GIGA_DRAIN
+ .4byte Move_ENDURE
+ .4byte Move_CHARM
+ .4byte Move_ROLLOUT
+ .4byte Move_FALSE_SWIPE
+ .4byte Move_SWAGGER
+ .4byte Move_MILK_DRINK
+ .4byte Move_SPARK
+ .4byte Move_FURY_CUTTER
+ .4byte Move_STEEL_WING
+ .4byte Move_MEAN_LOOK
+ .4byte Move_ATTRACT
+ .4byte Move_SLEEP_TALK
+ .4byte Move_HEAL_BELL
+ .4byte Move_RETURN
+ .4byte Move_PRESENT
+ .4byte Move_FRUSTRATION
+ .4byte Move_SAFEGUARD
+ .4byte Move_PAIN_SPLIT
+ .4byte Move_SACRED_FIRE
+ .4byte Move_MAGNITUDE
+ .4byte Move_DYNAMIC_PUNCH
+ .4byte Move_MEGAHORN
+ .4byte Move_DRAGON_BREATH
+ .4byte Move_BATON_PASS
+ .4byte Move_ENCORE
+ .4byte Move_PURSUIT
+ .4byte Move_RAPID_SPIN
+ .4byte Move_SWEET_SCENT
+ .4byte Move_IRON_TAIL
+ .4byte Move_METAL_CLAW
+ .4byte Move_VITAL_THROW
+ .4byte Move_MORNING_SUN
+ .4byte Move_SYNTHESIS
+ .4byte Move_MOONLIGHT
+ .4byte Move_HIDDEN_POWER
+ .4byte Move_CROSS_CHOP
+ .4byte Move_TWISTER
+ .4byte Move_RAIN_DANCE
+ .4byte Move_SUNNY_DAY
+ .4byte Move_CRUNCH
+ .4byte Move_MIRROR_COAT
+ .4byte Move_PSYCH_UP
+ .4byte Move_EXTREME_SPEED
+ .4byte Move_ANCIENT_POWER
+ .4byte Move_SHADOW_BALL
+ .4byte Move_FUTURE_SIGHT
+ .4byte Move_ROCK_SMASH
+ .4byte Move_WHIRLPOOL
+ .4byte Move_BEAT_UP
+ .4byte Move_FAKE_OUT
+ .4byte Move_UPROAR
+ .4byte Move_STOCKPILE
+ .4byte Move_SPIT_UP
+ .4byte Move_SWALLOW
+ .4byte Move_HEAT_WAVE
+ .4byte Move_HAIL
+ .4byte Move_TORMENT
+ .4byte Move_FLATTER
+ .4byte Move_WILL_O_WISP
+ .4byte Move_MEMENTO
+ .4byte Move_FACADE
+ .4byte Move_FOCUS_PUNCH
+ .4byte Move_SMELLING_SALT
+ .4byte Move_FOLLOW_ME
+ .4byte Move_ANCIENT_POWER
+ .4byte Move_CHARGE
+ .4byte Move_TAUNT
+ .4byte Move_HELPING_HAND
+ .4byte Move_TRICK
+ .4byte Move_ROLE_PLAY
+ .4byte Move_WISH
+ .4byte Move_ASSIST
+ .4byte Move_INGRAIN
+ .4byte Move_SUPERPOWER
+ .4byte Move_MAGIC_COAT
+ .4byte Move_RECYCLE
+ .4byte Move_REVENGE
+ .4byte Move_BRICK_BREAK
+ .4byte Move_YAWN
+ .4byte Move_KNOCK_OFF
+ .4byte Move_ENDEAVOR
+ .4byte Move_ERUPTION
+ .4byte Move_SKILL_SWAP
+ .4byte Move_IMPRISON
+ .4byte Move_REFRESH
+ .4byte Move_GRUDGE
+ .4byte Move_SNATCH
+ .4byte Move_SECRET_POWER
+ .4byte Move_DIVE
+ .4byte Move_ARM_THRUST
+ .4byte Move_CAMOUFLAGE
+ .4byte Move_TAIL_GLOW
+ .4byte Move_LUSTER_PURGE
+ .4byte Move_MIST_BALL
+ .4byte Move_FEATHER_DANCE
+ .4byte Move_TEETER_DANCE
+ .4byte Move_BLAZE_KICK
+ .4byte Move_MUD_SPORT
+ .4byte Move_ICE_BALL
+ .4byte Move_NEEDLE_ARM
+ .4byte Move_SLACK_OFF
+ .4byte Move_HYPER_VOICE
+ .4byte Move_POISON_FANG
+ .4byte Move_CRUSH_CLAW
+ .4byte Move_BLAST_BURN
+ .4byte Move_HYDRO_CANNON
+ .4byte Move_METEOR_MASH
+ .4byte Move_ASTONISH
+ .4byte Move_WEATHER_BALL
+ .4byte Move_AROMATHERAPY
+ .4byte Move_FAKE_TEARS
+ .4byte Move_AIR_CUTTER
+ .4byte Move_OVERHEAT
+ .4byte Move_ODOR_SLEUTH
+ .4byte Move_ROCK_TOMB
+ .4byte Move_SILVER_WIND
+ .4byte Move_METAL_SOUND
+ .4byte Move_GRASS_WHISTLE
+ .4byte Move_TICKLE
+ .4byte Move_COSMIC_POWER
+ .4byte Move_WATER_SPOUT
+ .4byte Move_SIGNAL_BEAM
+ .4byte Move_SHADOW_PUNCH
+ .4byte Move_EXTRASENSORY
+ .4byte Move_SKY_UPPERCUT
+ .4byte Move_SAND_TOMB
+ .4byte Move_SHEER_COLD
+ .4byte Move_MUDDY_WATER
+ .4byte Move_BULLET_SEED
+ .4byte Move_AERIAL_ACE
+ .4byte Move_ICICLE_SPEAR
+ .4byte Move_IRON_DEFENSE
+ .4byte Move_BLOCK
+ .4byte Move_HOWL
+ .4byte Move_DRAGON_CLAW
+ .4byte Move_FRENZY_PLANT
+ .4byte Move_BULK_UP
+ .4byte Move_BOUNCE
+ .4byte Move_MUD_SHOT
+ .4byte Move_POISON_TAIL
+ .4byte Move_COVET
+ .4byte Move_VOLT_TACKLE
+ .4byte Move_MAGICAL_LEAF
+ .4byte Move_WATER_SPORT
+ .4byte Move_CALM_MIND
+ .4byte Move_LEAF_BLADE
+ .4byte Move_DRAGON_DANCE
+ .4byte Move_ROCK_BLAST
+ .4byte Move_SHOCK_WAVE
+ .4byte Move_WATER_PULSE
+ .4byte Move_DOOM_DESIRE
+ .4byte Move_PSYCHO_BOOST
+ .4byte Move_COUNT
+
+gBattleAnims_StatusConditions::
+ .4byte Status_Poison
+ .4byte Status_Confusion
+ .4byte Status_Burn
+ .4byte Status_Infatuation
+ .4byte Status_Sleep
+ .4byte Status_Paralysis
+ .4byte Status_Freeze
+ .4byte Status_Curse
+ .4byte Status_Nightmare
+
+gBattleAnims_General::
+ .4byte General_CastformChange
+ .4byte General_StatsChange
+ .4byte General_SubstituteFade
+ .4byte General_SubstituteAppear
+ .4byte General_PokeblockThrow
+ .4byte General_ItemKnockoff
+ .4byte General_TurnTrap
+ .4byte General_ItemEffect
+ .4byte General_SmokeballEscape
+ .4byte General_HangedOn
+ .4byte General_Rain
+ .4byte General_Sun
+ .4byte General_Sandstorm
+ .4byte General_Hail
+ .4byte General_LeechSeedDrain
+ .4byte General_MonHit
+ .4byte General_ItemSteal
+ .4byte General_SnatchMove
+ .4byte General_FutureSightHit
+ .4byte General_DoomDesireHit
+ .4byte General_FocusPunchSetUp
+ .4byte General_IngrainHeal
+ .4byte General_WishHeal
+ .4byte gUnknown_81D628A
+ .4byte gUnknown_81D6301
+ .4byte gUnknown_81D637B
+ .4byte gUnknown_81D6394
+ .4byte gUnknown_81D63DC
+
+gBattleAnims_Special::
+ .4byte Special_LevelUp
+ .4byte Special_SwitchOutPlayerMon
+ .4byte Special_SwitchOutOpponentMon
+ .4byte Special_BallThrow
+ .4byte Special_SafariBallThrow
+ .4byte Special_SubstituteToMon
+ .4byte Special_MonToSubstitute
+
+Move_NONE:: @ 81C6F34
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_DOUBLE_SLAP:: @ 81C6F65
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ choosetwoturnanim gUnknown_81C6F90, gUnknown_81C6FA4
+
+gUnknown_81C6F76:: @ 81C6F76
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81C6F90:: @ 81C6F90
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2
+ goto gUnknown_81C6F76
+
+gUnknown_81C6FA4:: @ 81C6FA4
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 2
+ goto gUnknown_81C6F76
+
+Move_POISON_POWDER:: @ 81C6FB8
+ loadspritegfx 10065
+ loadspritegfx 10150
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2
+ createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
+ end
+
+Move_STUN_SPORE:: @ 81C70E9
+ loadspritegfx 10068
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2
+ createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
+ end
+
+Move_SLEEP_POWDER:: @ 81C7217
+ loadspritegfx 10067
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2
+ createsprite gUnknown_83E2990, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
+ end
+
+Move_SWIFT:: @ 81C7345
+ loadspritegfx 10174
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 18, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1
+ delay 5
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_STRENGTH:: @ 81C73FE
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ShakeAndSinkMon, 5, 0, 2, 0, 96, 30
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 4
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 18, 6, 2, 4
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 16, 12, 1, 1
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, -12, 1, 1
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 3, 4, 1, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_TACKLE:: @ 81C7492
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_BODY_SLAM:: @ 81C74D0
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ waitforvisualfinish
+ delay 11
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0
+ loopsewithpan SE_W025B, 63, 10, 2
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SUPERSONIC:: @ 81C755D
+ loadspritegfx 10163
+ monbg 2
+ monbgprio_2A 0
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1
+ call gUnknown_81C759B
+ call gUnknown_81C759B
+ call gUnknown_81C759B
+ call gUnknown_81C759B
+ call gUnknown_81C759B
+ call gUnknown_81C759B
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+gUnknown_81C759B:: @ 81C759B
+ playsewithpan SE_W048, 192
+ createsprite gUnknown_83E3CA0, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
+
+Move_SCREECH:: @ 81C75B5
+ loadspritegfx 10164
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 2, 1
+ call gUnknown_81C75E8
+ call gUnknown_81C75E8
+ delay 16
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81C75E8:: @ 81C75E8
+ playsewithpan SE_W103, 192
+ createsprite gUnknown_83E3CB8, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
+
+Move_FLAME_WHEEL:: @ 81C7602
+ loadspritegfx 10029
+ monbg 3
+ monbgprio_2A 1
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 0
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 4
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 8
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 12
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 16
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 20
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 56, 24
+ playsewithpan SE_W172, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6
+ delay 4
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 8, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 3, 1, 31, 12, 1, 1
+ playsewithpan SE_W172B, 63
+ call gUnknown_81D0950
+ delay 7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 9
+ waitforvisualfinish
+ clearmonbg 3
+ end
+ createsprite gUnknown_83E5DFC, ANIM_ATTACKER, 3, 0, 0, 50
+ delay 4
+ return
+
+Move_PIN_MISSILE:: @ 81C76FC
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W026, 192
+ createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
+ delay 15
+ createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ delay 9
+ createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ delay 14
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_ICICLE_SPEAR:: @ 81C77C1
+ loadspritegfx 10262
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W196, 192
+ createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
+ delay 15
+ createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ delay 9
+ createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ delay 14
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_TAKE_DOWN:: @ 81C7886
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_WindUpLunge, 5, 0, -24, 8, 23, 10, 40, 10
+ delay 35
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0
+ playsewithpan SE_W025B, 63
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1
+ waitforvisualfinish
+ delay 2
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_DOUBLE_EDGE:: @ 81C791A
+ loadspritegfx 10135
+ playsewithpan SE_W129, 192
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, 32767, 10, 0, 0
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W207, 192
+ waitplaysewithpan SE_W207, 192, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 2, 4
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, 32767
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
+ delay 3
+ waitforvisualfinish
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask sub_8099980, 2, 8, -256, 0, 0
+ createvisualtask sub_8099980, 2, 8, -256, 1, 0
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 4, 0, 12, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_8099980, 2, 8, -256, 0, 1
+ createvisualtask sub_8099980, 2, 8, -256, 1, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
+ waitforvisualfinish
+ end
+
+Move_POISON_STING:: @ 81C7A2D
+ loadspritegfx 10161
+ loadspritegfx 10135
+ loadspritegfx 10150
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W013B, 192
+ createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
+ call gUnknown_81D575B
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_TWINEEDLE:: @ 81C7A82
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ loopsewithpan SE_W013B, 192, 6, 2
+ createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20
+ createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 12, 10, 12, 20
+ delay 20
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1
+ createsprite gUnknown_83E7C20, ANIM_ATTACKER, 3, 0, -4, 1, 3
+ loopsewithpan SE_W030, 63, 5, 2
+ delay 1
+ createsprite gUnknown_83E7C20, ANIM_ATTACKER, 3, 10, 12, 1, 3
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_FIRE_BLAST:: @ 81C7AF5
+ loadspritegfx 10029
+ createsoundtask sub_80DCE10, 137, 138
+ call gUnknown_81C7B89
+ call gUnknown_81C7B89
+ call gUnknown_81C7B89
+ delay 24
+ createvisualtask sub_80BA7F8, 10, 1, 3, 0, 8, 0
+ waitforvisualfinish
+ delay 19
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 20, 1
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ delay 3
+ call gUnknown_81C7BCD
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1, 2, 8, 0, 0
+ waitforvisualfinish
+ end
+
+gUnknown_81C7B89:: @ 81C7B89
+ createsprite gUnknown_83E5D94, ANIM_TARGET, 2, 0, 0, 0
+ createsprite gUnknown_83E5D94, ANIM_TARGET, 2, 0, 0, 51
+ createsprite gUnknown_83E5D94, ANIM_TARGET, 2, 0, 0, 102
+ createsprite gUnknown_83E5D94, ANIM_TARGET, 2, 0, 0, 153
+ createsprite gUnknown_83E5D94, ANIM_TARGET, 2, 0, 0, 204
+ delay 5
+ return
+
+gUnknown_81C7BCD:: @ 81C7BCD
+ createsprite gUnknown_83E5DE4, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gUnknown_83E5DE4, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gUnknown_83E5DE4, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gUnknown_83E5DE4, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gUnknown_83E5DE4, ANIM_TARGET, 2, 0, 0, 15, 2, 2
+ return
+
+Move_LEECH_SEED:: @ 81C7C23
+ loadspritegfx 10006
+ playsewithpan SE_W077, 192
+ createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32
+ delay 8
+ playsewithpan SE_W077, 192
+ createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40
+ delay 8
+ playsewithpan SE_W077, 192
+ createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37
+ delay 12
+ loopsewithpan SE_W039, 63, 10, 8
+ waitforvisualfinish
+ end
+
+Move_EMBER:: @ 81C7C79
+ loadspritegfx 10029
+ loopsewithpan SE_W052, 192, 5, 2
+ createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, -16, 24, 20, 1
+ delay 4
+ createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 20, 1
+ delay 4
+ createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 16, 24, 20, 1
+ delay 16
+ playsewithpan SE_W172, 63
+ call gUnknown_81C7CD5
+ call gUnknown_81C7CD5
+ call gUnknown_81C7CD5
+ end
+
+gUnknown_81C7CD5:: @ 81C7CD5
+ createsprite gEmberFlareSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1
+ delay 4
+ return
+
+Move_MEGA_PUNCH:: @ 81C7CED
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 1
+ delay 2
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0
+ setalpha 12, 8
+ playsewithpan SE_W025, 63
+ createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 7, 32767
+ delay 50
+ call gUnknown_81C7D89
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 0, 32767
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 2
+ restorebg
+ waitbgfadein
+ end
+
+gUnknown_81C7D89:: @ 81C7D89
+ delay 2
+ createvisualtask AnimTask_IsContest, 2,
+ jumpargeq 7, 1, gUnknown_81C7DC0
+ createvisualtask sub_80DEAB4, 2,
+ jumpargeq 7, 0, gUnknown_81C7DB2
+ jumpargeq 7, 1, gUnknown_81C7DB9
+
+gUnknown_81C7DB1:: @ 81C7DB1
+ return
+
+gUnknown_81C7DB2:: @ 81C7DB2
+ changebg 4
+ goto gUnknown_81C7DB1
+
+gUnknown_81C7DB9:: @ 81C7DB9
+ changebg 5
+ goto gUnknown_81C7DB1
+
+gUnknown_81C7DC0:: @ 81C7DC0
+ changebg 6
+ goto gUnknown_81C7DB1
+
+Move_MEGA_KICK:: @ 81C7DC7
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 1
+ delay 2
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0
+ setalpha 12, 8
+ playsewithpan SE_W025, 63
+ createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 7, 32767
+ delay 50
+ playsewithpan SE_W025B, 63
+ call gUnknown_81C7D89
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 0, 32767
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 2
+ restorebg
+ waitbgfadein
+ end
+
+Move_COMET_PUNCH:: @ 81C7E63
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 1
+ setalpha 12, 8
+ choosetwoturnanim gUnknown_81C7E91, gUnknown_81C7EB6
+
+gUnknown_81C7E77:: @ 81C7E77
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81C7E91:: @ 81C7E91
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, -8, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -8, 0, 8, 1, 0
+ goto gUnknown_81C7E77
+
+gUnknown_81C7EB6:: @ 81C7EB6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, 0, 8, 1, 0
+ goto gUnknown_81C7E77
+
+Move_SONIC_BOOM:: @ 81C7EDB
+ loadspritegfx 10003
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ call gUnknown_81C7F12
+ call gUnknown_81C7F12
+ call gUnknown_81C7F12
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 10, 1
+ call gUnknown_81C7F2A
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81C7F12:: @ 81C7F12
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E3C10, ANIM_TARGET, 2, 16, 0, 0, 0, 15
+ delay 4
+ return
+
+gUnknown_81C7F2A:: @ 81C7F2A
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2
+ delay 4
+ return
+
+Move_THUNDER_SHOCK:: @ 81C7F3C
+ loadspritegfx 10001
+ loadspritegfx 10011
+ createvisualtask sub_80BA7F8, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80AE220, 5, 0, -44, 0
+ playsewithpan SE_W085, 63
+ delay 9
+ createvisualtask sub_80BA7F8, 10, 4, 0, 0, 13, 0
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 4, 0, 13, 0, 0
+ waitforvisualfinish
+ delay 20
+ call gUnknown_81D58D4
+ waitforvisualfinish
+ delay 20
+ createvisualtask sub_80BA7F8, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
+ end
+
+Move_THUNDERBOLT:: @ 81C7FAA
+ loadspritegfx 10001
+ loadspritegfx 10282
+ loadspritegfx 10011
+ createvisualtask sub_80BA7F8, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80AE220, 5, 24, -52, 0
+ playsewithpan SE_W085, 63
+ delay 7
+ createvisualtask sub_80AE220, 5, -24, -52, 0
+ playsewithpan SE_W085, 63
+ delay 7
+ createvisualtask sub_80AE220, 5, 0, -60, 1
+ playsewithpan SE_W085, 63
+ delay 9
+ createvisualtask sub_80BA7F8, 10, 4, 0, 0, 13, 0
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 4, 0, 13, 0, 0
+ waitforvisualfinish
+ delay 20
+ createsprite gUnknown_83E6058, ANIM_TARGET, 3, 44, 0, 0, 3
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 32, 44, 0, 40, 0, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 32, 44, 64, 40, 1, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 32, 44, 128, 40, 0, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 32, 44, 192, 40, 2, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 16, 44, 32, 40, 0, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 16, 44, 96, 40, 1, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 16, 44, 160, 40, 0, -32765
+ createsprite gUnknown_83E6070, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765
+ playsewithpan SE_W063, 63
+ delay 0
+ createvisualtask sub_80BA7F8, 10, 1, 0, 2, 2, 0
+ delay 6
+ createvisualtask sub_80BA7F8, 10, 1, 0, 6, 6, 0
+ delay 6
+ createvisualtask sub_80BA7F8, 10, 1, 0, 2, 2, 0
+ delay 6
+ createvisualtask sub_80BA7F8, 10, 1, 0, 6, 6, 0
+ waitforvisualfinish
+ delay 20
+ waitplaysewithpan SE_W085B, 63, 19
+ call gUnknown_81D58D4
+ waitforvisualfinish
+ delay 20
+ createvisualtask sub_80BA7F8, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
+ end
+
+Move_THUNDER_WAVE:: @ 81C8160
+ loadspritegfx 10001
+ loadspritegfx 10011
+ loadspritegfx 10173
+ createvisualtask sub_80BA7F8, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80AE220, 5, 0, -48, 0
+ playsewithpan SE_W086, 63
+ delay 20
+ loopsewithpan SE_W085B, 63, 10, 4
+ createsprite gUnknown_83E60B8, ANIM_TARGET, 2, -16, -16
+ delay 4
+ createsprite gUnknown_83E60B8, ANIM_TARGET, 2, -16, 0
+ delay 4
+ createsprite gUnknown_83E60B8, ANIM_TARGET, 2, -16, 16
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
+ end
+
+Move_BEAT_UP:: @ 81C81CF
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 1
+ setalpha 12, 8
+ choosetwoturnanim gUnknown_81C81E8, gUnknown_81C8259
+
+gUnknown_81C81E3:: @ 81C81E3
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81C81E8:: @ 81C81E8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, -20, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -20, -12, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 8, 8, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ goto gUnknown_81C81E3
+
+gUnknown_81C8259:: @ 81C8259
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -20, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 12, -12, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 0, 1, 2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -12, 8, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ goto gUnknown_81C81E3
+
+Move_STOMP:: @ 81C82CA
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W104, 63
+ createsprite gUnknown_83E67D8, ANIM_ATTACKER, 3, 0, -32, 15
+ delay 19
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, 1, 1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 4, 9, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_TAIL_WHIP:: @ 81C8311
+ loopsewithpan SE_W039, 192, 24, 3
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 2, 3
+ waitforvisualfinish
+ end
+
+Move_CUT:: @ 81C832A
+ loadspritegfx 10138
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W015, 63
+ createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_HIDDEN_POWER:: @ 81C835C
+ loadspritegfx 10217
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0
+ waitforvisualfinish
+ delay 30
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 20479, 12, 5, 1
+ delay 4
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0
+ playsewithpan SE_W179, 192
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 0
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 42
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 84
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 126
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 168
+ createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 210
+ delay 52
+ setarg 7, 65535
+ playsewithpan SE_W115, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 0
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 32
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 64
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 96
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 128
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 160
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 192
+ createsprite gUnknown_83E4294, ANIM_TARGET, 2, 224
+ end
+
+Move_REVERSAL:: @ 81C8445
+ loadspritegfx 10236
+ loadspritegfx 10143
+ loadspritegfx 10135
+ playsewithpan SE_W197, 192
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 32767, 8, 0, 0
+ waitforvisualfinish
+ delay 30
+ createvisualtask sub_80B9BDC, 2, 31, 3, 2, 0, 10, 32767
+ delay 10
+ playsewithpan SE_W179, 192
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 0
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 42
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 84
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 126
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 168
+ createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 210
+ waitforvisualfinish
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 8
+ playsewithpan SE_W233B, 63
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 32767, 8, 0, 0
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ createvisualtask sub_8099BD4, 5, 0, 1, 8, 1, 0
+ end
+
+Move_PURSUIT:: @ 81C8520
+ loadspritegfx 10135
+ monbg 1
+ fadetobg 1
+ waitbgfadein
+ delay 0
+ setalpha 12, 8
+ choosetwoturnanim gUnknown_81C853F, gUnknown_81C8568
+
+gUnknown_81C8536:: @ 81C8536
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 0
+ restorebg
+ waitbgfadein
+ end
+
+gUnknown_81C853F:: @ 81C853F
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask sub_8099BD4, 5, 0, 1, 6, 1, 0
+ goto gUnknown_81C8536
+
+gUnknown_81C8568:: @ 81C8568
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createvisualtask sub_8099BD4, 5, 0, 1, 6, 1, 0
+ goto gUnknown_81C8536
+
+Move_SPIKE_CANNON:: @ 81C8591
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask AnimTask_WindUpLunge, 5, 0, -4, 0, 4, 6, 8, 4
+ waitforvisualfinish
+ loopsewithpan SE_W013B, 192, 5, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 10, -8, -8, -8, 20
+ createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 0, 0, 20
+ createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 8, 8, 20
+ waitforvisualfinish
+ createsprite gUnknown_83E7C20, ANIM_ATTACKER, 3, -8, -8, 1, 2
+ createsprite gUnknown_83E7C20, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createsprite gUnknown_83E7C20, ANIM_ATTACKER, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1
+ loopsewithpan SE_W030, 63, 5, 3
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_SWORDS_DANCE:: @ 81C8644
+ loadspritegfx 10005
+ monbg 0
+ setalpha 12, 8
+ playsewithpan SE_W014, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 16, 6, 1, 4
+ createsprite gUnknown_83E3BF8, ANIM_ATTACKER, 2, 0, 0
+ delay 22
+ createvisualtask sub_80B9F6C, 2, 10005, 2, 2, 32754, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ delay 1
+ end
+
+Move_PSYCH_UP:: @ 81C868A
+ loadspritegfx 10196
+ monbg 2
+ createvisualtask sub_80B9CE4, 2, 1, 2, 6, 1, 11, 0
+ setalpha 12, 8
+ loopsewithpan SE_W060B, 192, 5, 10
+ createsprite gUnknown_83E6DF8, ANIM_ATTACKER, 2, 0, 0, 0, 0
+ createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, 0
+ delay 127
+ delay 4
+ playsewithpan SE_W060, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1
+ createvisualtask sub_80BA7F8, 9, 2, 2, 10, 0, 1023
+ delay 30
+ clearmonbg 2
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_DIZZY_PUNCH:: @ 81C86FC
+ loadspritegfx 10073
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ call gUnknown_81C8817
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, 16, 8, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 16, 0, 1, 1
+ playsewithpan SE_W004, 63
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, 160, -32
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, -256, -40
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, 128, -16
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, 416, -38
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, -128, -22
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, 16, 8, -384, -31
+ delay 10
+ call gUnknown_81C8817
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, -16, -8, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -16, -16, 1, 1
+ playsewithpan SE_W233B, 63
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, 160, -32
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, -256, -40
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, 128, -16
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, 416, -38
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, -128, -22
+ createsprite gUnknown_83E67F0, ANIM_TARGET, 3, -16, -8, -384, -31
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81C8817:: @ 81C8817
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 6
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1
+ return
+
+Move_FIRE_SPIN:: @ 81C8836
+ loadspritegfx 10029
+ playsewithpan SE_W221B, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 47, 1
+ call gUnknown_81C885F
+ call gUnknown_81C885F
+ call gUnknown_81C885F
+ waitforvisualfinish
+ end
+
+gUnknown_81C885F:: @ 81C885F
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1
+ delay 2
+ return
+
+Move_FURY_CUTTER:: @ 81C88EA
+ loadspritegfx 10138
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W013, 63
+ createvisualtask sub_80AAB7C, 2,
+ jumpargeq 7, 0, gUnknown_81C8947
+ goto gUnknown_81C8959
+
+gUnknown_81C890A:: @ 81C890A
+ createvisualtask update_fury_cutter_counter_copy, 2,
+ jumpargeq 7, 1, gUnknown_81C892E
+ jumpargeq 7, 2, gUnknown_81C896B
+ jumpargeq 7, 3, gUnknown_81C8985
+ goto gUnknown_81C899F
+
+gUnknown_81C892E:: @ 81C892E
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+gUnknown_81C8947:: @ 81C8947
+ createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0
+ goto gUnknown_81C890A
+
+gUnknown_81C8959:: @ 81C8959
+ createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 1
+ goto gUnknown_81C890A
+
+gUnknown_81C896B:: @ 81C896B
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 10505, 4, 0, 0
+ goto gUnknown_81C892E
+
+gUnknown_81C8985:: @ 81C8985
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0
+ goto gUnknown_81C892E
+
+gUnknown_81C899F:: @ 81C899F
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0
+ goto gUnknown_81C892E
+
+Move_SELF_DESTRUCT:: @ 81C89B9
+ loadspritegfx 10198
+ createvisualtask sub_80BA7F8, 10, 2, 1, 0, 9, 31
+ createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 7, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 8, 6, 0, 38, 1
+ call gUnknown_81C8A3F
+ call gUnknown_81C8A3F
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 2, 1, 9, 0, 31
+ end
+
+gUnknown_81C8A3F:: @ 81C8A3F
+ playsewithpan SE_W120, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 0, 1
+ delay 6
+ return
+
+Move_SLAM:: @ 81C8AA9
+ loadspritegfx 10056
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W004, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4
+ delay 1
+ createsprite gUnknown_83E3148, ANIM_ATTACKER, 2, 0, 0
+ delay 3
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_VINE_WHIP:: @ 81C8B31
+ loadspritegfx 10287
+ playsewithpan SE_W026, 192
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
+ delay 6
+ playsewithpan SE_W010, 63
+ createsprite gUnknown_83E3160, ANIM_TARGET, 2, 0, 0
+ delay 6
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 1
+ end
+
+Move_DRILL_PECK:: @ 81C8B68
+ loadspritegfx 10135
+ loadspritegfx 10162
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1
+ delay 2
+ loopsewithpan SE_W030, 63, 4, 8
+ createvisualtask sub_80B2868, 5,
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1
+ waitforvisualfinish
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6
+ waitforvisualfinish
+ end
+
+Move_WATERFALL:: @ 81C8BC1
+ loadspritegfx 10148
+ loadspritegfx 10155
+ loadspritegfx 10141
+ monbg 3
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 23, 1
+ delay 5
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 10, 10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -15, 0, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 20, 10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 0, -10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -10, 15, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 25, 20, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -20, 20, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 12, 0, 25, 0
+ waitforvisualfinish
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 5
+ delay 6
+ call gUnknown_81C8CA2
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81C8CA2:: @ 81C8CA2
+ playsewithpan SE_W127, 63
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 17, 1
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, 20, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 20
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 20
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, 15, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 15
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 15
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, 10, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 10
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 10
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, 5, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 5
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 5
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 0
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, 0
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, -5, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -5
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -5
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, -10, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -10
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -10
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, -15, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -15
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -15
+ delay 2
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 3, 0, -20, 1, 1
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -20
+ createsprite gUnknown_83E5AC8, ANIM_ATTACKER, 4, 0, -20
+ return
+
+Move_EXPLOSION:: @ 81C8E15
+ loadspritegfx 10198
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, 8474, 8, 0, 8
+ createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 7, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 8, 8, 0, 40, 1
+ call gUnknown_81C8EB2
+ call gUnknown_81C8EB2
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1, 1, 16, 16, 32767
+ delay 50
+ createvisualtask sub_80BA7F8, 10, 1, 3, 16, 0, 32767
+ end
+
+gUnknown_81C8EB2:: @ 81C8EB2
+ playsewithpan SE_W153, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 0, 1
+ delay 6
+ return
+
+Move_DEFENSE_CURL:: @ 81C8F1C
+ loadspritegfx 10234
+ loopsewithpan SE_W161, 192, 18, 3
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 0
+ createvisualtask sub_80DF524, 5,
+ waitforvisualfinish
+ createsprite gUnknown_83FF118, ANIM_ATTACKER, 2, 0, 6, 0, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1
+ waitforvisualfinish
+ end
+
+Move_PROTECT:: @ 81C8F55
+ loadspritegfx 10280
+ monbg 2
+ monbgprio_28 0
+ waitplaysewithpan SE_W115, 192, 16
+ createsprite gUnknown_83E3354, ANIM_ATTACKER, 2, 24, 0, 90
+ waitforvisualfinish
+ clearmonbg 2
+ end
+
+Move_DETECT:: @ 81C8F72
+ loadspritegfx 10071
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, 0
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 2, 1, 0, 9, 32767
+ delay 18
+ playsewithpan SE_W197, 192
+ createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 20, -20
+ waitforvisualfinish
+ delay 10
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, 0
+ createvisualtask sub_80BA7F8, 10, 2, 2, 9, 0, 32767
+ waitforvisualfinish
+ end
+
+Move_FRUSTRATION:: @ 81C8FD0
+ loadspritegfx 10135
+ loadspritegfx 10087
+ monbg 3
+ setalpha 12, 8
+ createvisualtask AnimTask_GetFrustrationPowerLevel, 1,
+ jumpargeq 7, 0, gUnknown_81C9004
+ jumpargeq 7, 1, gUnknown_81C910A
+ jumpargeq 7, 2, gUnknown_81C91D7
+ goto gUnknown_81C9253
+
+gUnknown_81C8FFF:: @ 81C8FFF
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81C9004:: @ 81C9004
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1
+ createvisualtask sub_80BA7F8, 10, 2, 3, 0, 9, 31
+ waitforvisualfinish
+ delay 20
+ playsewithpan SE_W207B, 192
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28
+ waitforvisualfinish
+ playsewithpan SE_W207B, 192
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 10
+ createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 30, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 2, 3, 9, 0, 31
+ goto gUnknown_81C8FFF
+
+gUnknown_81C910A:: @ 81C910A
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1
+ createvisualtask sub_80BA7F8, 10, 2, 3, 0, 9, 31
+ waitforvisualfinish
+ delay 20
+ playsewithpan SE_W207B, 192
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 5
+ createvisualtask sub_80E0488, 5,
+ delay 7
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ delay 14
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, -6, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ delay 14
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 2, 3, 9, 0, 31
+ goto gUnknown_81C8FFF
+
+gUnknown_81C91D7:: @ 81C91D7
+ playsewithpan SE_W207B, 192
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 5
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 6
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 4, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 6
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -4, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1
+ goto gUnknown_81C8FFF
+
+gUnknown_81C9253:: @ 81C9253
+ createsprite gUnknown_83FF2B0, ANIM_ATTACKER, 2, 20, -28
+ waitforvisualfinish
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 10, 2
+ delay 12
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1
+ goto gUnknown_81C8FFF
+
+Move_SAFEGUARD:: @ 81C9297
+ loadspritegfx 10244
+ monbg 2
+ setalpha 8, 8
+ playsewithpan SE_W208, 192
+ createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2,
+ delay 4
+ createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2,
+ delay 4
+ createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2,
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createvisualtask sub_80B9BDC, 2, 10, 0, 2, 0, 10, 32767
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+Move_PAIN_SPLIT:: @ 81C92D9
+ loadspritegfx 10239
+ createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -8, -42, 0
+ createsprite gUnknown_83FF370, ANIM_TARGET, 2, -8, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_80E0B00, 2, 0, 0
+ createvisualtask sub_80E0B00, 2, 1, 0
+ waitforvisualfinish
+ createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -24, -42, 0
+ createsprite gUnknown_83FF370, ANIM_TARGET, 2, -24, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_80E0B00, 2, 0, 1
+ createvisualtask sub_80E0B00, 2, 1, 1
+ waitforvisualfinish
+ createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, 8, -42, 0
+ createsprite gUnknown_83FF370, ANIM_TARGET, 2, 8, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_80E0B00, 2, 0, 2
+ createvisualtask sub_80E0B00, 2, 1, 2
+ end
+
+Move_VICE_GRIP:: @ 81C9381
+ loadspritegfx 10138
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W011, 63
+ createsprite gUnknown_83E3E08, ANIM_ATTACKER, 2, 0
+ createsprite gUnknown_83E3E08, ANIM_ATTACKER, 2, 1
+ delay 9
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_GUILLOTINE:: @ 81C93C9
+ loadspritegfx 10138
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ fadetobgfromset 12, 13, 14
+ waitbgfadein
+ playsewithpan SE_W011, 63
+ createsprite gUnknown_83E3E48, ANIM_ATTACKER, 2, 0
+ createsprite gUnknown_83E3E48, ANIM_ATTACKER, 2, 1
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 16, 0
+ delay 9
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 23, 1
+ delay 46
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 8, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ restorebg
+ waitbgfadein
+ end
+
+Move_PAY_DAY:: @ 81C9455
+ loadspritegfx 10100
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E3D50, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152
+ waitforvisualfinish
+ playsewithpan SE_W006, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2
+ createsprite gUnknown_83E3D68, ANIM_ATTACKER, 2,
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_OUTRAGE:: @ 81C94A8
+ loadspritegfx 10029
+ loopsewithpan SE_W082, 192, 8, 3
+ createvisualtask sub_80B9BDC, 2, 7, 2, 5, 3, 8, 430
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, 0, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 0, 1280, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 0, -1280, 3
+ delay 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 40, 1
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, 768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, 768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, -768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3
+ call gUnknown_81C95AF
+ call gUnknown_81C95AF
+ waitforvisualfinish
+ end
+
+gUnknown_81C95AF:: @ 81C95AF
+ delay 3
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, 0, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 0, 1280, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 0, -1280, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, 768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, 768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, 1280, -768, 3
+ delay 0
+ createsprite gUnknown_83E772C, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3
+ return
+
+Move_SPARK:: @ 81C9643
+ loadspritegfx 10135
+ loadspritegfx 10011
+ delay 0
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 5, 5, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
+ delay 0
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
+ delay 0
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 0, 0, 23551
+ delay 10
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 5, 5, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
+ delay 0
+ createsprite gUnknown_83E5FC4, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
+ delay 0
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 0, 0, 23551
+ delay 20
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 7, 7, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 32, 12, 128, 20, 0, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 32, 12, 192, 20, 2, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 16, 12, 32, 20, 0, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 16, 12, 96, 20, 1, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 16, 12, 160, 20, 0, 0
+ createsprite gUnknown_83E6070, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0
+ delay 4
+ waitforvisualfinish
+ createvisualtask sub_80B9BDC, 2, 3, -31, 1, 0, 0, 23551
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 4
+ playsewithpan SE_W063, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ createvisualtask sub_80B9BDC, 2, 4, -31, 2, 0, 6, 23551
+ call gUnknown_81D58D4
+ waitforvisualfinish
+ end
+
+Move_ATTRACT:: @ 81C985A
+ loadspritegfx 10216
+ loopsewithpan SE_W204, 192, 12, 3
+ createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0
+ delay 15
+ createsprite gUnknown_83E4218, ANIM_TARGET, 3, 20, -8
+ waitforvisualfinish
+ playsewithpan SE_W213, 63
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 160, -32
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -256, -40
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 128, -16
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 416, -38
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -128, -22
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -384, -31
+ waitforvisualfinish
+ waitplaysewithpan SE_W213B, 0, 15
+ createvisualtask sub_80A9CE8, 5,
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 16, 256, 0
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 224, 240, 15
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 126, 272, 30
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 80, 224, 45
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 170, 272, 60
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 40, 256, 75
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 112, 256, 90
+ createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 200, 272, 90
+ delay 75
+ createvisualtask sub_80B9BDC, 2, 4, 4, 4, 0, 10, 28479
+ end
+
+Move_GROWTH:: @ 81C9953
+ call gUnknown_81C9960
+ waitforvisualfinish
+ call gUnknown_81C9960
+ waitforvisualfinish
+ end
+
+gUnknown_81C9960:: @ 81C9960
+ createvisualtask sub_80B9BDC, 2, 2, 0, 2, 0, 8, 32767
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0
+ return
+
+Move_WHIRLWIND:: @ 81C9989
+ loadspritegfx 10162
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, -8, 1, 60, 0
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, 0, 1, 60, 1
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, 8, 1, 60, 2
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, 16, 1, 60, 3
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, 24, 1, 60, 4
+ createsprite gUnknown_83E6C84, ANIM_ATTACKER, 2, 0, 32, 1, 60, 0
+ delay 5
+ loopsewithpan SE_W104, 63, 10, 4
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 15, 1
+ delay 29
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 12, 6, 1, 5
+ delay 7
+ playsewithpan SE_W081, 63
+ createvisualtask sub_80995FC, 5, 1, 8
+ waitforvisualfinish
+ end
+
+Move_CONFUSE_RAY:: @ 81C9A31
+ loadspritegfx 10013
+ monbg 3
+ fadetobg 2
+ waitbgfadein
+ createvisualtask sub_80DD444, 2, -64, 63, 2, 0
+ createvisualtask sub_80B9E58, 2, 10013, 0, 6, 0, 14, 351
+ createsprite gUnknown_83E75C4, ANIM_TARGET, 2, 28, 0, 288
+ waitforvisualfinish
+ setalpha 8, 8
+ playsewithpan SE_W081B, 63
+ createsprite gUnknown_83E75DC, ANIM_TARGET, 2, 0, -16
+ waitforvisualfinish
+ delay 0
+ blendoff
+ clearmonbg 3
+ restorebg
+ waitbgfadein
+ end
+
+Move_LOCK_ON:: @ 81C9A84
+ loadspritegfx 10014
+ createsprite gUnknown_83E3518, ANIM_ATTACKER, 40,
+ createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 1
+ createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 2
+ createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 3
+ createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 4
+ delay 120
+ setarg 7, 65535
+ waitforvisualfinish
+ end
+
+Move_MEAN_LOOK:: @ 81C9ABA
+ loadspritegfx 10187
+ monbg 3
+ playsewithpan SE_W060, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0
+ loopsewithpan SE_W109, 63, 15, 4
+ waitplaysewithpan SE_W043, 63, 85
+ createsprite gUnknown_83FEEE4, ANIM_ATTACKER, 2,
+ delay 120
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0
+ delay 30
+ clearmonbg 3
+ waitforvisualfinish
+ end
+
+Move_ROCK_THROW:: @ 81C9AFF
+ loadspritegfx 10058
+ createsprite gUnknown_83E7B88, ANIM_TARGET, 2, 6, 1, 15, 1
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 0, 1, 0, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 19, 1, 10, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -23, 2, -10, 0
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 20, 1
+ delay 6
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -15, 1, -10, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 23, 2, 10, 0
+ playsewithpan SE_W088, 63
+ waitforvisualfinish
+ end
+
+Move_ROCK_SLIDE:: @ 81C9B8B
+ loadspritegfx 10058
+ monbg 3
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 7, 1, 11, 1
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -5, 1, -5, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 5, 0, 6, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 19, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -23, 2, -10, 1
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 50, 1
+ createvisualtask AnimTask_ShakeMon, 2, 3, 0, 5, 50, 1
+ delay 2
+ call gUnknown_81C9C23
+ call gUnknown_81C9C23
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+gUnknown_81C9C23:: @ 81C9C23
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -20, 0, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 28, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -10, 1, -5, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 10, 0, 6, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 24, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -32, 2, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, -20, 0, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gUnknown_83E73B4, ANIM_TARGET, 2, 30, 2, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ return
+
+Move_THIEF:: @ 81C9CCC
+ loadspritegfx 10135
+ monbg 1
+ delay 1
+ fadetobg 1
+ waitbgfadein
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 6
+ playsewithpan SE_W233, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 8, 1
+ waitforvisualfinish
+ delay 20
+ clearmonbg 1
+ blendoff
+ restorebg
+ waitbgfadein
+ end
+
+Move_BUBBLE_BEAM:: @ 81C9D13
+ loadspritegfx 10146
+ loadspritegfx 10155
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ delay 1
+ call gUnknown_81C9D4D
+ createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, 1
+ call gUnknown_81C9D4D
+ call gUnknown_81C9D4D
+ waitforvisualfinish
+ call gUnknown_81D57CC
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81C9D4D:: @ 81C9D4D
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 35, 70, 0, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 20, 40, -10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 10, -60, 0, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 30, 10, -10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ return
+
+Move_ICY_WIND:: @ 81C9DF0
+ loadspritegfx 10141
+ loadspritegfx 10142
+ monbg 3
+ createvisualtask sub_80BA7F8, 10, 11, 4, 0, 4, 0
+ fadetobg 15
+ waitbgfadeout
+ playsewithpan SE_W196, 0
+ waitbgfadein
+ waitforvisualfinish
+ panse_1B SE_W016, 192, 63, 2, 0
+ call gUnknown_81C9E48
+ delay 5
+ call gUnknown_81C9E48
+ playsewithpan SE_W016B, 63
+ delay 55
+ call gUnknown_81D55E2
+ waitforvisualfinish
+ clearmonbg 3
+ restorebg
+ waitbgfadeout
+ createvisualtask sub_80BA7F8, 10, 11, 4, 4, 0, 0
+ waitbgfadein
+ end
+
+gUnknown_81C9E48:: @ 81C9E48
+ createsprite gUnknown_83E6410, ANIM_TARGET, 40, 0, 0, 0, 0, 72, 1
+ delay 5
+ createsprite gUnknown_83E6410, ANIM_TARGET, 40, 0, 10, 0, 10, 72, 1
+ delay 5
+ createsprite gUnknown_83E6410, ANIM_TARGET, 40, 0, -10, 0, -10, 72, 1
+ delay 5
+ createsprite gUnknown_83E6410, ANIM_TARGET, 40, 0, 15, 0, 15, 72, 1
+ delay 5
+ createsprite gUnknown_83E6410, ANIM_TARGET, 40, 0, -5, 0, -5, 72, 1
+ return
+
+Move_SMOKESCREEN:: @ 81C9EB0
+ loadspritegfx 10016
+ loadspritegfx 10017
+ playsewithpan SE_W104, 192
+ createsprite gUnknown_83FEE30, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25
+ waitforvisualfinish
+ createvisualtask sub_80DE34C, 2,
+ delay 2
+ playsewithpan SE_W028, 63
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 104, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 72, 1, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 56, 1, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 88, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 56, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 88, 1, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 72, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 104, 1, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 72, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 56, 1, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 80, 0, 75
+ createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 72, 1, 75
+ waitforvisualfinish
+ end
+
+Move_CONVERSION:: @ 81C9FA9
+ loadspritegfx 10018
+ monbg 2
+ monbgprio_28 0
+ setalpha 16, 0
+ delay 0
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, -24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, -24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, -24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, -24
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, -8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, -8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, -8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, -8
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, 8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, 8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, 8
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, 8
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, 24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, 24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, 24
+ delay 3
+ createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, 24
+ delay 20
+ playsewithpan SE_W112, 192
+ createvisualtask sub_80B9F6C, 2, 10018, 1, 1, 14335, 12, 0, 0
+ delay 6
+ createvisualtask sub_80A5CD4, 5,
+ waitforvisualfinish
+ delay 1
+ clearmonbg 2
+ blendoff
+ end
+
+Move_CONVERSION_2:: @ 81CA0BE
+ loadspritegfx 10018
+ monbg 3
+ monbgprio_2A 1
+ setalpha 0, 16
+ delay 0
+ playsewithpan SE_W112, 63
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, -24, 60
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, -24, 65
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, -24, 70
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, -24, 75
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, -8, 80
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, -8, 85
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, -8, 90
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, -8, 95
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, 8, 100
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, 8, 105
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, 8, 110
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, 8, 115
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, 24, 120
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, 24, 125
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, 24, 130
+ createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, 24, 135
+ createvisualtask sub_80A5DE0, 5,
+ delay 60
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_ROLLING_KICK:: @ 81CA1DA
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4
+ playsewithpan SE_W104, 192
+ delay 6
+ playsewithpan SE_W104, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
+ createsprite gUnknown_83E6758, ANIM_ATTACKER, 2, -24, 0, 48, 10, 160, 0
+ delay 5
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 8
+ clearmonbg 1
+ blendoff
+ end
+
+Move_HEADBUTT:: @ 81CA25D
+ loadspritegfx 10135
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ end
+
+Move_HORN_ATTACK:: @ 81CA2BA
+ loadspritegfx 10135
+ loadspritegfx 10020
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1
+ createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 0, 0, 10
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
+ end
+
+Move_FURY_ATTACK:: @ 81CA327
+ loadspritegfx 10135
+ loadspritegfx 10020
+ createvisualtask sub_8099980, 2, 4, 256, 0, 2
+ choosetwoturnanim gUnknown_81CA358, gUnknown_81CA37E
+
+gUnknown_81CA345:: @ 81CA345
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81CA358:: @ 81CA358
+ createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 8, 8, 10
+ waitforvisualfinish
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ goto gUnknown_81CA345
+
+gUnknown_81CA37E:: @ 81CA37E
+ createsprite gUnknown_83E37BC, ANIM_TARGET, 4, -8, -8, 10
+ waitforvisualfinish
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ goto gUnknown_81CA345
+
+Move_HORN_DRILL:: @ 81CA3A4
+ loadspritegfx 10135
+ loadspritegfx 10020
+ jumpifcontest gUnknown_81CA50A
+ fadetobg 7
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 768, 1, -1
+
+gUnknown_81CA3C1:: @ 81CA3C1
+ waitbgfadein
+ setalpha 12, 8
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1
+ createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 0, 0, 12
+ waitforvisualfinish
+ playse SE_BAN
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 2, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -4, 3, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -8, -5, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 4, -12, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 16, 0, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 5, 18, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -17, 12, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -21, -15, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 8, -27, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 32, 0, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2
+ waitforvisualfinish
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81CA50A:: @ 81CA50A
+ fadetobg 8
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, 2304, 768, 0, -1
+ goto gUnknown_81CA3C1
+
+Move_THRASH:: @ 81CA521
+ loadspritegfx 10135
+ loadspritegfx 10143
+ createvisualtask sub_80A8638, 2,
+ createvisualtask sub_80A86A4, 2,
+ createsprite gUnknown_83E6728, ANIM_TARGET, 3, 1, 10, 0
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1
+ playsewithpan SE_W004, 63
+ delay 28
+ createsprite gUnknown_83E6728, ANIM_TARGET, 3, 1, 10, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1
+ playsewithpan SE_W233B, 63
+ delay 28
+ createsprite gUnknown_83E6728, ANIM_TARGET, 3, 1, 10, 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 8, 0, 16, 1
+ playsewithpan SE_W025B, 63
+ end
+
+Move_SING:: @ 81CA5A0
+ loadspritegfx 10072
+ monbg 3
+ createvisualtask sub_80A65E8, 2,
+ waitforvisualfinish
+ panse_1B SE_W047, 192, 63, 2, 0
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 7, 0, 12
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 12
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 2, 12
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 3, 12
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 3, 0, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 2, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 3, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 0, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 2, 12
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 3, 12
+ delay 4
+ waitforvisualfinish
+ clearmonbg 3
+ createvisualtask sub_80A66A0, 2,
+ waitforvisualfinish
+ end
+
+Move_LOW_KICK:: @ 81CA674
+ loadspritegfx 10143
+ loadspritegfx 10135
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
+ createsprite gUnknown_83E6758, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2
+ createvisualtask sub_8099980, 2, 6, 384, 1, 2
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4
+ end
+
+Move_EARTHQUAKE:: @ 81CA6D1
+ createvisualtask sub_80B94B4, 5, 5, 10, 50
+ createvisualtask sub_80B94B4, 5, 4, 10, 50
+ playsewithpan SE_W089, 0
+ delay 10
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 16
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ end
+
+Move_FISSURE:: @ 81CA71E
+ loadspritegfx 10074
+ createvisualtask sub_80B94B4, 3, 5, 10, 50
+ createvisualtask sub_80B94B4, 3, 1, 10, 50
+ playsewithpan SE_W089, 63
+ delay 8
+ call gUnknown_81CA79F
+ delay 15
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 15
+ call gUnknown_81CA7F0
+ delay 15
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 15
+ call gUnknown_81CA79F
+ delay 50
+ fadetobg 21
+ waitbgfadeout
+ createvisualtask sub_80B9800, 5, 1, 5, -1
+ waitbgfadein
+ delay 40
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81CA79F:: @ 81CA79F
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 0, 12, -48, -16, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 0, 16, -16, -10, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 1, 14, -52, -18, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 1, 12, -32, -16, 24
+ playsewithpan SE_W091, 63
+ return
+
+gUnknown_81CA7F0:: @ 81CA7F0
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 0, 12, -24, -16, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 0, 16, -38, -10, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 1, 14, -20, -18, 24
+ createsprite gUnknown_83E7AAC, ANIM_TARGET, 2, 1, 1, 12, -36, -16, 24
+ playsewithpan SE_W091, 63
+ return
+
+Move_DIG:: @ 81CA841
+ choosetwoturnanim gUnknown_81CA84B, gUnknown_81CA8A6
+
+gUnknown_81CA84A:: @ 81CA84A
+ end
+
+gUnknown_81CA84B:: @ 81CA84B
+ loadspritegfx 10074
+ loadspritegfx 10281
+ createsprite gUnknown_83E7AC4, ANIM_ATTACKER, 1, 0, 0, 180
+ createsprite gUnknown_83E7AC4, ANIM_ATTACKER, 1, 0, 1, 180
+ monbg_22 0
+ delay 1
+ createvisualtask sub_80B8E94, 2, 0
+ delay 6
+ call gUnknown_81CA90A
+ call gUnknown_81CA90A
+ call gUnknown_81CA90A
+ call gUnknown_81CA90A
+ call gUnknown_81CA90A
+ waitforvisualfinish
+ clearmonbg_23 0
+ delay 1
+ createvisualtask sub_80B8E94, 2, 1
+ goto gUnknown_81CA84A
+
+gUnknown_81CA8A6:: @ 81CA8A6
+ loadspritegfx 10135
+ loadspritegfx 10281
+ createvisualtask sub_80B90EC, 2, 0
+ waitforvisualfinish
+ monbg 0
+ createsprite gUnknown_83E7AC4, ANIM_ATTACKER, 1, 0, 0, 48
+ createsprite gUnknown_83E7AC4, ANIM_ATTACKER, 1, 0, 1, 48
+ delay 1
+ createvisualtask sub_80B90EC, 2, 1
+ delay 16
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ playsewithpan SE_W025B, 192
+ clearmonbg 0
+ goto gUnknown_81CA84A
+
+gUnknown_81CA90A:: @ 81CA90A
+ createsprite gUnknown_83E7AAC, ANIM_ATTACKER, 2, 0, 0, 12, 4, -16, 18
+ createsprite gUnknown_83E7AAC, ANIM_ATTACKER, 2, 0, 0, 16, 4, -10, 18
+ createsprite gUnknown_83E7AAC, ANIM_ATTACKER, 2, 0, 1, 14, 4, -18, 18
+ createsprite gUnknown_83E7AAC, ANIM_ATTACKER, 2, 0, 1, 12, 4, -16, 18
+ playsewithpan SE_W091, 192
+ delay 32
+ return
+
+Move_MEDITATE:: @ 81CA95D
+ call gUnknown_81D59BB
+ createvisualtask sub_80B3418, 2,
+ playsewithpan SE_W029, 192
+ delay 16
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
+ call gUnknown_81D59C7
+ end
+
+Move_AGILITY:: @ 81CA97A
+ monbg 2
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4
+ createvisualtask sub_80BAB98, 2, 0, 4, 7, 10
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ delay 1
+ end
+
+Move_QUICK_ATTACK:: @ 81CA9C4
+ loadspritegfx 10135
+ monbg 2
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5
+ createvisualtask sub_80BAB98, 2, 0, 4, 7, 3
+ playsewithpan SE_W026, 192
+ delay 4
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_RAGE:: @ 81CAA1C
+ loadspritegfx 10135
+ loadspritegfx 10087
+ monbg 1
+ setalpha 12, 8
+ createvisualtask AnimTask_BlendMonInAndOut, 3, 0, 31, 10, 0, 2
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, -20, -28
+ playsewithpan SE_W207B, 192
+ delay 20
+ createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28
+ playsewithpan SE_W207B, 192
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask sub_8099BD4, 2, 1, 1, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ end
+
+Move_TELEPORT:: @ 81CAA92
+ call gUnknown_81D59BB
+ createvisualtask sub_80B3480, 2,
+ playsewithpan SE_W100, 192
+ delay 15
+ call gUnknown_81D59C7
+ waitforvisualfinish
+ end
+
+Move_DOUBLE_TEAM:: @ 81CAAAB
+ monbg 2
+ setalpha 12, 8
+ createvisualtask sub_80A63B4, 2,
+ playsewithpan SE_W104, 192
+ delay 32
+ playsewithpan SE_W104, 192
+ delay 24
+ playsewithpan SE_W104, 192
+ delay 16
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ delay 1
+ end
+
+Move_MINIMIZE:: @ 81CAAF2
+ setalpha 10, 8
+ createvisualtask sub_80A8074, 2,
+ loopsewithpan SE_W107, 192, 34, 3
+ waitforvisualfinish
+ blendoff
+ end
+
+Move_METRONOME:: @ 81CAB05
+ loadspritegfx 10064
+ loadspritegfx 10209
+ createsprite gUnknown_83E398C, ANIM_ATTACKER, 11, 0, 100
+ playsewithpan SE_W118, 192
+ delay 6
+ createsprite gUnknown_83E3A34, ANIM_ATTACKER, 12, 0
+ delay 24
+ loopsewithpan SE_W039, 192, 22, 3
+ waitforvisualfinish
+ end
+
+Move_SKULL_BASH:: @ 81CAB2F
+ choosetwoturnanim gUnknown_81CAB39, gUnknown_81CAB86
+
+gUnknown_81CAB38:: @ 81CAB38
+ end
+
+gUnknown_81CAB39:: @ 81CAB39
+ call gUnknown_81CAB49
+ call gUnknown_81CAB49
+ waitforvisualfinish
+ goto gUnknown_81CAB38
+
+gUnknown_81CAB49:: @ 81CAB49
+ createsprite gUnknown_83D4EB4, ANIM_ATTACKER, 2, 0, -24, 0, 0, 10, 0
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
+ createvisualtask sub_8099980, 2, 16, 96, 0, 2
+ waitforvisualfinish
+ createsprite gUnknown_83D4EB4, ANIM_ATTACKER, 2, 0, 24, 0, 0, 10, 1
+ waitforvisualfinish
+ return
+
+gUnknown_81CAB86:: @ 81CAB86
+ loadspritegfx 10135
+ createvisualtask sub_80A5694, 2, 0
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
+ playse SE_BAN
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 4, 0, 0, 1, 0
+ loopsewithpan SE_W025B, 63, 8, 3
+ waitforvisualfinish
+ createvisualtask sub_80A5694, 2, 1
+ goto gUnknown_81CAB38
+
+Move_AMNESIA:: @ 81CABF5
+ loadspritegfx 10093
+ call gUnknown_81D59BB
+ delay 8
+ createsprite gUnknown_83E6FF4, ANIM_ATTACKER, 20,
+ playsewithpan SE_W118, 192
+ delay 54
+ loopsewithpan SE_W118, 192, 16, 3
+ waitforvisualfinish
+ call gUnknown_81D59C7
+ end
+
+Move_KINESIS:: @ 81CAC19
+ loadspritegfx 10075
+ loadspritegfx 10097
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ createsprite gUnknown_83E6F8C, ANIM_ATTACKER, 20,
+ createsprite gUnknown_83E3BBC, ANIM_ATTACKER, 19, 32, -8, 0
+ createsprite gUnknown_83E3BBC, ANIM_ATTACKER, 19, 32, 16, 1
+ loopsewithpan SE_W109, 192, 21, 2
+ delay 60
+ playsewithpan SE_W146, 192
+ delay 30
+ loopsewithpan SE_W146, 192, 20, 2
+ delay 70
+ playsewithpan SE_W207B, 192
+ waitforvisualfinish
+ call gUnknown_81D59C7
+ end
+
+Move_GLARE:: @ 81CAC6A
+ loadspritegfx 10248
+ loadspritegfx 10218
+ createvisualtask sub_80E21CC, 5, 0
+ playsewithpan SE_W060B, 192
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 5, 1, 0, 0, 16, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8
+ createvisualtask sub_80A9F10, 5,
+ playsewithpan SE_W043, 192
+ delay 2
+ createvisualtask sub_80ADAD8, 3, 20, 1, 0
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 5, 1, 0, 16, 0, 0
+ end
+
+Move_BARRAGE:: @ 81CACD3
+ loadspritegfx 10254
+ createvisualtask sub_80E2518, 3,
+ playsewithpan SE_W207, 192
+ delay 24
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 8, 1, 40, 1
+ createvisualtask AnimTask_ShakeMon, 3, 1, 0, 4, 20, 1
+ createvisualtask AnimTask_ShakeMon, 3, 3, 0, 4, 20, 1
+ loopsewithpan SE_W070, 63, 8, 2
+ end
+
+Move_SKY_ATTACK:: @ 81CAD1B
+ choosetwoturnanim gUnknown_81CAD25, gUnknown_81CAE2E
+
+gUnknown_81CAD24:: @ 81CAD24
+ end
+
+gUnknown_81CAD25:: @ 81CAD25
+ monbg 3
+ setalpha 12, 11
+ createvisualtask AnimTask_GetTargetIsAttackerPartner, 5, 7
+ jumpargeq 7, 0, gUnknown_81CAD40
+ goto gUnknown_81CADB7
+
+gUnknown_81CAD40:: @ 81CAD40
+ createvisualtask sub_80BA7F8, 10, 27, 1, 0, 12, 0
+ waitforvisualfinish
+ delay 12
+ createvisualtask sub_80BA7F8, 10, 2, 1, 8, 0, 0
+ createvisualtask sub_80B94B4, 5, 0, 2, 16
+ loopsewithpan SE_W287, 192, 4, 8
+ createvisualtask sub_80BA7F8, 10, 2, 1, 0, 15, 32767
+ delay 20
+ createvisualtask sub_80BA7F8, 10, 2, 1, 15, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 25, 1, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81CAD24
+
+gUnknown_81CADB7:: @ 81CADB7
+ createvisualtask sub_80BA83C, 10, 1, 1, 0, 12, 0
+ waitforvisualfinish
+ delay 12
+ createvisualtask sub_80BA7F8, 10, 2, 1, 8, 0, 0
+ createvisualtask sub_80B94B4, 5, 0, 2, 16
+ playsewithpan SE_W287, 192
+ delay 8
+ createvisualtask sub_80BA7F8, 10, 2, 1, 0, 15, 32767
+ delay 20
+ createvisualtask sub_80BA7F8, 10, 2, 1, 15, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80BA83C, 10, 4, 1, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81CAD24
+
+gUnknown_81CAE2E:: @ 81CAE2E
+ loadspritegfx 10135
+ loadspritegfx 10284
+ call gUnknown_81D59CF
+ monbg 0
+ createvisualtask sub_80BA7F8, 10, 2, 0, 0, 16, 32767
+ delay 4
+ createvisualtask sub_80B78E0, 5, 0
+ waitforvisualfinish
+ createvisualtask sub_80DD410, 5, 231, -64
+ createsprite gUnknown_83E6DB4, ANIM_TARGET, 2,
+ delay 14
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ delay 20
+ createvisualtask sub_80B79DC, 5, 1
+ delay 2
+ createvisualtask sub_80BA7F8, 10, 2, 0, 15, 0, 32767
+ waitforvisualfinish
+ clearmonbg 0
+ call gUnknown_81D59FF
+ goto gUnknown_81CAD24
+
+Move_FLASH:: @ 81CAEB3
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80BB660, 2,
+ waitforvisualfinish
+ end
+
+Move_SPLASH:: @ 81CAEC0
+ createvisualtask sub_80A8338, 2, 0, 3
+ delay 8
+ loopsewithpan SE_W039, 192, 38, 3
+ waitforvisualfinish
+ end
+
+Move_ACID_ARMOR:: @ 81CAED5
+ monbg 0
+ setalpha 15, 0
+ createvisualtask sub_80E12F8, 2, 0
+ playsewithpan SE_W151, 192
+ waitforvisualfinish
+ blendoff
+ clearmonbg 0
+ delay 1
+ end
+
+Move_SHARPEN:: @ 81CAEEE
+ loadspritegfx 10185
+ createsprite gUnknown_83E365C, ANIM_ATTACKER, 2,
+ waitforvisualfinish
+ end
+
+Move_SUPER_FANG:: @ 81CAEFA
+ loadspritegfx 10192
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 1, 0, 20, 1
+ playsewithpan SE_W082, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 48, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 2, 0, 1247, 12, 4, 1
+ waitforvisualfinish
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 4
+ createsprite gUnknown_83E37EC, ANIM_TARGET, 2,
+ playsewithpan SE_W044, 63
+ delay 8
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 2143, 14, 32767, 14
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 7, 12, 1
+ waitforvisualfinish
+ blendoff
+ end
+
+Move_SLASH:: @ 81CAF7B
+ loadspritegfx 10183
+ createsprite gUnknown_83E35A4, ANIM_TARGET, 2, 1, -8, 0
+ playsewithpan SE_W013, 63
+ delay 4
+ createsprite gUnknown_83E35A4, ANIM_TARGET, 2, 1, 8, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ end
+
+Move_STRUGGLE:: @ 81CAFB5
+ loadspritegfx 10135
+ loadspritegfx 10215
+ monbg 1
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 12, 4
+ createsprite gUnknown_83E43F8, ANIM_ATTACKER, 2, 0, 0, 2
+ createsprite gUnknown_83E43F8, ANIM_ATTACKER, 2, 0, 1, 2
+ loopsewithpan SE_W029, 192, 12, 4
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_SKETCH:: @ 81CB01B
+ loadspritegfx 10002
+ monbg 1
+ createvisualtask sub_80A8874, 2,
+ createsprite gUnknown_83E3F4C, ANIM_TARGET, 2,
+ waitforvisualfinish
+ clearmonbg 1
+ createvisualtask sub_80A8338, 2, 0, 2
+ loopsewithpan SE_W039, 192, 38, 2
+ end
+
+Move_NIGHTMARE:: @ 81CB043
+ fadetobg 2
+ waitbgfadein
+ jumpifcontest gUnknown_81CB06F
+ monbg 3
+ createvisualtask sub_80B58AC, 2,
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 40, 1
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
+ clearmonbg 3
+ restorebg
+ waitbgfadein
+ end
+
+gUnknown_81CB06F:: @ 81CB06F
+ createvisualtask AnimTask_BlendMonInAndOut, 2, 0, 32767, 10, 2, 1
+ createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 32, 1
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ end
+
+Move_FLAIL:: @ 81CB099
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ createvisualtask sub_80E0850, 2, 0
+ loopsewithpan SE_W029, 192, 8, 2
+ waitforvisualfinish
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 3
+ createvisualtask sub_8099BD4, 2, 0, 1, 30, 1, 0
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_SPITE:: @ 81CB0D6
+ fadetobg 2
+ playsewithpan SE_W060, 192
+ waitbgfadein
+ monbg 3
+ createvisualtask sub_80B9BDC, 2, 2, 2, 6, 0, 8, 32767
+ createvisualtask sub_80B5AAC, 2,
+ loopsewithpan SE_W060, 63, 20, 3
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ clearmonbg 1
+ end
+
+Move_MACH_PUNCH:: @ 81CB105
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 2
+ createvisualtask AnimTask_GetAttackerSide, 2,
+ jumpargeq 7, 1, gUnknown_81CB186
+ fadetobg 9
+
+gUnknown_81CB11E:: @ 81CB11E
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 0, 1, -1
+ waitbgfadein
+ delay 0
+ setalpha 9, 8
+ createvisualtask sub_8077030, 2, 28968, 10
+ playsewithpan SE_W026, 192
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81CB186:: @ 81CB186
+ fadetobg 10
+ goto gUnknown_81CB11E
+
+Move_FORESIGHT:: @ 81CB18D
+ loadspritegfx 10258
+ monbg 3
+ monbgprio_28 1
+ setalpha 16, 0
+ createsprite gUnknown_83FF6A4, ANIM_TARGET, 2, 1
+ delay 17
+ loopsewithpan SE_W166, 63, 16, 4
+ delay 48
+ delay 24
+ playsewithpan SE_W166, 63
+ delay 10
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 1, 32767, 12, 2, 1
+ playsewithpan SE_W197, 63
+ waitforvisualfinish
+ blendoff
+ clearmonbg 3
+ end
+
+Move_DESTINY_BOND:: @ 81CB1CC
+ loadspritegfx 10188
+ fadetobg 2
+ playsewithpan SE_W060, 192
+ waitbgfadein
+ createvisualtask sub_80B6020, 5, 0, 48
+ playsewithpan SE_W109, 192
+ delay 48
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 24, 1
+ createvisualtask sub_80BA83C, 2, 6, 1, 0, 12, 30653
+ delay 24
+ createvisualtask sub_80BA83C, 2, 6, 1, 12, 0, 30653
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ blendoff
+ clearmonbg 5
+ end
+
+Move_ENDURE:: @ 81CB227
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
+ call gUnknown_81CB267
+ delay 8
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
+ call gUnknown_81CB267
+ delay 8
+ call gUnknown_81CB267
+ waitforvisualfinish
+ end
+
+gUnknown_81CB267:: @ 81CB267
+ createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ delay 4
+ createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ delay 4
+ createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ delay 4
+ createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, 28, 26, 3
+ delay 4
+ createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -12, 0, 1
+ return
+
+Move_CHARM:: @ 81CB2BB
+ loadspritegfx 10210
+ createvisualtask sub_80E0558, 5, 0, 2, 0
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20
+ playsewithpan SE_W204, 192
+ waitforvisualfinish
+ end
+
+Move_ROLLOUT:: @ 81CB2FE
+ loadspritegfx 10135
+ loadspritegfx 10074
+ loadspritegfx 10058
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask sub_80B4BD0, 2,
+ waitforvisualfinish
+ createvisualtask sub_8099BD4, 2, 0, 1, 30, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 2
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_FALSE_SWIPE:: @ 81CB33F
+ loadspritegfx 10286
+ loadspritegfx 10135
+ createsprite gUnknown_83E35BC, ANIM_TARGET, 2,
+ playsewithpan SE_W233, 63
+ delay 16
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 0
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 16
+ delay 2
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 32
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 48
+ delay 2
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 64
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 80
+ delay 2
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 3
+ playsewithpan SE_W004, 63
+ end
+
+Move_SWAGGER:: @ 81CB3C6
+ loadspritegfx 10086
+ loadspritegfx 10087
+ createvisualtask sub_80A84B4, 2,
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ createsprite gUnknown_83E3ED0, ANIM_ATTACKER, 2,
+ loopsewithpan SE_W207, 192, 4, 2
+ waitforvisualfinish
+ delay 24
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ delay 12
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28
+ playsewithpan SE_W207B, 63
+ waitforvisualfinish
+ end
+
+Move_MILK_DRINK:: @ 81CB40E
+ loadspritegfx 10099
+ loadspritegfx 10203
+ loadspritegfx 10031
+ monbg 1
+ createsprite gUnknown_83E33B4, ANIM_ATTACKER, 2,
+ delay 40
+ playsewithpan SE_W152, 192
+ delay 12
+ playsewithpan SE_W152, 192
+ delay 20
+ playsewithpan SE_W152, 192
+ waitforvisualfinish
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 1, 0
+ playsewithpan SE_W208, 192
+ waitforvisualfinish
+ clearmonbg 1
+ call gUnknown_81D5712
+ waitforvisualfinish
+ end
+
+Move_MAGNITUDE:: @ 81CB450
+ createvisualtask AnimTask_IsPowerOver99, 2,
+ waitforvisualfinish
+ jumpargeq 15, 0, gUnknown_81CB469
+ jumpargeq 15, 1, gUnknown_81CB48E
+
+gUnknown_81CB468:: @ 81CB468
+ end
+
+gUnknown_81CB469:: @ 81CB469
+ createvisualtask sub_80B94B4, 5, 5, 0, 50
+ createvisualtask sub_80B94B4, 5, 4, 0, 50
+ loopsewithpan SE_W070, 63, 8, 10
+ goto gUnknown_81CB468
+
+gUnknown_81CB48E:: @ 81CB48E
+ createvisualtask sub_80B94B4, 5, 5, 0, 50
+ createvisualtask sub_80B94B4, 5, 4, 0, 50
+ loopsewithpan SE_W070, 63, 8, 10
+ delay 10
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 16
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, 32767, 14
+ goto gUnknown_81CB468
+
+Move_RAPID_SPIN:: @ 81CB4E1
+ loadspritegfx 10135
+ loadspritegfx 10229
+ monbg 0
+ createsprite gUnknown_83FF068, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2
+ createvisualtask sub_80DEF9C, 2, 0, 2, 0
+ loopsewithpan SE_W013B, 192, 8, 4
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
+ createvisualtask sub_8099BD4, 2, 0, 1, 10, 1, 0
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ delay 8
+ createvisualtask sub_80DEF9C, 2, 0, 2, 1
+ loopsewithpan SE_W013B, 192, 8, 4
+ waitforvisualfinish
+ clearmonbg 0
+ end
+
+Move_MOONLIGHT:: @ 81CB54E
+ loadspritegfx 10194
+ loadspritegfx 10195
+ loadspritegfx 10031
+ setalpha 0, 16
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E3734, ANIM_ATTACKER, 2, 120, 56
+ createvisualtask sub_8076048, 3, 0, 16, 16, 0, 1
+ playsewithpan SE_W236, 0
+ delay 30
+ createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, -12, 0
+ delay 30
+ createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, -24, 0
+ delay 30
+ createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 21, 0
+ delay 30
+ createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 0, 0
+ delay 30
+ createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 10, 0
+ delay 20
+ createvisualtask sub_80A5FC0, 2,
+ waitforvisualfinish
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ end
+
+Move_EXTREME_SPEED:: @ 81CB5DE
+ loadspritegfx 10207
+ loadspritegfx 10135
+ createvisualtask AnimTask_GetAttackerSide, 2,
+ jumpargeq 7, 1, gUnknown_81CB695
+ fadetobg 9
+
+gUnknown_81CB5F5:: @ 81CB5F5
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 0, 1, -1
+ waitbgfadein
+ createvisualtask sub_80A917C, 2,
+ loopsewithpan SE_W013B, 192, 8, 3
+ waitforvisualfinish
+ delay 1
+ createvisualtask sub_80BC12C, 2,
+ monbg 1
+ setalpha 12, 8
+ delay 18
+ createvisualtask sub_80A9210, 2,
+ delay 2
+ playsewithpan SE_W004, 63
+ createsprite gUnknown_83E7C68, ANIM_TARGET, 2, 1, 0, -12, 3
+ delay 10
+ playsewithpan SE_W004, 63
+ createsprite gUnknown_83E7C68, ANIM_TARGET, 2, 1, 0, 12, 3
+ delay 10
+ playsewithpan SE_W233B, 63
+ createsprite gUnknown_83E7C68, ANIM_TARGET, 2, 1, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask sub_80A94AC, 2,
+ delay 10
+ createvisualtask sub_80A939C, 2,
+ loopsewithpan SE_W104, 192, 8, 4
+ waitforvisualfinish
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ clearmonbg 1
+ blendoff
+ delay 1
+ setarg 7, 4096
+ delay 1
+ end
+
+gUnknown_81CB695:: @ 81CB695
+ fadetobg 10
+ goto gUnknown_81CB5F5
+
+Move_UPROAR:: @ 81CB69C
+ loadspritegfx 10225
+ loadspritegfx 10203
+ monbg 3
+ createvisualtask sub_80AA7C8, 2, 0
+ createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -12, -29, 1
+ delay 16
+ createvisualtask sub_80AA7C8, 2, 0
+ createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 12, -29, 1
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -29, -12, 0
+ delay 16
+ createvisualtask sub_80AA7C8, 2, 0
+ createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 24, -24, 1
+ createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -24, -24, 0
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_HEAT_WAVE:: @ 81CB766
+ loadspritegfx 10261
+ createvisualtask AnimTask_BlendParticle, 5, 10261, 0, 6, 6, 31
+ createvisualtask AnimTask_LoadSandstormBackground, 5, 1
+ createvisualtask AnimTask_BlendBackground, 6, 6, 31
+ panse_1B SE_W257, 192, 63, 2, 0
+ delay 4
+ createvisualtask sub_80AD800, 5,
+ delay 12
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 10, 2304, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 90, 2048, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 50, 2560, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 20, 2304, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 70, 1984, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 0, 2816, 96, 1
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 60, 2560, 96, 1
+ end
+
+Move_HAIL:: @ 81CB816
+ loadspritegfx 10263
+ loadspritegfx 10141
+ createvisualtask sub_80BA7F8, 10, 1, 3, 0, 6, 0
+ waitforvisualfinish
+ createvisualtask AnimTask_Hail1, 5,
+ loopsewithpan SE_W258, 0, 8, 10
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1, 3, 6, 0, 0
+ end
+
+Move_TORMENT:: @ 81CB84E
+ loadspritegfx 10087
+ loadspritegfx 10209
+ createvisualtask sub_80DF1DC, 2,
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 2, 1, 31, 10, 1, 1
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ delay 20
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28
+ playsewithpan SE_W207B, 63
+ end
+
+Move_MEMENTO:: @ 81CB892
+ setalpha 0, 16
+ delay 1
+ createvisualtask sub_80B85B8, 2,
+ delay 1
+ createvisualtask sub_80B7DA4, 5,
+ playsewithpan SE_W060, 192
+ delay 48
+ playsewithpan SE_W060B, 192
+ waitforvisualfinish
+ createvisualtask sub_80B8664, 2,
+ delay 12
+ setalpha 0, 16
+ delay 1
+ monbg_22 1
+ createvisualtask sub_80B8070, 5,
+ playsewithpan SE_W060, 63
+ waitforvisualfinish
+ clearmonbg_23 1
+ delay 1
+ blendoff
+ delay 1
+ end
+
+Move_FACADE:: @ 81CB8D6
+ loadspritegfx 10243
+ createvisualtask sub_80E1D5C, 2, 0, 3
+ createvisualtask sub_80E1FC4, 2, 0, 72
+ loopsewithpan SE_W207, 192, 24, 3
+ end
+
+Move_SMELLING_SALT:: @ 81CB8F6
+ loadspritegfx 10247
+ loadspritegfx 10255
+ createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 0, 2
+ createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 1, 2
+ delay 32
+ createvisualtask sub_80E28DC, 3, 1, 2
+ loopsewithpan SE_W003, 63, 12, 2
+ waitforvisualfinish
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 2
+ createsprite gUnknown_83FF674, ANIM_TARGET, 2, 1, 8, 3
+ loopsewithpan SE_W207B, 63, 16, 3
+ end
+
+Move_FOLLOW_ME:: @ 81CB951
+ loadspritegfx 10064
+ createsprite gUnknown_83E3A4C, ANIM_ATTACKER, 2, 0
+ playsewithpan SE_W039, 192
+ delay 18
+ playsewithpan SE_W213, 192
+ delay 71
+ loopsewithpan SE_W039, 192, 22, 3
+ end
+
+Move_CHARGE:: @ 81CB970
+ loadspritegfx 10211
+ loadspritegfx 10212
+ loadspritegfx 10213
+ monbg 0
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80AE540, 2, 0, 60, 2, 12
+ playsewithpan SE_W268, 192
+ delay 30
+ playsewithpan SE_W268, 192
+ delay 30
+ playsewithpan SE_W268, 192
+ createsprite gUnknown_83E61D4, ANIM_ATTACKER, 2, 0
+ delay 25
+ playsewithpan SE_W268, 192
+ delay 20
+ playsewithpan SE_W268, 192
+ delay 15
+ playsewithpan SE_W268, 192
+ delay 10
+ delay 6
+ loopsewithpan SE_W268, 192, 6, 5
+ waitforvisualfinish
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 0, 16, 16
+ delay 2
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 0, -16, -16
+ playsewithpan SE_W085B, 192
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0
+ clearmonbg 0
+ blendoff
+ end
+
+Move_TAUNT:: @ 81CBA0B
+ loadspritegfx 10214
+ loadspritegfx 10209
+ loadspritegfx 10087
+ createsprite gUnknown_83E398C, ANIM_ATTACKER, 11, 0, 45
+ playsewithpan SE_W118, 192
+ delay 6
+ createsprite gUnknown_83E3AC4, ANIM_ATTACKER, 12, 0
+ delay 4
+ loopsewithpan SE_W039, 192, 16, 2
+ waitforvisualfinish
+ delay 8
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ waitforvisualfinish
+ delay 12
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28
+ playsewithpan SE_W207B, 63
+ end
+
+Move_HELPING_HAND:: @ 81CBA5F
+ loadspritegfx 10247
+ createvisualtask sub_80E2CE4, 5,
+ createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 0
+ createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 1
+ delay 19
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1
+ delay 14
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1
+ delay 20
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 2, 3, 0, 10, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 2, 2, 1023, 12, 1, 1
+ end
+
+Move_ASSIST:: @ 81CBAD2
+ loadspritegfx 10252
+ createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36
+ delay 2
+ createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 208, 128, -16, 48, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 112, 256, -16, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 108, 128, 84, -16, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 56, 256, 56, 36
+ playsewithpan SE_W010, 0
+ end
+
+Move_SUPERPOWER:: @ 81CBB43
+ loadspritegfx 10212
+ loadspritegfx 10256
+ loadspritegfx 10257
+ monbg 2
+ monbgprio_28 0
+ setalpha 12, 8
+ createsprite gUnknown_83E6864, ANIM_TARGET, 2, 0
+ playsewithpan SE_W025, 192
+ delay 20
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 4, 1, 180, 1
+ createvisualtask sub_80DD410, 5, 227, 0
+ delay 40
+ createsprite gUnknown_83E687C, ANIM_ATTACKER, 41, 200, 96, 1, 120
+ delay 8
+ createsprite gUnknown_83E687C, ANIM_ATTACKER, 41, 20, 248, 4, 112
+ delay 8
+ createsprite gUnknown_83E687C, ANIM_ATTACKER, 41, 130, 160, 2, 104
+ delay 8
+ createsprite gUnknown_83E687C, ANIM_ATTACKER, 41, 160, 192, 0, 96
+ delay 8
+ createsprite gUnknown_83E687C, ANIM_ATTACKER, 41, 60, 288, 3, 88
+ delay 74
+ createsprite gUnknown_83E6894, ANIM_TARGET, 3, 0
+ playsewithpan SE_W207, 192
+ delay 16
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 16, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ delay 1
+ end
+
+Move_RECYCLE:: @ 81CBBFE
+ loadspritegfx 10278
+ monbg 0
+ setalpha 0, 16
+ delay 1
+ createsprite gUnknown_83FF790, ANIM_ATTACKER, 2,
+ loopsewithpan SE_W036, 192, 24, 3
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 32767, 12, 2, 1
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
+ blendoff
+ clearmonbg 0
+ delay 1
+ end
+
+Move_BRICK_BREAK:: @ 81CBC32
+ loadspritegfx 10167
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10208
+ choosetwoturnanim gUnknown_81CBC47, gUnknown_81CBD16
+
+gUnknown_81CBC47:: @ 81CBC47
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
+ delay 4
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0
+ delay 37
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0
+ waitforvisualfinish
+ clearmonbg 1
+ end
+
+gUnknown_81CBD16:: @ 81CBD16
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
+ delay 4
+ createsprite gUnknown_83E6808, ANIM_ATTACKER, 3, 1, 0, 0, 90, 10
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0
+ delay 37
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gUnknown_83E6820, ANIM_ATTACKER, 2, 1, 0, -8, -12
+ createsprite gUnknown_83E6820, ANIM_ATTACKER, 2, 1, 1, 8, -12
+ createsprite gUnknown_83E6820, ANIM_ATTACKER, 2, 1, 2, -8, 12
+ createsprite gUnknown_83E6820, ANIM_ATTACKER, 2, 1, 3, 8, 12
+ playsewithpan SE_W280, 63
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0
+ waitforvisualfinish
+ clearmonbg 1
+ end
+
+Move_YAWN:: @ 81CBE37
+ loadspritegfx 10242
+ createvisualtask sub_80E1704, 2, 0
+ playsewithpan SE_W281, 192
+ waitforvisualfinish
+ createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 2
+ playsewithpan SE_W255, 192
+ delay 4
+ createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 1
+ delay 4
+ createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 0
+ waitforvisualfinish
+ createvisualtask sub_80E1704, 2, 1
+ playsewithpan SE_W281, 63
+ end
+
+Move_ENDEAVOR:: @ 81CBE7A
+ loadspritegfx 10243
+ loadspritegfx 10135
+ createvisualtask sub_80E1D5C, 2, 0, 2
+ loopsewithpan SE_W039, 192, 24, 2
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 703, 12, 1, 2
+ delay 6
+ createvisualtask sub_8099BD4, 5, 0, 1, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -12, 1, 2
+ playsewithpan SE_W003, 63
+ delay 24
+ createvisualtask sub_8099BD4, 5, 0, 1, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 12, 1, 2
+ playsewithpan SE_W004, 63
+ end
+
+Move_ERUPTION:: @ 81CBEEF
+ loadspritegfx 10201
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, 31
+ waitforvisualfinish
+ createvisualtask sub_80ACEA4, 2,
+ waitplaysewithpan SE_W153, 192, 60
+ waitforvisualfinish
+ createvisualtask sub_80ACEA4, 2,
+ waitplaysewithpan SE_W153, 192, 60
+ waitforvisualfinish
+ delay 30
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 200, -32, 0, 100, 0
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 30, -32, 16, 90, 1
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 150, -32, 32, 60, 2
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 90, -32, 48, 80, 3
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0
+ createsprite gUnknown_83E5E60, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1
+ delay 22
+ createvisualtask sub_80B94B4, 5, 5, 8, 60
+ createvisualtask sub_80B94B4, 5, 4, 8, 60
+ loopsewithpan SE_W088, 63, 16, 12
+ delay 80
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, 31
+ end
+
+Move_SKILL_SWAP:: @ 81CBFBC
+ loadspritegfx 10251
+ call gUnknown_81D59BB
+ createvisualtask sub_80B3834, 3, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 1, 32767, 12, 3, 1
+ loopsewithpan SE_W179, 192, 24, 3
+ delay 16
+ createvisualtask sub_80B3834, 3, 0
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 32767, 12, 3, 1
+ waitforvisualfinish
+ call gUnknown_81D59C7
+ end
+
+Move_IMPRISON:: @ 81CC007
+ loadspritegfx 10249
+ loadspritegfx 10250
+ call gUnknown_81D59BB
+ monbg 3
+ createvisualtask sub_80B3584, 5,
+ delay 8
+ loopsewithpan SE_W030, 192, 8, 5
+ waitforvisualfinish
+ delay 4
+ createsprite gUnknown_83E705C, ANIM_ATTACKER, 5, 0, 40
+ createvisualtask sub_80B94B4, 5, 4, 1, 10
+ playsewithpan SE_W063, 192
+ clearmonbg 3
+ call gUnknown_81D59C7
+ end
+
+Move_GRUDGE:: @ 81CC04A
+ loadspritegfx 10253
+ monbg 0
+ monbgprio_29
+ fadetobg 2
+ playsewithpan SE_W060, 192
+ waitbgfadein
+ createvisualtask sub_80B68C8, 3,
+ loopsewithpan SE_W052, 192, 16, 4
+ delay 10
+ delay 80
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ clearmonbg 0
+ end
+
+Move_CAMOUFLAGE:: @ 81CC072
+ monbg 2
+ monbgprio_28 0
+ setalpha 16, 0
+ createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14
+ delay 16
+ createvisualtask sub_80B78E0, 2, 4
+ playsewithpan SE_W185, 192
+ waitforvisualfinish
+ delay 8
+ createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_80B79DC, 2, 1
+ waitforvisualfinish
+ blendoff
+ clearmonbg 2
+ end
+
+Move_TAIL_GLOW:: @ 81CC0B8
+ loadspritegfx 10212
+ monbg 0
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E7378, ANIM_ATTACKER, 66, 0
+ delay 18
+ loopsewithpan SE_W234, 192, 16, 6
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0
+ clearmonbg 0
+ blendoff
+ delay 1
+ end
+
+Move_LUSTER_PURGE:: @ 81CC0FB
+ loadspritegfx 10267
+ loadspritegfx 10135
+ fadetobg 3
+ waitbgfadeout
+ createvisualtask sub_80DE7B4, 5,
+ waitbgfadein
+ monbg 0
+ setalpha 12, 8
+ playsewithpan SE_W076, 192
+ createsprite gUnknown_83E7148, ANIM_ATTACKER, 41, 0, 0, 0, 0
+ delay 20
+ createvisualtask sub_80BA83C, 5, 5, 2, 0, 16, -1
+ createvisualtask AnimTask_BlendParticle, 5, 10267, 2, 0, 16, -1
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendParticle, 5, 10135, 0, 12, 12, 23552
+ waitforvisualfinish
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ delay 3
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ delay 3
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ delay 3
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ delay 3
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ delay 3
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 208, 63
+ waitforvisualfinish
+ createvisualtask sub_80BA83C, 5, 5, 2, 16, 0, -1
+ createvisualtask sub_80B94B4, 5, 1, 5, 14
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ call gUnknown_81D59C7
+ end
+
+Move_MIST_BALL:: @ 81CC212
+ loadspritegfx 10155
+ loadspritegfx 10270
+ delay 0
+ playsewithpan SE_W081, 192
+ createsprite gUnknown_83E64E8, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
+ waitforvisualfinish
+ playsewithpan SE_W028, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 10, 0
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, 32279, 16, 32767, 16
+ delay 0
+ playsewithpan SE_W114, 0
+ createvisualtask AnimTask_LoadMistTiles, 5,
+ createvisualtask sub_80BA7F8, 10, 4, 3, 0, 16, 32767
+ delay 8
+ createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 70, 0
+ delay 70
+ createvisualtask sub_80BA7F8, 10, 4, 2, 16, 0, 32767
+ end
+
+Move_FEATHER_DANCE:: @ 81CC2A1
+ loadspritegfx 10270
+ monbg 3
+ monbgprio_29
+ playsewithpan SE_W080, 63
+ delay 0
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 32, 2, 104, 11304, 32, 1
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 0, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 224, 2, 104, 11304, 32, 1
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 128, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 192, 2, 104, 11304, 32, 1
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 160, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gUnknown_83E6C00, ANIM_TARGET, 0, 0, -16, 96, 2, 104, 11304, 32, 1
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_TEETER_DANCE:: @ 81CC371
+ loadspritegfx 10072
+ loadspritegfx 10073
+ createvisualtask sub_80E4160, 5,
+ createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, 16, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, 0, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, -16, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 1, -8, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 2, 8, -2
+ playsewithpan SE_W298, 192
+ end
+
+Move_MUD_SPORT:: @ 81CC3DC
+ loadspritegfx 10074
+ createvisualtask sub_80A8338, 2, 0, 6
+ delay 24
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, -4, -16
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, 4, -12
+ playsewithpan SE_W091, 192
+ delay 32
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, -3, -12
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, 5, -14
+ playsewithpan SE_W091, 192
+ delay 32
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, -5, -18
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, 3, -14
+ playsewithpan SE_W091, 192
+ delay 16
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 220, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 60, 100
+ waitplaysewithpan SE_W145B, 0, 25
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 140, 55
+ waitplaysewithpan SE_W145B, 0, 14
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 180, 50
+ waitplaysewithpan SE_W145B, 0, 10
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 20, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 90, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 160, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 30, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 120, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 1, 200, 40
+ waitplaysewithpan SE_W145B, 0, 10
+ end
+
+Move_NEEDLE_ARM:: @ 81CC513
+ loadspritegfx 10266
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loopsewithpan SE_W030, 63, 2, 16
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, -32, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 22, -22, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 30, 0, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 20, 20, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, 28, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -19, 19, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -27, 0, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -18, -18, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, -25, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 17, -17, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 23, 0, 16
+ delay 2
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 16, 16, 16
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
+ playsewithpan SE_W233B, 63
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 0, -24, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 17, -17, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 24, 0, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 17, 17, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 0, 24, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -17, 17, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -24, 0, 10
+ createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -17, -17, 10
+ end
+
+Move_SLACK_OFF:: @ 81CC6C3
+ loadspritegfx 10031
+ createvisualtask sub_80E4540, 2, 0
+ playsewithpan SE_W281, 192
+ waitforvisualfinish
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ end
+
+Move_CRUSH_CLAW:: @ 81CC6DB
+ loadspritegfx 10167
+ loadspritegfx 10039
+ loadspritegfx 10208
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, -10, 0
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, 10, 0
+ playsewithpan SE_W013, 63
+ delay 12
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, -10, 1
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, 10, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ waitforvisualfinish
+ blendoff
+ clearmonbg 1
+ end
+
+Move_AROMATHERAPY:: @ 81CC74B
+ playsewithpan SE_W080, 0
+ loadspritegfx 10159
+ loadspritegfx 10203
+ loadspritegfx 10049
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, 13293
+ delay 1
+ monbg 0
+ delay 1
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 24, 16, 0, 2, 2, 0, 0
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 64, 24, 0, 3, 1, 1, 0
+ createsprite gUnknown_83E303C, ANIM_ATTACKER, 0, 16, 24, 0, 2, 1, 0, 0
+ delay 20
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 48, 12, 0, 4, 3, 1, 0
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 100, 16, 0, 3, 2, 0, 0
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 74, 24, 180, 3, 2, 0, 0
+ delay 10
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 80, 30, 0, 4, 1, 1, 0
+ createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 128, 12, 0, 3, 3, 0, 0
+ createsprite gUnknown_83E303C, ANIM_ATTACKER, 0, 90, 16, 0, 2, 1, 0, 0
+ waitforvisualfinish
+ clearmonbg 0
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, 13293
+ delay 1
+ playsewithpan SE_W287, 192
+ createvisualtask sub_80E2084, 2, 1
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
+ createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1
+ delay 8
+ createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, 13293
+ createsprite gUnknown_83E40E0, ANIM_ATTACKER, 16, 0, 0, 0, 1
+ waitforvisualfinish
+ end
+
+Move_FAKE_TEARS:: @ 81CC8AD
+ loadspritegfx 10155
+ loadspritegfx 10209
+ loadspritegfx 10072
+ createvisualtask AnimTask_BlendParticle, 5, 10155, 0, 4, 4, 32108
+ waitforvisualfinish
+ createvisualtask sub_80E0558, 5, 0, 2, 1
+ loopsewithpan SE_W039, 192, 12, 4
+ delay 8
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 0
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 1
+ delay 8
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 2
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 3
+ delay 8
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 0
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 1
+ delay 8
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 2
+ createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 3
+ waitforvisualfinish
+ end
+
+Move_AIR_CUTTER:: @ 81CC93D
+ loadspritegfx 10003
+ loadspritegfx 10138
+ loadspritegfx 10135
+ delay 0
+ monbg 3
+ setalpha 12, 8
+ delay 0
+ createvisualtask sub_80A76F0, 2, 32, -24, 1536, 2, 128
+ waitforvisualfinish
+ playsewithpan SE_W015, 63
+ createsprite gUnknown_83E32AC, ANIM_ATTACKER, 2, 40, -32, 0, 2
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1
+ waitforvisualfinish
+ blendoff
+ clearmonbg 3
+ delay 0
+ end
+
+Move_ODOR_SLEUTH:: @ 81CC99F
+ monbg 1
+ createvisualtask sub_80E3664, 5,
+ delay 24
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4
+ playsewithpan SE_W207, 192
+ delay 6
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ clearmonbg 1
+ delay 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, -1, 16, -1, 0
+ playsewithpan SE_W043, 192
+ end
+
+Move_GRASS_WHISTLE:: @ 81CC9E9
+ loadspritegfx 10072
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 13298
+ waitforvisualfinish
+ createvisualtask sub_80A65E8, 2,
+ waitforvisualfinish
+ panse_1B SE_W320, 192, 63, 2, 0
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 7, 1, 0
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 0
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 1, 0
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0
+ delay 5
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 3, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 1, 0
+ delay 4
+ createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 1, 0
+ delay 4
+ waitforvisualfinish
+ createvisualtask sub_80A66A0, 2,
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 13298
+ waitforvisualfinish
+ end
+
+Move_TICKLE:: @ 81CCADC
+ loadspritegfx 10218
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8
+ playsewithpan SE_W197, 192
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, 0
+ waitforvisualfinish
+ delay 20
+ createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0
+ delay 12
+ createvisualtask sub_80E0558, 3, 1, 6, 2
+ loopsewithpan SE_W039, 63, 8, 8
+ waitforvisualfinish
+ end
+
+Move_WATER_SPOUT:: @ 81CCB48
+ loadspritegfx 10268
+ loadspritegfx 10148
+ monbg 3
+ setalpha 12, 8
+ createvisualtask sub_80ABB28, 5,
+ playsewithpan SE_W029, 192
+ delay 44
+ playsewithpan SE_W291, 192
+ waitforvisualfinish
+ delay 16
+ createvisualtask sub_80AC00C, 5,
+ playsewithpan SE_W057, 63
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SHADOW_PUNCH:: @ 81CCB76
+ loadspritegfx 10135
+ loadspritegfx 10143
+ fadetobg 2
+ waitbgfadein
+ monbg 2
+ setalpha 9, 8
+ createvisualtask sub_8077030, 2, 0, 13
+ playsewithpan SE_W026, 192
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ restorebg
+ waitbgfadein
+ end
+
+Move_EXTRASENSORY:: @ 81CCBD1
+ call gUnknown_81D59BB
+ monbg 3
+ setalpha 12, 8
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1
+ createvisualtask sub_80B3A58, 5, 0
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1
+ createvisualtask sub_80B3A58, 5, 1
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
+ createvisualtask sub_80B3C78, 5, 0
+ createvisualtask sub_80B3A58, 5, 2
+ playsewithpan SE_W043, 192
+ waitforvisualfinish
+ blendoff
+ clearmonbg 3
+ call gUnknown_81D59C7
+ end
+
+Move_AERIAL_ACE:: @ 81CCC39
+ loadspritegfx 10138
+ monbg 1
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5
+ createvisualtask sub_80BAB98, 2, 0, 4, 7, 3
+ createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0
+ playsewithpan SE_W013B, 192
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_IRON_DEFENSE:: @ 81CCCA3
+ loopsewithpan SE_REAPOKE, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, -1, 14, -1, 0
+ waitforvisualfinish
+ end
+
+Move_BLOCK:: @ 81CCCCD
+ loadspritegfx 10250
+ createsprite gUnknown_83FF6EC, ANIM_TARGET, 66,
+ playsewithpan SE_W207, 63
+ end
+
+Move_HOWL:: @ 81CCCDC
+ loadspritegfx 10053
+ createvisualtask sub_80E1704, 2, 0
+ delay 12
+ call gUnknown_81CDB06
+ createvisualtask sub_80DD06C, 2, 0, 3
+ waitforvisualfinish
+ delay 30
+ end
+
+Move_BULK_UP:: @ 81CCCFE
+ loadspritegfx 10086
+ createvisualtask sub_80A84B4, 2,
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ createsprite gUnknown_83E3ED0, ANIM_ATTACKER, 2,
+ loopsewithpan SE_W207, 192, 4, 2
+ waitforvisualfinish
+ end
+
+Move_COVET:: @ 81CCD1C
+ loadspritegfx 10210
+ loadspritegfx 10224
+ createvisualtask sub_80E0558, 5, 0, 2, 0
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20
+ playsewithpan SE_W204, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ loopsewithpan SE_W146, 63, 4, 3
+ end
+
+Move_VOLT_TACKLE:: @ 81CCD79
+ loadspritegfx 10001
+ loadspritegfx 10212
+ loadspritegfx 10213
+ monbg 0
+ setalpha 12, 8
+ createvisualtask sub_80BA7F8, 10, 1, 0, 0, 8, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E621C, ANIM_ATTACKER, 1,
+ playsewithpan SE_W268, 192
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ delay 8
+ createvisualtask sub_80AEA10, 5, 0
+ playsewithpan SE_W085, 192
+ waitforvisualfinish
+ createvisualtask sub_80AEA10, 5, 1
+ playsewithpan SE_W085, 63
+ waitforvisualfinish
+ createvisualtask sub_80AEA10, 5, 2
+ playsewithpan SE_W085, 192
+ waitforvisualfinish
+ createvisualtask sub_80AEA10, 5, 3
+ playsewithpan SE_W085, 63
+ waitforvisualfinish
+ createvisualtask sub_80AEA10, 5, 4
+ playsewithpan SE_W085, 192
+ delay 8
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 1, 16, 16
+ delay 2
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 1, -16, -16
+ delay 8
+ createvisualtask sub_80AE8A0, 5,
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 9, 1
+ playsewithpan SE_W085B, 192
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 0, 16, 16
+ delay 2
+ createsprite gUnknown_83E6204, ANIM_ATTACKER, 2, 0, -16, -16
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1, 0, 8, 0, 0
+ waitforvisualfinish
+ end
+
+Move_WATER_SPORT:: @ 81CCE71
+ loadspritegfx 10268
+ createvisualtask sub_80AC328, 5,
+ delay 8
+ playsewithpan SE_W057, 192
+ delay 44
+ playsewithpan SE_W057, 192
+ delay 44
+ playsewithpan SE_W057, 192
+ delay 44
+ panse_1B SE_W057, 192, 63, 2, 0
+ end
+
+Move_CALM_MIND:: @ 81CCE97
+ loadspritegfx 10203
+ monbg 2
+ createvisualtask sub_80BA83C, 5, 0, 0, 0, 16, 0
+ waitforvisualfinish
+ createvisualtask sub_80BB9B0, 5, 1
+ waitforvisualfinish
+ createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ delay 14
+ createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ delay 14
+ createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ waitforvisualfinish
+ createvisualtask sub_80BB9B0, 5, 0
+ visible 0
+ waitforvisualfinish
+ createvisualtask sub_80BA83C, 5, 0, 0, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg 2
+ end
+
+Move_LEAF_BLADE:: @ 81CCF17
+ loadspritegfx 10063
+ loadspritegfx 10285
+ createvisualtask sub_80A39C0, 5,
+ delay 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ delay 50
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ delay 50
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ waitforvisualfinish
+ monbg 1
+ setalpha 12, 8
+ delay 12
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 18, 1
+ createsprite gUnknown_83E7C80, ANIM_TARGET, 2, 0, 0, 1, 36
+ playsewithpan SE_W043, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_DRAGON_DANCE:: @ 81CCF9A
+ loadspritegfx 10249
+ monbg 0
+ monbgprio_28 0
+ delay 1
+ createvisualtask sub_80B75E0, 5,
+ playsewithpan SE_W100, 192
+ delay 8
+ createvisualtask sub_8076288, 5, 10249, 19456, 14, 0, 3
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 0
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 43
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 85
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 128
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 170
+ createsprite gUnknown_83E7848, ANIM_ATTACKER, 2, 213
+ delay 30
+ playsewithpan SE_W100, 192
+ delay 30
+ playsewithpan SE_W100, 192
+ waitforvisualfinish
+ clearmonbg 0
+ delay 1
+ end
+
+Move_SHOCK_WAVE:: @ 81CD009
+ loadspritegfx 10211
+ loadspritegfx 10212
+ loadspritegfx 10001
+ loadspritegfx 10037
+ monbg 0
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80AE540, 2, 0, 20, 0, 2
+ playsewithpan SE_W268, 192
+ delay 12
+ createsprite gUnknown_83E6290, ANIM_ATTACKER, 2,
+ delay 30
+ createvisualtask sub_80AECE0, 5,
+ delay 12
+ waitforvisualfinish
+ createvisualtask sub_80AEFA0, 5,
+ playsewithpan SE_W161B, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 6, 18, 1
+ createvisualtask sub_80BA7F8, 5, 1, 3, 16, 0, 32767
+ createvisualtask sub_80BA7F8, 5, 4, 0, 16, 16, 0
+ delay 4
+ createvisualtask sub_80BA7F8, 5, 4, 0, 0, 0, 0
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ end
+
+Move_HARDEN:: @ 81CD0AB
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
+ waitforvisualfinish
+ end
+
+Move_BELLY_DRUM:: @ 81CD0C0
+ loadspritegfx 10072
+ loadspritegfx 10193
+ createvisualtask sub_80A65E8, 2,
+ waitforvisualfinish
+ call gUnknown_81CD18D
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 0, 0, 0
+ playsewithpan SE_W187, 192
+ delay 15
+ call gUnknown_81CD172
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 1, 1, 0
+ playsewithpan SE_W187, 192
+ delay 15
+ call gUnknown_81CD18D
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 3, 3, 128
+ playsewithpan SE_W187, 192
+ delay 7
+ call gUnknown_81CD172
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 2, 0, 128
+ playsewithpan SE_W187, 192
+ delay 7
+ call gUnknown_81CD18D
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 1, 1, 0
+ playsewithpan SE_W187, 192
+ delay 7
+ call gUnknown_81CD172
+ createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 0, 3, 0
+ playsewithpan SE_W187, 192
+ waitforvisualfinish
+ createvisualtask sub_80A66A0, 2,
+ waitforvisualfinish
+ end
+
+gUnknown_81CD172:: @ 81CD172
+ createsprite gUnknown_83E38E0, ANIM_ATTACKER, 3, 0
+ createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1
+ return
+
+gUnknown_81CD18D:: @ 81CD18D
+ createsprite gUnknown_83E38E0, ANIM_ATTACKER, 3, 1
+ createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1
+ return
+
+Move_MIND_READER:: @ 81CD1A8
+ loadspritegfx 10189
+ loadspritegfx 10190
+ loadspritegfx 10191
+ monbg 4
+ playsewithpan SE_W109, 63
+ createsprite gUnknown_83FEE5C, ANIM_ATTACKER, 5, 0, 0, 1, 0
+ createsprite gUnknown_83FEE74, ANIM_ATTACKER, 5,
+ delay 40
+ playsewithpan SE_W043, 63
+ createvisualtask sub_80B9BDC, 2, 1, 1, 2, 0, 10, 0
+ call gUnknown_81CD1EF
+ waitforvisualfinish
+ clearmonbg 4
+ end
+
+gUnknown_81CD1EF:: @ 81CD1EF
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 70, 0, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 40, 40, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 10, -60, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, -40, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, 40, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6
+ delay 2
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -30, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 60, 10, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, 60, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, -40, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, -30, 6
+ delay 2
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, 50, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, -40, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 20, -60, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6
+ createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 35, 40, 6
+ delay 2
+ return
+
+Move_ICE_PUNCH:: @ 81CD2E0
+ monbg 3
+ setalpha 12, 8
+ loadspritegfx 10141
+ loadspritegfx 10135
+ loadspritegfx 10143
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 9, 32588
+ delay 20
+ playsewithpan SE_W081, 63
+ createsprite gUnknown_83E6360, ANIM_ATTACKER, 2, 0
+ createsprite gUnknown_83E6360, ANIM_ATTACKER, 2, 64
+ createsprite gUnknown_83E6360, ANIM_ATTACKER, 2, 128
+ createsprite gUnknown_83E6360, ANIM_ATTACKER, 2, 192
+ delay 5
+ createsprite gUnknown_83E6348, ANIM_ATTACKER, 2, 32
+ createsprite gUnknown_83E6348, ANIM_ATTACKER, 2, 96
+ createsprite gUnknown_83E6348, ANIM_ATTACKER, 2, 160
+ createsprite gUnknown_83E6348, ANIM_ATTACKER, 2, 224
+ delay 17
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, -10, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, 1, 1
+ playsewithpan SE_W004, 63
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 3, 1
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D540A
+ delay 5
+ createvisualtask sub_80BA7F8, 10, 4, 2, 9, 0, 32588
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_REST:: @ 81CD3CB
+ playsewithpan SE_W173, 192
+ loadspritegfx 10228
+ createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0
+ delay 20
+ createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0
+ delay 20
+ createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0
+ waitforvisualfinish
+ end
+
+Move_CONFUSION:: @ 81CD40B
+ monbg 3
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1
+ createvisualtask sub_80B9BDC, 2, 2, 0, 2, 0, 8, 32767
+ waitforvisualfinish
+ playsewithpan SE_W048, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 1, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+Move_PSYCHIC:: @ 81CD46C
+ monbg 3
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1
+ createvisualtask sub_80B9BDC, 2, 2, 0, 2, 0, 8, 767
+ waitforvisualfinish
+ loopsewithpan SE_W048, 63, 10, 3
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+Move_FUTURE_SIGHT:: @ 81CD4CF
+ goto gUnknown_81CD4DD
+
+gUnknown_81CD4D4:: @ 81CD4D4
+ waitforvisualfinish
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+gUnknown_81CD4DD:: @ 81CD4DD
+ monbg 2
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ playsewithpan SE_W048, 192
+ createvisualtask sub_80B9BDC, 2, 2, 0, 2, 0, 8, 32767
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ goto gUnknown_81CD4D4
+ monbg 3
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ playsewithpan SE_W048, 63
+ waitplaysewithpan SE_W048, 63, 8
+ createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81CD4D4
+
+Move_THUNDER:: @ 81CD570
+ loadspritegfx 10037
+ fadetobg 11
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -256, 0, 1, -1
+ waitbgfadein
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0
+ delay 16
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ playsewithpan SE_W086, 63
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 16, -36
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 16, -20
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 16, 12
+ delay 20
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 6, -16, -32
+ playsewithpan SE_W086, 63
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 6, -16, -16
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 6, -16, 16
+ playsewithpan SE_W086, 63
+ delay 5
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 24, -32
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 24, -16
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 24, 16
+ delay 30
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 5
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, -32
+ playsewithpan SE_W161B, 63
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, -16
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, 16
+ delay 10
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createvisualtask sub_80ADAD8, 2, 30, 3, 1, 0
+ delay 2
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, 0
+ waitforvisualfinish
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+Move_THUNDER_PUNCH:: @ 81CD6CA
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10037
+ monbg 1
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0
+ waitforvisualfinish
+ playsewithpan SE_W004, 63
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ delay 1
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, -48
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_ATTACKER, 2, 0, -16
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_ATTACKER, 2, 0, 16
+ delay 1
+ playsewithpan SE_W161B, 63
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0
+ delay 20
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_SACRED_FIRE:: @ 81CD793
+ loadspritegfx 10033
+ loadspritegfx 10035
+ loopsewithpan SE_W221, 192, 7, 5
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -32, 0, 50, 5, -2, 0
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, -20, -10, 50, 5, -1, -1
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 0, -16, 50, 5, 0, -1
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 20, -10, 50, 5, 1, -1
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 32, 0, 50, 5, 2, 0
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 20, 10, 50, 5, 1, 1
+ delay 1
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 0, 16, 50, 5, 0, 1
+ delay 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -20, 10, 50, 5, -1, 1
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ waitforvisualfinish
+ playsewithpan SE_W221B, 63
+ createsprite gUnknown_83E5C70, ANIM_TARGET, 2, -16, 0, 70, 16, 0, 1
+ delay 10
+ playsewithpan SE_W221B, 63
+ createsprite gUnknown_83E5C70, ANIM_TARGET, 2, 0, 0, 70, 16, 0, 1
+ delay 10
+ playsewithpan SE_W221B, 63
+ createsprite gUnknown_83E5C70, ANIM_TARGET, 2, 16, 0, 80, 16, 0, 1
+ delay 1
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ waitforvisualfinish
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 1
+ playsewithpan SE_W172B, 63
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, -1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 2, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -2
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 3, 1
+ waitforvisualfinish
+ end
+
+Move_SCRATCH:: @ 81CD97A
+ loadspritegfx 10137
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W010, 63
+ createsprite gUnknown_83FEE00, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_DRAGON_BREATH:: @ 81CD9AC
+ loadspritegfx 10029
+ monbg 3
+ monbgprio_28 1
+ loopsewithpan SE_W172, 192, 7, 7
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createvisualtask sub_80BA7F8, 10, 4, 1, 0, 9, 31
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 21, 1
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gUnknown_83E77A4, ANIM_TARGET, 2, 0, 0, 0, 0, 20
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 4, 1, 9, 0, 31
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_ROAR:: @ 81CDAC0
+ loadspritegfx 10053
+ monbg 0
+ monbgprio_28 0
+ setalpha 8, 8
+ createvisualtask sub_80DD148, 2, 0, 2
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1
+ call gUnknown_81CDB06
+ delay 20
+ createvisualtask sub_80995FC, 5, 1, 2
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ waitforvisualfinish
+ createvisualtask sub_80DD2F4, 5,
+ waitforvisualfinish
+ end
+
+gUnknown_81CDB06:: @ 81CDB06
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1
+ delay 15
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2
+ createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1
+ return
+
+Move_GROWL:: @ 81CDB57
+ loadspritegfx 10053
+ createvisualtask sub_80DD148, 2, 0, 255
+ call gUnknown_81CDB06
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1
+ waitforvisualfinish
+ createvisualtask sub_80DD2F4, 5,
+ waitforvisualfinish
+ end
+
+Move_SNORE:: @ 81CDB98
+ loadspritegfx 10197
+ monbg 2
+ setalpha 8, 8
+ call gUnknown_81CDBB1
+ delay 30
+ call gUnknown_81CDBB1
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+gUnknown_81CDBB1:: @ 81CDBB1
+ playsewithpan SE_W173, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, 0, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0
+ createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0
+ createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0
+ createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0
+ return
+
+Move_LIGHT_SCREEN:: @ 81CDC28
+ loadspritegfx 10070
+ loadspritegfx 10166
+ setalpha 0, 16
+ waitplaysewithpan SE_W115, 192, 15
+ createsprite gUnknown_83E6E10, ANIM_ATTACKER, 1, 40, 0, 10166
+ delay 10
+ call gUnknown_81CDC4F
+ waitforvisualfinish
+ delay 1
+ blendoff
+ end
+
+gUnknown_81CDC4F:: @ 81CDC4F
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 23, 0, 0, 1
+ delay 6
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 31, -8, 0, 1
+ delay 5
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 30, 20, 0, 1
+ delay 7
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 10, -15, 0, 1
+ delay 6
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 20, 10, 0, 1
+ delay 6
+ createsprite gUnknown_83E6ED4, ANIM_ATTACKER, 2, 10, 18, 0, 1
+ return
+
+Move_MIRROR_COAT:: @ 81CDCB4
+ loadspritegfx 10070
+ loadspritegfx 10168
+ setalpha 0, 16
+ createsprite gUnknown_83E6E40, ANIM_ATTACKER, 1, 40, 0, 10168
+ delay 10
+ playsewithpan SE_W115, 192
+ call gUnknown_81CDC4F
+ waitforvisualfinish
+ delay 1
+ blendoff
+ end
+
+Move_REFLECT:: @ 81CDCDA
+ loadspritegfx 10071
+ loadspritegfx 10167
+ setalpha 0, 16
+ waitplaysewithpan SE_W115, 192, 15
+ createsprite gUnknown_83E6E28, ANIM_ATTACKER, 1, 40, 0, 10167
+ delay 20
+ createsprite gUnknown_83E6EA4, ANIM_ATTACKER, 2, 30, 0, 0, 1
+ delay 7
+ createsprite gUnknown_83E6EA4, ANIM_ATTACKER, 2, 19, -12, 0, 1
+ delay 7
+ createsprite gUnknown_83E6EA4, ANIM_ATTACKER, 2, 10, 20, 0, 1
+ waitforvisualfinish
+ delay 1
+ blendoff
+ end
+
+Move_BARRIER:: @ 81CDD2D
+ loadspritegfx 10169
+ setalpha 0, 16
+ waitplaysewithpan SE_W112, 192, 15
+ createsprite gUnknown_83E6E58, ANIM_ATTACKER, 3, 40, 0, 10169
+ waitforvisualfinish
+ delay 1
+ blendoff
+ end
+
+Move_BUBBLE:: @ 81CDD4A
+ loadspritegfx 10146
+ loadspritegfx 10155
+ monbg 1
+ setalpha 12, 8
+ delay 1
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 35, 37, 40, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 10, -37, 30, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 30, 10, 15, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 20, 33, 20, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gUnknown_83E58E0, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ waitforvisualfinish
+ call gUnknown_81D583D
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_SMOG:: @ 81CDE20
+ loadspritegfx 10172
+ monbg 3
+ monbgprio_29
+ setalpha 12, 8
+ loopsewithpan SE_W054, 63, 17, 10
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ call gUnknown_81CDE85
+ delay 120
+ loopsewithpan SE_W092, 63, 18, 2
+ createvisualtask sub_80B9BDC, 2, 4, 2, 2, 0, 12, 26650
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CDE85:: @ 81CDE85
+ createsprite gUnknown_83E64BC, ANIM_ATTACKER, 2, 0, -24, 48, 240, 1, 0
+ delay 7
+ return
+
+Move_FAINT_ATTACK:: @ 81CDE9B
+ loadspritegfx 10135
+ monbg 0
+ fadetobg 1
+ waitbgfadein
+ delay 0
+ playsewithpan SE_W185, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 3
+ createvisualtask sub_80B78E0, 2, 1
+ waitforvisualfinish
+ clearmonbg 0
+ invisible 0
+ delay 1
+ createvisualtask sub_80BC12C, 2,
+ monbg 1
+ setalpha 12, 8
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 1
+ setarg 7, 4096
+ delay 32
+ createvisualtask sub_80B7A80, 2,
+ monbg 0
+ createvisualtask sub_80B79DC, 2, 1
+ waitforvisualfinish
+ clearmonbg 0
+ delay 1
+ restorebg
+ waitbgfadein
+ end
+
+Move_SAND_ATTACK:: @ 81CDF22
+ loadspritegfx 10074
+ monbg 2
+ monbgprio_28 0
+ setalpha 12, 8
+ playsewithpan SE_W028, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2
+ call gUnknown_81CDF72
+ call gUnknown_81CDF72
+ call gUnknown_81CDF72
+ call gUnknown_81CDF72
+ call gUnknown_81CDF72
+ call gUnknown_81CDF72
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+gUnknown_81CDF72:: @ 81CDF72
+ createsprite gUnknown_83E7A58, ANIM_TARGET, 2, 15, 15, 20, 0, 0
+ createsprite gUnknown_83E7A58, ANIM_TARGET, 2, 15, 15, 20, 10, 10
+ createsprite gUnknown_83E7A58, ANIM_TARGET, 2, 15, 15, 20, -10, -10
+ createsprite gUnknown_83E7A58, ANIM_TARGET, 2, 15, 15, 20, 20, 5
+ createsprite gUnknown_83E7A58, ANIM_TARGET, 2, 15, 15, 20, -20, -5
+ delay 2
+ return
+
+Move_MUD_SLAP:: @ 81CDFCA
+ loadspritegfx 10074
+ playsewithpan SE_W028, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2
+ call gUnknown_81CE010
+ call gUnknown_81CE010
+ call gUnknown_81CE010
+ call gUnknown_81CE010
+ call gUnknown_81CE010
+ call gUnknown_81CE010
+ waitforvisualfinish
+ end
+
+gUnknown_81CE010:: @ 81CE010
+ createsprite gUnknown_83E7A7C, ANIM_TARGET, 2, 15, 15, 20, 0, 0
+ createsprite gUnknown_83E7A7C, ANIM_TARGET, 2, 15, 15, 20, 10, 5
+ createsprite gUnknown_83E7A7C, ANIM_TARGET, 2, 15, 15, 20, -10, -5
+ createsprite gUnknown_83E7A7C, ANIM_TARGET, 2, 15, 15, 20, 20, 10
+ createsprite gUnknown_83E7A7C, ANIM_TARGET, 2, 15, 15, 20, -20, -10
+ delay 2
+ return
+
+Move_DRAGON_RAGE:: @ 81CE068
+ loadspritegfx 10029
+ loadspritegfx 10035
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 15, 0, 0, 4
+ waitforvisualfinish
+ createsprite gUnknown_83E7830, ANIM_TARGET, 2, 30, 15, 0, 10, 10
+ waitforvisualfinish
+ loopsewithpan SE_W172B, 63, 11, 3
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 25, 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 66, 1, 5, 0
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 66, 1, -10, -15
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 2, 1, 0, 25
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 66, 1, 15, 5
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 66, 1, -25, 0
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 2, 1, 30, 30
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 2, 1, -27, 25
+ delay 1
+ createsprite gUnknown_83E77D8, ANIM_TARGET, 66, 1, 0, 8
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 66, 0, 0, 4
+ waitforvisualfinish
+ end
+
+Move_RAIN_DANCE:: @ 81CE145
+ loadspritegfx 10115
+ playsewithpan SE_W240, 192
+ createvisualtask sub_80BA7F8, 10, 1921, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80AABC0, 2, 0, 3, 120
+ createvisualtask sub_80AABC0, 2, 0, 3, 120
+ delay 120
+ delay 30
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1921, 2, 4, 0, 0
+ waitforvisualfinish
+ end
+
+Move_BITE:: @ 81CE190
+ loadspritegfx 10139
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W044, 63
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, 0, -32, 0, 0, 819, 10
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, 0, 32, 4, 0, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 7, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 1
+ end
+
+Move_CRUNCH:: @ 81CE1EE
+ loadspritegfx 10139
+ loadspritegfx 10135
+ monbg 1
+ fadetobg 1
+ waitbgfadein
+ setalpha 12, 8
+ playsewithpan SE_W044, 63
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, -32, -32, 1, 819, 819, 10
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, 32, 32, 5, -819, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 7, 5, 2
+ waitforvisualfinish
+ playsewithpan SE_W044, 63
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, 32, -32, 7, -819, 819, 10
+ createsprite gUnknown_83E7930, ANIM_ATTACKER, 2, -32, 32, 3, 819, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 8, 4, 2
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ delay 1
+ restorebg
+ waitbgfadein
+ end
+
+Move_CLAMP:: @ 81CE29E
+ loadspritegfx 10145
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W011, 63
+ createsprite gUnknown_83E7948, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10
+ createsprite gUnknown_83E7948, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_ICE_BEAM:: @ 81CE2FB
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ loadspritegfx 10141
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0
+ waitforvisualfinish
+ createsoundtask mas_80DCF38, 176, -64, 63, 4, 4, 0, 10
+ createsprite gUnknown_83E63A4, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20
+ createsprite gUnknown_83E63A4, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20
+ delay 1
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, 32384
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 25, 1
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ call gUnknown_81CE3FC
+ createsprite gUnknown_83E638C, ANIM_ATTACKER, 2, 20, 0, 0, 0, 11
+ delay 1
+ createsprite gUnknown_83E638C, ANIM_ATTACKER, 2, 20, 0, 0, 0, 11
+ waitforvisualfinish
+ delay 20
+ call gUnknown_81D540A
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, 32384
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81CE3FC:: @ 81CE3FC
+ createsprite gUnknown_83E63A4, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20
+ createsprite gUnknown_83E63A4, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20
+ createsprite gUnknown_83E638C, ANIM_ATTACKER, 2, 20, 0, 0, 0, 11
+ delay 1
+ return
+
+Move_WITHDRAW:: @ 81CE432
+ playsewithpan SE_W029, 192
+ createvisualtask sub_80A70A0, 5,
+ waitforvisualfinish
+ end
+
+Move_AURORA_BEAM:: @ 81CE43F
+ loadspritegfx 10140
+ fadetobg 20
+ waitbgfadein
+ playsewithpan SE_W062, 192
+ setarg 7, 0
+ createvisualtask sub_80AAF60, 10, 130
+ call gUnknown_81CE4C6
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 17, 1
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ setarg 7, 65535
+ createsoundtask mas_80DCF38, 176, -64, 63, 3, 6, 0, 10
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 40, 1
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ call gUnknown_81CE4C6
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ end
+
+gUnknown_81CE4C6:: @ 81CE4C6
+ createsprite gUnknown_83E592C, ANIM_TARGET, 2, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gUnknown_83E592C, ANIM_TARGET, 2, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gUnknown_83E592C, ANIM_TARGET, 2, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gUnknown_83E592C, ANIM_TARGET, 2, 20, 0, 0, 0, 17
+ delay 1
+ return
+
+Move_SOLAR_BEAM:: @ 81CE513
+ loadspritegfx 10147
+ choosetwoturnanim gUnknown_81CE521, gUnknown_81CE61E
+
+gUnknown_81CE51F:: @ 81CE51F
+ waitforvisualfinish
+ end
+
+gUnknown_81CE521:: @ 81CE521
+ monbg 2
+ setalpha 12, 8
+ createvisualtask sub_80B9BDC, 2, 2, 1, 4, 0, 11, 12287
+ playsewithpan SE_W025, 192
+ call gUnknown_81CE54B
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ goto gUnknown_81CE51F
+
+gUnknown_81CE54B:: @ 81CE54B
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 40, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -40, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 0, 40, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 0, -40, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, -20, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 20, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -20, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, 20, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -20, 30, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 20, -30, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -20, -30, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 20, 30, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, 0, 16
+ delay 2
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 0, 16
+ delay 2
+ return
+
+gUnknown_81CE61E:: @ 81CE61E
+ call gUnknown_81D5A07
+ panse_1B SE_W076, 192, 63, 2, 0
+ createvisualtask sub_80A2500, 5,
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 0
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 1
+ delay 4
+ createvisualtask sub_80BA7F8, 10, 4, 1, 0, 10, 1017
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 2
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 65, 1
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 3
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 4
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 5
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 6
+ delay 4
+ call gUnknown_81CE6F0
+ call gUnknown_81CE6F0
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 4, 1, 10, 0, 1017
+ call gUnknown_81D5A41
+ goto gUnknown_81CE51F
+
+gUnknown_81CE6F0:: @ 81CE6F0
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 0
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 1
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 2
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 3
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 4
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 5
+ delay 4
+ createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 6
+ delay 4
+ return
+
+Move_BLIZZARD:: @ 81CE768
+ loadspritegfx 10141
+ monbg 3
+ createvisualtask AnimTask_GetAttackerSide, 2,
+ jumpargeq 7, 1, gUnknown_81CE8ED
+ fadetobg 9
+
+gUnknown_81CE77E:: @ 81CE77E
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 0, 1, -1
+ waitbgfadein
+ waitforvisualfinish
+ panse_1B SE_W059, 192, 63, 2, 0
+ call gUnknown_81CE7B8
+ call gUnknown_81CE7B8
+ playsewithpan SE_W059B, 63
+ waitforvisualfinish
+ call gUnknown_81D548E
+ waitforvisualfinish
+ clearmonbg 3
+ delay 20
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81CE7B8:: @ 81CE7B8
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, 0, 0, 0, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -15, 0, -15, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, -10, 0, -10, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -5, 0, -5, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, 10, 0, 10, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, -20, 0, -20, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -20, 0, -20, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, 15, 0, 15, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -15, 0, -15, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, -20, 0, -20, 80, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E6410, ANIM_ATTACKER, 40, 0, -25, 0, -25, 72, 1
+ createsprite gUnknown_83E6428, ANIM_ATTACKER, 40, 0, 20, 0, 20, 80, 0, 0, 1
+ delay 3
+ return
+
+gUnknown_81CE8ED:: @ 81CE8ED
+ fadetobg 10
+ goto gUnknown_81CE77E
+
+Move_POWDER_SNOW:: @ 81CE8F4
+ loadspritegfx 10141
+ monbg 3
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, 0
+ waitforvisualfinish
+ panse_1B SE_W016, 192, 63, 2, 0
+ call gUnknown_81CE93E
+ call gUnknown_81CE93E
+ playsewithpan SE_W016B, 63
+ waitforvisualfinish
+ waitsound
+ call gUnknown_81D548E
+ waitforvisualfinish
+ clearmonbg 3
+ delay 20
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, 0
+ end
+
+gUnknown_81CE93E:: @ 81CE93E
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, 10, 0, 10, 56, -4, 3, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, -4, 5, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, 15, 0, 15, 56, 4, 4, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, 4, 4, 1
+ delay 3
+ createsprite gUnknown_83E6440, ANIM_ATTACKER, 40, 0, 20, 0, 20, 56, 4, 4, 1
+ delay 3
+ return
+
+Move_HYDRO_PUMP:: @ 81CE9EE
+ loadspritegfx 10149
+ loadspritegfx 10148
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1
+ delay 6
+ panse_1B SE_W056, 192, 63, 2, 0
+ createvisualtask sub_80AB100, 5, 100
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 37, 1
+ call gUnknown_81CEACE
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ call gUnknown_81CEACE
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ call gUnknown_81CEACE
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ call gUnknown_81CEACE
+ call gUnknown_81CEA8D
+ call gUnknown_81CEA8D
+ call gUnknown_81CEACE
+ delay 1
+ delay 1
+ call gUnknown_81CEACE
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CEA8D:: @ 81CEA8D
+ createsprite gUnknown_83E595C, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ createsprite gUnknown_83E595C, ANIM_ATTACKER, 3, 10, 10, 0, -16
+ delay 1
+ createsprite gUnknown_83E595C, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ createsprite gUnknown_83E595C, ANIM_ATTACKER, 3, 10, 10, 0, -16
+ delay 1
+ return
+
+gUnknown_81CEACE:: @ 81CEACE
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 4, 0, 15, 1, 1
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 4, 0, -15, 1, 1
+ return
+
+Move_SIGNAL_BEAM:: @ 81CEAED
+ loadspritegfx 10264
+ loadspritegfx 10265
+ loadspritegfx 10073
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 25, 1
+ delay 6
+ panse_1B SE_W062, 192, 63, 1, 0
+ createvisualtask sub_80AB100, 5, 100
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 25, 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, 31, 8, 961, 8
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ call gUnknown_81CEBB4
+ waitforvisualfinish
+ end
+
+gUnknown_81CEBB4:: @ 81CEBB4
+ createsprite gUnknown_83E598C, ANIM_TARGET, 3, 10, 10, 0, 16
+ createsprite gUnknown_83E59A4, ANIM_TARGET, 3, 10, 10, 0, -16
+ delay 1
+ return
+
+Move_ABSORB:: @ 81CEBD5
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_2A 1
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
+ call gUnknown_81CEC44
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CEC44:: @ 81CEC44
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ delay 4
+ return
+
+Move_MEGA_DRAIN:: @ 81CECED
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_2A 1
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
+ call gUnknown_81CED5C
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, 13293
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CED5C:: @ 81CED5C
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ delay 4
+ return
+
+Move_GIGA_DRAIN:: @ 81CEE7D
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_2A 1
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
+ call gUnknown_81CEEEC
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, 13293
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CEEEC:: @ 81CEEEC
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -40, 35
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 28, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 40, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -32, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -40, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 36, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ delay 4
+ return
+
+Move_LEECH_LIFE:: @ 81CF085
+ loadspritegfx 10161
+ loadspritegfx 10147
+ delay 1
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_2A 1
+ setalpha 12, 8
+ delay 1
+ createsprite gUnknown_83E7278, ANIM_ATTACKER, 2, -20, 15, 12
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ playsewithpan SE_W071, 63
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0
+ waitforvisualfinish
+ call gUnknown_81CEC44
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SYNTHESIS:: @ 81CF107
+ loadspritegfx 10031
+ loadspritegfx 10049
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 16, 19451
+ playsewithpan SE_W025, 192
+ call gUnknown_81D569E
+ waitforvisualfinish
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ end
+
+Move_TOXIC:: @ 81CF131
+ loadspritegfx 10151
+ loadspritegfx 10150
+ call gUnknown_81CF14B
+ call gUnknown_81CF14B
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D575B
+ waitforvisualfinish
+ end
+
+gUnknown_81CF14B:: @ 81CF14B
+ createsprite gUnknown_83E69AC, ANIM_TARGET, 2, -24, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gUnknown_83E69AC, ANIM_TARGET, 2, 8, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gUnknown_83E69AC, ANIM_TARGET, 2, -8, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gUnknown_83E69AC, ANIM_TARGET, 2, 24, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ return
+
+Move_SLUDGE:: @ 81CF1A0
+ loadspritegfx 10150
+ playsewithpan SE_W145C, 192
+ createsprite gUnknown_83E6A20, ANIM_TARGET, 2, 20, 0, 40, 0
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ createvisualtask sub_80B9BDC, 2, 4, 1, 2, 0, 12, 31774
+ call gUnknown_81D575B
+ waitforvisualfinish
+ end
+
+Move_SLUDGE_BOMB:: @ 81CF1E2
+ loadspritegfx 10150
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ call gUnknown_81CF2F2
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1
+ createvisualtask sub_80B9BDC, 2, 4, 1, 2, 0, 12, 31774
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 42, 27, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -27, 44, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 39, -28, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -42, -42, 20
+ playsewithpan SE_W091, 63
+ delay 5
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 0, 40, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -8, -44, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -46, -28, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 46, 9, 20
+ playsewithpan SE_W091, 63
+ delay 5
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 42, 0, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -43, -12, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, 16, -46, 20
+ createsprite gUnknown_83E6A50, ANIM_TARGET, 2, -16, 44, 20
+ playsewithpan SE_W091, 63
+ delay 0
+ waitsound
+ waitforvisualfinish
+ call gUnknown_81D575B
+ waitforvisualfinish
+ end
+
+gUnknown_81CF2F2:: @ 81CF2F2
+ playsewithpan SE_W145C, 192
+ createsprite gUnknown_83E6A20, ANIM_TARGET, 2, 20, 0, 40, 0
+ delay 3
+ return
+
+Move_ACID:: @ 81CF308
+ loadspritegfx 10150
+ monbg 3
+ createsprite gUnknown_83E6A38, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gUnknown_83E6A38, ANIM_TARGET, 2, 20, 0, 40, 1, 24, 0
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gUnknown_83E6A38, ANIM_TARGET, 2, 20, 0, 40, 1, -24, 0
+ playsewithpan SE_W145C, 192
+ delay 15
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1
+ createvisualtask sub_80B9BDC, 2, 20, 2, 2, 0, 12, 31774
+ createsprite gUnknown_83E6A84, ANIM_TARGET, 2, 0, -22, 0, 15, 55
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gUnknown_83E6A84, ANIM_TARGET, 2, -26, -24, 0, 15, 55
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gUnknown_83E6A84, ANIM_TARGET, 2, 15, -27, 0, 15, 50
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gUnknown_83E6A84, ANIM_TARGET, 2, -15, -17, 0, 10, 45
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gUnknown_83E6A84, ANIM_TARGET, 2, 27, -22, 0, 15, 50
+ playsewithpan SE_W145, 63
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_BONEMERANG:: @ 81CF402
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W155, 192
+ createsprite gUnknown_83E7A28, ANIM_ATTACKER, 2,
+ delay 20
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 5, 1
+ delay 17
+ playsewithpan SE_W233, 192
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, -4
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_BONE_CLUB:: @ 81CF456
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W155, 63
+ createsprite gUnknown_83E7A40, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
+ delay 12
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, 0, 10, 0, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_BONE_RUSH:: @ 81CF4B8
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W155, 63
+ createsprite gUnknown_83E7A40, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
+ delay 12
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 5, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SPIKES:: @ 81CF503
+ loadspritegfx 10152
+ monbg 3
+ playsewithpan SE_W026, 192
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 0, 24, 30
+ delay 10
+ playsewithpan SE_W026, 192
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, -24, 24, 30
+ delay 10
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 24, 24, 30
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_MEGAHORN:: @ 81CF55A
+ loadspritegfx 10153
+ loadspritegfx 10135
+ monbg 3
+ playsewithpan SE_W082, 192
+ jumpifcontest gUnknown_81CF631
+ fadetobg 7
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 768, 1, -1
+
+gUnknown_81CF57D:: @ 81CF57D
+ waitbgfadein
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6
+ delay 3
+ createsprite gUnknown_83E7224, ANIM_ATTACKER, 3, -42, 25, 0, 0, 6
+ delay 4
+ playsewithpan SE_W011, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, -4, 1, 12, 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, 32767, 10, 0, 0
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
+ waitforvisualfinish
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81CF631:: @ 81CF631
+ fadetobg 8
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, 2304, 768, 0, -1
+ goto gUnknown_81CF57D
+
+Move_GUST:: @ 81CF648
+ loadspritegfx 10009
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W016, 63
+ createsprite gUnknown_83E6AE8, ANIM_ATTACKER, 2, 0, -16
+ createvisualtask sub_80B194C, 5, 1, 70
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 7, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ playsewithpan SE_W016B, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_WING_ATTACK:: @ 81CF699
+ loadspritegfx 10009
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ loopsewithpan SE_W017, 192, 20, 2
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
+ createvisualtask sub_80B194C, 5, 1, 70
+ createsprite gUnknown_83E6B1C, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20
+ createsprite gUnknown_83E6B1C, ANIM_ATTACKER, 2, 25, 0, 0, 0, 20
+ delay 24
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9
+ delay 17
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1
+ loopsewithpan SE_W003, 63, 5, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_PECK:: @ 81CF736
+ loadspritegfx 10135
+ playsewithpan SE_W030, 63
+ createvisualtask sub_8099A78, 2, 3, -768, 1, 2
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -12, 0, 1, 3
+ waitforvisualfinish
+ end
+
+Move_AEROBLAST:: @ 81CF75D
+ loadspritegfx 10154
+ loadspritegfx 10135
+ monbg 3
+ call gUnknown_81D59CF
+ monbgprio_28 1
+ setalpha 12, 8
+ call gUnknown_81CF7B9
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 50, 1
+ call gUnknown_81CF7B9
+ call gUnknown_81CF7B9
+ call gUnknown_81CF7B9
+ call gUnknown_81CF7B9
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ delay 0
+ call gUnknown_81D59FF
+ end
+
+gUnknown_81CF7B9:: @ 81CF7B9
+ playsewithpan SE_W026, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 0, 0
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 0, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 1, 0
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 1, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 2, 0
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 2, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 3, 0
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 3, 0
+ delay 3
+ return
+
+Move_WATER_GUN:: @ 81CF87A
+ loadspritegfx 10155
+ loadspritegfx 10148
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createsprite gUnknown_83E5A80, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25
+ playsewithpan SE_W145, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 8, 1
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 4, 0, 0, 1, 2
+ createsprite gUnknown_83E5A98, ANIM_ATTACKER, 2, 0, -15, 0, 15, 55
+ playsewithpan SE_W152, 63
+ delay 10
+ createsprite gUnknown_83E5A98, ANIM_ATTACKER, 2, 15, -20, 0, 15, 50
+ playsewithpan SE_W152, 63
+ delay 10
+ createsprite gUnknown_83E5A98, ANIM_ATTACKER, 2, -15, -10, 0, 10, 45
+ playsewithpan SE_W152, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_CRABHAMMER:: @ 81CF907
+ loadspritegfx 10141
+ loadspritegfx 10148
+ monbg 3
+ setalpha 12, 8
+ createsprite gUnknown_83E7C38, ANIM_ATTACKER, 4, 0, 0, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 32429, 10, 0, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4
+ waitforvisualfinish
+ delay 8
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 4
+ waitforvisualfinish
+ loopsewithpan SE_W152, 63, 20, 3
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 8, 1
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 10, 10, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 20, -20, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -15, 15, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 0, 0, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -10, -20, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 16, -8, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, 5, 8, 20, 1
+ delay 4
+ createsprite gUnknown_83E5AB0, ANIM_ATTACKER, 2, -16, 0, 20, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SURF:: @ 81CFA01
+ createvisualtask sub_80AB38C, 2, 0
+ delay 24
+ panse_1B SE_W057, 192, 63, 2, 0
+ waitforvisualfinish
+ end
+
+Move_FLAMETHROWER:: @ 81CFA15
+ loadspritegfx 10029
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1
+ delay 6
+ createvisualtask sub_80AB100, 5, 100
+ panse_1B SE_W053, 192, 63, 2, 0
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ call gUnknown_81CFA8F
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CFA8F:: @ 81CFA8F
+ createsprite gUnknown_83E59D0, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ delay 2
+ createsprite gUnknown_83E59D0, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ delay 2
+ return
+
+Move_SANDSTORM:: @ 81CFAB2
+ loadspritegfx 10261
+ playsewithpan SE_W201, 0
+ createvisualtask AnimTask_LoadSandstormBackground, 5, 0
+ delay 16
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 10, 2304, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 90, 2048, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 50, 2560, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 20, 2304, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 70, 1984, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 0, 2816, 96, 0
+ delay 10
+ createsprite gUnknown_83E7450, ANIM_ATTACKER, 40, 60, 2560, 96, 0
+ end
+
+Move_WHIRLPOOL:: @ 81CFB3A
+ loadspritegfx 10149
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ delay 0
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968
+ playsewithpan SE_W250, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1
+ call gUnknown_81CFB92
+ call gUnknown_81CFB92
+ call gUnknown_81CFB92
+ delay 12
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+gUnknown_81CFB92:: @ 81CFB92
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 1
+ delay 2
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 1
+ delay 2
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 1
+ delay 2
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 1
+ delay 2
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 1
+ delay 2
+ createsprite gUnknown_83E7420, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 1
+ delay 2
+ return
+
+Move_FLY:: @ 81CFC1D
+ loadspritegfx 10156
+ loadspritegfx 10135
+ choosetwoturnanim gUnknown_81CFC2E, gUnknown_81CFC46
+
+gUnknown_81CFC2C:: @ 81CFC2C
+ waitforvisualfinish
+ end
+
+gUnknown_81CFC2E:: @ 81CFC2E
+ playsewithpan SE_W019, 192
+ createsprite gUnknown_83E6BB8, ANIM_ATTACKER, 2, 0, 0, 13, 336
+ goto gUnknown_81CFC2C
+
+gUnknown_81CFC46:: @ 81CFC46
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W104, 192
+ createsprite gUnknown_83E6BD0, ANIM_ATTACKER, 2, 20
+ delay 20
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81CFC2C
+
+Move_BOUNCE:: @ 81CFC87
+ loadspritegfx 10156
+ loadspritegfx 10135
+ choosetwoturnanim gUnknown_81CFC97, gUnknown_81CFCAB
+
+gUnknown_81CFC96:: @ 81CFC96
+ end
+
+gUnknown_81CFC97:: @ 81CFC97
+ playsewithpan SE_W100, 192
+ createsprite gUnknown_83E6CD0, ANIM_ATTACKER, 2, 0, 0
+ goto gUnknown_81CFC96
+
+gUnknown_81CFCAB:: @ 81CFCAB
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E6CFC, ANIM_TARGET, 3,
+ delay 7
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 11, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81CFC96
+
+Move_KARATE_CHOP:: @ 81CFCEA
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ playsewithpan SE_W104, 63
+ createsprite gUnknown_83E66E0, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
+ waitforvisualfinish
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_CROSS_CHOP:: @ 81CFD3C
+ loadspritegfx 10143
+ loadspritegfx 10285
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W025, 63
+ createsprite gUnknown_83E6740, ANIM_ATTACKER, 2, 0, 0, 0
+ createsprite gUnknown_83E6740, ANIM_ATTACKER, 2, 0, 0, 1
+ delay 40
+ playsewithpan SE_W013, 63
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 32767, 10, 0, 10
+ createsprite gUnknown_83E7C80, ANIM_ATTACKER, 3, 0, 0, 1, 20
+ createvisualtask AnimTask_ShakeMon, 5, 1, 7, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_JUMP_KICK:: @ 81CFDA5
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 3
+ createsprite gUnknown_83E66F8, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1
+ playsewithpan SE_W026, 63
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_HI_JUMP_KICK:: @ 81CFE02
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 0, 8
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 3
+ delay 2
+ createsprite gUnknown_83E66F8, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1
+ playsewithpan SE_W026, 63
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 11, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_DOUBLE_KICK:: @ 81CFE98
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createsprite gUnknown_83E6728, ANIM_ATTACKER, 3, 1, 20, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_TRIPLE_KICK:: @ 81CFECB
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W233B, 63
+ jumpifmoveturn 0, gUnknown_81CFEF0
+ jumpifmoveturn 1, gUnknown_81CFF26
+ goto gUnknown_81CFF5C
+
+gUnknown_81CFEEB:: @ 81CFEEB
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81CFEF0:: @ 81CFEF0
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, -16, -8, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ goto gUnknown_81CFEEB
+
+gUnknown_81CFF26:: @ 81CFF26
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 8, 8, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ goto gUnknown_81CFEEB
+
+gUnknown_81CFF5C:: @ 81CFF5C
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ goto gUnknown_81CFEEB
+
+Move_DYNAMIC_PUNCH:: @ 81CFF92
+ loadspritegfx 10143
+ loadspritegfx 10135
+ loadspritegfx 10198
+ loadspritegfx 10007
+ delay 1
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W233B, 63
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1
+ delay 1
+ waitsound
+ playsewithpan SE_W120, 63
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 5, 0, 28, 1
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_COUNTER:: @ 81D005A
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 3
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4
+ playsewithpan SE_W233, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 25, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -15, 18, 8, 1, 0
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -4, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 0, -4, 8, 1, 0
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 15, 9, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 15, 9, 8, 1, 0
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_VITAL_THROW:: @ 81D0129
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W233, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 1, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4
+ waitforvisualfinish
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7
+ delay 11
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 10
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_ROCK_SMASH:: @ 81D01A4
+ loadspritegfx 10058
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg 3
+ setalpha 12, 8
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 8, 1, 0
+ playsewithpan SE_W233B, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1
+ waitforvisualfinish
+ playsewithpan SE_W088, 63
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, 0, 20, 24, 14, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 5, 0, -20, 24, 14, 1
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, 5, 20, -24, 14, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, -5, 0, -20, -24, 14, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, -5, 30, 18, 8, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, 0, 30, -18, 8, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, 0, -30, 18, 8, 2
+ createsprite gUnknown_83E73CC, ANIM_ATTACKER, 2, 0, 0, -30, -18, 8, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 7, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_SUBMISSION:: @ 81D029C
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W104, 192
+ waitplaysewithpan SE_W004, 63, 10
+ waitplaysewithpan SE_W104, 192, 20
+ waitplaysewithpan SE_W004, 63, 30
+ waitplaysewithpan SE_W104, 192, 40
+ waitplaysewithpan SE_W004, 63, 50
+ waitplaysewithpan SE_W104, 192, 60
+ waitplaysewithpan SE_W004, 63, 70
+ waitplaysewithpan SE_W104, 192, 80
+ waitplaysewithpan SE_W004, 63, 90
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4
+ call gUnknown_81D030B
+ call gUnknown_81D030B
+ call gUnknown_81D030B
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D030B:: @ 81D030B
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -12, 1, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, 8, 1, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, 0, 1, 1
+ delay 8
+ return
+
+Move_SUNNY_DAY:: @ 81D033F
+ loadspritegfx 10157
+ monbg 2
+ setalpha 13, 3
+ createvisualtask sub_80BA7F8, 10, 1921, 1, 0, 6, 32767
+ waitforvisualfinish
+ panse_26 SE_W080, 192, 63, 1, 0
+ call gUnknown_81D038B
+ call gUnknown_81D038B
+ call gUnknown_81D038B
+ call gUnknown_81D038B
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1921, 1, 6, 0, 32767
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+gUnknown_81D038B:: @ 81D038B
+ createsprite gUnknown_83E5D18, ANIM_ATTACKER, 40,
+ delay 6
+ return
+
+Move_COTTON_SPORE:: @ 81D0395
+ loadspritegfx 10158
+ monbg 3
+ monbgprio_28 1
+ loopsewithpan SE_W077, 63, 18, 10
+ call gUnknown_81D03B5
+ call gUnknown_81D03B5
+ call gUnknown_81D03B5
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+gUnknown_81D03B5:: @ 81D03B5
+ createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
+ delay 12
+ createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
+ delay 12
+ createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
+ delay 12
+ return
+
+Move_SPORE:: @ 81D03EF
+ loadspritegfx 10158
+ monbg 3
+ setalpha 12, 8
+ createvisualtask sub_80A28C4, 2,
+ loopsewithpan SE_W077, 63, 16, 11
+ call gUnknown_81D041A
+ call gUnknown_81D041A
+ call gUnknown_81D041A
+ waitforvisualfinish
+ delay 1
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D041A:: @ 81D041A
+ createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -20, 85, 80, 1
+ delay 12
+ createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -10, 170, 80, 1
+ delay 12
+ createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -15, 0, 80, 1
+ delay 12
+ return
+
+Move_PETAL_DANCE:: @ 81D0454
+ loadspritegfx 10159
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W080, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 6, 3
+ createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 16, -24, 8, 100
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -16, -24, 8, 100
+ delay 15
+ createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 32, -24, 8, 100
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -32, -24, 8, 100
+ delay 15
+ createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 24, -24, 8, 100
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -24, -24, 8, 100
+ delay 30
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 16, -24, 0, 100
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -16, -24, 0, 100
+ delay 30
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 20, -16, 14, 80
+ createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -20, -14, 16, 80
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5
+ delay 3
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, 1, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 8
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_RAZOR_LEAF:: @ 81D058C
+ loadspritegfx 10063
+ loadspritegfx 10160
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ delay 1
+ loopsewithpan SE_W077, 192, 10, 5
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -2, 10
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -1, 15
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -4, -4, 7
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 3, -3, 11
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -6, 8
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -1, 12
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -4, 13
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 4, -5, 7
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -6, 11
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -5, 8
+ delay 60
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1
+ createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1
+ delay 20
+ playsewithpan SE_W013, 63
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_ANCIENT_POWER:: @ 81D0693
+ loadspritegfx 10058
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 4, 1, 10, 1
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 20, 32, -48, 50, 2
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 0, 32, -38, 25, 5
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 32, 32, -28, 40, 3
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, -20, 32, -48, 50, 2
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 20, 32, -28, 60, 1
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 0, 32, -28, 30, 4
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 30, 1
+ playsewithpan SE_W082, 192
+ delay 10
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 15, 32, -48, 25, 5
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, -10, 32, -42, 30, 4
+ delay 10
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, 0, 32, -42, 25, 5
+ createsprite gUnknown_83E74C0, ANIM_ATTACKER, 2, -25, 32, -48, 30, 4
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 0, 0, 4
+ delay 3
+ playsewithpan SE_W120, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_OCTAZOOKA:: @ 81D07BB
+ loadspritegfx 10030
+ loadspritegfx 10017
+ playsewithpan SE_W025B, 192
+ createsprite gUnknown_83E3674, ANIM_TARGET, 2, 20, 0, 0, 0, 20, 0
+ waitforvisualfinish
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E36A8, ANIM_TARGET, 2, 8, 8, 1, 0
+ delay 2
+ createsprite gUnknown_83E36A8, ANIM_TARGET, 2, -8, -8, 1, 0
+ delay 2
+ createsprite gUnknown_83E36A8, ANIM_TARGET, 2, 8, -8, 1, 0
+ delay 2
+ createsprite gUnknown_83E36A8, ANIM_TARGET, 2, -8, 8, 1, 0
+ waitforvisualfinish
+ end
+
+Move_MIST:: @ 81D0821
+ loadspritegfx 10144
+ monbg 2
+ setalpha 12, 8
+ loopsewithpan SE_W054, 192, 20, 15
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ call gUnknown_81D086C
+ delay 32
+ createvisualtask sub_80B9BDC, 2, 10, 8, 2, 0, 14, 32767
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+
+gUnknown_81D086C:: @ 81D086C
+ createsprite gUnknown_83E64A4, ANIM_ATTACKER, 2, 0, -24, 48, 240, 0, 1
+ delay 7
+ return
+
+Move_HAZE:: @ 81D0882
+ waitforvisualfinish
+ playsewithpan SE_W114, 0
+ createvisualtask AnimTask_Haze1, 5,
+ delay 30
+ createvisualtask sub_80BA7F8, 10, 1920, 2, 0, 16, 0
+ delay 90
+ createvisualtask sub_80BA7F8, 10, 1920, 1, 16, 0, 0
+ end
+
+Move_FIRE_PUNCH:: @ 81D08B5
+ loadspritegfx 10143
+ loadspritegfx 10029
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 9, 31
+ createsprite gUnknown_83E5BE0, ANIM_TARGET, 1, 0
+ createsprite gUnknown_83E5BE0, ANIM_TARGET, 1, 64
+ createsprite gUnknown_83E5BE0, ANIM_TARGET, 1, 128
+ createsprite gUnknown_83E5BE0, ANIM_TARGET, 1, 196
+ playsewithpan SE_W172, 63
+ waitforvisualfinish
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1
+ call gUnknown_81D0950
+ delay 4
+ playsewithpan SE_W007, 63
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 4, 0, 9, 0, 31
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D0950:: @ 81D0950
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, 192, 176, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, -192, 240, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, 192, -160, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, -192, -112, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, 160, 48, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, -224, -32, 40
+ createsprite gUnknown_83E5BF8, ANIM_TARGET, 1, 0, 10, 112, -128, 40
+ return
+
+Move_LEER:: @ 81D09C8
+ loadspritegfx 10027
+ monbg 0
+ monbgprio_28 0
+ setalpha 8, 8
+ playsewithpan SE_W043, 192
+ createsprite gUnknown_83FEF30, ANIM_ATTACKER, 2, 24, -12
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1
+ waitforvisualfinish
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg 0
+ blendoff
+ delay 1
+ waitforvisualfinish
+ end
+
+Move_DREAM_EATER:: @ 81D0A1F
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg 3
+ monbgprio_2A 1
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ playsewithpan SE_W107, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1
+ waitforvisualfinish
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 2, 25, 1
+ call gUnknown_81D0A89
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+gUnknown_81D0A89:: @ 81D0A89
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -40, 35
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 28, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 40, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -32, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -40, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 36, 33
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ delay 4
+ return
+
+Move_POISON_GAS:: @ 81D0C22
+ loadspritegfx 10172
+ loadspritegfx 10150
+ delay 0
+ monbg 3
+ monbgprio_29
+ setalpha 12, 8
+ delay 0
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gUnknown_83E6514, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 40
+ loopsewithpan SE_W054, 63, 28, 6
+ createvisualtask sub_80B9BDC, 2, 4, 6, 2, 0, 12, 26650
+ waitforvisualfinish
+ blendoff
+ clearmonbg 3
+ delay 0
+ end
+
+Move_BIND:: @ 81D0D00
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, 0
+ goto gUnknown_81D0D16
+
+gUnknown_81D0D16:: @ 81D0D16
+ playsewithpan SE_W020, 63
+ call gUnknown_81D0D26
+ call gUnknown_81D0D26
+ waitforvisualfinish
+ end
+
+gUnknown_81D0D26:: @ 81D0D26
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, 1, 0
+ delay 16
+ return
+
+Move_WRAP:: @ 81D0D3A
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 6, 4, 2, 4
+ goto gUnknown_81D0D16
+
+Move_PSYBEAM:: @ 81D0D50
+ loadspritegfx 10163
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ createsoundtask mas_80DCF38, 193, -64, 63, 3, 4, 0, 15
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1
+ createvisualtask sub_80B9BDC, 2, 4, 2, 2, 0, 12, 32351
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ call gUnknown_81D0DD4
+ waitforvisualfinish
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+gUnknown_81D0DD4:: @ 81D0DD4
+ createsprite gUnknown_83E6EEC, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
+ delay 4
+ return
+
+Move_HYPNOSIS:: @ 81D0DEA
+ loadspritegfx 10163
+ call gUnknown_81D59BB
+ call gUnknown_81D0E1D
+ call gUnknown_81D0E1D
+ call gUnknown_81D0E1D
+ createvisualtask sub_80B9BDC, 2, 4, 2, 2, 0, 12, 32351
+ waitforvisualfinish
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+gUnknown_81D0E1D:: @ 81D0E1D
+ playsewithpan SE_W048, 192
+ createsprite gUnknown_83E6EEC, ANIM_TARGET, 2, 0, 8, 0, 8, 27, 0
+ createsprite gUnknown_83E6EEC, ANIM_TARGET, 2, 16, -8, 0, -8, 27, 0
+ delay 6
+ return
+
+Move_PSYWAVE:: @ 81D0E4A
+ loadspritegfx 10165
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ createvisualtask sub_80AB100, 5, 100
+ createsoundtask mas_80DCF38, 196, -64, 63, 2, 9, 0, 10
+ call gUnknown_81D0EAD
+ call gUnknown_81D0EAD
+ createvisualtask sub_80B9BDC, 2, 4, 1, 4, 0, 12, 32351
+ call gUnknown_81D0EAD
+ call gUnknown_81D0EAD
+ call gUnknown_81D0EAD
+ call gUnknown_81D0EAD
+ waitforvisualfinish
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+gUnknown_81D0EAD:: @ 81D0EAD
+ createsprite gUnknown_83E59E8, ANIM_TARGET, 3, 10, 10, 0, 16
+ delay 4
+ createsprite gUnknown_83E59E8, ANIM_TARGET, 3, 10, 10, 0, 16
+ delay 4
+ return
+
+Move_ZAP_CANNON:: @ 81D0ED0
+ loadspritegfx 10171
+ loadspritegfx 10011
+ playsewithpan SE_W086, 192
+ createsprite gUnknown_83E5FDC, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 16, 30, 192, 40, 2
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gUnknown_83E6008, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1
+ delay 15
+ waitplaysewithpan SE_W085B, 63, 19
+ call gUnknown_81D58D4
+ waitforvisualfinish
+ end
+
+Move_STEEL_WING:: @ 81D0FB5
+ loadspritegfx 10009
+ loadspritegfx 10135
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
+ waitforvisualfinish
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ loopsewithpan SE_W017, 192, 20, 2
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
+ createvisualtask sub_80B194C, 5, 1, 70
+ createsprite gUnknown_83E6B1C, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20
+ createsprite gUnknown_83E6B1C, ANIM_ATTACKER, 2, 25, 0, 0, 0, 20
+ delay 24
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9
+ delay 17
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_IRON_TAIL:: @ 81D1064
+ loadspritegfx 10135
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0
+ waitforvisualfinish
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+Move_POISON_TAIL:: @ 81D10C2
+ loadspritegfx 10135
+ loadspritegfx 10150
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 1, 1, 23768
+ waitforvisualfinish
+ monbg 1
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1
+ clearmonbg 1
+ blendoff
+ call gUnknown_81D575B
+ waitforvisualfinish
+ end
+
+Move_METAL_CLAW:: @ 81D1128
+ loadspritegfx 10039
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 2
+ playsewithpan SE_W013, 63
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, -10, 0
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, 10, 0
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
+ delay 8
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 2
+ playsewithpan SE_W013, 63
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, -10, 1
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, 10, 1
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
+ waitforvisualfinish
+ end
+
+Move_NIGHT_SHADE:: @ 81D11BB
+ monbg 0
+ monbgprio_28 0
+ playsewithpan SE_W060, 192
+ fadetobg 2
+ waitbgfadein
+ delay 10
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80B54E8, 5, 85
+ delay 70
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1
+ createvisualtask sub_80B9BDC, 2, 4, 0, 2, 0, 13, 0
+ waitforvisualfinish
+ clearmonbg 0
+ delay 1
+ restorebg
+ waitbgfadein
+ end
+
+Move_EGG_BOMB:: @ 81D1203
+ loadspritegfx 10198
+ loadspritegfx 10175
+ playsewithpan SE_W039, 192
+ createsprite gUnknown_83E3D00, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 16, 1
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 6, 5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 4, -16, -15, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 16, -5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 4, -12, 18, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 0, 5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ waitforvisualfinish
+ end
+
+Move_SHADOW_BALL:: @ 81D129D
+ loadspritegfx 10176
+ fadetobg 2
+ waitbgfadein
+ delay 15
+ createsoundtask mas_80DCF38, 161, -64, 63, 5, 5, 0, 5
+ createsprite gShadowBallSpriteTemplate, ANIM_TARGET, 2, 16, 16, 8
+ waitforvisualfinish
+ playsewithpan SE_W028, 63
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 8, 1
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ end
+
+Move_LICK:: @ 81D12E0
+ loadspritegfx 10177
+ delay 15
+ playsewithpan SE_W122, 63
+ createsprite gUnknown_83E763C, ANIM_TARGET, 2, 0, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 16, 1
+ waitforvisualfinish
+ end
+
+Move_FOCUS_ENERGY:: @ 81D1307
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
+ call gUnknown_81CB267
+ delay 8
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 11, 32767
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
+ call gUnknown_81CB267
+ delay 8
+ call gUnknown_81CB267
+ waitforvisualfinish
+ end
+
+Move_BIDE:: @ 81D1347
+ choosetwoturnanim gUnknown_81D1351, gUnknown_81D137D
+ end
+
+gUnknown_81D1351:: @ 81D1351
+ loopsewithpan SE_W036, 192, 9, 2
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81D137D:: @ 81D137D
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ loopsewithpan SE_W036, 192, 9, 2
+ createvisualtask sub_80BA7F8, 10, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 12, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 16, 1
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 18, -8, 1, 1
+ delay 5
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -18, 8, 1, 1
+ delay 5
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -8, -5, 1, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 2, 2, 11, 0, 31
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_STRING_SHOT:: @ 81D1446
+ loadspritegfx 10179
+ loadspritegfx 10180
+ monbg 3
+ delay 0
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0
+ waitforvisualfinish
+ loopsewithpan SE_W081, 192, 9, 6
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ call gUnknown_81D1504
+ waitforvisualfinish
+ playsewithpan SE_W081B, 63
+ createsprite gUnknown_83E72A8, ANIM_TARGET, 2, 0, 10
+ delay 4
+ createsprite gUnknown_83E72A8, ANIM_TARGET, 2, 0, -2
+ delay 4
+ createsprite gUnknown_83E72A8, ANIM_TARGET, 2, 0, 22
+ waitforvisualfinish
+ clearmonbg 3
+ delay 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0
+ end
+
+gUnknown_81D1504:: @ 81D1504
+ createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 1
+ delay 1
+ return
+
+Move_SPIDER_WEB:: @ 81D1518
+ loadspritegfx 10181
+ loadspritegfx 10180
+ monbg 3
+ delay 0
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0
+ waitforvisualfinish
+ monbgprio_28 1
+ loopsewithpan SE_W081, 192, 9, 6
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ call gUnknown_81D15A5
+ waitforvisualfinish
+ playsewithpan SE_W081B, 63
+ createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2,
+ waitforvisualfinish
+ clearmonbg 3
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0
+ end
+
+gUnknown_81D15A5:: @ 81D15A5
+ createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 0
+ delay 1
+ return
+
+Move_RAZOR_WIND:: @ 81D15B9
+ choosetwoturnanim gUnknown_81D15C4, gUnknown_81D1614
+
+gUnknown_81D15C2:: @ 81D15C2
+ waitforvisualfinish
+ end
+
+gUnknown_81D15C4:: @ 81D15C4
+ loadspritegfx 10009
+ playsewithpan SE_W016, 192
+ createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40
+ createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40
+ createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40
+ waitforvisualfinish
+ playsewithpan SE_W016B, 192
+ goto gUnknown_81D15C2
+
+gUnknown_81D1614:: @ 81D1614
+ loadspritegfx 10154
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, 8, 0, 0, 22, 2, 1
+ delay 2
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, -8, 16, 14, 22, 1, 1
+ delay 2
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E6B4C, ANIM_ATTACKER, 2, 14, 12, -16, -14, 22, 0, 1
+ delay 17
+ playsewithpan SE_W013, 63
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 10, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ goto gUnknown_81D15C2
+
+Move_DISABLE:: @ 81D169F
+ loadspritegfx 10071
+ monbg 1
+ monbgprio_28 1
+ setalpha 8, 8
+ playsewithpan SE_W197, 192
+ createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 24, -16
+ waitforvisualfinish
+ createvisualtask sub_80A7FB0, 5,
+ loopsewithpan SE_W020, 63, 15, 4
+ waitforvisualfinish
+ delay 1
+ clearmonbg 1
+ blendoff
+ end
+
+Move_RECOVER:: @ 81D16CD
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg 2
+ setalpha 12, 8
+ loopsewithpan SE_W025, 192, 13, 3
+ createvisualtask sub_80B9BDC, 2, 2, 0, 6, 0, 11, 12287
+ call gUnknown_81D170D
+ call gUnknown_81D170D
+ call gUnknown_81D170D
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ delay 1
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ end
+
+gUnknown_81D170D:: @ 81D170D
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, -10, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -35, -10, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 15, -40, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -10, -32, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 25, -20, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -20, 13
+ delay 3
+ createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 5, -40, 13
+ delay 3
+ return
+
+Move_MIMIC:: @ 81D1777
+ loadspritegfx 10147
+ monbg_22 3
+ setalpha 11, 5
+ panse_1B SE_W107, 63, 192, 253, 0
+ createvisualtask sub_80A2F0C, 5, 128, 24
+ delay 15
+ createsprite gUnknown_83E2D54, ANIM_TARGET, 2, -12, 24
+ delay 10
+ setarg 7, 65535
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80B9BDC, 2, 2, 0, 2, 0, 11, 32767
+ waitforvisualfinish
+ clearmonbg_23 3
+ blendoff
+ end
+
+Move_CONSTRICT:: @ 81D17C1
+ loadspritegfx 10186
+ loopsewithpan SE_W010, 63, 6, 4
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 4, 0, 16, 0, 2
+ delay 7
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 3, 0, 0, 0, 2
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 2, 0, 8, 1, 2
+ delay 7
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 3, 0, -8, 1, 2
+ delay 8
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1
+ delay 20
+ playsewithpan SE_W020, 63
+ setarg 7, 65535
+ waitforvisualfinish
+ end
+
+Move_CURSE:: @ 81D1829
+ choosetwoturnanim gUnknown_81D1832, gUnknown_81D18AF
+
+gUnknown_81D1832:: @ 81D1832
+ loadspritegfx 10199
+ loadspritegfx 10200
+ monbg 2
+ createvisualtask sub_80B63B4, 5,
+ waitforvisualfinish
+ delay 20
+ createsprite gUnknown_83E7680, ANIM_ATTACKER, 2,
+ delay 60
+ call gUnknown_81D1899
+ delay 41
+ call gUnknown_81D1899
+ delay 41
+ call gUnknown_81D1899
+ waitforvisualfinish
+ clearmonbg 2
+ delay 1
+ monbg 3
+ playsewithpan SE_W171, 63
+ createsprite gUnknown_83E7698, ANIM_TARGET, 2,
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+gUnknown_81D1899:: @ 81D1899
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 4, 0, 10, 0
+ playsewithpan SE_W020, 192
+ return
+
+gUnknown_81D18AF:: @ 81D18AF
+ createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, 0
+ waitforvisualfinish
+ delay 10
+ call gUnknown_81D18CA
+ waitforvisualfinish
+ end
+
+gUnknown_81D18CA:: @ 81D18CA
+ playsewithpan SE_W082, 192
+ createvisualtask sub_80BACEC, 5,
+ createvisualtask sub_80B9BDC, 5, 2, 4, 2, 0, 10, 31
+ return
+
+Move_SOFT_BOILED:: @ 81D18E9
+ loadspritegfx 10202
+ loadspritegfx 10203
+ loadspritegfx 10031
+ monbg 2
+ playsewithpan SE_W039, 192
+ createvisualtask AnimTask_ShakeMon, 2, 0, 0, 2, 6, 1
+ createsprite gUnknown_83E4028, ANIM_ATTACKER, 4, 0, 16, 0
+ createsprite gUnknown_83E4028, ANIM_ATTACKER, 4, 0, 16, 1
+ delay 120
+ delay 7
+ playsewithpan SE_W030, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 31, 16, 0, 1
+ delay 8
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 31, 16, 0, 1
+ delay 60
+ setarg 7, 65535
+ waitforvisualfinish
+ clearmonbg 2
+ call gUnknown_81D5712
+ end
+
+Move_HEAL_BELL:: @ 81D196B
+ loadspritegfx 10205
+ loadspritegfx 10206
+ loadspritegfx 10203
+ createvisualtask sub_80BA7F8, 10, 10, 0, 0, 10, 32767
+ waitforvisualfinish
+ createvisualtask sub_80A96B4, 5,
+ createsprite gUnknown_83E41B0, ANIM_ATTACKER, 2, 0, -24, 0, 1
+ delay 12
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 48, -18, 35, 0, 0
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -48, 20, 30, 1, 1
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -38, -29, 30, 2, 2
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 36, 18, 30, 3, 3
+ call gUnknown_81D1B2F
+ delay 33
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 19, 26, 35, 4, 4
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -34, -12, 30, 5, 5
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 41, -20, 34, 6, 2
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -15, 26, 32, 7, 0
+ call gUnknown_81D1B2F
+ delay 33
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -48, 18, 31, 0, 2
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 48, -20, 30, 2, 5
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 38, 29, 33, 4, 3
+ createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -36, -18, 30, 6, 1
+ call gUnknown_81D1B2F
+ waitforvisualfinish
+ createvisualtask sub_80A9760, 5,
+ waitforvisualfinish
+ unloadspritegfx 10205
+ unloadspritegfx 10206
+ unloadspritegfx 10203
+ loadspritegfx 10049
+ playsewithpan SE_W234, 192
+ createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1
+ delay 8
+ createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1
+ waitforvisualfinish
+ unloadspritegfx 10049
+ loadspritegfx 10203
+ playsewithpan SE_REAPOKE, 192
+ createvisualtask sub_80BA83C, 10, 4, 3, 10, 0, 31500
+ createvisualtask sub_80BA7F8, 10, 10, 3, 10, 0, 32767
+ createsprite gUnknown_83E40E0, ANIM_ATTACKER, 16, 0, 0, 0, 1
+ end
+
+gUnknown_81D1B2F:: @ 81D1B2F
+ createvisualtask sub_80BA83C, 10, 4, 3, 8, 0, 31500
+ createvisualtask sub_80BA7F8, 10, 10, 3, 2, 10, 32767
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 40, 0, -24, 0, 1
+ playsewithpan SE_W215, 192
+ return
+
+Move_FAKE_OUT:: @ 81D1B65
+ playsewithpan SE_W260, 0
+ createvisualtask sub_80A98B0, 5,
+ waitforvisualfinish
+ playsewithpan SE_W166, 63
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1
+ createvisualtask sub_80A9A20, 3,
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 32767
+ end
+
+Move_SCARY_FACE:: @ 81D1BA0
+ loadspritegfx 10218
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, 0
+ playsewithpan SE_W060, 192
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80A9F10, 5,
+ delay 13
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8
+ createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8
+ waitforvisualfinish
+ createvisualtask sub_80ADAD8, 3, 20, 1, 0
+ playsewithpan SE_W081B, 63
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, 0
+ waitforvisualfinish
+ end
+
+Move_SWEET_KISS:: @ 81D1C03
+ loadspritegfx 10216
+ loadspritegfx 10220
+ createsprite gUnknown_83E4320, ANIM_TARGET, 2, 16, -48
+ playsewithpan SE_W215, 63
+ delay 23
+ playsewithpan SE_W215, 63
+ delay 23
+ playsewithpan SE_W215, 63
+ waitforvisualfinish
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 160, -30
+ playsewithpan SE_W213, 63
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -256, -42
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 128, -14
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, 416, -38
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -128, -22
+ createsprite gUnknown_83E4230, ANIM_TARGET, 3, -384, -31
+ end
+
+Move_LOVELY_KISS:: @ 81D1C6C
+ loadspritegfx 10219
+ loadspritegfx 10221
+ createsprite gUnknown_83E4368, ANIM_TARGET, 2, 0, -24
+ playsewithpan SE_W060B, 63
+ waitforvisualfinish
+ playsewithpan SE_W213, 63
+ createsprite gUnknown_83E4338, ANIM_TARGET, 3, -256, -42
+ createsprite gUnknown_83E4338, ANIM_TARGET, 3, 128, -14
+ createsprite gUnknown_83E4338, ANIM_TARGET, 3, 416, -38
+ createsprite gUnknown_83E4338, ANIM_TARGET, 3, -128, -22
+ end
+
+Move_FURY_SWIPES:: @ 81D1CB3
+ loadspritegfx 10222
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 5
+ delay 4
+ playsewithpan SE_W010, 63
+ createsprite gUnknown_83E43B0, ANIM_TARGET, 2, 16, 0, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 5, 1
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_TARGET, 2, 5, 5
+ delay 4
+ playsewithpan SE_W010, 63
+ createsprite gUnknown_83E43B0, ANIM_TARGET, 2, -16, 0, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1
+ end
+
+Move_INGRAIN:: @ 81D1D17
+ loadspritegfx 10223
+ loadspritegfx 10147
+ createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120
+ playsewithpan SE_W010, 192
+ delay 40
+ createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30
+ delay 5
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30
+ playsewithpan SE_W145C, 192
+ delay 5
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18
+ playsewithpan SE_W145C, 192
+ delay 10
+ waitforvisualfinish
+ end
+
+Move_PRESENT:: @ 81D1DC8
+ loadspritegfx 10224
+ createvisualtask sub_80DEAF0, 2,
+ createsprite gUnknown_83E2E88, ANIM_TARGET, 2, 0, -5, 10, 2, -1
+ playsewithpan SE_W039, 192
+ delay 14
+ playsewithpan SE_W145B, 192
+ delay 14
+ playsewithpan SE_W145B, 0
+ delay 20
+ playsewithpan SE_W145B, 63
+ waitforvisualfinish
+ jumpargeq 7, 0, gUnknown_81D1E0B
+ jumpargeq 7, 1, gUnknown_81D1E76
+ end
+
+gUnknown_81D1E0B:: @ 81D1E0B
+ loadspritegfx 10198
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 16, 16, 1, 1
+ end
+
+gUnknown_81D1E76:: @ 81D1E76
+ loadspritegfx 10195
+ loadspritegfx 10031
+ playsewithpan SE_W234, 63
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -16, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 16, 32, -3, -1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 32, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -32, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 0, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -8, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -8, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 24, 32, -3, 1
+ delay 3
+ createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -24, 32, -3, 1
+ waitforvisualfinish
+ waitsound
+ call gUnknown_81D5712
+ end
+
+Move_BATON_PASS:: @ 81D1F1F
+ loadspritegfx 10226
+ playsewithpan SE_W226, 192
+ createvisualtask sub_80B9BDC, 2, 31, 1, 2, 0, 11, 31455
+ createsprite gUnknown_83FF150, ANIM_ATTACKER, 2,
+ end
+
+Move_PERISH_SONG:: @ 81D1F41
+ loadspritegfx 10206
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 0, 0, 0
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 1, 1, 16
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 2, 1, 32
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 3, 2, 48
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 4, 2, 64
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 5, 0, 80
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 6, 0, 96
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 7, 1, 112
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 8, 2, 128
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 9, 0, 144
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 10, 2, 160
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 11, 0, 176
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 12, 1, 192
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 13, 3, 208
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 14, 3, 224
+ createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 15, 0, 240
+ createsprite gUnknown_83E449C, ANIM_ATTACKER, 4, 15, 0, 0
+ delay 20
+ panse_1B SE_W195, 192, 63, 2, 0
+ delay 80
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 0
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 0
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 0
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 0
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 0
+ delay 100
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 0
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 1
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 1
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 1
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 1
+ waitforvisualfinish
+ end
+
+Move_SLEEP_TALK:: @ 81D20AA
+ loadspritegfx 10228
+ createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0
+ delay 20
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1
+ delay 20
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5
+ delay 20
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3
+ delay 6
+ createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3
+ waitforvisualfinish
+ end
+
+Move_HYPER_FANG:: @ 81D2165
+ loadspritegfx 10192
+ playsewithpan SE_W044, 63
+ delay 1
+ delay 2
+ createvisualtask AnimTask_IsContest, 2,
+ jumpargeq 7, 1, gUnknown_81D21C5
+ createvisualtask sub_80DEAB4, 2,
+ jumpargeq 7, 0, gUnknown_81D21B7
+ goto gUnknown_81D21BE
+
+gUnknown_81D2193:: @ 81D2193
+ waitbgfadeout
+ createsprite gUnknown_83FEFBC, ANIM_TARGET, 2,
+ waitbgfadein
+ createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1
+ playsewithpan SE_W043, 63
+ delay 20
+ restorebg
+ waitbgfadein
+ waitforvisualfinish
+ end
+
+gUnknown_81D21B7:: @ 81D21B7
+ fadetobg 4
+ goto gUnknown_81D2193
+
+gUnknown_81D21BE:: @ 81D21BE
+ fadetobg 5
+ goto gUnknown_81D2193
+
+gUnknown_81D21C5:: @ 81D21C5
+ fadetobg 6
+ goto gUnknown_81D2193
+
+Move_TRI_ATTACK:: @ 81D21CC
+ loadspritegfx 10230
+ createsprite gUnknown_83FF0D8, ANIM_TARGET, 2, 16, 0
+ playsewithpan SE_W161, 192
+ delay 20
+ playsewithpan SE_W161, 192
+ delay 20
+ createsoundtask mas_80DCF38, 213, -64, 63, 5, 6, 0, 7
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0
+ delay 16
+ loadspritegfx 10033
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0
+ playsewithpan SE_W172B, 63
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, -1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 2, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 1
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -2
+ delay 1
+ createsprite gUnknown_83E5C88, ANIM_TARGET, 2, 0, 0, 30, 30, 3, 1
+ delay 2
+ createvisualtask sub_80ADAD8, 2, 20, 3, 1, 1
+ waitforvisualfinish
+ loadspritegfx 10037
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ playsewithpan SE_W161B, 63
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, -48
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, -16
+ delay 1
+ createsprite gUnknown_83E5F38, ANIM_TARGET, 2, 0, 16
+ delay 20
+ createvisualtask sub_80ADAD8, 2, 20, 3, 1, 0
+ delay 2
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ waitforvisualfinish
+ loadspritegfx 10141
+ call gUnknown_81D540A
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0
+ waitforvisualfinish
+ end
+
+Move_WILL_O_WISP:: @ 81D2340
+ loadspritegfx 10232
+ loadspritegfx 10231
+ monbg 3
+ monbgprio_2A 1
+ playsewithpan SE_W052, 192
+ waitplaysewithpan SE_W052, 192, 10
+ createvisualtask sub_80DD444, 2, -64, -64, 1, 0
+ createsprite gUnknown_83E5EB4, ANIM_ATTACKER, 2, 0, 0, 0
+ delay 3
+ createsprite gUnknown_83E5EB4, ANIM_ATTACKER, 3, 0, 0, 1
+ delay 3
+ createsprite gUnknown_83E5EB4, ANIM_ATTACKER, 4, 0, 0, 2
+ delay 3
+ createsprite gUnknown_83E5EB4, ANIM_ATTACKER, 4, 0, 0, 3
+ delay 40
+ createvisualtask sub_80DD444, 2, -64, 63, 2, 0
+ waitforvisualfinish
+ monbgprio_29
+ playsewithpan SE_W172B, 63
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 13, 1
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 0
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 42
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 84
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 126
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 168
+ createsprite gUnknown_83E5EE4, ANIM_ATTACKER, 2, 210
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_ENCORE:: @ 81D23FE
+ loadspritegfx 10227
+ loadspritegfx 10247
+ createvisualtask sub_80DEDD8, 2,
+ createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0
+ waitforvisualfinish
+ createsprite gUnknown_83FF00C, ANIM_TARGET, 2, 0, -8
+ createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9
+ createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, 2, 0, 1, 0, 9
+ createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9
+ createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9
+ delay 16
+ createvisualtask sub_80DD410, 5, 216, 63
+ createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1
+ waitforvisualfinish
+ createvisualtask sub_80BAB38, 2, 248, 3, 10, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_80DEE78, 2,
+ end
+
+Move_TRICK:: @ 81D24A5
+ loadspritegfx 10224
+ loadspritegfx 10207
+ createsprite gUnknown_83E2F60, ANIM_ATTACKER, 2, -40, 80
+ createsprite gUnknown_83E2F60, ANIM_ATTACKER, 2, -40, 208
+ delay 16
+ playsewithpan SE_W166, 0
+ createvisualtask sub_80A9A20, 3,
+ createvisualtask sub_80A9AB0, 3,
+ delay 30
+ playsewithpan SE_W104, 0
+ delay 24
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W213, 0
+ createvisualtask AnimTask_ShakeMon, 3, 0, 5, 0, 7, 2
+ createvisualtask AnimTask_ShakeMon, 3, 1, 5, 0, 7, 2
+ waitforvisualfinish
+ end
+
+Move_WISH:: @ 81D2523
+ loadspritegfx 10233
+ loadspritegfx 10049
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0
+ waitforvisualfinish
+ panse_27 SE_W115, 63, 192, 253, 0
+ createsprite gUnknown_83FF168, ANIM_ATTACKER, 40,
+ waitforvisualfinish
+ delay 60
+ loopsewithpan SE_W215, 192, 16, 3
+ call gUnknown_81D569E
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0
+ waitforvisualfinish
+ end
+
+Move_STOCKPILE:: @ 81D256B
+ loadspritegfx 10235
+ playsewithpan SE_W025, 192
+ createvisualtask sub_80B9BDC, 2, 2, 8, 1, 0, 12, 32767
+ createvisualtask sub_80DF848, 5,
+ call gUnknown_81D25A9
+ call gUnknown_81D25A9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, 32767
+ end
+
+gUnknown_81D25A9:: @ 81D25A9
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, 55, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, -55, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 0, 55, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 0, -55, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, -34, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, 34, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, -34, 13
+ delay 1
+ createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, 34, 13
+ delay 1
+ return
+
+Move_SPIT_UP:: @ 81D2622
+ loadspritegfx 10237
+ loadspritegfx 10135
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80DF8A0, 5,
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2
+ delay 45
+ playsewithpan SE_W255, 192
+ delay 3
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 0, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 32, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 64, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 96, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 128, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 160, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 192, 12
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 224, 12
+ delay 5
+ jumpifmoveturn 2, gUnknown_81D26EF
+ jumpifmoveturn 3, gUnknown_81D2718
+
+gUnknown_81D26B2:: @ 81D26B2
+ delay 5
+ createvisualtask sub_8099BD4, 2, 0, 1, 8, 1, 0
+ playsewithpan SE_W003, 63
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, -12, 10, 1, 1
+ delay 5
+ playsewithpan SE_W003, 63
+ createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 12, -10, 1, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81D26EF:: @ 81D26EF
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 16
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 80
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 144
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 208
+ goto gUnknown_81D26B2
+
+gUnknown_81D2718:: @ 81D2718
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 16
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 48
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 80
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 112
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 144
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 176
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 208
+ createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 240
+ goto gUnknown_81D26B2
+
+Move_SWALLOW:: @ 81D2765
+ loadspritegfx 10236
+ loadspritegfx 10031
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80DF964, 5,
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2
+ delay 38
+ playsewithpan SE_W255, 192
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 12, 1
+ call gUnknown_81D27B6
+ jumpifmoveturn 2, gUnknown_81D27F8
+ jumpifmoveturn 3, gUnknown_81D2802
+
+gUnknown_81D27AF:: @ 81D27AF
+ waitforvisualfinish
+ call gUnknown_81D56C9
+ end
+
+gUnknown_81D27B6:: @ 81D27B6
+ createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 0, -8
+ delay 1
+ createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -24, -8
+ delay 1
+ createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 16, -8
+ delay 1
+ createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -16, -8
+ delay 1
+ createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 24, -8
+ delay 1
+ return
+
+gUnknown_81D27F8:: @ 81D27F8
+ call gUnknown_81D27B6
+ goto gUnknown_81D27AF
+
+gUnknown_81D2802:: @ 81D2802
+ call gUnknown_81D27B6
+ call gUnknown_81D27B6
+ goto gUnknown_81D27AF
+
+Move_TRANSFORM:: @ 81D2811
+ monbg 0
+ playsewithpan SE_W100, 192
+ waitplaysewithpan SE_W107, 192, 48
+ createvisualtask sub_80DF9BC, 2, 0
+ waitforvisualfinish
+ clearmonbg 0
+ end
+
+Move_MORNING_SUN:: @ 81D2829
+ loadspritegfx 10241
+ loadspritegfx 10031
+ createvisualtask sub_80DFC50, 5,
+ delay 8
+ createvisualtask sub_80BA7F8, 10, 1921, 8, 0, 12, 32767
+ delay 14
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ call gUnknown_81D28AF
+ createvisualtask sub_80BA7F8, 10, 1921, 3, 12, 0, 32767
+ waitforvisualfinish
+ waitsound
+ call gUnknown_81D56C9
+ end
+
+gUnknown_81D28AF:: @ 81D28AF
+ createsprite gUnknown_83FF26C, ANIM_ATTACKER, 2, 30, 640
+ delay 5
+ return
+
+Move_SWEET_SCENT:: @ 81D28BD
+ loadspritegfx 10238
+ playsewithpan SE_W230, 192
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 100
+ delay 25
+ setpan 0
+ call gUnknown_81D2901
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 55, 0
+ setpan 63
+ createvisualtask sub_80B9BDC, 2, 20, 1, 5, 5, 13, 22207
+ call gUnknown_81D2901
+ waitforvisualfinish
+ end
+
+gUnknown_81D2901:: @ 81D2901
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 70, 1, 64
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 60, 0, 64
+ delay 5
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 80, 1, 64
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 58, 0, 120
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 90, 0, 64
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 48, 0, 64
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 95, 1, 80
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 75, 1, 64
+ delay 2
+ createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 85, 0, 120
+ delay 2
+ return
+
+Move_HYPER_BEAM:: @ 81D29A7
+ loadspritegfx 10147
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, 0
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W063, 192
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 4, 1
+ waitforvisualfinish
+ delay 30
+ createsoundtask mas_80DCF38, 240, -64, 63, 1, 15, 0, 5
+ createvisualtask AnimTask_ShakeMon, 2, 0, 0, 4, 50, 1
+ createvisualtask sub_80B9F6C, 2, 10147, 1, 12, 31, 16, 0, 0
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 50, 1
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 11, 26425
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ call gUnknown_81D2AD8
+ createvisualtask sub_80BA7F8, 10, 4, 2, 11, 0, 26425
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, 0
+ end
+
+gUnknown_81D2AD8:: @ 81D2AD8
+ createsprite gUnknown_83E2B00, ANIM_TARGET, 2,
+ createsprite gUnknown_83E2B00, ANIM_TARGET, 2,
+ delay 1
+ return
+
+Move_FLATTER:: @ 81D2AE9
+ loadspritegfx 10227
+ loadspritegfx 10240
+ createvisualtask sub_80DD410, 5, 216, 63
+ createvisualtask sub_80DEDD8, 2,
+ createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0
+ waitforvisualfinish
+ createsprite gUnknown_83FF3A0, ANIM_TARGET, 2, 0, -8, 80
+ delay 0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1
+ delay 10
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1
+ delay 0
+ createvisualtask sub_80DD3DC, 5, 222, -64
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ call gUnknown_81D2BD2
+ delay 5
+ createvisualtask sub_80DD3DC, 5, 222, 63
+ waitforvisualfinish
+ createvisualtask sub_80BAB38, 2, 248, 3, 10, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_80DEE78, 2,
+ end
+
+gUnknown_81D2BD2:: @ 81D2BD2
+ createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 0
+ createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 1
+ return
+
+Move_ROLE_PLAY:: @ 81D2BE5
+ monbg 2
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 16, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, 0
+ waitforvisualfinish
+ playsewithpan SE_W161, 192
+ waitplaysewithpan SE_W197, 192, 30
+ createvisualtask sub_80E0FB8, 2,
+ waitforvisualfinish
+ clearmonbg 2
+ createvisualtask sub_80BA7F8, 10, 4, 2, 16, 0, 32767
+ delay 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, 0
+ end
+
+Move_REFRESH:: @ 81D2C42
+ loadspritegfx 10203
+ loadspritegfx 10049
+ playsewithpan SE_W287, 192
+ createvisualtask sub_80E2084, 2, 0
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
+ call gUnknown_81D569E
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 0, 0
+ end
+
+Move_BLAZE_KICK:: @ 81D2C85
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10029
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W172, 63
+ createsprite gUnknown_83E678C, ANIM_TARGET, 3, 0, 0, 1, 30
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 7, 32767
+ delay 30
+ playsewithpan SE_W007, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 14, 1
+ createvisualtask sub_80BA7F8, 10, 4, 2, 0, 0, 32767
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0
+ call gUnknown_81D0950
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_HYPER_VOICE:: @ 81D2D0D
+ loadspritegfx 10203
+ call gUnknown_81D2D1F
+ waitforvisualfinish
+ delay 8
+ call gUnknown_81D2D1F
+ waitforvisualfinish
+ end
+
+gUnknown_81D2D1F:: @ 81D2D1F
+ createvisualtask sub_80DD334, 5,
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0
+ createsprite gUnknown_83E40F8, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 6, 1
+ createvisualtask sub_80BA47C, 2, 1, 0, 6, 1
+ createvisualtask sub_80DD2F4, 5,
+ return
+
+Move_SAND_TOMB:: @ 81D2D96
+ loadspritegfx 10074
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1
+ playsewithpan SE_W328, 63
+ call gUnknown_81D2DE3
+ call gUnknown_81D2DE3
+ call gUnknown_81D2DE3
+ delay 22
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563
+ waitforvisualfinish
+ end
+
+gUnknown_81D2DE3:: @ 81D2DE3
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 32, 528, 30, 10, 50, 1
+ delay 2
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 36, 480, 20, 13, -46, 1
+ delay 2
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 37, 576, 20, 5, 42, 1
+ delay 2
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 35, 400, 25, 8, -42, 1
+ delay 2
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 32, 512, 25, 13, 46, 1
+ delay 2
+ createsprite gUnknown_83E73E4, ANIM_TARGET, 2, 0, 37, 464, 30, 12, -50, 1
+ delay 2
+ return
+
+Move_SHEER_COLD:: @ 81D2E6E
+ fadetobg 15
+ waitbgfadeout
+ playsewithpan SE_W196, 0
+ waitbgfadein
+ loadspritegfx 10010
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask sub_80783FC, 2,
+ waitplaysewithpan SE_W258, 63, 17
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ restorebg
+ waitbgfadein
+ end
+
+Move_ARM_THRUST:: @ 81D2E93
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask sub_8099980, 5, 8, 5, 0, 0
+ delay 6
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E68AC, ANIM_TARGET, 2, 10, -8, 14, 3
+ waitforvisualfinish
+ createvisualtask sub_8099980, 5, 8, 5, 0, 1
+ playsewithpan SE_W003, 63
+ choosetwoturnanim gUnknown_81D2F00, gUnknown_81D2F14
+
+gUnknown_81D2EEC:: @ 81D2EEC
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
+ blendoff
+ end
+
+gUnknown_81D2F00:: @ 81D2F00
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2
+ goto gUnknown_81D2EEC
+
+gUnknown_81D2F14:: @ 81D2F14
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, 1, 2
+ goto gUnknown_81D2EEC
+
+Move_MUDDY_WATER:: @ 81D2F28
+ panse_1B SE_W250, 192, 63, 2, 0
+ createvisualtask sub_80AB38C, 2, 1
+ waitforvisualfinish
+ end
+
+Move_BULLET_SEED:: @ 81D2F3A
+ loadspritegfx 10006
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 30, 1
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ delay 5
+ createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0
+ waitforvisualfinish
+ end
+
+Move_DRAGON_CLAW:: @ 81D2FD0
+ loadspritegfx 10029
+ loadspritegfx 10039
+ playsewithpan SE_W221B, 192
+ createvisualtask sub_80BA7F8, 10, 2, 4, 0, 8, 639
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 15, 1
+ call gUnknown_81D31AD
+ call gUnknown_81D31AD
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createvisualtask sub_80DD3DC, 5, 129, 63
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, -10, 0
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, -10, 10, 0
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createvisualtask sub_80DD3DC, 5, 129, 63
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, -10, 1
+ createsprite gUnknown_83E79E8, ANIM_TARGET, 2, 10, 10, 1
+ createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0
+ createvisualtask sub_80BA7F8, 10, 2, 4, 8, 0, 639
+ waitforvisualfinish
+ end
+
+gUnknown_81D31AD:: @ 81D31AD
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createsprite gUnknown_83E7438, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0
+ delay 2
+ return
+ end
+
+Move_MUD_SHOT:: @ 81D3239
+ loadspritegfx 10259
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1
+ delay 6
+ createvisualtask sub_80AB100, 5, 100
+ panse_1B SE_W250, 192, 63, 1, 0
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ call gUnknown_81D32B3
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D32B3:: @ 81D32B3
+ createsprite gUnknown_83E5974, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ delay 2
+ createsprite gUnknown_83E5974, ANIM_ATTACKER, 3, 10, 10, 0, 16
+ delay 2
+ return
+
+Move_METEOR_MASH:: @ 81D32D6
+ loadspritegfx 10233
+ loadspritegfx 10135
+ loadspritegfx 10143
+ panse_1B SE_W112, 192, 63, 3, 0
+ fadetobg 16
+ waitbgfadein
+ waitforvisualfinish
+ createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -48, -64, 72, 32, 30
+ delay 10
+ createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -112, -64, 8, 32, 30
+ delay 40
+ createsprite gUnknown_83E678C, ANIM_TARGET, 3, 0, 0, 0, 30
+ createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -80, -64, 40, 32, 30
+ delay 20
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 5, 0, 20, 1
+ waitforvisualfinish
+ delay 10
+ restorebg
+ waitbgfadein
+ waitforvisualfinish
+ end
+
+Move_REVENGE:: @ 81D335D
+ loadspritegfx 10245
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createsprite gUnknown_83E6900, ANIM_ATTACKER, 2, 10, -10
+ waitforvisualfinish
+ createvisualtask sub_80B9BDC, 2, 2, 0, 4, 2, 8, 31
+ waitforvisualfinish
+ unloadspritegfx 10245
+ loadspritegfx 10246
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E6948, ANIM_TARGET, 2, 10, -10
+ waitforvisualfinish
+ unloadspritegfx 10246
+ loadspritegfx 10135
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 10, 1
+ createsprite gUnknown_83E7CB0, ANIM_TARGET, 3, -10, -8, 1, 1, 8
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gUnknown_83E7CB0, ANIM_TARGET, 3, 10, 8, 1, 1, 8
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_POISON_FANG:: @ 81D33F4
+ loadspritegfx 10192
+ loadspritegfx 10150
+ playsewithpan SE_W044, 63
+ createsprite gUnknown_83FEFBC, ANIM_TARGET, 2,
+ delay 10
+ createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1
+ waitforvisualfinish
+ createvisualtask sub_80B9BDC, 2, 4, 0, 4, 0, 12, 26650
+ call gUnknown_81D575B
+ waitforvisualfinish
+ end
+
+Move_SUBSTITUTE:: @ 81D3433
+ playsewithpan SE_W213, 192
+ createvisualtask sub_80E3294, 2,
+ end
+
+Move_FRENZY_PLANT:: @ 81D343F
+ loadspritegfx 10223
+ loadspritegfx 10135
+ monbg 1
+ monbgprio_28 1
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, 0
+ waitforvisualfinish
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100
+ playsewithpan SE_W010, 192
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95
+ playsewithpan SE_W010, 213
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90
+ playsewithpan SE_W010, 234
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85
+ playsewithpan SE_W010, 0
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85
+ playsewithpan SE_W010, 21
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85
+ playsewithpan SE_W010, 42
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, 1, 3
+ playsewithpan SE_W003, 63
+ createvisualtask AnimTask_ShakeMon, 3, 1, 8, 0, 20, 1
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 1, 3
+ playsewithpan SE_W003, 63
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, 1, 2
+ playsewithpan SE_W003, 63
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, 1, 2
+ playsewithpan SE_W003, 63
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, 1, 1
+ playsewithpan SE_W003, 63
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, 1, 1
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, 0
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+Move_METAL_SOUND:: @ 81D35E3
+ loadspritegfx 10260
+ monbg 3
+ monbgprio_2A 1
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1
+ call gUnknown_81D3616
+ call gUnknown_81D3616
+ call gUnknown_81D3616
+ call gUnknown_81D3616
+ waitforvisualfinish
+ clearmonbg 3
+ delay 0
+ waitforvisualfinish
+ end
+
+gUnknown_81D3616:: @ 81D3616
+ panse_1B SE_W103, 192, 63, 2, 0
+ createsprite gUnknown_83E3CD0, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
+
+Move_FOCUS_PUNCH:: @ 81D3633
+ goto gUnknown_81D363A
+
+gUnknown_81D3638:: @ 81D3638
+ waitforvisualfinish
+ end
+
+gUnknown_81D363A:: @ 81D363A
+ loadspritegfx 10135
+ loadspritegfx 10143
+ delay 1
+ createvisualtask AnimTask_IsContest, 2,
+ jumpargeq 7, 1, gUnknown_81D36F3
+ createvisualtask sub_80DEAB4, 2,
+ jumpargeq 7, 0, gUnknown_81D36E5
+ jumpargeq 7, 1, gUnknown_81D36EC
+
+gUnknown_81D3668:: @ 81D3668
+ waitbgfadein
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W207, 63
+ createsprite gUnknown_83E697C, ANIM_TARGET, 2,
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 2, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -6, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 1, 0
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81D3638
+
+gUnknown_81D36E5:: @ 81D36E5
+ fadetobg 4
+ goto gUnknown_81D3668
+
+gUnknown_81D36EC:: @ 81D36EC
+ fadetobg 5
+ goto gUnknown_81D3668
+
+gUnknown_81D36F3:: @ 81D36F3
+ fadetobg 6
+ goto gUnknown_81D3668
+
+Move_RETURN:: @ 81D36FA
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ createvisualtask sub_80E38D8, 2,
+ delay 2
+ jumpargeq 7, 0, gUnknown_81D3730
+ jumpargeq 7, 1, gUnknown_81D3782
+ jumpargeq 7, 2, gUnknown_81D37E2
+ jumpargeq 7, 3, gUnknown_81D38FD
+
+gUnknown_81D372B:: @ 81D372B
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D3730:: @ 81D3730
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 132, 63
+ goto gUnknown_81D372B
+
+gUnknown_81D3782:: @ 81D3782
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ delay 11
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ goto gUnknown_81D372B
+
+gUnknown_81D37E2:: @ 81D37E2
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ goto gUnknown_81D372B
+
+gUnknown_81D38FD:: @ 81D38FD
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 12, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 4
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 2
+ createvisualtask sub_80BAB98, 2, 0, 4, 5, 1
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80BAB98, 2, 0, 4, 5, 1
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80BAB98, 2, 0, 4, 5, 1
+ waitforvisualfinish
+ call gUnknown_81D3B35
+ call gUnknown_81D3B35
+ call gUnknown_81D3B35
+ call gUnknown_81D3B35
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 0
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 0
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 0
+ createvisualtask sub_80DD3DC, 5, 134, 63
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, 0
+ goto gUnknown_81D372B
+
+gUnknown_81D3B35:: @ 81D3B35
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, 0
+ createvisualtask sub_80DD410, 5, 160, -64
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask sub_80DD3DC, 5, 116, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80BAB98, 2, 0, 4, 5, 1
+ waitforvisualfinish
+ return
+
+Move_COSMIC_POWER:: @ 81D3B89
+ loadspritegfx 10049
+ createvisualtask sub_80DD410, 5, 236, 0
+ playsewithpan SE_W322, 0
+ createvisualtask sub_80BB7DC, 2, 0, 0, 15, 0
+ waitforvisualfinish
+ fadetobg 16
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 2, 0, 128, 0, -1
+ waitbgfadein
+ delay 70
+ createvisualtask sub_80DD3DC, 5, 221, -64
+ createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
+ delay 8
+ createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
+ delay 40
+ createvisualtask sub_80BB7DC, 2, 0, 15, 0, 0
+ waitforvisualfinish
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ waitforvisualfinish
+ end
+
+Move_BLAST_BURN:: @ 81D3C0E
+ loadspritegfx 10035
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W221, 192
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
+ delay 25
+ playsewithpan SE_W172B, 192
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 25
+ playsewithpan SE_W172B, 192
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 12, 0, 20, 1
+ createvisualtask sub_80BA47C, 2, 2, 0, 10, 1
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
+ createsprite gUnknown_83E5CA0, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_ROCK_TOMB:: @ 81D3E50
+ loadspritegfx 10250
+ loadspritegfx 10058
+ createvisualtask sub_80BA47C, 2, 2, 0, 10, 1
+ waitforvisualfinish
+ createsprite gUnknown_83E7508, ANIM_TARGET, 2, 20, 12, 64, 114, 0
+ delay 8
+ createvisualtask sub_80BA47C, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gUnknown_83E7508, ANIM_TARGET, 2, -20, 12, 64, 98, 0
+ delay 8
+ createvisualtask sub_80BA47C, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gUnknown_83E7508, ANIM_TARGET, 66, 3, 6, 64, 82, 0
+ delay 8
+ createvisualtask sub_80BA47C, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gUnknown_83E7508, ANIM_TARGET, 2, -3, 13, 64, 66, 0
+ delay 8
+ createvisualtask sub_80BA47C, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 24
+ playsewithpan SE_W063, 63
+ createsprite gUnknown_83E705C, ANIM_TARGET, 5, 1, 50
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 20, 1
+ createvisualtask sub_80BA47C, 2, 2, 0, 10, 1
+ waitforvisualfinish
+ end
+
+Move_SILVER_WIND:: @ 81D3F37
+ loadspritegfx 10271
+ panse_1B SE_W016, 192, 63, 2, 0
+ playsewithpan SE_W234, 0
+ delay 0
+ monbg 3
+ monbgprio_29
+ delay 0
+ createvisualtask sub_80BA83C, 10, 1, 0, 0, 4, 0
+ createvisualtask AnimTask_GetTargetSide, 2,
+ jumpargeq 7, 1, gUnknown_81D4138
+ fadetobg 22
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, 1536, 0, 0, -1
+
+gUnknown_81D3F7E:: @ 81D3F7E
+ delay 0
+ createvisualtask sub_80BA7F8, 10, 1, 0, 4, 4, 0
+ waitbgfadein
+ createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1
+ createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1
+ createsprite gUnknown_83E30A8, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gUnknown_83E30A8, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 0
+ createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1
+ createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1
+ createsprite gUnknown_83E30C0, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gUnknown_83E30C0, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 0
+ createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1
+ createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1
+ createsprite gUnknown_83E30D8, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gUnknown_83E30D8, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 6
+ createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1
+ createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1
+ delay 0
+ createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1
+ createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1
+ delay 0
+ createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1
+ createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1
+ waitforvisualfinish
+ playsewithpan SE_W016B, 63
+ clearmonbg 3
+ delay 0
+ restorebg
+ waitbgfadeout
+ createvisualtask sub_80BA83C, 10, 1, 0, 4, 0, 0
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+gUnknown_81D4138:: @ 81D4138
+ fadetobg 23
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -1536, 0, 0, -1
+ goto gUnknown_81D3F7E
+
+Move_SNATCH:: @ 81D414F
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_WindUpLunge, 5, 0, -12, 4, 10, 10, 12, 6
+ end
+
+Move_DIVE:: @ 81D4169
+ loadspritegfx 10272
+ loadspritegfx 10273
+ choosetwoturnanim gUnknown_81D4178, gUnknown_81D41CD
+
+gUnknown_81D4178:: @ 81D4178
+ loadspritegfx 10156
+ playsewithpan SE_W029, 192
+ createsprite gUnknown_83E6D40, ANIM_ATTACKER, 2, 0, 0, 13, 336
+ waitforvisualfinish
+ playsewithpan SE_W291, 192
+ createsprite gUnknown_83E6D7C, ANIM_ATTACKER, 3, 0
+ call gUnknown_81D41B6
+ call gUnknown_81D41B6
+ call gUnknown_81D41B6
+ call gUnknown_81D41B6
+ call gUnknown_81D41B6
+ end
+
+gUnknown_81D41B6:: @ 81D41B6
+ createsprite gUnknown_83E6D94, ANIM_ATTACKER, 5, 0, 0
+ createsprite gUnknown_83E6D94, ANIM_ATTACKER, 5, 1, 0
+ return
+
+gUnknown_81D41CD:: @ 81D41CD
+ loadspritegfx 10148
+ loadspritegfx 10155
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W153, 63
+ createsprite gUnknown_83E6D7C, ANIM_TARGET, 3, 1
+ call gUnknown_81D420C
+ call gUnknown_81D420C
+ call gUnknown_81D420C
+ call gUnknown_81D420C
+ call gUnknown_81D420C
+ delay 12
+ call gUnknown_81C8CA2
+ waitforvisualfinish
+ visible 0
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D420C:: @ 81D420C
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 0, 1
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 1, 1
+ return
+
+Move_ROCK_BLAST:: @ 81D4223
+ loadspritegfx 10058
+ loadspritegfx 10135
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
+ delay 3
+ playsewithpan SE_W207, 192
+ createsprite gUnknown_83E7548, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 257
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
+ playsewithpan SE_W088, 63
+ createsprite gUnknown_83E73CC, ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1
+ createsprite gUnknown_83E73CC, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1
+ createsprite gUnknown_83E73CC, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2
+ createsprite gUnknown_83E73CC, ANIM_TARGET, 2, -5, 0, -20, -24, 14, 2
+ waitforvisualfinish
+ end
+
+Move_OVERHEAT:: @ 81D42C0
+ loadspritegfx 10029
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 18
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, 28
+ waitforvisualfinish
+ createvisualtask sub_80BBE10, 5,
+ waitforvisualfinish
+ createvisualtask sub_80BBE6C, 5, 0, 1
+ delay 1
+ createvisualtask sub_80BBFA4, 5, 0
+ delay 1
+ playsewithpan SE_W082, 192
+ createvisualtask sub_80BBE6C, 5, 1, 0
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, 28
+ createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1
+ waitforvisualfinish
+ playsewithpan SE_W172B, 192
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 0, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 32, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 64, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 96, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 128, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 160, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 192, 30, 25, -20
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 224, 30, 25, -20
+ delay 5
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 0, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 32, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 64, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 96, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 128, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 160, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 192, 30, 25, 0
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 224, 30, 25, 0
+ delay 5
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 0, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 32, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 64, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 96, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 2, 1, 128, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 160, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 192, 30, 25, 10
+ createsprite gUnknown_83E7860, ANIM_ATTACKER, 66, 1, 224, 30, 25, 10
+ delay 5
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, 3, 1, 0
+ playsewithpan SE_W007, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 10, 0, 25, 1
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -5, 1, 0
+ playsewithpan SE_W007, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 10, 1, 0
+ playsewithpan SE_W007, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0
+ playsewithpan SE_W007, 63
+ createvisualtask sub_80BBFA4, 5, 1
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, 19026
+ createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1
+ waitforvisualfinish
+ createvisualtask sub_80BBF08, 5, 0, 1
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, 28
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ waitforvisualfinish
+ delay 15
+ createvisualtask sub_80BBF08, 5, 1, 0
+ delay 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, 19026
+ waitforvisualfinish
+ createvisualtask sub_80BBE3C, 5,
+ waitforvisualfinish
+ end
+
+Move_HYDRO_CANNON:: @ 81D45B2
+ loadspritegfx 10149
+ loadspritegfx 10148
+ monbg 3
+ setalpha 12, 8
+ playsewithpan SE_W057, 192
+ createsprite gUnknown_83E5A38, ANIM_TARGET, 2,
+ delay 10
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ delay 30
+ panse_1B SE_W056, 192, 63, 2, 0
+ call gUnknown_81D467C
+ createvisualtask AnimTask_ShakeMon, 5, 1, 10, 0, 40, 1
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ call gUnknown_81D467C
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ call gUnknown_81D467C
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ call gUnknown_81D467C
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ call gUnknown_81D467C
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ call gUnknown_81D467C
+ createsprite gUnknown_83E7C38, ANIM_TARGET, 2, 0, 0, 1, 0
+ waitforvisualfinish
+ createvisualtask sub_80BA0E8, 2, 257, 257, 257
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D467C:: @ 81D467C
+ createsprite gUnknown_83E5A50, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gUnknown_83E5A50, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gUnknown_83E5A50, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gUnknown_83E5A50, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gUnknown_83E5A50, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257
+ return
+
+Move_ASTONISH:: @ 81D46E4
+ loadspritegfx 10273
+ playsewithpan SE_W227, 192
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
+ delay 25
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 0, 1
+ playsewithpan SE_W166, 63
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1
+ createvisualtask sub_80A9A20, 3,
+ waitforvisualfinish
+ end
+
+Move_SEISMIC_TOSS:: @ 81D472C
+ loadspritegfx 10135
+ loadspritegfx 10058
+ setarg 7, 0
+ monbg 3
+ setalpha 12, 8
+ waitforvisualfinish
+ createvisualtask AnimTask_GetSeismicTossDamageLevel, 3,
+ delay 1
+ fadetobg 17
+ waitbgfadeout
+ createvisualtask sub_80B5188, 3,
+ playsewithpan SE_W327, 0
+ waitbgfadein
+ waitforvisualfinish
+ createvisualtask sub_80B51EC, 3,
+ jumpargeq 7, 0, gUnknown_81D477F
+ jumpargeq 7, 1, gUnknown_81D4790
+ jumpargeq 7, 2, gUnknown_81D47A8
+
+gUnknown_81D4774:: @ 81D4774
+ restorebg
+ waitbgfadeout
+ setarg 7, 4095
+ waitbgfadein
+ clearmonbg 3
+ blendoff
+ end
+
+gUnknown_81D477F:: @ 81D477F
+ call gUnknown_81D47C7
+ delay 16
+ call gUnknown_81D4828
+ goto gUnknown_81D4774
+
+gUnknown_81D4790:: @ 81D4790
+ call gUnknown_81D47C7
+ delay 14
+ call gUnknown_81D4828
+ delay 14
+ call gUnknown_81D47C7
+ goto gUnknown_81D4774
+
+gUnknown_81D47A8:: @ 81D47A8
+ call gUnknown_81D4828
+ delay 10
+ call gUnknown_81D47C7
+ delay 10
+ call gUnknown_81D4828
+ delay 10
+ call gUnknown_81D47C7
+ goto gUnknown_81D4774
+
+gUnknown_81D47C7:: @ 81D47C7
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1
+ playsewithpan SE_W070, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -12, 27, 2, 3
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 8, 28, 3, 4
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -4, 30, 2, 3
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 12, 25, 4, 4
+ return
+
+gUnknown_81D4828:: @ 81D4828
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -12, 32, 3, 4
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 8, 31, 2, 2
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -4, 28, 2, 3
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 12, 30, 4, 3
+ return
+
+Move_MAGIC_COAT:: @ 81D4889
+ loadspritegfx 10170
+ setalpha 0, 16
+ waitplaysewithpan SE_W112, 192, 15
+ createsprite gUnknown_83E6E70, ANIM_ATTACKER, 3, 40, 0, 10170
+ waitforvisualfinish
+ delay 1
+ blendoff
+ end
+
+Move_WATER_PULSE:: @ 81D48A6
+ loadspritegfx 10155
+ loadspritegfx 10288
+ monbg 1
+ monbgprio_28 1
+ playsewithpan SE_W145C, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, 29472
+ delay 10
+ createsprite gUnknown_83E5B70, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gUnknown_83E5B70, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gUnknown_83E5B70, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gUnknown_83E5B70, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gUnknown_83E5B70, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
+ playsewithpan SE_W145C, 63
+ waitforvisualfinish
+ playsewithpan SE_W202, 192
+ createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15
+ delay 5
+ playsewithpan SE_W202, 192
+ createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15
+ delay 5
+ playsewithpan SE_W202, 192
+ createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15
+ delay 13
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 8, 18, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 29472
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Move_PSYCHO_BOOST:: @ 81D499B
+ loadspritegfx 10212
+ monbg 2
+ fadetobg 3
+ waitbgfadeout
+ createvisualtask sub_80DE7B4, 5,
+ waitbgfadein
+ delay 6
+ createvisualtask sub_80B9BDC, 2, 1, 2, 8, 0, 10, 0
+ delay 0
+ monbgprio_28 0
+ setalpha 8, 8
+ delay 10
+ createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 240, 0
+ loopsewithpan SE_W060B, 192, 14, 10
+ createsprite gUnknown_83E71D0, ANIM_ATTACKER, 2,
+ delay 110
+ loopsewithpan SE_W060B, 192, 7, 10
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, -8, 1, 24, 1
+ playsewithpan SE_W043, 63
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ call gUnknown_81D59C7
+ end
+
+Move_KNOCK_OFF:: @ 81D4A0F
+ loadspritegfx 10277
+ loadspritegfx 10135
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
+ delay 4
+ playsewithpan SE_W233, 63
+ createsprite gUnknown_83FF764, ANIM_TARGET, 2, -16, -16
+ delay 8
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2
+ playsewithpan SE_W004, 63
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
+ delay 10
+ waitforvisualfinish
+ end
+
+Move_DOOM_DESIRE:: @ 81D4A9F
+ createvisualtask sub_80B8B38, 2,
+ delay 1
+ monbg 2
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 0
+ waitforvisualfinish
+ setalpha 8, 8
+ playsewithpan SE_W060, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1
+ waitforvisualfinish
+ delay 20
+ createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 1
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 0
+ waitforvisualfinish
+ clearmonbg 2
+ blendoff
+ end
+ loadspritegfx 10198
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80E017C, 5,
+ delay 5
+ playsewithpan SE_W109, 192
+ delay 10
+ playsewithpan SE_W109, 0
+ delay 10
+ playsewithpan SE_W109, 63
+ delay 23
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 32767
+ waitforvisualfinish
+ end
+
+Move_SKY_UPPERCUT:: @ 81D4BC1
+ loadspritegfx 10135
+ monbg 3
+ monbgprio_28 1
+ fadetobg 17
+ waitbgfadeout
+ playsewithpan SE_W327, 192
+ createvisualtask sub_80B1530, 5, 55
+ waitbgfadein
+ setalpha 12, 8
+ delay 38
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 0, 0, 5
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -28, 28, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, 1, 1
+ playsewithpan SE_W233B, 63
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, 1, 1
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -26, 16, 1, 4
+ delay 4
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1
+ delay 30
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6
+ delay 4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
+ clearmonbg 3
+ blendoff
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ end
+
+Move_SECRET_POWER:: @ 81D4CBA
+ createvisualtask AnimTask_GetBattleTerrain, 5,
+ jumpargeq 0, 0, Move_NEEDLE_ARM
+ jumpargeq 0, 1, Move_MAGICAL_LEAF
+ jumpargeq 0, 2, Move_MUD_SHOT
+ jumpargeq 0, 3, Move_WATERFALL
+ jumpargeq 0, 4, Move_SURF
+ jumpargeq 0, 5, Move_BUBBLE_BEAM
+ jumpargeq 0, 6, Move_ROCK_THROW
+ jumpargeq 0, 7, Move_BITE
+ jumpargeq 0, 8, Move_STRENGTH
+ goto Move_SLAM
+
+Move_TWISTER:: @ 81D4D0E
+ loadspritegfx 10063
+ loadspritegfx 10135
+ loadspritegfx 10058
+ monbg 3
+ monbgprio_28 1
+ playsewithpan SE_W239, 63
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 120, 70, 5, 70, 30
+ delay 1
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 55, 6, 60, 25
+ delay 1
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 60, 7, 60, 30
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 55, 10, 60, 30
+ delay 3
+ createsprite gUnknown_83E7578, ANIM_TARGET, 2, 100, 50, 4, 50, 26
+ delay 1
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 105, 25, 8, 60, 20
+ delay 1
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 40, 10, 48, 30
+ delay 3
+ createsprite gUnknown_83E7578, ANIM_TARGET, 2, 120, 30, 6, 45, 25
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 35, 10, 60, 30
+ delay 3
+ createsprite gUnknown_83E7578, ANIM_TARGET, 2, 105, 20, 8, 40, 0
+ delay 3
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 20, 255, 15, 32, 0
+ createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 110, 10, 8, 32, 20
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 12, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 3, 3, 0, 12, 1
+ delay 4
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 3
+ playsewithpan SE_W004, 63
+ delay 4
+ createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 3
+ playsewithpan SE_W004, 63
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_MAGICAL_LEAF:: @ 81D4E6D
+ loadspritegfx 10063
+ loadspritegfx 10160
+ loadspritegfx 10135
+ monbg 3
+ setalpha 12, 8
+ delay 1
+ loopsewithpan SE_W077, 192, 10, 5
+ createvisualtask sub_80A41C4, 5,
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -2, 10
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -1, 15
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -4, -4, 7
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 3, -3, 11
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -6, 8
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -1, 12
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -4, 13
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 4, -5, 7
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -6, 11
+ delay 2
+ createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -5, 8
+ delay 60
+ playsewithpan SE_W013B, 192
+ createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0
+ createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0
+ delay 30
+ playsewithpan SE_W013, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, 1, 2
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, 4, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ delay 20
+ setarg 7, 65535
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+Move_ICE_BALL:: @ 81D4F8E
+ loadspritegfx 10043
+ loadspritegfx 10141
+ createvisualtask AnimTask_GetRolloutCounter, 5, 0
+ jumpargeq 0, 4, gUnknown_81D5005
+
+gUnknown_81D4FA5:: @ 81D4FA5
+ playsewithpan SE_W196, 192
+ createsprite gUnknown_83E665C, ANIM_TARGET, 2, 15, 0, -12, -16, 30, -40
+ delay 28
+ playsewithpan SE_W280, 63
+ createvisualtask AnimTask_GetRolloutCounter, 5, 0
+ jumpargeq 0, 0, gUnknown_81D5016
+ jumpargeq 0, 1, gUnknown_81D5045
+ jumpargeq 0, 2, gUnknown_81D507E
+ jumpargeq 0, 3, gUnknown_81D50C1
+ jumpargeq 0, 4, gUnknown_81D5109
+
+gUnknown_81D4FF3:: @ 81D4FF3
+ createvisualtask AnimTask_GetRolloutCounter, 5, 0
+ jumpargeq 0, 4, gUnknown_81D500C
+
+gUnknown_81D5004:: @ 81D5004
+ end
+
+gUnknown_81D5005:: @ 81D5005
+ fadetobg 15
+ goto gUnknown_81D4FA5
+
+gUnknown_81D500C:: @ 81D500C
+ waitbgfadein
+ delay 45
+ restorebg
+ waitbgfadein
+ goto gUnknown_81D5004
+
+gUnknown_81D5016:: @ 81D5016
+ createvisualtask sub_8099BD4, 2, 0, 1, 8, 1, 0
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ goto gUnknown_81D4FF3
+
+gUnknown_81D5045:: @ 81D5045
+ createvisualtask sub_8099BD4, 2, 0, 1, 10, 1, 0
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ goto gUnknown_81D4FF3
+
+gUnknown_81D507E:: @ 81D507E
+ createvisualtask sub_8099BD4, 2, 0, 1, 14, 1, 0
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ goto gUnknown_81D4FF3
+
+gUnknown_81D50C1:: @ 81D50C1
+ createvisualtask sub_8099BD4, 2, 0, 1, 18, 1, 0
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ goto gUnknown_81D4FF3
+
+gUnknown_81D5109:: @ 81D5109
+ createvisualtask sub_8099BD4, 2, 0, 1, 30, 1, 0
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ call gUnknown_81D5151
+ goto gUnknown_81D4FF3
+
+gUnknown_81D5151:: @ 81D5151
+ createsprite gUnknown_83E6674, ANIM_TARGET, 4, -12, -16
+ return
+
+Move_WEATHER_BALL:: @ 81D515D
+ loadspritegfx 10283
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0
+ delay 8
+ playsewithpan SE_W207, 192
+ createsprite gSpriteTemplate_83BF434, ANIM_ATTACKER, 2,
+ waitforvisualfinish
+ delay 15
+ playsewithpan SE_W197, 0
+ createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_80E44EC, 2,
+ delay 1
+ jumpargeq 7, 0, gUnknown_81D51C8
+ jumpargeq 7, 1, gUnknown_81D5205
+ jumpargeq 7, 2, gUnknown_81D5269
+ jumpargeq 7, 3, gUnknown_81D52CD
+ jumpargeq 7, 4, gUnknown_81D536D
+
+gUnknown_81D51C8:: @ 81D51C8
+ loadspritegfx 10135
+ createsprite gSpriteTemplate_83BF44C, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81D5205:: @ 81D5205
+ loadspritegfx 10029
+ createsprite gUnknown_83E5E14, ANIM_TARGET, 2, -30, -100, 25, 1, 40, 10
+ playsewithpan SE_W172, 63
+ delay 10
+ createsprite gUnknown_83E5E14, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20
+ playsewithpan SE_W172, 63
+ delay 10
+ createsprite gUnknown_83E5E14, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W172, 63
+ waitforvisualfinish
+ playsewithpan SE_W172B, 63
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81D5269:: @ 81D5269
+ loadspritegfx 10155
+ createsprite gUnknown_83E5BA0, ANIM_TARGET, 2, -30, -100, 25, 1, 50, 10
+ playsewithpan SE_W152, 63
+ delay 8
+ createsprite gUnknown_83E5BA0, ANIM_TARGET, 2, -30, -100, 25, 1, -20, 20
+ playsewithpan SE_W152, 63
+ delay 13
+ createsprite gUnknown_83E5BA0, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W152, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1
+ playsewithpan SE_W202, 63
+ waitforvisualfinish
+ end
+
+gUnknown_81D52CD:: @ 81D52CD
+ loadspritegfx 10058
+ createsprite gUnknown_83E7590, ANIM_TARGET, 2, -30, -100, 25, 1, 30, 0
+ playsewithpan SE_W088, 63
+ delay 5
+ createsprite gUnknown_83E7590, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20
+ playsewithpan SE_W088, 63
+ delay 14
+ createsprite gUnknown_83E7590, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W088, 63
+ waitforvisualfinish
+ playsewithpan SE_W070, 63
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -12, 27, 2, 3
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 8, 28, 3, 4
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, -4, 30, 2, 3
+ createsprite gUnknown_83E7560, ANIM_TARGET, 2, 12, 25, 4, 4
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ waitforvisualfinish
+ end
+
+gUnknown_81D536D:: @ 81D536D
+ loadspritegfx 10263
+ loadspritegfx 10141
+ createsprite gUnknown_83E65BC, ANIM_TARGET, 2, -30, -100, 25, 25, -40, 20
+ playsewithpan SE_W258, 63
+ delay 10
+ createsprite gUnknown_83E65BC, ANIM_TARGET, 2, -30, -100, 25, 25, 40, 0
+ playsewithpan SE_W258, 63
+ delay 10
+ createsprite gUnknown_83E65BC, ANIM_TARGET, 2, -30, -100, 25, 25, 0, 0
+ playsewithpan SE_W258, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ playsewithpan SE_W196, 63
+ call gUnknown_81D540A
+ waitforvisualfinish
+ end
+
+Move_COUNT:: @ 81D53D9
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+gUnknown_81D540A:: @ 81D540A
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -10, -10, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 10, 20, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -5, 10, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 17, -12, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, -15, 15, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 0, 0, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, 20, 2, 0
+ playsewithpan SE_W196, 63
+ return
+
+gUnknown_81D548E:: @ 81D548E
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -10, -10, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 10, 20, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -29, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 29, -20, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -5, 10, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 17, -12, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, -20, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, -15, 15, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 26, -5, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63F8, ANIM_TARGET, 2, 0, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gUnknown_83E63E0, ANIM_TARGET, 2, 20, 2, 1
+ playsewithpan SE_W196, 63
+ return
+ loopsewithpan SE_W196, 63, 6, 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 0, 24, 0
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 8, 24, 0
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -8, 24, 0
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 16, 24, 0
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -16, 24, 0
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 24, 24, 0
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -24, 24, 0
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 32, 24, 0
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -32, 24, 0
+ return
+
+gUnknown_81D55E2:: @ 81D55E2
+ loopsewithpan SE_W196, 63, 6, 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 0, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 8, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -8, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 16, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -16, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 24, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -24, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 32, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -32, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 40, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -40, 24, 1
+ delay 4
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, 48, 24, 1
+ createsprite gUnknown_83E647C, ANIM_TARGET, 2, -48, 24, 1
+ return
+
+gUnknown_81D569E:: @ 81D569E
+ createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
+ delay 8
+ createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
+ delay 8
+ return
+
+gUnknown_81D56C9:: @ 81D56C9
+ playsewithpan SE_W071B, 192
+ createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, 0, -5, 0, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, -15, 10, 0, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, -15, -15, 0, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, 10, -5, 0, 0
+ delay 7
+ return
+
+gUnknown_81D5712:: @ 81D5712
+ playsewithpan SE_W071B, 63
+ createsprite gUnknown_83E37A4, ANIM_TARGET, 2, 0, -5, 1, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_TARGET, 2, -15, 10, 1, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_TARGET, 2, -15, -15, 1, 0
+ delay 7
+ createsprite gUnknown_83E37A4, ANIM_TARGET, 2, 10, -5, 1, 0
+ delay 7
+ return
+
+gUnknown_81D575B:: @ 81D575B
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 10, 10, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, -20, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, 15, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, -20, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0
+ playsewithpan SE_W092, 63
+ return
+
+gUnknown_81D57CC:: @ 81D57CC
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 0
+ playsewithpan SE_W145C, 63
+ return
+
+gUnknown_81D583D:: @ 81D583D
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -28, -10, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 27, 8, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 1
+ playsewithpan SE_W145C, 63
+ return
+
+gUnknown_81D58D4:: @ 81D58D4
+ playsewithpan SE_W085B, 63
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 15, 20, 5, 2
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -15, -10, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 25, 0, 5, 1
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -8, 8, 5, 2
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 2, -8, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1
+ return
+
+gUnknown_81D595F:: @ 81D595F
+ loopsewithpan SE_W146, 63, 13, 6
+ createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 51, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 102, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 153, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 204, 3, 90
+ return
+
+gUnknown_81D59BB:: @ 81D59BB
+ fadetobg 3
+ waitbgfadeout
+ createvisualtask sub_80DE6F0, 5,
+ waitbgfadein
+ return
+
+gUnknown_81D59C7:: @ 81D59C7
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ return
+
+gUnknown_81D59CF:: @ 81D59CF
+ jumpifcontest gUnknown_81D59E8
+ fadetobg 18
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, -2304, 768, 1, -1
+
+gUnknown_81D59E6:: @ 81D59E6
+ waitbgfadein
+ return
+
+gUnknown_81D59E8:: @ 81D59E8
+ fadetobg 19
+ waitbgfadeout
+ createvisualtask sub_80BB82C, 5, 2304, 768, 0, -1
+ goto gUnknown_81D59E6
+
+gUnknown_81D59FF:: @ 81D59FF
+ restorebg
+ waitbgfadeout
+ setarg 7, 65535
+ waitbgfadein
+ return
+
+gUnknown_81D5A07:: @ 81D5A07
+ createvisualtask AnimTask_IsContest, 2,
+ jumpargeq 7, 1, gUnknown_81D5A2C
+ createvisualtask sub_80DEAB4, 2,
+ jumpargeq 7, 0, gUnknown_81D5A3A
+ goto gUnknown_81D5A33
+
+gUnknown_81D5A2A:: @ 81D5A2A
+ waitbgfadein
+ return
+
+gUnknown_81D5A2C:: @ 81D5A2C
+ fadetobg 26
+ goto gUnknown_81D5A2A
+
+gUnknown_81D5A33:: @ 81D5A33
+ fadetobg 25
+ goto gUnknown_81D5A2A
+
+gUnknown_81D5A3A:: @ 81D5A3A
+ fadetobg 24
+ goto gUnknown_81D5A2A
+
+gUnknown_81D5A41:: @ 81D5A41
+ restorebg
+ waitbgfadein
+ return
+
+Status_Poison:: @ 81D5A44
+ loopsewithpan SE_W092, 63, 13, 6
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 12, 31774
+ end
+
+Status_Confusion:: @ 81D5A6F
+ loadspritegfx 10073
+ call gUnknown_81D595F
+ end
+
+Status_Burn:: @ 81D5A78
+ loadspritegfx 10029
+ playsewithpan SE_W172, 63
+ call gUnknown_81D5A90
+ call gUnknown_81D5A90
+ call gUnknown_81D5A90
+ waitforvisualfinish
+ end
+
+gUnknown_81D5A90:: @ 81D5A90
+ createsprite gUnknown_83E5D7C, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1
+ delay 4
+ return
+
+Status_Infatuation:: @ 81D5AA8
+ loadspritegfx 10210
+ playsewithpan SE_W204, 192
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20
+ delay 15
+ playsewithpan SE_W204, 192
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20
+ delay 15
+ playsewithpan SE_W204, 192
+ createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20
+ end
+
+Status_Sleep:: @ 81D5ADD
+ loadspritegfx 10228
+ playsewithpan SE_W173, 192
+ createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0
+ delay 30
+ createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0
+ end
+
+Status_Paralysis:: @ 81D5B09
+ loadspritegfx 10011
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1
+ call gUnknown_81D58D4
+ end
+
+Status_Freeze:: @ 81D5B23
+ playsewithpan SE_W196, 0
+ loadspritegfx 10010
+ monbg 3
+ monbgprio_28 1
+ waitplaysewithpan SE_W258, 63, 17
+ createvisualtask sub_80783FC, 2,
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Status_Curse:: @ 81D5B3E
+ loadspritegfx 10200
+ monbg 3
+ playsewithpan SE_W171, 63
+ createsprite gUnknown_83E7698, ANIM_TARGET, 2,
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+Status_Nightmare:: @ 81D5B63
+ loadspritegfx 10221
+ monbg 3
+ playsewithpan SE_W171, 63
+ createsprite gUnknown_83E76B0, ANIM_TARGET, 2,
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1
+ waitforvisualfinish
+ clearmonbg 3
+ end
+
+General_CastformChange:: @ 81D5B88
+ createvisualtask c3_80DFBE4, 2,
+ jumpargeq 7, 1, gUnknown_81D5BB4
+ goto gUnknown_81D5B9C
+
+gUnknown_81D5B9C:: @ 81D5B9C
+ monbg 0
+ playsewithpan SE_W100, 192
+ waitplaysewithpan SE_W107, 192, 48
+ createvisualtask sub_80DF9BC, 2, 1
+ waitforvisualfinish
+ clearmonbg 0
+ end
+
+gUnknown_81D5BB4:: @ 81D5BB4
+ createvisualtask sub_80DFC24, 2, 1
+ end
+
+General_StatsChange:: @ 81D5BBE
+ createvisualtask sub_8078694, 5,
+ waitforvisualfinish
+ end
+
+General_SubstituteFade:: @ 81D5BC7
+ monbg 0
+ createvisualtask sub_80F15C8, 5,
+ createvisualtask sub_80BA7F8, 10, 2, 0, 0, 16, 32767
+ waitforvisualfinish
+ delay 1
+ clearmonbg 0
+ delay 2
+ blendoff
+ createvisualtask sub_80BA7F8, 10, 2, 0, 0, 0, 32767
+ createvisualtask sub_80F1420, 2, 1
+ end
+
+General_SubstituteAppear:: @ 81D5C04
+ createvisualtask sub_80E3294, 2,
+ end
+
+General_PokeblockThrow:: @ 81D5C0C
+ createvisualtask sub_80F1C8C, 2, 0
+ createvisualtask sub_80F1AE0, 2,
+ delay 0
+ waitplaysewithpan SE_W026, 192, 22
+ createsprite gUnknown_840C1EC, ANIM_TARGET, 3, -18, 12, 0, 32
+ delay 50
+ loopsewithpan SE_W039, 63, 19, 2
+ createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1
+ waitforvisualfinish
+ createvisualtask sub_80F1B14, 2,
+ end
+
+General_ItemKnockoff:: @ 81D5C54
+ loadspritegfx 10224
+ createsprite gUnknown_83E2EA0, ANIM_TARGET, 2,
+ end
+
+General_TurnTrap:: @ 81D5C5F
+ createvisualtask sub_80F1D14, 5,
+ jumpargeq 0, 1, gUnknown_81D5CD3
+ jumpargeq 0, 2, gUnknown_81D5CF8
+ jumpargeq 0, 3, gUnknown_81D5D4C
+ jumpargeq 0, 4, gUnknown_81D5DA9
+ goto gUnknown_81D5C8B
+
+gUnknown_81D5C8B:: @ 81D5C8B
+ loadspritegfx 10186
+ loopsewithpan SE_W010, 63, 6, 2
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 4, 0, 16, 0, 1
+ delay 7
+ createsprite gUnknown_83E2D0C, ANIM_TARGET, 2, 0, 8, 1, 1
+ delay 3
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1
+ delay 20
+ setarg 7, 65535
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
+ end
+
+gUnknown_81D5CD3:: @ 81D5CD3
+ loadspritegfx 10029
+ playsewithpan SE_W221B, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
+ call gUnknown_81C885F
+ call gUnknown_81C885F
+ waitforvisualfinish
+ stopsound
+ end
+
+gUnknown_81D5CF8:: @ 81D5CF8
+ loadspritegfx 10149
+ monbg 3
+ monbgprio_28 1
+ setalpha 12, 8
+ delay 0
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968
+ playsewithpan SE_W250, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
+ call gUnknown_81CFB92
+ call gUnknown_81CFB92
+ delay 12
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968
+ waitforvisualfinish
+ stopsound
+ clearmonbg 3
+ end
+
+gUnknown_81D5D4C:: @ 81D5D4C
+ loadspritegfx 10145
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W011, 63
+ createsprite gUnknown_83E7948, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10
+ createsprite gUnknown_83E7948, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ waitforvisualfinish
+ end
+
+gUnknown_81D5DA9:: @ 81D5DA9
+ loadspritegfx 10074
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
+ playsewithpan SE_W328, 63
+ call gUnknown_81D2DE3
+ call gUnknown_81D2DE3
+ delay 22
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563
+ waitforvisualfinish
+ stopsound
+ end
+
+General_ItemEffect:: @ 81D5DF2
+ loadspritegfx 10203
+ loadspritegfx 10049
+ delay 0
+ playsewithpan SE_W036, 192
+ createvisualtask sub_8099A78, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_8099A78, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_8099A78, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
+ call gUnknown_81D569E
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, 26609
+ createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 0, 0
+ waitforvisualfinish
+ end
+
+General_SmokeballEscape:: @ 81D5E66
+ loadspritegfx 10242
+ monbg 0
+ setalpha 12, 4
+ delay 0
+ playsewithpan SE_BOWA2, 63
+ createsprite gUnknown_83FF514, ANIM_TARGET, 0, 0, 32, 28, 30
+ delay 4
+ playsewithpan SE_BOWA2, 63
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 127, 2, 12, 20, 30
+ delay 12
+ playsewithpan SE_BOWA2, 63
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 126, 2, -28, 4, 30
+ delay 12
+ playsewithpan SE_BOWA2, 63
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 124, 2, 14, -20, 30
+ delay 4
+ playsewithpan SE_BOWA2, 63
+ createvisualtask sub_80B78E0, 2, 2
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 123, 3, 4, 4, 30
+ delay 14
+ playsewithpan SE_BOWA2, 63
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 122, 3, -14, 18, 46
+ delay 0
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 121, 3, 14, -14, 46
+ delay 0
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 120, 3, -12, -10, 46
+ delay 0
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 119, 3, 14, 14, 46
+ delay 0
+ createsprite gUnknown_83FF514, ANIM_ATTACKER, 118, 3, 0, 0, 46
+ waitforvisualfinish
+ clearmonbg 0
+ invisible 0
+ delay 0
+ blendoff
+ end
+
+General_HangedOn:: @ 81D5F42
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, 31
+ playsewithpan SE_W082, 192
+ createvisualtask sub_80E1C48, 5, 30, 128, 0, 1, 2, 0, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, 31
+ waitforvisualfinish
+ delay 6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15
+ end
+
+General_Rain:: @ 81D5F8F
+ loadspritegfx 10115
+ playsewithpan SE_W240, 192
+ createvisualtask sub_80BA7F8, 10, 1921, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80AABC0, 2, 0, 3, 60
+ createvisualtask sub_80AABC0, 2, 0, 3, 60
+ delay 50
+ waitforvisualfinish
+ createvisualtask sub_80BA7F8, 10, 1921, 2, 4, 0, 0
+ waitforvisualfinish
+ end
+
+General_Sun:: @ 81D5FD8
+ goto Move_SUNNY_DAY
+
+General_Sandstorm:: @ 81D5FDD
+ goto Move_SANDSTORM
+
+General_Hail:: @ 81D5FE2
+ goto Move_HAIL
+
+General_LeechSeedDrain:: @ 81D5FE7
+ createvisualtask sub_80F1D7C, 5,
+ delay 0
+ goto Move_ABSORB
+
+General_MonHit:: @ 81D5FF5
+ loadspritegfx 10135
+ monbg 1
+ setalpha 12, 8
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg 1
+ blendoff
+ end
+
+General_ItemSteal:: @ 81D6026
+ loadspritegfx 10224
+ createvisualtask sub_80BC0FC, 2,
+ createvisualtask sub_80F1700, 2,
+ delay 1
+ createsprite gUnknown_83E2EE8, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1
+ end
+
+General_SnatchMove:: @ 81D604B
+ loadspritegfx 10224
+ createvisualtask sub_80BC060, 2,
+ call gUnknown_81D6476
+ delay 1
+ createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_IsTargetSameSide, 2,
+ jumpargeq 7, 0, gUnknown_81D6089
+ goto gUnknown_81D6099
+
+gUnknown_81D6082:: @ 81D6082
+ waitforvisualfinish
+ call gUnknown_81D6496
+ end
+
+gUnknown_81D6089:: @ 81D6089
+ playsewithpan SE_W104, 192
+ createvisualtask sub_80E392C, 2,
+ goto gUnknown_81D6082
+
+gUnknown_81D6099:: @ 81D6099
+ playsewithpan SE_W104, 192
+ createvisualtask sub_80E3FC0, 2,
+ goto gUnknown_81D6082
+
+General_FutureSightHit:: @ 81D60A9
+ createvisualtask sub_80BC0DC, 2,
+ monbg 3
+ playsewithpan SE_W060, 192
+ call gUnknown_81D59BB
+ setalpha 8, 8
+ playsewithpan SE_W048, 63
+ waitplaysewithpan SE_W048, 63, 8
+ createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ waitforvisualfinish
+ delay 1
+ call gUnknown_81D59C7
+ end
+
+General_DoomDesireHit:: @ 81D6108
+ createvisualtask sub_80BC0DC, 2,
+ loadspritegfx 10198
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80E017C, 5,
+ delay 9
+ playsewithpan SE_W109, 192
+ delay 9
+ playsewithpan SE_W109, 0
+ delay 9
+ playsewithpan SE_W109, 63
+ delay 25
+ createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 32767
+ waitforvisualfinish
+ end
+
+General_FocusPunchSetUp:: @ 81D61CD
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
+ call gUnknown_81CB267
+ delay 8
+ createvisualtask sub_80B9BDC, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
+ call gUnknown_81CB267
+ delay 8
+ call gUnknown_81CB267
+ waitforvisualfinish
+ end
+
+General_IngrainHeal:: @ 81D620D
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg 3
+ setalpha 12, 8
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293
+ waitforvisualfinish
+ delay 3
+ call gUnknown_81CEC44
+ waitforvisualfinish
+ delay 15
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ end
+
+General_WishHeal:: @ 81D6250
+ loadspritegfx 10031
+ loadspritegfx 10049
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0
+ waitforvisualfinish
+ playsewithpan SE_W025, 192
+ call gUnknown_81D569E
+ waitforvisualfinish
+ call gUnknown_81D56C9
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0
+ end
+
+gUnknown_81D628A:: @ 81D628A
+ createvisualtask sub_80F1C8C, 2, 1
+ waitforvisualfinish
+ loadspritegfx 10273
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 10, 26336
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1
+ delay 20
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 0, 1
+ playsewithpan SE_W166, 63
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1
+ createvisualtask sub_80A9A20, 3,
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 10, 0, 26336
+ waitforvisualfinish
+ end
+
+gUnknown_81D6301:: @ 81D6301
+ createvisualtask sub_80F1C8C, 2, 1
+ waitforvisualfinish
+ fadetobg 2
+ waitbgfadeout
+ monbg_22 0
+ createvisualtask sub_80B6BBC, 2,
+ waitbgfadein
+ loopsewithpan SE_W060, 63, 20, 3
+ waitforvisualfinish
+ clearmonbg_23 0
+ delay 1
+ loadspritegfx 10273
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 0, 6, 27349
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 0, 1
+ createsprite gUnknown_83E6D94, ANIM_TARGET, 5, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1
+ createvisualtask sub_80A9A20, 3,
+ waitforvisualfinish
+ createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 6, 0, 27349
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ end
+
+gUnknown_81D637B:: @ 81D637B
+ monbg 0
+ playsewithpan SE_W100, 192
+ waitplaysewithpan SE_W107, 192, 48
+ createvisualtask sub_80DF9BC, 2, 255
+ waitsound
+ waitforvisualfinish
+ clearmonbg 0
+ end
+
+gUnknown_81D6394:: @ 81D6394
+ createvisualtask sub_80F1C8C, 2, 0
+ waitforvisualfinish
+ loadspritegfx 10058
+ loadspritegfx 10135
+ delay 0
+ waitplaysewithpan SE_W026, 192, 22
+ createsprite gUnknown_840C210, ANIM_TARGET, 3, -17, 14, 8, 0
+ delay 50
+ monbg 3
+ setalpha 12, 8
+ delay 0
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ waitforvisualfinish
+ end
+
+gUnknown_81D63DC:: @ 81D63DC
+ createvisualtask sub_80F1CE4, 2,
+ waitforvisualfinish
+ jumpargeq 7, 0, gUnknown_81D63FD
+ jumpargeq 7, 1, gUnknown_81D6425
+ jumpargeq 7, 2, gUnknown_81D644E
+ end
+
+gUnknown_81D63FD:: @ 81D63FD
+ playsewithpan SE_W036, 63
+ createvisualtask sub_8099A78, 2, 16, 96, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 63
+ createvisualtask sub_8099A78, 2, 16, -96, 0, 2
+ end
+
+gUnknown_81D6425:: @ 81D6425
+ loadspritegfx 10087
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -20
+ playsewithpan SE_W207B, 63
+ waitforvisualfinish
+ delay 12
+ createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -20
+ playsewithpan SE_W207B, 63
+ end
+
+gUnknown_81D644E:: @ 81D644E
+ playsewithpan SE_W036, 63
+ createvisualtask sub_8099A78, 2, 8, 136, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 63
+ createvisualtask sub_8099A78, 2, 8, 136, 0, 2
+ end
+
+gUnknown_81D6476:: @ 81D6476
+ createvisualtask sub_80F16CC, 2,
+ jumpargeq 7, 1, gUnknown_81D6487
+
+gUnknown_81D6485:: @ 81D6485
+ waitforvisualfinish
+ return
+
+gUnknown_81D6487:: @ 81D6487
+ createvisualtask sub_80F1420, 2, 1
+ waitforvisualfinish
+ goto gUnknown_81D6485
+
+gUnknown_81D6496:: @ 81D6496
+ createvisualtask sub_80F16CC, 2,
+ jumpargeq 7, 1, gUnknown_81D64A7
+
+gUnknown_81D64A5:: @ 81D64A5
+ waitforvisualfinish
+ return
+
+gUnknown_81D64A7:: @ 81D64A7
+ createvisualtask sub_80F1420, 2, 0
+ waitforvisualfinish
+ goto gUnknown_81D64A5
+
+Special_LevelUp:: @ 81D64B6
+ playsewithpan SE_EXPMAX, 0
+ createvisualtask sub_80EF0B4, 2,
+ delay 0
+ createvisualtask sub_80EF1A0, 5, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_80EF180, 2,
+ end
+
+Special_SwitchOutPlayerMon:: @ 81D64D7
+ createvisualtask sub_80EF344, 2,
+ delay 10
+ createvisualtask sub_80EF298, 2,
+ end
+
+Special_SwitchOutOpponentMon:: @ 81D64E8
+ createvisualtask sub_80EF344, 2,
+ delay 10
+ createvisualtask sub_80EF298, 2,
+ end
+
+Special_BallThrow:: @ 81D64F9
+ createvisualtask sub_80EF490, 2,
+ delay 0
+ playsewithpan SE_NAGERU, 0
+ createvisualtask sub_80EF5AC, 2,
+ createvisualtask sub_80EF4E0, 2,
+ jumpargeq 7, 65535, gUnknown_81D652D
+ jumpargeq 7, 65534, gUnknown_81D6555
+
+gUnknown_81D6524:: @ 81D6524
+ waitforvisualfinish
+ createvisualtask sub_80EF4B8, 2,
+ end
-gUnknown_81C68EC:: @ 81C68EC
- .incbin "baserom.gba", 0x1C68EC, 0x8
+gUnknown_81D652D:: @ 81D652D
+ loadspritegfx 10135
+ delay 25
+ monbg 3
+ setalpha 12, 8
+ delay 0
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2
+ waitforvisualfinish
+ clearmonbg 3
+ blendoff
+ goto gUnknown_81D6524
-gUnknown_81C68F4:: @ 81C68F4
- .incbin "baserom.gba", 0x1C68F4, 0x590
+gUnknown_81D6555:: @ 81D6555
+ delay 16
+ createvisualtask AnimTask_WindUpLunge, 2, 1, 48, 6, 16, 48, -48, 16
+ playsewithpan SE_W036, 63
+ waitplaysewithpan SE_W036, 63, 48
+ waitforvisualfinish
+ goto gUnknown_81D6524
-gUnknown_81C6E84:: @ 81C6E84
- .incbin "baserom.gba", 0x1C6E84, 0x24
+Special_SafariBallThrow:: @ 81D657B
+ createvisualtask sub_80EF490, 2,
+ delay 0
+ createvisualtask sub_80EF6D4, 2,
+ waitforvisualfinish
+ createvisualtask sub_80EF4B8, 2,
+ end
-gBattleAnims_General:: @ 81C6EA8
- .incbin "baserom.gba", 0x1C6EA8, 0x70
+Special_SubstituteToMon:: @ 81D6594
+ createvisualtask sub_80F1420, 2, 1
+ end
-gBattleAnims_Special:: @ 81C6F18
- .incbin "baserom.gba", 0x1C6F18, 0xF690
+Special_MonToSubstitute:: @ 81D659E
+ createvisualtask sub_80F1420, 2, 0
+ end
diff --git a/data/battle_anim_special.s b/data/battle_anim_special.s
index 5efd1a31e..341f6b4df 100644
--- a/data/battle_anim_special.s
+++ b/data/battle_anim_special.s
@@ -28,4 +28,10 @@ gUnknown_840C104:: @ 840C104
.incbin "baserom.gba", 0x40C104, 0xC0
gUnknown_840C1C4:: @ 840C1C4
- .incbin "baserom.gba", 0x40C1C4, 0x64
+ .incbin "baserom.gba", 0x40C1C4, 0x28
+
+gUnknown_840C1EC::
+ .incbin "baserom.gba", 0x40C1EC, 0x24
+
+gUnknown_840C210::
+ .incbin "baserom.gba", 0x40C210, 0x18
diff --git a/data/battle_anim_status_effects.s b/data/battle_anim_status_effects.s
index 738553830..6e8952131 100644
--- a/data/battle_anim_status_effects.s
+++ b/data/battle_anim_status_effects.s
@@ -1,14 +1,110 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_83BF3E0:: @ 83BF3DC
- .incbin "baserom.gba", 0x3BF3E0, 0x174
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 4, 3
+ obj_image_anim_frame 8, 3
+ obj_image_anim_frame 12, 3
+ obj_image_anim_jump 0
+
+gSpriteAnimTable_83BF3F4:: @ 83BF3F4
+ .4byte gUnknown_83BF3E0
+
+gSpriteTemplate_83BF3F8:: @ 83BF3F8
+ spr_template 10004, 10004, gOamData_83AC9D0, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076F58
+
+gSpriteTemplate_83BF410:: @ 83BF410
+ spr_template 10004, 10004, gOamData_83AC9D0, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076ED8
+
+gUnknown_83BF428:: @ 83BF428
+ obj_image_anim_frame 0x0000, 3
+ obj_image_anim_jump 0x0000
+
+gSpriteAnimTable_83BF430:: @ 83BF430
+ .4byte gUnknown_83BF428
+
+gSpriteTemplate_83BF434:: @ 83BF434
+ spr_template 10283, 10283, gOamData_83AC9D8, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_807729C
+
+gSpriteTemplate_83BF44C:: @ 83BF44C
+ spr_template 10283, 10283, gOamData_83AC9D8, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_8077350
+
+gUnknown_83BF464:: @ 83BF464
+ obj_image_anim_frame 0x0000, 3
+ obj_image_anim_frame 0x0010, 3
+ obj_image_anim_frame 0x0020, 3
+ obj_image_anim_frame 0x0030, 3
+ obj_image_anim_frame 0x0040, 3
+ obj_image_anim_end
+
+gSpriteAnimTable_83BF47C:: @ 83BF47C
+ .4byte gUnknown_83BF464
+
+gSpriteTemplate_83BF480:: @ 83BF480
+ spr_template 10071, 10071, gOamData_83AC9D8, gSpriteAnimTable_83BF47C, NULL, gDummySpriteAffineAnimTable, sub_8076FD0
+
+gSpriteTemplate_83BF498:: @ 83BF498
+ spr_template 10051, 10051, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8076F58
+
+gUnknown_83BF4B0:: @ 83BF4B0
+ obj_image_anim_frame 0x0000, 5
+ obj_image_anim_jump 0x0000
+
+gUnknown_83BF4B8:: @ 83BF4B8
+ obj_image_anim_frame 0x0000, 5
+ obj_image_anim_jump 0x0000
+
+gUnknown_83BF4C0:: @ 83BF4C0
+ obj_image_anim_frame 0x0000, 5
+ obj_image_anim_jump 0x0000
+
+gSpriteAniimTable_83BF4C8:: @ 83BF4C8
+ .4byte gUnknown_83BF4B0
+ .4byte gUnknown_83BF4B8
+ .4byte gUnknown_83BF4C0
+
+gSpriteTemplate_83BF4D4:: @ 83BF4D4
+ spr_template 10135, 10135, gOamData_83AC9D8, gSpriteAniimTable_83BF4C8, NULL, gDummySpriteAffineAnimTable, sub_8076F58
+
+gUnknown_83BF4EC:: @ 83BF4EC
+ obj_image_anim_frame 0x0000, 15
+ obj_image_anim_jump 0x0000
+
+gSpriteAnimTable_83BF4F4:: @ 83BF4F4
+ .4byte gUnknown_83BF4EC
+
+gUnknown_83BF4F8:: @ 83BF4F8
+ obj_rot_scal_anim_frame 0x0060, 0x0060, 0x00, 0
+ obj_rot_scal_anim_frame 0x0002, 0x0002, 0x00, 1
+ obj_rot_scal_anim_jump 0x0001
+
+gSpriteAffineAnimTable_83BF510:: @ 83BF510
+ .4byte gUnknown_83BF4F8
+
+gSpriteTemplate_83BF514:: @ 83BF514
+ spr_template 10004, 10004, gOamData_83ACA90, gSpriteAnimTable_83BF4F4, NULL, gSpriteAffineAnimTable_83BF510, sub_8076ED8
+
+gUnknown_83BF52C:: @ 83BF52C
+ .string "TASK OVER\n"
+ .string "タスクがオーバーしました$"
+
+ .align 2
+gSubsprites_83BF544:: @ 83BF544
+ subsprite 240, 240, 2, 0x00, 64x64
+ subsprite 240, 48, 2, 0x40, 64x32
+ subsprite 48, 240, 2, 0x60, 32x64
+ subsprite 48, 48, 2, 0x80, 32x32
gUnknown_83BF554:: @ 83BF554
- .incbin "baserom.gba", 0x3BF554, 0x8
+ .byte 4
+ .align 2
+ .4byte gSubsprites_83BF544
gUnknown_83BF55C:: @ 83BF55C
- .incbin "baserom.gba", 0x3BF55C, 0x18
+ spr_template 10010, 10010, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_83BF574:: @ 83BF574
- .incbin "baserom.gba", 0x3BF574, 0x18
+ spr_template 10136, 10136, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807834C
diff --git a/data/berry_crush.s b/data/berry_crush.s
new file mode 100644
index 000000000..c17f2c8af
--- /dev/null
+++ b/data/berry_crush.s
@@ -0,0 +1,120 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+gUnknown_846E2E0:: @ 846E2E0
+ .incbin "baserom.gba", 0x46E2E0, 0x8
+
+gUnknown_846E2E8:: @ 846E2E8
+ .incbin "baserom.gba", 0x46E2E8, 0x8
+
+gUnknown_846E2F0:: @ 846E2F0
+ .incbin "baserom.gba", 0x46E2F0, 0x24
+
+gUnknown_846E314:: @ 846E314
+ .incbin "baserom.gba", 0x46E314, 0x14
+
+gUnknown_846E328:: @ 846E328
+ .incbin "baserom.gba", 0x46E328, 0x24
+
+gUnknown_846E34C:: @ 846E34C
+ .incbin "baserom.gba", 0x46E34C, 0x68
+
+gUnknown_846E3B4:: @ 846E3B4
+ .incbin "baserom.gba", 0x46E3B4, 0x10
+
+gUnknown_846E3C4:: @ 846E3C4
+ .incbin "baserom.gba", 0x46E3C4, 0x4
+
+gUnknown_846E3C8:: @ 846E3C8
+ .incbin "baserom.gba", 0x46E3C8, 0x4
+
+gUnknown_846E3CC:: @ 846E3CC
+ .incbin "baserom.gba", 0x46E3CC, 0x4
+
+gUnknown_846E3D0:: @ 846E3D0
+ .incbin "baserom.gba", 0x46E3D0, 0xC
+
+gUnknown_846E3DC:: @ 846E3DC
+ .incbin "baserom.gba", 0x46E3DC, 0x3
+
+gUnknown_846E3DF:: @ 846E3DF
+ .incbin "baserom.gba", 0x46E3DF, 0x3
+
+gUnknown_846E3E2:: @ 846E3E2
+ .incbin "baserom.gba", 0x46E3E2, 0x3
+
+gUnknown_846E3E5:: @ 846E3E5
+ .incbin "baserom.gba", 0x46E3E5, 0x6
+
+gUnknown_846E3EB:: @ 846E3EB
+ .incbin "baserom.gba", 0x46E3EB, 0x5
+
+gUnknown_846E3F0:: @ 846E3F0
+ .incbin "baserom.gba", 0x46E3F0, 0x8
+
+gUnknown_846E3F8:: @ 846E3F8
+ .incbin "baserom.gba", 0x46E3F8, 0x50
+
+gUnknown_846E448:: @ 846E448
+ .incbin "baserom.gba", 0x46E448, 0x8
+
+gUnknown_846E450:: @ 846E450
+ .incbin "baserom.gba", 0x46E450, 0x940
+
+gUnknown_846ED90:: @ 846ED90
+ .incbin "baserom.gba", 0x46ED90, 0x130
+
+gUnknown_846EEC0:: @ 846EEC0
+ .incbin "baserom.gba", 0x46EEC0, 0x198
+
+gUnknown_846F058:: @ 846F058
+ .incbin "baserom.gba", 0x46F058, 0x228
+
+gUnknown_846F280:: @ 846F280
+ .incbin "baserom.gba", 0x46F280, 0x14
+
+gUnknown_846F294:: @ 846F294
+ .incbin "baserom.gba", 0x46F294, 0x3C
+
+gUnknown_846F2D0:: @ 846F2D0
+ .incbin "baserom.gba", 0x46F2D0, 0x1
+
+gUnknown_846F2D1:: @ 846F2D1
+ .incbin "baserom.gba", 0x46F2D1, 0x5
+
+gUnknown_846F2D6:: @ 846F2D6
+ .incbin "baserom.gba", 0x46F2D6, 0x1
+
+gUnknown_846F2D7:: @ 846F2D7
+ .incbin "baserom.gba", 0x46F2D7, 0x15
+
+gUnknown_846F2EC:: @ 846F2EC
+ .incbin "baserom.gba", 0x46F2EC, 0xC
+
+gUnknown_846F2F8:: @ 846F2F8
+ .incbin "baserom.gba", 0x46F2F8, 0x28
+
+gUnknown_846F320:: @ 846F320
+ .incbin "baserom.gba", 0x46F320, 0xF0
+
+gUnknown_846F410:: @ 846F410
+ .incbin "baserom.gba", 0x46F410, 0x18
+
+gUnknown_846F428:: @ 846F428
+ .incbin "baserom.gba", 0x46F428, 0x18
+
+gUnknown_846F440:: @ 846F440
+ .incbin "baserom.gba", 0x46F440, 0x18
+
+gUnknown_846F458:: @ 846F458
+ .incbin "baserom.gba", 0x46F458, 0x18
+
+gUnknown_846F470:: @ 846F470
+ .incbin "baserom.gba", 0x46F470, 0x18
+
+gUnknown_846F488:: @ 846F488
+ .incbin "baserom.gba", 0x46F488, 0x30
+
+gUnknown_846F4B8:: @ 846F4B8
+ .incbin "baserom.gba", 0x46F4B8, 0x18
diff --git a/data/box_party_pokemon_dropdown.s b/data/box_party_pokemon_dropdown.s
index 929aa6ab5..275b53db2 100644
--- a/data/box_party_pokemon_dropdown.s
+++ b/data/box_party_pokemon_dropdown.s
@@ -7,4 +7,12 @@
.align 2
gUnknown_841F4B4:: @ 841F4B4
- .incbin "baserom.gba", 0x41f4b4, 0x20
+ .2byte 0x0100, 0x0100
+ .2byte 0x0200, 0x0100
+ .2byte 0x0100, 0x0200
+ .2byte 0x0200, 0x0200
+
+ .2byte 0x0080, 0x0080
+ .2byte 0x0100, 0x0100
+ .2byte 0x0200, 0x0200
+ .2byte 0x0400, 0x0400
diff --git a/data/clear_save_data_screen.s b/data/clear_save_data_screen.s
index 51149a021..32a2d422a 100644
--- a/data/clear_save_data_screen.s
+++ b/data/clear_save_data_screen.s
@@ -7,10 +7,24 @@
.align 2
gUnknown_841EE64:: @ 841EE64
- .incbin "baserom.gba", 0x41EE64, 0x4
+ .4byte 0x000001f0
+ @ {
+ @ .bg = 0,
+ @ .charBaseIndex = 0,
+ @ .mapBaseIndex = 31,
+ @ .screenSize = 0,
+ @ .paletteMode = 0,
+ @ .priority = 0,
+ @ .baseTile = 0x0000
+ @ }
gUnknown_841EE68:: @ 841EE68
- .incbin "baserom.gba", 0x41EE68, 0x18
+ .byte 0, 3, 5, 6, 4, 15
+ .2byte 0x000a
+ .byte 0, 3, 15, 23, 4, 15
+ .2byte 0x0022
+ .byte 255, 0, 0, 0, 0, 0
+ .2byte 0x0000
gUnknown_841EE80:: @ 841EE80
- .incbin "baserom.gba", 0x41EE80, 0x44
+ .byte 0x01, 0x02, 0x03
diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s
deleted file mode 100644
index 9436bc4fd..000000000
--- a/data/data_8466FB8.s
+++ /dev/null
@@ -1,12 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_84687A0::
- .string "You have collected all STAMPs!\n"
- .string "Want to input a CARD as a prize?$"
-
- .include "data/mevent/script_ish.inc"
- .include "data/mevent/script_common.inc"
diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s
index 0fd702447..08276557a 100644
--- a/data/evolution_graphics.s
+++ b/data/evolution_graphics.s
@@ -6,6 +6,9 @@
.section .rodata
.align 2
+gUnknown_841EE84:: @ 841EE84
+ .incbin "baserom.gba", 0x41EE84, 0x40
+
gUnknown_841EEC4:: @ 841EEC4
.incbin "baserom.gba", 0x41EEC4, 0x10
diff --git a/data/field_door.s b/data/field_door.s
deleted file mode 100644
index a29cf3e24..000000000
--- a/data/field_door.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .section .rodata
-
- .align 2
-gUnknown_835B488:: @ 835B488
- .incbin "baserom.gba", 0x35B488, 0x14
-
-gUnknown_835B49C:: @ 835B49C
- .incbin "baserom.gba", 0x35B49C, 0x14
-
-gUnknown_835B4B0:: @ 835B4B0
- .incbin "baserom.gba", 0x35B4B0, 0x14
-
-gUnknown_835B4C4:: @ 835B4C4
- .incbin "baserom.gba", 0x35B4C4, 0x114
-
-gUnknown_835B5D8:: @ 835B5D8
- .incbin "baserom.gba", 0x35B5D8, 0x18C
diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s
index 429df9f61..7ad7b168a 100644
--- a/data/field_effect_helpers.s
+++ b/data/field_effect_helpers.s
@@ -7,22 +7,28 @@
.align 2
gUnknown_83FECCC:: @ 83FECCC
- .byte 0x0c, 0x00, 0x1c, 0x00, 0x2c, 0x00
+ .2byte 0x0c, 0x1c, 0x2c
gUnknown_83FECD2:: @ 83FECD2
- .incbin "baserom.gba", 0x3FECD2, 0x4
+ .byte 0, 1, 2, 3
gUnknown_83FECD6:: @ 83FECD6
- .incbin "baserom.gba", 0x3FECD6, 0xA
+ .2byte 0x0004, 0x0004, 0x0004, 0x0010
+ .align 2
gUnknown_83FECE0:: @ 83FECE0
- .incbin "baserom.gba", 0x3FECE0, 0x8
+ .4byte sub_80DBB18
+ .4byte sub_80DBB3C
+ .align 2
gUnknown_83FECE8:: @ 83FECE8
- .incbin "baserom.gba", 0x3FECE8, 0xC
+ .4byte sub_80DC318
+ .4byte sub_80DC348
+ .4byte sub_80DC3A8
gUnknown_83FECF4:: @ 83FECF4
- .incbin "baserom.gba", 0x3FECF4, 0x6
+ .byte 0, 0, 1, 2, 3
+ .align 1
gUnknown_83FECFA:: @ 83FECFA
- .incbin "baserom.gba", 0x3FECFA, 0x6
+ .2byte 0x0007, 0x000f
diff --git a/data/field_map_obj.s b/data/field_map_obj.s
index 9c36b523e..e4fe9ceca 100644
--- a/data/field_map_obj.s
+++ b/data/field_map_obj.s
@@ -531,7 +531,15 @@ gUnknown_8398008:: @ 8398008
gUnknown_8398028:: @ 8398028
.incbin "graphics/map_objects/12.gbapal"
- .incbin "baserom.gba", 0x398048, 0x1340
+ .incbin "baserom.gba", 0x398048, 0x600
+
+gUnknown_8398648::
+ .incbin "graphics/map_objects/fldeff_cut.4bpp"
+ .incbin "graphics/map_objects/fldeff_cut.4bpp"
+
+gUnknown_8398688::
+ .incbin "graphics/map_objects/fldeff_cut.gbapal"
+ .incbin "baserom.gba", 0x3986A8, 0xCE0
gUnknown_8399388:: @ 8399388
.incbin "baserom.gba", 0x399388, 0x908
diff --git a/data/field_tasks.s b/data/field_tasks.s
index a91e6cec9..2ff9ad215 100644
--- a/data/field_tasks.s
+++ b/data/field_tasks.s
@@ -1,7 +1,22 @@
.section .rodata
.align 2
gUnknown_83A7310:: @ 83A7310
- .incbin "baserom.gba", 0x3A7310, 0x20
+ .4byte nullsub_40
+ .4byte sub_806EB54
+ .4byte nullsub_40
+ .4byte nullsub_40
+ .4byte sub_806E9E0
+ .4byte nullsub_40
+ .4byte nullsub_40
+ .4byte sub_806EC40
gUnknown_83A7330:: @ 83A7330
- .incbin "baserom.gba", 0x3A7330, 0x14
+ .byte 0x08, 0x03
+ .byte 0x0a, 0x05
+ .byte 0x0f, 0x05
+ .byte 0x08, 0x09
+ .byte 0x09, 0x09
+ .byte 0x10, 0x09
+ .byte 0x08, 0x0a
+ .byte 0x09, 0x0a
+ .byte 0x08, 0x0e
diff --git a/data/fldeff_cut.s b/data/fldeff_cut.s
index 5436b51e4..ca25b396a 100644
--- a/data/fldeff_cut.s
+++ b/data/fldeff_cut.s
@@ -7,10 +7,34 @@
.align 2
gUnknown_83D4100:: @ 83D4100
- .incbin "baserom.gba", 0x3D4100, 0x44
+ .2byte 0x000d, 0x0001
+ .2byte 0x000a, 0x0013
+ .2byte 0x000b, 0x000e
+ .2byte 0x000c, 0x000f
+ .2byte 0x0352, 0x033e
+ .2byte 0x0300, 0x0310
+ .2byte 0x0301, 0x0311
+ .2byte 0x0302, 0x0312
+ .2byte 0x0284, 0x0281
+ .2byte 0xffff, 0xffff
+
+ .align 2
+gOamData_83D4128::
+ .4byte 0x00000000, 0x00001401
+
+gAnimCmd_83D4130::
+ obj_image_anim_frame 0, 30
+ obj_image_anim_jump 0
+
+gSpriteAnimTable_83D4138::
+ .4byte gAnimCmd_83D4130
+
+gUnknown_83D413C::
+ obj_frame_tiles gUnknown_8398648, 0x20
gUnknown_83D4144::
- .incbin "baserom.gba", 0x3D4144, 0x8
+ obj_pal gUnknown_8398688, 4096
gUnknown_83D414C:: @ 83D414C
- .incbin "baserom.gba", 0x3D414C, 0x18
+ spr_template 0xFFFF, 4096, gOamData_83D4128, gSpriteAnimTable_83D4138, gUnknown_83D413C, gDummySpriteAffineAnimTable, objc_8097BA8
+
diff --git a/data/item_use.s b/data/item_use.s
deleted file mode 100644
index aa78ac919..000000000
--- a/data/item_use.s
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
- .incbin "baserom.gba", 0x3E27B4, 0x1A0
-
-gUnknown_83E2954:: @ 83E2954
- .4byte sub_8124C8C
- .4byte CB2_ReturnToField
- .4byte NULL
- .4byte NULL
diff --git a/data/learn_move.s b/data/learn_move.s
deleted file mode 100644
index ff3f2e3d1..000000000
--- a/data/learn_move.s
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_83FF9F4:: @ 83FF9F4
- .incbin "baserom.gba", 0x3FF9F4, 0x8
-
-gUnknown_83FF9FC:: @ 83FF9FC
- .incbin "baserom.gba", 0x3FF9FC, 0x28
-
-gUnknown_83FFA24:: @ 83FFA24
- .incbin "baserom.gba", 0x3FFA24, 0x18
-
-gUnknown_83FFA3C:: @ 83FFA3C
- .incbin "baserom.gba", 0x3FFA3C, 0x8
-
-gUnknown_83FFA44:: @ 83FFA44
- .incbin "baserom.gba", 0x3FFA44, 0x48
-
-gUnknown_83FFA8C:: @ 83FFA8C
- .incbin "baserom.gba", 0x3FFA8C, 0x8
-
-gUnknown_83FFA94:: @ 83FFA94
- .incbin "baserom.gba", 0x3FFA94, 0x30
diff --git a/data/map_name_popup.s b/data/map_name_popup.s
deleted file mode 100644
index 6509df895..000000000
--- a/data/map_name_popup.s
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnknown_83D4164:: @ 83D4164
- .incbin "baserom.gba", 0x3D4164, 0x8
diff --git a/data/metatile_behavior.s b/data/metatile_behavior.s
deleted file mode 100644
index 64d88840d..000000000
--- a/data/metatile_behavior.s
+++ /dev/null
@@ -1,6 +0,0 @@
- .section .rodata
-
- .align 2
-
-gUnknown_8353068:: @ 8353068
- .incbin "baserom.gba", 0x353068, 0x8420
diff --git a/data/mevent/script_common.inc b/data/mevent/script_common.inc
deleted file mode 100644
index f3ca09e3d..000000000
--- a/data/mevent/script_common.inc
+++ /dev/null
@@ -1,87 +0,0 @@
-gMEventSrvScript_UnableToSend::
- .4byte 0x12, 0x10, gMEventClientScript_UnableToRecv @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x0a, NULL @ RETURN (can't send)
-
- .4byte 0x12, 0x10, gMEventClientScript_CommError @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x0b, NULL @ RETURN (comm error)
-
- .4byte 0x12, 0x10, gMEventClientScript_OtherTrainerCanceled @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x09, NULL @ RETURN (other trn canceled)
-
-gMEventSrvScript_OtherTrnHasNews::
- .4byte 0x12, 0x10, gMEventClientScript_AlreadyHadNews @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x07, NULL @ RETURN (other trn has news)
-
-gMEventSrvScript_SentNewsSuccess::
- .4byte 0x12, 0x28, gMEventClientScript_ReceiveNewsAndValidate @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x0e, 0x00, NULL @ SEND_NEWS
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x13, NULL @ RECV
- .4byte 0x08, 0x00, NULL @ READWORD
- .4byte 0x04, 0x01, gMEventSrvScript_OtherTrnHasNews @ BRANCH_EQ
- .4byte 0x12, 0x10, gMEventClientScript_RecvNewsSuccess @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x03, NULL @ RETURN (news sent to)
-
-gMEventSrvScript_SendCardSuccess::
- .4byte 0x12, 0x30, gMEventClientScript_ReceiveCardAndReturnSuccess @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x0d, 0x00, NULL @ SEND_CARD
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x0f, 0x00, NULL @ BUFFER_SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x02, NULL @ RETURN (card sent to)
-
-gMEventSrvScript_AskClientToOverwriteCard::
- .4byte 0x12, 0x28, gMEventClientScript_AskWouldLikeToTossCard @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x13, NULL @ RECV
- .4byte 0x08, 0x00, NULL @ READWORD
- .4byte 0x04, 0x00, gMEventSrvScript_SendCardSuccess @ BRANCH_EQ
- .4byte 0x03, 0x00, gMEventSrvScript_OtherTrainerCanceled @ BRANCH
-
-gMEventSrvScript_OtherTrnHasCard::
- .4byte 0x12, 0x10, gMEventClientScript_AlreadyHadCard @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x05, NULL @ RETURN (other trn has card)
-
- .4byte 0x12, 0x10, gMEventClientScript_NothingSentOver @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x00, NULL @ RETURN (nothing sent over)
-
-gMEventSrvScript_SendNews:: @ 8468B6C
- .4byte 0x1b, 0x00, NULL @ BUFFER_SAVED_NEWS
- .4byte 0x12, 0x20, gMEventClientScript_Send1442CC @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x11, NULL @ RECV
- .4byte 0x05, 0x00, NULL @ READ_1442CC
- .4byte 0x06, 0x00, NULL @ VALID_1442CC
- .4byte 0x04, 0x00, gMEventSrvScript_UnableToSend @ BRANCH_EQ
- .4byte 0x03, 0x00, gMEventSrvScript_SentNewsSuccess @ BRANCH
-
-gMEventSrvScript_SendCard:: @ 8468BCC
- .4byte 0x1a, 0x00, NULL @ BUFFER_SAVED_CARD
- .4byte 0x1c, 0x00, NULL @ RAM_SCRIPT_IF_VALID
- .4byte 0x12, 0x20, gMEventClientScript_Send1442CC @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x11, NULL @ RECV
- .4byte 0x05, 0x00, NULL @ READ_1442CC
- .4byte 0x06, 0x00, NULL @ VALID_1442CC
- .4byte 0x04, 0x00, gMEventSrvScript_UnableToSend @ BRANCH_EQ
- .4byte 0x07, 0x00, NULL @ CHECK_1442CC_14
- .4byte 0x04, 0x02, gMEventSrvScript_AskClientToOverwriteCard @ BRANCH_EQ
- .4byte 0x04, 0x00, gMEventSrvScript_SendCardSuccess @ BRANCH_EQ
- .4byte 0x03, 0x00, gMEventSrvScript_OtherTrnHasCard @ BRANCH
diff --git a/data/mevent/script_ish.inc b/data/mevent/script_ish.inc
deleted file mode 100644
index ed6b639da..000000000
--- a/data/mevent/script_ish.inc
+++ /dev/null
@@ -1,65 +0,0 @@
-gMEventClientScript_InotialListen:: @ 84687E0
- .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
- .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-
-gMEventClientScript_Send1442CC::
- .4byte 0x08, 0x00 @ SEND HEADER MAYBE
- .4byte 0x03, 0x00 @ WAIT SEND
- .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
- .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-
-gMEventClientScript_UnableToRecv:: @ can't accept card or news
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x0a @ RETURN 0x0a
-
-gMEventClientScript_CommError:: @ comm error
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x0b @ RETURN 0x0b
-
-gMEventClientScript_NothingSentOver:: @ nothing sent
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x00 @ RETURN 0x00
-
-gMEventClientScript_ReceiveCardAndReturnSuccess:: @ card success
- .4byte 0x02, 0x16 @ RECEIVE ID(0x16)
- .4byte 0x0a, 0x00 @ RECEIVE_TO_SAVE_FILE
- .4byte 0x02, 0x19 @ RECEIVE ID(0x19)
- .4byte 0x11, 0x00 @ RECEIVE_TO_RAM_SCRIPT
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x02 @ RETURN 0x02
-
-gMEventClientScript_ReceiveNewsAndValidate::
- .4byte 0x02, 0x17 @ RECEIVE ID(0x17)
- .4byte 0x09, 0x00 @ VALIDATE NEWS
- .4byte 0x03, 0x00 @ WAIT SEND
- .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
- .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-
-gMEventClientScript_AlreadyHadNews:: @ already had news
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x07 @ RETURN 0x07
-
-gMEventClientScript_RecvNewsSuccess:: @ news success
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x03 @ RETURN 0x03
-
-gMEventClientScript_AskWouldLikeToTossCard::
- .4byte 0x0d, 0x00 @ REQUEST PARAMETER
- .4byte 0x0e, 0x00 @ SEND PARAMETER
- .4byte 0x03, 0x00 @ WAIT SEND
- .4byte 0x02, 0x10 @ RECEIVE ID(0x10)
- .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-
-gMEventClientScript_OtherTrainerCanceled:: @ comm canceled
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x09 @ RETURN 0x09
-
-gMEventClientScript_AlreadyHadCard:: @ already had card
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x05 @ RETURN 0x05
-
-gMEventClientScript_SuccessFromBuffer:: @ success from buffer
- .4byte 0x02, 0x15 @ RECEIVE ID(0x15)
- .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTE SOMETHING
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x0d @ RETURN 0x0d
diff --git a/data/data_8468C98.s b/data/pokemon_jump.s
index 7ce7c3a02..bddff8c3a 100644
--- a/data/data_8468C98.s
+++ b/data/pokemon_jump.s
@@ -179,120 +179,3 @@ gUnknown_846E2CC:: @ 846E2CC
gUnknown_846E2D4:: @ 846E2D4
.incbin "baserom.gba", 0x46E2D4, 0xC
-
-gUnknown_846E2E0:: @ 846E2E0
- .incbin "baserom.gba", 0x46E2E0, 0x8
-
-gUnknown_846E2E8:: @ 846E2E8
- .incbin "baserom.gba", 0x46E2E8, 0x8
-
-gUnknown_846E2F0:: @ 846E2F0
- .incbin "baserom.gba", 0x46E2F0, 0x24
-
-gUnknown_846E314:: @ 846E314
- .incbin "baserom.gba", 0x46E314, 0x14
-
-gUnknown_846E328:: @ 846E328
- .incbin "baserom.gba", 0x46E328, 0x24
-
-gUnknown_846E34C:: @ 846E34C
- .incbin "baserom.gba", 0x46E34C, 0x68
-
-gUnknown_846E3B4:: @ 846E3B4
- .incbin "baserom.gba", 0x46E3B4, 0x10
-
-gUnknown_846E3C4:: @ 846E3C4
- .incbin "baserom.gba", 0x46E3C4, 0x4
-
-gUnknown_846E3C8:: @ 846E3C8
- .incbin "baserom.gba", 0x46E3C8, 0x4
-
-gUnknown_846E3CC:: @ 846E3CC
- .incbin "baserom.gba", 0x46E3CC, 0x4
-
-gUnknown_846E3D0:: @ 846E3D0
- .incbin "baserom.gba", 0x46E3D0, 0xC
-
-gUnknown_846E3DC:: @ 846E3DC
- .incbin "baserom.gba", 0x46E3DC, 0x3
-
-gUnknown_846E3DF:: @ 846E3DF
- .incbin "baserom.gba", 0x46E3DF, 0x3
-
-gUnknown_846E3E2:: @ 846E3E2
- .incbin "baserom.gba", 0x46E3E2, 0x3
-
-gUnknown_846E3E5:: @ 846E3E5
- .incbin "baserom.gba", 0x46E3E5, 0x6
-
-gUnknown_846E3EB:: @ 846E3EB
- .incbin "baserom.gba", 0x46E3EB, 0x5
-
-gUnknown_846E3F0:: @ 846E3F0
- .incbin "baserom.gba", 0x46E3F0, 0x8
-
-gUnknown_846E3F8:: @ 846E3F8
- .incbin "baserom.gba", 0x46E3F8, 0x50
-
-gUnknown_846E448:: @ 846E448
- .incbin "baserom.gba", 0x46E448, 0x8
-
-gUnknown_846E450:: @ 846E450
- .incbin "baserom.gba", 0x46E450, 0x940
-
-gUnknown_846ED90:: @ 846ED90
- .incbin "baserom.gba", 0x46ED90, 0x130
-
-gUnknown_846EEC0:: @ 846EEC0
- .incbin "baserom.gba", 0x46EEC0, 0x198
-
-gUnknown_846F058:: @ 846F058
- .incbin "baserom.gba", 0x46F058, 0x228
-
-gUnknown_846F280:: @ 846F280
- .incbin "baserom.gba", 0x46F280, 0x14
-
-gUnknown_846F294:: @ 846F294
- .incbin "baserom.gba", 0x46F294, 0x3C
-
-gUnknown_846F2D0:: @ 846F2D0
- .incbin "baserom.gba", 0x46F2D0, 0x1
-
-gUnknown_846F2D1:: @ 846F2D1
- .incbin "baserom.gba", 0x46F2D1, 0x5
-
-gUnknown_846F2D6:: @ 846F2D6
- .incbin "baserom.gba", 0x46F2D6, 0x1
-
-gUnknown_846F2D7:: @ 846F2D7
- .incbin "baserom.gba", 0x46F2D7, 0x15
-
-gUnknown_846F2EC:: @ 846F2EC
- .incbin "baserom.gba", 0x46F2EC, 0xC
-
-gUnknown_846F2F8:: @ 846F2F8
- .incbin "baserom.gba", 0x46F2F8, 0x28
-
-gUnknown_846F320:: @ 846F320
- .incbin "baserom.gba", 0x46F320, 0xF0
-
-gUnknown_846F410:: @ 846F410
- .incbin "baserom.gba", 0x46F410, 0x18
-
-gUnknown_846F428:: @ 846F428
- .incbin "baserom.gba", 0x46F428, 0x18
-
-gUnknown_846F440:: @ 846F440
- .incbin "baserom.gba", 0x46F440, 0x18
-
-gUnknown_846F458:: @ 846F458
- .incbin "baserom.gba", 0x46F458, 0x18
-
-gUnknown_846F470:: @ 846F470
- .incbin "baserom.gba", 0x46F470, 0x18
-
-gUnknown_846F488:: @ 846F488
- .incbin "baserom.gba", 0x46F488, 0x30
-
-gUnknown_846F4B8:: @ 846F4B8
- .incbin "baserom.gba", 0x46F4B8, 0x18
diff --git a/data/save_failed_screen.s b/data/save_failed_screen.s
index cdf68c4de..e19763962 100644
--- a/data/save_failed_screen.s
+++ b/data/save_failed_screen.s
@@ -7,4 +7,4 @@
.align 2
gUnknown_841EE44:: @ 841EE44
- .incbin "baserom.gba", 0x41EE44, 0x20
+ .incbin "graphics/interface/save_failed_screen.gbapal"
diff --git a/data/specials.inc b/data/specials.inc
index 6a0707184..6c1cbfa8e 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -239,7 +239,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special Special_GetLeadMonFriendship
- def_special sub_80E5970
+ def_special ScrSpecial_BattleTowerMapScript2
def_special ChooseNextBattleTowerTrainer
def_special CheckPartyBattleTowerBanlist
def_special PrintBattleTowerTrainerGreeting
diff --git a/data/strings.s b/data/strings.s
index 9b223df62..101946475 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4535,17 +4535,17 @@ gDaycareText_PlayOther:: @ 841E3A8
.string "The two prefer to play with other\n"
.string "POKéMON than each other.$"
-gUnknown_841E3E3:: @ 841E3E3
+gText_TeachWhichMoveToMon:: @ 841E3E3
.string "Teach which move to {STR_VAR_1}?$"
-gUnknown_841E3FB:: @ 841E3FB
+gText_TeachMoveQues:: @ 841E3FB
.string "Teach {STR_VAR_2}?$"
-gUnknown_841E405:: @ 841E405
+gText_MonLearnedMove:: @ 841E405
.string "{STR_VAR_1} learned\n"
.string "{STR_VAR_2}.$"
-gUnknown_841E414:: @ 841E414
+gText_MonIsTryingToLearnMove:: @ 841E414
.string "{STR_VAR_1} is trying to learn\n"
.string "{STR_VAR_2}.\p"
.string "But {STR_VAR_1} can't learn more\n"
@@ -4553,24 +4553,24 @@ gUnknown_841E414:: @ 841E414
.string "Delete an older move to make\n"
.string "room for {STR_VAR_2}?$"
-gUnknown_841E481:: @ 841E481
+gText_StopLearningMove:: @ 841E481
.string "Stop learning {STR_VAR_2}?$"
-gUnknown_841E493:: @ 841E493
+gText_1_2_and_Poof:: @ 841E493
.string "{PAUSE 0x20}1, {PAUSE 0x0F}2, and {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p"
.string "$"
-gUnknown_841E4C0:: @ 841E4C0
+gText_MonForgotOldMoveAndMonLearnedNewMove:: @ 841E4C0
.string "{STR_VAR_1} forgot {STR_VAR_3}.\p"
.string "And‥\p"
.string "{STR_VAR_1}\n"
.string "learned {STR_VAR_2}.$"
-gUnknown_841E4E2:: @ 841E4E2
+gText_GiveUpTryingToTeachNewMove:: @ 841E4E2
.string "Give up trying to teach a new\n"
.string "move to {STR_VAR_1}?$"
-gUnknown_841E50C:: @ 841E50C
+gText_WhichMoveShouldBeForgotten:: @ 841E50C
.string "Which move should be forgotten?\p"
.string "$"
diff --git a/data/unknown_serial_data.s b/data/unknown_serial_data.s
index 57c979340..ec5818604 100644
--- a/data/unknown_serial_data.s
+++ b/data/unknown_serial_data.s
@@ -1,5 +1,5 @@
.section .rodata
gUnknownSerialData_Start:: @ 86FC50C
- .incbin "baserom.gba", 0x6FC50C, 0x3760
+ .incbin "data/unknown_serial_data.bin"
gUnknownSerialData_End::
diff --git a/graphics/door_anims/frame_8353088_1.png b/graphics/door_anims/frame_8353088_1.png
new file mode 100644
index 000000000..e831eda38
--- /dev/null
+++ b/graphics/door_anims/frame_8353088_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353088_2.png b/graphics/door_anims/frame_8353088_2.png
new file mode 100644
index 000000000..981aaa7fd
--- /dev/null
+++ b/graphics/door_anims/frame_8353088_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353088_3.png b/graphics/door_anims/frame_8353088_3.png
new file mode 100644
index 000000000..a4edcdc0b
--- /dev/null
+++ b/graphics/door_anims/frame_8353088_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353228_1.png b/graphics/door_anims/frame_8353228_1.png
new file mode 100644
index 000000000..2f7b80495
--- /dev/null
+++ b/graphics/door_anims/frame_8353228_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353228_2.png b/graphics/door_anims/frame_8353228_2.png
new file mode 100644
index 000000000..d603dd800
--- /dev/null
+++ b/graphics/door_anims/frame_8353228_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353228_3.png b/graphics/door_anims/frame_8353228_3.png
new file mode 100644
index 000000000..97a87ea4c
--- /dev/null
+++ b/graphics/door_anims/frame_8353228_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_83533C8_1.png b/graphics/door_anims/frame_83533C8_1.png
new file mode 100644
index 000000000..4ce6b79ed
--- /dev/null
+++ b/graphics/door_anims/frame_83533C8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_83533C8_2.png b/graphics/door_anims/frame_83533C8_2.png
new file mode 100644
index 000000000..8f668959e
--- /dev/null
+++ b/graphics/door_anims/frame_83533C8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_83533C8_3.png b/graphics/door_anims/frame_83533C8_3.png
new file mode 100644
index 000000000..97a87ea4c
--- /dev/null
+++ b/graphics/door_anims/frame_83533C8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353568_1.png b/graphics/door_anims/frame_8353568_1.png
new file mode 100644
index 000000000..5fde23141
--- /dev/null
+++ b/graphics/door_anims/frame_8353568_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353568_2.png b/graphics/door_anims/frame_8353568_2.png
new file mode 100644
index 000000000..93b6e18f5
--- /dev/null
+++ b/graphics/door_anims/frame_8353568_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353568_3.png b/graphics/door_anims/frame_8353568_3.png
new file mode 100644
index 000000000..a4edcdc0b
--- /dev/null
+++ b/graphics/door_anims/frame_8353568_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353708_1.png b/graphics/door_anims/frame_8353708_1.png
new file mode 100644
index 000000000..e56c2f31e
--- /dev/null
+++ b/graphics/door_anims/frame_8353708_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353708_2.png b/graphics/door_anims/frame_8353708_2.png
new file mode 100644
index 000000000..e1f7d5272
--- /dev/null
+++ b/graphics/door_anims/frame_8353708_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353708_3.png b/graphics/door_anims/frame_8353708_3.png
new file mode 100644
index 000000000..a4edcdc0b
--- /dev/null
+++ b/graphics/door_anims/frame_8353708_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_83538A8_1.png b/graphics/door_anims/frame_83538A8_1.png
new file mode 100644
index 000000000..117acac1d
--- /dev/null
+++ b/graphics/door_anims/frame_83538A8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_83538A8_2.png b/graphics/door_anims/frame_83538A8_2.png
new file mode 100644
index 000000000..58aa0d456
--- /dev/null
+++ b/graphics/door_anims/frame_83538A8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_83538A8_3.png b/graphics/door_anims/frame_83538A8_3.png
new file mode 100644
index 000000000..a9f2c98f5
--- /dev/null
+++ b/graphics/door_anims/frame_83538A8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353A48_1.png b/graphics/door_anims/frame_8353A48_1.png
new file mode 100644
index 000000000..5ea623f10
--- /dev/null
+++ b/graphics/door_anims/frame_8353A48_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353A48_2.png b/graphics/door_anims/frame_8353A48_2.png
new file mode 100644
index 000000000..dba5c1935
--- /dev/null
+++ b/graphics/door_anims/frame_8353A48_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353A48_3.png b/graphics/door_anims/frame_8353A48_3.png
new file mode 100644
index 000000000..a4edcdc0b
--- /dev/null
+++ b/graphics/door_anims/frame_8353A48_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353BE8_1.png b/graphics/door_anims/frame_8353BE8_1.png
new file mode 100644
index 000000000..3b8a60396
--- /dev/null
+++ b/graphics/door_anims/frame_8353BE8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353BE8_2.png b/graphics/door_anims/frame_8353BE8_2.png
new file mode 100644
index 000000000..ac557a4ea
--- /dev/null
+++ b/graphics/door_anims/frame_8353BE8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353BE8_3.png b/graphics/door_anims/frame_8353BE8_3.png
new file mode 100644
index 000000000..de5e8c356
--- /dev/null
+++ b/graphics/door_anims/frame_8353BE8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353D88_1.png b/graphics/door_anims/frame_8353D88_1.png
new file mode 100644
index 000000000..37d7e78da
--- /dev/null
+++ b/graphics/door_anims/frame_8353D88_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353D88_2.png b/graphics/door_anims/frame_8353D88_2.png
new file mode 100644
index 000000000..405f027b0
--- /dev/null
+++ b/graphics/door_anims/frame_8353D88_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353D88_3.png b/graphics/door_anims/frame_8353D88_3.png
new file mode 100644
index 000000000..052c55606
--- /dev/null
+++ b/graphics/door_anims/frame_8353D88_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353F28_1.png b/graphics/door_anims/frame_8353F28_1.png
new file mode 100644
index 000000000..379003d13
--- /dev/null
+++ b/graphics/door_anims/frame_8353F28_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353F28_2.png b/graphics/door_anims/frame_8353F28_2.png
new file mode 100644
index 000000000..2337f80df
--- /dev/null
+++ b/graphics/door_anims/frame_8353F28_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8353F28_3.png b/graphics/door_anims/frame_8353F28_3.png
new file mode 100644
index 000000000..97a87ea4c
--- /dev/null
+++ b/graphics/door_anims/frame_8353F28_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_83540C8_1.png b/graphics/door_anims/frame_83540C8_1.png
new file mode 100644
index 000000000..5c582fbf0
--- /dev/null
+++ b/graphics/door_anims/frame_83540C8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_83540C8_2.png b/graphics/door_anims/frame_83540C8_2.png
new file mode 100644
index 000000000..b23db61c5
--- /dev/null
+++ b/graphics/door_anims/frame_83540C8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_83540C8_3.png b/graphics/door_anims/frame_83540C8_3.png
new file mode 100644
index 000000000..8870077b3
--- /dev/null
+++ b/graphics/door_anims/frame_83540C8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354268_1.png b/graphics/door_anims/frame_8354268_1.png
new file mode 100644
index 000000000..5a09abac0
--- /dev/null
+++ b/graphics/door_anims/frame_8354268_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354268_2.png b/graphics/door_anims/frame_8354268_2.png
new file mode 100644
index 000000000..e46d8b0af
--- /dev/null
+++ b/graphics/door_anims/frame_8354268_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354268_3.png b/graphics/door_anims/frame_8354268_3.png
new file mode 100644
index 000000000..97a87ea4c
--- /dev/null
+++ b/graphics/door_anims/frame_8354268_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354408_1.png b/graphics/door_anims/frame_8354408_1.png
new file mode 100644
index 000000000..680c715fb
--- /dev/null
+++ b/graphics/door_anims/frame_8354408_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354408_2.png b/graphics/door_anims/frame_8354408_2.png
new file mode 100644
index 000000000..a6014c89f
--- /dev/null
+++ b/graphics/door_anims/frame_8354408_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354408_3.png b/graphics/door_anims/frame_8354408_3.png
new file mode 100644
index 000000000..c3a852e27
--- /dev/null
+++ b/graphics/door_anims/frame_8354408_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_83545A8_1.png b/graphics/door_anims/frame_83545A8_1.png
new file mode 100644
index 000000000..46de34aaf
--- /dev/null
+++ b/graphics/door_anims/frame_83545A8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_83545A8_2.png b/graphics/door_anims/frame_83545A8_2.png
new file mode 100644
index 000000000..1ca78103b
--- /dev/null
+++ b/graphics/door_anims/frame_83545A8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_83545A8_3.png b/graphics/door_anims/frame_83545A8_3.png
new file mode 100644
index 000000000..f2de21913
--- /dev/null
+++ b/graphics/door_anims/frame_83545A8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354748_1.png b/graphics/door_anims/frame_8354748_1.png
new file mode 100644
index 000000000..fb3d4bbcd
--- /dev/null
+++ b/graphics/door_anims/frame_8354748_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354748_2.png b/graphics/door_anims/frame_8354748_2.png
new file mode 100644
index 000000000..f6b3644b8
--- /dev/null
+++ b/graphics/door_anims/frame_8354748_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354748_3.png b/graphics/door_anims/frame_8354748_3.png
new file mode 100644
index 000000000..eec2567a1
--- /dev/null
+++ b/graphics/door_anims/frame_8354748_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_83548E8_1.png b/graphics/door_anims/frame_83548E8_1.png
new file mode 100644
index 000000000..22566a901
--- /dev/null
+++ b/graphics/door_anims/frame_83548E8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_83548E8_2.png b/graphics/door_anims/frame_83548E8_2.png
new file mode 100644
index 000000000..35f772671
--- /dev/null
+++ b/graphics/door_anims/frame_83548E8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_83548E8_3.png b/graphics/door_anims/frame_83548E8_3.png
new file mode 100644
index 000000000..226fe6bb0
--- /dev/null
+++ b/graphics/door_anims/frame_83548E8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354A88_1.png b/graphics/door_anims/frame_8354A88_1.png
new file mode 100644
index 000000000..157c348a8
--- /dev/null
+++ b/graphics/door_anims/frame_8354A88_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354A88_2.png b/graphics/door_anims/frame_8354A88_2.png
new file mode 100644
index 000000000..72e919a2d
--- /dev/null
+++ b/graphics/door_anims/frame_8354A88_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354A88_3.png b/graphics/door_anims/frame_8354A88_3.png
new file mode 100644
index 000000000..e5c635d9c
--- /dev/null
+++ b/graphics/door_anims/frame_8354A88_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354C28_1.png b/graphics/door_anims/frame_8354C28_1.png
new file mode 100644
index 000000000..cd6285a64
--- /dev/null
+++ b/graphics/door_anims/frame_8354C28_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354C28_2.png b/graphics/door_anims/frame_8354C28_2.png
new file mode 100644
index 000000000..11a1c36e0
--- /dev/null
+++ b/graphics/door_anims/frame_8354C28_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354C28_3.png b/graphics/door_anims/frame_8354C28_3.png
new file mode 100644
index 000000000..c0d626d06
--- /dev/null
+++ b/graphics/door_anims/frame_8354C28_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354F48_1.png b/graphics/door_anims/frame_8354F48_1.png
new file mode 100644
index 000000000..a1e6eace1
--- /dev/null
+++ b/graphics/door_anims/frame_8354F48_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354F48_2.png b/graphics/door_anims/frame_8354F48_2.png
new file mode 100644
index 000000000..dd1e0e15c
--- /dev/null
+++ b/graphics/door_anims/frame_8354F48_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8354F48_3.png b/graphics/door_anims/frame_8354F48_3.png
new file mode 100644
index 000000000..cf7978637
--- /dev/null
+++ b/graphics/door_anims/frame_8354F48_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355268_1.png b/graphics/door_anims/frame_8355268_1.png
new file mode 100644
index 000000000..d752d94ef
--- /dev/null
+++ b/graphics/door_anims/frame_8355268_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355268_2.png b/graphics/door_anims/frame_8355268_2.png
new file mode 100644
index 000000000..237c46cb9
--- /dev/null
+++ b/graphics/door_anims/frame_8355268_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355268_3.png b/graphics/door_anims/frame_8355268_3.png
new file mode 100644
index 000000000..19a595cd0
--- /dev/null
+++ b/graphics/door_anims/frame_8355268_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355588_1.png b/graphics/door_anims/frame_8355588_1.png
new file mode 100644
index 000000000..b8ee1eb42
--- /dev/null
+++ b/graphics/door_anims/frame_8355588_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355588_2.png b/graphics/door_anims/frame_8355588_2.png
new file mode 100644
index 000000000..fff93e91a
--- /dev/null
+++ b/graphics/door_anims/frame_8355588_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8355588_3.png b/graphics/door_anims/frame_8355588_3.png
new file mode 100644
index 000000000..0c1b9c03c
--- /dev/null
+++ b/graphics/door_anims/frame_8355588_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359588_1.png b/graphics/door_anims/frame_8359588_1.png
new file mode 100644
index 000000000..53732f512
--- /dev/null
+++ b/graphics/door_anims/frame_8359588_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359588_2.png b/graphics/door_anims/frame_8359588_2.png
new file mode 100644
index 000000000..53732f512
--- /dev/null
+++ b/graphics/door_anims/frame_8359588_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359788_1.png b/graphics/door_anims/frame_8359788_1.png
new file mode 100644
index 000000000..8f1168aea
--- /dev/null
+++ b/graphics/door_anims/frame_8359788_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359788_2.png b/graphics/door_anims/frame_8359788_2.png
new file mode 100644
index 000000000..041e6293f
--- /dev/null
+++ b/graphics/door_anims/frame_8359788_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359788_3.png b/graphics/door_anims/frame_8359788_3.png
new file mode 100644
index 000000000..f103be5a1
--- /dev/null
+++ b/graphics/door_anims/frame_8359788_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359788_4.png b/graphics/door_anims/frame_8359788_4.png
new file mode 100644
index 000000000..36f6cf135
--- /dev/null
+++ b/graphics/door_anims/frame_8359788_4.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359988_1.png b/graphics/door_anims/frame_8359988_1.png
new file mode 100644
index 000000000..75a43b9fb
--- /dev/null
+++ b/graphics/door_anims/frame_8359988_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359988_2.png b/graphics/door_anims/frame_8359988_2.png
new file mode 100644
index 000000000..a1f6f806c
--- /dev/null
+++ b/graphics/door_anims/frame_8359988_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359988_3.png b/graphics/door_anims/frame_8359988_3.png
new file mode 100644
index 000000000..d7abc49ba
--- /dev/null
+++ b/graphics/door_anims/frame_8359988_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359988_4.png b/graphics/door_anims/frame_8359988_4.png
new file mode 100644
index 000000000..1af99db23
--- /dev/null
+++ b/graphics/door_anims/frame_8359988_4.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359B88_1.png b/graphics/door_anims/frame_8359B88_1.png
new file mode 100644
index 000000000..a5208db18
--- /dev/null
+++ b/graphics/door_anims/frame_8359B88_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359B88_2.png b/graphics/door_anims/frame_8359B88_2.png
new file mode 100644
index 000000000..e3ecef0fe
--- /dev/null
+++ b/graphics/door_anims/frame_8359B88_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359B88_3.png b/graphics/door_anims/frame_8359B88_3.png
new file mode 100644
index 000000000..d4be7a81f
--- /dev/null
+++ b/graphics/door_anims/frame_8359B88_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359B88_4.png b/graphics/door_anims/frame_8359B88_4.png
new file mode 100644
index 000000000..4ba80f998
--- /dev/null
+++ b/graphics/door_anims/frame_8359B88_4.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359CA8_1.png b/graphics/door_anims/frame_8359CA8_1.png
new file mode 100644
index 000000000..c0913878b
--- /dev/null
+++ b/graphics/door_anims/frame_8359CA8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359CA8_2.png b/graphics/door_anims/frame_8359CA8_2.png
new file mode 100644
index 000000000..800bb92c4
--- /dev/null
+++ b/graphics/door_anims/frame_8359CA8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359CA8_3.png b/graphics/door_anims/frame_8359CA8_3.png
new file mode 100644
index 000000000..e2f16ef25
--- /dev/null
+++ b/graphics/door_anims/frame_8359CA8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359FC8_1.png b/graphics/door_anims/frame_8359FC8_1.png
new file mode 100644
index 000000000..9428b111a
--- /dev/null
+++ b/graphics/door_anims/frame_8359FC8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359FC8_2.png b/graphics/door_anims/frame_8359FC8_2.png
new file mode 100644
index 000000000..484eefd83
--- /dev/null
+++ b/graphics/door_anims/frame_8359FC8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_8359FC8_3.png b/graphics/door_anims/frame_8359FC8_3.png
new file mode 100644
index 000000000..467c04f7f
--- /dev/null
+++ b/graphics/door_anims/frame_8359FC8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A168_1.png b/graphics/door_anims/frame_835A168_1.png
new file mode 100644
index 000000000..f23474512
--- /dev/null
+++ b/graphics/door_anims/frame_835A168_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A168_2.png b/graphics/door_anims/frame_835A168_2.png
new file mode 100644
index 000000000..adcb7ce12
--- /dev/null
+++ b/graphics/door_anims/frame_835A168_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A168_3.png b/graphics/door_anims/frame_835A168_3.png
new file mode 100644
index 000000000..e87798cd2
--- /dev/null
+++ b/graphics/door_anims/frame_835A168_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A308_1.png b/graphics/door_anims/frame_835A308_1.png
new file mode 100644
index 000000000..c11c06156
--- /dev/null
+++ b/graphics/door_anims/frame_835A308_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A308_2.png b/graphics/door_anims/frame_835A308_2.png
new file mode 100644
index 000000000..3d825f587
--- /dev/null
+++ b/graphics/door_anims/frame_835A308_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A308_3.png b/graphics/door_anims/frame_835A308_3.png
new file mode 100644
index 000000000..e87798cd2
--- /dev/null
+++ b/graphics/door_anims/frame_835A308_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A4A8_1.png b/graphics/door_anims/frame_835A4A8_1.png
new file mode 100644
index 000000000..9428b111a
--- /dev/null
+++ b/graphics/door_anims/frame_835A4A8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A4A8_2.png b/graphics/door_anims/frame_835A4A8_2.png
new file mode 100644
index 000000000..484eefd83
--- /dev/null
+++ b/graphics/door_anims/frame_835A4A8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A4A8_3.png b/graphics/door_anims/frame_835A4A8_3.png
new file mode 100644
index 000000000..467c04f7f
--- /dev/null
+++ b/graphics/door_anims/frame_835A4A8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A648_1.png b/graphics/door_anims/frame_835A648_1.png
new file mode 100644
index 000000000..7cac61ead
--- /dev/null
+++ b/graphics/door_anims/frame_835A648_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A648_2.png b/graphics/door_anims/frame_835A648_2.png
new file mode 100644
index 000000000..618b958b9
--- /dev/null
+++ b/graphics/door_anims/frame_835A648_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A648_3.png b/graphics/door_anims/frame_835A648_3.png
new file mode 100644
index 000000000..28942389b
--- /dev/null
+++ b/graphics/door_anims/frame_835A648_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A7E8_1.png b/graphics/door_anims/frame_835A7E8_1.png
new file mode 100644
index 000000000..2b51bba5f
--- /dev/null
+++ b/graphics/door_anims/frame_835A7E8_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A7E8_2.png b/graphics/door_anims/frame_835A7E8_2.png
new file mode 100644
index 000000000..b29303c1b
--- /dev/null
+++ b/graphics/door_anims/frame_835A7E8_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A7E8_3.png b/graphics/door_anims/frame_835A7E8_3.png
new file mode 100644
index 000000000..55e1b2db9
--- /dev/null
+++ b/graphics/door_anims/frame_835A7E8_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A988_1.png b/graphics/door_anims/frame_835A988_1.png
new file mode 100644
index 000000000..9428b111a
--- /dev/null
+++ b/graphics/door_anims/frame_835A988_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A988_2.png b/graphics/door_anims/frame_835A988_2.png
new file mode 100644
index 000000000..484eefd83
--- /dev/null
+++ b/graphics/door_anims/frame_835A988_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835A988_3.png b/graphics/door_anims/frame_835A988_3.png
new file mode 100644
index 000000000..467c04f7f
--- /dev/null
+++ b/graphics/door_anims/frame_835A988_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AB28_1.png b/graphics/door_anims/frame_835AB28_1.png
new file mode 100644
index 000000000..73f90730c
--- /dev/null
+++ b/graphics/door_anims/frame_835AB28_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AB28_2.png b/graphics/door_anims/frame_835AB28_2.png
new file mode 100644
index 000000000..6d8d9c305
--- /dev/null
+++ b/graphics/door_anims/frame_835AB28_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AB28_3.png b/graphics/door_anims/frame_835AB28_3.png
new file mode 100644
index 000000000..b3d9eada1
--- /dev/null
+++ b/graphics/door_anims/frame_835AB28_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AE48_1.png b/graphics/door_anims/frame_835AE48_1.png
new file mode 100644
index 000000000..6d9956306
--- /dev/null
+++ b/graphics/door_anims/frame_835AE48_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AE48_2.png b/graphics/door_anims/frame_835AE48_2.png
new file mode 100644
index 000000000..62b93f79e
--- /dev/null
+++ b/graphics/door_anims/frame_835AE48_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835AE48_3.png b/graphics/door_anims/frame_835AE48_3.png
new file mode 100644
index 000000000..a98073235
--- /dev/null
+++ b/graphics/door_anims/frame_835AE48_3.png
Binary files differ
diff --git a/graphics/door_anims/frame_835B168_1.png b/graphics/door_anims/frame_835B168_1.png
new file mode 100644
index 000000000..7c75282d6
--- /dev/null
+++ b/graphics/door_anims/frame_835B168_1.png
Binary files differ
diff --git a/graphics/door_anims/frame_835B168_2.png b/graphics/door_anims/frame_835B168_2.png
new file mode 100644
index 000000000..283aceba5
--- /dev/null
+++ b/graphics/door_anims/frame_835B168_2.png
Binary files differ
diff --git a/graphics/door_anims/frame_835B168_3.png b/graphics/door_anims/frame_835B168_3.png
new file mode 100644
index 000000000..457a26c29
--- /dev/null
+++ b/graphics/door_anims/frame_835B168_3.png
Binary files differ
diff --git a/graphics/interface/save_failed_screen.pal b/graphics/interface/save_failed_screen.pal
new file mode 100644
index 000000000..f7932450f
--- /dev/null
+++ b/graphics/interface/save_failed_screen.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+16 115 230
+255 255 255
+98 98 98
+213 213 205
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+0 0 0
+74 205 238
+49 164 238
+0 90 131
+24 98 197
+16 115 230
diff --git a/graphics/learn_move/interface_sprites.png b/graphics/learn_move/interface_sprites.png
new file mode 100644
index 000000000..4fa3d4a1b
--- /dev/null
+++ b/graphics/learn_move/interface_sprites.png
Binary files differ
diff --git a/graphics/map_objects/fldeff_cut.png b/graphics/map_objects/fldeff_cut.png
new file mode 100644
index 000000000..031d04b40
--- /dev/null
+++ b/graphics/map_objects/fldeff_cut.png
Binary files differ
diff --git a/include/battle.h b/include/battle.h
index 0a441df1c..00f7dcea9 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -432,7 +432,7 @@ struct BattleStruct
u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBattler;
u8 switchInItemsCounter;
- u8 arenaTurnCounter; // not used in FR?
+ u8 field_DA; // battle tower related
u8 turnSideTracker;
u8 fillerDC[0xDF-0xDC];
u8 givenExpMons;
diff --git a/include/battle_tower.h b/include/battle_tower.h
index b7b106107..9bb93f1c2 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -12,7 +12,7 @@ struct BattleTowerTrainer
u8 trainerClass;
u8 name[3];
u8 teamFlags;
- u16 speech[6];
+ u16 greeting[6];
};
struct BattleTowerPokemonTemplate
@@ -26,7 +26,7 @@ struct BattleTowerPokemonTemplate
};
u16 sub_8164FCC(u8, u8);
-void sub_80E7524(struct BattleTowerEReaderTrainer *);
+void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
void ValidateEReaderTrainer(void);
u8 GetBattleTowerTrainerFrontSpriteId(void);
u8 GetEreaderTrainerFrontSpriteId(void);
diff --git a/include/constants/battle_tower.h b/include/constants/battle_tower.h
index b0080caff..6e37d15ec 100644
--- a/include/constants/battle_tower.h
+++ b/include/constants/battle_tower.h
@@ -72,4 +72,11 @@
#define BATTLE_TOWER_ITEM_LUCKY_PUNCH 61
#define BATTLE_TOWER_ITEM_GANLON_BERRY 62
+#define BTSPECIAL_TEST 0
+#define BTSPECIAL_RESULT_SAVE_SCUM 1
+#define BTSPECIAL_RESULT_WON7 2
+#define BTSPECIAL_RESULT_LOST 3
+#define BTSPECIAL_RESULT_QUICKSAVE 4
+#define BTSPECIAL_RESULT_INACTIVE 5
+
#endif //GUARD_CONSTANTS_BATTLE_TOWER_H
diff --git a/include/field_camera.h b/include/field_camera.h
index d2165780a..fb9861014 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -30,5 +30,6 @@ void sub_805A658(s16 *x, s16 *y);
void SetCameraPanningCallback(void (*cb)(void));
void SetCameraPanning(s16 x, s16 y);
void InstallCameraPanAheadCallback(void);
+void DrawDoorMetatileAt(int x, int y, const u16 *data);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_door.h b/include/field_door.h
index 0059cbe1a..777afffce 100644
--- a/include/field_door.h
+++ b/include/field_door.h
@@ -3,11 +3,11 @@
#include "global.h"
-void FieldSetDoorOpened(u32, u32);
-void FieldSetDoorClosed(u32, u32);
-s8 FieldAnimateDoorClose(u32, u32);
-s8 FieldAnimateDoorOpen(u32, u32);
+void FieldSetDoorOpened(int x, int y);
+void FieldSetDoorClosed(int x, int y);
+s8 FieldAnimateDoorClose(int x, int y);
+s8 FieldAnimateDoorOpen(int x, int y);
bool8 FieldIsDoorAnimationRunning(void);
-u32 GetDoorSoundEffect(u32 x, u32 y);
+u16 GetDoorSoundEffect(int x, int y);
#endif
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 01bb85b7a..e416c3577 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -110,12 +110,12 @@
u32 _size = size; \
while (1) \
{ \
- DmaFill##bit(dmaNum, 0, dest, (block)); \
- dest += (block); \
+ DmaFill##bit(dmaNum, 0, dest, (block)); \
+ dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
- DmaFill##bit(dmaNum, 0, dest, _size); \
+ DmaFill##bit(dmaNum, 0, dest, _size); \
break; \
} \
} \
@@ -123,16 +123,16 @@
#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
{ \
- void *_dest = (void *)dest; \
+ void *_dest = (void *)dest; \
u32 _size = size; \
while (1) \
{ \
- DmaFill##bit(dmaNum, value, _dest, (block)); \
+ DmaFill##bit(dmaNum, value, _dest, (block)); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
- DmaFill##bit(dmaNum, value, _dest, _size); \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
break; \
} \
} \
@@ -162,7 +162,7 @@
#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
{ \
- void *_dest = (void *)dest; \
+ void *_dest = (void *)dest; \
u32 _size = size; \
DmaFill##bit(dmaNum, value, _dest, _size); \
}
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index c0f25fa93..70e806266 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -163,7 +163,7 @@ struct MapHeader
/* 0x17 */ u8 mapType;
/* 0x18 */ u8 filler_18;
/* 0x19 */ u8 escapeRope;
- /* 0x1A */ u8 flags;
+ /* 0x1A */ s8 flags;
/* 0x1B */ u8 battleType;
};
diff --git a/include/graphics.h b/include/graphics.h
index 340b737aa..354339235 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4230,7 +4230,13 @@ extern const u16 gTradeMenuMonBox_Tilemap[];
extern const u16 gUnknown_8E9CBBC[];
extern const u16 gUnknown_8E9CB9C[];
+// hall_of_fame
extern const u32 gFile_graphics_misc_confetti_sheet[];
extern const u32 gFile_graphics_misc_confetti_palette[];
+// learn_move
+extern const u16 gUnknown_8E97DDC[];
+extern const u32 gUnknown_8E97DFC[];
+extern const u32 gUnknown_8E97EC4[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 6e6e5f7a3..671488be0 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -43,4 +43,7 @@ void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
+#include "mevent_server.h"
+extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
+
#endif //GUARD_LINK_RFU_H
diff --git a/include/map_name_popup.h b/include/map_name_popup.h
index cf9b005d9..c8ce02c30 100644
--- a/include/map_name_popup.h
+++ b/include/map_name_popup.h
@@ -3,12 +3,6 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void HideMapNamePopUpWindow(void);
-void sub_8098110(u8);
+void CreateMapNamePopupIfNotAlreadyRunning(bool32 palIntoFadedBuffer);
#endif //GUARD_MAP_NAME_POPUP_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index df03001bf..d567ab77c 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -151,6 +151,5 @@ bool8 MetatileBehavior_IsImpressiveMachine(u8 metatileBehavior);
bool8 MetatileBehavior_IsVideoGame(u8 metatileBehavior);
bool8 MetatileBehavior_IsBurglary(u8 metatileBehavior);
bool8 MetatileBehavior_IsMBA3(u8 metatileBehavior);
-extern u8 gUnknown_8353068[];
#endif // GUARD_METATILE_BEHAVIOR
diff --git a/include/mevent_server.h b/include/mevent_server.h
index ddc00b978..b691e9e1f 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -37,6 +37,20 @@ struct mevent_client_cmd
u32 parameter;
};
+// Client commands
+#define CLI_RETURN(x) {.instr = 1, .parameter = x}
+#define CLI_RECEIVE(x) {.instr = 2, .parameter = x}
+#define CLI_WAITSND {.instr = 3, .parameter = 0}
+#define CLI_JUMPBUF {.instr = 4, .parameter = 0}
+#define CLI_SNDHEAD {.instr = 8, .parameter = 0}
+#define CLI_VLDNEWS {.instr = 9, .parameter = 0}
+#define CLI_RECVSAV {.instr = 10, .parameter = 0}
+#define CLI_RECVBUF {.instr = 12, .parameter = 0}
+#define CLI_REQWORD {.instr = 13, .parameter = 0}
+#define CLI_SNDWORD {.instr = 14, .parameter = 0}
+#define CLI_RECVRAM {.instr = 17, .parameter = 0}
+#define CLI_SENDALL {.instr = 20, .parameter = 0}
+
struct mevent_client
{
u32 unk_00;
@@ -58,6 +72,24 @@ struct mevent_server_cmd
void * parameter;
};
+// Server commands
+#define SRV_RETURN(x) {.instr = 0, .flag = x}
+#define SRV_WAITSND {.instr = 1}
+#define SRV_RECV(x) {.instr = 2, .flag = x}
+#define SRV_BRANCH(y) {.instr = 3, .parameter = (void *)y}
+#define SRV_BRANCHIF(x, y) {.instr = 4, .flag = x, .parameter = (void *)y}
+#define SRV_READ_1442CC {.instr = 5}
+#define SRV_VALID_1442CC {.instr = 6}
+#define SRV_CHECK_1442CC_14 {.instr = 7}
+#define SRV_READWORD {.instr = 8}
+#define SRV_SEND_CARD {.instr = 13}
+#define SRV_SEND_NEWS {.instr = 14}
+#define SRV_BUFFER_SEND {.instr = 15}
+#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
+#define SRV_BUFFER_CARD {.instr = 26}
+#define SRV_BUFFER_NEWS {.instr = 27}
+#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
+
struct mevent_srv_common
{
u32 unk_00;
diff --git a/include/party_menu.h b/include/party_menu.h
index d7c2f1248..19cdda1dc 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -45,6 +45,7 @@ extern u8 gUnknown_203B0C0;
extern u8 gUnknown_203B0C1;
extern u8 gUnknown_203B0DC[3];
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
+extern u8 gSelectedOrderFromParty[3];
bool8 FieldCallback_PrepareFadeInFromMenu(void);
bool8 MonKnowsMove(struct Pokemon *, u16);
diff --git a/include/save_menu_util.h b/include/save_menu_util.h
index f2a18a777..7085520b4 100644
--- a/include/save_menu_util.h
+++ b/include/save_menu_util.h
@@ -7,7 +7,8 @@ enum SaveStat
SAVE_STAT_POKEDEX,
SAVE_STAT_TIME,
SAVE_STAT_LOCATION,
- SAVE_STAT_BADGES
+ SAVE_STAT_BADGES,
+ SAVE_STAT_TIME_HR_RT_ALIGN
};
void SaveStatToString(u8 a0, u8 *a1, u8 a2);
diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h
index 768e838dd..b63a7b0ef 100644
--- a/include/script_pokemon_util_80A0058.h
+++ b/include/script_pokemon_util_80A0058.h
@@ -5,5 +5,6 @@ bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3
bool8 ScriptGiveEgg(u16 species);
void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot);
void sp000_heal_pokemon(void);
+void ReducePlayerPartyToThree(void);
#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
diff --git a/include/strings.h b/include/strings.h
index c55e05eaf..377b6ea39 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -746,4 +746,21 @@ extern const u8 gText_IDNumber[];
extern const u8 gText_Name[];
extern const u8 gText_MainMenuTime[];
+// learn_move
+extern const u8 gText_TeachWhichMoveToMon[];
+extern const u8 gText_MonLearnedMove[];
+extern const u8 gText_MonIsTryingToLearnMove[];
+extern const u8 gText_StopLearningMove[];
+extern const u8 gText_1_2_and_Poof[];
+extern const u8 gText_MonForgotOldMoveAndMonLearnedNewMove[];
+extern const u8 gText_WhichMoveShouldBeForgotten[];
+extern const u8 gText_TeachMoveQues[];
+extern const u8 gText_GiveUpTryingToTeachNewMove[];
+
+// pokemon_size_record
+extern const u8 gText_DecimalPoint[];
+
+// map_name_popup
+extern const u8 gUnknown_841D18D[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text_window.h b/include/text_window.h
index c1463a9c7..8e8466145 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -29,5 +29,6 @@ void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette);
void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset);
void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx);
void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx);
+void sub_814FF6C(u8 windowId, u16 destOffset);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/ld_script.txt b/ld_script.txt
index cedb87f5b..50a3b3270 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -93,7 +93,7 @@ SECTIONS {
src/fieldmap.o(.text);
src/metatile_behavior.o(.text);
asm/field_camera.o(.text);
- asm/field_door.o(.text);
+ src/field_door.o(.text);
asm/field_player_avatar.o(.text);
asm/field_map_obj.o(.text);
asm/field_ground_effect.o(.text);
@@ -136,7 +136,7 @@ SECTIONS {
asm/script_movement.o(.text);
asm/fldeff_cut.o(.text);
src/mail_data.o(.text);
- asm/map_name_popup.o(.text);
+ src/map_name_popup.o(.text);
src/item_menu_icons.o(.text);
src/battle_anim_mon_movement.o(.text);
src/item.o(.text);
@@ -206,10 +206,9 @@ SECTIONS {
src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
asm/battle_anim_effects_3.o(.text);
- asm/learn_move.o(.text);
+ src/learn_move.o(.text);
src/fldeff_softboiled.o(.text);
src/battle_tower.o(.text);
- asm/battle_tower.o(.text);
src/battle_controller_oak_old_man.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
@@ -223,7 +222,7 @@ SECTIONS {
src/fldeff_teleport.o(.text);
src/new_menu_helpers.o(.text);
asm/box_party_pokemon_dropdown.o(.text);
- asm/save_menu_util.o(.text);
+ src/save_menu_util.o(.text);
src/map_preview_screen.o(.text);
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
@@ -409,8 +408,7 @@ SECTIONS {
data/maps.o(.rodata);
src/fieldmap.o(.rodata);
src/metatile_behavior.o(.rodata);
- data/metatile_behavior.o(.rodata);
- data/field_door.o(.rodata);
+ src/field_door.o(.rodata);
data/field_player_avatar.o(.rodata);
data/field_map_obj.o(.rodata);
data/field_ground_effect.o(.rodata);
@@ -439,7 +437,7 @@ SECTIONS {
data/pokemon_storage_system.o(.rodata);
src/pokemon_icon.o(.rodata);
data/fldeff_cut.o(.rodata);
- data/map_name_popup.o(.rodata);
+ src/map_name_popup.o(.rodata);
src/item_menu_icons.o(.rodata);
src/battle_anim_mon_movement.o(.rodata);
src/item.o(.rodata);
@@ -448,7 +446,7 @@ SECTIONS {
src/script_menu.o(.rodata);
data/naming_screen.o(.rodata);
src/pokemon_size_record.o(.rodata);
- data/item_use.o(.rodata);
+ src/item_use.o(.rodata);
data/battle_anim_effects_misc.o(.rodata);
src/fire.o(.rodata);
src/electric.o(.rodata);
@@ -484,7 +482,7 @@ SECTIONS {
data/field_effect_helpers.o(.rodata);
src/battle_controller_safari.o(.rodata);
data/battle_anim_effects_3.o(.rodata);
- data/learn_move.o(.rodata);
+ src/learn_move.o(.rodata);
src/battle_tower.o(.rodata);
src/battle_controller_oak_old_man.o(.rodata);
src/player_pc.o(.rodata);
@@ -542,12 +540,13 @@ SECTIONS {
src/mevent_client.o(.rodata);
src/mevent_server.o(.rodata);
src/mevent_8145654.o(.rodata);
- data/data_8466FB8.o(.rodata);
+ src/mevent_scripts.o(.rodata);
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
. = ALIGN(4);
src/seagallop.o(.rodata);
- data/data_8468C98.o(.rodata);
+ data/pokemon_jump.o(.rodata);
+ data/berry_crush.o(.rodata);
src/wireless_communication_status_screen.o(.rodata);
src/braille_text.o(.rodata);
src/text_window_graphics.o(.rodata);
diff --git a/src/battle_tower.c b/src/battle_tower.c
index feab13d69..dfbef8fe5 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1,13 +1,59 @@
#include "global.h"
#include "battle_tower.h"
+#include "random.h"
+#include "text.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "battle_message.h"
+#include "data.h"
+#include "pokedex.h"
+#include "overworld.h"
+#include "battle_transition.h"
+#include "easy_chat.h"
+#include "battle_setup.h"
+#include "battle_main.h"
+#include "task.h"
+#include "battle.h"
+#include "party_menu.h"
+#include "new_game.h"
+#include "save.h"
+#include "item.h"
+#include "script_pokemon_util_80A0058.h"
#include "constants/species.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/pokemon.h"
+#include "constants/vars.h"
+#include "constants/map_objects.h"
+
+static EWRAM_DATA u16 sSpecialVar_0x8004_Copy = 0;
+
+#define TakeBravoTrainerBattleTowerOffTheAir()
+#define ewram160FB (*((u8 *)&gBattleStruct->field_DA))
+
+static void ResetBattleTowerStreak(u8 levelType);
+static void SetBattleTowerTrainerGfxId(u8 trainerClass);
+static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid);
+static void SaveCurrentWinStreak(void);
+static void ValidateBattleTowerRecordChecksums(void);
+static void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record);
+static void ClearBattleTowerRecord(struct BattleTowerRecord * record);
+static void PopulateBravoTrainerBattleTowerLostData(void);
+static u16 GetCurrentBattleTowerWinStreak(u8 levelType);
+static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer);
+static void PrintEReaderTrainerFarewellMessage(void);
+
+const u8 unref_83FFAAC[] = {
+ 0x05, 0x04, 0x01, 0x10, 0x04, 0x02, 0x05, 0x06,
+ 0x03, 0x10, 0x06, 0x04, 0x00, 0x01, 0x02, 0x03,
+ 0x00, 0x02, 0x03
+};
+
+const u8 unref_83FFABF[] = _("100");
#include "data/battle_tower/trainers.h"
-const u16 sBattleTowerHeldItems[] = {
+static const u16 sBattleTowerHeldItems[] = {
ITEM_NONE,
ITEM_KINGS_ROCK,
ITEM_SITRUS_BERRY,
@@ -76,22 +122,22 @@ const u16 sBattleTowerHeldItems[] = {
#include "data/battle_tower/level_50_mons.h"
#include "data/battle_tower/level_100_mons.h"
-const u8 sMaleTrainerClasses[] =
+static const u8 sMaleTrainerClasses[] =
{
};
-const u8 sFemaleTrainerClasses[] =
+static const u8 sFemaleTrainerClasses[] =
{
};
-const u8 sMaleTrainerGfx[] =
+static const u8 sMaleTrainerGfx[] =
{
};
-const u8 sFemaleTrainerGfx[] =
+static const u8 sFemaleTrainerGfx[] =
{
};
@@ -110,7 +156,7 @@ const u16 gBattleTowerBannedSpecies[] = {
0xFFFF
};
-const u16 sShortStreakPrizes[] = {
+static const u16 sShortStreakPrizes[] = {
ITEM_HP_UP,
ITEM_PROTEIN,
ITEM_IRON,
@@ -119,7 +165,7 @@ const u16 sShortStreakPrizes[] = {
ITEM_ZINC
};
-const u16 sLongStreakPrizes[] = {
+static const u16 sLongStreakPrizes[] = {
ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB,
ITEM_QUICK_CLAW,
@@ -131,3 +177,1246 @@ const u16 sLongStreakPrizes[] = {
ITEM_CHOICE_BAND
};
+void ScrSpecial_BattleTowerMapScript2(void)
+{
+ u8 count = 0;
+ s32 levelType;
+
+ for (levelType = 0; levelType < 2; levelType++)
+ {
+ switch (gSaveBlock2Ptr->battleTower.var_4AE[levelType])
+ {
+ default:
+ case 0:
+ ResetBattleTowerStreak(levelType);
+ if (count == 0)
+ VarSet(VAR_0x4000, 5);
+ break;
+ case 1:
+ ResetBattleTowerStreak(levelType);
+ VarSet(VAR_0x4000, BTSPECIAL_RESULT_SAVE_SCUM);
+ count++;
+ break;
+ case 3:
+ break;
+ case 4:
+ VarSet(VAR_0x4000, BTSPECIAL_RESULT_WON7);
+ count++;
+ break;
+ case 5:
+ VarSet(VAR_0x4000, BTSPECIAL_RESULT_LOST);
+ count++;
+ break;
+ case 6:
+ break;
+ case 2:
+ VarSet(VAR_0x4000, BTSPECIAL_RESULT_QUICKSAVE);
+ count++;
+ break;
+ }
+ }
+ if (gSaveBlock2Ptr->battleTower.var_4AE[0] == 3 && gSaveBlock2Ptr->battleTower.var_4AE[1] == 3)
+ VarSet(VAR_0x4000, BTSPECIAL_RESULT_INACTIVE);
+ ValidateBattleTowerRecordChecksums();
+}
+
+static void ResetBattleTowerStreak(u8 levelType)
+{
+ gSaveBlock2Ptr->battleTower.var_4AE[levelType] = 0;
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] = 1;
+ gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] = 1;
+}
+
+static bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
+{
+ u8 trainerTeamLevel;
+ u8 monLevel;
+ s32 i;
+ u16 validPartySpecies[6];
+ u16 validPartyHeldItems[6];
+ u8 numValid;
+
+ numValid = 0;
+
+ ValidateEReaderTrainer();
+
+ if (gSpecialVar_Result != 0 || gSaveBlock2Ptr->battleTower.ereaderTrainer.winStreak != winStreak)
+ return FALSE;
+
+ if (levelType != 0)
+ trainerTeamLevel = 100;
+ else
+ trainerTeamLevel = 50;
+
+ for (i = 0; i < 3; i++)
+ {
+ monLevel = gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].level;
+ if (gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].level != trainerTeamLevel)
+ return FALSE;
+
+ CheckMonBattleTowerBanlist(
+ gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].species,
+ gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].heldItem,
+ 1,
+ levelType,
+ monLevel,
+ validPartySpecies,
+ validPartyHeldItems,
+ &numValid);
+ }
+
+ return (numValid == 3);
+}
+
+static bool8 ChooseSpecialBattleTowerTrainer(void)
+{
+ s32 recordIndex, i;
+ u8 battleTowerLevelType;
+ u16 winStreak;
+ bool8 retVal;
+ s32 numCandidates;
+ u32 trainerIds[5];
+
+ numCandidates = 0;
+ battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak))
+ {
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID;
+ retVal = TRUE;
+ }
+ else
+ {
+ // Check if one of the battle tower trainers from record mixing should be the next trainer.
+ for (recordIndex = 0; recordIndex < 5; recordIndex++)
+ {
+ struct BattleTowerRecord *record = &gSaveBlock2Ptr->battleTower.records[recordIndex];
+ u32 recordHasData = 0;
+ u32 checksum = 0;
+
+ for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++)
+ {
+ recordHasData |= ((u32 *) record)[i];
+ checksum += ((u32 *) record)[i];
+ }
+
+ if (gSaveBlock2Ptr->battleTower.records[recordIndex].winStreak == winStreak
+ && gSaveBlock2Ptr->battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType
+ && recordHasData
+ && gSaveBlock2Ptr->battleTower.records[recordIndex].checksum == checksum)
+ {
+ trainerIds[numCandidates] = recordIndex;
+ numCandidates++;
+ }
+ }
+
+ if (numCandidates == 0)
+ {
+ retVal = FALSE;
+ }
+ else
+ {
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId =
+ trainerIds[Random() % numCandidates] + BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID;
+ retVal = TRUE;
+ }
+ }
+ return retVal;
+}
+
+void ChooseNextBattleTowerTrainer(void)
+{
+ int i;
+ u16 trainerId;
+ bool8 levelType;
+
+ levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ if (ChooseSpecialBattleTowerTrainer())
+ {
+ SetBattleTowerTrainerGfxId(gSaveBlock2Ptr->battleTower.battleTowerTrainerId);
+ gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
+ return;
+ }
+
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] <= 7)
+ {
+ if (gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] == 7)
+ {
+ do
+ {
+ trainerId = ((Random() & 0xFF) * 5) >> 7;
+ trainerId += (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] - 1) * 10 + 20;
+
+ // Ensure trainer wasn't previously fought in this challenge.
+ for (i = 0; i < gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2Ptr->battleTower.battledTrainerIds[i] != trainerId; i++);
+ }
+ while (i != gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1);
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = trainerId;
+ }
+ else
+ {
+ do
+ {
+ trainerId = (((Random() & 0xFF) * 5) >> 6);
+ trainerId += (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] - 1) * 10;
+
+ // Ensure trainer wasn't previously fought in this challenge.
+ for (i = 0; i < gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2Ptr->battleTower.battledTrainerIds[i] != trainerId; i++);
+ }
+ while (i != gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1);
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = trainerId;
+ }
+ }
+ else
+ {
+ do
+ {
+ trainerId = (((Random() & 0xFF) * 30) >> 8) + 70;
+
+ // Ensure trainer wasn't previously fought in this challenge.
+ for (i = 0; i < gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2Ptr->battleTower.battledTrainerIds[i] != trainerId; i++);
+ }
+ while (i != gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1);
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = trainerId;
+ }
+
+ SetBattleTowerTrainerGfxId(gSaveBlock2Ptr->battleTower.battleTowerTrainerId);
+ // Don't bother saving this trainer, since it's the last one in the challenge.
+ if (gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] < 7)
+ gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
+}
+
+static void SetBattleTowerTrainerGfxId(u8 trainerClass)
+{
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_YOUNGSTER);
+}
+
+void SetEReaderTrainerGfxId(void)
+{
+ SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID);
+}
+
+// Unreferenced; formerly used by Record Mixing in R/S
+static void UpdateOrInsertReceivedBattleTowerRecord(struct BattleTowerRecord * record0)
+{
+ s32 i;
+ s32 j;
+ s32 k;
+ s32 l = 0;
+ struct BattleTowerRecord * record = record0;
+
+ u16 winStreaks[6];
+ u16 indices[6];
+
+ for (i = 0; i < 5; i++)
+ {
+ k = 0;
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock2Ptr->battleTower.records[i].trainerId[j] != record->trainerId[j])
+ break;
+ }
+ if (j == 4)
+ {
+ for (k = 0; k < 7; k++)
+ {
+ if (gSaveBlock2Ptr->battleTower.records[i].name[j] != record->name[j])
+ break;
+ if (record->name[j] == EOS)
+ {
+ k = 7;
+ break;
+ }
+ }
+ }
+ if (k == 7)
+ break;
+ }
+
+ if (i < 5)
+ {
+ gSaveBlock2Ptr->battleTower.records[i] = *record;
+ return;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gSaveBlock2Ptr->battleTower.records[i].winStreak == 0)
+ break;
+ }
+
+ if (i < 5)
+ {
+ gSaveBlock2Ptr->battleTower.records[i] = *record;
+ return;
+ }
+
+ winStreaks[0] = gSaveBlock2Ptr->battleTower.records[0].winStreak;
+ indices[0] = 0;
+ l++;
+
+ for (i = 1; i < 5; i++)
+ {
+ for (j = 0; j < l; j++)
+ {
+ if (gSaveBlock2Ptr->battleTower.records[i].winStreak < winStreaks[j])
+ {
+ j = 0;
+ l = 1;
+ winStreaks[0] = gSaveBlock2Ptr->battleTower.records[i].winStreak;
+ indices[0] = i;
+ break;
+ }
+ if (gSaveBlock2Ptr->battleTower.records[i].winStreak > winStreaks[j])
+ break;
+ }
+ if (j == l)
+ {
+ winStreaks[l] = gSaveBlock2Ptr->battleTower.records[i].winStreak;
+ indices[l] = i;
+ l++;
+ }
+ }
+ i = Random() % l;
+ gSaveBlock2Ptr->battleTower.records[indices[i]] = *record;
+}
+
+u8 GetBattleTowerTrainerFrontSpriteId(void)
+{
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ {
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ {
+ return gFacilityClassToPicIndex[gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].trainerClass];
+ }
+ else
+ {
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
+ }
+}
+
+u8 GetBattleTowerTrainerClassNameId(void)
+{
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ {
+ return gFacilityClassToTrainerClass[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ {
+ return gFacilityClassToTrainerClass[gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
+ }
+ else
+ {
+ return gFacilityClassToTrainerClass[gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].trainerClass];
+ }
+}
+
+void GetBattleTowerTrainerName(u8 *dest)
+{
+ s32 i;
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ {
+ for (i = 0; i < 7; i++)
+ dest[i] = gSaveBlock2Ptr->battleTower.ereaderTrainer.name[i];
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ {
+ for (i = 0; i < 3; i++)
+ dest[i] = gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].name[i];
+ }
+ else
+ {
+ for (i = 0; i < 7; i++)
+ dest[i] = gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i];
+ }
+ dest[i] = EOS;
+}
+
+static void FillBattleTowerTrainerParty(void)
+{
+ s32 partyIndex;
+ s32 i;
+ u16 chosenMonIndices[3];
+ u8 friendship;
+ u8 level;
+ u8 fixedIV;
+ u8 battleMonsOffset;
+ u8 monPoolSize;
+ u8 teamFlags;
+ const struct BattleTowerPokemonTemplate *battleTowerMons;
+
+ battleMonsOffset = 0;
+ monPoolSize = 60;
+ friendship = 255;
+
+ ZeroEnemyPartyMons();
+
+ // Different trainers have access to different sets of pokemon to use in battle.
+ // The pokemon later in gBattleTowerLevel100Mons or gBattleTowerLevel50Mons are
+ // stronger. Additionally, the later trainers' pokemon are granted higher IVs.
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 20)
+ {
+ fixedIV = 6;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 30)
+ {
+ fixedIV = 9;
+ battleMonsOffset = 30;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 40)
+ {
+ fixedIV = 12;
+ battleMonsOffset = 60;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 50)
+ {
+ fixedIV = 15;
+ battleMonsOffset = 90;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 60)
+ {
+ fixedIV = 18;
+ battleMonsOffset = 120;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 70)
+ {
+ fixedIV = 21;
+ battleMonsOffset = 150;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < 80)
+ {
+ fixedIV = 31;
+ battleMonsOffset = 180;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ {
+ fixedIV = 31;
+ battleMonsOffset = 200;
+ monPoolSize = 100;
+ }
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ {
+ // Load E-Reader trainer's party.
+ do
+ {
+ for (partyIndex = 0; partyIndex < 3; partyIndex++)
+ CreateBattleTowerMon(&gEnemyParty[partyIndex], &gSaveBlock2Ptr->battleTower.ereaderTrainer.party[partyIndex]);
+ return;
+ } while (0);
+ }
+ else
+ {
+ // Load a battle tower record's party. (From record mixing)
+ for (partyIndex = 0; partyIndex < 3; partyIndex++)
+ {
+ CreateBattleTowerMon(
+ &gEnemyParty[partyIndex],
+ &gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]);
+ }
+ return;
+ }
+
+ // Use the appropriate list of pokemon and level depending on the
+ // current challenge type. (level 50 or level 100 challenge)
+ if (gSaveBlock2Ptr->battleTower.battleTowerLevelType != 0)
+ {
+ battleTowerMons = gBattleTowerLevel100Mons;
+ level = 100;
+ }
+ else
+ {
+ battleTowerMons = gBattleTowerLevel50Mons;
+ level = 50;
+ }
+
+ teamFlags = gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].teamFlags;
+
+ // Attempt to fill the trainer's party with random Pokemon until 3 have been
+ // successfully chosen. The trainer's party may not have duplicate pokemon species
+ // or duplicate held items. Each pokemon must have all of the trainer's team flags
+ // set, as well. If any of those conditions are not met, then the loop starts over
+ // and another pokemon is chosen at random.
+ partyIndex = 0;
+ while (partyIndex != 3)
+ {
+ // Pick a random pokemon index based on the number of pokemon available to choose from
+ // and the starting offset in the battle tower pokemon array.
+ s32 battleMonIndex = ((Random() & 0xFF) * monPoolSize) / 256 + battleMonsOffset;
+
+ // Ensure the chosen pokemon has compatible team flags with the trainer.
+ if (teamFlags == 0 || (battleTowerMons[battleMonIndex].teamFlags & teamFlags) == teamFlags)
+ {
+ // Ensure this pokemon species isn't a duplicate.
+ for (i = 0; i < partyIndex; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) == battleTowerMons[battleMonIndex].species)
+ break;
+ }
+
+ if (i != partyIndex)
+ continue;
+
+ // Ensure this pokemon's held item isn't a duplicate.
+ for (i = 0; i < partyIndex; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE
+ && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
+ break;
+ }
+
+ if (i != partyIndex)
+ continue;
+
+ // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
+ // because the species and held items were already checked directly above. Perhaps this
+ // is leftover code before the logic for duplicate species and held items was added.
+ //for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++);
+ for (i = 0; i < partyIndex; i++)
+ {
+ if (chosenMonIndices[i] == battleMonIndex)
+ break;
+ }
+
+ if (i != partyIndex)
+ continue;
+
+ chosenMonIndices[partyIndex] = battleMonIndex;
+
+ // Place the chosen pokemon into the trainer's party.
+ CreateMonWithEVSpread(
+ &gEnemyParty[partyIndex],
+ battleTowerMons[battleMonIndex].species,
+ level,
+ fixedIV,
+ battleTowerMons[battleMonIndex].evSpread);
+
+ // Give the chosen pokemon its specified moves.
+ for (i = 0; i < 4; i++)
+ {
+ SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i);
+ if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION)
+ friendship = 0; // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is.
+ }
+
+ SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, &sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]);
+
+ // The pokemon was successfully added to the trainer's party, so it's safe to move on to
+ // the next party slot.
+ partyIndex++;
+ }
+ }
+}
+
+static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ {
+ if (count == 0)
+ StringAppend(gStringVar1, gUnknown_83FE859);
+ count++;
+ StringAppend(gStringVar1, gSpeciesNames[species]);
+ switch (count)
+ {
+ case 2:
+ StringAppend(gStringVar1, gUnknown_83FE85E);
+ break;
+ case 5:
+ case 8:
+ case 11:
+ StringAppend(gStringVar1, gUnknown_83FE85C);
+ break;
+ default:
+ StringAppend(gStringVar1, gUnknown_83FE859);
+ break;
+ }
+ }
+ return count;
+}
+
+static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid)
+{
+ s32 i;
+ u32 counter = 0;
+
+ if (species == SPECIES_EGG || species == SPECIES_NONE)
+ return;
+
+ while (1)
+ {
+ if (gBattleTowerBannedSpecies[counter] == 0xFFFF)
+ break;
+
+ if (gBattleTowerBannedSpecies[counter] == species)
+ break;
+
+ counter++;
+ }
+
+ if (gBattleTowerBannedSpecies[counter] != 0xFFFF)
+ return;
+
+ if (battleTowerLevelType == 0 && monLevel > 50)
+ return;
+
+ for (i = 0; i < *numValid && validPartySpecies[i] != species ; i++);
+ if (i != *numValid)
+ return;
+
+ if (heldItem != ITEM_NONE)
+ {
+ for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++);
+ if (i != *numValid)
+ return;
+ }
+
+ validPartySpecies[*numValid] = species;
+ validPartyHeldItems[*numValid] = heldItem;
+ *numValid = *numValid + 1;
+}
+
+void CheckPartyBattleTowerBanlist(void)
+{
+ s32 i;
+ u16 species2;
+ u16 heldItem;
+ u8 level;
+ u16 hp;
+ u32 numBanlistCaught;
+ u16 validPartySpecies[6];
+ u16 validPartyHeldItems[6];
+ u8 counter;
+
+ counter = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ species2 = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+
+ CheckMonBattleTowerBanlist(species2, heldItem, hp, gSpecialVar_Result, level, validPartySpecies, validPartyHeldItems, &counter);
+ }
+
+ if (counter < 3)
+ {
+ gStringVar1[0] = EOS;
+ gSpecialVar_0x8004 = 1;
+ counter = 0;
+
+ for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
+ counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter);
+
+ i = StringLength(gStringVar1);
+ gStringVar1[i - 1] = EOS;
+ if (counter < 3)
+ StringAppend(gStringVar1, gUnknown_83FE860);
+ else
+ StringAppend(gStringVar1, gUnknown_83FE864);
+ }
+ else
+ {
+ gSpecialVar_0x8004 = 0;
+ gSaveBlock2Ptr->battleTower.battleTowerLevelType = gSpecialVar_Result;
+ }
+}
+
+static void PrintBattleTowerTrainerMessage(const u16 *greeting)
+{
+ s32 i;
+ if (EC_DoesEasyChatStringFitOnLine(greeting, 3, 2, 18))
+ {
+ ConvertEasyChatWordsToString(gStringVar4, greeting, 2, 3);
+ i = 0;
+ while (gStringVar4[i++] != CHAR_NEWLINE)
+ ;
+ while (gStringVar4[i] != CHAR_NEWLINE)
+ i++;
+ gStringVar4[i] = CHAR_PROMPT_SCROLL;
+ }
+ else
+ {
+ ConvertEasyChatWordsToString(gStringVar4, greeting, 3, 2);
+ }
+}
+
+void PrintBattleTowerTrainerGreeting(void)
+{
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ PrintBattleTowerTrainerMessage(gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].greeting);
+ else
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
+}
+
+static void CB2_FinishEReaderBattle(void)
+{
+ s32 i;
+ u16 heldItem;
+
+ switch (sSpecialVar_0x8004_Copy)
+ {
+ case 0:
+ break;
+ case 1:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem);
+ }
+ break;
+ case 2:
+ PrintEReaderTrainerFarewellMessage();
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+static void Task_WaitBT(u8 taskId)
+{
+ if (BT_IsDone() == TRUE)
+ {
+ gMain.savedCallback = CB2_FinishEReaderBattle;
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_InitBattle);
+ DestroyTask(taskId);
+ }
+}
+
+
+void StartSpecialBattle(void)
+{
+ s32 i;
+ u16 heldItem;
+ u8 transition;
+
+ sSpecialVar_0x8004_Copy = gSpecialVar_0x8004;
+ switch (sSpecialVar_0x8004_Copy)
+ {
+ case 0: // battle tower battle
+ gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent_A = 0;
+
+ FillBattleTowerTrainerParty();
+
+ CreateTask(Task_WaitBT, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ case 1: // secret base battle
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &heldItem);
+ }
+
+ CreateTask(Task_WaitBT, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ case 2: // e-reader trainer battle
+ ZeroEnemyPartyMons();
+
+ for (i = 0; i < 3; i++)
+ CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i]);
+
+ gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent_A = 0;
+
+ CreateTask(Task_WaitBT, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ }
+}
+
+void SetBattleTowerProperty(void)
+{
+ s32 i;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ ewram160FB = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 1:
+ gSaveBlock2Ptr->battleTower.battleTowerLevelType = gSpecialVar_0x8005;
+ break;
+ case 2:
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 3:
+ gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 4:
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = gSpecialVar_0x8005;
+ break;
+ case 5:
+ for (i = 0; i < 3; i++)
+ gSaveBlock2Ptr->battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i];
+ break;
+ case 6:
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ if (gSaveBlock2Ptr->battleTower.totalBattleTowerWins < 9999)
+ gSaveBlock2Ptr->battleTower.totalBattleTowerWins++;
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType]++;
+ SaveCurrentWinStreak();
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+ gStringVar1[0] = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1;
+ gStringVar1[1] = 0xFF;
+ break;
+ case 7:
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430)
+ gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType]++;
+ SaveCurrentWinStreak();
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType];
+ break;
+ case 8:
+ gSaveBlock2Ptr->battleTower.unk_554 = gSpecialVar_0x8005;
+ break;
+ case 9:
+ break;
+ case 10:
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak);
+ break;
+ case 11:
+ if (gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] != 3)
+ ResetBattleTowerStreak(battleTowerLevelType);
+ break;
+ case 12:
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
+ break;
+ case 13:
+ gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 14:
+ gSaveBlock2Ptr->battleTower.lastStreakLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ }
+}
+
+void BattleTowerUtil(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ case 2:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+ break;
+ case 3:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType];
+ break;
+ case 4:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ break;
+ case 8:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.unk_554;
+ break;
+ case 9:
+ gSpecialVar_Result = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 10:
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak);
+ break;
+ case 11:
+ ResetBattleTowerStreak(battleTowerLevelType);
+ break;
+ case 12:
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
+ break;
+ case 13:
+ gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 14:
+ gSaveBlock2Ptr->battleTower.lastStreakLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ }
+}
+
+void SetBattleTowerParty(void)
+{
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ gSelectedOrderFromParty[i] = gSaveBlock2Ptr->battleTower.selectedPartyMons[i];
+
+ ReducePlayerPartyToThree();
+}
+
+static void SaveCurrentWinStreak(void)
+{
+ u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ u16 streak = GetCurrentBattleTowerWinStreak(levelType);
+
+ if (gSaveBlock2Ptr->battleTower.recordWinStreaks[levelType] < streak)
+ gSaveBlock2Ptr->battleTower.recordWinStreaks[levelType] = streak;
+
+ if (gSaveBlock2Ptr->battleTower.recordWinStreaks[0] > gSaveBlock2Ptr->battleTower.recordWinStreaks[1])
+ {
+ streak = gSaveBlock2Ptr->battleTower.recordWinStreaks[0];
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
+ if (streak > 9999)
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = 9999;
+ else
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = streak;
+ }
+ else
+ {
+ streak = gSaveBlock2Ptr->battleTower.recordWinStreaks[1];
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
+ if (streak > 9999)
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = 9999;
+ else
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = streak;
+ }
+}
+
+static void SetPlayerBattleTowerRecord(void)
+{
+ s32 i;
+ u8 trainerClass;
+ struct BattleTowerRecord *playerRecord = &gSaveBlock2Ptr->battleTower.playerRecord;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ trainerClass = sFemaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sFemaleTrainerClasses)];
+ }
+ else
+ {
+ trainerClass = sMaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sMaleTrainerClasses)];
+ }
+
+ playerRecord->battleTowerLevelType = battleTowerLevelType;
+ playerRecord->trainerClass = trainerClass;
+
+ CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName);
+
+ playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+
+ for (i = 0; i < 6; i++)
+ playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+
+ for (i = 0; i < 3; i++)
+ sub_803E23C(&gPlayerParty[gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1], &playerRecord->party[i]);
+
+ SetBattleTowerRecordChecksum(&gSaveBlock2Ptr->battleTower.playerRecord);
+ SaveCurrentWinStreak();
+}
+
+void SaveBattleTowerProgress(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0)
+ {
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] > 1
+ || gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
+ SetPlayerBattleTowerRecord();
+ }
+
+ PopulateBravoTrainerBattleTowerLostData();
+
+ gSaveBlock2Ptr->battleTower.battleOutcome = gBattleOutcome;
+
+ if (gSpecialVar_0x8004 != 3)
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
+
+ VarSet(VAR_0x4000, BTSPECIAL_TEST);
+ gSaveBlock2Ptr->battleTower.unk_554 = 1;
+ TrySavingData(SAVE_EREADER);
+}
+
+void BattleTower_SoftReset(void)
+{
+ DoSoftReset();
+}
+
+static void ValidateBattleTowerRecordChecksums(void)
+{
+ u32 i;
+ s32 recordIndex;
+ struct BattleTowerRecord *record;
+ u32 checksum;
+
+ record = &gSaveBlock2Ptr->battleTower.playerRecord;
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ checksum += ((u32 *)record)[i];
+
+ if (gSaveBlock2Ptr->battleTower.playerRecord.checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->battleTower.playerRecord);
+
+ for (recordIndex = 0; recordIndex < 5; recordIndex++)
+ {
+ record = &gSaveBlock2Ptr->battleTower.records[recordIndex];
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ checksum += ((u32 *)record)[i];
+
+ if (gSaveBlock2Ptr->battleTower.records[recordIndex].checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->battleTower.records[recordIndex]);
+ }
+}
+
+static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
+{
+ u32 i;
+
+ record->checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ record->checksum += ((u32 *)record)[i];
+}
+
+static void ClearBattleTowerRecord(struct BattleTowerRecord *record)
+{
+ u32 i;
+
+ for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++)
+ ((u32 *)record)[i] = 0;
+}
+
+static void PopulateBravoTrainerBattleTowerLostData(void)
+{
+ s32 i;
+
+ GetBattleTowerTrainerName(gSaveBlock2Ptr->battleTower.defeatedByTrainerName);
+ gSaveBlock2Ptr->battleTower.defeatedBySpecies = gBattleMons[1].species;
+ gSaveBlock2Ptr->battleTower.firstMonSpecies = gBattleMons[0].species;
+
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++)
+ gSaveBlock2Ptr->battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i];
+}
+
+static u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
+{
+ u16 winStreak = ((gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1)
+ + gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+void DetermineBattleTowerPrize(void)
+{
+ u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] - 1 > 5)
+ gSaveBlock2Ptr->battleTower.prizeItem = sLongStreakPrizes[Random() % NELEMS(sLongStreakPrizes)];
+ else
+ gSaveBlock2Ptr->battleTower.prizeItem = sShortStreakPrizes[Random() % NELEMS(sShortStreakPrizes)];
+}
+
+void GiveBattleTowerPrize(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (AddBagItem(gSaveBlock2Ptr->battleTower.prizeItem, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->battleTower.prizeItem, gStringVar1);
+ gSpecialVar_Result = 1;
+ }
+ else
+ {
+ gSpecialVar_Result = 0;
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = 6;
+ }
+}
+
+void AwardBattleTowerRibbons(void)
+{
+ s32 i;
+ u32 partyIndex;
+ struct Pokemon *pokemon;
+ u8 ribbonType;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (battleTowerLevelType != 0)
+ ribbonType = MON_DATA_VICTORY_RIBBON;
+ else
+ ribbonType = MON_DATA_WINNING_RIBBON;
+
+ gSpecialVar_Result = 0;
+
+ if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ partyIndex = gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1;
+ pokemon = &gPlayerParty[partyIndex];
+ if (!GetMonData(pokemon, ribbonType))
+ {
+ gSpecialVar_Result = 1;
+ SetMonData(pokemon, ribbonType, &gSpecialVar_Result);
+ }
+ }
+ }
+
+ if (gSpecialVar_Result != 0)
+ IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
+}
+
+// This is a leftover debugging function that is used to populate the E-Reader
+// trainer with the player's current data.
+static void Debug_FillEReaderTrainerWithPlayerData(void)
+{
+ struct BattleTowerEReaderTrainer *ereaderTrainer;
+ s32 i;
+ s32 j;
+
+ ereaderTrainer = &gSaveBlock2Ptr->battleTower.ereaderTrainer;
+
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ ereaderTrainer->trainerClass = sFemaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sFemaleTrainerClasses)];
+ }
+ else
+ {
+ ereaderTrainer->trainerClass = sMaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sMaleTrainerClasses)];
+ }
+
+ CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
+
+ ereaderTrainer->winStreak = 1;
+
+ j = 7;
+ for (i = 0; i < 6; i++)
+ {
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+ ereaderTrainer->farewellPlayerLost[i] = j;
+ ereaderTrainer->farewellPlayerWon[i] = j + 6;
+ j++;
+ }
+
+ for (i = 0; i < 3; i++)
+ sub_803E23C(&gPlayerParty[i], &ereaderTrainer->party[i]);
+
+ SetEReaderTrainerChecksum(ereaderTrainer);
+}
+
+u8 GetEreaderTrainerFrontSpriteId(void)
+{
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+}
+
+u8 GetEreaderTrainerClassId(void)
+{
+ return gFacilityClassToTrainerClass[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+}
+
+void CopyEReaderTrainerName5(u8 *trainerName)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ trainerName[i] = gSaveBlock2Ptr->battleTower.ereaderTrainer.name[i];
+
+ trainerName[i] = EOS;
+}
+
+// Checks if the saved E-Reader trainer is valid.
+void ValidateEReaderTrainer(void)
+{
+ u32 i;
+ u32 checksum;
+ struct BattleTowerEReaderTrainer *ereaderTrainer;
+
+ gSpecialVar_Result = 0;
+ ereaderTrainer = &gSaveBlock2Ptr->battleTower.ereaderTrainer;
+
+ checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ checksum |= ((u32 *)ereaderTrainer)[i];
+
+ if (checksum == 0)
+ {
+ gSpecialVar_Result = 1;
+ return;
+ }
+
+ checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ checksum += ((u32 *)ereaderTrainer)[i];
+
+ if (gSaveBlock2Ptr->battleTower.ereaderTrainer.checksum != checksum)
+ {
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ gSpecialVar_Result = 1;
+ }
+}
+
+static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ s32 i;
+
+ ereaderTrainer->checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i];
+}
+
+void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ u32 i;
+
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++)
+ ((u32 *)ereaderTrainer)[i] = 0;
+}
+
+void PrintEReaderTrainerGreeting(void)
+{
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
+}
+
+static void PrintEReaderTrainerFarewellMessage(void)
+{
+ if (gBattleOutcome == B_OUTCOME_DREW)
+ gStringVar4[0] = EOS;
+ else if (gBattleOutcome == B_OUTCOME_WON)
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerWon);
+ else
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerLost);
+}
+
+void Dummy_TryEnableBravoTrainerBattleTower(void)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gSaveBlock2Ptr->battleTower.var_4AE[i] == 1)
+ TakeBravoTrainerBattleTowerOffTheAir();
+ }
+}
diff --git a/src/field_door.c b/src/field_door.c
new file mode 100644
index 000000000..cbf7a79ea
--- /dev/null
+++ b/src/field_door.c
@@ -0,0 +1,537 @@
+#include "global.h"
+#include "field_camera.h"
+#include "task.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "constants/songs.h"
+
+struct DoorAnimFrame
+{
+ u8 duration;
+ u16 tile;
+};
+
+struct DoorGraphics
+{
+ u16 metatileId;
+ s8 sliding;
+ u8 size;
+ const u8 * tiles;
+ const u8 * palettes;
+};
+
+static void DrawDoorDefaultImage(const struct DoorGraphics * gfx, int x, int y);
+static void LoadDoorFrameTiles(const u8 *a0);
+static void SetDoorFramePalettes(const struct DoorGraphics * gfx, int x, int y, const u8 *a3);
+static void BufferDoorFrameTilesWithPalettes(u16 *a0, u16 a1, const u8 *a2);
+static bool32 PlayDoorAnimationFrame(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, s16 *data);
+static const struct DoorAnimFrame * SeekToEndOfDoorAnim(const struct DoorAnimFrame * frames);
+static s8 GetDoorOpenType(const struct DoorGraphics * gfx, int x, int y);
+
+static const u8 gUnknown_8353088[] = INCBIN_U8("graphics/door_anims/frame_8353088_1.4bpp", "graphics/door_anims/frame_8353088_2.4bpp", "graphics/door_anims/frame_8353088_3.4bpp");
+static const u8 gUnknown_8353208[32] = {};
+static const u8 gUnknown_8353228[] = INCBIN_U8("graphics/door_anims/frame_8353228_1.4bpp", "graphics/door_anims/frame_8353228_2.4bpp", "graphics/door_anims/frame_8353228_3.4bpp");
+static const u8 gUnknown_83533A8[32] = {};
+static const u8 gUnknown_83533C8[] = INCBIN_U8("graphics/door_anims/frame_83533C8_1.4bpp", "graphics/door_anims/frame_83533C8_2.4bpp", "graphics/door_anims/frame_83533C8_3.4bpp");
+static const u8 gUnknown_8353548[32] = {};
+static const u8 gUnknown_8353568[] = INCBIN_U8("graphics/door_anims/frame_8353568_1.4bpp", "graphics/door_anims/frame_8353568_2.4bpp", "graphics/door_anims/frame_8353568_3.4bpp");
+static const u8 gUnknown_83536E8[32] = {};
+static const u8 gUnknown_8353708[] = INCBIN_U8("graphics/door_anims/frame_8353708_1.4bpp", "graphics/door_anims/frame_8353708_2.4bpp", "graphics/door_anims/frame_8353708_3.4bpp");
+static const u8 gUnknown_8353888[32] = {};
+static const u8 gUnknown_83538A8[] = INCBIN_U8("graphics/door_anims/frame_83538A8_1.4bpp", "graphics/door_anims/frame_83538A8_2.4bpp", "graphics/door_anims/frame_83538A8_3.4bpp");
+static const u8 gUnknown_8353A28[32] = {};
+static const u8 gUnknown_8353A48[] = INCBIN_U8("graphics/door_anims/frame_8353A48_1.4bpp", "graphics/door_anims/frame_8353A48_2.4bpp", "graphics/door_anims/frame_8353A48_3.4bpp");
+static const u8 gUnknown_8353BC8[32] = {};
+static const u8 gUnknown_8353BE8[] = INCBIN_U8("graphics/door_anims/frame_8353BE8_1.4bpp", "graphics/door_anims/frame_8353BE8_2.4bpp", "graphics/door_anims/frame_8353BE8_3.4bpp");
+static const u8 gUnknown_8353D68[32] = {};
+static const u8 gUnknown_8353D88[] = INCBIN_U8("graphics/door_anims/frame_8353D88_1.4bpp", "graphics/door_anims/frame_8353D88_2.4bpp", "graphics/door_anims/frame_8353D88_3.4bpp");
+static const u8 gUnknown_8353F08[32] = {};
+static const u8 gUnknown_8353F28[] = INCBIN_U8("graphics/door_anims/frame_8353F28_1.4bpp", "graphics/door_anims/frame_8353F28_2.4bpp", "graphics/door_anims/frame_8353F28_3.4bpp");
+static const u8 gUnknown_83540A8[32] = {};
+static const u8 gUnknown_83540C8[] = INCBIN_U8("graphics/door_anims/frame_83540C8_1.4bpp", "graphics/door_anims/frame_83540C8_2.4bpp", "graphics/door_anims/frame_83540C8_3.4bpp");
+static const u8 gUnknown_8354248[32] = {};
+static const u8 gUnknown_8354268[] = INCBIN_U8("graphics/door_anims/frame_8354268_1.4bpp", "graphics/door_anims/frame_8354268_2.4bpp", "graphics/door_anims/frame_8354268_3.4bpp");
+static const u8 gUnknown_83543E8[32] = {};
+static const u8 gUnknown_8354408[] = INCBIN_U8("graphics/door_anims/frame_8354408_1.4bpp", "graphics/door_anims/frame_8354408_2.4bpp", "graphics/door_anims/frame_8354408_3.4bpp");
+static const u8 gUnknown_8354588[32] = {};
+static const u8 gUnknown_83545A8[] = INCBIN_U8("graphics/door_anims/frame_83545A8_1.4bpp", "graphics/door_anims/frame_83545A8_2.4bpp", "graphics/door_anims/frame_83545A8_3.4bpp");
+static const u8 gUnknown_8354728[32] = {};
+static const u8 gUnknown_8354748[] = INCBIN_U8("graphics/door_anims/frame_8354748_1.4bpp", "graphics/door_anims/frame_8354748_2.4bpp", "graphics/door_anims/frame_8354748_3.4bpp");
+static const u8 gUnknown_83548C8[32] = {};
+static const u8 gUnknown_83548E8[] = INCBIN_U8("graphics/door_anims/frame_83548E8_1.4bpp", "graphics/door_anims/frame_83548E8_2.4bpp", "graphics/door_anims/frame_83548E8_3.4bpp");
+static const u8 gUnknown_8354A68[32] = {};
+static const u8 gUnknown_8354A88[] = INCBIN_U8("graphics/door_anims/frame_8354A88_1.4bpp", "graphics/door_anims/frame_8354A88_2.4bpp", "graphics/door_anims/frame_8354A88_3.4bpp");
+static const u8 gUnknown_8354C08[32] = {};
+static const u8 gUnknown_8354C28[] = INCBIN_U8("graphics/door_anims/frame_8354C28_1.4bpp", "graphics/door_anims/frame_8354C28_2.4bpp", "graphics/door_anims/frame_8354C28_3.4bpp");
+static const u8 gUnknown_8354F28[32] = {};
+static const u8 gUnknown_8354F48[] = INCBIN_U8("graphics/door_anims/frame_8354F48_1.4bpp", "graphics/door_anims/frame_8354F48_2.4bpp", "graphics/door_anims/frame_8354F48_3.4bpp");
+static const u8 gUnknown_8355248[32] = {};
+static const u8 gUnknown_8355268[] = INCBIN_U8("graphics/door_anims/frame_8355268_1.4bpp", "graphics/door_anims/frame_8355268_2.4bpp", "graphics/door_anims/frame_8355268_3.4bpp");
+static const u8 gUnknown_8355568[32] = {};
+static const u8 gUnknown_8355588[] = INCBIN_U8("graphics/door_anims/frame_8355588_1.4bpp", "graphics/door_anims/frame_8355588_2.4bpp", "graphics/door_anims/frame_8355588_3.4bpp");
+static const u8 gUnknown_8355888[32] = {};
+static const u8 gUnknown_83558A8[256] = {};
+static const u8 gUnknown_83559A8[256] = {};
+static const u8 gUnknown_8355AA8[256] = {};
+static const u8 gUnknown_8355BA8[32] = {};
+static const u8 gUnknown_8355BC8[256] = {};
+static const u8 gUnknown_8355CC8[256] = {};
+static const u8 gUnknown_8355DC8[256] = {};
+static const u8 gUnknown_8355EC8[32] = {};
+static const u8 gUnknown_8355EE8[256] = {};
+static const u8 gUnknown_8355FE8[256] = {};
+static const u8 gUnknown_83560E8[256] = {};
+static const u8 gUnknown_83561E8[32] = {};
+static const u8 gUnknown_8356208[256] = {};
+static const u8 gUnknown_8356308[256] = {};
+static const u8 gUnknown_8356408[256] = {};
+static const u8 gUnknown_8356508[32] = {};
+static const u8 gUnknown_8356528[256] = {};
+static const u8 gUnknown_8356628[256] = {};
+static const u8 gUnknown_8356728[256] = {};
+static const u8 gUnknown_8356828[32] = {};
+static const u8 gUnknown_8356848[256] = {};
+static const u8 gUnknown_8356948[256] = {};
+static const u8 gUnknown_8356A48[256] = {};
+static const u8 gUnknown_8356B48[32] = {};
+static const u8 gUnknown_8356B68[256] = {};
+static const u8 gUnknown_8356C68[256] = {};
+static const u8 gUnknown_8356D68[256] = {};
+static const u8 gUnknown_8356E68[32] = {};
+static const u8 gUnknown_8356E88[128] = {};
+static const u8 gUnknown_8356F08[128] = {};
+static const u8 gUnknown_8356F88[128] = {};
+static const u8 gUnknown_8357008[32] = {};
+static const u8 gUnknown_8357028[128] = {};
+static const u8 gUnknown_83570A8[128] = {};
+static const u8 gUnknown_8357128[128] = {};
+static const u8 gUnknown_83571A8[32] = {};
+static const u8 gUnknown_83571C8[128] = {};
+static const u8 gUnknown_8357248[128] = {};
+static const u8 gUnknown_83572C8[128] = {};
+static const u8 gUnknown_8357348[32] = {};
+static const u8 gUnknown_8357368[128] = {};
+static const u8 gUnknown_83573E8[128] = {};
+static const u8 gUnknown_8357468[128] = {};
+static const u8 gUnknown_83574E8[32] = {};
+static const u8 gUnknown_8357508[128] = {};
+static const u8 gUnknown_8357588[128] = {};
+static const u8 gUnknown_8357608[128] = {};
+static const u8 gUnknown_8357688[32] = {};
+static const u8 gUnknown_83576A8[128] = {};
+static const u8 gUnknown_8357728[128] = {};
+static const u8 gUnknown_83577A8[128] = {};
+static const u8 gUnknown_8357828[32] = {};
+static const u8 gUnknown_8357848[128] = {};
+static const u8 gUnknown_83578C8[128] = {};
+static const u8 gUnknown_8357948[128] = {};
+static const u8 gUnknown_83579C8[32] = {};
+static const u8 gUnknown_83579E8[128] = {};
+static const u8 gUnknown_8357A68[128] = {};
+static const u8 gUnknown_8357AE8[128] = {};
+static const u8 gUnknown_8357B68[32] = {};
+static const u8 gUnknown_8357B88[128] = {};
+static const u8 gUnknown_8357C08[128] = {};
+static const u8 gUnknown_8357C88[128] = {};
+static const u8 gUnknown_8357D08[32] = {};
+static const u8 gUnknown_8357D28[128] = {};
+static const u8 gUnknown_8357DA8[128] = {};
+static const u8 gUnknown_8357E28[128] = {};
+static const u8 gUnknown_8357EA8[32] = {};
+static const u8 gUnknown_8357EC8[128] = {};
+static const u8 gUnknown_8357F48[128] = {};
+static const u8 gUnknown_8357FC8[128] = {};
+static const u8 gUnknown_8358048[32] = {};
+static const u8 gUnknown_8358068[128] = {};
+static const u8 gUnknown_83580E8[128] = {};
+static const u8 gUnknown_8358168[128] = {};
+static const u8 gUnknown_83581E8[32] = {};
+static const u8 gUnknown_8358208[128] = {};
+static const u8 gUnknown_8358288[128] = {};
+static const u8 gUnknown_8358308[128] = {};
+static const u8 gUnknown_8358388[32] = {};
+static const u8 gUnknown_83583A8[128] = {};
+static const u8 gUnknown_8358428[128] = {};
+static const u8 gUnknown_83584A8[128] = {};
+static const u8 gUnknown_8358528[32] = {};
+static const u8 gUnknown_8358548[128] = {};
+static const u8 gUnknown_83585C8[128] = {};
+static const u8 gUnknown_8358648[128] = {};
+static const u8 gUnknown_83586C8[32] = {};
+static const u8 gUnknown_83586E8[128] = {};
+static const u8 gUnknown_8358768[128] = {};
+static const u8 gUnknown_83587E8[128] = {};
+static const u8 gUnknown_8358868[32] = {};
+static const u8 gUnknown_8358888[128] = {};
+static const u8 gUnknown_8358908[128] = {};
+static const u8 gUnknown_8358988[128] = {};
+static const u8 gUnknown_8358A08[32] = {};
+static const u8 gUnknown_8358A28[128] = {};
+static const u8 gUnknown_8358AA8[128] = {};
+static const u8 gUnknown_8358B28[128] = {};
+static const u8 gUnknown_8358BA8[32] = {};
+static const u8 gUnknown_8358BC8[128] = {};
+static const u8 gUnknown_8358C48[128] = {};
+static const u8 gUnknown_8358CC8[128] = {};
+static const u8 gUnknown_8358D48[32] = {};
+static const u8 gUnknown_8358D68[128] = {};
+static const u8 gUnknown_8358DE8[128] = {};
+static const u8 gUnknown_8358E68[128] = {};
+static const u8 gUnknown_8358EE8[32] = {};
+static const u8 gUnknown_8358F08[128] = {};
+static const u8 gUnknown_8358F88[128] = {};
+static const u8 gUnknown_8359008[128] = {};
+static const u8 gUnknown_8359088[32] = {};
+static const u8 gUnknown_83590A8[128] = {};
+static const u8 gUnknown_8359128[128] = {};
+static const u8 gUnknown_83591A8[128] = {};
+static const u8 gUnknown_8359228[32] = {};
+static const u8 gUnknown_8359248[128] = {};
+static const u8 gUnknown_83592C8[128] = {};
+static const u8 gUnknown_8359348[128] = {};
+static const u8 gUnknown_83593C8[32] = {};
+static const u8 gUnknown_83593E8[128] = {};
+static const u8 gUnknown_8359468[128] = {};
+static const u8 gUnknown_83594E8[128] = {};
+static const u8 gUnknown_8359568[32] = {};
+static const u8 gUnknown_8359588[] = INCBIN_U8("graphics/door_anims/frame_8359588_1.4bpp", "graphics/door_anims/frame_8359588_2.4bpp");
+static const u8 gUnknown_8359688[256] = {};
+static const u8 gUnknown_8359788[] = INCBIN_U8("graphics/door_anims/frame_8359788_1.4bpp", "graphics/door_anims/frame_8359788_2.4bpp", "graphics/door_anims/frame_8359788_3.4bpp", "graphics/door_anims/frame_8359788_4.4bpp");
+static const u8 gUnknown_8359888[256] = {};
+static const u8 gUnknown_8359988[] = INCBIN_U8("graphics/door_anims/frame_8359988_1.4bpp", "graphics/door_anims/frame_8359988_2.4bpp", "graphics/door_anims/frame_8359988_3.4bpp", "graphics/door_anims/frame_8359988_4.4bpp");
+static const u8 gUnknown_8359A88[256] = {};
+static const u8 gUnknown_8359B88[] = INCBIN_U8("graphics/door_anims/frame_8359B88_1.4bpp", "graphics/door_anims/frame_8359B88_2.4bpp", "graphics/door_anims/frame_8359B88_3.4bpp", "graphics/door_anims/frame_8359B88_4.4bpp");
+static const u8 gUnknown_8359C88[32] = {};
+static const u8 gUnknown_8359CA8[] = INCBIN_U8("graphics/door_anims/frame_8359CA8_1.4bpp", "graphics/door_anims/frame_8359CA8_2.4bpp", "graphics/door_anims/frame_8359CA8_3.4bpp");
+static const u8 gUnknown_8359FA8[32] = {};
+static const u8 gUnknown_8359FC8[] = INCBIN_U8("graphics/door_anims/frame_8359FC8_1.4bpp", "graphics/door_anims/frame_8359FC8_2.4bpp", "graphics/door_anims/frame_8359FC8_3.4bpp");
+static const u8 gUnknown_835A148[32] = {};
+static const u8 gUnknown_835A168[] = INCBIN_U8("graphics/door_anims/frame_835A168_1.4bpp", "graphics/door_anims/frame_835A168_2.4bpp", "graphics/door_anims/frame_835A168_3.4bpp");
+static const u8 gUnknown_835A2E8[32] = {};
+static const u8 gUnknown_835A308[] = INCBIN_U8("graphics/door_anims/frame_835A308_1.4bpp", "graphics/door_anims/frame_835A308_2.4bpp", "graphics/door_anims/frame_835A308_3.4bpp");
+static const u8 gUnknown_835A488[32] = {};
+static const u8 gUnknown_835A4A8[] = INCBIN_U8("graphics/door_anims/frame_835A4A8_1.4bpp", "graphics/door_anims/frame_835A4A8_2.4bpp", "graphics/door_anims/frame_835A4A8_3.4bpp");
+static const u8 gUnknown_835A628[32] = {};
+static const u8 gUnknown_835A648[] = INCBIN_U8("graphics/door_anims/frame_835A648_1.4bpp", "graphics/door_anims/frame_835A648_2.4bpp", "graphics/door_anims/frame_835A648_3.4bpp");
+static const u8 gUnknown_835A7C8[32] = {};
+static const u8 gUnknown_835A7E8[] = INCBIN_U8("graphics/door_anims/frame_835A7E8_1.4bpp", "graphics/door_anims/frame_835A7E8_2.4bpp", "graphics/door_anims/frame_835A7E8_3.4bpp");
+static const u8 gUnknown_835A968[32] = {};
+static const u8 gUnknown_835A988[] = INCBIN_U8("graphics/door_anims/frame_835A988_1.4bpp", "graphics/door_anims/frame_835A988_2.4bpp", "graphics/door_anims/frame_835A988_3.4bpp");
+static const u8 gUnknown_835AB08[32] = {};
+static const u8 gUnknown_835AB28[] = INCBIN_U8("graphics/door_anims/frame_835AB28_1.4bpp", "graphics/door_anims/frame_835AB28_2.4bpp", "graphics/door_anims/frame_835AB28_3.4bpp");
+static const u8 gUnknown_835AE28[32] = {};
+static const u8 gUnknown_835AE48[] = INCBIN_U8("graphics/door_anims/frame_835AE48_1.4bpp", "graphics/door_anims/frame_835AE48_2.4bpp", "graphics/door_anims/frame_835AE48_3.4bpp");
+static const u8 gUnknown_835B148[32] = {};
+static const u8 gUnknown_835B168[] = INCBIN_U8("graphics/door_anims/frame_835B168_1.4bpp", "graphics/door_anims/frame_835B168_2.4bpp", "graphics/door_anims/frame_835B168_3.4bpp");
+static const u8 gUnknown_835B468[32] = {};
+
+static const struct DoorAnimFrame sDoorAnimFrames_OpenSmall[] = {
+ {4, 0xFFFF},
+ {4, 0x0000},
+ {4, 0x0080},
+ {4, 0x0100},
+ {}
+};
+
+static const struct DoorAnimFrame sDoorAnimFrames_OpenLarge[] = {
+ {4, 0xFFFF},
+ {4, 0x0000},
+ {4, 0x0100},
+ {4, 0x0200},
+ {}
+};
+
+static const struct DoorAnimFrame sDoorAnimFrames_CloseSmall[] = {
+ {4, 0x0100},
+ {4, 0x0080},
+ {4, 0x0000},
+ {4, 0xFFFF},
+ {}
+};
+
+static const struct DoorAnimFrame sDoorAnimFrames_CloseLarge[] = {
+ {4, 0x0200},
+ {4, 0x0100},
+ {4, 0x0000},
+ {4, 0xFFFF},
+ {}
+};
+
+static const u8 gUnknown_835B4D8[] = {0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
+static const u8 gUnknown_835B4E0[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B4E8[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B4F0[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B4F8[] = {0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa};
+static const u8 gUnknown_835B500[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B508[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B510[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B518[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B520[] = {0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc};
+static const u8 gUnknown_835B528[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
+static const u8 gUnknown_835B530[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
+static const u8 gUnknown_835B538[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
+static const u8 gUnknown_835B540[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B548[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B550[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
+static const u8 gUnknown_835B558[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B560[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B568[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B570[] = {0xc, 0xc, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
+static const u8 gUnknown_835B578[] = {0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7};
+static const u8 gUnknown_835B580[] = {0x8, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
+static const u8 gUnknown_835B588[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
+static const u8 gUnknown_835B590[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B598[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B5A0[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
+static const u8 gUnknown_835B5A8[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
+static const u8 gUnknown_835B5B0[] = {0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa};
+static const u8 gUnknown_835B5B8[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
+static const u8 gUnknown_835B5C0[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
+static const u8 gUnknown_835B5C8[] = {0x8, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
+static const u8 gUnknown_835B5D0[] = {0xb, 0xb, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
+
+static const struct DoorGraphics sDoorGraphics[] = {
+ {0x03d, 0, 0, gUnknown_8353088, gUnknown_835B4D8},
+ {0x062, 1, 0, gUnknown_8353228, gUnknown_835B4E0},
+ {0x15b, 1, 0, gUnknown_83533C8, gUnknown_835B4E8},
+ {0x2a3, 0, 0, gUnknown_8353568, gUnknown_835B4F0},
+ {0x2ac, 0, 0, gUnknown_8353708, gUnknown_835B4F8},
+ {0x299, 0, 0, gUnknown_83538A8, gUnknown_835B500},
+ {0x2ce, 0, 0, gUnknown_8353A48, gUnknown_835B508},
+ {0x284, 0, 0, gUnknown_8353BE8, gUnknown_835B510},
+ {0x2bc, 1, 0, gUnknown_8353D88, gUnknown_835B518},
+ {0x298, 0, 0, gUnknown_8353F28, gUnknown_835B520},
+ {0x2a2, 0, 0, gUnknown_83540C8, gUnknown_835B528},
+ {0x29e, 0, 0, gUnknown_8354268, gUnknown_835B530},
+ {0x2e1, 0, 0, gUnknown_8354408, gUnknown_835B538},
+ {0x294, 1, 0, gUnknown_83545A8, gUnknown_835B540},
+ {0x2bf, 0, 0, gUnknown_8354748, gUnknown_835B548},
+ {0x2d2, 1, 0, gUnknown_83548E8, gUnknown_835B550},
+ {0x2ad, 0, 0, gUnknown_8354A88, gUnknown_835B558},
+ {0x297, 0, 0, gUnknown_8359FC8, gUnknown_835B588},
+ {0x29b, 1, 0, gUnknown_835A168, gUnknown_835B590},
+ {0x2eb, 0, 0, gUnknown_835A308, gUnknown_835B598},
+ {0x29a, 0, 0, gUnknown_835A4A8, gUnknown_835B5A0},
+ {0x2b9, 0, 0, gUnknown_835A648, gUnknown_835B5A8},
+ {0x2af, 0, 0, gUnknown_835A7E8, gUnknown_835B5B0},
+ {0x30c, 0, 0, gUnknown_835A988, gUnknown_835B5B8},
+ {0x28d, 1, 1, gUnknown_8354C28, gUnknown_835B560},
+ {0x2de, 1, 1, gUnknown_8354F48, gUnknown_835B568},
+ {0x2ab, 1, 1, gUnknown_8355268, gUnknown_835B570},
+ {0x281, 0, 1, gUnknown_8355588, gUnknown_835B578},
+ {0x2e2, 1, 1, gUnknown_8359CA8, gUnknown_835B580},
+ {0x296, 1, 1, gUnknown_835AB28, gUnknown_835B5C0},
+ {0x2c3, 1, 1, gUnknown_835AE48, gUnknown_835B5C8},
+ {0x356, 1, 1, gUnknown_835B168, gUnknown_835B5D0},
+ {}
+};
+
+static void UpdateDrawDoorFrame(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, int x, int y)
+{
+ if (frames->tile == 0xFFFF)
+ {
+ DrawDoorDefaultImage(gfx, x, y);
+ }
+ else
+ {
+ LoadDoorFrameTiles(&gfx->tiles[frames->tile]);
+ SetDoorFramePalettes(gfx, x, y, gfx->palettes);
+ }
+}
+
+static void DrawDoorDefaultImage(const struct DoorGraphics * gfx, int x, int y)
+{
+ if (gfx->size == 0)
+ {
+ CurrentMapDrawMetatileAt(x, y);
+ }
+ else
+ {
+ CurrentMapDrawMetatileAt(x, y);
+ CurrentMapDrawMetatileAt(x, y - 1);
+ }
+}
+
+static void LoadDoorFrameTiles(const u8 *a0)
+{
+ CpuFastCopy(a0, (void *)(BG_VRAM + 0x7F00), 0x100);
+}
+
+static void SetDoorFramePalettes(const struct DoorGraphics * gfx, int x, int y, const u8 *a3)
+{
+ u16 sp00[8];
+ if (gfx->size == 0)
+ {
+ BufferDoorFrameTilesWithPalettes(sp00, 0x3F8, a3);
+ }
+ else
+ {
+ BufferDoorFrameTilesWithPalettes(sp00, 0x3F8, a3);
+ DrawDoorMetatileAt(x, y - 1, sp00);
+ BufferDoorFrameTilesWithPalettes(sp00, 0x3FC, a3 + 4);
+ }
+ DrawDoorMetatileAt(x, y, sp00);
+}
+
+static void BufferDoorFrameTilesWithPalettes(u16 *a0, u16 a1, const u8 *a2)
+{
+ int i;
+ u16 tile;
+ for (i = 0; i < 4; i++)
+ {
+ tile = *(a2++) << 12;
+ a0[i] = tile | (a1 + i);
+ }
+ for (; i < 8; i++)
+ {
+ tile = *(a2++) << 12;
+ a0[i] = tile;
+ }
+}
+
+static void Task_AnimateDoor(u8 taskId)
+{
+ s16 *data = (void *)gTasks[taskId].data;
+ const struct DoorAnimFrame * frames = (const void *)(((u16)data[0] << 16) | (u16)data[1]);
+ const struct DoorGraphics * gfx = (const void *)(((u16)data[2] << 16) | (u16)data[3]);
+ if (!PlayDoorAnimationFrame(gfx, frames, data))
+ DestroyTask(taskId);
+}
+
+static bool32 PlayDoorAnimationFrame(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, s16 *data)
+{
+ if (data[5] == 0)
+ {
+ UpdateDrawDoorFrame(gfx, &frames[data[4]], data[6], data[7]);
+ }
+ if (data[5] == frames[data[4]].duration)
+ {
+ data[5] = 0;
+ data[4]++;
+ if (frames[data[4]].duration == 0)
+ return FALSE;
+ }
+ else
+ {
+ data[5]++;
+ }
+ return TRUE;
+}
+
+static const struct DoorGraphics * door_find(const struct DoorGraphics * gfx, u16 id)
+{
+ while (gfx->tiles != NULL)
+ {
+ if (gfx->metatileId == id)
+ return gfx;
+ gfx++;
+ }
+ return NULL;
+}
+
+static s8 task_overworld_door_add_if_inactive(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, int a2, int a3)
+{
+ u8 taskId;
+ s16 *data;
+ if (FuncIsActiveTask(Task_AnimateDoor) == TRUE)
+ return -1;
+ taskId = CreateTask(Task_AnimateDoor, 80);
+ data = gTasks[taskId].data;
+ data[6] = a2;
+ data[7] = a3;
+ data[1] = (uintptr_t)frames;
+ data[0] = (uintptr_t)frames >> 16;
+ data[3] = (uintptr_t)gfx;
+ data[2] = (uintptr_t)gfx >> 16;
+ return taskId;
+}
+
+static void DrawClosedDoor(const struct DoorGraphics * gfx, int a1, int a2)
+{
+ DrawDoorDefaultImage(gfx, a1, a2);
+}
+
+static void DrawOpenedDoor(const struct DoorGraphics * gfx, int x, int y)
+{
+ gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
+ if (gfx != NULL)
+ {
+ UpdateDrawDoorFrame(gfx, SeekToEndOfDoorAnim(gfx->size == 0 ? sDoorAnimFrames_OpenSmall : sDoorAnimFrames_OpenLarge), x, y);
+ }
+}
+
+static const struct DoorAnimFrame * SeekToEndOfDoorAnim(const struct DoorAnimFrame * frames)
+{
+ while (frames->duration != 0)
+ frames++;
+ return frames - 1;
+}
+
+static s8 AnimateDoorOpenInternal(const struct DoorGraphics * gfx, int x, int y)
+{
+ gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
+ if (gfx == NULL)
+ return -1;
+ else if (gfx->size == 0)
+ return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_OpenSmall, x, y);
+ else
+ return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_OpenLarge, x, y);
+}
+
+static s8 AnimateDoorCloseInternal(const struct DoorGraphics * gfx, int x, int y)
+{
+ gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
+ if (gfx == NULL)
+ return -1;
+ else if (gfx->size == 0)
+ return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_CloseSmall, x, y);
+ else
+ return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_CloseLarge, x, y);
+}
+
+void FieldSetDoorOpened(int x, int y)
+{
+ if (MetatileBehavior_IsWarpDoor_2(MapGridGetMetatileBehaviorAt((s16)x, (s16)y)))
+ DrawOpenedDoor(sDoorGraphics, x, y);
+}
+
+void FieldSetDoorClosed(int x, int y)
+{
+ if (MetatileBehavior_IsWarpDoor_2(MapGridGetMetatileBehaviorAt((s16)x, (s16)y)))
+ DrawClosedDoor(sDoorGraphics, x, y);
+}
+
+s8 FieldAnimateDoorClose(int x, int y)
+{
+ if (!MetatileBehavior_IsWarpDoor_2(MapGridGetMetatileBehaviorAt((s16)x, (s16)y)))
+ return -1;
+ return AnimateDoorCloseInternal(sDoorGraphics, x, y);
+}
+
+s8 FieldAnimateDoorOpen(int x, int y)
+{
+ if (!MetatileBehavior_IsWarpDoor_2(MapGridGetMetatileBehaviorAt((s16)x, (s16)y)))
+ return -1;
+ return AnimateDoorOpenInternal(sDoorGraphics, x, y);
+}
+
+bool8 FieldIsDoorAnimationRunning(void)
+{
+ return FuncIsActiveTask(Task_AnimateDoor);
+}
+
+u16 GetDoorSoundEffect(x, y)
+{
+ if (!GetDoorOpenType(sDoorGraphics, x, y))
+ return MUS_W_DOOR;
+ else
+ return SE_JIDO_DOA;
+}
+
+static s8 GetDoorOpenType(const struct DoorGraphics * gfx, int x, int y)
+{
+ gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
+ if (gfx == NULL)
+ return -1;
+ return gfx->sliding;
+}
diff --git a/src/item_use.c b/src/item_use.c
index 873ce4ab4..db0475370 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -76,7 +76,68 @@ void sub_80A1D68(u8 taskId);
void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId);
void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId);
-extern void (*const gUnknown_83E2954[])(void);
+// No clue what this is
+static const u8 sUnref_83E27B4[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1f, 0x00, 0xe0, 0x03, 0x00, 0x7c,
+ 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+void (*const gUnknown_83E2954[])(void) = {
+ sub_8124C8C,
+ CB2_ReturnToField,
+ NULL,
+ NULL
+};
void sub_80A0FBC(u8 taskId)
{
diff --git a/src/learn_move.c b/src/learn_move.c
new file mode 100644
index 000000000..e22922528
--- /dev/null
+++ b/src/learn_move.c
@@ -0,0 +1,842 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "script.h"
+#include "task.h"
+#include "data.h"
+#include "trig.h"
+#include "window.h"
+#include "field_fadetransition.h"
+#include "overworld.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "list_menu.h"
+#include "event_data.h"
+#include "text_window.h"
+#include "string_util.h"
+#include "pokemon_summary_screen.h"
+#include "graphics.h"
+#include "sound.h"
+#include "strings.h"
+#include "constants/songs.h"
+#include "constants/moves.h"
+
+struct MoveTutorMoveInfoHeaders
+{
+ const u8 *text;
+ u8 left;
+ u8 right;
+ u8 index; // unused
+};
+
+struct LearnMoveGfxResources
+{
+ u8 state;
+ u8 unk_01;
+ u8 unk_02;
+ u8 spriteIds[2];
+ u8 filler_05[0x13];
+ u8 unk_18;
+ u8 scrollPositionMaybe;
+ u8 numLearnableMoves;
+ u8 unk_1B;
+ u8 unk_1C;
+ u8 unk_1D;
+ u8 unk_1E;
+ struct ListMenuItem listMenuItems[25];
+ u16 learnableMoves[25];
+ u8 listMenuStrbufs[25][13];
+ bool8 scheduleMoveInfoUpdate;
+ u8 selectedPartyMember;
+ u8 selectedMoveSlot;
+ u8 unk_262;
+ u8 listMenuTaskId;
+ u8 bg1TilemapBuffer[BG_SCREEN_SIZE]; // 264
+ u8 textColor[3]; // A64
+ u8 selectedIndex;
+ u16 listMenuScrollPos;
+ u16 listMenuScrollRow;
+};
+
+static EWRAM_DATA struct LearnMoveGfxResources * sMoveRelearner = NULL;
+
+static void Task_InitMoveRelearnerMenu(u8 taskId);
+static void CB2_MoveRelearner_Init(void);
+static void CB2_MoveRelearner(void);
+static void MoveRelearnerStateMachine(void);
+static void DrawTextBorderOnWindows6and7(void);
+static void PrintTeachWhichMoveToStrVar1(bool8 onInit);
+static void InitMoveRelearnerStateVariables(void);
+static void SpriteCB_ListMenuScrollIndicators(struct Sprite * sprite);
+static void SpawnListMenuScrollIndicatorSprites(void);
+static void MoveRelearnerInitListMenuBuffersEtc(void);
+static void MoveRelearnerMenuHandleInput(void);
+static void MoveLearnerInitListMenu(void);
+static void LoadMoveInfoUI(void);
+static void PrintMoveInfoHandleCancel_CopyToVram(void);
+static void MoveRelearnerMenu_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static s8 YesNoMenuProcessInput(void);
+static void PrintTextOnWindow(u8 windowId, const u8 *str, u8 x, u8 y, s32 speed, s32 colorIdx);
+
+static const u16 sLearnMoveInterfaceSpritesPalette[] = INCBIN_U16("graphics/learn_move/interface_sprites.gbapal");
+static const u16 sLearnMoveInterfaceSpritesTiles[] = INCBIN_U16("graphics/learn_move/interface_sprites.4bpp");
+
+static const u8 sMoveTutorMenuWindowFrameDimensions[][4] =
+{
+ { 0, 0, 19, 13},
+ {20, 0, 29, 13},
+ { 2, 14, 27, 19}
+};
+
+static const u8 sJPText_TatakauWaza[] = _("たたかうわざ");
+static const u8 sJPText_Taipu[] = _("タイプ/");
+static const u8 sJPText_PP[] = _("PP/");
+static const u8 sJPText_Iryoku[] = _("いりょく/");
+static const u8 sJPText_Meichuu[] = _("めいちゅう/");
+
+static const struct MoveTutorMoveInfoHeaders sMoveTutorMoveInfoHeaders[][5] =
+{
+ {
+ {sJPText_TatakauWaza, 7, 1, 0},
+ {sJPText_Taipu, 1, 4, 1},
+ {sJPText_Iryoku, 11, 4, 2},
+ {sJPText_PP, 2, 6, 3},
+ {sJPText_Meichuu, 10, 6, 4},
+ },
+ {
+ {NULL, 0, 0, 0},
+ {NULL, 0, 0, 0},
+ {NULL, 0, 0, 0},
+ {NULL, 0, 0, 0},
+ {NULL, 0, 0, 0},
+ },
+};
+
+static const struct SpriteSheet sSpriteSheet_ListMenuScrollIndicators = {
+ sLearnMoveInterfaceSpritesTiles, 0x180, 5525
+};
+
+static const struct SpritePalette sSpritePalette_ListMenuScrollIndicators = {
+ sLearnMoveInterfaceSpritesPalette, 5526
+};
+
+static const struct OamData sOamdata_MoveRelearnerListMenuScrollIndicators = {
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8)
+};
+
+static const union AnimCmd sAnimCmd_ScrollIndicatorDown[] = {
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_ScrollIndicatorUp[] = {
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_MoveRelearnerListMenuScrollIndicators[] = {
+ sAnimCmd_ScrollIndicatorDown,
+ sAnimCmd_ScrollIndicatorUp
+};
+
+static const struct SpriteTemplate sSpriteTemplate_MoveRelearnerListMenuScrollIndicators = {
+ 5525, 5526, &sOamdata_MoveRelearnerListMenuScrollIndicators, sSpriteAnimTable_MoveRelearnerListMenuScrollIndicators, NULL, gDummySpriteAffineAnimTable, SpriteCB_ListMenuScrollIndicators
+};
+
+static const struct BgTemplate sBgTemplates[2] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .priority = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 8,
+ .priority = 1
+ }
+};
+
+static const struct WindowTemplate sWindowTemplates[9] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 6,
+ .height = 7,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x014
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 10,
+ .tilemapTop = 0,
+ .width = 5,
+ .height = 5,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x03e
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 0,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x057
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 0,
+ .width = 3,
+ .height = 5,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x061
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 2,
+ .width = 3,
+ .height = 3,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x070
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 6,
+ .width = 15,
+ .height = 8,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x079
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 12,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0f1
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x169
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_83FFA8C = {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 8,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x1d1
+};
+
+static const struct ListMenuTemplate sMoveRelearnerListMenuTemplate = {
+ .items = NULL,
+ .moveCursorFunc = MoveRelearnerMenu_MoveCursorFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 0,
+ .maxShowed = 7,
+ .windowId = 6,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 2,
+ .cursorKind = 0,
+};
+
+static void VBlankCB_MoveRelearner(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void DisplayMoveTutorMenu(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(Task_InitMoveRelearnerMenu, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+}
+
+static void Task_InitMoveRelearnerMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_MoveRelearner_Init);
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
+ DestroyTask(taskId);
+ }
+}
+
+static void MoveRelearnerLoadBgGfx(void)
+{
+ int i;
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
+ ResetTempTileDataBuffers();
+ if (InitWindows(sWindowTemplates))
+ {
+ DeactivateAllTextPrinters();
+ for (i = 0; i < NELEMS(sWindowTemplates); i++)
+ {
+ ClearWindowTilemap(i);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
+ }
+ FillWindowPixelBuffer(7, PIXEL_FILL(1));
+ FillBgTilemapBufferRect(0, 0x000, 0, 0, 30, 20, 0xF);
+ SetBgTilemapBuffer(1, sMoveRelearner->bg1TilemapBuffer);
+ TextWindow_SetUserSelectedFrame(0, 1, 0xE0);
+ sub_8107D38(0xD0, 1);
+ LoadPalette(gUnknown_8E97DDC, 0x00, 0x20);
+ DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8E97DFC, 0, 0, 0);
+ CopyToBgTilemapBuffer(1, gUnknown_8E97EC4, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ }
+}
+
+static void CB2_MoveRelearner_Init(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sMoveRelearner = AllocZeroed(sizeof(struct LearnMoveGfxResources));
+ InitMoveRelearnerStateVariables();
+ sMoveRelearner->selectedPartyMember = gSpecialVar_0x8004;
+ MoveRelearnerInitListMenuBuffersEtc();
+ SetVBlankCallback(VBlankCB_MoveRelearner);
+ MoveRelearnerLoadBgGfx();
+ SpawnListMenuScrollIndicatorSprites();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_MoveRelearner);
+}
+
+static void CB2_MoveRelearner_Resume(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ MoveRelearnerInitListMenuBuffersEtc();
+ sMoveRelearner->selectedMoveSlot = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_MoveRelearner);
+ MoveRelearnerLoadBgGfx();
+ SpawnListMenuScrollIndicatorSprites();
+ FillPalette(RGB_BLACK, 0, 2);
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_MoveRelearner);
+}
+
+static void CB2_MoveRelearner(void)
+{
+ if (!IsTextPrinterActive(7))
+ MoveRelearnerStateMachine();
+ if (sMoveRelearner->scheduleMoveInfoUpdate)
+ {
+ PrintMoveInfoHandleCancel_CopyToVram();
+ sMoveRelearner->scheduleMoveInfoUpdate = FALSE;
+ }
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void StringExpandPlaceholdersAndPrintTextOnWindow7Color2(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ PrintTextOnWindow(7, gStringVar4, 0, 2, GetTextSpeedSetting(), 2);
+}
+
+static void MoveRelearnerStateMachine(void)
+{
+ u16 move;
+
+ switch (sMoveRelearner->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ ShowBg(0);
+ ShowBg(1);
+ LoadMoveInfoUI();
+ sMoveRelearner->state++;
+ DrawTextBorderOnWindows6and7();
+ PrintTeachWhichMoveToStrVar1(FALSE);
+ MoveLearnerInitListMenu();
+ sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ sMoveRelearner->state = 4;
+ break;
+ case 2:
+ sMoveRelearner->state++;
+ break;
+ case 3:
+ PrintTeachWhichMoveToStrVar1(FALSE);
+ sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
+ sMoveRelearner->state++;
+ break;
+ case 4:
+ MoveRelearnerMenuHandleInput();
+ break;
+ case 8:
+ CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
+ sMoveRelearner->state++;
+ break;
+ case 9:
+ switch (YesNoMenuProcessInput())
+ {
+ case 0:
+ if (GiveMoveToMon(&gPlayerParty[sMoveRelearner->selectedPartyMember], sMoveRelearner->learnableMoves[sMoveRelearner->selectedIndex]) != 0xFFFF)
+ {
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonLearnedMove);
+ gSpecialVar_0x8004 = TRUE;
+ sMoveRelearner->state = 31;
+ }
+ else
+ {
+ sMoveRelearner->state = 16;
+ }
+ break;
+ case 1:
+ case -1:
+ sMoveRelearner->state = 3;
+ break;
+ }
+ break;
+ case 12:
+ CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
+ sMoveRelearner->state++;
+ break;
+ case 13:
+ switch (YesNoMenuProcessInput())
+ {
+ case 0:
+ gSpecialVar_0x8004 = FALSE;
+ sMoveRelearner->state = 14;
+ break;
+ case 1:
+ case -1:
+ sMoveRelearner->state = 3;
+ break;
+ }
+ break;
+ case 16:
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonIsTryingToLearnMove);
+ sMoveRelearner->state++;
+ break;
+ case 17:
+ CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
+ sMoveRelearner->state = 18;
+ break;
+ case 18:
+ switch (YesNoMenuProcessInput())
+ {
+ case 0:
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_WhichMoveShouldBeForgotten);
+ sMoveRelearner->state = 19;
+ break;
+ case 1:
+ case -1:
+ sMoveRelearner->state = 24;
+ break;
+ }
+ break;
+ case 24:
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_StopLearningMove);
+ sMoveRelearner->state++;
+ break;
+ case 25:
+ CreateYesNoMenu(&gUnknown_83FFA8C, 3, 0, 2, 0x001, 0xE, 0);
+ sMoveRelearner->state = 26;
+ break;
+ case 26:
+ switch (YesNoMenuProcessInput())
+ {
+ case 0:
+ sMoveRelearner->state = 27;
+ break;
+ case 1:
+ case -1:
+ sMoveRelearner->state = 16;
+ break;
+ }
+ break;
+ case 27:
+ sMoveRelearner->state = 3;
+ break;
+ case 19:
+ sMoveRelearner->state = 20;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ ListMenuGetScrollAndRow(sMoveRelearner->listMenuTaskId, &sMoveRelearner->listMenuScrollPos, &sMoveRelearner->listMenuScrollRow);
+ FreeAllWindowBuffers();
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, sMoveRelearner->selectedPartyMember, gPlayerPartyCount - 1, CB2_MoveRelearner_Resume, sMoveRelearner->learnableMoves[sMoveRelearner->selectedIndex]);
+ sMoveRelearner->state = 28;
+ }
+ break;
+ case 21:
+ sMoveRelearner->state = 14;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sMoveRelearner->state++;
+ break;
+ case 15:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ Free(sMoveRelearner);
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ case 28:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ ShowBg(0);
+ ShowBg(1);
+ sMoveRelearner->state++;
+ LoadMoveInfoUI();
+ DrawTextBorderOnWindows6and7();
+ MoveLearnerInitListMenu();
+ PrintTeachWhichMoveToStrVar1(TRUE);
+ PrintMoveInfoHandleCancel_CopyToVram();
+ break;
+ case 29:
+ if (!gPaletteFade.active)
+ {
+ if (sMoveRelearner->selectedMoveSlot == 4)
+ {
+ sMoveRelearner->state = 24;
+ }
+ else
+ {
+ move = GetMonData(&gPlayerParty[sMoveRelearner->selectedPartyMember], MON_DATA_MOVE1 + sMoveRelearner->selectedMoveSlot);
+ StringCopy(gStringVar3, gMoveNames[move]);
+ RemoveMonPPBonus(&gPlayerParty[sMoveRelearner->selectedPartyMember], sMoveRelearner->selectedMoveSlot);
+ SetMonMoveSlot(&gPlayerParty[sMoveRelearner->selectedPartyMember], sMoveRelearner->learnableMoves[sMoveRelearner->selectedIndex], sMoveRelearner->selectedMoveSlot);
+ StringCopy(gStringVar2, gMoveNames[sMoveRelearner->learnableMoves[sMoveRelearner->selectedIndex]]);
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_1_2_and_Poof);
+ sMoveRelearner->state = 30;
+ gSpecialVar_0x8004 = TRUE;
+ }
+ }
+ break;
+ case 30:
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_MonForgotOldMoveAndMonLearnedNewMove);
+ sMoveRelearner->state = 31;
+ PlayFanfare(MUS_FANFA1);
+ break;
+ case 31:
+ PlayFanfare(MUS_FANFA1);
+ sMoveRelearner->state = 32;
+ break;
+ case 32:
+ if (IsFanfareTaskInactive())
+ sMoveRelearner->state = 33;
+ break;
+ case 33:
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sMoveRelearner->state = 14;
+ }
+ break;
+ }
+}
+
+static void DrawTextBorderOnWindows6and7(void)
+{
+ int i;
+ for (i = 6; i < 8; i++)
+ DrawTextBorderOuter(i, 0x001, 0xE);
+}
+
+static void PrintTeachWhichMoveToStrVar1(bool8 onInit)
+{
+ if (!onInit)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToMon);
+ PrintTextOnWindow(7, gStringVar4, 0, 2, 0, 2);
+ PutWindowTilemap(7);
+ CopyWindowToVram(7, 3);
+ }
+}
+
+static void InitMoveRelearnerStateVariables(void)
+{
+ int i;
+ sMoveRelearner->state = 0;
+ sMoveRelearner->unk_02 = 0;
+ sMoveRelearner->scrollPositionMaybe = 0;
+ sMoveRelearner->unk_18 = 0;
+ sMoveRelearner->unk_1C = 0;
+ sMoveRelearner->numLearnableMoves = 0;
+ sMoveRelearner->unk_1B = 0;
+ sMoveRelearner->unk_1D = 0;
+ sMoveRelearner->unk_1E = 0;
+ sMoveRelearner->scheduleMoveInfoUpdate = FALSE;
+ for (i = 0; i < 20; i++)
+ sMoveRelearner->learnableMoves[i] = MOVE_NONE;
+}
+
+static void SpriteCB_ListMenuScrollIndicators(struct Sprite * sprite)
+{
+ s16 abcissa = (sprite->data[1] * 10) & 0xFF;
+ switch (sprite->data[0])
+ {
+ case 0:
+ break;
+ case 1:
+ sprite->pos2.x = Sin(abcissa, 3) * sprite->data[2];
+ break;
+ case 2:
+ sprite->pos2.y = Sin(abcissa, 1) * sprite->data[2];
+ break;
+ }
+ sprite->data[1]++;
+}
+
+static void SpawnListMenuScrollIndicatorSprites(void)
+{
+ int i;
+ LoadSpriteSheet(&sSpriteSheet_ListMenuScrollIndicators);
+ LoadSpritePalette(&sSpritePalette_ListMenuScrollIndicators);
+ sMoveRelearner->spriteIds[0] = CreateSprite(&sSpriteTemplate_MoveRelearnerListMenuScrollIndicators, 200, 4, 0);
+ StartSpriteAnim(&gSprites[sMoveRelearner->spriteIds[0]], 1);
+ gSprites[sMoveRelearner->spriteIds[0]].data[0] = 2;
+ gSprites[sMoveRelearner->spriteIds[0]].data[2] = -1;
+
+ // Bug: This should be using the second element of spriteIds.
+ sMoveRelearner->spriteIds[0] = CreateSprite(&sSpriteTemplate_MoveRelearnerListMenuScrollIndicators, 200, 108, 0);
+ gSprites[sMoveRelearner->spriteIds[0]].data[0] = 2;
+ gSprites[sMoveRelearner->spriteIds[0]].data[2] = 1;
+ for (i = 0; i < 2; i++)
+ gSprites[sMoveRelearner->spriteIds[i]].invisible = TRUE;
+}
+
+static void MoveRelearnerInitListMenuBuffersEtc(void)
+{
+ int i;
+ s32 count;
+ u8 nickname[11];
+
+ sMoveRelearner->numLearnableMoves = GetMoveRelearnerMoves(&gPlayerParty[sMoveRelearner->selectedPartyMember], sMoveRelearner->learnableMoves);
+ count = GetMoveRelearnerMoves(&gPlayerParty[sMoveRelearner->selectedPartyMember], sMoveRelearner->learnableMoves);
+ for (i = 0; i < sMoveRelearner->numLearnableMoves; i++)
+ StringCopy(sMoveRelearner->listMenuStrbufs[i], gMoveNames[sMoveRelearner->learnableMoves[i]]);
+ GetMonData(&gPlayerParty[sMoveRelearner->selectedPartyMember], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(sMoveRelearner->listMenuStrbufs[sMoveRelearner->numLearnableMoves], gFameCheckerText_Cancel);
+ sMoveRelearner->numLearnableMoves++;
+ for (i = 0; i < count; i++)
+ {
+ sMoveRelearner->listMenuItems[i].label = sMoveRelearner->listMenuStrbufs[i];
+ sMoveRelearner->listMenuItems[i].index = i;
+ }
+ sMoveRelearner->listMenuItems[i].label = gFameCheckerText_Cancel;
+ sMoveRelearner->listMenuItems[i].index = 0xFE;
+ gMultiuseListMenuTemplate = sMoveRelearnerListMenuTemplate;
+ gMultiuseListMenuTemplate.items = sMoveRelearner->listMenuItems;
+ gMultiuseListMenuTemplate.totalItems = count + 1;
+}
+
+static void MoveRelearnerMenuHandleInput(void)
+{
+ ListMenu_ProcessInput(sMoveRelearner->listMenuTaskId);
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (sMoveRelearner->selectedIndex != 0xFE)
+ {
+ sMoveRelearner->state = 8;
+ StringCopy(gStringVar2, sMoveRelearner->listMenuStrbufs[sMoveRelearner->selectedIndex]);
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_TeachMoveQues);
+ }
+ else
+ {
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_GiveUpTryingToTeachNewMove);
+ sMoveRelearner->state = 12;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sMoveRelearner->state = 12;
+ StringExpandPlaceholdersAndPrintTextOnWindow7Color2(gText_GiveUpTryingToTeachNewMove);
+ }
+ if (sMoveRelearner->numLearnableMoves > 6)
+ {
+ gSprites[0].invisible = FALSE;
+ gSprites[1].invisible = FALSE;
+ if (sMoveRelearner->scrollPositionMaybe == 0)
+ gSprites[0].invisible = TRUE;
+ else if (sMoveRelearner->scrollPositionMaybe == sMoveRelearner->numLearnableMoves - 6)
+ gSprites[1].invisible = TRUE;
+ }
+}
+
+static void MoveLearnerInitListMenu(void)
+{
+ sMoveRelearner->listMenuTaskId = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearner->listMenuScrollPos, sMoveRelearner->listMenuScrollRow);
+ CopyWindowToVram(6, 1);
+}
+
+static void PrintMoveInfo(u16 move)
+{
+ u8 buffer[50];
+ BlitMoveInfoIcon(2, gBattleMoves[move].type + 1, 1, 4);
+
+ if (gBattleMoves[move].power < 2)
+ {
+ PrintTextOnWindow(3, gText_ThreeHyphens, 1, 4, 0, 0);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ PrintTextOnWindow(3, buffer, 1, 4, 0, 0);
+ }
+
+ if (gBattleMoves[move].accuracy == 0)
+ {
+ PrintTextOnWindow(3, gText_ThreeHyphens, 1, 18, 0, 1);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ PrintTextOnWindow(3, buffer, 1, 18, 0, 1);
+ }
+ ConvertIntToDecimalStringN(buffer, gBattleMoves[move].pp, STR_CONV_MODE_LEFT_ALIGN, 2);
+ PrintTextOnWindow(4, buffer, 2, 2, 0, 0);
+ PrintTextOnWindow(5, gMoveDescriptionPointers[move - 1], 1, 0, 0, 0);
+}
+
+static void LoadMoveInfoUI(void)
+{
+ BlitMoveInfoIcon(0, 19, 1, 4);
+ BlitMoveInfoIcon(1, 20, 0, 4);
+ BlitMoveInfoIcon(1, 21, 0, 19);
+ BlitMoveInfoIcon(0, 22, 1, 19);
+ BlitMoveInfoIcon(0, 23, 1, 34);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(3);
+ PutWindowTilemap(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(7);
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+}
+
+static void PrintMoveInfoHandleCancel_CopyToVram(void)
+{
+ int i;
+ if (sMoveRelearner->selectedIndex != 0xFE)
+ {
+ PrintMoveInfo(sMoveRelearner->learnableMoves[sMoveRelearner->selectedIndex]);
+ }
+ else
+ {
+ for (i = 2; i < 6; i++)
+ {
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
+ CopyWindowToVram(i, 2);
+ }
+ }
+ CopyWindowToVram(3, 2);
+ CopyWindowToVram(4, 2);
+ CopyWindowToVram(2, 2);
+ CopyWindowToVram(2, 2);
+ CopyWindowToVram(5, 2);
+ CopyWindowToVram(7, 3);
+}
+
+static void MoveRelearnerMenu_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (!onInit)
+ {
+ PlaySE(SE_SELECT);
+ sMoveRelearner->scheduleMoveInfoUpdate = TRUE;
+ sMoveRelearner->selectedIndex = itemIndex;
+ }
+}
+
+static s8 YesNoMenuProcessInput(void)
+{
+ s8 input = Menu_ProcessInputNoWrapClearOnChoose();
+ if (input != -2)
+ {
+ PutWindowTilemap(6);
+ CopyWindowToVram(6, 1);
+ }
+ return input;
+}
+
+static void PrintTextOnWindow(u8 windowId, const u8 *str, u8 x, u8 y, s32 speed, s32 colorIdx)
+{
+ s32 letterSpacing = 1;
+ s32 lineSpacing = 1;
+ if (colorIdx == 0 || colorIdx == 1)
+ {
+ letterSpacing = 0;
+ lineSpacing = 0;
+ }
+ switch (colorIdx)
+ {
+ case 0:
+ case 1:
+ sMoveRelearner->textColor[0] = 0;
+ sMoveRelearner->textColor[1] = 2;
+ sMoveRelearner->textColor[2] = 3;
+ break;
+ case 2:
+ sMoveRelearner->textColor[0] = 1;
+ sMoveRelearner->textColor[1] = 2;
+ sMoveRelearner->textColor[2] = 3;
+ }
+ if (colorIdx != 1)
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(sMoveRelearner->textColor[0]));
+ AddTextPrinterParameterized4(windowId, 3, x, y, letterSpacing, lineSpacing, sMoveRelearner->textColor, speed, str);
+}
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
new file mode 100644
index 000000000..fe15cc129
--- /dev/null
+++ b/src/map_name_popup.c
@@ -0,0 +1,216 @@
+#include "global.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "window.h"
+#include "palette.h"
+#include "task.h"
+#include "event_data.h"
+#include "text_window.h"
+#include "quest_log.h"
+#include "region_map.h"
+#include "text.h"
+#include "strings.h"
+#include "string_util.h"
+#include "constants/flags.h"
+
+static void Task_MapNamePopup(u8 taskId);
+static u16 MapNamePopupCreateWindow(bool32 palIntoFadedBuffer);
+static void MapNamePopupPrintMapNameOnWindow(u16 windowId);
+static u8 *MapNamePopupAppendFloorNum(u8 *dest, s8 flags);
+
+void CreateMapNamePopupIfNotAlreadyRunning(bool32 palIntoFadedBuffer)
+{
+ u8 taskId;
+ if (FlagGet(FLAG_SPECIAL_FLAG_0x4000) != TRUE && !(gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3))
+ {
+ taskId = FindTaskIdByFunc(Task_MapNamePopup);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(Task_MapNamePopup, 90);
+ ChangeBgX(0, 0x00000000, 0);
+ ChangeBgY(0, 0xFFFFEF7F, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[8] = palIntoFadedBuffer;
+ }
+ else
+ {
+ if (gTasks[taskId].data[0] != 4)
+ gTasks[taskId].data[0] = 4;
+ gTasks[taskId].data[3] = 1;
+ }
+ }
+}
+
+static void Task_MapNamePopup(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[4] = MapNamePopupCreateWindow(task->data[8]);
+ task->data[5] = 1;
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ break;
+ // fallthrough
+ case 2:
+ task->data[2] -= 2;
+ if (task->data[2] <= -24)
+ {
+ task->data[0] = 3;
+ task->data[1] = 0;
+ }
+ break;
+ case 3:
+ task->data[1]++;
+ if (task->data[1] > 120)
+ {
+ task->data[1] = 0;
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ task->data[2] += 2;
+ if (task->data[2] >= 0)
+ {
+ if (task->data[3])
+ {
+ MapNamePopupPrintMapNameOnWindow(task->data[4]);
+ CopyWindowToVram(task->data[4], 2);
+ task->data[0] = 1;
+ task->data[3] = 0;
+ }
+ else
+ {
+ task->data[0] = 6;
+ return;
+ }
+ }
+ case 5:
+ break;
+ case 6:
+ if (task->data[5] && !task->data[6])
+ {
+ rbox_fill_rectangle(task->data[4]);
+ CopyWindowToVram(task->data[4], 1);
+ task->data[6] = 1;
+ }
+ task->data[0] = 7;
+ return;
+ case 7:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ if (task->data[5])
+ {
+ RemoveWindow(task->data[4]);
+ task->data[5] = 0;
+ task->data[7] = 1;
+ }
+ task->data[0] = 8;
+ ChangeBgY(0, 0x00000000, 0);
+ }
+ return;
+ case 8:
+ DestroyTask(taskId);
+ return;
+ }
+ SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]);
+}
+
+void DismissMapNamePopup(void)
+{
+ u8 taskId;
+ s16 *data;
+ taskId = FindTaskIdByFunc(Task_MapNamePopup);
+ if (taskId != 0xFF)
+ {
+ data = gTasks[taskId].data;
+ if (data[0] < 6)
+ data[0] = 6;
+ }
+}
+
+bool32 IsMapNamePopupTaskActive(void)
+{
+ return FindTaskIdByFunc(Task_MapNamePopup) != 0xFF ? TRUE : FALSE;
+}
+
+static u16 MapNamePopupCreateWindow(bool32 palintoFadedBuffer)
+{
+ struct WindowTemplate windowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 29,
+ .width = 14,
+ .height = 2,
+ .paletteNum = 0xD,
+ .baseBlock = 0x001
+ };
+ u16 windowId;
+ u16 r6 = 0x01D;
+ if (gMapHeader.flags != 0)
+ {
+ if (gMapHeader.flags != 0x7F)
+ {
+ windowTemplate.width += 5;
+ r6 = 0x027;
+ }
+ else
+ {
+ windowTemplate.width += 8;
+ r6 = 0x02D;
+ }
+ }
+ windowId = AddWindow(&windowTemplate);
+ if (palintoFadedBuffer)
+ {
+ LoadPalette(stdpal_get(3), 0xd0, 0x20);
+ }
+ else
+ {
+ CpuCopy16(stdpal_get(3), &gPlttBufferUnfaded[0xd0], 0x20);
+ }
+ sub_814FF6C(windowId, r6);
+ DrawTextBorderOuter(windowId, r6, 0xD);
+ PutWindowTilemap(windowId);
+ MapNamePopupPrintMapNameOnWindow(windowId);
+ CopyWindowToVram(windowId, 3);
+ return windowId;
+}
+
+static void MapNamePopupPrintMapNameOnWindow(u16 windowId)
+{
+ u8 mapName[25];
+ u32 maxWidth = 112;
+ u32 xpos;
+ u8 *ptr = GetMapName(mapName, gMapHeader.regionMapSectionId, 0);
+ if (gMapHeader.flags != 0)
+ {
+ ptr = MapNamePopupAppendFloorNum(ptr, gMapHeader.flags);
+ maxWidth = gMapHeader.flags != 0x7F ? 152 : 176;
+ }
+ xpos = (maxWidth - GetStringWidth(2, mapName, -1)) / 2;
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized(windowId, 2, mapName, xpos, 2, 0xFF, NULL);
+}
+
+static u8 *MapNamePopupAppendFloorNum(u8 *dest, s8 flags)
+{
+ if (flags == 0)
+ return dest;
+ *dest++ = CHAR_SPACE;
+ if (flags == 0x7F)
+ return StringCopy(dest, gUnknown_841D18D);
+ if (flags < 0)
+ {
+ *dest++ = CHAR_B;
+ flags *= -1;
+ }
+ dest = ConvertIntToDecimalStringN(dest, flags, STR_CONV_MODE_LEFT_ALIGN, 2);
+ *dest++ = CHAR_F;
+ *dest = EOS;
+ return dest;
+}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index bca99d38f..8e07c1c97 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -16,6 +16,41 @@ static const bool8 sTileSurfable[METATILE_COUNT] = {
[MB_SOUTHWARD_CURRENT] = TRUE
};
+static const u8 sTileBitAttributes[] = {
+ 0x00,
+ 0x01,
+ 0x02,
+ 0x04,
+ 0x08,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00
+};
+
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior)
{
return TRUE;
@@ -736,7 +771,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior) { return FALSE;
bool8 sub_805A2BC(u8 arg1, u8 arg2)
{
- if(gUnknown_8353068[arg1] & arg2)
+ if(sTileBitAttributes[arg1] & arg2)
return TRUE;
else
return FALSE;
diff --git a/src/mevent.c b/src/mevent.c
index 671e30ee0..5ed001d09 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -588,7 +588,7 @@ void DestroyWonderCard(void)
ClearRamScript();
sub_806E2D0();
sub_806E370();
- sub_80E7524(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
}
bool32 sub_8143F68(const struct MEWonderCardData * data)
diff --git a/src/mevent_client.c b/src/mevent_client.c
index c2a86afdd..4da0b4bc1 100644
--- a/src/mevent_client.c
+++ b/src/mevent_client.c
@@ -14,7 +14,7 @@ static void mevent_client_init(struct mevent_client *, u32, u32);
static u32 mevent_client_exec(struct mevent_client *);
static void mevent_client_free_resources(struct mevent_client *);
-extern const struct mevent_client_cmd gMEventClientScript_InotialListen[];
+extern const struct mevent_client_cmd gMEventClientScript_InitialListen[];
void mevent_client_do_init(void)
{
@@ -89,7 +89,7 @@ static void mevent_client_send_word(struct mevent_client * svr, u32 ident, u32 w
static u32 client_mainseq_0(struct mevent_client * svr)
{
// init
- memcpy(svr->cmdBuffer, gMEventClientScript_InotialListen, ME_SEND_BUF_SIZE);
+ memcpy(svr->cmdBuffer, gMEventClientScript_InitialListen, ME_SEND_BUF_SIZE);
svr->cmdidx = 0;
svr->mainseqno = 4;
svr->flag = 0;
diff --git a/src/mevent_scripts.c b/src/mevent_scripts.c
new file mode 100644
index 000000000..04d44f603
--- /dev/null
+++ b/src/mevent_scripts.c
@@ -0,0 +1,192 @@
+#include "global.h"
+#include "mevent_server.h"
+
+extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
+
+// Unreferenced
+const u8 gUnknown_84687A0[] = _("You have collected all STAMPs!\nWant to input a CARD as a prize?");
+
+/* CLIENT SCRIPTS */
+
+const struct mevent_client_cmd gMEventClientScript_InitialListen[] = { // 84687E0
+ CLI_RECEIVE(0x10),
+ CLI_JUMPBUF
+};
+
+const struct mevent_client_cmd gMEventClientScript_Send1442CC[] = {
+ CLI_SNDHEAD,
+ CLI_WAITSND,
+ CLI_RECEIVE(0x10),
+ CLI_JUMPBUF
+};
+
+const struct mevent_client_cmd gMEventClientScript_UnableToRecv[] = { // can't accept card or news
+ CLI_SENDALL,
+ CLI_RETURN(0x0a)
+};
+
+const struct mevent_client_cmd gMEventClientScript_CommError[] = { // comm error
+ CLI_SENDALL,
+ CLI_RETURN(0x0b)
+};
+
+const struct mevent_client_cmd gMEventClientScript_NothingSentOver[] = { // nothing sent
+ CLI_SENDALL,
+ CLI_RETURN(0x00)
+};
+
+const struct mevent_client_cmd gMEventClientScript_ReceiveCardAndReturnSuccess[] = { // card success
+ CLI_RECEIVE(0x16),
+ CLI_RECVSAV,
+ CLI_RECEIVE(0x19),
+ CLI_RECVRAM,
+ CLI_SENDALL,
+ CLI_RETURN(0x02)
+};
+
+const struct mevent_client_cmd gMEventClientScript_ReceiveNewsAndValidate[] = {
+ CLI_RECEIVE(0x17),
+ CLI_VLDNEWS,
+ CLI_WAITSND,
+ CLI_RECEIVE(0x10),
+ CLI_JUMPBUF
+};
+
+const struct mevent_client_cmd gMEventClientScript_AlreadyHadNews[] = { // already had news
+ CLI_SENDALL,
+ CLI_RETURN(0x07)
+};
+
+const struct mevent_client_cmd gMEventClientScript_RecvNewsSuccess[] = { // news success
+ CLI_SENDALL,
+ CLI_RETURN(0x03)
+};
+
+const struct mevent_client_cmd gMEventClientScript_AskWouldLikeToTossCard[] = {
+ CLI_REQWORD,
+ CLI_SNDWORD,
+ CLI_WAITSND,
+ CLI_RECEIVE(0x10),
+ CLI_JUMPBUF
+};
+
+const struct mevent_client_cmd gMEventClientScript_OtherTrainerCanceled[] = { // comm canceled
+ CLI_SENDALL,
+ CLI_RETURN(0x09)
+};
+
+const struct mevent_client_cmd gMEventClientScript_AlreadyHadCard[] = { // already had card
+ CLI_SENDALL,
+ CLI_RETURN(0x05)
+};
+
+const struct mevent_client_cmd gMEventClientScript_SuccessFromBuffer[] = { // success from buffer
+ CLI_RECEIVE(0x15),
+ CLI_RECVBUF,
+ CLI_SENDALL,
+ CLI_RETURN(0x0d)
+};
+
+/* SERVER SCRIPTS */
+
+const struct mevent_server_cmd gMEventSrvScript_UnableToSend[] = {
+ SRV_SEND(0x10, gMEventClientScript_UnableToRecv),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x0a)
+};
+
+const struct mevent_server_cmd gUnknown_8468950[] = {
+ SRV_SEND(0x10, gMEventClientScript_CommError),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x0b)
+};
+
+const struct mevent_server_cmd gUnknown_8468980[] = {
+ SRV_SEND(0x10, gMEventClientScript_OtherTrainerCanceled),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x09)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_OtherTrnHasNews[] = {
+ SRV_SEND(0x10, gMEventClientScript_AlreadyHadNews),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x07)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_SentNewsSuccess[] = {
+ SRV_SEND(0x28, gMEventClientScript_ReceiveNewsAndValidate),
+ SRV_WAITSND,
+ SRV_SEND_NEWS,
+ SRV_WAITSND,
+ SRV_RECV(0x13),
+ SRV_READWORD,
+ SRV_BRANCHIF(0x01, gMEventSrvScript_OtherTrnHasNews),
+ SRV_SEND(0x10, gMEventClientScript_RecvNewsSuccess),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x03)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_SendCardSuccess[] = {
+ SRV_SEND(0x30, gMEventClientScript_ReceiveCardAndReturnSuccess),
+ SRV_WAITSND,
+ SRV_SEND_CARD,
+ SRV_WAITSND,
+ SRV_BUFFER_SEND,
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x02)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_AskClientToOverwriteCard[] = {
+ SRV_SEND(0x28, gMEventClientScript_AskWouldLikeToTossCard),
+ SRV_WAITSND,
+ SRV_RECV(0x13),
+ SRV_READWORD,
+ SRV_BRANCHIF(0x00, gMEventSrvScript_SendCardSuccess),
+ SRV_BRANCH(gMEventSrvScript_OtherTrainerCanceled)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_OtherTrnHasCard[] = {
+ SRV_SEND(0x10, gMEventClientScript_AlreadyHadCard),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x05)
+};
+
+const struct mevent_server_cmd gUnknown_8468B3C[] = {
+ SRV_SEND(0x10, gMEventClientScript_NothingSentOver),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x00)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_SendNews[] = {
+ SRV_BUFFER_NEWS,
+ SRV_SEND(0x20, gMEventClientScript_Send1442CC),
+ SRV_WAITSND,
+ SRV_RECV(0x11),
+ SRV_READ_1442CC,
+ SRV_VALID_1442CC,
+ SRV_BRANCHIF(0x00, gMEventSrvScript_UnableToSend),
+ SRV_BRANCH(gMEventSrvScript_SentNewsSuccess)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_SendCard[] = {
+ SRV_BUFFER_CARD,
+ SRV_RAM_SCRIPT_IF_VALID,
+ SRV_SEND(0x20, gMEventClientScript_Send1442CC),
+ SRV_WAITSND,
+ SRV_RECV(0x11),
+ SRV_READ_1442CC,
+ SRV_VALID_1442CC,
+ SRV_BRANCHIF(0x00, gMEventSrvScript_UnableToSend),
+ SRV_CHECK_1442CC_14,
+ SRV_BRANCHIF(0x02, gMEventSrvScript_AskClientToOverwriteCard),
+ SRV_BRANCHIF(0x00, gMEventSrvScript_SendCardSuccess),
+ SRV_BRANCH(gMEventSrvScript_OtherTrnHasCard)
+};
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 06e23618d..6eff367c5 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -6,6 +6,7 @@
#include "pokemon_size_record.h"
#include "string_util.h"
#include "text.h"
+#include "strings.h"
#include "constants/species.h"
#define DEFAULT_MAX_SIZE 0 // was 0x8100 in Ruby/Sapphire, 0x8000 in Emerald
@@ -28,13 +29,13 @@ static const struct UnknownStruct sBigMonSizeTable[] =
{ 800, 100, 7710 },
{ 900, 150, 17710 },
{ 1000, 150, 32710 },
- { 1100, 100, -17826 },
- { 1200, 50, -7826 },
- { 1300, 20, -2826 },
- { 1400, 5, -826 },
- { 1500, 2, -326 },
- { 1600, 1, -126 },
- { 1700, 1, -26 },
+ { 1100, 100, 47710 },
+ { 1200, 50, 57710 },
+ { 1300, 20, 62710 },
+ { 1400, 5, 64710 },
+ { 1500, 2, 65210 },
+ { 1600, 1, 65410 },
+ { 1700, 1, 65510 },
};
static const u8 sGiftRibbonsMonDataIds[] =
@@ -44,8 +45,6 @@ static const u8 sGiftRibbonsMonDataIds[] =
MON_DATA_GIFT_RIBBON_7
};
-extern const u8 gText_DecimalPoint[];
-
#define CM_PER_INCH 2.54
static u32 GetMonSizeHash(struct Pokemon * pkmn)
diff --git a/src/quest_log.c b/src/quest_log.c
index b880a9b06..a8183e7ab 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -1425,7 +1425,7 @@ static void sub_81120AC(u8 taskId)
break;
default:
if (gUnknown_203AE94.unk_0_6 == 1)
- sub_8098110(1);
+ CreateMapNamePopupIfNotAlreadyRunning(1);
CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
Free(gUnknown_203AE90);
gUnknown_203AE94 = (struct UnkStruct_203AE94){};
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
new file mode 100644
index 000000000..195b29b0c
--- /dev/null
+++ b/src/save_menu_util.c
@@ -0,0 +1,58 @@
+#include "global.h"
+#include "string_util.h"
+#include "text.h"
+#include "event_data.h"
+#include "pokedex.h"
+#include "region_map.h"
+#include "save_menu_util.h"
+#include "constants/flags.h"
+
+void SaveStatToString(u8 gameStatId, u8 *dest0, u8 color)
+{
+ int nBadges;
+ int flagId;
+
+ u8 *dest = dest0;
+ *dest++ = EXT_CTRL_CODE_BEGIN;
+ *dest++ = EXT_CTRL_CODE_COLOR;
+ *dest++ = color;
+ *dest++ = EXT_CTRL_CODE_BEGIN;
+ *dest++ = EXT_CTRL_CODE_SHADOW;
+ *dest++ = color + 1;
+ switch (gameStatId)
+ {
+ case SAVE_STAT_NAME:
+ dest = StringCopy(dest, gSaveBlock2Ptr->playerName);
+ break;
+ case SAVE_STAT_POKEDEX:
+ if (IsNationalPokedexEnabled())
+ dest = ConvertIntToDecimalStringN(dest, GetNationalPokedexCount(1), STR_CONV_MODE_LEFT_ALIGN, 3);
+ else
+ dest = ConvertIntToDecimalStringN(dest, GetKantoPokedexCount(1), STR_CONV_MODE_LEFT_ALIGN, 3);
+ break;
+ case SAVE_STAT_TIME:
+ dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
+ *dest++ = CHAR_COLON;
+ dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ break;
+ case SAVE_STAT_TIME_HR_RT_ALIGN:
+ dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *dest++ = CHAR_COLON;
+ dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ break;
+ case SAVE_STAT_LOCATION:
+ sub_80C4DF8(dest, gMapHeader.regionMapSectionId);
+ break;
+ case SAVE_STAT_BADGES:
+ for (flagId = FLAG_BADGE01_GET, nBadges = 0; flagId < FLAG_BADGE01_GET + 8; flagId++)
+ {
+ if (FlagGet(flagId))
+ nBadges++;
+ }
+ *dest++ = nBadges + CHAR_0;
+ *dest++ = 10; // 'こ'
+ *dest++ = EOS;
+ break;
+ }
+}
+
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 3bfbbb08b..903f14d45 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -1343,13 +1343,13 @@ static bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4)
return FALSE;
}
-#ifdef NONMATCHING
static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
{
u8 sp0[9];
s32 r3, r6;
s32 i;
+ r6++; r6--;
r6 = sSlotMachineState->field_20[sSlotMachineState->field_32[0]] + 1;
r3 = sSlotMachineState->field_20[sSlotMachineState->field_32[1]] + 1;
a1++;
@@ -1364,15 +1364,12 @@ static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
sp0[sSlotMachineState->field_32[0] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[0]][r6];
sp0[sSlotMachineState->field_32[1] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[1]][r3];
sp0[a0 * 3 + i] = gUnknown_8464926[a0][a1];
- r6++;
- if (r6 >= 21)
+ if (++r6 >= 21)
r6 = 0;
- r3++;
- if (r3 >= 21)
+ if (++r3 >= 21)
r3 = 0;
- a1++;
- if (a1 >= 21)
- a1++;
+ if (++a1 >= 21)
+ a1 = 0;
}
switch (a2)
{
@@ -1415,292 +1412,6 @@ static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
}
return FALSE;
}
-#else
-NAKED
-static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x10\n"
- "\tadds r7, r0, 0\n"
- "\tadds r5, r1, 0\n"
- "\tmov r8, r2\n"
- "\tldr r0, _081407C8 @ =sSlotMachineState\n"
- "\tldr r2, [r0]\n"
- "\tmovs r1, 0x32\n"
- "\tldrsh r0, [r2, r1]\n"
- "\tlsls r0, 1\n"
- "\tadds r1, r2, 0\n"
- "\tadds r1, 0x20\n"
- "\tadds r0, r1, r0\n"
- "\tmovs r3, 0\n"
- "\tldrsh r0, [r0, r3]\n"
- "\tadds r6, r0, 0x1\n"
- "\tmovs r3, 0x34\n"
- "\tldrsh r0, [r2, r3]\n"
- "\tlsls r0, 1\n"
- "\tadds r1, r0\n"
- "\tmovs r3, 0\n"
- "\tldrsh r0, [r1, r3]\n"
- "\tadds r3, r0, 0x1\n"
- "\tadds r5, 0x1\n"
- "\tcmp r6, 0x14\n"
- "\tble _08140726\n"
- "\tmovs r6, 0\n"
- "_08140726:\n"
- "\tcmp r3, 0x14\n"
- "\tble _0814072C\n"
- "\tmovs r3, 0\n"
- "_0814072C:\n"
- "\tcmp r5, 0x14\n"
- "\tble _08140732\n"
- "\tmovs r5, 0\n"
- "_08140732:\n"
- "\tmovs r4, 0\n"
- "\tlsls r1, r7, 1\n"
- "\tlsls r0, r7, 2\n"
- "\tmov r9, r2\n"
- "\tldr r2, _081407CC @ =gUnknown_8464926\n"
- "\tmov r10, r2\n"
- "\tadds r1, r7\n"
- "\tadd r1, sp\n"
- "\tmov r12, r1\n"
- "\tadds r0, r7\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r7\n"
- "\tstr r0, [sp, 0xC]\n"
- "_0814074C:\n"
- "\tmov r7, r9\n"
- "\tmovs r0, 0x32\n"
- "\tldrsh r1, [r7, r0]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tadds r0, r4\n"
- "\tmov r7, sp\n"
- "\tadds r2, r7, r0\n"
- "\tlsls r0, r1, 2\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r1\n"
- "\tadds r0, r6, r0\n"
- "\tadd r0, r10\n"
- "\tldrb r0, [r0]\n"
- "\tstrb r0, [r2]\n"
- "\tmov r0, r9\n"
- "\tmovs r2, 0x34\n"
- "\tldrsh r1, [r0, r2]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tadds r0, r4\n"
- "\tadds r2, r7, r0\n"
- "\tlsls r0, r1, 2\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r1\n"
- "\tadds r0, r3, r0\n"
- "\tadd r0, r10\n"
- "\tldrb r0, [r0]\n"
- "\tstrb r0, [r2]\n"
- "\tldr r7, [sp, 0xC]\n"
- "\tadds r0, r5, r7\n"
- "\tadd r0, r10\n"
- "\tldrb r0, [r0]\n"
- "\tmov r1, r12\n"
- "\tstrb r0, [r1]\n"
- "\tadds r6, 0x1\n"
- "\tcmp r6, 0x14\n"
- "\tble _0814079E\n"
- "\tmovs r6, 0\n"
- "_0814079E:\n"
- "\tadds r3, 0x1\n"
- "\tcmp r3, 0x14\n"
- "\tble _081407A6\n"
- "\tmovs r3, 0\n"
- "_081407A6:\n"
- "\tadds r5, 0x1\n"
- "\tcmp r5, 0x14\n"
- "\tble _081407AE\n"
- "\tmovs r5, 0\n"
- "_081407AE:\n"
- "\tmovs r2, 0x1\n"
- "\tadd r12, r2\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x2\n"
- "\tble _0814074C\n"
- "\tmov r3, r8\n"
- "\tcmp r3, 0x1\n"
- "\tbeq _08140828\n"
- "\tcmp r3, 0x1\n"
- "\tbgt _081407D0\n"
- "\tcmp r3, 0\n"
- "\tbeq _081407D8\n"
- "\tb _081408A0\n"
- "\t.align 2, 0\n"
- "_081407C8: .4byte sSlotMachineState\n"
- "_081407CC: .4byte gUnknown_8464926\n"
- "_081407D0:\n"
- "\tmov r6, r8\n"
- "\tcmp r6, 0x2\n"
- "\tbeq _08140870\n"
- "\tb _081408A0\n"
- "_081407D8:\n"
- "\tmovs r4, 0\n"
- "_081407DA:\n"
- "\tmov r7, sp\n"
- "\tadds r0, r7, r4\n"
- "\tldrb r1, [r0]\n"
- "\tmovs r0, 0x1\n"
- "\tbl sub_81408F4\n"
- "\tcmp r0, 0\n"
- "\tbne _081408DC_return_false\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x2\n"
- "\tble _081407DA\n"
- "\tmovs r4, 0\n"
- "\tldr r2, _08140824 @ =gUnknown_84648AE\n"
- "\tmovs r3, 0\n"
- "\tadds r5, r2, 0x2\n"
- "_081407F8:\n"
- "\tldrb r0, [r2]\n"
- "\tmov r6, sp\n"
- "\tadds r1, r6, r0\n"
- "\tldrb r0, [r2, 0x1]\n"
- "\tadd r0, sp\n"
- "\tldrb r1, [r1]\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r1, r0\n"
- "\tbne _08140816\n"
- "\tadds r0, r3, r5\n"
- "\tldrb r0, [r0]\n"
- "\tadd r0, sp\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r1, r0\n"
- "\tbeq _081408DC_return_false\n"
- "_08140816:\n"
- "\tadds r2, 0x3\n"
- "\tadds r3, 0x3\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x4\n"
- "\tble _081407F8\n"
- "_08140820_return_true:\n"
- "\tmovs r0, 0x1\n"
- "\tb _081408DE\n"
- "\t.align 2, 0\n"
- "_08140824: .4byte gUnknown_84648AE\n"
- "_08140828:\n"
- "\tmovs r4, 0\n"
- "\tldr r5, _0814086C @ =gUnknown_84648AE\n"
- "_0814082C:\n"
- "\tldrb r0, [r5]\n"
- "\tmov r7, sp\n"
- "\tadds r2, r7, r0\n"
- "\tldrb r0, [r5, 0x1]\n"
- "\tadds r1, r7, r0\n"
- "\tldrb r0, [r2]\n"
- "\tldrb r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tbne _0814084A\n"
- "\tadds r1, r0, 0\n"
- "\tmov r0, r8\n"
- "\tbl sub_81408F4\n"
- "\tcmp r0, 0\n"
- "\tbne _081408DC_return_false\n"
- "_0814084A:\n"
- "\tadds r5, 0x3\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x4\n"
- "\tble _0814082C\n"
- "\tmovs r4, 0\n"
- "_08140854:\n"
- "\tmov r1, sp\n"
- "\tadds r0, r1, r4\n"
- "\tldrb r1, [r0]\n"
- "\tmov r0, r8\n"
- "\tbl sub_81408F4\n"
- "\tcmp r0, 0\n"
- "\tbne _08140820_return_true\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x2\n"
- "\tble _08140854\n"
- "\tb _081408DC_return_false\n"
- "\t.align 2, 0\n"
- "_0814086C: .4byte gUnknown_84648AE\n"
- "_08140870:\n"
- "\tmovs r4, 0\n"
- "\tldr r5, _0814089C @ =gUnknown_84648AE\n"
- "_08140874:\n"
- "\tldrb r0, [r5]\n"
- "\tmov r3, sp\n"
- "\tadds r2, r3, r0\n"
- "\tldrb r0, [r5, 0x1]\n"
- "\tadds r1, r3, r0\n"
- "\tldrb r0, [r2]\n"
- "\tldrb r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tbne _08140892\n"
- "\tadds r1, r0, 0\n"
- "\tmov r0, r8\n"
- "\tbl sub_81408F4\n"
- "\tcmp r0, 0\n"
- "\tbne _08140820_return_true\n"
- "_08140892:\n"
- "\tadds r5, 0x3\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x4\n"
- "\tble _08140874\n"
- "\tb _081408DC_return_false\n"
- "\t.align 2, 0\n"
- "_0814089C: .4byte gUnknown_84648AE\n"
- "_081408A0:\n"
- "\tmovs r4, 0\n"
- "\tldr r5, _081408F0 @ =gUnknown_84648AE\n"
- "\tadds r7, r5, 0\n"
- "\tmovs r6, 0\n"
- "_081408A8:\n"
- "\tldrb r0, [r5]\n"
- "\tmov r1, sp\n"
- "\tadds r2, r1, r0\n"
- "\tadds r0, r7, 0x1\n"
- "\tadds r0, r6, r0\n"
- "\tldrb r0, [r0]\n"
- "\tadd r0, sp\n"
- "\tldrb r1, [r2]\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r1, r0\n"
- "\tbne _081408D2\n"
- "\tldrb r0, [r5, 0x2]\n"
- "\tadd r0, sp\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r1, r0\n"
- "\tbne _081408D2\n"
- "\tmov r0, r8\n"
- "\tbl sub_81408F4\n"
- "\tcmp r0, 0\n"
- "\tbne _08140820_return_true\n"
- "_081408D2:\n"
- "\tadds r5, 0x3\n"
- "\tadds r6, 0x3\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x4\n"
- "\tble _081408A8\n"
- "_081408DC_return_false:\n"
- "\tmovs r0, 0\n"
- "_081408DE:\n"
- "\tadd sp, 0x10\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_081408F0: .4byte gUnknown_84648AE");
-}
-#endif //NONMATCHING
static bool32 sub_81408F4(s32 a0, s32 a1)
{
@@ -2070,10 +1781,15 @@ static bool32 sub_8141180(u8 a0)
return sub_814112C()->field_0000[a0].unk3;
}
-#ifdef NONMATCHING
+static inline void LoadColor(u16 color, u16 *pal)
+{
+ *pal = color;
+ LoadPalette(pal, 0x00, 0x02);
+}
+
static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
- u16 pal;
+ u16 pal[2];
u8 textColor[3];
u32 x;
@@ -2109,8 +1825,7 @@ static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
LoadPalette(gUnknown_8465930, 0x00, 0xA0);
LoadPalette(gUnknown_84664BC, 0x50, 0x20);
LoadPalette(gUnknown_84665C0, 0x70, 0x60);
- pal = RGB(30, 30, 31);
- LoadPalette(&pal, 0x00, 0x02);
+ LoadColor(RGB(30, 30, 31), pal);
LoadUserWindowBorderGfx(0, 0x00A, 0xD0);
sub_814FDA0(0, 0x001, 0xF0);
@@ -2165,299 +1880,6 @@ static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
}
return TRUE;
}
-#else
-NAKED
-static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tsub sp, 0x14\n"
- "\tadds r7, r0, 0\n"
- "\tmov r8, r1\n"
- "\tldrb r6, [r7]\n"
- "\tcmp r6, 0x1\n"
- "\tbeq _081411D0\n"
- "\tcmp r6, 0x1\n"
- "\tbgt _081411B4\n"
- "\tcmp r6, 0\n"
- "\tbeq _081411C2\n"
- "\tb _08141450\n"
- "_081411B4:\n"
- "\tcmp r6, 0x2\n"
- "\tbne _081411BA\n"
- "\tb _081413E4\n"
- "_081411BA:\n"
- "\tcmp r6, 0x3\n"
- "\tbne _081411C0\n"
- "\tb _08141436\n"
- "_081411C0:\n"
- "\tb _08141450\n"
- "_081411C2:\n"
- "\tmovs r0, 0x1\n"
- "\tnegs r0, r0\n"
- "\tmovs r1, 0x10\n"
- "\tmovs r2, 0\n"
- "\tbl BlendPalettes\n"
- "\tb _0814142E\n"
- "_081411D0:\n"
- "\tmovs r0, 0\n"
- "\tbl SetVBlankCallback\n"
- "\tbl ResetSpriteData\n"
- "\tbl FreeAllSpritePalettes\n"
- "\tmovs r1, 0xE0\n"
- "\tlsls r1, 19\n"
- "\tmovs r2, 0x80\n"
- "\tlsls r2, 3\n"
- "\tmovs r0, 0\n"
- "\tmovs r3, 0x1\n"
- "\tbl RequestDma3Fill\n"
- "\tmovs r1, 0xC0\n"
- "\tlsls r1, 19\n"
- "\tmovs r0, 0\n"
- "\tmovs r2, 0x20\n"
- "\tmovs r3, 0x1\n"
- "\tbl RequestDma3Fill\n"
- "\tldr r1, _0814139C @ =0x0600c000\n"
- "\tmovs r0, 0\n"
- "\tmovs r2, 0x20\n"
- "\tmovs r3, 0x1\n"
- "\tbl RequestDma3Fill\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tbl ResetBgPositions\n"
- "\tmovs r0, 0\n"
- "\tbl ResetBgsAndClearDma3BusyFlags\n"
- "\tldr r1, _081413A0 @ =gUnknown_8466B10\n"
- "\tmovs r0, 0\n"
- "\tmovs r2, 0x4\n"
- "\tbl InitBgsFromTemplates\n"
- "\tldr r0, _081413A4 @ =gUnknown_8466B20\n"
- "\tbl InitWindows\n"
- "\tldr r1, _081413A8 @ =0x0000205c\n"
- "\tadd r1, r8\n"
- "\tmovs r0, 0x3\n"
- "\tbl SetBgTilemapBuffer\n"
- "\tmovs r4, 0x20\n"
- "\tstr r4, [sp]\n"
- "\tstr r4, [sp, 0x4]\n"
- "\tmovs r0, 0x3\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl FillBgTilemapBufferRect_Palette0\n"
- "\tmovs r0, 0x3\n"
- "\tbl CopyBgTilemapBufferToVram\n"
- "\tbl ResetTempTileDataBuffers\n"
- "\tldr r1, _081413AC @ =gUnknown_84659D0\n"
- "\tmovs r5, 0\n"
- "\tstr r5, [sp]\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl DecompressAndCopyTileDataToVram\n"
- "\tldr r1, _081413B0 @ =gUnknown_846653C\n"
- "\tstr r5, [sp]\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0xC0\n"
- "\tbl DecompressAndCopyTileDataToVram\n"
- "\tldr r1, _081413B4 @ =0x0000185c\n"
- "\tadd r1, r8\n"
- "\tmovs r0, 0x2\n"
- "\tbl SetBgTilemapBuffer\n"
- "\tldr r1, _081413B8 @ =gUnknown_84661D4\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl CopyToBgTilemapBuffer\n"
- "\tmovs r0, 0x2\n"
- "\tbl CopyBgTilemapBufferToVram\n"
- "\tldr r0, _081413BC @ =gUnknown_8465930\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0xA0\n"
- "\tbl LoadPalette\n"
- "\tldr r0, _081413C0 @ =gUnknown_84664BC\n"
- "\tmovs r1, 0x50\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tldr r0, _081413C4 @ =gUnknown_84665C0\n"
- "\tmovs r1, 0x70\n"
- "\tmovs r2, 0x60\n"
- "\tbl LoadPalette\n"
- "\tldr r1, _081413C8 @ =0x00007fde\n"
- "\tadd r0, sp, 0xC\n"
- "\tstrh r1, [r0]\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0x2\n"
- "\tbl LoadPalette\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0xA\n"
- "\tmovs r2, 0xD0\n"
- "\tbl LoadUserWindowBorderGfx\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r2, 0xF0\n"
- "\tbl sub_814FDA0\n"
- "\tldr r1, _081413CC @ =0x0000085c\n"
- "\tadd r1, r8\n"
- "\tmovs r0, 0\n"
- "\tbl SetBgTilemapBuffer\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x1E\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0x2\n"
- "\tbl FillBgTilemapBufferRect_Palette0\n"
- "\tldr r1, _081413D0 @ =gUnknown_8466620\n"
- "\tstr r5, [sp]\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl DecompressAndCopyTileDataToVram\n"
- "\tldr r1, _081413D4 @ =gUnknown_8466998\n"
- "\tstr r6, [sp]\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl DecompressAndCopyTileDataToVram\n"
- "\tmovs r0, 0x1\n"
- "\tbl CopyBgTilemapBufferToVram\n"
- "\tmovs r0, 0x2\n"
- "\tbl stdpal_get\n"
- "\tmovs r1, 0xE0\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r1, 0xFF\n"
- "\tbl FillWindowPixelBuffer\n"
- "\tmovs r0, 0x1\n"
- "\tbl PutWindowTilemap\n"
- "\tldr r4, _081413D8 @ =gString_SlotMachineControls\n"
- "\tmovs r0, 0\n"
- "\tadds r1, r4, 0\n"
- "\tmovs r2, 0\n"
- "\tbl GetStringWidth\n"
- "\tmovs r2, 0xEC\n"
- "\tsubs r2, r0\n"
- "\tadd r1, sp, 0x10\n"
- "\tmovs r0, 0xF\n"
- "\tstrb r0, [r1]\n"
- "\tstrb r6, [r1, 0x1]\n"
- "\tmovs r0, 0x2\n"
- "\tstrb r0, [r1, 0x2]\n"
- "\tlsls r2, 24\n"
- "\tlsrs r2, 24\n"
- "\tstr r1, [sp]\n"
- "\tstr r5, [sp, 0x4]\n"
- "\tstr r4, [sp, 0x8]\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0\n"
- "\tbl AddTextPrinterParameterized3\n"
- "\tmovs r0, 0\n"
- "\tbl CopyBgTilemapBufferToVram\n"
- "\tmovs r1, 0x83\n"
- "\tlsls r1, 5\n"
- "\tmovs r0, 0\n"
- "\tbl SetGpuRegBits\n"
- "\tmovs r0, 0x50\n"
- "\tmovs r1, 0xF8\n"
- "\tbl SetGpuReg\n"
- "\tbl sub_8140C0C\n"
- "\tbl sub_8140CA0\n"
- "\tbl sub_8140E9C\n"
- "\tbl sub_8140FC4\n"
- "\tbl sub_8140F2C\n"
- "\tmovs r0, 0x1\n"
- "\tnegs r0, r0\n"
- "\tmovs r1, 0x10\n"
- "\tmovs r2, 0\n"
- "\tbl BlendPalettes\n"
- "\tldr r0, _081413DC @ =sub_8141118\n"
- "\tbl SetVBlankCallback\n"
- "\tldr r0, _081413E0 @ =sub_8140E40\n"
- "\tbl SetHBlankCallback\n"
- "\tb _0814142E\n"
- "\t.align 2, 0\n"
- "_0814139C: .4byte 0x0600c000\n"
- "_081413A0: .4byte gUnknown_8466B10\n"
- "_081413A4: .4byte gUnknown_8466B20\n"
- "_081413A8: .4byte 0x0000205c\n"
- "_081413AC: .4byte gUnknown_84659D0\n"
- "_081413B0: .4byte gUnknown_846653C\n"
- "_081413B4: .4byte 0x0000185c\n"
- "_081413B8: .4byte gUnknown_84661D4\n"
- "_081413BC: .4byte gUnknown_8465930\n"
- "_081413C0: .4byte gUnknown_84664BC\n"
- "_081413C4: .4byte gUnknown_84665C0\n"
- "_081413C8: .4byte 0x00007fde\n"
- "_081413CC: .4byte 0x0000085c\n"
- "_081413D0: .4byte gUnknown_8466620\n"
- "_081413D4: .4byte gUnknown_8466998\n"
- "_081413D8: .4byte gString_SlotMachineControls\n"
- "_081413DC: .4byte sub_8141118\n"
- "_081413E0: .4byte sub_8140E40\n"
- "_081413E4:\n"
- "\tbl FreeTempTileDataBuffersIfPossible\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0\n"
- "\tbne _08141450\n"
- "\tmovs r0, 0\n"
- "\tbl ShowBg\n"
- "\tmovs r0, 0x3\n"
- "\tbl ShowBg\n"
- "\tmovs r0, 0x2\n"
- "\tbl ShowBg\n"
- "\tmovs r0, 0x1\n"
- "\tbl HideBg\n"
- "\tbl sub_8141B34\n"
- "\tmovs r4, 0x1\n"
- "\tnegs r4, r4\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x10\n"
- "\tmovs r2, 0\n"
- "\tbl BlendPalettes\n"
- "\tstr r5, [sp]\n"
- "\tadds r0, r4, 0\n"
- "\tadds r1, r4, 0\n"
- "\tmovs r2, 0x10\n"
- "\tmovs r3, 0\n"
- "\tbl BeginNormalPaletteFade\n"
- "\tmovs r0, 0x3\n"
- "\tbl EnableInterrupts\n"
- "_0814142E:\n"
- "\tldrb r0, [r7]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r7]\n"
- "\tb _08141450\n"
- "_08141436:\n"
- "\tbl UpdatePaletteFade\n"
- "\tldr r0, _0814144C @ =gPaletteFade\n"
- "\tldrb r1, [r0, 0x7]\n"
- "\tmovs r0, 0x80\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _08141450\n"
- "\tmovs r0, 0\n"
- "\tb _08141452\n"
- "\t.align 2, 0\n"
- "_0814144C: .4byte gPaletteFade\n"
- "_08141450:\n"
- "\tmovs r0, 0x1\n"
- "_08141452:\n"
- "\tadd sp, 0x14\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif //NONMATCHING
static bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index a4b511725..19d44d7cc 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -725,14 +725,16 @@ static void TT_ConvertEasyChatMessageToString(u16 *ecWords, u8 *dest)
}
}
-#ifdef NONMATCHING
static void sub_815DF54(void)
{
u16 r4 = gSpecialVar_0x8006;
u8 r1;
u8 r5 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType;
- // HOW DO I MATCH THIS CONTROL FLOW?!?!
- r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r5 == 1 ? 0 : r4].facilityClass;
+
+ if (r5 != 1)
+ r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].facilityClass;
+ else
+ r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].facilityClass;
switch (gSpecialVar_0x8005)
{
case 2:
@@ -752,147 +754,6 @@ static void sub_815DF54(void)
break;
}
}
-#else
-NAKED
-static void sub_815DF54(void)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tldr r0, _0815DF90 @ =gSpecialVar_0x8006\n"
- "\tldrh r4, [r0]\n"
- "\tldr r2, _0815DF94 @ =sTrainerTowerState\n"
- "\tldr r3, [r2]\n"
- "\tldrb r1, [r3]\n"
- "\tlsls r0, r1, 5\n"
- "\tsubs r0, r1\n"
- "\tlsls r1, r0, 5\n"
- "\tadds r0, r3, r1\n"
- "\tldrb r5, [r0, 0xE]\n"
- "\tcmp r5, 0x1\n"
- "\tbeq _0815DF7C\n"
- "\tlsls r0, r4, 2\n"
- "\tadds r0, r4\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r4\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r1\n"
- "\tadds r0, r3, r0\n"
- "_0815DF7C:\n"
- "\tldrb r1, [r0, 0x1B]\n"
- "\tldr r0, _0815DF98 @ =gSpecialVar_0x8005\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0x3\n"
- "\tbeq _0815DFD4\n"
- "\tcmp r0, 0x3\n"
- "\tbgt _0815DF9C\n"
- "\tcmp r0, 0x2\n"
- "\tbeq _0815DFA6\n"
- "\tb _0815E05C\n"
- "\t.align 2, 0\n"
- "_0815DF90: .4byte gSpecialVar_0x8006\n"
- "_0815DF94: .4byte sTrainerTowerState\n"
- "_0815DF98: .4byte gSpecialVar_0x8005\n"
- "_0815DF9C:\n"
- "\tcmp r0, 0x4\n"
- "\tbeq _0815E000\n"
- "\tcmp r0, 0x5\n"
- "\tbeq _0815E038\n"
- "\tb _0815E05C\n"
- "_0815DFA6:\n"
- "\tadds r0, r5, 0\n"
- "\tbl TrainerTowerGetOpponentTextColor\n"
- "\tldr r0, _0815DFD0 @ =sTrainerTowerState\n"
- "\tldr r0, [r0]\n"
- "\tldrb r2, [r0]\n"
- "\tlsls r1, r2, 5\n"
- "\tsubs r1, r2\n"
- "\tlsls r1, 5\n"
- "\tadds r1, 0xC\n"
- "\tadds r0, r1\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, 0x4\n"
- "\tadds r0, r1\n"
- "\tadds r0, 0xE\n"
- "\tb _0815E026\n"
- "\t.align 2, 0\n"
- "_0815DFD0: .4byte sTrainerTowerState\n"
- "_0815DFD4:\n"
- "\tadds r0, r5, 0\n"
- "\tbl TrainerTowerGetOpponentTextColor\n"
- "\tldr r0, _0815DFFC @ =sTrainerTowerState\n"
- "\tldr r0, [r0]\n"
- "\tldrb r2, [r0]\n"
- "\tlsls r1, r2, 5\n"
- "\tsubs r1, r2\n"
- "\tlsls r1, 5\n"
- "\tadds r1, 0xC\n"
- "\tadds r0, r1\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, 0x4\n"
- "\tadds r0, r1\n"
- "\tadds r0, 0x1A\n"
- "\tb _0815E026\n"
- "\t.align 2, 0\n"
- "_0815DFFC: .4byte sTrainerTowerState\n"
- "_0815E000:\n"
- "\tadds r0, r5, 0\n"
- "\tbl TrainerTowerGetOpponentTextColor\n"
- "\tldr r0, _0815E030 @ =sTrainerTowerState\n"
- "\tldr r0, [r0]\n"
- "\tldrb r2, [r0]\n"
- "\tlsls r1, r2, 5\n"
- "\tsubs r1, r2\n"
- "\tlsls r1, 5\n"
- "\tadds r1, 0xC\n"
- "\tadds r0, r1\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, 0x4\n"
- "\tadds r0, r1\n"
- "\tadds r0, 0x26\n"
- "_0815E026:\n"
- "\tldr r1, _0815E034 @ =gStringVar4\n"
- "\tbl TT_ConvertEasyChatMessageToString\n"
- "\tb _0815E05C\n"
- "\t.align 2, 0\n"
- "_0815E030: .4byte sTrainerTowerState\n"
- "_0815E034: .4byte gStringVar4\n"
- "_0815E038:\n"
- "\tldr r0, [r2]\n"
- "\tldrb r2, [r0]\n"
- "\tlsls r1, r2, 5\n"
- "\tsubs r1, r2\n"
- "\tlsls r1, 5\n"
- "\tadds r1, 0xC\n"
- "\tadds r0, r1\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 3\n"
- "\tadds r1, 0x4\n"
- "\tadds r0, r1\n"
- "\tadds r0, 0x32\n"
- "\tldr r1, _0815E064 @ =gStringVar4\n"
- "\tbl TT_ConvertEasyChatMessageToString\n"
- "_0815E05C:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_0815E064: .4byte gStringVar4");
-}
-#endif // NONMATCHING
static void TrainerTowerGetOpponentTextColor(u8 battleType, u8 facilityClass)
{
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 14a9fad1e..a892eb532 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -75,6 +75,7 @@ gUnknown_2031DEA: @ 2031DEA
gUnknown_2031DEC: @ 2031DEC
.space 0x10
+ .align 2
.include "src/fieldmap.o"
gUnknown_2036E28: @ 2036E28
@@ -189,7 +190,9 @@ gAnimBattlerSpecies: @ 2037F1C
gUnknown_2037F24: @ 2037F24
.space 0x4
+ .align 2
.include "src/battle_anim_mons.o"
+ .align 2
.include "src/title_screen.o"
.align 2
@@ -219,6 +222,7 @@ gUnknown_20386A8: @ 20386A8
gFieldEffectArguments: @ 20386E0
.space 0x20
+ .align 2
.include "src/scanline_effect.o"
.align 2
@@ -352,10 +356,12 @@ gUnknown_2039984: @ 2039984
gUnknown_203998C: @ 203998C
.space 0x4
+ .align 2
.include "src/money.o"
.align 2
.include "src/safari_zone.o"
+ .align 2
.include "src/item_use.o"
.align 2
@@ -413,7 +419,6 @@ gPlayerFacingPosition: @ 2039A04
.align 2
.include "src/field_specials.o"
-
.align 2
.include "src/battle_records.o"
@@ -423,7 +428,9 @@ gUnknown_2039A20: @ 2039A20
gUnknown_2039A24: @ 2039A24
.space 0x4
+ .align 2
.include "src/coins.o"
+ .align 2
.include "src/battle_transition.o"
gUnknown_2039A30: @ 2039A30
@@ -432,23 +439,22 @@ gUnknown_2039A30: @ 2039A30
gUnknown_2039A34: @ 2039A34
.space 0x4
+ .align 2
.include "src/save.o"
+ .align 2
.include "src/mystery_event_script.o"
gUnknown_203AAB0: @ 203AAB0
.space 0x4
-gUnknown_203AAB4: @ 203AAB4
- .space 0x4
-
-gUnknown_203AAB8: @ 203AAB8
- .space 0x4
-
+ .align 2
+ .include "src/learn_move.o"
+ .align 2
+ .include "src/battle_tower.o"
.align 2
.include "src/player_pc.o"
.align 2
.include "src/intro.o"
-
.align 2
.include "src/hall_of_fame.o"
.align 2
@@ -496,6 +502,7 @@ gUnknown_203ACEC: @ 203ACEC
gUnknown_203ACF0: @ 203ACF0
.space 0x4
+ .align 2
.include "src/list_menu.o"
.align 2
gUnknown_203ACFC: @ 203ACFC
@@ -539,22 +546,16 @@ gSpecialVar_ItemId: @ 203AD30
.align 2
.include "src/bag.o"
-
.align 2
.include "src/trainer_pokemon_sprites.o"
-
.align 2
.include "src/vs_seeker.o"
-
.align 2
.include "src/item_pc.o"
-
.align 2
.include "src/mailbox_pc.o"
-
.align 2
.include "src/menu.o"
-
.align 2
.include "src/quest_log.o"
@@ -640,7 +641,7 @@ gUnknown_203B0CC: @ 203B0CC
gUnknown_203B0D0: @ 203B0D0
.space 0x4
-gUnknown_203B0D4: @ 203B0D4
+gSelectedOrderFromParty: @ 203B0D4
.space 0x4
gUnknown_203B0D8: @ 203B0D8