.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80B9904 sub_80B9904: @ 80B9904 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080B993C @ =gBattleAnimArgs ldrh r0, [r5] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] ldrh r0, [r5, 0x4] strh r0, [r4, 0x2E] ldr r0, _080B9940 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080B9944 ldrh r0, [r5, 0x6] negs r0, r0 strh r0, [r4, 0x30] movs r0, 0x1 strh r0, [r4, 0x36] b _080B9952 .align 2, 0 _080B993C: .4byte gBattleAnimArgs _080B9940: .4byte gBattleAnimAttacker _080B9944: ldrh r0, [r5, 0x6] strh r0, [r4, 0x30] strh r1, [r4, 0x36] adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim _080B9952: ldr r0, _080B9968 @ =gBattleAnimArgs ldrh r0, [r0, 0x8] strh r0, [r4, 0x34] ldr r1, _080B996C @ =sub_80B9970 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9968: .4byte gBattleAnimArgs _080B996C: .4byte sub_80B9970 thumb_func_end sub_80B9904 thumb_func_start sub_80B9970 sub_80B9970: @ 80B9970 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0x1E bl Cos strh r0, [r4, 0x24] movs r2, 0x2E ldrsh r0, [r4, r2] movs r1, 0xA bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x2E] cmp r0, 0x7F bhi _080B99A2 ldrb r0, [r4, 0x5] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4, 0x5] b _080B99AA _080B99A2: ldrb r0, [r4, 0x5] movs r1, 0xC orrs r0, r1 strb r0, [r4, 0x5] _080B99AA: ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x2E] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 16 movs r2, 0x34 ldrsh r1, [r4, r2] cmp r0, r1 bne _080B99CE adds r0, r4, 0 bl DestroyAnimSprite _080B99CE: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B9970 thumb_func_start sub_80B99D4 sub_80B99D4: @ 80B99D4 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 ldr r4, _080B9A0C @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] bl sub_80B9A14 movs r1, 0x2 ldrsb r1, [r4, r1] ldrb r2, [r4, 0x4] ldrb r3, [r4, 0x6] ldrh r4, [r4, 0x8] str r4, [sp] bl BeginNormalPaletteFade adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080B9A10 @ =sub_80B9A5C str r0, [r5, 0x1C] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9A0C: .4byte gBattleAnimArgs _080B9A10: .4byte sub_80B9A5C thumb_func_end sub_80B99D4 thumb_func_start sub_80B9A14 sub_80B9A14: @ 80B9A14 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC lsls r0, 16 lsrs r0, 16 movs r4, 0x1 mov r8, r0 mov r1, r8 ands r1, r4 mov r8, r1 lsls r0, 16 asrs r1, r0, 17 ands r1, r4 asrs r2, r0, 18 ands r2, r4 asrs r3, r0, 19 ands r3, r4 asrs r6, r0, 20 ands r6, r4 asrs r5, r0, 21 ands r5, r4 asrs r0, 22 ands r0, r4 str r6, [sp] str r5, [sp, 0x4] str r0, [sp, 0x8] mov r0, r8 bl sub_8075BE8 add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80B9A14 thumb_func_start sub_80B9A5C sub_80B9A5C: @ 80B9A5C push {lr} adds r2, r0, 0 ldr r0, _080B9A78 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9A72 adds r0, r2, 0 bl DestroyAnimSprite _080B9A72: pop {r0} bx r0 .align 2, 0 _080B9A78: .4byte gPaletteFade thumb_func_end sub_80B9A5C thumb_func_start sub_80B9A7C sub_80B9A7C: @ 80B9A7C push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080B9AC8 @ =gBattleAnimArgs ldrh r0, [r4, 0x2] strh r0, [r5, 0x2E] strh r0, [r5, 0x30] ldrh r0, [r4, 0x4] strh r0, [r5, 0x32] ldrh r0, [r4, 0x6] strh r0, [r5, 0x34] ldrh r0, [r4, 0x8] strh r0, [r5, 0x36] ldrh r0, [r4, 0xA] strh r0, [r5, 0x38] ldrh r0, [r4, 0xC] strh r0, [r5, 0x3A] ldrh r0, [r4] strh r0, [r5, 0x3C] movs r1, 0x3C ldrsh r0, [r5, r1] bl sub_80B9A14 ldrb r1, [r4, 0x8] ldrh r2, [r4, 0x6] bl BlendPalettes adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080B9ACC @ =sub_80B9AD0 str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9AC8: .4byte gBattleAnimArgs _080B9ACC: .4byte sub_80B9AD0 thumb_func_end sub_80B9A7C thumb_func_start sub_80B9AD0 sub_80B9AD0: @ 80B9AD0 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080B9AE4 subs r0, r1, 0x1 strh r0, [r4, 0x2E] b _080B9B54 _080B9AE4: ldr r0, _080B9B00 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9B54 movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 bne _080B9B08 ldr r0, _080B9B04 @ =sub_80B9B5C str r0, [r4, 0x1C] b _080B9B54 .align 2, 0 _080B9B00: .4byte gPaletteFade _080B9B04: .4byte sub_80B9B5C _080B9B08: movs r2, 0x3C ldrsh r0, [r4, r2] bl sub_80B9A14 adds r3, r0, 0 ldrh r1, [r4, 0x30] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _080B9B2E ldrh r1, [r4, 0x36] lsls r1, 24 lsrs r1, 24 ldrh r2, [r4, 0x34] adds r0, r3, 0 bl BlendPalettes b _080B9B3C _080B9B2E: ldrh r1, [r4, 0x3A] lsls r1, 24 lsrs r1, 24 ldrh r2, [r4, 0x38] adds r0, r3, 0 bl BlendPalettes _080B9B3C: ldrh r0, [r4, 0x30] movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 eors r0, r1 strh r0, [r4, 0x30] movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x32] subs r0, 0x1 strh r0, [r4, 0x32] _080B9B54: pop {r4} pop {r0} bx r0 thumb_func_end sub_80B9AD0 thumb_func_start sub_80B9B5C sub_80B9B5C: @ 80B9B5C push {r4,lr} adds r4, r0, 0 ldr r0, _080B9B88 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9B82 movs r1, 0x3C ldrsh r0, [r4, r1] bl sub_80B9A14 movs r1, 0 movs r2, 0 bl BlendPalettes adds r0, r4, 0 bl DestroyAnimSprite _080B9B82: pop {r4} pop {r0} bx r0 .align 2, 0 _080B9B88: .4byte gPaletteFade thumb_func_end sub_80B9B5C thumb_func_start sub_80B9B8C sub_80B9B8C: @ 80B9B8C push {r4,lr} adds r4, r0, 0 ldr r1, _080B9BD0 @ =gBattleAnimArgs ldrh r0, [r1] ldrh r2, [r4, 0x20] adds r0, r2 movs r2, 0 strh r0, [r4, 0x20] ldrh r0, [r1, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] strh r2, [r4, 0x2E] movs r0, 0xA strh r0, [r4, 0x30] movs r0, 0x8 strh r0, [r4, 0x32] movs r0, 0x28 strh r0, [r4, 0x34] movs r0, 0x70 strh r0, [r4, 0x36] strh r2, [r4, 0x38] ldr r1, _080B9BD4 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r1, _080B9BD8 @ =sub_8074AE0 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080B9BD0: .4byte gBattleAnimArgs _080B9BD4: .4byte move_anim_8074EE0 _080B9BD8: .4byte sub_8074AE0 thumb_func_end sub_80B9B8C thumb_func_start sub_80B9BDC sub_80B9BDC: @ 80B9BDC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080B9C20 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r3, _080B9C24 @ =gBattleAnimArgs ldrh r1, [r3] movs r5, 0 strh r1, [r4, 0x8] ldrh r1, [r3, 0x2] strh r1, [r4, 0xA] ldrh r1, [r3, 0x4] strh r1, [r4, 0xC] ldrh r1, [r3, 0x6] strh r1, [r4, 0xE] ldrh r2, [r3, 0x8] strh r2, [r4, 0x10] ldrh r1, [r3, 0xA] strh r1, [r4, 0x12] strh r5, [r4, 0x18] lsls r2, 24 lsrs r2, 24 movs r1, 0 bl sub_80B9C2C ldr r0, _080B9C28 @ =sub_80B9C7C str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9C20: .4byte gTasks _080B9C24: .4byte gBattleAnimArgs _080B9C28: .4byte sub_80B9C7C thumb_func_end sub_80B9BDC thumb_func_start sub_80B9C2C sub_80B9C2C: @ 80B9C2C push {r4-r6,lr} sub sp, 0x4 adds r5, r1, 0 adds r6, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 ldr r1, _080B9C78 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 movs r1, 0x8 ldrsh r0, [r4, r1] bl sub_80B9A14 movs r1, 0xA ldrsb r1, [r4, r1] ldrh r2, [r4, 0x12] str r2, [sp] adds r2, r5, 0 adds r3, r6, 0 bl BeginNormalPaletteFade ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x18] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x18] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B9C78: .4byte gTasks thumb_func_end sub_80B9C2C thumb_func_start sub_80B9C7C sub_80B9C7C: @ 80B9C7C push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 ldr r0, _080B9CB4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9CDE ldr r1, _080B9CB8 @ =gTasks lsls r2, r3, 2 adds r0, r2, r3 lsls r0, 3 adds r3, r0, r1 movs r5, 0xC ldrsh r0, [r3, r5] adds r6, r1, 0 adds r5, r2, 0 cmp r0, 0 ble _080B9CD8 movs r1, 0x18 ldrsh r0, [r3, r1] cmp r0, 0 bne _080B9CBC ldrb r1, [r3, 0xE] ldrb r2, [r3, 0x10] b _080B9CC0 .align 2, 0 _080B9CB4: .4byte gPaletteFade _080B9CB8: .4byte gTasks _080B9CBC: ldrb r1, [r3, 0x10] ldrb r2, [r3, 0xE] _080B9CC0: adds r0, r5, r4 lsls r0, 3 adds r0, r6 movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0x1 bne _080B9CD0 movs r2, 0 _080B9CD0: adds r0, r4, 0 bl sub_80B9C2C b _080B9CDE _080B9CD8: adds r0, r4, 0 bl DestroyAnimVisualTask _080B9CDE: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80B9C7C thumb_func_start sub_80B9CE4 sub_80B9CE4: @ 80B9CE4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 ldr r3, _080B9D88 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r3 ldr r2, _080B9D8C @ =gBattleAnimArgs ldrh r1, [r2] strh r1, [r0, 0x8] ldrh r1, [r2, 0x2] strh r1, [r0, 0xA] ldrh r1, [r2, 0x4] strh r1, [r0, 0xC] ldrh r1, [r2, 0x6] strh r1, [r0, 0xE] ldrh r1, [r2, 0x8] strh r1, [r0, 0x10] ldrh r1, [r2, 0xA] strh r1, [r0, 0x12] strh r5, [r0, 0x18] movs r4, 0 ldr r0, _080B9D90 @ =gBattlersCount ldrb r1, [r0] mov r9, r3 mov r8, r2 cmp r5, r1 bge _080B9D4C ldr r0, _080B9D94 @ =gBattleAnimAttacker ldrb r3, [r0] ldr r7, _080B9D98 @ =gBattleAnimTarget movs r0, 0x1 mov r12, r0 adds r2, r1, 0 _080B9D32: cmp r4, r3 beq _080B9D46 ldrb r1, [r7] cmp r4, r1 beq _080B9D46 adds r1, r4, 0 adds r1, 0x10 mov r0, r12 lsls r0, r1 orrs r5, r0 _080B9D46: adds r4, 0x1 cmp r4, r2 blt _080B9D32 _080B9D4C: mov r2, r8 movs r1, 0 ldrsh r0, [r2, r1] cmp r0, 0x1 bne _080B9D5A movs r0, 0xE orrs r5, r0 _080B9D5A: lsls r4, r6, 2 adds r4, r6 lsls r4, 3 add r4, r9 lsrs r0, r5, 16 strh r0, [r4, 0x1A] movs r0, 0xFF ands r5, r0 strh r5, [r4, 0x1C] ldrb r2, [r4, 0x10] adds r0, r6, 0 movs r1, 0 bl sub_80B9DA0 ldr r0, _080B9D9C @ =sub_80B9DF0 str r0, [r4] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B9D88: .4byte gTasks _080B9D8C: .4byte gBattleAnimArgs _080B9D90: .4byte gBattlersCount _080B9D94: .4byte gBattleAnimAttacker _080B9D98: .4byte gBattleAnimTarget _080B9D9C: .4byte sub_80B9DF0 thumb_func_end sub_80B9CE4 thumb_func_start sub_80B9DA0 sub_80B9DA0: @ 80B9DA0 push {r4,r5,lr} sub sp, 0x4 adds r5, r1, 0 adds r3, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r5, 24 lsrs r5, 24 lsls r3, 24 lsrs r3, 24 ldr r1, _080B9DEC @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldrh r0, [r4, 0x1A] lsls r0, 16 ldrh r1, [r4, 0x1C] orrs r0, r1 movs r1, 0xA ldrsb r1, [r4, r1] ldrh r2, [r4, 0x12] str r2, [sp] adds r2, r5, 0 bl BeginNormalPaletteFade ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x18] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x18] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9DEC: .4byte gTasks thumb_func_end sub_80B9DA0 thumb_func_start sub_80B9DF0 sub_80B9DF0: @ 80B9DF0 push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 ldr r0, _080B9E28 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9E52 ldr r1, _080B9E2C @ =gTasks lsls r2, r3, 2 adds r0, r2, r3 lsls r0, 3 adds r3, r0, r1 movs r5, 0xC ldrsh r0, [r3, r5] adds r6, r1, 0 adds r5, r2, 0 cmp r0, 0 ble _080B9E4C movs r1, 0x18 ldrsh r0, [r3, r1] cmp r0, 0 bne _080B9E30 ldrb r1, [r3, 0xE] ldrb r2, [r3, 0x10] b _080B9E34 .align 2, 0 _080B9E28: .4byte gPaletteFade _080B9E2C: .4byte gTasks _080B9E30: ldrb r1, [r3, 0x10] ldrb r2, [r3, 0xE] _080B9E34: adds r0, r5, r4 lsls r0, 3 adds r0, r6 movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0x1 bne _080B9E44 movs r2, 0 _080B9E44: adds r0, r4, 0 bl sub_80B9DA0 b _080B9E52 _080B9E4C: adds r0, r4, 0 bl DestroyAnimVisualTask _080B9E52: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80B9DF0 thumb_func_start sub_80B9E58 sub_80B9E58: @ 80B9E58 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080B9E9C @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r3, _080B9EA0 @ =gBattleAnimArgs ldrh r1, [r3] movs r5, 0 strh r1, [r4, 0x8] ldrh r1, [r3, 0x2] strh r1, [r4, 0xA] ldrh r1, [r3, 0x4] strh r1, [r4, 0xC] ldrh r1, [r3, 0x6] strh r1, [r4, 0xE] ldrh r2, [r3, 0x8] strh r2, [r4, 0x10] ldrh r1, [r3, 0xA] strh r1, [r4, 0x12] strh r5, [r4, 0x18] lsls r2, 24 lsrs r2, 24 movs r1, 0 bl sub_80B9EA8 ldr r0, _080B9EA4 @ =sub_80B9F04 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9E9C: .4byte gTasks _080B9EA0: .4byte gBattleAnimArgs _080B9EA4: .4byte sub_80B9F04 thumb_func_end sub_80B9E58 thumb_func_start sub_80B9EA8 sub_80B9EA8: @ 80B9EA8 push {r4-r6,lr} sub sp, 0x4 adds r5, r1, 0 adds r6, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 ldr r1, _080B9F00 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldrh r0, [r4, 0x8] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r2, 0x1 lsls r2, r0 movs r1, 0xA ldrsb r1, [r4, r1] ldrh r0, [r4, 0x12] str r0, [sp] adds r0, r2, 0 adds r2, r5, 0 adds r3, r6, 0 bl BeginNormalPaletteFade ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] ldrh r0, [r4, 0x18] movs r1, 0x1 eors r0, r1 strh r0, [r4, 0x18] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B9F00: .4byte gTasks thumb_func_end sub_80B9EA8 thumb_func_start sub_80B9F04 sub_80B9F04: @ 80B9F04 push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 adds r4, r3, 0 ldr r0, _080B9F3C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B9F66 ldr r1, _080B9F40 @ =gTasks lsls r2, r3, 2 adds r0, r2, r3 lsls r0, 3 adds r3, r0, r1 movs r5, 0xC ldrsh r0, [r3, r5] adds r6, r1, 0 adds r5, r2, 0 cmp r0, 0 ble _080B9F60 movs r1, 0x18 ldrsh r0, [r3, r1] cmp r0, 0 bne _080B9F44 ldrb r1, [r3, 0xE] ldrb r2, [r3, 0x10] b _080B9F48 .align 2, 0 _080B9F3C: .4byte gPaletteFade _080B9F40: .4byte gTasks _080B9F44: ldrb r1, [r3, 0x10] ldrb r2, [r3, 0xE] _080B9F48: adds r0, r5, r4 lsls r0, 3 adds r0, r6 movs r3, 0xC ldrsh r0, [r0, r3] cmp r0, 0x1 bne _080B9F58 movs r2, 0 _080B9F58: adds r0, r4, 0 bl sub_80B9EA8 b _080B9F66 _080B9F60: adds r0, r4, 0 bl DestroyAnimVisualTask _080B9F66: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80B9F04 thumb_func_start sub_80B9F6C sub_80B9F6C: @ 80B9F6C push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 ldr r1, _080B9FCC @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 ldr r5, _080B9FD0 @ =gBattleAnimArgs ldrh r0, [r5, 0x2] strh r0, [r4, 0x8] ldrh r0, [r5, 0x2] strh r0, [r4, 0xA] ldrh r0, [r5, 0x4] strh r0, [r4, 0xC] ldrh r0, [r5, 0x6] strh r0, [r4, 0xE] ldrh r0, [r5, 0x8] strh r0, [r4, 0x10] ldrh r0, [r5, 0xA] strh r0, [r4, 0x12] ldrh r0, [r5, 0xC] strh r0, [r4, 0x14] ldrh r0, [r5] strh r0, [r4, 0x16] ldrh r0, [r5] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 ldrb r3, [r5, 0x8] ldrh r0, [r5, 0x6] str r0, [sp] adds r0, r1, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade ldr r0, _080B9FD4 @ =sub_80B9FD8 str r0, [r4] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B9FCC: .4byte gTasks _080B9FD0: .4byte gBattleAnimArgs _080B9FD4: .4byte sub_80B9FD8 thumb_func_end sub_80B9F6C thumb_func_start sub_80B9FD8 sub_80B9FD8: @ 80B9FD8 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080B9FFC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r1, [r4, 0x8] movs r2, 0x8 ldrsh r0, [r4, r2] cmp r0, 0 ble _080BA000 subs r0, r1, 0x1 strh r0, [r4, 0x8] b _080BA084 .align 2, 0 _080B9FFC: .4byte gTasks _080BA000: ldr r0, _080BA01C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080BA084 movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0 bne _080BA024 ldr r0, _080BA020 @ =sub_80BA090 str r0, [r4] b _080BA084 .align 2, 0 _080BA01C: .4byte gPaletteFade _080BA020: .4byte sub_80BA090 _080BA024: ldrh r0, [r4, 0x16] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r2, 0x1 lsls r2, r0 ldrh r1, [r4, 0xA] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _080BA052 ldrb r3, [r4, 0x10] ldrh r0, [r4, 0xE] str r0, [sp] adds r0, r2, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade b _080BA062 _080BA052: ldrb r3, [r4, 0x14] ldrh r0, [r4, 0x12] str r0, [sp] adds r0, r2, 0 movs r1, 0 adds r2, r3, 0 bl BeginNormalPaletteFade _080BA062: ldr r0, _080BA08C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xA] movs r3, 0x80 lsls r3, 1 adds r2, r3, 0 eors r0, r2 strh r0, [r1, 0xA] movs r2, 0xFF ands r0, r2 strh r0, [r1, 0x8] ldrh r0, [r1, 0xC] subs r0, 0x1 strh r0, [r1, 0xC] _080BA084: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA08C: .4byte gTasks thumb_func_end sub_80B9FD8 thumb_func_start sub_80BA090 sub_80BA090: @ 80BA090 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080BA0E0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _080BA0D6 ldr r1, _080BA0E4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x16] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 str r5, [sp] adds r0, r1, 0 movs r1, 0 movs r2, 0 movs r3, 0 bl BeginNormalPaletteFade adds r0, r4, 0 bl DestroyAnimVisualTask _080BA0D6: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA0E0: .4byte gPaletteFade _080BA0E4: .4byte gTasks thumb_func_end sub_80BA090 thumb_func_start sub_80BA0E8 sub_80BA0E8: @ 80BA0E8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r2, 0 ldr r0, _080BA160 @ =gBattleAnimAttacker ldrb r6, [r0] ldr r0, _080BA164 @ =gBattleAnimTarget ldrb r7, [r0] ldr r4, _080BA168 @ =gBattleAnimArgs ldrh r1, [r4] movs r5, 0x80 lsls r5, 1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080BA122 str r2, [sp] str r2, [sp, 0x4] str r2, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r3, 0 bl sub_8075BE8 adds r2, r0, 0 _080BA122: ldrh r1, [r4, 0x2] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080BA134 movs r0, 0x80 lsls r0, 9 lsls r0, r6 orrs r2, r0 _080BA134: ldrh r1, [r4, 0x4] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080BA146 movs r0, 0x80 lsls r0, 9 lsls r0, r7 orrs r2, r0 _080BA146: adds r0, r2, 0 bl InvertPlttBuffer mov r0, r8 bl DestroyAnimVisualTask add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BA160: .4byte gBattleAnimAttacker _080BA164: .4byte gBattleAnimTarget _080BA168: .4byte gBattleAnimArgs thumb_func_end sub_80BA0E8 thumb_func_start sub_80BA16C sub_80BA16C: @ 80BA16C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r5, 0 ldr r1, _080BA260 @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0 bne _080BA1AE ldr r1, _080BA264 @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r4, 0xC] ldrh r0, [r1, 0x2] strh r0, [r4, 0xE] ldrh r0, [r1, 0x4] strh r0, [r4, 0x10] ldrh r0, [r1, 0x6] strh r0, [r4, 0xA] ldrh r0, [r1, 0x8] strh r0, [r4, 0x12] ldrh r0, [r1, 0xA] strh r0, [r4, 0x14] ldrh r0, [r1, 0xC] strh r0, [r4, 0x16] _080BA1AE: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] ldr r0, _080BA268 @ =gBattleAnimAttacker ldrb r0, [r0] mov r9, r0 ldr r0, _080BA26C @ =gBattleAnimTarget ldrb r0, [r0] mov r10, r0 ldrh r1, [r4, 0xC] movs r7, 0x80 lsls r7, 1 adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080BA1D0 ldr r5, _080BA270 @ =0x0000ffff _080BA1D0: movs r6, 0x1 adds r0, r6, 0 ands r0, r1 cmp r0, 0 beq _080BA200 ldr r2, _080BA274 @ =gSprites ldr r0, _080BA278 @ =gUnknown_3004FF0 add r0, r9 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x14 adds r0, r2 ldr r0, [r0] ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r1, r6, 0 lsls r1, r0 lsls r1, 16 orrs r5, r1 _080BA200: ldrh r1, [r4, 0xE] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080BA214 adds r0, r6, 0 mov r2, r9 lsls r0, r2 lsls r0, 16 orrs r5, r0 _080BA214: ldrh r1, [r4, 0x10] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _080BA228 adds r0, r6, 0 mov r1, r10 lsls r0, r1 lsls r0, 16 orrs r5, r0 _080BA228: movs r1, 0x12 ldrsb r1, [r4, r1] movs r2, 0x14 ldrsb r2, [r4, r2] movs r3, 0x16 ldrsb r3, [r4, r3] adds r0, r5, 0 bl TintPlttBuffer movs r2, 0x8 ldrsh r1, [r4, r2] movs r2, 0xA ldrsh r0, [r4, r2] cmp r1, r0 bne _080BA252 adds r0, r5, 0 bl UnfadePlttBuffer mov r0, r8 bl DestroyAnimVisualTask _080BA252: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BA260: .4byte gTasks _080BA264: .4byte gBattleAnimArgs _080BA268: .4byte gBattleAnimAttacker _080BA26C: .4byte gBattleAnimTarget _080BA270: .4byte 0x0000ffff _080BA274: .4byte gSprites _080BA278: .4byte gUnknown_3004FF0 thumb_func_end sub_80BA16C thumb_func_start sub_80BA27C sub_80BA27C: @ 80BA27C push {r4,lr} adds r4, r0, 0 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r1, _080BA2B0 @ =gBattleAnimArgs ldrh r0, [r1] negs r0, r0 strh r0, [r4, 0x2E] ldrh r0, [r1, 0x2] strh r0, [r4, 0x30] strh r0, [r4, 0x32] ldrh r0, [r1, 0x4] strh r0, [r4, 0x34] movs r2, 0x6 ldrsh r0, [r1, r2] cmp r0, 0x1 beq _080BA2C4 cmp r0, 0x1 bgt _080BA2B4 cmp r0, 0 beq _080BA2BA b _080BA2DC .align 2, 0 _080BA2B0: .4byte gBattleAnimArgs _080BA2B4: cmp r0, 0x2 beq _080BA2CC b _080BA2DC _080BA2BA: ldr r1, _080BA2C0 @ =gBattle_BG3_X b _080BA2CE .align 2, 0 _080BA2C0: .4byte gBattle_BG3_X _080BA2C4: ldr r1, _080BA2C8 @ =gBattle_BG3_Y b _080BA2CE .align 2, 0 _080BA2C8: .4byte gBattle_BG3_Y _080BA2CC: ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX _080BA2CE: adds r0, r4, 0 bl StoreSpriteCallbackInData6 b _080BA2E4 .align 2, 0 _080BA2D8: .4byte gSpriteCoordOffsetX _080BA2DC: ldr r1, _080BA314 @ =gSpriteCoordOffsetY adds r0, r4, 0 bl StoreSpriteCallbackInData6 _080BA2E4: movs r0, 0x3A ldrsh r1, [r4, r0] movs r2, 0x3C ldrsh r0, [r4, r2] lsls r0, 16 orrs r1, r0 ldrh r0, [r1] strh r0, [r4, 0x36] ldr r0, _080BA318 @ =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r4, 0x38] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _080BA308 bl sub_80BA3CC _080BA308: ldr r0, _080BA31C @ =sub_80BA320 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080BA314: .4byte gSpriteCoordOffsetY _080BA318: .4byte gBattleAnimArgs _080BA31C: .4byte sub_80BA320 thumb_func_end sub_80BA27C thumb_func_start sub_80BA320 sub_80BA320: @ 80BA320 push {r4-r7,lr} adds r3, r0, 0 ldrh r1, [r3, 0x34] movs r2, 0x34 ldrsh r0, [r3, r2] cmp r0, 0 ble _080BA362 subs r0, r1, 0x1 strh r0, [r3, 0x34] ldrh r1, [r3, 0x30] movs r2, 0x30 ldrsh r0, [r3, r2] cmp r0, 0 ble _080BA342 subs r0, r1, 0x1 strh r0, [r3, 0x30] b _080BA3BA _080BA342: ldrh r0, [r3, 0x32] strh r0, [r3, 0x30] movs r0, 0x3A ldrsh r1, [r3, r0] movs r2, 0x3C ldrsh r0, [r3, r2] lsls r0, 16 orrs r1, r0 ldrh r0, [r3, 0x2E] ldrh r2, [r1] adds r0, r2 strh r0, [r1] ldrh r0, [r3, 0x2E] negs r0, r0 strh r0, [r3, 0x2E] b _080BA3BA _080BA362: movs r0, 0x3A ldrsh r1, [r3, r0] movs r2, 0x3C ldrsh r0, [r3, r2] lsls r0, 16 orrs r1, r0 ldrh r0, [r3, 0x36] strh r0, [r1] ldrh r0, [r3, 0x38] subs r0, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _080BA3B4 movs r4, 0 ldr r5, _080BA3C0 @ =gBattlersCount ldrb r0, [r5] cmp r4, r0 bcs _080BA3B4 ldr r2, _080BA3C4 @ =gSprites mov r12, r2 ldr r6, _080BA3C8 @ =gBattlerSpriteIds movs r7, 0x3 negs r7, r7 _080BA392: adds r0, r4, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 add r1, r12 adds r1, 0x3E ldrb r2, [r1] adds r0, r7, 0 ands r0, r2 strb r0, [r1] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r5] cmp r4, r0 bcc _080BA392 _080BA3B4: adds r0, r3, 0 bl DestroyAnimSprite _080BA3BA: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BA3C0: .4byte gBattlersCount _080BA3C4: .4byte gSprites _080BA3C8: .4byte gBattlerSpriteIds thumb_func_end sub_80BA320 thumb_func_start sub_80BA3CC sub_80BA3CC: @ 80BA3CC push {r4-r6,lr} ldr r6, _080BA440 @ =gSprites ldr r4, _080BA444 @ =gBattlerSpriteIds ldr r5, _080BA448 @ =gBattleAnimAttacker ldrb r0, [r5] adds r0, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 adds r1, 0x3E ldrb r3, [r1] movs r2, 0x3 negs r2, r2 adds r0, r2, 0 ands r0, r3 strb r0, [r1] ldr r3, _080BA44C @ =gBattleAnimTarget ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] ands r2, r1 strb r2, [r0] ldr r0, _080BA450 @ =gBattleAnimArgs movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0x2 bne _080BA454 ldrb r0, [r5] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] ldrb r0, [r3] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] b _080BA470 .align 2, 0 _080BA440: .4byte gSprites _080BA444: .4byte gBattlerSpriteIds _080BA448: .4byte gBattleAnimAttacker _080BA44C: .4byte gBattleAnimTarget _080BA450: .4byte gBattleAnimArgs _080BA454: cmp r0, 0 bne _080BA45C ldrb r0, [r5] b _080BA45E _080BA45C: ldrb r0, [r3] _080BA45E: adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x2 _080BA470: orrs r1, r2 strb r1, [r0] pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80BA3CC thumb_func_start sub_80BA47C sub_80BA47C: @ 80BA47C push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080BA4BC @ =gTasks lsls r2, r0, 2 adds r2, r0 lsls r2, 3 adds r2, r1 ldr r3, _080BA4C0 @ =gBattleAnimArgs ldrh r1, [r3] strh r1, [r2, 0x8] ldrh r1, [r3, 0x2] strh r1, [r2, 0xA] ldrh r1, [r3, 0x4] strh r1, [r2, 0xC] ldrh r1, [r3, 0x6] strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x18] ldr r4, _080BA4C4 @ =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] ldr r4, _080BA4C8 @ =gBattle_BG3_Y ldrh r1, [r3, 0x2] strh r1, [r4] ldr r1, _080BA4CC @ =sub_80BA4D0 str r1, [r2] bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080BA4BC: .4byte gTasks _080BA4C0: .4byte gBattleAnimArgs _080BA4C4: .4byte gBattle_BG3_X _080BA4C8: .4byte gBattle_BG3_Y _080BA4CC: .4byte sub_80BA4D0 thumb_func_end sub_80BA47C thumb_func_start sub_80BA4D0 sub_80BA4D0: @ 80BA4D0 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080BA500 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r3, r0, r1 ldrh r2, [r3, 0xE] movs r4, 0xE ldrsh r0, [r3, r4] mov r12, r1 cmp r0, 0 bne _080BA556 ldr r0, _080BA504 @ =gBattle_BG3_X ldrh r2, [r0] movs r7, 0x8 ldrsh r1, [r3, r7] adds r6, r0, 0 cmp r2, r1 bne _080BA508 ldrh r0, [r3, 0x8] negs r0, r0 b _080BA50A .align 2, 0 _080BA500: .4byte gTasks _080BA504: .4byte gBattle_BG3_X _080BA508: ldrh r0, [r3, 0x8] _080BA50A: strh r0, [r6] ldr r2, _080BA528 @ =gBattle_BG3_Y ldrh r3, [r2] lsls r1, r5, 2 adds r0, r1, r5 lsls r0, 3 mov r7, r12 adds r4, r0, r7 movs r7, 0xA ldrsh r0, [r4, r7] cmn r3, r0 bne _080BA52C movs r0, 0 b _080BA530 .align 2, 0 _080BA528: .4byte gBattle_BG3_Y _080BA52C: ldrh r0, [r4, 0xA] negs r0, r0 _080BA530: strh r0, [r2] adds r0, r1, r5 lsls r0, 3 add r0, r12 ldrh r1, [r0, 0x18] strh r1, [r0, 0xE] ldrh r1, [r0, 0xC] subs r1, 0x1 strh r1, [r0, 0xC] lsls r1, 16 asrs r1, 16 cmp r1, 0 bne _080BA55A strh r1, [r6] strh r1, [r2] adds r0, r5, 0 bl DestroyAnimVisualTask b _080BA55A _080BA556: subs r0, r2, 0x1 strh r0, [r3, 0xE] _080BA55A: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80BA4D0 thumb_func_start sub_80BA560 sub_80BA560: @ 80BA560 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080BA580 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080BA584 adds r0, r5, 0 movs r1, 0x1 bl sub_8075160 b _080BA58C .align 2, 0 _080BA580: .4byte gBattleAnimArgs _080BA584: adds r0, r5, 0 movs r1, 0x1 bl sub_8075114 _080BA58C: ldr r0, _080BA5A0 @ =sub_8074F50 str r0, [r5, 0x1C] ldr r1, _080BA5A4 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA5A0: .4byte sub_8074F50 _080BA5A4: .4byte DestroyAnimSprite thumb_func_end sub_80BA560 thumb_func_start sub_80BA5A8 sub_80BA5A8: @ 80BA5A8 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080BA5C8 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080BA5CC adds r0, r5, 0 movs r1, 0x1 bl sub_8075160 b _080BA5D4 .align 2, 0 _080BA5C8: .4byte gBattleAnimArgs _080BA5CC: adds r0, r5, 0 movs r1, 0x1 bl sub_8075114 _080BA5D4: ldr r0, _080BA5EC @ =gBattleAnimArgs ldrh r0, [r0, 0x8] strh r0, [r5, 0x2E] ldr r0, _080BA5F0 @ =sub_8074F50 str r0, [r5, 0x1C] ldr r1, _080BA5F4 @ =sub_80B1D3C adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA5EC: .4byte gBattleAnimArgs _080BA5F0: .4byte sub_8074F50 _080BA5F4: .4byte sub_80B1D3C thumb_func_end sub_80BA5A8 thumb_func_start sub_80BA5F8 sub_80BA5F8: @ 80BA5F8 push {r4,lr} adds r4, r0, 0 ldr r0, _080BA628 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080BA61C bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BA61C ldr r1, _080BA62C @ =gBattleAnimArgs ldrh r0, [r1, 0x2] negs r0, r0 strh r0, [r1, 0x2] _080BA61C: adds r0, r4, 0 bl sub_80BA560 pop {r4} pop {r0} bx r0 .align 2, 0 _080BA628: .4byte gBattleAnimAttacker _080BA62C: .4byte gBattleAnimArgs thumb_func_end sub_80BA5F8 thumb_func_start sub_80BA630 sub_80BA630: @ 80BA630 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080BA668 @ =gBattleAnimArgs movs r0, 0x2 ldrsh r1, [r5, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080BA64C bl Random movs r1, 0x3 ands r1, r0 strh r1, [r5, 0x2] _080BA64C: ldrb r1, [r5, 0x2] adds r0, r4, 0 bl StartSpriteAffineAnim movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0 bne _080BA66C adds r0, r4, 0 movs r1, 0 bl sub_8075160 b _080BA674 .align 2, 0 _080BA668: .4byte gBattleAnimArgs _080BA66C: adds r0, r4, 0 movs r1, 0 bl sub_8075114 _080BA674: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x30 bl __umodsi3 ldr r1, _080BA6B8 @ =0x0000ffe8 adds r0, r1 ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x18 bl __umodsi3 ldr r1, _080BA6BC @ =0x0000fff4 adds r0, r1 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldr r1, _080BA6C0 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, _080BA6C4 @ =sub_8074F50 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA6B8: .4byte 0x0000ffe8 _080BA6BC: .4byte 0x0000fff4 _080BA6C0: .4byte move_anim_8074EE0 _080BA6C4: .4byte sub_8074F50 thumb_func_end sub_80BA630 thumb_func_start sub_80BA6C8 sub_80BA6C8: @ 80BA6C8 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080BA728 @ =gBattleAnimArgs ldrb r0, [r5] bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x2E] ldr r2, _080BA72C @ =gSprites movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x24] ldrh r0, [r0, 0x20] adds r1, r0 strh r1, [r4, 0x20] movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x26] ldrh r0, [r0, 0x22] adds r1, r0 strh r1, [r4, 0x22] ldrh r0, [r5, 0x2] strh r0, [r4, 0x24] ldrh r0, [r5, 0x4] strh r0, [r4, 0x26] ldrb r1, [r5, 0x6] adds r0, r4, 0 bl StartSpriteAffineAnim ldr r1, _080BA730 @ =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, _080BA734 @ =sub_8074F50 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA728: .4byte gBattleAnimArgs _080BA72C: .4byte gSprites _080BA730: .4byte move_anim_8074EE0 _080BA734: .4byte sub_8074F50 thumb_func_end sub_80BA6C8 thumb_func_start sub_80BA738 sub_80BA738: @ 80BA738 push {r4,lr} adds r4, r0, 0 ldr r0, _080BA750 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r0, r1] cmp r0, 0 bne _080BA754 adds r0, r4, 0 movs r1, 0x1 bl sub_8075160 b _080BA75C .align 2, 0 _080BA750: .4byte gBattleAnimArgs _080BA754: adds r0, r4, 0 movs r1, 0x1 bl sub_8075114 _080BA75C: ldr r0, _080BA774 @ =gBattleAnimArgs ldrh r0, [r0, 0x6] strh r0, [r4, 0x2E] ldr r1, _080BA778 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, _080BA77C @ =sub_8074C44 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080BA774: .4byte gBattleAnimArgs _080BA778: .4byte DestroyAnimSprite _080BA77C: .4byte sub_8074C44 thumb_func_end sub_80BA738 thumb_func_start sub_80BA780 sub_80BA780: @ 80BA780 push {r4,r5,lr} adds r5, r0, 0 ldr r4, _080BA7A0 @ =gBattleAnimArgs ldrb r1, [r4, 0x6] bl StartSpriteAffineAnim movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 bne _080BA7A4 adds r0, r5, 0 movs r1, 0x1 bl sub_8075160 b _080BA7AC .align 2, 0 _080BA7A0: .4byte gBattleAnimArgs _080BA7A4: adds r0, r5, 0 movs r1, 0x1 bl sub_8075114 _080BA7AC: ldr r0, _080BA7B8 @ =sub_80BA7BC str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BA7B8: .4byte sub_80BA7BC thumb_func_end sub_80BA780 thumb_func_start sub_80BA7BC sub_80BA7BC: @ 80BA7BC push {lr} adds r3, r0, 0 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, 0x2E] adds r1, r0, 0x1 strh r1, [r3, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xC ble _080BA7F2 adds r0, r3, 0 bl DestroyAnimSprite _080BA7F2: pop {r0} bx r0 thumb_func_end sub_80BA7BC .align 2, 0 @ Don't pad with nop.