README.TXT


                 ┌───────────────────────────────────────────┐
                 │ The PC GAMES PROGRAMMERS ENCYCLOPEDIA 1.0 │
                 └───────────────────────────────────────────┘


┌──────────────┬─────────────────────────────────────────────────────────────
│ Introduction │
└──────────────┘

Well, here it is! This is the first edition of the PC Games Programmers
Encyclopedia. The PC-GPE as it currently stands is a collection of text
files, each covering a different aspect of programming games for the PC.
Some files were obtained from the net, others were grabbed off Usenet, quite
a few were written for the PC-GPE.

Every effort has been made to contact the original authors of all public
domain articles obtained via ftp. In some cases the original authors were
not able to be contacted. Seeing as these files were already available to the
public the liberty was taken to include them anyway. The files were not
modified in any way. There is a list at the end of this document showing
which files we couldn't contact the authors about. Please note that files
were *not* written exclusively for the PC-GPE unless stated otherwise.

The information in the PC-GPE is provided to you free of charge. The authors
of each article have included their own conditions of use, eg some ask that
you give them credit if you use their source code. As a general rule of
thumb, an e-mail or postcard to an author telling them you found their file
helpful probably wouldn't go astray.....

This first version of the PC-GPE is very hardware oriented. We hope to
include more actual game algorithms in future releases. If you would like to
see a particular topic included in the next PC-GPE release or if you think
you could contribute an article then by all means let us know (btw plugs for
personal projects in articles are accepted). The editor's e-mail address is
at the end of this file.

Some of the text files are pretty long, so the PCGPE uses a protected mode
file viewer (PCGPE.EXE) which may play up when run on 286 machines. If this
happens read the DPMIUSER.DOC file for help on fixing the problem.

┌──────────────────┬─────────────────────────────────────────────────────────
│ PC-GPE Home Site │
└──────────────────┘

The Games Programmers Encyclopedia official home site is:

teeri.oulu.fi
/pub/msdos/programming/gpe

There are plans to develop GPE's for the mac and other architectures for
cross-platform game development. The teeri site will also hold PC-GPE
updates/bug fixes/etc.

Many thanks to Jouni Miettunen for all his help and for allowing us to use
teeri as the PC-GPE's home site. He's put a lot of work into it and it's a
great programming resource, particularly for people wanting to develop game
software.


┌─────────┬──────────────────────────────────────────────────────────────────
│ History │
└─────────┘

The PC-GPE was conceived, designed and largely built by the same people who
keep the Usenet groups rec.games.programmer and comp.graphics.algorithms
alive. It was noticed that information required for even the most basic game
development was strewn out across the vast wastelands of the Internet and was
time consuming and annoying (if not down-right impossible) to obtain.

Most of us can't afford to go out and buy a book every time we want to look
up a particlar topic, so a bunch of us decided to grab the most commonly
sought-after free info and put it in one place.


┌─────────────────────────────────┬──────────────────────────────────────────
│ The People Who Did All the Work │
└─────────────────────────────────┘

First a big thanks goes to everyone who wrote articles or allowed us to use
their existing articles.

Also thanks to the Demo groups Asphixia and VLA (more specifically Lithium
and Denthor) for letting us use the asm and vga trainers they wrote.

A number of people who didn't actually write articles contributed heaps
to the project right from the start with tips/comments/suggestions etc as
well as lots of info on where we could get stuff. Thanks go to Bri, Dizzy,
Claus Anderson, Nathan Clegg, Alex Curylo, Cameron Grant, Chris Matrakidis
and the many others who sent info. If it wasn't for them you probably
wouldn't be reading this now!

And finally thanks to Jouni Miettunen for setting up the PC-GPE directory on
the teeri site, letting us use it as the official home site and supplying
a heap of information.

The editor would also like to thank the scores of other people who e-mailed
him with suggestions, comments, requests etc...and continually hassled him to
hurry up and get the damn thing finished.


┌────────────┬───────────────────────────────────────────────────────────────
│ Disclaimer │
└────────────┘

It's a pity we live in a world where the following kind of crap is
neccessary. Oh well, here goes....

