summaryrefslogtreecommitdiff
path: root/engine/overworld/movement.asm
diff options
context:
space:
mode:
authorentrpntr <entrpntr@gmail.com>2020-04-26 20:45:59 -0400
committerentrpntr <entrpntr@gmail.com>2020-04-26 22:15:31 -0400
commitd53f3afe500ad9e92f18a7e6de77982928a6061f (patch)
tree9fd2697a741c82a98104b1c23437907f061be034 /engine/overworld/movement.asm
parent0b33dabae2d43591a964774154f8bec5bf7194b1 (diff)
Clean up some overworld code.
Diffstat (limited to 'engine/overworld/movement.asm')
-rwxr-xr-xengine/overworld/movement.asm1081
1 files changed, 536 insertions, 545 deletions
diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm
index 39f99480..1a819acb 100755
--- a/engine/overworld/movement.asm
+++ b/engine/overworld/movement.asm
@@ -1,776 +1,767 @@
-GetMovementByte:
- ld hl, wMovementDataBank
- call _GetMovementByte
+MovementPointers:
+; 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
+
+Movement_teleport_from:
+ ld hl, OBJECT_STEP_TYPE
+ add hl, bc
+ ld [hl], STEP_TYPE_TELEPORT_FROM
ret
-Function4fbd:
- ld hl, $1b
- add hl, bc
- ld e, [hl]
- inc [hl]
- ld d, $0
- ld hl, wMovementObject
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, de
- ld a, [hl]
- ret
-
-Function4fce:
- ld hl, $1b
- add hl, bc
- ld e, [hl]
- inc [hl]
- ld d, $0
- ld hl, wce8f
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, de
- ld a, [hl]
- ret
-
-Function4fdf: ; 4fdf (1:4fdf)
- ld hl, GetMovementPerson
- jp Function4fe9
-
-GetMovementPerson:
- ld a, [wMovementObject]
- ret
-
-Function4fe9: ; 4fe9 (1:4fe9)
- call Function4ffd
-.asm_4fec
- xor a
- ld [wce93], a
- call Function5006
- call Function5013
- ld a, [wce93]
- and a
- jr nz, .asm_4fec
- ret
-
-Function4ffd: ; 4ffd (1:4ffd)
- ld a, l
- ld [wce94], a
- ld a, h
- ld [wce95], a
- ret
-
-Function5006: ; 5006 (1:5006)
- ld hl, wce94
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-Function500d: ; 500d (1:500d)
- ld a, $1
- ld [wce93], a
- ret
-
-Function5013: ; 5013 (1:5013)
- push af
- call Function5457
- pop af
- ld hl, MovementPointers
- rst JumpTable
- ret
-
-MovementPointers: ; 501d
- dw Function527d
- dw Function5281
- dw Function5285
- dw Function5289
- dw Function538f
- dw Function5393
- dw Function5397
- dw Function539b
- dw Function529f
- dw Function52a4
- dw Function52a9
- dw Function52ae
- dw Function52b3
- dw Function52b8
- dw Function52bd
- dw Function52c2
- dw Function52c7
- dw Function52cc
- dw Function52d1
- dw Function52d6
- dw Function5317
- dw Function531c
- dw Function5321
- dw Function5326
- dw Function532b
- dw Function5330
- dw Function5335
- dw Function533a
- dw Function533f
- dw Function5344
- dw Function5349
- dw Function534e
- dw Function52db
- dw Function52e0
- dw Function52e5
- dw Function52ea
- dw Function52ef
- dw Function52f4
- dw Function52f9
- dw Function52fe
- dw Function5303
- dw Function5308
- dw Function530d
- dw Function5312
- dw Function5353
- dw Function5358
- dw Function535d
- dw Function5362
- dw Function5367
- dw Function536c
- dw Function5371
- dw Function5376
- dw Function537b
- dw Function5380
- dw Function5385
- dw Function538a
- dw Function5232
- dw Function523b
- dw Function5244
- dw Function524d
- dw Function5256
- dw Function525f
- dw Function51c1
- dw Function51c5
- dw Function51c9
- dw Function51cd
- dw Function51d1
- dw Function51d5
- dw Function51d9
- dw Function51dd
- dw Function51e1
- dw Function5160
- dw Function517a
- dw Function519c
- dw Function5157
- dw Function51af
- dw Function50cf
- dw Function50d6
- dw Function50dd
- dw Function50e4
- dw Function51fe
- dw Function5128
- dw Function514a
- dw Function5268
- dw Function526e
- dw Function5274
- dw Function5218
- dw Function5135
- dw Function5109
-
-Function50cf: ; 50cf (1:50cf)
- ld hl, $9
- add hl, bc
- ld [hl], $c
- ret
-
-Function50d6: ; 50d6 (1:50d6)
- ld hl, $9
+Movement_teleport_to:
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $d
+ ld [hl], STEP_TYPE_TELEPORT_TO
ret
-Function50dd: ; 50dd (1:50dd)
- ld hl, $9
+Movement_skyfall:
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $e
+ ld [hl], STEP_TYPE_SKYFALL
ret
-Function50e4: ; 50e4 (1:50e4)
+Movement_step_dig:
call GetSpriteDirection
rlca
rlca
- ld hl, $c
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], a
- ld hl, $b
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $4
- call Function5006
- ld hl, $a
+ ld [hl], OBJECT_ACTION_SPIN
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $9
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $3
- ld hl, $7
+ ld [hl], STEP_TYPE_03
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
-Function5109: ; 5109 (1:5109)
+Movement_return_dig:
call GetSpriteDirection
rlca
rlca
- ld hl, $c
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], a
- call Function5006
- ld hl, $a
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $7
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
- ld hl, $9
+ ld [hl], STANDING
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $12
+ ld [hl], STEP_TYPE_RETURN_DIG
ret
-Function5128: ; 5128 (1:5128)
- ld hl, $b
+Movement_fish_got_bite:
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $6
- ld hl, $9
+ ld [hl], OBJECT_ACTION_FISHING
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $10
+ ld [hl], STEP_TYPE_GOT_BITE
ret
-Function5135: ; 5135 (1:5135)
- call Function5006
- ld hl, $a
+Movement_rock_smash:
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $b
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $1
- ld hl, $9
+ ld [hl], OBJECT_ACTION_STAND
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $11
+ ld [hl], STEP_TYPE_ROCK_SMASH
ret
-Function514a: ; 514a (1:514a)
- ld hl, $b
+Movement_fish_cast_rod:
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $6
- ld hl, $9
+ ld [hl], OBJECT_ACTION_FISHING
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $1
+ ld [hl], STEP_TYPE_SLEEP
ret
-Function5157: ; 5157 (1:5157)
- ld hl, $1b
+Movement_step_loop:
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
- jp Function500d
+ jp ContinueReadingMovement
-Function5160: ; 5160 (1:5160)
+Movement_step_end:
call RestoreDefaultMovement
- ld hl, $3
+ ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
- ld hl, $1b
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
+
ld hl, wVramState
res 7, [hl]
- ld hl, $9
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $1
+ ld [hl], STEP_TYPE_SLEEP
ret
-Function517a: ; 517a (1:517a)
+Movement_48:
call RestoreDefaultMovement
- ld hl, $3
+ ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
- ld hl, $1b
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
- call Function5006
- ld hl, $a
+
+ call JumpMovementPointer
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $9
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $3
+ ld [hl], STEP_TYPE_03
+
ld hl, wVramState
res 7, [hl]
ret
-Function519c: ; 519c (1:519c)
+Movement_remove_object:
call DeleteMapObject
ld hl, wObjectFollow_Leader
ldh a, [hMapObjectIndexBuffer]
cp [hl]
- jr nz, .asm_51a9
- ld [hl], $ff
-.asm_51a9
+ jr nz, .not_leading
+ ld [hl], -1
+
+.not_leading
ld hl, wVramState
res 7, [hl]
ret
-Function51af: ; 51af (1:51af)
- ld hl, $b
+Movement_4b:
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $1
- ld hl, $9
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $4
+ ld [hl], STEP_TYPE_04
+
ld hl, wVramState
res 7, [hl]
ret
-Function51c1: ; 51c1 (1:51c1)
- ld a, $1
- jr asm_51e6
+Movement_step_sleep_1:
+ ld a, 1
+ jr Movement_step_sleep_common
+
+Movement_step_sleep_2:
+ ld a, 2
+ jr Movement_step_sleep_common
-Function51c5: ; 51c5 (1:51c5)
- ld a, $2
- jr asm_51e6
+Movement_step_sleep_3:
+ ld a, 3
+ jr Movement_step_sleep_common
-Function51c9: ; 51c9 (1:51c9)
- ld a, $3
- jr asm_51e6
+Movement_step_sleep_4:
+ ld a, 4
+ jr Movement_step_sleep_common
-Function51cd: ; 51cd (1:51cd)
- ld a, $4
- jr asm_51e6
+Movement_step_sleep_5:
+ ld a, 5
+ jr Movement_step_sleep_common
-Function51d1: ; 51d1 (1:51d1)
- ld a, $5
- jr asm_51e6
+Movement_step_sleep_6:
+ ld a, 6
+ jr Movement_step_sleep_common
-Function51d5: ; 51d5 (1:51d5)
- ld a, $6
- jr asm_51e6
+Movement_step_sleep_7:
+ ld a, 7
+ jr Movement_step_sleep_common
-Function51d9: ; 51d9 (1:51d9)
- ld a, $7
- jr asm_51e6
+Movement_step_sleep_8:
+ ld a, 8
+ jr Movement_step_sleep_common
-Function51dd: ; 51dd (1:51dd)
- ld a, $8
- jr asm_51e6
+Movement_step_sleep:
+; parameters:
+; duration (DecimalParam)
-Function51e1: ; 51e1 (1:51e1)
- call Function5006
- jr asm_51e6
+ call JumpMovementPointer
+ jr Movement_step_sleep_common
-asm_51e6:
- ld hl, $a
+Movement_step_sleep_common:
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $9
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $3
- ld hl, $b
+ ld [hl], STEP_TYPE_03
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $1
- ld hl, $7
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
-Function51fe: ; 51fe (1:51fe)
- ld a, $1
- ld hl, $a
+Movement_step_bump:
+ ld a, 1
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $9
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $b
- ld hl, $b
+ ld [hl], STEP_TYPE_BUMP
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $3
- ld hl, $7
+ ld [hl], OBJECT_ACTION_BUMP
+
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
-Function5218: ; 5218 (1:5218)
- ld a, $18
- ld hl, $a
+Movement_tree_shake:
+ ld a, 24
+ ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
- ld hl, $9
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $3
- ld hl, $b
+ ld [hl], STEP_TYPE_03
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $b
- ld hl, $7
+ ld [hl], OBJECT_ACTION_WEIRD_TREE
+
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
-Function5232: ; 5232 (1:5232)
- ld hl, $4
+Movement_remove_sliding:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- res 3, [hl]
- jp Function500d
+ res SLIDING_F, [hl]
+ jp ContinueReadingMovement
-Function523b: ; 523b (1:523b)
- ld hl, $4
+Movement_set_sliding:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- set 3, [hl]
- jp Function500d
+ set SLIDING_F, [hl]
+ jp ContinueReadingMovement
-Function5244: ; 5244 (1:5244)
- ld hl, $4
+Movement_remove_fixed_facing:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- res 2, [hl]
- jp Function500d
+ res FIXED_FACING_F, [hl]
+ jp ContinueReadingMovement
-Function524d: ; 524d (1:524d)
- ld hl, $4
+Movement_fix_facing:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- set 2, [hl]
- jp Function500d
+ set FIXED_FACING_F, [hl]
+ jp ContinueReadingMovement
-Function5256: ; 5256 (1:5256)
- ld hl, $4
+Movement_show_object:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- res 0, [hl]
- jp Function500d
+ res INVISIBLE_F, [hl]
+ jp ContinueReadingMovement
-Function525f: ; 525f (1:525f)
- ld hl, $4
+Movement_hide_object:
+ ld hl, OBJECT_FLAGS1
add hl, bc
- set 0, [hl]
- jp Function500d
+ set INVISIBLE_F, [hl]
+ jp ContinueReadingMovement
+
+Movement_hide_emote:
+ call DespawnEmote
+ jp ContinueReadingMovement
-Function5268: ; 5268 (1:5268)
- call Function5518
- jp Function500d
+Movement_show_emote:
+ call SpawnEmote
+ jp ContinueReadingMovement
-Function526e: ; 526e (1:526e)
- call Function54e6
- jp Function500d
+Movement_step_shake:
+; parameters:
+; displacement (DecimalParam)
-Function5274: ; 5274 (1:5274)
- call Function5006
- call Function5504
- jp Function500d
+ call JumpMovementPointer
+ call ShakeScreen
+ jp ContinueReadingMovement
-Function527d: ; 527d (1:527d)
- ld a, $0
- jr asm_528d
+Movement_turn_head_down:
+ ld a, OW_DOWN
+ jr TurnHead
-Function5281: ; 5281 (1:5281)
- ld a, $4
- jr asm_528d
+Movement_turn_head_up:
+ ld a, OW_UP
+ jr TurnHead
-Function5285: ; 5285 (1:5285)
- ld a, $8
- jr asm_528d
+Movement_turn_head_left:
+ ld a, OW_LEFT
+ jr TurnHead
-Function5289: ; 5289 (1:5289)
- ld a, $c
- jr asm_528d
+Movement_turn_head_right:
+ ld a, OW_RIGHT
+ jr TurnHead
-asm_528d:
- ld hl, $8
+TurnHead:
+ ld hl, OBJECT_FACING
add hl, bc
ld [hl], a
- ld hl, $b
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $1
- ld hl, $7
+ ld [hl], OBJECT_ACTION_STAND
+
+ ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
-Function529f: ; 529f (1:529f)
- ld a, $0
- jp Function53b1
+Movement_slow_step_down:
+ ld a, STEP_SLOW << 2 | DOWN
+ jp NormalStep
-Function52a4: ; 52a4 (1:52a4)
- ld a, $1
- jp Function53b1
+Movement_slow_step_up:
+ ld a, STEP_SLOW << 2 | UP
+ jp NormalStep
-Function52a9: ; 52a9 (1:52a9)
- ld a, $2
- jp Function53b1
+Movement_slow_step_left:
+ ld a, STEP_SLOW << 2 | LEFT
+ jp NormalStep
-Function52ae: ; 52ae (1:52ae)
- ld a, $3
- jp Function53b1
+Movement_slow_step_right:
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp NormalStep
-Function52b3: ; 52b3 (1:52b3)
- ld a, $4
- jp Function53b1
+Movement_step_down:
+ ld a, STEP_WALK << 2 | DOWN
+ jp NormalStep
-Function52b8: ; 52b8 (1:52b8)
- ld a, $5
- jp Function53b1
+Movement_step_up:
+ ld a, STEP_WALK << 2 | UP
+ jp NormalStep
-Function52bd: ; 52bd (1:52bd)
- ld a, $6
- jp Function53b1
+Movement_step_left:
+ ld a, STEP_WALK << 2 | LEFT
+ jp NormalStep
-Function52c2: ; 52c2 (1:52c2)
- ld a, $7
- jp Function53b1
+Movement_step_right:
+ ld a, STEP_WALK << 2 | RIGHT
+ jp NormalStep
-Function52c7: ; 52c7 (1:52c7)
- ld a, $8
- jp Function53b1
+Movement_big_step_down:
+ ld a, STEP_BIKE << 2 | DOWN
+ jp NormalStep
-Function52cc: ; 52cc (1:52cc)
- ld a, $9
- jp Function53b1
+Movement_big_step_up:
+ ld a, STEP_BIKE << 2 | UP
+ jp NormalStep
-Function52d1: ; 52d1 (1:52d1)
- ld a, $a
- jp Function53b1
+Movement_big_step_left:
+ ld a, STEP_BIKE << 2 | LEFT
+ jp NormalStep
-Function52d6: ; 52d6 (1:52d6)
- ld a, $b
- jp Function53b1
+Movement_big_step_right:
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp NormalStep
-Function52db: ; 52db (1:52db)
- ld a, $0
- jp Function53e5
+Movement_turn_away_down:
+ ld a, STEP_SLOW << 2 | DOWN
+ jp TurningStep
-Function52e0: ; 52e0 (1:52e0)
- ld a, $1
- jp Function53e5
+Movement_turn_away_up:
+ ld a, STEP_SLOW << 2 | UP
+ jp TurningStep
-Function52e5: ; 52e5 (1:52e5)
- ld a, $2
- jp Function53e5
+Movement_turn_away_left:
+ ld a, STEP_SLOW << 2 | LEFT
+ jp TurningStep
-Function52ea: ; 52ea (1:52ea)
- ld a, $3
- jp Function53e5
+Movement_turn_away_right:
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp TurningStep
-Function52ef: ; 52ef (1:52ef)
- ld a, $4
- jp Function53e5
+Movement_turn_in_down:
+ ld a, STEP_WALK << 2 | DOWN
+ jp TurningStep
-Function52f4: ; 52f4 (1:52f4)
- ld a, $5
- jp Function53e5
+Movement_turn_in_up:
+ ld a, STEP_WALK << 2 | UP
+ jp TurningStep
-Function52f9: ; 52f9 (1:52f9)
- ld a, $6
- jp Function53e5
+Movement_turn_in_left:
+ ld a, STEP_WALK << 2 | LEFT
+ jp TurningStep
-Function52fe: ; 52fe (1:52fe)
- ld a, $7
- jp Function53e5
+Movement_turn_in_right:
+ ld a, STEP_WALK << 2 | RIGHT
+ jp TurningStep
-Function5303: ; 5303 (1:5303)
- ld a, $8
- jp Function53e5
+Movement_turn_waterfall_down:
+ ld a, STEP_BIKE << 2 | DOWN
+ jp TurningStep
-Function5308: ; 5308 (1:5308)
- ld a, $9
- jp Function53e5
+Movement_turn_waterfall_up:
+ ld a, STEP_BIKE << 2 | UP
+ jp TurningStep
-Function530d: ; 530d (1:530d)
- ld a, $a
- jp Function53e5
+Movement_turn_waterfall_left:
+ ld a, STEP_BIKE << 2 | LEFT
+ jp TurningStep
-Function5312: ; 5312 (1:5312)
- ld a, $b
- jp Function53e5
+Movement_turn_waterfall_right:
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp TurningStep
-Function5317: ; 5317 (1:5317)
- ld a, $0
- jp Function5407
+Movement_slow_slide_step_down:
+ ld a, STEP_SLOW << 2 | DOWN
+ jp SlideStep
-Function531c: ; 531c (1:531c)
- ld a, $1
- jp Function5407
+Movement_slow_slide_step_up:
+ ld a, STEP_SLOW << 2 | UP
+ jp SlideStep
-Function5321: ; 5321 (1:5321)
- ld a, $2
- jp Function5407
+Movement_slow_slide_step_left:
+ ld a, STEP_SLOW << 2 | LEFT
+ jp SlideStep
-Function5326: ; 5326 (1:5326)
- ld a, $3
- jp Function5407
+Movement_slow_slide_step_right:
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp SlideStep
-Function532b: ; 532b (1:532b)
- ld a, $4
- jp Function5407
+Movement_slide_step_down:
+ ld a, STEP_WALK << 2 | DOWN
+ jp SlideStep
-Function5330: ; 5330 (1:5330)
- ld a, $5
- jp Function5407
+Movement_slide_step_up:
+ ld a, STEP_WALK << 2 | UP
+ jp SlideStep
-Function5335: ; 5335 (1:5335)
- ld a, $6
- jp Function5407
+Movement_slide_step_left:
+ ld a, STEP_WALK << 2 | LEFT
+ jp SlideStep
-Function533a: ; 533a (1:533a)
- ld a, $7
- jp Function5407
+Movement_slide_step_right:
+ ld a, STEP_WALK << 2 | RIGHT
+ jp SlideStep
-Function533f: ; 533f (1:533f)
- ld a, $8
- jp Function5407
+Movement_fast_slide_step_down:
+ ld a, STEP_BIKE << 2 | DOWN
+ jp SlideStep
-Function5344: ; 5344 (1:5344)
- ld a, $9
- jp Function5407
+Movement_fast_slide_step_up:
+ ld a, STEP_BIKE << 2 | UP
+ jp SlideStep
-Function5349: ; 5349 (1:5349)
- ld a, $a
- jp Function5407
+Movement_fast_slide_step_left:
+ ld a, STEP_BIKE << 2 | LEFT
+ jp SlideStep
-Function534e: ; 534e (1:534e)
- ld a, $b
- jp Function5407
+Movement_fast_slide_step_right:
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp SlideStep
-Function5353: ; 5353 (1:5353)
- ld a, $0
- jp Function5429
+Movement_slow_jump_step_down:
+ ld a, STEP_SLOW << 2 | DOWN
+ jp JumpStep
-Function5358: ; 5358 (1:5358)
- ld a, $1
- jp Function5429
+Movement_slow_jump_step_up:
+ ld a, STEP_SLOW << 2 | UP
+ jp JumpStep
-Function535d: ; 535d (1:535d)
- ld a, $2
- jp Function5429
+Movement_slow_jump_step_left:
+ ld a, STEP_SLOW << 2 | LEFT
+ jp JumpStep
-Function5362: ; 5362 (1:5362)
- ld a, $3
- jp Function5429
+Movement_slow_jump_step_right:
+ ld a, STEP_SLOW << 2 | RIGHT
+ jp JumpStep
-Function5367: ; 5367 (1:5367)
- ld a, $4
- jp Function5429
+Movement_jump_step_down:
+ ld a, STEP_WALK << 2 | DOWN
+ jp JumpStep
-Function536c: ; 536c (1:536c)
- ld a, $5
- jp Function5429
+Movement_jump_step_up:
+ ld a, STEP_WALK << 2 | UP
+ jp JumpStep
-Function5371: ; 5371 (1:5371)
- ld a, $6
- jp Function5429
+Movement_jump_step_left:
+ ld a, STEP_WALK << 2 | LEFT
+ jp JumpStep
-Function5376: ; 5376 (1:5376)
- ld a, $7
- jp Function5429
+Movement_jump_step_right:
+ ld a, STEP_WALK << 2 | RIGHT
+ jp JumpStep
-Function537b: ; 537b (1:537b)
- ld a, $8
- jp Function5429
+Movement_fast_jump_step_down:
+ ld a, STEP_BIKE << 2 | DOWN
+ jp JumpStep
-Function5380: ; 5380 (1:5380)
- ld a, $9
- jp Function5429
+Movement_fast_jump_step_up:
+ ld a, STEP_BIKE << 2 | UP
+ jp JumpStep
-Function5385: ; 5385 (1:5385)
- ld a, $a
- jp Function5429
+Movement_fast_jump_step_left:
+ ld a, STEP_BIKE << 2 | LEFT
+ jp JumpStep
-Function538a: ; 538a (1:538a)
- ld a, $b
- jp Function5429
+Movement_fast_jump_step_right:
+ ld a, STEP_BIKE << 2 | RIGHT
+ jp JumpStep
-Function538f: ; 538f (1:538f)
- ld a, $0
- jr asm_539f
+Movement_turn_step_down:
+ ld a, OW_DOWN
+ jr TurnStep
-Function5393: ; 5393 (1:5393)
- ld a, $4
- jr asm_539f
+Movement_turn_step_up:
+ ld a, OW_UP
+ jr TurnStep
-Function5397: ; 5397 (1:5397)
- ld a, $8
- jr asm_539f
+Movement_turn_step_left:
+ ld a, OW_LEFT
+ jr TurnStep
-Function539b: ; 539b (1:539b)
- ld a, $c
- jr asm_539f
+Movement_turn_step_right:
+ ld a, OW_RIGHT
+ jr TurnStep
-asm_539f:
- ld hl, $1d
+TurnStep:
+ ld hl, OBJECT_1D ; new facing
add hl, bc
ld [hl], a
- ld hl, $b
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $2
- ld hl, $9
+ ld [hl], OBJECT_ACTION_STEP
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $a
+ ld [hl], STEP_TYPE_HALF_STEP
ret
-Function53b1: ; 53b1 (1:53b1)
+NormalStep:
call InitStep
- call UpdateGrassPriority
- ld hl, $b
+ call UpdateTallGrassFlags
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $2
- ld hl, $e
+ ld [hl], OBJECT_ACTION_STEP
+
+ ld hl, OBJECT_NEXT_TILE
add hl, bc
ld a, [hl]
call CheckSuperTallGrassTile
- jr z, .asm_53cc
+ jr z, .shake_grass
+
call CheckGrassTile
- jr c, .asm_53cf
-.asm_53cc
- call Function54f5
-.asm_53cf
+ jr c, .skip_grass
+
+.shake_grass
+ call ShakeGrass
+
+.skip_grass
ld hl, wCenteredObject
- ldh a, [hConnectionStripLength]
+ ldh a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_53de
- ld hl, $9
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $2
+ ld [hl], STEP_TYPE_NPC_WALK
ret
-.asm_53de
- ld hl, $9
+.player
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $6
+ ld [hl], STEP_TYPE_PLAYER_WALK
ret
-Function53e5: ; 53e5 (1:53e5)
+TurningStep:
call InitStep
- call UpdateGrassPriority
- ld hl, $b
+ call UpdateTallGrassFlags
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $4
+ ld [hl], OBJECT_ACTION_SPIN
+
ld hl, wCenteredObject
ldh a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_5400
- ld hl, $9
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $2
+ ld [hl], STEP_TYPE_NPC_WALK
ret
-.asm_5400
- ld hl, $9
+.player
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $6
+ ld [hl], STEP_TYPE_PLAYER_WALK
ret
-Function5407: ; 5407 (1:5407)
+SlideStep:
call InitStep
- call UpdateGrassPriority
- ld hl, $b
+ call UpdateTallGrassFlags
+
+ ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], $1
+ ld [hl], OBJECT_ACTION_STAND
+
ld hl, wCenteredObject
- ldh a, [hConnectionStripLength]
+ ldh a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_5422
- ld hl, $9
+ 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
+
+JumpStep:
+ call InitStep
+ ld hl, OBJECT_1F
+ add hl, bc
+ ld [hl], $0
+
+ ld hl, OBJECT_FLAGS2
+ add hl, bc
+ res OVERHEAD_F, [hl]
+
+ ld hl, OBJECT_ACTION
+ add hl, bc
+ ld [hl], OBJECT_ACTION_STEP
+ call SpawnShadow
+ ld hl, wCenteredObject
+ ldh a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .player
+
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $2
+ ld [hl], STEP_TYPE_NPC_JUMP
ret
-.asm_5422
- ld hl, $9
+.player
+ ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], $6
+ ld [hl], STEP_TYPE_PLAYER_JUMP
ret