Skip to main content
Version: FILS English

Rusty Rhythm

Rusty Rythm is a simple rhythm game where you press buttons to the beat of a track of your choosing from the game's catalogue.

info

Author: NEDELCU Ioana
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-ioqnq

Description

When booting up the game, you will be prompted to pick one of the available songs and the difficulty which you wish to play on. You can then input a 3 character username. The gameplay itself consists of pressing the buttons to the rhythm of the song you selected with the aid of the visual interface. Hitting the correct button(s) at the right time adds to your score.

Motivation

While being more familiar with mobile, touch-screen based rhythm games, I've always been fascinated by the larger-scale arcade machines, which offer more of a physical, tactile response. I hope to put the technical knowledge I have gained throughout the semester to use by bringing to life a pocket-sized version of the arcade experience.

Architecture

Architechture Diagram

Log

Week 6 - 12 May

Finished ordering any remaining parts that I might have needed. My components ended up requiring more current than I was expecting so I couldn't power everything using the pico as I had planned (went for a battery + step down module set up instead). Brought KiCad scheme in its final form.

Week 7 - 19 May

Battery proved too troublesome so in the end I'm using a 3.3V and 5V power source. All components now work together. Coded in game menus (song select, difficulty select, gameplay). Will need to add a results screen. Have a few ideas for beatmap implementation.

Week 20 - 26 May

Final gameplay elements implemented (falling notes, scoring). Made some small KiCad scheme changes to reflect the power source setup. In the end I chose to design the beatmap manually. To do this, I played the song and started a timer. First I measured the amount of time a note takes to reach the bottom of the screen. Then I played the song and pressed buttons to the beat, each button displaying its timing and column number. This is how I got the timestamps that will later have to be compared to the player's inputs.

Hardware

  1. Raspberry Pi Pico W Microcontroller: Coordinates all of the components.
  2. Buttons: Game input.
  3. Buzzer: Audio feedback for game inputs.
  4. MP3 Player Module: Reads song from a microSD card.
  5. Speaker: Ouputs song.
  6. Display: Visual output device, displays the game elements (falling notes, score, menus).
  7. Breadboard: Used for building the circuit.
  8. Wires: Used for connecting the components.

Schematics

KiCad Schematic

Final Look

Bill of Materials

DeviceUsagePrice
Rapspberry Pi Pico 2WThe microcontroller39,66 RON
Male-Female WiresElectronic Components4,45 RON
Jumper Wires SetElectronic Components7,99 RON
Breadboard 400Electronic Components4,56 RON
Breadboard 830Electronic Components4,99 RON
DC-DC Step Down LM2596SElectronic Components12,99 RON
Push ButtonsGame inputs1,44 RON
MP3 Player MiniReads song13,99 RON
LCD SPI Module ScreenDisplay43,58 RON
SpeakerOutputs song4,98 RON
Passive Buzzer ModuleGame feedback1,69 RON
Rapspberry Pi PicoDebugger31,50 RON

Software

LibraryDescriptionUsage
embassy-embedded-halEmbedded I/OScreen SPI
embedded-graphics2D graphics libraryDrawing to the display
st7735-lcdDisplay driverControls the display
embedded-timeDurations, clocks, ratesBeatmap timings, general delays
heaplessStatic data structuresBeatmap storing
mipidsiSPI DriverScreen Controller
  1. Additional project inspiration
  2. Raspbery Pi Pico 2W with DFPlayerMini MP3 Player
  3. DFPlayer Raspberry Pi Pico Audio Player Project
  4. DFPlayer Mini Set Up Tutorial
  5. LM2596 DC-DC Buck Converter Adjustable Tutorial