Jubeat (ユビート Yubīto?), stylized as jubeat, is a series of arcade music video games developed by Konami Computer Entertainment Japan, and is a part of Konami's Bemani line of music video games. The series uses an arrangement of 16 buttons in a 4x4 grid for gameplay, a grid also used for the displaying of cues and part of the user interface.
Dependencies: 4DGL-uLCD-SE SDFileSystem TextLCD mbed-rtos mbed wave_player
Fork of ECE4180_Lab4 by
main.cpp
- Committer:
- ToHellWithGeorgi
- Date:
- 2016-03-16
- Revision:
- 0:c3c8793d0091
File content as of revision 0:c3c8793d0091:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" #include "SDFileSystem.h" #include "wave_player.h" #include "VS1002.h" #include <mpr121.h> //SDFileSystem sd(p5, p6, p7, p8, "sd"); uLCD_4DGL uLCD(p28,p27,p30); Serial pc(USBTX, USBRX); VS1002 mp3(p5, p6, p7, p8,"sd",p11, p12 ,p13, p14, p23, p22, p21, p20); LocalFileSystem local("local"); //AnalogOut DACout(p18); // used to play sound on speaker //wave_player waver(&DACout); //This is for the touchpad I2C i2c(p9, p10); InterruptIn interrupt(p26); Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); int start = 0; int new_song_number=1; //Variable to store the Song Number int volume_set=-1; //Variable to store the Volume int previous_volume; //Variable to store the volume when muted bool pause=false; //Variable to store the status of Pause button bool mute=false; //Variable to store the status of mute button int check=0; //Capacitative touch generates interrupt on both press and release. This variable tracks this and updates only on press. char *song_name[6]={"18 till I Die","Summer of 69","Boulevard", "Serenity","Crawling","In the end"}; //Array of song names entered manually int chosennum=-1; int playing=0; int score=0; int fullscore; Mutex ulcd_mutex; Mutex sd_mutex; void fallInterrupt() { int key_code=0; int i=0; int value=mpr121.read(0x00); value +=mpr121.read(0x01)<<8; // LED demo mod by J. Hamblen //pc.printf("MPR value: %x \r\n", value); i=0; // puts key number out to LEDs for demo for (i=0; i<12; i++) { if (((value>>i)&0x01)==1) key_code=i+1; } check=1; //pc.printf("%d ",playing); //if(!playing){ chosennum=key_code; //} } class square { public: int startx,starty,side,pos; /*function*/ square(){}; square(int sx,int sy,int s,int p):startx(sx),starty(sy),side(s),pos(p){}; void set(int sx, int sy, int s,int p){startx = sx;starty = sy;side = s;pos = p;}; // draw the block on the LCD void draw() {//draw a empty block on the LCD uLCD.rectangle(startx,starty,startx+side,starty+side,0x00FF00); } void show() {//emerge the color inside the block uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x333300); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x666600); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x999900); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0xCCCC00); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0xFFFF00); wait(0.1); if(pos==chosennum){hit();score++;} else{miss();} } void hit() { uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x00FF00); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x000000); } void miss() { uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0xFF0000); wait(0.1); uLCD.filled_rectangle(startx+4, starty+4, startx+side-4, starty+side-4, 0x000000); } }; void graph(void const *args) { while(!start){wait(0.5);} pc.printf("i can start from now"); ulcd_mutex.lock(); square a[9]; a[0].set(1,1,40,1); a[1].set(44,1,40,2); a[2].set(87,1,40,3); a[3].set(1,44,40,5); a[4].set(44,44,40,6); a[5].set(87,44,40,7); a[6].set(1,87,40,9); a[7].set(44,87,40,10); a[8].set(87,87,40,11); a[0].draw();a[1].draw();a[2].draw(); a[3].draw();a[4].draw();a[5].draw(); a[6].draw();a[7].draw();a[8].draw(); FILE *fp = fopen("/local/2.txt", "r"); int screen=-1; int waitmm=0; int numnode=-1; int counter = 0; fscanf(fp,"%d",&numnode); fullscore=numnode; while(counter < numnode) { fscanf(fp,"%d %d",&screen, &waitmm); //uLCD.printf("%d %d\n", screen, waitmm); a[screen].show(); wait(float(waitmm)/1000); counter++; } ulcd_mutex.unlock(); } int main() { //Thread thread2(speaker); interrupt.fall(&fallInterrupt); interrupt.mode(PullUp); Thread thread2(graph); uLCD.cls(); uLCD.media_init(); uLCD.set_sector_address(0x0000, 0x0099); uLCD.display_video(0,0); uLCD.cls(); ulcd_mutex.lock(); uLCD.printf("This is game of Jubeat\n\npick a song you want to play\n\n1. Lovers on the Sun\n2.Man At Arms\n"); while(!check){wait(0.1);} uLCD.printf("You chosen song: %d",chosennum); wait(1); uLCD.cls(); ulcd_mutex.unlock(); pc.printf("mutex unlocked!\n"); /* square a[9]; a[0].set(1,1,40); a[1].set(44,1,40); a[2].set(87,1,40); a[3].set(1,44,40); a[4].set(44,44,40); a[5].set(87,44,40); a[6].set(1,87,40); a[7].set(44,87,40); a[8].set(87,87,40); a[0].draw();a[1].draw();a[2].draw(); a[3].draw();a[4].draw();a[5].draw(); a[6].draw();a[7].draw();a[8].draw(); */ mp3._RST = 1; mp3.cs_high(); //chip disabled mp3.sci_initialise(); //initialise MBED mp3.sci_write(0x00,(SM_SDINEW+SM_STREAM+SM_DIFF)); mp3.sci_write(0x03, 0x9800); mp3.sdi_initialise(); start=1; //while(1) //{ //playing=1; mp3.play_song(1); //playing=0; //} ulcd_mutex.lock(); uLCD.cls(); uLCD.printf("congratulation!\n\nYour score is:\n\n%d \nout of %d",score,fullscore); wait(3); ulcd_mutex.unlock(); while(1){} }