Begin your Descent into PocketC.H.I.P.

Screenshot - 080216 - 23:57:32

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.

Six degrees of freedom via Wikipedia

Six degrees of freedom via Wikipedia

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..

1. Install the Required Debian Packages

install

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.


2. Download the Code

wget-d1x

Changed directories to the /home/chip directory.
cd

Note: You could also type cd ~ or cd /home/chip.

Use wget to download the Descent source port.
wget http://www.dxx-rebirth.com/download/dxx/d1x-rebirth_v0.58.1-src.tar.gz

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.


3. Patch the Source Code

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.
cd d1x-rebirth_v0.58.1-src

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.


4. Compile Descent

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.


5. Copying the Game Assets

RequiredFiles

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.
mkdir ~/.d1x-rebirth

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.


6. Run Descent

Descent-Gameplay

cd ~/d1x-rebirth_v0.58.1-src
./d1x-rebirth

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.


7. Extra Credit: IPX Networking Setup

Screenshot - 080216 - 23:56:11

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.

About the Author

Posted by

I'm busy writing and editing content at Next Thing Co.

Categories:

PocketC.H.I.P.

Tags:

5 Comments

There’s a package called “ipxtunnel” that tunnels IPX networking over UDP. It’s fairly straightforward to configure, but you’ll still have to configure your router to port-forward the packets appropriately because there’s obviously no netplay server.

You could theoretically tunnel this over something like Hamachi to avoid that issue.

I should point out that I believe you do still have to configure IPX support in the kernel. If we’re lucky, there’s a package containing a module for it, but even if we’re unlucky the kernel sources and configuration for PocketCHIP are available and the resulting module should be easily distributable.

Add a Response