.include "constants/gba_constants.inc" .include "include/macros.inc" .syntax unified .text @ ice thumb_func_start sub_80D76C4 sub_80D76C4: @ 80D76C4 push {r4,lr} adds r4, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080D76F8 ldr r3, _080D7700 @ =gTasks movs r0, 0x3C ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] adds r0, r4, 0 bl DestroySprite _080D76F8: pop {r4} pop {r0} bx r0 .align 2, 0 _080D7700: .4byte gTasks thumb_func_end sub_80D76C4 thumb_func_start sub_80D7704 sub_80D7704: @ 80D7704 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r5, r0, 0 ldrh r2, [r5, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x7 ldr r3, _080D780C @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080D7810 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r5, 0x4] ldr r4, _080D7814 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 mov r9, r0 ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r4, _080D7818 @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r4] movs r1, 0x3 str r3, [sp] bl GetBankPosition lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080D781C @ =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] ldrh r0, [r1] ldr r3, [sp] adds r0, r3 strh r0, [r5, 0x30] ldrh r0, [r1, 0x4] mov r4, r9 adds r0, r4, r0 strh r0, [r5, 0x32] ldrh r0, [r1, 0x2] adds r0, r6 strh r0, [r5, 0x34] ldrh r0, [r1, 0x6] mov r7, r8 adds r0, r7, r0 strh r0, [r5, 0x36] adds r0, r5, 0 bl sub_8078314 adds r4, 0x20 movs r0, 0x98 lsls r0, 1 mov r12, r0 ldr r3, [sp] cmp r4, r12 bhi _080D77DE adds r0, r7, 0 adds r0, 0x20 ldrh r1, [r5, 0x30] ldrh r2, [r5, 0x32] cmp r0, 0xE0 bhi _080D77DE adds r4, r1, 0 mov r10, r12 _080D77AA: mov r7, r9 lsls r1, r7, 16 asrs r1, 16 adds r1, r4 lsls r1, 16 mov r7, r8 lsls r0, r7, 16 asrs r0, 16 adds r0, r2 lsls r0, 16 lsrs r0, 16 mov r8, r0 lsrs r0, r1, 16 mov r9, r0 movs r7, 0x80 lsls r7, 14 adds r1, r7 lsrs r1, 16 cmp r1, r10 bhi _080D77DE mov r1, r8 lsls r0, r1, 16 adds r0, r7 lsrs r0, 16 cmp r0, 0xE0 bls _080D77AA _080D77DE: ldrh r0, [r5, 0x30] negs r7, r0 strh r7, [r5, 0x30] ldrh r0, [r5, 0x32] negs r4, r0 strh r4, [r5, 0x32] lsls r0, r3, 16 movs r1, 0x80 lsls r1, 14 adds r0, r1 lsrs r0, 16 movs r2, 0x98 lsls r2, 1 mov r12, r2 ldr r1, _080D781C @ =gBattleAnimArgs mov r10, r1 cmp r0, r12 bhi _080D784A lsls r1, r6, 16 movs r2, 0x80 lsls r2, 14 adds r0, r1, r2 b _080D7842 .align 2, 0 _080D780C: .4byte 0x000003ff _080D7810: .4byte 0xfffffc00 _080D7814: .4byte gAnimBankTarget _080D7818: .4byte gAnimBankAttacker _080D781C: .4byte gBattleAnimArgs _080D7820: lsls r1, r3, 16 asrs r1, 16 adds r1, r7 lsls r1, 16 asrs r0, r2, 16 adds r0, r4 lsls r0, 16 lsrs r6, r0, 16 lsrs r3, r1, 16 movs r0, 0x80 lsls r0, 14 adds r1, r0 lsrs r1, 16 cmp r1, r12 bhi _080D784A lsls r1, r6, 16 adds r0, r1, r0 _080D7842: lsrs r0, 16 adds r2, r1, 0 cmp r0, 0xE0 bls _080D7820 _080D784A: strh r3, [r5, 0x20] strh r6, [r5, 0x22] mov r1, r10 ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] strh r3, [r5, 0x30] mov r2, r9 strh r2, [r5, 0x32] strh r6, [r5, 0x34] mov r3, r8 strh r3, [r5, 0x36] adds r0, r5, 0 bl sub_8078314 mov r7, r10 ldrh r0, [r7, 0xA] strh r0, [r5, 0x34] ldrh r0, [r7, 0xC] strh r0, [r5, 0x36] ldr r0, _080D7884 @ =sub_80D7888 str r0, [r5, 0x1C] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D7884: .4byte sub_80D7888 thumb_func_end sub_80D7704 thumb_func_start sub_80D7888 sub_80D7888: @ 80D7888 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _080D78E0 ldrh r1, [r4, 0x30] ldrh r2, [r4, 0x38] adds r1, r2 strh r1, [r4, 0x38] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x3A] adds r0, r2 strh r0, [r4, 0x3A] strh r1, [r4, 0x24] strh r0, [r4, 0x26] movs r1, 0x3C ldrsh r0, [r4, r1] movs r2, 0x34 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r2, 0x3C ldrsh r0, [r4, r2] movs r2, 0x34 ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x36] ldrh r2, [r4, 0x3C] adds r0, r2 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3C] ldrh r0, [r4, 0x2E] subs r0, 0x1 strh r0, [r4, 0x2E] b _080D78E6 _080D78E0: adds r0, r4, 0 bl DestroyAnimSprite _080D78E6: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D7888 thumb_func_start sub_80D78EC sub_80D78EC: @ 80D78EC push {r4,lr} adds r4, r0, 0 ldr r0, _080D7920 @ =gBattleAnimArgs ldrh r0, [r0] strh r0, [r4, 0x2E] movs r0, 0x3C strh r0, [r4, 0x30] movs r0, 0x9 strh r0, [r4, 0x32] movs r0, 0x1E strh r0, [r4, 0x34] movs r0, 0xFE lsls r0, 8 strh r0, [r4, 0x36] ldr r1, _080D7924 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r1, _080D7928 @ =sub_8078174 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4} pop {r0} bx r0 .align 2, 0 _080D7920: .4byte gBattleAnimArgs _080D7924: .4byte DestroyAnimSprite _080D7928: .4byte sub_8078174 thumb_func_end sub_80D78EC thumb_func_start sub_80D792C sub_80D792C: @ 80D792C push {r4,lr} adds r4, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r0, _080D7960 @ =gAnimBankTarget ldrb r0, [r0] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldr r0, _080D7964 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D796C ldr r0, _080D7968 @ =gBattleAnimArgs ldrh r1, [r4, 0x32] ldrh r0, [r0, 0x4] subs r1, r0 strh r1, [r4, 0x32] b _080D7976 .align 2, 0 _080D7960: .4byte gAnimBankTarget _080D7964: .4byte gAnimBankAttacker _080D7968: .4byte gBattleAnimArgs _080D796C: ldr r0, _080D79A4 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] _080D7976: ldr r0, _080D79A8 @ =gAnimBankTarget ldrb r0, [r0] movs r1, 0x3 bl GetBankPosition lsls r0, 24 ldr r1, _080D79A4 @ =gBattleAnimArgs lsrs r0, 24 ldrh r2, [r1, 0x6] adds r0, r2 strh r0, [r4, 0x36] ldrh r0, [r1, 0x8] strh r0, [r4, 0x2E] ldr r1, _080D79AC @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080D79B0 @ =sub_8078B34 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080D79A4: .4byte gBattleAnimArgs _080D79A8: .4byte gAnimBankTarget _080D79AC: .4byte DestroyAnimSprite _080D79B0: .4byte sub_8078B34 thumb_func_end sub_80D792C thumb_func_start sub_80D79B4 sub_80D79B4: @ 80D79B4 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080D79CC @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r5, r1] cmp r0, 0 bne _080D79D0 adds r0, r4, 0 movs r1, 0x1 bl sub_8078764 b _080D7A06 .align 2, 0 _080D79CC: .4byte gBattleAnimArgs _080D79D0: ldr r0, _080D7A18 @ =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 adds r3, r4, 0 adds r3, 0x22 movs r1, 0x1 bl sub_807A3FC ldr r0, _080D7A1C @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D79F6 ldrh r0, [r5] negs r0, r0 strh r0, [r5] _080D79F6: 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] _080D7A06: ldr r1, _080D7A20 @ =sub_80D7A28 adds r0, r4, 0 bl StoreSpriteCallbackInData ldr r0, _080D7A24 @ =sub_80785E4 str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D7A18: .4byte gAnimBankTarget _080D7A1C: .4byte gAnimBankAttacker _080D7A20: .4byte sub_80D7A28 _080D7A24: .4byte sub_80785E4 thumb_func_end sub_80D79B4 thumb_func_start sub_80D7A28 sub_80D7A28: @ 80D7A28 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 r0, 0x1 strh r0, [r3, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x14 bne _080D7A5E adds r0, r3, 0 bl move_anim_8074EE0 _080D7A5E: pop {r0} bx r0 thumb_func_end sub_80D7A28 thumb_func_start sub_80D7A64 sub_80D7A64: @ 80D7A64 push {r4-r7,lr} sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r6, _080D7AAC @ =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] ldrh r0, [r5, 0x22] strh r0, [r5, 0x34] movs r1, 0xA ldrsh r0, [r6, r1] cmp r0, 0 bne _080D7AB4 ldr r4, _080D7AB0 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] adds r0, r6 strh r0, [r5, 0x36] b _080D7AC6 .align 2, 0 _080D7AAC: .4byte gBattleAnimArgs _080D7AB0: .4byte gAnimBankTarget _080D7AB4: ldr r0, _080D7AE0 @ =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 bl sub_807A3FC _080D7AC6: ldr r0, _080D7AE4 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D7AEC ldr r0, _080D7AE8 @ =gBattleAnimArgs ldrh r1, [r5, 0x32] ldrh r0, [r0, 0x4] subs r1, r0 strh r1, [r5, 0x32] b _080D7AF6 .align 2, 0 _080D7AE0: .4byte gAnimBankTarget _080D7AE4: .4byte gAnimBankAttacker _080D7AE8: .4byte gBattleAnimArgs _080D7AEC: ldr r0, _080D7B94 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] ldrh r2, [r5, 0x32] adds r0, r2 strh r0, [r5, 0x32] _080D7AF6: adds r7, r5, 0 adds r7, 0x2E adds r2, r7, 0 mov r1, sp movs r4, 0x7 _080D7B00: ldrh r0, [r2] strh r0, [r1] adds r2, 0x2 adds r1, 0x2 subs r4, 0x1 cmp r4, 0 bge _080D7B00 adds r0, r5, 0 bl sub_8078D60 ldrh r0, [r5, 0x30] movs r1, 0x1 eors r0, r1 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] eors r0, r1 strh r0, [r5, 0x32] _080D7B22: movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 bl sub_8078CE8 movs r0, 0x20 ldrsh r1, [r5, r0] movs r2, 0x24 ldrsh r0, [r5, r2] adds r1, r0 adds r1, 0x10 movs r0, 0x88 lsls r0, 1 cmp r1, r0 bhi _080D7B56 movs r0, 0x22 ldrsh r1, [r5, r0] movs r2, 0x26 ldrsh r0, [r5, r2] adds r1, r0 cmp r1, 0xA0 bgt _080D7B56 movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _080D7B22 _080D7B56: 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] ldr r6, _080D7B98 @ =sub_8078D8C ldr r1, _080D7B9C @ =sub_80D7BA0 mov r3, sp adds r2, r7, 0 movs r4, 0x7 _080D7B76: ldrh r0, [r3] strh r0, [r2] adds r3, 0x2 adds r2, 0x2 subs r4, 0x1 cmp r4, 0 bge _080D7B76 str r6, [r5, 0x1C] adds r0, r5, 0 bl StoreSpriteCallbackInData add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D7B94: .4byte gBattleAnimArgs _080D7B98: .4byte sub_8078D8C _080D7B9C: .4byte sub_80D7BA0 thumb_func_end sub_80D7A64 thumb_func_start sub_80D7BA0 sub_80D7BA0: @ 80D7BA0 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 movs r5, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] strh r5, [r4, 0x26] strh r5, [r4, 0x24] movs r0, 0x80 strh r0, [r4, 0x2E] ldr r0, _080D7BFC @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 ldr r1, _080D7C00 @ =0x0000ffec cmp r0, 0 beq _080D7BD0 movs r1, 0x14 _080D7BD0: movs r2, 0x2E ldrsh r0, [r4, r2] lsls r1, 16 asrs r1, 16 bl Sin strh r0, [r4, 0x34] movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0xF bl Cos strh r0, [r4, 0x36] strh r5, [r4, 0x38] ldr r1, _080D7C04 @ =sub_80D7C08 str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D7BFC: .4byte gAnimBankAttacker _080D7C00: .4byte 0x0000ffec _080D7C04: .4byte sub_80D7C08 thumb_func_end sub_80D7BA0 thumb_func_start sub_80D7C08 sub_80D7C08: @ 80D7C08 push {r4,lr} adds r4, r0, 0 ldr r0, _080D7C5C @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 ldr r1, _080D7C60 @ =0x0000ffec cmp r0, 0 beq _080D7C1E movs r1, 0x14 _080D7C1E: movs r2, 0x38 ldrsh r0, [r4, r2] cmp r0, 0x1F bgt _080D7C64 movs r2, 0x2E ldrsh r0, [r4, r2] lsls r1, 16 asrs r1, 16 bl Sin ldrh r1, [r4, 0x34] subs r0, r1 strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r1, 0xF bl Cos ldrh r1, [r4, 0x36] subs r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x2E] adds r0, 0x10 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] b _080D7C82 .align 2, 0 _080D7C5C: .4byte gAnimBankAttacker _080D7C60: .4byte 0x0000ffec _080D7C64: ldrh r0, [r4, 0x24] ldrh r2, [r4, 0x20] adds r0, r2 movs r1, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r2, [r4, 0x22] adds r0, r2 strh r0, [r4, 0x22] strh r1, [r4, 0x26] strh r1, [r4, 0x24] strh r1, [r4, 0x36] strh r1, [r4, 0x34] ldr r0, _080D7C88 @ =sub_80D7C8C str r0, [r4, 0x1C] _080D7C82: pop {r4} pop {r0} bx r0 .align 2, 0 _080D7C88: .4byte sub_80D7C8C thumb_func_end sub_80D7C08 thumb_func_start sub_80D7C8C sub_80D7C8C: @ 80D7C8C push {r4,lr} adds r4, r0, 0 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 bl sub_8078CE8 movs r1, 0x20 ldrsh r0, [r4, r1] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 adds r0, 0x10 movs r1, 0x88 lsls r1, 1 cmp r0, r1 bhi _080D7CC8 movs r1, 0x22 ldrsh r0, [r4, r1] movs r2, 0x26 ldrsh r1, [r4, r2] adds r1, r0, r1 movs r0, 0x80 lsls r0, 1 cmp r1, r0 bgt _080D7CC8 movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _080D7CCE _080D7CC8: adds r0, r4, 0 bl DestroyAnimSprite _080D7CCE: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D7C8C thumb_func_start sub_80D7CD4 sub_80D7CD4: @ 80D7CD4 push {r4-r7,lr} sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 bl sub_80787B0 ldr r1, _080D7D18 @ =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] ldrh r0, [r5, 0x22] strh r0, [r5, 0x34] movs r2, 0xE ldrsh r0, [r1, r2] cmp r0, 0 bne _080D7D20 ldr r4, _080D7D1C @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] b _080D7D32 .align 2, 0 _080D7D18: .4byte gBattleAnimArgs _080D7D1C: .4byte gAnimBankTarget _080D7D20: ldr r0, _080D7D50 @ =gAnimBankTarget ldrb r0, [r0] adds r2, r5, 0 adds r2, 0x32 adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 bl sub_807A3FC _080D7D32: ldr r0, _080D7D54 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D7D5C ldr r0, _080D7D58 @ =gBattleAnimArgs ldrh r1, [r5, 0x32] ldrh r2, [r0, 0x4] subs r1, r2 strh r1, [r5, 0x32] adds r1, r0, 0 b _080D7D66 .align 2, 0 _080D7D50: .4byte gAnimBankTarget _080D7D54: .4byte gAnimBankAttacker _080D7D58: .4byte gBattleAnimArgs _080D7D5C: ldr r1, _080D7E10 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] ldrh r2, [r5, 0x32] adds r0, r2 strh r0, [r5, 0x32] _080D7D66: ldrh r0, [r1, 0x6] ldrh r1, [r5, 0x36] adds r0, r1 strh r0, [r5, 0x36] adds r0, r5, 0 bl sub_8078D60 adds r7, r5, 0 adds r7, 0x2E adds r2, r7, 0 mov r1, sp movs r4, 0x7 _080D7D7E: ldrh r0, [r2] strh r0, [r1] adds r2, 0x2 adds r1, 0x2 subs r4, 0x1 cmp r4, 0 bge _080D7D7E ldrh r0, [r5, 0x30] movs r1, 0x1 eors r0, r1 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] eors r0, r1 strh r0, [r5, 0x32] _080D7D9A: movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 bl sub_8078CE8 movs r2, 0x20 ldrsh r1, [r5, r2] movs r2, 0x24 ldrsh r0, [r5, r2] adds r1, r0 adds r1, 0x10 movs r0, 0x88 lsls r0, 1 cmp r1, r0 bhi _080D7DCE movs r0, 0x22 ldrsh r1, [r5, r0] movs r2, 0x26 ldrsh r0, [r5, r2] adds r1, r0 cmp r1, 0xA0 bgt _080D7DCE movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _080D7D9A _080D7DCE: 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] ldr r1, _080D7E10 @ =gBattleAnimArgs ldr r6, _080D7E14 @ =sub_80D7E18 mov r3, sp adds r2, r7, 0 movs r4, 0x7 _080D7DEE: ldrh r0, [r3] strh r0, [r2] adds r3, 0x2 adds r2, 0x2 subs r4, 0x1 cmp r4, 0 bge _080D7DEE ldrh r0, [r1, 0xA] strh r0, [r5, 0x38] ldrh r0, [r1, 0xC] strh r0, [r5, 0x3A] str r6, [r5, 0x1C] add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D7E10: .4byte gBattleAnimArgs _080D7E14: .4byte sub_80D7E18 thumb_func_end sub_80D7CD4 thumb_func_start sub_80D7E18 sub_80D7E18: @ 80D7E18 push {r4,lr} adds r4, r0, 0 bl sub_8078CE8 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080D7E2C movs r0, 0x1 strh r0, [r4, 0x2E] _080D7E2C: movs r2, 0x3C ldrsh r0, [r4, r2] 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 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x3C] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 bne _080D7E82 movs r2, 0x20 ldrsh r0, [r4, r2] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 adds r0, 0x10 movs r1, 0x88 lsls r1, 1 cmp r0, r1 bhi _080D7E7C movs r0, 0x22 ldrsh r1, [r4, r0] movs r2, 0x26 ldrsh r0, [r4, r2] adds r1, r0 cmp r1, 0xA0 bgt _080D7E7C movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _080D7E82 _080D7E7C: adds r0, r4, 0 bl DestroyAnimSprite _080D7E82: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D7E18 thumb_func_start sub_80D7E88 sub_80D7E88: @ 80D7E88 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _080D7EF4 ldr r5, _080D7EA8 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r5, r1] cmp r0, 0 bne _080D7EAC adds r0, r4, 0 movs r1, 0 bl sub_8078764 b _080D7EE2 .align 2, 0 _080D7EA8: .4byte gBattleAnimArgs _080D7EAC: ldr r0, _080D7EEC @ =gAnimBankTarget ldrb r0, [r0] adds r2, r4, 0 adds r2, 0x20 adds r3, r4, 0 adds r3, 0x22 movs r1, 0 bl sub_807A3FC ldr r0, _080D7EF0 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D7ED2 ldrh r0, [r5] negs r0, r0 strh r0, [r5] _080D7ED2: 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] _080D7EE2: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080D7F08 .align 2, 0 _080D7EEC: .4byte gAnimBankTarget _080D7EF0: .4byte gAnimBankAttacker _080D7EF4: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080D7F08 adds r0, r4, 0 bl DestroyAnimSprite _080D7F08: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80D7E88 thumb_func_start sub_80D7F10 sub_80D7F10: @ 80D7F10 push {r4-r6,lr} adds r5, r0, 0 ldr r6, _080D7F30 @ =gBattleAnimArgs movs r1, 0x8 ldrsh r0, [r6, r1] cmp r0, 0 bne _080D7F80 movs r1, 0xA ldrsh r0, [r6, r1] cmp r0, 0 bne _080D7F34 adds r0, r5, 0 movs r1, 0 bl sub_80787B0 b _080D7F72 .align 2, 0 _080D7F30: .4byte gBattleAnimArgs _080D7F34: ldr r4, _080D7F5C @ =gAnimBankAttacker ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 adds r3, r5, 0 adds r3, 0x22 movs r1, 0 bl sub_807A3FC ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D7F60 ldrh r0, [r5, 0x20] ldrh r1, [r6] subs r0, r1 b _080D7F66 .align 2, 0 _080D7F5C: .4byte gAnimBankAttacker _080D7F60: ldrh r0, [r6] ldrh r1, [r5, 0x20] adds r0, r1 _080D7F66: strh r0, [r5, 0x20] ldr r0, _080D7F78 @ =gBattleAnimArgs ldrh r0, [r0, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x22] _080D7F72: ldr r0, _080D7F7C @ =gAnimBankAttacker b _080D7FD0 .align 2, 0 _080D7F78: .4byte gBattleAnimArgs _080D7F7C: .4byte gAnimBankAttacker _080D7F80: movs r1, 0xA ldrsh r0, [r6, r1] cmp r0, 0 bne _080D7F92 adds r0, r5, 0 movs r1, 0 bl sub_8078764 b _080D7FCE _080D7F92: ldr r4, _080D7FB8 @ =gAnimBankTarget ldrb r0, [r4] adds r2, r5, 0 adds r2, 0x20 adds r3, r5, 0 adds r3, 0x22 movs r1, 0 bl sub_807A3FC ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D7FBC ldrh r0, [r5, 0x20] ldrh r1, [r6] subs r0, r1 b _080D7FC2 .align 2, 0 _080D7FB8: .4byte gAnimBankTarget _080D7FBC: ldrh r0, [r6] ldrh r1, [r5, 0x20] adds r0, r1 _080D7FC2: strh r0, [r5, 0x20] ldr r0, _080D7FEC @ =gBattleAnimArgs ldrh r0, [r0, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x22] _080D7FCE: ldr r0, _080D7FF0 @ =gAnimBankTarget _080D7FD0: ldrb r0, [r0] strh r0, [r5, 0x3C] ldr r0, _080D7FEC @ =gBattleAnimArgs movs r1, 0xA ldrsh r0, [r0, r1] cmp r0, 0 beq _080D7FE8 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080D7FF4 _080D7FE8: movs r0, 0x20 b _080D7FF6 .align 2, 0 _080D7FEC: .4byte gBattleAnimArgs _080D7FF0: .4byte gAnimBankTarget _080D7FF4: movs r0, 0x40 _080D7FF6: strh r0, [r5, 0x3A] ldr r0, _080D803C @ =gAnimBankTarget ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _080D800C ldrh r0, [r5, 0x22] adds r0, 0x8 strh r0, [r5, 0x22] _080D800C: ldr r1, _080D8040 @ =gBattleAnimArgs ldrh r0, [r1, 0x6] strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] strh r0, [r5, 0x30] strh r0, [r5, 0x32] ldrh r0, [r5, 0x22] strh r0, [r5, 0x34] ldrh r1, [r1, 0x4] adds r0, r1 strh r0, [r5, 0x36] adds r0, r5, 0 bl obj_translate_based_on_private_1_2_3_4 movs r0, 0x40 strh r0, [r5, 0x38] ldr r1, _080D8044 @ =sub_80D8048 str r1, [r5, 0x1C] adds r0, r5, 0 bl _call_via_r1 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D803C: .4byte gAnimBankTarget _080D8040: .4byte gBattleAnimArgs _080D8044: .4byte sub_80D8048 thumb_func_end sub_80D7F10 thumb_func_start sub_80D8048 sub_80D8048: @ 80D8048 push {r4,lr} adds r4, r0, 0 bl sub_8078B5C lsls r0, 24 cmp r0, 0 bne _080D80D2 movs r1, 0x38 ldrsh r0, [r4, r1] movs r2, 0x3A ldrsh r1, [r4, r2] bl Sin ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] movs r2, 0x38 ldrsh r0, [r4, r2] movs r1, 0x6 negs r1, r1 bl Cos ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x38] subs r0, 0x40 lsls r0, 16 lsrs r0, 16 cmp r0, 0x7F bhi _080D80A4 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 bl sub_8079ED4 movs r1, 0x3 ands r1, r0 lsls r1, 2 ldrb r2, [r4, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] b _080D80C6 _080D80A4: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 bl sub_8079ED4 lsls r0, 24 lsrs r0, 24 adds r0, 0x1 movs r1, 0x3 ands r0, r1 lsls r0, 2 ldrb r2, [r4, 0x5] movs r1, 0xD negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r4, 0x5] _080D80C6: ldrh r0, [r4, 0x38] adds r0, 0x3 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] b _080D80D8 _080D80D2: adds r0, r4, 0 bl DestroyAnimSprite _080D80D8: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D8048 thumb_func_start sub_80D80E0 sub_80D80E0: @ 80D80E0 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080D81A8 @ =REG_BLDCNT ldr r2, _080D81AC @ =0x00003f42 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r2, 0x80 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] ldr r4, _080D81B0 @ =REG_BG1CNT ldrb r1, [r4] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 strb r0, [r4, 0x1] bl IsContest lsls r0, 24 cmp r0, 0 bne _080D812A ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080D812A: ldr r0, _080D81B4 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, _080D81B8 @ =gBattle_BG1_Y strh r1, [r0] ldr r0, _080D81BC @ =REG_BG1HOFS strh r1, [r0] adds r0, 0x2 strh r1, [r0] mov r0, sp bl sub_8078914 ldr r1, [sp, 0x4] movs r0, 0 str r0, [sp, 0xC] ldr r0, _080D81C0 @ =0x040000d4 add r2, sp, 0xC str r2, [r0] str r1, [r0, 0x4] ldr r2, _080D81C4 @ =0x85000400 str r2, [r0, 0x8] ldr r2, [r0, 0x8] ldr r2, _080D81C8 @ =gWeatherFog1Tiles ldr r3, [sp] str r2, [r0] str r3, [r0, 0x4] ldr r2, _080D81CC @ =0x80000400 str r2, [r0, 0x8] ldr r0, [r0, 0x8] ldr r0, _080D81D0 @ =gBattleAnimFogTilemap bl LZDecompressVram ldr r0, _080D81D4 @ =gUnknown_083970E8 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadPalette bl IsContest lsls r0, 24 cmp r0, 0 beq _080D8190 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80763FC _080D8190: ldr r0, _080D81D8 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _080D81DC @ =sub_80D81E0 str r0, [r1] add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D81A8: .4byte REG_BLDCNT _080D81AC: .4byte 0x00003f42 _080D81B0: .4byte REG_BG1CNT _080D81B4: .4byte gBattle_BG1_X _080D81B8: .4byte gBattle_BG1_Y _080D81BC: .4byte REG_BG1HOFS _080D81C0: .4byte 0x040000d4 _080D81C4: .4byte 0x85000400 _080D81C8: .4byte gWeatherFog1Tiles _080D81CC: .4byte 0x80000400 _080D81D0: .4byte gBattleAnimFogTilemap _080D81D4: .4byte gUnknown_083970E8 _080D81D8: .4byte gTasks _080D81DC: .4byte sub_80D81E0 thumb_func_end sub_80D80E0 thumb_func_start sub_80D81E0 sub_80D81E0: @ 80D81E0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 lsls r0, 24 lsrs r6, r0, 24 ldr r2, _080D8220 @ =gBattle_BG1_X ldr r1, _080D8224 @ =0x0000ffff adds r0, r1, 0 ldrh r4, [r2] adds r0, r4 strh r0, [r2] ldr r1, _080D8228 @ =gBattle_BG1_Y ldr r3, _080D822C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r3 movs r4, 0x20 ldrsh r0, [r0, r4] adds r4, r1, 0 cmp r0, 0x4 bls _080D8214 b _080D83B0 _080D8214: lsls r0, 2 ldr r1, _080D8230 @ =_080D8234 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080D8220: .4byte gBattle_BG1_X _080D8224: .4byte 0x0000ffff _080D8228: .4byte gBattle_BG1_Y _080D822C: .4byte gTasks _080D8230: .4byte _080D8234 .align 2, 0 _080D8234: .4byte _080D8248 .4byte _080D82A0 .4byte _080D82C2 .4byte _080D8304 .4byte _080D838C _080D8248: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r3, r0, r3 ldrh r0, [r3, 0x1C] adds r0, 0x1 movs r4, 0 strh r0, [r3, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 beq _080D8262 b _080D83B0 _080D8262: strh r4, [r3, 0x1C] ldrh r0, [r3, 0x1A] adds r0, 0x1 strh r0, [r3, 0x1A] ldr r1, _080D8298 @ =gUnknown_083D9D6C movs r2, 0x1A ldrsh r0, [r3, r2] adds r0, r1 ldrb r1, [r0] strh r1, [r3, 0x1E] ldr r2, _080D829C @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r1, 0x1E ldrsh r0, [r3, r1] cmp r0, 0x9 beq _080D828C b _080D83B0 _080D828C: ldrh r0, [r3, 0x20] adds r0, 0x1 strh r0, [r3, 0x20] strh r4, [r3, 0x1E] b _080D83B0 .align 2, 0 _080D8298: .4byte gUnknown_083D9D6C _080D829C: .4byte REG_BLDALPHA _080D82A0: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r3, r0, r3 ldrh r0, [r3, 0x1E] adds r0, 0x1 strh r0, [r3, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x51 bne _080D83B0 movs r0, 0x9 strh r0, [r3, 0x1E] ldrh r0, [r3, 0x20] adds r0, 0x1 strh r0, [r3, 0x20] b _080D83B0 _080D82C2: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r3, r0, r3 ldrh r0, [r3, 0x1C] adds r0, 0x1 strh r0, [r3, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080D83B0 movs r0, 0 strh r0, [r3, 0x1C] ldrh r1, [r3, 0x1E] subs r1, 0x1 strh r1, [r3, 0x1E] ldr r2, _080D8300 @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r2, 0x1E ldrsh r1, [r3, r2] cmp r1, 0 bne _080D83B0 ldrh r0, [r3, 0x20] adds r0, 0x1 strh r0, [r3, 0x20] strh r1, [r3, 0x1E] b _080D83B0 .align 2, 0 _080D8300: .4byte REG_BLDALPHA _080D8304: mov r0, sp bl sub_8078914 ldr r2, [sp] movs r3, 0x80 lsls r3, 6 lsls r4, r6, 2 mov r10, r4 add r5, sp, 0xC movs r7, 0 ldr r1, _080D83C0 @ =0x040000d4 movs r4, 0x80 lsls r4, 5 mov r8, r5 ldr r0, _080D83C4 @ =0x85000400 mov r12, r0 movs r0, 0x85 lsls r0, 24 mov r9, r0 _080D832A: str r7, [sp, 0xC] mov r0, r8 str r0, [r1] str r2, [r1, 0x4] mov r0, r12 str r0, [r1, 0x8] ldr r0, [r1, 0x8] adds r2, r4 subs r3, r4 cmp r3, r4 bhi _080D832A str r7, [sp, 0xC] str r5, [r1] str r2, [r1, 0x4] lsrs r0, r3, 2 mov r2, r9 orrs r0, r2 str r0, [r1, 0x8] ldr r0, [r1, 0x8] ldr r1, [sp, 0x4] movs r0, 0 str r0, [sp, 0xC] ldr r0, _080D83C0 @ =0x040000d4 str r5, [r0] str r1, [r0, 0x4] ldr r1, _080D83C8 @ =0x85000200 str r1, [r0, 0x8] ldr r0, [r0, 0x8] bl IsContest lsls r0, 24 cmp r0, 0 bne _080D8378 ldr r2, _080D83CC @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] _080D8378: ldr r0, _080D83D0 @ =gTasks mov r4, r10 adds r1, r4, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] ldr r2, _080D83D4 @ =gBattle_BG1_X ldr r4, _080D83D8 @ =gBattle_BG1_Y _080D838C: movs r1, 0 strh r1, [r2] strh r1, [r4] ldr r0, _080D83DC @ =REG_BLDCNT strh r1, [r0] adds r0, 0x2 strh r1, [r0] ldr r2, _080D83CC @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r2] adds r0, r6, 0 bl DestroyAnimVisualTask _080D83B0: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D83C0: .4byte 0x040000d4 _080D83C4: .4byte 0x85000400 _080D83C8: .4byte 0x85000200 _080D83CC: .4byte REG_BG1CNT _080D83D0: .4byte gTasks _080D83D4: .4byte gBattle_BG1_X _080D83D8: .4byte gBattle_BG1_Y _080D83DC: .4byte REG_BLDCNT thumb_func_end sub_80D81E0 thumb_func_start sub_80D83E0 sub_80D83E0: @ 80D83E0 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080D840C @ =gAnimBankAttacker ldrb r0, [r5] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] ldr r0, _080D8410 @ =sub_807941C str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D840C: .4byte gAnimBankAttacker _080D8410: .4byte sub_807941C thumb_func_end sub_80D83E0 thumb_func_start sub_80D8414 sub_80D8414: @ 80D8414 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080D84E0 @ =REG_BLDCNT ldr r2, _080D84E4 @ =0x00003f42 adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r2, 0x80 lsls r2, 5 adds r0, r2, 0 strh r0, [r1] ldr r4, _080D84E8 @ =REG_BG1CNT ldrb r1, [r4] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r4] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 strb r0, [r4, 0x1] bl IsContest lsls r0, 24 cmp r0, 0 bne _080D845E ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080D845E: ldr r0, _080D84EC @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, _080D84F0 @ =gBattle_BG1_Y strh r1, [r0] ldr r0, _080D84F4 @ =REG_BG1HOFS strh r1, [r0] adds r0, 0x2 strh r1, [r0] mov r0, sp bl sub_8078914 ldr r1, [sp, 0x4] movs r0, 0 str r0, [sp, 0xC] ldr r0, _080D84F8 @ =0x040000d4 add r2, sp, 0xC str r2, [r0] str r1, [r0, 0x4] ldr r2, _080D84FC @ =0x85000400 str r2, [r0, 0x8] ldr r2, [r0, 0x8] ldr r2, _080D8500 @ =gWeatherFog1Tiles ldr r3, [sp] str r2, [r0] str r3, [r0, 0x4] ldr r2, _080D8504 @ =0x80000400 str r2, [r0, 0x8] ldr r0, [r0, 0x8] ldr r0, _080D8508 @ =gBattleAnimFogTilemap bl LZDecompressVram ldr r0, _080D850C @ =gUnknown_083970E8 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadPalette bl IsContest lsls r0, 24 cmp r0, 0 beq _080D84C4 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80763FC _080D84C4: ldr r1, _080D8510 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _080D8514 @ =0x0000ffff strh r1, [r0, 0x26] ldr r1, _080D8518 @ =sub_80D851C str r1, [r0] add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D84E0: .4byte REG_BLDCNT _080D84E4: .4byte 0x00003f42 _080D84E8: .4byte REG_BG1CNT _080D84EC: .4byte gBattle_BG1_X _080D84F0: .4byte gBattle_BG1_Y _080D84F4: .4byte REG_BG1HOFS _080D84F8: .4byte 0x040000d4 _080D84FC: .4byte 0x85000400 _080D8500: .4byte gWeatherFog1Tiles _080D8504: .4byte 0x80000400 _080D8508: .4byte gBattleAnimFogTilemap _080D850C: .4byte gUnknown_083970E8 _080D8510: .4byte gTasks _080D8514: .4byte 0x0000ffff _080D8518: .4byte sub_80D851C thumb_func_end sub_80D8414 thumb_func_start sub_80D851C sub_80D851C: @ 80D851C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 lsls r0, 24 lsrs r6, r0, 24 ldr r3, _080D8558 @ =gBattle_BG1_X ldr r4, _080D855C @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r4 ldrh r0, [r1, 0x26] ldrh r2, [r3] adds r0, r2 strh r0, [r3] ldr r2, _080D8560 @ =gBattle_BG1_Y movs r5, 0x20 ldrsh r0, [r1, r5] cmp r0, 0x4 bls _080D854C b _080D86D0 _080D854C: lsls r0, 2 ldr r1, _080D8564 @ =_080D8568 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080D8558: .4byte gBattle_BG1_X _080D855C: .4byte gTasks _080D8560: .4byte gBattle_BG1_Y _080D8564: .4byte _080D8568 .align 2, 0 _080D8568: .4byte _080D857C .4byte _080D85C0 .4byte _080D85E2 .4byte _080D8624 .4byte _080D86AC _080D857C: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r4 ldrh r0, [r4, 0x1A] adds r0, 0x1 strh r0, [r4, 0x1A] ldr r1, _080D85B8 @ =gUnknown_083D9D98 movs r2, 0x1A ldrsh r0, [r4, r2] adds r0, r1 ldrb r1, [r0] strh r1, [r4, 0x1E] ldr r2, _080D85BC @ =REG_BLDALPHA movs r0, 0x11 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r5, 0x1E ldrsh r0, [r4, r5] cmp r0, 0x5 beq _080D85AC b _080D86D0 _080D85AC: ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] movs r0, 0 strh r0, [r4, 0x1E] b _080D86D0 .align 2, 0 _080D85B8: .4byte gUnknown_083D9D98 _080D85BC: .4byte REG_BLDALPHA _080D85C0: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r1, r0, r4 ldrh r0, [r1, 0x1E] adds r0, 0x1 strh r0, [r1, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x51 bne _080D86D0 movs r0, 0x5 strh r0, [r1, 0x1E] ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] b _080D86D0 _080D85E2: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r4 ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080D86D0 movs r0, 0 strh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] subs r1, 0x1 strh r1, [r4, 0x1E] ldr r2, _080D8620 @ =REG_BLDALPHA movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 strh r1, [r2] movs r0, 0x1E ldrsh r1, [r4, r0] cmp r1, 0 bne _080D86D0 ldrh r0, [r4, 0x20] adds r0, 0x1 strh r0, [r4, 0x20] strh r1, [r4, 0x1E] b _080D86D0 .align 2, 0 _080D8620: .4byte REG_BLDALPHA _080D8624: mov r0, sp bl sub_8078914 ldr r2, [sp] movs r3, 0x80 lsls r3, 6 lsls r1, r6, 2 mov r10, r1 add r5, sp, 0xC movs r7, 0 ldr r1, _080D86E0 @ =0x040000d4 movs r4, 0x80 lsls r4, 5 mov r8, r5 ldr r0, _080D86E4 @ =0x85000400 mov r12, r0 movs r0, 0x85 lsls r0, 24 mov r9, r0 _080D864A: str r7, [sp, 0xC] mov r0, r8 str r0, [r1] str r2, [r1, 0x4] mov r0, r12 str r0, [r1, 0x8] ldr r0, [r1, 0x8] adds r2, r4 subs r3, r4 cmp r3, r4 bhi _080D864A str r7, [sp, 0xC] str r5, [r1] str r2, [r1, 0x4] lsrs r0, r3, 2 mov r2, r9 orrs r0, r2 str r0, [r1, 0x8] ldr r0, [r1, 0x8] ldr r1, [sp, 0x4] movs r0, 0 str r0, [sp, 0xC] ldr r0, _080D86E0 @ =0x040000d4 str r5, [r0] str r1, [r0, 0x4] ldr r1, _080D86E8 @ =0x85000200 str r1, [r0, 0x8] ldr r0, [r0, 0x8] bl IsContest lsls r0, 24 cmp r0, 0 bne _080D8698 ldr r2, _080D86EC @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] _080D8698: ldr r0, _080D86F0 @ =gTasks mov r5, r10 adds r1, r5, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] ldr r3, _080D86F4 @ =gBattle_BG1_X ldr r2, _080D86F8 @ =gBattle_BG1_Y _080D86AC: movs r1, 0 strh r1, [r3] strh r1, [r2] ldr r0, _080D86FC @ =REG_BLDCNT strh r1, [r0] adds r0, 0x2 strh r1, [r0] ldr r2, _080D86EC @ =REG_BG1CNT ldrb r1, [r2] movs r0, 0x4 negs r0, r0 ands r0, r1 movs r1, 0x1 orrs r0, r1 strb r0, [r2] adds r0, r6, 0 bl DestroyAnimVisualTask _080D86D0: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D86E0: .4byte 0x040000d4 _080D86E4: .4byte 0x85000400 _080D86E8: .4byte 0x85000200 _080D86EC: .4byte REG_BG1CNT _080D86F0: .4byte gTasks _080D86F4: .4byte gBattle_BG1_X _080D86F8: .4byte gBattle_BG1_Y _080D86FC: .4byte REG_BLDCNT thumb_func_end sub_80D851C thumb_func_start sub_80D8700 sub_80D8700: @ 80D8700 push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r0, 0 ldr r6, _080D87E8 @ =gBattleAnimArgs ldrh r0, [r6] strh r0, [r5, 0x2E] ldr r0, _080D87EC @ =gAnimBankAttacker mov r8, r0 ldrb r0, [r0] movs r1, 0x2 bl GetBankPosition adds r4, r0, 0 ldr r7, _080D87F0 @ =gAnimBankTarget ldrb r0, [r7] movs r1, 0x2 bl GetBankPosition lsls r4, 24 lsls r0, 24 cmp r4, r0 bcs _080D8734 movs r0, 0x80 lsls r0, 8 strh r0, [r5, 0x3C] _080D8734: ldr r3, _080D87F4 @ =gBanksBySide ldrb r0, [r7] adds r0, r3 ldrb r1, [r0] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _080D8794 ldrh r0, [r6, 0x2] negs r0, r0 strh r0, [r6, 0x2] ldrh r0, [r6, 0x6] negs r0, r0 strh r0, [r6, 0x6] movs r1, 0x3C ldrsh r0, [r5, r1] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _080D8790 mov r1, r8 ldrb r0, [r1] adds r0, r3 ldrb r1, [r0] adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _080D8790 movs r0, 0x1 bl GetAnimBankSpriteId ldr r2, _080D87F8 @ =gSprites lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 adds r1, 0x43 ldrb r0, [r1] adds r0, 0x1 adds r1, r5, 0 adds r1, 0x43 strb r0, [r1] _080D8790: movs r0, 0x1 strh r0, [r5, 0x3A] _080D8794: ldr r4, _080D87EC @ =gAnimBankAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldr r6, _080D87E8 @ =gBattleAnimArgs movs r1, 0xE ldrsh r0, [r6, r1] cmp r0, 0 beq _080D87FC ldrh r0, [r6, 0x2] ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] ldr r4, _080D87F0 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] adds r0, r1 strh r0, [r5, 0x32] ldrh r0, [r6, 0x4] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 b _080D8824 .align 2, 0 _080D87E8: .4byte gBattleAnimArgs _080D87EC: .4byte gAnimBankAttacker _080D87F0: .4byte gAnimBankTarget _080D87F4: .4byte gBanksBySide _080D87F8: .4byte gSprites _080D87FC: ldrh r0, [r6, 0x2] ldrh r1, [r5, 0x20] adds r0, r1 strh r0, [r5, 0x30] ldr r4, _080D886C @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] adds r0, r1 strh r0, [r5, 0x32] ldrh r0, [r6, 0x4] ldrh r1, [r5, 0x22] adds r0, r1 strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x1 _080D8824: bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x8] adds r0, r6 strh r0, [r5, 0x36] ldrb r0, [r4] bl sub_8079ED4 lsls r0, 24 lsrs r0, 16 ldrh r1, [r5, 0x3C] orrs r0, r1 strh r0, [r5, 0x3C] bl IsContest lsls r0, 24 cmp r0, 0 beq _080D8858 movs r0, 0x1 strh r0, [r5, 0x3A] adds r1, r5, 0 adds r1, 0x43 movs r0, 0x80 strb r0, [r1] _080D8858: adds r0, r5, 0 bl obj_translate_based_on_private_1_2_3_4 ldr r0, _080D8870 @ =sub_80D8874 str r0, [r5, 0x1C] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D886C: .4byte gAnimBankTarget _080D8870: .4byte sub_80D8874 thumb_func_end sub_80D8700 thumb_func_start sub_80D8874 sub_80D8874: @ 80D8874 push {r4-r6,lr} adds r4, r0, 0 ldrh r0, [r4, 0x3C] movs r5, 0xFF movs r1, 0xFF ands r1, r0 cmp r1, 0x1 beq _080D8968 cmp r1, 0x1 bgt _080D888E cmp r1, 0 beq _080D8896 b _080D8AD0 _080D888E: cmp r1, 0x2 bne _080D8894 b _080D8A94 _080D8894: b _080D8AD0 _080D8896: adds r0, r4, 0 bl sub_8078B5C ldr r1, _080D88C0 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] asrs r0, 4 ldrh r2, [r4, 0x24] adds r0, r2 strh r0, [r4, 0x24] movs r1, 0x3A ldrsh r0, [r4, r1] cmp r0, 0 beq _080D88C4 ldrh r0, [r4, 0x38] subs r0, 0x8 b _080D88C8 .align 2, 0 _080D88C0: .4byte gSineTable _080D88C4: ldrh r0, [r4, 0x38] adds r0, 0x8 _080D88C8: ands r0, r5 strh r0, [r4, 0x38] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 ble _080D88D6 b _080D8AD0 _080D88D6: movs r5, 0x50 strh r5, [r4, 0x2E] ldr r6, _080D8928 @ =gAnimBankTarget ldrb r0, [r6] movs r1, 0 bl GetBankPosition lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] strh r0, [r4, 0x30] strh r0, [r4, 0x32] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, 0x1D strh r0, [r4, 0x36] ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] ldr r0, _080D892C @ =gMain ldr r2, _080D8930 @ =0x0000043d adds r0, r2 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080D8938 ldr r1, _080D8934 @ =gBanksBySide ldrb r0, [r6] adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080D8938 movs r0, 0xCC strh r0, [r4, 0x38] b _080D893A .align 2, 0 _080D8928: .4byte gAnimBankTarget _080D892C: .4byte gMain _080D8930: .4byte 0x0000043d _080D8934: .4byte gBanksBySide _080D8938: strh r5, [r4, 0x38] _080D893A: movs r0, 0 strh r0, [r4, 0x26] ldr r1, _080D8964 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] asrs r0, 3 strh r0, [r4, 0x24] ldrh r0, [r4, 0x38] adds r0, 0x2 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] adds r0, r4, 0 bl obj_translate_based_on_private_1_2_3_4 b _080D8AD0 .align 2, 0 _080D8964: .4byte gSineTable _080D8968: adds r0, r4, 0 bl sub_8078B5C ldr r1, _080D89C8 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 adds r0, r1 movs r2, 0 ldrsh r0, [r0, r2] asrs r0, 3 ldrh r2, [r4, 0x24] adds r0, r2 strh r0, [r4, 0x24] movs r2, 0x38 ldrsh r0, [r4, r2] adds r0, 0x40 lsls r0, 1 adds r0, r1 movs r2, 0 ldrsh r1, [r0, r2] lsls r0, r1, 1 adds r0, r1 negs r0, r0 asrs r0, 8 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] ldr r0, _080D89CC @ =gMain ldr r2, _080D89D0 @ =0x0000043d adds r0, r2 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080D89F2 ldrh r1, [r4, 0x38] adds r0, r1, 0 subs r0, 0x40 lsls r0, 16 lsrs r0, 16 adds r3, r1, 0 cmp r0, 0x7F bhi _080D89D4 ldrh r1, [r4, 0x3C] lsls r1, 16 asrs r1, 24 b _080D89DC .align 2, 0 _080D89C8: .4byte gSineTable _080D89CC: .4byte gMain _080D89D0: .4byte 0x0000043d _080D89D4: ldrh r1, [r4, 0x3C] lsls r1, 16 asrs r1, 24 adds r1, 0x1 _080D89DC: movs r0, 0x3 ands r1, r0 lsls r1, 2 ldrb r2, [r4, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] adds r0, r3, 0x4 b _080D8A12 _080D89F2: ldrh r0, [r4, 0x38] subs r0, 0x40 lsls r0, 16 lsrs r0, 16 cmp r0, 0x7F bhi _080D8A06 adds r1, r4, 0 adds r1, 0x43 movs r0, 0x80 b _080D8A0C _080D8A06: adds r1, r4, 0 adds r1, 0x43 movs r0, 0x8C _080D8A0C: strb r0, [r1] ldrh r0, [r4, 0x38] subs r0, 0x4 _080D8A12: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x38] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bgt _080D8AD0 movs r2, 0 movs r0, 0xC0 lsls r0, 2 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] strh r0, [r4, 0x30] ldrh r0, [r4, 0x26] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, 0x4 strh r0, [r4, 0x36] ldr r0, _080D8A68 @ =gMain ldr r1, _080D8A6C @ =0x0000043d adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080D8A78 ldr r1, _080D8A70 @ =gBanksBySide ldr r0, _080D8A74 @ =gAnimBankTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080D8A78 movs r0, 0x80 lsls r0, 1 b _080D8A7A .align 2, 0 _080D8A68: .4byte gMain _080D8A6C: .4byte 0x0000043d _080D8A70: .4byte gBanksBySide _080D8A74: .4byte gAnimBankTarget _080D8A78: ldr r0, _080D8A90 @ =0x0000fff0 _080D8A7A: strh r0, [r4, 0x32] ldrh r0, [r4, 0x3C] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x3C] strh r1, [r4, 0x26] strh r1, [r4, 0x24] adds r0, r4, 0 bl sub_8078BD4 b _080D8AD0 .align 2, 0 _080D8A90: .4byte 0x0000fff0 _080D8A94: adds r0, r4, 0 bl sub_8078B5C lsls r0, 24 cmp r0, 0 beq _080D8AD0 ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080D8AC2 ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 strb r0, [r4, 0x1] _080D8AC2: adds r0, r4, 0 bl DestroySprite ldr r1, _080D8AD8 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] _080D8AD0: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D8AD8: .4byte gAnimVisualTaskCount thumb_func_end sub_80D8874 thumb_func_start sub_80D8ADC sub_80D8ADC: @ 80D8ADC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080D8AF0 @ =gTasks adds r1, r0 ldr r0, _080D8AF4 @ =sub_80D8AF8 str r0, [r1] bx lr .align 2, 0 _080D8AF0: .4byte gTasks _080D8AF4: .4byte sub_80D8AF8 thumb_func_end sub_80D8ADC thumb_func_start sub_80D8AF8 sub_80D8AF8: @ 80D8AF8 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080D8B1C @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r5, [r4, r0] cmp r5, 0x1 beq _080D8B3C cmp r5, 0x1 bgt _080D8B20 cmp r5, 0 beq _080D8B26 b _080D8BA0 .align 2, 0 _080D8B1C: .4byte gTasks _080D8B20: cmp r5, 0x2 beq _080D8B92 b _080D8BA0 _080D8B26: ldrh r0, [r4, 0x10] adds r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080D8BA0 strh r5, [r4, 0x10] strh r5, [r4, 0x12] strh r5, [r4, 0xC] b _080D8B78 _080D8B3C: ldrh r1, [r4, 0x12] movs r3, 0x12 ldrsh r0, [r4, r3] cmp r0, 0 bne _080D8B8C ldrb r0, [r4, 0xE] ldrb r1, [r4, 0xC] movs r3, 0x1 bl sub_80D8BA8 lsls r0, 24 cmp r0, 0 beq _080D8B5C ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] _080D8B5C: ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x3 bne _080D8B88 ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bne _080D8B80 _080D8B78: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080D8BA0 _080D8B80: ldrh r0, [r4, 0x8] subs r0, 0x1 strh r0, [r4, 0x8] b _080D8BA0 _080D8B88: strh r5, [r4, 0x12] b _080D8BA0 _080D8B8C: subs r0, r1, 0x1 strh r0, [r4, 0x12] b _080D8BA0 _080D8B92: movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0 bne _080D8BA0 adds r0, r2, 0 bl DestroyAnimVisualTask _080D8BA0: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80D8AF8 thumb_func_start sub_80D8BA8 sub_80D8BA8: @ 80D8BA8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r2, 24 lsrs r2, 24 str r2, [sp] lsls r3, 24 lsrs r3, 24 mov r10, r3 movs r1, 0 str r1, [sp, 0x4] ldr r1, _080D8C20 @ =gUnknown_083D9DC4 lsrs r0, 22 adds r4, r0, r1 ldrb r0, [r4, 0x3] lsls r0, 24 asrs r0, 28 mov r8, r0 cmp r0, 0x2 beq _080D8C94 ldrh r0, [r4, 0x2] lsls r0, 20 lsrs r0, 24 bl GetBankByIdentity lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 beq _080D8C94 movs r0, 0x1 str r0, [sp, 0x4] adds r0, r5, 0 movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r7, r0, 24 adds r0, r5, 0 movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r6, r0, 24 mov r1, r8 cmp r1, 0 beq _080D8C24 cmp r1, 0x1 beq _080D8C5A b _080D8CA6 .align 2, 0 _080D8C20: .4byte gUnknown_083D9DC4 _080D8C24: adds r0, r5, 0 movs r1, 0x1 bl sub_807A100 lsls r0, 16 asrs r0, 16 movs r1, 0x6 bl __divsi3 lsls r1, r7, 16 asrs r1, 16 subs r1, r0 lsls r1, 16 lsrs r7, r1, 16 adds r0, r5, 0 movs r1, 0 bl sub_807A100 lsls r0, 16 asrs r0, 16 movs r1, 0x6 bl __divsi3 lsls r1, r6, 16 asrs r1, 16 subs r1, r0 b _080D8C8E _080D8C5A: adds r0, r5, 0 movs r1, 0x1 bl sub_807A100 lsls r0, 16 asrs r0, 16 movs r1, 0x6 bl __divsi3 lsls r1, r7, 16 asrs r1, 16 adds r1, r0 lsls r1, 16 lsrs r7, r1, 16 adds r0, r5, 0 movs r1, 0 bl sub_807A100 lsls r0, 16 asrs r0, 16 movs r1, 0x6 bl __divsi3 lsls r1, r6, 16 asrs r1, 16 adds r1, r0 _080D8C8E: lsls r1, 16 lsrs r6, r1, 16 b _080D8CA6 _080D8C94: ldrh r0, [r4] lsls r0, 22 asrs r0, 6 lsrs r7, r0, 16 ldr r0, [r4] lsls r0, 12 asrs r0, 22 lsls r0, 16 lsrs r6, r0, 16 _080D8CA6: lsls r0, r6, 16 asrs r0, 16 adds r0, 0x8 lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 lsls r1, r7, 16 asrs r1, 16 subs r1, r0 ldr r0, _080D8D00 @ =gSpriteTemplate_83D9E3C lsls r1, 16 asrs r1, 16 movs r2, 0x8 negs r2, r2 movs r3, 0x12 bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x40 beq _080D8D08 lsls r4, r5, 4 adds r4, r5 lsls r4, 2 ldr r0, _080D8D04 @ =gSprites adds r4, r0 adds r0, r4, 0 mov r1, r9 bl StartSpriteAffineAnim mov r0, sp ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] strh r7, [r4, 0x34] strh r6, [r4, 0x36] mov r1, r9 strh r1, [r4, 0x38] mov r0, sp ldrh r0, [r0] strh r0, [r4, 0x3A] mov r1, r10 strh r1, [r4, 0x3C] movs r0, 0x1 b _080D8D0A .align 2, 0 _080D8D00: .4byte gSpriteTemplate_83D9E3C _080D8D04: .4byte gSprites _080D8D08: movs r0, 0 _080D8D0A: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80D8BA8 thumb_func_start sub_80D8D1C sub_80D8D1C: @ 80D8D1C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] adds r0, 0x4 strh r0, [r4, 0x20] ldrh r1, [r4, 0x22] adds r2, r1, 0 adds r2, 0x8 strh r2, [r4, 0x22] lsls r0, 16 asrs r0, 16 movs r3, 0x34 ldrsh r1, [r4, r3] cmp r0, r1 bge _080D8D46 lsls r0, r2, 16 asrs r0, 16 movs r2, 0x36 ldrsh r1, [r4, r2] cmp r0, r1 blt _080D8DF6 _080D8D46: movs r3, 0x2E ldrsh r0, [r4, r3] cmp r0, 0x1 bne _080D8DC8 movs r1, 0x38 ldrsh r0, [r4, r1] cmp r0, 0 bne _080D8DC8 ldr r0, _080D8DBC @ =gBattleAnimSpriteTemplate_83D9C78 movs r2, 0x34 ldrsh r1, [r4, r2] movs r3, 0x36 ldrsh r2, [r4, r3] adds r3, r4, 0 adds r3, 0x43 ldrb r3, [r3] bl CreateSprite lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x2E] cmp r0, 0x40 beq _080D8DAA ldr r2, _080D8DC0 @ =gSprites movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r2, 0 adds r1, 0x1C adds r0, r1 ldr r1, _080D8DC4 @ =sub_80D8E00 str r1, [r0] movs r3, 0x2E ldrsh r1, [r4, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0x3A] strh r1, [r0, 0x3A] movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r4, 0x3C] strh r1, [r0, 0x3C] _080D8DAA: ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl DestroySprite b _080D8DF6 .align 2, 0 _080D8DBC: .4byte gBattleAnimSpriteTemplate_83D9C78 _080D8DC0: .4byte gSprites _080D8DC4: .4byte sub_80D8E00 _080D8DC8: ldr r3, _080D8DFC @ =gTasks movs r2, 0x3C ldrsh r1, [r4, r2] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl DestroySprite _080D8DF6: pop {r4} pop {r0} bx r0 .align 2, 0 _080D8DFC: .4byte gTasks thumb_func_end sub_80D8D1C thumb_func_start sub_80D8E00 sub_80D8E00: @ 80D8E00 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, 0x14 bne _080D8E40 ldr r3, _080D8E48 @ =gTasks movs r0, 0x3C ldrsh r1, [r4, r0] lsls r1, 1 movs r0, 0x3A ldrsh r2, [r4, r0] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r1, r0 adds r3, 0x8 adds r1, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix adds r0, r4, 0 bl DestroySprite _080D8E40: pop {r4} pop {r0} bx r0 .align 2, 0 _080D8E48: .4byte gTasks thumb_func_end sub_80D8E00 thumb_func_start unc_080B06FC unc_080B06FC: @ 80D8E4C push {r4-r6,lr} adds r5, r0, 0 ldr r0, _080D8ECC @ =gAnimDisableStructPtr ldr r0, [r0] ldrb r1, [r0, 0x11] lsrs r0, r1, 4 lsls r1, 28 lsrs r1, 28 subs r0, r1 subs r0, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x4 bls _080D8E6A movs r1, 0x4 _080D8E6A: adds r0, r5, 0 bl StartSpriteAffineAnim adds r0, r5, 0 movs r1, 0x1 bl sub_80787B0 ldr r6, _080D8ED0 @ =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] ldr r0, _080D8ED4 @ =gAnimBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 beq _080D8E92 ldrh r0, [r6, 0x4] negs r0, r0 strh r0, [r6, 0x4] _080D8E92: ldr r4, _080D8ED8 @ =gAnimBankTarget ldrb r0, [r4] movs r1, 0x2 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] adds r0, r1 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 bl GetBankPosition lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] adds r0, r1 strh r0, [r5, 0x36] ldrh r0, [r6, 0xA] strh r0, [r5, 0x38] adds r0, r5, 0 bl sub_80786EC ldr r0, _080D8EDC @ =sub_80D8EE0 str r0, [r5, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D8ECC: .4byte gAnimDisableStructPtr _080D8ED0: .4byte gBattleAnimArgs _080D8ED4: .4byte gAnimBankAttacker _080D8ED8: .4byte gAnimBankTarget _080D8EDC: .4byte sub_80D8EE0 thumb_func_end unc_080B06FC thumb_func_start sub_80D8EE0 sub_80D8EE0: @ 80D8EE0 push {r4,lr} adds r4, r0, 0 bl sub_8078718 lsls r0, 24 cmp r0, 0 beq _080D8F02 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim ldr r0, _080D8F08 @ =sub_8078600 str r0, [r4, 0x1C] ldr r1, _080D8F0C @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData _080D8F02: pop {r4} pop {r0} bx r0 .align 2, 0 _080D8F08: .4byte sub_8078600 _080D8F0C: .4byte DestroyAnimSprite thumb_func_end sub_80D8EE0 thumb_func_start sub_80D8F10 sub_80D8F10: @ 80D8F10 push {r4-r6,lr} adds r4, r0, 0 ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 adds r1, 0x8 ldr r3, _080D8F64 @ =0x000003ff adds r0, r3, 0 ands r1, r0 ldr r0, _080D8F68 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] adds r0, r4, 0 movs r1, 0x1 bl sub_8078764 bl Random movs r5, 0xFF ands r5, r0 movs r0, 0x80 lsls r0, 1 adds r6, r0, 0 orrs r5, r6 bl Random ldr r1, _080D8F6C @ =0x000001ff ands r1, r0 adds r0, r1, 0 cmp r0, 0xFF ble _080D8F56 subs r0, r6, r0 lsls r0, 16 lsrs r1, r0, 16 _080D8F56: strh r5, [r4, 0x30] strh r1, [r4, 0x32] ldr r0, _080D8F70 @ =sub_80D8F74 str r0, [r4, 0x1C] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D8F64: .4byte 0x000003ff _080D8F68: .4byte 0xfffffc00 _080D8F6C: .4byte 0x000001ff _080D8F70: .4byte sub_80D8F74 thumb_func_end sub_80D8F10 thumb_func_start sub_80D8F74 sub_80D8F74: @ 80D8F74 push {r4,lr} adds r2, r0, 0 ldrh r0, [r2, 0x30] ldrh r1, [r2, 0x34] adds r3, r0, r1 strh r3, [r2, 0x34] ldrh r1, [r2, 0x32] ldrh r4, [r2, 0x36] adds r1, r4 strh r1, [r2, 0x36] movs r1, 0x1 ands r1, r0 cmp r1, 0 beq _080D8F98 lsls r0, r3, 16 asrs r0, 24 negs r0, r0 b _080D8F9C _080D8F98: lsls r0, r3, 16 asrs r0, 24 _080D8F9C: strh r0, [r2, 0x24] ldrh r0, [r2, 0x36] lsls r0, 16 asrs r0, 24 strh r0, [r2, 0x26] ldrh r0, [r2, 0x2E] adds r0, 0x1 strh r0, [r2, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x15 bne _080D8FBA adds r0, r2, 0 bl DestroyAnimSprite _080D8FBA: pop {r4} pop {r0} bx r0 thumb_func_end sub_80D8F74 thumb_func_start sub_80D8FC0 sub_80D8FC0: @ 80D8FC0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _080D8FE8 @ =gBattleAnimArgs ldrb r3, [r1] lsls r3, 1 adds r3, r1 ldr r1, _080D8FEC @ =gAnimDisableStructPtr ldr r1, [r1] ldrb r1, [r1, 0x11] lsrs r2, r1, 4 lsls r1, 28 lsrs r1, 28 subs r2, r1 subs r2, 0x1 strh r2, [r3] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080D8FE8: .4byte gBattleAnimArgs _080D8FEC: .4byte gAnimDisableStructPtr thumb_func_end sub_80D8FC0 .align 2, 0 @ Don't pad with nop.