Jim Lawless' Blog

An Interview with Game Developer James Hague

Originally published on: Sun, 02 May 2010 16:08:27 +0000

This post was originally published in 1999. It was formerly hosted at http://www.radiks.net/~jimbo/art/int5.htm

Being a bit of a video-game and classic computer enthusiast, I recently purchased the electronic book Halcyon Days - Interviews with Classic Computer and Video Game Programmers. Note: In 2002, this book was made available to read freely here: http://www.dadgum.com/halcyon

The author of the book, James Hague, is himself a game developer. Since I noticed that his complete bio was missing from the text, I asked if he'd permit me to interview him.

What sort of formal computer training have you undergone?

I have a BS in computer science, but I learned more about programming and computer science on the side than I did in school. In retrospect I almost wish I had majored in something less techie, like English or History.

Why did you choose the Atari computer?

My dad was interested in getting a home computer, though for no particular reason. The Atari 800 was much cheaper than the IBM PC and Apple II, and the C64 wasn't out yet. Other computers like the Vic 20 and Timex Sinclair were less expensive, but too toy-like. When the 800 looked like the best way to go, he dropped me off at a computer shop owned by someone he knew, and I spent the afternoon playing Pac-Man, Protector II, and Caverns of Mars on the display model. Other than an artillery game on a PET, I had never played any computer games before that, but I was hooked.

Your first several years of accomplishments appear to be games published in then-contemporary computer hobbyist magazines. Did you make a living using computers at this time?

Most of them were written when I was in high school, so it was a hobby. All in all, I made around three thousand dollars, which wasn't much considering all the work involved.

Did this get you any sort of notoriety within the industry? Any job offers?

I was somewhat well-known as a regular contributor. I remember a bio that started out with "James has made many memorable contributions to Antic..." which made me feel good. And occasionally over the past nine years I've gotten email from people who typed in my games. It's always cool to be remembered!

Did your high-school have computers? Did you burn 6502 code up one side of the wall and down the other on them?

I took some computer classes in high school on Apple IIs, but they were just fluff. I already knew how to program by that time, and I never did anything on them other than class assignments.

Do you remember your first 6502 program?

The period during which I learned 6502 assembly is a blur. I remember reading Kurt and Don Inmans' _Atari Assembler_. I remember writing some simple code to try out player/missile graphics. Then I jumped into a full-fledged game that quickly outgrew the limits of the Atari Assembler/Editor cartridge. When the author of the manual wrote "This product is best suited for very small projects," he meant it!

What kind of storage medium did you have at this time? Were you saving to cassette tapes?

I had an 810 disk drive by that time. I only had cassette tape when I first learned to program, and it was awful. I could only save relably at the beginning of a tape, and I couldn't re-record over previous data. As a result, the BASIC games I wrote back then were each done in a single sitting, start to finish. That means that the machine never crashed during those hours, which I find amazing today.

Did you graduate to a more powerful assembler?

When the Assembler/Editor became unbearable, I convinced my mom to get me MAC/65 for my birthday. I used it so much I wore out the contacts and had to get a replacement!

What prompted you to try and publish "Bonk" in ANALOG Computing?

Though it was my first published game, Bonk was actually the second game I had accepted by ANALOG. For unknown reasons it made it into print before my first game, "The Electroids." At the time, I was completely driven to write games for a living. I used to pour through the Atari Program Exchange catalog and marvel at the authors' names. I memorized the few interviews with game programmers I could find. I went nuts over Levy's _Hackers_. I eagerly awaited each issue of ANALOG and studied the source code and read all the author biographies.

I started writing Electroids with the intention of having it published in ANALOG. I had little direction when I began; I just made up the game as I went along. The first time I submitted it to ANALOG, they returned it with some suggestions. And, unbelievably, someone had printed out the source code and made comments about optimizations and improvements. I learned a lot about 6502 coding from whoever took the time to do that. The second time I sent in the game it still had some oddball bugs, but they accepted it anyway for $360.

I started Bonk right after I finished Electroids, and it was my second sale to ANALOG. It was a lot of fun to work on; the code flowed smoothly without any real sticking points.

