Ejemplo n.º 1
0
void soundtest()
{


			tte_write("#{es}");

		tte_write("#{P:0,0}GBA Sound Test\n");
		tte_write("A song should now be playing.\n");
		tte_write("Pressing B will exit.\n");

		vid_vsync();
		key_poll();

		mmStart( MOD_SMACHOOSEAPLAYER, MM_PLAY_LOOP );

		while(key_is_up(KEY_B)){

			vid_vsync();

			mmFrame();

			key_poll();

		}

		mmStop();

}
Ejemplo n.º 2
0
int main()
{
	int color = 0;
	//int lastcolor = 0;

	// set mode 3, BG2 enabled
	REG_DISPCNT = MODE_3 | BG2_ENABLE;

	while (1)
	{
		// vertical sync
		vid_vsync();
		
		// set color
		color = REG_KEYINPUT;

		// y
		int i, j;
		for(j = 0; j < SCREEN_HEIGHT; j++)
		{
			for(i = 0; i < SCREEN_WIDTH; i++)
			{
				vid_mem[j*SCREEN_WIDTH + i] = color;
			}
		}
	}

	return 0;
}
Ejemplo n.º 3
0
int main(void)
{
   
   title();
   
   menu();
   
	init_game();
	
	int x=0, y=0;
	while(1)
	{
	   key_poll();
	   
	   x += key_tri_horz()*2;
	   y += key_tri_vert()*2;
	   
	   vid_vsync();
	   
	   //oam_copy(oam_mem, obj_buffer, 128);
	   
	   REG_BG1HOFS = x;
	   REG_BG1VOFS = y;
	}
	
	return 0;
}
Ejemplo n.º 4
0
int main(void) {
    memcpy(&tile_mem[4][0], blobLargeTiles, blobLargeTilesLen);
    memcpy(pal_obj_mem, blobLargePal, blobLargePalLen);
    oam_init(obj_buffer, 128);
    REG_DISPCNT = DCNT_OBJ | DCNT_OBJ_1D;

    OBJ_ATTR * blob = &obj_buffer[0];
    u32 blobTileIndex = 0;
    u32 blobPalBank = 0;

    //two different ways of setting OAM values: by hand and using TONC macros

    blob->attr0 = (blob->attr0 & ~ATTR0_SHAPE_MASK) | ATTR0_SQUARE;
    blob->attr1 = (blob->attr1 & ~ATTR1_SIZE_MASK) | ATTR1_SIZE_64;
    blob->attr2 = (blob->attr2 & ~ATTR2_ID_MASK) | (blobTileIndex << ATTR2_ID_SHIFT);
    blob->attr2 = (blob->attr2 & ~ATTR2_PALBANK_MASK) | (blobPalBank << ATTR2_PALBANK_SHIFT);

    /*
    BFN_SET2(blob->attr0, ATTR0_SQUARE, ATTR0_SHAPE);
    BFN_SET2(blob->attr1, ATTR1_SIZE_64, ATTR1_SIZE);
    BFN_SET(blob->attr2, blobTileIndex, ATTR2_ID);
    BFN_SET(blob->attr2, blobPalBank, ATTR2_PALBANK);
    */

	while (1) {
        vid_vsync();

        obj_unhide(blob, 0);

        oam_copy(oam_mem, obj_buffer, 1);
	}
}
Ejemplo n.º 5
0
void menu()
{
   memcpy(vid_mem, menuBitmap, menuBitmapLen);
   
   while(~key_released(KEY_A))
   {
      key_poll();
      vid_vsync();
      
      if(key_hit(KEY_A))
         break;
   }
}
Ejemplo n.º 6
0
void title()
{
   //
   int* ptr;
   
   ptr = malloc(4);
   
   *ptr = 0x11223344;
   
   DEBUG_PRINTF("ptr = %#x\n", (u32)ptr);
   DEBUG_PRINTF("&obj_buffer = %#x\n",(u32)obj_buffer);
   
   u8 bytes[5] = { 0x11, 0x22, 0x33, 0x44, 0x55 };
   u16 halfwords[5] = { 0x1122, 0x3344, 0x5566, 0x7788, 0x99AA };
   u32 words[3] = { 0x11223344, 0x55667788, 0x99AABBCC };
   
   DEBUG_PRINTF("&bytes = %#x\n", (u32)bytes);
   DEBUG_PRINTF("&halfwords = %#x\n", (u32)halfwords);
   DEBUG_PRINTF("&words = %#x\n", (u32)words);
   
   
   

   memcpy(vid_mem, titleBitmap, titleBitmapLen);
   
   REG_DISPCNT = DCNT_MODE3 | DCNT_BG2;
   
   char* h = "PRESS A TO CONTINUE\n";
   
   int x = 50, y = 100;
   int frame = 0;
   while(~key_hit(KEY_A))
   {
      key_poll();
      vid_vsync();
      
      if( frame & 1 && *h != 0)
      {
         print_ch(*h, x, y, 0x0000);
         x += 6;
         h ++;
         frame = 0;
      }
      
      frame ++;
      
      if(key_hit(KEY_A))
         break;
   }
}
Ejemplo n.º 7
0
void CreditDevkitArmandtonc()
{
	RegisterRamReset(RESET_GFX);

	REG_DISPCNT= DCNT_MODE0 | DCNT_BG0;

	tte_init_chr4c(0, 			// BG 0
		BG_CBB(0)|BG_SBB(31),	// Charblock 0; screenblock 31
		0xF000,					// Screen-entry offset
		bytes2word(1,2,0,0),	// Color attributes.
		CLR_WHITE, 			// White text
		&verdana9Font,			// Verdana 9 font
		NULL
		);

	vid_vsync();
	tte_write("#{P:35,60}Credit to Wintermute for devkitARM!\n");
	tte_write("#{P:35,70}Credit to Cern for Tonc!");

	waitsecs(7);
}
Ejemplo n.º 8
0
int main()
{
    *(unsigned int*)0x04000000 = 0x0402;
    *(unsigned int*)0x0400000C = 0x1000;
    *(unsigned int*)0x04000020 = 0x40;
    *(unsigned int*)0x04000026 = 0x40;
    *(unsigned int*)0x04000028 = 0x600;
    *(unsigned int*)0x0400002C = 0x600;
    *(unsigned int*)0x040000B0 = 0x0300;
    *(unsigned int*)0x040000B4 = 0x0500;
    *(unsigned int*)0x040000BA = 0x8000;

// turn sound on
    REG_SNDSTAT= SSTAT_ENABLE;
    // snd1 on left/right ; both full volume
    REG_SNDDMGCNT = SDMG_BUILD_LR(SDMG_SQR1, 7);
    // DMG ratio to 100%
    REG_SNDDSCNT= SDS_DMG100;

    // no sweep
    REG_SND1SWEEP= SSW_OFF;
    // envelope: vol=12, decay, max step time (7) ; 50% duty
    REG_SND1CNT= SSQR_ENV_BUILD(12, 0, 7) | SSQR_DUTY1_2;
    REG_SND1FREQ= 0;

	int frame = 0;
	int wait = 0;
	int lol = 5;
	DmaPlaySound();

	while(1)
	{
		if(frame == 0)
			REG_DMA1CNT_H=0xb600;

		LZ77UnCompVram(framesTiles[frame], 0x06000040);
		memcpy(pal_bg_mem, framesPals[frame], 0x200);
		int i;
		for(i = 0; i < 16*16; i++)
		{
			((unsigned short*)0x06008000)[i] = map[(i*2)] + (map[(i*2)+1]<<8);
		}
		wait++;
		if(wait == 2)
		{
			frame++; 
			wait = 0;
		}

		if(frame > 6200)
		{
			REG_DMA1SAD=(unsigned long)rick_rolls;	//dma1 source
			REG_DMA1CNT_H=0x3600;
		}

		if(frame > 6378)
		{
			frame = 0;
		}
		vid_vsync();

    //REG_SND1FREQ = SFREQ_RESET | SND_RATE(0x2, 0x2);
	}
    while(1);

    return 0;
}
Ejemplo n.º 9
0
int main()
{
	int i;
	struct VEngine veng;
	struct World world;
	JoyState* joy;

	v_init(&veng);
	joy_init();

	/* for a random seed, wait for user input */
	i = 0;
	while (1) {
		vid_vsync();
		key_poll();
		v_putbgtile(5, 4, 37);
		v_putbgtile(6, 4, 48);
		v_putbgtile(7, 4, 51);
		v_putbgtile(8, 4, 51);
		v_putbgtile(9, 4, 51);
		if (key_hit(KEY_A) || key_hit(KEY_START)) {
			break;
		}
		i ++;
	}

	/* sqran(i); */
	sqran(4);

	init_world(&world, &veng);

	/* obj_set_pos(dude, (16 * 7), (16 * 4)); */
	
	v_draw_bg(world.map, &veng, world.map->dudex, world.map->dudey);

	while(1)
	{
		vid_vsync();
		joy = joy_poll();
		key_poll();

		if (key_hit(KEY_A)) {
			/*
			v_draw_more_bg(world.map, veng.mapofsx, veng.mapofsy - 4, 15, 4,
				world.map->dudex - 6 - veng.dudeposx,
				world.map->dudey - 4 - 4 - veng.dudeposy);
				*/
		}

		if (key_hit(KEY_START)) {
			v_init(&veng);
			init_world(&world, &veng);

			/*
			obj_set_pos(veng.obj_buffer[veng.spr_dude], (16 * 7), (16 * 4));
			*/

			v_draw_bg(world.map, &veng,
				world.map->dudex, world.map->dudey);
		}

		/*
		if (key_hit(KEY_LEFT)) {
			switch (r_move_left(&world)) {
				case 1:
					v_move_left(&veng);
					break;
				case 2:
					v_shake_dude(&veng, 1, 0);
					break;
			}
		} else if (key_hit(KEY_RIGHT)) {
			switch (r_move_right(&world)) {
				case 1:
					v_move_right(&veng);
					break;
				case 2:
					v_shake_dude(&veng, 1, 0);
					break;
			}
		} else if (key_hit(KEY_UP)) {
			switch (r_move_up(&world)) {
				case 1:
					v_move_up(&veng);
					break;
				case 2:
					v_shake_dude(&veng, 0, 1);
					break;
			}
		} else if (key_hit(KEY_DOWN)) {
			switch (r_move_down(&world)) {
				case 1:
					v_move_down(&veng);
					break;
				case 2:
					v_shake_dude(&veng, 0, 1);
					break;
			}
		}
		*/

		if (joy->moving) {
			switch (r_move(&world, joy->dx, joy->dy)) {
				case 1:
					v_move(&veng, joy->dx, joy->dy);
					break;
				case 2:
					v_shake_dude(&veng, 0, 1);
					break;
			}
			joy_handled();
		}
		v_move_co(&veng);

		v_scroll_at_edge(&veng, &world);

		v_draw_dude(&veng);

		for (i = 0; i < world.monstercount; i ++) {
			v_draw_monster(&veng, &world, i);
		}

		oam_copy(oam_mem, veng.obj_buffer, 1 + world.monstercount);
	}

	return 0;
}
Ejemplo n.º 10
0
void buttontest()
{



	vid_vsync();
	key_poll();
	while(key_is_up(KEY_B)){

		vid_vsync();
		key_poll();


			tte_write("#{es}");

		tte_write("#{P:0,0}GBA Button Test\n");
		tte_write("Hold buttons to test. B will exit.\n");

		if (key_held(KEY_L)){
			tte_write("L\n");
		}

		if (key_held(KEY_R)){
			tte_write("R\n");
		}

		if (key_held(KEY_UP)){
			tte_write("Up\n");
		}

		if (key_held(KEY_DOWN)){
			tte_write("Down\n");
		}

		if (key_held(KEY_LEFT)){
			tte_write("Left\n");
		}

		if (key_held(KEY_RIGHT)){
			tte_write("Right\n");
		}



		if (key_held(KEY_START)){
			tte_write("Start\n");
		}

		if (key_held(KEY_SELECT)){
			tte_write("Select\n");
		}

		if (key_held(KEY_A)){
			tte_write("A\n");
		}

		if (key_held(KEY_B)){
			tte_write("B\n");
		}

		vid_vsync();
		key_poll();

	}

}
Ejemplo n.º 11
0
void MainMenu()
{
	//This function brings up the main menu and has it do stuff.

	RegisterRamReset(RESET_GFX);

	REG_DISPCNT= DCNT_MODE0 | DCNT_BG0;

	tte_init_chr4c(0, 			// BG 0
		BG_CBB(0)|BG_SBB(31),	// Charblock 0; screenblock 31
		0xF000,					// Screen-entry offset
		bytes2word(1,2,0,0),	// Color attributes.
		CLR_WHITE, 			// White text
		&verdana9Font,			// Verdana 9 font
		NULL
		);

	vid_vsync();
	draw_main_menu();



	while(1){


		vid_vsync();
		mmFrame();
		key_poll();


//This code is still being worked on but it will handle what is selected on the menu.
		    if (key_hit(KEY_DOWN)){
		    	mainmenuselected++;
	           if (mainmenuselected > 3){
	        	   mainmenuselected = 3;
			   }

			    draw_main_menu();

			}else if (key_hit(KEY_UP)){
				mainmenuselected = mainmenuselected - 1;

			   if (mainmenuselected < 0){
				   mainmenuselected = 0;
			   }
			    draw_main_menu();
			}else if (key_hit(KEY_B)){

			}else if (key_hit(KEY_A)){

	          if (mainmenuselected == 0){
			  


	        	  biosdump();
	        	  vid_vsync();
	              draw_main_menu();
	
	
		   }else if (mainmenuselected == 1){
			   
			   buttontest();
			   vid_vsync();
			   draw_main_menu();
		   }else if (mainmenuselected == 2){

			   RTC_Main();
			   vid_vsync();
			   draw_main_menu();
		   }else if (mainmenuselected == 3){

			   soundtest();
			   vid_vsync();

			   draw_main_menu();
		   }

		}

	}
}