Each article appearing in the PC-GPE is bound by any disclaimer that appears
within it. The editor assumes absolutely no responsibility whatsoever for
any effect that this file viewer or any of the PC-GPE articles have on you,
your sanity, computer, spouse, children, pets or anything else related to
you or your existance. No warranty is provided nor implied with this
information. The accuracy of the information contained is subject to
conjecture. Use all information at your own risk. The file PC-GPE.EXE may
not be distributed without all the original unmodified PC-GPE articles. The
distribution rights of individual articles is at the discretion of the
authors.


┌───────────┬────────────────────────────────────────────────────────────────
│ File List │
└───────────┘

The following is a list of all the PCGPE 1.0 files:

File               Description
─────────────────────────────────────────────────────────────────────────────

PCGPE    EXE   *   PC-GPE main exe file
DPMIUSER DOC   *   PC-GPE.EXE DPMI info file
RTM      EXE   *   PC-GPE.EXE DPMI support file
RTMRES   EXE   *   PC-GPE.EXE DPMI support file
DPMIINST EXE   *   PC-GPE.EXE DPMI support file
DPMILOAD EXE   *   PC-GPE.EXE DPMI support file
DPMI16BI OVL   *   PC-GPE.EXE DPMI support file

README   TXT   *   PC-GPE main info doc
FTPSITES TXT       List of FTP sites for game development programs/utils

ASMINTRO TXT   *   VLA's assembly tutorial intro file
ASM0     TXT   *   VLA's assembly tutorial
ASM1     TXT   *   VLA's assembly tutorial
ASM2     TXT   *   VLA's assembly tutorial
ASM3     TXT   *   VLA's assembly tutorial
ANSI     TXT   *   VLA's assembly tutorial support file

INTEL    DOC       List of op codes plus timing info up to 486
CPUTYPE  TXT   *   Testing CPU type
TIMER    ASM   *   Testing CPU speed

TUT1     TXT   *   Asphixia's VGA Primer - Mode 13h
TUT2     TXT   *   Asphixia's VGA Primer - Palette/Fading
TUT3     TXT   *   Asphixia's VGA Primer - Lines/Circles
TUT4     TXT   *   Asphixia's VGA Primer - Virtual Screens
TUT5     TXT   *   Asphixia's VGA Primer - Scrolling
TUT6     TXT   *   Asphixia's VGA Primer - Look-up Tables
TUT7     TXT   *   Asphixia's VGA Primer - Animation
TUT8     TXT   *   Asphixia's VGA Primer - 3D/Optimisation
TUT9     TXT   *   Asphixia's VGA Primer - 3D Solids
TUT10    TXT   *   Asphixia's VGA Primer - Chain 4 mode
COPPER   PAS   *   Asphixia's VGA Primer - Copper Effect
WORMIE   PAS   *   Asphixia's VGA Primer - Worm Effect
PALLETTE COL   *   Asphixia's VGA Primer support file
SOFTROCK FNT   *   Asphixia's VGA Primer support file

MODEX    TXT   *   Introduction to mode x
SCROLL   TXT   *   VGA scrolling
VGAREGS  TXT   *   VGA palette and register set
VGABIOS  TXT       VGA BIOS function call list

SVGINTRO TXT   *   SVGA - Intro to programming SVGA cards
VESASP12 TXT       SVGA - The VESA standard
ATI      TXT   *   SVGA - Programming the ATI chip set
CAT      TXT   *   SVGA - Programming the Chips & Technologies chip set
GENOA    TXT   *   SVGA - Programming the Genoa chip set
PARADISE TXT   *   SVGA - Programming the Paradise chip set
TRIDENT  TXT   *   SVGA - Programming the Trident chip set
TSENG    TXT   *   SVGA - Programming the Tseng chip set
VIDEO7   TXT   *   SVGA - Programming the Video7 chip set
XTENDED  TXT   *   SVGA - 640x400x256 with no bank switching

