int main(int argc, char **argv) { void *xfb[2]; u32 type; int fbi = 0; VIDEO_Init(); PAD_Init(); WPAD_Init(); rmode = VIDEO_GetPreferredMode(NULL); // double buffering, prevents flickering (is it needed for LCD TV? i don't have one to test) xfb[0] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); xfb[1] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); SYS_SetResetCallback(reload); SYS_SetPowerCallback(shutdown); WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR); WPAD_SetVRes(0, rmode->fbWidth, rmode->xfbHeight); while(!doreload && !dooff) { CON_Init(xfb[fbi],0,0,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); //VIDEO_ClearFrameBuffer(rmode,xfb[fbi],COLOR_BLACK); std::cout<<"\n\n\n"; WPAD_ReadPending(WPAD_CHAN_ALL, countevs); int wiimote_connection_status = WPAD_Probe(0, &type); print_wiimote_connection_status(wiimote_connection_status); std::cout<<" Event count: "<<evctr<<"\n"; if(wiimote_connection_status == WPAD_ERR_NONE) { print_and_draw_wiimote_data(xfb[fbi]); } VIDEO_SetNextFramebuffer(xfb[fbi]); VIDEO_Flush(); VIDEO_WaitVSync(); fbi ^= 1; } if(doreload) return 0; if(dooff) SYS_ResetSystem(SYS_SHUTDOWN,0,0); return 0; }
void Sys_Error (const char *error, ...) { va_list argptr; FILE* f; time_t rawtime; struct tm * timeinfo; char stime[32]; f= fopen("QRevPAK.err", "ab"); if(f != NULL) { time(&rawtime); timeinfo = localtime (&rawtime); strftime(stime, 32, "%Y/%m/%d %H:%M:%S",timeinfo); fprintf(f, "%s : Sys_Error: ", stime); va_start(argptr, error); vfprintf(f, error, argptr); va_end(argptr); fprintf(f, "\n\n"); fclose(f); }; printf ("Sys_Error: "); va_start (argptr,error); vprintf (error,argptr); va_end (argptr); printf ("\n"); VIDEO_SetNextFramebuffer(sys_framebuffer[0]); VIDEO_WaitVSync(); exit (1); }
void DoClearFrontBuffer(void) // CLEAR DX BUFFER { if (menuActive) return; // clear the screen, and flush it DEBUG_print("DoClearFrontBuffer",DBG_GPU1); // printf("DoClearFrontBuffer\n"); //Write menu/debug text on screen GXColor fontColor = {150,255,150,255}; IplFont_drawInit(fontColor); if((ulKeybits&KEY_SHOWFPS)&&showFPSonScreen) IplFont_drawString(10,35,szDispBuf, 1.0, false); int i = 0; DEBUG_update(); for (i=0;i<DEBUG_TEXT_HEIGHT;i++) IplFont_drawString(10,(10*i+60),text[i], 0.5, false); //reset swap table from GUI/DEBUG GX_SetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); GX_SetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0); GX_DrawDone(); whichfb ^= 1; GX_CopyDisp(xfb[0], GX_TRUE); GX_DrawDone(); VIDEO_SetNextFramebuffer(xfb[0]); VIDEO_Flush(); // VIDEO_WaitVSync(); }
// rulez nyan scene int main(int argc, char **argv) { bool nyaning = true; // self explain nyan(); MP3Player_PlayBuffer(nyannyannyan_mp3, nyannyannyan_mp3_size, NULL); VIDEO_SetBlack(FALSE); while(nyaning) { u64 cticks = ticks_to_millisecs(gettime()); // Loop the sound if ended if(!MP3Player_IsPlaying()) MP3Player_PlayBuffer(nyannyannyan_mp3, nyannyannyan_mp3_size, NULL); //Check wiimote input WPAD_ScanPads(); u32 pressed = WPAD_ButtonsDown(0); if (pressed & WPAD_BUTTON_HOME) nyaning = false; // blackscreen until 3,8s like the youtube video (not extreme precison ;)) if(cticks < startTime+3900) continue; // bkg frame counter (tick each 100ms) if(cticks > bkgTimeCounter+100) { bkgTimeCounter = cticks; currentBkgStep = (currentBkgStep+1) % BKG_STEP; } // nyan frame counter (tick each 60ms) if(cticks > nyanTimeCounter+60) { nyanTimeCounter = cticks; currentNyanStep = (currentNyanStep+1) % NYAN_STEP; } // Set the 2d matrix guMtxIdentity(GXmodelView2D); GX_LoadPosMtxImm(GXmodelView2D, GX_PNMTX0); // nyan f32 move = delta % BKG_SIZE; f32 x = -move; while(x < rmode->fbWidth) { drawBkgSprite(x, currentBkgStep); x += BKG_SIZE; } // nyan nyan drawNyan(-5, 240 - ((NYAN_HEIGHT*8)/2), currentNyanStep); // Copy & switch fb GX_DrawDone(); GX_CopyDisp(xfb[wichFb], GX_TRUE); VIDEO_SetNextFramebuffer(xfb[wichFb]); VIDEO_Flush(); VIDEO_WaitVSync(); wichFb ^= 1; delta += 8; } return 0; }
void projectm::render() { if(!init_done) init(); #ifdef _WII_ GXColor bgclr = {0,0,0,0xFF}; // Render the next frame in the visualisation/preset short *data = (short*)theapp->audio_data; pm->pcm()->addPCM16Data(data, 512); pm->renderFrame(); // handle the FB GX_SetCopyClear(bgclr,0); GX_SetAlphaUpdate(GX_TRUE); GX_SetColorUpdate(GX_TRUE); whichfb ^= 1; GX_CopyDisp(xfb[whichfb],GX_TRUE); GX_DrawDone(); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_Flush(); VIDEO_WaitVSync(); #else short *data = (short*)theapp->audio_data; pm->pcm()->addPCM16Data(data, 512); pm->renderFrame(); #endif }
void rvlInitFat() { // temporary init video, pad, console VIDEO_Init(); WPAD_Init(); rmode = VIDEO_GetPreferredMode(NULL); xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); CON_Init(xfb, 20, 20, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * VI_DISPLAY_PIX_SZ); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if(rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); // loop until either Home has been pressed, or an SD card has been found while(!fatInitDefault()) { WPAD_ScanPads(); printf("\x1b[2;0HFAT initialization error!"); printf("\x1b[3;0HPlease insert a SD card to continue or press Home to exit!"); u32 pressed = WPAD_ButtonsDown(0); if(pressed & WPAD_BUTTON_HOME) { printf("\x1b[5;0HExiting..."); exit(0); } VIDEO_WaitVSync(); } printf("\x1b[2;0H"); // set the app path strcpy(program.apppath, "sd:/apps/wii_azunyan8"); }
static void SetGCVideoMode (void) { syssram *sram; sram = __SYS_LockSram(); if(VIDEO_HaveComponentCable()) sram->flags |= 0x80; //set progressive flag else sram->flags &= 0x7F; //clear progressive flag if (config.dmlvideomode == DMLVIDEOMODE_NTSC) { rmode = &TVNtsc480IntDf; sram->flags &= 0xFE; // Clear bit 0 to set the video mode to NTSC sram->ntd &= 0xBF; //clear pal60 flag } else { rmode = &TVPal528IntDf; sram->flags |= 0x01; // Set bit 0 to set the video mode to PAL sram->ntd |= 0x40; //set pal60 flag } __SYS_UnlockSram(1); // 1 -> write changes while(!__SYS_SyncSram()); // TVPal528IntDf u32 *sfb; static GXRModeObj *rmode; //config.dmlvideomode = DMLVIDEOMODE_PAL; if (config.dmlvideomode == DMLVIDEOMODE_PAL) { rmode = &TVPal528IntDf; *(u32*)0x800000CC = VI_PAL; } else { rmode = &TVNtsc480IntDf; *(u32*)0x800000CC = VI_NTSC; } VIDEO_SetBlack(TRUE); VIDEO_Configure(rmode); sfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); VIDEO_ClearFrameBuffer(rmode, sfb, COLOR_BLACK); VIDEO_SetNextFramebuffer(sfb); VIDEO_Flush(); VIDEO_WaitVSync(); if (rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); VIDEO_SetBlack(FALSE); VIDEO_WaitVSync(); if (rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); }
void Initialise() { // Initialise the video system VIDEO_Init(); // This function initialises the attached controllers PAD_Init(); // Obtain the preferred video mode from the system // This will correspond to the settings in the Wii menu rmode = VIDEO_GetPreferredMode(NULL); // Allocate memory for the display in the uncached region xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); // Initialise the console, required for printf console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); // Set up the video registers with the chosen mode VIDEO_Configure(rmode); // Tell the video hardware where our display memory is VIDEO_SetNextFramebuffer(xfb); // Make the display visible VIDEO_SetBlack(FALSE); // Flush the video register changes to the hardware VIDEO_Flush(); // Wait for Video setup to complete VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); }
void InitVideo (void) { // Initialise the video system VIDEO_Init(); // Obtain the preferred video mode from the system // This will correspond to the settings in the Wii menu rmode = VIDEO_GetPreferredMode(NULL); // Allocate memory for the display in the uncached region xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); int x, y, w, h; x = 20; y = 32; w = rmode->fbWidth - (32); h = rmode->xfbHeight - (48); CON_InitEx(rmode, x, y, w, h); VIDEO_ClearFrameBuffer(rmode, xfb, COLOR_BLACK); CON_InitEx(rmode, x, y, w, h); // Set console text color printf("\x1b[%u;%um", 37, false); printf("\x1b[%u;%um", 40, false); }
void InitVideo () { VIDEO_Init(); vmode = VIDEO_GetPreferredMode(NULL); // get default video mode //Widescreen loading image fix... vmode->viWidth = 678; vmode->viXOrigin = (VI_MAX_WIDTH_NTSC - 678) / 2; VIDEO_Configure (vmode); // Allocate the video buffers xfb[0] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (vmode)); xfb[1] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (vmode)); // A console is always useful while debugging console_init (xfb[0], 20, 64, vmode->fbWidth, vmode->xfbHeight, vmode->fbWidth * 2); // Clear framebuffers etc. VIDEO_ClearFrameBuffer (vmode, xfb[0], COLOR_BLACK); VIDEO_ClearFrameBuffer (vmode, xfb[1], COLOR_BLACK); VIDEO_SetNextFramebuffer (xfb[0]); VIDEO_SetBlack (FALSE); VIDEO_Flush (); VIDEO_WaitVSync (); if (vmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync (); StartGX(); ResetVideo_Menu(); // Finally, the video is up and ready for use :) }
void SetScreen() { VIDEO_SetNextFramebuffer( xfb[whichfb] ); VIDEO_Flush(); VIDEO_WaitVSync(); }
static void retrace_callback(u32 retrace_count) { (void)retrace_count; VIDEO_SetNextFramebuffer(g_framebuf[g_vi_framebuf % 3]); VIDEO_Flush(); if (g_vi_framebuf < g_render_framebuf) g_vi_framebuf++; }
void PEOPS_GX_Flush() { GX_CopyDisp (xfb[whichfb], GX_TRUE); GX_DrawDone(); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_Flush(); whichfb ^= 1; }
void green_fix(void) //GREENSCREEN FIX { VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(TRUE); VIDEO_Flush(); VIDEO_WaitVSync(); }
void InitVideo() { VIDEO_Init(); // If WiiU - Force 16:9 aspect ratio based on WiiU settings if(isWiiU() && Settings.widescreen) { write32(0xd8006a0, 0x30000004), mask32(0xd8006a8, 0, 2); } vmode = VIDEO_GetPreferredMode(NULL); // get default video mode vmode->viWidth = Settings.widescreen ? 708 : 694; if (Settings.PAL50) { vmode->viXOrigin = (VI_MAX_WIDTH_PAL - vmode->viWidth) / 2; } else { vmode->viXOrigin = (VI_MAX_WIDTH_NTSC - vmode->viWidth) / 2; } VIDEO_Configure(vmode); screenheight = 480; screenwidth = vmode->fbWidth; // Allocate the video buffers xfb[0] = (u32 *) MEM_K0_TO_K1 ( SYS_AllocateFramebuffer ( vmode ) ); xfb[1] = (u32 *) MEM_K0_TO_K1 ( SYS_AllocateFramebuffer ( vmode ) ); // Clear framebuffers etc. VIDEO_ClearFrameBuffer(vmode, xfb[0], COLOR_BLACK); VIDEO_ClearFrameBuffer(vmode, xfb[1], COLOR_BLACK); VIDEO_SetNextFramebuffer(xfb[0]); VIDEO_Flush(); VIDEO_WaitVSync(); if (vmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); // Initialize GX GXColor background = { 0, 0, 0, 0xff }; gp_fifo = (u8 *) memalign(32, GP_FIFO_SIZE); memset (gp_fifo, 0, GP_FIFO_SIZE); GX_Init (gp_fifo, GP_FIFO_SIZE); GX_SetCopyClear (background, 0x00ffffff); GX_SetDispCopyGamma (GX_GM_1_0); GX_SetCullMode (GX_CULL_NONE); ResetVideo_Menu(); VIDEO_SetBlack(FALSE); // Finally, the video is up and ready for use :) }
int main(int argc, char **argv) { //DEBUG_Init(GDBSTUB_DEVICE_USB, 1); s8 ios_patched = 0; s32 ret = 0; CheckForGecko(); VIDEO_Init(); vmode = VIDEO_GetPreferredMode(NULL); xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(vmode)); VIDEO_Configure(vmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(false); VIDEO_Flush(); VIDEO_WaitVSync(); if (vmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); int x = 20, y = 20, w, h; w = vmode->fbWidth - (x * 2); h = vmode->xfbHeight - (y + 20); // Initialize the console //Con_InitEX works better but for some odd reason doesn't show right when clearing screen... //CON_InitEx(vmode, x, y, w, h); CON_Init(xfb,x,y,w,h, vmode->fbWidth*VI_DISPLAY_PIX_SZ ); printf("\n\n\n"); VIDEO_ClearFrameBuffer(vmode, xfb, COLOR_BLACK); gprintf("resolution is %dx%d\n",vmode->viWidth,vmode->viHeight); //printf("\x1b[2J"); /*sleep(3); gprintf("crashing...\n"); free((void*)0x1);*/ /*free((void*)0x1); free((void*)0x1); free((void*)0x1); memcpy((void*)0x0,(void*)0x1,5);*/ //return 0; //reload ios so that IF the user started this with AHBPROT we lose everything from HBC. also, IOS36 is the most patched ios :') IOS_ReloadIOS(36); WPAD_Init(); PAD_Init(); printf("\nIOS %d rev %d\n\n",IOS_GetVersion(),IOS_GetRevision()); if( (VERSION&0xFF) % 10 == 0 ) { #if BETAVERSION > 0 printf("Priiloader v%d.%db%d(r0x%08x) Installation/Removal Tool\n\n\n\n\t",VERSION>>8, (VERSION&0xFF) / 10,BETAVERSION,GIT_REV); #else printf("\t\tPriiloader v%d.%d(r0x%08x) Installation / Removal Tool\n\n\n\n\t",VERSION>>8, (VERSION&0xFF) / 10,GIT_REV); #endif }
// Call this at the end of a screen void DrawFrameFinish() { //Copy EFB->XFB GX_SetCopyClear((GXColor){0, 0, 0, 0xFF}, GX_MAX_Z24); GX_CopyDisp(xfb[whichfb],GX_TRUE); GX_Flush(); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_Flush(); VIDEO_WaitVSync(); }
/**************************************************************************** * Menu_Render * * Renders everything current sent to GX, and flushes video ***************************************************************************/ void Menu_Render() { whichfb ^= 1; // flip framebuffer GX_CopyDisp(xfb[whichfb], GX_TRUE); GX_DrawDone(); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_Flush(); VIDEO_WaitVSync(); frameCount++; }
static void frontend_gx_init(void *data) { (void)data; #ifdef HW_RVL IOS_ReloadIOS(IOS_GetVersion()); L2Enhance(); #ifndef IS_SALAMANDER gx_init_mem2(); #endif #endif #if defined(DEBUG) && defined(IS_SALAMANDER) VIDEO_Init(); GXRModeObj *rmode = VIDEO_GetPreferredMode(NULL); void *xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); console_init(xfb, 20, 20, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * VI_DISPLAY_PIX_SZ); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); VIDEO_WaitVSync(); #endif #ifndef DEBUG __exception_setreload(8); #endif fatInitDefault(); #ifdef HAVE_LOGGER devoptab_list[STD_OUT] = &dotab_stdout; devoptab_list[STD_ERR] = &dotab_stdout; dotab_stdout.write_r = gx_logger_net; #elif defined(HAVE_FILE_LOGGER) && !defined(IS_SALAMANDER) devoptab_list[STD_OUT] = &dotab_stdout; devoptab_list[STD_ERR] = &dotab_stdout; dotab_stdout.write_r = gx_logger_file; #endif #if defined(HW_RVL) && !defined(IS_SALAMANDER) OSThread gx_device_thread; gx_devices[GX_DEVICE_SD].interface = &__io_wiisd; gx_devices[GX_DEVICE_SD].name = "sd"; gx_devices[GX_DEVICE_SD].mounted = fatMountSimple(gx_devices[GX_DEVICE_SD].name, gx_devices[GX_DEVICE_SD].interface); gx_devices[GX_DEVICE_USB].interface = &__io_usbstorage; gx_devices[GX_DEVICE_USB].name = "usb"; gx_devices[GX_DEVICE_USB].mounted = fatMountSimple(gx_devices[GX_DEVICE_USB].name, gx_devices[GX_DEVICE_USB].interface); OSInitMutex(&gx_device_cond_mutex); OSInitCond(&gx_device_cond); OSInitMutex(&gx_device_mutex); OSCreateThread(&gx_device_thread, gx_devthread, 0, NULL, NULL, 0, 66, 0); #endif }
void initConsole(const void *imgBgData,enum CONSOLE_COLORS CONSOLE_COLOR,const char *strSplashScreenMessage,double dbLeft,double dbTop,double dbWidth,double dbHeight) { PNGUPROP imgProperties; IMGCTX imgContext; void *pFramebuffer=NULL; GXRModeObj *pRmode=NULL; double dbConsoleFrameX[2]={dbLeft,dbLeft},dbConsoleFrameY[2]={dbTop,dbTop},dbBgImgXScaleFactor=1,dbBgImgYScaleFactor=1,dbReferenceWidth,dbReferenceHeight; int intConsoleColumnsCount,intConsoleRowsCount; struct stConsoleCursorLocation stTexteLocation; VIDEO_Init(); pRmode=VIDEO_GetPreferredMode(NULL); pFramebuffer=MEM_K0_TO_K1(SYS_AllocateFramebuffer(pRmode)); VIDEO_ClearFrameBuffer(pRmode,pFramebuffer,CONSOLE_COLOR); VIDEO_Configure(pRmode); VIDEO_SetNextFramebuffer(pFramebuffer); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if(pRmode->viTVMode&VI_NON_INTERLACE) { VIDEO_WaitVSync(); } dbWidth=fabs(dbWidth); dbHeight=fabs(dbHeight); if ((imgContext=getPngImageRessources(imgBgData,&imgProperties))) { dbReferenceWidth=imgProperties.imgWidth; dbReferenceHeight=imgProperties.imgHeight; dbBgImgXScaleFactor=pRmode->fbWidth/imgProperties.imgWidth; dbBgImgYScaleFactor=pRmode->xfbHeight/imgProperties.imgHeight; } else { dbReferenceWidth=pRmode->fbWidth; dbReferenceHeight=pRmode->xfbHeight; } if (dbWidth<=1) { dbWidth=dbReferenceWidth*dbWidth; dbConsoleFrameX[0]=0; dbConsoleFrameX[1]=dbWidth; } if (dbHeight<=1) { dbHeight=dbReferenceHeight*dbHeight; dbConsoleFrameY[0]=0; dbConsoleFrameY[1]=dbHeight; } CON_InitEx(pRmode,(s32) getRoundNumber(getPolyContainerPosition(&dbConsoleFrameX[0],2,0,dbReferenceWidth,dbLeft)*dbBgImgXScaleFactor),(s32) getRoundNumber(getPolyContainerPosition(&dbConsoleFrameY[0],2,0,dbReferenceHeight,dbTop)*dbBgImgYScaleFactor),(s32) getRoundNumber(dbWidth*dbBgImgXScaleFactor),(s32) getRoundNumber(dbHeight*dbBgImgYScaleFactor)); if (imgContext) { PNGU_DECODE_TO_COORDS_YCbYCr(imgContext,0,0,imgProperties.imgWidth,imgProperties.imgHeight,pRmode->fbWidth,pRmode->xfbHeight,pFramebuffer); PNGU_ReleaseImageContext(imgContext); } resetDefaultFontSyle(); if (*strSplashScreenMessage) { CON_GetMetrics(&intConsoleColumnsCount,&intConsoleRowsCount); printAlignedText(ALIGN_CENTER,ALIGN_MIDDLE,0,0,intConsoleRowsCount-1,intConsoleColumnsCount-1,true,true,&stTexteLocation,"%s",strSplashScreenMessage); } }
/**************************************************************************** * Menu_Render * * Renders everything current sent to GX, and flushes video ***************************************************************************/ void Menu_Render() { GX_DrawDone (); whichfb ^= 1; // flip framebuffer GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GX_SetColorUpdate(GX_TRUE); GX_CopyDisp(xfb[whichfb],GX_TRUE); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_Flush(); VIDEO_WaitVSync(); }
void DebugDisplayEfbContents() { #ifdef ENABLE_DEBUG_DISPLAY CGX_DoEfbCopyXfb(0, 0, rmode->fbWidth, rmode->efbHeight, xfbHeight, frameBuffer[fb]); CGX_WaitForGpuToFinish(); VIDEO_SetNextFramebuffer(frameBuffer[fb]); VIDEO_Flush(); VIDEO_WaitVSync(); fb ^= 1; #endif }
void init_video_and_wpad() { // Video and WPAD initialized? if(video_and_wpad_initialized) { return; } // Initialise the video system VIDEO_Init(); // Obtain the preferred video mode from the system // This will correspond to the settings in the Wii menu rmode = VIDEO_GetPreferredMode(NULL); // Allocate memory for the display in the uncached region xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); // Set up the video registers with the chosen mode VIDEO_Configure(rmode); // Tell the video hardware where our display memory is VIDEO_SetNextFramebuffer(xfb); // Make the display visible VIDEO_SetBlack(FALSE); // Flush the video register changes to the hardware VIDEO_Flush(); // Wait for Video setup to complete VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); // Set console parameters int x = 24, y = 32, w, h; w = rmode->fbWidth - (32); h = rmode->xfbHeight - (48); // Initialize the console - CON_InitEx works after VIDEO_ calls CON_InitEx(rmode, x, y, w, h); // Clear the garbage around the edges of the console VIDEO_ClearFrameBuffer(rmode, xfb, COLOR_BLACK); // This function initialises the attached controllers WPAD_Init(); WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR); video_and_wpad_initialized = TRUE; }
/**************************************************************************** * StopGX * * Stops GX (when exiting) ***************************************************************************/ void StopGX() { GX_SetCopyClear((GXColor){0, 0, 0, 0xFF}, GX_MAX_Z24); GX_CopyDisp(xfb[whichfb], GX_TRUE); GX_Flush(); VIDEO_SetNextFramebuffer(xfb[whichfb]); VIDEO_SetBlack(TRUE); VIDEO_Flush(); VIDEO_WaitVSync(); if (vmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); whichfb ^= 1; }
void green_fix(void) //GREENSCREEN FIX { if (xfb == NULL) { rmode = VIDEO_GetPreferredMode(NULL); xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); } VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(TRUE); VIDEO_Flush(); VIDEO_WaitVSync(); }
static void init() { fb = 0; // Initialise the video system. VIDEO_Init(); rmode = VIDEO_GetPreferredMode(NULL); // Allocate the frame buffer. framebuffer[0] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); framebuffer[1] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); // Set up the video system with the chosen mode. VIDEO_Configure(rmode); // Set the frame buffer. VIDEO_SetNextFramebuffer(framebuffer[fb]); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if (rmode->viTVMode & VI_NON_INTERLACE) { VIDEO_WaitVSync(); } // Initialise the debug console. // ELUTODO: only one framebuffer with it? console_init(framebuffer[0], 20, 20, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * 2); // Initialise the controller library. PAD_Init(); // Initialise the keyboard library KEYBOARD_Init(NULL); if(!fatInitDefault()) Sys_Error("Error initializing filesystem"); #ifndef DISABLE_WIIMOTE if (WPAD_Init() != WPAD_ERR_NONE) Sys_Error("WPAD_Init() failed.\n"); #endif wiimote_ir_res_x = rmode->fbWidth; wiimote_ir_res_y = rmode->xfbHeight; }
STDTerminal::STDTerminal() { #ifdef FORWII // TODO:osetrit ak je video uz initnute VIDEO_Init(); rmode = VIDEO_GetPreferredMode(NULL); xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); console_init(xfb, 20, 20, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * VI_DISPLAY_PIX_SZ); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if (rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); #endif }
void WiiEnvironment::endDraw() { // do this stuff after drawing GX_DrawDone(); fb ^= 1; // flip framebuffer GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GX_SetColorUpdate(GX_TRUE); GX_CopyDisp(frameBuffer[fb],GX_TRUE); VIDEO_SetNextFramebuffer(frameBuffer[fb]); VIDEO_Flush(); VIDEO_WaitVSync(); }
void init_wii() { VIDEO_Init(); WPAD_Init(); rmode = VIDEO_GetPreferredMode(NULL); xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); // The console understands VT terminal escape codes // This positions the cursor on row 2, column 0 // we can use variables for this with format codes too // e.g. printf ("\x1b[%d;%dH", row, column ); printf("\x1b[2;0H"); printf("yellhttptest\n"); printf("Initializing FAT...\n"); if(!fatInitDefault()) { printf("FAT init failed.\n"); console_pause(); } printf("Configuring network ...\n"); memset(localip, 0, 16); memset(netmask, 0, 16); memset(gateway, 0, 16); s32 ret = if_config (localip, netmask, gateway, true); if(ret<0) { printf("Network config failed: %d\n", ret); console_pause(); } else { printf("Network config done ip: %s, gw: %s, mask %s\n", localip, gateway, netmask); } }
static void setup_video_mode(GXRModeObj *mode) { VIDEO_Configure(mode); for (unsigned i = 0; i < 3; i++) { g_framebuf[i] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(mode)); VIDEO_ClearFrameBuffer(mode, g_framebuf[i], COLOR_BLACK); } g_vi_framebuf = 0; g_render_framebuf = 1; VIDEO_SetNextFramebuffer(g_framebuf[0]); VIDEO_SetPreRetraceCallback(retrace_callback); VIDEO_SetBlack(false); VIDEO_Flush(); VIDEO_WaitVSync(); if (mode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync(); }