pokefirered/asm/battle_anim_special.s
2019-08-02 07:28:09 +08:00

6300 lines
107 KiB
ArmAsm

.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 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080EEDBC @ =gUnknown_2022986
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 sub_807543C
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 sub_80753B4
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 gUnknown_2022984
_080EEDBC: .4byte gUnknown_2022986
_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 @ =gUnknown_2022984
strh r4, [r0]
ldr r0, _080EEFB8 @ =gUnknown_2022986
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 gUnknown_2022984
_080EEFB8: .4byte gUnknown_2022986
_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 sub_8076440
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 sub_8075068
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 AnimateBallThrow
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 sub_8075068
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 AnimateBallThrow
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 sub_8075068
adds r0, r4, 0
bl sub_80750C8
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 sub_80750C8
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 sub_80768B0
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 sub_8075160
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 sub_8075068
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 AnimateBallThrow
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.