Interview with JEREMY SPILLER

 

Jeremy Spiller lives in Ashby, MA USA and developed what many believe to be the most "arcade quality" games for the CoCo3. His game Zenix especially is considered to be the fastest and most spectacular arcade game ever developed for the CoCo3 and is a classic example of pushing the CoCo3 to it's limits.

Jeremy knew before he started programming Zenix that the game had to be faster than anything ever created before and developed some of the most innovative graphic techniques ever tried on the CoCo3.

Jeremy was one person I especially wanted to interview but locating him after all these years was a difficult excercise. Then Larry Greenfield came to the rescue and went to great lengths to locate him. Thank you Larry!

Home Page: http://www.gosub.com

Photo of Jeremy Spiller

Programming Achievements

Product Title

     Product Description    

Platform

Distributor

Graphics 25

BASIC Enhancer

CoCo3

Gimmesoft

Zenix

Arcade type game

CoCo3

Sundog Systems

Crystal City

Arcade type game

CoCo3

Sundog Systems

Publications

07/94
01/89
12/88
10/88
07/88
06/88
06/86
06/85
- Dr. Dobbs Journal, "3-D Texture Mapping"
- The Rainbow, "The Mandelbrot Bug", Collaborated with Dr. M. Spiller
- The Rainbow, "What Disk Drive?"
- The Rainbow, "Super Stamper: The Elastic Rubber Graphics Stamp"
- The Rainbow, "Erase All Trace"
- The Rainbow, "Synthesizer Sound-Off"
- The Rainbow, "Keyboard Piano", Collaborated with Dr. M. Spiller
- The Rainbow, "Analog to Digital and Back Again"


What companies did you work for?

For the past five years, I was working at Sky-Skan, Inc. writing all kinds of cool software, ranging from high performance PC graphics programs to embedded operating systems and hardware control. I left Sky-Skan, inc. in September so I could do some travelling.

What sort of "cool software" were you developing?

One of the devices is called a Tarragon. It is an embedded controller that controls everything from lights and slide projectors to laser disks and video projectors. I got to write its operating system and numerous device drivers. My CoCo experience prepared me for the tortures of interfacing with hardware and dealing with real time events.

How and when did you become interested in computers?

My father was a CoCo hobbyist. When I was 10, my father bought a Timex Sinclair and learned Basic on that. After upgrading from 1K to 4K of RAM, it was obvious that the computer wasn't really very powerful. After consulting with some friends (who were CoCo nuts) he went to Radio Shack, and bought a CoCo with 16K of RAM.

One of the first things he wrote for the CoCo was a checkbook balancing program. When he printed it, I was amazed at how long it was. I could stand on a stool and stretch the printout over my head. I remember thinking "WOW! This is huge. I'll never write a program that long!"

What computers have you owned and currently own?

CoCo 1, CoCo3, and various PCs. Technically, I never owned the CoCo 1 - I just permanently borrowed it from my parents.

What is your opinion of the CoCo2 and CoCo3 hardware platform?

It was great for its time.

What was your favourite computer and why?

For the fun of programming, it was always the CoCo. For CPU architecture, it was the 68000. The IBM PC compatible has had a long struggle to get to where it is now, but I believe it is now the best machine for the dollar.

UGH, I know I'm going to regret saying that some day!

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

Time Bandits. To me, it was one of the most professional games written for the CoCo. It could have easily challenged any "real" arcade game of its time. It was also one of the most fun games. By allowing you to choose where you wanted to go, you never got that tedious feeling you get with most other games.

Can you tell us a bit about the graphics routines you used in your programs?

I knew that for my games to truly be of arcade quality, they had to run at 60 frames per second. Anything less was completely unacceptable to me. I decided early on that I would get 60 frames per second, or I wouldn't bother writing a so-called "arcade" game. And no gimmicks like shrinking the screen, or using fewer icons. In all honesty, there were a few places where Zenix slowed down a bit, but there were no more cycles to be saved anywhere.

To get the highest redraw rate possible, the icons were written in pure assembly language. I wrote a program that read the icon from a text file and generated assembly language that looked something like this:

LDD Color1,Y

STD Xoffset1+Yoffset1*256,X

STD Xoffset2+Yoffset2*256,X

STD Xoffset3+Yoffset3*256,X

LDD Color2,Y

STD Xoffset4+Yoffset4*256,X

ETC...

Screenshot of Zenix

ZENIX

Mike Newell also did a lot of work on the graphics for Zenix and Crystal City. If you liked level four of Crystal City, you should thank Mike.

Can you tell us a bit about the sound routines that you used in your programs?

Since they took a large chunk of CPU time, they had to be as fast as possible. To that end, I placed most of the routine in the direct page and used self-modifying code to get the best performance possible. The routine was called about 3600x per second from the timer interrupt. The music routines in Zenix used a table to generate four-part harmony background music, plus two channels for special effects. I would have done the same for the Crystal City, except there wasn't enough time to complete it before the deadline.

