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!! |
 |
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.
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.
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.
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.
|