QNX DOOM v1.666 FAQ
*******************

Version 1.00
September 12, 1994

Table of Contents
=================

   1. What is DOOM?
   2. What is QNX?
   3. Where can I get DOOM for QNX?
   4. QNX DOOM Installation
   5. How do I get sound working under QNX?
   6. How do I run Multi-Player mode under QNX?
   7. It doesn't work!  (Machine/OS Requirements, troubleshooting, etc)
        7.1. It gives an X error in X_CreateWindow!
        7.2. The window is too small!
        7.3. Why can't I use the mouse under X?
   8. Can I run DOOM on one machine and display it on another?
   9. Can you play SGI vs QNX?  Console Doom vs. X Doom?
   10. Where does it put the configuration file and saved games?
   11. How do I get the other levels?
   12. How do I register?
   13. I need to ask id Software a question.
   14. What are the cheat codes? the secret doors?
   15. Where is DOOM information on the net?
   16. Are there DOOM utilities for QNX?
   17. About this FAQ


1. What is DOOM?
================

Basically, Doom is a (violent) 3D arcade game where you run around in a
maze and kill things with shotguns and chainsaws. The 3D action is good
enough to make some people nauseous, if the animated gore wasn't enough.
There is a slim plot, if you care about those things. After you get tired
of killing things, you can run it over a network and kill things together
with your friends. After you get tired of that, you can kill your friends.
See the huge faq file that was included in this archive for more details
(dmfaq58.txt).

DOOM was originally written for MSDOS on the PC by id Software. It was
tremendously successful because:

  1) Everybody was amazed you could do that on a PC
  2) A playable portion was available as shareware
  3) It was user-extensible
  4) You could play against other people via network or modem dialup
  5) It was an extremely fun game

SGI loaned David Taylor of id Software an Indy workstation and he ported it
to UNIX and the X Window system.  id Software made this source available to
us (QNX Software Systems), and we ported the X version to QNX, and also
ported the direct console code as well to create both X and console
versions of DOOM for QNX.  Both versions support both TCP/IP and POSIX
message queues across the QNX LAN for multiplayer, networked games.

Thanks to the excellent job David Taylor at id Software did on the SGI
port, we had the X Window version running on QNX 40 minutes after unpacking
the source, and the sound effects working 30 minutes later.  Networking,
console support, mouse support, and other features took another weekend or
two.  :-)    Many thanks to Dave Taylor and the rest of the team at id for
answering the questions we had.

A note:  We (QNX Software Systems Ltd.) did this for fun.  It doesn't
generate revenue.  Please don't bother our QA group with bug reports.  :-)

2. What is QNX?
===============

QNX is a realtime, POSIX-certified, microkernel, network-distributed OS for
x86-based machines.  It has the ability to merge a number of QNX machines
on a network into a single, logical machine and also supports multiple,
fault tolerant LAN links between nodes.  QNX can be scaled down to a small,
stand-alone, ROM-based embedded system, or scaled up to a full X Window,
TCP/IP, NFS, etc. equipped workstation OS, or scaled out to encompass
several hundred nodes on a network acting as a single machine.  QNX sees
significant use in applications such as process control, factory
automation, financial transaction processing, point of sale, medical
instrumentation and data communications.  It now supports DOOM as well. :-)

For technical information, some QNX papers can be ftp'ed from
quics.qnx.com:/pub/papers (198.231.78.1) and ftp.cse.ucsc.edu:/pub/qnx
(128.114.134.19). Some of the papers are:

  qnx-paper.ps.Z  An Architectural Overview of QNX
  qnx-embed.ps.Z  A Microkernel POSIX OS for Realtime Embedded Systems
  qnx-pen.ps.Z    QNX: Microkernel Technology for Open Systems Handheld Computing
  newtech.ps.Z    QNX Microkernel Technology: A Scalable Approach to Realtime
                     Distributed and Embedded Systems
  xhib.ps.Z       Efficient X Server Connections in a Realtime Message-
                     Passing Environment

Additional information can be obtained by sending email to [email protected] or
by contacting QNX Software Systems at 1-613-591-0931.


3. Where can I get DOOM for QNX?
================================

