Bloxed !Help file

Version 1.11

!Bloxed - a Tetris variant (c) Steven Singer 1991-96
----------------------------------------------------

This file last updated 13 August 2001 [web version edited 12 Februrary 2003].

Introduction and Gameplay
-------------------------

!Bloxed  is  a  variation on Tetris. It has lots of extra features. Your best
bet is to load it up and watch the demo.     

Quick precis, pieces fall from the top of a well. Each piece consists of four
blocks  stuck  together. You can move the pieces left or right, and turn them
to  position  them  as  desired.  You  can  also  pull  them down to speed up
placement.  If  you  complete  an  entire  row  across  the well, that row is
removed,  and  the lines above fall down. The game ends when the pile reaches
the  top  of  the  screen (OK, not quite accurate, but good enough for simple
instructions).

The  rate  at  which the pieces fall down accelerates as the game progresses.
The  rate  reaches a local maximum at level nine. At level ten it slows down,
and  then  gradually  speeds back up so that level eighteen is the same speed
as level nine, and level nineteen is a touch quicker. Then at level twenty it
slows  down  slightly,  then  it  speeds  back  up  over levels twenty-one to
twenty-three.  Level  twenty-three is the same speed as level nineteen. Level
twenty-four  is  a touch faster. Levels twenty-five to twenty-nine follow the
same speeds  as  levels  twenty  to  twenty  four.  If  you  get  past  level
twenty-nine  it starts getting nasty. At level fifty it starts getting really
nasty.  Levels one hundered and thirty-nine upwards are identical. If you can
make it to level one hundred you're either cheating or some kind of genius.

The  extra  features are power blocks, line passing in multi-player mode, and
the nasty things at level thirty upwards :-).

Some  pieces  that  fall contain a power block one of 4 F S B 16. If the line
that   the power block is placed in is completed - either by that piece or by
another   later -  the power block is activated (if more than one power block
would be activated, only one is). The effects are as follows:
  
4)  (Four  Lines)  Removes  alternate  lines  from  the highest line with any
    pieces in, to a maximum of four lines.
    
F)  (Filler)  Produces  a little alien, which may be guided with the left and
    right  keys and encouraged to drop a block with the turn key. You can use
    it to complete partially finished lines.
    
S)  (Shooter)  Produces a satellite/gun, which may be controlled in a similar
    way to the alien, which can shoot blocks.
    
B)  (Bomb)  A  bomb appears which can be guided as it falls. When it lands on
    the  blocks, it explodes doing a fair amount of damage. (Hint, the damage
    may  look  variable,  but  it  isn' t.  Experimentation  should  help  in
    determining placement for maximum effect).
    
16) (16 ton weight) A 16 ton weight (a la cartoons and Monty Python) appears,
    it too can be guided. When it lands, it removes 3 columns of bricks.
    
In  multi-player mode, when either player completes more than one line with a
piece,  the lines removed (minus the piece just put in them), are sent across
to  the  next  player, where they are inserted at the bottom of his/her well.
The  piece  the  player  was trying to position at that time gets vapourised.
Lines  are  passed in a circle avoiding dead players. The game continues till
only one player is left standing.

This  game  is  really  meant  to be played two player. It's mean. Due to the
cunning  fact  that  player 1's keys lie near the '2' and player 2's near the
'2' on the numeric pad, both players can restart a game for revenge.

On  an  A5000,  I have sometimes noticed keyboard clash on the left and right
keys  of  player 1. Redefining them to 'Q' and 'W' cleared this. (I hope it's
keyboard  clash,  if  not,  my playing is worse than I thought). You may also
need to watch for keyboard clash on RiscPCs.

Player  3's  keys  are badly placed. My the time I added the 3 player option,
the other players' keys were already fixed. Use 'K' to redefine the keys.
                                                     
Unfortunately,  I've  not added any music (does anyone want to write some ?).
My  suggestion  is  grab  the  nearest  tape  deck/hi-fi/CD  player  and play
something suitable.

One  final  hint,  when  using  a  filler,  consider the possibilities of not
removing all the lines. Remember, you can see what the next piece is.

Oh yeah, to quit the game hit 'Esc'.

Notes For 1 Meg Machines
------------------------

