I love the idea idea but it would be an interesting challenge to get this to run in the memory constraints of the Arduboy. As it is, my program is taking up nearly all of the memory and I have spent a fair bit of time (with @Pharap’s guidance and help) to minimise the overheads of the code.
To give you an idea, the enemy planes are 16 x 16 pixels and take 34 bytes of data each. I have 8 images facing north, north east and so forth, so 8 * 34 = 272 bytes. Each has a mask of equivalent size so 544 bytes. I have two different enemy types so 1,088 bytes. I also have boats, the actual player’s image (with various images of it crashing into the sea), explosions and a bunch of matching masks. It is easy to consume 3 or 4K on basic sprites and we haven’t even got to splash screens, mission end and game over screens.
Did I mention music and sound effects? More memory … and the machine only has 28K of progmem and about 1.5K of useable RAM.
I make it sound limited but in my mind this is the joy of developing in this environment, Just what can you squeeze out of it?
I have been building some routines to rotate images 90 / 180 / 270 degrees and to render sprites from RAM and / or Progmem. This will allow me to reduce the number of images significantly but will I will need some staging memory in the already limited RAM. See how we go.