Music Rush
This project was created for Digital System Laboratory (ECE 385) at the University of Illinois.
Start screen
Level selection screen
Game playing screen
End Screen
Music Rush is a rhythm game based on DDR, Guitar Hero, and Piano Tiles. It is a multiplayer game that uses the keyboard as the player interface.
During the game, four arrows move up from the bottom on the left side and two notes move down from the top on the right side. One player tries to hit the arrows with A,W,S,D (Left, Up, Down, Right arrows) when the arrows reach the target arrows on the top, and another player tries to hit the notes with O,P (left and right notes) when the notes reach the target notes on the bottom. If hit at the right time, the arrow or note would generate a sound.
We have two songs stored in memory: Jingle Bell as the easy level and Smile-Butterfly as the hard level. The arrows stand for the right hand piano rhyme, and the notes stand for the left hand piano rhyme. If an arrow or note is missed, it won’t make any sound. The goal of this game is to hit as many arrows and notes as possible to make a complete piano song and to score as high as possible.
This project was implemented in Intel Quartus Prime and FPGA Shield. Intellectual property(IP) functions subsystems were interconnect in platform designer. Some elements included a NIO2 processor, RAM on-chip memory, SDRAM off-chip memory for software, and USB protocol for keyboard. We then labeled each port, made circuit connection, and assigned addresses.
Hardware files were coded and stored in Quartus using System Verilog language. Software files were coded and stored in Eclipse using C. A jtag_uart module was responsible for hardware-software communication.
Graphics of the arrows and notes were stored with a fixed function approach as lookup tables. Every pixel is checked with x and y offsets. If the current pixel is an arrow or note, the output is 1 and the picture is drawn on screen. Otherwise the output is 0 and nothing will be drawn.
A wavetable is used to generate the signals for audio output with a counter. Audio sounds were stored as ROM file with a cutoff value and an endtime value. The output is high or low by comparing the counter with the cutoff value.
This project showcases the knowledge and use of Quartus, FPGA, platform designer, graphic design, and music tone calculation.
This paragraph is intended to give credit to my teammate: Michelle Zhang