Wade-Memoir

Wade Clarke's memoir of growing up writing games for the Apple II

ALIEN EXODUS (1993)

When I was in year eight or nine in high school, a kid in the year above me loaned me a 3.5-inch floppy disk that had a bunch of neat Apple IIGS Super Hi-Res images on it. It also included a couple of utilities that gave some access to the Super Hi-Res screen from Applesoft BASIC. A text file described how to use the routines, and the disk also included some impressive demonstrations that mostly involved applying colour cycling tricks to static images.

I've quizzed some Apple II folks over the years about the source of these routines, and none of their suggestions matched. However, just before I put this blog entry up in 2021, I succeeded in Googling up scanned PDFs of type-in program listings for the two utilities, called HPLOT GS and SUPERGRAPHICS GS respectively. REM statements in a BASIC program accompanying HPLOT GS credit a Tom Doris of MicroSPARC in 1987, and a Tim Meekins also of MicroSPARC has his name in the Merlin Source in the SUPERGRAPHICS article. I still don't know where these articles actually appeared in print.

Sometime between me acquiring these utilities and the arrival of the year 1993, the fractal craze hit. My memory of how I got into generating Mandelbrot images on the Apple IIGS isn't clear. Maybe my maths teacher dad had a book or books on the subject, or maybe I copied a program listing out of a computer magazine. However it happened, I was able to start generating these fractals in Super Hi-Res by using the routines from the aforementioned disk. At some point it occurred to me that it would be cool to use some of the colour cycling tricks on them. In turn, I suspect this is what gave me the idea to create a Super Hi-Res game based around these routines.

The result was Alien Exodus, which I made in 1993. I don't recall what I did to it in 1995, in spite of that date also appearing on its title page. Maybe I changed the music or tweaked the animation programming of the spaceship.

(Here’s a playthrough of all of Alien Exodus that exists. I use the "cheaty no-death" option to make demonstrating easier. Normally the player dies as soon as any birthpod has fully materialised.)

As a programmer, I was still clinging to BASIC at this point; I didn't learn some assembly language until 1996. Nevertheless, armed with the Super Hi-Res graphics routines from the disk, I realised I could make quite a freewheeling game. There could be cut-scene images with juicy animation effects, thanks to the colour cycling. Not to mention colour-cycled fractals on the title page! As for the actual levels, I figured I would invent them one at a time. In practice, I came up with one in total. Admittedly I went to university the following year, and life changed a lot, but I'm guessing that the difficulty of wringing further level mechanics out of the schtick I came up with — and which I'm about to describe in detail — probably led me to just put the game down and leave it where it was.

The way I made the game's first level was to treat the Apple IIGS display as if it was a Game & Watch screen. Every sprite, in every position it can be in, is pre-etched into the screen, or in this case, a single 320 x 200 pixel Super Hi-Res image. With sixteen colours available, I reserved one for the background, leaving me with fifteen colours I could assign to fifteen sprites. The Super Hi-Res routines allowed me to change the RGB values for any of these colours on the fly. So for instance, if colour one was used for the sprite of the spaceship in the lower left corner, I could display the spaceship there by setting colour one's RGB values to something positive and non-black; specifically, the RGB values needed to produce the colour I wanted the spaceship to be. To erase the spaceship from that position, I'd just set colour one to have the same RGB values as the background colour.

I created the level graphics by drawing all of the sprites in all of their positions on a single Super Hi-Res screen, probably using 8/16 Paint. The BASIC game program for level one animates them in response to joystick movements and button-presses by poking RGB colour values into memory as needed (using HPLOT GS's &STORE command) which colours sprites or turns them and on off. The speed at which it can do this to make action happen in Super Hi-Res is very good for a BASIC program. The result also has an aesthetic that may be unique, at least in terms of me not having seen another game programmed this way on the Apple IIGS. The limiting factor in all of this is that there can only be fifteen sprite positions on the screen for any one level. I came up with a good scheme for level one, consisting of a spaceship that could be in five positions, corresponding lasers in five positions and corresponding enemies in five positions.

Another fun thing about this game is that I made music and sound effects for it using a deliberately overcranked Electric Duet. This music program's output was tuned for 1 MHz Apple IIs, so running it at the Apple IIGS's 2.8 MHz changes the timbres that can be drawn out of it. I think the laser and alien death sounds are the best examples of the 2.8 MHz sound.

DOWNLOADABLE DISK IMAGE

First, note that if you don't have a real IIGS with an original RGB monitor, it may be of above average trickiness to get this game running. I say this because I've seen the following problems:

  • Alien Exodus's Super Hi-Res tricks are incompatible with the VidHD card. I got a screen full of ampersands as soon as it tried to activate the Super Hi-Res screen
  • The game requires a joystick, and in the Sweet16 emulator my gamepad sent incorrect button-press values, meaning I couldn't shoot at anything without hacking the program
  • In the GSPlus emulator, the fire button jammed, leaving my ship stuck in one place and shooting for eternity

The game comes on a 3.5-inch floppy disk image, a 2mg. This boots in a slot 5 drive. Set the computer or emulator's speed to FAST (2.8 MHz) before starting. Having booted the disk to the BASIC prompt, type -START and press return.

Exodus.zip (Contains Exodus.2mg)