I have a new place to put links to things I think are worth keepin track of: http://carlgay.soup.io
In 1982-3 I wrote an arcade style game for the Apple II called Millenium Leaper and sold it to a disk magazine called Softdisk. I didn’t think much about it again until in 2007 I was having a conversation with someone about old computer games and it occurred to me to search for references to it on the net. To my utter surprise I found that it could be downloaded in a bundle with another game from the same period called Beer Run, and I could run it on Windows in an Apple II simulator. I didn’t do much with it since I was involved with a fun project at work. It came up in conversation again recently and I decided to write up my experiences developing the game, and to document the game itself. This effort is mainly for my own satisfaction in recalling old memories, but I hope it will be of some interest to others as well.
In 1982 my dad bought an Apple II+ computer. I was just out of high-school and had a job washing dishes while I figured out what to do with my life (although I didn’t realize that’s what was going on at the time) so I had time to burn. My dad showed me how to do a few simple graphics tricks in Applesoft BASIC and before too long I relocated the computer from his room to mine.
Pretty quickly it became obvious that there was no way to do the types of things I was seeing in the video arcades and in some of the more advanced Apple II games of the time with Applesoft BASIC. I had to use something that would allow me to write directly to the HI-RES video memory and I ended up getting a copy of the LISA assembler by Randy Hyde and teaching myself 6502 assembly language. (Some time later I contributed code to that assembler but for the life of me I can’t remember what my code did. I received some paltry royalties for my contributions…I have to wonder if Randy was just being kind to a young kid since I’m sure he could have easily written the same thing himself.) I’m not sure if there were any C compilers available at the time for the Apple II, but I didn’t know enough to look for them if there were.
I embarked on what turned out to be an almost two-year project to learn 6502 and write a video game. Many of the details of that process elude me. I remember learning some basic techniques like a routine to convert hex to decimal, then experimenting endlessly to create some cool sounds on the speaker (
$C030). There was a mode in which you could display hi-res graphics on the top 3/4 of the screen and text on the bottom 1/4, and I used this to manually modify memory and see what happened to the graphic display. For example I might store
#$81 at location
$4000 and see the pixel at
x=7, y=0 turn green. I played around with this enough to start writing some graphics routines like drawing lines and circles. Eventually I wrote a very simple graphics editor with which to create images and save them.
At the arcade I was heavily into Robotron, Donkey Kong, Defender and Joust, and I basically set off to figure out how to make something similar to Donkey Kong because it seemed the most doable on an Apple II+. Here’s a description of Millenium Leaper, approximately in the order the screens appear during play.
All the screen shots can be viewed at full size in Picasaweb. Presumably the BAUD BANDITS, marked on each text page, are the folks who packaged the game up and put it on the web. Kudos, whoever you are!
The very first screen you see upon startup is this little beauty. Apparently it never occurred to me that making the title page appear first might be a good idea.
Should I call the cops?
The title page is animated. The title appears one letter at a time as the aliens run back and forth underneath it making noise.
The game enters a demo mode where it shows each level in action, while it waits for you to remember that you have to hit the ‘1’ or ‘2’ key to select the number of players.
The game commences. Why is the timer set at 9990 instead of 9999? I have no idea!
Level 1 — You control the little man, who runs around trying to collect the numbers 1..9 and finally 0 (because 0 comes after 9 of course). The green blocks disappear if you run over them, which can be used to isolate the aliens since they can’t cross the holes. But if you isolate an alien and later a number appears in that area it can be hard to get the number. The hole in the bottom floor moves left to right, which makes it difficult to jump when running left to right.
On completion of a level, the screen scrolls down and an elevator drops down (with attending sound effects) to take you up to the next level.
Level 2 — Run up to get the numbers while jumping the rolling barrels. The barrels may fall off the end of each ramp or decide to come down the ladders.
Level 3 is pretty much the same as level 1 except that the floors “slide” left or right as though they were conveyor belts. It is probably the hardest level to get past, and the least well designed. The running of the little man is extremely choppy, so it can be hard to transition to the ladders. I think I was trying too hard to come up with something a bit different that didn’t require a huge amount of additional coding.
Level 5 — Getting a bit random now, by miking up barrels and ramps and whatnot. I haven’t been able to make it to this level in the emulator yet, but if I recall correctly one of the main difficulties was needing to jump between the left and right sides and having to open the parachute quickly.
High scores. I don’t think they were saved to disk.
I don’t recall a lot of specifics about the implementation except that I didn’t know anything at all about game design or good coding style. Abstract data types? Functional decomposition? Never heard of them. You might have noticed that all the surfaces on which the aliens and the little man run are solid white. That’s because I used that to detect where the floors were rather than encoding any sort of model of the virtual world into data structures. That, plus a few rules such as the maximum height of a jump and bouncing off the edge of the screen were all there was.
Using the Apple2Oasis Emulator
- Download the emulator and unzip it.
- Download the game from here or here and unzip it.
- Run the emulator, apl24win.exe
- Press Control-F12 to get a BASIC prompt (dunno why)
- Press Control-F4 to load a disk image and specify the .dsk file you downloaded in step 2.
- Press Control-F1-F12 all at the same time.
- Press ‘R’ to choose Run from the menu
- Press ‘C’ to choose Millenium Leaper from the menu.
Sometime in 1983 I managed to sell Millenium Leaper to Softdisk magazine for about $300. That probably works out to about $0.50 per day or around $0.08 per hour. In 1984 Softdisk offered me a job as a game programmer and flew me down to Shreveport, LA for a look see. Despite the fact that I was still working on the loading dock at Symbolics at that point, I turned them down. I was fascinated by the Lisp machines at ‘bolics and I just couldn’t imagine living in Shreveport at the time, though I often wondered how things might have turned out if I had.