INTRODUCTION

Quicksilva produced a version of Defender for the 3K ZX80 named QS Defender and released it in 1981. It was sold on pre-recorded cassette only. The game was also released for the ZX81 and ZX80 with the 8K BASIC ROM upgrade, and was renamed as QS Defenda. Quicksilva also produced a 1K version of the game. This page documents an analysis of the 3K RAM versions of the game.


DESCRIPTION

Quicksilva's 3K QS Defender implements a 32 row by 31 column version of the arcade classic.


Screenshot of ZX80 (4K ROM) QS Defender 3K Screenshot of ZX80 (8K ROM) QS Defenda 3K
4K ROM version 8K ROM version

The player has 9 lives and skims across the surface of a player shooting aliens, which appear in waves. The player moves up using key 7, down using key 6, and increases the thrust speed using key 9. A missile is fired using key 0 and there can be up to 6 active missiles on screen. The aliens attack in waves and there can be up to 8 on screen simultaneously. There can be a total of 4 active alien missiles on screen. The player missiles cannot detroy alien missiles. Whenever a life is lost, there is a 3 second pause before restarting. During this time, the game attempts to operate the QS Sound Board. The game will also drive the QS Sound Board during game play, playing shots and explosions. When the game ends, the SPACE key must be pressed to return to BASIC and then GOTO 10 can be used to play again.

An advert for the game appears below (source: Your Computer magazine, Vol. 1 No. 1, June/July 1981):


It is curious that the advert mentions "three types of invader" since there only appears to be '*' and its inverse ('=' and its inverse on the 8K ROM version).


GAME OPERATION

The game itself is structured as a giant loop situated around a single instance of the video driver routine. The following elements are processed per cycle:

The game contains a couple of bugs relating to the initialisation of program variables. The game attempts to reset the stores that hold aliens, alien missiles and player missiles are active. However, it does this incorrectly and so fails to clear the sixth player missile store. Also, the game fails to attempt to reset all other program variables which can manifest itself in the score magically clocking up a few kills at the start of the first game since loading. When driving a sound card it becomes apparent that the game believes a few missiles are being launched and the occasional alien killed even though none are actually displayed. The random values held in the program variables causes the game to think aliens or missiles are active. However, they will soon be moved into the inactive state and hence the game (and all subsequent games) will play correctly.

The instructions for the 4K ROM version of the game describes a number of pokes that can be made to adjust the television picture. The pokes described are as follows:

The instructions for the 8K ROM version of the game describes a number of pokes that can be made to adjust the television picture. The pokes described are as follows:


QS SOUND BOARD SUPPORT

The game supports the QS Sound Board, yet when the game was later only marketed for the ZX81 this detail was omited from the inlay card. Presumably this was because Quicksilva were no longer selling the sound board by that time. The 3 second delay between lives where the screen remains black makes some sense when it is realised that the game is playing sound during this period.

There are four different sounds produced by the game. Each can be listened to by clicking the links below.

Click here to play the player missile sound.
Click here to play the alien missile sound.
Click here to play the alien destroyed sound.
Click here to play the next life sound.

The QS Sound Board is based around a AY-3-8910 Programmable Sound Generator IC, which provide 3 independent tone channels, 1 noise channel and 2 general purpose 8-bit I/O ports. These features are accessed through 16 8-bit registers. The QS Sound Board accesses the AY-3-8910 using two memory mapped I/O ports at addresses $7FFE (32766) and $7FFF (32767). Port $7FFF selects the sound chip register to access and port $7FFE is used to set the data for the selected register. Using memory mapped I/O allows the sound board to be controlled from BASIC by poking to these two memory locations.

The Quicksilva documentation for the sound board claims it is driven by a 1.78977 MHz clock (which happens to be half the NTSC 'colour' crystal frequency of 3.579545 MHz). Since the circuit for the sound board takes the clock signal exposed at the edge connector of the ZX80 or ZX81 and halves it, this would imply that the clock frequency of the ZX80/81 was 2 x 1.78977 = 3.57954 MHz. This is wrong. The ZX80/81 is clocked at 3.25 MHz and so results in the sound board being clocked at 1.625 MHz.


DOWNLOADS

Click here to download 3K ZX80 (4K ROM) QS Defender (V1.80) in .O program format.
Click here to download 3K ZX80 (8K ROM) QS Defenda (V1.81) in .P and .P81 program formats. The file name is "DEF". Run the game using RUN.
Click here to download a partial disassembly of the ZX80 (4K ROM) QS Defender game (dated 23rd May 2019) .
Click here to download a partial disassembly of the ZX80 (8K ROM) QS Defenda game (dated 29th September 2018) .
Click here to download the AY-3-8910 datasheet.