Logo
The personal blog of M. Scott Smith

From the Historical Archives: Tapioca 🔗

I was doing some spring cleaning today, and dug my old Mac Performa 6400 (vintage 1996 model) out of the attic. Amazingly, upon hitting the power button, I was greeted with a delightful and enthusiastic startup chime. The Performa, apparently, held no ill will towards me for being stuffed in a stuffy attic for much of the past decade.

The Performa was running Mac OS 8, and, thanks to typical Apple overengineering, included a built-in Ethernet port. I had trouble getting AppleTalk and AppleShare to work reliably between the Performa's Mac OS 8 and my Mac Pro's Mac OS X 10.4.9, but the Performa was more than happy to connect to my modern Mac over FTP. So I was able to transfer over files from the Performa that were dangerously close to being lost to time. Lots of great files from my college days.

And that will provide some fodder for my blog, starting with this post. As a freshman at Drexel University in 1991, I began to learn how to program the Macintosh. To fortify my learning, I wrote a number of applications along the way. An early one was Tapioca, a game inspired by Apple Panic, one of my favorite games from the Apple II, which was published by Br0derbund in 1982. Apple Panic itself was inspired by a 1980 game called Space Panic. Some might be forgiven for believing Tapioca was inspired by Lode Runner, another popular game for its time, but Lode Runner was released by Br0derbund in 1983, following Apple Panic.

As you can see, there were many games that involved ladders and bricks and digging and filling holes. This was well before the days of first person shooters and, well, game budgets.

So I decided to write a Macintosh version of a game inspired by Apple Panic as a way of learning how to program on the Macintosh, generally, and specifically to learn about GWorlds, a fancy new way of moving around graphics efficiently with far less effort. I wrote Tapioca in an evening.

What's surprising is that, even today, it's fun to play, and quite addicting. It's a Classic application, of course, so it won't run on any fancy Intel-powered Macintoshes.

Here is a screenshot of the game's "splash screen." Skittles, my family's Scottish Terrior, had recently died of cancer. I still miss Skittles -- he was a great dog. The icon for Tapioca was a neon tetra fish -- my favorite tropical fish of the time.



The instructions for the game were quite simple. I apparently was leaving space on the right side of the instructions screen for additional instructions as the game grew in complication and features. The "Top 10" feature was never fully implemented.



The game screen should look familiar to anyone who has played Lode Runner or Apple Panic. Some of the ghosts from Pac-Man have escaped, and are running about a construction site attempting to devour a pour, innocent bricklayer. (I just now made up this premise of the game; I really didn't put much thought into the premise back then, because I was tired and it was late.)



If you dig a hole, the ghosts fall into it. You then have a brief period of time to "fill up" the hole. Otherwise, the ghost climbs out. (Note: by "climbs out," I mean the ghost magically appears above the hole, which is no longer a hole. Although I'm sure my game was so efficient that it was rendering at hundreds -- no -- thousands! -- of frames per second, no animation had more than two, three, or maybe one frames of animation. But hey -- it was a proof of concept. See? It's right there in the window title!)

You also had a limited amount of time to finish each level. The red bar on the left counts down the time. Each time you eliminated all of the meanies, the level would advance, and become more complicated. There would be more ladders, more meanies, and the meanies would be even meaner. The movement of the meanies -- completely random on lower levels -- would eventually be biased to going towards the bricklayer.



You may notice that the legs of meanies are left in the brick after the brick had been filled up. This was a bug. However, after some mild frustration with the bug, I quickly learned to appreciate the fact that part of the meanies were stuck forever in the brick. If I was really devious, I would have continued animating their legs so they suffered a bit. It's amazing how easy it is to turn a bug into a feature.



I hesitate to release the source code, but what the heck. It's not going to be of much use these days, but is amusing from a historical perspective. Most of the game's content (image frames, sound effects, menus, etc.) were locked up in resources created in ResEdit (anyone remember that gem of a program?); I don't include those here, but do include the raw C source code. Award-winning code this is not. But it was certainly fun to spend an evening writing it, and the result, although crude, is still rather fun to play. (And, looking back at the code now, I apparently wasn't too tired to include at least one Easter egg.)

headers.h



main.c



graphics.c



menu.c



messages.c



zoomrect.c

Elsewhere 🌐

  1. DCSki
  2. Facebook
  3. Past Yonder

Archives 🗄

  1. 2023 (3)
  2. 2022 (3)
  3. 2021 (1)
  4. 2019 (3)
  5. 2018 (1)
  6. 2016 (1)
  7. 2015 (17)
  8. 2014 (15)
  9. 2013 (14)
  10. 2012 (10)
  11. 2011 (15)
  12. 2010 (81)
  13. 2009 (45)
  14. 2008 (63)
  15. 2007 (29)
  16. 2006 (8)
  17. 2005 (18)
  18. 2004 (53)