!Bloxed  should  just  about  run  on  a  1  Meg machine. I can only give the
standard  advice  if  you  have  trouble,  that is reboot your machine with a
CTRL-RESET  and  try  again, and if that fails do a CTRL-RESET whilst holding
down  the  '*'  key, this will bring you up in supervisor mode with a minimum
system,  then run !Bloxed from the command line (something like :0.!Bloxed to
run  of  floppy  or  :4.$.Games.!Bloxed  for  harddrive 4 with !Bloxed in the
directory Games. SCSI users etc. may have to work out their own incantation).

Configuration Options
---------------------

There  are  two  configuration  screens.   They  are accessed by pressing the
appropriate  keys  whilst  a  game  is  not  in  progress.  One screen is for
redefining  keys (press  'K')  and the other for general configuration (press
'C').  I  hope  these  two screens are self explanatory. There are only a few
things I can think of to point out.

To  save  the  configuration  you  have  to  click  the  'Save' button on the
configuration screen. This also saves key definitions.  If you don't save the
new  configuration or key definitions then the next time you play the old set
will be reloaded.

To  change the backdrop file you should click on the white box containing the
name  of  the  current  backdrop file.  A caret will then appear which should
respond  to  most  standard  controls.   When you have entered the name press
return  and  the  program  will  attempt  to  load that file. It will print a
warning  if it can't find the file or if there is insufficient memory to load
the  file  (and  to  allow  workspace  for the decompression).  There are two
special  filenames you can enter.  If you enter a blank filename then it will
be  changed  to  the default backdrop file.  If you enter the filename 'none'
then backdrops will be disabled.

If  you  want to make your own backdrop files then contact me for the program
to  do  it.   The  program  isn't  on general release as it isn't very tidily
written.   It needs lots of memory (for the same reason).  The backdrop files
for  this  game  are  in  my  own  format.  Do not try and use other files as
backdrop  files  as  it is very likely that doing so will crash your computer
losing any work you have.

The 'multi-player cumulative total' option toggles whether or not the program
will  keep track of how many multi-player games have been won by each player.
The  current  total  is  printed  an  the bottom of the title screen.  If you
switch  it off and later switch it back on then the scoring will pick up from
where  it  left off.  To reset the score to everyone at 0, click on the reset
button.

The  'Message scrolling' option determines whether or not the various printed
messages  on  the  title  screen  and  in  other places are scrolled onto the
screen or just centred straight away.

The  speaker  setting  is not saved, instead it is picked up from the current
state of the computer.

History
-------

!Bloxed is based on an arcade game I played for a while called Bloxeed. This,
in  turn, was based on Tetris. If you don't know what Tetris is, which planet
have you been on ?

