Wednesday, February 17, 2021

Adventures in Old-School Gaming on Linux Mint 20.1

Linux Mint 20.1 was released shortly after my last post, and now I guess that saves me the trouble of putting a "Part 2" in the title of this addendum to that earlier post. Nothing below actually has anything to do with the upgrade to Linux Mint, though; everything done here should work on Linux Mint 20 and everything described in the earlier post should work on Linux Mint 20.1. If the title of this post misleads the hypothetical reader into thinking otherwise, then the reader must not be reading this opening paragraph and probably deserves to be confused.

Anyway, I installed some more extremely ancient video games on my Linux computer with varying degrees of ease. I'm documenting this mostly for my own sake — but if it helps anyone else, that's super neat.

Game Data Packager

I was able to install a few more games with this nice little tool whose general usage is documented a bit more in my previous post.

Some LucasArts Adventure Games

I happen to have copies of Indiana Jones and the Fate of Atlantis, Sam & Max Hit the Road, Full Throttle, and The Dig on the original CDs. Linux Mint makes mounting CDs and ISOs pretty easy, so without even really knowing how it works, I was able to mount each CD and run game-data-packager for each.

game-data-packager -d ~/deb/ -i atlantis /media/michael/ATLANTIS/  # with Indiana Jones mounted
game-data-packager -d ~/deb/ -i sam-and-max /media/michael/disk  # with Sam & Max mounted
game-data-packager -d ~/deb/ -i dig /media/michael/DIG1/  # with The Dig mounted

I tried the same with Full Throttle, but for some reason it didn't recognize the game data on my disc. Maybe the data is corrupted due to an unfortunate scratch on the disc; maybe there are different versions of the game and game-data-packager just doesn't recognize mine. In any case, I do have Full Throttle Remastered on Steam which is natively Linux-compatible so I guess it's not a big deal.

For Atlantis, Sam & Max, and The Dig — which all run in ScummVM — the use of game-data-packager saved me the trouble of manually locating and copying the necessary game data files, and also created menu shortcuts. I think it also would have installed ScummVM automatically, if I hadn't already installed it for some free games acquired via Linux Mint's package manager:

sudo apt install beneath-a-steel-sky drascula flight-of-the-amazon-queen lure-of-the-temptress

Some Apogee Games

I've had The Apogee Throwback Pack in my Steam account for a while, but had never actually installed it before this week. The pack comes with Blake Stone: Aliens of Gold, Blake Stone: Planet Strike, Rise of the Triad, and Extreme Rise of the Triad. The game-data-packager tool supports all of them.

Rise of the Triad

With the pack installed via Steam, I executed the following:

mkdir -p ~/deb
game-data-packager -d ~/deb/ -i rott

This automatically installed a Rise of the Triad source port for me. However, the correct usage of it wasn't immediately obvious. It created a single menu shortcut called "Rise of the Triad" which simply runs rott; meanwhile, the newly installed /usr/games/rott is a link to /etc/alternatives/rott which by default is a link to /usr/games/rott-shareware which runs the game's shareware episode, even though game-data-packager did find the full game in my Steam directory. A separate executable, /usr/games/rott-commercial, runs the full game. Meanwhile, /etc/alternatives/rott can be updated to point to rott-commercial instead of rott-shareware by running update-alternatives --config rott and selecting the appropriate option. Confused yet? Well, I guess it's really not that confusing, but I'm a little disappointed that game-data-packager effectively provided only a shareware menu shortcut out of the box when I was trying to install the full game.

I didn't bother with update-alternatives; I just created my own menu shortcut (in ~/.local/share/applications/ to override the existing one in /usr/share/applications) which explicitly runs rott-commercial instead of rott. (Later on, I also went back and created another shortcut which explicitly runs rott-shareware, which seems worth having because the shareware episode is actually separate from any of the episodes in the commercial release.)

Running Extreme Rise of the Triad was a bit trickier. At first, I had no idea how to do it. Documentation is sparse, even on the source port's official site. Then I opened up Synaptic Package Manager and checked the description of the rott-extreme-data package installed by game-data-packager; it indicates Extreme Rise of the Triad is played by running rott-commercial -filertl extreme.rtl. However, even this isn't quite right. That file's name is actually uppercase, and I had to provide the full path, so the correct command to run Extreme Rise of the Triad is rott-commercial -filertl /usr/share/games/rott/EXTREME.RTL. I made a menu shortcut for that too, so now I don't have to think about it anymore.

Blake Stone

Next up are the Blake Stone games. Again, with The Apogee Throwback Pack installed via Steam, I used game-data-packager to package up the game files:

mkdir -p ~/deb
game-data-packager -d ~/deb/ -i blakestone

Unfortunately... well, this didn't do much for me. It didn't automatically install any Blake Stone source port, or anything else with which to run the game. It just packaged up the game data files and installed them to /usr/share/games/blakestone/. So I had to install a Blake Stone source port called BStone myself. The installation was done approximately as recommended in the README on the project's GitHub page, the only differences being the install location and the fact that I had to install cmake on the spot:

mkdir -p ~/git
cd ~/git
git clone https://github.com/bibendovsky/bstone.git
cd bstone/build
sudo apt install cmake
cmake ../src -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/git/bstone/build/install
make install

I don't know why the documentation recommended installing to a subdirectory of the build folder. I shouldn't have listened. To make things a bit less horrible, though, I just had to create a link to the bstone executable in a location that appears in my $PATH:

sudo ln -s ~/git/bstone/build/install/bstone /usr/local/games/

Now I can just run bstone. But the source port doesn't know to look for data in /usr/share/games/blakestone/, where game-data-packager installed it, so I actually have to run bstone --data_dir /usr/share/games/blakestone to make it work. Meanwhile, running bstone --aog --data_dir /usr/share/games/blakestone makes it run Aliens of Gold without prompting to select a game, and bstone --ps --data_dir /usr/share/games/blakestone does the same for Planet Strike.

Aleph One

Marathon Trilogy

I wanted to play Marathon again, so I set out to install Aleph One. For the same reasons mentioned a while ago, I was hesitant to rely on the probably outdated tarball made available on the official Aleph One site. So, as I've done before, I checked out the latest source code from GitHub and compiled it. This required installing some dependencies as documented in the README on the project's GitHub page. I had neglected to document the exact process before, so now here it is:

mkdir -p git
cd git
git clone https://github.com/Aleph-One-Marathon/alephone.git
cd alephone
sudo apt install autoconf automake
sudo apt install libboost-all-dev  # Boost
sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-net-dev libsdl2-ttf-dev libsdl2-mixer-dev  # SDL2-related
sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev  # FFmpeg-related
sudo apt install libspeexdsp-dev libzzip-dev libpng-dev libcurl4-gnutls-dev  # Other
./autogen.sh
make
sudo make install

With that done, I downloaded the game files from the Aleph One site, and created a menu shortcut for each of the three Marathon games. Each shortcut just runs alephone <dir>, where <dir> is the location of that game's files.

After doing this, I noticed that game-data-packager does support the Marathon trilogy, but I'm not sure what it would have done for me here except perhaps installing the game files to some system-wide location instead of the ~/.local/share/games/ folder where I dumped them. It wouldn't have installed Aleph One for me, because it's not in my distro's package repository.