summaryrefslogtreecommitdiff
path: root/engine/overworld/movement.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/overworld/movement.asm')
-rw-r--r--engine/overworld/movement.asm864
1 files changed, 864 insertions, 0 deletions
diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm
new file mode 100644
index 000000000..3dbb0b83a
--- /dev/null
+++ b/engine/overworld/movement.asm
@@ -0,0 +1,864 @@
+MovementPointers: ; 5075
+; entries correspond to macros/scripts/movement.asm enumeration
+ dw Movement_turn_head_down ; 00
+ dw Movement_turn_head_up ; 01
+ dw Movement_turn_head_left ; 02
+ dw Movement_turn_head_right ; 03
+ dw Movement_turn_step_down ; 04
+ dw Movement_turn_step_up ; 05
+ dw Movement_turn_step_left ; 06
+ dw Movement_turn_step_right ; 07
+ dw Movement_slow_step_down ; 08
+ dw Movement_slow_step_up ; 09
+ dw Movement_slow_step_left ; 0a
+ dw Movement_slow_step_right ; 0b
+ dw Movement_step_down ; 0c
+ dw Movement_step_up ; 0d
+ dw Movement_step_left ; 0e
+ dw Movement_step_right ; 0f
+ dw Movement_big_step_down ; 10
+ dw Movement_big_step_up ; 11
+ dw Movement_big_step_left ; 12
+ dw Movement_big_step_right ; 13
+ dw Movement_slow_slide_step_down ; 14
+ dw Movement_slow_slide_step_up ; 15
+ dw Movement_slow_slide_step_left ; 16
+ dw Movement_slow_slide_step_right ; 17
+ dw Movement_slide_step_down ; 18
+ dw Movement_slide_step_up ; 19
+ dw Movement_slide_step_left ; 1a
+ dw Movement_slide_step_right ; 1b
+ dw Movement_fast_slide_step_down ; 1c
+ dw Movement_fast_slide_step_up ; 1d
+ dw Movement_fast_slide_step_left ; 1e
+ dw Movement_fast_slide_step_right ; 1f
+ dw Movement_turn_away_down ; 20
+ dw Movement_turn_away_up ; 21
+ dw Movement_turn_away_left ; 22
+ dw Movement_turn_away_right ; 23
+ dw Movement_turn_in_down ; 24
+ dw Movement_turn_in_up ; 25
+ dw Movement_turn_in_left ; 26
+ dw Movement_turn_in_right ; 27
+ dw Movement_turn_waterfall_down ; 28
+ dw Movement_turn_waterfall_up ; 29
+ dw Movement_turn_waterfall_left ; 2a
+ dw Movement_turn_waterfall_right ; 2b
+ dw Movement_slow_jump_step_down ; 2c
+ dw Movement_slow_jump_step_up ; 2d
+ dw Movement_slow_jump_step_left ; 2e
+ dw Movement_slow_jump_step_right ; 2f
+ dw Movement_jump_step_down ; 30
+ dw Movement_jump_step_up ; 31
+ dw Movement_jump_step_left ; 32
+ dw Movement_jump_step_right ; 33
+ dw Movement_fast_jump_step_down ; 34
+ dw Movement_fast_jump_step_up ; 35
+ dw Movement_fast_jump_step_left ; 36
+ dw Movement_fast_jump_step_right ; 37
+ dw Movement_remove_sliding ; 38
+ dw Movement_set_sliding ; 39
+ dw Movement_remove_fixed_facing ; 3a
+ dw Movement_fix_facing ; 3b
+ dw Movement_show_object ; 3c
+ dw Movement_hide_object ; 3d
+ dw Movement_step_sleep_1 ; 3e
+ dw Movement_step_sleep_2 ; 3f
+ dw Movement_step_sleep_3 ; 40
+ dw Movement_step_sleep_4 ; 41
+ dw Movement_step_sleep_5 ; 42
+ dw Movement_step_sleep_6 ; 43
+ dw Movement_step_sleep_7 ; 44
+ dw Movement_step_sleep_8 ; 45
+ dw Movement_step_sleep ; 46
+ dw Movement_step_end ; 47
+ dw Movement_48 ; 48
+ dw Movement_remove_object ; 49
+ dw Movement_step_loop ; 4a
+ dw Movement_4b ; 4b
+ dw Movement_teleport_from ; 4c
+ dw Movement_teleport_to ; 4d
+ dw Movement_skyfall ; 4e
+ dw Movement_step_dig ; 4f
+ dw Movement_step_bump ; 50
+ dw Movement_fish_got_bite ; 51
+ dw Movement_fish_cast_rod ; 52
+ dw Movement_hide_emote ; 53
+ dw Movement_show_emote ; 54
+ dw Movement_step_shake ; 55
+ dw Movement_tree_shake ; 56
+ dw Movement_rock_smash ; 57
+ dw Movement_return_dig ; 58
+ dw Movement_skyfall_top ; 59
+; 5129
+
+
+Movement_teleport_from: ; 5129
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_TELEPORT_FROM
+ ret
+; 5130
+
+Movement_teleport_to: ; 5130
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_TELEPORT_TO
+ ret
+; 5137
+
+Movement_skyfall: ; 5137
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_SKYFALL
+ ret
+; 513e
+
+Movement_skyfall_top: ; 513e
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_SKYFALL_TOP
+ ret
+; 5145
+
+Movement_step_dig: ; 5145
+ call GetSpriteDirection
+ rlca
+ rlca
+ ld hl, OBJECT_STEP_FRAME
+ add hl, bc
+ ld [hl], a
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_SPIN
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_03
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ret
+; 516a
+
+Movement_return_dig: ; 516a
+ call GetSpriteDirection
+ rlca
+ rlca
+ ld hl, OBJECT_STEP_FRAME
+ add hl, bc
+ ld [hl], a
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_RETURN_DIG
+ ret
+; 5189
+
+Movement_fish_got_bite: ; 5189
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_FISHING
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_GOT_BITE
+ ret
+; 5196
+
+Movement_rock_smash: ; 5196
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STAND
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_ROCK_SMASH
+ ret
+; 51ab
+
+Movement_fish_cast_rod: ; 51ab
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_FISHING
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_SLEEP
+ ret
+; 51b8
+
+Movement_step_loop: ; 51b8
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
+ add hl, bc
+ ld [hl], $0
+ jp ContinueReadingMovement
+; 51c1
+
+Movement_step_end: ; 51c1
+ call RestoreDefaultMovement
+ ld hl, OBJECT_MOVEMENTTYPE
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
+ add hl, bc
+ ld [hl], $0
+
+ ld hl, wVramState
+ res 7, [hl]
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_SLEEP
+ ret
+; 51db
+
+Movement_48: ; 51db
+ call RestoreDefaultMovement
+ ld hl, OBJECT_MOVEMENTTYPE
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
+ add hl, bc
+ ld [hl], $0
+
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_03
+
+ ld hl, wVramState
+ res 7, [hl]
+ ret
+; 51fd
+
+Movement_remove_object: ; 51fd
+ call DeleteMapObject
+ ld hl, wObjectFollow_Leader
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr nz, .not_leading
+ ld [hl], -1
+
+.not_leading
+ ld hl, wVramState
+ res 7, [hl]
+ ret
+; 5210
+
+Movement_4b: ; 5210
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_04
+
+ ld hl, wVramState
+ res 7, [hl]
+ ret
+; 5222
+
+Movement_step_sleep_1: ; 5222
+ ld a, 1
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_2: ; 5226
+ ld a, 2
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_3: ; 522a
+ ld a, 3
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_4: ; 522e
+ ld a, 4
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_5: ; 5232
+ ld a, 5
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_6: ; 5236
+ ld a, 6
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_7: ; 523a
+ ld a, 7
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_8: ; 523e
+ ld a, 8
+ jr Movement_step_sleep_common
+
+Movement_step_sleep: ; 5242
+; parameters:
+; duration (DecimalParam)
+
+ call JumpMovementPointer
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_common: ; 5247
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_03
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ret
+; 525f
+
+Movement_step_bump: ; 525f
+ ld a, 1
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_BUMP
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_BUMP
+
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ret
+; 5279
+
+Movement_tree_shake: ; 5279
+ ld a, 24
+ ld hl, OBJECT_STEP_DURATION
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_03
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_WEIRD_TREE
+
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ret
+; 5293
+
+Movement_remove_sliding: ; 5293
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ res SLIDING, [hl]
+ jp ContinueReadingMovement
+; 529c
+
+Movement_set_sliding: ; 529c
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ set SLIDING, [hl]
+ jp ContinueReadingMovement
+; 52a5
+
+Movement_remove_fixed_facing: ; 52a5
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ res FIXED_FACING, [hl]
+ jp ContinueReadingMovement
+; 52ae
+
+Movement_fix_facing: ; 52ae
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ set FIXED_FACING, [hl]
+ jp ContinueReadingMovement
+; 52b7
+
+Movement_show_object: ; 52b7
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ res INVISIBLE, [hl]
+ jp ContinueReadingMovement
+; 52c0
+
+Movement_hide_object: ; 52c0
+ ld hl, OBJECT_FLAGS1
+ add hl, bc
+ set INVISIBLE, [hl]
+ jp ContinueReadingMovement
+; 52c9
+
+Movement_hide_emote: ; 52c9
+ call DespawnEmote
+ jp ContinueReadingMovement
+; 52cf
+
+Movement_show_emote: ; 52cf
+ call SpawnEmote
+ jp ContinueReadingMovement
+; 52d5
+
+Movement_step_shake: ; 52d5
+; parameters:
+; displacement (DecimalParam)
+
+ call JumpMovementPointer
+ call ShakeScreen
+ jp ContinueReadingMovement
+; 52de
+
+Movement_turn_head_down: ; 52de
+ ld a, OW_DOWN
+ jr TurnHead
+
+Movement_turn_head_up: ; 52e2
+ ld a, OW_UP
+ jr TurnHead
+
+Movement_turn_head_left: ; 52e6
+ ld a, OW_LEFT
+ jr TurnHead
+
+Movement_turn_head_right: ; 52ea
+ ld a, OW_RIGHT
+ jr TurnHead
+
+TurnHead: ; 52ee
+ ld hl, OBJECT_FACING
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_DIRECTION_WALKING
+ add hl, bc
+ ld [hl], STANDING
+ ret
+; 5300
+
+Movement_slow_step_down: ; 5300
+ ld a, STEP_SLOW << 2 | DOWN
+ jp NormalStep
+; 5305
+
+Movement_slow_step_up: ; 5305
+ ld a, STEP_SLOW << 2 | UP
+ jp NormalStep
+; 530a
+
+Movement_slow_step_left: ; 530a
+ ld a, STEP_SLOW << 2 | LEFT
+ jp NormalStep
+; 530f
+
+Movement_slow_step_right: ; 530f
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp NormalStep
+; 5314
+
+Movement_step_down: ; 5314
+ ld a, STEP_WALK << 2 | DOWN
+ jp NormalStep
+; 5319
+
+Movement_step_up: ; 5319
+ ld a, STEP_WALK << 2 | UP
+ jp NormalStep
+; 531e
+
+Movement_step_left: ; 531e
+ ld a, STEP_WALK << 2 | LEFT
+ jp NormalStep
+; 5323
+
+Movement_step_right: ; 5323
+ ld a, STEP_WALK << 2 | RIGHT
+ jp NormalStep
+; 5328
+
+Movement_big_step_down: ; 5328
+ ld a, STEP_BIKE << 2 | DOWN
+ jp NormalStep
+; 532d
+
+Movement_big_step_up: ; 532d
+ ld a, STEP_BIKE << 2 | UP
+ jp NormalStep
+; 5332
+
+Movement_big_step_left: ; 5332
+ ld a, STEP_BIKE << 2 | LEFT
+ jp NormalStep
+; 5337
+
+Movement_big_step_right: ; 5337
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp NormalStep
+; 533c
+
+
+Movement_turn_away_down: ; 533c
+ ld a, STEP_SLOW << 2 | DOWN
+ jp TurningStep
+; 5341
+
+Movement_turn_away_up: ; 5341
+ ld a, STEP_SLOW << 2 | UP
+ jp TurningStep
+; 5346
+
+Movement_turn_away_left: ; 5346
+ ld a, STEP_SLOW << 2 | LEFT
+ jp TurningStep
+; 534b
+
+Movement_turn_away_right: ; 534b
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp TurningStep
+; 5350
+
+Movement_turn_in_down: ; 5350
+ ld a, STEP_WALK << 2 | DOWN
+ jp TurningStep
+; 5355
+
+Movement_turn_in_up: ; 5355
+ ld a, STEP_WALK << 2 | UP
+ jp TurningStep
+; 535a
+
+Movement_turn_in_left: ; 535a
+ ld a, STEP_WALK << 2 | LEFT
+ jp TurningStep
+; 535f
+
+Movement_turn_in_right: ; 535f
+ ld a, STEP_WALK << 2 | RIGHT
+ jp TurningStep
+; 5364
+
+Movement_turn_waterfall_down: ; 5364
+ ld a, STEP_BIKE << 2 | DOWN
+ jp TurningStep
+; 5369
+
+Movement_turn_waterfall_up: ; 5369
+ ld a, STEP_BIKE << 2 | UP
+ jp TurningStep
+; 536e
+
+Movement_turn_waterfall_left: ; 536e
+ ld a, STEP_BIKE << 2 | LEFT
+ jp TurningStep
+; 5373
+
+Movement_turn_waterfall_right: ; 5373
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp TurningStep
+; 5378
+
+
+Movement_slow_slide_step_down: ; 5378
+ ld a, STEP_SLOW << 2 | DOWN
+ jp SlideStep
+; 537d
+
+Movement_slow_slide_step_up: ; 537d
+ ld a, STEP_SLOW << 2 | UP
+ jp SlideStep
+; 5382
+
+Movement_slow_slide_step_left: ; 5382
+ ld a, STEP_SLOW << 2 | LEFT
+ jp SlideStep
+; 5387
+
+Movement_slow_slide_step_right: ; 5387
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp SlideStep
+; 538c
+
+Movement_slide_step_down: ; 538c
+ ld a, STEP_WALK << 2 | DOWN
+ jp SlideStep
+; 5391
+
+Movement_slide_step_up: ; 5391
+ ld a, STEP_WALK << 2 | UP
+ jp SlideStep
+; 5396
+
+Movement_slide_step_left: ; 5396
+ ld a, STEP_WALK << 2 | LEFT
+ jp SlideStep
+; 539b
+
+Movement_slide_step_right: ; 539b
+ ld a, STEP_WALK << 2 | RIGHT
+ jp SlideStep
+; 53a0
+
+Movement_fast_slide_step_down: ; 53a0
+ ld a, STEP_BIKE << 2 | DOWN
+ jp SlideStep
+; 53a5
+
+Movement_fast_slide_step_up: ; 53a5
+ ld a, STEP_BIKE << 2 | UP
+ jp SlideStep
+; 53aa
+
+Movement_fast_slide_step_left: ; 53aa
+ ld a, STEP_BIKE << 2 | LEFT
+ jp SlideStep
+; 53af
+
+Movement_fast_slide_step_right: ; 53af
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp SlideStep
+; 53b4
+
+
+Movement_slow_jump_step_down: ; 53b4
+ ld a, STEP_SLOW << 2 | DOWN
+ jp JumpStep
+; 53b9
+
+Movement_slow_jump_step_up: ; 53b9
+ ld a, STEP_SLOW << 2 | UP
+ jp JumpStep
+; 53be
+
+Movement_slow_jump_step_left: ; 53be
+ ld a, STEP_SLOW << 2 | LEFT
+ jp JumpStep
+; 53c3
+
+Movement_slow_jump_step_right: ; 53c3
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp JumpStep
+; 53c8
+
+Movement_jump_step_down: ; 53c8
+ ld a, STEP_WALK << 2 | DOWN
+ jp JumpStep
+; 53cd
+
+Movement_jump_step_up: ; 53cd
+ ld a, STEP_WALK << 2 | UP
+ jp JumpStep
+; 53d2
+
+Movement_jump_step_left: ; 53d2
+ ld a, STEP_WALK << 2 | LEFT
+ jp JumpStep
+; 53d7
+
+Movement_jump_step_right: ; 53d7
+ ld a, STEP_WALK << 2 | RIGHT
+ jp JumpStep
+; 53dc
+
+Movement_fast_jump_step_down: ; 53dc
+ ld a, STEP_BIKE << 2 | DOWN
+ jp JumpStep
+; 53e1
+
+Movement_fast_jump_step_up: ; 53e1
+ ld a, STEP_BIKE << 2 | UP
+ jp JumpStep
+; 53e6
+
+Movement_fast_jump_step_left: ; 53e6
+ ld a, STEP_BIKE << 2 | LEFT
+ jp JumpStep
+; 53eb
+
+Movement_fast_jump_step_right: ; 53eb
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp JumpStep
+; 53f0
+
+
+Movement_turn_step_down: ; 53f0
+ ld a, OW_DOWN
+ jr TurnStep
+
+Movement_turn_step_up: ; 53f4
+ ld a, OW_UP
+ jr TurnStep
+
+Movement_turn_step_left: ; 53f8
+ ld a, OW_LEFT
+ jr TurnStep
+
+Movement_turn_step_right: ; 53fc
+ ld a, OW_RIGHT
+ jr TurnStep
+
+TurnStep: ; 5400
+ ld hl, OBJECT_1D ; new facing
+ add hl, bc
+ ld [hl], a
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STEP
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_HALF_STEP
+ ret
+; 5412
+
+NormalStep: ; 5412
+ call InitStep
+ call UpdateTallGrassFlags
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STEP
+
+ ld hl, OBJECT_NEXT_TILE
+ add hl, bc
+ ld a, [hl]
+ call CheckSuperTallGrassTile
+ jr z, .shake_grass
+
+ call CheckGrassTile
+ jr c, .skip_grass
+
+.shake_grass
+ call ShakeGrass
+
+.skip_grass
+ ld hl, wCenteredObject
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_NPC_WALK
+ ret
+
+.player
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_PLAYER_WALK
+ ret
+; 5446
+
+TurningStep: ; 5446
+ call InitStep
+ call UpdateTallGrassFlags
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_SPIN
+
+ ld hl, wCenteredObject
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_NPC_WALK
+ ret
+
+.player
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_PLAYER_WALK
+ ret
+; 5468
+
+
+SlideStep: ; 5468
+ call InitStep
+ call UpdateTallGrassFlags
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, wCenteredObject
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_NPC_WALK
+ ret
+
+.player
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_PLAYER_WALK
+ ret
+; 548a
+
+
+JumpStep: ; 548a
+ call InitStep
+ ld hl, OBJECT_1F
+ add hl, bc
+ ld [hl], $0
+
+ ld hl, OBJECT_FLAGS2
+ add hl, bc
+ res OVERHEAD, [hl]
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STEP
+
+ call SpawnShadow
+
+ ld hl, wCenteredObject
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_NPC_JUMP
+ ret
+
+.player
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_PLAYER_JUMP
+ ret
+; 54b8