-
Notifications
You must be signed in to change notification settings - Fork 929
/
Copy pathTECHINFO.TXT
1913 lines (1446 loc) · 74.3 KB
/
TECHINFO.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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.....................
Demos....................................
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 <enter> 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 ==
==========================================
The Video Modes menu
--------------------
Video modes can most easily be selected from the the Video Modes menu, which
is brought up by selecting the Video Options choice in the Options menu.
All the resolutions that Quake can support on the current computer are
displayed.
Please note that higher-resolution modes require correspondingly more
system memory in order for Quake to run, and that some high-resolution
modes may not be available when running Quake on 8 Mb machines. Such
modes are not listed in the Video Modes menu. Please do not report
video modes that do not appear in the Video Modes menu as bugs; either
those modes are not supported by your video adapter, or there is not
enough system memory for Quake to support those modes.
The video modes listed in the Video Modes menu can be tested, set, and made
the default mode for Quake from the Video menu, as follows:
* The arrow keys can be used to move the blinking indicator to any of the
modes listed in the Video menu.
* Pressing the 'T' key tests the mode the blinking indicator points to, by
setting the mode, leaving it set for 5 seconds, and returning to the previous
mode. This lets you verify that your computer does in fact support that
mode. We highly recommend that you always test modes with 'T' before setting
thempermanently by pressing the Enter key, in case some sort of hardware or
software glitch causes a mode to function incorrectly and produce a garbled
screen. It is unlikely but possible that testing or setting a mode will
cause your computer to hang or crash; if this happens, there is a serious
hardware or software bug, and you should not attempt to select that mode
again.
* Pressing the Enter key sets the mode the blinking indicator points to,
leaving it set so Quake will then run in that mode. We suggest that you
test a mode by pressing the 'T' key before setting it by pressing the Enter
key. Note that a selection made with the Enter key remains in effect only
until Quake is exited (or a new mode is set). You must explictly make a mode
the default mode by pressing the 'D' key in order to automatically set that
mode when you start Quake up in the future.
* Pressing the 'D' key makes the current mode the default mode that Quake
starts up with. Note that the current mode is the mode that's displayed in
white in the mode list, not necessarily the mode that the blinking indicator
points to. The current default mode is listed in the description of the 'D'
key at the bottom of the Video Modes menu.
* Pressing Esc exits the Video Modes menu.
Please see "Bug Reporting," below, for information on how to report any
problems you encounter.
Video modes from the console: Quick start
------------------------------------------
More comprehensive but more complex video control is available through the
Quake console. This section describes the commands necessary to perform
basic mode setting through the console (this is similar to what can be
accomplished through the Video Modes menu), and following sections describe
console video control in detail.
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<enter> to see all available modes.
Type vid_mode <mode #> to set a mode, where <mode #> 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; modes that are supported by the video
adapter but are currently unavailable due to system memory limitations
will still show up inthe mode list from vid_describemodes, but will
have "**" in place of a mode number. (Such modes will not show up at
all in the Video Modes menu.) If you try to set a mode for which
there is insufficient system memory, you will receive a message to that
effect, and the video mode will remain unchanged.
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 built 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 video memory, and VESA
2.0 driver. The higher the resolution, the lower the performance, and
thehigher-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, and note that it then stays in effect permanently, even when Quake is
exited and restarted, unless it is manually set back to 0). 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, and can also be disabled, along with
sound, network, and other hardware support, by the -safe 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.
A note on modes reported in the Video Modes menu
------------------------------------------------
The vid_describemodes console command lists all modes with
resolution less than or equal to 1280x1024 that are
supported by the video adapter, although modes for which there
is not enough system memory have "**" for the mode number. VGA,
Mode X-style, and VESA 2.0 modes are listed separately, so a
single resolution can be listed as many as three times, once for
each hardware mode that supports it. For example, mode 0 is
VGA mode 0x13, which supports 320x200 resolution, and mode 1 is
320x200 Mode X-style mode. Quake looks identical in both
modes, although it usually runs faster in mode 0.
The Video Modes menu is much simpler. Only modes with resolution
less than or equal to 1280x1024 that are both supported by the
hardware and for which there is sufficient system memory are
listed. Further, a given resolution is listed only once. If a
given resolution is available in multiple hardware modes, then
selecting that resolution will select the appropriate hardware mode
as follows:
If the mode is 320x200, then VGA mode 0x13 is selected, and
equivalent Mode X and VESA modes are ignored;
Otherwise, the VESA version of the mode is used.
You can always see what video mode is selected from the console by typing
the command:
vid_mode<enter>
command.
None of this has any effect on selecting modes through the
console, where all the different versions of each mode are
listed, and the desired version can be selected by using the
appropriate mode number.
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 400x300
and 512x384.
Video-related commands
----------------------
vid_describecurrentmode
lists the description for the current video mode.
vid_describemode <mode #>
lists the description for the specified video mode, where <mode #> is as
reported by vid_describemodes.
vid_describemodes
lists descriptions for all available video modes.
vid_mode <mode #>
sets the display to the specified mode, where <mode #> is as reported by
vid_describemodes.
vid_nopageflip <1|0>
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. The setting of vid_nopageflip is remembered
when Quake is exited (by being saved in config.cfg), and is reloaded
when Quake is restarted, so once vid_nopageflip is set to 1, all
VESA modes set in all Quake sessions after that point be will non-page-
flipped until vid_nopageflip is set to 0. Note that setting this
variable doesn't affect whether the current video mode is page-flipped,
but rather whether page-flipping can be used by future mode sets.
vid_nummodes
reports the total number of modes available.
vid_testmode <mode #>
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 <wait type>
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.
(_vid_wait_override can force vid_wait to 1, wait for vertical
sync; see the description of _vid_wait_override below.)
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!
_vid_wait_override <1|0>
can be used to force wait for vertical sync in all modes. When
_vid_wait_override is set to 0, the type of waiting, if any, for
each video mode that's set thereafter is automatically set to
what appears to be the fastest safe state. However, it is
possible in some cases that automatic setting may result in some
screen glitching, and it is also true that shear can be
eliminated by waiting for vertical sync (although at a cost in
performance), so it may be desirable in some cases to override
the automatic wait selection and always wait for vertical sync.
This can be done by setting _vid_wait_override to 1. Once set,
this remains in effect through all succeeding mode sets, even
when Quake is exited and re-entered; the only way to keep Quake
from waiting for vertical sync once _vid_wait_override is set to
1 is to set _vid_wait_override to 0. Note that changing
_vid_wait_override doesn't affect the current mode, but rather
takes effect on the next mode set. _vid_wait_override is initially
set to 0.
_vid_default_mode <mode #>
can be used to force Quake to start up in a particular mode.
The easiest way to select a default mode is by pressing the
'D' key in the Video Modes menu, but you can alternatively
use _vid_default_mode to specify the mode in which you want
Quake to start up in future Quake sessions. _vid_default_mode
is initially set to 0.
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) (you can set _vid_wait_override to 1 to make waiting
for vertical sync permanent for future Quake sessions), or use a different
mode.
The VESA video drivers that come with some video adapters don't
support low-resolution modes such as 320x200; often,
nothing lower than 640x400 is supported. For example,
this is the case with some ATI adapters. There's nothing
Quake can do to provide low-resolution VESA modes in these
cases, because Quake simply supports whatever modes the VESA
driver chooses to report as supported. Unfortunately, 640x400
is too high a resolution for really good performance unless you
have a very fast Pentium or a Pentium Pro, so on machines with
this sort of adapter, the VESA modes aren't very usable.
Workaround: Use UniVBE 5.2, which supports low-resolution modes
on a wide variety of adapters. Note that a few adapters simply can't
support low-resolution modes, in which case you'll have to stick with
the low-resolution VGA and Mode X modes that are built into Quake,
which run fine but may be somewhat slower than VESA modes.
A few video adapters are almost but not fully VGA compatible, because
they don't support some unusual VGA video modes. In particular, a few
adapters don't support the 360-wide Mode X-style video modes that are
build into Quake (modes 2, 4, 6, 8, and 10), and display garbage in those
modes. Workaround: use different modes, such as 0, 3, 5, 7, 9, or any
VESA modes that are available.
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 normally 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.) However, you can
disable the system key for Quake with the following utility:
http://www.microsoft.com/windows/download/doswinky.exe
Switching away from Quake with Alt-Enter, Ctrl-Esc, Alt-Tab, or
Alt-Spacebar all work fine (except that if you disable the system key
with doswinky.exe, Ctrl-Esc will also be disabled).
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<enter>
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.
To see how exactly fast Quake is running, bring up the console and type
host_speeds 1<enter>
You will see a display at the top indicating total frame time in
milliseconds, and also server, graphics, and sound frame time in
milliseconds. (Note, though, that unless you also do
snd_noextraupdate 1<enter>
sound time will actually show up as graphics time. However,
snd_noextraupdate 1 can cause sound to get choppy, so it's not
generally recommended.)
Lower numbers are better.
Type
host_speeds 0<enter>
to turn off the frame time display.
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.
************************************************************************
Video 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.
* video modes that are not listed in the Video Modes menu, or that are not
listed or are listed with "**" in the output from vid_describemodes; such
modes are either not supported by your video adapter, or cannot be supported
by Quake in the amount of memory your system has. High-resolution modes will
often not be available in 8 Mb systems.
* 360-wide video modes that don't work although other resolutions do work
* lack of low-resolution VESA modes; the availability of low-resolution modes
is the responsibility of the VESA driver. UniVBE 5.2 provides low-resolution
modes on most adapters.
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 on some cards.
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 <speed>
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 any current looping 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. Version 2 is an 8 bit mono
sound blaster, Version 3 is an 8 bit stereo sound blaster pro.
The port is the I/O portsensed from the A variable in the BLASTER
environment variable.The DMA is the DMA channel and is confirmed in
hardware if thecard 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 <track number>
Plays the specified track one time.
cd loop <track number>
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 <track1> <track2> <track3> ...
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 IPX, TCP/IP, and serial support.
-noudp
Disables support for TCP/IP.
-udpport <port#>
Specifies a UDP port to be used other than the default of 26000.
-noipx
Disables support for IPX.
-ipxport <port#>
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!
-listen [n]
Starts Quake ready to be a non-dedicated server for up to <n>
players. If you do not specify a number <n> after -listen it will
default to 8. The maximum allowed value is 16.
-dedicated [n]
Starts Quake ready to be a dedicated server for up to <n> players.
If you do not specify a number <n> after -listen it will default to 8.
The maximum allowed value is 16. A dedicated Quake server stays in
text mode. This is the Quake console with most commands still
available; those that make no sense (like vid_mode) are ommitted.
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".
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