Now let's take a look in some internals of Starbirds.
First let's highlight the difficulty modes of Starbirds. The difficulty modes of a lot games are basically a deception package, because only a few parameters are changed, which improve the strengths of the enemies or which decrease the own ship's power. With Starbirds things are different, because completely new enemies might appear in higher difficulty modes or the enemies act a bit differently. Certainly some people changing from lower to higher difficutly level will encounter some surprises.
The basic thought behind the game play of Starbirds is, that it is bad to create a game, which runs identically every time, so that the player can manage the game easily after a short period of time. Therefore the game is quite dexterity-oriented, it requires the player to be concentrated all the time. Despite these elements the experience of the player still plays an important role, because he slowly learns different tactics for different situations.
A very simply technique, which has a big influence on the gameplay, is the way how the player is attached by the enemies. Most stationary enemies, which are attached on the foreground, always aim at the player, so that the Starbirds would be destroyed definitely, if the ship wouldn't move. As a consequence the player is always in movement and so new situations appear all the time. And above all: the player keeps beeing concentrated, he keeps beeing busy. As soon as a player leans back and manages the game almost automatically, the game gets boring.
Diversion is a quite important point for games. In Starbirds the weapon symbols are very important here. It entirely depends on the weapon selection in the option screen, which symbols appear in the game, if the same enemy formation is destroyed. So the character of the game changes and often even the tactics of the player has to be changed. So the game keeps interesting even if it is played very often. For advanced players it is recommended to use the possibility to get random weapons assigned to the space ship, so every game really gets another character.
One goal of Starbirds was to keep the number of simultaneous objects on the screen as high as possible. And since Starbirds also should support the 2 player simultan mode it was completely impossible to achieve this goal with 50fps technique. Therefore the game runs at 25 frames per seconds and mostly manages to keep this frequency constant, except for very populated scenes. For some high end systems it is possible that the frequency drops often below the 25fps value due to weak Chip RAM access performance of such systems.
When scrolling horizontally the graphics is only scrolled by one pixel, so the should scroll very smooth in horizontal direction. Since the levels are 3 screens high, it is also necessary to scroll in vertical direction, which is done with several pixels per frame. In this case the difference between a 50fps game and a 25fps game are quite visible.
Starbirds uses a foreground and a background, where the background is implemented as coppersky. For vertical scrolling, the copper sky is scrolled at half speed of the foreground, so that some depth effect is achieved. The foreground uses 16 colors, while the copper sky can theoretically use as many colors as lines are present.
Basically for the Starbirds space ships, for the enemies and for the enemies' shots, BOB's are used (blitter objects). The weapons of the Starbird ships are displayed using sprites. The number of simultaneously displayed sprites was increased using a lot of tricks. First, the sprites were multiplicated in vertical direction and second, the number of sprites in horizontal direction was increased from 8 to 10, by simply reusing the first sprites in the middle of a raster line. Thanks to the use of sprites, the 25 fps frequency can be held even in 2 player mode, when the weapons are heavily fired, and even if the number of BOB's are quite high.
Starbirds is able to compensate fluctuating fps rates. If the hidden frame was constructed completely, the game already begins constructing the frame, which is still beeing displayed. It always makes sure not to draw below the current raster line position to avoid flickering effects.
A very important issue for shoot'em up games it the collision detection. A lot of action games have solved this problem really badly, so that the game quality was lowered quite a lot. Quite often two objects are simply tested by overlapping the masks of both objects. If at least one pixel overlaps, than a collision was detected. This approach is bad, because it is something different if two cars touch or if they crash head-on.
Starbirds uses a modified mask of the Starbird ship for collision detection. This mask is a bit thinner than the original mask, so that the pixels at the border of the space ship don't cause a collision if they overlap with other objects.
Those people which already played Starbirds might have noticed, that the enemies' shots don't fly through walls, but they disappear as soon as they touch the foreground. The following collision checks are done in Starbirds:
If every object would be tested with every other object, the amount of collision tests would slow down the game heavily. Therefore a matrix is projected onto a level, which divides the level up into smaller squares. For every object, which can cause a collision, it is noted in which squre the object is currently located. Every square also contains information, if any kind of the foreground is present. So only objects, which are in the same square, have to be tested against collisions.
Another special feature of Starbirds are the very short loading times (except that for some high end systems the loading times aren't that short as they should be). This could be achieved using several techniques. Basically the loading of data from disk is done in several steps. First, the motor is positioned, then the data is loaded from disk and finally the loaded data is decoded (the raw data is in MFM format). While Starbirds decodes the loaded data, it already loads the next sectors. Since this is mainly done using the disk DMA, there is almost no slowdown by doing this.
Additionally the loading times look very short, because the loading operations are basically performed asynchronously. As an example, the first level is loaded while the player selects its weapon in the option screen and the other levels are loaded while the level statistics are beeing shown. This is achieved by running the logic for the option screen and level statistics in an interrupt handler. The main program executes the loading operations and the other work is done in the interrupt handler, which is invoked periodically. This can be interpreted like some kind of multitasking.
At the end of the level the boss enemy has to be loaded from floppy disk, because it doesn't fit into the memory together with the rest of the level (Starbirds uses 512KB RAM). Most other games, which have a similar problem, stop the game during the loading operations. In Starbirds things are different, the boss enemy is loaded during the running game.
By the way, Starbirds uses an OFS compliant file structure, the game is provided with regular files.
The music is played using a modified MED player algorithm. All songs were arranged using MED, but they were composed much earlier using a simple keyboard (don't confuse this with the keyboard on the computer).
A highlight of Starbirds is certainly the extro sequence, which uses technique that provides 3D at 50fps even for an old AMIGA with 68000 CPU (unfortunately it runs a lot slower on some high end systems due to very slow Chip RAM access performance). The graphics quality certainly can't be compared with modern software running on high end systems, but it is still fantastic to see such a technique running on such old AMIGA's. The technique used in this sequence is based on intensive use of the copper for displaying the graphics, the colors are changed each 8 pixels (copper chunky mode). The graphics itself is stored as heavily compressed assembler statements. Some people will probably ask themselves how this sequence can fit onto this one single floppy disk aside the whole rest of the game with 11 songs...