===================================================================
+-----------------------------------------------------------------+

                     XXXX   XX     X   XXXXXX
                    XX   X  XXX   XX  XX    XX
                    XX      XXXX XXX  XX    XX
                    XXXXX   X XXX XX  XX    XX
                     XXXXX  X  X  XX  XX    XX
                        XX  X     XX  XX    XX
                    X   XX  X     XX  XX    XX
                     XXXX   X     XX   XXXXXX
                                          XX
                                           XXX
 v1.1.0

 For the TI-92 Plus, and TI-89
+-----------------------------------------------------------------+
===================================================================

 SMQ is a side-scrolling adventure for the TI-89, TI-92 Plus, 
 and TI-92 II graphing calculators.  SMQ was written entirely in 
 MC68000 assembly language.

 I have made an official SMQ web site.  Please look here for new 
 versions, screenshots, and level sets:

 http://mf.calc.org/smq/

 SMQ may be distributed freely, but please do not alter or rename 
 the files.  Also, do not separate this document from the game.

 Please read the disclaimer information at the bottom before 
 using this program.

-------------------------------------------------------------------
Requirements
-------------------------------------------------------------------

 * A TI-89, or TI-92 Plus graphing calculator.

   NOTE: A TI-92 II version is availible on the SMQ web site.
 
 * A link cable (such as TI-Graph Link)
 
   NOTE: SMQ is an assembly language program. It cannot be typed in 
   like regular "TI-BASIC" programs.

-------------------------------------------------------------------
Installation
-------------------------------------------------------------------

1) Install DoorsOS II (2.00) or compatible.

   NOTE: Please refer to the documentation included with DoorsOS 
   for instructions on how to complete this step.
   
2) Send the following libraries to your calculator:
   
     graphlib
     userlib
     hufflib

   NOTE: These files are included with DoorsOS.  Make sure you are
   using the most recent versions.

3) Send the SMQ files to your calculator:

     smq.89z
     smqlib.89z
     smqlvl.89s (or any other level set)

     NOTE: Even though they have a .89x extention, these files will 
     work on both the TI-89 and TI-92 Plus.  You can rename them if 
     you want, or simply select "All Files (*.*)" under "List Files 
     of Type" in the send window of the TI-Graph Link software.
   
4) To play, enter "smq()" at the command line (without the quotes), 
   or run smq from a shell.

INSTALLATION NOTES:

- YOU MUST HAVE THE MOST RECENT VERSIONS OF THE SHELL AND 
  LIBRARIES IN ORDER FOR THE GAME TO RUN CORRECTLY.  SMQ may 
  not work properly with older versions of the libraries.

- You must have up to 35-40k free RAM before executing the 
  program. The exact amount depends on whether grayscale is enable, 
  and whether you are running the program from a shell.

- It is possible to run the program from archive memory, but 
  you'll need enough free RAM for the program to be unarchived, 
  in addition to the above requirement.

- The purpose of smqlib is to store save game and configuration 
  data in a separate file so that the main program can be archived.

- Smqlib must not be archived, and you may need to keep it in 
  the MAIN folder, depending on the shell.

- A set of SMQ levels must be on the calculator in order to 
  play the game.  One set, smqlvl, is included.

- Level sets must be unarchived when you try to use them.  
  They may be in any folder.

- All level sets will work on either a TI-89, TI-92, or TI-92 Plus, 
  regardless of what calc they were made on.  However, due to the 
  differences in screen size, a level made for the TI-92(Plus) 
  may play much differently on a TI-89, and vice-versa.  Also,  
  the header of TI-89/92(Plus) level sets must be changed slightly 
  in order for TI-Graph Link for TI-92 to accept them.

