glDoom An OpenGL adaptation of id Software's DOOM&trade performed by Bruce Lewis Date of this document: 16 Dec, 1998 Addendum: 11 Apr, 2010 Revision of this document: 1.2 Disclaimer: glDoom is an unauthorized adaptation of id Software's Doom to use the OpenGL graphics language. There are ABSOLUTELY no warrantees of any kind made for this program by the author or by id Software. You run this program at your own risk. This program has been tested on a number of systems with various video cards, 3D chipsets, OpenGL drivers and operating systems. But this program is NOT guaranteed to work on your system. Every effort has been made to ensure that there are as few problems as possible but glDoom is currently software in development and is BETA code. Not a normal release candidate and cannot be expected to work perfectly. Until the BETA program is ended, it is quite possible that you may encounter problems running this program. I hope you don't. Please DO NOT report problems with this code unless the program blows up on id Software released levels ONLY. No 3rd party game wads are currently supported and none have been tested thoroughly. If you have to report a problem I need a COMPLETE set of information about your system configuration. This includes your sound card, your 2D card, your 3D card, what CPU you are running (and what speed), which revision of OpenGL driver you are running from your 3D card vendor, what version of DirectX you have installed, what service packs you have installed and if you are using a USB keyboard, mouse or joystick. Also send the glDoom.dbg file with your e-mail. I will need it 99% of the time. Send these via email to me but you MUST use the subject GLDOOM BETA ERROR on your email. Otherwise they will go into my main mail bin and possibly get lost in the shuffle. I can filter these into a separate mailbox if you use the correct subject line. I will not support OpenGL drivers not listed in the card list in this document. Which means I will not attempt to support OpenGL "D3D" wrappers. Especially on cards that do not have adequate 3D accelerators which support texturing and blending in hardware. (This includes the entire S3 Virge line.) PowerVR PCX2 cards probably will not work. This is unfortunate as I have two myself but can't be corrected by anyone except PowerVR/VideoLogic. If they release a newer OpenGL driver that works well, then that will be great. Table of Contents 1. What is glDoom? 2. Acknowledgments. 3. Installing glDoom. 4. Running glDoom. 5. Customizing the game. 6. The Console. 7. Network games. 8. Program Requirements. A. Appendices B. Known Problems C. Things you should know 1. What is glDoom? glDoom is an OpenGL adaptation of id Software's first person shooter game, Doom. On 23 Dec, 1997, John Carmack of id Software made public the source code to the Linux port of their mega hit game Doom. John Carmack believes in trying to improve the game industry by releasing code that while no longer commercially viable contains program code that aspiring game programmers can learn from. I had been dabbling with game programming since April of 1993. When id Software released the source to Wolf3D, I downloaded it but it was for a compiler I did not have and was also all 16 bit code with a fair amount of assembler sprinkled throughout. Any port of Wolf3D to Win32 (my current "favorite" game environment) would require the program to be rewritten. Not from scratch but very nearly. The original program would be used as a template. When the Doom source code was released, it was all 32 bit code. It was a newer game and was also multiplayer with a data set that was "open". I decided to port Doom to Win32 first and get a stable Win32 port working then to add an OpenGL renderer on top of that. This has been a learning exercise for me because of my desire to work as a game programmer. I have learned a great deal about game programming as well as about OpenGL and the application of Trigonometry in 3D games. I have also learned a great deal about the employment of input devices in computer games. The networking code was not as big a challenge as some of the rest of the code because I was already an experienced network programmer. glDoom represents most of my "free" time from 26 Dec, 1997 to its release date. And a not inconsiderable amount of it since. glDoom is FREE software. Which means that you don't have to pay for it. What you are getting is a free USER license, though. You may NOT use the program to make money without following the terms outlined in the Doom license agreement. Remember id Software owns Doom, NOT ME. I just adapted the program and am entitled to only the rights afforded me by that. NOTE: 3Dfx card owners DO NOT try to use the Quake OpenGL miniport drivers with glDoom. IT WILL NOT WORK!!! Note the name glDoom. Not 3Dfx Doom. This is NOT a 3Dfx specific version of Doom. It is not a 3Dfx patch. There is not a single line of code in the program that is 3Dfx specific. There will be a few lines in order to set the gamma for 3Dfx cards but that will be the extent of it. This port is based COMPLETELY on OpenGL. It does not use Direct3D and it doesn't use DirectDraw. Always, always, always check the glDoom web site before contacting me for support. That's the first place you should look for answers to your questions (other than here). 2. Acknowledgments. Special thanks go to several people without whose help and understanding this project would not have been possible. First a huge Thank You goes to my wife, Licia, for understanding that I was driven to do this. For being supportive and putting up with my really late hours, my nearly constant work on glDoom and almost never going out for the duration of this project. Second a big Thank You goes to John Carmack for releasing the source code to Doom, for giving me helpful suggestions along the way and occasionally showing me how to do something when I was too thick to figure it out for myself. :o) Third a big Thank You goes to id Software and all of the Doom teams for creating the best first person shooter of all time. You have created a work of "art" that has withstood the test of time. Fourth a big Thank You goes to Jack Mathews, Michael Gold, Brian Hook and Gary McTaggart for their help with this project. Sometimes they didn't even know they were helping. Fifth a big Thank You goes to the alpha testing team. They are (in alphabet order by last name): Andy Bay Oliver Block Linda "Blender" Bosson Richard Davies Ashleigh-Paul Charlesworth Michael Gold Lawrence "Mac" Howell Keith Jackson (not the sports-caster) Mikael Johannsen Janet "Hotshot" Leery John Lesica Mike "Lucy" Lewis (Navy callsign what can I say?...) Don "One Thumb" MacAskill Sean "Redwood" Martin Jack "Morbid" Mathews Keith McCoy Gary McTaggart Barry Miller Pamela Miller Tong "Titan" Po Tim Rager Richard Siomporas Donna Sorrel Bill "Turkey" Trent Kate Tyrell Billy "Wicked" Wilson And last but not least, a thank you goes to all the others who offered suggestions, gave feedback about preferences, offered programming tips or offered to help. 3. Installing glDoom Run the install procedure to get the program and the supporting data file(s) into your game directory. glDoom REQUIRES OpenGL. If you don't know if you have OpenGL installed, there are several ways to tell. Windows98 and NT users already have OpenGL installed. If you have Windows95, go to the control panel and open the "system" applet. The first page has the version number of Windows displayed. If it is followed by a "b", then OpenGL was part of the Windows95 installation (you have OEM R2.0 or R2.1). If the letter "b" does NOT follow the version number, close the system applet and open the "add/remove software" applet. In the list box at the bottom of the dialog, you can scroll through it to see if OpenGL for Windows is listed. If it is, then you have the Microsoft OpenGL for Windows95 installed. Even if you are not sure that you have OpenGL installed, if your video card comes with OpenGL drivers, they are probably installed. That "should" be all you need unless the card is a 3Dfx based card or a PowerVR PCX2. For 3Dfx card owners, you must install the 3Dfx OpenGL drivers for your card or the generic ones from 3Dfx. If you have a pass-through version of the 3Dfx cards (not a Banshee or Rush) you must also put the 3dfxopengl.dll from the 3Dfx OpenGL into the directory with the program and rename it to opengl32.dll. Banshee and Rush card owners "may" have to do the same thing. Banshee/Rush card owners may not be able to run glDoom if you also have a "pass-through" 3Dfx card. Also, make sure you have the latest WinGlide drivers. Versions before 2.5 are NOT the latest. (mine is currently 2.53) PowerVR PCX2 owners will have to copy the opengl32.dll for the PowerVR PCX2 into the game directory in order to run glDoom using the PowerVR as your OpenGL accelerator. I doesn't work well at all. Some systems it seems to work "ok". But on others only parts of the status bar and the sky are visible. I don't know why. The rest of the installation is easy, just make sure you put the glDoom.exe program and the glDoom.wad data file in the directory with your Doom game WAD files. You don't need to set any command line parameters to run the program. You can but you don't have to. It defaults to 640x480 using 16 bit color and fullscreen. The default game wad it looks for is Doom2 but will work equally well with any of id's other Doom WADs. One you MUST be absolutely certain of is that your version of Doom is 1.9. If it does not say version 1.9 when you start your NORMAL Doom (or Doom 2), then it is NOT version 1.9 and you need to download the updates from: ftp://ftp.cdrom.com/pub/idgames/idstuff You can select which directory you want and which updates you want based on which program(s) you are updating. You can put glDoom on your menus but MAKE SURE you put the working directory as the directory in which you installed glDoom. The same is true if you create a shortcut for it. WARNING: Do NOT move glDoom once you have run it once. It writes the program's location into the win.ini file the first time it is run so that it will always know where the glDoom.ini file is. If you rename the directory or move the program and delete the old directory you make it IMPOSSIBLE for the program to keep an updated gldoom.ini file. Since glDoom uses InstallShield to install itself, it also creates a menu option on the start menu to run it as well as a link to the glDoom.doc file. It also puts a menu option up to remove the program from your system. (as well as in the "Add/Remove Programs" applet in the Control Panel) If you move glDoom after installation, you break the links for these menu options and the uninstall program. Don't move it unless you know how to correct these things manually. If you want to move it, then UNINSTALL it and remove the glDoom section from your win.ini file. Then reinstall it where you want it. (the version of InstallShield I use won't let me remove this section of the win.ini file - a version that will is $1400) The preferred method of running glDoom is from the Start menu. 4. Running glDoom Before you attempt to run glDoom, make sure you have satisfied all the requirements listed in the "Installing glDoom" section. glDoom will not run if it is not installed and setup properly. To run the program, you can just click on the program and start it. You don't have to put any parameters on the command line. You can, but you don't have to. Do not attempt to run the game from a DOS box command line or batch file. It will not function correctly. It IS NOT a DOS or CONSOLE application... The proper way to do command line parameters is to create a menu option or local shortcut to the program. Here is the current list of command line parameters: -width : the width in pixels of the game screen -height : the height in pixels of the game screen -bpp : color depth in number of bits per pixel -window : runs glDoom in a window (not possible with Voodoo1 or Voodoo2) -game : lets you specify a particular game wad as your main IWAD -net : starts a network game -deathmatch : turns on the frag counter and deathmatch "things" -altdeath : a different type of deathmatch where weapons stay and item respawn -warp : starts on a specific level (warp 1 1 for Doom 1 & warp 01 for Doom2) -skill : specifies a skill level when warping into a level (1 to 4) -time : lets you specify how many minutes deathmatch levels should last -frags : lets you specify a frag limit for deathmatch -play : lets you play a demo -record : lets you record a demo -timedemo : plays a demo in speed timing mode (output in glDoom.dbg) -file : adds a patch wad to the game data -nosound : turns off all sounds and music (must be turned back on manually) -devparm : shows the frame rate in the lower right of the screen glDoom defaults to 640 x 480 x 16 bit color. You can override those settings by using the command line parameters above. If you have the original Windows95 and your desktop is not 16 bit color it WILL NOT RUN. The program looks for an available video mode that supports the proper color depth (whether you use the default or 24 or 32 bits per pixel). The reason for this is simple. The original Windows95 could not change desktop color depths without rebooting. Windows 98, NT 4.0 and the later versions of Windows95 can change color depths without rebooting. glDoom will not run in 8 bit color mode. (it must be 16 bit or higher) By default, the program looks for game wads in the following order: doom2f.wad - (the French Doom2 wad) doom2.wad - Doom 2 tnt.wad - Final Doom - Evilution plutonia.wad - Final Doom - The Plutonia Experiment doomu.wad - Ultimate Doom doom.wad - Registered Doom 1 doom1.wad - Doom Shareware If you want to have your Registered Doom 1 and Ultimate Doom wads available at the same time, just rename your Ultimate Doom game wad to doomu.wad. If you only have Ultimate Doom and not the registered shareware of Doom1 then you can leave the name of the game wad as doom.wad. The program will figure out that it is Ultimate Doom and enable the fourth episode for you. Once you have set the -game command line option once, it will be "remembered" the next time you start the program as your "preferred" game wad. To change that preference, you can either use the -game option with a different wad name or change the game entry in the glDoom.ini file. 5. Customizing the Game There is a setup menu option which will allow you to setup your game controls. This is still under development and new bindings will be added. Some of the options listed are artifacts from the BOOM key bindings menu from which this was taken. These options will most likely go away in newer versions to be replaced by something else. There are also other things that can be done to customize the game for your system and or preferences. The way that distance queing is currently done is through the use of black fog to simulate the decrease in light levels over distance. This has not been implemented on some cards/drivers and does not work properly on others. The effect can be disabled through the console command gl_fog and setting it to 0 for off and 1 for on. Some video cards, like the Permedia2 do not support many of the blending modes that glDoom prefers to use. In order for sprite transparency to look "right" with the Permedia2, some preprocessing of the sprites is necessary. If you do not have a Permedia2 or other card that causes black outlines around the sprites, you can turn off this preprocessing by setting gl_alphatest to 0 in the console. You can turn it on if you get the black outlines by setting gl_alphatest to 1 (also in the console). You will have to exit the game and restart it for this change to take effect since it only affects the sprites when they are created. You can set your default video width and height by editing the entries for them in your win.ini file (for now). This will prevent you from having to put these values on the command line all the time. You can also set your preferred game wad in the gldoom.ini file (in your game directory) by editing the "game" entry. This is set each time you use the "-game" command line parameter. You can also set it from the console. You can enter a full pathname (not just the WAD file name) into this entry. There is a cvar called "mvert" which will disable the vertical (y) axis of the mouse if it is turned on. There is a key which toggles "mvert" referred to as key_mvert which defaults to "/". This can be set on the keybindings menu. 6. The Console The console allows you to enter a variety of commands for the game. It is NOT the Quake console so don't expect it to work exactly the same way. Key bindings, for example, are currently backwards from the way they are in the Quake console. This was done because keys are bound to commands in glDoom. (In Quake, commands are bound to keys. A subtle but important difference.) This may change in the future. You may set "cvar"s using the console. This works the same way as the Quake console cvars except that the glDoom "cvar"s are not dynamic. You can't just "create" a cvar by typing in the cvar name and a value. The reason for this is simple, without program code to support it, a cvar is useless. I chose not to accept cvars that would not be usable by the program. Instead, it tells that you have attempted to set an invalid cvar. There are also a number of commands that can be entered on the console. These range from entering "cheat" codes to music commands to key bindings to quiting the game. Some of the commands have parameters that they be used to set certain game conditions. A list of commands are: iddqd : god mode idfa : full ammo and all weapons idkfa : keys full ammo and all weapons idclev : change level idmus : change music for level idchoppers : chainsaw and invulnerability idclip : no clipping toggle idspispopd : no clipping toggle idbeholdi : invisibility idbeholdv : invulnerability idbeholds : strength (berserk pack) idbeholdr : radiation/environment suit idbeholdl : light amplification goggles idbeholda : all map cheat cd : starts your cd player (switches from midi) midi : pauses/resumes the midi playback (toggle) quit : quits the game (immediately) god : enable god mode (degreelessness?) toggle map : e?m? or map?? (Doom I or Doom II map names) noclip : no clipping toggle give : gives requested game items autorun X : toggles always run 0 = off, 1 = on swap_stereo X : toggles swap left/right 0 = off, 1 = on nosound : toggles sound on and off 0 = off, 1 = on mouse_factor : sets a mouse motion multiplier 1,2,3 or 4 bind : binds a value to a cvar record : records a demo in new demo II format finish : stops recording a demo II format demo play : plays back a demo II format demo cmdlist : lists console commands cvarlist : lists cvars CD command parameters: on : starts cd playback play : starts cd playback pause : pauses/resumes music playback resume : pauses/resumes music playback off : stops cd playback (restarts midi) stop : stops cd playback (restarts midi) next : plays next cut on CD + : plays next cut on CD prev : plays previous cut on CD - : plays previous cut on CD GIVE command parameters: all : gives (ammo, weapons, armor, health, keys, automap, backpack) ammo : gives all ammo armor : gives full armor automap : gives the automap backpack : gives a backpack and it's contents fullpack : gives (ammo, weapons, armor and backpack) health : gives 100% health (or 200% health) keys : gives all six keys (key cards and skull keys) weapons : gives all weapons MIDI command parameters: pause : pauses MIDI music playback resume : resumes MIDI music playback 7. Network games Until the Join Game/Start Game menu options are done, network games will have to be started from the command line. This is done by telling the program that you want a network game with the "-net" parameter then telling the program which player you are (a number from 1 to 4 not to be larger than the number of players) followed by the IP addresses of the other players in the game. They will be assigned player positions based on what order you put them on the command line. An example network game command line might look like this: gldoom -net 1 192.9.200.4 192.9.200.5 -deathmatch -nomonsters This will give you a three player game with you as player one. The game will be a deathmatch rather than a cooperative game and there will be no monsters in the game. Assuming that your IP address is 192.9.200.3, the other player's command lines would look like this: gldoom -net 2 192.9.200.3 192.9.200.5 -deathmatch -nomonsters for player 2 and : gldoom -net 3 192.9.200.3 192.9.200.4 -deathmatch -nomonsters for player 3. Each system will attempt to talk to the others over whatever TCP/IP connection there is between your system and theirs. Once all the systems have talked to each other, the game will begin. You play it just like any other Doom network game from then on. 8. Program Requirements. The absolute minimum system configuration to run glDoom is a 133Mhz Pentium with 16Mb of RAM and an 3D accelerator card with OpenGL drivers. The program will run on a system like this but is far too slow to be enjoyable. The recommended system configuration to run glDoom is a 166Mhz or higher Pentium with 64Mg of RAM, a 3D accelerator card with native OpenGL drivers (not a Direct3D wrapper), a mouse and a sound card with wave table Midi support. The optimum system configuration (to date) to run glDoom is a 450Mhz Pentium II with 128Mb of RAM, a Quantum 3D X-24 dual Voodoo 2 SLI board running 3Dfx's OpenGL drivers, a mouse and a SoundBlaster PCI64 with a general Midi sound font enabled. In order to run glDoom a game data file called a WAD file must be present. The main game file is an IWAD file which means it is a full game WAD. A full game WAD contains all the necessary game data to make the program run. A patch wad (PWAD) only contains "patches" to the original game data in the IWAD. The original id Software game wads: DOOM1.WAD (shareware), DOOM.WAD (registered shareware), DOOM.WAD (retail Ultimate Doom), DOOM2.WAD (retail Doom2), TNT.WAD (retail Final Doom) and PLUTONIA.WAD (retail Final Doom) are the only files which satisfy the requirement of a full game wad. UNLESS you are playing a "total conversion" which means that someone has created a FULL IWAD that uses all new game data for the Doom engine to run. IWADs which contain some id Software game data and some new data (conversion) are not allowed by the license agreement and may not be distributed. glDoom will not run on Virge powered video cards. It also will not run on Number 9 "3D" accelerators. 9. What's a "command line" I am still a little surprised when someone asks me, "What's a command line?" Having started using computers before there was a command line, it's arrival and near disappearance has been something I've just taken for granted. To me, not knowing what the command line is, is like not knowing what a monitor is. It's easy to forget that there are hundreds of thousands of people using computers who have never seen an operating system command line. So here we go. In Win32, you get to the command line either by starting an MS-DOS Prompt or by creating a "shortcut" to a program (similar to a "Start" menu entry) and editing the "command line" in that. The command line is automatic in the MS-DOS Prompt and I don't have the space or time to give a tutorial on using MS-DOS here. In NT it's referred to as a "Command Prompt". I do not recommend that you attempt to run glDoom from the command line in any case. It may cause startup problems for glDoom. To create a command line for glDoom you either have to create a "Start" menu option or create a "shortcut" to the program. (I'm not going to get into how to do either one.) In order to change the command line just edit the "Target" window in the "Start" menu option or in the "shortcut". Make SURE that the directory where glDoom is installed is in the "Working Directory" box. To add options to the command line just put them in the "Target" box after the program name. It's that simple. When you save the "shortcut", and "run" it the program will be run with the parameters you specified in the shortcut. You know how to run a menu option. If you know how to run a program without the menu, then you know how to run a shortcut, too. All you have to do is double-click on the shortcut to the program rather than the program to invoke it with the parameters in the shortcut. You can create multiple shortcuts (or menu options) to run glDoom with various options. You can even setup different shortcuts (or menu options - they're really the same thing except one is on the menu and the other shows up in "folders") so that it will run different game wads you have set up. ===================================================== A. Appendices A. Where can I get the source code for glDoom? The source code of glDoom is not yet available. I have decided not to release the source until the program is "feature complete" which means not until all the features I intend to add by revision 1.0 are in the program and working. When glDoom reaches version 1.0, the source code will be made available. B. Troubleshooting. I. Problem: The program starts up then dies when I try to run it. Solutions: 1. Make sure you have OpenGL installed on your system and that you have an opengl driver available for the program to use. 2. Make sure you have version 1.9 of the original Doom game wads installed on your system for the program to use. Older versions are missing some of the resources in the game data file that are required for glDoom. 3. Make sure you have DirectX 3 or higher installed on your system if it is a Win32 (Windows95, Windows98 or NT) system. Windows98 for some reason requires that DirectX 6 be installed or it does not work. II. Problem: The program starts up but then runs really slow on my system. Solutions. 1. You are (probably) running software OpenGL which is VERY slow. If you look at the top left of the screen you will see a string which tells you the name of the OpenGL driver you are running. If it says Microsoft, then you are running software OpenGL. You can wait for the program to come up but it will be a long wait and playing the game will be impossible. III. Problem: I have a 3Dfx card but the game isn't running on it. Solution. If you get the message: OpenGL Driver is not accelerated then you are running the software opengl. Otherwise you may be running on the OpenGL for your 2D/3D card. Either way you probably have not setup your 3Dfx opengl drivers properly. Download the OpenGL ICD drivers from 3Dfx's website (if you haven't already done so) Extract them and copy the 3Dfxopengl.dll file into the directory where you installed glDoom. Then rename the 3dfxopengl.dll to opengl32.dll. Your 3Dfx card should then work with glDoom. IV. Problem: The program just blows up when I try to run it. I don't get any error messages. Solution. Make sure you have set the program up correctly and that you have the gldoom.wad file in the program directory. V. Problem: When I try to run the program, I get a message box on the screen that says: "glDoom is unable to determine the game type" Solution: Make sure you have followed the installation instructions carefully and completely. The program cannot find a valid game wad. It either isn't in the program directory or it isn't where you told the program it is. C. What hardware does glDoom run on? The 3D accelerators (chipsets) that have been fully tested so far are: 3Dfx Voodoo (4 and 6 Mb - Obsidian too) 3Dfx Voodoo 2 (8 and 12 Mb, single and SLI) 3Dfx Rush 3Dfx Banshee 3DLabs Permedia 2 (8Mb only)(AGP & PCI) 3DLabs GMX AccelGraphics Eclipse II ATI Rage Pro Intel i740 (4 and 8 Mb) Intergraph RealiZm (Z25) Intergraph RealiZm II Matrox G200 nVidia Riva 128 (4Mb) nVidia Riva 128ZX (8Mb) nVidia TNT Rendition V2x00 (8Mb only) S3 Savage3D These accelerators (chipsets) are currently being tested or worked on by their respective manufacturers: PowerVR PCX2 (status unknown) D. Why do I need DirectX 3? Isn't this an OpenGL program? DirectX 3 is required for the Win32 versions to handle the sound effects output and the keyboard and mouse input. All later versions of DirectX will run software written to run on DirectX 3. The program was modified to run on DirectX3 because of the absence of any later versions for Windows NT. Supposedly Service Pack 4 for NT 4.0 has DirectX 5 in it but I have not checked this, yet. (I haven't installed it.) Be aware also, that Windows98 appears to require DirectX 6 for glDoom to run. I do not know why this is but it has solved the Windows98 problems most of the time. B. Known Problems Since glDoom is still Beta software, it isn't finished, yet. Nor has it been completely debugged. There are things in the program that are being addressed even as you read this. Some will have to be addressed by the various driver writers for the respective video cards and some will be addressed by me in the form of program changes. Below is a list of the things that are known to; not work, not work properly, don't "look right", have not been implemented yet or is a problem with certain drivers/cards. 1. The culling code in glDoom is still not in its final state. This causes two problems which will go away when the culling code is finished. The first is that floors and ceilings sometimes appear "in the sky". This is due to the way the geometry for the flats is generated on the fly for each level. The second is that columns of sky may appear occasionally when only slivers of walls are visible. This is because the view-map for the image is still only 320 pixels wide and is not scaled to the actual view width. The new culling code takes this into account. It will also allow for odd aspect ratios of display resolutions (like HDTV 16:9 format) and wide or high fields of view. 2. The multiplayer colors have not yet been implemented in the status bar or on the player sprites. 3. Some OpenGL drivers do not handle glReadPixels correctly or at all. The current 3Dfx Beta 2 drivers have this problem. Do NOT attempt to take screen shots with 3Dfx cards using this driver. You may be able to do so using the MESA drivers for 3Dfx cards but image quality with the MESA drivers is not very good. (much texture distortions) I have not tested other cards extensively for screenshots but they appear (for the most part) to work properly. Any problems with the screenshot files (doomXXXX.tga) will be the result of mishandling the glReadPixels function. This is a DRIVER problem and not something I can fix with program code. 4. The Riva 128 card appears to have some problems with handling glPolygonOffset. This causes the floors/ceilings to sometimes be mishandled in the z-buffer resulting in sprites being drawn that should be occluded by the floor/ceiling. The newest drivers which are available on the products section of nVidia's website correct this problem. (or possibly Microsoft's certified drivers pages) 5. The MIDI music code is still not in it's final state due to a problem with midiStream which I have not yet figured out the cause. The music works but still has the annoying game "pauses" for a few tenths of a second when the MIDI loops. This is preferable to the program blowing up, though. This may turn out to be driver specific. There also seems to be some problems with the Diamond MX-300 and the Turtle Beach cards. I have had a report of a problem with a Roland SCD-15 but mine works fine so I'm not sure what that is. (I have a RAP-10 and an SCD-15) 6. Some systems with more than one MIDI "source" may also not play the MIDI music. I have found no reason for this as the MCI driver just opens the default MIDI device for playback. I have mutiple MIDI sources and do not have this problem (AWE64 & RAP10). 7. There are still some "startup" issues on some systems and as I said earlier, not all OpenGL drivers are "up to snuff" so it's possible you may encounter difficulties in getting the program to run. Some video drivers report no video modes. Some drivers will hang when trying to run wgl_SetPixelFormat (these same drivers also will not run Quake II). Hopefully startup issues will not be a significant problem. I had very few problems with startup issues with the alpha test team. Usually it was caused by trying to use the wrong video drivers or by not having an OpenGL driver. 8. There are some video mode issues with Windows98. This is being addressed. 9. Some "helper" applications that run in the background can interfere with glDoom's operation. One of these is the helper program for the Intellimouse to interpret the mouse wheel. It can cause glDoom to crash. Another is from the "Power Tools" that can cause problems accessing the CD-ROM and MIDI drivers. The Microsoft Office "shortcut" bar is also a source of context switching problems. =============================================================== Things you should know 1. If you see a wall that appears to be missing, it is. It's not in the original wad. I've found a lot are missing. 2. It doesn't matter which wad you want to run. gldoom will run with doom1.wad, doom.wad (registered and ultimate doom), doom2.wad, tnt.wad or plutonia.wad. I don't know if it runs on many third part wads yet. I haven't tried it except on a couple of them. 3. You can specify which wad you want to run in the shortcut by using a -game parameter. It doesn't matter what the wad is named unless it's tnt or plutonia which will trigger the tnt or plutonia flags in doom2 game mode. The wads are scanned for content and the wad type is determined from that. If you rename doom1.wad to doom2.wad, it still knows it's the shareware wad. 4. If you want to run this on 3Dfx, please use the 3Dfx OpenGL Beta drivers. The program DOES NOT like the Quake mini-port. I don't know why. For 3Dfx the gamma has to be preset. It can't be set from within the program. 5. I've done a great deal of work trying to smooth out the input as much as possible. On some slow machines, though, the keyboard doesn't respond well. 6. So far, glDoom seems to run ok on these cards 3Dfx Voodoo 1 (Monster 3D's and Obsidian 100SB-4440) 3Dfx Voodoo 2 (Monster 3D II's and Quantum3D X24) 3Dfx Rush 3Dfx Banshee 3Dlabs Permedia 2 (8Mb slow) AccelGraphics Eclipse II (32 Mb) ATI Rage Pro (4Mb) Intel i740 (4Mb) Intergraph RealiZm - Z25 (offsite) Intergraph RealiZm II (offsite) Matrox G200 nVidia Riva 128 (4Mb) nVidia Riva 128ZX (8Mb) (offsite) nVidia Riva TNT (16Mb) (offsite) Rendition V2x00 (8Mb) S3 Savage3D It also runs on PowerVR PCX2 but it's quite ragged. It has been tested under Windows95 (SR1, SR2.0, SR2.1), Windows98 and Windows NT 4.0 (SP3). I do not know if it works under NT Service Pack 4 or not. I have not installed it so I haven't tried it. Under NT, it has been run on the Realizm, Realizm II, Eclipse II and the Q3D X24. Primary development is on the Eclipse II. It seems to perform quite well on these. (PII-300 128Mb RAM) It has also (as a test of NT DX3) been run on P133 with a Monster 3D I with 80 Mb RAM and NT Workstation 4.0. It was pretty slow (15 to 17 FPS) and the keyboard was not responsive. I'm not sure what is causing this. The same machine runs it at about 25 to 28 FPS under Windows 95. I suspect it's because the 430VX motherboard can only cache the first 64Mb of RAM and NT uses more memory. It may also be due to some problem in the DirectInput library for NT. =============================================================== Addendum: The program also works under Windows XP SP1/SP2/SP3, Windows Vista SP1/SP2 and Windows 7. My test hardware now is a GeForce 8600GT and a GeForce 8800 GTX768MB. I have had to move the project to Visual Studio 2008 and DirectX 9. Plans are under way to try to take advantage of some of the OpenGL 3 functionality. I want to learn to write shaders anyway. And also figure out how to do the type of lighting that is in Doom 3. It won't be as dramatic, of course (and probably not as fast, John is a genious in that regard (IMHO). But I do want to see what I can do with it. I also have an idea to take the network code from Quake 3 Arena and merge that in with the Doom source code. Of course that might mean having to move the Doom source into C++ but that shouldn't present much of a problem and make the DirectX interfaces a bit easier to deal with. COM like C++ a lot and C not so much.