3DROTATE DOC   *   VLA's three dimensional rotations for computer graphics
3DSHADE  DOC   *   VLA's three dimensional shading in computer graphics
PERSPECT TXT   *   Perspective transforms
BRES     TXT   *   Bresenham's line and circle algorithms
CONIC    CC    *   A bresenham-like general conic sections algorithm
BSP      TXT   *   A Simple Explanation of BSP Trees
TEXTURE  TXT   *   Texture mapping
FDTM     TXT   *   Real-time free direction texture mapping

STARS    TXT   *   VLA's programming star fields
FIRE     TXT   *   Programming fire effects

PCX      TXT       PCX graphics file format
BMP      TXT       BMP graphics file format
GIF      TXT       BMP graphics file format
IFF      DOC       IFF/LBM graphics file format
FLI      FOR       FLI/FLC graphics file format

SPEAKER  TXT   *   Programming the PC speaker (inc 8-bit sample playback)
GAMEBLST TXT   *   Programming the GameBlaster sound card
ADLIB    TXT       Programming the Adlib sound card
SBDSP    TXT   *   Programming the SoundBlaster sound card (DSP)
SBPRO    TXT   *   Programming the SoundBlaster Pro sound card
GUSFAQ   TXT   *   The GUS sound card's Frequently Asked Questions
GUS      TXT   *   Programming the GUS sound card

MODFORM  TXT   *   The MOD sound file format
VOC      TXT       The VOC sound file format
WAV      TXT   *   The WAV sound file format
CMF      TXT   *   The CMF sound file format
MIDI     TXT   *   The MID sound file format
UT       TXT       The UltraTracker sound file format

SURROUND TXT       Generating surround sound

MOUSE    TXT   *   Programming the mouse, general info
GMOUSE   DOC       Mouse driver function call list
KEYBOARD TXT   *   Programming for the PC keyboard
JOYSTICK TXT   *   Programming for the PC joystick
GAMEPAD  TXT   *   Programming for the Gravis GamePad and Analog Pro

LIMEMS41 DOC       EMS (Expanded Memory Specification)
XMS30    TXT       XMS (Extended Memory Specification)
DMA_VLA  TXT   *   Intro to DMA

PIT      TXT   *   Programming the Intel 8253 Programmable Interval Timer
DOOM     TXT   *   DOOM techniques


An asterix (*) indicates files which were either written for the PC-GPE or
included with permission from the author.


┌─────────────────────────────┬──────────────────────────────────────────────
│ Final Words from the Editor │
└─────────────────────────────┘

Greetz
──────

   Zob: Whaddaya mean you can't come out drinking with us for 6 months? What
        the hell is "glandular fever" anyway?

Wookie: Whaddaya mean I can't play ModemDOOM on a 2400?

  Fink: Live fast, die young, have a good lookin' corpse!

MainFrame, bri_acid, wReam, Nocturnus, MArtist, RetroSpec, Matrix, Syntax,
Andrez, Gideon and the rest of the #coders gang : try and get some sleep
                                                  some time guys!

  Eyre: You/me babe, how 'bout it?

  Aggi: Remember, reality is mass hallucination resulting from alcohol
        deficiency!

Fetish: You know the routine hon, pick a number and join the queue like
        the rest of 'em!


Why all my code is in Pascal
────────────────────────────

Ok, ok, I'm expecting to get lots of crap over this one. To put it simply
Pascal is close to psuedo code and I wanted the routines to be understood
by everyone, Pascal programmers, C programmers and *REAL* (to wit, asm)
programmers alike. Apart from that I'm running a 40Mg doublespaced hard
drive and I have to use the fastest compiler possible. That's a good enough
reason isn't it?....people?.....


Shameless Plug
──────────────

There are two things in life I really can't stand,

1) My ex-girlfriend
2) Being unemployed, which I am now!

So if your company has any openings I'd really like to hear from you,
particularly if you develop game software.

I'm a 3rd year computer engineering student and my specialties lie in
computer graphics and low-level PC hardware programming. I program in C++
(Dos and Windows), Pascal, 80x86 assembly, QBasic (heh heh) and Prolog.


Mark Feldman
Internet: u914097@student.canberra.edu.au
          myndale@cairo.anu.edu.au