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 any kind of 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