-------------------------------------------------------
Doom Environment Simulator for the Falcon030 v2.06alpha
-------------------------------------------------------

This is a DSP56001 based interpretation of the now famous
1st perspective 3D gamesystems on the PC and other platforms.
Although only an engine, it incorporates almost all of the
important aspects of these gamesystems - including texture
mapped walls ceilings & floors, depth cued shading & artificial
lighting effects. Truecolour mode is employed to allow improved
rendering abilities, and to cut down nasty banding artifacts
in the textures.

The demo is mouse & keyboard controlled, and works with a number
of different WAD level data files from PC games.

Here is a short list of features:-

* 16-bit true colour
* Perspected texturemapping
* Textured walls
* Textured floors
* Textured ceilings
* Transparent textures
* Depth cued lighting
* Artificial lighting
* Variable x & y detail settings
* Variable viewport size up to 320x240
* Scaled player movement
* Simulated 'bobbing' movement
* Graphics cache for speed
* Improved algorithms for speed
* Works with Doom, Doom-II & Heretic IWADs.
* Works with all good CPU / DSP / BUS accelerators.

The cache prefetch pass has now been added, which cuts disk
activity down to almost zero before each level starts.

As an aside (and the prime reason for writing a graphics
cache) - this demo will work with only 32k of memory space
free for the cache - even if it WOULD take about 20 minutes
to draw the screen after all the implied disk thrashing! :)

The texture browser has been removed, so don't be surprised
if it doesn't work. :)

If you don't have a Heretic WAD, go and find one. It looks
a hell of a lot better than Doom, and is worth seeing on
an Atari machine!

There are 4 versions of the executable - numbered in order of
compatibility from 1 -> 4. Version 1 will probably only work
on 16Mhz bog-standard Falcons, but is optimised for that
machine and is the fastest of all the executables. Version 4
will work on anything (hopefully), including the fastest and
least compatible accelerators / caches / FastRAM combinations.
It is also the slowest of all the executables due to the
additional safety measures which have been enabled. There is
actually very little difference in speed between the 4 versions,
so don't panic if some don't work on your system.

It is up to the user to find the fastest, most stable executable
to use from now on. The sources contain a compat_level setting
to allow anyone to compile their own version with the required
compatibility level.

If NONE of the versions work properly on Afterburners or any other
type of card, I will need to know as soon as possible!


Operational details:
--------------------

Commandline options:

 > bm206a.ttp <wadfile> <level>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Doom I example: Load episode 2, mission 3 from doom.wad

 > bm206a.ttp doom.wad e2m3

 > Ultimate Doom: episodes 1-4 available
 > Commercial Doom: episodes 1-3 available
 > Shareware Doom: episode 1 available only

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Doom II example: Load mission 13 from doom2.wad

 > bm206a.ttp doom2.wad map13

 > maps 1-32 available

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Heretic example: Load episode 1, mission 4 from heretic1.wad

 > bm206a.ttp heretic1.wad e1m4

 > Shareware Heretic: episode 1 available only

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Movement keys:

 Arrow keys        left / right & forward / back
 ALT               hold down for strafe / sidestep
 SHIFT             hold down for run


Option keys:

 ESC               quit
 TAB               toggle map on / off
 '1'               rise
 '2'               drop
 '3'               toggle horizontal detail
 '4'               toggle vertical detail (not ready on VGA yet)
 'V'               select VGA aspect ratio (320x240 = fullscreen -> default)
 'R'               select RGB (PAL) aspect ratio (320x200 = fullscreen)
 'F'               toggle normal/full display height (320x200 <-> 320x240)
 '-'               decrease window size
 '+'               increase window size

When using the texture browser, you may use the arrow keys to move
forward and back through all of the available wall textures in the
IWAD. The textures displayed are full 'composite' TEXTURES from the
TEXTURE1 & TEXTURE2 directories in the IWAD - not simply patches from
the PNAMES directory. This is the beginnings of the graphics cache
which is needed for management of large numbers of textures in memory
at once.

The detail options are not yet complete, as the special hardware video
modes required to achieve 160x200, 320x100 & 160x100 are not yet
implemented on VGA. I have been sent the appropriate routines but have
not yet had time to make the necessary modifications to the engine in
order to make them useful. There is however software emulation for all
of these modes which is almost complete.

