Monday, 24 November 2014

Rocket Raid Under the Hood 1: Introduction


In the early days of the BBC Micro, the quality of software for the new machine was quite mixed. However one software company in particular, Acornsoft, seemed to be able to consistently produce games of high quality that earned favourable reviews, including a range of games that were clones of, or closely based on, popular arcade games of the time such as Snapper (a clone of Pacman), Planetoids (a clone of Defender) and Rocket Raid (a clone of Scramble).

Rocket Raid

Rocket Raid was written in 1982 by Acornsoft programmer Jonathan Griffiths, who also created the classic Snapper for the BBC & Electron (and, later on, JCB Digger for the BBC).
Rocket Raid - disc version cover

The game will no doubt be familiar to most people who have owned a BBC micro. In the game, you must guide your rocket ship through a hazard-filled landscape (which includes vertically-rising rockets, alien-filled tunnels and an asteroid belt) through to the last level where success if found by bombing the robot waiting at the end.

As soon as you fired up the game the first thing that hit you was the smooth and fast horizontal scrolling which gave it a sense of frantic action. The difficulty level of the game is fairly high and it was likely that a newcomer to the game would find it all over in a matter of seconds. But the gameplay was very addictive and I remember devoting many hours to working out how to weave through the cave in the second level without running into the aliens, and later on trying to navigate the near-impossible vertical rises and drops of the yellow tunnel level. The sprite collision detection did seem to be a little dodgy at times though, with rockets miraculously surviving your barrage of bullets for you to run unceremoniously into them and disappear in a ball of flames.

The game ending was also a slight let-down. After battling through to the very end of the game and managing to successfully drop a well-positioned bomb on the final robot enemy, you would receive a short congratulatory message and find that the game simply started again.

But players in those days were used to brief game endings (or none at all), especially given the limited memory space into which the games had to be squeezed.

Rocket Raid - first level

Coming Up

In this series of blog posts we'll try to disassemble the Rocket Raid code to see how it the game was put together.

Some of the areas of interest include:

  • sprite plotting and movement
  • collision detection
  • hardware scrolling
  • sound
  • text display
  • text input

The game was written in 6502 assembly language and runs in Mode 2, giving use of the full set of 8 colours (plus 8 flashing) at the expense of losing 20K of memory for screen display, leaving only a few kilobytes of memory on an unexpanded Beeb for the game code itself.

One book that will be a very useful reference is one that was written by the author of the game soon after the publication of Rocket Raid, called "Creative Assembler - How To Write Arcade Games" which should give some insight into similar assembler routines used in Rocket Raid. (Despite its name, I found the book itself to be rather dry and fairly hard to digest, at least in terms of a games-writing guide, but for our purposes it is likely that some of the routines mentioned will be similar to those found in Rocket Raid).

In the next post I'll make a quick summary of the tools and books before we roll up our sleeves and start to take the code apart.

No comments:

Post a Comment