I note that the time-frame when magazines like ANALOG and COMPUTE! were gaining popularity was shortly after or in the preliminary phases of "the big video game crash". Why do you think that game-publishing via source-code in magazines became a craze at this time? Do you think it might have been related to a lack of retail games?

There weren't other sources for cheap games unless you were into the BBS piracy scene. Most people who owned computers were isolated. They didn't have modems, and they didn't belong to user groups. So being able to buy a four dollar magazine full of software, as compared to $30 or more for one commercial game, was a great deal.

Was Tarzan for the SNES your first "professional" game?

Yes, it was the first game I worked on full-time. Tarzan was a horrible, horrible game. After being into original ideas and doing my own designs, I wasn't prepared to have a completely derivative design dropped on my desk. The game ended up looking like a checklist of programming and art tasks--all of which were completed--without any thought given to the playability of the end result. Game-Tek wisely decided not to release the final product, even though they paid for it, and even though it was previewed at least once in Nintendo Power. When people start collecting SNES cartridges, they'll be fighting over the handful of prototypes!

How did you go about making the transition from 6502 developer to SNES developer?

The short answer: by complete accident!

After graduating from college, I worked at a telecom company in the Dallas area for three years. I eventually got the corporate blahs, and started looking for work all over the country. I wasn't specifically looking for game jobs, though I applied for some. In the summer of 1993 I picked-up a Seattle newspaper at a local bookstore and saw an ad looking for a "6502 hacker." I thought it was funny, a 6502 programming job in 1993. I fired off a resume with a copy of the Bonk article and got the job. I was actually hired to do Sega Genesis programming, but because it took me some time to get moved up there and the Genesis project need to get going, I ended up working on the SNES instead.

I believe the Genesis used a 68000-series processor and the SNES used the 65816. Did you already have assembly disciplines for these other processors under your belt or did you have to undergo training?

At one time I figured I'd move from the Atari 800 to the Atari ST, so I bought some 68000 books and learned how to program that processor. But I never actually had the chance to do any 68000 coding until 1995 when I did some compressed sprite routines for the Mac version of Lion from Sanctuary Woods.

It looks as though your last public game effort was six years prior to Tarzan. Were you working on gaming in those years?

During college and the few years after I graduated, I lost interest in games. Well, it was more like I lost interest in the computers that were popular at the time. I almost bought an Atari ST when I was in college, but I'm glad I didn't, because Turbo Pascal on my junky PC was mighty handy for classes. Unfortunately, that PC had a monochrome Hercules card, so I didn't get into writing games for it. I finally bought a better PC after I graduated, but programming it was just so blasted *ugly* compared to the Atari 8-bit machines. I was used to getting almost anything running at 60 frames per second, but it was a complete struggle to get any kind of smooth framerate out of an ISA VGA card. And simple things like sound and timer programming turned into big hunts through bookstores and FTP sites. I worked on some things here and there, but I felt like my effort was being directed at technical problems rather than games.

Not to start a parochial war, but do you prefer using the Mac? Why or why not?

I prefer the Mac by a slim margin because the interface is more focused and has better aesthetics. I also like the fact that I can install and uninstall software myself without worrying about registry and DLL rot. But, as a regular Windows user, I find the two OSes are very similar otherwise. They could both use a little streamlining and re-thinking.

What do you think of Win95/NT as a gaming platform?

If someone handed me a game system with the specs of a current PC, I would be impressed by its power. Yet somehow the PC is less exciting, even though it's basically the same thing. All the driver upgrades and registry problems and install/uninstall hassles tend to take the edge off things. What do you do if a game doesn't run on a customer's machine? Grill him or her about the machine's configuration? Suggest trying the latest video card BIOS and drivers? These are pretty awful options. Even so, there's a tremendous amount of power and potential for amazing games in the average PC.

Are you making a living as a game programmer, or is game authoring a part-time endeavor?

Both, actually. I'm working full-time for a PC game company, and I'm puttering about with my own projects at home. There are advantages to each. A large team can put together things of grand scope that an individual could never hope to achieve. But an individual has the opportunity to try crazy and smaller ideas that would never get up-front funding from publishers.