My  version  started as a one player C program, running under Unix, using the
curses  library, in 1990. I've still got it if anyone wants. I then ported it
to  BASIC  on  the  Archimedes in 1990-91 (this was before I bought my own, I
used a friend's). It was made 2 player. The resulting code was 'orrible. When
I  finally  bought  my  own Archimedes in October 1991, I re-wrote the entire
prgram  from scratch in Arm-code. This took me about 4 weeks (whilst still at
university).  Over  Christmas  1991, I added the front end. And in the little
spare  time  I  had  in Hilary term 1992 I added the backdrops, put the score
into  Arm code, and generally tidied up. There was then a pre-release version
released.  Over  the  Easter  Vacation,  I  added  some sound effects and the
configuration  screen.  Over the next summer, whilst between courses, I added
the  nasty  bits at levels 30+ and the high score tables. Then when I started
my  Ph.D. course in October 1992, I added the pause facility, and changed the
backdrops.  This  became  version  1.00  - the first official release. It was
distributed  at  the Archimedes User Show on the Sunday (I went down and gave
out  some  copies),  it was posted to the Newcastle Info Server (RIP) shortly
after, and made it into the January 1993 issue of Acorn Computing.

Changes to give version 1.01

Fixed bug - 'Missing ENDIF' in key definition procedure (thanks Pelago).
Allow saving of configuration (thanks everybody).
Allow centring of screen in one player mode (thanks Robert).
Fixed bug that caused shooter not to fire occasionally (thanks everybody).
Fixed bug that caused filled blocks to change colour on transfer (thanks me).
Added  auto  repeat  on the left and right keys (deliberately not on the turn
      key - I found this dodgy), configurable repeat rate (thanks everybody).
!Help file - Notes for 1 Meg Users, About The Author and Thanks added.
Trimmed comments and tightened some code to keep in 512k wimp slot.
Fixed obscure bug in filler (thanks Pelago).

Changes to give version 1.02 (not released)

Overlayed code to free up some memory (thanks Robin for hassling me).

Changes to give version 1.03 (released for development late April 1993)

Altered assembly code to make it relocatable. Moved compilation off-line to
separate program to produce an object file. Moved the multiple data files
into the object file (this will probably be a temporary move).
Made it clear screen and print goodbye when escape pressed.

Changes to give version 1.04 (released for development early May 1993)

Moved backdrops back out of code.
Moved all block sprites into one file.
Added sprites for blomb explosion.
Expanded high score tables to 50 entries.
Added animation for bomb.
Allow  each  multi-frame object (bomb, filler, shooter and explosion) to have
      a  different  number  of  frames  animation  - number of frames need no
      longer be a power of 2.
Now  tries  to  grab  as  much  memory  as possible, this is a preliminary to
      allowing alternate backdrop and block files.
Added configuration option to select backdrop and block files (ignored at the
      moment).
Some of Lee's sprites made default.

Changes to give version 1.05 (released for beta testing 2 Aug 1993)

Remmed out code to chose block file.
Added code to select backdrop file.
Improved text entry for configuration options to allow Ctrl-A, Ctrl-E, Ctrl-U
      Ctrl-left and Ctrl-right.
Added Configuration section to the !Help file.

Changes to give version 1.06 (released for beta testing 2 Aug 1993)

Improved text entry for configuration options to allow Ctrl-K and backspace.
Flush buffer before reading configuration text strings.
Set up text window before loading backdrops so large messages don't scroll
      configuration screen.

Changes to give version 1.07 (released for beta testing 20 Aug 1993)

Changed high score table printing into mode 15.
Added timestamping to high score table.
High score name entry now remembers names from previous game.

Changes to give version 1.08 (released for beta testing 29 June 1994)

Fixed annoying click at end of samples.
Deleted !Boot file (thanks Pelago).
Changed Blox$Dir to Bloxed$Dir throughout program (thanks Pelago).
Miscellaneous code tidying.
Changed 'alltime' to 'all-time' throughout program (thanks Pelago).
Trap failure of write of high score table (thanks Pelago).
Other Versions section added to !Help file, as there are now other version.

Changes to give version 1.09 (released 23 February 1995)

Time frames from real time clock rather than vsync. This should give the same
      game speed regardless of screen refresh rate.
Default  configuration  now  stored in code. Config file only created when
      configuration is saved. Config file removed from distribution.
Trap errors when saving or loading config file.

Changes to give version 1.10 (released for beta testing December 1995)

Fixed vsync timing error when game paused.
Fixed vsync timing error in demo.
Supplied 100Hz modes for RPC so that letterbox modes are avoided.
Extended level scheme to level 139 (from 99, blame LES.. for this).

Changes to give version 1.11 (released 1 May 1996)

Fixed bug in screen memory allocation (got broken in RPC mode upgrade).
Major overhaul to allow >2 player games (blame Graham Robinson for this).
Fixed  bug  that  caused  the  modules  not to be RmKilled on exit and config
	files not to be loaded.
Key and configuration saving fixed and added version number.
Redraw code sped up so 3 player games should run on ARM 2 machines.
Reconverted all backdrop images.
Added LES..'s best high score to table.
RiscPC mode definitions tweaked.

Copyright Notice And Acknowledgements
-------------------------------------

Unless  otherwise noted, all the code is copyright Steven Singer. The sprites
are copyright Steven Singer and Lee McGinty. The bomb sprite, bares more than
a  passing  resemblance  to  the RISCOS 3 error sprite :-), and I suspect the
Calvin and Hobbes picture is copyright Bill Watterson (but seeing as I got it
through the public domain I felt free to use it).

Most  pictures  used  in the backdrops were acquired as GIFs by anonymous ftp
from  wuarchive.wustl.edu.  The  exceptions  were the one with the helices on
and  the  sunset,  which  were  both part of the PVray 0.5ß distribution. The
helix  picture (ntreal)  was  created  by  Drew Wells, and the sunset picture
(sunsethf) was created by Douglas Muir. All pictures were converted to RISCOS
sprites  using ChangeFSI (by Robert Hamilton and Roger Wilson) and Translator
(by  John  Kortink).  They  were  then  compressed  using  a  routine I wrote
specially for this program (based on the LZW algorithm).

