CSCS2650 Computer Organization

PROJECT: MAKE A BREAKOUT (mab2)

OBJECTIVE

Now, take your PONG game, and transition it into a BREAKOUT game, where in addition to the paddle and ball, there are bricks present on the screen (either in rows or some pattern). The ball when colliding with a brick will rebound off of it (just as if it were a wall or paddle), but cause the brick to disappear.

GRABIT

There is a GRABIT available, containing some skeleton code, an XML file, and a Makefile, that will facilitate building the cartridge.

Or: check the class repo under the projects/ directory.

TASK

Implemented from scratch, in assembly:

  • use more than just the BIOS texture for graphics
  • have texture(s), regions for a paddle, brick(s), and a ball
  • have the ball rebound, continuing in one direction until it hits a bound
    • bounds can be the top, bottom, or side of the screen (which it will reflect off of)
    • bounds can also be the paddle (which it will also reflect off of)
    • bounds can be any of the bricks (which it will reflect off it, causing the brick to disappear)
  • paddle bounds are the edges of the screen (prevent it from getting lost off the screen)
  • if the paddle fails to deflect the ball and the ball moves beyond the screen, reset the ball and start again
  • display the paddle and ball on the screen, allowing paddle control via the gamepad
    • two gamepad directions will be necessary for moving the paddle
  • display the bricks on the screen, allowing for collision with the ball (if present/visible)
  • implement a simple scoring system and display (hitting and destroying a brick)

Feel free to add some frills:

  • power-ups
  • different brick colors
  • sound effects (ball hitting paddle/bricks)

SUBMISSION

To be successful in this project, the following criteria (or their equivalent) must be met:

  • Project must be submit on time, by the deadline.
    • Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
  • Processing must be correct based on input given and output requested
  • Output, if applicable, must be correct based on values input
  • Code must be nicely and consistently indented and aligned
  • Code must be consistently written, to strive for readability from having a consistent style throughout
  • Code must be commented
    • Sufficient comments explaining the point of provided logic MUST be present
  • Track/version the source code in your private semester repository

SUBMITTING

To submit, please place your project files under the comporg/mab2/ folder at the base of your private semester repository. I will look there for your submission.

RUBRIC

I'll be evaluating the project based on the following criteria:

130:mab2:final tally of results (130/130)
*:mab2:post screenshot or short video of game in class channel [13/13]
*:mab2:code assembles cleanly, with no warnings [13/13]
*:mab2:submit code, XML file, and any needed assets [13/13]
*:mab2:paddle displays, position adjusted by gamepad [13/13]
*:mab2:paddle is bounded by screen edges [13/13]
*:mab2:paddle can deflect ball [13/13]
*:mab2:ball moves automatically, resets if it goes off screen [13/13]
*:mab2:ball deflects off screen edges, paddle, or bricks [13/13]
*:mab2:brick disappears upon collision with ball [13/13]
*:mab2:game keeps and displays score [13/13]

ADDITIONALLY

  • Solutions not abiding by spirit of project will be subject to a 50% overall deduction
  • Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
  • Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
  • Solutions not organized and easy to read (assume a terminal at least 90 characters wide, 40 characters tall) are subject to a 25% overall deduction