The game is called 'Gate Racer'. The object is to drive through the scrolling gates while avoiding hitting the barriers, sides of the road, or oil slicks. There's a clock timer (that shows minutes/seconds/tenths of seconds) at the bottom and the object is simply to survive on the road as long as you can. Your final time is displayed when you crash, hitting fire then restarts the game. I implemented left and right velocity to make it more interesting (and require a bit more skill), and the gate size and location is randomly generated. The gates will get smaller as you progress and do so very quickly. There is also a powerup you can collect (a white block on the screen) that will make you invincible for two gate passes.
I started thinking about what style of game would lend itself to such a small size. One of my all time favorite 2K games is Activision's Dragster and a good game lasts less than 7 seconds. With that in mind, I wanted to come up with a short game that requires some skill (and practice to get better) but also includes some randomization to increase the replay value. I had all sorts of ideas for this game that wouldn't fit, in addition to some core items that I really wanted in there that also wouldn't fit.
Here's a list of small features I wanted but removed due to lack of ROM space in 2K. These features would require an additional 75 bytes and would make the game feel a bit more 'complete' IMO.
-> You can't use the reset switch in-game, it needs 10 bytes. It's a short game anyway and pressing fire restarts after death.
-> No sounds. I removed the engine Rumble sound, it needs 16 bytes. I didn't put in a crash sound either, that needs another 16 bytes.
-> I eliminated my line of code that randomly increases size of the gate, it needs 13 bytes. It would allow for slightly longer games.
-> I eliminated the car moving slightly up the screen during the game, it needs 13 bytes. It would progressively make the game harder.
-> I eliminated the 'press fire to start' option at beginning of game, it needs at least 7 bytes. The game starts up as soon as you power it on.
-> The oil slick doesn't reset to the top when you die. Not sure how many bytes it would take to fix it, prob 13 or less
There were other concessions as well. I didn't even try to implement my ideas with the ball or missiles due to lack of space. There could be oncoming cars, variable speeds on the road, the ability to shoot oncoming items, sprite animations, levels of difficulty, color changes, a title screen, moving gates, and lots of other things I'm not thinking of right now.
If you want to compile this yourself you'll need the custom score graphics file and the timer.inc file included in the zip. The code is well commented, feel free to make suggestions. It's possible some of my code could be optimized to save a few bytes here and there.
So, did I succeed? Beats me. It was definitely challenging and I've never been so focused on saving a single byte of space. The end result isn't horrible but I think it could be a whole lot better in 4K.
Final version attached. It includes most of the things I couldn't fit in initially plus more, thanks to all the people who assisted with their comments and suggestions. The allfiles zip contains the source and all the modified include files that you'll need to compile it. The oldversions zip contains binaries of all the development versions.