static int NDS_RenderClear(SDL_Renderer *renderer) { NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; /* wait for capture unit to be ready */ while(REG_DISPCAPCNT & DCAP_ENABLE); /* 3D engine can only work on one screen at a time. */ data->is_sub = !data->is_sub; if (data->is_sub) { lcdMainOnBottom(); vramSetBankC(VRAM_C_LCD); vramSetBankD(VRAM_D_SUB_SPRITE); REG_DISPCAPCNT = DCAP_BANK(2) | DCAP_ENABLE | DCAP_SIZE(3); } else { lcdMainOnTop(); vramSetBankD(VRAM_D_LCD); vramSetBankC(VRAM_C_SUB_BG); REG_DISPCAPCNT = DCAP_BANK(3) | DCAP_ENABLE | DCAP_SIZE(3); } glBegin2D(); glClearColor(renderer->r >> 3, renderer->g >> 3, renderer->b >> 3, renderer->a >> 3); return 0; }
void GameOver::Render(GameEngine* game) { glBegin2D(); glBoxFilledGradient( 0, 0, 255, 191, RGB15( 31, 0, 0 ), RGB15( 0, 31, 0 ), RGB15( 31, 0, 31 ), RGB15( 0, 31, 31 ) ); glEnd2D(); glFlush(0); swiWaitForVBlank(); }
void Menu::Render(GameEngine* game) { glBegin2D(); // backdrop glBoxFilled( 0, 0, 259, 191,0); DrawPlasma(); // starfield // nyancat // press start glEnd2D(); glFlush(0); swiWaitForVBlank(); }
static int NDS_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode) { display->driverdata = mode->driverdata; powerOn(POWER_ALL_2D); #ifdef USE_HW_RENDERER videoSetMode(MODE_5_3D); videoSetModeSub(MODE_5_2D); /* initialize gl2d */ glScreen2D(); glBegin2D(); vramSetBankA(VRAM_A_TEXTURE); vramSetBankB(VRAM_B_TEXTURE ); vramSetBankC(VRAM_C_SUB_BG_0x06200000); vramSetBankE(VRAM_E_TEX_PALETTE); // sub sprites hold the bottom image when 3D directed to top initSubSprites(); // sub background holds the top image when 3D directed to bottom bgInitSub(3, BgType_Bmp16, BgSize_B16_256x256, 0, 0); #else /* Select mode 5 for both screens. Can do Extended Rotation * Background on both (BG 2 and 3). */ videoSetMode(MODE_5_2D); videoSetModeSub(MODE_5_2D); vramSetBankA(VRAM_A_MAIN_BG_0x06000000); vramSetBankB(VRAM_B_TEXTURE ); vramSetBankC(VRAM_C_SUB_BG_0x06200000); vramSetBankE(VRAM_E_TEX_PALETTE); #endif return 0; }