diff options
-rw-r--r-- | asm/battle_anim_80CA710.s | 1782 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 831 |
3 files changed, 832 insertions, 1782 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index fd5b9fb88..da2250042 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,1788 +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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 oamt_set_x3A_32 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CA7F0: .4byte gBattleAnimArgs -_080CA7F4: .4byte gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimEnemyMonIndex - 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 oamt_set_x3A_32 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CA848: .4byte gBattleAnimArgs -_080CA84C: .4byte gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r0] - bl sub_8079E90 - adds r0, 0x1 - b _080CA8EE - .align 2, 0 -_080CA8E0: .4byte gBattleAnimEnemyMonIndex -_080CA8E4: - ldr r0, _080CA924 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex - 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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimPlayerMonIndex -_080CAB7C: .4byte gBattleAnimArgs -_080CAB80: .4byte gBattleAnimEnemyMonIndex -_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 oamt_set_x3A_32 -_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 oamt_set_x3A_32 - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_080CAC98: - ldr r0, _080CACE8 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex - thumb_func_end sub_80CAC44 - - thumb_func_start sub_80CACEC -sub_80CACEC: @ 80CACEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - b _080CADFE - .align 2, 0 -_080CADF0: .4byte gBattleAnimPlayerMonIndex -_080CADF4: - ldr r0, _080CAE10 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimPlayerMonIndex -_080CB028: .4byte gBattleAnimArgs -_080CB02C: .4byte gBattleAnimEnemyMonIndex -_080CB030: - ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex - 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 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_080CB080: .4byte gBattleAnimArgs -_080CB084: .4byte gBattleAnimPlayerMonIndex -_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 IsContest - lsls r0, 24 - cmp r0, 0 - bne _080CB170 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080CB170 - ldr r0, _080CB198 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - b _080CB22E - .align 2, 0 -_080CB21C: .4byte gBattleAnimEnemyMonIndex -_080CB220: - ldr r0, _080CB258 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex - 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 obj_id_for_side_relative_to_move - 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 obj_id_for_side_relative_to_move - 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 obj_id_for_side_relative_to_move - 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 obj_id_for_side_relative_to_move - 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 @ =gBattleAnimEnemyMonIndex - 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 gBattleAnimEnemyMonIndex -_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 obj_id_for_side_relative_to_move - 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} diff --git a/ld_script.txt b/ld_script.txt index cca05f284..ca99b5a80 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -182,6 +182,7 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/contest_link_80C857C.o(.text); src/item_use.o(.text); + src/battle_anim_80CA710.o(.text); asm/battle_anim_80CA710.o(.text); src/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..191280e7b --- /dev/null +++ b/src/battle_anim_80CA710.c @@ -0,0 +1,831 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "palette.h" +#include "rng.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimPlayerMonIndex; +extern u8 gBattleAnimEnemyMonIndex; +extern struct SpriteTemplate gSpriteTemplate_83D631C; + +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_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_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4); +u8 sub_8079ED4(u8 slot); + +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_80CA710(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[3]; + if (GetBankSide(gBattleAnimPlayerMonIndex)) + { + 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(gBattleAnimPlayerMonIndex, 2); + sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->callback = sub_8078B34; + oamt_set_x3A_32(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(gBattleAnimEnemyMonIndex, 2); + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + sprite->callback = sub_8078B34; + oamt_set_x3A_32(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(gBattleAnimEnemyMonIndex, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 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(gBattleAnimEnemyMonIndex) + 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) + 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(gBattleAnimEnemyMonIndex) + 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(gBattleAnimPlayerMonIndex, 2); + sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 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(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + if (GetBankSide(gBattleAnimPlayerMonIndex)) + { + 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(gBattleAnimEnemyMonIndex, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 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(gBattleAnimPlayerMonIndex)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 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; + oamt_set_x3A_32(sprite, sub_80CABC0); + } +} + +void sub_80CABC0(struct Sprite* sprite) +{ + sprite->invisible = 0; + StartSpriteAnim(sprite, 1); + sprite->data0 = 60; + sprite->callback = sub_80782D8; + oamt_set_x3A_32(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(gBattleAnimEnemyMonIndex) & 3); + } + else + { + b = sub_8079ED4(gBattleAnimEnemyMonIndex) + 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(IsContest() || !IsDoubleBattle()) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (GetBankIdentity_permutated(gBattleAnimEnemyMonIndex) == 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(gBattleAnimPlayerMonIndex, 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(gBattleAnimPlayerMonIndex) - 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimPlayerMonIndex) + 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(gBattleAnimPlayerMonIndex, 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(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 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(gBattleAnimPlayerMonIndex)) + { + 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(gBattleAnimPlayerMonIndex)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + sprite->data0 = gBattleAnimArgs[4]; + if(!(gBattleAnimArgs[6])) + { + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; + } + else + { + sub_807A3FC(gBattleAnimEnemyMonIndex, 1, &sprite->data2, &sprite->data4); + sprite->data2 += gBattleAnimArgs[2]; + sprite->data4 += gBattleAnimArgs[3]; + } + sprite->data5 = gBattleAnimArgs[5]; + sub_80786EC(sprite); + if(GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + { + sprite->data0 = 1; + } + else + { + sprite->data0 = 0; + } + sprite->callback = sub_80CB09C; +} + +#ifdef NONMATCHING +void sub_80CB09C(struct Sprite* sprite) +{ + s16 c = 0; + s16 a = sprite->data0; + s16 b = sprite->data7; + sprite->data0 = 1; + sub_8078718(sprite); + sprite->data0 = a; + if (b > 0xC8 && sprite->data7 <= 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 = 1; + } + } + if((sprite->pos1.x + sprite->pos2.x + 16) <= 0x110 && (sprite->pos1.y + sprite->pos2.y) <= 0xA0 && (sprite->pos1.y + sprite->pos2.y) < -16) + { + c = 1; + } + if (!c) move_anim_8072740(sprite); +} +#else +__attribute__((naked)) +void sub_80CB09C(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r6, r0, 0\n\ + movs r7, 0\n\ + ldrh r5, [r6, 0x2E]\n\ + ldrh r4, [r6, 0x3C]\n\ + movs r0, 0x1\n\ + strh r0, [r6, 0x2E]\n\ + adds r0, r6, 0\n\ + bl sub_8078718\n\ + ldrh r0, [r6, 0x3C]\n\ + strh r5, [r6, 0x2E]\n\ + lsls r4, 16\n\ + asrs r4, 16\n\ + cmp r4, 0xC8\n\ + ble _080CB0CE\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x37\n\ + bgt _080CB0CE\n\ + ldrh r0, [r6, 0x6]\n\ + cmp r0, 0\n\ + bne _080CB0D4\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x6]\n\ +_080CB0CE:\n\ + ldrh r0, [r6, 0x6]\n\ + cmp r0, 0\n\ + beq _080CB106\n\ +_080CB0D4:\n\ + movs r1, 0x2E\n\ + ldrsh r0, [r6, r1]\n\ + cmp r0, 0\n\ + beq _080CB106\n\ + adds r3, r6, 0\n\ + adds r3, 0x3E\n\ + ldrb r2, [r3]\n\ + lsls r0, r2, 29\n\ + lsrs r0, 31\n\ + movs r1, 0x1\n\ + eors r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + ldrh r0, [r6, 0x6]\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x6]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1E\n\ + bne _080CB106\n\ + movs r7, 0x1\n\ +_080CB106:\n\ + movs r2, 0x20\n\ + ldrsh r0, [r6, r2]\n\ + movs r2, 0x24\n\ + ldrsh r1, [r6, r2]\n\ + adds r0, r1\n\ + adds r0, 0x10\n\ + movs r1, 0x88\n\ + lsls r1, 1\n\ + cmp r0, r1\n\ + bhi _080CB130\n\ + movs r0, 0x22\n\ + ldrsh r1, [r6, r0]\n\ + movs r2, 0x26\n\ + ldrsh r0, [r6, r2]\n\ + adds r1, r0\n\ + cmp r1, 0xA0\n\ + bgt _080CB130\n\ + movs r0, 0x10\n\ + negs r0, r0\n\ + cmp r1, r0\n\ + bge _080CB132\n\ +_080CB130:\n\ + movs r7, 0x1\n\ +_080CB132:\n\ + cmp r7, 0\n\ + beq _080CB13C\n\ + adds r0, r6, 0\n\ + bl move_anim_8072740\n\ +_080CB13C:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void sub_80CB144(struct Sprite* sprite) +{ + if(!IsContest() && IsDoubleBattle() == TRUE) + { + sub_807A3FC(gBattleAnimEnemyMonIndex, 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(gBattleAnimEnemyMonIndex) - 1; + } + else + { + sprite->oam.priority = sub_8079ED4(gBattleAnimEnemyMonIndex) + 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; + obj_id_for_side_relative_to_move(1); + sprite->data0 = 0x100; + sprite->callback = sub_80CB2D4; + } +} + +void sub_80CB2D4(struct Sprite* sprite) +{ + obj_id_for_side_relative_to_move(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 = obj_id_for_side_relative_to_move(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 = obj_id_for_side_relative_to_move(1); + gTasks[taskId].data[10] += gTasks[taskId].data[0]; + gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; + if(GetBankSide(gBattleAnimEnemyMonIndex)) + { + 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; + } +} + +#ifdef NONMATCHING +void sub_80CB438(u8 taskId) +{ + if((u16)gBattleAnimArgs[7] == 0xFFFF) + { + if(!gTasks[taskId].data[0]) + { + u8 spriteId = obj_id_for_side_relative_to_move(1); + sub_8078F40(spriteId); + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[0]++; + + } + } + else if(gTasks[taskId].data[0]) + { + gTasks[taskId].data[0]++; + } + if(gTasks[taskId].data[0] == 3) DestroyAnimVisualTask(taskId); +} +#else +__attribute__((naked)) +void sub_80CB438(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + ldr r0, _080CB484 @ =gBattleAnimArgs\n\ + ldrh r1, [r0, 0xE]\n\ + ldr r0, _080CB488 @ =0x0000ffff\n\ + cmp r1, r0\n\ + bne _080CB494\n\ + ldr r0, _080CB48C @ =gTasks\n\ + lsls r2, r3, 2\n\ + adds r1, r2, r3\n\ + lsls r1, 3\n\ + adds r6, r1, r0\n\ + movs r1, 0x8\n\ + ldrsh r5, [r6, r1]\n\ + adds r4, r0, 0\n\ + cmp r5, 0\n\ + bne _080CB4A8\n\ + movs r0, 0x1\n\ + bl obj_id_for_side_relative_to_move\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r4, 0\n\ + bl sub_8078F40\n\ + ldr r1, _080CB490 @ =gSprites\n\ + lsls r0, r4, 4\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + strh r5, [r0, 0x24]\n\ + strh r5, [r0, 0x26]\n\ + ldrh r0, [r6, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x8]\n\ + b _080CB4C2\n\ + .align 2, 0\n\ +_080CB484: .4byte gBattleAnimArgs\n\ +_080CB488: .4byte 0x0000ffff\n\ +_080CB48C: .4byte gTasks\n\ +_080CB490: .4byte gSprites\n\ +_080CB494:\n\ + ldr r1, _080CB4C8 @ =gTasks\n\ + lsls r2, r3, 2\n\ + adds r0, r2, r3\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r4, 0x8\n\ + ldrsh r0, [r0, r4]\n\ + adds r4, r1, 0\n\ + cmp r0, 0\n\ + beq _080CB4C2\n\ +_080CB4A8:\n\ + adds r1, r2, r3\n\ + lsls r1, 3\n\ + adds r1, r4\n\ + ldrh r0, [r1, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x8]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x3\n\ + bne _080CB4C2\n\ + adds r0, r3, 0\n\ + bl DestroyAnimVisualTask\n\ +_080CB4C2:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080CB4C8: .4byte gTasks\n\ + .syntax divided\n"); +} +#endif
\ No newline at end of file |