summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com>2018-12-21 16:44:49 +0800
committernullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com>2018-12-21 16:44:49 +0800
commit80de1483c6d4b2e42fc2d71195cff1c6fddfac5a (patch)
treef739f2861c46e5b325275fb5f23d52452d1d1360
parente8b149e80e7b1411ce7a128e36ebc5d5490133e1 (diff)
Port water.s from pokeemerald
-rw-r--r--asm/water.s2541
-rw-r--r--data/battle_anim_scripts.s4
-rw-r--r--include/rom_8077ABC.h2
-rw-r--r--include/task.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle/anim/fire_2.c2
-rw-r--r--src/battle/anim/ghost.c2
-rw-r--r--src/battle/anim/lunge.c6
-rw-r--r--src/battle/anim/shadow_enlarge.c2
-rw-r--r--src/battle/anim/shadow_minimize.c2
-rw-r--r--src/battle/anim/silhouette.c2
-rw-r--r--src/battle/anim/water.c1557
-rw-r--r--src/battle/anim/withdraw.c2
-rw-r--r--src/battle/battle_anim_80A7E7C.c6
-rw-r--r--src/battle/battle_anim_812C144.c10
-rwxr-xr-xsrc/battle/battle_anim_813F0F4.c4
-rw-r--r--src/rom_8077ABC.c4
17 files changed, 1583 insertions, 2567 deletions
diff --git a/asm/water.s b/asm/water.s
deleted file mode 100644
index ef7a469f0..000000000
--- a/asm/water.s
+++ /dev/null
@@ -1,2541 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ water
-
- thumb_func_start sub_80D3B60
-sub_80D3B60: @ 80D3B60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080D3D44 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x8]
- ldr r1, _080D3D48 @ =gBattle_BG1_X
- ldrh r1, [r1]
- adds r0, r1
- ldr r2, _080D3D48 @ =gBattle_BG1_X
- strh r0, [r2]
- ldrh r0, [r4, 0xA]
- ldr r3, _080D3D4C @ =gBattle_BG1_Y
- ldrh r3, [r3]
- adds r0, r3
- ldr r1, _080D3D4C @ =gBattle_BG1_Y
- strh r0, [r1]
- add r5, sp, 0x4
- adds r0, r5, 0
- bl sub_8078914
- ldrh r0, [r4, 0xA]
- ldrh r2, [r4, 0xC]
- adds r0, r2
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- mov r10, r5
- cmp r0, 0x4
- bne _080D3C02
- ldr r1, _080D3D50 @ =gPlttBufferFaded
- ldrb r0, [r5, 0x8]
- lsls r0, 4
- adds r0, 0x7
- lsls r0, 1
- adds r0, r1
- ldrh r6, [r0]
- movs r2, 0x6
- adds r5, r1, 0
- adds r3, r5, 0
- mov r4, r10
-_080D3BC8:
- ldrb r0, [r4, 0x8]
- lsls r0, 4
- adds r1, r2, 0x1
- adds r0, r1
- lsls r1, r0, 1
- adds r1, r3
- subs r0, 0x1
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- subs r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080D3BC8
- mov r3, r10
- ldrb r0, [r3, 0x8]
- lsls r0, 4
- adds r0, 0x1
- lsls r0, 1
- adds r0, r5
- strh r6, [r0]
- ldr r1, _080D3D44 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x12]
-_080D3C02:
- ldr r1, _080D3D44 @ =gTasks
- lsls r2, r7, 2
- adds r0, r2, r7
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0x14]
- adds r0, 0x1
- strh r0, [r3, 0x14]
- lsls r0, 16
- asrs r0, 16
- adds r4, r1, 0
- str r2, [sp, 0x14]
- cmp r0, 0x1
- ble _080D3C70
- movs r0, 0
- strh r0, [r3, 0x14]
- ldrh r0, [r3, 0xE]
- adds r2, r0, 0x1
- strh r2, [r3, 0xE]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _080D3C4C
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
-_080D3C4C:
- movs r2, 0xE
- ldrsh r0, [r3, r2]
- cmp r0, 0x36
- ble _080D3C70
- ldrh r2, [r3, 0x10]
- subs r2, 0x1
- strh r2, [r3, 0x10]
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
-_080D3C70:
- ldr r2, [sp, 0x14]
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r4
- movs r3, 0x26
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldrh r1, [r0, 0xA]
- movs r0, 0x1F
- ands r0, r1
- cmp r0, 0
- bne _080D3D32
- ldr r2, [sp, 0x4]
- movs r3, 0x80
- lsls r3, 6
- add r6, sp, 0x10
- movs r5, 0
- ldr r1, _080D3D54 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r8, r6
- ldr r0, _080D3D58 @ =0x85000400
- mov r12, r0
- movs r0, 0x85
- lsls r0, 24
- mov r9, r0
-_080D3CAA:
- str r5, [sp, 0x10]
- mov r0, r8
- str r0, [r1]
- str r2, [r1, 0x4]
- mov r0, r12
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080D3CAA
- 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]
- mov r0, sp
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0]
- mov r3, r10
- ldr r1, [r3, 0x4]
- movs r4, 0
- str r4, [sp, 0x10]
- ldr r0, _080D3D54 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080D3D58 @ =0x85000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080D3D02
- ldr r2, _080D3D5C @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080D3D02:
- ldr r0, _080D3D48 @ =gBattle_BG1_X
- strh r4, [r0]
- ldr r1, _080D3D4C @ =gBattle_BG1_Y
- strh r4, [r1]
- ldr r0, _080D3D60 @ =REG_BLDCNT
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r2, _080D3D44 @ =gTasks
- ldr r3, [sp, 0x14]
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r2
- movs r3, 0x26
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, _080D3D64 @ =0x0000ffff
- strh r1, [r0, 0x26]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080D3D32:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D3D44: .4byte gTasks
-_080D3D48: .4byte gBattle_BG1_X
-_080D3D4C: .4byte gBattle_BG1_Y
-_080D3D50: .4byte gPlttBufferFaded
-_080D3D54: .4byte 0x040000d4
-_080D3D58: .4byte 0x85000400
-_080D3D5C: .4byte REG_BG1CNT
-_080D3D60: .4byte REG_BLDCNT
-_080D3D64: .4byte 0x0000ffff
- thumb_func_end sub_80D3B60
-
- thumb_func_start sub_80D3D68
-sub_80D3D68: @ 80D3D68
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080D3D90 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080D3D84
- b _080D3EBC
-_080D3D84:
- cmp r0, 0x1
- bgt _080D3D94
- cmp r0, 0
- beq _080D3D9C
- b _080D4032
- .align 2, 0
-_080D3D90: .4byte gTasks
-_080D3D94:
- cmp r0, 0x2
- bne _080D3D9A
- b _080D3F88
-_080D3D9A:
- b _080D4032
-_080D3D9C:
- movs r3, 0
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- ldr r1, _080D3E6C @ =gScanlineEffectRegBuffers
- mov r12, r1
- cmp r3, r0
- bge _080D3DDA
- mov r7, r12
- movs r5, 0xF0
- lsls r5, 3
- add r5, r12
- ldr r6, _080D3E70 @ =0x0000ffff
-_080D3DB4:
- lsls r2, r3, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r7
- adds r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r6, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- asrs r2, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r2, r0
- blt _080D3DB4
-_080D3DDA:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080D3E14
- ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, _080D3E70 @ =0x0000ffff
-_080D3DF2:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldrh r1, [r4, 0xA]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080D3DF2
-_080D3E14:
- ldrh r3, [r4, 0x12]
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- bgt _080D3E4A
- ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, _080D3E70 @ =0x0000ffff
-_080D3E28:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- ble _080D3E28
-_080D3E4A:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D3E74
- lsls r0, r3, 16
- asrs r0, 15
- mov r3, r12
- adds r2, r0, r3
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xA]
- strh r1, [r0]
- ldrh r0, [r4, 0xA]
- b _080D3E8A
- .align 2, 0
-_080D3E6C: .4byte gScanlineEffectRegBuffers
-_080D3E70: .4byte 0x0000ffff
-_080D3E74:
- lsls r0, r3, 16
- asrs r0, 15
- mov r1, r12
- adds r2, r0, r1
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xC]
- strh r1, [r0]
- ldrh r0, [r4, 0xC]
-_080D3E8A:
- strh r0, [r2]
- ldr r0, _080D3EB4 @ =REG_BLDALPHA
- str r0, [sp]
- ldr r0, _080D3EB8 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D4032
- .align 2, 0
-_080D3EB4: .4byte REG_BLDALPHA
-_080D3EB8: .4byte 0xa2600001
-_080D3EBC:
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080D3ED4
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bgt _080D3EE8
- strh r1, [r4, 0x10]
- b _080D3EE2
-_080D3ED4:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _080D3EE8
-_080D3EE2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D3EE8:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _080D3F1C
- ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
- ldr r5, _080D3F84 @ =gScanlineEffect
-_080D3EF6:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080D3EF6
-_080D3F1C:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080D3F50
- ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
- ldr r5, _080D3F84 @ =gScanlineEffect
-_080D3F2E:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080D3F2E
-_080D3F50:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080D4032
- ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
- ldr r5, _080D3F84 @ =gScanlineEffect
-_080D3F5E:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080D3F5E
- b _080D4032
- .align 2, 0
-_080D3F80: .4byte gScanlineEffectRegBuffers
-_080D3F84: .4byte gScanlineEffect
-_080D3F88:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _080D3FBC
- ldr r6, _080D403C @ =gScanlineEffectRegBuffers
- ldr r5, _080D4040 @ =gScanlineEffect
-_080D3F96:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080D3F96
-_080D3FBC:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080D3FF0
- ldr r6, _080D403C @ =gScanlineEffectRegBuffers
- ldr r5, _080D4040 @ =gScanlineEffect
-_080D3FCE:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080D3FCE
-_080D3FF0:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080D401C
- ldr r6, _080D403C @ =gScanlineEffectRegBuffers
- ldr r5, _080D4040 @ =gScanlineEffect
-_080D3FFE:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080D3FFE
-_080D401C:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080D4032
- bl ScanlineEffect_Stop
- adds r0, r7, 0
- bl DestroyTask
-_080D4032:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D403C: .4byte gScanlineEffectRegBuffers
-_080D4040: .4byte gScanlineEffect
- thumb_func_end sub_80D3D68
-
- thumb_func_start sub_80D4044
-sub_80D4044: @ 80D4044
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r3, _080D4098 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080D409C @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078764
- bl Random
- movs r5, 0xFF
- ands r5, r0
- movs r0, 0x80
- lsls r0, 1
- adds r6, r0, 0
- orrs r5, r6
- bl Random
- ldr r1, _080D40A0 @ =0x000001ff
- ands r1, r0
- adds r0, r1, 0
- cmp r0, 0xFF
- ble _080D408A
- subs r0, r6, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_080D408A:
- strh r5, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldr r0, _080D40A4 @ =sub_80D40A8
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4098: .4byte 0x000003ff
-_080D409C: .4byte 0xfffffc00
-_080D40A0: .4byte 0x000001ff
-_080D40A4: .4byte sub_80D40A8
- thumb_func_end sub_80D4044
-
- thumb_func_start sub_80D40A8
-sub_80D40A8: @ 80D40A8
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r3, r0, r1
- strh r3, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r4, [r2, 0x36]
- adds r1, r4
- strh r1, [r2, 0x36]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080D40CC
- lsls r0, r3, 16
- asrs r0, 24
- negs r0, r0
- b _080D40D0
-_080D40CC:
- lsls r0, r3, 16
- asrs r0, 24
-_080D40D0:
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080D40EE
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080D40EE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D40A8
-
- thumb_func_start sub_80D40F4
-sub_80D40F4: @ 80D40F4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080D4144 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r2, _080D4148 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x12]
- bl sub_80D4394
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8078E70
- ldr r0, _080D414C @ =sub_80D4150
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4144: .4byte gTasks
-_080D4148: .4byte gSprites
-_080D414C: .4byte sub_80D4150
- thumb_func_end sub_80D40F4
-
- thumb_func_start sub_80D4150
-sub_80D4150: @ 80D4150
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080D4178 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bls _080D416C
- b _080D438A
-_080D416C:
- lsls r0, 2
- ldr r1, _080D417C @ =_080D4180
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080D4178: .4byte gTasks
-_080D417C: .4byte _080D4180
- .align 2, 0
-_080D4180:
- .4byte _080D41A0
- .4byte _080D41C6
- .4byte _080D4258
- .4byte _080D428E
- .4byte _080D42A2
- .4byte _080D42B0
- .4byte _080D4330
- .4byte _080D437C
-_080D41A0:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0xE0
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 2
- str r0, [sp, 0x4]
- movs r0, 0x20
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r2, r3, 0
- bl sub_8079C08
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D41C6:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D4222
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D4210
- ldr r2, _080D420C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- strh r1, [r0, 0x24]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
- b _080D4222
- .align 2, 0
-_080D420C: .4byte gSprites
-_080D4210:
- ldr r2, _080D4250 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080D4254 @ =0x0000fffd
- strh r1, [r0, 0x24]
-_080D4222:
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080D4232
- b _080D438A
-_080D4232:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8079A64
- ldr r2, _080D4250 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- strh r5, [r4, 0xE]
- b _080D436C
- .align 2, 0
-_080D4250: .4byte gSprites
-_080D4254: .4byte 0x0000fffd
-_080D4258:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080D4268
- b _080D438A
-_080D4268:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xE0
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_8079C08
- movs r0, 0
- strh r0, [r4, 0xE]
- b _080D436E
-_080D428E:
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080D438A
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _080D436E
-_080D42A2:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80D4418
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D42B0:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D438A
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D42E8
- ldr r2, _080D42E4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x2
- b _080D42FA
- .align 2, 0
-_080D42E4: .4byte gSprites
-_080D42E8:
- ldr r2, _080D432C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x2
-_080D42FA:
- strh r1, [r0, 0x26]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080D438A
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xE0
- bl sub_8079C08
- movs r0, 0
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _080D436E
- .align 2, 0
-_080D432C: .4byte gSprites
-_080D4330:
- ldr r6, _080D4378 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080D438A
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8078F40
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0x12]
- strh r1, [r0, 0x22]
-_080D436C:
- strh r5, [r4, 0x10]
-_080D436E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D438A
- .align 2, 0
-_080D4378: .4byte gSprites
-_080D437C:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D438A
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080D438A:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4150
-
- thumb_func_start sub_80D4394
-sub_80D4394: @ 80D4394
- push {r4,r5,lr}
- ldr r4, _080D43B8 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080D43C8
- ldr r1, _080D43BC @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080D43C0 @ =gPlayerParty
- b _080D43D8
- .align 2, 0
-_080D43B8: .4byte gBattleAnimAttacker
-_080D43BC: .4byte gBattlerPartyIndexes
-_080D43C0: .4byte gPlayerParty
-_080D43C4:
- adds r0, r2, 0
- b _080D440A
-_080D43C8:
- ldr r1, _080D4410 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080D4414 @ =gEnemyParty
-_080D43D8:
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- lsrs r4, 18
- movs r2, 0
-_080D43F6:
- adds r1, r2, 0x1
- adds r0, r4, 0
- muls r0, r1
- cmp r3, r0
- blt _080D43C4
- lsls r0, r1, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080D43F6
- movs r0, 0x3
-_080D440A:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080D4410: .4byte gBattlerPartyIndexes
-_080D4414: .4byte gEnemyParty
- thumb_func_end sub_80D4394
-
- thumb_func_start sub_80D4418
-sub_80D4418: @ 80D4418
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- ldr r4, _080D4520 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0xAC
- ldrb r0, [r4]
- bl GetBattlerSubpriority
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldrh r1, [r7, 0xA]
- movs r0, 0x4
- subs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bgt _080D4468
- movs r1, 0x1
-_080D4468:
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r1, 16
- mov r10, r8
- mov r9, r6
- mov r1, r10
- lsls r1, 4
- str r1, [sp, 0xC]
- mov r1, r9
- lsls r1, 4
- str r1, [sp, 0x10]
- asrs r0, 16
- mov r8, r0
-_080D4482:
- ldr r0, _080D4524 @ =gSpriteTemplate_83D9378
- mov r1, r10
- mov r2, r9
- ldr r3, [sp, 0x8]
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r6, r5, 16
- cmp r2, 0x40
- beq _080D44EA
- ldr r1, _080D4528 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x30]
- mov r1, sp
- ldrh r1, [r1, 0xC]
- strh r1, [r5, 0x32]
- mov r0, sp
- ldrh r0, [r0, 0x10]
- strh r0, [r5, 0x34]
- asrs r4, r6, 16
- adds r0, r4, 0
- movs r1, 0x40
- bl Cos
- strh r0, [r5, 0x36]
- adds r0, r4, 0
- movs r1, 0x40
- bl Sin
- strh r0, [r5, 0x38]
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r5, 0x3A]
- movs r0, 0x2
- strh r0, [r5, 0x3C]
- ldrh r1, [r7, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D44E4
- adds r0, r5, 0
- bl sub_80D452C
-_080D44E4:
- ldrh r0, [r7, 0xC]
- adds r0, 0x1
- strh r0, [r7, 0xC]
-_080D44EA:
- mov r1, r8
- lsls r0, r1, 1
- asrs r1, r6, 16
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r5, r0, 16
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- add r0, r8
- lsls r0, 16
- lsrs r1, r0, 16
- str r1, [sp, 0x4]
- asrs r0, 16
- cmp r0, 0x13
- ble _080D4482
- 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
-_080D4520: .4byte gBattleAnimAttacker
-_080D4524: .4byte gSpriteTemplate_83D9378
-_080D4528: .4byte gSprites
- thumb_func_end sub_80D4418
-
- thumb_func_start sub_80D452C
-sub_80D452C: @ 80D452C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D453E
- cmp r0, 0x1
- beq _080D4574
- b _080D45CE
-_080D453E:
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x36]
- adds r1, r0
- strh r1, [r4, 0x36]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_080D4574:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x38]
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r2, r1, 20
- strh r2, [r4, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080D45AA
- adds r1, r2, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080D45AA
- cmp r1, 0x78
- ble _080D45CE
-_080D45AA:
- ldr r3, _080D45D4 @ =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
-_080D45CE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D45D4: .4byte gTasks
- thumb_func_end sub_80D452C
-
- thumb_func_start sub_80D45D8
-sub_80D45D8: @ 80D45D8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080D4608 @ =gTasks
- adds r4, r1, r0
- bl sub_80D4394
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldr r0, _080D460C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080D4610
- movs r0, 0x88
- strh r0, [r4, 0x10]
- movs r0, 0x28
- b _080D4616
- .align 2, 0
-_080D4608: .4byte gTasks
-_080D460C: .4byte gBattleAnimAttacker
-_080D4610:
- movs r0, 0x10
- strh r0, [r4, 0x10]
- movs r0, 0x50
-_080D4616:
- strh r0, [r4, 0x14]
- movs r0, 0x62
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r0, 0x31
- strh r0, [r4, 0x16]
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x5
- strh r0, [r4, 0x20]
- ldr r0, _080D4638 @ =sub_80D463C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4638: .4byte sub_80D463C
- thumb_func_end sub_80D45D8
-
- thumb_func_start sub_80D463C
-sub_80D463C: @ 80D463C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r7, _080D4660 @ =gTasks
- adds r4, r0, r7
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0
- beq _080D4664
- cmp r2, 0x1
- beq _080D4714
- b _080D4722
- .align 2, 0
-_080D4660: .4byte gTasks
-_080D4664:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080D467A
- strh r2, [r4, 0xC]
- adds r0, r4, 0
- bl sub_80D472C
-_080D467A:
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D46F4
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080D46F4
- ldr r5, _080D4708 @ =gBattleAnimArgs
- movs r1, 0x1
- mov r8, r1
- mov r2, r8
- strh r2, [r5]
- strh r0, [r5, 0x2]
- movs r0, 0xC
- strh r0, [r5, 0x4]
- ldr r6, _080D470C @ =sub_80E1864
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080D46C4
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, _080D4710 @ =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080D46C4:
- movs r0, 0x3
- strh r0, [r5]
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080D46F0
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, _080D4710 @ =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080D46F0:
- mov r0, r8
- strh r0, [r4, 0x22]
-_080D46F4:
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080D4722
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D4722
- .align 2, 0
-_080D4708: .4byte gBattleAnimArgs
-_080D470C: .4byte sub_80E1864
-_080D4710: .4byte gAnimVisualTaskCount
-_080D4714:
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080D4722
- adds r0, r1, 0
- bl DestroyAnimVisualTask
-_080D4722:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D463C
-
- thumb_func_start sub_80D472C
-sub_80D472C: @ 80D472C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _080D47B8 @ =gSineTable
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, 0x3
- asrs r0, 4
- ldrh r2, [r4, 0x14]
- adds r0, r2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080D47BC @ =gSpriteTemplate_83D9378
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080D4786
- ldr r3, _080D47C0 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, _080D47C4 @ =sub_80D47D0
- str r2, [r1]
- adds r0, r3
- strh r5, [r0, 0x38]
- strh r6, [r0, 0x3A]
- movs r1, 0x9
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
-_080D4786:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x18]
- adds r0, 0x27
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x18]
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- ldr r0, _080D47C8 @ =0x41c64e6d
- muls r0, r1
- ldr r1, _080D47CC @ =0x00003039
- adds r0, r1
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- ldrh r1, [r4, 0x10]
- adds r1, r0
- strh r1, [r4, 0x16]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D47B8: .4byte gSineTable
-_080D47BC: .4byte gSpriteTemplate_83D9378
-_080D47C0: .4byte gSprites
-_080D47C4: .4byte sub_80D47D0
-_080D47C8: .4byte 0x41c64e6d
-_080D47CC: .4byte 0x00003039
- thumb_func_end sub_80D472C
-
- thumb_func_start sub_80D47D0
-sub_80D47D0: @ 80D47D0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080D4866
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x38
- ldrsh r1, [r5, r2]
- cmp r0, r1
- blt _080D4866
- ldr r2, _080D486C @ =gTasks
- movs r3, 0x3A
- ldrsh r1, [r5, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x1C]
- ldr r0, _080D4870 @ =gBattleAnimSpriteTemplate_83DB4D8
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- cmp r0, 0x40
- beq _080D4860
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080D4874 @ =gSprites
- adds r0, r4
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3A]
- strh r1, [r0, 0x3A]
- movs r3, 0x30
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3C]
- strh r1, [r0, 0x3C]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _080D4878 @ =sub_80D487C
- str r1, [r0]
-_080D4860:
- adds r0, r5, 0
- bl DestroySprite
-_080D4866:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D486C: .4byte gTasks
-_080D4870: .4byte gBattleAnimSpriteTemplate_83DB4D8
-_080D4874: .4byte gSprites
-_080D4878: .4byte sub_80D487C
- thumb_func_end sub_80D47D0
-
- thumb_func_start sub_80D487C
-sub_80D487C: @ 80D487C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D48E8
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080D48E8
- ldr r3, _080D48F0 @ =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]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080D48E8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D48F0: .4byte gTasks
- thumb_func_end sub_80D487C
-
- thumb_func_start sub_80D48F4
-sub_80D48F4: @ 80D48F4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080D4978 @ =gTasks
- adds r5, r1, r0
- ldr r4, _080D497C @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0xE]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080D4938
- movs r1, 0x1
-_080D4938:
- strh r1, [r5, 0x16]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080D494C
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r5, 0x16]
-_080D494C:
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r0, 3
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0x12]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- lsls r1, 3
- ldrh r0, [r5, 0x10]
- subs r0, r1
- strh r0, [r5, 0x14]
- ldr r0, _080D4980 @ =0x0000ffe0
- strh r0, [r5, 0x1A]
- strh r6, [r5, 0xA]
- strh r6, [r5, 0x8]
- ldr r0, _080D4984 @ =sub_80D4988
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4978: .4byte gTasks
-_080D497C: .4byte gBattleAnimAttacker
-_080D4980: .4byte 0x0000ffe0
-_080D4984: .4byte sub_80D4988
- thumb_func_end sub_80D48F4
-
- thumb_func_start sub_80D4988
-sub_80D4988: @ 80D4988
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080D49AC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bls _080D49A2
- b _080D4AC2
-_080D49A2:
- lsls r0, 2
- ldr r1, _080D49B0 @ =_080D49B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080D49AC: .4byte gTasks
-_080D49B0: .4byte _080D49B4
- .align 2, 0
-_080D49B4:
- .4byte _080D49D0
- .4byte _080D49E0
- .4byte _080D49FA
- .4byte _080D4A3C
- .4byte _080D4A5E
- .4byte _080D4A8C
- .4byte _080D4AB2
-_080D49D0:
- adds r0, r4, 0
- bl sub_80D4AD0
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D4AC8
- b _080D4ABA
-_080D49E0:
- adds r0, r4, 0
- bl sub_80D4AD0
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080D4AC8
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080D4ABA
-_080D49FA:
- adds r0, r4, 0
- bl sub_80D4AD0
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- adds r1, r0
- movs r2, 0
- strh r1, [r4, 0x12]
- adds r1, 0x10
- lsls r1, 16
- movs r0, 0x88
- lsls r0, 17
- cmp r1, r0
- bls _080D4AC8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080D4A38
- movs r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x6
- strh r0, [r4, 0x8]
- strh r2, [r4, 0xA]
- b _080D4AC8
-_080D4A38:
- strh r2, [r4, 0xA]
- b _080D4ABA
-_080D4A3C:
- adds r0, r4, 0
- bl sub_80D4AD0
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080D4AC8
- b _080D4ABA
-_080D4A5E:
- adds r0, r4, 0
- bl sub_80D4AD0
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x12]
- adds r0, 0x10
- lsls r0, 16
- movs r1, 0x88
- lsls r1, 17
- cmp r0, r1
- bls _080D4AC8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080D4ABA
-_080D4A8C:
- adds r0, r4, 0
- bl sub_80D4AD0
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080D4AC8
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080D4AC8
-_080D4AB2:
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D4AC8
-_080D4ABA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D4AC8
-_080D4AC2:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080D4AC8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4988
-
- thumb_func_start sub_80D4AD0
-sub_80D4AD0: @ 80D4AD0
- push {r4-r6,lr}
- adds r6, r0, 0
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D4B2A
- movs r0, 0
- strh r0, [r6, 0xC]
- ldr r0, _080D4B30 @ =gSpriteTemplate_83D9378
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- movs r3, 0x10
- ldrsh r2, [r6, r3]
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080D4B2A
- ldr r5, _080D4B34 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- ldrh r1, [r6, 0x12]
- strh r1, [r0, 0x32]
- ldrh r1, [r6, 0x14]
- strh r1, [r0, 0x36]
- ldrh r1, [r6, 0x1A]
- strh r1, [r0, 0x38]
- bl InitAnimArcTranslation
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080D4B38 @ =sub_80D4B3C
- str r0, [r4]
- ldrh r0, [r6, 0x18]
- adds r0, 0x1
- strh r0, [r6, 0x18]
-_080D4B2A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4B30: .4byte gSpriteTemplate_83D9378
-_080D4B34: .4byte gSprites
-_080D4B38: .4byte sub_80D4B3C
- thumb_func_end sub_80D4AD0
-
- thumb_func_start sub_80D4B3C
-sub_80D4B3C: @ 80D4B3C
- push {r4-r6,lr}
- adds r6, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _080D4B96
- ldrh r0, [r6, 0x24]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrh r0, [r6, 0x26]
- ldrh r1, [r6, 0x22]
- adds r0, r1
- strh r0, [r6, 0x22]
- movs r0, 0x6
- strh r0, [r6, 0x2E]
- bl Random
- movs r4, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldr r5, _080D4B9C @ =0x0000fff0
- adds r1, r5
- ldrh r0, [r6, 0x20]
- adds r1, r0
- strh r1, [r6, 0x32]
- bl Random
- ands r4, r0
- adds r4, r5
- ldrh r1, [r6, 0x22]
- adds r4, r1
- strh r4, [r6, 0x36]
- bl Random
- movs r1, 0x7
- ands r1, r0
- mvns r1, r1
- strh r1, [r6, 0x38]
- adds r0, r6, 0
- bl InitAnimArcTranslation
- ldr r0, _080D4BA0 @ =sub_80D4BA4
- str r0, [r6, 0x1C]
-_080D4B96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4B9C: .4byte 0x0000fff0
-_080D4BA0: .4byte sub_80D4BA4
- thumb_func_end sub_80D4B3C
-
- thumb_func_start sub_80D4BA4
-sub_80D4BA4: @ 80D4BA4
- push {r4-r6,lr}
- adds r5, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _080D4BE0
- movs r4, 0
- ldr r6, _080D4BE8 @ =gTasks
-_080D4BB6:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r6
- ldr r1, [r2]
- ldr r0, _080D4BEC @ =sub_80D4988
- cmp r1, r0
- bne _080D4BD6
- movs r0, 0x1
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0x18]
- subs r0, 0x1
- strh r0, [r2, 0x18]
- adds r0, r5, 0
- bl DestroySprite
-_080D4BD6:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _080D4BB6
-_080D4BE0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4BE8: .4byte gTasks
-_080D4BEC: .4byte sub_80D4988
- thumb_func_end sub_80D4BA4
-
- thumb_func_start sub_80D4BF0
-sub_80D4BF0: @ 80D4BF0
- ldr r2, _080D4C10 @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x20]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x2E]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0x30]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0xA]
- strh r1, [r0, 0x34]
- ldr r1, _080D4C14 @ =sub_80D4C18
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080D4C10: .4byte gBattleAnimArgs
-_080D4C14: .4byte sub_80D4C18
- thumb_func_end sub_80D4BF0
-
- thumb_func_start sub_80D4C18
-sub_80D4C18: @ 80D4C18
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- subs r0, r1
- strh r0, [r4, 0x36]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _080D4C5C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D4C5C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4C18
-
- thumb_func_start sub_80D4C64
-sub_80D4C64: @ 80D4C64
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 23
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080D4C9C
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080D4C9C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4C64
-
- thumb_func_start sub_80D4CA4
-sub_80D4CA4: @ 80D4CA4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r5, _080D4CE0 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldr r1, _080D4CE4 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldr r0, _080D4CE8 @ =sub_80D4CEC
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4CE0: .4byte gBattleAnimTarget
-_080D4CE4: .4byte gBattleAnimArgs
-_080D4CE8: .4byte sub_80D4CEC
- thumb_func_end sub_80D4CA4
-
- thumb_func_start sub_80D4CEC
-sub_80D4CEC: @ 80D4CEC
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- subs r6, r1, r0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- subs r5, r1, r0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r6
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r5
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080D4D44
- movs r0, 0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_80D4D64
-_080D4D44:
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080D4D56
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D4D56:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4CEC
-
- thumb_func_start sub_80D4D64
-sub_80D4D64: @ 80D4D64
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r4, r1, 0
- adds r5, r2, 0
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- lsls r1, 15
- lsrs r1, 16
- str r1, [sp]
- ldrh r1, [r0, 0x24]
- ldrh r3, [r0, 0x20]
- adds r1, r3
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r0, r5, r0
- subs r0, 0x5
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl Random
- negs r4, r4
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r4, r0
- subs r4, 0x5
- lsls r4, 16
- lsrs r7, r4, 16
- movs r6, 0
- mov r0, r8
- lsls r0, 16
- mov r8, r0
- mov r1, r10
- lsls r1, 16
- str r1, [sp, 0xC]
- ldr r2, [sp]
- lsls r2, 16
- str r2, [sp, 0x10]
- asrs r1, 16
- lsls r0, r7, 16
- asrs r5, r0, 16
- str r0, [sp, 0x14]
- negs r3, r5
- str r3, [sp, 0x4]
- asrs r0, r2, 16
- adds r1, r0
- lsls r1, 16
- mov r10, r1
-_080D4DF2:
- ldr r0, _080D4E34 @ =gSpriteTemplate_83D9420
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080D4E38 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, _080D4E3C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSubpriority
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- bge _080D4E40
- mov r1, sp
- ldrh r1, [r1, 0x4]
- strh r1, [r4, 0x32]
- b _080D4E42
- .align 2, 0
-_080D4E34: .4byte gSpriteTemplate_83D9420
-_080D4E38: .4byte gSprites
-_080D4E3C: .4byte gBattleAnimAttacker
-_080D4E40:
- strh r7, [r4, 0x32]
-_080D4E42:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _080D4DF2
- movs r6, 0
- ldr r3, [sp, 0xC]
- asrs r1, r3, 16
- ldr r0, [sp, 0x14]
- asrs r5, r0, 16
- negs r2, r5
- str r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- asrs r0, r3, 16
- subs r1, r0
- lsls r1, 16
- mov r10, r1
-_080D4E68:
- ldr r0, _080D4EAC @ =gSpriteTemplate_83D9420
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080D4EB0 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, _080D4EB4 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSubpriority
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- ble _080D4EB8
- mov r1, sp
- ldrh r1, [r1, 0x8]
- strh r1, [r4, 0x32]
- b _080D4EBA
- .align 2, 0
-_080D4EAC: .4byte gSpriteTemplate_83D9420
-_080D4EB0: .4byte gSprites
-_080D4EB4: .4byte gBattleAnimAttacker
-_080D4EB8:
- strh r7, [r4, 0x32]
-_080D4EBA:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _080D4E68
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D4D64
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 6f84c6df4..335780d75 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -6297,7 +6297,7 @@ Move_CRABHAMMER: @ 81D0159
end
Move_SURF: @ 81D0253
- createvisualtask sub_80D38BC, 2, 0
+ createvisualtask AnimTask_CreateSurfWave, 2, 0
delay 24
panse_1B SE_W057, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
waitforvisualfinish
@@ -8557,7 +8557,7 @@ _81D3750:
Move_MUDDY_WATER: @ 81D3764
panse_1B SE_W250, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
- createvisualtask sub_80D38BC, 2, 1
+ createvisualtask AnimTask_CreateSurfWave, 2, 1
waitforvisualfinish
end
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 5f5867423..595e38f31 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -47,7 +47,7 @@ void TranslateAnimLinearUntil(struct Sprite *sprite);
void sub_8078D44(struct Sprite *sprite);
void obj_id_set_rotscale(u8 sprite, s16, s16, u16);
bool8 sub_8078E38();
-void sub_8078E70(u8 sprite, u8);
+void PrepareBattlerSpriteForRotScale(u8 sprite, u8);
void sub_8078F40(u8 sprite);
void sub_8078F9C(u8 sprite);
void sub_8079518(struct Sprite *sprite);
diff --git a/include/task.h b/include/task.h
index a71577ee3..0306cc091 100644
--- a/include/task.h
+++ b/include/task.h
@@ -1,6 +1,8 @@
#ifndef GUARD_TASK_H
#define GUARD_TASK_H
+#define NUM_TASKS 16
+
// general task defines
#define TASK gTasks[taskId]
#define FUNC func
diff --git a/ld_script.txt b/ld_script.txt
index 52fc65c42..5369e6e23 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -268,7 +268,7 @@ SECTIONS {
src/battle/anim/aurora.o(.text);
src/battle/anim/energy_wave.o(.text);
src/battle/anim/water.o(.text);
- asm/water.o(.text);
+ src/water.o(.text);
src/battle/anim/fire.o(.text);
src/battle/anim/sunlight.o(.text);
src/battle/anim/fire_2.o(.text);
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index 53d7038cb..7ebd7dd87 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -355,7 +355,7 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
task->data[6] = 0;
- sub_8078E70(task->data[15], 0);
+ PrepareBattlerSpriteForRotScale(task->data[15], 0);
task->func = sub_80D54E0;
}
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index f67035ac7..6ff44ed15 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -349,7 +349,7 @@ void sub_80DDDF0(u8 taskId)
REG_BLDCNT = 0x3F40;
REG_BLDALPHA = 0x1000;
spriteId = GetAnimBattlerSpriteId(0);
- sub_8078E70(spriteId, 1);
+ PrepareBattlerSpriteForRotScale(spriteId, 1);
obj_id_set_rotscale(spriteId, 128, 128, 0);
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].data[0] = 128;
diff --git a/src/battle/anim/lunge.c b/src/battle/anim/lunge.c
index ce6aa58f4..381392e71 100644
--- a/src/battle/anim/lunge.c
+++ b/src/battle/anim/lunge.c
@@ -83,7 +83,7 @@ static void sub_80CD81C(struct Sprite* sprite)
if (sprite->data[0] == 0)
{
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
- sub_8078E70(sprite->data[3], 0);
+ PrepareBattlerSpriteForRotScale(sprite->data[3], 0);
sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00;
sprite->data[5] = 0;
}
@@ -166,7 +166,7 @@ static void sub_80CD9D4(struct Sprite* sprite)
sprite->data[3] = GetBattlerSide(gBattleAnimAttacker);
sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
sprite->data[5] = 0;
- sub_8078E70(sprite->data[2], 0);
+ PrepareBattlerSpriteForRotScale(sprite->data[2], 0);
sprite->data[0]++;
case 1:
sprite->data[5] += sprite->data[4];
@@ -247,7 +247,7 @@ void sub_80CDB60(u8 taskId)
task->data[3] = 8;
task->data[4] = 0;
task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
- sub_8078E70(task->data[0], 0);
+ PrepareBattlerSpriteForRotScale(task->data[0], 0);
task->data[2]++;
}
break;
diff --git a/src/battle/anim/shadow_enlarge.c b/src/battle/anim/shadow_enlarge.c
index ab975914a..3c69aae1c 100644
--- a/src/battle/anim/shadow_enlarge.c
+++ b/src/battle/anim/shadow_enlarge.c
@@ -16,7 +16,7 @@ static void sub_80D0428(u8 taskId);
void sub_80D03C4(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(1);
- sub_8078E70(spriteId, 1);
+ PrepareBattlerSpriteForRotScale(spriteId, 1);
obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0);
sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 0);
gTasks[taskId].data[0] = 0x50;
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c
index e65b4a193..a4589f096 100644
--- a/src/battle/anim/shadow_minimize.c
+++ b/src/battle/anim/shadow_minimize.c
@@ -20,7 +20,7 @@ void sub_80D0488(u8 taskId)
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
diff --git a/src/battle/anim/silhouette.c b/src/battle/anim/silhouette.c
index f61c0913b..34005d7be 100644
--- a/src/battle/anim/silhouette.c
+++ b/src/battle/anim/silhouette.c
@@ -22,7 +22,7 @@ void sub_80CB340(u8 taskId)
}
else
{
- sub_8078E70(spriteId, 1);
+ PrepareBattlerSpriteForRotScale(spriteId, 1);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[11] = 256;
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index 207e35083..b7074bceb 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -1,22 +1,48 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
+#include "random.h"
#include "rom_8077ABC.h"
+#include "sprite.h"
#include "trig.h"
#include "util.h"
+#include "constants/battle_anim.h"
+extern u8 gAnimVisualTaskCount;
extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
+extern u16 gBattlerPartyIndexes[];
+extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4D8;
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[];
extern const union AnimCmd *const gSpriteAnimTable_83D9BC8[];
+void PrepareBattlerSpriteForRotScale(u8, u8);
+void sub_8078F40(u8);
+void sub_8079A64(u8);
void sub_80D37FC(struct Sprite *sprite);
void sub_80D3838(struct Sprite *sprite);
void sub_80D4044(struct Sprite *sprite);
+void sub_80D40A8(struct Sprite *);
+void sub_80D4150(u8);
+u8 sub_80D4394(void);
+void sub_80D4418(struct Task *, u8);
void sub_80D452C(struct Sprite *sprite);
+void sub_80D463C(u8);
+void sub_80D472C(struct Task *, u8);
+void sub_80D47D0(struct Sprite *);
+void sub_80D487C(struct Sprite *);
+void sub_80D4988(u8);
+void sub_80D4AD0(struct Task *);
+void sub_80D4B3C(struct Sprite *);
+void sub_80D4BA4(struct Sprite *);
void sub_80D4BF0(struct Sprite *sprite);
+void sub_80D4C18(struct Sprite *);
+void sub_80D4CEC(struct Sprite *);
void sub_80D4C64(struct Sprite *sprite);
+void sub_80D4D64(struct Sprite*, int, int);
+void sub_80E1864(u8);
static void sub_80D3874(struct Sprite *sprite);
const union AnimCmd gSpriteAnim_83D9300[] =
@@ -232,7 +258,7 @@ static void sub_80D3874(struct Sprite *sprite)
}
NAKED
-void sub_80D38BC(u8 taskId)
+void AnimTask_CreateSurfWave(u8 taskId)
{
asm(".syntax unified\n\
.equ REG_BLDCNT, 0x4000050\n\
@@ -549,3 +575,1532 @@ _080D3B38:\n\
_080D3B5C: .4byte sub_80D3B60\n\
.syntax divided\n");
}
+
+#ifdef NONMATCHING
+void sub_80D3B60(u8 taskId)
+{
+ struct UnknownAnimStruct2 unk;
+ u8 i;
+ u16 rgbBuffer;
+ u16 *BGptrX = &gBattle_BG1_X;
+ u16 *BGptrY = &gBattle_BG1_Y;
+ s16 unkUse;
+ u32 palOffset;
+ u16 palNum;
+
+ *BGptrX += gTasks[taskId].data[0];
+ *BGptrY += gTasks[taskId].data[1];
+ sub_80A6B30(&unk);
+ gTasks[taskId].data[2] += gTasks[taskId].data[1];
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ rgbBuffer = gPlttBufferFaded[unk.unk8 * 16 + 7];
+ for (i = 6; i != 0; i--)
+ {
+ palNum = unk.unk8 * 16;
+ palOffset = 1 + i;
+ gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
+ }
+ gPlttBufferFaded[unk.unk8 * 16 + 1] = rgbBuffer;
+ gTasks[taskId].data[5] = 0;
+ }
+ if (++gTasks[taskId].data[6] > 1)
+ {
+ gTasks[taskId].data[6] = 0;
+ unkUse = ++gTasks[taskId].data[3];
+ if (unkUse <= 13)
+ {
+ gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[taskId].data[4]++;
+ }
+ if (gTasks[taskId].data[3] > 54)
+ {
+ unkUse = --gTasks[taskId].data[4];
+ gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ }
+ }
+ if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
+ {
+ gTasks[taskId].data[0] = gTasks[gTasks[taskId].data[15]].data[1] & 0x1F;
+ gTasks[taskId].func = sub_8107CC4;
+ }
+}
+#else
+NAKED
+void sub_80D3B60(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x18\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, =gTasks\n\
+ lsls r4, r7, 2\n\
+ adds r4, r7\n\
+ lsls r4, 3\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0x8]\n\
+ ldr r1, =gBattle_BG1_X\n\
+ ldrh r1, [r1]\n\
+ adds r0, r1\n\
+ ldr r2, =gBattle_BG1_X\n\
+ strh r0, [r2]\n\
+ ldrh r0, [r4, 0xA]\n\
+ ldr r3, =gBattle_BG1_Y\n\
+ ldrh r3, [r3]\n\
+ adds r0, r3\n\
+ ldr r1, =gBattle_BG1_Y\n\
+ strh r0, [r1]\n\
+ add r5, sp, 0x4\n\
+ adds r0, r5, 0\n\
+ bl sub_8078914\n\
+ ldrh r0, [r4, 0xA]\n\
+ ldrh r2, [r4, 0xC]\n\
+ adds r0, r2\n\
+ strh r0, [r4, 0xC]\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ mov r10, r5\n\
+ cmp r0, 0x4\n\
+ bne _080D3C02\n\
+ ldr r1, =gPlttBufferFaded\n\
+ ldrb r0, [r5, 0x8]\n\
+ lsls r0, 4\n\
+ adds r0, 0x7\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r6, [r0]\n\
+ movs r2, 0x6\n\
+ adds r5, r1, 0\n\
+ adds r3, r5, 0\n\
+ mov r4, r10\n\
+_080D3BC8:\n\
+ ldrb r0, [r4, 0x8]\n\
+ lsls r0, 4\n\
+ adds r1, r2, 0x1\n\
+ adds r0, r1\n\
+ lsls r1, r0, 1\n\
+ adds r1, r3\n\
+ subs r0, 0x1\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ subs r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0\n\
+ bne _080D3BC8\n\
+ mov r3, r10\n\
+ ldrb r0, [r3, 0x8]\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ lsls r0, 1\n\
+ adds r0, r5\n\
+ strh r6, [r0]\n\
+ ldr r1, =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r2, [r0, 0x12]\n\
+_080D3C02:\n\
+ ldr r1, =gTasks\n\
+ lsls r2, r7, 2\n\
+ adds r0, r2, r7\n\
+ lsls r0, 3\n\
+ adds r3, r0, r1\n\
+ ldrh r0, [r3, 0x14]\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x14]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ adds r4, r1, 0\n\
+ str r2, [sp, 0x14]\n\
+ cmp r0, 0x1\n\
+ ble _080D3C70\n\
+ movs r0, 0\n\
+ strh r0, [r3, 0x14]\n\
+ ldrh r0, [r3, 0xE]\n\
+ adds r2, r0, 0x1\n\
+ strh r2, [r3, 0xE]\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xD\n\
+ bgt _080D3C4C\n\
+ movs r1, 0x26\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r4\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ strh r2, [r1, 0xA]\n\
+ ldrh r0, [r3, 0x10]\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x10]\n\
+_080D3C4C:\n\
+ movs r2, 0xE\n\
+ ldrsh r0, [r3, r2]\n\
+ cmp r0, 0x36\n\
+ ble _080D3C70\n\
+ ldrh r2, [r3, 0x10]\n\
+ subs r2, 0x1\n\
+ strh r2, [r3, 0x10]\n\
+ movs r1, 0x26\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r4\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ strh r2, [r1, 0xA]\n\
+_080D3C70:\n\
+ ldr r2, [sp, 0x14]\n\
+ adds r0, r2, r7\n\
+ lsls r0, 3\n\
+ adds r0, r4\n\
+ movs r3, 0x26\n\
+ ldrsh r1, [r0, r3]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r4\n\
+ ldrh r1, [r0, 0xA]\n\
+ movs r0, 0x1F\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080D3D32\n\
+ ldr r2, [sp, 0x4]\n\
+ movs r3, 0x80\n\
+ lsls r3, 6\n\
+ add r6, sp, 0x10\n\
+ movs r5, 0\n\
+ ldr r1, =0x040000d4\n\
+ movs r4, 0x80\n\
+ lsls r4, 5\n\
+ mov r8, r6\n\
+ ldr r0, =0x85000400\n\
+ mov r12, r0\n\
+ movs r0, 0x85\n\
+ lsls r0, 24\n\
+ mov r9, r0\n\
+_080D3CAA:\n\
+ str r5, [sp, 0x10]\n\
+ mov r0, r8\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ mov r0, r12\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r4\n\
+ subs r3, r4\n\
+ cmp r3, r4\n\
+ bhi _080D3CAA\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\
+ mov r0, sp\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ strb r1, [r0]\n\
+ mov r3, r10\n\
+ ldr r1, [r3, 0x4]\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x10]\n\
+ ldr r0, =0x040000d4\n\
+ str r6, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, =0x85000400\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080D3D02\n\
+ ldr r2, =0x0400000a\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+_080D3D02:\n\
+ ldr r0,=gBattle_BG1_X\n\
+ strh r4, [r0]\n\
+ ldr r1, =gBattle_BG1_Y\n\
+ strh r4, [r1]\n\
+ ldr r0, =0x04000050\n\
+ strh r4, [r0]\n\
+ adds r0, 0x2\n\
+ strh r4, [r0]\n\
+ ldr r2, =gTasks\n\
+ ldr r3, [sp, 0x14]\n\
+ adds r0, r3, r7\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ movs r3, 0x26\n\
+ ldrsh r1, [r0, r3]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ ldr r1, =0x0000ffff\n\
+ strh r1, [r0, 0x26]\n\
+ adds r0, r7, 0\n\
+ bl DestroyAnimVisualTask\n\
+_080D3D32:\n\
+ add sp, 0x18\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\
+ .pool");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_80D3D68(u8 taskId)
+{
+ s16 i;
+ struct ScanlineEffectParams params;
+ struct Task *task = &gTasks[taskId];
+ // u16 *scanlineBuffer;
+
+ switch (task->data[0])
+ {
+ case 0:
+ for (i = 0; i < task->data[4]; i++)
+ {
+ /* scanlineBuffer = &gScanlineEffectRegBuffers[0][i];
+ *(u16 *)(&gScanlineEffect) = task->data[2];
+ *scanlineBuffer = task->data[2] & -1; */
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[1];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[1] & 0xFFFF));
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
+ }
+ if (task->data[4] == 0)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[1];
+ gScanlineEffectRegBuffers[0][i] = task->data[1];
+ }
+ else
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ }
+ params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[3] == 0)
+ {
+ if (--task->data[4] <= 0)
+ {
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ }
+ else if (++task->data[5] > 111)
+ {
+ task->data[0]++;
+ }
+ for (i = 0; i < task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ break;
+ case 2:
+ for (i = 0; i < task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ if (task->data[15] == -1)
+ {
+ ScanlineEffect_Stop();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+#else
+NAKED
+void sub_80D3D68(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ ldr r1, =gTasks\n\
+ adds r4, r0, r1\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x1\n\
+ bne _080D3D84\n\
+ b _080D3EBC\n\
+_080D3D84:\n\
+ cmp r0, 0x1\n\
+ bgt _080D3D94\n\
+ cmp r0, 0\n\
+ beq _080D3D9C\n\
+ b _080D4032\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D3D94:\n\
+ cmp r0, 0x2\n\
+ bne _080D3D9A\n\
+ b _080D3F88\n\
+_080D3D9A:\n\
+ b _080D4032\n\
+_080D3D9C:\n\
+ movs r3, 0\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ ldr r1, =gScanlineEffectRegBuffers\n\
+ mov r12, r1\n\
+ cmp r3, r0\n\
+ bge _080D3DDA\n\
+ mov r7, r12\n\
+ movs r5, 0xF0\n\
+ lsls r5, 3\n\
+ add r5, r12\n\
+ ldr r6, =0x0000ffff\n\
+_080D3DB4:\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r7\n\
+ adds r1, r5\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xC]\n\
+ adds r0, r6, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ asrs r2, 16\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r2, r0\n\
+ blt _080D3DB4\n\
+_080D3DDA:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _080D3E14\n\
+ ldr r5, =gScanlineEffectRegBuffers\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r6, r5, r0\n\
+ ldr r7, =0x0000ffff\n\
+_080D3DF2:\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r5\n\
+ adds r1, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xA]\n\
+ adds r0, r7, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _080D3DF2\n\
+_080D3E14:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _080D3E4A\n\
+ ldr r5, =gScanlineEffectRegBuffers\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r6, r5, r0\n\
+ ldr r7, =0x0000ffff\n\
+_080D3E28:\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r5\n\
+ adds r1, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xC]\n\
+ adds r0, r7, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, 0x9F\n\
+ ble _080D3E28\n\
+_080D3E4A:\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ bne _080D3E74\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 15\n\
+ mov r3, r12\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xF0\n\
+ lsls r1, 3\n\
+ add r1, r12\n\
+ adds r0, r1\n\
+ ldrh r1, [r4, 0xA]\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r4, 0xA]\n\
+ b _080D3E8A\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D3E74:\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 15\n\
+ mov r1, r12\n\
+ adds r2, r0, r1\n\
+ movs r1, 0xF0\n\
+ lsls r1, 3\n\
+ add r1, r12\n\
+ adds r0, r1\n\
+ ldrh r1, [r4, 0xC]\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r4, 0xC]\n\
+_080D3E8A:\n\
+ strh r0, [r2]\n\
+ ldr r0, =0x04000052\n\
+ str r0, [sp]\n\
+ ldr r0, =0xa2600001\n\
+ str r0, [sp, 0x4]\n\
+ mov r1, sp\n\
+ movs r2, 0\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x8]\n\
+ mov r0, sp\n\
+ strb r2, [r0, 0x9]\n\
+ ldr r0, [sp]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldr r2, [sp, 0x8]\n\
+ bl ScanlineEffect_SetParams\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _080D4032\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D3EBC:\n\
+ movs r2, 0xE\n\
+ ldrsh r1, [r4, r2]\n\
+ cmp r1, 0\n\
+ bne _080D3ED4\n\
+ ldrh r0, [r4, 0x10]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4, 0x10]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _080D3EE8\n\
+ strh r1, [r4, 0x10]\n\
+ b _080D3EE2\n\
+_080D3ED4:\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x6F\n\
+ ble _080D3EE8\n\
+_080D3EE2:\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+_080D3EE8:\n\
+ movs r3, 0\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r3, r0\n\
+ bge _080D3F1C\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3EF6:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r3, r1, 1\n\
+ ldrb r2, [r5, 0x14]\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ adds r3, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r3]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ blt _080D3EF6\n\
+_080D3F1C:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _080D3F50\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3F2E:\n\
+ asrs r3, r2, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _080D3F2E\n\
+_080D3F50:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _080D4032\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3F5E:\n\
+ asrs r3, r1, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ ble _080D3F5E\n\
+ b _080D4032\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D3F88:\n\
+ movs r3, 0\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r3, r0\n\
+ bge _080D3FBC\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3F96:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r3, r1, 1\n\
+ ldrb r2, [r5, 0x14]\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ adds r3, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r3]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ blt _080D3F96\n\
+_080D3FBC:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _080D3FF0\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3FCE:\n\
+ asrs r3, r2, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _080D3FCE\n\
+_080D3FF0:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _080D401C\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_080D3FFE:\n\
+ asrs r3, r1, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ ble _080D3FFE\n\
+_080D401C:\n\
+ movs r0, 0x26\n\
+ ldrsh r1, [r4, r0]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r1, r0\n\
+ bne _080D4032\n\
+ bl ScanlineEffect_Stop\n\
+ adds r0, r7, 0\n\
+ bl DestroyTask\n\
+_080D4032:\n\
+ add sp, 0xC\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+ .pool\n");
+}
+#endif
+
+void sub_80D4044(struct Sprite *sprite)
+{
+ s16 randData;
+ s16 randData2;
+
+ sprite->oam.tileNum += 8;
+ sub_8078764(sprite, TRUE);
+ randData = (Random() & 0xFF) | 256;
+ randData2 = (Random() & 0x1FF);
+ if (randData2 > 255)
+ randData2 = 256 - randData2;
+ sprite->data[1] = randData;
+ sprite->data[2] = randData2;
+ sprite->callback = sub_80D40A8;
+}
+
+void sub_80D40A8(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ if (sprite->data[1] & 1)
+ sprite->pos2.x = -(sprite->data[3] >> 8);
+ else
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ if (++sprite->data[0] == 21)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D40F4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
+ task->data[5] = gSprites[task->data[15]].pos1.y;
+ task->data[1] = sub_80D4394();
+ PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
+ task->func = sub_80D4150;
+}
+
+void sub_80D4150(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8079C08(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
+ task->data[0]++;
+ case 1:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
+ {
+ gSprites[task->data[15]].pos2.x = 3;
+ gSprites[task->data[15]].pos1.y++;
+ }
+ else
+ {
+ gSprites[task->data[15]].pos2.x = -3;
+ }
+ }
+ if (sub_8079C74(task) == 0)
+ {
+ sub_8079A64(task->data[15]);
+ gSprites[task->data[15]].pos2.x = 0;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[3] > 4)
+ {
+ sub_8079C08(task, task->data[15], 224, 0x200, 384, 224, 8);
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (sub_8079C74(task) == 0)
+ {
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ sub_80D4418(task, taskId);
+ task->data[0]++;
+ case 5:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
+ gSprites[task->data[15]].pos2.y += 2;
+ else
+ gSprites[task->data[15]].pos2.y -= 2;
+ if (task->data[4] == 10)
+ {
+ sub_8079C08(task, task->data[15], 384, 224, 0x100, 0x100, 8);
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 6:
+ gSprites[task->data[15]].pos1.y--;
+ if (sub_8079C74(task) == 0)
+ {
+ sub_8078F40(task->data[15]);
+ gSprites[task->data[15]].pos1.y = task->data[5];
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 7:
+ if (task->data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+u8 sub_80D4394(void)
+{
+ u8 i;
+ u16 hp;
+ u16 maxhp;
+ u16 partyIndex;
+ struct Pokemon *slot;
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ partyIndex = gBattlerPartyIndexes[gBattleAnimAttacker];
+ slot = &gPlayerParty[partyIndex];
+ maxhp = GetMonData(slot, MON_DATA_MAX_HP);
+ hp = GetMonData(slot, MON_DATA_HP);
+ maxhp /= 4;
+ }
+ else
+ {
+ partyIndex = gBattlerPartyIndexes[gBattleAnimAttacker];
+ slot = &gEnemyParty[partyIndex];
+ maxhp = GetMonData(slot, MON_DATA_MAX_HP);
+ hp = GetMonData(slot, MON_DATA_HP);
+ maxhp /= 4;
+ }
+ for (i = 0; i < 3; i++)
+ {
+ if (hp < maxhp * (i + 1))
+ return i;
+ }
+ return 3;
+}
+
+void sub_80D4418(struct Task *task, u8 taskId)
+{
+ s16 i;
+ s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ s16 trigIndex = 172;
+ u8 subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
+ s16 increment = 4 - task->data[1];
+ u8 spriteId;
+
+ if (increment <= 0)
+ increment = 1;
+ for (i = 0; i < 20; i += increment)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83D9378, attackerCoordX, attackerCoordY, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[1] = i;
+ gSprites[spriteId].data[2] = attackerCoordX * 16;
+ gSprites[spriteId].data[3] = attackerCoordY * 16;
+ gSprites[spriteId].data[4] = Cos(trigIndex, 64);
+ gSprites[spriteId].data[5] = Sin(trigIndex, 64);
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 2;
+ if (task->data[2] & 1)
+ sub_80D452C(&gSprites[spriteId]);
+ task->data[2]++;
+ }
+ trigIndex = (trigIndex + increment * 2);
+ trigIndex &= 0xFF;
+ }
+}
+
+void sub_80D452C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[4] += (sprite->data[1] % 6) * 3;
+ sprite->data[5] += (sprite->data[1] % 3) * 3;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[2] += sprite->data[4];
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80D45D8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[1] = sub_80D4394();
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ task->data[4] = 136;
+ task->data[6] = 40;
+ }
+ else
+ {
+ task->data[4] = 16;
+ task->data[6] = 80;
+ }
+ task->data[5] = 98;
+ task->data[7] = task->data[4] + 49;
+ task->data[12] = task->data[1] * 5 + 5;
+ task->func = sub_80D463C;
+}
+
+void sub_80D463C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 taskId2;
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[2] > 2)
+ {
+ task->data[2] = 0;
+ sub_80D472C(task, taskId);
+ }
+ if (task->data[10] != 0 && task->data[13] == 0)
+ {
+ gBattleAnimArgs[0] = 1;
+ gBattleAnimArgs[1] = 0;
+ gBattleAnimArgs[2] = 12;
+ taskId2 = CreateTask(sub_80E1864, 80);
+ if (taskId2 != 0xFF)
+ {
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
+ }
+ gBattleAnimArgs[0] = 3;
+ taskId2 = CreateTask(sub_80E1864, 80);
+ if (taskId2 != 0xFF)
+ {
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
+ }
+ task->data[13] = 1;
+ }
+ if (task->data[11] >= task->data[12])
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[9] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80D472C(struct Task *task, u8 taskId)
+{
+ u16 yPosArg = ((gSineTable[task->data[8]] + 3) >> 4) + task->data[6];
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83D9378, task->data[7], 0, 0);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].callback = sub_80D47D0;
+ gSprites[spriteId].data[5] = yPosArg;
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 9;
+ task->data[9]++;
+ }
+ task->data[11]++;
+ task->data[8] = (task->data[8] + 39) & 0xFF;
+ task->data[7] = ((task->data[7] * 0x41c64e6d + 0x3039) % task->data[5]) + task->data[4];
+}
+
+void sub_80D47D0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= sprite->data[5])
+ {
+ gTasks[sprite->data[6]].data[10] = 1;
+ sprite->data[1] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4D8, sprite->pos1.x, sprite->pos1.y, 1);
+ if (sprite->data[1] != MAX_SPRITES)
+ {
+ StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
+ gSprites[sprite->data[1]].data[6] = sprite->data[6];
+ gSprites[sprite->data[1]].data[7] = sprite->data[7];
+ gSprites[sprite->data[1]].callback = sub_80D487C;
+ }
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_80D487C(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] == 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_80D48F4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1;
+ if (IsContest())
+ task->data[7] *= -1;
+ task->data[5] = task->data[3] + task->data[7] * 8;
+ task->data[6] = task->data[4] - task->data[7] * 8;
+ task->data[9] = -32;
+ task->data[1] = 0;
+ task->data[0] = 0;
+ task->func = sub_80D4988;
+}
+
+void sub_80D4988(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80D4AD0(task);
+ if (task->data[10] != 0)
+ task->data[0]++;
+ break;
+ case 1:
+ sub_80D4AD0(task);
+ if (++task->data[1] > 16)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ sub_80D4AD0(task);
+ task->data[5] += task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ if (++task->data[12] > 2)
+ {
+ task->data[13] = 1;
+ task->data[0] = 6;
+ task->data[1] = 0;
+ }
+ else
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ sub_80D4AD0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0]++;
+ break;
+ case 4:
+ sub_80D4AD0(task);
+ task->data[5] -= task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ task->data[12]++;
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ sub_80D4AD0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0] = 2;
+ break;
+ case 6:
+ if (task->data[8] == 0)
+ task->data[0]++;
+ break;
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80D4AD0(struct Task *task)
+{
+ u8 spriteId;
+
+ if (++task->data[2] > 1)
+ {
+ task->data[2] = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83D9378, task->data[3], task->data[4], 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[2] = task->data[5];
+ gSprites[spriteId].data[4] = task->data[6];
+ gSprites[spriteId].data[5] = task->data[9];
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ gSprites[spriteId].callback = sub_80D4B3C;
+ task->data[8]++;
+ }
+ }
+}
+
+void sub_80D4B3C(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->data[0] = 6;
+ sprite->data[2] = (Random() & 0x1F) - 16 + sprite->pos1.x;
+ sprite->data[4] = (Random() & 0x1F) - 16 + sprite->pos1.y;
+ sprite->data[5] = ~(Random() & 7);
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_80D4BA4;
+ }
+}
+
+void sub_80D4BA4(struct Sprite *sprite)
+{
+ u16 i;
+
+ if (TranslateAnimArc(sprite))
+ {
+ for (i = 0; i < NUM_TASKS; i++)
+ {
+ if (gTasks[i].func == sub_80D4988)
+ {
+ gTasks[i].data[10] = 1;
+ gTasks[i].data[8]--;
+ DestroySprite(sprite);
+ }
+ }
+ }
+}
+
+void sub_80D4BF0(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->callback = sub_80D4C18;
+}
+
+void sub_80D4C18(struct Sprite *sprite)
+{
+ sprite->data[4] -= sprite->data[0];
+ sprite->pos2.y = sprite->data[4] / 10;
+ sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
+ if (--sprite->data[3] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D4C64(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 7;
+ sprite->pos2.y = sprite->data[4] >> 7;
+ if (--sprite->data[0] == 0)
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80D4CA4(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, TRUE);
+ sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->callback = sub_80D4CEC;
+}
+
+void sub_80D4CEC(struct Sprite *sprite)
+{
+ int xDiff = sprite->data[1] - sprite->pos1.x;
+ int yDiff = sprite->data[2] - sprite->pos1.y;
+
+ sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
+ sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
+ if (++sprite->data[5] == sprite->data[4])
+ {
+ sprite->data[5] = 0;
+ sub_80D4D64(sprite, xDiff, yDiff);
+ }
+ if (sprite->data[3] == sprite->data[0])
+ DestroyAnimSprite(sprite);
+ sprite->data[0]++;
+}
+
+#ifdef NONMATCHING
+void sub_80D4D64(struct Sprite *sprite, int xDiff, int yDiff)
+{
+ s16 something = sprite->data[0] / 2;
+ s16 combinedX = sprite->pos1.x + sprite->pos2.x;
+ s16 combinedY = sprite->pos1.y + sprite->pos2.y;
+ s16 randomSomethingY = yDiff + (Random2() % 10) - 5;
+ s16 randomSomethingX = -xDiff + (Random2() % 10) - 5;
+ s16 i;
+ u8 spriteId;
+
+ for (i = 0; i <= 0; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY + something, 130);
+ gSprites[spriteId].data[0] = 20;
+ gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
+ if (randomSomethingX < 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
+ else
+ gSprites[spriteId].data[2] = randomSomethingX;
+ }
+ for (i = 0; i <= 0; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY - something, 130);
+ gSprites[spriteId].data[0] = 20;
+ gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
+ if (randomSomethingX > 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
+ else
+ gSprites[spriteId].data[2] = randomSomethingX;
+ }
+}
+#else
+NAKED
+void sub_80D4D64(struct Sprite *sprite, int xDiff, int yDiff)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x18\n\
+ adds r4, r1, 0\n\
+ adds r5, r2, 0\n\
+ movs r2, 0x2E\n\
+ ldrsh r1, [r0, r2]\n\
+ lsrs r2, r1, 31\n\
+ adds r1, r2\n\
+ lsls r1, 15\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ ldrh r1, [r0, 0x24]\n\
+ ldrh r3, [r0, 0x20]\n\
+ adds r1, r3\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r8, r1\n\
+ ldrh r1, [r0, 0x26]\n\
+ ldrh r0, [r0, 0x22]\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, r5, r0\n\
+ subs r0, 0x5\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ bl Random\n\
+ negs r4, r4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r4, r0\n\
+ subs r4, 0x5\n\
+ lsls r4, 16\n\
+ lsrs r7, r4, 16\n\
+ movs r6, 0\n\
+ mov r0, r8\n\
+ lsls r0, 16\n\
+ mov r8, r0\n\
+ mov r1, r10\n\
+ lsls r1, 16\n\
+ str r1, [sp, 0xC]\n\
+ ldr r2, [sp]\n\
+ lsls r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ asrs r1, 16\n\
+ lsls r0, r7, 16\n\
+ asrs r5, r0, 16\n\
+ str r0, [sp, 0x14]\n\
+ negs r3, r5\n\
+ str r3, [sp, 0x4]\n\
+ asrs r0, r2, 16\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+_080D4DF2:\n\
+ ldr r0, =gSpriteTemplate_83D9420\n\
+ mov r2, r8\n\
+ asrs r1, r2, 16\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0x82\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r4, r0, r1\n\
+ movs r0, 0x14\n\
+ strh r0, [r4, 0x2E]\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSubpriority\n\
+ subs r0, 0x1\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x43\n\
+ strb r0, [r1]\n\
+ cmp r5, 0\n\
+ bge _080D4E40\n\
+ mov r1, sp\n\
+ ldrh r1, [r1, 0x4]\n\
+ strh r1, [r4, 0x32]\n\
+ b _080D4E42\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D4E40:\n\
+ strh r7, [r4, 0x32]\n\
+_080D4E42:\n\
+ lsls r0, r6, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ lsrs r6, r0, 16\n\
+ cmp r0, 0\n\
+ ble _080D4DF2\n\
+ movs r6, 0\n\
+ ldr r3, [sp, 0xC]\n\
+ asrs r1, r3, 16\n\
+ ldr r0, [sp, 0x14]\n\
+ asrs r5, r0, 16\n\
+ negs r2, r5\n\
+ str r2, [sp, 0x8]\n\
+ ldr r3, [sp, 0x10]\n\
+ asrs r0, r3, 16\n\
+ subs r1, r0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+_080D4E68:\n\
+ ldr r0, =gSpriteTemplate_83D9420\n\
+ mov r2, r8\n\
+ asrs r1, r2, 16\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0x82\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r4, r0, r1\n\
+ movs r0, 0x14\n\
+ strh r0, [r4, 0x2E]\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSubpriority\n\
+ subs r0, 0x1\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x43\n\
+ strb r0, [r1]\n\
+ cmp r5, 0\n\
+ ble _080D4EB8\n\
+ mov r1, sp\n\
+ ldrh r1, [r1, 0x8]\n\
+ strh r1, [r4, 0x32]\n\
+ b _080D4EBA\n\
+ .align 2, 0\n\
+ .pool\n\
+_080D4EB8:\n\
+ strh r7, [r4, 0x32]\n\
+_080D4EBA:\n\
+ lsls r0, r6, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ lsrs r6, r0, 16\n\
+ cmp r0, 0\n\
+ ble _080D4E68\n\
+ add sp, 0x18\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");
+}
+#endif
diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c
index a1de45d15..f5babd361 100644
--- a/src/battle/anim/withdraw.c
+++ b/src/battle/anim/withdraw.c
@@ -17,7 +17,7 @@ static void sub_80CF514(u8 taskId);
void sub_80CF4D8(u8 taskId)
{
- sub_8078E70(gBankSpriteIds[gBattleAnimAttacker], 0);
+ PrepareBattlerSpriteForRotScale(gBankSpriteIds[gBattleAnimAttacker], 0);
gTasks[taskId].func = sub_80CF514;
}
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index 7b3e197d7..5e713a3a7 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -847,7 +847,7 @@ void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
- sub_8078E70(spriteId, gBattleAnimArgs[4]);
+ PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
TASK.data[0] = gBattleAnimArgs[0];
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
@@ -887,7 +887,7 @@ void sub_80A8E04(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[0];
if (gBattleAnimArgs[3] != 1)
@@ -931,7 +931,7 @@ void sub_80A8EFC(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[0];
if (gBattleAnimArgs[2] == 0)
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index bae4eef1d..4a5533dce 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -2070,7 +2070,7 @@ static void sub_812D3AC(struct Sprite *sprite)
case 0:
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
sprite->data[1] = 256;
sprite->data[2] = 256;
sprite->data[0]++;
@@ -2753,7 +2753,7 @@ void sub_812E568(u8 taskId)
task->data[5] *= -1;
}
- sub_8078E70(task->data[15], 0);
+ PrepareBattlerSpriteForRotScale(task->data[15], 0);
task->func = sub_812E638;
}
@@ -2867,7 +2867,7 @@ void sub_812E860(u8 taskId)
task->data[14] = 0x800;
task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_8078E70(task->data[15], 0);
+ PrepareBattlerSpriteForRotScale(task->data[15], 0);
task->func = sub_812E8B4;
}
@@ -2989,7 +2989,7 @@ void sub_812EB10(u8 taskId)
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
gTasks[taskId].data[10] = spriteId;
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
switch (gBattleAnimArgs[1])
{
@@ -4945,7 +4945,7 @@ void sub_81312E4(u8 taskId)
if (gTasks[taskId].data[0] == 0)
{
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[1] = 0x100;
gTasks[taskId].data[2] = 0x100;
gTasks[taskId].data[0]++;
diff --git a/src/battle/battle_anim_813F0F4.c b/src/battle/battle_anim_813F0F4.c
index ed3e6d642..9ea0585d1 100755
--- a/src/battle/battle_anim_813F0F4.c
+++ b/src/battle/battle_anim_813F0F4.c
@@ -569,7 +569,7 @@ void sub_813F798(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[10] = 0x100;
gTasks[taskId].data[0]++;
break;
@@ -829,7 +829,7 @@ static void sub_813FEC8(struct Sprite *sprite)
switch (gTasks[taskId].data[0])
{
case 0:
- sub_8078E70(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[10] = 256;
gUnknown_03005F0C = 28;
gUnknown_03005F14 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 31bf4612d..1f73b64b1 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -1159,7 +1159,7 @@ bool8 sub_8078E38()
return FALSE;
}
-void sub_8078E70(u8 sprite, u8 objMode)
+void PrepareBattlerSpriteForRotScale(u8 sprite, u8 objMode)
{
u8 r7 = gSprites[sprite].data[0];
@@ -1647,7 +1647,7 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3)
task->data[11] = 0x100;
task->data[12] = 0;
sub_8079BF4(&task->data[13], &task->data[14], a3);
- sub_8078E70(a2, 0);
+ PrepareBattlerSpriteForRotScale(a2, 0);
}
bool8 sub_807992C(struct Task *task)