pokeemerald/asm/battle_anim_815A0D4.s

12489 lines
190 KiB
ArmAsm
Raw Normal View History

2017-09-04 12:22:04 +02:00
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_815A0D4
sub_815A0D4: @ 815A0D4
push {lr}
adds r2, r0, 0
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
ldrh r3, [r2, 0x20]
adds r0, r3
strh r0, [r2, 0x20]
ldrh r0, [r1, 0x2]
ldrh r3, [r2, 0x22]
adds r0, r3
strh r0, [r2, 0x22]
movs r3, 0x6
ldrsh r0, [r1, r3]
cmp r0, 0
bne _0815A0FC
ldrh r0, [r1, 0x4]
b _0815A100
.pool
_0815A0FC:
ldrh r0, [r1, 0x4]
negs r0, r0
_0815A100:
strh r0, [r2, 0x2E]
ldrh r0, [r1, 0x8]
strh r0, [r2, 0x30]
ldr r0, =sub_815A114
str r0, [r2, 0x1C]
pop {r0}
bx r0
.pool
thumb_func_end sub_815A0D4
thumb_func_start sub_815A114
sub_815A114: @ 815A114
push {lr}
adds r3, r0, 0
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0
ble _0815A154
ldrh r1, [r3, 0x32]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r3, 0x24]
ldrh r0, [r3, 0x2E]
adds r1, r0
strh r1, [r3, 0x32]
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
b _0815A15A
_0815A154:
adds r0, r3, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815A15A:
pop {r0}
bx r0
thumb_func_end sub_815A114
thumb_func_start sub_815A160
sub_815A160: @ 815A160
push {r4-r6,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
2018-02-06 20:48:02 +01:00
ldr r6, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r6]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
lsls r4, 24
lsrs r4, 8
movs r0, 0x80
lsls r0, 12
adds r4, r0
asrs r4, 16
ldrb r0, [r6]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 8
movs r0, 0x80
lsls r0, 12
adds r1, r0
asrs r1, 16
adds r0, r4, 0
movs r2, 0
bl sub_807521C
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A160
thumb_func_start sub_815A1B0
sub_815A1B0: @ 815A1B0
push {r4,lr}
adds r4, r0, 0
movs r0, 0x5A
strh r0, [r4, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
movs r0, 0x7
strh r0, [r4, 0x30]
ldr r1, =sub_815A1F4
adds r0, r4, 0
bl StoreSpriteCallbackInData6
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r0, [r4, 0x30]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A1B0
thumb_func_start sub_815A1F4
sub_815A1F4: @ 815A1F4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x30]
subs r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bge _0815A228
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815A234
str r0, [r4, 0x1C]
_0815A228:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A1F4
thumb_func_start sub_815A234
sub_815A234: @ 815A234
push {r4,lr}
adds r4, r0, 0
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815A234
thumb_func_start sub_815A254
sub_815A254: @ 815A254
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
adds r0, r5, 0
movs r1, 0x1
bl sub_80A6980
ldrh r0, [r5, 0x20]
subs r0, r7
lsls r0, 16
asrs r0, 16
ldrh r1, [r5, 0x22]
subs r1, r6
lsls r1, 16
asrs r1, 16
2018-10-07 12:32:20 +02:00
bl ArcTan2Neg
2017-09-04 12:22:04 +02:00
lsls r0, 16
movs r1, 0xC0
lsls r1, 23
adds r0, r1
lsrs r4, r0, 16
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815A2B2
movs r1, 0x80
lsls r1, 7
adds r0, r4, r1
lsls r0, 16
lsrs r4, r0, 16
_0815A2B2:
movs r3, 0x80
lsls r3, 1
str r4, [sp]
adds r0, r5, 0
movs r1, 0
adds r2, r3, 0
bl sub_80A73E0
ldr r0, =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
strh r7, [r5, 0x32]
strh r6, [r5, 0x36]
2018-11-26 00:00:18 +01:00
ldr r0, =StartAnimLinearTranslation
2017-09-04 12:22:04 +02:00
str r0, [r5, 0x1C]
2017-10-14 16:55:25 +02:00
ldr r1, =DestroyAnimSprite
2017-09-04 12:22:04 +02:00
adds r0, r5, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A254
thumb_func_start sub_815A2F0
sub_815A2F0: @ 815A2F0
push {r4,lr}
adds r4, r0, 0
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x4
strh r0, [r4, 0x2E]
ldr r0, =sub_815A31C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A2F0
thumb_func_start sub_815A31C
sub_815A31C: @ 815A31C
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815A342
ldrh r0, [r4, 0x2E]
subs r0, 0x1
b _0815A346
_0815A342:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
_0815A346:
strh r0, [r4, 0x2E]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0xF
beq _0815A354
cmp r0, 0x4
bne _0815A35C
_0815A354:
ldrh r0, [r4, 0x30]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x30]
_0815A35C:
ldrh r0, [r4, 0x32]
adds r1, r0, 0x1
strh r1, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x46
ble _0815A3A0
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
movs r0, 0
strh r0, [r4, 0x32]
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815A3AC
str r0, [r4, 0x1C]
_0815A3A0:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A31C
thumb_func_start sub_815A3AC
sub_815A3AC: @ 815A3AC
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x32]
adds r1, r0, 0x1
strh r1, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
ble _0815A3E8
adds r2, r3, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
adds r0, r3, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0815A3E8
ldr r0, =sub_815A3F0
str r0, [r3, 0x1C]
_0815A3E8:
pop {r0}
bx r0
.pool
thumb_func_end sub_815A3AC
thumb_func_start sub_815A3F0
sub_815A3F0: @ 815A3F0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0x6
bhi _0815A448
lsls r0, 2
ldr r1, =_0815A40C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815A40C:
.4byte _0815A428
.4byte _0815A428
.4byte _0815A432
.4byte _0815A432
.4byte _0815A440
.4byte _0815A440
.4byte _0815A448
_0815A428:
movs r1, 0
movs r0, 0x1
strh r0, [r4, 0x24]
strh r1, [r4, 0x26]
b _0815A450
_0815A432:
ldr r0, =0x0000ffff
strh r0, [r4, 0x24]
movs r0, 0
b _0815A44E
.pool
_0815A440:
movs r0, 0
strh r0, [r4, 0x24]
movs r0, 0x1
b _0815A44E
_0815A448:
movs r0, 0
strh r0, [r4, 0x24]
ldr r0, =0x0000ffff
_0815A44E:
strh r0, [r4, 0x26]
_0815A450:
ldrh r0, [r4, 0x34]
adds r0, 0x1
movs r2, 0
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _0815A462
strh r2, [r4, 0x34]
_0815A462:
ldrh r0, [r4, 0x36]
adds r1, r0, 0x1
strh r1, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _0815A48C
movs r0, 0x10
strh r0, [r4, 0x2E]
strh r2, [r4, 0x30]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r4, 0x2E]
movs r0, 0x52
bl SetGpuReg
ldr r0, =sub_815A49C
str r0, [r4, 0x1C]
_0815A48C:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A3F0
thumb_func_start sub_815A49C
sub_815A49C: @ 815A49C
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x30]
adds r1, r0, 0x1
strh r1, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815A4CC
ldrh r0, [r4, 0x2E]
subs r0, 0x1
movs r1, 0
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
_0815A4CC:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815A4E0
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_0815A4E0:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bge _0815A4FE
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815A4FE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815A49C
thumb_func_start sub_815A504
sub_815A504: @ 815A504
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, =sub_815A52C
str r0, [r1]
ldr r1, =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
bx lr
.pool
thumb_func_end sub_815A504
thumb_func_start sub_815A52C
sub_815A52C: @ 815A52C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r4, r0, 24
bl sub_80A6D94
lsls r0, 24
lsrs r6, r0, 24
ldr r7, =gTasks
lsls r5, r4, 2
adds r1, r5, r4
lsls r1, 3
adds r1, r7
ldrh r0, [r1, 0x12]
adds r0, 0x1
strh r0, [r1, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _0815A59C
ldr r0, =gPlttBufferFaded
lsls r2, r6, 4
adds r1, r2, 0
adds r1, 0xB
lsls r1, 1
adds r1, r0
ldrh r3, [r1]
mov r8, r3
movs r3, 0xA
mov r9, r7
adds r7, r5, 0
mov r12, r0
adds r5, r2, 0
lsls r0, r6, 5
add r0, r12
adds r2, r0, 0
adds r2, 0x14
_0815A57A:
ldrh r0, [r2]
strh r0, [r1]
subs r2, 0x2
subs r1, 0x2
subs r3, 0x1
cmp r3, 0
bgt _0815A57A
adds r0, r5, 0x1
lsls r0, 1
add r0, r12
movs r1, 0
mov r2, r8
strh r2, [r0]
adds r0, r7, r4
lsls r0, 3
add r0, r9
strh r1, [r0, 0x12]
_0815A59C:
ldr r0, =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, =0x0000ffff
cmp r1, r0
bne _0815A5AC
adds r0, r4, 0
bl DestroyTask
_0815A5AC:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A52C
2017-12-31 16:28:57 +01:00
thumb_func_start sub_815A5C8
sub_815A5C8: @ 815A5C8
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, =sub_815A5F0
str r0, [r1]
ldr r1, =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
bx lr
.pool
2017-12-31 16:28:57 +01:00
thumb_func_end sub_815A5C8
2017-09-04 12:22:04 +02:00
thumb_func_start sub_815A5F0
sub_815A5F0: @ 815A5F0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
bl sub_80A6D94
lsls r0, 24
lsrs r7, r0, 24
ldr r5, =gTasks
mov r0, r8
lsls r3, r0, 2
adds r1, r3, r0
lsls r1, 3
adds r1, r5
ldrh r0, [r1, 0x12]
adds r0, 0x1
strh r0, [r1, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _0815A692
ldr r0, =gPlttBufferFaded
lsls r2, r7, 4
adds r1, r2, 0
adds r1, 0xB
lsls r1, 1
adds r1, r0
ldrh r6, [r1]
movs r4, 0xA
mov r10, r3
mov r9, r0
adds r5, r2, 0
ldr r2, =gPlttBufferUnfaded
mov r12, r2
lsls r0, r7, 5
add r0, r9
adds r3, r0, 0
adds r3, 0x14
_0815A644:
ldrh r0, [r3]
strh r0, [r1]
subs r3, 0x2
subs r1, 0x2
subs r4, 0x1
cmp r4, 0
bgt _0815A644
adds r0, r5, 0x1
lsls r0, 1
add r0, r9
strh r6, [r0]
adds r1, r5, 0
adds r1, 0xB
lsls r1, 1
add r1, r12
ldrh r6, [r1]
movs r4, 0xA
lsls r0, r7, 5
add r0, r12
adds r2, r0, 0
adds r2, 0x14
_0815A66E:
ldrh r0, [r2]
strh r0, [r1]
subs r2, 0x2
subs r1, 0x2
subs r4, 0x1
cmp r4, 0
bgt _0815A66E
adds r0, r5, 0x1
lsls r0, 1
add r0, r12
movs r1, 0
strh r6, [r0]
mov r0, r10
add r0, r8
lsls r0, 3
ldr r2, =gTasks
adds r0, r2
strh r1, [r0, 0x12]
_0815A692:
ldr r0, =gBattleAnimArgs
ldrh r1, [r0, 0xE]
ldr r0, =0x0000ffff
cmp r1, r0
bne _0815A6A2
mov r0, r8
bl DestroyTask
_0815A6A2:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A5F0
thumb_func_start sub_815A6C4
sub_815A6C4: @ 815A6C4
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
movs r1, 0x1
2018-11-26 00:00:18 +01:00
bl InitAnimSpritePos
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
mov r5, sp
adds r5, 0x2
movs r1, 0
mov r2, sp
adds r3, r5, 0
2018-10-07 12:32:20 +02:00
bl SetAverageBattlerPositions
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815A6F8
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_0815A6F8:
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
mov r2, sp
ldrh r0, [r1, 0x4]
ldrh r2, [r2]
adds r0, r2
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x6]
ldrh r5, [r5]
adds r0, r5
strh r0, [r4, 0x36]
ldr r0, =0x0000ffce
strh r0, [r4, 0x38]
adds r0, r4, 0
2018-11-26 00:00:18 +01:00
bl InitAnimArcTranslation
2017-09-04 12:22:04 +02:00
ldr r0, =sub_815A73C
str r0, [r4, 0x1C]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A6C4
thumb_func_start sub_815A73C
sub_815A73C: @ 815A73C
push {r4,lr}
adds r4, r0, 0
2018-10-06 23:04:53 +02:00
bl TranslateAnimArc
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815A75E
movs r1, 0
movs r0, 0x1E
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
ldr r1, =sub_815A76C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
_0815A75E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A73C
thumb_func_start sub_815A76C
sub_815A76C: @ 815A76C
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0815A798
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
_0815A798:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x10
bne _0815A7AC
adds r0, r3, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815A7AC:
pop {r0}
bx r0
thumb_func_end sub_815A76C
thumb_func_start sub_815A7B0
sub_815A7B0: @ 815A7B0
push {r4,r5,lr}
adds r4, r0, 0
bl sub_80A6838
ldr r5, =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl sub_80A6864
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
2017-10-14 16:55:25 +02:00
ldr r1, =DestroyAnimSprite
2017-09-04 12:22:04 +02:00
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A7B0
thumb_func_start sub_815A7EC
sub_815A7EC: @ 815A7EC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815A84C
adds r0, r4, 0
bl sub_80A6838
ldr r5, =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r5, r2]
adds r0, r4, 0
bl sub_80A6864
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815A840
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815A830
ldrh r0, [r5, 0x4]
b _0815A846
.pool
_0815A830:
movs r1, 0x4
ldrsh r0, [r5, r1]
negs r0, r0
strh r0, [r4, 0x30]
movs r2, 0x6
ldrsh r0, [r5, r2]
negs r0, r0
b _0815A84A
_0815A840:
movs r1, 0x4
ldrsh r0, [r5, r1]
negs r0, r0
_0815A846:
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x6]
_0815A84A:
strh r0, [r4, 0x32]
_0815A84C:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
movs r2, 0x2E
ldrsh r1, [r4, r2]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
movs r3, 0xFF
ldrh r1, [r4, 0x30]
ldrh r2, [r4, 0x34]
adds r1, r2
strh r1, [r4, 0x34]
ldrh r1, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r1, r2
strh r1, [r4, 0x36]
movs r2, 0x34
ldrsh r1, [r4, r2]
lsrs r2, r1, 31
adds r1, r2
asrs r1, 1
strh r1, [r4, 0x24]
ands r0, r3
movs r1, 0x5
bl Sin
movs r2, 0x36
ldrsh r1, [r4, r2]
lsrs r2, r1, 31
adds r1, r2
asrs r1, 1
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
lsls r0, 16
lsrs r0, 16
cmp r0, 0xF0
bls _0815A8A4
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815A8A4:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815A7EC
thumb_func_start sub_815A8AC
sub_815A8AC: @ 815A8AC
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0815A8C2
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815A8C2:
pop {r0}
bx r0
thumb_func_end sub_815A8AC
2018-09-10 21:19:19 +02:00
thumb_func_start AnimTask_IsTargetPlayerSide
AnimTask_IsTargetPlayerSide: @ 815A8C8
2017-09-04 12:22:04 +02:00
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815A8EC
ldr r1, =gBattleAnimArgs
movs r0, 0
b _0815A8F0
.pool
_0815A8EC:
ldr r1, =gBattleAnimArgs
movs r0, 0x1
_0815A8F0:
strh r0, [r1, 0xE]
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
2018-09-10 21:19:19 +02:00
thumb_func_end AnimTask_IsTargetPlayerSide
2017-09-04 12:22:04 +02:00
2018-09-10 21:19:19 +02:00
thumb_func_start AnimTask_IsHealingMove
AnimTask_IsHealingMove: @ 815A904
2017-09-04 12:22:04 +02:00
push {lr}
lsls r0, 24
lsrs r2, r0, 24
2017-10-14 16:55:25 +02:00
ldr r0, =gAnimMoveDmg
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
cmp r0, 0
ble _0815A920
ldr r1, =gBattleAnimArgs
movs r0, 0
b _0815A924
.pool
_0815A920:
ldr r1, =gBattleAnimArgs
movs r0, 0x1
_0815A924:
strh r0, [r1, 0xE]
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r0}
bx r0
.pool
2018-09-10 21:19:19 +02:00
thumb_func_end AnimTask_IsHealingMove
2017-09-04 12:22:04 +02:00
thumb_func_start sub_815A934
sub_815A934: @ 815A934
push {r4,r5,lr}
adds r5, r0, 0
ldr r1, =0x00001f3f
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN0H
2017-09-04 12:22:04 +02:00
movs r1, 0
strh r1, [r0]
2017-10-01 01:12:42 +02:00
ldr r4, =gBattle_WIN0V
2017-09-04 12:22:04 +02:00
strh r1, [r4]
movs r0, 0x40
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x44
bl SetGpuReg
adds r0, r5, 0
movs r1, 0
bl sub_80A6980
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x8
orrs r0, r1
strb r0, [r5, 0x1]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815A9A0
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A934
thumb_func_start sub_815A9A0
sub_815A9A0: @ 815A9A0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x5
bhi _0815AA60
lsls r0, 2
ldr r1, =_0815A9BC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815A9BC:
.4byte _0815A9D4
.4byte _0815A9F2
.4byte _0815AA12
.4byte _0815A9F2
.4byte _0815AA32
.4byte _0815AA42
_0815A9D4:
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0815AA60
b _0815AA3A
_0815A9F2:
ldrh r0, [r4, 0x30]
adds r0, 0x75
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x15
bne _0815AA60
movs r0, 0
strh r0, [r4, 0x32]
b _0815AA3A
_0815AA12:
ldrh r0, [r4, 0x30]
subs r0, 0x75
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x29
bne _0815AA60
movs r0, 0
strh r0, [r4, 0x32]
b _0815AA3A
_0815AA32:
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
_0815AA3A:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815AA60
_0815AA42:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0815AA60
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815AA6C
str r0, [r4, 0x1C]
_0815AA60:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815A9A0
thumb_func_start sub_815AA6C
sub_815AA6C: @ 815AA6C
push {r4,lr}
adds r4, r0, 0
ldr r1, =0x00003f3f
movs r0, 0x4A
bl SetGpuReg
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
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815AA6C
thumb_func_start sub_815AAA4
sub_815AAA4: @ 815AAA4
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, =gBattleAnimArgs
movs r1, 0x6
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815AAD0
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
_0815AAD0:
ldrh r0, [r6]
ldrh r2, [r5, 0x20]
adds r0, r2
movs r3, 0
strh r0, [r5, 0x20]
ldrh r0, [r6, 0x2]
ldrh r4, [r5, 0x22]
adds r0, r4
strh r0, [r5, 0x22]
ldrh r2, [r5, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r4, =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
movs r1, 0x4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815AB2C
ldrb r1, [r5, 0x3]
movs r0, 0x3F
negs r0, r0
ands r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r5, 0x3]
ldr r0, =0x0000fff4
strh r0, [r5, 0x24]
movs r0, 0x2
b _0815AB32
.pool
_0815AB2C:
movs r0, 0xC
strh r0, [r5, 0x24]
ldr r0, =0x0000fffe
_0815AB32:
strh r0, [r5, 0x30]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x2E]
movs r2, 0x34
ldrsh r0, [r5, r2]
cmp r0, 0xFF
beq _0815AB46
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x34]
_0815AB46:
ldr r0, =sub_815AB5C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815AAA4
thumb_func_start sub_815AB5C
sub_815AB5C: @ 815AB5C
push {r4,lr}
adds r4, r0, 0
ldrh r2, [r4, 0x32]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815AB9A
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
bne _0815ABBA
adds r0, r2, 0x1
strh r0, [r4, 0x32]
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815ABBA
movs r0, 0x40
negs r0, r0
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xDE
bl PlaySE1WithPanning
b _0815ABBA
_0815AB9A:
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x30]
subs r0, r1
strh r0, [r4, 0x24]
movs r1, 0x24
ldrsh r0, [r4, r1]
cmp r0, 0
bge _0815ABAC
negs r0, r0
_0815ABAC:
cmp r0, 0xC
bne _0815ABBA
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
subs r0, r2, 0x1
strh r0, [r4, 0x32]
_0815ABBA:
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815ABC8
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815ABC8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815AB5C
thumb_func_start sub_815ABD0
sub_815ABD0: @ 815ABD0
push {lr}
ldrb r2, [r0, 0x1]
movs r1, 0xD
negs r1, r1
ands r1, r2
movs r2, 0x8
orrs r1, r2
strb r1, [r0, 0x1]
movs r1, 0xFF
strh r1, [r0, 0x34]
bl sub_815AAA4
pop {r0}
bx r0
thumb_func_end sub_815ABD0
thumb_func_start sub_815ABEC
sub_815ABEC: @ 815ABEC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815AC40
ldr r1, =0x00001f3f
movs r0, 0x48
bl SetGpuReg
2017-10-01 01:12:42 +02:00
ldr r1, =gBattle_WIN1H
2017-09-04 12:22:04 +02:00
ldr r2, =0x000098f0
adds r0, r2, 0
strh r0, [r1]
2017-10-01 01:12:42 +02:00
ldr r1, =gBattle_WIN1V
2017-09-04 12:22:04 +02:00
movs r0, 0xA0
strh r0, [r1]
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN0H
2017-09-04 12:22:04 +02:00
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN0V
2017-09-04 12:22:04 +02:00
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
b _0815AC70
.pool
_0815AC40:
ldr r1, =0x00001f3f
movs r0, 0x48
bl SetGpuReg
2017-10-01 01:12:42 +02:00
ldr r1, =gBattle_WIN1H
2017-09-04 12:22:04 +02:00
movs r0, 0xF0
strh r0, [r1]
2017-10-01 01:12:42 +02:00
ldr r4, =gBattle_WIN1V
2017-09-04 12:22:04 +02:00
ldr r1, =0x000078a0
adds r0, r1, 0
strh r0, [r4]
movs r0, 0x42
movs r1, 0xF0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x46
bl SetGpuReg
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
_0815AC70:
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815ABEC
thumb_func_start sub_815AC8C
sub_815AC8C: @ 815AC8C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, =0x00003f3f
movs r0, 0x48
bl SetGpuReg
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN1H
2017-09-04 12:22:04 +02:00
movs r1, 0
strh r1, [r0]
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN1V
2017-09-04 12:22:04 +02:00
strh r1, [r0]
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815ACB8
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl ClearGpuRegBits
_0815ACB8:
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815AC8C
thumb_func_start sub_815ACD0
sub_815ACD0: @ 815ACD0
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815ACEC
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815ACEE
.pool
_0815ACEC:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815ACEE:
ldrb r0, [r4]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
adds r0, r6
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r2, =gBattleAnimArgs
ldrh r0, [r2, 0x4]
strh r0, [r5, 0x26]
movs r3, 0
lsls r0, 16
asrs r0, 16
ldrh r4, [r2, 0x6]
movs r6, 0x6
ldrsh r1, [r2, r6]
cmp r0, r1
ble _0815AD26
movs r3, 0x1
_0815AD26:
strh r3, [r5, 0x2E]
movs r0, 0
strh r0, [r5, 0x30]
ldrh r0, [r2, 0x8]
strh r0, [r5, 0x32]
ldrh r0, [r2, 0xA]
strh r0, [r5, 0x34]
strh r4, [r5, 0x36]
ldr r0, =sub_815AD4C
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815ACD0
thumb_func_start sub_815AD4C
sub_815AD4C: @ 815AD4C
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x32]
ldrh r1, [r2, 0x30]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r2, 0x30]
ldr r1, =gSineTable
movs r3, 0x30
ldrsh r0, [r2, r3]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x34]
ldrh r3, [r2, 0x26]
adds r1, r0, r3
strh r1, [r2, 0x26]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
beq _0815AD98
lsls r0, r1, 16
asrs r0, 16
movs r3, 0x36
ldrsh r1, [r2, r3]
cmp r0, r1
bge _0815ADAA
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
b _0815ADAA
.pool
_0815AD98:
lsls r0, r1, 16
asrs r0, 16
movs r3, 0x36
ldrsh r1, [r2, r3]
cmp r0, r1
ble _0815ADAA
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815ADAA:
pop {r0}
bx r0
thumb_func_end sub_815AD4C
thumb_func_start sub_815ADB0
sub_815ADB0: @ 815ADB0
push {r4-r7,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815ADDC
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815ADDE
.pool
_0815ADDC:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815ADDE:
ldrb r0, [r4]
2018-10-06 23:04:53 +02:00
bl GetBattlerYCoordWithElevation
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
2017-10-15 23:21:59 +02:00
bl sub_80A8364
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
adds r0, r6, 0
adds r1, r0, 0
adds r1, 0x24
movs r2, 0
strh r1, [r5, 0x8]
strh r1, [r5, 0xA]
subs r0, 0x21
strh r0, [r5, 0xC]
cmp r0, 0
bge _0815AE08
strh r2, [r5, 0xC]
_0815AE08:
ldrh r0, [r5, 0x8]
strh r0, [r5, 0xE]
movs r0, 0x8
strh r0, [r5, 0x10]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x12]
strh r2, [r5, 0x14]
strh r2, [r5, 0x16]
cmp r7, 0x1
bne _0815AE30
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
b _0815AE32
.pool
_0815AE30:
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG2_X
2017-09-04 12:22:04 +02:00
_0815AE32:
ldrh r2, [r0]
strh r2, [r5, 0x18]
adds r3, r2, 0
adds r3, 0xF0
strh r3, [r5, 0x1A]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x1C]
movs r4, 0x4
ldrsh r0, [r1, r4]
cmp r0, 0
bne _0815AE54
strh r3, [r5, 0x1E]
ldrh r3, [r5, 0x18]
b _0815AE58
.pool
_0815AE54:
strh r2, [r5, 0x1E]
ldrh r3, [r5, 0x1A]
_0815AE58:
movs r0, 0
strh r0, [r5, 0x26]
ldrh r1, [r5, 0xC]
lsls r2, r1, 16
asrs r1, r2, 16
movs r6, 0xE
ldrsh r0, [r5, r6]
cmp r1, r0
bgt _0815AE8E
2018-01-29 17:47:12 +01:00
ldr r4, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
movs r0, 0xF0
lsls r0, 3
adds r0, r4
mov r12, r0
_0815AE74:
asrs r2, 16
lsls r1, r2, 1
adds r0, r1, r4
strh r3, [r0]
add r1, r12
strh r3, [r1]
adds r2, 0x1
lsls r2, 16
asrs r1, r2, 16
movs r6, 0xE
ldrsh r0, [r5, r6]
cmp r1, r0
ble _0815AE74
_0815AE8E:
cmp r7, 0x1
bne _0815AEA0
ldr r0, =0x04000014
b _0815AEA2
.pool
_0815AEA0:
ldr r0, =0x04000018
_0815AEA2:
str r0, [sp]
ldr r0, =0xa2600001
str r0, [sp, 0x4]
mov r1, sp
movs r2, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r2, [r0, 0x9]
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
2018-01-29 17:47:12 +01:00
bl ScanlineEffect_SetParams
2017-09-04 12:22:04 +02:00
ldr r0, =sub_815AED8
str r0, [r5]
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815ADB0
thumb_func_start sub_815AED8
sub_815AED8: @ 815AED8
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0x8]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0xC]
movs r3, 0xC
ldrsh r1, [r4, r3]
cmp r0, r1
bge _0815AF00
strh r2, [r4, 0x8]
_0815AF00:
ldrh r1, [r4, 0x10]
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0815AF2C
ldrh r0, [r4, 0xA]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0xC]
movs r3, 0xC
ldrsh r1, [r4, r3]
cmp r0, r1
bge _0815AF30
strh r2, [r4, 0xA]
movs r0, 0x1
strh r0, [r4, 0x26]
b _0815AF30
.pool
_0815AF2C:
subs r0, r1, 0x1
strh r0, [r4, 0x10]
_0815AF30:
ldrh r0, [r4, 0x14]
adds r0, 0x1
strh r0, [r4, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815AF5C
movs r0, 0
strh r0, [r4, 0x14]
movs r1, 0
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0815AF4E
movs r1, 0x1
_0815AF4E:
strh r1, [r4, 0x16]
cmp r1, 0
beq _0815AF58
ldrh r0, [r4, 0x18]
b _0815AF5A
_0815AF58:
ldrh r0, [r4, 0x1A]
_0815AF5A:
strh r0, [r4, 0x20]
_0815AF5C:
ldrh r1, [r4, 0x8]
lsls r3, r1, 16
asrs r1, r3, 16
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r1, r0
bge _0815AF90
2018-01-29 17:47:12 +01:00
ldr r5, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_0815AF72:
asrs r3, 16
lsls r1, r3, 1
adds r2, r1, r5
ldrh r0, [r4, 0x20]
strh r0, [r2]
adds r1, r6
ldrh r0, [r4, 0x20]
strh r0, [r1]
adds r3, 0x1
lsls r3, 16
asrs r1, r3, 16
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r1, r0
blt _0815AF72
_0815AF90:
ldrh r1, [r4, 0xA]
lsls r3, r1, 16
asrs r1, r3, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r1, r0
bgt _0815AFC4
2018-01-29 17:47:12 +01:00
ldr r5, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_0815AFA6:
asrs r3, 16
lsls r1, r3, 1
adds r2, r1, r5
ldrh r0, [r4, 0x1E]
strh r0, [r2]
adds r1, r6
ldrh r0, [r4, 0x1E]
strh r0, [r1]
adds r3, 0x1
lsls r3, 16
asrs r1, r3, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r1, r0
ble _0815AFA6
_0815AFC4:
movs r3, 0x26
ldrsh r0, [r4, r3]
cmp r0, 0
beq _0815AFE0
movs r1, 0x1C
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815AFDA
2018-01-29 17:47:12 +01:00
ldr r1, =gScanlineEffect
2017-09-04 12:22:04 +02:00
movs r0, 0x3
strb r0, [r1, 0x15]
_0815AFDA:
adds r0, r7, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815AFE0:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815AED8
thumb_func_start sub_815AFF0
sub_815AFF0: @ 815AFF0
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, =gTasks
adds r4, r0
movs r5, 0
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
2018-02-06 20:48:02 +01:00
ldr r6, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r6]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xC]
ldrb r0, [r6]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xE]
movs r0, 0x20
strh r0, [r4, 0x10]
ldr r0, =0x0000ffec
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
ldr r0, =sub_815B054
str r0, [r4]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815AFF0
thumb_func_start sub_815B054
sub_815B054: @ 815B054
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks
adds r6, r0, r1
movs r1, 0x8
ldrsh r0, [r6, r1]
cmp r0, 0x5
bls _0815B074
b _0815B22E
_0815B074:
lsls r0, 2
ldr r1, =_0815B088
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815B088:
.4byte _0815B0A0
.4byte _0815B160
.4byte _0815B18E
.4byte _0815B1A2
.4byte _0815B1B8
.4byte _0815B220
_0815B0A0:
movs r0, 0xC
ldrsh r2, [r6, r0]
ldrh r1, [r6, 0xA]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0815B0B6
movs r1, 0x10
ldrsh r0, [r6, r1]
subs r0, r2, r0
b _0815B0BC
_0815B0B6:
movs r1, 0x10
ldrsh r0, [r6, r1]
adds r0, r2, r0
_0815B0BC:
lsls r0, 16
lsrs r1, r0, 16
ldrh r2, [r6, 0x12]
ldrh r0, [r6, 0xE]
adds r2, r0
ldr r0, =gUnknown_08593114
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
ldrb r4, [r6, 0xA]
movs r3, 0x6
subs r3, r4
lsls r3, 24
lsrs r3, 24
bl CreateSprite
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x40
negs r0, r0
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xBA
bl PlaySE12WithPanning
cmp r4, 0x40
beq _0815B120
ldr r5, =gSprites
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r3, r1, r5
ldrh r0, [r6, 0xA]
movs r2, 0x1
ands r2, r0
adds r3, 0x3F
ldrb r4, [r3]
movs r0, 0x2
negs r0, r0
ands r0, r4
orrs r0, r2
strb r0, [r3]
adds r5, 0x1C
adds r1, r5
ldr r0, =SpriteCallbackDummy
str r0, [r1]
_0815B120:
ldrh r1, [r6, 0xA]
movs r4, 0x1
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _0815B138
ldrh r0, [r6, 0x10]
subs r0, 0x6
strh r0, [r6, 0x10]
ldrh r0, [r6, 0x12]
subs r0, 0x6
strh r0, [r6, 0x12]
_0815B138:
ldrh r1, [r6, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE2A0
adds r0, r6, 0
bl sub_80A7CFC
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
strh r4, [r6, 0x8]
b _0815B22E
.pool
_0815B160:
adds r0, r6, 0
bl sub_80A7D34
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0815B22E
movs r2, 0xA
ldrsh r1, [r6, r2]
cmp r1, 0x6
bne _0815B180
movs r0, 0x8
strh r0, [r6, 0x14]
movs r0, 0x3
strh r0, [r6, 0x8]
b _0815B22E
_0815B180:
cmp r1, 0x2
bgt _0815B186
movs r0, 0xA
_0815B186:
strh r0, [r6, 0x14]
movs r0, 0x2
strh r0, [r6, 0x8]
b _0815B22E
_0815B18E:
ldrh r0, [r6, 0x14]
movs r2, 0x14
ldrsh r1, [r6, r2]
cmp r1, 0
beq _0815B19E
subs r0, 0x1
strh r0, [r6, 0x14]
b _0815B22E
_0815B19E:
strh r1, [r6, 0x8]
b _0815B22E
_0815B1A2:
ldrh r1, [r6, 0x14]
movs r2, 0x14
ldrsh r0, [r6, r2]
cmp r0, 0
beq _0815B1B2
subs r0, r1, 0x1
strh r0, [r6, 0x14]
b _0815B22E
_0815B1B2:
movs r0, 0x4
strh r0, [r6, 0x8]
b _0815B22E
_0815B1B8:
movs r5, 0
movs r7, 0
ldr r3, =gSprites
movs r0, 0x1C
adds r0, r3
mov r8, r0
_0815B1C4:
lsls r0, r5, 4
adds r0, r5
lsls r4, r0, 2
adds r0, r3, 0
adds r0, 0x14
adds r0, r4, r0
ldr r1, [r0]
ldr r0, =gUnknown_08593114
cmp r1, r0
bne _0815B200
adds r0, r4, r3
strh r2, [r0, 0x2E]
movs r1, 0x6
strh r1, [r0, 0x30]
movs r1, 0x2
str r2, [sp]
str r3, [sp, 0x4]
bl StartSpriteAnim
mov r0, r8
adds r1, r4, r0
ldr r0, =sub_815B23C
str r0, [r1]
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
ldr r2, [sp]
ldr r3, [sp, 0x4]
cmp r7, 0x6
beq _0815B20A
_0815B200:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3F
bls _0815B1C4
_0815B20A:
strh r7, [r6, 0x14]
movs r0, 0x5
strh r0, [r6, 0x8]
b _0815B22E
.pool
_0815B220:
movs r1, 0x14
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815B22E
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815B22E:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815B054
thumb_func_start sub_815B23C
sub_815B23C: @ 815B23C
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0815B270
ldr r3, =gTasks
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x2E
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
_0815B270:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B23C
thumb_func_start sub_815B27C
sub_815B27C: @ 815B27C
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815B290
adds r0, r5, 0
movs r1, 0
2018-11-26 00:00:18 +01:00
bl InitAnimSpritePos
2017-09-04 12:22:04 +02:00
_0815B290:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
bgt _0815B2C2
ldrh r0, [r5, 0x2E]
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _0815B2B4
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
b _0815B2C0
_0815B2B4:
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
_0815B2C0:
strb r0, [r2]
_0815B2C2:
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0x1E
ble _0815B2D8
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_0815B2D8:
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x3D
bne _0815B324
2017-10-14 16:55:25 +02:00
ldr r1, =DestroyAnimSprite
2017-09-04 12:22:04 +02:00
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrh r0, [r5, 0x24]
ldrh r2, [r5, 0x20]
adds r0, r2
movs r1, 0
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x26]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
strh r1, [r5, 0x24]
strh r1, [r5, 0x26]
movs r0, 0x14
strh r0, [r5, 0x2E]
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
2018-11-26 00:00:18 +01:00
ldr r0, =StartAnimLinearTranslation
2017-09-04 12:22:04 +02:00
str r0, [r5, 0x1C]
_0815B324:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B27C
thumb_func_start sub_815B338
sub_815B338: @ 815B338
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815B35C
cmp r0, 0x1
beq _0815B37C
b _0815B38E
.pool
_0815B35C:
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE350
adds r0, r4, 0
bl sub_80A7CFC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815B38E
.pool
_0815B37C:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815B38E
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815B38E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815B338
thumb_func_start sub_815B394
sub_815B394: @ 815B394
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _0815B3F4
cmp r0, 0x1
bgt _0815B3B4
cmp r0, 0
beq _0815B3BE
b _0815B496
_0815B3B4:
cmp r0, 0x2
beq _0815B424
cmp r0, 0x3
beq _0815B478
b _0815B496
_0815B3BE:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
adds r0, r6, 0
movs r1, 0
bl sub_80A7270
movs r0, 0x80
lsls r0, 1
strh r0, [r5, 0x30]
strh r0, [r5, 0x32]
b _0815B46C
.pool
_0815B3F4:
ldrh r0, [r5, 0x30]
adds r0, 0x60
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
subs r0, 0x1A
strh r0, [r5, 0x32]
movs r2, 0x30
ldrsh r1, [r5, r2]
movs r0, 0x32
ldrsh r2, [r5, r0]
adds r0, r6, 0
movs r3, 0
bl obj_id_set_rotscale
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _0815B424
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
_0815B424:
ldrh r0, [r5, 0x30]
adds r0, 0x60
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
adds r0, 0x30
strh r0, [r5, 0x32]
movs r2, 0x30
ldrsh r1, [r5, r2]
movs r0, 0x32
ldrsh r2, [r5, r0]
adds r0, r6, 0
movs r3, 0
bl obj_id_set_rotscale
ldrh r0, [r5, 0x34]
adds r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _0815B496
movs r0, 0
strh r0, [r5, 0x34]
ldr r1, =gSprites
lsls r0, r6, 4
adds r0, r6
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 sub_80A7344
_0815B46C:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _0815B496
.pool
_0815B478:
ldrh r0, [r5, 0x26]
subs r0, 0x6
strh r0, [r5, 0x26]
movs r1, 0x22
ldrsh r0, [r5, r1]
movs r2, 0x26
ldrsh r1, [r5, r2]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _0815B496
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815B496:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_815B394
thumb_func_start sub_815B49C
sub_815B49C: @ 815B49C
push {r4,lr}
adds r4, r0, 0
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815B4BC
ldr r0, =0x0000fff0
b _0815B4C0
.pool
_0815B4BC:
movs r0, 0x80
lsls r0, 1
_0815B4C0:
strh r0, [r4, 0x20]
movs r0, 0
strh r0, [r4, 0x22]
ldr r0, =sub_815B4D4
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B49C
thumb_func_start sub_815B4D4
sub_815B4D4: @ 815B4D4
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x48
strh r0, [r4, 0x2E]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815B4F8
ldrh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 20
b _0815B500
.pool
_0815B4F8:
ldrh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 20
negs r0, r0
_0815B500:
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x30]
adds r0, 0x10
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r5, r0, r1
strh r5, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
movs r1, 0x3
bl __modsi3
lsls r0, 16
cmp r0, 0
bne _0815B54C
ldr r0, =gUnknown_085CE3A0
ldrh r1, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r1, r2
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x22]
adds r2, r5
lsls r2, 16
asrs r2, 16
adds r3, r4, 0
adds r3, 0x43
ldrb r3, [r3]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
bl CreateSpriteAndAnimate
_0815B54C:
movs r1, 0x20
ldrsh r0, [r4, r1]
movs r2, 0x24
ldrsh r1, [r4, r2]
adds r0, r1
adds r0, 0x20
movs r1, 0x98
lsls r1, 1
cmp r0, r1
bls _0815B566
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815B566:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B4D4
thumb_func_start sub_815B570
sub_815B570: @ 815B570
push {r4,lr}
adds r4, r0, 0
bl Random2
movs r1, 0x3
ands r0, r1
cmp r0, 0
bne _0815B58A
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x4
b _0815B592
_0815B58A:
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x5
_0815B592:
ldr r3, =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
bl Random2
movs r1, 0x7
ands r0, r1
adds r1, r0, 0
cmp r1, 0x3
ble _0815B5B4
negs r0, r1
lsls r0, 24
lsrs r0, 24
_0815B5B4:
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x26]
ldr r0, =sub_815B5D0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B570
thumb_func_start sub_815B5D0
sub_815B5D0: @ 815B5D0
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1D
bgt _0815B612
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _0815B646
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
movs r0, 0
b _0815B644
_0815B612:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x2
bne _0815B628
adds r2, r3, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_0815B628:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x3
bne _0815B640
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =0x0000ffff
strh r0, [r3, 0x30]
_0815B640:
ldrh r0, [r3, 0x30]
adds r0, 0x1
_0815B644:
strh r0, [r3, 0x30]
_0815B646:
movs r1, 0x2E
ldrsh r0, [r3, r1]
cmp r0, 0x3C
ble _0815B654
adds r0, r3, 0
bl DestroySprite
_0815B654:
pop {r0}
bx r0
.pool
thumb_func_end sub_815B5D0
thumb_func_start sub_815B65C
sub_815B65C: @ 815B65C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815B69C
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE3B8
adds r0, r4, 0
bl sub_80A7CFC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815B6AE
.pool
_0815B69C:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815B6AE
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815B6AE:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815B65C
thumb_func_start sub_815B6B4
sub_815B6B4: @ 815B6B4
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815B6F4
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE3E0
adds r0, r4, 0
bl sub_80A7CFC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815B706
.pool
_0815B6F4:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815B706
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815B706:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815B6B4
thumb_func_start sub_815B70C
sub_815B70C: @ 815B70C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815B71E
cmp r0, 0x1
beq _0815B748
b _0815B770
_0815B71E:
adds r0, r4, 0
movs r1, 0
2018-11-26 00:00:18 +01:00
bl InitAnimSpritePos
2017-09-04 12:22:04 +02:00
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815B770
.pool
_0815B748:
ldrh r2, [r4, 0x30]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x26]
subs r0, r1
strh r0, [r4, 0x26]
subs r2, 0x60
strh r2, [r4, 0x30]
movs r2, 0x22
ldrsh r0, [r4, r2]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
movs r2, 0x32
ldrsh r1, [r4, r2]
cmp r0, r1
ble _0815B770
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815B770:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815B70C
thumb_func_start sub_815B778
sub_815B778: @ 815B778
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815B7B8
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE430
adds r0, r4, 0
bl sub_80A7CFC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815B7CA
.pool
_0815B7B8:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815B7CA
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815B7CA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815B778
thumb_func_start sub_815B7D0
sub_815B7D0: @ 815B7D0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r1, =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r3, r1, 0
cmp r0, 0x4
bls _0815B7F6
b _0815BAFC
_0815B7F6:
lsls r0, 2
ldr r1, =_0815B808
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815B808:
.4byte _0815B81C
.4byte _0815B86C
.4byte _0815B8A8
.4byte _0815BA44
.4byte _0815BA82
_0815B81C:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2017-10-15 23:21:59 +02:00
bl sub_80A8364
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815B844
movs r0, 0x1
movs r1, 0x2
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
b _0815B84E
.pool
_0815B844:
movs r0, 0x2
movs r1, 0x2
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815B84E:
ldr r0, =gTasks
mov r6, r8
lsls r1, r6, 2
add r1, r8
lsls r1, 3
adds r1, r0
ldr r0, =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r1, 0x1C]
b _0815BA26
.pool
_0815B86C:
mov r1, r8
lsls r0, r1, 2
add r0, r8
lsls r0, 3
adds r4, r0, r3
ldrh r0, [r4, 0xC]
adds r1, r0, 0x1
strh r1, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bgt _0815B886
b _0815BAFC
_0815B886:
movs r0, 0
strh r0, [r4, 0xC]
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
ldrh r5, [r4, 0xA]
lsls r1, r5, 4
orrs r1, r5
lsls r1, 16
lsrs r1, 16
movs r0, 0x4C
bl SetGpuReg
cmp r5, 0xF
beq _0815B8A6
b _0815BAFC
_0815B8A6:
b _0815BA7A
_0815B8A8:
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
2018-02-06 20:48:02 +01:00
ldr r1, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r1, [r1]
mov r2, r8
lsls r4, r2, 2
adds r2, r4, r2
lsls r2, 3
adds r2, r3
ldrb r2, [r2, 0x1C]
2017-11-04 16:11:13 +01:00
bl HandleSpeciesGfxDataChange
2017-09-04 12:22:04 +02:00
ldrb r1, [r5]
mov r0, sp
bl sub_80A6BFC
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r9, r4
cmp r0, 0
beq _0815B8E0
movs r1, 0
b _0815B8EA
.pool
_0815B8E0:
ldrb r0, [r5]
2018-02-06 02:46:59 +01:00
bl GetBattlerPosition
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r1, r0, 24
_0815B8EA:
2017-10-01 01:12:42 +02:00
ldr r0, =gMonSpritesGfxPtr
2017-09-04 12:22:04 +02:00
ldr r2, [r0]
lsls r0, r1, 2
adds r2, 0x4
adds r2, r0
2017-09-11 11:35:41 +02:00
ldr r1, =gBattleMonForms
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r1, 11
ldr r0, [r2]
adds r0, r1
ldr r1, [sp]
ldr r2, =0x04000200
bl CpuSet
ldr r1, [sp]
movs r2, 0x80
lsls r2, 4
mov r0, sp
ldrh r3, [r0, 0xA]
movs r0, 0x1
bl LoadBgTiles
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815BA1C
2017-10-14 16:55:25 +02:00
ldr r5, =gContestResources
2017-09-04 12:22:04 +02:00
ldr r0, [r5]
ldr r0, [r0, 0x18]
ldrh r0, [r0]
2017-10-14 16:55:25 +02:00
bl IsSpeciesNotUnown
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
ldr r0, [r5]
ldr r0, [r0, 0x18]
ldrh r0, [r0, 0x2]
2017-10-14 16:55:25 +02:00
bl IsSpeciesNotUnown
2017-09-04 12:22:04 +02:00
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _0815B99C
ldr r6, [sp, 0x4]
movs r5, 0
movs r0, 0x7
mov r12, r0
movs r7, 0
_0815B950:
movs r4, 0
adds r3, r7, r6
mov r1, r12
lsls r0, r1, 1
adds r2, r0, r6
_0815B95A:
ldrh r1, [r3]
ldrh r0, [r2]
strh r0, [r3]
strh r1, [r2]
adds r3, 0x2
subs r2, 0x2
adds r4, 0x1
cmp r4, 0x3
ble _0815B95A
movs r2, 0x20
add r12, r2
adds r7, 0x40
adds r5, 0x1
cmp r5, 0x7
ble _0815B950
movs r5, 0
movs r0, 0x80
lsls r0, 3
adds r3, r0, 0
_0815B980:
adds r2, r5, 0x1
lsls r0, r5, 6
adds r1, r0, r6
movs r4, 0x7
_0815B988:
ldrh r0, [r1]
eors r0, r3
strh r0, [r1]
adds r1, 0x2
subs r4, 0x1
cmp r4, 0
bge _0815B988
adds r5, r2, 0
cmp r5, 0x7
ble _0815B980
_0815B99C:
2017-10-14 16:55:25 +02:00
ldr r0, =gContestResources
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r0, [r0, 0x2]
2017-10-14 16:55:25 +02:00
bl IsSpeciesNotUnown
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815B9EC
ldr r3, =gSprites
2018-02-06 20:48:02 +01:00
ldr r4, =gBattlerSpriteIds
ldr r2, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r3, 0
adds r1, 0x10
adds r0, r1
ldr r1, =gUnknown_082FF6C0
b _0815BA06
.pool
_0815B9EC:
ldr r3, =gSprites
2018-02-06 20:48:02 +01:00
ldr r4, =gBattlerSpriteIds
ldr r2, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r3, 0
adds r1, 0x10
adds r0, r1
ldr r1, =gUnknown_082FF694
_0815BA06:
str r1, [r0]
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
movs r1, 0
bl StartSpriteAffineAnim
_0815BA1C:
ldr r0, =gTasks
mov r1, r9
add r1, r8
lsls r1, 3
adds r1, r0
_0815BA26:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _0815BAFC
.pool
_0815BA44:
mov r1, r8
lsls r0, r1, 2
add r0, r8
lsls r0, 3
adds r4, r0, r3
ldrh r0, [r4, 0xC]
adds r1, r0, 0x1
strh r1, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815BAFC
movs r0, 0
strh r0, [r4, 0xC]
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
ldrh r5, [r4, 0xA]
lsls r1, r5, 4
orrs r1, r5
lsls r1, 16
lsrs r1, 16
movs r0, 0x4C
bl SetGpuReg
cmp r5, 0
bne _0815BAFC
_0815BA7A:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815BAFC
_0815BA82:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2017-10-15 23:21:59 +02:00
bl sub_80A8364
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815BAAC
movs r0, 0x1
movs r1, 0x2
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
b _0815BAB6
.pool
_0815BAAC:
movs r0, 0x2
movs r1, 0x2
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815BAB6:
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815BAF6
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815BAF6
ldr r0, =gTasks
mov r2, r8
lsls r1, r2, 2
add r1, r8
lsls r1, 3
adds r1, r0
movs r6, 0x1C
ldrsh r0, [r1, r6]
cmp r0, 0
bne _0815BAF6
ldrb r0, [r4]
2017-10-01 18:54:01 +02:00
ldr r1, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r1, [r1]
ldr r2, [r1]
lsls r1, r0, 2
adds r1, r2
ldrh r1, [r1, 0x2]
2018-02-06 20:48:02 +01:00
bl SetBattlerShadowSpriteCallback
2017-09-04 12:22:04 +02:00
_0815BAF6:
mov r0, r8
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815BAFC:
add sp, 0x10
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815B7D0
2017-12-31 16:28:57 +01:00
thumb_func_start sub_815BB18
sub_815BB18: @ 815BB18
2017-09-04 12:22:04 +02:00
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, =gBattleAnimArgs
ldr r3, =gSprites
2018-02-06 20:48:02 +01:00
ldr r2, =gBattlerSpriteIds
ldr r1, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r1, [r1]
adds r1, r2
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r3
adds r1, 0x3E
ldrb r1, [r1]
lsls r1, 29
lsrs r1, 31
strh r1, [r4, 0xE]
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
2017-12-31 16:28:57 +01:00
thumb_func_end sub_815BB18
2017-09-04 12:22:04 +02:00
thumb_func_start sub_815BB58
sub_815BB58: @ 815BB58
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 20:48:02 +01:00
ldr r1, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r1, [r1]
movs r2, 0x1
2017-11-04 16:11:13 +01:00
bl HandleSpeciesGfxDataChange
2017-09-04 12:22:04 +02:00
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815BB58
thumb_func_start sub_815BB84
sub_815BB84: @ 815BB84
push {r4,lr}
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
ldr r1, =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r2, r1, 0
cmp r0, 0x4
bls _0815BBA2
b _0815BDF2
_0815BBA2:
lsls r0, 2
ldr r1, =_0815BBB4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815BBB4:
.4byte _0815BBC8
.4byte _0815BCB8
.4byte _0815BD08
.4byte _0815BD72
.4byte _0815BDA6
_0815BBC8:
ldr r1, =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815BC02
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815BC02:
mov r0, sp
bl sub_80A6B30
ldr r1, =gUnknown_08C2A6EC
mov r0, sp
movs r2, 0
bl sub_80A6D60
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815BC34
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r3, =0x0000ffc8
b _0815BC5C
.pool
_0815BC34:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815BC58
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r2, =0x0000ff79
adds r0, r2, 0
b _0815BC5E
.pool
_0815BC58:
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r3, =0x0000fff6
_0815BC5C:
adds r0, r3, 0
_0815BC5E:
strh r0, [r1]
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
movs r0, 0
strh r0, [r1]
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, =gUnknown_08C2A634
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80A6CC0
ldr r0, =gUnknown_08C2A6D4
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
ldr r0, =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
strh r0, [r1, 0x1C]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
strh r0, [r1, 0x1E]
ldrh r0, [r1, 0x8]
adds r0, 0x1
b _0815BD8E
.pool
_0815BCB8:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0x10]
adds r1, r0, 0x1
strh r1, [r4, 0x10]
lsls r0, 16
cmp r0, 0
bgt _0815BCCE
b _0815BDF2
_0815BCCE:
movs r0, 0
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _0815BCE4
movs r0, 0xC
strh r0, [r4, 0xA]
_0815BCE4:
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0xC
bne _0815BDF2
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815BDF2
_0815BD08:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bge _0815BD20
movs r0, 0
strh r0, [r4, 0xA]
_0815BD20:
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0815BDF2
2017-09-26 22:39:59 +02:00
ldr r2, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r1, =gUnknown_085CE460
movs r3, 0xC
ldrsh r0, [r4, r3]
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r2]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _0815BD6C
strh r0, [r4, 0x8]
b _0815BDF2
.pool
_0815BD6C:
movs r0, 0x3
strh r0, [r4, 0x8]
b _0815BDF2
_0815BD72:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r0, [r1, 0xE]
adds r0, 0x1
strh r0, [r1, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _0815BDF2
movs r0, 0
strh r0, [r1, 0xE]
movs r0, 0x1
_0815BD8E:
strh r0, [r1, 0x8]
movs r0, 0x40
negs r0, r0
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xE4
bl PlaySE12WithPanning
b _0815BDF2
_0815BDA6:
mov r0, sp
bl sub_80A6B30
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_80A6C68
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815BDC8
movs r0, 0x1
movs r1, 0x3
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815BDC8:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
movs r1, 0
strh r1, [r0]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815BDF2:
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815BB84
thumb_func_start sub_815BE04
sub_815BE04: @ 815BE04
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r7, r0, 0
bl Random2
lsls r0, 16
movs r1, 0xFC
lsls r1, 14
ands r1, r0
lsrs r5, r1, 16
adds r1, r5, 0
cmp r1, 0x1F
ble _0815BE2E
movs r0, 0x20
subs r0, r1
lsls r0, 16
lsrs r5, r0, 16
_0815BE2E:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r0, r5
strh r0, [r7, 0x20]
ldrb r0, [r4]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
strh r0, [r7, 0x22]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r7, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r7, 0x32]
ldr r4, =gUnknown_085CE48C
movs r0, 0x20
ldrsh r1, [r7, r0]
movs r0, 0x22
ldrsh r2, [r7, r0]
adds r5, r7, 0
adds r5, 0x43
ldrb r3, [r5]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
bl CreateSprite
mov r9, r0
mov r1, r9
lsls r1, 24
lsrs r1, 24
mov r9, r1
movs r0, 0x20
ldrsh r1, [r7, r0]
movs r0, 0x22
ldrsh r2, [r7, r0]
ldrb r3, [r5]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
bl CreateSprite
mov r8, r0
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
mov r0, r9
lsls r2, r0, 4
add r2, r9
lsls r2, 2
ldr r1, =gSprites
mov r10, r1
adds r5, r2, r1
adds r0, r5, 0
movs r1, 0x1
str r2, [sp]
bl StartSpriteAnim
mov r0, r8
lsls r6, r0, 4
add r6, r8
lsls r6, 2
mov r1, r10
adds r4, r6, r1
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x32]
ldrh r0, [r1]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x32]
ldr r0, =0x0000ffff
strh r0, [r5, 0x3C]
movs r0, 0x1
negs r0, r0
strh r0, [r4, 0x3C]
adds r5, 0x3E
ldrb r0, [r5]
movs r1, 0x4
orrs r0, r1
strb r0, [r5]
adds r4, 0x3E
ldrb r0, [r4]
orrs r0, r1
strb r0, [r4]
movs r0, 0x1C
add r10, r0
ldr r2, [sp]
add r2, r10
ldr r0, =sub_815C050
str r0, [r2]
add r6, r10
str r0, [r6]
mov r1, r9
strh r1, [r7, 0x3A]
mov r0, r8
strh r0, [r7, 0x3C]
ldr r0, =sub_815BF44
str r0, [r7, 0x1C]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815BE04
thumb_func_start sub_815BF44
sub_815BF44: @ 815BF44
push {lr}
adds r3, r0, 0
ldrh r2, [r3, 0x32]
ldrh r0, [r3, 0x34]
adds r2, r0
lsls r0, r2, 16
asrs r0, 24
ldrh r1, [r3, 0x26]
subs r1, r0
strh r1, [r3, 0x26]
movs r0, 0xFF
ands r2, r0
strh r2, [r3, 0x34]
movs r2, 0x36
ldrsh r0, [r3, r2]
cmp r0, 0
bne _0815BF92
lsls r0, r1, 16
asrs r0, 16
movs r1, 0x8
negs r1, r1
cmp r0, r1
bge _0815BF92
ldr r2, =gSprites
movs r0, 0x3A
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldrh r0, [r3, 0x36]
adds r0, 0x1
strh r0, [r3, 0x36]
_0815BF92:
movs r1, 0x36
ldrsh r0, [r3, r1]
cmp r0, 0x1
bne _0815BFC6
movs r2, 0x26
ldrsh r1, [r3, r2]
movs r0, 0x10
negs r0, r0
cmp r1, r0
bge _0815BFC6
ldr r2, =gSprites
movs r0, 0x3C
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldrh r0, [r3, 0x36]
adds r0, 0x1
strh r0, [r3, 0x36]
_0815BFC6:
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0815BFE8
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815BFF4
str r0, [r3, 0x1C]
_0815BFE8:
pop {r0}
bx r0
.pool
thumb_func_end sub_815BF44
thumb_func_start sub_815BFF4
sub_815BFF4: @ 815BFF4
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, =gSprites
movs r0, 0x3A
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r3, r0, 2
adds r6, r5, 0
adds r6, 0x1C
adds r0, r3, r6
ldr r2, [r0]
ldr r0, =SpriteCallbackDummy
cmp r2, r0
bne _0815C040
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
ldr r0, [r1]
cmp r0, r2
bne _0815C040
adds r0, r3, r5
bl DestroySprite
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815C040:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815BFF4
thumb_func_start sub_815C050
sub_815C050: @ 815C050
push {lr}
adds r3, r0, 0
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _0815C09C
ldrh r2, [r3, 0x32]
ldrh r1, [r3, 0x34]
adds r2, r1
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r3, 0x26]
subs r0, r1
strh r0, [r3, 0x26]
movs r0, 0xFF
ands r2, r0
strh r2, [r3, 0x34]
ldrh r0, [r3, 0x30]
subs r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0815C09C
mov r1, r12
ldrb r0, [r1]
movs r1, 0x4
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldr r0, =SpriteCallbackDummy
str r0, [r3, 0x1C]
_0815C09C:
pop {r0}
bx r0
.pool
thumb_func_end sub_815C050
thumb_func_start sub_815C0A4
sub_815C0A4: @ 815C0A4
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 24
lsrs r6, r0, 24
ldr r1, =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r4, r1, 0
cmp r0, 0x5
bls _0815C0C2
b _0815C396
_0815C0C2:
lsls r0, 2
ldr r1, =_0815C0D4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815C0D4:
.4byte _0815C0EC
.4byte _0815C224
.4byte _0815C2AC
.4byte _0815C2E2
.4byte _0815C310
.4byte _0815C34A
_0815C0EC:
ldr r1, =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r1, =0x00000d03
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815C124
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815C124:
mov r0, sp
bl sub_80A6B30
ldr r1, =gUnknown_08C2A6EC
mov r0, sp
movs r2, 0
bl sub_80A6D60
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815C15C
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r3, =0x0000ffc8
adds r0, r3, 0
b _0815C1CA
.pool
_0815C15C:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerPosition
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r4, r0, 24
2017-10-09 18:18:40 +02:00
bl IsDoubleBattle
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815C1B4
cmp r4, 0x1
bne _0815C180
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r2, =0x0000ff65
adds r0, r2, 0
strh r0, [r1]
_0815C180:
cmp r4, 0x3
bne _0815C18C
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r3, =0x0000ff8d
adds r0, r3, 0
strh r0, [r1]
_0815C18C:
cmp r4, 0
bne _0815C196
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
movs r0, 0xE
strh r0, [r1]
_0815C196:
cmp r4, 0x2
bne _0815C1CC
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r2, =0x0000ffec
b _0815C1C8
.pool
_0815C1B4:
cmp r4, 0x1
bne _0815C1C0
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r3, =0x0000ff79
adds r0, r3, 0
strh r0, [r1]
_0815C1C0:
cmp r4, 0
bne _0815C1CC
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r2, =0x0000fff6
_0815C1C8:
adds r0, r2, 0
_0815C1CA:
strh r0, [r1]
_0815C1CC:
2017-09-26 22:39:59 +02:00
ldr r1, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
movs r0, 0
strh r0, [r1]
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, =gUnknown_08C2A634
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80A6CC0
ldr r0, =gUnknown_08C2A6D4
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
ldr r0, =gTasks
lsls r1, r6, 2
adds r1, r6
lsls r1, 3
adds r1, r0
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
strh r0, [r1, 0x1C]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
strh r0, [r1, 0x1E]
b _0815C2A4
.pool
_0815C224:
ldr r1, =gTasks
lsls r4, r6, 2
adds r0, r4, r6
lsls r0, 3
adds r5, r0, r1
movs r0, 0
strh r0, [r5, 0xE]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815C268
2017-09-26 22:39:59 +02:00
ldr r2, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r1, =gUnknown_085CE4A4
movs r3, 0xC
ldrsh r0, [r5, r3]
adds r0, r1
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
ldrh r5, [r5, 0x1C]
adds r0, r5
b _0815C27A
.pool
_0815C268:
2017-09-26 22:39:59 +02:00
ldr r2, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldr r1, =gUnknown_085CE4A4
movs r3, 0xC
ldrsh r0, [r5, r3]
adds r0, r1
movs r1, 0
ldrsb r1, [r0, r1]
ldrh r0, [r5, 0x1C]
subs r0, r1
_0815C27A:
strh r0, [r2]
ldr r0, =gTasks
adds r1, r4, r6
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0xC]
adds r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _0815C2A4
strh r0, [r1, 0x8]
b _0815C396
.pool
_0815C2A4:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _0815C396
_0815C2AC:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bgt _0815C2C6
movs r0, 0x5
strh r0, [r4, 0xA]
_0815C2C6:
ldrh r1, [r4, 0xA]
lsls r1, 8
movs r0, 0x3
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x5
bne _0815C396
b _0815C302
_0815C2E2:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r1, [r4, 0xE]
adds r1, 0x1
strh r1, [r4, 0xE]
lsls r1, 16
asrs r1, 16
ldr r2, =gUnknown_085CE4A8
movs r3, 0xC
ldrsh r0, [r4, r3]
adds r0, r2
ldrb r0, [r0]
cmp r1, r0
ble _0815C396
_0815C302:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815C396
.pool
_0815C310:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r4
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
ble _0815C32A
movs r0, 0xD
strh r0, [r4, 0xA]
_0815C32A:
ldrh r1, [r4, 0xA]
lsls r1, 8
movs r0, 0x3
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0xD
bne _0815C396
movs r0, 0x1
strh r0, [r4, 0x8]
b _0815C396
_0815C34A:
mov r0, sp
bl sub_80A6B30
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_80A6C68
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815C36C
movs r0, 0x1
movs r1, 0x3
movs r2, 0
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-04 12:22:04 +02:00
_0815C36C:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
2017-10-14 16:55:25 +02:00
bl SetAnimBgAttribute
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
movs r1, 0
strh r1, [r0]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r6, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815C396:
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815C0A4
thumb_func_start sub_815C3A8
sub_815C3A8: @ 815C3A8
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815C3E8
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE4B0
adds r0, r4, 0
bl sub_80A7CFC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815C3FA
.pool
_0815C3E8:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815C3FA
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815C3FA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815C3A8
thumb_func_start sub_815C400
sub_815C400: @ 815C400
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
movs r2, 0x2E
ldrsh r1, [r4, r2]
cmp r1, 0
bne _0815C41E
adds r0, r4, 0
movs r1, 0
2018-11-26 00:00:18 +01:00
bl InitAnimSpritePos
2017-09-04 12:22:04 +02:00
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815C472
_0815C41E:
adds r0, 0x1
strh r0, [r4, 0x2E]
cmp r1, 0x14
ble _0815C472
ldrh r0, [r4, 0x30]
adds r0, 0xA0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
adds r0, 0x80
strh r0, [r4, 0x32]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815C450
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
negs r0, r0
b _0815C456
.pool
_0815C450:
ldrh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 24
_0815C456:
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
lsls r0, 16
asrs r0, 16
cmp r0, 0x40
ble _0815C472
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815C472:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815C400
thumb_func_start sub_815C478
sub_815C478: @ 815C478
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
ldr r5, =gBattleAnimArgs
movs r1, 0x2
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815C4A4
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
b _0815C538
.pool
_0815C4A4:
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0
bge _0815C4B0
movs r0, 0
strh r0, [r5, 0x4]
_0815C4B0:
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0x2
ble _0815C4BC
movs r0, 0x2
strh r0, [r5, 0x4]
_0815C4BC:
movs r0, 0
strh r0, [r4, 0x8]
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
movs r0, 0x4
ldrsh r1, [r5, r0]
lsls r1, 1
movs r0, 0x8
subs r0, r1
strh r0, [r4, 0xE]
movs r1, 0x4
ldrsh r0, [r5, r1]
lsls r0, 7
movs r1, 0x80
lsls r1, 1
adds r0, r1
strh r0, [r4, 0x10]
ldrh r0, [r5, 0x4]
adds r0, 0x2
strh r0, [r4, 0x12]
ldrh r0, [r5, 0x2]
subs r0, 0x1
strh r0, [r4, 0x14]
ldrb r0, [r5]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815C508
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815C50A
.pool
_0815C508:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815C50A:
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815C528
movs r1, 0x10
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x10]
movs r1, 0x12
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x12]
_0815C528:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl sub_80A7270
ldr r0, =sub_815C548
str r0, [r4]
_0815C538:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815C478
thumb_func_start sub_815C548
sub_815C548: @ 815C548
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r6, [r4, r0]
cmp r6, 0x1
beq _0815C5D0
cmp r6, 0x1
bgt _0815C570
cmp r6, 0
beq _0815C57C
b _0815C6A8
.pool
_0815C570:
cmp r6, 0x2
beq _0815C628
cmp r6, 0x3
bne _0815C57A
b _0815C698
_0815C57A:
b _0815C6A8
_0815C57C:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x12]
ldrh r2, [r0, 0x24]
adds r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r4, 0xC]
ldrh r1, [r4, 0x10]
subs r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl obj_id_set_rotscale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A73A0
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r0, r1
blt _0815C6A8
strh r6, [r4, 0xA]
b _0815C690
.pool
_0815C5D0:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x24]
ldrh r2, [r4, 0x12]
subs r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r4, 0x10]
ldrh r1, [r4, 0xC]
adds r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl obj_id_set_rotscale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A73A0
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
lsls r1, 16
asrs r1, 16
movs r2, 0xE
ldrsh r0, [r4, r2]
lsls r0, 1
cmp r1, r0
blt _0815C6A8
movs r0, 0
strh r0, [r4, 0xA]
b _0815C690
.pool
_0815C628:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r4, 0x12]
ldrh r2, [r0, 0x24]
adds r1, r2
movs r5, 0
strh r1, [r0, 0x24]
ldrh r0, [r4, 0xC]
ldrh r1, [r4, 0x10]
subs r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r4, 0xC]
adds r1, r2, 0
bl obj_id_set_rotscale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A73A0
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r0, r1
blt _0815C6A8
ldrh r1, [r4, 0x14]
movs r2, 0x14
ldrsh r0, [r4, r2]
cmp r0, 0
beq _0815C690
subs r0, r1, 0x1
strh r0, [r4, 0x14]
strh r5, [r4, 0xA]
strh r5, [r4, 0x8]
b _0815C6A8
.pool
_0815C690:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815C6A8
_0815C698:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A7344
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815C6A8:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_815C548
thumb_func_start sub_815C6B0
sub_815C6B0: @ 815C6B0
push {r4,lr}
adds r4, r0, 0
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0815C6D4
strh r0, [r4, 0x20]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
b _0815C6DE
.pool
_0815C6D4:
movs r0, 0xF0
strh r0, [r4, 0x20]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
subs r0, 0x1E
_0815C6DE:
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldrb r1, [r1, 0x2]
adds r0, r4, 0
bl StartSpriteAnim
ldr r0, =sub_815C700
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815C6B0
thumb_func_start sub_815C700
sub_815C700: @ 815C700
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x3
strh r0, [r4, 0x2E]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815C744
ldrh r1, [r4, 0x20]
adds r1, 0x5
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x22]
subs r0, 0x1
strh r0, [r4, 0x22]
lsls r1, 16
asrs r1, 16
cmp r1, 0xF0
ble _0815C732
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815C732:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
ands r0, r1
movs r1, 0x10
bl Sin
b _0815C768
.pool
_0815C744:
ldrh r1, [r4, 0x20]
subs r1, 0x5
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x22]
adds r0, 0x1
strh r0, [r4, 0x22]
lsls r1, 16
cmp r1, 0
bge _0815C75C
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815C75C:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
ands r0, r1
movs r1, 0x10
bl Cos
_0815C768:
strh r0, [r4, 0x26]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815C700
thumb_func_start sub_815C770
sub_815C770: @ 815C770
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
strh r0, [r4, 0xE]
movs r0, 0x20
strh r0, [r4, 0x20]
movs r0, 0x40
strh r0, [r4, 0x22]
movs r0, 0x80
lsls r0, 4
strh r0, [r4, 0x24]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
movs r1, 0
bl sub_80A7270
ldr r0, =sub_815C7C4
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815C770
thumb_func_start sub_815C7C4
sub_815C7C4: @ 815C7C4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, =gTasks
adds r7, r0, r1
movs r1, 0x8
ldrsh r0, [r7, r1]
mov r8, r0
cmp r0, 0x1
beq _0815C860
cmp r0, 0x1
bgt _0815C7F4
cmp r0, 0
beq _0815C7FC
b _0815C8DA
.pool
_0815C7F4:
mov r2, r8
cmp r2, 0x2
beq _0815C8C8
b _0815C8DA
_0815C7FC:
movs r3, 0x80
lsls r3, 2
adds r0, r3, 0
ldrh r1, [r7, 0xC]
adds r2, r0, r1
strh r2, [r7, 0xC]
lsls r0, r2, 16
asrs r0, 16
ldrh r3, [r7, 0x24]
mov r8, r3
movs r3, 0x24
ldrsh r1, [r7, r3]
cmp r0, r1
blt _0815C8DA
mov r0, r8
subs r5, r0, r2
lsls r5, 16
asrs r5, 16
adds r6, r1, 0
lsls r6, 1
adds r0, r5, 0
adds r1, r6, 0
bl __divsi3
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
adds r1, r6, 0
bl __modsi3
lsls r0, 16
lsrs r0, 16
lsls r4, 16
asrs r4, 16
movs r1, 0x1
ands r4, r1
cmp r4, 0
bne _0815C854
lsls r0, 16
asrs r0, 16
mov r2, r8
subs r0, r2, r0
b _0815C8B2
_0815C854:
lsls r0, 16
asrs r0, 16
mov r3, r8
subs r0, r3
strh r0, [r7, 0xC]
b _0815C8DA
_0815C860:
ldr r1, =0xfffffe00
adds r0, r1, 0
ldrh r2, [r7, 0xC]
adds r1, r0, r2
strh r1, [r7, 0xC]
movs r3, 0xC
ldrsh r0, [r7, r3]
movs r2, 0x24
ldrsh r6, [r7, r2]
cmn r0, r6
bgt _0815C8DA
ldrh r3, [r7, 0x24]
mov r9, r3
mov r0, r9
subs r4, r0, r1
lsls r4, 16
asrs r4, 16
lsls r6, 1
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
adds r1, r6, 0
bl __modsi3
lsls r0, 16
lsrs r2, r0, 16
mov r1, r8
ands r1, r5
lsls r0, r1, 16
asrs r1, r0, 16
cmp r1, 0
bne _0815C8BC
lsls r0, r2, 16
asrs r0, 16
mov r2, r9
subs r0, r2
_0815C8B2:
strh r0, [r7, 0xC]
strh r1, [r7, 0x8]
b _0815C8DA
.pool
_0815C8BC:
lsls r0, r2, 16
asrs r0, 16
mov r3, r9
subs r0, r3, r0
strh r0, [r7, 0xC]
b _0815C8DA
_0815C8C8:
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A7344
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
b _0815C950
_0815C8DA:
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 1
ldrh r3, [r7, 0xC]
adds r1, r2, 0
bl obj_id_set_rotscale
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
bl sub_80A73A0
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0xC
ldrsh r0, [r7, r2]
cmp r0, 0
bge _0815C90E
adds r0, 0x3F
_0815C90E:
asrs r0, 6
negs r0, r0
strh r0, [r1, 0x24]
ldrh r0, [r7, 0xA]
adds r0, 0x1
strh r0, [r7, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _0815C950
ldrh r1, [r7, 0x20]
movs r3, 0x20
ldrsh r0, [r7, r3]
cmp r0, 0
beq _0815C94C
subs r0, r1, 0x1
strh r0, [r7, 0x20]
ldrh r0, [r7, 0x24]
ldrh r1, [r7, 0x22]
subs r0, r1
strh r0, [r7, 0x24]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
bgt _0815C950
movs r0, 0x10
strh r0, [r7, 0x24]
b _0815C950
.pool
_0815C94C:
movs r0, 0x2
strh r0, [r7, 0x8]
_0815C950:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815C7C4
thumb_func_start sub_815C95C
sub_815C95C: @ 815C95C
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815C9BC
ldr r6, =gBattleAnimArgs
movs r2, 0x4
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0815C990
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
_0815C990:
ldrh r0, [r6]
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x20]
ldrh r1, [r6, 0x2]
ldrh r2, [r5, 0x22]
adds r0, r1, r2
strh r0, [r5, 0x22]
movs r0, 0x80
strh r0, [r5, 0x30]
movs r0, 0xC0
lsls r0, 2
strh r0, [r5, 0x32]
strh r1, [r5, 0x34]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _0815CA1A
.pool
_0815C9BC:
ldrh r1, [r5, 0x30]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r2, [r5, 0x26]
adds r0, r2
strh r0, [r5, 0x26]
movs r2, 0x36
ldrsh r0, [r5, r2]
adds r4, r1, 0
cmp r0, 0
bne _0815C9FA
movs r0, 0x26
ldrsh r1, [r5, r0]
movs r2, 0x34
ldrsh r0, [r5, r2]
cmn r1, r0
ble _0815C9FA
movs r0, 0x1
strh r0, [r5, 0x36]
movs r1, 0x32
ldrsh r0, [r5, r1]
negs r0, r0
movs r1, 0x3
bl __divsi3
lsls r0, 1
strh r0, [r5, 0x32]
_0815C9FA:
adds r0, r4, 0
adds r0, 0xC0
strh r0, [r5, 0x30]
ldrh r0, [r5, 0x32]
adds r0, 0x80
strh r0, [r5, 0x32]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0815CA1A
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815CA1A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_815C95C
thumb_func_start sub_815CA20
sub_815CA20: @ 815CA20
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldr r1, =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r2, r0, r1
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0815CB2C
ldr r0, =gBattleAnimArgs
movs r3, 0
ldrsh r1, [r0, r3]
mov r8, r0
cmp r1, 0
bne _0815CA5C
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815CA5E
.pool
_0815CA5C:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815CA5E:
ldrb r0, [r0]
strh r0, [r2, 0x1E]
mov r1, r8
ldrb r0, [r1]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gTasks
lsls r4, r7, 2
adds r0, r4, r7
lsls r0, 3
adds r6, r0, r1
strh r5, [r6, 0x1C]
adds r0, r5, 0
movs r1, 0
bl sub_80A7270
mov r2, r8
movs r3, 0x2
ldrsh r0, [r2, r3]
cmp r0, 0x1
beq _0815CAC0
cmp r0, 0x1
bgt _0815CAA0
cmp r0, 0
beq _0815CAA8
lsls r2, r5, 4
b _0815CB08
.pool
_0815CAA0:
cmp r0, 0x2
beq _0815CACA
lsls r2, r5, 4
b _0815CB08
_0815CAA8:
movs r2, 0xA0
lsls r2, 1
adds r0, r5, 0
movs r1, 0xE0
movs r3, 0
bl obj_id_set_rotscale
adds r0, r5, 0
bl sub_80A7E6C
lsls r2, r5, 4
b _0815CB08
_0815CAC0:
movs r2, 0x98
lsls r2, 1
movs r3, 0xF0
lsls r3, 4
b _0815CAD2
_0815CACA:
movs r2, 0x98
lsls r2, 1
movs r3, 0xF1
lsls r3, 8
_0815CAD2:
adds r0, r5, 0
movs r1, 0xD0
bl obj_id_set_rotscale
adds r0, r5, 0
bl sub_80A7E6C
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815CAF8
ldrb r0, [r6, 0x1E]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsls r2, r5, 4
cmp r0, 0
bne _0815CB08
_0815CAF8:
ldr r0, =gSprites
lsls r2, r5, 4
adds r1, r2, r5
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x26]
adds r0, 0x10
strh r0, [r1, 0x26]
_0815CB08:
ldr r1, =gSprites
adds r0, r2, r5
lsls r0, 2
adds r0, r1
movs r1, 0x2
strh r1, [r0, 0x24]
ldr r0, =gTasks
adds r1, r4, r7
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _0815CB78
.pool
_0815CB2C:
ldrb r5, [r2, 0x1C]
ldrh r0, [r2, 0xC]
adds r0, 0x1
movs r4, 0
strh r0, [r2, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _0815CB50
strh r4, [r2, 0xC]
ldr r0, =gSprites
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x24]
negs r0, r0
strh r0, [r1, 0x24]
_0815CB50:
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
bne _0815CB78
adds r0, r5, 0
bl sub_80A7344
ldr r1, =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
strh r4, [r0, 0x24]
strh r4, [r0, 0x26]
adds r0, r7, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815CB78:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CA20
thumb_func_start sub_815CB88
sub_815CB88: @ 815CB88
push {r4,r5,lr}
adds r4, r0, 0
bl Random2
lsls r0, 16
lsrs r0, 16
movs r1, 0xC
bl __umodsi3
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, r0
ldr r3, =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
bl Random2
ldr r5, =0x000001ff
ands r5, r0
bl Random2
movs r1, 0xFF
ands r1, r0
movs r0, 0x1
ands r0, r5
cmp r0, 0
beq _0815CBE0
movs r2, 0xBC
lsls r2, 3
adds r0, r5, r2
b _0815CBE8
.pool
_0815CBE0:
movs r3, 0xBC
lsls r3, 3
adds r0, r3, 0
subs r0, r5
_0815CBE8:
strh r0, [r4, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0815CBFA
movs r2, 0x90
lsls r2, 3
adds r0, r1, r2
b _0815CC02
_0815CBFA:
movs r3, 0x90
lsls r3, 3
adds r0, r3, 0
subs r0, r1
_0815CC02:
strh r0, [r4, 0x30]
ldr r0, =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r4, 0x32]
lsls r0, 16
cmp r0, 0
bne _0815CC1C
ldr r0, =0x0000fff8
b _0815CC1E
.pool
_0815CC1C:
movs r0, 0xF8
_0815CC1E:
strh r0, [r4, 0x20]
movs r0, 0x68
strh r0, [r4, 0x22]
ldr r0, =sub_815CC34
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CB88
thumb_func_start sub_815CC34
sub_815CC34: @ 815CC34
push {r4,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815CC4C
ldrh r3, [r4, 0x2E]
lsls r0, r3, 16
asrs r0, 24
ldrh r1, [r4, 0x24]
adds r0, r1
b _0815CC56
_0815CC4C:
ldrh r3, [r4, 0x2E]
lsls r1, r3, 16
asrs r1, 24
ldrh r0, [r4, 0x24]
subs r0, r1
_0815CC56:
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]
adds r0, r3, 0
subs r0, 0x16
strh r0, [r4, 0x2E]
adds r1, r2, 0
subs r1, 0x30
strh r1, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bge _0815CC7A
movs r0, 0
strh r0, [r4, 0x2E]
_0815CC7A:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _0815CC8E
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815CC8E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815CC34
thumb_func_start sub_815CC94
sub_815CC94: @ 815CC94
push {r4,r5,lr}
adds r5, r0, 0
ldr r1, =0x00001f3f
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
2017-10-01 01:12:42 +02:00
ldr r0, =gBattle_WIN0H
2017-09-04 12:22:04 +02:00
movs r1, 0
strh r1, [r0]
2017-10-01 01:12:42 +02:00
ldr r4, =gBattle_WIN0V
2017-09-04 12:22:04 +02:00
strh r1, [r4]
movs r0, 0x40
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x44
bl SetGpuReg
ldr r0, =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
adds r0, r5, 0
movs r1, 0
bl sub_80A6980
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x8
orrs r0, r1
strb r0, [r5, 0x1]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, =sub_815CD0C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CC94
thumb_func_start sub_815CD0C
sub_815CD0C: @ 815CD0C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _0815CD4A
cmp r0, 0x1
bgt _0815CD22
cmp r0, 0
beq _0815CD2C
b _0815CDAA
_0815CD22:
cmp r0, 0x2
beq _0815CD60
cmp r0, 0x3
beq _0815CD82
b _0815CDAA
_0815CD2C:
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0815CDAA
b _0815CD7A
_0815CD4A:
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bne _0815CDAA
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
b _0815CD7A
_0815CD60:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0815CDAA
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_0815CD7A:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
b _0815CDAA
_0815CD82:
ldr r1, =0x00003f3f
movs r0, 0x4A
bl SetGpuReg
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
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815CDAA:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CD0C
thumb_func_start sub_815CDB4
sub_815CDB4: @ 815CDB4
push {r4,r5,lr}
adds r4, r0, 0
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
ldr r1, =sub_815CDFC
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CDB4
thumb_func_start sub_815CDFC
sub_815CDFC: @ 815CDFC
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 r2, 0x30
ldrsh r0, [r4, r2]
ldrh r1, [r4, 0x34]
lsls r1, 16
asrs r1, 24
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r0, 0x9
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
lsls r1, r0, 16
cmp r0, 0x3F
bls _0815CE36
asrs r0, r1, 16
cmp r0, 0xC3
ble _0815CE48
_0815CE36:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
b _0815CE52
.pool
_0815CE48:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
_0815CE52:
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
movs r3, 0x38
ldrsh r2, [r4, r3]
cmp r2, 0
bne _0815CE98
movs r1, 0x80
lsls r1, 3
adds r0, r1, 0
ldrh r3, [r4, 0x32]
adds r0, r3
strh r0, [r4, 0x32]
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r3, [r4, 0x34]
adds r0, r3
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
movs r3, 0x2E
ldrsh r1, [r4, r3]
cmp r0, r1
bne _0815CEC8
strh r2, [r4, 0x36]
movs r0, 0x1
strh r0, [r4, 0x38]
b _0815CEC8
.pool
_0815CE98:
cmp r2, 0x1
bne _0815CEC8
ldr r1, =0xfffffc00
adds r0, r1, 0
ldrh r2, [r4, 0x32]
adds r0, r2
strh r0, [r4, 0x32]
ldr r3, =0xffffff00
adds r0, r3, 0
ldrh r1, [r4, 0x34]
adds r0, r1
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
movs r2, 0x2E
ldrsh r1, [r4, r2]
cmp r0, r1
bne _0815CEC8
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815CEC8:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CDFC
thumb_func_start sub_815CED8
sub_815CED8: @ 815CED8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x18]
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815CF18
movs r0, 0x1
str r0, [sp, 0x1C]
2017-10-14 16:55:25 +02:00
ldr r0, =gContestResources
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldr r1, [r0, 0x10]
mov r9, r1
ldr r2, [r0, 0xC]
mov r8, r2
ldrh r6, [r0, 0x2]
movs r3, 0x14
b _0815D058
.pool
_0815CF18:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815CFC4
movs r0, 0
str r0, [sp, 0x1C]
2018-02-06 20:48:02 +01:00
ldr r6, =gBattlerPartyIndexes
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r7, =gPlayerParty
adds r0, r7
movs r1, 0
bl GetMonData
mov r9, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
movs r1, 0x1
bl GetMonData
mov r8, r0
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0815CFBC
adds r0, r2, 0
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815CF9C
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
b _0815CFAA
.pool
_0815CF9C:
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
ldr r1, =gEnemyParty
adds r0, r1
_0815CFAA:
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _0815CFBE
.pool
_0815CFBC:
ldrh r6, [r1, 0x2]
_0815CFBE:
movs r1, 0x14
mov r10, r1
b _0815D05A
_0815CFC4:
movs r2, 0x1
str r2, [sp, 0x1C]
2018-02-06 20:48:02 +01:00
ldr r6, =gBattlerPartyIndexes
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r7, =gEnemyParty
adds r0, r7
movs r1, 0
bl GetMonData
mov r9, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
movs r1, 0x1
bl GetMonData
mov r8, r0
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0815D054
adds r0, r2, 0
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815D03C
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
ldr r1, =gPlayerParty
adds r0, r1
b _0815D048
.pool
_0815D03C:
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r7
_0815D048:
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _0815D056
_0815D054:
ldrh r6, [r1, 0x2]
_0815D056:
ldr r3, =0x0000ffec
_0815D058:
mov r10, r3
_0815D05A:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
lsrs r7, r0, 24
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r2, r10
lsls r1, r2, 16
asrs r1, 16
adds r4, r1
lsls r4, 16
asrs r4, 16
lsrs r0, 24
str r0, [sp]
movs r0, 0x5
str r0, [sp, 0x4]
mov r3, r9
str r3, [sp, 0x8]
mov r0, r8
str r0, [sp, 0xC]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
str r0, [sp, 0x10]
movs r0, 0x1
str r0, [sp, 0x14]
adds r0, r6, 0
ldr r1, [sp, 0x1C]
movs r2, 0
adds r3, r4, 0
bl sub_80A8394
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
ldr r0, =gSprites
lsls r5, r6, 4
adds r5, r6
lsls r5, 2
adds r5, r0
movs r0, 0x3
ands r7, r0
lsls r7, 2
mov r8, r7
ldrb r0, [r5, 0x5]
movs r4, 0xD
negs r4, r4
adds r1, r4, 0
ands r1, r0
mov r2, r8
orrs r1, r2
strb r1, [r5, 0x5]
ldrb r2, [r5, 0x1]
adds r0, r4, 0
ands r0, r2
movs r2, 0x4
orrs r0, r2
strb r0, [r5, 0x1]
ldr r0, =0x00007fff
lsrs r1, 4
lsls r1, 4
movs r3, 0x80
lsls r3, 1
adds r2, r3, 0
orrs r1, r2
movs r2, 0x20
bl FillPalette
ldrb r0, [r5, 0x5]
ands r4, r0
mov r0, r8
orrs r4, r0
strb r4, [r5, 0x5]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldr r0, =gTasks
ldr r1, [sp, 0x18]
lsls r4, r1, 2
adds r4, r1
lsls r4, 3
adds r4, r0
ldrh r0, [r4, 0xA]
movs r1, 0x10
subs r1, r0
lsls r1, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
strh r6, [r4, 0x8]
ldr r0, =sub_815D160
str r0, [r4]
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815CED8
thumb_func_start sub_815D160
sub_815D160: @ 815D160
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
ldrh r0, [r4, 0x1C]
adds r1, r0, 0x1
strh r1, [r4, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815D1AE
movs r0, 0
strh r0, [r4, 0x1C]
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0xA
bne _0815D1AE
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x1C]
strh r0, [r4, 0x1E]
ldr r0, =sub_815D1BC
str r0, [r4]
_0815D1AE:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D160
thumb_func_start sub_815D1BC
sub_815D1BC: @ 815D1BC
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r5, r1, r2
ldrb r2, [r5, 0x8]
ldrh r0, [r5, 0x1C]
subs r0, 0x10
movs r4, 0
strh r0, [r5, 0x1C]
ldrh r0, [r5, 0x1E]
adds r0, 0x80
strh r0, [r5, 0x1E]
ldr r1, =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r6, r0, r1
ldrb r2, [r6, 0x1]
lsls r1, r2, 30
lsrs r1, 30
movs r0, 0x2
orrs r1, r0
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r6, 0x1]
movs r0, 0x1C
ldrsh r2, [r5, r0]
movs r0, 0x1E
ldrsh r3, [r5, r0]
str r4, [sp]
adds r0, r6, 0
movs r1, 0x1
bl sub_80A73E0
ldrh r0, [r5, 0x20]
adds r0, 0x1
strh r0, [r5, 0x20]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _0815D22A
adds r0, r6, 0
bl sub_80A749C
adds r0, r6, 0
bl sub_80A8610
ldr r0, =sub_80A6814
str r0, [r5]
_0815D22A:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D1BC
thumb_func_start sub_815D240
sub_815D240: @ 815D240
push {r4-r7,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815D26C
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815D26E
.pool
_0815D26C:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815D26E:
ldrb r5, [r0]
movs r6, 0
strh r6, [r4, 0x8]
strh r6, [r4, 0xA]
strh r6, [r4, 0xC]
movs r0, 0x10
strh r0, [r4, 0xE]
strh r6, [r4, 0x10]
strh r5, [r4, 0x12]
movs r0, 0x20
strh r0, [r4, 0x14]
strh r6, [r4, 0x16]
movs r0, 0x18
strh r0, [r4, 0x18]
adds r0, r5, 0
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815D2A0
movs r1, 0x18
ldrsh r0, [r4, r1]
negs r0, r0
strh r0, [r4, 0x18]
_0815D2A0:
adds r0, r5, 0
2018-10-06 23:04:53 +02:00
bl GetBattlerYCoordWithElevation
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
subs r0, 0x22
strh r0, [r4, 0x22]
cmp r0, 0
bge _0815D2B4
strh r6, [r4, 0x22]
_0815D2B4:
ldrh r0, [r4, 0x22]
adds r0, 0x42
strh r0, [r4, 0x24]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
adds r0, r5, 0
2017-10-15 23:21:59 +02:00
bl sub_80A8364
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815D304
ldr r0, =0x04000014
str r0, [sp]
ldr r1, =0x00003f42
movs r0, 0x50
bl SetGpuReg
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldrh r5, [r0]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
b _0815D316
.pool
_0815D304:
ldr r0, =0x04000018
str r0, [sp]
ldr r1, =0x00003f44
movs r0, 0x50
bl SetGpuReg
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG2_X
2017-09-04 12:22:04 +02:00
ldrh r5, [r0]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG2_Y
2017-09-04 12:22:04 +02:00
_0815D316:
ldrh r3, [r0]
movs r7, 0
movs r2, 0
2018-01-29 17:47:12 +01:00
ldr r6, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
movs r0, 0xF0
lsls r0, 3
adds r0, r6
mov r12, r0
_0815D326:
lsls r2, 16
asrs r2, 16
lsls r1, r2, 1
adds r0, r1, r6
strh r5, [r0]
add r1, r12
strh r5, [r1]
adds r0, r2, 0x1
lsls r0, 1
adds r1, r0, r6
strh r3, [r1]
add r0, r12
strh r3, [r0]
lsls r0, r7, 16
movs r1, 0x80
lsls r1, 9
adds r0, r1
adds r2, 0x2
lsls r2, 16
lsrs r2, 16
lsrs r7, r0, 16
asrs r0, 16
cmp r0, 0x9F
ble _0815D326
ldr r0, =0xa6600001
str r0, [sp, 0x4]
mov r1, sp
movs r2, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r2, [r0, 0x9]
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
2018-01-29 17:47:12 +01:00
bl ScanlineEffect_SetParams
2017-09-04 12:22:04 +02:00
ldr r0, =sub_815D398
str r0, [r4]
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D240
thumb_func_start sub_815D398
sub_815D398: @ 815D398
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, =gTasks
adds r6, r0, r1
ldrb r0, [r6, 0x12]
2017-10-15 23:21:59 +02:00
bl sub_80A8364
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815D3D8
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_X
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
str r0, [sp, 0x4]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG1_Y
2017-09-04 12:22:04 +02:00
b _0815D3E0
.pool
_0815D3D8:
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG2_X
2017-09-04 12:22:04 +02:00
ldrh r0, [r0]
str r0, [sp, 0x4]
2017-09-26 22:39:59 +02:00
ldr r0, =gBattle_BG2_Y
2017-09-04 12:22:04 +02:00
_0815D3E0:
ldrh r0, [r0]
str r0, [sp, 0x8]
movs r1, 0x8
ldrsh r0, [r6, r1]
cmp r0, 0x1
bne _0815D3EE
b _0815D5CC
_0815D3EE:
cmp r0, 0x1
bgt _0815D400
cmp r0, 0
beq _0815D40E
b _0815D63C
.pool
_0815D400:
cmp r0, 0x2
bne _0815D406
b _0815D5EC
_0815D406:
cmp r0, 0x3
bne _0815D40C
b _0815D636
_0815D40C:
b _0815D63C
_0815D40E:
movs r2, 0x24
ldrsh r0, [r6, r2]
lsls r0, 17
lsrs r5, r0, 16
movs r3, 0
str r3, [sp]
mov r9, r3
movs r4, 0
ldrh r0, [r6, 0xA]
adds r0, 0x2
movs r1, 0xFF
ands r0, r1
strh r0, [r6, 0xA]
ldrh r7, [r6, 0xA]
mov r8, r7
movs r0, 0x14
ldrsh r1, [r6, r0]
movs r0, 0xFC
lsls r0, 3
bl __divsi3
strh r0, [r6, 0x1A]
movs r1, 0x16
ldrsh r0, [r6, r1]
lsls r0, 1
movs r2, 0x1A
ldrsh r1, [r6, r2]
bl __divsi3
negs r0, r0
strh r0, [r6, 0x1C]
ldrh r0, [r6, 0x16]
strh r0, [r6, 0x1E]
lsls r0, 16
asrs r0, 21
lsls r0, 16
lsrs r7, r0, 16
strh r7, [r6, 0x20]
ldrh r2, [r6, 0x24]
lsls r3, r2, 16
mov r12, r3
asrs r1, r3, 16
movs r3, 0x22
ldrsh r0, [r6, r3]
cmp r1, r0
ble _0815D52E
2018-01-29 17:47:12 +01:00
ldr r0, =gScanlineEffect
2017-09-04 12:22:04 +02:00
mov r10, r0
ldr r1, [sp, 0x4]
lsls r0, r1, 16
asrs r0, 16
str r0, [sp, 0x10]
ldr r2, [sp, 0x8]
lsls r0, r2, 16
asrs r0, 16
str r0, [sp, 0xC]
_0815D47E:
lsls r5, 16
asrs r5, 16
adds r2, r5, 0x1
lsls r2, 1
mov r3, r10
ldrb r1, [r3, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
2018-01-29 17:47:12 +01:00
ldr r0, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
adds r2, r0
lsls r4, 16
asrs r4, 16
mov r1, r9
lsls r0, r1, 16
asrs r0, 16
subs r0, r4, r0
ldr r3, [sp, 0xC]
adds r0, r3, r0
strh r0, [r2]
lsls r3, r5, 1
mov r0, r10
ldrb r1, [r0, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r3, r0
2018-01-29 17:47:12 +01:00
ldr r1, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
adds r3, r1
lsls r1, r7, 16
asrs r1, 16
ldr r2, [sp, 0x10]
adds r1, r2, r1
mov r7, r8
lsls r2, r7, 16
asrs r2, 16
lsls r0, r2, 1
ldr r7, =gSineTable
adds r0, r7
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
adds r1, r0
strh r1, [r3]
adds r2, 0xA
mov r8, r2
movs r0, 0xFF
mov r1, r8
ands r1, r0
mov r8, r1
ldrh r0, [r6, 0x1C]
ldrh r2, [r6, 0x1E]
adds r0, r2
strh r0, [r6, 0x1E]
lsls r0, 16
asrs r0, 21
lsls r0, 16
lsrs r7, r0, 16
strh r7, [r6, 0x20]
adds r4, 0x1
lsls r4, 16
lsrs r4, 16
subs r5, 0x2
lsls r5, 16
lsrs r5, 16
ldr r3, [sp]
lsls r0, r3, 16
asrs r0, 16
ldrh r1, [r6, 0x14]
adds r0, r1
lsls r0, 16
lsrs r2, r0, 16
str r2, [sp]
asrs r0, 21
lsls r0, 16
lsrs r0, 16
mov r9, r0
ldr r0, =0xffff0000
add r0, r12
lsrs r2, r0, 16
lsls r3, r2, 16
mov r12, r3
asrs r1, r3, 16
movs r3, 0x22
ldrsh r0, [r6, r3]
cmp r1, r0
bgt _0815D47E
_0815D52E:
lsls r1, r2, 17
cmp r1, 0
blt _0815D55A
2018-01-29 17:47:12 +01:00
ldr r4, =gScanlineEffectRegBuffers
2017-09-04 12:22:04 +02:00
ldr r7, [sp, 0x4]
lsls r0, r7, 16
asrs r0, 16
adds r3, r0, 0
adds r3, 0xF0
movs r0, 0xF0
lsls r0, 3
adds r5, r4, r0
_0815D546:
asrs r2, r1, 16
lsls r1, r2, 1
adds r0, r1, r4
strh r3, [r0]
adds r1, r5
strh r3, [r1]
subs r2, 0x2
lsls r1, r2, 16
cmp r1, 0
bge _0815D546
_0815D55A:
ldrh r0, [r6, 0x14]
adds r0, 0x1
strh r0, [r6, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3F
ble _0815D5C2
movs r0, 0x40
strh r0, [r6, 0x14]
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0815D594
ldrh r0, [r6, 0xE]
subs r0, 0x1
strh r0, [r6, 0xE]
b _0815D59A
.pool
_0815D594:
ldrh r0, [r6, 0x10]
adds r0, 0x1
strh r0, [r6, 0x10]
_0815D59A:
ldrh r1, [r6, 0x10]
lsls r1, 8
ldrh r0, [r6, 0xE]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xE
ldrsh r1, [r6, r2]
cmp r1, 0
bne _0815D63C
movs r3, 0x10
ldrsh r0, [r6, r3]
cmp r0, 0x10
bne _0815D63C
strh r1, [r6, 0xC]
strh r1, [r6, 0xE]
b _0815D62E
_0815D5C2:
ldrh r0, [r6, 0x18]
ldrh r7, [r6, 0x16]
adds r0, r7
strh r0, [r6, 0x16]
b _0815D63C
_0815D5CC:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _0815D63C
2018-01-29 17:47:12 +01:00
ldr r1, =gScanlineEffect
2017-09-04 12:22:04 +02:00
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0
strh r0, [r6, 0xC]
b _0815D62E
.pool
_0815D5EC:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0815D602
ldrh r0, [r6, 0xE]
adds r0, 0x1
strh r0, [r6, 0xE]
b _0815D608
_0815D602:
ldrh r0, [r6, 0x10]
subs r0, 0x1
strh r0, [r6, 0x10]
_0815D608:
ldrh r1, [r6, 0x10]
lsls r1, 8
ldrh r0, [r6, 0xE]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xE
ldrsh r0, [r6, r1]
cmp r0, 0x10
bne _0815D63C
movs r2, 0x10
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0815D63C
strh r0, [r6, 0xC]
strh r0, [r6, 0xE]
_0815D62E:
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
b _0815D63C
_0815D636:
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815D63C:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815D398
thumb_func_start sub_815D64C
sub_815D64C: @ 815D64C
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, =gUnknown_085CE5F0
adds r0, r4, 0
bl sub_80A7CFC
ldr r0, =sub_815D694
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D64C
thumb_func_start sub_815D694
sub_815D694: @ 815D694
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r2, =gTasks
adds r3, r0, r2
ldrh r0, [r3, 0x8]
adds r1, r0, 0x1
movs r5, 0
strh r1, [r3, 0x8]
subs r0, 0x14
lsls r0, 16
lsrs r0, 16
adds r6, r2, 0
cmp r0, 0x16
bhi _0815D6F8
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815D708
strh r5, [r3, 0xA]
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
movs r5, 0x1
ands r0, r5
cmp r0, 0
bne _0815D6F8
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, =0x0000ffff
strh r1, [r0, 0x24]
b _0815D708
.pool
_0815D6F8:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
_0815D708:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r6
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _0815D720
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815D720:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D694
thumb_func_start sub_815D72C
sub_815D72C: @ 815D72C
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r5, r2, 0
adds r0, r3, 0
ldr r4, [sp, 0x14]
ldr r6, [sp, 0x18]
lsls r1, 16
lsrs r1, 16
lsls r5, 16
lsrs r5, 16
lsls r4, 16
lsrs r4, 16
lsls r6, 16
lsrs r6, 16
mov r2, r8
strh r1, [r2, 0x20]
strh r5, [r2, 0x22]
lsls r1, 16
asrs r1, 16
lsls r2, r1, 4
mov r3, r8
strh r2, [r3, 0x36]
lsls r5, 16
asrs r5, 16
lsls r2, r5, 4
strh r2, [r3, 0x38]
lsls r0, 16
asrs r0, 16
subs r0, r1
lsls r0, 4
adds r1, r6, 0
bl __divsi3
mov r1, r8
strh r0, [r1, 0x3A]
lsls r4, 16
asrs r4, 16
subs r4, r5
lsls r4, 4
adds r0, r4, 0
adds r1, r6, 0
bl __divsi3
mov r2, r8
strh r0, [r2, 0x3C]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_815D72C
thumb_func_start sub_815D794
sub_815D794: @ 815D794
ldrh r1, [r0, 0x3A]
ldrh r2, [r0, 0x36]
adds r1, r2
strh r1, [r0, 0x36]
ldrh r2, [r0, 0x3C]
ldrh r3, [r0, 0x38]
adds r2, r3
strh r2, [r0, 0x38]
lsls r1, 16
asrs r1, 20
strh r1, [r0, 0x20]
lsls r2, 16
asrs r2, 20
strh r2, [r0, 0x22]
bx lr
thumb_func_end sub_815D794
thumb_func_start sub_815D7B4
sub_815D7B4: @ 815D7B4
push {r4-r6,lr}
sub sp, 0x8
adds r4, r0, 0
ldrh r6, [r4, 0x20]
ldrh r5, [r4, 0x22]
bl sub_80A6838
ldr r0, =gBattleAnimArgs
ldrb r1, [r0]
adds r0, r4, 0
bl StartSpriteAffineAnim
movs r0, 0x20
ldrsh r1, [r4, r0]
movs r0, 0x22
ldrsh r2, [r4, r0]
lsls r6, 16
asrs r6, 16
lsls r5, 16
asrs r5, 16
str r5, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
adds r0, r4, 0
adds r3, r6, 0
bl sub_815D72C
movs r0, 0
strh r0, [r4, 0x2E]
ldr r0, =sub_815D804
str r0, [r4, 0x1C]
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D7B4
thumb_func_start sub_815D804
sub_815D804: @ 815D804
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
movs r0, 0x2E
ldrsh r4, [r5, r0]
lsls r4, 3
movs r0, 0xFF
ands r4, r0
adds r0, r5, 0
bl sub_815D794
adds r0, r4, 0
movs r1, 0x8
bl Sin
strh r0, [r5, 0x26]
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x3A
ble _0815D86A
ldrh r0, [r5, 0x30]
adds r0, 0x1
strh r0, [r5, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815D86A
movs r0, 0
strh r0, [r5, 0x30]
ldrh r1, [r5, 0x32]
adds r1, 0x1
strh r1, [r5, 0x32]
movs r0, 0x1
ands r1, r0
adds r3, r5, 0
adds r3, 0x3E
lsls r1, 2
ldrb r2, [r3]
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r1, 0x32
ldrsh r0, [r5, r1]
cmp r0, 0x3
ble _0815D86A
adds r0, r5, 0
bl move_anim_8074EE0
_0815D86A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815D804
thumb_func_start sub_815D870
sub_815D870: @ 815D870
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r5, 0x2E]
ldrb r1, [r6]
adds r0, r5, 0
bl StartSpriteAffineAnim
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815D896
ldrh r0, [r6, 0x2]
negs r0, r0
strh r0, [r6, 0x2]
_0815D896:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
adds r0, r6
strh r0, [r5, 0x22]
ldr r0, =sub_810E2C8
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D870
thumb_func_start sub_815D8D8
sub_815D8D8: @ 815D8D8
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r5, r0, 24
movs r7, 0
ldr r2, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x8]
subs r0, 0x1
strh r0, [r3, 0x8]
movs r1, 0x14
ldrsh r0, [r3, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r8, r2
cmp r0, 0
beq _0815D95A
ldrh r0, [r3, 0xA]
subs r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0815D95A
movs r2, 0x1A
ldrsh r0, [r3, r2]
cmp r0, 0
bne _0815D92C
ldrh r0, [r3, 0x10]
strh r0, [r3, 0x1A]
negs r0, r0
strh r0, [r3, 0x10]
b _0815D92E
.pool
_0815D92C:
strh r7, [r3, 0x1A]
_0815D92E:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
mov r2, r8
adds r1, r0, r2
movs r2, 0x1C
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0815D94A
ldrh r0, [r1, 0x12]
strh r0, [r1, 0x1C]
negs r0, r0
strh r0, [r1, 0x12]
b _0815D94E
_0815D94A:
movs r0, 0
strh r0, [r1, 0x1C]
_0815D94E:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
add r0, r8
ldrh r1, [r0, 0x22]
strh r1, [r0, 0xA]
_0815D95A:
lsls r2, r5, 2
adds r0, r2, r5
lsls r0, 3
mov r1, r8
adds r4, r0, r1
ldrh r6, [r4, 0x16]
ldrh r7, [r4, 0x18]
movs r1, 0xC
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r12, r2
cmp r0, 0
beq _0815D998
ldr r3, =gSprites
movs r2, 0x26
ldrsh r0, [r4, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
lsrs r2, r6, 8
ldrh r0, [r4, 0x1A]
subs r0, r2
strh r0, [r1, 0x24]
adds r2, r3, 0
b _0815D9AE
.pool
_0815D998:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
lsrs r1, r6, 8
ldrh r4, [r4, 0x1A]
adds r1, r4
strh r1, [r0, 0x24]
_0815D9AE:
mov r1, r12
adds r0, r1, r5
lsls r0, 3
mov r1, r8
adds r4, r0, r1
movs r1, 0xE
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0815D9E0
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r2, r7, 8
ldrh r0, [r4, 0x1C]
subs r0, r2
b _0815D9F2
.pool
_0815D9E0:
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r0, r7, 8
ldrh r4, [r4, 0x1C]
adds r0, r4
_0815D9F2:
strh r0, [r1, 0x26]
mov r2, r12
adds r0, r2, r5
lsls r0, 3
add r0, r8
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0
bgt _0815DA12
adds r0, r5, 0
bl DestroyTask
ldr r1, =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
_0815DA12:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815D8D8
thumb_func_start sub_815DA20
sub_815DA20: @ 815DA20
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
movs r7, 0
ldr r2, =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x8]
subs r0, 0x1
strh r0, [r3, 0x8]
movs r1, 0x14
ldrsh r0, [r3, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r8, r2
cmp r0, 0
beq _0815DAA6
ldrh r0, [r3, 0xA]
subs r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0815DAA6
movs r2, 0x1A
ldrsh r0, [r3, r2]
cmp r0, 0
bne _0815DA78
ldrh r0, [r3, 0x10]
strh r0, [r3, 0x1A]
negs r0, r0
strh r0, [r3, 0x10]
b _0815DA7A
.pool
_0815DA78:
strh r7, [r3, 0x1A]
_0815DA7A:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
mov r2, r8
adds r1, r0, r2
movs r2, 0x1C
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0815DA96
ldrh r0, [r1, 0x12]
strh r0, [r1, 0x1C]
negs r0, r0
strh r0, [r1, 0x12]
b _0815DA9A
_0815DA96:
movs r0, 0
strh r0, [r1, 0x1C]
_0815DA9A:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
add r0, r8
ldrh r1, [r0, 0x22]
strh r1, [r0, 0xA]
_0815DAA6:
lsls r3, r6, 2
adds r0, r3, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
ldrh r2, [r4, 0xC]
ldr r1, =0x00007fff
adds r0, r1, 0
ands r0, r2
ldrh r2, [r4, 0x16]
adds r0, r2
lsls r5, r0, 16
lsrs r0, r5, 16
mov r9, r0
ldrh r0, [r4, 0xE]
ands r1, r0
ldrh r2, [r4, 0x18]
adds r1, r2
lsls r1, 16
lsrs r7, r1, 16
movs r1, 0xC
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
mov r12, r3
cmp r0, 0
beq _0815DB00
ldr r3, =gSprites
movs r2, 0x26
ldrsh r0, [r4, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
lsrs r2, r5, 24
ldrh r0, [r4, 0x1A]
subs r0, r2
strh r0, [r1, 0x24]
adds r2, r3, 0
b _0815DB16
.pool
_0815DB00:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
lsrs r1, r5, 24
ldrh r4, [r4, 0x1A]
adds r1, r4
strh r1, [r0, 0x24]
_0815DB16:
mov r1, r12
adds r0, r1, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
movs r1, 0xE
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0815DB48
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r2, r7, 8
ldrh r0, [r4, 0x1C]
subs r0, r2
b _0815DB5A
.pool
_0815DB48:
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
lsrs r0, r7, 8
ldrh r4, [r4, 0x1C]
adds r0, r4
_0815DB5A:
strh r0, [r1, 0x26]
mov r2, r12
adds r0, r2, r6
lsls r0, 3
mov r1, r8
adds r2, r0, r1
mov r0, r9
strh r0, [r2, 0x16]
strh r7, [r2, 0x18]
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0
bgt _0815DB80
movs r0, 0x1E
strh r0, [r2, 0x8]
movs r0, 0
strh r0, [r2, 0x22]
ldr r0, =sub_815D8D8
str r0, [r2]
_0815DB80:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DA20
thumb_func_start sub_815DB90
sub_815DB90: @ 815DB90
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r6, r0, 24
ldr r0, =gTasks
mov r8, r0
lsls r7, r6, 2
adds r0, r7, r6
lsls r0, 3
mov r1, r8
adds r4, r0, r1
2018-02-06 20:48:02 +01:00
ldr r1, =gBattlerSpriteIds
ldr r2, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x26]
ldr r5, =gBattleAnimArgs
ldrh r0, [r5]
strh r0, [r4, 0x24]
ldrh r0, [r5]
strh r0, [r4, 0x8]
ldrh r0, [r5, 0xC]
strh r0, [r4, 0x22]
movs r3, 0x6
ldrsh r0, [r5, r3]
cmp r0, 0
beq _0815DBD4
ldrh r0, [r4, 0x14]
ldr r3, =0xffff8000
adds r1, r3, 0
orrs r0, r1
strh r0, [r4, 0x14]
_0815DBD4:
ldrb r0, [r2]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815DC04
ldrh r0, [r5, 0x2]
strh r0, [r4, 0xC]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0xE]
mov r3, r8
adds r4, r7, 0
b _0815DC74
.pool
_0815DC04:
movs r7, 0x2
ldrsh r0, [r5, r7]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0815DC20
ldrh r1, [r5, 0x2]
ldr r0, =0x00007fff
ands r0, r1
b _0815DC28
.pool
_0815DC20:
ldrh r0, [r5, 0x2]
ldr r2, =0xffff8000
adds r1, r2, 0
orrs r0, r1
_0815DC28:
strh r0, [r4, 0xC]
ldr r0, =gBattleAnimArgs
movs r3, 0x4
ldrsh r1, [r0, r3]
movs r2, 0x80
lsls r2, 8
ands r1, r2
adds r5, r0, 0
cmp r1, 0
beq _0815DC60
ldr r3, =gTasks
lsls r4, r6, 2
adds r1, r4, r6
lsls r1, 3
adds r1, r3
ldrh r2, [r5, 0x4]
ldr r0, =0x00007fff
ands r0, r2
b _0815DC72
.pool
_0815DC60:
ldr r3, =gTasks
lsls r4, r6, 2
adds r1, r4, r6
lsls r1, 3
adds r1, r3
ldrh r2, [r5, 0x4]
ldr r7, =0xffff8000
adds r0, r7, 0
orrs r0, r2
_0815DC72:
strh r0, [r1, 0xE]
_0815DC74:
adds r0, r4, r6
lsls r0, 3
adds r0, r3
movs r1, 0
strh r1, [r0, 0x18]
strh r1, [r0, 0x16]
ldrh r1, [r5, 0x8]
strh r1, [r0, 0x10]
ldrh r1, [r5, 0xA]
strh r1, [r0, 0x12]
ldr r1, =sub_815DA20
str r1, [r0]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DB90
thumb_func_start sub_815DCA4
sub_815DCA4: @ 815DCA4
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
ldr r4, =gBattleAnimArgs
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815DCC4
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815DCC4:
movs r0, 0
strh r0, [r5, 0x8]
strh r0, [r5, 0xA]
strh r0, [r5, 0xC]
ldrh r0, [r4, 0x2]
strh r0, [r5, 0xE]
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815DCE8
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815DCEA
.pool
_0815DCE8:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815DCEA:
ldrb r4, [r0]
adds r0, r4, 0
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
adds r0, r4, 0
bl sub_80A82E4
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r5, 0x26]
ldr r2, =gUnknown_085CE74C
adds r0, r5, 0
bl sub_80A7CFC
ldr r0, =sub_815DD48
str r0, [r5]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DCA4
thumb_func_start sub_815DD48
sub_815DD48: @ 815DD48
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815DD6C
cmp r0, 0x1
beq _0815DDCC
b _0815DDDA
.pool
_0815DD6C:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _0815DD82
adds r0, r5, 0
movs r1, 0x1
bl sub_815DDE0
_0815DD82:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x12
bne _0815DD92
adds r0, r5, 0
movs r1, 0
bl sub_815DDE0
_0815DD92:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _0815DDDA
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
cmp r0, 0
bne _0815DDB4
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815DDDA
_0815DDB4:
strh r1, [r4, 0xA]
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE74C
adds r0, r4, 0
bl sub_80A7CFC
b _0815DDDA
.pool
_0815DDCC:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815DDDA
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815DDDA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815DD48
thumb_func_start sub_815DDE0
sub_815DDE0: @ 815DDE0
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xC
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r2, =gTasks
adds r4, r0, r2
cmp r1, 0
bne _0815DE08
movs r1, 0x12
movs r3, 0xEC
b _0815DE0C
.pool
_0815DE08:
movs r1, 0x1E
movs r3, 0x14
_0815DE0C:
mov r2, sp
ldrh r0, [r4, 0x10]
subs r0, r1
strh r0, [r2]
ldrh r0, [r4, 0x10]
subs r0, r1
subs r0, 0x4
strh r0, [r2, 0x2]
ldrh r0, [r4, 0x10]
adds r0, r1
strh r0, [r2, 0x4]
ldrh r0, [r4, 0x10]
adds r0, r1
adds r0, 0x4
strh r0, [r2, 0x6]
add r2, sp, 0x8
lsls r1, r3, 24
asrs r1, 24
ldrh r0, [r4, 0x12]
adds r0, r1
strh r0, [r2]
ldrh r0, [r4, 0x12]
adds r0, r1
adds r0, 0x6
strh r0, [r2, 0x2]
movs r5, 0
mov r8, r2
ldr r7, =gSprites
_0815DE44:
lsls r0, r5, 1
add r0, sp
movs r2, 0
ldrsh r1, [r0, r2]
movs r0, 0x1
ands r0, r5
lsls r0, 1
add r0, r8
movs r3, 0
ldrsh r2, [r0, r3]
ldrb r3, [r4, 0x14]
subs r3, 0x5
lsls r3, 24
lsrs r3, 24
ldr r0, =gUnknown_085CE76C
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _0815DE98
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r7
movs r0, 0
strh r0, [r1, 0x2E]
movs r0, 0x2
cmp r5, 0x1
bhi _0815DE86
movs r2, 0x2
negs r2, r2
adds r0, r2, 0
_0815DE86:
strh r0, [r1, 0x30]
ldr r0, =0x0000ffff
strh r0, [r1, 0x32]
strh r6, [r1, 0x34]
movs r0, 0x2
strh r0, [r1, 0x36]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
_0815DE98:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x3
bls _0815DE44
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DDE0
thumb_func_start sub_815DEBC
sub_815DEBC: @ 815DEBC
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x32]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
ble _0815DF02
ldr r3, =gTasks
movs r0, 0x36
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x34
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
_0815DF02:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DEBC
thumb_func_start sub_815DF0C
sub_815DF0C: @ 815DF0C
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
movs r0, 0
strh r0, [r4, 0x8]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xA]
ldrb r0, [r1]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x5]
lsrs r0, 4
lsls r0, 4
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
adds r0, r1
strh r0, [r4, 0xC]
ldr r0, =sub_815DF64
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815DF0C
thumb_func_start sub_815DF64
sub_815DF64: @ 815DF64
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815DFB4
ldrh r0, [r4, 0xC]
ldr r2, =gUnknown_085CE784
movs r3, 0x8
ldrsh r1, [r4, r3]
lsls r1, 1
adds r1, r2
ldrh r3, [r1]
movs r1, 0x10
movs r2, 0x8
bl BlendPalette
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x17
ble _0815DFA4
movs r0, 0
strh r0, [r4, 0x8]
_0815DFA4:
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
b _0815DFC6
.pool
_0815DFB4:
ldrh r0, [r4, 0xC]
movs r1, 0x10
movs r2, 0
movs r3, 0
bl BlendPalette
adds r0, r5, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815DFC6:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815DF64
thumb_func_start sub_815DFCC
sub_815DFCC: @ 815DFCC
push {lr}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
movs r2, 0xD0
lsls r2, 1
2018-02-06 20:48:02 +01:00
ldr r1, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r3, [r1]
ldr r1, =gBattleAnimArgs
ldrb r1, [r1]
str r1, [sp]
movs r1, 0xA
str r1, [sp, 0x4]
movs r1, 0x2
str r1, [sp, 0x8]
movs r1, 0x1E
str r1, [sp, 0xC]
ldr r1, =gUnknown_08C2DC68
str r1, [sp, 0x10]
ldr r1, =gUnknown_08C2DDC4
str r1, [sp, 0x14]
ldr r1, =gUnknown_08C2DDA4
str r1, [sp, 0x18]
movs r1, 0
bl sub_8117854
add sp, 0x1C
pop {r0}
bx r0
.pool
thumb_func_end sub_815DFCC
thumb_func_start sub_815E01C
sub_815E01C: @ 815E01C
push {r4-r6,lr}
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r6, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r6]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815E038
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
negs r0, r0
strh r0, [r1]
_0815E038:
ldrb r0, [r6]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r4]
adds r0, r1
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
adds r0, r1
strh r0, [r5, 0x22]
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815E080
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
ldr r0, =0x0000fd80
strh r0, [r5, 0x30]
b _0815E0A8
.pool
_0815E080:
cmp r0, 0x1
bne _0815E09A
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x2
orrs r0, r1
strb r0, [r2]
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
strh r0, [r5, 0x30]
b _0815E0A8
_0815E09A:
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
movs r0, 0xA0
lsls r0, 2
strh r0, [r5, 0x2E]
_0815E0A8:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815E0C8
ldrh r0, [r5, 0x2E]
negs r0, r0
strh r0, [r5, 0x2E]
adds r2, r5, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_0815E0C8:
ldr r0, =sub_815E0DC
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E01C
thumb_func_start sub_815E0DC
sub_815E0DC: @ 815E0DC
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x3A]
adds r0, r1
strh r0, [r2, 0x3A]
ldrh r1, [r2, 0x30]
ldrh r3, [r2, 0x3C]
adds r1, r3
strh r1, [r2, 0x3C]
lsls r0, 16
asrs r0, 24
strh r0, [r2, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r2, 0x26]
ldrh r0, [r2, 0x38]
adds r0, 0x1
strh r0, [r2, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xE
bne _0815E110
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815E110:
pop {r0}
bx r0
thumb_func_end sub_815E0DC
thumb_func_start sub_815E114
sub_815E114: @ 815E114
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r6, r1, r0
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _0815E144
movs r0, 0x8
strh r0, [r6, 0x12]
movs r0, 0x3
strh r0, [r6, 0x14]
movs r0, 0x1
strh r0, [r6, 0x16]
b _0815E14E
.pool
_0815E144:
movs r0, 0xC
strh r0, [r6, 0x12]
movs r0, 0x3
strh r0, [r6, 0x14]
strh r1, [r6, 0x16]
_0815E14E:
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815E188
ldrb r0, [r5]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_80A861C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _0815E17C
adds r0, 0x3
_0815E17C:
asrs r0, 2
adds r0, r4, r0
b _0815E1AC
.pool
_0815E188:
ldrb r0, [r5]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_80A861C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _0815E1A8
adds r0, 0x3
_0815E1A8:
asrs r0, 2
subs r0, r4, r0
_0815E1AC:
strh r0, [r6, 0x1E]
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
bl sub_80A861C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _0815E1D0
adds r0, 0x3
_0815E1D0:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x20]
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x24]
ldr r0, =sub_815E20C
str r0, [r6]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E114
thumb_func_start sub_815E20C
sub_815E20C: @ 815E20C
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
movs r0, 0x8
ldrsh r1, [r5, r0]
cmp r1, 0
beq _0815E238
cmp r1, 0x1
bne _0815E230
b _0815E330
_0815E230:
b _0815E33E
.pool
_0815E238:
ldrh r0, [r5, 0xA]
adds r0, 0x1
strh r0, [r5, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _0815E33E
strh r1, [r5, 0xA]
movs r1, 0x1E
ldrsh r0, [r5, r1]
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r3, 0x22
ldrsh r2, [r5, r3]
movs r4, 0x24
ldrsh r3, [r5, r4]
ldrb r4, [r5, 0x12]
str r4, [sp]
ldrb r4, [r5, 0xC]
str r4, [sp, 0x4]
add r4, sp, 0x10
str r4, [sp, 0x8]
adds r4, 0x2
str r4, [sp, 0xC]
bl sub_815E34C
movs r6, 0
mov r8, r4
ldr r4, =gSprites
_0815E272:
add r0, sp, 0x10
movs r2, 0
ldrsh r1, [r0, r2]
mov r3, r8
movs r0, 0
ldrsh r2, [r3, r0]
ldr r0, =gUnknown_085CE7EC
movs r3, 0x23
bl CreateSprite
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x40
beq _0815E306
movs r1, 0x16
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815E2C6
cmp r6, 0
bne _0815E2B4
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
negs r0, r0
strh r0, [r1, 0x26]
strh r0, [r1, 0x24]
b _0815E2EE
.pool
_0815E2B4:
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x26]
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x24]
b _0815E2EE
_0815E2C6:
cmp r6, 0
bne _0815E2DC
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
negs r0, r0
strh r0, [r1, 0x24]
ldrh r0, [r5, 0x14]
b _0815E2EC
_0815E2DC:
lsls r2, r3, 4
adds r1, r2, r3
lsls r1, 2
adds r1, r4
ldrh r0, [r5, 0x14]
strh r0, [r1, 0x24]
ldrh r0, [r5, 0x14]
negs r0, r0
_0815E2EC:
strh r0, [r1, 0x26]
_0815E2EE:
ldr r1, =gSprites
adds r0, r2, r3
lsls r0, 2
adds r0, r1
movs r1, 0
strh r1, [r0, 0x2E]
strh r7, [r0, 0x30]
movs r1, 0xA
strh r1, [r0, 0x32]
ldrh r0, [r5, 0x1C]
adds r0, 0x1
strh r0, [r5, 0x1C]
_0815E306:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x1
bls _0815E272
ldrh r2, [r5, 0xC]
movs r3, 0xC
ldrsh r1, [r5, r3]
movs r4, 0x12
ldrsh r0, [r5, r4]
cmp r1, r0
bne _0815E324
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_0815E324:
adds r0, r2, 0x1
strh r0, [r5, 0xC]
b _0815E33E
.pool
_0815E330:
movs r1, 0x1C
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815E33E
adds r0, r7, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815E33E:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815E20C
thumb_func_start sub_815E34C
sub_815E34C: @ 815E34C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r4, [sp, 0x28]
ldr r5, [sp, 0x2C]
ldr r6, [sp, 0x30]
mov r9, r6
ldr r6, [sp, 0x34]
mov r10, r6
lsls r0, 16
lsrs r0, 16
mov r12, r0
lsls r1, 16
lsrs r1, 16
str r1, [sp]
lsls r2, 16
lsrs r2, 16
adds r7, r2, 0
lsls r3, 16
lsrs r3, 16
str r3, [sp, 0x4]
lsls r4, 24
lsrs r6, r4, 24
lsls r5, 24
lsrs r5, 24
mov r8, r5
cmp r5, 0
bne _0815E394
mov r2, r9
strh r0, [r2]
mov r6, r10
strh r1, [r6]
b _0815E3F2
_0815E394:
cmp r5, r6
bcc _0815E3A2
mov r0, r9
strh r2, [r0]
mov r1, r10
strh r3, [r1]
b _0815E3F2
_0815E3A2:
subs r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
mov r2, r12
lsls r1, r2, 16
asrs r1, 16
lsls r5, r1, 8
lsls r0, r7, 16
asrs r0, 16
subs r0, r1
lsls r0, 8
adds r1, r6, 0
bl __divsi3
mov r1, r8
muls r1, r0
adds r0, r1, 0
adds r5, r0
ldr r2, [sp]
lsls r1, r2, 16
asrs r1, 16
lsls r4, r1, 8
ldr r2, [sp, 0x4]
lsls r0, r2, 16
asrs r0, 16
subs r0, r1
lsls r0, 8
adds r1, r6, 0
bl __divsi3
mov r6, r8
muls r6, r0
adds r0, r6, 0
adds r4, r0
asrs r5, 8
mov r0, r9
strh r5, [r0]
asrs r4, 8
mov r1, r10
strh r4, [r1]
_0815E3F2:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815E34C
thumb_func_start sub_815E404
sub_815E404: @ 815E404
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x24
ble _0815E43A
ldr r3, =gTasks
movs r0, 0x32
ldrsh r1, [r4, r0]
lsls r1, 1
movs r0, 0x30
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
_0815E43A:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E404
thumb_func_start sub_815E444
sub_815E444: @ 815E444
push {r4,lr}
adds r4, r0, 0
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x36]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
2017-10-14 16:55:25 +02:00
ldr r1, =DestroyAnimSprite
2017-09-04 12:22:04 +02:00
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A70C0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E444
thumb_func_start sub_815E47C
sub_815E47C: @ 815E47C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r0, 2
add r0, r9
lsls r0, 3
ldr r1, =gTasks
adds r7, r0, r1
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x1E]
mov r1, r10
ldrb r0, [r1]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
mov r1, r8
ldrb r0, [r1]
movs r1, 0
bl sub_80A861C
lsls r4, 24
lsrs r4, 24
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _0815E4EE
adds r0, 0x3
_0815E4EE:
asrs r0, 2
adds r0, r4, r0
strh r0, [r7, 0x24]
ldr r4, =gUnknown_085CE84C
movs r0, 0x1E
ldrsh r5, [r7, r0]
movs r1, 0x20
ldrsh r6, [r7, r1]
mov r1, r8
ldrb r0, [r1]
bl sub_80A82E4
adds r3, r0, 0
subs r3, 0x5
lsls r3, 24
lsrs r3, 24
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x26]
cmp r0, 0x40
beq _0815E5B8
ldr r4, =gSprites
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x10
strh r1, [r0, 0x2E]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r7, 0x22]
strh r1, [r0, 0x32]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r7, 0x24]
strh r1, [r0, 0x36]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, =0x0000ffe0
strh r1, [r0, 0x38]
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
2018-11-26 00:00:18 +01:00
bl InitAnimArcTranslation
2017-09-04 12:22:04 +02:00
mov r1, r10
ldrb r0, [r1]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815E596
movs r0, 0x26
ldrsh r1, [r7, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x1
bl StartSpriteAffineAnim
_0815E596:
ldr r0, =sub_815E5CC
str r0, [r7]
b _0815E5BE
.pool
_0815E5B8:
mov r0, r9
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815E5BE:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_815E47C
thumb_func_start sub_815E5CC
sub_815E5CC: @ 815E5CC
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _0815E634
cmp r1, 0x1
bgt _0815E5F4
cmp r1, 0
beq _0815E5FE
b _0815E6D2
.pool
_0815E5F4:
cmp r1, 0x2
beq _0815E658
cmp r1, 0x3
beq _0815E6CC
b _0815E6D2
_0815E5FE:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815E6D2
strh r1, [r4, 0xA]
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
2018-10-06 23:04:53 +02:00
bl TranslateAnimArc
2017-09-04 12:22:04 +02:00
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _0815E6D2
b _0815E6BE
.pool
_0815E634:
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
2018-10-06 23:04:53 +02:00
bl TranslateAnimArc
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815E6D2
movs r0, 0
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
b _0815E6BE
.pool
_0815E658:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815E6D2
movs r0, 0
strh r0, [r4, 0xA]
ldrh r2, [r4, 0xC]
adds r2, 0x1
strh r2, [r4, 0xC]
ldr r5, =gSprites
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
movs r0, 0x1
ands r2, r0
adds r1, 0x3E
lsls r2, 2
ldrb r3, [r1]
subs r0, 0x6
ands r0, r3
orrs r0, r2
strb r0, [r1]
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _0815E6D2
movs r0, 0x26
ldrsh r1, [r4, 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
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
_0815E6BE:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815E6D2
.pool
_0815E6CC:
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815E6D2:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815E5CC
thumb_func_start sub_815E6D8
sub_815E6D8: @ 815E6D8
push {r4-r6,lr}
adds r4, r0, 0
ldr r0, =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r6, r0, 0
cmp r1, 0
bne _0815E6F4
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815E6F6
.pool
_0815E6F4:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815E6F6:
ldrb r5, [r0]
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r3, =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
adds r1, r6, 0
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x3A]
movs r2, 0x2
ldrsh r0, [r1, r2]
movs r1, 0x1
cmp r0, 0
bne _0815E724
movs r3, 0x1
negs r3, r3
adds r1, r3, 0
_0815E724:
strh r1, [r4, 0x3C]
adds r0, r5, 0
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
movs r1, 0x2
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815E768
ldrb r2, [r4, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
orrs r1, r0
lsls r1, 1
subs r0, 0x47
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x3]
adds r0, r5, 0
movs r1, 0x4
bl sub_80A861C
subs r0, 0x8
b _0815E772
.pool
_0815E768:
adds r0, r5, 0
movs r1, 0x5
bl sub_80A861C
adds r0, 0x8
_0815E772:
strh r0, [r4, 0x20]
ldr r0, =sub_815E784
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E6D8
thumb_func_start sub_815E784
sub_815E784: @ 815E784
push {lr}
adds r2, r0, 0
movs r0, 0x2E
ldrsh r1, [r2, r0]
cmp r1, 0x1
beq _0815E7CC
cmp r1, 0x1
bgt _0815E79A
cmp r1, 0
beq _0815E7A4
b _0815E83C
_0815E79A:
cmp r1, 0x2
beq _0815E7DC
cmp r1, 0x3
beq _0815E802
b _0815E83C
_0815E7A4:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815E83C
strh r1, [r2, 0x30]
ldrh r0, [r2, 0x3C]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x32]
adds r0, 0x1
strh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
bne _0815E83C
b _0815E7FA
_0815E7CC:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
bne _0815E83C
b _0815E7F6
_0815E7DC:
movs r0, 0x3C
ldrsh r1, [r2, r0]
lsls r1, 2
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _0815E83C
_0815E7F6:
movs r0, 0
strh r0, [r2, 0x30]
_0815E7FA:
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
b _0815E83C
_0815E802:
movs r0, 0x3C
ldrsh r1, [r2, r0]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
bne _0815E83C
ldrh r0, [r2, 0x3A]
subs r0, 0x1
strh r0, [r2, 0x3A]
lsls r0, 16
cmp r0, 0
beq _0815E836
movs r0, 0
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x2E]
subs r0, 0x1
strh r0, [r2, 0x2E]
b _0815E83C
_0815E836:
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815E83C:
pop {r0}
bx r0
thumb_func_end sub_815E784
thumb_func_start sub_815E840
sub_815E840: @ 815E840
push {r4,lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r2, =gBattleAnimArgs
movs r3, 0
ldrsh r0, [r2, r3]
cmp r0, 0
bne _0815E85C
adds r0, r1, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
b _0815E884
.pool
_0815E85C:
ldr r0, =gTasks
lsls r4, r1, 2
adds r4, r1
lsls r4, 3
adds r4, r0
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x8]
ldrb r0, [r2]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, =gUnknown_085CE87C
adds r0, r4, 0
bl sub_80A7CFC
ldr r0, =sub_815E898
str r0, [r4]
_0815E884:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E840
thumb_func_start sub_815E898
sub_815E898: @ 815E898
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815E8F2
movs r0, 0
strh r0, [r4, 0xA]
ldrh r1, [r4, 0xC]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0815E8E0
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2
b _0815E8F0
.pool
_0815E8E0:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, =0x0000fffe
_0815E8F0:
strh r1, [r0, 0x24]
_0815E8F2:
adds r0, r4, 0
bl sub_80A7D34
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _0815E94E
ldr r2, =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]
ldrh r0, [r4, 0x8]
subs r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
cmp r0, 0
beq _0815E948
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, =gTasks
adds r0, r1
ldrh r1, [r0, 0x26]
lsls r1, 24
lsrs r1, 24
ldr r2, =gUnknown_085CE87C
bl sub_80A7CFC
strh r5, [r4, 0xA]
strh r5, [r4, 0xC]
b _0815E94E
.pool
_0815E948:
adds r0, r6, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815E94E:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_815E898
thumb_func_start sub_815E954
sub_815E954: @ 815E954
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815E970
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815E972
.pool
_0815E970:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815E972:
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A861C
strh r0, [r5, 0x22]
movs r1, 0x22
ldrsh r0, [r5, r1]
cmp r0, 0x7
bgt _0815E996
movs r0, 0x8
strh r0, [r5, 0x22]
_0815E996:
movs r2, 0
strh r2, [r5, 0x2E]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x30]
strh r2, [r5, 0x32]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x34]
ldr r0, =sub_815E9BC
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815E954
thumb_func_start sub_815E9BC
sub_815E9BC: @ 815E9BC
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
lsls r0, 16
asrs r0, 16
movs r2, 0x30
ldrsh r1, [r3, r2]
cmp r0, r1
blt _0815EA10
movs r0, 0
strh r0, [r3, 0x2E]
ldrh r1, [r3, 0x32]
adds r1, 0x1
movs r0, 0x1
ands r1, r0
strh r1, [r3, 0x32]
movs r0, 0x3E
adds r0, r3
mov r12, r0
lsls r1, 2
ldrb r2, [r0]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
movs r2, 0x32
ldrsh r0, [r3, r2]
cmp r0, 0
beq _0815EA10
ldrh r0, [r3, 0x34]
subs r0, 0x1
strh r0, [r3, 0x34]
lsls r0, 16
cmp r0, 0
bne _0815EA10
adds r0, r3, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815EA10:
pop {r0}
bx r0
thumb_func_end sub_815E9BC
thumb_func_start sub_815EA14
sub_815EA14: @ 815EA14
push {lr}
adds r3, r0, 0
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815EA44
ldrb r2, [r3, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
orrs r1, r0
lsls r1, 1
subs r0, 0x47
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x3]
movs r0, 0x64
strh r0, [r3, 0x20]
movs r0, 0x1
b _0815EA4A
.pool
_0815EA44:
movs r0, 0x8C
strh r0, [r3, 0x20]
ldr r0, =0x0000ffff
_0815EA4A:
strh r0, [r3, 0x3C]
movs r0, 0x38
strh r0, [r3, 0x22]
ldr r0, =sub_815EA60
str r0, [r3, 0x1C]
pop {r0}
bx r0
.pool
thumb_func_end sub_815EA14
thumb_func_start sub_815EA60
sub_815EA60: @ 815EA60
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x8
bls _0815EA6E
b _0815EC40
_0815EA6E:
lsls r0, 2
ldr r1, =_0815EA7C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815EA7C:
.4byte _0815EAA0
.4byte _0815EAD2
.4byte _0815EAE4
.4byte _0815EB24
.4byte _0815EB36
.4byte _0815EB74
.4byte _0815EBD8
.4byte _0815EBF8
.4byte _0815EC1E
_0815EAA0:
movs r3, 0x3C
ldrsh r0, [r4, r3]
lsls r0, 1
ldrh r1, [r4, 0x22]
subs r1, r0
strh r1, [r4, 0x22]
ldrh r2, [r4, 0x30]
movs r0, 0x1
ands r0, r2
cmp r0, 0
beq _0815EAC2
movs r0, 0x3C
ldrsh r1, [r4, r0]
lsls r1, 1
ldrh r0, [r4, 0x20]
subs r0, r1
strh r0, [r4, 0x20]
_0815EAC2:
adds r0, r2, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
beq _0815EAD0
b _0815EC40
_0815EAD0:
b _0815EC12
_0815EAD2:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
beq _0815EAE2
b _0815EC40
_0815EAE2:
b _0815EC12
_0815EAE4:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r3, 0x3C
ldrsh r1, [r4, r3]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r3, =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xC
beq _0815EB1C
b _0815EC40
_0815EB1C:
b _0815EC12
.pool
_0815EB24:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
beq _0815EB34
b _0815EC40
_0815EB34:
b _0815EC12
_0815EB36:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 1
adds r1, r0
ldrh r0, [r4, 0x22]
subs r0, r1
strh r0, [r4, 0x22]
ldr r3, =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xC
bne _0815EC40
b _0815EC16
.pool
_0815EB74:
ldrh r2, [r4, 0x30]
adds r2, 0x1
strh r2, [r4, 0x30]
movs r3, 0x3C
ldrsh r1, [r4, r3]
lsls r0, r1, 1
adds r0, r1
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldr r3, =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x3C]
muls r0, r1
strh r0, [r4, 0x24]
lsls r2, 16
asrs r2, 16
cmp r2, 0xF
bne _0815EBC0
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x10
ldr r3, =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
_0815EBC0:
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x12
bne _0815EC40
b _0815EC12
.pool
_0815EBD8:
movs r3, 0x3C
ldrsh r0, [r4, r3]
lsls r1, r0, 1
adds r1, r0
lsls r1, 1
ldrh r0, [r4, 0x20]
adds r1, r0
strh r1, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _0815EC40
b _0815EC12
_0815EBF8:
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r0, 1
ldrh r3, [r4, 0x20]
adds r0, r3
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _0815EC40
_0815EC12:
movs r0, 0
strh r0, [r4, 0x30]
_0815EC16:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815EC40
_0815EC1E:
movs r1, 0x3C
ldrsh r0, [r4, r1]
lsls r1, r0, 1
adds r1, r0
ldrh r0, [r4, 0x20]
subs r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _0815EC40
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815EC40:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815EA60
thumb_func_start sub_815EC48
sub_815EC48: @ 815EC48
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r6, r1, r0
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815ECD0
2017-10-09 18:18:40 +02:00
bl IsDoubleBattle
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x1
bne _0815ECB4
2018-02-06 20:48:02 +01:00
ldr r5, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r5]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r1, [r5]
movs r0, 0x2
eors r0, r1
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r4, r0
ble _0815ECAC
strh r7, [r6, 0x24]
b _0815ECD4
.pool
_0815ECAC:
ldr r0, =0x0000ffff
b _0815ECD2
.pool
_0815ECB4:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815ECD0
ldr r0, =0x0000ffff
b _0815ECD2
.pool
_0815ECD0:
movs r0, 0x1
_0815ECD2:
strh r0, [r6, 0x24]
_0815ECD4:
ldr r0, =sub_815ECE4
str r0, [r6]
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815EC48
thumb_func_start sub_815ECE4
sub_815ECE4: @ 815ECE4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, =gTasks
adds r3, r0, r1
movs r1, 0x8
ldrsh r0, [r3, r1]
cmp r0, 0x8
bls _0815ECFE
b _0815EE78
_0815ECFE:
lsls r0, 2
ldr r1, =_0815ED10
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815ED10:
.4byte _0815ED34
.4byte _0815ED46
.4byte _0815ED78
.4byte _0815EDA8
.4byte _0815EDCE
.4byte _0815EDF8
.4byte _0815EE08
.4byte _0815EE28
.4byte _0815EE60
_0815ED34:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0xD
beq _0815ED44
b _0815EE78
_0815ED44:
b _0815EE50
_0815ED46:
ldr r2, =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r2, 0x24
ldrsh r0, [r3, r2]
lsls r2, r0, 1
adds r2, r0
ldrh r0, [r1, 0x24]
subs r0, r2
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
beq _0815ED72
b _0815EE78
_0815ED72:
b _0815EE50
.pool
_0815ED78:
ldr r2, =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x24
ldrsh r2, [r3, r0]
lsls r0, r2, 1
adds r0, r2
ldrh r2, [r1, 0x24]
adds r0, r2
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _0815EE78
b _0815EE50
.pool
_0815EDA8:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _0815EE78
movs r0, 0
strh r0, [r3, 0xA]
ldrh r1, [r3, 0xC]
movs r2, 0xC
ldrsh r0, [r3, r2]
cmp r0, 0
bne _0815EE54
adds r0, r1, 0x1
strh r0, [r3, 0xC]
movs r0, 0x1
strh r0, [r3, 0x8]
b _0815EE78
_0815EDCE:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r3, 0x24]
ldrh r2, [r0, 0x24]
adds r1, r2
strh r1, [r0, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _0815EE78
b _0815EE50
.pool
_0815EDF8:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
bne _0815EE78
b _0815EE50
_0815EE08:
ldr r2, =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x24
ldrsh r2, [r3, r0]
lsls r2, 2
ldrh r0, [r1, 0x24]
subs r0, r2
b _0815EE40
.pool
_0815EE28:
ldr r2, =gSprites
movs r1, 0x26
ldrsh r0, [r3, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r2, 0x24
ldrsh r0, [r3, r2]
lsls r0, 2
ldrh r2, [r1, 0x24]
adds r0, r2
_0815EE40:
strh r0, [r1, 0x24]
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _0815EE78
_0815EE50:
movs r0, 0
strh r0, [r3, 0xA]
_0815EE54:
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
b _0815EE78
.pool
_0815EE60:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815EE78:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815ECE4
thumb_func_start sub_815EE84
sub_815EE84: @ 815EE84
push {r4,lr}
adds r4, r0, 0
ldr r0, =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815EEA8
adds r0, r4, 0
movs r1, 0x1
2018-11-26 00:00:18 +01:00
bl InitAnimSpritePos
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
b _0815EEAA
.pool
_0815EEA8:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
_0815EEAA:
ldrb r0, [r0]
strh r0, [r4, 0x3C]
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815EECE
ldrb r0, [r4, 0x3]
movs r1, 0x3F
negs r1, r1
ands r1, r0
movs r0, 0x10
orrs r1, r0
strb r1, [r4, 0x3]
_0815EECE:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
bl sub_80A8328
movs r2, 0x3
ands r2, r0
lsls r2, 2
ldrb r3, [r4, 0x5]
movs r1, 0xD
negs r1, r1
adds r0, r1, 0
ands r0, r3
orrs r0, r2
strb r0, [r4, 0x5]
ldrb r0, [r4, 0x1]
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4, 0x1]
ldr r0, =sub_815EF08
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_815EE84
thumb_func_start sub_815EF08
sub_815EF08: @ 815EF08
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _0815EF16
b _0815F106
_0815EF16:
lsls r0, 2
ldr r1, =_0815EF24
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815EF24:
.4byte _0815EF38
.4byte _0815F038
.4byte _0815F0A0
.4byte _0815F0B4
.4byte _0815F100
_0815EF38:
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0x5
bhi _0815EF68
lsls r0, 2
ldr r1, =_0815EF50
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815EF50:
.4byte _0815EF6C
.4byte _0815EF88
.4byte _0815EFAA
.4byte _0815EFC6
.4byte _0815EF6C
.4byte _0815EFEC
_0815EF68:
movs r0, 0
strh r0, [r4, 0x3A]
_0815EF6C:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
bl sub_80A861C
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
b _0815EFE0
_0815EF88:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
bl sub_80A861C
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl sub_80A861C
adds r0, 0x4
b _0815EFE6
_0815EFAA:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
bl sub_80A861C
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
b _0815EFE0
_0815EFC6:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
bl sub_80A861C
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
_0815EFE0:
bl sub_80A861C
subs r0, 0x4
_0815EFE6:
lsls r0, 16
lsrs r1, r0, 16
b _0815F00C
_0815EFEC:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r1, r0, 24
_0815F00C:
movs r2, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0x4
bne _0815F018
movs r0, 0x18
b _0815F022
_0815F018:
cmp r0, 0x5
bne _0815F020
movs r0, 0x6
b _0815F022
_0815F020:
movs r0, 0xC
_0815F022:
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
strh r1, [r4, 0x36]
adds r0, r4, 0
2018-10-06 23:04:53 +02:00
bl InitAnimLinearTranslation
2017-09-04 12:22:04 +02:00
b _0815F0F8
_0815F038:
adds r0, r4, 0
2018-10-06 23:04:53 +02:00
bl TranslateAnimLinear
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815F106
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0x4
beq _0815F070
cmp r0, 0x5
beq _0815F090
ldrh r0, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r0, r2
movs r1, 0
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
strh r1, [r4, 0x26]
strh r1, [r4, 0x24]
strh r1, [r4, 0x2E]
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _0815F088
_0815F070:
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, 0x26]
strh r1, [r4, 0x24]
strh r1, [r4, 0x38]
_0815F088:
ldrh r0, [r4, 0x3A]
adds r0, 0x1
strh r0, [r4, 0x3A]
b _0815F106
_0815F090:
movs r0, 0
strh r0, [r4, 0x2E]
movs r1, 0x10
strh r1, [r4, 0x30]
strh r0, [r4, 0x32]
movs r0, 0x3
strh r0, [r4, 0x38]
b _0815F106
_0815F0A0:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _0815F106
movs r0, 0
strh r0, [r4, 0x38]
b _0815F106
_0815F0B4:
ldrh r1, [r4, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0815F0C6
ldrh r0, [r4, 0x30]
subs r0, 0x1
strh r0, [r4, 0x30]
b _0815F0CC
_0815F0C6:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
_0815F0CC:
ldrh r1, [r4, 0x32]
lsls r1, 8
ldrh r0, [r4, 0x30]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x20
bne _0815F106
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_0815F0F8:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _0815F106
_0815F100:
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815F106:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815EF08
thumb_func_start sub_815F10C
sub_815F10C: @ 815F10C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
subs r0, r1
movs r2, 0x38
ldrsh r1, [r4, r2]
muls r0, r1
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
adds r5, r0, 0
strh r5, [r4, 0x24]
movs r1, 0x34
ldrsh r0, [r4, r1]
movs r2, 0x30
ldrsh r1, [r4, r2]
subs r0, r1
movs r2, 0x38
ldrsh r1, [r4, r2]
muls r0, r1
movs r2, 0x36
ldrsh r1, [r4, r2]
bl __divsi3
adds r3, r0, 0
strh r3, [r4, 0x26]
ldrh r1, [r4, 0x38]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0815F16A
ldr r0, =gUnknown_085CE3A0
ldrh r1, [r4, 0x20]
adds r1, r5
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x22]
adds r2, r3
lsls r2, 16
asrs r2, 16
movs r3, 0x5
bl CreateSprite
_0815F16A:
movs r0, 0x38
ldrsh r1, [r4, r0]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r1, r0
bne _0815F17C
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815F17C:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F10C
thumb_func_start sub_815F18C
sub_815F18C: @ 815F18C
push {r4,r5,lr}
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815F1B8
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815F1D0
_0815F1B8:
ldr r2, =gBattleAnimArgs
ldrh r1, [r5, 0x20]
ldrh r0, [r2]
subs r0, r1, r0
strh r0, [r5, 0x2E]
ldrh r0, [r2, 0x4]
subs r1, r0
b _0815F1DE
.pool
_0815F1D0:
ldr r2, =gBattleAnimArgs
ldrh r1, [r5, 0x20]
ldrh r0, [r2]
adds r0, r1, r0
strh r0, [r5, 0x2E]
ldrh r0, [r2, 0x4]
adds r1, r0
_0815F1DE:
strh r1, [r5, 0x32]
adds r3, r2, 0
ldrh r1, [r5, 0x22]
ldrh r2, [r3, 0x2]
adds r2, r1, r2
strh r2, [r5, 0x30]
ldrh r0, [r3, 0x6]
adds r1, r0
strh r1, [r5, 0x34]
ldrh r0, [r3, 0x8]
strh r0, [r5, 0x36]
ldrh r0, [r5, 0x2E]
strh r0, [r5, 0x20]
strh r2, [r5, 0x22]
ldr r0, =sub_815F10C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F18C
2018-09-15 00:30:20 +02:00
thumb_func_start AnimTask_MonToSubstitute
AnimTask_MonToSubstitute: @ 815F20C
2017-09-04 12:22:04 +02:00
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
ldr r0, =gTasks
mov r9, r0
lsls r7, r6, 2
adds r0, r7, r6
lsls r0, 3
mov r8, r0
mov r4, r8
add r4, r9
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815F254
adds r0, r5, 0
movs r1, 0
bl sub_80A7270
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0xA]
strh r0, [r4, 0xC]
b _0815F2A0
.pool
_0815F254:
cmp r0, 0x1
bne _0815F2AC
ldrh r0, [r4, 0xA]
adds r0, 0x60
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
subs r0, 0xD
strh r0, [r4, 0xC]
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0xC
ldrsh r2, [r4, r0]
adds r0, r5, 0
movs r3, 0
bl obj_id_set_rotscale
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bne _0815F310
movs r0, 0
strh r0, [r4, 0xE]
adds r0, r5, 0
bl sub_80A7344
ldr r1, =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]
_0815F2A0:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815F310
.pool
_0815F2AC:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0
2017-11-04 16:11:13 +01:00
bl LoadBattleMonGfxAndAnimate
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815F2EE
ldr r3, =gSprites
2018-02-06 20:48:02 +01:00
ldr r2, =gBattlerSpriteIds
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r3, 0
adds r1, 0x10
adds r0, r1
ldr r1, =gUnknown_082FF6C0
str r1, [r0]
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
movs r1, 0
bl StartSpriteAffineAnim
_0815F2EE:
mov r4, r9
adds r3, r7, 0
ldr r5, =sub_815F330
movs r1, 0xF
mov r2, r8
adds r0, r4, r2
adds r0, 0x26
movs r2, 0
_0815F2FE:
strh r2, [r0]
subs r0, 0x2
subs r1, 0x1
cmp r1, 0
bge _0815F2FE
adds r0, r3, r6
lsls r0, 3
adds r0, r4
str r5, [r0]
_0815F310:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
2018-09-15 00:30:20 +02:00
thumb_func_end AnimTask_MonToSubstitute
2017-09-04 12:22:04 +02:00
thumb_func_start sub_815F330
sub_815F330: @ 815F330
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r3, r0, 24
ldr r1, =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r1
movs r0, 0x8
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _0815F394
cmp r5, 0x1
bgt _0815F360
cmp r5, 0
beq _0815F36A
b _0815F482
.pool
_0815F360:
cmp r5, 0x2
beq _0815F400
cmp r5, 0x3
beq _0815F43C
b _0815F482
_0815F36A:
ldr r0, =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r0
ldr r0, =0x0000ff38
strh r0, [r1, 0x26]
movs r0, 0xC8
strh r0, [r1, 0x24]
adds r1, 0x3E
ldrb r2, [r1]
subs r0, 0xCD
ands r0, r2
strb r0, [r1]
strh r5, [r4, 0x1C]
b _0815F42E
.pool
_0815F394:
ldrh r1, [r4, 0x1C]
adds r1, 0x70
movs r5, 0
strh r1, [r4, 0x1C]
ldr r2, =gSprites
lsls r0, r3, 4
adds r0, r3
lsls r0, 2
adds r2, r0, r2
lsls r1, 16
asrs r1, 24
ldrh r3, [r2, 0x26]
adds r1, r3
strh r1, [r2, 0x26]
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
blt _0815F3C4
strh r5, [r2, 0x24]
_0815F3C4:
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0
ble _0815F3CE
strh r5, [r2, 0x26]
_0815F3CE:
movs r3, 0x26
ldrsh r0, [r2, r3]
cmp r0, 0
bne _0815F482
movs r0, 0x40
negs r0, r0
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x7D
bl PlaySE12WithPanning
ldr r1, =0xfffff800
adds r0, r1, 0
ldrh r2, [r4, 0x1C]
adds r0, r2
strh r0, [r4, 0x1C]
b _0815F42E
.pool
_0815F400:
ldrh r0, [r4, 0x1C]
subs r0, 0x70
strh r0, [r4, 0x1C]
lsls r0, 16
cmp r0, 0
bge _0815F410
movs r0, 0
strh r0, [r4, 0x1C]
_0815F410:
ldr r0, =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r0
ldrh r2, [r4, 0x1C]
lsls r2, 16
asrs r2, 24
ldrh r0, [r1, 0x26]
subs r0, r2
strh r0, [r1, 0x26]
movs r3, 0x1C
ldrsh r0, [r4, r3]
cmp r0, 0
bne _0815F482
_0815F42E:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815F482
.pool
_0815F43C:
ldrh r0, [r4, 0x1C]
adds r0, 0x70
strh r0, [r4, 0x1C]
ldr r2, =gSprites
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
adds r1, r2
lsls r0, 16
asrs r0, 24
ldrh r2, [r1, 0x26]
adds r0, r2
strh r0, [r1, 0x26]
lsls r0, 16
cmp r0, 0
ble _0815F460
movs r0, 0
strh r0, [r1, 0x26]
_0815F460:
movs r3, 0x26
ldrsh r0, [r1, r3]
cmp r0, 0
bne _0815F482
movs r0, 0x40
negs r0, r0
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x7D
bl PlaySE12WithPanning
adds r0, r6, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815F482:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F330
thumb_func_start sub_815F48C
sub_815F48C: @ 815F48C
push {r4,r5,lr}
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815F4B8
ldrb r0, [r4]
bl sub_80A82E4
subs r0, 0x2
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldr r4, =0x0000ff70
b _0815F4C8
.pool
_0815F4B8:
ldrb r0, [r4]
bl sub_80A82E4
adds r0, 0x2
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldr r4, =0x0000ffa0
_0815F4C8:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0x3
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
strh r4, [r5, 0x26]
ldr r0, =sub_815F4F0
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F48C
thumb_func_start sub_815F4F0
sub_815F4F0: @ 815F4F0
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _0815F4FE
b _0815F61A
_0815F4FE:
lsls r0, 2
ldr r1, =_0815F50C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815F50C:
.4byte _0815F520
.4byte _0815F544
.4byte _0815F584
.4byte _0815F5B4
.4byte _0815F5E0
_0815F520:
ldrh r0, [r4, 0x26]
adds r0, 0xA
strh r0, [r4, 0x26]
lsls r0, 16
cmp r0, 0
blt _0815F61A
movs r0, 0x3F
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xCD
bl PlaySE12WithPanning
movs r0, 0
strh r0, [r4, 0x26]
b _0815F5D8
_0815F544:
ldrh r1, [r4, 0x30]
adds r1, 0x4
movs r5, 0
strh r1, [r4, 0x30]
ldr r2, =gSineTable
movs r3, 0x30
ldrsh r0, [r4, r3]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
negs r0, r0
strh r0, [r4, 0x26]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _0815F61A
movs r0, 0x3F
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xCD
bl PlaySE12WithPanning
strh r5, [r4, 0x30]
strh r5, [r4, 0x26]
b _0815F5D8
.pool
_0815F584:
ldrh r1, [r4, 0x30]
adds r1, 0x6
movs r3, 0
strh r1, [r4, 0x30]
ldr r2, =gSineTable
movs r5, 0x30
ldrsh r0, [r4, r5]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 20
negs r0, r0
strh r0, [r4, 0x26]
lsls r1, 16
asrs r1, 16
cmp r1, 0x7F
ble _0815F61A
strh r3, [r4, 0x30]
strh r3, [r4, 0x26]
b _0815F5D8
.pool
_0815F5B4:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _0815F61A
movs r0, 0x3F
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xC0
bl PlaySE12WithPanning
movs r0, 0
strh r0, [r4, 0x30]
_0815F5D8:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815F61A
_0815F5E0:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _0815F61A
movs r0, 0
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x32]
adds r1, 0x1
strh r1, [r4, 0x32]
movs r0, 0x1
ands r1, r0
adds r3, r4, 0
adds r3, 0x3E
lsls r1, 2
ldrb r2, [r3]
subs r0, 0x6
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x7
bne _0815F61A
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815F61A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815F4F0
thumb_func_start sub_815F620
sub_815F620: @ 815F620
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0
bne _0815F66E
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
lsrs r1, r0, 16
mov r10, r1
asrs r6, r0, 16
cmp r6, 0
blt _0815F66E
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
lsls r0, 16
lsrs r1, r0, 16
mov r9, r1
asrs r1, r0, 16
cmp r1, 0
bge _0815F67C
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
bl obj_delete_but_dont_free_vram
_0815F66E:
mov r0, r8
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
b _0815F780
.pool
_0815F67C:
ldr r4, =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r5, r0, r4
ldrh r0, [r5, 0x24]
adds r0, 0x18
strh r0, [r5, 0x24]
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r6, r0, r4
ldrh r0, [r6, 0x24]
subs r0, 0x18
strh r0, [r6, 0x24]
strh r7, [r5, 0x2E]
strh r7, [r6, 0x2E]
strh r7, [r5, 0x30]
strh r7, [r6, 0x30]
strh r7, [r5, 0x32]
strh r7, [r6, 0x32]
movs r0, 0x10
strh r0, [r5, 0x34]
ldr r0, =0x0000fff0
strh r0, [r6, 0x34]
strh r7, [r5, 0x36]
movs r0, 0x80
strh r0, [r6, 0x36]
movs r0, 0x18
strh r0, [r5, 0x38]
strh r0, [r6, 0x38]
mov r0, r8
strh r0, [r5, 0x3A]
strh r0, [r6, 0x3A]
strh r7, [r5, 0x3C]
strh r7, [r6, 0x3C]
ldr r2, =gTasks
mov r1, r8
lsls r3, r1, 2
adds r0, r3, r1
lsls r0, 3
adds r0, r2
movs r1, 0x2
strh r1, [r0, 0x8]
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r1, [r0]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
adds r7, r4, 0
mov r12, r3
cmp r0, 0
bne _0815F720
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
adds r2, r6, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
b _0815F736
.pool
_0815F720:
adds r1, r5, 0
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
adds r1, r6, 0
adds r1, 0x3E
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
_0815F736:
mov r1, r9
lsls r0, r1, 16
asrs r0, 16
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r4, r2, r7
ldrb r1, [r4, 0x1]
movs r3, 0xD
negs r3, r3
adds r0, r3, 0
ands r0, r1
strb r0, [r4, 0x1]
mov r1, r10
lsls r0, r1, 16
asrs r0, 16
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r4, r1, r7
ldrb r0, [r4, 0x1]
ands r3, r0
strb r3, [r4, 0x1]
adds r3, r7, 0
adds r3, 0x1C
adds r2, r3
ldr r0, =sub_815F7C4
str r0, [r2]
adds r1, r3
str r0, [r1]
mov r0, r12
add r0, r8
lsls r0, 3
ldr r1, =gTasks
adds r0, r1
ldr r1, =sub_815F79C
str r1, [r0]
_0815F780:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F620
thumb_func_start sub_815F79C
sub_815F79C: @ 815F79C
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r1, =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r1
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815F7BA
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815F7BA:
pop {r0}
bx r0
.pool
thumb_func_end sub_815F79C
thumb_func_start sub_815F7C4
sub_815F7C4: @ 815F7C4
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _0815F80E
movs r0, 0
strh r0, [r4, 0x30]
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r1, [r0]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0815F80E
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsls r1, r2, 29
lsrs r1, 31
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]
_0815F80E:
ldrh r0, [r4, 0x34]
ldrh r1, [r4, 0x36]
adds r0, r1
movs r5, 0
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x36]
movs r2, 0x36
ldrsh r0, [r4, r2]
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815F840
cmp r0, 0x1
beq _0815F858
b _0815F896
.pool
_0815F840:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
bne _0815F896
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _0815F896
_0815F858:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
cmp r0, 0
ble _0815F896
strh r5, [r4, 0x32]
ldrh r0, [r4, 0x38]
subs r0, 0x2
strh r0, [r4, 0x38]
lsls r0, 16
cmp r0, 0
bge _0815F896
ldr r3, =gTasks
movs r2, 0x3C
ldrsh r1, [r4, r2]
lsls r1, 1
movs r0, 0x3A
ldrsh r2, [r4, r0]
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r1, r0
adds r3, 0x8
adds r1, r3
ldrh r0, [r1]
subs r0, 0x1
strh r0, [r1]
adds r0, r4, 0
bl obj_delete_but_dont_free_vram
_0815F896:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F7C4
2018-09-12 22:58:03 +02:00
thumb_func_start AnimTask_GetReturnPowerLevel
AnimTask_GetReturnPowerLevel: @ 815F8A0
2017-09-04 12:22:04 +02:00
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r3, =gBattleAnimArgs
movs r2, 0
strh r2, [r3, 0xE]
2017-10-14 16:55:25 +02:00
ldr r1, =gAnimFriendship
2017-09-04 12:22:04 +02:00
ldrb r0, [r1]
ldrb r1, [r1]
adds r0, r1, 0
subs r0, 0x3D
lsls r0, 24
lsrs r0, 24
adds r2, r1, 0
cmp r0, 0x1E
bhi _0815F8C4
movs r0, 0x1
strh r0, [r3, 0xE]
_0815F8C4:
adds r0, r2, 0
subs r0, 0x5C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6C
bhi _0815F8D4
movs r0, 0x2
strh r0, [r3, 0xE]
_0815F8D4:
lsls r0, r1, 24
lsrs r0, 24
cmp r0, 0xC8
bls _0815F8E0
movs r0, 0x3
strh r0, [r3, 0xE]
_0815F8E0:
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r4}
pop {r0}
bx r0
.pool
2018-09-12 22:58:03 +02:00
thumb_func_end AnimTask_GetReturnPowerLevel
2017-09-04 12:22:04 +02:00
thumb_func_start sub_815F8F4
sub_815F8F4: @ 815F8F4
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
mov r8, r0
ldr r1, =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r0, r1
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0x4
bls _0815F91A
b _0815FE68
_0815F91A:
lsls r0, 2
ldr r1, =_0815F92C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815F92C:
.4byte _0815F940
.4byte _0815F9F4
.4byte _0815FBE8
.4byte _0815FD08
.4byte _0815FD8C
_0815F940:
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
mov r2, r8
lsls r4, r2, 2
adds r0, r4, r2
lsls r0, 3
adds r6, r0, r1
movs r3, 0x80
lsls r3, 4
adds r0, r3, 0
ldrh r1, [r6, 0xA]
adds r0, r1
strh r0, [r6, 0xA]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _0815F998
ldr r2, =gSprites
lsls r3, r7, 4
adds r1, r3, r7
lsls r1, 2
adds r1, r2
ldrh r0, [r6, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r4, [r1, 0x24]
adds r0, r4
strh r0, [r1, 0x24]
b _0815F9B2
.pool
_0815F998:
ldr r3, =gSprites
lsls r4, r7, 4
adds r2, r4, r7
lsls r2, 2
adds r2, r3
ldrh r1, [r6, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
adds r2, r3, 0
adds r3, r4, 0
_0815F9B2:
ldr r1, =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r4, r0, r1
ldrb r0, [r4, 0xA]
strh r0, [r4, 0xA]
adds r1, r3, r7
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x24]
ldrh r1, [r1, 0x20]
adds r0, r1
lsls r0, 16
movs r1, 0x80
lsls r1, 14
adds r0, r1
movs r1, 0x98
lsls r1, 17
cmp r0, r1
bhi _0815F9DE
b _0815FE68
_0815F9DE:
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0815FE68
.pool
_0815F9F4:
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
beq _0815FA28
2017-10-14 16:55:25 +02:00
ldr r0, =gContestResources
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldr r2, [r0, 0x8]
mov r10, r2
ldr r3, [r0, 0xC]
mov r9, r3
ldrh r6, [r0]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
lsrs r4, r0, 24
movs r7, 0
b _0815FB4E
.pool
_0815FA28:
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815FAC8
2018-02-06 20:48:02 +01:00
ldr r7, =gBattlerPartyIndexes
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, =gPlayerParty
adds r0, r5
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0x1
bl GetMonData
mov r9, r0
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0815FA9C
lsls r0, r2, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _0815FA9E
.pool
_0815FA9C:
ldrh r6, [r1, 0x2]
_0815FA9E:
movs r0, 0x1
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
adds r0, 0x1
lsls r0, 24
lsrs r4, r0, 24
movs r7, 0
movs r5, 0x88
lsls r5, 1
b _0815FB50
.pool
_0815FAC8:
2018-02-06 20:48:02 +01:00
ldr r7, =gBattlerPartyIndexes
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, =gEnemyParty
adds r0, r5
movs r1, 0
bl GetMonData
mov r10, r0
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0x1
bl GetMonData
mov r9, r0
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
lsls r0, r2, 2
adds r1, r0, r1
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0815FB2C
lsls r0, r2, 1
adds r0, r7
ldrh r0, [r0]
muls r0, r6
adds r0, r5
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
b _0815FB2E
.pool
_0815FB2C:
ldrh r6, [r1, 0x2]
_0815FB2E:
movs r0, 0x1
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0x1
lsls r0, 24
lsrs r4, r0, 24
movs r7, 0x1
_0815FB4E:
ldr r5, =0x0000ffe0
_0815FB50:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
lsls r3, r5, 16
asrs r3, 16
str r0, [sp]
str r4, [sp, 0x4]
mov r4, r10
str r4, [sp, 0x8]
mov r0, r9
str r0, [sp, 0xC]
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
str r0, [sp, 0x10]
movs r0, 0
str r0, [sp, 0x14]
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0
bl sub_80A8394
lsls r0, 24
lsrs r5, r0, 24
2017-10-01 18:54:01 +02:00
ldr r0, =gBattleSpritesDataPtr
2017-09-04 12:22:04 +02:00
ldr r1, [r0]
ldrb r0, [r4]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x2]
cmp r0, 0
beq _0815FBBA
ldr r1, =gSprites
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x5]
lsrs r0, 4
lsls r0, 4
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
orrs r0, r1
ldr r3, =0x00007fff
movs r1, 0x10
movs r2, 0x6
bl BlendPalette
_0815FBBA:
ldr r0, =gTasks
mov r3, r8
lsls r1, r3, 2
add r1, r8
lsls r1, 3
adds r1, r0
strh r5, [r1, 0x26]
b _0815FD7E
.pool
_0815FBE8:
ldr r1, =gTasks
mov r0, r8
lsls r4, r0, 2
adds r0, r4, r0
lsls r0, 3
adds r6, r0, r1
ldrh r0, [r6, 0x26]
lsls r0, 24
lsrs r5, r0, 24
movs r1, 0x80
lsls r1, 4
adds r0, r1, 0
ldrh r2, [r6, 0xA]
adds r0, r2
strh r0, [r6, 0xA]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _0815FC40
ldr r3, =gSprites
lsls r4, r5, 4
adds r2, r4, r5
lsls r2, 2
adds r2, r3
ldrh r1, [r6, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r2, 0x24]
subs r0, r1
strh r0, [r2, 0x24]
adds r2, r3, 0
adds r3, r4, 0
b _0815FC56
.pool
_0815FC40:
ldr r2, =gSprites
lsls r3, r5, 4
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r6, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r4, [r1, 0x24]
adds r0, r4
strh r0, [r1, 0x24]
_0815FC56:
ldr r1, =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r6, r0, r1
ldrb r0, [r6, 0xA]
strh r0, [r6, 0xA]
adds r1, r3, r5
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x24]
ldrh r1, [r1, 0x20]
adds r0, r1
lsls r0, 16
lsrs r5, r0, 16
movs r1, 0x24
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815FCD6
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815FCB4
lsls r4, r5, 16
asrs r4, 16
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bge _0815FCD6
b _0815FCCA
.pool
_0815FCB4:
lsls r4, r5, 16
asrs r4, 16
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r4, r0
ble _0815FCD6
_0815FCCA:
ldrh r0, [r6, 0x24]
adds r0, 0x1
strh r0, [r6, 0x24]
ldr r1, =gBattleAnimArgs
ldr r0, =0x0000ffff
strh r0, [r1, 0xE]
_0815FCD6:
lsls r0, r5, 16
movs r2, 0x80
lsls r2, 14
adds r0, r2
movs r1, 0x98
lsls r1, 17
cmp r0, r1
bhi _0815FCE8
b _0815FE68
_0815FCE8:
ldr r0, =gTasks
mov r1, r9
add r1, r8
lsls r1, 3
adds r1, r0
movs r0, 0
strh r0, [r1, 0xA]
b _0815FD7E
.pool
_0815FD08:
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
mov r3, r8
lsls r4, r3, 2
adds r0, r4, r3
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x26]
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r5, =gSprites
adds r0, r5
bl sub_80A8610
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r9, r4
cmp r0, 0
bne _0815FD60
lsls r1, r7, 4
adds r1, r7
lsls r1, 2
adds r1, r5
ldrh r0, [r1, 0x20]
negs r0, r0
subs r0, 0x20
strh r0, [r1, 0x24]
b _0815FD74
.pool
_0815FD60:
lsls r0, r7, 4
adds r0, r7
lsls r0, 2
adds r0, r5
ldrh r2, [r0, 0x20]
movs r4, 0x88
lsls r4, 1
adds r1, r4, 0
subs r1, r2
strh r1, [r0, 0x24]
_0815FD74:
ldr r0, =gTasks
mov r1, r9
add r1, r8
lsls r1, 3
adds r1, r0
_0815FD7E:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
b _0815FE68
.pool
_0815FD8C:
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
mov r0, r8
lsls r4, r0, 2
adds r0, r4, r0
lsls r0, 3
adds r2, r0, r1
movs r1, 0x80
lsls r1, 4
adds r0, r1, 0
ldrh r3, [r2, 0xA]
adds r0, r3
strh r0, [r2, 0xA]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
mov r10, r0
ldrb r0, [r0]
str r2, [sp, 0x18]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
mov r9, r4
ldr r2, [sp, 0x18]
cmp r0, 0
bne _0815FE0C
ldr r1, =gSprites
lsls r5, r7, 4
adds r0, r5, r7
lsls r0, 2
adds r6, r0, r1
ldrh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 24
ldrh r1, [r6, 0x24]
adds r0, r1
strh r0, [r6, 0x24]
movs r2, 0x24
ldrsh r4, [r6, r2]
movs r3, 0x20
ldrsh r0, [r6, r3]
adds r4, r0
mov r1, r10
ldrb r0, [r1]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
cmp r4, r0
blt _0815FE44
movs r2, 0
strh r2, [r6, 0x24]
b _0815FE44
.pool
_0815FE0C:
ldr r1, =gSprites
lsls r5, r7, 4
adds r0, r5, r7
lsls r0, 2
adds r6, r0, r1
ldrh r1, [r2, 0xA]
lsls r1, 16
asrs r1, 24
ldrh r0, [r6, 0x24]
subs r0, r1
strh r0, [r6, 0x24]
movs r3, 0x24
ldrsh r4, [r6, r3]
movs r1, 0x20
ldrsh r0, [r6, r1]
adds r4, r0
mov r2, r10
ldrb r0, [r2]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
cmp r4, r0
bgt _0815FE44
movs r4, 0
strh r4, [r6, 0x24]
_0815FE44:
ldr r1, =gTasks
mov r0, r9
add r0, r8
lsls r0, 3
adds r0, r1
ldrb r1, [r0, 0xA]
strh r1, [r0, 0xA]
ldr r1, =gSprites
adds r0, r3, r7
lsls r0, 2
adds r0, r1
movs r1, 0x24
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815FE68
mov r0, r8
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_0815FE68:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_815F8F4
thumb_func_start sub_815FE80
sub_815FE80: @ 815FE80
push {r4,lr}
adds r4, r0, 0
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0815FE92
cmp r0, 0x1
beq _0815FF3A
b _0815FFBC
_0815FE92:
ldr r0, =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _0815FF2C
movs r0, 0x3F
2017-10-14 23:37:44 +02:00
bl BattleAnimAdjustPanning
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x7A
bl PlaySE12WithPanning
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0x1
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
strh r0, [r4, 0x22]
ldr r0, =0x0000ffe0
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815FFBC
2017-09-05 09:41:48 +02:00
bl IsContest
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815FFBC
movs r0, 0x1
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
b _0815FFBC
.pool
_0815FF2C:
adds r0, r4, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
b _0815FFBC
_0815FF3A:
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x30]
adds r0, r2, 0x5
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7F
ble _0815FF6E
movs r1, 0x2E
ldrsh r0, [r4, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
adds r0, r2, 0
subs r0, 0x7A
strh r0, [r4, 0x30]
_0815FF6E:
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0815FF9C
ldrh r2, [r4, 0x32]
lsls r1, r2, 16
asrs r1, 24
ldrh r0, [r4, 0x24]
subs r0, r1
strh r0, [r4, 0x24]
adds r1, r2, 0
b _0815FFA8
.pool
_0815FF9C:
ldrh r1, [r4, 0x32]
lsls r0, r1, 16
asrs r0, 24
ldrh r2, [r4, 0x24]
adds r0, r2
strh r0, [r4, 0x24]
_0815FFA8:
movs r0, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0x2
bne _0815FFBC
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_0815FFBC:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815FE80
thumb_func_start sub_815FFC4
sub_815FFC4: @ 815FFC4
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r2, 0x26
ldrsh r0, [r0, r2]
adds r3, r1, 0
cmp r0, 0x4
bls _0815FFE0
b _08160132
_0815FFE0:
lsls r0, 2
ldr r1, =_0815FFF4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0815FFF4:
.4byte _08160008
.4byte _08160058
.4byte _081600B4
.4byte _081600CC
.4byte _08160132
_08160008:
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
movs r1, 0
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
ldr r1, =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
movs r0, 0x6
strh r0, [r1, 0x8]
cmp r5, r2
ble _0816003E
negs r0, r0
strh r0, [r1, 0x8]
_0816003E:
strh r5, [r1, 0xA]
strh r2, [r1, 0xC]
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
b _08160150
.pool
_08160058:
2018-02-06 20:48:02 +01:00
ldr r1, =gBattlerSpriteIds
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r1, r0, r1
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r2, r0, r3
ldrh r0, [r2, 0x8]
ldrh r3, [r1, 0x24]
adds r0, r3
strh r0, [r1, 0x24]
movs r3, 0x8
ldrsh r0, [r2, r3]
cmp r0, 0
ble _081600A0
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xC
ldrsh r1, [r2, r3]
b _08160126
.pool
_081600A0:
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xC
ldrsh r1, [r2, r3]
cmp r0, r1
bgt _08160150
b _0816012A
_081600B4:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r3
movs r2, 0x8
ldrsh r1, [r0, r2]
negs r1, r1
strh r1, [r0, 0x8]
ldrh r1, [r0, 0x26]
adds r1, 0x1
strh r1, [r0, 0x26]
b _08160150
_081600CC:
2018-02-06 20:48:02 +01:00
ldr r1, =gBattlerSpriteIds
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r1, r0, r1
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r2, r0, r3
ldrh r0, [r2, 0x8]
ldrh r3, [r1, 0x24]
adds r0, r3
strh r0, [r1, 0x24]
movs r3, 0x8
ldrsh r0, [r2, r3]
cmp r0, 0
bge _08160118
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xA
ldrsh r1, [r2, r3]
cmp r0, r1
bgt _08160150
b _0816012A
.pool
_08160118:
movs r3, 0x20
ldrsh r0, [r1, r3]
movs r3, 0x24
ldrsh r1, [r1, r3]
adds r0, r1
movs r3, 0xA
ldrsh r1, [r2, r3]
_08160126:
cmp r0, r1
blt _08160150
_0816012A:
ldrh r0, [r2, 0x26]
adds r0, 0x1
strh r0, [r2, 0x26]
b _08160150
_08160132:
2018-02-06 20:48:02 +01:00
ldr r1, =gBattlerSpriteIds
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
ldr r1, =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_08160150:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_815FFC4
thumb_func_start sub_8160164
sub_8160164: @ 8160164
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
movs r0, 0
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0xE]
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
movs r2, 0x1
negs r2, r2
adds r1, r2, 0
cmp r0, 0
bne _08160198
movs r1, 0x1
_08160198:
strh r1, [r4, 0x10]
ldr r2, =gSprites
movs r0, 0xE
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x14]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x20]
strh r0, [r4, 0x12]
strh r5, [r4, 0x1A]
strh r5, [r4, 0x1E]
movs r0, 0x1
strh r0, [r4, 0x1C]
strh r5, [r4, 0x20]
ldr r0, =sub_81601DC
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8160164
thumb_func_start sub_81601DC
sub_81601DC: @ 81601DC
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _08160284
cmp r0, 0x1
bgt _08160204
cmp r0, 0
beq _0816020A
b _081602DA
.pool
_08160204:
cmp r0, 0x2
beq _081602D4
b _081602DA
_0816020A:
ldrh r0, [r4, 0x1E]
adds r0, 0x8
movs r2, 0xFF
ands r0, r2
strh r0, [r4, 0x1E]
ldr r5, =gSprites
movs r6, 0xE
ldrsh r0, [r4, r6]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
ldr r3, =gSineTable
movs r6, 0x1E
ldrsh r0, [r4, r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
strh r0, [r1, 0x24]
ldrh r0, [r4, 0x1A]
adds r0, 0x2
ands r0, r2
strh r0, [r4, 0x1A]
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
movs r6, 0x1A
ldrsh r0, [r4, r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 16
asrs r0, 19
ldrh r1, [r4, 0x10]
muls r0, r1
ldrh r1, [r4, 0x12]
adds r0, r1
strh r0, [r2, 0x20]
movs r6, 0x1A
ldrsh r0, [r4, r6]
cmp r0, 0
bne _081602DA
movs r0, 0xE
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrh r1, [r4, 0x12]
strh r1, [r0, 0x20]
b _081602C4
.pool
_08160284:
ldrh r0, [r4, 0x1E]
adds r0, 0x8
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x1E]
ldr r3, =gSprites
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldr r2, =gSineTable
movs r5, 0x1E
ldrsh r0, [r4, r5]
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
lsls r0, 16
asrs r0, 21
strh r0, [r1, 0x24]
movs r6, 0x1E
ldrsh r2, [r4, r6]
cmp r2, 0
bne _081602DA
movs r1, 0xE
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
strh r2, [r1, 0x24]
_081602C4:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _081602DA
.pool
_081602D4:
adds r0, r2, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_081602DA:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_81601DC
thumb_func_start sub_81602E0
sub_81602E0: @ 81602E0
push {r4,lr}
adds r4, r0, 0
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
ldrh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x14
bl Sin
strh r0, [r4, 0x26]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08160326
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimSprite
2017-09-04 12:22:04 +02:00
_08160326:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_81602E0
thumb_func_start sub_8160338
sub_8160338: @ 8160338
push {r4,lr}
adds r4, r0, 0
2018-02-06 20:48:02 +01:00
ldr r0, =gBattleAnimTarget
2017-09-04 12:22:04 +02:00
ldrb r0, [r0]
2018-02-06 02:46:59 +01:00
bl GetBattlerSide
2017-09-04 12:22:04 +02:00
lsls r0, 24
cmp r0, 0
bne _0816037C
ldr r2, =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]
ldr r0, =0x0000fff5
strh r0, [r4, 0x2E]
movs r0, 0xC0
strh r0, [r4, 0x30]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _08160396
.pool
_0816037C:
movs r0, 0xB
strh r0, [r4, 0x2E]
movs r0, 0xC0
strh r0, [r4, 0x30]
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
_08160396:
ldr r0, =sub_81602E0
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8160338
thumb_func_start sub_81603A8
sub_81603A8: @ 81603A8
push {r4,r5,lr}
adds r5, r0, 0
2018-02-06 20:48:02 +01:00
ldr r4, =gBattleAnimAttacker
2017-09-04 12:22:04 +02:00
ldrb r0, [r4]
movs r1, 0x2
2018-02-06 20:48:02 +01:00
bl GetBattlerSpriteCoord
2017-09-04 12:22:04 +02:00
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A861C
strh r0, [r5, 0x22]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
bgt _081603D2
movs r0, 0x10
strh r0, [r5, 0x22]
_081603D2:
movs r0, 0
strh r0, [r5, 0x3A]
movs r1, 0x10
strh r1, [r5, 0x3C]
ldr r0, =sub_81603F4
str r0, [r5, 0x1C]
lsls r1, 8
movs r0, 0x52
bl SetGpuReg
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_81603A8
thumb_func_start sub_81603F4
sub_81603F4: @ 81603F4
push {r4,lr}
adds r4, r0, 0
movs r0, 0x32
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _0816046C
cmp r1, 0x1
bgt _0816040A
cmp r1, 0
beq _08160414
b _081604E8
_0816040A:
cmp r1, 0x2
beq _08160482
cmp r1, 0x3
beq _081604E2
b _081604E8
_08160414:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _081604E8
strh r1, [r4, 0x2E]
ldrh r1, [r4, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0816043E
ldrh r2, [r4, 0x3A]
movs r3, 0x3A
ldrsh r0, [r4, r3]
cmp r0, 0xF
bgt _0816044C
adds r0, r2, 0x1
strh r0, [r4, 0x3A]
b _0816044C
_0816043E:
ldrh r2, [r4, 0x3C]
movs r3, 0x3C
ldrsh r0, [r4, r3]
cmp r0, 0
beq _0816044C
subs r0, r2, 0x1
strh r0, [r4, 0x3C]
_0816044C:
adds r0, r1, 0x1
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x3C]
lsls r1, 8
ldrh r0, [r4, 0x3A]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _081604E8
b _081604DA
_0816046C:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _081604E8
strh r1, [r4, 0x2E]
strh r1, [r4, 0x30]
b _081604DA
_08160482:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _081604E8
movs r0, 0
strh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _081604AE
ldrh r2, [r4, 0x3A]
movs r3, 0x3A
ldrsh r0, [r4, r3]
cmp r0, 0
beq _081604BC
subs r0, r2, 0x1
strh r0, [r4, 0x3A]
b _081604BC
_081604AE:
ldrh r2, [r4, 0x3C]
movs r3, 0x3C
ldrsh r0, [r4, r3]
cmp r0, 0xF
bgt _081604BC
adds r0, r2, 0x1
strh r0, [r4, 0x3C]
_081604BC:
adds r0, r1, 0x1
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x3C]
lsls r1, 8
ldrh r0, [r4, 0x3A]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _081604E8
_081604DA:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
b _081604E8
_081604E2:
adds r0, r4, 0
bl move_anim_8074EE0
_081604E8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_81603F4
2018-09-10 21:19:19 +02:00
thumb_func_start AnimTask_GetWeather
AnimTask_GetWeather: @ 81604F0
2017-09-04 12:22:04 +02:00
push {lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r2, =gBattleAnimArgs
movs r0, 0
strh r0, [r2, 0xE]
ldr r0, =gWeatherMoveAnim
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _08160514
movs r0, 0x1
b _08160536
.pool
_08160514:
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _08160520
movs r0, 0x2
b _08160536
_08160520:
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _0816052C
movs r0, 0x3
b _08160536
_0816052C:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08160538
movs r0, 0x4
_08160536:
strh r0, [r2, 0xE]
_08160538:
adds r0, r3, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
pop {r0}
bx r0
2018-09-10 21:19:19 +02:00
thumb_func_end AnimTask_GetWeather
2017-09-04 12:22:04 +02:00
thumb_func_start sub_8160544
sub_8160544: @ 8160544
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, =gTasks
adds r4, r0
movs r0, 0
strh r0, [r4, 0x8]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
bl GetAnimBattlerSpriteId
2017-09-04 12:22:04 +02:00
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, =gUnknown_085CE9C8
adds r0, r4, 0
bl sub_80A7CFC
ldr r0, =sub_816058C
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8160544
thumb_func_start sub_816058C
sub_816058C: @ 816058C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r2, =gTasks
adds r3, r0, r2
ldrh r0, [r3, 0x8]
adds r1, r0, 0x1
movs r5, 0
strh r1, [r3, 0x8]
subs r0, 0x10
lsls r0, 16
lsrs r0, 16
adds r6, r2, 0
cmp r0, 0x16
bhi _081605F0
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _08160600
strh r5, [r3, 0xA]
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
movs r5, 0x1
ands r0, r5
cmp r0, 0
bne _081605F0
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, =0x0000ffff
strh r1, [r0, 0x24]
b _08160600
.pool
_081605F0:
ldr r2, =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r5, [r0, 0x24]
_08160600:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r6
bl sub_80A7D34
lsls r0, 24
cmp r0, 0
bne _08160618
adds r0, r4, 0
2017-10-14 16:55:25 +02:00
bl DestroyAnimVisualTask
2017-09-04 12:22:04 +02:00
_08160618:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_816058C
.align 2, 0 @ Don't pad with nop.