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