Hookman

 

Hookman is a top down platformer developed for the Game Boy Advanced.  This project was made for Media and Device Architecture, a class that specialized in developing software for specific devices, and in my case, the Game Boy Advanced. 

All programming was done in C.  All artwork, coding, animations, and everything besides the music was done by me. 

Below is a video of the game running on a Game Boy Advanced Emulator.

 

Images 

The images below are the files that the emulator reads. They were originally bitmap (BMP) files, and the resolution is small because its the screen-space of a Game Boy Advanced. Images on the left are larger because they the whole level, not just a screenshot of existing on part of a map.

Above is the bitmap for the level. Purple is the alpha channel.

Above is the collision map for the level. A function is responsible for reading from this map and returning the color. Black is the only area the player may move to, while red shows it can be hit by a hookshot. Blue represents the zone in which you've won the game.

Above is the splash screen/background.

Above is the sprite sheet. Purple is the alpha channel

Above is the bitmap for the water under the level. This is on background level 0 and is shown where the purple would be for the level bitmap.

 

Code

Here is a tidbit of code to you give you an idea about what developing for a Game Boy Advanced looks like.

The main method reads inputs, holds one cycle of old inputs, calls a function pointer state, waits for vertical sync, and loops again.

Here you can see some DMA calls to load in the correct tiles, pallets, and sprite sheets. You can also see the function pointer 'state' being assigned.

collisionBitmap is the black, white, red, and blue image shown above.

Here is a little preview of how the video buffer and drawing to the screen works in a Game Boy Advanced.

 

Note, if you would like to download and run the game, you will need a GBA emulator.