Building a Retro Linux Gaming Computer
Part 5: Quaking in My Boots

By Hamish Paul Wilson
First published on 2021-03-29

Continued from Part 4: Installing Red Hat Linux 7.3

Return to Index

Dave Taylor can be credited with kickstarting the commercial Linux gaming industry with his ports of the games Doom and Abuse. Before leaving id Software he also graced us with a Linux port of Quake, which while unofficial and unsupported was later taken by Macmillan Digital Publishing to form the basis of their retail Quake: The Offering package. This included not only Quake but also its two mission packs, Scourge of Armagon and Dissolution of Eternity.

To install Quake: The Offering on Red Hat Linux 7.3 you need SVGAlib, which I got using the svgalib-1.9.25-1.rh7.rf.i386.rpm package from freshrpms. The setup will still complain about not having libglide2x.so and will skip installing the quake-1.09-glibc-5.i386.rpm package, but you can install it off the disc using rpm and the “–-nodeps” flag to skip the dependency check. Then download and copy libglide2x.so to /usr/lib manually to avoid conflicts with the Glide3 package.

In terms of software rendering you can either launch the squake binary to use SVGAlib from the command line or you can launch the quake.x11 binary to run the game in an X11 window. Full screen is only supported using SVGAlib, and while it can be ran with hardware acceleration through the use of the glquake binary, this will only work on 3dfx Voodoo cards. Everyone else is stuck using the glquake.glx binary within an X11 window.

This is a temperamental port. As well as not allowing for full screen glquake.glx is also a creature of the XFree86 server. This means it will use the system gamma and the mouse cursor will be drawn on top of the window. This being Linux, I was able to create a BASH shell script that blanks the pointer, increases the brightness, and loads the correct libGL.so.1.2 library file. I also included a menu for selecting either Quake or one of its two mission packs as an added bonus.

Mouselook is a separate issue. The most reliable way to make this work I found was dropping down the game console and entering both “+mlook” and “_windowed_mouse 1” each time I launched the program. Playing with SVGAlib must be done with root privileges, but the X11 binaries can be ran from a regular user account if the ownership of the glquake.glx binary is changed to the user and write permission is given for the rogue, hipnotic, and id1 directories.

One ugly but effective hack you can do is to change the resolution of the screen so only the glquake.glx window is showing. XFree86 allows you to cycle through valid modes by holding down Ctrl and Alt and pressing the keypad + and - keys. If one of those modes is 640x480 you can set the game to that resolution, have it grab the mouse, and then cycle until the focus is on the game window. Some of the window border may show, but this can be mitigated with theming.

I had issues with CD audio not looping properly when using the Creative CD-ROM drive, but upon switching to the LG DVD drive it has proven to be reliable. Only the original Quake soundtrack is included on the Linux CD without the music for the mission packs. I also noticed that the game would on occasion either cut off or drop sound effects. I saw some graphical glitches with water and the edges of certain polygons when using the OpenGL renderer as well.

There is something charming about logging into a virtual terminal and launching Quake from the command line, and my Pentium III 500 Katmai is more than capable of delivering a smooth playable experience in software at 320x200. In fact, Linux actually outperforms Windows 98 with an average of 96.6 FPS against 88.0 FPS across all three timedemos. Windows does take the lead at 640x480, with Linux getting 30.4 fps to 38.5 fps on Windows, but neither ran fluid.

With OpenGL things get more complicated. Windows leads full screen at 640x480 with 16 bit colour averaging 81.5 FPS, but when ran windowed this drops to only 62.4 FPS. Linux averaged 67.1 FPS when using the glquake.glx binary, but given the difficulties in comparing the numbers, I think it would be best to call it a draw. A silly contest perhaps, as neither the original Windows or Linux binaries have aged that well.

It would be nice to come back to Quake at some point if I ever get my hands on a 3dfx graphics card just to see SVGAlib running in its full glory. That said, now that I can run vkQuake and average 635 FPS, it does make it easier to appreciate the clunkiness of the original Linux port, or even the chunkiness of the software renderer. This would not be the end of the road for id Software and Linux of course, or even for Macmillan Digital Publishing.

Carrying on in Part 6: A Lone Marine Battled

Avatar

Hamish Paul Wilson is a free software developer, game critic, amateur writer, cattle rancher, shepherd, and beekeeper living in rural Alberta, Canada. He is an advocate of both DRM free native Linux gaming and the free software movement alongside his other causes, and further information can be found at his icculus.org homepage where he lists everything he is currently involved in.

http://www.icculus.org/~hamish

Comments

You can use your Fediverse (including Mastodon, among many others) account to reply to this post. You can also follow my Mastodon to be notified when new parts of this series are released.

Further reading and resources:

The Linux Game Tome entry for Quake is archived here:

http://happypenguin.org/show?Quake&showall=1#comments

The Linux Quake HOWTO by Bob Zimbinski can be found here:

https://www.linuxdoc.org/HOWTO/Quake-HOWTO.html

An article on Quake by Bob Zimbinski for Linux Journal can be found here:

https://www.linuxjournal.com/article/3180

An article on Quake by Jeff Mrochuk for Linux.com is archived here:

http://linux.omnipotent.net/article.php?article_id=11261&page=-1

Anybody wanting to try my shell script can download the following:

http://icculus.org/~hamish/dianoga/quake-glx-launch.sh

Those needing the libglide2x.so library can use this link:

http://icculus.org/~hamish/dianoga/libglide2x.so

And my raw Quake timedemo data can be found here:

http://icculus.org/~hamish/dianoga/quake-timedemos.txt

Addendum:

If you are using Sawfish as your window manager with GNOME I found that choosing either the "simple" or "mono" themes from the Appearance settings and changing the colour of active frames to be black worked well for faking full screen.


Licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)