static void drawFrog() { drawImage4(frog.x, frog.y, 14, 14, prevImg); if (KEY_DOWN_NOW(KEY_LEFT)) { frog.x -= frog.dx; drawImage4(frog.x, frog.y, 14, 14, frog.imgL1); drawImage4(frog.x, frog.y, 14, 14, frog.imgL2); drawImage4(frog.x, frog.y, 14, 14, frog.imgL3); prevImg = frog.imgL1; } else if (KEY_DOWN_NOW(KEY_RIGHT)) { frog.x += frog.dx; drawImage4(frog.x, frog.y, 14, 14, frog.imgR1); drawImage4(frog.x, frog.y, 14, 14, frog.imgR2); drawImage4(frog.x, frog.y, 14, 14, frog.imgR3); prevImg = frog.imgR1; } else if (KEY_DOWN_NOW(KEY_UP)) { frog.y -= frog.dy; drawImage4(frog.x, frog.y, 14, 14, frog.imgU1); drawImage4(frog.x, frog.y, 14, 14, frog.imgU2); drawImage4(frog.x, frog.y, 14, 14, frog.imgU3); prevImg = frog.imgU1; } else if (KEY_DOWN_NOW(KEY_DOWN)) { frog.y += frog.dy; drawImage4(frog.x, frog.y, 14, 14, frog.imgD1); drawImage4(frog.x, frog.y, 14, 14, frog.imgD2); drawImage4(frog.x, frog.y, 14, 14, frog.imgD3); prevImg = frog.imgD1; } }
void lose(int *seed) { DMA[3].src = GameOver; DMA[3].dst = videoBuffer; DMA[3].cnt = DMA_ON | 38400; while(!KEY_DOWN_NOW(BUTTON_SELECT))(*seed)++; while(KEY_DOWN_NOW(BUTTON_SELECT))(*seed)++; }
//Determines Output and Stores in Buffer void checkSelection(char *buffer) { if(KEY_DOWN_NOW(BUTTON_START) && press) { press = 0; } if(!KEY_DOWN_NOW(BUTTON_START) && !press) { char input[] = "A"; input[0] = 'A' + letterIndex; press = 1; if(letterIndex != 26) { if(letterColumn < CHARACTERLIMIT) { putText(15,letterColumn,input); buffer[letterColumn] = input[0]; // Play the beep DMA[1].cnt |= DMA_ON; REG_TM0CNT |= TM_ON; } } else { DMA[1].cnt &= ~DMA_ON; REG_TM0CNT &= ~TM_ON; playBG = FALSE; endInput = 1; } letterColumn += 1; } }
// Start menu. void start(){ REG_DISPCTL = MODE3 | BG2_ENABLE; drawImage3(0,0,240,160, menu); while(!KEY_DOWN_NOW(BUTTON_START)); while(KEY_DOWN_NOW(BUTTON_START)); }
void updateShip(SHIP* ship) { ship->OldX = ship->x; ship->OldY = ship->y; if (KEY_DOWN_NOW(BUTTON_LEFT)) { ship->x -= 3; } else if (KEY_DOWN_NOW(BUTTON_RIGHT)) { ship->x += 3; } else if (KEY_DOWN_NOW(BUTTON_UP)) { ship->y -= 3; } else if (KEY_DOWN_NOW(BUTTON_DOWN)) { ship->y += 3; } if (ship->y < 0) { ship->y = 0; } if (ship->x < 0) { ship->x = 0; } if (ship->y + ship->width > 150) { ship->y = 150 - ship->width; } if (ship->x + ship->height > 240) { ship->x = 240 - ship->height; } eraseImage3(ship->OldY, ship->OldX, ship->width, ship->height); drawImage3(ship->y, ship->x, ship->width, ship->height, Player); }
void barControl(){ ballControl(); if(KEY_DOWN_NOW(BUTTON_RIGHT)) { cur_bar->CL = cur_bar->CL + cur_bar->CD; } if(KEY_DOWN_NOW(BUTTON_LEFT)) { cur_bar->CL = cur_bar->CL - (cur_bar->CD); } cur_bar = &bar; oldcur_bar = &bar_old; if(cur_bar->CL < 0) { cur_bar->CL = 0; } if(cur_bar->CL > 239-BAR_Width+1) { cur_bar->CL = 239-BAR_Width+1; } waitForVblank(); oldcur_bar = &bar_old; drawImage3(oldcur_bar->RW, oldcur_bar->CL, BAR_Width, BAR_Height, 0x0000); bar_old = bar; cur_bar = &bar; drawImage3(cur_bar->RW, cur_bar->CL, BAR_Width, BAR_Height, BAR); }
void update() { if (KEY_DOWN_NOW(BUTTON_SELECT)) main(); sprintf(string, "Score = %d", score); for (int i = 0; i < NUMDOTS; i++) { if (rectCollides(dots[i].rect, pacman) || dots[i].rect.col<=0) { if (dots[i].isGhost && dots[i].rect.col > 0) drawEnd(); else { initDot(i); score++; } } dots[i].rect.col -= dots[i].del; } // Move Pacman if (KEY_DOWN_NOW(BUTTON_DOWN) && pacman.row < SCREENHEIGHT - pacman.height - TEXT_HEIGHT) pacman.row++; if (KEY_DOWN_NOW(BUTTON_UP) && pacman.row > 0) pacman.row--; if (KEY_DOWN_NOW(BUTTON_LEFT) && pacman.col > 0) pacman.col--; if (KEY_DOWN_NOW(BUTTON_RIGHT) && pacman.col < SCREENWIDTH - pacman.width) pacman.col++; }
void playGame() { lives = MAX_LIVES; score = 0; startLevel(); resetLevel(); int resetPressed = FALSE; // game loop while (lives > 0) { //test select button release if (KEY_DOWN_NOW(BUTTON_SELECT)) { resetPressed = TRUE; } if (resetPressed && !KEY_DOWN_NOW(BUTTON_SELECT)) { titleScreen(); } waitForVBlank(); erase(); updateVars(); checkOutsideScreen(); generateObjs(); draw(); } gameOverScreen(); }
void lose() { drawPicture(end); drawString(150, 0, "Press Start", YELLOW); drawString(130, 0, ":( YOU LOST, TRY AGAIN?", YELLOW); while(!KEY_DOWN_NOW(BUTTON_START)); while(KEY_DOWN_NOW(BUTTON_START)); }
void win() { drawPicture(bg); drawString(70, 10, ":) YOU WIN!!!", YELLOW); drawString(90, 10, "Press Start", YELLOW); while(!KEY_DOWN_NOW(BUTTON_START)); while(KEY_DOWN_NOW(BUTTON_START)); }
void title(int *seed) { (*seed)++; DMA[3].src = Title; DMA[3].dst = videoBuffer; DMA[3].cnt = DMA_ON | 38400; while(!KEY_DOWN_NOW(BUTTON_START))(*seed)++; while(KEY_DOWN_NOW(BUTTON_START))(*seed)++; }
void mouseLogic(){ while(1){ if(KEY_DOWN_NOW(BUTTON_SELECT)){ while(KEY_DOWN_NOW(BUTTON_SELECT)); toReset=1; } if(KEY_DOWN_NOW(BUTTON_DOWN)){ delay(10); if (mouse->r>(UpperLeftRow+MAXR*4-6)){ while(KEY_DOWN_NOW(BUTTON_DOWN)); menuLogic(); } else{mouse->r+=4;} } if(KEY_DOWN_NOW(BUTTON_UP)){ delay(10); if (mouse->r<=(UpperLeftRow)){ while(KEY_DOWN_NOW(BUTTON_UP)); menuLogic(); } else{mouse->r-=4;} } if(KEY_DOWN_NOW(BUTTON_RIGHT)){ //while(KEY_DOWN_NOW(BUTTON_RIGHT)); delay(10); if (mouse->c>=(UpperLeftCol+(4*MAXC)-6)){ mouse->c=UpperLeftCol-2; } else{mouse->c+=4;} } if(KEY_DOWN_NOW(BUTTON_LEFT)){ delay(10); //while(KEY_DOWN_NOW(BUTTON_LEFT)); if (mouse->c<=UpperLeftCol){ mouse->c=(UpperLeftCol+(4*MAXC))-6; } else{mouse->c-=4;} } if(KEY_DOWN_NOW(BUTTON_A)){ while(KEY_DOWN_NOW(BUTTON_A)); int rowConversion=((mouse->r-UpperLeftRow+1)/4); int colConversion=((mouse->c-UpperLeftCol+2)/4); if (a[rowConversion][colConversion]) a[rowConversion][colConversion]=0; else a[rowConversion][colConversion]=1; newBoard=1; } drawBoard(); } }
/* * Press Left or Right to change pages. * Press Start to begin */ void instructions() { waitForVblank(); fillScreen(BLACK); waitForVblank(); drawString(30, 10, "D-Pad to move blocks.", YELLOW); drawString(50, 10, "If two blocks with the same", YELLOW); drawString(70, 10, "number hit, they will merge!", YELLOW); drawString(130, 10, "Press Start to begin.", YELLOW); while (!KEY_DOWN_NOW(BUTTON_START)); while (KEY_DOWN_NOW(BUTTON_START)); }
int simTick() { if (KEY_DOWN_NOW(BUTTON_SELECT)) { while (KEY_DOWN_NOW(BUTTON_SELECT)) { } return 0; } drawScreen(); waitForVBlank(); flipPage(); return 1; }
void updatePaddle(){ if( KEY_DOWN_NOW(BUTTON_LEFT)){ paddle.col -= PADDLE_MOVE; if( paddle.col <= (LEFT_BOUND - 1)) paddle.col = oldPaddle.col; } if( KEY_DOWN_NOW(BUTTON_RIGHT)){ paddle.col += PADDLE_MOVE; if( (paddle.col + PADDLE_WIDTH) >= (RIGHT_BOUND -1)) paddle.col = oldPaddle.col; } }
int splash() { int seed = 0; //u16 *ptr = videoBuffer; REG_DISPCTL = MODE3 | BG2_ENABLE; drawPicture(start); drawString(150, 0, "Press Start", YELLOW); while(!KEY_DOWN_NOW(BUTTON_START)) { seed++; } while(KEY_DOWN_NOW(BUTTON_START)); return seed; }
int main() { setMode(MODE_4 | BG2_ENABLE); startGame(); while(1) { if (KEY_DOWN_NOW(KEY_START) && state == 0) { state = 1; numOfLives = 3; loadAvatar(); fillPalette(GPalette_palette, 0, GPALETTE_PALETTE_SIZE); PALETTE[200] = BLACK; PALETTE[201] = WHITE; PALETTE[202] = RED; PALETTE[203] = GREEN; PALETTE[204] = BLUE; for (int i = 0; i < 5; i++) { homeFlags[i] = 0; } } if (state == 1) { drawBG(); char liveStr[7]; if (numOfLives >= 0) { sprintf(liveStr, "%d", numOfLives); drawString4(10, 147, "LIVES LEFT: ", PALETTE[1]); drawString4(80, 147, liveStr, PALETTE[1]); } drawTrucks(); drawCars(); drawCrocodiles(); drawWoods(); drawFrog(); collision(); reset(); delay(2); waitForVblank(); flipPage(); } if (state == 2) { while (1) { if (KEY_DOWN_NOW(KEY_START)) { state = 0; break; } } } } return 0; }
void checkReset() { if (KEY_DOWN_NOW(BUTTON_SELECT)) { state = WELCOME; } }
int main(void) { REG_DISPCNT = MODE3 | BG2_ENABLE; while(1){ if(start == -1) { waitForVblank(); bricksSet(Bricks); cleanScreen(); startscreen(); waitForVblank(); start = 1; cleanScreen(); bricksDraw(); barSet(); ballSet(); } CollisionDetect_BRICKS(); barControl(); ballControl(); waitForVblank(); if(KEY_DOWN_NOW(BUTTON_SELECT)) { Reset(); continue; } if(score == 600 || life == 0){ cleanScreen(); overscreen(); Reset(); } } }
int win(int *seed) { (*seed)++; int i; for (i = 0; i < 20; i += 1) { DMA[3].src = Win + i*200; DMA[3].dst = videoBuffer + OFFSET(10+i, 20); DMA[3].cnt = DMA_ON | 200; } while(!(KEY_DOWN_NOW(BUTTON_SELECT)|| KEY_DOWN_NOW(BUTTON_START)))(*seed)++; if(KEY_DOWN_NOW(BUTTON_SELECT)){ while(KEY_DOWN_NOW(BUTTON_SELECT))(*seed)++;return TITLE;} while(KEY_DOWN_NOW(BUTTON_START))(*seed)++;return GAME; }
void gameLogic(){ int i; mode=NORMAL; playing=0; for (i=0;i<2;i++){ PALETTE[i]=LifeGame_palette[i]; } drawImage4(0,0,240,160,LifeGame); while(!(KEY_DOWN_NOW(BUTTON_START))){ } u16 colors[]={BLACK,LTGREY,RED,GREEN,BLUE,WHITE,DKGREY,YELLOW}; int numcolors = sizeof(colors)/sizeof(colors[0]); for (i=0;i<numcolors;i++){ PALETTE[i]=colors[i]; } clear();//Clear array to start game toReset=1; drawBoard(); mouseLogic(); }
void delay(int n){ volatile int i; for (i=0;i<(n*1000);i++){ if(KEY_DOWN_NOW(BUTTON_A)){ return; } } }
void intro4() { REG_DISPCTL = MODE3 | BG2_ENABLE; WaitForVblank(); drawImage3(0,0,160,240,instruction4); while(!KEY_DOWN_NOW(BUTTON_A) && !KEY_DOWN_NOW(BUTTON_SELECT)); if (KEY_DOWN_NOW(BUTTON_A)) { state = PLAYING; } else { state = WELCOME; } while(KEY_DOWN_NOW(BUTTON_A)|| KEY_DOWN_NOW(BUTTON_SELECT)); }
void intro0() { REG_DISPCTL = MODE3 | BG2_ENABLE; WaitForVblank(); drawImage3(0,0,160,240,welcome); while(!KEY_DOWN_NOW(BUTTON_A) && !KEY_DOWN_NOW(BUTTON_SELECT)); if (KEY_DOWN_NOW(BUTTON_A)) { state = INTRO1; } else { state = WELCOME; } while(KEY_DOWN_NOW(BUTTON_A)|| KEY_DOWN_NOW(BUTTON_SELECT)); }
int main() { REG_DISPCNT = BG2_EN | MODE_4; int state = SPLASH; //CURSOR STUFF user.row = 80; user.col = 120; user.oldRow = user.row; user.oldCol = user.col; user.oldoldRow = user.row; user.oldoldCol = user.col; user.pixelState = deadYes; user.oldPixelState = deadNo; user.oldoldPixelState = deadNo; while(1) { switch(state) { case SPLASH: FlipPage(); setPalette(titleScreen_palette); drawImage4(0,0,240,160,titleScreen); FlipPage(); PALETTE[0] = deadNo; drawRect4(0,0,160,240,0); while(!KEY_DOWN_NOW(BUTTON_START)); while(KEY_DOWN_NOW(BUTTON_START)); FlipPage(); PALETTE[0] = deadNo; drawRect4(0,0,160,240,0); state = EDIT; break; case EDIT: editableBy(user); state = SIMULATE; break; case SIMULATE: simulating(); state = EDIT; break; } } return 0; }
//Checks Movement for Keyboard void checkMovement() { //Check for Movement and change direction if(KEY_DOWN_NOW(BUTTON_LEFT) && left) { if(letterIndex == 26) { sprites[0].col -= sprites[0].cdel; } sprites[0].col -= sprites[0].cdel; left = 0; letterIndex -= 1; } if(KEY_DOWN_NOW(BUTTON_RIGHT) && right) { sprites[0].col += sprites[0].cdel; right = 0; letterIndex += 1; if(letterIndex >= 26) { sprites[0].col += sprites[0].cdel; } } if(!KEY_DOWN_NOW(BUTTON_LEFT)) { left = 1; } if(!KEY_DOWN_NOW(BUTTON_RIGHT)) { right = 1; } if(sprites[0].col < 0) { sprites[0].col = 0; letterIndex = 0; } if(sprites[0].col > MAXWIDTH-16) { sprites[0].col = MAXWIDTH - 24; letterIndex = 26; } }
int main() { REG_DISPCTL = MODE4 | BG2_ENABLE | BUFFER1FLAG; loadPalette(pics_palette, PICS_PALETTE_SIZE, 0); int state = BEGIN; while(1) { switch(state) { case BEGIN: // loadPalette(pics_palette, PICS_PALETTE_SIZE, 0); drawImage4(0, 0, 240, 160, (u16*)screen); waitForVblank(); FlipPage(); while(!KEY_DOWN_NOW(BUTTON_START)); state = GAME; break; case GAME: state = play(); break; case WIN: loadPalette(pics_palette, PICS_PALETTE_SIZE, 0); drawImage4(0, 0, 240, 160, (u16*)win); drawString4(5, 8, "Press Select", PALETTE[0]); waitForVblank(); FlipPage(); while(!KEY_DOWN_NOW(BUTTON_SELECT)); state = BEGIN; break; case LOSE: // loadPalette(pics_palette, PICS_PALETTE_SIZE, 0); drawImage4(0, 0, 240, 160, (u16*)die); waitForVblank(); FlipPage(); while(!KEY_DOWN_NOW(BUTTON_SELECT)); state = BEGIN; break; default: break; } } return 0; }
int main() { REG_SOUNDCNT_ = SND_ENABLED; REG_SOUNDCNT_H = SND_OUTPUT_RATIO_100 | //overall sound DSA_OUTPUT_RATIO_100 | //channel a DSA_OUPUT_TO_LEFT | DSA_TIMER0 | DSA_FIFO_RESET | DSB_OUTPUT_RATIO_100 | //channel b DSB_OUTPUT_TO_RIGHT | DSB_OUPUT_TO_RIGHT | DSB_TIMER1 | DSB_FIFO_RESET; REG_INTERRUPT = (u32interruptHandler); REG_IME = ON; while(1) { STOPIMMEDIATELY REG_TM0CNT = 0; REG_DMA1CNT = 0; playingA = 0; if (KEY_DOWN_NOW(BUTTON_START)) { REG_DMA2CNT = 0; REG_DMA2SAD = SOUNDARRAYB; REG_DMA2DAD= REG_FIFO_B; REG_DMA2CNT = DMA_ENABLE | DMA_TIMINGSTART_ON_FIFO_EMPTY | DMA_32 | DMA_REPEAT | DMA_DEST_FIXED | DMA_SOURCE_INCREMENT; REG_TM1CONT = 0; REG_TM1D = -timerIntervalB; REG_TM1CNT = TM_ON | TM_FREQ_q; startB = vBlankCount; shouldPlayB = TRUE; playingB = TRUE; } if (!playingA && shouldPlayA) { REG_DMA1CNT = 0; REG_DMA1SAD = SOUNDARRAYA; REG_DMA1DAD = REG_FIFO_A; } } }
void game_win() { REG_DISPCNT = MODE3 | BG2_ENABLE; DMA[3].src = win; DMA[3].dst = videoBuffer; DMA[3].cnt = (240*160) | DMA_ON; while(!KEY_DOWN_NOW(BUTTON_START)); state = TITLE; }
void titleScreen() { drawImage3(0, 0, SCREEN_HEIGHT, SCREEN_WIDTH, (const u16*) img_title); int keysPressed = 0; //title screen loop while (1) { //test button release for all buttons for (int i = 0; i < 10; i++) { if (KEY_DOWN_NOW(1 << i)) { keysPressed |= (1 << i); } if ((keysPressed & (1 << i)) && !KEY_DOWN_NOW(1 << i)) { playGame(); } } } }