pokefirered/asm/fire.s
2019-05-23 18:33:21 -04:00

2501 lines
42 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80AC90C
sub_80AC90C: @ 80AC90C
push {r4,lr}
adds r4, r0, 0
ldr r0, _080AC940 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r4, 0x2E]
movs r0, 0x3C
strh r0, [r4, 0x30]
movs r0, 0x9
strh r0, [r4, 0x32]
movs r0, 0x1E
strh r0, [r4, 0x34]
movs r0, 0xFE
lsls r0, 8
strh r0, [r4, 0x36]
ldr r1, _080AC944 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, _080AC948 @ =sub_8074AE0
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AC940: .4byte gBattleAnimArgs
_080AC944: .4byte DestroyAnimSprite
_080AC948: .4byte sub_8074AE0
thumb_func_end sub_80AC90C
thumb_func_start sub_80AC94C
sub_80AC94C: @ 80AC94C
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080AC984 @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl sub_8074FF8
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x32]
ldr r0, _080AC988 @ =sub_8074D00
str r0, [r4, 0x1C]
ldr r1, _080AC98C @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080AC984: .4byte gBattleAnimArgs
_080AC988: .4byte sub_8074D00
_080AC98C: .4byte DestroyAnimSprite
thumb_func_end sub_80AC94C
thumb_func_start sub_80AC990
sub_80AC990: @ 80AC990
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _080AC9C4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080AC9CC
ldr r2, _080AC9C8 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r2, 0x8]
negs r0, r0
strh r0, [r4, 0x32]
adds r1, r2, 0
b _080AC9E2
.align 2, 0
_080AC9C4: .4byte gBattleAnimAttacker
_080AC9C8: .4byte gBattleAnimArgs
_080AC9CC:
ldr r1, _080AC9F8 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x32]
_080AC9E2:
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x36]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x34]
ldr r0, _080AC9FC @ =sub_80ACA6C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AC9F8: .4byte gBattleAnimArgs
_080AC9FC: .4byte sub_80ACA6C
thumb_func_end sub_80AC990
thumb_func_start sub_80ACA00
sub_80ACA00: @ 80ACA00
push {r4,lr}
adds r4, r0, 0
ldr r0, _080ACA2C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080ACA34
ldr r2, _080ACA30 @ =gBattleAnimArgs
ldrh r0, [r4, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r2, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r2, 0x8]
strh r0, [r4, 0x32]
adds r1, r2, 0
b _080ACA4C
.align 2, 0
_080ACA2C: .4byte gBattleAnimAttacker
_080ACA30: .4byte gBattleAnimArgs
_080ACA34:
ldr r1, _080ACA64 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x8]
negs r0, r0
strh r0, [r4, 0x32]
_080ACA4C:
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x36]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x34]
ldr r0, _080ACA68 @ =sub_80ACA6C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ACA64: .4byte gBattleAnimArgs
_080ACA68: .4byte sub_80ACA6C
thumb_func_end sub_80ACA00
thumb_func_start sub_80ACA6C
sub_80ACA6C: @ 80ACA6C
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
movs r3, 0x36
ldrsh r1, [r2, r3]
cmp r0, r1
bge _080ACA92
ldrh r0, [r2, 0x32]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x34]
ldrh r3, [r2, 0x26]
adds r0, r3
strh r0, [r2, 0x26]
_080ACA92:
movs r0, 0x2E
ldrsh r1, [r2, r0]
movs r3, 0x30
ldrsh r0, [r2, r3]
cmp r1, r0
bne _080ACAA4
adds r0, r2, 0
bl move_anim_8074EE0
_080ACAA4:
pop {r0}
bx r0
thumb_func_end sub_80ACA6C
thumb_func_start sub_80ACAA8
sub_80ACAA8: @ 80ACAA8
push {r4,lr}
adds r4, r0, 0
bl sub_8074FCC
ldr r0, _080ACACC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080ACAD4
ldr r0, _080ACAD0 @ =gBattleAnimArgs
ldrh r1, [r4, 0x20]
ldrh r2, [r0]
subs r1, r2
strh r1, [r4, 0x20]
b _080ACAE6
.align 2, 0
_080ACACC: .4byte gBattleAnimAttacker
_080ACAD0: .4byte gBattleAnimArgs
_080ACAD4:
ldr r0, _080ACB14 @ =gBattleAnimArgs
ldrh r1, [r0]
ldrh r2, [r4, 0x20]
adds r1, r2
strh r1, [r4, 0x20]
adds r2, r4, 0
adds r2, 0x43
movs r1, 0x8
strb r1, [r2]
_080ACAE6:
adds r2, r0, 0
ldrh r0, [r2, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
movs r1, 0
strh r0, [r4, 0x22]
ldrh r0, [r2, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r2, 0x6]
strh r0, [r4, 0x30]
ldrh r0, [r2, 0x8]
strh r0, [r4, 0x32]
ldrh r0, [r2, 0xA]
strh r0, [r4, 0x34]
ldrh r0, [r2, 0xC]
strh r0, [r4, 0x36]
strh r1, [r4, 0x38]
ldr r0, _080ACB18 @ =sub_80ACB1C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ACB14: .4byte gBattleAnimArgs
_080ACB18: .4byte sub_80ACB1C
thumb_func_end sub_80ACAA8
thumb_func_start sub_80ACB1C
sub_80ACB1C: @ 80ACB1C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080ACBA4
movs r2, 0x38
ldrsh r1, [r4, r2]
ldr r0, _080ACB88 @ =0x00002710
cmp r1, r0
ble _080ACB3A
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1
strb r0, [r1]
_080ACB3A:
movs r1, 0x2E
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 24
ldrh r2, [r4, 0x30]
adds r1, r2
lsls r1, 16
asrs r1, 16
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 24
ldrh r2, [r4, 0x30]
adds r1, r2
lsls r1, 16
asrs r1, 16
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x2E]
adds r1, r0, r2
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x36]
ldrh r2, [r4, 0x38]
adds r0, r2
strh r0, [r4, 0x38]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _080ACB90
ldr r2, _080ACB8C @ =0xffffff00
b _080ACB98
.align 2, 0
_080ACB88: .4byte 0x00002710
_080ACB8C: .4byte 0xffffff00
_080ACB90:
cmp r0, 0
bge _080ACB9C
movs r2, 0x80
lsls r2, 1
_080ACB98:
adds r0, r1, r2
strh r0, [r4, 0x2E]
_080ACB9C:
ldrh r0, [r4, 0x34]
subs r0, 0x1
strh r0, [r4, 0x34]
b _080ACBAA
_080ACBA4:
adds r0, r4, 0
bl move_anim_8074EE0
_080ACBAA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ACB1C
thumb_func_start sub_80ACBB0
sub_80ACBB0: @ 80ACBB0
push {lr}
movs r1, 0
strh r1, [r0, 0x20]
strh r1, [r0, 0x22]
movs r1, 0x3C
strh r1, [r0, 0x2E]
movs r1, 0x8C
strh r1, [r0, 0x32]
movs r1, 0x50
strh r1, [r0, 0x36]
ldr r1, _080ACBD4 @ =sub_8075590
str r1, [r0, 0x1C]
ldr r1, _080ACBD8 @ =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_080ACBD4: .4byte sub_8075590
_080ACBD8: .4byte DestroyAnimSprite
thumb_func_end sub_80ACBB0
thumb_func_start sub_80ACBDC
sub_80ACBDC: @ 80ACBDC
push {r4-r6,lr}
adds r6, r0, 0
ldr r5, _080ACC34 @ =gBattleAnimAttacker
ldrb r0, [r5]
bl GetBattlerSide
adds r4, r0, 0
ldr r0, _080ACC38 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _080ACC22
movs r0, 0x2
bl GetBattlerAtPosition
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
cmp r1, r0
beq _080ACC1A
movs r0, 0x3
bl GetBattlerAtPosition
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
cmp r1, r0
bne _080ACC22
_080ACC1A:
ldr r1, _080ACC3C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080ACC22:
ldr r1, _080ACC40 @ =sub_8075F0C
str r1, [r6, 0x1C]
adds r0, r6, 0
bl _call_via_r1
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080ACC34: .4byte gBattleAnimAttacker
_080ACC38: .4byte gBattleAnimTarget
_080ACC3C: .4byte gBattleAnimArgs
_080ACC40: .4byte sub_8075F0C
thumb_func_end sub_80ACBDC
thumb_func_start sub_80ACC44
sub_80ACC44: @ 80ACC44
ldr r2, _080ACC58 @ =gBattleAnimArgs
ldrh r1, [r2]
negs r1, r1
strh r1, [r2]
ldrh r1, [r2, 0x4]
negs r1, r1
strh r1, [r2, 0x4]
ldr r1, _080ACC5C @ =sub_8075F0C
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_080ACC58: .4byte gBattleAnimArgs
_080ACC5C: .4byte sub_8075F0C
thumb_func_end sub_80ACC44
thumb_func_start sub_80ACC60
sub_80ACC60: @ 80ACC60
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080ACC80 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
movs r1, 0
strh r0, [r4, 0x3C]
strh r1, [r4, 0x2E]
ldr r0, _080ACC84 @ =sub_80ACC88
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ACC80: .4byte gBattleAnimArgs
_080ACC84: .4byte sub_80ACC88
thumb_func_end sub_80ACC60
thumb_func_start sub_80ACC88
sub_80ACC88: @ 80ACC88
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80ACD7C
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x12
bne _080ACCD2
movs r0, 0x19
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
ldr r4, _080ACCD8 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x22]
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
bl obj_translate_based_on_private_1_2_3_4
ldr r0, _080ACCDC @ =sub_80ACCE0
str r0, [r5, 0x1C]
_080ACCD2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ACCD8: .4byte gBattleAnimTarget
_080ACCDC: .4byte sub_80ACCE0
thumb_func_end sub_80ACC88
thumb_func_start sub_80ACCE0
sub_80ACCE0: @ 80ACCE0
push {r4-r6,lr}
adds r6, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _080ACD28
movs r4, 0
strh r4, [r6, 0x2E]
ldr r5, _080ACD20 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
strh r4, [r6, 0x26]
strh r4, [r6, 0x24]
ldr r1, _080ACD24 @ =sub_80ACD58
str r1, [r6, 0x1C]
adds r0, r6, 0
bl _call_via_r1
b _080ACD52
.align 2, 0
_080ACD20: .4byte gBattleAnimTarget
_080ACD24: .4byte sub_80ACD58
_080ACD28:
movs r1, 0x3C
ldrsh r0, [r6, r1]
movs r1, 0x1C
bl Sin
ldrh r1, [r6, 0x24]
adds r0, r1
strh r0, [r6, 0x24]
movs r1, 0x3C
ldrsh r0, [r6, r1]
movs r1, 0x1C
bl Cos
ldrh r1, [r6, 0x26]
adds r0, r1
strh r0, [r6, 0x26]
ldrh r0, [r6, 0x3C]
adds r0, 0x14
movs r1, 0xFF
ands r0, r1
strh r0, [r6, 0x3C]
_080ACD52:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80ACCE0
thumb_func_start sub_80ACD58
sub_80ACD58: @ 80ACD58
push {r4,lr}
adds r4, r0, 0
bl sub_80ACD7C
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _080ACD74
adds r0, r4, 0
bl DestroyAnimSprite
_080ACD74:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ACD58
thumb_func_start sub_80ACD7C
sub_80ACD7C: @ 80ACD7C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x3C
ldrsh r0, [r4, r1]
movs r1, 0x1C
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x3C
ldrsh r0, [r4, r1]
movs r1, 0x1C
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x3C]
adds r0, 0x14
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x3C]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ACD7C
thumb_func_start sub_80ACDA8
sub_80ACDA8: @ 80ACDA8
push {r4,lr}
adds r4, r0, 0
ldr r1, _080ACDDC @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x32]
ldr r1, _080ACDE0 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080ACDE4 @ =sub_8074CD0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ACDDC: .4byte gBattleAnimArgs
_080ACDE0: .4byte DestroyAnimSprite
_080ACDE4: .4byte sub_8074CD0
thumb_func_end sub_80ACDA8
thumb_func_start sub_80ACDE8
sub_80ACDE8: @ 80ACDE8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r1, _080ACE1C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x6]
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, _080ACE20 @ =sub_8074C44
str r0, [r4, 0x1C]
ldr r1, _080ACE24 @ =sub_80ACE28
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ACE1C: .4byte gBattleAnimArgs
_080ACE20: .4byte sub_8074C44
_080ACE24: .4byte sub_80ACE28
thumb_func_end sub_80ACDE8
thumb_func_start sub_80ACE28
sub_80ACE28: @ 80ACE28
push {lr}
adds r3, r0, 0
adds r3, 0x3E
ldrb r2, [r3]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r3]
ldrh r1, [r0, 0x30]
movs r2, 0
strh r1, [r0, 0x2E]
strh r2, [r0, 0x30]
ldr r1, _080ACE4C @ =sub_80ACE50
str r1, [r0, 0x1C]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080ACE4C: .4byte sub_80ACE50
thumb_func_end sub_80ACE28
thumb_func_start sub_80ACE50
sub_80ACE50: @ 80ACE50
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x32]
lsls r1, 16
asrs r1, 24
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x32]
lsls r1, 16
asrs r1, 24
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r0, 0xA
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
adds r0, 0xD0
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080ACE9C
adds r0, r4, 0
bl DestroyAnimSprite
_080ACE9C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80ACE50
thumb_func_start sub_80ACEA4
sub_80ACEA4: @ 80ACEA4
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080ACF04 @ =gTasks
adds r4, r0
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x26]
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
strh r5, [r4, 0xC]
strh r5, [r4, 0xE]
ldr r2, _080ACF08 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x10]
ldr r0, _080ACF0C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl sub_80758E0
ldr r0, _080ACF10 @ =sub_80ACF14
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ACF04: .4byte gTasks
_080ACF08: .4byte gSprites
_080ACF0C: .4byte gBattleAnimAttacker
_080ACF10: .4byte sub_80ACF14
thumb_func_end sub_80ACEA4
thumb_func_start sub_80ACF14
sub_80ACF14: @ 80ACF14
push {r4,r5,lr}
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080ACF3C @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x6
bls _080ACF30
b _080AD1EE
_080ACF30:
lsls r0, 2
ldr r1, _080ACF40 @ =_080ACF44
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ACF3C: .4byte gTasks
_080ACF40: .4byte _080ACF44
.align 2, 0
_080ACF44:
.4byte _080ACF60
.4byte _080ACF86
.4byte _080AD038
.4byte _080AD098
.4byte _080AD0B6
.4byte _080AD18C
.4byte _080AD1E0
_080ACF60:
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
movs r3, 0x80
lsls r3, 1
movs r0, 0xE0
str r0, [sp]
movs r0, 0x80
lsls r0, 2
str r0, [sp, 0x4]
movs r0, 0x20
str r0, [sp, 0x8]
adds r0, r4, 0
adds r2, r3, 0
bl sub_80765D4
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080ACF86:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080ACFCE
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080ACFBC
ldr r2, _080ACFB8 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x3
b _080ACFCC
.align 2, 0
_080ACFB8: .4byte gSprites
_080ACFBC:
ldr r2, _080AD030 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, _080AD034 @ =0x0000fffd
_080ACFCC:
strh r1, [r0, 0x24]
_080ACFCE:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080ACFFC
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _080ACFFC
movs r0, 0
strh r0, [r4, 0xE]
ldr r2, _080AD030 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x22]
adds r1, 0x1
strh r1, [r0, 0x22]
_080ACFFC:
adds r0, r4, 0
bl sub_8076640
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
beq _080AD00C
b _080AD1EE
_080AD00C:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_8076440
ldr r2, _080AD030 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
strh r5, [r4, 0xA]
strh r5, [r4, 0xC]
strh r5, [r4, 0xE]
b _080AD1D4
.align 2, 0
_080AD030: .4byte gSprites
_080AD034: .4byte 0x0000fffd
_080AD038:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bgt _080AD048
b _080AD1EE
_080AD048:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080AD072
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
movs r3, 0x80
lsls r3, 2
movs r0, 0xC0
lsls r0, 1
str r0, [sp]
movs r0, 0xF0
str r0, [sp, 0x4]
movs r0, 0x6
str r0, [sp, 0x8]
adds r0, r4, 0
movs r2, 0xE0
bl sub_80765D4
b _080AD092
_080AD072:
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
movs r3, 0x80
lsls r3, 2
movs r0, 0xC0
lsls r0, 1
str r0, [sp]
movs r0, 0xC0
str r0, [sp, 0x4]
movs r0, 0x6
str r0, [sp, 0x8]
adds r0, r4, 0
movs r2, 0xE0
bl sub_80765D4
_080AD092:
movs r0, 0
strh r0, [r4, 0xA]
b _080AD1D4
_080AD098:
adds r0, r4, 0
bl sub_8076640
lsls r0, 24
cmp r0, 0
beq _080AD0A6
b _080AD1EE
_080AD0A6:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
adds r1, r5, 0
movs r2, 0x6
bl sub_80AD1F8
b _080AD1D4
_080AD0B6:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080AD104
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080AD0F0
ldr r2, _080AD0EC @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
adds r1, 0x3
b _080AD102
.align 2, 0
_080AD0EC: .4byte gSprites
_080AD0F0:
ldr r2, _080AD13C @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
subs r1, 0x3
_080AD102:
strh r1, [r0, 0x26]
_080AD104:
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x18
ble _080AD1EE
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080AD140
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
movs r2, 0xC0
lsls r2, 1
movs r0, 0x80
lsls r0, 1
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x8
str r0, [sp, 0x8]
adds r0, r4, 0
movs r3, 0xF0
bl sub_80765D4
b _080AD15E
.align 2, 0
_080AD13C: .4byte gSprites
_080AD140:
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
movs r2, 0xC0
lsls r2, 1
movs r0, 0x80
lsls r0, 1
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x8
str r0, [sp, 0x8]
adds r0, r4, 0
movs r3, 0xC0
bl sub_80765D4
_080AD15E:
ldrh r1, [r4, 0xC]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080AD17C
ldr r2, _080AD188 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
subs r1, 0x3
strh r1, [r0, 0x26]
_080AD17C:
movs r0, 0
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
strh r0, [r4, 0xE]
b _080AD1D4
.align 2, 0
_080AD188: .4byte gSprites
_080AD18C:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080AD1A8
ldr r2, _080AD1DC @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x22]
subs r1, 0x1
strh r1, [r0, 0x22]
_080AD1A8:
adds r0, r4, 0
bl sub_8076640
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _080AD1EE
ldr r2, _080AD1DC @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x10]
strh r1, [r0, 0x22]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_8075980
strh r5, [r4, 0xC]
_080AD1D4:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080AD1EE
.align 2, 0
_080AD1DC: .4byte gSprites
_080AD1E0:
movs r1, 0x14
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080AD1EE
adds r0, r5, 0
bl DestroyAnimVisualTask
_080AD1EE:
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80ACF14
thumb_func_start sub_80AD1F8
sub_80AD1F8: @ 80AD1F8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r1, 24
lsrs r7, r1, 24
lsls r2, 24
lsrs r2, 24
mov r8, r2
adds r0, r4, 0
bl sub_80AD374
lsls r0, 16
lsrs r0, 16
mov r9, r0
ldr r1, _080AD248 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x20]
ldr r0, _080AD24C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080AD250
adds r0, r4, 0
subs r0, 0xC
lsls r0, 16
lsrs r4, r0, 16
movs r0, 0x1
b _080AD25A
.align 2, 0
_080AD248: .4byte gSprites
_080AD24C: .4byte gBattleAnimAttacker
_080AD250:
adds r0, r4, 0
adds r0, 0x10
lsls r0, 16
lsrs r4, r0, 16
movs r0, 0xFF
_080AD25A:
movs r6, 0
movs r5, 0
lsls r4, 16
str r4, [sp, 0x8]
mov r1, r9
lsls r1, 16
str r1, [sp, 0x4]
ldr r2, _080AD314 @ =gUnknown_83E5E44
mov r9, r2
lsls r0, 24
asrs r0, 24
str r0, [sp]
mov r3, r8
lsls r3, 1
mov r10, r3
_080AD278:
ldr r0, _080AD318 @ =gUnknown_83E5E2C
ldr r2, [sp, 0x8]
asrs r1, r2, 16
ldr r3, [sp, 0x4]
asrs r2, r3, 16
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
beq _080AD2FA
ldr r1, _080AD31C @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r4, r0, r1
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
lsls r0, r5, 2
adds r0, 0x40
adds r1, r0
ldr r3, _080AD320 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r3, _080AD324 @ =0xfffffc00
adds r0, r3, 0
ands r2, r0
orrs r2, r1
strh r2, [r4, 0x4]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x4
bls _080AD2C2
movs r5, 0
_080AD2C2:
lsls r2, r6, 2
mov r1, r9
adds r0, r2, r1
ldrh r0, [r0]
ldr r3, [sp]
adds r1, r0, 0
muls r1, r3
lsls r1, 16
asrs r1, 16
ldr r0, _080AD328 @ =gUnknown_83E5E46
adds r2, r0
movs r3, 0
ldrsh r2, [r2, r3]
adds r0, r4, 0
bl sub_80AD3C8
strh r7, [r4, 0x3A]
mov r0, r8
strh r0, [r4, 0x3C]
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
add r0, r10
ldr r1, _080AD32C @ =gTasks+0x8
adds r0, r1
ldrh r1, [r0]
adds r1, 0x1
strh r1, [r0]
_080AD2FA:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x6
bls _080AD278
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080AD314: .4byte gUnknown_83E5E44
_080AD318: .4byte gUnknown_83E5E2C
_080AD31C: .4byte gSprites
_080AD320: .4byte 0x000003ff
_080AD324: .4byte 0xfffffc00
_080AD328: .4byte gUnknown_83E5E46
_080AD32C: .4byte gTasks+0x8
thumb_func_end sub_80AD1F8
thumb_func_start sub_80AD330
sub_80AD330: @ 80AD330
push {r4,lr}
adds r4, r0, 0
bl sub_80AD3E4
adds r0, r4, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080AD36A
ldr r3, _080AD370 @ =gTasks
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x3A
ldrsh r2, [r4, r0]
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r1, r0
adds r3, 0x8
adds r1, r3
ldrh r0, [r1]
subs r0, 0x1
strh r0, [r1]
adds r0, r4, 0
bl DestroySprite
_080AD36A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AD370: .4byte gTasks
thumb_func_end sub_80AD330
thumb_func_start sub_80AD374
sub_80AD374: @ 80AD374
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080AD3AC @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrh r2, [r1, 0x26]
ldrh r0, [r1, 0x22]
adds r2, r0
adds r1, 0x29
movs r0, 0
ldrsb r0, [r1, r0]
adds r0, r2
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _080AD3B0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080AD3B4
lsls r0, r4, 16
movs r1, 0x94
lsls r1, 15
b _080AD3BA
.align 2, 0
_080AD3AC: .4byte gSprites
_080AD3B0: .4byte gBattleAnimAttacker
_080AD3B4:
lsls r0, r4, 16
movs r1, 0xB0
lsls r1, 14
_080AD3BA:
adds r0, r1
lsrs r4, r0, 16
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80AD374
thumb_func_start sub_80AD3C8
sub_80AD3C8: @ 80AD3C8
movs r3, 0
strh r3, [r0, 0x2E]
strh r3, [r0, 0x30]
ldrh r3, [r0, 0x20]
lsls r3, 3
strh r3, [r0, 0x32]
ldrh r3, [r0, 0x22]
lsls r3, 3
strh r3, [r0, 0x34]
lsls r1, 3
strh r1, [r0, 0x36]
lsls r2, 3
strh r2, [r0, 0x38]
bx lr
thumb_func_end sub_80AD3C8
thumb_func_start sub_80AD3E4
sub_80AD3E4: @ 80AD3E4
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080AD40E
movs r0, 0
strh r0, [r2, 0x2E]
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x30]
adds r1, r0, 0
muls r1, r0
adds r0, r1, 0
ldrh r3, [r2, 0x34]
adds r0, r3
strh r0, [r2, 0x34]
_080AD40E:
ldrh r0, [r2, 0x36]
ldrh r1, [r2, 0x32]
adds r0, r1
strh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 19
strh r0, [r2, 0x20]
ldrh r1, [r2, 0x38]
ldrh r3, [r2, 0x34]
adds r1, r3
strh r1, [r2, 0x34]
lsls r1, 16
asrs r3, r1, 19
strh r3, [r2, 0x22]
adds r0, 0x8
lsls r0, 16
movs r1, 0x80
lsls r1, 17
cmp r0, r1
bhi _080AD444
adds r1, r3, 0
movs r0, 0x8
negs r0, r0
cmp r1, r0
blt _080AD444
cmp r1, 0x78
ble _080AD450
_080AD444:
adds r0, r2, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_080AD450:
pop {r0}
bx r0
thumb_func_end sub_80AD3E4
thumb_func_start sub_80AD454
sub_80AD454: @ 80AD454
push {r4,r5,lr}
ldr r3, _080AD498 @ =gBattleAnimArgs
ldrh r1, [r3]
movs r2, 0
strh r1, [r0, 0x20]
ldrh r1, [r3, 0x2]
strh r1, [r0, 0x22]
strh r2, [r0, 0x2E]
strh r2, [r0, 0x30]
strh r2, [r0, 0x32]
ldrh r1, [r3, 0x4]
strh r1, [r0, 0x3A]
ldrh r1, [r3, 0x6]
strh r1, [r0, 0x3C]
ldrh r4, [r0, 0x4]
lsls r2, r4, 22
lsrs r2, 22
movs r5, 0x8
ldrsh r1, [r3, r5]
lsls r1, 4
adds r2, r1
ldr r3, _080AD49C @ =0x000003ff
adds r1, r3, 0
ands r2, r1
ldr r1, _080AD4A0 @ =0xfffffc00
ands r1, r4
orrs r1, r2
strh r1, [r0, 0x4]
ldr r1, _080AD4A4 @ =sub_80AD4A8
str r1, [r0, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080AD498: .4byte gBattleAnimArgs
_080AD49C: .4byte 0x000003ff
_080AD4A0: .4byte 0xfffffc00
_080AD4A4: .4byte sub_80AD4A8
thumb_func_end sub_80AD454
thumb_func_start sub_80AD4A8
sub_80AD4A8: @ 80AD4A8
push {r4,lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0x1
beq _080AD4DA
cmp r0, 0x1
bgt _080AD4BE
cmp r0, 0
beq _080AD4C4
b _080AD538
_080AD4BE:
cmp r0, 0x2
beq _080AD4F8
b _080AD538
_080AD4C4:
ldrh r1, [r2, 0x3A]
movs r3, 0x3A
ldrsh r0, [r2, r3]
cmp r0, 0
beq _080AD4D4
subs r0, r1, 0x1
strh r0, [r2, 0x3A]
b _080AD538
_080AD4D4:
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
_080AD4DA:
ldrh r0, [r2, 0x22]
adds r0, 0x8
strh r0, [r2, 0x22]
lsls r0, 16
asrs r0, 16
ldrh r3, [r2, 0x3C]
movs r4, 0x3C
ldrsh r1, [r2, r4]
cmp r0, r1
blt _080AD538
strh r3, [r2, 0x22]
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
b _080AD538
_080AD4F8:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080AD524
movs r0, 0
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x32]
adds r0, 0x1
strh r0, [r2, 0x32]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080AD520
ldr r0, _080AD51C @ =0x0000fffd
b _080AD522
.align 2, 0
_080AD51C: .4byte 0x0000fffd
_080AD520:
movs r0, 0x3
_080AD522:
strh r0, [r2, 0x26]
_080AD524:
ldrh r0, [r2, 0x34]
adds r0, 0x1
strh r0, [r2, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
ble _080AD538
adds r0, r2, 0
bl DestroyAnimSprite
_080AD538:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80AD4A8
thumb_func_start sub_80AD540
sub_80AD540: @ 80AD540
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080AD5B4
cmp r0, 0x1
bgt _080AD556
cmp r0, 0
beq _080AD55C
b _080AD682
_080AD556:
cmp r0, 0x2
beq _080AD612
b _080AD682
_080AD55C:
adds r0, r5, 0
movs r1, 0
bl sub_8075160
ldr r4, _080AD584 @ =gBattleAnimArgs
ldrb r1, [r4, 0x4]
adds r0, r5, 0
bl StartSpriteAnim
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x3C]
ldr r0, _080AD588 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080AD58C
movs r0, 0x4
b _080AD58E
.align 2, 0
_080AD584: .4byte gBattleAnimArgs
_080AD588: .4byte gBattleAnimAttacker
_080AD58C:
ldr r0, _080AD5AC @ =0x0000fffc
_080AD58E:
strh r0, [r5, 0x36]
ldr r0, _080AD5B0 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _080AD60A
.align 2, 0
_080AD5AC: .4byte 0x0000fffc
_080AD5B0: .4byte gBattleAnimTarget
_080AD5B4:
ldrh r0, [r5, 0x30]
adds r0, 0xC0
strh r0, [r5, 0x30]
ldr r0, _080AD5D4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080AD5D8
ldrh r0, [r5, 0x30]
lsls r0, 16
asrs r0, 24
negs r0, r0
b _080AD5DE
.align 2, 0
_080AD5D4: .4byte gBattleAnimAttacker
_080AD5D8:
ldrh r0, [r5, 0x30]
lsls r0, 16
asrs r0, 24
_080AD5DE:
strh r0, [r5, 0x26]
movs r2, 0x32
ldrsh r0, [r5, r2]
movs r2, 0x36
ldrsh r1, [r5, r2]
bl Sin
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x32]
adds r0, 0x4
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080AD682
movs r0, 0
strh r0, [r5, 0x34]
_080AD60A:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080AD682
_080AD612:
movs r1, 0x32
ldrsh r0, [r5, r1]
movs r2, 0x36
ldrsh r1, [r5, r2]
bl Sin
adds r2, r0, 0
movs r3, 0
strh r2, [r5, 0x24]
ldrh r0, [r5, 0x32]
adds r0, 0x4
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _080AD682
ldrh r0, [r5, 0x20]
adds r1, r2, r0
strh r1, [r5, 0x20]
ldrh r0, [r5, 0x26]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
strh r3, [r5, 0x26]
strh r3, [r5, 0x24]
movs r0, 0x80
lsls r0, 1
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
ldr r4, _080AD688 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x22]
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
bl sub_8075678
ldr r0, _080AD68C @ =sub_80AD690
str r0, [r5, 0x1C]
_080AD682:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080AD688: .4byte gBattleAnimTarget
_080AD68C: .4byte sub_80AD690
thumb_func_end sub_80AD540
thumb_func_start sub_80AD690
sub_80AD690: @ 80AD690
push {r4,lr}
adds r4, r0, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
bne _080AD6E8
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0x10
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
ldrh r2, [r4, 0x38]
adds r0, r2, 0x4
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x38]
lsls r2, 16
asrs r2, 16
cmp r2, 0
beq _080AD6C6
cmp r2, 0xC4
ble _080AD6EE
_080AD6C6:
lsls r0, 16
cmp r0, 0
ble _080AD6EE
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080AD6EE
ldr r0, _080AD6E4 @ =gUnknown_2037F24
movs r1, 0
ldrsb r1, [r0, r1]
movs r0, 0x89
bl PlaySE12WithPanning
b _080AD6EE
.align 2, 0
_080AD6E4: .4byte gUnknown_2037F24
_080AD6E8:
adds r0, r4, 0
bl DestroyAnimSprite
_080AD6EE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80AD690
thumb_func_start sub_80AD6F4
sub_80AD6F4: @ 80AD6F4
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080AD70C
ldr r0, _080AD778 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r4, 0x30]
adds r0, r1, 0x1
strh r0, [r4, 0x2E]
_080AD70C:
movs r0, 0xC0
lsls r0, 1
adds r1, r0, 0
ldrh r2, [r4, 0x34]
adds r1, r2
strh r1, [r4, 0x34]
ldrh r0, [r4, 0x36]
adds r0, 0xA0
strh r0, [r4, 0x36]
movs r2, 0x30
ldrsh r0, [r4, r2]
lsls r1, 16
asrs r1, 24
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
ldrh r1, [r4, 0x36]
lsls r1, 16
asrs r1, 24
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r0, 0x7
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080AD7A8
ldrh r0, [r4, 0x30]
subs r0, 0x40
lsls r0, 16
lsrs r0, 16
cmp r0, 0x83
bls _080AD780
ldr r0, _080AD77C @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
b _080AD7C4
.align 2, 0
_080AD778: .4byte gBattleAnimArgs
_080AD77C: .4byte gBattleAnimTarget
_080AD780:
ldr r0, _080AD7A4 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_8076884
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
movs r1, 0x3
ands r0, r1
lsls r0, 2
ldrb r2, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x5]
b _080AD7C4
.align 2, 0
_080AD7A4: .4byte gBattleAnimTarget
_080AD7A8:
ldrh r0, [r4, 0x30]
subs r0, 0x40
lsls r0, 16
lsrs r0, 16
cmp r0, 0x83
bls _080AD7BC
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1D
b _080AD7C2
_080AD7BC:
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1F
_080AD7C2:
strb r0, [r1]
_080AD7C4:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
ble _080AD7EC
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_080AD7EC:
movs r2, 0x32
ldrsh r0, [r4, r2]
cmp r0, 0x1E
bne _080AD7FA
adds r0, r4, 0
bl DestroyAnimSprite
_080AD7FA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80AD6F4
thumb_func_start sub_80AD800
sub_80AD800: @ 80AD800
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080AD860 @ =gTasks
adds r4, r1, r0
ldr r0, _080AD864 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
adds r1, r2, 0
cmp r0, 0
bne _080AD826
movs r1, 0x1
_080AD826:
strh r1, [r4, 0x20]
ldr r0, _080AD868 @ =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
bl sub_8072DF0
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
strh r0, [r4, 0x22]
movs r0, 0x1
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
movs r0, 0x3
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
ldr r0, _080AD86C @ =sub_80AD870
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AD860: .4byte gTasks
_080AD864: .4byte gBattleAnimAttacker
_080AD868: .4byte gBattleAnimTarget
_080AD86C: .4byte sub_80AD870
thumb_func_end sub_80AD800
thumb_func_start sub_80AD870
sub_80AD870: @ 80AD870
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080AD894 @ =gTasks
adds r2, r0, r1
movs r0, 0x8
ldrsh r3, [r2, r0]
cmp r3, 0x1
beq _080AD938
cmp r3, 0x1
bgt _080AD898
cmp r3, 0
beq _080AD8A6
b _080ADA98
.align 2, 0
_080AD894: .4byte gTasks
_080AD898:
cmp r3, 0x2
bne _080AD89E
b _080AD9C0
_080AD89E:
cmp r3, 0x3
bne _080AD8A4
b _080ADA54
_080AD8A4:
b _080ADA98
_080AD8A6:
movs r1, 0x20
ldrsh r0, [r2, r1]
lsls r0, 1
ldrh r5, [r2, 0x1C]
adds r0, r5
strh r0, [r2, 0x1C]
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080AD8D8
strh r3, [r2, 0xA]
ldrh r0, [r2, 0xC]
adds r0, 0x1
strh r0, [r2, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080AD8D4
movs r0, 0x2
b _080AD8D6
_080AD8D4:
ldr r0, _080AD930 @ =0x0000fffe
_080AD8D6:
strh r0, [r2, 0x1E]
_080AD8D8:
movs r1, 0
strh r1, [r2, 0xE]
movs r7, 0x22
ldrsh r0, [r2, r7]
cmp r1, r0
bge _080AD91A
ldr r4, _080AD934 @ =gSprites
adds r3, r2, 0
adds r3, 0x8
_080AD8EA:
movs r1, 0xE
ldrsh r0, [r2, r1]
adds r0, 0xE
lsls r0, 1
adds r0, r3, r0
movs r5, 0
ldrsh r0, [r0, r5]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r2, 0x1E]
ldrh r7, [r2, 0x1C]
adds r0, r7
strh r0, [r1, 0x24]
ldrh r0, [r2, 0xE]
adds r0, 0x1
strh r0, [r2, 0xE]
lsls r0, 16
asrs r0, 16
movs r5, 0x22
ldrsh r1, [r2, r5]
cmp r0, r1
blt _080AD8EA
_080AD91A:
ldrh r0, [r2, 0x1A]
adds r0, 0x1
strh r0, [r2, 0x1A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
beq _080AD92A
b _080ADA98
_080AD92A:
movs r0, 0
strh r0, [r2, 0x1A]
b _080ADA44
.align 2, 0
_080AD930: .4byte 0x0000fffe
_080AD934: .4byte gSprites
_080AD938:
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _080AD960
movs r0, 0
strh r0, [r2, 0xA]
ldrh r0, [r2, 0xC]
adds r0, 0x1
strh r0, [r2, 0xC]
ands r0, r3
lsls r0, 16
cmp r0, 0
beq _080AD95C
movs r0, 0x2
b _080AD95E
_080AD95C:
ldr r0, _080AD9B8 @ =0x0000fffe
_080AD95E:
strh r0, [r2, 0x1E]
_080AD960:
movs r1, 0
strh r1, [r2, 0xE]
movs r7, 0x22
ldrsh r0, [r2, r7]
cmp r1, r0
bge _080AD9A2
ldr r4, _080AD9BC @ =gSprites
adds r3, r2, 0
adds r3, 0x8
_080AD972:
movs r1, 0xE
ldrsh r0, [r2, r1]
adds r0, 0xE
lsls r0, 1
adds r0, r3, r0
movs r5, 0
ldrsh r0, [r0, r5]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r2, 0x1E]
ldrh r7, [r2, 0x1C]
adds r0, r7
strh r0, [r1, 0x24]
ldrh r0, [r2, 0xE]
adds r0, 0x1
strh r0, [r2, 0xE]
lsls r0, 16
asrs r0, 16
movs r5, 0x22
ldrsh r1, [r2, r5]
cmp r0, r1
blt _080AD972
_080AD9A2:
ldrh r0, [r2, 0x1A]
adds r0, 0x1
strh r0, [r2, 0x1A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x60
bne _080ADA98
movs r0, 0
strh r0, [r2, 0x1A]
b _080ADA44
.align 2, 0
_080AD9B8: .4byte 0x0000fffe
_080AD9BC: .4byte gSprites
_080AD9C0:
movs r7, 0x20
ldrsh r1, [r2, r7]
lsls r1, 1
ldrh r0, [r2, 0x1C]
subs r0, r1
strh r0, [r2, 0x1C]
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080AD9F4
movs r0, 0
strh r0, [r2, 0xA]
ldrh r0, [r2, 0xC]
adds r0, 0x1
strh r0, [r2, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080AD9F0
strh r3, [r2, 0x1E]
b _080AD9F4
_080AD9F0:
ldr r0, _080ADA4C @ =0x0000fffe
strh r0, [r2, 0x1E]
_080AD9F4:
movs r1, 0
strh r1, [r2, 0xE]
movs r3, 0x22
ldrsh r0, [r2, r3]
cmp r1, r0
bge _080ADA36
ldr r4, _080ADA50 @ =gSprites
adds r3, r2, 0
adds r3, 0x8
_080ADA06:
movs r5, 0xE
ldrsh r0, [r2, r5]
adds r0, 0xE
lsls r0, 1
adds r0, r3, r0
movs r7, 0
ldrsh r0, [r0, r7]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r2, 0x1E]
ldrh r5, [r2, 0x1C]
adds r0, r5
strh r0, [r1, 0x24]
ldrh r0, [r2, 0xE]
adds r0, 0x1
strh r0, [r2, 0xE]
lsls r0, 16
asrs r0, 16
movs r7, 0x22
ldrsh r1, [r2, r7]
cmp r0, r1
blt _080ADA06
_080ADA36:
ldrh r0, [r2, 0x1A]
adds r0, 0x1
strh r0, [r2, 0x1A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
bne _080ADA98
_080ADA44:
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
b _080ADA98
.align 2, 0
_080ADA4C: .4byte 0x0000fffe
_080ADA50: .4byte gSprites
_080ADA54:
movs r1, 0
strh r1, [r2, 0xE]
movs r3, 0x22
ldrsh r0, [r2, r3]
cmp r1, r0
bge _080ADA92
ldr r6, _080ADAA0 @ =gSprites
adds r3, r2, 0
adds r3, 0x8
movs r5, 0
_080ADA68:
movs r7, 0xE
ldrsh r0, [r2, r7]
adds r0, 0xE
lsls r0, 1
adds r0, r3, r0
movs r7, 0
ldrsh r1, [r0, r7]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r5, [r0, 0x24]
ldrh r0, [r2, 0xE]
adds r0, 0x1
strh r0, [r2, 0xE]
lsls r0, 16
asrs r0, 16
movs r7, 0x22
ldrsh r1, [r2, r7]
cmp r0, r1
blt _080ADA68
_080ADA92:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080ADA98:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080ADAA0: .4byte gSprites
thumb_func_end sub_80AD870
thumb_func_start sub_80ADAA4
sub_80ADAA4: @ 80ADAA4
push {r4,lr}
sub sp, 0x10
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x8]
lsls r0, 4
ldr r1, _080ADAD4 @ =gBattleAnimArgs
ldrb r2, [r1]
ldrh r3, [r1, 0x2]
movs r1, 0x10
bl BlendPalette
adds r0, r4, 0
bl DestroyAnimVisualTask
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080ADAD4: .4byte gBattleAnimArgs
thumb_func_end sub_80ADAA4
thumb_func_start sub_80ADAD8
sub_80ADAD8: @ 80ADAD8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080ADB30 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r2, r0, r1
movs r3, 0x8
ldrsh r0, [r2, r3]
mov r9, r1
ldr r4, _080ADB34 @ =gBattleAnimArgs
mov r8, r4
cmp r0, 0
bne _080ADB0E
ldrh r0, [r4]
strh r0, [r2, 0xA]
ldrh r0, [r4, 0x2]
strh r0, [r2, 0xC]
ldrh r0, [r4, 0x4]
strh r0, [r2, 0xE]
ldrh r0, [r4, 0x6]
strh r0, [r2, 0x10]
_080ADB0E:
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
ldr r1, _080ADB38 @ =gBattlerSpriteIds
ldr r0, _080ADB3C @ =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
movs r5, 0x10
ldrsh r0, [r2, r5]
cmp r0, 0
bne _080ADB44
ldr r4, _080ADB40 @ =gUnknown_83E5EFC
movs r1, 0x8
ldrsh r0, [r2, r1]
b _080ADB4A
.align 2, 0
_080ADB30: .4byte gTasks
_080ADB34: .4byte gBattleAnimArgs
_080ADB38: .4byte gBattlerSpriteIds
_080ADB3C: .4byte gBattleAnimTarget
_080ADB40: .4byte gUnknown_83E5EFC
_080ADB44:
ldr r4, _080ADB90 @ =gUnknown_83E5F0C
movs r3, 0x8
ldrsh r0, [r2, r3]
_080ADB4A:
movs r1, 0xA
bl __modsi3
lsls r0, 16
asrs r0, 16
adds r0, r4
ldrb r5, [r0]
lsls r0, r7, 2
adds r1, r0, r7
lsls r1, 3
add r1, r9
movs r4, 0xE
ldrsh r1, [r1, r4]
mov r12, r0
cmp r1, 0x1
bne _080ADB98
ldr r2, _080ADB94 @ =gSprites
lsls r3, r6, 4
adds r0, r3, r6
lsls r0, 2
adds r0, r2
mov r10, r0
mov r0, r8
movs r4, 0x2
ldrsh r1, [r0, r4]
lsls r0, r5, 24
asrs r0, 24
muls r0, r1
cmp r0, 0
bge _080ADB88
negs r0, r0
_080ADB88:
mov r5, r10
strh r0, [r5, 0x26]
b _080ADBB2
.align 2, 0
_080ADB90: .4byte gUnknown_83E5F0C
_080ADB94: .4byte gSprites
_080ADB98:
ldr r3, _080ADBE8 @ =gSprites
lsls r4, r6, 4
adds r2, r4, r6
lsls r2, 2
adds r2, r3
lsls r0, r5, 24
asrs r0, 24
mov r5, r8
ldrh r1, [r5, 0x2]
muls r0, r1
strh r0, [r2, 0x24]
adds r2, r3, 0
adds r3, r4, 0
_080ADBB2:
mov r1, r12
adds r0, r1, r7
lsls r0, 3
add r0, r9
movs r4, 0x8
ldrsh r1, [r0, r4]
movs r5, 0xA
ldrsh r0, [r0, r5]
cmp r1, r0
bne _080ADBD8
adds r0, r3, r6
lsls r0, 2
adds r0, r2
movs r1, 0
strh r1, [r0, 0x24]
strh r1, [r0, 0x26]
adds r0, r7, 0
bl DestroyAnimVisualTask
_080ADBD8:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080ADBE8: .4byte gSprites
thumb_func_end sub_80ADAD8
.align 2, 0 @ Don't pad with nop.