.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80B3FAC sub_80B3FAC: @ 80B3FAC push {r4-r6,lr} adds r6, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B3FD8 adds r0, r6, 0 movs r1, 0x2 bl StartSpriteAffineAnim ldr r0, _080B3FD4 @ =gBattleAnimArgs ldrh r1, [r0, 0x4] negs r1, r1 strh r1, [r0, 0x4] ldrh r1, [r0] negs r1, r1 strh r1, [r0] b _080B4008 .align 2, 0 _080B3FD4: .4byte gBattleAnimArgs _080B3FD8: ldr r0, _080B406C @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080B4008 adds r0, r6, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r1, _080B4070 @ =gBattleAnimArgs ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] ldrh r0, [r1, 0x6] negs r0, r0 strh r0, [r1, 0x6] ldrh r0, [r1] negs r0, r0 strh r0, [r1] _080B4008: ldr r5, _080B406C @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, _080B4070 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4] adds r0, r1 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 strh r0, [r6, 0x22] ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] adds r0, r1 strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r6, 0x36] ldr r0, _080B4074 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B4078 @ =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B406C: .4byte gBattleAnimTarget _080B4070: .4byte gBattleAnimArgs _080B4074: .4byte StartAnimLinearTranslation _080B4078: .4byte DestroyAnimSprite thumb_func_end sub_80B3FAC thumb_func_start sub_80B407C sub_80B407C: @ 80B407C push {r4-r6,lr} adds r6, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B40A0 ldr r1, _080B409C @ =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r1] adds r0, r6, 0 movs r1, 0x2 bl StartSpriteAffineAnim b _080B40BC .align 2, 0 _080B409C: .4byte gBattleAnimArgs _080B40A0: ldr r0, _080B4118 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080B40BC ldr r0, _080B411C @ =gBattleAnimArgs ldrh r1, [r0, 0x2] negs r1, r1 strh r1, [r0, 0x2] ldrh r1, [r0] negs r1, r1 strh r1, [r0] _080B40BC: ldr r5, _080B4118 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, _080B411C @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r4] adds r0, r1 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] adds r0, r1 strh r0, [r6, 0x22] ldrh r0, [r4, 0x4] strh r0, [r6, 0x2E] ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x36] ldr r0, _080B4120 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B4124 @ =DestroyAnimSprite adds r0, r6, 0 bl StoreSpriteCallbackInData6 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B4118: .4byte gBattleAnimTarget _080B411C: .4byte gBattleAnimArgs _080B4120: .4byte StartAnimLinearTranslation _080B4124: .4byte DestroyAnimSprite thumb_func_end sub_80B407C thumb_func_start sub_80B4128 sub_80B4128: @ 80B4128 push {r4,r5,lr} adds r5, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B4144 ldr r0, _080B4184 @ =gBattleAnimArgs movs r2, 0x4 ldrsh r1, [r0, r2] lsrs r2, r1, 31 adds r1, r2 asrs r1, 1 strh r1, [r0, 0x4] _080B4144: adds r0, r5, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r1, _080B4184 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] ldrh r0, [r5, 0x22] strh r0, [r5, 0x34] movs r2, 0x8 ldrsh r0, [r1, r2] cmp r0, 0 bne _080B418C ldr r4, _080B4188 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] b _080B419E .align 2, 0 _080B4184: .4byte gBattleAnimArgs _080B4188: .4byte gBattleAnimTarget _080B418C: ldr r0, _080B41B4 @ =gBattleAnimTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 bl SetAverageBattlerPositions _080B419E: adds r0, r5, 0 bl sub_8075678 ldr r0, _080B41B8 @ =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r5, 0x38] ldr r0, _080B41BC @ =sub_80B41C0 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B41B4: .4byte gBattleAnimTarget _080B41B8: .4byte gBattleAnimArgs _080B41BC: .4byte sub_80B41C0 thumb_func_end sub_80B4128 thumb_func_start sub_80B41C0 sub_80B41C0: @ 80B41C0 push {r4,lr} adds r4, r0, 0 bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080B41D6 adds r0, r4, 0 bl DestroyAnimSprite b _080B41F2 _080B41D6: movs r1, 0x3A ldrsh r0, [r4, r1] movs r2, 0x38 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] ldrh r0, [r4, 0x3A] adds r0, 0xD movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3A] _080B41F2: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B41C0 thumb_func_start sub_80B41F8 sub_80B41F8: @ 80B41F8 push {r4,lr} adds r4, r0, 0 ldr r0, _080B4228 @ =gBattleAnimTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 adds r3, r4, 0 adds r3, 0x22 movs r1, 0 bl SetAverageBattlerPositions ldr r0, _080B422C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B4234 ldr r0, _080B4230 @ =gBattleAnimArgs ldrh r1, [r4, 0x20] ldrh r2, [r0] subs r1, r2 strh r1, [r4, 0x20] b _080B4240 .align 2, 0 _080B4228: .4byte gBattleAnimTarget _080B422C: .4byte gBattleAnimAttacker _080B4230: .4byte gBattleAnimArgs _080B4234: ldr r1, _080B4268 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] adds r0, r1, 0 _080B4240: ldrh r0, [r0, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldr r0, _080B426C @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080B425C ldrh r0, [r4, 0x22] adds r0, 0x8 strh r0, [r4, 0x22] _080B425C: ldr r0, _080B4270 @ =sub_80B4274 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080B4268: .4byte gBattleAnimArgs _080B426C: .4byte gBattleAnimTarget _080B4270: .4byte sub_80B4274 thumb_func_end sub_80B41F8 thumb_func_start sub_80B4274 sub_80B4274: @ 80B4274 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 _080B42A8 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] _080B42A8: ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080B42BC adds r0, r3, 0 bl DestroyAnimSprite _080B42BC: pop {r0} bx r0 thumb_func_end sub_80B4274 thumb_func_start sub_80B42C0 sub_80B42C0: @ 80B42C0 push {r4,lr} adds r4, r0, 0 movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg movs r0, 0x52 movs r1, 0x10 bl SetGpuReg movs r0, 0x10 strh r0, [r4, 0x2E] ldr r0, _080B42E4 @ =sub_80B42E8 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080B42E4: .4byte sub_80B42E8 thumb_func_end sub_80B42C0 thumb_func_start sub_80B42E8 sub_80B42E8: @ 80B42E8 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x32] movs r2, 0x32 ldrsh r0, [r4, r2] cmp r0, 0x13 bgt _080B42FC adds r0, r1, 0x1 strh r0, [r4, 0x32] b _080B433A _080B42FC: ldrh r1, [r4, 0x30] adds r0, r1, 0x1 strh r0, [r4, 0x30] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080B433A ldrh r1, [r4, 0x2E] subs r1, 0x1 strh r1, [r4, 0x2E] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080B433A adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080B4340 @ =sub_80B4344 str r0, [r4, 0x1C] _080B433A: pop {r4} pop {r0} bx r0 .align 2, 0 _080B4340: .4byte sub_80B4344 thumb_func_end sub_80B42E8 thumb_func_start sub_80B4344 sub_80B4344: @ 80B4344 push {r4,lr} adds r4, r0, 0 movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg adds r0, r4, 0 bl DestroyAnimSprite pop {r4} pop {r0} bx r0 thumb_func_end sub_80B4344 thumb_func_start sub_80B4364 sub_80B4364: @ 80B4364 push {r4-r7,lr} sub sp, 0x4 adds r7, r0, 0 bl IsContest lsls r0, 24 cmp r0, 0 beq _080B4384 ldr r1, _080B4380 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] b _080B43A6 .align 2, 0 _080B4380: .4byte gBattleAnimArgs _080B4384: ldr r0, _080B4480 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B43A6 ldr r1, _080B4484 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] ldrh r0, [r1, 0x6] negs r0, r0 strh r0, [r1, 0x6] _080B43A6: bl IsContest lsls r0, 24 cmp r0, 0 bne _080B43F6 ldr r0, _080B4480 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide adds r4, r0, 0 ldr r5, _080B4488 @ =gBattleAnimTarget ldrb r0, [r5] bl GetBattlerSide lsls r4, 24 lsls r0, 24 cmp r4, r0 bne _080B43F6 ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 cmp r0, 0 beq _080B43E4 ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080B43F6 _080B43E4: ldr r0, _080B4484 @ =gBattleAnimArgs movs r2, 0x4 ldrsh r1, [r0, r2] negs r1, r1 strh r1, [r0, 0x4] movs r2, 0 ldrsh r1, [r0, r2] negs r1, r1 strh r1, [r0] _080B43F6: adds r0, r7, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r5, _080B4488 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 ldr r6, _080B4484 @ =gBattleAnimArgs lsrs r4, 24 ldrh r0, [r6, 0x4] adds r4, r0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldrh r2, [r6, 0x6] adds r1, r2 lsls r1, 16 ldrh r2, [r7, 0x20] lsls r0, r4, 16 asrs r0, 16 subs r0, r2 lsls r0, 16 asrs r0, 16 ldrh r2, [r7, 0x22] lsrs r5, r1, 16 asrs r1, 16 subs r1, r2 lsls r1, 16 asrs r1, 16 bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 adds r0, r1 lsrs r0, 16 movs r3, 0x80 lsls r3, 1 str r0, [sp] adds r0, r7, 0 movs r1, 0 adds r2, r3, 0 bl TrySetSpriteRotScale ldrh r0, [r6, 0x8] strh r0, [r7, 0x2E] strh r4, [r7, 0x32] strh r5, [r7, 0x36] ldr r0, _080B448C @ =StartAnimLinearTranslation str r0, [r7, 0x1C] ldr r1, _080B4490 @ =DestroyAnimSprite adds r0, r7, 0 bl StoreSpriteCallbackInData6 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B4480: .4byte gBattleAnimAttacker _080B4484: .4byte gBattleAnimArgs _080B4488: .4byte gBattleAnimTarget _080B448C: .4byte StartAnimLinearTranslation _080B4490: .4byte DestroyAnimSprite thumb_func_end sub_80B4364 thumb_func_start sub_80B4494 sub_80B4494: @ 80B4494 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 bl InitSpritePosToAnimAttacker ldr r0, _080B4500 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080B44B4 ldr r1, _080B4504 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] negs r0, r0 strh r0, [r1, 0x4] _080B44B4: ldr r4, _080B4504 @ =gBattleAnimArgs ldrh r0, [r4, 0x8] strh r0, [r6, 0x2E] ldr r5, _080B4508 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] adds r0, r1 strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] adds r0, r1 strh r0, [r6, 0x36] ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] adds r0, r6, 0 bl InitAnimArcTranslation ldr r0, _080B450C @ =sub_80B4510 str r0, [r6, 0x1C] adds r2, r6, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B4500: .4byte gBattleAnimAttacker _080B4504: .4byte gBattleAnimArgs _080B4508: .4byte gBattleAnimTarget _080B450C: .4byte sub_80B4510 thumb_func_end sub_80B4494 thumb_func_start sub_80B4510 sub_80B4510: @ 80B4510 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x14 adds r4, r0, 0 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] adds r0, r4, 0 bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B453C adds r0, r4, 0 bl DestroyAnimSprite b _080B45CC _080B453C: movs r0, 0x2E adds r0, r4 mov r8, r0 ldrh r7, [r4, 0x20] ldrh r5, [r4, 0x24] ldrh r1, [r4, 0x22] mov r12, r1 ldrh r6, [r4, 0x26] mov r2, r8 add r1, sp, 0x4 movs r3, 0x7 _080B4552: ldrh r0, [r2] strh r0, [r1] adds r2, 0x2 adds r1, 0x2 subs r3, 0x1 cmp r3, 0 bge _080B4552 adds r0, r7, r5 lsls r0, 16 lsrs r5, r0, 16 mov r2, r12 adds r0, r2, r6 lsls r0, 16 lsrs r6, r0, 16 adds r0, r4, 0 bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080B45CC ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 lsls r1, r5, 16 asrs r1, 16 subs r0, r1 lsls r0, 16 asrs r0, 16 ldrh r1, [r4, 0x26] ldrh r2, [r4, 0x22] adds r1, r2 lsls r2, r6, 16 asrs r2, 16 subs r1, r2 lsls r1, 16 asrs r1, 16 bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 adds r0, r1 lsrs r0, 16 movs r3, 0x80 lsls r3, 1 str r0, [sp] adds r0, r4, 0 movs r1, 0 adds r2, r3, 0 bl TrySetSpriteRotScale add r2, sp, 0x4 mov r1, r8 movs r3, 0x7 _080B45BE: ldrh r0, [r2] strh r0, [r1] adds r2, 0x2 adds r1, 0x2 subs r3, 0x1 cmp r3, 0 bge _080B45BE _080B45CC: add sp, 0x14 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80B4510 thumb_func_start sub_80B45D8 sub_80B45D8: @ 80B45D8 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _080B45EC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080B45F4 ldr r4, _080B45F0 @ =gBattleAnimAttacker b _080B45F6 .align 2, 0 _080B45EC: .4byte gBattleAnimArgs _080B45F0: .4byte gBattleAnimAttacker _080B45F4: ldr r4, _080B4628 @ =gBattleAnimTarget _080B45F6: ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x12 strh r0, [r5, 0x22] ldr r1, _080B462C @ =DestroySpriteAndMatrix adds r0, r5, 0 bl StoreSpriteCallbackInData6 ldr r0, _080B4630 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B4628: .4byte gBattleAnimTarget _080B462C: .4byte DestroySpriteAndMatrix _080B4630: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80B45D8 .align 2, 0 @ Don't pad with nop.