pokeemerald/asm/flying.s
2019-02-19 16:36:42 -06:00

1699 lines
25 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_810E520
sub_810E520: @ 810E520
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
movs r6, 0
adds r4, r5, 0
adds r4, 0x2E
ldrb r2, [r4]
movs r7, 0x1
movs r0, 0x1
mov r9, r0
ands r0, r2
cmp r0, 0
beq _0810E55A
ldrb r0, [r4, 0x1]
adds r1, r0, 0
adds r1, 0xFF
strb r1, [r4, 0x1]
lsls r0, 24
cmp r0, 0
beq _0810E54E
b _0810EA36
_0810E54E:
movs r0, 0x2
negs r0, r0
ands r0, r2
strb r0, [r4]
strb r6, [r4, 0x1]
b _0810EA36
_0810E55A:
ldrh r0, [r4, 0x2]
lsrs r1, r0, 6
mov r12, r0
cmp r1, 0x1
bne _0810E566
b _0810E68A
_0810E566:
cmp r1, 0x1
bgt _0810E570
cmp r1, 0
beq _0810E57E
b _0810E97C
_0810E570:
cmp r1, 0x2
bne _0810E576
b _0810E77E
_0810E576:
cmp r1, 0x3
bne _0810E57C
b _0810E872
_0810E57C:
b _0810E97C
_0810E57E:
lsls r1, r2, 24
lsrs r0, r1, 28
cmp r0, 0x1
bne _0810E592
movs r0, 0x8
orrs r0, r2
orrs r0, r7
strb r0, [r4]
strb r6, [r4, 0x1]
b _0810E680
_0810E592:
lsrs r0, r1, 28
cmp r0, 0x3
bne _0810E5B4
lsls r0, r2, 30
lsrs r0, 31
movs r1, 0x1
eors r0, r1
ands r0, r7
lsls r0, 1
movs r1, 0x3
negs r1, r1
ands r1, r2
orrs r1, r0
orrs r1, r7
strb r1, [r4]
strb r6, [r4, 0x1]
b _0810E680
_0810E5B4:
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0810E680
adds r3, r5, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r1, r2, 31
lsrs r1, 31
movs r6, 0x1
eors r1, r6
ands r1, r7
movs r0, 0x2
negs r0, r0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r5, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
movs r1, 0x11
negs r1, r1
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0810E672
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E642
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E628
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E660
_0810E628:
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E660
_0810E642:
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E656
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0xC
b _0810E65E
_0810E656:
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0xC
_0810E65E:
strb r0, [r1]
_0810E660:
ldrb r2, [r4, 0xE]
lsls r0, r2, 31
lsrs r0, 31
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, 0xE]
_0810E672:
ldrb r1, [r4]
movs r0, 0x9
negs r0, r0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, 0x2]
mov r12, r1
_0810E680:
ldrb r1, [r4]
movs r0, 0xF
ands r0, r1
strb r0, [r4]
b _0810E97C
_0810E68A:
lsls r1, r2, 24
lsrs r0, r1, 28
cmp r0, 0
bne _0810E698
movs r0, 0x8
orrs r0, r2
b _0810E6A0
_0810E698:
lsrs r0, r1, 28
cmp r0, 0x2
bne _0810E6A8
adds r0, r2, 0
_0810E6A0:
orrs r0, r7
strb r0, [r4]
strb r6, [r4, 0x1]
b _0810E774
_0810E6A8:
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0810E774
adds r3, r5, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r1, r2, 31
lsrs r1, 31
movs r6, 0x1
eors r1, r6
ands r1, r7
movs r0, 0x2
negs r0, r0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r5, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
movs r1, 0x11
negs r1, r1
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0810E766
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E736
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E71C
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E754
_0810E71C:
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E754
_0810E736:
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E74A
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0xC
b _0810E752
_0810E74A:
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0xC
_0810E752:
strb r0, [r1]
_0810E754:
ldrb r2, [r4, 0xE]
lsls r0, r2, 31
lsrs r0, 31
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, 0xE]
_0810E766:
ldrb r1, [r4]
movs r0, 0x9
negs r0, r0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, 0x2]
mov r12, r1
_0810E774:
ldrb r0, [r4]
movs r1, 0xF
ands r1, r0
movs r0, 0x10
b _0810E978
_0810E77E:
lsls r1, r2, 24
lsrs r0, r1, 28
cmp r0, 0x3
bne _0810E78C
movs r0, 0x8
orrs r0, r2
b _0810E794
_0810E78C:
lsrs r0, r1, 28
cmp r0, 0x1
bne _0810E79C
adds r0, r2, 0
_0810E794:
orrs r0, r7
strb r0, [r4]
strb r6, [r4, 0x1]
b _0810E868
_0810E79C:
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0810E868
adds r3, r5, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r1, r2, 31
lsrs r1, 31
movs r6, 0x1
eors r1, r6
ands r1, r7
movs r0, 0x2
negs r0, r0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r5, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
movs r1, 0x11
negs r1, r1
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0810E85A
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E82A
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E810
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E848
_0810E810:
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E848
_0810E82A:
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E83E
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0xC
b _0810E846
_0810E83E:
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0xC
_0810E846:
strb r0, [r1]
_0810E848:
ldrb r2, [r4, 0xE]
lsls r0, r2, 31
lsrs r0, 31
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, 0xE]
_0810E85A:
ldrb r1, [r4]
movs r0, 0x9
negs r0, r0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, 0x2]
mov r12, r1
_0810E868:
ldrb r0, [r4]
movs r1, 0xF
ands r1, r0
movs r0, 0x20
b _0810E978
_0810E872:
lsls r1, r2, 24
lsrs r0, r1, 28
cmp r0, 0x2
bne _0810E882
movs r0, 0x8
orrs r0, r2
strb r0, [r4]
b _0810E970
_0810E882:
lsrs r0, r1, 28
cmp r0, 0
bne _0810E8A4
lsls r0, r2, 30
lsrs r0, 31
movs r1, 0x1
eors r0, r1
ands r0, r7
lsls r0, 1
movs r1, 0x3
negs r1, r1
ands r1, r2
orrs r1, r0
orrs r1, r7
strb r1, [r4]
strb r6, [r4, 0x1]
b _0810E970
_0810E8A4:
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0810E970
adds r3, r5, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r1, r2, 31
lsrs r1, 31
movs r6, 0x1
eors r1, r6
ands r1, r7
movs r0, 0x2
negs r0, r0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r5, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
movs r1, 0x11
negs r1, r1
ands r0, r1
strb r0, [r3]
ldrb r1, [r4]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0810E962
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E932
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E918
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E950
_0810E918:
ldrb r2, [r5, 0x5]
lsls r1, r2, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _0810E950
_0810E932:
ldrb r1, [r4, 0xE]
mov r0, r9
ands r0, r1
cmp r0, 0
bne _0810E946
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0xC
b _0810E94E
_0810E946:
adds r1, r5, 0
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0xC
_0810E94E:
strb r0, [r1]
_0810E950:
ldrb r2, [r4, 0xE]
lsls r0, r2, 31
lsrs r0, 31
eors r0, r6
ands r0, r7
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, 0xE]
_0810E962:
ldrb r1, [r4]
movs r0, 0x9
negs r0, r0
ands r0, r1
strb r0, [r4]
ldrh r1, [r4, 0x2]
mov r12, r1
_0810E970:
ldrb r0, [r4]
movs r1, 0xF
ands r1, r0
movs r0, 0x30
_0810E978:
orrs r1, r0
strb r1, [r4]
_0810E97C:
ldrb r1, [r4]
lsls r1, 30
lsrs r1, 31
adds r0, r4, 0
adds r0, 0xC
adds r0, r1
ldrb r1, [r0]
ldr r3, =gSineTable
mov r2, r12
lsls r0, r2, 1
adds r0, r3
movs r2, 0
ldrsh r0, [r0, r2]
muls r0, r1
asrs r0, 8
strh r0, [r5, 0x24]
ldrb r2, [r5, 0x3]
lsls r2, 26
lsrs r2, 27
movs r1, 0x24
ldrsh r0, [r5, r1]
negs r0, r0
asrs r0, 1
ldrb r1, [r4, 0xA]
adds r0, r1
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r3
ldrh r6, [r1]
ldr r1, =gOamMatrices
lsls r2, 3
adds r2, r1
adds r0, 0x40
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strh r0, [r2, 0x6]
strh r0, [r2]
strh r6, [r2, 0x2]
lsls r0, r6, 16
asrs r0, 16
negs r0, r0
strh r0, [r2, 0x4]
ldrh r0, [r4, 0x6]
ldrh r2, [r4, 0x8]
adds r0, r2
strh r0, [r4, 0x8]
lsls r0, 16
lsrs r0, 24
strh r0, [r5, 0x22]
movs r1, 0x4
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0810EA0C
ldrh r0, [r4, 0x4]
subs r1, 0x1
ands r1, r0
ldrh r0, [r4, 0x2]
subs r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2]
b _0810EA1C
.pool
_0810EA0C:
ldrh r0, [r4, 0x4]
ldr r1, =0x00007fff
ands r1, r0
ldrh r2, [r4, 0x2]
adds r1, r2
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0x2]
_0810EA1C:
movs r0, 0x22
ldrsh r1, [r5, r0]
movs r2, 0x26
ldrsh r0, [r5, r2]
adds r1, r0
ldrh r0, [r4, 0xE]
lsrs r0, 1
cmp r1, r0
blt _0810EA36
movs r0, 0
strh r0, [r5, 0x2E]
ldr r0, =sub_810E2C8
str r0, [r5, 0x1C]
_0810EA36:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E520
thumb_func_start sub_810EA4C
sub_810EA4C: @ 810EA4C
push {r4,r5,lr}
adds r4, r0, 0
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSpriteBGPriority
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]
ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
ldr r0, =TranslateAnimSpriteToTargetMonLocation
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EA4C
thumb_func_start sub_810EAA0
sub_810EAA0: @ 810EAA0
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810EABC
adds r0, r5, 0
movs r1, 0
bl InitSpritePosToAnimAttacker
b _0810EAC4
.pool
_0810EABC:
adds r0, r5, 0
movs r1, 0
bl InitSpritePosToAnimTarget
_0810EAC4:
ldr r4, =gBattleAnimArgs
movs r2, 0x4
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0810EADC
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810EAF2
_0810EADC:
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _0810EAF8
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810EAF8
_0810EAF2:
ldrh r0, [r5, 0x20]
adds r0, 0x8
strh r0, [r5, 0x20]
_0810EAF8:
ldr r4, =gBattleAnimArgs
ldrb r1, [r4, 0x8]
adds r0, r5, 0
bl SeekSpriteAnim
ldrh r0, [r5, 0x20]
subs r0, 0x20
strh r0, [r5, 0x20]
ldr r0, =0x00000ccc
strh r0, [r5, 0x30]
ldrh r1, [r4, 0x8]
movs r0, 0xC
adds r2, r0, 0
muls r2, r1
adds r0, r2, 0
ldrh r2, [r5, 0x24]
adds r0, r2
strh r0, [r5, 0x24]
strh r1, [r5, 0x2E]
ldrh r0, [r4, 0x6]
strh r0, [r5, 0x3C]
ldr r0, =sub_810EB40
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EAA0
thumb_func_start sub_810EB40
sub_810EB40: @ 810EB40
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x24]
adds r0, r1
movs r1, 0
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _0810EB6A
strh r1, [r4, 0x2E]
strh r1, [r4, 0x24]
adds r0, r4, 0
bl StartSpriteAnim
_0810EB6A:
ldrh r0, [r4, 0x3C]
subs r0, 0x1
strh r0, [r4, 0x3C]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0810EB82
adds r0, r4, 0
bl DestroyAnimSprite
_0810EB82:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_810EB40
thumb_func_start sub_810EB88
sub_810EB88: @ 810EB88
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
ldr r1, =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r7, r0, r1
ldrh r0, [r7, 0x8]
movs r1, 0x1F
ands r0, r1
cmp r0, 0
bne _0810EC02
ldr r1, =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
movs r1, 0x8
ldrsh r0, [r7, r1]
movs r5, 0xD
negs r5, r5
adds r1, r5, 0
bl Sin
ldr r4, =gBattleAnimArgs
strh r0, [r4]
movs r1, 0x8
ldrsh r0, [r7, r1]
adds r1, r5, 0
bl Cos
strh r0, [r4, 0x2]
movs r0, 0x1
strh r0, [r4, 0x4]
movs r0, 0x3
strh r0, [r4, 0x6]
ldr r0, =gUnknown_085973E8
mov r8, r0
ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
mov r0, r8
adds r1, r4, 0
movs r3, 0x3
bl CreateSpriteAndAnimate
_0810EC02:
ldrh r0, [r7, 0x8]
adds r0, 0x8
strh r0, [r7, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0xFF
ble _0810EC16
adds r0, r6, 0
bl DestroyAnimVisualTask
_0810EC16:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EB88
thumb_func_start sub_810EC34
sub_810EC34: @ 810EC34
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0810EC46
cmp r0, 0x1
beq _0810EC78
b _0810EC8C
_0810EC46:
adds r0, r4, 0
movs r1, 0x1
bl InitSpritePosToAnimAttacker
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0810EC8C
.pool
_0810EC78:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0810EC8C
adds r0, r4, 0
bl DestroyAnimSprite
_0810EC8C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_810EC34
thumb_func_start sub_810EC94
sub_810EC94: @ 810EC94
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _0810ECCC
cmp r0, 0x1
bgt _0810ECAA
cmp r0, 0
beq _0810ECB0
b _0810ED1E
_0810ECAA:
cmp r0, 0x2
beq _0810ECE0
b _0810ED1E
_0810ECB0:
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
negs r0, r0
subs r0, 0x20
strh r0, [r4, 0x26]
b _0810ECD8
.pool
_0810ECCC:
ldrh r0, [r4, 0x26]
adds r0, 0xA
strh r0, [r4, 0x26]
lsls r0, 16
cmp r0, 0
blt _0810ED1E
_0810ECD8:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0810ED1E
_0810ECE0:
ldrh r0, [r4, 0x26]
subs r0, 0xA
strh r0, [r4, 0x26]
movs r2, 0x22
ldrsh r0, [r4, r2]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _0810ED1E
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x5
negs r0, r0
ands r0, r2
strb r0, [r1]
adds r0, r4, 0
bl DestroyAnimSprite
_0810ED1E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EC94
thumb_func_start sub_810ED28
sub_810ED28: @ 810ED28
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimAttacker
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x30]
ldr r0, =sub_810ED70
str r0, [r4, 0x1C]
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810ED28
thumb_func_start sub_810ED70
sub_810ED70: @ 810ED70
push {lr}
adds r2, r0, 0
ldrh r1, [r2, 0x2E]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
ble _0810ED84
subs r0, r1, 0x1
strh r0, [r2, 0x2E]
b _0810EDC8
_0810ED84:
movs r1, 0x22
ldrsh r0, [r2, r1]
movs r3, 0x26
ldrsh r1, [r2, r3]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
ble _0810EDAA
ldrh r0, [r2, 0x30]
ldrh r1, [r2, 0x32]
adds r0, r1
strh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r2, 0x26]
subs r1, r0
strh r1, [r2, 0x26]
b _0810EDC8
_0810EDAA:
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, 0x34]
adds r1, r0, 0x1
strh r1, [r2, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
ble _0810EDC8
ldr r0, =sub_810EDD0
str r0, [r2, 0x1C]
_0810EDC8:
pop {r0}
bx r0
.pool
thumb_func_end sub_810ED70
thumb_func_start sub_810EDD0
sub_810EDD0: @ 810EDD0
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r2, 0x26]
adds r0, r1
strh r0, [r2, 0x26]
movs r3, 0x22
ldrsh r0, [r2, r3]
movs r3, 0x26
ldrsh r1, [r2, r3]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
ble _0810EE00
adds r3, r2, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r3]
_0810EE00:
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0
ble _0810EE0E
adds r0, r2, 0
bl DestroyAnimSprite
_0810EE0E:
pop {r0}
bx r0
thumb_func_end sub_810EDD0
thumb_func_start sub_810EE14
sub_810EE14: @ 810EE14
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
beq _0810EE28
cmp r0, 0x1
beq _0810EE80
b _0810EEEC
_0810EE28:
ldr r0, =gBattleAnimArgs
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0
bne _0810EE40
ldr r4, =gBattleAnimAttacker
b _0810EE42
.pool
_0810EE40:
ldr r4, =gBattleAnimTarget
_0810EE42:
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
movs r0, 0
movs r3, 0x80
lsls r3, 2
strh r3, [r5, 0x30]
movs r2, 0x80
lsls r2, 1
str r0, [sp]
adds r0, r5, 0
movs r1, 0
bl TrySetSpriteRotScale
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _0810EEEC
.pool
_0810EE80:
movs r1, 0x32
ldrsh r0, [r5, r1]
cmp r0, 0xB
bgt _0810EE8E
ldrh r0, [r5, 0x30]
subs r0, 0x28
b _0810EE92
_0810EE8E:
ldrh r0, [r5, 0x30]
adds r0, 0x28
_0810EE92:
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
adds r0, 0x1
movs r1, 0
strh r0, [r5, 0x32]
movs r2, 0x80
lsls r2, 1
movs r0, 0x30
ldrsh r3, [r5, r0]
str r1, [sp]
adds r0, r5, 0
bl TrySetSpriteRotScale
ldrb r1, [r5, 0x3]
lsls r1, 26
lsrs r1, 27
movs r0, 0xF4
lsls r0, 6
ldr r2, =gOamMatrices
lsls r1, 3
adds r1, r2
movs r2, 0x6
ldrsh r1, [r1, r2]
bl __divsi3
adds r1, r0, 0x1
cmp r1, 0x80
ble _0810EECC
movs r1, 0x80
_0810EECC:
movs r0, 0x40
subs r0, r1
lsrs r1, r0, 31
adds r0, r1
asrs r1, r0, 1
strh r1, [r5, 0x26]
movs r1, 0x32
ldrsh r0, [r5, r1]
cmp r0, 0x18
bne _0810EEEC
adds r0, r5, 0
bl sub_80A749C
adds r0, r5, 0
bl DestroyAnimSprite
_0810EEEC:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EE14
thumb_func_start sub_810EEF8
sub_810EEF8: @ 810EEF8
push {r4,r5,lr}
adds r5, r0, 0
bl Random2
ldr r4, =0x000001ff
ands r4, r0
bl Random2
movs r1, 0x7F
ands r1, r0
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _0810EF20
movs r2, 0xB8
lsls r2, 2
adds r0, r4, r2
b _0810EF28
.pool
_0810EF20:
movs r2, 0xB8
lsls r2, 2
adds r0, r2, 0
subs r0, r4
_0810EF28:
strh r0, [r5, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0810EF3C
movs r2, 0xE0
lsls r2, 2
adds r0, r2, 0
adds r0, r1, r0
b _0810EF44
_0810EF3C:
movs r2, 0xE0
lsls r2, 2
adds r0, r2, 0
subs r0, r1
_0810EF44:
strh r0, [r5, 0x30]
ldr r2, =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r5, 0x32]
lsls r0, 16
cmp r0, 0
beq _0810EF60
ldrb r0, [r5, 0x3]
movs r1, 0x3F
negs r1, r1
ands r1, r0
movs r0, 0x10
orrs r1, r0
strb r1, [r5, 0x3]
_0810EF60:
movs r1, 0x2
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0810EF74
ldr r4, =gBattleAnimAttacker
b _0810EF76
.pool
_0810EF74:
ldr r4, =gBattleAnimTarget
_0810EF76:
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
strh r0, [r5, 0x22]
ldr r0, =sub_810EFA8
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810EEF8
thumb_func_start sub_810EFA8
sub_810EFA8: @ 810EFA8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0810EFC0
ldrh r3, [r4, 0x2E]
lsls r0, r3, 16
asrs r0, 24
ldrh r1, [r4, 0x24]
adds r0, r1
b _0810EFCA
_0810EFC0:
ldrh r3, [r4, 0x2E]
lsls r1, r3, 16
asrs r1, 24
ldrh r0, [r4, 0x24]
subs r0, r1
_0810EFCA:
strh r0, [r4, 0x24]
ldrh r2, [r4, 0x30]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x26]
subs r0, r1
strh r0, [r4, 0x26]
strh r3, [r4, 0x2E]
adds r0, r2, 0
subs r0, 0x20
strh r0, [r4, 0x30]
lsls r0, r3, 16
cmp r0, 0
bge _0810EFEA
movs r0, 0
strh r0, [r4, 0x2E]
_0810EFEA:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _0810EFFE
adds r0, r4, 0
bl DestroyAnimSprite
_0810EFFE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_810EFA8
thumb_func_start sub_810F004
sub_810F004: @ 810F004
movs r1, 0
strh r1, [r0, 0x3A]
movs r1, 0x40
strh r1, [r0, 0x3C]
ldr r1, =sub_810F018
str r1, [r0, 0x1C]
bx lr
.pool
thumb_func_end sub_810F004
thumb_func_start sub_810F018
sub_810F018: @ 810F018
push {lr}
adds r3, r0, 0
movs r0, 0x2E
ldrsh r1, [r3, r0]
cmp r1, 0
beq _0810F02A
cmp r1, 0x1
beq _0810F078
b _0810F07E
_0810F02A:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _0810F07E
strh r1, [r3, 0x30]
movs r1, 0x3E
adds r1, r3
mov r12, r1
ldrb r2, [r1]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _0810F07E
ldrb r1, [r1]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0810F07E
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
b _0810F07E
_0810F078:
adds r0, r3, 0
bl DestroyAnimSprite
_0810F07E:
pop {r0}
bx r0
thumb_func_end sub_810F018
thumb_func_start sub_810F084
sub_810F084: @ 810F084
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x4
mov r8, r0
ldrh r4, [r0, 0x20]
ldrh r5, [r0, 0x22]
ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r1, r8
strh r0, [r1, 0x20]
ldrb r0, [r6]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
mov r2, r8
strh r6, [r2, 0x22]
ldrh r0, [r2, 0x20]
mov r9, r0
mov r1, r9
lsls r0, r1, 4
strh r0, [r2, 0x36]
lsls r0, r6, 4
strh r0, [r2, 0x38]
lsls r4, 16
asrs r4, 16
movs r1, 0x20
ldrsh r0, [r2, r1]
subs r0, r4, r0
lsls r0, 4
movs r1, 0xC
bl __divsi3
mov r2, r8
strh r0, [r2, 0x3A]
lsls r5, 16
asrs r5, 16
movs r1, 0x22
ldrsh r0, [r2, r1]
subs r0, r5, r0
lsls r0, 4
movs r1, 0xC
bl __divsi3
mov r2, r8
strh r0, [r2, 0x3C]
mov r0, r9
subs r4, r0
lsls r4, 16
asrs r4, 16
subs r5, r6
lsls r5, 16
asrs r5, 16
adds r0, r4, 0
adds r1, r5, 0
bl ArcTan2Neg
lsls r0, 16
movs r1, 0xC0
lsls r1, 24
adds r0, r1
lsrs r0, 16
movs r3, 0x80
lsls r3, 1
str r0, [sp]
mov r0, r8
movs r1, 0x1
adds r2, r3, 0
bl TrySetSpriteRotScale
ldr r0, =sub_810F140
mov r2, r8
str r0, [r2, 0x1C]
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_810F084
thumb_func_start sub_810F140
sub_810F140: @ 810F140
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x3A]
ldrh r1, [r2, 0x36]
adds r0, r1
strh r0, [r2, 0x36]
ldrh r1, [r2, 0x3C]
ldrh r3, [r2, 0x38]
adds r1, r3
strh r1, [r2, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
lsls r1, 16
asrs r3, r1, 20
strh r3, [r2, 0x22]
adds r0, 0x2D
lsls r0, 16
movs r1, 0xA5
lsls r1, 17
cmp r0, r1
bhi _0810F17A
adds r1, r3, 0
cmp r1, 0x9D
bgt _0810F17A
movs r0, 0x2D
negs r0, r0
cmp r1, r0
bge _0810F180
_0810F17A:
adds r0, r2, 0
bl DestroySpriteAndMatrix
_0810F180:
pop {r0}
bx r0
thumb_func_end sub_810F140
thumb_func_start sub_810F184
sub_810F184: @ 810F184
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810F1BC
movs r0, 0
bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
b _0810F1DA
.pool
_0810F1BC:
movs r0, 0
bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x5
negs r0, r0
ands r0, r2
_0810F1DA:
strb r0, [r1]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810F184
.align 2, 0