The rec.games.programmer FAQ

Revision 1.70 (8/5/97) HTML Version
by Gavin Estey

This is a FAQ for the usenet group rec.games.programmer. This is mainly intended for people new to this group but anyone should read it.

Table of Contents

Part I - General

Part II - Questions and Answers

Part III - MiniFAQs

Part IV - Resources

Part I - General

What is the rec.games.programmer group about?

This group is mainly about programming games but many posts are about general graphics and programming techniques that sometimes do not readily apply to game programming. This group mainly discusses how to program games and techniques for making games better. If you post any question about game programming, programming or graphics to this group somebody is bound to answer you if you follow the advice and guidelines given in this document.

Guide to posting on rec.games.programmer

Before posting any message on rec.games.programmer you should follow these simple guidelines. Firstly look relevant documents on sites mentioned in part IV (resources). Many questions that are posted to rec.games.programmer could be answered simply by looking before posting. It would be a very good idea to read rec.games.programmer for at least a month before posting. Check that you can actually post by sending messages to groups such as alt.test.

The most important thing to remember is to be polite when asking questions - nobody who reads this group has to answer your questions. People who want an answer but don't want to put any effort into attempting to finding it themselves can really be frustrating at times. Also try to avoid posting subjective comments as if they were facts. If you remember this then you will not be making enemies when you post.

To keep people happy make sure that you keep your message width no wider than about 75 characters. This gives enough width for people to quote your post without fouling it up and making it less readable. Posts with lines that are longer than 80 columns are split up by most usenet readers to several lines making it very hard to read. Don't quote somebody's entire message - you only need enough for them to remember what they wrote. Make sure that you don't quote the message header or your signature file doesn't appear twice as this is really annoying to most people.

Please keep your postings short. Some people have to pay for their Internet connection and most don't have T1 connections. They don't want to download a 2000 line post which does not interest them in the slightest. Don't post large binary files to this group there are binary groups for this. Upload them to a relevant FTP site if you think that they would be interesting for other people.

Questions that should not be asked on rec.games.programmer

Posts such as {machine X} is better than {machine Y} or discussions of operating systems are strongly discouraged. This is because they soon turn into a heated argument and usually end up annoying everyone.

The main problem is that somebody posts a message, then everyone posts a reply to that message before reading the follow-up messages. This causes a waste of bandwidth. Remember bandwidth is not free - somebody pays for it.

What about posting source code?

When you want to post source code (unless specifically asked to post your source code) don't post all of it. Only post enough to show your problem or your solution. Highlight the part that you think is the problem so that anyone reading your post can work out what's wrong.

Most of the source code posted to this group is in C or C++. Some is in Assembly and Pascal. Don't post languages specific questions here such as "How can I do X in language Y?". There are language specific groups for this, please look in part IV (Resources).

What platforms is rec.games.programmer for? Is it only for PCs?

About half of all rec.games.programmer posts are PC related but this doesn't mean that it's a PC only group. A lot of posts are general to any type of platform.

Part II - Questions and Answers

This section covers common questions that turn up in rec.games.programmer. Much of the questions on rec.games.programmer are looking for resources. If that is what you are after, skip to part IV (resources).

What is ray casting?

Ray casting is a technique for doing graphics for games like Wolfenstein 3D. The idea is to cast a ray out from the observer point through your data representing the world until you hit an object. The object you hit is the object you draw and the distance the ray traveled describes the size to draw the object. You only draw the object one pixel wide (position of where you hit it) and the height is the scaled size. If you do this for every column across the screen with slightly different ray angles (representing the view angle) you get a graphical view much like Castle Wolfenstein.

What is a BSP tree?

BSP stands for binary space partitioning. It is a method for storing the layout of objects in 3d graphics. Doom uses a 2 dimensional BSP tree to speed up its rendering.

The idea of a BSP tree is that the polygon (or line for 2D BSPs) at the head of the tree will have all of the polygons in front (looking at the polygon directly face on) on the left branch of the tree and all of the polygons behind on the right branch of the tree. If a polygon intersects a plane (i.e. nether in front or behind) then the polygon must be broken in two with a piece placed in each tree. Both the left and right subtrees are generated with the same principle with the remaining polygons. The usefulness of this data format I'm not going to explain here because it begins to look like maths.

