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(); }
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; }
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; }
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); } }
void menu() { memcpy(vid_mem, menuBitmap, menuBitmapLen); while(~key_released(KEY_A)) { key_poll(); vid_vsync(); if(key_hit(KEY_A)) break; } }
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; } }
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); }
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; }
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; }
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(); } }
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(); } } } }