Things that may be added in future versions (if demand is sufficient):

- Windows/DirectX version.

- Saving of menu settings each time the game is exited.

- Allow configuration of sound volumes.

- Add proper control setup.


0.85    3rd September 1999

- Finished. The game was started on the 9th of March 1998. The source code
  (not including headers) is 5412 lines long, 263Kb, and about 25,000 words.

- Reduced the quality of some of the sounds to save unnecessary
  download/upload time.

- Added credits section to psector.txt

- Added sound effects for annhiliator, rocket launcher and flamethrower
  pickups - sounds made by Mark Sheeky. Added credit for him to credits page.

- Added 'Fast' option for Initial Player Speed.

- Made it so that the American spelling of colour in /colourdepth was also
  allowed.

- Added shareware/legal/distribution information to psector.txt, and
  improved some other parts of the documentation.

- Changed credit for 'Bonus graphics' to 'Most bonus graphics' (I did the new
  bonuses - Snail, Rocket Launcher, Flamethrower and Annhiliator.

- Fixed bug with rockets colliding with dead (and thus invisible)
  players - altered square_occupied_by_other_player() (which is used for
  rocket collisions only).

- Changed getrandom from a macro to an inline function.

- Made it so that controllerbombs and timebombs are detonated if the player
  controlling them dies - added function normalize_bombs() so that there is
  no code repetition (the rest of the program is full of it).

- Finished snail graphic.

- Wrote psector.txt

- Did credits/info screen.

- Added controller animation (for players)

- Made it so that Superman can push bombs (excluding rockets and
  controllerbombs).

- Improved flamethrower sound staggering system. (flame_sound_count and
  FLAME_SOUND_STAGGER)

- Found a bug where round didn't end after music had reduced in volume.
  Couldn't reproduce it. Arse, arse, arse.
  Changed if (victory_countdown == 0) to if (victory_countdown <= 0). That
  should fix it.
  This bug was probably caused by the sole remaining player dying on the
  last frame before the victory countdown ended. victory_countdown is
  decremented twice in one frame when the sole remaining player dies, that
  would have caused it to go to -1, and the original if statement wouldn't
  have detected the end of the round.

- Changed bonus probabilities back to what they were before this version,
  with these exceptions:
  Ghost is 5 instead of 6
  Death is 8 instead of 9
  Stop is 5 instead of 4
  Controller is 4 instead of 3

- Changed text "Editing controls for" to "Viewing controls for".
  Added note on not being able to edit controls to control screen.

- Noticed anomaly in bonus selection routine - subtracting TIMEBOMB from
  randomvalue instead of BONUS_TIMEBOMB. What the hell is TIMEBOMB?
  Ah - a bomb type, defined as 2. That is what is causing the bug.
  Now that I know it wasn't the bonus probability values, I'll have to
  change them back...

- Changed some more bonus probabilities:
  Bomb from 19 to 18
  Range from 15 to 14
  Death from 9 to 8
  Annhiliator from 2 to 3
  Snail from 3 to 4
  Flamethrower from 2 to 3

- Changed randomvalue for bonus probability calculation to 1-100 instead of
  0-99.

- Hmm - something seems to have gone wrong with the bonus_chance[] system
  I added in 0.75 - I don't remember seeing any bonus after Stop (i.e.
  Rocket Launcher, Flamethrower, Annhiliator, Snail) for ages...
  Found reason about two hours later, see TIMEBOMB thing.

- Changed some bonus probabilities:
  Ghost from 6 to 5
  Flamethrower from 1 to 2

- Added some extra sound effects for bonus pickups.

- Added extra menu options: Cash Injection (free cash at start of each round
  except first) and Credits/Info (not yet implemented).
  Had some other ideas for menu options while on the toilet, but forgot them.

- Slowed down the stop animation (SPIN_SPEED) after seeing it with the new
  graphics.

- Removed Please Wait and trans/light map calculations for high colour modes
  (only necessary in 256 colours).

- Added and implemented command line options /penises and /graves.

- Slightly darkened foreground arm/leg colour of Player 5 (yellow) sideways
  animations.

- Extended width of smiley mouth on Player 1's sideways animations.

0.84    16th August 1999

- Fixed it so that wall probability percentages were correct - turns out if
  you specified 50%, you got 51%, and if you specified 0%, you got 1%.

- Changed it so that wall and bonus densities of 0% are allowed (previously
  10% was the minimum).

- Noticed and fixed swapped on/off values for Grid Blocks option.

- Removed unused variables stick_anim_variant in main() and anim_count in
  trophy_room().

- Changed returned key_delay from menu_press() - again - this time to 11
  (started as 10, then 14, then 12).
  Still doesn't feel totally right, I think I should stop tampering with it..

- Fixed direction bug in trophy room (players should always be facing
  forwards) - added facing argument to get_bloke_anim_frame().

- Halved anim speed for left/right movement. Achieved by doubling
  PLAYER_ANIM_SPEED and multiplying reduction of time_to_next_anim by two
  on up/down movement.

- Implemented new bloke animation frames.

- Changed choices for Grid Blocks from Yes/No to On/Off.

0.83    20th July 1999

- Renamed Normallevel to Grid Blocks.

- Added more calls to fflush and fsync following successful experiment (see
  below).

- Added video driver detection result to log file.

- Reverted temp_bitmap and temp_bitmap_2 to their former status.

- Traced bug preventing access to Player Control menu to an uninitialised
  local variable.

- Removed menu_item parameter from menu_press() after realising it wasn't
  being used at all.

0.82    24th June 1999

- Made temp_bitmap and temp_bitmap_2 static pointers in draw_grid instead
  of global pointers initialised in main. Unfortunately this makes it
  practically impossible to destroy them manually. Whoops.

