Welcome to the Quake Technical Information file! TABLE OF CONTENTS ----------------- Introduction to the Console.............. Video Subsystem Documentation............ Sound Subsystem Documentation............ CD Audio Subsystem Documentation......... Network Subsystem Documentation.......... Modem Strings............................ Win95 Documentation...................... Key Binding and Aliases.................. Quake Keys and Common Commands........... Making a Config File..................... Reporting Quake Bugs..................... ========================================== == Introduction to the Console == ========================================== Throughout this document, examples of commands are given, all of which are typed in at the console. To bring up the console, press the tilde ('~') key or press ESC to bring up the menu, select Options, and select Console... from the options menu. To exit the console, press ESC. The console provides a way to change console variables and also accepts commands that change game settings such as movement keys, video mode, as well as providing an interface for key binding and command aliasing (more on that later). The console also has a command history with which you can browse through previous commands. Use the up and down arrows to navigate through the command history and press to re-issue a command. Partially typing a command and then pressing the TAB key will complete the currently typed text with the first matching console variable or command. (Yes, this is a good way to look for console commands.) To review previous actions by page, use the PGUP and PGDN keys. ========================================== == Video Subsystem Documentation == ========================================== Quick start ----------- Video modes can be inspected and changed only from the console; there is no menu interface for video mode-related stuff. To see all the video modes that are available, bring up the console (either press tilde ('~'), or press Esc to bring up the menu, select Options, and select Console... from the Options menu). From the console, type vid_describemodes to see all available modes. Type vid_mode to set a mode, where is the mode number listed for the desired mode by vid_describemodes. Higher-resolution modes generally require more extra system memory in order to run, and many are not available in 8 Mb systems, even though they will still show up in the mode list from vid_describemodes. If you try to set a mode for which there is insufficient system memory, you will receive a message to that effect, and the mode will remain unchanged. See "Bug Reporting," below, for information on how to report any problems you encounter. More detail ----------- This version of Quake supports software drawing in a variety of video modes. It does not support any 3-D hardware accelerators. Video modes that are build into Quake are: 320x200, 360x200, 320x240, 360x240, 320x350, 360x350, 320x400, 360x400, 320x480, 360x480 However, the higher-resolution modes on this list require additional memory, and may not be available in 8 Mb systems. In addition, all VESA 2.0 256-color linear framebuffer modes supported by the video adapter are supported. Further information about VESA 2.0 is provided below. Video mode reporting and selection ---------------------------------- Quake assigns each available video mode a mode number, which can then be used to query information about the mode or to select the mode. The first 11 mode numbers are always as follows: 0: 320x200 1: 320x200 2: 360x200 3: 320x240 4: 360x240 5: 320x350 6: 360x350 7: 320x400 8: 360x400 9: 320x480 10: 360x480 You will notice that modes 0 and 1 are both 320x200; mode 1 is a Mode X-style version, which may someday allow support of page flipping for cleaner graphics, but right now it's just slower with no advantages, so use mode 0 for 320x200 resolution. Modes 2-10 are all higher resolution than mode 0, and look very nice, but are also all slower than mode 0. Mode 0 is the fastest of the 11 built-in modes. In addition to the built-in modes, Quake checks for the presence of a VESA version 2.0 driver. If such a driver is detected, the driver is queried for all 8-bit-per-pixel linear framebuffer (LFB) modes that are supported; also, if no LFB 320x200 mode is available, a banked 320x200 VESA mode is queried for. All such modes are added to the mode list starting at mode 11. The available modes will vary depending on adapter, graphics chipset, amount of memory, and VESA 2.0 driver. The higher the resolution, the lower the performance, and the higher-resolution modes will often be too slow for good gameplay on most machines. (Also, higher-resolution modes often need more memory than is available in an 8 Mb system.) The screen can be sized down to improve performance in higher-resolution modes, but then of course the effective resolution of Quake is reduced. At the same resolution, VESA LFB modes are often faster than the non-VESA modes 0-10, because adapters often have faster memory access in LFB modes. If a given VESA mode can support page flipping, then it defaults to page- flipped operation. A VESA mode can be forced to non-page-flipped operation by setting the vid_nopageflip console variable to 1, then setting the mode (note that vid_nopageflip takes operation on the next, not the current, mode set). If there is not enough memory for two pages in a VESA mode, or if the adapter doesn't support page flipping, then the mode will automatically be non-page-flipped. Page flipping can have higher visual quality, but may be either faster or slower, depending on the graphics adapter and other hardware. (See the discussion of the Pentium Pro, below, for a discussion of why page flipping can be faster but is sometimes much slower on that processor.) Page-flipped modes use less system memory than non- page-flipped modes. Quake's VESA support, including VESA driver detection, can be disabled by using the -stdvid command-line switch. The maximum resolution supported by Quake is 1280x1024. Modes with higher resolutions will not be reported by vid_describemodes, and cannot be set. There is no support for any 3-D accelerator boards in this version of Quake. Coming soon. Quake always starts up in mode 0, and modes 0-10 are always available, given enough system memory. How to get VESA 2.0 support --------------------------- Some video adapters have VESA 2.0 support in ROM. Other video adapters come with loadable VESA 2.0 TSRs. In the absence of either of these, UniVBE, a shareware product from SciTech, provides VESA 2.0 support for most video adapters. The latest version of UniVBE can be obtained from the following locations: www: http://www.scitechsoft.com ftp: ftp.scitechsoft.com CIS: GO SCITECH AOL: Keyword SciTech SciTech can be contacted at: email: sales@scitechsoft.com SciTech Software 5 Governors Lane, Suite D Chico, CA 95926-1989 The current version at this writing is UniVBE 5.2. This version supports many more adapters than previous versions, and adds a number of useful low- and medium-resolution modes, such as 512x384. Video-related commands ---------------------- vid_describecurrentmode lists the description for the current video mode. vid_describemode lists the description for the specified video mode, where is as reported by vid_describemodes. vid_describemodes lists descriptions for all available video modes. vid_mode sets the display to the specified mode, where is as reported by vid_describemodes. vid_nopageflip when set to 1, VESA mode sets will always select non-page-flipped operation. When set to 0, VESA mode sets will select page-flipped operation whenever possible. All non-VESA modes are always non-page-flipped. vid_nummodes reports the total number of modes available. vid_testmode tries to switch Quake to the specified mode, then returns to the current mode after 5 seconds. This allows you to try an untested mode without ending up with a black screen if, for example, the monitor can't display the mode properly. There may still be instances in which, due to VESA driver or hardware bugs, the machine will hang in certain modes; vid_testmode can't recover from these situations, but it can recover from a blank or scrambled screen. vid_wait sets the type of waiting that the video adapter should do, as follows: 0: no waiting 1: wait for vertical sync active 2: wait for display enable active The default state of vid_wait depends on the video mode selected. In built-in modes 0-10, the default is always 0, no waiting. You can set vid_wait to 1 (wait for vertical sync) to eliminate shear and tearing in these modes (so partially-completed frames are never drawn, resulting in a rock-solid image). However, waiting for vertical sync can result in substantial performance loss. In VESA modes, if the adapter is VGA compatible and there's enough memory for three video pages, then triple-buffering is enabled and vid_wait is set to 2, wait for display enable. There is little performance loss to this sort of waiting. If the adapter is not VGA compatible, or if there's only enough memory for double-buffering, then vid_wait is set to 1 (wait for vertical sync). This can cause significant loss of performance, but some sort of wait is generally necessary to avoid occasional glitching of the screen when page-flipping; we always choose the lowest-cost wait option that seems to be safe to use. If there's only enough memory for one page, or if vid_nopageflip 1 is in effect, then vid_wait is set to 0 (no wait). As with modes 0-10, vid_wait 1 can be used to eliminate shear, but at a performance cost. We have encountered problems with a few adapters in VESA modes when vid_wait is set to 2 (wait for display enable). Apparently some adapters just toggle display enable all the time, rather than only when pixels are being sent to the screen; this can cause occasional glitches in which the screen image jumps for one frame. You can fix this by setting vid_wait to 1 (wait for vertical sync). We would have made vid_wait 1 the default, but it's slower, and vid_wait 2 works on most machines. The default setting for vid_wait can be changed from the console at any time. If you are in a VESA mode that waits for vertical sync and want to turn it off to get a speed-up, you can do so. However, changing a vid_wait 1 default in a VESA mode may result in problems. If vid_wait defaults to 1 (wait for vertical sync) in a mode, and you force it to 2 (wait for display enable), the machine may hang, because some VGA-incompatible adapters, such as some ATI Mach64s, don't support the display enable status. If you force vid_wait to 0 (no wait), then the screen may glitch periodically if the page flips at a time that results in a bad flip address, although some adapters work fine with no wait at all. If you force a new setting for vid_wait and encounter problems, DO NOT send us a bug report! Setting the video mode automatically ------------------------------------ If you want to default to a mode other than mode 0, place the line: vid_mode in your .cfg file; the mode will be selected when you exec the .cfg file, either from the console or with +exec .cfg on the command line when you start Quake. Note that if you use the .cfg file on another machine, it may cause problems if the other machine doesn't support the specified mode; the mode set should merely fail, but bugs in the VESA driver or the hardware can possibly cause the machine to hang. You can always get the machine to function properly by removing the vid_mode line from the .cfg file, or not execing the .cfg file. Higher-quality perspective texture mapping ------------------------------------------ For maximum speed, perspective correction is performed only every 16 pixels. This is normally fine, but it is possible to see texture ripples in surfaces that are viewed at sharp angles. For more precise texture mapping, set the console variable d_subdiv16 to 0. Doing this will result in somewhat slower performance, however, and the difference in visual quality will not normally be noticeable. Known video problems and workarounds ------------------------------------ If you think you've encountered a bug, see "Bug Reporting," below. As a general rule, go back to mode 0 if you have problems; mode 0 should work properly in all cases. On some ATI Mach64 adapters, the palette is sometimes too dark in some VESA modes, and is tinted oddly (too red, for example) in other modes. The workaround is to use different modes, or modes 0-10. In modes 0-10, shear and tearing can occur as partially finished frames are displayed. Workaround: set vid_wait to 1 (wait for vertical sync); this can result in a substantial performance loss, however. An alternative is to use a page-flipped VESA mode. In page-flipped VESA modes, occasional glitched frames may occur with some VESA driver-hardware combinations. Workaround: set vid_wait to 1 (wait for vertical sync), or use a different mode. Under Win 95, the palette occasionally gets messed up when switching from Quake to the desktop and back again. You can restore the palette by bringing down the console (either press tilde ('~'), or press Esc to bring up the menu, select Options, and select Console... from the Options menu), and typing bf and pressing the enter key, to generate a background flash, which sets the palette. Press Esc to exit the console. Alternatively, setting the screen brightness, either from the Options menu or via the gamma console variable, sets the palette. Under Win 95, if the system key (the key with the Win 95 flag on it) is pressed while Quake is running fullscreen in a VESA mode, Win 95 may be unable to switch back from the desktop to Quake, in which case it will notify you of this, then terminate the Quake session. This is a quirk of Win 95, and there is no workaround other than not to press that key or not to use VESA modes. (Some people go so far as to remove the system key from their keyboard.) Switching away from Quake with Alt-Enter, Ctrl-Esc, Alt-Tab, or Alt-Spacebar all work fine. Performance ----------- Quake's graphics should be adequately fast in mode 0 (320x200) on all Pentium-class machines. If you feel Quake is running slowly, set the showturtle console variable to 1; you will then see a turtle icon appear in the upper left corner of the screen if the frame rate drops below 10 frame/second. If you are getting the turtle, you are probably not getting great gameplay. Performance can be improved in several ways: * size down the screen with the minus key * select a lower-resolution mode, if possible * use a VESA mode * if you're using a VESA mode and vid_wait is set to 1 (wait for vertical sync) by default (you can check by typing vid_wait in the console), you can try setting vid_wait to 0 or 2, as detailed in the discussion of the vid_wait command above. Be aware that risks of screen glitching or hung machines are associated with overriding a default vid_wait 1 setting in VESA modes. Pentium Pro Performance ----------------------- The Pentium Pro is a very fast Quake platform, but has one weak spot; it is by default very slow on writes to video memory. This means that in default hardware configurations, you are usually much better off setting vid_nopageflip to 1 if you use VESA modes, so drawing is done to system memory instead of to video memory. Remember that you must set the mode after setting vid_nopageflip to 1 in order to get vid_nopageflip to take effect. (vid_nopageflip can sometimes be faster on a Pentium, too, but not by nearly as much in general, and it's often slower.) The Pentium Pro has some special features that are not turned on by default, but which can help Quake performance a LOT. These features can be enabled by John Hinkley's program FASTVID, which can be obtained from ftp://members.aol.com/JHinkley/fastvid.zip. Performance in 640x480 mode on a Pentium Pro/150 nearly doubled after FASTVID was run; Quake was very playable (and looked great!) at this resolution. There's the usual caution with FASTVID: It could conceivably make your system run goofily, or who knows what. FASTVID is not a product of id Software, and id makes no guarantees regarding FASTVID. In other words, use FASTVID at your own risk. ************************************************************************ IMPORTANT NOTE: FASTVID works only on Pentium Pros!!! Please do NOT contact either John Hinkley or id with problems concerning FASTVID on Pentium or 486 machines. ************************************************************************ Bug Reporting ------------- If you encounter a video-related bug, please fill out the form found at the end of this file and e-mail it to support@idsoftware.com. There are several problems that are not bugs, and shouldn't be reported, including: * unavailability of some VESA modes; VESA modes are only supported by Quake if they are 8-bpp, are LFB modes (except for 320x200), and are no greater than 1280x1024 in resolution. If you have a VESA mode that doesn't seem to be working properly, please contact the manufacturer; we just use the information that the VESA driver provides us with. * problems that occur when you change vid_wait from a default value of 1 (wait for vertical sync) in VESA modes * sluggish performance on 486s * the known palette problem on some Mach64s. * the known palette problems switching from fullscreen to the desktop and back under Win95. * the known problems switching back from the desktop in VESA modes after the system (Windows flag) key has switched from fullscreen to the desktop. Apart from these, we would very much like to hear about any video problems you encounter. ========================================== == Sound Subsystem Documentation == ========================================== Quake's sound subsystem works only with Sound Blaster compatible sound cards. For Quake to get the correct settings for DMA channel and PORT address, you must set your BLASTER environment variable (or have it set for you with the DIAGNOSE utility in your SB16 directory). If you do not have the BLASTER environment variable set, your sound will not work. If your sound card supports Sound Blaster compatibility, Windows 95 should set this variable for you. Note: some sound cards do not have 100% Sound Blaster compatible hardware, but emulate the Sound Blaster interface. Such cards may display some inconsistencies relative to an actual sound blaster. In particular, sound may be delayed, and hence lag, on the sound cards in some laptops. Note: it is possible for sound to get choppy if the frame rate drops to a very low level, below 5 frames a second. A frame rate that low will not provide a good gameplay experience, so if you do experience choppy sound, your machine is almost certainly not fast enough to run Quake satisfactorily in general. If (when) you see bugs, please use the form attached to the end of these docs to submit a bug report. Sound Card Command Line Options, Commands, and Variables ================================================================== The commands and variables below work under any operating system. Command-Line options are typed on the command line in most any place but only in operating systems which support command line interfaces, like DOS's COMMAND.COM, or NEXTSTEP's or Linux's csh, sh, or bash. For example, under DOS, the NOSOUND option would be used like this: "C:> quake -nosound". Command-Line Options -------------------- NOSOUND Syntax: -nosound Description: This will prevent *any* sound code from being executed. If you are having technical difficulty with the game and then try running the game with this option and the problem goes away, then the problem is probably somewhere in the sound code. SSPEED Syntax: -sspeed Description: This will ask the sound code to set the playback speed within the constraints of the capabilities of the card. This is 11025 Hz by default and usually from 8000 to 44100. Making this faster requires more CPU horsepower, and has no actual benefits, because the sounds only contain 11 KHz data. Making this slower degrades sound quality, but improves performance and saves memory. Commands -------- SOUNDINFO Syntax: soundinfo Description: This prints the "portable" information on your current audio hardware setting in the game. It specifies whether there is stereo output (0 or 1), the number of samples in the DMA buffer, the current sample position (changes each time you run SOUNDINFO and ranges from 0 to the number of samples), the number of sample bits, the submission chunk (1 in DOS or Linux w/ mmaped sound, larger in Linux w/o mmaped sound), playback speed in Hz, the DMA buffer address in hexadecimal (usually 8 digits after the 0x, starting with 0xf00.. in DOS, starting with 0x400.. in Linux, and less than 8 digits if the hardware was not initialized successfully), and the number of channels mixed in software (8 by default, changeable w/NUMCHANNELS command). STOPSOUNDS Syntax: stopsounds Description: Stops all further sound, including currently playing sounds. Sound Blaster Sound Card Command-Line Options and Commands ========================================================== The following applies to Sound Blaster cards or compatibles under DOS or a DOS box. Commands -------- SBINFO Syntax: sbinfo Description: This will print information on the Sound Blaster card in the system. If the version is 4 or greater, then it is some kind of Sound Blaster 16 or compatible. If less, then it is probably a Sound Blaster or Sound Blaster Pro or compatible. If the version is 3, then it will be reported as 2. This is a hack that may be fixed later. The port is the I/O port sensed from the A variable in the BLASTER environment variable. The DMA is the DMA channel and is confirmed in hardware if the card is version 4 or higher. The mixer port can be ignored. ========================================== == CD Audio Subsystem Documentation == ========================================== Overview ======== Quake is designed to play background music off of a CD-ROM. The Quake CD has music tracks on it and each level has been assigned a track that will be played. Win95 Users: Putting a CD other than the Quake CD into the drive when Quake is already running will sometimes cause another Windows application to start and switch you back to Windows with Quake running in the background. You will probably want to stop whatever was started and switch back to Quake as quickly as possible... especially if you are playing deathmatch. Command Line Parameters ======================= -nocdaudio This will prevent the CD audio system from even attempting to initialize. No CD commands or functions will be available. The game will just run with no music. -cdmediacheck This causes the game to periodically check to see if the CD has been removed and a new one placed in the player. It is off by default since this operation is very slow on some CD players and is not needed under Win95. There is normally no reason to enable this option; it would only be useful if you were going to be changing the CD from within the game on a regular basis. Commands ======== There is normally no reason you would need to use any of these commands. If you are playing Quake with the Quake CD in your CD-ROM drive, the appropriate music track will be played automatically. cd on Re-enables the CD audio system after a "cd off" command. cd off Shuts down the CD audio system. No more music will be played unless it is re-enabled. cd reset Causes the CD audio to re-initialize. This is useful if you change CDs or insert the CD after you've already run Quake. cd play Plays the specified track one time. cd loop Plays the specified track. It will be repeated until either it is manually stopped or another track is started. cd stop Stops the currently playing track. cd resume Will resume playback of a stopped track. cd eject This is for CD players that do not have a manual eject button. cd remap ... Allows you to switch what tracks are played. This is especially useful if you want to play music other than that on the Quake CD. If the CD audio system is told to play track 1, it will instead play the 1st track you specified. For example: assuming a CD with 1 data track and 8 music tracks, the command "cd remap 1 9 8 7 6 5 4 3 2" would leave the data alone and play the audio tracks as if they had been placed on the CD in the opposite order. cd info Reports information such as the number and types of tracks on the current CD, what track (if any) is currently playing, and the playback volume. Variables ========= bgmvolume The background music volume. Valid values are 0.0 though 1.0. Changes will normally be made using the options menu. Not all CD-ROM players support variable volume. The 0.0 to 1.0 value translated to a value from 0 to 255 before it is passed to MSCDEX. How this value is interpreted varies from drive to drive. The only thing required by the MSCDEX specification is that 0 is off and anything else is on. Some CD-ROM drives only have on and off so change to bgmvolume will have have no effect on volume once it is on. Messages ======== CDAudio_Init: MSCDEX version 2.00 or later required. MSCDEX was either not loaded, or is a version earlier than 2.00. CDAudio_Init: First CD-ROM drive will be used MSCDEX reported that the system has more than one CD-ROM drive. Quake will always use the first drive in this case. CDAudio_Init: Unable to allocate low memory. We were unable to allocate the memory needed to communicate with MSCDEX. Although the game can still run, this indicates a severe low memory condition. CD Audio Initialized Indicates that the CD audio system has successfully initialized. CDAudio_Play: Bad track number N. We attempted to play a track number that that is outside the range of tracks recorded on the CD currently in the CD-ROM drive. Probable causes are that a CD other than Quake is in the player, or a custom level has specified an invalid track number. CDAudio_Play: Can not play data. A valid track was requested to be played, but it was a not an audio track. The probable causes are the same as for a bad track number. CDAudio_Play: track N failed A valid audio track was going to be played, but the play command to MSCDEX returned an error. CDAudio: media changed This is simply a notification. It can only occur if the "-cdmediacheck" option was specified on the command line. CDAudio: Error - playback stopped N An error occurred while the CD was playing audio. Playback has been stopped and no further automatic play will be attempted; the game will proceed without music. CDAudio_Init: No CD in player. MSCDEX reported an error while Quake was attempting to get information about the current CD. There is either no CD in the player, or it was unable to get the track information. No automatic CD play will be attempted; the game will proceed without music. ========================================== == Network Subsystem Documentation == ========================================== Overview ======== Quake is a client/server game. You are always running over some type of network. In a standalone game, you are using a loopback network; it just passes messages back and forth in memory buffers. This readme is talking about real networks and multiplayer deathmatches. There are three main sections: commands, LANs, and Serial. Most normal configuration can be done via the game menus. There are two types of Quake servers: dedicated and listen. A listen server is a machine that is used to play the game and also hosts the game for other players. A dedicated server only hosts the game; it runs in text mode and does not let anyone play on that machine. A single player game is really just a 1 player listen server that doesn't listen for network connections. Dedicated vs Listen. I'll try to make this simple: it is always better to use a dedicated server. Why? Fairness and playability. With a listen server, the person on the server always has advantages. They will always be the first person into a level, they will always have zero latency, and they will get a server update on each and every frame. On a dedicated server everyone gets equal treatment. Getting into the server is a first come, first served proposition; latency is determined by each player's connection; and everyone is sent the same number of updates. It's about as fair as life gets. By the way, a good 486 machine works nicely as dedicated server. Another suggestion. Until there is a native Win95 version of Quake, IPX will usually provide better gameplay on a local area network. This is due to the delicate balancing act that is required to let a DOS program use the Win95 TCP/IP stack. To start a Dedicated Server, you invoke Quake with the "-dedicated" command-line parameter. When the server starts, you can type any command that you would normally type in the Quake Console, such as "map e1m1" to start the server on a specific map. This can be done from the command- line as well by typing "quake -dedicated +map e1m1". If a value is entered after "-dedicated", that is the amount of players allowed to connect, up to a maximum of 16 players. A dedicated server will quit to the OS whenever a fraglimit or timelimit is reached. Example: "quake -dedicated 16" will start a 16-player dedicated server. To start a Listen Server, you invoke Quake with the "-listen" command- line parameter, or use the Multiplayer menu in the game. Starting a listen server from the command-line will allow you to handle more than 4 players, as 4 is the limit when starting a game from the Multiplayer menu. If a value is used after the "-listen", that is the maximum amount of players allowed, up to 16 players. Command Line Parameters, Commands, and Variables ================================================ Command line parameters ----------------------- -nolan Disables both IPX and TCP/IP support. -noudp Disables support for TCP/IP. -udpport Specifies a UDP port to be used other than the default of 26000. -noipx Disables support for IPX. -ipxport Specifies a IPX port to be used other than the default of 26000. -noserial Disable serial support. -mpath Enables support for code to use Win95's TCP/IP stack. Do NOT use this under DOS! Console Variables ----------------- net_messagetimeout Specifies how long Quake should wait for a message to arrive before deciding the connection has died. The default is 3 minutes. For reference, messages usually arrive at the rate of about 20 per second. hostname This is the name for your server that will show up on an slist (see below). The default value is "unnamed". net_speeds Setting this variable to 1 will cause diagnostic network information to be displayed once per second. sys_ticrate Only used by dedicated servers. This determines the rate at which the server will send out updates to the clients. The default value is 0.05 (20 updatesper second). For servers where bandwidth is limited, using modems or the internet for example, it is advisable to lower this value to 0.1 (10 updates per second). This will have a very minor effect on responsiveness, but will half to outbound bandwitdh required making the modem players a lot happier. Console commands ---------------- net_stats This is for debugging. It displays various network statistics. slist Looks for Quake servers on a local LAN (or over a null modem cable). This will NOT go outside the local LAN (will not cross routers). LANs ==== Here are the LANs that are supported by the Quake test release. For each one, you'll be told how to connect to a server *if it is not on your local network*. If it is, you can use the "slist" command and connect by hostname. See the main readme for a discussion of the connect command. IPX --- Quake has been run with Novell's ODI IPX stack under DOS, PDIPX with packet drivers under DOS, and the Microsoft IPX stack in a Win95 DOS box. When connecting to a server using IPX, you specify its network:nodeaddress (like 12345678:1234567890AB). If you are on the same network, you can just specify the node address. If you are doing a connect command from the console, a full IPX address must be enclosed in quotes. For example, the server's IPX address is "00FADE23:00aa00b9b5b2", you would enter: connect "00FADE23:00aa00b9b5b2" Win95 TCP/IP ------------ Please see the Win95 section of this file for details about playing using TCP/IP under Win95. Kali ---- To Quake, Kali appears to be IPX. Once you've got Kali up and running, run Quake as if it was on an IPX network. Beame & Whiteside TCP/IP ------------------------ This is the only DOS TCP/IP stack supported in the test release. It is not shareware...it's what we use on our network (in case you were wondering why this particular stack). This has been "tested" *extensively* over ethernet and you should encounter no problems with it. Their SLIP and PPP have not been tested. When connecting to a server using TCP/IP (UDP actually), you specifiy it's "dot notation" address (like 123.45.67.89). You only need to specify the unique portion of the adress. For example, if your IP address is 123.45.12.34 and the server's is 123.45.56.78, you could use "connect 56.78". Playing over the Internet ------------------------- Yes, you can play Quake over the Internet. How many people can be in the game? That depends. How smooth will the game be? That depends. There are just too many variables (bandwidth, latency, current load, etc...) for us to make any kind of promises about Internet play. Serial/Modem ============ The Quake serial driver supports two COM ports. Although they are referred to as COM1 and COM2, you can configure them to use any normal hardware COM port (1 thru 4 on most PCs). The com ports are used with interrupts, so their IRQ may not be used for another purpose (such as a LAN adapter or sound card). The IRQ may not be shared with another device either; not even another COM port. A client can only be connected to one server at a time, so multiple ports are really only useful on a server. When using modems, the client must originate the call and the server must answer. This holds true even for a two player, non-dedicated server configuration. In the Multiplayer menu, the default modem string is "ATZ". If your modem games are too slow, you can change this string to the appropriate one for your modem as listed below in the "Modem Strings" section. The COMx commands ----------------- There are two commands to support serial/modem play for Quake. They are: COM1 and COM2. Entering one of these commands with no arguments will display the status of that serial port, similar to this: Settings for COM1 enabled: true connected: false uart: 16550 port: 3f8 irq: 4 baud: 57600 CTS: honored DSR: honored CD: ignored startup: ATZ shutdown: ATH When used with arguments, these commands change the settings and status of the COM ports. The possible arguments are listed below; examples follow. enable | disable "enable" means that your configuration is complete and you want to use the COM port. "disable" is used to turn off a COM port, usually to change its settings. The default (initial) state is disabled. modem | direct Use one of these two to let Quake know if you are using a modem or a direct connection (also called a null modem). Quake uses this to know if it needs to handles modem initialization strings, dialing sequences, and hangup procedures. reset This will reset the COM port to its default settings and state. port irq These are used to set the I/O Port and IRQ that your serial port uses. The default values are: port=3f8 irq=4 for COM1 and port=2f8 irq=3 for COM2. Note that the port number is displayed in hexadecimal; to enter it you would use something like "COM2 port 0x2f8"; the "0x" preceding the "2f8" indicates that you are giving the value in hexadecimal otherwise decimal is assumed. baud Sets the baud rate. Valid values for are: 9600, 14400, 28800, 57600, and 115200. 57600 is the default. Please note that this is the baud rate used for the uart, not your modem. It is perfectly valid to use 57600 on a COM port that is connected to a 28.8 modem. 8250 | 16550 Specifies the type of uart chip in your system. Normally this is automatically detected, one of these need only be used if your chip is incorrectly detected. startup shutdown This allows you to specify the startup and shutdown strings needed for a modem for playing Quake. If you've found values that previously worked with Doom, use them here. If you are playing over a null modem cable, leave these blank. -cts | +cts -dsr | +dsr -cd | +cd These determine if certain serial control lines should be honored or ignored. The "-" means you want that line ignored, the "+" means to honor it. "cts" is an abbreviation for "clear to send", "dsr" for "data set ready", and "cd" for "carrier detect". Most people will not need to change these values. The default is to honor all 3 lines. Quake always uses no parity, 8 data bits, and 1 stop bit; these values can not be changed. The baud, port, irq, and uart type can not be changed on an enabled port, you must disable it first. Configuration examples ---------------------- Example1: You have a machine with two serial ports you are going to use as a Quake server. COM1 will be using a null modem cable and COM2 will be connected to a 14.4 modem. You would use commands similar (the startup string would almost certainly be different) to these: COM1 baud 57600 enable COM2 baud 14400 modem startup AT\N0%C0B8 enable Example2: You are going to use your machine to connect to a dial-up Quake server with your 28.8 modem connected to COM2. You would use a command something like this: COM2 baud 57600 modem startup AT\N0%C0B8 enable Note the baud rate is not the same as the modem speed. This allows the modem-to-uart communications to occur at a higher rate than the modem-to-modem communications. Connecting to a serial Quake server ----------------------------------- Connecting to a Quake server over a serial/modem connection is done using the "connect" command. The command "connect 5551212" would try to connect to a Quake server at the phone number 555-1212. Note: your local phone company would probably appreciate it if you didn't try this number! If you are using a null modem cable, you can type "connect #". Quake will then attempt to connect to the server. Known problems / workarounds ============================ Packet drivers with PDIPX - there is a bug that stops a server running on this combination from responding to the slist command. Use the patched version of PDIPX included with Quake to correct this problem. SLIST sees no servers - Some PCMCIA ethernet cards and PPP drivers will not do the UDP broadcasts needed for the SLIST command (search for local games from the menu) to function correctly. In these cases you must connect to a Quake game using either its IP address or hostname (DNS resolvable hostname, not the hostname variable in Quake). ========================================== == Modem Strings == ========================================== Boca M1440i (internal): ATS48=0S37=9S46=136%C0%E0%M0&K0&Q0&R1&C1&D2\G0\N1N0 Boca 14.4k (internal): AT&C0N0S37=9&K0W0&Q0S36=3S48=128%C0 Boca 14.4 Fax/Modem AT S46=0 S37=9 N0 &Q0 &D2 &K4 Boca 14.4k (external): AT &F S0=1 S36=0 &K0 &Q6N0S37=9 &D2 Boca 14.4k: AT S46=0 S37=9 N0 &Q0 &D2 &K0 %C0 Cardinal 14.4k v.32bis, v.42bis Fax/Modem: AT &F N0 S37=9 &Q0 &D2 \N1 Digicom Systems (DSI) (softmodem): AT Z \N0 &D2 &K0 S48=48 Digicom Systems Scout Plus: ATZ*E0*N3*M0*S0*F0&D2 Gateway Telepath: AT &F S37=9 %C0 &K0 &Q6 \G0 Gateway Telepath 14.4k: AT S46=0 S37=9 N0 &Q0 &D2 &K0 %C0 Gateway Telepath I: AT S0=1 &N6 &K0 &M0 Gateway Telepath II: AT S0=1 S37=9 %C0 &Q0 &K0 Generic v.32bis 14.4k Fax/Modem: AT \N0 %C0 B8 Generic 14.4k Fax/Modem: AT S46=0 S37=9 N0 &Q0 &D2 %C0 \G0 &K0 GVC 14.4k (internal): AT &F B8 \Q0 Hayes 28.8k V.FAST Modem: AT &Q6 &K S37=9 N %C0 \N0 Infotel 144I: AT&Q0 S37=9 N0 &D2 Infotel 14.4: &F0 \N1 &D2 S37=F8 Intel 14.4k: AT \N0 %C0 \Q0 B8 Intel 14.4k (internal): AT Z B8 Q1 \C0 \N1 %C0 \V "H Linelink 144e: AT &F &D1 &K0 &Q6 S36=3 S46=136 %C0 19200 Microcom AX: &F \N1 \Q0 &D2 Microcom QX/4232bis: AT %C0 \N0 Netcomm M7F: AT &E &K0 B0 \V0 X4 &D2 \N1 \Q0 #J0 #Q9 %C0 Nokia ECM 4896M Trellis V.32: AT Z %C0 /N0 Nuvotel IFX 14.4 (internal): &F \N1 &D2 Practical Peripherals 14400FX v.32bis: AT Z S46=0 &Q0 &D2 Practical Peripherals 14400FX v.32bis: AT S46=0 &Q0 &K0 &D2 Supra: AT &F0 S46=136 %C0 Supra (external): AT &K &Q &D \N1 Supra 14.4k v.32bis: AT &F S46=136 &Q0 &D2 Supra 14.4k v.32bis: AT &K &Q &D \N1 Supra Fax Modem 14.4K v.32 bis AT &F %C0 S48=7 Q0 V1 W1 Telepath 14.4k: AT &F&M0&K0&N6&H0 S0=1 Twincomm DFi 14.4: AT&F &Q0 %C0 S37=9 &D2 UDS V.3223: &F \N1 \Q &D2 UDS Fastalk 32BX: &F0 \N1 &D2 USR Courier v.32bis: ATS0=1 S7=60 E1 Q0 V1 &C1 &D2 &H0 &K0 &M0 &N6 &A3 USR Courier HST/DS 16.8k: First reset the modem in a communication program with AT&F&W AT X4 B0 &A0 &B0 &H2 &I0 &K0 &M0 &N6a USR DS v.32bis v.42bis (external): AT&m0&n6&a0&r1&h0&k0&i0&s0&b1x1 USR Sporster 9600: AT&M0&K0&N6 USR Sportster V.34 28.8 (note: works best at 19200 baud): AT &F &M0 &I0 &K0 &B0 &N0 USR Sportster 14.4k Fax/Modem USING ERROR CORRECTION: AT S0=1 S7=60 E1 QO V1 &C1 &D2 &K0 &N6 &A3 USR Sportster 14.4k Fax/Modem (internal): AT &F&M0&K0&N6&H0 USR Sportster 14.4k (internal): AT &F &B1 &H0 &I0 &K0 &M0 &N6 &R1 USR Sportster 14.4k: ATS0=1S7=60E1Q0V1&C1&D2&K0&N6&A3 USR Sportster 14.4k: AT &F0 &K0 &M0 &N6 &H0 &I0 &B1 &R1 USR Sportster 14,000 Fax Modem: AT S0=2 &N6 &K0 &M0 &I0 &H0 &R1 &A0 V1 X4 USR 14.4k: AT &F&A0&K0&M0 USR 14.4k AT &K0 &H0 &D0 &I0 &R1 USR 14.4k Dual Standard ATB0&R1&B1&N6Q0X4&A0&D2&H0&I0&K0&M0M1 USR (model?): &F E1 V1 X4 &C1 &D2 &N0 ViVa 14.4k: AT&F&Q6\N0%C0&D2N0S37=9 ViVa modem (internal): &F&Q6\N0%C0&D2N0S37=9 Zoltrix model 14/14 VE: AT S0=Q0 V1 &C1 &D2 W2 &Q0 Zoom 14.4k VFX: AT&Q6S37=9N0%C\N0 Zoom 14.4k VFX: AT&Q6S37=11N0%C&K0 Zoom OEM Modem: AT&Q6S37=9N0&K0 Zyxel U-1496E: AT Z &N4 &K0 ========================================== == Win95 Documentation == ========================================== Quake is a DOS application. However, it runs fine from the MS-DOS prompt under Win95, so long as the Properties for the MS-DOS prompt are set up so that Quake can run. (See "Set the MS-DOS Prompt Properties", below, for information about setting MS-DOS Prompt Properties.) Following are some steps that can help Quake run better under Win95. Have enough memory ------------------ Quake requires at least 16 Mb of installed memory in order to run under Win95. Set the MS-DOS Prompt Properties -------------------------------- If Quake won't run, the MS-DOS Prompt Properties may not be set correctly. To set the Properties for the MS-DOS prompt, bring up a DOS session, and either click on the MS-DOS icon in the upper left corner or press Alt-Spacebar, then select Properties from the menu that comes up, and make sure the following settings are correct. In the Program sheet of MS-DOS Prompt Properties, make sure the "Suggest MS-DOS mode as necessary" is checked. In the Memory sheet of MS-DOS Prompt Properties, make sure all five fields are "Auto". In the Screen sheet of MS-DOS Prompt Properties, set "Usage" to Full-screen. In the Misc sheet of MS-DOS Prompt Properties, uncheck the "Allow screen saver" box, and check the "Always suspend" box. Make sure there's enough free disk space ---------------------------------------- If you get error messages like "can't lock memory" under Win 95, or if you get other weird, inexplicable errors, make sure you haven't run out of disk space; delete some files if necessary. You can see how much disk space is free by bringing up "My Computer" and clicking on the disk icon; the free disk space will be shown at the bottom of the window. Run fullscreen -------------- Quake can run in a window under Win95--but it will run very slowly. You are unlikely to get satisfactory performance unless you run Quake fullscreen. Quake normally comes up fullscreen under Win95; if you have switched it back to windowed mode, you can get that window back to fullscreen by clicking on it and then pressing Alt-Enter. Shut down other applications ---------------------------- Many Win95 apps and DOS apps run even when they're not the foreground application. Such applications contend for system resources such as memory, processor cycles, and sound hardware. If Quake seems to be running choppily, if sound is garbled, or if the disk is going all the time, try shutting down whatever other applications you have running. For example, some players have reported that Quake does not run as well when the Office shortcut bar is running. Restore the palette if it gets garbled -------------------------------------- Under Win 95, the palette occasionally gets messed up when switching from Quake to the desktop and back again. You can restore the palette by bringing down the console (either press tilde ('~'), or press Esc to bring up the menu, select Options, and select Console... from the Options menu), and typing bf and pressing the enter key, to generate a background flash, which sets the palette. Press Esc to exit the console. Alternatively, setting the screen brightness, either from the Options menu or via the gamma console command, sets the palette. Avoid the system key -------------------- Under Win 95, if the system key (the key with the Win 95 flag on it) is pressed while Quake is running fullscreen in a VESA mode, Win 95 may be unable to switch back from the desktop to Quake, in which case it will notify you of this, then terminate the Quake session. This is a quirk of Win 95, and there is no workaround other than not to press that key or not to use VESA modes. (Some people go so far as to remove the system key from their keyboard.) Switching away from Quake with Alt-Enter, Ctrl-Esc, Alt-Tab, or Alt-Spacebar all work fine. Give Quake more and/or locked memory ------------------------------------ By default, Quake tries to allocate 8 Mb of unlocked memory for heap space under Win 95. More memory helps Quake run faster; you can allocate more memory for Quake under Win95 by setting the command-line switch -winmem x where x is the number of megabytes to allocate for Quake. If there's enough memory in the system, the larger the number, up to about 16, the better the performance. If, however, there isn't enough memory in the system, or many other applications are running, the larger number can just cause Quake to page to disk a lot, and can actually slow performance considerably. Also, higher numbers can also cause Win 95 to take longer to start Quake and take longer to return to the desktop afterward. If you have 32 Mb or more in your machine, -winmem 16 should provide the best performance for Quake. If you have less than 32 Mb, or a lot of applications running, then you will have to experiment to find the best amount of memory to allocate for Quake. You may optionally instruct Quake to lock itself in memory by using the command-line switch -winlock so it won't get paged out by other applications. This can avoid hitches when parts of Quake get paged into and out of memory, and thus provide a smoother playing experience. On the other hand, it can cause Quake to take longer to start, and can make the return to the desktop take longer when Quake ends, because Quake has been hogging a lot of memory. It is even possible, if most of the memory in the system is locked by Quake, that it will take many minutes to switch back to the desktop while Quake is running, so the system will effectively be nearly frozen. Therefore, use -winlock with caution; Quake is not as well-behaved a Win95 citizen when -winlock is specified, and does not share resources particularly well. -winmem can be used in conjunction with -winlock; if -winmem specifies more memory than is available to be locked, then Quake will lock as much memory as possible. Being too aggressive about how much memory is locked can actually slow Quake performance, because unlocked parts of the system like system CD and sound code and data can then be forced to page, so if you do lock memory, you will have to experiment to find the sweet spot, unless you have 32 Mb or more of memory. -winlockunlock can be specified as an alternative to -winlock, to tell Quake to lock its memory when it starts, then immediately unlock it. The advantages of doing this are: 1) it forces all of Quake's pages into memory, so no pages should need to be brought in as Quake runs, making for smoother running at the start, and 2) it enables Quake to determine whether the specified amount of memory (if -winmem is also specified) is available in the machine, so you can be sure Quake won't try to allocate more heap space than the the amount of physical memory that's actually available. Like -winlock, -winlockunlock causes Quake to take quite a bit longer to start up, but it has the advantage of making Quake a good Win95 citizen if you need to switch back to the desktop, or have other apps running. In general, Quake will run fine without any of the -winxxx switches, but you may find that one or more of them--particularly -winmem if you have more than 16 Mb--helps Quake performance on your machine. None of this is an issue under DOS itself (as oppsed to a DOS box under Win95), because Quake just uses all the memory in the machine under DOS. ========================================== == Key Binding and Aliases == ========================================== Pressing the tilde key ("~") will bring down the console (pressing the tilde key or ESC while in the console will close the console). From the console you can adjust your player controls, this is done by "binding" keys to commands. The format for binding keys is as follows: bind Where is a valid key control and is a valid quake command. Example: To bind the j key to the 'jump' command, you would type: bind j +jump and press enter. Non-printable keys such as 'page up' and buttons from the mouse/joystick are bound in the same manner as printable characters. A list of bindable keys can be found at the end of this file. Example: To bind the page up key to the 'jump' command, you would type: bind pageup +jump and press enter. To bind the right mouse button to the attack command, you would type: bind mouse2 +attack and press enter. The alias command is used to create a reference to a command or list of commands. When aliasing multiple commands, or commands that contain multiple words (such as "fraglimit 50"), you must enclose all the commands in quotation marks and separate each command with a semi-colon. Example of an alias that changes some Deathmatch server parameters: alias net_game "hostname my_server ; fraglimit 15 ; timelimit 15" bind INS net_game Once the server is spawned (you must be the one running the -listen server), you just push the Insert key to set the hostname, frag limit and time limit of the server. So now the first person to 15 frags, or with the one with the most frags in 15 minutes, wins. Another example would be to change to the Rocket Launcher, fire one rocket, and change back to the Double Barrel Shotgun, when you press the "," key: alias rl_dbsg "impulse 7 ; +attack ; wait ; -attack ; impulse 3" bind , rl_dbsg Aliasing is very powerful, allowing you great flexibility, so you should experiment by aliasing different commands in various ways. A list of common commands can be found in the next section. ========================================== == Quake Keys and Common Commands == ========================================== The following keys can be bound: A-Z 0-9 *F1-F12 *TAB ENTER SPACE BACKSPACE UPARROW DOWNARROW LEFTARROW RIGHTARROW ALT CTRL SHIFT INS DEL PGDN PGUP HOME END PAUSE SEMICOLON MOUSE1 (mouse button 1) MOUSE2 (mouse button 2) MOUSE3 (mouse button 3) *~ (tilde) * Can only be bound on the command line or in a .cfg file. The ESC key cannot be bound. ========================================== == Making a Config File == ========================================== The commands (bindings and aliases) discussed above can be included into a file containing all of your personal configurations, known as a "config" file. This file can then be loaded during game play to enable all your personal bindings and settings. To do this, use your favorite editor to create a new file, such as "fragmstr.cfg". Your .cfg file MUST be located in the quake\id1 directory or quake won't find it. Then after launching Quake, you would type "exec fragmstr.cfg" and press enter, from the console. You can also exec you .cfg file from the DOS command prompt by typing "quake +exec fragmstr.cfg". When you exec a config file, it is the same as typing all the lines in your config file into the console, only Quake does it for you. Here is an example config file (c:\quake\id1\bear.cfg) and the meaning of all the bindings, aliases and settings: -------------------------------cut here------------------------------------- name player1 // Sets player name to player1 (lets your opponent // know who fragged them) sensitivity 4 // Sets the mouse sensitivity to 4 scr_conspeed 5000 // Sets the console raise/lower speed lookspring 0 // Sets Mouse Look Spring to 0 (0=keep looking, // 1=spring back, when mouse button is released) vid_mode 10 // Sets Video Mode to mode 10 (360X480 resolution) gamma .8 // Sets Gamma Correction to .8 (<1=Lighter, 1=normal // and >1=darker) viewsize 70 // Sets the Screen View size to 70 degrees bind mouse1 +forward // Binds the left mouse button to Move Forward bind mouse3 +attack // Binds the middle mouse button to Fire bind mouse2 +mlook // Binds the right mouse button to Mouse Look bind HOME "save bear1" // Binds the Home Key to quick save, saves to // bear1.sav bind ENTER +showscores // Binds the Enter key to show Deathmatch Scores bind SHIFT +speed // Binds the Shift key to Run bind CTRL +jump // Binds the Control key to Jump bind ; +mlook // Binds the ; key to Mouse Look also bind . +moveleft // Binds the . key to Strafe Left bind / +moveright // Binds the / key to Strafe Right color 3 4 // Makes Uniform Top green and Pants Red for Net play alias rl_dbsg "impulse 7 ; +attack ; wait ; -attack ; impulse 3" bind , rl_dbsg // Aliases single rocket attack command and binds // it to the ',' key. -------------------------------cut here------------------------------------- ========================================== == Reporting Quake Bugs == ========================================== How to use the bug report: Where to send bug reports: E-mail : support@idsoftware.com FAX : 214-686-9288 There are two sections of information - primary and secondary. Primary information contains information such as date, your name, e-mail address, etc. Secondary information is actual bug information. There are a few different sections depending on what type of bug you revieced (sound, video, etc). Only fill out and include information from the section related to the type of bug you received. If possible, start Quake with the "-condebug" command line parameter and try to reproduce the bug. Attach the "qconsole.log" file found in the "id1" directory to the end of the bug report. If the bug is sound related, while in Quake, execute the SOUNDINFO and SBINFO (DOS only) commands from the console. Please attach a copy of your CONFIG.SYS and AUTOEXEC.BAT file to the end of the report. Bugs submitted properly with this form will get attention. Unformatted ones sent to personal accounts will be ignored. If you see problems, please take the time to do this. If you do not have all of the information requested in the form, don't worry. Send what you do have. Please include the version #. THe version # for Quake can be found in the lower right hand corner of the console. To bring up the console, press the tilde ('~') key. Press tilde ('~') again or ESC to exit. -------------------------------cut here------------------------------------- ============================================================================ == Quake Bug Report - Primary information == ============================================================================ Date: Name: Phone number: E-mail address: (please include this, we redirect tons of mail) Game Title: Version #: Operating system (i.e., DOS 6.0 or Windows 95): Computer type: BIOS date: BIOS version: Processor type: Processor speed: Do you program at school/work? Do you provide tech. support at school/work? Please state the problem you encountered: Please state how to reproduce the problem: If program crashed with nasty undecipherable techno-garbage, please look for the eight-digit hex number which comes after "eip=" and write it down here: ============================================================================ == Quake Bug Report - Secondary information == ============================================================================ ------------------------------ Video Related ------------------------------ Video Card Manufacturer: Video Card Model: Chipset Used: BIOS Date: (If using UniVBE, The above information can be found by running uvconfig) Did the problem occur while in a VESA mode? If so, what is the VESA driver and version? (eg., UniVBE 5.1a, built into board BIOS, or manufacturer provided TSR) ------------------------------ Sound Related ------------------------------ Audio card brand and model: If DOS or a DOS box, please run the command "set > set.txt" then attach "set.txt" to the end of the report. ----------------------------- Network Related ----------------------------- What type of network connection was established when the error occurred? (modem, nullmodem, or network) If modem, Modem brand and model: If network, Network card brand and model: Network protocol/configuration: ---------------------------------------------------------------------------