diff options
Diffstat (limited to 'asm/ground.s')
-rwxr-xr-x | asm/ground.s | 1790 |
1 files changed, 1790 insertions, 0 deletions
diff --git a/asm/ground.s b/asm/ground.s new file mode 100755 index 000000000..c7207331d --- /dev/null +++ b/asm/ground.s @@ -0,0 +1,1790 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ ground + + thumb_func_start sub_80E0F1C +sub_80E0F1C: @ 80E0F1C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E0F74 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080E0F78 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080E0F7C @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080E0F80 @ =sub_80E0F84 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0F74: .4byte gBattleAnimBankAttacker +_080E0F78: .4byte gBattleAnimBankTarget +_080E0F7C: .4byte 0x0000ffd8 +_080E0F80: .4byte sub_80E0F84 + thumb_func_end sub_80E0F1C + + thumb_func_start sub_80E0F84 +sub_80E0F84: @ 80E0F84 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E0FD8 + 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, 0x14 + strh r0, [r5, 0x2E] + ldr r4, _080E0FE0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + movs r0, 0x28 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080E0FE4 @ =sub_80E0FE8 + str r0, [r5, 0x1C] +_080E0FD8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0FE0: .4byte gBattleAnimBankAttacker +_080E0FE4: .4byte sub_80E0FE8 + thumb_func_end sub_80E0F84 + + thumb_func_start sub_80E0FE8 +sub_80E0FE8: @ 80E0FE8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E0FFC + adds r0, r4, 0 + bl move_anim_8072740 +_080E0FFC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E0FE8 + + thumb_func_start sub_80E1004 +sub_80E1004: @ 80E1004 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080E1064 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E1024 + ldr r1, _080E1068 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080E1024: + ldr r4, _080E1068 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080E106C @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080E1070 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080E1074 @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1064: .4byte gBattleAnimBankAttacker +_080E1068: .4byte gBattleAnimArgs +_080E106C: .4byte gBattleAnimBankTarget +_080E1070: .4byte sub_8078B34 +_080E1074: .4byte move_anim_8072740 + thumb_func_end sub_80E1004 + + thumb_func_start sub_80E1078 +sub_80E1078: @ 80E1078 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r4, _080E10F8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077EE4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077EE4 + lsls r0, 24 + lsrs r7, r0, 24 + bl Random + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + bl Random + ands r4, r0 + adds r1, r5, 0 + cmp r1, 0x10 + ble _080E10C0 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 +_080E10C0: + lsls r0, r4, 16 + asrs r1, r0, 16 + cmp r1, 0x10 + ble _080E10D0 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080E10D0: + ldr r0, _080E10FC @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r6, 0x2E] + mov r1, r8 + adds r0, r1, r5 + strh r0, [r6, 0x32] + adds r0, r7, r4 + strh r0, [r6, 0x36] + ldr r0, _080E1100 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080E1104 @ =move_anim_8074EE0 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E10F8: .4byte gBattleAnimBankTarget +_080E10FC: .4byte gBattleAnimArgs +_080E1100: .4byte sub_8078B34 +_080E1104: .4byte move_anim_8074EE0 + thumb_func_end sub_80E1078 + + thumb_func_start sub_80E1108 +sub_80E1108: @ 80E1108 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x1 + ldr r3, _080E1168 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E116C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r6, _080E1170 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080E117C + ldr r4, _080E1174 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x2] + adds r0, r2 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r6, 0x4] + adds r0, r3 + strh r0, [r5, 0x22] + movs r1, 0x2 + ldrsh r0, [r6, r1] + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + ble _080E1162 + movs r1, 0x1 +_080E1162: + strh r1, [r5, 0x2E] + ldr r0, _080E1178 @ =sub_80E1198 + b _080E118A + .align 2, 0 +_080E1168: .4byte 0x000003ff +_080E116C: .4byte 0xfffffc00 +_080E1170: .4byte gBattleAnimArgs +_080E1174: .4byte gBattleAnimBankAttacker +_080E1178: .4byte sub_80E1198 +_080E117C: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x22] + negs r0, r0 + strh r0, [r5, 0x26] + ldr r0, _080E1194 @ =sub_80E11D4 +_080E118A: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1194: .4byte sub_80E11D4 + thumb_func_end sub_80E1108 + + thumb_func_start sub_80E1198 +sub_80E1198: @ 80E1198 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E11B6 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] +_080E11B6: + ldrh r0, [r2, 0x22] + subs r0, 0x4 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x4 + negs r1, r1 + cmp r0, r1 + bge _080E11CE + adds r0, r2, 0 + bl move_anim_8072740 +_080E11CE: + pop {r0} + bx r0 + thumb_func_end sub_80E1198 + + thumb_func_start sub_80E11D4 +sub_80E11D4: @ 80E11D4 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080E11E6 + cmp r1, 0x1 + beq _080E11FC + b _080E123E +_080E11E6: + ldrh r0, [r3, 0x26] + adds r0, 0x4 + strh r0, [r3, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080E123E + strh r1, [r3, 0x26] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080E123E +_080E11FC: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + cmp r0, 0 + ble _080E123E + movs r0, 0 + strh r0, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + 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, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080E123E + adds r0, r3, 0 + bl move_anim_8072740 +_080E123E: + pop {r0} + bx r0 + thumb_func_end sub_80E11D4 + + thumb_func_start sub_80E1244 +sub_80E1244: @ 80E1244 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1264 @ =gTasks + adds r1, r0, r1 + ldr r0, _080E1268 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080E1270 + ldr r0, _080E126C @ =sub_80E1284 + b _080E1272 + .align 2, 0 +_080E1264: .4byte gTasks +_080E1268: .4byte gBattleAnimArgs +_080E126C: .4byte sub_80E1284 +_080E1270: + ldr r0, _080E1280 @ =sub_80E143C +_080E1272: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E1280: .4byte sub_80E143C + thumb_func_end sub_80E1244 + + thumb_func_start sub_80E1284 +sub_80E1284: @ 80E1284 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E12A8 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E129E + b _080E1432 +_080E129E: + lsls r0, 2 + ldr r1, _080E12AC @ =_080E12B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E12A8: .4byte gTasks +_080E12AC: .4byte _080E12B0 + .align 2, 0 +_080E12B0: + .4byte _080E12C4 + .4byte _080E134C + .4byte _080E135C + .4byte _080E1400 + .4byte _080E1414 +_080E12C4: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080E12EC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080E12F8 + ldr r0, _080E12F0 @ =gUnknown_030042C0 + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E12F4 @ =gUnknown_030041B4 + b _080E1300 + .align 2, 0 +_080E12EC: .4byte gBattleAnimBankAttacker +_080E12F0: .4byte gUnknown_030042C0 +_080E12F4: .4byte gUnknown_030041B4 +_080E12F8: + ldr r0, _080E133C @ =gUnknown_03004288 + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E1340 @ =gUnknown_03004280 +_080E1300: + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080E1344 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + cmp r1, 0 + bge _080E1322 + movs r0, 0 + strh r0, [r4, 0x24] +_080E1322: + ldr r2, _080E1348 @ =gSprites + movs r3, 0x1C + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _080E1406 + .align 2, 0 +_080E133C: .4byte gUnknown_03004288 +_080E1340: .4byte gUnknown_03004280 +_080E1344: .4byte gBattleAnimBankAttacker +_080E1348: .4byte gSprites +_080E134C: + ldrb r0, [r4, 0x1E] + movs r2, 0x24 + ldrsh r1, [r4, r2] + movs r3, 0x26 + ldrsh r2, [r4, r3] + bl sub_80E1668 + b _080E1406 +_080E135C: + ldrh r0, [r4, 0xC] + adds r0, 0x6 + movs r1, 0x7F + ands r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080E137E + movs r0, 0 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080E137E: + ldr r1, _080E13A0 @ =gSineTable + movs r2, 0xC + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + ldrh r3, [r4, 0xE] + adds r2, r0, r3 + strh r2, [r4, 0x12] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080E13A8 + ldr r1, _080E13A4 @ =gUnknown_030041B4 + b _080E13AA + .align 2, 0 +_080E13A0: .4byte gSineTable +_080E13A4: .4byte gUnknown_030041B4 +_080E13A8: + ldr r1, _080E13CC @ =gUnknown_03004280 +_080E13AA: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x3F + ble _080E1432 + ldrh r0, [r4, 0x24] + movs r1, 0x78 + subs r2, r1, r0 + strh r2, [r4, 0x12] + movs r3, 0x1E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080E13D4 + ldr r1, _080E13D0 @ =gUnknown_030041B4 + b _080E13D6 + .align 2, 0 +_080E13CC: .4byte gUnknown_03004280 +_080E13D0: .4byte gUnknown_030041B4 +_080E13D4: + ldr r1, _080E13F8 @ =gUnknown_03004280 +_080E13D6: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + ldr r2, _080E13FC @ =gSprites + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x20] + movs r3, 0x88 + lsls r3, 1 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r1, 0x24] + b _080E1406 + .align 2, 0 +_080E13F8: .4byte gUnknown_03004280 +_080E13FC: .4byte gSprites +_080E1400: + ldr r1, _080E1410 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E1406: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1432 + .align 2, 0 +_080E1410: .4byte gUnknown_03004DC0 +_080E1414: + adds r0, r2, 0 + bl DestroyAnimVisualTask + ldr r2, _080E1438 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080E1432: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1438: .4byte gSprites + thumb_func_end sub_80E1284 + + thumb_func_start sub_80E143C +sub_80E143C: @ 80E143C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E147C @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r3] + movs r4, 0 + strh r4, [r1, 0x24] + strh r4, [r1, 0x26] + ldr r0, _080E1480 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E1488 + ldr r0, _080E1484 @ =gUnknown_030041B4 + b _080E148A + .align 2, 0 +_080E147C: .4byte gSprites +_080E1480: .4byte gBattleAnimBankAttacker +_080E1484: .4byte gUnknown_030041B4 +_080E1488: + ldr r0, _080E1498 @ =gUnknown_03004280 +_080E148A: + strh r4, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1498: .4byte gUnknown_03004280 + thumb_func_end sub_80E143C + + thumb_func_start sub_80E149C +sub_80E149C: @ 80E149C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E14BC @ =gTasks + adds r1, r0, r1 + ldr r0, _080E14C0 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080E14C8 + ldr r0, _080E14C4 @ =sub_80E14DC + b _080E14CA + .align 2, 0 +_080E14BC: .4byte gTasks +_080E14C0: .4byte gBattleAnimArgs +_080E14C4: .4byte sub_80E14DC +_080E14C8: + ldr r0, _080E14D8 @ =sub_80E1560 +_080E14CA: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E14D8: .4byte sub_80E1560 + thumb_func_end sub_80E149C + + thumb_func_start sub_80E14DC +sub_80E14DC: @ 80E14DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E14FC @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080E1500 + cmp r5, 0x1 + beq _080E1554 + b _080E155A + .align 2, 0 +_080E14FC: .4byte gTasks +_080E1500: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r3, _080E1550 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r5, [r0, 0x24] + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x22] + movs r0, 0xA0 + subs r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E155A + .align 2, 0 +_080E1550: .4byte gSprites +_080E1554: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E155A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E14DC + + thumb_func_start sub_80E1560 +sub_80E1560: @ 80E1560 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1584 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _080E1662 + lsls r0, 2 + ldr r1, _080E1588 @ =_080E158C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E1584: .4byte gTasks +_080E1588: .4byte _080E158C + .align 2, 0 +_080E158C: + .4byte _080E15A0 + .4byte _080E15F4 + .4byte _080E1602 + .4byte _080E161C + .4byte _080E165C +_080E15A0: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080E15C4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080E15CC + ldr r0, _080E15C8 @ =gUnknown_030042C0 + b _080E15CE + .align 2, 0 +_080E15C4: .4byte gBattleAnimBankAttacker +_080E15C8: .4byte gUnknown_030042C0 +_080E15CC: + ldr r0, _080E15EC @ =gUnknown_03004288 +_080E15CE: + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E15F0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + b _080E164A + .align 2, 0 +_080E15EC: .4byte gUnknown_03004288 +_080E15F0: .4byte gBattleAnimBankAttacker +_080E15F4: + ldrb r0, [r4, 0x1E] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0 + bl sub_80E1668 + b _080E164A +_080E1602: + ldr r2, _080E1618 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x60 + strh r1, [r0, 0x26] + b _080E164A + .align 2, 0 +_080E1618: .4byte gSprites +_080E161C: + ldr r2, _080E1654 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E1662 + ldr r1, _080E1658 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E164A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1662 + .align 2, 0 +_080E1654: .4byte gSprites +_080E1658: .4byte gUnknown_03004DC0 +_080E165C: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E1662: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E1560 + + thumb_func_start sub_80E1668 +sub_80E1668: @ 80E1668 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + cmp r0, 0x1 + bne _080E168C + ldr r0, _080E1684 @ =gUnknown_030042C0 + ldrh r3, [r0] + ldr r0, _080E1688 @ =REG_BG1HOFS + b _080E1692 + .align 2, 0 +_080E1684: .4byte gUnknown_030042C0 +_080E1688: .4byte REG_BG1HOFS +_080E168C: + ldr r0, _080E1718 @ =gUnknown_03004288 + ldrh r3, [r0] + ldr r0, _080E171C @ =REG_BG2HOFS +_080E1692: + str r0, [sp] + lsls r0, r1, 16 + cmp r0, 0 + bge _080E169C + movs r1, 0 +_080E169C: + lsls r2, r1, 16 + lsls r0, r4, 16 + asrs r4, r0, 16 + cmp r2, r0 + bge _080E16C8 + ldr r5, _080E1720 @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080E16AE: + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r6 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 16 + lsrs r1, r2, 16 + lsls r2, r1, 16 + asrs r0, r2, 16 + cmp r0, r4 + blt _080E16AE +_080E16C8: + lsls r1, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080E16F6 + ldr r4, _080E1720 @ =gUnknown_03004DE0 + lsls r0, r3, 16 + asrs r0, 16 + adds r3, r0, 0 + adds r3, 0xF0 + movs r0, 0xF0 + lsls r0, 3 + adds r5, r4, r0 +_080E16E0: + asrs r2, r1, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080E16E0 +_080E16F6: + ldr r0, _080E1724 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1718: .4byte gUnknown_03004288 +_080E171C: .4byte REG_BG2HOFS +_080E1720: .4byte gUnknown_03004DE0 +_080E1724: .4byte 0xa2600001 + thumb_func_end sub_80E1668 + + thumb_func_start sub_80E1728 +sub_80E1728: @ 80E1728 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080E173C @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r7, r0, 0 + cmp r1, 0 + bne _080E1744 + ldr r0, _080E1740 @ =gBattleAnimBankAttacker + b _080E1746 + .align 2, 0 +_080E173C: .4byte gBattleAnimArgs +_080E1740: .4byte gBattleAnimBankAttacker +_080E1744: + ldr r0, _080E17A8 @ =gBattleAnimBankTarget +_080E1746: + ldrb r4, [r0] + movs r6, 0x18 + adds r1, r7, 0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080E1762 + negs r0, r6 + lsls r0, 16 + lsrs r6, r0, 16 + movs r2, 0x4 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x4] +_080E1762: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + adds r0, r4, 0 + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1E + strh r0, [r5, 0x22] + ldrh r1, [r7, 0xA] + strh r1, [r5, 0x2E] + ldrh r1, [r7, 0x4] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x32] + ldrh r1, [r7, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080E17AC @ =sub_80E17B0 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E17A8: .4byte gBattleAnimBankTarget +_080E17AC: .4byte sub_80E17B0 + thumb_func_end sub_80E1728 + + thumb_func_start sub_80E17B0 +sub_80E17B0: @ 80E17B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E17C4 + adds r0, r4, 0 + bl move_anim_8072740 +_080E17C4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E17B0 + + thumb_func_start sub_80E17CC +sub_80E17CC: @ 80E17CC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080E17E0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E17E8 + ldr r0, _080E17E4 @ =gBattleAnimBankAttacker + b _080E17EA + .align 2, 0 +_080E17E0: .4byte gBattleAnimArgs +_080E17E4: .4byte gBattleAnimBankAttacker +_080E17E8: + ldr r0, _080E1848 @ =gBattleAnimBankTarget +_080E17EA: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E184C @ =0x0000fff0 + adds r0, r2 + ldr r4, _080E1850 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r1, [r4, r3] + lsls r1, 5 + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r6, 0x22] + ldrh r2, [r6, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r1, r0 + ldr r3, _080E1854 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E1858 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080E185C @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldr r0, _080E1860 @ =sub_80782D8 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1848: .4byte gBattleAnimBankTarget +_080E184C: .4byte 0x0000fff0 +_080E1850: .4byte gBattleAnimArgs +_080E1854: .4byte 0x000003ff +_080E1858: .4byte 0xfffffc00 +_080E185C: .4byte move_anim_8072740 +_080E1860: .4byte sub_80782D8 + thumb_func_end sub_80E17CC + + thumb_func_start sub_80E1864 +sub_80E1864: @ 80E1864 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080E1888 @ =gTasks + adds r4, r0, r1 + ldr r0, _080E188C @ =gBattleAnimArgs + ldrh r2, [r0, 0x2] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r6, r0, 0 + cmp r1, 0 + beq _080E1890 + adds r0, r2, 0x3 + b _080E189C + .align 2, 0 +_080E1888: .4byte gTasks +_080E188C: .4byte gBattleAnimArgs +_080E1890: + ldr r0, _080E18BC @ =gMovePowerMoveAnim + ldrh r0, [r0] + movs r1, 0xA + bl __udivsi3 + adds r0, 0x3 +_080E189C: + strh r0, [r4, 0x26] + strh r0, [r4, 0x24] + adds r1, r6, 0 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xE] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080E18C8 + cmp r0, 0x5 + bne _080E1908 + ldr r0, _080E18C0 @ =gUnknown_030041B0 + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080E18C4 @ =sub_80E1934 + b _080E1926 + .align 2, 0 +_080E18BC: .4byte gMovePowerMoveAnim +_080E18C0: .4byte gUnknown_030041B0 +_080E18C4: .4byte sub_80E1934 +_080E18C8: + movs r0, 0 + strh r0, [r4, 0x22] + movs r5, 0 +_080E18CE: + lsls r0, r5, 24 + lsrs r0, 24 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E18F8 + movs r3, 0x22 + ldrsh r0, [r4, r3] + adds r0, 0x9 + lsls r0, 1 + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r0 + ldr r0, _080E1904 @ =gObjectBankIDs + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r1] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080E18F8: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080E18CE + b _080E1924 + .align 2, 0 +_080E1904: .4byte gObjectBankIDs +_080E1908: + ldrb r0, [r6] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + cmp r0, 0xFF + bne _080E1920 + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080E1928 +_080E1920: + movs r0, 0x1 + strh r0, [r4, 0x22] +_080E1924: + ldr r0, _080E1930 @ =sub_80E1A2C +_080E1926: + str r0, [r4] +_080E1928: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1930: .4byte sub_80E1A2C + thumb_func_end sub_80E1864 + + thumb_func_start sub_80E1934 +sub_80E1934: @ 80E1934 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1958 @ =gTasks + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r1, [r3, r0] + cmp r1, 0x1 + beq _080E19B8 + cmp r1, 0x1 + bgt _080E195C + cmp r1, 0 + beq _080E1962 + b _080E1A24 + .align 2, 0 +_080E1958: .4byte gTasks +_080E195C: + cmp r1, 0x2 + beq _080E1A18 + b _080E1A24 +_080E1962: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1A24 + strh r1, [r3, 0xA] + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E198C + ldr r1, _080E1988 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080E1996 + .align 2, 0 +_080E1988: .4byte gUnknown_030041B0 +_080E198C: + ldr r0, _080E19B4 @ =gUnknown_030041B0 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x26] + subs r1, r2 + strh r1, [r0] +_080E1996: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _080E1A24 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + b _080E1A0C + .align 2, 0 +_080E19B4: .4byte gUnknown_030041B0 +_080E19B8: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1A24 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + ands r1, r0 + cmp r1, 0 + bne _080E19E4 + ldr r1, _080E19E0 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x24] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080E19EE + .align 2, 0 +_080E19E0: .4byte gUnknown_030041B0 +_080E19E4: + ldr r0, _080E1A14 @ =gUnknown_030041B0 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x24] + subs r1, r2 + strh r1, [r0] +_080E19EE: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E1A24 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080E1A24 +_080E1A0C: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080E1A24 + .align 2, 0 +_080E1A14: .4byte gUnknown_030041B0 +_080E1A18: + ldr r1, _080E1A28 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x22] + strh r0, [r1] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E1A24: + pop {r0} + bx r0 + .align 2, 0 +_080E1A28: .4byte gUnknown_030041B0 + thumb_func_end sub_80E1934 + + thumb_func_start sub_80E1A2C +sub_80E1A2C: @ 80E1A2C + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080E1A50 @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080E1A8C + cmp r5, 0x1 + bgt _080E1A54 + cmp r5, 0 + beq _080E1A5A + b _080E1B06 + .align 2, 0 +_080E1A50: .4byte gTasks +_080E1A54: + cmp r5, 0x2 + beq _080E1AC8 + b _080E1B06 +_080E1A5A: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1B06 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80E1B10 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080E1B06 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + b _080E1AC0 +_080E1A8C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1B06 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80E1B10 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E1B06 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080E1B06 +_080E1AC0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1B06 +_080E1AC8: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r2, r0 + bge _080E1B00 + ldr r0, _080E1B0C @ =gSprites + mov r12, r0 + adds r5, r4, 0 + adds r5, 0x8 + movs r6, 0 +_080E1ADC: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r12 + strh r6, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080E1ADC +_080E1B00: + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080E1B06: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1B0C: .4byte gSprites + thumb_func_end sub_80E1A2C + + thumb_func_start sub_80E1B10 +sub_80E1B10: @ 80E1B10 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0xC] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080E1B38 + movs r0, 0x24 + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r3, 0x24] + adds r0, r4, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 16 + lsrs r4, r1, 16 + b _080E1B48 +_080E1B38: + movs r1, 0x24 + ldrsh r0, [r3, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + lsls r0, 16 + lsrs r4, r0, 16 +_080E1B48: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r3, r7] + cmp r2, r0 + bge _080E1B7C + ldr r6, _080E1B84 @ =gSprites + adds r5, r3, 0 + adds r5, 0x8 +_080E1B58: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r4, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r3, r1] + cmp r2, r0 + blt _080E1B58 +_080E1B7C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1B84: .4byte gSprites + thumb_func_end sub_80E1B10 + + thumb_func_start sub_80E1B88 +sub_80E1B88: @ 80E1B88 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, _080E1BA8 @ =gBattleAnimArgs + movs r2, 0 + ldr r0, _080E1BAC @ =gMovePowerMoveAnim + ldrh r0, [r0] + cmp r0, 0x63 + bls _080E1B9C + movs r2, 0x1 +_080E1B9C: + strh r2, [r3, 0x1E] + adds r0, r1, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E1BA8: .4byte gBattleAnimArgs +_080E1BAC: .4byte gMovePowerMoveAnim + thumb_func_end sub_80E1B88 + + thumb_func_start sub_80E1BB0 +sub_80E1BB0: @ 80E1BB0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _080E1BC8 @ =gBattleAnimArgs + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _080E1BD0 + ldr r0, _080E1BCC @ =gBattleAnimBankTarget + b _080E1BD2 + .align 2, 0 +_080E1BC8: .4byte gBattleAnimArgs +_080E1BCC: .4byte gBattleAnimBankTarget +_080E1BD0: + ldr r0, _080E1C40 @ =gBattleAnimBankAttacker +_080E1BD2: + ldrb r0, [r0] + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + ble _080E1BE2 + movs r0, 0x2 + eors r5, r0 +_080E1BE2: + ldr r0, _080E1C44 @ =sub_80E1C58 + ldrb r1, [r6, 0x2] + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080E1C48 @ =gTasks + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x20 + subs r1, r0 + ldr r2, _080E1C4C @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + strh r1, [r4, 0xA] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x40 + subs r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0xC] + ldr r2, _080E1C50 @ =gUnknown_030041B0 + ldrh r0, [r4, 0xA] + strh r0, [r2] + ldr r0, _080E1C54 @ =gUnknown_030041B8 + strh r1, [r0] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0xE] + adds r0, r7, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1C40: .4byte gBattleAnimBankAttacker +_080E1C44: .4byte sub_80E1C58 +_080E1C48: .4byte gTasks +_080E1C4C: .4byte 0x000001ff +_080E1C50: .4byte gUnknown_030041B0 +_080E1C54: .4byte gUnknown_030041B8 + thumb_func_end sub_80E1BB0 + + thumb_func_start sub_80E1C58 +sub_80E1C58: @ 80E1C58 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080E1C88 @ =gTasks + adds r2, r0, r1 + ldr r0, _080E1C8C @ =gBattleAnimArgs + movs r4, 0xE + ldrsh r1, [r0, r4] + movs r4, 0xE + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _080E1C98 + ldr r0, _080E1C90 @ =gUnknown_030041B0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E1C94 @ =gUnknown_030041B8 + strh r1, [r0] + adds r0, r3, 0 + bl DestroyTask + b _080E1CA4 + .align 2, 0 +_080E1C88: .4byte gTasks +_080E1C8C: .4byte gBattleAnimArgs +_080E1C90: .4byte gUnknown_030041B0 +_080E1C94: .4byte gUnknown_030041B8 +_080E1C98: + ldr r1, _080E1CAC @ =gUnknown_030041B0 + ldrh r0, [r2, 0xA] + strh r0, [r1] + ldr r1, _080E1CB0 @ =gUnknown_030041B8 + ldrh r0, [r2, 0xC] + strh r0, [r1] +_080E1CA4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1CAC: .4byte gUnknown_030041B0 +_080E1CB0: .4byte gUnknown_030041B8 + thumb_func_end sub_80E1C58 + + .align 2, 0 @ Don't pad with nop. |