through sub_805D1A8

This commit is contained in:
PikalaxALT
2020-03-25 08:57:52 -04:00
parent 6c964a6350
commit f1841ef24d
14 changed files with 335 additions and 930 deletions
+1 -1
View File
@@ -729,7 +729,7 @@ StartTransitionToFlipBikeState: @ 80BD5C8
beq _080BD5F8
movs r0, 0x1
bl SetPlayerAvatarTransitionFlags
bl sav1_reset_battle_music_maybe
bl Overworld_ClearSavedMusic
bl Overworld_PlaySpecialMapMusic
b _080BD618
.align 2, 0
+3 -877
View File
@@ -5,882 +5,8 @@
.text
thumb_func_start sub_805CB04
sub_805CB04: @ 805CB04
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
thumb_func_start Task_StopSurfingInit
Task_StopSurfingInit: @ 805D1D4
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
@@ -928,7 +54,7 @@ _0805D230: .4byte gPlayerAvatar
_0805D234: .4byte gObjectEvents
_0805D238: .4byte gTasks
_0805D23C: .4byte sub_805D240
thumb_func_end taskFF_0805D1D4
thumb_func_end Task_StopSurfingInit
thumb_func_start sub_805D240
sub_805D240: @ 805D240
+5 -5
View File
@@ -1715,7 +1715,7 @@ sub_8055864: @ 8055864
bl SetSav1WeatherFromCurrMapHeader
bl sub_805610C
bl sub_8055CB8
bl sav1_reset_battle_music_maybe
bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl TryRegenerateRenewableHiddenItems
bl InitMap
@@ -1792,7 +1792,7 @@ sub_8055920: @ 8055920
bl FlagClear
_08055974:
bl sub_8055CB8
bl sav1_reset_battle_music_maybe
bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl TryRegenerateRenewableHiddenItems
bl UpdateLocationHistoryForRoamer
@@ -2474,8 +2474,8 @@ Overworld_SetSavedMusic: @ 8055E78
_08055E80: .4byte gSaveBlock1Ptr
thumb_func_end Overworld_SetSavedMusic
thumb_func_start sav1_reset_battle_music_maybe
sav1_reset_battle_music_maybe: @ 8055E84
thumb_func_start Overworld_ClearSavedMusic
Overworld_ClearSavedMusic: @ 8055E84
ldr r0, _08055E90 @ =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0
@@ -2483,7 +2483,7 @@ sav1_reset_battle_music_maybe: @ 8055E84
bx lr
.align 2, 0
_08055E90: .4byte gSaveBlock1Ptr
thumb_func_end sav1_reset_battle_music_maybe
thumb_func_end Overworld_ClearSavedMusic
thumb_func_start sub_8055E94
sub_8055E94: @ 8055E94
-26
View File
@@ -4,32 +4,6 @@
.section .rodata
.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
gUnknown_835B8CC:: @ 835B8CC
.4byte sub_805D33C
+2 -2
View File
@@ -7,14 +7,14 @@
#define OBJ_EVENT_GFX_RED_ITEM 3
#define OBJ_EVENT_GFX_RED_FISH 4
#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_BIKE 8
#define OBJ_EVENT_GFX_GREEN_SURF 9
#define OBJ_EVENT_GFX_GREEN_ITEM 10
#define OBJ_EVENT_GFX_GREEN_FISH 11
#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_MAY 15
#define OBJ_EVENT_GFX_LITTLE_BOY 16
+1
View File
@@ -35,5 +35,6 @@ void FieldClearPlayerInput(struct FieldInput *input);
int ProcessPlayerFieldInput(struct FieldInput *input);
void FieldInput_HandleCancelSignpost(struct FieldInput * input);
void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys);
void sub_806DE70(u16 x, u16 y);
#endif //GUARD_FIELD_CONTROL_AVATAR_H
+2
View File
@@ -22,5 +22,7 @@ bool8 sub_80DCBE0(struct ObjectEvent *);
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
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
+2 -2
View File
@@ -20,7 +20,7 @@ void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetPlayerAvatarGraphicsIdByStateId(u8);
void SetPlayerAvatarStateMask(u8 mask);
void sub_805D9C4(struct Sprite *sprite);
void sub_805D154(u8 direction);
void CreateStopSurfingTask_NoMusicChange(u8 direction);
void sub_805DAE4(u8 direction);
void SetPlayerAvatarTransitionFlags(u16 a);
bool8 IsPlayerFacingSurfableFishableWater(void);
@@ -29,7 +29,7 @@ u8 GetPlayerAvatarObjectId(void);
u8 PlayerGetZCoord(void);
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
void sub_805CB70(void);
void sub_805CB04(bool8);
void SetPlayerInvisibility(bool8);
void sub_805DC04(void);
void sub_805DAB0(void);
bool32 sub_805DAD0(void);
+1 -1
View File
@@ -85,7 +85,7 @@ void sub_8084EBC(s16, s16);
void sub_80555E0(void);
void copy_saved_warp3_bank_and_enter_x_to_warp1(void);
u8 IsMapTypeOutdoors(u8 mapType);
void sav1_reset_battle_music_maybe(void);
void Overworld_ClearSavedMusic(void);
bool32 sub_8056124(u16 song);
void player_avatar_init_params_reset(void);
+2 -2
View File
@@ -11,10 +11,10 @@ static const u8 sTextColorTable[] =
[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_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_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_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
[OBJ_EVENT_GFX_YOUNGSTER / 2] = 0x00, // OBJ_EVENT_GFX_BOY
+1 -1
View File
@@ -2888,7 +2888,7 @@ u8 FldEff_UseSurf(void)
{
u8 taskId = CreateTask(Task_FldEffUseSurf, 0xff);
gTasks[taskId].data[15] = gFieldEffectArguments[0];
sav1_reset_battle_music_maybe();
Overworld_ClearSavedMusic();
if (sub_8056124(MUS_NAMINORI))
Overworld_ChangeMusicTo(MUS_NAMINORI);
return FALSE;
+1 -1
View File
@@ -126,7 +126,7 @@ static void sub_807DC70(void)
static void sub_807DCB0(bool8 arg)
{
sub_805CB04(!arg);
SetPlayerInvisibility(!arg);
}
static void task0A_nop_for_a_while(u8 taskId)
+310 -8
View File
@@ -5,6 +5,7 @@
#include "event_object_movement.h"
#include "fieldmap.h"
#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
#include "field_player_avatar.h"
#include "metatile_behavior.h"
@@ -12,6 +13,7 @@
#include "party_menu.h"
#include "quest_log.h"
#include "quest_log_player.h"
#include "script.h"
#include "constants/event_object_movement.h"
#include "constants/event_objects.h"
#include "constants/songs.h"
@@ -89,12 +91,24 @@ void PlayCollisionSoundIfNotFacingWarp(u8 direction);
void PlayerGoSpin(u8 direction);
void sub_805C2CC(u8 metatileBehavior);
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 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 DoPlayerAvatarSecretBaseMatJump(u8 taskId);
bool8 PlayerAvatar_DoSecretBaseMatJump(struct Task * task, struct ObjectEvent * playerObj);
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)
{
@@ -1244,11 +1258,6 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
return 0;
}
const u8 gUnknown_835B88E[] = {
OBJ_EVENT_GFX_RED_VS_SEEKER,
OBJ_EVENT_GFX_GREEN_VS_SEEKER
};
void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 b)
{
u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender);
@@ -1288,3 +1297,296 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
gPlayerAvatar.gender = gender;
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);
}
}
+4 -4
View File
@@ -177,20 +177,20 @@ static void sub_81507BC(struct ObjectEvent * a0, u8 a1)
static void sub_81507CC(void)
{
sub_805D154(1);
CreateStopSurfingTask_NoMusicChange(1);
}
static void sub_81507D8(void)
{
sub_805D154(2);
CreateStopSurfingTask_NoMusicChange(2);
}
static void sub_81507E4(void)
{
sub_805D154(3);
CreateStopSurfingTask_NoMusicChange(3);
}
static void sub_81507F0(void)
{
sub_805D154(4);
CreateStopSurfingTask_NoMusicChange(4);
}