Inspiration
The project was inspired by a previous experience working with the Atari Rubik's Cube game in assembly language, which drove the decision to build another game using the same low-level approach.
What it does
The game simulates the 1976 Atari Breakout game, where a ball bounces around the screen. The player controls a paddle to hit the ball into bricks positioned at the top. When a brick is hit, it is marked with an "X" to indicate elimination. The goal is to eliminate all 12 bricks to win the game.
How we built it
The game was written entirely in ARM assembly language and compiled using the Tiva C series microcontroller along with Code Composer Studio. The code primarily relies on a string output function to handle the game that refreshes the game board during a timer interrupt.
Challenges we ran into
The most difficult aspect of development was managing the physics of the ball, especially keeping track of its height and detecting when it passes below the paddle (which signifies a lost life). Debugging these mechanics, particularly in ARM assembly, was tedious and time consuming.
Accomplishments that we're proud of
I'm proud that I was able to get the game pretty much fully working. The ball's physics bouncing around the screen turned out better than I had expected. It was over 1000 lines of assembly that started from nothing. I am definitely proud that I attempted something I didn't think I was capable of accomplishing in the first place.
What we learned
One of the biggest lessons I learned was the importance of planning. Starting without a solid plan led to rework after several hours of development when the initial implementation failed.
What's next for Atari Breakout
There are a few bugs that need fixing. I would also like to incorporate the use of the 2 switches on the Tiva to control the paddle movements in the game (left with SW1 and right with SW2).
Built With
- arm
- assembly
- codecomposurestudio
Log in or sign up for Devpost to join the conversation.