(back to project list)

Starship Commander Disassembly

Starship Commander is a space combat simulator written for the Apple II by Gilman Louie. It was published in 1981 by Voyager Software.

The game is written primarily in Applesoft BASIC, implemented in two dozen separate programs. A few assembly-language routines are used to draw characters on the hi-res screen and make sounds.

The user interface is implemented entirely with hi-res graphics, with user input exclusively from a joystick or game paddle. The game is an excellent example of providing a clean, consistent user interface for a complex simulation.

The disassemblies of the BASIC programs are essentially LIST output (from CiderPress) with comments added. The assembly-language subroutines and font files have been disassembled with SourceGen. According to a comment in HELLO, the disk image is Starship Commander v1.20, written Dec 1981.

General:

Starship Commander has quite a lot of game state, most of it held in Applesoft variables and arrays. Normally, when a new program is run, all variables are cleared, but the game uses a CHAIN program to preserve them. Because all Applesoft variables have global scope, and use two-character identifiers, it gets a bit crowded. When reviewing the source code it's useful to have this chart on hand:

Initialization and setup:

Main Loop:

Misc:

You can download the full set of SourceGen projects for the binary files, as well as a disk image of the game.


Playing the Game

I haven't found a copy of the manual online, but most of the interface is easy to figure out.

Quite a bit can be gleaned from the "Designer's Notes" in Computer Gaming World issue 2.5 (PDF), published in September 1982, starting on page 33. The game's author provides advice on how best to play, explaining how several of the ship systems work.

Nothing in the game requires reflexes, so most of it plays a bit better in an emulator at 2x speed. You do have to be a little quicker when entering a number with the paddle though.

Bugs & Quirks

A game of this size and complexity is bound to have some bugs. Most of the issues can be blamed on the lack of scoping for variables in Applesoft, and the ability to use them without first initializing them.

Cosmetic/Trivial

Minor/Moderate

Major

Unclear

Additional Notes on Bluffing


Copyright 2020 by Andy McFadden