I have to say that this year of competition was not so successful as previous, where I finished on second position with Belljumper 1k. Nevertheless it was quite harder to develop Fireball than Belljumper, because bricks could not be created using PMG. Bricks were displayed as SW sprite objects which were flickering so much in very first versions of game. As it was impossible to use doublebuffering, I had to discover alternate method for displaying bricks directly to videoRam, to prevent the flicker.
SW prites brought another problem: collision detection. Solving this task is not so trivial. All these SW sprite stuff reflected in code length, not many space remained for some special features in 1024 byte boundary.
My original game concept was quite different. There should be lives instead of energy. Live would be removed after brick hits player. Next I wanted to implement objects which would fall from destroyed bricks (see falling diamonds in Fireball Developer’s Log). Falling object would remain on the ground for couple of seconds so player could get some extra score for taking it. Brick would also contain bomb which would destroy all bricks on screen after taking it. Player should be displayed as little dragon which could shoot fireballs to melt frozen bricks.
As you can see, many thoughts could not be implemented into 1024 byte binary file. I had to optimize code several times, because every single byte was needed. I also used undocumented instruction DCM (DEC+CMP) to reduce size of final binary file.
It was fun, despite all the trouble :-).
Other related links: