A documentary on the effort to produce an original arcade-style game for the Tandy Color Computer platform.

Thursday, January 5, 2012

Prologue

Welcome to my attempt to document the process behind the creation of Fahrfall, a game for the Tandy Color Computer (aka "CoCo").

Who am I?

Well, let's see...I'm a husband and a father of three, and I live near Mebane, NC. I have an MS and a BS in Computer Engineering from North Carolina State University, and I am employed as a software developer at a major Linux enterprise software vendor. Also, I am the official "maintainer" for the wireless LAN code in the Linux kernel.

I had a CoCo as a kid, then rediscoverd the CoCo after college. I played with the CoCo off and on over the years, first as more of a "retro gamer" and later as more of a "retro hacker". A couple of years ago I started a project for a CoCo3 digital video player. Version 2 was even better, and even made the cut at Hack a Day!

Motivation

I really enjoyed producing the CoCo3 digital video player, but I'm a bit tired of working on it. Plus, despite its hack value there is still the "but why would you do that?" factor. Even my mother can understand the value of a video game, even one created for an ancient computer. :-)

Inspiration

The inspiration for Fahrfall is the game DOWNFALL for the Atari Jaguar and by Reboot of Jagware. I originally loaded-up DOWNFALL just to prove I could get homebrew games on my Jaguar, but the game turned-out to be really fun. In fact, my wife has been making a habit of coming to play it in her spare time ever since then!

According to the Reboot site, "DOWNFALL was inspired by Spike Goes Down for Vectrex and Man Goes Down on VCS, both by Alex Herbert. It is not intended to be a port or recreation, just our imagining of his falling/gravity game idea." Similarly, Fahrfall is my re-imagining of this basic idea. DOWNFALL may not make the most of the Jaguar's hardware, but a straight port would be more than a match for the CoCo's hardware. So, I will try to maximize the use of the CoCo's capabilities to create an enjoyable game suited to the CoCo.

Prototype

The basic gameplay elements of Fahrfall are a set of upward moving platforms, and a player that navigates between them while trying neither to fall off the bottom of the screen nor to scroll off the top of it -- simple enough! But one idea I liked in DOWNFALL was the background scrolling, which enhances the feeling of falling for the player. Keep in mind that the CoCo is really slow by modern standards (or even by the Jaguar's standards), and that the limited video resolution makes any meaningful graphics a challenge. With that said, I did some quick-n-dirty hacking late in 2011. The resulting demo gave me hope that a reasonable game was possible. Based on that, I did some rough design, made a few calculations, took some notes, and began plotting...

Development Begins

My employer shuts down for the week between Christmas and New Year's Day. This is always a great opportunity for some geek play. So with my earlier demo and the related notes, I began working in earnest to produce a game for the CoCo, with "Falling..." as the working title. I started from a blank slate, with a code structure based on using the Vsync signal for game timing. I then reimplemented the scrolling effect from the demo.

I felt that the display was a bit sparse, so I expanded the number of scroll planes (first to three, then to four) and played with different screen layouts. I also added a mock-up of a score display accommodating both a high score and the current score. Finally, I added some flames to the top of the screen to "explain" why you can't scroll off the top. I even gave the flames a rudimentary flicker effect! The background was really taking shape on New Year's Eve.

RetroChallenge Begins!?!?!

I had always intended to document this project, but I figured I would do it after the fact. That was probably a bad plan, but it seemed good enough. Then I got a reminder from somewhere that the RetroChallenge Winter Warmup had started as of January 1st! Since I was already working on this project, it seemed reasonable to do the documentation now and to try to be part of the competition. So, that's why this blog is here now instead of later. If nothing else, hopefully it provides the motivation for me to actually complete that part of the overall project. If it helps bring attention to the CoCoFEST! too, then so much the better. :-)