size : 1734 uploaded_on : Thu Jul 2 00:00:00 1998 modified_on : Wed Dec 8 14:03:05 1999 title : Sprites org_filename : Sprites1.pas author : Bas van Gaalen authoremail : description : simple sprite demonstration keywords : tested : not tested yet submitted_by : The CKB Crew submitted_by_email : ckb@netalive.org uploaded_by : nobody modified_by : nobody owner : nobody lang : pas file-type : text/plain category : pascal-dos-graphics __END_OF_HEADER__ program testsprites; { SPRITES1.PAS } { Sprites demo, version 1, by Bas van Gaalen } uses u_vga,u_pal,u_kb; const nofsprites=100; spr:array[0..8*8-1] of byte=( 0,0,0,1,1,0,0,0, 0,1,1,2,2,1,1,0, 0,1,2,2,2,2,1,0, 1,2,2,2,2,2,2,1, 1,2,2,2,2,2,2,1, 0,1,2,2,2,2,1,0, 0,1,1,2,2,1,1,0, 0,0,0,1,1,0,0,0); var stab1,stab2:array[0..255] of integer; virscr,bckscr:pointer; procedure createsprite(nr:byte); begin with sprite[nr] do begin xpos:=0; ypos:=0; xsize:=8; ysize:=8; buf:=@spr; seethru:=0; transparant:=false; end; end; var idxarr1,idxarr2:array[1..maxsprites] of byte; i,j:word; begin setvideo($13); setrgb(1,20,20,30); setrgb(2,30,30,40); for i:=3 to 252 do setrgb(i,i div 4,5+i div 5,10+i div 6); for i:=1 to nofsprites do begin createsprite(i); idxarr1[i]:=i*4; idxarr2[i]:=50-i*6; end; for i:=0 to 255 do begin stab1[i]:=round(sin(i*2*pi/255)*100)+100; stab2[i]:=round(cos(i*2*pi/255)*50)+50; end; getmem(virscr,64000); cls(virscr,64000); getmem(bckscr,64000); cls(bckscr,64000); for i:=0 to 319 do for j:=0 to 199 do mem[seg(bckscr^):j*320+i]:=3+(i+j) mod 250; flip(bckscr,virscr,64000); destenation:=virscr; {u_border:=true;} repeat for i:=1 to nofsprites do begin movesprabs(i,stab1[idxarr1[i]]+stab2[idxarr2[i]],20+(stab2[idxarr1[i]]+stab1[idxarr2[i]]) shr 1); inc(idxarr1[i],1); inc(idxarr2[i],3); end; vretrace; setborder(2); for i:=1 to nofsprites do putback(bckscr,virscr,i); for i:=1 to nofsprites do putsprite(i); setborder(0); flip(virscr,vidptr,64000); until keypressed; freemem(virscr,64000); freemem(bckscr,64000); clearkeybuf; setvideo(u_lm); end.