How to play Registered Doom, Doom II and Ultimate Doom on SGI Systems.

                            Last Change: 01/July/96

                     Copyright 1995, 1996, by Ian Mapleson.


  Dale Southard (
    - for all the info about Ultimate Doom and for supplying Paul's code.

  Paul Falstad (
    - for writing the Ultimate Doom code in the first place.

Doom has been ported to many platforms, including SGI machines. Assuming one has
already bought Registered Doom, Doom II or Ultimate Doom, it is possible to play
these full versions on an SGI by utilising the SGI Shareware Doom executables.

The original SGI Doom Shareware executables were based upon v1.6 of PC Doom.
Meanwhile, the main version of PC Doom being sold as v1.666. Since then, this
difference seems to have continued in the version numbers.

At present, SGI Doom Shareware v1.8 is available and is on the Doom ftp sites
in the directory:

   <insert site/path here to Doom directory>/idstuff/doom/sgi

(eg. pup/doom/idstuff/doom/sgi on

and the file names are:


Here's how the process works for Registered Doom:

  1. Download and untar the SGI Shareware Doom archive.
  2. Install your full version of Doom on a PC.
  3. Move the large WAD file from the PC to the SGI and put it in the
     SGI Doom directory (replacing or removing the shareware WAD file).

Simple as that!

For v1.666, this was ok, even though the executables were slightly different.

However, for v1.8 (most PC Doomers are now using v1.666 or v1.9), the
differences are greater and one must upgrade the PC Doom WAD file to v1.8 or
higher before moving the WAD file to the SGI machine.

To play Doom II, the same process applies. If the Doom II WAD file is in the
SGI Doom directory (rename any other main WAD files to avoid confusion) then
the SGI executable will pick it up and allow you to play Doom II.

However, the Doom II WAD is too different in v1.666 to be run with the SGI v1.8
executables (an error _always_ occurs on level 2, crashing the game). You can
play some parts of it (all of level 1 is fine) but others will crash. Also, in
general, if you don't bring up the menu quickly after initiating the executable
and start a game then the program will crash because the demo mode .lmp file is
from a different version.

Hence, to play worry-free Doom II on an SGI, one must upgrade the PC Doom II
WAD file to v1.8 or higher. This will fix the problem. The patch file is
available from the DHS at the DoomGate archive. The URLs are:

The zip file is 381K. As far as I know, there are no plans to release SGI
Shareware Doom v1.9.

Ultimate Doom

Playing Ultimate Doom on an SGI machine is a little more complex. The reason is
that the Shareware SGI Doom executable doesn't know about Episode 4. Here's
what Dale told me:

     "OK, here's what I now know about Ultimate Doom on the SGI:

     I purchased the CD version of Ultimate Doom yesterday.  It mounts directly
     to the desktop under IRIX 5.3 (meaning you can just click on the cd icon
     to access the files -- I used the command line anyway but for the unix-
     impared it might be important).

     Once mounted, there is a directory on the cd called doomcd that contains
     the uncompressed ultimate doom WAD (doom.wad).  I copied this into the
     same directory as the sgixdoom 1.8 executable.

     Now when I start sgixdoom, I have access to the first three adventures.
     If a game is not started immeadiately, sgixdoom crashes when the demos
     start (I believe this is true of the registered doom wad as well when
     running on the SGI). At any rate, all 3 adventures work fine.


        - The Ultimate Doom CD is available at any computer store (no waiting).

	- Since the WAD is uncompressed, it can be installed directly on the
          SGI without having to first install it on a PeeCee and
          modem/serial/net it over.


	- It crashes if it gets to the demos or if the help key (F1, I think)
          is pressed."

I then asked him about accessing the new Episode 4. He said:

     "I successfully tried this. I used the following program to rearrange the
     doom.wad. I then replaced the regular wad with the rearranged version.
     Starting doom and selecting the first episode drops you into the (new)
     fourth episode (and it is really hard)."

I dumped the code below (mouse paste :) to a file called ultimatedmconvert.c
and then compiled it with:

  cc ultimatedmconvert.c -o ultimatedmconvert

It worked just fine - the executable created is only about 14K. Here is the
source code:

-- cut here --- Cut Here --- CUT HERE --- cut here --- Cut Here --- CUT HERE --

  From: (Paul Falstad)
  Subj: Re: SGIXDOOM & Ultimate Doom
  Date: Sun, 16 Jul 1995 00:32:48 GMT

  If all you want is a gross hack to play Ultimate Doom with 
  SGIXDOOM or Linux doom, just copy the Ultimate doom.wad to 
  doomswap.wad, and compile and run this program.  This will 
  exchange episodes 1 and 4 in doomswap.wad.  Then rename 
  doomswap.wad to doom.wad. 

#include <stdio.h>
#include <stdlib.h>

FILE *in;

typedef unsigned long offt;
typedef unsigned int numt;

offt getoff(offt offset) {
    unsigned char buf[4];
    offt val;
    fseek(in, offset, SEEK_SET);
    fread(buf, 1, 4, in);
    val = buf[3];
    val = (val<<8)|buf[2];
    val = (val<<8)|buf[1];
    val = (val<<8)|buf[0];
    return val;

numt getnum(offt offset)
    unsigned char buf[2];
    numt val;
    fseek(in, offset, SEEK_SET);
    fread(buf, 1, 2, in);
    val = buf[1];
    val = (val<<8)|buf[0];
    return val;

getname(char *ptr, offt offset)
    fseek(in, offset, SEEK_SET);
    fread(ptr, 1, 8, in);
    ptr[8] = '\0';
    if (ptr[0] == 'E' && ptr[1] == '4' && ptr[2] == 'M') {
	ptr[1] = '1';
	fseek(in, offset, SEEK_SET);
	fwrite(ptr, 1, 8, in);
    } else if (ptr[0] == 'E' && ptr[1] == '1' && ptr[2] == 'M') {
	ptr[1] = '4';
	fseek(in, offset, SEEK_SET);
	fwrite(ptr, 1, 8, in);

main(int ac, char **av)
    int dirlen, dirptr;
    char resname[9];
    char *bf;
    char *name = av[1];
    char *epname = av[2];

    in = fopen("doomswap.wad", "r+");
    dirlen = getoff(4);
    dirptr = getoff(8);
    while (dirlen--) {
	offt start = getoff(dirptr);
	offt len = getoff(dirptr+4);
	getname(resname, dirptr+8);
	dirptr += 16;

-- cut here --- Cut Here --- CUT HERE --- cut here --- Cut Here --- CUT HERE --


You can use add-on levels when playing Registered Doom, etc., on your SGI,
though you will not be able to properly use those that require the use of PC
executables (such as Aliens TC). Even so, this still gives you access to over a
thousand add-on levels! 8)

I've been trying out alot of the Doom II ones recently on my office machine and
the levels work just fine (see my sig for machine spec).

There is an SGI WAD editor in development; more information about this when the
editor is ready (it's a port of a very famous, and the best, editor which
already exists for PC users).

Dale tried using Ultimate Doom add-on levels without success. I haven't tried it
myself but I will at some point. I'll update this file if I achieve anything

I hope this file has been of some use to you all. Now get Dooming! :)


The Doom Help Service (DHS):

SGI Network Admin, University of Central Lancashire, Preston, England, PR1 2HE.
Tel: (+44) 01772 893297, Fax: (+44) 01772 892913 | Doom:
Office machine: SGI Indy R4400-200Mhz/1MB cache | Misc:
64MB RAM/2GB SCSI disk/24bit 17" 1280x1024/CDROM/DAT/IndyCam Digital Camera