[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{$A+,B-,D+,L+,N-,E-,O-,Q-,R-,S-,V-,G-,F-,I-,X-} {Borland Pascal 7.0}
{$M 16384,0,655360}
{ File: HI_Worm.pas
Version: 1.0
Date: 27-AUGUST-94
Author: John Howard jh
ANIVGA v1.2 implementation of Wormhole from Bas van Gaalen. Demonstrates
Pascal routines needed for 320x200x256x4. I have modified ANIVGA v1.2 to
provide 320x240x256x4 (not shown here). The TeleGame (tm) software
development kit (SDK) utilizes both modes. TeleGame SDK combines enhanced
ANIVGA with a multi-user communication protocol and some utilities. The SDK
provides a Turbo Pascal development system for VGA game developers. Release
date is October 1.
TeleGame (tm) products are available exclusively via:
Howard International
P.O. BOX 34633
North Kansas City, Missouri 64116 USA
}
program Hi_Worm;
USES
ANIVGA, {v1.2}
CRT;
const
divd=128;
astep=5;
xst=3;
yst=5;
var
sintab : array[0..449] of integer;
stab,ctab : array[0..255] of integer;
lstep : byte;
procedure drawpolar(xo,yo,r,a : word; c : byte);
var x,y : word;
begin
x:=160+xo+(r*sintab[90+a]) div (divd-20);
y:=100+yo+(r*sintab[a]) div divd;
PutPixel(x,y,c);
{ if (x<320) and (y<200) then mem[lvseg:320*y+x] := c; }
end;
VAR
x,y,i,j : word;
c : byte;
ch : char;
BEGIN {PROGRAM}
InitGraph;
Animate; {just to initialize pages, eventually placed sprites}
for i:=0 to 255 do begin
ctab[i]:=round(cos(pi*i/128)*60);
stab[i]:=round(sin(pi*i/128)*45);
end;
for i:=0 to 449 do sintab[i]:=round(sin(2*pi*i/360)*divd);
{clearscreen(page);}
x:=30; y:=90;
repeat
c:=19; lstep:=2; j:=10;
while j<220 do begin
i:=0;
while i<360 do begin
drawpolar(ctab[(x+(200-j)) mod 255],stab[(y+(200-j)) mod 255],j,i,c);
inc(i,astep);
end;
inc(j,lstep);
if (j mod 3)=0 then
begin
inc(lstep);
inc(c);
if c>31 then c:=31;
end;
end;
x:=xst+x mod 255;
y:=yst+y mod 255;
ANIMATE;
until keypressed;
while keypressed do ch:=readkey;
CloseRoutines;
END. {PROGRAM}
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]