/* DS_ClearVRAM: Make sure all of the video memory and background/object palettes are zeroed out just in-case the loader doesn't do it for us. */ LOCALPROC DS_ClearVRAM(void) { vramSetPrimaryBanks(VRAM_A_LCD, VRAM_B_LCD, VRAM_C_LCD, VRAM_D_LCD); dmaFillWords(0, (void *) VRAM_A, 128 * 1024 * 4); dmaFillWords(0, (void *) BG_PALETTE, 256 * 2); dmaFillWords(0, (void *) BG_PALETTE_SUB, 256 * 2); dmaFillWords(0, (void *) SPRITE_PALETTE, 256 * 2); dmaFillWords(0, (void *) SPRITE_PALETTE_SUB, 256 * 2); vramDefault(); }
//--------------------------------------------------------------------------------- // Reset the DS registers to sensible defaults //--------------------------------------------------------------------------------- void __attribute__((weak)) initSystem(void) { //--------------------------------------------------------------------------------- register int i; // stop timers and dma for (i=0; i<4; i++) { DMA_CR(i) = 0; DMA_SRC(i) = 0; DMA_DEST(i) = 0; TIMER_CR(i) = 0; TIMER_DATA(i) = 0; } // clear video display registers dmaFillWords(0, (void*)0x04000000, 0x56); dmaFillWords(0, (void*)0x04001008, 0x56); videoSetModeSub(0); vramDefault(); VRAM_E_CR = 0; VRAM_F_CR = 0; VRAM_G_CR = 0; VRAM_H_CR = 0; VRAM_I_CR = 0; irqInit(); fifoInit(); fifoSetValue32Handler(FIFO_PM, powerValueHandler, 0); fifoSetDatamsgHandler(FIFO_SYSTEM, systemMsgHandler, 0); if(REG_DSIMODE) { fifoSendValue32(FIFO_PM,PM_DSI_HACK); __dsimode = true; } __transferRegion()->buttons = 0xffff; punixTime = (time_t*)memUncached((void *)&__transferRegion()->unixTime); __syscalls.exit = __libnds_exit; extern char *fake_heap_end; __transferRegion()->bootcode = (struct __bootstub *)fake_heap_end; irqEnable(IRQ_VBLANK); }
int splashScreen::events() { touchRead(&touch); scanKeys(); int pressed = keysDown(); if((pressed & KEY_TOUCH)) return MAINMENU; int keys = keysHeld(); if(keys & KEY_START) { timer = 301; } if(timer<300) { return SPLASHSCREEN; } bgHide(bg3); bgHide(bg2); vramDefault(); initiated = false; return MAINMENU; }