Retro-Invaders! - Part 1

Shawn Delahunty's picture

"I've got an alien inside my brain..."

Greetings to all. After a looong hiatus from posting much of anything here at Armchair Arcade, thanks to a heavy dose of "Real Life" interfering, I figured I should get back into the swing of things. The question, naturally enough, was, "What the heck should my next blog posting be about?" Thanks in part to Matt Barton's recent posts on his game development of Match Invaders, I hit upon "The Idea."

Recently, as part of the process of finishing my book on the philosophy of design for embedded systems, I've been pondering possible causes for the multitude of problems I keep seeing in modern software development and modern electronic devices. As one example; one glaring symptom of the systemic problems is the never-ending, ever-spending increase in "Hardware Requirements" to adequately run newer games and programs. This irritates me as a user, frustrates me as a PC gamer with limited income, and saddens me as a software engineer.

Of all those reactions, it is the last one which really upsets me the most. Why? Because as I see it, the whole game industry has become so complex, so stratified, so overly specialized, that it has made the development of games almost inaccessible to many folks who might be interested in participating.

A young bedroom coder, with a desire to write a home-brew game for their own edification and entertainment, is facing a near-vertical cliff for a learning curve. Even with the power of Google's vast, "cloud-y" brain at their disposal, it literally can take HOURS of effort to download, install, and properly configure the free-as-in-beer tools, utilities, and libraries needed to write even a simple game. Add to that the amount of time and effort required to learn some basic coding skills, and you get a real dis-incentive to even bother trying. Matt's blog postings here bear testimony to the difficulty and dedication and downright ornery stubbornness required to get something just barely working.

It wasn't always like this. When I was a kid, the coding platforms, though unbelievably crude compared to what is available now, were actually extremely accessible. That's not to say those 8-bit platforms were "User Friendly" in the modern sense, but it took very little effort to begin churning out your own software. That's how I and most of my friends learned to code; writing really crap knock-offs of arcade games in our study-hall periods.

So that then, formed the initial impetus of, "The Idea."

After more thought, I've decided that I should code up a quick and dirty Space Invaders knockoff. Next, I'll write about the experience in a second blog-post, to demonstrate how EASY it was to actually build things on old 8-bit systems.

As I've also recently started my own YouTube channel, The Scroungineering Chronicles, I figured this would be a great way to combine some of my interests. (I'll post a video there, showing some of the process of writing the game, as well as showing off the game itself.)

The only question remaining is: Which system should I code the game for?

Sure, I could use an emulator. I have many emulators for 8-bit and 16-bit systems installed and configured on my various computers. But like so many here know, there's nothing like running software on the real deal; a squeaky, creaky old machine, with faded plastic and the faint orange tinge of 30-year-old Cheetos forming a crust on the keys.

My own stash of "antique computing/gaming" platforms is quite meager compared to the wonderful collection which MarK Vergeer has been showing off with his game videos. Compared to the unbelievable collection of Bill Loguidice, I'm not even a blip on the radar. However, I do own several systems which were of personal significance in my own development as a software engineer and systems architect:

  1. My original VIC-20, a Christmas present from my parents in 1982.
  2. A C-64. This one was a recent gift from a friend who was going to toss it out.
  3. A TRS-80 Model III machine. This is one of the actual machines on which I began learning my coding chops many, many moons ago in Junior High.
  4. An original IBM-XT machine, with dual-floppy drives. (A gift I bought second-hand for my sister when she entered college. She gifted it back to me about 10 years ago--for some odd reason, she didn't want to keep lugging it around.)

My initial hope was that I could write the game for my beloved VIC-20. It would be easy to write the code in a modern editor on my modern Linux PC, paste it over into the VICE emulator, and do all the testing and debugging there. As a final treat, I would then download the thing to my real VIC-20 and play it.

Sadly, the VIC-20 currently isn't an option.

Over the past month, I've been digging things out of my attic and reorganizing my garage shop. As part of that, I began pulling my old computers out of the garbage-bag-wrapped boxes, and testing them. To my chagrin, of the 3 machines tested thus far, it is the TRASH-80 which actually functions. It needs a contrast potentiometer replaced, but otherwise checks out fine. (After some troubleshooting, the problem with both of my Commodore machines turned out to be a couple of bad ROM chips--I'm awaiting arrival of some replacement chips. I'm planning to post some videos of the tear-down and fixes on my YouTube channel.)

So, that's what I'll be doing in my spare time over the next few days. I will post the video in my next blog entry, and discuss the various ups and downs of the whole process. In the meantime, I'd be very interested to hear about anyone elses "game coding experiences from yester-year", and what you think about the "Accessibility Factor" of old 8-bit and 16-bit computing and gaming platforms compared to those of today.

Stay tuned...

Comments

Bill Loguidice
Bill Loguidice's picture
Offline
Joined: 12/31/1969
Another idea

You know, there are certain games that coders have classicly used to get their feet wet on a particular platform. One of those is obviously Space Invaders, another is Pac-Man, another still is Asteroids. Each is good practice for their own reasons.

Inspired by all the "Space Invaders" talk of late, one idea that I think would be neat to explore myself is do sort of a "history of dance" videogame style, so, for instance, as it applies to Space Invaders, use something like GameMaker and make each new level a clone of a different port of Space Invaders. So, for instance, the first level would be a clone of the Space Invaders arcade game, the second level would be a clone of Space Destroyers on the MP-1000, the the third level would be Space Invaders on the Atari 2600, the fourth level would be Space Armada on the Intellivision, etc., and so on and so forth. Over time, new levels could be inserted in place. It's probably too ambitious in scope for one person, but that seems like a very, very cool idea to me and one that's extendable to a wide variety of arcade games and their home versions, sort of a super ambitious version of those YouTube videos that show all the different versions of a game.

n/a
Matt Barton
Matt Barton's picture
Offline
Joined: 01/16/2006
Great Idea
Bill Loguidice wrote:

You know, there are certain games that coders have classicly used to get their feet wet on a particular platform. One of those is obviously Space Invaders, another is Pac-Man, another still is Asteroids. Each is good practice for their own reasons.

Inspired by all the "Space Invaders" talk of late, one idea that I think would be neat to explore myself is do sort of a "history of dance" videogame style, so, for instance, as it applies to Space Invaders, use something like GameMaker and make each new level a clone of a different port of Space Invaders. So, for instance, the first level would be a clone of the Space Invaders arcade game, the second level would be a clone of Space Destroyers on the MP-1000, the the third level would be Space Invaders on the Atari 2600, the fourth level would be Space Armada on the Intellivision, etc., and so on and so forth. Over time, new levels could be inserted in place. It's probably too ambitious in scope for one person, but that seems like a very, very cool idea to me and one that's extendable to a wide variety of arcade games and their home versions, sort of a super ambitious version of those YouTube videos that show all the different versions of a game.

Brilliant!!!

n/a
Shawn Delahunty
Shawn Delahunty's picture
Offline
Joined: 08/01/2011
OOOH! Tasty!

That is a fantastic idea Bill. I think that would be a valuable retrospective historical tool, like an interactive museum exhibit--but one which you can run on your own PC. Sounds like a very fun project too. I've never messed with GameMaker, but would definitely look into it if others could contribute. (The only question is, what platform would I mimic/clone?... Hmmm...)

Barring unforeseen interruptions, I think I'll be posting part #2 of this blog coverage before the weekend. I threw together about 20-25 lines of BASIC code on the Trash-80 this morning, and got a basic block of aliens marching back and forth on the screen. It's slow as dirt, but there are 2 optimizations I can make which will eke out the max performance from the grotty old BASIC interpreter. (I'm avoiding throwing Z-80 machine-code at the problem, just so people can easily grasp how it was done.)

-Shawn

n/a
TripHamer
TripHamer's picture
Offline
Joined: 07/31/2010
Since we're all talking about

Since we're all talking about Space Invaders, I may as well release my unfinished port here. It's written in Java. There is no sound and it could use a little tweaking...I may actually one day finish it. :) I wrote it just to write it. I was going for arcade accuracy.

So here it is:

http://dl.dropbox.com/u/3109405/SpaceInvaders.jar

It's a .jar file and should hopefully run just by clicking on it, for most people.

Let me know what you think.

n/a
Matt Barton
Matt Barton's picture
Offline
Joined: 01/16/2006
Problem
TripHamer wrote:

Since we're all talking about Space Invaders, I may as well release my unfinished port here. It's written in Java. There is no sound and it could use a little tweaking...I may actually one day finish it. :) I wrote it just to write it. I was going for arcade accuracy.

