spryjinx
========

BETA version - 0.92

copyright 1997 (see bottom notice)

concept/game engine by jason m. heim
(email:  sikobabel@compuserve.com)
(url:    http://www.geocities.com/SiliconValley/Lab/2618)

board editor and sprite editor by neil johnson

XMS routines written by steven don
(email:  shd@geocities.com)
(url:    http://shd.home.ml.org)

sound routines adapted from those written by steven don

last update 12/20/97.


NOTE:  the simplicity of this game would make it easy to shanghai the
concept, and knowing that there are much better programmers than me out
there, i know someone could write a better version.  all i ask is for
some credit, and perhaps the opportunity to test/help with your version!


description of files in sjzip.zip:
==================================
spryjinx.exe - the main game executable
default.spr  - this holds the images for the game
readme.txt   - this file
dat/         - directory, holds game boards
wav/         - directory, holds .wav files for sound
spryted.exe  - a simple editor for the images in the game
spryted.txt  - read this for info on how to use the sprite editor
sjbe.exe     - the spryjinx board editor
sjbe.txt     - read this for info on how to use the board editor


the story:
==========
the game is very simple in concept.  does anyone out there remember an old
atari 2600 game called 'quick step'?  probably not, at least i haven't met
anyone other than my brother who does.  spryjinx is the result of what started
as an attempt to bring back what i consider a classic.  then i got 'creative'
and made it my own by adding a lot of my ideas to it.

it also has some similarities to 'q-bert' which you may or may not remember.
this game is just about as simple, but has all the fun of head-to-head play.

you can play against a computer opponent, but i find the game most addictive
against another player.


menu screen:
============
at startup, you will be presented with a menu screen that allows you to
choose certain play options:
- start
- number of players (1 or 2)
- which board you will play (all the boards are in the dat/ directory)
- difficulty of the computer player (in a one-player game)
- turning sound on and off (if sound is successfully configured).
- quit

at the bottom of the menu the available keys are described.
use the up/down (w/s or 8/2) keys to move the little pointer guy.
use the left/right (a/d or 4/6) keys to select or change options.  you can
also use the 'enter' key to select or change options, and you can use Esc
to quit.

the default board is called *random*.  this is not stored in the 'dat'
directory, it is generated on the fly.  it will be different every time
you choose it.  the other levels are pre-designed and will be the same
every time you choose them.  when the board editor is made available
you will be able to design your own custom levels!


how to play:
============
spryjinx is a head-to-head game.  there are two ways to win:
1 - score the most points.
2 - kill your opponent 3 times.

the game is set on a grid of small platforms.  there are two players, one on
each top corner to start.

when the game begins, the platforms begin scrolling downwards.  when a row of
reaches the bottom its platforms are destroyed.  a new row will float in the
top of the screen to replace them.


LESSON 1 - stay alive

the players must hop from platform to platform to avoid being destroyed along
with the bottom row.  if a player is standing on a platform when it is
destroyed, the player will die and a new player will jump out to replace him
(if there are any lives left).

there will be gaps in the grid where you won't be able to jump.  always be
looking ahead so that you don't get stranded with no way to continue upwards!

MOVEMENT KEYS:

player 1:
w = up
s = down
a = left
d = right

player 2:
8 = up
2 = down
4 = left
6 = right

(use the Esc key to pause/exit a game early)
(in a one-player game both control sets will control player 1)

you can use joystick(s).  spryjinx will look for joysticks at startup and
go through a calibration routine if you want to use them.  the joysticks
also work at the menu screen.


LESSON 2 - coloring the grid

when a player hops onto a platform, it will change to his color.  if both
players are on the same platform, it will be neutral-colored until one hops
off of it.  whoever leaves the platform last will leave the platform in his
color.  there is an exception:  a 'painted' platform cannot have its color
changed.  painted platforms are bright white, while regular neutral platforms
are grey.


LESSON 3 - scoring points

each platform has a number on it.  this is how many points the platform is
worth.  when a pad is destroyed, the points will go to the player who colored
it.  i.e. if it is green, the green player gets the points.  if it is
blue, the blue player gets the points.  if it is neutral, no one gets the
points.  simple!


LESSON 4 - get powerups for additional abilities

a green/blue paint bucket:
this is a little grey can with a 'p' on it.  it will give you the ability to
make a platform 'painted' in your color.  while you have this powerup any pad
you color will be brighter, and will remain your color until it is destroyed.

a lightning bolt:
this will make you twice as fast as you normally are for a short time.

a glue bottle:
this little white bottle with a 'g' on it will breifly give you the ability
to glue the other player to a pad if you catch him.  he will be stuck for a
while struggling in a puddle of the stuff, leaving you free to roam
around changing many pads to your color.

a bomb:
this powerup will breifly cause all of the platforms you leave to be
immediately destroyed.  points will be tallied for these platforms.

a magnet:
this powerup will allow you to move a platform into a vacant place on the
grid.  for instance if you are trapped with no way to get to higher ground,
you can use this to carry a platform across a gap to safety.

when you pick up a powerup it immediately goes into effect, and you will see
a red time bar on the scoreboard indicating how long you have to use it.  you
can only have one powerup at any time.  if you have a powerup and you hop
onto another, the new one replaces the one you have.


LESSON 5 - platforms without numbers

POSESSED PLATFORMS - these platforms move about if they have room.  you can
tell which ones they are - they have a little red devil where the number
should be.  these platforms add an interesting element to the game - they
can be a blessing or a menace.  they don't stay in place very long, so be
careful when you hop to them, they may move out from under you and let you
die!  however, they are also the most valuable platforms - worth 8 points.

MYSTERY VALUES - some platforms now have a '?' where the number should be.
they can be worth anything from 1 to 7 points.  when a player hops onto
one of these platforms, its value is revealed.


LESSON 6 - killing your opponent

in this game there's no direct way to kill your opponent.  you have to take
away the ground he stands on, or strand him with no way to continue upwards.
to do this, you'll have to do some fast thinking, plan ahead, and take some
risks.

examples:
- get some glue and stick your opponent near the bottom.  he will die with the
bottom row.

- use the magnet to rearrage the platforms so that he will be forced out with
the bottom rows.

- use the bomb to destroy your opponent's path upwards.  he will die with the
bottom rows.

- use the bomb to destroy the platform your opponent is standing on or jumping
to.  by default the players will not jump where there is no platform, but if
he jumps to a platform that gets destroyed before he gets there he will die
when he lands.

- use the magnet to move away a platform your opponent is jumping to (my
personal favorite).


LESSON 8 - how to win

the levels are NOT infinite, and eventually will end.  if both players survive
to the end, the winner is the player with the most points.  if this the same
then the round is a tie.

if one player loses all his lives, the other player wins regardless of who
has more points.

if both players lose all their lives, the round is a tie.

you will see the current wins and winning streaks on the menu screen.



configuration notes:
====================
originally this came as a self-extracting executable but geocities
won't allow executables on its site.  so this is now packaged as a zip
made by 'pkzip'.  it has subdirectories ('wav' and 'dat'), so make sure
that whatever you use to unzip this made these subdirectories, and put
all the .wav's and .dat's where they belong.

recommended MINIMUM configuration:
486 33 DX computer
SVGA monitor/adapter
8 megs of ram
windows 95 (if you try it in plain dos, please email me with results)

i have not yet tested this game under old dos.  it runs fine in windows 95,
just run 'spryjinx.exe', preferably by double-clicking it or adding a shortcut
to it on your start menu.  if you run it from a dos prompt, i recommend
closing the dos prompt after running the game if you plan to do other things,
because there are problems with XMS that i haven't solved yet.

it runs a little better if you reboot in MS-DOS mode, but only bother if the
game runs really choppy in windows.  on a pentium or higher i don't think
you can see the difference.

i have gotten this game to run just fine in os/2 from a dos full screen
session (if you do it from a dos window, it will use a tiny window for play
that has a lousy refresh rate).

tested under windows NT 4.0 - works fine. (thanks to greg mattes)

it will look for game files in the 'dat/' directory and sounds in the 'wav/'
directory.

this game supports soundblaster sound.  i'm not certain yet which specific
cards will work, but it works fine with my soundblaster pro.  it also worked
with my dad's soundblaster AWE 32.  again, please email me with results from
other cards!

this was written on a 486 33 DX (am i in the dark ages now or what?), and it
should be able to keep up on any machine that is a 486 25 SX or faster,
although i make no promises.  the game is very playable on my computer,
but it does have to skip frames to keep up if lots of sounds are played
at the same time.  on a pentium or higher it looks great.  i have
16 megs of ram, if you have less please let me know if the game loads the
sounds and background, or even runs.

if it runs choppy, try closing other programs, and if you are using sounds
try turning them off at the menu screen.

the sounds are 8 bit 22kHz mono sounds.  you can add sounds of your own by
putting wav's in the 'wav/' directory, replacing the sound that you want to
change.  the sounds must be smaller than 64k and be of the same type or they
may give strange results.

the sounds are stored in XMS during the game, if spryjinx cannot find or
allocate the space for the sounds it will not play them.

i haven't added music yet - if you really want some use your stereo!

the images for the game are loaded from the file 'default.spr'.  the full
version of this game will include a sprite editor that will allow you to
change the images for the game.

the boards are kept in the 'dat/' directory and have a '.dat' extension.
the full version of this game will include neil johnson's board editor.
there are not many pre-made boards available at this time, but there
is a *random* board that is made on the fly.

this game works best with the 'gamepad' type of joysticks, but should
support any standard kind.  i have not tested it with gravis yet, if anyone
out there has one please let me know if they work...


known problems:
===============

if you run this game from an ms-dos prompt, when you are done playing exit the
prompt or you may run into an XMS conflict.  i'm looking into a fix...

after long periods of game play the joystick calibration may drift off-center.
restarting the game will run the calibration routines again.

if you unplug the joystick in the middle of play (and you activated the
joystick at startup), the game will suddenly run very choppy because it
isn't getting the feedback in time from the joystick anymore.  you should
quit out and restart.

the game has not crashed uncontrollably on me in quite some time now (knock
on wood), meaning that i've been lucky and have trapped my bugs fairly well,
so if the game does someting unexpected, you should be able to alt-tab or
control-esc out (in windows 95) and kill it from there.

in the unlikely event that the game crashes with a signal it couldn't handle,
you may need to reboot because i have modified the handling of interrupt 0x08,
the cpu clock tick, and 0x09, the keyboard interrupt.


if anyone is interested in becoming part of the project, let me
know.  i could use some better sprites, networking capability,
and a hodgepodge of other things to make the game better.
music would be nice, too.  i've made s3m modules in the past
and could use an easy-to-link-into-my-existing-code player.


SPECIAL THANKS TO:
==================

neil johnson - first for just beta testing, second for making a board
editor, and third for fixing up my sprite editor.

steven don - for his extremely well written code for supporting soundblaster
sound and XMS routines.  i couldn't have finished this without them.  if you
use a borland compiler and need help coding your game this his site is
definitely a must-see (http://shd.home.ml.org).  also thanks for beta-testing.

and all the other beta-testers.


more to come... email me with bugs/suggestions (sikobabel@compuserve.com)
and thanks for playing!  also feel free to contact me if you have
questions about how to do some of the things in this game.



!!!!!!!!!!!!!!!!!  I M P O R T A N T !!!!!!!!!!!!!!!!!!!!

NOTICE:  THIS GAME MUST NOT BE DISTRIBUTED FOR PROFIT BY ANY PERSON,
INCLUDING MYSELF OR THOSE WHO HELPED ME PROGRAM IT.  I AM NO LONGER
A STUDENT, I AM AN EMPLOYEE OF THE IBM CORPORATION AND THEREFORE ANY
PROFIT INCURRED FROM DISTRIBUTION OF THIS PACKAGE MAY BE SUBJECT TO A
LAWSUIT BY IBM AGAINST THE PARTIES INVOLVED.  I HAVE RECIEVED
PERMISSION FROM MY MANAGER TO USE MY NAME WITHOUT IBM AS THE DESIGNER
AND DISTRIBUTOR ON THIS README AND IN THE CODE AS I HAVE USED NO
IBM RESOURCES OR TRAINING TO CONCEPTUALIZE, DESIGN, CODE, COMPILE,
LINK, OR PACKAGE THIS GAME FOR DISTRIBUTION.  THIS WAS AGREED TO
UNDER THE PREMISE ABOVE - THAT THERE BE NO FINANCIAL MOTIVE THAT
MAY BE CONTRARY TO THE INTERESTS OF IBM.  THIS GAME WAS MADE ON
MY 486 33 DX GATEWAY 2000 COMPUTER, WITH BORLAND C++ COMPILER
VERSION 4.02 (DISTRIBUTED BY SAMS PUBLISHING IN THE C PROGRAMMING
STARTER KIT VERSION 2.0).  BOTH ARE OWNED BY MYSELF AND HAVE NO
AFFILIATION WITH THE IBM CORPORATION.

LIKEWISE, AS THIS GAME MAY BE FREELY DISTRIBUTED NEITHER I NOR
IBM ASSUME ANY RESPONSIBILITY FOR ANY MISUSE OF THE CODE OR
OBJECTS, NOR ANY MALFUNCTION OR OTHERWISE HARMFUL SIDE EFFECTS
OF THIS GAME.  ABSOLUTELY NO WARRANTIES ARE EXPRESSED OR IMPLIED.

translation:  you got this for free.  use at your own risk.  don't
use for profit.


whew, now with that nasty legal stuff out of the way, enjoy the game!

