kolibrios/programs/games/invaders/invaders_kolibri.inc

108 lines
2.3 KiB
PHP
Raw Normal View History

use32
org 0x0
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd IM_END ; size of image
dd I_END+1000 ; memory for app
dd I_END+1000 ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
KEY_RIGHT equ 179
KEY_LEFT equ 176
KEY_UP equ 178
KEY_P equ 'p'
KEY_DOWN equ 177
KEY_ENTER equ 13
KEY_ESC equ 27
START:
mov [drawroutine], draw_picture_kolibri
call draw_window
jmp decodegif
draw_picture_kolibri:
mov eax,7 ; Draw buffer to screen
mov ebx,vscreen+8
mov ecx,SCREEN_X*65536+SCREEN_Y
mov edx,SCREEN_X_POS*65536+SCREEN_Y_POS
int 0x40
ret
waitandgetkey:
mov eax, 5
mov ebx, 1
int 0x40
mov eax, 11 ; check for event (no wait)
int 0x40
cmp eax,1 ; redraw request ?
je red
cmp eax,2 ; key in buffer ?
je key
cmp eax,3 ; button in buffer ?
je button
xor ax,ax
ret
red: ; redraw
call draw_window
jmp waitandgetkey
key: ; key
mov eax,2 ; read it
int 0x40
mov al, ah
ret
button: ; button
mov eax,17 ; get id
int 0x40
cmp ah,1 ; button id=1 ?
jne noclose
exit:
mov eax,-1 ; close this program
int 0x40
noclose:
jmp waitandgetkey
draw_window:
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw
int 0x40
; DRAW WINDOW
mov eax,0 ; function 0 : define and draw window
mov ebx,WINDOW_X*65536+10+SCREEN_X ; [x start] *65536 + [x size]
mov ecx,WINDOW_Y*65536+30+SCREEN_Y ; [y start] *65536 + [y size]
mov edx,0x04000000 ; color of work area RRGGBB,8->color gl
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl
mov edi,0x005080d0 ; color of frames RRGGBB
int 0x40
call [drawroutine]
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
int 0x40
ret
load_highscores:
ret
save_highscores:
ret