Beispiel #1
0
int main()
{
  /* Transfer color palettes */
  set_bkg_palette( 7, 1, &bar_p[0] );
  set_bkg_palette( 6, 1, &bar_p[4] );
  set_bkg_palette( 5, 1, &bar_p[8] );
  set_bkg_palette( 4, 1, &bar_p[12] );
  set_bkg_palette( 3, 1, &bar_p[16] );
  set_bkg_palette( 2, 1, &bar_p[20] );
  set_bkg_palette( 1, 1, &bar_p[24] );
  set_bkg_palette( 0, 1, &bar_p[28] );

  /* CHR code transfer */
  set_bkg_data( 0x0, 32, bar_c );

  /* Select VRAM bank 1 */
  VBK_REG = 1;
  /* Set attributes */
  set_bkg_tiles( 0, 0, bar_mWidth, bar_mHeight, bar_a );

  /* Select VRAM bank 0 */
  VBK_REG = 0;
  /* Set data */
  set_bkg_tiles( 0, 0, bar_mWidth, bar_mHeight, bar_m );

  SHOW_BKG;
  enable_interrupts();
  DISPLAY_ON;

  /* Loop forever */
  while(1)
    ;

  return(0);
}
Beispiel #2
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;
}
Beispiel #3
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;
}
Beispiel #4
0
main()
{
	UBYTE key;
//	selchannel=0;
	programs[0]=0;programs[1]=0;programs[2]=0;programs[3]=0;

	offset=0;

	// load palette sets
	set_bkg_palette( 0, 7, &dsppalette[0] );

	// load in tiles
	set_bkg_data(0,214,tileData);
	SHOW_BKG;
	DISPLAY_ON;

	VBK_REG = 1;

	// set palettes per tile
	set_bkg_tiles( 0,0,   20,18, mapAttr);
	VBK_REG = 0;

	// set actual tiles
	set_bkg_tiles( 0,0, 20,18, mapData);


	key = 0;
      while(key != J_START) {
      	key = getkey();
	      if ( (key & J_DOWN)&&(offset >  0) ) offset --;
      	if ( (key & J_UP)&&(offset < 12) ) offset ++;
		draw_number(offset+1,17,14);
		draw_number(offset+2,17,15);
		draw_number(offset+3,17,16);
		draw_number(offset+4,17,17);
      }

	VBK_REG = 1;



	VBK_REG=1;
	set_bkg_tiles(0,14,17,1,clear_pal);
	set_bkg_tiles(0,15,17,1,clear_pal);
	set_bkg_tiles(0,16,17,1,clear_pal);
	set_bkg_tiles(0,17,17,1,clear_pal);
	VBK_REG=0;
	set_bkg_tiles(0,14,17,1,msg_clear);
	set_bkg_tiles(0,15,17,1,msg_clear);
	set_bkg_tiles(0,16,17,1,msg_clear);
	set_bkg_tiles(0,17,17,1,msg_clear);

	draw_number(0,17,14);
	draw_number(0,17,15);
	draw_number(0,17,16);
	draw_number(0,17,17);

	set_bkg_tiles(16,14,1,1,hardmap);
	set_bkg_tiles(16,15,1,1,hardmap);
	set_bkg_tiles(16,16,1,1,hardmap);
	set_bkg_tiles(16,17,1,1,hardmap);

	// Go onto pushpin proper
	midi_server();

	return(0);
}
Beispiel #5
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;
}
Beispiel #6
0
void main(void)
{
  UINT8 i = 0;
  UINT8 a = 0;
  INT8 s6 = 0;
  INT8 c6 = 0;
  INT8 dd = 0;

  disable_interrupts();
  cpu_fast();// GBC
  enable_interrupts();

  mode(M_DRAWING);
  color(3, 0, SOLID);

  set_bkg_palette(0, 1, palette);

  plot_heart(12, 30);
  plot_heart(22, 26);

  for (i = 0; i != 8; i++)
  {
    pixels[i].x = HX;
    pixels[i].y = HY;
  }

  while (1)
  {
    INT8 xmin = pixels[0].x;
    INT8 xmax = pixels[0].x;
    INT8 ymin = pixels[0].y;
    INT8 ymax = pixels[0].y;

    // calc min-max of last drawn cube
    for (i = 1; i != 8; i++)
    {
      pixel_t * p = pixels + i;
      if (xmin > p->x)
          xmin = p->x;
      else if (xmax < p->x)
          xmax = p->x;
      if (ymin < p->y)
          ymin = p->y;
      else if (ymax > p->y)
          ymax = p->y;
    }

    // step
    s6 = sin6[a];
    c6 = cos6[a];
    dd = s6 + s6;
    a += 3;

    // transform and project
    for (i = 0; i != 8; i++)
    {
      vertex_t * v = vertices + i;
      pixel_t * p = pixels + i;

      INT8 x = (v->x * c6) + (v->z * s6) + dd;
      INT8 y = (v->y * 31) + dd;
      INT8 z = (v->z * c6) - (v->x * s6);

      /* rotates in z
      INT8 x = (v->x * c6) - (v->y * s6);
      INT8 y = (v->y * c6) + (v->x * s6);
      INT8 z = (v->z * 31);
      */

      UINT16 dx = x < 0 ? -x : x;
      UINT16 dy = y < 0 ? -y : y;
      UINT16 dz = 128 - z;

      dx = (dx << 5) / dz;
      dy = (dy << 5) / dz;

      p->x = HX + (x < 0 ? -dx : dx);
      p->y = HY + (y < 0 ? -dy : dy);
    }

    // sync
    //wait_vbl_done();

    // draw wireframe
    color(WHITE, WHITE, SOLID);
    box(xmin - 1, ymin + 1, xmax + 1, ymax - 1, M_FILL);

    color(1, 0, SOLID);
    for (i = 0; i != 12; i++)
    {
      edge_t * edge = edges + i;
      pixel_t * p0 = pixels + edge->i;
      pixel_t * p1 = pixels + edge->j;

      if (p0->x > p1->x)
        line(p1->x, p1->y, p0->x, p0->y);
      else
        line(p0->x, p0->y, p1->x, p1->y);
    }
  }
}
Beispiel #7
0
void recordSounds()
{
   int joy;

	DISPLAY_OFF;
	HIDE_BKG;

  /*************************************************************************/
  /* the following set of routines loads the palettes into the display.    */
  /* each palette is send (one by one) by using the command:               */
  /*   set_bkg_palette( palette-no, first color in palette, Palette-data ) */
  /*************************************************************************/

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


  /*************************************************************************/
  /* Next, the tile-data is send to the display;
  /*************************************************************************/

  set_bkg_data( 0, 235, recordTiles );

  /*************************************************************************/
  /* Now it's time to send the map-data to the display. Again, in two      */
  /* steps, as the tiles and attributes reside in different banks.         */
  /* The data is send to the display by using the command:                 */
  /*   set_bkg_tiles( Left, Top, Width, Height, Map-data )                 */
  /*************************************************************************/

  VBK_REG = 1;
  set_bkg_tiles(0,0,recordMapWidth,recordMapHeight,recordPal);

  VBK_REG = 0;
  set_bkg_tiles(0,0,recordMapWidth,recordMapHeight,recordMap);



  /*************************************************************************/
  /* the remaining code init the Gameboy and makes it wait untill you turn */
  /* it off..                                                              */
  /*************************************************************************/

  SHOW_BKG;
  DISPLAY_ON;

   do
   {
   	joy = joypad();
   } while (!joy);
	waitpadup();

  	HIDE_BKG;

   return;
}