Interview with CHRIS LATHAM

 

Chris Latham lives in Russellville, Arkansas, USA and is the creator of  Donkey King, one of the first most popular arcade conversions for the Color Computer in the early 80's. He later created the first 64K arcade game for the Color Computer titled Sailor Man, a conversion of the arcade game, Popeye.

On the right is a photo of Chris with his son "CJ", one of seven children!!

Photo of Chris Latham

Programming Achievements

PRODUCT

CPU

DISTRIBUTOR

YEAR

DESCRIPTION

Moon Lander

CoCo1/2

Tom Mix Software

1982

Clone of arcade "Lunar Lander"

Dancing Devil

CoCo1/2

Tom Mix Software

1982

Clone of "Dancing Demon"

Donkey King

CoCo1/2

Tom Mix Software

1983

Clone of arcade "Donkey Kong"

Sailor Man

CoCo1/2

Tom Mix Software

1983

Clone of arcade "Popeye"

Reactor Simulator

CoCo1/2

Rainbow Magazine

1983

Simulation of a Nuclear Reactor

EDT

CoCo1/2

Sonburst Software

1984

Editor for ASM editing

MAS

CoCo1/2 Sonburst Software

1984

Very fast disk Macro Assembler.

UIS

Atari ST

MacDonald Assoc.

1987

Replacement for GEM Item Selector

PowerDOS

Atari ST

MacDonald Assoc.

1991

Replacement for Atari TOS

ViewTouch

Atari ST

ViewTouch, Inc.

1992

Restaurant Management App.

NOTE: John Erickson assisted with sound in Sailor Man and the complex calculations in Nuclear Reactor Simulator. Original Dancing Demon on the TRS-80 Model 1 by Leo Christopherson.


How and when did you become interested in computers?

My first introduction to computers was through a teletype connected via phone line to some mainframe at a bank. I don't know what kind of machine it was, or its actual location. I was given an account with twenty hours a month when I showed interest after my tenth grade geometry teacher brought the teletype to class (dragging a phone extension cord from down the hall). I learned some BASIC, and ran some of the games on it. I made copies of some of the programs, notably a drag race program that years later was entered onto the CoCo. The program did some hairy calculations to compute the speed and location of each car for each second throughout the race, and though it ran reasonably fast on the mainframe, it took minutes to calculate each second of the race on the CoCo. Alas, after that year I lost interest and went on to other things.

What made you choose the Color Computer?

I had not used a computer for about 6 years after high school, and was only superficially aware of the early computer revolution. I had spent my time flying (both real and RC models), motorcycles, and working in construction (namely framing and sheetrock installation and finishing) to pay for it all. I was with my Uncle in Radio Shack one day to buy stuff for phone hookup in a house we were working on, when he walked over to the display showing the newly released Color Computer. He was saying something like "That's what I want to get", or some such, and at that moment, the course of my life changed forever because I knew I wanted one of those; why, I didn't know, just that I had to have one. I say the course of my life changed, because I had planned to be a General Contractor up to that point, but here I am nearly twenty years later working on and around computers for a living. Of course the irony is that while my Uncle wanted to get a CoCo before I knew what a CoCo was, I had one first.

What computers have you owned and currently own?

