*********************-= Team Eternity Presents =-*************************

                         The Eternity Engine

                            Version: 3.29
                        Release: Public Beta 3

                    Coded by: James "Quasar" Haley
                    
      Based on SMMU - "Smack My Marine Up" by Simon "Fraggle" Howard
      
      Special Thanks To:  Lee Killough, Matt Denham, Aurikan, DooMWiz,
         Colin Phipps, Fraggle, Nemesis, Carnevil, Randy Heit, SoM,
                   and all members of Team Eternity
                   
        This source port makes use of portions of code *inspired* by
                   Raven Software's Heretic and Hexen.

**************************************************************************

DISCLAIMER:

This software is covered by NO WARRANTY, implicit or otherwise, including
the implied warranties of merchantability and fitness for a particular
purpose. The authors of this software accept no responsibility for any ill
effects caused by its use and will not be held liable for any damages, even
if they have been made aware of the possibility of these damages.

This version of the Eternity Engine is a *PUBLIC BETA* and, despite our best
efforts to ensure it functions properly, may contain some bugs that could cause 
undesired behavior during game play. If the game should crash or malfunction 
during operation, it is requested that the user record the nature and 
circumstances of the crash and attempt to isolate the cause of the crash, and 
report it to the author at the following email address:

haleyjd@hotmail.com

Bug reports and feature requests will be appreciated. Please see the end of
this document for information on bugs fixed in this version, and in bugs we
already know about that haven't been fixed yet.

**** FEATURES ****

Eternity is the newest source port to inherit the banner of BOOM. Descended
from MBF, it attempts to carry on the effort to put editability, reliability,
and compatibility FIRST. From SMMU it also gains the momentum to give the player
new options rather than dictate DOOM purity.

While Eternity lacks certain "snazz" features such as sloping floors, room-
over-room, and OpenGL graphics, we feel it more than makes up for them in what
it DOES have.

