; vi:filetype=nasm ts=8 sts=8 sw=8:
- bits 16
- org 7e00h ; that's where our boot loader puts us (see src/boot/boot.asm)
+ bits 32
+%include "gfx.inc"
+%include "keyb.inc"
+%include "intr.inc"
+%include "dbglog.inc"
+ ; 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
+
+ ; start of main
+ section .text
+main:
+ call init_intr
+ call kb_init
call init_gfx
+ dbglog `hello\n`
+
+ sti
main_loop:
+ call update
+
+ call clear
+
+ push dword 0
+ 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
+
call wait_vsync
call swap_buffers
jmp main_loop
-%include "gfx.asm"
+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
-%include "data.asm"
+ section .data
+ align 4
+ship_x: dd 160 << 8
+ship_y: dd 100 << 8