The BSP Trees FAQ can be found at http://reality.sgi.com/bspfaq

Eddie Edwards wrote a article about BSP Trees with code which can be found at ftp://x2ftp.oulu.fi/pub/msdos/programming/theory/bsp_tree.zip

What is Mode X?

Mode X is a tweaked mode. The Mode X FAQ says:
"Mode X is a derivative of the VGA's standard mode 13h (320x200 256color). It is a family of undocumented video modes that are created by tweaking the VGA's registers."
Mode X has both advantages and disadvantages which are discussed in the many articles written about it.

The FAQ is at ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/modex.faq and an excellent tutorial is at ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/xintro18.zip

When I try to use the Pel Panning register the screen goes blank.

The Index port has a bit that needs to be high. Add 20h to the index when accessing 3C0h. This turns index 13h into an OUT of 33h

In 16 colour VGA modes the mode uses oddly arranged palette registers

In 16 colour modes you get to pick which of the 256 palette registers you use by setting the 16 EGA palette registers to be set to the number of the VGA Palette register. So to make the mode use the first 16 VGA palette registers you should write the numbers 0..15 to the EGA palette registers

Is it possible to use DMA for video memory transfers?

After quite a lot of discussion on rec.games.programmer it was determined that although it may be technically possible it is complicated to use and the performance was not worth it. It is faster to use the CPU with the REP MOVS instructions.

What is a BLIT/BLITTER?

The source of the word BLIT has been described in many ways The most common are BLock Image Transfer or simply BLock Transfer with the I turning up for ease of Pronounciation. A blit is simply a block transfer of data in some form.

Generally image data is transfered but not always. The act of putting graphics on the screen is quite often the largest bottleneck for execution speed of a game. For this reason, many of us here at rec.games.programmer are very concerned about the speed of our 'blitting', and spend much time discussing methods for quickly accomplishing it.

What is page flipping?

Page flipping is the most basic and most commonly used method to avoid flicker of animated graphics. The principle is very simple. You use two pages (a page is defined as the memory that contains a full screen image). You draw all the imagery onto the first page and then you place it in the view. While the user is looking at the first page you draw onto the second and when done you 'flip' the view to the second screen which leaves the first page unobserved. In this manner you will always have the user looking at the last completed scene and will never see any of the drawing process.

In a nutshell you always have a viewing page and A drawing page. You only ever draw into the Drawing Page and you only show the user the viewing page you flip the pages when you have a new image.

Page flipping is achieved one of two ways. The first is when there is more than two full screens worth of video memory available. Both pages can then reside in video memory. What happens is you simply tell the video hardware to start displaying one page or the other. This is generally regarded as true page flipping.

The other way to achieve page flipping is to draw the entire scene in main memory and copy it to video memory when done. This method can be done with only one page of video memory because only the viewing page needs to be in video memory. The problem with this method is that it requires a large memory copy to copy the drawing page onto the video page.

What is a DOS Extender?

The purpose of a dos extender is to increase the amount of system memory a program can access easily. Most dos extenders also provide more flexibility over how that memory can be used. They achieve this by running in protected mode where the memory restrictions of real mode do not apply. In 386 Flat mode all of the memory can be made available in one segment with 32 bit offests into that segment.

Protected mode is not that hard to get into. Yet dos extenders still exist as commecial proucts. The reason for this is that although it is easy to get into protected mode it is very hard to interface with the existing system while there. The goal of a good extender is to provide as much new functionality as possible without loosing any of the old functionality. This is especially tricky if you call a dos function with a real mode segment:offset pointer argument. If the memory is above the 1 meg mark there is no real mode pointer possible for that memory. It is up to the dos extender to sort things like that out.

Most dos extenders also provide DPMI functions. Check the Ralph Brown interrupt list to find out more on DPMI functions.

Part III - MiniFAQs

Dual Monitor Debugging by Michael Pohoreski

Can I use a second monitor for debugging my programs?

Yes. Borland and Watcom's debugger support debugging on a second monitor. I've used both Borland and Watcom debuggers with a second monitor. I don't know if the Microsoft, Symantec, etc., debuggers support a second monitor.

