through sub_811CA20
This commit is contained in:
@@ -5,820 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_811C540
|
|
||||||
sub_811C540: @ 811C540
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r2, 0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_811C5D4
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811C55C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _0811C560
|
|
||||||
_0811C55C:
|
|
||||||
bl sub_811C748
|
|
||||||
_0811C560:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811C540
|
|
||||||
|
|
||||||
thumb_func_start sub_811C568
|
|
||||||
sub_811C568: @ 811C568
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r5, r3, 0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r6, r2, 16
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl sub_811C5D4
|
|
||||||
adds r4, r0, 0
|
|
||||||
cmp r4, 0
|
|
||||||
bne _0811C58C
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _0811C5A2
|
|
||||||
_0811C58C:
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x77
|
|
||||||
movs r1, 0xD
|
|
||||||
muls r1, r6
|
|
||||||
ldr r2, _0811C5A8 @ =gMoveNames
|
|
||||||
adds r1, r2
|
|
||||||
bl StringCopy
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_811C7BC
|
|
||||||
_0811C5A2:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C5A8: .4byte gMoveNames
|
|
||||||
thumb_func_end sub_811C568
|
|
||||||
|
|
||||||
thumb_func_start sub_811C5AC
|
|
||||||
sub_811C5AC: @ 811C5AC
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r2, 0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_811C5D4
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811C5C8
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _0811C5CC
|
|
||||||
_0811C5C8:
|
|
||||||
bl sub_811C7FC
|
|
||||||
_0811C5CC:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811C5AC
|
|
||||||
|
|
||||||
thumb_func_start sub_811C5D4
|
|
||||||
sub_811C5D4: @ 811C5D4
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
adds r5, r2, 0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r8, r0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r6, r1, 16
|
|
||||||
ldr r0, _0811C61C @ =gMain
|
|
||||||
ldr r1, _0811C620 @ =0x00000439
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, 0x2
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811C5FC
|
|
||||||
bl ResetTasks
|
|
||||||
_0811C5FC:
|
|
||||||
bl ResetSpriteData
|
|
||||||
bl FreeAllSpritePalettes
|
|
||||||
ldr r0, _0811C624 @ =0x000028dc
|
|
||||||
bl Alloc
|
|
||||||
adds r7, r0, 0
|
|
||||||
cmp r7, 0
|
|
||||||
bne _0811C628
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl SetMainCallback2
|
|
||||||
movs r0, 0
|
|
||||||
b _0811C6D2
|
|
||||||
.align 2, 0
|
|
||||||
_0811C61C: .4byte gMain
|
|
||||||
_0811C620: .4byte 0x00000439
|
|
||||||
_0811C624: .4byte 0x000028dc
|
|
||||||
_0811C628:
|
|
||||||
movs r0, 0x64
|
|
||||||
mov r4, r8
|
|
||||||
muls r4, r0
|
|
||||||
ldr r0, _0811C6E0 @ =gPlayerParty
|
|
||||||
adds r4, r0
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r0, 0x92
|
|
||||||
movs r1, 0
|
|
||||||
mov r9, r1
|
|
||||||
mov r1, r9
|
|
||||||
strh r1, [r0]
|
|
||||||
str r5, [r7, 0x4]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0xB
|
|
||||||
bl GetMonData
|
|
||||||
adds r1, r7, 0
|
|
||||||
adds r1, 0x94
|
|
||||||
strh r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x20
|
|
||||||
bl GetMonData
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl sub_811D058
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
adds r1, r7, 0
|
|
||||||
adds r1, 0x9C
|
|
||||||
strh r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl GetMonData
|
|
||||||
adds r1, r7, 0
|
|
||||||
adds r1, 0xA0
|
|
||||||
str r0, [r1]
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r0, 0x9A
|
|
||||||
mov r1, r8
|
|
||||||
strh r1, [r0]
|
|
||||||
subs r0, 0x4
|
|
||||||
strh r6, [r0]
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl sub_811D018
|
|
||||||
adds r5, r7, 0
|
|
||||||
adds r5, 0x98
|
|
||||||
strh r0, [r5]
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r0, 0x8
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0x64
|
|
||||||
bl memcpy
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r0, 0xA4
|
|
||||||
mov r1, r9
|
|
||||||
str r1, [r0]
|
|
||||||
adds r2, r7, 0
|
|
||||||
adds r2, 0x6C
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x2
|
|
||||||
bl GetMonData
|
|
||||||
ldrh r0, [r5]
|
|
||||||
cmp r0, 0x4
|
|
||||||
bne _0811C6D0
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl ItemIdToBattleMoveId
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
adds r2, r7, 0
|
|
||||||
adds r2, 0x84
|
|
||||||
movs r1, 0xD
|
|
||||||
muls r1, r0
|
|
||||||
ldr r0, _0811C6E4 @ =gMoveNames
|
|
||||||
adds r1, r0
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl StringCopy
|
|
||||||
_0811C6D0:
|
|
||||||
adds r0, r7, 0
|
|
||||||
_0811C6D2:
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0811C6E0: .4byte gPlayerParty
|
|
||||||
_0811C6E4: .4byte gMoveNames
|
|
||||||
thumb_func_end sub_811C5D4
|
|
||||||
|
|
||||||
thumb_func_start sub_811C6E8
|
|
||||||
sub_811C6E8: @ 811C6E8
|
|
||||||
push {lr}
|
|
||||||
bl TransferPlttBuffer
|
|
||||||
bl LoadOam
|
|
||||||
bl ProcessSpriteCopyRequests
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811C6E8
|
|
||||||
|
|
||||||
thumb_func_start sub_811C6FC
|
|
||||||
sub_811C6FC: @ 811C6FC
|
|
||||||
push {lr}
|
|
||||||
bl RunTextPrinters
|
|
||||||
bl RunTasks
|
|
||||||
bl AnimateSprites
|
|
||||||
bl BuildOamBuffer
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811C6FC
|
|
||||||
|
|
||||||
thumb_func_start sub_811C718
|
|
||||||
sub_811C718: @ 811C718
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl GetWordTaskArg
|
|
||||||
adds r0, 0x92
|
|
||||||
movs r1, 0
|
|
||||||
strh r1, [r0]
|
|
||||||
ldr r1, _0811C744 @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
str r5, [r0]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C744: .4byte gTasks
|
|
||||||
thumb_func_end sub_811C718
|
|
||||||
|
|
||||||
thumb_func_start sub_811C748
|
|
||||||
sub_811C748: @ 811C748
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, 0x98
|
|
||||||
ldrh r0, [r0]
|
|
||||||
cmp r0, 0x3
|
|
||||||
beq _0811C766
|
|
||||||
cmp r0, 0x3
|
|
||||||
ble _0811C75E
|
|
||||||
cmp r0, 0x4
|
|
||||||
beq _0811C770
|
|
||||||
b _0811C784
|
|
||||||
_0811C75E:
|
|
||||||
cmp r0, 0x1
|
|
||||||
bgt _0811C784
|
|
||||||
cmp r0, 0
|
|
||||||
blt _0811C784
|
|
||||||
_0811C766:
|
|
||||||
ldr r0, _0811C76C @ =sub_811C834
|
|
||||||
b _0811C772
|
|
||||||
.align 2, 0
|
|
||||||
_0811C76C: .4byte sub_811C834
|
|
||||||
_0811C770:
|
|
||||||
ldr r0, _0811C780 @ =sub_811CD68
|
|
||||||
_0811C772:
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
b _0811C792
|
|
||||||
.align 2, 0
|
|
||||||
_0811C780: .4byte sub_811CD68
|
|
||||||
_0811C784:
|
|
||||||
ldr r0, [r5, 0x4]
|
|
||||||
bl SetMainCallback2
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl Free
|
|
||||||
b _0811C7AE
|
|
||||||
_0811C792:
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x91
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl SetWordTaskArg
|
|
||||||
ldr r0, _0811C7B4 @ =sub_811C6FC
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r0, _0811C7B8 @ =gUnknown_203B094
|
|
||||||
strb r4, [r0]
|
|
||||||
_0811C7AE:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C7B4: .4byte sub_811C6FC
|
|
||||||
_0811C7B8: .4byte gUnknown_203B094
|
|
||||||
thumb_func_end sub_811C748
|
|
||||||
|
|
||||||
thumb_func_start sub_811C7BC
|
|
||||||
sub_811C7BC: @ 811C7BC
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _0811C7F0 @ =sub_811CA20
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl SetWordTaskArg
|
|
||||||
ldr r0, _0811C7F4 @ =sub_811C6FC
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r0, _0811C7F8 @ =gUnknown_203B094
|
|
||||||
strb r4, [r0]
|
|
||||||
adds r5, 0x91
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r5]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C7F0: .4byte sub_811CA20
|
|
||||||
_0811C7F4: .4byte sub_811C6FC
|
|
||||||
_0811C7F8: .4byte gUnknown_203B094
|
|
||||||
thumb_func_end sub_811C7BC
|
|
||||||
|
|
||||||
thumb_func_start sub_811C7FC
|
|
||||||
sub_811C7FC: @ 811C7FC
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _0811C828 @ =sub_811CBE4
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl SetWordTaskArg
|
|
||||||
ldr r0, _0811C82C @ =sub_811C6FC
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r0, _0811C830 @ =gUnknown_203B094
|
|
||||||
strb r4, [r0]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C828: .4byte sub_811CBE4
|
|
||||||
_0811C82C: .4byte sub_811C6FC
|
|
||||||
_0811C830: .4byte gUnknown_203B094
|
|
||||||
thumb_func_end sub_811C7FC
|
|
||||||
|
|
||||||
thumb_func_start sub_811C834
|
|
||||||
sub_811C834: @ 811C834
|
|
||||||
push {r4-r6,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
adds r0, r6, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl GetWordTaskArg
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r0, 0x91
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811C870
|
|
||||||
ldr r0, _0811C868 @ =gMain
|
|
||||||
ldrh r1, [r0, 0x2C]
|
|
||||||
movs r0, 0x3
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0811C870
|
|
||||||
bl sub_811E040
|
|
||||||
ldr r1, _0811C86C @ =sub_811CF88
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl sub_811C718
|
|
||||||
b _0811CA16
|
|
||||||
.align 2, 0
|
|
||||||
_0811C868: .4byte gMain
|
|
||||||
_0811C86C: .4byte sub_811CF88
|
|
||||||
_0811C870:
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x92
|
|
||||||
ldrh r1, [r0]
|
|
||||||
adds r5, r0, 0
|
|
||||||
cmp r1, 0xE
|
|
||||||
bls _0811C87E
|
|
||||||
b _0811CA16
|
|
||||||
_0811C87E:
|
|
||||||
lsls r0, r1, 2
|
|
||||||
ldr r1, _0811C888 @ =_0811C88C
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811C888: .4byte _0811C88C
|
|
||||||
.align 2, 0
|
|
||||||
_0811C88C:
|
|
||||||
.4byte _0811C8C8
|
|
||||||
.4byte _0811C8E4
|
|
||||||
.4byte _0811C9E8
|
|
||||||
.4byte _0811C914
|
|
||||||
.4byte _0811C920
|
|
||||||
.4byte _0811C934
|
|
||||||
.4byte _0811C93C
|
|
||||||
.4byte _0811C950
|
|
||||||
.4byte _0811C97E
|
|
||||||
.4byte _0811C986
|
|
||||||
.4byte _0811C98E
|
|
||||||
.4byte _0811C996
|
|
||||||
.4byte _0811C9AA
|
|
||||||
.4byte _0811C9E8
|
|
||||||
.4byte _0811CA00
|
|
||||||
_0811C8C8:
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0xA8
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r1, 0x98
|
|
||||||
ldrh r1, [r1]
|
|
||||||
bl sub_811D184
|
|
||||||
movs r0, 0
|
|
||||||
bl sub_811D830
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C8E4:
|
|
||||||
bl sub_811D280
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0811C8F2
|
|
||||||
b _0811CA16
|
|
||||||
_0811C8F2:
|
|
||||||
movs r1, 0x1
|
|
||||||
negs r1, r1
|
|
||||||
str r0, [sp]
|
|
||||||
adds r0, r1, 0
|
|
||||||
movs r2, 0x10
|
|
||||||
movs r3, 0
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
ldrh r0, [r5]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5]
|
|
||||||
ldr r0, _0811C910 @ =sub_811C6E8
|
|
||||||
bl SetVBlankCallback
|
|
||||||
b _0811CA16
|
|
||||||
.align 2, 0
|
|
||||||
_0811C910: .4byte sub_811C6E8
|
|
||||||
_0811C914:
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x9C
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bl sub_811D948
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C920:
|
|
||||||
bl sub_811D9A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
cmp r1, 0
|
|
||||||
bne _0811CA16
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x9E
|
|
||||||
strh r1, [r0]
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C934:
|
|
||||||
bl sub_811D754
|
|
||||||
lsls r0, 24
|
|
||||||
b _0811C9F0
|
|
||||||
_0811C93C:
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x96
|
|
||||||
ldrh r0, [r0]
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r1, 0x9C
|
|
||||||
ldrb r1, [r1]
|
|
||||||
movs r2, 0x1
|
|
||||||
bl sub_811DC54
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C950:
|
|
||||||
bl sub_811DD90
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CA16
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r1, 0x91
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x9C
|
|
||||||
ldrh r0, [r0]
|
|
||||||
cmp r0, 0x3
|
|
||||||
bne _0811C978
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x94
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r1, 0
|
|
||||||
bl PlayCry1
|
|
||||||
_0811C978:
|
|
||||||
bl sub_811D2A8
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C97E:
|
|
||||||
movs r0, 0
|
|
||||||
bl sub_811D2EC
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C986:
|
|
||||||
bl sub_811D4EC
|
|
||||||
lsls r0, 24
|
|
||||||
b _0811C9F0
|
|
||||||
_0811C98E:
|
|
||||||
movs r0, 0
|
|
||||||
bl sub_811D948
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C996:
|
|
||||||
bl sub_811D9A8
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CA16
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r1, 0x91
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
b _0811C9F4
|
|
||||||
_0811C9AA:
|
|
||||||
ldr r0, _0811C9DC @ =gMain
|
|
||||||
ldrh r1, [r0, 0x2E]
|
|
||||||
movs r0, 0x3
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0811CA16
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x96
|
|
||||||
ldrh r0, [r0]
|
|
||||||
bl CheckIfItemIsTMHMOrEvolutionStone
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _0811C9E0
|
|
||||||
movs r1, 0x1
|
|
||||||
negs r1, r1
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp]
|
|
||||||
adds r0, r1, 0
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0x10
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
b _0811C9F4
|
|
||||||
.align 2, 0
|
|
||||||
_0811C9DC: .4byte gMain
|
|
||||||
_0811C9E0:
|
|
||||||
ldrh r0, [r5]
|
|
||||||
adds r0, 0x2
|
|
||||||
strh r0, [r5]
|
|
||||||
b _0811CA16
|
|
||||||
_0811C9E8:
|
|
||||||
ldr r0, _0811C9FC @ =gPaletteFade
|
|
||||||
ldrb r1, [r0, 0x7]
|
|
||||||
movs r0, 0x80
|
|
||||||
ands r0, r1
|
|
||||||
_0811C9F0:
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CA16
|
|
||||||
_0811C9F4:
|
|
||||||
ldrh r0, [r5]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5]
|
|
||||||
b _0811CA16
|
|
||||||
.align 2, 0
|
|
||||||
_0811C9FC: .4byte gPaletteFade
|
|
||||||
_0811CA00:
|
|
||||||
ldr r0, [r4, 0x4]
|
|
||||||
bl SetMainCallback2
|
|
||||||
bl sub_811D29C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl Free
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_0811CA16:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811C834
|
|
||||||
|
|
||||||
thumb_func_start sub_811CA20
|
|
||||||
sub_811CA20: @ 811CA20
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl GetWordTaskArg
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, 0x92
|
|
||||||
ldrh r0, [r0]
|
|
||||||
cmp r0, 0xD
|
|
||||||
bls _0811CA3C
|
|
||||||
b _0811CBD6
|
|
||||||
_0811CA3C:
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _0811CA48 @ =_0811CA4C
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811CA48: .4byte _0811CA4C
|
|
||||||
.align 2, 0
|
|
||||||
_0811CA4C:
|
|
||||||
.4byte _0811CA84
|
|
||||||
.4byte _0811CAA0
|
|
||||||
.4byte _0811CAD4
|
|
||||||
.4byte _0811CAF4
|
|
||||||
.4byte _0811CB0C
|
|
||||||
.4byte _0811CB14
|
|
||||||
.4byte _0811CB2A
|
|
||||||
.4byte _0811CB44
|
|
||||||
.4byte _0811CB5A
|
|
||||||
.4byte _0811CB7E
|
|
||||||
.4byte _0811CB9A
|
|
||||||
.4byte _0811CBA2
|
|
||||||
.4byte _0811CBB4
|
|
||||||
.4byte _0811CBCE
|
|
||||||
_0811CA84:
|
|
||||||
movs r0, 0
|
|
||||||
bl SetVBlankCallback
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r0, 0xA8
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x98
|
|
||||||
ldrh r1, [r1]
|
|
||||||
bl sub_811D184
|
|
||||||
movs r0, 0x3
|
|
||||||
bl sub_811D830
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CAA0:
|
|
||||||
bl sub_811D280
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0811CAAE
|
|
||||||
b _0811CBD6
|
|
||||||
_0811CAAE:
|
|
||||||
movs r1, 0x1
|
|
||||||
negs r1, r1
|
|
||||||
str r0, [sp]
|
|
||||||
adds r0, r1, 0
|
|
||||||
movs r2, 0x10
|
|
||||||
movs r3, 0
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x92
|
|
||||||
ldrh r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r0, _0811CAD0 @ =sub_811C6E8
|
|
||||||
bl SetVBlankCallback
|
|
||||||
b _0811CBD6
|
|
||||||
.align 2, 0
|
|
||||||
_0811CAD0: .4byte sub_811C6E8
|
|
||||||
_0811CAD4:
|
|
||||||
ldr r0, _0811CAF0 @ =gPaletteFade
|
|
||||||
ldrb r1, [r0, 0x7]
|
|
||||||
movs r0, 0x80
|
|
||||||
ands r0, r1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
strh r0, [r1]
|
|
||||||
subs r1, 0xC
|
|
||||||
b _0811CBC6
|
|
||||||
.align 2, 0
|
|
||||||
_0811CAF0: .4byte gPaletteFade
|
|
||||||
_0811CAF4:
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
ldrh r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0x1E
|
|
||||||
bls _0811CBD6
|
|
||||||
bl sub_811D2A8
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CB0C:
|
|
||||||
movs r0, 0x2
|
|
||||||
bl sub_811D2EC
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CB14:
|
|
||||||
bl sub_811D4EC
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
strh r0, [r1]
|
|
||||||
subs r1, 0xC
|
|
||||||
b _0811CBC6
|
|
||||||
_0811CB2A:
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
ldrh r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0x1E
|
|
||||||
bls _0811CBD6
|
|
||||||
movs r0, 0x3
|
|
||||||
bl sub_811D2EC
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CB44:
|
|
||||||
bl sub_811D4EC
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
strh r0, [r1]
|
|
||||||
subs r1, 0xC
|
|
||||||
b _0811CBC6
|
|
||||||
_0811CB5A:
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x9E
|
|
||||||
ldrh r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0x1E
|
|
||||||
bls _0811CBD6
|
|
||||||
movs r0, 0xE1
|
|
||||||
bl PlaySE
|
|
||||||
movs r0, 0x4
|
|
||||||
bl sub_811D2EC
|
|
||||||
bl sub_811D4FC
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CB7E:
|
|
||||||
bl sub_811D530
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
bl sub_811D4EC
|
|
||||||
orrs r4, r0
|
|
||||||
lsls r4, 24
|
|
||||||
cmp r4, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
bl sub_811D4D4
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CB9A:
|
|
||||||
movs r0, 0x5
|
|
||||||
bl sub_811D2EC
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CBA2:
|
|
||||||
bl sub_811D4EC
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
movs r0, 0x6
|
|
||||||
bl sub_811D2EC
|
|
||||||
b _0811CBC2
|
|
||||||
_0811CBB4:
|
|
||||||
bl sub_811D4EC
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0811CBD6
|
|
||||||
bl sub_811D2D0
|
|
||||||
_0811CBC2:
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0x92
|
|
||||||
_0811CBC6:
|
|
||||||
ldrh r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
b _0811CBD6
|
|
||||||
_0811CBCE:
|
|
||||||
ldr r1, _0811CBE0 @ =sub_811CE4C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_811C718
|
|
||||||
_0811CBD6:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0811CBE0: .4byte sub_811CE4C
|
|
||||||
thumb_func_end sub_811CA20
|
|
||||||
|
|
||||||
thumb_func_start sub_811CBE4
|
thumb_func_start sub_811CBE4
|
||||||
sub_811CBE4: @ 811CBE4
|
sub_811CBE4: @ 811CBE4
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
|
|||||||
@@ -251,6 +251,7 @@ SECTIONS {
|
|||||||
src/union_room.o(.text);
|
src/union_room.o(.text);
|
||||||
src/rfu_union_tool.o(.text);
|
src/rfu_union_tool.o(.text);
|
||||||
src/union_room_battle.o(.text);
|
src/union_room_battle.o(.text);
|
||||||
|
src/pokemon_special_anim.o(.text);
|
||||||
asm/pokemon_special_anim.o(.text);
|
asm/pokemon_special_anim.o(.text);
|
||||||
src/party_menu.o(.text);
|
src/party_menu.o(.text);
|
||||||
src/union_room_chat.o(.text);
|
src/union_room_chat.o(.text);
|
||||||
@@ -553,6 +554,7 @@ SECTIONS {
|
|||||||
src/rfu_union_tool.o(.rodata);
|
src/rfu_union_tool.o(.rodata);
|
||||||
src/union_room_battle.o(.rodata);
|
src/union_room_battle.o(.rodata);
|
||||||
src/union_room_message.o(.rodata);
|
src/union_room_message.o(.rodata);
|
||||||
|
src/pokemon_special_anim.o(.rodata);
|
||||||
data/pokemon_special_anim.o(.rodata);
|
data/pokemon_special_anim.o(.rodata);
|
||||||
src/party_menu.o(.rodata);
|
src/party_menu.o(.rodata);
|
||||||
src/union_room_chat.o(.rodata);
|
src/union_room_chat.o(.rodata);
|
||||||
|
|||||||
@@ -0,0 +1,412 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "gflib.h"
|
||||||
|
#include "data.h"
|
||||||
|
#include "party_menu.h"
|
||||||
|
#include "item_use.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "constants/songs.h"
|
||||||
|
|
||||||
|
// Functions related to the special anims Pokemon
|
||||||
|
// make when using an item on them in the field.
|
||||||
|
|
||||||
|
struct PokemonSpecialAnim
|
||||||
|
{
|
||||||
|
/*0x0000*/ u8 filler_0000[0x4];
|
||||||
|
/*0x0004*/ MainCallback savedCallback;
|
||||||
|
/*0x0008*/ struct Pokemon pokemon;
|
||||||
|
/*0x006c*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||||
|
/*0x0077*/ u8 nameOfMoveForgotten[13];
|
||||||
|
/*0x0084*/ u8 nameOfMoveToTeach[13];
|
||||||
|
/*0x0091*/ bool8 cancelDisabled;
|
||||||
|
/*0x0092*/ u16 state;
|
||||||
|
/*0x0094*/ u16 species;
|
||||||
|
/*0x0096*/ u16 itemId;
|
||||||
|
/*0x0098*/ u16 animType;
|
||||||
|
/*0x009a*/ u16 slotId;
|
||||||
|
/*0x009c*/ u16 closeness;
|
||||||
|
/*0x009e*/ u16 field_009e;
|
||||||
|
/*0x00a0*/ u32 personality;
|
||||||
|
/*0x00a4*/ u32 field_00a4;
|
||||||
|
/*0x00a8*/ u8 field_00a8[0x2834];
|
||||||
|
}; // size=0x28dc
|
||||||
|
|
||||||
|
EWRAM_DATA u8 gUnknown_203B094 = 0;
|
||||||
|
|
||||||
|
struct PokemonSpecialAnim * sub_811C5D4(u8 slotId, u16 itemId, MainCallback callback);
|
||||||
|
void sub_811C748(struct PokemonSpecialAnim * ptr);
|
||||||
|
void sub_811C7BC(struct PokemonSpecialAnim * ptr);
|
||||||
|
void sub_811C7FC(struct PokemonSpecialAnim * ptr);
|
||||||
|
void sub_811C834(u8 taskId);
|
||||||
|
void sub_811CA20(u8 taskId);
|
||||||
|
void sub_811CBE4(u8 taskId);
|
||||||
|
void sub_811CD68(u8 taskId);
|
||||||
|
void sub_811CE4C(u8 taskId);
|
||||||
|
void sub_811CF88(u8 taskId);
|
||||||
|
u8 sub_811D058(u16 friendship);
|
||||||
|
u16 sub_811D018(u16 itemId);
|
||||||
|
void sub_811D184(u8 *buffer, u16 animType);
|
||||||
|
bool8 sub_811D280(void);
|
||||||
|
void sub_811D29C(void);
|
||||||
|
void sub_811D2A8(void);
|
||||||
|
void sub_811D2D0(void);
|
||||||
|
void sub_811D2EC(u8 a0);
|
||||||
|
void sub_811D4D4(void);
|
||||||
|
bool8 sub_811D4EC(void);
|
||||||
|
void sub_811D4FC(void);
|
||||||
|
bool8 sub_811D530(void);
|
||||||
|
bool8 sub_811D754(void);
|
||||||
|
void sub_811D830(u8 a0);
|
||||||
|
void sub_811D948(u8 closeness);
|
||||||
|
bool8 sub_811D9A8(void);
|
||||||
|
void sub_811DC54(u16 itemId, u8 closeness, u8 a2);
|
||||||
|
bool8 sub_811DD90(void);
|
||||||
|
void sub_811E040(void);
|
||||||
|
|
||||||
|
void sub_811C540(u8 slotId, u16 itemId, MainCallback callback)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = sub_811C5D4(slotId, itemId, callback);
|
||||||
|
if (ptr == NULL)
|
||||||
|
SetMainCallback2(callback);
|
||||||
|
else
|
||||||
|
sub_811C748(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C568(u8 slotId, u16 itemId, u16 moveId, MainCallback callback)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = sub_811C5D4(slotId, itemId, callback);
|
||||||
|
if (ptr == NULL)
|
||||||
|
SetMainCallback2(callback);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StringCopy(ptr->nameOfMoveForgotten, gMoveNames[moveId]);
|
||||||
|
sub_811C7BC(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C5AC(u8 slotId, u16 itemId, MainCallback callback)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = sub_811C5D4(slotId, itemId, callback);
|
||||||
|
if (ptr == NULL)
|
||||||
|
SetMainCallback2(callback);
|
||||||
|
else
|
||||||
|
sub_811C7FC(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PokemonSpecialAnim * sub_811C5D4(u8 slotId, u16 itemId, MainCallback callback)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr;
|
||||||
|
struct Pokemon * pokemon;
|
||||||
|
u16 moveId;
|
||||||
|
|
||||||
|
if (!gMain.inBattle)
|
||||||
|
ResetTasks();
|
||||||
|
ResetSpriteData();
|
||||||
|
FreeAllSpritePalettes();
|
||||||
|
ptr = Alloc(sizeof(struct PokemonSpecialAnim));
|
||||||
|
if (ptr == NULL)
|
||||||
|
{
|
||||||
|
SetMainCallback2(callback);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
pokemon = &gPlayerParty[slotId];
|
||||||
|
ptr->state = 0;
|
||||||
|
ptr->savedCallback = callback;
|
||||||
|
ptr->species = GetMonData(pokemon, MON_DATA_SPECIES);
|
||||||
|
ptr->closeness = sub_811D058(GetMonData(pokemon, MON_DATA_FRIENDSHIP));
|
||||||
|
ptr->personality = GetMonData(pokemon, MON_DATA_PERSONALITY);
|
||||||
|
ptr->slotId = slotId;
|
||||||
|
ptr->itemId = itemId;
|
||||||
|
ptr->animType = sub_811D018(itemId);
|
||||||
|
ptr->pokemon = *pokemon;
|
||||||
|
ptr->field_00a4 = 0;
|
||||||
|
GetMonData(pokemon, MON_DATA_NICKNAME, ptr->nickname);
|
||||||
|
if (ptr->animType == 4)
|
||||||
|
{
|
||||||
|
moveId = ItemIdToBattleMoveId(itemId);
|
||||||
|
StringCopy(ptr->nameOfMoveToTeach, gMoveNames[moveId]);
|
||||||
|
}
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C6E8(void)
|
||||||
|
{
|
||||||
|
TransferPlttBuffer();
|
||||||
|
LoadOam();
|
||||||
|
ProcessSpriteCopyRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C6FC(void)
|
||||||
|
{
|
||||||
|
RunTextPrinters();
|
||||||
|
RunTasks();
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C718(u8 taskId, TaskFunc func)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0);
|
||||||
|
ptr->state = 0;
|
||||||
|
gTasks[taskId].func = func;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C748(struct PokemonSpecialAnim * ptr)
|
||||||
|
{
|
||||||
|
u8 taskId;
|
||||||
|
switch (ptr->animType)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
taskId = CreateTask(sub_811C834, 0);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
taskId = CreateTask(sub_811CD68, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SetMainCallback2(ptr->savedCallback);
|
||||||
|
Free(ptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ptr->cancelDisabled = FALSE;
|
||||||
|
SetWordTaskArg(taskId, 0, (uintptr_t)ptr);
|
||||||
|
SetMainCallback2(sub_811C6FC);
|
||||||
|
gUnknown_203B094 = taskId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C7BC(struct PokemonSpecialAnim * ptr)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(sub_811CA20, 0);
|
||||||
|
SetWordTaskArg(taskId, 0, (uintptr_t)ptr);
|
||||||
|
SetMainCallback2(sub_811C6FC);
|
||||||
|
gUnknown_203B094 = taskId;
|
||||||
|
ptr->cancelDisabled = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C7FC(struct PokemonSpecialAnim * ptr)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(sub_811CBE4, 0);
|
||||||
|
SetWordTaskArg(taskId, 0, (uintptr_t)ptr);
|
||||||
|
SetMainCallback2(sub_811C6FC);
|
||||||
|
gUnknown_203B094 = taskId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811C834(u8 taskId)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0);
|
||||||
|
if (!ptr->cancelDisabled && JOY_HELD(A_BUTTON | B_BUTTON))
|
||||||
|
{
|
||||||
|
sub_811E040();
|
||||||
|
sub_811C718(taskId, sub_811CF88);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (ptr->state)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
sub_811D184(ptr->field_00a8, ptr->animType);
|
||||||
|
sub_811D830(0);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (!sub_811D280())
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
|
||||||
|
ptr->state++;
|
||||||
|
SetVBlankCallback(sub_811C6E8);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sub_811D948(ptr->closeness);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (!sub_811D9A8())
|
||||||
|
{
|
||||||
|
ptr->field_009e = 0;
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (!sub_811D754())
|
||||||
|
{
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
sub_811DC54(ptr->itemId, ptr->closeness, 1);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (!sub_811DD90())
|
||||||
|
{
|
||||||
|
ptr->cancelDisabled = TRUE;
|
||||||
|
if (ptr->closeness == 3)
|
||||||
|
{
|
||||||
|
PlayCry1(ptr->species, 0);
|
||||||
|
}
|
||||||
|
sub_811D2A8();
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
sub_811D2EC(0);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if (!sub_811D4EC())
|
||||||
|
{
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
sub_811D948(0);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
if (!sub_811D9A8())
|
||||||
|
{
|
||||||
|
ptr->cancelDisabled = TRUE;
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
if (JOY_NEW(A_BUTTON | B_BUTTON))
|
||||||
|
{
|
||||||
|
if (CheckIfItemIsTMHMOrEvolutionStone(ptr->itemId) != 2) // evo stone
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ptr->state += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
SetMainCallback2(ptr->savedCallback);
|
||||||
|
sub_811D29C();
|
||||||
|
Free(ptr);
|
||||||
|
DestroyTask(taskId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_811CA20(u8 taskId)
|
||||||
|
{
|
||||||
|
struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0);
|
||||||
|
u8 r4;
|
||||||
|
|
||||||
|
switch (ptr->state)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
SetVBlankCallback(NULL);
|
||||||
|
sub_811D184(ptr->field_00a8, ptr->animType);
|
||||||
|
sub_811D830(3);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (!sub_811D280())
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
|
||||||
|
ptr->state++;
|
||||||
|
SetVBlankCallback(sub_811C6E8);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
ptr->field_009e = 0;
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ptr->field_009e++;
|
||||||
|
if (ptr->field_009e > 30)
|
||||||
|
{
|
||||||
|
sub_811D2A8();
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_811D2EC(2);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (!sub_811D4EC())
|
||||||
|
{
|
||||||
|
ptr->field_009e = 0;
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
ptr->field_009e++;
|
||||||
|
if (ptr->field_009e > 30)
|
||||||
|
{
|
||||||
|
sub_811D2EC(3);
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (!sub_811D4EC())
|
||||||
|
{
|
||||||
|
ptr->field_009e = 0;
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
ptr->field_009e++;
|
||||||
|
if (ptr->field_009e > 30)
|
||||||
|
{
|
||||||
|
PlaySE(SE_W255);
|
||||||
|
sub_811D2EC(4);
|
||||||
|
sub_811D4FC();
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
r4 = sub_811D530();
|
||||||
|
if (!(r4 | sub_811D4EC()))
|
||||||
|
{
|
||||||
|
sub_811D4D4();
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
sub_811D2EC(5);
|
||||||
|
ptr->state++;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
if (!sub_811D4EC())
|
||||||
|
{
|
||||||
|
sub_811D2EC(6);
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
if (!sub_811D4EC())
|
||||||
|
{
|
||||||
|
sub_811D2D0();
|
||||||
|
ptr->state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
sub_811C718(taskId, sub_811CE4C);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user