Exemple #1
0
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;
	}
}	
Exemple #2
0
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));
}
Exemple #5
0
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);
}
Exemple #6
0
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); 
}
Exemple #7
0
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++;
}
Exemple #8
0
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));
}
Exemple #11
0
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();
	}
}
Exemple #13
0
/* 
 * 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));
}
Exemple #14
0
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;
}
Exemple #17
0
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;
}
Exemple #18
0
void checkReset()
{
	if (KEY_DOWN_NOW(BUTTON_SELECT)) 
	{
		state = WELCOME;
	}
}
Exemple #19
0
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();	
		}
	}
}	
Exemple #20
0
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;
		}
	}
}
Exemple #23
0
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));
}
Exemple #24
0
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));
}
Exemple #25
0
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;
	}
	
}
Exemple #27
0
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;
}
Exemple #28
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;
        }

    }
}
Exemple #29
0
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;
}
Exemple #30
0
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();
            }
        }
    }
}