I’ve been programming and designing games since I was 11, way back in 1979. Almost every day of my life since then has been consumed with a passion for coding, designing and playing games.
Nowadays, the PC is my main platform for game development, but back when I started to really learn how to program, my main machine was an Apple II. Ah, the days of programming for a fixed spec platform! You had a constant speed that all Apple IIs would run at (1Mhz!), a standard graphics display that never changed, and a pretty much set amount of RAM that everyone had in their machines (64K for II+/IIe, 128K for IIe/IIgs).
The mainframe days, or “not having a computer” days
The first computer I ever programmed was an HP 9000 mainframe. It was the summer of 1979 and I was at home with no money to go to the arcade and play Pac-Man (my main addiction). Back then I practically lived in the arcades. The new arcade machine smell, the cold air, the brand-new sounds of these wonderful new machines filling the dark, dark space….ah, it was heaven.
Well, this one day in July, my brother Ralph and my friend Robert had been out all day. When they came back, they rushed into the house all excited, telling me that we could play games for free up at the college on the computers! We jumped on our bikes and rode back out to the college and that’s when I saw my first computer, well, my first terminal, actually. The computer was in another room and it was huge, but not visible from the computer lab where we were.
From then on, we would spend our Saturdays up at the computer lab, watching students play Colossal Cave Adventure and then spend time learning HP-BASIC. My first game was written in HP-BASIC and it was a simple text adventure (I was emulating Colossal Cave as my first game project). Since I wasn’t a student, the only way to save my games was to use the PUNCH CARD machine.
My first game grew to be about 250 of these cards and when they all fell off the back of my bike into a puddle of muddy water, I was done with any larger-scale programming until I could save on a disk. Actually, I used the paper tape machine after that point and it was … better. At least I could feed all the tape into the reader and it would zip the whole thing in and I would have my program in memory (and the tape didn’t fall all over the place). But sometimes if the roll of tape wasn’t secured well, it would come unraveled and be a pain, but it was nothing compared to the living hell of using the punch card system.
So, I was plodding along programming text games in BASIC until the computer lab finally got some Apple II+ machines. That was the day that got me really interested in computers. COLOR! High resolution graphics! Sound!
I was hooked. Robert and I gathered up all the information resources we could find and promptly started learning Applesoft BASIC and how to do graphics. It was a “knowledge race”, really, but after a while we didn’t care who won — we were learning cool stuff and having lots of fun. I would come home with more and more knowledge about the Apple II and tell my Dad everything I had been learning. After a couple months of this, he finally decided that maybe it was time we had one in the house. Oh yes…. heaven.
The Apple II days
From the moment my Dad bought our Apple II+ in 1981, all my time on that machine was spent programming my own games and playing everything I could get my hands on. I started at the beginning: Applesoft BASIC in Lo-Res graphics (40×40 pixel res, 16-colors).
There were actually a lot of Lo-Res games available for the Apple II. In fact Silas Warner’s (Castle Wolfenstein) first commercial game was a Lo-Res game named Firebug (MUSE, 1980) – it couldn’t be all that bad! (Actually, Lo-Res was much more fun in 6502 Assembly).
Then I moved up to Hi-Res graphics (280×192 pixel res, 6-colors) and started using HPLOT to draw lines to construct my screens and draw all the game’s graphics. Very slow, especially in BASIC, and animating anything was just awful-looking. During this period, I was using all HPLOT/HLINE graphics — no shape tables and of course, no bit-mapped graphics.
I wanted to make shoot-em-up games (as they were called back then) so badly, but I lacked the necessary coding skill back in 1982. My programming projects were usually copies of the games I was playing, just so I could see if I could even come close to duplicating the programming skill it took to create commercial game software.
I knew that I had to learn 6502 Assembly, and that was not going to be easy. I remember back in 1981, my friend Robert Lavelock (who introduced me to computers in the first place) showed me a hex dump of Nasir Gebelli’s Gorgon. It was a screenfull of hex (which I didn’t understand back then) and he told me, “That’s the program for the game.”
Uhm. No way would I be able to understand that garbage! I didn’t even know hexadecimal! If this is what programming was all about – understanding a wall of hexidecimal numbers – then is that something I really want to do? The answer was Yes if it eventually got me programming games for real.
Soon my parents got me a copy of Programming the 6502 by Rodnay Zaks (owner of Sybex Books). My god, what a DENSE book. It was not written with the Apple II in mind — there were no type-in examples of a program; most of the book was about the processor’s internal structure and nothing about how to program an Apple II. I was even more put-off by 6502; if I had a book right in front of me, why couldn’t I understand the language??