Building a Retro Linux Gaming Computer
Part 39: Beyond Heretic

By Hamish Paul Wilson
First published on 2024-03-04

Continued from Part 38: The Stagnant Demesne

Return to Index

I stated before that neither of the contemporary HeXen ports, Linux Hexen and its fork HHexen, supported MIDI music playback through the /dev/sequencer device. This still remains the case, but hiding on the venerable SunSITE network I found the linux-hexen-0.99last.tar.bz2 archive, the only online trace of another early HeXen source port released in December 1999 by Russian programmer Stanislav Nesterov, as opposed to the aforementioned source ports done by Karl Robillard and Dan Olson.

Nesterov had adapted the musserver and sndserver code from Andre Werthmann's Linux Heretic to be usable with HeXen, and it was exactly what I was looking for. It supports running the game with X11, SVGAlib, as well as GGI binaries, and even allows for playing the music off the CD-ROM if you prefer. It seemed my desire to continue the Serpent Riders Trilogy from Linux while still utilizing my Sound Blaster 16 had been fulfilled; that is, until I got stumped by the return of a nasty bug.

First noticeable in sooth when you reach the bell tower on the first map, a few specific sound effects can break in such a way as to interfere with the other sound effects on the level. After a four day troubleshoot I determined this was due to a bad interaction with the sound sequence code, in particular the "StoneMove", "MetalMove", "LavaMove", and "WaterMove" sounds that are all set to "playrepeat" in the sndseq.lmp script included as part of the HeXen WAD file.

The solution I settled on was zeroing the values for those effects in the sound.c source files. This stopped these sounds from playing at all, but as they are mere grinding and gurgling noises which go for the most part unnoticed, I did not find this to be too much of a sacrifice. Even then a few other events still spam the sound server to the point of disrupting other sound effects, such as with one fireball trap in the Castle of Grief, but the "playrepeat" sounds were the worst offenders.

In sorting this issue I found out that SDL Hexen, a further fork of Linux Hexen from February 2000, also suffered from the same problem, but a build of HHexen from June 2000 did not. At this point, and given that I had already made a number of tweaks to Nesterov's build files in order to achieve my desired behaviour, I decided that I had changed the code enough under the hood to now qualify as my own fork. To that end, I am pleased to introduce VoxWare HeXen to the world.

Also included is a patch file I discovered that allows you to use the xdelta utility to update the HEXEN.WAD file off the CD-ROM to the required 1.1 release. There is no external configuration outside of launch flags, but you can still remap keys by editing the ~/.hexen/hexen.cfg file. It does not use standard Linux keycodes, but by swapping with strafe I managed to reassign jump to be on the Alt key. All seemed well, but little did I know that the level scripting in HeXen would be so janky.

The doors to the Heresiarch's Seminary refused to open when I first reached the hub, forcing me to bypass them by using the Dark Servant artifact to summon a Maulotaur I could hop on from a pillar to fluke my way inside. Then, when I reached the final area of the Gibbet level in the Castle of Grief hub, the Chaos Serpents refused to spawn in after I killed all the Afrits. The event scripting for that room is infamous for breaking, but it is usually done by killing the Chaos Serpents too fast, not the Afrits.

I ended up just loading up my save file from the end of the Seven Portals so I could also unlock all of the secret levels on my second go around, and this time the doors to the Heresiarch's Seminary opened without a hitch and the scripting at the end of the Gibbet worked as intended. Apart from a few glitches with some of the moving sectors and a few of the monsters vanishing everything else was smooth sailing; that is, until I started playing the Deathkings of the Dark Citadel expansion pack.

The Sump and Abattoir levels are impossible to complete due to certain Stalker enemies causing the game to segmentation fault. Unfortunately the worst room for this held the Flame Mask I needed to unlock the final Planet for the first hub, so I had to try some other ports. SDL Hexen had the same problem, while Chocolate Hexen and Crispy Hexen complained that my save files were corrupt, but the final release of HHexen did load my save files and allowed me to resolve those two maps.

Overall I enjoyed HeXen, with it sharing a lot of technical and design similarities with my all time favourite game Blood, but the elaborate puzzle hubs and downright mean enemies do wear you down after a while. This is not helped by the expansion pack doubling down by spawning even more enemies into already cleared maps; repopulating levels with Slaughtaurs and Stalkers is an affront to good taste no matter how patient you are. I think I need to blow off a little steam.

Carrying on in Part 40: The Cyborg Project

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:

VoxWare HeXen binaries and source code can be downloaded here:

https://icculus.org/~hamish/dianoga/voxware-hexen.tar

Stanislav Nesterov's original HeXen source port can be downloaded here:

https://www.ibiblio.org/pub/Linux/games/linux-hexen-0.99last.tar.bz2

The Linux Software Map entry can be read here:

https://www.ibiblio.org/pub/Linux/games/linux-hexen-0.99.lsm

The original HHexen website is archived here:

http://www.raven-games.com/hhexen

Binaries and source code for the final release of HHexen can be grabbed here:

https://hhexen.sourceforge.net/hhexen.html#s2

SDL Hexen can be downloaded from here:

https://www.libsdl.org/projects/hexen

And an analysis of the SDL Hexen source code can be read here:

https://www.identicalsoftware.com/ogs/2000/hexen.html


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