%include "intr.inc"
%include "dbglog.inc"
+PLAYER_MOVE_SPEED equ 5
+
; this is placed at the beginning of our binary at 1mb (see game.ld)
; and it's what gets executed directly by the boot loader
section .startup
jmp main_loop
update:
+ mov eax, [ship_y]
+
check_key SC_W
jnc .not_w
- dec dword [ship_y]
+ sub eax, PLAYER_MOVE_SPEED
+ jns .not_w
+ xor eax, eax
.not_w: check_key SC_S
jnc .not_s
- inc dword [ship_y]
-.not_s: check_key SC_A
+ add eax, PLAYER_MOVE_SPEED
+ cmp eax, 200 << 8
+ jb .not_s
+ mov eax, 200 << 8
+.not_s:
+ mov [ship_y], eax
+ mov eax, [ship_x]
+
+ check_key SC_A
jnc .not_a
- dec dword [ship_x]
+ sub eax, PLAYER_MOVE_SPEED
+ jns .not_a
+ xor eax, eax
.not_a: check_key SC_D
jnc .not_d
- inc dword [ship_x]
+ add eax, PLAYER_MOVE_SPEED
+ cmp eax, 320 << 8
+ jb .not_d
+ mov eax, 320 << 8
.not_d:
+ mov [ship_x], eax
ret
section .data