Can I use ANY second monitor?

No. It must be a monochrome monitor.

What happens if I use/install two VGA cards.

DO NOT DO THIS! You'll blow one (or both VGA cards!)

What do I need in order to set this up?

A VGA Card, a VGA monitor, a monochrome video card, and a monochrome monitor. The VGA card has a 15-pin connector. The monochrome card has a 9-pin connector.

Note: You can use a EGA or CGA card instead of the VGA, but you'll be just be hurting your eyes with the poor resolution of the EGA/CGA.

A colour card and a monochrome card can coexist. The same types of cards can't.

How do I set my computer up to do this?

  1. Install a VGA card and the monochrome video card in your computer.
  2. Hook the monitors up.
  3. Start your computer up.
  4. You might have to change your BIOS to VGA/EGA/Color.

Your computer should be using the VGA monitor for output at start-up.

Sometimes my VGA monitor starts up in shades of grey instead of colour.

i.e. I run a VGA game, and everything is in black and white (and grey).Your VGA card is not getting control, and hence defaulting to monochrome VGA. You'll have to upgrade your BIOS or your VGA card.

Note: The monochrome VGA mode is not the same as a monochrome card.

How do I use my second monitor with my debugger?

Watcom automatically detects the monochrome card and will use it. Run Turbo Debugger with /do to use Dual-Display.

Can I use the second monitor in DOS?

Type "MODE MONO" to switch to the monochrome monitor.
Type "MODE CO80" to switch back to the colour monitor.

What are the disadvantages to hooking up two monitors?

If you have an ISA 16-bit VGA card and a monochrome card installed, the VGA card will slow down to 8-bit mode. If your VGA card is a PCI/VESA card, then you won't have any slowdown.

Is there a easy way to output text on the mono monitor?

Yes, there is a mono device driver. monodev.zip (ZIP 594 bytes)

Just stick it in your config.sys (DEVICEHIGH=<whatever>), and type DIR > MONO1 after rebooting to see it work.

Part IV - Resources

A great deal of the questions on rec.games.programmer are things like "where can I find X?" or "Does anyone know of any good books to teach X?" This section will endeavor to answer as many of these questions as possible.

Are there any other usenet groups that are useful?

There are several groups that are also useful for programming and more general programming related posts should be directed there. Here is a short list with comments about the groups discuss.
rec.games.design
This group is about designing games.
comp.ai.games
Artificial intelligence in games
comp.lang.asm.x86
80x86 Assembly language programming
alt.lang.asm
General Assembly language
comp.graphics.*
Several newsgroups about computer graphics
comp.lang.c
About the C language
comp.lang.c++
About the C++ language
comp.os.msdos.programmer
General programming in MS-DOS
comp.sys.ibm.pc.demos
Discussion of the demoscene and programming demos
alt.sb.programmer
Programming the Sound Blaster family of sound cards
comp.os.os2.programmer
Programming in the OS/2 environment
comp.sys.mac.programmer
Programming for Apple Macs
comp.unix.programmer
Programming on UNIX systems
rec.arts.interactive-fiction
For programmers and authors of text adventures
alt.comp.shareware.programmer
Shareware discussion from a developers point of view

Most of these groups have very good FAQs that I strongly advise that you read before you post there. Some groups (especially the C ones) have very rigid ideas of what and what not should be discussed.

Where can I get these FAQs from?

FTP: ftp://rtfm.mit.edu
WWW: http://www.cis.ohio-state.edu/hypertext/faq/usenet/

Is there a game programming mailing list?

No. There was a mailing list but it doesn't seem to be around anymore. If you know of one please e-mail me to get it added here.

What other documents can I get that are useful?

This is a list of very useful documents that are available freely on the Internet. All these files are highly recommended and I recommend that you get all of them especially PCGPE.

PCGPE

The PC Game Programming Encyclopedia known also as PCGPE is a collection of files related to game programming organised by Mark Feldman. This is an excellent reference and covers topics such as:

Assembly Language List of op-codes Scrolling
Palettes Mode X 3D
VGA tutorials VESA standard SVGA programming
Algorithms Texture Mapping BSP Trees
Sound Programming Sound Formats Graphics Formats
Mouse Joysticks EMS/XMS

