Nintendo Kirby! Real-Time Video Game
- Ziwei Zhu
- Apr 11, 2018
- 2 min read
Updated: Jan 17, 2019
GitHub Link: https://github.com/ziwei-zhu/Project-FPGA.git


Introduction
Our project is a kirby game action adventure 2D game. The game content contains two stages: A normal stage that have three enemies and multiple platforms, and the second stage that contains a boss. The game involves main character actions including jump, attack, running and flying. Enimies would hurt kirby and reduce its health points. If kirby kills enimies they would also gain scores. The moving of kirby applys our gravity system. The image is loaded by both on-chip memory and SRAM with color palette. The image graphics are all designed and drawn by us. In the second stage we designed a AI for our boss which would track and chase our kirby. The control system includes keyboard and mouse which is able to equally manipulate our kirby. The background music starts playing after the game starts. Finally the game includes a speed up function button and a restart button. The whole games includes 12 FSM, three driver interfaces and multiple graphic mapper function.

Game Description
Our goal is to make a game that is like kirby in GBA platform. A adventure action game from Nintendo. We plan to clone most of its features and make a small version using our FPGA board. Below is one of the stage in Kirby.
Our game supports following functions: --The character kirby in our game is able to walk, jump, fly and attack.

--The scene of the game includes the ground and several floating clouds. The boarder of the screen is restricted too. --The gravity system enable kirby to jump and fly in the air for a period of time. The kirby would fell from the floating clouds. --There are two stages in the game. First stage is a normal adventure. Second stage is the boss fight. --Kirby have three health point. If Kirby loss all points it would die. --Kirby can attack the enimies by inhaling. The enemies would disappeared.
Image processing
Sprits & fix function
Most of our game image comes from sprits. The kirby, clouds, enimies, boss, buttons, score and HP points. We draw these image and put them into one canvas that have width 256. We select 256 particularly because we could use shift operation to access each spirits during the calculation. For instance, if we need to find a kirby image, we could use the following formula:
address = (DrawY - Xposition) * 256 + DrawY + Yposition
But since width is 256, we could transform into the following formula:
address = (DrawY - Xposition) << 8 + DrawY + Yposition

留言