diff options
Diffstat (limited to 'asm/fight.s')
-rwxr-xr-x | asm/fight.s | 1750 |
1 files changed, 1750 insertions, 0 deletions
diff --git a/asm/fight.s b/asm/fight.s new file mode 100755 index 000000000..cb1783b77 --- /dev/null +++ b/asm/fight.s @@ -0,0 +1,1750 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ fight + + thumb_func_start unc_080B08A0 +unc_080B08A0: @ 80D8FF0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D9020 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_807867C + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0xF + strh r0, [r4, 0x2E] + ldr r0, _080D9024 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D9028 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9020: .4byte gBattleAnimArgs +_080D9024: .4byte sub_80782D8 +_080D9028: .4byte move_anim_8072740 + thumb_func_end unc_080B08A0 + + thumb_func_start sub_80D902C +sub_80D902C: @ 80D902C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D9070 @ =gBattleAnimArgs + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080D9054 + ldr r0, _080D9074 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9054 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r4, 0x6] +_080D9054: + ldr r4, _080D9070 @ =gBattleAnimArgs + ldrb r1, [r4, 0xC] + adds r0, r5, 0 + bl StartSpriteAnim + movs r0, 0 + strh r0, [r4, 0xC] + adds r0, r5, 0 + bl sub_8079534 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9070: .4byte gBattleAnimArgs +_080D9074: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80D902C + + thumb_func_start sub_80D9078 +sub_80D9078: @ 80D9078 + push {r4,lr} + adds r4, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9094 + ldr r0, _080D90A0 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080D9094: + adds r0, r4, 0 + bl sub_80D902C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D90A0: .4byte gBattleAnimArgs + thumb_func_end sub_80D9078 + + thumb_func_start sub_80D90A4 +sub_80D90A4: @ 80D90A4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D90C4 @ =gBattleAnimArgs + ldrb r1, [r4, 0x8] + bl StartSpriteAnim + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D90C8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080D90D0 + .align 2, 0 +_080D90C4: .4byte gBattleAnimArgs +_080D90C8: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8078764 +_080D90D0: + ldr r0, _080D90E8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080D90EC @ =sub_80782D8 + str r0, [r5, 0x1C] + ldr r1, _080D90F0 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D90E8: .4byte gBattleAnimArgs +_080D90EC: .4byte sub_80782D8 +_080D90F0: .4byte move_anim_8072740 + thumb_func_end sub_80D90A4 + + thumb_func_start sub_80D90F4 +sub_80D90F4: @ 80D90F4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, _080D9110 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + mov r9, r0 + cmp r1, 0 + bne _080D9118 + ldr r0, _080D9114 @ =gBattleAnimBankAttacker + b _080D911A + .align 2, 0 +_080D9110: .4byte gBattleAnimArgs +_080D9114: .4byte gBattleAnimBankAttacker +_080D9118: + ldr r0, _080D9260 @ =gBattleAnimBankTarget +_080D911A: + ldrb r0, [r0] + mov r8, r0 + mov r4, r9 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _080D9138 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x4] +_080D9138: + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAnim + mov r0, r8 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + mov r0, r8 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + mov r0, r8 + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + lsls r1, 15 + lsrs r6, r1, 16 + mov r0, r8 + movs r1, 0 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080D9182 + adds r0, 0x3 +_080D9182: + lsls r4, r0, 14 + lsrs r4, 16 + bl Random + lsls r0, 16 + lsrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + bl __modsi3 + lsls r0, 16 + lsrs r6, r0, 16 + bl Random + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 16 + lsrs r4, r0, 16 + bl Random + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080D91C4 + lsls r0, r6, 16 + negs r0, r0 + lsrs r6, r0, 16 +_080D91C4: + bl Random + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080D91D6 + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_080D91D6: + ldr r0, _080D9264 @ =gBanksBySide + add r0, r8 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080D91EC + lsls r0, r4, 16 + ldr r1, _080D9268 @ =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_080D91EC: + lsls r0, r6, 16 + asrs r0, 16 + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + mov r1, r9 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x2E] + ldr r0, _080D926C @ =gBattleAnimSpriteTemplate_83DB4A8 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + adds r3, r5, 0 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3C] + cmp r0, 0x40 + beq _080D9250 + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D9270 @ =gSprites + adds r0, r4 + movs r1, 0 + bl StartSpriteAffineAnim + movs r2, 0x3C + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080D9274 @ =SpriteCallbackDummy + str r1, [r0] +_080D9250: + ldr r0, _080D9278 @ =sub_80D927C + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D9260: .4byte gBattleAnimBankTarget +_080D9264: .4byte gBanksBySide +_080D9268: .4byte 0xfff00000 +_080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8 +_080D9270: .4byte gSprites +_080D9274: .4byte SpriteCallbackDummy +_080D9278: .4byte sub_80D927C + thumb_func_end sub_80D90F4 + + thumb_func_start sub_80D927C +sub_80D927C: @ 80D927C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _080D92C4 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0x40 + beq _080D92B8 + ldr r4, _080D92C0 @ =gSprites + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite +_080D92B8: + adds r0, r5, 0 + bl move_anim_8072740 + b _080D92C8 + .align 2, 0 +_080D92C0: .4byte gSprites +_080D92C4: + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] +_080D92C8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D927C + + thumb_func_start sub_80D92D0 +sub_80D92D0: @ 80D92D0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + movs r0, 0x1E + strh r0, [r4, 0x2E] + ldr r0, _080D92F0 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D92F4 + ldrh r0, [r4, 0x20] + subs r0, 0x14 + strh r0, [r4, 0x32] + b _080D9306 + .align 2, 0 +_080D92F0: .4byte gBattleAnimArgs +_080D92F4: + ldrh r0, [r4, 0x20] + adds r0, 0x14 + strh r0, [r4, 0x32] + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080D9306: + ldrh r0, [r4, 0x22] + subs r0, 0x14 + strh r0, [r4, 0x36] + ldr r0, _080D9320 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080D9324 @ =sub_80D9328 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9320: .4byte sub_8078B34 +_080D9324: .4byte sub_80D9328 + thumb_func_end sub_80D92D0 + + thumb_func_start sub_80D9328 +sub_80D9328: @ 80D9328 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + adds r0, 0x1 + movs r6, 0 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _080D9368 + ldrh r2, [r5, 0x20] + ldrh r4, [r5, 0x24] + subs r0, r2, r4 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x22] + ldrh r3, [r5, 0x26] + subs r0, r1, r3 + strh r0, [r5, 0x36] + movs r0, 0x8 + strh r0, [r5, 0x2E] + adds r2, r4 + strh r2, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x22] + strh r6, [r5, 0x26] + strh r6, [r5, 0x24] + ldr r0, _080D9370 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080D9374 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData +_080D9368: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9370: .4byte sub_8078B34 +_080D9374: .4byte move_anim_8072740 + thumb_func_end sub_80D9328 + + thumb_func_start sub_80D9378 +sub_80D9378: @ 80D9378 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker + ldrb r1, [r0] + movs r0, 0x2 + ldr r2, _080D93F8 @ =gBattleAnimBankTarget + eors r0, r1 + ldrb r1, [r2] + cmp r0, r1 + bne _080D93A4 + ldrb r0, [r2] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080D93A4 + ldr r1, _080D93FC @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080D93A4: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D93C2 + ldr r1, _080D93FC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080D93C2: + ldr r4, _080D93FC @ =gBattleAnimArgs + ldrh r0, [r4, 0x6] + movs r5, 0 + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x3A] + strh r5, [r6, 0x3C] + ldr r0, _080D9400 @ =sub_80D9404 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D93F4: .4byte gBattleAnimBankAttacker +_080D93F8: .4byte gBattleAnimBankTarget +_080D93FC: .4byte gBattleAnimArgs +_080D9400: .4byte sub_80D9404 + thumb_func_end sub_80D9378 + + thumb_func_start sub_80D9404 +sub_80D9404: @ 80D9404 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D9430 + ldrh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + strh r0, [r4, 0x3C] + b _080D9436 +_080D9430: + adds r0, r4, 0 + bl move_anim_8072740 +_080D9436: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9404 + + thumb_func_start sub_80D943C +sub_80D943C: @ 80D943C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r5, _080D9468 @ =gBattleAnimArgs + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldr r0, _080D946C @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D9470 @ =sub_80D9474 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9468: .4byte gBattleAnimArgs +_080D946C: .4byte sub_80782D8 +_080D9470: .4byte sub_80D9474 + thumb_func_end sub_80D943C + + thumb_func_start sub_80D9474 +sub_80D9474: @ 80D9474 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl StartSpriteAffineAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r0, _080D94A0 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D94A4 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D94A0: .4byte sub_80782D8 +_080D94A4: .4byte move_anim_8072740 + thumb_func_end sub_80D9474 + + thumb_func_start sub_80D94A8 +sub_80D94A8: @ 80D94A8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080D94C4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080D94C8 @ =sub_80D94CC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D94C4: .4byte gBattleAnimArgs +_080D94C8: .4byte sub_80D94CC + thumb_func_end sub_80D94A8 + + thumb_func_start sub_80D94CC +sub_80D94CC: @ 80D94CC + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + subs r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D9510 + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080D9518 @ =gBattleAnimBankTarget + 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] + ldr r0, _080D951C @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080D9520 @ =sub_80D9524 + adds r0, r5, 0 + bl StoreSpriteCallbackInData +_080D9510: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9518: .4byte gBattleAnimBankTarget +_080D951C: .4byte sub_8078B34 +_080D9520: .4byte sub_80D9524 + thumb_func_end sub_80D94CC + + thumb_func_start sub_80D9524 +sub_80D9524: @ 80D9524 + push {lr} + movs r1, 0xF + strh r1, [r0, 0x2E] + ldr r1, _080D9538 @ =sub_80782D8 + str r1, [r0, 0x1C] + ldr r1, _080D953C @ =move_anim_8072740 + bl StoreSpriteCallbackInData + pop {r0} + bx r0 + .align 2, 0 +_080D9538: .4byte sub_80782D8 +_080D953C: .4byte move_anim_8072740 + thumb_func_end sub_80D9524 + + thumb_func_start sub_80D9540 +sub_80D9540: @ 80D9540 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D956C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r1, _080D9568 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080D95C8 + .align 2, 0 +_080D9568: .4byte gBattleAnimArgs +_080D956C: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x64 + ble _080D95BA + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080D95BA: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _080D95C8 + adds r0, r4, 0 + bl move_anim_8072740 +_080D95C8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9540 + + thumb_func_start sub_80D95D0 +sub_80D95D0: @ 80D95D0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D95E4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D95EC + ldr r4, _080D95E8 @ =gBattleAnimBankAttacker + b _080D95EE + .align 2, 0 +_080D95E4: .4byte gBattleAnimArgs +_080D95E8: .4byte gBattleAnimBankAttacker +_080D95EC: + ldr r4, _080D9634 @ =gBattleAnimBankTarget +_080D95EE: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080D9638 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r5, 0x20] + ldrh r0, [r1, 0x4] + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + strh r2, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldr r0, _080D963C @ =sub_80D9640 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9634: .4byte gBattleAnimBankTarget +_080D9638: .4byte gBattleAnimArgs +_080D963C: .4byte sub_80D9640 + thumb_func_end sub_80D95D0 + + thumb_func_start sub_80D9640 +sub_80D9640: @ 80D9640 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + cmp r2, 0 + beq _080D9652 + cmp r2, 0x1 + beq _080D9676 + b _080D96B0 +_080D9652: + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080D96B0 + movs r2, 0x32 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D966E + adds r0, r1, 0 + bl move_anim_8072740 + b _080D96B0 +_080D966E: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _080D96B0 +_080D9676: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D969E + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r0, [r1, 0x34] + adds r0, 0x1 + strh r0, [r1, 0x34] + ands r0, r2 + lsls r0, 16 + cmp r0, 0 + beq _080D969A + movs r0, 0x2 + b _080D969C +_080D969A: + ldr r0, _080D96B4 @ =0x0000fffe +_080D969C: + strh r0, [r1, 0x24] +_080D969E: + ldrh r0, [r1, 0x32] + subs r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _080D96B0 + adds r0, r1, 0 + bl move_anim_8072740 +_080D96B0: + pop {r0} + bx r0 + .align 2, 0 +_080D96B4: .4byte 0x0000fffe + thumb_func_end sub_80D9640 + + thumb_func_start sub_80D96B8 +sub_80D96B8: @ 80D96B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080D96DC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D96E4 + ldr r4, _080D96E0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x4] + adds r0, r2 + b _080D96F6 + .align 2, 0 +_080D96DC: .4byte gBattleAnimArgs +_080D96E0: .4byte gBattleAnimBankAttacker +_080D96E4: + ldr r4, _080D9740 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 +_080D96F6: + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080D9744 @ =gBattleAnimArgs + movs r4, 0x2 + ldrsh r0, [r3, r4] + lsls r0, 4 + adds r1, r0 + ldr r4, _080D9748 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080D974C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r1, 0 + movs r0, 0 + strh r0, [r5, 0x2E] + movs r2, 0x2 + ldrsh r0, [r3, r2] + cmp r0, 0x1 + beq _080D9764 + cmp r0, 0x1 + bgt _080D9750 + cmp r0, 0 + beq _080D975A + b _080D978A + .align 2, 0 +_080D9740: .4byte gBattleAnimBankTarget +_080D9744: .4byte gBattleAnimArgs +_080D9748: .4byte 0x000003ff +_080D974C: .4byte 0xfffffc00 +_080D9750: + cmp r0, 0x2 + beq _080D9774 + cmp r0, 0x3 + beq _080D9784 + b _080D978A +_080D975A: + ldr r0, _080D9760 @ =0x0000fffd + b _080D9784 + .align 2, 0 +_080D9760: .4byte 0x0000fffd +_080D9764: + movs r0, 0x3 + strh r0, [r5, 0x3A] + ldr r0, _080D9770 @ =0x0000fffd + strh r0, [r5, 0x3C] + b _080D9792 + .align 2, 0 +_080D9770: .4byte 0x0000fffd +_080D9774: + ldr r0, _080D9780 @ =0x0000fffd + strh r0, [r5, 0x3A] + movs r0, 0x3 + strh r0, [r5, 0x3C] + b _080D9792 + .align 2, 0 +_080D9780: .4byte 0x0000fffd +_080D9784: + strh r0, [r5, 0x3A] + strh r0, [r5, 0x3C] + b _080D9792 +_080D978A: + adds r0, r5, 0 + bl move_anim_8072740 + b _080D9796 +_080D9792: + ldr r0, _080D979C @ =sub_80D97A0 + str r0, [r5, 0x1C] +_080D9796: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D979C: .4byte sub_80D97A0 + thumb_func_end sub_80D96B8 + + thumb_func_start sub_80D97A0 +sub_80D97A0: @ 80D97A0 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x3A] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x3C] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080D97C8 + adds r0, r1, 0 + bl move_anim_8072740 +_080D97C8: + pop {r0} + bx r0 + thumb_func_end sub_80D97A0 + + thumb_func_start sub_80D97CC +sub_80D97CC: @ 80D97CC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D9818 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9828 + ldr r4, _080D981C @ =gBankAttacker + 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 r0, _080D9820 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, _080D9824 @ =gBattleAnimBankTarget + b _080D9844 + .align 2, 0 +_080D9818: .4byte gBattleAnimArgs +_080D981C: .4byte gBankAttacker +_080D9820: .4byte gBattleAnimBankAttacker +_080D9824: .4byte gBattleAnimBankTarget +_080D9828: + ldr r0, _080D9860 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, _080D9864 @ =gBattleAnimBankAttacker +_080D9844: + ldrb r0, [r0] + strh r0, [r5, 0x3C] + movs r0, 0 + strh r0, [r5, 0x2E] + movs r0, 0xC + strh r0, [r5, 0x30] + movs r0, 0x8 + strh r0, [r5, 0x32] + ldr r0, _080D9868 @ =sub_80D986C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9860: .4byte gBattleAnimBankTarget +_080D9864: .4byte gBattleAnimBankAttacker +_080D9868: .4byte sub_80D986C + thumb_func_end sub_80D97CC + + thumb_func_start sub_80D986C +sub_80D986C: @ 80D986C + 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, 0xB4 + bne _080D98C6 + ldr r1, _080D98CC @ =REG_BLDCNT + movs r0, 0 + strh r0, [r1] + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + 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 + ldr r1, _080D98D0 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D98D4 @ =sub_8078BB8 + str r0, [r4, 0x1C] +_080D98C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D98CC: .4byte REG_BLDCNT +_080D98D0: .4byte move_anim_8074EE0 +_080D98D4: .4byte sub_8078BB8 + thumb_func_end sub_80D986C + + thumb_func_start sub_80D98D8 +sub_80D98D8: @ 80D98D8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D9924 @ =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x20] + movs r2, 0x78 + strh r2, [r5, 0x22] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + adds r0, 0x36 + adds r1, r5, 0 + adds r1, 0x38 + lsls r2, 8 + bl sub_8079BF4 + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x3A] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x4 + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080D9928 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D992C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080D9930 @ =sub_80D9934 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9924: .4byte gBattleAnimArgs +_080D9928: .4byte 0x000003ff +_080D992C: .4byte 0xfffffc00 +_080D9930: .4byte sub_80D9934 + thumb_func_end sub_80D98D8 + + thumb_func_start sub_80D9934 +sub_80D9934: @ 80D9934 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r1, 0x2E + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _080D9986 + movs r2, 0x36 + ldrsh r0, [r7, r2] + movs r2, 0x38 + ldrsh r1, [r7, r2] + bl sub_8079BFC + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r7, r1] + subs r4, r0 + adds r0, r7, 0 + adds r0, 0x36 + adds r1, r7, 0 + adds r1, 0x38 + adds r2, r4, 0 + bl sub_8079BF4 + asrs r4, 8 + strh r4, [r7, 0x22] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x8 + negs r0, r0 + cmp r4, r0 + bge _080D997E + adds r0, r7, 0 + bl move_anim_8072740 + b _080D99DC +_080D997E: + ldrh r0, [r7, 0x2E] + subs r0, 0x1 + strh r0, [r7, 0x2E] + b _080D99DC +_080D9986: + ldr r4, _080D99E8 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r2, _080D99EC @ =gBattleAnimBankTarget + mov r8, r2 + ldrb r0, [r2] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + subs r4, r6 + strh r4, [r7, 0x2E] + lsrs r0, 24 + subs r0, r5 + strh r0, [r7, 0x30] + ldrh r0, [r7, 0x20] + lsls r0, 4 + strh r0, [r7, 0x32] + ldrh r0, [r7, 0x22] + lsls r0, 4 + strh r0, [r7, 0x34] + ldr r0, _080D99F0 @ =sub_80D99F4 + str r0, [r7, 0x1C] +_080D99DC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D99E8: .4byte gBattleAnimBankAttacker +_080D99EC: .4byte gBattleAnimBankTarget +_080D99F0: .4byte sub_80D99F4 + thumb_func_end sub_80D9934 + + thumb_func_start sub_80D99F4 +sub_80D99F4: @ 80D99F4 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080D9A2E + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080D9A2E + cmp r1, 0x78 + ble _080D9A34 +_080D9A2E: + adds r0, r2, 0 + bl move_anim_8072740 +_080D9A34: + pop {r0} + bx r0 + thumb_func_end sub_80D99F4 + + thumb_func_start sub_80D9A38 +sub_80D9A38: @ 80D9A38 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D9A6C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9A7C + ldr r4, _080D9A70 @ =gBankAttacker + 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 r0, _080D9A74 @ =gBattleAnimBankTarget + ldrb r4, [r0] + ldr r0, _080D9A78 @ =gBattleAnimBankAttacker + b _080D9A82 + .align 2, 0 +_080D9A6C: .4byte gBattleAnimArgs +_080D9A70: .4byte gBankAttacker +_080D9A74: .4byte gBattleAnimBankTarget +_080D9A78: .4byte gBattleAnimBankAttacker +_080D9A7C: + ldr r0, _080D9AB4 @ =gBattleAnimBankAttacker + ldrb r4, [r0] + ldr r0, _080D9AB8 @ =gBattleAnimBankTarget +_080D9A82: + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9ABC + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + b _080D9AD6 + .align 2, 0 +_080D9AB4: .4byte gBattleAnimBankAttacker +_080D9AB8: .4byte gBattleAnimBankTarget +_080D9ABC: + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9ADC + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 +_080D9AD6: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] +_080D9ADC: + movs r0, 0x10 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + adds r0, r4, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080D9B1C @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D9B20 @ =sub_8078BB8 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9B1C: .4byte move_anim_8072740 +_080D9B20: .4byte sub_8078BB8 + thumb_func_end sub_80D9A38 + + thumb_func_start sub_80D9B24 +sub_80D9B24: @ 80D9B24 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080D9B3A + adds r0, r4, 0 + bl move_anim_8072740 +_080D9B3A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9B24 + + thumb_func_start sub_80D9B48 +sub_80D9B48: @ 80D9B48 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080D9BC4 @ =gBattleAnimBankTarget + 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, _080D9BC8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1] + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x34] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x36] + ldr r0, _080D9BCC @ =gUnknown_0202F7C4 + ldrb r6, [r0] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9B92 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080D9B92: + movs r0, 0x1 + ands r6, r0 + cmp r6, 0 + beq _080D9BA6 + ldrh r0, [r5, 0x32] + negs r0, r0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] +_080D9BA6: + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x32] + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x34] + strh r0, [r5, 0x26] + ldr r0, _080D9BD0 @ =sub_80D9B24 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9BC4: .4byte gBattleAnimBankTarget +_080D9BC8: .4byte gBattleAnimArgs +_080D9BCC: .4byte gUnknown_0202F7C4 +_080D9BD0: .4byte sub_80D9B24 + thumb_func_end sub_80D9B48 + + thumb_func_start sub_80D9BD4 +sub_80D9BD4: @ 80D9BD4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D9BEC @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9BF0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80787B0 + b _080D9BF8 + .align 2, 0 +_080D9BEC: .4byte gBattleAnimArgs +_080D9BF0: + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 +_080D9BF8: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9C0C + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim + b _080D9C22 +_080D9C0C: + ldr r0, _080D9C34 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9C22 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080D9C22: + ldr r0, _080D9C38 @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080D9C3C @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9C34: .4byte gBattleAnimBankAttacker +_080D9C38: .4byte sub_8078600 +_080D9C3C: .4byte move_anim_8072740 + thumb_func_end sub_80D9BD4 + + thumb_func_start sub_80D9C40 +sub_80D9C40: @ 80D9C40 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D9C7A + ldrh r0, [r4, 0x30] + adds r0, 0x28 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x2 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080D9C7A + adds r0, r4, 0 + bl move_anim_8072740 +_080D9C7A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9C40 + + thumb_func_start sub_80D9C80 +sub_80D9C80: @ 80D9C80 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080D9CB0 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080D9CB8 + cmp r0, 0x1 + bgt _080D9CD2 + cmp r0, 0 + bne _080D9CD2 + movs r0, 0 + bl sub_80789D4 + ldr r0, _080D9CB4 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x18] + b _080D9CCA + .align 2, 0 +_080D9CB0: .4byte gTasks +_080D9CB4: .4byte gBattleAnimArgs +_080D9CB8: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D9CDE +_080D9CCA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D9CDE +_080D9CD2: + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r1, [r4, 0x1A] + adds r0, r1 + strh r0, [r4, 0x1A] +_080D9CDE: + movs r2, 0xB0 + lsls r2, 4 + adds r0, r2, 0 + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldr r0, _080D9D0C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9D14 + ldr r1, _080D9D10 @ =gUnknown_030041B0 + ldrh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + adds r7, r1, 0 + b _080D9D24 + .align 2, 0 +_080D9D0C: .4byte gBattleAnimBankTarget +_080D9D10: .4byte gUnknown_030041B0 +_080D9D14: + ldr r2, _080D9D64 @ =gUnknown_030041B0 + ldrh r1, [r4, 0x1A] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + adds r7, r2, 0 +_080D9D24: + ldr r3, _080D9D68 @ =gUnknown_030041B8 + ldrh r2, [r4, 0x1C] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r3] + adds r0, r1 + strh r0, [r3] + movs r0, 0xFF + ldrb r1, [r4, 0x1A] + movs r5, 0 + strh r1, [r4, 0x1A] + ands r0, r2 + strh r0, [r4, 0x1C] + ldr r0, _080D9D6C @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080D9D5C + strh r5, [r7] + strh r5, [r3] + movs r0, 0x1 + bl sub_80789D4 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080D9D5C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D9D64: .4byte gUnknown_030041B0 +_080D9D68: .4byte gUnknown_030041B8 +_080D9D6C: .4byte gBattleAnimArgs + thumb_func_end sub_80D9C80 + + .align 2, 0 @ Don't pad with nop. |