
	Battle Blox, a 4 kiByte game for the Commodore 128
	Copyright (C) 2007 Robert Willie <hydradix@yahoo.com>

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License version 2 as				published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	("COPYING.TXT") along with this program; if not, write to

	Free Software Foundation, Inc.
	59 Temple Place
	Suite 330
	Boston, MA  02111-1307
	USA

Battle Blox is an arcade/strategy game similar to Tetris, except instead of matching shapes, you are matching colors and are competing with an opponent.

Battle Blox is a one or two player game for PAL or NTSC using the VIC or VDC ... or both!  Plug your joystick(s) in, insert the disk, and reset your Commodore 128.  The game will boot automatically.  (Manually, BOOT"BATTLE BLOX".)  You don't need to read anymore to start enjoying the game.  But for those who like game manuals...

Use the joystick to highlight menu items and press fire to select.  The game auto-detects the number of players based on joystick input.  Once two-player mode is activated, you need to press STOP+RESTORE to return to one-player mode.

In the menu, you can select between two color palettes and select the video display to use.  Of course you can also select PLAY.  This gives you an option of how many rounds you want per level.  Once you make a selection the game begins in one-player mode (you battle your C128).  In two-player mode, the first player must wait for the second player to make his/her selection.

In the game, pieces fall from the top of your screen at a rate determined by the level.  In one-player mode, there are 9 levels, each faster than the last.  As pieces fall, use your joystick to direct your piece horizontally left or right.  Press the button to rotate your piece clockwise.  Press up to rotate the piece counter-clockwise.  Press down to make your piece drop really fast.

The basic object of the game is to avoid completely filling your play area with blocks. You want to group like-colored blocks together so you can shatter them all at once.  To do this, you also need a 'special' (spiked) block.  When you get one, set it on a normal block of the same color to shatter all blocks of that color that are 'connected' horizontally or vertically.  If your special block does not touch a block of the same color, it will simply sit there lying dormant until it does contact a matching block.  Block color and type are generated randomly but to keep things fair, each player will get the same sequence of blocks.

Shattering blocks is equivalent to an attack as it results in dropping a group of blocks, all at once, on your opponent.  Naturally this makes your opponent's game more difficult but (s)he is doing the same to you!  You get a brief warning at the top of your screen before an opponent's blocks are dropped on you.

Strategy and Scoring

At times, shattering a group of blocks will allow a dormant, special block to do its job thereby shattering a second group of blocks.  This is called a chained attack.  In this case, a message will appear at the bottom of your screen and you will hear a different (higher pitched) sound.  There is no defined limit on the number of chains you can generate with an attack, but in practice it is difficult to get more than a quadruple (4x) chained attack.

You are awarded a score equal to the number of blocks shattered in a group times the chain number.  Thus, in the usual case (a single 'chain'), the points awarded equal the number of blocks.  In a double (2x) chained attack, the points equal the number of blocks shattered in the first group plus two times the number of blocks shattered in the second group.  Hopefully you get the idea.  For the mathematically inclined, this is a factorial progression that increases faster than any exponential function (and exponential functions are the basis of compound interest which makes bankers so wealthy). In short, it is highly beneficial to perform chained attacks, with the smaller group(s) being shattered first.

The total number of points earned in an attack is the number of blocks that will be dropped on your opponent.  It is possible (but difficult) to 'slaughter' your opponent by dropping more blocks on them than can possibly fit on the screen.  However, working to set up a 'killer chain' can be detrimental as your opponent can 'cover up' your hard work by dropping a group of blocks on you at any time.  Finding the right balance between quickly shattering blocks and delaying for a chain is a skill you will have to learn yourself.

Final Words

To get the most enjoyment from the game, you should have good hardware.  This means joystick(s) that respond accurately and rapidly and in the case of an emulator, a host with plenty of processing power.  Using VICE on a 350 MHz Pentium II produced fine results for PAL, but showed some slow-down for two-screen NTSC, even with 'true drive' turned off and sound set to 'fast SID'.

You can customize the sound of Battle Blox without recompiling by using the ENVELOPE command before manually starting the game.  You can get better / different random numbers by assigning various values to TI$ before manually starting the game.

I had too many ideas to fit into this 4 ki program.  In particular, I would have liked to have added some nice animation for beating the computer because anyone who can do that deserves a little reward.  I also really wanted to add a pause menu for when life interrupts your game.

I worked hard to make sure the game plays smoothly and consistently with either PAL or NTSC timing, with either VIC or VDC, and with standard (2MHz) FAST mode and broken (1MHz) FAST mode.  In particular, an emulator with broken FAST mode showed a few (but only a few and no more than 1 at a time) 'dropped frames' during play testing but I don't think it is noticeable in actual play (the debug version flashes the border in such cases and makes it obvious).
