[stella] Invaders update! - inv-beta.bin

Well, I've been hard at work on this thing, and its ready for another
evaluation by you guys. New features:
- Invaders now animated! Each type of invader can cycle through 6 frames
of animation. (must be 6 frames, though it can repeat a 2-frame sequence
three times.) Thanks to all who helped with that concept. Do the middle
two rows of invaders look silly? If so, how should I change them?
- Shields implemented! They're on the small side, but I really can't
enlarge them any. They're done with three copies of player 0 and one copy
of player 1. Missile 1 is used to draw both player missiles on alternating
frames. Shields disappear when the invaders reach that level. Players can
shoot the shields, but invader bombs pass through. Player death is also
not implemented yet.
- Keeps score! Well, it's a flat 10 points per invader at the moment, but
it's a start =) Also, my score-displaying routine is hardcoded to display
a zero as the ones digit (it's always that way in the game.)
- Invader-bomb routine reworked. When a bomb is dropped, it has a 50-50
chance of being dropped at random or being dropped near the player. (only
aims at the first player, not the second)
- Difficulty switches toggle between autofire and manual fire. (B =
autofire, A = press button once for each shot)
- Lots of touchups to make it play more like the arcade. On the first
screen, the invaders must descend 11 times to reach the bottom, and one
advance fewer for each screen after that. (I didn't yet limit where they
start, so the game ends when screen 11 begins.) An invader in the last row
before landing cannot shoot ("death row".) The rates of player fire and
invader fire are close to that of the arcade, though not exact. New
algorithm (well, actually new lookup table) for invader speed based on
number remaining - it's closer to arcade now, though not perfect. Also
switched player colors so that first player is green (like arcade) and
second player is red.
Bugs/limitations:
- no saucer yet, sorry :( also, no sound yet.
- player death not implemented yet (much easier to test stuff like scoring
and shields when you don't have to worry about dying =) )
- Occasionally, the game calculations code overruns the vertical-blank
interval, causing the screen to jump by a couple lines for one frame.. this
seems to happen when a player fires, the invaders advance, and an invader
shoots all in the same frame. This happens rarely, though. Holding Select
down also causes this. I gotta optimize some code, and move some of it to
the overscan interval =)
This worked on PC Atari and on a 4-switch system with Supercharger.. as
always, huge thanks to all that helped... comments welcome!