I'm somewhat surprised that garage game development has stagnated. There's a certain pride that people have in discovering and latching onto underground music, and it eventually gets that music into the mainstream. Wacked-out bands who do their own thing are always cropping up: Cake, Laura Love, Squirrel Nut Zippers, etc. But there aren't equivalents in the game world. The few independent game people have been rehashing the same junk forever: a handful of early eighties games, Tetris, generic platformers, vertically scrolling shooters with techno-organic bosses, and ridiculous attempts to clone games at the tops of their respective genres, like Quake II. Someting isn't right with this picture.

I think that approaching the PC with little experience and the intent to create *any* game is very daunting--much more than than it was on a Commodore 64. The high frustration factor puts people off.

Do you stil code games at the assembly level or do you use higher-level languages?

Bumbler Bee-Luxe, which was released in 1997, was written entirely in PowerPC assembly. Mostly it was because I was frustrated with the higher level tools available for the Mac at the time, and I found an assembly language development system that agreed with me. Machines based around the Pentium 75 and PowerPC 601/66 were somewhat odd. They were fast, but not quite fast enough to effortlessly throw around 300K of screen data sixty times per second.

I'm much happier programming in higher level languages when good tools are available. With more speed in the average PC than people know what to do with, I don't see any reason I'll write more than an occasional subroutine in assembly.

Based on some of your recent Usenet postings, I note an interest in some rather exotic programming languages ( Forth, Scheme/Lisp, functional programming languages, and Perl extensions in languages other than C ). What are your current programming language interests?

I'm interested in fun. On an Apple II or Atari 800, for example, you could just turn on the machine and be writing code in three seconds. A few moments later, after you typed in a formula from your math homework, you were getting results. Imagine using Visual C++ for the same purpose: you have to create a project, you have to recompile whenever you make a change, you have to remember to include header files if you want to display the results or use an absolute value function.

Sitting down in front of Lisp or Haskell or Caml or Forth is unimaginably wonderful in comparison.

Specifically, what is your interest in Forth?

I've had an off and on romance with Forth. It's such a subversive language; you can fit an entire Forth development system into the space taken by the executable header of a "Hello World" program generated by a C compiler. But I've finally decided that the whole Forth concept is too minimal in the modern world. It's like using an artist's paintbrush to paint a house. The Forthers will respond with comments like "If you think you need to paint the house, then you haven't thought about the problem enough." They'll suggest that a tent will keep you dry as well as a house and is much easier to maintain. Meanwhile, someone with a big, bulky brush is almost finished with the first coat of paint on the house. There has to be a happy medium between a 20K Forth and a C++ compiler than won't fit on a Zip disk.

What prompted the Giant List and ultimately Halcyon Days?

I went through a big retro phase back in early 1991 when I discovered Tim Duarte's 2600 Connection newsletter. I bought a ton of 2600 cartridges from people on Usenet, plus a couple of Atari computer systems, a composite monitor, and a new 7800. I don't know what I was planning on doing with all that stuff; I was just overdosing on memories and buying what I would have bought in the early 1980s if I hadn't been a broke teenager.

A year or so later, partly spurred on by the short programmer interviews in The 2600 Connection, I started writing down all of the 8-bit game programmers I remembered and what they wrote. The information was entirely from memory and a stack of old issues of Electronic Games, Video Games, and ANALOG. This was more a private obsession than anything else. I started posting it to rec.games.video.classic sometime in 1994.

A cool side effect of making the list public was that people included on the list would spot themselves and send me corrections and additions and great stories. In late 1995 it occurred to me that I probably had more information on the whereabouts of classic game programmers than anyyone else, and I came up with the idea of a collection of interviews, a la Susan Lammers' great _Programmers At Work_ from the mid-eighties. I made lots of progress on the interviews, but was stalled because I couldn't find a publisher.

You state that Halcyon Days was an experiment ... do you care to share the purpose and results?

I ran into a wall when I proposed Halcyon Days to publishers. Computer books that aren't of the "how to" variety usually don't sell well, and publishers are wary of them. And with a few exceptions, such books disappear quickly. In a bookstore, there may be dozens of shelves of computer books, but only a small part of one shelf is devoted to generalities, and who really looks at them?