-------------------------------------------------------------------
Main Menu
-------------------------------------------------------------------

  These selections are available from the main menu:

  * New
      - Starts a new game.

  * Continue
      - This will start you from either the last continue point 
        you started at, or the beginning of the last stage you 
        were on.

  * Options
      - Opens the options menu.

  * Load
      - This allows you to load a level set.

      - Sets of SMQ levels are stored in external string variables.  
        The default variable is "smqlvl", and the default folder 
        is "main".  You can specify other worlds by choosing Load 
        from the main menu. This will bring up a simple browser.  
        Use up and down to cycle through the selections.  
        Left and right are used to switch between folders and files.

-------------------------------------------------------------------
Options
-------------------------------------------------------------------

 In addition to the options, you'll also find the credits and
 version number on the options screen.  Here are the available 
 options:

 * Speed (0-15)
     - Game speed.  1 is slowest, 15 is fastest. 12 is default.

 * Exploding Bricks (On/Off)
     - Choose whether bricks explode when you breaks them. 
       If the game slows down when there are many objects on the 
       screen at once, try setting this to off.

 * Grayscale (On/Off)
     - Toggle grayscale.  If you prefer speed over graphics, 
       turn grayscale off.

 * Threshold (1-64)
     - This defines the height at which vertical scrolling takes 
       place on the TI-89.  If you don't like the default setting, 
       try playing with this variable.  40 is default.  This 
       setting is not accessible on a TI-92(Plus).


-------------------------------------------------------------------
Controls
-------------------------------------------------------------------

 In order to accommodate the different key layouts of the TI-89 and 
 TI-92's, I tried to select the keys that seemed most appropriate 
 for each calculator.

"A" Button:
    TI-89 - [2nd]
    TI-92 - [F2] or [F5]

    Jump & Swim 

"B" button:
    TI-89 - [<>] (Diamond)
    TI-92 - [F1]

    Accelerate & Fire

Down:
    Crouch & Enter vertical pipe

Up / Down:
    Manually scroll up or down. (TI-89 only)

Right:
    Go into a sideways pipe.
  
APPS:
    Push once to pause, again to resume.

MODE:
    Push to toggle the score bar on and off.
  
ESC:
    Quit the game.
  
[+] / [-]:
    Adjust the LCD contrast.

-------------------------------------------------------------------
Game Notes
-------------------------------------------------------------------

 * Domino Effect:

   You can get many points by using the domino effect.  There are 
   three ways to do it:

    - Jump on multiple baddies without touching the ground.
    - Hit multiple baddies with the same turtle shell.
    - Kill multiple enemies while invincible.

   When killing enemies using any of the previous three methods, 
   the following scale of points is used:

   100, 200, 400, 800, 1000, 2500, 5000, ?

 * The high score is reset whenever you load a level set.  Also, in 
   order for a high score to register, your game must end.  That 
   means you must either lose all of your lives, or beat the game.
   
 * Running before you press down to duck might allows you to
   fit under tight places when you're big.
 
 * In the water worlds, there are deep holes 
   in the seafloor will try to suck you in.

 * Power-ups can be found in bricks as well as "?" boxes, 
   so break as many bricks as you can.

 * Greed Effect:
 
   Don't get greedy when it comes to points or lives, or you may 
   go back to zero!

