Esempio n. 1
0
void displaySetup()
{
	DISPLAY_OFF;
	set_bkg_palette( 0, 1, &bgpalette[0] ); 

	/* Initialize the background */
	set_bkg_data(0, 92, data_font);	
	//set_bkg_tiles(1,0, 20, 18, bgmap);
	
	set_sprite_palette(0,2,&spritepalette[0]);
	
	for(j=0;j!=4;j++) {
		cursorBigStartX[j] = SCREEN_XO + SCREEN_PSTARTX + (j * SCREEN_XSPACE) - 1;
		cursorBigStartY[j] = SCREEN_YO + SCREEN_PSTARTY - 8;
		cursorStartX[j] = SCREEN_XO + SCREEN_PSTARTX + (j * SCREEN_XSPACE) - 8;
		cursorStartY[j] = SCREEN_YO + SCREEN_PSTARTY;
		cursorRow[j] = cursorStartY[j];
	}
	
	SPRITES_8x8;
	
	set_sprite_data(SPRITE_ARRT,0x01U, data_barrow);
	set_sprite_data(SPRITE_ARRL,0x01U, data_larrow);
	
	
	set_sprite_tile(SPRITE_ARRT_START, SPRITE_ARRT);
	for(j=0;j!=4;j++) set_sprite_tile(j+SPRITE_ARRL_START, SPRITE_ARRL);
	
	for(j=0;j!=4;j++) set_sprite_prop(j+SPRITE_ARRT_START,1);
	for(j=0;j!=4;j++) set_sprite_prop(j+SPRITE_ARRL_START,1);
	
	DISPLAY_ON;
}
Esempio n. 2
0
//this adds one to every sprite ID, thus allowing a new sprite to be added. it also set sprites for each bullet accoringly
void BulletSlideSpriteIDsUp()
{
	B1_SpriteID++;
	if (B1_Using)
	{
		set_sprite_tile(B1_SpriteID, B1_FrameIndex);
	}

	B2_SpriteID++;
	if (B2_Using)
	{
		set_sprite_tile(B2_SpriteID, B2_FrameIndex);
	}

	B3_SpriteID++;
	if (B3_Using)
	{
		set_sprite_tile(B3_SpriteID, B3_FrameIndex);
	}

	B4_SpriteID++;
	if (B4_Using)
	{
		set_sprite_tile(B4_SpriteID, B4_FrameIndex);
	}

	B5_SpriteID++;
	if (B5_Using)
	{
		set_sprite_tile(B5_SpriteID, B5_FrameIndex);
	}
}
Esempio n. 3
0
void setupBird() {
	set_sprite_tile(0, bird_offset);
	set_sprite_tile(1, bird_offset+2);
	
	set_sprite_prop(0, 0x00);
	set_sprite_prop(1, 0x00);
}
Esempio n. 4
0
/* Set sprite tiles */
void tile_sprite()
{
  UBYTE s;

  s = sframe<<1;
  set_sprite_tile(0, earth_tiles[s]);
  set_sprite_tile(1, earth_tiles[s+1]);
}
Esempio n. 5
0
/* enemys */
void enemys()
{
  UBYTE i;

  for( i=0; i<MAX_ET; i++ ) {
    if( ef[i] == 1 ) {
      set_sprite_tile( i*2+DEF_ES0, DEF_1EC0+8 );
      set_sprite_tile( i*2+DEF_ES1, DEF_1EC1+(ex[i]-MAX_SX*8-12)+7 );
    }
  }
}
Esempio n. 6
0
/**
 * Updates player movement and animation.
 */
