Homework 04: Mode 4 Game




Rate this product

Homework 04:
Mode 4 Game
In this assignment, you will be making a complex game in Mode 4. The complexity
expectation is the same as the last assignment, but this time, images are also required.
You may not extend a game you already made for a previous assignment; you must
create something new. As a reminder, some suggested games along the complexity
level we expect are:
● Breakout, with at least 3 rows of 5 blocks (Easy)
● Tetris (Hard)
● Simple flash games (ex.
● Simple Neopets games (
● Old Atari games, like Asteroids (
Your game must have the following:
● At least one struct
● At least one array
● Pooling
● Meaningful text
○ It can’t just be present; it needs to be relevant to the game
● Non-static text
○ This means it changes while you are looking at it (erased then redrawn)
■ Score that visibly updates during the game is a good example
● The following states: Start, Game, Pause, Win/Lose
○ You can have either a Win state, a Lose state, or both.
● DMA used correctly for fillScreen4(), drawRect4(), drawImage4(),
and drawFullscreenImage4().
● At least one fullscreen image
● At least one non-fullscreen image
● At least five moving objects
● At least three buttons used for input
● Collision that matters
○ Something must happen whenever two different objects hit each other
● A readme.txt file
○ An instruction manual (of sorts) that tells a player how to play your game
● Only a minimal amount of flicker.
Your code must have the following:
● Be entirely written in Mode 4
○ Having the Mode 3 functions alongside the others in myLib.c is fine, as
long as you never call them.
● Multiple .c files (more than just main.c and myLib.c)
● At least two .h files
● Good organization (see tips below)
● Meaningful comments
● Start early. Never underestimate how long it takes to make a game.
● Start over. Do not copy your last game’s code and change it, because you
will (probably) have to do quite a bit of restructuring to make a Mode 3 game start
working in Mode 4.
● Do not draw text every frame. It takes a while to draw, so only update it when it
needs to update
○ For score, only redraw when the score is different than before.
● When splitting code between multiple files, put code that will be useful in multiple
games in myLib.c, and code specific to this game in main.c or other files. Those
other files should be specific to a concept (collision, etc.).
● Organize your code into functions specific to what that code does. Your main
function should not be very long.
○ Having update() and draw() functions that you call in main() is helpful.
○ Make sure the order takes into account waiting for vblank at the correct
times to minimize flicker.
● Build upon the myLib.c and myLib.h files from previous assignments
(especially Lab05).
Submission Instructions
Compress your entire project folder, including all source files, the Makefile, and
everything produced during compilation (including the .gba file) into a single .zip file.
Submit this .zip on Canvas. Name your submission HW04_FirstnameLastname, for
example: “”.