2008-12-09 00:58:40 +01:00
|
|
|
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
|
2008-12-16 19:21:14 +01:00
|
|
|
mov edi,0x005080d0 ; color of frames RRGGBB
|
|
|
|
int 0x40
|
|
|
|
|
|
|
|
mov eax,71
|
|
|
|
mov ebx,1
|
|
|
|
mov ecx,header
|
2008-12-09 00:58:40 +01:00
|
|
|
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:
|
2008-12-16 19:21:14 +01:00
|
|
|
ret
|
|
|
|
|
|
|
|
header db 'Invaders',0
|