void glDefaultMemorySetting(void) { videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE | DISPLAY_SPR_ACTIVE | DISPLAY_SPR_2D | DISPLAY_SPR_2D_BMP_256); videoSetModeSub(MODE_2_2D | DISPLAY_BG2_ACTIVE | DISPLAY_SPR_ACTIVE | DISPLAY_SPR_2D | DISPLAY_SPR_2D_BMP_256); // videoSetModeSub(MODE_2_2D | DISPLAY_BG2_ACTIVE | DISPLAY_SPR_2D | DISPLAY_SPR_2D_BMP_256); vramSetMainBanks(VRAM_A_MAIN_BG_0x06000000, VRAM_B_MAIN_SPRITE_0x06400000, VRAM_C_MAIN_BG_0x06020000,VRAM_D_SUB_SPRITE); vramSetBankE(VRAM_E_LCD); vramSetBankF(VRAM_F_LCD); vramSetBankG(VRAM_G_LCD); vramSetBankH(VRAM_H_SUB_BG); vramSetBankI(VRAM_I_LCD); }
void initVideo(void) { /* We need access to DS hardware */ FeOS_DirectMode(); vramSetPrimaryBanks (VRAM_A_LCD, VRAM_B_LCD, VRAM_C_SUB_BG_0x06200000, VRAM_D_LCD); /* Init video engine for the SUB_SCREEN */ videoSetModeSub(MODE_5_2D); vramSetBankI(VRAM_I_SUB_SPRITE); oamEnable(states(SUB_SCREEN)); oamInit(states(SUB_SCREEN), SpriteMapping_1D_128, false); /* Init video engine for the MAIN_SCREEN */ init3D(); }
static void NDS_VideoQuit(_THIS) { videoSetMode(DISPLAY_SCREEN_OFF); videoSetModeSub(DISPLAY_SCREEN_OFF); vramSetBankA(VRAM_A_LCD); vramSetBankB(VRAM_B_LCD); vramSetBankC(VRAM_C_LCD); vramSetBankD(VRAM_D_LCD); vramSetBankE(VRAM_E_LCD); vramSetBankF(VRAM_F_LCD); vramSetBankG(VRAM_G_LCD); vramSetBankH(VRAM_H_LCD); vramSetBankI(VRAM_I_LCD); }
void initVideo() { // initialize VRAM banks vramSetBankA(VRAM_A_MAIN_BG_0x06000000); vramSetBankB(VRAM_B_MAIN_SPRITE_0x06400000); vramSetBankC(VRAM_C_SUB_BG_0x06200000); vramSetBankD(VRAM_D_SUB_SPRITE); vramSetBankE(VRAM_E_LCD); vramSetBankF(VRAM_F_LCD); vramSetBankG(VRAM_G_LCD); vramSetBankH(VRAM_H_LCD); vramSetBankI(VRAM_I_LCD); // set video modes videoSetMode(MODE_5_2D); videoSetModeSub(MODE_5_2D); }
void Render::InitVideo() { /* * Map VRAM to display a background on the main and sub screens. * * The vramSetMainBanks function takes four arguments, one for each of the * major VRAM banks. We can use it as shorthand for assigning values to * each of the VRAM bank's control registers. * * We map banks A and B to main screen background memory. This gives us * 256KB, which is a healthy amount for 16-bit graphics. * * We map bank C to sub screen background memory. * * We map bank D to LCD. This setting is generally used for when we aren't * using a particular bank. * * We map bank E to main screen sprite memory (aka object memory). */ vramSetMainBanks(VRAM_A_MAIN_BG_0x06000000, VRAM_B_MAIN_BG_0x06020000, VRAM_C_SUB_BG_0x06200000, VRAM_D_SUB_SPRITE); vramSetBankE(VRAM_E_MAIN_SPRITE); vramSetBankF(VRAM_F_MAIN_SPRITE); vramSetBankI(VRAM_I_SUB_SPRITE); /* Set the video mode on the main screen. */ videoSetMode(MODE_5_2D | // Set the graphics mode to Mode 5 DISPLAY_BG2_ACTIVE | // Enable BG2 for display DISPLAY_BG3_ACTIVE | // Enable BG3 for display DISPLAY_SPR_ACTIVE | // Enable sprites for display DISPLAY_SPR_1D // Enable 1D tiled sprites ); //Set the video mode on the sub screen. videoSetModeSub(MODE_5_2D | // Set the graphics mode to Mode 5 DISPLAY_BG3_ACTIVE | // Enable BG3 for display DISPLAY_SPR_ACTIVE | // Enable sprites for display DISPLAY_SPR_1D); }
void initD3D() { int x,y,i; videoSetMode(MODE_3_3D); videoSetModeSub(MODE_5_2D | DISPLAY_BG2_ACTIVE | DISPLAY_SPR_ACTIVE | DISPLAY_SPR_2D_BMP_256); vramSetPrimaryBanks(VRAM_A_TEXTURE,VRAM_B_TEXTURE,VRAM_C_SUB_BG,VRAM_D_SUB_SPRITE); vramSetBankH(VRAM_H_LCD); vramSetBankI(VRAM_I_LCD); REG_BG0CNT = BG_PRIORITY(1); REG_BG2CNT_SUB = BG_BMP16_256x256 | BG_BMP_BASE(0) | BG_PRIORITY(1); REG_BG2PA_SUB = 1 << 8; REG_BG2PB_SUB = 0; REG_BG2PC_SUB = 0; REG_BG2PD_SUB = 1 << 8; REG_BG2X_SUB = 0; REG_BG2Y_SUB = 0; initSprites(); d3dSpriteRotations[0].hdx=256; d3dSpriteRotations[0].hdy=0; d3dSpriteRotations[0].vdx=0; d3dSpriteRotations[0].vdy=256; i=0; for (y = 0; y < 3; y++) { for (x = 0; x < 4; x++) { d3dSprites[i].attribute[0] = ATTR0_BMP | ATTR0_SQUARE | (64 * y); d3dSprites[i].attribute[1] = ATTR1_SIZE_64 | (64 * x); d3dSprites[i].attribute[2] = ATTR2_ALPHA(1) | (8 * 32 * y) | (8 * x); i++; } } updateOAM(); d3dScreen=true; }
// Adapted in part from the devkitPro examples. INT32 I_StartupSystem(void) { lcdMainOnTop(); videoSetModeSub(MODE_0_2D); vramSetBankC(VRAM_C_MAIN_BG); // Get this mapped *out* of the sub BG vramSetBankI(VRAM_I_SUB_BG_0x06208000); // The background VRAM that's mapped starts at 0x06208000. // The map base is specified in an offset of multiples of 2 KB // from 0x06200000, and the tile base in multiples of 16 KB. // We put the tiles at the start and the map 2 KB from the end // (i.e. 14 KB from the start). // The map base is then at 0x0620B800 = 0x06200000 + 16 * 0x800 + 7 * 0x800, // and the tile base is at 0x06208000 = 0x06200000 + 2 * 0x4000. consoleInit(NULL, 0, BgType_Text4bpp, BgSize_T_256x256, 16+7, 2, false, true); // start FAT filesystem code, required for reading SD card if(!fatInitDefault()) I_Error("Couldn't init FAT."); return 0; }
int NDS_VideoInit(_THIS, SDL_PixelFormat *vformat) { //printf("WARNING: You are using the SDL NDS video driver!\n"); /* Determine the screen depth (use default 8-bit depth) */ /* we change this during the SDL_SetVideoMode implementation... */ vformat->BitsPerPixel = 16; // mode 3 vformat->BytesPerPixel = 2; vformat->Rmask = 0x0000f800; vformat->Gmask = 0x000007e0; vformat->Bmask = 0x0000001f; powerON(POWER_ALL); irqInit(); irqSet(IRQ_VBLANK, on_irq_vblank); irqEnable(IRQ_VBLANK); //set the mode for 2 text layers and two extended background layers //videoSetMode(MODE_5_2D | DISPLAY_BG3_ACTIVE); videoSetMode(MODE_6_2D | DISPLAY_BG2_ACTIVE); //set the sub background up for text display (we could just print to one //of the main display text backgrounds just as easily videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text //set the first two banks as background memory and the third as sub background memory //D is not used..if you need a bigger background then you will need to map //more vram banks consecutivly (VRAM A-D are all 0x20000 bytes in size) //vramSetMainBanks(VRAM_A_MAIN_BG_0x6000000, VRAM_B_MAIN_BG_0x6020000,VRAM_C_SUB_BG , VRAM_D_LCD); vramSetMainBanks(VRAM_A_MAIN_BG,VRAM_B_MAIN_BG,VRAM_C_MAIN_BG,VRAM_D_MAIN_BG); //vramSetBankA(VRAM_A_MAIN_BG); //vramSetBankB(VRAM_B_MAIN_BG); //vramSetBankC(VRAM_C_MAIN_BG); //vramSetBankD(VRAM_D_MAIN_BG); //vramSetBankE(VRAM_E_MAIN_BG); //vramSetBankF(VRAM_F_MAIN_BG); //vramSetBankG(VRAM_G_MAIN_BG); vramSetBankH(VRAM_H_SUB_BG); vramSetBankI(VRAM_I_LCD); ////////////////set up text background for text///////////////////// SUB_BG0_CR = BG_MAP_BASE(8); BG_PALETTE_SUB[255] = RGB15(31,31,31);//by default font will be rendered with color 255 ///////////////set up our bitmap background/////////////////////// //BG3_CR = BG_BMP16_512x512; //these are rotation backgrounds so you must set the rotation attributes: //these are fixed point numbers with the low 8 bits the fractional part //this basicaly gives it a 1:1 translation in x and y so you get a nice flat bitmap /* BG3_XDX = 1<<8; BG3_XDY = 0; BG3_YDX = 0; BG3_YDY = 1<<8; //our bitmap looks a bit better if we center it so scroll down (256 - 192) / 2 BG3_CX = 0; BG3_CY = 0; */ //consoleInit() is a lot more flexible but this gets you up and running quick consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(8), (u16*)CHAR_BASE_BLOCK_SUB(0), 16); frontBuffer =(u16*)(0x06000000); //backBuffer =(u16*)(0x06000000 + 1024 * 512*2); //lcdSwap(); /* We're done! */ return 0; }
Display::Display(){ // INIT //------------------------------------------------------------------------- frame = 0; srand((int)NULL); // Main Init videoSetMode(MODE_5_2D | DISPLAY_BG_EXT_PALETTE); oamInit(&oamMain, SpriteMapping_1D_128, true); // Sub Init videoSetModeSub(MODE_5_2D | DISPLAY_BG_EXT_PALETTE); oamInit(&oamSub, SpriteMapping_1D_128, true); //------------------------------------------------------------------------- // FONT LOADING //------------------------------------------------------------------------- ConsoleFont font; font.gfx = (u16*)fontTiles; font.pal = (u16*)fontPal; font.numChars = 95; font.numColors = 16; font.bpp = 4; font.asciiOffset = 32; font.convertSingleColor = true; //------------------------------------------------------------------------- // MAIN BACKGROUNDS //------------------------------------------------------------------------- //BG Palettes vramSetBankE(VRAM_E_LCD); dmaCopy(fontPal, VRAM_E_EXT_PALETTE[0], 512); dmaCopy(bgMainPal, VRAM_E_EXT_PALETTE[2], 512); dmaCopy(padsBgMainPal, VRAM_E_EXT_PALETTE[3], 512); vramSetBankE(VRAM_E_BG_EXT_PALETTE); //BG0 : Text mainbg0 = bgInit(0, BgType_Text4bpp, BgSize_T_256x256, 1, 0); consoleInit(&this->mainConsole, 0, BgType_Text4bpp, BgSize_T_256x256, 1, 0, true, false); consoleSetFont(&this->mainConsole, &font); bgSetPriority(this->mainbg0, 0); //BG2 mainbg2 = bgInit(2, BgType_Rotation, BgSize_R_256x256, 7, 1); dmaCopy(bgMainTiles, bgGetGfxPtr(mainbg2), bgMainTilesLen); dmaCopy(bgMainMap, bgGetMapPtr(mainbg2), bgMainMapLen); bgSetPriority(this->mainbg2, 3); bgHide(mainbg2); //BG3 mainbg3 = bgInit(3, BgType_Rotation, BgSize_R_256x256, 12, 2); dmaCopy(padsBgMainTiles, bgGetGfxPtr(mainbg3), padsBgMainTilesLen); dmaCopy(padsBgMainMap, bgGetMapPtr(mainbg3), padsBgMainMapLen); bgSetPriority(this->mainbg3, 2); bgHide(mainbg3); //------------------------------------------------------------------------- // MAIN SPRITES //------------------------------------------------------------------------- //Palettes vramSetBankF(VRAM_F_LCD); dmaCopy(dotSpritePal, VRAM_F_EXT_SPR_PALETTE[0], 512); dmaCopy(ledSpritePal, VRAM_F_EXT_SPR_PALETTE[1], 512); dmaCopy(banksSpritePal, VRAM_F_EXT_SPR_PALETTE[2], 512); dmaCopy(octaveSelectSpritePal, VRAM_F_EXT_SPR_PALETTE[3], 512); vramSetBankF(VRAM_F_SPRITE_EXT_PALETTE); //Sprites loading dotSprite = new Sprite(1, dotSpriteTiles, 0, SpriteSize_64x32, 3); ledSprite = new Sprite(1, ledSpriteTiles, 1, SpriteSize_16x16, 4); banksSprite = new Sprite(1, banksSpriteTiles, 2, SpriteSize_16x16, 8); octaveSelectSprite = new Sprite(1, octaveSelectSpriteTiles, 3, SpriteSize_32x16, 1); //------------------------------------------------------------------------- // SUB BACKGROUNDS //------------------------------------------------------------------------- //BG Palettes vramSetBankH(VRAM_H_LCD); dmaCopy(fontPal, VRAM_H_EXT_PALETTE[0], 512); dmaCopy(slidersBg2SubPal, VRAM_H_EXT_PALETTE[2], 512); dmaCopy(slidersBg3SubPal, VRAM_H_EXT_PALETTE[3], 512); vramSetBankH(VRAM_H_SUB_BG_EXT_PALETTE); //BG0 : Text subbg0 = bgInitSub(0, BgType_Text4bpp, BgSize_T_256x256, 4, 0); consoleInit(&subConsole, 0, BgType_Text4bpp, BgSize_T_256x256, 2, 0, false, true); consoleSetFont(&subConsole, &font); bgSetPriority(subbg0, 1); //BG2 subbg2 = bgInitSub(2, BgType_Rotation, BgSize_R_256x256, 5,1); bgSetPriority(subbg2, 3); //BG3 subbg3 = bgInitSub(3, BgType_Rotation, BgSize_R_256x256, 6,2); bgSetPriority(subbg3, 2); bgHide(subbg3); //------------------------------------------------------------------------- // SUB SPRITES //------------------------------------------------------------------------- //Palettes vramSetBankI(VRAM_I_LCD); dmaCopy(kaossBrickSpritePal, VRAM_I_EXT_SPR_PALETTE[0], 512); dmaCopy(padSpritePal, VRAM_I_EXT_SPR_PALETTE[1], 512); dmaCopy(modeSpritePal, VRAM_I_EXT_SPR_PALETTE[2], 512); dmaCopy(sliderCursorSpritePal, VRAM_I_EXT_SPR_PALETTE[3], 512); dmaCopy(muteSpritePal, VRAM_I_EXT_SPR_PALETTE[4], 512); dmaCopy(editParamsSpritePal, VRAM_I_EXT_SPR_PALETTE[5], 512); vramSetBankI(VRAM_I_SUB_SPRITE_EXT_PALETTE); //Sprites loading kaossBrickSprite = new Sprite(0, kaossBrickSpriteTiles, 0, SpriteSize_32x32, 16); padSprite = new Sprite(0, padSpriteTiles, 1, SpriteSize_64x64, 2); modesSprite = new Sprite(0, modeSpriteTiles, 2, SpriteSize_64x64, 4); sliderCursorSprite = new Sprite(0, sliderCursorSpriteTiles, 3, SpriteSize_32x16, 6); muteSprite = new Sprite(0, muteSpriteTiles, 4, SpriteSize_32x32, 2); paramsEditSprite = new Sprite(0, editParamsSpriteTiles, 5, SpriteSize_16x16, 8); //------------------------------------------------------------------------- // STRUCTURES INITIALISATION //------------------------------------------------------------------------- kaossBricksState = new u8**[4]; for (u8 b = 0; b < 4; ++b){ kaossBricksState[b] = new u8*[8]; for (u8 i = 0; i < 8; ++i){ kaossBricksState[b][i] = new u8[8]; for (u8 j = 0; j < 8; ++j) kaossBricksState[b][i][j] = 0; } } slidersBg2Map = new unsigned short[768]; slidersBg3Map = new unsigned short[768]; //------------------------------------------------------------------------- consoleSelect(&mainConsole); consoleClear(); dmaCopy(bgSplashTiles, bgGetGfxPtr(subbg2), bgSplashTilesLen); dmaCopy(bgSplashMap, bgGetMapPtr(subbg2), bgSplashMapLen); echo(0, GREY, 12, 10, "Connecting..."); echo(0, WHITE, 23, 6, "midicontrolds.blogspot.com"); }
void initProgram() { //------------------------ // start initializing crap //------------------------ defaultExceptionHandler(); // set up the exception handler powerON(POWER_ALL_2D); // turn on everything #ifndef DEBUG_MODE fb_init(); // initialize top screen video #else debugInit(); #endif bg_init(); // initialize bottom screen video setNewOrientation(ORIENTATION_0); // set up extra vram banks to be scratch memory vramSetBankE(VRAM_E_LCD); vramSetBankF(VRAM_F_LCD); vramSetBankG(VRAM_G_LCD); vramSetBankH(VRAM_H_LCD); vramSetBankI(VRAM_I_LCD); fb_setBGColor(30653); bg_setBGColor(0); drawStartSplash(); lcdMainOnTop(); // set fb to top screen fb_swapBuffers(); bg_swapBuffers(); // out of order for competition irqInit(); // initialize irqs irqSet(IRQ_VBLANK, startvBlank); irqEnable(IRQ_VBLANK); setMode(INITFAT); setSoundInterrupt(); // initialize fifo irq setGenericSound(11025, 127, 64, 1); waitForInit(); // wait until arm7 has loaded and gone to sleep initComplexSound(); // initialize sound variables initWifi(); fixGautami(); setCursorProperties(0, 2, 0, 0); initCapture(); initClipboard(); // set defaults to english in case we can't load the langauge file for // some reason also takes care of partial translations. initLanguage(); initRandomList(); fixAndTags(); resetKeyboard(); setDate(); if(!DRAGON_InitFiles()) { // oops, no cf card! setMode(DISPLAYCOW); setFont(font_arial_11); setColor(0xFFFF); bg_dispSprite(96, 5, errmsg, 0); bg_setClipping(5,25,250,181); bg_dispString(0,0,l_nofat); bg_swapBuffers(); while(1) { // wee, la la la! // More or less, we aren't going to do nothing here } } //-------------------------------------------------------------------- //finished init, now check to make sure the DSOrganize dir is there... //-------------------------------------------------------------------- findDataDirectory(); makeDirectories(); if(DRAGON_FileExists("DSOrganize") != FE_DIR) { setMode(DISPLAYCOW); // oops, not there, we must create! DRAGON_mkdir("DSOrganize"); DRAGON_chdir("DSOrganize"); DRAGON_mkdir("DAY"); DRAGON_mkdir("HELP"); DRAGON_mkdir("LANG"); DRAGON_mkdir("RESOURCES"); DRAGON_mkdir("REMINDER"); DRAGON_mkdir("SCRIBBLE"); DRAGON_mkdir("TODO"); DRAGON_mkdir("VCARD"); DRAGON_mkdir("ICONS"); DRAGON_mkdir("CACHE"); DRAGON_mkdir("COOKIES"); DRAGON_mkdir("HOME"); DRAGON_chdir("/"); makeDefaultSettings(); setFont(font_arial_11); setColor(0xFFFF); bg_dispSprite(96, 5, errmsg, 0); bg_setClipping(5,25,250,181); bg_dispString(0,0, l_createdir); bg_swapBuffers(); while(!keysDown()) { scanKeys(); } } setMode(INITPLUGIN); //------------------------------------------------------------------- //finished creating dirs, now check to make sure if they extracted it //did their extracting program actually get all the dirs? //------------------------------------------------------------------- DRAGON_chdir(d_base); if(DRAGON_FileExists("Day") != FE_DIR) { DRAGON_mkdir("DAY"); } if(DRAGON_FileExists("Help") != FE_DIR) { DRAGON_mkdir("HELP"); } if(DRAGON_FileExists("Lang") != FE_DIR) { DRAGON_mkdir("LANG"); } if(DRAGON_FileExists("Reminder") != FE_DIR) { DRAGON_mkdir("REMINDER"); } if(DRAGON_FileExists("Scribble") != FE_DIR) { DRAGON_mkdir("SCRIBBLE"); } if(DRAGON_FileExists("Todo") != FE_DIR) { DRAGON_mkdir("TODO"); } if(DRAGON_FileExists("VCard") != FE_DIR) { DRAGON_mkdir("VCARD"); } if(DRAGON_FileExists("Icons") != FE_DIR) { DRAGON_mkdir("ICONS"); } if(DRAGON_FileExists("Cache") != FE_DIR) { DRAGON_mkdir("CACHE"); } if(DRAGON_FileExists("Cookies") != FE_DIR) { DRAGON_mkdir("COOKIES"); } if(DRAGON_FileExists("Home") != FE_DIR) { DRAGON_mkdir("HOME"); } DRAGON_chdir("/"); //------------------------------------------- //how about we load the settings for them eh? //------------------------------------------- loadSettings(); DRAGON_chdir(d_base); if(DRAGON_FileExists("startup.wav") == FE_FILE) { char tStr[256]; sprintf(tStr, "%sstartup.wav", d_base); loadWavToMemory(); loadSound(tStr); } DRAGON_chdir("/"); initStartScreen(); irqSet(IRQ_VBLANK, vBlank); fb_setBGColor(genericFillColor); bg_setBGColor(genericFillColor); }
void initGame(void) { lcdMainOnTop(); int oldv=getMemFree(); NOGBA("mem free : %dko (%do)",getMemFree()/1024,getMemFree()); NOGBA("initializing..."); videoSetMode(MODE_5_3D | DISPLAY_BG3_ACTIVE); videoSetModeSub(MODE_5_2D | DISPLAY_BG3_ACTIVE); glInit(); vramSetPrimaryBanks(VRAM_A_TEXTURE,VRAM_B_TEXTURE,VRAM_C_LCD,VRAM_D_MAIN_BG_0x06000000); vramSetBankH(VRAM_H_SUB_BG); vramSetBankI(VRAM_I_SUB_BG_0x06208000); glEnable(GL_TEXTURE_2D); // glEnable(GL_ANTIALIAS); glDisable(GL_ANTIALIAS); glEnable(GL_BLEND); glEnable(GL_OUTLINE); glSetOutlineColor(0,RGB15(0,0,0)); //TEMP? glSetOutlineColor(1,RGB15(0,0,0)); //TEMP? glSetOutlineColor(7,RGB15(31,0,0)); //TEMP? glSetToonTableRange(0, 15, RGB15(8,8,8)); //TEMP? glSetToonTableRange(16, 31, RGB15(24,24,24)); //TEMP? glClearColor(31,31,0,31); glClearPolyID(63); glClearDepth(0x7FFF); glViewport(0,0,255,191); // initVramBanks(1); initVramBanks(2); initTextures(); initSound(); initCamera(NULL); initPlayer(NULL); initLights(); initParticles(); initMaterials(); loadMaterialSlices("slices.ini"); loadMaterials("materials.ini"); loadControlConfiguration("config.ini"); initElevators(); initWallDoors(); initTurrets(); initBigButtons(); initTimedButtons(); initEnergyBalls(); initPlatforms(); initCubes(); initEmancipation(); initDoors(); initSludge(); initPause(); initText(); NOGBA("lalala"); getPlayer()->currentRoom=&gameRoom; currentBuffer=false; getVramStatus(); fadeIn(); mainBG=bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0, 0); bgSetPriority(mainBG, 0); REG_BG0CNT=BG_PRIORITY(3); #ifdef DEBUG_GAME consoleInit(&bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 16, 0, false, true); consoleSelect(&bottomScreen); #endif // glSetToonTableRange(0, 14, RGB15(16,16,16)); // glSetToonTableRange(15, 31, RGB15(26,26,26)); initPortals(); //PHYSICS initPI9(); strcpy(&mapFilePath[strlen(mapFilePath)-3], "map"); newReadMap(mapFilePath, NULL, 255); transferRectangles(&gameRoom); makeGrid(); generateRoomGrid(&gameRoom); gameRoom.displayList=generateRoomDisplayList(&gameRoom, vect(0,0,0), vect(0,0,0), false); getVramStatus(); startPI(); NOGBA("START mem free : %dko (%do)",getMemFree()/1024,getMemFree()); NOGBA("vs mem free : %dko (%do)",oldv/1024,oldv); levelInfoCounter=60; }
int main( int argc, char **argv) { videoSetModeSub(MODE_5_2D); //defaultExceptionHandler(); //for debug befor gbainit //set the first two banks as background memory and the third as sub background memory //D is not used..if you need a bigger background then you will need to map //more vram banks consecutivly (VRAM A-D are all 0x20000 bytes in size) vramSetPrimaryBanks( VRAM_A_MAIN_BG_0x06000000/*for gba*/, VRAM_B_LCD, VRAM_C_SUB_BG_0x06200000 , /*VRAM_D_LCD*/ VRAM_D_MAIN_BG_0x06020000 /*for BG emulation*/); //needed for main emulator vramSetBanks_EFG(VRAM_E_MAIN_SPRITE/*for gba sprite*/,VRAM_F_LCD/*cant use*/,VRAM_G_LCD/*cant use*/); vramSetBankH(VRAM_H_SUB_BG); //only sub /*for prints to lowern screan*/ vramSetBankI(VRAM_I_SUB_BG_0x06208000); //only sub srctest = (u32*)sound_bin; consoleDemoInit(); iprintf("test1"); REG_IPC_FIFO_TX = 0x1FFFFFFB;//must be ignored REG_IPC_FIFO_TX = 0x0; swiWaitForVBlank(); if(!(REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY)) { iprintf("error -1"); while(1); } iprintf("test2"); REG_IPC_FIFO_TX = 0x1FFFFFFC; //set on REG_IPC_FIFO_TX = 0x0; swiWaitForVBlank(); REG_IPC_FIFO_TX = 0x1FFFFFFB;//must not be ignored REG_IPC_FIFO_TX = 0x0; swiWaitForVBlank(); if(REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY) { iprintf("error -2"); while(1); } if(REG_IPC_FIFO_RX != 0x4100BEEF) { iprintf("error -3"); while(1); } if(!(REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY)) { iprintf("error -4"); while(1); } iprintf("test3"); //set buffer REG_IPC_FIFO_TX = 0x1FFFFFFA; REG_IPC_FIFO_TX = arm7amr9buffer = (u32)malloc(0x100); //buffer for arm7 irqSet(IRQ_FIFO_NOT_EMPTY,arm7dmareq); //async reader irqEnable(IRQ_FIFO_NOT_EMPTY); iprintf("test4"); REG_IPC_FIFO_TX = 0x1FFFFFFF; //Vsync REG_IPC_FIFO_TX = 170; swiWaitForVBlank(); REG_IPC_FIFO_TX = 0x82; //vol REG_IPC_FIFO_TX = 0x0304; REG_IPC_FIFO_TX = 0xBC; //src REG_IPC_FIFO_TX = 0x0001; REG_IPC_FIFO_TX = 0xBE; REG_IPC_FIFO_TX = 0x0001; while(1)swiWaitForVBlank(); REG_IPC_FIFO_TX = 0xC0; //dest REG_IPC_FIFO_TX = 0x00A0; REG_IPC_FIFO_TX = 0xC2; REG_IPC_FIFO_TX = 0x0400; swiWaitForVBlank(); REG_IPC_FIFO_TX = 0x100; //timer REG_IPC_FIFO_TX = 0xfc64; REG_IPC_FIFO_TX = 0x102; REG_IPC_FIFO_TX = 0x80; swiWaitForVBlank(); REG_IPC_FIFO_TX = 0x84; //sound on REG_IPC_FIFO_TX = 0x80; swiWaitForVBlank(); REG_IPC_FIFO_TX = 0xC6; //dma start REG_IPC_FIFO_TX = 0x8000; iprintf("ende"); while(1)swiWaitForVBlank(); }