Matrix  Version 1.1  Order Information
Copyright(c) 1995 Nocturnal Creations
	   
Nocturnal Creations
P.O. Box  138
Springfield,  MA   01151
United States of America

FAX (413) 543-9181
Voice (413) 543-3237
Compuserve -74734, 2203
AOL - Tim Truman
Internet - TimTruman@aol.com

<<  Table of Contents >>
-------------------------
<1> About the code 
<2> Routines Explained 
<3> Current Extras
<4> Order the code !
<5> It's Possible
<6> Coming Attractions

                      
----------------------------------
<1>>> About the code 
----------------------------------

Matrix is written Microsoft's(R) QuickBASIC 4.5 and MS-DOS Qbasic.
Matrix uses advanced programming methods and demonstrates QuickBASIC's 
ability to make a high-quality commercial program. 

All the Matrix code is native QuickBASIC code. You won't find any of
the code hidden in libraries or in cryptic assembly code. It's there to see.
It's also very modular. Matrix currently has over 60 sub routines that
make it tick. It's modular nature makes it very easy to follow. And easy
to reuse in your own programs.

Speaking of reusable code, Matrix is full of it. Routines like "DetectVGA"
"FreeDiskSpace", "LoadPCX" , "ShellToDOS", "GetFileName", "TimeIsUp",
"Mouse" and "Joystick" are a few of the routines that will be usefull in
many situations. Besides these general routines that you can just cut out and
use in your own projects, you'll find concepts in the core routines of
Matrix that will apply in a wide variaty of situations. 

If your a beginner to QuickBASIC the Matrix code is a excellent opportunity
to help you learn the language. Nothing teaches faster then well written
readable code. If your not? Matrix provides useful well written
routines and code segments that that you will find yourself using
again and again. 

If you program in QuickBASIC or Qbasic this is an excellent oppurtunity
to get a hold of some great code. And the price is so inexpensive you
just can't lose.

------------------------
<2>>> Routines Explained 
------------------------

Here some of the routines the Matrix uses :

DetectVGA ()
  No fail detection routine for VGA.

FadePal(first,last,mode)
  Fade in or fade out screens or just portions of the palette.
  Uses VGA hardware. Very fast.

FileExists(filename)
  Returns true if the requested file is found. Avoids "File not found"
  errors. Uses DOS.

GetFileName(Filespec$)
  Drops a menu that contains all the filenames that match the file
  specification. Returns the file name selected.

Getpath()
  Returns the current drive and directory in ASCIIZ string form.

HexToLong ()
  Converts hex numbers in string type to long integer type.

InputText(x,y,length)
  Set the cursor any where on the screen and limit the input length. Saves
  background information during editing. Used on highscore screen among
  other places.

JoyStick(mode)
  Fast, stable joystick routine. If you have ever used the STICK()
  function in QuickBASIC you know how useless it is. Although this one
  is coded for Matrix it can be modified easily. 

LoadPcx()
  A solid 256 color 320x200 .PCX loader. Sends .PCX data directly to
  video memory. This is about as fast as native Basic code will do it.

Mouse (mode)
  Access all major functions of the mouse.  Uses DOS.

P5x7font(x, y, text$, color) 
  Prints text using specified color anywhere on screen using 5x7 
  font set. Easily modifiable. Original font sets can be created. 

PalRegInfo(mode)
  Changes or sets a single attribute color. Uses VGA hardware.

Parser()
  Calls to this routine provide information about command line parameters.

ReturnEvent()
  Maps input from any device to key codes so a single call can return
  any occurance of device input. For instance, pressing the right mouse
  button or pressing right on the game pad returns the same number as
  pressing the right key on the keyboard.

TimeIsUp(timers,time!)
  Returns true when specified time in specified timer has passed. 
  Extremely usefull in loops.

ScrlLogo ()
  Scrolls the matrix logo on the playscreen while in a paused state.
  Directly manipulates GET arrays.

ShellToDOS()
  Invokes a DOS shell. This is not a big deal inside of a game, unless the
  boss comes around, but it does allow navigation of DOS and returns
  to the original path and directory upon return to the program.

Stay(delay!)
  A self calibrating delay routine accurate about .005 of a second. Delays
  of smaller increments are realized however because it adjusts itself to the
  speed of each machine. Thanks to this routine Matrix runs close to
  identical on each CPU it encounters.

Viewcredits()
  Displays the scrolling credits screen. Uses PEEK and POKE to
  manipulate GET arrays. Demonstrates simple decoding and encryption
  while acessing a binary file at a byte level.

--------------------
<3>>> Current Extras
--------------------
If you register with us well also send you any little programs we have
around. Every now and then we fool around with a small idea and it
turns itself into a cool little program. A couple have been released and
you may recognize them. Here's some of the ones you'll get:

Bbounce1.bas    - Perpetual bouncing box
Bbounce2.bas    - Like Windows mystify
Crytals1.bas    - Select Crystal like growth patterns   (released)
Engage.bas      - Side scrolling starfield simulation
Hpntize.bas     - Mesmerizing screen savers
Pie1.bas        - Fooling around using circle to make pie chart
Pie2.bas        - About the same as above
Tbounce1.bas    - Very nice screen saver program       (released)
Terain1.bas     - Our first terrain generator
Terain2.bas     - Improved
Terain3.bas     - Cool - looks like mountains scrolling by
Ter@star.bas    - Add terain3.bas and Engage.bas together - Nice
Vga1.bas        - Demonstrates palette fading 
Vga2.bas        - Palette cycling 
Keyboard1.bas   - Demonstrates getting key presses from buffer
Keyboard1.bas   - Handles Alt and Ctrl keys
Keyboard1.bas   - Changes typematic rates through hardware
Keyboard1.bas   - Change the state of keyboard leds
Leditor.bas     - Text field editor using MID$

------------------------
<4>>> Order the code !
------------------------

The source code price is $4.00 dollars. You can send a check or money
order to :

Tim Truman
110 Homestead Ave.
Springfield MA, 01151
USA

Include your e-mail address with your order. Add $2.00 dollars to cover
shipping and the disk size you request. Otherwise I'll send it e-mail. 

Questions and comments are welcome :

Compuserve -74734, 2203
AOL - Tim Truman
Internet - TimTruman@aol.com


Thanks for your order !


-------------------
<5>>> It's Possible
-------------------
I have had a few requests to rewrite Matrix in PowerBasic. If you would
like to see Matrix written in this or any other language please let me
know. If enough requests come through it will be done.

------------------------
<6>>> Coming Attractions
------------------------

There are a few planned additions for the next release of Matrix. 
Background graphics behind the playpit and two players at once.   
There will be more piece styles to choose from too thanks to a great
new graphics editor planned to be released as shareware.

Nocturnal Creations is also working on some fresh games for the QuickBASIC
language. QB Defender is nearing completion. A scrolling shoot-em up
with Adlib support. If you register you get a sneak peek of this program.
Another project I'm not allowed to mention by name is under way. It
features tile based VGA graphics and from the looks of things the beginnings
of a great adventure game. I can't wait ! 

