.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80EEC0C sub_80EEC0C: @ 80EEC0C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x10] ldr r0, _080EEDB4 @ =gBattleAnimAttacker ldrb r4, [r0] ldr r0, _080EEDB8 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080EEDBC @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080EEDC0 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg ldr r1, _080EEDC4 @ =0x00003f3d movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r1, _080EEDC8 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x1 movs r2, 0x1 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute ldr r0, _080EEDCC @ =gHealthboxSpriteIds adds r4, r0 ldrb r0, [r4] ldr r1, _080EEDD0 @ =gSprites mov r9, r1 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 add r4, r9 ldrb r7, [r4, 0x6] ldrh r6, [r4, 0x38] lsls r6, 24 lsrs r6, 24 ldr r0, _080EEDD4 @ =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x14] ldr r0, _080EEDD4 @ =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback mov r10, r0 mov r2, r10 lsls r2, 24 lsrs r2, 24 mov r10, r2 ldrb r1, [r4, 0x5] movs r3, 0xD negs r3, r3 adds r0, r3, 0 ands r0, r1 movs r1, 0x4 mov r8, r1 mov r2, r8 orrs r0, r2 strb r0, [r4, 0x5] lsls r5, r7, 4 adds r5, r7 lsls r5, 2 add r5, r9 ldrb r1, [r5, 0x5] adds r0, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r1, r6, 4 adds r1, r6 lsls r1, 2 add r1, r9 ldrb r2, [r1, 0x5] adds r0, r3, 0 ands r0, r2 mov r2, r8 orrs r0, r2 strb r0, [r1, 0x5] ldr r0, [sp, 0x14] lsls r6, r0, 4 adds r6, r0 lsls r6, 2 mov r1, r9 adds r7, r6, r1 adds r0, r7, 0 adds r1, r4, 0 movs r2, 0x44 str r3, [sp, 0x18] bl memcpy mov r2, r10 lsls r4, r2, 4 add r4, r10 lsls r4, 2 adds r0, r4, 0 add r0, r9 mov r8, r0 adds r1, r5, 0 movs r2, 0x44 bl memcpy ldrb r1, [r7, 0x1] ldr r3, [sp, 0x18] adds r0, r3, 0 ands r0, r1 movs r1, 0x8 orrs r0, r1 strb r0, [r7, 0x1] mov r2, r8 ldrb r0, [r2, 0x1] ands r3, r0 orrs r3, r1 strb r3, [r2, 0x1] movs r0, 0x1C add r9, r0 add r6, r9 ldr r1, _080EEDD4 @ =SpriteCallbackDummy str r1, [r6] add r4, r9 str r1, [r4] mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet mov r2, sp ldrh r2, [r2, 0xA] bl AnimLoadCompressedBgGfx ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette ldr r1, _080EEDE4 @ =gBattle_BG1_X ldrh r0, [r7, 0x20] negs r0, r0 adds r0, 0x20 strh r0, [r1] ldr r1, _080EEDE8 @ =gBattle_BG1_Y ldrh r0, [r7, 0x22] negs r0, r0 subs r0, 0x20 strh r0, [r1] ldr r1, _080EEDEC @ =gTasks ldr r2, [sp, 0x10] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 movs r1, 0xA0 lsls r1, 2 strh r1, [r0, 0xA] mov r1, sp ldrh r1, [r1, 0x14] strh r1, [r0, 0x8] mov r2, r10 strh r2, [r0, 0xC] ldr r1, _080EEDF0 @ =sub_80EEDF4 str r1, [r0] add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080EEDB4: .4byte gBattleAnimAttacker _080EEDB8: .4byte gBattle_WIN0H _080EEDBC: .4byte gBattle_WIN0V _080EEDC0: .4byte 0x00003f3f _080EEDC4: .4byte 0x00003f3d _080EEDC8: .4byte 0x00003f42 _080EEDCC: .4byte gHealthboxSpriteIds _080EEDD0: .4byte gSprites _080EEDD4: .4byte SpriteCallbackDummy _080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap _080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet _080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette _080EEDE4: .4byte gBattle_BG1_X _080EEDE8: .4byte gBattle_BG1_Y _080EEDEC: .4byte gTasks _080EEDF0: .4byte sub_80EEDF4 thumb_func_end sub_80EEC0C thumb_func_start sub_80EEDF4 sub_80EEDF4: @ 80EEDF4 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _080EEE3C @ =gBattleAnimAttacker ldrb r0, [r0] mov r8, r0 ldr r1, _080EEE40 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r5, r0, r1 ldrh r1, [r5, 0xA] ldrh r0, [r5, 0x22] adds r1, r0 movs r3, 0 strh r1, [r5, 0x22] ldr r2, _080EEE44 @ =gBattle_BG1_Y lsls r0, r1, 16 lsrs r0, 24 ldrh r4, [r2] adds r0, r4 strh r0, [r2] movs r0, 0xFF ands r1, r0 strh r1, [r5, 0x22] movs r1, 0x26 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080EEE84 cmp r0, 0x1 bgt _080EEE48 cmp r0, 0 beq _080EEE4E b _080EEFA8 .align 2, 0 _080EEE3C: .4byte gBattleAnimAttacker _080EEE40: .4byte gTasks _080EEE44: .4byte gBattle_BG1_Y _080EEE48: cmp r0, 0x2 beq _080EEE9C b _080EEFA8 _080EEE4E: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bgt _080EEE5E b _080EEFA8 _080EEE5E: strh r3, [r5, 0x1E] ldrh r1, [r5, 0x20] adds r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0x20 ldrsh r0, [r5, r2] cmp r0, 0x8 beq _080EEE82 b _080EEFA8 _080EEE82: b _080EEE94 _080EEE84: ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x1E beq _080EEE94 b _080EEFA8 _080EEE94: ldrh r0, [r5, 0x26] adds r0, 0x1 strh r0, [r5, 0x26] b _080EEFA8 _080EEE9C: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080EEFA8 strh r3, [r5, 0x1E] ldrh r1, [r5, 0x20] subs r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r0, 0x20 ldrsh r4, [r5, r0] cmp r4, 0 bne _080EEFA8 movs r0, 0 bl sub_8073128 ldr r0, _080EEFB4 @ =gBattle_WIN0H strh r4, [r0] ldr r0, _080EEFB8 @ =gBattle_WIN0V strh r4, [r0] ldr r4, _080EEFBC @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg bl IsContest lsls r0, 24 cmp r0, 0 bne _080EEF00 movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _080EEF00: movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r4, 0x8 ldrsh r1, [r5, r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r6, _080EEFC0 @ =gSprites adds r0, r6 bl DestroySprite movs r0, 0xC ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl DestroySprite movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl SetAnimBgAttribute ldr r0, _080EEFC4 @ =gHealthboxSpriteIds add r0, r8 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r2, [r1, 0x6] mov r8, r2 ldrh r4, [r1, 0x38] lsls r4, 24 lsrs r4, 24 ldrb r3, [r1, 0x5] movs r2, 0xD negs r2, r2 adds r0, r2, 0 ands r0, r3 movs r5, 0x4 orrs r0, r5 strb r0, [r1, 0x5] mov r0, r8 lsls r1, r0, 4 add r1, r8 lsls r1, 2 adds r1, r6 ldrb r3, [r1, 0x5] adds r0, r2, 0 ands r0, r3 orrs r0, r5 strb r0, [r1, 0x5] lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r6 ldrb r1, [r0, 0x5] ands r2, r1 orrs r2, r5 strb r2, [r0, 0x5] adds r0, r7, 0 bl DestroyAnimVisualTask _080EEFA8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080EEFB4: .4byte gBattle_WIN0H _080EEFB8: .4byte gBattle_WIN0V _080EEFBC: .4byte 0x00003f3f _080EEFC0: .4byte gSprites _080EEFC4: .4byte gHealthboxSpriteIds thumb_func_end sub_80EEDF4 thumb_func_start sub_80EEFC8 sub_80EEFC8: @ 80EEFC8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 mov r9, r0 adds r7, r1, 0 lsls r2, 24 lsrs r2, 24 ldr r0, _080EF0A0 @ =gHealthboxSpriteIds adds r2, r0 ldrb r0, [r2] lsls r5, r0, 4 adds r5, r0 lsls r5, 2 ldr r0, _080EF0A4 @ =gSprites adds r5, r0 ldrb r1, [r5, 0x6] mov r10, r1 ldrh r4, [r5, 0x38] lsls r4, 24 lsrs r4, 24 ldr r0, _080EF0A8 @ =0x0000d709 bl AllocSpritePalette mov r2, r9 strb r0, [r2] ldr r0, _080EF0AC @ =0x0000d70a bl AllocSpritePalette strb r0, [r7] ldrb r0, [r5, 0x5] lsrs r0, 4 lsls r0, 4 movs r1, 0x80 lsls r1, 1 adds r3, r1, 0 orrs r0, r3 lsls r6, r4, 4 adds r6, r4 lsls r6, 2 ldr r2, _080EF0A4 @ =gSprites adds r6, r2 ldrb r4, [r6, 0x5] lsrs r4, 4 lsls r4, 4 orrs r4, r3 lsls r0, 1 ldr r1, _080EF0B0 @ =gPlttBufferUnfaded mov r8, r1 add r0, r8 mov r2, r9 ldrb r1, [r2] lsls r1, 4 adds r1, r3, r1 movs r2, 0x20 str r3, [sp] bl LoadPalette lsls r4, 1 add r4, r8 ldrb r0, [r7] lsls r0, 4 ldr r3, [sp] adds r3, r0 adds r0, r4, 0 adds r1, r3, 0 movs r2, 0x20 bl LoadPalette mov r0, r9 ldrb r1, [r0] lsls r1, 4 ldrb r2, [r5, 0x5] movs r3, 0xF adds r0, r3, 0 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] mov r2, r10 lsls r1, r2, 4 add r1, r10 lsls r1, 2 ldr r0, _080EF0A4 @ =gSprites adds r1, r0 mov r0, r9 ldrb r2, [r0] lsls r2, 4 ldrb r4, [r1, 0x5] adds r0, r3, 0 ands r0, r4 orrs r0, r2 strb r0, [r1, 0x5] ldrb r0, [r7] lsls r0, 4 ldrb r1, [r6, 0x5] ands r3, r1 orrs r3, r0 strb r3, [r6, 0x5] 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 _080EF0A0: .4byte gHealthboxSpriteIds _080EF0A4: .4byte gSprites _080EF0A8: .4byte 0x0000d709 _080EF0AC: .4byte 0x0000d70a _080EF0B0: .4byte gPlttBufferUnfaded thumb_func_end sub_80EEFC8 thumb_func_start sub_80EF0B4 sub_80EF0B4: @ 80EF0B4 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 mov r1, sp adds r1, 0x1 ldr r0, _080EF0DC @ =gBattleAnimAttacker ldrb r2, [r0] mov r0, sp bl sub_80EEFC8 adds r0, r4, 0 bl DestroyAnimVisualTask add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _080EF0DC: .4byte gBattleAnimAttacker thumb_func_end sub_80EF0B4 thumb_func_start sub_80EF0E0 sub_80EF0E0: @ 80EF0E0 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} lsls r0, 24 lsrs r0, 24 ldr r1, _080EF168 @ =gHealthboxSpriteIds adds r0, r1 ldrb r0, [r0] ldr r1, _080EF16C @ =gSprites mov r8, r1 lsls r5, r0, 4 adds r5, r0 lsls r5, 2 add r5, r8 ldrb r0, [r5, 0x6] mov r9, r0 ldrh r6, [r5, 0x38] lsls r6, 24 lsrs r6, 24 ldr r0, _080EF170 @ =0x0000d709 bl FreeSpritePaletteByTag ldr r0, _080EF174 @ =0x0000d70a bl FreeSpritePaletteByTag ldr r0, _080EF178 @ =0x0000d6ff bl IndexOfSpritePaletteTag adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080EF17C @ =0x0000d704 bl IndexOfSpritePaletteTag lsls r0, 24 lsls r4, 4 ldrb r2, [r5, 0x5] movs r3, 0xF adds r1, r3, 0 ands r1, r2 orrs r1, r4 strb r1, [r5, 0x5] mov r1, r9 lsls r2, r1, 4 add r2, r9 lsls r2, 2 add r2, r8 ldrb r5, [r2, 0x5] adds r1, r3, 0 ands r1, r5 orrs r1, r4 strb r1, [r2, 0x5] lsls r1, r6, 4 adds r1, r6 lsls r1, 2 add r1, r8 lsrs r0, 20 ldrb r2, [r1, 0x5] ands r3, r2 orrs r3, r0 strb r3, [r1, 0x5] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF168: .4byte gHealthboxSpriteIds _080EF16C: .4byte gSprites _080EF170: .4byte 0x0000d709 _080EF174: .4byte 0x0000d70a _080EF178: .4byte 0x0000d6ff _080EF17C: .4byte 0x0000d704 thumb_func_end sub_80EF0E0 thumb_func_start sub_80EF180 sub_80EF180: @ 80EF180 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080EF19C @ =gBattleAnimAttacker ldrb r0, [r0] bl sub_80EF0E0 adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080EF19C: .4byte gBattleAnimAttacker thumb_func_end sub_80EF180 thumb_func_start sub_80EF1A0 sub_80EF1A0: @ 80EF1A0 lsls r0, 24 lsrs r0, 24 ldr r2, _080EF1C0 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r2, _080EF1C4 @ =gBattleAnimArgs ldrh r0, [r2] strh r0, [r1, 0x1C] ldrh r0, [r2, 0x2] strh r0, [r1, 0x1E] ldr r0, _080EF1C8 @ =sub_80EF1CC str r0, [r1] bx lr .align 2, 0 _080EF1C0: .4byte gTasks _080EF1C4: .4byte gBattleAnimArgs _080EF1C8: .4byte sub_80EF1CC thumb_func_end sub_80EF1A0 thumb_func_start sub_80EF1CC sub_80EF1CC: @ 80EF1CC push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080EF218 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x8] adds r0, 0x1 movs r6, 0 adds r1, r0, 0x1 strh r1, [r4, 0x8] lsls r0, 16 asrs r0, 16 movs r2, 0x1E ldrsh r1, [r4, r2] cmp r0, r1 blt _080EF28C strh r6, [r4, 0x8] ldr r0, _080EF21C @ =0x0000d709 bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r2, r0, 24 movs r3, 0x1C ldrsh r0, [r4, r3] movs r1, 0x2 cmp r0, 0 bne _080EF20A movs r1, 0x6 _080EF20A: movs r3, 0xA ldrsh r0, [r4, r3] cmp r0, 0 beq _080EF220 cmp r0, 0x1 beq _080EF25C b _080EF28C .align 2, 0 _080EF218: .4byte gTasks _080EF21C: .4byte 0x0000d709 _080EF220: ldrh r0, [r4, 0xC] adds r0, 0x2 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _080EF232 movs r0, 0x10 strh r0, [r4, 0xC] _080EF232: lsls r0, r2, 4 movs r2, 0x80 lsls r2, 1 adds r0, r2 orrs r0, r1 ldrb r2, [r4, 0xC] ldr r3, _080EF258 @ =0x00007f74 movs r1, 0x1 bl BlendPalette movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0x10 bne _080EF28C ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] b _080EF28C .align 2, 0 _080EF258: .4byte 0x00007f74 _080EF25C: ldrh r0, [r4, 0xC] subs r0, 0x2 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bge _080EF26A strh r6, [r4, 0xC] _080EF26A: lsls r0, r2, 4 movs r2, 0x80 lsls r2, 1 adds r0, r2 orrs r0, r1 ldrb r2, [r4, 0xC] ldr r3, _080EF294 @ =0x00007f74 movs r1, 0x1 bl BlendPalette movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0 bne _080EF28C adds r0, r5, 0 bl DestroyAnimVisualTask _080EF28C: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF294: .4byte 0x00007f74 thumb_func_end sub_80EF1CC thumb_func_start sub_80EF298 sub_80EF298: @ 80EF298 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080EF2C4 @ =gBattlerSpriteIds ldr r0, _080EF2C8 @ =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r5, [r0] ldr r1, _080EF2CC @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080EF2E6 cmp r0, 0x1 bgt _080EF2D0 cmp r0, 0 beq _080EF2D6 b _080EF338 .align 2, 0 _080EF2C4: .4byte gBattlerSpriteIds _080EF2C8: .4byte gBattleAnimAttacker _080EF2CC: .4byte gTasks _080EF2D0: cmp r0, 0x2 beq _080EF318 b _080EF338 _080EF2D6: adds r0, r5, 0 movs r1, 0 bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x1C] b _080EF30A _080EF2E6: ldrh r0, [r4, 0x1C] adds r0, 0x30 strh r0, [r4, 0x1C] movs r0, 0x1C ldrsh r2, [r4, r0] adds r0, r5, 0 adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale adds r0, r5, 0 bl SetBattlerSpriteYOffsetFromYScale movs r0, 0x1C ldrsh r1, [r4, r0] ldr r0, _080EF314 @ =0x000002cf cmp r1, r0 ble _080EF338 _080EF30A: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080EF338 .align 2, 0 _080EF314: .4byte 0x000002cf _080EF318: adds r0, r5, 0 bl ResetSpriteRotScale ldr r1, _080EF340 @ =gSprites lsls r0, r5, 4 adds r0, r5 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] adds r0, r6, 0 bl DestroyAnimVisualTask _080EF338: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF340: .4byte gSprites thumb_func_end sub_80EF298 thumb_func_start sub_80EF344 sub_80EF344: @ 80EF344 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0xC lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080EF37C @ =gBattlerSpriteIds ldr r4, _080EF380 @ =gBattleAnimAttacker ldrb r0, [r4] adds r1, r0, r1 ldrb r1, [r1] mov r9, r1 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080EF38C ldr r1, _080EF384 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080EF388 @ =gPlayerParty b _080EF39C .align 2, 0 _080EF37C: .4byte gBattlerSpriteIds _080EF380: .4byte gBattleAnimAttacker _080EF384: .4byte gBattlerPartyIndexes _080EF388: .4byte gPlayerParty _080EF38C: ldr r1, _080EF3CC @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080EF3D0 @ =gEnemyParty _080EF39C: adds r0, r1 movs r1, 0x26 bl GetMonData lsls r0, 16 lsrs r0, 16 bl ItemIdToBallId lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r2, _080EF3D4 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r6, r0, r2 movs r0, 0x8 ldrsh r7, [r6, r0] cmp r7, 0 beq _080EF3D8 cmp r7, 0x1 beq _080EF458 b _080EF482 .align 2, 0 _080EF3CC: .4byte gBattlerPartyIndexes _080EF3D0: .4byte gEnemyParty _080EF3D4: .4byte gTasks _080EF3D8: ldr r5, _080EF450 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x1 bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 ldr r2, _080EF454 @ =gSprites mov r3, r9 lsls r0, r3, 4 add r0, r9 lsls r0, 2 adds r0, r2 ldrb r2, [r0, 0x5] lsls r2, 28 lsrs r2, 30 adds r0, 0x43 ldrb r3, [r0] movs r0, 0x80 lsls r0, 22 adds r1, r0 lsrs r1, 24 mov r0, r8 str r0, [sp] adds r0, r4, 0 bl LaunchBallStarsTask lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x1C] str r7, [sp] str r7, [sp, 0x4] str r7, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl sub_8075BE8 adds r2, r0, 0 ldrb r1, [r5] movs r0, 0 mov r3, r8 bl LaunchBallFadeMonTask lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x1E] ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] b _080EF482 .align 2, 0 _080EF450: .4byte gBattleAnimAttacker _080EF454: .4byte gSprites _080EF458: movs r1, 0x1C ldrsh r0, [r6, r1] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldrb r0, [r1, 0x4] cmp r0, 0 bne _080EF482 movs r3, 0x1E ldrsh r0, [r6, r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldrb r0, [r1, 0x4] cmp r0, 0 bne _080EF482 adds r0, r5, 0 bl DestroyAnimVisualTask _080EF482: add sp, 0xC pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80EF344 thumb_func_start sub_80EF490 sub_80EF490: @ 80EF490 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080EF4B4 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 lsrs r0, 24 bl LoadBallGfx adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080EF4B4: .4byte gLastUsedItem thumb_func_end sub_80EF490 thumb_func_start sub_80EF4B8 sub_80EF4B8: @ 80EF4B8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080EF4DC @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 lsrs r0, 24 bl FreeBallGfx adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080EF4DC: .4byte gLastUsedItem thumb_func_end sub_80EF4B8 thumb_func_start sub_80EF4E0 sub_80EF4E0: @ 80EF4E0 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080EF4FC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] cmp r0, 0x5 beq _080EF504 cmp r0, 0x6 beq _080EF514 ldr r1, _080EF500 @ =gBattleAnimArgs movs r0, 0 b _080EF518 .align 2, 0 _080EF4FC: .4byte gBattleSpritesDataPtr _080EF500: .4byte gBattleAnimArgs _080EF504: ldr r1, _080EF50C @ =gBattleAnimArgs ldr r0, _080EF510 @ =0x0000ffff b _080EF518 .align 2, 0 _080EF50C: .4byte gBattleAnimArgs _080EF510: .4byte 0x0000ffff _080EF514: ldr r1, _080EF524 @ =gBattleAnimArgs ldr r0, _080EF528 @ =0x0000fffe _080EF518: strh r0, [r1, 0xE] adds r0, r2, 0 bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080EF524: .4byte gBattleAnimArgs _080EF528: .4byte 0x0000fffe thumb_func_end sub_80EF4E0 thumb_func_start ItemIdToBallId ItemIdToBallId: @ 80EF52C push {lr} lsls r0, 16 lsrs r0, 16 subs r0, 0x1 cmp r0, 0xB bhi _080EF5A4 lsls r0, 2 ldr r1, _080EF544 @ =_080EF548 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080EF544: .4byte _080EF548 .align 2, 0 _080EF548: .4byte _080EF578 .4byte _080EF57C .4byte _080EF580 .4byte _080EF5A4 .4byte _080EF584 .4byte _080EF588 .4byte _080EF58C .4byte _080EF590 .4byte _080EF594 .4byte _080EF598 .4byte _080EF59C .4byte _080EF5A0 _080EF578: movs r0, 0x4 b _080EF5A6 _080EF57C: movs r0, 0x3 b _080EF5A6 _080EF580: movs r0, 0x1 b _080EF5A6 _080EF584: movs r0, 0x2 b _080EF5A6 _080EF588: movs r0, 0x5 b _080EF5A6 _080EF58C: movs r0, 0x6 b _080EF5A6 _080EF590: movs r0, 0x7 b _080EF5A6 _080EF594: movs r0, 0x8 b _080EF5A6 _080EF598: movs r0, 0x9 b _080EF5A6 _080EF59C: movs r0, 0xA b _080EF5A6 _080EF5A0: movs r0, 0xB b _080EF5A6 _080EF5A4: movs r0, 0 _080EF5A6: pop {r1} bx r1 thumb_func_end ItemIdToBallId thumb_func_start sub_80EF5AC sub_80EF5AC: @ 80EF5AC push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} mov r10, r0 lsls r0, 24 lsrs r0, 24 mov r10, r0 ldr r0, _080EF674 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 ldr r1, _080EF678 @ =gUnknown_82606F4 adds r0, r1 movs r1, 0x20 movs r2, 0x50 movs r3, 0x1D bl CreateSprite adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r1, _080EF67C @ =gSprites mov r9, r1 lsls r4, r5, 4 adds r4, r5 lsls r4, 2 adds r6, r4, r1 movs r0, 0x22 strh r0, [r6, 0x2E] ldr r2, _080EF680 @ =gBattleAnimTarget mov r8, r2 ldrb r0, [r2] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x30] mov r1, r8 ldrb r0, [r1] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 strh r0, [r6, 0x32] mov r0, r9 adds r0, 0x1C adds r4, r0 ldr r0, _080EF684 @ =sub_80EF8C0 str r0, [r4] ldr r0, _080EF688 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, [r0, 0x8] ldr r1, _080EF68C @ =gBattlerSpriteIds mov r2, r8 ldrb r0, [r2] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r9 adds r0, 0x3E ldrb r1, [r0] lsls r1, 29 lsrs r1, 31 lsls r1, 1 ldrb r2, [r3, 0x9] movs r0, 0x3 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x9] ldr r1, _080EF690 @ =gTasks mov r2, r10 lsls r0, r2, 2 add r0, r10 lsls r0, 3 adds r0, r1 strh r5, [r0, 0x8] ldr r1, _080EF694 @ =sub_80EF698 str r1, [r0] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF674: .4byte gLastUsedItem _080EF678: .4byte gUnknown_82606F4 _080EF67C: .4byte gSprites _080EF680: .4byte gBattleAnimTarget _080EF684: .4byte sub_80EF8C0 _080EF688: .4byte gBattleSpritesDataPtr _080EF68C: .4byte gBattlerSpriteIds _080EF690: .4byte gTasks _080EF694: .4byte sub_80EF698 thumb_func_end sub_80EF5AC thumb_func_start sub_80EF698 sub_80EF698: @ 80EF698 push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r1, _080EF6C8 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0x8] ldr r2, _080EF6CC @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x2E] ldr r0, _080EF6D0 @ =0x0000ffff cmp r1, r0 bne _080EF6C2 adds r0, r3, 0 bl DestroyAnimVisualTask _080EF6C2: pop {r0} bx r0 .align 2, 0 _080EF6C8: .4byte gTasks _080EF6CC: .4byte gSprites _080EF6D0: .4byte 0x0000ffff thumb_func_end sub_80EF698 thumb_func_start sub_80EF6D4 sub_80EF6D4: @ 80EF6D4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _080EF6F4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 beq _080EF6F8 movs r5, 0x1C movs r6, 0xB b _080EF708 .align 2, 0 _080EF6F4: .4byte gBattleTypeFlags _080EF6F8: movs r5, 0x17 movs r6, 0xB ldr r0, _080EF7C4 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] cmp r0, 0x1 bne _080EF708 movs r6, 0xD _080EF708: ldr r0, _080EF7C8 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 bl GetBattlerSpriteSubpriority adds r3, r0, 0 adds r3, 0x1 lsls r3, 24 lsrs r3, 24 lsls r0, r4, 1 adds r0, r4 lsls r0, 3 ldr r1, _080EF7CC @ =gUnknown_82606F4 adds r0, r1 movs r1, 0x20 orrs r5, r1 movs r1, 0x50 orrs r6, r1 adds r1, r5, 0 adds r2, r6, 0 bl CreateSprite adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _080EF7D0 @ =gSprites mov r9, r0 lsls r4, r5, 4 adds r4, r5 lsls r4, 2 adds r6, r4, r0 movs r0, 0x22 strh r0, [r6, 0x2E] ldr r1, _080EF7D4 @ =gBattleAnimTarget mov r8, r1 ldrb r0, [r1] movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x30] mov r1, r8 ldrb r0, [r1] movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 strh r0, [r6, 0x32] movs r0, 0x1C add r9, r0 add r4, r9 ldr r0, _080EF7D8 @ =SpriteCallbackDummy str r0, [r4] movs r0, 0 bl GetBattlerAtPosition ldr r1, _080EF7DC @ =gBattlerSpriteIds lsls r0, 24 lsrs r0, 24 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r9 ldr r1, _080EF7E0 @ =sub_8012354 str r1, [r0] ldr r1, _080EF7E4 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 strh r5, [r0, 0x8] ldr r1, _080EF7E8 @ =sub_80EF7EC str r1, [r0] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080EF7C4: .4byte gSaveBlock2Ptr _080EF7C8: .4byte gLastUsedItem _080EF7CC: .4byte gUnknown_82606F4 _080EF7D0: .4byte gSprites _080EF7D4: .4byte gBattleAnimTarget _080EF7D8: .4byte SpriteCallbackDummy _080EF7DC: .4byte gBattlerSpriteIds _080EF7E0: .4byte sub_8012354 _080EF7E4: .4byte gTasks _080EF7E8: .4byte sub_80EF7EC thumb_func_end sub_80EF6D4 thumb_func_start sub_80EF7EC sub_80EF7EC: @ 80EF7EC push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r6, _080EF84C @ =gSprites movs r0, 0 bl GetBattlerAtPosition ldr r1, _080EF850 @ =gBattlerSpriteIds lsls r0, 24 lsrs r0, 24 adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _080EF846 movs r0, 0x36 movs r1, 0 bl PlaySE12WithPanning ldr r0, _080EF854 @ =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r0 movs r0, 0x8 ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r6, 0 adds r1, 0x1C adds r0, r1 ldr r1, _080EF858 @ =sub_80EF8C0 str r1, [r0] ldr r0, _080EF85C @ =sub_80EF864 movs r1, 0xA bl CreateTask ldr r0, _080EF860 @ =sub_80EF698 str r0, [r4] _080EF846: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF84C: .4byte gSprites _080EF850: .4byte gBattlerSpriteIds _080EF854: .4byte gTasks _080EF858: .4byte sub_80EF8C0 _080EF85C: .4byte sub_80EF864 _080EF860: .4byte sub_80EF698 thumb_func_end sub_80EF7EC thumb_func_start sub_80EF864 sub_80EF864: @ 80EF864 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r6, _080EF8B8 @ =gSprites movs r0, 0 bl GetBattlerAtPosition ldr r4, _080EF8BC @ =gBattlerSpriteIds lsls r0, 24 lsrs r0, 24 adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3F ldrb r0, [r0] lsls r0, 27 cmp r0, 0 bge _080EF8B0 movs r0, 0 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0 bl StartSpriteAnim adds r0, r5, 0 bl DestroyTask _080EF8B0: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080EF8B8: .4byte gSprites _080EF8BC: .4byte gBattlerSpriteIds thumb_func_end sub_80EF864 thumb_func_start sub_80EF8C0 sub_80EF8C0: @ 80EF8C0 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x30] ldrh r2, [r4, 0x32] ldrh r0, [r4, 0x20] strh r0, [r4, 0x30] strh r1, [r4, 0x32] ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] strh r2, [r4, 0x36] ldr r0, _080EF8E8 @ =0x0000ffd8 strh r0, [r4, 0x38] adds r0, r4, 0 bl InitAnimArcTranslation ldr r0, _080EF8EC @ =sub_80EF8F0 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080EF8E8: .4byte 0x0000ffd8 _080EF8EC: .4byte sub_80EF8F0 thumb_func_end sub_80EF8C0 thumb_func_start sub_80EF8F0 sub_80EF8F0: @ 80EF8F0 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080EF99E ldr r0, _080EF914 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] cmp r0, 0x5 bne _080EF91C ldr r0, _080EF918 @ =sub_80F0478 str r0, [r4, 0x1C] b _080EF99E .align 2, 0 _080EF914: .4byte gBattleSpritesDataPtr _080EF918: .4byte sub_80F0478 _080EF91C: cmp r0, 0x6 bne _080EF92C ldr r0, _080EF928 @ =sub_80F052C str r0, [r4, 0x1C] b _080EF99E .align 2, 0 _080EF928: .4byte sub_80F052C _080EF92C: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 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, 0x24] strh r1, [r4, 0x26] adds r1, r4, 0 adds r1, 0x2E movs r2, 0 adds r0, r4, 0 adds r0, 0x3C _080EF954: strh r2, [r0] subs r0, 0x2 cmp r0, r1 bge _080EF954 movs r0, 0 strh r0, [r4, 0x38] ldr r0, _080EF9A8 @ =sub_80EF9B4 str r0, [r4, 0x1C] ldr r0, _080EF9AC @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0xB bgt _080EF99E cmp r5, 0 blt _080EF99E ldrh r0, [r4, 0x20] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] subs r1, 0x5 lsls r1, 24 lsrs r1, 24 str r5, [sp] movs r2, 0x1 movs r3, 0x1C bl LaunchBallStarsTask ldr r0, _080EF9B0 @ =gBattleAnimTarget ldrb r1, [r0] movs r0, 0 movs r2, 0xE adds r3, r5, 0 bl LaunchBallFadeMonTask _080EF99E: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080EF9A8: .4byte sub_80EF9B4 _080EF9AC: .4byte gLastUsedItem _080EF9B0: .4byte gBattleAnimTarget thumb_func_end sub_80EF8F0 thumb_func_start sub_80EF9B4 sub_80EF9B4: @ 80EF9B4 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] lsls r0, 16 asrs r0, 16 cmp r0, 0xA bne _080EF9F0 ldr r0, _080EF9F8 @ =TaskDummy movs r1, 0x32 bl CreateTask lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x38] ldr r0, _080EF9FC @ =sub_80EFA0C str r0, [r4, 0x1C] ldr r2, _080EFA00 @ =gSprites ldr r1, _080EFA04 @ =gBattlerSpriteIds ldr r0, _080EFA08 @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strh r1, [r0, 0x30] _080EF9F0: pop {r4} pop {r0} bx r0 .align 2, 0 _080EF9F8: .4byte TaskDummy _080EF9FC: .4byte sub_80EFA0C _080EFA00: .4byte gSprites _080EFA04: .4byte gBattlerSpriteIds _080EFA08: .4byte gBattleAnimTarget thumb_func_end sub_80EF9B4 thumb_func_start sub_80EFA0C sub_80EFA0C: @ 80EFA0C push {r4-r7,lr} adds r7, r0, 0 ldr r1, _080EFA50 @ =gBattlerSpriteIds ldr r0, _080EFA54 @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 ldrb r4, [r0] ldrh r0, [r7, 0x38] lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080EFA58 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0xB bne _080EFA3E movs r0, 0x35 bl PlaySE _080EFA3E: movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080EFAB4 cmp r0, 0x1 bgt _080EFA5C cmp r0, 0 beq _080EFA62 b _080EFB20 .align 2, 0 _080EFA50: .4byte gBattlerSpriteIds _080EFA54: .4byte gBattleAnimTarget _080EFA58: .4byte gTasks _080EFA5C: cmp r0, 0x2 beq _080EFAF8 b _080EFB20 _080EFA62: adds r0, r4, 0 movs r1, 0 bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0x1C] ldr r1, _080EFAA4 @ =gUnknown_3005424 movs r0, 0x1C str r0, [r1] ldr r2, _080EFAA8 @ =gUnknown_300542C ldr r1, _080EFAAC @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 ldrh r1, [r0, 0x26] ldrh r0, [r0, 0x22] adds r1, r0 ldrh r0, [r7, 0x26] ldrh r7, [r7, 0x22] adds r0, r7 subs r1, r0 strh r1, [r2] ldr r4, _080EFAB0 @ =gUnknown_3005428 ldrh r0, [r2] lsls r0, 8 movs r1, 0x1C bl __udivsi3 strh r0, [r4] strh r0, [r5, 0xC] b _080EFB12 .align 2, 0 _080EFAA4: .4byte gUnknown_3005424 _080EFAA8: .4byte gUnknown_300542C _080EFAAC: .4byte gSprites _080EFAB0: .4byte gUnknown_3005428 _080EFAB4: ldrh r0, [r5, 0x1C] adds r0, 0x20 strh r0, [r5, 0x1C] movs r0, 0x1C ldrsh r2, [r5, r0] adds r0, r4, 0 adds r1, r2, 0 movs r3, 0 bl SetSpriteRotScale ldrh r0, [r5, 0xC] ldrh r1, [r5, 0xE] adds r0, r1 strh r0, [r5, 0xE] ldr r0, _080EFAF0 @ =gSprites lsls r1, r4, 4 adds r1, r4 lsls r1, 2 adds r1, r0 movs r2, 0xE ldrsh r0, [r5, r2] negs r0, r0 asrs r0, 8 strh r0, [r1, 0x26] movs r0, 0x1C ldrsh r1, [r5, r0] ldr r0, _080EFAF4 @ =0x0000047f cmp r1, r0 ble _080EFB48 b _080EFB12 .align 2, 0 _080EFAF0: .4byte gSprites _080EFAF4: .4byte 0x0000047f _080EFAF8: adds r0, r4, 0 bl ResetSpriteRotScale ldr r1, _080EFB1C @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] _080EFB12: ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] b _080EFB48 .align 2, 0 _080EFB1C: .4byte gSprites _080EFB20: ldr r0, _080EFB50 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0xA ble _080EFB48 adds r0, r6, 0 bl DestroyTask adds r0, r7, 0 movs r1, 0x2 bl StartSpriteAnim movs r0, 0 strh r0, [r7, 0x38] ldr r0, _080EFB54 @ =sub_80EFB58 str r0, [r7, 0x1C] _080EFB48: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080EFB50: .4byte gTasks _080EFB54: .4byte sub_80EFB58 thumb_func_end sub_80EFA0C thumb_func_start sub_80EFB58 sub_80EFB58: @ 80EFB58 push {r4,lr} adds r4, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080EFB92 movs r1, 0 strh r1, [r4, 0x34] movs r0, 0x28 strh r0, [r4, 0x36] strh r1, [r4, 0x38] movs r0, 0 movs r1, 0x28 bl Cos ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] movs r0, 0x36 ldrsh r1, [r4, r0] movs r0, 0 bl Cos negs r0, r0 strh r0, [r4, 0x26] ldr r0, _080EFB98 @ =sub_80EFB9C str r0, [r4, 0x1C] _080EFB92: pop {r4} pop {r0} bx r0 .align 2, 0 _080EFB98: .4byte sub_80EFB9C thumb_func_end sub_80EFB58 thumb_func_start sub_80EFB9C sub_80EFB9C: @ 80EFB9C push {r4,r5,lr} adds r4, r0, 0 movs r5, 0 ldrh r0, [r4, 0x34] movs r1, 0xFF ands r1, r0 cmp r1, 0 beq _080EFBB2 cmp r1, 0x1 beq _080EFC26 b _080EFC52 _080EFBB2: movs r1, 0x38 ldrsh r0, [r4, r1] movs r2, 0x36 ldrsh r1, [r4, r2] bl Cos negs r0, r0 strh r0, [r4, 0x26] ldrh r1, [r4, 0x38] adds r1, 0x4 ldrh r2, [r4, 0x34] lsls r0, r2, 16 asrs r0, 24 adds r1, r0 strh r1, [r4, 0x38] lsls r1, 16 asrs r1, 16 cmp r1, 0x3F ble _080EFC52 ldrh r0, [r4, 0x36] subs r0, 0xA strh r0, [r4, 0x36] ldr r1, _080EFBFC @ =0x00000101 adds r0, r2, r1 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 24 cmp r0, 0x4 bne _080EFBEE movs r5, 0x1 _080EFBEE: cmp r0, 0x2 beq _080EFC0E cmp r0, 0x2 bgt _080EFC00 cmp r0, 0x1 beq _080EFC06 b _080EFC1E .align 2, 0 _080EFBFC: .4byte 0x00000101 _080EFC00: cmp r0, 0x3 beq _080EFC16 b _080EFC1E _080EFC06: movs r0, 0x31 bl PlaySE b _080EFC52 _080EFC0E: movs r0, 0x32 bl PlaySE b _080EFC52 _080EFC16: movs r0, 0x33 bl PlaySE b _080EFC52 _080EFC1E: movs r0, 0x34 bl PlaySE b _080EFC52 _080EFC26: movs r2, 0x38 ldrsh r0, [r4, r2] movs r2, 0x36 ldrsh r1, [r4, r2] bl Cos negs r0, r0 strh r0, [r4, 0x26] ldrh r1, [r4, 0x38] subs r1, 0x4 ldrh r2, [r4, 0x34] lsls r0, r2, 16 asrs r0, 24 subs r1, r0 strh r1, [r4, 0x38] lsls r1, 16 cmp r1, 0 bgt _080EFC52 strh r5, [r4, 0x38] ldr r0, _080EFC80 @ =0xffffff00 ands r0, r2 strh r0, [r4, 0x34] _080EFC52: cmp r5, 0 beq _080EFC96 movs r5, 0 strh r5, [r4, 0x34] movs r0, 0x40 movs r1, 0x28 bl Cos ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] strh r5, [r4, 0x26] ldr r0, _080EFC84 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] cmp r0, 0 bne _080EFC8C strh r5, [r4, 0x38] ldr r0, _080EFC88 @ =sub_80EFF80 str r0, [r4, 0x1C] b _080EFC96 .align 2, 0 _080EFC80: .4byte 0xffffff00 _080EFC84: .4byte gBattleSpritesDataPtr _080EFC88: .4byte sub_80EFF80 _080EFC8C: ldr r0, _080EFC9C @ =sub_80EFCA0 str r0, [r4, 0x1C] movs r0, 0x1 strh r0, [r4, 0x36] strh r5, [r4, 0x38] _080EFC96: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080EFC9C: .4byte sub_80EFCA0 thumb_func_end sub_80EFB9C thumb_func_start sub_80EFCA0 sub_80EFCA0: @ 80EFCA0 push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x34] adds r0, 0x1 movs r5, 0 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x1F bne _080EFCDC strh r5, [r4, 0x34] adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r0, _080EFCE4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strh r5, [r0, 0xC] ldr r0, _080EFCE8 @ =sub_80EFCEC str r0, [r4, 0x1C] movs r0, 0x17 bl PlaySE _080EFCDC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080EFCE4: .4byte gBattleSpritesDataPtr _080EFCE8: .4byte sub_80EFCEC thumb_func_end sub_80EFCA0 thumb_func_start sub_80EFCEC sub_80EFCEC: @ 80EFCEC push {r4-r6,lr} adds r4, r0, 0 ldrh r0, [r4, 0x34] movs r1, 0xFF ands r1, r0 cmp r1, 0x6 bls _080EFCFC b _080EFF34 _080EFCFC: lsls r0, r1, 2 ldr r1, _080EFD08 @ =_080EFD0C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080EFD08: .4byte _080EFD0C .align 2, 0 _080EFD0C: .4byte _080EFD28 .4byte _080EFD7A .4byte _080EFDC0 .4byte _080EFE20 .4byte _080EFE70 .4byte _080EFED4 .4byte _080EFF34 _080EFD28: ldr r1, _080EFD4C @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] movs r6, 0xC ldrsh r0, [r2, r6] adds r6, r1, 0 cmp r0, 0xFF ble _080EFD50 ldrh r0, [r4, 0x36] ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] ldr r1, [r5, 0x8] ldrb r0, [r1, 0xC] strh r0, [r1, 0xC] b _080EFD56 .align 2, 0 _080EFD4C: .4byte gBattleSpritesDataPtr _080EFD50: adds r0, r3, 0 adds r0, 0xB0 strh r0, [r2, 0xC] _080EFD56: ldrh r0, [r4, 0x38] adds r0, 0x1 movs r3, 0 strh r0, [r4, 0x38] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x38] adds r0, 0x7 lsls r0, 16 lsrs r0, 16 cmp r0, 0xE bhi _080EFD78 b _080EFF7A _080EFD78: b _080EFE10 _080EFD7A: ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 bne _080EFE2C movs r0, 0 strh r0, [r4, 0x38] ldrh r0, [r4, 0x36] negs r0, r0 strh r0, [r4, 0x36] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] movs r6, 0x36 ldrsh r0, [r4, r6] cmp r0, 0 bge _080EFDB6 adds r0, r4, 0 movs r1, 0x2 bl ChangeSpriteAffineAnim b _080EFF7A _080EFDB6: adds r0, r4, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim b _080EFF7A _080EFDC0: ldr r1, _080EFDE4 @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] movs r6, 0xC ldrsh r0, [r2, r6] adds r6, r1, 0 cmp r0, 0xFF ble _080EFDE8 ldrh r0, [r4, 0x36] ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] ldr r1, [r5, 0x8] ldrb r0, [r1, 0xC] strh r0, [r1, 0xC] b _080EFDEE .align 2, 0 _080EFDE4: .4byte gBattleSpritesDataPtr _080EFDE8: adds r0, r3, 0 adds r0, 0xB0 strh r0, [r2, 0xC] _080EFDEE: ldrh r0, [r4, 0x38] adds r0, 0x1 movs r3, 0 strh r0, [r4, 0x38] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x38] adds r0, 0xC lsls r0, 16 lsrs r0, 16 cmp r0, 0x18 bhi _080EFE10 b _080EFF7A _080EFE10: ldr r0, [r6] ldr r0, [r0, 0x8] strh r3, [r0, 0xC] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] strh r3, [r4, 0x38] b _080EFF7A _080EFE20: ldrh r0, [r4, 0x38] adds r1, r0, 0x1 strh r1, [r4, 0x38] lsls r0, 16 cmp r0, 0 bge _080EFE3A _080EFE2C: adds r0, r4, 0 adds r0, 0x2C ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] b _080EFF7A _080EFE3A: movs r0, 0 strh r0, [r4, 0x38] ldrh r0, [r4, 0x36] negs r0, r0 strh r0, [r4, 0x36] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] movs r6, 0x36 ldrsh r0, [r4, r6] cmp r0, 0 bge _080EFE68 adds r0, r4, 0 movs r1, 0x2 bl ChangeSpriteAffineAnim b _080EFE70 _080EFE68: adds r0, r4, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim _080EFE70: ldr r1, _080EFE94 @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] movs r6, 0xC ldrsh r0, [r2, r6] adds r6, r1, 0 cmp r0, 0xFF ble _080EFE98 ldrh r0, [r4, 0x36] ldrh r1, [r4, 0x24] adds r0, r1 strh r0, [r4, 0x24] ldr r1, [r5, 0x8] ldrb r0, [r1, 0xC] strh r0, [r1, 0xC] b _080EFE9E .align 2, 0 _080EFE94: .4byte gBattleSpritesDataPtr _080EFE98: adds r0, r3, 0 adds r0, 0xB0 strh r0, [r2, 0xC] _080EFE9E: ldrh r0, [r4, 0x38] adds r0, 0x1 movs r3, 0 strh r0, [r4, 0x38] adds r2, r4, 0 adds r2, 0x2C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x38] adds r0, 0x4 lsls r0, 16 lsrs r0, 16 cmp r0, 0x8 bls _080EFF7A ldr r0, [r6] ldr r0, [r0, 0x8] strh r3, [r0, 0xC] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] strh r3, [r4, 0x38] ldrh r0, [r4, 0x36] negs r0, r0 strh r0, [r4, 0x36] b _080EFF7A _080EFED4: movs r6, 0x80 lsls r6, 1 adds r0, r6, 0 ldrh r1, [r4, 0x34] adds r0, r1 strh r0, [r4, 0x34] lsls r0, 16 asrs r1, r0, 24 ldr r0, _080EFF04 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] cmp r1, r0 bne _080EFF0C adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r0, _080EFF08 @ =sub_80EFF80 str r0, [r4, 0x1C] b _080EFF7A .align 2, 0 _080EFF04: .4byte gBattleSpritesDataPtr _080EFF08: .4byte sub_80EFF80 _080EFF0C: cmp r0, 0x4 bne _080EFF20 cmp r1, 0x3 bne _080EFF20 ldr r0, _080EFF1C @ =sub_80EFFA4 str r0, [r4, 0x1C] b _080EFF26 .align 2, 0 _080EFF1C: .4byte sub_80EFFA4 _080EFF20: ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] _080EFF26: adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] b _080EFF7A _080EFF34: ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] lsls r0, 16 asrs r0, 16 cmp r0, 0x1F bne _080EFF7A movs r0, 0 strh r0, [r4, 0x38] ldrh r1, [r4, 0x34] ldr r0, _080EFF68 @ =0xffffff00 ands r0, r1 strh r0, [r4, 0x34] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAffineAnim movs r6, 0x36 ldrsh r0, [r4, r6] cmp r0, 0 bge _080EFF6C adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAffineAnim b _080EFF74 .align 2, 0 _080EFF68: .4byte 0xffffff00 _080EFF6C: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim _080EFF74: movs r0, 0x17 bl PlaySE _080EFF7A: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80EFCEC thumb_func_start sub_80EFF80 sub_80EFF80: @ 80EFF80 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x38] adds r0, 0x1 strh r0, [r1, 0x38] lsls r0, 16 asrs r0, 16 cmp r0, 0x1F bne _080EFF9A movs r0, 0 strh r0, [r1, 0x38] ldr r0, _080EFFA0 @ =sub_80F02B0 str r0, [r1, 0x1C] _080EFF9A: pop {r0} bx r0 .align 2, 0 _080EFFA0: .4byte sub_80F02B0 thumb_func_end sub_80EFF80 thumb_func_start sub_80EFFA4 sub_80EFFA4: @ 80EFFA4 adds r3, r0, 0 adds r3, 0x2C ldrb r1, [r3] movs r2, 0x40 orrs r1, r2 strb r1, [r3] ldr r1, _080EFFC0 @ =sub_80EFFC4 str r1, [r0, 0x1C] movs r1, 0 strh r1, [r0, 0x34] strh r1, [r0, 0x36] strh r1, [r0, 0x38] bx lr .align 2, 0 _080EFFC0: .4byte sub_80EFFC4 thumb_func_end sub_80EFFA4 thumb_func_start sub_80EFFC4 sub_80EFFC4: @ 80EFFC4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r6, r0, 0 ldr r7, _080F0004 @ =gBattleAnimTarget ldrh r0, [r6, 0x36] adds r0, 0x1 movs r1, 0 mov r8, r1 strh r0, [r6, 0x36] lsls r0, 16 asrs r1, r0, 16 cmp r1, 0x28 bne _080F0008 movs r0, 0xF7 bl PlaySE ldrb r1, [r6, 0x5] lsrs r1, 4 movs r0, 0x80 lsls r0, 9 lsls r0, r1 movs r1, 0x6 movs r2, 0 bl BlendPalettes adds r0, r6, 0 bl sub_80F01B8 b _080F0088 .align 2, 0 _080F0004: .4byte gBattleAnimTarget _080F0008: cmp r1, 0x3C bne _080F0026 ldrb r1, [r6, 0x5] lsrs r1, 4 movs r0, 0x80 lsls r0, 9 lsls r0, r1 mov r1, r8 str r1, [sp] movs r1, 0x2 movs r2, 0x6 movs r3, 0 bl BeginNormalPaletteFade b _080F0088 _080F0026: cmp r1, 0x5F bne _080F004C ldr r0, _080F0044 @ =gDoingBattleAnim movs r1, 0 strb r1, [r0] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes bl m4aMPlayAllStop ldr r0, _080F0048 @ =0x0000013f bl PlaySE b _080F0088 .align 2, 0 _080F0044: .4byte gDoingBattleAnim _080F0048: .4byte 0x0000013f _080F004C: ldr r0, _080F0094 @ =0x0000013b cmp r1, r0 bne _080F0088 ldr r5, _080F0098 @ =gSprites ldr r4, _080F009C @ =gBattlerSpriteIds ldrb r0, [r7] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r0, [r0, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r0, [r7] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 bl DestroySprite mov r0, r8 strh r0, [r6, 0x2E] ldr r0, _080F00A0 @ =sub_80F00A4 str r0, [r6, 0x1C] _080F0088: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0094: .4byte 0x0000013b _080F0098: .4byte gSprites _080F009C: .4byte gBattlerSpriteIds _080F00A0: .4byte sub_80F00A4 thumb_func_end sub_80EFFC4 thumb_func_start sub_80F00A4 sub_80F00A4: @ 80F00A4 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080F0110 cmp r0, 0x1 bgt _080F00BC cmp r0, 0 beq _080F00C2 b _080F0156 _080F00BC: cmp r0, 0x2 beq _080F0142 b _080F0156 _080F00C2: strh r0, [r4, 0x30] strh r0, [r4, 0x32] ldrb r1, [r4, 0x1] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 strb r0, [r4, 0x1] movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg movs r0, 0x52 movs r1, 0x10 bl SetGpuReg ldr r0, [r4, 0x14] ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r0, 24 adds r0, 0x10 movs r1, 0x1 lsls r1, r0 ldr r0, _080F010C @ =0x00007fff str r0, [sp] adds r0, r1, 0 movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _080F014E .align 2, 0 _080F010C: .4byte 0x00007fff _080F0110: ldrh r0, [r4, 0x30] adds r1, r0, 0x1 strh r1, [r4, 0x30] lsls r0, 16 cmp r0, 0 ble _080F017C movs r0, 0 strh r0, [r4, 0x30] ldrh r2, [r4, 0x32] adds r2, 0x1 strh r2, [r4, 0x32] lsls r1, r2, 8 movs r0, 0x10 subs r0, r2 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0x10 bne _080F017C b _080F014E _080F0142: adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _080F014E: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _080F017C _080F0156: ldr r0, _080F0184 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _080F017C movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg strh r5, [r4, 0x2E] ldr r0, _080F0188 @ =sub_80F018C str r0, [r4, 0x1C] _080F017C: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F0184: .4byte gPaletteFade _080F0188: .4byte sub_80F018C thumb_func_end sub_80F00A4 thumb_func_start sub_80F018C sub_80F018C: @ 80F018C push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 bne _080F01A4 ldr r0, _080F01A0 @ =0x0000ffff strh r0, [r4, 0x2E] b _080F01B0 .align 2, 0 _080F01A0: .4byte 0x0000ffff _080F01A4: adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite _080F01B0: pop {r4} pop {r0} bx r0 thumb_func_end sub_80F018C thumb_func_start sub_80F01B8 sub_80F01B8: @ 80F01B8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} adds r6, r0, 0 adds r1, r6, 0 adds r1, 0x43 ldrb r0, [r1] cmp r0, 0 beq _080F01D8 subs r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r8, r0 b _080F01E0 _080F01D8: movs r0, 0 mov r8, r0 movs r0, 0x1 strb r0, [r1] _080F01E0: movs r0, 0x4 bl sub_80F05B4 movs r7, 0 ldr r2, _080F0264 @ =gSprites mov r9, r2 movs r0, 0x1C add r0, r9 mov r10, r0 _080F01F2: movs r2, 0x20 ldrsh r1, [r6, r2] movs r0, 0x22 ldrsh r2, [r6, r0] ldr r0, _080F0268 @ =gUnknown_840C104 mov r3, r8 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _080F024E lsls r4, r0, 4 adds r4, r0 lsls r4, 2 mov r2, r9 adds r5, r4, r2 movs r0, 0x18 strh r0, [r5, 0x2E] ldr r0, _080F026C @ =gUnknown_840BF3C lsls r1, r7, 2 adds r1, r0 movs r0, 0 ldrsb r0, [r1, r0] ldrh r2, [r6, 0x20] adds r0, r2 strh r0, [r5, 0x32] movs r0, 0x1 ldrsb r0, [r1, r0] ldrh r2, [r6, 0x22] adds r0, r2 strh r0, [r5, 0x36] movs r0, 0x2 ldrsb r0, [r1, r0] strh r0, [r5, 0x38] adds r0, r5, 0 bl InitAnimArcTranslation add r4, r10 ldr r0, _080F0270 @ =sub_80F0278 str r0, [r4] ldr r0, _080F0274 @ =gUnknown_840C068 ldrb r1, [r0, 0x4] adds r0, r5, 0 bl StartSpriteAnim _080F024E: adds r7, 0x1 cmp r7, 0x2 bls _080F01F2 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0264: .4byte gSprites _080F0268: .4byte gUnknown_840C104 _080F026C: .4byte gUnknown_840BF3C _080F0270: .4byte sub_80F0278 _080F0274: .4byte gUnknown_840C068 thumb_func_end sub_80F01B8 thumb_func_start sub_80F0278 sub_80F0278: @ 80F0278 push {r4,lr} adds r4, r0, 0 adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsrs r1, r2, 2 movs r0, 0x1 eors r1, r0 ands r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r4, 0 bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080F02A8 adds r0, r4, 0 bl DestroySprite _080F02A8: pop {r4} pop {r0} bx r0 thumb_func_end sub_80F0278 thumb_func_start sub_80F02B0 sub_80F02B0: @ 80F02B0 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x1 bl StartSpriteAnim adds r0, r4, 0 movs r1, 0 bl StartSpriteAffineAnim ldr r0, _080F0364 @ =sub_80F0378 str r0, [r4, 0x1C] ldr r0, _080F0368 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0xB bgt _080F0302 cmp r5, 0 blt _080F0302 ldrh r0, [r4, 0x20] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] subs r1, 0x5 lsls r1, 24 lsrs r1, 24 str r5, [sp] movs r2, 0x1 movs r3, 0x1C bl LaunchBallStarsTask ldr r0, _080F036C @ =gBattleAnimTarget ldrb r1, [r0] movs r0, 0x1 movs r2, 0xE adds r3, r5, 0 bl LaunchBallFadeMonTask _080F0302: ldr r6, _080F0370 @ =gSprites ldr r5, _080F0374 @ =gBattlerSpriteIds ldr r4, _080F036C @ =gBattleAnimTarget ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x1 bl StartSpriteAffineAnim ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl AnimateSprite ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x80 lsls r1, 5 strh r1, [r0, 0x30] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080F0364: .4byte sub_80F0378 _080F0368: .4byte gLastUsedItem _080F036C: .4byte gBattleAnimTarget _080F0370: .4byte gSprites _080F0374: .4byte gBattlerSpriteIds thumb_func_end sub_80F02B0 thumb_func_start sub_80F0378 sub_80F0378: @ 80F0378 push {r4-r7,lr} adds r7, r0, 0 movs r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080F0396 adds r2, r7, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _080F0396: ldr r4, _080F03C4 @ =gSprites ldr r3, _080F03C8 @ =gBattlerSpriteIds ldr r2, _080F03CC @ =gBattleAnimTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r4 adds r0, r1, 0 adds r0, 0x3F ldrb r0, [r0] lsls r0, 26 cmp r0, 0 bge _080F03D0 adds r0, r1, 0 movs r1, 0 bl StartSpriteAffineAnim movs r5, 0x1 b _080F03F0 .align 2, 0 _080F03C4: .4byte gSprites _080F03C8: .4byte gBattlerSpriteIds _080F03CC: .4byte gBattleAnimTarget _080F03D0: ldr r6, _080F045C @ =0xfffffee0 adds r0, r6, 0 ldrh r6, [r1, 0x30] adds r0, r6 strh r0, [r1, 0x30] ldrb r0, [r2] adds r0, r3 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrh r0, [r1, 0x30] lsls r0, 16 asrs r0, 24 strh r0, [r1, 0x26] _080F03F0: adds r0, r7, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080F0456 cmp r5, 0 beq _080F0456 ldr r4, _080F0460 @ =gSprites ldr r3, _080F0464 @ =gBattlerSpriteIds ldr r2, _080F0468 @ =gBattleAnimTarget ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r6, 0 movs r5, 0 strh r5, [r0, 0x26] ldrb r0, [r2] adds r0, r3 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r4 ldr r0, _080F046C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] lsls r1, 30 adds r2, 0x3E lsrs r1, 31 lsls r1, 2 ldrb r3, [r2] movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] strh r5, [r7, 0x2E] ldr r0, _080F0470 @ =sub_80F018C str r0, [r7, 0x1C] ldr r0, _080F0474 @ =gDoingBattleAnim strb r6, [r0] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes _080F0456: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F045C: .4byte 0xfffffee0 _080F0460: .4byte gSprites _080F0464: .4byte gBattlerSpriteIds _080F0468: .4byte gBattleAnimTarget _080F046C: .4byte gBattleSpritesDataPtr _080F0470: .4byte sub_80F018C _080F0474: .4byte gDoingBattleAnim thumb_func_end sub_80F0378 thumb_func_start sub_80F0478 sub_80F0478: @ 80F0478 push {r4,lr} adds r2, r0, 0 ldrh r0, [r2, 0x24] ldrh r1, [r2, 0x20] adds r0, r1 movs r1, 0 strh r0, [r2, 0x20] ldrh r0, [r2, 0x26] ldrh r3, [r2, 0x22] adds r0, r3 strh r0, [r2, 0x22] strh r1, [r2, 0x26] strh r1, [r2, 0x24] ldr r4, _080F04B0 @ =sub_80F04B4 movs r3, 0 movs r1, 0x5 adds r0, r2, 0 adds r0, 0x38 _080F049C: strh r3, [r0] subs r0, 0x2 subs r1, 0x1 cmp r1, 0 bge _080F049C str r4, [r2, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080F04B0: .4byte sub_80F04B4 thumb_func_end sub_80F0478 thumb_func_start sub_80F04B4 sub_80F04B4: @ 80F04B4 push {r4,lr} adds r4, r0, 0 movs r0, 0x80 lsls r0, 4 adds r2, r0, 0 ldrh r1, [r4, 0x2E] adds r2, r1 movs r0, 0xD0 lsls r0, 3 adds r3, r0, 0 ldrh r1, [r4, 0x30] adds r3, r1 lsls r1, r3, 16 asrs r1, 24 ldrh r0, [r4, 0x24] subs r0, r1 strh r0, [r4, 0x24] lsls r0, r2, 16 asrs r0, 24 ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] movs r0, 0xFF ands r2, r0 strh r2, [r4, 0x2E] ands r3, r0 strh r3, [r4, 0x30] movs r2, 0x22 ldrsh r0, [r4, r2] movs r2, 0x26 ldrsh r1, [r4, r2] adds r0, r1 cmp r0, 0xA0 bgt _080F050A movs r1, 0x20 ldrsh r0, [r4, r1] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 movs r1, 0x8 negs r1, r1 cmp r0, r1 bge _080F051E _080F050A: movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080F0524 @ =sub_80F018C str r0, [r4, 0x1C] ldr r1, _080F0528 @ =gDoingBattleAnim movs r0, 0 strb r0, [r1] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes _080F051E: pop {r4} pop {r0} bx r0 .align 2, 0 _080F0524: .4byte sub_80F018C _080F0528: .4byte gDoingBattleAnim thumb_func_end sub_80F04B4 thumb_func_start sub_80F052C sub_80F052C: @ 80F052C push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x24] ldrh r0, [r4, 0x20] adds r1, r0 movs r0, 0 strh r1, [r4, 0x20] ldrh r2, [r4, 0x26] ldrh r3, [r4, 0x22] adds r2, r3 strh r2, [r4, 0x22] strh r0, [r4, 0x26] strh r0, [r4, 0x24] movs r0, 0x22 strh r0, [r4, 0x2E] strh r1, [r4, 0x30] subs r1, 0x8 strh r1, [r4, 0x32] strh r2, [r4, 0x34] movs r0, 0x90 strh r0, [r4, 0x36] movs r0, 0x20 strh r0, [r4, 0x38] adds r0, r4, 0 bl InitAnimArcTranslation adds r0, r4, 0 bl TranslateAnimVerticalArc ldr r0, _080F0570 @ =sub_80F0574 str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080F0570: .4byte sub_80F0574 thumb_func_end sub_80F052C thumb_func_start sub_80F0574 sub_80F0574: @ 80F0574 push {r4,lr} adds r4, r0, 0 bl TranslateAnimVerticalArc lsls r0, 24 cmp r0, 0 bne _080F0590 movs r1, 0x22 ldrsh r0, [r4, r1] movs r2, 0x26 ldrsh r1, [r4, r2] adds r0, r1 cmp r0, 0x40 ble _080F05A4 _080F0590: movs r1, 0 movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080F05AC @ =sub_80F018C str r0, [r4, 0x1C] ldr r0, _080F05B0 @ =gDoingBattleAnim strb r1, [r0] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes _080F05A4: pop {r4} pop {r0} bx r0 .align 2, 0 _080F05AC: .4byte sub_80F018C _080F05B0: .4byte gDoingBattleAnim thumb_func_end sub_80F0574 thumb_func_start sub_80F05B4 sub_80F05B4: @ 80F05B4 push {r4,r5,lr} lsls r0, 24 ldr r1, _080F05E0 @ =gUnknown_840BF48 lsrs r5, r0, 21 adds r4, r5, r1 ldrh r0, [r4, 0x6] bl GetSpriteTileStartByTag lsls r0, 16 ldr r1, _080F05E4 @ =0xffff0000 cmp r0, r1 bne _080F05DA adds r0, r4, 0 bl LoadCompressedSpriteSheetUsingHeap ldr r0, _080F05E8 @ =gUnknown_840BFA8 adds r0, r5, r0 bl LoadCompressedSpritePaletteUsingHeap _080F05DA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F05E0: .4byte gUnknown_840BF48 _080F05E4: .4byte 0xffff0000 _080F05E8: .4byte gUnknown_840BFA8 thumb_func_end sub_80F05B4 thumb_func_start LaunchBallStarsTask LaunchBallStarsTask: @ 80F05EC push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} adds r6, r0, 0 mov r8, r1 mov r9, r2 mov r10, r3 ldr r5, [sp, 0x1C] lsls r6, 24 lsrs r6, 24 mov r0, r8 lsls r0, 24 lsrs r0, 24 mov r8, r0 mov r1, r9 lsls r1, 24 lsrs r1, 24 mov r9, r1 mov r0, r10 lsls r0, 24 lsrs r0, 24 mov r10, r0 lsls r5, 24 lsrs r5, 24 adds r0, r5, 0 bl sub_80F05B4 ldr r1, _080F066C @ =gUnknown_840C074 lsls r0, r5, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x5 bl CreateTask adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _080F0670 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 strh r6, [r0, 0xA] mov r1, r8 strh r1, [r0, 0xC] mov r1, r9 strh r1, [r0, 0xE] mov r1, r10 strh r1, [r0, 0x10] strh r5, [r0, 0x26] movs r0, 0xF bl PlaySE adds r0, r4, 0 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _080F066C: .4byte gUnknown_840C074 _080F0670: .4byte gTasks thumb_func_end LaunchBallStarsTask thumb_func_start sub_80F0674 sub_80F0674: @ 80F0674 push {lr} ldr r0, _080F0698 @ =gMain ldr r1, _080F069C @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080F0692 ldr r0, _080F06A0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] adds r0, 0x1 strb r0, [r1, 0xA] _080F0692: pop {r0} bx r0 .align 2, 0 _080F0698: .4byte gMain _080F069C: .4byte 0x00000439 _080F06A0: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F0674 thumb_func_start sub_80F06A4 sub_80F06A4: @ 80F06A4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, _080F0780 @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r6, r0, r1 ldrh r0, [r6, 0x26] lsls r0, 24 lsrs r0, 24 str r0, [sp] movs r2, 0x8 ldrsh r0, [r6, r2] adds r2, r1, 0 cmp r0, 0xF bgt _080F079C ldrb r1, [r6, 0xA] ldrb r2, [r6, 0xC] ldrb r4, [r6, 0xE] mov r9, r4 ldrb r3, [r6, 0x10] ldr r4, [sp] lsls r0, r4, 1 adds r0, r4 lsls r0, 3 ldr r4, _080F0784 @ =gUnknown_840C0A4 adds r0, r4 bl CreateSprite lsls r0, 24 lsrs r0, 24 mov r10, r0 cmp r0, 0x40 beq _080F0740 bl sub_80F0674 mov r0, r10 lsls r4, r0, 4 add r4, r10 lsls r4, 2 ldr r5, _080F0788 @ =gSprites adds r7, r4, r5 ldr r0, _080F078C @ =gUnknown_840C068 ldr r1, [sp] adds r0, r1, r0 ldrb r1, [r0] adds r0, r7, 0 bl StartSpriteAnim adds r5, 0x1C adds r4, r5 ldr r0, _080F0790 @ =sub_80F07BC str r0, [r4] movs r0, 0x3 mov r2, r9 ands r2, r0 lsls r2, 2 ldrb r1, [r7, 0x5] movs r0, 0xD negs r0, r0 ands r0, r1 orrs r0, r2 strb r0, [r7, 0x5] ldrb r0, [r6, 0x8] cmp r0, 0x7 bls _080F073C subs r0, 0x8 lsls r0, 24 lsrs r0, 24 _080F073C: lsls r0, 5 strh r0, [r7, 0x2E] _080F0740: ldr r0, _080F0780 @ =gTasks mov r4, r8 lsls r1, r4, 2 add r1, r8 lsls r1, 3 adds r1, r0 movs r2, 0x8 ldrsh r1, [r1, r2] adds r2, r0, 0 cmp r1, 0xF bne _080F079C ldr r0, _080F0794 @ =gMain ldr r4, _080F0798 @ =0x00000439 adds r0, r4 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F0776 ldr r0, _080F0788 @ =gSprites mov r2, r10 lsls r1, r2, 4 add r1, r10 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F0776: mov r0, r8 bl DestroyTask b _080F07AC .align 2, 0 _080F0780: .4byte gTasks _080F0784: .4byte gUnknown_840C0A4 _080F0788: .4byte gSprites _080F078C: .4byte gUnknown_840C068 _080F0790: .4byte sub_80F07BC _080F0794: .4byte gMain _080F0798: .4byte 0x00000439 _080F079C: mov r4, r8 lsls r0, r4, 2 add r0, r8 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] _080F07AC: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80F06A4 thumb_func_start sub_80F07BC sub_80F07BC: @ 80F07BC push {lr} adds r1, r0, 0 ldrh r2, [r1, 0x30] movs r3, 0x30 ldrsh r0, [r1, r3] cmp r0, 0 bne _080F07D4 ldr r0, _080F07D0 @ =sub_80F07DC str r0, [r1, 0x1C] b _080F07D8 .align 2, 0 _080F07D0: .4byte sub_80F07DC _080F07D4: subs r0, r2, 0x1 strh r0, [r1, 0x30] _080F07D8: pop {r0} bx r0 thumb_func_end sub_80F07BC thumb_func_start sub_80F07DC sub_80F07DC: @ 80F07DC push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x2 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x32 bne _080F0810 adds r0, r4, 0 bl sub_80F1198 _080F0810: pop {r4} pop {r0} bx r0 thumb_func_end sub_80F07DC thumb_func_start sub_80F0818 sub_80F0818: @ 80F0818 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r0, _080F08FC @ =gTasks mov r2, r9 lsls r1, r2, 2 add r1, r9 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r3, [r1, 0xA] str r3, [sp] ldrb r0, [r1, 0xC] str r0, [sp, 0x4] ldrb r2, [r1, 0xE] str r2, [sp, 0x8] ldrb r1, [r1, 0x10] str r1, [sp, 0xC] movs r7, 0 ldr r3, _080F0900 @ =gSprites mov r10, r3 mov r1, r8 lsls r0, r1, 1 add r0, r8 lsls r0, 3 str r0, [sp, 0x10] _080F085E: ldr r0, _080F0904 @ =gUnknown_840C0A4 ldr r2, [sp, 0x10] adds r0, r2, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F08BE bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r3, r10 adds r5, r4, r3 ldr r0, _080F0908 @ =gUnknown_840C068 add r0, r8 ldrb r1, [r0] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F090C @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0910 @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] movs r0, 0xA strh r0, [r5, 0x36] movs r0, 0x2 strh r0, [r5, 0x38] movs r0, 0x1 strh r0, [r5, 0x3A] _080F08BE: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F085E ldr r0, _080F0914 @ =gMain ldr r1, _080F0918 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F08E6 ldr r0, _080F0900 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F08E6: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F08FC: .4byte gTasks _080F0900: .4byte gSprites _080F0904: .4byte gUnknown_840C0A4 _080F0908: .4byte gUnknown_840C068 _080F090C: .4byte gSprites + 0x1C _080F0910: .4byte sub_80F0D5C _080F0914: .4byte gMain _080F0918: .4byte 0x00000439 thumb_func_end sub_80F0818 thumb_func_start sub_80F091C sub_80F091C: @ 80F091C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r0, _080F0A00 @ =gTasks mov r2, r9 lsls r1, r2, 2 add r1, r9 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r3, [r1, 0xA] str r3, [sp] ldrb r0, [r1, 0xC] str r0, [sp, 0x4] ldrb r2, [r1, 0xE] str r2, [sp, 0x8] ldrb r1, [r1, 0x10] str r1, [sp, 0xC] movs r7, 0 ldr r3, _080F0A04 @ =gSprites mov r10, r3 mov r1, r8 lsls r0, r1, 1 add r0, r8 lsls r0, 3 str r0, [sp, 0x10] _080F0962: ldr r0, _080F0A08 @ =gUnknown_840C0A4 ldr r2, [sp, 0x10] adds r0, r2, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F09C2 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r3, r10 adds r5, r4, r3 ldr r0, _080F0A0C @ =gUnknown_840C068 add r0, r8 ldrb r1, [r0] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F0A10 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0A14 @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] movs r0, 0xA strh r0, [r5, 0x36] movs r0, 0x1 strh r0, [r5, 0x38] movs r0, 0x2 strh r0, [r5, 0x3A] _080F09C2: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F0962 ldr r0, _080F0A18 @ =gMain ldr r1, _080F0A1C @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F09EA ldr r0, _080F0A04 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F09EA: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0A00: .4byte gTasks _080F0A04: .4byte gSprites _080F0A08: .4byte gUnknown_840C0A4 _080F0A0C: .4byte gUnknown_840C068 _080F0A10: .4byte gSprites + 0x1C _080F0A14: .4byte sub_80F0D5C _080F0A18: .4byte gMain _080F0A1C: .4byte 0x00000439 thumb_func_end sub_80F091C thumb_func_start sub_80F0A20 sub_80F0A20: @ 80F0A20 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r1, _080F0B00 @ =gTasks lsls r0, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x26] lsls r1, 24 lsrs r1, 24 ldrb r2, [r0, 0xA] str r2, [sp] ldrb r3, [r0, 0xC] str r3, [sp, 0x4] ldrb r2, [r0, 0xE] str r2, [sp, 0x8] ldrb r0, [r0, 0x10] str r0, [sp, 0xC] movs r7, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 str r0, [sp, 0x10] ldr r3, _080F0B04 @ =gSprites mov r8, r3 ldr r0, _080F0B08 @ =gUnknown_840C068 adds r1, r0 mov r10, r1 _080F0A66: ldr r0, _080F0B0C @ =gUnknown_840C0A4 ldr r1, [sp, 0x10] adds r0, r1, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F0AC2 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r2, r8 adds r5, r4, r2 mov r3, r10 ldrb r1, [r3] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F0B10 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0B14 @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] movs r0, 0x4 strh r0, [r5, 0x36] movs r0, 0x1 strh r0, [r5, 0x38] strh r0, [r5, 0x3A] _080F0AC2: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F0A66 ldr r0, _080F0B18 @ =gMain ldr r1, _080F0B1C @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F0AEA ldr r0, _080F0B04 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F0AEA: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0B00: .4byte gTasks _080F0B04: .4byte gSprites _080F0B08: .4byte gUnknown_840C068 _080F0B0C: .4byte gUnknown_840C0A4 _080F0B10: .4byte gSprites + 0x1C _080F0B14: .4byte sub_80F0D5C _080F0B18: .4byte gMain _080F0B1C: .4byte 0x00000439 thumb_func_end sub_80F0A20 thumb_func_start sub_80F0B20 sub_80F0B20: @ 80F0B20 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r0, _080F0C08 @ =gTasks mov r2, r9 lsls r1, r2, 2 add r1, r9 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r3, [r1, 0xA] str r3, [sp] ldrb r0, [r1, 0xC] str r0, [sp, 0x4] ldrb r2, [r1, 0xE] str r2, [sp, 0x8] ldrb r1, [r1, 0x10] str r1, [sp, 0xC] movs r7, 0 ldr r3, _080F0C0C @ =gSprites mov r10, r3 mov r1, r8 lsls r0, r1, 1 add r0, r8 lsls r0, 3 str r0, [sp, 0x10] _080F0B66: ldr r0, _080F0C10 @ =gUnknown_840C0A4 ldr r2, [sp, 0x10] adds r0, r2, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F0BCA bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r3, r10 adds r5, r4, r3 ldr r0, _080F0C14 @ =gUnknown_840C068 add r0, r8 ldrb r1, [r0] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F0C18 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0C1C @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 1 adds r0, r7 lsls r0, 3 adds r0, r7 strh r0, [r5, 0x2E] movs r0, 0x5 strh r0, [r5, 0x36] movs r0, 0x1 strh r0, [r5, 0x38] strh r0, [r5, 0x3A] _080F0BCA: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x9 bls _080F0B66 ldr r0, _080F0C20 @ =gMain ldr r1, _080F0C24 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F0BF2 ldr r0, _080F0C0C @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F0BF2: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0C08: .4byte gTasks _080F0C0C: .4byte gSprites _080F0C10: .4byte gUnknown_840C0A4 _080F0C14: .4byte gUnknown_840C068 _080F0C18: .4byte gSprites + 0x1C _080F0C1C: .4byte sub_80F0D5C _080F0C20: .4byte gMain _080F0C24: .4byte 0x00000439 thumb_func_end sub_80F0B20 thumb_func_start sub_80F0C28 sub_80F0C28: @ 80F0C28 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, _080F0C54 @ =gTasks lsls r2, r0, 2 adds r0, r2, r0 lsls r0, 3 adds r3, r0, r1 ldrh r1, [r3, 0x16] movs r4, 0x16 ldrsh r0, [r3, r4] cmp r0, 0 beq _080F0C58 subs r0, r1, 0x1 strh r0, [r3, 0x16] b _080F0D2A .align 2, 0 _080F0C54: .4byte gTasks _080F0C58: ldrh r0, [r3, 0x26] lsls r0, 24 lsrs r0, 24 ldrb r1, [r3, 0xA] str r1, [sp] ldrb r4, [r3, 0xC] str r4, [sp, 0x4] ldrb r1, [r3, 0xE] str r1, [sp, 0x8] ldrb r3, [r3, 0x10] str r3, [sp, 0xC] movs r7, 0 str r2, [sp, 0x14] lsls r1, r0, 1 adds r1, r0 lsls r1, 3 str r1, [sp, 0x10] ldr r3, _080F0D3C @ =gSprites mov r9, r3 ldr r1, _080F0D40 @ =gUnknown_840C068 adds r0, r1 mov r10, r0 _080F0C84: ldr r0, _080F0D44 @ =gUnknown_840C0A4 ldr r4, [sp, 0x10] adds r0, r4, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F0CE0 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r0, r9 adds r5, r4, r0 mov r3, r10 ldrb r1, [r3] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F0D48 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0D4C @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] movs r0, 0x8 strh r0, [r5, 0x36] movs r0, 0x2 strh r0, [r5, 0x38] strh r0, [r5, 0x3A] _080F0CE0: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F0C84 ldr r0, _080F0D50 @ =gTasks ldr r1, [sp, 0x14] add r1, r8 lsls r1, 3 adds r1, r0 movs r0, 0x8 strh r0, [r1, 0x16] ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] lsls r0, 16 asrs r2, r0, 16 cmp r2, 0x2 bne _080F0D2A ldr r0, _080F0D54 @ =gMain ldr r4, _080F0D58 @ =0x00000439 adds r0, r4 ldrb r1, [r0] adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _080F0D24 ldr r0, _080F0D3C @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F0D24: mov r0, r8 bl DestroyTask _080F0D2A: add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0D3C: .4byte gSprites _080F0D40: .4byte gUnknown_840C068 _080F0D44: .4byte gUnknown_840C0A4 _080F0D48: .4byte gSprites + 0x1C _080F0D4C: .4byte sub_80F0D5C _080F0D50: .4byte gTasks _080F0D54: .4byte gMain _080F0D58: .4byte 0x00000439 thumb_func_end sub_80F0C28 thumb_func_start sub_80F0D5C sub_80F0D5C: @ 80F0D5C push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x30 ldrsh r1, [r4, r2] bl Sin strh r0, [r4, 0x24] movs r1, 0x2E ldrsh r0, [r4, r1] movs r2, 0x32 ldrsh r1, [r4, r2] bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x36] ldrh r1, [r4, 0x2E] adds r0, r1 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x2E] ldrh r0, [r4, 0x38] ldrh r2, [r4, 0x30] adds r0, r2 strh r0, [r4, 0x30] ldrh r0, [r4, 0x3A] ldrh r1, [r4, 0x32] adds r0, r1 strh r0, [r4, 0x32] ldrh r0, [r4, 0x34] adds r0, 0x1 strh r0, [r4, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080F0DAC adds r0, r4, 0 bl sub_80F1198 _080F0DAC: pop {r4} pop {r0} bx r0 thumb_func_end sub_80F0D5C thumb_func_start sub_80F0DB4 sub_80F0DB4: @ 80F0DB4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r1, _080F0E90 @ =gTasks lsls r0, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x26] lsls r1, 24 lsrs r1, 24 ldrb r2, [r0, 0xA] str r2, [sp] ldrb r3, [r0, 0xC] str r3, [sp, 0x4] ldrb r2, [r0, 0xE] str r2, [sp, 0x8] ldrb r0, [r0, 0x10] str r0, [sp, 0xC] movs r7, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 str r0, [sp, 0x10] ldr r3, _080F0E94 @ =gSprites mov r8, r3 ldr r0, _080F0E98 @ =gUnknown_840C068 adds r1, r0 mov r10, r1 _080F0DFA: ldr r0, _080F0E9C @ =gUnknown_840C0A4 ldr r1, [sp, 0x10] adds r0, r1, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F0E52 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r2, r8 adds r5, r4, r2 mov r3, r10 ldrb r1, [r3] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F0EA0 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F0EA4 @ =sub_80F0EB0 str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 2 adds r0, r7 lsls r0, 2 adds r0, r7 strh r0, [r5, 0x2E] _080F0E52: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0xB bls _080F0DFA ldr r0, _080F0EA8 @ =gMain ldr r1, _080F0EAC @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F0E7A ldr r0, _080F0E94 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F0E7A: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F0E90: .4byte gTasks _080F0E94: .4byte gSprites _080F0E98: .4byte gUnknown_840C068 _080F0E9C: .4byte gUnknown_840C0A4 _080F0EA0: .4byte gSprites + 0x1C _080F0EA4: .4byte sub_80F0EB0 _080F0EA8: .4byte gMain _080F0EAC: .4byte 0x00000439 thumb_func_end sub_80F0DB4 thumb_func_start sub_80F0EB0 sub_80F0EB0: @ 80F0EB0 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] movs r2, 0x30 ldrsh r1, [r5, r2] bl Sin strh r0, [r5, 0x24] movs r0, 0x2E ldrsh r4, [r5, r0] movs r2, 0x32 ldrsh r1, [r5, r2] adds r0, r4, 0 bl Sin adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl Cos strh r0, [r5, 0x26] ldrh r0, [r5, 0x2E] adds r0, 0x6 movs r1, 0xFF ands r0, r1 strh r0, [r5, 0x2E] ldrh r0, [r5, 0x30] adds r0, 0x1 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] adds r0, 0x1 strh r0, [r5, 0x32] ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080F0F08 adds r0, r5, 0 bl sub_80F1198 _080F0F08: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80F0EB0 thumb_func_start sub_80F0F10 sub_80F0F10: @ 80F0F10 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 lsls r0, 24 lsrs r0, 24 str r0, [sp] ldr r0, _080F0FC4 @ =gTasks ldr r2, [sp] lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] lsls r0, 24 lsrs r0, 24 mov r9, r0 ldrb r3, [r1, 0xA] str r3, [sp, 0x4] ldrb r0, [r1, 0xC] str r0, [sp, 0x8] ldrb r2, [r1, 0xE] str r2, [sp, 0xC] ldrb r1, [r1, 0x10] str r1, [sp, 0x10] movs r3, 0 mov r8, r3 mov r1, r9 lsls r0, r1, 1 add r0, r9 lsls r0, 3 str r0, [sp, 0x14] _080F0F54: movs r7, 0 movs r2, 0x1 add r2, r8 mov r10, r2 _080F0F5C: ldr r0, _080F0FC8 @ =gUnknown_840C0A4 ldr r3, [sp, 0x14] adds r0, r3, r0 ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] ldr r3, [sp, 0x10] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F0FE4 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 ldr r0, _080F0FCC @ =gSprites adds r5, r4, r0 ldr r0, _080F0FD0 @ =gUnknown_840C068 add r0, r9 ldrb r1, [r0] adds r0, r5, 0 bl StartSpriteAnim ldr r1, _080F0FD4 @ =gSprites + 0x1C adds r4, r1 ldr r0, _080F0FD8 @ =sub_80F0D5C str r0, [r4] movs r0, 0x3 ldr r1, [sp, 0xC] ands r1, r0 lsls r1, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r2, r3, 0 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] movs r0, 0x8 strh r0, [r5, 0x36] mov r0, r8 cmp r0, 0 bne _080F0FDC movs r0, 0x2 strh r0, [r5, 0x38] movs r0, 0x1 b _080F0FE2 .align 2, 0 _080F0FC4: .4byte gTasks _080F0FC8: .4byte gUnknown_840C0A4 _080F0FCC: .4byte gSprites _080F0FD0: .4byte gUnknown_840C068 _080F0FD4: .4byte gSprites + 0x1C _080F0FD8: .4byte sub_80F0D5C _080F0FDC: movs r0, 0x1 strh r0, [r5, 0x38] movs r0, 0x2 _080F0FE2: strh r0, [r5, 0x3A] _080F0FE4: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F0F5C mov r1, r10 lsls r0, r1, 24 lsrs r0, 24 mov r8, r0 cmp r0, 0x1 bls _080F0F54 ldr r0, _080F1030 @ =gMain ldr r2, _080F1034 @ =0x00000439 adds r0, r2 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F1018 ldr r0, _080F1038 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F1018: ldr r0, [sp] bl DestroyTask add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F1030: .4byte gMain _080F1034: .4byte 0x00000439 _080F1038: .4byte gSprites thumb_func_end sub_80F0F10 thumb_func_start sub_80F103C sub_80F103C: @ 80F103C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r1, _080F1114 @ =gTasks lsls r0, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x26] lsls r1, 24 lsrs r1, 24 ldrb r2, [r0, 0xA] str r2, [sp] ldrb r3, [r0, 0xC] str r3, [sp, 0x4] ldrb r2, [r0, 0xE] str r2, [sp, 0x8] ldrb r0, [r0, 0x10] str r0, [sp, 0xC] movs r7, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 str r0, [sp, 0x10] ldr r3, _080F1118 @ =gSprites mov r8, r3 ldr r0, _080F111C @ =gUnknown_840C068 adds r1, r0 mov r10, r1 _080F1082: ldr r0, _080F1120 @ =gUnknown_840C0A4 ldr r1, [sp, 0x10] adds r0, r1, r0 ldr r1, [sp] ldr r2, [sp, 0x4] ldr r3, [sp, 0xC] bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x40 beq _080F10D4 bl sub_80F0674 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 mov r2, r8 adds r5, r4, r2 mov r3, r10 ldrb r1, [r3] adds r0, r5, 0 bl StartSpriteAnim ldr r0, _080F1124 @ =gSprites + 0x1C adds r4, r0 ldr r0, _080F1128 @ =sub_80F1134 str r0, [r4] movs r0, 0x3 ldr r2, [sp, 0x8] ands r2, r0 lsls r2, 2 ldrb r0, [r5, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 orrs r0, r2 strb r0, [r5, 0x5] lsls r0, r7, 5 strh r0, [r5, 0x2E] _080F10D4: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x7 bls _080F1082 ldr r0, _080F112C @ =gMain ldr r1, _080F1130 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F10FC ldr r0, _080F1118 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x3C] _080F10FC: mov r0, r9 bl DestroyTask add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F1114: .4byte gTasks _080F1118: .4byte gSprites _080F111C: .4byte gUnknown_840C068 _080F1120: .4byte gUnknown_840C0A4 _080F1124: .4byte gSprites + 0x1C _080F1128: .4byte sub_80F1134 _080F112C: .4byte gMain _080F1130: .4byte 0x00000439 thumb_func_end sub_80F103C thumb_func_start sub_80F1134 sub_80F1134: @ 80F1134 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] movs r2, 0x30 ldrsh r1, [r5, r2] bl Sin strh r0, [r5, 0x24] movs r0, 0x2E ldrsh r4, [r5, r0] ldrh r1, [r5, 0x2E] movs r0, 0x3F ands r0, r1 movs r2, 0x32 ldrsh r1, [r5, r2] bl Sin adds r1, r0, 0 lsls r1, 16 asrs r1, 16 adds r0, r4, 0 bl Cos strh r0, [r5, 0x26] ldrh r0, [r5, 0x2E] adds r0, 0xA movs r1, 0xFF ands r0, r1 strh r0, [r5, 0x2E] ldrh r0, [r5, 0x30] adds r0, 0x1 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] adds r0, 0x1 strh r0, [r5, 0x32] ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] lsls r0, 16 asrs r0, 16 cmp r0, 0x33 bne _080F1190 adds r0, r5, 0 bl sub_80F1198 _080F1190: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80F1134 thumb_func_start sub_80F1198 sub_80F1198: @ 80F1198 push {r4-r7,lr} adds r7, r0, 0 ldr r0, _080F11BC @ =gMain ldr r1, _080F11C0 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080F11C4 movs r1, 0x3C ldrsh r0, [r7, r1] cmp r0, 0x1 bne _080F11F6 adds r0, r7, 0 bl DestroySpriteAndFreeResources b _080F1212 .align 2, 0 _080F11BC: .4byte gMain _080F11C0: .4byte 0x00000439 _080F11C4: ldr r2, _080F1200 @ =gBattleSpritesDataPtr ldr r0, [r2] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] subs r0, 0x1 strb r0, [r1, 0xA] ldr r0, [r2] ldr r0, [r0, 0x8] ldrb r0, [r0, 0xA] cmp r0, 0 bne _080F120C movs r6, 0 ldr r5, _080F1204 @ =gUnknown_840BF48 ldr r4, _080F1208 @ =gUnknown_840BFA8 _080F11E0: ldrh r0, [r5, 0x6] bl FreeSpriteTilesByTag ldrh r0, [r4, 0x4] bl FreeSpritePaletteByTag adds r5, 0x8 adds r4, 0x8 adds r6, 0x1 cmp r6, 0xB ble _080F11E0 _080F11F6: adds r0, r7, 0 bl DestroySprite b _080F1212 .align 2, 0 _080F1200: .4byte gBattleSpritesDataPtr _080F1204: .4byte gUnknown_840BF48 _080F1208: .4byte gUnknown_840BFA8 _080F120C: adds r0, r7, 0 bl DestroySprite _080F1212: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80F1198 thumb_func_start LaunchBallFadeMonTask LaunchBallFadeMonTask: @ 80F1218 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 adds r4, r0, 0 mov r9, r2 lsls r4, 24 lsrs r4, 24 lsls r1, 24 lsrs r6, r1, 24 lsls r3, 24 lsrs r7, r3, 24 ldr r0, _080F127C @ =sub_80F12E0 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, _080F1280 @ =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r5, r0, r1 strh r7, [r5, 0x26] strh r6, [r5, 0xE] mov r0, r9 strh r0, [r5, 0x1C] mov r1, r9 lsrs r0, r1, 16 strh r0, [r5, 0x1E] cmp r4, 0 bne _080F1288 lsls r0, r6, 20 movs r2, 0x80 lsls r2, 17 adds r0, r2 lsrs r0, 16 ldr r2, _080F1284 @ =gUnknown_840C1C4 lsls r1, r7, 1 adds r1, r2 ldrh r3, [r1] movs r1, 0x10 movs r2, 0 bl BlendPalette movs r0, 0x1 strh r0, [r5, 0xA] b _080F12AE .align 2, 0 _080F127C: .4byte sub_80F12E0 _080F1280: .4byte gTasks _080F1284: .4byte gUnknown_840C1C4 _080F1288: lsls r0, r6, 20 movs r1, 0x80 lsls r1, 17 adds r0, r1 lsrs r0, 16 ldr r2, _080F12D0 @ =gUnknown_840C1C4 lsls r1, r7, 1 adds r1, r2 ldrh r3, [r1] movs r1, 0x10 movs r2, 0x10 bl BlendPalette movs r0, 0x10 strh r0, [r5, 0x8] ldr r0, _080F12D4 @ =0x0000ffff strh r0, [r5, 0xA] ldr r0, _080F12D8 @ =sub_80F1370 str r0, [r5] _080F12AE: ldr r0, _080F12DC @ =0x00007fff str r0, [sp] mov r0, r9 movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade mov r0, r8 add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080F12D0: .4byte gUnknown_840C1C4 _080F12D4: .4byte 0x0000ffff _080F12D8: .4byte sub_80F1370 _080F12DC: .4byte 0x00007fff thumb_func_end LaunchBallFadeMonTask thumb_func_start sub_80F12E0 sub_80F12E0: @ 80F12E0 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, _080F1330 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r1, r0, 24 movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0x10 bgt _080F1338 movs r2, 0xE ldrsh r0, [r4, r2] lsls r0, 20 movs r2, 0x80 lsls r2, 17 adds r0, r2 lsrs r0, 16 ldrb r2, [r4, 0x8] ldr r3, _080F1334 @ =gUnknown_840C1C4 lsls r1, 1 adds r1, r3 ldrh r3, [r1] movs r1, 0x10 bl BlendPalette ldrh r0, [r4, 0xA] ldrh r1, [r4, 0x8] adds r0, r1 strh r0, [r4, 0x8] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] b _080F1360 .align 2, 0 _080F1330: .4byte gTasks _080F1334: .4byte gUnknown_840C1C4 _080F1338: ldr r0, _080F1368 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080F1360 ldrh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] lsls r1, 16 orrs r0, r1 ldr r1, _080F136C @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade adds r0, r5, 0 bl DestroyTask _080F1360: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F1368: .4byte gPaletteFade _080F136C: .4byte 0x00007fff thumb_func_end sub_80F12E0 thumb_func_start sub_80F1370 sub_80F1370: @ 80F1370 push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080F13B0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080F13A8 ldr r0, _080F13B4 @ =gTasks lsls r4, r2, 2 adds r4, r2 lsls r4, 3 adds r4, r0 ldrh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] lsls r1, 16 orrs r0, r1 ldr r1, _080F13B8 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r0, _080F13BC @ =sub_80F13C0 str r0, [r4] _080F13A8: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _080F13B0: .4byte gPaletteFade _080F13B4: .4byte gTasks _080F13B8: .4byte 0x00007fff _080F13BC: .4byte sub_80F13C0 thumb_func_end sub_80F1370 thumb_func_start sub_80F13C0 sub_80F13C0: @ 80F13C0 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, _080F140C @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r1, r0, 24 movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0x10 bgt _080F1414 movs r2, 0xE ldrsh r0, [r4, r2] lsls r0, 20 movs r3, 0x80 lsls r3, 17 adds r0, r3 lsrs r0, 16 ldrb r2, [r4, 0x8] ldr r3, _080F1410 @ =gUnknown_840C1C4 lsls r1, 1 adds r1, r3 ldrh r3, [r1] movs r1, 0x10 bl BlendPalette ldrh r0, [r4, 0xA] ldrh r1, [r4, 0x8] adds r0, r1 strh r0, [r4, 0x8] ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] b _080F141A .align 2, 0 _080F140C: .4byte gTasks _080F1410: .4byte gUnknown_840C1C4 _080F1414: adds r0, r2, 0 bl DestroyTask _080F141A: pop {r4} pop {r0} bx r0 thumb_func_end sub_80F13C0 thumb_func_start sub_80F1420 sub_80F1420: @ 80F1420 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r7, r0, 24 movs r0, 0 mov r8, r0 ldr r0, _080F1454 @ =gBattlerSpriteIds ldr r3, _080F1458 @ =gBattleAnimAttacker ldrb r2, [r3] adds r0, r2, r0 ldrb r6, [r0] ldr r1, _080F145C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r5, r0, r1 movs r1, 0x1C ldrsh r0, [r5, r1] cmp r0, 0x1 beq _080F14F8 cmp r0, 0x1 bgt _080F1460 cmp r0, 0 beq _080F1466 b _080F15BA .align 2, 0 _080F1454: .4byte gBattlerSpriteIds _080F1458: .4byte gBattleAnimAttacker _080F145C: .4byte gTasks _080F1460: cmp r0, 0x2 beq _080F150A b _080F15BA _080F1466: ldr r0, _080F14A0 @ =gBattleAnimArgs ldrh r0, [r0] strh r0, [r5, 0x1E] movs r2, 0xA0 lsls r2, 3 adds r0, r2, 0 ldrh r4, [r5, 0x8] adds r0, r4 strh r0, [r5, 0x8] ldrb r0, [r3] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080F14A8 ldr r2, _080F14A4 @ =gSprites lsls r3, r6, 4 adds r1, r3, r6 lsls r1, 2 adds r1, r2 ldrh r0, [r5, 0x8] lsls r0, 16 asrs r0, 24 ldrh r4, [r1, 0x24] adds r0, r4 strh r0, [r1, 0x24] adds r4, r3, 0 b _080F14C0 .align 2, 0 _080F14A0: .4byte gBattleAnimArgs _080F14A4: .4byte gSprites _080F14A8: ldr r3, _080F14F0 @ =gSprites lsls r4, r6, 4 adds r2, r4, r6 lsls r2, 2 adds r2, r3 ldrh r1, [r5, 0x8] lsls r1, 16 asrs r1, 24 ldrh r0, [r2, 0x24] subs r0, r1 strh r0, [r2, 0x24] adds r2, r3, 0 _080F14C0: ldr r1, _080F14F4 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r3, r0, r1 ldrb r0, [r3, 0x8] strh r0, [r3, 0x8] adds r0, r4, r6 lsls r0, 2 adds r0, r2 movs r2, 0x20 ldrsh r1, [r0, r2] movs r4, 0x24 ldrsh r0, [r0, r4] adds r1, r0 adds r1, 0x20 movs r0, 0x98 lsls r0, 1 cmp r1, r0 bls _080F15BA ldrh r0, [r3, 0x1C] adds r0, 0x1 strh r0, [r3, 0x1C] b _080F15BA .align 2, 0 _080F14F0: .4byte gSprites _080F14F4: .4byte gTasks _080F14F8: ldrb r1, [r5, 0x1E] adds r0, r2, 0 adds r2, r6, 0 bl LoadBattleMonGfxAndAnimate ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] b _080F15BA _080F150A: movs r1, 0xA0 lsls r1, 3 adds r0, r1, 0 ldrh r2, [r5, 0x8] adds r0, r2 strh r0, [r5, 0x8] ldrb r0, [r3] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080F1540 ldr r0, _080F153C @ =gSprites lsls r3, r6, 4 adds r2, r3, r6 lsls r2, 2 adds r2, r0 ldrh r1, [r5, 0x8] lsls r1, 16 asrs r1, 24 ldrh r0, [r2, 0x24] subs r0, r1 strh r0, [r2, 0x24] adds r4, r3, 0 b _080F1558 .align 2, 0 _080F153C: .4byte gSprites _080F1540: ldr r0, _080F158C @ =gSprites lsls r2, r6, 4 adds r1, r2, r6 lsls r1, 2 adds r1, r0 ldrh r0, [r5, 0x8] lsls r0, 16 asrs r0, 24 ldrh r3, [r1, 0x24] adds r0, r3 strh r0, [r1, 0x24] adds r4, r2, 0 _080F1558: ldr r1, _080F1590 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0x8] strh r1, [r0, 0x8] ldr r0, _080F1594 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _080F1598 ldr r0, _080F158C @ =gSprites adds r1, r4, r6 lsls r1, 2 adds r1, r0 movs r4, 0x24 ldrsh r0, [r1, r4] cmp r0, 0 bgt _080F15AE movs r0, 0 strh r0, [r1, 0x24] b _080F15B4 .align 2, 0 _080F158C: .4byte gSprites _080F1590: .4byte gTasks _080F1594: .4byte gBattleAnimAttacker _080F1598: ldr r0, _080F15C4 @ =gSprites adds r1, r4, r6 lsls r1, 2 adds r1, r0 movs r3, 0x24 ldrsh r0, [r1, r3] cmp r0, 0 blt _080F15AE strh r2, [r1, 0x24] movs r4, 0x1 mov r8, r4 _080F15AE: mov r0, r8 cmp r0, 0 beq _080F15BA _080F15B4: adds r0, r7, 0 bl DestroyAnimVisualTask _080F15BA: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F15C4: .4byte gSprites thumb_func_end sub_80F1420 thumb_func_start sub_80F15C8 sub_80F15C8: @ 80F15C8 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080F15EC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x26 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080F1644 cmp r0, 0x1 bgt _080F15F0 cmp r0, 0 beq _080F15F6 b _080F16B4 .align 2, 0 _080F15EC: .4byte gTasks _080F15F0: cmp r0, 0x2 beq _080F167E b _080F16B4 _080F15F6: ldr r0, _080F1610 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080F1618 ldr r1, _080F1614 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg b _080F1620 .align 2, 0 _080F1610: .4byte gBattleAnimAttacker _080F1614: .4byte 0x00003f42 _080F1618: ldr r1, _080F163C @ =0x00003f44 movs r0, 0x50 bl SetGpuReg _080F1620: movs r0, 0x52 movs r1, 0x10 bl SetGpuReg ldr r0, _080F1640 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] adds r0, 0x1 strh r0, [r1, 0x26] b _080F16B4 .align 2, 0 _080F163C: .4byte 0x00003f44 _080F1640: .4byte gTasks _080F1644: ldrh r0, [r4, 0xA] adds r1, r0, 0x1 strh r1, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080F16B4 movs r0, 0 strh r0, [r4, 0xA] ldrh r2, [r4, 0x8] adds r2, 0x1 strh r2, [r4, 0x8] lsls r1, r2, 8 movs r0, 0x10 subs r0, r2 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x10 bne _080F16B4 ldrh r0, [r4, 0x26] adds r0, 0x1 strh r0, [r4, 0x26] b _080F16B4 _080F167E: ldr r1, _080F16BC @ =gBattlerSpriteIds ldr r4, _080F16C0 @ =gBattleAnimAttacker ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] ldr r2, _080F16C4 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r1, [r0, 0x4] lsls r1, 22 lsrs r1, 17 ldr r0, _080F16C8 @ =0x06010000 adds r1, r0 movs r2, 0x80 lsls r2, 4 movs r0, 0 movs r3, 0x1 bl RequestDma3Fill ldrb r0, [r4] bl ClearBehindSubstituteBit adds r0, r5, 0 bl DestroyAnimVisualTask _080F16B4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F16BC: .4byte gBattlerSpriteIds _080F16C0: .4byte gBattleAnimAttacker _080F16C4: .4byte gSprites _080F16C8: .4byte 0x06010000 thumb_func_end sub_80F15C8 thumb_func_start sub_80F16CC sub_80F16CC: @ 80F16CC push {lr} lsls r0, 24 lsrs r0, 24 ldr r3, _080F16F4 @ =gBattleAnimArgs ldr r1, _080F16F8 @ =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, _080F16FC @ =gBattleAnimAttacker ldrb r1, [r1] ldr r2, [r2] lsls r1, 2 adds r1, r2 ldr r1, [r1] lsls r1, 29 lsrs r1, 31 strh r1, [r3, 0xE] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080F16F4: .4byte gBattleAnimArgs _080F16F8: .4byte gBattleSpritesDataPtr _080F16FC: .4byte gBattleAnimAttacker thumb_func_end sub_80F16CC thumb_func_start sub_80F1700 sub_80F1700: @ 80F1700 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080F1718 @ =gBattleAnimTarget ldr r1, _080F171C @ =gEffectBattler ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080F1718: .4byte gBattleAnimTarget _080F171C: .4byte gEffectBattler thumb_func_end sub_80F1700 thumb_func_start sub_80F1720 sub_80F1720: @ 80F1720 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r1, 0 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 mov r8, r0 ldr r0, _080F17DC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] adds r0, r4, 0 movs r1, 0x1 bl GetMonData adds r5, r0, 0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r4, r0, 0 adds r0, r6, 0 bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080F17F8 lsrs r0, r5, 16 ldr r7, _080F17E0 @ =0x0000ffff ands r5, r7 eors r0, r5 lsrs r1, r4, 16 eors r0, r1 ands r4, r7 eors r0, r4 cmp r0, 0x7 bhi _080F177E movs r0, 0x1 mov r8, r0 _080F177E: mov r0, r8 cmp r0, 0 beq _080F17F8 ldr r0, _080F17E4 @ =0x000027f9 bl GetSpriteTileStartByTag lsls r0, 16 lsrs r0, 16 cmp r0, r7 bne _080F179E ldr r0, _080F17E8 @ =gUnknown_83AD350 bl LoadCompressedSpriteSheetUsingHeap ldr r0, _080F17EC @ =gUnknown_83ADC58 bl LoadCompressedSpritePaletteUsingHeap _080F179E: ldr r5, _080F17F0 @ =sub_80F181C adds r0, r5, 0 movs r1, 0xA bl CreateTask adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 movs r1, 0xA bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r3, _080F17F4 @ =gTasks lsls r2, r4, 2 adds r2, r4 lsls r2, 3 adds r2, r3 movs r4, 0 strh r6, [r2, 0x8] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r3 strh r6, [r1, 0x8] strh r4, [r2, 0xA] movs r0, 0x1 strh r0, [r1, 0xA] b _080F180E .align 2, 0 _080F17DC: .4byte gBattleSpritesDataPtr _080F17E0: .4byte 0x0000ffff _080F17E4: .4byte 0x000027f9 _080F17E8: .4byte gUnknown_83AD350 _080F17EC: .4byte gUnknown_83ADC58 _080F17F0: .4byte sub_80F181C _080F17F4: .4byte gTasks _080F17F8: ldr r0, _080F1818 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x1] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x1] _080F180E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F1818: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F1720 thumb_func_start sub_80F181C sub_80F181C: @ 80F181C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 ldr r1, _080F1844 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r4, r0, r1 ldrh r1, [r4, 0x22] movs r2, 0x22 ldrsh r0, [r4, r2] cmp r0, 0x3B bgt _080F1848 adds r0, r1, 0x1 strh r0, [r4, 0x22] b _080F19C0 .align 2, 0 _080F1844: .4byte gTasks _080F1848: ldr r0, _080F189C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0xA] cmp r0, 0 beq _080F1856 b _080F19C0 _080F1856: ldrh r0, [r4, 0x1C] adds r1, r0, 0x1 strh r1, [r4, 0x1C] lsls r0, 16 movs r1, 0xC0 lsls r1, 10 ands r1, r0 cmp r1, 0 beq _080F186A b _080F19C0 _080F186A: ldrb r0, [r4, 0x8] mov r8, r0 movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 mov r0, r8 movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r2, r0, 24 movs r1, 0x1E ldrsh r0, [r4, r1] cmp r0, 0 bne _080F18A4 ldr r0, _080F18A0 @ =gUnknown_83FF168 adds r1, r5, 0 movs r3, 0x5 bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 b _080F1906 .align 2, 0 _080F189C: .4byte gBattleSpritesDataPtr _080F18A0: .4byte gUnknown_83FF168 _080F18A4: cmp r0, 0 blt _080F18D8 cmp r0, 0x3 bgt _080F18D8 ldr r0, _080F18D0 @ =gUnknown_83FF180 adds r1, r5, 0 movs r3, 0x5 bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080F18D4 @ =gSprites lsls r2, r5, 4 adds r2, r5 lsls r2, 2 adds r2, r0 ldrh r3, [r2, 0x4] lsls r1, r3, 22 lsrs r1, 22 adds r1, 0x4 b _080F18F8 .align 2, 0 _080F18D0: .4byte gUnknown_83FF180 _080F18D4: .4byte gSprites _080F18D8: ldr r0, _080F1930 @ =gUnknown_83FF180 adds r1, r5, 0 movs r3, 0x5 bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080F1934 @ =gSprites lsls r2, r5, 4 adds r2, r5 lsls r2, 2 adds r2, r0 ldrh r3, [r2, 0x4] lsls r1, r3, 22 lsrs r1, 22 adds r1, 0x5 _080F18F8: ldr r4, _080F1938 @ =0x000003ff adds r0, r4, 0 ands r1, r0 ldr r0, _080F193C @ =0xfffffc00 ands r0, r3 orrs r0, r1 strh r0, [r2, 0x4] _080F1906: ldr r2, _080F1940 @ =gTasks lsls r1, r7, 2 adds r0, r1, r7 lsls r0, 3 adds r6, r0, r2 movs r2, 0xA ldrsh r0, [r6, r2] mov r9, r1 cmp r0, 0 bne _080F1948 ldr r1, _080F1934 @ =gSprites lsls r2, r5, 4 adds r0, r2, r5 lsls r0, 2 adds r1, 0x1C adds r0, r1 ldr r1, _080F1944 @ =sub_80F1A2C str r1, [r0] adds r4, r2, 0 b _080F1990 .align 2, 0 _080F1930: .4byte gUnknown_83FF180 _080F1934: .4byte gSprites _080F1938: .4byte 0x000003ff _080F193C: .4byte 0xfffffc00 _080F1940: .4byte gTasks _080F1944: .4byte sub_80F1A2C _080F1948: ldr r3, _080F19CC @ =gSprites lsls r4, r5, 4 adds r1, r4, r5 lsls r1, 2 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 ldr r2, _080F19D0 @ =sub_80F1A80 str r2, [r0] adds r1, r3 ldr r0, _080F19D4 @ =0x0000ffe0 strh r0, [r1, 0x24] movs r0, 0x20 strh r0, [r1, 0x26] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] movs r1, 0x1E ldrsh r0, [r6, r1] cmp r0, 0 bne _080F1990 mov r0, r8 bl GetBattlerSide lsls r0, 24 movs r1, 0x3F cmp r0, 0 bne _080F1986 movs r1, 0xC0 _080F1986: lsls r1, 24 asrs r1, 24 movs r0, 0x5F bl PlaySE12WithPanning _080F1990: ldr r1, _080F19CC @ =gSprites adds r0, r4, r5 lsls r0, 2 adds r0, r1 strh r7, [r0, 0x2E] ldr r1, _080F19D8 @ =gTasks mov r2, r9 adds r0, r2, r7 lsls r0, 3 adds r1, r0, r1 ldrh r0, [r1, 0x1E] adds r0, 0x1 strh r0, [r1, 0x1E] cmp r5, 0x40 beq _080F19B4 ldrh r0, [r1, 0x20] adds r0, 0x1 strh r0, [r1, 0x20] _080F19B4: movs r4, 0x1E ldrsh r0, [r1, r4] cmp r0, 0x5 bne _080F19C0 ldr r0, _080F19DC @ =sub_80F19E0 str r0, [r1] _080F19C0: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080F19CC: .4byte gSprites _080F19D0: .4byte sub_80F1A80 _080F19D4: .4byte 0x0000ffe0 _080F19D8: .4byte gTasks _080F19DC: .4byte sub_80F19E0 thumb_func_end sub_80F181C thumb_func_start sub_80F19E0 sub_80F19E0: @ 80F19E0 push {lr} lsls r0, 24 lsrs r0, 24 adds r3, r0, 0 ldr r1, _080F1A24 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r1, r0, r1 movs r2, 0x20 ldrsh r0, [r1, r2] cmp r0, 0 bne _080F1A20 movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0x1 bne _080F1A1A ldrb r1, [r1, 0x8] ldr r0, _080F1A28 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x1] _080F1A1A: adds r0, r3, 0 bl DestroyTask _080F1A20: pop {r0} bx r0 .align 2, 0 _080F1A24: .4byte gTasks _080F1A28: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F19E0 thumb_func_start sub_80F1A2C sub_80F1A2C: @ 80F1A2C push {r4,lr} adds r4, r0, 0 movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x18 bl Sin strh r0, [r4, 0x24] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x18 bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0xC strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0xFF ble _080F1A76 ldr r2, _080F1A7C @ =gTasks movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x20] subs r1, 0x1 strh r1, [r0, 0x20] adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite _080F1A76: pop {r4} pop {r0} bx r0 .align 2, 0 _080F1A7C: .4byte gTasks thumb_func_end sub_80F1A2C thumb_func_start sub_80F1A80 sub_80F1A80: @ 80F1A80 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x30] movs r2, 0x30 ldrsh r0, [r4, r2] cmp r0, 0x3 bgt _080F1A94 adds r0, r1, 0x1 strh r0, [r4, 0x30] b _080F1AD6 _080F1A94: adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldrh r1, [r4, 0x24] adds r1, 0x5 strh r1, [r4, 0x24] ldrh r0, [r4, 0x26] subs r0, 0x5 strh r0, [r4, 0x26] lsls r1, 16 asrs r1, 16 cmp r1, 0x20 ble _080F1AD6 ldr r2, _080F1ADC @ =gTasks movs r0, 0x2E ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrh r1, [r0, 0x20] subs r1, 0x1 strh r1, [r0, 0x20] adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite _080F1AD6: pop {r4} pop {r0} bx r0 .align 2, 0 _080F1ADC: .4byte gTasks thumb_func_end sub_80F1A80 thumb_func_start sub_80F1AE0 sub_80F1AE0: @ 80F1AE0 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080F1B08 @ =gUnknown_83AD470 bl LoadCompressedSpriteSheetUsingHeap ldr r0, _080F1B0C @ =gUnknown_83ADD78 bl LoadCompressedSpritePaletteUsingHeap ldr r0, _080F1B10 @ =0x0000281d bl IndexOfSpritePaletteTag adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080F1B08: .4byte gUnknown_83AD470 _080F1B0C: .4byte gUnknown_83ADD78 _080F1B10: .4byte 0x0000281d thumb_func_end sub_80F1AE0 thumb_func_start sub_80F1B14 sub_80F1B14: @ 80F1B14 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r5, _080F1B38 @ =0x0000281d adds r0, r5, 0 bl FreeSpriteTilesByTag adds r0, r5, 0 bl FreeSpritePaletteByTag adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F1B38: .4byte 0x0000281d thumb_func_end sub_80F1B14 thumb_func_start sub_80F1B3C sub_80F1B3C: @ 80F1B3C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 bl InitSpritePosToAnimAttacker movs r0, 0x1E strh r0, [r4, 0x2E] movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl GetBattlerSpriteCoord lsls r0, 24 ldr r5, _080F1BB0 @ =gBattleAnimArgs lsrs r0, 24 ldrh r1, [r5, 0x4] adds r0, r1 strh r0, [r4, 0x32] movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 movs r1, 0x1 bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x6] adds r0, r5 strh r0, [r4, 0x36] ldr r0, _080F1BB4 @ =0x0000ffe0 strh r0, [r4, 0x38] adds r0, r4, 0 bl InitAnimArcTranslation ldr r2, _080F1BB8 @ =gSprites ldr r1, _080F1BBC @ =gBattlerSpriteIds ldr r0, _080F1BC0 @ =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, _080F1BC4 @ =sub_8012354 str r1, [r0] ldr r0, _080F1BC8 @ =sub_80F1BCC str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F1BB0: .4byte gBattleAnimArgs _080F1BB4: .4byte 0x0000ffe0 _080F1BB8: .4byte gSprites _080F1BBC: .4byte gBattlerSpriteIds _080F1BC0: .4byte gBattleAnimAttacker _080F1BC4: .4byte sub_8012354 _080F1BC8: .4byte sub_80F1BCC thumb_func_end sub_80F1B3C thumb_func_start sub_80F1BCC sub_80F1BCC: @ 80F1BCC push {lr} adds r3, r0, 0 ldr r2, _080F1BF4 @ =gSprites ldr r1, _080F1BF8 @ =gBattlerSpriteIds ldr r0, _080F1BFC @ =gBattleAnimAttacker ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x2B ldrb r0, [r0] cmp r0, 0x1 bne _080F1BF0 ldr r0, _080F1C00 @ =sub_80F1C04 str r0, [r3, 0x1C] _080F1BF0: pop {r0} bx r0 .align 2, 0 _080F1BF4: .4byte gSprites _080F1BF8: .4byte gBattlerSpriteIds _080F1BFC: .4byte gBattleAnimAttacker _080F1C00: .4byte sub_80F1C04 thumb_func_end sub_80F1BCC thumb_func_start sub_80F1C04 sub_80F1C04: @ 80F1C04 push {r4,lr} adds r4, r0, 0 bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080F1C26 movs r0, 0 strh r0, [r4, 0x2E] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _080F1C2C @ =sub_80F1C30 str r0, [r4, 0x1C] _080F1C26: pop {r4} pop {r0} bx r0 .align 2, 0 _080F1C2C: .4byte sub_80F1C30 thumb_func_end sub_80F1C04 thumb_func_start sub_80F1C30 sub_80F1C30: @ 80F1C30 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _080F1C80 @ =gSprites ldr r3, _080F1C84 @ =gBattlerSpriteIds ldr r2, _080F1C88 @ =gBattleAnimAttacker ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3F ldrb r0, [r0] lsls r0, 27 cmp r0, 0 bge _080F1C78 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] lsls r0, 16 cmp r0, 0 ble _080F1C78 ldrb r0, [r2] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0 bl StartSpriteAnim adds r0, r4, 0 bl DestroyAnimSprite _080F1C78: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080F1C80: .4byte gSprites _080F1C84: .4byte gBattlerSpriteIds _080F1C88: .4byte gBattleAnimAttacker thumb_func_end sub_80F1C30 thumb_func_start sub_80F1C8C sub_80F1C8C: @ 80F1C8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080F1CA4 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 beq _080F1CA8 cmp r0, 0x1 beq _080F1CBC b _080F1CD0 .align 2, 0 _080F1CA4: .4byte gBattleAnimArgs _080F1CA8: movs r0, 0 bl GetBattlerAtPosition ldr r1, _080F1CB8 @ =gBattleAnimAttacker strb r0, [r1] movs r0, 0x1 b _080F1CC8 .align 2, 0 _080F1CB8: .4byte gBattleAnimAttacker _080F1CBC: movs r0, 0x1 bl GetBattlerAtPosition ldr r1, _080F1CDC @ =gBattleAnimAttacker strb r0, [r1] movs r0, 0 _080F1CC8: bl GetBattlerAtPosition ldr r1, _080F1CE0 @ =gBattleAnimTarget strb r0, [r1] _080F1CD0: adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080F1CDC: .4byte gBattleAnimAttacker _080F1CE0: .4byte gBattleAnimTarget thumb_func_end sub_80F1C8C thumb_func_start sub_80F1CE4 sub_80F1CE4: @ 80F1CE4 push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r2, _080F1CF8 @ =gBattleCommunication ldrb r0, [r2, 0x5] cmp r0, 0x2 bls _080F1D00 ldr r1, _080F1CFC @ =gBattleAnimArgs movs r0, 0 b _080F1D04 .align 2, 0 _080F1CF8: .4byte gBattleCommunication _080F1CFC: .4byte gBattleAnimArgs _080F1D00: ldr r1, _080F1D10 @ =gBattleAnimArgs ldrb r0, [r2, 0x5] _080F1D04: strh r0, [r1, 0xE] adds r0, r3, 0 bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080F1D10: .4byte gBattleAnimArgs thumb_func_end sub_80F1CE4 thumb_func_start sub_80F1D14 sub_80F1D14: @ 80F1D14 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080F1D2C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrh r1, [r0] cmp r1, 0x53 bne _080F1D34 ldr r1, _080F1D30 @ =gBattleAnimArgs movs r0, 0x1 b _080F1D6C .align 2, 0 _080F1D2C: .4byte gBattleSpritesDataPtr _080F1D30: .4byte gBattleAnimArgs _080F1D34: cmp r1, 0xFA bne _080F1D44 ldr r1, _080F1D40 @ =gBattleAnimArgs movs r0, 0x2 b _080F1D6C .align 2, 0 _080F1D40: .4byte gBattleAnimArgs _080F1D44: cmp r1, 0x80 bne _080F1D54 ldr r1, _080F1D50 @ =gBattleAnimArgs movs r0, 0x3 b _080F1D6C .align 2, 0 _080F1D50: .4byte gBattleAnimArgs _080F1D54: movs r0, 0xA4 lsls r0, 1 cmp r1, r0 bne _080F1D68 ldr r1, _080F1D64 @ =gBattleAnimArgs movs r0, 0x4 b _080F1D6C .align 2, 0 _080F1D64: .4byte gBattleAnimArgs _080F1D68: ldr r1, _080F1D78 @ =gBattleAnimArgs movs r0, 0 _080F1D6C: strh r0, [r1] adds r0, r2, 0 bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080F1D78: .4byte gBattleAnimArgs thumb_func_end sub_80F1D14 thumb_func_start sub_80F1D7C sub_80F1D7C: @ 80F1D7C push {lr} lsls r0, 24 lsrs r0, 24 ldr r3, _080F1DA0 @ =gBattleAnimAttacker ldr r1, _080F1DA4 @ =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, [r2, 0x8] ldrh r1, [r1] strb r1, [r3] ldr r3, _080F1DA8 @ =gBattleAnimTarget ldr r1, [r2, 0x8] ldrh r1, [r1] lsrs r1, 8 strb r1, [r3] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080F1DA0: .4byte gBattleAnimAttacker _080F1DA4: .4byte gBattleSpritesDataPtr _080F1DA8: .4byte gBattleAnimTarget thumb_func_end sub_80F1D7C .align 2, 0 @ Don't pad with nop.