summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU-Maria-PC\Maria <throwawaygolem@gmail.com>2017-08-12 21:34:54 -0400
committerU-Maria-PC\Maria <throwawaygolem@gmail.com>2017-08-12 21:34:54 -0400
commitdc0ca156582f6195b09cef9475aa9e491546c290 (patch)
tree1cebc43dc71725195f2d2cd47fdad6b813f50b6d
parentdcc56003d063500b867cce0e76d7723cc64b0187 (diff)
decompiled up to sub_80CCD24
-rw-r--r--asm/battle_anim_80CA710.s1251
-rwxr-xr-xsrc/battle_anim_80CA710.c542
2 files changed, 542 insertions, 1251 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s
index ebfb4f120..bc41f1d34 100644
--- a/asm/battle_anim_80CA710.s
+++ b/asm/battle_anim_80CA710.s
@@ -6,1257 +6,6 @@
.text
- thumb_func_start sub_80CC474
-sub_80CC474: @ 80CC474
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080CC488 @ =gBattleAnimArgs
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080CC490
- ldr r0, _080CC48C @ =gBattleAnimPlayerMonIndex
- b _080CC492
- .align 2, 0
-_080CC488: .4byte gBattleAnimArgs
-_080CC48C: .4byte gBattleAnimPlayerMonIndex
-_080CC490:
- ldr r0, _080CC4B0 @ =gBattleAnimEnemyMonIndex
-_080CC492:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080CC4BC
- movs r0, 0
- strh r0, [r4, 0x36]
- ldr r1, _080CC4B4 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x32]
- ldr r0, _080CC4B8 @ =0x0000fff0
- b _080CC4CC
- .align 2, 0
-_080CC4B0: .4byte gBattleAnimEnemyMonIndex
-_080CC4B4: .4byte gBattleAnimArgs
-_080CC4B8: .4byte 0x0000fff0
-_080CC4BC:
- movs r0, 0x1
- strh r0, [r4, 0x36]
- ldr r1, _080CC4F0 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r4, 0x32]
- movs r0, 0x80
- lsls r0, 1
-_080CC4CC:
- strh r0, [r4, 0x20]
- adds r7, r1, 0
- adds r5, r7, 0
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x34]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080CC502
- cmp r0, 0x1
- bgt _080CC4F4
- cmp r0, 0
- beq _080CC4FE
- b _080CC56C
- .align 2, 0
-_080CC4F0: .4byte gBattleAnimArgs
-_080CC4F4:
- cmp r0, 0x2
- beq _080CC508
- cmp r0, 0x3
- beq _080CC534
- b _080CC56C
-_080CC4FE:
- ldrh r0, [r5]
- b _080CC518
-_080CC502:
- ldrh r0, [r5]
- strh r0, [r4, 0x22]
- b _080CC54E
-_080CC508:
- adds r0, r6, 0
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5]
- adds r0, r5
-_080CC518:
- strh r0, [r4, 0x22]
- adds r0, r6, 0
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080CC56C
-_080CC534:
- ldr r0, _080CC578 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- ldrh r7, [r7]
- adds r0, r7
- strh r0, [r4, 0x22]
- movs r0, 0x1
- bl obj_id_for_side_relative_to_move
-_080CC54E:
- adds r0, r6, 0
- bl sub_8079ED4
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
-_080CC56C:
- ldr r0, _080CC57C @ =sub_80CC580
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC578: .4byte gBattleAnimEnemyMonIndex
-_080CC57C: .4byte sub_80CC580
- thumb_func_end sub_80CC474
-
- thumb_func_start sub_80CC580
-sub_80CC580: @ 80CC580
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x3C
- ldrsh r3, [r4, r0]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- ldr r1, _080CC5D4 @ =gSineTable
- movs r5, 0x2E
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r2
- asrs r0, 8
- strh r0, [r4, 0x26]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- muls r0, r3
- strh r0, [r4, 0x24]
- movs r5, 0x34
- ldrsh r0, [r4, r5]
- muls r0, r3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080CC5D8
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- movs r5, 0x20
- ldrsh r1, [r4, r5]
- adds r0, r1
- cmp r0, 0xF7
- ble _080CC5F0
- b _080CC5EA
- .align 2, 0
-_080CC5D4: .4byte gSineTable
-_080CC5D8:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bgt _080CC5F0
-_080CC5EA:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080CC5F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80CC580
-
- thumb_func_start sub_80CC5F8
-sub_80CC5F8: @ 80CC5F8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080CC618 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080CC61C
- cmp r0, 0x1
- beq _080CC650
- b _080CC6AA
- .align 2, 0
-_080CC618: .4byte gTasks
-_080CC61C:
- ldr r0, _080CC648 @ =0x0000274f
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2, 0
- adds r0, r4
- strh r0, [r5, 0x18]
- ldr r0, _080CC64C @ =0x000027b0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080CC6AA
- .align 2, 0
-_080CC648: .4byte 0x0000274f
-_080CC64C: .4byte 0x000027b0
-_080CC650:
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r5, 0x1A]
- lsls r0, 16
- cmp r0, 0
- blt _080CC6AA
- strh r7, [r5, 0x1A]
- ldrh r0, [r5, 0x18]
- ldrb r2, [r5, 0x1C]
- ldr r4, _080CC6C4 @ =gUnknown_083D6984
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x20]
- ldrb r2, [r5, 0x1C]
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- bne _080CC6AA
- strh r7, [r5, 0x1C]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bne _080CC6AA
- strh r7, [r5, 0x1E]
-_080CC6AA:
- ldr r0, _080CC6C8 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080CC6BE
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080CC6BE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC6C4: .4byte gUnknown_083D6984
-_080CC6C8: .4byte gBattleAnimArgs
- thumb_func_end sub_80CC5F8
-
- thumb_func_start sub_80CC6CC
-sub_80CC6CC: @ 80CC6CC
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, _080CC6E4 @ =gBattleAnimArgs
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080CC6E8
- adds r0, r6, 0
- bl move_anim_8072740
- b _080CC7C2
- .align 2, 0
-_080CC6E4: .4byte gBattleAnimArgs
-_080CC6E8:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080CC6F8
- ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex
- b _080CC6FA
- .align 2, 0
-_080CC6F4: .4byte gBattleAnimPlayerMonIndex
-_080CC6F8:
- ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex
-_080CC6FA:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080CC738 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x8]
- strh r1, [r6, 0x2E]
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- adds r7, r0, 0
- cmp r1, 0
- bne _080CC73C
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x20]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x38]
- strh r2, [r6, 0x3A]
- b _080CC74C
- .align 2, 0
-_080CC734: .4byte gBattleAnimEnemyMonIndex
-_080CC738: .4byte gBattleAnimArgs
-_080CC73C:
- strh r5, [r6, 0x20]
- strh r2, [r6, 0x22]
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x38]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x3A]
-_080CC74C:
- ldrh r4, [r6, 0x20]
- lsls r0, r4, 4
- strh r0, [r6, 0x30]
- ldrh r5, [r6, 0x22]
- lsls r0, r5, 4
- strh r0, [r6, 0x32]
- movs r1, 0x38
- ldrsh r0, [r6, r1]
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x34]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x22
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x38]
- subs r0, r4
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r6, 0x3A]
- subs r1, r5
- lsls r1, 16
- asrs r1, 16
- bl sub_80790F0
- lsls r0, 16
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080CC7AE
- ldr r1, _080CC7CC @ =0xffff8000
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_080CC7AE:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8078FDC
- ldr r0, _080CC7D0 @ =sub_80CC7D4
- str r0, [r6, 0x1C]
-_080CC7C2:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC7CC: .4byte 0xffff8000
-_080CC7D0: .4byte sub_80CC7D4
- thumb_func_end sub_80CC6CC
-
- thumb_func_start sub_80CC7D4
-sub_80CC7D4: @ 80CC7D4
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080CC804
- ldrh r0, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r0, r4
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r4, [r2, 0x32]
- adds r1, r4
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x2E]
- b _080CC80A
-_080CC804:
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080CC80A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80CC7D4
-
- thumb_func_start sub_80CC810
-sub_80CC810: @ 80CC810
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080CC826
- adds r0, r2, 0
- bl move_anim_8072740
-_080CC826:
- pop {r0}
- bx r0
- thumb_func_end sub_80CC810
-
- thumb_func_start sub_80CC82C
-sub_80CC82C: @ 80CC82C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080CC84C @ =gBattleAnimPlayerMonIndex
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080CC854
- ldr r2, _080CC850 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- b _080CC860
- .align 2, 0
-_080CC84C: .4byte gBattleAnimPlayerMonIndex
-_080CC850: .4byte gBattleAnimArgs
-_080CC854:
- ldr r0, _080CC878 @ =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
-_080CC860:
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080CC87C @ =sub_8078600
- str r0, [r4, 0x1C]
- ldr r1, _080CC880 @ =move_anim_8072740
- adds r0, r4, 0
- bl oamt_set_x3A_32
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC878: .4byte gBattleAnimArgs
-_080CC87C: .4byte sub_8078600
-_080CC880: .4byte move_anim_8072740
- thumb_func_end sub_80CC82C
-
- thumb_func_start sub_80CC884
-sub_80CC884: @ 80CC884
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080CC8BC @ =gBattleAnimPlayerMonIndex
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080CC89E
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080CC89E:
- ldr r0, _080CC8C0 @ =sub_80CC810
- str r0, [r5, 0x1C]
- ldr r4, _080CC8C4 @ =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_807867C
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC8BC: .4byte gBattleAnimPlayerMonIndex
-_080CC8C0: .4byte sub_80CC810
-_080CC8C4: .4byte gBattleAnimArgs
- thumb_func_end sub_80CC884
-
- thumb_func_start sub_80CC8C8
-sub_80CC8C8: @ 80CC8C8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080CC908 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldrb r1, [r1, 0xC]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, _080CC90C @ =move_anim_8074EE0
- adds r0, r4, 0
- bl oamt_set_x3A_32
- ldr r0, _080CC910 @ =sub_8078504
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC908: .4byte gBattleAnimArgs
-_080CC90C: .4byte move_anim_8074EE0
-_080CC910: .4byte sub_8078504
- thumb_func_end sub_80CC8C8
-
- thumb_func_start sub_80CC914
-sub_80CC914: @ 80CC914
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080CC964 @ =gBattleAnimEnemyMonIndex
- 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
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080CC948
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
-_080CC948:
- ldr r0, _080CC968 @ =sub_80CCB00
- str r0, [r5, 0x1C]
- ldr r0, _080CC96C @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080CC970
- ldrh r0, [r3]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _080CC984
- .align 2, 0
-_080CC964: .4byte gBattleAnimEnemyMonIndex
-_080CC968: .4byte sub_80CCB00
-_080CC96C: .4byte gBattleAnimArgs
-_080CC970:
- ldrh r0, [r5, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r5, 0x20]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080CC984:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldr r1, _080CC9B8 @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r5, 0x30]
- adds r1, r0, r2
- strh r1, [r5, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080CC9B2
- negs r0, r1
- strh r0, [r5, 0x30]
-_080CC9B2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC9B8: .4byte 0xfffffc00
- thumb_func_end sub_80CC914
-
- thumb_func_start sub_80CC9BC
-sub_80CC9BC: @ 80CC9BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r0, _080CC9D8 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080CC9DC
- cmp r0, 0x1
- ble _080CCA58
- cmp r0, 0x2
- beq _080CC9FC
- b _080CCA58
- .align 2, 0
-_080CC9D8: .4byte gBattleAnimArgs
-_080CC9DC:
- ldr r5, _080CC9F8 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- eors r4, r0
- adds r0, r4, 0
- b _080CCA68
- .align 2, 0
-_080CC9F8: .4byte gBattleAnimEnemyMonIndex
-_080CC9FC:
- ldr r5, _080CCA54 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8077ABC
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- movs r2, 0x2
- mov r8, r2
- mov r1, r8
- eors r0, r1
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080CCA72
- ldrb r0, [r5]
- mov r2, r8
- eors r0, r2
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- lsrs r7, r0, 1
- ldrb r0, [r5]
- mov r1, r8
- eors r0, r1
- movs r1, 0x1
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- lsrs r4, r0, 1
- b _080CCA72
- .align 2, 0
-_080CCA54: .4byte gBattleAnimEnemyMonIndex
-_080CCA58:
- ldr r4, _080CCAA4 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8077ABC
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
-_080CCA68:
- movs r1, 0x1
- bl sub_8077ABC
- lsls r0, 24
- lsrs r4, r0, 24
-_080CCA72:
- strh r7, [r6, 0x20]
- strh r4, [r6, 0x22]
- ldr r0, _080CCAA4 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080CCA8A
- ldrh r0, [r6, 0x22]
- adds r0, 0x8
- strh r0, [r6, 0x22]
-_080CCA8A:
- ldr r0, _080CCAA8 @ =sub_80CCB00
- str r0, [r6, 0x1C]
- ldr r0, _080CCAAC @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080CCAB0
- ldrh r0, [r3]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- b _080CCAC4
- .align 2, 0
-_080CCAA4: .4byte gBattleAnimEnemyMonIndex
-_080CCAA8: .4byte sub_80CCB00
-_080CCAAC: .4byte gBattleAnimArgs
-_080CCAB0:
- ldrh r0, [r6, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r6, 0x20]
- adds r2, r6, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080CCAC4:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r6, 0x22]
- ldr r1, _080CCAFC @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r6, 0x30]
- adds r1, r0, r2
- strh r1, [r6, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r6, 0x32]
- adds r0, r2
- strh r0, [r6, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r6, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080CCAF2
- negs r0, r1
- strh r0, [r6, 0x30]
-_080CCAF2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CCAFC: .4byte 0xfffffc00
- thumb_func_end sub_80CC9BC
-
- thumb_func_start sub_80CCB00
-sub_80CCB00: @ 80CCB00
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080CCB22
- adds r0, r1, 0
- adds r0, 0x18
- b _080CCB26
-_080CCB22:
- adds r0, r1, 0
- subs r0, 0x18
-_080CCB26:
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- subs r0, 0x18
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080CCB5C
- ldr r1, _080CCB64 @ =move_anim_8072740
- adds r0, r4, 0
- bl oamt_set_x3A_32
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- ldr r0, _080CCB68 @ =sub_80782D8
- str r0, [r4, 0x1C]
-_080CCB5C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CCB64: .4byte move_anim_8072740
-_080CCB68: .4byte sub_80782D8
- thumb_func_end sub_80CCB00
-
- thumb_func_start unref_sub_80CCB6C
-unref_sub_80CCB6C: @ 80CCB6C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x32]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- ble _080CCC10
- ldrh r1, [r5, 0x34]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080CCBC8
- adds r3, r5, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r1
- strb r0, [r3]
- ldr r4, _080CCBC4 @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r3, [r0]
- adds r1, r2, 0
- ands r1, r3
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- b _080CCBFE
- .align 2, 0
-_080CCBC4: .4byte gSprites
-_080CCBC8:
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r3, _080CCC0C @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
-_080CCBFE:
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- b _080CCC14
- .align 2, 0
-_080CCC0C: .4byte gSprites
-_080CCC10:
- adds r0, r1, 0x1
- strh r0, [r5, 0x32]
-_080CCC14:
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0xA
- bne _080CCC44
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080CCC4C @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r0, r5, 0
- bl move_anim_8072740
-_080CCC44:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080CCC4C: .4byte gSprites
- thumb_func_end unref_sub_80CCB6C
-
- thumb_func_start sub_80CCC50
-sub_80CCC50: @ 80CCC50
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080CCC70 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080CCC74 @ =gBattleAnimPlayerMonIndex
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080CCC78
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _080CCC7E
- .align 2, 0
-_080CCC70: .4byte gBattleAnimArgs
-_080CCC74: .4byte gBattleAnimPlayerMonIndex
-_080CCC78:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080CCC7E:
- strh r0, [r5, 0x20]
- ldr r4, _080CCCAC @ =gBattleAnimArgs
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x6]
- negs r0, r0
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, _080CCCB0 @ =sub_80CCCB4
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080CCCAC: .4byte gBattleAnimArgs
-_080CCCB0: .4byte sub_80CCCB4
- thumb_func_end sub_80CCC50
-
- thumb_func_start sub_80CCCB4
-sub_80CCCB4: @ 80CCCB4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _080CCCE0
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0
- b _080CCCE6
-_080CCCE0:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0xE
-_080CCCE6:
- strb r0, [r1]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x2E]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x82
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080CCD1C
- adds r0, r4, 0
- bl move_anim_8072740
-_080CCD1C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80CCCB4
-
- thumb_func_start sub_80CCD24
-sub_80CCD24: @ 80CCD24
- push {r4-r6,lr}
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080CCD3A
- ldr r1, _080CCD98 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- adds r0, 0x8
- strh r0, [r1, 0x2]
-_080CCD3A:
- ldr r6, _080CCD9C @ =gBattleAnimPlayerMonIndex
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8077EE4
- lsls r0, 24
- ldr r4, _080CCD98 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8077EE4
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080CCD78
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080CCDA0
-_080CCD78:
- ldrb r0, [r6]
- 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]
- b _080CCDB8
- .align 2, 0
-_080CCD98: .4byte gBattleAnimArgs
-_080CCD9C: .4byte gBattleAnimPlayerMonIndex
-_080CCDA0:
- ldrb r0, [r6]
- 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]
-_080CCDB8:
- ldr r0, _080CCDF8 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080CCDFC @ =0x00002828
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r3, 0x80
- lsls r3, 1
- adds r0, r3
- strh r0, [r5, 0x32]
- movs r2, 0x10
- movs r0, 0x10
- strh r0, [r5, 0x3C]
- ldr r1, _080CCE00 @ =REG_BLDCNT
- movs r3, 0xFD
- lsls r3, 6
- adds r0, r3, 0
- strh r0, [r1]
- ldr r3, _080CCE04 @ =REG_BLDALPHA
- ldrh r1, [r5, 0x3C]
- lsls r0, r1, 8
- subs r2, r1
- orrs r0, r2
- strh r0, [r3]
- ldr r0, _080CCE08 @ =sub_80CCE0C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080CCDF8: .4byte gBattleAnimArgs
-_080CCDFC: .4byte 0x00002828
-_080CCE00: .4byte REG_BLDCNT
-_080CCE04: .4byte REG_BLDALPHA
-_080CCE08: .4byte sub_80CCE0C
- thumb_func_end sub_80CCD24
-
thumb_func_start sub_80CCE0C
sub_80CCE0C: @ 80CCE0C
push {r4-r6,lr}
diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c
index 8befb4b4e..53494608a 100755
--- a/src/battle_anim_80CA710.c
+++ b/src/battle_anim_80CA710.c
@@ -22,6 +22,7 @@ extern struct SpriteTemplate gSpriteTemplate_83D631C;
extern struct SpriteTemplate gSpriteTemplate_83D6884;
extern s16 gUnknown_03000728[];
extern s8 gUnknown_083D680C[11][3];
+extern u16 gUnknown_083D6984[];
void sub_80CA768(struct Sprite* sprite);
void sub_80CA8B4(struct Sprite* sprite);
@@ -44,6 +45,11 @@ void sub_80CBC8C(struct Sprite* sprite);
void sub_80CBCF8(struct Sprite* sprite);
void sub_80CBDB0(struct Sprite* sprite);
void sub_80CC408(struct Sprite* sprite);
+void sub_80CC580(struct Sprite* sprite);
+void sub_80CC7D4(struct Sprite* sprite);
+void sub_80CCB00(struct Sprite* sprite);
+void sub_80CCCB4(struct Sprite* sprite);
+void sub_80CCE0C(struct Sprite* sprite);
s16 sub_80CC338(struct Sprite* sprite);
@@ -54,10 +60,17 @@ void sub_8078D60(struct Sprite *sprite);
void sub_80786EC(struct Sprite *sprite);
void sub_80782D8(struct Sprite *sprite);
void sub_8078CC0(struct Sprite *sprite);
+void sub_8078600(struct Sprite *sprite);
+void sub_8078504(struct Sprite *sprite);
+
void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4);
u8 sub_8079ED4(u8 slot);
s8 sub_8076F98(s8 a);
int sub_807A100(u8 slot, u8 a2);
+u16 sub_80790F0(s16 a, s16 b);
+void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
+void sub_807867C(struct Sprite *sprite, s16 a2);
+u8 sub_8077EE4(u8 slot, u8 a2);
void move_anim_8074EE0(struct Sprite *sprite);
bool8 sub_8078718(struct Sprite *sprite);
@@ -2103,3 +2116,532 @@ void sub_80CC408(struct Sprite* sprite)
}
}
+void sub_80CC474(struct Sprite* sprite)
+{
+ u8 bank;
+ if (!gBattleAnimArgs[6])
+ bank = gBattleAnimPlayerMonIndex;
+ else
+ bank = gBattleAnimEnemyMonIndex;
+ if (GetBankSide(bank) != 0)
+ {
+ sprite->data4 = 0;
+ sprite->data2 = gBattleAnimArgs[3];
+ sprite->pos1.x = 0xFFF0;
+ }
+ else
+ {
+ sprite->data4 = 1;
+ sprite->data2 = -gBattleAnimArgs[3];
+ sprite->pos1.x = 0x100;
+ }
+ sprite->data1 = gBattleAnimArgs[1];
+ sprite->data0 = gBattleAnimArgs[2];
+ sprite->data3 = gBattleAnimArgs[4];
+ switch(gBattleAnimArgs[5])
+ {
+ case 0:
+ {
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank);
+ break;
+ }
+ case 1:
+ {
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank) + 1;
+ break;
+ }
+ case 2:
+ {
+ sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank);
+ break;
+ }
+ case 3:
+ {
+ sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[0];
+ obj_id_for_side_relative_to_move(1);
+ sprite->oam.priority = sub_8079ED4(bank) + 1;
+ break;
+ }
+ }
+ sprite->callback = sub_80CC580;
+}
+
+// why did you make me use gotos WHY
+void sub_80CC580(struct Sprite* sprite)
+{
+ int a = sprite->data7;
+ sprite->data7++;
+ sprite->pos2.y = (sprite->data1 * gSineTable[sprite->data0]) >> 8;
+ sprite->pos2.x = sprite->data2 * a;
+ sprite->data0 = (sprite->data3 * a) & 0xFF;
+ if (sprite->data4 == 0)
+ {
+ if (sprite->pos2.x + sprite->pos1.x <= 0xF7) return;
+ else goto END;
+ }
+ else if (sprite->data4 != 0 && sprite->pos2.x + sprite->pos1.x <= -16)
+ {
+ goto END;
+ }
+ else
+ return;
+
+ END:
+ move_anim_8074EE0(sprite);
+}
+
+void sub_80CC5F8(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch(task->data[0])
+ {
+ case 0:
+ {
+ task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256;
+ task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256;
+ task->data[0]++;
+ break;
+ }
+ case 1:
+ {
+ task->data[9]++;
+ if(task->data[9] >= 0)
+ {
+ task->data[9] = 0;
+ BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
+ BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
+ task->data[10]++;
+ if(task->data[10] == 17)
+ {
+ task->data[10] = 0;
+ task->data[11]++;
+ if(task->data[11] == 7) task->data[11] = 0;
+ }
+ }
+ break;
+ }
+ }
+ if(gBattleAnimArgs[7] == -1) DestroyAnimVisualTask(taskId);
+}
+
+#ifdef NONMATCHING
+void sub_80CC6CC(struct Sprite* sprite)
+{
+ u8 a;
+ u8 b;
+ u8 bank;
+ int c;
+ u16 x;
+ u16 y;
+ if (gBattleAnimArgs[4] == 0)
+ {
+ move_anim_8072740(sprite);
+ }
+ else
+ {
+
+ if (gBattleAnimArgs[0] == 0) bank = gBattleAnimPlayerMonIndex;
+ else
+ bank = gBattleAnimEnemyMonIndex;
+ a = sub_8077ABC(bank, 2);
+ b = sub_8077ABC(bank, 3);
+ sprite->data0 = gBattleAnimArgs[4];
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->pos1.x = gBattleAnimArgs[2] + a;
+ sprite->pos1.y = gBattleAnimArgs[3] + b;
+ sprite->data5 = a;
+ sprite->data6 = b;
+ }
+ else
+ {
+ sprite->pos1.x = a;
+ sprite->pos1.y = b;
+ sprite->data5 = gBattleAnimArgs[2] + a;
+ sprite->data6 = gBattleAnimArgs[3] + b;
+ }
+ x = sprite->pos1.x;
+ sprite->data1 = x * 16;
+ y = sprite->pos1.y;
+ sprite->data2 = y * 16;
+ sprite->data3 = ((sprite->data5 - sprite->pos1.x) * 16) / gBattleAnimArgs[4];
+ sprite->data4 = ((sprite->data6 - sprite->pos1.y) * 16) / gBattleAnimArgs[4];
+ c = sub_80790F0(sprite->data5 - x, sprite->data6 - y);
+ if(IsContest() != 0) c = c + -0x8000;
+ sub_8078FDC(sprite, 0, 0x100, 0x100, c);
+ sprite->callback = sub_80CC7D4;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80CC6CC(struct Sprite* sprite)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ adds r6, r0, 0\n\
+ ldr r1, _080CC6E4 @ =gBattleAnimArgs\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0\n\
+ bne _080CC6E8\n\
+ adds r0, r6, 0\n\
+ bl move_anim_8072740\n\
+ b _080CC7C2\n\
+ .align 2, 0\n\
+_080CC6E4: .4byte gBattleAnimArgs\n\
+_080CC6E8:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ bne _080CC6F8\n\
+ ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex\n\
+ b _080CC6FA\n\
+ .align 2, 0\n\
+_080CC6F4: .4byte gBattleAnimPlayerMonIndex\n\
+_080CC6F8:\n\
+ ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex\n\
+_080CC6FA:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0x2\n\
+ bl sub_8077ABC\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0x3\n\
+ bl sub_8077ABC\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r0, _080CC738 @ =gBattleAnimArgs\n\
+ ldrh r1, [r0, 0x8]\n\
+ strh r1, [r6, 0x2E]\n\
+ movs r3, 0x2\n\
+ ldrsh r1, [r0, r3]\n\
+ adds r7, r0, 0\n\
+ cmp r1, 0\n\
+ bne _080CC73C\n\
+ ldrh r0, [r7, 0x4]\n\
+ adds r0, r5\n\
+ strh r0, [r6, 0x20]\n\
+ ldrh r0, [r7, 0x6]\n\
+ adds r0, r2\n\
+ strh r0, [r6, 0x22]\n\
+ strh r5, [r6, 0x38]\n\
+ strh r2, [r6, 0x3A]\n\
+ b _080CC74C\n\
+ .align 2, 0\n\
+_080CC734: .4byte gBattleAnimEnemyMonIndex\n\
+_080CC738: .4byte gBattleAnimArgs\n\
+_080CC73C:\n\
+ strh r5, [r6, 0x20]\n\
+ strh r2, [r6, 0x22]\n\
+ ldrh r0, [r7, 0x4]\n\
+ adds r0, r5\n\
+ strh r0, [r6, 0x38]\n\
+ ldrh r0, [r7, 0x6]\n\
+ adds r0, r2\n\
+ strh r0, [r6, 0x3A]\n\
+_080CC74C:\n\
+ ldrh r4, [r6, 0x20]\n\
+ lsls r0, r4, 4\n\
+ strh r0, [r6, 0x30]\n\
+ ldrh r5, [r6, 0x22]\n\
+ lsls r0, r5, 4\n\
+ strh r0, [r6, 0x32]\n\
+ movs r1, 0x38\n\
+ ldrsh r0, [r6, r1]\n\
+ movs r2, 0x20\n\
+ ldrsh r1, [r6, r2]\n\
+ subs r0, r1\n\
+ lsls r0, 4\n\
+ movs r3, 0x8\n\
+ ldrsh r1, [r7, r3]\n\
+ bl __divsi3\n\
+ strh r0, [r6, 0x34]\n\
+ movs r1, 0x3A\n\
+ ldrsh r0, [r6, r1]\n\
+ movs r2, 0x22\n\
+ ldrsh r1, [r6, r2]\n\
+ subs r0, r1\n\
+ lsls r0, 4\n\
+ movs r3, 0x8\n\
+ ldrsh r1, [r7, r3]\n\
+ bl __divsi3\n\
+ strh r0, [r6, 0x36]\n\
+ ldrh r0, [r6, 0x38]\n\
+ subs r0, r4\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ ldrh r1, [r6, 0x3A]\n\
+ subs r1, r5\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ bl sub_80790F0\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080CC7AE\n\
+ ldr r1, _080CC7CC @ =0xffff8000\n\
+ adds r0, r4, r1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+_080CC7AE:\n\
+ movs r3, 0x80\n\
+ lsls r3, 1\n\
+ str r4, [sp]\n\
+ adds r0, r6, 0\n\
+ movs r1, 0\n\
+ adds r2, r3, 0\n\
+ bl sub_8078FDC\n\
+ ldr r0, _080CC7D0 @ =sub_80CC7D4\n\
+ str r0, [r6, 0x1C]\n\
+_080CC7C2:\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080CC7CC: .4byte 0xffff8000\n\
+_080CC7D0: .4byte sub_80CC7D4\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_80CC7D4(struct Sprite* sprite)
+{
+ if(sprite->data0)
+ {
+ sprite->data1 += sprite->data3;
+ sprite->data2 += sprite->data4;
+ sprite->pos1.x = sprite->data1 >> 4 ;
+ sprite->pos1.y = sprite->data2 >> 4 ;
+ sprite->data0--;
+ }
+ else
+ move_anim_8074EE0(sprite);
+}
+
+void sub_80CC810(struct Sprite* sprite)
+{
+ if(sprite->animEnded)
+ move_anim_8072740(sprite);
+}
+
+void sub_80CC82C(struct Sprite* sprite)
+{
+ if(GetBankSide(gBattleAnimPlayerMonIndex) != 0)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ sprite->callback = sub_8078600;
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+}
+
+void sub_80CC884(struct Sprite* sprite)
+{
+ if(GetBankSide(gBattleAnimPlayerMonIndex) == 0)
+ StartSpriteAnim(sprite, 1);
+ sprite->callback = sub_80CC810;
+ sub_807867C(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+}
+
+void sub_80CC8C8(struct Sprite* sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data0 = gBattleAnimArgs[2];
+ sprite->data1 = gBattleAnimArgs[3];
+ sprite->data3 = gBattleAnimArgs[4];
+ sprite->data5 = gBattleAnimArgs[5];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
+ oamt_set_x3A_32(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078504;
+}
+
+void sub_80CC914(struct Sprite* sprite)
+{
+ sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
+ sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
+ if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
+ sprite->pos1.y += 8;
+ sprite->callback = sub_80CCB00;
+ if(gBattleAnimArgs[2] == 0)
+ sprite->pos1.x += gBattleAnimArgs[0];
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->hFlip = 1;
+ }
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data1 -= 0x400;
+ sprite->data2 += 0x400;
+ sprite->data5 = gBattleAnimArgs[2];
+ if(sprite->data5 == 1)
+ sprite->data1 = -sprite->data1;
+}
+
+void sub_80CC9BC(struct Sprite* sprite)
+{
+ u8 a;
+ u8 b;
+ switch(gBattleAnimArgs[3])
+ {
+ case 1:
+ {
+ a = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0);
+ b = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1);
+ break;
+ }
+ case 2:
+ {
+ a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
+ b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
+ if(b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2))
+ {
+ a = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0) + a) / 2;
+ b = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1) + b) / 2;
+ }
+ break;
+ }
+ case 0:
+ default:
+ {
+ a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
+ b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
+ break;
+ }
+ }
+ sprite->pos1.x = a;
+ sprite->pos1.y = b;
+ if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
+ sprite->pos1.y += 8;
+ sprite->callback = sub_80CCB00;
+ if(gBattleAnimArgs[2] == 0)
+ sprite->pos1.x += gBattleAnimArgs[0];
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->hFlip = 1;
+ }
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data1 -= 0x400;
+ sprite->data2 += 0x400;
+ sprite->data5 = gBattleAnimArgs[2];
+ if(sprite->data5 == 1)
+ sprite->data1 = -sprite->data1;
+}
+
+void sub_80CCB00(struct Sprite* sprite)
+{
+ sprite->data3 += sprite->data1;
+ sprite->data4 += sprite->data2;
+ if(sprite->data5 == 0)
+ sprite->data1 += 0x18;
+ else
+ sprite->data1 -= 0x18;
+ sprite->data2 -= 0x18;
+ sprite->pos2.x = sprite->data3 >> 8;
+ sprite->pos2.y = sprite->data4 >> 8;
+ sprite->data0++;
+ if(sprite->data0 == 20)
+ {
+ oamt_set_x3A_32(sprite, move_anim_8072740);
+ sprite->data0 = 3;
+ sprite->callback = sub_80782D8;
+ }
+}
+
+void unref_sub_80CCB6C(struct Sprite* sprite)
+{
+ if(sprite->data2 > 1)
+ {
+ if(sprite->data3 & 1)
+ {
+ sprite->invisible = 0;
+ gSprites[sprite->data0].invisible = 0;
+ gSprites[sprite->data1].invisible = 0;
+ }
+ else
+ {
+ sprite->invisible = 1;
+ gSprites[sprite->data0].invisible = 1;
+ gSprites[sprite->data1].invisible = 1;
+ }
+ sprite->data2 = 0;
+ sprite->data3++;
+ }
+ else
+ {
+ sprite->data2++;
+ }
+ if(sprite->data3 == 10)
+ {
+ DestroySprite(&gSprites[sprite->data0]);
+ DestroySprite(&gSprites[sprite->data1]);
+ move_anim_8072740(sprite);
+ }
+}
+
+void sub_80CCC50(struct Sprite* sprite)
+{
+ sprite->data0 = gBattleAnimArgs[2];
+ if(GetBankSide(gBattleAnimPlayerMonIndex) != 0)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ StartSpriteAnim(sprite, gBattleAnimArgs[5]);
+ sprite->data1 = -gBattleAnimArgs[3];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data3 = gBattleAnimArgs[4];
+ sprite->callback = sub_80CCCB4;
+ sub_80CCCB4(sprite);
+}
+
+void sub_80CCCB4(struct Sprite* sprite)
+{
+ sprite->pos2.x = Cos(sprite->data0, 100);
+ sprite->pos2.y = Sin(sprite->data0, 20);
+ if(sprite->data0 <= 0x7F)
+ sprite->subpriority = 0;
+ else
+ sprite->subpriority = 14;
+ sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
+ sprite->data5 += 0x82;
+ sprite->pos2.y += sprite->data5 >> 8;
+ sprite->data2++;
+ if(sprite->data2 == sprite->data3)
+ move_anim_8072740(sprite);
+}
+
+void sub_80CCD24(struct Sprite* sprite)
+{
+ if(IsContest() != 0)
+ {
+ gBattleAnimArgs[1] += 8;
+ }
+ sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[1];
+ if (GetBankSide(gBattleAnimPlayerMonIndex) == 0 || IsContest())
+ sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex) + 1;
+ else
+ sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex);
+ sprite->data0 = gBattleAnimArgs[2];
+ sprite->data2 = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100;
+ sprite->data7 = 16;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7);
+ sprite->callback = sub_80CCE0C;
+}
+