-------------------------------------------------------------------
FAQ's
-------------------------------------------------------------------
 Q: When I try to run SMQ, the screen just flashes, or nothing 
    happens.
 A: You probably have an old version of the assembly shell on your 
    calculator.  First download the newest version (links to them 
    are on my web page), then reset your calculator and completely 
    reinstall the shell.  While you're at it, download the newest
    libraries as well.
    
 Q: I am trying to run SMQ archived and I get an "out of memory" 
    message, yet I have a lot of free memory.
 A: When you run an "archived" program, the program is first copied 
    to RAM before it is run.  For this reason, you need enough 
    memory free for the program to be copied, in addition to the 
    regular requirements.

 Q: SMQ says I am out of memory, and my calculator crashes a few 
    moments later.  I know there was plenty of free RAM.
 A: You probably have an outdated graphlib.  Older versions of it 
    returned the wrong value when enabling grayscale.  Download 
    the latest version of DoorsOS and use the version of graphlib 
    included with it.

 Q: SMQ crashes and I am using PlusShell.
 A: PlusShell has a bug concerning the heapalloc function that 
    causes programs to crash if a large enough block of memory
    is not availible.  There's nothing I can do about this, 
    its something that is wrong with the shell.  DoorsOS seems 
    to have fixed this problem.

 Q: I sent a level set to my calc, but it doesn't show up in the
    menu.
 A: Either you have an outdated version of SMQ, or the level set 
    was made for SMQ v0.9.9 or earlier, in which case it must 
    be converted. In SMQ v1.0, major changes were made to the level 
    set format that made it implausible to maintain backwards 
    compatibility.  See the SMQ webpage for details about 
    converting older level sets.

 Q: How can I speed up SMQ?
 A: The power of the batteries seems to make a big difference, so 
    try replacing them regularly.  Also, try turning off grayscale
    through the options menu.  I have optimized many of the 
    routines so that they will be faster when grayscale is off.  
    Although some graphic detail is sacrificed, I think it is 
    well worth the tremendous speed increase.
 
 If you think you've found a bug, please send me an e-mail 
 describing the bug.  Include all relevant information such as what 
 calc you are using (89, 92 Plus, 92 II, etc.), what shell (Fargo, 
 DoorsOS, PlusShell) and what you did to make the bug happen.  I 
 usually need to replicate the bug before I can fix it, so any 
 information you can provide will help.  Please send bug reports to 
 dbarnes@calc.org. Thanks!


-------------------------------------------------------------------
Disclaimer
-------------------------------------------------------------------
 There is always the risk that an assembly language program may 
 cause your calculator crash or freeze.  While it is unlikely 
 (impossible?) that a program can cause permanent damage to the 
 device, I cannot be held responsible for loss of data, 
 damage to your calculator, etc.  Use this program at your own 
 risk.  If your calculator crashes, check your owners manual for 
 instructions on how to recover it.

 The source code for this game is completely original (with the 
 exception of shared library routines) and was written without 
 knowledge of or access to the source code for any NES game.

 This program is NOT public domain, but it may be distributed 
 freely as long as it is not altered and this document 
 accompanies it.

 This program is intended only for private, non-profit, and 
 educational use.  Any other use is strictly prohibited.  
 
 TI-Graph Link is a trademark of Texas Instruments.  This program 
 is not endorsed by Texas Instruments, nor am I affiliated with 
 them in any way.

-------------------------------------------------------------------
Latest Changes
-------------------------------------------------------------------

- ver 1.1.0
  03-30-2000
    * Changes:
      - Attempted to improve the physics.  They should be more 
        responsive now.
      - Addressed some collision detection issues.  Notably, 
        getting through holes in the floor and ceiling should
        be easier now.
      - Cleaned up the source code considerably.
      - Fixed a bug where you would get stuck on corners while 
        ducking.
      - Fixed a bug where collision detection would sometimes 
        get screwed up if you went down a pipe while ducking.
      - Fixed a bug in the sprite clipping routine.
      - No more PlusShell version.  To make PlusShell people 
        happy, though, I am now using hufflib instead of ziplib.
      - There might be a few other changes too...

-------------------------------------------------------------------
Special Thanks To...
-------------------------------------------------------------------
      - Xavier Vassor and Cedric Couffignal for DoorsOS.
      - Rusty Wagner for PlusShell and Virtual-TI.
      - Marc Teyssier for ziplib.
      - David Ellsworth for Fargo.
      - Jimmy Mrdell for hufflib and sprmaker.
      - Gareth for files.txt.
      - Dimension-TI and Adam Berlinsky-Schine for web hosting.
      - Thomas Corvazier and Pierre Henninger for Street Fighter 2.
  
  Many thanks to all who have supported SMQ during its development!
  - Don