Introduction: 233 Final Project: Dance Dance Revolution

Amy La

Catherine Wei

Kayla Davis

Justin Youn

CPE 233 Callenes

Dance Dance Revolution is a popular game from arcades worldwide and was a big part in many of our childhoods. We decided to try to implement our own version of Dance Dance Revolution using the OTTER(Our two Thirty Three Engineered RISC) architecture made with SystemVerilog.

Step 1: Materials Needed

The Following Materials are needed to make this Dance Dance Revolution Game:

  • Xilinx Vivado Design Suite Software
  • Digilent Basys3 FPGA Board
  • USB to Micro USB Cable
  • VGA to VGA Cable
  • Monitor with VGA input

Step 2: Implement OTTER

  • In your respective CPE 233 course create a completed OTTER(Our two Thirty Three Engineered RISC) ISA(Instruction Set Architecture).
  • The OTTER architecture will implement the RISC-V ISA that will be the primary focus of our project.

Step 3: Setting Up the VGA

  • In order to connect the VGA to the OTTER architecture, use the attached zip file which contains the VGA driver module.
  • Also attached is the VGA driver module document which explains how the VGA module works.

Step 4: Using the Risc-V Assembly Code

  • Attached is the text file that contains the starter code for outputting to the VGA using Memory-Mapped I/O.
  • This connects the Software of the OTTER to the VGA

Step 5: Implementing Our Own Dance Dance Revolution Via Starter Code

  • Attached below is the full file of our assembly code for the Dance Dance Revolution Game.
  • This generates 4 types of arrows: left, down, up, and right.
  • The arrows at the top are the stationary arrows that are the reference arrows.
  • The moving arrows spawn at the bottom.

Step 6: Playing the Game!

  • How To play the game:
    • Wait for the moving arrows to line up with the stationery arrows and press the arrow key that corresponds with the arrow's orientation.
    • The Points are calculated based on distance from the Stationery Arrow.
      • The further away the moving arrow is, the less points received.
    • The goal is to get as many points as possible.
    • Compete with your friends to see who can get the most points!
    • Included below is a link to the furthest we got our game to operate.

Step 7: Issues

  • While developing our project we came across a lot of bugs, particularly with the VGA module. It took some time to get the VGA module itself to be fully functional.
  • Another issue was when attempting to randomly generate arrows, only the left arrow would be generated and none of the other three types.

Step 8: Improvements

Due to time, we weren't able to fully accomplish everything that we wanted to do with our game.

Some things we would have liked to add are:

  • Fully generate random moving arrows using the random function.
  • Utilize the keyboard module to enable user input to play the game.
  • Output the score of the game onto the Seven Segment Display.
  • Generate songs that correspond to the moving arrows.