X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=ld45_start_nothing;a=blobdiff_plain;f=src%2Fmain.asm;h=c3ab902519ee6440675a9b4e3d1eb2e380e06a99;hp=ade0e527bf96bb52ce27d23e1356b976793ee55e;hb=3ec4a3e6d73d15500e48c87f31f2193603e94d56;hpb=43024162f96501c111a0fb7ff6b14f39d478c1a3 diff --git a/src/main.asm b/src/main.asm index ade0e52..c3ab902 100644 --- a/src/main.asm +++ b/src/main.asm @@ -1,16 +1,62 @@ ; 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" - mov ax, 13h - int 10h + ; 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 - mov ax, 0a000h - mov es, ax - xor di, di - mov ax, 0x404 - mov cx, 32000 - rep stosw + ; start of main + section .text +main: + call init_intr + call kb_init + call init_gfx - cli - hlt + 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 + +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 << 8 +ship_y: dd 100 << 8