Genre: Arcade (Platform)     Creation Date: 1984      Language: Z80 Assembly Language    System: TRS-80 Model 1


Donut Dilemma is my best TRS-80 Model 1 game. It is a platform style arcade game like the popular Donkey Kong in the arcades and featured nine different and progressively challenging levels.

The inspiration for Donut Dilemma was my family's Donut Kiosk that we owned at the time. We had this donut making machine where you filled one end with dough mix and fresh hot donuts would come out the other. The dough was automatically dropped into the hot cooking oil, complete with hole in the middle, via a syncronised plunger. A conveyer belt system would then slowly push the donut across the oil as it cooked one side of the donut. Then, halfway across, it would flip the donut over so as to cook the other side. Once cooked, a convey would lift the donut up and out of the hot oil and into a rotating dish for the donuts to cool. They were picked up, sugared and packed into a paper bag for human consumption. Occasionally, something would go wrong, usually in the part that flips the donuts over, and the donuts would get all messed up. Seeing this one day, a revelation hit me. Why not do a game based on  a donut factory where everything has gone wrong?

Original Story Pretext

"Angry Angelo has raided Antonio's Donut Factory sending the entire complex amuck! Donuts have come alive and are jumping around in wild frenzies. Machines have gone out of control throwing cooking fat, dough and icing sugar everywhere. You must help poor Antonio climb ladders, jump platforms and ride elevators to reach the top floor and shut down the factory's power generator which will restore law and order. But hurry for time is running out!"

Game Development

In all my previous arcade games, I only had to code for a single scenario such as the grid in Neutroid or the arena of The Gladiator. In this one, I had to create nine varying scenarios. So, in starting, I had visions of this huge and complex program of individual blocks of code for each level but as it turns out, it was very easy. I found that by designing each level with common elements, the single main block of code could do all the levels and would only need to branch out to an individual part to handle the unique elements of each level. For example, level one had no unique elements so there was no need for additional code. Level two included the "fat spurters" so after doing the main parts, it branched to the "fat spurter" code and animated that part. The third level would branch to the "Sugar Sprinkler" and so on.


Level 1 - Ladders and Platforms


Level 2 - Fat Spurters


Level 3 - Sugar Sprinkler


Level 4 - Cream Blaster


Level 5 - Conveyer Belts


Level 6 - Chopper Block


Level 7 - Mad Platforms


Level 8 - Berserk Bucket


Level 9 - Power Generator

The End

As in all my games, all graphics were designed on TRS-80 grid paper. No animation utilities back then! All the levels were designed on this grid paper and then I wrote the code to recreate them. The basic graphic blocks would be drawn up and stored into memory using a short BASIC program I wrote and the code would then transfer the graphics to the main screen. All graphics were double buffered. I would set aside an area of memory as a copy of the video display memory. Here I would draw up all the graphics for the next frame and when done, copy this page to the main display for viewing. This cycle would repeat itself for each frame. This provided a clean update of each frame without seeing any graphics being drawn up. One problem was the unsightly screen interference of the TRS-80. The TRS-80 could not display video while data was being written to the video memory so when this happened, an ugly black "tear mark" would appear on the display. Unfortunately, the TRS-80 had no way to syncronise the video beam so that screen updates didn't occur while it was drawing the display and so all games suffered from this. This problem wasn't rectified till the TRS-80 Model 4.

Sound effects were all generated by my usual method of creating sound tables as I had done for Neutroid and The Gladiator. The way this was done was to write short BASIC programs that created the sound effect data that I wanted. The sound routine would simply read a byte from these tables and send it straight to the sound port (cassette port). In order to prevent the game from freezing while it played a sound effect, I made the routine only play a short number of bytes at a time and then return to the rest of the code. On it's next pass, it would play the next block of bytes and return to the code. This would repeat until the entire table was played. In the meantime, another sound table could be triggered and the table pointer would shift to a new table. This didn't allow for two sounds to occur simultaneously but it did ensure that when a new sound was to occur it happened on cue. There were no interrupts on the TRS-80 available to setup an interrupt driven sound routine so this was the best I could do and by adjusting the number of bytes played on each pass through the sound tables, I could adjust it so that complex sound could occur without creating any animation stutter.

Donut Dilemma was one of the few (maybe only?) game on the TRS-80 that played music in the background while you played the game. The music wasn't great but it was a feature I hadn't seen on any other TRS-80 game at that time. Of course, we all know how annoying background music can be while playing a game so an option to disable the music but keep the standard sound effects was included.

Marketing and Sales

If I could have marketed the game properly in the US via a big distributor like Adventure International or even Big Five Software, I believe it could have been a big seller. But alas, I was just a small player operating on a limited budget (nothing) far away from where the real action was, so again, all my sales were restricted to club meetings and catalogue postouts to past customers. I felt that this game had so much potential so I did create a small paying ad into a major computer magazine. This got me a few more sales and to date, Donut Dilemma was my best selling TRS-80 Model 1 game.

I believe Donut Dilemma to be my best TRS-80 Model 1 game and could have equalled many of the great games of that era on the TRS-80 had it been promoted in the US.