コード例 #1
0
ファイル: flappybird.c プロジェクト: fourks/flappybird-gb
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);
}
コード例 #2
0
ファイル: flappybird.c プロジェクト: fourks/flappybird-gb
void gameLoop() {
	
	--pipe.x;
	if(pipe.x < 232 && pipe.x > 160) {
		initPipe();
	}
	movePipe();
	
	//Scroll ground
	if(WX_REG == 0)
		WX_REG = 7;
	else
		--WX_REG;
	
	if(updateBird() != 0) {
		//Kill bird
		flash_frames = 0;
		bird_flag = FALSE;
		
		set_sprite_prop(0, S_FLIPY);
		set_sprite_prop(1, S_FLIPY);
		
		gameState = GAME_STATE_DEAD;
	}
	
	if(!pipe.counted && pipe.x+24 < bird_x) {
		pipe.counted = TRUE;
		if(score != 99) {
			++score;
			updateScore();
		}
	}
	
	moveBird();
}
コード例 #3
0
ファイル: mGBDisplayFunctions.c プロジェクト: Lufteluke/mGB
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;
}
コード例 #4
0
ファイル: move_sp6.c プロジェクト: EliasFarhan/GBDev
void INIT()
{
	UBYTE i;

	disable_interrupts();
	HIDE_BKG;
	HIDE_SPRITES;
	HIDE_WIN;
	DISPLAY_OFF;

	set_bkg_data( 0, 5, bgtile1 );
	set_bkg_tiles( 0, 0, bgmap3Width, bgmap3Height, bgmap3 );

	set_sprite_data( 0, 32, girl );
	SPRITES_8x8;

	gx = gy = 1;
	gd = 2;
	gp = 1;

	SET_MOVE_SPRITE();

	for( i = 0; i < 4; i++ ){
		set_sprite_prop( i, 0 );
	}

	SHOW_BKG;
	SHOW_SPRITES;
	DISPLAY_ON;
	enable_interrupts();
}
コード例 #5
0
ファイル: reset_graphics.c プロジェクト: elfgames/doctorhow
void empty_screen (void)
{
	UBYTE temp1;
	
	HIDE_BKG;
	HIDE_SPRITES;
	
	VBK_REG = 0;
	SWITCH_ROM_MBC1(1);
	for (temp1=0; temp1<40; temp1++)
	{
		move_sprite(temp1,0,200);
		set_sprite_prop (temp1,0);
	}
	
	for (temp1=0; temp1<20; temp1++)
	{
		set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		
		VBK_REG = 1;
		set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		VBK_REG = 0;
	}
	
	move_bkg (0,0);
	SWITCH_ROM_MBC1(0);
	SHOW_BKG;
	SHOW_SPRITES;
}
コード例 #6
0
ファイル: mainmenu.c プロジェクト: RyanRothweiler/GBJAM
void updatePointer()
{
   pointerTile++;
   if(pointerTile > 8)
      pointerTile = 1;
   
   set_sprite_tile(0, pointerTile);
   set_sprite_prop(0, pointerTilesCGB[pointerTile]);
}
コード例 #7
0
ファイル: flappybird.c プロジェクト: fourks/flappybird-gb
void resetGame() {
	bird_flag = FALSE;
	bird_gravity.w = 0;
	
	showLogo();
	
	gameState = GAME_STATE_INTRO;
	score = 0;
	hideScore();
	
	hidePipe();
	
	set_sprite_prop(0, 0x00);
	set_sprite_prop(1, 0x00);
	
	bird_x = 0;
	bird_y = 0;
}
コード例 #8
0
ファイル: npc.c プロジェクト: quinkennedy/bitbitJAM3
void createNPC(UBYTE index, EntityType type){
  fixed r;
  UBYTE spriteIndex = (index + 1) << 1;
  EntityData *npc = &(npc_data[index]);
  npc_counts[npc->type]++;

  //TODO: figure out why this doesn't work??!?
  //npc->type = type;

  //place at a random location off-screen
  r.w = rand();
  if (r.b.l & 1){
    npc->position.x.b.h = r.b.l << 4;
    npc->position.y.b.h = (r.b.l % 96) + 160;
  } else {
    npc->position.x.b.h = (r.b.l % 80) + 168;
    npc->position.y.b.h = r.b.l << 4;
  }
  //TEMP start with random speed
  r.w = rand();
  //first 3 for x speed
  npc->speed.x.w = (r.b.l & 0x7) - 3;//(-3,4)
  r.w = r.w >> 2;
  //another 3 for y speed (speeds share a bit)
  npc->speed.y.w = (r.b.l & 0x7) - 3;//(-3,4)
  r.w = r.w >> 2;
  //initialize sprite tile reference register
  //make sure sprite is in front of background
  set_sprite_prop(spriteIndex, 0);
  set_sprite_prop(spriteIndex + 1, 0);
  //this is done inside npc_setVisibility, no need to do it twice right?
  //tileSprite(spriteIndex, entity_tiles_ref[npc->type][0], npc->type);
  placeSprite(spriteIndex, npc);

  //last 4 for randomizing animation start point (nice-to-have)
  npc->animFrame = 0;//r.b.l & (entity_anim_frames[type] - 1);

  npc_setVisibility(npc, spriteIndex);
}
コード例 #9
0
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);
	}
}
コード例 #10
0
ファイル: mainmenu.c プロジェクト: RyanRothweiler/GBJAM
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;
}
コード例 #11
0
ファイル: alone_hamu.c プロジェクト: SHMAUS-Carter/GBDev
/*--------------------------------------------------------*/
void INIT()
{
	UBYTE i;

	printf(" ");

	disable_interrupts();
	HIDE_BKG;
	HIDE_SPRITES;
	HIDE_WIN;
	DISPLAY_OFF;

	set_bkg_data( 0, 5, bgtile1 );
	set_bkg_data( 160, 65, hamumoji );    // ハム子文字に使うタイルデータ 160番〜 65枚 hamumoji(で作ったタイル)をセットする

	set_sprite_data( 0, 32, hamuko );
	SPRITES_8x8;

	SHOW_BKG;
	SHOW_SPRITES;
	DISPLAY_ON;
	enable_interrupts();

	//------------------------------乱数の初期化の為にオープニングにメッセージを追加
	OPENING_MESSAGE();
	RANSUU_INIT();
	//------------------------------

	set_bkg_tiles( 0, 0, bgmap4Width, bgmap4Height, bgmap4 );

	hx = hy = 1;
	hd = 2;
	hp = 0;

	SET_MOVE_HAMUKO();

	for( i = 0; i < 4; i++ ){
		set_sprite_prop( i, 0 );
	}

}
コード例 #12
0
ファイル: reset_graphics.c プロジェクト: SHMAUS-Carter/GBDev
void empty_screen (void)
{
	UBYTE temp1;

	//DISPLAY_OFF;
	HIDE_BKG;
	HIDE_SPRITES;
	
	VBK_REG = 0;
	ENABLE_RAM_MBC1;

	for (temp1=0; temp1<40; temp1++)
	{
		move_sprite(temp1,0,200);
		set_sprite_prop (temp1,0);
	}

	SWITCH_ROM_MBC1(4);
	for (temp1=0; temp1<20; temp1++)
	{
		set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		
		VBK_REG = 1;
		set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]);   
		VBK_REG = 0;
	}
	SWITCH_ROM_MBC1(0);
	DISABLE_RAM_MBC1;
	move_bkg (0,0);
	
	SHOW_BKG;
	SHOW_SPRITES;
	//DISPLAY_ON;

}
コード例 #13
0
ファイル: galaxy.c プロジェクト: EliasFarhan/GBDev
void main()
{
  UBYTE i, j;

  disable_interrupts();
  DISPLAY_OFF;
  LCDC_REG = 0x67;
  /*
   * LCD        = Off
   * WindowBank = 0x9C00
   * Window     = On
   * BG Chr     = 0x8800
   * BG Bank    = 0x9800
   * OBJ        = 8x16
   * OBJ        = On
   * BG         = On
   */

  doorstate = CLOSED;

  /* Set palettes */
  BGP_REG = OBP0_REG = OBP1_REG = 0xE4U;

  /* Initialize the background */
  set_bkg_data(0xFC, 0x04, std_data);
  set_bkg_data(0x00, 0x2D, bkg_data);
  /*
   * Draw the background
   *
   * Width  = 0x100 = 0x20 * 8
   * Height = 0x100 = 0x20 * 8
   */
  for(i = 0; i < 32; i+=8)
    for(j = 0; j < 32; j+=8)
      set_bkg_tiles(i, j, 8, 8, bkg_tiles);
  bposx.w = 0;
  SCX_REG = 0;
  bposy.w = 0;
  SCY_REG = 0;
  bspx.w = 0xFF00;
  bspy.w = 0x0080;

  /* Initialize the window */
  set_win_data(0x80, 0x21, frame_data);
  /*
   * Draw the frame in the window
   *
   * Width  = 0x80 = 0x10 * 8
   * Height = 0x50 = 0x0A * 8
   */
  set_win_tiles(0, 0, 16, 10, frame_tiles);
  /*
   * Draw the door in the window
   *
   * Width  = 0x60 = 0x20 * 12
   * Height = 0x30 = 0x20 * 6
   */
  set_win_tiles(2, 2, 12, 6, door1_tiles);
  wposx.b.h = MAXWNDPOSX;
  wposx.b.l = 0;
  WX_REG = MAXWNDPOSX;
  wposy.b.h = MAXWNDPOSY;
  wposy.b.l = 0;
  WY_REG = MAXWNDPOSY;
  wspx.w = 0xFF80;
  wspy.w = 0xFFC0;

  /* Initialize the sprite */
  set_sprite_data(0x00, 0x1C, earth_data);
  set_sprite_prop(0, 0x00);
  set_sprite_prop(1, 0x00);
  sframe = 0;
  sposx.w  = 0x1000;
  sposy.w  = 0x1000;
  sspx.w  = 0x0040;
  sspy.w  = 0x0040;
  tile_sprite();
  place_sprite();

  DISPLAY_ON;
  enable_interrupts();

  while(1) {
    /* Skip four VBLs (slow down animation) */
    for(i = 0; i < 4; i++)
      wait_vbl_done();
    time++;
    fade();
    door();
    scroll();
    animate_sprite();
    i = joypad();
    if(i & J_B) {
      if(i & J_UP)
	bspy.w -= 0x0010;
      if(i & J_DOWN)
	bspy.w += 0x0010;
      if(i & J_LEFT)
	bspx.w -= 0x0010;
      if(i & J_RIGHT)
	bspx.w += 0x0010;
    } else if(i & J_A) {
      if(i & J_UP)
	wspy.w -= 0x0010;
      if(i & J_DOWN)
	wspy.w += 0x0010;
      if(i & J_LEFT)
	wspx.w -= 0x0010;
      if(i & J_RIGHT)
	wspx.w += 0x0010;
    } else {
      if(i & J_SELECT)
	color = STARTFADE;
      if(i & J_START)
	if(doorstate == CLOSED) {
	  doorstate = OPENING;
	  doorpos = 0;
	} else if(doorstate == OPENED) {
	  doorstate = CLOSING;
	  doorpos = NBDFRAMES;
	}
      if(i & J_UP)
	sspy.w -= 0x0010;
      if(i & J_DOWN)
	sspy.w += 0x0010;
      if(i & J_LEFT)
	sspx.w -= 0x0010;
      if(i & J_RIGHT)
	sspx.w += 0x0010;
    }
  }
}
コード例 #14
0
ファイル: flappybird.c プロジェクト: fourks/flappybird-gb
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;
	}
}
コード例 #15
0
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 */