Skip to content

simon-gardier/dance-dance-revolution-assembly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 Dance dance revolution game written in pure assembly!

Release Language

Game menu - default view

Summary

  1. Quick presentation
  2. Results illustrated
  3. Test it
  4. Improvements
  5. Credits

Quick presentation

Disclaimer : It is recommended to take a look the electrical_schematic.pdf and report.pdf for detailed explanations.

This project is a simple remake of the famous Dance Dance Revoluation game from Konami.
The project is designed for the PIC16F1789.
The project was developped using MPLAB X IDE and picas, documentation here.

It comes with :

  • A definition of 104x144 pixels (up to 416x576 pixels with enough RAM).
  • A menu with a "High score".
  • 1 map with 1 song.
  • The possiblity to easily add new songs in music.s to be used for the menu or new maps.
  • Heart system (elimination after 3 missed arrows).

Project undertaken as part of the INFO2055 course given by Pr. Boigelot at ULiège.
Final grade : 20/20.
Note : No copying (even partial) of this code within the scope of the INFO2055/APRI0007 course will be tolerated.

Video signal generation

The signal generated follows the PAL-G standard. An introduction to PAL signal generation can be found on Rickard Gunee's page.

Music generation

The music is generated "from scratch" using one psmc module of the PIC. More explanation can be found in music.s / music.inc.

Results illustrated

Game menu - default view Game menu - high score updated in game view with score and heart system
  • On the left the menu on start.
  • In the middle the menu after a new "high score".
  • On the right the game in action with the current score and the remaining "hearts".

Test it

  • Clone the repository
git clone [email protected]:sgardier/dance-dance-revolution-assembly.git
  • Cd into the /code repository and compile the code
cd ./dance-dance-revolution-assembly/code
make
  • Connect you PIC16f1789 to your PC using a Pick-It and flash your code using :
make flash

An introduction to pic assembly can be found on this page.

Improvements

Currently, the output speed of 1 pixel per 4 instruction cycle (can be sped up to 1 pixel per instruction cycle, if enough RAM memory available) is achieved by :

  • Loading a complete byte (8 pixels) in the latch of PORTC, each 8 pixels.
  • Shift-left the PORTC latch value and store it back into itself, for each pixel.

Only the most-significant bit of PORTC is connected to the video output, resulting in the pixels being outputted 1 bit at a time. This is handy but wastes the 7 other pins of PORTC.

The current music system check at every frame if an "update" of the outputted sound is required to move forward in the music. In the current music, the update is only required each 5 frames yet we still make the verification, which is a waste.

Credits

  • Simon Gardier (Co-author)
  • Camille Trinh (Co-author)
  • Arthur Graillet (Co-author)
  • Saïd Hormat-Allah (Co-author)