; sm_param[0]: frames to walk for
anim_walk_north:
inc bc ; bc = actor y
- ld d, 0xFF ; walk back
+ ld d, 0xFF & 0 - ANIM_WALK_SPEED ; walk back
jp anim_walk_generic
anim_walk_south:
inc bc ; bc = actor y
- ld d, 1 ; walk forward
+ ld d, ANIM_WALK_SPEED ; walk forward
jp anim_walk_generic
anim_walk_east:
inc bc
inc bc ; bc = actor x
- ld d, 1 ; walk forward
+ ld d, ANIM_WALK_SPEED ; walk forward
jp anim_walk_generic
anim_walk_west:
inc bc
inc bc ; bc = actor x
- ld d, 0xFF ; walk back
+ ld d, 0xFF & 0 - ANIM_WALK_SPEED ; walk back
jp anim_walk_generic
; generic version of anim walk
#define ANIM_STEP_UP 0xFF
#define ANIM_STEP_RIGHT 1
-#define ANIM_PLAYER_WALK_FRAMES 16
+#define ANIM_WALK_SPEED 1
+#define ANIM_TILE_SIZE 16
+#define ANIM_PLAYER_WALK_FRAMES (ANIM_TILE_SIZE / ANIM_WALK_SPEED)
; actor type enum
.se 0
ld [hl], a ; set param[0]
; perform collision check
- ld d, ANIM_PLAYER_WALK_FRAMES
+ ld d, ANIM_TILE_SIZE
ld e, 0
call player_collision_check
; perform collision check
- ld d, 0xFF & 0 - ANIM_PLAYER_WALK_FRAMES
+ ld d, 0xFF & 0 - ANIM_TILE_SIZE
ld e, 0
call player_collision_check
; perform collision check
ld d, 0
- ld e, 0xFF & 0 - ANIM_PLAYER_WALK_FRAMES
+ ld e, 0xFF & 0 - ANIM_TILE_SIZE
call player_collision_check
ret
; perform collision check
ld d, 0
- ld e, ANIM_PLAYER_WALK_FRAMES
+ ld e, ANIM_TILE_SIZE
call player_collision_check
ret