The PC GAMES PROGRAMMERS ENCYCLOPEDIA 1.0
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:
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
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
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.
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
The following is a list of all the PCGPE 1.0 files:
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
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
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?.....
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.
Internet: [email protected] [email protected]