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


In 1986 I started drawing a comic strip called Sam Snake. The comic was styled after Garfield and Peanuts, but with a snake. I stapled books of his three-panel adventures together: Sam Snake and Co., Sam Snake on Vacation, Sam Snake: Sportsman and the incomplete Sam Snake: Musician. Even though Sam Snake on Vacation is the only issue with no other characters in it, to my decades-later-eyes it’s probably the best issue, so I’ve scanned it and I’m sharing it here in downloadable PDF form (1.4 MB) to get you in the mood for the game:

Sam Snake On Vacation comic thumbnail

In 1988 I put the snake into computer game form with Sam Snake: Jobseeker. It's a simple graphic adventure inspired by the rising tide of adventure games in the late 1980s which sported more exotic interfaces than what we'd been used to in the past. So instead of just an ENTER COMMAND prompt and a picture of where you were, games on many platforms were starting to sport banks of icons corresponding to player actions, onscreen graphic inventories and non-literal representations of the locations in the game.

The gestures in my Sam Snake game towards these developments are super-modest for technical reasons, but they're there. Sam is always situated in the centre of the screen. Other characters appear beside him when they're present. Your inventory items are represented graphically down the right side of the screen. And though the game is operated by typing commands into a prompt, there are only five commands, and they're all specified at the start of the game, which is kind of like a text implementation of an icon action system.

(Here’s the 4 minute playthrough of the whole game. Don’t watch it if you wanna try it yourself first.)

A lot of the time when I was trying to come up with ideas for games, I would get them from screenshots and reviews in computer magazines. In the UK at this time, 8-bit computer gaming was still going gangbusters, and even though the UK magazines didn't review Apple II games, they were the magazines I would ask my parents to buy me at the newsagents here in Australia (which they did a few times a year) because each issue was jampacked with games, reviews and screenshots. A single issue was capable of exciting my imagination for months, even years. So while I can't remember any particular games I was emulating as I made Sam Snake, I'm sure I got ideas from these magazines.

I drew the shapes for this game (the Apple II's BASIC-supported sprites are called Shapes) using Apple Mechanic's shape editor. I didn't use large shapes like this in many games because I always found them to be a total pain. For non-Apple II heads, a shape is essentially a vector graphic, but you have to create it as if it were a continuous line drawing. As you draw your shape, you may not lift your virtual pen off the paper, though you may toggle the ink coming out of the pen. Moving the pen while it's inkless takes up memory. And if you realise while drawing a shape in real time that you made a mistake earlier, you have to reverse all the way back to the mistake, erasing everything that occurred after it in the process. Apple Mechanic's shape editor tried to make this process less painful than if you were rolling your own shapes, but it still couldn’t spare you from the continuous line drawing aspects. That's why most people coded shapes entirely on paper first — it was too difficult to get what you wanted otherwise — and I never had the patience or knowledge to do it that way.

I later discovered that the only shape creation program I could bear to use (and, nay, actually liked) was Apple Mechanic's Font Editor, but I’m not up to that part of the story yet.

The sound for Sam Snake is of the most elementary BASIC kind, achieved by randomly tweaking the speaker softswitch. I don’t think I’d cottoned onto the tone generation routines demonstrated in Apple Mechanic yet.

The game code itself is split into three BASIC programs of about 20 sectors (5 kB) each, and I write a text file to disk to pass values between the programs when switching from one to another. Why didn't I just write one 60 sector program? Well, at this point in my programming life, I had discovered that even moderately long BASIC programs will waltz through the Apple's primary Hi-Res screen memory, glitching the graphics and capping the program in the process. But I didn't know of the "high start" trick yet (described in my entry on my game Illuminate) so I avoided the problem by splitting this game up so that no individual part of it would be big enough to crash into the Hi-Res memory.

There's a small danger of the aforementioned text file being left in an unhappy state after an accident (e.g. if you reboot while the file’s being written or something) which could prevent you from being able to start a new game. If this happens, the game will crash at line 855 in the first program, and tell you that’s what it just did. I've added a utility program to the disk which can fix this problem if it occurs. If the crash happens to you, you will find yourself at the BASIC prompt. You should then type RUN FIX.TEMSNA and press RETURN to reset the text file to its default state. Then just reboot the game and it will work again.


sam_snake.zip (Contains sam_snake.dsk)