through sub_805D1A8
This commit is contained in:
+1
-1
@@ -729,7 +729,7 @@ StartTransitionToFlipBikeState: @ 80BD5C8
|
|||||||
beq _080BD5F8
|
beq _080BD5F8
|
||||||
movs r0, 0x1
|
movs r0, 0x1
|
||||||
bl SetPlayerAvatarTransitionFlags
|
bl SetPlayerAvatarTransitionFlags
|
||||||
bl sav1_reset_battle_music_maybe
|
bl Overworld_ClearSavedMusic
|
||||||
bl Overworld_PlaySpecialMapMusic
|
bl Overworld_PlaySpecialMapMusic
|
||||||
b _080BD618
|
b _080BD618
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
|
|||||||
+3
-877
@@ -5,882 +5,8 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_805CB04
|
thumb_func_start Task_StopSurfingInit
|
||||||
sub_805CB04: @ 805CB04
|
Task_StopSurfingInit: @ 805D1D4
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
ldr r6, _0805CB64 @ =gObjectEvents
|
|
||||||
ldr r5, _0805CB68 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r5, 0x5]
|
|
||||||
lsls r1, r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r6
|
|
||||||
movs r0, 0x1
|
|
||||||
ands r4, r0
|
|
||||||
lsls r3, r4, 5
|
|
||||||
ldrb r2, [r1, 0x1]
|
|
||||||
movs r0, 0x21
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r3
|
|
||||||
strb r0, [r1, 0x1]
|
|
||||||
movs r0, 0x8
|
|
||||||
bl TestPlayerAvatarFlags
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805CB5C
|
|
||||||
ldr r2, _0805CB6C @ =gSprites
|
|
||||||
ldrb r1, [r5, 0x5]
|
|
||||||
lsls r0, r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r6
|
|
||||||
ldrb r0, [r0, 0x1A]
|
|
||||||
lsls r1, r0, 4
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r2
|
|
||||||
adds r1, 0x3E
|
|
||||||
lsls r3, r4, 2
|
|
||||||
ldrb r2, [r1]
|
|
||||||
movs r0, 0x5
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r3
|
|
||||||
strb r0, [r1]
|
|
||||||
_0805CB5C:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CB64: .4byte gObjectEvents
|
|
||||||
_0805CB68: .4byte gPlayerAvatar
|
|
||||||
_0805CB6C: .4byte gSprites
|
|
||||||
thumb_func_end sub_805CB04
|
|
||||||
|
|
||||||
thumb_func_start sub_805CB70
|
|
||||||
sub_805CB70: @ 805CB70
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r5, _0805CBAC @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r5, 0x5]
|
|
||||||
lsls r4, r0, 3
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _0805CBB0 @ =gObjectEvents
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0x3
|
|
||||||
bl GetPlayerAvatarGraphicsIdByStateId
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventSetGraphicsId
|
|
||||||
ldrb r1, [r5, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _0805CBB4 @ =gSprites
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
bl StartSpriteAnim
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CBAC: .4byte gPlayerAvatar
|
|
||||||
_0805CBB0: .4byte gObjectEvents
|
|
||||||
_0805CBB4: .4byte gSprites
|
|
||||||
thumb_func_end sub_805CB70
|
|
||||||
|
|
||||||
thumb_func_start sub_805CBB8
|
|
||||||
sub_805CBB8: @ 805CBB8
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _0805CBD4 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, 0x6
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CBD8
|
|
||||||
movs r0, 0x5
|
|
||||||
bl GetPlayerAvatarGraphicsIdByStateId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
b _0805CBE0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CBD4: .4byte gPlayerAvatar
|
|
||||||
_0805CBD8:
|
|
||||||
ldr r0, _0805CBE4 @ =gUnknown_835B88E
|
|
||||||
ldrb r1, [r2, 0x7]
|
|
||||||
adds r1, r0
|
|
||||||
ldrb r0, [r1]
|
|
||||||
_0805CBE0:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CBE4: .4byte gUnknown_835B88E
|
|
||||||
thumb_func_end sub_805CBB8
|
|
||||||
|
|
||||||
thumb_func_start sub_805CBE8
|
|
||||||
sub_805CBE8: @ 805CBE8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r5, _0805CC20 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r5, 0x5]
|
|
||||||
lsls r4, r0, 3
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _0805CC24 @ =gObjectEvents
|
|
||||||
adds r4, r0
|
|
||||||
bl sub_805CBB8
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventSetGraphicsId
|
|
||||||
ldrb r1, [r5, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _0805CC28 @ =gSprites
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
bl StartSpriteAnim
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CC20: .4byte gPlayerAvatar
|
|
||||||
_0805CC24: .4byte gObjectEvents
|
|
||||||
_0805CC28: .4byte gSprites
|
|
||||||
thumb_func_end sub_805CBE8
|
|
||||||
|
|
||||||
thumb_func_start sub_805CC2C
|
|
||||||
sub_805CC2C: @ 805CC2C
|
|
||||||
push {lr}
|
|
||||||
movs r0, 0x2
|
|
||||||
bl sub_8150498
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_805CC2C
|
|
||||||
|
|
||||||
thumb_func_start nullsub_24
|
|
||||||
nullsub_24: @ 805CC38
|
|
||||||
bx lr
|
|
||||||
thumb_func_end nullsub_24
|
|
||||||
|
|
||||||
thumb_func_start nullsub_25
|
|
||||||
nullsub_25: @ 805CC3C
|
|
||||||
bx lr
|
|
||||||
thumb_func_end nullsub_25
|
|
||||||
|
|
||||||
thumb_func_start sub_805CC40
|
|
||||||
sub_805CC40: @ 805CC40
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldrb r0, [r5, 0x1E]
|
|
||||||
mov r8, r0
|
|
||||||
movs r1, 0
|
|
||||||
mov r0, sp
|
|
||||||
strh r1, [r0]
|
|
||||||
movs r6, 0x1
|
|
||||||
ldr r1, _0805CCA4 @ =gUnknown_835B890
|
|
||||||
mov r9, r1
|
|
||||||
mov r4, sp
|
|
||||||
mov r7, sp
|
|
||||||
adds r7, 0x2
|
|
||||||
_0805CC62:
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r0, 2
|
|
||||||
add r0, r9
|
|
||||||
ldr r1, [r0]
|
|
||||||
mov r0, r8
|
|
||||||
bl _call_via_r1
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805CCA8
|
|
||||||
ldrb r0, [r5, 0x18]
|
|
||||||
lsrs r0, 4
|
|
||||||
cmp r6, r0
|
|
||||||
bne _0805CCA8
|
|
||||||
ldrh r0, [r5, 0x10]
|
|
||||||
strh r0, [r4]
|
|
||||||
ldrh r0, [r5, 0x12]
|
|
||||||
strh r0, [r7]
|
|
||||||
adds r0, r6, 0
|
|
||||||
mov r1, sp
|
|
||||||
adds r2, r7, 0
|
|
||||||
bl MoveCoords
|
|
||||||
ldrb r0, [r5, 0x1B]
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r2, [r4, r1]
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r3, [r7, r1]
|
|
||||||
adds r1, r6, 0
|
|
||||||
bl ShowWarpArrowSprite
|
|
||||||
b _0805CCC2
|
|
||||||
.align 2, 0
|
|
||||||
_0805CCA4: .4byte gUnknown_835B890
|
|
||||||
_0805CCA8:
|
|
||||||
ldrh r1, [r4]
|
|
||||||
adds r1, 0x1
|
|
||||||
strh r1, [r4]
|
|
||||||
adds r0, r6, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
cmp r1, 0x3
|
|
||||||
ble _0805CC62
|
|
||||||
ldrb r0, [r5, 0x1B]
|
|
||||||
bl SetSpriteInvisible
|
|
||||||
_0805CCC2:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_805CC40
|
|
||||||
|
|
||||||
thumb_func_start StartStrengthAnim
|
|
||||||
StartStrengthAnim: @ 805CCD0
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
lsls r5, 24
|
|
||||||
lsrs r5, 24
|
|
||||||
ldr r6, _0805CD04 @ =taskFF_bump_boulder
|
|
||||||
adds r0, r6, 0
|
|
||||||
movs r1, 0xFF
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _0805CD08 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
strh r4, [r1, 0xA]
|
|
||||||
strh r5, [r1, 0xC]
|
|
||||||
bl _call_via_r6
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CD04: .4byte taskFF_bump_boulder
|
|
||||||
_0805CD08: .4byte gTasks
|
|
||||||
thumb_func_end StartStrengthAnim
|
|
||||||
|
|
||||||
thumb_func_start taskFF_bump_boulder
|
|
||||||
taskFF_bump_boulder: @ 805CD0C
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r6, _0805CD54 @ =gUnknown_835B8A0
|
|
||||||
ldr r2, _0805CD58 @ =gTasks
|
|
||||||
ldr r5, _0805CD5C @ =gObjectEvents
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r4, r1, r2
|
|
||||||
_0805CD20:
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r3, [r4, r0]
|
|
||||||
lsls r3, 2
|
|
||||||
adds r3, r6
|
|
||||||
ldr r0, _0805CD60 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
lsls r1, r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r5
|
|
||||||
movs r2, 0xA
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
lsls r2, r0, 3
|
|
||||||
adds r2, r0
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r5
|
|
||||||
ldr r3, [r3]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r3
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CD20
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CD54: .4byte gUnknown_835B8A0
|
|
||||||
_0805CD58: .4byte gTasks
|
|
||||||
_0805CD5C: .4byte gObjectEvents
|
|
||||||
_0805CD60: .4byte gPlayerAvatar
|
|
||||||
thumb_func_end taskFF_bump_boulder
|
|
||||||
|
|
||||||
thumb_func_start sub_805CD64
|
|
||||||
sub_805CD64: @ 805CD64
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
ldr r1, _0805CD80 @ =gPlayerAvatar
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1, 0x6]
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CD80: .4byte gPlayerAvatar
|
|
||||||
thumb_func_end sub_805CD64
|
|
||||||
|
|
||||||
thumb_func_start sub_805CD84
|
|
||||||
sub_805CD84: @ 805CD84
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r4, r2, 0
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventIsMovementOverridden
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CE0E
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventIsMovementOverridden
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CE0E
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
ldrb r0, [r6, 0xC]
|
|
||||||
bl GetWalkInPlaceNormalMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_805C06C
|
|
||||||
ldrb r0, [r6, 0xC]
|
|
||||||
bl sub_8063F2C
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_805C0A4
|
|
||||||
ldr r2, _0805CE18 @ =gFieldEffectArguments
|
|
||||||
movs r1, 0x10
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
str r0, [r2]
|
|
||||||
movs r1, 0x12
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
str r0, [r2, 0x4]
|
|
||||||
ldrb r0, [r4, 0xB]
|
|
||||||
lsrs r0, 4
|
|
||||||
str r0, [r2, 0x8]
|
|
||||||
ldr r3, _0805CE1C @ =gSprites
|
|
||||||
ldrb r1, [r4, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r3
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
lsls r0, 28
|
|
||||||
lsrs r0, 30
|
|
||||||
str r0, [r2, 0xC]
|
|
||||||
movs r0, 0xA
|
|
||||||
bl FieldEffectStart
|
|
||||||
movs r0, 0xCF
|
|
||||||
bl PlaySE
|
|
||||||
ldrh r0, [r6, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r6, 0x8]
|
|
||||||
_0805CE0E:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CE18: .4byte gFieldEffectArguments
|
|
||||||
_0805CE1C: .4byte gSprites
|
|
||||||
thumb_func_end sub_805CD84
|
|
||||||
|
|
||||||
thumb_func_start sub_805CE20
|
|
||||||
sub_805CE20: @ 805CE20
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r4, r2, 0
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventCheckHeldMovementStatus
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805CE70
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventCheckHeldMovementStatus
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805CE70
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_806DE28
|
|
||||||
ldrh r0, [r4, 0x10]
|
|
||||||
ldrh r1, [r4, 0x12]
|
|
||||||
bl sub_806DE70
|
|
||||||
ldr r1, _0805CE78 @ =gPlayerAvatar
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1, 0x6]
|
|
||||||
bl ScriptContext2_Disable
|
|
||||||
ldr r0, _0805CE7C @ =taskFF_bump_boulder
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl DestroyTask
|
|
||||||
_0805CE70:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CE78: .4byte gPlayerAvatar
|
|
||||||
_0805CE7C: .4byte taskFF_bump_boulder
|
|
||||||
thumb_func_end sub_805CE20
|
|
||||||
|
|
||||||
thumb_func_start DoPlayerMatJump
|
|
||||||
DoPlayerMatJump: @ 805CE80
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, _0805CE9C @ =sub_805CEA0
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0xFF
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl _call_via_r4
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CE9C: .4byte sub_805CEA0
|
|
||||||
thumb_func_end DoPlayerMatJump
|
|
||||||
|
|
||||||
thumb_func_start sub_805CEA0
|
|
||||||
sub_805CEA0: @ 805CEA0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r5, _0805CEDC @ =gUnknown_835B8AC
|
|
||||||
ldr r2, _0805CEE0 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r4, r1, r2
|
|
||||||
_0805CEB2:
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r2, [r4, r0]
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r5
|
|
||||||
ldr r0, _0805CEE4 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
lsls r1, r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
ldr r0, _0805CEE8 @ =gObjectEvents
|
|
||||||
adds r1, r0
|
|
||||||
ldr r2, [r2]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CEB2
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CEDC: .4byte gUnknown_835B8AC
|
|
||||||
_0805CEE0: .4byte gTasks
|
|
||||||
_0805CEE4: .4byte gPlayerAvatar
|
|
||||||
_0805CEE8: .4byte gObjectEvents
|
|
||||||
thumb_func_end sub_805CEA0
|
|
||||||
|
|
||||||
thumb_func_start PlayerAvatar_DoSecretBaseMatJump
|
|
||||||
PlayerAvatar_DoSecretBaseMatJump: @ 805CEEC
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
ldr r5, _0805CF50 @ =gPlayerAvatar
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r5, 0x6]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805CF48
|
|
||||||
movs r0, 0xA
|
|
||||||
bl PlaySE
|
|
||||||
ldrb r0, [r4, 0x18]
|
|
||||||
lsls r0, 28
|
|
||||||
lsrs r0, 28
|
|
||||||
bl GetJumpInPlaceMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_805C06C
|
|
||||||
ldrh r0, [r6, 0xA]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r6, 0xA]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x1
|
|
||||||
ble _0805CF48
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r5, 0x6]
|
|
||||||
ldrb r0, [r5, 0x1]
|
|
||||||
movs r1, 0x20
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r5, 0x1]
|
|
||||||
ldr r0, _0805CF54 @ =sub_805CEA0
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl DestroyTask
|
|
||||||
_0805CF48:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CF50: .4byte gPlayerAvatar
|
|
||||||
_0805CF54: .4byte sub_805CEA0
|
|
||||||
thumb_func_end PlayerAvatar_DoSecretBaseMatJump
|
|
||||||
|
|
||||||
thumb_func_start DoPlayerMatSpin
|
|
||||||
DoPlayerMatSpin: @ 805CF58
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, _0805CF74 @ =sub_805CF78
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0xFF
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl _call_via_r4
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CF74: .4byte sub_805CF78
|
|
||||||
thumb_func_end DoPlayerMatSpin
|
|
||||||
|
|
||||||
thumb_func_start sub_805CF78
|
|
||||||
sub_805CF78: @ 805CF78
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r5, _0805CFB4 @ =gUnknown_835B8B0
|
|
||||||
ldr r2, _0805CFB8 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r4, r1, r2
|
|
||||||
_0805CF8A:
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r2, [r4, r0]
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r5
|
|
||||||
ldr r0, _0805CFBC @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
lsls r1, r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
ldr r0, _0805CFC0 @ =gObjectEvents
|
|
||||||
adds r1, r0
|
|
||||||
ldr r2, [r2]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0805CF8A
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805CFB4: .4byte gUnknown_835B8B0
|
|
||||||
_0805CFB8: .4byte gTasks
|
|
||||||
_0805CFBC: .4byte gPlayerAvatar
|
|
||||||
_0805CFC0: .4byte gObjectEvents
|
|
||||||
thumb_func_end sub_805CF78
|
|
||||||
|
|
||||||
thumb_func_start sub_805CFC4
|
|
||||||
sub_805CFC4: @ 805CFC4
|
|
||||||
push {lr}
|
|
||||||
ldrh r2, [r0, 0x8]
|
|
||||||
adds r2, 0x1
|
|
||||||
strh r2, [r0, 0x8]
|
|
||||||
ldrb r1, [r1, 0x18]
|
|
||||||
lsrs r1, 4
|
|
||||||
strh r1, [r0, 0xA]
|
|
||||||
ldr r1, _0805CFE8 @ =gPlayerAvatar
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1, 0x6]
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
movs r0, 0x27
|
|
||||||
bl PlaySE
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805CFE8: .4byte gPlayerAvatar
|
|
||||||
thumb_func_end sub_805CFC4
|
|
||||||
|
|
||||||
thumb_func_start sub_805CFEC
|
|
||||||
sub_805CFEC: @ 805CFEC
|
|
||||||
push {r4-r6,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
ldr r1, _0805D060 @ =gUnknown_835B8C0
|
|
||||||
mov r0, sp
|
|
||||||
movs r2, 0x4
|
|
||||||
bl memcpy
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805D054
|
|
||||||
ldrb r0, [r5, 0x18]
|
|
||||||
lsrs r0, 4
|
|
||||||
subs r0, 0x1
|
|
||||||
add r0, sp
|
|
||||||
ldrb r6, [r0]
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl GetFaceDirectionMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_805C06C
|
|
||||||
ldrb r0, [r4, 0xA]
|
|
||||||
cmp r6, r0
|
|
||||||
bne _0805D032
|
|
||||||
ldrh r0, [r4, 0xC]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
_0805D032:
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
movs r1, 0xC
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x3
|
|
||||||
ble _0805D054
|
|
||||||
ldrb r0, [r4, 0xA]
|
|
||||||
bl GetOppositeDirection
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r6, r0
|
|
||||||
bne _0805D054
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_0805D054:
|
|
||||||
movs r0, 0
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805D060: .4byte gUnknown_835B8C0
|
|
||||||
thumb_func_end sub_805CFEC
|
|
||||||
|
|
||||||
thumb_func_start sub_805D064
|
|
||||||
sub_805D064: @ 805D064
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
ldr r1, _0805D0A0 @ =gUnknown_835B8C4
|
|
||||||
mov r0, sp
|
|
||||||
movs r2, 0x5
|
|
||||||
bl memcpy
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805D094
|
|
||||||
movs r1, 0xC
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
add r0, sp
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_805C06C
|
|
||||||
movs r0, 0x1
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
_0805D094:
|
|
||||||
movs r0, 0
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805D0A0: .4byte gUnknown_835B8C4
|
|
||||||
thumb_func_end sub_805D064
|
|
||||||
|
|
||||||
thumb_func_start sub_805D0A4
|
|
||||||
sub_805D0A4: @ 805D0A4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0805D0E8
|
|
||||||
ldrb r0, [r4, 0xA]
|
|
||||||
bl GetOppositeDirection
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl sub_8063F2C
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_805C06C
|
|
||||||
bl ScriptContext2_Disable
|
|
||||||
ldr r1, _0805D0F0 @ =gPlayerAvatar
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1, 0x6]
|
|
||||||
ldr r0, _0805D0F4 @ =sub_805CF78
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl DestroyTask
|
|
||||||
_0805D0E8:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0805D0F0: .4byte gPlayerAvatar
|
|
||||||
_0805D0F4: .4byte sub_805CF78
|
|
||||||
thumb_func_end sub_805D0A4
|
|
||||||
|
|
||||||
thumb_func_start CreateStopSurfingTask
|
|
||||||
CreateStopSurfingTask: @ 805D0F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
bl sav1_reset_battle_music_maybe
|
|
||||||
bl Overworld_ChangeMusicToDefault
|
|
||||||
ldr r2, _0805D148 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, 0xF7
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, 0x1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r2, 0x6]
|
|
||||||
ldr r5, _0805D14C @ =taskFF_0805D1D4
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0xFF
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _0805D150 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
strh r4, [r1, 0x8]
|
|
||||||
bl _call_via_r5
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805D148: .4byte gPlayerAvatar
|
|
||||||
_0805D14C: .4byte taskFF_0805D1D4
|
|
||||||
_0805D150: .4byte gTasks
|
|
||||||
thumb_func_end CreateStopSurfingTask
|
|
||||||
|
|
||||||
thumb_func_start sub_805D154
|
|
||||||
sub_805D154: @ 805D154
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
ldr r2, _0805D19C @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, 0xF7
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, 0x1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r2, 0x6]
|
|
||||||
ldr r5, _0805D1A0 @ =taskFF_0805D1D4
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0xFF
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _0805D1A4 @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
strh r4, [r1, 0x8]
|
|
||||||
bl _call_via_r5
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805D19C: .4byte gPlayerAvatar
|
|
||||||
_0805D1A0: .4byte taskFF_0805D1D4
|
|
||||||
_0805D1A4: .4byte gTasks
|
|
||||||
thumb_func_end sub_805D154
|
|
||||||
|
|
||||||
thumb_func_start sub_805D1A8
|
|
||||||
sub_805D1A8: @ 805D1A8
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0805D1CC @ =gUnknown_3005E88
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0805D1C6
|
|
||||||
cmp r0, 0x3
|
|
||||||
beq _0805D1C6
|
|
||||||
ldr r0, _0805D1D0 @ =gUnknown_835B820
|
|
||||||
ldrb r0, [r0, 0x2]
|
|
||||||
movs r1, 0x10
|
|
||||||
bl sub_811278C
|
|
||||||
movs r0, 0x2
|
|
||||||
bl CreateStopSurfingTask
|
|
||||||
_0805D1C6:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0805D1CC: .4byte gUnknown_3005E88
|
|
||||||
_0805D1D0: .4byte gUnknown_835B820
|
|
||||||
thumb_func_end sub_805D1A8
|
|
||||||
|
|
||||||
thumb_func_start taskFF_0805D1D4
|
|
||||||
taskFF_0805D1D4: @ 805D1D4
|
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r6, r0, 24
|
lsrs r6, r0, 24
|
||||||
@@ -928,7 +54,7 @@ _0805D230: .4byte gPlayerAvatar
|
|||||||
_0805D234: .4byte gObjectEvents
|
_0805D234: .4byte gObjectEvents
|
||||||
_0805D238: .4byte gTasks
|
_0805D238: .4byte gTasks
|
||||||
_0805D23C: .4byte sub_805D240
|
_0805D23C: .4byte sub_805D240
|
||||||
thumb_func_end taskFF_0805D1D4
|
thumb_func_end Task_StopSurfingInit
|
||||||
|
|
||||||
thumb_func_start sub_805D240
|
thumb_func_start sub_805D240
|
||||||
sub_805D240: @ 805D240
|
sub_805D240: @ 805D240
|
||||||
|
|||||||
+5
-5
@@ -1715,7 +1715,7 @@ sub_8055864: @ 8055864
|
|||||||
bl SetSav1WeatherFromCurrMapHeader
|
bl SetSav1WeatherFromCurrMapHeader
|
||||||
bl sub_805610C
|
bl sub_805610C
|
||||||
bl sub_8055CB8
|
bl sub_8055CB8
|
||||||
bl sav1_reset_battle_music_maybe
|
bl Overworld_ClearSavedMusic
|
||||||
bl mapheader_run_script_with_tag_x3
|
bl mapheader_run_script_with_tag_x3
|
||||||
bl TryRegenerateRenewableHiddenItems
|
bl TryRegenerateRenewableHiddenItems
|
||||||
bl InitMap
|
bl InitMap
|
||||||
@@ -1792,7 +1792,7 @@ sub_8055920: @ 8055920
|
|||||||
bl FlagClear
|
bl FlagClear
|
||||||
_08055974:
|
_08055974:
|
||||||
bl sub_8055CB8
|
bl sub_8055CB8
|
||||||
bl sav1_reset_battle_music_maybe
|
bl Overworld_ClearSavedMusic
|
||||||
bl mapheader_run_script_with_tag_x3
|
bl mapheader_run_script_with_tag_x3
|
||||||
bl TryRegenerateRenewableHiddenItems
|
bl TryRegenerateRenewableHiddenItems
|
||||||
bl UpdateLocationHistoryForRoamer
|
bl UpdateLocationHistoryForRoamer
|
||||||
@@ -2474,8 +2474,8 @@ Overworld_SetSavedMusic: @ 8055E78
|
|||||||
_08055E80: .4byte gSaveBlock1Ptr
|
_08055E80: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end Overworld_SetSavedMusic
|
thumb_func_end Overworld_SetSavedMusic
|
||||||
|
|
||||||
thumb_func_start sav1_reset_battle_music_maybe
|
thumb_func_start Overworld_ClearSavedMusic
|
||||||
sav1_reset_battle_music_maybe: @ 8055E84
|
Overworld_ClearSavedMusic: @ 8055E84
|
||||||
ldr r0, _08055E90 @ =gSaveBlock1Ptr
|
ldr r0, _08055E90 @ =gSaveBlock1Ptr
|
||||||
ldr r1, [r0]
|
ldr r1, [r0]
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
@@ -2483,7 +2483,7 @@ sav1_reset_battle_music_maybe: @ 8055E84
|
|||||||
bx lr
|
bx lr
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08055E90: .4byte gSaveBlock1Ptr
|
_08055E90: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end sav1_reset_battle_music_maybe
|
thumb_func_end Overworld_ClearSavedMusic
|
||||||
|
|
||||||
thumb_func_start sub_8055E94
|
thumb_func_start sub_8055E94
|
||||||
sub_8055E94: @ 8055E94
|
sub_8055E94: @ 8055E94
|
||||||
|
|||||||
@@ -4,32 +4,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
gUnknown_835B890:: @ 835B890
|
|
||||||
.4byte MetatileBehavior_IsSouthArrowWarp
|
|
||||||
.4byte MetatileBehavior_IsNorthArrowWarp
|
|
||||||
.4byte MetatileBehavior_IsWestArrowWarp
|
|
||||||
.4byte MetatileBehavior_IsEastArrowWarp
|
|
||||||
|
|
||||||
gUnknown_835B8A0:: @ 835B8A0
|
|
||||||
.4byte sub_805CD64
|
|
||||||
.4byte sub_805CD84
|
|
||||||
.4byte sub_805CE20
|
|
||||||
|
|
||||||
gUnknown_835B8AC:: @ 835B8AC
|
|
||||||
.4byte PlayerAvatar_DoSecretBaseMatJump
|
|
||||||
|
|
||||||
gUnknown_835B8B0:: @ 835B8B0
|
|
||||||
.4byte sub_805CFC4
|
|
||||||
.4byte sub_805CFEC
|
|
||||||
.4byte sub_805D064
|
|
||||||
.4byte sub_805D0A4
|
|
||||||
|
|
||||||
gUnknown_835B8C0:: @ 835B8C0
|
|
||||||
.byte 0x03, 0x04, 0x02, 0x01
|
|
||||||
|
|
||||||
gUnknown_835B8C4:: @ 835B8C4
|
|
||||||
.byte 0x18, 0x18, 0x19, 0x1a, 0x1b
|
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_835B8CC:: @ 835B8CC
|
gUnknown_835B8CC:: @ 835B8CC
|
||||||
.4byte sub_805D33C
|
.4byte sub_805D33C
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
#define OBJ_EVENT_GFX_RED_ITEM 3
|
#define OBJ_EVENT_GFX_RED_ITEM 3
|
||||||
#define OBJ_EVENT_GFX_RED_FISH 4
|
#define OBJ_EVENT_GFX_RED_FISH 4
|
||||||
#define OBJ_EVENT_GFX_RED_ITEM_COPY 5
|
#define OBJ_EVENT_GFX_RED_ITEM_COPY 5
|
||||||
#define OBJ_EVENT_GFX_RED_VS_SEEKER 6
|
#define OBJ_EVENT_GFX_RED_FIELD_MOVE_BIKE 6
|
||||||
#define OBJ_EVENT_GFX_GREEN_NORMAL 7
|
#define OBJ_EVENT_GFX_GREEN_NORMAL 7
|
||||||
#define OBJ_EVENT_GFX_GREEN_BIKE 8
|
#define OBJ_EVENT_GFX_GREEN_BIKE 8
|
||||||
#define OBJ_EVENT_GFX_GREEN_SURF 9
|
#define OBJ_EVENT_GFX_GREEN_SURF 9
|
||||||
#define OBJ_EVENT_GFX_GREEN_ITEM 10
|
#define OBJ_EVENT_GFX_GREEN_ITEM 10
|
||||||
#define OBJ_EVENT_GFX_GREEN_FISH 11
|
#define OBJ_EVENT_GFX_GREEN_FISH 11
|
||||||
#define OBJ_EVENT_GFX_GREEN_ITEM_COPY 12
|
#define OBJ_EVENT_GFX_GREEN_ITEM_COPY 12
|
||||||
#define OBJ_EVENT_GFX_GREEN_VS_SEEKER 13
|
#define OBJ_EVENT_GFX_GREEN_FIELD_MOVE_BIKE 13
|
||||||
#define OBJ_EVENT_GFX_RS_BRENDAN 14
|
#define OBJ_EVENT_GFX_RS_BRENDAN 14
|
||||||
#define OBJ_EVENT_GFX_RS_MAY 15
|
#define OBJ_EVENT_GFX_RS_MAY 15
|
||||||
#define OBJ_EVENT_GFX_LITTLE_BOY 16
|
#define OBJ_EVENT_GFX_LITTLE_BOY 16
|
||||||
|
|||||||
@@ -35,5 +35,6 @@ void FieldClearPlayerInput(struct FieldInput *input);
|
|||||||
int ProcessPlayerFieldInput(struct FieldInput *input);
|
int ProcessPlayerFieldInput(struct FieldInput *input);
|
||||||
void FieldInput_HandleCancelSignpost(struct FieldInput * input);
|
void FieldInput_HandleCancelSignpost(struct FieldInput * input);
|
||||||
void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys);
|
void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys);
|
||||||
|
void sub_806DE70(u16 x, u16 y);
|
||||||
|
|
||||||
#endif //GUARD_FIELD_CONTROL_AVATAR_H
|
#endif //GUARD_FIELD_CONTROL_AVATAR_H
|
||||||
|
|||||||
@@ -22,5 +22,7 @@ bool8 sub_80DCBE0(struct ObjectEvent *);
|
|||||||
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
|
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
|
||||||
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
|
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
|
||||||
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
|
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
|
||||||
|
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
|
||||||
|
void SetSpriteInvisible(u8 spriteId);
|
||||||
|
|
||||||
#endif //GUARD_FIELD_EFFECT_HELPERS_H
|
#endif //GUARD_FIELD_EFFECT_HELPERS_H
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
|
|||||||
u8 GetPlayerAvatarGraphicsIdByStateId(u8);
|
u8 GetPlayerAvatarGraphicsIdByStateId(u8);
|
||||||
void SetPlayerAvatarStateMask(u8 mask);
|
void SetPlayerAvatarStateMask(u8 mask);
|
||||||
void sub_805D9C4(struct Sprite *sprite);
|
void sub_805D9C4(struct Sprite *sprite);
|
||||||
void sub_805D154(u8 direction);
|
void CreateStopSurfingTask_NoMusicChange(u8 direction);
|
||||||
void sub_805DAE4(u8 direction);
|
void sub_805DAE4(u8 direction);
|
||||||
void SetPlayerAvatarTransitionFlags(u16 a);
|
void SetPlayerAvatarTransitionFlags(u16 a);
|
||||||
bool8 IsPlayerFacingSurfableFishableWater(void);
|
bool8 IsPlayerFacingSurfableFishableWater(void);
|
||||||
@@ -29,7 +29,7 @@ u8 GetPlayerAvatarObjectId(void);
|
|||||||
u8 PlayerGetZCoord(void);
|
u8 PlayerGetZCoord(void);
|
||||||
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
|
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
|
||||||
void sub_805CB70(void);
|
void sub_805CB70(void);
|
||||||
void sub_805CB04(bool8);
|
void SetPlayerInvisibility(bool8);
|
||||||
void sub_805DC04(void);
|
void sub_805DC04(void);
|
||||||
void sub_805DAB0(void);
|
void sub_805DAB0(void);
|
||||||
bool32 sub_805DAD0(void);
|
bool32 sub_805DAD0(void);
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ void sub_8084EBC(s16, s16);
|
|||||||
void sub_80555E0(void);
|
void sub_80555E0(void);
|
||||||
void copy_saved_warp3_bank_and_enter_x_to_warp1(void);
|
void copy_saved_warp3_bank_and_enter_x_to_warp1(void);
|
||||||
u8 IsMapTypeOutdoors(u8 mapType);
|
u8 IsMapTypeOutdoors(u8 mapType);
|
||||||
void sav1_reset_battle_music_maybe(void);
|
void Overworld_ClearSavedMusic(void);
|
||||||
bool32 sub_8056124(u16 song);
|
bool32 sub_8056124(u16 song);
|
||||||
|
|
||||||
void player_avatar_init_params_reset(void);
|
void player_avatar_init_params_reset(void);
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ static const u8 sTextColorTable[] =
|
|||||||
[OBJ_EVENT_GFX_RED_NORMAL / 2] = 0x00, // OBJ_EVENT_GFX_RED_BIKE
|
[OBJ_EVENT_GFX_RED_NORMAL / 2] = 0x00, // OBJ_EVENT_GFX_RED_BIKE
|
||||||
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM
|
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM
|
||||||
[OBJ_EVENT_GFX_RED_FISH / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM_COPY
|
[OBJ_EVENT_GFX_RED_FISH / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM_COPY
|
||||||
[OBJ_EVENT_GFX_RED_VS_SEEKER / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
|
[OBJ_EVENT_GFX_RED_FIELD_MOVE_BIKE / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
|
||||||
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_SURF
|
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_SURF
|
||||||
[OBJ_EVENT_GFX_GREEN_ITEM / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
|
[OBJ_EVENT_GFX_GREEN_ITEM / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
|
||||||
[OBJ_EVENT_GFX_GREEN_ITEM_COPY / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_VS_SEEKER
|
[OBJ_EVENT_GFX_GREEN_ITEM_COPY / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FIELD_MOVE_BIKE
|
||||||
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = 0x10, // OBJ_EVENT_GFX_RS_MAY
|
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = 0x10, // OBJ_EVENT_GFX_RS_MAY
|
||||||
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
|
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
|
||||||
[OBJ_EVENT_GFX_YOUNGSTER / 2] = 0x00, // OBJ_EVENT_GFX_BOY
|
[OBJ_EVENT_GFX_YOUNGSTER / 2] = 0x00, // OBJ_EVENT_GFX_BOY
|
||||||
|
|||||||
+1
-1
@@ -2888,7 +2888,7 @@ u8 FldEff_UseSurf(void)
|
|||||||
{
|
{
|
||||||
u8 taskId = CreateTask(Task_FldEffUseSurf, 0xff);
|
u8 taskId = CreateTask(Task_FldEffUseSurf, 0xff);
|
||||||
gTasks[taskId].data[15] = gFieldEffectArguments[0];
|
gTasks[taskId].data[15] = gFieldEffectArguments[0];
|
||||||
sav1_reset_battle_music_maybe();
|
Overworld_ClearSavedMusic();
|
||||||
if (sub_8056124(MUS_NAMINORI))
|
if (sub_8056124(MUS_NAMINORI))
|
||||||
Overworld_ChangeMusicTo(MUS_NAMINORI);
|
Overworld_ChangeMusicTo(MUS_NAMINORI);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ static void sub_807DC70(void)
|
|||||||
|
|
||||||
static void sub_807DCB0(bool8 arg)
|
static void sub_807DCB0(bool8 arg)
|
||||||
{
|
{
|
||||||
sub_805CB04(!arg);
|
SetPlayerInvisibility(!arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task0A_nop_for_a_while(u8 taskId)
|
static void task0A_nop_for_a_while(u8 taskId)
|
||||||
|
|||||||
+310
-8
@@ -5,6 +5,7 @@
|
|||||||
#include "event_object_movement.h"
|
#include "event_object_movement.h"
|
||||||
#include "fieldmap.h"
|
#include "fieldmap.h"
|
||||||
#include "field_control_avatar.h"
|
#include "field_control_avatar.h"
|
||||||
|
#include "field_effect.h"
|
||||||
#include "field_effect_helpers.h"
|
#include "field_effect_helpers.h"
|
||||||
#include "field_player_avatar.h"
|
#include "field_player_avatar.h"
|
||||||
#include "metatile_behavior.h"
|
#include "metatile_behavior.h"
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
#include "party_menu.h"
|
#include "party_menu.h"
|
||||||
#include "quest_log.h"
|
#include "quest_log.h"
|
||||||
#include "quest_log_player.h"
|
#include "quest_log_player.h"
|
||||||
|
#include "script.h"
|
||||||
#include "constants/event_object_movement.h"
|
#include "constants/event_object_movement.h"
|
||||||
#include "constants/event_objects.h"
|
#include "constants/event_objects.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
@@ -89,12 +91,24 @@ void PlayCollisionSoundIfNotFacingWarp(u8 direction);
|
|||||||
void PlayerGoSpin(u8 direction);
|
void PlayerGoSpin(u8 direction);
|
||||||
void sub_805C2CC(u8 metatileBehavior);
|
void sub_805C2CC(u8 metatileBehavior);
|
||||||
bool8 MetatileAtCoordsIsWaterTile(s16 x, s16 y);
|
bool8 MetatileAtCoordsIsWaterTile(s16 x, s16 y);
|
||||||
bool8 player_should_look_direction_be_enforced_upon_movement(void);
|
|
||||||
void CreateStopSurfingTask(u8 direction);
|
|
||||||
void StartStrengthAnim(u8 objectEventId, u8 direction);
|
|
||||||
void sub_805CC40(struct ObjectEvent * playerObjEvent);
|
void sub_805CC40(struct ObjectEvent * playerObjEvent);
|
||||||
|
void StartStrengthAnim(u8 objectEventId, u8 direction);
|
||||||
|
void Task_BumpBoulder(u8 taskId);
|
||||||
|
bool8 sub_805CD64(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||||
|
bool8 do_boulder_dust(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||||
|
bool8 sub_805CE20(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||||
void DoPlayerMatJump(void);
|
void DoPlayerMatJump(void);
|
||||||
|
void DoPlayerAvatarSecretBaseMatJump(u8 taskId);
|
||||||
|
bool8 PlayerAvatar_DoSecretBaseMatJump(struct Task * task, struct ObjectEvent * playerObj);
|
||||||
void DoPlayerMatSpin(void);
|
void DoPlayerMatSpin(void);
|
||||||
|
void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId);
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task * task, struct ObjectEvent * playerObj);
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task * task, struct ObjectEvent * playerObj);
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task * task, struct ObjectEvent * playerObj);
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task * task, struct ObjectEvent * playerObj);
|
||||||
|
void CreateStopSurfingTask(u8 direction);
|
||||||
|
void Task_StopSurfingInit(u8 taskId);
|
||||||
|
bool8 player_should_look_direction_be_enforced_upon_movement(void);
|
||||||
|
|
||||||
void MovementType_Player(struct Sprite *sprite)
|
void MovementType_Player(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
@@ -1244,11 +1258,6 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8 gUnknown_835B88E[] = {
|
|
||||||
OBJ_EVENT_GFX_RED_VS_SEEKER,
|
|
||||||
OBJ_EVENT_GFX_GREEN_VS_SEEKER
|
|
||||||
};
|
|
||||||
|
|
||||||
void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 b)
|
void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 b)
|
||||||
{
|
{
|
||||||
u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender);
|
u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender);
|
||||||
@@ -1288,3 +1297,296 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
|||||||
gPlayerAvatar.gender = gender;
|
gPlayerAvatar.gender = gender;
|
||||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED | PLAYER_AVATAR_FLAG_ON_FOOT);
|
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED | PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetPlayerInvisibility(bool8 invisible)
|
||||||
|
{
|
||||||
|
gObjectEvents[gPlayerAvatar.objectEventId].invisible = invisible;
|
||||||
|
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
|
||||||
|
gSprites[gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId].invisible = invisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_805CB70(void)
|
||||||
|
{
|
||||||
|
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
|
||||||
|
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const u8 gUnknown_835B88E[] = {
|
||||||
|
OBJ_EVENT_GFX_RED_FIELD_MOVE_BIKE,
|
||||||
|
OBJ_EVENT_GFX_GREEN_FIELD_MOVE_BIKE
|
||||||
|
};
|
||||||
|
|
||||||
|
u8 sub_805CBB8(void)
|
||||||
|
{
|
||||||
|
if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
|
||||||
|
return gUnknown_835B88E[gPlayerAvatar.gender];
|
||||||
|
else
|
||||||
|
return GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_805CBE8(void)
|
||||||
|
{
|
||||||
|
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], sub_805CBB8());
|
||||||
|
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_805CC2C(void)
|
||||||
|
{
|
||||||
|
sub_8150498(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nullsub_24(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void nullsub_25(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 (*const sArrowWarpMetatileBehaviorChecks2[])(u8) = {
|
||||||
|
MetatileBehavior_IsSouthArrowWarp,
|
||||||
|
MetatileBehavior_IsNorthArrowWarp,
|
||||||
|
MetatileBehavior_IsWestArrowWarp,
|
||||||
|
MetatileBehavior_IsEastArrowWarp
|
||||||
|
};
|
||||||
|
|
||||||
|
void sub_805CC40(struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
u8 direction;
|
||||||
|
u8 metatileBehavior = objectEvent->currentMetatileBehavior;
|
||||||
|
|
||||||
|
for (x = 0, direction = DIR_SOUTH; x < 4; x++, direction++)
|
||||||
|
{
|
||||||
|
if (sArrowWarpMetatileBehaviorChecks2[x](metatileBehavior) && direction == objectEvent->movementDirection)
|
||||||
|
{
|
||||||
|
x = objectEvent->currentCoords.x;
|
||||||
|
y = objectEvent->currentCoords.y;
|
||||||
|
MoveCoords(direction, &x, &y);
|
||||||
|
ShowWarpArrowSprite(objectEvent->warpArrowSpriteId, direction, x, y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetSpriteInvisible(objectEvent->warpArrowSpriteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 (*const gUnknown_835B8A0[])(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj) = {
|
||||||
|
sub_805CD64,
|
||||||
|
do_boulder_dust,
|
||||||
|
sub_805CE20
|
||||||
|
};
|
||||||
|
|
||||||
|
void StartStrengthAnim(u8 a, u8 b)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(Task_BumpBoulder, 0xFF);
|
||||||
|
|
||||||
|
gTasks[taskId].data[1] = a;
|
||||||
|
gTasks[taskId].data[2] = b;
|
||||||
|
Task_BumpBoulder(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_BumpBoulder(u8 taskId)
|
||||||
|
{
|
||||||
|
while (gUnknown_835B8A0[gTasks[taskId].data[0]](&gTasks[taskId],
|
||||||
|
&gObjectEvents[gPlayerAvatar.objectEventId],
|
||||||
|
&gObjectEvents[gTasks[taskId].data[1]]))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_805CD64(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||||
|
{
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
|
task->data[0]++;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 do_boulder_dust(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||||
|
{
|
||||||
|
if (!ObjectEventIsMovementOverridden(playerObject)
|
||||||
|
&& !ObjectEventIsMovementOverridden(strengthObject))
|
||||||
|
{
|
||||||
|
ObjectEventClearHeldMovementIfFinished(playerObject);
|
||||||
|
ObjectEventClearHeldMovementIfFinished(strengthObject);
|
||||||
|
sub_805C06C(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2]));
|
||||||
|
sub_805C0A4(strengthObject, sub_8063F2C((u8)task->data[2]));
|
||||||
|
gFieldEffectArguments[0] = strengthObject->currentCoords.x;
|
||||||
|
gFieldEffectArguments[1] = strengthObject->currentCoords.y;
|
||||||
|
gFieldEffectArguments[2] = strengthObject->previousElevation;
|
||||||
|
gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority;
|
||||||
|
FieldEffectStart(FLDEFF_DUST);
|
||||||
|
PlaySE(SE_W070);
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_805CE20(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||||
|
{
|
||||||
|
if (ObjectEventCheckHeldMovementStatus(playerObject)
|
||||||
|
&& ObjectEventCheckHeldMovementStatus(strengthObject))
|
||||||
|
{
|
||||||
|
ObjectEventClearHeldMovementIfFinished(playerObject);
|
||||||
|
ObjectEventClearHeldMovementIfFinished(strengthObject);
|
||||||
|
sub_806DE28(strengthObject);
|
||||||
|
sub_806DE70(strengthObject->currentCoords.x, strengthObject->currentCoords.y);
|
||||||
|
gPlayerAvatar.preventStep = FALSE;
|
||||||
|
ScriptContext2_Disable();
|
||||||
|
DestroyTask(FindTaskIdByFunc(Task_BumpBoulder));
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 (*const sPlayerAvatarSecretBaseMatJump[])(struct Task *, struct ObjectEvent *) = {
|
||||||
|
PlayerAvatar_DoSecretBaseMatJump
|
||||||
|
};
|
||||||
|
|
||||||
|
void DoPlayerMatJump(void)
|
||||||
|
{
|
||||||
|
DoPlayerAvatarSecretBaseMatJump(CreateTask(DoPlayerAvatarSecretBaseMatJump, 0xFF));
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoPlayerAvatarSecretBaseMatJump(u8 taskId)
|
||||||
|
{
|
||||||
|
while (sPlayerAvatarSecretBaseMatJump[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId]))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
// because data[0] is used to call this, it can be inferred that there may have been multiple mat jump functions at one point, so the name for these groups of functions is appropriate in assuming the sole use of mat jump.
|
||||||
|
bool8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
PlaySE(SE_DANSA);
|
||||||
|
sub_805C06C(objectEvent, GetJumpInPlaceMovementAction(objectEvent->facingDirection));
|
||||||
|
task->data[1]++;
|
||||||
|
if (task->data[1] > 1)
|
||||||
|
{
|
||||||
|
gPlayerAvatar.preventStep = FALSE;
|
||||||
|
gPlayerAvatar.unk1 |= 0x20;
|
||||||
|
DestroyTask(FindTaskIdByFunc(DoPlayerAvatarSecretBaseMatJump));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 (*const sPlayerAvatarSecretBaseMatSpin[])(struct Task * task, struct ObjectEvent * playerObj) = {
|
||||||
|
PlayerAvatar_SecretBaseMatSpinStep0,
|
||||||
|
PlayerAvatar_SecretBaseMatSpinStep1,
|
||||||
|
PlayerAvatar_SecretBaseMatSpinStep2,
|
||||||
|
PlayerAvatar_SecretBaseMatSpinStep3,
|
||||||
|
};
|
||||||
|
|
||||||
|
void DoPlayerMatSpin(void)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(PlayerAvatar_DoSecretBaseMatSpin, 0xFF);
|
||||||
|
|
||||||
|
PlayerAvatar_DoSecretBaseMatSpin(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId)
|
||||||
|
{
|
||||||
|
while (sPlayerAvatarSecretBaseMatSpin[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId]))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
task->data[0]++;
|
||||||
|
task->data[1] = objectEvent->movementDirection;
|
||||||
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
PlaySE(SE_TK_WARPIN);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
u8 directions[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
|
||||||
|
|
||||||
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
u8 direction;
|
||||||
|
|
||||||
|
sub_805C06C(objectEvent, GetFaceDirectionMovementAction(direction = directions[objectEvent->movementDirection - 1]));
|
||||||
|
if (direction == (u8)task->data[1])
|
||||||
|
task->data[2]++;
|
||||||
|
task->data[0]++;
|
||||||
|
if (task->data[2] > 3 && direction == GetOppositeDirection(task->data[1]))
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
const u8 actions[] = {
|
||||||
|
MOVEMENT_ACTION_DELAY_1,
|
||||||
|
MOVEMENT_ACTION_DELAY_1,
|
||||||
|
MOVEMENT_ACTION_DELAY_2,
|
||||||
|
MOVEMENT_ACTION_DELAY_4,
|
||||||
|
MOVEMENT_ACTION_DELAY_8,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
sub_805C06C(objectEvent, actions[task->data[2]]);
|
||||||
|
task->data[0] = 1;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct ObjectEvent *objectEvent)
|
||||||
|
{
|
||||||
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
sub_805C06C(objectEvent, sub_8063F2C(GetOppositeDirection(task->data[1])));
|
||||||
|
ScriptContext2_Disable();
|
||||||
|
gPlayerAvatar.preventStep = FALSE;
|
||||||
|
DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateStopSurfingTask(u8 direction)
|
||||||
|
{
|
||||||
|
u8 taskId;
|
||||||
|
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
FreezeObjectEvents();
|
||||||
|
Overworld_ClearSavedMusic();
|
||||||
|
Overworld_ChangeMusicToDefault();
|
||||||
|
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING;
|
||||||
|
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT;
|
||||||
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
|
taskId = CreateTask(Task_StopSurfingInit, 0xFF);
|
||||||
|
gTasks[taskId].data[0] = direction;
|
||||||
|
Task_StopSurfingInit(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateStopSurfingTask_NoMusicChange(u8 direction)
|
||||||
|
{
|
||||||
|
u8 taskId;
|
||||||
|
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
FreezeObjectEvents();
|
||||||
|
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING;
|
||||||
|
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT;
|
||||||
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
|
taskId = CreateTask(Task_StopSurfingInit, 0xFF);
|
||||||
|
gTasks[taskId].data[0] = direction;
|
||||||
|
Task_StopSurfingInit(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_805D1A8(void)
|
||||||
|
{
|
||||||
|
if (gUnknown_3005E88 != 1 && gUnknown_3005E88 != 3)
|
||||||
|
{
|
||||||
|
sub_811278C(gUnknown_835B820[DIR_NORTH], 16);
|
||||||
|
CreateStopSurfingTask(DIR_NORTH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -177,20 +177,20 @@ static void sub_81507BC(struct ObjectEvent * a0, u8 a1)
|
|||||||
|
|
||||||
static void sub_81507CC(void)
|
static void sub_81507CC(void)
|
||||||
{
|
{
|
||||||
sub_805D154(1);
|
CreateStopSurfingTask_NoMusicChange(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81507D8(void)
|
static void sub_81507D8(void)
|
||||||
{
|
{
|
||||||
sub_805D154(2);
|
CreateStopSurfingTask_NoMusicChange(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81507E4(void)
|
static void sub_81507E4(void)
|
||||||
{
|
{
|
||||||
sub_805D154(3);
|
CreateStopSurfingTask_NoMusicChange(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81507F0(void)
|
static void sub_81507F0(void)
|
||||||
{
|
{
|
||||||
sub_805D154(4);
|
CreateStopSurfingTask_NoMusicChange(4);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user