summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-12-20 15:54:25 -0600
committerGitHub <noreply@github.com>2017-12-20 15:54:25 -0600
commit871ae4c283ec8bc7730df52790b5ca53baa82230 (patch)
tree6899e26a068d4854a026e3d13b7c51c36b68208a
parent3c5f725de49371aced1788a21f5e53df5b498b5f (diff)
parent5e6bfe67a87e041ebdc9e0b573d1ae1f22b79d59 (diff)
Merge pull request #494 from huderlem/battle_anim
Decompile small battle_anim effects
-rwxr-xr-xasm/beta_beat_up.s63
-rwxr-xr-xasm/bubble.s248
-rwxr-xr-xasm/fury_cutter_count.s48
-rwxr-xr-xasm/guard.s80
-rwxr-xr-xasm/heated_rock.s292
-rwxr-xr-xasm/liquid_ball.s353
-rwxr-xr-xasm/noise.s139
-rwxr-xr-xasm/note_spin.s234
-rwxr-xr-xasm/rain.s123
-rwxr-xr-xasm/shock.s259
-rwxr-xr-xasm/sunlight.s33
-rwxr-xr-xasm/thunder.s68
-rwxr-xr-xasm/water.s414
-rwxr-xr-xasm/wisp_orb.s230
-rw-r--r--data/battle_anim_80CA710.s2
-rw-r--r--data/battle_anim_scripts.s12
-rw-r--r--include/rom_8077ABC.h8
-rw-r--r--include/sprite.h8
-rw-r--r--ld_script.txt27
-rw-r--r--src/battle/anim/beta_beat_up.c34
-rw-r--r--src/battle/anim/bubble.c102
-rw-r--r--src/battle/anim/energy_wave.c162
-rw-r--r--src/battle/anim/fury_cutter_count.c20
-rw-r--r--src/battle/anim/guard.c34
-rw-r--r--src/battle/anim/heated_rock.c205
-rwxr-xr-xsrc/battle/anim/love_bg.c7
-rw-r--r--src/battle/anim/noise.c56
-rw-r--r--src/battle/anim/note_spin.c110
-rw-r--r--src/battle/anim/rain.c56
-rwxr-xr-xsrc/battle/anim/scary_face.c7
-rw-r--r--src/battle/anim/shock.c106
-rw-r--r--src/battle/anim/sunlight.c17
-rw-r--r--src/battle/anim/thunder.c36
-rw-r--r--src/battle/anim/water.c371
-rw-r--r--src/battle/anim/wisp_orb.c105
-rw-r--r--src/engine/sprite.c8
-rw-r--r--src/rom_8077ABC.c13
37 files changed, 1451 insertions, 2639 deletions
diff --git a/asm/beta_beat_up.s b/asm/beta_beat_up.s
deleted file mode 100755
index d6e1ba675..000000000
--- a/asm/beta_beat_up.s
+++ /dev/null
@@ -1,63 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ beta_beat_up
-
- thumb_func_start sub_80D6234
-sub_80D6234: @ 80D6234
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D6254 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D625C
- ldr r0, _080D6258 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r4, 0x20]
- b _080D6266
- .align 2, 0
-_080D6254: .4byte gBattleAnimBankAttacker
-_080D6258: .4byte gBattleAnimArgs
-_080D625C:
- ldr r0, _080D6270 @ =gBattleAnimArgs
- ldrh r0, [r0]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
-_080D6266:
- ldr r0, _080D6274 @ =sub_80D6278
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D6270: .4byte gBattleAnimArgs
-_080D6274: .4byte sub_80D6278
- thumb_func_end sub_80D6234
-
- thumb_func_start sub_80D6278
-sub_80D6278: @ 80D6278
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080D628E
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080D628E:
- pop {r0}
- bx r0
- thumb_func_end sub_80D6278
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/bubble.s b/asm/bubble.s
deleted file mode 100755
index 466e31b0d..000000000
--- a/asm/bubble.s
+++ /dev/null
@@ -1,248 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ bubble
-
- thumb_func_start sub_80D31C8
-sub_80D31C8: @ 80D31C8
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, _080D31F0 @ =gBattleAnimBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D31F8
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080D31F4 @ =gBattleAnimArgs
- ldrh r1, [r4]
- subs r0, r1
- b _080D320A
- .align 2, 0
-_080D31F0: .4byte gBattleAnimBankAttacker
-_080D31F4: .4byte gBattleAnimArgs
-_080D31F8:
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- ldr r4, _080D32D0 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
-_080D320A:
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r6, 0x22]
- adds r2, r6, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080D32D4 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D3240
- ldr r1, _080D32D0 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080D3240:
- ldr r5, _080D32D0 @ =gBattleAnimArgs
- ldrh r0, [r5, 0xC]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r4, _080D32D8 @ =gBattleAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080D32DC @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- strh r4, [r6, 0x38]
- ldrb r0, [r5, 0x8]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Sin
- ldrh r1, [r6, 0x20]
- subs r1, r0
- strh r1, [r6, 0x20]
- ldrb r0, [r5, 0x8]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl Cos
- ldrh r1, [r6, 0x22]
- subs r1, r0
- strh r1, [r6, 0x22]
- ldr r0, _080D32E0 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x4]
- strh r0, [r1, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r1, 0x30]
- ldrh r0, [r5, 0xA]
- strh r0, [r1, 0x32]
- ldrb r0, [r5, 0x8]
- lsls r0, 8
- strh r0, [r1, 0x34]
- ldrh r0, [r5, 0xC]
- strh r0, [r1, 0x36]
- ldr r1, _080D32E4 @ =sub_80D32E8
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D32D0: .4byte gBattleAnimArgs
-_080D32D4: .4byte gBattleAnimBankAttacker
-_080D32D8: .4byte gBattleAnimBankTarget
-_080D32DC: .4byte SpriteCallbackDummy
-_080D32E0: .4byte gSprites
-_080D32E4: .4byte sub_80D32E8
- thumb_func_end sub_80D31C8
-
- thumb_func_start sub_80D32E8
-sub_80D32E8: @ 80D32E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r1, [r5, 0x38]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080D3350 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r7, r0, r2
- ldrh r4, [r7, 0x36]
- lsls r4, 24
- lsrs r4, 24
- ldrh r0, [r7, 0x34]
- mov r8, r0
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl sub_8078B5C
- mov r1, r8
- lsrs r6, r1, 8
- movs r0, 0x2E
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Sin
- ldrh r1, [r5, 0x24]
- adds r0, r1
- strh r0, [r5, 0x24]
- movs r0, 0x30
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Cos
- ldrh r1, [r5, 0x26]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r0, [r7, 0x32]
- mov r1, r8
- adds r1, r0
- strh r1, [r7, 0x34]
- subs r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- cmp r4, 0
- beq _080D3354
- strh r4, [r7, 0x36]
- b _080D335E
- .align 2, 0
-_080D3350: .4byte gSprites
-_080D3354:
- ldr r0, _080D336C @ =sub_80D3370
- str r0, [r5, 0x1C]
- adds r0, r7, 0
- bl DestroySprite
-_080D335E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D336C: .4byte sub_80D3370
- thumb_func_end sub_80D32E8
-
- thumb_func_start sub_80D3370
-sub_80D3370: @ 80D3370
- push {lr}
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- strb r1, [r3]
- ldr r1, _080D3390 @ =sub_8078600
- str r1, [r0, 0x1C]
- ldr r1, _080D3394 @ =sub_80D3398
- bl StoreSpriteCallbackInData
- pop {r0}
- bx r0
- .align 2, 0
-_080D3390: .4byte sub_8078600
-_080D3394: .4byte sub_80D3398
- thumb_func_end sub_80D3370
-
- thumb_func_start sub_80D3398
-sub_80D3398: @ 80D3398
- push {lr}
- movs r1, 0xA
- strh r1, [r0, 0x2E]
- ldr r1, _080D33AC @ =sub_80782D8
- str r1, [r0, 0x1C]
- ldr r1, _080D33B0 @ =move_anim_8074EE0
- bl StoreSpriteCallbackInData
- pop {r0}
- bx r0
- .align 2, 0
-_080D33AC: .4byte sub_80782D8
-_080D33B0: .4byte move_anim_8074EE0
- thumb_func_end sub_80D3398
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fury_cutter_count.s b/asm/fury_cutter_count.s
deleted file mode 100755
index 10444b254..000000000
--- a/asm/fury_cutter_count.s
+++ /dev/null
@@ -1,48 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ fury_cutter_count
-
- thumb_func_start sub_80D30AC
-sub_80D30AC: @ 80D30AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080D30C8 @ =gBattleAnimArgs
- ldr r1, _080D30CC @ =gDisableStructMoveAnim
- ldr r1, [r1]
- ldrb r2, [r1, 0x10]
- movs r1, 0x1
- ands r1, r2
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080D30C8: .4byte gBattleAnimArgs
-_080D30CC: .4byte gDisableStructMoveAnim
- thumb_func_end sub_80D30AC
-
- thumb_func_start update_fury_cutter_counter_copy
-update_fury_cutter_counter_copy: @ 80D30D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080D30E8 @ =gBattleAnimArgs
- ldr r1, _080D30EC @ =gDisableStructMoveAnim
- ldr r1, [r1]
- ldrb r1, [r1, 0x10]
- strh r1, [r2, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080D30E8: .4byte gBattleAnimArgs
-_080D30EC: .4byte gDisableStructMoveAnim
- thumb_func_end update_fury_cutter_counter_copy
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/guard.s b/asm/guard.s
deleted file mode 100755
index 13ead6879..000000000
--- a/asm/guard.s
+++ /dev/null
@@ -1,80 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D3014
-sub_80D3014: @ 80D3014
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080D3058 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D3060
- ldr r4, _080D305C @ =gBattleAnimBankAttacker
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080D3060
- ldrb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_807A3FC
- ldrh r0, [r5, 0x22]
- adds r0, 0x28
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080D3080
- .align 2, 0
-_080D3058: .4byte gBattleTypeFlags
-_080D305C: .4byte gBattleAnimBankAttacker
-_080D3060:
- ldr r4, _080D30A0 @ =gBattleAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x28
- strh r0, [r5, 0x22]
-_080D3080:
- movs r0, 0xD
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- subs r0, 0x48
- strh r0, [r5, 0x36]
- ldr r0, _080D30A4 @ =sub_8078B34
- str r0, [r5, 0x1C]
- ldr r1, _080D30A8 @ =move_anim_8072740
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D30A0: .4byte gBattleAnimBankAttacker
-_080D30A4: .4byte sub_8078B34
-_080D30A8: .4byte move_anim_8072740
- thumb_func_end sub_80D3014
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/heated_rock.s b/asm/heated_rock.s
index eb957a6f1..3adb3a99d 100755
--- a/asm/heated_rock.s
+++ b/asm/heated_rock.s
@@ -6,297 +6,5 @@
.text
@ heated_rock
-
- thumb_func_start sub_80D58FC
-sub_80D58FC: @ 80D58FC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80D59B0
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D5936
- ldr r3, _080D593C @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080D5936:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D593C: .4byte gTasks
- thumb_func_end sub_80D58FC
-
- thumb_func_start sub_80D5940
-sub_80D5940: @ 80D5940
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080D5978 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x26]
- ldrh r0, [r1, 0x22]
- adds r2, r0
- adds r1, 0x29
- movs r0, 0
- ldrsb r0, [r1, r0]
- adds r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080D597C @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D5980
- lsls r0, r4, 16
- movs r1, 0x94
- lsls r1, 15
- b _080D5986
- .align 2, 0
-_080D5978: .4byte gSprites
-_080D597C: .4byte gBattleAnimBankAttacker
-_080D5980:
- lsls r0, r4, 16
- movs r1, 0xB0
- lsls r1, 14
-_080D5986:
- adds r0, r1
- lsrs r4, r0, 16
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80D5940
-
- thumb_func_start sub_80D5994
-sub_80D5994: @ 80D5994
- movs r3, 0
- strh r3, [r0, 0x2E]
- strh r3, [r0, 0x30]
- ldrh r3, [r0, 0x20]
- lsls r3, 3
- strh r3, [r0, 0x32]
- ldrh r3, [r0, 0x22]
- lsls r3, 3
- strh r3, [r0, 0x34]
- lsls r1, 3
- strh r1, [r0, 0x36]
- lsls r2, 3
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_80D5994
-
- thumb_func_start sub_80D59B0
-sub_80D59B0: @ 80D59B0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080D59DA
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- ldrh r3, [r2, 0x34]
- adds r0, r3
- strh r0, [r2, 0x34]
-_080D59DA:
- ldrh r0, [r2, 0x36]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x38]
- ldrh r3, [r2, 0x34]
- adds r1, r3
- strh r1, [r2, 0x34]
- lsls r1, 16
- asrs r3, r1, 19
- strh r3, [r2, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080D5A10
- adds r1, r3, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080D5A10
- cmp r1, 0x78
- ble _080D5A1C
-_080D5A10:
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080D5A1C:
- pop {r0}
- bx r0
- thumb_func_end sub_80D59B0
-
- thumb_func_start sub_80D5A20
-sub_80D5A20: @ 80D5A20
- push {r4,r5,lr}
- ldr r3, _080D5A64 @ =gBattleAnimArgs
- ldrh r1, [r3]
- movs r2, 0
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x2]
- strh r1, [r0, 0x22]
- strh r2, [r0, 0x2E]
- strh r2, [r0, 0x30]
- strh r2, [r0, 0x32]
- ldrh r1, [r3, 0x4]
- strh r1, [r0, 0x3A]
- ldrh r1, [r3, 0x6]
- strh r1, [r0, 0x3C]
- ldrh r4, [r0, 0x4]
- lsls r2, r4, 22
- lsrs r2, 22
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r1, 4
- adds r2, r1
- ldr r3, _080D5A68 @ =0x000003ff
- adds r1, r3, 0
- ands r2, r1
- ldr r1, _080D5A6C @ =0xfffffc00
- ands r1, r4
- orrs r1, r2
- strh r1, [r0, 0x4]
- ldr r1, _080D5A70 @ =sub_80D5A74
- str r1, [r0, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D5A64: .4byte gBattleAnimArgs
-_080D5A68: .4byte 0x000003ff
-_080D5A6C: .4byte 0xfffffc00
-_080D5A70: .4byte sub_80D5A74
- thumb_func_end sub_80D5A20
-
- thumb_func_start sub_80D5A74
-sub_80D5A74: @ 80D5A74
- push {r4,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _080D5AA6
- cmp r0, 0x1
- bgt _080D5A8A
- cmp r0, 0
- beq _080D5A90
- b _080D5B04
-_080D5A8A:
- cmp r0, 0x2
- beq _080D5AC4
- b _080D5B04
-_080D5A90:
- ldrh r1, [r2, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080D5AA0
- subs r0, r1, 0x1
- strh r0, [r2, 0x3A]
- b _080D5B04
-_080D5AA0:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_080D5AA6:
- ldrh r0, [r2, 0x22]
- adds r0, 0x8
- strh r0, [r2, 0x22]
- lsls r0, 16
- asrs r0, 16
- ldrh r3, [r2, 0x3C]
- movs r4, 0x3C
- ldrsh r1, [r2, r4]
- cmp r0, r1
- blt _080D5B04
- strh r3, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _080D5B04
-_080D5AC4:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D5AF0
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D5AEC
- ldr r0, _080D5AE8 @ =0x0000fffd
- b _080D5AEE
- .align 2, 0
-_080D5AE8: .4byte 0x0000fffd
-_080D5AEC:
- movs r0, 0x3
-_080D5AEE:
- strh r0, [r2, 0x26]
-_080D5AF0:
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080D5B04
- adds r0, r2, 0
- bl move_anim_8072740
-_080D5B04:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D5A74
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/liquid_ball.s b/asm/liquid_ball.s
deleted file mode 100755
index 6af030ecf..000000000
--- a/asm/liquid_ball.s
+++ /dev/null
@@ -1,353 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ liquid_ball
-
- thumb_func_start sub_80D3554
-sub_80D3554: @ 80D3554
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_80787B0
- movs r0, 0x1E
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080D35BC @ =gBattleAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- movs r0, 0xD2
- lsls r0, 8
- bl __divsi3
- strh r0, [r5, 0x38]
- ldr r0, _080D35C0 @ =gBattleAnimArgs
- ldrh r2, [r0, 0x6]
- strh r2, [r5, 0x3C]
- ldrh r1, [r0, 0xE]
- movs r3, 0xE
- ldrsh r0, [r0, r3]
- cmp r0, 0x7F
- ble _080D35C4
- adds r0, r1, 0
- subs r0, 0x7F
- lsls r0, 8
- strh r0, [r5, 0x3A]
- negs r0, r2
- strh r0, [r5, 0x3C]
- b _080D35C8
- .align 2, 0
-_080D35BC: .4byte gBattleAnimBankTarget
-_080D35C0: .4byte gBattleAnimArgs
-_080D35C4:
- lsls r0, r1, 8
- strh r0, [r5, 0x3A]
-_080D35C8:
- ldr r1, _080D35D8 @ =sub_80D35DC
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D35D8: .4byte sub_80D35DC
- thumb_func_end sub_80D3554
-
- thumb_func_start sub_80D35DC
-sub_80D35DC: @ 80D35DC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- beq _080D35F0
- adds r0, r4, 0
- bl move_anim_8072740
-_080D35F0:
- ldrh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- adds r0, r1
- asrs r0, 8
- cmp r0, 0x7F
- ble _080D3620
- movs r0, 0
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- negs r0, r0
- strh r0, [r4, 0x3C]
- b _080D3628
-_080D3620:
- ldrh r0, [r4, 0x38]
- ldrh r1, [r4, 0x3A]
- adds r0, r1
- strh r0, [r4, 0x3A]
-_080D3628:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D35DC
-
- thumb_func_start sub_80D3630
-sub_80D3630: @ 80D3630
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080D3650 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080D3654 @ =gBattleAnimArgs
- ldrh r0, [r3]
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r3, 0xE]
- ldr r0, _080D3658 @ =sub_80D365C
- str r0, [r1]
- bx lr
- .align 2, 0
-_080D3650: .4byte gTasks
-_080D3654: .4byte gBattleAnimArgs
-_080D3658: .4byte sub_80D365C
- thumb_func_end sub_80D3630
-
- thumb_func_start sub_80D365C
-sub_80D365C: @ 80D365C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080D3690 @ =gBattleAnimArgs
- ldrh r0, [r2, 0xE]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r2, 0xE]
- ldr r1, _080D3694 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _080D368A
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080D368A:
- pop {r0}
- bx r0
- .align 2, 0
-_080D3690: .4byte gBattleAnimArgs
-_080D3694: .4byte gTasks
- thumb_func_end sub_80D365C
-
- thumb_func_start sub_80D3698
-sub_80D3698: @ 80D3698
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r7, _080D36E4 @ =gBattleAnimBankAttacker
- ldrb r0, [r7]
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r7]
- movs r1, 0x1
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r6, _080D36E8 @ =0x0000fff6
- strh r6, [r4, 0x26]
- ldrb r0, [r7]
- bl sub_8079E90
- lsls r0, 24
- lsrs r5, r0, 24
- bl NotInBattle
- lsls r0, 24
- cmp r0, 0
- bne _080D36F2
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D36EC
- movs r0, 0xA
- strh r0, [r4, 0x24]
- b _080D36F4
- .align 2, 0
-_080D36E4: .4byte gBattleAnimBankAttacker
-_080D36E8: .4byte 0x0000fff6
-_080D36EC:
- strh r6, [r4, 0x24]
- subs r0, r5, 0x2
- b _080D36F6
-_080D36F2:
- strh r6, [r4, 0x24]
-_080D36F4:
- adds r0, r5, 0x2
-_080D36F6:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r0, _080D3708 @ =sub_80D370C
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D3708: .4byte sub_80D370C
- thumb_func_end sub_80D3698
-
- thumb_func_start sub_80D370C
-sub_80D370C: @ 80D370C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080D3722
- adds r0, r2, 0
- bl move_anim_8072740
-_080D3722:
- pop {r0}
- bx r0
- thumb_func_end sub_80D370C
-
- thumb_func_start sub_80D3728
-sub_80D3728: @ 80D3728
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r5, _080D37E8 @ =gBattleAnimBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- adds r4, r0, 0
- ldr r0, _080D37EC @ =gBattleAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080D3772
- ldr r4, _080D37F0 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- beq _080D376A
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080D3772
-_080D376A:
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
-_080D3772:
- ldr r5, _080D37F0 @ =gBattleAnimArgs
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0
- cmp r0, 0
- bne _080D3786
- movs r1, 0x1
-_080D3786:
- ldrb r0, [r5, 0xA]
- movs r7, 0x1
- cmp r0, 0
- bne _080D3790
- movs r7, 0x3
-_080D3790:
- adds r0, r6, 0
- bl sub_80787B0
- ldr r0, _080D37E8 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D37AA
- ldrh r0, [r5, 0x4]
- negs r0, r0
- strh r0, [r5, 0x4]
-_080D37AA:
- ldrh r0, [r5, 0x8]
- strh r0, [r6, 0x2E]
- ldr r4, _080D37EC @ =gBattleAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r4]
- adds r1, r7, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r6, 0x36]
- ldr r0, _080D37F4 @ =sub_8078B34
- str r0, [r6, 0x1C]
- ldr r1, _080D37F8 @ =move_anim_8072740
- adds r0, r6, 0
- bl StoreSpriteCallbackInData
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D37E8: .4byte gBattleAnimBankAttacker
-_080D37EC: .4byte gBattleAnimBankTarget
-_080D37F0: .4byte gBattleAnimArgs
-_080D37F4: .4byte sub_8078B34
-_080D37F8: .4byte move_anim_8072740
- thumb_func_end sub_80D3728
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/noise.s b/asm/noise.s
deleted file mode 100755
index 930b77309..000000000
--- a/asm/noise.s
+++ /dev/null
@@ -1,139 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D2D68
-sub_80D2D68: @ 80D2D68
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080D2D7C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D2D84
- ldr r0, _080D2D80 @ =gBattleAnimBankAttacker
- b _080D2D86
- .align 2, 0
-_080D2D7C: .4byte gBattleAnimArgs
-_080D2D80: .4byte gBattleAnimBankAttacker
-_080D2D84:
- ldr r0, _080D2E1C @ =gBattleAnimBankTarget
-_080D2D86:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080D2DA0
- ldr r1, _080D2E20 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080D2DA0:
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- ldr r7, _080D2E20 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r3, [r7, 0x2]
- adds r0, r3
- movs r4, 0
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r7, 0x4]
- adds r0, r1
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x2E]
- ldrh r1, [r5, 0x20]
- lsls r1, 3
- strh r1, [r5, 0x30]
- lsls r0, 3
- strh r0, [r5, 0x32]
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 3
- cmp r0, 0
- bge _080D2DE0
- adds r0, 0x7
-_080D2DE0:
- asrs r0, 3
- strh r0, [r5, 0x34]
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- lsls r0, 3
- cmp r0, 0
- bge _080D2DF0
- adds r0, 0x7
-_080D2DF0:
- asrs r0, 3
- strh r0, [r5, 0x36]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x6
- ldrsh r0, [r7, r3]
- lsls r0, 4
- adds r1, r0
- ldr r3, _080D2E24 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080D2E28 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r0, _080D2E2C @ =sub_80D2E30
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D2E1C: .4byte gBattleAnimBankTarget
-_080D2E20: .4byte gBattleAnimArgs
-_080D2E24: .4byte 0x000003ff
-_080D2E28: .4byte 0xfffffc00
-_080D2E2C: .4byte sub_80D2E30
- thumb_func_end sub_80D2D68
-
- thumb_func_start sub_80D2E30
-sub_80D2E30: @ 80D2E30
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r3, [r2, 0x32]
- adds r1, r3
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080D2E64
- adds r0, r2, 0
- bl move_anim_8072740
-_080D2E64:
- pop {r0}
- bx r0
- thumb_func_end sub_80D2E30
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/note_spin.s b/asm/note_spin.s
deleted file mode 100755
index d0df90fd1..000000000
--- a/asm/note_spin.s
+++ /dev/null
@@ -1,234 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D2E68
-sub_80D2E68: @ 80D2E68
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D2E8A
- ldr r0, _080D2EC4 @ =gBattleAnimArgs
- ldrh r1, [r0]
- movs r0, 0x78
- subs r0, r1
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080D2E8A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080D2EA8
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0
- bl sub_8079108
-_080D2EA8:
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- adds r0, 0x50
- cmp r1, r0
- bne _080D2EBC
- adds r0, r4, 0
- bl move_anim_8072740
-_080D2EBC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D2EC4: .4byte gBattleAnimArgs
- thumb_func_end sub_80D2E68
-
- thumb_func_start sub_80D2EC8
-sub_80D2EC8: @ 80D2EC8
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080D2EF6
- movs r5, 0x78
- strh r5, [r6, 0x20]
- ldr r4, _080D2F78 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- subs r0, 0xF
- strh r0, [r6, 0x22]
- ldrb r1, [r4, 0x2]
- adds r0, r6, 0
- bl StartSpriteAnim
- strh r5, [r6, 0x38]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x34]
-_080D2EF6:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r6, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r6, 0x30]
- movs r2, 0x2E
- ldrsh r0, [r6, r2]
- lsls r4, r0, 1
- adds r4, r0
- ldrh r0, [r6, 0x34]
- adds r4, r0
- movs r2, 0xFF
- ldrh r0, [r6, 0x3A]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0x3A]
- ands r4, r2
- adds r0, r4, 0
- movs r1, 0x64
- bl Cos
- strh r0, [r6, 0x24]
- adds r0, r4, 0
- movs r1, 0xA
- bl Sin
- adds r4, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r1, 0x4
- bl Cos
- ldrh r2, [r6, 0x30]
- adds r4, r2
- adds r0, r4
- strh r0, [r6, 0x26]
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- movs r2, 0x38
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080D2F72
- ldr r0, _080D2F7C @ =sub_80D2F80
- str r0, [r6, 0x1C]
- strh r5, [r6, 0x2E]
- adds r0, r6, 0
- bl oamt_add_pos2_onto_pos1
- movs r0, 0x5
- strh r0, [r6, 0x32]
- strh r5, [r6, 0x36]
- strh r5, [r6, 0x34]
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080D2F72:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D2F78: .4byte gBattleAnimArgs
-_080D2F7C: .4byte sub_80D2F80
- thumb_func_end sub_80D2EC8
-
- thumb_func_start sub_80D2F80
-sub_80D2F80: @ 80D2F80
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080D2F9A
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, _080D2FA0 @ =sub_80D2FA4
- str r0, [r1, 0x1C]
-_080D2F9A:
- pop {r0}
- bx r0
- .align 2, 0
-_080D2FA0: .4byte sub_80D2FA4
- thumb_func_end sub_80D2F80
-
- thumb_func_start sub_80D2FA4
-sub_80D2FA4: @ 80D2FA4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- strh r0, [r4, 0x26]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- ble _080D2FCE
- lsls r0, r1, 16
- cmp r0, 0
- ble _080D2FCE
- ldrh r0, [r4, 0x36]
- subs r1, r0, 0x5
- strh r1, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x36]
-_080D2FCE:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _080D3000
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl move_anim_8072740
-_080D3000:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bne _080D300E
- adds r0, r4, 0
- bl move_anim_8072740
-_080D300E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D2FA4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rain.s b/asm/rain.s
deleted file mode 100755
index f8f68dd28..000000000
--- a/asm/rain.s
+++ /dev/null
@@ -1,123 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ rain
-
- thumb_func_start sub_80D30F0
-sub_80D30F0: @ 80D30F0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080D3178 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080D3118
- ldr r1, _080D317C @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r5, 0xA]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0xC]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0xE]
-_080D3118:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl __modsi3
- cmp r0, 0x1
- bne _080D3160
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x50
- bl __umodsi3
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _080D3180 @ =gSpriteTemplate_83D9130
- adds r1, r4, 0
- movs r3, 0x4
- bl CreateSprite
-_080D3160:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _080D3172
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080D3172:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D3178: .4byte gTasks
-_080D317C: .4byte gBattleAnimArgs
-_080D3180: .4byte gSpriteTemplate_83D9130
- thumb_func_end sub_80D30F0
-
- thumb_func_start sub_80D3184
-sub_80D3184: @ 80D3184
- ldr r1, _080D318C @ =sub_80D3190
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080D318C: .4byte sub_80D3190
- thumb_func_end sub_80D3184
-
- thumb_func_start sub_80D3190
-sub_80D3190: @ 80D3190
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _080D31AE
- ldrh r0, [r2, 0x24]
- adds r0, 0x1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x26]
- adds r0, 0x4
- strh r0, [r2, 0x26]
-_080D31AE:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D31C2
- adds r0, r2, 0
- bl DestroySprite
-_080D31C2:
- pop {r0}
- bx r0
- thumb_func_end sub_80D3190
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/shock.s b/asm/shock.s
deleted file mode 100755
index 743aefe8a..000000000
--- a/asm/shock.s
+++ /dev/null
@@ -1,259 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ shock
-
- thumb_func_start sub_80D6294
-sub_80D6294: @ 80D6294
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080D62D8 @ =gBattleAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080D62DC @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D62E4
- ldr r2, _080D62E0 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x22]
- b _080D62F8
- .align 2, 0
-_080D62D8: .4byte gBattleAnimBankTarget
-_080D62DC: .4byte gBattleAnimBankAttacker
-_080D62E0: .4byte gBattleAnimArgs
-_080D62E4:
- ldr r0, _080D631C @ =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r2, [r5, 0x22]
- adds r1, r2
- strh r1, [r5, 0x22]
- adds r2, r0, 0
-_080D62F8:
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x6]
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, _080D6320 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080D6324 @ =sub_8078114
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D631C: .4byte gBattleAnimArgs
-_080D6320: .4byte move_anim_8074EE0
-_080D6324: .4byte sub_8078114
- thumb_func_end sub_80D6294
-
- thumb_func_start sub_80D6328
-sub_80D6328: @ 80D6328
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080D6340 @ =gBattleAnimArgs
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080D63A0
- cmp r0, 0x1
- bgt _080D6344
- cmp r0, 0
- beq _080D634E
- b _080D63A0
- .align 2, 0
-_080D6340: .4byte gBattleAnimArgs
-_080D6344:
- cmp r0, 0x2
- beq _080D6358
- cmp r0, 0x3
- beq _080D637C
- b _080D63A0
-_080D634E:
- ldr r0, _080D6354 @ =gBattleAnimBankAttacker
- b _080D63A2
- .align 2, 0
-_080D6354: .4byte gBattleAnimBankAttacker
-_080D6358:
- ldr r4, _080D6370 @ =gBattleAnimBankAttacker
- ldrb r0, [r4]
- movs r6, 0x2
- eors r0, r6
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080D6374
- ldrb r4, [r4]
- b _080D63A4
- .align 2, 0
-_080D6370: .4byte gBattleAnimBankAttacker
-_080D6374:
- ldrb r0, [r4]
- adds r4, r6, 0
- eors r4, r0
- b _080D63A4
-_080D637C:
- ldr r0, _080D6398 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- movs r4, 0x2
- eors r0, r4
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080D63A0
- ldr r0, _080D639C @ =gBattleAnimBankTarget
- ldrb r0, [r0]
- eors r4, r0
- b _080D63A4
- .align 2, 0
-_080D6398: .4byte gBattleAnimBankAttacker
-_080D639C: .4byte gBattleAnimBankTarget
-_080D63A0:
- ldr r0, _080D63C4 @ =gBattleAnimBankTarget
-_080D63A2:
- ldrb r4, [r0]
-_080D63A4:
- ldr r0, _080D63C8 @ =gBattleAnimArgs
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080D63CC
- adds r0, r4, 0
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x1
- b _080D63DE
- .align 2, 0
-_080D63C4: .4byte gBattleAnimBankTarget
-_080D63C8: .4byte gBattleAnimArgs
-_080D63CC:
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x3
-_080D63DE:
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r7, _080D647C @ =gSineTable
- ldr r6, _080D6480 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x24]
- movs r1, 0
- ldrsh r0, [r6, r1]
- adds r0, 0x40
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x26]
- ldrh r1, [r6, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D6442
- adds r0, r4, 0
- bl sub_8079ED4
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
-_080D6442:
- ldrb r2, [r5, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- ldr r3, _080D6484 @ =gOamMatrices
- lsls r2, 3
- adds r2, r3
- adds r1, 0x40
- lsls r1, 1
- adds r1, r7
- ldrh r1, [r1]
- strh r1, [r2, 0x6]
- strh r1, [r2]
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldr r0, _080D6488 @ =sub_80DA48C
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D647C: .4byte gSineTable
-_080D6480: .4byte gBattleAnimArgs
-_080D6484: .4byte gOamMatrices
-_080D6488: .4byte sub_80DA48C
- thumb_func_end sub_80D6328
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/sunlight.s b/asm/sunlight.s
deleted file mode 100755
index 07895e1b9..000000000
--- a/asm/sunlight.s
+++ /dev/null
@@ -1,33 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ sunlight
-
- thumb_func_start sub_80D517C
-sub_80D517C: @ 80D517C
- push {lr}
- movs r1, 0
- strh r1, [r0, 0x20]
- strh r1, [r0, 0x22]
- movs r1, 0x3C
- strh r1, [r0, 0x2E]
- movs r1, 0x8C
- strh r1, [r0, 0x32]
- movs r1, 0x50
- strh r1, [r0, 0x36]
- ldr r1, _080D51A0 @ =sub_8078B34
- str r1, [r0, 0x1C]
- ldr r1, _080D51A4 @ =move_anim_8072740
- bl StoreSpriteCallbackInData
- pop {r0}
- bx r0
- .align 2, 0
-_080D51A0: .4byte sub_8078B34
-_080D51A4: .4byte move_anim_8072740
- thumb_func_end sub_80D517C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/thunder.s b/asm/thunder.s
deleted file mode 100755
index df97608f9..000000000
--- a/asm/thunder.s
+++ /dev/null
@@ -1,68 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ thunder
-
- thumb_func_start sub_80D61C8
-sub_80D61C8: @ 80D61C8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D61E8 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D61F0
- ldr r0, _080D61EC @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080D61FC
- .align 2, 0
-_080D61E8: .4byte gBattleAnimBankAttacker
-_080D61EC: .4byte gBattleAnimArgs
-_080D61F0:
- ldr r1, _080D6210 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_080D61FC:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080D6214 @ =sub_80D6218
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D6210: .4byte gBattleAnimArgs
-_080D6214: .4byte sub_80D6218
- thumb_func_end sub_80D61C8
-
- thumb_func_start sub_80D6218
-sub_80D6218: @ 80D6218
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D622E
- adds r0, r2, 0
- bl move_anim_8072740
-_080D622E:
- pop {r0}
- bx r0
- thumb_func_end sub_80D6218
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/water.s b/asm/water.s
index e982d4265..4bf95ab59 100755
--- a/asm/water.s
+++ b/asm/water.s
@@ -7,420 +7,6 @@
@ water
- thumb_func_start sub_80D37FC
-sub_80D37FC: @ 80D37FC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8078764
- ldr r0, _080D382C @ =gBattleAnimArgs
- ldrh r1, [r0, 0x8]
- strh r1, [r4, 0x2E]
- ldrh r0, [r0, 0x4]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x36]
- ldr r0, _080D3830 @ =sub_8078B34
- str r0, [r4, 0x1C]
- ldr r1, _080D3834 @ =move_anim_8072740
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D382C: .4byte gBattleAnimArgs
-_080D3830: .4byte sub_8078B34
-_080D3834: .4byte move_anim_8072740
- thumb_func_end sub_80D37FC
-
- thumb_func_start sub_80D3838
-sub_80D3838: @ 80D3838
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D3850 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080D3854
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078764
- b _080D385C
- .align 2, 0
-_080D3850: .4byte gBattleAnimArgs
-_080D3854:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80787B0
-_080D385C:
- ldr r0, _080D386C @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x3C]
- ldr r0, _080D3870 @ =sub_80D3874
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D386C: .4byte gBattleAnimArgs
-_080D3870: .4byte sub_80D3874
- thumb_func_end sub_80D3838
-
- thumb_func_start sub_80D3874
-sub_80D3874: @ 80D3874
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080D38B4
- adds r0, r4, 0
- bl move_anim_8072740
-_080D38B4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D3874
-
- thumb_func_start sub_80D38BC
-sub_80D38BC: @ 80D38BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, _080D398C @ =REG_BLDCNT
- ldr r2, _080D3990 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0x80
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r2, _080D3994 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x1]
- mov r0, sp
- bl sub_8078914
- ldr r2, [sp]
- movs r3, 0x80
- lsls r3, 6
- add r6, sp, 0x10
- add r0, sp, 0xC
- mov r12, r0
- movs r5, 0
- ldr r1, _080D3998 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r8, r6
- ldr r7, _080D399C @ =0x85000400
- movs r0, 0x85
- lsls r0, 24
- mov r9, r0
-_080D3920:
- str r5, [sp, 0x10]
- mov r0, r8
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080D3920
- str r5, [sp, 0x10]
- str r6, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- mov r2, r9
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- mov r3, r12
- strb r0, [r3]
- strb r0, [r3]
- ldr r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x10]
- ldr r0, _080D3998 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080D399C @ =0x85000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl NotInBattle
- lsls r0, 24
- cmp r0, 0
- bne _080D39B8
- ldr r2, _080D3994 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080D39A0 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080D39A8
- ldr r0, _080D39A4 @ =gUnknown_08E70968
- b _080D39AA
- .align 2, 0
-_080D398C: .4byte REG_BLDCNT
-_080D3990: .4byte 0x00003f42
-_080D3994: .4byte REG_BG1CNT
-_080D3998: .4byte 0x040000d4
-_080D399C: .4byte 0x85000400
-_080D39A0: .4byte gBattleAnimBankAttacker
-_080D39A4: .4byte gUnknown_08E70968
-_080D39A8:
- ldr r0, _080D39B4 @ =gUnknown_08E70C38
-_080D39AA:
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
- b _080D39CE
- .align 2, 0
-_080D39B4: .4byte gUnknown_08E70C38
-_080D39B8:
- ldr r0, _080D39F0 @ =gUnknown_08E70F0C
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0x1
- bl sub_80763FC
-_080D39CE:
- ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf
- ldr r1, [sp]
- bl LZDecompressVram
- ldr r0, _080D39F8 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D3A00
- ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080D3A0E
- .align 2, 0
-_080D39F0: .4byte gUnknown_08E70F0C
-_080D39F4: .4byte gBattleAnimBackgroundImage_Surf
-_080D39F8: .4byte gBattleAnimArgs
-_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf
-_080D3A00:
- ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_080D3A0E:
- ldr r0, _080D3A7C @ =sub_80D3D68
- ldr r4, _080D3A80 @ =gTasks
- mov r2, r10
- lsls r5, r2, 2
- adds r1, r5, r2
- lsls r1, 3
- adds r6, r1, r4
- ldrb r1, [r6, 0x7]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r3, 0
- mov r9, r3
- mov r0, r8
- strh r0, [r6, 0x26]
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r7, r0, r4
- mov r2, r9
- strh r2, [r7, 0x8]
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r7, 0xA]
- strh r0, [r7, 0xC]
- bl NotInBattle
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080D3A94
- ldr r3, _080D3A84 @ =0x0000ffb0
- adds r0, r3, 0
- ldr r1, _080D3A88 @ =gUnknown_030042C0
- strh r0, [r1]
- ldr r2, _080D3A8C @ =0x0000ffd0
- adds r0, r2, 0
- ldr r3, _080D3A90 @ =gUnknown_030041B4
- strh r0, [r3]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- mov r0, r9
- strh r0, [r7, 0xE]
- b _080D3AEE
- .align 2, 0
-_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal
-_080D3A7C: .4byte sub_80D3D68
-_080D3A80: .4byte gTasks
-_080D3A84: .4byte 0x0000ffb0
-_080D3A88: .4byte gUnknown_030042C0
-_080D3A8C: .4byte 0x0000ffd0
-_080D3A90: .4byte gUnknown_030041B4
-_080D3A94:
- ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _080D3AD8
- ldr r2, _080D3AC8 @ =0x0000ff20
- adds r0, r2, 0
- ldr r3, _080D3ACC @ =gUnknown_030042C0
- strh r0, [r3]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldr r3, _080D3AD0 @ =gUnknown_030041B4
- strh r0, [r3]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- ldr r0, _080D3AD4 @ =0x0000ffff
- strh r0, [r6, 0xA]
- strh r1, [r7, 0xE]
- b _080D3AEE
- .align 2, 0
-_080D3AC4: .4byte gBattleAnimBankAttacker
-_080D3AC8: .4byte 0x0000ff20
-_080D3ACC: .4byte gUnknown_030042C0
-_080D3AD0: .4byte gUnknown_030041B4
-_080D3AD4: .4byte 0x0000ffff
-_080D3AD8:
- ldr r0, _080D3B1C @ =gUnknown_030042C0
- strh r4, [r0]
- ldr r1, _080D3B20 @ =0x0000ffd0
- adds r0, r1, 0
- ldr r2, _080D3B24 @ =gUnknown_030041B4
- strh r0, [r2]
- ldr r0, _080D3B28 @ =0x0000fffe
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- strh r4, [r7, 0xE]
-_080D3AEE:
- ldr r1, _080D3B2C @ =REG_BG1HOFS
- ldr r3, _080D3B1C @ =gUnknown_030042C0
- ldrh r0, [r3]
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080D3B24 @ =gUnknown_030041B4
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r1, _080D3B30 @ =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080D3B34
- movs r0, 0x30
- strh r0, [r2, 0x10]
- movs r0, 0x70
- b _080D3B38
- .align 2, 0
-_080D3B1C: .4byte gUnknown_030042C0
-_080D3B20: .4byte 0x0000ffd0
-_080D3B24: .4byte gUnknown_030041B4
-_080D3B28: .4byte 0x0000fffe
-_080D3B2C: .4byte REG_BG1HOFS
-_080D3B30: .4byte gTasks
-_080D3B34:
- movs r0, 0
- strh r0, [r2, 0x10]
-_080D3B38:
- strh r0, [r2, 0x12]
- mov r2, r10
- adds r0, r5, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x14]
- ldr r1, _080D3B5C @ =sub_80D3B60
- str r1, [r0]
- 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
-_080D3B5C: .4byte sub_80D3B60
- thumb_func_end sub_80D38BC
-
thumb_func_start sub_80D3B60
sub_80D3B60: @ 80D3B60
push {r4-r7,lr}
diff --git a/asm/wisp_orb.s b/asm/wisp_orb.s
deleted file mode 100755
index cb5920ba4..000000000
--- a/asm/wisp_orb.s
+++ /dev/null
@@ -1,230 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ wisp_orb
-
- thumb_func_start sub_80D5B0C
-sub_80D5B0C: @ 80D5B0C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080D5B80
- cmp r0, 0x1
- bgt _080D5B22
- cmp r0, 0
- beq _080D5B28
- b _080D5C4E
-_080D5B22:
- cmp r0, 0x2
- beq _080D5BDE
- b _080D5C4E
-_080D5B28:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80787B0
- ldr r4, _080D5B50 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x3C]
- ldr r0, _080D5B54 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D5B58
- movs r0, 0x4
- b _080D5B5A
- .align 2, 0
-_080D5B50: .4byte gBattleAnimArgs
-_080D5B54: .4byte gBattleAnimBankAttacker
-_080D5B58:
- ldr r0, _080D5B78 @ =0x0000fffc
-_080D5B5A:
- strh r0, [r5, 0x36]
- ldr r0, _080D5B7C @ =gBattleAnimBankTarget
- ldrb r0, [r0]
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080D5BD6
- .align 2, 0
-_080D5B78: .4byte 0x0000fffc
-_080D5B7C: .4byte gBattleAnimBankTarget
-_080D5B80:
- ldrh r0, [r5, 0x30]
- adds r0, 0xC0
- strh r0, [r5, 0x30]
- ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D5BA4
- ldrh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- b _080D5BAA
- .align 2, 0
-_080D5BA0: .4byte gBattleAnimBankAttacker
-_080D5BA4:
- ldrh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
-_080D5BAA:
- strh r0, [r5, 0x26]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080D5C4E
- movs r0, 0
- strh r0, [r5, 0x34]
-_080D5BD6:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080D5C4E
-_080D5BDE:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- adds r2, r0, 0
- movs r3, 0
- strh r2, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080D5C4E
- ldrh r0, [r5, 0x20]
- adds r1, r2, r0
- strh r1, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r3, [r5, 0x26]
- strh r3, [r5, 0x24]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- ldr r4, _080D5C54 @ =gBattleAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8078BD4
- ldr r0, _080D5C58 @ =sub_80D5C5C
- str r0, [r5, 0x1C]
-_080D5C4E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D5C54: .4byte gBattleAnimBankTarget
-_080D5C58: .4byte sub_80D5C5C
- thumb_func_end sub_80D5B0C
-
- thumb_func_start sub_80D5C5C
-sub_80D5C5C: @ 80D5C5C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- bne _080D5CB4
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080D5C92
- cmp r2, 0xC4
- ble _080D5CBA
-_080D5C92:
- lsls r0, 16
- cmp r0, 0
- ble _080D5CBA
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D5CBA
- ldr r0, _080D5CB0 @ =gUnknown_0202F7D2
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x90
- bl PlaySE12WithPanning
- b _080D5CBA
- .align 2, 0
-_080D5CB0: .4byte gUnknown_0202F7D2
-_080D5CB4:
- adds r0, r4, 0
- bl move_anim_8072740
-_080D5CBA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D5C5C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index 24881ab7c..ba5d9f533 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -2091,7 +2091,7 @@ gSpriteAnimTable_83D912C:: @ 83D912C
.align 2
gSpriteTemplate_83D9130:: @ 83D9130
- spr_template 10115, 10115, gOamData_837DF74, gSpriteAnimTable_83D912C, NULL, gDummySpriteAffineAnimTable, sub_80D3184
+ spr_template 10115, 10115, gOamData_837DF74, gSpriteAnimTable_83D912C, NULL, gDummySpriteAffineAnimTable, SetAnimRaindropCallback
.align 2
gSpriteAffineAnim_83D9148:: @ 83D9148
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index de3d354ce..e0d11637d 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1416,11 +1416,11 @@ Move_FURY_CUTTER: @ 81C914A
monbg 1
setalpha 12, 8
panse_19 SE_W013, 63
- createtask sub_80D30AC, 2
+ createtask UpdateFuryCutterAnimDirection, 2
jumpvareq 7, 0, _81C91A7
jump _81C91B9
_81C916A:
- createtask update_fury_cutter_counter_copy, 2
+ createtask UpdateFuryCutterAnimCount, 2
jumpvareq 7, 1, _81C918E
jumpvareq 7, 2, _81C91CB
jumpvareq 7, 3, _81C91E5
@@ -5271,8 +5271,8 @@ Move_RAIN_DANCE: @ 81CE997
panse_19 SE_W240, 192
createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
wait
- createtask sub_80D30F0, 2, 0, 3, 120
- createtask sub_80D30F0, 2, 0, 3, 120
+ createtask CreateAnimRaindrops, 2, 0, 3, 120
+ createtask CreateAnimRaindrops, 2, 0, 3, 120
pause 120
pause 30
wait
@@ -10497,8 +10497,8 @@ General_Rain: @ 81D67BB
panse_19 SE_W240, 192
createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
wait
- createtask sub_80D30F0, 2, 0, 3, 60
- createtask sub_80D30F0, 2, 0, 3, 60
+ createtask CreateAnimRaindrops, 2, 0, 3, 60
+ createtask CreateAnimRaindrops, 2, 0, 3, 60
pause 50
wait
createtask sub_80E2A38, 10, 1921, 2, 4, 0, 0
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 2a2947968..70bd6fe5a 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -12,6 +12,12 @@ enum
ANIM_BANK_DEF_PARTNER
};
+struct Struct_sub_8078914 {
+ u8 *field_0;
+ u8 *field_4;
+ u8 field_8;
+};
+
u8 sub_8077ABC(u8, u8);
u8 sub_8077E44(u8 slot, u16 species, u8 a3);
u8 GetAnimBankSpriteId(u8 side);
@@ -99,5 +105,7 @@ u8 sub_8077FC0(u8 slot);
void move_anim_8074EE0(struct Sprite *sprite);
bool8 sub_8078718(struct Sprite *sprite);
bool8 sub_8078CE8(struct Sprite *sprite);
+void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
+void sub_8078BD4(struct Sprite *sprite);
#endif // GUARD_ROM_8077ABC_H
diff --git a/include/sprite.h b/include/sprite.h
index a87260ec0..29a0be562 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -222,6 +222,14 @@ struct Sprite
/*0x43*/ u8 subpriority;
};
+struct OamMatrix
+{
+ s16 a;
+ s16 b;
+ s16 c;
+ s16 d;
+};
+
extern const struct OamData gDummyOamData;
extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
diff --git a/ld_script.txt b/ld_script.txt
index 6353fceec..bc5df01bf 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -268,24 +268,25 @@ SECTIONS {
src/battle/anim/swipe.o(.text);
src/battle/anim/struggle.o(.text);
src/battle/anim/uproar.o(.text);
- asm/noise.o(.text);
- asm/note_spin.o(.text);
- asm/guard.o(.text);
- asm/fury_cutter_count.o(.text);
- asm/rain.o(.text);
- asm/bubble.o(.text);
+ src/battle/anim/noise.o(.text);
+ src/battle/anim/note_spin.o(.text);
+ src/battle/anim/guard.o(.text);
+ src/battle/anim/fury_cutter_count.o(.text);
+ src/battle/anim/rain.o(.text);
+ src/battle/anim/bubble.o(.text);
src/battle/anim/aurora.o(.text);
- asm/liquid_ball.o(.text);
+ src/battle/anim/energy_wave.o(.text);
+ src/battle/anim/water.o(.text);
asm/water.o(.text);
asm/fire.o(.text);
- asm/sunlight.o(.text);
+ src/battle/anim/sunlight.o(.text);
asm/fire_2.o(.text);
- asm/heated_rock.o(.text);
- asm/wisp_orb.o(.text);
+ src/battle/anim/heated_rock.o(.text);
+ src/battle/anim/wisp_orb.o(.text);
asm/wisp_fire.o(.text);
- asm/thunder.o(.text);
- asm/beta_beat_up.o(.text);
- asm/shock.o(.text);
+ src/battle/anim/thunder.o(.text);
+ src/battle/anim/beta_beat_up.o(.text);
+ src/battle/anim/shock.o(.text);
asm/current.o(.text);
asm/ice.o(.text);
asm/fight.o(.text);
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c
new file mode 100644
index 000000000..499e52a80
--- /dev/null
+++ b/src/battle/anim/beta_beat_up.c
@@ -0,0 +1,34 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+
+static void sub_80D6278(struct Sprite *);
+
+// beta_beat_up
+
+void sub_80D6234(struct Sprite *sprite)
+{
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+
+ sprite->callback = sub_80D6278;
+}
+
+static void sub_80D6278(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ move_anim_8074EE0(sprite);
+ }
+}
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
new file mode 100644
index 000000000..5da0d9929
--- /dev/null
+++ b/src/battle/anim/bubble.c
@@ -0,0 +1,102 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "util.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+
+static void sub_80D32E8(struct Sprite *sprite);
+static void sub_80D3370(struct Sprite *sprite);
+static void sub_80D3398(struct Sprite *sprite);
+
+// bubble (indidivual bubble that floats around)
+// Used in Bubble and Bubblebeam
+
+void sub_80D31C8(struct Sprite* sprite)
+{
+ u8 newSpriteId;
+
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ }
+
+ sprite->animPaused = 1;
+
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+
+ sprite->data[0] = gBattleAnimArgs[6];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3);
+
+ obj_translate_based_on_private_1_2_3_4(sprite);
+
+ newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ sprite->data[5] = newSpriteId;
+
+ sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
+ sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
+
+ gSprites[newSpriteId].data[0] = gBattleAnimArgs[2];
+ gSprites[newSpriteId].data[1] = gBattleAnimArgs[3];
+ gSprites[newSpriteId].data[2] = gBattleAnimArgs[5];
+ gSprites[newSpriteId].data[3] = (u8)gBattleAnimArgs[4] * 256;
+ gSprites[newSpriteId].data[4] = gBattleAnimArgs[6];
+
+ sprite->callback = sub_80D32E8;
+ sprite->callback(sprite);
+}
+
+static void sub_80D32E8(struct Sprite *sprite)
+{
+ u8 spriteId = sprite->data[5];
+
+ u8 counter = gSprites[spriteId].data[4];
+ u16 index = gSprites[spriteId].data[3];
+
+ sprite->data[0] = 1;
+ sub_8078B5C(sprite);
+
+ sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]);
+ sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]);
+
+ gSprites[spriteId].data[3] = gSprites[spriteId].data[2] + index;
+
+ if (--counter != 0)
+ {
+ gSprites[spriteId].data[4] = counter;
+ }
+ else
+ {
+ sprite->callback = sub_80D3370;
+ DestroySprite(&gSprites[spriteId]);
+ }
+}
+
+static void sub_80D3370(struct Sprite *sprite)
+{
+ sprite->animPaused = 0;
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, sub_80D3398);
+}
+
+static void sub_80D3398(struct Sprite *sprite)
+{
+ sprite->data[0] = 10;
+ sprite->callback = sub_80782D8;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
new file mode 100644
index 000000000..ffba5c300
--- /dev/null
+++ b/src/battle/anim/energy_wave.c
@@ -0,0 +1,162 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
+
+static void sub_80D35DC(struct Sprite *);
+static void sub_80D365C(u8);
+static void sub_80D370C(struct Sprite *);
+
+// energy_wave (animates steady "waves" of energy)
+// Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and
+// Hydro Cannon.
+
+void sub_80D3554(struct Sprite *sprite)
+{
+ sub_80787B0(sprite, 1);
+
+ sprite->data[0] = 30;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3);
+
+ obj_translate_based_on_private_1_2_3_4(sprite);
+
+ sprite->data[5] = 0xD200 / sprite->data[0];
+ sprite->data[7] = gBattleAnimArgs[3];
+
+ if (gBattleAnimArgs[7] > 127)
+ {
+ sprite->data[6] = (gBattleAnimArgs[7] - 127) << 8;
+ sprite->data[7] = -sprite->data[7];
+ }
+ else
+ {
+ sprite->data[6] = gBattleAnimArgs[7] << 8;
+ }
+
+ sprite->callback = sub_80D35DC;
+ sprite->callback(sprite);
+}
+
+static void sub_80D35DC(struct Sprite *sprite)
+{
+ if (sub_8078B5C(sprite))
+ {
+ move_anim_8072740(sprite);
+ }
+
+ sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]);
+ if (((sprite->data[6] + sprite->data[5]) >> 8) > 127)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7] = -sprite->data[7];
+ }
+ else
+ {
+ sprite->data[6] += sprite->data[5];
+ }
+}
+
+void sub_80D3630(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gBattleAnimArgs[7] = 0;
+ gTasks[taskId].func = sub_80D365C;
+}
+
+static void sub_80D365C(u8 taskId)
+{
+ gBattleAnimArgs[7] = (gBattleAnimArgs[7] + 3) & 0xFF;
+ if (--gTasks[taskId].data[0] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80D3698(struct Sprite *sprite)
+{
+ u8 subpriority;
+
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0);
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1);
+ sprite->pos2.y = -10;
+
+ subpriority = sub_8079E90(gBattleAnimBankAttacker);
+
+ if (!NotInBattle())
+ {
+ if (GetBankSide(gBattleAnimBankAttacker) == 0)
+ {
+ sprite->pos2.x = 10;
+ sprite->subpriority = subpriority + 2;
+ }
+ else
+ {
+ sprite->pos2.x = -10;
+ sprite->subpriority = subpriority - 2;
+ }
+ }
+ else
+ {
+ sprite->pos2.x = -10;
+ sprite->subpriority = subpriority + 2;
+ }
+
+ sprite->callback = sub_80D370C;
+}
+
+static void sub_80D370C(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ move_anim_8072740(sprite);
+ }
+}
+
+void sub_80D3728(struct Sprite *sprite)
+{
+ int var1, var2;
+
+ if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget))
+ {
+ gBattleAnimArgs[0] *= -1;
+
+ if (GetBankIdentity(gBattleAnimBankAttacker) == 0 || GetBankIdentity(gBattleAnimBankAttacker) == 1)
+ {
+ gBattleAnimArgs[0] *= -1;
+ }
+
+ }
+
+ if ((gBattleAnimArgs[5] & 0xFF00) == 0)
+ var1 = 1;
+ else
+ var1 = 0;
+
+ if ((u8)gBattleAnimArgs[5] == 0)
+ var2 = 3;
+ else
+ var2 = 1;
+
+ sub_80787B0(sprite, var1);
+
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, var2) + gBattleAnimArgs[3];
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8072740);
+}
diff --git a/src/battle/anim/fury_cutter_count.c b/src/battle/anim/fury_cutter_count.c
new file mode 100644
index 000000000..17b084585
--- /dev/null
+++ b/src/battle/anim/fury_cutter_count.c
@@ -0,0 +1,20 @@
+#include "global.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 *gDisableStructMoveAnim; // TODO: this is declared with a different type in different files
+
+// fury_cutter (updates the direction and count of the fury cutter animation)
+// Used in Fury Cutter.
+
+void UpdateFuryCutterAnimDirection(u8 taskId)
+{
+ gBattleAnimArgs[7] = gDisableStructMoveAnim[16] & 1;
+ DestroyAnimVisualTask(taskId);
+}
+
+void UpdateFuryCutterAnimCount(u8 taskId)
+{
+ gBattleAnimArgs[7] = gDisableStructMoveAnim[16];
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
new file mode 100644
index 000000000..4769db2e4
--- /dev/null
+++ b/src/battle/anim/guard.c
@@ -0,0 +1,34 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern u16 gBattleTypeFlags;
+
+// guard (moves guard rings upwards)
+// Used in Safeguard.
+
+void sub_80D3014(struct Sprite *sprite)
+{
+ if ((gBattleTypeFlags & 1) && IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2))
+ {
+ sub_807A3FC(gBattleAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->pos1.y += 40;
+
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0);
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + 40;
+ }
+
+ sprite->data[0] = 13;
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y - 72;
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8072740);
+}
diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c
new file mode 100644
index 000000000..1d59669cf
--- /dev/null
+++ b/src/battle/anim/heated_rock.c
@@ -0,0 +1,205 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern u16 gBattleTypeFlags;
+
+void sub_80D59B0(struct Sprite *);
+static void sub_80D5A74(struct Sprite *);
+
+// heated_rock (moves heated rock sprites)
+// Used in Eruption.
+
+void sub_80D58FC(struct Sprite *sprite)
+{
+ sub_80D59B0(sprite);
+
+ if (sprite->invisible)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+u16 sub_80D5940(u8 spriteId)
+{
+ u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
+
+ if (GetBankSide(gBattleAnimBankAttacker) == 0)
+ {
+ var1 = ((var1 << 16) + 0x4A0000) >> 16;
+ }
+ else
+ {
+ var1 = ((var1 << 16) + 0x2C0000) >> 16;
+ }
+
+ return var1;
+}
+
+void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
+{
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = (u16)sprite->pos1.x * 8;
+ sprite->data[3] = (u16)sprite->pos1.y * 8;
+ sprite->data[4] = x * 8;
+ sprite->data[5] = y * 8;
+}
+
+#ifdef NONMATCHING
+void sub_80D59B0(struct Sprite *sprite)
+{
+ int var1;
+ int var2;
+
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ ++sprite->data[1];
+ sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]);
+ }
+
+ var1 = (u16)sprite->data[4] + (u16)sprite->data[2];
+ sprite->data[2] = var1;
+ var1 = (s16)var1 >> 3;
+ sprite->pos1.x = var1;
+
+ var2 = (u16)sprite->data[5] + (u16)sprite->data[3];
+ sprite->data[3] = var2;
+ var2 = (s16)var2 >> 3;
+ sprite->pos1.y = var2;
+
+ if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120)
+ {
+ sprite->invisible = 1;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80D59B0(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {lr}\n\
+ adds r2, r0, 0\n\
+ ldrh r0, [r2, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x2E]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ ble _080D59DA\n\
+ movs r0, 0\n\
+ strh r0, [r2, 0x2E]\n\
+ ldrh r0, [r2, 0x30]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x30]\n\
+ ldrh r0, [r2, 0x30]\n\
+ adds r1, r0, 0\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ ldrh r3, [r2, 0x34]\n\
+ adds r0, r3\n\
+ strh r0, [r2, 0x34]\n\
+_080D59DA:\n\
+ ldrh r0, [r2, 0x36]\n\
+ ldrh r1, [r2, 0x32]\n\
+ adds r0, r1\n\
+ strh r0, [r2, 0x32]\n\
+ lsls r0, 16\n\
+ asrs r0, 19\n\
+ strh r0, [r2, 0x20]\n\
+ ldrh r1, [r2, 0x38]\n\
+ ldrh r3, [r2, 0x34]\n\
+ adds r1, r3\n\
+ strh r1, [r2, 0x34]\n\
+ lsls r1, 16\n\
+ asrs r3, r1, 19\n\
+ strh r3, [r2, 0x22]\n\
+ adds r0, 0x8\n\
+ lsls r0, 16\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _080D5A10\n\
+ adds r1, r3, 0\n\
+ movs r0, 0x8\n\
+ negs r0, r0\n\
+ cmp r1, r0\n\
+ blt _080D5A10\n\
+ cmp r1, 0x78\n\
+ ble _080D5A1C\n\
+_080D5A10:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x3E\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x4\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_080D5A1C:\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80D5A20(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[3];
+
+ sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
+ sprite->callback = sub_80D5A74;
+}
+
+static void sub_80D5A74(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->data[6] != 0)
+ {
+ sprite->data[6]--;
+ return;
+ }
+
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= sprite->data[7])
+ {
+ sprite->pos1.y = sprite->data[7];
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ if ((++sprite->data[2] & 1) != 0)
+ {
+ sprite->pos2.y = -3;
+ }
+ else
+ {
+ sprite->pos2.y = 3;
+ }
+ }
+
+ if (++sprite->data[3] > 16)
+ {
+ move_anim_8072740(sprite);
+ }
+ break;
+ }
+}
diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c
index c5659463e..1e49b536c 100755
--- a/src/battle/anim/love_bg.c
+++ b/src/battle/anim/love_bg.c
@@ -6,13 +6,6 @@
#include "decompress.h"
#include "palette.h"
-struct Struct_sub_8078914
-{
- u8 *field_0;
- u8 *field_4;
- u8 field_8;
-};
-
extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimBankAttacker;
extern u8 gBattleAnimBankTarget;
diff --git a/src/battle/anim/noise.c b/src/battle/anim/noise.c
new file mode 100644
index 000000000..78953d96a
--- /dev/null
+++ b/src/battle/anim/noise.c
@@ -0,0 +1,56 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+
+static void sub_80D2E30(struct Sprite *);
+
+// noise (moving music note)
+// Used in Uproar.
+
+void sub_80D2D68(struct Sprite* sprite)
+{
+ int var1;
+ u8 slot = gBattleAnimArgs[0] == 0 ? gBattleAnimBankAttacker : gBattleAnimBankTarget;
+
+ if (GetBankSide(slot) == 1)
+ {
+ gBattleAnimArgs[1] *= -1;
+ }
+
+ sprite->pos1.x = sub_8077ABC(slot, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = sub_8077ABC(slot, 3) + gBattleAnimArgs[2];
+ sprite->data[0] = 0;
+ sprite->data[1] = (u16)sprite->pos1.x << 3;
+ sprite->data[2] = (u16)sprite->pos1.y << 3;
+
+ var1 = gBattleAnimArgs[1] << 3;
+ if (var1 < 0)
+ var1 += 7;
+ sprite->data[3] = var1 >> 3;
+
+ var1 = gBattleAnimArgs[2] << 3;
+ if (var1 < 0)
+ var1 += 7;
+ sprite->data[4] = var1 >> 3;
+
+ sprite->oam.tileNum += gBattleAnimArgs[3] * 16;
+ sprite->callback = sub_80D2E30;
+}
+
+static void sub_80D2E30(struct Sprite *sprite)
+{
+ sprite->data[1] += sprite->data[3];
+ sprite->data[2] += sprite->data[4];
+
+ sprite->pos1.x = sprite->data[1] >> 3;
+ sprite->pos1.y = sprite->data[2] >> 3;
+
+ if (++sprite->data[0] > 16)
+ {
+ move_anim_8072740(sprite);
+ }
+}
diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c
new file mode 100644
index 000000000..bdc0f4615
--- /dev/null
+++ b/src/battle/anim/note_spin.c
@@ -0,0 +1,110 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+
+static void sub_80D2F80(struct Sprite *);
+static void sub_80D2FA4(struct Sprite *);
+
+// note_spin (spins music notes around, and rotates them)
+// Used in Perish Song.
+
+void sub_80D2E68(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[1] = 120 - gBattleAnimArgs[0];
+ sprite->invisible = 1;
+ }
+
+ if (++sprite->data[0] == sprite->data[1])
+ {
+ sub_8079108(sprite->oam.paletteNum + 16, 0);
+ }
+
+ if (sprite->data[0] == sprite->data[1] + 80)
+ {
+ move_anim_8072740(sprite);
+ }
+}
+
+void sub_80D2EC8(struct Sprite *sprite)
+{
+ int index;
+ int var2;
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x = 120;
+ sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+
+ sprite->data[5] = 120;
+ sprite->data[3] = gBattleAnimArgs[2];
+ }
+
+ sprite->data[0]++;
+
+ sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2;
+ index = ((sprite->data[0] * 3) + (u16)sprite->data[3]);
+ var2 = 0xFF;
+ sprite->data[6] = (sprite->data[6] + 10) & 0xFF;
+
+ index &= var2;
+ sprite->pos2.x = Cos(index, 100);
+
+ sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
+
+ if (sprite->data[0] > sprite->data[5])
+ {
+ sprite->callback = sub_80D2F80;
+
+ sprite->data[0] = 0;
+ oamt_add_pos2_onto_pos1(sprite);
+ sprite->data[2] = 5;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+
+ StartSpriteAffineAnim(sprite, 1);
+ }
+}
+
+static void sub_80D2F80(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 10)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80D2FA4;
+ }
+}
+
+static void sub_80D2FA4(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[2];
+ sprite->pos2.y = sprite->data[3];
+
+ sprite->data[2]++;
+
+ if (sprite->data[3] > 48 && sprite->data[2] > 0)
+ {
+ sprite->data[2] = sprite->data[4] - 5;
+ sprite->data[4]++;
+ }
+
+ if (sprite->data[4] > 3)
+ {
+ int var1 = sprite->data[2];
+ sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1);
+ move_anim_8072740(sprite);
+ }
+
+ if (sprite->data[4] == 4)
+ {
+ move_anim_8072740(sprite);
+ }
+}
diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c
new file mode 100644
index 000000000..b38233e3c
--- /dev/null
+++ b/src/battle/anim/rain.c
@@ -0,0 +1,56 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "random.h"
+#include "sprite.h"
+#include "task.h"
+
+extern s16 gBattleAnimArgs[8];
+extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
+
+static void MoveAnimRaindrop(struct Sprite *);
+
+// rain (spawns and animates raindrops)
+// Used in Rain Dance and general rain animation.
+
+void CreateAnimRaindrops(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ }
+
+ gTasks[taskId].data[0]++;
+
+ if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
+ {
+ u8 x = Random() % 240;
+ u8 y = Random() % 80;
+ CreateSprite(gSpriteTemplate_83D9130, x, y, 4);
+ }
+
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void SetAnimRaindropCallback(struct Sprite *sprite)
+{
+ sprite->callback = MoveAnimRaindrop;
+}
+
+static void MoveAnimRaindrop(struct Sprite *sprite)
+{
+ if (++sprite->data[0] <= 13)
+ {
+ sprite->pos2.x++;
+ sprite->pos2.y += 4;
+ }
+
+ if (sprite->animEnded)
+ {
+ DestroySprite(sprite);
+ }
+}
diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c
index 9f1dfd7d0..0c5056704 100755
--- a/src/battle/anim/scary_face.c
+++ b/src/battle/anim/scary_face.c
@@ -6,13 +6,6 @@
#include "decompress.h"
#include "palette.h"
-struct Struct_sub_8078914
-{
- u8 *field_0;
- u8 *field_4;
- u8 field_8;
-};
-
extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimBankAttacker;
extern u8 gBattleAnimBankTarget;
diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c
new file mode 100644
index 000000000..35c380f23
--- /dev/null
+++ b/src/battle/anim/shock.c
@@ -0,0 +1,106 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern struct OamMatrix gOamMatrices[];
+
+extern void sub_80DA48C(struct Sprite *);
+
+// shock (moves the little electricity lines)
+// Used in Shock.
+
+void sub_80D6294(struct Sprite *sprite)
+{
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2);
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3);
+
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y -= gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078114;
+}
+
+void sub_80D6328(struct Sprite *sprite)
+{
+ u8 slot;
+ u32 matrixNum;
+ s16 sineVal;
+
+ switch (gBattleAnimArgs[4])
+ {
+ case 0:
+ slot = gBattleAnimBankAttacker;
+ break;
+ case 1:
+ default:
+ slot = gBattleAnimBankTarget;
+ break;
+ case 2:
+ if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2))
+ {
+ slot = gBattleAnimBankAttacker;
+ }
+ else
+ {
+ slot = gBattleAnimBankAttacker ^ 2;
+ }
+ break;
+ case 3:
+ if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2))
+ {
+ slot = gBattleAnimBankTarget ^ 2;
+ }
+ else
+ {
+ slot = gBattleAnimBankTarget;
+ }
+ break;
+ }
+
+ if (gBattleAnimArgs[5] == 0)
+ {
+ sprite->pos1.x = sub_8077ABC(slot, 0);
+ sprite->pos1.y = sub_8077ABC(slot, 1);
+ }
+ else
+ {
+ sprite->pos1.x = sub_8077ABC(slot, 2);
+ sprite->pos1.y = sub_8077ABC(slot, 3);
+ }
+
+ sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
+ sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
+
+ if (gBattleAnimArgs[6] & 1)
+ {
+ sprite->oam.priority = sub_8079ED4(slot) + 1;
+ }
+
+ matrixNum = sprite->oam.matrixNum;
+ sineVal = gSineTable[gBattleAnimArgs[2]];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64];
+ gOamMatrices[matrixNum].b = sineVal;
+ gOamMatrices[matrixNum].c = -sineVal;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DA48C;
+}
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
new file mode 100644
index 000000000..f6cb8a077
--- /dev/null
+++ b/src/battle/anim/sunlight.c
@@ -0,0 +1,17 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+
+// sunlight (creates sunlight orbs)
+// Used in Sunny Day
+
+void sub_80D517C(struct Sprite *sprite)
+{
+ sprite->pos1.x = 0;
+ sprite->pos1.y = 0;
+ sprite->data[0] = 60;
+ sprite->data[2] = 140;
+ sprite->data[4] = 80;
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8072740);
+}
diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c
new file mode 100644
index 000000000..5064148ef
--- /dev/null
+++ b/src/battle/anim/thunder.c
@@ -0,0 +1,36 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern u16 gBattleTypeFlags;
+
+static void sub_80D6218(struct Sprite *);
+
+// thunder (positions the lightning bolts)
+// Used in Thunder, Thunder Punch, and Tri Attack.
+
+void sub_80D61C8(struct Sprite *sprite)
+{
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = sub_80D6218;
+}
+
+static void sub_80D6218(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ move_anim_8072740(sprite);
+ }
+}
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
new file mode 100644
index 000000000..396a4637d
--- /dev/null
+++ b/src/battle/anim/water.c
@@ -0,0 +1,371 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "util.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+
+static void sub_80D3874(struct Sprite *);
+
+void sub_80D37FC(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8072740);
+}
+
+void sub_80D3838(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] != 0)
+ {
+ sub_8078764(sprite, 1);
+ }
+ else
+ {
+ sub_80787B0(sprite, 1);
+ }
+
+ sprite->data[7] = gBattleAnimArgs[2];
+ sprite->callback = sub_80D3874;
+}
+
+static void sub_80D3874(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[0], 4);
+
+ sprite->data[1] += 48;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ if (--sprite->data[7] == -1)
+ {
+ move_anim_8072740(sprite);
+ }
+}
+
+__attribute__((naked))
+void sub_80D38BC(u8 taskId)
+{
+ asm(".syntax unified\n\
+ .equ REG_BLDCNT, 0x4000050\n\
+ .equ REG_BG1CNT, 0x400000A\n\
+ .equ REG_BG1HOFS, 0x4000014\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r1, _080D398C @ =REG_BLDCNT\n\
+ ldr r2, _080D3990 @ =0x00003f42\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ movs r3, 0x80\n\
+ lsls r3, 5\n\
+ adds r0, r3, 0\n\
+ strh r0, [r1]\n\
+ ldr r2, _080D3994 @ =REG_BG1CNT\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x4\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r1, [r2, 0x1]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ movs r1, 0x40\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0x1]\n\
+ mov r0, sp\n\
+ bl sub_8078914\n\
+ ldr r2, [sp]\n\
+ movs r3, 0x80\n\
+ lsls r3, 6\n\
+ add r6, sp, 0x10\n\
+ add r0, sp, 0xC\n\
+ mov r12, r0\n\
+ movs r5, 0\n\
+ ldr r1, _080D3998 @ =0x040000d4\n\
+ movs r4, 0x80\n\
+ lsls r4, 5\n\
+ mov r8, r6\n\
+ ldr r7, _080D399C @ =0x85000400\n\
+ movs r0, 0x85\n\
+ lsls r0, 24\n\
+ mov r9, r0\n\
+_080D3920:\n\
+ str r5, [sp, 0x10]\n\
+ mov r0, r8\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r4\n\
+ subs r3, r4\n\
+ cmp r3, r4\n\
+ bhi _080D3920\n\
+ str r5, [sp, 0x10]\n\
+ str r6, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 2\n\
+ mov r2, r9\n\
+ orrs r0, r2\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ movs r0, 0\n\
+ mov r3, r12\n\
+ strb r0, [r3]\n\
+ strb r0, [r3]\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x10]\n\
+ ldr r0, _080D3998 @ =0x040000d4\n\
+ str r6, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _080D399C @ =0x85000400\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ bl NotInBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080D39B8\n\
+ ldr r2, _080D3994 @ =REG_BG1CNT\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r0, _080D39A0 @ =gBattleAnimBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _080D39A8\n\
+ ldr r0, _080D39A4 @ =gUnknown_08E70968\n\
+ b _080D39AA\n\
+ .align 2, 0\n\
+_080D398C: .4byte REG_BLDCNT\n\
+_080D3990: .4byte 0x00003f42\n\
+_080D3994: .4byte REG_BG1CNT\n\
+_080D3998: .4byte 0x040000d4\n\
+_080D399C: .4byte 0x85000400\n\
+_080D39A0: .4byte gBattleAnimBankAttacker\n\
+_080D39A4: .4byte gUnknown_08E70968\n\
+_080D39A8:\n\
+ ldr r0, _080D39B4 @ =gUnknown_08E70C38\n\
+_080D39AA:\n\
+ ldr r1, [sp, 0x4]\n\
+ bl LZDecompressVram\n\
+ b _080D39CE\n\
+ .align 2, 0\n\
+_080D39B4: .4byte gUnknown_08E70C38\n\
+_080D39B8:\n\
+ ldr r0, _080D39F0 @ =gUnknown_08E70F0C\n\
+ ldr r1, [sp, 0x4]\n\
+ bl LZDecompressVram\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x8]\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r2, 0\n\
+ movs r3, 0x1\n\
+ bl sub_80763FC\n\
+_080D39CE:\n\
+ ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf\n\
+ ldr r1, [sp]\n\
+ bl LZDecompressVram\n\
+ ldr r0, _080D39F8 @ =gBattleAnimArgs\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ bne _080D3A00\n\
+ ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf\n\
+ mov r1, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ lsls r1, 4\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ b _080D3A0E\n\
+ .align 2, 0\n\
+_080D39F0: .4byte gUnknown_08E70F0C\n\
+_080D39F4: .4byte gBattleAnimBackgroundImage_Surf\n\
+_080D39F8: .4byte gBattleAnimArgs\n\
+_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf\n\
+_080D3A00:\n\
+ ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal\n\
+ mov r1, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ lsls r1, 4\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+_080D3A0E:\n\
+ ldr r0, _080D3A7C @ =sub_80D3D68\n\
+ ldr r4, _080D3A80 @ =gTasks\n\
+ mov r2, r10\n\
+ lsls r5, r2, 2\n\
+ adds r1, r5, r2\n\
+ lsls r1, 3\n\
+ adds r6, r1, r4\n\
+ ldrb r1, [r6, 0x7]\n\
+ adds r1, 0x1\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ movs r3, 0\n\
+ mov r9, r3\n\
+ mov r0, r8\n\
+ strh r0, [r6, 0x26]\n\
+ mov r1, r8\n\
+ lsls r0, r1, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r7, r0, r4\n\
+ mov r2, r9\n\
+ strh r2, [r7, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ strh r0, [r7, 0xA]\n\
+ strh r0, [r7, 0xC]\n\
+ bl NotInBattle\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0\n\
+ beq _080D3A94\n\
+ ldr r3, _080D3A84 @ =0x0000ffb0\n\
+ adds r0, r3, 0\n\
+ ldr r1, _080D3A88 @ =gUnknown_030042C0\n\
+ strh r0, [r1]\n\
+ ldr r2, _080D3A8C @ =0x0000ffd0\n\
+ adds r0, r2, 0\n\
+ ldr r3, _080D3A90 @ =gUnknown_030041B4\n\
+ strh r0, [r3]\n\
+ movs r0, 0x2\n\
+ strh r0, [r6, 0x8]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0xA]\n\
+ mov r0, r9\n\
+ strh r0, [r7, 0xE]\n\
+ b _080D3AEE\n\
+ .align 2, 0\n\
+_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal\n\
+_080D3A7C: .4byte sub_80D3D68\n\
+_080D3A80: .4byte gTasks\n\
+_080D3A84: .4byte 0x0000ffb0\n\
+_080D3A88: .4byte gUnknown_030042C0\n\
+_080D3A8C: .4byte 0x0000ffd0\n\
+_080D3A90: .4byte gUnknown_030041B4\n\
+_080D3A94:\n\
+ ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x1\n\
+ bne _080D3AD8\n\
+ ldr r2, _080D3AC8 @ =0x0000ff20\n\
+ adds r0, r2, 0\n\
+ ldr r3, _080D3ACC @ =gUnknown_030042C0\n\
+ strh r0, [r3]\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r0, r2, 0\n\
+ ldr r3, _080D3AD0 @ =gUnknown_030041B4\n\
+ strh r0, [r3]\n\
+ movs r0, 0x2\n\
+ strh r0, [r6, 0x8]\n\
+ ldr r0, _080D3AD4 @ =0x0000ffff\n\
+ strh r0, [r6, 0xA]\n\
+ strh r1, [r7, 0xE]\n\
+ b _080D3AEE\n\
+ .align 2, 0\n\
+_080D3AC4: .4byte gBattleAnimBankAttacker\n\
+_080D3AC8: .4byte 0x0000ff20\n\
+_080D3ACC: .4byte gUnknown_030042C0\n\
+_080D3AD0: .4byte gUnknown_030041B4\n\
+_080D3AD4: .4byte 0x0000ffff\n\
+_080D3AD8:\n\
+ ldr r0, _080D3B1C @ =gUnknown_030042C0\n\
+ strh r4, [r0]\n\
+ ldr r1, _080D3B20 @ =0x0000ffd0\n\
+ adds r0, r1, 0\n\
+ ldr r2, _080D3B24 @ =gUnknown_030041B4\n\
+ strh r0, [r2]\n\
+ ldr r0, _080D3B28 @ =0x0000fffe\n\
+ strh r0, [r6, 0x8]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0xA]\n\
+ strh r4, [r7, 0xE]\n\
+_080D3AEE:\n\
+ ldr r1, _080D3B2C @ =REG_BG1HOFS\n\
+ ldr r3, _080D3B1C @ =gUnknown_030042C0\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ ldr r2, _080D3B24 @ =gUnknown_030041B4\n\
+ ldrh r0, [r2]\n\
+ strh r0, [r1]\n\
+ ldr r1, _080D3B30 @ =gTasks\n\
+ mov r3, r8\n\
+ lsls r0, r3, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r2, r0, r1\n\
+ movs r3, 0xE\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ bne _080D3B34\n\
+ movs r0, 0x30\n\
+ strh r0, [r2, 0x10]\n\
+ movs r0, 0x70\n\
+ b _080D3B38\n\
+ .align 2, 0\n\
+_080D3B1C: .4byte gUnknown_030042C0\n\
+_080D3B20: .4byte 0x0000ffd0\n\
+_080D3B24: .4byte gUnknown_030041B4\n\
+_080D3B28: .4byte 0x0000fffe\n\
+_080D3B2C: .4byte REG_BG1HOFS\n\
+_080D3B30: .4byte gTasks\n\
+_080D3B34:\n\
+ movs r0, 0\n\
+ strh r0, [r2, 0x10]\n\
+_080D3B38:\n\
+ strh r0, [r2, 0x12]\n\
+ mov r2, r10\n\
+ adds r0, r5, r2\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x14]\n\
+ ldr r1, _080D3B5C @ =sub_80D3B60\n\
+ str r1, [r0]\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080D3B5C: .4byte sub_80D3B60\n\
+ .syntax divided\n");
+}
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
new file mode 100644
index 000000000..0e13fa119
--- /dev/null
+++ b/src/battle/anim/wisp_orb.c
@@ -0,0 +1,105 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/songs.h"
+#include "rom_8077ABC.h"
+#include "sound.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[8];
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern u16 gBattleTypeFlags;
+extern u8 gUnknown_0202F7D2;
+
+static void sub_80D5C5C(struct Sprite *);
+
+// wisp_orb (animates the wisp orbs)
+// Used in Will-O-Wisp
+
+void sub_80D5B0C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sub_80787B0(sprite, 0);
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[7] = gBattleAnimArgs[2];
+
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->data[4] = 4;
+ }
+ else
+ {
+ sprite->data[4] = -4;
+ }
+
+ sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget);
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->data[1] += 192;
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
+ {
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+ }
+ else
+ {
+ sprite->pos2.y = sprite->data[1] >> 8;
+ }
+
+ sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
+
+ if (++sprite->data[3] == 1)
+ {
+ sprite->data[3] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
+
+ if (++sprite->data[3] == 31)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+
+ sprite->data[0] = 256;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3);
+
+ sub_8078BD4(sprite);
+ sprite->callback = sub_80D5C5C;
+ }
+ break;
+ }
+}
+
+static void sub_80D5C5C(struct Sprite *sprite)
+{
+ s16 initialData5;
+ s16 newData5;
+
+ if (!sub_8078B5C(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[5], 16);
+ initialData5 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
+ newData5 = sprite->data[5];
+
+ if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0)
+ {
+ PlaySE12WithPanning(SE_W172, gUnknown_0202F7D2);
+ }
+ }
+ else
+ {
+ move_anim_8072740(sprite);
+ }
+}
diff --git a/src/engine/sprite.c b/src/engine/sprite.c
index 69fa860c1..c1bb36917 100644
--- a/src/engine/sprite.c
+++ b/src/engine/sprite.c
@@ -26,14 +26,6 @@
#define SPRITE_TILE_IS_ALLOCATED(n) ((gSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1)
-struct OamMatrix
-{
- s16 a;
- s16 b;
- s16 c;
- s16 d;
-};
-
struct SpriteCopyRequest
{
const u8 *src;
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 8fea7f710..0ecaa9dcb 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -51,13 +51,6 @@ struct Struct_gUnknown_0837F578 {
u8 field_1;
};
-struct OamMatrix {
- s16 a;
- s16 b;
- s16 c;
- s16 d;
-};
-
struct Struct_2017810 {
u8 filler_0[6];
u8 field_6;
@@ -70,12 +63,6 @@ struct Color {
u16 b:5;
};
-struct Struct_sub_8078914 {
- u8 *field_0;
- u8 *field_4;
- u8 field_8;
-};
-
struct BGCnt {
u16 priority:2;
u16 charBase:2;