forked from KolibriOS/kolibrios
Pong: Fix title (score), whitespace changes.
git-svn-id: svn://kolibrios.org@6024 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e48064d090
commit
8f4ba7ce29
@ -89,44 +89,44 @@ _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
|
||||
mov esi, dword[img1_off] ;xs1
|
||||
mov edi, dword[img2_off] ;ys2
|
||||
mov eax, x1 ;
|
||||
mov ebx, x2 ;
|
||||
call _1dbounce
|
||||
mov edx,ecx
|
||||
mov esi, dword[img1_off+4] ;ys1
|
||||
mov edi, dword[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
|
||||
cmp ebx,eax
|
||||
jnae anot
|
||||
add eax,esi
|
||||
cmp eax,ebx
|
||||
jna nbc
|
||||
jmp bc
|
||||
anot:
|
||||
add ebx,edi
|
||||
cmp ebx,eax
|
||||
jna nbc
|
||||
cmp ebx,eax
|
||||
jna nbc
|
||||
bc:
|
||||
mov ecx,1
|
||||
ret
|
||||
ret
|
||||
nbc:
|
||||
mov ecx,0
|
||||
ret
|
||||
mov ecx,0
|
||||
ret
|
||||
end if
|
||||
bounce:
|
||||
mov otv,1
|
||||
mov otv,1
|
||||
exit:
|
||||
}
|
||||
|
||||
@ -316,14 +316,14 @@ local noaddword
|
||||
yespicsize:
|
||||
mov eax,bmp_load_area
|
||||
mov ebx,eax
|
||||
add ebx, [bmp_load_area+2];file size
|
||||
add ebx, dword[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]
|
||||
add eax, dword[bmp_load_area+10]
|
||||
mov dword [sop],eax ;sop-start of picture in file
|
||||
add eax, [bmp_load_area+34]
|
||||
add eax, dword[bmp_load_area+34]
|
||||
mov dword [eop],eax ;eop-end of picture in file
|
||||
mov eax, [bmp_load_area+18]
|
||||
mov eax, dword[bmp_load_area+18]
|
||||
lea eax,[eax+2*eax] ;3x pixels in eax
|
||||
|
||||
mov edi,dword [bmp_soi] ;initializing
|
||||
@ -341,9 +341,9 @@ local noaddword
|
||||
rep movsd
|
||||
convert1:
|
||||
pop edi
|
||||
sub esi,dword [bps]
|
||||
sub esi,dword [bps]
|
||||
cmp esi,dword [sop]
|
||||
sub esi, dword[bps]
|
||||
sub esi, dword[bps]
|
||||
cmp esi, dword[sop]
|
||||
jb end_bmp;nomorestring
|
||||
add edi,eax
|
||||
jmp nextstring
|
||||
@ -353,10 +353,10 @@ local noaddword
|
||||
|
||||
convertno32:
|
||||
mov ebx,bmp_load_area
|
||||
add ebx, [bmp_load_area+14]
|
||||
add ebx, dword[bmp_load_area+14]
|
||||
add ebx,14 ;start of color table
|
||||
push esi
|
||||
add esi,dword [bps]
|
||||
add esi, dword[bps]
|
||||
mov dword [eos],esi
|
||||
pop esi
|
||||
nextelem:
|
||||
|
@ -5,6 +5,8 @@
|
||||
; Not use bmpfile!
|
||||
|
||||
;******************************************************************************
|
||||
format binary as ""
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ; 8 byte id
|
||||
@ -13,7 +15,7 @@
|
||||
dd IM_END ; size of image
|
||||
dd 0x300000 ; memory for app
|
||||
dd 0x300000 ; esp
|
||||
dd temp_area , 0x0 ; I_Param , I_Icon
|
||||
dd temp_area, 0x0 ; I_Param , I_Path
|
||||
|
||||
;******************************************************************************
|
||||
|
||||
@ -24,341 +26,324 @@ include 'ascgml.inc'
|
||||
|
||||
|
||||
START: ; start of execution
|
||||
call draw_window
|
||||
|
||||
; loadbmp '/RD/1/PONG.BMP',temp_area,I_END,tsoi
|
||||
convbmp pongfile,tsoi
|
||||
bmptoimg pongfile,tsoi,pong
|
||||
getimg pong,0,0,80,4,img
|
||||
getimg pong,0,4,80,4,img2
|
||||
getimg pong,5,38,15,15,img3
|
||||
getimg pong,0,8,80,20,img5
|
||||
fullimg img4 , 80 ,20 ,0x00000000 ;black for rocket
|
||||
fullimg img6 , 15 ,15 ,0x00000000 ;black for ball
|
||||
|
||||
call draw_window
|
||||
|
||||
convbmp pongfile, tsoi
|
||||
bmptoimg pongfile, tsoi,pong
|
||||
getimg pong, 0, 0, 80, 4, img
|
||||
getimg pong, 0, 4, 80, 4, img2
|
||||
getimg pong, 5, 38, 15, 15, img3
|
||||
getimg pong, 0, 8, 80, 20, img5
|
||||
fullimg img4, 80 ,20 ,0x00000000 ;black for rocket
|
||||
fullimg img6, 15 ,15 ,0x00000000 ;black for ball
|
||||
|
||||
still:
|
||||
scevent red,key,button
|
||||
|
||||
scevent red,key,button
|
||||
;mcall 48, 4 ;get skin width
|
||||
;sub [skin_h], 16
|
||||
;div eax, 2
|
||||
;mov [skin_h], eax
|
||||
|
||||
;mcall 48, 4 ;get skin width
|
||||
;sub [skin_h], 16
|
||||
;div eax, 2
|
||||
;mov [skin_h], eax
|
||||
|
||||
outcount dword [scoreb],300,8,cl_Blue,5*65536
|
||||
outcount dword [scorea],350,8,cl_Red,5*65536
|
||||
outcount [scoreb], 300, 4, 0x10000000 + cl_Blue, 5 shl 16
|
||||
outcount [scorea], 350, 4, 0x10000000 + cl_Red, 5 shl 16
|
||||
|
||||
del_images:
|
||||
setimg dword [ply1x],dword [ply1y],img4
|
||||
setimg dword [ply2x],dword [ply2y],img4
|
||||
setimg dword [ballx],dword [bally],img6
|
||||
setimg dword [gravx],dword [gravy],img4
|
||||
setimg [ply1x], [ply1y], img4
|
||||
setimg [ply2x], [ply2y], img4
|
||||
setimg [ballx], [bally], img6
|
||||
setimg [gravx], [gravy], img4
|
||||
|
||||
move_ply1:
|
||||
correct [ply1x], [ply1rx], 4
|
||||
correct [ply1y], [ply1ry], 2
|
||||
|
||||
correct [ply1x],[ply1rx],4
|
||||
correct [ply1y],[ply1ry],2
|
||||
|
||||
;automove ball
|
||||
mov eax,dword [ballxv]
|
||||
add dword [ballx],eax
|
||||
mov eax,dword [ballyv]
|
||||
add dword [bally],eax
|
||||
|
||||
; automove ball
|
||||
mov eax, [ballxv]
|
||||
add [ballx], eax
|
||||
mov eax, [ballyv]
|
||||
add [bally], eax
|
||||
|
||||
;autoslow ball
|
||||
cmp dword [ballxv],0
|
||||
jl ballb
|
||||
cmp [ballxv], 0
|
||||
jl ballb
|
||||
balla:
|
||||
cmp dword [ballxv],2
|
||||
jng balln
|
||||
dec dword [ballxv]
|
||||
jmp balln
|
||||
cmp [ballxv], 2
|
||||
jng balln
|
||||
dec [ballxv]
|
||||
jmp balln
|
||||
ballb:
|
||||
cmp dword [ballxv],-2
|
||||
jnl balln
|
||||
inc dword [ballxv]
|
||||
jmp balln
|
||||
cmp [ballxv], -2
|
||||
jnl balln
|
||||
inc [ballxv]
|
||||
jmp balln
|
||||
balln:
|
||||
cmp dword [ballyv],2
|
||||
jng by_n
|
||||
dec dword [ballyv]
|
||||
cmp [ballyv], 2
|
||||
jng by_n
|
||||
dec [ballyv]
|
||||
by_n:
|
||||
|
||||
;ball collusion of screen
|
||||
cmp dword [ballx],640-32
|
||||
jna xa_ok
|
||||
neg dword [ballxv]
|
||||
cmp [ballx], 640-32
|
||||
jna xa_ok
|
||||
neg [ballxv]
|
||||
xa_ok:
|
||||
cmp dword [ballx],6
|
||||
jnb xb_ok
|
||||
neg dword [ballxv]
|
||||
cmp [ballx], 6
|
||||
jnb xb_ok
|
||||
neg [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
|
||||
inc dword [scoreb]
|
||||
mov dword [bally],240
|
||||
mov dword [ballx],310
|
||||
mov dword [ballyv],2
|
||||
random 5,dword [ballxv]
|
||||
sub dword [ballxv],2
|
||||
cmp [bally], 466
|
||||
jng yax_ok
|
||||
call draw_window
|
||||
inc [scoreb]
|
||||
mov [bally], 240
|
||||
mov [ballx], 310
|
||||
mov [ballyv], 2
|
||||
random 5, [ballxv]
|
||||
sub [ballxv], 2
|
||||
yax_ok:
|
||||
cmp dword [bally],30
|
||||
jnl yax_ok2
|
||||
call draw_window
|
||||
inc dword [scorea]
|
||||
mov dword [bally],240
|
||||
mov dword [ballx],310
|
||||
mov dword [ballyv],2
|
||||
random 5,dword [ballxv]
|
||||
sub dword [ballxv],2
|
||||
cmp [bally], 30
|
||||
jnl yax_ok2
|
||||
call draw_window
|
||||
inc [scorea]
|
||||
mov [bally], 240
|
||||
mov [ballx], 310
|
||||
mov [ballyv], 2
|
||||
random 5, [ballxv]
|
||||
sub [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
|
||||
cmp [ballxv], 0
|
||||
jne norx
|
||||
random 5, [ballxv]
|
||||
sub [ballxv], 2
|
||||
cmp [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],4
|
||||
; neg dword [ballxv]
|
||||
collimg img, [ply1x], [ply1y], img3, [ballx], [bally], eax
|
||||
cmp eax, 1
|
||||
jne not_coll
|
||||
neg [ballyv]
|
||||
add [bally], 4
|
||||
; neg [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],4
|
||||
; neg dword [ballxv]
|
||||
collimg img, [ply2x], [ply2y], img3, [ballx], [bally], eax
|
||||
cmp eax, 1
|
||||
jne not_collcom
|
||||
neg [ballyv]
|
||||
sub [bally], 4
|
||||
; 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]
|
||||
collimg img, [gravx], [gravy], img3, [ballx], [bally], eax
|
||||
cmp eax, 1
|
||||
jne not_collg
|
||||
neg [ballyv]
|
||||
|
||||
; mov dword [ballxv],-20
|
||||
; mov [ballxv], -20
|
||||
|
||||
cmp dword [ballyv],0
|
||||
jl ab
|
||||
jg bf
|
||||
jmp not_collgx
|
||||
cmp [ballyv], 0
|
||||
jl ab
|
||||
jg bf
|
||||
jmp not_collgx
|
||||
ab:
|
||||
sub dword [ballyv],25
|
||||
jmp not_collgx
|
||||
sub [ballyv], 25
|
||||
jmp not_collgx
|
||||
bf:
|
||||
add dword [ballyv],25
|
||||
add [ballyv], 25
|
||||
not_collgx:
|
||||
cmp dword [ballxv],0
|
||||
jl abx
|
||||
jg bfx
|
||||
jmp not_collg
|
||||
cmp [ballxv], 0
|
||||
jl abx
|
||||
jg bfx
|
||||
jmp not_collg
|
||||
abx:
|
||||
sub dword [ballxv],8 ;15
|
||||
jmp not_collg
|
||||
sub [ballxv], 8 ;15
|
||||
jmp not_collg
|
||||
bfx:
|
||||
add dword [ballxv],8
|
||||
add [ballxv], 8
|
||||
|
||||
|
||||
; mov dword [ballyv],20
|
||||
; mov [ballyv], 20
|
||||
not_collg:
|
||||
|
||||
;ply contorl
|
||||
cmp dword [ply1rx],560
|
||||
jna plyok
|
||||
cmp dword [ply1rx],12000
|
||||
jna paa
|
||||
mov dword [ply1rx],4
|
||||
jmp plyok
|
||||
cmp [ply1rx], 560
|
||||
jna plyok
|
||||
cmp [ply1rx], 12000
|
||||
jna paa
|
||||
mov [ply1rx], 4
|
||||
jmp plyok
|
||||
paa:
|
||||
mov dword [ply1rx],560
|
||||
mov [ply1rx], 560
|
||||
plyok:
|
||||
|
||||
|
||||
;com contorl
|
||||
cmp dword [ply2x],560
|
||||
jna cplyok
|
||||
cmp dword [ply2x],12000
|
||||
jna cpaa
|
||||
mov dword [ply2x],4
|
||||
jmp cplyok
|
||||
cmp [ply2x], 560
|
||||
jna cplyok
|
||||
cmp [ply2x], 12000
|
||||
jna cpaa
|
||||
mov [ply2x], 4
|
||||
jmp cplyok
|
||||
cpaa:
|
||||
mov dword [ply2x],560
|
||||
mov [ply2x], 560
|
||||
cplyok:
|
||||
|
||||
|
||||
;com move
|
||||
cx_move:
|
||||
cmp dword [bally],160
|
||||
jna cno_m
|
||||
mov eax,dword [ballx]
|
||||
sub eax,30
|
||||
cmp dword [ply2x],eax
|
||||
je cno_m
|
||||
cmp dword [ply2x],eax
|
||||
ja cm_m
|
||||
cmp [bally], 160
|
||||
jna cno_m
|
||||
mov eax, [ballx]
|
||||
sub eax, 30
|
||||
cmp [ply2x], eax
|
||||
je cno_m
|
||||
cmp [ply2x], eax
|
||||
ja cm_m
|
||||
cm_p:
|
||||
add dword [ply2x],3
|
||||
jmp cno_m
|
||||
add [ply2x], 3
|
||||
jmp cno_m
|
||||
cm_m:
|
||||
sub dword [ply2x],3
|
||||
sub [ply2x], 3
|
||||
cno_m:
|
||||
|
||||
;garvity
|
||||
gravity:
|
||||
cmp dword [gravtime],0
|
||||
je no_dg
|
||||
dec dword [gravtime]
|
||||
cmp [gravtime], 0
|
||||
je no_dg
|
||||
dec [gravtime]
|
||||
no_dg:
|
||||
|
||||
draw_gravity:
|
||||
cmp dword [gravtime],0
|
||||
je nograv
|
||||
mov eax,dword [ply1x]
|
||||
mov ebx,dword [ply1y]
|
||||
add ebx,10
|
||||
mov dword [gravx],eax
|
||||
mov dword [gravy],ebx
|
||||
jmp endgrav
|
||||
cmp [gravtime], 0
|
||||
je nograv
|
||||
mov eax, [ply1x]
|
||||
mov ebx, [ply1y]
|
||||
add ebx, 10
|
||||
mov [gravx], eax
|
||||
mov [gravy], ebx
|
||||
jmp endgrav
|
||||
nograv:
|
||||
mov dword [gravx],1000
|
||||
mov dword [gravy],1000
|
||||
mov [gravx], 1000
|
||||
mov [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
|
||||
setimg [ply1x], [ply1y], img
|
||||
setimg [ply2x], [ply2y], img2
|
||||
setimg [ballx], [bally], img3
|
||||
setimg [gravx], [gravy], img5
|
||||
|
||||
delay 1 ;don't generate delay for fast speed programm
|
||||
|
||||
delay 1 ;don't generate delay for fast speed programm
|
||||
|
||||
jmp still
|
||||
jmp still
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
jmp still
|
||||
call draw_window
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2
|
||||
mcall
|
||||
cmp ah,key_Left
|
||||
jne no_l
|
||||
sub dword [ply1rx],32 ;16
|
||||
mov eax, 2
|
||||
mcall
|
||||
cmp ah, key_Left
|
||||
jne no_l
|
||||
sub [ply1rx], 32 ;16
|
||||
no_l:
|
||||
cmp ah,key_Right
|
||||
jne no_r
|
||||
add dword [ply1rx],32 ;16
|
||||
cmp ah, key_Right
|
||||
jne no_r
|
||||
add [ply1rx], 32 ;16
|
||||
no_r:
|
||||
cmp ah,key_Up
|
||||
jne no_u
|
||||
sub dword [ply1ry],16
|
||||
cmp ah, key_Up
|
||||
jne no_u
|
||||
sub [ply1ry], 16
|
||||
no_u:
|
||||
cmp ah,key_Down
|
||||
jne no_d
|
||||
add dword [ply1ry],16
|
||||
cmp ah, key_Down
|
||||
jne no_d
|
||||
add [ply1ry], 16
|
||||
no_d:
|
||||
cmp ah,key_Space
|
||||
jne no_sp
|
||||
mov dword [gravtime],100
|
||||
cmp ah, key_Space
|
||||
jne no_sp
|
||||
mov [gravtime], 100
|
||||
no_sp:
|
||||
|
||||
jmp still
|
||||
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
|
||||
mov eax, 17 ; get id
|
||||
mcall
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
jne noclose
|
||||
mov eax, -1 ; close this program
|
||||
mcall
|
||||
noclose:
|
||||
jmp still
|
||||
jmp still
|
||||
|
||||
|
||||
draw_window:
|
||||
mcall 12,1 ;start window redraw
|
||||
mcall 0, <10, 640+8>, <10, 480+24>, 0x14000000,, wtitle
|
||||
mcall 12,2 ;end window redraw
|
||||
ret
|
||||
mcall 12,1 ;start window redraw
|
||||
mcall 0, <10, 640+8>, <10, 480+24>, 0x14000000,, wtitle
|
||||
mcall 12,2 ;end window redraw
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
wtitle db 'PONG: USE ARROW KEYS SCORE:',0
|
||||
wtitle db 'PONG: USE ARROW KEYS SCORE:',0
|
||||
;skin_h dd 25
|
||||
|
||||
xt dd 100
|
||||
yt dd 100
|
||||
xt dd 100
|
||||
yt dd 100
|
||||
|
||||
gravtime dd 10
|
||||
gravx dd 1000
|
||||
gravy dd 1000
|
||||
gravtime dd 10
|
||||
gravx dd 1000
|
||||
gravy dd 1000
|
||||
|
||||
ply1rx dd 200
|
||||
ply1ry dd 50
|
||||
ply1rx dd 200
|
||||
ply1ry dd 50
|
||||
|
||||
ply1x dd 200
|
||||
ply1y dd 50
|
||||
ply1x dd 200
|
||||
ply1y dd 50
|
||||
|
||||
ply2x dd 200
|
||||
ply2y dd 400
|
||||
ply2x dd 200
|
||||
ply2y dd 400
|
||||
|
||||
ballx dd 200
|
||||
bally dd 200
|
||||
ballx dd 200
|
||||
bally dd 200
|
||||
|
||||
ballyv dd 3
|
||||
ballxv dd 3
|
||||
ballyv dd 3
|
||||
ballxv dd 3
|
||||
|
||||
scorea dd 0
|
||||
scoreb dd 0
|
||||
scorea dd 0
|
||||
scoreb dd 0
|
||||
|
||||
counter dd 0
|
||||
tsoi dd 0
|
||||
counter dd 0
|
||||
tsoi dd 0
|
||||
|
||||
pongfile:
|
||||
file 'pong.bmp'
|
||||
pongfile file 'pong.bmp'
|
||||
|
||||
IM_END:
|
||||
|
||||
temp:
|
||||
rb 20000
|
||||
temp rb 20000
|
||||
|
||||
pong:
|
||||
rb 80*60*3+8
|
||||
img:
|
||||
rb 32*32*3+8
|
||||
img2:
|
||||
rb 32*32*3+8
|
||||
img3:
|
||||
rb 32*32*3+8
|
||||
img4:
|
||||
rb 80*20*3+8
|
||||
img5:
|
||||
rb 32*32*3+8
|
||||
img6:
|
||||
rb 15*15*3+8
|
||||
pong rb 80*60*3+8
|
||||
img rb 32*32*3+8
|
||||
img2 rb 32*32*3+8
|
||||
img3 rb 32*32*3+8
|
||||
img4 rb 80*20*3+8
|
||||
img5 rb 32*32*3+8
|
||||
img6 rb 15*15*3+8
|
||||
|
||||
temp_area:
|
||||
rb 0x15000
|
||||
temp_area rb 0x15000
|
||||
|
||||
I_END:
|
||||
|
Loading…
Reference in New Issue
Block a user