So here it is:

http://dl.dropbox.com/u/3109405/SpaceInvaders.jar

It's a .jar file and should hopefully run just by clicking on it, for most people.

Let me know what you think.

I downloaded this but couldn't get it to do anything but change the backdrop.

n/a
TripHamer
TripHamer's picture
Offline
Joined: 07/31/2010
Hum.....
Matt Barton wrote:

I downloaded this but couldn't get it to do anything but change the backdrop.

Hum, I was pretty sure I fixed that. Is your java version up to date? You could also try exiting out and starting again and see if it catches. I have a few machines and it works fine on those. I'll have to look into it again.

n/a
Mark Vergeer
Mark Vergeer's picture
Offline
Joined: 01/16/2006
Cool

A this is going to be very cool. I see that a second part has also been written. I am behind but love this type of article/ project.

Personally I started coding on a typewriter due to lack of computer availability (aged 9), I had fetched a book on basic programming from our public library and started coding my own basic programs doing all sorts of things. Initially in some 'general' basic dialect but later on when I did get access to computers I started churning out system specific code. 6502 assembly and machine code quickly followed. Most of my programming experience comes from coding the TRS80s at school, the c64 at home and later on the MSX and the PC in basic and later on in Turbo Pascal.

I did code a few games back in the day but most of them were pretty crappy arcade games. I found the process of creating a game fascinating and also debugging it and making it monkey proof quite a challenge.

I will be watching this thread / set of articles like a hawk.

n/a
Shawn Delahunty
Shawn Delahunty's picture
Offline
Joined: 08/01/2011
Cheers Mark

I appreciate the interest in my admittedly obscure little project. It's nice to find someone else who learned to code on these Trash-80 machines. A lot of my peers learned on the Apple][, sucked in by what I have termed "The Great Apple 'Educational Computer' Scam"--I think it was the first great application of the now infamous "Jobsian Reality Distortion Field". We switched to the Apple machines after I was in high school, and I liked them much better because of the higher resolution graphics, but I still have a soft spot for the Trash-80.

It fascinates me that you started fiddling about on a typewriter first. I've got a typewriter story of my own, which is an integral part of my own personal history as a programmer. (I'll spoil a little bit of the biographic section of my book...) I learned to type on my mother's old mechanical typewriter. Which meant that I learned a horribly aggressive, pounding technique. That has continued to this day--I absolutely destroy keyboards, and can make a rubber-dome keyboard sound like a teletype machine. When I still worked for a regular company, people would complain because of the machine-gun rat-a-tat! sounds coming out of my cubicle.

Cheers!
-Shawn

n/a
Bill Loguidice
Bill Loguidice's picture
Offline
Joined: 12/31/1969
I had a similar path in

I had a similar path in school as well, coding BASIC programs (a few games as well) in TRS-80 Model III's and then 4's. I still have my disks from the classes. My last programming class in high school was after they switched to Tandy 1000's, which obviously were MS-DOS-based. I still have my disks from that too. Even then, there was a jump in relatively complexity between the platforms, which, in retrospect, is interesting to consider.

n/a

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.