These files can be found in ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe

pcgpe10.zip   PCGPE main file
patch10a.txt  Update PCGPE 1.0 to 1.0a
wpcgpe10.zip  PCGPE in Windows Help format
It would be a good idea to get this file and read the contents before posting to rec.games.programmer.

Help-PC

ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/helppc21.zip

This is a very good hardware, software, C and assembly reference.

Ralf Brown's Interrupt List

ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/interXX[a-d].zip

This comes in four parts a-d where XX is the version. This is a massive list of interrupts and it's very useful.

Introduction to Mode X

ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/xintro18.zip

This is a very good introduction to the undocumented mode of the VGA and cards known as Mode X. There is lots of information, a simple C library and pictures of the memory organization.

Gavin's Guide to Assembly

My assembly guide is now availible in both plain text and HTML formats.
TEXT http://www.strangecreations.com/library/assembly/tutor/
HTML http://www.strangecreations.com/library/assembly/tutor/
This is a great beginners guide to 80x86 assembly written by me.

Denthor's Demo Trainers

C++ ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/tutXXnew.zip
Pascal ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/tutXX.zip

(Where XX is the trainer number)

These are a very good guide both to demos and games. It covers: mode 13h, palettes, animation, mode X, 3D and much more.

I have been converting them to HTML and they are now availible here.

Zed's 3D Tutor

ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/zed3d080.zip

Good introduction on 3D computer graphics with pictures.

Information about 3D and shading from VLA

ftp://x2ftp.oulu.fi/pub/msdos/programming/vla/3d_math.zip Lots of useful information about 3D equations and how to use them.

Michael Abrash's DDJ Graphics Columns

Ascii: ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/graphpro.lzh
PS: ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/graphcol.zip

These are extracts from his programming columns in Doctor Dobb's Journal in C/Assembly. It covers 3d, polygons, antialiasing and optimisation among others. This is the basis of his new book, "Zen of Graphics Programming" and it is excellent reference.

Game Developers Magazine

ftp://x2ftp.oulu.fi/pub/msdos/programming/gdm/ or http://www.cybersurf.com.au

This is an excellent electronic magazine which is published by Phil Inch bimonthly. It has some very interesting information in it and I recommend it for beginners and experts alike.

Are there any Frequently Asked Questions (FAQs) that are useful?

Here is a list of useful FAQ's which you may find useful.
Getting Started in Game Development FAQ
ftp://ftp.accessnv.com/fg/misc/gamefaq.txt
DJGPP DOS Game Programmers FAQ
ftp://x2ftp.oulu.fi/pub/msdos/Programming/djgpp2/gccfaq10.zip
Tile-Based Games FAQ by Greg Taylor
ftp://x2ftp.oulu.fi/pub/msdos/Programming/docs/tilefaq.12
3D programming information
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/3d_prog.18
comp.graphics FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/graphics.faq
comp.graphics.algorithms FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/algorith.114
comp.graphics.animation FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/animatio.31
rec.games.design FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/design.154
Gravis Ultrasound FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/gusfaq.155
Mode X FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/faq/modex.faq
Watcom Games Programming FAQ
ftp://x2ftp.oulu.fi/pub/msdos/programming/watcom/watcom.07
Sega Programming FAQ
ftp://x2ftp.oulu.fi/pub/msdos/Programming/faq/sega1409.faq
Binary Space Partitioning (BSP) FAQ
http://reality.sgi.com/bspfaq
rec.arts.interactive-fiction FAQ
ftp://ftp.gmd.de/if-archive/rec.arts.int-fiction/faq
PC timing FAQ
ftp://oak.oakland.edu/simtel/msdos/info/pctim003.zip

Are there any useful FTP sites around?

This is a list of all sites which contain useful information for programmers.

x2ftp.oulu.fi (130.231.48.141) /pub/msdos/programming

This is the best site for programming. It is almost all MS-DOS. It is split into sub directories for different sections and it is very easy to find the files you want.

ftp://x2ftp.oulu.fi/pub/msdos/programming/00INDEX.ALL

This is a list of every file on this site. Look through this before posting to rec.games.programmer as it may solve your problem.