The  sound  effects  (before  I played with them), came by anonymous ftp from
terminator.cc.umich.edu

This  software  is  may be freely copied, as long as the following conditions
are met:

a) This notice is distributed unchanged with every copy
b) Any  changes  released  should first be mailed to the author at one of the
   addresses given below, and not distributed until permission is given.
c) No  charge  (excluding  possibly a minimal copying charge) is made for the
   software by the distributor.

This software is provided 'as is', with no guarantee of its  suitability  for
any purpose. NO WARRANTY IS GIVEN!

I  accept  no  responsibility  for  loss  of  friends when playing !Bloxed in
multi-player mode :-).

If  you  do change the code at all, please let me know, as I refuse to try to
support other  people's modifications unless I have been told about them, and
I will probably be interested.

If  you  want to use any code from this program, contact me first. I might be
presuaded to provide documentation.

Thanks
------

Thanks to the following people:

Robin  Watts,  for use of his Arc before I got mine, for teaching me ARM code
for  letting  me  take  over  his room to program in when I was living out of
college  and  for  giving  me  cups of tea whilst I was in there, for writing
!Larger  (get  a  copy, you know it makes sense), for looking stuff up in his
PRMs for me and most of all for beating me (occasionally).

The  Archimedes  User  Group in Oxford for play testing, suggestions and help
with distribution.

Robert Archbold (aka Orbital Productions) for suggestions.

John Veness (aka Pelago) for pages and pages of suggestions.

Matthew Newton for suggestions.

Lee McGinty for redesigning the sprites.

Dom Symes for writing !Zap (definitely get a copy of this).

Graeme Foster for suggestions - mostly on the high score table.

Graham Robinson for suggestions.

Anthony Haines for bug reports and ARM 2, 1 Meg, RiscOS 2 testing.

Iwan Attwood (aka LES.. and Dr. De'ath) for some truly sick high scores.

Other Versions
--------------

A  version  of Bloxed is available for the Psion III, written by Robin Watts.
Contact  him  at  Warm Silence Software, P.O. Box 28, Woodstock, Oxfordshire,
England,  OX20 1XX. E-mail me for his e-mail address or go to their web-site
at  http://www.wss.co.uk/ Note that this isn't an official WSS product, just
something Robin did in his spare time.

A version was being written  for the X windows system, UNIX and TCP/IP by me,
but it's stopped. Other things kept getting in the way (like my thesis).

If  you want to try and port Bloxed to other systems, contact me for details.
I  can  provide  in  depth   descriptions  of  algorithms  used  and  precise
measurements of level speeds to ensure an accurate port. I will not, however,
provide  the  source  code , I will provide hints about how to tackle writing
various   parts  of  the  game  to  ensure  smooth  game  play  and  accurate
reproduction . Basically , you'll  get  lots  of  advice on tips and tricks I
learnt the hard way.

Miscellaneous
-------------

If  anyone  has any ideas on improvements or new features for !Bloxed, please
get  in  touch with me, though ideas for new power blocks must be exceptional
to be included.

I would appreciate improved sprites/backdrops/sound effects/music, being sent
to  me  at  the addresses below. The programs to convert sprites to backdrops
and  pieces, and to make the voice modules from samples are available from me
by request for people who wish to play with them. Alternatively, if you would
like  me to customise a version for a special purpose, then contact me at the
addresses below.

There is a Bloxed WWW page on http://www.finesse.demon.co.uk/steven/Bloxed/

About The Author
----------------

I am currently working as a software engineer in Cambridge. Most of this game
was  written  while  I  was  an  undergraduate at Oxford University (studying
physics).  The  rest was written whilst I was studying for a Ph.D. in nuclear
physics at the University of Surrey.

Contact
-------            

I can be contacted by e-mail at singer@ox.compsoc.net
        
                                    -----

Unix is a trademark of AT&T Laboratories (I think).
GIF is a trademark of Compuserve, Incorporated, an H&R Block Company.
Tetris and Bloxeed may be trademarks, but I can't attribute them.
ARM, Archimedes, A5000, RiscPC etc. are trademarks of the usual people.

(Yes I think giving trademarks is over the top as well).

If this file zoomed past at high speed, load !Edit, then try again.

[Up] Up to the Bloxed page.
Comments should be addressed to webmaster@pertinentdetail.org