forked from KolibriOS/kolibrios
*correct pong (the previous one was duplicate of pong3)
*small fixes in icon_new *title with fn0 in copyr *fixed chess git-svn-id: svn://kolibrios.org@503 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5d1134a0a8
commit
3a9217ff57
@ -182,18 +182,12 @@ draw_window:
|
|||||||
; DRAW WINDOW
|
; DRAW WINDOW
|
||||||
xor eax,eax ; function 0 : define and draw window
|
xor eax,eax ; function 0 : define and draw window
|
||||||
mov ebx,160*65536+415 ; [x start] *65536 + [x size]
|
mov ebx,160*65536+415 ; [x start] *65536 + [x size]
|
||||||
mov ecx,160*65536+90 ; [y start] *65536 + [y size]
|
mov ecx,160*65536+90 ; [y start] *65536 + [y size]
|
||||||
mov edx,0x03DDDDDD ; color of work area RRGGBB
|
mov edx,0x13DDDDDD ; color of work area RRGGBB
|
||||||
mcall
|
mov edi,labelt ; WINDOW LABEL
|
||||||
|
|
||||||
; WINDOW LABEL
|
|
||||||
mov eax,4 ; function 4 : write text to window
|
|
||||||
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
|
|
||||||
mov ecx,0x10ffffff ; color of text RRGGBB
|
|
||||||
mov edx,labelt ; pointer to text beginning
|
|
||||||
mov esi,labellen-labelt ; text length
|
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
|
|
||||||
mov eax,8
|
mov eax,8
|
||||||
mov ebx,105*65536+290
|
mov ebx,105*65536+290
|
||||||
mov ecx,33*65536+12
|
mov ecx,33*65536+12
|
||||||
@ -220,8 +214,8 @@ draw_window:
|
|||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
mov edx,text
|
mov edx,text
|
||||||
mov esi,62
|
mov esi,62
|
||||||
newline:
|
|
||||||
mov eax,4
|
mov eax,4
|
||||||
|
newline:
|
||||||
mcall
|
mcall
|
||||||
add ebx,16
|
add ebx,16
|
||||||
add edx,62
|
add edx,62
|
||||||
@ -248,9 +242,9 @@ text:
|
|||||||
db ' Š“„€: | <20> ¢«îè¨ …¢£¥¨©, waptap@mail.ru '
|
db ' Š“„€: | <20> ¢«îè¨ …¢£¥¨©, waptap@mail.ru '
|
||||||
db ' '
|
db ' '
|
||||||
db 'x' ; <- END MARKER, DONT DELETE
|
db 'x' ; <- END MARKER, DONT DELETE
|
||||||
|
|
||||||
labelt:
|
labelt:
|
||||||
db 'ŠŽ<C5A0>ˆ<EFBFBD>Ž‚€<E2809A>ˆ… ”€‰‹€'
|
db 'ŠŽŹ<C5BD><C5B9>Ž‚€Ť<E282AC>… ”€‰‹€',0
|
||||||
labellen:
|
|
||||||
|
|
||||||
errors:
|
errors:
|
||||||
db "ä ©« ᪮¯¨à®¢ ãá¯¥è® "
|
db "ä ©« ᪮¯¨à®¢ ãá¯¥è® "
|
||||||
|
@ -13,8 +13,8 @@ use32
|
|||||||
dd 0x01 ; header version
|
dd 0x01 ; header version
|
||||||
dd START ; entry point
|
dd START ; entry point
|
||||||
dd I_END ; image size
|
dd I_END ; image size
|
||||||
dd I_END+0x10000 ; required memory
|
dd 0x100000 ; required memory
|
||||||
dd I_END+0x10000 ; esp
|
dd 0x100000 ; esp
|
||||||
dd 0x0 , 0x0 ; I_Param , I_Path
|
dd 0x0 , 0x0 ; I_Param , I_Path
|
||||||
|
|
||||||
include 'lang.inc'
|
include 'lang.inc'
|
||||||
@ -31,7 +31,7 @@ file_info:
|
|||||||
dd 0
|
dd 0
|
||||||
dd -1
|
dd -1
|
||||||
dd 0x4000
|
dd 0x4000
|
||||||
db '/rd/1/chess.bmp',0
|
db '/rd/1/network/chess.bmp',0
|
||||||
|
|
||||||
pawn_color:
|
pawn_color:
|
||||||
|
|
||||||
@ -61,9 +61,7 @@ text equ texts+80*32*4
|
|||||||
|
|
||||||
START: ; start of execution
|
START: ; start of execution
|
||||||
|
|
||||||
; mov eax,58
|
|
||||||
mov eax,70
|
mov eax,70
|
||||||
; mov ebx,file_info
|
|
||||||
mov ebx,file_info
|
mov ebx,file_info
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
|
BIN
programs/games/chess/trunk/chess.bmp
Normal file
BIN
programs/games/chess/trunk/chess.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.6 KiB |
@ -1,624 +0,0 @@
|
|||||||
lang equ ru
|
|
||||||
|
|
||||||
;
|
|
||||||
; Assembler
|
|
||||||
; SMALL
|
|
||||||
; CODE
|
|
||||||
; Graphics
|
|
||||||
; Libary
|
|
||||||
;
|
|
||||||
; Ver 0.10 By Pavlushin Evgeni (RUSSIA)
|
|
||||||
; www.waptap@mail.ru
|
|
||||||
|
|
||||||
;InfoList
|
|
||||||
;0.01 LoadImage
|
|
||||||
;0.02 SetBmp
|
|
||||||
;0.03 Bmptoimg, Setimg ~01.03.2004
|
|
||||||
;0.04 Bug deleted, copyimg ~03.05.2004
|
|
||||||
;0.05 fullimg, collimg ~05.05.2004
|
|
||||||
;0.06 getimg ~09.05.2004
|
|
||||||
;0.07 convbmp ~13.05.2004
|
|
||||||
;0.08 fps ~14.05.2004
|
|
||||||
;0.09 drawfbox ~03.06.2004
|
|
||||||
;0.10 all macros optimized by halyavin, add at ~07.06.2004
|
|
||||||
|
|
||||||
;DrawBox
|
|
||||||
macro drawfbox x,y,xs,ys,color
|
|
||||||
{
|
|
||||||
mov ecx,y
|
|
||||||
mov ebx,x
|
|
||||||
shl ebx,16
|
|
||||||
add ebx,xs
|
|
||||||
shl ecx,16
|
|
||||||
add ecx,ys
|
|
||||||
mov edx,color
|
|
||||||
mov eax,13
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; FPS - Set Frame Per Second Display
|
|
||||||
fps_show_frequency=40
|
|
||||||
macro fps x,y,color,delcolor
|
|
||||||
{
|
|
||||||
local spdat,savetime,new_time,fps,fps_cntr,out_fps,new_time,ttt
|
|
||||||
local no_out_fps
|
|
||||||
jmp spdat
|
|
||||||
savetime dd 0
|
|
||||||
fps_cntr dd 0
|
|
||||||
fps dd 0
|
|
||||||
ttt dd 0
|
|
||||||
spdat:
|
|
||||||
get_time:
|
|
||||||
mov eax,3
|
|
||||||
mcall
|
|
||||||
cmp eax,[savetime]
|
|
||||||
jne new_time
|
|
||||||
inc [fps_cntr]
|
|
||||||
cmp dword [ttt],0
|
|
||||||
je out_fps
|
|
||||||
dec dword [ttt]
|
|
||||||
jmp no_out_fps
|
|
||||||
new_time:
|
|
||||||
mov [savetime],eax
|
|
||||||
mov ebx,[fps_cntr]
|
|
||||||
mov [fps],ebx
|
|
||||||
mov [fps_cntr],0
|
|
||||||
out_fps:
|
|
||||||
if ~(delcolor eq )
|
|
||||||
mov ebx,x*65536+30
|
|
||||||
mov ecx,y*65536+7
|
|
||||||
mov edx,delcolor
|
|
||||||
mov eax,13
|
|
||||||
mcall
|
|
||||||
end if
|
|
||||||
mov dword [ttt],fps_show_frequency
|
|
||||||
mov eax,47
|
|
||||||
mov ebx,5*65536
|
|
||||||
; mov bl,0
|
|
||||||
mov edx,x*65536+y
|
|
||||||
mov esi,color
|
|
||||||
mov ecx,[fps]
|
|
||||||
mcall
|
|
||||||
no_out_fps:
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; COLLIMG - Collusion image's
|
|
||||||
_1dbounce_count=0;
|
|
||||||
macro collimg img1_off,x1,y1,img2_off,x2,y2,otv
|
|
||||||
{
|
|
||||||
local bounce,exit,anot,bc,nbc
|
|
||||||
mov esi,[img1_off] ;xs1
|
|
||||||
mov edi,[img2_off] ;ys2
|
|
||||||
mov eax,x1 ;
|
|
||||||
mov ebx,x2 ;
|
|
||||||
call _1dbounce
|
|
||||||
mov edx,ecx
|
|
||||||
mov esi,[img1_off+4] ;ys1
|
|
||||||
mov edi,[img2_off+4] ;ys2
|
|
||||||
mov eax,y1 ;
|
|
||||||
mov ebx,y2 ;
|
|
||||||
call _1dbounce
|
|
||||||
add edx,ecx
|
|
||||||
cmp edx,2
|
|
||||||
je bounce
|
|
||||||
mov otv,0
|
|
||||||
jmp exit
|
|
||||||
_1dbounce_count=_1dbounce_count+1
|
|
||||||
if (_1dbounce_count = 1)
|
|
||||||
_1dbounce:
|
|
||||||
cmp ebx,eax
|
|
||||||
jnae anot
|
|
||||||
add eax,esi
|
|
||||||
cmp eax,ebx
|
|
||||||
jna nbc
|
|
||||||
jmp bc
|
|
||||||
anot:
|
|
||||||
add ebx,edi
|
|
||||||
cmp ebx,eax
|
|
||||||
jna nbc
|
|
||||||
bc:
|
|
||||||
mov ecx,1
|
|
||||||
ret
|
|
||||||
nbc:
|
|
||||||
mov ecx,0
|
|
||||||
ret
|
|
||||||
end if
|
|
||||||
bounce:
|
|
||||||
mov otv,1
|
|
||||||
exit:
|
|
||||||
}
|
|
||||||
|
|
||||||
; SETBMP - Set bmp to window
|
|
||||||
; (SYNTAX) SETBMP dd xstart ,dd ystart ,BMP_offset,dd soi
|
|
||||||
; (SAMPLE) SETBMP dword [xt],dword [yt],I_END,dword [tsoi]
|
|
||||||
; SETBMP 15,10,I_END,dword [tsoi]
|
|
||||||
; ( NOTE ) SOI - Start of image
|
|
||||||
|
|
||||||
macro setbmp arg1,arg2,arg3,arg4
|
|
||||||
{
|
|
||||||
local nodi
|
|
||||||
cmp word [arg3],word 'BM'
|
|
||||||
jne nodi
|
|
||||||
mov eax,7
|
|
||||||
mov ebx,arg4 ;[soi]
|
|
||||||
mov ecx,dword [arg3+18]
|
|
||||||
shl ecx,16
|
|
||||||
add ecx,dword [arg3+22]
|
|
||||||
if (arg1 eqtype 0) & (arg2 eqtype 0)
|
|
||||||
mov edx,arg1*65536+arg2
|
|
||||||
else
|
|
||||||
mov edx,arg1
|
|
||||||
shl edx,16
|
|
||||||
add edx,arg2
|
|
||||||
end if
|
|
||||||
mcall
|
|
||||||
nodi:
|
|
||||||
}
|
|
||||||
|
|
||||||
macro setimg arg1,arg2,arg3
|
|
||||||
{
|
|
||||||
local nodi
|
|
||||||
mov eax,7
|
|
||||||
mov ebx,arg3
|
|
||||||
add ebx,8
|
|
||||||
mov ecx,dword [arg3]
|
|
||||||
shl ecx,16
|
|
||||||
add ecx,dword [arg3+4]
|
|
||||||
if (arg1 eqtype 0) & (arg2 eqtype 0)
|
|
||||||
mov edx,arg1*65536+arg2
|
|
||||||
else
|
|
||||||
mov edx,arg1
|
|
||||||
shl edx,16
|
|
||||||
add edx,arg2
|
|
||||||
end if
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
;Not optimiz
|
|
||||||
macro getimg imgsrc,x,y,xs,ys,imgdest
|
|
||||||
{
|
|
||||||
local cyc
|
|
||||||
mov eax,xs
|
|
||||||
mov dword [imgdest],eax
|
|
||||||
mov eax,ys
|
|
||||||
mov dword [imgdest+4],eax
|
|
||||||
|
|
||||||
mov eax,dword [imgsrc] ;getx size
|
|
||||||
mov edi,eax
|
|
||||||
mov ebx,y
|
|
||||||
mul ebx
|
|
||||||
add eax,x
|
|
||||||
mov ebx,3
|
|
||||||
mul ebx ;eax=offset on imsrc
|
|
||||||
|
|
||||||
mov ecx,0
|
|
||||||
mov ebx,0
|
|
||||||
mov ebp,eax
|
|
||||||
mov esi,0
|
|
||||||
|
|
||||||
add esi,8
|
|
||||||
add ebp,8
|
|
||||||
|
|
||||||
cyc:
|
|
||||||
mov al,byte [imgsrc+ebp]
|
|
||||||
mov [imgdest+esi],al
|
|
||||||
mov al,byte [imgsrc+ebp+1]
|
|
||||||
mov [imgdest+esi+1],al
|
|
||||||
mov al,byte [imgsrc+ebp+2]
|
|
||||||
mov [imgdest+esi+2],al
|
|
||||||
add esi,3
|
|
||||||
add ebp,3
|
|
||||||
inc ecx
|
|
||||||
cmp ecx,xs
|
|
||||||
jne cyc
|
|
||||||
add ebp,edi
|
|
||||||
add ebp,edi
|
|
||||||
add ebp,edi
|
|
||||||
sub ebp,xs
|
|
||||||
sub ebp,xs
|
|
||||||
sub ebp,xs
|
|
||||||
mov ecx,0
|
|
||||||
inc ebx
|
|
||||||
cmp ebx,ys
|
|
||||||
jne cyc
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
;
|
|
||||||
macro bmptoimg bmp_off,soi,img_off
|
|
||||||
{
|
|
||||||
local nodix,conv
|
|
||||||
cmp word [bmp_off],word 'BM'
|
|
||||||
jne nodix
|
|
||||||
mov eax,dword [bmp_off+18]
|
|
||||||
mov ebx,dword [bmp_off+22]
|
|
||||||
mov dword [img_off],eax
|
|
||||||
mov dword [img_off+4],ebx
|
|
||||||
mul ebx
|
|
||||||
lea ecx,[eax+2*eax]
|
|
||||||
lea edi,[img_off+8]
|
|
||||||
mov esi,dword [soi]
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
nodix:
|
|
||||||
}
|
|
||||||
|
|
||||||
macro copyimg img2_off,img1_off
|
|
||||||
{
|
|
||||||
local cop
|
|
||||||
mov eax,dword [img1_off]
|
|
||||||
mov ebx,dword [img1_off+4]
|
|
||||||
mul ebx
|
|
||||||
lea ecx,[eax+2*eax]
|
|
||||||
lea esi,[img1_off+8]
|
|
||||||
lea edi,[img2_off+8]
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
}
|
|
||||||
|
|
||||||
macro fullimg img_off,xs,ys,color
|
|
||||||
{
|
|
||||||
local cop
|
|
||||||
mov eax,xs
|
|
||||||
mov ebx,ys
|
|
||||||
mov dword [img_off],eax
|
|
||||||
mov dword [img_off+4],ebx
|
|
||||||
mul ebx
|
|
||||||
lea ebp,[eax+2*eax]
|
|
||||||
mov esi,color
|
|
||||||
if color eqtype 0
|
|
||||||
mov ecx,color/65536
|
|
||||||
else
|
|
||||||
mov ecx,esi
|
|
||||||
shr ecx,16
|
|
||||||
end if
|
|
||||||
xor edi,edi
|
|
||||||
cop:
|
|
||||||
mov word [img_off+8+edi],si
|
|
||||||
add edi,2
|
|
||||||
mov byte [img_off+8+edi],cl
|
|
||||||
inc edi
|
|
||||||
cmp edi,ebp
|
|
||||||
jne cop
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
macro convbmp bmp_load_area,bmp_soi
|
|
||||||
{
|
|
||||||
local status,bps,dwps,soi,sop,eop,eos,process,fileinfo,string,end_bmp
|
|
||||||
local converttable,noaddelem,nextbit,convert1bpp,convert4bpp,convert2
|
|
||||||
local nextelem,convertno32,nomorestring,convert1,nextstring,yespicsize
|
|
||||||
local noaddword
|
|
||||||
;local qwe,bmpfn
|
|
||||||
|
|
||||||
; convert:
|
|
||||||
movzx eax,word [bmp_load_area+28]
|
|
||||||
mul dword [bmp_load_area+18]
|
|
||||||
mov ebx,32
|
|
||||||
div ebx
|
|
||||||
test edx,edx
|
|
||||||
je noaddword
|
|
||||||
inc eax
|
|
||||||
noaddword:
|
|
||||||
mov dword [dwps],eax ;dwps-doublewords per string
|
|
||||||
shl eax,2
|
|
||||||
mov dword [bps],eax ;bps-bytes per string
|
|
||||||
|
|
||||||
cmp dword [bmp_load_area+34],0
|
|
||||||
jne yespicsize ;if picture size is defined
|
|
||||||
mul dword [bmp_load_area+22]
|
|
||||||
mov dword [bmp_load_area+34],eax
|
|
||||||
|
|
||||||
yespicsize:
|
|
||||||
mov eax,bmp_load_area
|
|
||||||
mov ebx,eax
|
|
||||||
add ebx, [bmp_load_area+2];file size
|
|
||||||
inc ebx
|
|
||||||
mov dword [bmp_soi],ebx ;soi-start of image area for drawing
|
|
||||||
add eax, [bmp_load_area+10]
|
|
||||||
mov dword [sop],eax ;sop-start of picture in file
|
|
||||||
add eax, [bmp_load_area+34]
|
|
||||||
mov dword [eop],eax ;eop-end of picture in file
|
|
||||||
mov eax, [bmp_load_area+18]
|
|
||||||
lea eax,[eax+2*eax] ;3x pixels in eax
|
|
||||||
|
|
||||||
mov edi,dword [bmp_soi] ;initializing
|
|
||||||
mov esi,dword [eop]
|
|
||||||
sub esi,dword [bps]
|
|
||||||
|
|
||||||
|
|
||||||
nextstring:
|
|
||||||
push edi
|
|
||||||
cmp word [bmp_load_area+28],24
|
|
||||||
jne convertno32
|
|
||||||
|
|
||||||
mov ecx,[dwps]
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
convert1:
|
|
||||||
pop edi
|
|
||||||
sub esi,dword [bps]
|
|
||||||
sub esi,dword [bps]
|
|
||||||
cmp esi,dword [sop]
|
|
||||||
jb end_bmp;nomorestring
|
|
||||||
add edi,eax
|
|
||||||
jmp nextstring
|
|
||||||
|
|
||||||
; nomorestring:
|
|
||||||
; jmp end_bmp
|
|
||||||
|
|
||||||
convertno32:
|
|
||||||
mov ebx,bmp_load_area
|
|
||||||
add ebx, [bmp_load_area+14]
|
|
||||||
add ebx,14 ;start of color table
|
|
||||||
push esi
|
|
||||||
add esi,dword [bps]
|
|
||||||
mov dword [eos],esi
|
|
||||||
pop esi
|
|
||||||
nextelem:
|
|
||||||
push eax
|
|
||||||
movzx eax,byte [esi]
|
|
||||||
cmp word [bmp_load_area+28],4
|
|
||||||
je convert4bpp
|
|
||||||
cmp word [bmp_load_area+28],1
|
|
||||||
je convert1bpp
|
|
||||||
call converttable
|
|
||||||
convert2:
|
|
||||||
pop eax
|
|
||||||
inc esi
|
|
||||||
cmp esi,dword [eos]
|
|
||||||
jae convert1
|
|
||||||
add edi,3
|
|
||||||
jmp nextelem
|
|
||||||
|
|
||||||
convert4bpp:
|
|
||||||
shl ax,4
|
|
||||||
shr al,4
|
|
||||||
push ax
|
|
||||||
movzx eax,ah
|
|
||||||
call converttable
|
|
||||||
add edi,3
|
|
||||||
pop ax
|
|
||||||
movzx eax,al
|
|
||||||
call converttable
|
|
||||||
jmp convert2
|
|
||||||
|
|
||||||
convert1bpp:
|
|
||||||
mov ecx,eax
|
|
||||||
mov edx,7
|
|
||||||
nextbit:
|
|
||||||
xor eax,eax
|
|
||||||
bt ecx,edx
|
|
||||||
jnc noaddelem
|
|
||||||
inc eax
|
|
||||||
noaddelem:
|
|
||||||
push edx
|
|
||||||
call converttable
|
|
||||||
pop edx
|
|
||||||
dec edx
|
|
||||||
cmp edx,0xffffffff
|
|
||||||
je convert2
|
|
||||||
add edi,3
|
|
||||||
jmp nextbit
|
|
||||||
|
|
||||||
converttable:
|
|
||||||
shl eax,2
|
|
||||||
add eax,ebx
|
|
||||||
mov edx, dword [eax]
|
|
||||||
mov dword [edi],edx
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
; DATA AREA
|
|
||||||
|
|
||||||
;status dd 0 ;bit0=1 if file thread is created
|
|
||||||
bps dd 0
|
|
||||||
dwps dd 0
|
|
||||||
;soi dd 0
|
|
||||||
sop dd 0
|
|
||||||
eop dd 0
|
|
||||||
eos dd 0
|
|
||||||
;process dd 0
|
|
||||||
|
|
||||||
end_bmp:
|
|
||||||
; mov eax,dword [soi]
|
|
||||||
; mov dword [bmp_soi],eax
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; LOADBMP - Load bmp image from file
|
|
||||||
; (SYNTAX) LOADBMP 'file_path',temp_area(rb 0x10000),load_area,dd soi
|
|
||||||
; (SAMPLE) LOADBMP '/rd/1/menuet.bmp',temp_area,I_END,tsoi
|
|
||||||
; ( NOTE ) Macros create on Base of
|
|
||||||
; Picture browser by lisovin@26.ru & Ivan Poddubny
|
|
||||||
; SOI - Start of image
|
|
||||||
|
|
||||||
macro loadbmp bmp_file_name,bmp_temp_area,bmp_load_area,bmp_soi
|
|
||||||
{
|
|
||||||
local status,bps,dwps,soi,sop,eop,eos,process,fileinfo,string,end_bmp
|
|
||||||
local converttable,noaddelem,nextbit,convert1bpp,convert4bpp,convert2
|
|
||||||
local nextelem,convertno32,nomorestring,convert1,nextstring,yespicsize
|
|
||||||
local noaddword
|
|
||||||
;local qwe,bmpfn
|
|
||||||
|
|
||||||
mov dword [fileinfo+8],1 ; how many blocks to read (1)
|
|
||||||
mov eax,58
|
|
||||||
mov ebx,fileinfo
|
|
||||||
mcall
|
|
||||||
mov eax,[bmp_load_area+2]
|
|
||||||
shr eax,9 ; ŻŽ¤ĽŤ¨Ź 512 ¨ Żŕ¨Ą ˘¨Ź 1 - ŻŽŤă稏 ç¨áŤŽ ĄŤŽŞŽ˘
|
|
||||||
inc eax
|
|
||||||
mov dword [fileinfo+8],eax
|
|
||||||
mov eax,58
|
|
||||||
mov ebx,fileinfo
|
|
||||||
mcall
|
|
||||||
|
|
||||||
; jmp qwe
|
|
||||||
;bmpfn db bmp_file_name
|
|
||||||
;qwe:
|
|
||||||
; mov eax,6
|
|
||||||
; mov ebx,bmpfn
|
|
||||||
; mov ecx,0
|
|
||||||
; mov edx,0xFFFFFF
|
|
||||||
; mov esi,bmp_load_area
|
|
||||||
; mov edi,0
|
|
||||||
; mcall
|
|
||||||
|
|
||||||
; convert:
|
|
||||||
movzx eax,word [bmp_load_area+28]
|
|
||||||
mul dword [bmp_load_area+18]
|
|
||||||
mov ebx,32
|
|
||||||
div ebx
|
|
||||||
test edx,edx
|
|
||||||
je noaddword
|
|
||||||
inc eax
|
|
||||||
noaddword:
|
|
||||||
mov dword [dwps],eax ;dwps-doublewords per string
|
|
||||||
shl eax,2
|
|
||||||
mov dword [bps],eax ;bps-bytes per string
|
|
||||||
|
|
||||||
cmp dword [bmp_load_area+34],0
|
|
||||||
jne yespicsize ;if picture size is defined
|
|
||||||
mul dword [bmp_load_area+22]
|
|
||||||
mov dword [bmp_load_area+34],eax
|
|
||||||
|
|
||||||
yespicsize:
|
|
||||||
mov eax,bmp_load_area
|
|
||||||
push eax
|
|
||||||
add eax, [bmp_load_area+2];file size
|
|
||||||
inc eax
|
|
||||||
mov dword [soi],eax ;soi-start of image area for drawing
|
|
||||||
pop eax
|
|
||||||
add eax, [bmp_load_area+10]
|
|
||||||
mov dword [sop],eax ;sop-start of picture in file
|
|
||||||
add eax, [bmp_load_area+34]
|
|
||||||
mov dword [eop],eax ;eop-end of picture in file
|
|
||||||
mov eax, [bmp_load_area+18]
|
|
||||||
mov ebx,3
|
|
||||||
mul ebx ;3x pixels in eax
|
|
||||||
|
|
||||||
mov edi,dword [soi] ;initializing
|
|
||||||
mov esi,dword [eop]
|
|
||||||
sub esi,dword [bps]
|
|
||||||
|
|
||||||
|
|
||||||
nextstring:
|
|
||||||
push edi
|
|
||||||
cmp word [bmp_load_area+28],24
|
|
||||||
jne convertno32
|
|
||||||
|
|
||||||
mov ecx,[dwps]
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
convert1:
|
|
||||||
pop edi
|
|
||||||
sub esi,dword [bps]
|
|
||||||
sub esi,dword [bps]
|
|
||||||
cmp esi,dword [sop]
|
|
||||||
jb nomorestring
|
|
||||||
add edi,eax
|
|
||||||
jmp nextstring
|
|
||||||
|
|
||||||
nomorestring:
|
|
||||||
jmp end_bmp
|
|
||||||
|
|
||||||
convertno32:
|
|
||||||
mov ebx,bmp_load_area
|
|
||||||
add ebx, [bmp_load_area+14]
|
|
||||||
add ebx,14 ;start of color table
|
|
||||||
push esi
|
|
||||||
add esi,dword [bps]
|
|
||||||
mov dword [eos],esi
|
|
||||||
pop esi
|
|
||||||
nextelem:
|
|
||||||
push eax
|
|
||||||
movzx eax,byte [esi]
|
|
||||||
cmp word [bmp_load_area+28],4
|
|
||||||
je convert4bpp
|
|
||||||
cmp word [bmp_load_area+28],1
|
|
||||||
je convert1bpp
|
|
||||||
call converttable
|
|
||||||
convert2:
|
|
||||||
pop eax
|
|
||||||
inc esi
|
|
||||||
cmp esi,dword [eos]
|
|
||||||
jae convert1
|
|
||||||
add edi,3
|
|
||||||
jmp nextelem
|
|
||||||
|
|
||||||
convert4bpp:
|
|
||||||
shl ax,4
|
|
||||||
shr al,4
|
|
||||||
push ax
|
|
||||||
movzx eax,ah
|
|
||||||
call converttable
|
|
||||||
add edi,3
|
|
||||||
pop ax
|
|
||||||
movzx eax,al
|
|
||||||
call converttable
|
|
||||||
jmp convert2
|
|
||||||
|
|
||||||
convert1bpp:
|
|
||||||
mov ecx,eax
|
|
||||||
mov edx,7
|
|
||||||
nextbit:
|
|
||||||
xor eax,eax
|
|
||||||
bt ecx,edx
|
|
||||||
jnc noaddelem
|
|
||||||
inc eax
|
|
||||||
noaddelem:
|
|
||||||
push edx
|
|
||||||
call converttable
|
|
||||||
pop edx
|
|
||||||
dec edx
|
|
||||||
cmp edx,0xffffffff
|
|
||||||
je convert2
|
|
||||||
add edi,3
|
|
||||||
jmp nextbit
|
|
||||||
|
|
||||||
converttable:
|
|
||||||
shl eax,2
|
|
||||||
add eax,ebx
|
|
||||||
mov edx, dword [eax]
|
|
||||||
mov dword [edi],edx
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
; DATA AREA
|
|
||||||
|
|
||||||
;status dd 0 ;bit0=1 if file thread is created
|
|
||||||
bps dd 0
|
|
||||||
dwps dd 0
|
|
||||||
soi dd 0
|
|
||||||
sop dd 0
|
|
||||||
eop dd 0
|
|
||||||
eos dd 0
|
|
||||||
;process dd 0
|
|
||||||
|
|
||||||
; DATA AREA
|
|
||||||
fileinfo:
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 1 ;number of blocks of 512 bytes
|
|
||||||
dd bmp_load_area
|
|
||||||
dd bmp_temp_area
|
|
||||||
string:
|
|
||||||
db bmp_file_name,0
|
|
||||||
db ' '
|
|
||||||
db ' '
|
|
||||||
db ' '
|
|
||||||
db ' ',0
|
|
||||||
|
|
||||||
|
|
||||||
end_bmp:
|
|
||||||
mov eax,dword [soi]
|
|
||||||
mov dword [bmp_soi],eax
|
|
||||||
|
|
||||||
}
|
|
@ -1,499 +0,0 @@
|
|||||||
lang equ ru ; ru en fr ge fi
|
|
||||||
|
|
||||||
;
|
|
||||||
; Assembler
|
|
||||||
; SMALL
|
|
||||||
; CODE
|
|
||||||
; Libary
|
|
||||||
;
|
|
||||||
; Ver 0.09 By Pavlushin Evgeni (RUSSIA)
|
|
||||||
; www.waptap@mail.ru
|
|
||||||
|
|
||||||
;InfoList
|
|
||||||
;0.01 scank,putpix,puttxt
|
|
||||||
;0.02 label,random,colors
|
|
||||||
;0.03 window,startwd,endwd,attributes
|
|
||||||
;0.04 close,delay,scevent ~30.04.2004
|
|
||||||
;0.05 small random, ~04.05.2004
|
|
||||||
;0.06 wtevent ~09.05.2004
|
|
||||||
;0.07 timeevent ~23.05.2004
|
|
||||||
;0.08 txtput ~14.06.2004
|
|
||||||
;0.09 opendialog,savedialog ~20.06.2004
|
|
||||||
|
|
||||||
macro opendialog redproc,openoff,erroff,path,testtime
|
|
||||||
{
|
|
||||||
local still, dlg_file, clip_file, redwait
|
|
||||||
local button, key, red, zzz, still, zzz2, incf, file_is_open, zzz3
|
|
||||||
|
|
||||||
mov ecx,200
|
|
||||||
zzz3:
|
|
||||||
mov byte [path+ecx-1],0
|
|
||||||
loop zzz3
|
|
||||||
|
|
||||||
dec byte [clip_file+7]
|
|
||||||
incf:
|
|
||||||
inc byte [clip_file+7]
|
|
||||||
mov eax,6
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,0
|
|
||||||
mov edx,-1
|
|
||||||
mov esi,path
|
|
||||||
mcall
|
|
||||||
cmp byte [clip_file+7],'Z'
|
|
||||||
je erroff
|
|
||||||
cmp eax,0xffffffff
|
|
||||||
jne incf
|
|
||||||
|
|
||||||
mov ecx,200
|
|
||||||
zzz2:
|
|
||||||
mov byte [path+ecx],0
|
|
||||||
loop zzz2
|
|
||||||
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,path
|
|
||||||
mov edx,100
|
|
||||||
mov esi,0
|
|
||||||
mov eax,33
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov ebx,dlg_file
|
|
||||||
mov ecx,clip_file
|
|
||||||
mov eax,19
|
|
||||||
mcall
|
|
||||||
|
|
||||||
still:
|
|
||||||
scevent red,key,button
|
|
||||||
cmp byte [path],0
|
|
||||||
jne file_is_open
|
|
||||||
cmp dword [redwait],testtime ;20
|
|
||||||
jnae zzz
|
|
||||||
mov eax,6
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,0
|
|
||||||
mov edx,-1
|
|
||||||
mov esi,path
|
|
||||||
mcall
|
|
||||||
cmp eax,0xffffffff
|
|
||||||
je erroff ;errexit
|
|
||||||
mov dword [redwait],0
|
|
||||||
zzz:
|
|
||||||
delay 5
|
|
||||||
inc dword [redwait]
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
file_is_open:
|
|
||||||
mov eax,32
|
|
||||||
mov ebx,clip_file
|
|
||||||
mcall
|
|
||||||
jmp openoff
|
|
||||||
|
|
||||||
key: ; key
|
|
||||||
mcall ; read (eax=2)
|
|
||||||
jmp still
|
|
||||||
button: ; button
|
|
||||||
mov eax,17 ; get id
|
|
||||||
mcall
|
|
||||||
cmp ah,1 ; button id=1 ?
|
|
||||||
jne still
|
|
||||||
mov eax,-1 ; close this program
|
|
||||||
mcall
|
|
||||||
|
|
||||||
red:
|
|
||||||
call redproc
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
dlg_file db 'SYSXTREE '
|
|
||||||
clip_file db 'OPENCLPACLP'
|
|
||||||
db 'O' ;Dialog type O-open S-save
|
|
||||||
db 0 ;Marker
|
|
||||||
redwait dd 0
|
|
||||||
}
|
|
||||||
|
|
||||||
macro savedialog redproc,openoff,erroff,path,testtime
|
|
||||||
{
|
|
||||||
local still, dlg_file, clip_file, redwait, zzz3
|
|
||||||
local button, key, red, zzz, still, zzz2, incf, file_is_open
|
|
||||||
|
|
||||||
mov ecx,200
|
|
||||||
zzz3:
|
|
||||||
mov byte [path+ecx-1],0
|
|
||||||
loop zzz3
|
|
||||||
|
|
||||||
dec byte [clip_file+7]
|
|
||||||
incf:
|
|
||||||
inc byte [clip_file+7]
|
|
||||||
mov eax,6
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,0
|
|
||||||
mov edx,-1
|
|
||||||
mov esi,path
|
|
||||||
mcall
|
|
||||||
cmp byte [clip_file+7],'Z'
|
|
||||||
je erroff
|
|
||||||
cmp eax,0xffffffff
|
|
||||||
jne incf
|
|
||||||
|
|
||||||
mov ecx,200
|
|
||||||
zzz2:
|
|
||||||
mov byte [path+ecx],0
|
|
||||||
loop zzz2
|
|
||||||
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,path
|
|
||||||
mov edx,100
|
|
||||||
mov esi,0
|
|
||||||
mov eax,33
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov ebx,dlg_file
|
|
||||||
mov ecx,clip_file
|
|
||||||
mov eax,19
|
|
||||||
mcall
|
|
||||||
|
|
||||||
still:
|
|
||||||
scevent red,key,button
|
|
||||||
cmp byte [path],0
|
|
||||||
jne file_is_open
|
|
||||||
cmp dword [redwait],testtime ;20
|
|
||||||
jnae zzz
|
|
||||||
mov eax,6
|
|
||||||
mov ebx,clip_file
|
|
||||||
mov ecx,0
|
|
||||||
mov edx,-1
|
|
||||||
mov esi,path
|
|
||||||
mcall
|
|
||||||
cmp eax,0xffffffff
|
|
||||||
je erroff ;errexit
|
|
||||||
mov dword [redwait],0
|
|
||||||
zzz:
|
|
||||||
delay 5
|
|
||||||
inc dword [redwait]
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
file_is_open:
|
|
||||||
mov eax,32
|
|
||||||
mov ebx,clip_file
|
|
||||||
mcall
|
|
||||||
jmp openoff
|
|
||||||
|
|
||||||
key: ; key
|
|
||||||
mcall ; read (eax=2)
|
|
||||||
jmp still
|
|
||||||
button: ; button
|
|
||||||
mov eax,17 ; get id
|
|
||||||
mcall
|
|
||||||
cmp ah,1 ; button id=1 ?
|
|
||||||
jne still
|
|
||||||
mov eax,-1 ; close this program
|
|
||||||
mcall
|
|
||||||
|
|
||||||
red:
|
|
||||||
call redproc
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
dlg_file db 'SYSXTREE '
|
|
||||||
clip_file db 'SAVECLPACLP'
|
|
||||||
db 'S' ;Dialog type O-open S-save
|
|
||||||
db 0 ;Marker
|
|
||||||
redwait dd 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
; RANDOM - generate random count (small)
|
|
||||||
; (SYNTAX) RANDOM MaxCount,OutArgument
|
|
||||||
; (SAMPLE) RANDOM 10000,eax
|
|
||||||
; ( NOTE ) Maxint<65536 ; use random 65536,eax for more combinations
|
|
||||||
|
|
||||||
randomuse = 0
|
|
||||||
|
|
||||||
macro random arg1,arg2
|
|
||||||
{
|
|
||||||
local rxproc
|
|
||||||
randomuse = randomuse + 1
|
|
||||||
|
|
||||||
jmp rxproc
|
|
||||||
|
|
||||||
if defined randomuse & randomuse = 1
|
|
||||||
randomproc:
|
|
||||||
jmp rnj
|
|
||||||
rsx1 dw 0x4321
|
|
||||||
rsx2 dw 0x1234
|
|
||||||
rnj:
|
|
||||||
; mov eax,arg1
|
|
||||||
push bx
|
|
||||||
push cx
|
|
||||||
push dx
|
|
||||||
push si
|
|
||||||
push di
|
|
||||||
mov cx,ax
|
|
||||||
mov ax,word ptr rsx1
|
|
||||||
mov bx,word ptr rsx2
|
|
||||||
mov si,ax
|
|
||||||
mov di,bx
|
|
||||||
mov dl,ah
|
|
||||||
mov ah,al
|
|
||||||
mov al,bh
|
|
||||||
mov bh,bl
|
|
||||||
xor bl,bl
|
|
||||||
rcr dl,1
|
|
||||||
rcr ax,1
|
|
||||||
rcr bx,1
|
|
||||||
add bx,di
|
|
||||||
adc ax,si
|
|
||||||
add bx,0x62e9
|
|
||||||
adc ax,0x3619
|
|
||||||
mov word ptr rsx1,bx
|
|
||||||
mov word ptr rsx2,ax
|
|
||||||
xor dx,dx
|
|
||||||
cmp ax,0
|
|
||||||
je nodiv
|
|
||||||
cmp cx,0
|
|
||||||
je nodiv
|
|
||||||
div cx
|
|
||||||
nodiv:
|
|
||||||
mov ax,dx
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
pop dx
|
|
||||||
pop cx
|
|
||||||
pop bx
|
|
||||||
; mov arg2,0
|
|
||||||
; mov arg2,eax
|
|
||||||
ret
|
|
||||||
end if
|
|
||||||
|
|
||||||
rxproc:
|
|
||||||
mov eax,arg1
|
|
||||||
call randomproc
|
|
||||||
mov arg2,0
|
|
||||||
mov arg2,eax
|
|
||||||
}
|
|
||||||
|
|
||||||
macro scank
|
|
||||||
{
|
|
||||||
mov eax,10
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
macro putpix x,y,color
|
|
||||||
{
|
|
||||||
mov ebx,x
|
|
||||||
mov ecx,y
|
|
||||||
mov edx,color
|
|
||||||
mov eax,1
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
macro puttxt x,y,offs,size,color
|
|
||||||
{
|
|
||||||
mov ebx,x
|
|
||||||
shl ebx,16
|
|
||||||
add ebx,y
|
|
||||||
mov ecx,color
|
|
||||||
mov edx,offs
|
|
||||||
mov esi,size
|
|
||||||
mov eax,4
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
;_ equ '____'
|
|
||||||
|
|
||||||
;macro libtest x,y,color
|
|
||||||
;{
|
|
||||||
;if x = as dword
|
|
||||||
; mov ebx,x
|
|
||||||
;end if
|
|
||||||
; mov ecx,y
|
|
||||||
; mov edx,color
|
|
||||||
; mov eax,1
|
|
||||||
; mcall
|
|
||||||
;}
|
|
||||||
|
|
||||||
|
|
||||||
macro outcount data, x, y, color, numtype
|
|
||||||
{
|
|
||||||
mov ecx,data
|
|
||||||
mov ebx,numtype
|
|
||||||
mov bl,0
|
|
||||||
mov edx,x*65536+y
|
|
||||||
mov esi,color
|
|
||||||
mov eax,47
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; SCEVENT - Scan event
|
|
||||||
|
|
||||||
macro scevent red,key,but
|
|
||||||
{
|
|
||||||
mov eax,11
|
|
||||||
mcall
|
|
||||||
dec eax
|
|
||||||
jz red
|
|
||||||
dec eax
|
|
||||||
jz key
|
|
||||||
dec eax
|
|
||||||
jz but
|
|
||||||
}
|
|
||||||
|
|
||||||
; WTEVENT - Wait event
|
|
||||||
|
|
||||||
macro wtevent red,key,but
|
|
||||||
{
|
|
||||||
mov eax,10
|
|
||||||
mcall
|
|
||||||
dec eax
|
|
||||||
jz red
|
|
||||||
dec eax
|
|
||||||
jz key
|
|
||||||
dec eax
|
|
||||||
jz but
|
|
||||||
}
|
|
||||||
|
|
||||||
; TIMEEVENT - Wite for event with timeout
|
|
||||||
|
|
||||||
macro timeevent xfps,noevent,red,key,but
|
|
||||||
{
|
|
||||||
mov eax,23
|
|
||||||
mov ebx,xfps
|
|
||||||
mcall
|
|
||||||
cmp eax,0
|
|
||||||
je noevent
|
|
||||||
dec eax
|
|
||||||
jz red
|
|
||||||
dec eax
|
|
||||||
jz key
|
|
||||||
dec eax
|
|
||||||
jz but
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
; CLOSE - Close program
|
|
||||||
|
|
||||||
macro close
|
|
||||||
{
|
|
||||||
mov eax,-1
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; DELAY - Create delay 1/100 sec
|
|
||||||
; (SYNTAX) Delay time
|
|
||||||
; (SAMPLE) Delay 100 ;delay 2 sec 1/100*200=2 sec
|
|
||||||
|
|
||||||
macro delay arg1
|
|
||||||
{
|
|
||||||
mov eax,5
|
|
||||||
mov ebx,arg1
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; WINDOW - Draw window
|
|
||||||
; (SYNTAX) WINDOW Xstart,Ystart,'Text',Color
|
|
||||||
; (SAMPLE) WINDOW 10,10,640+8,480+24,window_Skinned
|
|
||||||
|
|
||||||
macro window arg1,arg2,arg3,arg4,arg5
|
|
||||||
{
|
|
||||||
mov ebx,arg1*65536+arg3
|
|
||||||
mov ecx,arg2*65536+arg4
|
|
||||||
mov edx,arg5
|
|
||||||
mov eax,0
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7
|
|
||||||
{
|
|
||||||
mov ebx,arg1*65536+arg3
|
|
||||||
mov ecx,arg2*65536+arg4
|
|
||||||
mov edx,arg5
|
|
||||||
mov esi,arg6
|
|
||||||
mov edi,arg7
|
|
||||||
mov eax,0
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
; STARTWD - Start of window draw
|
|
||||||
|
|
||||||
macro startwd
|
|
||||||
{
|
|
||||||
mov eax,12
|
|
||||||
mov ebx,1
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; ENDWD - End window draw
|
|
||||||
|
|
||||||
macro endwd
|
|
||||||
{
|
|
||||||
mov eax,12
|
|
||||||
mov ebx,2
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
; LABEL - Put text to frame
|
|
||||||
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color
|
|
||||||
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big
|
|
||||||
|
|
||||||
macro label arg1,arg2,arg3,arg4
|
|
||||||
{
|
|
||||||
local asd,lab
|
|
||||||
jmp asd
|
|
||||||
lab db arg3 ;arg label
|
|
||||||
asd:
|
|
||||||
mov ebx,arg1 ;arg1=y arg2=x
|
|
||||||
shl ebx,16
|
|
||||||
add ebx,arg2
|
|
||||||
mov ecx,arg4 ;arg4 color
|
|
||||||
mov edx,lab
|
|
||||||
mov esi,asd-lab ;calc size
|
|
||||||
mov eax,4
|
|
||||||
mcall
|
|
||||||
}
|
|
||||||
|
|
||||||
;Key's
|
|
||||||
key_Up equ 178
|
|
||||||
key_Down equ 177
|
|
||||||
key_Right equ 179
|
|
||||||
key_Left equ 176
|
|
||||||
key_Esc equ 27
|
|
||||||
key_Space equ 32
|
|
||||||
key_Enter equ 13
|
|
||||||
key_Bspace equ 8
|
|
||||||
key_F1 equ 50
|
|
||||||
key_F2 equ 51
|
|
||||||
key_F3 equ 52
|
|
||||||
key_F4 equ 53
|
|
||||||
key_F5 equ 54
|
|
||||||
key_F6 equ 55
|
|
||||||
key_F7 equ 56
|
|
||||||
key_F8 equ 57
|
|
||||||
key_F9 equ 48
|
|
||||||
key_F10 equ 49
|
|
||||||
key_F11 equ 68
|
|
||||||
key_F12 equ 255
|
|
||||||
key_Home equ 180
|
|
||||||
key_End equ 181
|
|
||||||
key_PgUp equ 184
|
|
||||||
key_PgDown equ 183
|
|
||||||
|
|
||||||
;Attributes
|
|
||||||
|
|
||||||
;Window Attributes
|
|
||||||
window_Skinned equ 0x03000000
|
|
||||||
window_Type2 equ 0x02000000
|
|
||||||
window_Type1 equ 0x00000000
|
|
||||||
window_Reserve equ 0x01000000
|
|
||||||
|
|
||||||
;Font Attributes
|
|
||||||
font_Big equ 0x10000000
|
|
||||||
|
|
||||||
;Colors
|
|
||||||
cl_White equ 0x00ffffff
|
|
||||||
cl_Black equ 0x00000000
|
|
||||||
cl_Grey equ 0x00888888
|
|
||||||
cl_Red equ 0x00ff0000
|
|
||||||
cl_Lime equ 0x0000ff00
|
|
||||||
cl_Green equ 0x0000af00
|
|
||||||
cl_Blue equ 0x000000ff
|
|
||||||
cl_Purple equ 0x008080ff
|
|
||||||
cl_Violet equ 0x008040ff
|
|
||||||
cl_Cyan equ 0x0040e0ff
|
|
BIN
programs/games/pong/trunk/ball.raw
Normal file
BIN
programs/games/pong/trunk/ball.raw
Normal file
Binary file not shown.
BIN
programs/games/pong/trunk/paddle.raw
Normal file
BIN
programs/games/pong/trunk/paddle.raw
Normal file
Binary file not shown.
@ -1,382 +1,420 @@
|
|||||||
;
|
;
|
||||||
; Pong Gaem 2Ver Mini Sample by Pavlushin Evgeni for ASCL
|
; PONG for MENUET v1.0
|
||||||
; www.waptap@mail.ru
|
; 2001 by Mario Birkner, Germany
|
||||||
|
; cyflexx@digitalrice.com
|
||||||
|
;
|
||||||
|
; PONG for MENUET is
|
||||||
|
; a small PONG-clone for MenuetOS
|
||||||
|
;
|
||||||
|
; HINT: If the Paddle moves too slow,increase the
|
||||||
|
; typematic Rate in your BIOS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
;******************************************************************************
|
|
||||||
use32
|
|
||||||
org 0x0
|
|
||||||
db 'MENUET01' ; 8 byte id
|
|
||||||
dd 0x01 ; header version
|
|
||||||
dd START ; start of code
|
|
||||||
dd IM_END ; size of image
|
|
||||||
dd 0x300000 ; memory for app
|
|
||||||
dd 0x300000 ; esp
|
|
||||||
dd temp_area , 0x0 ; I_Param , I_Icon
|
|
||||||
|
|
||||||
;******************************************************************************
|
|
||||||
;5941 ;4523(with new random)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
include 'lang.inc'
|
|
||||||
include '..\..\..\macros.inc'
|
include '..\..\..\macros.inc'
|
||||||
include 'ascl.inc'
|
|
||||||
include 'ascgl.inc'
|
|
||||||
|
|
||||||
START: ; start of execution
|
CK_UP1 equ 113
|
||||||
|
CK_DOWN1 equ 97
|
||||||
|
CK_UP2 equ 130+48
|
||||||
|
CK_DOWN2 equ 129+48
|
||||||
|
|
||||||
|
use32
|
||||||
|
|
||||||
|
org 0x0
|
||||||
|
|
||||||
|
db 'MENUET00' ; 8 byte id
|
||||||
|
dd 38 ; required os
|
||||||
|
dd START ; program start
|
||||||
|
dd I_END ; program image size
|
||||||
|
dd 0x2000 ; required amount of memory
|
||||||
|
dd 0x2000 ; esp = 0x7FFF0
|
||||||
|
dd 0x00000000 ; reserved=no extended header
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
START:
|
||||||
|
|
||||||
call draw_window
|
call draw_window
|
||||||
|
|
||||||
loadbmp '/RD/1/MFAR.BMP',temp_area,I_END,tsoi
|
|
||||||
bmptoimg I_END,tsoi,img
|
|
||||||
loadbmp '/RD/1/COPY.BMP',temp_area,I_END,tsoi
|
|
||||||
bmptoimg I_END,tsoi,img2
|
|
||||||
loadbmp '/RD/1/SMILE.BMP',temp_area,I_END,tsoi
|
|
||||||
bmptoimg I_END,tsoi,img3
|
|
||||||
|
|
||||||
fullimg img4 , 32 ,32 ,0x00000000 ;black
|
|
||||||
|
|
||||||
loadbmp '/RD/1/MBAR_I3.BMP',temp_area,I_END,tsoi
|
|
||||||
bmptoimg I_END,tsoi,img5
|
|
||||||
|
|
||||||
|
|
||||||
still:
|
still:
|
||||||
|
|
||||||
mov eax,11 ; scan event
|
mov eax,10
|
||||||
|
add eax,[control]
|
||||||
mcall
|
mcall
|
||||||
|
cmp eax,1
|
||||||
cmp eax,1 ; redraw request ?
|
|
||||||
je red
|
je red
|
||||||
cmp eax,2 ; key in buffer ?
|
cmp eax,2
|
||||||
je key
|
je key
|
||||||
cmp eax,3 ; button in buffer ?
|
cmp eax,3
|
||||||
je button
|
je button
|
||||||
|
cmp [control],1
|
||||||
|
jne still
|
||||||
|
|
||||||
out_scorea:
|
mov eax,5
|
||||||
mov eax,47
|
mov ebx,[delay]
|
||||||
mov ebx,5*65536
|
|
||||||
mov ecx,[scorea]
|
|
||||||
mov edx,300*65536+8
|
|
||||||
mov esi,cl_Blue
|
|
||||||
mcall
|
|
||||||
out_scoreb:
|
|
||||||
mov eax,47
|
|
||||||
mov ebx,5*65536
|
|
||||||
mov ecx,[scoreb]
|
|
||||||
mov edx,350*65536+8
|
|
||||||
mov esi,cl_Red
|
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
del_images:
|
jmp move
|
||||||
setimg dword [ply1x],dword [ply1y],img4
|
|
||||||
setimg dword [ply2x],dword [ply2y],img4
|
|
||||||
setimg dword [ballx],dword [bally],img4
|
|
||||||
setimg dword [gravx],dword [gravy],img4
|
|
||||||
|
|
||||||
|
red:
|
||||||
move_images:
|
|
||||||
|
|
||||||
x_move:
|
|
||||||
mov eax,dword [ply1rx]
|
|
||||||
cmp dword [ply1x],eax
|
|
||||||
je no_m
|
|
||||||
cmp dword [ply1x],eax
|
|
||||||
ja m_m
|
|
||||||
m_p:
|
|
||||||
add dword [ply1x],4
|
|
||||||
jmp no_m
|
|
||||||
m_m:
|
|
||||||
sub dword [ply1x],4
|
|
||||||
no_m:
|
|
||||||
|
|
||||||
|
|
||||||
y_move:
|
|
||||||
mov eax,dword [ply1ry]
|
|
||||||
cmp dword [ply1y],eax
|
|
||||||
je no_m2
|
|
||||||
cmp dword [ply1y],eax
|
|
||||||
ja m_m2
|
|
||||||
m_p2:
|
|
||||||
add dword [ply1y],2
|
|
||||||
jmp no_m2
|
|
||||||
m_m2:
|
|
||||||
sub dword [ply1y],2
|
|
||||||
no_m2:
|
|
||||||
|
|
||||||
;automove ball
|
|
||||||
mov eax,dword [ballxv]
|
|
||||||
add dword [ballx],eax
|
|
||||||
mov eax,dword [ballyv]
|
|
||||||
add dword [bally],eax
|
|
||||||
|
|
||||||
|
|
||||||
;autoslow ball
|
|
||||||
cmp dword [ballxv],0
|
|
||||||
jl ballb
|
|
||||||
balla:
|
|
||||||
cmp dword [ballxv],2
|
|
||||||
jng balln
|
|
||||||
dec dword [ballxv]
|
|
||||||
; mov dword [ballxv],2
|
|
||||||
jmp balln
|
|
||||||
|
|
||||||
ballb:
|
|
||||||
cmp dword [ballxv],-2
|
|
||||||
jng balln
|
|
||||||
inc dword [ballxv]
|
|
||||||
; mov dword [ballxv],-2
|
|
||||||
jmp balln
|
|
||||||
|
|
||||||
balln:
|
|
||||||
|
|
||||||
cmp dword [ballyv],2
|
|
||||||
jng by_n
|
|
||||||
dec dword [ballyv]
|
|
||||||
by_n:
|
|
||||||
|
|
||||||
;test ball on collusion of screen
|
|
||||||
; cmp dword [bally],480+16-32
|
|
||||||
; jna ya_ok
|
|
||||||
; neg dword [ballyv]
|
|
||||||
;ya_ok:
|
|
||||||
; cmp dword [bally],30
|
|
||||||
; jnb yb_ok
|
|
||||||
; neg dword [ballyv]
|
|
||||||
;yb_ok:
|
|
||||||
cmp dword [ballx],640-32
|
|
||||||
jna xa_ok
|
|
||||||
neg dword [ballxv]
|
|
||||||
xa_ok:
|
|
||||||
cmp dword [ballx],6
|
|
||||||
jnb xb_ok
|
|
||||||
neg dword [ballxv]
|
|
||||||
xb_ok:
|
|
||||||
|
|
||||||
;if ball far out of screen come back
|
|
||||||
; is not work already
|
|
||||||
cmp dword [bally],466
|
|
||||||
jng yax_ok
|
|
||||||
call draw_window
|
call draw_window
|
||||||
inc dword [scoreb]
|
cmp [control],1
|
||||||
mov dword [bally],240
|
jne still
|
||||||
mov dword [ballx],310
|
call clall
|
||||||
mov dword [ballyv],2
|
call drawpad
|
||||||
random 5,dword [ballxv]
|
jmp still
|
||||||
sub dword [ballxv],2
|
key:
|
||||||
yax_ok:
|
mov eax,2
|
||||||
cmp dword [bally],30
|
mcall
|
||||||
jnl yax_ok2
|
cmp [control],1
|
||||||
|
jne still
|
||||||
|
|
||||||
|
up1:
|
||||||
|
cmp ah,CK_UP1
|
||||||
|
jne dn1
|
||||||
|
cmp [posya],52*65536+64
|
||||||
|
je still
|
||||||
|
sub [posya],4*65536
|
||||||
|
call cl0
|
||||||
|
call drawpad
|
||||||
|
jmp still
|
||||||
|
dn1:
|
||||||
|
cmp ah,CK_DOWN1
|
||||||
|
jne up2
|
||||||
|
cmp [posya],140*65536+64
|
||||||
|
je still
|
||||||
|
add [posya],4*65536
|
||||||
|
call cl0
|
||||||
|
call drawpad
|
||||||
|
jmp still
|
||||||
|
up2:
|
||||||
|
cmp ah,CK_UP2
|
||||||
|
jne dn2
|
||||||
|
cmp [posyb],52*65536+64
|
||||||
|
je still
|
||||||
|
sub [posyb],4*65536
|
||||||
|
call cl1
|
||||||
|
call drawpad
|
||||||
|
jmp still
|
||||||
|
dn2:
|
||||||
|
cmp ah,CK_DOWN2
|
||||||
|
jne still
|
||||||
|
cmp [posyb],140*65536+64
|
||||||
|
je still
|
||||||
|
add [posyb],4*65536
|
||||||
|
call cl1
|
||||||
|
call drawpad
|
||||||
|
jmp still
|
||||||
|
|
||||||
|
button:
|
||||||
|
mov eax,17
|
||||||
|
mcall
|
||||||
|
|
||||||
|
cmp ah,1
|
||||||
|
jne button2
|
||||||
|
mov eax,-1
|
||||||
|
mcall
|
||||||
|
|
||||||
|
jmp still
|
||||||
|
|
||||||
|
button2:
|
||||||
|
cmp ah,2
|
||||||
|
jne still
|
||||||
|
mov [control],1
|
||||||
|
mov [scp1],0
|
||||||
|
mov [scp2],0
|
||||||
|
jmp res
|
||||||
|
move:
|
||||||
|
mov eax,[mposx]
|
||||||
|
mov ebx,[mposy]
|
||||||
|
add [bposx],eax
|
||||||
|
add [bposy],ebx
|
||||||
|
cmp [bposx],16*65536+16
|
||||||
|
je pf1
|
||||||
|
cmp [bposx],272*65536+16
|
||||||
|
je pf2
|
||||||
|
cmp [bposy],191*65536+16
|
||||||
|
je bot
|
||||||
|
cmp [bposy],48*65536+16
|
||||||
|
je top
|
||||||
|
cmp [bposx],247*65536+16
|
||||||
|
je rig
|
||||||
|
jg padr
|
||||||
|
cmp [bposx],55*65536+16
|
||||||
|
je lef
|
||||||
|
jl padl
|
||||||
|
jmp draw
|
||||||
|
|
||||||
|
padr:
|
||||||
|
mov ecx,[posyb]
|
||||||
|
jmp pad
|
||||||
|
padl:
|
||||||
|
mov ecx,[posya]
|
||||||
|
pad:
|
||||||
|
mov eax,[bposy]
|
||||||
|
sub eax,16
|
||||||
|
mov ebx,eax
|
||||||
|
add ebx,17*65536
|
||||||
|
sub ecx,64
|
||||||
|
mov edx,ecx
|
||||||
|
add edx,65*65536
|
||||||
|
cmp eax,edx
|
||||||
|
je top
|
||||||
|
cmp ebx,ecx
|
||||||
|
je bot
|
||||||
|
jmp draw
|
||||||
|
|
||||||
|
bot:
|
||||||
|
mov [mposy],-65536
|
||||||
|
jmp draw
|
||||||
|
top:
|
||||||
|
mov [mposy],65536
|
||||||
|
jmp draw
|
||||||
|
rig:
|
||||||
|
mov eax,[posyb]
|
||||||
|
sub eax,1*65536-64 ;verhindert das der ball ins paddle eindringt
|
||||||
|
mov ebx,[posyb]
|
||||||
|
add ebx,64*65536-64
|
||||||
|
mov ecx,[bposy]
|
||||||
|
add ecx,16*65536-16
|
||||||
|
mov edx,[bposy]
|
||||||
|
sub edx,16
|
||||||
|
cmp ecx,eax
|
||||||
|
je blr
|
||||||
|
jl draw
|
||||||
|
cmp edx,ebx
|
||||||
|
je blr
|
||||||
|
jl blr
|
||||||
|
jg draw
|
||||||
|
blr:
|
||||||
|
mov [mposx],-65536
|
||||||
|
jmp draw
|
||||||
|
|
||||||
|
lef:
|
||||||
|
mov eax,[posya]
|
||||||
|
sub eax,1*65536+64
|
||||||
|
mov ebx,[posya]
|
||||||
|
add ebx,64*65536-64
|
||||||
|
mov ecx,[bposy]
|
||||||
|
add ecx,16*65536-16
|
||||||
|
mov edx,[bposy]
|
||||||
|
add edx,16
|
||||||
|
cmp ecx,eax
|
||||||
|
je bll
|
||||||
|
jl draw
|
||||||
|
cmp edx,ebx
|
||||||
|
je bll
|
||||||
|
jl bll
|
||||||
|
jg draw
|
||||||
|
bll:
|
||||||
|
mov [mposx],65536
|
||||||
|
jmp draw
|
||||||
|
|
||||||
|
drawpad:
|
||||||
|
; draw paddle
|
||||||
|
mov edx,[posya]
|
||||||
|
shr edx,16
|
||||||
|
add edx,32*65536
|
||||||
|
mov ecx,24*65536+64
|
||||||
|
mov ebx,paddle
|
||||||
|
mov eax,7
|
||||||
|
mcall
|
||||||
|
mov edx,[posyb]
|
||||||
|
shr edx,16
|
||||||
|
add edx,264*65536
|
||||||
|
mov eax,7
|
||||||
|
mov ebx,paddle
|
||||||
|
mov ecx,24*65536+64
|
||||||
|
mcall
|
||||||
|
ret
|
||||||
|
|
||||||
|
draw:
|
||||||
|
; draw ball
|
||||||
|
mov eax,13
|
||||||
|
mov ebx,-65536+2
|
||||||
|
mov ecx,-65536+2
|
||||||
|
add ebx,[bposx]
|
||||||
|
add ecx,[bposy]
|
||||||
|
xor edx,edx
|
||||||
|
mcall
|
||||||
|
add ebx,65536-2
|
||||||
|
add ecx,65536-2
|
||||||
|
mov edx,ebx
|
||||||
|
and edx,0xffff0000
|
||||||
|
mov esi,ecx
|
||||||
|
shr esi,16
|
||||||
|
add edx,esi
|
||||||
|
mov esi,ebx
|
||||||
|
shl esi,16
|
||||||
|
mov edi,ecx
|
||||||
|
and edi,0x0000ffff
|
||||||
|
add esi,edi
|
||||||
|
mov ecx,esi
|
||||||
|
mov ebx,ball
|
||||||
|
mov eax,7
|
||||||
|
mcall
|
||||||
|
jmp still
|
||||||
|
cls:
|
||||||
|
mov eax,13
|
||||||
|
mov edx,0x00000000
|
||||||
|
mcall
|
||||||
|
ret
|
||||||
|
cl0:
|
||||||
|
mov ebx,32*65536+24
|
||||||
|
mov ecx,[posya]
|
||||||
|
sub ecx,4*65536+60
|
||||||
|
call cls
|
||||||
|
mov ecx,[posya]
|
||||||
|
add ecx,64*65536-60
|
||||||
|
call cls
|
||||||
|
ret
|
||||||
|
cl1:
|
||||||
|
mov ebx,264*65536+24
|
||||||
|
mov ecx,[posyb]
|
||||||
|
sub ecx,4*65536+60
|
||||||
|
call cls
|
||||||
|
mov ecx,[posyb]
|
||||||
|
add ecx,64*65536-60
|
||||||
|
call cls
|
||||||
|
ret
|
||||||
|
clall:
|
||||||
|
mov ebx,16*65536+288
|
||||||
|
mov ecx,47*65536+161
|
||||||
|
call cls
|
||||||
|
ret
|
||||||
|
pf1:
|
||||||
|
inc [scp2]
|
||||||
|
jmp res
|
||||||
|
pf2:
|
||||||
|
inc [scp1]
|
||||||
|
res:
|
||||||
|
cmp [scp2],20
|
||||||
|
je over
|
||||||
|
cmp [scp1],20
|
||||||
|
je over
|
||||||
|
mov [bposx],152*65536+16 ;default position ball
|
||||||
|
mov [bposy],119*65536+16
|
||||||
call draw_window
|
call draw_window
|
||||||
inc dword [scorea]
|
call clall
|
||||||
mov dword [bally],240
|
call drawpad
|
||||||
mov dword [ballx],310
|
jmp draw
|
||||||
mov dword [ballyv],2
|
over:
|
||||||
random 5,dword [ballxv]
|
mov [control],0
|
||||||
sub dword [ballxv],2
|
|
||||||
yax_ok2:
|
|
||||||
|
|
||||||
xorx:
|
|
||||||
cmp dword [ballxv],0
|
|
||||||
jne norx
|
|
||||||
random 5,dword [ballxv]
|
|
||||||
sub dword [ballxv],2
|
|
||||||
cmp dword [ballxv],0
|
|
||||||
je xorx
|
|
||||||
norx:
|
|
||||||
|
|
||||||
;test on collusion ply1 of ball
|
|
||||||
collusion_test:
|
|
||||||
collimg img,[ply1x],[ply1y],img3,[ballx],[bally],eax
|
|
||||||
cmp eax,1
|
|
||||||
jne not_coll
|
|
||||||
neg dword [ballyv]
|
|
||||||
add dword [bally],18
|
|
||||||
; neg dword [ballxv]
|
|
||||||
not_coll:
|
|
||||||
|
|
||||||
;test on collusion com of ball
|
|
||||||
collusion_com:
|
|
||||||
collimg img,[ply2x],[ply2y],img3,[ballx],[bally],eax
|
|
||||||
cmp eax,1
|
|
||||||
jne not_collcom
|
|
||||||
neg dword [ballyv]
|
|
||||||
sub dword [bally],18
|
|
||||||
; neg dword [ballxv]
|
|
||||||
not_collcom:
|
|
||||||
|
|
||||||
;test on collusion gravity of ball
|
|
||||||
collusion_grav:
|
|
||||||
collimg img,[gravx],[gravy],img3,[ballx],[bally],eax
|
|
||||||
cmp eax,1
|
|
||||||
jne not_collg
|
|
||||||
neg dword [ballyv]
|
|
||||||
|
|
||||||
; mov dword [ballxv],-20
|
|
||||||
|
|
||||||
cmp dword [ballyv],0
|
|
||||||
jl ab
|
|
||||||
jg bf
|
|
||||||
jmp not_collgx
|
|
||||||
ab:
|
|
||||||
sub dword [ballyv],30
|
|
||||||
jmp not_collgx
|
|
||||||
bf:
|
|
||||||
add dword [ballyv],30
|
|
||||||
not_collgx:
|
|
||||||
cmp dword [ballxv],0
|
|
||||||
jl abx
|
|
||||||
jg bfx
|
|
||||||
jmp not_collg
|
|
||||||
abx:
|
|
||||||
sub dword [ballxv],10
|
|
||||||
jmp not_collg
|
|
||||||
bfx:
|
|
||||||
add dword [ballxv],10
|
|
||||||
|
|
||||||
|
|
||||||
; mov dword [ballyv],20
|
|
||||||
not_collg:
|
|
||||||
|
|
||||||
;com move
|
|
||||||
cx_move:
|
|
||||||
cmp dword [bally],200
|
|
||||||
jna cno_m
|
|
||||||
mov eax,dword [ballx]
|
|
||||||
cmp dword [ply2x],eax
|
|
||||||
je cno_m
|
|
||||||
cmp dword [ply2x],eax
|
|
||||||
ja cm_m
|
|
||||||
cm_p:
|
|
||||||
add dword [ply2x],3
|
|
||||||
jmp cno_m
|
|
||||||
cm_m:
|
|
||||||
sub dword [ply2x],3
|
|
||||||
cno_m:
|
|
||||||
|
|
||||||
gravity:
|
|
||||||
cmp dword [gravtime],0
|
|
||||||
je no_dg
|
|
||||||
dec dword [gravtime]
|
|
||||||
no_dg:
|
|
||||||
|
|
||||||
draw_gravity:
|
|
||||||
cmp dword [gravtime],0
|
|
||||||
je nograv
|
|
||||||
mov eax,dword [ply1x]
|
|
||||||
mov ebx,dword [ply1y]
|
|
||||||
add ebx,20
|
|
||||||
mov dword [gravx],eax
|
|
||||||
mov dword [gravy],ebx
|
|
||||||
jmp endgrav
|
|
||||||
nograv:
|
|
||||||
mov dword [gravx],1000
|
|
||||||
mov dword [gravy],1000
|
|
||||||
endgrav:
|
|
||||||
|
|
||||||
redraw_images:
|
|
||||||
setimg dword [ply1x],dword [ply1y],img
|
|
||||||
setimg dword [ply2x],dword [ply2y],img2 ;2
|
|
||||||
setimg dword [ballx],dword [bally],img3
|
|
||||||
setimg dword [gravx],dword [gravy],img5
|
|
||||||
|
|
||||||
|
|
||||||
delay 2 ;don't generate delay for fast speed programm
|
|
||||||
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
red:
|
|
||||||
call draw_window
|
call draw_window
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,120*65536+100
|
||||||
|
mov ecx,0x00ffdd00
|
||||||
|
mov esi,14
|
||||||
|
cmp [scp1],20
|
||||||
|
jne win
|
||||||
|
mov edx,w1
|
||||||
|
mcall
|
||||||
|
jmp still
|
||||||
|
win:
|
||||||
|
mov edx,w2
|
||||||
|
mcall
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
key: ; key
|
; *********************************************
|
||||||
mov eax,2
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||||
mcall
|
; *********************************************
|
||||||
cmp ah,key_Left
|
|
||||||
jne no_l
|
|
||||||
sub dword [ply1rx],16
|
|
||||||
no_l:
|
|
||||||
cmp ah,key_Right
|
|
||||||
jne no_r
|
|
||||||
add dword [ply1rx],16
|
|
||||||
no_r:
|
|
||||||
cmp ah,key_Up
|
|
||||||
jne no_u
|
|
||||||
sub dword [ply1ry],16
|
|
||||||
no_u:
|
|
||||||
cmp ah,key_Down
|
|
||||||
jne no_d
|
|
||||||
add dword [ply1ry],16
|
|
||||||
no_d:
|
|
||||||
cmp ah,key_Space
|
|
||||||
jne no_sp
|
|
||||||
mov dword [gravtime],100
|
|
||||||
no_sp:
|
|
||||||
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
button: ; button
|
|
||||||
mov eax,17 ; get id
|
|
||||||
mcall
|
|
||||||
cmp ah,1 ; button id=1 ?
|
|
||||||
jne noclose
|
|
||||||
mov eax,-1 ; close this program
|
|
||||||
mcall
|
|
||||||
noclose:
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
|
|
||||||
draw_window:
|
draw_window:
|
||||||
startwd
|
|
||||||
window 0,0,640+8,480+24,window_Skinned
|
mov eax,12
|
||||||
label 12,8,'PONG: USE ARROW KEYS SCORE',cl_White+font_Big
|
mov ebx,1
|
||||||
endwd
|
mcall
|
||||||
|
|
||||||
|
|
||||||
|
mov eax,0
|
||||||
|
mov ebx,100*65536+320
|
||||||
|
mov ecx,100*65536+250
|
||||||
|
mov edx,0x134873a0 ;70d0
|
||||||
|
mov edi,labelt
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,8
|
||||||
|
mov ebx,20*65536+80
|
||||||
|
mov ecx,220*65536+20
|
||||||
|
mov edx,2
|
||||||
|
mov esi,0x900000
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,38*65536+227
|
||||||
|
mov ecx,0x00FFFFFF
|
||||||
|
mov edx,b0lab
|
||||||
|
mov esi,8
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,25*65536+30
|
||||||
|
mov ecx,0x00ffdd00
|
||||||
|
mov edx,welcome
|
||||||
|
mov esi,40
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,220*65536+228
|
||||||
|
mov ecx,0x00ffdd00
|
||||||
|
mov edx,scotext
|
||||||
|
mov esi,11
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,47
|
||||||
|
mov ebx,0x00020000
|
||||||
|
mov ecx,[scp1]
|
||||||
|
mov edx,268 shl 16+228
|
||||||
|
mov esi,0x0000ddff
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,47
|
||||||
|
mov ebx,0x00020000
|
||||||
|
mov ecx,[scp2]
|
||||||
|
mov edx,285 shl 16+228
|
||||||
|
mov esi,0x0000ddff
|
||||||
|
mcall
|
||||||
|
|
||||||
|
mov eax,12
|
||||||
|
mov ebx,2
|
||||||
|
mcall
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
; DATA AREA
|
; DATA AREA
|
||||||
xt dd 100
|
posya dd 96*65536+64 ;default position paddle
|
||||||
yt dd 100
|
posyb dd 96*65536+64
|
||||||
|
bposx dd 152*65536+16 ;default position ball
|
||||||
|
bposy dd 119*65536+16
|
||||||
|
mposx dd 65536 ;richtung ball
|
||||||
|
mposy dd 65536
|
||||||
|
control dd 0x0
|
||||||
|
delay dd 0x1 ;delay betw. frames
|
||||||
|
scp1 dd 0x0
|
||||||
|
scp2 dd 0x0
|
||||||
|
|
||||||
gravtime dd 10
|
|
||||||
gravx dd 1000
|
|
||||||
gravy dd 1000
|
|
||||||
|
|
||||||
ply1rx dd 200
|
scotext:
|
||||||
ply1ry dd 50
|
db 'SCORE: :'
|
||||||
|
welcome:
|
||||||
|
db 'PLAYER1: Q , A PLAYER2: , '
|
||||||
|
b0lab:
|
||||||
|
db 'NEW GAME'
|
||||||
|
labelt:
|
||||||
|
db 'PONG FOR MENUET v1.0',0
|
||||||
|
w1:
|
||||||
|
db 'Player 1 wins!'
|
||||||
|
w2:
|
||||||
|
db 'Player 2 wins!'
|
||||||
|
clsign:
|
||||||
|
db 'x'
|
||||||
|
|
||||||
ply1x dd 200
|
ball:
|
||||||
ply1y dd 50
|
file "ball.raw"
|
||||||
|
|
||||||
ply2x dd 200
|
paddle:
|
||||||
ply2y dd 400
|
file "paddle.raw"
|
||||||
|
|
||||||
ballx dd 200
|
|
||||||
bally dd 200
|
|
||||||
|
|
||||||
ballyv dd 3
|
|
||||||
ballxv dd 3
|
|
||||||
|
|
||||||
scorea dd 0
|
|
||||||
scoreb dd 0
|
|
||||||
|
|
||||||
counter dd 0
|
|
||||||
tsoi dd 0
|
|
||||||
|
|
||||||
IM_END:
|
|
||||||
|
|
||||||
img:
|
|
||||||
rd 32*32*3+8
|
|
||||||
img2:
|
|
||||||
rb 32*32*3+8
|
|
||||||
img3:
|
|
||||||
rb 32*32*3+8
|
|
||||||
img4:
|
|
||||||
rb 32*32*3+8
|
|
||||||
img5:
|
|
||||||
rb 32*32*3+8
|
|
||||||
|
|
||||||
temp_area:
|
|
||||||
rb 0x15000
|
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
|
@ -24,7 +24,7 @@ include '..\..\..\macros.inc'
|
|||||||
;__DEBUG__ fix 1
|
;__DEBUG__ fix 1
|
||||||
;__DEBUG_LEVEL__ fix 1
|
;__DEBUG_LEVEL__ fix 1
|
||||||
;include 'debug-fdo.inc'
|
;include 'debug-fdo.inc'
|
||||||
flipdelay = 5
|
flipdelay = 7
|
||||||
|
|
||||||
START: ; start of execution
|
START: ; start of execution
|
||||||
|
|
||||||
@ -454,14 +454,11 @@ draw_text:
|
|||||||
mcall
|
mcall
|
||||||
sub ebx,1 shl 16
|
sub ebx,1 shl 16
|
||||||
mcall
|
mcall
|
||||||
dec ebx
|
sub ebx,1 shl 16 +1
|
||||||
sub ebx,1 shl 16
|
|
||||||
mcall
|
mcall
|
||||||
sub ebx,1 shl 16
|
sub ebx,1 shl 16 + 1
|
||||||
dec ebx
|
|
||||||
mcall
|
mcall
|
||||||
dec ebx
|
add ebx,1 shl 16 - 1
|
||||||
add ebx,1 shl 16
|
|
||||||
mcall
|
mcall
|
||||||
inc ebx
|
inc ebx
|
||||||
mov ecx,0xffffff
|
mov ecx,0xffffff
|
||||||
|
@ -209,9 +209,9 @@ still:
|
|||||||
mcall
|
mcall
|
||||||
mov eax,4
|
mov eax,4
|
||||||
mov ebx,19*65536+225
|
mov ebx,19*65536+225
|
||||||
mov ecx,0xff0000
|
mov ecx,0xc0ff0000
|
||||||
mov edx,add_text
|
mov edx,add_text
|
||||||
mov esi,add_text_len-add_text
|
mov edi,0xffffff
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
mov eax,10
|
mov eax,10
|
||||||
@ -277,9 +277,9 @@ still:
|
|||||||
mcall
|
mcall
|
||||||
mov eax,4
|
mov eax,4
|
||||||
mov ebx,19*65536+225
|
mov ebx,19*65536+225
|
||||||
mov ecx,0xff0000
|
mov ecx,0xc0ff0000
|
||||||
mov edx,rem_text
|
mov edx,rem_text
|
||||||
mov esi,rem_text_len-rem_text
|
mov edi,0xffffff
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
mov eax,10
|
mov eax,10
|
||||||
@ -469,8 +469,6 @@ load_icon_list:
|
|||||||
add esi,76+2
|
add esi,76+2
|
||||||
loop ldl1
|
loop ldl1
|
||||||
|
|
||||||
;popa
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -489,8 +487,6 @@ positions dd 65,34,3
|
|||||||
|
|
||||||
read_string:
|
read_string:
|
||||||
|
|
||||||
;pusha
|
|
||||||
|
|
||||||
sub eax,11
|
sub eax,11
|
||||||
shl eax,2
|
shl eax,2
|
||||||
add eax,positions
|
add eax,positions
|
||||||
@ -532,8 +528,6 @@ read_string:
|
|||||||
nobsl:
|
nobsl:
|
||||||
cmp eax,31
|
cmp eax,31
|
||||||
jbe f11
|
jbe f11
|
||||||
|
|
||||||
keyok:
|
|
||||||
mov [edi],al
|
mov [edi],al
|
||||||
call print_strings
|
call print_strings
|
||||||
|
|
||||||
@ -554,8 +548,6 @@ read_string:
|
|||||||
|
|
||||||
call print_strings
|
call print_strings
|
||||||
|
|
||||||
;popa
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -672,17 +664,17 @@ draw_window:
|
|||||||
cmp ah,9
|
cmp ah,9
|
||||||
jbe newbline
|
jbe newbline
|
||||||
|
|
||||||
mov ebx,19*65536+225
|
mov ebx,24*65536+225
|
||||||
mov ecx,0xffffff
|
mov ecx,0xffffff
|
||||||
mov edx,text
|
mov edx,text
|
||||||
mov esi,37
|
mov esi,36
|
||||||
mov eax,4
|
mov eax,4
|
||||||
newline:
|
newline:
|
||||||
mov ecx,[edx]
|
mov ecx,[edx]
|
||||||
add edx,4
|
add edx,4
|
||||||
mcall
|
mcall
|
||||||
add ebx,14
|
add ebx,14
|
||||||
add edx,37
|
add edx,36
|
||||||
cmp [edx],byte 'x'
|
cmp [edx],byte 'x'
|
||||||
jne newline
|
jne newline
|
||||||
|
|
||||||
@ -712,16 +704,16 @@ icons_reserved:
|
|||||||
|
|
||||||
|
|
||||||
text:
|
text:
|
||||||
db 0,0,0,0, 'CLICK ON ICON POSITION TO EDIT '
|
db 0,0,0,0, 'Click on icon position to edit '
|
||||||
db 0,0,0,0, ' '
|
db 0,0,0,0, ' '
|
||||||
db 255,255,255,0 , ' ICON TEXT '
|
db 255,255,255,0 , 'Icon text '
|
||||||
db 255,255,255,0 , ' ICON APP '
|
db 255,255,255,0 , 'Icon app '
|
||||||
db 255,255,255,0 , ' ICON FILE '
|
db 255,255,255,0 , 'Icon file '
|
||||||
db 0,0,0,0, ' '
|
db 0,0,0,0, ' '
|
||||||
db 255,255,255,0, ' SAVE AND APPLY ALL CHANGES '
|
db 255,255,255,0, ' Save and apply all changes '
|
||||||
db 0,0,0,0, ' '
|
db 0,0,0,0, ' '
|
||||||
db 255,255,255,0, ' ADD ICON REMOVE ICON'
|
db 255,255,255,0, ' Add icon Remove icon'
|
||||||
db 'x' ; <- END MARKER, DONT DELETE
|
db 'x' ; <- End marker, dont delete
|
||||||
|
|
||||||
|
|
||||||
title db 'Icon manager',0
|
title db 'Icon manager',0
|
||||||
@ -731,11 +723,9 @@ icons dd 0
|
|||||||
addr dd 0
|
addr dd 0
|
||||||
ya dd 0
|
ya dd 0
|
||||||
|
|
||||||
add_text db 'PRESS BUTTON OF UNUSED ICON POSITION'
|
add_text db 'Press button of unused icon position',0
|
||||||
add_text_len:
|
|
||||||
|
|
||||||
rem_text db 'PRESS BUTTON OF USED ICON'
|
rem_text db 'Press button of used icon ',0
|
||||||
rem_text_len:
|
|
||||||
|
|
||||||
finfo_start:
|
finfo_start:
|
||||||
dd 7
|
dd 7
|
||||||
|
Loading…
Reference in New Issue
Block a user