diff options
-rw-r--r-- | asm/battle_anim_80CA710.s | 17153 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 6121 |
3 files changed, 6122 insertions, 17153 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 1ff3e9681..01c45f81c 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,17159 +6,6 @@ .text - thumb_func_start sub_80CA710 -sub_80CA710: @ 80CA710 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080CA744 @ =gBattleAnimArgs - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080CA748 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CA74C - ldrh r0, [r5, 0x8] - negs r0, r0 - b _080CA74E - .align 2, 0 -_080CA744: .4byte gBattleAnimArgs -_080CA748: .4byte gBattleAnimBankAttacker -_080CA74C: - ldrh r0, [r5, 0x8] -_080CA74E: - strh r0, [r4, 0x34] - ldr r0, _080CA760 @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r4, 0x36] - ldr r0, _080CA764 @ =sub_80CA768 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CA760: .4byte gBattleAnimArgs -_080CA764: .4byte sub_80CA768 - thumb_func_end sub_80CA710 - - thumb_func_start sub_80CA768 -sub_80CA768: @ 80CA768 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080CA7A4 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080CA7AA -_080CA7A4: - adds r0, r4, 0 - bl move_anim_8072740 -_080CA7AA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CA768 - - thumb_func_start sub_80CA7B0 -sub_80CA7B0: @ 80CA7B0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080CA7F0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080CA7F4 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080CA7F8 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080CA7FC @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CA7F0: .4byte gBattleAnimArgs -_080CA7F4: .4byte gBattleAnimBankAttacker -_080CA7F8: .4byte sub_8078B34 -_080CA7FC: .4byte move_anim_8074EE0 - thumb_func_end sub_80CA7B0 - - thumb_func_start sub_80CA800 -sub_80CA800: @ 80CA800 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080CA848 @ =gBattleAnimArgs - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080CA84C @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080CA850 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080CA854 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CA848: .4byte gBattleAnimArgs -_080CA84C: .4byte gBattleAnimBankTarget -_080CA850: .4byte sub_8078B34 -_080CA854: .4byte move_anim_8072740 - thumb_func_end sub_80CA800 - - thumb_func_start sub_80CA858 -sub_80CA858: @ 80CA858 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r6, _080CA8A8 @ =gBattleAnimArgs - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080CA8AC @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x38] - ldr r1, _080CA8B0 @ =sub_80CA8B4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CA8A8: .4byte gBattleAnimArgs -_080CA8AC: .4byte gBattleAnimBankTarget -_080CA8B0: .4byte sub_80CA8B4 - thumb_func_end sub_80CA858 - - thumb_func_start sub_80CA8B4 -sub_80CA8B4: @ 80CA8B4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080CA8CA - adds r0, r4, 0 - bl DestroySprite - b _080CA91E -_080CA8CA: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - ble _080CA8E4 - ldr r0, _080CA8E0 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - adds r0, 0x1 - b _080CA8EE - .align 2, 0 -_080CA8E0: .4byte gBattleAnimBankTarget -_080CA8E4: - ldr r0, _080CA924 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - adds r0, 0x6 -_080CA8EE: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0xF - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080CA91E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CA924: .4byte gBattleAnimBankTarget - thumb_func_end sub_80CA8B4 - - thumb_func_start sub_80CA928 -sub_80CA928: @ 80CA928 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080CA998 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r0, 0x1 - movs r2, 0 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080CA982 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - movs r0, 0x6 - strh r0, [r5, 0x8] - ldr r1, _080CA99C @ =gBattleAnimArgs - movs r0, 0xF - strh r0, [r1] - strh r2, [r1, 0x2] - movs r0, 0x50 - strh r0, [r1, 0x4] - strh r2, [r1, 0x6] - ldr r4, _080CA9A0 @ =gSpriteTemplate_83D631C - ldr r0, _080CA9A4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl CreateSpriteAndAnimate -_080CA982: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0xF - bne _080CA990 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080CA990: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CA998: .4byte gTasks -_080CA99C: .4byte gBattleAnimArgs -_080CA9A0: .4byte gSpriteTemplate_83D631C -_080CA9A4: .4byte gBattleAnimBankTarget - thumb_func_end sub_80CA928 - - thumb_func_start sub_80CA9A8 -sub_80CA9A8: @ 80CA9A8 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r6, _080CA9EC @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x2E] - ldr r5, _080CA9F0 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldr r0, _080CA9F4 @ =sub_80CA9F8 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CA9EC: .4byte gBattleAnimArgs -_080CA9F0: .4byte gBattleAnimBankAttacker -_080CA9F4: .4byte sub_80CA9F8 - thumb_func_end sub_80CA9A8 - - thumb_func_start sub_80CA9F8 -sub_80CA9F8: @ 80CA9F8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080CAA0C - adds r0, r4, 0 - bl move_anim_8072740 -_080CAA0C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CA9F8 - - thumb_func_start sub_80CAA14 -sub_80CAA14: @ 80CAA14 - push {r4,r5,lr} - adds r5, r0, 0 - bl Random - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x7 - ands r1, r0 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r4, _080CAA5C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CAA60 - ldrh r0, [r5, 0x20] - subs r0, 0x14 - b _080CAA64 - .align 2, 0 -_080CAA5C: .4byte gBattleAnimBankAttacker -_080CAA60: - ldrh r0, [r5, 0x20] - adds r0, 0x14 -_080CAA64: - strh r0, [r5, 0x20] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - adds r0, 0x40 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080CAAC4 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078D60 - bl Random - movs r1, 0xFF - ands r1, r0 - strh r1, [r5, 0x38] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - strh r0, [r5, 0x3A] - ldr r1, _080CAAC8 @ =sub_80CAACC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CAAC4: .4byte gBattleAnimBankTarget -_080CAAC8: .4byte sub_80CAACC - thumb_func_end sub_80CAA14 - - thumb_func_start sub_80CAACC -sub_80CAACC: @ 80CAACC - push {r4,lr} - adds r4, r0, 0 - bl sub_8078CE8 - lsls r0, 24 - cmp r0, 0 - beq _080CAAE2 - adds r0, r4, 0 - bl move_anim_8072740 - b _080CAB12 -_080CAAE2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xC - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7E - bgt _080CAAFE - ldrh r0, [r4, 0x3A] - b _080CAB02 -_080CAAFE: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 -_080CAB02: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x18 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080CAB12: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CAACC - - thumb_func_start sub_80CAB18 -sub_80CAB18: @ 80CAB18 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080CAB78 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CAB38 - ldr r1, _080CAB7C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080CAB38: - ldr r4, _080CAB7C @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080CAB80 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_80786EC - ldr r0, _080CAB84 @ =sub_80CAB88 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CAB78: .4byte gBattleAnimBankAttacker -_080CAB7C: .4byte gBattleAnimArgs -_080CAB80: .4byte gBattleAnimBankTarget -_080CAB84: .4byte sub_80CAB88 - thumb_func_end sub_80CAB18 - - thumb_func_start sub_80CAB88 -sub_80CAB88: @ 80CAB88 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080CABB2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA - strh r0, [r4, 0x2E] - ldr r0, _080CABB8 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080CABBC @ =sub_80CABC0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080CABB2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CABB8: .4byte sub_80782D8 -_080CABBC: .4byte sub_80CABC0 - thumb_func_end sub_80CAB88 - - thumb_func_start sub_80CABC0 -sub_80CABC0: @ 80CABC0 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3C - strh r0, [r4, 0x2E] - ldr r0, _080CABF0 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080CABF4 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CABF0: .4byte sub_80782D8 -_080CABF4: .4byte move_anim_8072740 - thumb_func_end sub_80CABC0 - - thumb_func_start sub_80CABF8 -sub_80CABF8: @ 80CABF8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r5, _080CAC3C @ =gBattleAnimArgs - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAnim - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080CAC22 - ldrb r0, [r4, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] -_080CAC22: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldr r1, _080CAC40 @ =sub_80CAC44 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CAC3C: .4byte gBattleAnimArgs -_080CAC40: .4byte sub_80CAC44 - thumb_func_end sub_80CABF8 - - thumb_func_start sub_80CAC44 -sub_80CAC44: @ 80CAC44 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x32] - adds r1, 0x18 - strh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080CAC98 - ldr r0, _080CAC94 @ =gBattleAnimBankTarget - ldrb r0, [r0] - 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 - b _080CACBC - .align 2, 0 -_080CAC94: .4byte gBattleAnimBankTarget -_080CAC98: - ldr r0, _080CACE8 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - adds r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080CACAC - movs r2, 0x3 -_080CACAC: - movs r0, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 -_080CACBC: - strb r0, [r4, 0x5] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080CACE0 - adds r0, r4, 0 - bl move_anim_8072740 -_080CACE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CACE8: .4byte gBattleAnimBankTarget - thumb_func_end sub_80CAC44 - - thumb_func_start sub_80CACEC -sub_80CACEC: @ 80CACEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080CAD06 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080CAD0E -_080CAD06: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080CAD4A -_080CAD0E: - ldr r0, _080CAD2C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CAD34 - ldr r0, _080CAD30 @ =REG_BG2CNT - ldrb r1, [r0] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0] - b _080CAD44 - .align 2, 0 -_080CAD2C: .4byte gBattleAnimBankTarget -_080CAD30: .4byte REG_BG2CNT -_080CAD34: - ldr r2, _080CAD50 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080CAD44: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080CAD4A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CAD50: .4byte REG_BG1CNT - thumb_func_end sub_80CACEC - - thumb_func_start sub_80CAD54 -sub_80CAD54: @ 80CAD54 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r5, _080CAD9C @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080CADA0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080CADA4 @ =sub_80CADA8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CAD9C: .4byte gBattleAnimArgs -_080CADA0: .4byte gBattleAnimBankAttacker -_080CADA4: .4byte sub_80CADA8 - thumb_func_end sub_80CAD54 - - thumb_func_start sub_80CADA8 -sub_80CADA8: @ 80CADA8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080CAE14 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080CADF4 - ldr r0, _080CADF0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - b _080CADFE - .align 2, 0 -_080CADF0: .4byte gBattleAnimBankAttacker -_080CADF4: - ldr r0, _080CAE10 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079E90 - adds r0, 0x1 -_080CADFE: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080CAE1A - .align 2, 0 -_080CAE10: .4byte gBattleAnimBankAttacker -_080CAE14: - adds r0, r4, 0 - bl move_anim_8072740 -_080CAE1A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CADA8 - - thumb_func_start sub_80CAE20 -sub_80CAE20: @ 80CAE20 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080CAE68 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080CAE6C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080CAE70 @ =sub_80CAE74 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CAE68: .4byte gBattleAnimArgs -_080CAE6C: .4byte gBattleAnimBankAttacker -_080CAE70: .4byte sub_80CAE74 - thumb_func_end sub_80CAE20 - - thumb_func_start sub_80CAE74 -sub_80CAE74: @ 80CAE74 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080CAECC - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r1, [r4, 0x38] - adds r0, r1, 0 - subs r0, 0x3B - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bls _080CAEAC - adds r0, r1, 0 - subs r0, 0xBB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _080CAEC0 -_080CAEAC: - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - eors r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_080CAEC0: - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080CAED2 -_080CAECC: - adds r0, r4, 0 - bl move_anim_8072740 -_080CAED2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CAE74 - - thumb_func_start sub_80CAED8 -sub_80CAED8: @ 80CAED8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080CAF14 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080CAF18 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldr r0, _080CAF1C @ =sub_80CAF20 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CAF14: .4byte gBattleAnimBankAttacker -_080CAF18: .4byte gBattleAnimArgs -_080CAF1C: .4byte sub_80CAF20 - thumb_func_end sub_80CAED8 - - thumb_func_start sub_80CAF20 -sub_80CAF20: @ 80CAF20 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x32] - movs r2, 0x32 - ldrsh r3, [r1, r2] - cmp r3, 0 - bne _080CAF54 - ldrh r0, [r1, 0x30] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _080CAF42 - movs r0, 0x80 - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] - strh r3, [r1, 0x32] - b _080CAF48 -_080CAF42: - strh r2, [r1, 0x2E] - strh r2, [r1, 0x30] - strh r2, [r1, 0x32] -_080CAF48: - ldr r0, _080CAF50 @ =sub_80CAF6C - str r0, [r1, 0x1C] - b _080CAF68 - .align 2, 0 -_080CAF50: .4byte sub_80CAF6C -_080CAF54: - subs r0, 0x1 - strh r0, [r1, 0x32] - ldrh r0, [r1, 0x2E] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] -_080CAF68: - pop {r0} - bx r0 - thumb_func_end sub_80CAF20 - - thumb_func_start sub_80CAF6C -sub_80CAF6C: @ 80CAF6C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CAF8C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CAF90 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin - negs r0, r0 - b _080CAF9A - .align 2, 0 -_080CAF8C: .4byte gBattleAnimBankAttacker -_080CAF90: - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin -_080CAF9A: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080CAFBA - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] -_080CAFBA: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080CAFC8 - adds r0, r4, 0 - bl move_anim_8072740 -_080CAFC8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CAF6C - - thumb_func_start sub_80CAFD0 -sub_80CAFD0: @ 80CAFD0 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080CB024 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CAFF0 - ldr r1, _080CB028 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080CAFF0: - ldr r6, _080CB028 @ =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CB030 - ldr r4, _080CB02C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - b _080CB050 - .align 2, 0 -_080CB024: .4byte gBattleAnimBankAttacker -_080CB028: .4byte gBattleAnimArgs -_080CB02C: .4byte gBattleAnimBankTarget -_080CB030: - ldr r0, _080CB07C @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 -_080CB050: - strh r0, [r5, 0x36] - ldr r0, _080CB080 @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080CB084 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldr r0, _080CB07C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080CB088 - movs r0, 0x1 - b _080CB08A - .align 2, 0 -_080CB07C: .4byte gBattleAnimBankTarget -_080CB080: .4byte gBattleAnimArgs -_080CB084: .4byte gBattleAnimBankAttacker -_080CB088: - movs r0, 0 -_080CB08A: - strh r0, [r5, 0x2E] - ldr r0, _080CB098 @ =sub_80CB09C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB098: .4byte sub_80CB09C - thumb_func_end sub_80CAFD0 - - thumb_func_start sub_80CB09C -sub_80CB09C: @ 80CB09C - push {r4-r7,lr} - adds r6, r0, 0 - movs r7, 0 - ldrh r5, [r6, 0x2E] - ldrh r4, [r6, 0x3C] - movs r0, 0x1 - strh r0, [r6, 0x2E] - adds r0, r6, 0 - bl sub_8078718 - ldrh r0, [r6, 0x3C] - strh r5, [r6, 0x2E] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0xC8 - ble _080CB0CE - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x37 - bgt _080CB0CE - ldrh r0, [r6, 0x6] - cmp r0, 0 - bne _080CB0D4 - adds r0, 0x1 - strh r0, [r6, 0x6] -_080CB0CE: - ldrh r0, [r6, 0x6] - cmp r0, 0 - beq _080CB106 -_080CB0D4: - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080CB106 - adds r3, r6, 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, [r6, 0x6] - adds r0, 0x1 - strh r0, [r6, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bne _080CB106 - movs r7, 0x1 -_080CB106: - movs r2, 0x20 - ldrsh r0, [r6, r2] - movs r2, 0x24 - ldrsh r1, [r6, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080CB130 - movs r0, 0x22 - ldrsh r1, [r6, r0] - movs r2, 0x26 - ldrsh r0, [r6, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080CB130 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080CB132 -_080CB130: - movs r7, 0x1 -_080CB132: - cmp r7, 0 - beq _080CB13C - adds r0, r6, 0 - bl move_anim_8072740 -_080CB13C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80CB09C - - thumb_func_start sub_80CB144 -sub_80CB144: @ 80CB144 - push {r4,lr} - adds r4, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080CB170 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CB170 - ldr r0, _080CB198 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC -_080CB170: - ldrh r0, [r4, 0x22] - adds r0, 0x20 - strh r0, [r4, 0x22] - ldr r1, _080CB19C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x36] - ldr r0, _080CB1A0 @ =sub_80CB1A4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CB198: .4byte gBattleAnimBankTarget -_080CB19C: .4byte gBattleAnimArgs -_080CB1A0: .4byte sub_80CB1A4 - thumb_func_end sub_80CB144 - - thumb_func_start sub_80CB1A4 -sub_80CB1A4: @ 80CB1A4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bne _080CB1BA - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - b _080CB1C8 -_080CB1BA: - cmp r0, 0 - ble _080CB1C8 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - subs r0, r1, 0x2 - strh r0, [r4, 0x30] -_080CB1C8: - ldrh r3, [r4, 0x32] - ldrh r5, [r4, 0x38] - adds r2, r3, r5 - strh r2, [r4, 0x38] - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r5, 0x36 - ldrsh r0, [r4, r5] - cmp r1, r0 - bge _080CB1E0 - adds r0, r2, r3 - strh r0, [r4, 0x38] -_080CB1E0: - ldrh r1, [r4, 0x38] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r5, 0x38 - ldrsh r0, [r4, r5] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080CB220 - ldr r0, _080CB21C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - b _080CB22E - .align 2, 0 -_080CB21C: .4byte gBattleAnimBankTarget -_080CB220: - ldr r0, _080CB258 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 -_080CB22E: - 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] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080CB252 - adds r0, r4, 0 - bl move_anim_8072740 -_080CB252: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CB258: .4byte gBattleAnimBankTarget - thumb_func_end sub_80CB1A4 - - thumb_func_start sub_80CB25C -sub_80CB25C: @ 80CB25C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8078764 - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r4, _080CB290 @ =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x3C] - ldr r0, _080CB294 @ =sub_80CB298 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CB290: .4byte gBattleAnimArgs -_080CB294: .4byte sub_80CB298 - thumb_func_end sub_80CB25C - - thumb_func_start sub_80CB298 -sub_80CB298: @ 80CB298 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CB2C8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080CB2CC @ =0x0000ffff - cmp r1, r0 - bne _080CB2C2 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - bl GetAnimBankSpriteId - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x2E] - ldr r0, _080CB2D0 @ =sub_80CB2D4 - str r0, [r4, 0x1C] -_080CB2C2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CB2C8: .4byte gBattleAnimArgs -_080CB2CC: .4byte 0x0000ffff -_080CB2D0: .4byte sub_80CB2D4 - thumb_func_end sub_80CB298 - - thumb_func_start sub_80CB2D4 -sub_80CB2D4: @ 80CB2D4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl GetAnimBankSpriteId - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080CB2EC - ldrh r0, [r4, 0x2E] - adds r0, 0xB - b _080CB2F0 -_080CB2EC: - ldrh r0, [r4, 0x2E] - subs r0, 0xB -_080CB2F0: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080CB30C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x32] -_080CB30C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080CB33A - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - cmp r0, 0 - ble _080CB334 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAffineAnim - b _080CB33A -_080CB334: - adds r0, r4, 0 - bl move_anim_8072740 -_080CB33A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CB2D4 - - thumb_func_start sub_80CB340 -sub_80CB340: @ 80CB340 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080CB36C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080CB370 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080CB396 - .align 2, 0 -_080CB36C: .4byte gSprites -_080CB370: - adds r0, r2, 0 - movs r1, 0x1 - bl sub_8078E70 - ldr r1, _080CB39C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, _080CB3A0 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x8] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xA] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0x1E] - ldr r1, _080CB3A4 @ =sub_80CB3A8 - str r1, [r0] -_080CB396: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CB39C: .4byte gTasks -_080CB3A0: .4byte gBattleAnimArgs -_080CB3A4: .4byte sub_80CB3A8 - thumb_func_end sub_80CB340 - - thumb_func_start sub_80CB3A8 -sub_80CB3A8: @ 80CB3A8 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080CB428 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - ldrh r0, [r4, 0x1C] - adds r1, r0 - strh r1, [r4, 0x1C] - ldr r2, _080CB42C @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r2 - lsls r1, 16 - asrs r1, 24 - strh r1, [r5, 0x24] - ldr r0, _080CB430 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CB3F2 - ldrh r0, [r5, 0x24] - negs r0, r0 - strh r0, [r5, 0x24] -_080CB3F2: - ldrh r0, [r4, 0x1E] - adds r0, 0x10 - strh r0, [r4, 0x1E] - movs r0, 0x1E - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - adds r0, r6, 0 - bl sub_8079A64 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080CB420 - strh r0, [r4, 0x8] - ldr r0, _080CB434 @ =sub_80CB438 - str r0, [r4] -_080CB420: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB428: .4byte gTasks -_080CB42C: .4byte gSprites -_080CB430: .4byte gBattleAnimBankTarget -_080CB434: .4byte sub_80CB438 - thumb_func_end sub_80CB3A8 - - thumb_func_start sub_80CB438 -sub_80CB438: @ 80CB438 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080CB484 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080CB488 @ =0x0000ffff - cmp r1, r0 - bne _080CB494 - ldr r0, _080CB48C @ =gTasks - lsls r2, r3, 2 - adds r1, r2, r3 - lsls r1, 3 - adds r6, r1, r0 - movs r1, 0x8 - ldrsh r5, [r6, r1] - adds r4, r0, 0 - cmp r5, 0 - bne _080CB4A8 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8078F40 - ldr r1, _080CB490 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x24] - strh r5, [r0, 0x26] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080CB4C2 - .align 2, 0 -_080CB484: .4byte gBattleAnimArgs -_080CB488: .4byte 0x0000ffff -_080CB48C: .4byte gTasks -_080CB490: .4byte gSprites -_080CB494: - ldr r1, _080CB4C8 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - movs r4, 0x8 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _080CB4C2 -_080CB4A8: - adds r1, r2, r3 - lsls r1, 3 - adds r1, r4 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080CB4C2 - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080CB4C2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB4C8: .4byte gTasks - thumb_func_end sub_80CB438 - - thumb_func_start sub_80CB4CC -sub_80CB4CC: @ 80CB4CC - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080CB4DE - cmp r0, 0x1 - beq _080CB538 - b _080CB58A -_080CB4DE: - ldr r6, _080CB530 @ =gBattleAnimBankTarget - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CB4F6 - ldr r1, _080CB534 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_080CB4F6: - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080CB534 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080CB58A - .align 2, 0 -_080CB530: .4byte gBattleAnimBankTarget -_080CB534: .4byte gBattleAnimArgs -_080CB538: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080CB58A - adds r0, r5, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - movs r0, 0x19 - strh r0, [r5, 0x2E] - ldr r4, _080CB590 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080CB594 @ =sub_8078CC0 - str r0, [r5, 0x1C] - ldr r1, _080CB598 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080CB58A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB590: .4byte gBattleAnimBankAttacker -_080CB594: .4byte sub_8078CC0 -_080CB598: .4byte move_anim_8072740 - thumb_func_end sub_80CB4CC - - thumb_func_start sub_80CB59C -sub_80CB59C: @ 80CB59C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080CB608 - ldr r4, _080CB614 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - 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] - ldr r4, _080CB618 @ =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x24] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x26] - ldrb r0, [r4, 0x4] - adds r0, 0x1E - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r4, 0x6] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r2, 0x22 - ldrsh r0, [r5, r2] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - cmp r0, 0x78 - ble _080CB608 - ldrh r0, [r5, 0x22] - adds r1, r0, 0 - subs r1, 0x78 - ldrh r2, [r5, 0x26] - adds r0, r2 - adds r1, r0 - strh r1, [r5, 0x22] -_080CB608: - ldr r0, _080CB61C @ =sub_80CB710 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CB614: .4byte gBattleAnimBankAttacker -_080CB618: .4byte gBattleAnimArgs -_080CB61C: .4byte sub_80CB710 - thumb_func_end sub_80CB59C - - thumb_func_start sub_80CB620 -sub_80CB620: @ 80CB620 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - mov r9, r0 - ldr r4, _080CB6FC @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r6, _080CB700 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - subs r4, r5 - lsls r4, 16 - lsrs r2, 24 - mov r1, r8 - subs r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsrs r3, r4, 16 - mov r10, r3 - asrs r4, 16 - ldr r6, _080CB704 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - muls r0, r4 - movs r1, 0x64 - str r2, [sp] - bl __divsi3 - adds r5, r0 - mov r3, r9 - strh r5, [r3, 0x20] - ldr r2, [sp] - lsls r0, r2, 16 - asrs r0, 16 - movs r3, 0 - ldrsh r1, [r6, r3] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - add r8, r0 - mov r1, r8 - mov r0, r9 - strh r1, [r0, 0x22] - ldrh r0, [r6, 0x2] - mov r3, r9 - strh r0, [r3, 0x24] - ldrh r0, [r6, 0x4] - strh r0, [r3, 0x26] - ldrb r0, [r6, 0x6] - adds r0, 0x1E - mov r1, r9 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0x8] - mov r0, r9 - bl StartSpriteAnim - ldrh r0, [r6, 0xA] - mov r1, r9 - strh r0, [r1, 0x32] - ldr r0, _080CB708 @ =sub_80CB710 - str r0, [r1, 0x1C] - ldr r1, _080CB70C @ =gUnknown_03000728 - mov r3, r9 - ldrh r0, [r3, 0x20] - strh r0, [r1] - ldrh r0, [r3, 0x22] - strh r0, [r1, 0x2] - mov r0, r10 - strh r0, [r1, 0x4] - ldr r2, [sp] - strh r2, [r1, 0x6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB6FC: .4byte gBattleAnimBankAttacker -_080CB700: .4byte gBattleAnimBankTarget -_080CB704: .4byte gBattleAnimArgs -_080CB708: .4byte sub_80CB710 -_080CB70C: .4byte gUnknown_03000728 - thumb_func_end sub_80CB620 - - thumb_func_start sub_80CB710 -sub_80CB710: @ 80CB710 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - adds r1, 0x1 - strh r1, [r3, 0x2E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x32 - ldrsh r0, [r3, r2] - subs r0, 0xA - cmp r1, r0 - ble _080CB750 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - movs r2, 0x3E - adds r2, r3 - mov r12, r2 - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080CB750: - movs r2, 0x2E - ldrsh r1, [r3, r2] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r1, r0 - ble _080CB762 - adds r0, r3, 0 - bl move_anim_8072740 -_080CB762: - pop {r0} - bx r0 - thumb_func_end sub_80CB710 - - thumb_func_start sub_80CB768 -sub_80CB768: @ 80CB768 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CB7A8 - ldr r5, _080CB7E4 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080CB7E8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r2, [r4] - adds r0, r2 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x30] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x34] -_080CB7A8: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] - ldrh r1, [r6, 0x30] - muls r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x2E - ldrsh r1, [r6, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0xFF - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080CB7DE - adds r0, r6, 0 - bl move_anim_8072740 -_080CB7DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB7E4: .4byte gBattleAnimBankAttacker -_080CB7E8: .4byte gBattleAnimArgs - thumb_func_end sub_80CB768 - - thumb_func_start sub_80CB7EC -sub_80CB7EC: @ 80CB7EC - push {r4,r5,lr} - movs r2, 0x20 - ldrsh r4, [r0, r2] - lsls r4, 8 - movs r3, 0x22 - ldrsh r2, [r0, r3] - orrs r4, r2 - movs r5, 0x3A - ldrsh r2, [r0, r5] - lsls r2, 8 - movs r5, 0x3C - ldrsh r3, [r0, r5] - orrs r2, r3 - lsls r1, 8 - strh r4, [r0, 0x38] - strh r2, [r0, 0x3A] - strh r1, [r0, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CB7EC - - thumb_func_start sub_80CB814 -sub_80CB814: @ 80CB814 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - ldrh r0, [r0, 0x38] - lsrs r1, r0, 8 - mov r10, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r1, r8 - ldrh r0, [r1, 0x3A] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r1, [r1, 0x3C] - lsls r0, r1, 16 - asrs r0, 24 - lsls r0, 16 - lsrs r6, r0, 16 - movs r3, 0xFF - ands r3, r1 - cmp r2, 0 - bne _080CB84E - movs r2, 0x20 - negs r2, r2 - b _080CB856 -_080CB84E: - cmp r2, 0xFF - bne _080CB856 - movs r2, 0x88 - lsls r2, 1 -_080CB856: - mov r0, r9 - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r10 - subs r0, r2, r1 - lsls r5, r3, 16 - asrs r5, 16 - muls r0, r5 - lsls r1, r6, 16 - asrs r7, r1, 16 - adds r1, r7, 0 - bl __divsi3 - adds r6, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r5 - adds r1, r7, 0 - bl __divsi3 - add r6, r10 - mov r1, r8 - strh r6, [r1, 0x20] - add r0, r9 - strh r0, [r1, 0x22] - adds r5, 0x1 - lsls r5, 16 - lsrs r3, r5, 16 - asrs r5, 16 - cmp r5, r7 - beq _080CB8A8 - lsls r1, r7, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r1 - mov r1, r8 - strh r0, [r1, 0x3C] - movs r0, 0 - b _080CB8AA -_080CB8A8: - movs r0, 0x1 -_080CB8AA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80CB814 - - thumb_func_start sub_80CB8B8 -sub_80CB8B8: @ 80CB8B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080CB8CC - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080CB8CC: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _080CB8E0 - adds r0, r4, 0 - bl move_anim_8072740 -_080CB8E0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CB8B8 - - thumb_func_start sub_80CB8E8 -sub_80CB8E8: @ 80CB8E8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080CB912 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080CB912: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80CB814 - lsls r0, 24 - cmp r0, 0 - beq _080CB942 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080CB948 @ =sub_80CB8B8 - str r0, [r4, 0x1C] -_080CB942: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CB948: .4byte sub_80CB8B8 - thumb_func_end sub_80CB8E8 - - thumb_func_start sub_80CB94C -sub_80CB94C: @ 80CB94C - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r4, _080CB994 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080CB998 @ =gBattleAnimBankAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080CB99C - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80CB7EC - movs r0, 0x1 - b _080CB9AE - .align 2, 0 -_080CB994: .4byte gBattleAnimBankTarget -_080CB998: .4byte gBattleAnimBankAttacker -_080CB99C: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80CB7EC - movs r0, 0x3 -_080CB9AE: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080CB9C0 @ =sub_80CB8E8 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CB9C0: .4byte sub_80CB8E8 - thumb_func_end sub_80CB94C - - thumb_func_start sub_80CB9C4 -sub_80CB9C4: @ 80CB9C4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080CB9EE - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080CB9EE: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80CB814 - lsls r0, 24 - cmp r0, 0 - beq _080CBA20 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - bl move_anim_8072740 -_080CBA20: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CB9C4 - - thumb_func_start sub_80CBA28 -sub_80CBA28: @ 80CBA28 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080CBA64 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080CBA6C - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80CB7EC - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080CBA68 @ =sub_80CB8E8 - b _080CBA96 - .align 2, 0 -_080CBA64: .4byte gBattleAnimBankTarget -_080CBA68: .4byte sub_80CB8E8 -_080CBA6C: - movs r0, 0xFF - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CBA84 - movs r0, 0 - strh r0, [r5, 0x3A] -_080CBA84: - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80CB7EC - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080CBAA0 @ =sub_80CB9C4 -_080CBA96: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CBAA0: .4byte sub_80CB9C4 - thumb_func_end sub_80CBA28 - - thumb_func_start sub_80CBAA4 -sub_80CBAA4: @ 80CBAA4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080CBABE - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 - ldr r0, _080CBAE4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x30] -_080CBABE: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - muls r0, r1 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080CBADE - adds r0, r4, 0 - bl move_anim_8072740 -_080CBADE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CBAE4: .4byte gBattleAnimArgs - thumb_func_end sub_80CBAA4 - - thumb_func_start sub_80CBAE8 -sub_80CBAE8: @ 80CBAE8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_8078764 - ldr r4, _080CBB30 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080CBB34 @ =gBattleAnimBankTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080CBB38 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80CB7EC - movs r0, 0x1 - b _080CBB4A - .align 2, 0 -_080CBB30: .4byte gBattleAnimBankAttacker -_080CBB34: .4byte gBattleAnimBankTarget -_080CBB38: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80CB7EC - movs r0, 0x3 -_080CBB4A: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080CBB5C @ =sub_80CBB60 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CBB5C: .4byte sub_80CBB60 - thumb_func_end sub_80CBAE8 - - thumb_func_start sub_80CBB60 -sub_80CBB60: @ 80CBB60 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080CBB8A - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080CBB8A: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bne _080CBBBE - movs r0, 0x3F - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning -_080CBBBE: - adds r0, r4, 0 - bl sub_80CB814 - lsls r0, 24 - cmp r0, 0 - beq _080CBBE6 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080CBBEC @ =sub_80CB8B8 - str r0, [r4, 0x1C] - movs r0, 0x40 - negs r0, r0 - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning -_080CBBE6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CBBEC: .4byte sub_80CB8B8 - thumb_func_end sub_80CBB60 - - thumb_func_start sub_80CBBF0 -sub_80CBBF0: @ 80CBBF0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080CBC84 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080CBC18 - ldr r0, _080CBC14 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - strh r1, [r4, 0x30] - movs r1, 0x78 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080CBC3A - .align 2, 0 -_080CBC14: .4byte gBattleAnimArgs -_080CBC18: - ldr r0, _080CBC74 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r3, [r0, r1] - adds r1, r3, 0 - subs r1, 0x20 - adds r2, r1, 0 - adds r5, r0, 0 - cmp r1, 0 - bge _080CBC2E - adds r2, r3, 0 - adds r2, 0xDF -_080CBC2E: - asrs r0, r2, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - movs r0, 0x46 - strh r0, [r4, 0x20] -_080CBC3A: - ldrh r0, [r5] - strh r0, [r4, 0x22] - strh r0, [r4, 0x32] - movs r0, 0x14 - strh r0, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - ldr r0, _080CBC78 @ =sub_80CBC8C - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080CBC7C - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080CBC82 - .align 2, 0 -_080CBC74: .4byte gBattleAnimArgs -_080CBC78: .4byte sub_80CBC8C -_080CBC7C: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080CBC82: - strb r0, [r1] -_080CBC84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CBBF0 - - thumb_func_start sub_80CBC8C -sub_80CBC8C: @ 80CBC8C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080CBC9E - cmp r0, 0x1 - beq _080CBCCE - b _080CBCEE -_080CBC9E: - ldrh r5, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x4E - ble _080CBCB6 - movs r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080CBCEE -_080CBCB6: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - adds r0, r5, r0 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x36] - adds r1, 0x3 - strh r1, [r4, 0x36] - strh r0, [r4, 0x22] - b _080CBCEE -_080CBCCE: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080CBCEE - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080CBCEE - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x32] - ldr r0, _080CBCF4 @ =sub_80CBCF8 - str r0, [r4, 0x1C] -_080CBCEE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CBCF4: .4byte sub_80CBCF8 - thumb_func_end sub_80CBC8C - - thumb_func_start sub_80CBCF8 -sub_80CBCF8: @ 80CBCF8 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080CBD3C @ =gUnknown_083D680C - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r3, r0, r1 - adds r0, r5, 0x1 - adds r0, r3, r0 - ldrh r2, [r4, 0x32] - movs r6, 0x32 - ldrsh r1, [r4, r6] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080CBD44 - adds r0, r5, 0x2 - adds r0, r3, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x7F - bne _080CBD30 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080CBD40 @ =sub_80CBDB0 - str r0, [r4, 0x1C] -_080CBD30: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080CBDAA - .align 2, 0 -_080CBD3C: .4byte gUnknown_083D680C -_080CBD40: .4byte sub_80CBDB0 -_080CBD44: - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - adds r1, r0, r5 - movs r2, 0 - ldrsb r2, [r1, r2] - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - muls r0, r2 - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080CBD92 - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080CBD8A - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080CBD90 -_080CBD8A: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080CBD90: - strb r0, [r1] -_080CBD92: - movs r6, 0x30 - ldrsh r0, [r4, r6] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] -_080CBDAA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80CBCF8 - - thumb_func_start sub_80CBDB0 -sub_80CBDB0: @ 80CBDB0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080CBDC2 - adds r0, r4, 0 - bl move_anim_8072740 -_080CBDC2: - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CBDB0 - - thumb_func_start sub_80CBDF4 -sub_80CBDF4: @ 80CBDF4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080CBF48 @ =gTasks - adds r5, r0, r1 - ldr r4, _080CBF4C @ =gBattleAnimBankTarget - ldrb r0, [r4] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - strh r0, [r5, 0x10] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_807A100 - strh r0, [r5, 0x1C] - ldrb r0, [r4] - movs r1, 0 - bl sub_807A100 - strh r0, [r5, 0x1E] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0x1 - bne _080CBE5C - movs r1, 0x1 -_080CBE5C: - strh r1, [r5, 0x12] - movs r3, 0x12 - ldrsh r0, [r5, r3] - lsls r0, 6 - movs r1, 0x38 - subs r1, r0 - strh r1, [r5, 0x1A] - ldrh r0, [r5, 0x16] - subs r0, r1 - ldrh r1, [r5, 0x14] - adds r0, r1 - strh r0, [r5, 0x18] - ldr r0, _080CBF50 @ =gSpriteTemplate_83D6884 - movs r2, 0x18 - ldrsh r1, [r5, r2] - movs r3, 0x1A - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xC] - cmp r0, 0x40 - bne _080CBE94 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080CBE94: - ldr r4, _080CBF54 @ =gSprites - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA - strh r1, [r0, 0x2E] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x18] - strh r1, [r0, 0x30] - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - movs r1, 0x1C - ldrsh r0, [r5, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r5, r3] - muls r1, r0 - ldrh r0, [r5, 0x14] - subs r0, r1 - strh r0, [r2, 0x32] - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x1A] - strh r1, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x1E - ldrsh r0, [r5, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r2, [r5, r3] - muls r0, r2 - ldrh r2, [r5, 0x16] - adds r0, r2 - strh r0, [r1, 0x36] - movs r3, 0xC - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_80CC338 - movs r1, 0xC - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x38] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_80786EC - ldr r0, _080CBF58 @ =sub_80CBF5C - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CBF48: .4byte gTasks -_080CBF4C: .4byte gBattleAnimBankTarget -_080CBF50: .4byte gSpriteTemplate_83D6884 -_080CBF54: .4byte gSprites -_080CBF58: .4byte sub_80CBF5C - thumb_func_end sub_80CBDF4 - - thumb_func_start sub_80CBF5C -sub_80CBF5C: @ 80CBF5C - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080CBFA0 @ =gTasks - adds r6, r0, r1 - movs r0, 0xC - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080CBFA4 @ =gSprites - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r5, [r6, r1] - cmp r5, 0x7 - bne _080CBF84 - b _080CC1B4 -_080CBF84: - cmp r5, 0x7 - bgt _080CBFD2 - cmp r5, 0x3 - bne _080CBF8E - b _080CC0A6 -_080CBF8E: - cmp r5, 0x3 - bgt _080CBFA8 - cmp r5, 0x1 - beq _080CC038 - cmp r5, 0x1 - bgt _080CC088 - cmp r5, 0 - beq _080CC01A - b _080CC330 - .align 2, 0 -_080CBFA0: .4byte gTasks -_080CBFA4: .4byte gSprites -_080CBFA8: - cmp r5, 0x5 - bne _080CBFAE - b _080CC11C -_080CBFAE: - cmp r5, 0x5 - ble _080CBFB4 - b _080CC196 -_080CBFB4: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080CBFCA - b _080CC330 -_080CBFCA: - movs r0, 0x5 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CBFD2: - cmp r5, 0xB - bne _080CBFD8 - b _080CC298 -_080CBFD8: - cmp r5, 0xB - bgt _080CC006 - cmp r5, 0x9 - bne _080CBFE2 - b _080CC206 -_080CBFE2: - cmp r5, 0x9 - ble _080CBFE8 - b _080CC27C -_080CBFE8: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080CBFFE - b _080CC330 -_080CBFFE: - movs r0, 0x9 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CC006: - cmp r5, 0xD - bne _080CC00C - b _080CC30A -_080CC00C: - cmp r5, 0xD - bge _080CC012 - b _080CC2EA -_080CC012: - cmp r5, 0xFF - bne _080CC018 - b _080CC31A -_080CC018: - b _080CC330 -_080CC01A: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080CC030 - b _080CC330 -_080CC030: - movs r0, 0x1 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CC038: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - ldrh r0, [r6, 0x10] - adds r0, 0x2 - strh r0, [r6, 0x10] - strh r5, [r6, 0xE] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC088: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080CC09E - b _080CC330 -_080CC09E: - movs r0, 0x3 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CC0A6: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r1, r0 - ldrh r0, [r6, 0x16] - subs r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - movs r0, 0x2 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC11C: - ldrh r1, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r1, r3 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r2, 0x1E - ldrsh r0, [r6, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x16] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x3 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC196: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080CC1AC - b _080CC330 -_080CC1AC: - movs r0, 0x7 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CC1B4: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - adds r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x4 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC206: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r0, r1 - ldrh r3, [r6, 0x16] - adds r0, r3 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - movs r0, 0x5 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC27C: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080CC330 - movs r0, 0xB - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080CC32E -_080CC298: - ldrh r2, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r2, r0 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x18] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x1A] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80CC338 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x6 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl sub_80786EC - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC2EA: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80CC358 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080CC330 - adds r0, r4, 0 - bl DestroySprite - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080CC32E -_080CC30A: - movs r1, 0x20 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CC330 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080CC330 -_080CC31A: - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080CC330 - movs r0, 0 - strh r0, [r6, 0xA] - ldrh r0, [r6, 0x26] -_080CC32E: - strh r0, [r6, 0x8] -_080CC330: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80CBF5C - - thumb_func_start sub_80CC338 -sub_80CC338: @ 80CC338 - push {lr} - movs r2, 0x8 - movs r3, 0x36 - ldrsh r1, [r0, r3] - movs r3, 0x22 - ldrsh r0, [r0, r3] - cmp r1, r0 - bge _080CC34E - negs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 -_080CC34E: - lsls r0, r2, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80CC338 - - thumb_func_start sub_80CC358 -sub_80CC358: @ 80CC358 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _080CC3EE - movs r0, 0 - strh r0, [r6, 0x24] - ldr r0, _080CC3F8 @ =gSprites - mov r8, r0 - movs r2, 0xC - ldrsh r1, [r6, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - ldrh r2, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r2, r0 - ldr r0, _080CC3FC @ =gSpriteTemplate_83D6884 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r3, [r6, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080CC3EE - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - mov r0, r8 - adds r4, r5, r0 - strh r7, [r4, 0x3A] - movs r0, 0xC - strh r0, [r4, 0x3C] - ldr r0, _080CC400 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldrh r2, [r6, 0x22] - movs r0, 0x1 - ands r0, r2 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r6, 0x10] - adds r4, 0x43 - strb r0, [r4] - mov r0, r8 - adds r0, 0x1C - adds r5, r0 - ldr r0, _080CC404 @ =sub_80CC408 - str r0, [r5] -_080CC3EE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CC3F8: .4byte gSprites -_080CC3FC: .4byte gSpriteTemplate_83D6884 -_080CC400: .4byte gTasks -_080CC404: .4byte sub_80CC408 - thumb_func_end sub_80CC358 - - thumb_func_start sub_80CC408 -sub_80CC408: @ 80CC408 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CC46A - movs r0, 0 - strh r0, [r4, 0x2E] - 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, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080CC46A - ldr r3, _080CC470 @ =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 -_080CC46A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CC470: .4byte gTasks - thumb_func_end sub_80CC408 - - 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 @ =gBattleAnimBankAttacker - b _080CC492 - .align 2, 0 -_080CC488: .4byte gBattleAnimArgs -_080CC48C: .4byte gBattleAnimBankAttacker -_080CC490: - ldr r0, _080CC4B0 @ =gBattleAnimBankTarget -_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 gBattleAnimBankTarget -_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 @ =gBattleAnimBankTarget - 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 GetAnimBankSpriteId -_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 gBattleAnimBankTarget -_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 @ =gBattleAnimBankAttacker - b _080CC6FA - .align 2, 0 -_080CC6F4: .4byte gBattleAnimBankAttacker -_080CC6F8: - ldr r4, _080CC734 @ =gBattleAnimBankTarget -_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 gBattleAnimBankTarget -_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 NotInBattle - 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 @ =gBattleAnimBankAttacker - 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 gBattleAnimBankAttacker -_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 StoreSpriteCallbackInData6 - 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 @ =gBattleAnimBankAttacker - 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 gBattleAnimBankAttacker -_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 StoreSpriteCallbackInData6 - 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 @ =gBattleAnimBankTarget - 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 gBattleAnimBankTarget -_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 @ =gBattleAnimBankTarget - 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 gBattleAnimBankTarget -_080CC9FC: - ldr r5, _080CCA54 @ =gBattleAnimBankTarget - 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 IsAnimBankSpriteVisible - 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 gBattleAnimBankTarget -_080CCA58: - ldr r4, _080CCAA4 @ =gBattleAnimBankTarget - 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 @ =gBattleAnimBankTarget - 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 gBattleAnimBankTarget -_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 StoreSpriteCallbackInData6 - 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 @ =gBattleAnimBankAttacker - 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 gBattleAnimBankAttacker -_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 NotInBattle - 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 @ =gBattleAnimBankAttacker - 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 NotInBattle - 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 gBattleAnimBankAttacker -_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} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x60 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CCE6A - movs r0, 0 - strh r0, [r4, 0x30] - ldr r1, _080CCEB0 @ =gPlttBufferFaded - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - movs r2, 0 - adds r6, r1, 0 - adds r3, r6, 0 -_080CCE44: - movs r1, 0x32 - ldrsh r0, [r4, r1] - adds r2, 0x1 - adds r0, r2 - lsls r1, r0, 1 - adds r1, r3 - adds r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - cmp r2, 0x5 - ble _080CCE44 - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x7 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_080CCE6A: - ldrh r2, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x6 - ble _080CCE9E - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _080CCEB8 - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CCE9E - movs r0, 0 - strh r0, [r4, 0x3A] - subs r2, 0x1 - strh r2, [r4, 0x3C] - ldr r3, _080CCEB4 @ =REG_BLDALPHA - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - strh r1, [r3] -_080CCE9E: - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080CCEB8 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080CCEF4 - .align 2, 0 -_080CCEB0: .4byte gPlttBufferFaded -_080CCEB4: .4byte REG_BLDALPHA -_080CCEB8: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CCEF4 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r1, 0x1 - strh r1, [r4, 0x3C] - ldr r3, _080CCEFC @ =REG_BLDALPHA - lsls r2, r1, 8 - movs r0, 0x10 - subs r0, r1 - orrs r2, r0 - strh r2, [r3] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080CCEF4 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080CCF00 @ =sub_807861C - str r0, [r4, 0x1C] -_080CCEF4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CCEFC: .4byte REG_BLDALPHA -_080CCF00: .4byte sub_807861C - thumb_func_end sub_80CCE0C - - thumb_func_start sub_80CCF04 -sub_80CCF04: @ 80CCF04 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080CCF5C @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080CCF60 @ =0x0000ffe8 - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - strh r5, [r4, 0x3A] - movs r0, 0x10 - strh r0, [r4, 0x3C] - ldr r1, _080CCF64 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080CCF68 @ =REG_BLDALPHA - ldrh r0, [r4, 0x3C] - lsls r0, 8 - ldrh r1, [r4, 0x3A] - orrs r0, r1 - strh r0, [r2] - ldr r0, _080CCF6C @ =sub_80CCF70 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CCF5C: .4byte gBattleAnimBankTarget -_080CCF60: .4byte 0x0000ffe8 -_080CCF64: .4byte REG_BLDCNT -_080CCF68: .4byte REG_BLDALPHA -_080CCF6C: .4byte sub_80CCF70 - thumb_func_end sub_80CCF04 - - thumb_func_start sub_80CCF70 -sub_80CCF70: @ 80CCF70 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080CCF7E - b _080CD0C0 -_080CCF7E: - lsls r0, 2 - ldr r1, _080CCF88 @ =_080CCF8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CCF88: .4byte _080CCF8C - .align 2, 0 -_080CCF8C: - .4byte _080CCFA0 - .4byte _080CD004 - .4byte _080CD020 - .4byte _080CD09C - .4byte _080CD0B0 -_080CCFA0: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bgt _080CCFAE - b _080CD0C0 -_080CCFAE: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CCFD0 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080CCFDE - adds r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080CCFDE -_080CCFD0: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080CCFDE - subs r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080CCFDE: - ldr r2, _080CD000 @ =REG_BLDALPHA - ldrh r0, [r4, 0x3C] - lsls r0, 8 - ldrh r1, [r4, 0x3A] - orrs r0, r1 - strh r0, [r2] - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080CD0C0 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080CD0C0 - strh r0, [r4, 0x30] - b _080CD0A8 - .align 2, 0 -_080CD000: .4byte REG_BLDALPHA -_080CD004: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080CD0C0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080CD0A8 -_080CD020: - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x4 - bl sub_80CD0CC - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080CD042 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080CD042: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080CD0C0 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080CD068 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080CD076 - subs r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080CD076 -_080CD068: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080CD076 - adds r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080CD076: - ldr r0, _080CD098 @ =REG_BLDALPHA - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r2, [r4, 0x3A] - orrs r1, r2 - strh r1, [r0] - movs r0, 0x3A - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _080CD0C0 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _080CD0C0 - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - b _080CD0A8 - .align 2, 0 -_080CD098: .4byte REG_BLDALPHA -_080CD09C: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080CD0A8: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080CD0C0 -_080CD0B0: - ldr r0, _080CD0C8 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r4, 0 - bl move_anim_8072740 -_080CD0C0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD0C8: .4byte REG_BLDCNT - thumb_func_end sub_80CCF70 - - thumb_func_start sub_80CD0CC -sub_80CD0CC: @ 80CD0CC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0xB - bgt _080CD0DE - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080CD0DE: - ldrh r5, [r4, 0x34] - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - cmp r0, 0x17 - bhi _080CD0F4 - ldrh r0, [r4, 0x36] - subs r0, 0x2 - strh r0, [r4, 0x36] -_080CD0F4: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x2F - ble _080CD102 - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080CD102: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0x9 - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bge _080CD128 - movs r1, 0x26 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x26] -_080CD128: - adds r0, r5, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3B - ble _080CD138 - movs r0, 0 - strh r0, [r4, 0x34] -_080CD138: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CD0CC - - thumb_func_start sub_80CD140 -sub_80CD140: @ 80CD140 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080CD184 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080CD154 - adds r0, r4, 0 - bl sub_8078650 -_080CD154: - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldr r1, _080CD188 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CD18C @ =sub_8078394 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD184: .4byte gBattleAnimArgs -_080CD188: .4byte move_anim_8072740 -_080CD18C: .4byte sub_8078394 - thumb_func_end sub_80CD140 - - thumb_func_start sub_80CD190 -sub_80CD190: @ 80CD190 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080CD1A4 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CD1AC - ldr r0, _080CD1A8 @ =gBattleAnimBankAttacker - b _080CD1AE - .align 2, 0 -_080CD1A4: .4byte gBattleAnimArgs -_080CD1A8: .4byte gBattleAnimBankAttacker -_080CD1AC: - ldr r0, _080CD1F0 @ =gBattleAnimBankTarget -_080CD1AE: - ldrb r6, [r0] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080CD1F8 - movs r1, 0x2 - adds r0, r6, 0 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080CD1F8 - ldr r4, _080CD1F4 @ =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - adds r0, r6, 0 - bl sub_807A3FC - movs r2, 0 - ldrsh r1, [r4, r2] - adds r0, r5, 0 - bl sub_807867C - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - b _080CD248 - .align 2, 0 -_080CD1F0: .4byte gBattleAnimBankTarget -_080CD1F4: .4byte gBattleAnimArgs -_080CD1F8: - ldr r4, _080CD218 @ =gBattleAnimArgs - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080CD21C - adds r0, r6, 0 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - b _080CD22E - .align 2, 0 -_080CD218: .4byte gBattleAnimArgs -_080CD21C: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 -_080CD22E: - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldr r0, _080CD268 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_807867C -_080CD248: - ldr r1, _080CD268 @ =gBattleAnimArgs - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x32] - ldr r1, _080CD26C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CD270 @ =sub_8078394 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CD268: .4byte gBattleAnimArgs -_080CD26C: .4byte move_anim_8072740 -_080CD270: .4byte sub_8078394 - thumb_func_end sub_80CD190 - - thumb_func_start sub_80CD274 -sub_80CD274: @ 80CD274 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r0, _080CD2A0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CD2A8 - ldr r0, _080CD2A4 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - b _080CD2C2 - .align 2, 0 -_080CD2A0: .4byte gBattleAnimBankAttacker -_080CD2A4: .4byte gBattleAnimArgs -_080CD2A8: - ldr r2, _080CD2CC @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080CD2C2: - ldr r0, _080CD2D0 @ =sub_80CD2D4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD2CC: .4byte gBattleAnimArgs -_080CD2D0: .4byte sub_80CD2D4 - thumb_func_end sub_80CD274 - - thumb_func_start sub_80CD2D4 -sub_80CD2D4: @ 80CD2D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080CD30C - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x1E - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r4, 0x26] - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 18 - asrs r0, 16 - movs r1, 0x3 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080CD30C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080CD320 - adds r0, r4, 0 - bl move_anim_8072740 -_080CD320: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CD2D4 - - thumb_func_start sub_80CD328 -sub_80CD328: @ 80CD328 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r0, _080CD358 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CD360 - ldr r1, _080CD35C @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x1 - strh r0, [r4, 0x34] - b _080CD37E - .align 2, 0 -_080CD358: .4byte gBattleAnimBankAttacker -_080CD35C: .4byte gBattleAnimArgs -_080CD360: - ldr r2, _080CD388 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldr r0, _080CD38C @ =0x0000ffff - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080CD37E: - ldr r0, _080CD390 @ =sub_80CD394 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD388: .4byte gBattleAnimArgs -_080CD38C: .4byte 0x0000ffff -_080CD390: .4byte sub_80CD394 - thumb_func_end sub_80CD328 - - thumb_func_start sub_80CD394 -sub_80CD394: @ 80CD394 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080CD3D8 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080CD3D8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CD394 - - thumb_func_start sub_80CD3E0 -sub_80CD3E0: @ 80CD3E0 - push {lr} - ldrh r1, [r0, 0x20] - subs r1, 0x20 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x22] - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldr r1, _080CD400 @ =sub_80782D8 - str r1, [r0, 0x1C] - ldr r1, _080CD404 @ =sub_80CD408 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080CD400: .4byte sub_80782D8 -_080CD404: .4byte sub_80CD408 - thumb_func_end sub_80CD3E0 - - thumb_func_start sub_80CD408 -sub_80CD408: @ 80CD408 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r6, [r5, 0x38] - movs r1, 0x1 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _080CD41E - cmp r0, 0x1 - beq _080CD438 - b _080CD49E -_080CD41E: - strh r1, [r5, 0x2E] - ldr r0, _080CD430 @ =sub_80782D8 - str r0, [r5, 0x1C] - ldr r1, _080CD434 @ =sub_80CD408 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080CD49E - .align 2, 0 -_080CD430: .4byte sub_80782D8 -_080CD434: .4byte sub_80CD408 -_080CD438: - ldrh r3, [r5, 0x24] - ldrh r0, [r5, 0x20] - adds r3, r0 - movs r0, 0 - strh r3, [r5, 0x20] - ldrh r4, [r5, 0x26] - ldrh r1, [r5, 0x22] - adds r4, r1 - strh r4, [r5, 0x22] - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r2, _080CD4AC @ =gUnknown_083D6DDC - lsls r0, r6, 16 - asrs r0, 24 - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r3, r1 - strh r3, [r5, 0x32] - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r4, r0 - strh r4, [r5, 0x36] - ldr r0, _080CD4B0 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080CD4B4 @ =sub_80CD4B8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - movs r0, 0x3F - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xD2 - bl PlaySE12WithPanning -_080CD49E: - ldrh r0, [r5, 0x38] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x38] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CD4AC: .4byte gUnknown_083D6DDC -_080CD4B0: .4byte sub_8078B34 -_080CD4B4: .4byte sub_80CD4B8 - thumb_func_end sub_80CD408 - - thumb_func_start sub_80CD4B8 -sub_80CD4B8: @ 80CD4B8 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _080CD4E0 - movs r0, 0xA - strh r0, [r2, 0x2E] - ldr r0, _080CD4D8 @ =sub_80782D8 - str r0, [r2, 0x1C] - ldr r1, _080CD4DC @ =sub_80CD4EC - adds r0, r2, 0 - bl StoreSpriteCallbackInData6 - b _080CD4E4 - .align 2, 0 -_080CD4D8: .4byte sub_80782D8 -_080CD4DC: .4byte sub_80CD4EC -_080CD4E0: - ldr r0, _080CD4E8 @ =sub_80CD408 - str r0, [r2, 0x1C] -_080CD4E4: - pop {r0} - bx r0 - .align 2, 0 -_080CD4E8: .4byte sub_80CD408 - thumb_func_end sub_80CD4B8 - - thumb_func_start sub_80CD4EC -sub_80CD4EC: @ 80CD4EC - push {r4-r7,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x6] - cmp r1, 0 - bne _080CD514 - movs r0, 0x3 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r5, 0x32] - ldr r0, _080CD50C @ =sub_80782D8 - str r0, [r5, 0x1C] - ldr r1, _080CD510 @ =sub_80CD5A8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080CD594 - .align 2, 0 -_080CD50C: .4byte sub_80782D8 -_080CD510: .4byte sub_80CD5A8 -_080CD514: - ldrh r0, [r5, 0x6] - cmp r0, 0x2 - beq _080CD534 - cmp r0, 0x2 - bgt _080CD524 - cmp r0, 0x1 - beq _080CD52A - b _080CD548 -_080CD524: - cmp r0, 0x3 - beq _080CD53C - b _080CD548 -_080CD52A: - ldr r6, _080CD530 @ =0x0000fff8 - adds r7, r6, 0 - b _080CD54C - .align 2, 0 -_080CD530: .4byte 0x0000fff8 -_080CD534: - ldr r7, _080CD538 @ =0x0000fff8 - b _080CD54A - .align 2, 0 -_080CD538: .4byte 0x0000fff8 -_080CD53C: - movs r7, 0x8 - ldr r6, _080CD544 @ =0x0000fff8 - b _080CD54C - .align 2, 0 -_080CD544: .4byte 0x0000fff8 -_080CD548: - movs r7, 0x8 -_080CD54A: - movs r6, 0x8 -_080CD54C: - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080CD59C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080CD5A0 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080CD5A4 @ =sub_80CD654 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080CD594: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CD59C: .4byte gBattleAnimBankTarget -_080CD5A0: .4byte sub_8078B34 -_080CD5A4: .4byte sub_80CD654 - thumb_func_end sub_80CD4EC - - thumb_func_start sub_80CD5A8 -sub_80CD5A8: @ 80CD5A8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080CD5C8 - ldrh r0, [r4, 0x30] - adds r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080CD5D8 - movs r0, 0x10 - b _080CD5D6 -_080CD5C8: - ldrh r0, [r4, 0x30] - subs r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080CD5D8 - movs r0, 0 -_080CD5D6: - strh r0, [r4, 0x30] -_080CD5D8: - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80791A8 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080CD634 @ =0x00007fff - bl BlendPalettes - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _080CD640 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - lsls r0, r1, 5 - ldr r2, _080CD638 @ =gPlttBufferUnfaded + 0x210 - adds r0, r2 - lsls r1, 4 - ldr r3, _080CD63C @ =0x00000101 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x4 - bl LoadPalette - movs r0, 0x3F - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC0 - bl PlaySE12WithPanning - b _080CD648 - .align 2, 0 -_080CD634: .4byte 0x00007fff -_080CD638: .4byte gPlttBufferUnfaded + 0x210 -_080CD63C: .4byte 0x00000101 -_080CD640: - cmp r0, 0 - bne _080CD648 - ldr r0, _080CD650 @ =sub_80CD654 - str r0, [r4, 0x1C] -_080CD648: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD650: .4byte sub_80CD654 - thumb_func_end sub_80CD5A8 - - thumb_func_start sub_80CD654 -sub_80CD654: @ 80CD654 - push {lr} - adds r2, r0, 0 - ldr r0, _080CD670 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080CD674 @ =0x0000ffff - cmp r1, r0 - bne _080CD66C - movs r0, 0 - strh r0, [r2, 0x30] - strh r0, [r2, 0x2E] - ldr r0, _080CD678 @ =sub_80CD67C - str r0, [r2, 0x1C] -_080CD66C: - pop {r0} - bx r0 - .align 2, 0 -_080CD670: .4byte gBattleAnimArgs -_080CD674: .4byte 0x0000ffff -_080CD678: .4byte sub_80CD67C - thumb_func_end sub_80CD654 - - thumb_func_start sub_80CD67C -sub_80CD67C: @ 80CD67C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080CD6B0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - 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] -_080CD6B0: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bne _080CD6C4 - adds r0, r4, 0 - bl move_anim_8072740 -_080CD6C4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CD67C - - thumb_func_start sub_80CD6CC -sub_80CD6CC: @ 80CD6CC - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080CD6EC @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r3, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080CD6F0 - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - b _080CD742 - .align 2, 0 -_080CD6EC: .4byte gBattleAnimArgs -_080CD6F0: - cmp r0, 0x2 - bne _080CD70C - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x20 - b _080CD73E -_080CD70C: - cmp r0, 0x3 - bne _080CD728 - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - b _080CD73E -_080CD728: - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 -_080CD73E: - orrs r0, r1 - strb r0, [r3, 0x3] -_080CD742: - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, _080CD768 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080CD76C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldr r1, _080CD770 @ =sub_80CD3E0 - str r1, [r3, 0x1C] - adds r0, r3, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD768: .4byte 0x000003ff -_080CD76C: .4byte 0xfffffc00 -_080CD770: .4byte sub_80CD3E0 - thumb_func_end sub_80CD6CC - - thumb_func_start sub_80CD774 -sub_80CD774: @ 80CD774 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - strh r0, [r3, 0x2E] - ldr r0, _080CD79C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080CD7B0 - cmp r0, 0x1 - bgt _080CD7A0 - cmp r0, 0 - beq _080CD7A6 - b _080CD7C0 - .align 2, 0 -_080CD79C: .4byte gBattleAnimArgs -_080CD7A0: - cmp r0, 0x2 - beq _080CD7B8 - b _080CD7C0 -_080CD7A6: - ldr r0, _080CD7AC @ =sub_80CD7CC - b _080CD7C2 - .align 2, 0 -_080CD7AC: .4byte sub_80CD7CC -_080CD7B0: - ldr r0, _080CD7B4 @ =sub_80CD8A8 - b _080CD7C2 - .align 2, 0 -_080CD7B4: .4byte sub_80CD8A8 -_080CD7B8: - ldr r0, _080CD7BC @ =sub_80CD8F8 - b _080CD7C2 - .align 2, 0 -_080CD7BC: .4byte sub_80CD8F8 -_080CD7C0: - ldr r0, _080CD7C8 @ =sub_80CD9B8 -_080CD7C2: - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080CD7C8: .4byte sub_80CD9B8 - thumb_func_end sub_80CD774 - - thumb_func_start sub_80CD7CC -sub_80CD7CC: @ 80CD7CC - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x6 - strh r0, [r4, 0x2E] - ldr r5, _080CD80C @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - beq _080CD7EA - movs r1, 0x2 -_080CD7EA: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080CD810 @ =gObjectBankIDs - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080CD814 @ =sub_80CD81C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CD818 @ =sub_8078458 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD80C: .4byte gBattleAnimBankAttacker -_080CD810: .4byte gObjectBankIDs -_080CD814: .4byte sub_80CD81C -_080CD818: .4byte sub_8078458 - thumb_func_end sub_80CD7CC - - thumb_func_start sub_80CD81C -sub_80CD81C: @ 80CD81C - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0x2E - ldrsh r6, [r5, r0] - cmp r6, 0 - bne _080CD858 - ldr r1, _080CD898 @ =gObjectBankIDs - ldr r4, _080CD89C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - movs r1, 0 - bl sub_8078E70 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldr r2, _080CD8A0 @ =0xfffffd00 - adds r1, r2, 0 - cmp r0, 0 - beq _080CD854 - movs r0, 0xC0 - lsls r0, 2 - adds r1, r0, 0 -_080CD854: - strh r1, [r5, 0x36] - strh r6, [r5, 0x38] -_080CD858: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F9C - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080CD892 - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080CD8A4 @ =sub_80CD9B8 - str r0, [r5, 0x1C] -_080CD892: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CD898: .4byte gObjectBankIDs -_080CD89C: .4byte gBattleAnimBankAttacker -_080CD8A0: .4byte 0xfffffd00 -_080CD8A4: .4byte sub_80CD9B8 - thumb_func_end sub_80CD81C - - thumb_func_start sub_80CD8A8 -sub_80CD8A8: @ 80CD8A8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r5, _080CD8E8 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080CD8C6 - movs r0, 0x3 - negs r0, r0 - adds r1, r0, 0 -_080CD8C6: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080CD8EC @ =gObjectBankIDs - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080CD8F0 @ =sub_80CD9B8 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CD8F4 @ =sub_8078458 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD8E8: .4byte gBattleAnimBankAttacker -_080CD8EC: .4byte gObjectBankIDs -_080CD8F0: .4byte sub_80CD9B8 -_080CD8F4: .4byte sub_8078458 - thumb_func_end sub_80CD8A8 - - thumb_func_start sub_80CD8F8 -sub_80CD8F8: @ 80CD8F8 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080CD912 - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080CD918 @ =sub_80CD91C - str r0, [r1, 0x1C] -_080CD912: - pop {r0} - bx r0 - .align 2, 0 -_080CD918: .4byte sub_80CD91C - thumb_func_end sub_80CD8F8 - - thumb_func_start sub_80CD91C -sub_80CD91C: @ 80CD91C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080CD96C - ldr r1, _080CD958 @ =gObjectBankIDs - ldr r4, _080CD95C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CD960 - movs r0, 0xFC - lsls r0, 8 - strh r0, [r5, 0x36] - movs r0, 0xC0 - lsls r0, 4 - b _080CD96A - .align 2, 0 -_080CD958: .4byte gObjectBankIDs -_080CD95C: .4byte gBattleAnimBankAttacker -_080CD960: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r5, 0x36] - movs r0, 0xF4 - lsls r0, 8 -_080CD96A: - strh r0, [r5, 0x38] -_080CD96C: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F9C - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080CD9AC - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F40 - ldr r0, _080CD9B4 @ =sub_80CD9B8 - str r0, [r5, 0x1C] -_080CD9AC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD9B4: .4byte sub_80CD9B8 - thumb_func_end sub_80CD91C - - thumb_func_start sub_80CD9B8 -sub_80CD9B8: @ 80CD9B8 - push {lr} - bl move_anim_8072740 - pop {r0} - bx r0 - thumb_func_end sub_80CD9B8 - - thumb_func_start sub_80CD9C4 -sub_80CD9C4: @ 80CD9C4 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _080CD9D0 @ =sub_80CD9D4 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080CD9D0: .4byte sub_80CD9D4 - thumb_func_end sub_80CD9C4 - - thumb_func_start sub_80CD9D4 -sub_80CD9D4: @ 80CD9D4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080CDA2E - cmp r5, 0x1 - bgt _080CD9EA - cmp r5, 0 - beq _080CD9F0 - b _080CDAC2 -_080CD9EA: - cmp r5, 0x2 - beq _080CDA80 - b _080CDAC2 -_080CD9F0: - strh r5, [r4, 0x30] - ldr r1, _080CDA74 @ =gObjectBankIDs - ldr r2, _080CDA78 @ =gBattleAnimBankAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x32] - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldr r2, _080CDA7C @ =0xfffffe00 - adds r1, r2, 0 - cmp r0, 0 - beq _080CDA18 - movs r0, 0x80 - lsls r0, 2 - adds r1, r0, 0 -_080CDA18: - strh r1, [r4, 0x36] - strh r5, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8078E70 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_080CDA2E: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F9C - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080CDAC2 - movs r0, 0 - strh r0, [r4, 0x30] - movs r2, 0x36 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080CDAC2 - .align 2, 0 -_080CDA74: .4byte gObjectBankIDs -_080CDA78: .4byte gBattleAnimBankAttacker -_080CDA7C: .4byte 0xfffffe00 -_080CDA80: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F9C - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080CDAC2 - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F40 - adds r0, r4, 0 - bl move_anim_8072740 -_080CDAC2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CD9D4 - - thumb_func_start sub_80CDAC8 -sub_80CDAC8: @ 80CDAC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080CDB0C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldr r1, _080CDB10 @ =gObjectBankIDs - ldr r2, _080CDB14 @ =gBattleAnimBankAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r5, 0x8] - ldrb r0, [r2] - bl GetBankSide - lsls r0, 24 - lsrs r2, r0, 24 - strh r2, [r5, 0xA] - strh r4, [r5, 0xC] - ldr r0, _080CDB18 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - beq _080CDB1C - cmp r1, 0x1 - beq _080CDB38 - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080CDB56 - .align 2, 0 -_080CDB0C: .4byte gTasks -_080CDB10: .4byte gObjectBankIDs -_080CDB14: .4byte gBattleAnimBankAttacker -_080CDB18: .4byte gBattleAnimArgs -_080CDB1C: - strh r1, [r5, 0xC] - movs r0, 0x8 - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] - movs r0, 0x3 - strh r0, [r5, 0x12] - cmp r2, 0 - bne _080CDB30 - negs r0, r0 - strh r0, [r5, 0x12] -_080CDB30: - ldr r0, _080CDB34 @ =sub_80CDB60 - b _080CDB54 - .align 2, 0 -_080CDB34: .4byte sub_80CDB60 -_080CDB38: - movs r0, 0x8 - strh r0, [r5, 0xE] - movs r0, 0xC0 - lsls r0, 3 - strh r0, [r5, 0x10] - movs r1, 0xC0 - strh r1, [r5, 0x12] - cmp r2, 0 - bne _080CDB52 - negs r0, r0 - strh r0, [r5, 0x10] - negs r0, r1 - strh r0, [r5, 0x12] -_080CDB52: - ldr r0, _080CDB5C @ =sub_80CDD20 -_080CDB54: - str r0, [r5] -_080CDB56: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDB5C: .4byte sub_80CDD20 - thumb_func_end sub_80CDAC8 - - thumb_func_start sub_80CDB60 -sub_80CDB60: @ 80CDB60 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080CDB84 @ =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080CDB7A - b _080CDD1A -_080CDB7A: - lsls r0, 2 - ldr r1, _080CDB88 @ =_080CDB8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CDB84: .4byte gTasks -_080CDB88: .4byte _080CDB8C - .align 2, 0 -_080CDB8C: - .4byte _080CDBA0 - .4byte _080CDBD2 - .4byte _080CDC2C - .4byte _080CDCA4 - .4byte _080CDCE8 -_080CDBA0: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _080CDBB0 - ldrh r2, [r4, 0x12] - ldrh r3, [r4, 0x10] - adds r2, r3 - b _080CDCF6 -_080CDBB0: - movs r0, 0x8 - strh r0, [r4, 0xE] - strh r1, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0xC0 - cmp r0, 0 - bne _080CDBC6 - movs r2, 0xC0 - negs r2, r2 - adds r1, r2, 0 -_080CDBC6: - strh r1, [r4, 0x12] - ldrb r0, [r4, 0x8] - movs r1, 0 - bl sub_8078E70 - b _080CDCDC -_080CDBD2: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080CDBF8 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8078F9C - b _080CDD08 -_080CDBF8: - movs r0, 0x8 - strh r0, [r4, 0xE] - ldr r2, _080CDC28 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080CDC1E - movs r1, 0x2 -_080CDC1E: - strh r1, [r4, 0x12] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080CDCDC - .align 2, 0 -_080CDC28: .4byte gSprites -_080CDC2C: - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080CDC88 - ldrh r1, [r4, 0x14] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080CDC46 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - b _080CDD1A -_080CDC46: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080CDC68 - ldr r2, _080CDC64 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r4, 0x10] - adds r1, r2 - b _080CDC7C - .align 2, 0 -_080CDC64: .4byte gSprites -_080CDC68: - ldr r2, _080CDC84 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r4, 0x12] - subs r1, r2 -_080CDC7C: - strh r1, [r0, 0x24] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080CDD08 - .align 2, 0 -_080CDC84: .4byte gSprites -_080CDC88: - ldr r2, _080CDCA0 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - strh r1, [r0, 0x24] - movs r0, 0xC - strh r0, [r4, 0xE] - b _080CDCDC - .align 2, 0 -_080CDCA0: .4byte gSprites -_080CDCA4: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080CDCB4 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _080CDD1A -_080CDCB4: - movs r0, 0x3 - strh r0, [r4, 0xE] - ldr r2, _080CDCE4 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x8 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080CDCDA - movs r1, 0x8 -_080CDCDA: - strh r1, [r4, 0x12] -_080CDCDC: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080CDD1A - .align 2, 0 -_080CDCE4: .4byte gSprites -_080CDCE8: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080CDD14 - ldrh r2, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r2, r0 -_080CDCF6: - strh r2, [r4, 0x10] - ldr r3, _080CDD10 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] -_080CDD08: - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080CDD1A - .align 2, 0 -_080CDD10: .4byte gSprites -_080CDD14: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080CDD1A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CDB60 - - thumb_func_start sub_80CDD20 -sub_80CDD20: @ 80CDD20 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080CDD5C @ =gTasks - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080CDD60 - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8078F9C - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080CDD6C - .align 2, 0 -_080CDD5C: .4byte gTasks -_080CDD60: - ldrb r0, [r4, 0x8] - bl sub_8078F40 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080CDD6C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80CDD20 - - thumb_func_start sub_80CDD74 -sub_80CDD74: @ 80CDD74 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080CDD88 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CDD90 - ldr r4, _080CDD8C @ =gBattleAnimBankAttacker - b _080CDD92 - .align 2, 0 -_080CDD88: .4byte gBattleAnimArgs -_080CDD8C: .4byte gBattleAnimBankAttacker -_080CDD90: - ldr r4, _080CDDD0 @ =gBattleAnimBankTarget -_080CDD92: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldr r1, _080CDDD4 @ =sub_80CDEC0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CDDD8 @ =sub_8078600 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDDD0: .4byte gBattleAnimBankTarget -_080CDDD4: .4byte sub_80CDEC0 -_080CDDD8: .4byte sub_8078600 - thumb_func_end sub_80CDD74 - - thumb_func_start sub_80CDDDC -sub_80CDDDC: @ 80CDDDC - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080CDE14 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080CDE18 @ =0x0000ffd0 - adds r0, r1 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080CDE1C @ =sub_80CDE78 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CDE20 @ =sub_8078600 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CDE14: .4byte gBattleAnimBankTarget -_080CDE18: .4byte 0x0000ffd0 -_080CDE1C: .4byte sub_80CDE78 -_080CDE20: .4byte sub_8078600 - thumb_func_end sub_80CDDDC - - thumb_func_start sub_80CDE24 -sub_80CDE24: @ 80CDE24 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080CDE68 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080CDE6C @ =gBattleAnimArgs - ldr r2, _080CDE70 @ =0x0000ffd0 - adds r0, r2 - ldrh r1, [r1] - adds r0, r1 - movs r6, 0 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - strh r6, [r4, 0x2E] - strh r6, [r4, 0x30] - ldr r0, _080CDE74 @ =sub_80CDEC0 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDE68: .4byte gBattleAnimBankTarget -_080CDE6C: .4byte gBattleAnimArgs -_080CDE70: .4byte 0x0000ffd0 -_080CDE74: .4byte sub_80CDEC0 - thumb_func_end sub_80CDE24 - - thumb_func_start sub_80CDE78 -sub_80CDE78: @ 80CDE78 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080CDEA2 - movs r0, 0xC - strh r0, [r4, 0x2E] - movs r0, 0x8 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080CDEA8 @ =sub_80CDEB0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CDEAC @ =sub_8078364 - str r0, [r4, 0x1C] -_080CDEA2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CDEA8: .4byte sub_80CDEB0 -_080CDEAC: .4byte sub_8078364 - thumb_func_end sub_80CDE78 - - thumb_func_start sub_80CDEB0 -sub_80CDEB0: @ 80CDEB0 - movs r1, 0 - strh r1, [r0, 0x2E] - strh r1, [r0, 0x30] - ldr r1, _080CDEBC @ =sub_80CDEC0 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080CDEBC: .4byte sub_80CDEC0 - thumb_func_end sub_80CDEB0 - - thumb_func_start sub_80CDEC0 -sub_80CDEC0: @ 80CDEC0 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CDF08 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080CDF08 - adds r0, r3, 0 - bl move_anim_8072740 -_080CDF08: - pop {r0} - bx r0 - thumb_func_end sub_80CDEC0 - - thumb_func_start sub_80CDF0C -sub_80CDF0C: @ 80CDF0C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080CDF20 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CDF28 - ldr r4, _080CDF24 @ =gBattleAnimBankAttacker - b _080CDF2A - .align 2, 0 -_080CDF20: .4byte gBattleAnimArgs -_080CDF24: .4byte gBattleAnimBankAttacker -_080CDF28: - ldr r4, _080CDF64 @ =gBattleAnimBankTarget -_080CDF2A: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080CDF68 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x30] - ldr r0, _080CDF6C @ =sub_80CDF70 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDF64: .4byte gBattleAnimBankTarget -_080CDF68: .4byte gBattleAnimArgs -_080CDF6C: .4byte sub_80CDF70 - thumb_func_end sub_80CDF0C - - thumb_func_start sub_80CDF70 -sub_80CDF70: @ 80CDF70 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x30 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _080CDF90 - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x22] - subs r0, 0x1 - strh r0, [r2, 0x22] -_080CDF90: - ldrh r0, [r2, 0x22] - ldrh r1, [r2, 0x2E] - subs r0, r1 - strh r0, [r2, 0x22] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080CDFAC - adds r0, r2, 0 - bl move_anim_8072740 -_080CDFAC: - pop {r0} - bx r0 - thumb_func_end sub_80CDF70 - - thumb_func_start sub_80CDFB0 -sub_80CDFB0: @ 80CDFB0 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080CDFF8 @ =gBattleAnimBankAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r0, 0xC - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - movs r0, 0x2 - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - subs r0, 0x42 - bl sub_8076F98 - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, _080CDFFC @ =sub_80CE000 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDFF8: .4byte gBattleAnimBankAttacker -_080CDFFC: .4byte sub_80CE000 - thumb_func_end sub_80CDFB0 - - thumb_func_start sub_80CE000 -sub_80CE000: @ 80CE000 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080CE06C - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080CE052 - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080CE052 - ldrh r1, [r4, 0x38] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC2 - bl PlaySE12WithPanning -_080CE052: - movs r1, 0 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CE06C - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080CE06C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080CE096 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - ble _080CE096 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080CE096 - adds r0, r4, 0 - bl move_anim_8072740 -_080CE096: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CE000 - - thumb_func_start sub_80CE09C -sub_80CE09C: @ 80CE09C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080CE0E6 - ldr r4, _080CE0FC @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - ldr r5, _080CE100 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x2] - adds r0, r5 - strh r0, [r6, 0x22] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CE0E0 - ldrh r0, [r6, 0x22] - adds r0, 0xA - strh r0, [r6, 0x22] -_080CE0E0: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] -_080CE0E6: - ldr r0, _080CE100 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080CE104 @ =0x0000ffff - cmp r1, r0 - bne _080CE0F6 - adds r0, r6, 0 - bl move_anim_8072740 -_080CE0F6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CE0FC: .4byte gBattleAnimBankAttacker -_080CE100: .4byte gBattleAnimArgs -_080CE104: .4byte 0x0000ffff - thumb_func_end sub_80CE09C - - thumb_func_start sub_80CE108 -sub_80CE108: @ 80CE108 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080CE128 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080CE134 - ldr r1, _080CE12C @ =gBattleAnimArgs - ldr r0, _080CE130 @ =0x0000ffff - strh r0, [r1, 0xE] - b _080CE16C - .align 2, 0 -_080CE128: .4byte gTasks -_080CE12C: .4byte gBattleAnimArgs -_080CE130: .4byte 0x0000ffff -_080CE134: - cmp r0, 0x2 - bne _080CE140 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080CE172 -_080CE140: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080CE172 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - ldr r3, _080CE178 @ =REG_BLDALPHA - lsls r2, r1, 8 - movs r0, 0x10 - subs r0, r1 - orrs r2, r0 - strh r2, [r3] - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080CE172 -_080CE16C: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080CE172: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE178: .4byte REG_BLDALPHA - thumb_func_end sub_80CE108 - - thumb_func_start sub_80CE17C -sub_80CE17C: @ 80CE17C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8078764 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080CE1A4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080CE1A8 @ =sub_80CE1AC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE1A4: .4byte gBattleAnimArgs -_080CE1A8: .4byte sub_80CE1AC - thumb_func_end sub_80CE17C - - thumb_func_start sub_80CE1AC -sub_80CE1AC: @ 80CE1AC - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080CE1C0 - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] - b _080CE1FC -_080CE1C0: - adds r2, r5, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldr r4, _080CE204 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080CE208 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080CE20C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080CE1FC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CE204: .4byte gBattleAnimBankAttacker -_080CE208: .4byte sub_8078B34 -_080CE20C: .4byte move_anim_8072740 - thumb_func_end sub_80CE1AC - - thumb_func_start sub_80CE210 -sub_80CE210: @ 80CE210 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080CE258 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080CE252 - movs r0, 0 - strh r0, [r3, 0x8] - ldrh r1, [r3, 0xA] - adds r1, 0x1 - strh r1, [r3, 0xA] - ldr r2, _080CE25C @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x10 - bne _080CE252 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080CE252: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE258: .4byte gTasks -_080CE25C: .4byte REG_BLDALPHA - thumb_func_end sub_80CE210 - - thumb_func_start unref_sub_80CE260 -unref_sub_80CE260: @ 80CE260 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r0, _080CE2C8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcs _080CE2BC - ldr r6, _080CE2CC @ =gBattleAnimArgs - ldr r5, _080CE2D0 @ =gHealthboxIDs -_080CE274: - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080CE290 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CE290 - adds r0, r4, r5 - ldrb r0, [r0] - bl sub_8043DB0 -_080CE290: - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080CE2AE - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CE2AE - adds r0, r4, r5 - ldrb r0, [r0] - bl sub_8043DB0 -_080CE2AE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080CE2C8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcc _080CE274 -_080CE2BC: - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE2C8: .4byte gNoOfAllBanks -_080CE2CC: .4byte gBattleAnimArgs -_080CE2D0: .4byte gHealthboxIDs - thumb_func_end unref_sub_80CE260 - - thumb_func_start unref_sub_80CE2D4 -unref_sub_80CE2D4: @ 80CE2D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _080CE2EE -_080CE2DE: - ldr r0, _080CE304 @ =gHealthboxIDs - adds r0, r4, r0 - ldrb r0, [r0] - bl sub_8043DFC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080CE2EE: - ldr r0, _080CE308 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcc _080CE2DE - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CE304: .4byte gHealthboxIDs -_080CE308: .4byte gNoOfAllBanks - thumb_func_end unref_sub_80CE2D4 - - thumb_func_start sub_80CE30C -sub_80CE30C: @ 80CE30C - push {r4,lr} - adds r4, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CE322 - movs r0, 0x30 - strh r0, [r4, 0x20] - movs r0, 0x28 - b _080CE32A -_080CE322: - ldr r0, _080CE34C @ =gBattleAnimArgs - ldrh r1, [r0] - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_080CE32A: - strh r0, [r4, 0x22] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080CE350 @ =sub_80CE354 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE34C: .4byte gBattleAnimArgs -_080CE350: .4byte sub_80CE354 - thumb_func_end sub_80CE30C - - thumb_func_start sub_80CE354 -sub_80CE354: @ 80CE354 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080CE366 - adds r0, r1, 0 - bl move_anim_8072740 -_080CE366: - pop {r0} - bx r0 - thumb_func_end sub_80CE354 - - thumb_func_start sub_80CE36C -sub_80CE36C: @ 80CE36C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CE3A4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r2, _080CE3A8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r2] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x22] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r0, _080CE3AC @ =sub_80CE3B0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE3A4: .4byte gBattleAnimBankAttacker -_080CE3A8: .4byte gBattleAnimArgs -_080CE3AC: .4byte sub_80CE3B0 - thumb_func_end sub_80CE36C - - thumb_func_start sub_80CE3B0 -sub_80CE3B0: @ 80CE3B0 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CE3DA - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r2, [r1, 0x32] - movs r3, 0x32 - ldrsh r0, [r1, r3] - cmp r0, 0x77 - bgt _080CE3DA - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - adds r0, r2, 0x1 - strh r0, [r1, 0x32] -_080CE3DA: - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080CE3E8 - adds r0, r1, 0 - bl move_anim_8072740 -_080CE3E8: - pop {r0} - bx r0 - thumb_func_end sub_80CE3B0 - - thumb_func_start sub_80CE3EC -sub_80CE3EC: @ 80CE3EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - mov r8, r0 - ldr r0, _080CE4BC @ =0x0000ffff - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldr r0, _080CE4C0 @ =gTasks - mov r9, r0 - lsls r5, r7, 2 - adds r5, r7 - lsls r5, 3 - adds r6, r5, r0 - strh r4, [r6, 0x8] - strh r4, [r6, 0xA] - strh r4, [r6, 0xC] - strh r1, [r6, 0xE] - strh r4, [r6, 0x10] - strh r4, [r6, 0x12] - strh r4, [r6, 0x14] - movs r0, 0xD - strh r0, [r6, 0x16] - movs r0, 0xE - strh r0, [r6, 0x18] - movs r0, 0xF - strh r0, [r6, 0x1A] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80792C0 - mov r10, r0 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r0, 0x8 - add r9, r0 - add r5, r9 - adds r0, r5, 0 - adds r0, 0x1C - adds r5, 0x1E - adds r1, r5, 0 - mov r2, r8 - bl sub_8079BF4 - ldr r0, _080CE4C4 @ =0x000027d2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x80 - lsls r4, 9 - adds r1, r4, 0 - lsls r1, r0 - mov r0, r10 - orrs r0, r1 - mov r10, r0 - ldr r0, _080CE4C8 @ =0x000027d3 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0 - mov r1, r10 - orrs r4, r1 - ldr r0, _080CE4CC @ =0x00007fbb - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080CE4D0 @ =sub_80CE4D4 - str r1, [r6] - adds r0, r7, 0 - bl _call_via_r1 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE4BC: .4byte 0x0000ffff -_080CE4C0: .4byte gTasks -_080CE4C4: .4byte 0x000027d2 -_080CE4C8: .4byte 0x000027d3 -_080CE4CC: .4byte 0x00007fbb -_080CE4D0: .4byte sub_80CE4D4 - thumb_func_end sub_80CE3EC - - thumb_func_start sub_80CE4D4 -sub_80CE4D4: @ 80CE4D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080CE4FC @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080CE5C0 - cmp r1, 0x1 - bgt _080CE500 - cmp r1, 0 - beq _080CE50E - b _080CE65E - .align 2, 0 -_080CE4FC: .4byte gTasks -_080CE500: - cmp r1, 0x2 - bne _080CE506 - b _080CE618 -_080CE506: - cmp r1, 0x3 - bne _080CE50C - b _080CE64C -_080CE50C: - b _080CE65E -_080CE50E: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bgt _080CE51C - b _080CE65E -_080CE51C: - strh r1, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080CE568 - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r2, [r4, 0x18] - ldrh r3, [r4, 0x12] - adds r2, r3 - strh r2, [r4, 0x12] - ldrh r1, [r4, 0x1A] - ldrh r5, [r4, 0x14] - adds r1, r5 - strh r1, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r2, 11 - orrs r0, r2 - lsrs r1, 6 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - b _080CE572 -_080CE568: - ldr r7, _080CE5B8 @ =0x00007fbb - mov r12, r7 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080CE572: - movs r2, 0x1 - movs r3, 0 - movs r1, 0 -_080CE578: - movs r5, 0xE - ldrsh r0, [r4, r5] - ands r0, r2 - lsls r5, r2, 17 - adds r6, r3, 0 - adds r6, 0x10 - adds r1, 0x1 - mov r8, r1 - cmp r0, 0 - beq _080CE5A4 - movs r1, 0x1 - ldr r2, _080CE5BC @ =gPlttBufferFaded -_080CE590: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r2 - mov r7, r12 - strh r7, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080CE590 -_080CE5A4: - lsrs r2, r5, 16 - lsls r0, r6, 16 - lsrs r3, r0, 16 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080CE578 - b _080CE65E - .align 2, 0 -_080CE5B8: .4byte 0x00007fbb -_080CE5BC: .4byte gPlttBufferFaded -_080CE5C0: - ldr r0, _080CE608 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080CE65E - movs r2, 0 - ldr r3, _080CE60C @ =gSprites - movs r5, 0x14 - adds r5, r3 - mov r12, r5 - ldr r7, _080CE610 @ =gBattleAnimSpriteTemplate_83D6FC8 - mov r8, r7 - ldr r6, _080CE614 @ =gBattleAnimSpriteTemplate_83D6FF8 - movs r5, 0x1 -_080CE5DE: - lsls r0, r2, 4 - adds r0, r2 - lsls r1, r0, 2 - mov r7, r12 - adds r0, r1, r7 - ldr r0, [r0] - cmp r0, r8 - beq _080CE5F2 - cmp r0, r6 - bne _080CE5F6 -_080CE5F2: - adds r0, r1, r3 - strh r5, [r0, 0x2E] -_080CE5F6: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3F - bls _080CE5DE - movs r0, 0 - strh r0, [r4, 0xA] - b _080CE640 - .align 2, 0 -_080CE608: .4byte gPaletteFade -_080CE60C: .4byte gSprites -_080CE610: .4byte gBattleAnimSpriteTemplate_83D6FC8 -_080CE614: .4byte gBattleAnimSpriteTemplate_83D6FF8 -_080CE618: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080CE65E - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - bl sub_8079BFC - ldr r1, _080CE648 @ =0x00007fbb - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080CE640: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080CE65E - .align 2, 0 -_080CE648: .4byte 0x00007fbb -_080CE64C: - ldr r0, _080CE66C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080CE65E - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080CE65E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE66C: .4byte gPaletteFade - thumb_func_end sub_80CE4D4 - - thumb_func_start sub_80CE670 -sub_80CE670: @ 80CE670 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080CE6F4 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bgt _080CE682 - movs r0, 0x2 - strh r0, [r6, 0x4] -_080CE682: - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x7F - ble _080CE68E - movs r0, 0x7F - strh r0, [r6, 0x4] -_080CE68E: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x30] - ldr r4, _080CE6F8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x22] - ldrh r1, [r5, 0x20] - strh r1, [r5, 0x3A] - strh r0, [r5, 0x3C] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CE700 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080CE6FC @ =0xffffec00 - b _080CE726 - .align 2, 0 -_080CE6F4: .4byte gBattleAnimArgs -_080CE6F8: .4byte gBattleAnimBankTarget -_080CE6FC: .4byte 0xffffec00 -_080CE700: - ldr r0, _080CE740 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CE748 - ldrh r0, [r5, 0x20] - subs r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 5 -_080CE726: - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080CE744 @ =0xfffff600 - bl __divsi3 - strh r0, [r5, 0x38] - b _080CE784 - .align 2, 0 -_080CE740: .4byte gBattleAnimBankAttacker -_080CE744: .4byte 0xfffff600 -_080CE748: - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - subs r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080CE790 @ =0xffffec00 - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 4 - bl __divsi3 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 - orrs r0, r1 - strb r0, [r5, 0x3] -_080CE784: - ldr r0, _080CE794 @ =sub_80CE798 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CE790: .4byte 0xffffec00 -_080CE794: .4byte sub_80CE798 - thumb_func_end sub_80CE670 - - thumb_func_start sub_80CE798 -sub_80CE798: @ 80CE798 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 23 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080CE7CE - ldrh r0, [r2, 0x3A] - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x3C] - strh r0, [r2, 0x22] -_080CE7CE: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080CE7DC - adds r0, r2, 0 - bl move_anim_8072740 -_080CE7DC: - pop {r0} - bx r0 - thumb_func_end sub_80CE798 - - thumb_func_start sub_80CE7E0 -sub_80CE7E0: @ 80CE7E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080CE870 @ =gTasks - adds r6, r0, r1 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x8] - ldr r0, _080CE874 @ =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0xA] - movs r1, 0xA - ldrsh r0, [r6, r1] - lsls r0, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - ldr r2, _080CE878 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - movs r5, 0x1 - ldr r2, _080CE87C @ =gPlttBufferUnfaded -_080CE838: - adds r1, r3, r5 - lsls r1, 1 - adds r1, r2 - adds r0, r4, r5 - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080CE838 - adds r0, r3, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0 - bl BlendPalette - movs r0, 0 - strh r0, [r6, 0xE] - movs r5, 0 - ldr r7, _080CE878 @ =gSprites - movs r1, 0x1C - adds r1, r7 - mov r9, r1 - b _080CE8B4 - .align 2, 0 -_080CE870: .4byte gTasks -_080CE874: .4byte 0x00002771 -_080CE878: .4byte gSprites -_080CE87C: .4byte gPlttBufferUnfaded -_080CE880: - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r4, r2, r7 - ldrb r1, [r6, 0xA] - lsls r1, 4 - ldrb r3, [r4, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - lsls r0, r5, 7 - strh r0, [r4, 0x30] - mov r0, r8 - strh r0, [r4, 0x32] - add r2, r9 - ldr r0, _080CE8E4 @ =sub_80CE974 - str r0, [r2] - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080CE8B4: - cmp r5, 0x1 - bhi _080CE8C6 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080CE880 -_080CE8C6: - ldr r0, _080CE8E8 @ =sub_80CE910 - str r0, [r6] - ldr r0, _080CE8EC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CE8F4 - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080CE8F0 @ =0x0000fdff - b _080CE8FC - .align 2, 0 -_080CE8E4: .4byte sub_80CE974 -_080CE8E8: .4byte sub_80CE910 -_080CE8EC: .4byte gBattleAnimBankAttacker -_080CE8F0: .4byte 0x0000fdff -_080CE8F4: - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080CE90C @ =0x0000fbff -_080CE8FC: - ands r0, r1 - strh r0, [r2] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE90C: .4byte 0x0000fbff - thumb_func_end sub_80CE7E0 - - thumb_func_start sub_80CE910 -sub_80CE910: @ 80CE910 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080CE944 @ =gTasks - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CE968 - ldr r0, _080CE948 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CE94C - movs r0, 0x80 - lsls r0, 19 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 2 - b _080CE956 - .align 2, 0 -_080CE944: .4byte gTasks -_080CE948: .4byte gBattleAnimBankAttacker -_080CE94C: - movs r0, 0x80 - lsls r0, 19 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 3 -_080CE956: - adds r2, r3, 0 - orrs r1, r2 - strh r1, [r0] - ldr r0, _080CE970 @ =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080CE968: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CE970: .4byte 0x00002771 - thumb_func_end sub_80CE910 - - thumb_func_start sub_80CE974 -sub_80CE974: @ 80CE974 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080CE990 - movs r0, 0 - strh r0, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080CE990: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x40 - ble _080CE9B8 - ldr r2, _080CE9B4 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xE] - subs r1, 0x1 - strh r1, [r0, 0xE] - adds r0, r5, 0 - bl obj_delete_but_dont_free_vram - b _080CE9FA - .align 2, 0 -_080CE9B4: .4byte gTasks -_080CE9B8: - ldr r4, _080CEA00 @ =gSineTable - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x6 - bl __divsi3 - strh r0, [r5, 0x36] - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xD - bl __divsi3 - strh r0, [r5, 0x38] - ldrh r1, [r5, 0x30] - adds r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x30] - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] -_080CE9FA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CEA00: .4byte gSineTable - thumb_func_end sub_80CE974 - - thumb_func_start sub_80CEA04 -sub_80CEA04: @ 80CEA04 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080CEA18 @ =move_anim_8072740 - bl StoreSpriteCallbackInData6 - ldr r0, _080CEA1C @ =sub_8078600 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CEA18: .4byte move_anim_8072740 -_080CEA1C: .4byte sub_8078600 - thumb_func_end sub_80CEA04 - - thumb_func_start sub_80CEA20 -sub_80CEA20: @ 80CEA20 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _080CEAD0 @ =gUnknown_083D712C - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _080CEA64 - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r5, _080CEAD4 @ =gPlttBufferFaded -_080CEA4C: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r5 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080CEA4C -_080CEA64: - movs r4, 0x1 - ldr r0, _080CEAD0 @ =gUnknown_083D712C - mov r8, r0 -_080CEA6A: - lsls r0, r4, 1 - adds r0, r4 - lsls r5, r0, 2 - mov r1, r8 - adds r0, r5, r1 - ldrh r0, [r0] - bl AllocSpritePalette - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, 0x1 - mov r12, r4 - cmp r3, 0xFF - beq _080CEAB2 - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r7, _080CEAD4 @ =gPlttBufferFaded - ldr r6, _080CEAD0 @ =gUnknown_083D712C - adds r4, r5, 0 -_080CEA98: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r7 - lsls r0, r2, 1 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080CEA98 -_080CEAB2: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080CEA6A - mov r0, r9 - bl DestroyAnimVisualTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CEAD0: .4byte gUnknown_083D712C -_080CEAD4: .4byte gPlttBufferFaded - thumb_func_end sub_80CEA20 - - thumb_func_start sub_80CEAD8 -sub_80CEAD8: @ 80CEAD8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0x1 - ldr r6, _080CEB08 @ =gUnknown_083D712C -_080CEAE2: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrh r0, [r0] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080CEAE2 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CEB08: .4byte gUnknown_083D712C - thumb_func_end sub_80CEAD8 - - thumb_func_start sub_80CEB0C -sub_80CEB0C: @ 80CEB0C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_8078650 - ldr r4, _080CEB64 @ =gBattleAnimArgs - ldrb r1, [r4] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r2, _080CEB68 @ =gUnknown_083D712C - movs r0, 0x2 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080CEB48 - lsls r2, r0, 4 - ldrb r1, [r5, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] -_080CEB48: - ldrh r0, [r4, 0x2] - movs r1, 0 - strh r0, [r5, 0x30] - strh r1, [r5, 0x32] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x34] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CEB6C - movs r6, 0x30 - movs r3, 0x28 - b _080CEB86 - .align 2, 0 -_080CEB64: .4byte gBattleAnimArgs -_080CEB68: .4byte gUnknown_083D712C -_080CEB6C: - ldr r4, _080CEBBC @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r3, r0, 24 -_080CEB86: - ldrh r0, [r5, 0x20] - lsls r1, r0, 4 - strh r1, [r5, 0x36] - ldrh r1, [r5, 0x22] - lsls r2, r1, 4 - strh r2, [r5, 0x38] - subs r0, r6, r0 - lsls r0, 16 - asrs r0, 16 - subs r1, r3, r1 - lsls r1, 16 - asrs r1, 16 - adds r2, r5, 0 - adds r2, 0x3A - adds r3, r5, 0 - adds r3, 0x3C - movs r4, 0x28 - str r4, [sp] - bl sub_80CEBC4 - ldr r0, _080CEBC0 @ =sub_80CEC1C - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CEBBC: .4byte gBattleAnimBankTarget -_080CEBC0: .4byte sub_80CEC1C - thumb_func_end sub_80CEB0C - - thumb_func_start sub_80CEBC4 -sub_80CEBC4: @ 80CEBC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r2, 0 - mov r8, r3 - ldr r2, [sp, 0x18] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r1, r2, 24 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bge _080CEBE6 - lsls r0, r1, 24 - negs r0, r0 - lsrs r1, r0, 24 -_080CEBE6: - lsls r5, r2, 8 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bne _080CEBFA - movs r4, 0x1 -_080CEBFA: - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r7] - lsls r0, r6, 16 - asrs r0, 8 - adds r1, r4, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80CEBC4 - - thumb_func_start sub_80CEC1C -sub_80CEC1C: @ 80CEC1C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x2E] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r1, r0, r1 - adds r0, r1, 0 - cmp r1, 0 - bge _080CEC38 - adds r0, 0xFF -_080CEC38: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - ldrh r1, [r4, 0x3A] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - ldrh r2, [r4, 0x3C] - ldrh r3, [r4, 0x38] - adds r2, r3 - strh r2, [r4, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xF - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - ldrh r0, [r4, 0x20] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bhi _080CEC86 - lsls r0, r2, 16 - asrs r1, r0, 16 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - blt _080CEC86 - cmp r1, 0x80 - ble _080CEC8E -_080CEC86: - adds r0, r4, 0 - bl move_anim_8074EE0 - b _080CECDE -_080CEC8E: - movs r0, 0x34 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _080CECDE - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, r1 - ble _080CECDE - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080CECB6 - strh r5, [r4, 0x30] -_080CECB6: - ldr r2, _080CECE4 @ =gUnknown_083D712C - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080CECDE - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080CECDE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CECE4: .4byte gUnknown_083D712C - thumb_func_end sub_80CEC1C - - thumb_func_start sub_80CECE8 -sub_80CECE8: @ 80CECE8 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r7, _080CED6C @ =gBattleAnimBankAttacker - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CED06 - ldr r1, _080CED70 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080CED06: - ldrb r0, [r7] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080CED70 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r7] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r6, 0x22] - ldrb r1, [r4] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x32] - strh r5, [r6, 0x34] - ldrh r0, [r6, 0x20] - lsls r0, 4 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x22] - lsls r0, 4 - strh r0, [r6, 0x38] - movs r1, 0x2 - ldrsh r0, [r4, r1] - lsls r0, 4 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3A] - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r0, 7 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3C] - ldr r0, _080CED74 @ =sub_80CED78 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CED6C: .4byte gBattleAnimBankAttacker -_080CED70: .4byte gBattleAnimArgs -_080CED74: .4byte sub_80CED78 - thumb_func_end sub_80CECE8 - - thumb_func_start sub_80CED78 -sub_80CED78: @ 80CED78 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - ble _080CEDD6 - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080CEDD6 - ldrh r0, [r4, 0x32] - adds r0, 0x10 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0x12 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x32 - ldrsh r0, [r4, r2] - movs r1, 0x12 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080CEDD6 - movs r0, 0x1 - strh r0, [r4, 0x34] -_080CEDD6: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - bne _080CEDEA - adds r0, r4, 0 - bl move_anim_8074EE0 -_080CEDEA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CED78 - - thumb_func_start sub_80CEDF0 -sub_80CEDF0: @ 80CEDF0 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080CEE10 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _080CEE14 - ldrb r0, [r5, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r5, 0x3] - movs r6, 0x10 - b _080CEE16 - .align 2, 0 -_080CEE10: .4byte gBattleAnimArgs -_080CEE14: - ldr r6, _080CEE50 @ =0x0000fff0 -_080CEE16: - ldr r4, _080CEE54 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x8 - strh r0, [r5, 0x22] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r0, _080CEE58 @ =sub_80782D8 - str r0, [r5, 0x1C] - ldr r1, _080CEE5C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CEE50: .4byte 0x0000fff0 -_080CEE54: .4byte gBattleAnimBankAttacker -_080CEE58: .4byte sub_80782D8 -_080CEE5C: .4byte move_anim_8072740 - thumb_func_end sub_80CEDF0 - - thumb_func_start sub_80CEE60 -sub_80CEE60: @ 80CEE60 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8078650 - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] - ldr r5, _080CEED8 @ =gBattleAnimArgs - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r2, _080CEEDC @ =gUnknown_083D712C - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080CEEA0 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080CEEA0: - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x20 - cmp r0, 0 - bne _080CEEAC - ldr r2, _080CEEE0 @ =0x0000ffe0 -_080CEEAC: - movs r0, 0x28 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x20] - strh r1, [r4, 0x30] - lsls r0, r2, 16 - asrs r0, 16 - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - subs r0, 0x28 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x38] - ldr r0, _080CEEE4 @ =sub_80CEEE8 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CEED8: .4byte gBattleAnimArgs -_080CEEDC: .4byte gUnknown_083D712C -_080CEEE0: .4byte 0x0000ffe0 -_080CEEE4: .4byte sub_80CEEE8 - thumb_func_end sub_80CEE60 - - thumb_func_start sub_80CEEE8 -sub_80CEEE8: @ 80CEEE8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080CEF38 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r4, 0x24] - movs r3, 0x24 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080CEF14 - lsls r0, r1, 16 - negs r0, r0 - lsrs r1, r0, 16 -_080CEF14: - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r2 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080CEF3E -_080CEF38: - adds r0, r4, 0 - bl move_anim_8072740 -_080CEF3E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CEEE8 - - thumb_func_start sub_80CEF44 -sub_80CEF44: @ 80CEF44 - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CEF64 - adds r0, r5, 0 - movs r1, 0x5 - bl sub_807A100 - adds r0, 0x8 - b _080CEF6E -_080CEF64: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_807A100 - subs r0, 0x8 -_080CEF6E: - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8077ABC - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0 - bl sub_807A100 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080CEF90 - adds r0, 0x3 -_080CEF90: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80CEF44 - - thumb_func_start sub_80CEF9C -sub_80CEF9C: @ 80CEF9C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080CEFB0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CEFB8 - ldr r0, _080CEFB4 @ =gBattleAnimBankAttacker - b _080CEFBA - .align 2, 0 -_080CEFB0: .4byte gBattleAnimArgs -_080CEFB4: .4byte gBattleAnimBankAttacker -_080CEFB8: - ldr r0, _080CEFF8 @ =gBattleAnimBankTarget -_080CEFBA: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80CEF44 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - ldr r0, _080CEFFC @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - strh r0, [r5, 0x2E] - adds r0, r1, 0x2 - strh r0, [r5, 0x30] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, _080CF000 @ =sub_80CF008 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CF004 @ =sub_8078600 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CEFF8: .4byte gBattleAnimBankTarget -_080CEFFC: .4byte gBattleAnimArgs -_080CF000: .4byte sub_80CF008 -_080CF004: .4byte sub_8078600 - thumb_func_end sub_80CEF9C - - thumb_func_start sub_80CF008 -sub_80CF008: @ 80CF008 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080CF030 - ldr r1, _080CF038 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080CF03C @ =sub_8078600 - str r0, [r4, 0x1C] -_080CF030: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF038: .4byte move_anim_8072740 -_080CF03C: .4byte sub_8078600 - thumb_func_end sub_80CF008 - - thumb_func_start sub_80CF040 -sub_80CF040: @ 80CF040 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CF054 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CF05C - ldr r0, _080CF058 @ =gBattleAnimBankAttacker - b _080CF05E - .align 2, 0 -_080CF054: .4byte gBattleAnimArgs -_080CF058: .4byte gBattleAnimBankAttacker -_080CF05C: - ldr r0, _080CF07C @ =gBattleAnimBankTarget -_080CF05E: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80CEF44 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r1, _080CF080 @ =sub_80CF088 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CF084 @ =sub_80785E4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF07C: .4byte gBattleAnimBankTarget -_080CF080: .4byte sub_80CF088 -_080CF084: .4byte sub_80785E4 - thumb_func_end sub_80CF040 - - thumb_func_start sub_80CF088 -sub_80CF088: @ 80CF088 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080CF0AE - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080CF0B4 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CF0B8 @ =sub_80785E4 - str r0, [r4, 0x1C] -_080CF0AE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF0B4: .4byte move_anim_8074EE0 -_080CF0B8: .4byte sub_80785E4 - thumb_func_end sub_80CF088 - - thumb_func_start sub_80CF0BC -sub_80CF0BC: @ 80CF0BC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _080CF0D0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CF0D8 - ldr r0, _080CF0D4 @ =gBattleAnimBankAttacker - b _080CF0DA - .align 2, 0 -_080CF0D0: .4byte gBattleAnimArgs -_080CF0D4: .4byte gBattleAnimBankAttacker -_080CF0D8: - ldr r0, _080CF12C @ =gBattleAnimBankTarget -_080CF0DA: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_807A100 - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bgt _080CF102 - movs r0, 0xA - strh r0, [r4, 0x22] -_080CF102: - movs r0, 0x1 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - adds r1, r4, 0 - adds r1, 0x43 - ldrb r0, [r1] - strh r0, [r4, 0x32] - ldrb r0, [r1] - adds r0, 0x4 - strh r0, [r4, 0x34] - strh r6, [r4, 0x36] - ldr r1, _080CF130 @ =sub_80CF138 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CF134 @ =sub_80785E4 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CF12C: .4byte gBattleAnimBankTarget -_080CF130: .4byte sub_80CF138 -_080CF134: .4byte sub_80785E4 - thumb_func_end sub_80CF0BC - - thumb_func_start sub_80CF138 -sub_80CF138: @ 80CF138 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x36] - adds r0, 0x1 - strh r0, [r1, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080CF14E - ldr r0, _080CF154 @ =sub_80CF158 - str r0, [r1, 0x1C] -_080CF14E: - pop {r0} - bx r0 - .align 2, 0 -_080CF154: .4byte sub_80CF158 - thumb_func_end sub_80CF138 - - thumb_func_start sub_80CF158 -sub_80CF158: @ 80CF158 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0x4 - strh r1, [r2, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFE - ble _080CF18A - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080CF184 - strh r0, [r2, 0x24] - ldr r0, _080CF180 @ =sub_80CF088 - str r0, [r2, 0x1C] - b _080CF1C0 - .align 2, 0 -_080CF180: .4byte sub_80CF088 -_080CF184: - movs r0, 0xFF - ands r1, r0 - strh r1, [r2, 0x30] -_080CF18A: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0x4F - ble _080CF19A - ldrh r0, [r2, 0x34] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080CF19A: - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0x9F - ble _080CF1AA - ldrh r0, [r2, 0x32] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080CF1AA: - ldr r1, _080CF1C4 @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - asrs r1, r0, 1 - adds r0, r1 - strh r0, [r2, 0x24] -_080CF1C0: - pop {r0} - bx r0 - .align 2, 0 -_080CF1C4: .4byte gSineTable - thumb_func_end sub_80CF158 - - thumb_func_start sub_80CF1C8 -sub_80CF1C8: @ 80CF1C8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080CF1DC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CF1E4 - ldr r0, _080CF1E0 @ =gBattleAnimBankAttacker - b _080CF1E6 - .align 2, 0 -_080CF1DC: .4byte gBattleAnimArgs -_080CF1E0: .4byte gBattleAnimBankAttacker -_080CF1E4: - ldr r0, _080CF208 @ =gBattleAnimBankTarget -_080CF1E6: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80CEF44 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CF20C - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x2 - b _080CF216 - .align 2, 0 -_080CF208: .4byte gBattleAnimBankTarget -_080CF20C: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3 -_080CF216: - strh r0, [r5, 0x2E] - ldr r0, _080CF224 @ =sub_80CF228 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CF224: .4byte sub_80CF228 - thumb_func_end sub_80CF1C8 - - thumb_func_start sub_80CF228 -sub_80CF228: @ 80CF228 - 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, 0xA - ble _080CF256 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, _080CF25C @ =sub_80CF264 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080CF260 @ =sub_8078600 - str r0, [r4, 0x1C] -_080CF256: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF25C: .4byte sub_80CF264 -_080CF260: .4byte sub_8078600 - thumb_func_end sub_80CF228 - - thumb_func_start sub_80CF264 -sub_80CF264: @ 80CF264 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080CF27C - adds r0, r1, 0 - bl move_anim_8072740 -_080CF27C: - pop {r0} - bx r0 - thumb_func_end sub_80CF264 - - thumb_func_start sub_80CF280 -sub_80CF280: @ 80CF280 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r5, _080CF2C4 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x36] - ldr r1, _080CF2C8 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, _080CF2CC @ =sub_8078278 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CF2C4: .4byte gBattleAnimArgs -_080CF2C8: .4byte move_anim_8074EE0 -_080CF2CC: .4byte sub_8078278 - thumb_func_end sub_80CF280 - - thumb_func_start sub_80CF2D0 -sub_80CF2D0: @ 80CF2D0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CF2E4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CF2EC - ldr r0, _080CF2E8 @ =gBattleAnimBankAttacker - b _080CF2EE - .align 2, 0 -_080CF2E4: .4byte gBattleAnimArgs -_080CF2E8: .4byte gBattleAnimBankAttacker -_080CF2EC: - ldr r0, _080CF308 @ =gBattleAnimBankTarget -_080CF2EE: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80CEF44 - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x30] - ldr r0, _080CF30C @ =sub_80CF310 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF308: .4byte gBattleAnimBankTarget -_080CF30C: .4byte sub_80CF310 - thumb_func_end sub_80CF2D0 - - thumb_func_start sub_80CF310 -sub_80CF310: @ 80CF310 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080CF342 - cmp r0, 0x1 - bgt _080CF326 - cmp r0, 0 - beq _080CF32C - b _080CF370 -_080CF326: - cmp r0, 0x2 - beq _080CF35C - b _080CF370 -_080CF32C: - ldrh r0, [r1, 0x26] - subs r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080CF370 - b _080CF354 -_080CF342: - ldrh r0, [r1, 0x26] - adds r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080CF370 -_080CF354: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _080CF370 -_080CF35C: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080CF370 - adds r0, r1, 0 - bl move_anim_8072740 -_080CF370: - pop {r0} - bx r0 - thumb_func_end sub_80CF310 - - thumb_func_start sub_80CF374 -sub_80CF374: @ 80CF374 - push {r4,lr} - adds r4, r0, 0 - ldr r3, _080CF3C0 @ =gSprites - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r4, 0x30] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080CF3B2 - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] - adds r0, r4, 0 - bl move_anim_8074EE0 -_080CF3B2: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF3C0: .4byte gSprites - thumb_func_end sub_80CF374 - - thumb_func_start sub_80CF3C4 -sub_80CF3C4: @ 80CF3C4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080CF40C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080CF410 @ =gObjectBankIDs - ldr r0, _080CF414 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CF41C - ldr r0, _080CF418 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r5, 0x20] - adds r1, r0, 0 - b _080CF426 - .align 2, 0 -_080CF40C: .4byte gBattleAnimBankAttacker -_080CF410: .4byte gObjectBankIDs -_080CF414: .4byte gBattleAnimBankTarget -_080CF418: .4byte gBattleAnimArgs -_080CF41C: - ldr r1, _080CF450 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080CF426: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - strh r6, [r5, 0x32] - ldr r0, _080CF454 @ =sub_80CF374 - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CF450: .4byte gBattleAnimArgs -_080CF454: .4byte sub_80CF374 - thumb_func_end sub_80CF3C4 - - thumb_func_start sub_80CF458 -sub_80CF458: @ 80CF458 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080CF484 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x38] - ldr r0, _080CF488 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080CF48C @ =sub_80CF490 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF484: .4byte gBattleAnimArgs -_080CF488: .4byte sub_80782D8 -_080CF48C: .4byte sub_80CF490 - thumb_func_end sub_80CF458 - - thumb_func_start sub_80CF490 -sub_80CF490: @ 80CF490 - push {lr} - ldrh r1, [r0, 0x30] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0xF - strh r1, [r0, 0x36] - ldr r1, _080CF4B0 @ =sub_8078B34 - str r1, [r0, 0x1C] - ldr r1, _080CF4B4 @ =sub_80CF4B8 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080CF4B0: .4byte sub_8078B34 -_080CF4B4: .4byte sub_80CF4B8 - thumb_func_end sub_80CF490 - - thumb_func_start sub_80CF4B8 -sub_80CF4B8: @ 80CF4B8 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x38] - movs r3, 0x38 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080CF4CE - adds r0, r1, 0 - bl move_anim_8072740 - b _080CF4D2 -_080CF4CE: - subs r0, r2, 0x1 - strh r0, [r1, 0x38] -_080CF4D2: - pop {r0} - bx r0 - thumb_func_end sub_80CF4B8 - - thumb_func_start sub_80CF4D8 -sub_80CF4D8: @ 80CF4D8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080CF504 @ =gObjectBankIDs - ldr r0, _080CF508 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_8078E70 - ldr r1, _080CF50C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080CF510 @ =sub_80CF514 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF504: .4byte gObjectBankIDs -_080CF508: .4byte gBattleAnimBankAttacker -_080CF50C: .4byte gTasks -_080CF510: .4byte sub_80CF514 - thumb_func_end sub_80CF4D8 - - thumb_func_start sub_80CF514 -sub_80CF514: @ 80CF514 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080CF544 @ =gObjectBankIDs - ldr r0, _080CF548 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r4, [r1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CF550 - ldr r1, _080CF54C @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r6, r2, 0 - b _080CF55E - .align 2, 0 -_080CF544: .4byte gObjectBankIDs -_080CF548: .4byte gBattleAnimBankAttacker -_080CF54C: .4byte gTasks -_080CF550: - ldr r2, _080CF590 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - ldrh r3, [r0, 0x8] - adds r6, r1, 0 -_080CF55E: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - bl obj_id_set_rotscale - ldr r1, _080CF590 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080CF598 - ldrh r0, [r1, 0x8] - adds r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080CF594 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - adds r1, 0x1 - b _080CF5C2 - .align 2, 0 -_080CF590: .4byte gTasks -_080CF594: .4byte gSprites -_080CF598: - cmp r0, 0x1 - bne _080CF5AE - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bne _080CF608 - movs r0, 0x2 - b _080CF606 -_080CF5AE: - ldrh r0, [r1, 0x8] - subs r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080CF5FC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - subs r1, 0x1 -_080CF5C2: - strh r1, [r0, 0x26] - adds r0, r4, 0 - bl sub_8078F9C - ldr r0, _080CF600 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r2, [r1, r3] - movs r0, 0xF2 - lsls r0, 4 - cmp r2, r0 - beq _080CF5E2 - cmp r2, 0 - bne _080CF608 -_080CF5E2: - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bne _080CF604 - adds r0, r4, 0 - bl sub_8078F40 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080CF608 - .align 2, 0 -_080CF5FC: .4byte gSprites -_080CF600: .4byte gTasks -_080CF604: - adds r0, r2, 0x1 -_080CF606: - strh r0, [r1, 0xA] -_080CF608: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80CF514 - - thumb_func_start sub_80CF610 -sub_80CF610: @ 80CF610 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r5, _080CF658 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080CF65C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CF660 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r1, r0 - strb r1, [r2] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _080CF674 - movs r0, 0x2 - orrs r1, r0 - strb r1, [r2] - b _080CF674 - .align 2, 0 -_080CF658: .4byte gBattleAnimArgs -_080CF65C: .4byte gBattleAnimBankAttacker -_080CF660: - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080CF674 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_080CF674: - ldr r0, _080CF688 @ =sub_8078600 - str r0, [r4, 0x1C] - ldr r1, _080CF68C @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CF688: .4byte sub_8078600 -_080CF68C: .4byte move_anim_8072740 - thumb_func_end sub_80CF610 - - thumb_func_start sub_80CF690 -sub_80CF690: @ 80CF690 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r0, _080CF6AC @ =sub_80785E4 - str r0, [r4, 0x1C] - ldr r1, _080CF6B0 @ =sub_80CF6B4 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF6AC: .4byte sub_80785E4 -_080CF6B0: .4byte sub_80CF6B4 - thumb_func_end sub_80CF690 - - thumb_func_start sub_80CF6B4 -sub_80CF6B4: @ 80CF6B4 - push {lr} - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x36] - ldr r1, _080CF6D4 @ =sub_8078B34 - str r1, [r0, 0x1C] - ldr r1, _080CF6D8 @ =move_anim_8072740 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080CF6D4: .4byte sub_8078B34 -_080CF6D8: .4byte move_anim_8072740 - thumb_func_end sub_80CF6B4 - - thumb_func_start sub_80CF6DC -sub_80CF6DC: @ 80CF6DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CF700 - ldr r1, _080CF6FC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080CF722 - .align 2, 0 -_080CF6FC: .4byte gBattleAnimArgs -_080CF700: - ldr r0, _080CF7C8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CF722 - ldr r1, _080CF7CC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080CF722: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r4, _080CF7D0 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r6, _080CF7CC @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - ldrh r1, [r5, 0x20] - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 16 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080CF794 - ldr r2, _080CF7D4 @ =0xffffa000 - adds r0, r4, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_080CF794: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - mov r0, r8 - strh r0, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080CF7D8 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080CF7DC @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CF7C8: .4byte gBattleAnimBankAttacker -_080CF7CC: .4byte gBattleAnimArgs -_080CF7D0: .4byte gBattleAnimBankTarget -_080CF7D4: .4byte 0xffffa000 -_080CF7D8: .4byte sub_8078B34 -_080CF7DC: .4byte move_anim_8072740 - thumb_func_end sub_80CF6DC - - thumb_func_start sub_80CF7E0 -sub_80CF7E0: @ 80CF7E0 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080CF80A - ldr r2, _080CF810 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - adds r0, r3, 0 - bl DestroySprite -_080CF80A: - pop {r0} - bx r0 - .align 2, 0 -_080CF810: .4byte gTasks - thumb_func_end sub_80CF7E0 - - thumb_func_start sub_80CF814 -sub_80CF814: @ 80CF814 - push {r4,lr} - adds r2, r0, 0 - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080CF844 @ =gTasks - adds r4, r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - ble _080CF848 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x38] - adds r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x36] - ldrh r3, [r2, 0x3A] - adds r0, r3 - b _080CF856 - .align 2, 0 -_080CF844: .4byte gTasks -_080CF848: - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x34] - subs r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - subs r0, r1 -_080CF856: - strh r0, [r2, 0x3A] - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x30] - adds r3, r0, r1 - strh r3, [r2, 0x30] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r4, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CF87A - lsls r0, r3, 16 - lsrs r0, 24 - negs r0, r0 - b _080CF87E -_080CF87A: - lsls r0, r3, 16 - lsrs r0, 24 -_080CF87E: - strh r0, [r2, 0x24] - ldrh r1, [r4, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CF892 - ldrh r0, [r2, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080CF896 -_080CF892: - ldrh r0, [r2, 0x32] - lsrs r0, 8 -_080CF896: - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - subs r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080CF8AC - movs r0, 0x1E - strh r0, [r2, 0x2E] - ldr r0, _080CF8B4 @ =sub_80CF7E0 - str r0, [r2, 0x1C] -_080CF8AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CF8B4: .4byte sub_80CF7E0 - thumb_func_end sub_80CF814 - - thumb_func_start sub_80CF8B8 -sub_80CF8B8: @ 80CF8B8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080CF8FC @ =gTasks - adds r6, r0, r1 - ldrh r2, [r6, 0x16] - movs r1, 0x2 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - ldrh r3, [r7, 0x30] - adds r2, r0, r3 - strh r2, [r7, 0x30] - ldrh r0, [r6, 0x18] - ands r1, r0 - ldrh r0, [r7, 0x32] - adds r1, r0 - strh r1, [r7, 0x32] - ldrh r1, [r6, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CF900 - lsls r0, r2, 16 - lsrs r0, 24 - negs r0, r0 - b _080CF904 - .align 2, 0 -_080CF8FC: .4byte gTasks -_080CF900: - lsls r0, r2, 16 - lsrs r0, 24 -_080CF904: - strh r0, [r7, 0x24] - ldrh r1, [r6, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CF918 - ldrh r0, [r7, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080CF91C -_080CF918: - ldrh r0, [r7, 0x32] - lsrs r0, 8 -_080CF91C: - strh r0, [r7, 0x26] - ldrh r0, [r7, 0x2E] - subs r1, r0, 0x1 - strh r1, [r7, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080CF9E8 - movs r4, 0 - movs r0, 0x8 - strh r0, [r7, 0x2E] - movs r0, 0x4 - strh r0, [r6, 0x12] - movs r0, 0x80 - lsls r0, 5 - bl sub_81174E0 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r2, r0, r1 - strh r2, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r3, [r7, 0x22] - adds r0, r3 - strh r0, [r7, 0x22] - strh r4, [r7, 0x26] - strh r4, [r7, 0x24] - ldrh r3, [r6, 0x1E] - movs r0, 0x1E - ldrsh r1, [r6, r0] - lsls r0, r2, 16 - asrs r0, 16 - cmp r1, r0 - blt _080CF966 - subs r0, r3, r2 - b _080CF968 -_080CF966: - subs r0, r2, r3 -_080CF968: - lsls r0, 24 - lsrs r4, r0, 16 - ldrh r3, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r7, 0x22] - movs r6, 0x22 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _080CF980 - subs r0, r3, r2 - b _080CF982 -_080CF980: - subs r0, r2, r3 -_080CF982: - lsls r0, 24 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - strh r0, [r7, 0x32] - strh r0, [r7, 0x30] - strh r0, [r7, 0x3A] - strh r0, [r7, 0x38] - lsls r0, r4, 16 - asrs r0, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r5, 0 - bl sub_81174C4 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r6, 0xE0 - lsls r6, 1 - adds r0, r6, 0 - bl sub_81174E0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_81174C4 - strh r0, [r7, 0x34] - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_81174C4 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - bl sub_81174E0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_81174C4 - strh r0, [r7, 0x36] - ldr r0, _080CF9F4 @ =sub_80CF814 - str r0, [r7, 0x1C] -_080CF9E8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CF9F4: .4byte sub_80CF814 - thumb_func_end sub_80CF8B8 - - thumb_func_start sub_80CF9F8 -sub_80CF9F8: @ 80CF9F8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080CFA1C @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080CFA16 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080CFA16: - pop {r0} - bx r0 - .align 2, 0 -_080CFA1C: .4byte gTasks - thumb_func_end sub_80CF9F8 - - thumb_func_start sub_80CFA20 -sub_80CFA20: @ 80CFA20 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080CFA74 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r1, r0, 0x1 - strh r1, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bgt _080CFAF4 - ldr r0, _080CFA78 @ =gSpriteTemplate_83D74BC - movs r2, 0x1A - ldrsh r1, [r5, r2] - movs r3, 0x1C - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0xC] - ldrb r4, [r5, 0xA] - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r0, 4 - add r0, r12 - lsls r0, 2 - ldr r1, _080CFA7C @ =gSprites - adds r6, r0, r1 - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080CFA80 - cmp r0, 0x2 - beq _080CFA96 - b _080CFAA4 - .align 2, 0 -_080CFA74: .4byte gTasks -_080CFA78: .4byte gSpriteTemplate_83D74BC -_080CFA7C: .4byte gSprites -_080CFA80: - ldrb r2, [r6, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x3] - b _080CFAA4 -_080CFA96: - ldrb r0, [r6, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r6, 0x3] -_080CFAA4: - ldr r3, _080CFAFC @ =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r4, r2, r3 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x14] - subs r0, r1 - strh r0, [r6, 0x2E] - strh r7, [r6, 0x3C] - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r0, 0xD - lsls r0, 1 - adds r0, r2 - adds r3, 0x8 - adds r0, r3 - mov r2, r12 - strh r2, [r0] - ldrh r0, [r4, 0xE] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0x3F - negs r0, r0 - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x9A - bl PlaySE12WithPanning - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0x2 - ble _080CFAF4 - ldr r0, _080CFB00 @ =sub_80CF9F8 - str r0, [r4] -_080CFAF4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CFAFC: .4byte gTasks -_080CFB00: .4byte sub_80CF9F8 - thumb_func_end sub_80CFA20 - - thumb_func_start sub_80CFB04 -sub_80CFB04: @ 80CFB04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r9, r0 - movs r5, 0 - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r4, sp - adds r4, 0x2 - strh r1, [r4] - bl NotInBattle - lsls r0, 24 - mov r10, r4 - cmp r0, 0 - beq _080CFB70 - ldr r1, _080CFB60 @ =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r3, _080CFB64 @ =gBattleAnimArgs - ldrh r0, [r3] - negs r0, r0 - strh r0, [r3] - ldrh r1, [r3, 0x4] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080CFB68 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strh r0, [r3, 0x4] - b _080CFBCA - .align 2, 0 -_080CFB60: .4byte gTasks -_080CFB64: .4byte gBattleAnimArgs -_080CFB68: - movs r0, 0x1 - orrs r0, r1 - strh r0, [r3, 0x4] - b _080CFBCA -_080CFB70: - ldr r1, _080CFBB4 @ =gBanksBySide - ldr r0, _080CFBB8 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0 - bne _080CFBCA - ldr r1, _080CFBBC @ =gTasks - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x10] - ldr r2, _080CFBC0 @ =gBattleAnimArgs - ldrh r0, [r2] - negs r0, r0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - negs r0, r0 - strh r0, [r2, 0x2] - ldrh r1, [r2, 0x4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080CFBC4 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _080CFBC8 - .align 2, 0 -_080CFBB4: .4byte gBanksBySide -_080CFBB8: .4byte gBattleAnimBankTarget -_080CFBBC: .4byte gTasks -_080CFBC0: .4byte gBattleAnimArgs -_080CFBC4: - movs r0, 0x1 - orrs r0, r1 -_080CFBC8: - strh r0, [r2, 0x4] -_080CFBCA: - ldr r5, _080CFC24 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - ldr r1, _080CFC28 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - adds r6, r0, 0 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - mov r9, r0 - ldr r0, _080CFC2C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080CFC34 - ldr r4, _080CFC30 @ =gBattleAnimBankTarget - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080CFC34 - ldrb r0, [r4] - movs r1, 0 - mov r2, sp - mov r3, r10 - bl sub_807A3FC - b _080CFC56 - .align 2, 0 -_080CFC24: .4byte gBattleAnimBankAttacker -_080CFC28: .4byte gTasks -_080CFC2C: .4byte gBattleTypeFlags -_080CFC30: .4byte gBattleAnimBankTarget -_080CFC34: - mov r5, sp - ldr r4, _080CFC90 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - strh r0, [r1] -_080CFC56: - mov r4, sp - ldr r0, _080CFC94 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - mov r2, sp - ldr r3, _080CFC98 @ =gBattleAnimArgs - ldrh r0, [r3] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r1, 0x1E] - strh r0, [r4] - ldrh r0, [r3, 0x2] - mov r3, r10 - ldrh r3, [r3] - adds r0, r3 - strh r0, [r1, 0x20] - mov r1, r10 - strh r0, [r1] - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - cmp r0, r1 - blt _080CFC9C - subs r0, r2, r1 - b _080CFC9E - .align 2, 0 -_080CFC90: .4byte gBattleAnimBankTarget -_080CFC94: .4byte gTasks -_080CFC98: .4byte gBattleAnimArgs -_080CFC9C: - subs r0, r1, r2 -_080CFC9E: - lsls r0, 16 - lsrs r0, 16 - lsls r4, r0, 16 - asrs r4, 16 - ldr r5, _080CFD14 @ =gBattleAnimArgs - ldrh r1, [r5, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_81174E0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_81174C4 - ldr r2, _080CFD18 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r6, r1, r2 - strh r0, [r6, 0x12] - movs r1, 0x12 - ldrsh r0, [r6, r1] - movs r1, 0x80 - bl sub_81174C4 - strh r0, [r6, 0x14] - ldrh r0, [r5, 0x4] - strh r0, [r6, 0x16] - mov r2, r10 - ldrh r1, [r2] - movs r3, 0 - ldrsh r0, [r2, r3] - mov r4, r9 - cmp r0, r4 - blt _080CFD1C - subs r4, r1, r4 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x12 - ldrsh r0, [r6, r1] - bl sub_81174E0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_81174C4 - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - strh r1, [r6, 0x18] - b _080CFD3C - .align 2, 0 -_080CFD14: .4byte gBattleAnimArgs -_080CFD18: .4byte gTasks -_080CFD1C: - subs r4, r1 - lsls r4, 16 - asrs r4, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - bl sub_81174E0 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_81174C4 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r6, 0x18] -_080CFD3C: - ldr r1, _080CFD7C @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r4, _080CFD80 @ =gBattleAnimArgs - ldrh r0, [r4, 0x6] - strh r0, [r5, 0xE] - ldrh r1, [r4, 0x8] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CFD8C - movs r0, 0x80 - eors r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080CFDB4 - ldr r0, _080CFD84 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080CFD88 @ =0x0000ffc0 - adds r1, r2, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080CFDC4 - .align 2, 0 -_080CFD7C: .4byte gTasks -_080CFD80: .4byte gBattleAnimArgs -_080CFD84: .4byte gBattleAnimBankTarget -_080CFD88: .4byte 0x0000ffc0 -_080CFD8C: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080CFDB4 - ldr r0, _080CFDAC @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080CFDB0 @ =0x0000ffc0 - adds r1, r3, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080CFDC4 - .align 2, 0 -_080CFDAC: .4byte gBattleAnimBankTarget -_080CFDB0: .4byte 0x0000ffc0 -_080CFDB4: - ldr r0, _080CFDF0 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x8] - subs r0, r1 -_080CFDC4: - strh r0, [r5, 0xC] - ldr r0, _080CFDF4 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _080CFDDC - movs r0, 0x3 - strh r0, [r1, 0xC] -_080CFDDC: - ldr r0, _080CFDF8 @ =sub_80CFA20 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CFDF0: .4byte gBattleAnimBankTarget -_080CFDF4: .4byte gTasks -_080CFDF8: .4byte sub_80CFA20 - thumb_func_end sub_80CFB04 - - thumb_func_start sub_80CFDFC -sub_80CFDFC: @ 80CFDFC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r0, _080CFE24 @ =gSpriteTemplate_83D75AC - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x2E] - ldr r0, _080CFE28 @ =sub_80CFE2C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CFE24: .4byte gSpriteTemplate_83D75AC -_080CFE28: .4byte sub_80CFE2C - thumb_func_end sub_80CFDFC - - thumb_func_start sub_80CFE2C -sub_80CFE2C: @ 80CFE2C - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080CFE90 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r5, [r4, 0x2E] - ldr r1, _080CFE98 @ =gPlttBufferFaded - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - adds r6, r1, 0 - adds r1, r5, 0 - adds r1, 0x9 - lsls r0, r5, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - movs r3, 0x7 - lsls r1, 1 - adds r1, r6 -_080CFE64: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080CFE64 - adds r0, r5, 0 - adds r0, 0xF - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _080CFE90 - adds r0, r4, 0 - bl move_anim_8072740 -_080CFE90: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CFE98: .4byte gPlttBufferFaded - thumb_func_end sub_80CFE2C - - thumb_func_start sub_80CFE9C -sub_80CFE9C: @ 80CFE9C - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r4, _080CFF3C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080CFF40 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _080CFF44 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080CFEE0 - ldrh r0, [r4, 0x4] - negs r0, r0 - strh r0, [r4, 0x4] -_080CFEE0: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - ldrh r1, [r5, 0x20] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - strh r6, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080CFF48 @ =sub_8078C00 - str r0, [r5, 0x1C] - ldr r1, _080CFF4C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CFF3C: .4byte gBattleAnimBankTarget -_080CFF40: .4byte gBattleAnimArgs -_080CFF44: .4byte gBattleAnimBankAttacker -_080CFF48: .4byte sub_8078C00 -_080CFF4C: .4byte move_anim_8072740 - thumb_func_end sub_80CFE9C - - thumb_func_start sub_80CFF50 -sub_80CFF50: @ 80CFF50 - ldr r1, _080CFF60 @ =0x0000fff0 - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, _080CFF64 @ =sub_80CFF68 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080CFF60: .4byte 0x0000fff0 -_080CFF64: .4byte sub_80CFF68 - thumb_func_end sub_80CFF50 - - thumb_func_start sub_80CFF68 -sub_80CFF68: @ 80CFF68 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldr r0, _080CFFD4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080CFF8C - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_080CFF8C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080CFFCC - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080CFFCC - adds r0, r4, 0 - bl move_anim_8072740 -_080CFFCC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CFFD4: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80CFF68 - - thumb_func_start sub_80CFFD8 -sub_80CFFD8: @ 80CFFD8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080D0024 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080D0028 @ =sub_8078B34 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080D002C @ =sub_80D0030 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0024: .4byte gBattleAnimBankTarget -_080D0028: .4byte sub_8078B34 -_080D002C: .4byte sub_80D0030 - thumb_func_end sub_80CFFD8 - - thumb_func_start sub_80D0030 -sub_80D0030: @ 80D0030 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3F - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xA6 - bl PlaySE12WithPanning - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - movs r2, 0 - movs r1, 0x7 - adds r0, r4, 0 - adds r0, 0x3C -_080D0064: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080D0064 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r2, _080D00AC @ =0x0000fff4 - adds r1, r2, 0 - subs r1, r0 - strh r1, [r4, 0x3A] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA0 - bl __umodsi3 - adds r0, 0xA0 - strh r0, [r4, 0x3C] - ldr r0, _080D00B0 @ =sub_80D00B4 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D00AC: .4byte 0x0000fff4 -_080D00B0: .4byte sub_80D00B4 - thumb_func_end sub_80D0030 - - thumb_func_start sub_80D00B4 -sub_80D00B4: @ 80D00B4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x2E] - adds r0, r1, r2 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 24 - strh r2, [r4, 0x24] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D00D2 - negs r0, r2 - strh r0, [r4, 0x24] -_080D00D2: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080D0112 - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D0112 - adds r0, r4, 0 - bl move_anim_8072740 -_080D0112: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D00B4 - - thumb_func_start sub_80D0118 -sub_80D0118: @ 80D0118 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r0, _080D0168 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D0136 - ldrh r0, [r4, 0x22] - adds r0, 0x10 - strh r0, [r4, 0x22] -_080D0136: - ldr r1, _080D016C @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080D0170 @ =sub_8078114 - str r0, [r4, 0x1C] - ldr r1, _080D0174 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0168: .4byte gBattleAnimBankAttacker -_080D016C: .4byte gBattleAnimArgs -_080D0170: .4byte sub_8078114 -_080D0174: .4byte move_anim_8072740 - thumb_func_end sub_80D0118 - - thumb_func_start sub_80D0178 -sub_80D0178: @ 80D0178 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r7, 0x20 - ldr r4, _080D01F4 @ =0x0000ffe0 - movs r0, 0x10 - mov r8, r0 - ldr r6, _080D01F8 @ =0x0000fff0 - ldr r0, _080D01FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080D01A4 - adds r7, r4, 0 - movs r4, 0x20 - mov r8, r6 - movs r6, 0x10 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080D01A4: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080D0200 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - add r0, r8 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080D0204 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D0208 @ =sub_80D020C - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D01F4: .4byte 0x0000ffe0 -_080D01F8: .4byte 0x0000fff0 -_080D01FC: .4byte gBattleAnimArgs -_080D0200: .4byte gBattleAnimBankTarget -_080D0204: .4byte sub_8078B34 -_080D0208: .4byte sub_80D020C - thumb_func_end sub_80D0178 - - thumb_func_start sub_80D020C -sub_80D020C: @ 80D020C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D0222 - adds r0, r2, 0 - bl move_anim_8072740 -_080D0222: - pop {r0} - bx r0 - thumb_func_end sub_80D020C - - thumb_func_start sub_80D0228 -sub_80D0228: @ 80D0228 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x20 - mov r8, r0 - ldr r4, _080D02BC @ =0x0000ffe0 - movs r2, 0x10 - mov r9, r2 - ldr r6, _080D02C0 @ =0x0000fff0 - ldr r7, _080D02C4 @ =gBattleAnimArgs - ldrh r1, [r7] - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - beq _080D025C - mov r8, r4 - movs r4, 0x20 - mov r9, r6 - movs r6, 0x10 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_080D025C: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080D02C8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - add r0, r9 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r7] - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x3A] - ldr r0, _080D02CC @ =sub_80D02D0 - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D02BC: .4byte 0x0000ffe0 -_080D02C0: .4byte 0x0000fff0 -_080D02C4: .4byte gBattleAnimArgs -_080D02C8: .4byte gBattleAnimBankTarget -_080D02CC: .4byte sub_80D02D0 - thumb_func_end sub_80D0228 - - thumb_func_start sub_80D02D0 -sub_80D02D0: @ 80D02D0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D0334 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D0334 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - ldr r0, _080D033C @ =0x0000fffe - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - eors r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x36] - strh r2, [r4, 0x34] - ldr r0, _080D0340 @ =sub_80D0344 - str r0, [r4, 0x1C] -_080D0334: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D033C: .4byte 0x0000fffe -_080D0340: .4byte sub_80D0344 - thumb_func_end sub_80D02D0 - - thumb_func_start sub_80D0344 -sub_80D0344: @ 80D0344 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D035C - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_080D035C: - ldrh r0, [r4, 0x34] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080D039E - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - movs r1, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080D03A4 @ =sub_80D03A8 - str r0, [r4, 0x1C] -_080D039E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D03A4: .4byte sub_80D03A8 - thumb_func_end sub_80D0344 - - thumb_func_start sub_80D03A8 -sub_80D03A8: @ 80D03A8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D03BC - adds r0, r4, 0 - bl move_anim_8072740 -_080D03BC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D03A8 - - thumb_func_start sub_80D03C4 -sub_80D03C4: @ 80D03C4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078E70 - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0xD0 - movs r3, 0 - bl obj_id_set_rotscale - ldr r1, _080D041C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_8079108 - ldr r1, _080D0420 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x50 - strh r1, [r0, 0x8] - ldr r1, _080D0424 @ =sub_80D0428 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D041C: .4byte gSprites -_080D0420: .4byte gTasks -_080D0424: .4byte sub_80D0428 - thumb_func_end sub_80D03C4 - - thumb_func_start sub_80D0428 -sub_80D0428: @ 80D0428 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D0480 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080D0478 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8078F40 - ldr r1, _080D0484 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0x1 - bl sub_8079108 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D0478: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0480: .4byte gTasks -_080D0484: .4byte gSprites - thumb_func_end sub_80D0428 - - thumb_func_start sub_80D0488 -sub_80D0488: @ 80D0488 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D04D4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x8] - movs r1, 0 - bl sub_8078E70 - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0x14] - ldr r0, _080D04D8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r0, _080D04DC @ =sub_80D04E0 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D04D4: .4byte gTasks -_080D04D8: .4byte gBattleAnimBankAttacker -_080D04DC: .4byte sub_80D04E0 - thumb_func_end sub_80D0488 - - thumb_func_start sub_80D04E0 -sub_80D04E0: @ 80D04E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D0504 @ =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080D04FA - b _080D060A -_080D04FA: - lsls r0, 2 - ldr r1, _080D0508 @ =_080D050C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D0504: .4byte gTasks -_080D0508: .4byte _080D050C - .align 2, 0 -_080D050C: - .4byte _080D0524 - .4byte _080D056C - .4byte _080D05A2 - .4byte _080D05A8 - .4byte _080D05B8 - .4byte _080D05EC -_080D0524: - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080D0534 - cmp r0, 0x3 - beq _080D0534 - cmp r0, 0x6 - bne _080D053C -_080D0534: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80D0614 -_080D053C: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x28 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8079A64 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080D060A - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - b _080D05E4 -_080D056C: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D060A - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r1, 0x3 - bne _080D0582 - strh r0, [r4, 0xC] - strh r1, [r4, 0xA] - b _080D060A -_080D0582: - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r4, 0x10] - ldrb r0, [r4, 0x8] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8079A64 - movs r0, 0x2 - strh r0, [r4, 0xA] - b _080D060A -_080D05A2: - movs r0, 0 - strh r0, [r4, 0xA] - b _080D060A -_080D05A8: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _080D060A - b _080D05E0 -_080D05B8: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - subs r0, 0x50 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_8079A64 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080D060A -_080D05E0: - movs r0, 0 - strh r0, [r4, 0xC] -_080D05E4: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080D060A -_080D05EC: - ldrb r0, [r4, 0x8] - bl sub_8078F40 - ldr r2, _080D0610 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D060A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0610: .4byte gSprites - thumb_func_end sub_80D04E0 - - thumb_func_start sub_80D0614 -sub_80D0614: @ 80D0614 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _080D06EE - bl AllocOamMatrix - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xFF - bne _080D0658 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080D0654 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - b _080D06EE - .align 2, 0 -_080D0654: .4byte gSprites -_080D0658: - ldr r5, _080D06FC @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r4, r3, r5 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrb r0, [r7, 0x16] - ldrb r1, [r7, 0xE] - subs r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r7, 0xE] - adds r0, 0x1 - strh r0, [r7, 0xE] - ldrh r0, [r7, 0x14] - adds r0, 0x1 - strh r0, [r7, 0x14] - movs r0, 0x10 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - movs r0, 0x6 - strh r0, [r4, 0x32] - adds r5, 0x1C - adds r3, r5 - ldr r0, _080D0700 @ =sub_80D0704 - str r0, [r3] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x10 - ldrsh r2, [r7, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x1] - movs r3, 0x4 - negs r3, r3 - ands r3, r0 - movs r0, 0x1 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_080D06EE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D06FC: .4byte gSprites -_080D0700: .4byte sub_80D0704 - thumb_func_end sub_80D0614 - - thumb_func_start sub_80D0704 -sub_80D0704: @ 80D0704 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080D0742 - ldr r3, _080D0748 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - 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 obj_delete_but_dont_free_vram -_080D0742: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0748: .4byte gTasks - thumb_func_end sub_80D0704 - - thumb_func_start sub_80D074C -sub_80D074C: @ 80D074C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D0770 @ =gTasks - adds r4, r0, r1 - ldr r5, _080D0774 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D0778 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080D079E - .align 2, 0 -_080D0770: .4byte gTasks -_080D0774: .4byte gBattleAnimArgs -_080D0778: - ldrb r0, [r5] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r1, [r4, 0x8] - strh r2, [r4, 0xA] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - strh r2, [r4, 0xE] - strh r2, [r4, 0x10] - ldr r2, _080D07A4 @ =gUnknown_083D76F4 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D07A8 @ =sub_80D07AC - str r0, [r4] -_080D079E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D07A4: .4byte gUnknown_083D76F4 -_080D07A8: .4byte sub_80D07AC - thumb_func_end sub_80D074C - - thumb_func_start sub_80D07AC -sub_80D07AC: @ 80D07AC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D07D0 @ =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080D0814 - cmp r5, 0x1 - bgt _080D07D4 - cmp r5, 0 - beq _080D07DE - b _080D08BC - .align 2, 0 -_080D07D0: .4byte gTasks -_080D07D4: - cmp r5, 0x2 - beq _080D0848 - cmp r5, 0x3 - beq _080D0878 - b _080D08BC -_080D07DE: - adds r0, r4, 0 - bl sub_807992C - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, _080D0810 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D08BC - strh r5, [r4, 0xE] - b _080D0870 - .align 2, 0 -_080D0810: .4byte gSprites -_080D0814: - adds r0, r4, 0 - bl sub_807992C - ldr r2, _080D0844 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D08BC - movs r0, 0 - strh r0, [r4, 0xE] - b _080D0870 - .align 2, 0 -_080D0844: .4byte gSprites -_080D0848: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D0870 - ldr r2, _080D086C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _080D08BC - .align 2, 0 -_080D086C: .4byte gSprites -_080D0870: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080D08BC -_080D0878: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080D08BC - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080D08B0 - ldr r2, _080D08AC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080D08BC - .align 2, 0 -_080D08AC: .4byte gSprites -_080D08B0: - ldrb r1, [r4, 0x8] - ldr r2, _080D08C4 @ =gUnknown_083D76F4 - adds r0, r4, 0 - bl sub_80798F4 - strh r5, [r4, 0xA] -_080D08BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D08C4: .4byte gUnknown_083D76F4 - thumb_func_end sub_80D07AC - - thumb_func_start sub_80D08C8 -sub_80D08C8: @ 80D08C8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D08F8 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D08FC @ =gUnknown_083D7714 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D0900 @ =sub_80D0904 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D08F8: .4byte gTasks -_080D08FC: .4byte gUnknown_083D7714 -_080D0900: .4byte sub_80D0904 - thumb_func_end sub_80D08C8 - - thumb_func_start sub_80D0904 -sub_80D0904: @ 80D0904 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D092C @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D0924 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0924: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D092C: .4byte gTasks - thumb_func_end sub_80D0904 - - thumb_func_start sub_80D0930 -sub_80D0930: @ 80D0930 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D0960 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D0964 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080D097E - .align 2, 0 -_080D0960: .4byte gBattleAnimBankAttacker -_080D0964: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, _080D09B0 @ =0x0000ffc0 -_080D097E: - strh r0, [r4, 0x30] - ldr r0, _080D09B4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, _080D09B8 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080D09BC @ =sub_8078394 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D09B0: .4byte 0x0000ffc0 -_080D09B4: .4byte gBattleAnimBankAttacker -_080D09B8: .4byte move_anim_8072740 -_080D09BC: .4byte sub_8078394 - thumb_func_end sub_80D0930 - - thumb_func_start sub_80D09C0 -sub_80D09C0: @ 80D09C0 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080D09D4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D09DC - ldr r0, _080D09D8 @ =gBattleAnimBankAttacker - b _080D09DE - .align 2, 0 -_080D09D4: .4byte gBattleAnimArgs -_080D09D8: .4byte gBattleAnimBankAttacker -_080D09DC: - ldr r0, _080D0A3C @ =gBattleAnimBankTarget -_080D09DE: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D09F8 - ldr r1, _080D0A40 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080D09F8: - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D0A40 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _080D0A2A - movs r0, 0x8 - strh r0, [r6, 0x22] -_080D0A2A: - ldr r1, _080D0A44 @ =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080D0A48 @ =sub_80785E4 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0A3C: .4byte gBattleAnimBankTarget -_080D0A40: .4byte gBattleAnimArgs -_080D0A44: .4byte move_anim_8074EE0 -_080D0A48: .4byte sub_80785E4 - thumb_func_end sub_80D09C0 - - thumb_func_start sub_80D0A4C -sub_80D0A4C: @ 80D0A4C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D0A80 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, _080D0A84 @ =gUnknown_083D77B0 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D0A88 @ =sub_80D0A8C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0A80: .4byte gTasks -_080D0A84: .4byte gUnknown_083D77B0 -_080D0A88: .4byte sub_80D0A8C - thumb_func_end sub_80D0A4C - - thumb_func_start sub_80D0A8C -sub_80D0A8C: @ 80D0A8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0AB4 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D0AAC - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0AAC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0AB4: .4byte gTasks - thumb_func_end sub_80D0A8C - - thumb_func_start sub_80D0AB8 -sub_80D0AB8: @ 80D0AB8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D0B2C @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, _080D0B30 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, _080D0B34 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D0B22 - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_080D0B22: - ldr r0, _080D0B38 @ =sub_80D0B3C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0B2C: .4byte gTasks -_080D0B30: .4byte gSprites -_080D0B34: .4byte gBattleAnimBankAttacker -_080D0B38: .4byte sub_80D0B3C - thumb_func_end sub_80D0AB8 - - thumb_func_start sub_80D0B3C -sub_80D0B3C: @ 80D0B3C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0B84 @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D0BA2 - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D0B8C - ldr r2, _080D0B88 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _080D0BA0 - .align 2, 0 -_080D0B84: .4byte gTasks -_080D0B88: .4byte gSprites -_080D0B8C: - ldr r2, _080D0BB4 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_080D0BA0: - strh r1, [r0, 0x22] -_080D0BA2: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080D0BF0 - cmp r0, 0x1 - bgt _080D0BB8 - cmp r0, 0 - beq _080D0BBE - b _080D0C80 - .align 2, 0 -_080D0BB4: .4byte gSprites -_080D0BB8: - cmp r0, 0x2 - beq _080D0C20 - b _080D0C80 -_080D0BBE: - ldr r2, _080D0BEC @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D0C80 - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0BEC: .4byte gSprites -_080D0BF0: - ldr r2, _080D0C1C @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D0C80 - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0C1C: .4byte gSprites -_080D0C20: - ldr r2, _080D0C58 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080D0C80 - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080D0C5C - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0C58: .4byte gSprites -_080D0C5C: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D0C7A - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_080D0C7A: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0C80: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D0B3C - - thumb_func_start sub_80D0C88 -sub_80D0C88: @ 80D0C88 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D0CD8 @ =gTasks - adds r5, r1, r0 - ldr r4, _080D0CDC @ =gBattleAnimBankTarget - ldrb r0, [r4] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl sub_807A100 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D0CE8 - ldr r0, _080D0CE0 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080D0CE4 @ =REG_BG1HOFS - b _080D0CF0 - .align 2, 0 -_080D0CD8: .4byte gTasks -_080D0CDC: .4byte gBattleAnimBankTarget -_080D0CE0: .4byte gUnknown_030042C0 -_080D0CE4: .4byte REG_BG1HOFS -_080D0CE8: - ldr r0, _080D0D54 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080D0D58 @ =REG_BG2HOFS -_080D0CF0: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _080D0D2E - ldr r4, _080D0D5C @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080D0D08: - asrs r3, r2, 16 - cmp r3, 0 - blt _080D0D20 - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_080D0D20: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _080D0D08 -_080D0D2E: - ldr r0, _080D0D60 @ =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 sub_80895F8 - ldr r0, _080D0D64 @ =sub_80D0D68 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0D54: .4byte gUnknown_03004288 -_080D0D58: .4byte REG_BG2HOFS -_080D0D5C: .4byte gUnknown_03004DE0 -_080D0D60: .4byte 0xa2600001 -_080D0D64: .4byte sub_80D0D68 - thumb_func_end sub_80D0C88 - - thumb_func_start sub_80D0D68 -sub_80D0D68: @ 80D0D68 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0D88 @ =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080D0D8C - cmp r0, 0x1 - beq _080D0DA2 - b _080D0E22 - .align 2, 0 -_080D0D88: .4byte gTasks -_080D0D8C: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D0E22 - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _080D0E22 -_080D0DA2: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080D0E22 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _080D0DD8 - cmp r1, 0x1 - ble _080D0DE0 - cmp r1, 0x2 - beq _080D0DDC - cmp r1, 0x3 - beq _080D0DDC - b _080D0DE0 -_080D0DD8: - subs r0, 0x2 - b _080D0DDE -_080D0DDC: - adds r0, 0x1 -_080D0DDE: - strh r0, [r3, 0x12] -_080D0DE0: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _080D0E04 - ldr r2, _080D0E28 @ =gUnknown_03004DE0 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_080D0E04: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080D0E22 - ldr r1, _080D0E2C @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0E22: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0E28: .4byte gUnknown_03004DE0 -_080D0E2C: .4byte gUnknown_03004DC0 - thumb_func_end sub_80D0D68 - - thumb_func_start sub_80D0E30 -sub_80D0E30: @ 80D0E30 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080D0E84 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl sub_807A100 - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl sub_8076F98 - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, _080D0E88 @ =sub_80D0E8C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0E84: .4byte gBattleAnimBankTarget -_080D0E88: .4byte sub_80D0E8C - thumb_func_end sub_80D0E30 - - thumb_func_start sub_80D0E8C -sub_80D0E8C: @ 80D0E8C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080D0EF0 - cmp r1, 0x1 - bgt _080D0EA2 - cmp r1, 0 - beq _080D0EA8 - b _080D0FD0 -_080D0EA2: - cmp r1, 0x2 - beq _080D0F82 - b _080D0FD0 -_080D0EA8: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D0ED2 - strh r1, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D0ED2: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D0FD0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - b _080D0F7A -_080D0EF0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080D0F36 - ldrh r2, [r4, 0x32] - movs r3, 0x32 - ldrsh r1, [r4, r3] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080D0F36 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080D0F36 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCD - bl PlaySE12WithPanning -_080D0F36: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - adds r1, r0, r2 - strh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0x1F - ble _080D0F4A - movs r0, 0x40 - b _080D0F58 -_080D0F4A: - movs r0, 0x20 - negs r0, r0 - cmp r2, r0 - bgt _080D0F64 - movs r2, 0x40 - negs r2, r2 - adds r0, r2, 0 -_080D0F58: - subs r0, r1 - strh r0, [r4, 0x36] - movs r3, 0x34 - ldrsh r0, [r4, r3] - negs r0, r0 - strh r0, [r4, 0x34] -_080D0F64: - ldrh r0, [r4, 0x36] - movs r2, 0 - strh r0, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080D0FD0 - strh r2, [r4, 0x30] - strh r2, [r4, 0x32] -_080D0F7A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D0FD0 -_080D0F82: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D0FAE - movs r0, 0 - strh r0, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D0FAE: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D0FD0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - bl move_anim_8072740 -_080D0FD0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D0E8C - - thumb_func_start sub_80D0FD8 -sub_80D0FD8: @ 80D0FD8 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - movs r5, 0 - mov r0, sp - strh r5, [r0] - mov r1, sp - adds r1, 0x2 - strh r5, [r1] - ldr r0, _080D0FFC @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r2, [r0, r3] - adds r7, r1, 0 - adds r1, r0, 0 - cmp r2, 0 - bne _080D1004 - ldr r0, _080D1000 @ =gBattleAnimBankAttacker - b _080D1006 - .align 2, 0 -_080D0FFC: .4byte gBattleAnimArgs -_080D1000: .4byte gBattleAnimBankAttacker -_080D1004: - ldr r0, _080D1040 @ =gBattleAnimBankTarget -_080D1006: - ldrb r5, [r0] - ldrb r1, [r1, 0x6] - movs r0, 0x1 - adds r4, r0, 0 - eors r4, r1 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080D107E - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D107E - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl sub_807A3FC - cmp r4, 0 - bne _080D1044 - adds r0, r5, 0 - movs r1, 0 - b _080D1048 - .align 2, 0 -_080D1040: .4byte gBattleAnimBankTarget -_080D1044: - adds r0, r5, 0 - movs r1, 0x2 -_080D1048: - bl sub_8077ABC - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D1074 - ldr r2, _080D1070 @ =gBattleAnimArgs - mov r0, sp - ldrh r1, [r0] - subs r1, r4 - ldrh r0, [r2] - subs r1, r0 - subs r0, r1 - strh r0, [r2] - b _080D107E - .align 2, 0 -_080D1070: .4byte gBattleAnimArgs -_080D1074: - ldr r1, _080D1090 @ =gBattleAnimArgs - mov r0, sp - ldrh r0, [r0] - subs r0, r4 - strh r0, [r1] -_080D107E: - ldr r1, _080D1094 @ =sub_80793C4 - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D1090: .4byte gBattleAnimArgs -_080D1094: .4byte sub_80793C4 - thumb_func_end sub_80D0FD8 - - thumb_func_start sub_80D1098 -sub_80D1098: @ 80D1098 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D10B2 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl move_anim_8072740 -_080D10B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1098 - - thumb_func_start sub_80D10B8 -sub_80D10B8: @ 80D10B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - movs r6, 0 - mov r0, sp - strh r6, [r0] - mov r1, sp - adds r1, 0x2 - strh r6, [r1] - ldr r0, _080D10E4 @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080D10F0 - ldr r0, _080D10E8 @ =gBattleAnimBankAttacker - ldrb r7, [r0] - ldr r0, _080D10EC @ =gBattleAnimBankTarget - b _080D10F6 - .align 2, 0 -_080D10E4: .4byte gBattleAnimArgs -_080D10E8: .4byte gBattleAnimBankAttacker -_080D10EC: .4byte gBattleAnimBankTarget -_080D10F0: - ldr r0, _080D1110 @ =gBattleAnimBankTarget - ldrb r7, [r0] - ldr r0, _080D1114 @ =gBattleAnimBankAttacker -_080D10F6: - ldrb r0, [r0] - mov r8, r0 - ldr r0, _080D1118 @ =gBattleAnimArgs - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080D111C - movs r0, 0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x4] - b _080D1124 - .align 2, 0 -_080D1110: .4byte gBattleAnimBankTarget -_080D1114: .4byte gBattleAnimBankAttacker -_080D1118: .4byte gBattleAnimArgs -_080D111C: - movs r2, 0x2 - mov r10, r2 - movs r3, 0x3 - str r3, [sp, 0x4] -_080D1124: - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D1180 - adds r0, r7, 0 - mov r1, r10 - bl sub_8077ABC - lsls r0, 24 - ldr r1, _080D1164 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r0, 0x2 - mov r4, r8 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D1170 - ldr r2, _080D1168 @ =gSprites - ldr r0, _080D116C @ =gObjectBankIDs - adds r0, r4, r0 - b _080D120A - .align 2, 0 -_080D1164: .4byte gBattleAnimArgs -_080D1168: .4byte gSprites -_080D116C: .4byte gObjectBankIDs -_080D1170: - ldr r2, _080D1178 @ =gSprites - ldr r0, _080D117C @ =gObjectBankIDs - add r0, r8 - b _080D120A - .align 2, 0 -_080D1178: .4byte gSprites -_080D117C: .4byte gObjectBankIDs -_080D1180: - adds r0, r7, 0 - mov r1, r10 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D11EC @ =gBattleAnimArgs - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r0, _080D11F0 @ =gMain - ldr r1, _080D11F4 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D1204 - adds r4, r7, 0 - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D1204 - ldr r3, _080D11F8 @ =gSprites - ldr r2, _080D11FC @ =gObjectBankIDs - adds r0, r7, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r3 - adds r2, r4, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r3, 0x20 - ldrsh r1, [r6, r3] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080D1200 - adds r0, r2, 0 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 - b _080D121A - .align 2, 0 -_080D11EC: .4byte gBattleAnimArgs -_080D11F0: .4byte gMain -_080D11F4: .4byte 0x0000043d -_080D11F8: .4byte gSprites -_080D11FC: .4byte gObjectBankIDs -_080D1200: - adds r0, r6, 0 - b _080D1214 -_080D1204: - ldr r2, _080D1268 @ =gSprites - ldr r0, _080D126C @ =gObjectBankIDs - adds r0, r7, r0 -_080D120A: - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_080D1214: - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 -_080D121A: - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r7, 0 - ldr r1, [sp, 0x4] - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D1270 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _080D1274 @ =gMain - ldr r2, _080D1278 @ =0x0000043d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D127C - mov r0, r8 - movs r1, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D127C - ldrb r1, [r4, 0xC] - mov r0, r8 - mov r2, sp - mov r3, sp - adds r3, 0x2 - bl sub_807A3FC - b _080D129C - .align 2, 0 -_080D1268: .4byte gSprites -_080D126C: .4byte gObjectBankIDs -_080D1270: .4byte gBattleAnimArgs -_080D1274: .4byte gMain -_080D1278: .4byte 0x0000043d -_080D127C: - mov r4, sp - mov r0, r8 - mov r1, r10 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - mov r0, r8 - ldr r1, [sp, 0x4] - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r3, sp - strh r0, [r3, 0x2] -_080D129C: - mov r0, r8 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D12C0 - mov r3, sp - mov r2, sp - ldr r1, _080D12BC @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r3] - adds r2, r1, 0 - b _080D12CE - .align 2, 0 -_080D12BC: .4byte gBattleAnimArgs -_080D12C0: - mov r3, sp - mov r0, sp - ldr r2, _080D1310 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - subs r0, r1 - strh r0, [r3] -_080D12CE: - ldrh r1, [r2, 0x8] - mov r0, sp - ldrh r0, [r0, 0x2] - adds r1, r0 - mov r3, sp - strh r1, [r3, 0x2] - mov r0, r9 - strh r0, [r5, 0x30] - strh r0, [r5, 0x20] - strh r6, [r5, 0x34] - strh r6, [r5, 0x22] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x32] - strh r1, [r5, 0x36] - ldrh r0, [r2] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080D1314 @ =sub_80D1098 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D1310: .4byte gBattleAnimArgs -_080D1314: .4byte sub_80D1098 - thumb_func_end sub_80D10B8 - - thumb_func_start sub_80D1318 -sub_80D1318: @ 80D1318 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D1358 @ =0x000027db - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D133E - lsls r0, 20 - ldr r1, _080D135C @ =0x01010000 - adds r0, r1 - lsrs r0, 16 - ldr r1, _080D1360 @ =gBattleAnimArgs - ldrb r2, [r1, 0xA] - ldrh r3, [r1, 0x8] - movs r1, 0xF - bl BlendPalette -_080D133E: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080D1364 @ =sub_80793C4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1358: .4byte 0x000027db -_080D135C: .4byte 0x01010000 -_080D1360: .4byte gBattleAnimArgs -_080D1364: .4byte sub_80793C4 - thumb_func_end sub_80D1318 - - thumb_func_start sub_80D1368 -sub_80D1368: @ 80D1368 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r0, _080D139C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080D1384 - ldr r1, _080D13A0 @ =0x0000ff60 -_080D1384: - movs r0, 0xE0 - lsls r0, 2 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080D13A4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080D13A8 @ =sub_80D13AC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D139C: .4byte gBattleAnimBankAttacker -_080D13A0: .4byte 0x0000ff60 -_080D13A4: .4byte gBattleAnimArgs -_080D13A8: .4byte sub_80D13AC - thumb_func_end sub_80D1368 - - thumb_func_start sub_80D13AC -sub_80D13AC: @ 80D13AC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - subs r1, r0 - movs r5, 0 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - subs r2, 0x20 - strh r2, [r4, 0x2E] - ldr r0, _080D1418 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080D13DC - ldr r1, _080D141C @ =0x0000ff60 -_080D13DC: - lsls r0, r1, 16 - asrs r0, 16 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x26] - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080D1410 - ldrh r2, [r4, 0x22] - adds r0, r1, r2 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080D1420 @ =sub_80D1424 - str r0, [r4, 0x1C] -_080D1410: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1418: .4byte gBattleAnimBankAttacker -_080D141C: .4byte 0x0000ff60 -_080D1420: .4byte sub_80D1424 - thumb_func_end sub_80D13AC - - thumb_func_start sub_80D1424 -sub_80D1424: @ 80D1424 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080D1442 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080D1448 @ =sub_80D144C - str r0, [r4, 0x1C] -_080D1442: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1448: .4byte sub_80D144C - thumb_func_end sub_80D1424 - - thumb_func_start sub_80D144C -sub_80D144C: @ 80D144C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D14B2 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D1498 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080D148C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D1490 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080D1494 @ =sub_80D14C4 - b _080D14B0 - .align 2, 0 -_080D148C: .4byte 0x000003ff -_080D1490: .4byte 0xfffffc00 -_080D1494: .4byte sub_80D14C4 -_080D1498: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r3, _080D14B8 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D14BC @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080D14C0 @ =sub_80D154C -_080D14B0: - str r0, [r4, 0x1C] -_080D14B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D14B8: .4byte 0x000003ff -_080D14BC: .4byte 0xfffffc00 -_080D14C0: .4byte sub_80D154C - thumb_func_end sub_80D144C - - thumb_func_start sub_80D14C4 -sub_80D14C4: @ 80D14C4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x26] - subs r0, 0x2 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080D14F8 - movs r0, 0x10 - strh r0, [r2, 0x2E] - movs r0, 0 - strh r0, [r2, 0x30] - ldr r1, _080D14FC @ =REG_BLDCNT - movs r3, 0xFD - lsls r3, 6 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x2E] - strh r0, [r1] - ldr r0, _080D1500 @ =sub_80D1504 - str r0, [r2, 0x1C] -_080D14F8: - pop {r0} - bx r0 - .align 2, 0 -_080D14FC: .4byte REG_BLDCNT -_080D1500: .4byte sub_80D1504 - thumb_func_end sub_80D14C4 - - thumb_func_start sub_80D1504 -sub_80D1504: @ 80D1504 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080D153C - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - ldr r2, _080D1544 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D153C - ldr r0, _080D1548 @ =sub_80D154C - str r0, [r4, 0x1C] -_080D153C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1544: .4byte REG_BLDALPHA -_080D1548: .4byte sub_80D154C - thumb_func_end sub_80D1504 - - thumb_func_start sub_80D154C -sub_80D154C: @ 80D154C - push {lr} - adds r3, r0, 0 - ldr r0, _080D1574 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D1578 @ =0x0000ffff - cmp r1, r0 - bne _080D1584 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x3C - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080D1580 - ldr r0, _080D157C @ =sub_80D158C - b _080D1582 - .align 2, 0 -_080D1574: .4byte gBattleAnimArgs -_080D1578: .4byte 0x0000ffff -_080D157C: .4byte sub_80D158C -_080D1580: - ldr r0, _080D1588 @ =move_anim_8072740 -_080D1582: - str r0, [r3, 0x1C] -_080D1584: - pop {r0} - bx r0 - .align 2, 0 -_080D1588: .4byte move_anim_8072740 - thumb_func_end sub_80D154C - - thumb_func_start sub_80D158C -sub_80D158C: @ 80D158C - push {lr} - ldr r1, _080D15A0 @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - bl move_anim_8072740 - pop {r0} - bx r0 - .align 2, 0 -_080D15A0: .4byte REG_BLDCNT - thumb_func_end sub_80D158C - - thumb_func_start sub_80D15A4 -sub_80D15A4: @ 80D15A4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D15D4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, _080D15D8 @ =gUnknown_083D79BC - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D15DC @ =sub_80D15E0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D15D4: .4byte gTasks -_080D15D8: .4byte gUnknown_083D79BC -_080D15DC: .4byte sub_80D15E0 - thumb_func_end sub_80D15A4 - - thumb_func_start sub_80D15E0 -sub_80D15E0: @ 80D15E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D1630 @ =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080D162A - ldr r2, _080D1634 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D162A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1630: .4byte gTasks -_080D1634: .4byte gSprites - thumb_func_end sub_80D15E0 - - thumb_func_start sub_80D1638 -sub_80D1638: @ 80D1638 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D166C @ =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, _080D1670 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D1678 - ldr r0, _080D1674 @ =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _080D167E - .align 2, 0 -_080D166C: .4byte gTasks -_080D1670: .4byte gBattleAnimBankTarget -_080D1674: .4byte 0x0000ffff -_080D1678: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, _080D1698 @ =0x0000fff8 -_080D167E: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D169C @ =sub_80D16A0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1698: .4byte 0x0000fff8 -_080D169C: .4byte sub_80D16A0 - thumb_func_end sub_80D1638 - - thumb_func_start sub_80D16A0 -sub_80D16A0: @ 80D16A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D16C4 @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _080D16F4 - cmp r4, 0x1 - bgt _080D16C8 - cmp r4, 0 - beq _080D16D2 - b _080D17BA - .align 2, 0 -_080D16C4: .4byte gTasks -_080D16C8: - cmp r4, 0x2 - beq _080D1770 - cmp r4, 0x3 - beq _080D178A - b _080D17BA -_080D16D2: - ldr r2, _080D16F0 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _080D1782 - .align 2, 0 -_080D16F0: .4byte gSprites -_080D16F4: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D17BA - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _080D172C - ldr r2, _080D1728 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _080D173E - .align 2, 0 -_080D1728: .4byte gSprites -_080D172C: - ldr r2, _080D176C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_080D173E: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D17BA - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D1782 - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _080D1782 - .align 2, 0 -_080D176C: .4byte gSprites -_080D1770: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _080D1782 - movs r0, 0 - strh r0, [r3, 0x8] - b _080D17BA -_080D1782: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080D17BA -_080D178A: - ldr r2, _080D17C0 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D17BA - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D17BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D17C0: .4byte gSprites - thumb_func_end sub_80D16A0 - - thumb_func_start sub_80D17C4 -sub_80D17C4: @ 80D17C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D1800 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D1804 @ =sub_80D1808 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1800: .4byte gTasks -_080D1804: .4byte sub_80D1808 - thumb_func_end sub_80D17C4 - - thumb_func_start sub_80D1808 -sub_80D1808: @ 80D1808 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D185C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080D18CE - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _080D18CE - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D1864 - ldr r3, _080D1860 @ =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _080D187A - .align 2, 0 -_080D185C: .4byte gTasks -_080D1860: .4byte gSprites -_080D1864: - ldr r3, _080D18AC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080D187A: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080D18CE - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _080D18B0 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _080D18CE - .align 2, 0 -_080D18AC: .4byte gSprites -_080D18B0: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D18CE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D1808 - - thumb_func_start sub_80D18D4 -sub_80D18D4: @ 80D18D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D1924 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, _080D1928 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D192C @ =sub_80D1930 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1924: .4byte gTasks -_080D1928: .4byte gBattleAnimBankAttacker -_080D192C: .4byte sub_80D1930 - thumb_func_end sub_80D18D4 - - thumb_func_start sub_80D1930 -sub_80D1930: @ 80D1930 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D1954 @ =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080D199C - cmp r2, 0x1 - bgt _080D1958 - cmp r2, 0 - beq _080D195E - b _080D19B8 - .align 2, 0 -_080D1954: .4byte gTasks -_080D1958: - cmp r2, 0x2 - beq _080D19B4 - b _080D19B8 -_080D195E: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D19B8 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D19B8 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D1996 - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _080D19B8 -_080D1996: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _080D19B8 -_080D199C: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D19B8 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _080D19B8 -_080D19B4: - movs r0, 0x1 - strh r0, [r4, 0x12] -_080D19B8: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _080D19C6 - cmp r5, 0x1 - beq _080D1A5C - b _080D1A6A -_080D19C6: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D1A6A - strh r5, [r4, 0xA] - ldr r0, _080D1A50 @ =gSpriteTemplate_83D79E8 - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080D1A6A - ldr r0, _080D1A54 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, _080D1A58 @ =gUnknown_083D7A00 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080D1A6A - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080D1A6A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D1A6A - .align 2, 0 -_080D1A50: .4byte gSpriteTemplate_83D79E8 -_080D1A54: .4byte gSprites -_080D1A58: .4byte gUnknown_083D7A00 -_080D1A5C: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D1A6A - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1A6A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D1930 - - thumb_func_start sub_80D1A70 -sub_80D1A70: @ 80D1A70 - push {r4,lr} - adds r3, r0, 0 - ldr r4, _080D1AD8 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D1AD2 - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_080D1AD2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1AD8: .4byte gTasks - thumb_func_end sub_80D1A70 - - thumb_func_start sub_80D1ADC -sub_80D1ADC: @ 80D1ADC - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080D1B34 @ =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r5, 0x1 - ldr r0, _080D1B38 @ =0x00002710 - adds r4, r0, 0 -_080D1AF4: - subs r0, r4, r5 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r5 - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x4 - ble _080D1AF4 - ldr r4, _080D1B3C @ =gBattleAnimSpritePalette_206 - bl NotInBattle - lsls r0, 24 - ldr r1, _080D1B40 @ =gSharedMem + 0x18000 - cmp r0, 0 - beq _080D1B1C - ldr r0, _080D1B44 @ =0xffffc800 - adds r1, r0 -_080D1B1C: - adds r0, r4, 0 - bl LZDecompressWram - movs r5, 0 -_080D1B24: - lsls r4, r5, 5 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D1B4C - ldr r0, _080D1B48 @ =gSharedMem + 0x14800 - b _080D1B4E - .align 2, 0 -_080D1B34: .4byte 0x000027de -_080D1B38: .4byte 0x00002710 -_080D1B3C: .4byte gBattleAnimSpritePalette_206 -_080D1B40: .4byte gSharedMem + 0x18000 -_080D1B44: .4byte 0xffffc800 -_080D1B48: .4byte gSharedMem + 0x14800 -_080D1B4C: - ldr r0, _080D1B7C @ =gSharedMem + 0x18000 -_080D1B4E: - adds r2, r4, r0 - mov r1, sp - adds r0, r1, r5 - ldrb r1, [r0] - lsls r1, 20 - movs r0, 0x80 - lsls r0, 17 - adds r1, r0 - lsrs r1, 16 - adds r0, r2, 0 - movs r2, 0x20 - bl LoadPalette - adds r5, 0x1 - cmp r5, 0x4 - ble _080D1B24 - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1B7C: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80D1ADC - - thumb_func_start sub_80D1B80 -sub_80D1B80: @ 80D1B80 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080D1BA4 @ =gUnknown_083D7A5C - movs r4, 0x4 -_080D1B8A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D1B8A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1BA4: .4byte gUnknown_083D7A5C - thumb_func_end sub_80D1B80 - - thumb_func_start sub_80D1BA8 -sub_80D1BA8: @ 80D1BA8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, _080D1BFC @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, _080D1C00 @ =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, _080D1C04 @ =gUnknown_083D7A5C - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1BFC: .4byte 0x000003ff -_080D1C00: .4byte 0xfffffc00 -_080D1C04: .4byte gUnknown_083D7A5C - thumb_func_end sub_80D1BA8 - - thumb_func_start sub_80D1C08 -sub_80D1C08: @ 80D1C08 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r6, _080D1C70 @ =gBattleAnimBankAttacker - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D1C28 - ldr r1, _080D1C74 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080D1C28: - ldr r4, _080D1C74 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, _080D1C78 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D1C7C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_80D1BA8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1C70: .4byte gBattleAnimBankAttacker -_080D1C74: .4byte gBattleAnimArgs -_080D1C78: .4byte sub_8078B34 -_080D1C7C: .4byte move_anim_8072740 - thumb_func_end sub_80D1C08 - - thumb_func_start sub_80D1C80 -sub_80D1C80: @ 80D1C80 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1C9A - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 -_080D1C9A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _080D1CCA - adds r0, r4, 0 - bl move_anim_8072740 -_080D1CCA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1C80 - - thumb_func_start sub_80D1CD0 -sub_80D1CD0: @ 80D1CD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl NotInBattle - lsls r0, 24 - movs r2, 0xF0 - cmp r0, 0 - beq _080D1CE4 - movs r2, 0x98 -_080D1CE4: - movs r3, 0 - ldr r0, _080D1D2C @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _080D1D30 @ =gUnknown_03004240 - movs r1, 0xA0 - strh r1, [r0] - ldr r0, _080D1D34 @ =REG_WIN0H - strh r2, [r0] - adds r0, 0x4 - strh r1, [r0] - ldr r1, _080D1D38 @ =REG_WININ - ldr r5, _080D1D3C @ =0x00003f1f - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x2 - adds r5, 0x20 - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x6 - movs r0, 0xC8 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0x10 - strh r0, [r1] - ldr r1, _080D1D40 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x8] - strh r2, [r0, 0xA] - ldr r1, _080D1D44 @ =sub_80D1D48 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1D2C: .4byte gUnknown_030042C4 -_080D1D30: .4byte gUnknown_03004240 -_080D1D34: .4byte REG_WIN0H -_080D1D38: .4byte REG_WININ -_080D1D3C: .4byte 0x00003f1f -_080D1D40: .4byte gTasks -_080D1D44: .4byte sub_80D1D48 - thumb_func_end sub_80D1CD0 - - thumb_func_start sub_80D1D48 -sub_80D1D48: @ 80D1D48 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D1D7C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080D1D88 - ldr r0, _080D1D80 @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D1D84 @ =sub_80D1D9C - str r0, [r3] - b _080D1D90 - .align 2, 0 -_080D1D7C: .4byte gTasks -_080D1D80: .4byte gUnknown_030042C4 -_080D1D84: .4byte sub_80D1D9C -_080D1D88: - ldr r1, _080D1D98 @ =gUnknown_030042C4 - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_080D1D90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1D98: .4byte gUnknown_030042C4 - thumb_func_end sub_80D1D48 - - thumb_func_start sub_80D1D9C -sub_80D1D9C: @ 80D1D9C - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r5, _080D1DEC @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r3, r0, 3 - adds r1, r3, r5 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080D1DF8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - adds r0, r5, r3 - adds r0, 0x1E - ldr r1, _080D1DF0 @ =REG_BLDCNT - movs r2, 0x2 - bl RequestSpriteCopy - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - ldr r2, _080D1DF4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _080D1E1E - .align 2, 0 -_080D1DEC: .4byte gTasks -_080D1DF0: .4byte REG_BLDCNT -_080D1DF4: .4byte 0x00007fff -_080D1DF8: - cmp r0, 0x4 - ble _080D1E1E - ldr r0, _080D1E28 @ =gUnknown_030042C4 - strh r4, [r0] - ldr r0, _080D1E2C @ =gUnknown_03004240 - strh r4, [r0] - ldr r0, _080D1E30 @ =REG_WININ - ldr r3, _080D1E34 @ =0x00003f3f - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D1E1E: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1E28: .4byte gUnknown_030042C4 -_080D1E2C: .4byte gUnknown_03004240 -_080D1E30: .4byte REG_WININ -_080D1E34: .4byte 0x00003f3f - thumb_func_end sub_80D1D9C - - thumb_func_start sub_80D1E38 -sub_80D1E38: @ 80D1E38 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D1E88 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1E94 - movs r0, 0x1 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D1E8C @ =gUnknown_083D7A98 - adds r0, r5, 0 - bl sub_80798F4 - ldr r1, _080D1E90 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080D1EBC - .align 2, 0 -_080D1E88: .4byte gTasks -_080D1E8C: .4byte gUnknown_083D7A98 -_080D1E90: .4byte gSprites -_080D1E94: - ldr r1, _080D1EC4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_807992C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D1EBC - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1EBC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1EC4: .4byte gSprites - thumb_func_end sub_80D1E38 - - thumb_func_start sub_80D1EC8 -sub_80D1EC8: @ 80D1EC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D1F18 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1F24 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D1F1C @ =gUnknown_083D7A98 - adds r0, r5, 0 - bl sub_80798F4 - ldr r1, _080D1F20 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080D1F4C - .align 2, 0 -_080D1F18: .4byte gTasks -_080D1F1C: .4byte gUnknown_083D7A98 -_080D1F20: .4byte gSprites -_080D1F24: - ldr r1, _080D1F54 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_807992C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D1F4C - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1F4C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1F54: .4byte gSprites - thumb_func_end sub_80D1EC8 - - thumb_func_start sub_80D1F58 -sub_80D1F58: @ 80D1F58 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080D1F9C @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D1FA0 @ =sub_80D1FA4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1F9C: .4byte gBattleAnimBankTarget -_080D1FA0: .4byte sub_80D1FA4 - thumb_func_end sub_80D1F58 - - thumb_func_start sub_80D1FA4 -sub_80D1FA4: @ 80D1FA4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D1FCE - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080D1FD4 -_080D1FCE: - adds r0, r4, 0 - bl move_anim_8072740 -_080D1FD4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1FA4 - - thumb_func_start sub_80D1FDC -sub_80D1FDC: @ 80D1FDC - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2000 - ldr r1, _080D1FFC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080D205C - .align 2, 0 -_080D1FFC: .4byte gBattleAnimArgs -_080D2000: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _080D204E - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D204E: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080D205C - adds r0, r4, 0 - bl move_anim_8072740 -_080D205C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1FDC - - thumb_func_start sub_80D2064 -sub_80D2064: @ 80D2064 - push {lr} - ldr r2, _080D2088 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, _080D208C @ =sub_80782D8 - str r1, [r0, 0x1C] - ldr r1, _080D2090 @ =sub_80D2094 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080D2088: .4byte gBattleAnimArgs -_080D208C: .4byte sub_80782D8 -_080D2090: .4byte sub_80D2094 - thumb_func_end sub_80D2064 - - thumb_func_start sub_80D2094 -sub_80D2094: @ 80D2094 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _080D20FA - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _080D20FA - adds r0, r4, 0 - bl move_anim_8072740 -_080D20FA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D2094 - - thumb_func_start sub_80D2100 -sub_80D2100: @ 80D2100 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D21BC @ =REG_BLDCNT - ldr r2, _080D21C0 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D21C4 @ =REG_BG1CNT - ldrb r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D2144 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D2144: - ldr r0, _080D21C8 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D21CC @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D21D0 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r2, _080D21D4 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080D21D8 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080D21DC @ =gAttractTilemap - bl LZDecompressVram - ldr r0, _080D21E0 @ =gAttractGfx - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D21E4 @ =gAttractPal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D21A4 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D21A4: - ldr r0, _080D21E8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080D21EC @ =sub_80D21F0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D21BC: .4byte REG_BLDCNT -_080D21C0: .4byte 0x00003f42 -_080D21C4: .4byte REG_BG1CNT -_080D21C8: .4byte gUnknown_030042C0 -_080D21CC: .4byte gUnknown_030041B4 -_080D21D0: .4byte REG_BG1HOFS -_080D21D4: .4byte 0x040000d4 -_080D21D8: .4byte 0x85000400 -_080D21DC: .4byte gAttractTilemap -_080D21E0: .4byte gAttractGfx -_080D21E4: .4byte gAttractPal -_080D21E8: .4byte gTasks -_080D21EC: .4byte sub_80D21F0 - thumb_func_end sub_80D2100 - - thumb_func_start sub_80D21F0 -sub_80D21F0: @ 80D21F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2220 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080D2216 - b _080D238C -_080D2216: - lsls r0, 2 - ldr r1, _080D2224 @ =_080D2228 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D2220: .4byte gTasks -_080D2224: .4byte _080D2228 - .align 2, 0 -_080D2228: - .4byte _080D223C - .4byte _080D2284 - .4byte _080D22A6 - .4byte _080D22E8 - .4byte _080D236C -_080D223C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080D2256 - b _080D238C -_080D2256: - strh r4, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - adds r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D2280 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0x10 - beq _080D2274 - b _080D238C -_080D2274: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080D238C - .align 2, 0 -_080D2280: .4byte REG_BLDALPHA -_080D2284: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _080D238C - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080D238C -_080D22A6: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080D238C - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D22E4 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080D238C - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080D238C - .align 2, 0 -_080D22E4: .4byte REG_BLDALPHA -_080D22E8: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r0, r5, 2 - mov r10, r0 - add r6, sp, 0xC - movs r7, 0 - ldr r1, _080D239C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r0, _080D23A0 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D230E: - str r7, [sp, 0xC] - 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 _080D230E - str r7, [sp, 0xC] - 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] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D239C @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D23A4 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D235C - ldr r2, _080D23A8 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D235C: - ldr r0, _080D23AC @ =gTasks - mov r2, r10 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080D236C: - ldr r0, _080D23B0 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D23A8 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D238C: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D239C: .4byte 0x040000d4 -_080D23A0: .4byte 0x85000400 -_080D23A4: .4byte 0x85000200 -_080D23A8: .4byte REG_BG1CNT -_080D23AC: .4byte gTasks -_080D23B0: .4byte REG_BLDCNT - thumb_func_end sub_80D21F0 - - thumb_func_start sub_80D23B4 -sub_80D23B4: @ 80D23B4 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2438 @ =REG_BLDCNT - ldr r2, _080D243C @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D2440 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D23FE - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D23FE: - ldr r0, _080D2444 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D2448 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D244C @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r1, _080D2450 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080D2454 @ =0x85000400 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D245C - ldr r0, _080D2458 @ =gBattleAnimBackgroundTilemap_ScaryFaceContest - b _080D246E - .align 2, 0 -_080D2438: .4byte REG_BLDCNT -_080D243C: .4byte 0x00003f42 -_080D2440: .4byte REG_BG1CNT -_080D2444: .4byte gUnknown_030042C0 -_080D2448: .4byte gUnknown_030041B4 -_080D244C: .4byte REG_BG1HOFS -_080D2450: .4byte 0x040000d4 -_080D2454: .4byte 0x85000400 -_080D2458: .4byte gBattleAnimBackgroundTilemap_ScaryFaceContest -_080D245C: - ldr r0, _080D2478 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D2480 - ldr r0, _080D247C @ =gBattleAnimBackgroundTilemap_ScaryFacePlayer -_080D246E: - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080D2488 - .align 2, 0 -_080D2478: .4byte gBattleAnimBankTarget -_080D247C: .4byte gBattleAnimBackgroundTilemap_ScaryFacePlayer -_080D2480: - ldr r0, _080D24CC @ =gBattleAnimBackgroundTilemap_ScaryFaceOpponent - ldr r1, [sp, 0x4] - bl LZDecompressVram -_080D2488: - ldr r0, _080D24D0 @ =gBattleAnimBackgroundImage_ScaryFace - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D24D4 @ =gBattleAnimBackgroundPalette_ScaryFace - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D24B6 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D24B6: - ldr r0, _080D24D8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080D24DC @ =sub_80D24E0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D24CC: .4byte gBattleAnimBackgroundTilemap_ScaryFaceOpponent -_080D24D0: .4byte gBattleAnimBackgroundImage_ScaryFace -_080D24D4: .4byte gBattleAnimBackgroundPalette_ScaryFace -_080D24D8: .4byte gTasks -_080D24DC: .4byte sub_80D24E0 - thumb_func_end sub_80D23B4 - - thumb_func_start sub_80D24E0 -sub_80D24E0: @ 80D24E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2510 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080D2506 - b _080D267C -_080D2506: - lsls r0, 2 - ldr r1, _080D2514 @ =_080D2518 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D2510: .4byte gTasks -_080D2514: .4byte _080D2518 - .align 2, 0 -_080D2518: - .4byte _080D252C - .4byte _080D2574 - .4byte _080D2596 - .4byte _080D25D8 - .4byte _080D265C -_080D252C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - beq _080D2546 - b _080D267C -_080D2546: - strh r4, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - adds r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D2570 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0xE - beq _080D2564 - b _080D267C -_080D2564: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080D267C - .align 2, 0 -_080D2570: .4byte REG_BLDALPHA -_080D2574: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080D267C - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080D267C -_080D2596: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080D267C - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D25D4 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080D267C - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080D267C - .align 2, 0 -_080D25D4: .4byte REG_BLDALPHA -_080D25D8: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r0, r5, 2 - mov r10, r0 - add r6, sp, 0xC - movs r7, 0 - ldr r1, _080D268C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r0, _080D2690 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D25FE: - str r7, [sp, 0xC] - 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 _080D25FE - str r7, [sp, 0xC] - 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] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D268C @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D2694 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D264C - ldr r2, _080D2698 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D264C: - ldr r0, _080D269C @ =gTasks - mov r2, r10 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080D265C: - ldr r0, _080D26A0 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D2698 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D267C: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D268C: .4byte 0x040000d4 -_080D2690: .4byte 0x85000400 -_080D2694: .4byte 0x85000200 -_080D2698: .4byte REG_BG1CNT -_080D269C: .4byte gTasks -_080D26A0: .4byte REG_BLDCNT - thumb_func_end sub_80D24E0 - - thumb_func_start sub_80D26A4 -sub_80D26A4: @ 80D26A4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D26F8 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080D26FC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, _080D2700 @ =sub_80D2704 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D26F8: .4byte gBattleAnimBankAttacker -_080D26FC: .4byte gBattleAnimArgs -_080D2700: .4byte sub_80D2704 - thumb_func_end sub_80D26A4 - - thumb_func_start sub_80D2704 -sub_80D2704: @ 80D2704 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080D271A - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _080D271E -_080D271A: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_080D271E: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _080D2790 - cmp r2, 0x1 - bne _080D27C0 - ldr r1, _080D2788 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080D278C @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D27C0 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _080D27D0 - .align 2, 0 -_080D2788: .4byte 0xfffffc00 -_080D278C: .4byte 0xffffff00 -_080D2790: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080D27C0 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_080D27C0: - ldr r0, _080D27D8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D27DC @ =0x0000ffff - cmp r1, r0 - bne _080D27D0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D27D0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D27D8: .4byte gBattleAnimArgs -_080D27DC: .4byte 0x0000ffff - thumb_func_end sub_80D2704 - - thumb_func_start sub_80D27E0 -sub_80D27E0: @ 80D27E0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D2828 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080D282C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, _080D2830 @ =sub_80D2834 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2828: .4byte gBattleAnimBankAttacker -_080D282C: .4byte gBattleAnimArgs -_080D2830: .4byte sub_80D2834 - thumb_func_end sub_80D27E0 - - thumb_func_start sub_80D2834 -sub_80D2834: @ 80D2834 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080D2872 - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _080D2872 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D2878 -_080D2872: - adds r0, r2, 0 - bl move_anim_8072740 -_080D2878: - pop {r0} - bx r0 - thumb_func_end sub_80D2834 - - thumb_func_start sub_80D287C -sub_80D287C: @ 80D287C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080D28A8 - adds r0, r2, 0 - bl move_anim_8072740 -_080D28A8: - pop {r0} - bx r0 - thumb_func_end sub_80D287C - - thumb_func_start sub_80D28AC -sub_80D28AC: @ 80D28AC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D28F8 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080D28FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, _080D2900 @ =sub_80D287C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D28F8: .4byte gBattleAnimBankAttacker -_080D28FC: .4byte gBattleAnimArgs -_080D2900: .4byte sub_80D287C - thumb_func_end sub_80D28AC - - thumb_func_start sub_80D2904 -sub_80D2904: @ 80D2904 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D291A - adds r0, r2, 0 - bl move_anim_8072740 -_080D291A: - pop {r0} - bx r0 - thumb_func_end sub_80D2904 - - thumb_func_start sub_80D2920 -sub_80D2920: @ 80D2920 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D2934 @ =sub_80D2904 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2934: .4byte sub_80D2904 - thumb_func_end sub_80D2920 - - thumb_func_start sub_80D2938 -sub_80D2938: @ 80D2938 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2956 - ldr r0, _080D29C8 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080D2956: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _080D299A - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_080D299A: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _080D29B8 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_080D29B8: - cmp r2, 0x64 - ble _080D29C2 - adds r0, r4, 0 - bl move_anim_8072740 -_080D29C2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D29C8: .4byte gBattleAnimArgs - thumb_func_end sub_80D2938 - - thumb_func_start sub_80D29CC -sub_80D29CC: @ 80D29CC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080D2A22 - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D2A22: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _080D2A30 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2A30: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D29CC - - thumb_func_start sub_80D2A38 -sub_80D2A38: @ 80D2A38 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2A5C - ldr r1, _080D2A58 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080D2AB0 - .align 2, 0 -_080D2A58: .4byte gBattleAnimArgs -_080D2A5C: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _080D2AB0 - ldr r0, _080D2AB8 @ =sub_80D29CC - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_080D2AB0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2AB8: .4byte sub_80D29CC - thumb_func_end sub_80D2A38 - thumb_func_start sub_80D2ABC sub_80D2ABC: @ 80D2ABC push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index b22462cb7..9347967a5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -164,6 +164,7 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/battle/contest_link_80C857C.o(.text); src/field/item_use.o(.text); + src/battle_anim_80CA710.o(.text); asm/battle_anim_80CA710.o(.text); src/field/bike.o(.text); asm/easy_chat.o(.text); diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c new file mode 100755 index 000000000..b4f94fbde --- /dev/null +++ b/src/battle_anim_80CA710.c @@ -0,0 +1,6121 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "ewram.h" +#include "main.h" +#include "palette.h" +#include "rng.h" +#include "rom_8077ABC.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +struct __attribute__((packed)) Some3ByteStruct { + u8 unkArr[3]; +}; + +struct UnknownStruct_1 +{ + void *src[2]; + void *dest; + u32 unkC; + void (*unk10)(void); + u8 srcBank; + u8 unk15; + u8 unk16; + u8 unk17; + u8 taskId; + u8 filler19[0x7]; +}; + +struct UnknownStruct_2 +{ + const void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + +struct UnknownStruct6 +{ + u16 unk0[0xA0]; + u8 fillerA0[0x640]; + u16 unk780[0xA0]; +}; + +struct Struct_sub_8078914 +{ + u8 *field_0; + u8 *field_4; + u8 field_8; +}; + +extern u8 gBanksBySide[]; +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern struct SpriteTemplate gSpriteTemplate_83D631C; +extern struct SpriteTemplate gSpriteTemplate_83D6884; +extern struct SpriteTemplate gSpriteTemplate_83D74BC; +extern struct SpriteTemplate gSpriteTemplate_83D75AC; +extern struct SpriteTemplate gSpriteTemplate_83D79E8; +extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8; +extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8; +extern struct AffineAnimFrameCmd gUnknown_083D76F4; +extern struct AffineAnimFrameCmd gUnknown_083D7714; +extern struct AffineAnimFrameCmd gUnknown_083D77B0; +extern struct AffineAnimFrameCmd gUnknown_083D79BC; +extern struct AffineAnimFrameCmd gUnknown_083D7A98; +extern struct INCBIN_U8 gBattleAnimSpritePalette_206; +extern struct INCBIN_U8 gAttractTilemap; +extern struct INCBIN_U8 gAttractGfx; +extern struct INCBIN_U8 gAttractPal; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceContest; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFacePlayer; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent; +extern struct INCBIN_U8 gBattleAnimBackgroundImage_ScaryFace; +extern struct INCBIN_U8 gBattleAnimBackgroundPalette_ScaryFace; +extern s16 gUnknown_03000728[]; +extern s8 gUnknown_083D680C[11][3]; +extern u16 gUnknown_083D6984[]; +extern s8 gUnknown_083D6DDC[4][2]; +extern u8 gObjectBankIDs[]; +extern u8 gNoOfAllBanks; +extern u8 gHealthboxIDs[]; +extern u16 gUnknown_083D712C[4][6]; +extern u16 gBattleTypeFlags; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042C4; +extern u16 gUnknown_03004240; +extern u16 gUnknown_030041B4; +extern s8 gUnknown_083D7A00[4][2]; +extern u16 gUnknown_083D7A5C[5]; +extern struct UnknownStruct6 gUnknown_03004DE0; +extern struct UnknownStruct_1 gUnknown_03004DC0; + +void sub_80CA768(struct Sprite* sprite); +void sub_80CA8B4(struct Sprite* sprite); +void sub_80CA9F8(struct Sprite* sprite); +void sub_80CAACC(struct Sprite* sprite); +void sub_80CAB88(struct Sprite* sprite); +void sub_80CABC0(struct Sprite* sprite); +void sub_80CAC44(struct Sprite* sprite); +void sub_80CADA8(struct Sprite* sprite); +void sub_80CAE74(struct Sprite* sprite); +void sub_80CAF20(struct Sprite* sprite); +void sub_80CAF6C(struct Sprite* sprite); +void sub_80CB09C(struct Sprite* sprite); +void sub_80CB1A4(struct Sprite* sprite); +void sub_80CB298(struct Sprite* sprite); +void sub_80CB2D4(struct Sprite* sprite); +void sub_80CB710(struct Sprite* sprite); +void sub_80CBB60(struct Sprite* sprite); +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); +void sub_80CCF70(struct Sprite* sprite); +void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2); +void sub_80CD2D4(struct Sprite* sprite); +void sub_80CD394(struct Sprite* sprite); +void sub_80CD408(struct Sprite* sprite); +void sub_80CD4B8(struct Sprite* sprite); +void sub_80CD4EC(struct Sprite* sprite); +void sub_80CD5A8(struct Sprite* sprite); +void sub_80CD654(struct Sprite* sprite); +void sub_80CD67C(struct Sprite* sprite); +void sub_80CD7CC(struct Sprite* sprite); +void sub_80CD81C(struct Sprite* sprite); +void sub_80CD8A8(struct Sprite* sprite); +void sub_80CD8F8(struct Sprite* sprite); +void sub_80CD91C(struct Sprite* sprite); +void sub_80CD9B8(struct Sprite* sprite); +void sub_80CD9D4(struct Sprite* sprite); +void sub_80CDE78(struct Sprite* sprite); +void sub_80CDEB0(struct Sprite* sprite); +void sub_80CDEC0(struct Sprite* sprite); +void sub_80CDF70(struct Sprite* sprite); +void sub_80CE000(struct Sprite* sprite); +void sub_80CE1AC(struct Sprite* sprite); +void sub_80CE354(struct Sprite* sprite); +void sub_80CE3B0(struct Sprite* sprite); +void sub_80CE798(struct Sprite* sprite); +void sub_80CE974(struct Sprite* sprite); +void sub_80CEC1C(struct Sprite* sprite); +void sub_80CED78(struct Sprite* sprite); +void sub_80CEEE8(struct Sprite* sprite); +void sub_80CF008(struct Sprite* sprite); +void sub_80CF088(struct Sprite* sprite); +void sub_80CF138(struct Sprite* sprite); +void sub_80CF158(struct Sprite* sprite); +void sub_80CF228(struct Sprite* sprite); +void sub_80CF264(struct Sprite* sprite); +void sub_80CF310(struct Sprite* sprite); +void sub_80CF490(struct Sprite* sprite); +void sub_80CF4B8(struct Sprite* sprite); +void sub_80CF6B4(struct Sprite* sprite); +void sub_80CFE2C(struct Sprite* sprite); +void sub_80CFF68(struct Sprite* sprite); +void sub_80D0030(struct Sprite* sprite); +void sub_80D00B4(struct Sprite* sprite); +void sub_80D020C(struct Sprite* sprite); +void sub_80D02D0(struct Sprite* sprite); +void sub_80D0344(struct Sprite* sprite); +void sub_80D03A8(struct Sprite* sprite); +void sub_80D0704(struct Sprite* sprite); +void sub_80D0E8C(struct Sprite* sprite); +void sub_80D1098(struct Sprite* sprite); +void sub_80D13AC(struct Sprite* sprite); +void sub_80D1424(struct Sprite* sprite); +void sub_80D144C(struct Sprite* sprite); +void sub_80D14C4(struct Sprite* sprite); +void sub_80D1504(struct Sprite* sprite); +void sub_80D154C(struct Sprite* sprite); +void sub_80D158C(struct Sprite* sprite); +void sub_80D1FA4(struct Sprite* sprite); +void sub_80D2094(struct Sprite* sprite); +void sub_80D2704(struct Sprite* sprite); +void sub_80D2834(struct Sprite* sprite); + + +s16 sub_80CC338(struct Sprite* sprite); + +void sub_80787B0(struct Sprite *sprite, u8 a2); +void sub_8078764(struct Sprite *sprite, u8 a2); +void sub_8078B34(struct Sprite *sprite); +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_807861C(struct Sprite *sprite); +void sub_8078650(struct Sprite *sprite); +void sub_8078394(struct Sprite *sprite); +void sub_80785E4(struct Sprite *sprite); +void sub_8078278(struct Sprite *sprite); +void sub_8078C00(struct Sprite *sprite); +void sub_8078114(struct Sprite *sprite); +void sub_80793C4(struct Sprite *sprite); + +extern void sub_8043DB0(); +extern void sub_8043DFC(); + +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); +u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); +u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4); +s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1); +void obj_delete_but_dont_free_vram(struct Sprite *sprite); +s16 sub_81174E0(s16 a); +s16 sub_81174C4(s16 a, s16 b); +void sub_8079108(u16 a1, bool8 a2); +void sub_80798F4(struct Task *task, u8 a2, void *a3); +bool8 sub_807992C(struct Task *task); +u8 sub_8077FC0(u8 slot); +void sub_80895F8(struct UnknownStruct_2 unk); +void sub_80763FC(u16 a, u16 *b, u32 c, u8 d); + +void move_anim_8074EE0(struct Sprite *sprite); +bool8 sub_8078718(struct Sprite *sprite); +bool8 sub_8078CE8(struct Sprite *sprite); + +void sub_80CB3A8(u8 taskId); +void sub_80CB438(u8 taskId); +void sub_80CBF5C(u8 taskId); +void sub_80CDB60(u8 taskId); +void sub_80CDD20(u8 taskId); +void sub_80CE4D4(u8 taskId); +void sub_80CE910(u8 taskId); +void sub_80CF514(u8 taskId); +void sub_80D0428(u8 taskId); +void sub_80D04E0(u8 taskId); +void sub_80D07AC(u8 taskId); +void sub_80D0904(u8 taskId); +void sub_80D0A8C(u8 taskId); +void sub_80D0B3C(u8 taskId); +void sub_80D0D68(u8 taskId); +void sub_80D15E0(u8 taskId); +void sub_80D16A0(u8 taskId); +void sub_80D1808(u8 taskId); +void sub_80D1930(u8 taskId); +void sub_80D1D48(u8 taskId); +void sub_80D1D9C(u8 taskId); +void sub_80D21F0(u8 taskId); +void sub_80D24E0(u8 taskId); + + +void sub_80CC358(struct Task* task, u8 taskId); +void sub_80D0614(struct Task* task, u8 taskId); + +void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e); + +void sub_80CA710(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[3]; + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->data3 = -gBattleAnimArgs[4]; + } + else + { + sprite->data3 = gBattleAnimArgs[4]; + } + sprite->data4 = gBattleAnimArgs[5]; + sprite->callback = sub_80CA768; +} + +void sub_80CA768(struct Sprite* sprite) +{ + if (sprite->data0 > 0) + { + sprite->data0--; + sprite->pos2.y = sprite->data2 >> 8; + sprite->data2 += sprite->data1; + sprite->pos2.x = Sin(sprite->data5, sprite->data3); + sprite->data5 = (sprite->data5 + sprite->data4) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} + +void sub_80CA7B0(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = gBattleAnimArgs[2]; + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); +} + +void sub_80CA800(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data0 = gBattleAnimArgs[2]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CA858(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data5 = gBattleAnimArgs[3]; + sprite->callback = sub_80CA8B4; + sub_80CA8B4(sprite); +} + +void sub_80CA8B4(struct Sprite* sprite) +{ + if(sub_8078B5C(sprite)) + { + DestroySprite(sprite); + } + else + { + if(sprite->data5 > 0x7F) + { + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 6; + } + sprite->pos2.x += Sin(sprite->data5, 5); + sprite->pos2.y += Cos(sprite->data5, 14); + sprite->data5 = (sprite->data5 + 15) & 0xFF; + } +} + +void sub_80CA928(u8 taskId) +{ + gTasks[taskId].data[0]--; + if (gTasks[taskId].data[0] == -1) + { + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 6; + gBattleAnimArgs[0] = 15; + gBattleAnimArgs[1] = 0; + gBattleAnimArgs[2] = 80; + gBattleAnimArgs[3] = 0; + CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimBankTarget) + 1); + } + if (gTasks[taskId].data[1] == 15) DestroyAnimVisualTask(taskId); +} + +void sub_80CA9A8(struct Sprite* sprite) +{ + sub_8078764(sprite, 1); + sprite->data0 = gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data5 = gBattleAnimArgs[2]; + sub_80786EC(sprite); + sprite->callback = sub_80CA9F8; +} + +void sub_80CA9F8(struct Sprite* sprite) +{ + if (sub_8078718(sprite)) move_anim_8072740(sprite); +} + +void sub_80CAA14(struct Sprite* sprite) +{ + u16 a = Random(); + u16 b; + + StartSpriteAnim(sprite, a & 7); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->pos1.x -= 20; + } + else + { + sprite->pos1.x += 20; + } + b = Random(); + sprite->data0 = (b & 31) + 64; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); + sub_8078D60(sprite); + sprite->data5 = Random() & 0xFF; + sprite->data6 = sprite->subpriority; + sprite->callback = sub_80CAACC; + sub_80CAACC(sprite); +} + +void sub_80CAACC(struct Sprite* sprite) +{ + if (sub_8078CE8(sprite)) + { + move_anim_8072740(sprite); + } + else + { + sprite->pos2.y += Cos(sprite->data5, 12); + if (sprite->data5 <= 0x7E) + { + sprite->subpriority = sprite->data6; + } + else + { + sprite->subpriority = sprite->data6 + 1; + } + sprite->data5 = (sprite->data5 + 24) & 0xFF; + } +} + +void sub_80CAB18(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + if(GetBankSide(gBattleAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[3]; + sprite->data5 = gBattleAnimArgs[5]; + sub_80786EC(sprite); + sprite->callback = sub_80CAB88; +} + +void sub_80CAB88(struct Sprite* sprite) +{ + if(sub_8078718(sprite)) + { + sprite->invisible = 1; + sprite->data0 = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CABC0); + } +} + +void sub_80CABC0(struct Sprite* sprite) +{ + sprite->invisible = 0; + StartSpriteAnim(sprite, 1); + sprite->data0 = 60; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CABF8(struct Sprite* sprite) +{ + sub_8078764(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + if (gBattleAnimArgs[4] == 1) + { + sprite->oam.objMode = 1; + } + sprite->data0 = gBattleAnimArgs[3]; + sprite->data1 = gBattleAnimArgs[2]; + sprite->callback = sub_80CAC44; + sub_80CAC44(sprite); +} + +void sub_80CAC44(struct Sprite* sprite) +{ + + u8 b; + + sprite->pos2.x = Sin(sprite->data1, 32); + sprite->pos2.y = Cos(sprite->data1, -3) + ((sprite->data2 += 24) >> 8); + if ((u16)(sprite->data1 - 0x40) < 0x80) + { + sprite->oam.priority = (sub_8079ED4(gBattleAnimBankTarget) & 3); + } + else + { + b = sub_8079ED4(gBattleAnimBankTarget) + 1; + if ( b > 3) + { + b = 3; + } + sprite->oam.priority = b; + } + sprite->data1 = (sprite->data1 + 2) & 0xFF; + sprite->data0--; + if (sprite->data0 == -1) move_anim_8072740(sprite); +} + +void sub_80CACEC(u8 taskId) +{ + if(NotInBattle() || !IsDoubleBattle()) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) + { + REG_BG2CNT_BITFIELD.priority = 3; + } + else + { + REG_BG1CNT_BITFIELD.priority = 1; + } + DestroyAnimVisualTask(taskId); + } +} + +void sub_80CAD54(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->data0 = gBattleAnimArgs[3]; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sprite->pos1.x; + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data5 = 0x40; + sprite->callback = sub_80CADA8; + sub_80CADA8(sprite); +} + +void sub_80CADA8(struct Sprite* sprite) +{ + if(!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data5, 32); + sprite->pos2.y += Cos(sprite->data5, -5); + if ((u16)(sprite->data5 - 0x40) < 0x80) + { + sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) - 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) + 1; + } + sprite->data5 = (sprite->data5 + 5) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} + +void sub_80CAE20(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = gBattleAnimArgs[3]; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sprite->pos1.x; + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data5 = 0x40; + sprite->callback = sub_80CAE74; + sub_80CAE74(sprite); +} + +void sub_80CAE74(struct Sprite* sprite) +{ + if(!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data5, 8); + if ((u16)(sprite->data5 - 0x3B) < 5 || (u16)(sprite->data5 - 0xBB) < 5) + { + sprite->oam.matrixNum ^= 8; + } + sprite->data5 = (sprite->data5 + 5) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} + +void sub_80CAED8(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data0 = gBattleAnimArgs[0]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->data2 = gBattleAnimArgs[2]; + sprite->callback = sub_80CAF20; +} + +void sub_80CAF20(struct Sprite* sprite) +{ + if(!sprite->data2) + { + if(sprite->data1 & 1) + { + sprite->data0 = 0x80; + sprite->data1 = 0; + sprite->data2 = 0; + } + else + { + sprite->data0 = sprite->data1 & 1; + sprite->data1 = sprite->data1 & 1; + sprite->data2 = sprite->data1 & 1; + } + sprite->callback = sub_80CAF6C; + } + else + { + sprite->data2--; + sprite->pos1.x += sprite->data0; + sprite->pos1.y += sprite->data1; + } +} + +void sub_80CAF6C(struct Sprite* sprite) +{ + if(GetBankSide(gBattleAnimBankAttacker)) + { + sprite->pos2.x = -Sin(sprite->data0, 0x19); + } + else + { + sprite->pos2.x = Sin(sprite->data0, 0x19); + } + sprite->data0 = (sprite->data0 + 2) & 0xFF; + sprite->data1++; + if(!(sprite->data1 & 1)) + { + sprite->pos2.y++; + } + if(sprite->data1 > 0x50) + { + move_anim_8072740(sprite); + } +} + +void sub_80CAFD0(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + if(GetBankSide(gBattleAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + sprite->data0 = gBattleAnimArgs[4]; + if(!(gBattleAnimArgs[6])) + { + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + } + else + { + sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->data2, &sprite->data4); + sprite->data2 += gBattleAnimArgs[2]; + sprite->data4 += gBattleAnimArgs[3]; + } + sprite->data5 = gBattleAnimArgs[5]; + sub_80786EC(sprite); + if(GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) + { + sprite->data0 = 1; + } + else + { + sprite->data0 = 0; + } + sprite->callback = sub_80CB09C; +} + +void sub_80CB09C(struct Sprite* sprite) +{ + bool8 c = FALSE; + s16 a = sprite->data0; + s16 b = sprite->data7; + s16 r0; + + sprite->data0 = 1; + sub_8078718(sprite); + r0 = sprite->data7; + sprite->data0 = a; + if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0) + sprite->oam.affineParam++; + if (sprite->oam.affineParam != 0 && sprite->data0 != 0) + { + sprite->invisible ^= 1; + sprite->oam.affineParam++; + if (sprite->oam.affineParam == 0x1E) + c = TRUE; + } + + if (sprite->pos1.x + sprite->pos2.x > 0x100 + || sprite->pos1.x + sprite->pos2.x < -16 + || sprite->pos1.y + sprite->pos2.y > 0xA0 + || sprite->pos1.y + sprite->pos2.y < -16) + c = TRUE; + + if (c) + move_anim_8072740(sprite); +} + +void sub_80CB144(struct Sprite* sprite) +{ + if(!NotInBattle() && IsDoubleBattle() == TRUE) + { + sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); + } + sprite->pos1.y += 32; + sprite->data0 = gBattleAnimArgs[0]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->data2 = gBattleAnimArgs[2]; + sprite->data3 = gBattleAnimArgs[3]; + sprite->data4 = gBattleAnimArgs[4]; + sprite->callback = sub_80CB1A4; +} + +void sub_80CB1A4(struct Sprite* sprite) +{ + if(sprite->data1 == 0xFF) + { + sprite->pos1.y -= 2; + } + else if(sprite->data1 > 0) + { + sprite->pos1.y -= 2; + sprite->data1 -= 2; + } + sprite->data5 += sprite->data2; + if(sprite->data0 < sprite->data4) sprite->data5 += sprite->data2; + sprite->data5 &= 0xFF; + sprite->pos2.x = Cos(sprite->data5, sprite->data3); + sprite->pos2.y = Sin(sprite->data5, 5); + if(sprite->data5 <= 0x7F) + { + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) - 1; + } + else + { + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) + 1; + } + sprite->data0--; + if(!sprite->data0) move_anim_8072740(sprite); +} + +void sub_80CB25C(struct Sprite* sprite) +{ + sub_8078764(sprite, 0); + sprite->affineAnimPaused = 1; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data6 = gBattleAnimArgs[2]; + sprite->data7 = gBattleAnimArgs[3]; + sprite->callback = sub_80CB298; +} + +void sub_80CB298(struct Sprite* sprite) +{ + if((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->affineAnimPaused = 0; + GetAnimBankSpriteId(1); + sprite->data0 = 0x100; + sprite->callback = sub_80CB2D4; + } +} + +void sub_80CB2D4(struct Sprite* sprite) +{ + GetAnimBankSpriteId(1); + if(!sprite->data2) + { + sprite->data0 += 11; + } + else + { + sprite->data0 -= 11; + } + sprite->data1++; + if(sprite->data1 == 6) + { + sprite->data1 = 0; + sprite->data2 ^= 1; + } + if(sprite->affineAnimEnded) + { + sprite->data7--; + if(sprite->data7 > 0) + { + StartSpriteAffineAnim(sprite, sprite->data6); + } + else + { + move_anim_8072740(sprite); + } + } +} + +void sub_80CB340(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + if(gSprites[spriteId].invisible) + { + DestroyAnimVisualTask(taskId); + } + else + { + sub_8078E70(spriteId, 1); + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[11] = 256; + gTasks[taskId].func = sub_80CB3A8; + } +} + +void sub_80CB3A8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + gTasks[taskId].data[10] += gTasks[taskId].data[0]; + gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; + if(GetBankSide(gBattleAnimBankTarget)) + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + } + gTasks[taskId].data[11] += 16; + obj_id_set_rotscale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); + sub_8079A64(spriteId); + gTasks[taskId].data[1]--; + if(!gTasks[taskId].data[1]) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80CB438; + } +} + +void sub_80CB438(u8 taskId) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + if (gTasks[taskId].data[0] == 0) + { + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078F40(spriteId); + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gTasks[taskId].data[0]++; + return; + } + } + else + { + if (gTasks[taskId].data[0] == 0) + return; + } + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 3) + DestroyAnimVisualTask(taskId); +} + +void sub_80CB4CC(struct Sprite* sprite) +{ + switch(sprite->data0) + { + case 0: + { + if(GetBankSide(gBattleAnimBankTarget) == 0) + { + s16 a = gBattleAnimArgs[0]; + gBattleAnimArgs[0] = -a; + } + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[1]; + sprite->invisible = 1; + sprite->data0++; + break; + } + case 1: + { + sprite->invisible = 0; + if(sprite->affineAnimEnded) + { + ChangeSpriteAffineAnim(sprite, 1); + sprite->data0 = 25; + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078CC0; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + break; + } + } + } +} + +void sub_80CB59C(struct Sprite* sprite) +{ + if(!sprite->data0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1); + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos2.y = gBattleAnimArgs[1]; + sprite->subpriority = gBattleAnimArgs[2] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data2 = gBattleAnimArgs[4]; + sprite->data0++; + if((sprite->pos1.y + sprite->pos2.y) > 120) + { + sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y); + } + } + sprite->callback = sub_80CB710; +} + +void sub_80CB620(struct Sprite *sprite) +{ + s16 p1 = sub_8077ABC(gBattleAnimBankAttacker, 2); + s16 p2 = sub_8077ABC(gBattleAnimBankAttacker, 3); + s16 e1 = sub_8077ABC(gBattleAnimBankTarget, 2); + s16 e2 = sub_8077ABC(gBattleAnimBankTarget, 3); + + e1 -= p1; + e2 -= p2; + sprite->pos1.x = p1 + e1 * gBattleAnimArgs[0] / 100; + sprite->pos1.y = p2 + e2 * gBattleAnimArgs[0] / 100; + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + sprite->subpriority = gBattleAnimArgs[3] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->data2 = gBattleAnimArgs[5]; + sprite->callback = sub_80CB710; + gUnknown_03000728[0] = sprite->pos1.x; + gUnknown_03000728[1] = sprite->pos1.y; + gUnknown_03000728[2] = e1; + gUnknown_03000728[3] = e2; +} + +void sub_80CB710(struct Sprite* sprite) +{ + if(++sprite->data0 > (sprite->data2 - 10)) + { + sprite->invisible = sprite->data0 % 2; + } + if(sprite->data0 > sprite->data2) move_anim_8072740(sprite); +} + +void sub_80CB768(struct Sprite* sprite) +{ + if(!sprite->data0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + sprite->data1 = gBattleAnimArgs[2]; + sprite->data2 = gBattleAnimArgs[3]; + sprite->data3 = gBattleAnimArgs[4]; + } + sprite->data0++; + sprite->pos2.x = sprite->data1 * sprite->data0; + sprite->pos2.y = Sin((sprite->data0 * 20) & 0xFF, sprite->data2); + if(sprite->data0 > sprite->data3) move_anim_8072740(sprite); +} + +void sub_80CB7EC(struct Sprite* sprite, s16 c) +{ + s32 a = (sprite->pos1.x * 256) | sprite->pos1.y; + s32 b = (sprite->data6 * 256) | sprite->data7; + c *= 256; + sprite->data5 = a; + sprite->data6 = b; + sprite->data7 = c; +} + +bool8 sub_80CB814(struct Sprite* sprite) +{ + u16 r10 = (u8)(sprite->data5 >> 8); + u16 r9 = (u8)sprite->data5; + s32 r2 = (u8)(sprite->data6 >> 8); + s32 r4 = (u8)sprite->data6; + s16 r6 = sprite->data7 >> 8; + s16 r3 = sprite->data7 & 0xFF; + s16 r4_2; + s16 r0; + s32 var1; + s32 var2; + + if (r2 == 0) + r2 = -32; + else if (r2 == 255) + r2 = 0x110; + r4_2 = r4 - r9; + r0 = r2 - r10; + var1 = r0 * r3 / r6; + var2 = r4_2 * r3 / r6; + sprite->pos1.x = var1 + r10; + sprite->pos1.y = var2 + r9; + if (++r3 == r6) + return TRUE; + sprite->data7 = (r6 << 8) | r3; + return FALSE; +} + +void sub_80CB8B8(struct Sprite* sprite) +{ + if(sprite->data0 == 10) + { + StartSpriteAffineAnim(sprite, 1); + } + sprite->data0++; + if(sprite->data0 > 50) move_anim_8072740(sprite); +} + +void sub_80CB8E8(struct Sprite* sprite) +{ + sprite->data0 += sprite->data3 * 128 / sprite->data4; + if (sprite->data0 >= 128) + { + sprite->data1++; + sprite->data0 = 0; + } + sprite->pos2.y = Sin(sprite->data0 + 128, 30 - sprite->data1 * 8); + if (sub_80CB814(sprite)) + { + sprite->pos2.y = 0; + sprite->data0 = 0; + sprite->callback = sub_80CB8B8; + } +} + +void sub_80CB94C(struct Sprite* sprite) +{ + s16 e1; + s16 e2; + sub_80787B0(sprite, 0); + e1 = sub_8077ABC(gBattleAnimBankTarget, 0); + e2 = sub_8077ABC(gBattleAnimBankTarget, 1); + if((gBattleAnimBankAttacker ^ 2) == gBattleAnimBankTarget) + { + sprite->data6 = e1; + sprite->data7 = e2 + 10; + sub_80CB7EC(sprite, 0x3C); + sprite->data3 = 1; + } + else + { + sprite->data6 = e1; + sprite->data7 = e2 + 10; + sub_80CB7EC(sprite, 0x3C); + sprite->data3 = 3; + } + sprite->data4 = 0x3C; + sprite->callback = sub_80CB8E8; +} + +void sub_80CB9C4(struct Sprite* sprite) +{ + int zero; + sprite->data0 += ((sprite->data3 * 128) / sprite->data4); + zero = 0; + if(sprite->data0 > 0x7F) + { + sprite->data1++; + sprite->data0 = zero; + } + sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8); + if(sub_80CB814(sprite)) + { + sprite->pos2.y = zero; + sprite->data0 = zero; + move_anim_8072740(sprite); + } +} + +void sub_80CBA28(struct Sprite* sprite) +{ + s16 e = sub_8077ABC(gBattleAnimBankTarget, 1); + if(GetBankSide(gBattleAnimBankTarget) == 0) + { + sprite->data6 = 0; + sprite->data7 = e + 10; + sub_80CB7EC(sprite, 0x28); + sprite->data3 = 3; + sprite->data4 = 0x3C; + sprite->callback = sub_80CB8E8; + } + else + { + sprite->data6 = 255; + sprite->data7 = e + 10; + if(NotInBattle()) sprite->data6 = 0; + sub_80CB7EC(sprite, 0x28); + sprite->data3 = 3; + sprite->data4 = 0x3C; + sprite->callback = sub_80CB9C4; + } +} + +void sub_80CBAA4(struct Sprite* sprite) +{ + if(sprite->data0 == 0) + { + sub_8078764(sprite, 0); + sprite->data1 = gBattleAnimArgs[2]; + } + sprite->data0++; + sprite->pos2.y = sprite->data1 * sprite->data0; + if(sprite->animEnded) move_anim_8072740(sprite); +} + +void sub_80CBAE8(struct Sprite* sprite) +{ + s16 p1; + s16 p2; + sub_8078764(sprite, 0); + p1 = sub_8077ABC(gBattleAnimBankAttacker, 0); + p2 = sub_8077ABC(gBattleAnimBankAttacker, 1); + if((gBattleAnimBankTarget ^ 2) == gBattleAnimBankAttacker) + { + sprite->data6 = p1; + sprite->data7 = p2 + 10; + sub_80CB7EC(sprite, 0x3c); + sprite->data3 = 1; + } + else + { + sprite->data6 = p1; + sprite->data7 = p2 + 10; + sub_80CB7EC(sprite, 0x3c); + sprite->data3 = 3; + } + sprite->data4 = 0x3C; + sprite->callback = sub_80CBB60; +} + +void sub_80CBB60(struct Sprite* sprite) +{ + int zero; + sprite->data0 += ((sprite->data3 * 128) / sprite->data4); + zero = 0; + if(sprite->data0 > 0x7F) + { + sprite->data1++; + sprite->data0 = zero; + } + sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8); + if(sprite->pos2.y == 0) + { + PlaySE12WithPanning(0x7D, sub_8076F98(0x3F)); + } + if(sub_80CB814(sprite)) + { + sprite->pos2.y = 0; + sprite->data0 = 0; + sprite->callback = sub_80CB8B8; + PlaySE12WithPanning(0x7D, sub_8076F98(-0x40)); + } +} + +void sub_80CBBF0(struct Sprite* sprite) +{ + int a; + int b; + + if (sprite->data0 == 0) + { + if (!NotInBattle()) + { + sprite->data1 = gBattleAnimArgs[1]; + sprite->pos1.x = 0x78; + } + else + { + a = gBattleAnimArgs[1] - 32; + if (a < 0) + b = gBattleAnimArgs[1] + 0xDF; + else + b = a; + sprite->data1 = a - ((b >> 8) << 8); + sprite->pos1.x = 0x46; + + } + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->data2 = gBattleAnimArgs[0]; + sprite->data4 = 20; + sprite->pos2.x = Cos(sprite->data1, 0x3C); + sprite->pos2.y = Sin(sprite->data1, 20); + sprite->callback = sub_80CBC8C; + if (sprite->data1 > 0 && sprite->data1 < 0xC0) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } +} + +void sub_80CBC8C(struct Sprite* sprite) +{ + switch(sprite->data3) + { + case 0: + { + if(sprite->data2 > 0x4E) + { + sprite->data3 = 1; + StartSpriteAffineAnim(sprite, 1); + break; + } + else + { + sprite->data2 += sprite->data4 / 10; + sprite->data4 += 3; + sprite->pos1.y = sprite->data2; + break; + } + } + case 1: + { + if(sprite->data3 && sprite->affineAnimEnded) + { + sprite->data0 = 0; + sprite->data2 = 0; + sprite->callback = sub_80CBCF8; + } + break; + } + } +} + + + +void sub_80CBCF8(struct Sprite* sprite) +{ + if(sprite->data2 == gUnknown_083D680C[sprite->data0][1]) + { + if(gUnknown_083D680C[sprite->data0][2] == 0x7F) + { + sprite->data0 = 0; + sprite->callback = sub_80CBDB0; + } + sprite->data2 = 0; + sprite->data0++; + } + else + { + sprite->data2++; + sprite->data1 = (gUnknown_083D680C[sprite->data0][0] * gUnknown_083D680C[sprite->data0][2] + sprite->data1) & 0xFF; + if (!NotInBattle()) + { + if((u16)(sprite->data1 - 1) <= 0xBE) + { + sprite->subpriority = 31; + } + else + { + sprite->subpriority = 29; + } + } + sprite->pos2.x = Cos(sprite->data1, 0x3C); + sprite->pos2.y = Sin(sprite->data1, 20); + } +} + +void sub_80CBDB0(struct Sprite* sprite) +{ + if(sprite->data0 > 20) move_anim_8072740(sprite); + sprite->invisible = sprite->data0 % 2; + sprite->data0++; +} + +void sub_80CBDF4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[4] = sub_8079E90(gBattleAnimBankTarget) - 1; + task->data[6] = sub_8077ABC(gBattleAnimBankTarget, 2); + task->data[7] = sub_8077ABC(gBattleAnimBankTarget, 3); + task->data[10] = sub_807A100(gBattleAnimBankTarget, 1); + task->data[11] = sub_807A100(gBattleAnimBankTarget, 0); + task->data[5] = (GetBankSide(gBattleAnimBankTarget) == 1) ? 1 : -1; + task->data[9] = 0x38 - (task->data[5] * 64); + task->data[8] = task->data[7] - task->data[9] + task->data[6]; + task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]); + if (task->data[2] == 0x40) + DestroyAnimVisualTask(taskId); + gSprites[task->data[2]].data0 = 10; + gSprites[task->data[2]].data1 = task->data[8]; + gSprites[task->data[2]].data2 = task->data[6] - (task->data[10] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data3 = task->data[9]; + gSprites[task->data[2]].data4 = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data5 = sub_80CC338(&gSprites[task->data[2]]); + sub_80786EC(&gSprites[task->data[2]]); + task->func = sub_80CBF5C; +} + +void sub_80CBF5C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct Sprite* sprite = &gSprites[task->data[2]]; + int a = task->data[0]; + switch(a) + { + case 4: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 5; + task->data[0] = 0xFF; + break; + } + } + case 8: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 9; + task->data[0] = 0xFF; + break; + } + } + case 0: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + task->data[15] = 1; + task->data[0] = 0xFF; + break; + } + case 1: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[6]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[7]; + sprite->data5 = sub_80CC338(sprite); + task->data[4] += 2; + task->data[3] = a; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 2: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + task->data[15] = 3; + task->data[0] = 0xFF; + break; + } + case 3: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data5 = sub_80CC338(sprite); + task->data[3] = 2; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 5: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data5 = sub_80CC338(sprite); + task->data[4] -= 2; + task->data[3] = 3; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 6: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + task->data[15] = 7; + task->data[0] = 0xFF; + break; + } + case 7: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[6]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[7]; + sprite->data5 = sub_80CC338(sprite); + task->data[4] += 2; + task->data[3] = 4; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 9: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data5 = sub_80CC338(sprite); + task->data[3] = 5; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 10: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 11; + task->data[0] = 0xFF; + break; + } + } + case 11: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data0 = 10; + sprite->data1 = sprite->pos1.x; + sprite->data2 = task->data[8]; + sprite->data3 = sprite->pos1.y; + sprite->data4 = task->data[9]; + sprite->data5 = sub_80CC338(sprite); + task->data[4] -= 2; + task->data[3] = 6; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 12: + { + sub_80CC358(task, taskId); + if(sub_8078718(sprite) != 0) + { + DestroySprite(sprite); + task->data[0]++; + } + break; + } + case 13: + { + if(task->data[12] == 0) + { + DestroyAnimVisualTask(taskId); + break; + } + break; + } + case 255: + { + task->data[1]++; + if(task->data[1] > 5) + { + task->data[1] = 0; + task->data[0] = task->data[15]; + } + } + } +} + +s16 sub_80CC338(struct Sprite* sprite) +{ + s16 var = 8; + if(sprite->data4 < sprite->pos1.y) var = -var; + return var; +} + +void sub_80CC358(struct Task* task, u8 taskId) +{ + task->data[14]++; + if(task->data[14] > 0) + { + u8 spriteId; + s16 spriteX; + s16 spriteY; + task->data[14] = 0; + spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; + spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; + spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]); + if (spriteId != 0x40) + { + gSprites[spriteId].data6 = taskId; + gSprites[spriteId].data7 = 12; + gTasks[taskId].data[12]++; + gSprites[spriteId].data0 = task->data[13] & 1; + gTasks[taskId].data[13]++; + StartSpriteAnim(&gSprites[spriteId], task->data[3]); + gSprites[spriteId].subpriority = task->data[4]; + gSprites[spriteId].callback = sub_80CC408; + } + } +} + +void sub_80CC408(struct Sprite* sprite) +{ + sprite->data0++; + if (sprite->data0 > 1) + { + sprite->data0 = 0; + sprite->invisible ^= 1; + sprite->data1++; + if(sprite->data1 > 8) + { + gTasks[sprite->data6].data[sprite->data7]--; + DestroySprite(sprite); + } + } +} + +void sub_80CC474(struct Sprite* sprite) +{ + u8 bank; + if (!gBattleAnimArgs[6]) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + 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(gBattleAnimBankTarget, 3) + gBattleAnimArgs[0]; + GetAnimBankSpriteId(1); + sprite->oam.priority = sub_8079ED4(bank) + 1; + break; + } + } + sprite->callback = sub_80CC580; +} + +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 + { + if (sprite->pos2.x + sprite->pos1.x > -16) + return; + } + 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); +} + +void sub_80CC6CC(struct Sprite* sprite) +{ + u8 a; + u8 b; + u16 c; + u16 x; + u16 y; + + if (gBattleAnimArgs[4] == 0) + { + move_anim_8072740(sprite); + } + else + { + + if (gBattleAnimArgs[0] == 0) + { + a = sub_8077ABC(gBattleAnimBankAttacker, 2); + b = sub_8077ABC(gBattleAnimBankAttacker, 3); + } + else + { + a = sub_8077ABC(gBattleAnimBankTarget, 2); + b = sub_8077ABC(gBattleAnimBankTarget, 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 (NotInBattle()) + c -= 0x8000; + sub_8078FDC(sprite, 0, 0x100, 0x100, c); + sprite->callback = sub_80CC7D4; + } +} + +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(gBattleAnimBankAttacker) != 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; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CC884(struct Sprite* sprite) +{ + if(GetBankSide(gBattleAnimBankAttacker) == 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]); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_8078504; +} + +void sub_80CC914(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1); + if(GetBankSide(gBattleAnimBankTarget) == 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(gBattleAnimBankTarget ^ 2, 0); + b = sub_8077ABC(gBattleAnimBankTarget ^ 2, 1); + break; + } + case 2: + { + a = sub_8077ABC(gBattleAnimBankTarget, 0); + b = sub_8077ABC(gBattleAnimBankTarget, 1); + if(IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) + { + a = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 0) + a) / 2; + b = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 1) + b) / 2; + } + break; + } + case 0: + default: + { + a = sub_8077ABC(gBattleAnimBankTarget, 0); + b = sub_8077ABC(gBattleAnimBankTarget, 1); + break; + } + } + sprite->pos1.x = a; + sprite->pos1.y = b; + if(GetBankSide(gBattleAnimBankTarget) == 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) + { + StoreSpriteCallbackInData6(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(gBattleAnimBankAttacker) != 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(NotInBattle() != 0) + { + gBattleAnimArgs[1] += 8; + } + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + if (GetBankSide(gBattleAnimBankAttacker) == 0 || NotInBattle()) + sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker) + 1; + else + sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker); + 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; +} + +void sub_80CCE0C(struct Sprite* sprite) +{ + int a; + int i; + sprite->data5 += 0x60; + sprite->pos2.x = -(sprite->data5 >> 8); + sprite->data1++; + if(sprite->data1 > 1) + { + sprite->data1 = 0; + a = gPlttBufferFaded[sprite->data2 + 1]; + i = 0; + do + { + gPlttBufferFaded[sprite->data2 + ++i] = gPlttBufferFaded[sprite->data2 + i + 1]; + } + while ( i <= 5 ); + gPlttBufferFaded[sprite->data2 + 7] = a; + } + if (sprite->data7 > 6 && sprite->data0 >0 && ++sprite->data6 > 1) + { + sprite->data6 = 0; + sprite->data7 -= 1; + REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7);; + } + if (sprite->data0 >0) + { + sprite->data0 -= 1; + } + else if (++sprite->data6 > 1) + { + sprite->data6 = 0; + sprite->data7++; + REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7); + if(sprite->data7 == 16) + { + sprite->invisible = 1; + sprite->callback = sub_807861C; + } + } +} + +void sub_80CCF04(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + 0xFFE8; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->data6 = 0; + sprite->data7 = 16; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6; + sprite->callback = sub_80CCF70; +} + +void sub_80CCF70(struct Sprite* sprite) +{ + switch(sprite->data0) + { + case 0: + { + if(++sprite->data2 > 0) + { + sprite->data2 = 0; + if(((++sprite->data1) & 1) != 0) + { + if(sprite->data6 <= 15) + sprite->data6++; + } + else if (sprite->data7 > 0) + sprite->data7--; + REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6; + if(sprite->data6 == 16 && sprite->data7 == 0) + { + sprite->data1 = 0; + sprite->data0++; + break; + } + } + break; + } + case 1: + { + if(++sprite->data1 > 8) + { + sprite->data1 = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->data0++; + break; + } + break; + } + case 2: + { + sub_80CD0CC(sprite, 16, 4); + if(++sprite->data1 > 2) + { + sprite->data1 = 0; + sprite->pos1.y++; + } + if(++sprite->data2 <= 29) + break; + if(sprite->data2 & 1) + { + if(sprite->data6 > 0) + sprite->data6--; + } + else if(sprite->data7 <= 15) + sprite->data7++; + REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6; + if(sprite->data6 == 0 && sprite->data7 == 16) + { + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data0++; + break; + } + else + break; + } + case 3: + { + sprite->invisible = 1; + sprite->data0++; + break; + } + case 4: + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + move_anim_8072740(sprite); + } + } +} + +void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2) +{ + if(sprite->data3 <= 11) + sprite->data4 += 2; + if((u16)(sprite->data3 - 0x12) <= 0x17) + sprite->data4 -= 2; + if((sprite->data3) > 0x2F) + sprite->data4 += 2; + sprite->pos2.x = sprite->data4 / 9; + sprite->pos2.y = sprite->data4 / 14; + if(sprite->pos2.y < 0) + sprite->pos2.y *= -1; + sprite->data3++; + if(sprite->data3 > 0x3B) + sprite->data3 = 0; +} + +void sub_80CD140(struct Sprite* sprite) +{ + if (!gBattleAnimArgs[2]) + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data0 = gBattleAnimArgs[5]; + sprite->data1 = gBattleAnimArgs[3]; + sprite->data2 = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} + +void sub_80CD190(struct Sprite* sprite) +{ + u8 bank; + if (!gBattleAnimArgs[2]) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) + { + sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + if (!gBattleAnimArgs[6]) + { + sprite->pos1.x = sub_8077ABC(bank, 0); + sprite->pos1.y = sub_8077ABC(bank, 1) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = sub_8077ABC(bank, 2); + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[1]; + } + sub_807867C(sprite, gBattleAnimArgs[0]); + } + sprite->data0 = gBattleAnimArgs[5]; + sprite->data1 = gBattleAnimArgs[3]; + sprite->data2 = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} + +void sub_80CD274(struct Sprite* sprite) +{ + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 1); + } + sprite->callback = sub_80CD2D4; +} + +void sub_80CD2D4(struct Sprite* sprite) +{ + if (++sprite->data0 > 30) + { + sprite->pos2.y = (30 - sprite->data0) / 3; + sprite->pos2.x = Sin(sprite->data1 * 4, 3); + sprite->data1++; + } + if(sprite->animEnded) + move_anim_8072740(sprite); +} + +void sub_80CD328(struct Sprite* sprite) +{ + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data3 = 1; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data3 = 0xFFFF; + StartSpriteAffineAnim(sprite, 1); + } + sprite->callback = sub_80CD394; +} + +void sub_80CD394(struct Sprite* sprite) +{ + sprite->pos2.y = -(sprite->data0 / 0x28); + sprite->pos2.x = sprite->data4 / 10; + sprite->data4 += sprite->data3 * 2; + sprite->data0 += sprite->data1; + if (++sprite->data1 > 0x3C) + move_anim_8074EE0(sprite); +} + +void sub_80CD3E0(struct Sprite* sprite) +{ + sprite->pos1.x -= 32; + sprite->pos1.y -= 32; + sprite->data0 = 20; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CD408); +} + +void sub_80CD408(struct Sprite* sprite) +{ + switch(sprite->data5 & 1) + { + case 0: + sprite->data0 = 1; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CD408); + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data0 = 8; + sprite->data2 = sprite->pos1.x + gUnknown_083D6DDC[sprite->data5 >> 8][0]; + sprite->data4 = sprite->pos1.y + gUnknown_083D6DDC[sprite->data5 >> 8][1]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, sub_80CD4B8); + sprite->data5 += 0x100; + PlaySE12WithPanning(0xD2, sub_8076F98(0x3F)); + break; + } + sprite->data5 ^= 1; +} + +void sub_80CD4B8(struct Sprite* sprite) +{ + if ((sprite->data5 >> 8) == 4) + { + sprite->data0 = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CD4EC); + } + else + sprite->callback = sub_80CD408; +} + +void sub_80CD4EC(struct Sprite* sprite) +{ + s16 a; + s16 b; + if(sprite->oam.affineParam == 0) + { + sprite->data0 = 3; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CD5A8); + } + else + { + switch(sprite->oam.affineParam) + { + case 1: + a = -8; + b = -8; + break; + case 2: + a = -8; + b = 8; + break; + case 3: + a = 8; + b = -8; + break; + default: + a = 8; + b = 8; + break; + } + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data0 = 6; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + a; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + b; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, sub_80CD654); + } +} + +void sub_80CD5A8(struct Sprite* sprite) +{ + if (sprite->data2 == 0) + { + if ((sprite->data1 += 3) > 16) + sprite->data1 = 16; + } + else if ((sprite->data1 -= 3) < 0) + sprite->data1 = 0; + BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data1, 0x7FFF); + if (sprite->data1 == 16) + { + int pal; + sprite->data2++; + pal = sprite->oam.paletteNum; + LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); + PlaySE12WithPanning(0xC0, sub_8076F98(0x3F)); + } + else if (sprite->data1 == 0) + sprite->callback = sub_80CD654; +} + +void sub_80CD654(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->data1 = 0; + sprite->data0 = 0; + sprite->callback = sub_80CD67C; + } +} + +void sub_80CD67C(struct Sprite* sprite) +{ + if (sprite->data0 % 3 == 0) + { + sprite->data1++; + sprite->invisible ^= 1; + } + sprite->data0++; + if (sprite->data1 == 8) + move_anim_8072740(sprite); +} + +void sub_80CD6CC(struct Sprite* sprite) +{ + sprite->oam.affineParam = gBattleAnimArgs[0]; + if ((s16)sprite->oam.affineParam == 1) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y -= 0x18; + } + else if((s16)sprite->oam.affineParam == 2) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 16; + } + else if((s16)sprite->oam.affineParam == 3) + { + sprite->pos1.x += 0x18; + sprite->pos1.y -= 0x18; + sprite->oam.matrixNum = 8; + } + else + { + sprite->pos1.x += 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 24; + } + sprite->oam.tileNum = (sprite->oam.tileNum + 16); + sprite->callback = sub_80CD3E0; + sub_80CD3E0(sprite); +} + +void sub_80CD774(struct Sprite* sprite) +{ + sprite->invisible = 1; + sprite->data0 = 0; + switch(gBattleAnimArgs[0]) + { + case 0: + sprite->callback = sub_80CD7CC; + break; + case 1: + sprite->callback = sub_80CD8A8; + break; + case 2: + sprite->callback = sub_80CD8F8; + break; + default: + sprite->callback = sub_80CD9B8; + break; + } +} + +void sub_80CD7CC(struct Sprite* sprite) +{ + sprite->data0 = 6; + sprite->data1 = (GetBankSide(gBattleAnimBankAttacker)) ? 2 : -2; + sprite->data2 = 0; + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; + StoreSpriteCallbackInData6(sprite, sub_80CD81C); + sprite->callback = sub_8078458; +} + +void sub_80CD81C(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; + sub_8078E70(sprite->data3, 0); + sprite->data4 = (sprite->data6 = GetBankSide(gBattleAnimBankAttacker)) ? 0x300 : 0xFFFFFD00; + sprite->data5 = 0; + } + sprite->data5 += sprite->data4; + obj_id_set_rotscale(sprite->data3, 0x100, 0x100, sprite->data5); + sub_8078F9C(sprite->data3); + if (++sprite->data0 > 3) + { + sprite->data0 = 0; + sprite->callback = sub_80CD9B8; + } +} + +void sub_80CD8A8(struct Sprite* sprite) +{ + sprite->data0 = 4; + sprite->data1 = (GetBankSide(gBattleAnimBankAttacker)) ? -3 : 3; + sprite->data2 = 0; + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; + StoreSpriteCallbackInData6(sprite, sub_80CD9B8); + sprite->callback = sub_8078458; +} + +void sub_80CD8F8(struct Sprite* sprite) +{ + if(++sprite->data0 > 8) + { + sprite->data0 = 0; + sprite->callback = sub_80CD91C; + } +} + +void sub_80CD91C(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; + sprite->data6 = GetBankSide(gBattleAnimBankAttacker); + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->data4 = 0xFC00; + sprite->data5 = 0xC00; + } + else + { + sprite->data4 = 0x400; + sprite->data5 = 0xF400; + } + } + sprite->data5 += sprite->data4; + obj_id_set_rotscale(sprite->data3, 0x100, 0x100, sprite->data5); + sub_8078F9C(sprite->data3); + if (++sprite->data0 > 2) + { + sub_8078F40(sprite->data3); + sprite->callback = sub_80CD9B8; + } +} + +void sub_80CD9B8(struct Sprite* sprite) +{ + move_anim_8072740(sprite); +} + +void sub_80CD9C4(struct Sprite* sprite) +{ + sprite->data0 = 0; + sprite->callback = sub_80CD9D4; +} + +void sub_80CD9D4(struct Sprite* sprite) +{ + switch(sprite->data0) + { + case 0: + sprite->data1 = 0; + sprite->data2 = gObjectBankIDs[gBattleAnimBankAttacker]; + sprite->data3 = GetBankSide(gBattleAnimBankAttacker); + sprite->data4 = (sprite->data3 != 0) ? 0x200 : -0x200; + sprite->data5 = 0; + sub_8078E70(sprite->data2, 0); + sprite->data0++; + case 1: + sprite->data5 += sprite->data4; + obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5); + sub_8078F9C(sprite->data2); + if (++sprite->data1 > 3) + { + sprite->data1 = 0; + sprite->data4 *= -1; + sprite->data0++; + } + break; + case 2: + sprite->data5 += sprite->data4; + obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5); + sub_8078F9C(sprite->data2); + if (++sprite->data1 > 3) + { + sub_8078F40(sprite->data2); + move_anim_8072740(sprite); + } + break; + } +} + +void sub_80CDAC8(u8 taskId) +{ u8 a; + gTasks[taskId].data[0] = gObjectBankIDs[gBattleAnimBankAttacker]; + a = GetBankSide(gBattleAnimBankAttacker); + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = 0; + switch(gBattleAnimArgs[0]) + { + default: + DestroyAnimVisualTask(taskId); + break; + case 0: + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 3; + if (a == 0) + gTasks[taskId].data[5] *= -1; + gTasks[taskId].func = sub_80CDB60; + break; + case 1: + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0x600; + gTasks[taskId].data[5] = 0xC0; + if (a == 0) + { + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + gTasks[taskId].func = sub_80CDD20; + break; + } +} + +void sub_80CDB60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch(task->data[2]) + { + case 0: + if(task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = 0; + task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0; + sub_8078E70(task->data[0], 0); + task->data[2]++; + } + break; + case 1: + if (task->data[3]) + { + task->data[4] += task->data[5]; + obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); + sub_8078F9C(task->data[0]); + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2; + task->data[6] = 1; + task->data[2]++; + } + break; + case 2: + if (task->data[3]) + { + if (task->data[6]) + { + task->data[6]--; + } + else + { + if (task->data[3] & 1) + gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5]; + else + gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5]; + task->data[6] = 1; + task->data[3]--; + } + } + else + { + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3] = 12; + task->data[2]++; + } + break; + case 3: + if (task->data[3]) + { + task->data[3]--; + } + else + { + task->data[3] = 3; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 8 : -8; + task->data[2]++; + } + break; + case 4: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + DestroyAnimVisualTask(taskId); + } + break; + } +} + +void sub_80CDD20(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[3]) + { + task->data[4] -= task->data[5]; + obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); + sub_8078F9C(task->data[0]); + task->data[3]--; + } + else + { + sub_8078F40(task->data[0]); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80CDD74(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[2]; + } + sprite->data0 = 0; + sprite->data1 = 0; + StoreSpriteCallbackInData6(sprite, sub_80CDEC0); + sprite->callback = sub_8078600; +} + +void sub_80CDDDC(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + StoreSpriteCallbackInData6(sprite, sub_80CDE78); + sprite->callback = sub_8078600; +} + +void sub_80CDE24(struct Sprite* sprite) +{ + sprite->pos1.x = sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0 + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + StartSpriteAnim(sprite, 1); + sprite->data0 = 0; + sprite->data1 = 0; + sprite->callback = sub_80CDEC0; +} + +void sub_80CDE78(struct Sprite* sprite) +{ + if (++sprite->data0 > 8) + { + sprite->data0 = 12; + sprite->data1 = 8; + sprite->data2 = 0; + StoreSpriteCallbackInData6(sprite, sub_80CDEB0); + sprite->callback = sub_8078364; + } +} + +void sub_80CDEB0(struct Sprite* sprite) +{ + sprite->data0 = 0; + sprite->data1 = 0; + sprite->callback = sub_80CDEC0; +} + +void sub_80CDEC0(struct Sprite* sprite) +{ + if(++sprite->data0 > 1) + { + sprite->data0 = 0; + sprite->invisible = !sprite->invisible; + if(++sprite->data1 > 8) + move_anim_8072740(sprite); + } +} + +void sub_80CDF0C(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[2]; + } + sprite->data0 = 0; + sprite->data1 = gBattleAnimArgs[3]; + sprite->callback = sub_80CDF70; +} + +void sub_80CDF70(struct Sprite* sprite) +{ + if (++sprite->data0 > sprite->data1) + { + sprite->data0 = 0; + sprite->pos1.y--; + } + sprite->pos1.y -= sprite->data0; + if (sprite->animEnded) + move_anim_8072740(sprite); +} + +void sub_80CDFB0(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) - 12; + sprite->data0 = 0; + sprite->data1 = 2; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->data5 = sub_8076F98(-0x40); + sprite->callback = sub_80CE000; +} + +void sub_80CE000(struct Sprite* sprite) +{ + if (++sprite->data0 >= sprite->data1) + { + sprite->invisible = !sprite->invisible; + if (!sprite->invisible) + { + sprite->data4++; + if (!(sprite->data4 & 1)) + PlaySE12WithPanning(SE_W207B, sprite->data5); + } + sprite->data0 = 0; + if (++sprite->data2 > 1) + { + sprite->data2 = 0; + sprite->data1++; + } + } + if (sprite->animEnded && sprite->data1 > 16 && sprite->invisible) + move_anim_8072740(sprite); +} + +void sub_80CE09C(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + if (NotInBattle()) + sprite->pos1.y += 10; + sprite->data0++; + } + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + move_anim_8072740(sprite); +} + +void sub_80CE108(u8 taskId) +{ + if (gTasks[taskId].data[2] == 1) + { + gBattleAnimArgs[7] = 0xFFFF; + gTasks[taskId].data[2]++; + } + else if (gTasks[taskId].data[2] == 2) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]); + if (gTasks[taskId].data[1] == 16) + gTasks[taskId].data[2]++; + } + } +} + +void sub_80CE17C(struct Sprite* sprite) +{ + sub_8078764(sprite, 0); + sprite->animPaused = 1; + sprite->data0 = gBattleAnimArgs[2]; + sprite->callback = sub_80CE1AC; +} + +void sub_80CE1AC(struct Sprite* sprite) +{ + if (sprite->data0) + sprite->data0--; + else + { + sprite->animPaused = 0; + sprite->data0 = 30; + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + } +} + +void sub_80CE210(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8); + if (gTasks[taskId].data[1] == 16) + DestroyAnimVisualTask(taskId); + } +} + +void unref_sub_80CE260(u8 taskId) +{ + u8 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleAnimArgs[0] == 1 && GetBankSide(i) == 0) + sub_8043DB0(gHealthboxIDs[i]); + if (gBattleAnimArgs[1] == 1 && GetBankSide(i) == 1) + sub_8043DB0(gHealthboxIDs[i]); + } + DestroyAnimVisualTask(taskId); +} + +void unref_sub_80CE2D4(u8 taskId) +{ + u8 i; + for (i = 0; i < gNoOfAllBanks; i++) + sub_8043DFC(gHealthboxIDs[i]); + DestroyAnimVisualTask(taskId); +} + +void sub_80CE30C(struct Sprite* sprite) +{ + if (NotInBattle()) + { + sprite->pos1.x = 0x30; + sprite->pos1.y = 0x28; + } + else + { + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + } + sprite->oam.shape = 0; + sprite->oam.size = 3; + sprite->data0 = 0; + sprite->callback = sub_80CE354; +} + +void sub_80CE354(struct Sprite* sprite) +{ + if (sprite->data0) + move_anim_8072740(sprite); +} + +void sub_80CE36C(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 1; + sprite->callback = sub_80CE3B0; +} + +void sub_80CE3B0(struct Sprite* sprite) +{ + if (++sprite->data1 > 1) + { + sprite->data1 = 0; + if (sprite->data2 <= 0x77) + { + sprite->pos1.y++; + sprite->data2++; + } + } + if (sprite->data0) + move_anim_8072740(sprite); +} + +void sub_80CE3EC(u8 taskId) +{ + int a = sub_80791A8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int b; + int c; + int d; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = a; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = 13; + gTasks[taskId].data[8] = 14; + gTasks[taskId].data[9] = 15; + b = sub_80792C0(1, 1, 1, 1); + c = a | b; + sub_8079BF4(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c); + b = b | (0x10000 << IndexOfSpritePaletteTag(0x27D2)); + d = IndexOfSpritePaletteTag(0x27D3); + BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 0x10, 32699); + gTasks[taskId].func = sub_80CE4D4; + sub_80CE4D4(taskId); +} + +void sub_80CE4D4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 0) + { + u16 color; + u16 bitmask; + u16 r3; + u16 i; + u16 j; + task->data[1] = 0; + if (++task->data[2] <= 15) + { + u16 red; + u16 green; + u16 blue; + task->data[4] += task->data[7]; + task->data[5] += task->data[8]; + task->data[6] += task->data[9]; + red = task->data[4] >> 3; + green = task->data[5] >> 3; + blue = task->data[6] >> 3; + color = RGB(red, green, blue); + } + else + { + color = RGB(27, 29, 31); + task->data[0]++; + } + bitmask = 1; + r3 = 0; + for (i = 0; i <= 15; i++) + { + if (task->data[3] & bitmask) + { + for (j = 1; j <= 15; j++) + gPlttBufferFaded[r3 + j] = color; + } + bitmask <<= 1; + r3 += 16; + } + } + break; + case 1: + if (!gPaletteFade.active) + { + u8 spriteId; + for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) + { + if (gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FC8 || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FF8) + gSprites[spriteId].data0 = 1; + } + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 30) + { + BeginNormalPaletteFade((u32)sub_8079BFC(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31)); + task->data[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80CE670(struct Sprite* sprite) +{ + if (gBattleAnimArgs[2] <= 1) + gBattleAnimArgs[2] = 2; + if (gBattleAnimArgs[2] > 0x7F) + gBattleAnimArgs[2] = 0x7F; + sprite->data0 = 0; + sprite->data1 = gBattleAnimArgs[2]; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data6 = sprite->pos1.x; + sprite->data7 = sprite->pos1.y; + if (NotInBattle() != 0) + { + sprite->oam.matrixNum = 8; + sprite->pos1.x += 40; + sprite->pos1.y += 20; + sprite->data2 = sprite->pos1.x << 7; + sprite->data3 = -0x1400 / sprite->data1; + sprite->data4 = sprite->pos1.y << 7; + sprite->data5 = -0xA00 / sprite->data1; + } + else if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x -= 40; + sprite->pos1.y += 20; + sprite->data2 = sprite->pos1.x << 7; + sprite->data3 = 0x1400 / sprite->data1; + sprite->data4 = sprite->pos1.y << 7; + sprite->data5 = -0xA00 / sprite->data1; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 20; + sprite->data2 = sprite->pos1.x << 7; + sprite->data3 = -0x1400 / sprite->data1; + sprite->data4 = sprite->pos1.y << 7; + sprite->data5 = 0xA00 / sprite->data1; + sprite->oam.matrixNum = 24; + } + sprite->callback = sub_80CE798; +} + +void sub_80CE798(struct Sprite* sprite) +{ + sprite->data2 += sprite->data3; + sprite->data4 += sprite->data5; + sprite->pos1.x = sprite->data2 >> 7; + sprite->pos1.y = sprite->data4 >> 7; + if (--sprite->data1 == 1) + { + sprite->pos1.x = sprite->data6; + sprite->pos1.y = sprite->data7; + } + if (sprite->data1 == 0) + move_anim_8072740(sprite); +} + +// double team +void sub_80CE7E0(u8 taskId) +{ + u16 i; + int obj; + u16 r3; + u16 r4; + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = AllocSpritePalette(0x2771); + r3 = (task->data[1] * 16) + 0x100; + r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; + for (i = 1; i < 16; i++) + { + gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; + } + BlendPalette(r3, 16, 11, 0); + task->data[3] = 0; + i = 0; + while (i <= 1 && (obj = duplicate_obj_of_side_rel2move_in_transparent_mode(0)) >= 0) + { + gSprites[obj].oam.paletteNum = task->data[1]; + gSprites[obj].data0 = 0; + gSprites[obj].data1 = i << 7; + gSprites[obj].data2 = taskId; + gSprites[obj].callback = sub_80CE974; + task->data[3]++; + i++; + } + task->func = sub_80CE910; + if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) + { + REG_DISPCNT &= 0xFDFF; + } + else + REG_DISPCNT &= 0xFBFF; +} + +void sub_80CE910(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!task->data[3]) + { + if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) + REG_DISPCNT |= 0x200; + else + REG_DISPCNT |= 0x400; + FreeSpritePaletteByTag(0x2771); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80CE974(struct Sprite* sprite) +{ + if (++sprite->data3 > 1) + { + sprite->data3 = 0; + sprite->data0++; + } + if (sprite->data0 > 0x40) + { + gTasks[sprite->data2].data[3]--; + obj_delete_but_dont_free_vram(sprite); + } + else + { + sprite->data4 = gSineTable[sprite->data0] / 6; + sprite->data5 = gSineTable[sprite->data0] / 13; + sprite->data1 = (sprite->data1 + sprite->data5) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, sprite->data4); + } +} + +void sub_80CEA04(struct Sprite* sprite) +{ + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sprite->callback = sub_8078600; +} + +// grasswhistle +void sub_80CEA20(u8 taskId) +{ + u16 i; + u16 j; + u16 index; + + index = IndexOfSpritePaletteTag(gUnknown_083D712C[0][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < 6; i++) + gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i]; + } + for (j = 1; j < 4; j++) + { + index = AllocSpritePalette(gUnknown_083D712C[j][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < 6; i++) + gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i]; + } + } + DestroyAnimVisualTask(taskId); +} + +void sub_80CEAD8(u8 taskId) +{ + u16 i; + for (i = 1; i < 4; i++) + FreeSpritePaletteByTag(gUnknown_083D712C[i][0]); + DestroyAnimVisualTask(taskId); +} + +void sub_80CEB0C(struct Sprite* sprite) +{ + u8 index; + u8 a; + u8 b; + sub_8078650(sprite); + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF) + sprite->oam.paletteNum = index; + sprite->data1 = gBattleAnimArgs[1]; + sprite->data2 = 0; + sprite->data3 = gBattleAnimArgs[2]; + if (NotInBattle()) + { + a = 0x30; + b = 0x28; + } + else + { + a = sub_8077ABC(gBattleAnimBankTarget, 2); + b = sub_8077ABC(gBattleAnimBankTarget, 3); + } + sprite->data4 = sprite->pos1.x << 4; + sprite->data5 = sprite->pos1.y << 4; + sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data6, &sprite->data7, 0x28); + sprite->callback = sub_80CEC1C; +} + +void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e) +{ + int f; + int g; + if (a < 0) + e = -e; + f = a << 8; + g = f / e; + if (g == 0) + g = 1; + *c = f / g; + *d = (b << 8) / g; +} + +//grasswhistle music notes +void sub_80CEC1C(struct Sprite* sprite) +{ + int b; + s16 a; + int c; + u8 index; + sprite->data0++; + b = sprite->data0 * 5 - ((sprite->data0 * 5 / 256) << 8); + sprite->data4 += sprite->data6; + sprite->data5 += sprite->data7; + sprite->pos1.x = sprite->data4 >> 4; + sprite->pos1.y = sprite->data5 >> 4; + sprite->pos2.y = Sin(b, 15); + a = (u16)sprite->pos1.y; + c = (u16)sprite->pos1.x; + //SOMEBODY CLEAN THIS UP THIS IS MESSY AS HELL AND I'M PRETTY SURE I DID IT IN SOME TACKY WAY + if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80) + { + move_anim_8074EE0(sprite); + } + else + { + if(sprite->data3 && ++sprite->data2 > sprite->data3) + { + sprite->data2 = 0; + if (++sprite->data1 > 3) + sprite->data1 = 0; + index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data1][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + } + } +} + +void sub_80CECE8(struct Sprite* sprite) +{ + int a; + if (GetBankSide(gBattleAnimBankAttacker) == 1) + { + a = gBattleAnimArgs[1]; + (u16)gBattleAnimArgs[1] = -a; + } + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = sprite->pos1.x << 4; + sprite->data5 = sprite->pos1.y << 4; + sprite->data6 = (gBattleAnimArgs[1] << 4) / 5; + sprite->data7 = (gBattleAnimArgs[2] << 7) / 5; + sprite->callback = sub_80CED78; +} + +void sub_80CED78(struct Sprite* sprite) +{ + sprite->data4 += sprite->data6; + sprite->data5 += sprite->data7; + sprite->pos1.x = sprite->data4 >> 4; + sprite->pos1.y = sprite->data5 >> 4; + if (sprite->data0 > 5 && sprite->data3 == 0) + { + sprite->data2 = (sprite->data2 + 16) & 0xFF; + sprite->pos2.x = Cos(sprite->data2, 18); + sprite->pos2.y = Sin(sprite->data2, 18); + if (sprite->data2 == 0) + sprite->data3 = 1; + } + if (++sprite->data0 == 0x30) + move_anim_8074EE0(sprite); +} + +void sub_80CEDF0(struct Sprite* sprite) +{ + s16 a; + if (gBattleAnimArgs[0] == 1) + { + sprite->oam.matrixNum = 8; + a = 16; + } + else + a = -16; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + a; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + 8; + sprite->data0 = 8; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CEE60(struct Sprite* sprite) +{ + s16 a; + u8 index; + sub_8078650(sprite); + sprite->pos1.y += 8; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20; + sprite->data0 = 40; + sprite->data1 = sprite->pos1.x; + sprite->data2 = a + sprite->data1; + sprite->data3 = sprite->pos1.y; + sprite->data4 = sprite->data3 - 40; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data5 = gBattleAnimArgs[3]; + sprite->callback = sub_80CEEE8; +} + +void sub_80CEEE8(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) == 0) + { + s16 a; + a = Sin(sprite->data5, 8); + if (sprite->pos2.x < 0) + a = -a; + sprite->pos2.x += a; + sprite->pos2.y += Sin(sprite->data5, 4); + sprite->data5 = (sprite->data5 + 8) & 0xFF; + } + else + move_anim_8072740(sprite); +} + +void sub_80CEF44(u8 bank, struct Sprite* sprite) +{ + if (GetBankSide(bank) == 0) + sprite->pos1.x = sub_807A100(bank, 5) + 8; + else + sprite->pos1.x = sub_807A100(bank, 4) - 8; + sprite->pos1.y = sub_8077ABC(bank, 3) - (s16)sub_807A100(bank, 0) / 4; +} + +void sub_80CEF9C(struct Sprite* sprite) +{ + u8 a; + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + sub_80CEF44(bank, sprite); + a = (GetBankSide(bank) == 0) ? 0 : 1; + sprite->data0 = gBattleAnimArgs[1]; + sprite->data1 = a + 2; + StartSpriteAnim(sprite, a); + StoreSpriteCallbackInData6(sprite, sub_80CF008); + sprite->callback = sub_8078600; +} + +void sub_80CF008(struct Sprite* sprite) +{ + if (--sprite->data0 == 0) + { + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + StartSpriteAnim(sprite, sprite->data1); + sprite->callback = sub_8078600; + } +} + +void sub_80CF040(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + sub_80CEF44(bank, sprite); + sprite->data0 = 0; + StoreSpriteCallbackInData6(sprite, sub_80CF088); + sprite->callback = sub_80785E4; +} + +void sub_80CF088(struct Sprite* sprite) +{ + if (++sprite->data0 > 16) + { + StartSpriteAffineAnim(sprite, 1); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; + } +} + +void sub_80CF0BC(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + sprite->pos1.x = sub_8077ABC(bank, 0); + sprite->pos1.y = sub_807A100(bank, 2); + if (sprite->pos1.y <= 9) + sprite->pos1.y = 10; + sprite->data0 = 1; + sprite->data1 = 0; + sprite->data2 = sprite->subpriority; + sprite->data3 = sprite->subpriority + 4; + sprite->data4 = 0; + StoreSpriteCallbackInData6(sprite, sub_80CF138); + sprite->callback = sub_80785E4; +} + +void sub_80CF138(struct Sprite* sprite) +{ + if (++sprite->data4 > 12) + sprite->callback = sub_80CF158; +} + +void sub_80CF158(struct Sprite* sprite) +{ + s16 temp; + s16 temp2; + sprite->data1 += 4; + if (sprite->data1 > 0xFE) + { + if (--sprite->data0 == 0) + { + sprite->pos2.x = 0; + sprite->callback = sub_80CF088; + return; + } + else + sprite->data1 &= 0xFF; + } + if (sprite->data1 > 0x4F) + sprite->subpriority = sprite->data3; + if (sprite->data1 > 0x9F) + sprite->subpriority = sprite->data2; + temp = gSineTable[sprite->data1]; + sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1); +} + +void sub_80CF1C8(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + sub_80CEF44(bank, sprite); + if (GetBankSide(bank) == 0) + { + StartSpriteAnim(sprite, 0); + sprite->data0 = 2; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data0 = 3; + } + sprite->callback = sub_80CF228; +} + +void sub_80CF228(struct Sprite* sprite) +{ + if (++sprite->data1 > 10) + { + sprite->data1 = 0; + StartSpriteAnim(sprite, sprite->data0); + StoreSpriteCallbackInData6(sprite, sub_80CF264); + sprite->callback = sub_8078600; + } +} + +void sub_80CF264(struct Sprite* sprite) +{ + if (++sprite->data1 > 5) + move_anim_8072740(sprite); +} + +void sub_80CF280(struct Sprite* sprite) +{ + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data1 = gBattleAnimArgs[2]; + sprite->data2 = gBattleAnimArgs[4]; + sprite->data3 = gBattleAnimArgs[5]; + sprite->data4 = gBattleAnimArgs[3]; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_8078278; + sub_8078278(sprite); +} + +void sub_80CF2D0(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + sub_80CEF44(bank, sprite); + sprite->data0 = 0; + sprite->data1 = 0; + sprite->callback = sub_80CF310; +} + +void sub_80CF310(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->pos2.y -= 3; + if (++sprite->data1 == 6) + sprite->data0++; + break; + case 1: + sprite->pos2.y += 3; + if (--sprite->data1 == 0) + sprite->data0++; + break; + case 2: + if (++sprite->data1 == 0x40) + move_anim_8072740(sprite); + break; + } +} + +void sub_80CF374(struct Sprite* sprite) +{ + s16 temp; + gSprites[sprite->data2].pos2.x += sprite->data1; + temp = sprite->data1; + sprite->data1 = -temp; + if (sprite->data0 == 0) + { + gSprites[sprite->data2].pos2.x = 0; + move_anim_8074EE0(sprite); + } + sprite->data0--; +} + +void sub_80CF3C4(struct Sprite* sprite) +{ + u8 a; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + a = gObjectBankIDs[gBattleAnimBankTarget]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[3]; + sprite->data2 = a; + sprite->callback = sub_80CF374; + sprite->invisible = 1; +} + +void sub_80CF458(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[3]; + sprite->data5 = gBattleAnimArgs[4]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80CF490); +} + +void sub_80CF490(struct Sprite* sprite) +{ + sprite->data0 = sprite->data1; + sprite->data2 = sprite->pos1.x; + sprite->data4 = sprite->pos1.y + 15; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, sub_80CF4B8); +} + +void sub_80CF4B8(struct Sprite* sprite) +{ + if (sprite->data5 == 0) + move_anim_8072740(sprite); + else + sprite->data5--; +} + +void sub_80CF4D8(u8 taskId) +{ + sub_8078E70(gObjectBankIDs[gBattleAnimBankAttacker], 0); + gTasks[taskId].func = sub_80CF514; +} + +void sub_80CF514(u8 taskId) +{ + u8 a = gObjectBankIDs[gBattleAnimBankAttacker]; + s16 b; + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + b = -gTasks[taskId].data[0]; + } + else + { + b = gTasks[taskId].data[0]; + } + obj_id_set_rotscale(a, 0x100, 0x100, b); + if (gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] += 0xB0; + gSprites[a].pos2.y++; + } + else if (gTasks[taskId].data[1] == 1) + { + if (++gTasks[taskId].data[3] == 0x1E) + gTasks[taskId].data[1] = 2; + return; + } + else + { + gTasks[taskId].data[0] -= 0xB0; + gSprites[a].pos2.y--; + } + sub_8078F9C(a); + if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0) + { + if (gTasks[taskId].data[1] == 2) + { + sub_8078F40(a); + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[1]++; + } + } +} + +void sub_80CF610(struct Sprite* sprite) +{ + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->hFlip = 1; + if (gBattleAnimArgs[2] != 0) + sprite->vFlip = 1; + } + else + { + if (gBattleAnimArgs[2] != 0) + sprite->vFlip = 1; + } + sprite->callback = sub_8078600; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CF690(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->callback = sub_80785E4; + StoreSpriteCallbackInData6(sprite, sub_80CF6B4); +} + +void sub_80CF6B4(struct Sprite* sprite) +{ + sprite->data0 = 6; + sprite->data2 = sprite->pos1.x; + sprite->data4 = sprite->pos1.y - 32; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +//sonic boom +void sub_80CF6DC(struct Sprite* sprite) +{ + s16 a; + s16 b; + u16 c; + + if (NotInBattle()) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + else if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + sub_80787B0(sprite, 1); + a = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + b = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + c = sub_80790F0(a - sprite->pos1.x, b - sprite->pos1.y); + c += 0xF000; + if (NotInBattle()) + c -= 0x6000; + sub_8078FDC(sprite, 0, 0x100, 0x100, c); + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = a; + sprite->data4 = b; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CF7E0(struct Sprite* sprite) +{ + if (sprite->data0-- <= 0) + { + gTasks[sprite->data7].data[1]--; + DestroySprite(sprite); + } +} + +void sub_80CF814(struct Sprite* sprite) +{ + struct Task* task = &gTasks[sprite->data7]; + if (sprite->data0 > task->data[5]) + { + sprite->data5 += sprite->data3; + sprite->data6 += sprite->data4; + } + else + { + sprite->data5 -= sprite->data3; + sprite->data6 -= sprite->data4; + } + sprite->data1 += sprite->data5; + sprite->data2 += sprite->data6; + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data1 >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data1 >> 8; + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data2 / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data2 / 256u; + if (sprite->data0-- <= 0) + { + sprite->data0 = 30; + sprite->callback = sub_80CF7E0; + } +} + +//air cutter +void sub_80CF8B8(struct Sprite* sprite) +{ + s16 a; + s16 b; + s16 c; + struct Task* task = &gTasks[sprite->data7]; + sprite->data1 += (-2 & task->data[7]); + sprite->data2 += (-2 & task->data[8]); + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data1 >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data1 >> 8; + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data2 / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data2 / 256u; + if (sprite->data0-- <= 0) + { + sprite->data0 = 8; + task->data[5] = 4; + a = sub_81174E0(0x1000); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + if (task->data[11] >= sprite->pos1.x) + b = (task->data[11] - sprite->pos1.x) << 8; + else + b = (sprite->pos1.x - task->data[11]) << 8; + if (task->data[12] >= sprite->pos1.y) + c = (task->data[12] - sprite->pos1.y) << 8; + else + c = (sprite->pos1.y - task->data[12]) << 8; + sprite->data2 = 0; + sprite->data1 = 0; + sprite->data6 = 0; + sprite->data5 = 0; + sprite->data3 = sub_81174C4(sub_81174C4(b, a), sub_81174E0(0x1C0)); + sprite->data4 = sub_81174C4(sub_81174C4(c, a), sub_81174E0(0x1C0)); + sprite->callback = sub_80CF814; + } +} + +void sub_80CF9F8(u8 taskId) +{ + if (gTasks[taskId].data[1] == 0) + DestroyAnimVisualTask(taskId); +} + +void sub_80CFA20(u8 taskId) +{ + if (gTasks[taskId].data[0]-- <= 0) + { + u8 spriteId; + struct Sprite* sprite; + spriteId = CreateSprite(&gSpriteTemplate_83D74BC, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]); + sprite = &gSprites[spriteId]; + switch (gTasks[taskId].data[4]) + { + case 1: + sprite->oam.matrixNum |= 24; + break; + case 2: + sprite->oam.matrixNum = 8; + break; + } + sprite->data0 = gTasks[taskId].data[5] - gTasks[taskId].data[6]; + sprite->data7 = taskId; + gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; + gTasks[taskId].data[0] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + PlaySE12WithPanning(0x9A, sub_8076F98(-0x3F)); + if (gTasks[taskId].data[1] > 2) + gTasks[taskId].func = sub_80CF9F8; + } +} + +void sub_80CFB04(u8 taskId) +{ + s16 r9 = 0; + s16 r6 = 0; + s16 sp1 = 0; + s16 sp2 = 0; + s16 r4; + + if (NotInBattle()) + { + gTasks[taskId].data[4] = 2; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + else + { + if ((gBanksBySide[gBattleAnimBankTarget] & 1) == 0) + { + gTasks[taskId].data[4] = 1; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + } + r6 = gTasks[taskId].data[9] = sub_8077ABC(gBattleAnimBankAttacker, 0); + r9 = gTasks[taskId].data[10] = sub_8077ABC(gBattleAnimBankAttacker, 1); + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) + { + sub_807A3FC(gBattleAnimBankTarget, 0, &sp1, &sp2); + } + else + { + sp1 = sub_8077ABC(gBattleAnimBankTarget, 0); + sp2 = sub_8077ABC(gBattleAnimBankTarget, 1); + } + sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0]; + sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1]; + if (sp1 >= r6) + r4 = sp1 - r6; + else + r4 = r6 - sp1; + gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1)); + gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80); + gTasks[taskId].data[7] = gBattleAnimArgs[2]; + if (sp2 >= r9) + { + r4 = sp2 - r9; + gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) & ~1; + } + else + { + r4 = r9 - sp2; + gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1; + } + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + if (gBattleAnimArgs[4] & 0x80) + { + gBattleAnimArgs[4] ^= 0x80; + if (gBattleAnimArgs[4] >= 64) + { + u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + else + { + if (gBattleAnimArgs[4] >= 64) + { + u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + if (gTasks[taskId].data[2] < 3) + gTasks[taskId].data[2] = 3; + gTasks[taskId].func = sub_80CFA20; +} + +void sub_80CFDFC(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->data0 = 0x100 + (IndexOfSpritePaletteTag(gSpriteTemplate_83D75AC.paletteTag) << 4); + sprite->callback = sub_80CFE2C; +} + +#ifdef NONMATCHING +void sub_80CFE2C(struct Sprite* sprite) +{ + u16 r7; + u16* r1; + u16* r2; + int i; + if (++sprite->data1 == 2) + { + sprite->data1 = 0; + r7 = gPlttBufferFaded[sprite->data0 + 8]; + r2 = &gPlttBufferFaded[0x10]; + r1 = &gPlttBufferFaded[sprite->data0 + 9]; + for (i = 7; i >= 0; i--) + { + *r2 = *r1; + r1++; + r2++; + } + gPlttBufferFaded[sprite->data0 + 15] = r7; + if (++sprite->data2 == 0x18) + move_anim_8072740(sprite); + } +} +#else +__attribute__((naked)) +void sub_80CFE2C(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r4, r0, 0\n\ + ldrh r0, [r4, 0x30]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x30]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + bne _080CFE90\n\ + movs r0, 0\n\ + strh r0, [r4, 0x30]\n\ + ldrh r5, [r4, 0x2E]\n\ + ldr r1, _080CFE98 @ =gPlttBufferFaded\n\ + adds r0, r5, 0\n\ + adds r0, 0x8\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r7, [r0]\n\ + adds r6, r1, 0 @puts gPlttBufferFaded in r6\n\ + adds r1, r5, 0\n\ + adds r1, 0x9\n\ + lsls r0, r5, 1\n\ + adds r0, r6 \n\ + adds r2, r0, 0\n\ + adds r2, 0x10\n\ + movs r3, 0x7\n\ + lsls r1, 1\n\ + adds r1, r6 \n\ +_080CFE64:\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + adds r1, 0x2\n\ + adds r2, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080CFE64\n\ + adds r0, r5, 0\n\ + adds r0, 0xF\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + strh r7, [r0]\n\ + ldrh r0, [r4, 0x32]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x32]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x18\n\ + bne _080CFE90\n\ + adds r0, r4, 0\n\ + bl move_anim_8072740\n\ +_080CFE90:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080CFE98: .4byte gPlttBufferFaded\n\ +.syntax divided\n"); +} +#endif + +void sub_80CFE9C(struct Sprite* sprite) +{ + s16 r6; + s16 r7; + u16 var; + + sub_80787B0(sprite, 1); + r6 = sub_8077ABC(gBattleAnimBankTarget, 2); + r7 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + r6 += gBattleAnimArgs[2]; + var = sub_80790F0(r6 - sprite->pos1.x, r7 - sprite->pos1.y); + var += 0xC000; + sub_8078FDC(sprite, 0, 0x100, 0x100, var); + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = r6; + sprite->data4 = r7; + sprite->callback = sub_8078C00; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); +} + +void sub_80CFF50(struct Sprite* sprite) +{ + sprite->data2 = -16; + sprite->pos1.y += 8; + sprite->callback = sub_80CFF68; +} + +void sub_80CFF68(struct Sprite* sprite) +{ + sprite->data0 += 0x80; + sprite->pos2.x = sprite->data0 >> 8; + if (GetBankSide(gBattleAnimBankAttacker) == 0) + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = Sin(sprite->data1, sprite->data2); + sprite->data1 += 5; + if (sprite->data1 > 0x7E) + { + sprite->data1 = 0; + sprite->data2 /= 2; + if (++sprite->data3 == 2) + move_anim_8072740(sprite); + } +} + +void sub_80CFFD8(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = 20; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); + sprite->callback = sub_8078B34; + sprite->affineAnimPaused = 1; + StoreSpriteCallbackInData6(sprite, sub_80D0030); +} + +void sub_80D0030(struct Sprite* sprite) +{ + int i; + u16 rand; + s16* ptr; + PlaySE12WithPanning(0xA6, sub_8076F98(0x3F)); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + ptr = &sprite->data7; + for (i = 0; i < 8; i++) { + ptr[i - 7] = 0; + } + rand = Random(); + sprite->data6 = 0xFFF4 - (rand & 7); + rand = Random(); + sprite->data7 = (rand % 0xA0) + 0xA0; + sprite->callback = sub_80D00B4; + sprite->affineAnimPaused = 0; +} + +void sub_80D00B4(struct Sprite* sprite) +{ + sprite->data0 += sprite->data7; + sprite->pos2.x = sprite->data0 >> 8; + if (sprite->data7 & 1) + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = Sin(sprite->data1, sprite->data6); + sprite->data1 += 8; + if (sprite->data1 > 0x7E) + { + sprite->data1 = 0; + sprite->data2 /= 2; + if (++sprite->data3 == 1) + move_anim_8072740(sprite); + } +} + +void sub_80D0118(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + sprite->pos1.y += 16; + sprite->data0 = gBattleAnimArgs[4]; + sprite->data1 = gBattleAnimArgs[2]; + sprite->data2 = gBattleAnimArgs[5]; + sprite->data3 = gBattleAnimArgs[6]; + sprite->data4 = gBattleAnimArgs[3]; + sprite->callback = sub_8078114; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sprite->callback(sprite); +} + +void sub_80D0178(struct Sprite* sprite) +{ + s16 r7 = 32; + s16 r4 = -32; + s16 r8 = 16; + s16 r6 = -16; + if (gBattleAnimArgs[0] != 0) + { + r7 = r4; + r4 = 32; + r8 = r6; + r6 = 16; + StartSpriteAnim(sprite, 1); + } + sprite->pos1.x += r7; + sprite->pos1.y += r4; + sprite->data0 = 6; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + r8; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, sub_80D020C); +} + +void sub_80D020C(struct Sprite* sprite) +{ + if (sprite->animEnded == 1) + move_anim_8072740(sprite); +} + +void sub_80D0228(struct Sprite* sprite) +{ + s16 r8 = 32; + s16 r4 = -32; + s16 r9 = 16; + s16 r6 = -16; + if (gBattleAnimArgs[0] != 0) + { + r8 = r4; + r4 = 32; + r9 = r6; + r6 = 16; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + } + sprite->pos1.x += r8; + sprite->pos1.y += r4; + sprite->data0 = 6; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + r9; + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data5 = gBattleAnimArgs[0]; + sprite->data6 = sprite->data0; + sprite->callback = sub_80D02D0; +} + +void sub_80D02D0(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) && sprite->animEnded == 1) + { + SeekSpriteAnim(sprite, 0); + sprite->animPaused = 1; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 2; + sprite->pos2.y = -2; + sprite->data0 = sprite->data6; + sprite->data1 ^= 1; + sprite->data2 ^= 1; + sprite->data4 = 0; + sprite->data3 = 0; + sprite->callback = sub_80D0344; + } +} + +void sub_80D0344(struct Sprite* sprite) +{ + if (sprite->data3) + { + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = -sprite->pos2.y; + } + sprite->data3 ^= 1; + if (++sprite->data4 == 0x33) + { + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data4 = 0; + sprite->data3 = 0; + sprite->animPaused = 0; + StartSpriteAnim(sprite, sprite->data5 ^ 1); + sprite->callback = sub_80D03A8; + } +} + +void sub_80D03A8(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) != 0) + move_anim_8072740(sprite); +} + +void sub_80D03C4(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078E70(spriteId, 1); + obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0); + sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 0); + gTasks[taskId].data[0] = 0x50; + gTasks[taskId].func = sub_80D0428; +} + +void sub_80D0428(u8 taskId) +{ + if (--gTasks[taskId].data[0] == -1) + { + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078F40(spriteId); + sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 1); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D0488(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + sub_8078E70(spriteId, 0); + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = sub_8079E90(gBattleAnimBankAttacker); + task->func = sub_80D04E0; +} + +void sub_80D04E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) + sub_80D0614(task, taskId); + task->data[2]++; + task->data[4] += 0x28; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + if (task->data[2] == 32) + { + task->data[5]++; + task->data[1]++; + } + break; + case 1: + if (task->data[6] == 0) + { + if (task->data[5] == 3) + { + task->data[2] = 0; + task->data[1] = 3; + } + else + { + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + task->data[1] = 2; + } + } + break; + case 2: + task->data[1] = 0; + break; + case 3: + if (++task->data[2] > 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 4: + task->data[2] += 2; + task->data[4] -= 0x50; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + if (task->data[2] == 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 5: + sub_8078F40(task->data[0]); + gSprites[task->data[15]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +#ifdef NONMATCHING +void sub_80D0614(struct Task* task, u8 taskId) +{ + s16 r8 = duplicate_obj_of_side_rel2move_in_transparent_mode(0); + if (r8 >= 0) + { + u8 r6 = AllocOamMatrix(); + if (r6 == 0xFF) + obj_delete_but_dont_free_vram(&gSprites[r8]); + else + { + gSprites[r8].oam.objMode = 1; + gSprites[r8].oam.affineMode = 3; + gSprites[r8].affineAnimPaused = 1; + gSprites[r8].oam.matrixNum = r6; + gSprites[r8].subpriority = task->data[7] - task->data[3]; + task->data[3]++; + task->data[6]++; + gSprites[r8].data0 = 16; + gSprites[r8].data1 = taskId; + gSprites[r8].data2 = 6; + gSprites[r8].callback = sub_80D0704; + obj_id_set_rotscale(r8, task->data[4], task->data[4], 0); + gSprites[r8].oam.affineMode = 1; + CalcCenterToCornerVec(&gSprites[r8], gSprites[r8].oam.shape, gSprites[r8].oam.size, gSprites[r8].oam.affineMode); + } + } +} +#else +__attribute__((naked)) +void sub_80D0614(struct Task* task, u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + adds r7, r0, 0 @r7 is task\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r9, r1 @r9 is taskId\n\ + movs r0, 0\n\ + bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + lsls r0, 16\n\ + asrs r4, r0, 16\n\ + cmp r4, 0\n\ + blt _080D06EE @jump to bottom\n\ + bl AllocOamMatrix\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0xFF\n\ + bne _080D0658\n\ + lsls r0, r4, 4\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + ldr r1, _080D0654 @ =gSprites\n\ + adds r0, r1\n\ + bl obj_delete_but_dont_free_vram\n\ + b _080D06EE @ jump to bottom\n\ + .align 2, 0\n\ +_080D0654: .4byte gSprites\n\ +_080D0658:\n\ + ldr r5, _080D06FC @ =gSprites\n\ + lsls r3, r4, 4\n\ + adds r3, r4\n\ + lsls r3, 2\n\ + adds r4, r3, r5\n\ + ldrb r1, [r4, 0x1]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x3\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x1]\n\ + adds r2, r4, 0\n\ + adds r2, 0x2C\n\ + ldrb r0, [r2]\n\ + movs r1, 0x80\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0x1F\n\ + ands r6, r0\n\ + lsls r2, r6, 1\n\ + ldrb r1, [r4, 0x3]\n\ + movs r0, 0x3F\n\ + negs r0, r0\n\ + ands r0, r1\n\ + orrs r0, r2\n\ + strb r0, [r4, 0x3]\n\ + ldrb r0, [r7, 0x16]\n\ + ldrb r1, [r7, 0xE]\n\ + subs r0, r1\n\ + adds r1, r4, 0\n\ + adds r1, 0x43\n\ + strb r0, [r1]\n\ + ldrh r0, [r7, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r7, 0xE]\n\ + ldrh r0, [r7, 0x14]\n\ + adds r0, 0x1\n\ + strh r0, [r7, 0x14]\n\ + movs r0, 0x10\n\ + strh r0, [r4, 0x2E]\n\ + mov r0, r9\n\ + strh r0, [r4, 0x30]\n\ + movs r0, 0x6\n\ + strh r0, [r4, 0x32]\n\ + adds r5, 0x1C\n\ + adds r3, r5\n\ + ldr r0, _080D0700 @ =sub_80D0704\n\ + str r0, [r3]\n\ + mov r1, r8 @duplicate_obj_of_side_rel2move_in_transparent_mode(0)\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x10\n\ + ldrsh r2, [r7, r1]\n\ + adds r1, r2, 0\n\ + movs r3, 0\n\ + bl obj_id_set_rotscale\n\ + ldrb r0, [r4, 0x1]\n\ + movs r3, 0x4\n\ + negs r3, r3\n\ + ands r3, r0\n\ + movs r0, 0x1\n\ + orrs r3, r0\n\ + strb r3, [r4, 0x1]\n\ + lsrs r1, r3, 6\n\ + ldrb r2, [r4, 0x3]\n\ + lsrs r2, 6\n\ + lsls r3, 30\n\ + lsrs r3, 30\n\ + adds r0, r4, 0\n\ + bl CalcCenterToCornerVec\n\ +_080D06EE:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D06FC: .4byte gSprites\n\ +_080D0700: .4byte sub_80D0704\n\ +.syntax divided\n"); +} +#endif + +void sub_80D0704(struct Sprite* sprite) +{ + if (--sprite->data0 == 0) + { + gTasks[sprite->data1].data[sprite->data2]--; + FreeOamMatrix(sprite->oam.matrixNum); + obj_delete_but_dont_free_vram(sprite); + } +} + +void sub_80D074C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (gBattleAnimArgs[1] == 0) + DestroyAnimVisualTask(taskId); + else + { + u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + task->data[0] = spriteId; + task->data[1] = 0; + task->data[2] = gBattleAnimArgs[1]; + task->data[3] = 0; + task->data[4] = 0; + sub_80798F4(task, spriteId, &gUnknown_083D76F4); + task->func = sub_80D07AC; + } +} + +void sub_80D07AC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + sub_807992C(task); + task->data[4] += 3; + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 1: + sub_807992C(task); + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 2: + if (task->data[4] != 0) + { + gSprites[task->data[0]].pos2.y -= 2; + task->data[4] -= 2; + } + else + task->data[1]++; + break; + case 3: + if (!sub_807992C(task)) + { + if (--task->data[2] == 0) + { + gSprites[task->data[0]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + else + { + sub_80798F4(task, task->data[0], &gUnknown_083D76F4); + task->data[1] = 0; + } + } + break; + } +} + +void sub_80D08C8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + sub_80798F4(task, spriteId, &gUnknown_083D7714); + task->func = sub_80D0904; +} + +void sub_80D0904(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} + +void sub_80D0930(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + StartSpriteAnim(sprite, 0); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + 32; + sprite->data1 = 0x40; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - 32; + sprite->data1 = -0x40; + } + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data0 = 0x34; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} + +void sub_80D09C0(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + if (GetBankSide(bank) == 1) + { + gBattleAnimArgs[1] *= -1; + } + sprite->pos1.x = sub_8077ABC(bank, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[2]; + if (sprite->pos1.y <= 7) + sprite->pos1.y = 8; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; +} + +void sub_80D0A4C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + task->data[1] = 0; + sub_80798F4(task, spriteId, &gUnknown_083D77B0); + task->func = sub_80D0A8C; +} + +void sub_80D0A8C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} + +void sub_80D0AB8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = 0; + task->data[2] = 4; + task->data[3] = 7; + task->data[4] = 3; + task->data[5] = gSprites[task->data[0]].pos1.x; + task->data[6] = gSprites[task->data[0]].pos1.y; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 2; + if (GetBankSide(gBattleAnimBankAttacker) == 1) + task->data[2] *= -1; + task->func = sub_80D0B3C; +} + +void sub_80D0B3C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (++task->data[7] > 2) + { + task->data[7] = 0; + task->data[8]++; + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y += task->data[9]; + } + else + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + switch (task->data[1]) + { + case 0: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 14; + task->data[1] = 1; + } + break; + case 1: + gSprites[task->data[0]].pos1.x -= task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 7; + task->data[1] = 2; + } + break; + case 2: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + if (--task->data[4] != 0) + { + task->data[3] = 7; + task->data[1] = 0; + } + else + { + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80D0C88(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct UnknownStruct_2 sp; + s16 i; + task->data[0] = sub_8077FC0(gBattleAnimBankTarget) + 32; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[15] = sub_807A100(gBattleAnimBankTarget, 0); + if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) + { + task->data[6] = gUnknown_030042C0; + sp.dest = (u16 *)REG_ADDR_BG1HOFS; + } + else + { + task->data[6] = gUnknown_03004288; + sp.dest = (u16 *)REG_ADDR_BG2HOFS; + } + for (i = task->data[0] - 0x40; i <= task->data[0];i++) + { + if (i >= 0) + { + gUnknown_03004DE0.unk0[i] = task->data[6] + 0xF0; + gUnknown_03004DE0.unk780[i] = task->data[6] + 0xF0; + } + } + sp.control = 0xa2600001; + sp.unk8 = 1; + sp.unk9 = 0; + sub_80895F8(sp); + task->func = sub_80D0D68; +} + +#ifdef NONMATCHING +void sub_80D0D68(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[4]) + { + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = task->data[3] & 3; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) + { + case 0: + break; + case 1: + task->data[5] -= 2; + break; + case 2: + task->data[5] += 1; + break; + case 3: + task->data[5] += 1; + break; + } + if (task->data[5] >= 0) + { + gUnknown_03004DE0.unk0[task->data[5]] = task->data[6]; + gUnknown_03004DE0.unk780[task->data[5]] = task->data[6]; + } + if (++task->data[3] >= task->data[15]) + { + gUnknown_03004DC0.unk15 = 3; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} +#else +__attribute__((naked)) +void sub_80D0D68(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + ldr r1, _080D0D88 @ =gTasks\n\ + adds r3, r0, r1\n\ + movs r1, 0x10\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + beq _080D0D8C\n\ + cmp r0, 0x1\n\ + beq _080D0DA2\n\ + b _080D0E22\n\ + .align 2, 0\n\ +_080D0D88: .4byte gTasks\n\ +_080D0D8C:\n\ + ldrh r0, [r3, 0x12]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x14\n\ + ble _080D0E22\n\ + ldrh r0, [r3, 0x10]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x10]\n\ + b _080D0E22\n\ +_080D0DA2:\n\ + ldrh r0, [r3, 0xA]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x3\n\ + ble _080D0E22\n\ + movs r0, 0\n\ + strh r0, [r3, 0xA]\n\ + ldrh r1, [r3, 0xE]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ + strh r0, [r3, 0xC]\n\ + ldrh r0, [r3, 0x8]\n\ + subs r0, r1\n\ + strh r0, [r3, 0x12]\n\ + movs r2, 0xC\n\ + ldrsh r1, [r3, r2]\n\ + cmp r1, 0x1\n\ + beq _080D0DD8\n\ + cmp r1, 0x1\n\ + ble _080D0DE0\n\ + cmp r1, 0x2\n\ + beq _080D0DDC\n\ + cmp r1, 0x3\n\ + beq _080D0DDC\n\ + b _080D0DE0\n\ +_080D0DD8:\n\ + subs r0, 0x2\n\ + b _080D0DDE\n\ +_080D0DDC:\n\ + adds r0, 0x1\n\ +_080D0DDE:\n\ + strh r0, [r3, 0x12]\n\ +_080D0DE0:\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + blt _080D0E04\n\ + ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 1\n\ + movs r1, 0xF0\n\ + lsls r1, 3\n\ + adds r2, r1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ +_080D0E04:\n\ + ldrh r0, [r3, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xE]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r2, 0x26\n\ + ldrsh r1, [r3, r2]\n\ + cmp r0, r1\n\ + blt _080D0E22\n\ + ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x15]\n\ + adds r0, r4, 0\n\ + bl DestroyAnimVisualTask\n\ +_080D0E22:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E2C: .4byte gUnknown_03004DC0\n\ +.syntax divided\n"); +} +#endif + +void sub_80D0E30(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) - 16; + sprite->pos1.y = sub_8077FC0(gBattleAnimBankTarget) + 16; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 16; + sprite->data4 = 0; + sprite->data5 = sub_807A100(gBattleAnimBankTarget, 0) + 2; + sprite->data6 = sub_8076F98(0x3F); + sprite->callback = sub_80D0E8C; +} + +void sub_80D0E8C(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + if (++sprite->data2 > 1) + { + sprite->data2 = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data1 > 16) + { + sprite->invisible = 0; + sprite->data0++; + } + break; + case 1: + if (++sprite->data1 > 3 && sprite->data2 < sprite->data5) + { + sprite->data1 = 0; + sprite->pos1.y -= 1; + sprite->data2++; + if (sprite->data2 % 10 == 0) + PlaySE12WithPanning(0xCD, sprite->data6); + } + sprite->data4 += sprite->data3; + if (sprite->data4 > 31) + { + sprite->data4 = 0x40 - sprite->data4; + sprite->data3 *= -1; + } + else if (sprite->data4 <= -32) + { + sprite->data4 = -0x40 - sprite->data4; + sprite->data3 *= -1; + } + sprite->pos2.x = sprite->data4; + if (sprite->data5 == sprite->data2) + { + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data0++; + } + break; + case 2: + if (++sprite->data2 > 1) + { + sprite->data2 = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data1 > 16) + { + sprite->invisible = 0; + move_anim_8072740(sprite); + } + break; + } +} + +void sub_80D0FD8(struct Sprite* sprite) +{ + u8 bank = 0; + u16 sp0 = 0; + u16 sp1 = 0; + u8 r4; + + if (gBattleAnimArgs[2] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + r4 = gBattleAnimArgs[3] ^ 1; + if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) + { + sub_807A3FC(bank, r4, &sp0, &sp1); + if (r4 == 0) + r4 = sub_8077ABC(bank, 0); + else + r4 = sub_8077ABC(bank, 2); + if (GetBankSide(bank) != 0) + gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. + else + gBattleAnimArgs[0] = sp0 - r4; + } + sprite->callback = sub_80793C4; + sub_80793C4(sprite); +} + +void sub_80D1098(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite)) + { + FreeSpriteOamMatrix(sprite); + move_anim_8072740(sprite); + } +} + +void sub_80D10B8(struct Sprite* sprite) +{ + u16 r9 = 0; + u16 r6 = 0; + s16 sp0 = 0; + s16 sp1 = 0; + u8 sp4; + u8 bankr7; + u8 bankr8; + u8 r10; + + if (gBattleAnimArgs[5] == 0) + { + bankr7 = gBattleAnimBankAttacker; + bankr8 = gBattleAnimBankTarget; + } + else + { + bankr7 = gBattleAnimBankTarget; + bankr8 = gBattleAnimBankAttacker; + } + + if (gBattleAnimArgs[6] == 0) + { + r10 = 0; + sp4 = 1; + } + else + { + r10 = 2; + sp4 = 3; + } + + if (GetBankSide(bankr7) != 0) + { + r9 = sub_8077ABC(bankr7, r10) + gBattleAnimArgs[0]; + if (IsAnimBankSpriteVisible(bankr8 ^ 2)) + sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1; + else + sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1; + } + else + { + r9 = sub_8077ABC(bankr7, r10) - gBattleAnimArgs[0]; + if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2)) + { + if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) + sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; + else + sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + } + else + { + sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + } + + } + + r6 = sub_8077ABC(bankr7, sp4) + gBattleAnimArgs[1]; + if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2)) + { + sub_807A3FC(bankr8, gBattleAnimArgs[6], &sp0, &sp1); + } + else + { + sp0 = sub_8077ABC(bankr8, r10); + sp1 = sub_8077ABC(bankr8, sp4); + } + + if (GetBankSide(bankr8)) + sp0 += gBattleAnimArgs[3]; + else + sp0 -= gBattleAnimArgs[3]; + + sp1 += gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data1 = r9; + sprite->pos1.y = sprite->data3 = r6; + sprite->data2 = sp0; + sprite->data4 = sp1; + sprite->data0 = gBattleAnimArgs[0]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D1098; + sub_80D1098(sprite); +} + +void sub_80D1318(struct Sprite* sprite) +{ + u8 index = IndexOfSpritePaletteTag(0x27DB); + if (index != 0xFF) + { + BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); + } + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80793C4; + sub_80793C4(sprite); +} + +void sub_80D1368(struct Sprite* sprite) +{ + s16 r1; + sub_80787B0(sprite, 0); + r1 = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; + sprite->data0 = 0x380; + sprite->data1 = r1; + sprite->data7 = gBattleAnimArgs[2]; + sprite->callback = sub_80D13AC; +} + +void sub_80D13AC(struct Sprite* sprite) +{ + s16 add; + sprite->pos2.y -= (sprite->data0 >> 8); + sprite->pos2.x = sprite->data1 >> 8; + sprite->data0 -= 32; + add = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; + sprite->data1 += add; + if (sprite->pos2.y > 0) + { + sprite->pos1.y += sprite->pos2.y; + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data0 = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80D1424; + } +} + +void sub_80D1424(struct Sprite* sprite) +{ + if (sprite->data0++ > 19) + { + StartSpriteAffineAnim(sprite, 2); + sprite->callback = sub_80D144C; + } +} + +void sub_80D144C(struct Sprite* sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->data0 = 0; + if (sprite->data7 == 0) + { + sprite->oam.tileNum += 16; + sprite->callback = sub_80D14C4; + } + else + { + sprite->oam.tileNum += 32; + sprite->callback = sub_80D154C; + } + } +} + +void sub_80D14C4(struct Sprite* sprite) +{ + sprite->pos2.y -= 2; + if (++sprite->data0 == 9) + { + sprite->data0 = 16; + sprite->data1 = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = sprite->data0; + sprite->callback = sub_80D1504; + } +} + +void sub_80D1504(struct Sprite* sprite) +{ + if (sprite->data1++ % 3 == 0) + { + sprite->data0--; + REG_BLDALPHA = sprite->data0 | ((16 - sprite->data0) << 8); + if (sprite->data0 == 0) + sprite->callback = sub_80D154C; + } +} + +void sub_80D154C(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->invisible = 1; + if (sprite->data7 == 0) + sprite->callback = sub_80D158C; + else + sprite->callback = move_anim_8072740; + } +} + +void sub_80D158C(struct Sprite* sprite) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + move_anim_8072740(sprite); +} + +void sub_80D15A4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + sub_80798F4(task, spriteId, &gUnknown_083D79BC); + task->func = sub_80D15E0; +} + +void sub_80D15E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (sub_807992C(task) == 0) + { + gSprites[task->data[0]].pos2.y = 0; + gSprites[task->data[0]].invisible = 1; + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D1638(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 3; + if (GetBankSide(gBattleAnimBankTarget) == 0) + { + task->data[13] = 0xFFFF; + task->data[14] = 8; + } + else + { + task->data[13] = 1; + task->data[14] = -8; + } + task->data[15] = GetAnimBankSpriteId(1); + task->func = sub_80D16A0; +} + +void sub_80D16A0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + if (++task->data[3] > 4) + { + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x -= 6; + task->data[0]++; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D17C4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 1; + task->data[13] = 14; + task->data[14] = 2; + task->data[15] = GetAnimBankSpriteId(0); + task->func = sub_80D1808; +} + +void sub_80D1808(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[0] == 0 && ++task->data[1] > task->data[4]) + { + task->data[1] = 0; + if (++task->data[2] & 1) + gSprites[task->data[15]].invisible = 0; + else + gSprites[task->data[15]].invisible = 1; + if (++task->data[3] >= task->data[13]) + { + if (++task->data[4] < task->data[14]) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + } + else + { + gSprites[task->data[15]].invisible = 0; + DestroyAnimVisualTask(taskId); + } + } + } +} + +void sub_80D18D4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = 0; + task->data[8] = 0; + task->data[13] = 0; + task->data[14] = sub_8077ABC(gBattleAnimBankAttacker, 0); + task->data[15] = sub_8077ABC(gBattleAnimBankAttacker, 1); + task->func = sub_80D1930; +} + +void sub_80D1930(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[8]) + { + case 0: + if (++task->data[4] > 1) + { + task->data[4] = 0; + task->data[5] = (task->data[5] + 1) & 1; + if (++task->data[6] > 20) + { + if (task->data[7] == 0) + { + task->data[6] = 0; + task->data[8] = 1; + } + else + task->data[8] = 2; + } + } + break; + case 1: + task->data[5] = 0; + if (++task->data[4] > 20) + { + task->data[7] = 1; + task->data[8] = 0; + } + break; + case 2: + task->data[5] = 1; + break; + } + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 4) + { + u8 spriteId; + task->data[1] = 0; + spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 13; + gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0]; + gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1]; + task->data[13]++; + if (++task->data[2] > 3) + { + task->data[2] = 0; + if (++task->data[3] > 5) + task->data[0]++; + } + } + } + break; + case 1: + if (task->data[13] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D1A70(struct Sprite* sprite) +{ + sprite->invisible = gTasks[sprite->data0].data[5]; + if (sprite->animEnded) + { + gTasks[sprite->data0].data[sprite->data1]--; + DestroySprite(sprite); + } +} + +void sub_80D1ADC(u8 taskId) +{ + int i; + u8 sp[8]; + void* src; + void* dest; + void* what; + sp[0] = IndexOfSpritePaletteTag(0x27DE); + for (i = 1; i <= 4; i++) + sp[i] = AllocSpritePalette(0x2710 - i); + src = &gBattleAnimSpritePalette_206; + dest = (NotInBattle()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000; + LZDecompressWram(src, dest); + for (i = 0; i <= 4; i++) + { + what = ((NotInBattle()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5); + LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32); + } + DestroyAnimVisualTask(taskId); +} + +void sub_80D1B80(u8 taskId) +{ + int i; + for (i = 0; i < 5; i++) + FreeSpritePaletteByTag(gUnknown_083D7A5C[i]); + DestroyAnimVisualTask(taskId); +} + +void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b) +{ + u8 tile; + tile = (b & 1); + tile = ((-tile | tile) >> 31) & 32; + sprite->oam.tileNum += tile + (a << 2); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]); +} + +void sub_80D1C08(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + if (GetBankSide(gBattleAnimBankAttacker) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[3]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData6(sprite, move_anim_8072740); + sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); +} + +void sub_80D1C80(struct Sprite* sprite) +{ + if (++sprite->data0 == 1) + sub_80787B0(sprite, 0); + sprite->pos2.x = Sin(sprite->data1, 8); + sprite->pos2.y = sprite->data2 >> 8; + sprite->data1 = (sprite->data1 + 7) & 0xFF; + sprite->data2 -= 0x80; + if (sprite->data0 == 0x3C) + move_anim_8072740(sprite); +} + +void sub_80D1CD0(u8 taskId) +{ + int zero; + bool8 result = NotInBattle(); + u16 var = 0xF0; + if (result) + { + var = 0x98; + zero = 0; + } + else + zero = 0; + gUnknown_030042C4 = var; + gUnknown_03004240 = 0xA0; + REG_WIN0H = var; + REG_WIN0V = 0xA0; + REG_WININ = 0x3F1F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0xC8; + REG_BLDY = 0x10; + gTasks[taskId].data[0] = zero; + gTasks[taskId].data[1] = var; + gTasks[taskId].func = sub_80D1D48; +} + +void sub_80D1D48(u8 taskId) +{ + gTasks[taskId].data[0] += 13; + gTasks[taskId].data[1] -= 13; + if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) + { + gUnknown_030042C4 = 0; + gTasks[taskId].func = sub_80D1D9C; + } + else + gUnknown_030042C4 = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); +} + +void sub_80D1D9C(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 5) + { + gTasks[taskId].data[11] = 0x88; + RequestSpriteCopy((u8 *)(&gTasks[taskId].data[11]), (u8 *)(®_BLDCNT), 2); + BlendPalettes(sub_80791A8(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); + } + else if (gTasks[taskId].data[10] > 4) + { + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0; + REG_BLDY = 0; + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D1E38(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(1), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80D1EC8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(0); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(0), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80D1F58(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = 0x5F; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D1FA4; +} + +void sub_80D1FA4(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) == 0) + { + sprite->pos2.y += Sin(sprite->data5, 14); + sprite->data5 = (sprite->data5 + 4) & 0xFF; + } + else + move_anim_8072740(sprite); +} + +void sub_80D1FDC(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data1 = gBattleAnimArgs[0]; + sprite->data2 = gBattleAnimArgs[1]; + sprite->data0++; + } + else + { + sprite->data4 += sprite->data1; + sprite->pos2.x = sprite->data4 >> 8; + sprite->pos2.y = Sin(sprite->data3, sprite->data2); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data3 > 0x64) + { + sprite->invisible = sprite->data3 % 2; + } + if (sprite->data3 > 0x78) + move_anim_8072740(sprite); + } +} + +void sub_80D2064(struct Sprite* sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 0xA0; + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData6(sprite, sub_80D2094); +} + +void sub_80D2094(struct Sprite* sprite) +{ + s16 y; + sprite->data2 += sprite->data1; + sprite->pos2.y = -((u16)sprite->data2 >> 8); + sprite->pos2.x = Sin(sprite->data3, 4); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + y = sprite->pos1.y + sprite->pos2.y; + if (y <= 0x48) + { + sprite->invisible = sprite->data3 % 2; + if (y <= 0x40) + move_anim_8072740(sprite); + } +} + +void sub_80D2100(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 3; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + LZDecompressVram(&gAttractTilemap, tempvar); + LZDecompressVram(&gAttractGfx, subStruct.field_0); + LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); + if (NotInBattle()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + gTasks[taskId].func = sub_80D21F0; +} + +void sub_80D21F0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x8D) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D23B4(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + if (NotInBattle()) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); + else if (GetBankSide(gBattleAnimBankTarget) == 1) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4); + else + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4); + LZDecompressVram(&gBattleAnimBackgroundImage_ScaryFace, subStruct.field_0); + LoadCompressedPalette(&gBattleAnimBackgroundPalette_ScaryFace, subStruct.field_8 << 4, 32); + if (NotInBattle()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + gTasks[taskId].func = sub_80D24E0; +} + +void sub_80D24E0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 14) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x15) + { + gTasks[taskId].data[11] = 14; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D26A4(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->affineAnimPaused = 1; + sprite->data0 = gBattleAnimArgs[0]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->data7 = sub_8079E90(gBattleAnimBankAttacker); + sprite->callback = sub_80D2704; + sub_80D2704(sprite); +} + +void sub_80D2704(struct Sprite* sprite) +{ + if ((u16)(sprite->data1 - 0x40) <= 0x7F) + sprite->subpriority = sprite->data7 + 1; + else + sprite->subpriority = sprite->data7 - 1; + sprite->pos2.x = Sin(sprite->data1, sprite->data2 >> 8); + sprite->pos2.y = Cos(sprite->data1, sprite->data3 >> 8); + sprite->data1 = (sprite->data1 + 9) & 0xFF; + switch (sprite->data5) + { + case 1: + sprite->data2 -= 0x400; + sprite->data3 -= 0x100; + if (++sprite->data4 == sprite->data0) + { + sprite->data5 = 2; + return; + } + break; + case 0: + sprite->data2 += 0x400; + sprite->data3 += 0x100; + if (++sprite->data4 == sprite->data0) + { + sprite->data4 = 0; + sprite->data5 = 1; + } + break; + } + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + move_anim_8072740(sprite); +} + +void sub_80D27E0(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data0 = Sin(gBattleAnimArgs[0], 10); + sprite->data1 = Cos(gBattleAnimArgs[0], 7); + sprite->callback = sub_80D2834; +} + +void sub_80D2834(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data0; + sprite->pos2.y += sprite->data1; + if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16) + move_anim_8072740(sprite); +} + +void sub_80D287C(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data0; + sprite->pos2.y += sprite->data1; + if (sprite->data3++ >= sprite->data2) + move_anim_8072740(sprite); +} + +void sub_80D28AC(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data0 = Sin(gBattleAnimArgs[0], 10); + sprite->data1 = Cos(gBattleAnimArgs[0], 7); + sprite->data2 = gBattleAnimArgs[1]; + sprite->callback = sub_80D287C; +} + +void sub_80D2904(struct Sprite* sprite) +{ + if (sprite->animEnded) + move_anim_8072740(sprite); +} + +void sub_80D2920(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->callback = sub_80D2904; +} + +void sub_80D2938(struct Sprite* sprite) +{ + s16 r5; + if (sprite->data0 == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + sprite->data0++; + r5 = (sprite->data0 * 10) & 0xFF; + sprite->pos2.x = Sin(r5, 0x50) >> 8; + if (sprite->data0 <= 0x4F) + sprite->pos2.y = (sprite->data0 / 2) + (Cos(r5, 0x50) >> 8); + if (sprite->data0 > 0x5A) + { + sprite->data2++; + sprite->pos2.x -= sprite->data2 / 2; + } + if (sprite->data0 > 0x64) + move_anim_8072740(sprite); +} + +void sub_80D29CC(struct Sprite* sprite) +{ + sprite->data5++; + sprite->pos2.x = Sin(sprite->data3, 5); + sprite->pos2.y = sprite->data5 / 2; + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data5 > 20) + sprite->invisible = sprite->data5 % 2; + if (sprite->data5 > 30) + move_anim_8072740(sprite); +} + +void sub_80D2A38(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data1 = gBattleAnimArgs[0]; + sprite->data2 = gBattleAnimArgs[1]; + sprite->data0++; + } + else + { + sprite->data4 += sprite->data1; + sprite->pos2.x = sprite->data4 >> 8; + sprite->pos2.y = Sin(sprite->data3, sprite->data2); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data3 > 0x46) + { + sprite->callback = sub_80D29CC; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data3 = Random() % 0xB4; + } + } +} + +/* void sub_80D2ABC(struct Sprite* sprite) +{ + int var; + s16 var2; + int var3; + if (sprite->data3 == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) - 1; + sprite->data2 = 1; + } + sprite->data0 += sprite->data2; + var = sprite->data0 * 4; + if (var < 0) + var += 0xFF; + sprite->data1 = (sprite->data0 * 4) -(((var) >> 8) << 8); + if (sprite->data1 < 0) + sprite->data1 = 0; + var3 = sprite->data1; + var2 = sprite->data0; + var2 /= 4; + sprite->pos2.x = Cos(var3, 30 - var2); + var3 = sprite->data1; + var2 = sprite->data0 / 8; + sprite->pos2.x = Sin(var3, 10 - var2); + if (sprite->data1 > 0x80 && sprite->data2 > 0) + sprite->data2 = 0xFFFF; +} */
\ No newline at end of file |