|High Level Design|
Rational and Sources of Idea
The program uses a lot of simple arithmetic to determine the position of objects on the screen (ball, bricks, and paddles). It follows the position formula: position(t + Dt) = position(t) + velocity * Dt
Also, determining which brick the ball hit and erasing the appropriate brick consisted of a truncating and dividing scheme. A brick matrix was design such that its indices, through manipulation, directly correspond to the x and y value of the location of the bricks on the screen.
Two MMA2260D accelerometers provide an analog voltage value dependent on their orientation with respect to gravity. This analog voltage acts as the input into the A/D converter port of the Atmel Mega 32 chip. This value is used to determine the movement of the paddles in the breakout game.
A video DAC is used to process the digital signal from the Mega32 and provides the analog NTSC signal to the television.
Since an NTSC Black and White television scheme is used, the calculations were limited. During game play, only a certain number of calculations can be performed within the period when the chip is not drawing to the screen. Due to this time constraint certain features had to be limited. For example, in our program, we could not allow for too many simultaneous powerups because they required significant calculations to update their position and draw then as they dropped down the screen. This fact also limited us to a maximum of two balls on the screen. Similarly, the player number was limited to two.
Another tradeoff was the size of the brick that could be drawn with the number of bricks we desired on the screen. A larger brick would allow us to draw more complicated illustrations within the blocks; however, it would significantly reduce the number we could have due to the pixel limitation of the B/W televisions. We decided to use the smallest brick possible that would still allow us to draw a small design but would give us the maximum number of possible bricks.
The maximum ball speed was also considered in our design. Since the television could only draw once per frame, a speed much faster than 1 pixel per frame would pose a problem in tracking its trajectory both in the code and visually for the player. We thus settled on a maximum speed of 1 pixel per frame.
Our project will conform to the NTSC standard RS-170 monochrome video standard for television interface using 525 stacked horizontal lines and a 60Hz refresh rate. For a horizontal sync pulse, we generate the NTSC specified 5 ms pulse. NTSC specifies a vertical sync pulse width of 63.55 ms, however our code will use a 63.625 ms vertical sync pulse. We use this timing for a vertical sync pulse because it can be obtained by using the 16MHz clock and entering an ISR every 1018 cycles. This vertical sync pulse still produces a stable image when compared to the 63.55 ms vertical sync pulse. We follow the RS-170 monochrome video standard by implementing a black and white scheme for our game. We will conform to ANSI standards for C programming.
Copyrights, Trademarks, and Patents
Breakout is a registered trademark of Atari Interactive, Inc. Breakout along with many other games was purchased by Hasbro Interactive in 1998. We will not be using it for profit, but for educational use only. We claim no credit for the intellectual property of this design. Our final code will be open source and available to the public.