



  NAME
       egaint - Enhanced graphics aint

  SYNOPSIS
       egaint [cmp]

  DESCRIPTION
       Egaint represents an IBM Enhanced Graphics Adapter-specific
       implementation of and complete replacement for aint.  While providing
       a very high degree of compatibility with its predecessor, egaint also
       features several improvements, including a greater level of
       compatibility with TETRIS, the Russian pioneer of the falling shape
       genre of computer games.

  MACHINE REQUIREMENTS
       Egaint 0.93.05 was developed and tested solely on a Toshiba T5100
       Personal Portable Computer; this means that I had a 16 Mhz 80386, an
       EGA with 256K RAM, and MS-DOS 3.3 in mind during development.  It is
       highly recommended that at least an 80286 be present when egaint is
       run (though you could probably make due without one); in addition, I
       have heard rumors that the VGA is supported (though I cannot verify
       this).

  OBJECT
       If you've played egaint before (or aint, TETRIS, NYET, Son of TETRIS,
       or any of the related games), you can skip this part.

       But for those of you who are new to this genre of computer games, the
       object of egaint is to create solid rows across the twenty-four unit
       high, ten unit wide playing field (solid in the sense that there are
       no holes) by both moving and rotating the shapes which fall from the
       top of the playing field towards the bottom.  Once a solid row is
       created, egaint will clear it from the screen, allowing everything
       above it to fall into its place.  However, if the shapes pile up and
       reach the top of the playing field, the game will end (but your
       addiction won't--at least for a while it shouldn't).

  COMMAND-LINE OPTIONS
       Egaint accepts one option which will allow the user to specify what
       sort of display device will be used:

       c    An IBM Enhanced Color Display (or any compatible device capable
            of displaying sixteen distinctive attributes at one time) will be
            used.

       m    An IBM ECD-compatible device capable of displaying only two
            distinctive attributes at one time (i.e., "black" and "white")
            will be used.

       p    An IBM ECD-compatible device capable of displaying only four
            distinctive attributes at one time (namely, the gas plasma
            display of Toshiba T5100 Portable Personal Computer, which can
            only show "bright orange," "medium-bright orange," "medium-dark
            orange," and "dark orange") will be used.

  GAME OPTIONS
       Once inside egaint, a game options screen (after, of course, the title
       screen).  A brief summary of the available options (and their preset
       values) follows.



       Tournament Game (No)
            There are two hundred and fifty-six possible tournament games
            built into egaint; each tournament game will play exactly the
            same each time it is invoked, making them ideal vehicle for
            competitions between two players.  Note that all conditions must
            be identical for the games to be identical (i.e., the same
            initial level, the same initial height, the same version of
            egaint, etc.)

       Tournament Game Number (0)
            This option allows you to choose which particular game (out of
            the two-hundred and fifty-six possible) you wish to play (they
            range from zero to two-hundred and fifty-five).

       Initial Level (5)
            Where one is the easiest (slowest) and ten is the hardest
            (fastest).

       Initial Height (0)
            Specifies how high (in blocks) an area should be filled with
            randomly placed blocks (ranges from one to twelve).  And, as an
            improvement upon aint, egaint offers hidden (or invisible)
            blocks, which may be set by incrementing the height past twelve.

       Show Next (Yes)
            Toggles whether or not the next piece to be put into play should
            be displayed in a window in the upper-left corner of the screen.

       Show Shadow (No)
            This is still being worked on; the idea behind this is to have a
            "shadow" cast upon the area beneath the falling shape (which
            should, in theory, result in less placement errors).

       Extended Shapes (Classic)
            Egaint builds upon aint by offering four sets of shapes:

            Classic
              the seven basic shapes

            Easy
              the Classic set plus an assortment of smaller shapes

            Medium
              the Classic and Easy sets plus some moderately awkward shapes

            Hard
              all of the above sets plus larger, more difficult shapes

       Block Style (varies)
            There are four styles of blocks which you can choose from:

            New
              A style introduced in egaint 0.93.01 as part of the title
              screen, it was found appealing enough to eventually replace the
              original style (though that was later brought back).

            Classic
              The original style which was, as mentioned above, abandoned
              (but later restored).



            Pumped Full of Drugs
              A random style which was created (out of boredom) after the New
              style was added (did I here someone mention featuritis?); this
              apt moniker was lifted directly from the not-so-apt title of a
              very lethargic concert videotape.

            Really P.F.D.
              Another random style which represents a random combination of
              all of the above styles.

  KEY BINDINGS
       The essential key bindings are the same as for aint, though some
       additions have been made:

       J    Moves the current shape towards the left wall of the playing
            field.  In addition, this key moves the cursor upward while in
            the game options screen.

       K    Rotates the current shape in the right, or clockwise, direction.
            In addition, this key also toggles the selected option during the
            game options screen.

       L    Moves the current shape towards the right wall of the playing
            field.  In addition, this key moves the cursor downward while in
            the game options screen.

       I    Rotates the current shape in the left, or counter-clockwise,
            direction.

       Space Bar
            Drops the current shape (and, as a result, relinquishes all user
            control of it).

       Escape
            When first hit, it pauses the game:  if Escape is hit again while
            paused, it will abort the game; otherwise, play resumes.  In
            addition, pressing this during the game options screen while exit
            you from the game and into the operating system.

       B    Cycles the current block style through from New to Classic to
            Pumped Full of Drugs to Really P.F.D. and back to New, etc.

       N    Toggles the Show Next setting.

       S    Toggles the (non-functioning) Show Shadow setting.

       V    Increments the current level (and cycles back to level one).

       X    Cycles the current shape set through from Classic to Easy to
            Medium to Hard and back to Classic, etc.

  PLAYING FIELD SCREEN
       The playing field screen is divided into four components:

       Next window
            This window is located in the upper-left corner of the screen and
            displays, if Show Next is set, the next shape scheduled to come
            into play.



       Score window
            This window is located in the upper-right corner of the screen,
            directly opposite from the Next window, and consists of the
            following:

            Score
              The current number of points attained by the player.

            Value
              The point value (after all bonuses have been added; see SCORING
              for more information about this) of the current shape (i.e.,
              the one falling).

            Level
              The current level of play (see ADVANCEMENT for more information
              about this) and the current shape set.

            Rows
              The total number of rows which have been cleared during this
              game.

       Playing Field
            This is represented by the narrow pit running the height of the
            screen.

       Key Bindings window
            These are the two windows on either side of the playing field at
            the bottom of the screen; they provide a quick summary of the
            recognized keys to press and their assigned functions.

  SCORING
       The scoring is not complicated:  each shape has been given a value
       which was determined with the difficulty in placing and frequency of
       necessity being the governing factors.  This value is first multiplied
       by your current level and then bonuses are added on; these bonuses are
       awarded for not using Show Next, not using Show Shadow, having an
       Initial Height, etc.

       In addition, to the points which you automatically get for each piece,
       you also get points for dropping pieces (the higher you drop, the more
       points you get) and for, naturally, clearing rows.  Again, these
       points are multiplied by your current level and the above bonuses are
       then added in.

       Careful experimentation (or just looking at the source code) will
       allow you to determine the exact scoring algorithm.

  ADVANCEMENT
       In addition, egaint will automatically provide level advancement (and
       higher point values) for you after you clear a certain number of rows.

       The rule for this is:  after you clear your "x"th row, if "x" is a
       multiple of ten, you will be advanced (if you are not at this or above
       this already) to the "n"th level, where "n" is "x" divided by ten.

  CONFIGURATION FILE
       Egaint will save the current options (upon exit to the operating
       system) in a file called EGAINT.RC; the format is pretty self-
       explanatory upon inspection (i.e., if you don't understand this, don't
       bother with it).



       If egaint cannot find its configuration file, it will create one with
       the above default options.

  HIGH SCORE FILE
       Egaint will save the top fifteen high scores (along with other
       information about those particular games) into a file called
       EGAINT.REC.

       Again, if egaint cannot find its high score file, it will create one
       (this means you can delete the high score file at any time).

  UNRESTRICTIONS
       Egaint is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License, Version 1, as
       published by the Free Software Foundation.

       This program is distributed in the hope that it will be useful, but
       without any warranty whatsoever, without even the implied warranties
       of merchantability or fitness for a particular purpose.  See the
       accompanying GNU General Public License for more details.

       You should have received a copy of the GNU General Public License
       along with egaint; see the file COPYING.  If not, write to:

            Free Software Foundation, Inc.
            675 Massachusetts Avenue
            Cambridge, Massachusetts 02139

  PUBLIC DOMAIN AND SHAREWARE
       This program is not public domain nor is it shareware (or freeware, or
       whateverware):  note that I am not asking you to send me any fees or
       donations; also note that I have copyrighted this program.

       What does this mean?  Well, if you really drastically feel the need to
       send someone money because you enjoy egaint, donate it to a worthy
       cause, like (I think this is the correct spelling) Bruce Ritter's
       Covenant Houses or to the above Free Software Foundation or whatever
       you deem appropriate.

  SOURCE CODE
       For this particular version, egaint 0.93.05, you can obtain the
       complete source code (which has compiled correctly under Turbo Pascal
       versions 4.0 and 5.5, so I assume, by interpolation, it will compile
       under 5.0) at either of the below bulletin board systems:

            Tom and Sue McDermet's The Odyssey
            A carrier of the SmartNet network
            Morris Plains, New Jersey
            (201) 984-6574

            John Looker's Bandersnatch
            Phoenix Net #807/7
            Basking Ridge, New Jersey
            (201) 766-3801



       In addition, those of you with Internet access can reach me at the
       following address:

            erc@{mars,irss,inis}.njit.edu

       Please send any bug reports, modifications, or other assorted queries
       to the above address (if you can).  Also, I will be returning to
       college sometime in mid-August, meaning that later versions of egaint
       may not be posted on the above bulletin boards (being that they will
       be quite long distance calls for me); the e-mail address, however,
       should remain valid.

  REVISION HISTORY
       aint 0.0 (19-Apr-89)
            The original, bare-bones version of aint, it represented a
            falling shape game, though not much else.  Originally "thrown
            together" under the aegis of a wager.

       aint 0.1 (20-Apr-89)
            The first version of aint to adequately capture the concept of
            the genre it was trying to fit into (i.e., constructing rows)
            without possessing any really major bugs; it, in turn, lacked the
            "standard" features of generic computer games (scoring being one
            notable example).

       aint 0.2 (20-Apr-89)
            The alpha-test version of aint:  the really major bugs that were
            later discovered were fixed and "standard features" like scoring
            and levels were added.

       aint 0.8 (21-Apr-89)
            The beta-test version of aint:  pretty much rewritten, it used
            more reliable machine-independent timing functions and more
            realistic scoring functions while Show Next, Show Statistics,
            Initial Height, (a not particularly reliable implementation of)
            Tournament Games, a game options screen, and a true high score
            list were added.

       aint 0.9 (26-Apr-89)
            The pre-release version of aint:  a bug which caused a fatal
            system crash at peculiar moments was fixed while "debug features"
            like Smart Bomb, Polymorph, and Nuke were added.  This was the
            first version to be distributed (in a still quite limited and
            very lackadaisical fashion) beyond the initial test groups.

       egaint 0.9 (2-May-89)
            The initial version of egaint, it was written specifically for
            the graphics hardware which I had:  EGAs with 256K RAM connected
            to gas plasma screens capable of displaying only four shades of
            orange.  Originally conceived as a rewritten, portable aint
            (cough), it slowly (de-) evolved (due to laziness) into a
            hideously slow, flickery, EGA-only version.

            All the cheap bells and whistles present in aint (like the "debug
            features") were abandoned in favor of less tacky bells and
            whistles, like actually drawing the shapes in the Statistics
            window and not calling them funny names like "ell" and "lel."



       egaint 0.91 (2-Jun-89)
            A kludged version of egaint which provided support for more
            colors.

       egaint 0.92 (13-Jun-89)
            The "lost" egaint:  conceived as an idea on paper, this was the
            ambitious start of a complete rewrite of egaint.  This new
            version would add support for CGAs, bare-bone EGAs, HGCs, MCGAs,
            and VGAs.  In addition, the "flagship" version of egaint for EGAs
            with 256K RAM (and VGAs) would employ video page switching (in an
            attempt to remove the flicker).

            Unfortunately, this version is still that, an idea on paper.

       egaint 0.91.99 (18-Jun-89)
            Being too lazy (and busy) to actually rewrite egaint at this
            point and time, this revision provided a bridge between versions
            and included specific improvements conceived with egaint 0.92.
            The most important was the test of video page switching in the
            title screen (which, after several almost hilarious attempts,
            turned out great).  In addition, extended shapes were added (most
            of them quite ridiculous) and Show Statistics was removed because
            of this (there were too many damned shapes!).  Minor fixes
            included the ability to use Escape as an editing key while
            entering high score names and the removal of the wilder block
            styles.

       egaint 0.92.01 (18-Jun-89)
            Since so many of egaint 0.92's planned improvements were being
            implemented (and since I didn't feel like using hexidecimal
            version numbers), the revision number was advanced to reflect
            "0.92" status.  Shadowing, a feature seen in a UNIX
            implementation by Adam Margulies was begun (and latter scuttled).
            In addition, the use of Escape to pause, double Escape to quit
            was implemented, as was the ability to toggle options during game
            play.  Finally, Initial Height blocks were given their own
            special, muted-color style (in order to distinguish them from
            "real" blocks).

       egaint 0.92.02 (18-Jun-89)
            This version added true shadowing (though extremely flickery).
            In addition, an attempt to use video page switching in the actual
            game play was attempted and quickly abandoned.

       egaint 0.93.01 (24-Jun-89)
            The actual rewrite of egaint began with this version:  however,
            due to laziness (again), it turned into a half-rewrite, half-
            recopy.  On the other hand, all of the code which was rewritten
            turned out to be the only code which needed to be rewritten (at
            least in my opinion).  A more elegant video page switching scheme
            was implemented throughout the entire program, causing a
            noticeable performance degradation in the title and game over
            screens but (mysteriously) not in the actual game play itself.
            Shadowing code was, at the very last moment, commented out due to
            an inability to conceive of an elegant (or at least efficient)
            manner of implementation.

            Also, code was added that allowed the user to determine which
            shape set was currently in use.  In addition, the "New" block
            style was introduced, though not for game play, but rather for



            the title and game over screens.  Finally, the playing field
            screen was modified:  the Score window was moved over to the
            upper-right corner, and the Key Bindings window asexually
            reproduced into two.

       egaint 0.93.02 (25-Jun-89)
            This version consisted mainly of cosmetic improvements; the most
            notable was the addition of the "New" block style as an
            alternative to the "Old" (later renamed "Classic") block style.
            Also, the Score window was now updated after each toggle, making
            it less confusing.  Finally, the game over code was removed
            because the "New" block style was now being used within the game
            play.

       egaint 0.93.03 (25-Jun-89)
            The pre-release version of egaint:  it added minor features, like
            the "Pumped Full of Drugs" and "Really P.F.D." block styles, a
            new game over screen, a completely re-implemented extended shape
            set, the ability to rotate shapes the other direction (the I key;
            another improvement from Adam Margulies), and the "Value" entry
            in the Score window.  Finally, the high score file format was
            changed to note which version (out of the seemingly hundreds) was
            played for each score.

            This version also featured pre-release documentation, a hastily
            put-together mishmash of old aint documents modified for the
            egaint context.

            Distribution of egaint began with this version; a rudimentary
            serial number system (to allow the author, just for curiosity, to
            track the distribution path of a specific copy) was implemented.
            Unfortunately, distribution was limited to only bulletin board
            systems which were non-toll calls from Morris Plains.

       egaint 0.93.04 (30-Jun-89)
            A private maintenance revision of egaint, it tuned down the
            scoring and changed the name of the "Old" block style to
            "Classic."

       egaint 0.93.04x (7-Jul-89)
            This revision of egaint was the first to be compiled under Turbo
            Pascal 5.5 and marked the removal of the serial number system (in
            anticipation for the distribution of source code, which would
            render any sort of tracking useless).

       egaint 0.93.05 (13-Jul-89)
            The first release of egaint to fully comply with the GNU General
            Public License (though it and aint had been previously
            distributed without source code under terms and conditions set up
            by the Free Software Foundation), it provided for a configuration
            file and a name change (from "New More Order" to the author's
            real identity).  In addition, the documentation was rewritten
            into a UNIX "man"-like format.

       aint 0.90.01 (13-Jun-89)
            A fix-up of aint for inclusion in the egaint 0.93.05 package, it
            added some cosmetic improvements to the title/game options screen
            and reset the initial values for some variables; note that there
            are (major) scoring differences between egaint 0.93.05 and aint
            0.90.01.



  STILL TO COME
       Realistically, there still is a long way to go before the "whole"
       version of egaint 1 can be released; the following are only a few of
       the improvements which must be implemented before that release can
       become a reality:

         +  Support (via different versions, like cgaint, hgaint, mcgaint,
            etc.) for different graphics cards, including EGAs with only 64K
            RAM.

         +  An elegant (or at least efficient) implementation of Show Shadow.

         +  More efficient code, allowing egaint to be run on slower machines
            without noticeable performance degradation.

         +  Placement of code into separate modules, allowing for easier
            maintenance.

         +  Microsoft Mouse support.

       In addition, the following ideas are being considered:

         +  Background screens:  I've been considering loading .GIF screens
            onto the background so that users aren't forced to gaze at low-
            resolution caricatures of Russian life.

         +  A different game premise (if you ask me, I'm kind of sick of the
            falling shape genre of computer games).

  CREDITS
       Borland International's BGI (Borland Graphics Interface, I believe)
       system was used for the graphics and font libraries of egaint.

  SEE ALSO
       TETRIS, NYET, Son of TETRIS Project (SOT), etc.

  TRADEMARKS
       All brand and product names are the trademarks or registered
       trademarks of their respective holders.

       Whew!


















                          Copyright (C) 1989 Eric Ng