Forum user Akidan recently wrote a post about how to get the old 1990s space-shooter Descent working on PocketC.H.I.P.. The hack involves modifying and recompiling the source code to Descent to better run on PocketC.H.I.P., and I simply had to try it for myself.
At the time of release in 1995, Descent was a really exciting, groundbreaking game. It was one of the early 3D games that dominated computer screens across the country. And even more exciting than the 3D, was that your spacecraft was able to travel in a full six degrees of freedom. This level of freedom just made it easier for me to get disoriented and lost in the twisting tunnel mazes of the game, but I’m sure most people found it to be really enjoyable.
Dust off your SpaceOrb 360 and trackdown your copy of Descent I (or buy a used copy online). Here’s how to get the game running on PocketC.H.I.P..
You’ll need to update the list of packages available to PocketC.H.I.P. and install a few new ones.
sudo apt update && sudo apt install build-essential scons pkg-config libsdl1.2-dev libsdl-mixer1.2-dev libphysfs-dev libfluidsynth-dev
Note: Type the above command in one long line, not two separate lines. Also, expect to enter your password for this command to run and type Y to confirm the installation. The default password is chip.
Changed directories to the /home/chip directory.
Note: You could also type
cd ~ or
Use wget to download the Descent source port.
Decompress the downloaded tar gzip file.
tar xf d1x-rebirth_v0.58.1-src.tar.gz
Note: If you’re connected over SSH, try using tab completion: after you type the d of the archive name d1x-rebirth_v0.58.1-src.tar.gz, press tab.
--- arch/sdl/gr.c.orig 2016-07-03 18:36:10.000000000 +0000
+++ arch/sdl/gr.c 2016-07-03 18:36:43.000000000 +0000
@@ -107,9 +107,9 @@
- con_printf(CON_URGENT,"Cannot set %ix%i. Fallback to 640x480\n",w,h);
+ con_printf(CON_URGENT,"Cannot set %ix%i. Fallback to 480x272\n",w,h);
screen=SDL_SetVideoMode(w, h, GameArg.DbgBpp, sdl_video_flags);
The default minimum resolution for Descent is 640×480, so you’ll need to patch the source code and change it to PocketC.H.I.P.’s 480×272. While you’re at it, set the video mode to SDL.
The easiest way to make these code changes is to apply a patch. First download the code above using wget and then use the patch utility to make the changes to the source code.
Change directories to the one you just decompressed.
Download the patch and save it as pocketchip.patch.
wget -O pocketchip.patch http://pastebin.com/raw/96ceLhVt.
Then apply the patch using the patch utility.
patch -p0 < pocketchip.patch
Note: If you get an error, make sure you were in the /home/chip/d1x-rebirth_v0.58.1-src directory when you ran the patch command.
Compile Descent by typing in the following command and pressing enter.
scons opengl=0 opengles=0
Note: Before testing this project, I was unfamiliar with SCons. Basically, it’s a beefed up make utility that has a whole bunch of extra features.
Unfortunately, even though Descent is shareware, the shareware version of the game crashes as soon the gameplay starts.
If you don’t have a copy of Descent laying around, there are plenty of online retailers selling used copies. Once you have the physical media, copy the files from the CD-ROM’s descent directory to a USB thumb drive or SCP them directly to PocketC.H.I.P..
Create a directory for the game data called .d1x-rebirth. The period before the d is important, so don’t leave it out.
If you’re using SCP, change directories to CDROM directory descent on your laptop, then type the command below. Make sure to replace IP_ADDRESS with whatever IP address your PocketC.H.I.P. has. You can check by typing in
ip addr show wlan0 on PocketC.H.I.P..
scp ./* chip@IP_ADDRESS:~/.d1x-rebirth
If you’re using a thumb drive, copy over the same directory contents to the PocketC.H.I.P. directory ~/d1x-rebirth.
Note: Linux and OS X users have SSH and SCP pre-installed, but Windows users will need to install both programs. Putty is a good, free option worth trying.
Tip: Taking screenshots in Descent is a bit tricky. The game takes over the entire window and will not let you cycle through windows using the CTRL+TAB key combo.
But you can get around this problem. Simply SSH into PocketC.H.I.P. and type in
export DISPLAY=:0 then run the built-in screenshot application by typing
xfce4-screenshooter. This will launch the application you started in an SSH terminal on your PocketC.H.I.P. display and overlay it atop Descent.
I was not able to get multiplayer working for Descent. Unlike modern games, Descent uses IPX networking, which was widely used at the time. That’s no longer the case. You’ll need to modify the Linux kernel to get IPX working, but it is possible.
So, extra credit for anyone who figures out how to get the IPX-based multiplayer working. If you do, definitely let me know!
What were your favorite games growing up? For me it was Warcraft, Marathon, and Dark Forces. Make sure to share yours in the forums, Twitter, or Facebook. And while you’re sharing, don’t forget to include any projects that you’re currently working on.