The (unofficial) Quake II 3dfx HOWTO |
©1998, Carlo Wood |
The latest version of this document can be obtained from http://www.xs4all.nl/~carlo17/3dfx/
|
|
Voodoo 2 |
(for Voodoo Graphics, correct the GAMMA environment variables and use a different Glide*rpm). |
|
|
RedHat 5.x |
(At least, you need `rpm' or otherwise be able to install rpms, including their install scripts). |
|
|
Optional the binary `su0' |
(Which you can get here) |
|
|
Reading through the quake2 initialization script and editting it, using common sense. |
(the script assumes you have Voodoo 2, a PS/2 mouse and installed quake2 in /opt/games/quake2). |
Start with installing the 3dfx.o kernel module by installing Device3Dfx-2.3-5.src.rpm.
Then have the following rpms installed, either the libc5 versions:
Glide_V2-2.53-1.i386.rpm and quake2-3.19a-2.i386.rpm or quake2-3.20beta-5.i386.rpm
*or* the glibc versions:
Glide_V2-2.53-1.i386.glibc.rpm and quake2-3.19a-glibc-2.i386.rpm or quake2-3.20beta-glibc-5.i386.rpm
Note that the quake2-*.i386.rpm's install in /usr/local/games/quake2, you might want to add a symbolic link _before_ installing the rpms.
After installing the quake2*rpm change directory to /usr/local/games/quake2 and type:
tar cf - lib*GL* | (cd /usr/lib; tar xf -) chmod 755 quake2
The latter is needed because otherwise something goes wrong with the loading of the needed shared libraries. When an executable is suid root, all LD_* environment variables are ignored. You don't need it to be suid anyway because we'll use /dev/3dfx. Of course, the software renderer won't work anymore now, unless you run it as root. The tar will put the Mesa lib in /usr/lib, it needs to be there because it won't load otherwise. Don't worry about using Mesa-3.0, because we won't use the Mesa lib for anything else but prohibiting unresolved variables anyway: We use the 3DFX OpenGL Miniport.
If you use quake2-3.19a-2.i386.rpm then you need a symbolic link from /usr/lib/libMesaGL.so.2 to lib3dfxgl.so. For instance, if you have installed quake2 in /usr/bulk/games/quake2/ then do:
cd /usr/lib
rm libMesaGL.so.2
ln -s ../bulk/games/quake2/lib3dfxgl.so libMesaGL.so.2
Don't do this if you don't use quake2-3.19a-2.i386.rpm (but one of the other three mentioned quake2*rpm's).
Quake2 has problems to connect to a game server with a different mod. There is a work around for this however: In order to connect to a game server, you need to specify the mod of that server on the commandline.
For instance, if you want to connect to a lithium server, then use:
q2 +set game lithium +connect <quake2.server.addr>
There is a bug in quake that makes sound not work on some PCI machines (maybe others?) and the way sound was changed in the newer kernels. If you hear a terrible noise when starting quake then try out Alan Cox's patch-2.1.131-ac4.gz. You might also want to uncomment the "SMP = 1" in /usr/src/linux/Makefile, it might be related. (Note: It is known that sound is broken in at least 2.1.126, and not in 2.1.115. Alan's patch works for me however, I am running 2.1.131.ac4 as I type (and Quake + sound works ;)).
Make sure that:
If you run a 2.1 kernel and you have a Pentium Pro or Pentium II system, and you don't already see a /proc/mtrr, then recompile your kernel to support it (answer Yes to `Prompt for incomplete drivers' and then Yes to CONFIG_MTRR). The Dev3Dfx contains code to set the MTRR on a system with a 2.0 kernel too, but you won't be able to check if it worked (with `cat /proc/mtrr', after loading the 3dfx.o module)
You have /dev/3dfx installed and functional.
You do not have a chipset defined in /etc/vga/libvga.config; use autodetection if possible: it is known that when specifying the wrong chipset, /dev/3dfx won't be used. (Contribution by jszabo@eden.rutgers.edu).
./quake2 is not suid root (chmod 755 ./quake2).
You do not have a line "set vid_ref ..." in ANY of your *.cfg files except baseq2/config.cfg.
You do not have a line "set vid_fullscreen ..." in ANY *.cfg file except baseq2/config.cfg.
You do have the following line in baseq2/autoexec.cfg:
set _windowed_mouse 0
You might want to add the following lines too, in order to increase the frames per second:
set gl_shadows 0
set gl_dynamic 0
set gl_cull 1
set gl_round_down 1
Setting the GAMMA environment variables doesn't work with lib3dfxgl.so, add a line `set vid_gamma "0.400000"' to baseq2/config.cfg for more brightness instead. Note: Later I found this to be vica versa(!?!). Setting the vid_gamma has no effect, while the GAMMA environment variables used in the q2 script do work.
If you want to run in 800x600 mode, it might work to set in baseq2/config.cfg:
set gl_mode 4
Or use that on the command line once (using +set ...). I advice to first try everything with `set gl_mode 3' however.
If you play on a lithium server, then make sure that directory exists next to baseq2 and make a symbolic link from config.cfg to ../baseq2/config.cfg. I advise to only have a different autoexec.cfg per game directory, if needed.
In order to get your mouse working, you need to edit /etc/vga/libvga.config and set the correct 'mouse ...' line. When starting from the console, you need to kill gpm. The script does that for you, but only if you have the binary su0.
When you upgrade your kernel: recompile and re-install Dev3Dfx, otherwise quake won't start anymore ;)