« Intro to GWT article in October 2008 Better Software Magazine | Main | Test-First GWT article in November 2008 Better Software Magazine »

October 05, 2008


Feed You can follow this conversation by subscribing to the comment feed for this post.

Ariel Valentin

This was fun! I think I am going to go back now and hack Leisure Suit Larry or Police Quest!

Jesse Farmer

Wow, that's awesome. But those poor guys in the light cycles...


"The game supported up to four players – that is, if they scrunched up close together on the same keyboard. It was clumsy, but it worked."

You just need another keyboard. One of the nice things about ADB was that you could just chain another keyboard, and it would work -- kind of like a super-simplified USB, but with the same connector on both ends.

I remember borrowing a iigs keyboard to play Dueltris comfortably. iigs keyboards even had stretchy cables, unlike USB keyboards of today, so you could sit just about anywhere. Those were the days.


Hey there. Great story! A very interesting read with an intelligent explanation. I did some BASIC programming on an old IIg myself. I also seem to recall the PEEK and POKE commands for ATARI BASIC, which were pretty permissive.

Razee Marikar

He he... So these kinds of movies are not baseless after all!!!


The game supported up to four players – that is, if they scrunched up close together on the same keyboard. It was clumsy, but it worked.

Wow, you gave me flashbacks to when I wrote a Megazeux game specifically for me and my two little brothers. I would add silly things like missiles just as you did. Unfortunately I lost that game in a move...


Makes me want to be a little boy again, watching Tron and playing 8-bit computer games :) Great story!


One of the few times I've laughed out loud while reading a development story. Great retro stuff. Too bad we have to deal with those pesky protected-mode operating systems these days, although memory overwrites can still produce strange and wonderful bugs.


That was a great read, I now have this mental image of a tiny light bike cruising through the ram.


Ah, I used to do something very similar, when I would write games in QuickBASIC.
Of course I didn't use much assembler, but, as a young programmer, I found it much easier to incorporate the framebuffer into the very logic of my program, like what was done here.

Of course, I quickly realized the flaws with that.
Any time I wanted to add a graphical effect I had to completely rewrite my collision detection!


This was one of the most entertaining and informative programming related articles that I have ever read.


Sir, I award thee several internets.

Tim Lesher

What a great story.

Thanks for bringing back awesome memories, and for helping me remember why I got into this crazy industry in the first place.


Makes me want to write a display for when the AI goes outside of the screen. It would be fun to watch.


A magnificent tale!


That's amazing! Most likely I would have just blown it off as a bug in the code. But if you change your perspective, well it really a mind bender!!!

That's a great take on such a simple bug. I just wonder how long a bike could last before it imploded or did some real damage to the system...


See, that's what happens when you don't use the MVC paradigm! :p

Mark Richards

Ironically, back when I was learning to program, I wrote a version of Tetris with a similar problem. If you turned a piece right before it hit the bottom of the board, the piece would crash through and keep falling- right on down through memory. I use to tell people I had made the pieces too heavy and that's why they were breaking through the floor :)


Vast buckets of awesomesauce. Cracking tale, well told. I commend thee.


Hey thanks for a great story from the good old days.

I just found this on Reddit, came here to read, and then I see Marco Busse mentioned. I used to work with him at Tiburon. Great guy. Please tell him I said hello next time you talk to him.


HA! Great story! I put it up on CrunchGear.com.


One thing I don't understand is how the missile blasted a hole in the wall, you say:
"When a missile hit a wall, it would create a mini 'explosion' that would erase the color on the background back to black as it faded out – thereby eliminating sections of the trail left by previous cycles.”"

So what caused the AI to be able to make a hole in the wall? Could you recreate it as a human?

Daniel Wellman

Thank you all for your kind feedback and distributing this article, it was fun to reminisce.

@ken Yes, absolutely - the ADB was a lifesaver. We did end up plugging two keyboards together which made it more comfortable to have the full four (human) players.

@Jak I'll pass on your hello!

@Dave Both the human and computer player could fire a missile at any time (assuming they had some left). Missiles always created a hole on impact; what was surprising was when the computer decided to fire at the game border. We hadn't even considered this possibility.


This reminds me of playing the race car that played on Intellivision. You could drive off-course, between the houses, and as long as you didn't hit a tree you could keep going.

The cartridges were only 4K or so, so there wasn't a million ways to pack in the detail, but you could go exploring and find little mini-racecourses and other hidden details off-road. The world actually 'wrapped', so if you went far enough 'east' you re-entered from the 'west side.

There were even pathways, stitch points where the blocks met, where you could drive unmolested due east or west, but the developers had obviously discovered these, and they added one tree in the stitches that you had to navigate around.

Game hacking - the early days - what a thrill.

Someday, I'll remember some ZX81 magic and write back.

Roberts Creek, BC


I suppose it would be easy to cheat then... just blast a hole through the wall, and circle around the outside.

Of course, the simplest way to stop it from happening would be to make the border invulnerable to missile attacks
(my limited programming skills at work)
if memory(wall) = "f" then missile = 0
But who would want to stop such an awesome little bug =D

The comments to this entry are closed.