High Level Design

General Considerations:

• How big of a screen do we have to work with (in pixels)?
                       o We can easily generate a 128 by 100 pixel screen using the MEGA32

• Can we write all of the invaders to the screen in one frame cycle?
                       o No. It turned out that we needed 10 frames to write all 30 invaders to the screen. We write 3 invaders per frame, plus update bullets, player movements, and barrier changes. Attempting to write more than 3 invaders to the screen every frame (along with player logic etc...) leads to flicker. 

• Resolution of one invader?
                       o We decided the classic Atari invader pixel dimensions were necessary for nostalgia purposes, so the dimensions of the invaders are 10 pixels by 8 pixels.

• Number of invaders per round?
                       o We decided that a 6 by 5 array of invaders was sufficient at this resolution

• Points system?
                       o 1 point for every invader killed, 100 for completing around seemed adequate


Hardware Considerations:

• Inputs and outputs?
                     o The user inputs are the following: a classic Atari joystick, and two push buttons (mode and reset)
                     o The outputs are the television and audio out pins

• Prototype board or soldier board?
                     o First we build a prototype board and then move the board onto a finalized Radio Shack circuit board

• How do we play sound and music at the same time?
                     o We use 2 separate audio paths to the audio port (in parallel with two audio compare on match timers)

• How does the user turn the music on and off?
                     o By pushing the mode select button


Software Considerations:

• Will we need assembly?
                     o Experience says not really. Advanced gaming options (ex: moving barriers) would require some assembly in our opinion. If we had more time for the project, perhaps we might have implemented some assembly-based features.

• Do we have enough memory on the MEGA32?
                      o A: Yes.

• The state diagram for our code is pictured below: