summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-22 20:17:47 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-22 20:17:47 -0400
commitdbac777d95875b49e98da94551a89616c2addf3c (patch)
tree6ce006a7d498ec30ac5da9d95fa961109b5e74f7
parent4f65d54095908a1bcf068c7712bca9d4c34f10a3 (diff)
through CheckMovementInputNotOnBike
-rw-r--r--asm/bike.s22
-rw-r--r--asm/field_player_avatar.s999
-rw-r--r--asm/overworld.s2
-rw-r--r--berry_fix/payload/include/global.fieldmap.h4
-rw-r--r--data/event_object_movement.s333
-rw-r--r--data/field_player_avatar.s29
-rw-r--r--include/bike.h3
-rw-r--r--include/event_object_movement.h3
-rw-r--r--include/global.fieldmap.h6
-rw-r--r--include/metatile_behavior.h8
-rw-r--r--ld_script.txt2
-rw-r--r--src/event_object_movement.c4
-rw-r--r--src/field_control_avatar.c10
-rw-r--r--src/field_player_avatar.c405
-rw-r--r--src/metatile_behavior.c8
-rw-r--r--sym_ewram.txt15
16 files changed, 694 insertions, 1159 deletions
diff --git a/asm/bike.s b/asm/bike.s
index e73e906bc..15c376261 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_80BD09C
-sub_80BD09C: @ 80BD09C
+ thumb_func_start MovePlayerOnBike
+MovePlayerOnBike: @ 80BD09C
push {r4,lr}
sub sp, 0x4
mov r3, sp
@@ -32,7 +32,7 @@ sub_80BD09C: @ 80BD09C
bx r0
.align 2, 0
_080BD0D0: .4byte gUnknown_83E7CFC
- thumb_func_end sub_80BD09C
+ thumb_func_end MovePlayerOnBike
thumb_func_start sub_80BD0D4
sub_80BD0D4: @ 80BD0D4
@@ -342,7 +342,7 @@ _080BD300:
cmp r1, 0x6
bne _080BD322
adds r0, r4, 0
- bl sub_805C23C
+ bl PlayerJumpLedge
b _080BD350
_080BD322:
subs r0, r1, 0x5
@@ -362,11 +362,11 @@ _080BD334:
beq _080BD34A
_080BD342:
adds r0, r4, 0
- bl sub_805C11C
+ bl PlayerGoSpeed2
b _080BD350
_080BD34A:
adds r0, r6, 0
- bl sub_805C14C
+ bl PlayerRideWaterCurrent
_080BD350:
pop {r4-r6}
pop {r0}
@@ -389,7 +389,7 @@ _080BD370:
cmp r0, 0x6
bne _080BD37A
movs r0, 0x1
- bl sub_805C23C
+ bl PlayerJumpLedge
_080BD37A:
pop {r0}
bx r0
@@ -406,7 +406,7 @@ sub_80BD380: @ 80BD380
cmp r0, 0
bne _080BD398
adds r0, r4, 0
- bl sub_805C104
+ bl PlayerGoSpeed1
_080BD398:
pop {r4}
pop {r0}
@@ -537,8 +537,8 @@ _080BD482:
bx r1
thumb_func_end sub_80BD460
- thumb_func_start sub_80BD488
-sub_80BD488: @ 80BD488
+ thumb_func_start IsRunningDisallowed
+IsRunningDisallowed: @ 80BD488
push {lr}
lsls r0, 24
lsrs r2, r0, 24
@@ -564,7 +564,7 @@ _080BD4B0:
_080BD4B2:
pop {r1}
bx r1
- thumb_func_end sub_80BD488
+ thumb_func_end IsRunningDisallowed
thumb_func_start sub_80BD4B8
sub_80BD4B8: @ 80BD4B8
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index 31123a703..1c17720bf 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -5,843 +5,6 @@
.text
- thumb_func_start sub_805B3B8
-sub_805B3B8: @ 805B3B8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805B3D4 @ =gObjectEvents
- adds r0, r2
- ldr r2, _0805B3D8 @ =sub_805B3DC
- bl UpdateObjectEventCurrentMovement
- pop {r0}
- bx r0
- .align 2, 0
-_0805B3D4: .4byte gObjectEvents
-_0805B3D8: .4byte sub_805B3DC
- thumb_func_end sub_805B3B8
-
- thumb_func_start sub_805B3DC
-sub_805B3DC: @ 805B3DC
- movs r0, 0
- bx lr
- thumb_func_end sub_805B3DC
-
- thumb_func_start sub_805B3E0
-sub_805B3E0: @ 805B3E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 16
- lsrs r7, r2, 16
- ldr r4, _0805B454 @ =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805B458 @ =gObjectEvents
- adds r5, r0, r1
- adds r0, r5, 0
- bl sub_805CC40
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _0805B448
- bl sub_805B528
- lsls r0, 24
- cmp r0, 0
- bne _0805B448
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_805B45C
- lsls r0, 24
- cmp r0, 0
- bne _0805B448
- adds r0, r5, 0
- bl npc_clear_strange_bits
- bl DoPlayerAvatarTransition
- bl sub_805B5A0
- lsls r0, 24
- cmp r0, 0
- bne _0805B448
- adds r0, r6, 0
- mov r1, r8
- adds r2, r7, 0
- bl MovePlayerAvatarUsingKeypadInput
- bl PlayerAllowForcedMovementIfMovingSameDirection
-_0805B448:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B454: .4byte gPlayerAvatar
-_0805B458: .4byte gObjectEvents
- thumb_func_end sub_805B3E0
-
- thumb_func_start sub_805B45C
-sub_805B45C: @ 805B45C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl ObjectEventIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- beq _0805B4A6
- adds r0, r4, 0
- bl ObjectEventClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- bne _0805B4A6
- adds r0, r4, 0
- bl ObjectEventGetHeldMovementActionId
- lsls r0, 24
- movs r1, 0xDF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bhi _0805B4A2
- cmp r5, 0
- beq _0805B4A2
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- cmp r0, r5
- beq _0805B4A2
- adds r0, r4, 0
- bl ObjectEventClearHeldMovement
- b _0805B4A6
-_0805B4A2:
- movs r0, 0x1
- b _0805B4A8
-_0805B4A6:
- movs r0, 0
-_0805B4A8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805B45C
-
- thumb_func_start npc_clear_strange_bits
-npc_clear_strange_bits: @ 805B4B0
- ldrb r2, [r0, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r2
- movs r2, 0x5
- negs r2, r2
- ands r1, r2
- adds r2, 0x2
- ands r1, r2
- strb r1, [r0, 0x1]
- ldr r2, _0805B4D0 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_0805B4D0: .4byte gPlayerAvatar
- thumb_func_end npc_clear_strange_bits
-
- thumb_func_start MovePlayerAvatarUsingKeypadInput
-MovePlayerAvatarUsingKeypadInput: @ 805B4D4
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _0805B4F8 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _0805B4FC
- adds r0, r3, 0
- adds r1, r4, 0
- bl sub_80BD09C
- b _0805B504
- .align 2, 0
-_0805B4F8: .4byte gPlayerAvatar
-_0805B4FC:
- adds r0, r3, 0
- adds r1, r2, 0
- bl MovePlayerNotOnBike
-_0805B504:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end MovePlayerAvatarUsingKeypadInput
-
- thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection
-PlayerAllowForcedMovementIfMovingSameDirection: @ 805B50C
- push {lr}
- ldr r2, _0805B524 @ =gPlayerAvatar
- ldrb r0, [r2, 0x2]
- cmp r0, 0x2
- bne _0805B51E
- ldrb r1, [r2]
- movs r0, 0xDF
- ands r0, r1
- strb r0, [r2]
-_0805B51E:
- pop {r0}
- bx r0
- .align 2, 0
-_0805B524: .4byte gPlayerAvatar
- thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection
-
- thumb_func_start sub_805B528
-sub_805B528: @ 805B528
- push {r4,r5,lr}
- ldr r5, _0805B58C @ =gPlayerAvatar
- ldrb r1, [r5]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0805B598
- ldrb r0, [r5, 0x1C]
- bl MetatileBehavior_IsSpinTile
- lsls r0, 24
- cmp r0, 0
- beq _0805B598
- ldr r4, _0805B590 @ =gUnknown_2036E30
- ldrb r1, [r5, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805B594 @ =gObjectEvents
- adds r1, r0, r1
- str r1, [r4]
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0805B586
- ldrb r0, [r1, 0x1E]
- bl MetatileBehavior_IsStopSpinning
- lsls r0, 24
- cmp r0, 0
- bne _0805B598
- ldr r0, [r4]
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsSpinTile
- lsls r0, 24
- cmp r0, 0
- beq _0805B57A
- ldr r0, [r4]
- ldrb r0, [r0, 0x1E]
- strh r0, [r5, 0x1C]
-_0805B57A:
- ldr r0, [r4]
- bl ObjectEventClearHeldMovement
- ldrb r0, [r5, 0x1C]
- bl sub_805C2CC
-_0805B586:
- movs r0, 0x1
- b _0805B59A
- .align 2, 0
-_0805B58C: .4byte gPlayerAvatar
-_0805B590: .4byte gUnknown_2036E30
-_0805B594: .4byte gObjectEvents
-_0805B598:
- movs r0, 0
-_0805B59A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805B528
-
- thumb_func_start sub_805B5A0
-sub_805B5A0: @ 805B5A0
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r3, _0805B5F4 @ =gPlayerAvatar
- ldrb r1, [r3]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0805B610
- ldr r2, _0805B5F8 @ =gObjectEvents
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r7, [r0, 0x1E]
- movs r6, 0
- ldr r0, _0805B5FC @ =gUnknown_835B764
- ldr r1, [r0]
- adds r2, r0, 0
- cmp r1, 0
- beq _0805B628
- movs r5, 0
-_0805B5CC:
- adds r4, r5, 0
- adds r0, r4, r2
- ldr r1, [r0]
- adds r0, r7, 0
- str r2, [sp]
- bl _call_via_r1
- lsls r0, 24
- ldr r2, [sp]
- cmp r0, 0
- bne _0805B600
- adds r5, 0x8
- adds r6, 0x1
- adds r0, r5, r2
- ldr r0, [r0]
- ldr r2, _0805B5FC @ =gUnknown_835B764
- cmp r0, 0
- bne _0805B5CC
- b _0805B628
- .align 2, 0
-_0805B5F4: .4byte gPlayerAvatar
-_0805B5F8: .4byte gObjectEvents
-_0805B5FC: .4byte gUnknown_835B764
-_0805B600:
- ldr r0, _0805B60C @ =gPlayerAvatar
- strh r7, [r0, 0x1C]
- adds r0, r2, 0x4
- adds r0, r5, r0
- b _0805B62E
- .align 2, 0
-_0805B60C: .4byte gPlayerAvatar
-_0805B610:
- movs r6, 0
- ldr r0, _0805B640 @ =gUnknown_835B764
- ldr r1, [r0]
- adds r2, r0, 0
- cmp r1, 0
- beq _0805B628
- adds r1, r2, 0
-_0805B61E:
- adds r1, 0x8
- adds r6, 0x1
- ldr r0, [r1]
- cmp r0, 0
- bne _0805B61E
-_0805B628:
- lsls r0, r6, 3
- adds r1, r2, 0x4
- adds r0, r1
-_0805B62E:
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B640: .4byte gUnknown_835B764
- thumb_func_end sub_805B5A0
-
- thumb_func_start ForcedMovement_None
-ForcedMovement_None: @ 805B644
- push {r4,lr}
- ldr r4, _0805B688 @ =gPlayerAvatar
- ldrb r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0805B67E
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805B68C @ =gObjectEvents
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrb r1, [r0, 0x18]
- lsls r1, 28
- lsrs r1, 28
- bl SetObjectEventDirection
- ldrb r1, [r4]
- movs r0, 0xBF
- ands r0, r1
- strb r0, [r4]
-_0805B67E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B688: .4byte gPlayerAvatar
-_0805B68C: .4byte gObjectEvents
- thumb_func_end ForcedMovement_None
-
- thumb_func_start DoForcedMovement
-DoForcedMovement: @ 805B690
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _0805B6D0 @ =gPlayerAvatar
- adds r0, r5, 0
- bl sub_805BB1C
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldrb r0, [r6]
- movs r1, 0x40
- mov r10, r1
- movs r1, 0
- mov r8, r1
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- cmp r4, 0
- beq _0805B6EC
- bl ForcedMovement_None
- cmp r4, 0x4
- bhi _0805B6D4
- movs r0, 0
- b _0805B6F8
- .align 2, 0
-_0805B6D0: .4byte gPlayerAvatar
-_0805B6D4:
- cmp r7, 0x6
- bne _0805B6DE
- adds r0, r5, 0
- bl sub_805C23C
-_0805B6DE:
- ldrb r0, [r6]
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x2
- strb r0, [r6, 0x2]
- b _0805B6F6
-_0805B6EC:
- movs r0, 0x2
- strb r0, [r6, 0x2]
- adds r0, r5, 0
- bl _call_via_r9
-_0805B6F6:
- movs r0, 0x1
-_0805B6F8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end DoForcedMovement
-
- thumb_func_start DoForcedMovementInCurrentDirection
-DoForcedMovementInCurrentDirection: @ 805B708
- push {lr}
- adds r1, r0, 0
- ldr r0, _0805B734 @ =gPlayerAvatar
- ldrb r2, [r0, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805B738 @ =gObjectEvents
- adds r0, r2
- ldrb r2, [r0, 0x1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldrb r0, [r0, 0x18]
- lsrs r0, 4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B734: .4byte gPlayerAvatar
-_0805B738: .4byte gObjectEvents
- thumb_func_end DoForcedMovementInCurrentDirection
-
- thumb_func_start ForcedMovement_Slip
-ForcedMovement_Slip: @ 805B73C
- push {lr}
- ldr r0, _0805B74C @ =sub_805C11C
- bl DoForcedMovementInCurrentDirection
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B74C: .4byte sub_805C11C
- thumb_func_end ForcedMovement_Slip
-
- thumb_func_start sub_805B750
-sub_805B750: @ 805B750
- push {lr}
- ldr r1, _0805B764 @ =sub_805C104
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B764: .4byte sub_805C104
- thumb_func_end sub_805B750
-
- thumb_func_start sub_805B768
-sub_805B768: @ 805B768
- push {lr}
- ldr r1, _0805B77C @ =sub_805C104
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B77C: .4byte sub_805C104
- thumb_func_end sub_805B768
-
- thumb_func_start sub_805B780
-sub_805B780: @ 805B780
- push {lr}
- ldr r1, _0805B794 @ =sub_805C104
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B794: .4byte sub_805C104
- thumb_func_end sub_805B780
-
- thumb_func_start sub_805B798
-sub_805B798: @ 805B798
- push {lr}
- ldr r1, _0805B7AC @ =sub_805C104
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B7AC: .4byte sub_805C104
- thumb_func_end sub_805B798
-
- thumb_func_start sub_805B7B0
-sub_805B7B0: @ 805B7B0
- push {lr}
- bl sub_805B820
- ldr r1, _0805B7C8 @ =sub_805C2B4
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B7C8: .4byte sub_805C2B4
- thumb_func_end sub_805B7B0
-
- thumb_func_start sub_805B7CC
-sub_805B7CC: @ 805B7CC
- push {lr}
- bl sub_805B820
- ldr r1, _0805B7E4 @ =sub_805C2B4
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B7E4: .4byte sub_805C2B4
- thumb_func_end sub_805B7CC
-
- thumb_func_start sub_805B7E8
-sub_805B7E8: @ 805B7E8
- push {lr}
- bl sub_805B820
- ldr r1, _0805B800 @ =sub_805C2B4
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B800: .4byte sub_805C2B4
- thumb_func_end sub_805B7E8
-
- thumb_func_start sub_805B804
-sub_805B804: @ 805B804
- push {lr}
- bl sub_805B820
- ldr r1, _0805B81C @ =sub_805C2B4
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B81C: .4byte sub_805C2B4
- thumb_func_end sub_805B804
-
- thumb_func_start sub_805B820
-sub_805B820: @ 805B820
- push {lr}
- movs r0, 0x99
- bl PlaySE
- pop {r0}
- bx r0
- thumb_func_end sub_805B820
-
- thumb_func_start sub_805B82C
-sub_805B82C: @ 805B82C
- push {lr}
- ldr r1, _0805B840 @ =sub_805C14C
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B840: .4byte sub_805C14C
- thumb_func_end sub_805B82C
-
- thumb_func_start sub_805B844
-sub_805B844: @ 805B844
- push {lr}
- ldr r1, _0805B858 @ =sub_805C14C
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B858: .4byte sub_805C14C
- thumb_func_end sub_805B844
-
- thumb_func_start sub_805B85C
-sub_805B85C: @ 805B85C
- push {lr}
- ldr r1, _0805B870 @ =sub_805C14C
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B870: .4byte sub_805C14C
- thumb_func_end sub_805B85C
-
- thumb_func_start sub_805B874
-sub_805B874: @ 805B874
- push {lr}
- ldr r1, _0805B888 @ =sub_805C14C
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B888: .4byte sub_805C14C
- thumb_func_end sub_805B874
-
- thumb_func_start ForcedMovement_Slide
-ForcedMovement_Slide: @ 805B88C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805B8BC @ =gPlayerAvatar
- ldrb r3, [r2, 0x5]
- lsls r2, r3, 3
- adds r2, r3
- lsls r2, 2
- ldr r3, _0805B8C0 @ =gObjectEvents
- adds r2, r3
- ldrb r3, [r2, 0x1]
- movs r4, 0x4
- orrs r3, r4
- movs r4, 0x2
- orrs r3, r4
- strb r3, [r2, 0x1]
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B8BC: .4byte gPlayerAvatar
-_0805B8C0: .4byte gObjectEvents
- thumb_func_end ForcedMovement_Slide
-
- thumb_func_start ForcedMovement_SlideSouth
-ForcedMovement_SlideSouth: @ 805B8C4
- push {lr}
- ldr r1, _0805B8D8 @ =sub_805C11C
- movs r0, 0x1
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B8D8: .4byte sub_805C11C
- thumb_func_end ForcedMovement_SlideSouth
-
- thumb_func_start ForcedMovement_SlideNorth
-ForcedMovement_SlideNorth: @ 805B8DC
- push {lr}
- ldr r1, _0805B8F0 @ =sub_805C11C
- movs r0, 0x2
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B8F0: .4byte sub_805C11C
- thumb_func_end ForcedMovement_SlideNorth
-
- thumb_func_start ForcedMovement_SlideWest
-ForcedMovement_SlideWest: @ 805B8F4
- push {lr}
- ldr r1, _0805B908 @ =sub_805C11C
- movs r0, 0x3
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B908: .4byte sub_805C11C
- thumb_func_end ForcedMovement_SlideWest
-
- thumb_func_start ForcedMovement_SlideEast
-ForcedMovement_SlideEast: @ 805B90C
- push {lr}
- ldr r1, _0805B920 @ =sub_805C11C
- movs r0, 0x4
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805B920: .4byte sub_805C11C
- thumb_func_end ForcedMovement_SlideEast
-
- thumb_func_start sub_805B924
-sub_805B924: @ 805B924
- push {lr}
- bl sub_805CE80
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_805B924
-
- thumb_func_start sub_805B930
-sub_805B930: @ 805B930
- push {lr}
- bl sub_805CF58
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_805B930
-
- thumb_func_start MovePlayerNotOnBike
-MovePlayerNotOnBike: @ 805B93C
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _0805B968 @ =gUnknown_835B814
- adds r0, r4, 0
- bl CheckMovementInputNotOnBike
- lsls r0, 24
- lsrs r0, 22
- adds r0, r6
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r2
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805B968: .4byte gUnknown_835B814
- thumb_func_end MovePlayerNotOnBike
-
- thumb_func_start CheckMovementInputNotOnBike
-CheckMovementInputNotOnBike: @ 805B96C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0805B984
- ldr r0, _0805B980 @ =gPlayerAvatar
- strb r4, [r0, 0x2]
- movs r0, 0
- b _0805B9A6
- .align 2, 0
-_0805B980: .4byte gPlayerAvatar
-_0805B984:
- bl GetPlayerMovementDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _0805B9A0
- ldr r1, _0805B99C @ =gPlayerAvatar
- ldrb r0, [r1, 0x2]
- cmp r0, 0x2
- beq _0805B9A0
- movs r0, 0x1
- b _0805B9A4
- .align 2, 0
-_0805B99C: .4byte gPlayerAvatar
-_0805B9A0:
- ldr r1, _0805B9AC @ =gPlayerAvatar
- movs r0, 0x2
-_0805B9A4:
- strb r0, [r1, 0x2]
-_0805B9A6:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805B9AC: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputNotOnBike
-
thumb_func_start PlayerNotOnBikeNotMoving
PlayerNotOnBikeNotMoving: @ 805B9B0
push {lr}
@@ -853,25 +16,25 @@ PlayerNotOnBikeNotMoving: @ 805B9B0
bx r0
thumb_func_end PlayerNotOnBikeNotMoving
- thumb_func_start sub_805B9C4
-sub_805B9C4: @ 805B9C4
+ thumb_func_start PlayerNotOnBikeTurningInPlace
+PlayerNotOnBikeTurningInPlace: @ 805B9C4
push {lr}
lsls r0, 24
lsrs r0, 24
- bl sub_805C224
+ bl PlayerTurnInPlace
pop {r0}
bx r0
- thumb_func_end sub_805B9C4
+ thumb_func_end PlayerNotOnBikeTurningInPlace
- thumb_func_start sub_805B9D4
-sub_805B9D4: @ 805B9D4
+ thumb_func_start PlayerNotOnBikeMoving
+PlayerNotOnBikeMoving: @ 805B9D4
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
lsrs r5, r1, 16
adds r0, r4, 0
- bl sub_805BB1C
+ bl CheckForPlayerAvatarCollision
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -880,7 +43,7 @@ sub_805B9D4: @ 805B9D4
cmp r0, 0x6
bne _0805B9FA
adds r0, r4, 0
- bl sub_805C23C
+ bl PlayerJumpLedge
b _0805BAA4
_0805B9FA:
cmp r0, 0x8
@@ -905,7 +68,7 @@ _0805BA18:
cmp r0, 0
beq _0805BA30
adds r0, r4, 0
- bl sub_805C11C
+ bl PlayerGoSpeed2
b _0805BAA4
.align 2, 0
_0805BA2C: .4byte gPlayerAvatar
@@ -926,7 +89,7 @@ _0805BA30:
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1E]
- bl sub_80BD488
+ bl IsRunningDisallowed
cmp r0, 0
bne _0805BA8C
adds r0, r4, 0
@@ -934,14 +97,14 @@ _0805BA30:
cmp r0, 0
beq _0805BA74
adds r0, r4, 0
- bl sub_805C194
+ bl PlayerRunSlow
b _0805BA7A
.align 2, 0
_0805BA6C: .4byte 0x0000082f
_0805BA70: .4byte gObjectEvents
_0805BA74:
adds r0, r4, 0
- bl sub_805C17C
+ bl PlayerRun
_0805BA7A:
ldr r2, _0805BA88 @ =gPlayerAvatar
ldrb r1, [r2]
@@ -961,12 +124,12 @@ _0805BA8C:
b _0805BAA4
_0805BA9E:
adds r0, r4, 0
- bl sub_805C104
+ bl PlayerGoSpeed1
_0805BAA4:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end sub_805B9D4
+ thumb_func_end PlayerNotOnBikeMoving
thumb_func_start sub_805BAAC
sub_805BAAC: @ 805BAAC
@@ -1028,8 +191,8 @@ _0805BB14:
bx r1
thumb_func_end sub_805BAAC
- thumb_func_start sub_805BB1C
-sub_805BB1C: @ 805BB1C
+ thumb_func_start CheckForPlayerAvatarCollision
+CheckForPlayerAvatarCollision: @ 805BB1C
push {r4-r6,lr}
sub sp, 0x8
lsls r0, 24
@@ -1094,7 +257,7 @@ _0805BB9E:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_805BB1C
+ thumb_func_end CheckForPlayerAvatarCollision
thumb_func_start sub_805BBA8
sub_805BBA8: @ 805BBA8
@@ -1716,8 +879,8 @@ _0805C01C: .4byte gPlayerAvatar
_0805C020: .4byte gObjectEvents
thumb_func_end sub_805BFFC
- thumb_func_start sub_805C024
-sub_805C024: @ 805C024
+ thumb_func_start PlayerSetAnimId
+PlayerSetAnimId: @ 805C024
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -1750,7 +913,7 @@ _0805C05E:
.align 2, 0
_0805C064: .4byte gPlayerAvatar
_0805C068: .4byte gObjectEvents
- thumb_func_end sub_805C024
+ thumb_func_end PlayerSetAnimId
thumb_func_start sub_805C06C
sub_805C06C: @ 805C06C
@@ -1816,7 +979,7 @@ sub_805C0D4: @ 805C0D4
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C0D4
@@ -1830,13 +993,13 @@ sub_805C0EC: @ 805C0EC
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C0EC
- thumb_func_start sub_805C104
-sub_805C104: @ 805C104
+ thumb_func_start PlayerGoSpeed1
+PlayerGoSpeed1: @ 805C104
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -1844,13 +1007,13 @@ sub_805C104: @ 805C104
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C104
+ thumb_func_end PlayerGoSpeed1
- thumb_func_start sub_805C11C
-sub_805C11C: @ 805C11C
+ thumb_func_start PlayerGoSpeed2
+PlayerGoSpeed2: @ 805C11C
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -1858,10 +1021,10 @@ sub_805C11C: @ 805C11C
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C11C
+ thumb_func_end PlayerGoSpeed2
thumb_func_start sub_805C134
sub_805C134: @ 805C134
@@ -1872,13 +1035,13 @@ sub_805C134: @ 805C134
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C134
- thumb_func_start sub_805C14C
-sub_805C14C: @ 805C14C
+ thumb_func_start PlayerRideWaterCurrent
+PlayerRideWaterCurrent: @ 805C14C
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -1886,10 +1049,10 @@ sub_805C14C: @ 805C14C
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C14C
+ thumb_func_end PlayerRideWaterCurrent
thumb_func_start sub_805C164
sub_805C164: @ 805C164
@@ -1900,38 +1063,38 @@ sub_805C164: @ 805C164
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C164
- thumb_func_start sub_805C17C
-sub_805C17C: @ 805C17C
+ thumb_func_start PlayerRun
+PlayerRun: @ 805C17C
push {lr}
lsls r0, 24
lsrs r0, 24
- bl sub_806408C
+ bl GetPlayerRunMovementAction
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C17C
+ thumb_func_end PlayerRun
- thumb_func_start sub_805C194
-sub_805C194: @ 805C194
+ thumb_func_start PlayerRunSlow
+PlayerRunSlow: @ 805C194
push {lr}
lsls r0, 24
lsrs r0, 24
- bl sub_80640B8
+ bl GetPlayerRunSlowMovementAction
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C194
+ thumb_func_end PlayerRunSlow
thumb_func_start PlayerOnBikeCollide
PlayerOnBikeCollide: @ 805C1AC
@@ -1946,7 +1109,7 @@ PlayerOnBikeCollide: @ 805C1AC
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -1965,7 +1128,7 @@ PlayerNotOnBikeCollide: @ 805C1D0
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -1980,7 +1143,7 @@ PlayerFaceDirection: @ 805C1F4
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end PlayerFaceDirection
@@ -1994,13 +1157,13 @@ sub_805C20C: @ 805C20C
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C20C
- thumb_func_start sub_805C224
-sub_805C224: @ 805C224
+ thumb_func_start PlayerTurnInPlace
+PlayerTurnInPlace: @ 805C224
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2008,13 +1171,13 @@ sub_805C224: @ 805C224
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C224
+ thumb_func_end PlayerTurnInPlace
- thumb_func_start sub_805C23C
-sub_805C23C: @ 805C23C
+ thumb_func_start PlayerJumpLedge
+PlayerJumpLedge: @ 805C23C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
@@ -2026,18 +1189,18 @@ sub_805C23C: @ 805C23C
lsls r0, 24
lsrs r0, 24
movs r1, 0x8
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_805C23C
+ thumb_func_end PlayerJumpLedge
thumb_func_start sub_805C260
sub_805C260: @ 805C260
push {lr}
movs r0, 0x9F
movs r1, 0
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C260
@@ -2078,8 +1241,8 @@ _0805C2AC: .4byte gPlayerAvatar
_0805C2B0: .4byte gObjectEvents
thumb_func_end sub_805C270
- thumb_func_start sub_805C2B4
-sub_805C2B4: @ 805C2B4
+ thumb_func_start PlayerGoSpin
+PlayerGoSpin: @ 805C2B4
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2087,17 +1250,17 @@ sub_805C2B4: @ 805C2B4
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
- thumb_func_end sub_805C2B4
+ thumb_func_end PlayerGoSpin
thumb_func_start sub_805C2CC
sub_805C2CC: @ 805C2CC
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _0805C308 @ =gUnknown_835B764
+ ldr r1, _0805C308 @ =sForcedMovementFuncs
ldr r0, [r1]
cmp r0, 0
beq _0805C302
@@ -2126,7 +1289,7 @@ _0805C302:
pop {r0}
bx r0
.align 2, 0
-_0805C308: .4byte gUnknown_835B764
+_0805C308: .4byte sForcedMovementFuncs
thumb_func_end sub_805C2CC
thumb_func_start sub_805C30C
@@ -2138,7 +1301,7 @@ sub_805C30C: @ 805C30C
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C30C
@@ -2152,7 +1315,7 @@ sub_805C324: @ 805C324
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C324
@@ -2166,7 +1329,7 @@ sub_805C33C: @ 805C33C
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C33C
@@ -2184,7 +1347,7 @@ sub_805C354: @ 805C354
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -2203,7 +1366,7 @@ sub_805C378: @ 805C378
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -2222,7 +1385,7 @@ sub_805C39C: @ 805C39C
lsls r0, 24
lsrs r0, 24
movs r1, 0x8
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -2241,7 +1404,7 @@ sub_805C3C0: @ 805C3C0
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -2260,7 +1423,7 @@ sub_805C3E4: @ 805C3E4
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r4}
pop {r0}
bx r0
@@ -2275,7 +1438,7 @@ sub_805C408: @ 805C408
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C408
@@ -2289,7 +1452,7 @@ sub_805C420: @ 805C420
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805C024
+ bl PlayerSetAnimId
pop {r0}
bx r0
thumb_func_end sub_805C420
@@ -3639,8 +2802,8 @@ _0805CE78: .4byte gPlayerAvatar
_0805CE7C: .4byte taskFF_bump_boulder
thumb_func_end sub_805CE20
- thumb_func_start sub_805CE80
-sub_805CE80: @ 805CE80
+ thumb_func_start DoPlayerMatJump
+DoPlayerMatJump: @ 805CE80
push {r4,lr}
ldr r4, _0805CE9C @ =sub_805CEA0
adds r0, r4, 0
@@ -3654,7 +2817,7 @@ sub_805CE80: @ 805CE80
bx r0
.align 2, 0
_0805CE9C: .4byte sub_805CEA0
- thumb_func_end sub_805CE80
+ thumb_func_end DoPlayerMatJump
thumb_func_start sub_805CEA0
sub_805CEA0: @ 805CEA0
@@ -3747,8 +2910,8 @@ _0805CF50: .4byte gPlayerAvatar
_0805CF54: .4byte sub_805CEA0
thumb_func_end PlayerAvatar_DoSecretBaseMatJump
- thumb_func_start sub_805CF58
-sub_805CF58: @ 805CF58
+ thumb_func_start DoPlayerMatSpin
+DoPlayerMatSpin: @ 805CF58
push {r4,lr}
ldr r4, _0805CF74 @ =sub_805CF78
adds r0, r4, 0
@@ -3762,7 +2925,7 @@ sub_805CF58: @ 805CF58
bx r0
.align 2, 0
_0805CF74: .4byte sub_805CF78
- thumb_func_end sub_805CF58
+ thumb_func_end DoPlayerMatSpin
thumb_func_start sub_805CF78
sub_805CF78: @ 805CF78
diff --git a/asm/overworld.s b/asm/overworld.s
index ba9b03930..8e20c09f4 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3291,7 +3291,7 @@ _080564B0:
ldrb r0, [r6, 0x2]
adds r1, r5, 0
adds r2, r4, 0
- bl sub_805B3E0
+ bl player_step
_080564BA:
bl RunQuestLogCB
add sp, 0x4
diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h
index f5a5173c6..d001f9b45 100644
--- a/berry_fix/payload/include/global.fieldmap.h
+++ b/berry_fix/payload/include/global.fieldmap.h
@@ -231,8 +231,8 @@ struct ObjectEventGraphicsInfo
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
-#define PLAYER_AVATAR_FLAG_5 (1 << 5)
-#define PLAYER_AVATAR_FLAG_6 (1 << 6)
+#define PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED (1 << 5)
+#define PLAYER_AVATAR_FLAG_MVMT_IS_FORCED (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
diff --git a/data/event_object_movement.s b/data/event_object_movement.s
index 259099795..6aad8341a 100644
--- a/data/event_object_movement.s
+++ b/data/event_object_movement.s
@@ -1,3 +1,4 @@
+#include "constants/event_object_movement.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
@@ -769,7 +770,7 @@ sMovementTypeCallbacks:: @ 839FBC8
.4byte MovementType_FaceDirection
.4byte MovementType_FaceDirection
.4byte MovementType_FaceDirection
- .4byte sub_805B3B8
+ .4byte MovementType_Player
.4byte NULL
.4byte MovementType_FaceDownAndUp
.4byte MovementType_FaceLeftAndRight
@@ -7888,235 +7889,235 @@ sDirectionToVectors:: @ 83A64C8
@ gFaceDirectionMovementActions
gFaceDirectionMovementActions:: @ 83A64EC
- .byte 0x0 @ DIR_NONE
- .byte 0x0 @ DIR_SOUTH
- .byte 0x1 @ DIR_NORTH
- .byte 0x2 @ DIR_WEST
- .byte 0x3 @ DIR_EAST
+ .byte MOVEMENT_ACTION_FACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_FACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_FACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_FACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_FACE_RIGHT @ DIR_EAST
gWalkSlowMovementActions:: @ 83A64F1
- .byte 0x4 @ DIR_NONE
- .byte 0x4 @ DIR_SOUTH
- .byte 0x5 @ DIR_NORTH
- .byte 0x6 @ DIR_WEST
- .byte 0x7 @ DIR_EAST
+ .byte MOVEMENT_ACTION_FACE_DOWN_FAST @ DIR_NONE
+ .byte MOVEMENT_ACTION_FACE_DOWN_FAST @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_FACE_UP_FAST @ DIR_NORTH
+ .byte MOVEMENT_ACTION_FACE_LEFT_FAST @ DIR_WEST
+ .byte MOVEMENT_ACTION_FACE_RIGHT_FAST @ DIR_EAST
gUnknown_83A64F6:: @ 83A64F6
- .byte 0x9B @ DIR_NONE
- .byte 0x9B @ DIR_SOUTH
- .byte 0x9C @ DIR_NORTH
- .byte 0x9D @ DIR_WEST
- .byte 0x9E @ DIR_EAST
+ .byte MOVEMENT_ACTION_0x9B @ DIR_NONE
+ .byte MOVEMENT_ACTION_0x9B @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_0x9C @ DIR_NORTH
+ .byte MOVEMENT_ACTION_0x9D @ DIR_WEST
+ .byte MOVEMENT_ACTION_0x9E @ DIR_EAST
gUnknown_83A64FB:: @ 83A64FB
- .byte 0x8 @ DIR_NONE
- .byte 0x8 @ DIR_SOUTH
- .byte 0x9 @ DIR_NORTH
- .byte 0xA @ DIR_WEST
- .byte 0xB @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_SLOWEST_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_SLOWEST_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_SLOWEST_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_SLOWEST_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_SLOWEST_RIGHT @ DIR_EAST
gUnknown_83A6500:: @ 83A6500
- .byte 0xC @ DIR_NONE
- .byte 0xC @ DIR_SOUTH
- .byte 0xD @ DIR_NORTH
- .byte 0xE @ DIR_WEST
- .byte 0xF @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_SLOW_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_SLOW_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_SLOW_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_SLOW_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_SLOW_RIGHT @ DIR_EAST
gUnknown_83A6505:: @ 83A6505
- .byte 0x10 @ DIR_NONE
- .byte 0x10 @ DIR_SOUTH
- .byte 0x11 @ DIR_NORTH
- .byte 0x12 @ DIR_WEST
- .byte 0x13 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_NORMAL_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_NORMAL_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_NORMAL_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_NORMAL_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_NORMAL_RIGHT @ DIR_EAST
gUnknown_83A650A:: @ 83A650A
- .byte 0x1D @ DIR_NONE
- .byte 0x1D @ DIR_SOUTH
- .byte 0x1E @ DIR_NORTH
- .byte 0x1F @ DIR_WEST
- .byte 0x20 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_FAST_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_FAST_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_FAST_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_FAST_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_FAST_RIGHT @ DIR_EAST
gUnknown_83A650F:: @ 83A650F
- .byte 0xA0 @ DIR_NONE
- .byte 0xA0 @ DIR_SOUTH
- .byte 0xA1 @ DIR_NORTH
- .byte 0xA2 @ DIR_WEST
- .byte 0xA3 @ DIR_EAST
+ .byte MOVEMENT_ACTION_0xA0 @ DIR_NONE
+ .byte MOVEMENT_ACTION_0xA0 @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_0xA1 @ DIR_NORTH
+ .byte MOVEMENT_ACTION_0xA2 @ DIR_WEST
+ .byte MOVEMENT_ACTION_0xA3 @ DIR_EAST
gUnknown_83A6514:: @ 83A6514
- .byte 0x31 @ DIR_NONE
- .byte 0x31 @ DIR_SOUTH
- .byte 0x32 @ DIR_NORTH
- .byte 0x33 @ DIR_WEST
- .byte 0x34 @ DIR_EAST
+ .byte MOVEMENT_ACTION_FACE_DOWN_SLOW @ DIR_NONE
+ .byte MOVEMENT_ACTION_FACE_DOWN_SLOW @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_FACE_UP_SLOW @ DIR_NORTH
+ .byte MOVEMENT_ACTION_FACE_LEFT_SLOW @ DIR_WEST
+ .byte MOVEMENT_ACTION_FACE_RIGHT_SLOW @ DIR_EAST
gUnknown_83A6519:: @ 83A6519
- .byte 0x35 @ DIR_NONE
- .byte 0x35 @ DIR_SOUTH
- .byte 0x36 @ DIR_NORTH
- .byte 0x37 @ DIR_WEST
- .byte 0x38 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_FASTEST_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_FASTEST_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_FASTEST_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_FASTEST_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_FASTEST_RIGHT @ DIR_EAST
gUnknown_83A651E:: @ 83A651E
- .byte 0x39 @ DIR_NONE
- .byte 0x39 @ DIR_SOUTH
- .byte 0x3A @ DIR_NORTH
- .byte 0x3B @ DIR_WEST
- .byte 0x3C @ DIR_EAST
+ .byte MOVEMENT_ACTION_SLIDE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_SLIDE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_SLIDE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_SLIDE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_SLIDE_RIGHT @ DIR_EAST
gUnknown_83A6523:: @ 83A6523
- .byte 0x3D @ DIR_NONE
- .byte 0x3D @ DIR_SOUTH
- .byte 0x3E @ DIR_NORTH
- .byte 0x3F @ DIR_WEST
- .byte 0x40 @ DIR_EAST
+ .byte MOVEMENT_ACTION_PLAYER_RUN_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_PLAYER_RUN_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_PLAYER_RUN_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_PLAYER_RUN_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_PLAYER_RUN_RIGHT @ DIR_EAST
gUnknown_83A6528:: @ 83A6528
- .byte 0x41 @ DIR_NONE
- .byte 0x41 @ DIR_SOUTH
- .byte 0x42 @ DIR_NORTH
- .byte 0x43 @ DIR_WEST
- .byte 0x44 @ DIR_EAST
+ .byte MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW @ DIR_NONE
+ .byte MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW @ DIR_NORTH
+ .byte MOVEMENT_ACTION_PLAYER_RUN_LEFT_SLOW @ DIR_WEST
+ .byte MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW @ DIR_EAST
gUnknown_83A652D:: @ 83A652D
- .byte 0x94 @ DIR_NONE
- .byte 0x94 @ DIR_SOUTH
- .byte 0x95 @ DIR_NORTH
- .byte 0x96 @ DIR_WEST
- .byte 0x97 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT @ DIR_EAST
gUnknown_83A6532:: @ 83A6532
- .byte 0x14 @ DIR_NONE
- .byte 0x14 @ DIR_SOUTH
- .byte 0x15 @ DIR_NORTH
- .byte 0x16 @ DIR_WEST
- .byte 0x17 @ DIR_EAST
+ .byte MOVEMENT_ACTION_JUMP_2_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_JUMP_2_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_JUMP_2_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_JUMP_2_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_JUMP_2_RIGHT @ DIR_EAST
gUnknown_83A6537:: @ 83A6537
- .byte 0x52 @ DIR_NONE
- .byte 0x52 @ DIR_SOUTH
- .byte 0x53 @ DIR_NORTH
- .byte 0x54 @ DIR_WEST
- .byte 0x55 @ DIR_EAST
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT @ DIR_EAST
gUnknown_83A653C:: @ 83A653C
- .byte 0x57 @ DIR_NONE
- .byte 0x57 @ DIR_SOUTH
- .byte 0x56 @ DIR_NORTH
- .byte 0x59 @ DIR_WEST
- .byte 0x58 @ DIR_EAST
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT @ DIR_EAST
gUnknown_83A6541:: @ 83A6541
- .byte 0x4E @ DIR_NONE
- .byte 0x4E @ DIR_SOUTH
- .byte 0x4F @ DIR_NORTH
- .byte 0x50 @ DIR_WEST
- .byte 0x51 @ DIR_EAST
+ .byte MOVEMENT_ACTION_JUMP_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_JUMP_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_JUMP_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_JUMP_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_JUMP_RIGHT @ DIR_EAST
gUnknown_83A6546:: @ 83A6546
- .byte 0x46 @ DIR_NONE
- .byte 0x46 @ DIR_SOUTH
- .byte 0x47 @ DIR_NORTH
- .byte 0x48 @ DIR_WEST
- .byte 0x49 @ DIR_EAST
+ .byte MOVEMENT_ACTION_JUMP_SPECIAL_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_JUMP_SPECIAL_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_JUMP_SPECIAL_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_JUMP_SPECIAL_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT @ DIR_EAST
gUnknown_83A654B:: @ 83A654B
- .byte 0xA6 @ DIR_NONE
- .byte 0xA6 @ DIR_SOUTH
- .byte 0xA7 @ DIR_NORTH
- .byte 0xA8 @ DIR_WEST
- .byte 0xA9 @ DIR_EAST
+ .byte MOVEMENT_ACTION_0xA6 @ DIR_NONE
+ .byte MOVEMENT_ACTION_0xA6 @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_0xA7 @ DIR_NORTH
+ .byte MOVEMENT_ACTION_0xA8 @ DIR_WEST
+ .byte MOVEMENT_ACTION_0xA9 @ DIR_EAST
gUnknown_83A6550:: @ 83A6550
- .byte 0x21 @ DIR_NONE
- .byte 0x21 @ DIR_SOUTH
- .byte 0x22 @ DIR_NORTH
- .byte 0x23 @ DIR_WEST
- .byte 0x24 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT @ DIR_EAST
gUnknown_83A6555:: @ 83A6555
- .byte 0x25 @ DIR_NONE
- .byte 0x25 @ DIR_SOUTH
- .byte 0x26 @ DIR_NORTH
- .byte 0x27 @ DIR_WEST
- .byte 0x28 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT @ DIR_EAST
gUnknown_83A655A:: @ 83A655A
- .byte 0x29 @ DIR_NONE
- .byte 0x29 @ DIR_SOUTH
- .byte 0x2A @ DIR_NORTH
- .byte 0x2B @ DIR_WEST
- .byte 0x2C @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT @ DIR_EAST
gUnknown_83A655F:: @ 83A655F
- .byte 0x2D @ DIR_NONE
- .byte 0x2D @ DIR_SOUTH
- .byte 0x2E @ DIR_NORTH
- .byte 0x2F @ DIR_WEST
- .byte 0x30 @ DIR_EAST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT @ DIR_EAST
gUnknown_83A6564:: @ 83A6564
- .byte 0x70 @ DIR_NONE
- .byte 0x70 @ DIR_SOUTH
- .byte 0x71 @ DIR_NORTH
- .byte 0x72 @ DIR_WEST
- .byte 0x73 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT @ DIR_EAST
gUnknown_83A6569:: @ 83A6569
- .byte 0x74 @ DIR_NONE
- .byte 0x74 @ DIR_SOUTH
- .byte 0x75 @ DIR_NORTH
- .byte 0x76 @ DIR_WEST
- .byte 0x77 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT @ DIR_EAST
gUnknown_83A656E:: @ 83A656E
- .byte 0x78 @ DIR_NONE
- .byte 0x78 @ DIR_SOUTH
- .byte 0x79 @ DIR_NORTH
- .byte 0x7A @ DIR_WEST
- .byte 0x7B @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT @ DIR_EAST
gUnknown_83A6573:: @ 83A6573
- .byte 0x7C @ DIR_NONE
- .byte 0x7C @ DIR_SOUTH
- .byte 0x7D @ DIR_NORTH
- .byte 0x7E @ DIR_WEST
- .byte 0x7F @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT @ DIR_EAST
gUnknown_83A6578:: @ 83A6578
- .byte 0x80 @ DIR_NONE
- .byte 0x80 @ DIR_SOUTH
- .byte 0x81 @ DIR_NORTH
- .byte 0x82 @ DIR_WEST
- .byte 0x83 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT @ DIR_EAST
gUnknown_83A657D:: @ 83A657D
- .byte 0x84 @ DIR_NONE
- .byte 0x84 @ DIR_SOUTH
- .byte 0x85 @ DIR_NORTH
- .byte 0x86 @ DIR_WEST
- .byte 0x87 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT @ DIR_EAST
gUnknown_83A6582:: @ 83A6582
- .byte 0x88 @ DIR_NONE
- .byte 0x88 @ DIR_SOUTH
- .byte 0x89 @ DIR_NORTH
- .byte 0x8A @ DIR_WEST
- .byte 0x8B @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT @ DIR_EAST
gUnknown_83A6587:: @ 83A6587
- .byte 0x8C @ DIR_NONE
- .byte 0x8C @ DIR_SOUTH
- .byte 0x8D @ DIR_NORTH
- .byte 0x8E @ DIR_WEST
- .byte 0x8F @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT @ DIR_EAST
gUnknown_83A658C:: @ 83A658C
- .byte 0x90 @ DIR_NONE
- .byte 0x90 @ DIR_SOUTH
- .byte 0x91 @ DIR_NORTH
- .byte 0x92 @ DIR_WEST
- .byte 0x93 @ DIR_EAST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN @ DIR_NONE
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN @ DIR_SOUTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP @ DIR_NORTH
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT @ DIR_WEST
+ .byte MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT @ DIR_EAST
@ gOppositeDirections ?
gOppositeDirections:: @ 83A6591
diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s
index be4036928..bfa367941 100644
--- a/data/field_player_avatar.s
+++ b/data/field_player_avatar.s
@@ -3,35 +3,6 @@
.include "constants/constants.inc"
.section .rodata
.align 2
-gUnknown_835B764:: @ 835B764
- .4byte MetatileBehavior_IsUnknownMovement48, ForcedMovement_Slip
- .4byte MetatileBehavior_IsIce_2, ForcedMovement_Slip
- .4byte MetatileBehavior_IsWalkSouth, sub_805B750
- .4byte MetatileBehavior_IsWalkNorth, sub_805B768
- .4byte MetatileBehavior_IsWalkWest, sub_805B780
- .4byte MetatileBehavior_IsWalkEast, sub_805B798
- .4byte MetatileBehavior_IsSouthwardCurrent, sub_805B82C
- .4byte MetatileBehavior_IsNorthwardCurrent, sub_805B844
- .4byte MetatileBehavior_IsWestwardCurrent, sub_805B85C
- .4byte MetatileBehavior_IsEastwardCurrent, sub_805B874
- .4byte MetatileBehavior_UnusedIsSpinRight, sub_805B7B0
- .4byte MetatileBehavior_UnusedIsSpinLeft, sub_805B7CC
- .4byte MetatileBehavior_UnusedIsSpinUp, sub_805B7E8
- .4byte MetatileBehavior_UnusedIsSpinDown, sub_805B804
- .4byte MetatileBehavior_IsSlideSouth, ForcedMovement_SlideSouth
- .4byte MetatileBehavior_IsSlideNorth, ForcedMovement_SlideNorth
- .4byte MetatileBehavior_IsSlideWest, ForcedMovement_SlideWest
- .4byte MetatileBehavior_IsSlideEast, ForcedMovement_SlideEast
- .4byte MetatileBehavior_IsWaterfall, sub_805B82C
- .4byte MetatileBehavior_UnusedReturnFalse_7, sub_805B924
- .4byte MetatileBehavior_UnusedReturnFalse_8, sub_805B930
- .4byte NULL, ForcedMovement_None
-
-gUnknown_835B814:: @ 835B814
- .4byte PlayerNotOnBikeNotMoving
- .4byte sub_805B9C4
- .4byte sub_805B9D4
-
gUnknown_835B820:: @ 835B820
.byte 0x04, 0x04, 0x05, 0x06, 0x07
diff --git a/include/bike.h b/include/bike.h
index 30049ee8c..1ff1ed5a3 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -6,4 +6,7 @@ bool8 sub_80BD540(void);
void StartTransitionToFlipBikeState(u8 flags);
s16 GetPlayerSpeed(void);
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
+void MovePlayerNotOnBike(u8 direction, u16 heldKeys);
+
#endif //GUARD_BIKE_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index e01364e55..3d5ea03f1 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -26,6 +26,8 @@ struct UnkStruct_083A3698
u8 animPos[4];
};
+typedef void (*MovementAction)(u8 direction);
+
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << 2)
@@ -186,6 +188,7 @@ void sub_8068CA4(struct Sprite *, u8);
bool8 sub_8068CB4(struct Sprite *sprite);
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
bool8 SpriteAnimEnded(struct Sprite *);
+u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent);
// Exported data declarations
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 3c4b5f382..fe794a69e 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -283,8 +283,8 @@ struct ObjectEventGraphicsInfo
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_4 (1 << 4)
-#define PLAYER_AVATAR_FLAG_5 (1 << 5)
-#define PLAYER_AVATAR_FLAG_6 (1 << 6)
+#define PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED (1 << 5)
+#define PLAYER_AVATAR_FLAG_MVMT_IS_FORCED (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
@@ -349,7 +349,7 @@ struct PlayerAvatar /* 0x202E858 */
u32 unkC;
u32 unk10;
u8 unk14[8];
- u8 unk1C[8];
+ u16 unk1C;
// TODO: rest of struct
};
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index ae3e6a01d..34f5bbd7b 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -115,10 +115,10 @@ bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior);
bool8 TestMetatileAttributeBit(u8 attr, u8 bitmask);
-bool8 MetatileBehavior_UnusedIsSpinRight(u8 metatileBehavior);
-bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior);
-bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior);
-bool8 MetatileBehavior_UnusedIsSpinDown(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSpinRight(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSpinLeft(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSpinUp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSpinDown(u8 metatileBehavior);
bool8 MetatileBehavior_IsStopSpinning(u8 metatileBehavior);
bool8 MetatileBehavior_IsSpinTile(u8 metatileBehavior);
bool8 MetatileBehavior_IsSignpost(u8 metatileBehavior);
diff --git a/ld_script.txt b/ld_script.txt
index 54078ab70..c28ee1b93 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -92,6 +92,7 @@ SECTIONS {
src/metatile_behavior.o(.text);
src/field_camera.o(.text);
src/field_door.o(.text);
+ src/field_player_avatar.o(.text);
asm/field_player_avatar.o(.text);
src/event_object_movement.o(.text);
src/field_message_box.o(.text);
@@ -433,6 +434,7 @@ SECTIONS {
src/fieldmap.o(.rodata);
src/metatile_behavior.o(.rodata);
src/field_door.o(.rodata);
+ src/field_player_avatar.o(.rodata);
data/field_player_avatar.o(.rodata);
data/event_object_movement.o(.rodata);
src/event_object_movement.o(.rodata);
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index a399ddf5e..dbde0cb93 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -4623,8 +4623,8 @@ dirn_to_anim(sub_8063FDC, gUnknown_83A650F);
dirn_to_anim(sub_8064008, gUnknown_83A6514);
dirn_to_anim(GetWalkFastestMovementAction, gUnknown_83A6519);
dirn_to_anim(GetSlideMovementAction, gUnknown_83A651E);
-dirn_to_anim(sub_806408C, gUnknown_83A6523);
-dirn_to_anim(sub_80640B8, gUnknown_83A6528);
+dirn_to_anim(GetPlayerRunMovementAction, gUnknown_83A6523);
+dirn_to_anim(GetPlayerRunSlowMovementAction, gUnknown_83A6528);
dirn_to_anim(sub_80640E4, gUnknown_83A652D);
dirn_to_anim(GetJump2MovementAction, gUnknown_83A6532);
dirn_to_anim(GetJumpInPlaceMovementAction, gUnknown_83A6537);
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 89b90ca92..da3fb4a03 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -105,11 +105,11 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
{
if (GetPlayerSpeed() != 4)
{
- if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & 0x40))
+ if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED))
input->pressedStartButton = TRUE;
if (gQuestLogState != QL_STATE_2 && gQuestLogState != QL_STATE_3)
{
- if (!(gPlayerAvatar.flags & 0x40))
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED))
{
if (newKeys & SELECT_BUTTON)
input->pressedSelectButton = TRUE;
@@ -625,7 +625,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB
return TRUE;
if (TryStartStepCountScript(metatileBehavior) == TRUE)
return TRUE;
- if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
return TRUE;
return FALSE;
}
@@ -655,7 +655,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
UpdateHappinessStepCounter();
- if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
{
if (sub_810C4EC() == TRUE)
{
@@ -839,7 +839,7 @@ static bool8 TryArrowWarp(struct MapPosition *position, u16 metatileBehavior, u8
else if (sub_806DB84(metatileBehavior, direction) == TRUE)
{
delay = 0;
- if (gPlayerAvatar.flags & 6)
+ if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
{
SetPlayerAvatarTransitionFlags(1);
delay = 12;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
new file mode 100644
index 000000000..33c68a253
--- /dev/null
+++ b/src/field_player_avatar.c
@@ -0,0 +1,405 @@
+#include "global.h"
+#include "gflib.h"
+#include "bike.h"
+#include "event_object_movement.h"
+#include "field_player_avatar.h"
+#include "metatile_behavior.h"
+#include "constants/event_object_movement.h"
+#include "constants/songs.h"
+
+EWRAM_DATA struct ObjectEvent * gUnknown_2036E30 = NULL;
+EWRAM_DATA bool8 gUnknown_2036E34 = FALSE;
+EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {};
+EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
+
+u8 ObjectEventCB2_NoMovement2(struct ObjectEvent * object, struct Sprite * sprite);
+bool8 sub_805B528(void);
+bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent * playerObjEvent, u8 direction);
+void npc_clear_strange_bits(struct ObjectEvent * playerObjEvent);
+void DoPlayerAvatarTransition(void);
+bool8 TryDoMetatileBehaviorForcedMovement(void);
+void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys);
+void PlayerAllowForcedMovementIfMovingSameDirection(void);
+bool8 ForcedMovement_None(void);
+void PlayerJumpLedge(u8 direction);
+u8 CheckForPlayerAvatarCollision(u8 direction);
+bool8 ForcedMovement_Slip(void);
+bool8 ForcedMovement_WalkSouth(void);
+bool8 ForcedMovement_WalkNorth(void);
+bool8 ForcedMovement_WalkWest(void);
+bool8 ForcedMovement_WalkEast(void);
+bool8 ForcedMovement_SpinRight(void);
+bool8 ForcedMovement_SpinLeft(void);
+bool8 ForcedMovement_SpinUp(void);
+bool8 ForcedMovement_SpinDown(void);
+void PlaySpinSound(void);
+bool8 ForcedMovement_PushedSouthByCurrent(void);
+bool8 ForcedMovement_PushedNorthByCurrent(void);
+bool8 ForcedMovement_PushedWestByCurrent(void);
+bool8 ForcedMovement_PushedEastByCurrent(void);
+bool8 ForcedMovement_SlideSouth(void);
+bool8 ForcedMovement_SlideNorth(void);
+bool8 ForcedMovement_SlideWest(void);
+bool8 ForcedMovement_SlideEast(void);
+bool8 ForcedMovement_0xBB(void);
+bool8 ForcedMovement_0xBC(void);
+u8 CheckMovementInputNotOnBike(u8 direction);
+void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys);
+void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys);
+void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys);
+void PlayerGoSpeed2(u8 direction);
+void PlayerGoSpeed1(u8 direction);
+void PlayerGoSpin(u8 direction);
+void PlayerRideWaterCurrent(u8 direction);
+void sub_805C2CC(u8 metatileBehavior);
+void sub_805CC40(struct ObjectEvent * playerObjEvent);
+void DoPlayerMatJump(void);
+void DoPlayerMatSpin(void);
+
+void MovementType_Player(struct Sprite *sprite)
+{
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, ObjectEventCB2_NoMovement2);
+}
+
+u8 ObjectEventCB2_NoMovement2(struct ObjectEvent * object, struct Sprite * sprite)
+{
+ return 0;
+}
+
+void player_step(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+
+ sub_805CC40(playerObjEvent);
+ if (!gPlayerAvatar.preventStep && !sub_805B528())
+ {
+ if (!TryInterruptObjectEventSpecialAnim(playerObjEvent, direction))
+ {
+ npc_clear_strange_bits(playerObjEvent);
+ DoPlayerAvatarTransition();
+ if (!TryDoMetatileBehaviorForcedMovement())
+ {
+ MovePlayerAvatarUsingKeypadInput(direction, newKeys, heldKeys);
+ PlayerAllowForcedMovementIfMovingSameDirection();
+ }
+ }
+ }
+}
+
+bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEvent, u8 direction)
+{
+
+ if (ObjectEventIsMovementOverridden(playerObjEvent)
+ && !ObjectEventClearHeldMovementIfFinished(playerObjEvent))
+ {
+ u8 heldMovementActionId = ObjectEventGetHeldMovementActionId(playerObjEvent);
+ if (heldMovementActionId > MOVEMENT_ACTION_WALK_FAST_RIGHT && heldMovementActionId < MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN)
+ {
+ if (direction != DIR_NONE && playerObjEvent->movementDirection != direction)
+ {
+ ObjectEventClearHeldMovement(playerObjEvent);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void npc_clear_strange_bits(struct ObjectEvent *objEvent)
+{
+ objEvent->inanimate = 0;
+ objEvent->disableAnim = 0;
+ objEvent->facingDirectionLocked = 0;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
+}
+
+void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ || (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ MovePlayerOnBike(direction, newKeys, heldKeys);
+ else
+ MovePlayerNotOnBike(direction, heldKeys);
+}
+
+void PlayerAllowForcedMovementIfMovingSameDirection(void)
+{
+ if (gPlayerAvatar.runningState == MOVING)
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED;
+}
+
+bool8 sub_805B528(void)
+{
+ if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED) && MetatileBehavior_IsSpinTile(gPlayerAvatar.unk1C))
+ {
+ gUnknown_2036E30 = &gObjectEvents[gPlayerAvatar.objectEventId];
+ if (gUnknown_2036E30->heldMovementFinished)
+ {
+ if (MetatileBehavior_IsStopSpinning(gUnknown_2036E30->currentMetatileBehavior))
+ {
+ return FALSE;
+ }
+ if (MetatileBehavior_IsSpinTile(gUnknown_2036E30->currentMetatileBehavior))
+ {
+ gPlayerAvatar.unk1C = gUnknown_2036E30->currentMetatileBehavior;
+ }
+ ObjectEventClearHeldMovement(gUnknown_2036E30);
+ sub_805C2CC(gPlayerAvatar.unk1C);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+const struct {
+ bool8 (*unk0)(u8 metatileBehavior);
+ bool8 (*unk4)(void);
+} sForcedMovementFuncs[] = {
+ {MetatileBehavior_IsUnknownMovement48, ForcedMovement_Slip},
+ {MetatileBehavior_IsIce_2, ForcedMovement_Slip},
+ {MetatileBehavior_IsWalkSouth, ForcedMovement_WalkSouth},
+ {MetatileBehavior_IsWalkNorth, ForcedMovement_WalkNorth},
+ {MetatileBehavior_IsWalkWest, ForcedMovement_WalkWest},
+ {MetatileBehavior_IsWalkEast, ForcedMovement_WalkEast},
+ {MetatileBehavior_IsSouthwardCurrent, ForcedMovement_PushedSouthByCurrent},
+ {MetatileBehavior_IsNorthwardCurrent, ForcedMovement_PushedNorthByCurrent},
+ {MetatileBehavior_IsWestwardCurrent, ForcedMovement_PushedWestByCurrent},
+ {MetatileBehavior_IsEastwardCurrent, ForcedMovement_PushedEastByCurrent},
+ {MetatileBehavior_IsSpinRight, ForcedMovement_SpinRight},
+ {MetatileBehavior_IsSpinLeft, ForcedMovement_SpinLeft},
+ {MetatileBehavior_IsSpinUp, ForcedMovement_SpinUp},
+ {MetatileBehavior_IsSpinDown, ForcedMovement_SpinDown},
+ {MetatileBehavior_IsSlideSouth, ForcedMovement_SlideSouth},
+ {MetatileBehavior_IsSlideNorth, ForcedMovement_SlideNorth},
+ {MetatileBehavior_IsSlideWest, ForcedMovement_SlideWest},
+ {MetatileBehavior_IsSlideEast, ForcedMovement_SlideEast},
+ {MetatileBehavior_IsWaterfall, ForcedMovement_PushedSouthByCurrent},
+ {MetatileBehavior_UnusedReturnFalse_7, ForcedMovement_0xBB},
+ {MetatileBehavior_UnusedReturnFalse_8, ForcedMovement_0xBC},
+ {NULL, ForcedMovement_None},
+};
+
+bool8 TryDoMetatileBehaviorForcedMovement(void)
+{
+ int i;
+ u8 behavior;
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED))
+ {
+ behavior = gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior;
+ for (i = 0; sForcedMovementFuncs[i].unk0 != NULL; i++)
+ {
+ if (sForcedMovementFuncs[i].unk0(behavior))
+ {
+ gPlayerAvatar.unk1C = behavior;
+ return sForcedMovementFuncs[i].unk4();
+ }
+ }
+ return sForcedMovementFuncs[i].unk4();
+ }
+ else
+ {
+ for (i = 0; sForcedMovementFuncs[i].unk0 != NULL; i++)
+ ;
+ return sForcedMovementFuncs[i].unk4();
+ }
+}
+
+bool8 ForcedMovement_None(void)
+{
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MVMT_IS_FORCED)
+ {
+ struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+
+ playerObjEvent->facingDirectionLocked = FALSE;
+ playerObjEvent->enableAnim = TRUE;
+ SetObjectEventDirection(playerObjEvent, playerObjEvent->facingDirection);
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_MVMT_IS_FORCED;
+ }
+ return FALSE;
+}
+
+u8 DoForcedMovement(u8 direction, MovementAction movementAction)
+{
+ struct PlayerAvatar *playerAvatar = &gPlayerAvatar;
+ u8 collision = CheckForPlayerAvatarCollision(direction);
+
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_MVMT_IS_FORCED;
+ if (collision)
+ {
+ ForcedMovement_None();
+ if (collision < COLLISION_STOP_SURFING)
+ {
+ return 0;
+ }
+ else
+ {
+ if (collision == COLLISION_LEDGE_JUMP)
+ PlayerJumpLedge(direction);
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_MVMT_IS_FORCED;
+ playerAvatar->runningState = MOVING;
+ return 1;
+ }
+ }
+ else
+ {
+ playerAvatar->runningState = MOVING;
+ movementAction(direction);
+ return 1;
+ }
+}
+
+u8 DoForcedMovementInCurrentDirection(MovementAction movementAction)
+{
+ struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+
+ playerObjEvent->disableAnim = TRUE;
+ return DoForcedMovement(playerObjEvent->movementDirection, movementAction);
+}
+
+bool8 ForcedMovement_Slip(void)
+{
+ return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_WalkSouth(void)
+{
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkNorth(void)
+{
+ return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkWest(void)
+{
+ return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkEast(void)
+{
+ return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_SpinRight(void)
+{
+ PlaySpinSound();
+ return DoForcedMovement(DIR_EAST, PlayerGoSpin);
+}
+
+bool8 ForcedMovement_SpinLeft(void)
+{
+ PlaySpinSound();
+ return DoForcedMovement(DIR_WEST, PlayerGoSpin);
+}
+
+bool8 ForcedMovement_SpinUp(void)
+{
+ PlaySpinSound();
+ return DoForcedMovement(DIR_NORTH, PlayerGoSpin);
+}
+
+bool8 ForcedMovement_SpinDown(void)
+{
+ PlaySpinSound();
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpin);
+}
+
+void PlaySpinSound(void)
+{
+ PlaySE(SE_W013B);
+}
+
+bool8 ForcedMovement_PushedSouthByCurrent(void)
+{
+ return DoForcedMovement(DIR_SOUTH, PlayerRideWaterCurrent);
+}
+
+bool8 ForcedMovement_PushedNorthByCurrent(void)
+{
+ return DoForcedMovement(DIR_NORTH, PlayerRideWaterCurrent);
+}
+
+bool8 ForcedMovement_PushedWestByCurrent(void)
+{
+ return DoForcedMovement(DIR_WEST, PlayerRideWaterCurrent);
+}
+
+bool8 ForcedMovement_PushedEastByCurrent(void)
+{
+ return DoForcedMovement(DIR_EAST, PlayerRideWaterCurrent);
+}
+
+u8 ForcedMovement_Slide(u8 direction, MovementAction movementAction)
+{
+ struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+
+ playerObjEvent->disableAnim = TRUE;
+ playerObjEvent->facingDirectionLocked = TRUE;
+ return DoForcedMovement(direction, movementAction);
+}
+
+bool8 ForcedMovement_SlideSouth(void)
+{
+ return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideNorth(void)
+{
+ return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideWest(void)
+{
+ return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideEast(void)
+{
+ return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_0xBB(void)
+{
+ DoPlayerMatJump();
+ return TRUE;
+}
+
+bool8 ForcedMovement_0xBC(void)
+{
+ DoPlayerMatSpin();
+ return TRUE;
+}
+
+void (*const gUnknown_835B814[])(u8, u16) = {
+ PlayerNotOnBikeNotMoving,
+ PlayerNotOnBikeTurningInPlace,
+ PlayerNotOnBikeMoving
+};
+
+void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
+{
+ gUnknown_835B814[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
+}
+
+u8 CheckMovementInputNotOnBike(u8 direction)
+{
+ if (direction == DIR_NONE)
+ {
+ gPlayerAvatar.runningState = NOT_MOVING;
+ return 0;
+ }
+ else if (direction != GetPlayerMovementDirection() && gPlayerAvatar.runningState != MOVING)
+ {
+ gPlayerAvatar.runningState = TURN_DIRECTION;
+ return 1;
+ }
+ else
+ {
+ gPlayerAvatar.runningState = MOVING;
+ return 2;
+ }
+}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index d6a983744..988c9fad0 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -750,7 +750,7 @@ bool8 TestMetatileAttributeBit(u8 arg1, u8 arg2)
return FALSE;
}
-bool8 MetatileBehavior_UnusedIsSpinRight(u8 metatileBehavior)
+bool8 MetatileBehavior_IsSpinRight(u8 metatileBehavior)
{
if(metatileBehavior == MB_SPIN_RIGHT)
return TRUE;
@@ -758,7 +758,7 @@ bool8 MetatileBehavior_UnusedIsSpinRight(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior)
+bool8 MetatileBehavior_IsSpinLeft(u8 metatileBehavior)
{
if(metatileBehavior == MB_SPIN_LEFT)
return TRUE;
@@ -766,7 +766,7 @@ bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior)
+bool8 MetatileBehavior_IsSpinUp(u8 metatileBehavior)
{
if(metatileBehavior == MB_SPIN_UP)
return TRUE;
@@ -774,7 +774,7 @@ bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_UnusedIsSpinDown(u8 metatileBehavior)
+bool8 MetatileBehavior_IsSpinDown(u8 metatileBehavior)
{
if(metatileBehavior == MB_SPIN_DOWN)
return TRUE;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 085b26c32..c1eca3171 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -78,21 +78,8 @@ gLinkPlayerObjectEvents: @ 2031DEC
.include "src/fieldmap.o"
.align 2
.include "src/field_camera.o"
-
.align 2
- @ .include "src/field_player_avatar.o"
-gUnknown_2036E30: @ 2036E30
- .space 0x4
-
-gUnknown_2036E34: @ 2036E34
- .space 0x4
-
-gObjectEvents: @ 2036E38
- .space 0x240
-
-gPlayerAvatar: @ 2037078
- .space 0x20
-
+ .include "src/field_player_avatar.o"
.align 2
.include "src/event_object_movement.o"
.align 2