Скачать XVGA rII - 320x200x256 Graphics Library for BP7




1. About this document
======================-------------------------------------------
This document is part of the XVGA package which has been eagerly
awaited of quite a few on the internet. Some time ago I released
a copy of my XVGA graphics library for 320 x 200 in 256 colors
vga mode. Alas, this didn't include any documentation or examples
of using this library, so I've had a lot of email asking about
parameters to procedures, examples, documentation and other
miscellaneous questions. I started to write a documentation in
Word for Windows 6.0, but this was lost in a harddisk crash. This
may have been a blessing in disguise, as I found out that noone
is running Word when they program. This documentation is written
and meant to be a dos ascii file, and should be viewable from
both dos and windows.

The document is written in a particular random order, so you will
have to do a little search'n'find to get all the relevant
information you need.

2. About the library
====================---------------------------------------------
The library is a graphics library for 320 x 200 in 256 colors
mode strongly biased towards demo programming. It features 118
procedures and functions, written in Borland Pascal 7.0, using
BASM (Borland Inline assembler). It is a 438,856 bytes pascal
file, consisting of 22,321 lines of pascal code, mostly in
assembler.
3. How to contact me
====================---------------------------------------------
You may reach me at:

    email:	  lassek@tmih.no
    isca bbs:	  Lobotomy
    snail mail:   Lasse VЖgsСther Karlsen
		  Hans BБlows Gt. 9B
		  N-3714 SKIEN, Norway
    Telephone:	  (+047) 35 52 28 59

4. Why should you try to reach me
=================================--------------------------------
I, as everybody else, loves praise. Therefore, you should send
lots of mail to me telling me how good XVGA is.

			REALITY CHECK!

Well, I would really like to have some feedback on the library.
For starters I would like to hear about problems using it,
problems it causes, problems with the documentation, bugs and
other strange things. I know that the library is not the clearest
thing to use, and you will almost certainly have lots of
questions about how to use particular parts of it.

In particular, if you change or add to the library, send me an
updated copy along with any comments as to why you did it, and
you will be credited for what you did in the next release.

5. System requirements
======================-------------------------------------------
To compile the library into a .TPU file (yes, it is a unit), you
will need at the very least Borland Pascal 6.0. I have not tried
it under 6.0, since I use Borland Pascal 7.0 myself, and can
therefore not positively say that it will work or compile under
6.0. As far as I can see it, it should work, but you will have to
try for yourselves.

To run a program using the library you will need at least a 386.
This is because the library makes extensive use of the 32-bit
math instructions in the 386 and higher processors for optimum
performance. The library will check this itself (see at the end
of XVGA.PAS) and report an error if you try to run the program on
a 286 or lower processor. Also, you will need a VGA compatible
monitor and video card for this library to work. This is not
checked by the library, so it will happily churn along on an EGA,
and possibly creating weird looking images, or possibly hanging
the computer.

6. Disclaimer
=============----------------------------------------------------
Although I have tested 90 % of the routines in this library, I
have not tested all of them. Quite a few of them (all the XQuadra
variants as an example) is created by using
cut-and-past-and-modify so they should all work, but as I
mentioned, not all of them are tested. I do not think that there
should be any strange effects from using the libraries, as long
as you supply valid parameters. For instance, don't supply the
value 0 as VideoSeg for the procedures needing this parameter.
This is a sure way to crash the computer.

I do not take responsibility for the use or misuse or results of
such usage (or misusage; phew) of the library. All damaged
equipment (doubtful) is your problem, not mine. That said, it is
extremely difficult to damage any equipment with this library, as
the most likely culprit (XMode) has been changed; see section 7.

You, the user or programmer, may use this library as you wish.
You have all rights to modify or extract parts of this library
for own libraries. The reason for this "all-rights-dropped" is
that I have in the past done the same myself, and should
therefore not be sour by anyone doing this. This does not mean
that the code in this library is stolen from someone. I have
created the whole of this library from scratch, and almost all of
the routines are created from my own algorithms. The texture
mapping algorithm and technique is from Dr. Dobbs Journal (forgot
which issue) and the PCX algorithm is from ZSoft's reference, but
the rest is my own work. The library is thus completely
shareware, public domain, freeware, and anyware. I would like,
however, that you credit me if you use the library.

7. Change in XMode from last release
====================================-----------------------------
For the lot of you who has already downloaded a copy of the first
release, you might notice that XMode has changed. The old XMode
let you supply the mode value as the parameter, and one user
reported to me that his monitor stopped working when he
experimented with different values for this parameter. Only
parameter $13 (19 decimal) was valid here, or $3 (back to
text-mode), so a Boolean parameter was substituted.

8. Debugging the library
========================-----------------------------------------
If you want to debug a particular procedure or function in the
library, you will need to copy the offending procedure or
function into the program file in order to be able to debug it.
The reason for this is that debugging information must be turned
off for the XVGA.PAS file. This is because pascal complaints
about the "symbol table" becoming full at some point in the file,
and cannot retain the debugging information.

9. Procedure and Function reference
===================================------------------------------

General notes.

         All X.., Y.. and Z.. parameters are considered
          coordinates. Although some procedures and function
          accepts 32-bit (longint) parameters, you should limit
          the values to +/- 32767, as the internal graphics
          engine scales the values up by 65536 in order to gain
          acceptable accuracy without floating point.

         The VideoSeg parameter is the segment of the screen you
          want to draw to. This is $A000 (40960 decimal) for the
          video screen you look at, but if you want to draw
          graphics to a "hidden" screen, supply the correct
          segment here. Look at the examples for a better
          understanding of the usage and reason for this
          parameter.

         All Glenz??? procedures are special effects versions of
          the same procedure without the Glenz??? name. For
          instance, the XQuadra will fill a 4-sided area with the
          given color, whilst XQuadraGlenzXOR will xor the area
          with the given color

         All procedure that hasn't got Clip in their names clip
          at the edge of the screen. The Clip procedures has four
          parameters ClipX1, ClipY1, ClipX2 and ClipY2 which
          specifies the area to clip to. This area HAS to be
          inside the screen (0,0)-(319,199) or strange results
          may occur. Notice that it is faster to use the
          procedures that clip at the edge than using the Clip...
          procedures with the clipping coordinates 0,0,319,199,
          since the first procedure uses smaller and tighter
          code.

         Tetragon means 3-sided, quadragon means 4-sided, and
          polygon means n-sided.

	 3D-coordinates are specified as follows:

                x: -32767..+32767   = Left to right
                y: -32767..+32767   = Top to bottom
                z: -32767..+32767   = Front to back of monitor