diff options
-rw-r--r-- | asm/battle_anim_80CA710.s | 1007 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 455 |
2 files changed, 454 insertions, 1008 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index a2e82b0ad..b3b9237ab 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,1013 +6,6 @@ .text - - 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 oamt_set_x3A_32 - 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 oamt_set_x3A_32 - 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 oamt_set_x3A_32 - 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 oamt_set_x3A_32 - 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 oamt_set_x3A_32 - 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 @ =gBattleAnimEnemyMonIndex - 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 oamt_set_x3A_32 -_080CD594: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CD59C: .4byte gBattleAnimEnemyMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 oamt_set_x3A_32 - ldr r0, _080CD818 @ =sub_8078458 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD80C: .4byte gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 oamt_set_x3A_32 - ldr r0, _080CD8F4 @ =sub_8078458 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080CD8E8: .4byte gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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 @ =gBattleAnimPlayerMonIndex - 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 gBattleAnimPlayerMonIndex -_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} diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c index 7c66203c7..b7a45e37c 100755 --- a/src/battle_anim_80CA710.c +++ b/src/battle_anim_80CA710.c @@ -23,6 +23,8 @@ extern struct SpriteTemplate gSpriteTemplate_83D6884; extern s16 gUnknown_03000728[]; extern s8 gUnknown_083D680C[11][3]; extern u16 gUnknown_083D6984[]; +extern s8 gUnknown_083D6DDC[4][2]; +extern u8 gObjectBankIDs[]; void sub_80CA768(struct Sprite* sprite); void sub_80CA8B4(struct Sprite* sprite); @@ -54,6 +56,19 @@ 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); s16 sub_80CC338(struct Sprite* sprite); @@ -78,6 +93,7 @@ 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); void move_anim_8074EE0(struct Sprite *sprite); bool8 sub_8078718(struct Sprite *sprite); @@ -86,6 +102,9 @@ 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_80CC358(struct Task* task, u8 taskId); void sub_80CA710(struct Sprite* sprite) @@ -2910,4 +2929,438 @@ void sub_80CD394(struct Sprite* sprite) sprite->data0 += sprite->data1; if (++sprite->data1 > 0x3C) move_anim_8074EE0(sprite); -}
\ No newline at end of file +} + +void sub_80CD3E0(struct Sprite* sprite) +{ + sprite->pos1.x -= 32; + sprite->pos1.y -= 32; + sprite->data0 = 20; + sprite->callback = sub_80782D8; + oamt_set_x3A_32(sprite, sub_80CD408); +} + +void sub_80CD408(struct Sprite* sprite) +{ + switch(sprite->data5 & 1) + { + case 0: + sprite->data0 = 1; + sprite->callback = sub_80782D8; + oamt_set_x3A_32(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; + oamt_set_x3A_32(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; + oamt_set_x3A_32(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; + oamt_set_x3A_32(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(gBattleAnimEnemyMonIndex, 2) + a; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + b; + sprite->callback = sub_8078B34; + oamt_set_x3A_32(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(gBattleAnimPlayerMonIndex)) ? 2 : -2; + sprite->data2 = 0; + sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + oamt_set_x3A_32(sprite, sub_80CD81C); + sprite->callback = sub_8078458; +} + +void sub_80CD81C(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sub_8078E70(sprite->data3, 0); + sprite->data4 = (sprite->data6 = GetBankSide(gBattleAnimPlayerMonIndex)) ? 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(gBattleAnimPlayerMonIndex)) ? -3 : 3; + sprite->data2 = 0; + sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + oamt_set_x3A_32(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[gBattleAnimPlayerMonIndex]; + sprite->data6 = GetBankSide(gBattleAnimPlayerMonIndex); + if (GetBankSide(gBattleAnimPlayerMonIndex)) + { + 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[gBattleAnimPlayerMonIndex]; + sprite->data3 = GetBankSide(gBattleAnimPlayerMonIndex); + 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[gBattleAnimPlayerMonIndex]; + a = GetBankSide(gBattleAnimPlayerMonIndex); + 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]; + task->data[6] = 1; + task->data[3]--; + } + 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]) ? 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; + } +} */ |