May’s Program: Joust
My attempt at recreating the classic Joust arcade game on my ZX81.
I actually started working on May’s program of the month, Joust, about three weeks ago. My goal was to update the program to a faster and more fluid MCODER version. Sadly, things haven’t gone so well. Pressed for time, I will leave you instead with my original take on this popular arcade from the 80s.
This version, I created several, was pulled from one of my cassette tapes. Given this is a 9K program, loading it on a real ZX81 would take several minutes. Due to the magic of modern technology, you can now load this in seconds. Use the “Z” key to move left, the “.” key to move up and the “N” key to flap up. Since this is a ZX81, you can’t hold down multiple keys simultaneously. This shouldn’t be much of a problem as this BASIC program is pretty slow. Given the limitations of the ZX81, it doesn’t look too bad. Overall, however, the game pretty much sucks.
The program itself is large. Although 9K may not seem like much now, that is a good amount of the ZX81’s 16K of RAM. I’m assuming that you have the memory expansion pack, most people did. The default 1K of memory is paltry. A full screen takes about 704 of the 1024 bytes of available memory. You can’t do much with that amount, especially in BASIC, so the RAM pack was a must. Just don’t bump your computer. The expansion connector was just bare circuit board and not very tight. A tray that I swiped from my sister fit my ZX81 perfectly. Along with a little Blu Tack, I was able to make my ZX81 very stable. I even went as far as to build a tilted stand with a built-in toggle switch that allowed me to power my ZX81 on or off. For those that didn’t own one, you turned it on by simply plugging it in. But I digress. Let’s get back to the program itself.
One of the first things the player will see is my custom Joust title screen. I added the title after creating the game and I’m pretty proud of it. Although it is only used when Joust is initially loaded, it's a nice full screen title that clearly tells you what the program about. I was into creating custom lettering as a teenager and the slanted title is one of my favorite. The row of dots can be a bit slow, but is interesting and fills up the screen nicely. It may seem superfluous, but it works. I just wish I’d used it more than once.
Sadly, the program itself has more potential than execution. It is very slow. I attempted to use
FAST to speed it up but it really just makes it flicker. Personally I find it unplayable so I commented out those lines. The program may be slower now, but at least it isn’t obnoxious.
For those that remember the arcade version of Joust, my ZX81 version isn’t quite as nice. Remember the ZX81 had no color and very low pixel resolution. I only added a couple of enemy ostriches for you to dispatch and a few of platforms. The effect isn’t bad though and should be easily recognizable. I tried to add a few animations for interest, including a dropping egg when you dispatch an enemy. But they are for show only. There isn’t much variation in the game and no egg level to enjoy. In fact, I didn’t even add flapping wings or legs when you walk on the platform. I did however add the lava hand. See if you can find it. It’s not bad, but you can’t escape. Sorry.
As I noted earlier, this game isn’t really playable and it is pretty buggy. It was a fun game to write and I remember sharing it with my pals in computer class. In fact, one of my friends took it and tried to make a longer more complex version of it. Sadly I don’t have his version. I don’t even think it would have fit in memory, but it would have been fun to see if his version would actually have worked.
To put this in perspective, I was 14 when I wrote this game and I was pretty much reading any and every book I could find trying to learn how to program. Remember, there wasn’t the Internet back then so it wasn’t as easy as it is today to find resources and help writing programs. The ZX81, with all its limitations, was actually pretty popular and flexible. To me, its simplicity was a strength and I was never deterred from trying to write complex programs like Joust. I may not have always succeeded, but it was still good fun.
I did spent a good amount of time this month trying to write a more fluid version of Joust. I have a working version that is much faster, but the graphics still flicker due to the way I wrote the display routines. I’m also struggling to get it to properly register hits. Because of that, I want to put some more thought into this second version before sharing. For now, enjoy the original version.
If you want to run this program on your Android phone or tablet you can download a compressed copy of the program to your device. You’ll need to save the .p version of the program to your device to allow Zed Ex (Beta) to run it.