The sound routine also doubled as a "raster avoidance system". In the early days, sometimes the icon would disappear because the VDG was drawing just as I was erasing. I used the sound routine to keep track of where the raster was. If the raster was too close to the icon, I queued it up to be drawn later.

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

I was writing attack routines for the Zenix bugs. At that point, all they did was group together and wait forever. In one programming swoop, I wrote the code for them to pick a track, and follow it down to kill you. After hours of work, I assembled the whole thing, thinking, "Oh, this'll crash in about a 60th of a second." To my sheer delight, I watched three little bugs group together, and swoop across the screen. Just as I shot at them, to my complete surprise the three of them turned tail and run UP off the screen. I yelled at the cowards to come back and fight like real bugs! I had accidentally reversed the Y offset sign, so they ran the track up instead of down.

Half way through the development of Zenix, I found out the assembler I was using wouldn't cut it. So I had to write my own. When it could assemble itself and Zenix (in under a minute), I was satisfied that it worked fairly well. I gave a copy of it to my friend Mike Newell.

Whenever anything Mike wrote crashed, he always jokingly blamed it on my assembler. He would say, "It's your fault my program is crashing, so help me find this bug!" I just pointed to the huge amount of code it assembled - by then I was using it for Crystal City as well.

He would then accuse me of putting an "M" bit in it. Supposedly when he was using it, the "M" bit would magically get set, and the assembler would purposefully generate bad code. Finally, I would say "Prove it!" Of course, he always eventually managed to track down his bug and fix the program. The whole thing became a running gag.

Except for this one-day. He came back and said "HERE IT IS!!! A BUG IN YOUR ASSEMBLER!!!" He was right, some obscure op-code I had never used generated the wrong value. I was already laughing because I knew exactly where the bug was. I opened the op-code data file, and asked him "Do you recognize this data file?" He said, "Yea, I typed it in." I paged down to the bad op-code. He said "UGH! I caused my own bug!" We both laughed, and I said, "So it's your own damn fault!"

Screenshot of Crystal City

CRYSTAL CITY

What is your opinion on Software Piracy?

When I first started, I was paranoid that people would pirate my hard work. What I didn't realize was that I could have sold more had I gotten the product to market earlier - even without the copy protection. In the end, I removed the copy protection for three reasons: 1) My system was so customized (my own PROMS, my own disk drive, etc, etc.) it would have been too difficult for [whoever owns the rights now] to generate master disks. 2) I didn't care if people copied it because I wouldn't get any more royalties. 3) I hoped people would copy it - at least more people could enjoy my hard work that way.

I still have all the original registration forms that were sent back to me. When I read all the good comments, I feel like I accomplished something great!

Tell me about GOSUB SOFTWARE.

I was sitting at a restaurant with my family, and we were trying to think of a company name. My mother (or father, I can't remember) said why don't you use a computer command. I said, come on, that's ridiculous. To emphasize my point, I said "Goto Software. See, computer commands sound terrible."Gosub Software Logo

My sister knew absolutely nothing about computers and especially about programming them. So I was amazed (and still am) when she said "How about Go-sub Software?" I liked it almost instantly. It was easy to say, and my mother drew a great logo to go with it. Go-sub could have been the name of a video game, so why not use it?

What is Graphics-25?

It was a program that enhanced Basic. It added commands to load, save, manipulate and display up to 25 graphics pages.

You originally were to distribute your software with Game Point Software but that didn't eventuate. What happened there?

Peter Ellison of Game Point Software convinced me that he could sell more than any one else if I signed an exclusive deal with him. I sent him 100 copies of Zenix that I never got paid for. Basically, he caused me to miss all those "after Christmas" sales. To add salt to the wound, Tom DiMarco (Gimmesoft) called me up and asked why he couldn't sell Zenix. When I realized what was happening with GP, I broke our contract and looked for other places to go. After that, I vowed to never sign another exclusive deal. Glen Dahlgren of Sundog called me up later and offered to sell Zenix through a Non-Exclusive deal. He also convinced me to finish Crystal City.

I hope I don't sound too bitter about it. I'm not bitter about the CoCo but let's just say, I'm not quite as naive as I was then.

Are you still developing for the CoCo and why?

No. I stopped when I realized, I couldn't make enough money to live on. In fact, I stopped half way through Crystal City, but Glen (from Sundog Systems) convinced me to finish it. I never would have stopped writing games for the CoCo, if I could have made a living from it.

What were your feelings of the CoCo3 when it was released?

I was very happy. I bought one first thing and started writing software. I actually started Crystal City before Zenix. But the task was bigger than I was ready for, so I switched.

If you were asked by "Mr.Tandy" to create a CoCo4, what would you include?

To have had it ready for market within two years after the CoCo 3 was introduced. It's too late now.

Have you any "words of wisdom" to pass on to any budding CoCo programmers?

Good luck, and have fun.

Zenix end sequence


Interview copyright by Nickolas Marentes - November 19, 1998.

   

BACK TO HOME PAGE