void updatePlayer() {
	UBYTE i, moved;

	// Get joypad input
	moved = 0;
	i = joypad();
	if(i & J_RIGHT) {
		pposx += 1;
		pdir = DIR_RIGHT;
		moved = 1;
	}
	if(i & J_LEFT) {
		pposx -= 1;
		pdir = DIR_LEFT;
		moved = 1;
	}
	if(i & J_UP) {
		pposy -= 1;
		pdir = DIR_UP;
		moved = 1;
	}
	if(i & J_DOWN) {
		pposy += 1;
		pdir = DIR_DOWN;
		moved = 1;
	}

	// Keep player within bounds
	if(pposx < PMINX) pposx = PMINX;
	else if(pposx > PMAXX) pposx = PMAXX;
	if(pposy < PMINY) pposy = PMINY;
	else if(pposy > PMAXY) pposy = PMAXY;

	// Set player position
	move_sprite(0, pposx,   pposy);
	move_sprite(1, pposx,   pposy+8);
	move_sprite(2, pposx+8, pposy);
	move_sprite(3, pposx+8, pposy+8);

	// Set player sprite
	if(moved) {
		if(time % 8 == 0) {
			pframe = (pframe + 1) % 4;
		}
	} else {
		pframe = 1;
	}

	i = (pdir << 4) + (pframe << 2);
	set_sprite_tile(0, i++);
	set_sprite_tile(1, i++);
	set_sprite_tile(2, i++);
	set_sprite_tile(3, i);
}
Esempio n. 7
0
/*--------------------------------------------------------*/
void SET_MOVE_HAMUKO()
{
	set_sprite_tile( 0, hamuko_tile[hd][hp][0] );
	set_sprite_tile( 1, hamuko_tile[hd][hp][1] );
	set_sprite_tile( 2, hamuko_tile[hd][hp][2] );
	set_sprite_tile( 3, hamuko_tile[hd][hp][3] );

	move_sprite( 0, hx * 8 + 8, hy * 8 + 16 );
	move_sprite( 1, hx * 8 + 8, hy * 8 + 24 );
	move_sprite( 2, hx * 8 + 16, hy * 8 + 16 );
	move_sprite( 3, hx * 8 + 16, hy * 8 + 24 );
}
Esempio n. 8
0
void SET_MOVE_SPRITE()
{
	set_sprite_tile( 0, hamumi_tile[gd][gp][0] );
	set_sprite_tile( 1, hamumi_tile[gd][gp][1] );
	set_sprite_tile( 2, hamumi_tile[gd][gp][2] );
	set_sprite_tile( 3, hamumi_tile[gd][gp][3] );

	move_sprite( 0, gx * 8 + 8, gy * 8 + 16 );
	move_sprite( 1, gx * 8 + 8, gy * 8 + 24 );
	move_sprite( 2, gx * 8 + 16, gy * 8 + 16 );
	move_sprite( 3, gx * 8 + 16, gy * 8 + 24 );
}
void main(){
	int xpos = 8 + GRAPHICS_WIDTH / 2;
	int ypos = 16 + GRAPHICS_HEIGHT / 2;
	int count = 0;
	int joy, i;
	set_sprite_data(0, 1, crosshair_tiledata);
	set_sprite_data(1, 6, explode_tiledata);
	SWITCH_ROM_MBC1(3);
	set_bkg_data(0, 179, title_tiledata);
	set_bkg_tiles(0, 0, 20, 18, title_tilemap);
	SHOW_BKG;
	DISPLAY_ON;
	waitpad(J_START);
	DISPLAY_OFF;
	SWITCH_ROM_MBC1(2);
	set_bkg_data(0, 182, earth_tiledata);
	set_bkg_tiles(0, 0, 20, 18, earth_tilemap);
	set_sprite_tile(0,0);
	move_sprite(0, xpos, ypos);
	SHOW_SPRITES;
	DISPLAY_ON;
	waitpadup();
	while (1){
		wait_vbl_done();
		joy = joypad();
		if (joy & J_UP && ypos > 14)
			--ypos;
		if (joy & J_DOWN && ypos < GRAPHICS_HEIGHT + 13)
			++ypos;
		if (joy & J_LEFT && xpos > 8)
			--xpos;
		if (joy & J_RIGHT && xpos < GRAPHICS_WIDTH + 8)
			++xpos;
		if (joy & J_A || joy & J_B){
			++count;
			move_sprite(count, xpos - 2, ypos - 2);
			for (i = 1; i != 7; ++i){
				set_sprite_tile(count, i);
				wait_vbl_done();
				wait_vbl_done();
			}
			set_sprite_tile(count, 4);
			set_sprite_prop(count, 1 << 4);
			if (count == 39){
				delay(500);
				end();
			}
		}		
		move_sprite(0, xpos, ypos);
	}
}
Esempio n. 10
0
//loads the player sprites (this doesn't increment sprite num since it starts at 0
void PlayerLoad()
{
	//load sprite data
	set_sprite_tile(0, P_FrameIndex);

	move_sprite(0, P_PosX, P_PosY);
}
Esempio n. 11
0
unsigned int mainMenu()
{
   int selection;
   unsigned long int loopCount;

   DISPLAY_OFF;
   HIDE_BKG;

   move_bkg(0,0);

   set_bkg_palette( 7, 1, &menuPalCGB[28] );
   set_bkg_palette( 6, 1, &menuPalCGB[24] );
   set_bkg_palette( 5, 1, &menuPalCGB[20] );
   set_bkg_palette( 4, 1, &menuPalCGB[16] );
   set_bkg_palette( 3, 1, &menuPalCGB[12] );
   set_bkg_palette( 2, 1, &menuPalCGB[8] );
   set_bkg_palette( 1, 1, &menuPalCGB[4] );
   set_bkg_palette( 0, 1, &menuPalCGB[0] );

   set_bkg_data( 0, 141, menuTiles );

   VBK_REG = 1;
   set_bkg_tiles(0,0,menuMapWidth,menuMapHeight,menuPal);

   VBK_REG = 0;
   set_bkg_tiles(0,0,menuMapWidth,menuMapHeight,menuMap);

   SHOW_BKG;
   DISPLAY_ON;

   setupPointer();

   loopCount = 0;
   do
   {
      loopCount++;
      if((loopCount % 125) == 0)
         updatePointer(); /* animate the pointer */

      selection = checkButtons();

   } while(!selection); /* user hasn't made a selection */
   set_sprite_tile(0, 0); /* set to straight pointer while waiting */
   while(joypad() & (J_A | J_START)); /* wait for the user to let up */

   /* "Shoot" the pointer across the screen */
   loopCount = 0;
   while((pointerX + loopCount) <= 168)
   {
   	move_sprite(0, pointerX + loopCount, pointerYPositions[currSelection]);
      loopCount++;
      delay(4);
   }


   hidePointer();

   return selection;
}
Esempio n. 12
0
UINT8 updateBird() {
	
	bird_gravity.w += BIRD_GRAVITY_FORCE;
	bird_y += bird_gravity.b.h;
	
	if(joy & J_A) {
		if(bird_flag) {
			bird_gravity.b.h -= 4;
			bird_flag = FALSE;
		}
	} else {
		bird_flag = TRUE;
	}
	
	if(bird_y > 120 && bird_y < 250) {
		bird_flag = FALSE;
		if(bird_y > 121)//only reset force in the sky
			bird_gravity.w = 0;
		return 1; //Die
	}
	
	//Hit test pipe
	if(!(pipe.x+24 < bird_x) && !(pipe.x > bird_x+16)) {// check front and back
		if(pipe.top_y > bird_y) {//check top
			bird_gravity.w = 0;
			return 1;
		} else if(pipe.bottom_y < bird_y) {
			bird_gravity.w = 0;
			return 1;
		}
	}
	
	// Animate
	++bird_frame_skip;
	if(bird_frame_skip > 4) {
		bird_frame_skip = 0;
		
		++bird_frame;
		bird_frame %= 3;
		
		set_sprite_tile(0, bird_offset+(bird_frame*4));
		set_sprite_tile(1, bird_offset+(bird_frame*4)+2);
	}
	
	return 0;
}
Esempio n. 13
0
void updatePointer()
{
   pointerTile++;
   if(pointerTile > 8)
      pointerTile = 1;
   
   set_sprite_tile(0, pointerTile);
   set_sprite_prop(0, pointerTilesCGB[pointerTile]);
}
Esempio n. 14
0
void init_cursor()
{
	UBYTE i;

	/* Setup the cursor data*/
	set_sprite_data(23, 8, cursor_data);

	for(i = 23;i <= 30;i++){
		set_sprite_tile(i, i);
	}
}
Esempio n. 15
0
void updateScore() {
	i = SCORE_SPACE;
	
	if(score >= 10) {
		
		x1 = score/10;
		x2 = x1*4;
		set_sprite_tile(i, numbers_offset+(x2));
		set_sprite_tile(i+1, numbers_offset+(x2+2));
		move_sprite(i, 72, 30);
		move_sprite(i+1, 72+8, 30);
		
		x1 *= 10;
		x2 = score-x1;
		x2 *= 4;
		set_sprite_tile(i+2, numbers_offset+(x2));
		set_sprite_tile(i+3, numbers_offset+(x2+2));
		move_sprite(i+2, 72+16, 30);
		move_sprite(i+3, 72+16+8, 30);
		
		
	} else {
		x1 = score*4;
		set_sprite_tile(i, numbers_offset+(x1));
		set_sprite_tile(i+1, numbers_offset+(x1+2));
		move_sprite(i, 80, 30);
		move_sprite(i+1, 80+8, 30);
		
		move_sprite(i+2, 0, 0);
		move_sprite(i+3, 0, 0);
	}
}
Esempio n. 16
0
//----------------------------------------Sprite Methods
//updates the player stuff (also updates bullet stuff)
int PlayerUpdate(int SpriteNum) //0 - nothing happened, 1 - bullet died
{
	//set the sprite
	set_sprite_tile(SpriteNum, P_FrameIndex);
	move_sprite(SpriteNum, 0, 0);
	move_sprite(SpriteNum, P_PosX, P_PosY);

	//update gun stuff
	GunUpdate();

	//Update bullet stuff
	return BulletsUpdate();
}
void main()
{

  /* sets the complete sprite data from tile 0 for 1 tile of smile
     (data begins at tile 0 and ends after 1 tile) */
  set_sprite_data(0,1,smile);

  /* sets tile number 0 to tile 0 of smile */
  set_sprite_tile(0,0);

 
  /* moves sprite 0 to X-75 Y-75 */
  move_sprite(0,75,75);

SHOW_SPRITES;
}              /* end main    */
Esempio n. 18
0
main(){
	UBYTE counter,x,y;
	x=40;
	y=17;
	
	disable_interrupts();
	DISPLAY_OFF;
	
	/*load background
	 *
	 */
	set_bkg_data(0,4,backgroundcharacters);
	for(counter=0;counter<=16;counter+=2)
		set_bkg_tiles( 0, counter, 20, 2, bgmap);
	
	//load sprite
	SPRITES_8x8;
	set_sprite_data(0, 1, spritetiles);
	set_sprite_tile(0,0);
	move_sprite(0,x,y);
	
	SHOW_BKG;
	SHOW_SPRITES; 
	DISPLAY_ON;
	enable_interrupts();
	
	while(1) {
	/* Skip four VBLs (slow down animation) */
		for(counter = 0; counter < 4; counter++){
			wait_vbl_done();
		}
		counter = joypad();
		
		if(counter & J_UP)
			y--;
		if(counter & J_DOWN)
			y++;
		if(counter & J_LEFT)
			x--;
		if(counter & J_RIGHT)
			x++;
			
		move_sprite(0,x,y);
	}
}
Esempio n. 19
0
void setupPointer()
{
   SPRITES_8x8;

   currSelection = MENU_STORYLINE;

   pointerTile = 1; /* the current tile for the pointer */

   set_sprite_palette(0, 1, &pointerPalCGB[0]);

   set_sprite_data(0, 9, pointerTiles);

   set_sprite_tile(0, pointerTile);
   set_sprite_prop(0, pointerTilesCGB[pointerTile]);

   move_sprite(0, pointerX, pointerYPositions[currSelection]);

   SHOW_SPRITES;
}
Esempio n. 20
0
//----------------------------------------Game Loop
int main()
{
    SetupGame();

    //this is the game loop. this loops forever.
    while (1)
    {
        SHOW_SPRITES;

        //monster stuff
        MonsterUpdate(SpriteNum);

        //player stuff
        num = PlayerCheckControls(SpriteNum);
        if (num == 1) //then a bullet was instantiated
        {
            SpriteNum++;
            PlayerSlideBack();
            PlayerSlideBack();
            PlayerSlideBack();
            PlayerSlideBack();
            PlayerUpdate(SpriteNum);

            HIDE_SPRITES; //clear unused sprites
        }

        num = PlayerUpdate(SpriteNum);
        if (num == 1) //then a bullet died
        {
            set_sprite_tile(SpriteNum, 5); //hide the players current sprite
            SpriteNum--;
            move_sprite(SpriteNum, P_PosX, P_PosY); //and show the new
        }

        //woah there sparky
        delay(20);
    }
}
/* ------------------------------------- main program-----------------------------------------*/
void main()                                  
{

 back();                         /* draw the background (platforms and ladders) */
 data_arary();                   /* create the collision detection array */
 updwn=6;                        /* first up and down tile number */
 current=0;                      /* first left right tile number */
 x=15;                           /* x cordinate to start at */
 y=16;                           /* y cordinate to start at */

 SPRITES_8x16;                     /* sets sprites to, yep you guessed it, 8x16 mode */
 set_sprite_data(0, 16, bloke);    /* defines the main sprite data */
 set_sprite_tile(0, current);
 move_sprite(current, x, y);       /* puts the first sprite on screen */
 SHOW_SPRITES;

  while(!0)                        /* infinate game loop */
  {
   grav();                         /* check we are stood on something and fall if we are'nt */
   player();                       /* player movement and collision detection routines      */
                                   /* returned values have no meaning here, just for tests  */
  }                                /* end of infinate loop */

}                            /* end main */
int player()                 /* player moving func (see sprite4a.zip for more info) */
{
 key=joypad();                   /* key = what was pressed */

 if(key==J_RIGHT)
  {
   x++;         
   if(collide(x,y)==1){x--; return 0;} /* check we can move right */
    if(!fall)
     {
      current+=2;                      /* if we aren't falling continue animation */
      if(current==8) current=0;
      set_sprite_tile(0,current);
     }
   set_sprite_prop(0,0); 
   move_sprite(0,x,y);                 /* put sprite on screen */
   if(!fall)
    { delay(25); }                     /* delay if not falling */
  return 1;
  } 

 if(key==J_LEFT)
  {
   x--;
   if(collide(x,y)==1){x++; return 0;}
    if(!fall)
     {
      current+=2;
      if(current==8) current=0;
      set_sprite_tile(0,current);
     }
   set_sprite_prop(0,S_FLIPX | 0x01);  /* flips horizontatly l/r sprite */
   move_sprite(0,x,y);
   if(!fall)
    { delay(25); }          
  return 1;
  } 

 if(key==J_UP)
  {
   y--;
  if(test){ if (collide(x,y)==1) {y++; return 0;} }  /* for testing purposes */
  else if(collide(x,y)!=2){y++; return 0;}
   updwn+=2;
   if(updwn==16)
     { updwn=8; }
   set_sprite_tile(0,updwn);
   move_sprite(0,x,y);
   if(!fall)
    { delay(25); }
  return 1;
  }

 if(key==J_DOWN)
  {
   y++;
   if(test){ if (collide(x,y)==1) {y--; return 0;} }
   else if(collide(x,y)!=2){y--; return 0;}
   updwn+=2;
   if(updwn==16)
    { updwn=8; }
   set_sprite_tile(0,updwn);
   move_sprite(0,x,y);
   if(!fall)
    { delay(25); }
  return 1;
  }

if(key==J_B)              /* just for testing purposes */
  {
  move_sprite(0,200,200);
  delay(500);
  for(temp=0;temp<=127;temp++)
   {
    scroll_bkg(0,2);
    delay(5);  
   }
  delay(500);
  move_sprite(0,15,16);
  x=15;
  y=16;
  return 1;
  }

if(key==J_A+J_RIGHT || key==J_A+J_LEFT || key==J_A)
 {
 if(!fall){ jump();}
 return 1;
 }

return 0;
}                        /* end of player func */
Esempio n. 23
0
main(){
	disable_interrupts();
	DISPLAY_OFF;
	
	resetKoords();
	
	//set score to 0
	score_p1=0;
	score_p2=0;

	//background
	set_bkg_data(0,10,backgroundcharacters);
	//background oben
	set_bkg_tiles(0, 0, 20, 1, bgmap);
	//background mitte
	for(counter=1;counter<=13;counter++) set_bkg_tiles(0,counter,20,1,bgmap+20);
	//background unten
	set_bkg_tiles(0,14,20,1,bgmap+40);
	//leer für score etc
	for(counter=15;counter<=17;counter++) set_bkg_tiles(0,counter,20,1,bgmap+20);
	set_bkg_tiles(0,14,20,1,bgmap+40);
	
	//load sprite
	SPRITES_8x8;
	//load paddle tile
	set_sprite_data(0, 1, spritetiles);
	//load ball tile
	set_sprite_data(1, 1, spritetiles+16);
	//load score
	set_sprite_data(2, 1, spritetiles+32);
	set_sprite_data(3, 1, spritetiles+48);
	set_sprite_data(4, 1, spritetiles+64);
	set_sprite_data(5, 1, spritetiles+80);
	set_sprite_data(6, 1, spritetiles+96);
	set_sprite_data(7, 1, spritetiles+112);
	set_sprite_data(8, 1, spritetiles+128);
	set_sprite_data(9, 1, spritetiles+144);
	set_sprite_data(10, 1, spritetiles+160);
	set_sprite_data(11, 1, spritetiles+176);
	set_sprite_data(12, 1, spritetiles+192);
	
	//paddle 0
	set_sprite_tile(0,0);
	set_sprite_tile(1,0);
	set_sprite_tile(2,0);
	//paddle 1
	set_sprite_tile(3,0);
	set_sprite_tile(4,0);
	set_sprite_tile(5,0);
	//ball
	set_sprite_tile(6,1);
	
	//aktiviere bildschirm
	SHOW_BKG;
	SHOW_SPRITES; 
	DISPLAY_ON;
	enable_interrupts();
	
	while(1) {
	/* Skip four VBLs (slow down animation) */
		//for(counter = 0; counter < 10; counter++){ //64
			wait_vbl_done();
		//}
		counter = joypad();
		
		//set score score
		set_sprite_tile(7,2+score_p1);
		set_sprite_tile(8,2+score_p2);

		//check paddle 0 for move
		if(counter & J_UP && y1>=20){
			y1-=1;
			y2-=1;
			y3-=1;
			if(checkCollisionBallPaddle(0)<16){
				y1+=1;
				y2+=1;
				y3+=1;
			}
		}
		if(counter & J_DOWN && y3<=124){
			y1+=1;
			y2+=1;
			y3+=1;
			if(checkCollisionBallPaddle(0)<16){
				y1-=1;
				y2-=1;
				y3-=1;
			}
		}

		//check paddle 1 for move
		if(y5 > ball_pos_y && y4 >= 20){
			y4-=1;
			y5-=1;
			y6-=1;
			if(checkCollisionBallPaddle(1)<16){
				y4+=1;
				y5+=1;
				y6+=1;
			}
		}
		if(y5 < ball_pos_y && y6 <= 124){
			y4+=1;
			y5+=1;
			y6+=1;
			if(checkCollisionBallPaddle(1)<16){
				y4-=1;
				y5-=1;
				y6-=1;
			}
		}

		//start game?
		if(counter & J_START && game_status==0){
			//if gameover, reset score
			if(score_p1==10 || score_p2==10){
				score_p1=0;
				score_p2=0;
			}
			ball_vektor_x1=1;
			ball_vektor_x2=1;
			ball_vektor_y1=1;
			ball_vektor_y2=1;
			game_status=1; //game is now running
		}
		
		//move ball
		if(vektor_pointer==0){
			temp1=ball_vektor_x1;
			temp2=ball_vektor_y1;
			vektor_pointer=1;
		}
		else{
			temp1=ball_vektor_x2;
			temp2=ball_vektor_y2;
			vektor_pointer=0;
		}
		ball_pos_x+=temp1;
		ball_pos_y+=temp2;
		col0=checkCollisionBallPaddle(0);
		if(col0<16){
			while(temp1!=0 || temp2!=0){
				if(temp1>0){
					temp1--;
					ball_pos_x--;
				}
				if(temp1<0){
					temp1++;
					ball_pos_x++;
				}
				if(temp2>0){
					temp2--;
					ball_pos_y--;
				}
				if(temp2<0){
					temp2++;
					ball_pos_y++;
				}
				if (checkCollisionBallPaddle(0)>=16) break;
			}
		}
		col1=checkCollisionBallPaddle(1);
		if (col1<16){
			while(temp1!=0 || temp2!=0){
				if(temp1>0){
					temp1--;
					ball_pos_x--;
				}
				if(temp1<0){
					temp1++;
					ball_pos_x++;
				}
				if(temp2>0){
					temp2--;
					ball_pos_y--;
				}
				if(temp2<0){
					temp2++;
					ball_pos_y++;
				}
				if (checkCollisionBallPaddle(1)>=16) break;
			}
		}

		//collision detection
		//left wall
		if(ball_pos_x<9){
			resetKoords();
			score_p2++;
		}
		//right wall
		if(ball_pos_x>163){
			resetKoords();
			score_p1++;
		}
		//upper wall
		if(ball_pos_y<19){
			ball_pos_y=19;
			ball_vektor_y1--;
			ball_vektor_y1=ball_vektor_y1 ^ 255;
			ball_vektor_y2--;
			ball_vektor_y2=ball_vektor_y2 ^ 255;
		}
		//lower wall
		if(ball_pos_y>125){
			ball_pos_y=125;
			ball_vektor_y1--;
			ball_vektor_y1=ball_vektor_y1 ^ 255;
			ball_vektor_y2--;
			ball_vektor_y2=ball_vektor_y2 ^ 255;
		}
		
		//col0
		if(col0<16 && ball_pos_x==23){
			//ball moves up
			if(ball_vektor_y1<0 || ball_vektor_y2<0) col_table = &collision_left_up;
			//ball moves down
			else col_table = &collision_left_down;
			col_table+=col0*4;
			ball_vektor_x1 = *col_table;
			ball_vektor_y1 = *(col_table+1);
			ball_vektor_x2 = *(col_table+2);
			ball_vektor_y2 = *(col_table+3);
		}

		//col1
		if(col1<16 && ball_pos_x==145){
			//ball moves up
			if(ball_vektor_y1<0 || ball_vektor_y2<0) col_table = &collision_right_up;
			//ball moves down
			else col_table = &collision_right_down;
			col_table+=col1*4;
			ball_vektor_x1 = *col_table;
			ball_vektor_y1 = *(col_table+1);
			ball_vektor_x2 = *(col_table+2);
			ball_vektor_y2 = *(col_table+3);
		}

		//sonderfall col0
		if(col0<16 && ball_pos_x!=23){
			ball_vektor_y1--;
			ball_vektor_y2--;
			ball_vektor_y1=ball_vektor_y1^255;
			ball_vektor_y2=ball_vektor_y2^255;
		}

		//sonderfall col1
		if(col1<16 && ball_pos_x!=145){
			ball_vektor_y1--;
			ball_vektor_y2--;
			ball_vektor_y1=ball_vektor_y1^255;
			ball_vektor_y2=ball_vektor_y2^255;
		}

		//paint p0
		move_sprite(0,15,y1);
		move_sprite(1,15,y2);
		move_sprite(2,15,y3);
		//paint p1
		move_sprite(3,153,y4);
		move_sprite(4,153,y5);
		move_sprite(5,153,y6);
		//paint ball
		move_sprite(6,ball_pos_x,ball_pos_y);
		//paint score
		move_sprite(7,15,140);
		move_sprite(8,153,140);
	}
}
Esempio n. 24
0
void init_key()
{
	UBYTE key_x, key_y, i, j;

	/* To make numeric KeyPad */
	set_sprite_data(0, 24, key_num);

	/* key pad 1 - 3 */
	key_y = KEY_STEP + 40;
	for(i = 1;i <= 3;i++){
		key_x = i * KEY_STEP;
		set_sprite_tile(i, i);
		move_sprite(i, key_x, key_y);
	}

	/* key pad 4 - 6 */
	key_y = KEY_STEP * 2 + 40;
	for(i = 4;i <= 6;i++){
		key_x = (i - 3) * KEY_STEP;
		set_sprite_tile(i, i);
		move_sprite(i, key_x, key_y);
	}

	/* key pad 7 - 9 */
	key_y = KEY_STEP * 3 + 40;
		for(i = 7;i <= 9;i++){
			key_x = (i - 6) * KEY_STEP;
			set_sprite_tile(i, i);
			move_sprite(i, key_x, key_y);
		}

	/* key pad 'A' - 'D' */
	key_x = KEY_STEP * 4;
	for(i = 0;i <= 3;i++){
		key_y = (i+1) * KEY_STEP + 40;
		set_sprite_tile(i+10, i+10);
		move_sprite(i+10, key_x, key_y);
	}

	/* key pad '*', '0', '#' */
	set_sprite_tile(15, 15);
	move_sprite(15, KEY_STEP * 1, KEY_STEP * 4 + 40);
	set_sprite_tile(0, 0);
	move_sprite(0, KEY_STEP * 2, KEY_STEP * 4 + 40);
	set_sprite_tile(14, 14);
	move_sprite(14, KEY_STEP * 3, KEY_STEP * 4 + 40);

	/* func left */
	key_x = KEY_STEP * 5 + 8;
	for(i = 0;i <= 2;i++){
		key_y = (i+1) * KEY_STEP + 40;
		set_sprite_tile(i+16, i+16);
		move_sprite(i+16, key_x, key_y);
	}

	/* func right */
	key_x = KEY_STEP * 6 + 8;
	for(i = 0;i <= 2;i++){
		key_y = (i+1) * KEY_STEP + 40;
		set_sprite_tile(i+19, i+19);
		move_sprite(i+19, key_x, key_y);
	}

	/* dialing button */
	key_x = KEY_STEP * 5 + 20;
	key_y = KEY_STEP * 4 + 40;
	set_sprite_tile(22, 22);
	move_sprite(22, key_x, key_y);
}
Esempio n. 25
0
/**
 * Main ingame loop.
 */