Note: x2ftp is also mirrored in the USA at ftp.infomagic.com who also produce a CD-ROM with the contents of this archive

ftp.cdrom.com /pub/demos

This is mainly a demo oriented site with lots of code for doing various demo effects. There are some very useful files on this site.

Simtel

Though Simtel doesn't have any game programming files it does have quite a few generally programming files that are interesting. Simtel is at ftp.coast.net and is mirrored at:

ftp.demon.co.uk (UK)
ftp.cdrom.com(US)

/msdos/asmutil
Lots of useful files for assembly programmers.
/msdos/c
Large collection of C programming material.
/msdos/cpluspls
Some C++ code here.
/msdos/turbopas
Borland Pascal programming material.
If you use Borland Pascal you should Swagbag from here. It provides help on most topics.

garbo.uwasa.fi

General MS-DOS

/assembler Files for assembly programming and some assemblers.
/graphics Some graphic programming information.
/artificial Some useful files about artificial intelligence.

FTP Sites of commercial companies

Intel
ftp.intel.com
Microsoft
ftp.microsoft.com
Creative Labs
ftp.creaf.com
Borland
ftp.borland.com
Watcom
ftp.watcom.on.ca
Dr. Dobbs Journal
ftp.mv.com
Scitech Software (UNIVBE)
ftp.scitechsoft.com
Game Developer Magazine (the Miller Freeman magazine)
ftp.gdmag.com
Metagraphics Software
ftp://metagraphics.com
ftp.accessnv.com /fg

This is the Fastgraph FTP site and it contains the latest version of Fastgraph plus lots of source code for various games and programs which use it. A lot of other useful programs can be found here too.

Are there any good games programming books?

There are only two general game programming books at the moment that I would advise anybody to buy, they are "PC Games Programming Explorer" and "Action Arcade Adventures". These are a good starting point for people who are new to games programming.

PC Games Explorer
Dave Roberts
Coriolis
ISBN: 1-883577-07-1
Action Arcade
Diana Gruber
Coriolis
ISBN: 1-883577-06-3

Note: Coriolis' has a web site at: http://www.coriolis.com.

I have just recieved a copy of "The Ultimate Game Developer's Sourcebook" by Ben Sawyer (ISBN 1-883577-59-4). This is a massive book at over 800 pages. It covers many topics including game design and development techniques, lots of resources and the technical aspects of creating games. This is an excellent book - expect a review from me soon. For more information look at http://165.247.175.230/books/update/ugds.htm.

The game discussed in PC Games Explorer can be found at: ftp://x2ftp.oulu.fi/pub/msdos/programming/misc/alnalley.zip

Two books which are more specific and also recommended are "Building a 3D Game Engine in C++" and "Amazing 3D Games Adventure Set".

Building a 3D Game Engine in C++
Brian Hook
John Wiley & Sons
ISBN 0-471-12326-9
Amazing 3D Games Adventure Set
Lary Myers
Coriolis
ISBN 1-883577-15-2

Zen of Code Optimisation
Michael Abrash
Coriolis Books
ISBN 1-883577-03-9
An excellent book covering practical approaches to optimisation on all PCs from 8086s to the Pentium. Michael covers both programming in assembly and C/C++ and shows you how to write fast and efficient code. This is an excellent book.
The Zen of Graphics Programming
Michael Abrash
Coriolis Books
ISBN 1-883577-08-X
This is another good book. It covers a lot of 3D topics such as texture mapping, shading and antialiasing. Michael also covers a lot of low level VGA programming and Mode X which is invaluable. This is an excellent book for the intermediate/advanced programmer.

Are there any good World Wide Web pages that are interesting?

