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

Version 1.03
June 13, 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 info@qnx.com 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.tar.gz

   --or--

   ftp://ftp.caprica.com/pub/qnx/doom/

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

or from ftp.caprica.com as well.  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/qnx42/mqueue.tar.F: A POSIX realtime message queue manager.  
                                 Needed for network games if you don't have
                                 QNX TCP/IP installed.  Note that QNX 4.22 and
                                 later come with mqueue standard.

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

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

             gzip -d <qnxdoom.tar.gz | tar -xv
             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.

pdoom - A version of DOOM which runs under the Photon microkern GUI.  Note
        that because of Photon's architecture, you can drag a live DOOM
        session from one machine to another's screen across the network.

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.  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.  The musserver 
			process is started by DOOM automatically. Note that this 
			program will try and set your tick size to 1 msec if it is 
			slower than this. This program is setuid to root to 
			successfully do this.

Audio     - The sound manager needed to hear music and sound effects. This 
			may not be redistributed or used for any purpose other than 
			playing DOOM. See the Audio.readme for more information.

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

We have included an alpha of the Audio manager with DOOM. If you wish to 
develope your own audio applications you will need to join the beta program 
for Audio.

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 may not be 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 soundcard, 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 help@idsoftware.com". If you 
must ask them a question about the DOS version, their email address is 
help@idsoftware.com.

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 help@idsoftware.com 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 (u9c192@ugrad.cs.ubc.ca) and Sam Lantinga 
(slouken@cs.ucdavis.edu).  Here's part of a posting by Raphael Quinet 
(eedraq@chapelle.ericsson.se or quinet@montefiore.ulg.ac.be):

>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 <troyer@cgl.ucsf.edu>.  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 danh@qnx.com. Corrections and 
suggestions appreciated.

Dan Hildebrand <danh@qnx.com>