By the autumn of 1996, I was kicking around self-publishing options when HTML struck me as an obvious idea. It's perfect: a simple cross-platform solution with an almost universally available viewer. Even ASCII text isn't as portable, because of the different line termination conventions on different machines. The experiment was to see if people would actually accept an HTML publication as a standalone concept without confusing it with the web itself.

At the time it seemed risky, but these days Apple and Microsoft are using HTML for help files, and it's common for programs to ship with HTML documentation.

What can we expect to see from you in the near future?

That's a good question. I would love to do more game design and programming for my own projects--I have all sorts of crazy designs in my head--but the effort involved is immense. There's greater reward and much less frustration in writing articles and maintaining web sites.

Do you have any advice for up-and-coming game developers?

If you're going to work on your own projects, please don't stoop to cloning Galaxian and Tetris and Asteroids and Sokoban and Boulder Dash and so on. There are so many other ideas waiting to be explored!

Unless otherwise noted, all code and text entries are Copyright 1999, 2010 by James K. Lawless

Views expressed in this blog are those of the author and do not necessary reflect those of the author's employer. Views expressed in the comments are those of the responding individual.

stumbleupon Save to StumbleUpon
digg Digg it
reddit Save to Reddit
facebook Share on Facebook
twitter Share on Twitter
aolfav More bookmarks

Previous post: An Interview with the Creator of the BDS C Compiler
Next post:Obfuscated Ruby

About Jim ...

Follow me on Twitter


My GitHub Repository


Recent Posts

Compiling C from the Command Line with Pelles C

A Forthcoming Marvel Movie Villain

Uninstalling Problematic Windows Software

Don't be Hatin'

A JavaScript REPL for Android Devices

MailSend is Free

My Blog Engine

The October 10th Bug

Random Posts

Checking Shift States with DEBUG

Scott Ballantyne: Blazin' Into Forth

Converting Data to XML with AWK

Preserving my Favorite HN Links

A Lightweight Alternative to Windows Shortcuts

A Quine in C

A Command-Line MP3 Player for Windows

JRuby as a Java Obfuscation Utility

Yet Another Enhanced Echo Command

E-mail cleansing

Full List of Posts


Recent Posts from my Other Blog / GitHub

Growing Up with Radio Shack

A BBCode Tag to Display Temperatures in Celsius and Fahrenheit

Fare Thee Well, Dr. Dobb's Journal

Using Standard C Libraries with Yosemite JavaScript

JavaScript Libraries in Yosemite

Command Line JavaScript in Yosemite

Text to Speech, Yosemite, and JavaScript

A Simple (but useful) TCP Client Written in Go

Yet Another Seven Languages in Seven Weeks

Happy 50th Birthday, BASIC

Extending Commodore 64 BASIC

Hide the HTTP-Referer using HTML and JS

RSS Feed Processing in Python

A Chromecast Slideshow using Python

A Simple Perl REPL

Linux Mint on a Toshiba Netbook

Find and View All Images on a HD with Perl

Pretty-Printing an s-expression in Go

My Personal Text to HTML Utility

1985 Computing : Atari and Commodore

My Mac has Mono

Yet Another Config File Reader for Go (Golang)

Filling a Slice Using Command-line Flags in Go (Golang)

An RPN Interpreter in Go (Golang)

Simulating Try-Catch in Go (Golang)

Sending GMail with Go (Golang)

Variant Types in Golang

My First C64 Interrupt Program

The Triangles Puzzle

Happy 25th, Perl !

My Favorite BASIC One-Liner

Playing with OS/X Text to Speech

The Villain at the end of Marvel's Avengers Move is...

Chicken! Fight like a Robot!

Processing GMail items with Ruby

The Squares Puzzle

Happy 30th Birthday, Commodore 64

Scripting Safari

MailWrench CSharp Command Line Mailer for Windows is now Free Software

Welcome Back, M.U.L.E. !

Rainy Day Fun with the HTML DOM

Building a World War II Foxhole Radio

Prototerp Unleashing a JavaScript REPL via the Mobile Browser

Steal This Bookmarklet

Happy Birthday, Miles