Building a Retro Linux Gaming Computer
Part 16: We Are All Doomed

By Hamish Paul Wilson
First published on 2022-03-14

Continued from Part 15: Square Cubed

Return to Index

The most appealing aspect of my QDI Advance 5/133 motherboard is its inclusion of AGP, PCI, and ISA expansion slots. This is what allows me to pair a GIGABYTE ATI Rage 128 Pro Ultra AGP video card sold in 2001 with a Creative Labs Sound Blaster 16 WavEffects ISA sound card made in 1997. By having both dedicated MIDI and 3D acceleration hardware I can dip my toes into two different eras of gaming, straddling the divide between Doom and Quake III Arena.

That said I have never been able to get Dave Taylor's original Linux port of Doom to run, as it was built with the deprecated a.out binary format rather than ELF. It would also lack music playback due to Linux not being supported by the proprietary DMX library used by Doom, although it was for this reason that the Linux source code was chosen for release in late 1997 by id Software to avoid infringing copyright with the DMX code bundled on MS-DOS.

Because of this, Linux users did not have long to wait for a better alternative to arrive, which by the turn of century proved to be LxDoom. LxDoom is derived from the influential Boom source port by TeamTNT, but it still functions very similar to the original Doom port for Linux. Installation is trivial using the lxdoom-1.4.4-0.i386.rpm and lxmusserv-0.94.2-0.i386.rpm packages available for download on SourceForge.

From there you can launch either the lsdoom or lxdoom binaries located in the /usr/games directory, the first functioning through SVGAlib on a root console and the second displaying in an X11 window. The music was not working for me at first, but I resolved this by running the Red Hat sndconfig utility which created the proper MIDI sequencer device. This allowed the playmidi and KMid players to both have working playback as well.

Raven Software also released the source code to their Doom clone Heretic in 1999 with a source port to Linux coming soon after. Red Hat themselves archive RPM packages for Linux Heretic on their website, with the linux-heretic-1.03-2.i386.rpm, linux-heretic-vga-1.03-2.i386.rpm, and linux-heretic-fx11-1.03-2.i386.rpm packages all needing to be installed to have both vgaheretic and xaheretic binaries provided for SVGAlib and X11 same as with LxDoom.

As for the actual MIDI tracks produced, well, they have personality at least. After some reading I discovered that I am using a later budget variant of the Sound Blaster 16 which uses CQM Synthesis to emulate the functionality once provided by a dedicated Yamaha OPL-3 chip. Windows uses the Creative WaveSynth software synthesizer to improve MIDI playback, but on Linux I am left with a rough if workable FM synthesis outside of using something like TiMidity.

Now curious, I tried swapping the Sound Blaster 16 for a MediaVision Pro AudioSpectrum 16 SCSI with an actual YMF262-M OPL-3 chip installed. This required a little tinkering to find the right I/O, IRQ, and DMA settings as it is not an ISA PnP card. While with Windows 98 I could hear a subtle difference, on Linux it sounded much the same. Even more unusual is the fact that playing an identical MIDI file from playmidi, KMid, and lxmusserv does produce different results.

Regardless, launching either LxDoom or Linux Heretic with SVGAlib from the command line is still an authentic experience you would be hard pressed to find outside of playing the games on MS-DOS. Because LxDoom is limit removing with Boom support you also have access to a great deal of custom level sets and total conversions alongside Doom, Doom II, and Final Doom however, including John Romero's SIGIL when loaded with the compatibility WAD file.

Sadly neither Linux Hexen or the later forked HHexen source ports support MIDI music playback through /dev/sequencer like LxDoom and Linux Heretic do, making HeXen lack for me the main appeal of playing the game on vintage hardware as opposed to just using a modern source port. Strife meanwhile did not see a reverse engineered Linux version emerge until almost a decade after these initial Doom engine source ports were first released.

All of the community ports have come a long way since then of course. LxDoom would later form the basis of PrBoom, which was the first Doom source port I spent a great deal of time with as it was packaged alongside Freedoom on Fedora. After covering six first person shooters in a row though, and another four before that, the time has come to broaden our horizons again, and welcome you all into the llama lair.

Carrying on in Part 17: The Llama Master

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:

All of the RPM packages used can be downloaded here:

https://icculus.org/~hamish/dianoga/LxDoom-LinuxHeretic-RPM-Packages.tar

The LxDoom webpage on Linux Games is archived here:

http://lxdoom.linuxgames.com

The Linux Game Tome entry for LxDoom is archived here:

http://www.happypenguin.org/show?lxdoom

The Linux Heretic webpage on Linux Games is archived here:

http://heretic.linuxgames.com

The Linux Game Tome entry for Heretic is archived here:

http://gametome.linuxquake.com:80/show?Heretic

A Slashdot post on the original release of Linux Heretic can be read here:

https://games.slashdot.org/story/99/01/20/0138249/heretic-ported-to-linux

The official Red Hat Linux 7.3 documentation for setting up sound cards can be read here:

http://archive.download.redhat.com/pub/redhat/linux/7.3/en/doc/RH-DOCS/rhl-gsg-en-7.3/s1-fun-sndconfig.html

The entry on sound cards from the The Linux Gamers' HOWTO can be read here:

https://linux.die.net/HOWTO/Linux-Gamers-HOWTO/x696.html

An article on early Linux sound card support by Jeff Tranter for Linux Journal can be read here:

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

And here is how I configured the MediaVision Pro AudioSpectrum 16 SCSI on Linux:

Select Pro Audio Spectrum/Studio 16, Logitech SoundMan 16 in Red Hat sndconfig with the following settings:
SI/0: 0x388 IRQ: 7 DMA: 3

Once configured also select AdLib in sndconfig for OPL-3 playback.







Addendum:

While I was able to get FM synthesis working on the MediaVision Pro AudioSpectrum 16 SCSI, digital audio playback had mixed results. Reading up on the issue it appears that the main problem is the lack of a -5V rail on my ATX power supply as opposed to an AT one, something that can be mitigated with something like the Voltage Blaster:

https://www.philscomputerlab.com/voltage-blaster--5v.html

I also had the persistent popping sound consistent with having an incongruous clock chip on the motherboard, which could be addressed by using the sound card's internal clock instead. Considering the card was left in a barn loft for close to twenty years it is remarkable how well preserved it is other than a bit of oxidation on or near the mounting bracket. I have gone back to using the SoundBlaster 16 as my sound card in Dianoga but the PAS16 could be a good fit for an older AT computer.

I was later able to get the original Linux port of Doom to launch. Please refer to Part 27 to read about that.


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