Files
Pokemon-Firered/asm/pokemon_special_anim.s
T
2020-03-21 10:48:55 -04:00

2560 lines
41 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_811D6EC
sub_811D6EC: @ 811D6EC
push {lr}
bl sub_811D0A8
movs r1, 0
strh r1, [r0]
pop {r0}
bx r0
thumb_func_end sub_811D6EC
thumb_func_start sub_811D6FC
sub_811D6FC: @ 811D6FC
push {r4,lr}
bl sub_811D0A8
adds r4, r0, 0
ldrh r0, [r4]
cmp r0, 0
beq _0811D710
cmp r0, 0x1
beq _0811D722
b _0811D72C
_0811D710:
bl sub_811E10C
movs r0, 0x1D
bl PlaySE
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
b _0811D72C
_0811D722:
bl sub_811E138
lsls r0, 24
lsrs r0, 24
b _0811D72E
_0811D72C:
movs r0, 0x1
_0811D72E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_811D6FC
thumb_func_start sub_811D734
sub_811D734: @ 811D734
push {lr}
sub sp, 0x8
movs r0, 0x2
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
movs r0, 0x78
movs r1, 0x38
movs r2, 0x4
movs r3, 0x4
bl sub_811E5B8
add sp, 0x8
pop {r0}
bx r0
thumb_func_end sub_811D734
thumb_func_start sub_811D754
sub_811D754: @ 811D754
push {lr}
bl sub_811E680
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_811D754
thumb_func_start sub_811D764
sub_811D764: @ 811D764
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
adds r5, r1, 0
movs r0, 0x1
movs r1, 0x1
movs r2, 0xE
bl DrawTextBorderOuter
movs r0, 0x2
str r0, [sp]
movs r0, 0x3
str r0, [sp, 0x4]
movs r0, 0x1
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x1
bl DrawLevelUpWindowPg1
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
movs r1, 0x3
bl CopyWindowToVram
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811D764
thumb_func_start sub_811D7A0
sub_811D7A0: @ 811D7A0
push {lr}
sub sp, 0x4
adds r1, r0, 0
movs r0, 0x3
str r0, [sp]
movs r0, 0x1
movs r2, 0x1
movs r3, 0x2
bl DrawLevelUpWindowPg2
movs r0, 0x1
movs r1, 0x2
bl CopyWindowToVram
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_811D7A0
thumb_func_start sub_811D7C4
sub_811D7C4: @ 811D7C4
push {lr}
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_811D7C4
thumb_func_start sub_811D7D4
sub_811D7D4: @ 811D7D4
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
ldr r1, _0811D80C @ =gUnknown_845973C
movs r0, 0x3
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBuffer
ldr r1, _0811D810 @ =gUnknown_845967C
movs r0, 0
str r0, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
bl DecompressAndCopyTileDataToVram
cmp r4, 0x4
beq _0811D818
ldr r0, _0811D814 @ =gUnknown_845963C
movs r1, 0
movs r2, 0x20
bl LoadPalette
b _0811D822
.align 2, 0
_0811D80C: .4byte gUnknown_845973C
_0811D810: .4byte gUnknown_845967C
_0811D814: .4byte gUnknown_845963C
_0811D818:
ldr r0, _0811D82C @ =gUnknown_845965C
movs r1, 0
movs r2, 0x20
bl LoadPalette
_0811D822:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0811D82C: .4byte gUnknown_845965C
thumb_func_end sub_811D7D4
thumb_func_start sub_811D830
sub_811D830: @ 811D830
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
str r0, [sp]
bl sub_811D0A8
adds r5, r0, 0
bl sub_811D094
mov r8, r0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
mov r0, r8
movs r1, 0
bl GetMonData
mov r10, r0
adds r0, r7, 0
mov r1, r10
movs r2, 0x2
bl sub_812EA78
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0xFF
beq _0811D87E
movs r0, 0x48
strh r0, [r5, 0x6]
adds r0, r1, 0
adds r0, 0x30
b _0811D884
_0811D87E:
movs r0, 0x48
strh r0, [r5, 0x6]
movs r0, 0x60
_0811D884:
strh r0, [r5, 0x8]
movs r4, 0x80
lsls r4, 6
adds r0, r4, 0
bl Alloc
adds r6, r0, 0
adds r0, r4, 0
bl Alloc
mov r9, r0
movs r0, 0x80
lsls r0, 1
bl Alloc
adds r4, r0, 0
cmp r6, 0
beq _0811D920
mov r0, r9
cmp r0, 0
beq _0811D916
cmp r4, 0
beq _0811D916
lsls r0, r7, 3
ldr r1, _0811D900 @ =gMonFrontPicTable
adds r0, r1
adds r1, r6, 0
adds r2, r7, 0
mov r3, r10
bl HandleLoadSpecialPokePic
mov r0, r8
bl GetMonFrontSpritePal
adds r1, r4, 0
bl LZ77UnCompWram
adds r0, r6, 0
adds r1, r4, 0
bl sub_811DC14
ldr r0, _0811D904 @ =gUnknown_8459A30
movs r1, 0x6
ldrsh r2, [r5, r1]
movs r1, 0x78
movs r3, 0x4
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _0811D90C
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _0811D908 @ =gSprites
adds r0, r1
str r0, [r5, 0xC]
ldr r1, [sp]
bl sub_811DB14
b _0811D910
.align 2, 0
_0811D900: .4byte gMonFrontPicTable
_0811D904: .4byte gUnknown_8459A30
_0811D908: .4byte gSprites
_0811D90C:
movs r0, 0
str r0, [r5, 0xC]
_0811D910:
mov r0, sp
ldrb r0, [r0]
strb r0, [r5, 0xA]
_0811D916:
cmp r6, 0
beq _0811D920
adds r0, r6, 0
bl Free
_0811D920:
mov r1, r9
cmp r1, 0
beq _0811D92C
mov r0, r9
bl Free
_0811D92C:
cmp r4, 0
beq _0811D936
adds r0, r4, 0
bl Free
_0811D936:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_811D830
thumb_func_start sub_811D948
sub_811D948: @ 811D948
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
bl sub_811D0A8
adds r5, r0, 0
ldrb r0, [r5, 0xA]
cmp r6, r0
beq _0811D99C
ldr r0, _0811D990 @ =sub_811D9BC
movs r1, 0x4
bl CreateTask
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r2, [r5, 0xC]
adds r0, r4, 0
movs r1, 0x6
bl SetWordTaskArg
ldr r1, _0811D994 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
ldrb r0, [r5, 0xA]
strh r0, [r1, 0xA]
strh r6, [r1, 0xC]
movs r0, 0x6
strh r0, [r1, 0x12]
ldrb r5, [r5, 0xA]
cmp r6, r5
bls _0811D998
movs r0, 0x1
b _0811D99A
.align 2, 0
_0811D990: .4byte sub_811D9BC
_0811D994: .4byte gTasks
_0811D998:
ldr r0, _0811D9A4 @ =0x0000ffff
_0811D99A:
strh r0, [r1, 0xE]
_0811D99C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0811D9A4: .4byte 0x0000ffff
thumb_func_end sub_811D948
thumb_func_start sub_811D9A8
sub_811D9A8: @ 811D9A8
push {lr}
ldr r0, _0811D9B8 @ =sub_811D9BC
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_0811D9B8: .4byte sub_811D9BC
thumb_func_end sub_811D9A8
thumb_func_start sub_811D9BC
sub_811D9BC: @ 811D9BC
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r6, r0, 24
mov r8, r6
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _0811D9F0 @ =gTasks+0x8
adds r4, r0, r1
adds r0, r6, 0
movs r1, 0x6
bl GetWordTaskArg
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _0811DA26
cmp r0, 0x1
bgt _0811D9F4
cmp r0, 0
beq _0811D9FA
b _0811DA90
.align 2, 0
_0811D9F0: .4byte gTasks+0x8
_0811D9F4:
cmp r0, 0x2
beq _0811DA7A
b _0811DA90
_0811D9FA:
ldrb r1, [r4, 0x2]
adds r0, r5, 0
bl sub_811DA9C
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0
beq _0811DA18
adds r0, r6, 0
movs r1, 0x9
bl GetWordTaskArg
ldrb r1, [r4, 0x2]
bl sub_811DA9C
_0811DA18:
ldrh r0, [r4, 0x6]
ldrh r1, [r4, 0x2]
adds r0, r1
strh r0, [r4, 0x2]
ldrh r0, [r4]
adds r0, 0x1
b _0811DA8E
_0811DA26:
adds r0, r5, 0
bl sub_811DAAC
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0
bne _0811DA90
movs r0, 0x6D
bl PlaySE
ldrb r1, [r4, 0x2]
adds r0, r5, 0
bl sub_811DB14
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0
beq _0811DA58
adds r0, r6, 0
movs r1, 0x9
bl GetWordTaskArg
ldrb r1, [r4, 0x2]
bl sub_811DB48
_0811DA58:
movs r0, 0x2
ldrsh r1, [r4, r0]
movs r2, 0x4
ldrsh r0, [r4, r2]
cmp r1, r0
bne _0811DA74
bl sub_811D0A8
ldrh r1, [r4, 0x4]
strb r1, [r0, 0xA]
mov r0, r8
bl DestroyTask
b _0811DA90
_0811DA74:
strh r7, [r4, 0x8]
movs r0, 0x2
b _0811DA8E
_0811DA7A:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
movs r2, 0xA
ldrsh r1, [r4, r2]
cmp r0, r1
ble _0811DA90
movs r0, 0
_0811DA8E:
strh r0, [r4]
_0811DA90:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_811D9BC
thumb_func_start sub_811DA9C
sub_811DA9C: @ 811DA9C
lsls r1, 24
lsrs r1, 24
movs r2, 0
strh r2, [r0, 0x2E]
strh r2, [r0, 0x30]
strh r1, [r0, 0x32]
bx lr
thumb_func_end sub_811DA9C
thumb_func_start sub_811DAAC
sub_811DAAC: @ 811DAAC
ldr r1, [r0, 0x1C]
ldr r0, _0811DABC @ =SpriteCallbackDummy
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r0, 31
bx lr
.align 2, 0
_0811DABC: .4byte SpriteCallbackDummy
thumb_func_end sub_811DAAC
thumb_func_start sub_811DAC0
sub_811DAC0: @ 811DAC0
lsls r1, 24
lsls r0, 16
asrs r0, 16
ldr r2, _0811DAD8 @ =gUnknown_84599AA
lsrs r1, 23
adds r1, r2
ldrh r1, [r1]
muls r0, r1
lsls r0, 8
asrs r0, 16
bx lr
.align 2, 0
_0811DAD8: .4byte gUnknown_84599AA
thumb_func_end sub_811DAC0
thumb_func_start sub_811DADC
sub_811DADC: @ 811DADC
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl sub_811D0A8
ldrh r1, [r0, 0x8]
ldrh r2, [r0, 0x6]
subs r1, r2
lsls r1, 16
asrs r1, 8
cmp r1, 0
bge _0811DAF6
adds r1, 0xFF
_0811DAF6:
asrs r1, 8
ldr r3, _0811DB10 @ =0xffffff00
adds r0, r4, r3
muls r0, r1
lsls r0, 8
asrs r0, 16
adds r0, r2
lsls r0, 16
lsrs r0, 16
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0811DB10: .4byte 0xffffff00
thumb_func_end sub_811DADC
thumb_func_start sub_811DB14
sub_811DB14: @ 811DB14
push {r4,r5,lr}
adds r5, r0, 0
lsls r1, 24
lsrs r4, r1, 24
cmp r4, 0x3
bls _0811DB22
movs r4, 0x3
_0811DB22:
bl sub_811D0A8
adds r0, r5, 0
adds r1, r4, 0
bl StartSpriteAffineAnim
ldr r1, _0811DB44 @ =gUnknown_84599AA
lsls r0, r4, 1
adds r0, r1
ldrh r0, [r0]
bl sub_811DADC
strh r0, [r5, 0x22]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0811DB44: .4byte gUnknown_84599AA
thumb_func_end sub_811DB14
thumb_func_start sub_811DB48
sub_811DB48: @ 811DB48
push {r4,r5,lr}
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
adds r1, r4, 0
bl sub_811DB14
ldrh r0, [r5, 0x3A]
subs r0, 0x20
lsls r0, 16
asrs r0, 16
adds r1, r4, 0
bl sub_811DAC0
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x3C]
subs r0, 0x20
lsls r0, 16
asrs r0, 16
adds r1, r4, 0
bl sub_811DAC0
strh r0, [r5, 0x26]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811DB48
thumb_func_start sub_811DB7C
sub_811DB7C: @ 811DB7C
push {r4,lr}
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
ldr r4, [r0, 0xC]
strh r1, [r4, 0x2E]
ldr r1, [r0, 0xC]
strh r2, [r1, 0x30]
ldr r1, [r0, 0xC]
strh r3, [r1, 0x32]
ldr r1, [r0, 0xC]
ldr r0, _0811DBA4 @ =sub_811DBBC
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0811DBA4: .4byte sub_811DBBC
thumb_func_end sub_811DB7C
thumb_func_start sub_811DBA8
sub_811DBA8: @ 811DBA8
ldr r2, [r0, 0xC]
movs r1, 0
strh r1, [r2, 0x24]
ldr r1, [r0, 0xC]
ldr r0, _0811DBB8 @ =SpriteCallbackDummy
str r0, [r1, 0x1C]
bx lr
.align 2, 0
_0811DBB8: .4byte SpriteCallbackDummy
thumb_func_end sub_811DBA8
thumb_func_start sub_811DBBC
sub_811DBBC: @ 811DBBC
push {r4,lr}
adds r2, r0, 0
ldrh r0, [r2, 0x3C]
adds r0, 0x1
movs r3, 0
strh r0, [r2, 0x3C]
lsls r0, 16
asrs r0, 16
movs r4, 0x2E
ldrsh r1, [r2, r4]
cmp r0, r1
ble _0811DC0C
strh r3, [r2, 0x3C]
ldrh r0, [r2, 0x3A]
adds r0, 0x1
strh r0, [r2, 0x3A]
movs r4, 0x30
ldrsh r1, [r2, r4]
cmp r1, 0
beq _0811DBF8
lsls r0, 16
asrs r0, 16
cmp r0, r1
blt _0811DBF8
strh r3, [r2, 0x24]
ldr r0, _0811DBF4 @ =SpriteCallbackDummy
str r0, [r2, 0x1C]
b _0811DC0C
.align 2, 0
_0811DBF4: .4byte SpriteCallbackDummy
_0811DBF8:
ldrh r1, [r2, 0x3A]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0811DC06
ldrh r0, [r2, 0x32]
b _0811DC0A
_0811DC06:
ldrh r0, [r2, 0x32]
negs r0, r0
_0811DC0A:
strh r0, [r2, 0x24]
_0811DC0C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_811DBBC
thumb_func_start sub_811DC14
sub_811DC14: @ 811DC14
push {r4,lr}
sub sp, 0x10
str r0, [sp]
ldr r3, _0811DC4C @ =0xffff0000
ldr r0, [sp, 0x4]
ands r0, r3
movs r2, 0x80
lsls r2, 4
orrs r0, r2
ldr r2, _0811DC50 @ =0x0000ffff
ands r0, r2
str r0, [sp, 0x4]
str r1, [sp, 0x8]
add r4, sp, 0x8
ldr r0, [r4, 0x4]
ands r0, r3
str r0, [r4, 0x4]
mov r0, sp
bl LoadSpriteSheet
adds r0, r4, 0
bl LoadSpritePalette
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0811DC4C: .4byte 0xffff0000
_0811DC50: .4byte 0x0000ffff
thumb_func_end sub_811DC14
thumb_func_start sub_811DC54
sub_811DC54: @ 811DC54
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r2
lsls r0, 16
lsrs r7, r0, 16
lsls r1, 24
lsrs r6, r1, 24
bl sub_811D0A8
adds r5, r0, 0
adds r0, r7, 0
bl sub_811DD20
adds r1, r0, 0
str r1, [r5, 0x10]
cmp r1, 0
beq _0811DCD2
adds r0, r5, 0
adds r2, r6, 0
bl sub_811E06C
ldr r0, [r5, 0x10]
adds r1, r6, 0
bl StartSpriteAffineAnim
ldr r1, [r5, 0x10]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldr r0, _0811DCDC @ =sub_811DDA4
movs r1, 0x2
bl CreateTask
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r2, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x4
bl SetWordTaskArg
ldr r0, _0811DCE0 @ =gTasks
lsls r5, r4, 2
adds r5, r4
lsls r5, 3
adds r5, r0
strh r6, [r5, 0xC]
ldr r1, _0811DCE4 @ =gUnknown_84599AA
lsls r0, r6, 1
adds r0, r1
ldrh r0, [r0]
bl sub_811DADC
strh r0, [r5, 0xE]
mov r0, r8
strh r0, [r5, 0x14]
adds r0, r7, 0
bl sub_811DCE8
strh r0, [r5, 0x1A]
_0811DCD2:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811DCDC: .4byte sub_811DDA4
_0811DCE0: .4byte gTasks
_0811DCE4: .4byte gUnknown_84599AA
thumb_func_end sub_811DC54
thumb_func_start sub_811DCE8
sub_811DCE8: @ 811DCE8
ldr r0, _0811DCEC @ =0x00007fff
bx lr
.align 2, 0
_0811DCEC: .4byte 0x00007fff
thumb_func_end sub_811DCE8
thumb_func_start sub_811DCF0
sub_811DCF0: @ 811DCF0
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
bl sub_811D0A8
adds r5, r0, 0
adds r0, r4, 0
bl sub_811DD20
str r0, [r5, 0x10]
cmp r0, 0
beq _0811DD1A
movs r1, 0x3
bl StartSpriteAffineAnim
ldr r1, [r5, 0x10]
adds r0, r5, 0
movs r2, 0x3
bl sub_811E06C
_0811DD1A:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811DCF0
thumb_func_start sub_811DD20
sub_811DD20: @ 811DD20
push {r4,lr}
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
movs r0, 0x1
movs r1, 0x1
bl AddItemIconObject
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _0811DD88
ldr r3, _0811DD7C @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r4, r2, r3
ldrb r0, [r4, 0x1]
movs r1, 0x3
orrs r0, r1
strb r0, [r4, 0x1]
ldrb r1, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r4, 0x5]
adds r1, r4, 0
adds r1, 0x43
movs r0, 0x1
strb r0, [r1]
adds r0, r3, 0
adds r0, 0x10
adds r0, r2, r0
ldr r1, _0811DD80 @ =gUnknown_8459A20
str r1, [r0]
adds r3, 0x1C
adds r2, r3
ldr r0, _0811DD84 @ =SpriteCallbackDummy
str r0, [r2]
adds r0, r4, 0
bl InitSpriteAffineAnim
adds r0, r4, 0
b _0811DD8A
.align 2, 0
_0811DD7C: .4byte gSprites
_0811DD80: .4byte gUnknown_8459A20
_0811DD84: .4byte SpriteCallbackDummy
_0811DD88:
movs r0, 0
_0811DD8A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_811DD20
thumb_func_start sub_811DD90
sub_811DD90: @ 811DD90
push {lr}
ldr r0, _0811DDA0 @ =sub_811DDA4
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_0811DDA0: .4byte sub_811DDA4
thumb_func_end sub_811DD90
thumb_func_start sub_811DDA4
sub_811DDA4: @ 811DDA4
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _0811DDD4 @ =gTasks+0x8
adds r4, r0, r1
adds r0, r6, 0
movs r1, 0x4
bl GetWordTaskArg
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x4
bls _0811DDCA
b _0811DF0C
_0811DDCA:
lsls r0, 2
ldr r1, _0811DDD8 @ =_0811DDDC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0811DDD4: .4byte gTasks+0x8
_0811DDD8: .4byte _0811DDDC
.align 2, 0
_0811DDDC:
.4byte _0811DDF0
.4byte _0811DE2A
.4byte _0811DE7C
.4byte _0811DEA0
.4byte _0811DEF0
_0811DDF0:
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
bgt _0811DE00
b _0811DF0C
_0811DE00:
movs r0, 0
strh r0, [r4, 0x2]
movs r0, 0xBB
bl PlaySE
adds r2, r5, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
movs r2, 0x16
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0811DE24
bl sub_811E588
_0811DE24:
movs r0, 0x1
strh r0, [r4]
b _0811DF0C
_0811DE2A:
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _0811DF0C
movs r0, 0
strh r0, [r4, 0x2]
ldr r0, _0811DE78 @ =gUnknown_8459AA8
str r0, [r5, 0x10]
ldrb r1, [r4, 0x4]
adds r0, r5, 0
bl StartSpriteAffineAnim
movs r0, 0x1
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
lsls r2, 9
lsls r2, r0
movs r1, 0x2
negs r1, r1
ldrh r0, [r4, 0x12]
str r0, [sp]
adds r0, r2, 0
movs r2, 0
movs r3, 0xC
bl BeginNormalPaletteFade
movs r0, 0x2
strh r0, [r4]
movs r0, 0xDA
bl PlaySE
b _0811DF0C
.align 2, 0
_0811DE78: .4byte gUnknown_8459AA8
_0811DE7C:
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0811DF0C
adds r2, r5, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
movs r0, 0x14
strh r0, [r4, 0x14]
movs r0, 0x3
strh r0, [r4]
b _0811DF0C
_0811DEA0:
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
lsls r0, 16
asrs r0, 16
movs r2, 0x14
ldrsh r1, [r4, r2]
cmp r0, r1
ble _0811DF0C
movs r0, 0
strh r0, [r4, 0x2]
movs r1, 0x16
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0811DEC8
adds r0, r6, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_811DF14
_0811DEC8:
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0811DED6
movs r0, 0xD2
bl PlaySE
_0811DED6:
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
ble _0811DEEA
movs r0, 0x4
strh r0, [r4]
b _0811DF0C
_0811DEEA:
movs r0, 0x8
strh r0, [r4, 0x14]
b _0811DF0C
_0811DEF0:
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0811DF0C
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0
beq _0811DF06
adds r0, r5, 0
bl DestroySprite
_0811DF06:
adds r0, r6, 0
bl DestroyTask
_0811DF0C:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_811DDA4
thumb_func_start sub_811DF14
sub_811DF14: @ 811DF14
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r7, r1, 0
lsls r0, 24
lsrs r0, 24
mov r9, r0
movs r0, 0x20
ldrsh r5, [r2, r0]
movs r1, 0x24
ldrsh r0, [r2, r1]
adds r5, r0
subs r5, 0x4
movs r0, 0x22
ldrsh r4, [r2, r0]
movs r1, 0x26
ldrsh r0, [r2, r1]
adds r4, r0
subs r4, 0x4
movs r0, 0x5
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
movs r1, 0x80
lsls r1, 9
lsls r1, r0
ldrh r2, [r7, 0x12]
adds r0, r1, 0
movs r1, 0x10
bl BlendPalettes
movs r6, 0
ldr r2, _0811DFB4 @ =gSprites
mov r8, r2
movs r0, 0x1C
add r0, r8
mov r10, r0
lsls r5, 16
lsls r4, 16
_0811DF68:
ldr r0, _0811DFB8 @ =gUnknown_8459B30
asrs r1, r5, 16
asrs r2, r4, 16
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _0811DFA0
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
mov r2, r8
adds r0, r1, r2
lsls r2, r6, 4
strh r2, [r0, 0x30]
mov r2, r9
strh r2, [r0, 0x3C]
add r1, r10
ldr r2, _0811DFBC @ =sub_811DFC0
str r2, [r1]
movs r1, 0x1
bl StartSpriteAnim
ldrh r0, [r7, 0x10]
adds r0, 0x1
strh r0, [r7, 0x10]
_0811DFA0:
adds r6, 0x1
cmp r6, 0xE
ble _0811DF68
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811DFB4: .4byte gSprites
_0811DFB8: .4byte gUnknown_8459B30
_0811DFBC: .4byte sub_811DFC0
thumb_func_end sub_811DF14
thumb_func_start sub_811DFC0
sub_811DFC0: @ 811DFC0
push {r4,r5,lr}
adds r4, r0, 0
adds r3, r4, 0
adds r3, 0x2E
ldrh r1, [r4, 0x2E]
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _0811E01C
adds r0, r1, 0x1
strh r0, [r4, 0x2E]
ldrh r0, [r3, 0x2]
adds r0, 0x7
movs r1, 0xFF
ands r0, r1
strh r0, [r3, 0x2]
ldrh r0, [r3, 0x4]
adds r0, 0x4
strh r0, [r3, 0x4]
movs r5, 0x4
ldrsh r1, [r3, r5]
ldr r2, _0811E018 @ =gSineTable
movs r5, 0x2
ldrsh r0, [r3, r5]
adds r0, 0x40
lsls r0, 1
adds r0, r2
movs r5, 0
ldrsh r0, [r0, r5]
muls r0, r1
asrs r0, 8
strh r0, [r4, 0x24]
movs r0, 0x4
ldrsh r1, [r3, r0]
movs r5, 0x2
ldrsh r0, [r3, r5]
lsls r0, 1
adds r0, r2
movs r2, 0
ldrsh r0, [r0, r2]
muls r0, r1
asrs r0, 8
strh r0, [r4, 0x26]
b _0811E036
.align 2, 0
_0811E018: .4byte gSineTable
_0811E01C:
ldr r2, _0811E03C @ =gTasks
movs r5, 0xE
ldrsh r1, [r3, r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0x18]
subs r1, 0x1
strh r1, [r0, 0x18]
adds r0, r4, 0
bl DestroySprite
_0811E036:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0811E03C: .4byte gTasks
thumb_func_end sub_811DFC0
thumb_func_start sub_811E040
sub_811E040: @ 811E040
push {lr}
ldr r0, _0811E064 @ =sub_811DDA4
bl FindTaskIdByFunc
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
beq _0811E05E
ldr r0, _0811E068 @ =gTasks
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x1E]
_0811E05E:
pop {r0}
bx r0
.align 2, 0
_0811E064: .4byte sub_811DDA4
_0811E068: .4byte gTasks
thumb_func_end sub_811E040
thumb_func_start sub_811E06C
sub_811E06C: @ 811E06C
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r3, r0, 0
adds r5, r1, 0
lsls r2, 24
lsrs r2, 24
mov r8, r2
cmp r2, 0x3
bne _0811E088
movs r0, 0x78
strh r0, [r5, 0x20]
ldrh r0, [r3, 0x8]
b _0811E08E
_0811E088:
movs r0, 0x78
strh r0, [r5, 0x20]
ldrh r0, [r3, 0x6]
_0811E08E:
strh r0, [r5, 0x22]
ldrh r0, [r5, 0x20]
adds r0, 0x4
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x22]
adds r0, 0x4
strh r0, [r5, 0x22]
bl sub_811D110
lsls r0, 16
lsrs r6, r0, 16
bl sub_811D120
adds r7, r0, 0
bl sub_811D100
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bne _0811E0CC
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0
bl sub_812EA78
lsls r0, 24
lsrs r4, r0, 24
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0x1
b _0811E0E0
_0811E0CC:
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0x3
bl sub_812EA78
lsls r0, 24
lsrs r4, r0, 24
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0x4
_0811E0E0:
bl sub_812EA78
lsls r0, 24
lsrs r0, 24
cmp r4, 0xFF
bne _0811E0EE
movs r4, 0
_0811E0EE:
cmp r0, 0xFF
bne _0811E0F4
movs r0, 0
_0811E0F4:
strh r4, [r5, 0x3A]
strh r0, [r5, 0x3C]
adds r0, r5, 0
mov r1, r8
bl sub_811DB48
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_811E06C
thumb_func_start sub_811E10C
sub_811E10C: @ 811E10C
push {r4,lr}
bl sub_811D0A8
adds r4, r0, 0
ldr r0, [r4, 0xC]
bl sub_811E128
ldr r0, [r4, 0x10]
bl sub_811E128
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_811E10C
thumb_func_start sub_811E128
sub_811E128: @ 811E128
movs r1, 0
strh r1, [r0, 0x2E]
strh r1, [r0, 0x30]
ldr r1, _0811E134 @ =sub_811E154
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_0811E134: .4byte sub_811E154
thumb_func_end sub_811E128
thumb_func_start sub_811E138
sub_811E138: @ 811E138
push {lr}
bl sub_811D0A8
ldr r0, [r0, 0xC]
ldr r1, [r0, 0x1C]
ldr r0, _0811E150 @ =SpriteCallbackDummy
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r0, 31
pop {r1}
bx r1
.align 2, 0
_0811E150: .4byte SpriteCallbackDummy
thumb_func_end sub_811E138
thumb_func_start sub_811E154
sub_811E154: @ 811E154
push {lr}
adds r1, r0, 0
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0
beq _0811E166
cmp r0, 0x1
beq _0811E174
b _0811E18C
_0811E166:
ldrh r0, [r1, 0x20]
adds r0, 0x3
strh r0, [r1, 0x20]
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
b _0811E18C
_0811E174:
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _0811E18C
ldrh r0, [r1, 0x20]
subs r0, 0x3
strh r0, [r1, 0x20]
ldr r0, _0811E190 @ =SpriteCallbackDummy
str r0, [r1, 0x1C]
_0811E18C:
pop {r0}
bx r0
.align 2, 0
_0811E190: .4byte SpriteCallbackDummy
thumb_func_end sub_811E154
thumb_func_start sub_811E194
sub_811E194: @ 811E194
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
bl sub_811D0A8
adds r5, r0, 0
ldrb r0, [r5, 0xA]
cmp r6, r0
beq _0811E1F8
ldr r0, _0811E1EC @ =sub_811D9BC
movs r1, 0x1
bl CreateTask
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r2, [r5, 0xC]
adds r0, r4, 0
movs r1, 0x6
bl SetWordTaskArg
ldr r2, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x9
bl SetWordTaskArg
ldr r1, _0811E1F0 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
ldrb r0, [r5, 0xA]
strh r0, [r1, 0xA]
strh r6, [r1, 0xC]
movs r2, 0x1
strh r2, [r1, 0x18]
movs r0, 0x6
strh r0, [r1, 0x12]
ldrb r5, [r5, 0xA]
cmp r6, r5
bls _0811E1F4
strh r2, [r1, 0xE]
b _0811E1F8
.align 2, 0
_0811E1EC: .4byte sub_811D9BC
_0811E1F0: .4byte gTasks
_0811E1F4:
ldr r0, _0811E200 @ =0x0000ffff
strh r0, [r1, 0xE]
_0811E1F8:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0811E200: .4byte 0x0000ffff
thumb_func_end sub_811E194
thumb_func_start sub_811E204
sub_811E204: @ 811E204
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
mov r10, r0
ldr r0, _0811E2E0 @ =gUnknown_84599B8
bl LoadCompressedSpriteSheet
ldr r0, _0811E2E4 @ =gUnknown_84599C0
bl LoadSpritePalette
movs r0, 0
mov r1, r10
strh r0, [r1, 0x2]
ldr r0, _0811E2E8 @ =gUnknown_84599B2
str r0, [sp, 0x4]
movs r1, 0x2
str r1, [sp]
_0811E22C:
ldr r0, [sp, 0x4]
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
mov r9, r0
mov r1, r9
adds r1, 0x78
ldr r0, [sp, 0x4]
ldrb r0, [r0, 0x1]
lsls r0, 24
asrs r0, 24
mov r8, r0
mov r0, r10
ldrh r2, [r0, 0x8]
add r2, r8
lsls r2, 16
asrs r2, 16
ldr r0, _0811E2EC @ =gUnknown_8459AEC
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x40
beq _0811E2C0
bl sub_811D110
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
bl sub_811D120
adds r6, r0, 0
ldr r0, _0811E2F0 @ =gSprites
lsls r4, r7, 4
adds r4, r7
lsls r4, 2
adds r4, r0
mov r1, r9
lsls r0, r1, 3
strh r0, [r4, 0x34]
mov r1, r8
lsls r0, r1, 3
strh r0, [r4, 0x36]
adds r0, r5, 0
adds r1, r6, 0
movs r2, 0
bl sub_812EAE4
lsls r0, 24
asrs r0, 24
movs r1, 0x3
bl sub_811DAC0
ldrh r1, [r4, 0x20]
adds r0, r1
strh r0, [r4, 0x20]
adds r0, r5, 0
adds r1, r6, 0
movs r2, 0x1
bl sub_812EAE4
lsls r0, 24
asrs r0, 24
movs r1, 0x3
bl sub_811DAC0
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
mov r1, r10
ldrh r0, [r1, 0x2]
adds r0, 0x1
strh r0, [r1, 0x2]
_0811E2C0:
ldr r0, [sp, 0x4]
adds r0, 0x2
str r0, [sp, 0x4]
ldr r1, [sp]
subs r1, 0x1
str r1, [sp]
cmp r1, 0
bge _0811E22C
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811E2E0: .4byte gUnknown_84599B8
_0811E2E4: .4byte gUnknown_84599C0
_0811E2E8: .4byte gUnknown_84599B2
_0811E2EC: .4byte gUnknown_8459AEC
_0811E2F0: .4byte gSprites
thumb_func_end sub_811E204
thumb_func_start sub_811E2F4
sub_811E2F4: @ 811E2F4
push {lr}
bl sub_811D0A8
ldrb r0, [r0, 0x2]
pop {r1}
bx r1
thumb_func_end sub_811E2F4
thumb_func_start sub_811E300
sub_811E300: @ 811E300
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
bgt _0811E330
ldrh r0, [r4, 0x34]
ldrh r1, [r4, 0x30]
adds r0, r1
strh r0, [r4, 0x30]
ldrh r1, [r4, 0x36]
ldrh r2, [r4, 0x32]
adds r1, r2
strh r1, [r4, 0x32]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x24]
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x26]
b _0811E340
_0811E330:
bl sub_811D0A8
ldrh r1, [r0, 0x2]
subs r1, 0x1
strh r1, [r0, 0x2]
adds r0, r4, 0
bl DestroySprite
_0811E340:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_811E300
thumb_func_start sub_811E348
sub_811E348: @ 811E348
push {r4,lr}
bl sub_811E588
ldr r0, _0811E37C @ =sub_811E3B4
movs r1, 0x1
bl CreateTask
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r2, _0811E380 @ =0x78865321
adds r0, r4, 0
movs r1, 0x3
bl SetWordTaskArg
ldr r1, _0811E384 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r1, 0xE0
strh r1, [r0, 0x12]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0811E37C: .4byte sub_811E3B4
_0811E380: .4byte 0x78865321
_0811E384: .4byte gTasks
thumb_func_end sub_811E348
thumb_func_start sub_811E388
sub_811E388: @ 811E388
push {lr}
ldr r0, _0811E3AC @ =sub_811E3B4
bl FindTaskIdByFunc
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
beq _0811E3A6
ldr r0, _0811E3B0 @ =gTasks
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x8]
_0811E3A6:
pop {r0}
bx r0
.align 2, 0
_0811E3AC: .4byte sub_811E3B4
_0811E3B0: .4byte gTasks
thumb_func_end sub_811E388
thumb_func_start sub_811E3B4
sub_811E3B4: @ 811E3B4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _0811E3DC @ =gTasks+0x8
adds r5, r0, r1
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0
beq _0811E3E0
cmp r0, 0x1
beq _0811E4CE
b _0811E4DC
.align 2, 0
_0811E3DC: .4byte gTasks+0x8
_0811E3E0:
ldrh r0, [r5, 0x2]
movs r3, 0x2
ldrsh r2, [r5, r3]
mov r9, r2
cmp r2, 0
bne _0811E4C8
bl sub_811D0A8
ldr r0, [r0, 0x10]
movs r4, 0x20
ldrsh r2, [r0, r4]
movs r3, 0x24
ldrsh r1, [r0, r3]
adds r2, r1
str r2, [sp]
movs r4, 0x22
ldrsh r1, [r0, r4]
movs r2, 0x26
ldrsh r0, [r0, r2]
adds r1, r0
mov r10, r1
adds r0, r6, 0
bl sub_811E4EC
lsls r0, 16
lsrs r0, 16
movs r1, 0x15
bl __umodsi3
lsls r0, 16
lsrs r0, 16
adds r0, 0x46
ldr r3, _0811E4BC @ =gSineTable
movs r4, 0xA
ldrsh r2, [r5, r4]
adds r1, r2, 0
adds r1, 0x40
lsls r1, 1
adds r1, r3
movs r4, 0
ldrsh r1, [r1, r4]
muls r1, r0
lsrs r1, 8
ldr r4, [sp]
adds r4, r1
mov r8, r4
lsls r2, 1
adds r2, r3
movs r3, 0
ldrsh r1, [r2, r3]
muls r0, r1
lsrs r0, 8
mov r4, r10
adds r7, r4, r0
ldrh r0, [r5, 0xA]
adds r0, 0x4C
movs r1, 0xFF
ands r0, r1
strh r0, [r5, 0xA]
ldr r0, _0811E4C0 @ =gUnknown_8459B30
mov r2, r8
lsls r1, r2, 16
asrs r1, 16
lsls r2, r7, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _0811E4A4
ldr r0, _0811E4C4 @ =gSprites
lsls r4, r1, 4
adds r4, r1
lsls r4, 2
adds r4, r0
mov r3, r9
strh r3, [r4, 0x2E]
adds r0, r6, 0
bl sub_811E4EC
movs r1, 0x1
ands r1, r0
adds r1, 0x6
strh r1, [r4, 0x30]
mov r0, r8
strh r0, [r4, 0x32]
strh r7, [r4, 0x34]
mov r1, sp
ldrh r1, [r1]
strh r1, [r4, 0x36]
mov r2, r10
strh r2, [r4, 0x38]
strh r6, [r4, 0x3A]
ldrh r0, [r5, 0x4]
adds r0, 0x1
strh r0, [r5, 0x4]
_0811E4A4:
ldrh r0, [r5, 0xC]
adds r0, 0x1
strh r0, [r5, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2F
ble _0811E4DC
ldrh r0, [r5]
adds r0, 0x1
strh r0, [r5]
b _0811E4DC
.align 2, 0
_0811E4BC: .4byte gSineTable
_0811E4C0: .4byte gUnknown_8459B30
_0811E4C4: .4byte gSprites
_0811E4C8:
subs r0, 0x1
strh r0, [r5, 0x2]
b _0811E4DC
_0811E4CE:
movs r3, 0x4
ldrsh r0, [r5, r3]
cmp r0, 0
bne _0811E4DC
adds r0, r6, 0
bl DestroyTask
_0811E4DC:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_811E3B4
thumb_func_start sub_811E4EC
sub_811E4EC: @ 811E4EC
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x3
bl GetWordTaskArg
adds r5, r0, 0
ldr r0, _0811E518 @ =0x41c64e6d
muls r0, r5
ldr r1, _0811E51C @ =0x00006073
adds r5, r0, r1
adds r0, r4, 0
movs r1, 0x3
adds r2, r5, 0
bl SetWordTaskArg
lsrs r0, r5, 16
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0811E518: .4byte 0x41c64e6d
_0811E51C: .4byte 0x00006073
thumb_func_end sub_811E4EC
thumb_func_start sub_811E520
sub_811E520: @ 811E520
push {r4,r5,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x2E]
adds r0, r1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0xFF
ble _0811E554
ldr r2, _0811E550 @ =gTasks
movs r5, 0x3A
ldrsh r1, [r4, r5]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0xC]
subs r1, 0x1
strh r1, [r0, 0xC]
adds r0, r4, 0
bl DestroySprite
b _0811E582
.align 2, 0
_0811E550: .4byte gTasks
_0811E554:
movs r1, 0x36
ldrsh r0, [r4, r1]
movs r2, 0x32
ldrsh r1, [r4, r2]
subs r0, r1
movs r5, 0x2E
ldrsh r3, [r4, r5]
adds r2, r0, 0
muls r2, r3
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r5, 0x34
ldrsh r1, [r4, r5]
subs r0, r1
muls r0, r3
asrs r2, 8
ldrh r1, [r4, 0x32]
adds r2, r1
strh r2, [r4, 0x20]
asrs r0, 8
ldrh r2, [r4, 0x34]
adds r0, r2
strh r0, [r4, 0x22]
_0811E582:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811E520
thumb_func_start sub_811E588
sub_811E588: @ 811E588
push {lr}
ldr r0, _0811E59C @ =gUnknown_84599C8
bl LoadCompressedSpriteSheet
ldr r0, _0811E5A0 @ =gUnknown_84599D0
bl LoadSpritePalette
pop {r0}
bx r0
.align 2, 0
_0811E59C: .4byte gUnknown_84599C8
_0811E5A0: .4byte gUnknown_84599D0
thumb_func_end sub_811E588
thumb_func_start sub_811E5A4
sub_811E5A4: @ 811E5A4
push {lr}
ldr r0, _0811E5B4 @ =sub_811E3B4
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_0811E5B4: .4byte sub_811E3B4
thumb_func_end sub_811E5A4
thumb_func_start sub_811E5B8
sub_811E5B8: @ 811E5B8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
mov r9, r3
ldr r0, [sp, 0x20]
mov r10, r0
ldr r0, [sp, 0x24]
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
mov r1, r8
lsls r1, 16
lsrs r1, 16
mov r8, r1
mov r1, r9
lsls r1, 16
lsrs r1, 16
mov r9, r1
mov r1, r10
lsls r1, 16
lsrs r1, 16
mov r10, r1
lsls r0, 16
lsrs r7, r0, 16
ldr r0, _0811E664 @ =gUnknown_3002030
mov r1, r8
strh r1, [r0, 0x6]
ldr r1, _0811E668 @ =gUnknown_8459888
str r1, [r0]
ldr r1, [r1]
lsrs r1, 8
strh r1, [r0, 0x4]
ldr r4, _0811E66C @ =gUnknown_3002038
ldr r1, _0811E670 @ =gUnknown_8459868
str r1, [r4]
mov r1, r9
strh r1, [r4, 0x4]
bl LoadCompressedSpriteSheet
adds r0, r4, 0
bl LoadSpritePalette
ldr r0, _0811E674 @ =sub_811E694
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _0811E678 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
subs r5, 0x20
strh r5, [r1, 0x10]
adds r6, 0x20
strh r6, [r1, 0x12]
mov r0, r8
strh r0, [r1, 0x14]
mov r0, r9
strh r0, [r1, 0x16]
mov r0, r10
strh r0, [r1, 0x18]
strh r7, [r1, 0x1A]
movs r1, 0xFC
lsls r1, 6
movs r0, 0x50
bl SetGpuReg
ldr r1, _0811E67C @ =0x0000060c
movs r0, 0x52
bl SetGpuReg
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811E664: .4byte gUnknown_3002030
_0811E668: .4byte gUnknown_8459888
_0811E66C: .4byte gUnknown_3002038
_0811E670: .4byte gUnknown_8459868
_0811E674: .4byte sub_811E694
_0811E678: .4byte gTasks
_0811E67C: .4byte 0x0000060c
thumb_func_end sub_811E5B8
thumb_func_start sub_811E680
sub_811E680: @ 811E680
push {lr}
ldr r0, _0811E690 @ =sub_811E694
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_0811E690: .4byte sub_811E694
thumb_func_end sub_811E680
thumb_func_start sub_811E694
sub_811E694: @ 811E694
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _0811E6B4 @ =gTasks+0x8
adds r4, r0, r1
movs r0, 0
ldrsh r1, [r4, r0]
cmp r1, 0
beq _0811E6B8
cmp r1, 0x1
beq _0811E6EE
b _0811E708
.align 2, 0
_0811E6B4: .4byte gTasks+0x8
_0811E6B8:
ldrh r2, [r4, 0x6]
movs r3, 0x6
ldrsh r0, [r4, r3]
cmp r0, 0
bne _0811E6DE
adds r0, r2, 0x1
strh r0, [r4, 0x6]
adds r0, r5, 0
adds r1, r4, 0
bl sub_811E710
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0x11
ble _0811E708
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
b _0811E708
_0811E6DE:
adds r0, r2, 0x1
strh r0, [r4, 0x6]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bne _0811E708
strh r1, [r4, 0x6]
b _0811E708
_0811E6EE:
movs r3, 0x2
ldrsh r0, [r4, r3]
cmp r0, 0
bne _0811E708
ldrh r0, [r4, 0xC]
bl FreeSpriteTilesByTag
ldrh r0, [r4, 0xE]
bl FreeSpritePaletteByTag
adds r0, r5, 0
bl DestroyTask
_0811E708:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_811E694
thumb_func_start sub_811E710
sub_811E710: @ 811E710
push {r4-r6,lr}
sub sp, 0x18
adds r4, r1, 0
lsls r0, 24
lsrs r6, r0, 24
mov r1, sp
ldr r0, _0811E7A4 @ =gUnknown_8459ACC
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
mov r1, sp
ldrh r0, [r4, 0xC]
strh r0, [r1]
ldrh r0, [r4, 0xE]
strh r0, [r1, 0x2]
ldrh r0, [r4, 0x4]
adds r0, 0x1
strh r0, [r4, 0x4]
movs r0, 0x4
ldrsh r1, [r4, r0]
movs r0, 0xDB
muls r1, r0
movs r5, 0x3F
ands r1, r5
ldrh r2, [r4, 0x8]
adds r1, r2
lsls r1, 16
asrs r1, 16
movs r3, 0xA
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x12]
mov r0, sp
bl CreateSprite
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _0811E79A
ldr r0, _0811E7A8 @ =gSprites
lsls r2, r1, 4
adds r2, r1
lsls r2, 2
adds r2, r0
movs r0, 0x3
ldrb r1, [r4, 0x10]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0
strh r0, [r2, 0x30]
movs r0, 0x4
ldrsh r1, [r4, r0]
ldr r0, _0811E7AC @ =0x41c64e6d
muls r0, r1
ldr r1, _0811E7B0 @ =0x00006073
adds r0, r1
ands r0, r5
adds r0, 0x20
strh r0, [r2, 0x32]
strh r6, [r2, 0x3C]
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
_0811E79A:
add sp, 0x18
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0811E7A4: .4byte gUnknown_8459ACC
_0811E7A8: .4byte gSprites
_0811E7AC: .4byte 0x41c64e6d
_0811E7B0: .4byte 0x00006073
thumb_func_end sub_811E710
thumb_func_start sub_811E7B4
sub_811E7B4: @ 811E7B4
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x30]
ldrh r1, [r3, 0x32]
subs r0, r1
strh r0, [r3, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r3, 0x26]
movs r1, 0x40
negs r1, r1
cmp r0, r1
bge _0811E7E8
ldr r2, _0811E7EC @ =gTasks
movs r0, 0x3C
ldrsh r1, [r3, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrh r1, [r0, 0xA]
subs r1, 0x1
strh r1, [r0, 0xA]
adds r0, r3, 0
bl DestroySprite
_0811E7E8:
pop {r0}
bx r0
.align 2, 0
_0811E7EC: .4byte gTasks
thumb_func_end sub_811E7B4
thumb_func_start DrawLevelUpWindowPg1
DrawLevelUpWindowPg1: @ 811E7F0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x30
mov r8, r0
adds r6, r1, 0
adds r5, r2, 0
adds r4, r3, 0
ldr r3, [sp, 0x50]
ldr r0, [sp, 0x54]
mov r9, r0
lsls r4, 24
lsrs r4, 24
lsls r3, 24
lsrs r3, 24
mov r1, r9
lsls r1, 24
lsrs r1, 24
mov r9, r1
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, r4, 4
orrs r1, r4
lsls r1, 24
lsrs r1, 24
str r3, [sp, 0x2C]
bl FillWindowPixelBuffer
add r2, sp, 0xC
ldrh r0, [r5]
ldrh r1, [r6]
subs r0, r1
strh r0, [r2]
ldrh r0, [r5, 0x2]
ldrh r1, [r6, 0x2]
subs r0, r1
strh r0, [r2, 0x2]
ldrh r0, [r5, 0x4]
ldrh r1, [r6, 0x4]
subs r0, r1
strh r0, [r2, 0x4]
ldrh r0, [r5, 0x8]
ldrh r1, [r6, 0x8]
subs r0, r1
strh r0, [r2, 0x6]
ldrh r0, [r5, 0xA]
ldrh r1, [r6, 0xA]
subs r0, r1
strh r0, [r2, 0x8]
ldrh r0, [r5, 0x6]
ldrh r1, [r6, 0x6]
subs r0, r1
strh r0, [r2, 0xA]
add r0, sp, 0x24
strb r4, [r0]
ldr r3, [sp, 0x2C]
strb r3, [r0, 0x1]
mov r1, r9
strb r1, [r0, 0x2]
movs r7, 0
mov r1, sp
adds r1, 0x19
str r1, [sp, 0x28]
mov r10, r0
movs r0, 0x1
negs r0, r0
mov r9, r0
add r6, sp, 0x18
_0811E880:
lsls r0, r7, 4
subs r0, r7
lsls r0, 24
lsrs r5, r0, 24
mov r1, r10
str r1, [sp]
mov r0, r9
str r0, [sp, 0x4]
ldr r1, _0811E930 @ =gUnknown_8459B48
lsls r0, r7, 2
adds r0, r1
ldr r0, [r0]
str r0, [sp, 0x8]
mov r0, r8
movs r1, 0x2
movs r2, 0
adds r3, r5, 0
bl AddTextPrinterParameterized3
lsls r0, r7, 1
mov r4, sp
adds r4, r0
adds r4, 0xC
movs r1, 0
ldrsh r0, [r4, r1]
ldr r1, _0811E934 @ =gUnknown_841B2E5
cmp r0, 0
blt _0811E8BA
ldr r1, _0811E938 @ =gUnknown_841B2DC
_0811E8BA:
adds r0, r6, 0
bl StringCopy
mov r0, r10
str r0, [sp]
mov r1, r9
str r1, [sp, 0x4]
str r6, [sp, 0x8]
mov r0, r8
movs r1, 0x2
movs r2, 0x38
adds r3, r5, 0
bl AddTextPrinterParameterized3
movs r0, 0
strb r0, [r6]
movs r0, 0
ldrsh r1, [r4, r0]
adds r0, r1, 0
cmp r1, 0
bge _0811E8E6
negs r0, r1
_0811E8E6:
movs r4, 0x6
cmp r0, 0x9
bgt _0811E8EE
movs r4, 0xC
_0811E8EE:
cmp r1, 0
bge _0811E8F4
negs r1, r1
_0811E8F4:
ldr r0, [sp, 0x28]
movs r2, 0
movs r3, 0x2
bl ConvertIntToDecimalStringN
adds r2, r4, 0
adds r2, 0x38
mov r1, r10
str r1, [sp]
mov r0, r9
str r0, [sp, 0x4]
str r6, [sp, 0x8]
mov r0, r8
movs r1, 0x2
adds r3, r5, 0
bl AddTextPrinterParameterized3
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
cmp r7, 0x5
bls _0811E880
add sp, 0x30
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811E930: .4byte gUnknown_8459B48
_0811E934: .4byte gUnknown_841B2E5
_0811E938: .4byte gUnknown_841B2DC
thumb_func_end DrawLevelUpWindowPg1
thumb_func_start DrawLevelUpWindowPg2
DrawLevelUpWindowPg2: @ 811E93C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
mov r8, r0
adds r5, r1, 0
adds r4, r2, 0
adds r6, r3, 0
ldr r2, [sp, 0x4C]
lsls r4, 24
lsrs r4, 24
lsls r6, 24
lsrs r6, 24
lsls r2, 24
lsrs r2, 24
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, r4, 4
orrs r1, r4
lsls r1, 24
lsrs r1, 24
str r2, [sp, 0x28]
bl FillWindowPixelBuffer
add r1, sp, 0xC
ldrh r0, [r5]
strh r0, [r1]
ldrh r0, [r5, 0x2]
strh r0, [r1, 0x2]
ldrh r0, [r5, 0x4]
strh r0, [r1, 0x4]
ldrh r0, [r5, 0x8]
strh r0, [r1, 0x6]
ldrh r0, [r5, 0xA]
strh r0, [r1, 0x8]
ldrh r0, [r5, 0x6]
strh r0, [r1, 0xA]
add r0, sp, 0x24
strb r4, [r0]
strb r6, [r0, 0x1]
ldr r2, [sp, 0x28]
strb r2, [r0, 0x2]
movs r6, 0
add r1, sp, 0x18
mov r9, r1
mov r7, r8
mov r10, r0
movs r2, 0x1
negs r2, r2
mov r8, r2
_0811E9A6:
lsls r1, r6, 1
mov r0, sp
adds r0, r1
adds r0, 0xC
movs r2, 0
ldrsh r0, [r0, r2]
movs r4, 0x3
cmp r0, 0x63
bgt _0811E9C0
movs r4, 0x1
cmp r0, 0x9
ble _0811E9C0
movs r4, 0x2
_0811E9C0:
mov r0, sp
adds r0, r1
adds r0, 0xC
movs r2, 0
ldrsh r1, [r0, r2]
mov r0, r9
movs r2, 0
adds r3, r4, 0
bl ConvertIntToDecimalStringN
movs r0, 0x4
subs r0, r4
lsls r4, r0, 1
adds r4, r0
lsls r4, 17
lsrs r4, 16
lsls r5, r6, 4
subs r5, r6
lsls r5, 24
lsrs r5, 24
mov r0, r10
str r0, [sp]
mov r1, r8
str r1, [sp, 0x4]
ldr r1, _0811EA40 @ =gUnknown_8459B48
lsls r0, r6, 2
adds r0, r1
ldr r0, [r0]
str r0, [sp, 0x8]
adds r0, r7, 0
movs r1, 0x2
movs r2, 0
adds r3, r5, 0
bl AddTextPrinterParameterized3
adds r4, 0x38
lsls r4, 24
lsrs r4, 24
mov r2, r10
str r2, [sp]
mov r0, r8
str r0, [sp, 0x4]
mov r1, r9
str r1, [sp, 0x8]
adds r0, r7, 0
movs r1, 0x2
adds r2, r4, 0
adds r3, r5, 0
bl AddTextPrinterParameterized3
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x5
bls _0811E9A6
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811EA40: .4byte gUnknown_8459B48
thumb_func_end DrawLevelUpWindowPg2
.align 2, 0 @ Don't pad with nop.