Save the eevees 68k
During my first semester at FIEA, one of the assignments required us to write an interactive game using 68K assembly. This included writing our own custom physics and colliders, player input processing and rendering, all in 68K assembly.
​
For this assignment I chose to make a pong-rhythm game where the player controls the paddle using the A and D keys and must keep the Eevee(the ball) on screen at all times. However each time the Eevee collides with a wall, it changes form and the player must use space bar to match the color of the paddle to the Eevee in order to save it. If the Eevee and the paddle collide and their colors don't match, the player loses. The score increases every time the player successfully bounces the Eevee off the paddle.
​
For this assignment, we were graded on how well we were able execute on the following requirements for the game. There were 7 required components in total which were:-
-
Writing a subroutine to draw sprites from bitmap files, where we can specify the X and Y coordinates of where to draw the image from and to, as well the as the height and width of the image. This allowed us to redraw the background behind moving entities in the game.
-
Writing custom colliders for all entities that required them in the game (at least one). I implemented box collisions for this.
-
Using fixed point math for calculations through bit shifting. I used this to calculate collisions and bounce angle of the ball when it hits the paddle.
-
A physics system that changes the acceleration of at least one of the entities in the game. I used this to implement paddle collisions where the ball accelerates at different X and Y rates based on which part of the paddle the ball hits in order to implement the illusion of a skewed reflection angle.
-
Player input that directly controls one or more entities in the game.
-
7-segment LED display that displays some information. I implemented this using bitmasks where each number from 0-9 had a unique bitmask which was used to draw it corresponding segments to display the correct number. I used this as a mechanism to display the score.
-
Writing a subroutine that generates random numbers to implement randomness in the game. I used this to randomize the color to which the paddle switches to when the space bar key is pressed.