Files
Pokemon-Firered/asm/battle_anim_80A22E8.s
T

17622 lines
300 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80B4634
sub_80B4634: @ 80B4634
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080B46A0 @ =gBattleAnimArgs
movs r1, 0x6
ldrsh r0, [r6, r1]
cmp r0, 0
beq _080B4654
ldr r0, _080B46A4 @ =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x20
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
bl sub_8076D9C
_080B4654:
ldrh r0, [r6]
ldrh r1, [r5, 0x20]
adds r0, r1
movs r4, 0
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x22]
adds r0, 0xE
strh r0, [r5, 0x22]
ldrb r1, [r6, 0x2]
adds r0, r5, 0
bl StartSpriteAnim
adds r0, r5, 0
bl AnimateSprite
strh r4, [r5, 0x2E]
strh r4, [r5, 0x30]
movs r0, 0x4
strh r0, [r5, 0x32]
movs r0, 0x10
strh r0, [r5, 0x34]
ldr r0, _080B46A8 @ =0x0000ffba
strh r0, [r5, 0x36]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x38]
ldr r1, _080B46AC @ =sub_80B46B4
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r1, _080B46B0 @ =sub_8074BE4
str r1, [r5, 0x1C]
adds r0, r5, 0
bl _call_via_r1
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B46A0: .4byte gBattleAnimArgs
_080B46A4: .4byte gBattleAnimTarget
_080B46A8: .4byte 0x0000ffba
_080B46AC: .4byte sub_80B46B4
_080B46B0: .4byte sub_8074BE4
thumb_func_end sub_80B4634
thumb_func_start sub_80B46B4
sub_80B46B4: @ 80B46B4
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x38]
ldrh r2, [r4, 0x20]
adds r0, r1, r2
strh r0, [r4, 0x20]
movs r0, 0xC0
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
movs r0, 0x4
strh r0, [r4, 0x32]
movs r0, 0x20
strh r0, [r4, 0x34]
ldr r0, _080B46EC @ =0x0000ffe8
strh r0, [r4, 0x36]
ldr r1, _080B46F0 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, _080B46F4 @ =sub_8074BE4
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B46EC: .4byte 0x0000ffe8
_080B46F0: .4byte move_anim_8074EE0
_080B46F4: .4byte sub_8074BE4
thumb_func_end sub_80B46B4
thumb_func_start sub_80B46F8
sub_80B46F8: @ 80B46F8
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B4720 @ =gBattleAnimArgs
ldrb r1, [r4, 0xA]
bl StartSpriteAnim
adds r0, r5, 0
bl AnimateSprite
ldr r0, _080B4724 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B4728
ldrh r0, [r5, 0x20]
ldrh r1, [r4]
subs r0, r1
b _080B472E
.align 2, 0
_080B4720: .4byte gBattleAnimArgs
_080B4724: .4byte gBattleAnimAttacker
_080B4728:
ldrh r0, [r4]
ldrh r1, [r5, 0x20]
adds r0, r1
_080B472E:
strh r0, [r5, 0x20]
ldr r3, _080B4770 @ =gBattleAnimArgs
ldrh r2, [r3, 0x2]
ldrh r0, [r5, 0x22]
adds r2, r0
movs r4, 0
strh r2, [r5, 0x22]
ldrh r0, [r3, 0x8]
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
ldrh r1, [r3, 0x4]
adds r0, r1
strh r0, [r5, 0x32]
strh r2, [r5, 0x34]
ldrh r0, [r3, 0x6]
adds r2, r0
strh r2, [r5, 0x36]
adds r0, r5, 0
bl sub_80754B8
strh r4, [r5, 0x34]
strh r4, [r5, 0x36]
ldr r0, _080B4774 @ =sub_8074D00
str r0, [r5, 0x1C]
ldr r1, _080B4778 @ =move_anim_8074EE0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B4770: .4byte gBattleAnimArgs
_080B4774: .4byte sub_8074D00
_080B4778: .4byte move_anim_8074EE0
thumb_func_end sub_80B46F8
thumb_func_start sub_80B477C
sub_80B477C: @ 80B477C
push {r4,lr}
adds r4, r0, 0
ldr r0, _080B4794 @ =gBattleAnimArgs
movs r1, 0xC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B4798
adds r0, r4, 0
movs r1, 0
bl sub_8075160
b _080B47A0
.align 2, 0
_080B4794: .4byte gBattleAnimArgs
_080B4798:
adds r0, r4, 0
movs r1, 0
bl sub_8075114
_080B47A0:
ldr r1, _080B47BC @ =gBattleAnimArgs
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x32]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x34]
ldr r0, _080B47C0 @ =sub_80B47C4
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B47BC: .4byte gBattleAnimArgs
_080B47C0: .4byte sub_80B47C4
thumb_func_end sub_80B477C
thumb_func_start sub_80B47C4
sub_80B47C4: @ 80B47C4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x36]
adds r0, r1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 24
negs r0, r0
strh r0, [r4, 0x26]
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r2, 0x34
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
ldrh r1, [r4, 0x38]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _080B480A
adds r0, r4, 0
bl DestroyAnimSprite
_080B480A:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B47C4
thumb_func_start do_boulder_dust
do_boulder_dust: @ 80B4810
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r1, _080B48E4 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B4854
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
_080B4854:
ldr r0, _080B48E8 @ =gBattle_BG1_X
strh r5, [r0]
ldr r4, _080B48EC @ =gBattle_BG1_Y
strh r5, [r4]
movs r0, 0x14
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x16
bl SetGpuReg
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
bl sub_807543C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080B48B0
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
_080B48B0:
ldr r0, _080B48FC @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080B48CA
ldr r0, _080B4900 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B48CA
movs r5, 0x1
_080B48CA:
ldr r0, _080B4904 @ =gTasks
lsls r1, r6, 2
adds r1, r6
lsls r1, 3
adds r1, r0
strh r5, [r1, 0x8]
ldr r0, _080B4908 @ =sub_80B490C
str r0, [r1]
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B48E4: .4byte 0x00003f42
_080B48E8: .4byte gBattle_BG1_X
_080B48EC: .4byte gBattle_BG1_Y
_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
_080B48FC: .4byte gBattleAnimArgs
_080B4900: .4byte gBattleAnimAttacker
_080B4904: .4byte gTasks
_080B4908: .4byte sub_80B490C
thumb_func_end do_boulder_dust
thumb_func_start sub_80B490C
sub_80B490C: @ 80B490C
push {r4,r5,lr}
sub sp, 0x10
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080B4934 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r2, r1, 0
cmp r0, 0
bne _080B4940
ldr r1, _080B4938 @ =gBattle_BG1_X
ldr r3, _080B493C @ =0x0000fffa
adds r0, r3, 0
ldrh r3, [r1]
adds r0, r3
b _080B4946
.align 2, 0
_080B4934: .4byte gTasks
_080B4938: .4byte gBattle_BG1_X
_080B493C: .4byte 0x0000fffa
_080B4940:
ldr r1, _080B4974 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_080B4946:
strh r0, [r1]
ldr r1, _080B4978 @ =gBattle_BG1_Y
ldr r3, _080B497C @ =0x0000ffff
adds r0, r3, 0
ldrh r3, [r1]
adds r0, r3
strh r0, [r1]
lsls r1, r5, 2
adds r0, r1, r5
lsls r0, 3
adds r0, r2
movs r3, 0x20
ldrsh r0, [r0, r3]
adds r4, r1, 0
cmp r0, 0x4
bls _080B4968
b _080B4A96
_080B4968:
lsls r0, 2
ldr r1, _080B4980 @ =_080B4984
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B4974: .4byte gBattle_BG1_X
_080B4978: .4byte gBattle_BG1_Y
_080B497C: .4byte 0x0000ffff
_080B4980: .4byte _080B4984
.align 2, 0
_080B4984:
.4byte _080B4998
.4byte _080B49DA
.4byte _080B49F4
.4byte _080B4A36
.4byte _080B4A58
_080B4998:
adds r0, r4, r5
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0x1C]
adds r0, 0x1
movs r5, 0
strh r0, [r4, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080B4A96
strh r5, [r4, 0x1C]
ldrh r1, [r4, 0x1E]
adds r1, 0x1
strh r1, [r4, 0x1E]
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, 0x1E
ldrsh r0, [r4, r1]
cmp r0, 0x7
bne _080B4A96
ldrh r0, [r4, 0x20]
adds r0, 0x1
strh r0, [r4, 0x20]
strh r5, [r4, 0x1E]
b _080B4A96
_080B49DA:
adds r0, r4, r5
lsls r0, 3
adds r1, r0, r2
ldrh r0, [r1, 0x1E]
adds r0, 0x1
strh r0, [r1, 0x1E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x65
bne _080B4A96
movs r0, 0x7
strh r0, [r1, 0x1E]
b _080B4A4C
_080B49F4:
adds r0, r4, r5
lsls r0, 3
adds r4, r0, r2
ldrh r0, [r4, 0x1C]
adds r0, 0x1
strh r0, [r4, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080B4A96
movs r0, 0
strh r0, [r4, 0x1C]
ldrh r1, [r4, 0x1E]
subs r1, 0x1
strh r1, [r4, 0x1E]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0x1E
ldrsh r1, [r4, r2]
cmp r1, 0
bne _080B4A96
ldrh r0, [r4, 0x20]
adds r0, 0x1
strh r0, [r4, 0x20]
strh r1, [r4, 0x1E]
b _080B4A96
_080B4A36:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_8075358
ldr r0, _080B4A54 @ =gTasks
adds r1, r4, r5
lsls r1, 3
adds r1, r0
_080B4A4C:
ldrh r0, [r1, 0x20]
adds r0, 0x1
strh r0, [r1, 0x20]
b _080B4A96
.align 2, 0
_080B4A54: .4byte gTasks
_080B4A58:
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B4A6C
movs r0, 0x1
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
_080B4A6C:
ldr r0, _080B4AA0 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
ldr r0, _080B4AA4 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B4A96:
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B4AA0: .4byte gBattle_BG1_X
_080B4AA4: .4byte gBattle_BG1_Y
thumb_func_end sub_80B490C
thumb_func_start sub_80B4AA8
sub_80B4AA8: @ 80B4AA8
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080B4B24
ldr r4, _080B4AEC @ =gBattleAnimArgs
movs r2, 0x6
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B4AF4
ldr r0, _080B4AF0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B4AF4
movs r0, 0x98
lsls r0, 1
strh r0, [r5, 0x20]
ldrh r0, [r4, 0x2]
negs r0, r0
strh r0, [r4, 0x2]
movs r0, 0x1
strh r0, [r5, 0x38]
ldrb r1, [r5, 0x3]
subs r0, 0x40
ands r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r5, 0x3]
b _080B4AF8
.align 2, 0
_080B4AEC: .4byte gBattleAnimArgs
_080B4AF0: .4byte gBattleAnimAttacker
_080B4AF4:
ldr r0, _080B4B18 @ =0x0000ffc0
strh r0, [r5, 0x20]
_080B4AF8:
ldr r4, _080B4B1C @ =gBattleAnimArgs
ldrh r0, [r4]
strh r0, [r5, 0x22]
ldr r1, _080B4B20 @ =gUnknown_83E7470
adds r0, r5, 0
bl SetSubspriteTables
ldrh r0, [r4, 0x2]
strh r0, [r5, 0x30]
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080B4B80
.align 2, 0
_080B4B18: .4byte 0x0000ffc0
_080B4B1C: .4byte gBattleAnimArgs
_080B4B20: .4byte gUnknown_83E7470
_080B4B24:
ldrh r1, [r5, 0x30]
ldrh r3, [r5, 0x34]
adds r1, r3
ldrh r2, [r5, 0x32]
ldrh r0, [r5, 0x36]
adds r2, r0
lsls r0, r1, 16
asrs r0, 24
ldrh r3, [r5, 0x24]
adds r0, r3
strh r0, [r5, 0x24]
lsls r0, r2, 16
asrs r0, 24
ldrh r3, [r5, 0x26]
adds r0, r3
strh r0, [r5, 0x26]
movs r0, 0xFF
ands r1, r0
strh r1, [r5, 0x34]
ands r2, r0
strh r2, [r5, 0x36]
movs r1, 0x38
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080B4B6A
movs r2, 0x20
ldrsh r0, [r5, r2]
movs r3, 0x24
ldrsh r1, [r5, r3]
adds r0, r1
movs r1, 0x88
lsls r1, 1
cmp r0, r1
ble _080B4B80
b _080B4B7C
_080B4B6A:
movs r1, 0x20
ldrsh r0, [r5, r1]
movs r2, 0x24
ldrsh r1, [r5, r2]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _080B4B80
_080B4B7C:
ldr r0, _080B4B88 @ =DestroyAnimSprite
str r0, [r5, 0x1C]
_080B4B80:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B4B88: .4byte DestroyAnimSprite
thumb_func_end sub_80B4AA8
thumb_func_start sub_80B4B8C
sub_80B4B8C: @ 80B4B8C
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B4BC4 @ =gBattleAnimArgs
ldrb r1, [r5, 0x8]
bl StartSpriteAnim
adds r0, r4, 0
movs r1, 0
bl sub_8075160
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x32]
ldrh r0, [r5, 0x4]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x36]
ldr r0, _080B4BC8 @ =sub_8075590
str r0, [r4, 0x1C]
ldr r1, _080B4BCC @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B4BC4: .4byte gBattleAnimArgs
_080B4BC8: .4byte sub_8075590
_080B4BCC: .4byte DestroyAnimSprite
thumb_func_end sub_80B4B8C
thumb_func_start sub_80B4BD0
sub_80B4BD0: @ 80B4BD0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080B4C50 @ =gTasks
adds r6, r1, r0
ldr r5, _080B4C54 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldrb r0, [r5]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 8
movs r1, 0xC0
lsls r1, 13
adds r0, r1
lsrs r7, r0, 16
ldr r4, _080B4C58 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 8
movs r2, 0xC0
lsls r2, 13
adds r0, r2
lsrs r0, 16
mov r8, r0
ldrb r1, [r5]
movs r0, 0x2
eors r0, r1
ldrb r4, [r4]
cmp r0, r4
bne _080B4C40
mov r8, r7
_080B4C40:
bl sub_80B4FB8
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
bne _080B4C5C
movs r0, 0x20
b _080B4C62
.align 2, 0
_080B4C50: .4byte gTasks
_080B4C54: .4byte gBattleAnimAttacker
_080B4C58: .4byte gBattleAnimTarget
_080B4C5C:
lsls r1, r5, 3
movs r0, 0x30
subs r0, r1
_080B4C62:
strh r0, [r6, 0x18]
movs r4, 0
strh r4, [r6, 0x8]
strh r4, [r6, 0x1E]
strh r4, [r6, 0x1A]
movs r0, 0x1
strh r0, [r6, 0x20]
movs r1, 0x18
ldrsh r0, [r6, r1]
cmp r0, 0
bge _080B4C7A
adds r0, 0x7
_080B4C7A:
asrs r0, 3
subs r0, 0x1
strh r0, [r6, 0x1C]
mov r2, r9
lsls r0, r2, 3
strh r0, [r6, 0xC]
lsls r0, r7, 3
strh r0, [r6, 0xE]
mov r1, r10
subs r0, r1, r2
lsls r0, 3
movs r2, 0x18
ldrsh r1, [r6, r2]
bl __divsi3
strh r0, [r6, 0x10]
mov r1, r8
subs r0, r1, r7
lsls r0, 3
movs r2, 0x18
ldrsh r1, [r6, r2]
bl __divsi3
strh r0, [r6, 0x12]
strh r4, [r6, 0x14]
strh r4, [r6, 0x16]
movs r0, 0x40
negs r0, r0
bl sub_8073A44
adds r4, r0, 0
lsls r4, 24
asrs r4, 8
lsrs r4, 16
movs r0, 0x3F
bl sub_8073A44
lsls r0, 24
strh r4, [r6, 0x22]
asrs r0, 24
lsls r4, 16
asrs r4, 16
subs r0, r4
movs r2, 0x18
ldrsh r1, [r6, r2]
bl __divsi3
strh r0, [r6, 0x24]
strh r5, [r6, 0xA]
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
ldr r0, _080B4CFC @ =sub_80B4D00
str r0, [r6]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B4CFC: .4byte sub_80B4D00
thumb_func_end sub_80B4BD0
thumb_func_start sub_80B4D00
sub_80B4D00: @ 80B4D00
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B4D24 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080B4D1A
b _080B4E68
_080B4D1A:
lsls r0, 2
ldr r1, _080B4D28 @ =_080B4D2C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B4D24: .4byte gTasks
_080B4D28: .4byte _080B4D2C
.align 2, 0
_080B4D2C:
.4byte _080B4D40
.4byte _080B4DA4
.4byte _080B4DAC
.4byte _080B4E08
.4byte _080B4E5A
_080B4D40:
ldrh r2, [r4, 0x14]
ldrh r0, [r4, 0x10]
subs r2, r0
strh r2, [r4, 0x14]
ldrh r0, [r4, 0x16]
ldrh r1, [r4, 0x12]
subs r0, r1
strh r0, [r4, 0x16]
ldr r3, _080B4DA0 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
lsls r2, 16
asrs r2, 19
strh r2, [r0, 0x24]
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrh r0, [r4, 0x16]
lsls r0, 16
asrs r0, 19
strh r0, [r1, 0x26]
ldrh r0, [r4, 0x1A]
adds r0, 0x1
strh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _080B4D90
movs r0, 0x14
strh r0, [r4, 0x1E]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080B4D90:
ldrh r1, [r4, 0x22]
lsls r1, 24
asrs r1, 24
movs r0, 0x9B
bl PlaySE12WithPanning
b _080B4E68
.align 2, 0
_080B4DA0: .4byte gSprites
_080B4DA4:
ldrh r0, [r4, 0x1E]
subs r0, 0x1
strh r0, [r4, 0x1E]
b _080B4E4C
_080B4DAC:
ldrh r0, [r4, 0x1A]
subs r0, 0x1
strh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 16
cmp r0, 0
beq _080B4DCC
ldrh r0, [r4, 0x10]
ldrh r2, [r4, 0x14]
adds r0, r2
strh r0, [r4, 0x14]
ldrh r0, [r4, 0x12]
ldrh r1, [r4, 0x16]
adds r0, r1
strh r0, [r4, 0x16]
b _080B4DD6
_080B4DCC:
strh r0, [r4, 0x14]
strh r0, [r4, 0x16]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080B4DD6:
ldr r2, _080B4E04 @ =gSprites
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrh r0, [r4, 0x14]
lsls r0, 16
asrs r0, 19
strh r0, [r1, 0x24]
movs r1, 0x26
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrh r0, [r4, 0x16]
lsls r0, 16
asrs r0, 19
strh r0, [r1, 0x26]
b _080B4E68
.align 2, 0
_080B4E04: .4byte gSprites
_080B4E08:
ldrh r0, [r4, 0x10]
ldrh r2, [r4, 0xC]
adds r0, r2
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x12]
ldrh r1, [r4, 0xE]
adds r0, r1
strh r0, [r4, 0xE]
ldrh r0, [r4, 0x1A]
adds r0, 0x1
strh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 16
movs r2, 0x1C
ldrsh r1, [r4, r2]
cmp r0, r1
blt _080B4E46
movs r0, 0
strh r0, [r4, 0x1A]
adds r0, r4, 0
bl sub_80B4E70
ldrh r1, [r4, 0x24]
ldrh r0, [r4, 0x22]
adds r1, r0
strh r1, [r4, 0x22]
lsls r1, 24
asrs r1, 24
movs r0, 0xA8
bl PlaySE12WithPanning
_080B4E46:
ldrh r0, [r4, 0x18]
subs r0, 0x1
strh r0, [r4, 0x18]
_080B4E4C:
lsls r0, 16
cmp r0, 0
bne _080B4E68
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B4E68
_080B4E5A:
movs r1, 0x1E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B4E68
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B4E68:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B4D00
thumb_func_start sub_80B4E70
sub_80B4E70: @ 80B4E70
push {r4-r7,lr}
adds r4, r0, 0
ldrh r0, [r4, 0xA]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bhi _080B4F60
lsls r0, 2
ldr r1, _080B4E8C @ =_080B4E90
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B4E8C: .4byte _080B4E90
.align 2, 0
_080B4E90:
.4byte _080B4EA4
.4byte _080B4EB0
.4byte _080B4EB0
.4byte _080B4EBC
.4byte _080B4EC8
_080B4EA4:
ldr r3, _080B4EAC @ =gUnknown_83E74D8
movs r5, 0
b _080B4ECC
.align 2, 0
_080B4EAC: .4byte gUnknown_83E74D8
_080B4EB0:
ldr r3, _080B4EB8 @ =gUnknown_83E74F0
movs r5, 0x50
b _080B4ECC
.align 2, 0
_080B4EB8: .4byte gUnknown_83E74F0
_080B4EBC:
ldr r3, _080B4EC4 @ =gUnknown_83E74F0
movs r5, 0x40
b _080B4ECC
.align 2, 0
_080B4EC4: .4byte gUnknown_83E74F0
_080B4EC8:
ldr r3, _080B4F68 @ =gUnknown_83E74F0
movs r5, 0x30
_080B4ECC:
ldrh r1, [r4, 0xC]
lsls r1, 16
asrs r1, 19
lsls r1, 16
lsrs r1, 16
ldrh r2, [r4, 0xE]
lsls r2, 16
asrs r2, 19
lsls r2, 16
movs r6, 0x20
ldrsh r0, [r4, r6]
lsls r0, 2
adds r1, r0
lsls r1, 16
lsrs r6, r1, 16
asrs r1, 16
lsrs r7, r2, 16
asrs r2, 16
adds r0, r3, 0
movs r3, 0x23
bl CreateSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
beq _080B4F58
ldr r1, _080B4F6C @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0x12
strh r1, [r0, 0x2E]
movs r2, 0x20
ldrsh r1, [r4, r2]
lsls r2, r1, 2
adds r2, r1
lsls r2, 2
adds r2, r6, r2
movs r6, 0xA
ldrsh r3, [r4, r6]
lsls r1, r3, 1
adds r1, r3
adds r2, r1
strh r2, [r0, 0x32]
strh r7, [r0, 0x36]
movs r1, 0xA
ldrsh r2, [r4, r1]
lsls r2, 1
movs r3, 0x10
negs r3, r3
adds r1, r3, 0
subs r1, r2
strh r1, [r0, 0x38]
ldrh r3, [r0, 0x4]
lsls r2, r3, 22
lsrs r2, 22
adds r2, r5
ldr r5, _080B4F70 @ =0x000003ff
adds r1, r5, 0
ands r2, r1
ldr r1, _080B4F74 @ =0xfffffc00
ands r1, r3
orrs r1, r2
strh r1, [r0, 0x4]
bl sub_8075068
ldrh r0, [r4, 0x1E]
adds r0, 0x1
strh r0, [r4, 0x1E]
_080B4F58:
movs r6, 0x20
ldrsh r0, [r4, r6]
negs r0, r0
strh r0, [r4, 0x20]
_080B4F60:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B4F68: .4byte gUnknown_83E74F0
_080B4F6C: .4byte gSprites
_080B4F70: .4byte 0x000003ff
_080B4F74: .4byte 0xfffffc00
thumb_func_end sub_80B4E70
thumb_func_start sub_80B4F78
sub_80B4F78: @ 80B4F78
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080B4FAA
ldr r0, _080B4FB0 @ =sub_80B4D00
bl FindTaskIdByFunc
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
beq _080B4FA4
ldr r0, _080B4FB4 @ =gTasks
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x1E]
subs r0, 0x1
strh r0, [r1, 0x1E]
_080B4FA4:
adds r0, r4, 0
bl DestroySprite
_080B4FAA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B4FB0: .4byte sub_80B4D00
_080B4FB4: .4byte gTasks
thumb_func_end sub_80B4F78
thumb_func_start sub_80B4FB8
sub_80B4FB8: @ 80B4FB8
push {lr}
ldr r0, _080B4FE0 @ =gUnknown_2037EE4
ldr r0, [r0]
ldrb r1, [r0, 0x11]
lsrs r0, r1, 4
lsls r1, 28
lsrs r1, 28
subs r0, r1
lsls r0, 24
lsrs r1, r0, 24
movs r2, 0xFF
lsls r2, 24
adds r0, r2
lsrs r0, 24
cmp r0, 0x4
bls _080B4FDA
movs r1, 0x1
_080B4FDA:
adds r0, r1, 0
pop {r1}
bx r1
.align 2, 0
_080B4FE0: .4byte gUnknown_2037EE4
thumb_func_end sub_80B4FB8
thumb_func_start sub_80B4FE4
sub_80B4FE4: @ 80B4FE4
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B501C @ =gBattleAnimArgs
ldrb r1, [r5, 0x8]
bl StartSpriteAnim
ldrh r0, [r5]
strh r0, [r4, 0x24]
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x34]
ldrh r1, [r5, 0x4]
subs r0, r1
strh r0, [r4, 0x34]
movs r0, 0x3
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
ldr r0, _080B5020 @ =sub_80B5024
str r0, [r4, 0x1C]
adds r4, 0x3E
ldrb r0, [r4]
movs r1, 0x4
orrs r0, r1
strb r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B501C: .4byte gBattleAnimArgs
_080B5020: .4byte sub_80B5024
thumb_func_end sub_80B4FE4
thumb_func_start sub_80B5024
sub_80B5024: @ 80B5024
push {lr}
adds r2, r0, 0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x5
negs r1, r1
ands r1, r0
strb r1, [r3]
ldrh r1, [r2, 0x34]
movs r3, 0x34
ldrsh r0, [r2, r3]
cmp r0, 0
beq _080B505C
ldrh r3, [r2, 0x32]
adds r0, r1, r3
strh r0, [r2, 0x26]
ldrh r0, [r2, 0x2E]
adds r1, r0
strh r1, [r2, 0x34]
adds r0, 0x1
strh r0, [r2, 0x2E]
lsls r1, 16
cmp r1, 0
ble _080B506E
movs r0, 0
strh r0, [r2, 0x34]
b _080B506E
_080B505C:
ldrh r0, [r2, 0x30]
subs r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
cmp r0, 0
bne _080B506E
adds r0, r2, 0
bl DestroyAnimSprite
_080B506E:
pop {r0}
bx r0
thumb_func_end sub_80B5024
thumb_func_start sub_80B5074
sub_80B5074: @ 80B5074
push {r4,lr}
adds r4, r0, 0
ldr r0, _080B509C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B5090
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_080B5090:
adds r0, r4, 0
bl sub_8075DF4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B509C: .4byte gBattleAnimAttacker
thumb_func_end sub_80B5074
thumb_func_start sub_80B50A0
sub_80B50A0: @ 80B50A0
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B50EC @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldr r2, _080B50F0 @ =gBattleAnimArgs
ldrh r3, [r2]
ldrh r5, [r4, 0x20]
adds r1, r3, r5
strh r1, [r4, 0x20]
ldrh r1, [r2, 0x2]
adds r0, r1
strh r0, [r4, 0x22]
strh r3, [r4, 0x30]
strh r1, [r4, 0x32]
ldrh r0, [r2, 0x4]
strh r0, [r4, 0x38]
ldrb r1, [r2, 0x6]
adds r0, r4, 0
bl StartSpriteAnim
ldr r0, _080B50F4 @ =sub_80B50F8
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B50EC: .4byte gBattleAnimTarget
_080B50F0: .4byte gBattleAnimArgs
_080B50F4: .4byte sub_80B50F8
thumb_func_end sub_80B50A0
thumb_func_start sub_80B50F8
sub_80B50F8: @ 80B50F8
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x8
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x34]
adds r0, r1
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x36]
adds r0, r2
strh r0, [r4, 0x36]
movs r1, 0x34
ldrsh r0, [r4, r1]
movs r1, 0x28
bl __divsi3
ldrh r1, [r4, 0x24]
adds r1, r0
strh r1, [r4, 0x24]
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r2, 0x38
ldrsh r1, [r4, r2]
bl Sin
ldrh r1, [r4, 0x26]
subs r1, r0
strh r1, [r4, 0x26]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0x8C
ble _080B5142
adds r0, r4, 0
bl DestroyAnimSprite
_080B5142:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B50F8
thumb_func_start sub_80B5148
sub_80B5148: @ 80B5148
push {lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r2, _080B5180 @ =gUnknown_2037EE8
ldr r0, [r2]
cmp r0, 0x20
bgt _080B515C
ldr r1, _080B5184 @ =gBattleAnimArgs
movs r0, 0
strh r0, [r1, 0xE]
_080B515C:
ldr r2, [r2]
adds r0, r2, 0
subs r0, 0x21
cmp r0, 0x20
bhi _080B516C
ldr r1, _080B5184 @ =gBattleAnimArgs
movs r0, 0x1
strh r0, [r1, 0xE]
_080B516C:
cmp r2, 0x41
ble _080B5176
ldr r1, _080B5184 @ =gBattleAnimArgs
movs r0, 0x2
strh r0, [r1, 0xE]
_080B5176:
adds r0, r3, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080B5180: .4byte gUnknown_2037EE8
_080B5184: .4byte gBattleAnimArgs
thumb_func_end sub_80B5148
thumb_func_start sub_80B5188
sub_80B5188: @ 80B5188
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080B51E4 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r1
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080B51AA
movs r0, 0
bl sub_8075458
movs r0, 0xC8
strh r0, [r5, 0xA]
_080B51AA:
ldr r4, _080B51E8 @ =gBattle_BG3_Y
movs r1, 0xA
ldrsh r0, [r5, r1]
movs r1, 0xA
bl __divsi3
ldrh r1, [r4]
adds r1, r0
strh r1, [r4]
ldrh r0, [r5, 0xA]
subs r0, 0x3
strh r0, [r5, 0xA]
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0x78
bne _080B51D6
movs r0, 0x1
bl sub_8075458
adds r0, r6, 0
bl DestroyAnimVisualTask
_080B51D6:
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B51E4: .4byte gTasks
_080B51E8: .4byte gBattle_BG3_Y
thumb_func_end sub_80B5188
thumb_func_start sub_80B51EC
sub_80B51EC: @ 80B51EC
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080B5258 @ =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 _080B5218
movs r0, 0
bl sub_8075458
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
ldr r0, _080B525C @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r4, 0xC]
_080B5218:
ldrh r0, [r4, 0xA]
adds r0, 0x50
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0xA]
ldr r6, _080B525C @ =gBattle_BG3_Y
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0x4
bl Cos
ldrh r4, [r4, 0xC]
adds r0, r4
strh r0, [r6]
ldr r0, _080B5260 @ =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
ldr r0, _080B5264 @ =0x00000fff
cmp r1, r0
bne _080B5250
movs r0, 0
strh r0, [r6]
movs r0, 0x1
bl sub_8075458
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B5250:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B5258: .4byte gTasks
_080B525C: .4byte gBattle_BG3_Y
_080B5260: .4byte gBattleAnimArgs
_080B5264: .4byte 0x00000fff
thumb_func_end sub_80B51EC
thumb_func_start sub_80B5268
sub_80B5268: @ 80B5268
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080B52C4 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldr r5, _080B52C8 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_8075678
ldr r0, _080B52CC @ =sub_80B52D0
str r0, [r4, 0x1C]
movs r0, 0x10
strh r0, [r4, 0x3A]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r4, 0x3A]
movs r0, 0x52
bl SetGpuReg
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B52C4: .4byte gBattleAnimArgs
_080B52C8: .4byte gBattleAnimTarget
_080B52CC: .4byte sub_80B52D0
thumb_func_end sub_80B5268
thumb_func_start sub_80B52D0
sub_80B52D0: @ 80B52D0
push {r4,lr}
adds r4, r0, 0
bl sub_80B53C0
adds r0, r4, 0
bl sub_80755E0
lsls r0, 24
cmp r0, 0
beq _080B52F0
ldr r0, _080B52EC @ =sub_80B5344
str r0, [r4, 0x1C]
b _080B533A
.align 2, 0
_080B52EC: .4byte sub_80B5344
_080B52F0:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xA
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xF
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x38]
adds r0, r2, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x38]
lsls r2, 16
asrs r2, 16
cmp r2, 0
beq _080B5328
cmp r2, 0xC4
ble _080B533A
_080B5328:
lsls r0, 16
cmp r0, 0
ble _080B533A
ldr r0, _080B5340 @ =gUnknown_2037F24
movs r1, 0
ldrsb r1, [r0, r1]
movs r0, 0xBD
bl PlaySE12WithPanning
_080B533A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B5340: .4byte gUnknown_2037F24
thumb_func_end sub_80B52D0
thumb_func_start sub_80B5344
sub_80B5344: @ 80B5344
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl sub_80755E0
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xA
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xF
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x38]
adds r0, r2, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x38]
lsls r2, 16
asrs r2, 16
cmp r2, 0
beq _080B538A
cmp r2, 0xC4
ble _080B5396
_080B538A:
lsls r0, 16
cmp r0, 0
ble _080B5396
movs r0, 0xBD
bl PlaySE
_080B5396:
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B53B4
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080B53B0 @ =sub_8074F88
str r0, [r4, 0x1C]
b _080B53BA
.align 2, 0
_080B53B0: .4byte sub_8074F88
_080B53B4:
adds r0, r4, 0
bl sub_80B53C0
_080B53BA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B5344
thumb_func_start sub_80B53C0
sub_80B53C0: @ 80B53C0
push {r4,lr}
adds r4, r0, 0
ldrh r2, [r4, 0x3A]
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0xFF
ble _080B53E4
adds r0, r2, 0x1
strh r0, [r4, 0x3A]
lsls r0, 16
ldr r1, _080B53E0 @ =0x010d0000
cmp r0, r1
bne _080B544A
movs r0, 0
b _080B5448
.align 2, 0
_080B53E0: .4byte 0x010d0000
_080B53E4:
ldrh r1, [r4, 0x3C]
adds r3, r1, 0x1
strh r3, [r4, 0x3C]
movs r0, 0xFF
ands r0, r1
cmp r0, 0
bne _080B544A
ldr r1, _080B5408 @ =0xffffff00
ands r1, r3
strh r1, [r4, 0x3C]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080B540C
adds r0, r2, 0x1
b _080B540E
.align 2, 0
_080B5408: .4byte 0xffffff00
_080B540C:
subs r0, r2, 0x1
_080B540E:
strh r0, [r4, 0x3A]
ldrh r0, [r4, 0x3A]
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, 0x3A
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B5430
cmp r0, 0x10
bne _080B543C
_080B5430:
ldrh r0, [r4, 0x3C]
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
eors r0, r1
strh r0, [r4, 0x3C]
_080B543C:
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B544A
movs r0, 0x80
lsls r0, 1
_080B5448:
strh r0, [r4, 0x3A]
_080B544A:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B53C0
thumb_func_start sub_80B5450
sub_80B5450: @ 80B5450
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075114
ldr r1, _080B546C @ =sub_80B5470
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B546C: .4byte sub_80B5470
thumb_func_end sub_80B5450
thumb_func_start sub_80B5470
sub_80B5470: @ 80B5470
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x20
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x8
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x2E]
subs r0, 0x41
lsls r0, 16
lsrs r0, 16
cmp r0, 0x82
bhi _080B54A4
ldrb r0, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x8
b _080B54AE
_080B54A4:
ldrb r0, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x4
_080B54AE:
orrs r1, r0
strb r1, [r4, 0x5]
ldrh r0, [r4, 0x2E]
adds r0, 0x13
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x50
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3D
bne _080B54E0
adds r0, r4, 0
bl DestroyAnimSprite
_080B54E0:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B5470
thumb_func_start sub_80B54E8
sub_80B54E8: @ 80B54E8
push {r4,r5,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0
bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x1
bl sub_80758E0
adds r0, r4, 0
movs r1, 0x80
movs r2, 0x80
movs r3, 0
bl obj_id_set_rotscale
ldr r1, _080B5560 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldr r1, _080B5564 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0
movs r1, 0x80
strh r1, [r0, 0x8]
ldr r1, _080B5568 @ =gBattleAnimArgs
ldrh r1, [r1]
strh r1, [r0, 0xA]
strh r2, [r0, 0xC]
movs r1, 0x10
strh r1, [r0, 0xE]
ldr r1, _080B556C @ =sub_80B5570
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B5560: .4byte gSprites
_080B5564: .4byte gTasks
_080B5568: .4byte gBattleAnimArgs
_080B556C: .4byte sub_80B5570
thumb_func_end sub_80B54E8
thumb_func_start sub_80B5570
sub_80B5570: @ 80B5570
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080B55C0 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
ldrh r0, [r4, 0x1C]
adds r0, 0x1
strh r0, [r4, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080B55B8
movs r0, 0
strh r0, [r4, 0x1C]
ldrh r1, [r4, 0xC]
adds r1, 0x1
strh r1, [r4, 0xC]
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x9
bne _080B55B8
ldr r0, _080B55C4 @ =sub_80B55C8
str r0, [r4]
_080B55B8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B55C0: .4byte gTasks
_080B55C4: .4byte sub_80B55C8
thumb_func_end sub_80B5570
thumb_func_start sub_80B55C8
sub_80B55C8: @ 80B55C8
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080B55EC @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080B55F0
subs r0, r1, 0x1
strh r0, [r4, 0xA]
b _080B5634
.align 2, 0
_080B55EC: .4byte gTasks
_080B55F0:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r1, r0, 24
ldrh r0, [r4, 0x8]
adds r0, 0x8
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0xFF
bgt _080B5618
movs r0, 0x8
ldrsh r2, [r4, r0]
adds r0, r1, 0
adds r1, r2, 0
movs r3, 0
bl obj_id_set_rotscale
b _080B5634
_080B5618:
adds r0, r1, 0
bl sub_8075980
adds r0, r5, 0
bl DestroyAnimVisualTask
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
_080B5634:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B55C8
thumb_func_start sub_80B563C
sub_80B563C: @ 80B563C
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x4
adds r4, r0, 0
ldrh r5, [r4, 0x20]
ldrh r6, [r4, 0x22]
ldr r0, _080B56D8 @ =gBattleAnimAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
movs r1, 0
mov r9, r1
strh r0, [r4, 0x20]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
mov r1, r9
strh r1, [r4, 0x2E]
ldr r2, _080B56DC @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r4, 0x30]
ldrh r1, [r2, 0x2]
strh r1, [r4, 0x32]
ldrh r1, [r2, 0x4]
strh r1, [r4, 0x34]
ldrh r1, [r4, 0x20]
lsls r1, 4
strh r1, [r4, 0x36]
lsls r0, 4
strh r0, [r4, 0x38]
lsls r5, 16
asrs r5, 16
movs r1, 0x20
ldrsh r0, [r4, r1]
subs r5, r0
lsls r5, 4
movs r0, 0
ldrsh r1, [r2, r0]
lsls r1, 1
adds r0, r5, 0
str r2, [sp]
bl __divsi3
strh r0, [r4, 0x3A]
lsls r6, 16
asrs r6, 16
movs r1, 0x22
ldrsh r0, [r4, r1]
subs r6, r0
lsls r6, 4
ldr r2, [sp]
movs r0, 0
ldrsh r1, [r2, r0]
lsls r1, 1
adds r0, r6, 0
bl __divsi3
strh r0, [r4, 0x3C]
ldr r0, _080B56E0 @ =sub_80B56E4
str r0, [r4, 0x1C]
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B56D8: .4byte gBattleAnimAttacker
_080B56DC: .4byte gBattleAnimArgs
_080B56E0: .4byte sub_80B56E4
thumb_func_end sub_80B563C
thumb_func_start sub_80B56E4
sub_80B56E4: @ 80B56E4
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080B572E
cmp r0, 0x1
bgt _080B56FA
cmp r0, 0
beq _080B5704
b _080B57F2
_080B56FA:
cmp r0, 0x2
beq _080B5798
cmp r0, 0x3
beq _080B57EC
b _080B57F2
_080B5704:
ldrh r0, [r5, 0x3A]
ldrh r2, [r5, 0x36]
adds r0, r2
strh r0, [r5, 0x36]
ldrh r1, [r5, 0x3C]
ldrh r2, [r5, 0x38]
adds r1, r2
strh r1, [r5, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r5, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
ldrh r0, [r5, 0x30]
subs r0, 0x1
strh r0, [r5, 0x30]
lsls r0, 16
cmp r0, 0
bgt _080B57F2
b _080B57DE
_080B572E:
ldrh r0, [r5, 0x32]
subs r0, 0x1
strh r0, [r5, 0x32]
lsls r0, 16
cmp r0, 0
bgt _080B57F2
ldr r4, _080B5794 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x30]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x20]
lsls r0, 4
strh r0, [r5, 0x36]
ldrh r0, [r5, 0x22]
lsls r0, 4
strh r0, [r5, 0x38]
movs r1, 0x30
ldrsh r0, [r5, r1]
movs r2, 0x20
ldrsh r1, [r5, r2]
subs r0, r1
lsls r0, 4
movs r2, 0x34
ldrsh r1, [r5, r2]
bl __divsi3
strh r0, [r5, 0x3A]
movs r1, 0x32
ldrsh r0, [r5, r1]
movs r2, 0x22
ldrsh r1, [r5, r2]
subs r0, r1
lsls r0, 4
movs r2, 0x34
ldrsh r1, [r5, r2]
bl __divsi3
strh r0, [r5, 0x3C]
b _080B57DE
.align 2, 0
_080B5794: .4byte gBattleAnimTarget
_080B5798:
ldrh r0, [r5, 0x3A]
ldrh r1, [r5, 0x36]
adds r0, r1
strh r0, [r5, 0x36]
ldrh r1, [r5, 0x3C]
ldrh r2, [r5, 0x38]
adds r1, r2
strh r1, [r5, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r5, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
ldrh r0, [r5, 0x34]
subs r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
cmp r0, 0
bgt _080B57F2
ldr r4, _080B57E8 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
_080B57DE:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080B57F2
.align 2, 0
_080B57E8: .4byte gBattleAnimTarget
_080B57EC:
adds r0, r5, 0
bl move_anim_8074EE0
_080B57F2:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B56E4
thumb_func_start sub_80B57F8
sub_80B57F8: @ 80B57F8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075114
ldr r0, _080B580C @ =sub_80B5810
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B580C: .4byte sub_80B5810
thumb_func_end sub_80B57F8
thumb_func_start sub_80B5810
sub_80B5810: @ 80B5810
push {r4-r6,lr}
adds r3, r0, 0
movs r5, 0
movs r6, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080B58A6
adds r1, r3, 0
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x4
ands r0, r2
adds r4, r1, 0
cmp r0, 0
bne _080B583A
movs r0, 0x4
orrs r0, r2
strb r0, [r4]
_080B583A:
movs r1, 0x2E
ldrsh r0, [r3, r1]
cmp r0, 0
beq _080B584A
cmp r0, 0x1
beq _080B5854
movs r6, 0x1
b _080B585E
_080B584A:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x2
bne _080B585E
b _080B5862
_080B5854:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x4
bne _080B585E
movs r5, 0x1
_080B585E:
cmp r5, 0
beq _080B5894
_080B5862:
ldrb r2, [r4]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4]
ldrh r0, [r3, 0x32]
adds r0, 0x1
movs r1, 0
strh r0, [r3, 0x32]
strh r1, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080B58A6
strh r1, [r3, 0x32]
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
b _080B58A6
_080B5894:
cmp r6, 0
beq _080B58A0
adds r0, r3, 0
bl DestroyAnimSprite
b _080B58A6
_080B58A0:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
_080B58A6:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B5810
thumb_func_start sub_80B58AC
sub_80B58AC: @ 80B58AC
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080B58D8 @ =gTasks
adds r5, r0, r1
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
movs r6, 0
movs r1, 0
strh r0, [r5, 0x8]
lsls r0, 16
cmp r0, 0
bge _080B58DC
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080B59B8
.align 2, 0
_080B58D8: .4byte gTasks
_080B58DC:
strh r1, [r5, 0xA]
movs r0, 0xF
strh r0, [r5, 0xC]
movs r0, 0x2
strh r0, [r5, 0xE]
strh r1, [r5, 0x10]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r5, 0xE]
lsls r1, 8
ldrh r0, [r5, 0xC]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r4, _080B5944 @ =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x50
strh r1, [r0, 0x2E]
ldr r0, _080B5948 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B5950
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080B594C @ =0x0000ff70
strh r1, [r0, 0x30]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x70
b _080B596E
.align 2, 0
_080B5944: .4byte gSprites
_080B5948: .4byte gBattleAnimTarget
_080B594C: .4byte 0x0000ff70
_080B5950:
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x90
strh r1, [r0, 0x30]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080B59C0 @ =0x0000ff90
_080B596E:
strh r1, [r0, 0x32]
ldr r4, _080B59C4 @ =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r2, 0
strh r2, [r0, 0x34]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
strh r2, [r0, 0x36]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080B59C8 @ =SpriteCallbackDummy
bl StoreSpriteCallbackInData6
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, 0x1C
adds r0, r4
ldr r1, _080B59CC @ =sub_8074D00
str r1, [r0]
ldr r0, _080B59D0 @ =sub_80B59D4
str r0, [r5]
_080B59B8:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B59C0: .4byte 0x0000ff90
_080B59C4: .4byte gSprites
_080B59C8: .4byte SpriteCallbackDummy
_080B59CC: .4byte sub_8074D00
_080B59D0: .4byte sub_80B59D4
thumb_func_end sub_80B58AC
thumb_func_start sub_80B59D4
sub_80B59D4: @ 80B59D4
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B59F8 @ =gTasks
adds r4, r0, r1
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080B5A78
cmp r0, 0x1
bgt _080B59FC
cmp r0, 0
beq _080B5A02
b _080B5AA4
.align 2, 0
_080B59F8: .4byte gTasks
_080B59FC:
cmp r0, 0x2
beq _080B5A9E
b _080B5AA4
_080B5A02:
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x3
ands r0, r1
strh r0, [r4, 0x12]
cmp r0, 0x1
bne _080B5A20
ldrh r1, [r4, 0xC]
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080B5A20
subs r0, r1, 0x1
strh r0, [r4, 0xC]
_080B5A20:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0x3
bne _080B5A36
ldrh r1, [r4, 0xE]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B5A36
adds r0, r1, 0x1
strh r0, [r4, 0xE]
_080B5A36:
ldrh r1, [r4, 0xE]
lsls r1, 8
ldrh r0, [r4, 0xC]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r1, [r4, 0xC]
movs r0, 0x80
lsls r0, 13
cmp r1, r0
bne _080B5AA4
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x50
ble _080B5AA4
movs r2, 0x8
ldrsh r1, [r4, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080B5A74 @ =gSprites
adds r0, r1
bl obj_delete_but_dont_free_vram
movs r0, 0x1
strh r0, [r4, 0x10]
b _080B5AA4
.align 2, 0
_080B5A74: .4byte gSprites
_080B5A78:
ldrh r0, [r4, 0x14]
adds r0, 0x1
strh r0, [r4, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B5AA4
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
b _080B5AA4
_080B5A9E:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B5AA4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B59D4
thumb_func_start sub_80B5AAC
sub_80B5AAC: @ 80B5AAC
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r2, _080B5ACC @ =gTasks
adds r1, r2
movs r2, 0
strh r2, [r1, 0x26]
ldr r2, _080B5AD0 @ =sub_80B5AD4
str r2, [r1]
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_080B5ACC: .4byte gTasks
_080B5AD0: .4byte sub_80B5AD4
thumb_func_end sub_80B5AAC
thumb_func_start sub_80B5AD4
sub_80B5AD4: @ 80B5AD4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xC
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080B5B0C @ =gTasks
adds r5, r0, r1
ldr r0, _080B5B10 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x26
ldrsh r0, [r5, r1]
cmp r0, 0x4
bls _080B5B00
b _080B5D22
_080B5B00:
lsls r0, 2
ldr r1, _080B5B14 @ =_080B5B18
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B5B0C: .4byte gTasks
_080B5B10: .4byte gBattleAnimTarget
_080B5B14: .4byte _080B5B18
.align 2, 0
_080B5B18:
.4byte _080B5B2C
.4byte _080B5C2C
.4byte _080B5C70
.4byte _080B5CD8
.4byte _080B5D04
_080B5B2C:
ldr r7, _080B5B64 @ =0x00002771
adds r0, r7, 0
bl AllocSpritePalette
lsls r0, 24
lsrs r0, 24
movs r2, 0
mov r8, r2
strh r0, [r5, 0x24]
cmp r0, 0xFF
beq _080B5B5A
cmp r0, 0xF
beq _080B5B5A
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
strh r0, [r5, 0x8]
lsls r0, 16
cmp r0, 0
bge _080B5B68
adds r0, r7, 0
bl FreeSpritePaletteByTag
_080B5B5A:
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080B5D28
.align 2, 0
_080B5B64: .4byte 0x00002771
_080B5B68:
ldr r4, _080B5C14 @ =gSprites
movs r1, 0x8
ldrsh r0, [r5, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrh r2, [r5, 0x24]
lsls r2, 4
ldrb r3, [r1, 0x5]
movs r0, 0xF
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
movs r2, 0x8
ldrsh r0, [r5, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r2, [r1, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0, 0x5]
movs r2, 0xC
orrs r1, r2
strb r1, [r0, 0x5]
movs r1, 0x8
ldrsh r0, [r5, r1]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r4
ldr r0, _080B5C18 @ =gUnknown_2024018
ldr r1, [r0]
ldr r0, _080B5C1C @ =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
lsls r1, 31
adds r2, 0x3E
lsrs r1, 31
lsls r1, 2
ldrb r3, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2]
mov r2, r8
strh r2, [r5, 0xA]
strh r2, [r5, 0xC]
movs r0, 0x10
strh r0, [r5, 0xE]
movs r0, 0x1
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
movs r0, 0x22
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x5]
lsrs r0, 4
adds r0, 0x10
lsls r0, 4
strh r0, [r5, 0x10]
cmp r6, 0x1
bne _080B5C20
movs r1, 0x80
lsls r1, 2
b _080B5C24
.align 2, 0
_080B5C14: .4byte gSprites
_080B5C18: .4byte gUnknown_2024018
_080B5C1C: .4byte gBattleAnimTarget
_080B5C20:
movs r1, 0x80
lsls r1, 3
_080B5C24:
movs r0, 0
bl ClearGpuRegBits
b _080B5D22
_080B5C2C:
movs r1, 0x24
ldrsh r0, [r5, r1]
adds r0, 0x10
lsls r0, 4
strh r0, [r5, 0x24]
movs r2, 0x10
ldrsh r0, [r5, r2]
lsls r0, 1
ldr r1, _080B5C60 @ =gPlttBufferUnfaded
adds r0, r1
movs r2, 0x24
ldrsh r1, [r5, r2]
lsls r1, 1
ldr r2, _080B5C64 @ =gPlttBufferFaded
adds r1, r2
ldr r2, _080B5C68 @ =0x04000008
bl CpuSet
ldrh r0, [r5, 0x10]
ldr r3, _080B5C6C @ =0x00003c0d
movs r1, 0x10
movs r2, 0xA
bl BlendPalette
b _080B5D22
.align 2, 0
_080B5C60: .4byte gPlttBufferUnfaded
_080B5C64: .4byte gPlttBufferFaded
_080B5C68: .4byte 0x04000008
_080B5C6C: .4byte 0x00003c0d
_080B5C70:
ldr r2, _080B5CAC @ =gSprites
movs r0, 0x22
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
ldrh r0, [r0, 0x22]
adds r1, r0
subs r1, 0x20
lsls r1, 16
lsrs r2, r1, 16
cmp r1, 0
bge _080B5C90
movs r2, 0
_080B5C90:
cmp r6, 0x1
bne _080B5CB0
lsls r0, r2, 24
lsrs r0, 24
adds r1, r2, 0
adds r1, 0x40
lsls r1, 24
lsrs r1, 24
movs r2, 0
str r2, [sp]
movs r2, 0x4
str r2, [sp, 0x4]
str r6, [sp, 0x8]
b _080B5CC8
.align 2, 0
_080B5CAC: .4byte gSprites
_080B5CB0:
lsls r0, r2, 24
lsrs r0, 24
adds r1, r2, 0
adds r1, 0x40
lsls r1, 24
lsrs r1, 24
movs r2, 0
str r2, [sp]
movs r2, 0x8
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
_080B5CC8:
movs r2, 0x2
movs r3, 0x6
bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
b _080B5D22
_080B5CD8:
cmp r6, 0x1
bne _080B5CEC
ldr r1, _080B5CE8 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
b _080B5CF4
.align 2, 0
_080B5CE8: .4byte 0x00003f42
_080B5CEC:
ldr r1, _080B5D00 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
_080B5CF4:
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
b _080B5D22
.align 2, 0
_080B5D00: .4byte 0x00003f44
_080B5D04:
cmp r6, 0x1
bne _080B5D14
movs r1, 0x80
lsls r1, 2
movs r0, 0
bl SetGpuRegBits
b _080B5D1E
_080B5D14:
movs r1, 0x80
lsls r1, 3
movs r0, 0
bl SetGpuRegBits
_080B5D1E:
ldr r0, _080B5D34 @ =sub_80B5D38
str r0, [r5]
_080B5D22:
ldrh r0, [r5, 0x26]
adds r0, 0x1
strh r0, [r5, 0x26]
_080B5D28:
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B5D34: .4byte sub_80B5D38
thumb_func_end sub_80B5AD4
thumb_func_start sub_80B5D38
sub_80B5D38: @ 80B5D38
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B5DC0 @ =gTasks
adds r4, r0, r1
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x1
ands r0, r1
strh r0, [r4, 0x12]
cmp r0, 0
bne _080B5D70
ldr r1, _080B5DC4 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0x12
bl __divsi3
strh r0, [r4, 0xC]
_080B5D70:
movs r2, 0x12
ldrsh r0, [r4, r2]
cmp r0, 0x1
bne _080B5D92
ldr r1, _080B5DC4 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0x12
bl __divsi3
movs r1, 0x10
subs r1, r0
strh r1, [r4, 0xE]
_080B5D92:
ldrh r1, [r4, 0xE]
lsls r1, 8
ldrh r0, [r4, 0xC]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0x80
bne _080B5DBA
movs r0, 0
strh r0, [r4, 0x26]
ldr r1, _080B5DC8 @ =sub_80B5DCC
str r1, [r4]
adds r0, r5, 0
bl _call_via_r1
_080B5DBA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B5DC0: .4byte gTasks
_080B5DC4: .4byte gSineTable
_080B5DC8: .4byte sub_80B5DCC
thumb_func_end sub_80B5D38
thumb_func_start sub_80B5DCC
sub_80B5DCC: @ 80B5DCC
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B5DFC @ =gTasks
adds r4, r0, r1
ldr r0, _080B5E00 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x26
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080B5E38
cmp r0, 0x1
bgt _080B5E04
cmp r0, 0
beq _080B5E0A
b _080B5EB4
.align 2, 0
_080B5DFC: .4byte gTasks
_080B5E00: .4byte gBattleAnimTarget
_080B5E04:
cmp r0, 0x2
beq _080B5E4C
b _080B5EB4
_080B5E0A:
ldr r1, _080B5E28 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
cmp r6, 0x1
bne _080B5E2C
movs r1, 0x80
lsls r1, 2
b _080B5E30
.align 2, 0
_080B5E28: .4byte gScanlineEffect
_080B5E2C:
movs r1, 0x80
lsls r1, 3
_080B5E30:
movs r0, 0
bl ClearGpuRegBits
b _080B5EB4
_080B5E38:
ldrh r0, [r4, 0x10]
ldr r3, _080B5E48 @ =0x00003c0d
movs r1, 0x10
movs r2, 0
bl BlendPalette
b _080B5EB4
.align 2, 0
_080B5E48: .4byte 0x00003c0d
_080B5E4C:
ldr r3, _080B5E9C @ =gSprites
movs r0, 0x24
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
bl obj_delete_but_dont_free_vram
ldr r0, _080B5EA0 @ =0x00002771
bl FreeSpritePaletteByTag
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
cmp r6, 0x1
bne _080B5EA4
movs r1, 0x80
lsls r1, 2
movs r0, 0
bl SetGpuRegBits
b _080B5EAE
.align 2, 0
_080B5E9C: .4byte gSprites
_080B5EA0: .4byte 0x00002771
_080B5EA4:
movs r1, 0x80
lsls r1, 3
movs r0, 0
bl SetGpuRegBits
_080B5EAE:
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B5EB4:
ldrh r0, [r4, 0x26]
adds r0, 0x1
strh r0, [r4, 0x26]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B5DCC
thumb_func_start sub_80B5EC0
sub_80B5EC0: @ 80B5EC0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r7, r0, 0
ldr r0, _080B5EFC @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B5F08
ldr r4, _080B5F00 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
ldr r4, _080B5F04 @ =gBattleAnimTarget
b _080B5F2C
.align 2, 0
_080B5EFC: .4byte gBattleAnimArgs
_080B5F00: .4byte gBattleAnimAttacker
_080B5F04: .4byte gBattleAnimTarget
_080B5F08:
ldr r4, _080B5FD0 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
ldr r4, _080B5FD4 @ =gBattleAnimAttacker
_080B5F2C:
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 8
movs r1, 0xE0
lsls r1, 13
adds r0, r1
lsrs r0, 16
mov r9, r0
mov r8, r5
mov r2, r9
subs r4, r2, r5
lsls r4, 16
lsrs r4, 16
lsls r0, r6, 4
strh r0, [r7, 0x2E]
lsls r0, r5, 4
strh r0, [r7, 0x30]
mov r1, r10
subs r0, r1, r6
lsls r0, 4
ldr r5, _080B5FD8 @ =gBattleAnimArgs
movs r2, 0x2
ldrsh r1, [r5, r2]
bl __divsi3
strh r0, [r7, 0x32]
lsls r4, 16
asrs r4, 12
movs r0, 0x2
ldrsh r1, [r5, r0]
adds r0, r4, 0
bl __divsi3
strh r0, [r7, 0x34]
ldrh r0, [r5, 0x2]
strh r0, [r7, 0x36]
mov r1, r10
strh r1, [r7, 0x38]
mov r2, r9
strh r2, [r7, 0x3A]
movs r1, 0x36
ldrsh r0, [r7, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r7, 0x3C]
ldrb r1, [r7, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x8
orrs r0, r1
strb r0, [r7, 0x5]
strh r6, [r7, 0x20]
mov r2, r8
strh r2, [r7, 0x22]
ldr r0, _080B5FDC @ =sub_80B5FE0
str r0, [r7, 0x1C]
adds r2, r7, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B5FD0: .4byte gBattleAnimTarget
_080B5FD4: .4byte gBattleAnimAttacker
_080B5FD8: .4byte gBattleAnimArgs
_080B5FDC: .4byte sub_80B5FE0
thumb_func_end sub_80B5EC0
thumb_func_start sub_80B5FE0
sub_80B5FE0: @ 80B5FE0
push {r4,lr}
adds r2, r0, 0
ldrh r3, [r2, 0x36]
movs r1, 0x36
ldrsh r0, [r2, r1]
cmp r0, 0
beq _080B6018
ldrh r0, [r2, 0x32]
ldrh r4, [r2, 0x2E]
adds r0, r4
strh r0, [r2, 0x2E]
ldrh r1, [r2, 0x34]
ldrh r4, [r2, 0x30]
adds r1, r4
strh r1, [r2, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r2, 0x22]
subs r0, r3, 0x1
strh r0, [r2, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0
bne _080B6018
strh r0, [r2, 0x2E]
_080B6018:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B5FE0
thumb_func_start sub_80B6020
sub_80B6020: @ 80B6020
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080B6170 @ =gTasks
adds r1, r0
str r1, [sp]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0
ldr r1, [sp]
strh r0, [r1, 0x12]
strh r0, [r1, 0x14]
strh r0, [r1, 0x16]
strh r0, [r1, 0x18]
movs r0, 0x10
strh r0, [r1, 0x1A]
ldr r2, _080B6174 @ =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r1, 0x1C]
ldr r4, _080B6178 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8076B2C
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x8]
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080B6090
b _080B618C
_080B6090:
movs r4, 0
_080B6092:
lsls r1, r4, 16
asrs r3, r1, 16
ldr r0, _080B6178 @ =gBattleAnimAttacker
ldrb r2, [r0]
str r1, [sp, 0x10]
cmp r3, r2
beq _080B615E
movs r0, 0x2
eors r2, r0
cmp r3, r2
beq _080B615E
lsls r0, r4, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080B615E
ldr r6, [sp, 0x4]
ldr r3, [sp, 0x8]
lsls r0, r3, 16
asrs r7, r0, 16
ldr r0, _080B617C @ =gUnknown_83E7668
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x37
bl CreateSprite
lsls r0, 24
lsrs r0, 24
mov r8, r0
cmp r0, 0x40
beq _080B615E
adds r0, r4, 0
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
mov r10, r0
adds r0, r4, 0
movs r1, 0x3
bl sub_8076B2C
lsls r0, 16
lsrs r0, 16
mov r9, r0
mov r0, r8
lsls r5, r0, 4
add r5, r8
lsls r5, 2
ldr r1, _080B6180 @ =gSprites
adds r4, r5, r1
lsls r0, r6, 4
strh r0, [r4, 0x2E]
lsls r0, r7, 4
strh r0, [r4, 0x30]
mov r2, r10
subs r0, r2, r6
lsls r0, 4
ldr r3, _080B6174 @ =gBattleAnimArgs
movs r2, 0x2
ldrsh r1, [r3, r2]
bl __divsi3
strh r0, [r4, 0x32]
mov r3, r9
lsls r0, r3, 16
asrs r0, 16
subs r0, r7
lsls r0, 4
ldr r2, _080B6174 @ =gBattleAnimArgs
movs r3, 0x2
ldrsh r1, [r2, r3]
bl __divsi3
strh r0, [r4, 0x34]
ldr r1, _080B6174 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x36]
mov r2, r10
strh r2, [r4, 0x38]
mov r3, r9
strh r3, [r4, 0x3A]
ldr r0, _080B6184 @ =gSprites + 0x1C
adds r5, r0
ldr r0, _080B6188 @ =sub_80B5FE0
str r0, [r5]
ldr r2, [sp]
movs r3, 0x20
ldrsh r1, [r2, r3]
adds r1, 0xD
lsls r1, 1
adds r0, r2, 0
adds r0, 0x8
adds r0, r1
mov r1, r8
strh r1, [r0]
ldrh r0, [r2, 0x20]
adds r0, 0x1
strh r0, [r2, 0x20]
_080B615E:
ldr r2, [sp, 0x10]
movs r3, 0x80
lsls r3, 9
adds r0, r2, r3
lsrs r4, r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080B6092
b _080B6210
.align 2, 0
_080B6170: .4byte gTasks
_080B6174: .4byte gBattleAnimArgs
_080B6178: .4byte gBattleAnimAttacker
_080B617C: .4byte gUnknown_83E7668
_080B6180: .4byte gSprites
_080B6184: .4byte gSprites + 0x1C
_080B6188: .4byte sub_80B5FE0
_080B618C:
ldr r0, _080B6228 @ =gUnknown_83E7668
ldr r7, [sp, 0x4]
ldr r2, [sp, 0x8]
lsls r1, r2, 16
asrs r1, 16
str r1, [sp, 0xC]
adds r1, r7, 0
ldr r2, [sp, 0xC]
movs r3, 0x37
bl CreateSprite
lsls r0, 24
lsrs r0, 24
mov r8, r0
cmp r0, 0x40
beq _080B6210
movs r3, 0x30
mov r10, r3
movs r0, 0x28
mov r9, r0
ldr r6, _080B622C @ =gSprites
mov r1, r8
lsls r5, r1, 4
add r5, r8
lsls r5, 2
adds r4, r5, r6
lsls r0, r7, 4
strh r0, [r4, 0x2E]
ldr r2, [sp, 0xC]
lsls r0, r2, 4
strh r0, [r4, 0x30]
subs r0, r3, r7
lsls r0, 4
ldr r3, _080B6230 @ =gBattleAnimArgs
movs r2, 0x2
ldrsh r1, [r3, r2]
bl __divsi3
strh r0, [r4, 0x32]
mov r3, r9
ldr r1, [sp, 0xC]
subs r0, r3, r1
lsls r0, 4
ldr r2, _080B6230 @ =gBattleAnimArgs
movs r3, 0x2
ldrsh r1, [r2, r3]
bl __divsi3
strh r0, [r4, 0x34]
ldr r1, _080B6230 @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x36]
mov r2, r10
strh r2, [r4, 0x38]
mov r3, r9
strh r3, [r4, 0x3A]
adds r6, 0x1C
adds r5, r6
ldr r0, _080B6234 @ =sub_80B5FE0
str r0, [r5]
mov r1, r8
ldr r0, [sp]
strh r1, [r0, 0x22]
movs r0, 0x1
ldr r2, [sp]
strh r0, [r2, 0x20]
_080B6210:
ldr r0, _080B6238 @ =sub_80B623C
ldr r3, [sp]
str r0, [r3]
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B6228: .4byte gUnknown_83E7668
_080B622C: .4byte gSprites
_080B6230: .4byte gBattleAnimArgs
_080B6234: .4byte sub_80B5FE0
_080B6238: .4byte sub_80B623C
thumb_func_end sub_80B6020
thumb_func_start sub_80B623C
sub_80B623C: @ 80B623C
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B6260 @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _080B62F2
cmp r1, 0x1
bgt _080B6264
cmp r1, 0
beq _080B6272
b _080B63AE
.align 2, 0
_080B6260: .4byte gTasks
_080B6264:
cmp r1, 0x2
bne _080B626A
b _080B6384
_080B626A:
cmp r1, 0x3
bne _080B6270
b _080B6398
_080B6270:
b _080B63AE
_080B6272:
movs r2, 0x14
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080B62D8
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B62D8
strh r1, [r4, 0x12]
ldrh r0, [r4, 0x16]
adds r0, 0x1
strh r0, [r4, 0x16]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B62A8
ldrh r1, [r4, 0x18]
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B62B6
adds r0, r1, 0x1
strh r0, [r4, 0x18]
b _080B62B6
_080B62A8:
ldrh r1, [r4, 0x1A]
movs r2, 0x1A
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B62B6
subs r0, r1, 0x1
strh r0, [r4, 0x1A]
_080B62B6:
ldrh r1, [r4, 0x1A]
lsls r1, 8
ldrh r0, [r4, 0x18]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x16
ldrsh r0, [r4, r1]
cmp r0, 0x17
ble _080B62D8
movs r0, 0
strh r0, [r4, 0x16]
movs r0, 0x1
strh r0, [r4, 0x14]
_080B62D8:
ldrh r1, [r4, 0x1C]
movs r2, 0x1C
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B62E8
subs r0, r1, 0x1
strh r0, [r4, 0x1C]
b _080B63AE
_080B62E8:
movs r1, 0x14
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080B63AE
b _080B6390
_080B62F2:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B63AE
movs r0, 0
strh r0, [r4, 0x12]
ldrh r0, [r4, 0x16]
adds r0, 0x1
strh r0, [r4, 0x16]
ands r0, r1
lsls r0, 16
cmp r0, 0
beq _080B6322
ldrh r1, [r4, 0x18]
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B6330
subs r0, r1, 0x1
strh r0, [r4, 0x18]
b _080B6330
_080B6322:
ldrh r1, [r4, 0x1A]
movs r2, 0x1A
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B6330
adds r0, r1, 0x1
strh r0, [r4, 0x1A]
_080B6330:
ldrh r1, [r4, 0x1A]
lsls r1, 8
ldrh r0, [r4, 0x18]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
ldr r1, [r4, 0x18]
movs r0, 0x80
lsls r0, 13
cmp r1, r0
bne _080B63AE
movs r5, 0
b _080B6374
_080B6350:
adds r1, r5, 0
adds r1, 0xD
lsls r1, 1
adds r0, r4, 0
adds r0, 0x8
adds r0, r1
movs r2, 0
ldrsh r1, [r0, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080B6380 @ =gSprites
adds r0, r1
bl DestroySprite
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_080B6374:
movs r1, 0x20
ldrsh r0, [r4, r1]
cmp r5, r0
blt _080B6350
b _080B6390
.align 2, 0
_080B6380: .4byte gSprites
_080B6384:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
cmp r0, 0
ble _080B63AE
_080B6390:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B63AE
_080B6398:
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B63AE:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B623C
thumb_func_start sub_80B63B4
sub_80B63B4: @ 80B63B4
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
ldr r0, _080B6400 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080B6404 @ =gUnknown_2022986
strh r1, [r0]
ldr r1, _080B6408 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080B640C @ =0x00003f1f
movs r0, 0x4A
bl SetGpuReg
movs r0, 0x50
movs r1, 0xC8
bl SetGpuReg
movs r0, 0x54
movs r1, 0x10
bl SetGpuReg
ldr r0, _080B6410 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B63FC
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080B6414
_080B63FC:
movs r6, 0x28
b _080B6416
.align 2, 0
_080B6400: .4byte gUnknown_2022984
_080B6404: .4byte gUnknown_2022986
_080B6408: .4byte 0x00003f3f
_080B640C: .4byte 0x00003f1f
_080B6410: .4byte gBattleAnimAttacker
_080B6414:
movs r6, 0xC8
_080B6416:
ldr r1, _080B6454 @ =gUnknown_2022984
lsls r3, r6, 16
asrs r2, r3, 16
lsls r0, r2, 8
orrs r0, r2
strh r0, [r1]
ldr r1, _080B6458 @ =gUnknown_2022986
movs r5, 0x28
ldr r0, _080B645C @ =0x00002828
strh r0, [r1]
lsrs r3, 16
movs r1, 0xF0
subs r1, r2
movs r4, 0x48
ldr r2, _080B6460 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r0, r2
strh r3, [r0, 0xA]
strh r1, [r0, 0xC]
strh r5, [r0, 0xE]
strh r4, [r0, 0x10]
strh r6, [r0, 0x12]
strh r5, [r0, 0x14]
ldr r1, _080B6464 @ =sub_80B6468
str r1, [r0]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B6454: .4byte gUnknown_2022984
_080B6458: .4byte gUnknown_2022986
_080B645C: .4byte 0x00002828
_080B6460: .4byte gTasks
_080B6464: .4byte sub_80B6468
thumb_func_end sub_80B63B4
thumb_func_start sub_80B6468
sub_80B6468: @ 80B6468
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
ldr r2, _080B6588 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
ldrh r1, [r4, 0x8]
adds r0, r1, 0x1
strh r0, [r4, 0x8]
ldrh r5, [r4, 0xA]
ldrh r7, [r4, 0xC]
ldrh r0, [r4, 0xE]
mov r10, r0
ldrh r2, [r4, 0x10]
str r2, [sp, 0xC]
ldrh r0, [r4, 0x12]
ldrh r2, [r4, 0x14]
mov r8, r2
lsls r1, 16
asrs r6, r1, 16
cmp r6, 0xF
ble _080B64A4
b _080B6594
_080B64A4:
lsls r0, 16
asrs r0, 16
bl __floatsidf
str r0, [sp, 0x10]
str r1, [sp, 0x14]
lsls r0, r5, 16
asrs r0, 16
bl __floatsidf
ldr r2, _080B658C @ =0x3fb00000
ldr r3, _080B6590 @ =0x00000000
bl __muldf3
adds r5, r1, 0
adds r4, r0, 0
adds r0, r6, 0
bl __floatsidf
str r0, [sp, 0x18]
str r1, [sp, 0x1C]
adds r1, r5, 0
adds r0, r4, 0
ldr r2, [sp, 0x18]
ldr r3, [sp, 0x1C]
bl __muldf3
adds r3, r1, 0
adds r2, r0, 0
ldr r0, [sp, 0x10]
ldr r1, [sp, 0x14]
bl __subdf3
bl __fixunsdfsi
lsls r0, 16
lsrs r0, 16
mov r9, r0
lsls r0, r7, 16
asrs r0, 16
bl __floatsidf
ldr r2, _080B658C @ =0x3fb00000
ldr r3, _080B6590 @ =0x00000000
bl __muldf3
ldr r2, [sp, 0x18]
ldr r3, [sp, 0x1C]
bl __muldf3
adds r3, r1, 0
adds r2, r0, 0
ldr r0, [sp, 0x10]
ldr r1, [sp, 0x14]
bl __adddf3
bl __fixunsdfsi
lsls r0, 16
lsrs r7, r0, 16
mov r1, r8
lsls r0, r1, 16
asrs r0, 16
bl __floatsidf
adds r5, r1, 0
adds r4, r0, 0
mov r2, r10
lsls r0, r2, 16
asrs r0, 16
bl __floatsidf
ldr r2, _080B658C @ =0x3fb00000
ldr r3, _080B6590 @ =0x00000000
bl __muldf3
ldr r2, [sp, 0x18]
ldr r3, [sp, 0x1C]
bl __muldf3
adds r3, r1, 0
adds r2, r0, 0
adds r1, r5, 0
adds r0, r4, 0
bl __subdf3
bl __fixunsdfsi
lsls r0, 16
lsrs r6, r0, 16
ldr r1, [sp, 0xC]
lsls r0, r1, 16
asrs r0, 16
bl __floatsidf
ldr r2, _080B658C @ =0x3fb00000
ldr r3, _080B6590 @ =0x00000000
bl __muldf3
ldr r2, [sp, 0x18]
ldr r3, [sp, 0x1C]
bl __muldf3
adds r3, r1, 0
adds r2, r0, 0
adds r1, r5, 0
adds r0, r4, 0
bl __adddf3
bl __fixunsdfsi
lsls r0, 16
lsrs r5, r0, 16
b _080B65C2
.align 2, 0
_080B6588: .4byte gTasks
_080B658C: .4byte 0x3fb00000
_080B6590: .4byte 0x00000000
_080B6594:
movs r2, 0
mov r9, r2
movs r7, 0xF0
movs r6, 0
movs r5, 0x70
str r6, [sp]
str r6, [sp, 0x4]
str r6, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r3, 0
bl sub_8075BE8
lsls r0, 16
lsrs r0, 16
str r6, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, _080B65E4 @ =sub_80B65F0
str r0, [r4]
_080B65C2:
ldr r1, _080B65E8 @ =gUnknown_2022984
mov r2, r9
lsls r0, r2, 8
orrs r7, r0
strh r7, [r1]
ldr r1, _080B65EC @ =gUnknown_2022986
lsls r0, r6, 8
orrs r5, r0
strh r5, [r1]
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B65E4: .4byte sub_80B65F0
_080B65E8: .4byte gUnknown_2022984
_080B65EC: .4byte gUnknown_2022986
thumb_func_end sub_80B6468
thumb_func_start sub_80B65F0
sub_80B65F0: @ 80B65F0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080B663C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080B6636
ldr r0, _080B6640 @ =gUnknown_2022984
strh r1, [r0]
ldr r0, _080B6644 @ =gUnknown_2022986
strh r1, [r0]
ldr r4, _080B6648 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B6636:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B663C: .4byte gPaletteFade
_080B6640: .4byte gUnknown_2022984
_080B6644: .4byte gUnknown_2022986
_080B6648: .4byte 0x00003f3f
thumb_func_end sub_80B65F0
thumb_func_start sub_80B664C
sub_80B664C: @ 80B664C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r0, _080B6678 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B6680
movs r2, 0x18
ldr r3, _080B667C @ =0x0000fffe
ldrb r0, [r4, 0x3]
movs r1, 0x3F
negs r1, r1
ands r1, r0
movs r0, 0x10
orrs r1, r0
strb r1, [r4, 0x3]
b _080B6684
.align 2, 0
_080B6678: .4byte gBattleAnimAttacker
_080B667C: .4byte 0x0000fffe
_080B6680:
ldr r2, _080B66A0 @ =0x0000ffe8
movs r3, 0x2
_080B6684:
lsls r0, r2, 16
asrs r0, 16
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
strh r3, [r4, 0x30]
movs r0, 0x3C
strh r0, [r4, 0x2E]
ldr r0, _080B66A4 @ =sub_80B66A8
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B66A0: .4byte 0x0000ffe8
_080B66A4: .4byte sub_80B66A8
thumb_func_end sub_80B664C
thumb_func_start sub_80B66A8
sub_80B66A8: @ 80B66A8
push {r4,lr}
adds r3, r0, 0
ldrh r1, [r3, 0x2E]
movs r2, 0x2E
ldrsh r0, [r3, r2]
cmp r0, 0
ble _080B66BA
subs r0, r1, 0x1
b _080B671E
_080B66BA:
ldrh r0, [r3, 0x30]
ldrh r4, [r3, 0x24]
adds r1, r0, r4
strh r1, [r3, 0x24]
adds r0, r1, 0x7
lsls r0, 16
lsrs r0, 16
cmp r0, 0xE
bls _080B6720
ldrh r0, [r3, 0x20]
adds r0, r1
strh r0, [r3, 0x20]
movs r0, 0
strh r0, [r3, 0x24]
ldrh r2, [r3, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x8
ldr r4, _080B670C @ =0x000003ff
adds r0, r4, 0
ands r1, r0
ldr r0, _080B6710 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r3, 0x4]
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080B671C
movs r0, 0x1E
strh r0, [r3, 0x2E]
ldr r0, _080B6714 @ =sub_8074C44
str r0, [r3, 0x1C]
ldr r1, _080B6718 @ =sub_80B6728
adds r0, r3, 0
bl StoreSpriteCallbackInData6
b _080B6720
.align 2, 0
_080B670C: .4byte 0x000003ff
_080B6710: .4byte 0xfffffc00
_080B6714: .4byte sub_8074C44
_080B6718: .4byte sub_80B6728
_080B671C:
movs r0, 0x28
_080B671E:
strh r0, [r3, 0x2E]
_080B6720:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B66A8
thumb_func_start sub_80B6728
sub_80B6728: @ 80B6728
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0
bne _080B6752
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r0, 0x52
movs r1, 0x10
bl SetGpuReg
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
strh r5, [r4, 0x30]
strh r5, [r4, 0x32]
b _080B6796
_080B6752:
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0x1
bgt _080B6762
adds r0, r1, 0x1
strh r0, [r4, 0x30]
b _080B6796
_080B6762:
movs r0, 0
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
movs r1, 0x10
subs r1, r0
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x10
bne _080B6796
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080B679C @ =sub_80B67A0
str r0, [r4, 0x1C]
_080B6796:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B679C: .4byte sub_80B67A0
thumb_func_end sub_80B6728
thumb_func_start sub_80B67A0
sub_80B67A0: @ 80B67A0
push {r4,lr}
adds r4, r0, 0
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
ldr r0, _080B67CC @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080B67D0 @ =gUnknown_2022986
strh r1, [r0]
adds r0, r4, 0
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B67CC: .4byte gUnknown_2022984
_080B67D0: .4byte gUnknown_2022986
thumb_func_end sub_80B67A0
thumb_func_start sub_80B67D4
sub_80B67D4: @ 80B67D4
push {r4-r7,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
movs r1, 0xC
bl Sin
strh r0, [r5, 0x24]
ldr r0, _080B683C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B67F8
ldrh r0, [r5, 0x24]
negs r0, r0
strh r0, [r5, 0x24]
_080B67F8:
ldrh r0, [r5, 0x2E]
adds r0, 0x6
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0x2E]
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
ldrh r1, [r5, 0x30]
adds r0, r1
strh r0, [r5, 0x30]
lsls r0, 16
asrs r0, 24
negs r0, r0
strh r0, [r5, 0x26]
ldrh r0, [r5, 0x3C]
adds r0, 0x1
strh r0, [r5, 0x3C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
bne _080B6844
ldr r0, _080B6840 @ =0x0000050b
strh r0, [r5, 0x3A]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldrh r1, [r5, 0x3A]
movs r0, 0x52
bl SetGpuReg
b _080B689C
.align 2, 0
_080B683C: .4byte gBattleAnimAttacker
_080B6840: .4byte 0x0000050b
_080B6844:
cmp r0, 0x1E
ble _080B689C
ldrh r0, [r5, 0x32]
adds r0, 0x1
strh r0, [r5, 0x32]
ldrh r1, [r5, 0x3A]
lsls r0, r1, 16
asrs r0, 24
lsls r0, 16
movs r6, 0xFF
ands r6, r1
movs r1, 0x80
lsls r1, 9
adds r0, r1
lsrs r7, r0, 16
cmp r7, 0x10
bls _080B6868
movs r7, 0x10
_080B6868:
subs r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r0, 0
bge _080B6874
movs r6, 0
_080B6874:
lsls r4, r7, 8
orrs r4, r6
lsls r1, r4, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
strh r4, [r5, 0x3A]
cmp r7, 0x10
bne _080B689C
cmp r6, 0
bne _080B689C
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080B68A4 @ =sub_80B68A8
str r0, [r5, 0x1C]
_080B689C:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B68A4: .4byte sub_80B68A8
thumb_func_end sub_80B67D4
thumb_func_start sub_80B68A8
sub_80B68A8: @ 80B68A8
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
bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B68A8
thumb_func_start sub_80B68C8
sub_80B68C8: @ 80B68C8
push {r4-r6,lr}
mov r6, r8
push {r6}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080B6960 @ =gTasks
adds r4, r0
movs r6, 0
strh r6, [r4, 0x8]
movs r0, 0x10
mov r8, r0
mov r0, r8
strh r0, [r4, 0xA]
ldr r5, _080B6964 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
ldrb r0, [r5]
bl sub_807492C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
ldrb r0, [r5]
movs r1, 0x1
bl sub_8076B2C
lsls r0, 16
asrs r1, r0, 16
lsrs r0, 31
adds r1, r0
asrs r1, 1
adds r1, 0x8
strh r1, [r4, 0x1E]
strh r6, [r4, 0x16]
ldrb r0, [r5]
bl sub_8076884
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x12]
ldrb r0, [r5]
bl sub_807685C
lsls r0, 24
lsrs r0, 24
subs r0, 0x2
strh r0, [r4, 0x14]
strh r6, [r4, 0xE]
mov r0, r8
strh r0, [r4, 0x10]
movs r1, 0xFD
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
strh r6, [r4, 0x18]
ldr r0, _080B6968 @ =sub_80B696C
str r0, [r4]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B6960: .4byte gTasks
_080B6964: .4byte gBattleAnimAttacker
_080B6968: .4byte sub_80B696C
thumb_func_end sub_80B68C8
thumb_func_start sub_80B696C
sub_80B696C: @ 80B696C
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, _080B6990 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x5
bls _080B6986
b _080B6AF2
_080B6986:
lsls r0, 2
ldr r1, _080B6994 @ =_080B6998
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B6990: .4byte gTasks
_080B6994: .4byte _080B6998
.align 2, 0
_080B6998:
.4byte _080B69B0
.4byte _080B6A20
.4byte _080B6A62
.4byte _080B6A76
.4byte _080B6ACC
.4byte _080B6ADC
_080B69B0:
movs r6, 0
_080B69B2:
movs r2, 0x1A
ldrsh r1, [r4, r2]
movs r0, 0x1C
ldrsh r2, [r4, r0]
ldrb r3, [r4, 0x14]
ldr r0, _080B6A14 @ =gUnknown_83E76E0
bl CreateSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
beq _080B6A06
ldr r1, _080B6A18 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r5, r0, r1
strh r7, [r5, 0x2E]
ldr r0, _080B6A1C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
movs r1, 0
lsls r0, 24
cmp r0, 0
bne _080B69E8
movs r1, 0x1
_080B69E8:
strh r1, [r5, 0x30]
movs r0, 0x2A
muls r0, r6
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r4, 0x1E]
strh r0, [r5, 0x34]
lsls r0, r6, 1
adds r0, r6
lsls r0, 1
strh r0, [r5, 0x38]
ldrh r0, [r4, 0x16]
adds r0, 0x1
strh r0, [r4, 0x16]
_080B6A06:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x5
bls _080B69B2
b _080B6AD4
.align 2, 0
_080B6A14: .4byte gUnknown_83E76E0
_080B6A18: .4byte gSprites
_080B6A1C: .4byte gBattleAnimAttacker
_080B6A20:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B6A3E
ldrh r1, [r4, 0xE]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0xD
bgt _080B6A4C
adds r0, r1, 0x1
strh r0, [r4, 0xE]
b _080B6A4C
_080B6A3E:
ldrh r1, [r4, 0x10]
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0x4
ble _080B6A4C
subs r0, r1, 0x1
strh r0, [r4, 0x10]
_080B6A4C:
movs r1, 0xE
ldrsh r0, [r4, r1]
ldrh r2, [r4, 0xE]
ldrh r1, [r4, 0x10]
cmp r0, 0xE
bne _080B6ABC
cmp r1, 0x4
bne _080B6ABC
movs r0, 0
strh r0, [r4, 0xA]
b _080B6AB6
_080B6A62:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _080B6AF2
movs r0, 0
strh r0, [r4, 0xA]
b _080B6AD4
_080B6A76:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B6A94
ldrh r1, [r4, 0xE]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080B6AA2
subs r0, r1, 0x1
strh r0, [r4, 0xE]
b _080B6AA2
_080B6A94:
ldrh r1, [r4, 0x10]
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B6AA2
adds r0, r1, 0x1
strh r0, [r4, 0x10]
_080B6AA2:
movs r1, 0xE
ldrsh r0, [r4, r1]
ldrh r2, [r4, 0xE]
ldrh r1, [r4, 0x10]
cmp r0, 0
bne _080B6ABC
cmp r1, 0x10
bne _080B6ABC
movs r0, 0x1
strh r0, [r4, 0x18]
_080B6AB6:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080B6ABC:
lsls r1, 8
orrs r1, r2
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
b _080B6AF2
_080B6ACC:
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080B6AF2
_080B6AD4:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B6AF2
_080B6ADC:
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r7, 0
bl DestroyAnimVisualTask
_080B6AF2:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80B696C
thumb_func_start sub_80B6AF8
sub_80B6AF8: @ 80B6AF8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B6B0A
ldrh r0, [r4, 0x32]
adds r0, 0x2
b _080B6B0E
_080B6B0A:
ldrh r0, [r4, 0x32]
subs r0, 0x2
_080B6B0E:
strh r0, [r4, 0x32]
ldrh r1, [r4, 0x32]
movs r0, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r2, 0x32
ldrsh r0, [r4, r2]
movs r2, 0x34
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x32]
subs r0, 0x41
lsls r0, 16
lsrs r0, 16
cmp r0, 0x7E
bhi _080B6B50
ldr r2, _080B6B4C @ =gTasks
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0x12]
adds r1, 0x1
movs r0, 0x3
ands r1, r0
b _080B6B64
.align 2, 0
_080B6B4C: .4byte gTasks
_080B6B50:
ldr r2, _080B6BB8 @ =gTasks
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x3
ldrb r1, [r0, 0x12]
ands r1, r2
_080B6B64:
lsls r1, 2
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
movs r1, 0x38
ldrsh r0, [r4, r1]
lsls r0, 3
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x3A]
movs r2, 0x3A
ldrsh r0, [r4, r2]
movs r1, 0x7
bl Sin
strh r0, [r4, 0x26]
ldr r2, _080B6BB8 @ =gTasks
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r1, r0, r2
movs r2, 0x18
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080B6BB2
ldrh r0, [r1, 0x16]
subs r0, 0x1
strh r0, [r1, 0x16]
adds r0, r4, 0
bl DestroySprite
_080B6BB2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B6BB8: .4byte gTasks
thumb_func_end sub_80B6AF8
thumb_func_start sub_80B6BBC
sub_80B6BBC: @ 80B6BBC
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r2, _080B6BDC @ =gTasks
adds r1, r2
movs r2, 0
strh r2, [r1, 0x26]
ldr r2, _080B6BE0 @ =sub_80B6BE4
str r2, [r1]
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_080B6BDC: .4byte gTasks
_080B6BE0: .4byte sub_80B6BE4
thumb_func_end sub_80B6BBC
thumb_func_start sub_80B6BE4
sub_80B6BE4: @ 80B6BE4
push {r4-r6,lr}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080B6C18 @ =gTasks
adds r6, r1, r0
ldr r0, _080B6C1C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r4, r0, 24
movs r1, 0x26
ldrsh r0, [r6, r1]
cmp r0, 0x7
bls _080B6C0C
b _080B6F1E
_080B6C0C:
lsls r0, 2
ldr r1, _080B6C20 @ =_080B6C24
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B6C18: .4byte gTasks
_080B6C1C: .4byte gBattleAnimAttacker
_080B6C20: .4byte _080B6C24
.align 2, 0
_080B6C24:
.4byte _080B6C44
.4byte _080B6CCC
.4byte _080B6D28
.4byte _080B6D8C
.4byte _080B6E04
.4byte _080B6E6C
.4byte _080B6E82
.4byte _080B6EEC
_080B6C44:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x2
bl SetAnimBgAttribute
movs r0, 0x2
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0
strh r0, [r6, 0xA]
strh r0, [r6, 0xC]
movs r0, 0x10
strh r0, [r6, 0xE]
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x10]
ldr r3, _080B6CC8 @ =gSprites
movs r2, 0x10
ldrsh r1, [r6, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrb r0, [r0, 0x5]
lsls r0, 28
lsrs r0, 30
strh r0, [r6, 0x12]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrb r0, [r0, 0x5]
lsrs r0, 4
adds r0, 0x10
lsls r0, 4
strh r0, [r6, 0x14]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrb r2, [r0, 0x1]
movs r1, 0xD
negs r1, r1
ands r1, r2
movs r2, 0x4
orrs r1, r2
strb r1, [r0, 0x1]
movs r0, 0x10
ldrsh r1, [r6, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrb r1, [r0, 0x5]
movs r2, 0xC
orrs r1, r2
strb r1, [r0, 0x5]
movs r0, 0x80
strh r0, [r6, 0x16]
b _080B6F1E
.align 2, 0
_080B6CC8: .4byte gSprites
_080B6CCC:
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
movs r5, 0x1
ands r5, r0
cmp r5, 0
beq _080B6CDC
b _080B6F24
_080B6CDC:
ldrh r0, [r6, 0x14]
ldrb r2, [r6, 0xC]
ldr r4, _080B6D08 @ =0x000066e0
movs r1, 0x10
adds r3, r4, 0
bl BlendPalette
ldrh r0, [r6, 0x16]
ldrb r2, [r6, 0xC]
movs r1, 0x10
adds r3, r4, 0
bl BlendPalette
ldrh r1, [r6, 0xC]
movs r2, 0xC
ldrsh r0, [r6, r2]
cmp r0, 0xB
bgt _080B6D0C
adds r0, r1, 0x1
strh r0, [r6, 0xC]
b _080B6F24
.align 2, 0
_080B6D08: .4byte 0x000066e0
_080B6D0C:
strh r5, [r6, 0xA]
strh r5, [r6, 0xC]
ldr r1, _080B6D24 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
b _080B6F1E
.align 2, 0
_080B6D24: .4byte 0x00003f44
_080B6D28:
movs r0, 0x2
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x2
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
ldr r0, _080B6D7C @ =gBattle_BG2_X
movs r1, 0
strh r1, [r0]
ldr r4, _080B6D80 @ =gBattle_BG2_Y
strh r1, [r4]
movs r0, 0x18
movs r1, 0
bl SetGpuReg
ldrh r1, [r4]
movs r0, 0x1A
bl SetGpuReg
add r0, sp, 0xC
movs r1, 0x2
bl sub_80752C8
add r0, sp, 0xC
ldrb r0, [r0, 0x9]
ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
add r2, sp, 0xC
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
add r1, sp, 0xC
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
b _080B6F1E
.align 2, 0
_080B6D7C: .4byte gBattle_BG2_X
_080B6D80: .4byte gBattle_BG2_Y
_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
_080B6D8C:
add r0, sp, 0xC
movs r1, 0x2
bl sub_80752C8
movs r0, 0x80
lsls r0, 6
bl AllocZeroed
adds r1, r0, 0
ldr r5, _080B6DFC @ =gMonSpritesGfxPtr
ldr r0, [r5]
movs r4, 0xBE
lsls r4, 1
adds r0, r4
str r1, [r0]
ldr r0, _080B6E00 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
bl LZDecompressWram
add r0, sp, 0xC
ldrb r0, [r0, 0x8]
ldr r1, [r5]
adds r1, r4
ldr r1, [r1]
movs r2, 0x80
lsls r2, 1
movs r3, 0
bl sub_80730C0
add r0, sp, 0xC
ldrb r0, [r0, 0x9]
ldr r1, [r5]
adds r1, r4
ldr r1, [r1]
movs r2, 0x20
str r2, [sp]
str r2, [sp, 0x4]
movs r2, 0x11
str r2, [sp, 0x8]
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldr r0, [r5]
adds r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r5]
adds r0, r4
movs r1, 0
str r1, [r0]
b _080B6F1E
.align 2, 0
_080B6DFC: .4byte gMonSpritesGfxPtr
_080B6E00: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
_080B6E04:
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B6E14
b _080B6F24
_080B6E14:
ldrh r1, [r6, 0xC]
adds r1, 0x1
strh r1, [r6, 0xC]
ldrh r0, [r6, 0xE]
subs r0, 0x1
strh r0, [r6, 0xE]
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0xE
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080B6F24
strh r0, [r6, 0xA]
strh r0, [r6, 0xC]
movs r0, 0x10
strh r0, [r6, 0xE]
ldr r1, _080B6E68 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x2
movs r1, 0x4
movs r2, 0x2
bl SetAnimBgAttribute
b _080B6F1E
.align 2, 0
_080B6E68: .4byte 0x00003f42
_080B6E6C:
cmp r4, 0x1
bne _080B6E76
movs r1, 0x80
lsls r1, 2
b _080B6E7A
_080B6E76:
movs r1, 0x80
lsls r1, 3
_080B6E7A:
movs r0, 0
bl ClearGpuRegBits
b _080B6F1E
_080B6E82:
ldr r2, _080B6EC0 @ =gSprites
movs r0, 0x10
ldrsh r1, [r6, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
ldrh r0, [r0, 0x22]
adds r1, r0
subs r1, 0x20
lsls r1, 16
lsrs r2, r1, 16
cmp r1, 0
bge _080B6EA2
movs r2, 0
_080B6EA2:
cmp r4, 0x1
bne _080B6EC4
lsls r0, r2, 24
lsrs r0, 24
adds r1, r2, 0
adds r1, 0x40
lsls r1, 24
lsrs r1, 24
movs r2, 0
str r2, [sp]
movs r2, 0x4
str r2, [sp, 0x4]
str r4, [sp, 0x8]
b _080B6EDE
.align 2, 0
_080B6EC0: .4byte gSprites
_080B6EC4:
lsls r0, r2, 24
lsrs r0, 24
adds r1, r2, 0
adds r1, 0x40
lsls r1, 24
lsrs r1, 24
movs r2, 0
str r2, [sp]
movs r2, 0x8
str r2, [sp, 0x4]
movs r2, 0x1
str r2, [sp, 0x8]
movs r2, 0x4
_080B6EDE:
movs r3, 0x8
bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x1C]
b _080B6F1E
_080B6EEC:
ldrh r0, [r6, 0x16]
ldr r3, _080B6F08 @ =0x000077ff
movs r1, 0x10
movs r2, 0xC
bl BlendPalette
cmp r4, 0x1
bne _080B6F0C
movs r1, 0x80
lsls r1, 2
movs r0, 0
bl SetGpuRegBits
b _080B6F16
.align 2, 0
_080B6F08: .4byte 0x000077ff
_080B6F0C:
movs r1, 0x80
lsls r1, 3
movs r0, 0
bl SetGpuRegBits
_080B6F16:
ldr r0, _080B6F2C @ =sub_80B6F30
str r0, [r6]
movs r0, 0
strh r0, [r6, 0x26]
_080B6F1E:
ldrh r0, [r6, 0x26]
adds r0, 0x1
strh r0, [r6, 0x26]
_080B6F24:
add sp, 0x1C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B6F2C: .4byte sub_80B6F30
thumb_func_end sub_80B6BE4
thumb_func_start sub_80B6F30
sub_80B6F30: @ 80B6F30
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B6FB8 @ =gTasks
adds r4, r0, r1
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x1
ands r0, r1
strh r0, [r4, 0x18]
cmp r0, 0
bne _080B6F68
ldr r1, _080B6FBC @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0x12
bl __divsi3
strh r0, [r4, 0xC]
_080B6F68:
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r0, 0x1
bne _080B6F8A
ldr r1, _080B6FBC @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0x12
bl __divsi3
movs r1, 0x10
subs r1, r0
strh r1, [r4, 0xE]
_080B6F8A:
ldrh r1, [r4, 0xE]
lsls r1, 8
ldrh r0, [r4, 0xC]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0x80
bne _080B6FB2
movs r0, 0
strh r0, [r4, 0x26]
ldr r1, _080B6FC0 @ =sub_80B6FC4
str r1, [r4]
adds r0, r5, 0
bl _call_via_r1
_080B6FB2:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B6FB8: .4byte gTasks
_080B6FBC: .4byte gSineTable
_080B6FC0: .4byte sub_80B6FC4
thumb_func_end sub_80B6F30
thumb_func_start sub_80B6FC4
sub_80B6FC4: @ 80B6FC4
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
ldr r1, _080B6FE8 @ =gTasks
adds r6, r0, r1
movs r1, 0x26
ldrsh r0, [r6, r1]
cmp r0, 0x5
bls _080B6FDE
b _080B7148
_080B6FDE:
lsls r0, 2
ldr r1, _080B6FEC @ =_080B6FF0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B6FE8: .4byte gTasks
_080B6FEC: .4byte _080B6FF0
.align 2, 0
_080B6FF0:
.4byte _080B7008
.4byte _080B7024
.4byte _080B7044
.4byte _080B707C
.4byte _080B709C
.4byte _080B70E8
_080B7008:
ldr r1, _080B701C @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
ldrh r0, [r6, 0x16]
ldr r3, _080B7020 @ =0x000066e0
movs r1, 0x10
movs r2, 0xC
bl BlendPalette
b _080B7148
.align 2, 0
_080B701C: .4byte gScanlineEffect
_080B7020: .4byte 0x000066e0
_080B7024:
ldr r1, _080B7040 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
movs r0, 0x52
movs r1, 0x10
bl SetGpuReg
movs r1, 0
movs r0, 0x10
strh r0, [r6, 0xC]
strh r1, [r6, 0xE]
b _080B7148
.align 2, 0
_080B7040: .4byte 0x00003f44
_080B7044:
ldrh r1, [r6, 0xC]
subs r1, 0x1
strh r1, [r6, 0xC]
ldrh r0, [r6, 0xE]
adds r0, 0x1
strh r0, [r6, 0xE]
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0xE
ldrsh r0, [r6, r2]
cmp r0, 0xF
ble _080B714E
movs r0, 0x1
movs r1, 0x4
movs r2, 0x2
bl SetAnimBgAttribute
movs r0, 0x2
movs r1, 0x4
movs r2, 0x2
bl SetAnimBgAttribute
b _080B7148
_080B707C:
movs r0, 0x2
bl sub_8075358
movs r0, 0
movs r1, 0x90
movs r2, 0x20
bl FillPalette
movs r0, 0x2
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0xC
strh r0, [r6, 0xA]
b _080B7148
_080B709C:
ldrh r0, [r6, 0x14]
ldrb r2, [r6, 0xA]
ldr r4, _080B70C8 @ =0x000066e0
movs r1, 0x10
adds r3, r4, 0
bl BlendPalette
ldrh r0, [r6, 0x16]
ldrb r2, [r6, 0xA]
movs r1, 0x10
adds r3, r4, 0
bl BlendPalette
ldrh r0, [r6, 0xA]
movs r2, 0xA
ldrsh r1, [r6, r2]
cmp r1, 0
beq _080B70CC
subs r0, 0x1
strh r0, [r6, 0xA]
b _080B714E
.align 2, 0
_080B70C8: .4byte 0x000066e0
_080B70CC:
strh r1, [r6, 0xA]
ldr r1, _080B70E4 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
b _080B7148
.align 2, 0
_080B70E4: .4byte 0x00003f44
_080B70E8:
ldr r5, _080B7154 @ =gSprites
movs r1, 0x10
ldrsh r0, [r6, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
movs r0, 0x3
ldrb r2, [r6, 0x12]
ands r2, r0
lsls r2, 2
ldrb r4, [r1, 0x5]
movs r3, 0xD
negs r3, r3
adds r0, r3, 0
ands r0, r4
orrs r0, r2
strb r0, [r1, 0x5]
movs r2, 0x10
ldrsh r1, [r6, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r1, [r0, 0x1]
ands r3, r1
strb r3, [r0, 0x1]
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x2
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r7, 0
bl DestroyAnimVisualTask
_080B7148:
ldrh r0, [r6, 0x26]
adds r0, 0x1
strh r0, [r6, 0x26]
_080B714E:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B7154: .4byte gSprites
thumb_func_end sub_80B6FC4
thumb_func_start sub_80B7158
sub_80B7158: @ 80B7158
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x4
orrs r1, r2
strb r1, [r3]
ldr r2, _080B719C @ =gUnknown_2023D44
ldr r1, _080B71A0 @ =gBattleAnimAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r1, [r1]
strh r1, [r0, 0x38]
movs r1, 0x80
strh r1, [r0, 0x2E]
movs r1, 0xA
strh r1, [r0, 0x30]
ldr r2, _080B71A4 @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r0, 0x32]
ldrh r1, [r2, 0x2]
strh r1, [r0, 0x34]
ldr r1, _080B71A8 @ =sub_80B71B0
str r1, [r0, 0x1C]
ldr r2, _080B71AC @ =gSprites
movs r3, 0x38
ldrsh r1, [r0, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x22]
adds r1, 0x8
strh r1, [r0, 0x22]
bx lr
.align 2, 0
_080B719C: .4byte gUnknown_2023D44
_080B71A0: .4byte gBattleAnimAttacker
_080B71A4: .4byte gBattleAnimArgs
_080B71A8: .4byte sub_80B71B0
_080B71AC: .4byte gSprites
thumb_func_end sub_80B7158
thumb_func_start sub_80B71B0
sub_80B71B0: @ 80B71B0
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0x34]
movs r1, 0x34
ldrsh r3, [r5, r1]
cmp r3, 0
beq _080B7218
subs r0, 0x1
strh r0, [r5, 0x34]
movs r2, 0x2E
ldrsh r0, [r5, r2]
movs r2, 0x30
ldrsh r1, [r5, r2]
bl Sin
ldr r4, _080B7210 @ =gSprites
movs r1, 0x38
ldrsh r2, [r5, r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
strh r0, [r1, 0x24]
movs r2, 0x2E
ldrsh r0, [r5, r2]
movs r2, 0x30
ldrsh r1, [r5, r2]
bl Cos
movs r1, 0x38
ldrsh r2, [r5, r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
strh r0, [r1, 0x26]
ldrh r0, [r5, 0x32]
ldrh r2, [r5, 0x2E]
adds r1, r0, r2
strh r1, [r5, 0x2E]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xFF
ble _080B724C
ldr r2, _080B7214 @ =0xffffff00
adds r0, r1, r2
strh r0, [r5, 0x2E]
b _080B724C
.align 2, 0
_080B7210: .4byte gSprites
_080B7214: .4byte 0xffffff00
_080B7218:
ldr r2, _080B7254 @ =gSprites
movs r0, 0x38
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r3, [r0, 0x24]
movs r0, 0x38
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r3, [r0, 0x26]
movs r0, 0x38
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x22]
subs r1, 0x8
strh r1, [r0, 0x22]
ldr r0, _080B7258 @ =move_anim_8074EE0
str r0, [r5, 0x1C]
_080B724C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B7254: .4byte gSprites
_080B7258: .4byte move_anim_8074EE0
thumb_func_end sub_80B71B0
thumb_func_start sub_80B725C
sub_80B725C: @ 80B725C
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B72A4 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B72AC
ldr r2, _080B72A8 @ =gBattleAnimArgs
ldrh r0, [r5, 0x20]
ldrh r1, [r2]
subs r0, r1
strh r0, [r5, 0x20]
ldrh r0, [r2, 0x6]
negs r0, r0
strh r0, [r2, 0x6]
ldrh r0, [r2, 0x8]
negs r0, r0
strh r0, [r2, 0x8]
adds r1, r2, 0
b _080B72B6
.align 2, 0
_080B72A4: .4byte gBattleAnimAttacker
_080B72A8: .4byte gBattleAnimArgs
_080B72AC:
ldr r1, _080B72EC @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r5, 0x20]
adds r0, r2
strh r0, [r5, 0x20]
_080B72B6:
ldrh r0, [r1, 0x2]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x34]
ldrh r0, [r1, 0xA]
strh r0, [r5, 0x38]
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r1, _080B72F0 @ =move_anim_8074EE0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, _080B72F4 @ =sub_8074E70
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B72EC: .4byte gBattleAnimArgs
_080B72F0: .4byte move_anim_8074EE0
_080B72F4: .4byte sub_8074E70
thumb_func_end sub_80B725C
thumb_func_start sub_80B72F8
sub_80B72F8: @ 80B72F8
push {r4,r5,lr}
adds r5, r0, 0
bl sub_8074FCC
ldr r4, _080B7350 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
ldr r0, _080B7354 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B735C
ldr r2, _080B7358 @ =gBattleAnimArgs
ldrh r0, [r5, 0x20]
ldrh r1, [r2, 0x2]
subs r0, r1
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x22]
adds r1, r0
strh r1, [r5, 0x22]
ldrh r0, [r5, 0x32]
ldrh r1, [r2, 0x4]
subs r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r2, 0x6]
ldrh r1, [r5, 0x36]
adds r0, r1
strh r0, [r5, 0x36]
b _080B7386
.align 2, 0
_080B7350: .4byte gBattleAnimTarget
_080B7354: .4byte gBattleAnimAttacker
_080B7358: .4byte gBattleAnimArgs
_080B735C:
ldr r1, _080B73A0 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r5, 0x20]
adds r0, r2
strh r0, [r5, 0x20]
ldrh r0, [r1, 0x2]
ldrh r2, [r5, 0x22]
adds r0, r2
strh r0, [r5, 0x22]
ldrh r0, [r1, 0x4]
ldrh r2, [r5, 0x32]
adds r0, r2
strh r0, [r5, 0x32]
ldrh r0, [r1, 0x6]
ldrh r1, [r5, 0x36]
adds r0, r1
strh r0, [r5, 0x36]
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
_080B7386:
ldr r0, _080B73A0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x8]
strh r0, [r5, 0x2E]
ldr r0, _080B73A4 @ =sub_8075590
str r0, [r5, 0x1C]
ldr r1, _080B73A8 @ =move_anim_8074EE0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B73A0: .4byte gBattleAnimArgs
_080B73A4: .4byte sub_8075590
_080B73A8: .4byte move_anim_8074EE0
thumb_func_end sub_80B72F8
thumb_func_start sub_80B73AC
sub_80B73AC: @ 80B73AC
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _080B73C0 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B73C8
ldr r4, _080B73C4 @ =gBattleAnimAttacker
b _080B73CA
.align 2, 0
_080B73C0: .4byte gBattleAnimArgs
_080B73C4: .4byte gBattleAnimAttacker
_080B73C8:
ldr r4, _080B740C @ =gBattleAnimTarget
_080B73CA:
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r4, _080B7410 @ =gBattleAnimArgs
movs r0, 0x2
ldrsh r1, [r4, r0]
adds r0, r5, 0
bl sub_8074FF8
ldrh r0, [r4, 0x4]
ldrh r1, [r5, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
ldr r0, _080B7414 @ =sub_8074F6C
str r0, [r5, 0x1C]
ldr r1, _080B7418 @ =move_anim_8074EE0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B740C: .4byte gBattleAnimTarget
_080B7410: .4byte gBattleAnimArgs
_080B7414: .4byte sub_8074F6C
_080B7418: .4byte move_anim_8074EE0
thumb_func_end sub_80B73AC
thumb_func_start sub_80B741C
sub_80B741C: @ 80B741C
push {r4,lr}
adds r4, r0, 0
ldr r0, _080B7444 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B7436
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_080B7436:
adds r0, r4, 0
bl sub_80B72F8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B7444: .4byte gBattleAnimAttacker
thumb_func_end sub_80B741C
thumb_func_start sub_80B7448
sub_80B7448: @ 80B7448
push {r4-r7,lr}
adds r6, r0, 0
ldr r4, _080B749C @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
strh r5, [r6, 0x36]
movs r0, 0x1
strh r0, [r6, 0x38]
ldr r0, _080B74A0 @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r6, 0x3A]
ldr r4, _080B74A4 @ =sBattler_AI
ldrb r0, [r4]
movs r1, 0
bl sub_8076B2C
lsls r7, r0, 16
lsrs r5, r7, 16
ldrb r0, [r4]
movs r1, 0x1
bl sub_8076B2C
lsls r1, r0, 16
lsrs r0, r1, 16
cmp r5, r0
bls _080B74A8
lsrs r0, r7, 17
b _080B74AA
.align 2, 0
_080B749C: .4byte gBattleAnimAttacker
_080B74A0: .4byte gBattleAnimArgs
_080B74A4: .4byte sBattler_AI
_080B74A8:
lsrs r0, r1, 17
_080B74AA:
strh r0, [r6, 0x3C]
movs r1, 0x3A
ldrsh r0, [r6, r1]
movs r2, 0x3C
ldrsh r1, [r6, r2]
bl Cos
strh r0, [r6, 0x24]
movs r1, 0x3A
ldrsh r0, [r6, r1]
movs r2, 0x3C
ldrsh r1, [r6, r2]
bl Sin
strh r0, [r6, 0x26]
ldr r0, _080B74D4 @ =sub_80B74D8
str r0, [r6, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B74D4: .4byte sub_80B74D8
thumb_func_end sub_80B7448
thumb_func_start sub_80B74D8
sub_80B74D8: @ 80B74D8
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0
beq _080B74EA
cmp r5, 0x1
beq _080B7556
b _080B75DA
_080B74EA:
ldrh r0, [r4, 0x3A]
ldrh r1, [r4, 0x38]
subs r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x3A]
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r2, 0x3C
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r2, 0x3C
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080B753C
strh r5, [r4, 0x36]
ldrh r1, [r4, 0x38]
movs r2, 0x38
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B753C
adds r0, r1, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080B753C
movs r0, 0x10
strh r0, [r4, 0x38]
_080B753C:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
ble _080B75DA
movs r0, 0
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080B75DA
_080B7556:
ldrh r0, [r4, 0x3A]
ldrh r1, [r4, 0x38]
subs r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x3A]
ldrh r1, [r4, 0x3C]
movs r2, 0x3C
ldrsh r0, [r4, r2]
cmp r0, 0x95
bgt _080B757E
adds r0, r1, 0
adds r0, 0x8
strh r0, [r4, 0x3C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x95
ble _080B757E
movs r0, 0x96
strh r0, [r4, 0x3C]
_080B757E:
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r2, 0x3C
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x3A
ldrsh r0, [r4, r1]
movs r2, 0x3C
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080B75C6
movs r0, 0
strh r0, [r4, 0x36]
ldrh r1, [r4, 0x38]
movs r2, 0x38
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080B75C6
adds r0, r1, 0x1
strh r0, [r4, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0xF
ble _080B75C6
movs r0, 0x10
strh r0, [r4, 0x38]
_080B75C6:
ldrh r0, [r4, 0x34]
adds r0, 0x1
strh r0, [r4, 0x34]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
ble _080B75DA
adds r0, r4, 0
bl DestroyAnimSprite
_080B75DA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B74D8
thumb_func_start sub_80B75E0
sub_80B75E0: @ 80B75E0
push {r4-r6,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080B760C @ =gTasks
adds r4, r1, r0
ldr r0, _080B7610 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B761C
ldr r0, _080B7614 @ =0x04000014
str r0, [sp]
ldr r0, _080B7618 @ =gBattle_BG1_X
b _080B7622
.align 2, 0
_080B760C: .4byte gTasks
_080B7610: .4byte gBattleAnimAttacker
_080B7614: .4byte 0x04000014
_080B7618: .4byte gBattle_BG1_X
_080B761C:
ldr r0, _080B7698 @ =0x04000018
str r0, [sp]
ldr r0, _080B769C @ =gBattle_BG2_X
_080B7622:
ldrh r0, [r0]
strh r0, [r4, 0xC]
ldr r0, _080B76A0 @ =0xa2600001
str r0, [sp, 0x4]
mov r1, sp
movs r5, 0
movs r0, 0x1
strb r0, [r1, 0x8]
mov r0, sp
strb r5, [r0, 0x9]
ldr r0, _080B76A4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_807492C
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
subs r1, 0x20
strh r1, [r4, 0xE]
adds r0, 0x20
strh r0, [r4, 0x10]
cmp r1, 0
bge _080B7652
strh r5, [r4, 0xE]
_080B7652:
ldrh r3, [r4, 0xE]
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r3, r0
bgt _080B7680
ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_080B7664:
lsls r1, r3, 1
adds r2, r1, r5
ldrh r0, [r4, 0xC]
strh r0, [r2]
adds r1, r6
ldrh r0, [r4, 0xC]
strh r0, [r1]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r3, r0
ble _080B7664
_080B7680:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
bl ScanlineEffect_SetParams
ldr r0, _080B76AC @ =sub_80B76B0
str r0, [r4]
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B7698: .4byte 0x04000018
_080B769C: .4byte gBattle_BG2_X
_080B76A0: .4byte 0xa2600001
_080B76A4: .4byte gBattleAnimAttacker
_080B76A8: .4byte gScanlineEffectRegBuffers
_080B76AC: .4byte sub_80B76B0
thumb_func_end sub_80B75E0
thumb_func_start sub_80B76B0
sub_80B76B0: @ 80B76B0
push {lr}
lsls r0, 24
lsrs r3, r0, 24
lsls r0, r3, 2
adds r0, r3
lsls r0, 3
ldr r1, _080B76D4 @ =gTasks
adds r2, r0, r1
movs r1, 0x8
ldrsh r0, [r2, r1]
cmp r0, 0x4
bhi _080B7766
lsls r0, 2
ldr r1, _080B76D8 @ =_080B76DC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B76D4: .4byte gTasks
_080B76D8: .4byte _080B76DC
.align 2, 0
_080B76DC:
.4byte _080B76F0
.4byte _080B7712
.4byte _080B7722
.4byte _080B774E
.4byte _080B7760
_080B76F0:
ldrh r0, [r2, 0x16]
adds r0, 0x1
strh r0, [r2, 0x16]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B7746
movs r0, 0
strh r0, [r2, 0x16]
ldrh r0, [r2, 0x14]
adds r0, 0x1
strh r0, [r2, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080B7746
b _080B7740
_080B7712:
ldrh r0, [r2, 0xA]
adds r0, 0x1
strh r0, [r2, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
ble _080B7746
b _080B7740
_080B7722:
ldrh r0, [r2, 0x16]
adds r0, 0x1
strh r0, [r2, 0x16]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B7746
movs r0, 0
strh r0, [r2, 0x16]
ldrh r0, [r2, 0x14]
subs r0, 0x1
strh r0, [r2, 0x14]
lsls r0, 16
cmp r0, 0
bne _080B7746
_080B7740:
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
_080B7746:
adds r0, r2, 0
bl sub_80B776C
b _080B7766
_080B774E:
ldr r1, _080B775C @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
b _080B7766
.align 2, 0
_080B775C: .4byte gScanlineEffect
_080B7760:
adds r0, r3, 0
bl DestroyAnimVisualTask
_080B7766:
pop {r0}
bx r0
thumb_func_end sub_80B76B0
thumb_func_start sub_80B776C
sub_80B776C: @ 80B776C
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
ldrh r3, [r5, 0x12]
ldrh r4, [r5, 0xE]
movs r1, 0x10
ldrsh r0, [r5, r1]
cmp r4, r0
bgt _080B77C2
ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
mov r12, r7
ldr r0, _080B77DC @ =gSineTable
mov r8, r0
ldr r6, _080B77E0 @ =gScanlineEffect
_080B778A:
lsls r2, r4, 1
ldrb r1, [r6, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
add r2, r12
lsls r0, r3, 1
add r0, r8
movs r7, 0
ldrsh r1, [r0, r7]
movs r7, 0x14
ldrsh r0, [r5, r7]
muls r0, r1
asrs r0, 7
ldrh r1, [r5, 0xC]
adds r0, r1
strh r0, [r2]
adds r3, 0x8
movs r0, 0xFF
ands r3, r0
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
movs r7, 0x10
ldrsh r0, [r5, r7]
cmp r4, r0
ble _080B778A
_080B77C2:
ldrh r0, [r5, 0x12]
adds r0, 0x9
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0x12]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B77D8: .4byte gScanlineEffectRegBuffers
_080B77DC: .4byte gSineTable
_080B77E0: .4byte gScanlineEffect
thumb_func_end sub_80B776C
thumb_func_start sub_80B77E4
sub_80B77E4: @ 80B77E4
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r0, 0
ldr r5, _080B7884 @ =gBattleAnimArgs
movs r0, 0x4
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
movs r1, 0x5
bl __divsi3
adds r6, r0, 0
ldr r1, _080B7888 @ =gBattleAnimAttacker
mov r8, r1
ldrb r0, [r1]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
mov r2, r8
ldrb r0, [r2]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldrh r3, [r5, 0x8]
adds r0, r3
strh r0, [r4, 0x22]
movs r1, 0x2
ldrsh r0, [r5, r1]
movs r2, 0x4
ldrsh r1, [r5, r2]
bl Cos
strh r0, [r4, 0x30]
movs r3, 0x2
ldrsh r0, [r5, r3]
lsls r6, 16
asrs r6, 16
adds r1, r6, 0
bl Sin
strh r0, [r4, 0x32]
ldrh r1, [r4, 0x30]
ldrh r2, [r5]
adds r3, r2, 0
muls r3, r1
adds r1, r3, 0
ldrh r3, [r4, 0x20]
adds r1, r3
strh r1, [r4, 0x20]
adds r1, r2, 0
muls r1, r0
adds r0, r1, 0
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x34]
ldr r0, _080B788C @ =sub_80B7894
str r0, [r4, 0x1C]
adds r4, 0x2E
ldr r2, _080B7890 @ =gUnknown_20399A4
movs r1, 0x6
_080B786C:
ldrh r0, [r4]
strh r0, [r2]
adds r4, 0x2
adds r2, 0x2
subs r1, 0x1
cmp r1, 0
bge _080B786C
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B7884: .4byte gBattleAnimArgs
_080B7888: .4byte gBattleAnimAttacker
_080B788C: .4byte sub_80B7894
_080B7890: .4byte gUnknown_20399A4
thumb_func_end sub_80B77E4
thumb_func_start sub_80B7894
sub_80B7894: @ 80B7894
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x36]
adds r0, r1
strh r0, [r4, 0x36]
ldrh r0, [r4, 0x32]
ldrh r2, [r4, 0x38]
adds r0, r2
strh r0, [r4, 0x38]
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r1, 0xA
bl __divsi3
strh r0, [r4, 0x24]
movs r2, 0x38
ldrsh r0, [r4, r2]
movs r1, 0xA
bl __divsi3
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
movs r2, 0x34
ldrsh r1, [r4, r2]
cmp r0, r1
ble _080B78D8
adds r0, r4, 0
bl DestroyAnimSprite
_080B78D8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B7894
thumb_func_start sub_80B78E0
sub_80B78E0: @ 80B78E0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080B791C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
ldr r1, _080B7920 @ =gBattleAnimArgs
ldrh r1, [r1]
strh r1, [r0, 0x8]
ldr r1, _080B7924 @ =gBattleAnimAttacker
ldrb r4, [r1]
movs r1, 0x10
strh r1, [r0, 0xA]
movs r0, 0x52
bl SetGpuReg
adds r0, r4, 0
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B792C
ldr r1, _080B7928 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
b _080B7934
.align 2, 0
_080B791C: .4byte gTasks
_080B7920: .4byte gBattleAnimArgs
_080B7924: .4byte gBattleAnimAttacker
_080B7928: .4byte 0x00003f42
_080B792C:
ldr r1, _080B7948 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
_080B7934:
ldr r0, _080B794C @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _080B7950 @ =sub_80B7954
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B7948: .4byte 0x00003f44
_080B794C: .4byte gTasks
_080B7950: .4byte sub_80B7954
thumb_func_end sub_80B78E0
thumb_func_start sub_80B7954
sub_80B7954: @ 80B7954
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080B79C0 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r6, r0, r1
ldrh r0, [r6, 0xA]
lsrs r4, r0, 8
lsls r0, 24
lsrs r1, r0, 24
movs r2, 0xC
ldrsh r0, [r6, r2]
ldrb r2, [r6, 0x8]
cmp r0, r2
bne _080B79D0
adds r4, 0x1
lsls r4, 24
lsrs r4, 24
subs r0, r1, 0x1
lsls r0, 24
lsrs r0, 24
lsls r1, r4, 8
orrs r1, r0
movs r5, 0
strh r1, [r6, 0xA]
ldrh r1, [r6, 0xA]
movs r0, 0x52
bl SetGpuReg
strh r5, [r6, 0xC]
cmp r4, 0x10
bne _080B79D6
ldr r2, _080B79C4 @ =gSprites
ldr r1, _080B79C8 @ =gUnknown_2023D44
ldr r0, _080B79CC @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
adds r0, r7, 0
bl DestroyAnimVisualTask
b _080B79D6
.align 2, 0
_080B79C0: .4byte gTasks
_080B79C4: .4byte gSprites
_080B79C8: .4byte gUnknown_2023D44
_080B79CC: .4byte gBattleAnimAttacker
_080B79D0:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
_080B79D6:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80B7954
thumb_func_start sub_80B79DC
sub_80B79DC: @ 80B79DC
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080B7A08 @ =gTasks
lsls r2, r0, 2
adds r2, r0
lsls r2, 3
adds r2, r1
ldr r0, _080B7A0C @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r2, 0x8]
movs r1, 0x80
lsls r1, 5
strh r1, [r2, 0xA]
ldr r0, _080B7A10 @ =sub_80B7A14
str r0, [r2]
movs r0, 0x52
bl SetGpuReg
pop {r0}
bx r0
.align 2, 0
_080B7A08: .4byte gTasks
_080B7A0C: .4byte gBattleAnimArgs
_080B7A10: .4byte sub_80B7A14
thumb_func_end sub_80B79DC
thumb_func_start sub_80B7A14
sub_80B7A14: @ 80B7A14
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080B7A70 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r6, r0, r1
ldrh r0, [r6, 0xA]
lsrs r4, r0, 8
lsls r0, 24
lsrs r1, r0, 24
movs r2, 0xC
ldrsh r0, [r6, r2]
ldrb r2, [r6, 0x8]
cmp r0, r2
bne _080B7A74
subs r4, 0x1
lsls r4, 24
lsrs r4, 24
adds r0, r1, 0x1
lsls r0, 24
lsrs r0, 24
lsls r1, r4, 8
orrs r1, r0
movs r5, 0
strh r1, [r6, 0xA]
ldrh r1, [r6, 0xA]
movs r0, 0x52
bl SetGpuReg
strh r5, [r6, 0xC]
cmp r4, 0
bne _080B7A7A
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r7, 0
bl DestroyAnimVisualTask
b _080B7A7A
.align 2, 0
_080B7A70: .4byte gTasks
_080B7A74:
ldrh r0, [r6, 0xC]
adds r0, 0x1
strh r0, [r6, 0xC]
_080B7A7A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80B7A14
thumb_func_start sub_80B7A80
sub_80B7A80: @ 80B7A80
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
ldr r0, _080B7AAC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B7AB4
ldr r1, _080B7AB0 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
b _080B7ABC
.align 2, 0
_080B7AAC: .4byte gBattleAnimAttacker
_080B7AB0: .4byte 0x00003f42
_080B7AB4:
ldr r1, _080B7AC8 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
_080B7ABC:
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B7AC8: .4byte 0x00003f44
thumb_func_end sub_80B7A80
thumb_func_start sub_80B7ACC
sub_80B7ACC: @ 80B7ACC
push {r4-r6,lr}
adds r4, r0, 0
ldr r6, _080B7B38 @ =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
ldr r5, _080B7B3C @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r6]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
movs r0, 0x7E
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl sub_80754B8
ldrh r0, [r4, 0x30]
negs r0, r0
strh r0, [r4, 0x34]
ldrh r0, [r4, 0x32]
negs r0, r0
strh r0, [r4, 0x36]
ldr r0, _080B7B40 @ =0x0000ffd8
strh r0, [r4, 0x3A]
ldr r1, _080B7B44 @ =sub_80B7B48
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B7B38: .4byte gBattleAnimTarget
_080B7B3C: .4byte gBattleAnimAttacker
_080B7B40: .4byte 0x0000ffd8
_080B7B44: .4byte sub_80B7B48
thumb_func_end sub_80B7ACC
thumb_func_start sub_80B7B48
sub_80B7B48: @ 80B7B48
push {r4-r6,lr}
adds r4, r0, 0
ldrh r5, [r4, 0x30]
ldrh r0, [r4, 0x34]
adds r2, r5, r0
strh r2, [r4, 0x34]
ldrh r3, [r4, 0x32]
ldrh r6, [r4, 0x36]
adds r1, r3, r6
strh r1, [r4, 0x36]
lsls r0, r2, 16
asrs r0, 24
strh r0, [r4, 0x24]
lsls r0, r1, 16
asrs r0, 24
strh r0, [r4, 0x26]
movs r6, 0x3C
ldrsh r0, [r4, r6]
cmp r0, 0
bne _080B7B8A
adds r0, r2, r5
strh r0, [r4, 0x34]
adds r1, r3
strh r1, [r4, 0x36]
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r4, 0x26]
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
_080B7B8A:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r2, 0x3A
ldrsh r1, [r4, r2]
bl Sin
ldrh r6, [r4, 0x26]
adds r0, r6
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x38]
adds r0, 0x3
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
cmp r0, 0x7F
ble _080B7BBA
movs r0, 0
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x3A]
adds r0, 0x14
strh r0, [r4, 0x3A]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
_080B7BBA:
ldrh r0, [r4, 0x2E]
subs r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bne _080B7BCC
adds r0, r4, 0
bl DestroyAnimSprite
_080B7BCC:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B7B48
thumb_func_start sub_80B7BD4
sub_80B7BD4: @ 80B7BD4
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B7C08 @ =gBattleAnimArgs
ldrh r0, [r5]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrb r1, [r5, 0x4]
adds r0, r4, 0
bl StartSpriteAffineAnim
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x30]
ldrh r0, [r5, 0xA]
strh r0, [r4, 0x32]
ldr r0, _080B7C0C @ =sub_80B7C10
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B7C08: .4byte gBattleAnimArgs
_080B7C0C: .4byte sub_80B7C10
thumb_func_end sub_80B7BD4
thumb_func_start sub_80B7C10
sub_80B7C10: @ 80B7C10
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x36]
adds r0, r1
strh r0, [r2, 0x36]
ldrh r1, [r2, 0x30]
ldrh r3, [r2, 0x38]
adds r1, r3
strh r1, [r2, 0x38]
lsls r0, 16
asrs r0, 24
strh r0, [r2, 0x24]
lsls r1, 16
asrs r1, 24
strh r1, [r2, 0x26]
ldrh r0, [r2, 0x34]
adds r0, 0x1
strh r0, [r2, 0x34]
lsls r0, 16
asrs r0, 16
movs r3, 0x32
ldrsh r1, [r2, r3]
cmp r0, r1
bne _080B7C46
ldr r0, _080B7C4C @ =sub_80B7C50
str r0, [r2, 0x1C]
_080B7C46:
pop {r0}
bx r0
.align 2, 0
_080B7C4C: .4byte sub_80B7C50
thumb_func_end sub_80B7C10
thumb_func_start sub_80B7C50
sub_80B7C50: @ 80B7C50
push {lr}
adds r3, r0, 0
ldrh r1, [r3, 0x36]
ldrh r0, [r3, 0x2E]
subs r1, r0
strh r1, [r3, 0x36]
ldrh r0, [r3, 0x38]
ldrh r2, [r3, 0x30]
subs r0, r2
strh r0, [r3, 0x38]
lsls r1, 16
asrs r1, 24
strh r1, [r3, 0x24]
lsls r0, 16
asrs r0, 24
strh r0, [r3, 0x26]
ldrh r0, [r3, 0x34]
subs r0, 0x1
strh r0, [r3, 0x34]
lsls r0, 16
cmp r0, 0
bne _080B7C82
adds r0, r3, 0
bl move_anim_8074EE0
_080B7C82:
pop {r0}
bx r0
thumb_func_end sub_80B7C50
thumb_func_start sub_80B7C88
sub_80B7C88: @ 80B7C88
push {r4-r7,lr}
adds r4, r0, 0
ldr r0, _080B7C9C @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r3, r0, 0
cmp r1, 0
bne _080B7CA4
ldr r0, _080B7CA0 @ =gBattleAnimAttacker
b _080B7CA6
.align 2, 0
_080B7C9C: .4byte gBattleAnimArgs
_080B7CA0: .4byte gBattleAnimAttacker
_080B7CA4:
ldr r0, _080B7CD4 @ =gBattleAnimTarget
_080B7CA6:
ldrb r5, [r0]
movs r6, 0x14
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x4
ldr r7, _080B7CD8 @ =0x000003ff
adds r0, r7, 0
ands r1, r0
ldr r0, _080B7CDC @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
movs r1, 0x2
ldrsh r0, [r3, r1]
cmp r0, 0x1
beq _080B7D04
cmp r0, 0x1
bgt _080B7CE0
cmp r0, 0
beq _080B7CEA
b _080B7D58
.align 2, 0
_080B7CD4: .4byte gBattleAnimTarget
_080B7CD8: .4byte 0x000003ff
_080B7CDC: .4byte 0xfffffc00
_080B7CE0:
cmp r0, 0x2
beq _080B7D1E
cmp r0, 0x3
beq _080B7D36
b _080B7D58
_080B7CEA:
adds r0, r5, 0
movs r1, 0x5
bl sub_8076B2C
subs r0, 0x8
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
bl sub_8076B2C
adds r0, 0x8
strh r0, [r4, 0x22]
b _080B7D58
_080B7D04:
adds r0, r5, 0
movs r1, 0x5
bl sub_8076B2C
subs r0, 0xE
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
bl sub_8076B2C
adds r0, 0x10
strh r0, [r4, 0x22]
b _080B7D58
_080B7D1E:
adds r0, r5, 0
movs r1, 0x4
bl sub_8076B2C
adds r0, 0x8
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
bl sub_8076B2C
adds r0, 0x8
b _080B7D4C
_080B7D36:
adds r0, r5, 0
movs r1, 0x4
bl sub_8076B2C
adds r0, 0xE
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
bl sub_8076B2C
adds r0, 0x10
_080B7D4C:
strh r0, [r4, 0x22]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
movs r6, 0xEC
_080B7D58:
movs r0, 0x20
strh r0, [r4, 0x2E]
lsls r0, r6, 24
asrs r0, 24
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
adds r0, 0xC
strh r0, [r4, 0x36]
ldr r0, _080B7D80 @ =0x0000fff4
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_8075068
ldr r0, _080B7D84 @ =sub_80B7D88
str r0, [r4, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B7D80: .4byte 0x0000fff4
_080B7D84: .4byte sub_80B7D88
thumb_func_end sub_80B7C88
thumb_func_start sub_80B7D88
sub_80B7D88: @ 80B7D88
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080B7D9C
adds r0, r4, 0
bl move_anim_8074EE0
_080B7D9C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B7D88
thumb_func_start sub_80B7DA4
sub_80B7DA4: @ 80B7DA4
push {r4-r7,lr}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080B7E08 @ =gTasks
adds r5, r1, r0
ldr r4, _080B7E0C @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
movs r6, 0
strh r0, [r5, 0x16]
ldrb r0, [r4]
movs r1, 0x2
bl sub_8076B2C
subs r0, 0x7
strh r0, [r5, 0x14]
ldrh r1, [r5, 0x16]
strh r1, [r5, 0x12]
strh r0, [r5, 0x10]
subs r1, r0
lsls r1, 8
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
subs r1, 0x20
strh r1, [r5, 0x24]
adds r0, 0x20
strh r0, [r5, 0x26]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B7E14
ldr r0, _080B7E10 @ =0x0000fff4
b _080B7E16
.align 2, 0
_080B7E08: .4byte gTasks
_080B7E0C: .4byte gBattleAnimAttacker
_080B7E10: .4byte 0x0000fff4
_080B7E14:
ldr r0, _080B7E60 @ =0x0000ffc0
_080B7E16:
strh r0, [r5, 0x18]
ldr r0, _080B7E64 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
cmp r0, 0x1
bne _080B7E78
add r4, sp, 0xC
adds r0, r4, 0
bl sub_80752A0
ldr r0, _080B7E68 @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, _080B7E6C @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldrb r1, [r4, 0x8]
lsls r1, 4
movs r0, 0
movs r2, 0x20
bl FillPalette
ldr r0, _080B7E70 @ =0x04000016
str r0, [sp]
movs r7, 0x2
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B7EA8
ldr r1, _080B7E74 @ =gBattle_BG2_X
b _080B7EA2
.align 2, 0
_080B7E60: .4byte 0x0000ffc0
_080B7E64: .4byte gBattleAnimAttacker
_080B7E68: .4byte gBattle_BG1_Y
_080B7E6C: .4byte 0x00003f42
_080B7E70: .4byte 0x04000016
_080B7E74: .4byte gBattle_BG2_X
_080B7E78:
ldr r0, _080B7F30 @ =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, _080B7F34 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
movs r0, 0
movs r1, 0x90
movs r2, 0x20
bl FillPalette
ldr r0, _080B7F38 @ =0x0400001a
str r0, [sp]
movs r7, 0x4
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B7EA8
ldr r1, _080B7F3C @ =gBattle_BG1_X
_080B7EA2:
ldrh r0, [r1]
adds r0, 0xF0
strh r0, [r1]
_080B7EA8:
ldr r0, _080B7F40 @ =0xa2600001
str r0, [sp, 0x4]
mov r2, sp
movs r1, 0
movs r0, 0x1
strb r0, [r2, 0x8]
mov r0, sp
strb r1, [r0, 0x9]
strh r1, [r5, 0x1E]
movs r0, 0x10
strh r0, [r5, 0x20]
strh r1, [r5, 0x8]
strh r1, [r5, 0xA]
strh r1, [r5, 0xC]
movs r0, 0x3
bl sub_80B856C
movs r3, 0
ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r4, r0
_080B7ED4:
lsls r1, r3, 1
adds r2, r1, r4
ldrh r0, [r5, 0x1C]
strh r0, [r2]
adds r1, r6
ldrh r0, [r5, 0x1C]
strh r0, [r1]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0x6F
bls _080B7ED4
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
bl ScanlineEffect_SetParams
movs r0, 0x3F
eors r7, r0
movs r1, 0xFC
lsls r1, 6
adds r0, r1, 0
orrs r7, r0
movs r0, 0x4A
adds r1, r7, 0
bl SetGpuReg
ldr r1, _080B7F48 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r2, _080B7F4C @ =gUnknown_2022984
ldrh r0, [r5, 0x24]
lsls r0, 8
ldrh r1, [r5, 0x26]
orrs r0, r1
strh r0, [r2]
ldr r1, _080B7F50 @ =gUnknown_2022986
movs r0, 0xA0
strh r0, [r1]
ldr r0, _080B7F54 @ =sub_80B7F58
str r0, [r5]
add sp, 0x1C
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B7F30: .4byte gBattle_BG2_Y
_080B7F34: .4byte 0x00003f44
_080B7F38: .4byte 0x0400001a
_080B7F3C: .4byte gBattle_BG1_X
_080B7F40: .4byte 0xa2600001
_080B7F44: .4byte gScanlineEffectRegBuffers
_080B7F48: .4byte 0x00003f3f
_080B7F4C: .4byte gUnknown_2022984
_080B7F50: .4byte gUnknown_2022986
_080B7F54: .4byte sub_80B7F58
thumb_func_end sub_80B7DA4
thumb_func_start sub_80B7F58
sub_80B7F58: @ 80B7F58
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B7F7C @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080B7F72
b _080B806A
_080B7F72:
lsls r0, 2
ldr r1, _080B7F80 @ =_080B7F84
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B7F7C: .4byte gTasks
_080B7F80: .4byte _080B7F84
.align 2, 0
_080B7F84:
.4byte _080B7F98
.4byte _080B7FFA
.4byte _080B8014
.4byte _080B8050
.4byte _080B8064
_080B7F98:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B806A
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B7FC8
ldrh r1, [r4, 0x1E]
movs r2, 0x1E
ldrsh r0, [r4, r2]
cmp r0, 0xC
beq _080B7FD6
adds r0, r1, 0x1
strh r0, [r4, 0x1E]
b _080B7FD6
_080B7FC8:
ldrh r1, [r4, 0x20]
movs r2, 0x20
ldrsh r0, [r4, r2]
cmp r0, 0x8
beq _080B7FD6
subs r0, r1, 0x1
strh r0, [r4, 0x20]
_080B7FD6:
ldrh r1, [r4, 0x20]
lsls r1, 8
ldrh r0, [r4, 0x1E]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x1E
ldrsh r0, [r4, r1]
cmp r0, 0xC
bne _080B806A
movs r2, 0x20
ldrsh r0, [r4, r2]
cmp r0, 0x8
bne _080B806A
b _080B8056
_080B7FFA:
ldrh r0, [r4, 0x10]
subs r0, 0x8
strh r0, [r4, 0x10]
adds r0, r4, 0
bl sub_80B843C
movs r0, 0x10
ldrsh r1, [r4, r0]
movs r2, 0x18
ldrsh r0, [r4, r2]
cmp r1, r0
bge _080B806A
b _080B8056
_080B8014:
ldrh r0, [r4, 0x10]
subs r0, 0x8
strh r0, [r4, 0x10]
adds r0, r4, 0
bl sub_80B843C
ldrh r1, [r4, 0x24]
adds r1, 0x4
strh r1, [r4, 0x24]
ldrh r0, [r4, 0x26]
subs r2, r0, 0x4
strh r2, [r4, 0x26]
lsls r1, 16
lsls r0, r2, 16
cmp r1, r0
blt _080B8036
strh r2, [r4, 0x24]
_080B8036:
ldr r3, _080B804C @ =gUnknown_2022984
ldrh r2, [r4, 0x24]
lsls r0, r2, 8
ldrh r1, [r4, 0x26]
orrs r0, r1
strh r0, [r3]
lsls r2, 16
lsls r1, 16
cmp r2, r1
bne _080B806A
b _080B8056
.align 2, 0
_080B804C: .4byte gUnknown_2022984
_080B8050:
ldr r1, _080B8060 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B8056:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B806A
.align 2, 0
_080B8060: .4byte gScanlineEffect
_080B8064:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B806A:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B7F58
thumb_func_start sub_80B8070
sub_80B8070: @ 80B8070
push {r4-r7,lr}
sub sp, 0x1C
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _080B8098 @ =gTasks
adds r5, r0, r1
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0x4
bls _080B808C
b _080B829E
_080B808C:
lsls r0, 2
ldr r1, _080B809C @ =_080B80A0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B8098: .4byte gTasks
_080B809C: .4byte _080B80A0
.align 2, 0
_080B80A0:
.4byte _080B80B4
.4byte _080B8138
.4byte _080B817C
.4byte _080B81E8
.4byte _080B8250
_080B80B4:
bl sub_8073788
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B80F0
ldr r0, _080B80E4 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080B80E8 @ =gUnknown_2022986
strh r1, [r0]
ldr r4, _080B80EC @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
adds r0, r6, 0
bl DestroyAnimVisualTask
b _080B829E
.align 2, 0
_080B80E4: .4byte gUnknown_2022984
_080B80E8: .4byte gUnknown_2022986
_080B80EC: .4byte 0x00003f3f
_080B80F0:
ldr r0, _080B8110 @ =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
cmp r0, 0x1
bne _080B811C
ldr r1, _080B8114 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r1, _080B8118 @ =gBattle_BG2_X
b _080B8126
.align 2, 0
_080B8110: .4byte gBattleAnimTarget
_080B8114: .4byte 0x00003f42
_080B8118: .4byte gBattle_BG2_X
_080B811C:
ldr r1, _080B8130 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
ldr r1, _080B8134 @ =gBattle_BG1_X
_080B8126:
ldrh r0, [r1]
adds r0, 0xF0
strh r0, [r1]
b _080B823C
.align 2, 0
_080B8130: .4byte 0x00003f44
_080B8134: .4byte gBattle_BG1_X
_080B8138:
movs r1, 0xE
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080B8160
mov r0, sp
bl sub_80752A0
ldr r0, _080B815C @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
mov r0, sp
ldrb r1, [r0, 0x8]
lsls r1, 4
movs r0, 0
movs r2, 0x20
bl FillPalette
b _080B8170
.align 2, 0
_080B815C: .4byte gBattle_BG1_Y
_080B8160:
ldr r0, _080B8178 @ =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
movs r0, 0
movs r1, 0x90
movs r2, 0x20
bl FillPalette
_080B8170:
movs r0, 0x3
bl sub_80B856C
b _080B823C
.align 2, 0
_080B8178: .4byte gBattle_BG2_Y
_080B817C:
ldr r4, _080B81C8 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x1
bl sub_8074480
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
movs r6, 0
strh r0, [r5, 0x16]
ldrb r0, [r4]
movs r1, 0x2
bl sub_8076B2C
subs r0, 0x7
strh r0, [r5, 0x14]
ldrh r1, [r5, 0x16]
subs r1, r0
lsls r1, 8
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
subs r1, r0, 0x4
strh r1, [r5, 0x24]
adds r0, 0x4
strh r0, [r5, 0x26]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080B81D0
ldr r0, _080B81CC @ =0x0000fff4
b _080B81D2
.align 2, 0
_080B81C8: .4byte gBattleAnimTarget
_080B81CC: .4byte 0x0000fff4
_080B81D0:
ldr r0, _080B81E4 @ =0x0000ffc0
_080B81D2:
strh r0, [r5, 0x18]
ldrh r0, [r5, 0x18]
strh r0, [r5, 0x10]
strh r0, [r5, 0x12]
movs r0, 0xC
strh r0, [r5, 0x1E]
movs r0, 0x8
strh r0, [r5, 0x20]
b _080B823C
.align 2, 0
_080B81E4: .4byte 0x0000ffc0
_080B81E8:
movs r1, 0xE
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080B81F8
ldr r0, _080B81F4 @ =0x04000016
b _080B81FA
.align 2, 0
_080B81F4: .4byte 0x04000016
_080B81F8:
ldr r0, _080B8244 @ =0x0400001a
_080B81FA:
str r0, [sp, 0x10]
movs r3, 0
add r4, sp, 0x10
ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r7, r6, r0
_080B8208:
lsls r1, r3, 1
adds r2, r1, r6
ldrh r0, [r5, 0x1C]
adds r0, 0x9F
subs r0, r3
strh r0, [r2]
adds r1, r7
ldrh r0, [r5, 0x1C]
adds r0, 0x9F
subs r0, r3
strh r0, [r1]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0x6F
bls _080B8208
ldr r1, _080B824C @ =0xa2600001
str r1, [r4, 0x4]
movs r2, 0
movs r0, 0x1
strb r0, [r4, 0x8]
strb r2, [r4, 0x9]
ldr r0, [sp, 0x10]
ldr r2, [r4, 0x8]
bl ScanlineEffect_SetParams
_080B823C:
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
b _080B829E
.align 2, 0
_080B8244: .4byte 0x0400001a
_080B8248: .4byte gScanlineEffectRegBuffers
_080B824C: .4byte 0xa2600001
_080B8250:
movs r1, 0xE
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080B8268
ldr r1, _080B8264 @ =0x00003f3d
movs r0, 0x4A
bl SetGpuReg
b _080B8270
.align 2, 0
_080B8264: .4byte 0x00003f3d
_080B8268:
ldr r1, _080B82A8 @ =0x00003f3b
movs r0, 0x4A
bl SetGpuReg
_080B8270:
ldr r1, _080B82AC @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r2, _080B82B0 @ =gUnknown_2022984
ldrh r0, [r5, 0x24]
lsls r0, 8
ldrh r1, [r5, 0x26]
orrs r0, r1
strh r0, [r2]
ldr r1, _080B82B4 @ =gUnknown_2022986
movs r0, 0xA0
strh r0, [r1]
movs r0, 0
strh r0, [r5, 0x8]
strh r0, [r5, 0xA]
strh r0, [r5, 0xC]
ldr r1, _080B82B8 @ =0x0000080c
movs r0, 0x52
bl SetGpuReg
ldr r0, _080B82BC @ =sub_80B82C0
str r0, [r5]
_080B829E:
add sp, 0x1C
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B82A8: .4byte 0x00003f3b
_080B82AC: .4byte 0x00003f3f
_080B82B0: .4byte gUnknown_2022984
_080B82B4: .4byte gUnknown_2022986
_080B82B8: .4byte 0x0000080c
_080B82BC: .4byte sub_80B82C0
thumb_func_end sub_80B8070
thumb_func_start sub_80B82C0
sub_80B82C0: @ 80B82C0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B82E4 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080B82DA
b _080B842A
_080B82DA:
lsls r0, 2
ldr r1, _080B82E8 @ =_080B82EC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B82E4: .4byte gTasks
_080B82E8: .4byte _080B82EC
.align 2, 0
_080B82EC:
.4byte _080B8300
.4byte _080B832C
.4byte _080B8394
.4byte _080B83F6
.4byte _080B8408
_080B8300:
ldrh r0, [r4, 0x12]
adds r0, 0x8
strh r0, [r4, 0x12]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0x16]
movs r3, 0x16
ldrsh r1, [r4, r3]
cmp r0, r1
blt _080B8316
strh r2, [r4, 0x12]
_080B8316:
adds r0, r4, 0
bl sub_80B843C
movs r0, 0x12
ldrsh r1, [r4, r0]
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r1, r0
beq _080B832A
b _080B842A
_080B832A:
b _080B83FC
_080B832C:
movs r3, 0x26
ldrsh r0, [r4, r3]
movs r2, 0x24
ldrsh r1, [r4, r2]
subs r0, r1
cmp r0, 0x3F
bgt _080B8348
ldrh r0, [r4, 0x24]
subs r0, 0x4
strh r0, [r4, 0x24]
ldrh r0, [r4, 0x26]
adds r0, 0x4
strh r0, [r4, 0x26]
b _080B834C
_080B8348:
movs r0, 0x1
strh r0, [r4, 0xA]
_080B834C:
ldr r2, _080B8390 @ =gUnknown_2022984
ldrh r0, [r4, 0x24]
lsls r0, 8
ldrh r1, [r4, 0x26]
orrs r0, r1
strh r0, [r2]
ldrh r0, [r4, 0x10]
adds r0, 0x8
strh r0, [r4, 0x10]
lsls r0, 16
asrs r0, 16
ldrh r2, [r4, 0x14]
movs r3, 0x14
ldrsh r1, [r4, r3]
cmp r0, r1
blt _080B836E
strh r2, [r4, 0x10]
_080B836E:
adds r0, r4, 0
bl sub_80B843C
movs r0, 0x10
ldrsh r1, [r4, r0]
movs r2, 0x14
ldrsh r0, [r4, r2]
cmp r1, r0
bne _080B842A
movs r3, 0xA
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080B842A
movs r0, 0
strh r0, [r4, 0xA]
b _080B83FC
.align 2, 0
_080B8390: .4byte gUnknown_2022984
_080B8394:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B842A
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080B83C4
ldrh r1, [r4, 0x1E]
movs r2, 0x1E
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080B83D2
subs r0, r1, 0x1
strh r0, [r4, 0x1E]
b _080B83D2
_080B83C4:
ldrh r1, [r4, 0x20]
movs r3, 0x20
ldrsh r0, [r4, r3]
cmp r0, 0xF
bgt _080B83D2
adds r0, r1, 0x1
strh r0, [r4, 0x20]
_080B83D2:
ldrh r1, [r4, 0x20]
lsls r1, 8
ldrh r0, [r4, 0x1E]
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x1E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B842A
movs r2, 0x20
ldrsh r0, [r4, r2]
cmp r0, 0x10
bne _080B842A
b _080B83FC
_080B83F6:
ldr r1, _080B8404 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B83FC:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B842A
.align 2, 0
_080B8404: .4byte gScanlineEffect
_080B8408:
ldr r0, _080B8430 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080B8434 @ =gUnknown_2022986
strh r1, [r0]
ldr r4, _080B8438 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
adds r0, r5, 0
bl DestroyAnimVisualTask
_080B842A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B8430: .4byte gUnknown_2022984
_080B8434: .4byte gUnknown_2022986
_080B8438: .4byte 0x00003f3f
thumb_func_end sub_80B82C0
thumb_func_start sub_80B843C
sub_80B843C: @ 80B843C
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
ldrh r0, [r6, 0x12]
ldrh r4, [r6, 0x10]
subs r0, r4
lsls r0, 16
asrs r1, r0, 16
cmp r1, 0
beq _080B8530
movs r2, 0x22
ldrsh r0, [r6, r2]
bl __divsi3
mov r8, r0
movs r3, 0x14
ldrsh r0, [r6, r3]
lsls r5, r0, 8
lsls r0, r4, 16
movs r4, 0
cmp r0, 0
ble _080B849C
ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
mov r12, r0
ldr r7, _080B852C @ =gScanlineEffect
_080B8470:
lsls r2, r4, 16
asrs r2, 16
lsls r3, r2, 1
ldrb r1, [r7, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r3, r0
add r3, r12
adds r1, r2, 0
subs r1, 0x9F
ldrh r0, [r6, 0x1C]
subs r0, r1
strh r0, [r3]
adds r2, 0x1
lsls r2, 16
lsrs r4, r2, 16
asrs r2, 16
movs r1, 0x10
ldrsh r0, [r6, r1]
cmp r2, r0
blt _080B8470
_080B849C:
ldrh r4, [r6, 0x10]
lsls r3, r4, 16
asrs r1, r3, 16
movs r2, 0x12
ldrsh r0, [r6, r2]
cmp r1, r0
bgt _080B84E6
ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
mov r12, r0
ldr r7, _080B852C @ =gScanlineEffect
_080B84B0:
asrs r4, r3, 16
cmp r4, 0
blt _080B84D2
asrs r1, r5, 8
subs r1, r4
lsls r3, r4, 1
ldrb r2, [r7, 0x14]
lsls r0, r2, 4
subs r0, r2
lsls r0, 7
adds r3, r0
add r3, r12
lsls r1, 16
asrs r1, 16
ldrh r2, [r6, 0x1C]
adds r1, r2
strh r1, [r3]
_080B84D2:
add r5, r8
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
lsls r3, r4, 16
asrs r1, r3, 16
movs r2, 0x12
ldrsh r0, [r6, r2]
cmp r1, r0
ble _080B84B0
_080B84E6:
movs r3, 0x1C
ldrsh r0, [r6, r3]
adds r0, 0x9F
lsls r2, r4, 16
asrs r1, r2, 16
subs r5, r0, r1
movs r3, 0x16
ldrsh r0, [r6, r3]
cmp r1, r0
bge _080B855E
ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
ldr r4, _080B852C @ =gScanlineEffect
_080B84FE:
asrs r3, r2, 16
cmp r3, 0
blt _080B8516
lsls r2, r3, 1
ldrb r1, [r4, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
adds r2, r7
strh r5, [r2]
subs r5, 0x1
_080B8516:
adds r0, r3, 0x1
lsls r2, r0, 16
asrs r1, r2, 16
movs r3, 0x16
ldrsh r0, [r6, r3]
cmp r1, r0
blt _080B84FE
b _080B855E
.align 2, 0
_080B8528: .4byte gScanlineEffectRegBuffers
_080B852C: .4byte gScanlineEffect
_080B8530:
movs r1, 0x1C
ldrsh r0, [r6, r1]
adds r5, r0, 0
adds r5, 0x9F
movs r4, 0
ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
movs r2, 0xF0
lsls r2, 3
adds r6, r3, r2
_080B8542:
lsls r0, r4, 16
asrs r0, 16
lsls r2, r0, 1
adds r1, r2, r3
strh r5, [r1]
adds r2, r6
strh r5, [r2]
subs r5, 0x1
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
asrs r0, 16
cmp r0, 0x6F
ble _080B8542
_080B855E:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B8568: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80B843C
thumb_func_start sub_80B856C
sub_80B856C: @ 80B856C
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
movs r4, 0
ldr r7, _080B85B4 @ =gSprites
movs r1, 0x3
ands r0, r1
lsls r5, r0, 2
movs r0, 0xD
negs r0, r0
adds r6, r0, 0
_080B8582:
lsls r0, r4, 24
lsrs r0, 24
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080B85A2
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r7
ldrb r0, [r1, 0x5]
ands r0, r6
orrs r0, r5
strb r0, [r1, 0x5]
_080B85A2:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x3
bls _080B8582
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B85B4: .4byte gSprites
thumb_func_end sub_80B856C
thumb_func_start sub_80B85B8
sub_80B85B8: @ 80B85B8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldr r6, _080B8658 @ =gBattleAnimAttacker
ldrb r0, [r6]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
eors r0, r1
negs r1, r0
orrs r1, r0
lsrs r4, r1, 31
ldrb r0, [r6]
adds r1, r4, 0
bl sub_8072E48
ldr r0, _080B865C @ =gSprites
mov r9, r0
ldr r0, _080B8660 @ =gUnknown_2023D44
mov r8, r0
ldrb r0, [r6]
add r0, r8
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
add r1, r9
adds r1, 0x3E
ldrb r2, [r1]
movs r7, 0x5
negs r7, r7
adds r0, r7, 0
ands r0, r2
strb r0, [r1]
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080B8642
ldrb r0, [r6]
eors r0, r5
movs r1, 0x1
eors r4, r1
adds r1, r4, 0
bl sub_8072E48
ldrb r0, [r6]
eors r0, r5
add r0, r8
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r9
adds r0, 0x3E
ldrb r2, [r0]
adds r1, r7, 0
ands r1, r2
strb r1, [r0]
_080B8642:
mov r0, r10
bl DestroyAnimVisualTask
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B8658: .4byte gBattleAnimAttacker
_080B865C: .4byte gSprites
_080B8660: .4byte gUnknown_2023D44
thumb_func_end sub_80B85B8
thumb_func_start sub_80B8664
sub_80B8664: @ 80B8664
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r4, _080B86AC @ =gBattleAnimAttacker
ldrb r0, [r4]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
eors r0, r1
negs r1, r0
orrs r1, r0
lsrs r5, r1, 31
adds r0, r5, 0
bl sub_8073128
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080B86A0
movs r0, 0x1
eors r5, r0
adds r0, r5, 0
bl sub_8073128
_080B86A0:
adds r0, r6, 0
bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B86AC: .4byte gBattleAnimAttacker
thumb_func_end sub_80B8664
thumb_func_start sub_80B86B0
sub_80B86B0: @ 80B86B0
push {r4,lr}
adds r4, r0, 0
ldr r1, _080B86E0 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
ldrb r1, [r1, 0x4]
adds r0, r4, 0
bl StartSpriteAnim
ldr r0, _080B86E4 @ =sub_8074F6C
str r0, [r4, 0x1C]
ldr r1, _080B86E8 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B86E0: .4byte gBattleAnimArgs
_080B86E4: .4byte sub_8074F6C
_080B86E8: .4byte DestroyAnimSprite
thumb_func_end sub_80B86B0
thumb_func_start sub_80B86EC
sub_80B86EC: @ 80B86EC
push {r4-r7,lr}
sub sp, 0x10
lsls r0, 24
lsrs r7, r0, 24
movs r6, 0
ldr r0, _080B87EC @ =gUnknown_2022984
strh r6, [r0]
ldr r0, _080B87F0 @ =gUnknown_2022986
strh r6, [r0]
ldr r1, _080B87F4 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080B87F8 @ =0x00003f3d
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r1, _080B87FC @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r1, _080B8800 @ =0x00000c08
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0x4
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B8750
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
_080B8750:
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080B87CA
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B87CA
ldr r4, _080B8804 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _080B8780
ldrb r0, [r4]
bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _080B87CA
_080B8780:
ldrb r0, [r4]
movs r5, 0x2
eors r0, r5
bl sub_8072DF0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B87CA
ldr r3, _080B8808 @ =gSprites
ldr r1, _080B880C @ =gUnknown_2023D44
ldrb r0, [r4]
eors r0, r5
adds r0, r1
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
movs r6, 0x1
_080B87CA:
ldr r4, _080B8804 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B8818
ldr r1, _080B8810 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080B8814 @ =gEnemyParty
b _080B8828
.align 2, 0
_080B87EC: .4byte gUnknown_2022984
_080B87F0: .4byte gUnknown_2022986
_080B87F4: .4byte 0x00003f3f
_080B87F8: .4byte 0x00003f3d
_080B87FC: .4byte 0x00003f42
_080B8800: .4byte 0x00000c08
_080B8804: .4byte gBattleAnimAttacker
_080B8808: .4byte gSprites
_080B880C: .4byte gUnknown_2023D44
_080B8810: .4byte gBattlerPartyIndexes
_080B8814: .4byte gEnemyParty
_080B8818:
ldr r1, _080B88B8 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080B88BC @ =gPlayerParty
_080B8828:
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
movs r0, 0
bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080B88C0 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
bl sub_8076E34
lsls r0, 24
lsrs r5, r0, 24
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap
bl sub_807543C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
ldr r2, _080B88D0 @ =gBattle_BG1_X
ldr r0, _080B88D4 @ =gSprites
lsls r1, r4, 4
adds r1, r4
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x20]
negs r0, r0
adds r0, 0x60
strh r0, [r2]
ldr r2, _080B88D8 @ =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
strh r0, [r2]
ldrb r0, [r1, 0x5]
lsrs r0, 4
adds r0, 0x10
adds r1, r0, 0
ldr r2, _080B88DC @ =gBattleAnimArgs
movs r3, 0x2
ldrsh r0, [r2, r3]
cmp r0, 0
bne _080B88E0
adds r0, r1, 0
movs r1, 0
bl sub_8075B48
b _080B88EC
.align 2, 0
_080B88B8: .4byte gBattlerPartyIndexes
_080B88BC: .4byte gPlayerParty
_080B88C0: .4byte gBattleAnimAttacker
_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
_080B88D0: .4byte gBattle_BG1_X
_080B88D4: .4byte gSprites
_080B88D8: .4byte gBattle_BG1_Y
_080B88DC: .4byte gBattleAnimArgs
_080B88E0:
lsls r0, r1, 4
ldrh r3, [r2, 0x4]
movs r1, 0x10
movs r2, 0xB
bl BlendPalette
_080B88EC:
ldr r1, _080B8914 @ =gTasks
lsls r0, r7, 2
adds r0, r7
lsls r0, 3
adds r0, r1
strh r5, [r0, 0x8]
ldr r2, _080B8918 @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r0, 0xA]
ldrh r1, [r2, 0x2]
strh r1, [r0, 0xC]
ldrh r1, [r2, 0x4]
strh r1, [r0, 0xE]
strh r6, [r0, 0x14]
ldr r1, _080B891C @ =sub_80B8920
str r1, [r0]
add sp, 0x10
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B8914: .4byte gTasks
_080B8918: .4byte gBattleAnimArgs
_080B891C: .4byte sub_80B8920
thumb_func_end sub_80B86EC
thumb_func_start sub_80B8920
sub_80B8920: @ 80B8920
push {r4-r6,lr}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
ldr r1, _080B89E8 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r4, r0, r1
ldrh r0, [r4, 0x1C]
adds r0, 0x4
movs r5, 0
strh r0, [r4, 0x1C]
ldr r2, _080B89EC @ =gBattle_BG1_X
ldrh r3, [r2]
subs r1, r3, 0x4
strh r1, [r2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x80
beq _080B894E
b _080B8A5E
_080B894E:
strh r5, [r4, 0x1C]
adds r0, r3, 0
adds r0, 0x7C
strh r0, [r2]
ldrh r0, [r4, 0x1E]
adds r0, 0x1
strh r0, [r4, 0x1E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _080B89FC
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r5, _080B89F0 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
ldrb r0, [r1, 0x5]
lsrs r0, 4
adds r0, 0x10
adds r1, r0, 0
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080B8990
adds r0, r1, 0
movs r1, 0x1
bl sub_8075B48
_080B8990:
movs r0, 0x8
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
bl DestroySprite
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_8075358
movs r1, 0x14
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080B8A5E
ldr r2, _080B89F4 @ =gUnknown_2023D44
ldr r0, _080B89F8 @ =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
adds r0, r2
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r5
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
b _080B8A5E
.align 2, 0
_080B89E8: .4byte gTasks
_080B89EC: .4byte gBattle_BG1_X
_080B89F0: .4byte gSprites
_080B89F4: .4byte gUnknown_2023D44
_080B89F8: .4byte gBattleAnimAttacker
_080B89FC:
cmp r0, 0x3
bne _080B8A5E
ldr r0, _080B8A68 @ =gUnknown_2022984
strh r5, [r0]
ldr r0, _080B8A6C @ =gUnknown_2022986
strh r5, [r0]
ldr r4, _080B8A70 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080B8A2E
movs r0, 0x1
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
_080B8A2E:
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
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
adds r0, r6, 0
bl DestroyAnimVisualTask
_080B8A5E:
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B8A68: .4byte gUnknown_2022984
_080B8A6C: .4byte gUnknown_2022986
_080B8A70: .4byte 0x00003f3f
thumb_func_end sub_80B8920
thumb_func_start sub_80B8A74
sub_80B8A74: @ 80B8A74
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r0, _080B8A94 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r2, r0, 0
cmp r1, 0x7
bhi _080B8AD8
lsls r0, r1, 2
ldr r1, _080B8A98 @ =_080B8A9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B8A94: .4byte gBattleAnimArgs
_080B8A98: .4byte _080B8A9C
.align 2, 0
_080B8A9C:
.4byte _080B8ABC
.4byte _080B8ABC
.4byte _080B8ABC
.4byte _080B8ABC
.4byte _080B8AC8
.4byte _080B8ACC
.4byte _080B8AD0
.4byte _080B8AD4
_080B8ABC:
ldrb r0, [r2]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r2, r0, 24
b _080B8ADA
_080B8AC8:
movs r4, 0
b _080B8AE0
_080B8ACC:
movs r4, 0x2
b _080B8AE0
_080B8AD0:
movs r4, 0x1
b _080B8AE0
_080B8AD4:
movs r4, 0x3
b _080B8AE0
_080B8AD8:
movs r2, 0xFF
_080B8ADA:
movs r0, 0
cmp r0, 0
beq _080B8B06
_080B8AE0:
adds r0, r4, 0
bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080B8B04
ldr r0, _080B8B00 @ =gUnknown_2023D44
adds r0, r4, r0
ldrb r2, [r0]
b _080B8B06
.align 2, 0
_080B8B00: .4byte gUnknown_2023D44
_080B8B04:
movs r2, 0xFF
_080B8B06:
cmp r2, 0xFF
beq _080B8B22
ldr r1, _080B8B30 @ =gSprites
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x5]
lsrs r0, 4
adds r0, 0x10
ldr r1, _080B8B34 @ =gBattleAnimArgs
ldrb r1, [r1, 0x2]
bl sub_8075B48
_080B8B22:
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B8B30: .4byte gSprites
_080B8B34: .4byte gBattleAnimArgs
thumb_func_end sub_80B8A74
thumb_func_start sub_80B8B38
sub_80B8B38: @ 80B8B38
push {lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r2, _080B8B64 @ =gUnknown_2037F16
ldrb r0, [r2]
cmp r0, 0x1
bhi _080B8B4C
ldr r1, _080B8B68 @ =gBattleAnimArgs
movs r0, 0
strh r0, [r1, 0xE]
_080B8B4C:
ldrb r0, [r2]
cmp r0, 0x2
bne _080B8B58
ldr r1, _080B8B68 @ =gBattleAnimArgs
movs r0, 0x1
strh r0, [r1, 0xE]
_080B8B58:
adds r0, r3, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080B8B64: .4byte gUnknown_2037F16
_080B8B68: .4byte gBattleAnimArgs
thumb_func_end sub_80B8B38
thumb_func_start sub_80B8B6C
sub_80B8B6C: @ 80B8B6C
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B8BC4 @ =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
movs r0, 0x14
strh r0, [r4, 0x2E]
ldr r5, _080B8BC8 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
ldr r0, _080B8BCC @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
bl sub_8075068
ldr r0, _080B8BD0 @ =sub_80B8BD4
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B8BC4: .4byte gBattleAnimAttacker
_080B8BC8: .4byte gBattleAnimTarget
_080B8BCC: .4byte 0x0000ffd8
_080B8BD0: .4byte sub_80B8BD4
thumb_func_end sub_80B8B6C
thumb_func_start sub_80B8BD4
sub_80B8BD4: @ 80B8BD4
push {r4,r5,lr}
adds r5, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080B8C28
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]
movs r0, 0x14
strh r0, [r5, 0x2E]
ldr r4, _080B8C30 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
movs r0, 0x28
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_8075068
ldr r0, _080B8C34 @ =sub_80B8C38
str r0, [r5, 0x1C]
_080B8C28:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B8C30: .4byte gBattleAnimAttacker
_080B8C34: .4byte sub_80B8C38
thumb_func_end sub_80B8BD4
thumb_func_start sub_80B8C38
sub_80B8C38: @ 80B8C38
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080B8C4C
adds r0, r4, 0
bl DestroyAnimSprite
_080B8C4C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B8C38
thumb_func_start sub_80B8C54
sub_80B8C54: @ 80B8C54
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
bl sub_8075114
ldr r0, _080B8CB4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080B8C74
ldr r1, _080B8CB8 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_080B8C74:
ldr r4, _080B8CB8 @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
ldr r5, _080B8CBC @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
adds r0, r1
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
adds r0, r4
strh r0, [r6, 0x36]
ldr r0, _080B8CC0 @ =sub_8075590
str r0, [r6, 0x1C]
ldr r1, _080B8CC4 @ =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B8CB4: .4byte gBattleAnimAttacker
_080B8CB8: .4byte gBattleAnimArgs
_080B8CBC: .4byte gBattleAnimTarget
_080B8CC0: .4byte sub_8075590
_080B8CC4: .4byte DestroyAnimSprite
thumb_func_end sub_80B8C54
thumb_func_start sub_80B8CC8
sub_80B8CC8: @ 80B8CC8
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
movs r1, 0x1
bl sub_8075160
ldr r4, _080B8D48 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074844
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074844
lsls r0, 24
lsrs r7, r0, 24
bl Random
movs r4, 0x1F
adds r5, r4, 0
ands r5, r0
bl Random
ands r4, r0
adds r1, r5, 0
cmp r1, 0x10
ble _080B8D10
movs r0, 0x10
subs r0, r1
lsls r0, 16
lsrs r5, r0, 16
_080B8D10:
lsls r0, r4, 16
asrs r1, r0, 16
cmp r1, 0x10
ble _080B8D20
movs r0, 0x10
subs r0, r1
lsls r0, 16
lsrs r4, r0, 16
_080B8D20:
ldr r0, _080B8D4C @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r6, 0x2E]
mov r1, r8
adds r0, r1, r5
strh r0, [r6, 0x32]
adds r0, r7, r4
strh r0, [r6, 0x36]
ldr r0, _080B8D50 @ =sub_8075590
str r0, [r6, 0x1C]
ldr r1, _080B8D54 @ =move_anim_8074EE0
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B8D48: .4byte gBattleAnimTarget
_080B8D4C: .4byte gBattleAnimArgs
_080B8D50: .4byte sub_8075590
_080B8D54: .4byte move_anim_8074EE0
thumb_func_end sub_80B8CC8
thumb_func_start sub_80B8D58
sub_80B8D58: @ 80B8D58
push {r4-r6,lr}
adds r5, r0, 0
ldrh r2, [r5, 0x4]
lsls r1, r2, 22
lsrs r1, 22
adds r1, 0x1
ldr r3, _080B8DB8 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080B8DBC @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
ldr r6, _080B8DC0 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080B8DCC
ldr r4, _080B8DC4 @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x2]
adds r0, r2
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldrh r3, [r6, 0x4]
adds r0, r3
strh r0, [r5, 0x22]
movs r1, 0x2
ldrsh r0, [r6, r1]
movs r2, 0x1
negs r2, r2
adds r1, r2, 0
cmp r0, 0
ble _080B8DB2
movs r1, 0x1
_080B8DB2:
strh r1, [r5, 0x2E]
ldr r0, _080B8DC8 @ =sub_80B8DE8
b _080B8DDA
.align 2, 0
_080B8DB8: .4byte 0x000003ff
_080B8DBC: .4byte 0xfffffc00
_080B8DC0: .4byte gBattleAnimArgs
_080B8DC4: .4byte gBattleAnimAttacker
_080B8DC8: .4byte sub_80B8DE8
_080B8DCC:
ldrh r0, [r6, 0x2]
strh r0, [r5, 0x20]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x22]
negs r0, r0
strh r0, [r5, 0x26]
ldr r0, _080B8DE4 @ =sub_80B8E24
_080B8DDA:
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B8DE4: .4byte sub_80B8E24
thumb_func_end sub_80B8D58
thumb_func_start sub_80B8DE8
sub_80B8DE8: @ 80B8DE8
push {lr}
adds r2, r0, 0
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B8E06
movs r0, 0
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x20]
adds r0, r1
strh r0, [r2, 0x20]
_080B8E06:
ldrh r0, [r2, 0x22]
subs r0, 0x4
strh r0, [r2, 0x22]
lsls r0, 16
asrs r0, 16
movs r1, 0x4
negs r1, r1
cmp r0, r1
bge _080B8E1E
adds r0, r2, 0
bl DestroyAnimSprite
_080B8E1E:
pop {r0}
bx r0
thumb_func_end sub_80B8DE8
thumb_func_start sub_80B8E24
sub_80B8E24: @ 80B8E24
push {lr}
adds r3, r0, 0
movs r0, 0x2E
ldrsh r1, [r3, r0]
cmp r1, 0
beq _080B8E36
cmp r1, 0x1
beq _080B8E4C
b _080B8E8E
_080B8E36:
ldrh r0, [r3, 0x26]
adds r0, 0x4
strh r0, [r3, 0x26]
lsls r0, 16
cmp r0, 0
blt _080B8E8E
strh r1, [r3, 0x26]
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
b _080B8E8E
_080B8E4C:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
cmp r0, 0
ble _080B8E8E
movs r0, 0
strh r0, [r3, 0x30]
movs r1, 0x3E
adds r1, r3
mov r12, r1
ldrb r2, [r1]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0xA
bne _080B8E8E
adds r0, r3, 0
bl DestroyAnimSprite
_080B8E8E:
pop {r0}
bx r0
thumb_func_end sub_80B8E24
thumb_func_start sub_80B8E94
sub_80B8E94: @ 80B8E94
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B8EB4 @ =gTasks
adds r1, r0, r1
ldr r0, _080B8EB8 @ =gBattleAnimArgs
movs r3, 0
ldrsh r0, [r0, r3]
cmp r0, 0
bne _080B8EC0
ldr r0, _080B8EBC @ =sub_80B8ED4
b _080B8EC2
.align 2, 0
_080B8EB4: .4byte gTasks
_080B8EB8: .4byte gBattleAnimArgs
_080B8EBC: .4byte sub_80B8ED4
_080B8EC0:
ldr r0, _080B8ED0 @ =sub_80B908C
_080B8EC2:
str r0, [r1]
ldr r1, [r1]
adds r0, r2, 0
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080B8ED0: .4byte sub_80B908C
thumb_func_end sub_80B8E94
thumb_func_start sub_80B8ED4
sub_80B8ED4: @ 80B8ED4
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B8EF8 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _080B8EEE
b _080B9082
_080B8EEE:
lsls r0, 2
ldr r1, _080B8EFC @ =_080B8F00
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B8EF8: .4byte gTasks
_080B8EFC: .4byte _080B8F00
.align 2, 0
_080B8F00:
.4byte _080B8F14
.4byte _080B8F9C
.4byte _080B8FAC
.4byte _080B9050
.4byte _080B9064
_080B8F14:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
ldr r0, _080B8F3C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _080B8F48
ldr r0, _080B8F40 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
ldr r0, _080B8F44 @ =gBattle_BG1_Y
b _080B8F50
.align 2, 0
_080B8F3C: .4byte gBattleAnimAttacker
_080B8F40: .4byte gBattle_BG1_X
_080B8F44: .4byte gBattle_BG1_Y
_080B8F48:
ldr r0, _080B8F8C @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
ldr r0, _080B8F90 @ =gBattle_BG2_Y
_080B8F50:
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, _080B8F94 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_807492C
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
subs r1, 0x20
strh r1, [r4, 0x24]
adds r0, 0x20
strh r0, [r4, 0x26]
cmp r1, 0
bge _080B8F72
movs r0, 0
strh r0, [r4, 0x24]
_080B8F72:
ldr r2, _080B8F98 @ =gSprites
movs r3, 0x1C
ldrsh r1, [r4, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
b _080B9056
.align 2, 0
_080B8F8C: .4byte gBattle_BG2_X
_080B8F90: .4byte gBattle_BG2_Y
_080B8F94: .4byte gBattleAnimAttacker
_080B8F98: .4byte gSprites
_080B8F9C:
ldrb r0, [r4, 0x1E]
movs r2, 0x24
ldrsh r1, [r4, r2]
movs r3, 0x26
ldrsh r2, [r4, r3]
bl sub_80B92B8
b _080B9056
_080B8FAC:
ldrh r0, [r4, 0xC]
adds r0, 0x6
movs r1, 0x7F
ands r0, r1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _080B8FCE
movs r0, 0
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
_080B8FCE:
ldr r1, _080B8FF0 @ =gSineTable
movs r2, 0xC
ldrsh r0, [r4, r2]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
lsls r0, 16
asrs r0, 20
ldrh r3, [r4, 0xE]
adds r2, r0, r3
strh r2, [r4, 0x12]
movs r1, 0x1E
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080B8FF8
ldr r1, _080B8FF4 @ =gBattle_BG1_Y
b _080B8FFA
.align 2, 0
_080B8FF0: .4byte gSineTable
_080B8FF4: .4byte gBattle_BG1_Y
_080B8FF8:
ldr r1, _080B901C @ =gBattle_BG2_Y
_080B8FFA:
ldrh r0, [r4, 0x22]
subs r0, r2
strh r0, [r1]
movs r2, 0x12
ldrsh r0, [r4, r2]
cmp r0, 0x3F
ble _080B9082
ldrh r0, [r4, 0x24]
movs r1, 0x78
subs r2, r1, r0
strh r2, [r4, 0x12]
movs r3, 0x1E
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _080B9024
ldr r1, _080B9020 @ =gBattle_BG1_Y
b _080B9026
.align 2, 0
_080B901C: .4byte gBattle_BG2_Y
_080B9020: .4byte gBattle_BG1_Y
_080B9024:
ldr r1, _080B9048 @ =gBattle_BG2_Y
_080B9026:
ldrh r0, [r4, 0x22]
subs r0, r2
strh r0, [r1]
ldr r2, _080B904C @ =gSprites
movs r1, 0x1C
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrh r2, [r1, 0x20]
movs r3, 0x88
lsls r3, 1
adds r0, r3, 0
subs r0, r2
strh r0, [r1, 0x24]
b _080B9056
.align 2, 0
_080B9048: .4byte gBattle_BG2_Y
_080B904C: .4byte gSprites
_080B9050:
ldr r1, _080B9060 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B9056:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B9082
.align 2, 0
_080B9060: .4byte gScanlineEffect
_080B9064:
adds r0, r2, 0
bl DestroyAnimVisualTask
ldr r2, _080B9088 @ =gSprites
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_080B9082:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9088: .4byte gSprites
thumb_func_end sub_80B8ED4
thumb_func_start sub_80B908C
sub_80B908C: @ 80B908C
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080B90CC @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r3, r1, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r2, 0x4
orrs r0, r2
strb r0, [r3]
movs r4, 0
strh r4, [r1, 0x24]
strh r4, [r1, 0x26]
ldr r0, _080B90D0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080B90D8
ldr r0, _080B90D4 @ =gBattle_BG1_Y
b _080B90DA
.align 2, 0
_080B90CC: .4byte gSprites
_080B90D0: .4byte gBattleAnimAttacker
_080B90D4: .4byte gBattle_BG1_Y
_080B90D8:
ldr r0, _080B90E8 @ =gBattle_BG2_Y
_080B90DA:
strh r4, [r0]
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B90E8: .4byte gBattle_BG2_Y
thumb_func_end sub_80B908C
thumb_func_start sub_80B90EC
sub_80B90EC: @ 80B90EC
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B910C @ =gTasks
adds r1, r0, r1
ldr r0, _080B9110 @ =gBattleAnimArgs
movs r3, 0
ldrsh r0, [r0, r3]
cmp r0, 0
bne _080B9118
ldr r0, _080B9114 @ =sub_80B912C
b _080B911A
.align 2, 0
_080B910C: .4byte gTasks
_080B9110: .4byte gBattleAnimArgs
_080B9114: .4byte sub_80B912C
_080B9118:
ldr r0, _080B9128 @ =sub_80B91B0
_080B911A:
str r0, [r1]
ldr r1, [r1]
adds r0, r2, 0
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080B9128: .4byte sub_80B91B0
thumb_func_end sub_80B90EC
thumb_func_start sub_80B912C
sub_80B912C: @ 80B912C
push {r4,r5,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B914C @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r5, [r4, r0]
cmp r5, 0
beq _080B9150
cmp r5, 0x1
beq _080B91A4
b _080B91AA
.align 2, 0
_080B914C: .4byte gTasks
_080B9150:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
ldr r3, _080B91A0 @ =gSprites
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r5, [r0, 0x24]
movs r1, 0x1C
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrh r2, [r1, 0x22]
movs r0, 0xA0
subs r0, r2
strh r0, [r1, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B91AA
.align 2, 0
_080B91A0: .4byte gSprites
_080B91A4:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B91AA:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80B912C
thumb_func_start sub_80B91B0
sub_80B91B0: @ 80B91B0
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B91D4 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x4
bhi _080B92B2
lsls r0, 2
ldr r1, _080B91D8 @ =_080B91DC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B91D4: .4byte gTasks
_080B91D8: .4byte _080B91DC
.align 2, 0
_080B91DC:
.4byte _080B91F0
.4byte _080B9244
.4byte _080B9252
.4byte _080B926C
.4byte _080B92AC
_080B91F0:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
ldr r0, _080B9214 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80768B0
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _080B921C
ldr r0, _080B9218 @ =gBattle_BG1_X
b _080B921E
.align 2, 0
_080B9214: .4byte gBattleAnimAttacker
_080B9218: .4byte gBattle_BG1_X
_080B921C:
ldr r0, _080B923C @ =gBattle_BG2_X
_080B921E:
ldrh r0, [r0]
strh r0, [r4, 0x20]
ldr r0, _080B9240 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_807492C
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
subs r1, 0x20
strh r1, [r4, 0x24]
adds r0, 0x20
strh r0, [r4, 0x26]
b _080B929A
.align 2, 0
_080B923C: .4byte gBattle_BG2_X
_080B9240: .4byte gBattleAnimAttacker
_080B9244:
ldrb r0, [r4, 0x1E]
movs r1, 0x26
ldrsh r2, [r4, r1]
movs r1, 0
bl sub_80B92B8
b _080B929A
_080B9252:
ldr r2, _080B9268 @ =gSprites
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x60
strh r1, [r0, 0x26]
b _080B929A
.align 2, 0
_080B9268: .4byte gSprites
_080B926C:
ldr r2, _080B92A4 @ =gSprites
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
subs r1, 0x8
strh r1, [r0, 0x26]
movs r0, 0x1C
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x26
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B92B2
ldr r1, _080B92A8 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B929A:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B92B2
.align 2, 0
_080B92A4: .4byte gSprites
_080B92A8: .4byte gScanlineEffect
_080B92AC:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B92B2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B91B0
thumb_func_start sub_80B92B8
sub_80B92B8: @ 80B92B8
push {r4-r6,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, 16
lsrs r1, 16
lsls r2, 16
lsrs r4, r2, 16
cmp r0, 0x1
bne _080B92DC
ldr r0, _080B92D4 @ =gBattle_BG1_X
ldrh r3, [r0]
ldr r0, _080B92D8 @ =0x04000014
b _080B92E2
.align 2, 0
_080B92D4: .4byte gBattle_BG1_X
_080B92D8: .4byte 0x04000014
_080B92DC:
ldr r0, _080B9368 @ =gBattle_BG2_X
ldrh r3, [r0]
ldr r0, _080B936C @ =0x04000018
_080B92E2:
str r0, [sp]
lsls r0, r1, 16
cmp r0, 0
bge _080B92EC
movs r1, 0
_080B92EC:
lsls r2, r1, 16
lsls r0, r4, 16
asrs r4, r0, 16
cmp r2, r0
bge _080B9318
ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
_080B92FE:
asrs r2, 16
lsls r1, r2, 1
adds r0, r1, r5
strh r3, [r0]
adds r1, r6
strh r3, [r1]
adds r2, 0x1
lsls r2, 16
lsrs r1, r2, 16
lsls r2, r1, 16
asrs r0, r2, 16
cmp r0, r4
blt _080B92FE
_080B9318:
lsls r1, 16
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080B9346
ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
lsls r0, r3, 16
asrs r0, 16
adds r3, r0, 0
adds r3, 0xF0
movs r0, 0xF0
lsls r0, 3
adds r5, r4, r0
_080B9330:
asrs r2, r1, 16
lsls r1, r2, 1
adds r0, r1, r4
strh r3, [r0]
adds r1, r5
strh r3, [r1]
adds r2, 0x1
lsls r1, r2, 16
asrs r0, r1, 16
cmp r0, 0x9F
ble _080B9330
_080B9346:
ldr r0, _080B9374 @ =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]
bl ScanlineEffect_SetParams
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B9368: .4byte gBattle_BG2_X
_080B936C: .4byte 0x04000018
_080B9370: .4byte gScanlineEffectRegBuffers
_080B9374: .4byte 0xa2600001
thumb_func_end sub_80B92B8
thumb_func_start sub_80B9378
sub_80B9378: @ 80B9378
push {r4-r7,lr}
adds r5, r0, 0
ldr r0, _080B938C @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r0, r2]
adds r7, r0, 0
cmp r1, 0
bne _080B9394
ldr r0, _080B9390 @ =gBattleAnimAttacker
b _080B9396
.align 2, 0
_080B938C: .4byte gBattleAnimArgs
_080B9390: .4byte gBattleAnimAttacker
_080B9394:
ldr r0, _080B93F8 @ =gBattleAnimTarget
_080B9396:
ldrb r4, [r0]
movs r6, 0x18
adds r1, r7, 0
movs r2, 0x2
ldrsh r0, [r1, r2]
cmp r0, 0x1
bne _080B93B2
negs r0, r6
lsls r0, 16
lsrs r6, r0, 16
movs r2, 0x4
ldrsh r0, [r1, r2]
negs r0, r0
strh r0, [r1, 0x4]
_080B93B2:
adds r0, r4, 0
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
adds r0, r6
strh r0, [r5, 0x20]
adds r0, r4, 0
bl sub_807492C
lsls r0, 24
lsrs r0, 24
adds r0, 0x1E
strh r0, [r5, 0x22]
ldrh r1, [r7, 0xA]
strh r1, [r5, 0x2E]
ldrh r1, [r7, 0x4]
ldrh r2, [r5, 0x20]
adds r1, r2
strh r1, [r5, 0x32]
ldrh r1, [r7, 0x6]
adds r0, r1
strh r0, [r5, 0x36]
ldrh r0, [r7, 0x8]
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_8075068
ldr r0, _080B93FC @ =sub_80B9400
str r0, [r5, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B93F8: .4byte gBattleAnimTarget
_080B93FC: .4byte sub_80B9400
thumb_func_end sub_80B9378
thumb_func_start sub_80B9400
sub_80B9400: @ 80B9400
push {r4,lr}
adds r4, r0, 0
bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080B9414
adds r0, r4, 0
bl DestroyAnimSprite
_080B9414:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B9400
thumb_func_start sub_80B941C
sub_80B941C: @ 80B941C
push {r4-r6,lr}
adds r6, r0, 0
ldr r0, _080B9430 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B9438
ldr r0, _080B9434 @ =gBattleAnimAttacker
b _080B943A
.align 2, 0
_080B9430: .4byte gBattleAnimArgs
_080B9434: .4byte gBattleAnimAttacker
_080B9438:
ldr r0, _080B9498 @ =gBattleAnimTarget
_080B943A:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
bl sub_8074480
lsls r0, 24
lsrs r0, 24
ldr r2, _080B949C @ =0x0000fff0
adds r0, r2
ldr r4, _080B94A0 @ =gBattleAnimArgs
movs r3, 0x2
ldrsh r1, [r4, r3]
lsls r1, 5
adds r0, r1
strh r0, [r6, 0x20]
adds r0, r5, 0
bl sub_807492C
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
strh r0, [r6, 0x22]
ldrh r2, [r6, 0x4]
lsls r1, r2, 22
lsrs r1, 22
movs r3, 0x2
ldrsh r0, [r4, r3]
lsls r0, 3
adds r1, r0
ldr r3, _080B94A4 @ =0x000003ff
adds r0, r3, 0
ands r1, r0
ldr r0, _080B94A8 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r6, 0x4]
ldr r1, _080B94AC @ =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
ldrh r0, [r4, 0x4]
strh r0, [r6, 0x2E]
ldr r0, _080B94B0 @ =sub_8074C44
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B9498: .4byte gBattleAnimTarget
_080B949C: .4byte 0x0000fff0
_080B94A0: .4byte gBattleAnimArgs
_080B94A4: .4byte 0x000003ff
_080B94A8: .4byte 0xfffffc00
_080B94AC: .4byte DestroyAnimSprite
_080B94B0: .4byte sub_8074C44
thumb_func_end sub_80B941C
thumb_func_start sub_80B94B4
sub_80B94B4: @ 80B94B4
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080B94D8 @ =gTasks
adds r4, r0, r1
ldr r0, _080B94DC @ =gBattleAnimArgs
ldrh r2, [r0, 0x2]
movs r3, 0x2
ldrsh r1, [r0, r3]
adds r6, r0, 0
cmp r1, 0
beq _080B94E0
adds r0, r2, 0x3
b _080B94EC
.align 2, 0
_080B94D8: .4byte gTasks
_080B94DC: .4byte gBattleAnimArgs
_080B94E0:
ldr r0, _080B950C @ =gUnknown_2037EEC
ldrh r0, [r0]
movs r1, 0xA
bl __udivsi3
adds r0, 0x3
_080B94EC:
strh r0, [r4, 0x26]
strh r0, [r4, 0x24]
adds r1, r6, 0
ldrh r0, [r1, 0x4]
strh r0, [r4, 0xE]
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0x4
beq _080B9518
cmp r0, 0x5
bne _080B9558
ldr r0, _080B9510 @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, _080B9514 @ =sub_80B9584
b _080B9576
.align 2, 0
_080B950C: .4byte gUnknown_2037EEC
_080B9510: .4byte gBattle_BG3_X
_080B9514: .4byte sub_80B9584
_080B9518:
movs r0, 0
strh r0, [r4, 0x22]
movs r5, 0
_080B951E:
lsls r0, r5, 24
lsrs r0, 24
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080B9548
movs r3, 0x22
ldrsh r0, [r4, r3]
adds r0, 0x9
lsls r0, 1
adds r1, r4, 0
adds r1, 0x8
adds r1, r0
ldr r0, _080B9554 @ =gUnknown_2023D44
adds r0, r5, r0
ldrb r0, [r0]
strh r0, [r1]
ldrh r0, [r4, 0x22]
adds r0, 0x1
strh r0, [r4, 0x22]
_080B9548:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3
bls _080B951E
b _080B9574
.align 2, 0
_080B9554: .4byte gUnknown_2023D44
_080B9558:
ldrb r0, [r6]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
cmp r0, 0xFF
bne _080B9570
adds r0, r5, 0
bl DestroyAnimVisualTask
b _080B9578
_080B9570:
movs r0, 0x1
strh r0, [r4, 0x22]
_080B9574:
ldr r0, _080B9580 @ =sub_80B967C
_080B9576:
str r0, [r4]
_080B9578:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B9580: .4byte sub_80B967C
thumb_func_end sub_80B94B4
thumb_func_start sub_80B9584
sub_80B9584: @ 80B9584
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080B95A8 @ =gTasks
adds r3, r0, r1
movs r0, 0x8
ldrsh r1, [r3, r0]
cmp r1, 0x1
beq _080B9608
cmp r1, 0x1
bgt _080B95AC
cmp r1, 0
beq _080B95B2
b _080B9674
.align 2, 0
_080B95A8: .4byte gTasks
_080B95AC:
cmp r1, 0x2
beq _080B9668
b _080B9674
_080B95B2:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B9674
strh r1, [r3, 0xA]
ldrh r1, [r3, 0xC]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080B95DC
ldr r1, _080B95D8 @ =gBattle_BG3_X
ldrh r0, [r3, 0x26]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080B95E6
.align 2, 0
_080B95D8: .4byte gBattle_BG3_X
_080B95DC:
ldr r0, _080B9604 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x26]
subs r1, r2
strh r1, [r0]
_080B95E6:
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r3, r2]
cmp r0, r1
bne _080B9674
movs r0, 0
strh r0, [r3, 0xC]
ldrh r0, [r3, 0x24]
subs r0, 0x1
strh r0, [r3, 0x24]
b _080B965C
.align 2, 0
_080B9604: .4byte gBattle_BG3_X
_080B9608:
ldrh r0, [r3, 0xA]
adds r0, 0x1
strh r0, [r3, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B9674
movs r0, 0
strh r0, [r3, 0xA]
ldrh r0, [r3, 0xC]
ands r1, r0
cmp r1, 0
bne _080B9634
ldr r1, _080B9630 @ =gBattle_BG3_X
ldrh r0, [r3, 0x24]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080B963E
.align 2, 0
_080B9630: .4byte gBattle_BG3_X
_080B9634:
ldr r0, _080B9664 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x24]
subs r1, r2
strh r1, [r0]
_080B963E:
ldrh r0, [r3, 0xC]
adds r0, 0x1
strh r0, [r3, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080B9674
movs r0, 0
strh r0, [r3, 0xC]
ldrh r0, [r3, 0x24]
subs r0, 0x1
strh r0, [r3, 0x24]
lsls r0, 16
cmp r0, 0
bne _080B9674
_080B965C:
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
b _080B9674
.align 2, 0
_080B9664: .4byte gBattle_BG3_X
_080B9668:
ldr r1, _080B9678 @ =gBattle_BG3_X
ldrh r0, [r3, 0x22]
strh r0, [r1]
adds r0, r2, 0
bl DestroyAnimVisualTask
_080B9674:
pop {r0}
bx r0
.align 2, 0
_080B9678: .4byte gBattle_BG3_X
thumb_func_end sub_80B9584
thumb_func_start sub_80B967C
sub_80B967C: @ 80B967C
push {r4-r7,lr}
lsls r0, 24
lsrs r3, r0, 24
lsls r0, r3, 2
adds r0, r3
lsls r0, 3
ldr r1, _080B96A0 @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080B96DC
cmp r5, 0x1
bgt _080B96A4
cmp r5, 0
beq _080B96AA
b _080B9756
.align 2, 0
_080B96A0: .4byte gTasks
_080B96A4:
cmp r5, 0x2
beq _080B9718
b _080B9756
_080B96AA:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B9756
strh r5, [r4, 0xA]
adds r0, r4, 0
bl sub_80B9760
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
movs r2, 0xE
ldrsh r1, [r4, r2]
cmp r0, r1
bne _080B9756
strh r5, [r4, 0xC]
ldrh r0, [r4, 0x24]
subs r0, 0x1
strh r0, [r4, 0x24]
b _080B9710
_080B96DC:
ldrh r0, [r4, 0xA]
adds r0, 0x1
movs r5, 0
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080B9756
strh r5, [r4, 0xA]
adds r0, r4, 0
bl sub_80B9760
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080B9756
strh r5, [r4, 0xC]
ldrh r0, [r4, 0x24]
subs r0, 0x1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
bne _080B9756
_080B9710:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080B9756
_080B9718:
movs r2, 0
movs r7, 0x22
ldrsh r0, [r4, r7]
cmp r2, r0
bge _080B9750
ldr r0, _080B975C @ =gSprites
mov r12, r0
adds r5, r4, 0
adds r5, 0x8
movs r6, 0
_080B972C:
adds r0, r2, 0
adds r0, 0x9
lsls r0, 1
adds r0, r5, r0
movs r7, 0
ldrsh r1, [r0, r7]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r12
strh r6, [r0, 0x24]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
movs r1, 0x22
ldrsh r0, [r4, r1]
cmp r2, r0
blt _080B972C
_080B9750:
adds r0, r3, 0
bl DestroyAnimVisualTask
_080B9756:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B975C: .4byte gSprites
thumb_func_end sub_80B967C
thumb_func_start sub_80B9760
sub_80B9760: @ 80B9760
push {r4-r7,lr}
adds r3, r0, 0
ldrh r1, [r3, 0xC]
movs r4, 0x1
adds r0, r4, 0
ands r0, r1
cmp r0, 0
bne _080B9788
movs r0, 0x24
ldrsh r1, [r3, r0]
lsrs r0, r1, 31
adds r1, r0
asrs r1, 1
ldrh r2, [r3, 0x24]
adds r0, r4, 0
ands r0, r2
adds r1, r0
lsls r1, 16
lsrs r4, r1, 16
b _080B9798
_080B9788:
movs r1, 0x24
ldrsh r0, [r3, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
negs r0, r0
lsls r0, 16
lsrs r4, r0, 16
_080B9798:
movs r2, 0
movs r7, 0x22
ldrsh r0, [r3, r7]
cmp r2, r0
bge _080B97CC
ldr r6, _080B97D4 @ =gSprites
adds r5, r3, 0
adds r5, 0x8
_080B97A8:
adds r0, r2, 0
adds r0, 0x9
lsls r0, 1
adds r0, r5, r0
movs r7, 0
ldrsh r1, [r0, r7]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r4, [r0, 0x24]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
movs r1, 0x22
ldrsh r0, [r3, r1]
cmp r2, r0
blt _080B97A8
_080B97CC:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B97D4: .4byte gSprites
thumb_func_end sub_80B9760
thumb_func_start sub_80B97D8
sub_80B97D8: @ 80B97D8
push {lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r3, _080B97F8 @ =gBattleAnimArgs
movs r2, 0
ldr r0, _080B97FC @ =gUnknown_2037EEC
ldrh r0, [r0]
cmp r0, 0x63
bls _080B97EC
movs r2, 0x1
_080B97EC:
strh r2, [r3, 0x1E]
adds r0, r1, 0
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080B97F8: .4byte gBattleAnimArgs
_080B97FC: .4byte gUnknown_2037EEC
thumb_func_end sub_80B97D8
thumb_func_start sub_80B9800
sub_80B9800: @ 80B9800
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
ldr r2, _080B9818 @ =gBattleAnimArgs
ldrh r1, [r2]
movs r0, 0x1
ands r0, r1
adds r6, r2, 0
cmp r0, 0
beq _080B9820
ldr r0, _080B981C @ =gBattleAnimTarget
b _080B9822
.align 2, 0
_080B9818: .4byte gBattleAnimArgs
_080B981C: .4byte gBattleAnimTarget
_080B9820:
ldr r0, _080B9890 @ =gBattleAnimAttacker
_080B9822:
ldrb r0, [r0]
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x1
ble _080B9832
movs r0, 0x2
eors r5, r0
_080B9832:
ldr r0, _080B9894 @ =sub_80B98A8
ldrb r1, [r6, 0x2]
bl CreateTask
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080B9898 @ =gTasks
adds r4, r0
adds r0, r5, 0
movs r1, 0x2
bl sub_8074480
lsls r0, 24
lsrs r0, 24
movs r1, 0x20
subs r1, r0
ldr r2, _080B989C @ =0x000001ff
adds r0, r2, 0
ands r1, r0
strh r1, [r4, 0xA]
adds r0, r5, 0
movs r1, 0x3
bl sub_8074480
lsls r0, 24
lsrs r0, 24
movs r1, 0x40
subs r1, r0
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0xC]
ldr r2, _080B98A0 @ =gBattle_BG3_X
ldrh r0, [r4, 0xA]
strh r0, [r2]
ldr r0, _080B98A4 @ =gBattle_BG3_Y
strh r1, [r0]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0xE]
adds r0, r7, 0
bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B9890: .4byte gBattleAnimAttacker
_080B9894: .4byte sub_80B98A8
_080B9898: .4byte gTasks
_080B989C: .4byte 0x000001ff
_080B98A0: .4byte gBattle_BG3_X
_080B98A4: .4byte gBattle_BG3_Y
thumb_func_end sub_80B9800
thumb_func_start sub_80B98A8
sub_80B98A8: @ 80B98A8
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
lsls r0, r3, 2
adds r0, r3
lsls r0, 3
ldr r1, _080B98D8 @ =gTasks
adds r2, r0, r1
ldr r0, _080B98DC @ =gBattleAnimArgs
movs r4, 0xE
ldrsh r1, [r0, r4]
movs r4, 0xE
ldrsh r0, [r2, r4]
cmp r1, r0
bne _080B98E8
ldr r0, _080B98E0 @ =gBattle_BG3_X
movs r1, 0
strh r1, [r0]
ldr r0, _080B98E4 @ =gBattle_BG3_Y
strh r1, [r0]
adds r0, r3, 0
bl DestroyTask
b _080B98F4
.align 2, 0
_080B98D8: .4byte gTasks
_080B98DC: .4byte gBattleAnimArgs
_080B98E0: .4byte gBattle_BG3_X
_080B98E4: .4byte gBattle_BG3_Y
_080B98E8:
ldr r1, _080B98FC @ =gBattle_BG3_X
ldrh r0, [r2, 0xA]
strh r0, [r1]
ldr r1, _080B9900 @ =gBattle_BG3_Y
ldrh r0, [r2, 0xC]
strh r0, [r1]
_080B98F4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B98FC: .4byte gBattle_BG3_X
_080B9900: .4byte gBattle_BG3_Y
thumb_func_end sub_80B98A8
thumb_func_start sub_80B9904
sub_80B9904: @ 80B9904
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080B993C @ =gBattleAnimArgs
ldrh r0, [r5]
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
ldr r0, _080B9940 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080B9944
ldrh r0, [r5, 0x6]
negs r0, r0
strh r0, [r4, 0x30]
movs r0, 0x1
strh r0, [r4, 0x36]
b _080B9952
.align 2, 0
_080B993C: .4byte gBattleAnimArgs
_080B9940: .4byte gBattleAnimAttacker
_080B9944:
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
strh r1, [r4, 0x36]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_080B9952:
ldr r0, _080B9968 @ =gBattleAnimArgs
ldrh r0, [r0, 0x8]
strh r0, [r4, 0x34]
ldr r1, _080B996C @ =sub_80B9970
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9968: .4byte gBattleAnimArgs
_080B996C: .4byte sub_80B9970
thumb_func_end sub_80B9904
thumb_func_start sub_80B9970
sub_80B9970: @ 80B9970
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x1E
bl Cos
strh r0, [r4, 0x24]
movs r2, 0x2E
ldrsh r0, [r4, r2]
movs r1, 0xA
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x2E]
cmp r0, 0x7F
bhi _080B99A2
ldrb r0, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4, 0x5]
b _080B99AA
_080B99A2:
ldrb r0, [r4, 0x5]
movs r1, 0xC
orrs r0, r1
strb r0, [r4, 0x5]
_080B99AA:
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x2E]
adds r0, r1
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
movs r2, 0x34
ldrsh r1, [r4, r2]
cmp r0, r1
bne _080B99CE
adds r0, r4, 0
bl DestroyAnimSprite
_080B99CE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B9970
thumb_func_start sub_80B99D4
sub_80B99D4: @ 80B99D4
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldr r4, _080B9A0C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r4, r1]
bl sub_80B9A14
movs r1, 0x2
ldrsb r1, [r4, r1]
ldrb r2, [r4, 0x4]
ldrb r3, [r4, 0x6]
ldrh r4, [r4, 0x8]
str r4, [sp]
bl BeginNormalPaletteFade
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080B9A10 @ =sub_80B9A5C
str r0, [r5, 0x1C]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9A0C: .4byte gBattleAnimArgs
_080B9A10: .4byte sub_80B9A5C
thumb_func_end sub_80B99D4
thumb_func_start sub_80B9A14
sub_80B9A14: @ 80B9A14
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0xC
lsls r0, 16
lsrs r0, 16
movs r4, 0x1
mov r8, r0
mov r1, r8
ands r1, r4
mov r8, r1
lsls r0, 16
asrs r1, r0, 17
ands r1, r4
asrs r2, r0, 18
ands r2, r4
asrs r3, r0, 19
ands r3, r4
asrs r6, r0, 20
ands r6, r4
asrs r5, r0, 21
ands r5, r4
asrs r0, 22
ands r0, r4
str r6, [sp]
str r5, [sp, 0x4]
str r0, [sp, 0x8]
mov r0, r8
bl sub_8075BE8
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80B9A14
thumb_func_start sub_80B9A5C
sub_80B9A5C: @ 80B9A5C
push {lr}
adds r2, r0, 0
ldr r0, _080B9A78 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9A72
adds r0, r2, 0
bl DestroyAnimSprite
_080B9A72:
pop {r0}
bx r0
.align 2, 0
_080B9A78: .4byte gPaletteFade
thumb_func_end sub_80B9A5C
thumb_func_start sub_80B9A7C
sub_80B9A7C: @ 80B9A7C
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080B9AC8 @ =gBattleAnimArgs
ldrh r0, [r4, 0x2]
strh r0, [r5, 0x2E]
strh r0, [r5, 0x30]
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x32]
ldrh r0, [r4, 0x6]
strh r0, [r5, 0x34]
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x36]
ldrh r0, [r4, 0xA]
strh r0, [r5, 0x38]
ldrh r0, [r4, 0xC]
strh r0, [r5, 0x3A]
ldrh r0, [r4]
strh r0, [r5, 0x3C]
movs r1, 0x3C
ldrsh r0, [r5, r1]
bl sub_80B9A14
ldrb r1, [r4, 0x8]
ldrh r2, [r4, 0x6]
bl BlendPalettes
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080B9ACC @ =sub_80B9AD0
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9AC8: .4byte gBattleAnimArgs
_080B9ACC: .4byte sub_80B9AD0
thumb_func_end sub_80B9A7C
thumb_func_start sub_80B9AD0
sub_80B9AD0: @ 80B9AD0
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080B9AE4
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
b _080B9B54
_080B9AE4:
ldr r0, _080B9B00 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9B54
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080B9B08
ldr r0, _080B9B04 @ =sub_80B9B5C
str r0, [r4, 0x1C]
b _080B9B54
.align 2, 0
_080B9B00: .4byte gPaletteFade
_080B9B04: .4byte sub_80B9B5C
_080B9B08:
movs r2, 0x3C
ldrsh r0, [r4, r2]
bl sub_80B9A14
adds r3, r0, 0
ldrh r1, [r4, 0x30]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080B9B2E
ldrh r1, [r4, 0x36]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x34]
adds r0, r3, 0
bl BlendPalettes
b _080B9B3C
_080B9B2E:
ldrh r1, [r4, 0x3A]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x38]
adds r0, r3, 0
bl BlendPalettes
_080B9B3C:
ldrh r0, [r4, 0x30]
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
eors r0, r1
strh r0, [r4, 0x30]
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x32]
subs r0, 0x1
strh r0, [r4, 0x32]
_080B9B54:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80B9AD0
thumb_func_start sub_80B9B5C
sub_80B9B5C: @ 80B9B5C
push {r4,lr}
adds r4, r0, 0
ldr r0, _080B9B88 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9B82
movs r1, 0x3C
ldrsh r0, [r4, r1]
bl sub_80B9A14
movs r1, 0
movs r2, 0
bl BlendPalettes
adds r0, r4, 0
bl DestroyAnimSprite
_080B9B82:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9B88: .4byte gPaletteFade
thumb_func_end sub_80B9B5C
thumb_func_start sub_80B9B8C
sub_80B9B8C: @ 80B9B8C
push {r4,lr}
adds r4, r0, 0
ldr r1, _080B9BD0 @ =gBattleAnimArgs
ldrh r0, [r1]
ldrh r2, [r4, 0x20]
adds r0, r2
movs r2, 0
strh r0, [r4, 0x20]
ldrh r0, [r1, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
strh r2, [r4, 0x2E]
movs r0, 0xA
strh r0, [r4, 0x30]
movs r0, 0x8
strh r0, [r4, 0x32]
movs r0, 0x28
strh r0, [r4, 0x34]
movs r0, 0x70
strh r0, [r4, 0x36]
strh r2, [r4, 0x38]
ldr r1, _080B9BD4 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, _080B9BD8 @ =sub_8074AE0
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9BD0: .4byte gBattleAnimArgs
_080B9BD4: .4byte move_anim_8074EE0
_080B9BD8: .4byte sub_8074AE0
thumb_func_end sub_80B9B8C
thumb_func_start sub_80B9BDC
sub_80B9BDC: @ 80B9BDC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080B9C20 @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldr r3, _080B9C24 @ =gBattleAnimArgs
ldrh r1, [r3]
movs r5, 0
strh r1, [r4, 0x8]
ldrh r1, [r3, 0x2]
strh r1, [r4, 0xA]
ldrh r1, [r3, 0x4]
strh r1, [r4, 0xC]
ldrh r1, [r3, 0x6]
strh r1, [r4, 0xE]
ldrh r2, [r3, 0x8]
strh r2, [r4, 0x10]
ldrh r1, [r3, 0xA]
strh r1, [r4, 0x12]
strh r5, [r4, 0x18]
lsls r2, 24
lsrs r2, 24
movs r1, 0
bl sub_80B9C2C
ldr r0, _080B9C28 @ =sub_80B9C7C
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9C20: .4byte gTasks
_080B9C24: .4byte gBattleAnimArgs
_080B9C28: .4byte sub_80B9C7C
thumb_func_end sub_80B9BDC
thumb_func_start sub_80B9C2C
sub_80B9C2C: @ 80B9C2C
push {r4-r6,lr}
sub sp, 0x4
adds r5, r1, 0
adds r6, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r5, 24
lsrs r5, 24
lsls r6, 24
lsrs r6, 24
ldr r1, _080B9C78 @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
bl sub_80B9A14
movs r1, 0xA
ldrsb r1, [r4, r1]
ldrh r2, [r4, 0x12]
str r2, [sp]
adds r2, r5, 0
adds r3, r6, 0
bl BeginNormalPaletteFade
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x18]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x18]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B9C78: .4byte gTasks
thumb_func_end sub_80B9C2C
thumb_func_start sub_80B9C7C
sub_80B9C7C: @ 80B9C7C
push {r4-r6,lr}
lsls r0, 24
lsrs r3, r0, 24
adds r4, r3, 0
ldr r0, _080B9CB4 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9CDE
ldr r1, _080B9CB8 @ =gTasks
lsls r2, r3, 2
adds r0, r2, r3
lsls r0, 3
adds r3, r0, r1
movs r5, 0xC
ldrsh r0, [r3, r5]
adds r6, r1, 0
adds r5, r2, 0
cmp r0, 0
ble _080B9CD8
movs r1, 0x18
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080B9CBC
ldrb r1, [r3, 0xE]
ldrb r2, [r3, 0x10]
b _080B9CC0
.align 2, 0
_080B9CB4: .4byte gPaletteFade
_080B9CB8: .4byte gTasks
_080B9CBC:
ldrb r1, [r3, 0x10]
ldrb r2, [r3, 0xE]
_080B9CC0:
adds r0, r5, r4
lsls r0, 3
adds r0, r6
movs r3, 0xC
ldrsh r0, [r0, r3]
cmp r0, 0x1
bne _080B9CD0
movs r2, 0
_080B9CD0:
adds r0, r4, 0
bl sub_80B9C2C
b _080B9CDE
_080B9CD8:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080B9CDE:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B9C7C
thumb_func_start sub_80B9CE4
sub_80B9CE4: @ 80B9CE4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r3, _080B9D88 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r3
ldr r2, _080B9D8C @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r0, 0x8]
ldrh r1, [r2, 0x2]
strh r1, [r0, 0xA]
ldrh r1, [r2, 0x4]
strh r1, [r0, 0xC]
ldrh r1, [r2, 0x6]
strh r1, [r0, 0xE]
ldrh r1, [r2, 0x8]
strh r1, [r0, 0x10]
ldrh r1, [r2, 0xA]
strh r1, [r0, 0x12]
strh r5, [r0, 0x18]
movs r4, 0
ldr r0, _080B9D90 @ =gBattlersCount
ldrb r1, [r0]
mov r9, r3
mov r8, r2
cmp r5, r1
bge _080B9D4C
ldr r0, _080B9D94 @ =gBattleAnimAttacker
ldrb r3, [r0]
ldr r7, _080B9D98 @ =gBattleAnimTarget
movs r0, 0x1
mov r12, r0
adds r2, r1, 0
_080B9D32:
cmp r4, r3
beq _080B9D46
ldrb r1, [r7]
cmp r4, r1
beq _080B9D46
adds r1, r4, 0
adds r1, 0x10
mov r0, r12
lsls r0, r1
orrs r5, r0
_080B9D46:
adds r4, 0x1
cmp r4, r2
blt _080B9D32
_080B9D4C:
mov r2, r8
movs r1, 0
ldrsh r0, [r2, r1]
cmp r0, 0x1
bne _080B9D5A
movs r0, 0xE
orrs r5, r0
_080B9D5A:
lsls r4, r6, 2
adds r4, r6
lsls r4, 3
add r4, r9
lsrs r0, r5, 16
strh r0, [r4, 0x1A]
movs r0, 0xFF
ands r5, r0
strh r5, [r4, 0x1C]
ldrb r2, [r4, 0x10]
adds r0, r6, 0
movs r1, 0
bl sub_80B9DA0
ldr r0, _080B9D9C @ =sub_80B9DF0
str r0, [r4]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080B9D88: .4byte gTasks
_080B9D8C: .4byte gBattleAnimArgs
_080B9D90: .4byte gBattlersCount
_080B9D94: .4byte gBattleAnimAttacker
_080B9D98: .4byte gBattleAnimTarget
_080B9D9C: .4byte sub_80B9DF0
thumb_func_end sub_80B9CE4
thumb_func_start sub_80B9DA0
sub_80B9DA0: @ 80B9DA0
push {r4,r5,lr}
sub sp, 0x4
adds r5, r1, 0
adds r3, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r5, 24
lsrs r5, 24
lsls r3, 24
lsrs r3, 24
ldr r1, _080B9DEC @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldrh r0, [r4, 0x1A]
lsls r0, 16
ldrh r1, [r4, 0x1C]
orrs r0, r1
movs r1, 0xA
ldrsb r1, [r4, r1]
ldrh r2, [r4, 0x12]
str r2, [sp]
adds r2, r5, 0
bl BeginNormalPaletteFade
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x18]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x18]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9DEC: .4byte gTasks
thumb_func_end sub_80B9DA0
thumb_func_start sub_80B9DF0
sub_80B9DF0: @ 80B9DF0
push {r4-r6,lr}
lsls r0, 24
lsrs r3, r0, 24
adds r4, r3, 0
ldr r0, _080B9E28 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9E52
ldr r1, _080B9E2C @ =gTasks
lsls r2, r3, 2
adds r0, r2, r3
lsls r0, 3
adds r3, r0, r1
movs r5, 0xC
ldrsh r0, [r3, r5]
adds r6, r1, 0
adds r5, r2, 0
cmp r0, 0
ble _080B9E4C
movs r1, 0x18
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080B9E30
ldrb r1, [r3, 0xE]
ldrb r2, [r3, 0x10]
b _080B9E34
.align 2, 0
_080B9E28: .4byte gPaletteFade
_080B9E2C: .4byte gTasks
_080B9E30:
ldrb r1, [r3, 0x10]
ldrb r2, [r3, 0xE]
_080B9E34:
adds r0, r5, r4
lsls r0, 3
adds r0, r6
movs r3, 0xC
ldrsh r0, [r0, r3]
cmp r0, 0x1
bne _080B9E44
movs r2, 0
_080B9E44:
adds r0, r4, 0
bl sub_80B9DA0
b _080B9E52
_080B9E4C:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080B9E52:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B9DF0
thumb_func_start sub_80B9E58
sub_80B9E58: @ 80B9E58
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080B9E9C @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldr r3, _080B9EA0 @ =gBattleAnimArgs
ldrh r1, [r3]
movs r5, 0
strh r1, [r4, 0x8]
ldrh r1, [r3, 0x2]
strh r1, [r4, 0xA]
ldrh r1, [r3, 0x4]
strh r1, [r4, 0xC]
ldrh r1, [r3, 0x6]
strh r1, [r4, 0xE]
ldrh r2, [r3, 0x8]
strh r2, [r4, 0x10]
ldrh r1, [r3, 0xA]
strh r1, [r4, 0x12]
strh r5, [r4, 0x18]
lsls r2, 24
lsrs r2, 24
movs r1, 0
bl sub_80B9EA8
ldr r0, _080B9EA4 @ =sub_80B9F04
str r0, [r4]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9E9C: .4byte gTasks
_080B9EA0: .4byte gBattleAnimArgs
_080B9EA4: .4byte sub_80B9F04
thumb_func_end sub_80B9E58
thumb_func_start sub_80B9EA8
sub_80B9EA8: @ 80B9EA8
push {r4-r6,lr}
sub sp, 0x4
adds r5, r1, 0
adds r6, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r5, 24
lsrs r5, 24
lsls r6, 24
lsrs r6, 24
ldr r1, _080B9F00 @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldrh r0, [r4, 0x8]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r2, 0x1
lsls r2, r0
movs r1, 0xA
ldrsb r1, [r4, r1]
ldrh r0, [r4, 0x12]
str r0, [sp]
adds r0, r2, 0
adds r2, r5, 0
adds r3, r6, 0
bl BeginNormalPaletteFade
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x18]
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0x18]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080B9F00: .4byte gTasks
thumb_func_end sub_80B9EA8
thumb_func_start sub_80B9F04
sub_80B9F04: @ 80B9F04
push {r4-r6,lr}
lsls r0, 24
lsrs r3, r0, 24
adds r4, r3, 0
ldr r0, _080B9F3C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080B9F66
ldr r1, _080B9F40 @ =gTasks
lsls r2, r3, 2
adds r0, r2, r3
lsls r0, 3
adds r3, r0, r1
movs r5, 0xC
ldrsh r0, [r3, r5]
adds r6, r1, 0
adds r5, r2, 0
cmp r0, 0
ble _080B9F60
movs r1, 0x18
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080B9F44
ldrb r1, [r3, 0xE]
ldrb r2, [r3, 0x10]
b _080B9F48
.align 2, 0
_080B9F3C: .4byte gPaletteFade
_080B9F40: .4byte gTasks
_080B9F44:
ldrb r1, [r3, 0x10]
ldrb r2, [r3, 0xE]
_080B9F48:
adds r0, r5, r4
lsls r0, 3
adds r0, r6
movs r3, 0xC
ldrsh r0, [r0, r3]
cmp r0, 0x1
bne _080B9F58
movs r2, 0
_080B9F58:
adds r0, r4, 0
bl sub_80B9EA8
b _080B9F66
_080B9F60:
adds r0, r4, 0
bl DestroyAnimVisualTask
_080B9F66:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80B9F04
thumb_func_start sub_80B9F6C
sub_80B9F6C: @ 80B9F6C
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
ldr r1, _080B9FCC @ =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldr r5, _080B9FD0 @ =gBattleAnimArgs
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x8]
ldrh r0, [r5, 0x2]
strh r0, [r4, 0xA]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0xC]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0xE]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x10]
ldrh r0, [r5, 0xA]
strh r0, [r4, 0x12]
ldrh r0, [r5, 0xC]
strh r0, [r4, 0x14]
ldrh r0, [r5]
strh r0, [r4, 0x16]
ldrh r0, [r5]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r1, 0x1
lsls r1, r0
ldrb r3, [r5, 0x8]
ldrh r0, [r5, 0x6]
str r0, [sp]
adds r0, r1, 0
movs r1, 0
adds r2, r3, 0
bl BeginNormalPaletteFade
ldr r0, _080B9FD4 @ =sub_80B9FD8
str r0, [r4]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080B9FCC: .4byte gTasks
_080B9FD0: .4byte gBattleAnimArgs
_080B9FD4: .4byte sub_80B9FD8
thumb_func_end sub_80B9F6C
thumb_func_start sub_80B9FD8
sub_80B9FD8: @ 80B9FD8
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080B9FFC @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
ldrh r1, [r4, 0x8]
movs r2, 0x8
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080BA000
subs r0, r1, 0x1
strh r0, [r4, 0x8]
b _080BA084
.align 2, 0
_080B9FFC: .4byte gTasks
_080BA000:
ldr r0, _080BA01C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080BA084
movs r3, 0xC
ldrsh r0, [r4, r3]
cmp r0, 0
bne _080BA024
ldr r0, _080BA020 @ =sub_80BA090
str r0, [r4]
b _080BA084
.align 2, 0
_080BA01C: .4byte gPaletteFade
_080BA020: .4byte sub_80BA090
_080BA024:
ldrh r0, [r4, 0x16]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r2, 0x1
lsls r2, r0
ldrh r1, [r4, 0xA]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080BA052
ldrb r3, [r4, 0x10]
ldrh r0, [r4, 0xE]
str r0, [sp]
adds r0, r2, 0
movs r1, 0
adds r2, r3, 0
bl BeginNormalPaletteFade
b _080BA062
_080BA052:
ldrb r3, [r4, 0x14]
ldrh r0, [r4, 0x12]
str r0, [sp]
adds r0, r2, 0
movs r1, 0
adds r2, r3, 0
bl BeginNormalPaletteFade
_080BA062:
ldr r0, _080BA08C @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0xA]
movs r3, 0x80
lsls r3, 1
adds r2, r3, 0
eors r0, r2
strh r0, [r1, 0xA]
movs r2, 0xFF
ands r0, r2
strh r0, [r1, 0x8]
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
_080BA084:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA08C: .4byte gTasks
thumb_func_end sub_80B9FD8
thumb_func_start sub_80BA090
sub_80BA090: @ 80BA090
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080BA0E0 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _080BA0D6
ldr r1, _080BA0E4 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x16]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r1, 0x1
lsls r1, r0
str r5, [sp]
adds r0, r1, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl BeginNormalPaletteFade
adds r0, r4, 0
bl DestroyAnimVisualTask
_080BA0D6:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA0E0: .4byte gPaletteFade
_080BA0E4: .4byte gTasks
thumb_func_end sub_80BA090
thumb_func_start sub_80BA0E8
sub_80BA0E8: @ 80BA0E8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r2, 0
ldr r0, _080BA160 @ =gBattleAnimAttacker
ldrb r6, [r0]
ldr r0, _080BA164 @ =gBattleAnimTarget
ldrb r7, [r0]
ldr r4, _080BA168 @ =gBattleAnimArgs
ldrh r1, [r4]
movs r5, 0x80
lsls r5, 1
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _080BA122
str r2, [sp]
str r2, [sp, 0x4]
str r2, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r3, 0
bl sub_8075BE8
adds r2, r0, 0
_080BA122:
ldrh r1, [r4, 0x2]
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _080BA134
movs r0, 0x80
lsls r0, 9
lsls r0, r6
orrs r2, r0
_080BA134:
ldrh r1, [r4, 0x4]
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _080BA146
movs r0, 0x80
lsls r0, 9
lsls r0, r7
orrs r2, r0
_080BA146:
adds r0, r2, 0
bl InvertPlttBuffer
mov r0, r8
bl DestroyAnimVisualTask
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BA160: .4byte gBattleAnimAttacker
_080BA164: .4byte gBattleAnimTarget
_080BA168: .4byte gBattleAnimArgs
thumb_func_end sub_80BA0E8
thumb_func_start sub_80BA16C
sub_80BA16C: @ 80BA16C
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
movs r5, 0
ldr r1, _080BA260 @ =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BA1AE
ldr r1, _080BA264 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r4, 0xC]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xE]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x10]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0xA]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x12]
ldrh r0, [r1, 0xA]
strh r0, [r4, 0x14]
ldrh r0, [r1, 0xC]
strh r0, [r4, 0x16]
_080BA1AE:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
ldr r0, _080BA268 @ =gBattleAnimAttacker
ldrb r0, [r0]
mov r9, r0
ldr r0, _080BA26C @ =gBattleAnimTarget
ldrb r0, [r0]
mov r10, r0
ldrh r1, [r4, 0xC]
movs r7, 0x80
lsls r7, 1
adds r0, r7, 0
ands r0, r1
cmp r0, 0
beq _080BA1D0
ldr r5, _080BA270 @ =0x0000ffff
_080BA1D0:
movs r6, 0x1
adds r0, r6, 0
ands r0, r1
cmp r0, 0
beq _080BA200
ldr r2, _080BA274 @ =gSprites
ldr r0, _080BA278 @ =gUnknown_3004FF0
add r0, r9
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x14
adds r0, r2
ldr r0, [r0]
ldrh r0, [r0, 0x2]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r1, r6, 0
lsls r1, r0
lsls r1, 16
orrs r5, r1
_080BA200:
ldrh r1, [r4, 0xE]
adds r0, r7, 0
ands r0, r1
cmp r0, 0
beq _080BA214
adds r0, r6, 0
mov r2, r9
lsls r0, r2
lsls r0, 16
orrs r5, r0
_080BA214:
ldrh r1, [r4, 0x10]
adds r0, r7, 0
ands r0, r1
cmp r0, 0
beq _080BA228
adds r0, r6, 0
mov r1, r10
lsls r0, r1
lsls r0, 16
orrs r5, r0
_080BA228:
movs r1, 0x12
ldrsb r1, [r4, r1]
movs r2, 0x14
ldrsb r2, [r4, r2]
movs r3, 0x16
ldrsb r3, [r4, r3]
adds r0, r5, 0
bl TintPlttBuffer
movs r2, 0x8
ldrsh r1, [r4, r2]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r1, r0
bne _080BA252
adds r0, r5, 0
bl UnfadePlttBuffer
mov r0, r8
bl DestroyAnimVisualTask
_080BA252:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BA260: .4byte gTasks
_080BA264: .4byte gBattleAnimArgs
_080BA268: .4byte gBattleAnimAttacker
_080BA26C: .4byte gBattleAnimTarget
_080BA270: .4byte 0x0000ffff
_080BA274: .4byte gSprites
_080BA278: .4byte gUnknown_3004FF0
thumb_func_end sub_80BA16C
thumb_func_start sub_80BA27C
sub_80BA27C: @ 80BA27C
push {r4,lr}
adds r4, r0, 0
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r1, _080BA2B0 @ =gBattleAnimArgs
ldrh r0, [r1]
negs r0, r0
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
strh r0, [r4, 0x32]
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x34]
movs r2, 0x6
ldrsh r0, [r1, r2]
cmp r0, 0x1
beq _080BA2C4
cmp r0, 0x1
bgt _080BA2B4
cmp r0, 0
beq _080BA2BA
b _080BA2DC
.align 2, 0
_080BA2B0: .4byte gBattleAnimArgs
_080BA2B4:
cmp r0, 0x2
beq _080BA2CC
b _080BA2DC
_080BA2BA:
ldr r1, _080BA2C0 @ =gBattle_BG3_X
b _080BA2CE
.align 2, 0
_080BA2C0: .4byte gBattle_BG3_X
_080BA2C4:
ldr r1, _080BA2C8 @ =gBattle_BG3_Y
b _080BA2CE
.align 2, 0
_080BA2C8: .4byte gBattle_BG3_Y
_080BA2CC:
ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
_080BA2CE:
adds r0, r4, 0
bl StoreSpriteCallbackInData6
b _080BA2E4
.align 2, 0
_080BA2D8: .4byte gSpriteCoordOffsetX
_080BA2DC:
ldr r1, _080BA314 @ =gSpriteCoordOffsetY
adds r0, r4, 0
bl StoreSpriteCallbackInData6
_080BA2E4:
movs r0, 0x3A
ldrsh r1, [r4, r0]
movs r2, 0x3C
ldrsh r0, [r4, r2]
lsls r0, 16
orrs r1, r0
ldrh r0, [r1]
strh r0, [r4, 0x36]
ldr r0, _080BA318 @ =gBattleAnimArgs
ldrh r0, [r0, 0x6]
strh r0, [r4, 0x38]
subs r0, 0x2
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _080BA308
bl sub_80BA3CC
_080BA308:
ldr r0, _080BA31C @ =sub_80BA320
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA314: .4byte gSpriteCoordOffsetY
_080BA318: .4byte gBattleAnimArgs
_080BA31C: .4byte sub_80BA320
thumb_func_end sub_80BA27C
thumb_func_start sub_80BA320
sub_80BA320: @ 80BA320
push {r4-r7,lr}
adds r3, r0, 0
ldrh r1, [r3, 0x34]
movs r2, 0x34
ldrsh r0, [r3, r2]
cmp r0, 0
ble _080BA362
subs r0, r1, 0x1
strh r0, [r3, 0x34]
ldrh r1, [r3, 0x30]
movs r2, 0x30
ldrsh r0, [r3, r2]
cmp r0, 0
ble _080BA342
subs r0, r1, 0x1
strh r0, [r3, 0x30]
b _080BA3BA
_080BA342:
ldrh r0, [r3, 0x32]
strh r0, [r3, 0x30]
movs r0, 0x3A
ldrsh r1, [r3, r0]
movs r2, 0x3C
ldrsh r0, [r3, r2]
lsls r0, 16
orrs r1, r0
ldrh r0, [r3, 0x2E]
ldrh r2, [r1]
adds r0, r2
strh r0, [r1]
ldrh r0, [r3, 0x2E]
negs r0, r0
strh r0, [r3, 0x2E]
b _080BA3BA
_080BA362:
movs r0, 0x3A
ldrsh r1, [r3, r0]
movs r2, 0x3C
ldrsh r0, [r3, r2]
lsls r0, 16
orrs r1, r0
ldrh r0, [r3, 0x36]
strh r0, [r1]
ldrh r0, [r3, 0x38]
subs r0, 0x2
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _080BA3B4
movs r4, 0
ldr r5, _080BA3C0 @ =gBattlersCount
ldrb r0, [r5]
cmp r4, r0
bcs _080BA3B4
ldr r2, _080BA3C4 @ =gSprites
mov r12, r2
ldr r6, _080BA3C8 @ =gUnknown_2023D44
movs r7, 0x3
negs r7, r7
_080BA392:
adds r0, r4, r6
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
add r1, r12
adds r1, 0x3E
ldrb r2, [r1]
adds r0, r7, 0
ands r0, r2
strb r0, [r1]
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r5]
cmp r4, r0
bcc _080BA392
_080BA3B4:
adds r0, r3, 0
bl DestroyAnimSprite
_080BA3BA:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BA3C0: .4byte gBattlersCount
_080BA3C4: .4byte gSprites
_080BA3C8: .4byte gUnknown_2023D44
thumb_func_end sub_80BA320
thumb_func_start sub_80BA3CC
sub_80BA3CC: @ 80BA3CC
push {r4-r6,lr}
ldr r6, _080BA440 @ =gSprites
ldr r4, _080BA444 @ =gUnknown_2023D44
ldr r5, _080BA448 @ =gBattleAnimAttacker
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r6
adds r1, 0x3E
ldrb r3, [r1]
movs r2, 0x3
negs r2, r2
adds r0, r2, 0
ands r0, r3
strb r0, [r1]
ldr r3, _080BA44C @ =gBattleAnimTarget
ldrb r0, [r3]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
ands r2, r1
strb r2, [r0]
ldr r0, _080BA450 @ =gBattleAnimArgs
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0x2
bne _080BA454
ldrb r0, [r5]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x2
orrs r1, r2
strb r1, [r0]
ldrb r0, [r3]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
b _080BA470
.align 2, 0
_080BA440: .4byte gSprites
_080BA444: .4byte gUnknown_2023D44
_080BA448: .4byte gBattleAnimAttacker
_080BA44C: .4byte gBattleAnimTarget
_080BA450: .4byte gBattleAnimArgs
_080BA454:
cmp r0, 0
bne _080BA45C
ldrb r0, [r5]
b _080BA45E
_080BA45C:
ldrb r0, [r3]
_080BA45E:
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x2
_080BA470:
orrs r1, r2
strb r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80BA3CC
thumb_func_start sub_80BA47C
sub_80BA47C: @ 80BA47C
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080BA4BC @ =gTasks
lsls r2, r0, 2
adds r2, r0
lsls r2, 3
adds r2, r1
ldr r3, _080BA4C0 @ =gBattleAnimArgs
ldrh r1, [r3]
strh r1, [r2, 0x8]
ldrh r1, [r3, 0x2]
strh r1, [r2, 0xA]
ldrh r1, [r3, 0x4]
strh r1, [r2, 0xC]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x18]
ldr r4, _080BA4C4 @ =gBattle_BG3_X
ldrh r1, [r3]
strh r1, [r4]
ldr r4, _080BA4C8 @ =gBattle_BG3_Y
ldrh r1, [r3, 0x2]
strh r1, [r4]
ldr r1, _080BA4CC @ =sub_80BA4D0
str r1, [r2]
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA4BC: .4byte gTasks
_080BA4C0: .4byte gBattleAnimArgs
_080BA4C4: .4byte gBattle_BG3_X
_080BA4C8: .4byte gBattle_BG3_Y
_080BA4CC: .4byte sub_80BA4D0
thumb_func_end sub_80BA47C
thumb_func_start sub_80BA4D0
sub_80BA4D0: @ 80BA4D0
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080BA500 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r3, r0, r1
ldrh r2, [r3, 0xE]
movs r4, 0xE
ldrsh r0, [r3, r4]
mov r12, r1
cmp r0, 0
bne _080BA556
ldr r0, _080BA504 @ =gBattle_BG3_X
ldrh r2, [r0]
movs r7, 0x8
ldrsh r1, [r3, r7]
adds r6, r0, 0
cmp r2, r1
bne _080BA508
ldrh r0, [r3, 0x8]
negs r0, r0
b _080BA50A
.align 2, 0
_080BA500: .4byte gTasks
_080BA504: .4byte gBattle_BG3_X
_080BA508:
ldrh r0, [r3, 0x8]
_080BA50A:
strh r0, [r6]
ldr r2, _080BA528 @ =gBattle_BG3_Y
ldrh r3, [r2]
lsls r1, r5, 2
adds r0, r1, r5
lsls r0, 3
mov r7, r12
adds r4, r0, r7
movs r7, 0xA
ldrsh r0, [r4, r7]
cmn r3, r0
bne _080BA52C
movs r0, 0
b _080BA530
.align 2, 0
_080BA528: .4byte gBattle_BG3_Y
_080BA52C:
ldrh r0, [r4, 0xA]
negs r0, r0
_080BA530:
strh r0, [r2]
adds r0, r1, r5
lsls r0, 3
add r0, r12
ldrh r1, [r0, 0x18]
strh r1, [r0, 0xE]
ldrh r1, [r0, 0xC]
subs r1, 0x1
strh r1, [r0, 0xC]
lsls r1, 16
asrs r1, 16
cmp r1, 0
bne _080BA55A
strh r1, [r6]
strh r1, [r2]
adds r0, r5, 0
bl DestroyAnimVisualTask
b _080BA55A
_080BA556:
subs r0, r2, 0x1
strh r0, [r3, 0xE]
_080BA55A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80BA4D0
thumb_func_start sub_80BA560
sub_80BA560: @ 80BA560
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080BA580 @ =gBattleAnimArgs
ldrb r1, [r4, 0x6]
bl StartSpriteAffineAnim
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BA584
adds r0, r5, 0
movs r1, 0x1
bl sub_8075160
b _080BA58C
.align 2, 0
_080BA580: .4byte gBattleAnimArgs
_080BA584:
adds r0, r5, 0
movs r1, 0x1
bl sub_8075114
_080BA58C:
ldr r0, _080BA5A0 @ =sub_8074F50
str r0, [r5, 0x1C]
ldr r1, _080BA5A4 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA5A0: .4byte sub_8074F50
_080BA5A4: .4byte DestroyAnimSprite
thumb_func_end sub_80BA560
thumb_func_start sub_80BA5A8
sub_80BA5A8: @ 80BA5A8
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080BA5C8 @ =gBattleAnimArgs
ldrb r1, [r4, 0x6]
bl StartSpriteAffineAnim
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BA5CC
adds r0, r5, 0
movs r1, 0x1
bl sub_8075160
b _080BA5D4
.align 2, 0
_080BA5C8: .4byte gBattleAnimArgs
_080BA5CC:
adds r0, r5, 0
movs r1, 0x1
bl sub_8075114
_080BA5D4:
ldr r0, _080BA5EC @ =gBattleAnimArgs
ldrh r0, [r0, 0x8]
strh r0, [r5, 0x2E]
ldr r0, _080BA5F0 @ =sub_8074F50
str r0, [r5, 0x1C]
ldr r1, _080BA5F4 @ =sub_80B1D3C
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA5EC: .4byte gBattleAnimArgs
_080BA5F0: .4byte sub_8074F50
_080BA5F4: .4byte sub_80B1D3C
thumb_func_end sub_80BA5A8
thumb_func_start sub_80BA5F8
sub_80BA5F8: @ 80BA5F8
push {r4,lr}
adds r4, r0, 0
ldr r0, _080BA628 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080BA61C
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BA61C
ldr r1, _080BA62C @ =gBattleAnimArgs
ldrh r0, [r1, 0x2]
negs r0, r0
strh r0, [r1, 0x2]
_080BA61C:
adds r0, r4, 0
bl sub_80BA560
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA628: .4byte gBattleAnimAttacker
_080BA62C: .4byte gBattleAnimArgs
thumb_func_end sub_80BA5F8
thumb_func_start sub_80BA630
sub_80BA630: @ 80BA630
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080BA668 @ =gBattleAnimArgs
movs r0, 0x2
ldrsh r1, [r5, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080BA64C
bl Random
movs r1, 0x3
ands r1, r0
strh r1, [r5, 0x2]
_080BA64C:
ldrb r1, [r5, 0x2]
adds r0, r4, 0
bl StartSpriteAffineAnim
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080BA66C
adds r0, r4, 0
movs r1, 0
bl sub_8075160
b _080BA674
.align 2, 0
_080BA668: .4byte gBattleAnimArgs
_080BA66C:
adds r0, r4, 0
movs r1, 0
bl sub_8075114
_080BA674:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x30
bl __umodsi3
ldr r1, _080BA6B8 @ =0x0000ffe8
adds r0, r1
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x18
bl __umodsi3
ldr r1, _080BA6BC @ =0x0000fff4
adds r0, r1
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldr r1, _080BA6C0 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080BA6C4 @ =sub_8074F50
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA6B8: .4byte 0x0000ffe8
_080BA6BC: .4byte 0x0000fff4
_080BA6C0: .4byte move_anim_8074EE0
_080BA6C4: .4byte sub_8074F50
thumb_func_end sub_80BA630
thumb_func_start sub_80BA6C8
sub_80BA6C8: @ 80BA6C8
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _080BA728 @ =gBattleAnimArgs
ldrb r0, [r5]
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x2E]
ldr r2, _080BA72C @ =gSprites
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x24]
ldrh r0, [r0, 0x20]
adds r1, r0
strh r1, [r4, 0x20]
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x26]
ldrh r0, [r0, 0x22]
adds r1, r0
strh r1, [r4, 0x22]
ldrh r0, [r5, 0x2]
strh r0, [r4, 0x24]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x26]
ldrb r1, [r5, 0x6]
adds r0, r4, 0
bl StartSpriteAffineAnim
ldr r1, _080BA730 @ =move_anim_8074EE0
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080BA734 @ =sub_8074F50
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA728: .4byte gBattleAnimArgs
_080BA72C: .4byte gSprites
_080BA730: .4byte move_anim_8074EE0
_080BA734: .4byte sub_8074F50
thumb_func_end sub_80BA6C8
thumb_func_start sub_80BA738
sub_80BA738: @ 80BA738
push {r4,lr}
adds r4, r0, 0
ldr r0, _080BA750 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080BA754
adds r0, r4, 0
movs r1, 0x1
bl sub_8075160
b _080BA75C
.align 2, 0
_080BA750: .4byte gBattleAnimArgs
_080BA754:
adds r0, r4, 0
movs r1, 0x1
bl sub_8075114
_080BA75C:
ldr r0, _080BA774 @ =gBattleAnimArgs
ldrh r0, [r0, 0x6]
strh r0, [r4, 0x2E]
ldr r1, _080BA778 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080BA77C @ =sub_8074C44
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA774: .4byte gBattleAnimArgs
_080BA778: .4byte DestroyAnimSprite
_080BA77C: .4byte sub_8074C44
thumb_func_end sub_80BA738
thumb_func_start sub_80BA780
sub_80BA780: @ 80BA780
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _080BA7A0 @ =gBattleAnimArgs
ldrb r1, [r4, 0x6]
bl StartSpriteAffineAnim
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BA7A4
adds r0, r5, 0
movs r1, 0x1
bl sub_8075160
b _080BA7AC
.align 2, 0
_080BA7A0: .4byte gBattleAnimArgs
_080BA7A4:
adds r0, r5, 0
movs r1, 0x1
bl sub_8075114
_080BA7AC:
ldr r0, _080BA7B8 @ =sub_80BA7BC
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BA7B8: .4byte sub_80BA7BC
thumb_func_end sub_80BA780
thumb_func_start sub_80BA7BC
sub_80BA7BC: @ 80BA7BC
push {lr}
adds r3, r0, 0
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, 0x2E]
adds r1, r0, 0x1
strh r1, [r3, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
ble _080BA7F2
adds r0, r3, 0
bl DestroyAnimSprite
_080BA7F2:
pop {r0}
bx r0
thumb_func_end sub_80BA7BC
thumb_func_start sub_80BA7F8
sub_80BA7F8: @ 80BA7F8
push {r4-r6,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldr r4, _080BA838 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r4, r1]
bl sub_80B9A14
adds r6, r0, 0
ldrh r3, [r4]
lsls r3, 16
asrs r0, r3, 23
movs r4, 0x1
ands r0, r4
asrs r1, r3, 24
ands r1, r4
asrs r2, r3, 25
ands r2, r4
asrs r3, 26
ands r3, r4
bl sub_8075CB8
orrs r6, r0
adds r0, r5, 0
adds r1, r6, 0
bl sub_80BAA4C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BA838: .4byte gBattleAnimArgs
thumb_func_end sub_80BA7F8
thumb_func_start sub_80BA83C
sub_80BA83C: @ 80BA83C
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
lsrs r7, r0, 24
mov r1, sp
movs r0, 0xFF
strb r0, [r1, 0x1]
movs r0, 0x1
bl sub_80B9A14
adds r5, r0, 0
ldr r0, _080BA868 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x7
bhi _080BA8E6
lsls r0, 2
ldr r1, _080BA86C @ =_080BA870
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BA868: .4byte gBattleAnimArgs
_080BA86C: .4byte _080BA870
.align 2, 0
_080BA870:
.4byte _080BA892
.4byte _080BA89E
.4byte _080BA890
.4byte _080BA89C
.4byte _080BA8AC
.4byte _080BA8C4
.4byte _080BA8CC
.4byte _080BA8D8
_080BA890:
movs r5, 0
_080BA892:
mov r0, sp
ldr r1, _080BA898 @ =gBattleAnimAttacker
b _080BA8A2
.align 2, 0
_080BA898: .4byte gBattleAnimAttacker
_080BA89C:
movs r5, 0
_080BA89E:
mov r0, sp
ldr r1, _080BA8A8 @ =gBattleAnimTarget
_080BA8A2:
ldrb r1, [r1]
strb r1, [r0]
b _080BA8E6
.align 2, 0
_080BA8A8: .4byte gBattleAnimTarget
_080BA8AC:
mov r1, sp
ldr r0, _080BA8BC @ =gBattleAnimAttacker
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _080BA8C0 @ =gBattleAnimTarget
ldrb r0, [r0]
strb r0, [r1, 0x1]
b _080BA8E6
.align 2, 0
_080BA8BC: .4byte gBattleAnimAttacker
_080BA8C0: .4byte gBattleAnimTarget
_080BA8C4:
mov r1, sp
movs r0, 0xFF
strb r0, [r1]
b _080BA8E6
_080BA8CC:
movs r5, 0
mov r2, sp
ldr r0, _080BA8D4 @ =gBattleAnimAttacker
b _080BA8DE
.align 2, 0
_080BA8D4: .4byte gBattleAnimAttacker
_080BA8D8:
movs r5, 0
mov r2, sp
ldr r0, _080BA930 @ =gBattleAnimTarget
_080BA8DE:
ldrb r0, [r0]
movs r1, 0x2
eors r0, r1
strb r0, [r2]
_080BA8E6:
movs r4, 0
mov r6, sp
_080BA8EA:
ldrb r0, [r6]
cmp r4, r0
beq _080BA914
ldrb r0, [r6, 0x1]
cmp r4, r0
beq _080BA914
adds r0, r4, 0
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080BA914
adds r0, r4, 0
bl sub_8075D80
lsls r0, 24
lsrs r0, 24
movs r1, 0x80
lsls r1, 9
lsls r1, r0
orrs r5, r1
_080BA914:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x3
bls _080BA8EA
adds r0, r7, 0
adds r1, r5, 0
bl sub_80BAA4C
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BA930: .4byte gBattleAnimTarget
thumb_func_end sub_80BA83C
thumb_func_start sub_80BA934
sub_80BA934: @ 80BA934
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080BA958 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
bl sub_80B9A14
adds r2, r0, 0
ldr r0, _080BA95C @ =gUnknown_2022B50
ldrb r0, [r0]
cmp r0, 0x9
bhi _080BAA0A
lsls r0, 2
ldr r1, _080BA960 @ =_080BA964
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BA958: .4byte gBattleAnimArgs
_080BA95C: .4byte gUnknown_2022B50
_080BA960: .4byte _080BA964
.align 2, 0
_080BA964:
.4byte _080BA98C
.4byte _080BA99C
.4byte _080BA9A8
.4byte _080BA9B8
.4byte _080BA9C4
.4byte _080BA9D4
.4byte _080BA9E4
.4byte _080BA9F4
.4byte _080BAA04
.4byte _080BAA04
_080BA98C:
ldr r1, _080BA994 @ =gBattleAnimArgs
ldr r0, _080BA998 @ =0x00000b0c
b _080BAA08
.align 2, 0
_080BA994: .4byte gBattleAnimArgs
_080BA998: .4byte 0x00000b0c
_080BA99C:
ldr r1, _080BA9A4 @ =gBattleAnimArgs
movs r0, 0x9E
lsls r0, 4
b _080BAA08
.align 2, 0
_080BA9A4: .4byte gBattleAnimArgs
_080BA9A8:
ldr r1, _080BA9B0 @ =gBattleAnimArgs
ldr r0, _080BA9B4 @ =0x00002f1e
b _080BAA08
.align 2, 0
_080BA9B0: .4byte gBattleAnimArgs
_080BA9B4: .4byte 0x00002f1e
_080BA9B8:
ldr r1, _080BA9C0 @ =gBattleAnimArgs
movs r0, 0x90
lsls r0, 7
b _080BAA08
.align 2, 0
_080BA9C0: .4byte gBattleAnimArgs
_080BA9C4:
ldr r1, _080BA9CC @ =gBattleAnimArgs
ldr r0, _080BA9D0 @ =0x00007ecb
b _080BAA08
.align 2, 0
_080BA9CC: .4byte gBattleAnimArgs
_080BA9D0: .4byte 0x00007ecb
_080BA9D4:
ldr r1, _080BA9DC @ =gBattleAnimArgs
ldr r0, _080BA9E0 @ =0x00007ecb
b _080BAA08
.align 2, 0
_080BA9DC: .4byte gBattleAnimArgs
_080BA9E0: .4byte 0x00007ecb
_080BA9E4:
ldr r1, _080BA9EC @ =gBattleAnimArgs
ldr r0, _080BA9F0 @ =0x00002a16
b _080BAA08
.align 2, 0
_080BA9EC: .4byte gBattleAnimArgs
_080BA9F0: .4byte 0x00002a16
_080BA9F4:
ldr r1, _080BA9FC @ =gBattleAnimArgs
ldr r0, _080BAA00 @ =0x00000d2e
b _080BAA08
.align 2, 0
_080BA9FC: .4byte gBattleAnimArgs
_080BAA00: .4byte 0x00000d2e
_080BAA04:
ldr r1, _080BAA18 @ =gBattleAnimArgs
ldr r0, _080BAA1C @ =0x00007fff
_080BAA08:
strh r0, [r1, 0x8]
_080BAA0A:
adds r0, r4, 0
adds r1, r2, 0
bl sub_80BAA4C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BAA18: .4byte gBattleAnimArgs
_080BAA1C: .4byte 0x00007fff
thumb_func_end sub_80BA934
thumb_func_start sub_80BAA20
sub_80BAA20: @ 80BAA20
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080BAA48 @ =gBattleAnimArgs
ldrh r0, [r0]
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
movs r1, 0x1
lsls r1, r0
adds r0, r4, 0
bl sub_80BAA4C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BAA48: .4byte gBattleAnimArgs
thumb_func_end sub_80BAA20
thumb_func_start sub_80BAA4C
sub_80BAA4C: @ 80BAA4C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r3, _080BAA84 @ =gTasks
lsls r2, r0, 2
adds r2, r0
lsls r2, 3
adds r2, r3
strh r1, [r2, 0x8]
lsrs r1, 16
strh r1, [r2, 0xA]
ldr r3, _080BAA88 @ =gBattleAnimArgs
ldrh r1, [r3, 0x2]
strh r1, [r2, 0xC]
ldrh r1, [r3, 0x4]
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x10]
ldrh r1, [r3, 0x8]
strh r1, [r2, 0x12]
ldrh r1, [r3, 0x4]
strh r1, [r2, 0x1C]
ldr r1, _080BAA8C @ =sub_80BAA90
str r1, [r2]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080BAA84: .4byte gTasks
_080BAA88: .4byte gBattleAnimArgs
_080BAA8C: .4byte sub_80BAA90
thumb_func_end sub_80BAA4C
thumb_func_start sub_80BAA90
sub_80BAA90: @ 80BAA90
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r7, r0, 24
movs r6, 0
ldr r2, _080BAB10 @ =gTasks
lsls r5, r7, 2
adds r0, r5, r7
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x1A]
mov r8, r0
movs r4, 0x1A
ldrsh r1, [r3, r4]
movs r4, 0xC
ldrsh r0, [r3, r4]
mov r9, r2
cmp r1, r0
bne _080BAB26
strh r6, [r3, 0x1A]
movs r0, 0x8
ldrsh r4, [r3, r0]
movs r1, 0xA
ldrsh r0, [r3, r1]
lsls r0, 16
orrs r4, r0
mov r8, r5
cmp r4, 0
beq _080BAAF2
adds r5, r3, 0
_080BAAD0:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _080BAAE4
ldrb r2, [r5, 0x1C]
ldrh r3, [r5, 0x12]
adds r0, r6, 0
movs r1, 0x10
bl BlendPalette
_080BAAE4:
adds r0, r6, 0
adds r0, 0x10
lsls r0, 16
lsrs r6, r0, 16
lsrs r4, 1
cmp r4, 0
bne _080BAAD0
_080BAAF2:
mov r4, r8
adds r0, r4, r7
lsls r0, 3
mov r1, r9
adds r2, r0, r1
ldrh r0, [r2, 0x1C]
movs r4, 0x1C
ldrsh r3, [r2, r4]
movs r4, 0x10
ldrsh r1, [r2, r4]
cmp r3, r1
bge _080BAB14
adds r0, 0x1
strh r0, [r2, 0x1C]
b _080BAB2C
.align 2, 0
_080BAB10: .4byte gTasks
_080BAB14:
cmp r3, r1
ble _080BAB1E
subs r0, 0x1
strh r0, [r2, 0x1C]
b _080BAB2C
_080BAB1E:
adds r0, r7, 0
bl DestroyAnimVisualTask
b _080BAB2C
_080BAB26:
mov r0, r8
adds r0, 0x1
strh r0, [r3, 0x1A]
_080BAB2C:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80BAA90
thumb_func_start sub_80BAB38
sub_80BAB38: @ 80BAB38
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldr r4, _080BAB6C @ =gBattleAnimArgs
ldrb r0, [r4]
ldrb r1, [r4, 0x2]
ldrb r2, [r4, 0x4]
ldrb r3, [r4, 0x6]
ldrb r4, [r4, 0x8]
str r4, [sp]
bl BeginHardwarePaletteFade
ldr r1, _080BAB70 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
ldr r1, _080BAB74 @ =sub_80BAB78
str r1, [r0]
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BAB6C: .4byte gBattleAnimArgs
_080BAB70: .4byte gTasks
_080BAB74: .4byte sub_80BAB78
thumb_func_end sub_80BAB38
thumb_func_start sub_80BAB78
sub_80BAB78: @ 80BAB78
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080BAB94 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080BAB90
adds r0, r2, 0
bl DestroyAnimVisualTask
_080BAB90:
pop {r0}
bx r0
.align 2, 0
_080BAB94: .4byte gPaletteFade
thumb_func_end sub_80BAB78
thumb_func_start sub_80BAB98
sub_80BAB98: @ 80BAB98
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080BABC4 @ =gTasks
adds r1, r0
ldr r2, _080BABC8 @ =gBattleAnimArgs
ldrh r0, [r2]
movs r3, 0
strh r0, [r1, 0x8]
strh r3, [r1, 0xA]
ldrh r0, [r2, 0x2]
strh r0, [r1, 0xC]
ldrh r0, [r2, 0x4]
strh r0, [r1, 0xE]
ldrh r0, [r2, 0x6]
strh r0, [r1, 0x10]
strh r3, [r1, 0x12]
ldr r0, _080BABCC @ =sub_80BABD0
str r0, [r1]
bx lr
.align 2, 0
_080BABC4: .4byte gTasks
_080BABC8: .4byte gBattleAnimArgs
_080BABCC: .4byte sub_80BABD0
thumb_func_end sub_80BAB98
thumb_func_start sub_80BABD0
sub_80BABD0: @ 80BABD0
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080BABFC @ =gTasks
adds r4, r0, r1
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080BAC94
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080BAC00
subs r0, r1, 0x1
strh r0, [r4, 0xA]
b _080BACA2
.align 2, 0
_080BABFC: .4byte gTasks
_080BAC00:
ldrb r0, [r4, 0x8]
bl duplicate_obj_of_side_rel2move_in_transparent_mode
strh r0, [r4, 0x14]
lsls r0, 16
cmp r0, 0
blt _080BAC7E
ldr r6, _080BAC8C @ =gSprites
movs r1, 0x14
ldrsh r0, [r4, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r3, r1, r6
movs r2, 0x8
ldrsh r0, [r4, r2]
movs r2, 0x2
cmp r0, 0
beq _080BAC28
movs r2, 0x1
_080BAC28:
lsls r2, 2
ldrb r1, [r3, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
strb r0, [r3, 0x5]
movs r0, 0x14
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
ldrh r1, [r4, 0xE]
strh r1, [r0, 0x2E]
movs r2, 0x14
ldrsh r1, [r4, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
strh r5, [r0, 0x30]
movs r0, 0x14
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
movs r1, 0x5
strh r1, [r0, 0x32]
movs r2, 0x14
ldrsh r1, [r4, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r6, 0
adds r1, 0x1C
adds r0, r1
ldr r1, _080BAC90 @ =sub_80BACA8
str r1, [r0]
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
_080BAC7E:
ldrh r0, [r4, 0x10]
subs r0, 0x1
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xC]
strh r0, [r4, 0xA]
b _080BACA2
.align 2, 0
_080BAC8C: .4byte gSprites
_080BAC90: .4byte sub_80BACA8
_080BAC94:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BACA2
adds r0, r2, 0
bl DestroyAnimVisualTask
_080BACA2:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80BABD0
thumb_func_start sub_80BACA8
sub_80BACA8: @ 80BACA8
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080BACBC
subs r0, r1, 0x1
strh r0, [r4, 0x2E]
b _080BACE0
_080BACBC:
ldr r3, _080BACE8 @ =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 obj_delete_but_dont_free_vram
_080BACE0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BACE8: .4byte gTasks
thumb_func_end sub_80BACA8
thumb_func_start sub_80BACEC
sub_80BACEC: @ 80BACEC
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x14
lsls r0, 24
lsrs r0, 24
mov r9, r0
movs r7, 0
ldr r0, _080BAE20 @ =gUnknown_2022984
strh r7, [r0]
ldr r0, _080BAE24 @ =gUnknown_2022986
strh r7, [r0]
ldr r1, _080BAE28 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080BAE2C @ =0x00003f3d
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r1, _080BAE30 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
ldr r1, _080BAE34 @ =0x00000c08
movs r0, 0x52
bl SetGpuReg
movs r0, 0xA
bl GetGpuReg
add r4, sp, 0x10
strh r0, [r4]
ldrb r1, [r4]
movs r0, 0x4
negs r0, r0
mov r8, r0
ands r0, r1
strb r0, [r4]
mov r2, sp
adds r2, 0x11
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
strb r0, [r2]
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BAD7A
ldrb r1, [r4]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r4]
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
_080BAD7A:
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080BADFE
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BADFE
ldr r5, _080BAE38 @ =gBattleAnimAttacker
ldrb r0, [r5]
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _080BADAA
ldrb r0, [r5]
bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _080BADFE
_080BADAA:
ldrb r0, [r5]
movs r6, 0x2
eors r0, r6
bl sub_8072DF0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080BADFE
ldr r3, _080BAE3C @ =gSprites
ldr r1, _080BAE40 @ =gUnknown_2023D44
ldrb r0, [r5]
eors r0, r6
adds r0, r1
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldrb r1, [r4]
mov r0, r8
ands r0, r1
movs r1, 0x1
orrs r0, r1
strb r0, [r4]
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
movs r7, 0x1
_080BADFE:
ldr r4, _080BAE38 @ =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080BAE4C
ldr r1, _080BAE44 @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BAE48 @ =gEnemyParty
b _080BAE5C
.align 2, 0
_080BAE20: .4byte gUnknown_2022984
_080BAE24: .4byte gUnknown_2022986
_080BAE28: .4byte 0x00003f3f
_080BAE2C: .4byte 0x00003f3d
_080BAE30: .4byte 0x00003f42
_080BAE34: .4byte 0x00000c08
_080BAE38: .4byte gBattleAnimAttacker
_080BAE3C: .4byte gSprites
_080BAE40: .4byte gUnknown_2023D44
_080BAE44: .4byte gBattlerPartyIndexes
_080BAE48: .4byte gEnemyParty
_080BAE4C:
ldr r1, _080BAF0C @ =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BAF10 @ =gPlayerParty
_080BAE5C:
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r0, _080BAF14 @ =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r5, 0
adds r2, r4, 0
bl sub_8076E34
lsls r0, 24
lsrs r4, r0, 24
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap
bl sub_807543C
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080BAEAC
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
_080BAEAC:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080BAF20 @ =gUnknown_83E7CC8
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
adds r1, 0x1
movs r2, 0x2
bl LoadPalette
ldr r2, _080BAF24 @ =gBattle_BG1_X
ldr r0, _080BAF28 @ =gSprites
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x20]
negs r0, r0
adds r0, 0x20
strh r0, [r2]
ldr r2, _080BAF2C @ =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
strh r0, [r2]
ldr r1, _080BAF30 @ =gTasks
mov r2, r9
lsls r0, r2, 2
add r0, r9
lsls r0, 3
adds r0, r1
strh r4, [r0, 0x8]
strh r7, [r0, 0x14]
ldr r1, _080BAF34 @ =sub_80BAF38
str r1, [r0]
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BAF0C: .4byte gBattlerPartyIndexes
_080BAF10: .4byte gPlayerParty
_080BAF14: .4byte gBattleAnimAttacker
_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
_080BAF20: .4byte gUnknown_83E7CC8
_080BAF24: .4byte gBattle_BG1_X
_080BAF28: .4byte gSprites
_080BAF2C: .4byte gBattle_BG1_Y
_080BAF30: .4byte gTasks
_080BAF34: .4byte sub_80BAF38
thumb_func_end sub_80BACEC
thumb_func_start sub_80BAF38
sub_80BAF38: @ 80BAF38
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
ldr r1, _080BB068 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r1
ldrh r0, [r5, 0x1C]
adds r0, 0x4
movs r1, 0
mov r8, r1
strh r0, [r5, 0x1C]
ldr r7, _080BB06C @ =gBattle_BG1_Y
ldrh r2, [r7]
subs r1, r2, 0x4
strh r1, [r7]
lsls r0, 16
asrs r0, 16
cmp r0, 0x40
bne _080BB05A
mov r0, r8
strh r0, [r5, 0x1C]
adds r0, r2, 0
adds r0, 0x3C
strh r0, [r7]
ldrh r0, [r5, 0x1E]
adds r0, 0x1
strh r0, [r5, 0x1E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080BB05A
movs r0, 0
bl sub_8073128
ldr r0, _080BB070 @ =gUnknown_2022984
mov r1, r8
strh r1, [r0]
ldr r0, _080BB074 @ =gUnknown_2022986
strh r1, [r0]
ldr r4, _080BB078 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BAFCA
movs r0, 0xA
bl GetGpuReg
add r1, sp, 0x10
strh r0, [r1]
ldrb r2, [r1]
movs r0, 0xD
negs r0, r0
ands r0, r2
strb r0, [r1]
ldrh r1, [r1]
movs r0, 0xA
bl SetGpuReg
_080BAFCA:
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
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0
bl GetAnimBankSpriteId
ldr r4, _080BB07C @ =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_8075358
movs r1, 0x14
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080BB050
ldr r2, _080BB080 @ =gUnknown_2023D44
ldr r0, _080BB084 @ =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
adds r0, r2
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r4
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
_080BB050:
mov r2, r8
strh r2, [r7]
adds r0, r6, 0
bl DestroyAnimVisualTask
_080BB05A:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BB068: .4byte gTasks
_080BB06C: .4byte gBattle_BG1_Y
_080BB070: .4byte gUnknown_2022984
_080BB074: .4byte gUnknown_2022986
_080BB078: .4byte 0x00003f3f
_080BB07C: .4byte gSprites
_080BB080: .4byte gUnknown_2023D44
_080BB084: .4byte gBattleAnimAttacker
thumb_func_end sub_80BAF38
thumb_func_start sub_80BB088
sub_80BB088: @ 80BB088
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080BB0C8 @ =gUnknown_20399B4
movs r0, 0x18
bl AllocZeroed
str r0, [r4]
movs r2, 0
ldr r3, _080BB0CC @ =gBattleAnimArgs
_080BB09C:
ldr r1, [r4]
lsls r0, r2, 1
adds r1, 0x4
adds r1, r0
adds r0, r3
ldrh r0, [r0]
strh r0, [r1]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x7
bls _080BB09C
ldr r0, _080BB0D0 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _080BB0D4 @ =sub_80BB0D8
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BB0C8: .4byte gUnknown_20399B4
_080BB0CC: .4byte gBattleAnimArgs
_080BB0D0: .4byte gTasks
_080BB0D4: .4byte sub_80BB0D8
thumb_func_end sub_80BB088
thumb_func_start sub_80BB0D8
sub_80BB0D8: @ 80BB0D8
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _080BB0F0 @ =gUnknown_20399B4
ldr r1, [r0]
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080BB0F8
ldr r0, _080BB0F4 @ =gBattleAnimAttacker
b _080BB0FA
.align 2, 0
_080BB0F0: .4byte gUnknown_20399B4
_080BB0F4: .4byte gBattleAnimAttacker
_080BB0F8:
ldr r0, _080BB230 @ =gBattleAnimTarget
_080BB0FA:
ldrb r0, [r0]
strb r0, [r1]
ldr r4, _080BB234 @ =gUnknown_20399B4
ldr r2, [r4]
ldrb r0, [r2]
movs r1, 0x2
eors r0, r1
strb r0, [r2, 0x1]
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BB12A
ldr r1, [r4]
movs r2, 0xA
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080BB130
ldrb r0, [r1, 0x1]
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
bne _080BB130
_080BB12A:
ldr r1, [r4]
movs r0, 0
strh r0, [r1, 0xA]
_080BB130:
ldr r0, _080BB238 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080BB23C @ =gUnknown_2022986
strh r1, [r0]
ldr r1, _080BB240 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080BB244 @ =0x00003f3d
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r1, _080BB248 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
movs r1, 0x4
movs r2, 0
bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BB18E
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
_080BB18E:
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080BB20A
ldr r4, _080BB234 @ =gUnknown_20399B4
ldr r1, [r4]
movs r2, 0xA
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080BB20A
ldrb r0, [r1]
bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _080BB1C0
ldr r0, [r4]
ldrb r0, [r0]
bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _080BB20A
_080BB1C0:
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl sub_8072DF0
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
bne _080BB20A
ldr r3, _080BB24C @ =gSprites
ldr r1, _080BB250 @ =gUnknown_2023D44
ldr r0, [r4]
ldrb r0, [r0, 0x1]
adds r0, r1
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
subs r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
ldr r0, [r4]
strb r5, [r0, 0x2]
_080BB20A:
ldr r4, _080BB234 @ =gUnknown_20399B4
ldr r0, [r4]
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080BB25C
ldr r1, _080BB254 @ =gBattlerPartyIndexes
ldr r0, [r4]
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BB258 @ =gEnemyParty
b _080BB26E
.align 2, 0
_080BB230: .4byte gBattleAnimTarget
_080BB234: .4byte gUnknown_20399B4
_080BB238: .4byte gUnknown_2022984
_080BB23C: .4byte gUnknown_2022986
_080BB240: .4byte 0x00003f3f
_080BB244: .4byte 0x00003f3d
_080BB248: .4byte 0x00003f42
_080BB24C: .4byte gSprites
_080BB250: .4byte gUnknown_2023D44
_080BB254: .4byte gBattlerPartyIndexes
_080BB258: .4byte gEnemyParty
_080BB25C:
ldr r1, _080BB290 @ =gBattlerPartyIndexes
ldr r0, [r4]
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BB294 @ =gPlayerParty
_080BB26E:
adds r0, r1
movs r1, 0xB
bl GetMonData
ldr r1, [r4]
strh r0, [r1, 0x14]
ldr r0, _080BB298 @ =gTasks
lsls r1, r6, 2
adds r1, r6
lsls r1, 3
adds r1, r0
ldr r0, _080BB29C @ =sub_80BB2A0
str r0, [r1]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB290: .4byte gBattlerPartyIndexes
_080BB294: .4byte gPlayerParty
_080BB298: .4byte gTasks
_080BB29C: .4byte sub_80BB2A0
thumb_func_end sub_80BB0D8
thumb_func_start sub_80BB2A0
sub_80BB2A0: @ 80BB2A0
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
mov r8, r0
ldr r6, _080BB300 @ =gUnknown_2023D44
ldr r4, _080BB304 @ =gUnknown_20399B4
ldr r2, [r4]
ldrb r0, [r2]
adds r1, r0, r6
ldrb r1, [r1]
ldrh r2, [r2, 0x14]
bl sub_8076E34
lsls r0, 24
lsrs r7, r0, 24
ldr r2, [r4]
movs r1, 0xA
ldrsh r0, [r2, r1]
cmp r0, 0
beq _080BB2E2
ldrb r0, [r2, 0x1]
adds r1, r0, r6
ldrb r1, [r1]
ldrh r2, [r2, 0x14]
bl sub_8076E34
lsls r0, 24
lsrs r0, 24
mov r8, r0
_080BB2E2:
mov r0, sp
bl sub_80752A0
ldr r0, [r4]
movs r4, 0x4
ldrsh r0, [r0, r4]
cmp r0, 0
bne _080BB30C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
bl sub_807543C
b _080BB316
.align 2, 0
_080BB300: .4byte gUnknown_2023D44
_080BB304: .4byte gUnknown_20399B4
_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
_080BB30C:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
bl sub_807543C
_080BB316:
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080BB32E
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
_080BB32E:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
bl sub_80753B4
ldr r0, _080BB35C @ =gUnknown_20399B4
ldr r0, [r0]
movs r1, 0x6
ldrsh r0, [r0, r1]
cmp r0, 0x6
bhi _080BB3C4
lsls r0, 2
ldr r1, _080BB360 @ =_080BB364
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet
_080BB35C: .4byte gUnknown_20399B4
_080BB360: .4byte _080BB364
.align 2, 0
_080BB364:
.4byte _080BB380
.4byte _080BB388
.4byte _080BB390
.4byte _080BB398
.4byte _080BB3A0
.4byte _080BB3A8
.4byte _080BB3B0
_080BB380:
ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette
b _080BB3B2
.align 2, 0
_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette
_080BB388:
ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette
b _080BB3B2
.align 2, 0
_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette
_080BB390:
ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette
b _080BB3B2
.align 2, 0
_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette
_080BB398:
ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette
b _080BB3B2
.align 2, 0
_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette
_080BB3A0:
ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette
b _080BB3B2
.align 2, 0
_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette
_080BB3A8:
ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette
b _080BB3B2
.align 2, 0
_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette
_080BB3B0:
ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette
_080BB3B2:
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
b _080BB3D2
.align 2, 0
_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette
_080BB3C4:
ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
_080BB3D2:
ldr r3, _080BB400 @ =gBattle_BG1_X
movs r2, 0
strh r2, [r3]
ldr r0, _080BB404 @ =gBattle_BG1_Y
strh r2, [r0]
ldr r1, _080BB408 @ =gUnknown_20399B4
ldr r0, [r1]
movs r4, 0x4
ldrsh r0, [r0, r4]
adds r4, r1, 0
cmp r0, 0x1
bne _080BB414
movs r0, 0x40
strh r0, [r3]
ldr r2, _080BB40C @ =gTasks
lsls r3, r5, 2
adds r0, r3, r5
lsls r0, 3
adds r0, r2
ldr r1, _080BB410 @ =0x0000fffd
b _080BB420
.align 2, 0
_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
_080BB400: .4byte gBattle_BG1_X
_080BB404: .4byte gBattle_BG1_Y
_080BB408: .4byte gUnknown_20399B4
_080BB40C: .4byte gTasks
_080BB410: .4byte 0x0000fffd
_080BB414:
ldr r2, _080BB43C @ =gTasks
lsls r3, r5, 2
adds r0, r3, r5
lsls r0, 3
adds r0, r2
movs r1, 0x3
_080BB420:
strh r1, [r0, 0xA]
ldr r0, [r4]
movs r1, 0xC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080BB440
adds r0, r3, r5
lsls r0, 3
adds r0, r2
movs r1, 0xA
strh r1, [r0, 0x10]
movs r1, 0x14
b _080BB44C
.align 2, 0
_080BB43C: .4byte gTasks
_080BB440:
adds r0, r3, r5
lsls r0, 3
adds r0, r2
movs r1, 0xD
strh r1, [r0, 0x10]
movs r1, 0x1E
_080BB44C:
strh r1, [r0, 0x12]
adds r1, r3, r5
lsls r1, 3
adds r1, r2
strh r7, [r1, 0x8]
ldr r3, [r4]
ldrh r0, [r3, 0xA]
strh r0, [r1, 0xC]
mov r4, r8
strh r4, [r1, 0xE]
ldrb r0, [r3, 0x2]
strh r0, [r1, 0x14]
ldr r2, _080BB490 @ =gUnknown_2023D44
ldrb r0, [r3, 0x1]
adds r0, r2
ldrb r0, [r0]
strh r0, [r1, 0x16]
ldr r0, _080BB494 @ =sub_80BB4B8
str r0, [r1]
movs r1, 0x4
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080BB498
movs r0, 0x40
negs r0, r0
bl sub_8073B08
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xE8
bl PlaySE12WithPanning
b _080BB4AC
.align 2, 0
_080BB490: .4byte gUnknown_2023D44
_080BB494: .4byte sub_80BB4B8
_080BB498:
movs r0, 0x40
negs r0, r0
bl sub_8073B08
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0xEE
bl PlaySE12WithPanning
_080BB4AC:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80BB2A0
thumb_func_start sub_80BB4B8
sub_80BB4B8: @ 80BB4B8
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r2, _080BB4E4 @ =gBattle_BG1_Y
ldr r1, _080BB4E8 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r1
ldrh r0, [r5, 0xA]
ldrh r1, [r2]
adds r0, r1
strh r0, [r2]
movs r0, 0x26
ldrsh r2, [r5, r0]
cmp r2, 0x1
beq _080BB52E
cmp r2, 0x1
bgt _080BB4EC
cmp r2, 0
beq _080BB4F6
b _080BB644
.align 2, 0
_080BB4E4: .4byte gBattle_BG1_Y
_080BB4E8: .4byte gTasks
_080BB4EC:
cmp r2, 0x2
beq _080BB544
cmp r2, 0x3
beq _080BB582
b _080BB644
_080BB4F6:
ldrh r0, [r5, 0x1E]
adds r1, r0, 0x1
strh r1, [r5, 0x1E]
lsls r0, 16
cmp r0, 0
bgt _080BB504
b _080BB644
_080BB504:
strh r2, [r5, 0x1E]
ldrh r1, [r5, 0x20]
adds r1, 0x1
strh r1, [r5, 0x20]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r2, 0x10
ldrsh r0, [r5, r2]
cmp r1, r0
beq _080BB52C
b _080BB644
_080BB52C:
b _080BB57A
_080BB52E:
ldrh r0, [r5, 0x1C]
adds r0, 0x1
strh r0, [r5, 0x1C]
lsls r0, 16
asrs r0, 16
movs r2, 0x12
ldrsh r1, [r5, r2]
cmp r0, r1
beq _080BB542
b _080BB644
_080BB542:
b _080BB57A
_080BB544:
ldrh r0, [r5, 0x1E]
adds r1, r0, 0x1
strh r1, [r5, 0x1E]
lsls r0, 16
cmp r0, 0
ble _080BB644
movs r0, 0
strh r0, [r5, 0x1E]
ldrh r1, [r5, 0x20]
subs r1, 0x1
strh r1, [r5, 0x20]
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, 0x20
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080BB644
movs r0, 0
bl sub_8073128
_080BB57A:
ldrh r0, [r5, 0x26]
adds r0, 0x1
strh r0, [r5, 0x26]
b _080BB644
_080BB582:
ldr r0, _080BB64C @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080BB650 @ =gUnknown_2022986
strh r1, [r0]
ldr r4, _080BB654 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BB5B2
movs r0, 0x1
movs r1, 0x3
movs r2, 0
bl SetAnimBgAttribute
_080BB5B2:
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
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080BB658 @ =gSprites
adds r0, r4
bl DestroySprite
movs r1, 0xC
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080BB606
movs r2, 0xE
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
_080BB606:
movs r1, 0x14
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080BB632
movs r2, 0x16
ldrsh r0, [r5, r2]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r4
ldrb r3, [r2, 0x5]
lsls r1, r3, 28
lsrs r1, 30
adds r1, 0x1
movs r0, 0x3
ands r1, r0
lsls r1, 2
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
_080BB632:
ldr r4, _080BB65C @ =gUnknown_20399B4
ldr r0, [r4]
bl Free
movs r0, 0
str r0, [r4]
adds r0, r6, 0
bl DestroyAnimVisualTask
_080BB644:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB64C: .4byte gUnknown_2022984
_080BB650: .4byte gUnknown_2022986
_080BB654: .4byte 0x00003f3f
_080BB658: .4byte gSprites
_080BB65C: .4byte gUnknown_20399B4
thumb_func_end sub_80BB4B8
thumb_func_start sub_80BB660
sub_80BB660: @ 80BB660
push {r4-r6,lr}
sub sp, 0xC
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
movs r0, 0x1
movs r1, 0x1
movs r2, 0x1
movs r3, 0x1
bl sub_8075CB8
adds r6, r0, 0
movs r1, 0
bl sub_80BB790
ldr r0, _080BB6C0 @ =gTasks
lsls r4, r5, 2
adds r4, r5
lsls r4, 3
adds r4, r0
lsrs r0, r6, 16
movs r5, 0
strh r0, [r4, 0x24]
str r5, [sp]
str r5, [sp, 0x4]
str r5, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_8075BE8
adds r6, r0, 0
ldr r1, _080BB6C4 @ =0x0000ffff
ands r6, r1
adds r0, r6, 0
bl sub_80BB790
strh r6, [r4, 0x26]
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
ldr r0, _080BB6C8 @ =sub_80BB6CC
str r0, [r4]
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB6C0: .4byte gTasks
_080BB6C4: .4byte 0x0000ffff
_080BB6C8: .4byte sub_80BB6CC
thumb_func_end sub_80BB660
thumb_func_start sub_80BB6CC
sub_80BB6CC: @ 80BB6CC
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080BB6F0 @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r1, [r4, r0]
cmp r1, 0x1
beq _080BB710
cmp r1, 0x1
bgt _080BB6F4
cmp r1, 0
beq _080BB6FA
b _080BB78A
.align 2, 0
_080BB6F0: .4byte gTasks
_080BB6F4:
cmp r1, 0x2
beq _080BB784
b _080BB78A
_080BB6FA:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x6
ble _080BB78A
strh r1, [r4, 0xA]
movs r0, 0x10
strh r0, [r4, 0xC]
b _080BB778
_080BB710:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080BB78A
movs r0, 0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
movs r5, 0
movs r6, 0x1
_080BB72C:
movs r1, 0x26
ldrsh r0, [r4, r1]
asrs r0, r5
ands r0, r6
cmp r0, 0
beq _080BB746
lsls r0, r5, 20
lsrs r0, 16
ldrb r2, [r4, 0xC]
movs r1, 0x10
ldr r3, _080BB780 @ =0x0000ffff
bl BlendPalette
_080BB746:
movs r1, 0x24
ldrsh r0, [r4, r1]
asrs r0, r5
ands r0, r6
cmp r0, 0
beq _080BB766
lsls r0, r5, 20
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r0, 16
ldrb r2, [r4, 0xC]
movs r1, 0x10
movs r3, 0
bl BlendPalette
_080BB766:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0xF
bls _080BB72C
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080BB78A
_080BB778:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080BB78A
.align 2, 0
_080BB780: .4byte 0x0000ffff
_080BB784:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080BB78A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80BB6CC
thumb_func_start sub_80BB790
sub_80BB790: @ 80BB790
push {r4-r6,lr}
adds r3, r0, 0
lsls r1, 16
lsrs r6, r1, 16
movs r2, 0
_080BB79A:
movs r0, 0x1
ands r0, r3
lsrs r4, r3, 1
adds r5, r2, 0x1
cmp r0, 0
beq _080BB7C6
lsls r0, r2, 20
lsrs r2, r0, 16
adds r0, r2, 0
adds r0, 0x10
cmp r2, r0
bge _080BB7C6
ldr r1, _080BB7D8 @ =gPlttBufferFaded
adds r3, r0, 0
_080BB7B6:
lsls r0, r2, 1
adds r0, r1
strh r6, [r0]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, r3
blt _080BB7B6
_080BB7C6:
adds r3, r4, 0
lsls r0, r5, 16
lsrs r2, r0, 16
cmp r2, 0x1F
bls _080BB79A
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB7D8: .4byte gPlttBufferFaded
thumb_func_end sub_80BB790
thumb_func_start sub_80BB7DC
sub_80BB7DC: @ 80BB7DC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r4, 0
movs r2, 0
ldr r0, _080BB824 @ =gBattleAnimAttacker
ldrb r3, [r0]
movs r5, 0x1
_080BB7EC:
cmp r3, r2
beq _080BB7FA
adds r1, r2, 0
adds r1, 0x10
adds r0, r5, 0
lsls r0, r1
orrs r4, r0
_080BB7FA:
adds r2, 0x1
cmp r2, 0x3
bls _080BB7EC
movs r2, 0x5
ldr r0, _080BB828 @ =gBattleAnimArgs
adds r1, r0, 0
adds r1, 0x8
_080BB808:
ldrh r0, [r1]
strh r0, [r1, 0x2]
subs r1, 0x2
subs r2, 0x1
cmp r2, 0
bne _080BB808
adds r0, r6, 0
adds r1, r4, 0
bl sub_80BAA4C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB824: .4byte gBattleAnimAttacker
_080BB828: .4byte gBattleAnimArgs
thumb_func_end sub_80BB7DC
thumb_func_start sub_80BB82C
sub_80BB82C: @ 80BB82C
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
bl sub_8075458
ldr r0, _080BB894 @ =sub_80BB8A4
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080BB898 @ =gBattleAnimArgs
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080BB868
ldr r0, _080BB89C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080BB868
ldrh r0, [r4]
negs r0, r0
strh r0, [r4]
ldrh r0, [r4, 0x2]
negs r0, r0
strh r0, [r4, 0x2]
_080BB868:
ldr r0, _080BB8A0 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r2, _080BB898 @ =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r1, 0xA]
ldrh r0, [r2, 0x2]
strh r0, [r1, 0xC]
ldrh r0, [r2, 0x6]
strh r0, [r1, 0xE]
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
adds r0, r6, 0
bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BB894: .4byte sub_80BB8A4
_080BB898: .4byte gBattleAnimArgs
_080BB89C: .4byte gBattleAnimAttacker
_080BB8A0: .4byte gTasks
thumb_func_end sub_80BB82C
thumb_func_start sub_80BB8A4
sub_80BB8A4: @ 80BB8A4
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080BB910 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldrh r3, [r1, 0xA]
ldrh r0, [r1, 0x1C]
adds r3, r0
movs r4, 0
mov r12, r4
strh r3, [r1, 0x1C]
ldrh r2, [r1, 0xC]
ldrh r7, [r1, 0x1E]
adds r2, r7
strh r2, [r1, 0x1E]
ldr r6, _080BB914 @ =gBattle_BG3_X
lsls r0, r3, 16
asrs r0, 24
ldrh r4, [r6]
adds r0, r4
strh r0, [r6]
ldr r4, _080BB918 @ =gBattle_BG3_Y
lsls r0, r2, 16
asrs r0, 24
ldrh r7, [r4]
adds r0, r7
strh r0, [r4]
movs r0, 0xFF
ands r3, r0
strh r3, [r1, 0x1C]
ands r2, r0
strh r2, [r1, 0x1E]
ldr r0, _080BB91C @ =gBattleAnimArgs
movs r3, 0xE
ldrsh r2, [r0, r3]
movs r7, 0xE
ldrsh r0, [r1, r7]
cmp r2, r0
bne _080BB90A
mov r0, r12
strh r0, [r6]
strh r0, [r4]
movs r0, 0x1
bl sub_8075458
adds r0, r5, 0
bl DestroyTask
_080BB90A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BB910: .4byte gTasks
_080BB914: .4byte gBattle_BG3_X
_080BB918: .4byte gBattle_BG3_Y
_080BB91C: .4byte gBattleAnimArgs
thumb_func_end sub_80BB8A4
thumb_func_start sub_80BB920
sub_80BB920: @ 80BB920
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080BB944 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
ldr r1, _080BB948 @ =gBattleAnimArgs
lsls r0, 24
lsrs r0, 24
strh r0, [r1, 0xE]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BB944: .4byte gBattleAnimAttacker
_080BB948: .4byte gBattleAnimArgs
thumb_func_end sub_80BB920
thumb_func_start sub_80BB94C
sub_80BB94C: @ 80BB94C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080BB970 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
ldr r1, _080BB974 @ =gBattleAnimArgs
lsls r0, 24
lsrs r0, 24
strh r0, [r1, 0xE]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BB970: .4byte gBattleAnimTarget
_080BB974: .4byte gBattleAnimArgs
thumb_func_end sub_80BB94C
thumb_func_start sub_80BB978
sub_80BB978: @ 80BB978
push {r4,r5,lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r5, _080BB9A4 @ =gBattleAnimArgs
movs r4, 0
ldr r0, _080BB9A8 @ =gBattleAnimAttacker
ldrb r2, [r0]
movs r0, 0x2
ldr r1, _080BB9AC @ =gBattleAnimTarget
eors r0, r2
ldrb r1, [r1]
cmp r0, r1
bne _080BB994
movs r4, 0x1
_080BB994:
strh r4, [r5, 0xE]
adds r0, r3, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BB9A4: .4byte gBattleAnimArgs
_080BB9A8: .4byte gBattleAnimAttacker
_080BB9AC: .4byte gBattleAnimTarget
thumb_func_end sub_80BB978
thumb_func_start sub_80BB9B0
sub_80BB9B0: @ 80BB9B0
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r6, _080BBA10 @ =gSprites
_080BB9BA:
ldr r0, _080BBA14 @ =gBattleAnimAttacker
ldrb r0, [r0]
cmp r4, r0
beq _080BB9F8
lsls r0, r4, 24
lsrs r0, 24
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
beq _080BB9F8
ldr r0, _080BBA18 @ =gUnknown_2023D44
adds r0, r4, r0
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r6
ldr r1, _080BBA1C @ =gBattleAnimArgs
adds r2, 0x3E
movs r0, 0x1
ldrb r3, [r1]
ands r3, r0
lsls r3, 2
ldrb r0, [r2]
movs r7, 0x5
negs r7, r7
adds r1, r7, 0
ands r0, r1
orrs r0, r3
strb r0, [r2]
_080BB9F8:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x3
bls _080BB9BA
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BBA10: .4byte gSprites
_080BBA14: .4byte gBattleAnimAttacker
_080BBA18: .4byte gUnknown_2023D44
_080BBA1C: .4byte gBattleAnimArgs
thumb_func_end sub_80BB9B0
thumb_func_start sub_80BBA20
sub_80BBA20: @ 80BBA20
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
ldr r1, [sp, 0x44]
ldr r4, [sp, 0x48]
ldr r5, [sp, 0x4C]
ldr r6, [sp, 0x50]
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r2, 16
lsrs r2, 16
str r2, [sp, 0x14]
lsls r3, 24
lsrs r7, r3, 24
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r4, 24
lsrs r4, 24
str r4, [sp, 0x18]
lsls r5, 24
lsrs r5, 24
str r5, [sp, 0x1C]
lsls r6, 24
lsrs r6, 24
mov r10, r6
movs r0, 0
str r0, [sp, 0x20]
movs r0, 0x2
adds r6, r7, 0
eors r6, r0
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BBA82
mov r1, r8
cmp r1, 0
beq _080BBA86
adds r0, r6, 0
bl sub_8072DF0
lsls r0, 24
cmp r0, 0
bne _080BBA86
_080BBA82:
movs r2, 0
mov r8, r2
_080BBA86:
ldr r0, _080BBB20 @ =gUnknown_2022984
movs r1, 0
strh r1, [r0]
ldr r0, _080BBB24 @ =gUnknown_2022986
strh r1, [r0]
ldr r1, _080BBB28 @ =0x00003f3f
movs r0, 0x48
bl SetGpuReg
ldr r1, _080BBB2C @ =0x00003f3d
movs r0, 0x4A
bl SetGpuReg
movs r1, 0x80
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
ldr r1, _080BBB30 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
movs r1, 0x80
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
movs r0, 0xA
bl GetGpuReg
add r4, sp, 0x10
strh r0, [r4]
ldrb r1, [r4]
movs r0, 0x4
negs r0, r0
ands r0, r1
strb r0, [r4]
mov r2, sp
adds r2, 0x11
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
strb r0, [r2]
ldrb r0, [r2]
movs r1, 0x20
orrs r0, r1
strb r0, [r2]
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BBAFC
ldrb r0, [r4]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x4
orrs r1, r0
strb r1, [r4]
_080BBAFC:
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
adds r0, r7, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080BBB3C
ldr r1, _080BBB34 @ =gBattlerPartyIndexes
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BBB38 @ =gEnemyParty
b _080BBB4A
.align 2, 0
_080BBB20: .4byte gUnknown_2022984
_080BBB24: .4byte gUnknown_2022986
_080BBB28: .4byte 0x00003f3f
_080BBB2C: .4byte 0x00003f3d
_080BBB30: .4byte 0x00003f42
_080BBB34: .4byte gBattlerPartyIndexes
_080BBB38: .4byte gEnemyParty
_080BBB3C:
ldr r1, _080BBC10 @ =gBattlerPartyIndexes
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080BBC14 @ =gPlayerParty
_080BBB4A:
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
ldr r5, _080BBC18 @ =gUnknown_2023D44
adds r0, r7, r5
ldrb r1, [r0]
adds r0, r7, 0
adds r2, r4, 0
bl sub_8076E34
lsls r0, 24
lsrs r7, r0, 24
mov r0, r8
cmp r0, 0
beq _080BBB80
adds r0, r6, r5
ldrb r1, [r0]
adds r0, r6, 0
adds r2, r4, 0
bl sub_8076E34
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x20]
_080BBB80:
mov r0, sp
bl sub_80752A0
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, [sp, 0x58]
bl sub_807543C
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080BBBA8
mov r0, sp
ldrb r0, [r0, 0x8]
ldr r1, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_80730C0
_080BBBA8:
mov r0, sp
ldrb r0, [r0, 0x9]
mov r1, sp
ldrh r2, [r1, 0xA]
ldr r1, [sp, 0x54]
bl sub_80753B4
mov r0, sp
ldrb r1, [r0, 0x8]
lsls r1, 4
ldr r0, [sp, 0x5C]
movs r2, 0x20
bl LoadCompressedPalette
ldr r0, _080BBC1C @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
ldr r0, _080BBC20 @ =gBattle_BG1_Y
strh r1, [r0]
ldr r1, _080BBC24 @ =gTasks
mov r2, r9
lsls r0, r2, 2
add r0, r9
lsls r0, 3
adds r0, r1
mov r1, sp
ldrh r1, [r1, 0x14]
strh r1, [r0, 0xA]
mov r2, sp
ldrh r2, [r2, 0x18]
strh r2, [r0, 0x10]
mov r1, r10
strh r1, [r0, 0x12]
mov r2, sp
ldrh r2, [r2, 0x1C]
strh r2, [r0, 0x14]
strh r7, [r0, 0x8]
mov r1, r8
strh r1, [r0, 0xC]
mov r2, sp
ldrh r2, [r2, 0x20]
strh r2, [r0, 0xE]
ldr r1, _080BBC28 @ =sub_80BBC2C
str r1, [r0]
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BBC10: .4byte gBattlerPartyIndexes
_080BBC14: .4byte gPlayerParty
_080BBC18: .4byte gUnknown_2023D44
_080BBC1C: .4byte gBattle_BG1_X
_080BBC20: .4byte gBattle_BG1_Y
_080BBC24: .4byte gTasks
_080BBC28: .4byte sub_80BBC2C
thumb_func_end sub_80BBA20
thumb_func_start sub_80BBC2C
sub_80BBC2C: @ 80BBC2C
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080BBC68 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r3, r0, r1
movs r0, 0xA
ldrsh r2, [r3, r0]
adds r5, r1, 0
cmp r2, 0
bge _080BBC4A
negs r2, r2
_080BBC4A:
ldrh r0, [r3, 0x22]
adds r4, r0, r2
strh r4, [r3, 0x22]
movs r1, 0xA
ldrsh r0, [r3, r1]
cmp r0, 0
bge _080BBC70
ldr r2, _080BBC6C @ =gBattle_BG1_Y
lsls r1, r4, 16
asrs r1, 24
ldrh r0, [r2]
subs r0, r1
strh r0, [r2]
b _080BBC7C
.align 2, 0
_080BBC68: .4byte gTasks
_080BBC6C: .4byte gBattle_BG1_Y
_080BBC70:
ldr r1, _080BBCA0 @ =gBattle_BG1_Y
lsls r0, r4, 16
asrs r0, 24
ldrh r2, [r1]
adds r0, r2
strh r0, [r1]
_080BBC7C:
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r5, r0, r5
ldrh r1, [r5, 0x22]
movs r0, 0xFF
ands r0, r1
movs r2, 0
strh r0, [r5, 0x22]
movs r3, 0x26
ldrsh r0, [r5, r3]
cmp r0, 0x1
beq _080BBCE6
cmp r0, 0x1
bgt _080BBCA4
cmp r0, 0
beq _080BBCAA
b _080BBDD8
.align 2, 0
_080BBCA0: .4byte gBattle_BG1_Y
_080BBCA4:
cmp r0, 0x2
beq _080BBD00
b _080BBDD8
_080BBCAA:
ldrh r0, [r5, 0x1E]
adds r1, r0, 0x1
strh r1, [r5, 0x1E]
lsls r0, 16
asrs r0, 16
movs r3, 0x14
ldrsh r1, [r5, r3]
cmp r0, r1
bge _080BBCBE
b _080BBDD8
_080BBCBE:
strh r2, [r5, 0x1E]
ldrh r1, [r5, 0x20]
adds r1, 0x1
strh r1, [r5, 0x20]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r0, 0x20
ldrsh r1, [r5, r0]
movs r2, 0x10
ldrsh r0, [r5, r2]
cmp r1, r0
bne _080BBDD8
b _080BBCF8
_080BBCE6:
ldrh r0, [r5, 0x1C]
adds r0, 0x1
strh r0, [r5, 0x1C]
lsls r0, 16
asrs r0, 16
movs r3, 0x12
ldrsh r1, [r5, r3]
cmp r0, r1
bne _080BBDD8
_080BBCF8:
ldrh r0, [r5, 0x26]
adds r0, 0x1
strh r0, [r5, 0x26]
b _080BBDD8
_080BBD00:
ldrh r0, [r5, 0x1E]
adds r1, r0, 0x1
strh r1, [r5, 0x1E]
lsls r0, 16
asrs r0, 16
movs r3, 0x14
ldrsh r1, [r5, r3]
cmp r0, r1
blt _080BBDD8
strh r2, [r5, 0x1E]
ldrh r1, [r5, 0x20]
subs r1, 0x1
strh r1, [r5, 0x20]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r0, 0x20
ldrsh r4, [r5, r0]
cmp r4, 0
bne _080BBDD8
movs r0, 0
bl sub_8073128
ldr r0, _080BBDE0 @ =gUnknown_2022984
strh r4, [r0]
ldr r0, _080BBDE4 @ =gUnknown_2022986
strh r4, [r0]
ldr r4, _080BBDE8 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
bl sub_8073788
lsls r0, 24
cmp r0, 0
bne _080BBD7E
movs r0, 0xA
bl GetGpuReg
mov r1, sp
strh r0, [r1]
mov r2, sp
ldrb r1, [r2]
movs r0, 0xD
negs r0, r0
ands r0, r1
strb r0, [r2]
mov r0, sp
ldrh r1, [r0]
movs r0, 0xA
bl SetGpuReg
_080BBD7E:
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
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r3, 0x8
ldrsh r1, [r5, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080BBDEC @ =gSprites
adds r0, r4
bl DestroySprite
movs r1, 0xC
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080BBDD2
movs r2, 0xE
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
_080BBDD2:
adds r0, r6, 0
bl DestroyAnimVisualTask
_080BBDD8:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BBDE0: .4byte gUnknown_2022984
_080BBDE4: .4byte gUnknown_2022986
_080BBDE8: .4byte 0x00003f3f
_080BBDEC: .4byte gSprites
thumb_func_end sub_80BBC2C
thumb_func_start sub_80BBDF0
sub_80BBDF0: @ 80BBDF0
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080BBE08 @ =gBattleAnimArgs
ldr r1, _080BBE0C @ =gUnknown_2022B50
ldrb r1, [r1]
strh r1, [r2]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080BBE08: .4byte gBattleAnimArgs
_080BBE0C: .4byte gUnknown_2022B50
thumb_func_end sub_80BBDF0
thumb_func_start sub_80BBE10
sub_80BBE10: @ 80BBE10
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x80
lsls r0, 6
bl AllocZeroed
ldr r1, _080BBE38 @ =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
str r0, [r1]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BBE38: .4byte gMonSpritesGfxPtr
thumb_func_end sub_80BBE10
thumb_func_start sub_80BBE3C
sub_80BBE3C: @ 80BBE3C
push {r4-r6,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r6, _080BBE68 @ =gMonSpritesGfxPtr
ldr r0, [r6]
movs r5, 0xBE
lsls r5, 1
adds r0, r5
ldr r0, [r0]
bl Free
ldr r0, [r6]
adds r0, r5
movs r1, 0
str r1, [r0]
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BBE68: .4byte gMonSpritesGfxPtr
thumb_func_end sub_80BBE3C
thumb_func_start sub_80BBE6C
sub_80BBE6C: @ 80BBE6C
push {r4,r5,lr}
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r0, _080BBEAC @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080BBEB0
str r4, [sp]
str r4, [sp, 0x4]
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_8075BE8
adds r1, r0, 0
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080BBEC8
movs r2, 0x1
_080BBE9E:
lsrs r1, 1
adds r4, 0x1
adds r0, r1, 0
ands r0, r2
cmp r0, 0
beq _080BBE9E
b _080BBEC8
.align 2, 0
_080BBEAC: .4byte gBattleAnimArgs
_080BBEB0:
cmp r0, 0x1
bne _080BBEBC
ldr r0, _080BBEB8 @ =gBattleAnimAttacker
b _080BBEC2
.align 2, 0
_080BBEB8: .4byte gBattleAnimAttacker
_080BBEBC:
cmp r0, 0x2
bne _080BBEC8
ldr r0, _080BBEF8 @ =gBattleAnimTarget
_080BBEC2:
ldrb r0, [r0]
adds r4, r0, 0
adds r4, 0x10
_080BBEC8:
ldr r0, _080BBEFC @ =gMonSpritesGfxPtr
ldr r1, [r0]
ldr r0, _080BBF00 @ =gBattleAnimArgs
movs r2, 0x2
ldrsh r0, [r0, r2]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
ldr r1, [r1]
lsls r0, 5
adds r0, r1
lsls r1, r4, 5
ldr r2, _080BBF04 @ =gPlttBufferUnfaded
adds r1, r2
movs r2, 0x20
bl memcpy
adds r0, r5, 0
bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BBEF8: .4byte gBattleAnimTarget
_080BBEFC: .4byte gMonSpritesGfxPtr
_080BBF00: .4byte gBattleAnimArgs
_080BBF04: .4byte gPlttBufferUnfaded
thumb_func_end sub_80BBE6C
thumb_func_start sub_80BBF08
sub_80BBF08: @ 80BBF08
push {r4,r5,lr}
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r0, _080BBF48 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080BBF4C
str r4, [sp]
str r4, [sp, 0x4]
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_8075BE8
adds r1, r0, 0
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080BBF64
movs r2, 0x1
_080BBF3A:
lsrs r1, 1
adds r4, 0x1
adds r0, r1, 0
ands r0, r2
cmp r0, 0
beq _080BBF3A
b _080BBF64
.align 2, 0
_080BBF48: .4byte gBattleAnimArgs
_080BBF4C:
cmp r0, 0x1
bne _080BBF58
ldr r0, _080BBF54 @ =gBattleAnimAttacker
b _080BBF5E
.align 2, 0
_080BBF54: .4byte gBattleAnimAttacker
_080BBF58:
cmp r0, 0x2
bne _080BBF64
ldr r0, _080BBF94 @ =gBattleAnimTarget
_080BBF5E:
ldrb r0, [r0]
adds r4, r0, 0
adds r4, 0x10
_080BBF64:
lsls r0, r4, 5
ldr r1, _080BBF98 @ =gPlttBufferUnfaded
adds r0, r1
ldr r1, _080BBF9C @ =gMonSpritesGfxPtr
ldr r2, [r1]
ldr r1, _080BBFA0 @ =gBattleAnimArgs
movs r3, 0x2
ldrsh r1, [r1, r3]
movs r3, 0xBE
lsls r3, 1
adds r2, r3
ldr r2, [r2]
lsls r1, 5
adds r1, r2
movs r2, 0x20
bl memcpy
adds r0, r5, 0
bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BBF94: .4byte gBattleAnimTarget
_080BBF98: .4byte gPlttBufferUnfaded
_080BBF9C: .4byte gMonSpritesGfxPtr
_080BBFA0: .4byte gBattleAnimArgs
thumb_func_end sub_80BBF08
thumb_func_start sub_80BBFA4
sub_80BBFA4: @ 80BBFA4
push {r4,r5,lr}
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r0, _080BBFE4 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080BBFE8
str r4, [sp]
str r4, [sp, 0x4]
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_8075BE8
adds r1, r0, 0
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080BC000
movs r2, 0x1
_080BBFD6:
lsrs r1, 1
adds r4, 0x1
adds r0, r1, 0
ands r0, r2
cmp r0, 0
beq _080BBFD6
b _080BC000
.align 2, 0
_080BBFE4: .4byte gBattleAnimArgs
_080BBFE8:
cmp r0, 0x1
bne _080BBFF4
ldr r0, _080BBFF0 @ =gBattleAnimAttacker
b _080BBFFA
.align 2, 0
_080BBFF0: .4byte gBattleAnimAttacker
_080BBFF4:
cmp r0, 0x2
bne _080BC000
ldr r0, _080BC020 @ =gBattleAnimTarget
_080BBFFA:
ldrb r0, [r0]
adds r4, r0, 0
adds r4, 0x10
_080BC000:
lsls r1, r4, 5
ldr r0, _080BC024 @ =gPlttBufferUnfaded
adds r0, r1, r0
ldr r2, _080BC028 @ =gPlttBufferFaded
adds r1, r2
movs r2, 0x20
bl memcpy
adds r0, r5, 0
bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BC020: .4byte gBattleAnimTarget
_080BC024: .4byte gPlttBufferUnfaded
_080BC028: .4byte gPlttBufferFaded
thumb_func_end sub_80BBFA4
thumb_func_start sub_80BC02C
sub_80BC02C: @ 80BC02C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl sub_8073788
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080BC04C
ldr r1, _080BC048 @ =gBattleAnimArgs
movs r0, 0x1
strh r0, [r1, 0xE]
b _080BC050
.align 2, 0
_080BC048: .4byte gBattleAnimArgs
_080BC04C:
ldr r0, _080BC05C @ =gBattleAnimArgs
strh r1, [r0, 0xE]
_080BC050:
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BC05C: .4byte gBattleAnimArgs
thumb_func_end sub_80BC02C
thumb_func_start sub_80BC060
sub_80BC060: @ 80BC060
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080BC080 @ =gBattleAnimAttacker
ldr r1, _080BC084 @ =gBattlerTarget
ldrb r1, [r1]
strb r1, [r2]
ldr r2, _080BC088 @ =gBattleAnimTarget
ldr r1, _080BC08C @ =gUnknown_2023D6E
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080BC080: .4byte gBattleAnimAttacker
_080BC084: .4byte gBattlerTarget
_080BC088: .4byte gBattleAnimTarget
_080BC08C: .4byte gUnknown_2023D6E
thumb_func_end sub_80BC060
thumb_func_start sub_80BC090
sub_80BC090: @ 80BC090
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080BC0B8 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
adds r4, r0, 0
ldr r0, _080BC0BC @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _080BC0C4
ldr r1, _080BC0C0 @ =gBattleAnimArgs
movs r0, 0x1
b _080BC0C8
.align 2, 0
_080BC0B8: .4byte gBattleAnimAttacker
_080BC0BC: .4byte gBattleAnimTarget
_080BC0C0: .4byte gBattleAnimArgs
_080BC0C4:
ldr r1, _080BC0D8 @ =gBattleAnimArgs
movs r0, 0
_080BC0C8:
strh r0, [r1, 0xE]
adds r0, r5, 0
bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080BC0D8: .4byte gBattleAnimArgs
thumb_func_end sub_80BC090
thumb_func_start sub_80BC0DC
sub_80BC0DC: @ 80BC0DC
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080BC0F4 @ =gBattleAnimTarget
ldr r1, _080BC0F8 @ =gBattlerTarget
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080BC0F4: .4byte gBattleAnimTarget
_080BC0F8: .4byte gBattlerTarget
thumb_func_end sub_80BC0DC
thumb_func_start sub_80BC0FC
sub_80BC0FC: @ 80BC0FC
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080BC11C @ =gBattleAnimAttacker
ldr r1, _080BC120 @ =sBattler_AI
ldrb r1, [r1]
strb r1, [r2]
ldr r2, _080BC124 @ =gBattleAnimTarget
ldr r1, _080BC128 @ =gUnknown_2023D6E
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
_080BC11C: .4byte gBattleAnimAttacker
_080BC120: .4byte sBattler_AI
_080BC124: .4byte gBattleAnimTarget
_080BC128: .4byte gUnknown_2023D6E
thumb_func_end sub_80BC0FC
thumb_func_start sub_80BC12C
sub_80BC12C: @ 80BC12C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl sub_8073788
lsls r0, 24
cmp r0, 0
beq _080BC144
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080BC180
_080BC144:
ldr r0, _080BC188 @ =gTasks
lsls r3, r4, 2
adds r3, r4
lsls r3, 3
adds r3, r0
ldr r0, _080BC18C @ =gUnknown_2024018
ldr r4, [r0]
ldr r2, _080BC190 @ =gBattleAnimAttacker
ldrb r0, [r2]
ldr r1, [r4]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
lsls r0, 31
lsrs r0, 31
strh r0, [r3, 0x8]
ldrb r1, [r2]
ldr r0, [r4]
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
movs r2, 0x1
orrs r0, r2
strb r0, [r1]
ldr r0, _080BC194 @ =sub_80BC19C
str r0, [r3]
ldr r1, _080BC198 @ =gUnknown_2037EE2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
_080BC180:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BC188: .4byte gTasks
_080BC18C: .4byte gUnknown_2024018
_080BC190: .4byte gBattleAnimAttacker
_080BC194: .4byte sub_80BC19C
_080BC198: .4byte gUnknown_2037EE2
thumb_func_end sub_80BC12C
thumb_func_start sub_80BC19C
sub_80BC19C: @ 80BC19C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080BC1E8 @ =gBattleAnimArgs
movs r2, 0xE
ldrsh r1, [r0, r2]
movs r0, 0x80
lsls r0, 5
cmp r1, r0
bne _080BC1E0
ldr r0, _080BC1EC @ =gUnknown_2024018
ldr r1, [r0]
ldr r0, _080BC1F0 @ =gBattleAnimAttacker
ldrb r3, [r0]
ldr r0, [r1]
lsls r3, 2
adds r3, r0
ldr r1, _080BC1F4 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldrb r0, [r0, 0x8]
movs r1, 0x1
ands r1, r0
ldrb r2, [r3]
movs r0, 0x2
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
adds r0, r4, 0
bl DestroyTask
_080BC1E0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BC1E8: .4byte gBattleAnimArgs
_080BC1EC: .4byte gUnknown_2024018
_080BC1F0: .4byte gBattleAnimAttacker
_080BC1F4: .4byte gTasks
thumb_func_end sub_80BC19C
thumb_func_start SetAnimBgAttribute
SetAnimBgAttribute: @ 80BC1F8
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 24
lsrs r4, r2, 24
cmp r6, 0x3
bls _080BC20C
b _080BC2FE
_080BC20C:
ldr r0, _080BC228 @ =gUnknown_83E7CCA
adds r0, r6, r0
ldrb r0, [r0]
bl GetGpuReg
ldr r1, _080BC22C @ =gUnknown_20399B8
strh r0, [r1]
cmp r5, 0x6
bhi _080BC2F0
lsls r0, r5, 2
ldr r1, _080BC230 @ =_080BC234
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BC228: .4byte gUnknown_83E7CCA
_080BC22C: .4byte gUnknown_20399B8
_080BC230: .4byte _080BC234
.align 2, 0
_080BC234:
.4byte _080BC250
.4byte _080BC264
.4byte _080BC27C
.4byte _080BC294
.4byte _080BC2AC
.4byte _080BC2C8
.4byte _080BC2DC
_080BC250:
ldr r2, _080BC260 @ =gUnknown_20399B8
lsls r3, r4, 6
ldrb r1, [r2, 0x1]
movs r0, 0x3F
ands r0, r1
orrs r0, r3
strb r0, [r2, 0x1]
b _080BC2F0
.align 2, 0
_080BC260: .4byte gUnknown_20399B8
_080BC264:
ldr r3, _080BC278 @ =gUnknown_20399B8
movs r0, 0x1
adds r1, r4, 0
ands r1, r0
lsls r1, 5
ldrb r2, [r3, 0x1]
movs r0, 0x21
negs r0, r0
b _080BC2EA
.align 2, 0
_080BC278: .4byte gUnknown_20399B8
_080BC27C:
ldr r3, _080BC290 @ =gUnknown_20399B8
movs r0, 0x1
adds r1, r4, 0
ands r1, r0
lsls r1, 6
ldrb r2, [r3]
movs r0, 0x41
negs r0, r0
b _080BC2BA
.align 2, 0
_080BC290: .4byte gUnknown_20399B8
_080BC294:
ldr r3, _080BC2A8 @ =gUnknown_20399B8
movs r0, 0x3
adds r1, r4, 0
ands r1, r0
lsls r1, 2
ldrb r2, [r3]
movs r0, 0xD
negs r0, r0
b _080BC2BA
.align 2, 0
_080BC2A8: .4byte gUnknown_20399B8
_080BC2AC:
ldr r3, _080BC2C4 @ =gUnknown_20399B8
movs r0, 0x3
adds r1, r4, 0
ands r1, r0
ldrb r2, [r3]
movs r0, 0x4
negs r0, r0
_080BC2BA:
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _080BC2F0
.align 2, 0
_080BC2C4: .4byte gUnknown_20399B8
_080BC2C8:
ldr r2, _080BC2D8 @ =gUnknown_20399B8
lsls r3, r4, 7
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
orrs r0, r3
strb r0, [r2]
b _080BC2F0
.align 2, 0
_080BC2D8: .4byte gUnknown_20399B8
_080BC2DC:
ldr r3, _080BC304 @ =gUnknown_20399B8
movs r0, 0x1F
adds r1, r4, 0
ands r1, r0
ldrb r2, [r3, 0x1]
movs r0, 0x20
negs r0, r0
_080BC2EA:
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x1]
_080BC2F0:
ldr r0, _080BC308 @ =gUnknown_83E7CCA
adds r0, r6, r0
ldrb r0, [r0]
ldr r1, _080BC304 @ =gUnknown_20399B8
ldrh r1, [r1]
bl SetGpuReg
_080BC2FE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080BC304: .4byte gUnknown_20399B8
_080BC308: .4byte gUnknown_83E7CCA
thumb_func_end SetAnimBgAttribute
thumb_func_start sub_80BC30C
sub_80BC30C: @ 80BC30C
push {r4,lr}
sub sp, 0x4
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r4, r1, 24
cmp r2, 0x3
bhi _080BC394
ldr r0, _080BC338 @ =gUnknown_83E7CCE
adds r0, r2, r0
ldrb r0, [r0]
bl GetGpuReg
mov r1, sp
strh r0, [r1]
cmp r4, 0x6
bhi _080BC394
lsls r0, r4, 2
ldr r1, _080BC33C @ =_080BC340
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BC338: .4byte gUnknown_83E7CCE
_080BC33C: .4byte _080BC340
.align 2, 0
_080BC340:
.4byte _080BC35C
.4byte _080BC364
.4byte _080BC36C
.4byte _080BC374
.4byte _080BC37C
.4byte _080BC384
.4byte _080BC38C
_080BC35C:
ldr r0, [sp]
lsls r0, 16
lsrs r0, 30
b _080BC396
_080BC364:
ldr r0, [sp]
lsls r0, 18
lsrs r0, 31
b _080BC396
_080BC36C:
ldr r0, [sp]
lsls r0, 25
lsrs r0, 31
b _080BC396
_080BC374:
ldr r0, [sp]
lsls r0, 28
lsrs r0, 30
b _080BC396
_080BC37C:
ldr r0, [sp]
lsls r0, 30
lsrs r0, 30
b _080BC396
_080BC384:
ldr r0, [sp]
lsls r0, 24
lsrs r0, 31
b _080BC396
_080BC38C:
ldr r0, [sp]
lsls r0, 19
lsrs r0, 27
b _080BC396
_080BC394:
movs r0, 0
_080BC396:
add sp, 0x4
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80BC30C
thumb_func_start sub_80BC3A0
sub_80BC3A0: @ 80BC3A0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080BC3B8 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080BC3C0
ldr r0, _080BC3BC @ =sub_80BCC4C
b _080BC3E8
.align 2, 0
_080BC3B8: .4byte gBattleTypeFlags
_080BC3BC: .4byte sub_80BCC4C
_080BC3C0:
movs r0, 0x80
lsls r0, 5
ands r1, r0
cmp r1, 0
beq _080BC3E0
ldr r0, _080BC3D8 @ =gGameVersion
ldrb r0, [r0]
cmp r0, 0x2
beq _080BC3E0
movs r4, 0x3
ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
b _080BC3E8
.align 2, 0
_080BC3D8: .4byte gGameVersion
_080BC3DC: .4byte task00_battle_intro_80BC6C8
_080BC3E0:
ldr r1, _080BC414 @ =gUnknown_83E7CD4
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
_080BC3E8:
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080BC418 @ =gTasks
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, r0
movs r0, 0
strh r0, [r1, 0x8]
strh r4, [r1, 0xA]
strh r0, [r1, 0xC]
strh r0, [r1, 0xE]
strh r0, [r1, 0x10]
strh r0, [r1, 0x12]
strh r0, [r1, 0x14]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BC414: .4byte gUnknown_83E7CD4
_080BC418: .4byte gTasks
thumb_func_end sub_80BC3A0
thumb_func_start sub_80BC41C
sub_80BC41C: @ 80BC41C
push {r4,lr}
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r0, _080BC468 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
ldr r0, _080BC46C @ =gBattle_BG1_Y
strh r1, [r0]
ldr r0, _080BC470 @ =gBattle_BG2_X
strh r1, [r0]
ldr r0, _080BC474 @ =gBattle_BG2_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
ldr r4, _080BC478 @ =0x00003f3f
movs r0, 0x48
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BC468: .4byte gBattle_BG1_X
_080BC46C: .4byte gBattle_BG1_Y
_080BC470: .4byte gBattle_BG2_X
_080BC474: .4byte gBattle_BG2_Y
_080BC478: .4byte 0x00003f3f
thumb_func_end sub_80BC41C
thumb_func_start task_battle_intro_80BC47C
task_battle_intro_80BC47C: @ 80BC47C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080BC4B4 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
strh r0, [r1]
ldr r1, _080BC4B8 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
mov r8, r1
cmp r0, 0x4
bls _080BC4A8
b _080BC6BA
_080BC4A8:
lsls r0, 2
ldr r1, _080BC4BC @ =_080BC4C0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BC4B4: .4byte gBattle_BG1_X
_080BC4B8: .4byte gTasks
_080BC4BC: .4byte _080BC4C0
.align 2, 0
_080BC4C0:
.4byte _080BC4D4
.4byte _080BC504
.4byte _080BC52C
.4byte _080BC574
.4byte _080BC6B4
_080BC4D4:
ldr r0, _080BC4EC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080BC4F0
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
add r0, r8
movs r1, 0x10
b _080BC4FA
.align 2, 0
_080BC4EC: .4byte gBattleTypeFlags
_080BC4F0:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
add r0, r8
movs r1, 0x1
_080BC4FA:
strh r1, [r0, 0xC]
ldrh r1, [r0, 0x8]
adds r1, 0x1
strh r1, [r0, 0x8]
b _080BC6BA
_080BC504:
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
mov r3, r8
adds r1, r0, r3
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
cmp r0, 0
beq _080BC51C
b _080BC6BA
_080BC51C:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
b _080BC6BA
_080BC52C:
ldr r1, _080BC568 @ =gUnknown_2022986
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
movs r1, 0xC0
lsls r1, 6
cmp r0, r1
beq _080BC544
b _080BC6BA
_080BC544:
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
add r1, r8
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
ldr r2, _080BC56C @ =gUnknown_2023F4C
ldrh r1, [r2]
ldr r0, _080BC570 @ =0x0000fffe
ands r0, r1
strh r0, [r2]
b _080BC6BA
.align 2, 0
_080BC568: .4byte gUnknown_2022986
_080BC56C: .4byte gUnknown_2023F4C
_080BC570: .4byte 0x0000fffe
_080BC574:
lsls r0, r4, 2
adds r1, r0, r4
lsls r1, 3
mov r5, r8
adds r2, r1, r5
ldrh r3, [r2, 0xE]
movs r5, 0xE
ldrsh r1, [r2, r5]
mov r12, r0
cmp r1, 0
beq _080BC590
subs r0, r3, 0x1
strh r0, [r2, 0xE]
b _080BC5BE
_080BC590:
movs r1, 0xA
ldrsh r0, [r2, r1]
cmp r0, 0x1
bne _080BC5B0
ldr r2, _080BC5A8 @ =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, _080BC5AC @ =0x0000ffb0
cmp r1, r0
beq _080BC5BE
subs r0, r1, 0x2
b _080BC5BC
.align 2, 0
_080BC5A8: .4byte gBattle_BG1_Y
_080BC5AC: .4byte 0x0000ffb0
_080BC5B0:
ldr r2, _080BC690 @ =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, _080BC694 @ =0x0000ffc8
cmp r1, r0
beq _080BC5BE
subs r0, r1, 0x1
_080BC5BC:
strh r0, [r2]
_080BC5BE:
ldr r2, _080BC698 @ =gUnknown_2022986
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _080BC5D2
ldr r3, _080BC69C @ =0xfffffc04
adds r0, r1, r3
strh r0, [r2]
_080BC5D2:
mov r5, r12
adds r0, r5, r4
lsls r0, 3
mov r2, r8
adds r1, r0, r2
ldrh r2, [r1, 0xC]
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0
beq _080BC5EA
subs r0, r2, 0x2
strh r0, [r1, 0xC]
_080BC5EA:
movs r3, 0
ldr r5, _080BC6A0 @ =gScanlineEffect
mov r9, r5
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
mov r6, r9
adds r5, r1, 0
_080BC5F6:
lsls r2, r3, 1
ldrb r1, [r6, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
adds r2, r7
ldrh r0, [r5, 0xC]
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x4F
ble _080BC5F6
cmp r3, 0x9F
bgt _080BC63A
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
ldr r6, _080BC6A0 @ =gScanlineEffect
ldr r1, _080BC6A8 @ =gTasks
mov r2, r12
adds r0, r2, r4
lsls r0, 3
adds r5, r0, r1
_080BC620:
lsls r2, r3, 1
ldrb r1, [r6, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
adds r2, r7
ldrh r0, [r5, 0xC]
negs r0, r0
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x9F
ble _080BC620
_080BC63A:
mov r3, r12
adds r0, r3, r4
lsls r0, 3
mov r5, r8
adds r1, r0, r5
movs r0, 0xC
ldrsh r2, [r1, r0]
cmp r2, 0
bne _080BC6BA
movs r0, 0x3
mov r3, r9
strb r0, [r3, 0x15]
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
str r2, [sp]
ldr r1, _080BC6AC @ =0x0600e000
ldr r2, _080BC6B0 @ =0x05000200
mov r0, sp
bl CpuSet
movs r0, 0x1
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r0, 0x2
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r1, 0x9C
lsls r1, 8
movs r0, 0xA
bl SetGpuReg
movs r1, 0xBC
lsls r1, 7
movs r0, 0xC
bl SetGpuReg
b _080BC6BA
.align 2, 0
_080BC690: .4byte gBattle_BG1_Y
_080BC694: .4byte 0x0000ffc8
_080BC698: .4byte gUnknown_2022986
_080BC69C: .4byte 0xfffffc04
_080BC6A0: .4byte gScanlineEffect
_080BC6A4: .4byte gScanlineEffectRegBuffers
_080BC6A8: .4byte gTasks
_080BC6AC: .4byte 0x0600e000
_080BC6B0: .4byte 0x05000200
_080BC6B4:
adds r0, r4, 0
bl sub_80BC41C
_080BC6BA:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end task_battle_intro_80BC47C
thumb_func_start task00_battle_intro_80BC6C8
task00_battle_intro_80BC6C8: @ 80BC6C8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080BC6F4 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0xA
ldrsh r0, [r0, r2]
adds r2, r1, 0
cmp r0, 0x3
beq _080BC708
cmp r0, 0x3
bgt _080BC6F8
cmp r0, 0x2
beq _080BC6FC
b _080BC710
.align 2, 0
_080BC6F4: .4byte gTasks
_080BC6F8:
cmp r0, 0x4
bne _080BC710
_080BC6FC:
ldr r1, _080BC704 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
b _080BC70E
.align 2, 0
_080BC704: .4byte gBattle_BG1_X
_080BC708:
ldr r1, _080BC74C @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_080BC70E:
strh r0, [r1]
_080BC710:
lsls r0, r5, 2
adds r1, r0, r5
lsls r1, 3
adds r4, r1, r2
movs r3, 0xA
ldrsh r1, [r4, r3]
adds r6, r0, 0
cmp r1, 0x4
bne _080BC774
ldr r7, _080BC750 @ =gBattle_BG1_Y
ldrh r0, [r4, 0x14]
bl Cos2
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080BC736
ldr r1, _080BC754 @ =0x000001ff
adds r0, r1
_080BC736:
asrs r0, 9
subs r0, 0x8
strh r0, [r7]
ldrh r1, [r4, 0x14]
movs r2, 0x14
ldrsh r0, [r4, r2]
cmp r0, 0xB3
bgt _080BC758
adds r0, r1, 0x4
b _080BC75A
.align 2, 0
_080BC74C: .4byte gBattle_BG1_X
_080BC750: .4byte gBattle_BG1_Y
_080BC754: .4byte 0x000001ff
_080BC758:
adds r0, r1, 0x6
_080BC75A:
strh r0, [r4, 0x14]
ldr r2, _080BC790 @ =gTasks
adds r0, r6, r5
lsls r0, 3
adds r3, r0, r2
movs r0, 0x14
ldrsh r1, [r3, r0]
movs r0, 0xB4
lsls r0, 1
cmp r1, r0
bne _080BC774
movs r0, 0
strh r0, [r3, 0x14]
_080BC774:
adds r0, r6, r5
lsls r0, 3
adds r0, r2
movs r1, 0x8
ldrsh r0, [r0, r1]
cmp r0, 0x4
bls _080BC784
b _080BC9AA
_080BC784:
lsls r0, 2
ldr r1, _080BC794 @ =_080BC798
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BC790: .4byte gTasks
_080BC794: .4byte _080BC798
.align 2, 0
_080BC798:
.4byte _080BC7AC
.4byte _080BC7DC
.4byte _080BC808
.4byte _080BC858
.4byte _080BC9A4
_080BC7AC:
ldr r1, _080BC7C8 @ =gTasks
adds r0, r6, r5
lsls r0, 3
adds r2, r0, r1
movs r3, 0x10
strh r3, [r2, 0x10]
ldr r0, _080BC7CC @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080BC7D0
strh r3, [r2, 0xC]
b _080BC7D4
.align 2, 0
_080BC7C8: .4byte gTasks
_080BC7CC: .4byte gBattleTypeFlags
_080BC7D0:
movs r0, 0x1
strh r0, [r2, 0xC]
_080BC7D4:
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
b _080BC9AA
_080BC7DC:
ldr r0, _080BC804 @ =gTasks
adds r1, r6, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
cmp r0, 0
beq _080BC7F2
b _080BC9AA
_080BC7F2:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
b _080BC9AA
.align 2, 0
_080BC804: .4byte gTasks
_080BC808:
ldr r1, _080BC848 @ =gUnknown_2022986
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
movs r1, 0xC0
lsls r1, 6
cmp r0, r1
beq _080BC820
b _080BC9AA
_080BC820:
ldr r0, _080BC84C @ =gTasks
adds r1, r6, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
ldr r2, _080BC850 @ =gUnknown_2023F4C
ldrh r1, [r2]
ldr r0, _080BC854 @ =0x0000fffe
ands r0, r1
strh r0, [r2]
b _080BC9AA
.align 2, 0
_080BC848: .4byte gUnknown_2022986
_080BC84C: .4byte gTasks
_080BC850: .4byte gUnknown_2023F4C
_080BC854: .4byte 0x0000fffe
_080BC858:
ldr r0, _080BC890 @ =gTasks
adds r1, r6, r5
lsls r1, 3
adds r1, r0
ldrh r2, [r1, 0xE]
movs r3, 0xE
ldrsh r0, [r1, r3]
cmp r0, 0
beq _080BC898
subs r0, r2, 0x1
strh r0, [r1, 0xE]
lsls r0, 16
cmp r0, 0
bne _080BC8B8
ldr r1, _080BC894 @ =0x00001842
movs r0, 0x50
bl SetGpuReg
movs r0, 0x52
movs r1, 0xF
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
b _080BC8B8
.align 2, 0
_080BC890: .4byte gTasks
_080BC894: .4byte 0x00001842
_080BC898:
ldrh r2, [r1, 0x10]
movs r0, 0x1F
ands r0, r2
cmp r0, 0
beq _080BC8B8
ldrh r0, [r1, 0x12]
subs r0, 0x1
strh r0, [r1, 0x12]
lsls r0, 16
cmp r0, 0
bne _080BC8B8
adds r0, r2, 0
adds r0, 0xFF
strh r0, [r1, 0x10]
movs r0, 0x4
strh r0, [r1, 0x12]
_080BC8B8:
ldr r2, _080BC988 @ =gUnknown_2022986
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _080BC8CC
ldr r3, _080BC98C @ =0xfffffc04
adds r0, r1, r3
strh r0, [r2]
_080BC8CC:
ldr r0, _080BC990 @ =gTasks
adds r1, r6, r5
lsls r1, 3
adds r1, r0
ldrh r2, [r1, 0xC]
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0
beq _080BC8E2
subs r0, r2, 0x2
strh r0, [r1, 0xC]
_080BC8E2:
movs r3, 0
ldr r0, _080BC994 @ =gScanlineEffect
mov r8, r0
ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
mov r12, r2
mov r7, r8
adds r4, r1, 0
_080BC8F0:
lsls r2, r3, 1
ldrb r1, [r7, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
add r2, r12
ldrh r0, [r4, 0xC]
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x4F
ble _080BC8F0
cmp r3, 0x9F
bgt _080BC934
ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
mov r12, r0
ldr r7, _080BC994 @ =gScanlineEffect
ldr r1, _080BC990 @ =gTasks
adds r0, r6, r5
lsls r0, 3
adds r4, r0, r1
_080BC91A:
lsls r2, r3, 1
ldrb r1, [r7, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
add r2, r12
ldrh r0, [r4, 0xC]
negs r0, r0
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x9F
ble _080BC91A
_080BC934:
ldr r1, _080BC990 @ =gTasks
adds r0, r6, r5
lsls r0, 3
adds r1, r0, r1
movs r3, 0xC
ldrsh r2, [r1, r3]
cmp r2, 0
bne _080BC9AA
movs r0, 0x3
mov r3, r8
strb r0, [r3, 0x15]
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
str r2, [sp]
ldr r1, _080BC99C @ =0x0600e000
ldr r2, _080BC9A0 @ =0x05000200
mov r0, sp
bl CpuSet
movs r0, 0x1
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r0, 0x2
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r1, 0x9C
lsls r1, 8
movs r0, 0xA
bl SetGpuReg
movs r1, 0xBC
lsls r1, 7
movs r0, 0xC
bl SetGpuReg
b _080BC9AA
.align 2, 0
_080BC988: .4byte gUnknown_2022986
_080BC98C: .4byte 0xfffffc04
_080BC990: .4byte gTasks
_080BC994: .4byte gScanlineEffect
_080BC998: .4byte gScanlineEffectRegBuffers
_080BC99C: .4byte 0x0600e000
_080BC9A0: .4byte 0x05000200
_080BC9A4:
adds r0, r5, 0
bl sub_80BC41C
_080BC9AA:
ldr r0, _080BC9D0 @ =gTasks
adds r1, r6, r5
lsls r1, 3
adds r1, r0
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0x4
beq _080BC9C2
ldrh r1, [r1, 0x10]
movs r0, 0x52
bl SetGpuReg
_080BC9C2:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BC9D0: .4byte gTasks
thumb_func_end task00_battle_intro_80BC6C8
thumb_func_start task_battle_intro_anim
task_battle_intro_anim: @ 80BC9D4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080BCA08 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
strh r0, [r1]
ldr r1, _080BCA0C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0x8
ldrsh r0, [r0, r2]
adds r4, r1, 0
cmp r0, 0x4
bls _080BC9FE
b _080BCC22
_080BC9FE:
lsls r0, 2
ldr r1, _080BCA10 @ =_080BCA14
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BCA08: .4byte gBattle_BG1_X
_080BCA0C: .4byte gTasks
_080BCA10: .4byte _080BCA14
.align 2, 0
_080BCA14:
.4byte _080BCA28
.4byte _080BCA7C
.4byte _080BCAA8
.4byte _080BCAF8
.4byte _080BCC1C
_080BCA28:
ldr r1, _080BCA60 @ =0x00001842
movs r0, 0x50
bl SetGpuReg
ldr r4, _080BCA64 @ =0x00000808
movs r0, 0x52
adds r1, r4, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
ldr r1, _080BCA68 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r2, r0, r1
strh r4, [r2, 0x10]
ldr r0, _080BCA6C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080BCA70
movs r0, 0x10
b _080BCA72
.align 2, 0
_080BCA60: .4byte 0x00001842
_080BCA64: .4byte 0x00000808
_080BCA68: .4byte gTasks
_080BCA6C: .4byte gBattleTypeFlags
_080BCA70:
movs r0, 0x1
_080BCA72:
strh r0, [r2, 0xC]
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
b _080BCC22
_080BCA7C:
ldr r0, _080BCAA4 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
cmp r0, 0
beq _080BCA94
b _080BCC22
_080BCA94:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
b _080BCC22
.align 2, 0
_080BCAA4: .4byte gTasks
_080BCAA8:
ldr r1, _080BCAE8 @ =gUnknown_2022986
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
movs r1, 0xC0
lsls r1, 6
cmp r0, r1
beq _080BCAC0
b _080BCC22
_080BCAC0:
ldr r0, _080BCAEC @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
ldr r2, _080BCAF0 @ =gUnknown_2023F4C
ldrh r1, [r2]
ldr r0, _080BCAF4 @ =0x0000fffe
ands r0, r1
strh r0, [r2]
b _080BCC22
.align 2, 0
_080BCAE8: .4byte gUnknown_2022986
_080BCAEC: .4byte gTasks
_080BCAF0: .4byte gUnknown_2023F4C
_080BCAF4: .4byte 0x0000fffe
_080BCAF8:
lsls r0, r5, 2
adds r1, r0, r5
lsls r1, 3
adds r2, r1, r4
ldrh r3, [r2, 0xE]
movs r6, 0xE
ldrsh r1, [r2, r6]
mov r12, r0
cmp r1, 0
beq _080BCB12
subs r0, r3, 0x1
strh r0, [r2, 0xE]
b _080BCB32
_080BCB12:
ldrh r1, [r2, 0x10]
movs r0, 0xF
ands r0, r1
cmp r0, 0
beq _080BCB32
ldrh r0, [r2, 0x12]
subs r0, 0x1
strh r0, [r2, 0x12]
lsls r0, 16
cmp r0, 0
bne _080BCB32
adds r0, r1, 0
adds r0, 0xFF
strh r0, [r2, 0x10]
movs r0, 0x6
strh r0, [r2, 0x12]
_080BCB32:
ldr r2, _080BCC00 @ =gUnknown_2022986
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _080BCB46
ldr r3, _080BCC04 @ =0xfffffc04
adds r0, r1, r3
strh r0, [r2]
_080BCB46:
mov r6, r12
adds r0, r6, r5
lsls r0, 3
adds r1, r0, r4
ldrh r2, [r1, 0xC]
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0
beq _080BCB5C
subs r0, r2, 0x2
strh r0, [r1, 0xC]
_080BCB5C:
movs r3, 0
ldr r6, _080BCC08 @ =gScanlineEffect
mov r8, r6
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
adds r4, r1, 0
_080BCB66:
lsls r2, r3, 1
ldrb r1, [r6, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
adds r2, r7
ldrh r0, [r4, 0xC]
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x4F
ble _080BCB66
cmp r3, 0x9F
bgt _080BCBAA
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
ldr r6, _080BCC08 @ =gScanlineEffect
ldr r1, _080BCC10 @ =gTasks
mov r2, r12
adds r0, r2, r5
lsls r0, 3
adds r4, r0, r1
_080BCB90:
lsls r2, r3, 1
ldrb r1, [r6, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
adds r2, r7
ldrh r0, [r4, 0xC]
negs r0, r0
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x9F
ble _080BCB90
_080BCBAA:
ldr r1, _080BCC10 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r1, r0, r1
movs r3, 0xC
ldrsh r2, [r1, r3]
cmp r2, 0
bne _080BCC22
movs r0, 0x3
mov r6, r8
strb r0, [r6, 0x15]
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
str r2, [sp]
ldr r1, _080BCC14 @ =0x0600e000
ldr r2, _080BCC18 @ =0x05000200
mov r0, sp
bl CpuSet
movs r0, 0x1
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r0, 0x2
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r1, 0x9C
lsls r1, 8
movs r0, 0xA
bl SetGpuReg
movs r1, 0xBC
lsls r1, 7
movs r0, 0xC
bl SetGpuReg
b _080BCC22
.align 2, 0
_080BCC00: .4byte gUnknown_2022986
_080BCC04: .4byte 0xfffffc04
_080BCC08: .4byte gScanlineEffect
_080BCC0C: .4byte gScanlineEffectRegBuffers
_080BCC10: .4byte gTasks
_080BCC14: .4byte 0x0600e000
_080BCC18: .4byte 0x05000200
_080BCC1C:
adds r0, r5, 0
bl sub_80BC41C
_080BCC22:
ldr r0, _080BCC48 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0x4
beq _080BCC3C
ldrh r1, [r1, 0x10]
movs r0, 0x52
bl SetGpuReg
_080BCC3C:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BCC48: .4byte gTasks
thumb_func_end task_battle_intro_anim
thumb_func_start sub_80BCC4C
sub_80BCC4C: @ 80BCC4C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x8
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080BCC98 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r7, r0, r1
movs r1, 0x8
ldrsh r0, [r7, r1]
cmp r0, 0x1
ble _080BCCC2
movs r2, 0x10
ldrsh r0, [r7, r2]
cmp r0, 0
bne _080BCCC2
ldr r2, _080BCC9C @ =gBattle_BG1_X
ldrh r1, [r2]
movs r0, 0x80
lsls r0, 8
ands r0, r1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0
bne _080BCC8A
cmp r1, 0x4F
bhi _080BCCA4
_080BCC8A:
adds r0, r1, 0x3
strh r0, [r2]
ldr r1, _080BCCA0 @ =gBattle_BG2_X
ldrh r0, [r1]
subs r0, 0x3
strh r0, [r1]
b _080BCCC2
.align 2, 0
_080BCC98: .4byte gTasks
_080BCC9C: .4byte gBattle_BG1_X
_080BCCA0: .4byte gBattle_BG2_X
_080BCCA4:
str r5, [sp]
ldr r1, _080BCCE4 @ =0x0600e000
ldr r4, _080BCCE8 @ =0x05000200
mov r0, sp
adds r2, r4, 0
bl CpuSet
str r5, [sp, 0x4]
add r0, sp, 0x4
ldr r1, _080BCCEC @ =0x0600f000
adds r2, r4, 0
bl CpuSet
movs r0, 0x1
strh r0, [r7, 0x10]
_080BCCC2:
ldr r0, _080BCCF0 @ =gTasks
lsls r2, r6, 2
adds r1, r2, r6
lsls r1, 3
adds r1, r0
movs r3, 0x8
ldrsh r1, [r1, r3]
mov r9, r0
adds r5, r2, 0
cmp r1, 0x4
bls _080BCCDA
b _080BCEE6
_080BCCDA:
lsls r0, r1, 2
ldr r1, _080BCCF4 @ =_080BCCF8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BCCE4: .4byte 0x0600e000
_080BCCE8: .4byte 0x05000200
_080BCCEC: .4byte 0x0600f000
_080BCCF0: .4byte gTasks
_080BCCF4: .4byte _080BCCF8
.align 2, 0
_080BCCF8:
.4byte _080BCD0C
.4byte _080BCD1E
.4byte _080BCDC4
.4byte _080BCE08
.4byte _080BCEE0
_080BCD0C:
adds r0, r5, r6
lsls r0, 3
add r0, r9
movs r1, 0x20
strh r1, [r0, 0xC]
ldrh r1, [r0, 0x8]
adds r1, 0x1
strh r1, [r0, 0x8]
b _080BCEE6
_080BCD1E:
adds r0, r5, r6
lsls r0, 3
mov r2, r9
adds r1, r0, r2
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
lsls r0, 16
cmp r0, 0
beq _080BCD34
b _080BCEE6
_080BCD34:
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
ldr r4, _080BCDB4 @ =gSprites
ldr r5, _080BCDB8 @ =gBattleStruct
ldr r0, [r5]
adds r0, 0x7D
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r3, [r1, 0x1]
movs r2, 0xD
negs r2, r2
adds r0, r2, 0
ands r0, r3
movs r3, 0x8
mov r9, r3
mov r3, r9
orrs r0, r3
strb r0, [r1, 0x1]
ldr r3, [r5]
adds r0, r3, 0
adds r0, 0x7D
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
movs r1, 0x1C
adds r1, r4
mov r8, r1
add r0, r8
ldr r6, _080BCDBC @ =sub_801182C
str r6, [r0]
adds r3, 0x7E
ldrb r1, [r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0, 0x1]
ands r2, r1
mov r3, r9
orrs r2, r3
strb r2, [r0, 0x1]
ldr r0, [r5]
adds r0, 0x7E
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
str r6, [r0]
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
ldr r1, _080BCDC0 @ =0x00003f06
movs r0, 0x4A
bl SetGpuReg
b _080BCEE6
.align 2, 0
_080BCDB4: .4byte gSprites
_080BCDB8: .4byte gBattleStruct
_080BCDBC: .4byte sub_801182C
_080BCDC0: .4byte 0x00003f06
_080BCDC4:
ldr r1, _080BCDFC @ =gUnknown_2022986
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
movs r1, 0xFF
lsls r1, 8
ands r0, r1
movs r1, 0xC0
lsls r1, 6
cmp r0, r1
beq _080BCDDC
b _080BCEE6
_080BCDDC:
adds r1, r5, r6
lsls r1, 3
add r1, r9
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
ldr r2, _080BCE00 @ =gUnknown_2023F4C
ldrh r1, [r2]
ldr r0, _080BCE04 @ =0x0000fffe
ands r0, r1
strh r0, [r2]
b _080BCEE6
.align 2, 0
_080BCDFC: .4byte gUnknown_2022986
_080BCE00: .4byte gUnknown_2023F4C
_080BCE04: .4byte 0x0000fffe
_080BCE08:
ldr r2, _080BCECC @ =gUnknown_2022986
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _080BCE1C
ldr r3, _080BCED0 @ =0xfffffc04
adds r0, r1, r3
strh r0, [r2]
_080BCE1C:
adds r0, r5, r6
lsls r0, 3
mov r2, r9
adds r1, r0, r2
ldrh r2, [r1, 0xC]
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0
beq _080BCE32
subs r0, r2, 0x2
strh r0, [r1, 0xC]
_080BCE32:
movs r3, 0
ldr r0, _080BCED4 @ =gScanlineEffect
mov r12, r0
ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
mov r8, r2
mov r7, r12
adds r4, r1, 0
_080BCE40:
lsls r2, r3, 1
ldrb r1, [r7, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
add r2, r8
ldrh r0, [r4, 0xC]
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x4F
ble _080BCE40
cmp r3, 0x9F
bgt _080BCE84
ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
mov r8, r0
ldr r7, _080BCED4 @ =gScanlineEffect
ldr r1, _080BCEDC @ =gTasks
adds r0, r5, r6
lsls r0, 3
adds r4, r0, r1
_080BCE6A:
lsls r2, r3, 1
ldrb r1, [r7, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
adds r2, r0
add r2, r8
ldrh r0, [r4, 0xC]
negs r0, r0
strh r0, [r2]
adds r3, 0x1
cmp r3, 0x9F
ble _080BCE6A
_080BCE84:
adds r0, r5, r6
lsls r0, 3
mov r2, r9
adds r1, r0, r2
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080BCEE6
movs r0, 0x3
mov r2, r12
strb r0, [r2, 0x15]
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0x1
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r0, 0x2
movs r1, 0x1
movs r2, 0
bl SetBgAttribute
movs r1, 0x9C
lsls r1, 8
movs r0, 0xA
bl SetGpuReg
movs r1, 0xBC
lsls r1, 7
movs r0, 0xC
bl SetGpuReg
b _080BCEE6
.align 2, 0
_080BCECC: .4byte gUnknown_2022986
_080BCED0: .4byte 0xfffffc04
_080BCED4: .4byte gScanlineEffect
_080BCED8: .4byte gScanlineEffectRegBuffers
_080BCEDC: .4byte gTasks
_080BCEE0:
adds r0, r6, 0
bl sub_80BC41C
_080BCEE6:
add sp, 0x8
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80BCC4C
thumb_func_start sub_80BCEF4
sub_80BCEF4: @ 80BCEF4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
str r0, [sp]
adds r6, r2, 0
adds r4, r3, 0
ldr r0, [sp, 0x24]
ldr r7, [sp, 0x28]
ldr r2, [sp, 0x2C]
mov r9, r2
ldr r5, [sp, 0x30]
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r6, 24
lsrs r6, 24
lsls r4, 24
lsrs r4, 24
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr
ldr r2, [r1]
lsls r4, 2
adds r2, 0x4
adds r2, r4
ldr r1, _080BCFC8 @ =gBattleMonForms
adds r0, r1
ldrb r1, [r0]
lsls r1, 11
ldr r0, [r2]
adds r0, r1
movs r2, 0x80
lsls r2, 3
adds r1, r7, 0
bl CpuSet
ldr r1, [sp]
lsls r0, r1, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 5
adds r1, r7, 0
adds r3, r5, 0
bl LoadBgTiles
adds r0, r6, 0
adds r0, 0x8
cmp r6, r0
bge _080BCFA0
mov r12, r0
mov r2, r8
lsls r7, r2, 1
_080BCF72:
mov r1, r8
adds r2, r1, 0
adds r2, 0x8
adds r4, r6, 0x1
cmp r1, r2
bge _080BCF9A
mov r0, r10
lsls r3, r0, 12
lsls r0, r6, 6
add r0, r9
adds r6, r7, r0
subs r1, r2, r1
_080BCF8A:
adds r0, r5, 0
orrs r0, r3
strh r0, [r6]
adds r5, 0x1
adds r6, 0x2
subs r1, 0x1
cmp r1, 0
bne _080BCF8A
_080BCF9A:
adds r6, r4, 0
cmp r6, r12
blt _080BCF72
_080BCFA0:
ldr r1, [sp]
lsls r0, r1, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 4
mov r1, r9
movs r3, 0
bl LoadBgTilemap
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BCFC4: .4byte gMonSpritesGfxPtr
_080BCFC8: .4byte gBattleMonForms
thumb_func_end sub_80BCEF4
thumb_func_start sub_80BCFCC
sub_80BCFCC: @ 80BCFCC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, [sp, 0x24]
ldr r5, [sp, 0x28]
mov r8, r5
ldr r5, [sp, 0x2C]
ldr r6, [sp, 0x30]
mov r9, r6
lsls r0, 24
lsrs r0, 24
mov r12, r0
lsls r1, 24
lsls r2, 24
lsls r3, 24
lsls r4, 24
lsrs r4, 24
mov r10, r4
mov r7, r8
lsls r7, 16
lsrs r6, r7, 16
lsls r5, 24
lsrs r5, 24
mov r0, r9
lsls r0, 24
mov r9, r0
ldr r4, _080BD090 @ =0x040000d4
ldr r0, _080BD094 @ =gMonSpritesGfxPtr
ldr r0, [r0]
lsrs r2, 22
adds r0, 0x4
adds r0, r2
lsrs r3, 13
ldr r0, [r0]
adds r0, r3
str r0, [r4]
movs r0, 0xC0
lsls r0, 19
adds r6, r0
str r6, [r4, 0x4]
ldr r0, _080BD098 @ =0x80000400
str r0, [r4, 0x8]
ldr r0, [r4, 0x8]
adds r2, r7, 0
lsrs r2, 21
mov r6, r9
lsrs r6, 15
subs r4, r2, r6
lsrs r0, r1, 24
adds r1, r0, 0
adds r1, 0x8
cmp r0, r1
bge _080BD080
mov r9, r1
mov r7, r12
lsls r7, 1
mov r8, r7
lsls r5, 11
str r5, [sp]
_080BD048:
mov r2, r12
adds r3, r2, 0
adds r3, 0x8
adds r5, r0, 0x1
cmp r2, r3
bge _080BD07A
mov r1, r10
lsls r6, r1, 12
lsls r0, 6
movs r7, 0xC0
lsls r7, 19
adds r0, r7
ldr r1, [sp]
adds r0, r1, r0
mov r7, r8
adds r1, r7, r0
subs r2, r3, r2
_080BD06A:
adds r0, r4, 0
orrs r0, r6
strh r0, [r1]
adds r4, 0x1
adds r1, 0x2
subs r2, 0x1
cmp r2, 0
bne _080BD06A
_080BD07A:
adds r0, r5, 0
cmp r0, r9
blt _080BD048
_080BD080:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080BD090: .4byte 0x040000d4
_080BD094: .4byte gMonSpritesGfxPtr
_080BD098: .4byte 0x80000400
thumb_func_end sub_80BCFCC
.align 2, 0 @ Don't pad with nop.