There are several good web pages that are useful for programming and games information. Yahoo ( http://www.yahoo.com) has the largest list of web pages around and it is easy to find one that will interest you. Lycos (http://www.lycos.com) is probably the best search engine for finding information.

I have created a web site which is dedicated to programming. Here you can find a large collection of FAQs, tutorials and other documents. http://www.strangecreations.com/library/

Previously there was a long list of web pages related to games programming here. I have removed this to save space and to allow easier updates. There is a better list of sites on my web site at: http://www.strangecreations.com/library/links.htm

What tools do I need/are availible?

Before you start programming there are several tools that you will probably need to get.

Compiler, Debugger and Profiler

You need a compiler to actually compile your code into a executable program which you can then run. A debugger is useful (but not needed) for making sure that your code does what it is supposed to and that there are no bugs in it. A profiler is useful for knowing which parts of your program are slow and need to be optimised. Without this you can waste a lot of time making changes that won't make your program run faster. A profiler and debugger usually come with the compiler.
"Measure before making 'efficiency' changes."
-- The Elements of Programming Style (Kernighan and Plauger)

Libraries for graphics and sound

When you first start you don't want to worry about having to write the code for all the graphics. For this reason there are several very good libraries that you can buy and link into your code. If you are thinking of including sound into your game then you don't want to worry about all the different sound formats and sound cards you just learn to use a certain library. Using libraries can speed up game development dramatically.

Here is a list of useful libraries availible on the Internet. Many of these are shareware and require payment to the author. The filenames given might not be the most up to date version of the file. Please send me the name of a more up to date version.

Sound libraries

VAT
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/vat061.zip
VAT Watcom
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/vatpm061.zip
SMIX Pascal
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/smix127.zip
SMIX C
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/smixc125.zip
SMIX Watcom
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/smixw125.zip
DIGIPACK
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/dmkit150.zip
DiamondWare
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/dwstk.zip
GUS SDK
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/gusdk222.lzh
Midas
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/mdss040a.zip
Ruckus
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/rukc110.zip
TinyPlay 286
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxcode/tinyplay.zip
TinyPlay 386
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxcode/tnypl211.zip
DSIK C
ftp://x2ftp.oulu.fi/pub/msdos/programming/wgt/dsik_c.zip
DSIK Pascal
ftp://x2ftp.oulu.fi/pub/msdos/programming/wgt/dsik_pas.zip
DSIK Watcom
ftp://x2ftp.oulu.fi/pub/msdos/programming/mxlibs/dsik205.zip

Graphic libraries

Fastgraph Light
ftp://x2ftp.oulu.fi/pub/msdos/programming/fg/fgl402.zip
WGT
ftp://x2ftp.oulu.fi/pub/msdos/programming/wgt4.zip
WGT Watcom
ftp://x2ftp.oulu.fi/pub/msdos/programming/wgt51.zip
SVGACC
ftp://x2ftp.oulu.fi/pub/msdos/programming/libs/svgacc24.zip
Xlib Watcom
ftp://x2ftp.oulu.fi/pub/msdos/programming/xlib/xlib06p2.zip
Xlib Pascal
ftp://x2ftp.oulu.fi/pub/msdos/programming/xlib/xlibp202.zip
Xlib C
ftp://x2ftp.oulu.fi/pub/msdos/programming/xlib/xlib06.zip
YakIcons
ftp://x2ftp.oulu.fi/pub/msdos/programming/xlib/yicons24.zip
VLA's modex.inc
ftp://x2ftp.oulu.fi/pub/msdos/programming/vla/mx2_vla.zip
Watcom Mode X
ftp://x2ftp.oulu.fi/pub/msdos/programming/watcom/w_modex.zip
Mode X Library
ftp://x2ftp.oulu.fi/pub/msdos/programming/libs/modex105.zip
Mode 13h 3d Lib
ftp://x2ftp.oulu.fi/pub/msdos/programming/libs/otm3d95.zip
Mode 13h Lib
ftp://x2ftp.oulu.fi/pub/msdos/programming/libs/vgl20.lzh
Metagraphics have two libraries that may be of interest: More information can be found on their web site http://www.metagraphics.com.

IRC channels

There are three interesting channels that are on IRC:
#gamecode
This is for discussing games and game programming.
#coders
This is more demo orientated but still useful.
#c
This is about the C language
Note: When you join these channels there may or may not be people actually there.

What if I need more help?

If you still need some more help write to me at: gavin@senator.demon.co.uk. I try to reply to every message I get and I will do my best to help you.

Contributors

Gavin Estey (gavin@senator.demon.co.uk) The FAQ
Neil Graham (lerc@aurora.co.nz) updates, Q+A section
Michael Pohoreski (mpohores@sfu.ca) dual monitor information

*FAQ END*