diff --git a/programs/games/pong3/trunk/ascgl.inc b/programs/games/pong3/trunk/ascgl.inc index 0c7b4d4f8c..0620361003 100644 --- a/programs/games/pong3/trunk/ascgl.inc +++ b/programs/games/pong3/trunk/ascgl.inc @@ -89,45 +89,45 @@ _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 -bc: + 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 -exit: +bounce: + mov otv,1 +exit: } ; SETBMP - Set bmp to window @@ -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: diff --git a/programs/games/pong3/trunk/pong3.asm b/programs/games/pong3/trunk/pong3.asm index 389e7ad0e5..c1ce998a2e 100644 --- a/programs/games/pong3/trunk/pong3.asm +++ b/programs/games/pong3/trunk/pong3.asm @@ -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 - - outcount dword [scoreb],300,8,cl_Blue,5*65536 - outcount dword [scorea],350,8,cl_Red,5*65536 + ;mcall 48, 4 ;get skin width + ;sub [skin_h], 16 + ;div eax, 2 + ;mov [skin_h], eax + + 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: