diff options
Diffstat (limited to 'asm/current.s')
-rwxr-xr-x | asm/current.s | 2390 |
1 files changed, 2390 insertions, 0 deletions
diff --git a/asm/current.s b/asm/current.s new file mode 100755 index 000000000..ba5f5c842 --- /dev/null +++ b/asm/current.s @@ -0,0 +1,2390 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ current + + thumb_func_start sub_80D648C +sub_80D648C: @ 80D648C + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080D6500 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r6, _080D6504 @ =gBattleAnimBankTarget + ldrb r0, [r6] + 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, [r6] + 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, [r5, 0x4] + strh r0, [r4, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x3A] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x3C] + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080D6508 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D650C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r1, _080D6510 @ =sub_80D6514 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6500: .4byte gBattleAnimArgs +_080D6504: .4byte gBattleAnimBankTarget +_080D6508: .4byte 0x000003ff +_080D650C: .4byte 0xfffffc00 +_080D6510: .4byte sub_80D6514 + thumb_func_end sub_80D648C + + thumb_func_start sub_80D6514 +sub_80D6514: @ 80D6514 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D657E + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080D6584 + 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] + b _080D6584 +_080D657E: + adds r0, r4, 0 + bl move_anim_8072740 +_080D6584: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D6514 + + thumb_func_start sub_80D658C +sub_80D658C: @ 80D658C + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x38] + subs r0, 0x1 + strh r0, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D65C4 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + 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 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x36] + strh r0, [r3, 0x38] +_080D65C4: + ldrh r0, [r3, 0x34] + subs r1, r0, 0x1 + strh r1, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080D65D6 + adds r0, r3, 0 + bl move_anim_8072740 +_080D65D6: + pop {r0} + bx r0 + thumb_func_end sub_80D658C + + thumb_func_start sub_80D65DC +sub_80D65DC: @ 80D65DC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080D6644 @ =gMain + ldr r1, _080D6648 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D65FE + ldr r0, _080D664C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D6606 +_080D65FE: + ldr r1, _080D6650 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080D6606: + ldr r5, _080D664C @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080D6650 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4] + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x36] + strh r0, [r6, 0x38] + ldr r0, _080D6654 @ =sub_80D658C + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6644: .4byte gMain +_080D6648: .4byte 0x0000043d +_080D664C: .4byte gBattleAnimBankTarget +_080D6650: .4byte gBattleAnimArgs +_080D6654: .4byte sub_80D658C + thumb_func_end sub_80D65DC + + thumb_func_start sub_80D6658 +sub_80D6658: @ 80D6658 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r1, _080D6674 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080D667C + ldr r0, _080D6678 @ =gBattleAnimBankTarget + b _080D667E + .align 2, 0 +_080D6674: .4byte gBattleAnimArgs +_080D6678: .4byte gBattleAnimBankTarget +_080D667C: + ldr r0, _080D670C @ =gBattleAnimBankAttacker +_080D667E: + ldrb r6, [r0] + ldr r0, _080D6710 @ =gMain + ldr r3, _080D6714 @ =0x0000043d + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D669C + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D66A4 +_080D669C: + ldr r1, _080D6718 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080D66A4: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080D6718 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x2] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + ldr r0, _080D671C @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x3C] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080D6720 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D6724 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r1, _080D6728 @ =sub_80D672C + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D670C: .4byte gBattleAnimBankAttacker +_080D6710: .4byte gMain +_080D6714: .4byte 0x0000043d +_080D6718: .4byte gBattleAnimArgs +_080D671C: .4byte 0x00007fff +_080D6720: .4byte 0x000003ff +_080D6724: .4byte 0xfffffc00 +_080D6728: .4byte sub_80D672C + thumb_func_end sub_80D6658 + + thumb_func_start sub_80D672C +sub_80D672C: @ 80D672C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080D6782 + 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] +_080D6782: + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080D6794 + adds r0, r4, 0 + bl move_anim_8072740 +_080D6794: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D672C + + thumb_func_start sub_80D679C +sub_80D679C: @ 80D679C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8078764 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080D67D8 @ =gBattleAnimArgs + movs r5, 0x6 + ldrsh r0, [r3, r5] + lsls r0, 2 + adds r1, r0 + ldr r5, _080D67DC @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _080D67E0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x6 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + bne _080D67E4 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + b _080D67F2 + .align 2, 0 +_080D67D8: .4byte gBattleAnimArgs +_080D67DC: .4byte 0x000003ff +_080D67E0: .4byte 0xfffffc00 +_080D67E4: + cmp r0, 0x2 + bne _080D67F6 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x20 +_080D67F2: + orrs r1, r0 + strb r1, [r4, 0x3] +_080D67F6: + ldr r0, _080D6810 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080D6814 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D6818 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6810: .4byte gBattleAnimArgs +_080D6814: .4byte sub_80782D8 +_080D6818: .4byte move_anim_8072740 + thumb_func_end sub_80D679C + + thumb_func_start sub_80D681C +sub_80D681C: @ 80D681C + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080D6864 @ =gBattleAnimBankTarget + ldrb r0, [r6] + movs r1, 0 + bl sub_8077ABC + ldr r1, _080D6868 @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + ldr r5, _080D686C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x8] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldr r0, _080D6870 @ =sub_80D6874 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6864: .4byte gBattleAnimBankTarget +_080D6868: .4byte gTasks +_080D686C: .4byte gBattleAnimArgs +_080D6870: .4byte sub_80D6874 + thumb_func_end sub_80D681C + + thumb_func_start sub_80D6874 +sub_80D6874: @ 80D6874 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r5, 0 + movs r7, 0 + ldr r1, _080D68B4 @ =gTasks + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrb r2, [r0, 0xC] + str r2, [sp] + ldrh r4, [r0, 0x8] + ldrh r6, [r0, 0xA] + movs r3, 0xC + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0 + bne _080D68B8 + movs r0, 0 + mov r8, r0 + movs r2, 0x1 + movs r1, 0x10 + mov r12, r1 + b _080D68C2 + .align 2, 0 +_080D68B4: .4byte gTasks +_080D68B8: + movs r2, 0x10 + mov r12, r2 + movs r3, 0x8 + mov r8, r3 + movs r2, 0x4 +_080D68C2: + mov r0, r9 + lsls r1, r0, 2 + adds r0, r1, r0 + lsls r0, 3 + add r0, r10 + movs r3, 0x1C + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0xA + bhi _080D69B8 + lsls r0, 2 + ldr r1, _080D68E0 @ =_080D68E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D68E0: .4byte _080D68E4 + .align 2, 0 +_080D68E4: + .4byte _080D6910 + .4byte _080D69B8 + .4byte _080D6924 + .4byte _080D69B8 + .4byte _080D6944 + .4byte _080D69B8 + .4byte _080D695A + .4byte _080D69B8 + .4byte _080D697C + .4byte _080D69B8 + .4byte _080D69B0 +_080D6910: + ldr r0, _080D6920 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + mov r4, r12 + lsls r3, r4, 16 + b _080D6992 + .align 2, 0 +_080D6920: .4byte gSpriteTemplate_83D9938 +_080D6924: + mov r0, r12 + lsls r3, r0, 17 + mov r1, r8 + adds r0, r1, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080D6940 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080D6992 + .align 2, 0 +_080D6940: .4byte gSpriteTemplate_83D9938 +_080D6944: + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + lsls r3, r0, 1 + adds r3, r0 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _080D6986 +_080D695A: + mov r0, r12 + lsls r3, r0, 18 + lsls r0, r2, 1 + adds r0, r2 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080D6978 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080D6992 + .align 2, 0 +_080D6978: .4byte gSpriteTemplate_83D9938 +_080D697C: + mov r1, r12 + lsls r0, r1, 16 + asrs r0, 16 + lsls r3, r0, 2 + adds r3, r0 +_080D6986: + ldr r0, _080D69AC @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + lsls r3, 16 +_080D6992: + asrs r3, 16 + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _080D69B8 + .align 2, 0 +_080D69AC: .4byte gSpriteTemplate_83D9938 +_080D69B0: + mov r0, r9 + bl DestroyAnimVisualTask + b _080D69FC +_080D69B8: + cmp r7, 0 + beq _080D69EC + ldr r4, _080D6A0C @ =gSprites + lsls r3, r5, 4 + adds r3, r5 + lsls r3, 2 + adds r0, r3, r4 + ldrh r5, [r0, 0x4] + lsls r2, r5, 22 + lsrs r2, 22 + add r2, r8 + ldr r6, _080D6A10 @ =0x000003ff + adds r1, r6, 0 + ands r2, r1 + ldr r1, _080D6A14 @ =0xfffffc00 + ands r1, r5 + orrs r1, r2 + strh r1, [r0, 0x4] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, 0x2E] + adds r4, 0x1C + adds r3, r4 + ldr r1, [r3] + bl _call_via_r1 +_080D69EC: + ldr r0, _080D6A18 @ =gTasks + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + strh r0, [r1, 0x1C] +_080D69FC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6A0C: .4byte gSprites +_080D6A10: .4byte 0x000003ff +_080D6A14: .4byte 0xfffffc00 +_080D6A18: .4byte gTasks + thumb_func_end sub_80D6874 + + thumb_func_start sub_80D6A1C +sub_80D6A1C: @ 80D6A1C + push {lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080D6A3E + ldrb r1, [r3, 0x1] + movs r2, 0x3F + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r2, r0 + strb r2, [r3, 0x3] + b _080D6A52 +_080D6A3E: + ldrb r2, [r3, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r1, r0 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r3, 0x3] +_080D6A52: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bne _080D6A66 + adds r0, r3, 0 + bl DestroySprite +_080D6A66: + pop {r0} + bx r0 + thumb_func_end sub_80D6A1C + + thumb_func_start sub_80D6A6C +sub_80D6A6C: @ 80D6A6C + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080D6AD4 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + ldr r0, _080D6AD8 @ =gBattleAnimSpriteTemplate_83D9950 + adds r1, 0x20 + lsls r1, 16 + asrs r1, 16 + movs r7, 0x22 + ldrsh r2, [r4, r7] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080D6ADC @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r6, r2, r3 + ldrh r5, [r6, 0x4] + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r7, _080D6AE0 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080D6AE4 @ =0xfffffc00 + ands r0, r5 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080D6AE8 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + adds r3, 0x1C + adds r2, r3 + ldr r0, _080D6AEC @ =sub_80D6AF0 + str r0, [r2] + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6AD4: .4byte gBattleAnimArgs +_080D6AD8: .4byte gBattleAnimSpriteTemplate_83D9950 +_080D6ADC: .4byte gSprites +_080D6AE0: .4byte 0x000003ff +_080D6AE4: .4byte 0xfffffc00 +_080D6AE8: .4byte gAnimVisualTaskCount +_080D6AEC: .4byte sub_80D6AF0 + thumb_func_end sub_80D6A6C + + thumb_func_start sub_80D6AF0 +sub_80D6AF0: @ 80D6AF0 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080D6B24 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + 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 + mov r1, r12 + strb r0, [r1] +_080D6B24: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080D6B38 + adds r0, r3, 0 + bl move_anim_8072740 +_080D6B38: + pop {r0} + bx r0 + thumb_func_end sub_80D6AF0 + + thumb_func_start sub_80D6B3C +sub_80D6B3C: @ 80D6B3C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D6B5C @ =gTasks + adds r5, r1, r0 + ldr r0, _080D6B60 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6B68 + ldr r4, _080D6B64 @ =gBattleAnimBankAttacker + b _080D6B6A + .align 2, 0 +_080D6B5C: .4byte gTasks +_080D6B60: .4byte gBattleAnimArgs +_080D6B64: .4byte gBattleAnimBankAttacker +_080D6B68: + ldr r4, _080D6BAC @ =gBattleAnimBankTarget +_080D6B6A: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x26] + ldr r2, _080D6BB0 @ =gBattleAnimArgs + ldrh r0, [r2, 0x2] + movs r1, 0 + strh r0, [r5, 0x14] + strh r1, [r5, 0x16] + strh r1, [r5, 0x18] + strh r1, [r5, 0x1A] + strh r1, [r5, 0x1C] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x1E] + strh r1, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x22] + ldr r0, _080D6BB4 @ =sub_80D6BB8 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6BAC: .4byte gBattleAnimBankTarget +_080D6BB0: .4byte gBattleAnimArgs +_080D6BB4: .4byte sub_80D6BB8 + thumb_func_end sub_80D6B3C + + thumb_func_start sub_80D6BB8 +sub_80D6BB8: @ 80D6BB8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r2, r6, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080D6CA0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D6CB8 + ldrh r0, [r5, 0x20] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x22 + ldrsh r1, [r5, r2] + cmp r0, r1 + ble _080D6CC6 + strh r7, [r5, 0x20] + ldr r0, _080D6CA4 @ =gSpriteTemplate_83D99B8 + movs r3, 0x24 + ldrsh r1, [r5, r3] + movs r3, 0x26 + ldrsh r2, [r5, r3] + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080D6CC6 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _080D6CA8 @ =gSprites + adds r4, r0 + ldr r1, _080D6CAC @ =gUnknown_083D9968 + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, 0x20] + adds r3, r0 + strh r3, [r4, 0x20] + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r4, 0x22] + adds r2, r0 + strh r2, [r4, 0x22] + movs r1, 0x18 + ldrsh r0, [r5, r1] + lsls r1, r0, 2 + adds r1, r0 + movs r0, 0x28 + subs r0, r1 + strh r0, [r4, 0x2E] + strh r3, [r4, 0x30] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + ldrh r0, [r5, 0x26] + strh r0, [r4, 0x36] + strh r6, [r4, 0x38] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080D6CB0 @ =sub_80D6D00 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6CB4 @ =sub_8078600 + str r0, [r4, 0x1C] + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + strh r0, [r5, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080D6C70 + strh r7, [r5, 0x1A] +_080D6C70: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1E + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080D6C92 + strh r7, [r5, 0x1C] + ldrh r1, [r5, 0x18] + movs r3, 0x18 + ldrsh r0, [r5, r3] + cmp r0, 0x5 + bgt _080D6C92 + adds r0, r1, 0x1 + strh r0, [r5, 0x18] +_080D6C92: + ldrh r0, [r5, 0x16] + adds r0, 0x1 + strh r0, [r5, 0x16] + ldrh r0, [r5, 0x14] + subs r0, 0x1 + strh r0, [r5, 0x14] + b _080D6CC6 + .align 2, 0 +_080D6CA0: .4byte gTasks +_080D6CA4: .4byte gSpriteTemplate_83D99B8 +_080D6CA8: .4byte gSprites +_080D6CAC: .4byte gUnknown_083D9968 +_080D6CB0: .4byte sub_80D6D00 +_080D6CB4: .4byte sub_8078600 +_080D6CB8: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D6CC6 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D6CC6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D6BB8 + + thumb_func_start sub_80D6CCC +sub_80D6CCC: @ 80D6CCC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D6CF4 + ldr r2, _080D6CFC @ =gTasks + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x16] + subs r1, 0x1 + strh r1, [r0, 0x16] + adds r0, r4, 0 + bl DestroySprite +_080D6CF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6CFC: .4byte gTasks + thumb_func_end sub_80D6CCC + + thumb_func_start sub_80D6D00 +sub_80D6D00: @ 80D6D00 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r0, _080D6D14 @ =sub_80D6CCC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6D14: .4byte sub_80D6CCC + thumb_func_end sub_80D6D00 + + thumb_func_start sub_80D6D18 +sub_80D6D18: @ 80D6D18 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D6D2C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6D34 + ldr r4, _080D6D30 @ =gBattleAnimBankAttacker + b _080D6D36 + .align 2, 0 +_080D6D2C: .4byte gBattleAnimArgs +_080D6D30: .4byte gBattleAnimBankAttacker +_080D6D34: + ldr r4, _080D6D64 @ =gBattleAnimBankTarget +_080D6D36: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080D6D68 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6D6C @ =sub_80785E4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6D64: .4byte gBattleAnimBankTarget +_080D6D68: .4byte move_anim_8074EE0 +_080D6D6C: .4byte sub_80785E4 + thumb_func_end sub_80D6D18 + + thumb_func_start sub_80D6D70 +sub_80D6D70: @ 80D6D70 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D6D84 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6D8C + ldr r4, _080D6D88 @ =gBattleAnimBankAttacker + b _080D6D8E + .align 2, 0 +_080D6D84: .4byte gBattleAnimArgs +_080D6D88: .4byte gBattleAnimBankAttacker +_080D6D8C: + ldr r4, _080D6DC8 @ =gBattleAnimBankTarget +_080D6D8E: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080D6DCC @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x24] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x26] + ldr r1, _080D6DD0 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6DD4 @ =sub_8078600 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6DC8: .4byte gBattleAnimBankTarget +_080D6DCC: .4byte gBattleAnimArgs +_080D6DD0: .4byte move_anim_8072740 +_080D6DD4: .4byte sub_8078600 + thumb_func_end sub_80D6D70 + + thumb_func_start sub_80D6DD8 +sub_80D6DD8: @ 80D6DD8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r4, _080D6E30 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + movs r0, 0x10 + strh r0, [r5, 0x3C] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D6E26 + movs r1, 0x3C + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x3C] +_080D6E26: + ldr r0, _080D6E34 @ =sub_80D6E38 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6E30: .4byte gBattleAnimBankAttacker +_080D6E34: .4byte sub_80D6E38 + thumb_func_end sub_80D6DD8 + + thumb_func_start sub_80D6E38 +sub_80D6E38: @ 80D6E38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D6E4A + cmp r0, 0x1 + beq _080D6E60 + b _080D6E90 +_080D6E4A: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080D6E90 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080D6E90 +_080D6E60: + ldrh r2, [r4, 0x3C] + ldrh r1, [r4, 0x20] + adds r0, r2, r1 + strh r0, [r4, 0x20] + ldr r3, _080D6E98 @ =gSprites + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + adds r2, r1 + strh r2, [r0, 0x24] + ldrh r0, [r4, 0x20] + adds r0, 0x50 + lsls r0, 16 + movs r1, 0xC8 + lsls r1, 17 + cmp r0, r1 + bls _080D6E90 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080D6E90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6E98: .4byte gSprites + thumb_func_end sub_80D6E38 + + thumb_func_start sub_80D6E9C +sub_80D6E9C: @ 80D6E9C + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080D6EC0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080D6F30 + cmp r0, 0x1 + bgt _080D6EC4 + cmp r0, 0 + beq _080D6ED0 + b _080D7000 + .align 2, 0 +_080D6EC0: .4byte gTasks +_080D6EC4: + cmp r0, 0x2 + beq _080D6F8C + cmp r0, 0x3 + bne _080D6ECE + b _080D6FE0 +_080D6ECE: + b _080D7000 +_080D6ED0: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x26] + ldr r4, _080D6F04 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D6F0C + ldr r0, _080D6F08 @ =0x0000ffe0 + strh r0, [r5, 0x24] + movs r0, 0x2 + b _080D6F12 + .align 2, 0 +_080D6F04: .4byte gBattleAnimBankAttacker +_080D6F08: .4byte 0x0000ffe0 +_080D6F0C: + movs r0, 0x20 + strh r0, [r5, 0x24] + ldr r0, _080D6F28 @ =0x0000fffe +_080D6F12: + strh r0, [r5, 0x22] + ldr r2, _080D6F2C @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r5, 0x24] + strh r1, [r0, 0x24] + b _080D6FD2 + .align 2, 0 +_080D6F28: .4byte 0x0000fffe +_080D6F2C: .4byte gSprites +_080D6F30: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D7000 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r4, _080D6F88 @ =gSprites + movs r1, 0x26 + ldrsh r0, [r5, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r5, 0x24] + movs r2, 0x24 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D6FD2 + ldrh r2, [r5, 0x22] + adds r2, r1, r2 + strh r2, [r5, 0x24] + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + b _080D7000 + .align 2, 0 +_080D6F88: .4byte gSprites +_080D6F8C: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D7000 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r1, _080D6FDC @ =gSprites + movs r2, 0x26 + ldrsh r0, [r5, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080D7000 +_080D6FD2: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D7000 + .align 2, 0 +_080D6FDC: .4byte gSprites +_080D6FE0: + ldr r2, _080D7008 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080D7000: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D7008: .4byte gSprites + thumb_func_end sub_80D6E9C + + thumb_func_start sub_80D700C +sub_80D700C: @ 80D700C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080D7030 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080D7026 + b _080D714C +_080D7026: + cmp r0, 0x1 + bgt _080D7034 + cmp r0, 0 + beq _080D703C + b _080D718E + .align 2, 0 +_080D7030: .4byte gTasks +_080D7034: + cmp r0, 0x2 + bne _080D703A + b _080D7180 +_080D703A: + b _080D718E +_080D703C: + ldr r4, _080D707C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080D7052 + movs r1, 0x1 +_080D7052: + movs r6, 0 + strh r1, [r5, 0xA] + ldr r0, _080D7080 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r2, [r0, r1] + adds r3, r0, 0 + cmp r2, 0 + beq _080D7088 + cmp r2, 0x4 + beq _080D70B0 + ldrh r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D70E8 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0xE] + ldr r0, _080D7084 @ =0x0000fff0 + b _080D70F0 + .align 2, 0 +_080D707C: .4byte gBattleAnimBankAttacker +_080D7080: .4byte gBattleAnimArgs +_080D7084: .4byte 0x0000fff0 +_080D7088: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 7 + adds r0, 0x78 + strh r0, [r5, 0x10] + b _080D7126 +_080D70B0: + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r1, 7 + movs r0, 0x78 + subs r0, r1 + strh r0, [r5, 0xE] + ldr r4, _080D70E4 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xA + ldrsh r1, [r5, r2] + lsls r1, 5 + subs r0, r1 + strh r0, [r5, 0x10] + b _080D7126 + .align 2, 0 +_080D70E4: .4byte gBattleAnimBankTarget +_080D70E8: + ldr r0, _080D710C @ =0x0000fff0 + strh r0, [r5, 0xE] + movs r0, 0x80 + lsls r0, 1 +_080D70F0: + strh r0, [r5, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080D7110 + movs r2, 0 + ldrsh r0, [r3, r2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + movs r0, 0x50 + subs r0, r1 + strh r0, [r5, 0x12] + b _080D7126 + .align 2, 0 +_080D710C: .4byte 0x0000fff0 +_080D7110: + movs r0, 0 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x28 + strh r0, [r5, 0x12] + ldrh r1, [r5, 0xE] + ldrh r0, [r5, 0x10] + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] +_080D7126: + movs r2, 0xE + ldrsh r1, [r5, r2] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _080D713C + movs r1, 0 + movs r0, 0x1 + strh r0, [r5, 0xA] + strh r1, [r5, 0x14] + b _080D7178 +_080D713C: + ldr r0, _080D7148 @ =0x0000ffff + strh r0, [r5, 0xA] + movs r0, 0x3 + strh r0, [r5, 0x14] + b _080D7178 + .align 2, 0 +_080D7148: .4byte 0x0000ffff +_080D714C: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + cmp r0, 0 + ble _080D718E + movs r0, 0 + strh r0, [r5, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80D7194 + lsls r0, 24 + cmp r0, 0 + bne _080D7178 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80D7194 + lsls r0, 24 + cmp r0, 0 + beq _080D718E +_080D7178: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D718E +_080D7180: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D718E + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080D718E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D700C + + thumb_func_start sub_80D7194 +sub_80D7194: @ 80D7194 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10 + movs r2, 0xE + ldrsh r1, [r4, r2] + movs r3, 0x12 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080D71CA + ldr r1, _080D7224 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x3A] + movs r1, 0x7 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080D71CA: + ldrh r1, [r4, 0xA] + ldrh r5, [r4, 0x14] + adds r0, r1, r5 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bge _080D71DC + movs r0, 0x3 + strh r0, [r4, 0x14] +_080D71DC: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + ble _080D71E8 + movs r0, 0 + strh r0, [r4, 0x14] +_080D71E8: + movs r3, 0xA + ldrsh r0, [r4, r3] + lsls r0, 4 + ldrh r5, [r4, 0xE] + adds r2, r0, r5 + strh r2, [r4, 0xE] + lsls r0, r1, 16 + asrs r3, r0, 16 + cmp r3, 0x1 + bne _080D7208 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x10 + ldrsh r1, [r4, r5] + cmp r0, r1 + bge _080D721C +_080D7208: + movs r0, 0x1 + negs r0, r0 + cmp r3, r0 + bne _080D7228 + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x10 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _080D7228 +_080D721C: + movs r0, 0x1 + b _080D722A + .align 2, 0 +_080D7220: .4byte gSpriteTemplate_83D9B10 +_080D7224: .4byte gSprites +_080D7228: + movs r0, 0 +_080D722A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D7194 + + thumb_func_start sub_80D7230 +sub_80D7230: @ 80D7230 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080D7270 + ldr r3, _080D7278 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D7270: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7278: .4byte gTasks + thumb_func_end sub_80D7230 + + thumb_func_start sub_80D727C +sub_80D727C: @ 80D727C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D728E + cmp r0, 0x1 + beq _080D72C0 + b _080D72D4 +_080D728E: + ldr r4, _080D72BC @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080D72D4 + .align 2, 0 +_080D72BC: .4byte gBattleAnimBankAttacker +_080D72C0: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D72D4 + adds r0, r5, 0 + bl move_anim_8074EE0 +_080D72D4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D727C + + thumb_func_start sub_80D72DC +sub_80D72DC: @ 80D72DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D7300 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080D72F6 + b _080D7468 +_080D72F6: + lsls r0, 2 + ldr r1, _080D7304 @ =_080D7308 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D7300: .4byte gTasks +_080D7304: .4byte _080D7308 + .align 2, 0 +_080D7308: + .4byte _080D731C + .4byte _080D73AC + .4byte _080D73E8 + .4byte _080D7444 + .4byte _080D7454 +_080D731C: + ldr r4, _080D73A0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + ldr r0, _080D73A4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + movs r2, 0x1C + ldrsh r0, [r5, r2] + movs r2, 0x14 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x5 + bl __divsi3 + strh r0, [r5, 0x1A] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080D73A8 @ =0x0000ffff + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + subs r0, 0x4C + bl sub_8076F98 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x20] + movs r0, 0x3F + bl sub_8076F98 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x24] + movs r1, 0x22 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + b _080D7466 + .align 2, 0 +_080D73A0: .4byte gBattleAnimBankAttacker +_080D73A4: .4byte gBattleAnimBankTarget +_080D73A8: .4byte 0x0000ffff +_080D73AC: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + ble _080D73DC + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80D7470 + lsls r0, 24 + cmp r0, 0 + beq _080D73DC + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bne _080D73D6 + movs r0, 0x3 + b _080D73DA +_080D73D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 +_080D73DA: + strh r0, [r5, 0x8] +_080D73DC: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D7468 + b _080D745E +_080D73E8: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D73F6 + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] +_080D73F6: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + movs r3, 0 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080D7468 + strh r3, [r5, 0xA] + ldrh r1, [r5, 0xC] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080D7422 + movs r0, 0x4 + strh r0, [r5, 0x16] + movs r0, 0x44 + strh r0, [r5, 0x18] + strh r3, [r5, 0x10] + strh r2, [r5, 0x12] + b _080D7432 +_080D7422: + movs r0, 0x44 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080D7440 @ =0x0000ffff + strh r0, [r5, 0x12] +_080D7432: + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D7464 + movs r0, 0x4 + b _080D7466 + .align 2, 0 +_080D7440: .4byte 0x0000ffff +_080D7444: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D7468 + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080D7468 +_080D7454: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D7464 +_080D745E: + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] + b _080D7468 +_080D7464: + movs r0, 0x1 +_080D7466: + strh r0, [r5, 0x8] +_080D7468: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D72DC + + thumb_func_start sub_80D7470 +sub_80D7470: @ 80D7470 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40 + movs r2, 0x14 + ldrsh r1, [r4, r2] + movs r3, 0x16 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080D74DC + ldr r1, _080D753C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldrh r6, [r4, 0x10] + adds r1, r6 + ldr r6, _080D7540 @ =0x000003ff + adds r0, r6, 0 + ands r1, r0 + ldr r0, _080D7544 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _080D74C4 + movs r0, 0x7 + strh r0, [r4, 0x10] +_080D74C4: + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x7 + ble _080D74D0 + movs r0, 0 + strh r0, [r4, 0x10] +_080D74D0: + strh r5, [r3, 0x3A] + movs r0, 0x3 + strh r0, [r3, 0x3C] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080D74DC: + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080D74FE + movs r5, 0x12 + ldrsh r0, [r4, r5] + cmp r0, 0 + ble _080D74FE + ldrh r1, [r4, 0x26] + ldrh r6, [r4, 0x24] + adds r1, r6 + strh r1, [r4, 0x24] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl PlaySE12WithPanning +_080D74FE: + movs r0, 0x12 + ldrsh r3, [r4, r0] + ldrh r2, [r4, 0x16] + cmp r3, 0 + bge _080D7514 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x18 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _080D7524 +_080D7514: + cmp r3, 0 + ble _080D7548 + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0x18 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080D7548 +_080D7524: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x1A] + ldrh r1, [r4, 0x14] + adds r0, r1 + strh r0, [r4, 0x14] + movs r0, 0x1 + b _080D7554 + .align 2, 0 +_080D7538: .4byte gSpriteTemplate_83D9B40 +_080D753C: .4byte gSprites +_080D7540: .4byte 0x000003ff +_080D7544: .4byte 0xfffffc00 +_080D7548: + movs r3, 0x12 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r2, r0 + strh r0, [r4, 0x16] + movs r0, 0 +_080D7554: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80D7470 + + thumb_func_start sub_80D755C +sub_80D755C: @ 80D755C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080D7592 + ldr r3, _080D7598 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080D7592: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7598: .4byte gTasks + thumb_func_end sub_80D755C + + thumb_func_start sub_80D759C +sub_80D759C: @ 80D759C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D75C0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080D7618 + cmp r0, 0x1 + bgt _080D75C4 + cmp r0, 0 + beq _080D75CA + b _080D764E + .align 2, 0 +_080D75C0: .4byte gTasks +_080D75C4: + cmp r0, 0x2 + beq _080D7640 + b _080D764E +_080D75CA: + ldr r0, _080D7614 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + cmp r0, 0x10 + ble _080D75F4 + adds r2, r0, 0 +_080D75E4: + adds r1, r2, 0 + subs r1, 0x20 + adds r2, r1, 0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x10 + bgt _080D75E4 + strh r1, [r5, 0x24] +_080D75F4: + ldr r4, _080D7614 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_8079E90 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r5, 0x20] + b _080D7638 + .align 2, 0 +_080D7614: .4byte gBattleAnimBankTarget +_080D7618: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D764E + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80D7654 + lsls r0, 24 + cmp r0, 0 + beq _080D764E +_080D7638: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D764E +_080D7640: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D764E + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D764E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D759C + + thumb_func_start sub_80D7654 +sub_80D7654: @ 80D7654 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0 + movs r2, 0x22 + ldrsh r1, [r4, r2] + movs r3, 0x24 + ldrsh r2, [r4, r3] + ldrh r3, [r4, 0x20] + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080D7698 + ldr r3, _080D76B4 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080D76B8 @ =sub_80D76C4 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x3A] + movs r1, 0xA + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] +_080D7698: + ldrh r2, [r4, 0x24] + movs r0, 0x24 + ldrsh r1, [r4, r0] + movs r3, 0x26 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080D76BC + adds r0, r2, 0 + adds r0, 0x20 + strh r0, [r4, 0x24] + movs r0, 0 + b _080D76BE + .align 2, 0 +_080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0 +_080D76B4: .4byte gSprites +_080D76B8: .4byte sub_80D76C4 +_080D76BC: + movs r0, 0x1 +_080D76BE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D7654 + + .align 2, 0 @ Don't pad with nop. |