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

                         The Eternity Engine

                            Version: 3.29
                        Release: Public Beta 4

                    Coded by: James "Quasar" Haley
                    
    Based on SMMU - "Smack My Marine Up" by Simon "fraggle" Howard

               Start map by Derek "Afterglow" Mac Donald         
      
    Special Thanks To:  Lee Killough, Matt Denham, aurikan,DooMWiz, 
      Colin Phipps, fraggle, Nemesis, Carnevil, Randy Heit, SoM, 
              Julian, 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 on 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 to 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
  the 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 4 ****

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

* More FraggleScript Extensions

  Numerous new functions, as well as array support.
  
* New DeHackEd Thing Flag
  
  NOCROSS flag supports giving any thing the projectile attribute of not being
  able to activate crossable lines.
  
* New BEX Blocks

  [SPRITES], [SOUNDS], and [MUSIC] are now supported to allow renaming of
  these internal resources without use of the deprecated DeHackEd Text block.
  Mnemonic system allows for orthogonal replacement and cumulative changes
  between patches; this was not previously possible. See ETCDEH.TXT for
  details.
  
* Working Demo Recording Support, New Demo Format

  Eternity now generates working demos in its own unique format, with support
  for mlook/keylook, with more features to come in future versions. Also enhanced
  the ability for future demo version support between different beta versions of
  Eternity.
  
* Retro-bug support for SMMU maps with line type 272 used as WR Start Script

* More Robust Compatibility

  Now compiles on many more versions of GCC, as well as more cleanly supporting
  different versions of the Allegro game library.

**** COMING SOON ****

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

* Priority *

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

* Long-Term Goals *

* 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 4 06/30/01

* Fixed a good number of bugs once again. Improved portability with Julian's
  help, major feature is working demo recording. See info below and changelog
  for more info, as usual.

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 4:

+ Restricted mobj references from FraggleScript's hub script to avoid heap
  corruption and possible seg faults

+ Various demo recording code segments were restored to MBF functionality,
  and then new features were added in, re-enabling demo recording.
  
+ Walk, chase, and script cams will no longer see solid areas of HOM if they 
  are in a different vertical partition of a deep water sector than the 
  player's body. Note this bug was transient and only occured with certain 
  combinations of player body and camera position. Thanks to Julian.
  
+ Having more than 128 intermission camera objects on the map will not cause
  seg faults
  
+ New sound lumps can be played again -- culprit was an obsolete range checking
  statement only enabled in public beta 3
  
+ Register-clobbering bugs in inline assembly functions that were fatal to
  GCC 2.95.2 and later have been repaired. Thanks to Julian again.
  
+ Door code no longer corrupts thinkers of other types started on door sectors, 
  unless an old demo is in progress (a bug having survived since DOOM).

* 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 4:

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

- Cannot currently compile under Linux (files need to be updated, namespace
  collisions need to be repaired) -- move to SDL for Windows port may make this
  easier.

- Possible problems being created by artifact mouse and joystick button code.
  Will investigate for Public Beta 5 (will be the final beta for v3.29)
  
  