[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]