Return to Part 1: Dumpster Diving
Continued from Part 26: Coming to You Live
I have mentioned before how I was unable to get Dave Taylor's original port of Doom to work as it was built as an outdated a.out binary rather than ELF. Since then, I stumbled on an article by Jason Heiss that describes how to load the binfmt_aout kernel module to attain a.out binary support, as well as installing the ld.so-1.9.5-13.i386.rpm and aout-libs-1.4-9.i386.rpm packages from earlier Red Hat Linux releases to provide the necessary libraries.
Sure enough, with those in place the primordial Linux port of Doom works, albeit from an XFree86 server configured to run at only 8 bit colour depth. The other expected limitations apply such as the lack of any music, but the strangest issue I had was with the sound effects. On first launch I was hearing Heretic noises, as Doom was using the sndserver binary from the Linux Heretic source port installed in /usr/local/bin rather than its own. Replacing the sndserver solved the issue.
Another spanner in the works is that the X11 version of Doom is in effect keyboard only. A launch parameter does exist to grab the mouse, but this is bugged; I did get my Perixx PERIMICE-209 WP working with SVGALib by modifying the ~/.doomrc file to have mousdev set to "/dev/psaux" and mousetype set to "PS2". Under X11 the game runs in a 320x200 window with no full screen option, but you can double or triple the pixels using the "-2" and "-3" parameters.
The shareware release of Doom is included inside the linux-doom-1.8.tar.gz archive I used to install the xdoom and sdoom binaries. Explicit support is offered for the registered Doom and Doom II, with Final Doom possible as a set of add-on WADs. Demo playback only works with the shareware, producing version errors everywhere else. A mixed bag to be sure, but even before the Doom source code was opened, hackers were making improvements to the Linux version.
A fan patch included in the udoom-1.1.tar.gz archive adds support for The Ultimate Doom and seems to fix the demos, while musserver.tgz even hacks in MIDI music through a separate musserver binary. I had to fake the /dev/sndstat device file, but it works. These changes would be mainlined after Bernd Kreimeier tidied up the Linux code for public release, but thanks to Dave Taylor's other studio Crack dot Com, I have another example of a.out insanity I can try as well.
Several iterations of the Linux binaries for Abuse are available, but I opted to install the abuse-1.10-5.i386.rpm package as distributed by Red Hat. This provides a few niceties such as custom launch scripts installed into the /usr/games directory, as well as the original Abuse shareware data with the alien ants storyline. The X11 version launches in a 320x200 window also at 8 bit colour depth, but you can stop the cursor leaving the window with the "-grab_pointer" launch parameter.
This is how Abuse was intended to be played, but you can toggle higher resolutions by using the "-size" parameter. This will disable the lighting engine, as well as exposing more of the level to the point of being considered a cheat by the developers. Due to this they also included a pixel doubling mode using the "-2" parameter that preserves the original viewing area and lighting at resolutions of 640x400 or above. I ran with 640x480 so I could hack full screen like I did with Quake.
A few effects will still only flash in the 320x200 area, and I did have some redrawing issues when loading saved games, but these always resolved themselves on the second attempt. The other problem I had was with the sound effects, which only worked when abuse.x11 was launched with root privileges. Speaking of needing root, abuse.svga which uses SVGALib starts fine but then stalls at the cursor; I even tried using an old Mouse Systems serial mouse with it but no dice.
If this sounds insecure, it is because it is. In fact, known privilege escalation exploits exist due to how the SVGALib version of Abuse executes its undrv and sndrv binaries. In some ways we should be grateful for such sloppiness, as it is how we got the SVGALib version of Quake. Dave Taylor only ported the game to X11, but thanks to the Quake source code being stolen from the Crack dot Com server, coder Greg Alexander was able to finish a port to SVGALib in just twenty four hours.
Alexander even had the chutzpah to submit the patches to John Carmack, who graciously accepted them without the threat of legal action. Crack dot Com would show the same community spirit by opening up the Abuse source code and releasing most of the Abuse shareware assets into the public domain. This allowed for the creation of enhanced source ports to Linux such as Abuse-SDL, as well as the fRaBs level set using the shareware assets. If only all games could be as lucky.
Carrying on in Part 28: Losing My Marbles
Return to Part 1: Dumpster Diving