diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-22 20:17:47 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-22 20:17:47 -0400 |
commit | dbac777d95875b49e98da94551a89616c2addf3c (patch) | |
tree | 6ce006a7d498ec30ac5da9d95fa961109b5e74f7 | |
parent | 4f65d54095908a1bcf068c7712bca9d4c34f10a3 (diff) |
through CheckMovementInputNotOnBike
-rw-r--r-- | asm/bike.s | 22 | ||||
-rw-r--r-- | asm/field_player_avatar.s | 999 | ||||
-rw-r--r-- | asm/overworld.s | 2 | ||||
-rw-r--r-- | berry_fix/payload/include/global.fieldmap.h | 4 | ||||
-rw-r--r-- | data/event_object_movement.s | 333 | ||||
-rw-r--r-- | data/field_player_avatar.s | 29 | ||||
-rw-r--r-- | include/bike.h | 3 | ||||
-rw-r--r-- | include/event_object_movement.h | 3 | ||||
-rw-r--r-- | include/global.fieldmap.h | 6 | ||||
-rw-r--r-- | include/metatile_behavior.h | 8 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/event_object_movement.c | 4 | ||||
-rw-r--r-- | src/field_control_avatar.c | 10 | ||||
-rw-r--r-- | src/field_player_avatar.c | 405 | ||||
-rw-r--r-- | src/metatile_behavior.c | 8 | ||||
-rw-r--r-- | sym_ewram.txt | 15 |
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 |