You can get the QNX version of DOOM via anonymous ftp from Quics (the QNX
User's Interactive Conferencing System).  The ftp path is:

  quics.qnx.com:/usr/free/doom/qnxdoom.pax.gz

You can also dial into 1-613-591-0934 to download this file.  The file(s)
will probably appear on other ftp sites as well.  Note that this pax file does
not contain the DOOM v1.666 shareware wad file.  If you don't already have
the DOOM wadfile, you can download it as:

  quics.qnx.com:/usr/free/doom/doom1.wad.gz

While connected to our ftp server, you might also want to get copies of the
following:

   /usr/free/archivers/gzip: The archiver needed to unzip the doom files.
   /updates/beta.audio/Audio: The QNX sound card driver (beta only).
   /updates/qnx42/mqueue.tar.F: A POSIX realtime message queue manager.
                                Needed for network games if you don't have
                                QNX TCP/IP installed.

4. QNX DOOM Installation
========================

Once you have the qnxdoom.pax.gz and doom1.wad.gz files, create a /usr/doom
directory, put the doom files there and execute the commands:

            gzip -d <qnxdoom.pax.gz | pax -rv
            gzip -d doom1.wad.gz

These commands will decompress the files into your /usr/doom directory.
Make sure that the cdoom and musserver files are owned by root, and setuid.
By executing these commands, as root userid, you can make sure of the file
permissions:

chown root /usr/doom/cdoom /usr/doom/musserver
chmod u+s /usr/doom/cdoom /usr/doom/musserver

You probably also want to move the "/usr/doom/doom" shell script into
/usr/local/bin so that you can invoke doom from your user directory without
modifying your path.

Final step: Read the qnxdoom.faq (which you're reading right now).

After unzipping the qnxdoom.tar.gz archive into /usr/doom, the following
files will be present:

cdoom - A version of doom which runs directly on a QNX console. Do not run
       this version under a windowing system. Both keyboard and mouse
       input are supported. You need to be running the Mouse driver for
       mouse input.  The joystick is not supported. This program must
       be setuid to root or run as root since it hits hardware ports
       on the VGA like crazy.

xdoom - A version of doom which runs under the X Window system. Keyboard
       support is supported by default, and with the -grabmouse option,
       the mouse is "stolen" from X for use by DOOM.

doom -  A shell script used to start DOOM.  It will recognize which
       environment you're running in (text mode at the console or X) and
       automatically launch the correct version of DOOM.  You may wish to
       move this shell script into /usr/local/bin, or some other directory
       in your $PATH.  Once installed, just type "doom" and have fun!

sndserver - Required for sound effects. The sound server makes use of the
                       QNX Audio manager, which is currently in beta test and
                       available only to QNX customers in the beta program. The
                       sndserver process is started by doom automatically. NOTE: The
                       game may slow down if there are lots of sounds active at once.
                       Updating to Proc32.421H or later will fix this. Don't ask why,
                       its a secret and DOOM is the first test of it.

musserver - Required for music. The sound server makes use of the QNX Audio
                       manager, which is currently in beta test and available only to
                       QNX customers in the beta program. The musserver process is
                       started by doom automatically. Note that this program will try
                       and set your tick size to 2 msec if it is slower than this.
                       This program is setuid to root to successfully do this.

doom1.wad - The shareware version of the datafile. It contains level one of
                       the game. The cdoom and xdoom executables look for this file in
                       /usr/doom. You can override this by setting the DOOMWADDIR
                       environment variable to point at another directory.  If you've
                       purchased the registered version of DOOM, you can install it on
                       QNX using Rundos (or on a native-DOS machine) and copy the
                       doom.wad from that installation into your /usr/doom directory.
                       DOOM will automatically switch to using the registered doom.wad
                       if it detects it.  In the same manner, if you've purchased the
                       commercial release of DOOM (DOOM2), you can copy the doom2.wad
                       file into your /usr/doom directory to have it be automatically
                       used instead of the shareware or registered versions.

qnxdoom.faq - This file.

manual.txt - The command line options for the doom program, and a list of
            the cheat keys.

readme.txt - The documentation for how to play DOOM, and an introductory
            description of the DOOM scenario.  This text comes from the
            README.EXE file in the DOS shareware version.

dmfaq58.txt - The frequently asked questions about DOOM posted to the
             internet. This file has not been edited for QNX so it may say
             things which don't necessarily apply to QNX.

order.frm -  The order form for purchasing the registered version from id
            Software.

5. How do I get sound working under QNX?
========================================

To truly appreciate DOOM you will want a sound card supported by the QNX
audio manager (to join our beta test group, you'll have to contact us
directly).  The Audio manager should be started before running doom.  For
example:

 Audio sb -b 0x220 -i 7 -d 1 &    Sound Blaster on port 220, interrupt 7
                                  using DMA channel 1.

Note that QNX DOOM does not support the PC speaker for sound effects -
sound effects will only be generated on a PC sound card.  Unlike the LINUX
or SGI port of DOOM, which only support sound effects, QNX DOOM (just like
the DOS version) also supports music. The doom engine will start up
sndserver and musserver to handle sound effects and music, respectively.
The sound server outputs to /dev/dsp and the music server converts an
internal MUS format into midi which is passed to /dev/fm.  You will need
the QNX Audio driver which accepts midi sequences on /dev/fm (obtainable on
Quics). If you don't hear anything, you probably need a newer Audio
manager. You can pass -midi as an argument to doom which will cause
musserver to open /dev/midi instead of /dev/fm. If you have two machines
physically adjacent on the network, one with a Sound Blaster and one with a
Roland SCC-1, you can pass an argument to -midi to force it to open a midi
port on a remote machine. For example, "-midi //8/dev/midi" will open a
midi port on node 8 (this is routine QNX network transparency).  Note that
our handling of the midi music is not quite 100% yet, so if the music bugs
you, you can disable it with -nomusic. If you want to know if the Audio
manager supports your card, type "use Audio".

6. How do I run Multi-Player mode under QNX?
============================================

QNX DOOM will support up to 4 players on the network. Multiple independant
games may be active on the network at the same time. Although early
versions of DOOM have a reputation for consuming a lot of network bandwidth
due to the use of broadcast packets, current versions of DOOM are no longer
"network hungry" and use direct node-to-node packet transmission. DOOM's
network bandwidth requirements are quite modest.

The two forms of networking supported by DOOM under QNX are TCP/IP and
POSIX 1003.1b (formerly 1003.4) message queues. For more than two players
you will see better performance using TCP/IP, since DOOM was designed for a
non-blocking, non-reliable transport protocol (UDP). The mqueue support is
a quick hack for those who do not have the QNX TCP/IP. Modem support is not
available, nor is it planned.

To play a network game, one player assumes the role of master and defines,
via command line arguments, the level to be played and the degree of
nastyness for the bad guys. Everyone else will slave to these settings as
they connect to the master. Once everyone is synchronized, peer-to-peer
play begins. To start a network game you provide one of two arguments to
doom.

doom -net player# hostname ...               <-- Use TCP/IP

doom -mqueue player# nid ...                 <-- Use POSIX message queues

Where player# may be 1 to 4, player 1 being the master.  Everyone should
agree on different player#'s and you should pack them, ie: if there are
only 2 players make them 1 and 2, not 1 and 3.  For example, assume a 3
player game with nodes 1, 4 and 7 with hosts names of node1, node4 and
node7.  To use TCP/IP networking, each player would enter:

On node 1             On node 4             On node 7
-net 1 node4 node7    -net 2 node1 node7    -net 3 node1 node4

For POSIX message queue networking, they would enter:

-mqueue 1 4 7         -mqueue 2 1 7         -mqueue 3 1 4

Note that each node participating will have to be running either
Socket/Socklet for TCP/IP, or mqueue for message queues.

Perhaps someone will write a nice interactive program to allow multiple
users to join a game via a simple interface which figures all this out and
invokes DOOM for you.

7. It doesn't work!  (Machine/OS Requirements, troubleshooting, etc)
====================================================================

7.1. It gives an X error in X_CreateWindow!

Your Xserver is probably running in TrueColor mode. It should be running in
PseudoColor mode. Check /usr/lib/X11/Metro/Xconfig.<nodenumber> or use the
command xdpyinfo to see. If it is, restart your Xserver in PseudoColor mode
(8 bits/pixel).

7.2. The window is too small!

The X version supports -2 and -3 options to double and triple the screen
size.  Note that our X Window product is currently in beta and does not yet
support the MIT shared memory extensions.  As a result, the display update
rate will drop significantly as you enable doubling and tripling.  Once
we've implemented the MIT shared memory extensions, the performance of DOOM
under our X will improve.  For the best screen update rate, run the console
version (cdoom).

7.3. Why can't I use the mouse under X?

To use the mouse with the X version of DOOM you must specify the -grabmouse
command line option to DOOM.  With this option in effect, X will no longer
have control of the mouse, so you'll have to use the keyboard to exit from
DOOM (Escape key) and pass mouse control back to X.

8. Can I run DOOM under X on one machine and display it on another?
===================================================================

Yes, but you may not want to.  Depending on your network speed, it will
probably be much slower, and unless you're careful, the console of the
originating machine will thunder with gunfire and screams :-).

Then again, if you're running with 100 Mbit FDDI or TCNS between your QNX
machines, or running a couple processors in a Ziatech STD32 card cage
(which uses the backplane bus as the inter-processor LAN), the network
between the machines may not slow you down at all.

9. Can you play SGI vs QNX?  Console Doom vs. X Doom?
=====================================================

Probably - the data format of the packets should be compatible.  Both the
console and X version implement both TCP/IP and POSIX message queues, so
they should be able to inter-operate as well.

10. Where does QNX DOOM put the configuration file and saved games?
===================================================================

When you run DOOM it will create a .doom directory in your home directory
($HOME/.doom). You must have a $HOME environment variable set (which is
usually created for you by default). The configuration file is called
doomrc.

11. How do I get the other levels?
==================================

You first need a registered version of DOOM. Buy the DOS version of DOOM
(see below).  The QNX DOOM engine is version 1.666, make sure that the
commercial version you're buying is also v1.666.

The registration magic is inside the new, 10 Mbyte doom.wad file you'll
get. Install the new version with Rundos and Dosfsys (or under DOS), and
then copy the doom.wad file from your DOS partition into your /usr/doom
directory. When the DOOM executable sees the doom.wad file, it will
automatically use it instead of the shareware doom1.wad file.  Once you've
bought the commercial DOOM 2 release, you can copy the doom2.wad file into
the /usr/doom directory as well.

Having the registered version also enables features like the -file argument
to use the incredible variety of homemade wad (PWAD) files.  When DOOM runs
these wad files, it does so by first loading the registered wad file, and
then "overloading" it with the additional components defined by the
after-market wad files.

12. How do I register?
======================

It costs $40 to register DOOM. From the README:

To register the entire DOOM trilogy call 1-800-IDGAMES. If you live outside
of the USA, or if you wish to purchase DOOM with a check or money order
please refer to the text file, (ORDER.FRM) located in your DOOM directory.

If you don't have an ORDER.FRM, download a DOS shareware version to get
one.

13. I need to ask id Software a question.
=========================================

Please don't mail them bug reports or ask for help about the QNX version.
That's why this FAQ exists.  If the answer to your question is not here,
post to alt.games.doom and then email me the answer so I can include it in
this file.

If you want release information, try "finger [email protected]". If you
must ask them a question about the DOS version, their email address is
[email protected].

14. What are the cheat codes? the secret doors?
===============================================

They are all the same as the DOS version. See the manual.txt file in the
QNX distribution.

15. Where is DOOM information on the net?
=========================================

   o WWW sites
      o Original Unofficial Doom Site (VHhold's DOOM Web Node)
      o Pherion's DOOM Web Node
      o Sven's DOOM Web Node
      o Tim's DOOM Web Node
      o Piotr's Doom Web Node
      o DOOM Home Page
   o finger [email protected] for the latest on DOOM releases
   o alt.games.doom, alt.games.doom.newplayers, alt.games.doom.announce,
       alt.binaries.doom
   o anonymous ftp. The main ftp site is
     ftp://infant2.sphs.indiana.edu/pub/doom (also fsp, port 21);
     infant2 is mirrored at ftp.uwp.edu, ftp.orst.edu,
     ftp.uni-erlangen.de, and aurora.bld189.jccbi.gov; other sites
     are ftp.uwp.edu/pub/games/id, ftp.uml.edu/msdos/Games/ID, and
     wuarchive.wustl.edu/pub/MSDOS_UPLOADS/games/doomstuff
   o A huge FAQ is available.  Excerpted from the FAQ:

        The "Official" DOOM FAQ is posted every two weeks (or earlier
     if a new version is released) on the following Usenet groups.
             (1) comp.sys.ibm.pc.games.action
             (2) comp.sys.ibm.pc.games.announce
             (3) comp.sys.ibm.pc.games.misc
             (4) alt.games.doom
        The "Subject:" line of the post will be "'Official' DOOM FAQ v??.??"
     where "??.??" is the version number of the FAQ.
        New releases of the "Official" DOOM FAQ are uploaded to the
     following Internet FTP sites.
             (1) ftp.uwp.edu              IN /pub/incoming/id
                                          IN /pub/msdos/games/id/home-brew/doom
             (2) infant2.sphs.indiana.edu IN /pub/doom/incoming
                                          IN /pub/doom/text
             (3) wuarchive.wustl.edu      IN /pub/MSDOS_UPLOADS/games/doomstuff
        The file name of the upload will be "doom??.faq" where "??" is the
     version number of the FAQ.

16. Are there DOOM utilities for QNX?
=====================================

Obviously, you can't use any patches for DOS on your QNX executable. You
can use people's homemade wad files once you own a registered copy of DOOM.
Since a LINUX port of DOOM is now out, many of the wad editors, etc., are
being ported to LINUX, so QNX ports will be easy. Look around the ftp
sites; some of the utilities may come with code; port them yourself and
then announce them!

A UNIX port of id's BSP node builder (which is a port of Ron Rossbach's
port to DOS) is available via anonymous ftp from ftp.isy.liu.se in
/pub/colour/doom/bsp_unix.tar.Z In the same directory there's also
wadgc.zip which contains some other UNIX programs for editing DOOM .WAD
files.  These should probably port to QNX without much effort.

A DOOM map editor which has been ported to Linux is DEU 5.21.  It was
ported by Brad Hawthorne ([email protected]) and Sam Lantinga
([email protected]).  Here's part of a posting by Raphael Quinet
([email protected] or [email protected]):

>I strongly suggest that you get the original (DOS) version of DEU 5.21 too.
>Only the original version contains the demo WADs, the tutorial and full docs.
>This has been done in order to save downloading time for experienced DEU users
>who already have the demos from the original version.
>
>- The two official sites for distribution of DEU are:
>   * infant2.sphs.indiana.edu (Indiana, USA) in /pub/doom/deu
>   * ftp2.montefiore.ulg.ac.be (Belgium) in /pub/doom/deu
>   * ftp.uwp.edu (Wisconsin, USA) in /pub/games/id/home-brew/doom/deu
>   * ftp.cdrom.com (California, USA) in /pub/doom/deu
>   * ftp.iglou.com (Kentucky, USA) in doom/deu
>   * ftp.uni-erlangen.de (Germany) in /pub/pc/msdos/games/ID/doom-stuff/deu
>   * nctuccca.edu.tw (Taiwan) in /PC/games/doom/deu
>   * ftp.luth.se (Sweden) in /pub/msdos/games/doom/deu
> There is also an experimental Linux site which distributes the Linux version
> of DEU (but you will have to connect to the other sites to get the original
> version with docs and demos):
>  * dewdrop.water.ca.gov (USA) in /pub/doom/deu-linux
>
>- The names of the files containing the Linux version of DEU are:
>   * deu521linux.txt         - informations about this version of DEU
>   * deu521linux.src.tgz     - the sources of the program
>   * deu521linux.bin.tgz     - the pre-compiled program and libraries
>
>- If you don't know how to extract the files from a ".tgz" or ".tar.gz" file,
>  here is how:
>     gunzip -c deu521linux.src.tgz | tar -xvf -  (using standard tar)
>  or:
>     tar -xzvf deu521linux.src.tgz               (using GNU tar)
>  If you only want to see what is in the archive before unpacking the files,
>  just replace "tar -xvf -" by "tar -tvf -".
>  Of course, this assumes that you have a working UN*X system...


17. About this FAQ
==================

This is a frequently-asked questions file for the QNX version of the game
DOOM, originally written for DOS by id Software.  We (QNX) have put this
together as a service since id offers no technical support on this port.

Much of the information in this FAQ comes from the excellent SGI faq by
John Troyer <[email protected]>.  Here's a quote from his FAQ:

"Some of this information is from the net.  Unfortunately I didn't save
people's names. If you feel you should be credited for some piece of
information, or would like to be listed here in the acknowledgements, just
email me and I'll add you.  Among many others, thanks to Lan Dang, Sean
Langston, Bill Lorton, Robert Teller, Patrick Tufts, and T.J. Kelly and the
DOOMWeb guys."

You can mail me, Dan Hildebrand, at [email protected]. Corrections and
suggestions appreciated.

Dan Hildebrand <[email protected]>