.org 0 .equ INT_VECTOR 0xff00 call init call init_game game_loop: halt call entities_erase call stars_update call entities_update call entities_draw jmp game_loop init: ; setup an int handler so we ; can use the frame int to sync ld a, >INT_VECTOR ld x, int_handler ld [a : x], b ; enable interrupts cif ret init_game: halt ; set player initial coordinates ld x, player_coord ld y, 56 ld [a : x], y inc x bo inc a ld y, 104 ld [a : x], y ; erase the screen ld b, 0 ld a, 0xbf ld x, 0 ld y, 0x40 fill_loop: ld [a : x], b inc x bno jmp fill_loop inc a dec y bnz jmp fill_loop call entities_draw ret int_handler: iret .include "random.asm" .include "starfield.asm" .include "entities.asm" .include "player.asm" ; ; entity data ; entities: ; type .db ET_PLAYER ; x, y player_coord: .db 0, 0 ; frame .db 0 .dw player_sprite .dw player_update ; end of list .db ET_END ; sprite data player_sprite: .incpng "assets/player.png" ; starfield data stars: ; video addr, speed, color .dw 0xc361 .db 1, 15 .dw 0xc204 .db 1, 6 .dw 0xcdf9 .db 1, 15 .dw 0xdb87 .db 1, 3 .dw 0xd242 .db 1, 15 .dw 0xdeea .db 1, 6 .dw 0xe7af .db 1, 15 .dw 0xed68 .db 1, 3 .dw 0xf812 .db 1, 15 .dw 0xfbca .db 1, 13 .dw 0xc361 .db 2, 8 .dw 0xc204 .db 2, 9 .dw 0xcdf9 .db 3, 7 .dw 0xdb87 .db 3, 4 .dw 0xd242 .db 2, 8 .dw 0xdeea .db 3, 9 .dw 0xe7af .db 3, 6 .dw 0xed68 .db 2, 9 .dw 0xf812 .db 3, 14 .dw 0xfbca .db 2, 3 ; end of list .dw 0xffff