X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=ld45_start_nothing;a=blobdiff_plain;f=src%2Fmain.asm;h=a5e075460c63026b209c03d1df6fd2bb6e8f02c3;hp=243ff0da6e8f4ba874059d8e4eb2349710bb0c8e;hb=033d820931e5930051b9df6a0c4a8183aa9299ee;hpb=78cf90d60c7cdbfcb8bc1d3e3d03a577d1b70f7b diff --git a/src/main.asm b/src/main.asm index 243ff0d..a5e0754 100644 --- a/src/main.asm +++ b/src/main.asm @@ -1,10 +1,11 @@ ; vi:filetype=nasm ts=8 sts=8 sw=8: bits 32 - extern init_gfx - extern clear - extern slow_sprite - extern wait_vsync - extern swap_buffers +%include "gfx.inc" +%include "keyb.inc" +%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 @@ -14,17 +15,67 @@ ; 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 100 - push dword 160 push dword 0 - call slow_sprite + 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 + +update: + mov eax, [ship_y] + + check_key SC_W + jnc .not_w + sub eax, PLAYER_MOVE_SPEED + jns .not_w + xor eax, eax +.not_w: check_key SC_S + jnc .not_s + 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 + sub eax, PLAYER_MOVE_SPEED + jns .not_a + xor eax, eax +.not_a: check_key SC_D + jnc .not_d + 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 + align 4 +ship_x: dd 160 << 8 +ship_y: dd 100 << 8