VIEW.EXE
By Jake Hill
December 1, 1994

OVERVIEW

VIEW is a BSP based rendering engine compatible with Id Software's WAD file 
and WAD files generated with DEU 5.2. VIEW.EXE will only (ONLY) work with
DOOM.WAD files from the first doom.  It will NOT work with DOOM-2 wads.
The complete source is included.  If you modify these files and then release
them to the public in ANY form, you MUST include the original source files
and this read.me file.

BS

First off, I want to thank Matt Fell and Hank Leukart for writing 
_The Unofficial Doom Specs_  without which this program would have
never been written.  I also want to thank Jaimi McEntire and Lloyd Pique
for tips and help along the way.  And last but not least thanks to 
Brendon Wyber and Raphael Quinet for making the source to DEU 5.2
available.  It was much help with reading in the Wad file.  Also thanks
to everyone who I am forgetting now.

If more people made their software available to the public, the world
would be a better place.

This has been a very fun project for me for the last four months.  I have
learned alot about 3d and pseudo 3d programming.

This is my first attempt at 3d programming.  I think it's a pretty good
first try, but it's certainly not great.  Don't be surprised if you find
a bug or two.  It does NOT do any texture mapping, but it should be easy 
for someone experienced in that to add it in.  What it does do is read 
in the DOOM.WAD file (for Doom, NOT Doom 2) and render the level with 
solid colored non shaded polygons via a bsp tree traversal.  It's not fast, 
but it's not real slow either.  About 24 fps on a 486/66 when compiled 
with MSVC 1.5.  About 15 fps when compiled with Borland 3.1 or 4.02.  
And yes I used optimizations.

To run the executable put VIEW.EXE in the same directory as 
DOOM.WAD and type VIEW.

The command line is as follows:
VIEW                      : Loads DOOM.WAD level 0 (e1m1)
example:  view
This loads DOOM.WAD level 0 (e1m1).

VIEW [Level#]       : Where Level# is an integer in the range (0-25)
                    : Loads DOOM.WAD level 0-25 (25=e3m12)
example:  view 3  
This loads DOOM.WAD level 3 (e1m4).

VIEW [filename] [Level#]  : Where [filename] is the name of any 
                          : custom WAD file for doom.
example:  view my.wad 3
This loads the file MY.WAD level 3.

Use the arrow keys for direction, plus and minus control height,
use ALT with the left and right arrow for strafe mode, and ESC
will exit the demo.

The entire thing is written in c++.  There is only one class, the view.
There are some obvious optimizations which can be made with assembler.
If you want to make it more object oriented, it should be fairly 
obvious which data structures need to be objectized, but I didn't have
the patience to do that.

The reasons that I am making this available in such an early stage are:

1.  I am sick of looking at this project ;).

2.  I have not seen many (only one) rendering engines which use a bsp
    but I have seen ALOT of questions regarding bsp's.  I hope that 
    this will help some of the people interested in bsp based rendering.

3.  I would like ANYONE who manages to improve on these algorithms
    (and there will be many) to keep in touch.  I would particularly
    like to know how it runs when compiled under Watcom's 32 bit flat
    model.  If anyone sees any blatant mistakes on my part, or has any
    suggestions on how to improve this code PLEASE let me know.

I would love to hear any comments or questions you may have.
I can be reached on CIS at Jake Hill 74032,350 or on internet
at jkhil@dbsoftware.com

Good Luck.  And remember, Life's too short to wear socks!