Eternity includes FULL BOOM compatibility, as well as most features added in
MBF and SMMU (exceptions include MBF's beta emulation support which is not
included, and SMMU v3.30's thing script area). In addition, Eternity adds many
more, including these:

* TerrainTypes
  
  Effects that can be triggered by an object hitting the floor. These are
  editable by the user and can be associated with any flat. The TerrainEd
  utility can be used to generate a TERTYPES lump which can be inserted into
  your wad.
  
* New Thing Flags

  Multiple new effects can be achieved by placing flags in the Bits2 field of
  things in a DeHackEd or BEX patch. These flags are covered in ETCDEH.TXT.
  
* Helper Specification

  By using a [HELPER] block in a DeHackEd or BEX file you can easily specify
  the type of helper creature the player has when using the -dogs command-line
  parameter.
  
* New Code Pointers, Frames, and Things

  Eternity adds dozens of code pointers, things, and frames for use in DeHackEd
  that can make DeHackEd possibilities expand, including the StartScript pointer
  which allows things to call FraggleScript code, allowing the author to make
  his own effects from scratch. The possibilities here are endless!
  
* Extensions to FraggleScript

  Eternity includes a large and growing number of features that extend the
  FraggleScript scripting language. Up to 256 scripts can now be defined for
  each level, things have access to scripts via the StartScript pointer, numerous
  new functions for all types of purposes exist, including the new FraggleScript
  heads-up pic display inspired by SoM's DOOM Legacy implementation.
  
* Custom Sound Substitution Per Level
  
  Through the SMMU map header information, Eternity can specify custom sounds
  for environmental actions independently for each level. This allows levels of
  multiple themes to co-exist in the same TC or megawad without need for large
  clumsy lumps of data.
  
* Double Skies and Lightning

  Eternity has special features for skies including double skies which allow
  one sky to be drawn transparently on top of another and allowing both to scroll
  without use of scrolling linedefs, and lightning, which when enabled, causes
  flashes of light and appropriate sounds in all sky sectors on a level.
  
* Full Keybinding System
  
  Based on but more powerful than SMMU v3.30's keybinding system, Eternity
  can rebind most keys in the game (those which are not dynamically bindable can 
  still be set through the config file). KEYS.CSC file contains default bindings 
  and can be edited by the user if desired.
  
* Bug Fixes

  This port has addressed most known issues in SMMU v3.21, as well as many
  bugs from MBF and even original DOOM. This includes all of the fixes from
  Colin Phipps' PRBoom port, which enable more robust demo compatibility and
  better memory usage.

I'm certain to have left out some cool things, so check all the editing docs
for more information!

**** Features New to Version 3.29 Public Beta 3 ****

These include some of the major features added in the latest version:

* User-specifiable Console Scripts

  Up to two user console scripts can be specified in the configuration file,
  and will be auto-executed before the start of the game. This allows you to
  select key bindings and game variable settings precisely, based on your
  current configuration.
  
* Lava TerrainType

  Burn, baby, burn!

* Dormant Mapthing Flag

  Similar to the flag in Hexen, things in Eternity can now be made dormant at
  map startup. They will remain in their spawn state and will be invincible until
  a script wakes them up with the new objawaken() function.
  
* More FraggleScript Extensions

  else and elseif statements are now available, the binary NOT operator (~) has
  been implemented, and more.

**** COMING SOON ****

These are features planned to debut in future versions of the Eternity Engine:

* Priority *

* Sound sequences
* Dialog sequences
* Extended map format - ExtraData
* More TerrainTypes, including a scriptable type for max customizability

* Long-Term Goals *

* WINDOWS SUPPORT!
* Polyobjects
* Fully-functioning Hub System (currently disabled due to bugs, sorry)
* Special Heretic Edition
* Fully-functioning network code (currently broken, see below)


**** Revision History ****************************************************

3.29 Public Beta 3 05/10/01

* Fixed a large number of bugs, added several interesting features. See
  bug list below, and the changelog, for more information.

3.29 Public Beta 2 01/09/01

* Fixed mouse buttons - problem was leftover code in I_GetEvent() that
  caused the mouse button variables to never be asserted - code was
  unreachable because of an assignment of the variable buttons to 
  lastbuttons.
  
3.29 Public Beta 1 01/08/01

* Initial Release

**** Bugs Fixed, Known Issues ********************************************

Bugs fixed in 3.29 Public Beta 3:

+ 640x400 non-pageflipped video mode is now usable

+ Console checks for null strings before calling standard C functions

+ Console no longer writes text off the right side of the screen

+ FraggleScript fixed variables are no longer chopped to 23 bits in 
  conversions

+ 272 WR Start Script moved to 280 to deconflict with MBF reverse sky 
  transfer line type

+ Floors will not move in old demos if monsters on them have their heads
  stuck in the ceiling (demo compatibility fix from prboom)

+ Heads-up text string widths are now properly calculated, fixing some segv 
  issues in the video code
  
+ Playing demos from the console no longer causes a Z_ChangeTag error when 
  the demo is finished playing
  
+ Automap coordinate screen corruption and associated crashes fixed

+ Memory leaks and inefficiency eliminated from global colormap
  substitution system (now requires colormaps to be between C_START, C_END)
  
+ t_dump and t_run console commands repaired to do proper range-checking
  and to issue more appropriate usage information

+ Numerous fixes to FraggleScript functions to ensure proper range-checking

+ V_WriteText restricted to drawing text completely within the screen bounds

+ FraggleScript functions that return no value no longer propagate the value
  of the last function that returned (ill-defined behavior)
  
+ ++ and -- FraggleScript operators now work properly on fixed type

Known Issues in 3.29 Public Beta 3:

- Network code is incomplete and totally broken. Needs a complete overhaul.

- Demo recording code is broken for unknown reasons, problem inherited from
  SMMU v3.21
  
- Cannot currently compile under Linux (files need to be updated, namespace
  collisions need to be repaired)
  
- Problems have been experienced with the inline assembly in m_fixed.h
  under GCC 2.95.* Alternative code is available upon request, and it is
  also possible to change this header file to use C versions of the functions
  in question, which is currently recommended to those users experiencing
  trouble. Examination of the generated code has indicated only small potential
  performance gain from using the assembly code.
  