home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / GFXFX2.ZIP / UNITINT.ZIP / U_VGA.INT < prev   
Text File  |  1995-02-14  |  4KB  |  115 lines

  1.  
  2. (*
  3. ** VGA graphics unit
  4. ** Contains only USEFULL procedures (who ever needs 'circle'???)
  5. ** By Bas van Gaalen
  6. *)
  7.  
  8. unit u_vga;
  9.  
  10. interface
  11.  
  12. const
  13.   maxsprites=256;
  14.   u_border:boolean=false; { used to set (or not) the bordercolor, for timing }
  15.   u_vidseg:word=$a000;                                   { VGA video-segment }
  16.   vidptr:pointer=ptr($a000,0);                      { pointer to videomemory }
  17.   u_miny:byte=1;                       { screen edges (for polygon-clipping) }
  18.   u_maxy=199;
  19.   u_minx:word=1;
  20.   u_maxx=319;
  21.   font8x14=2;                              { font constants for getfont-proc }
  22.   font8x8=3;
  23.   font8x8top=4;
  24.   font9x14=5;
  25.   font8x16=6;
  26.   font9x16=7;
  27.  
  28.   black=0;                                                 { color constants }
  29.   blue=1;
  30.   green=2;
  31.   cyan=3;
  32.   red=4;
  33.   magenta=5;
  34.   brown=6;
  35.   lightgray=7;
  36.   darkgray=8;
  37.   lightblue=9;
  38.   lightgreen=10;
  39.   lightcyan=11;
  40.   lightred=12;
  41.   lightmagenta=13;
  42.   yellow=14;
  43.   white=15;
  44.   _blue=blue shl 4;
  45.   _green=green shl 4;
  46.   _cyan=cyan shl 4;
  47.   _red=red shl 4;
  48.   _magenta=magenta shl 4;
  49.   _brown=brown shl 4;
  50.   _lightgray=lightgray shl 4;
  51.   blink=128;
  52.  
  53. type
  54.   spriterec=record                                        { sprite structure }
  55.     px,                                                      { previous xpos }
  56.     py,                                                      { previous ypos }
  57.     xpos,                                                       { x position }
  58.     ypos,                                                       { y position }
  59.     xsize,                                       { horizontal size of sprite }
  60.     ysize:word;                                    { vertical size of sprite }
  61.     buf:pointer;                        { pointer to buffer with sprite-data }
  62.     seethru:integer;                   { < 0: no seethru, else seethru-color }
  63.     transparant:boolean;     { transparant: colors are or'ed with background }
  64.   end;
  65.   spritestruc=array[1..maxsprites] of spriterec;
  66.  
  67. const
  68.   sprsize=sizeof(spriterec);                      { size of sprite structure }
  69.  
  70. var
  71.   sprite:spritestruc;
  72.   destenation,                                  { destenation virtual memory }
  73.   font:pointer;                                            { pointer to font }
  74.   u_lm:word;                                      { to store last video mode }
  75.   usefont:byte;
  76.   destseg:word;
  77.  
  78. { procedures of Bas van Gaalen }
  79. procedure setvideo(md:word);                  { set text/graphics video mode }
  80. function getvideo:word;
  81. procedure setborder(c:byte);                           { set color of border }
  82. procedure vretrace;                              { wait for vertical retrace }
  83. procedure hretrace;                            { wait for horizontal retrace }
  84. procedure displaypic(x,y:word; pic:pointer; xs,ys:word);   { display picture }
  85. procedure cls(dst:pointer; size:word);              { clear (part of) memory }
  86. procedure flip(src,dst:pointer; size:word);                 { alternate move }
  87. {procedure putpixel(c:byte; x,y:integer);}
  88. procedure putpixel(x,y:word; c:byte);
  89. function getpixel(x,y:word):byte;
  90. procedure floodfill(x,y:word; col:byte);
  91. procedure vga_line(x,y,x2,y2:integer; c:byte);
  92. procedure scalepic(pic:pointer; xsize,ysize,x,y,x1,y1:word);         { scale }
  93. procedure polygon(x1,y1,x2,y2,x3,y3,x4,y4,xo,yo:integer; c:byte);
  94. procedure vga_copy(x,y,x2,y2,destx,desty:word);
  95. procedure vga_fill(x,y,x2,y2:word; c:byte);
  96. procedure writetxt(s:string; x,y:word; c:byte);
  97. procedure getfont(fontnr:byte);
  98.  
  99. { sprite procedures }
  100. procedure movesprabs(nr:byte; x,y:word);              { move sprite absolute }
  101. procedure movesprrel(nr:byte; x,y:integer); { move sprite relative to prev pos }
  102. procedure putback(src,dst:pointer; nr:byte); { restore background of sprite nr }
  103. procedure putsprite(nr:byte);
  104.  
  105. { procedures of Jeroen Bouwens }
  106. procedure texture(x1,y1,u1,v1,x2,y2,u2,v2,x3,y3,u3,v3:integer;
  107.             texseg,texofs:word;colorinc:byte);
  108. procedure gouraud(x1,y1,i1,x2,y2,i2,x3,y3,i3:integer);
  109. procedure triangle(x1,y1,x2,y2,x3,y3:integer; color:byte);
  110. procedure gouraudtexture(x1,y1,u1,v1,i1,x2,y2,u2,v2,i2,x3,y3,u3,v3,i3:integer;
  111.             texseg,texofs,pictwidth:word);
  112.  
  113. implementation
  114.  
  115.