.def int CURSOR_TILE = 0x04
#define CURSOR_MOVE_TIMER TILE_SIZE
-#define CURSOR_MOVE_SPEED 1
+#define CURSOR_MOVE_SPEED 8
; init the player
player_init:
cursor_move:
push af
- ld hl, cursor
- ; hl = cursor_y
-
- ld b, [hl]
- ld a, [cursor_move_y]
- add a, b
- ld [cursor_y], a
-
- ; hl = cursor_x
- inc hl
- ld b, [hl]
- ld a, [cursor_move_x]
- add a, b
- ld [cursor_x], a
- inc hl ; hl = cursor_move_timer
-
- ld a, [hl]
+
+
+ ld a, [cursor_move_timer]
dec a
- ld [hl], a
+ ld [cursor_move_timer], a
+ cp a, 0
+ jr nz, @done REL
+
+ ; if timer is 0 apply movement
+ ; and jump to next tile
+ ld a, [cursor_y]
+ ld b, a
+
+ ld a, [cursor_move_y]
+ add a, b
+ ld [cursor_y], a
+ ld a, [cursor_x]
+ ld b, a
+
+ ld a, [cursor_move_x]
+ add a, b
+ ld [cursor_x], a
+
+@done:
pop af
ret
- ; aborts cursor move
- ; uses: a
-cursor_abort_move:
- xor a, a
- ld [cursor_move_timer], a
- ret