For project 1, you’ll be writing a video game in MIPS assembly. It’s a very simplified version of the Sega Genesis/Mega Drive Sonic the Hedgehog platformer games.

You’ll continue to use the LED Keypad and Display plugin that you used in lab 4. To the right is a video demonstrating how the game will look and work when you’re done.

Brief game description

There is a tilemap on which all the action takes place. This is a 2D grid of “tiles,” small square images which make up the walls, sky, spikes, rings etc.

The user controls the player, a shiny red sphere. The player can walk left and right and jump. Gravity pulls the player downwards. The player can also destroy certain tiles by moving downwards at high speed.

There are rings which the player can collect for fun. There are springs which bounce the player into the air. There are spikes which injure the player.

The player can be injured up to three times on spikes before they get a game over and the game ends. However there are also hearts which the player can pick up to restore a point of health after being injured.

Finally there are moving spikes, which also injure the player but they’re moving, so it’s more challenging.

If the player reaches the goal, a checkerboard-colored line of tiles, the game ends and the player is congratulated.


Grading Rubric

Note: if you submit on the late due date, 10 points will be deducted after all other grading has been done.

Code style: although there is no point category for code style, the graders may take off up to 10 points if your code is very poorly-written. Poor indentation may lose you a couple points, but mostly it’s about using the calling convention we learned; using the right registers for the right purposes; and writing/using functions correctly. Remember: keep your code neat and tidy while you write it, not at the end.


Stuff to download

Right-click and download this ZIP file. Your browser may automatically extract it to a folder. If not, open it and extract its contents to a new folder.

Now:

  1. Rename abc123_proj1.asm to your username.
  2. Open that file in MARS.
  3. Open and connect the Keypad and LED Display Simulator tool.
  4. Assemble and run. It should just sit there in an infinite loop displaying the HUD (hearts, some symbols and letters) at the top of a black screen.

Click here for the instructions.


Submission

Be sure to review the grading rubric before submitting.

You will submit only your abc123_proj1.asm file (but renamed with your username).

Please put any important notes to the TA at the top of your asm file in comments. For example, if you wrote some code that is never called, they will not see the behavior; tell them that you attempted it and you may get some partial credit.

To submit:

  1. On Canvas, go to “Assignments” and click this project.
  2. Click “Start Assignment.”
  3. Under “File Upload,” click the “Browse” button and choose your abc123_proj1.asm file.
    • Do not include any other files.
  4. Click “Submit Assignment.”

If you need to resubmit, that’s fine, just click “New Attempt” on the assignment page and upload it again. The last thing you submit is what we grade.

It is okay to submit on/before the normal due date, and then resubmit on the late due date. You will get the late penalty, but if you turn in a 60 on time and a 100 late, that 100 becomes a 90, and it’s a net win anyway!