void gameLoop() {
	BYTE xdist, ydist;
	UBYTE cx, cy;

	// Init player
	pposx = 80;
	pposy = 64;
	pdir = DIR_DOWN;
	alive = 1;

	// Set game variables
	score = 0;
	nextUpdate = 0;
	switch_delay = START_DELAY;

	// Load game map BG tiles
	DISPLAY_OFF;
	// Load tile data sets
	LCDC_REG = B8(01000011);
	set_sprite_data(0, sprite_dataLen, sprite_data);
	set_bkg_data(0, game_dataLen, game_data);
	set_bkg_tiles(0, 0, 20, 18, map_tiles);

	// Score counter
	set_sprite_tile(5, 64);
	move_sprite(5, 15, 148);

	set_sprite_tile(6, 65);
	set_sprite_tile(7, 65);
	move_sprite(6, 26, 148);
	move_sprite(7, 35, 148);

	set_sprite_tile(4, 64);

	clearMap();
	addBox();

	DISPLAY_ON;


	// Game loop
	while(alive) {
		wait_vbl_done();
		time++;
		nextUpdate++;
		if(nextUpdate >= switch_delay) {
			nextUpdate = 0;
			updateMap();
			spawnCells();
		}
		updatePlayer();

		// Check if player has picked up box
		xdist = pposx - boxx;
		ydist = pposy - boxy;
		if(xdist > -COLDISTX && xdist < COLDISTX
		&& ydist > -COLDISTY && ydist < COLDISTY) {
			score++;
			updateScore();
			addBox();
			switch_delay--;
		}

		// Check if player is on black hole
		cx = pposx/16 - 1;
		cy = pposy/16 - 1;
		if(map[cx + cy*MAPW] >= CELL_BLACK) {
			alive = 0;
		}
	}
}
Esempio n. 26
0
int main()
{
	//setup

	//sprite stuff
	set_sprite_palette(0,1,&spritepalette[0]);
	SPRITES_8x8;
	set_sprite_data(MARIO, 4, mario);
	set_sprite_tile(0,0);
	set_sprite_tile(1,1);
	set_sprite_tile(2,2);
	set_sprite_tile(3,3);

/*
	set_sprite_location(0, 0, 20, 0, MARIO, current_map);
	set_camera_location(0, 0, 2, 0);
*/



	//background stuff
	set_bkg_palette(0,1,&backgroundpalette[0]);
	set_bkg_palette(1,1,&backgroundpalette[4]);
	set_bkg_data(0,4,backgroundcharacters);
	VBK_REG=1;
	set_bkg_tiles(0,0,20,24,cgbmap);
	VBK_REG=0;
	set_bkg_tiles(0,0,20,24,bgmap);
	SHOW_BKG;
	enable_interrupts();
	DISPLAY_ON;
	scroll_bkg(0,1);
	
	while(1) {/*
		printf("camera_x: %i\n", camera_x);
		printf("camera_y: %i\n", camera_y);
		printf("spritex: %i\n", spritex);
		printf("spritey: %i\n", spritey);*/

		//read
		input = joypad();



		//eval
		if(input & J_UP) {
			spritey--;
		}
		if(input & J_DOWN) {
			spritey++;  
		}
		if(input & J_LEFT) {
			if(spritex != 0) {
				spritex--;
			}
			camera_x = spritex - 80;
			if(spritex <= 80) {
				camera_x = 0;
			}
			if(spritex >= world_width_px - 80) {
				camera_x = world_width_px - SCREEN_WIDTH;
			}
			scrolled = 0;
		}
		if(input & J_RIGHT) {
			if(spritex != world_width_px - 16) {
				spritex++;
			}
			camera_x = spritex - 80;
			if(spritex <= 80) {
				camera_x = 0;
			}
			if(spritex >= world_width_px - 80) {
				camera_x = world_width_px - SCREEN_WIDTH;
			}
			scrolled = 0;
		}

		//print
		for(y = 0; y <= 18; y++) {
		/*			VBK_REG=1;
		set_bkg_tiles(0,3,20,19,cgbmap);
		VBK_REG=0;
		set_bkg_tiles(0,0,20,19,bgmap);
		*/
			map_row = camera_y/8;
			map_row *= tile_width;
			map_row += (camera_x/8);

			VBK_REG=1;
			set_bkg_tiles(0,y,21,1,&cgbmap[map_row]);
			VBK_REG=0;
			set_bkg_tiles(0,y,21,1,&bgmap[map_row]);
		}

		move_sprite(0,spritex-camera_x+8,spritey-camera_y+16);
		move_sprite(1,spritex-camera_x+16,spritey-camera_y+16);
		move_sprite(2,spritex-camera_x+8,spritey-camera_y+24);
		move_sprite(3,spritex-camera_x+16,spritey-camera_y+24);

		//print
		for(i = 0; i < 4; i++) {
			//slow down animation
			wait_vbl_done();
		}
		SHOW_BKG;
		SHOW_SPRITES;
	}
	return 0;
}
Esempio n. 27
0
/**
 * Updates the score counter sprites
 * in the HUD
 */
