Back to the Table of Contents
View entry in Giant List
Was "Bellum" your first game?
The first game I got published was "Bellum" through the Atari Program Exchange competitions. I was seventeen and living in Minnesota at the time. I'd been writing simple games pretty much from the time I started programming when I was twelve, but with the Atari 400 I really got into players [Atari lingo for hardware sprites], display lists, palette animation, and all that good stuff. Previously on the Apple II and the RM380Z—a Z80 based computer popular in British schools—it was very much straight bitmap graphics, so the Atari 400 was quite a revelation for me.
I think we all wrote games on early home computers because that was about all you could write on them with the limited memory, performance etc. I began programming on a computer called the Elf II which had am RCA1802 processor and a huge 256 bytes of RAM. Well, actually I began programming in 1976 on one of the first portable computers which was produced by Olivetti called the P101; it used a spiraled piece of wire that stored "twists" on it as the memory.
When I first saw "Space Invaders" I became totally hooked on video games. The idea of being able to write something similar on a home computer was a bit of a dream. The thing that really set the height of the bar for me was first seeing Bill Budge's 3-D wireframe stuff on the Apple II. I really was in awe of the demo of this little space shuttle flying around a globe—in real-time!
What was the computer system like that you used to write "Bellum"?
"Bellum" was written on an 32K RAM Atari 400; the one with the membrane keyboard on which you had to roll your finger presses to get them to register. But I did have an 810 floppy disk drive which made things bearable. The floppy drive was a 19200 baud serial link, but I think you just got used to the waiting for loading plus using the DOS from hell. The DOS on the Atari was very crappy at the time but now when I look at it I can only describe it as criminal!
What's the story behind "Henri"?
I was at college, needed the money, and it was 6K long in total. It "artistically borrowed" from "Mr.Do" which I was very much into at the time. Point is, it paid for my airfare back to the U.S. for the summer.
You were into 3-D graphics long before most people. What got you interested?
It was the natural extension to 2-D; many people in the late seventies were researching 3-D graphics but very few people did anything on a computer smaller than a large Buick. When I saw the pictures produced by Blinn of the first Voyager fly-by I really caught the bug of producing real-time 3-D graphics of simulated environments.
Was 3-D graphics programming rough in those days?
Quite bizarrely nothing much has changed, since CPUs, while much faster, still benefit from many, but not all, of the tricks we used to use. On the Atari 800, on which I wrote "ElektraGlide," you didn't have the processor grunt to do things properly so it was all about writing what you might describe as "soft 3-D systems"—3-D systems that behaved like 3-D but were in fact a big fudge. I was traveling around Turkey at the time and was quite obsessed with what the view of the road looked like through the front windshield of the buses I traveled on!
What tricks did you use to get things fast enough on an Atari 800?
Oh gosh it's a long time ago! Lots of self-modifying code for loops; you'd always overwrite loop set-up variables with the correct values so you could keep the loop in-line—function calls were expensive. Heavy use of lookup tables for pretty much anything involving math, since the 6502 only had 8-bit add and subtract instructions. The general method was often to write BASIC programs to generate the lookup tables which you dumped into the SYNASM assembler or Atari's Macro Assembler.
Specifically, what tricks did you use in "ElektraGlide"?
There was a whole bunch of neat stuff in there! Many games on the Atari 800 ran at 160x96 resolution with two bits per pixel. Since processor performance was so low you needed to minimize how much pixel painting you did. Consequently, lots of the games used redefined character sets, allowing the program to paint just 40x12 characters to cover a full screen in the worst case. Most of the time you didn't need to even do that because the hardware display lists allowed you to scroll the display over large character-mapped areas by flipping a few registers.
"ElektraGlide," unusually, used a bitmapped display in 160x96 mode. One of the technical aims of writing the game was to have real large objects "moving" on the display, unlike the endless 2-D scrolling games that were around. I say "moving" since no way could the processor actually repaint large objects fast enough. It was all a lot of smoke-and-display-lists, so to speak.
I used display list interrupts every other scan-line so I could have fine grain control. The road you were on twisted and turned by horizontally scrolling each scan-line in the display list to give the effect of you coming up on curves. Display list interrupts allowed the rolling colors down the edges of the road. When a tunnel, which eventually filled the screen, came up, I just set up interrupts to change the color registers further and further up the display and also restore the colors further and further down the display with the effect that you got this big looming wall of a tunnel approaching. The tunnel entrance was superimposed afterward using a spare player! More frightening was the case where the road curved inside a tunnel. I needed to blank out the part of the road occluded by the supposed tunnel wall. This was done by placing a large player at the apex of the curve and switching the player priorities at that apex scan line. I did a similar gag for exiting the tunnel, but ran out of players. On overscanned TVs, the darkness of the tunnel runs out at either edge revealing the coming landscape.
I needed to erase the contents of players often, but there wasn't enough time to erase that huge 128 bytes of player memory. I had a system where I could spread that memory fill over several frames just doing thirty-two bytes a time. Sad, isn't it!
The moving objects coming along the road were all drawn at full screen resolution and then resampled, by a program I wrote, down to varying sizes, giving a nice smooth sequence of images that could be shown one after another. In retrospect, it was my first attempt at texture mip-mapping. There was no possibility of drawing these fast enough, so the bitmap images were encoded as collections of players, some horizontally stretched, some not. It worked pretty well.
What was the inspiration for "Chop Suey?"
Big sprites. I wanted to use some routines I'd written to move and display biggish bitmapped sprites. I'd seen an arcade Karate game in London and knew I could do that on my little Atari 800. I was at college at the time and got so into the game that I ended up missing all my end of year exams and being kicked out of college, so I thought I better sell the game after that. I think "Chop Suey" was the first fighting game out there. Actually, Broderbund might have got one out a couple of weeks before our release; I forget what it was called.
How do you feel about the flood of one-on-one fighting games being released today?
I can't get into them. The 2-D ones are tedious but I do admire the technology behind "Tekken" and "Virtua Fighter."
How did your Atari 800 games do commercially?
Really well in Europe. They were all number one in the charts for a time. Things like "ElektraGlide" did around forty to fifty thousand units.
How was the transition from programming an Atari 800 to programming an Atari ST?
Well the first Atari ST didn't have much documentation on aspects of the hardware, although I was dead impressed with the foot high of developer documentation I got, so I spent quite a while figuring out how stuff worked. Having two disk drives was heaven but not having any cool hardware graphics to program, as was in the Atari 800, was not so fun. It was great having a home computer that had things that "serious" computers had like a mouse and a window system. I, like everyone else developing on the Atari ST, dived into GEM only to discover that it was diabolically bad and best kicked into touch by any program you wrote at the first opportunity. Since I was at college at the time and learning all about computer science, it fitted fine to be moving to C programming, with assembler for the fast bits.
Where did the idea for "Q-Ball" come from?
An obsession with 3-D and having friends into playing snooker! I wanted to do a true 3-D simulation and make use of the new found pleasure of having a C compiler on my shiny new Atari ST.
What did you do in the period after "Q-Ball" was released, but before you started work on "RenderWare"?
I did a PhD at London University. It was there that I first came across NeWS [Network extensible Window System]. It was a window system written by James Gosling, now of Java fame, of Sun Microsystems and was truly beautiful in design. It combined high computer science with a "hit the metal" implementation to make it all go fast. The idea is that rather than passing protocol to the window system you sent programs to be executed. For example, if you wanted to draw a ten pixel round dot every fifty pixels in both X and Y covering the display this would normally be a lot of graphics commands to X11 or Windows, but with NeWS you sent a little 4 line program to be executed by the window manager. Way cool.
I was profoundly influenced by Gosling's work in that I finally realized that beautiful structure can be wholly separate from fast implementations.
How did "RenderWare" come about?
"RenderWare" developed partly because of what I learned from NeWS but also because my PhD required fast 3-D graphics. We didn't have any 3-D graphics hardware so I got into writing fast 3-D graphics routines. I started at a job at Canon Research Europe and was allowed to go off and "do some neat shit," I believe the phrase was. So I wrote a little 3-D graphics library for a SunSparc1 that could tumble 3-D objects around in real-time. I also wrote a driver to use the Sparc 1 graphics hardware—a GX board—and found it to be faster than my software-only 3-D graphics. A few months later the Sparc 2 arrived—with the same GX graphics board—and now my software was twice as fast and thus faster than the GX hardware. So "RenderWare" developed from there as we continued the work of building fast, platform independent graphics systems in much the same manner that NeWS was going to be.
Do you still program in assembly language or have you switched to C?
I still program in both but in majority it's C. C compilers have come a long way in the last decade but they still lack the performance you get from assembler.
Do you miss writing games?
Well, real-time 3-D graphics is pretty much games anyway.
How do you feel your games have held up over the years?
I played them a few months ago—amongst others I hasten to add—and I was astonished how simplistic the games were. Games players were much more taken in by cool graphics in those days whereas now gameplay is the most important. Certainly the diversity of games in those days seemed greater whereas so much money rides on the business nowadays that people tend to go for safe options, in much the same way as in the film industry.
What's changed in the game industry since your 8-bit programming days?
Professionalism. When I wrote games I did the programming, the game editors, the sprite editors, the animation, the artwork, the music—well, everything. Nowadays, thankfully, people have realized that programmers are not often good artists!
Are things better or worse than they used to be?
Better, because now we can do much cooler 3-D graphics. I'm really excited about the prospects for the future with some of the hardware that's around the corner—both graphics hardware and just the power of some of the PCs coming out.
What are your all-time favorite games?
There is only one all-time great game, Williams' "Defender," and I have one in the offices of Criterion.