
Doom Environment Simulator v2.03alpha
-------------------------------------

This is the first version which can render transparent
wall textures. Some refinements have also been made to the
upper / lower pegging modes.

Due to the textures now being cached from disk, and the fact
that no attempt is made to load graphics before starting a
level, there is a significant amount of disk activity to be
expected each time the program encounters a texture it has
not yet seen. After all the textures have been rendered at
least once, the disk activity will probably stop altogether,
providing your machine has enough ram to store every texture
in a given level. If you do not have enough ram to hold every
texture needed, the graphics cache will intelligently keep
the most frequently used textures in ram, and load new
textures at the expense of lesser used ones. Again, by the
time this point is reached, disk activity should be almost
zero.

To cut a long story short - implementing a simple routine
which forces the cache to 'look' at each texture in the level
before starting, will ensure that 90% of the textures will
be 'thrashed' into ram before the game begins - eliminating
disk swapping almost completely at the expense of a short
initial delay (like Doom). For the moment, I just want to
be sure the disk swapping works properly in realtime, and
I'm leaving it like this for now.

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:

 > doom192a.ttp <wadfile> <level>

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

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

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

 > doom192a.ttp doom2.wad map13

 > maps 1-32 available

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

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

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

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

Doug @ Black Scorpion

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

