pokeemerald/asm/pokeball.s
2017-10-22 18:43:15 +02:00

2862 lines
44 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80753E8
sub_80753E8: @ 80753E8
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
ldr r1, =gDoingBattleAnim
movs r0, 0x1
strb r0, [r1]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x8
orrs r1, r2
strb r1, [r0]
ldr r0, =sub_8075450
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
strh r4, [r1, 0xA]
strh r5, [r1, 0xC]
ldrb r0, [r6]
strh r0, [r1, 0xE]
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.pool
thumb_func_end sub_80753E8
thumb_func_start sub_8075450
sub_8075450: @ 8075450
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r0, 0
str r0, [sp]
ldr r1, =gTasks
mov r2, r10
lsls r0, r2, 2
add r0, r10
lsls r0, 3
adds r1, r0, r1
ldrh r2, [r1, 0x8]
movs r3, 0x8
ldrsh r0, [r1, r3]
cmp r0, 0
bne _08075488
adds r0, r2, 0x1
strh r0, [r1, 0x8]
b _08075602
.pool
_08075488:
ldrh r0, [r1, 0xC]
mov r8, r0
ldrb r5, [r1, 0xE]
adds r0, r5, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _080754B4
ldr r1, =gBattlePartyID
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
b _080754C2
.pool
_080754B4:
ldr r1, =gBattlePartyID
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
_080754C2:
adds r0, r1
movs r1, 0x26
bl GetMonData
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl sub_8076A78
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
ldr r1, =gUnknown_0832C588
adds r0, r1
movs r1, 0x20
movs r2, 0x50
movs r3, 0x1D
bl CreateSprite
lsls r0, 24
lsrs r7, r0, 24
ldr r2, =gSprites
mov r9, r2
lsls r0, r7, 4
adds r0, r7
lsls r6, r0, 2
adds r4, r6, r2
movs r0, 0x80
strh r0, [r4, 0x2E]
movs r3, 0
strh r3, [r4, 0x30]
mov r0, r8
strh r0, [r4, 0x3C]
mov r2, r8
cmp r2, 0xFE
beq _08075548
cmp r2, 0xFF
bne _08075584
ldr r0, =gBankTarget
strb r5, [r0]
movs r0, 0x18
strh r0, [r4, 0x20]
movs r0, 0x44
strh r0, [r4, 0x22]
mov r0, r9
adds r0, 0x1C
adds r0, r6, r0
ldr r1, =sub_80761B4
str r1, [r0]
b _08075592
.pool
_08075548:
adds r0, r5, 0
movs r1, 0
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x1
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
adds r0, 0x18
strh r0, [r4, 0x22]
ldr r0, =gBankTarget
strb r5, [r0]
movs r3, 0
strh r3, [r4, 0x2E]
mov r0, r9
adds r0, 0x1C
adds r0, r6, r0
ldr r1, =sub_8076398
str r1, [r0]
b _08075592
.pool
_08075584:
movs r0, 0x1
bl GetBankByIdentity
ldr r1, =gBankTarget
strb r0, [r1]
movs r0, 0x1
str r0, [sp]
_08075592:
ldr r0, =gSprites
lsls r1, r7, 4
adds r1, r7
lsls r1, 2
adds r4, r1, r0
ldr r5, =gBankTarget
ldrb r0, [r5]
strh r0, [r4, 0x3A]
ldr r2, [sp]
cmp r2, 0
bne _080755B8
mov r0, r10
bl DestroyTask
b _08075602
.pool
_080755B8:
movs r0, 0x22
strh r0, [r4, 0x2E]
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x1
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
strh r0, [r4, 0x36]
ldr r0, =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_80A68D4
mov r3, r10
strh r3, [r4, 0x6]
ldr r1, =gTasks
mov r2, r10
lsls r0, r2, 2
add r0, r10
lsls r0, 3
adds r0, r1
ldrb r1, [r5]
strh r1, [r0, 0x10]
ldr r1, =TaskDummy
str r1, [r0]
movs r0, 0x3D
bl PlaySE
_08075602:
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_8075450
thumb_func_start objc_0804ABD4
objc_0804ABD4: @ 8075620
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r7, r0, 0
bl sub_80A6900
lsls r0, 24
cmp r0, 0
beq _080756C0
ldrb r6, [r7, 0x6]
ldr r1, =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r1
ldrb r5, [r0, 0x10]
ldrb r0, [r0, 0xC]
mov r8, r0
adds r0, r7, 0
movs r1, 0x1
bl StartSpriteAnim
adds r2, r7, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
ldrh r0, [r7, 0x24]
ldrh r1, [r7, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r7, 0x20]
ldrh r0, [r7, 0x26]
ldrh r2, [r7, 0x22]
adds r0, r2
strh r0, [r7, 0x22]
strh r1, [r7, 0x24]
strh r1, [r7, 0x26]
strh r1, [r7, 0x38]
adds r0, r5, 0
bl sub_8076B14
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
ldrh r0, [r7, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r7, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
lsls r4, 24
lsrs r4, 24
str r4, [sp]
movs r2, 0x1
movs r3, 0x1C
bl sub_8171D98
movs r0, 0
adds r1, r5, 0
movs r2, 0xE
adds r3, r4, 0
bl sub_81729E8
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x2E]
strh r5, [r7, 0x3A]
mov r0, r8
strh r0, [r7, 0x3C]
adds r0, r6, 0
bl DestroyTask
ldr r0, =sub_80756D4
str r0, [r7, 0x1C]
_080756C0:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end objc_0804ABD4
thumb_func_start sub_80756D4
sub_80756D4: @ 80756D4
ldr r1, =sub_80756E0
str r1, [r0, 0x1C]
bx lr
.pool
thumb_func_end sub_80756D4
thumb_func_start sub_80756E0
sub_80756E0: @ 80756E0
push {r4-r7,lr}
adds r6, r0, 0
ldrh r0, [r6, 0x38]
adds r0, 0x1
movs r7, 0
strh r0, [r6, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _0807573A
strh r7, [r6, 0x38]
ldr r0, =sub_807574C
str r0, [r6, 0x1C]
ldr r5, =gBankSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, =gSprites
adds r0, r4
movs r1, 0x2
bl StartSpriteAffineAnim
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl AnimateSprite
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
strh r7, [r0, 0x30]
_0807573A:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80756E0
thumb_func_start sub_807574C
sub_807574C: @ 807574C
push {r4-r6,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xB
bne _08075764
movs r0, 0x3C
bl PlaySE
_08075764:
ldr r6, =gSprites
ldr r5, =gBankSpriteIds
movs r1, 0x3A
ldrsh r0, [r4, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r6
adds r0, r1, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _080757BC
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAnim
movs r2, 0x3A
ldrsh r0, [r4, r2]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
movs r0, 0
strh r0, [r4, 0x38]
ldr r0, =sub_80757E4
str r0, [r4, 0x1C]
b _080757DC
.pool
_080757BC:
ldrh r0, [r1, 0x30]
adds r0, 0x60
strh r0, [r1, 0x30]
movs r1, 0x3A
ldrsh r0, [r4, r1]
adds r0, r5
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
movs r2, 0x30
ldrsh r0, [r1, r2]
negs r0, r0
asrs r0, 8
strh r0, [r1, 0x26]
_080757DC:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_807574C
thumb_func_start sub_80757E4
sub_80757E4: @ 80757E4
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0807582C
ldrh r0, [r4, 0x38]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _0807582C
strh r1, [r4, 0x34]
movs r0, 0x20
strh r0, [r4, 0x36]
strh r1, [r4, 0x38]
movs r0, 0
movs r1, 0x20
bl Cos
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
movs r0, 0x36
ldrsh r1, [r4, r0]
movs r0, 0
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldr r0, =sub_8075838
str r0, [r4, 0x1C]
_0807582C:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80757E4
thumb_func_start sub_8075838
sub_8075838: @ 8075838
push {r4,r5,lr}
adds r4, r0, 0
movs r5, 0
ldrh r0, [r4, 0x34]
movs r1, 0xFF
ands r1, r0
cmp r1, 0
beq _0807584E
cmp r1, 0x1
beq _080758C2
b _080758EE
_0807584E:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r2, 0x36
ldrsh r1, [r4, r2]
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldrh r1, [r4, 0x38]
adds r1, 0x4
ldrh r2, [r4, 0x34]
lsls r0, r2, 16
asrs r0, 24
adds r1, r0
strh r1, [r4, 0x38]
lsls r1, 16
asrs r1, 16
cmp r1, 0x3F
ble _080758EE
ldrh r0, [r4, 0x36]
subs r0, 0xA
strh r0, [r4, 0x36]
ldr r1, =0x00000101
adds r0, r2, r1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 24
cmp r0, 0x4
bne _0807588A
movs r5, 0x1
_0807588A:
cmp r0, 0x2
beq _080758AA
cmp r0, 0x2
bgt _0807589C
cmp r0, 0x1
beq _080758A2
b _080758BA
.pool
_0807589C:
cmp r0, 0x3
beq _080758B2
b _080758BA
_080758A2:
movs r0, 0x38
bl PlaySE
b _080758EE
_080758AA:
movs r0, 0x39
bl PlaySE
b _080758EE
_080758B2:
movs r0, 0x3A
bl PlaySE
b _080758EE
_080758BA:
movs r0, 0x3B
bl PlaySE
b _080758EE
_080758C2:
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r2, 0x36
ldrsh r1, [r4, r2]
bl Cos
negs r0, r0
strh r0, [r4, 0x26]
ldrh r1, [r4, 0x38]
subs r1, 0x4
ldrh r2, [r4, 0x34]
lsls r0, r2, 16
asrs r0, 24
subs r1, r0
strh r1, [r4, 0x38]
lsls r1, 16
cmp r1, 0
bgt _080758EE
strh r5, [r4, 0x38]
ldr r0, =0xffffff00
ands r0, r2
strh r0, [r4, 0x34]
_080758EE:
cmp r5, 0
beq _08075926
movs r5, 0
strh r5, [r4, 0x34]
movs r0, 0x40
movs r1, 0x20
bl Cos
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
strh r5, [r4, 0x26]
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0807591C
ldr r0, =sub_8075D14
str r0, [r4, 0x1C]
b _08075926
.pool
_0807591C:
ldr r0, =sub_8075930
str r0, [r4, 0x1C]
movs r0, 0x1
strh r0, [r4, 0x36]
strh r5, [r4, 0x38]
_08075926:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8075838
thumb_func_start sub_8075930
sub_8075930: @ 8075930
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _08075964
movs r0, 0
strh r0, [r4, 0x34]
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
ldr r0, =sub_8075970
str r0, [r4, 0x1C]
movs r0, 0x17
bl PlaySE
_08075964:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8075930
thumb_func_start sub_8075970
sub_8075970: @ 8075970
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x34]
movs r1, 0xFF
ands r1, r0
cmp r1, 0x4
bhi _08075A70
lsls r0, r1, 2
ldr r1, =_0807598C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0807598C:
.4byte _080759A0
.4byte _080759D2
.4byte _080759A0
.4byte _08075A26
.4byte _08075A70
_080759A0:
ldrh r0, [r4, 0x36]
ldrh r2, [r4, 0x24]
adds r1, r0, r2
strh r1, [r4, 0x24]
ldrh r1, [r4, 0x38]
adds r0, r1
strh r0, [r4, 0x38]
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
ldrh r0, [r4, 0x38]
adds r0, 0x3
lsls r0, 16
lsrs r0, 16
cmp r0, 0x6
bls _08075AB6
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
movs r0, 0
strh r0, [r4, 0x38]
b _08075AB6
_080759D2:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _08075A18
movs r0, 0
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x36]
negs r0, r0
strh r0, [r4, 0x36]
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
adds r2, r4, 0
adds r2, 0x2C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
movs r2, 0x36
ldrsh r0, [r4, r2]
cmp r0, 0
bge _08075A0E
adds r0, r4, 0
movs r1, 0x2
bl ChangeSpriteAffineAnim
b _08075AB6
_08075A0E:
adds r0, r4, 0
movs r1, 0x1
bl ChangeSpriteAffineAnim
b _08075AB6
_08075A18:
adds r0, r4, 0
adds r0, 0x2C
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
b _08075AB6
_08075A26:
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r2, [r4, 0x34]
adds r0, r2
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 24
movs r2, 0x3C
ldrsh r1, [r4, r2]
cmp r0, r1
bne _08075A48
ldr r0, =sub_8075D14
str r0, [r4, 0x1C]
b _08075AB6
.pool
_08075A48:
cmp r1, 0x4
bne _08075A5C
cmp r0, 0x3
bne _08075A5C
ldr r0, =sub_8075FB4
str r0, [r4, 0x1C]
b _08075A62
.pool
_08075A5C:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
_08075A62:
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
b _08075AB6
_08075A70:
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1F
bne _08075AB6
movs r0, 0
strh r0, [r4, 0x38]
ldrh r1, [r4, 0x34]
ldr r0, =0xffffff00
ands r0, r1
strh r0, [r4, 0x34]
adds r0, r4, 0
movs r1, 0x3
bl StartSpriteAffineAnim
movs r1, 0x36
ldrsh r0, [r4, r1]
cmp r0, 0
bge _08075AA8
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAffineAnim
b _08075AB0
.pool
_08075AA8:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_08075AB0:
movs r0, 0x17
bl PlaySE
_08075AB6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075970
thumb_func_start c3_0804B070
c3_0804B070: @ 8075ABC
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r4, r0, 24
ldr r2, =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r2
ldrb r1, [r0, 0xC]
mov r12, r1
ldrb r5, [r0, 0xA]
ldrh r6, [r0, 0x8]
ldrb r3, [r0, 0xE]
mov r8, r3
ldrb r7, [r0, 0x10]
movs r3, 0x12
ldrsh r1, [r0, r3]
lsls r3, r1, 16
ldrh r1, [r0, 0x14]
orrs r3, r1
movs r1, 0x26
ldrsh r0, [r0, r1]
cmp r0, 0x20
bhi _08075B88
lsls r0, 2
ldr r1, =_08075B04
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08075B04:
.4byte _08075B88
.4byte _08075BB4
.4byte _08075BDA
.4byte _08075C54
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075BF8
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075B88
.4byte _08075C66
.4byte _08075C7E
.4byte _08075CA8
_08075B88:
ldr r0, =gSprites
lsls r1, r7, 4
adds r1, r7
lsls r1, 2
adds r1, r0
adds r1, 0x3F
ldrb r0, [r1]
lsls r0, 26
cmp r0, 0
blt _08075B9E
b _08075D04
_08075B9E:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r2
mov r1, r12
adds r1, 0x1
strh r1, [r0, 0x26]
b _08075D04
.pool
_08075BB4:
adds r0, r3, 0
bl sub_805F110
cmp r0, 0x1
bne _08075BCC
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0
bl PlayCry3
b _08075C2E
_08075BCC:
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0xB
bl PlayCry3
b _08075C2E
_08075BDA:
bl StopCryAndClearCrySongs
ldr r1, =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r1, 0x3
strh r1, [r0, 0x1C]
movs r1, 0x14
strh r1, [r0, 0x26]
b _08075D04
.pool
_08075BF8:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r7, 0x1C
ldrsh r0, [r1, r7]
cmp r0, 0
bne _08075CBA
adds r0, r3, 0
bl sub_805F110
cmp r0, 0x1
bne _08075C22
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0x1
bl PlayCry4
b _08075C2E
_08075C22:
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0xC
bl PlayCry4
_08075C2E:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
lsls r1, r2, 1
add r1, r8
lsls r1, 2
adds r1, r0
ldrb r2, [r1, 0x1]
movs r0, 0x41
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1]
adds r0, r4, 0
bl DestroyTask
b _08075D04
.pool
_08075C54:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r2
movs r1, 0x6
strh r1, [r0, 0x1C]
movs r1, 0x1E
strh r1, [r0, 0x26]
b _08075D04
_08075C66:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r3, 0x1C
ldrsh r0, [r1, r3]
cmp r0, 0
bne _08075CBA
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
_08075C7E:
bl IsCryPlayingOrClearCrySongs
lsls r0, 24
cmp r0, 0
bne _08075D04
bl StopCryAndClearCrySongs
ldr r0, =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x3
strh r0, [r1, 0x1C]
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
b _08075D04
.pool
_08075CA8:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r2
ldrh r2, [r1, 0x1C]
movs r7, 0x1C
ldrsh r0, [r1, r7]
cmp r0, 0
beq _08075CC0
_08075CBA:
subs r0, r2, 0x1
strh r0, [r1, 0x1C]
b _08075D04
_08075CC0:
adds r0, r3, 0
bl sub_805F110
cmp r0, 0x1
bne _08075CD8
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0
bl PlayCry4
b _08075CE4
_08075CD8:
lsls r1, r5, 24
asrs r1, 24
adds r0, r6, 0
movs r2, 0xB
bl PlayCry4
_08075CE4:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
lsls r1, r2, 1
add r1, r8
lsls r1, 2
adds r1, r0
ldrb r2, [r1, 0x1]
movs r0, 0x41
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1]
adds r0, r4, 0
bl DestroyTask
_08075D04:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end c3_0804B070
thumb_func_start sub_8075D14
sub_8075D14: @ 8075D14
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r6, r0, 0
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r5, r0, 24
adds r0, r6, 0
movs r1, 0x1
bl StartSpriteAnim
adds r0, r5, 0
bl sub_8076B14
lsls r0, 16
lsrs r0, 16
bl ball_number_to_ball_processing_index
adds r4, r0, 0
ldrh r0, [r6, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
lsls r4, 24
lsrs r4, 24
str r4, [sp]
movs r2, 0x1
movs r3, 0x1C
bl sub_8171D98
ldrh r1, [r6, 0x3A]
lsls r1, 24
lsrs r1, 24
movs r0, 0x1
movs r2, 0xE
adds r3, r4, 0
bl sub_81729E8
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x2E]
ldr r0, =sub_8075FD4
str r0, [r6, 0x1C]
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08075D88
b _08075EF4
_08075D88:
adds r0, r5, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _08075DC0
ldr r0, =gBattlePartyID
lsls r2, r5, 1
adds r0, r2, r0
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, =gEnemyParty
adds r7, r1, r0
movs r4, 0x19
mov r10, r4
b _08075DD4
.pool
_08075DC0:
ldr r0, =gBattlePartyID
lsls r2, r5, 1
adds r0, r2, r0
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, =gPlayerParty
adds r7, r1, r0
movs r0, 0xE7
mov r10, r0
_08075DD4:
mov r8, r2
adds r0, r7, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
mov r9, r0
movs r0, 0
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08075E00
movs r0, 0x1
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08075E56
_08075E00:
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E56
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08075E56
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x42
ands r0, r1
cmp r0, 0x42
bne _08075E4C
bl IsBGMPlaying
lsls r0, 24
cmp r0, 0
beq _08075E56
ldr r0, =gMPlay_BGM
bl m4aMPlayStop
b _08075E56
.pool
_08075E4C:
ldr r0, =gMPlay_BGM
ldr r1, =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
_08075E56:
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E70
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08075E80
_08075E70:
movs r4, 0
b _08075EA2
.pool
_08075E80:
movs r0, 0
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08075E9C
movs r0, 0x1
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08075EA0
_08075E9C:
movs r4, 0x1
b _08075EA2
_08075EA0:
movs r4, 0x2
_08075EA2:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
adds r1, r2, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
movs r2, 0x40
orrs r0, r2
strb r0, [r1, 0x1]
ldr r0, =c3_0804B070
movs r1, 0x3
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r3, 0
mov r0, r9
strh r0, [r1, 0x8]
mov r2, r10
lsls r0, r2, 24
asrs r0, 24
strh r0, [r1, 0xA]
strh r4, [r1, 0xC]
strh r5, [r1, 0xE]
ldr r2, =gBankSpriteIds
movs r4, 0x3A
ldrsh r0, [r6, r4]
adds r0, r2
ldrb r0, [r0]
strh r0, [r1, 0x10]
lsrs r0, r7, 16
strh r0, [r1, 0x12]
strh r7, [r1, 0x14]
strh r3, [r1, 0x26]
_08075EF4:
ldr r4, =gBankSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r5, =gSprites
adds r0, r5
movs r1, 0x1
bl StartSpriteAffineAnim
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r0, 24
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08075F50
movs r2, 0x3A
ldrsh r0, [r6, r2]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r5, 0
adds r1, 0x1C
adds r0, r1
ldr r1, =sub_8039B58
b _08075F66
.pool
_08075F50:
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r5, 0
adds r1, 0x1C
adds r0, r1
ldr r1, =sub_8039E44
_08075F66:
str r1, [r0]
ldr r5, =gBankSpriteIds
movs r2, 0x3A
ldrsh r0, [r6, r2]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, =gSprites
adds r0, r4
bl AnimateSprite
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x80
lsls r1, 5
strh r1, [r0, 0x30]
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_8075D14
thumb_func_start sub_8075FB4
sub_8075FB4: @ 8075FB4
adds r3, r0, 0
adds r3, 0x2C
ldrb r1, [r3]
movs r2, 0x40
orrs r1, r2
strb r1, [r3]
ldr r1, =sub_80760F8
str r1, [r0, 0x1C]
movs r1, 0
strh r1, [r0, 0x34]
strh r1, [r0, 0x36]
strh r1, [r0, 0x38]
bx lr
.pool
thumb_func_end sub_8075FB4
thumb_func_start sub_8075FD4
sub_8075FD4: @ 8075FD4
push {r4-r7,lr}
adds r5, r0, 0
movs r7, 0
ldrh r0, [r5, 0x3A]
lsls r0, 24
lsrs r6, r0, 24
ldr r4, =gSprites
ldr r0, =gBankSpriteIds
adds r3, r6, r0
ldrb r1, [r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08076016
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_08076016:
ldrb r0, [r3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
adds r0, r1, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _08076040
adds r0, r1, 0
movs r1, 0
bl StartSpriteAffineAnim
movs r7, 0x1
b _0807605C
.pool
_08076040:
ldr r2, =0xfffffee0
adds r0, r2, 0
ldrh r2, [r1, 0x30]
adds r0, r2
strh r0, [r1, 0x30]
ldrb r0, [r3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 24
strh r0, [r1, 0x26]
_0807605C:
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080760DE
cmp r7, 0
beq _080760DE
ldr r2, =gSprites
ldr r0, =gBankSpriteIds
adds r0, r6, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r2, 0
movs r1, 0
strh r1, [r0, 0x26]
ldr r0, =gDoingBattleAnim
strb r2, [r0]
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r0, [r0, 0x4]
lsls r1, r6, 1
adds r1, r6
lsls r1, 2
adds r1, r0
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
adds r0, r5, 0
bl FreeSpriteOamMatrix
adds r0, r5, 0
bl DestroySprite
movs r3, 0
ldr r0, [r4]
ldr r2, [r0, 0x4]
movs r5, 0x8
movs r4, 0x3
_080760B6:
ldrb r1, [r2]
adds r0, r5, 0
ands r0, r1
cmp r0, 0
bne _080760C2
adds r3, 0x1
_080760C2:
adds r2, 0xC
subs r4, 0x1
cmp r4, 0
bge _080760B6
cmp r3, 0x4
bne _080760DE
movs r4, 0
_080760D0:
lsls r0, r4, 24
lsrs r0, 24
bl sub_8076AE8
adds r4, 0x1
cmp r4, 0xB
ble _080760D0
_080760DE:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8075FD4
thumb_func_start sub_80760F8
sub_80760F8: @ 80760F8
push {r4-r7,lr}
adds r6, r0, 0
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r6, 0x36]
adds r0, 0x1
strh r0, [r6, 0x36]
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0x28
beq _08076196
cmp r1, 0x5F
bne _08076130
ldr r0, =gDoingBattleAnim
movs r1, 0
strb r1, [r0]
bl m4aMPlayAllStop
ldr r0, =0x00000173
bl PlaySE
b _08076196
.pool
_08076130:
ldr r0, =0x0000013b
cmp r1, r0
bne _08076196
ldr r5, =gSprites
ldr r4, =gBankSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r0, [r0, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
adds r0, r6, 0
bl DestroySpriteAndFreeResources
ldr r0, =gMain
ldr r1, =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08076196
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r7, 1
adds r1, r7
lsls r1, 2
adds r1, r0
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
_08076196:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80760F8
thumb_func_start sub_80761B4
sub_80761B4: @ 80761B4
push {r4,lr}
adds r4, r0, 0
movs r0, 0x19
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x3A]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
adds r0, 0x18
strh r0, [r4, 0x36]
ldr r0, =0x0000ffe2
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x3A]
strh r0, [r4, 0x6]
adds r0, r4, 0
bl sub_80A68D4
ldr r0, =sub_8076204
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80761B4
thumb_func_start sub_8076204
sub_8076204: @ 8076204
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
ldrh r0, [r5, 0x3C]
movs r1, 0xFF
mov r8, r1
lsrs r0, 8
subs r0, 0x23
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2C
bhi _080762F8
ldrh r1, [r5, 0x6]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
bne _08076266
ldrh r0, [r5, 0x30]
movs r1, 0x1
adds r6, r1, 0
ands r6, r0
ldrh r0, [r5, 0x32]
adds r7, r1, 0
ands r7, r0
movs r2, 0x30
ldrsh r0, [r5, r2]
movs r1, 0x3
bl __divsi3
movs r1, 0x2
negs r1, r1
adds r4, r1, 0
ands r0, r4
orrs r6, r0
strh r6, [r5, 0x30]
movs r2, 0x32
ldrsh r0, [r5, r2]
movs r1, 0x3
bl __divsi3
ands r0, r4
orrs r7, r0
strh r7, [r5, 0x32]
adds r0, r5, 0
movs r1, 0x4
bl StartSpriteAffineAnim
_08076266:
ldrh r4, [r5, 0x2E]
adds r0, r5, 0
bl sub_80A6F3C
movs r1, 0x3A
ldrsh r0, [r5, r1]
movs r1, 0x3
bl __divsi3
adds r1, r0, 0
ldrh r0, [r5, 0x3C]
adds r0, r1
strh r0, [r5, 0x3C]
lsls r0, 16
asrs r0, 24
mov r2, r8
ands r0, r2
movs r2, 0x38
ldrsh r1, [r5, r2]
bl Sin
ldrh r1, [r5, 0x26]
adds r0, r1
strh r0, [r5, 0x26]
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
ldrh r1, [r5, 0x6]
adds r0, r1
strh r0, [r5, 0x6]
lsls r0, 16
lsrs r0, 24
movs r1, 0x3
bl __umodsi3
lsls r0, 16
cmp r0, 0
beq _080762B6
strh r4, [r5, 0x2E]
b _080762BE
_080762B6:
lsls r0, r4, 16
asrs r0, 16
subs r0, 0x1
strh r0, [r5, 0x2E]
_080762BE:
ldrh r0, [r5, 0x3C]
lsrs r0, 8
cmp r0, 0x4F
ble _08076364
ldrh r0, [r5, 0x30]
movs r1, 0x1
adds r6, r1, 0
ands r6, r0
ldrh r0, [r5, 0x32]
adds r7, r1, 0
ands r7, r0
movs r2, 0x30
ldrsh r1, [r5, r2]
lsls r0, r1, 1
adds r0, r1
movs r1, 0x2
negs r1, r1
adds r2, r1, 0
ands r0, r2
orrs r0, r6
strh r0, [r5, 0x30]
movs r0, 0x32
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
ands r0, r2
orrs r0, r7
strh r0, [r5, 0x32]
b _08076364
_080762F8:
adds r0, r5, 0
bl sub_80A6900
lsls r0, 24
cmp r0, 0
beq _08076364
ldrh r0, [r5, 0x24]
ldrh r1, [r5, 0x20]
adds r0, r1
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, 0x26]
strh r1, [r5, 0x24]
ldrb r0, [r5, 0x6]
strh r0, [r5, 0x3A]
strh r1, [r5, 0x2E]
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08076358
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08076358
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x2
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _08076358
ldr r0, =sub_8076374
b _0807635A
.pool
_08076358:
ldr r0, =sub_8075D14
_0807635A:
str r0, [r5, 0x1C]
adds r0, r5, 0
movs r1, 0
bl StartSpriteAffineAnim
_08076364:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076204
thumb_func_start sub_8076374
sub_8076374: @ 8076374
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
adds r1, r0, 0x1
strh r1, [r2, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x18
ble _0807638E
movs r0, 0
strh r0, [r2, 0x2E]
ldr r0, =sub_8075D14
str r0, [r2, 0x1C]
_0807638E:
pop {r0}
bx r0
.pool
thumb_func_end sub_8076374
thumb_func_start sub_8076398
sub_8076398: @ 8076398
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080763EC
movs r0, 0
strh r0, [r5, 0x2E]
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080763E8
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080763E8
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x3
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _080763E8
ldr r0, =sub_8076374
b _080763EA
.pool
_080763E8:
ldr r0, =sub_8075D14
_080763EA:
str r0, [r5, 0x1C]
_080763EC:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076398
thumb_func_start sub_80763F8
sub_80763F8: @ 80763F8
push {r4,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
movs r4, 0
str r4, [sp]
bl sub_8171D98
lsls r0, 24
lsrs r0, 24
add sp, 0x4
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80763F8
thumb_func_start sub_8076420
sub_8076420: @ 8076420
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
movs r3, 0
bl sub_81729E8
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8076420
thumb_func_start sub_8076438
sub_8076438: @ 8076438
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
adds r5, r0, 0
mov r9, r2
mov r10, r3
ldr r6, [sp, 0x28]
ldr r4, [sp, 0x2C]
ldr r0, [sp, 0x30]
ldr r2, [sp, 0x38]
lsls r5, 24
lsrs r5, 24
lsls r1, 24
lsrs r1, 24
str r1, [sp]
mov r1, r9
lsls r1, 24
lsrs r1, 24
mov r9, r1
lsls r3, 24
lsrs r3, 24
mov r10, r3
lsls r6, 24
lsrs r6, 24
lsls r4, 24
lsrs r4, 24
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
lsls r0, r2, 16
lsrs r7, r0, 16
ldr r0, =gUnknown_0832C400
bl LoadCompressedObjectPicUsingHeap
ldr r0, =gUnknown_0832C460
bl LoadCompressedObjectPaletteUsingHeap
ldr r0, =gUnknown_0832C588
mov r1, r9
mov r2, r10
adds r3, r4, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r1, =gSprites
mov r8, r1
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
adds r2, r4, r1
strh r5, [r2, 0x2E]
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
add r1, r8
ldrh r0, [r1, 0x20]
strh r0, [r2, 0x38]
ldrh r0, [r1, 0x22]
strh r0, [r2, 0x3A]
mov r3, r9
strh r3, [r1, 0x20]
mov r0, r10
strh r0, [r1, 0x22]
strh r7, [r1, 0x3C]
mov r3, sp
ldrh r3, [r3, 0x4]
strh r3, [r2, 0x30]
mov r0, sp
ldrh r0, [r0]
strh r0, [r2, 0x32]
mov r3, sp
ldrh r3, [r3, 0x34]
strh r3, [r2, 0x34]
ldr r3, [sp, 0x34]
lsrs r0, r3, 16
strh r0, [r2, 0x36]
movs r0, 0x3
ands r6, r0
lsls r6, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r6
strb r0, [r2, 0x5]
movs r0, 0x1C
add r8, r0
add r4, r8
ldr r0, =sub_8076524
str r0, [r4]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076438
thumb_func_start sub_8076524
sub_8076524: @ 8076524
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
ldrh r1, [r6, 0x30]
movs r2, 0x30
ldrsh r0, [r6, r2]
cmp r0, 0
bne _080765D0
ldrh r0, [r6, 0x2E]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r6, 0x32]
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrh r4, [r6, 0x34]
ldrh r0, [r6, 0x36]
lsls r0, 16
orrs r4, r0
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
cmp r0, 0
beq _0807655E
subs r0, 0x1
lsls r0, 24
lsrs r5, r0, 24
b _08076560
_0807655E:
movs r5, 0
_08076560:
adds r0, r6, 0
movs r1, 0x1
bl StartSpriteAnim
ldrh r0, [r6, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
ldrb r2, [r6, 0x5]
lsls r2, 28
lsrs r2, 30
adds r3, r5, 0
bl sub_80763F8
movs r0, 0x1
mov r1, r8
adds r2, r4, 0
bl sub_8076420
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r6, 0x30]
ldr r0, =sub_80765E0
str r0, [r6, 0x1C]
ldr r0, =gSprites
lsls r4, r7, 4
adds r4, r7
lsls r4, 2
adds r4, r0
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
movs r1, 0x1
bl StartSpriteAffineAnim
adds r0, r4, 0
bl AnimateSprite
movs r0, 0x80
lsls r0, 5
strh r0, [r4, 0x30]
strh r5, [r6, 0x3C]
b _080765D4
.pool
_080765D0:
subs r0, r1, 0x1
strh r0, [r6, 0x30]
_080765D4:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8076524
thumb_func_start sub_80765E0
sub_80765E0: @ 80765E0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r4, r0, 0
movs r0, 0
mov r12, r0
movs r7, 0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08076610
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_08076610:
ldr r1, =gSprites
lsls r2, r6, 4
adds r0, r2, r6
lsls r0, 2
adds r5, r0, r1
adds r0, r5, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
mov r8, r2
cmp r0, 0
bge _08076634
adds r0, r5, 0
movs r1, 0
bl StartSpriteAffineAnim
movs r1, 0x1
mov r12, r1
_08076634:
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r3, 0x20
ldrsh r1, [r4, r3]
subs r0, r1
movs r1, 0x3C
ldrsh r2, [r4, r1]
muls r0, r2
cmp r0, 0
bge _0807664A
adds r0, 0x7F
_0807664A:
asrs r0, 7
ldrh r3, [r4, 0x20]
adds r0, r3
lsls r0, 16
lsrs r0, 16
mov r9, r0
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r3, 0x22
ldrsh r1, [r4, r3]
subs r0, r1
muls r0, r2
cmp r0, 0
bge _08076668
adds r0, 0x7F
_08076668:
asrs r0, 7
ldrh r1, [r4, 0x22]
adds r0, r1
mov r2, r9
strh r2, [r5, 0x20]
strh r0, [r5, 0x22]
ldrh r2, [r4, 0x3C]
movs r3, 0x3C
ldrsh r0, [r4, r3]
cmp r0, 0x7F
bgt _080766AC
ldr r1, =gSineTable
lsls r0, r2, 24
lsrs r0, 23
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bge _08076690
adds r0, 0x7
_08076690:
asrs r0, 3
negs r0, r0
lsls r0, 16
lsrs r0, 16
adds r1, r2, 0x4
strh r1, [r4, 0x3C]
strh r0, [r5, 0x24]
strh r0, [r5, 0x26]
b _080766BA
.pool
_080766AC:
ldrh r0, [r4, 0x38]
strh r0, [r5, 0x20]
ldrh r0, [r4, 0x3A]
strh r0, [r5, 0x22]
strh r7, [r5, 0x24]
strh r7, [r5, 0x26]
movs r7, 0x1
_080766BA:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0807670E
mov r2, r12
cmp r2, 0
beq _0807670E
cmp r7, 0
beq _0807670E
ldr r1, =gSprites
mov r3, r8
adds r0, r3, r6
lsls r0, 2
adds r2, r0, r1
movs r0, 0x3C
ldrsh r1, [r2, r0]
movs r0, 0xCE
lsls r0, 1
cmp r1, r0
bne _080766FC
ldrh r1, [r2, 0x3C]
adds r0, r2, 0
movs r2, 0x1
movs r3, 0
bl DoMonFrontSpriteAnimation
b _08076708
.pool
_080766FC:
ldrh r1, [r2, 0x3C]
adds r0, r2, 0
movs r2, 0
movs r3, 0
bl DoMonFrontSpriteAnimation
_08076708:
adds r0, r4, 0
bl DestroySpriteAndFreeResources
_0807670E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80765E0
thumb_func_start sub_807671C
sub_807671C: @ 807671C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r10, r0
adds r6, r2, 0
mov r8, r3
ldr r5, [sp, 0x20]
ldr r4, [sp, 0x24]
ldr r0, [sp, 0x28]
mov r9, r0
mov r0, r10
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r1, 24
lsrs r7, r1, 24
lsls r6, 24
lsrs r6, 24
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r5, 24
lsrs r5, 24
lsls r4, 24
lsrs r4, 24
mov r0, r9
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r0, =gUnknown_0832C400
bl LoadCompressedObjectPicUsingHeap
ldr r0, =gUnknown_0832C460
bl LoadCompressedObjectPaletteUsingHeap
ldr r0, =gUnknown_0832C588
adds r1, r6, 0
mov r2, r8
adds r3, r4, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r6, =gSprites
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
adds r2, r3, r6
mov r1, r10
strh r1, [r2, 0x2E]
mov r4, r9
strh r4, [r2, 0x30]
strh r7, [r2, 0x32]
mov r1, sp
ldrh r1, [r1, 0x2C]
strh r1, [r2, 0x34]
ldr r4, [sp, 0x2C]
lsrs r1, r4, 16
strh r1, [r2, 0x36]
movs r1, 0x3
ands r5, r1
lsls r5, 2
ldrb r4, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r4
orrs r1, r5
strb r1, [r2, 0x5]
adds r6, 0x1C
adds r3, r6
ldr r1, =sub_80767D4
str r1, [r3]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_807671C
thumb_func_start sub_80767D4
sub_80767D4: @ 80767D4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0807686C
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrh r5, [r4, 0x34]
ldrh r0, [r4, 0x36]
lsls r0, 16
orrs r5, r0
adds r0, r4, 0
adds r0, 0x43
ldrb r0, [r0]
cmp r0, 0
beq _0807680E
subs r0, 0x1
lsls r0, 24
lsrs r6, r0, 24
b _08076810
_0807680E:
movs r6, 0
_08076810:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
ldrh r0, [r4, 0x20]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x22]
subs r1, 0x5
lsls r1, 24
lsrs r1, 24
ldrb r2, [r4, 0x5]
lsls r2, 28
lsrs r2, 30
adds r3, r6, 0
bl sub_80763F8
movs r0, 0x1
mov r1, r8
adds r2, r5, 0
bl sub_8076420
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x30]
ldr r0, =sub_807687C
str r0, [r4, 0x1C]
lsls r4, r7, 4
adds r4, r7
lsls r4, 2
ldr r0, =gSprites
adds r4, r0
adds r0, r4, 0
movs r1, 0x2
bl StartSpriteAffineAnim
adds r0, r4, 0
bl AnimateSprite
strh r5, [r4, 0x30]
b _08076870
.pool
_0807686C:
subs r0, r1, 0x1
strh r0, [r4, 0x30]
_08076870:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80767D4
thumb_func_start sub_807687C
sub_807687C: @ 807687C
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x38]
adds r0, 0x1
strh r0, [r5, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xB
bne _08076894
movs r0, 0x3C
bl PlaySE
_08076894:
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
ldr r2, =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, r0, r2
adds r0, r4, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 26
cmp r0, 0
bge _080768D8
adds r0, r5, 0
movs r1, 0x2
bl StartSpriteAnim
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
movs r0, 0
strh r0, [r5, 0x38]
ldr r0, =sub_80768F0
str r0, [r5, 0x1C]
b _080768E8
.pool
_080768D8:
ldrh r0, [r4, 0x30]
adds r0, 0x60
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
negs r0, r0
asrs r0, 8
strh r0, [r4, 0x26]
_080768E8:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_807687C
thumb_func_start sub_80768F0
sub_80768F0: @ 80768F0
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08076904
ldr r0, =SpriteCallbackDummy
str r0, [r2, 0x1C]
_08076904:
pop {r0}
bx r0
.pool
thumb_func_end sub_80768F0
thumb_func_start obj_delete_and_free_associated_resources_
obj_delete_and_free_associated_resources_: @ 807690C
push {lr}
bl DestroySpriteAndFreeResources
pop {r0}
bx r0
thumb_func_end obj_delete_and_free_associated_resources_
thumb_func_start sub_8076918
sub_8076918: @ 8076918
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r0, =gHealthBoxesIds
adds r0, r5, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r6, =gSprites
adds r4, r0, r6
movs r1, 0
movs r0, 0x5
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r0, 0x73
strh r0, [r4, 0x24]
strh r1, [r4, 0x26]
ldr r0, =sub_80769CC
str r0, [r4, 0x1C]
adds r0, r5, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _08076966
ldrh r0, [r4, 0x2E]
negs r0, r0
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
negs r0, r0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x24]
negs r0, r0
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x26]
negs r0, r0
strh r0, [r4, 0x26]
_08076966:
movs r0, 0x38
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r6, 0
adds r1, 0x1C
adds r1, r0, r1
adds r0, r6
ldr r1, [r1]
bl _call_via_r1
adds r0, r5, 0
bl GetBankIdentity
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _08076990
ldr r0, =sub_80769A8
str r0, [r4, 0x1C]
_08076990:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076918
thumb_func_start sub_80769A8
sub_80769A8: @ 80769A8
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
bne _080769C2
movs r0, 0
strh r0, [r1, 0x30]
ldr r0, =sub_80769CC
str r0, [r1, 0x1C]
_080769C2:
pop {r0}
bx r0
.pool
thumb_func_end sub_80769A8
thumb_func_start sub_80769CC
sub_80769CC: @ 80769CC
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x24]
ldrh r1, [r2, 0x2E]
subs r0, r1
strh r0, [r2, 0x24]
ldrh r0, [r2, 0x26]
ldrh r1, [r2, 0x30]
subs r0, r1
strh r0, [r2, 0x26]
ldr r0, [r2, 0x24]
cmp r0, 0
bne _080769EA
ldr r0, =SpriteCallbackDummy
str r0, [r2, 0x1C]
_080769EA:
pop {r0}
bx r0
.pool
thumb_func_end sub_80769CC
thumb_func_start DoHitAnimHealthboxEffect
DoHitAnimHealthboxEffect: @ 80769F4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r5, =oamc_804BEB4
adds r0, r5, 0
bl CreateInvisibleSpriteWithCallback
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r3, r1, r2
movs r0, 0x1
strh r0, [r3, 0x2E]
ldr r0, =gHealthBoxesIds
adds r4, r0
ldrb r0, [r4]
strh r0, [r3, 0x30]
adds r2, 0x1C
adds r1, r2
str r5, [r1]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end DoHitAnimHealthboxEffect
thumb_func_start oamc_804BEB4
oamc_804BEB4: @ 8076A38
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x30]
lsls r1, 24
lsrs r1, 24
ldr r2, =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
ldrh r0, [r3, 0x2E]
movs r2, 0
strh r0, [r1, 0x26]
ldrh r0, [r3, 0x2E]
negs r0, r0
strh r0, [r3, 0x2E]
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x15
bne _08076A70
strh r2, [r1, 0x24]
strh r2, [r1, 0x26]
adds r0, r3, 0
bl DestroySprite
_08076A70:
pop {r0}
bx r0
.pool
thumb_func_end oamc_804BEB4
thumb_func_start sub_8076A78
sub_8076A78: @ 8076A78
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, =gUnknown_0832C400
lsls r6, r4, 3
adds r5, r6, r0
ldrh r0, [r5, 0x6]
bl GetSpriteTileStartByTag
lsls r0, 16
ldr r1, =0xffff0000
cmp r0, r1
bne _08076AA0
adds r0, r5, 0
bl LoadCompressedObjectPicUsingHeap
ldr r0, =gUnknown_0832C460
adds r0, r6, r0
bl LoadCompressedObjectPaletteUsingHeap
_08076AA0:
cmp r4, 0x6
beq _08076ACC
cmp r4, 0x6
blt _08076AB0
cmp r4, 0xB
bgt _08076AB0
cmp r4, 0xA
bge _08076ACC
_08076AB0:
ldr r1, =gUnknown_0832C400
lsls r0, r4, 3
adds r0, r1
ldrh r0, [r0, 0x6]
bl GetSpriteTileStartByTag
adds r1, r0, 0
lsls r1, 16
ldr r0, =gUnknown_08C02300
lsrs r1, 11
ldr r2, =0x06010100
adds r1, r2
bl LZDecompressVram
_08076ACC:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076A78
thumb_func_start sub_8076AE8
sub_8076AE8: @ 8076AE8
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
ldr r0, =gUnknown_0832C400
lsrs r4, 21
adds r0, r4, r0
ldrh r0, [r0, 0x6]
bl FreeSpriteTilesByTag
ldr r0, =gUnknown_0832C460
adds r4, r0
ldrh r0, [r4, 0x4]
bl FreeSpritePaletteByTag
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8076AE8
thumb_func_start sub_8076B14
sub_8076B14: @ 8076B14
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _08076B40
ldr r1, =gBattlePartyID
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
b _08076B4E
.pool
_08076B40:
ldr r1, =gBattlePartyID
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
_08076B4E:
adds r0, r1
movs r1, 0x26
bl GetMonData
lsls r0, 16
lsrs r0, 16
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8076B14
.align 2, 0 @ Don't pad with nop.