Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
We do often include affiliate links to earn us some pennies. See more here.

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

By - | Views: 18,539

Return to Part 1: Dumpster Diving

Continued from Part 15: Square Cubed

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

Return to Part 1: Dumpster Diving

Article taken from GamingOnLinux.com.
16 Likes
About the author -
author picture
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://icculus.org/~hamish
See more from me
The comments on this article are closed.
5 comments

Hamish Mar 14, 2022
All of the RPM packages used can be downloaded here:
https://icculus.org/~hamish/dianoga/LxDoom-LinuxHeretic-RPM-Packages.tar

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

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:
I/0: 0x388      IRQ: 7      DMA: 3

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



Last edited by Hamish on 21 March 2023 at 7:10 am UTC
TheSHEEEP Mar 14, 2022
View PC info
  • Supporter Plus
The more I read about it, the more the early Linux ports seem like Wild West style to me.
"Early" Linux mixed with the hardware mess that was the late 90s / early 2000s.
Hamish Mar 14, 2022
Quoting: GuestGreat read in the series as always, and looking forward to more (as always)!
I should say that things are likely going to slow down a bit from here as spring is on the horizon, my livestock are going to start calving and lambing by the end of the month, and I have set myself up to play something other than a familiar action game I can burn through over a couple days.

More will come, but not every Monday like it has been for the last seven weeks. Thanks for the kind words.
Hamish Mar 15, 2022
As an addendum, while I was able to get FM synthesis working just fine on the MediaVision Pro AudioSpectrum 16 SCSI which was what I needed for the article, 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, 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.
Hamish May 1, 2022
Just as an update on where things stand with the upcoming article, I do have the next game installed and have been playing it on and off since March, but it has proven to be a difficult game to master when juggling other commitments. Now that I am done lambing and calving I hope to be able to put more focus on it, but the arrival of spring in general increases my workload by quite a lot. Progress is being made though.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.