void updateScore() {
	set_sprite_tile(6, 65 + score / 10);
	set_sprite_tile(7, 65 + score % 10);
}
Esempio n. 28
0
void tileSprite(UBYTE index, const unsigned char tile, EntityType type){
  set_sprite_tile(index, tile);
  if (type != VIRUS && type != KING){
    set_sprite_tile(index+1, tile + 2);
  }
}
Esempio n. 29
0
void initPipe() {
	//Setup
	i = PIPE_SPACE;
	pipe.x = 160;
	if(score < 5) {
		pipe.size = 5;
	} else if(score < 15) {
		pipe.size = 4;
	} else if(score < 40) {
		pipe.size = 3;
	} else  {
		pipe.size = 2;
	}
	pipe.gap = 1+(randw()%(7-pipe.size));
	
	pipe.top_y = (pipe.gap*16)+8;
	pipe.bottom_y = ((pipe.gap+pipe.size)*16)-8;
	
	pipe.counted = FALSE;
	
	//Top part
	for (y = 0; y < pipe.gap-1; y++) {
		set_sprite_tile(i, pipe_offset+2);
		set_sprite_tile(i+1, pipe_offset+6);
		set_sprite_tile(i+2, pipe_offset+10);
		
		set_sprite_prop(i, 0x00);
		set_sprite_prop(i+1, 0x00);
		set_sprite_prop(i+2, 0x00);
		
		i += 3;
	}
	
	//Top stop
	set_sprite_tile(i, pipe_offset);
	set_sprite_tile(i+1, pipe_offset+4);
	set_sprite_tile(i+2, pipe_offset+8);
	
	set_sprite_prop(i, S_FLIPY);
	set_sprite_prop(i+1, S_FLIPY);
	set_sprite_prop(i+2, S_FLIPY);
	
	i += 3;
	
	//Gap
	
	//Bottom stop
	set_sprite_tile(i, pipe_offset);
	set_sprite_tile(i+1, pipe_offset+4);
	set_sprite_tile(i+2, pipe_offset+8);
	
	set_sprite_prop(i, 0x00);
	set_sprite_prop(i+1, 0x00);
	set_sprite_prop(i+2, 0x00);
	i += 3;
	
	//Bottom part
	y += pipe.size+1;
	for (y; y < 7; y++) {
		set_sprite_tile(i, pipe_offset+2);
		set_sprite_tile(i+1, pipe_offset+6);
		set_sprite_tile(i+2, pipe_offset+10);
		
		set_sprite_prop(i, 0x00);
		set_sprite_prop(i+1, 0x00);
		set_sprite_prop(i+2, 0x00);
		i += 3;
	}
}
void main()                                   /* main program  */ 
{
int spr,spl,spud,x,y,old,key,fall;      

set_bkg_data(1,3,briks);          /* start bkg display (platforms,ladders etc.) */

for(x=0;x<20;x++)
 {for(y=0;y<18;y++)
   set_bkg_tiles(x,y,1,1,bkgtilea); 
 }

for(x=0;x<10;x++)
 {
  set_bkg_tiles(x,2,1,1,brik); 
 }

for(x=9;x<14;x++)
 {
  set_bkg_tiles(x,4,1,1,brik);
 }

for(y=4;y<18;y++)
 {
  set_bkg_tiles(14,y,1,1,ladder); 
 }
SHOW_BKG;                         /* end bkg */


SPRITES_8x16;           /* sets sprites to, yep you guessed it, 8x16 mode */

set_sprite_data(0, 24, bloke);   /* defines the main sprite data */

for(i=0;i<=11;i++)
{
set_sprite_tile(i,i*2);          /* defines the tiles numbers */
}


/* spr = sprite movement right (sprite numbers 0 - 3)
   spl = sprite movement left (sprite numbers 4 - 7)
   spud = sprite movement up/down (sprite numbers 8 - 11)  */

spr=0;                          /* right movement sprite starts at no.0 */
spl=4;                          /* left movement sprite starts at no.4 */
spud=8;                         /* up / down movement sprite starts at no.8 */
x=15;                           /* x cordinate to start at */
y=16;                           /* y cordinate to start at */
old=0;                          /* the last sprite displayed */
m=0;

move_sprite(spr,x,y);         /* puts the first sprite on screen */
old=spr;
SHOW_SPRITES;

 while(!0)                      /* infinate game loop */
 {

 check:     
 y++;                                     /* check we are stood on something using the arrary*/
 if(collide(x,y)){y--; fall=0; goto ok; }
 fall=1;                                   /* if NOT, we fall.... */
 move_sprite(old,x,y);            
 delay(10); 
 y++;                                     /* Do this twice so we fall down 2 before l/r movement*/
 if(collide(x,y)){y--; fall=0; goto ok; }
 move_sprite(old,x,y);            
 delay(10);        

ok:

key=joypad();                    /* key = what was pressed */

 if(key==J_RIGHT)                /* IF it was right ...    */
  {
  x++;                           /* increment x , so we can check boundry before moving */
if(x==scrxr){x--; goto check; }        /* if x position is equal to max screen right, decerement
                                          x and goto check, not allowing movement            */
if(collide(x,y)==1){x--; goto check;}  /* call the collide function, if it returns 1(wall) do not
                                          allow right movement   */
   move_sprite(old,200,0);             /* move the old sprite off screen */
   move_sprite(spr,x,y);               /* move new sprite onto screen    */
   old=spr;                            /* save the current sprite number in old */
   if(!fall){delay(25);}               /* delay if not falling */
   if(!fall){spr++;}                   /* increment sprite number if not falling */
   if(spr==4) spr=0;                   /* check if we have reached the end of the 
                                          animation, if so start again  */
  }                                     /* end of right IF statment */


  if(key==J_LEFT)           /* see above */
   {
   x--;
if(x==scrxl){x++; goto check; }
if(collide(x,y)==1){x++; goto check;} 
   move_sprite(old,200,0);  
   move_sprite(spl,x,y);
   old=spl;  
   if(!fall){delay(25);}                          
   if(!fall){spl++;}                              
   if(spl==8) spl=4;
   }

  if(key==J_UP)           /* see above */
   {
   y--;
if(y==scryt){y++; goto check; }
if(collide(x,y)!=2){y++; goto check;}  /* call the collide function, if it's not a ladder (2),
                                          don't allow up or down movement                     */
   move_sprite(old,200,0);  
   move_sprite(spud,x,y);
   delay(25);
   old=spud;  
   spud++;
   if(spud==12) spud=8;
   }

  if(key==J_DOWN)           /* see above */
   {
   y++;
if(y==scryb){y--; goto check; }
if(collide(x,y)!=2){y--; goto check;} 
   move_sprite(old,200,0);  
   move_sprite(spud,x,y);
   delay(25);
   old=spud;  
   spud++;
   if(spud==12) spud=8;
   }

  if(key==J_B)              /* just for testing purposes */
  {
  spr=0;
  move_sprite(old,200,200);
  move_sprite(spr,15,16);
  x=15;
  y=16;
  old=spr;
  }

 }                              /* end of infinate loop */


}                               /* end main */