Disclaimer : It is recommended to take a look at 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.
The signal generated follows the PAL-G standard. An introduction to PAL signal generation can be found on Rickard Gunee's page.
The music is generated "from scratch" using one psmc module of the PIC. More explanation can be found in music.s
/ music.inc
.
- 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".
- Clone the repository
git clone git@github.com: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.
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.
- Simon Gardier (Co-author)
- Camille Trinh (Co-author)
- Arthur Graillet (Co-author)
- Saïd Hormat-Allah (Co-author)