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


Tunnel Runner (what there is of it) comes pretty early in my gamemaking history and might be the first game I wrote making use of the Apple II's Hi-Res graphics display mode. I wanted to make a side-on flying-a-plane action game like those I was playing on the Apple II or at the arcade at the time, but I had almost none of the programming skills required for such a task. So, to adult eyes, what I actually ended up making was a turn-based parser game where a player enters commands one at a time to control their ship, though the display does approximate a simple version of a side-on shoot-em-up like Scramble. Just eleven nodes of the game are programmed. I must have lost interest or given up.

Tunnel Runner title page screenshot

What I think I can remember about making Tunnel Runner is my general excitement about the idea of it and the subsequent absence of any logic-fuelled thoughts that might have stopped me from trying. I used whatever I'd gleaned from my dad's programming lessons thus far to make something as much like the thing I wanted to make as I could, no matter how great the gulf between vision and reality.

Tunnel Runner gameplay screenshot
Tunnel Runner Game Over screenshot

I knew how to print text to the screen, how to manually draw graphics by specifying coordinates on the display and how to ask the player for a line of typed input. I didn't yet know how to wait for a single keypress, and I had no clue how to keep a game moving — in other words, how to create a real time game of any kind — while also collecting keyboard or game controller input. I doubt I even knew how to store numbers in variables yet because I see in the game's program listing that I was manually printing the score on the screen each turn. More horrifically, the plane and other objects are redrawn at each position they can be in using absolute coordinates. I stored no X or Y coordinates and was yet to learn of subroutines.

The control scheme for Tunnel Runner is a little weird, though makes sense in light of Apple II games of the time. I, J, K and M were commonly used as an up/ left/ right/ down keyset. To that I added O for diagonal-up, the comma key for diagonal-down (look at where it is on the keyboard) and L to shoot. Maybe L stood for laser, or maybe I just picked it because it sits next to the block of navigation keys. Also, the Applesoft text string collection mechanism doesn't actually accept commas, so you'll note that if you play this game and enter a comma, or if you watch the demo video on this page, that the peculiar error message EXTRA IGNORED flashes by at such moments.

Tunnel Runner's input phases are feebly programmed. If you don't enter exactly the control key or keys the program is looking for on a particular turn, the game just falls through to whatever turn comes immediately after the current one in the program listing. In other words, most of the time it doesn't matter what you type. This is because I hadn't yet learned to end each input collection routine with a GOTO safety net to redirect non-matching input back to the entry point. It's only on the turns where there's genuinely more than one thing you can do that it's important to enter the correct command. At such moments, typing garbage usually defaults to the losing choice due to the missing safety net.

I remember thinking Tunnel Runner (the imagined entity) was very cool. I made a paper package for it with a cover illustration, and wrote a blurb on the back, and I put it on a floppy disk all on its own, because that's how commercial programs were delivered. I don't have the package anymore.

The intended correct sequence of moves is as follows, except that for the moves with a bracketed (anything) listed after them, you can indeed type anything and succeed:

O (anything)
O (anything)
O (anything)
O (anything)
O (anything)
L (anything)
K (anything)

The I move is to get your ship back up in line with the enemy ship in readiness to shoot it.

The K move is to take a step forward so that you don't get inexpicably shot from below.

(Here’s the short demonstration of all of Tunnel Runner.)

Tunnel Runner is now on the same DOS 3.3 floppy disk as a good number of other original games of mine that I'm either most likely or possibly planning on talking about in future episodes of this memoir.

On the most likely pile:

  • ADVENTURER (ASCII graphics joystick actioner with three levels)
  • CIDER (Lo-Res joystick action game in which you catch falling apples)
  • FROSTY (Hi-Res action joystick game with three levels)

On the maybe pile:

  • STARRIORS (a CYOA set in the Starriors toys world)
  • TONGUE ZAP (a Lo-Res action game in which you are a frog trying to tongue zap flies)
  • TONK (a very early parser adventure of mine set in the world of Tonk, though I've never played the real Tonk game to this day)

The other files on the disk are a mixture of programs of mine too minor to bother writing about and games I typed in from magazines or Usborne programming books.

To play Tunnel Runner: After booting the disk, type CATALOG at the prompt. If the file list goes off the screen too fast, enter CATALOG again, but be ready to hit CTRL-S to pause the catalog as it prints out. Hit CTRL-S again to unpause. To run Tunnel Runner, type RUN TUNNEL RUNNER. To run any other program you saw, type RUN (PROGRAM NAME). This is a DOS 3.3 disk, so use ALL CAPS or your commands will fail with SYNTAX ERRORs. The programs on the disk also interpret lowercase input as garbage.


To start the game, type RUN TUNNEL RUNNER and press return.

wade_dos33_a.zip (Contains wade_dos33_a.zip.dsk)