pokefirered/asm/fighting.s
jiangzhengwenjz 90e9bbffa6 normal
2019-10-08 02:38:47 +08:00

1747 lines
31 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start unc_080B08A0
unc_080B08A0: @ 80B08A0
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B08D0 @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
movs r0, 0xF
strh r0, [r4, 0x2E]
ldr r0, _080B08D4 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B08D8 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B08D0: .4byte gBattleAnimArgs
_080B08D4: .4byte WaitAnimForDuration
_080B08D8: .4byte DestroyAnimSprite
thumb_func_end unc_080B08A0
thumb_func_start sub_80B08DC
sub_80B08DC: @ 80B08DC
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B0920 @ =gBattleAnimArgs
movs r1, 0xE
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080B0904
ldr r0, _080B0924 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B0904
ldrh r0, [r4, 0x2]
negs r0, r0
strh r0, [r4, 0x2]
ldrh r0, [r4, 0x6]
negs r0, r0
strh r0, [r4, 0x6]
_080B0904:
ldr r4, _080B0920 @ =gBattleAnimArgs
ldrb r1, [r4, 0xC]
adds r0, r5, 0
bl StartSpriteAnim
movs r0, 0
strh r0, [r4, 0xC]
adds r0, r5, 0
bl sub_8075F0C
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B0920: .4byte gBattleAnimArgs
_080B0924: .4byte gBattleAnimAttacker
thumb_func_end sub_80B08DC
thumb_func_start sub_80B0928
sub_80B0928: @ 80B0928
push {r4,lr}
adds r4, r0, 0
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080B0944
ldr r0, _080B0950 @ =gBattleAnimArgs
ldrh r1, [r0, 0x2]
negs r1, r1
strh r1, [r0, 0x2]
ldrh r1, [r0, 0x6]
negs r1, r1
strh r1, [r0, 0x6]
_080B0944:
adds r0, r4, 0
bl sub_80B08DC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B0950: .4byte gBattleAnimArgs
thumb_func_end sub_80B0928
thumb_func_start sub_80B0954
sub_80B0954: @ 80B0954
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B0974 @ =gBattleAnimArgs
ldrb r1, [r4, 0x8]
bl StartSpriteAnim
movs r1, 0x6
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B0978
adds r0, r5, 0
movs r1, 0x1
bl InitSpritePosToAnimAttacker
b _080B0980
.align 2, 0
_080B0974: .4byte gBattleAnimArgs
_080B0978:
adds r0, r5, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
_080B0980:
ldr r0, _080B0998 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
ldr r0, _080B099C @ =WaitAnimForDuration
str r0, [r5, 0x1C]
ldr r1, _080B09A0 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B0998: .4byte gBattleAnimArgs
_080B099C: .4byte WaitAnimForDuration
_080B09A0: .4byte DestroyAnimSprite
thumb_func_end sub_80B0954
thumb_func_start sub_80B09A4
sub_80B09A4: @ 80B09A4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
ldr r0, _080B09C0 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
mov r9, r0
cmp r1, 0
bne _080B09C8
ldr r0, _080B09C4 @ =gBattleAnimAttacker
b _080B09CA
.align 2, 0
_080B09C0: .4byte gBattleAnimArgs
_080B09C4: .4byte gBattleAnimAttacker
_080B09C8:
ldr r0, _080B0B10 @ =gBattleAnimTarget
_080B09CA:
ldrb r0, [r0]
mov r8, r0
mov r4, r9
movs r3, 0x4
ldrsh r0, [r4, r3]
cmp r0, 0
bge _080B09E8
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x5
bl __umodsi3
strh r0, [r4, 0x4]
_080B09E8:
ldrb r1, [r4, 0x4]
adds r0, r5, 0
bl StartSpriteAnim
mov r0, r8
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
mov r0, r8
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
mov r0, r8
movs r1, 0x1
bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r1, r0, 16
lsrs r0, 31
adds r1, r0
lsls r1, 15
lsrs r6, r1, 16
mov r0, r8
movs r1, 0
bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080B0A32
adds r0, 0x3
_080B0A32:
lsls r4, r0, 14
lsrs r4, 16
bl Random
lsls r0, 16
lsrs r0, 16
lsls r1, r6, 16
asrs r1, 16
bl __modsi3
lsls r0, 16
lsrs r6, r0, 16
bl Random
lsls r0, 16
lsrs r0, 16
lsls r4, 16
asrs r4, 16
adds r1, r4, 0
bl __modsi3
lsls r0, 16
lsrs r4, r0, 16
bl Random
movs r7, 0x1
adds r1, r7, 0
ands r1, r0
cmp r1, 0
beq _080B0A74
lsls r0, r6, 16
negs r0, r0
lsrs r6, r0, 16
_080B0A74:
bl Random
adds r1, r7, 0
ands r1, r0
cmp r1, 0
beq _080B0A86
lsls r0, r4, 16
negs r0, r0
lsrs r4, r0, 16
_080B0A86:
ldr r0, _080B0B14 @ =gBattlerPositions
add r0, r8
ldrb r1, [r0]
adds r0, r7, 0
ands r0, r1
cmp r0, 0
bne _080B0A9C
lsls r0, r4, 16
ldr r1, _080B0B18 @ =0xfff00000
adds r0, r1
lsrs r4, r0, 16
_080B0A9C:
lsls r0, r6, 16
asrs r0, 16
ldrh r2, [r5, 0x20]
adds r0, r2
strh r0, [r5, 0x20]
lsls r0, r4, 16
asrs r0, 16
ldrh r3, [r5, 0x22]
adds r0, r3
strh r0, [r5, 0x22]
mov r1, r9
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x2E]
ldr r0, _080B0B1C @ =gBasicHitSplatSpriteTemplate
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r3, 0x22
ldrsh r2, [r5, r3]
adds r3, r5, 0
adds r3, 0x43
ldrb r3, [r3]
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
bl CreateSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3C]
cmp r0, 0x40
beq _080B0B00
movs r0, 0x3C
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080B0B20 @ =gSprites
adds r0, r4
movs r1, 0
bl StartSpriteAffineAnim
movs r2, 0x3C
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, 0x1C
adds r0, r4
ldr r1, _080B0B24 @ =SpriteCallbackDummy
str r1, [r0]
_080B0B00:
ldr r0, _080B0B28 @ =sub_80B0B2C
str r0, [r5, 0x1C]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B0B10: .4byte gBattleAnimTarget
_080B0B14: .4byte gBattlerPositions
_080B0B18: .4byte 0xfff00000
_080B0B1C: .4byte gBasicHitSplatSpriteTemplate
_080B0B20: .4byte gSprites
_080B0B24: .4byte SpriteCallbackDummy
_080B0B28: .4byte sub_80B0B2C
thumb_func_end sub_80B09A4
thumb_func_start sub_80B0B2C
sub_80B0B2C: @ 80B0B2C
push {r4,r5,lr}
adds r5, r0, 0
ldrh r1, [r5, 0x2E]
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0
bne _080B0B74
movs r1, 0x3C
ldrsh r0, [r5, r1]
cmp r0, 0x40
beq _080B0B68
ldr r4, _080B0B70 @ =gSprites
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
movs r0, 0x3C
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
_080B0B68:
adds r0, r5, 0
bl DestroyAnimSprite
b _080B0B78
.align 2, 0
_080B0B70: .4byte gSprites
_080B0B74:
subs r0, r1, 0x1
strh r0, [r5, 0x2E]
_080B0B78:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B0B2C
thumb_func_start sub_80B0B80
sub_80B0B80: @ 80B0B80
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
movs r0, 0x1E
strh r0, [r4, 0x2E]
ldr r0, _080B0BA0 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B0BA4
ldrh r0, [r4, 0x20]
subs r0, 0x14
strh r0, [r4, 0x32]
b _080B0BB6
.align 2, 0
_080B0BA0: .4byte gBattleAnimArgs
_080B0BA4:
ldrh r0, [r4, 0x20]
adds r0, 0x14
strh r0, [r4, 0x32]
adds r2, r4, 0
adds r2, 0x3F
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
_080B0BB6:
ldrh r0, [r4, 0x22]
subs r0, 0x14
strh r0, [r4, 0x36]
ldr r0, _080B0BD0 @ =StartAnimLinearTranslation
str r0, [r4, 0x1C]
ldr r1, _080B0BD4 @ =sub_80B0BD8
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B0BD0: .4byte StartAnimLinearTranslation
_080B0BD4: .4byte sub_80B0BD8
thumb_func_end sub_80B0B80
thumb_func_start sub_80B0BD8
sub_80B0BD8: @ 80B0BD8
push {r4-r6,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x38]
adds r0, 0x1
movs r6, 0
strh r0, [r5, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xB
bne _080B0C18
ldrh r2, [r5, 0x20]
ldrh r4, [r5, 0x24]
subs r0, r2, r4
strh r0, [r5, 0x32]
ldrh r1, [r5, 0x22]
ldrh r3, [r5, 0x26]
subs r0, r1, r3
strh r0, [r5, 0x36]
movs r0, 0x8
strh r0, [r5, 0x2E]
adds r2, r4
strh r2, [r5, 0x20]
adds r1, r3
strh r1, [r5, 0x22]
strh r6, [r5, 0x26]
strh r6, [r5, 0x24]
ldr r0, _080B0C20 @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080B0C24 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080B0C18:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B0C20: .4byte StartAnimLinearTranslation
_080B0C24: .4byte DestroyAnimSprite
thumb_func_end sub_80B0BD8
thumb_func_start sub_80B0C28
sub_80B0C28: @ 80B0C28
push {r4-r6,lr}
adds r6, r0, 0
ldr r0, _080B0CA4 @ =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
ldr r2, _080B0CA8 @ =gBattleAnimTarget
eors r0, r1
ldrb r1, [r2]
cmp r0, r1
bne _080B0C54
ldrb r0, [r2]
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _080B0C54
ldr r1, _080B0CAC @ =gBattleAnimArgs
movs r2, 0
ldrsh r0, [r1, r2]
negs r0, r0
strh r0, [r1]
_080B0C54:
adds r0, r6, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
ldr r0, _080B0CA4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B0C72
ldr r1, _080B0CAC @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080B0C72:
ldr r4, _080B0CAC @ =gBattleAnimArgs
ldrh r0, [r4, 0x6]
movs r5, 0
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
ldrh r1, [r4, 0x4]
adds r0, r1
strh r0, [r6, 0x32]
ldrh r0, [r6, 0x22]
strh r0, [r6, 0x34]
strh r0, [r6, 0x36]
adds r0, r6, 0
bl InitAnimLinearTranslation
ldrh r0, [r4, 0xA]
strh r0, [r6, 0x38]
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x3A]
strh r5, [r6, 0x3C]
ldr r0, _080B0CB0 @ =sub_80B0CB4
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B0CA4: .4byte gBattleAnimAttacker
_080B0CA8: .4byte gBattleAnimTarget
_080B0CAC: .4byte gBattleAnimArgs
_080B0CB0: .4byte sub_80B0CB4
thumb_func_end sub_80B0C28
thumb_func_start sub_80B0CB4
sub_80B0CB4: @ 80B0CB4
push {r4,lr}
adds r4, r0, 0
bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080B0CE0
ldrh r0, [r4, 0x3C]
lsls r0, 16
asrs r0, 24
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Sin
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x3A]
ldrh r2, [r4, 0x3C]
adds r0, r2
strh r0, [r4, 0x3C]
b _080B0CE6
_080B0CE0:
adds r0, r4, 0
bl DestroyAnimSprite
_080B0CE6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B0CB4
thumb_func_start sub_80B0CEC
sub_80B0CEC: @ 80B0CEC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
ldr r5, _080B0D18 @ =gBattleAnimArgs
ldrb r1, [r5, 0x4]
adds r0, r4, 0
bl StartSpriteAnim
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldr r0, _080B0D1C @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B0D20 @ =sub_80B0D24
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B0D18: .4byte gBattleAnimArgs
_080B0D1C: .4byte WaitAnimForDuration
_080B0D20: .4byte sub_80B0D24
thumb_func_end sub_80B0CEC
thumb_func_start sub_80B0D24
sub_80B0D24: @ 80B0D24
push {r4,lr}
adds r4, r0, 0
movs r1, 0
bl StartSpriteAffineAnim
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
movs r0, 0x14
strh r0, [r4, 0x2E]
ldr r0, _080B0D50 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B0D54 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B0D50: .4byte WaitAnimForDuration
_080B0D54: .4byte DestroyAnimSprite
thumb_func_end sub_80B0D24
thumb_func_start sub_80B0D58
sub_80B0D58: @ 80B0D58
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
ldr r0, _080B0D74 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
ldr r0, _080B0D78 @ =sub_80B0D7C
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B0D74: .4byte gBattleAnimArgs
_080B0D78: .4byte sub_80B0D7C
thumb_func_end sub_80B0D58
thumb_func_start sub_80B0D7C
sub_80B0D7C: @ 80B0D7C
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
subs r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080B0DC0
movs r0, 0x6
strh r0, [r5, 0x2E]
ldr r4, _080B0DC8 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
ldr r0, _080B0DCC @ =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080B0DD0 @ =sub_80B0DD4
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080B0DC0:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B0DC8: .4byte gBattleAnimTarget
_080B0DCC: .4byte StartAnimLinearTranslation
_080B0DD0: .4byte sub_80B0DD4
thumb_func_end sub_80B0D7C
thumb_func_start sub_80B0DD4
sub_80B0DD4: @ 80B0DD4
push {lr}
movs r1, 0xF
strh r1, [r0, 0x2E]
ldr r1, _080B0DE8 @ =WaitAnimForDuration
str r1, [r0, 0x1C]
ldr r1, _080B0DEC @ =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
_080B0DE8: .4byte WaitAnimForDuration
_080B0DEC: .4byte DestroyAnimSprite
thumb_func_end sub_80B0DD4
thumb_func_start sub_80B0DF0
sub_80B0DF0: @ 80B0DF0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B0E1C
adds r0, r4, 0
movs r1, 0x1
bl InitSpritePosToAnimTarget
ldr r1, _080B0E18 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080B0E78
.align 2, 0
_080B0E18: .4byte gBattleAnimArgs
_080B0E1C:
ldrh r0, [r4, 0x30]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
movs r1, 0x34
ldrsh r0, [r4, r1]
movs r2, 0x32
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x34]
adds r0, 0x3
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x34]
cmp r0, 0x64
ble _080B0E6A
movs r0, 0x34
ldrsh r1, [r4, r0]
lsrs r0, r1, 31
adds r0, r1, r0
asrs r0, 1
lsls r0, 1
subs r1, r0
adds r3, r4, 0
adds r3, 0x3E
movs r0, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r3]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_080B0E6A:
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0x78
ble _080B0E78
adds r0, r4, 0
bl DestroyAnimSprite
_080B0E78:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B0DF0
thumb_func_start sub_80B0E80
sub_80B0E80: @ 80B0E80
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080B0E94 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B0E9C
ldr r4, _080B0E98 @ =gBattleAnimAttacker
b _080B0E9E
.align 2, 0
_080B0E94: .4byte gBattleAnimArgs
_080B0E98: .4byte gBattleAnimAttacker
_080B0E9C:
ldr r4, _080B0EE4 @ =gBattleAnimTarget
_080B0E9E:
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r1, _080B0EE8 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
ldrh r2, [r5, 0x20]
adds r0, r2
movs r2, 0
strh r0, [r5, 0x20]
ldrh r0, [r1, 0x4]
ldrh r3, [r5, 0x22]
adds r0, r3
strh r0, [r5, 0x22]
strh r2, [r5, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x32]
strh r2, [r5, 0x34]
ldr r0, _080B0EEC @ =sub_80B0EF0
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B0EE4: .4byte gBattleAnimTarget
_080B0EE8: .4byte gBattleAnimArgs
_080B0EEC: .4byte sub_80B0EF0
thumb_func_end sub_80B0E80
thumb_func_start sub_80B0EF0
sub_80B0EF0: @ 80B0EF0
push {lr}
adds r1, r0, 0
movs r0, 0x2E
ldrsh r2, [r1, r0]
cmp r2, 0
beq _080B0F02
cmp r2, 0x1
beq _080B0F26
b _080B0F60
_080B0F02:
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
cmp r0, 0
bne _080B0F60
movs r2, 0x32
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080B0F1E
adds r0, r1, 0
bl DestroyAnimSprite
b _080B0F60
_080B0F1E:
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
b _080B0F60
_080B0F26:
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B0F4E
movs r0, 0
strh r0, [r1, 0x30]
ldrh r0, [r1, 0x34]
adds r0, 0x1
strh r0, [r1, 0x34]
ands r0, r2
lsls r0, 16
cmp r0, 0
beq _080B0F4A
movs r0, 0x2
b _080B0F4C
_080B0F4A:
ldr r0, _080B0F64 @ =0x0000fffe
_080B0F4C:
strh r0, [r1, 0x24]
_080B0F4E:
ldrh r0, [r1, 0x32]
subs r0, 0x1
strh r0, [r1, 0x32]
lsls r0, 16
cmp r0, 0
bne _080B0F60
adds r0, r1, 0
bl DestroyAnimSprite
_080B0F60:
pop {r0}
bx r0
.align 2, 0
_080B0F64: .4byte 0x0000fffe
thumb_func_end sub_80B0EF0
thumb_func_start sub_80B0F68
sub_80B0F68: @ 80B0F68
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080B0F8C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080B0F94
ldr r4, _080B0F90 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x4]
adds r0, r2
b _080B0FA6
.align 2, 0
_080B0F8C: .4byte gBattleAnimArgs
_080B0F90: .4byte gBattleAnimAttacker
_080B0F94:
ldr r4, _080B0FF0 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
adds r0, r1
_080B0FA6:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
adds r0, r6
strh r0, [r5, 0x22]
ldrh r2, [r5, 0x4]
lsls r1, r2, 22
lsrs r1, 22
ldr r3, _080B0FF4 @ =gBattleAnimArgs
movs r4, 0x2
ldrsh r0, [r3, r4]
lsls r0, 4
adds r1, r0
ldr r4, _080B0FF8 @ =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, _080B0FFC @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
movs r1, 0
movs r0, 0
strh r0, [r5, 0x2E]
movs r2, 0x2
ldrsh r0, [r3, r2]
cmp r0, 0x1
beq _080B1014
cmp r0, 0x1
bgt _080B1000
cmp r0, 0
beq _080B100A
b _080B103A
.align 2, 0
_080B0FF0: .4byte gBattleAnimTarget
_080B0FF4: .4byte gBattleAnimArgs
_080B0FF8: .4byte 0x000003ff
_080B0FFC: .4byte 0xfffffc00
_080B1000:
cmp r0, 0x2
beq _080B1024
cmp r0, 0x3
beq _080B1034
b _080B103A
_080B100A:
ldr r0, _080B1010 @ =0x0000fffd
b _080B1034
.align 2, 0
_080B1010: .4byte 0x0000fffd
_080B1014:
movs r0, 0x3
strh r0, [r5, 0x3A]
ldr r0, _080B1020 @ =0x0000fffd
strh r0, [r5, 0x3C]
b _080B1042
.align 2, 0
_080B1020: .4byte 0x0000fffd
_080B1024:
ldr r0, _080B1030 @ =0x0000fffd
strh r0, [r5, 0x3A]
movs r0, 0x3
strh r0, [r5, 0x3C]
b _080B1042
.align 2, 0
_080B1030: .4byte 0x0000fffd
_080B1034:
strh r0, [r5, 0x3A]
strh r0, [r5, 0x3C]
b _080B1042
_080B103A:
adds r0, r5, 0
bl DestroyAnimSprite
b _080B1046
_080B1042:
ldr r0, _080B104C @ =sub_80B1050
str r0, [r5, 0x1C]
_080B1046:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B104C: .4byte sub_80B1050
thumb_func_end sub_80B0F68
thumb_func_start sub_80B1050
sub_80B1050: @ 80B1050
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x3A]
ldrh r2, [r1, 0x20]
adds r0, r2
strh r0, [r1, 0x20]
ldrh r0, [r1, 0x3C]
ldrh r2, [r1, 0x22]
adds r0, r2
strh r0, [r1, 0x22]
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x28
ble _080B1078
adds r0, r1, 0
bl DestroyAnimSprite
_080B1078:
pop {r0}
bx r0
thumb_func_end sub_80B1050
thumb_func_start sub_80B107C
sub_80B107C: @ 80B107C
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080B10C8 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B10D8
ldr r4, _080B10CC @ =gBattlerAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r0, _080B10D0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
ldr r0, _080B10D4 @ =gBattleAnimTarget
b _080B10F4
.align 2, 0
_080B10C8: .4byte gBattleAnimArgs
_080B10CC: .4byte gBattlerAttacker
_080B10D0: .4byte gBattleAnimAttacker
_080B10D4: .4byte gBattleAnimTarget
_080B10D8:
ldr r0, _080B1110 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
ldr r0, _080B1114 @ =gBattleAnimAttacker
_080B10F4:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
movs r0, 0
strh r0, [r5, 0x2E]
movs r0, 0xC
strh r0, [r5, 0x30]
movs r0, 0x8
strh r0, [r5, 0x32]
ldr r0, _080B1118 @ =sub_80B111C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B1110: .4byte gBattleAnimTarget
_080B1114: .4byte gBattleAnimAttacker
_080B1118: .4byte sub_80B111C
thumb_func_end sub_80B107C
thumb_func_start sub_80B111C
sub_80B111C: @ 80B111C
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, 0xB4
bne _080B1178
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x10
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
bl InitAnimLinearTranslation
ldr r1, _080B1180 @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080B1184 @ =sub_807563C
str r0, [r4, 0x1C]
_080B1178:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B1180: .4byte DestroySpriteAndMatrix
_080B1184: .4byte sub_807563C
thumb_func_end sub_80B111C
thumb_func_start sub_80B1188
sub_80B1188: @ 80B1188
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B11D4 @ =gBattleAnimArgs
ldrh r0, [r4]
strh r0, [r5, 0x20]
movs r2, 0x78
strh r2, [r5, 0x22]
ldrh r0, [r4, 0x6]
strh r0, [r5, 0x2E]
adds r0, r5, 0
adds r0, 0x36
adds r1, r5, 0
adds r1, 0x38
lsls r2, 8
bl StorePointerInVars
ldrh r0, [r4, 0x2]
strh r0, [r5, 0x3A]
ldrh r2, [r5, 0x4]
lsls r1, r2, 22
lsrs r1, 22
movs r3, 0x4
ldrsh r0, [r4, r3]
lsls r0, 2
adds r1, r0
ldr r3, _080B11D8 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080B11DC @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
ldr r0, _080B11E0 @ =sub_80B11E4
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B11D4: .4byte gBattleAnimArgs
_080B11D8: .4byte 0x000003ff
_080B11DC: .4byte 0xfffffc00
_080B11E0: .4byte sub_80B11E4
thumb_func_end sub_80B1188
thumb_func_start sub_80B11E4
sub_80B11E4: @ 80B11E4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
movs r1, 0x2E
ldrsh r0, [r7, r1]
cmp r0, 0
beq _080B1236
movs r2, 0x36
ldrsh r0, [r7, r2]
movs r2, 0x38
ldrsh r1, [r7, r2]
bl LoadPointerFromVars
adds r4, r0, 0
movs r1, 0x3A
ldrsh r0, [r7, r1]
subs r4, r0
adds r0, r7, 0
adds r0, 0x36
adds r1, r7, 0
adds r1, 0x38
adds r2, r4, 0
bl StorePointerInVars
asrs r4, 8
strh r4, [r7, 0x22]
lsls r4, 16
asrs r4, 16
movs r0, 0x8
negs r0, r0
cmp r4, r0
bge _080B122E
adds r0, r7, 0
bl DestroyAnimSprite
b _080B128C
_080B122E:
ldrh r0, [r7, 0x2E]
subs r0, 0x1
strh r0, [r7, 0x2E]
b _080B128C
_080B1236:
ldr r4, _080B1298 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldr r2, _080B129C @ =gBattleAnimTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0x2
bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
subs r4, r6
strh r4, [r7, 0x2E]
lsrs r0, 24
subs r0, r5
strh r0, [r7, 0x30]
ldrh r0, [r7, 0x20]
lsls r0, 4
strh r0, [r7, 0x32]
ldrh r0, [r7, 0x22]
lsls r0, 4
strh r0, [r7, 0x34]
ldr r0, _080B12A0 @ =sub_80B12A4
str r0, [r7, 0x1C]
_080B128C:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B1298: .4byte gBattleAnimAttacker
_080B129C: .4byte gBattleAnimTarget
_080B12A0: .4byte sub_80B12A4
thumb_func_end sub_80B11E4
thumb_func_start sub_80B12A4
sub_80B12A4: @ 80B12A4
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x32]
adds r0, r1
strh r0, [r2, 0x32]
ldrh r1, [r2, 0x30]
ldrh r3, [r2, 0x34]
adds r1, r3
strh r1, [r2, 0x34]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
lsls r1, 16
asrs r3, r1, 20
strh r3, [r2, 0x22]
adds r0, 0x8
lsls r0, 16
movs r1, 0x80
lsls r1, 17
cmp r0, r1
bhi _080B12DE
adds r1, r3, 0
movs r0, 0x8
negs r0, r0
cmp r1, r0
blt _080B12DE
cmp r1, 0x78
ble _080B12E4
_080B12DE:
adds r0, r2, 0
bl DestroyAnimSprite
_080B12E4:
pop {r0}
bx r0
thumb_func_end sub_80B12A4
thumb_func_start sub_80B12E8
sub_80B12E8: @ 80B12E8
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080B131C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B132C
ldr r4, _080B1320 @ =gBattlerAttacker
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r0, _080B1324 @ =gBattleAnimTarget
ldrb r4, [r0]
ldr r0, _080B1328 @ =gBattleAnimAttacker
b _080B1332
.align 2, 0
_080B131C: .4byte gBattleAnimArgs
_080B1320: .4byte gBattlerAttacker
_080B1324: .4byte gBattleAnimTarget
_080B1328: .4byte gBattleAnimAttacker
_080B132C:
ldr r0, _080B1364 @ =gBattleAnimAttacker
ldrb r4, [r0]
ldr r0, _080B1368 @ =gBattleAnimTarget
_080B1332:
ldrb r0, [r0]
bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080B136C
ldrb r2, [r5, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x8
orrs r1, r0
lsls r1, 1
subs r0, 0x47
b _080B1386
.align 2, 0
_080B1364: .4byte gBattleAnimAttacker
_080B1368: .4byte gBattleAnimTarget
_080B136C:
adds r0, r4, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B138C
ldrb r2, [r5, 0x3]
lsls r1, r2, 26
lsrs r1, 27
movs r0, 0x18
orrs r1, r0
lsls r1, 1
subs r0, 0x57
_080B1386:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x3]
_080B138C:
movs r0, 0x10
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
adds r0, r4, 0
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x22]
strh r0, [r5, 0x34]
adds r0, r4, 0
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
bl InitAnimLinearTranslation
ldr r1, _080B13CC @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, _080B13D0 @ =sub_807563C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B13CC: .4byte DestroyAnimSprite
_080B13D0: .4byte sub_807563C
thumb_func_end sub_80B12E8
thumb_func_start sub_80B13D4
sub_80B13D4: @ 80B13D4
push {r4,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r1, [r4, r0]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r1, r0
bne _080B13EA
adds r0, r4, 0
bl DestroyAnimSprite
_080B13EA:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B13D4
thumb_func_start sub_80B13F8
sub_80B13F8: @ 80B13F8
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _080B1474 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r1, _080B1478 @ =gBattleAnimArgs
ldrh r0, [r1, 0x6]
strh r0, [r5, 0x30]
ldrh r0, [r1]
strh r0, [r5, 0x32]
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x34]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x36]
ldr r0, _080B147C @ =gAnimMoveTurn
ldrb r6, [r0]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B1442
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_080B1442:
movs r0, 0x1
ands r6, r0
cmp r6, 0
beq _080B1456
ldrh r0, [r5, 0x32]
negs r0, r0
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x30]
adds r0, 0x1
strh r0, [r5, 0x30]
_080B1456:
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl StartSpriteAnim
ldrh r0, [r5, 0x32]
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x34]
strh r0, [r5, 0x26]
ldr r0, _080B1480 @ =sub_80B13D4
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B1474: .4byte gBattleAnimTarget
_080B1478: .4byte gBattleAnimArgs
_080B147C: .4byte gAnimMoveTurn
_080B1480: .4byte sub_80B13D4
thumb_func_end sub_80B13F8
thumb_func_start sub_80B1484
sub_80B1484: @ 80B1484
push {r4,lr}
adds r4, r0, 0
ldr r0, _080B149C @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B14A0
adds r0, r4, 0
movs r1, 0
bl InitSpritePosToAnimAttacker
b _080B14A8
.align 2, 0
_080B149C: .4byte gBattleAnimArgs
_080B14A0:
adds r0, r4, 0
movs r1, 0
bl InitSpritePosToAnimTarget
_080B14A8:
bl IsContest
lsls r0, 24
cmp r0, 0
beq _080B14BC
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
b _080B14D2
_080B14BC:
ldr r0, _080B14E4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B14D2
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_080B14D2:
ldr r0, _080B14E8 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080B14EC @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B14E4: .4byte gBattleAnimAttacker
_080B14E8: .4byte RunStoredCallbackWhenAnimEnds
_080B14EC: .4byte DestroyAnimSprite
thumb_func_end sub_80B1484
thumb_func_start sub_80B14F0
sub_80B14F0: @ 80B14F0
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080B152A
ldrh r0, [r4, 0x30]
adds r0, 0x28
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x2
bl Sin
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x28
ble _080B152A
adds r0, r4, 0
bl DestroyAnimSprite
_080B152A:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B14F0
thumb_func_start sub_80B1530
sub_80B1530: @ 80B1530
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080B1560 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080B1568
cmp r0, 0x1
bgt _080B1582
cmp r0, 0
bne _080B1582
movs r0, 0
bl sub_8075458
ldr r0, _080B1564 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r4, 0x18]
b _080B157A
.align 2, 0
_080B1560: .4byte gTasks
_080B1564: .4byte gBattleAnimArgs
_080B1568:
ldrh r0, [r4, 0x18]
subs r0, 0x1
strh r0, [r4, 0x18]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080B158E
_080B157A:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B158E
_080B1582:
movs r2, 0xA0
lsls r2, 3
adds r0, r2, 0
ldrh r1, [r4, 0x1A]
adds r0, r1
strh r0, [r4, 0x1A]
_080B158E:
movs r2, 0xB0
lsls r2, 4
adds r0, r2, 0
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r4, 0x1C]
ldr r0, _080B15BC @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B15C4
ldr r1, _080B15C0 @ =gBattle_BG3_X
ldrh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 24
ldrh r2, [r1]
adds r0, r2
strh r0, [r1]
adds r7, r1, 0
b _080B15D4
.align 2, 0
_080B15BC: .4byte gBattleAnimTarget
_080B15C0: .4byte gBattle_BG3_X
_080B15C4:
ldr r2, _080B1614 @ =gBattle_BG3_X
ldrh r1, [r4, 0x1A]
lsls r1, 16
asrs r1, 24
ldrh r0, [r2]
subs r0, r1
strh r0, [r2]
adds r7, r2, 0
_080B15D4:
ldr r3, _080B1618 @ =gBattle_BG3_Y
ldrh r2, [r4, 0x1C]
lsls r0, r2, 16
asrs r0, 24
ldrh r1, [r3]
adds r0, r1
strh r0, [r3]
movs r0, 0xFF
ldrb r1, [r4, 0x1A]
movs r5, 0
strh r1, [r4, 0x1A]
ands r0, r2
strh r0, [r4, 0x1C]
ldr r0, _080B161C @ =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080B160C
strh r5, [r7]
strh r5, [r3]
movs r0, 0x1
bl sub_8075458
adds r0, r6, 0
bl DestroyAnimVisualTask
_080B160C:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B1614: .4byte gBattle_BG3_X
_080B1618: .4byte gBattle_BG3_Y
_080B161C: .4byte gBattleAnimArgs
thumb_func_end sub_80B1530
.align 2, 0 @ Don't pad with nop.