The currently supported modes are:-

RGB : 320x200 / 320x240
RGB : 320x100 / 320x120 (hardware emulation)
RGB : 160x200 / 160x240 (software emulation)
RGB : 160x100 / 160x120 (part software, part hardware emulation)

VGA : 320x200 / 320x240 (software emulation)
VGA : 160x200 / 160x240 (software emulation)

The other detail modes do work, but they will currently look
squashed.

The currently unfinished modes are:-

VGA : 320x100 / 320x120
VGA : 160x100 / 160x120

To use this demo, you will need a Doom IWAD level file of some
kind. PWAD (patch WAD) files will not work as they do not to
contain the correct number of textures. A 4MB Demo WAD is freely
available for the PC (shareware Doom). There are also 10MB
(commercial Doom) & 12MB (Ultimate Doom) versions if you have
access to those - and even a 14Mb Doom-II WAD which might also work.
WAD files from Heretic (Shareware & commercial) will also work with
this program - and look even better than Doom.

Any WAD smaller than the ones stated is likely to be a PWAD and
will not be much use...

I will be using the 4MB & 12MB WADs for testing, just in case
problems arise and you need to know.


Important modifications:
------------------------

* 1.32alpha -> 1.7alpha

> The NodeInCone function is now on the DSP.
> A new DSP function has been employed to defrag the floor runs.
> Rotational, perspected mapping function for floors & ceilings.
> Distance shading for floors & ceilings.
> Perspected mapping function for walls.

* 1.7alpha -> 1.8alpha

> Removed unwanted FPU instructions:

* 1.8alpha -> 1.9alpha

> Replaced 'additive' shading scheme with better 'scaled' shading.
> Added lighting to walls.
> Added depth-cueing to walls.
> Optimised texture mapping code for CPU bus pipeline.
> Optimised texture-index calculations
> Optimised texture-run storage & lookup
> Modified WAD parser for easy acess to individual resources.
> Different textures just for the hell of it.

* 1.9alpha -> 1.92alpha

> Floor & ceiling textures loaded from IWAD & used correctly.
> Fixed vertical aspect ratio for VGA.
> Changed the distance shading curve YET AGAIN! (I want ID's original source!)
> More accurate floor / ceiling rendering routines.
> Low detail modes now work fully on RGB & partially on VGA.
> Fixed the sky texture and then discovered it wasn't quite so fixed after all.
> DSP / CPU communications optimised for walls.
> New full-height (320x240) capability!
> New texture-browsing mode.

* 1.92alpha -> 1.93alpha

> Compatibility modes added for accelerators.
> Scaled motion now used for drastic changes in framerate.
> Bobbing feature when walking / running.

* 1.93alpha -> 2.00alpha

> Fully textured walls.
> Auto-defragmenting memory manager.
> Graphics resource cache with hit-frequency organiser.
> Texture pegging & offsets used for mapping.
> The sky now looks a lot better.

* 2.00alpha -> 2.01alpha

> Double-VBL Falcon/VGA bug fixed.

* 2.01alpha -> 2.02alpha

> Double-VBL bug fixed again (correctly this time).
> Improved wall mapping (rounding errors caused bad joins).

* 2.02alpha -> 2.03alpha

> Transparent walls now supported.
> Texture pegging improved.
> Fixed reschange problem on exit.

* 2.03alpha -> 2.04alpha

> Cache prefetch-pass added to remove 90% of disk swapping on 4MB
  machines. Disk swapping removed completely on 14MB machines.

* 2.04alpha -> 2.05alpha

> FastRAM is used *instead* of STRAM if detected - regardless of flags.
> Some minor bugs removed (rubbish on screen with fastload bit set).

* 2.05alpha -> 2.06alpha (unfinished)

> Code cleaned up & optimised (still very much in progress).
> Several remaining 68030 overheads being transferred to DSP.

------------------------

Doug @ Black Scorpion

Preferred e-mail: <101573.1275@compuserve.com>
Alternate e-mail: <dlittle@nest.demon.co.uk>

