It's currently fully playable but probably will never be
feature-exact to the original version.
Legal Note
This product contains trademarks and/or copyrighted works of
homestarrunner.com.
All rights reserved by homestarrunner.com.
This product is not official and is not endorsed by homestarrunner.com.
Implementation Details
The extremely limited Atari 2600 hardware is a bit too complex
to get into here. I'm using a 4k ROM, and you get 128 bytes
(yes bytes) for all your RAM. There's no graphics framebuffer,
you have to "race the beam" (i.e. you have 76 cycles to update a line of
graphcis as it's being drawn, then start all over again for the next line).
Current Status
Fully playable. It's not quite the same as the Flash version,
but hopefully close enough to be fun.
Directions
Press reset/fire to start. Use the joystick to move.
You are Strong Bad (the Red Box)
You need to collect the secret that looks nothing like you (the Yellow Box)
Avoid the pulsing blue walls, which will zap you and reset
your position and reduce your speed
You need to collect the secret before time runs out on the timer bar
A speed boost (a Blue Box) will make you go faster. You can collect
up to 3 of these at a time
Bonus points if you complete a level without touching any walls
Collect as many secrets as you can before the duck gets you!
Videos
Video capture of v1.7 from an actual Atari 2600:
Screenshots
These screenshots are all from the Stella emulator.
The title screen. It even goes into screensaver mode so you don't
have to worry about burning in your CRT.
Level 1, a lot like the actual Level 1 except it's not really possible
to do sideways gradient effects on the Atari 2600 so I approximated the
effect the best I could.
For some reason this level design always reminds me of the
logo from the 70s
Electric Company TV show.
Level 8 is a mess, it's something I threw together with a hex editor at
the last minute. Most of the levels from the official game would be
hard to implement without re-writing the game engine, or else are physically
impossible on real hardware.
Fun animated Strong Bad when you collect the secret! Lots of tricks here,
as in theory you can only have 2 colors per line but here we have more.
We're overlaying with a sprite and also changing the playfield color
mid-screen, while also re-writing the playfield mid-line because it's
asymmetric.
That stupid duck...
System Requirements
A NTSC Atari 2600. Though you'll need a harmony cartridge or
something similar to load it on real hardware.
I currently don't have a PAL version of the game but in
theory I could possibly put together such a version.
How can I play it?
You can download the image below and then try running it on a real machine.
You can download the image and run it on an emulator.
It seems to run fine on Stella.
A.
The "original" game was a Flash parody of pre-crash 1980s style
video games. While it captured the spirit of those games, some
of the things it did are difficult to impossible to implement
on a stock Atari VCS from the 1980s.
For example the complex palette rotation, and also
many levels are asymmetrical and it's
incredibly hard to do that in addition to the gameplay.
Q. Was it hard to write this?
A.
Yes. Though not quite as hard as racing the beam on the Apple II.
Q. Did you decompile the Flash version of the game?
A.
No
Q. Where are the blue dot power ups?
A.
In the end I managed to add them, though only one can appear
per level, and they always appear on the bottom line of
the level. It's implemented using the ball graphics.
The Atari 2600 has a lot of limitations which made it
easier to do things this way. You'll also notice
the speed boost is always roughly aligned with
the secret. I was facing serious cycle and RAM
constraints when implementing this.
Q. Why aren't the palette shifting effects for the obstacles
implemented like in the Flash version?
A.
The 2600 doesn't have any concept of palette shifting like you find
on other 80s/90s machines.
You can change the color of the playfield during
gameplay, but it's easy to do this each line (so a vertical gradient)
but really hard to do a horizontal gradient like the original.
There might be some hack involving sprites and the missiles that
could approximate it, but again it would be really hard.
You might also ask why the effect is only 16 colors. I spent
way more time than I should have trying to get some purple in the mix
but could never get it to fit in the cycle budget.
Q. Why is the screen capture so glitchy?
A.
There are two possibilities. One is the composite capture
card I have (which is known to have issues with mode switches)
is struggling with the not quite perfect timing of the game.
The other is that I'm just a bad coder and not getting all the timings
right. On Atari 2600 you control the beam at all times and it
is all cycle counted and you can easily generate a bad signal.
Things look fine in the Stella emulator but it's probably more
forgiving.
You might ask, does it work on an actual vintage TV? Unforunately
I've a). composite modded the 2600 but also b). my last CRT TV
doesn't seem to be working anymore.
Q. Why is the life counter labeled "MANS"?
A.
That's an intentional joke from the original Flash version
of the game.
Q. Why is the Videlectrix logo truncated?
A.
The Videlectrix logo ends up being 49 pixels wide but
there was only room for 48. I tried many ways to shrink
it down to size and none of them looked very satisfactory.
Q. Why does Strong Bad seem to shrink in the speed-boost
hallway?
A.
The ceiling is low there and he has to duck.
Q. Did somebody say duck?
A. Freakin' duck
Strong Bad Endorsement
It's always a bit unclear his
exact feelings. The accusation that the game has been
Fhqwh-fied is true, as the Fhqwhgads video is a great source for
relevant Atari-style sprites and the game needed at least a little
backstory.
Development Notes
2 September 2022 -- Version 1.7
Did some more careful scanline counting and made most of the annoying
glitching go away on scene transitions. It still will jump a bit when
clock runs out or you hit a pulsing wall, but maybe we can declare
those to be "features".
31 August 2022 -- Version 1.6
Was still glitchy on real hardware. Realized I wasn't always giving
3 full scanlines for VSYNC. With that adjustment it's a lot better, though
there's still a glitch at a start of the level because we do many scanlines
worth of init.
25 July 2022 -- Version 1.5
Title screen was still odd on real hardware, realize I wasn't zeroing
out the ZP/registers. So try that and now it works in devel mode
on stella as well. Should have done it earlier as it actually
freed up a bunch of bytes at init time too.
24 July 2022 -- Version 1.4
Might be ready to call this finished?
Added blue speed boost squares. Streamlined the code a lot.
Added bonus for not touching walls.
23 July 2022 -- Version 1.3
More fixes, and better secret placement on the levels.
21 July 2022 -- Version 1.2
Hopefully fixed the title screen to be a bit more stable.
Also now you have less time after each wave of 8 levels.
The changes were relatively small but it's hard keeping things
fitting in 4k.
19 July 2022 -- Version 1.1
Working on optimizing the code some more so I can add some more levels/features.
Each level takes up roughly 128 bytes of room.
Did various hacks and now there are 8 levels, though some differ only
in secret placement.
15 July 2022 -- Version 1.0
Powered through and got a mostly complete version.
Rushed it out the door as otherwise it was sucking up too much of my time
and there are other things I need to be working on.
The tricky part was trying to add a second level at the last minute.
I had under-estimated how big things were and was running out of room in
the 4k I had. I modified the level engine to let you change the playfield,
but to do that I had to change a 4-cycle load indexed to a 5-cycle
load indirect (no self-modifying code possible when running from ROM!)
and that messed up the entire timing of the inner kernel and I had to
do a lot of terrible hacks to get things mostly going again.
13 July 2022 -- Version 0.1
Have collision detection working, Level 1 is more or less playable.
8 July 2022
Got 48-pixel sprites going. Complicated.
Also did a composite mod for my Atari 2600 so I can capture actual
screen output.
30 June 2022
Got a simple asymmetric playfield going (of the Apple II logo).