input sortof-works
authorJohn Tsiombikas <nuclear@member.fsf.org>
Sun, 13 Oct 2019 15:10:06 +0000 (18:10 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Sun, 13 Oct 2019 15:10:06 +0000 (18:10 +0300)
src/keyb.inc
src/main.asm

index c022e43..6ecb5d9 100644 (file)
@@ -2,3 +2,18 @@
 
        extern kb_init
        extern keystate
+
+SC_ESC equ 1
+SC_W   equ 17
+SC_ENTER equ 28
+SC_A   equ 30
+SC_S   equ 31
+SC_D   equ 32
+SC_SPACE equ 57
+
+       ; carry set if key is pressed
+%macro check_key 1
+       mov ebx, keystate + %1
+       mov al, [ebx]
+       add al, 0xff
+%endmacro
index ce5e5ad..c3ab902 100644 (file)
@@ -26,8 +26,12 @@ main_loop:
        call clear
 
        push dword 0
-       push dword [ship_y]
-       push dword [ship_x]
+       mov eax, [ship_y]
+       shr eax, 8
+       push eax
+       mov eax, [ship_x]
+       shr eax, 8
+       push eax
        push dword FRAMEBUF_ADDR
        call sprsheet
        add esp, 16
@@ -37,9 +41,22 @@ main_loop:
        jmp main_loop
 
 update:
+       check_key SC_W
+       jnc .not_w
+       dec dword [ship_y]
+.not_w:        check_key SC_S
+       jnc .not_s
+       inc dword [ship_y]
+.not_s: check_key SC_A
+       jnc .not_a
+       dec dword [ship_x]
+.not_a: check_key SC_D
+       jnc .not_d
+       inc dword [ship_x]
+.not_d:
        ret
 
        section .data
        align 4
-ship_x: dd 160
-ship_y: dd 100
+ship_x: dd 160 << 8
+ship_y: dd 100 << 8