I bought two CoCo's, and though I have other machines in my possession, they were all loaned or given to me for programming work. I have an Atari Mega ST and a TT, which Atari loaned to me to create drivers for some networking software I was working on. As they are out of business or some such, I don't think I'll be contacted about returning them. I also have two PC's, a 386 and Pentium that were provided to me in order to write some special conversion software for a company in Oregon that does CNC milling work. I also (finally) bought a PC this Christmas for my daughter Melissa (an E-Machine and ViewSonic 17" monitor), but I don't count this as it's hers. I also carry a Toshiba Tecra 8000 laptop machine back and forth to work, but it belongs to Sprint PCS.

What companies did you work for and who do you work for now?

Myself most of the time, but my software was marketed by Tom Mix (yes that is his real name) Software. I was self employed in all my software endeavors until I worked for ViewTouch. I now work for Sprint PCS as a switch technician .

Can you tell us any interesting "stories" of your past development days?

I was asked to be a guest speaker on computer game animation at the first Rainbow fest, right after the release of Donkey King. I guess Lonnie Falk assumed I was some kind of wiz, but in fact I was just a self taught hack who couldn't speel animasion, let alone teach others how to do it. After I agreed to attend the show, I was terrified about getting in front of a group of people to talk about something that I knew so little about. When Rainbow hadn't contacted me about arrangements with less than 2 weeks until the show, I took this to mean that I had to pay for my own flight and hotel (whether I did or not doesn't matter), and I used this implied insult :^) to ungraciously back out (hey, I was only 22!).

I never attended any Rainbowfest after that (I was never invited, I wonder why?). Later when I was involved with Atari's, I was working on an upgrade to UIS, which was to be available at an Atari show in Seattle. I didn't get it finished in time, so after arriving in Seattle on Friday night (the show started Saturday morning), I worked through the night in the hotel room to get it finished. About noon Saturday I showed up at our booth and we began making copies right there on the spot for a long line of customers. Now, of course, the program had serious bugs in it, but what do you want after a sleepless night of coding?

So you never attended any RainbowFests?

I never attended any CoCo shows. I did meet one or two ex-CoCo programmers at an Atari ST show in Seattle in about '88, but I don't remember who it was, except that they distributed through DataSoft.

Could it have been Michtron?

No. But come to think of it, the Michtron guy moved to the Atari too. I met him at an Atari fest; he asked me to do an update of the Time Bandit program for the Atari. I started some design work on it but I am not an original thinker, at least on games design. Given a clean slate to start with, I ended up with a white elephant in a whiteout, i.e. no ideas where to go with it. So I dropped it.

Did you ever meet with Lonnie Falk?

I never met Lonnie Falk, Tom Mix or anyone else for that matter. I basically never left the Grants Pass area of Oregon all through the time I was doing CoCo software. It's a good thing the phone had been invented by then, or I would have been completely out of touch.

How did you get involved with Tom Mix as a distributor?

After getting a handle on writing in BASIC, I wanted to do the first thing that about every new programmer does: write a game. Atari's Lunar Lander looked like it was doable using the routines in Extended Basic, so I did a reasonable clone. It was slow, and the background landscape didn't scroll, but it played well. I never intended to sell it, and never thought of actually making money with the CoCo. I sent it to a magazine, I don't remember what the name of it was, but it wasn't the Rainbow. Somehow, Tom was known to the editor of that publication, and had been talking about starting a software business for the CoCo. So when my program showed up in the mail, instead of printing the source in his magazine, he gave it to Tom, and suggested he call me. So out of the blue I get a call for Tom Mix, that he had my Lander program, and suggested that it be published and sold since there was a dearth of available programs for the CoCo at that time. I think my Lander clone was the first program that Tom sold. Anyway, I remember getting my first royalty check (I think it was for $350 or $400 bucks), so I was jazzed about doing games and exiting the construction industry. Since Tom was my first contact with anyone in the CoCo industry (other than Radio Shack employees, who knew about nothing regarding the CoCo), he ended up being my distributor.

What are some of your favourite CoCo products of all time?

I though CoCoMax was the coolest thing I had ever seen, and that prompted me to take my first look at the Mac. From that point on, I wanted to do that kind of stuff with the CoCo (I have no idea why), though I soon left the CoCo behind.

I also thought Zaxxon was the best clone of an arcade game on the CoCo, but then I liked the arcade Zaxxon a lot. Tom Mix also had a game that was based on Tutankham that was pretty cool and moved quite smoothly. I guess any game that did scrolling movements were impressive to me simply because I knew how tough it was to do that with the CoCo (or maybe it was easy, but I just didn't know how to do it).

What is your opinion on Software Piracy?

Back in my CoCo days, I believed Tom Mix when he told me that I would have made a million dollars (or at least another 20k) if DK wasn't pirated so much. "Bad pirates, terrible cheats", thought I, so I wrote a disk copy protection scheme for him that was part of a disk duplication program. You loaded it into a 64k CoCo, then it loaded the program you were to write to the floppy, told it how many and which drives to copy to (up to four), then it prompted you to insert and remove disks as it went from drive to drive making copies. It wrote the target program onto disk encrypted, and wrote the six byte key as one byte per track in a single density format on top of a double density format. This meant you couldn't directly copy the disk or break out of the program. Or so we thought. It took Marty Goodman and crew about two weeks to crack it, and Spittin' Image was updated to be able to copy it within a month. The real losers were the users who didn't know Dr. Goodman or have a copy of Spittin' Image. Many disks were returned, because they wouldn't work on some disk drives, or sometimes they failed outright after a few months of use. Since then, I can't stand copy protection schemes, as they only interfere with legitimate users and do not guarantee sales of a program, and am rather ashamed that I actually wrote one of those beasts. But what about the cheats who kept me from becoming a millionaire (or at least a thousandaire)? Well, I no longer believe that "they" existed; at least, not enough to make much difference. If we could have somehow prevented anyone from using DK if they hadn't paid for it (foolproof copy protection which can't be broken by software crackers and always works for legitimate users; i.e. a real fantasy), I doubt that our sales would have increased much at all (maybe a percent or two). There are those who will pay for software, and those who won't. If they won't pay for it, even if it means not being able to use the software, then I don't care if they have a "pirated" copy, as it would have never been a sale anyway.

I remember playing a game on the Atari, which was available for free for all the major platforms; you could get it from any online service of the time. It played great, but in order to get to the higher levels, you had to have a companion book, which was I think about $20 or so. In other words, they gave you the software, and sold you the manual, which was printed in such a way that you couldn't photocopy it. So maybe it is possible to have "foolproof copy protection which can't be broken by software crackers and always works for legitimate users".

So, do I have "pirated" software on my system? I think I have a few "illegal" MP3's, but no pirated software that I can think of. Maybe a few shareware things I've never paid for, but show me a user who doesn't, and I'll show you a person who always drives the posted speed limit.

What was your opinion of the CoCo1/2/3 hardware platform?

I thought it was cool at the time. Of course, modern PC's have more computing power and memory in their little pinky, but I loved it at the time. As for the CoCo3, I was out of it before its release. As for the 6809, I enjoyed the heck out of that processor; even though I've written a lot more 680x0 code, for me, the 6809 will always be my favorite.

What was your philosophy to video game design?

I don't think I had a philosophy on game design. I wanted the games I did to look like and have the same levels as the games that were being cloned. That's where I think the Atari clone of DK was so crummy, in that the levels didn't look the same. So I guess my philosophy, as a copyist, would be to make it as close as possible to the real thing, as close as the hardware limits would allow. Since I never did anything even approaching original as far as video game design goes, I don't think I am qualified to comment on good or bad design. The people that created the original games in the first place are the ones that are qualified to make such statements. I mean, PacMan was a cool game; simple in play and graphics, yet very fun to play (my kids still play it on their Nintendo). So ask yourself, "How did he come up with this idea?". Or how about Missile Command? Or for that matter, Donkey Kong? Unless I had come up with an original game, I don't feel too qualified to comment on game design philosophy.

What graphic techniques did you use to create the 'sprite' graphics in each of your games?

The graphics in DK sucked because of the flicker problem. Essentially the sprite engine used a copy of the background screen to erase the last character position, then draw the new character. It did this without regard to other sprites, so if there was overlap, the erase would take out parts of the underlying sprite. Also it did not take any notice of where vblank was. The result was a bad flicker. Of course, most early CoCo games suffered from this.

Screenshot of Donkey King

DONKEY KING

The other problem was the shifting required to align sprites to a specific pixel boundary. You needed to shift in multiples of two to keep the colors correct, so you could require 0, 2, 4 or 6 bits of shift, and this was slow to do. This limited your sprite draw rate, and thus the number of sprites and the refresh rate. As for the mask required to block out the background, this was generated on the fly, and was thus not good at all boundaries between the sprite and the background; sometimes the colors would run together, so you would lose definition of the sprite border.

I set out to solve as much of this as I could with Sailor. First, each sprite had a mask, that was designed slightly larger than the sprite to create the outline border (I think I got the idea for the outline from Track and Field, but it could have been a different game; I know I didn't come up with it on my own). Second, there was little (or no) shifting of sprite data. The characters were designed to exist at specific bit positions, so the positions of stairs and such where placed at byte boundaries. When the sprite is moving, it goes through a sequence that takes it through all four bit positions within the byte, using the walking motion to hide this fact. There were times when shifting was required, for instance, when Brutus goes flying across the screen, and when Popeye is on the moving platform on the ship level, but shifting was kept to a minimum.

Many sprites were also made up of several parts; for instance, the head might be a different sprite, so you could use different heads on the same body (when Popeye gets red with rage after eating the spinach, only his head changes color, i.e. a different sprite).

My biggest change between DK and TS was the use of 64k. 32k was just too limiting, what with having to take out ram for the screen. This allowed me to do the cell animation the best possible way: double buffering. Simply put, you have three screens. One is a copy of the unchanging background and is never seen by the player. The other two screens are alternately shown to the player, while the work of undrawing and redrawing the sprites is done on the screen that is now hidden from view. That means that the player only sees a static screen with no active drawing on it. Screens are also only swapped when a vblank occurs, so there is no noticeable flicker.

Screenshot of Sailor Man

SAILOR MAN

When I had all this worked out, I thought I could reach a goal of a new screen shown every third vblank period, or twenty frames per second (on 60 hz systems). In order to maximize my computing time, I also resorted to stacks. What was done was to build a stack of sprite data pointers and their positions on the screen, along with an erase stack that would later be used to remove the sprites. Two stack pointers were passed to each subroutine that was in charge of a given sprite. That routine kept state information about how its character was moving from the last time it was called. The new position would be calculated and a pointer to the proper sprite data and its mask would be placed on the stack, along with the position at which to draw it. On the second stack would be placed the position, height and width information used to erase the sprite. The subroutines for all the characters were called in this fashion, each placing the required pointers and position on the two stacks, but no drawing was done yet.

As the required vblank occurred, the screens would be changed (assuming all drawing was finished), and work would begin on the newly hidden screen. First, the stack containing all the erase positions from the last time that screen was drawn was used to completely scrub the screen. I thought about just using the background screen as a source and just copy it, but as sprites were a rather small percentage of overall screen real estate, it was quicker to copy smaller blocks, even if there was some overlap. After the screen was scrubbed, the sprite position stack was used to draw all the new sprites, by using the mask to clear out a hole and merging in the sprite data. In this way, sprites could overlap without flicker. As an example, if Popeye knocked the bucket onto Brutus' head, he could then walk behind Brutus. He could also have been in front of Brutus just by changing the order of the called sprite subroutines. After all the sprites had been drawn, the screen was now ready to be displayed after the third vblank from the last screen swap. Instead of just twiddling the processor's thumbs waiting for the vblank, the stacks for the currently showing screen would be rebuilt by again calling the subroutines. Sometimes the new positions would be completed before the next vblank, sometimes not, but we would still be most of one screen ahead.

Now, we have a screen drawn and ready to display, and if all of the new positions for the screen currently being shown are calculated before the vblank, then there really is nothing for the processor to do but waste cycles.

This whole process worked rather well, and only on the second level (where Sweetpea is hanging from a balloon), at higher levels where the sea-witch throws five skulls in a row at Popeye, does this break down. I counted about 33 or so sprites on screen, and it occasionally would just miss a vblank, so you could get a noticeable slowdown glitch in the screen. Just one or maybe two in a row where it would take four vblanks (I didn't want to change the screen base address, except at vblank, even if it did cost one blanking period). Anyway, when it did this was rather rare, so I didn't worry about it.

Screenshot of Dancing Devil

DANCING DEVIL

One of the other innovations involved the pain-in-the-butt color artifacting that was used on most games in order to get a true black background. On DK (and most other games for that matter) you were required to press the reset button to get the phase correct between the TV and the CoCo. That way, what you considered blue would be blue and the same for red. In Sailor, I also asked for the color from the user, but used this information to either shift the sprites one bit (left or right depending on the sprite) or leave it alone. This way, you didn't need to hit the reset button. The code to do this was quite large, and it along with routines to read the previous high scores from either disk or tape (my own routines; I didn't switch to the ROM's to do this), was in the part of memory that would become the second screen and the screen for the background. That gave me an extra 12,288 bytes to play with for startup code and such; it would be lost as soon as all the initialization and reading of high scores was done.

How did you "capture" the original graphics into your games?

I had a book for arcade addicts that had hand drawn representations of how each game looked on each of its different levels. This book had both Donkey Kong and Popeye covered. I also made many trips to the arcade to play the games while I was developing them, to get a feel for the game play.

What was your impression of the quality of games for the CoCo then? What did you aim to achieve in developing "The King" and "Sailor Man"?

Well, I thought that CoCo games in general looked better than Atari games (400 and 800), even though those machines had better graphics support. I guess the 6502 sucked so bad that there was a limit on what you could do, even with player/missile graphics. Of course, the sound was crummy, at least when you were doing graphics. The best I was able to achieve was the "click, click" of walking. I know some better sound was achieved by others.

As for what I tried to achieve…well, I was just having fun. I was pretty blind about the limits of the CoCo at that time, though I wished it at least had better sound hardware. I really thought at that time that I could come out with one or two games a year and live happily ever after. I wasn't familiar with Moore's law, and that it applies to the complexity of games too.

Was copyright ever an issue when writing clones of arcade games?

Tom Mix was threatened by Atari lawyers for DK, though he blew them off and nothing ever came of it. I found out later that a license was not nearly as expensive as he let on, and we probably would have made a lot more money by being able to actually call them Donkey Kong and Popeye. All in all I made about 30k from DK, though Sailor was a disappointment. It took only about a month and a half to write DK, but Sailor required about five months; it only made me about 7k. It kind of flopped in the arcades, but I thought it looked so cool I just had to do it. I should have done a game that had people standing in line at the arcade, instead of one that never made enough to pay for the cost of the machine.

How old were you when you wrote each of your programs?

22 when I did Donkey King, 23 when Sailorman was released.

Tell us a bit about your non-CoCo projects.

UIS - Universal Item Selector; a stupid name but one I was stuck with. A replacement for the really lame GEM item selector. I worked on this every now and then between '87 and '91, so there were many versions.

PowerDOS - This was a complete replacement for Atari TOS done as true multitasking. I started out to do networking, but TOS sucked so bad it was impossible to do a fast, reliable network with file sharing. So I recreated TOS (without looking at their source, as it was so poorly written it was embarrassing). This was a product that saw very little life, as Atari was about to head into the dumpsters when it was released.

ViewTouch - Aa restaurant management application that has bar none the best touch screen interface I have every seen or used, but suffered from a poor internal design and the fact that it was coupled to an Atari platform <gasp!>. I worked on it for about a year between 1992-1993. My part was maybe 5%, as a lot of different programmers worked on it over the years.

Most of the other programming I have done is contract jobs doing specialty utilities and Unix scripts for various things. Since '93 I have not worked on any commercially released software.

What was your opinion of the Atari ST and what were your opinions of it's competitor, the Amiga?

The ST was a competent piece of hardware, with a poor OS. The real problem with the ST was with the people running the company, namely the Tramiels, who consistently did dumb stuff.

As for the Amiga, I can't say much as I never used one. I know the hardware was revolutionary in many ways, and the OS was quite well done, if a little bit crash prone. Of course, the Amiga had the KILLER application of the time, Video Toaster.

Why did you leave the CoCo community after Sailor Man?

I left the CoCo programming field after EDT/MAS failed to get market share (an incredibly stupid review, by an idiot who didn't bother to read the manual, published in Rainbow magazine; It was then I realized that Lonnie Falk was a fraud as a publisher, as he would run glowing reviews of crap, as long as LARGE ads were placed. Anything from Nelson software comes to mind, as they always got "You better buy this, because it does magic!" because they always had a five page spread in Rainbow, but their stuff was bad). I later helped start an Atari based magazine, ST Informer (sounds like a sleazy tabloid title), but one thing we insisted on was honest reviews, regardless of ad size, or whether an ad was even placed. Mike Lindsay, who was the editor, was cited many times for his integrity and eventually was named editor of Atari Explorer (Atari's own publication) where he butted heads with the owners on more than one occasion. He now publishes a model train publication and maintains the same standards for reviews. If only Lonnie Falk had the same kind of integrity, I might have stayed in the CoCo market a while longer.

I should have done game after game while the boom lasted, and in fact Tom Mix had another author that cranked out games every two months or so. They weren't on the level of Sailor, but probably sold enough to pay off well. I really was into the editor/assembler thing, because I hated the editor that came with Macro 80C. It is rather dumb, though, that I didn't take the excellent Sailor engine and hook other game graphics into it. I probably could have done a Mr. Do! or similar game in just a few months, as the difficult parts were all done. As they say "Too soon we get old, too late we get smart".

Why did you leave the Atari Market?

Atari suffered a rather quick demise, but it was mostly the fault of stupid management. Frankly, I began to see the writing on the wall in about '90 or so. While I was with ViewTouch, I tried in vain, along with fellow programmer Dan Hollis, to convince Gene Mosher to dump the Atari and port to the PC. Let's face it, the Atari had a game machine image, and poor hardware support (as in, no cheap expansion cards, ala PC). PC's have a business image (even though there are more games for the PC than any other system), and that's what businesses want. I believe that ViewTouch now uses a PowerPC based system from Motorola, running Linux as an OS. Much, much better. 


Interview by Nickolas Marentes, January 2000.

   

BACK TO HOME PAGE