- Added some extra log file entries for clean-up operations at the end of
  main.

- Added int stick_anim_variant for future use with varying stick man
  animations.

- Traced stick man animation problem to ommission of #include <cmath>
  Putting this in uncovered a bug which led me to find out that I was using
  gcc 2.8.0 instead of 2.8.1. Probably. It's not entirely clear.

- Added sound driver detection result to log file.

- Made it so that if there is no sound, Time Before Shrinking is increased
  (to compensate for the loss of interlude time).
  Now that I think about it, I didn't really need to use maps to achieve
  the fast/slow difference. I could have just used the same technique here,
  i.e. having a base value and adding to it slightly if necessary. Then again,
  customizing shrink_time based on timing of the music would not have been
  practical if I had used the new method.
  The increase is 10 seconds (600 frames) - slightly more than the length
  of the Zoo interlude music.

- Fixed shrinking when there is no sound.

- Reduced returned key_delay in menu_press from 14 to 12. Also reduced
  delay slightly in control screen and shop.

- Added one call to fflush and fsync as an experiment to fix logfile problem
  with hangs and write-behind caching.

0.81    9th June 1999

- Fixed initial flicker of dancing stick man.

- Swapped positions of Start Cash and Normallevel on main menu

- Made it so that if shop is off, cash bonuses are replaced with something
  else.

- Altered bonus probabilities - cash down by 1%, rocket launcher up by 1%.

- Altered internal working of Time Before Shrinking variable, to allow two
  different sets of values - so that the value is slightly less when initial
  player speed is Normal (or Fast - an option which was added later).

- Halved the speed of death animations.

0.80    30th May 1999

- I haven't exactly done much in between these versions, but then:
  a) I have long since come out of one of my biggest ever programming frenzies
     (chronicled below), which was brought on by me starting this revision
     history - it allowed me to clearly see what I had achieved, thus giving
     me motivation.
  b) The player death thing is quite a fundamental change - up until now,
     players were able to continue as normal after they had died. This was
     necessary for testing, but now pretty much all the testing has been done.
  c) The game is virtually finished except for final polishing (graphics
     and some sounds need to be done). Which is why I've upped it to 0.80.
     I guess it is a beta version now.

- Added version number to main menu.

- Added full player deaths - animations, and players aren't allowed to do
  anything when they're dead.

- Tried to add my dancing stick man animation to the main menu. It was too
  big and the speeds were all the same (and too slow) for no apparent reason.
  It'll be removed later, but I'll keep it for the moment so the beta testers
  can laugh at it.

0.75    20th May 1999

- Made it so that players can't buy the same thing twice in the shop (except
  things which are additive).

- Added function convert_to_str (thanks to Ralph Deane for that). This is
  meant to be part of the keyboard setup screen, but I am now told that
  the vital macro this function uses will not be inlcuded in the next
  version of Allegro, and it will have to be done using a different method.
  So I won't do much more work on the keyboard setup screen until the next
  version of Allegro is out.

- Added speed-up sound for menu selections.

- Made it so that blart sound plays when player tries to buy something but
  doesn't have enough cash.

- Reversed order of Shrink Speed variable on menu, so that it goes from
  slow to fast instead of the other way around.

- Increased volume of blart sound by 300% (in datafile).

- Changed return value for key_delay at end of menu_press() from 10 to 14.

- Added initial button definitions for control setup screen. Added
  menu_control() function.

- Fixed displaying of purchased speeds in shop.

- Added music to main menu.

- Added bonus_chance[] array to make alteration of individual bonus
  probabilities much easier. The code that places bonuses on the grid is
  still a mess, but at least now it's a customizable mess.

- Replaced player[].status with player[].dead, removed defines for status.

0.74    8th May 1999

- Added new setfocus member function to dialog.h, to fix problem with mutliple focuses
  in shop.

- Made a few alterations to initialisation of main menu so that most
  options are automatically initialised to the correct value.

- Added shop. Unlike the one in Masterblaster, this shop shows you what
  you have purchased so far.

0.73    6th May 1999

- Added some calls to destroy_bitmap at the end (better late than never).

- Implemented /diag command-line option - info readout is now off by
  default.

- Fixed a bug where it would draw the first animation frame of shrinking
  even if shrinking was switched off on the menu.

- Reduced default bonus density to 30% (from 40%).

- Removed position correction for secondary movement, which was unneccessary.

- Reduced delay between end of drumbeat sample and 'bong' in interlude
  screen by 10ms (to 90ms).

- Fixed volume resetting when music changes to a different stage while
  volume ramping is taking place.

- Added routine which assigns controls to players based on the number of
  joysticks detected.

- Changed joystick code to reflect changes to joystick system in Allegro 3.1
  Multiple joysticks are now supported.

- Added some new keysets, so that all five keyset slots are predefined.

- Resumed work on menu. Added function menu_press. cmdscreen made global.

- Made it so that music volume ramps down when round is about to end.

0.72    1st May 1999

- Added graphics for rockets.

- Changed the in-game quit key from space to escape.

- Made it so that bombs can't be dropped on top of bonuses.

- Made it so that secondary movement code is not called if player has
  just used his superman ability (added variable superman_used).
  This was supposed to fix jerks when running along pushing a block in the
  secondary movement zone. Inexplicably, the changes have made no difference.

- Made it so that players can't move diagonally - needed for superman and
  so that players don't get speed boosts using secondary movement.
  Left/right movement has priority over up/down movement.

- Added improved movement code - secondary movement to allow players to
  move more smoothly without snagging on blocks.

- Made games continue over multiple rounds until someone has won or game
  is quit.

0.71

- Records of changes were not kept before this point, including a few
  early changes between 0.71 and 0.72.
