int main(int argc, char *argv[]) { /* INITIALIZE */ #ifdef HW_RVL DI_UseCache(false); if (!__di_check_ahbprot()) { s32 preferred = IOS_GetPreferredVersion(); if (preferred == 58 || preferred == 61) IOS_ReloadIOS(preferred); else DI_LoadDVDX(true); } DI_Init(); // first #endif loadSettings(argc, argv); MenuContext *menu = new MenuContext(vmode); VIDEO_SetPostRetraceCallback (ScanPADSandReset); #ifndef WII DVD_Init(); #endif #ifdef DEBUGON //DEBUG_Init(GDBSTUB_DEVICE_TCP,GDBSTUB_DEF_TCPPORT); //Default port is 2828 DEBUG_Init(GDBSTUB_DEVICE_USB, 1); _break(); #endif control_info_init(); //Perform controller auto assignment at least once at startup. // Start up AESND (inited here because its used in SPU and CD) AESND_Init(); #ifdef HW_RVL // Initialize the network if the user has specified something in their SMB settings if(strlen(&smbShareName[0]) && strlen(&smbIpAddr[0])) { init_network_thread(); } #endif while (menu->isRunning()) {} // Shut down AESND AESND_Reset(); delete menu; return 0; }
/* Initialise Video, PAD, DVD, Font */ void* Initialise (void) { VIDEO_Init (); PAD_Init (); DVD_Init(); *(volatile unsigned long*)0xcc00643c = 0x00000000; //allow 32mhz exi bus // Disable IPL modchips to allow access to IPL ROM fonts ipl_set_config(6); usleep(1000); //wait for modchip to disable (overkill) __SYS_ReadROM(IPLInfo,256,0); // Read IPL tag // Wii has no IPL tags for "PAL" so let libOGC figure out the video mode if(!is_gamecube()) { vmode = VIDEO_GetPreferredMode(NULL); //Last mode used } else { // Gamecube, determine based on IPL int retPAD = 0, retCnt = 10000; while(retPAD <= 0 && retCnt >= 0) { retPAD = PAD_ScanPads(); usleep(100); retCnt--; } // L Trigger held down ignores the fact that there's a component cable plugged in. if(VIDEO_HaveComponentCable() && !(PAD_ButtonsDown(0) & PAD_TRIGGER_L)) { if(strstr(IPLInfo,"MPAL")!=NULL) { swissSettings.sramVideo = 2; vmode = &TVMpal480Prog; //Progressive 480p } else if((strstr(IPLInfo,"PAL")!=NULL)) { swissSettings.sramVideo = 1; vmode = &TVPal576ProgScale; //Progressive 576p } else { swissSettings.sramVideo = 0; vmode = &TVNtsc480Prog; //Progressive 480p } } else { //try to use the IPL region if(strstr(IPLInfo,"MPAL")!=NULL) { swissSettings.sramVideo = 2; vmode = &TVMpal480IntDf; //PAL-M } else if(strstr(IPLInfo,"PAL")!=NULL) { swissSettings.sramVideo = 1; vmode = &TVPal576IntDfScale; //PAL } else { swissSettings.sramVideo = 0; vmode = &TVNtsc480IntDf; //NTSC } } } initialise_video(vmode); populateVideoStr(vmode); init_font(); init_textures(); whichfb = 0; drive_version(&driveVersion[0]); swissSettings.hasDVDDrive = *(u32*)&driveVersion[0] ? 1 : 0; if(!driveVersion[0]) { // Reset DVD if there was a modchip DrawFrameStart(); WriteFontStyled(640/2, 250, "Initialise DVD .. (HOLD B if NO DVD Drive)", 0.8f, true, defaultColor); DrawFrameFinish(); dvd_reset(); // low-level, basic dvd_read_id(); if(!(PAD_ButtonsHeld(0) & PAD_BUTTON_B)) { dvd_set_streaming(*(char*)0x80000008); } drive_version(&driveVersion[0]); swissSettings.hasDVDDrive = *(u32*)&driveVersion[0] ? 1 : 0; if(!swissSettings.hasDVDDrive) { DrawFrameStart(); DrawMessageBox(D_INFO, "No DVD Drive Detected !!"); DrawFrameFinish(); sleep(2); } } return xfb[0]; }
int main(int argc, char* argv[]){ /* INITIALIZE */ #ifdef HW_RVL DI_Init(); // first #endif #ifdef DEBUGON //DEBUG_Init(GDBSTUB_DEVICE_TCP,GDBSTUB_DEF_TCPPORT); //Default port is 2828 DEBUG_Init(GDBSTUB_DEVICE_USB, 1); _break(); #endif Initialise(); // Stock OGC initialization // vmode = VIDEO_GetPreferredMode(NULL); MenuContext *menu = new MenuContext(vmode); VIDEO_SetPostRetraceCallback (ScanPADSandReset); #ifndef WII DVD_Init(); #endif // menuInit(); #ifdef DEBUGON //DEBUG_Init(GDBSTUB_DEVICE_TCP,GDBSTUB_DEF_TCPPORT); //Default port is 2828 // DEBUG_Init(GDBSTUB_DEVICE_USB, 1); // _break(); #endif // Default Settings audioEnabled = 1; // Audio #ifdef RELEASE showFPSonScreen = 0; // Show FPS on Screen #else showFPSonScreen = 1; // Show FPS on Screen #endif printToScreen = 1; // Show DEBUG text on screen printToSD = 0; // Disable SD logging Timers.limitVIs = 0; // Sync to Audio saveEnabled = 0; // Don't save game nativeSaveDevice = 0; // SD saveStateDevice = 0; // SD autoSave = 1; // Auto Save Game creditsScrolling = 0; // Normal menu for now dynacore = 1; // Dynarec screenMode = 0; // Stretch FB horizontally padAutoAssign = PADAUTOASSIGN_AUTOMATIC; padType[0] = PADTYPE_NONE; padType[1] = PADTYPE_NONE; padType[2] = PADTYPE_NONE; padType[3] = PADTYPE_NONE; padAssign[0] = PADASSIGN_INPUT0; padAssign[1] = PADASSIGN_INPUT1; padAssign[2] = PADASSIGN_INPUT2; padAssign[3] = PADASSIGN_INPUT3; pakMode[0] = PAKMODE_MEMPAK; // memPak plugged into controller 1 pakMode[1] = PAKMODE_MEMPAK; pakMode[2] = PAKMODE_MEMPAK; pakMode[3] = PAKMODE_MEMPAK; loadButtonSlot = LOADBUTTON_DEFAULT; #ifdef GLN64_GX // glN64 specific settings glN64_useFrameBufferTextures = 0; // Disable FrameBuffer textures glN64_use2xSaiTextures = 0; // Disable 2xSai textures renderCpuFramebuffer = 0; // Disable CPU Framebuffer Rendering #endif //GLN64_GX menuActive = 1; //config stuff fileBrowser_file* configFile_file; int (*configFile_init)(fileBrowser_file*) = fileBrowser_libfat_init; #ifdef HW_RVL if(argv[0][0] == 'u') { //assume USB configFile_file = &saveDir_libfat_USB; if(configFile_init(configFile_file)) { //only if device initialized ok FILE* f = fopen( "usb:/wii64/settings.cfg", "r" ); //attempt to open file if(f) { //open ok, read it readConfig(f); fclose(f); } f = fopen( "usb:/wii64/controlG.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_GC); //write out GC controller mappings fclose(f); } #ifdef HW_RVL f = fopen( "usb:/wii64/controlC.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Classic); //write out Classic controller mappings fclose(f); } f = fopen( "usb:/wii64/controlN.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_WiimoteNunchuk); //write out WM+NC controller mappings fclose(f); } f = fopen( "usb:/wii64/controlW.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Wiimote); //write out Wiimote controller mappings fclose(f); } #endif //HW_RVL } } else /*if((argv[0][0]=='s') || (argv[0][0]=='/'))*/ #endif { //assume SD configFile_file = &saveDir_libfat_Default; if(configFile_init(configFile_file)) { //only if device initialized ok FILE* f = fopen( "sd:/wii64/settings.cfg", "r" ); //attempt to open file if(f) { //open ok, read it readConfig(f); fclose(f); } f = fopen( "sd:/wii64/controlG.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_GC); //write out GC controller mappings fclose(f); } #ifdef HW_RVL f = fopen( "sd:/wii64/controlC.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Classic); //write out Classic controller mappings fclose(f); } f = fopen( "sd:/wii64/controlN.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_WiimoteNunchuk); //write out WM+NC controller mappings fclose(f); } f = fopen( "sd:/wii64/controlW.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Wiimote); //write out Wiimote controller mappings fclose(f); } #endif //HW_RVL } } #ifdef HW_RVL // Handle options passed in through arguments int i; for(i=1; i<argc; ++i){ handleConfigPair(argv[i]); } #endif while (menu->isRunning()) {} delete menu; return 0; }
int main (int argc, char *argv[]) { #ifdef HW_RVL /* initialize DVD device */ DI_Init(); #endif u16 usBetweenFrames; long long now, prev; /* Initialize OGC subsystems */ ogc_video__init(); ogc_input__init(); ogc_audio__init(); #ifdef HW_DOL /* Initialize GC DVD interface */ DVD_Init (); dvd_drive_detect(); #endif #ifdef HW_RVL /* Power Button callback */ SYS_SetPowerCallback(Power_Off); #endif /* Initialize FAT Interface */ if (fatInitDefault() == true) { fat_enabled = 1; } /* Default Config */ legal(); set_option_defaults (); config_load(); #ifdef HW_RVL /* Load SMB Settings */ loadSettings(); #endif /* Restore Recent Files list */ set_history_defaults(); history_load(); /* Initialize Virtual Machine */ init_machine (); /* Show Menu */ MainMenu(); ConfigRequested = 0; /* Initialize Frame timings */ frameticker = 0; usBetweenFrames = sms.display ? 20000 : 16666; prev = gettime(); /* Emulation Loop */ while (1) { /* update inputs */ ogc_input__update(); /* Frame synchronization */ if (gc_pal != sms.display) { /* use timers */ now = gettime(); if (diff_usec(prev, now) > usBetweenFrames) { /* Frame skipping */ prev = now; system_frame(1); } else { /* Delay */ while (diff_usec(prev, now) < usBetweenFrames) now = gettime(); /* Render Frame */ prev = now; system_frame(0); } } else { /* use VSync */ if (frameticker > 1) { /* Frame skipping */ frameticker--; system_frame (1); } else { /* Delay */ while (!frameticker) usleep(10); system_frame (0); } frameticker--; } /* update video & audio */ ogc_video__update(); ogc_audio__update(); /* Check for Menu request */ if (ConfigRequested) { /* reset AUDIO */ ogc_audio__reset(); /* go to menu */ MainMenu (); ConfigRequested = 0; ogc_video__reset(); /* reset frame timings */ frameticker = 0; usBetweenFrames = sms.display ? 20000 : 16666; prev = gettime(); } } return 0; }
int main(int argc, char *argv[]) { #ifdef HW_DOL ipl_set_config(6); // disable Qoob modchip #endif #ifdef WII_DVD DI_Init(); // first #endif int selectedMenu = -1; InitDeviceThread(); InitGCVideo (); ResetVideo_Menu (); // change to menu video mode // Controllers PAD_Init(); #ifdef HW_RVL WPAD_Init(); // read wiimote accelerometer and IR data WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetVRes(WPAD_CHAN_ALL,640,480); // Wii Power/Reset buttons WPAD_SetPowerButtonCallback((WPADShutdownCallback)ShutdownCB); SYS_SetPowerCallback(ShutdownCB); SYS_SetResetCallback(ResetCB); #endif // Initialise FreeType if (FT_Init ()) { printf ("Cannot initialise font subsystem!\n"); while (1); } InitialiseAudio(); // Initialize libFAT for SD and USB MountAllFAT(); // Initialize DVD subsystem (GameCube only) #ifdef HW_DOL DVD_Init (); #endif // allocate memory to store rom nesrom = (unsigned char *)malloc(1024*1024*3); // 3 MB should be plenty /*** Minimal Emulation Loop ***/ if ( !FCEUI_Initialize() ) { WaitPrompt("Unable to initialize FCE Ultra\n"); ExitToLoader(); } FCEUI_SetGameGenie(0); // 0 - OFF, 1 - ON memset(FDSBIOS, 0, sizeof(FDSBIOS)); // clear FDS BIOS memory cleanSFMDATA(); // clear state data // Set defaults DefaultSettings(); // store path app was loaded from sprintf(appPath, "fceugx"); if(argc > 0 && argv[0] != NULL) CreateAppPath(argv[0]); // Load preferences if(!LoadPrefs()) { WaitPrompt("Preferences reset - check settings!"); selectedMenu = 1; // change to preferences menu } FCEUI_SetSoundQuality(1); // 0 - low, 1 - high, 2 - high (alt.) FCEUI_SetVidSystem(GCSettings.timing); // causes a small 'pop' in the audio while (1) // main loop { #ifdef HW_RVL if(ShutdownRequested) ShutdownWii(); #endif // go back to checking if devices were inserted/removed // since we're entering the menu LWP_ResumeThread (devicethread); MainMenu(selectedMenu); selectedMenu = 2; // return to game menu from now on // stop checking if devices were removed/inserted // since we're starting emulation again LWP_SuspendThread (devicethread); ResetVideo_Emu(); setFrameTimer(); // set frametimer method before emulation SetPalette(); static int fskipc=0; while(1) // emulation loop { uint8 *gfx; int32 *sound; int32 ssize; #ifdef FRAMESKIP fskipc=(fskipc+1)%(frameskip+1); #endif FCEUI_Emulate(&gfx, &sound, &ssize, fskipc); if(!fskipc) { xbsave = gfx; FCEUD_Update(gfx, sound, ssize); } if(ResetRequested) { PowerNES(); // reset game ResetRequested = 0; } if(ConfigRequested) { ResetVideo_Menu(); if (GCSettings.AutoSave == 1) { SaveRAM(GCSettings.SaveMethod, SILENT); } else if (GCSettings.AutoSave == 2) { SaveState(GCSettings.SaveMethod, SILENT); } else if(GCSettings.AutoSave == 3) { SaveRAM(GCSettings.SaveMethod, SILENT); SaveState(GCSettings.SaveMethod, SILENT); } // save zoom level SavePrefs(SILENT); ConfigRequested = 0; break; // leave emulation loop } } } }
/* Initialise Video, PAD, DVD, Font */ void Initialise (void) { VIDEO_Init (); PAD_Init (); DVD_Init(); *(volatile unsigned long*)0xcc00643c = 0x00000000; //allow 32mhz exi bus // Disable IPL modchips to allow access to IPL ROM fonts ipl_set_config(6); usleep(1000); //wait for modchip to disable (overkill) __SYS_ReadROM(IPLInfo,256,0); // Read IPL tag // By default, let libOGC figure out the video mode GXRModeObj *vmode = VIDEO_GetPreferredMode(NULL); //Last mode used if(is_gamecube()) { // Gamecube, determine based on IPL int retPAD = 0, retCnt = 10000; while(retPAD <= 0 && retCnt >= 0) { retPAD = PAD_ScanPads(); usleep(100); retCnt--; } // L Trigger held down ignores the fact that there's a component cable plugged in. if(VIDEO_HaveComponentCable() && !(PAD_ButtonsDown(0) & PAD_TRIGGER_L)) { if(strstr(IPLInfo,"MPAL")!=NULL) { swissSettings.sramVideo = 2; vmode = &TVMpal480Prog; //Progressive 480p } else if((strstr(IPLInfo,"PAL")!=NULL)) { swissSettings.sramVideo = 1; vmode = &TVPal576ProgScale; //Progressive 576p } else { swissSettings.sramVideo = 0; vmode = &TVNtsc480Prog; //Progressive 480p } } else { //try to use the IPL region if(strstr(IPLInfo,"MPAL")!=NULL) { swissSettings.sramVideo = 2; vmode = &TVMpal480IntDf; //PAL-M } else if(strstr(IPLInfo,"PAL")!=NULL) { swissSettings.sramVideo = 1; vmode = &TVPal576IntDfScale; //PAL } else { swissSettings.sramVideo = 0; vmode = &TVNtsc480IntDf; //NTSC } } } setVideoMode(vmode); init_font(); DrawInit(); drive_version(&driveVersion[0]); swissSettings.hasDVDDrive = *(u32*)&driveVersion[0] ? 1 : 0; if(!driveVersion[0]) { // Reset DVD if there was a IPL replacement that hasn't done that for us yet uiDrawObj_t *progBox = DrawPublish(DrawProgressBar(true, 0, "Initialise DVD .. (HOLD B if NO DVD Drive)")); dvd_reset(); // low-level, basic dvd_read_id(); if(!(PAD_ButtonsHeld(0) & PAD_BUTTON_B)) { dvd_set_streaming(*(char*)0x80000008); } drive_version(&driveVersion[0]); swissSettings.hasDVDDrive = *(u32*)&driveVersion[0] ? 2 : 0; if(!swissSettings.hasDVDDrive) { DrawDispose(progBox); progBox = DrawPublish(DrawMessageBox(D_INFO, "No DVD Drive Detected !!")); sleep(2); } DrawDispose(progBox); } }
/*************************************************************************** * M A I N * ***************************************************************************/ int main (int argc, char *argv[]) { #ifdef HW_RVL /* enable 64-byte fetch mode for L2 cache */ L2Enhance(); /* initialize DI interface */ DI_UseCache(0); DI_Init(); sprintf(osd_version, "%s (IOS %d)", VERSION, IOS_GetVersion()); #else sprintf(osd_version, "%s (GCN)", VERSION); #endif /* initialize video engine */ gx_video_Init(); #ifndef HW_RVL /* initialize DVD interface */ DVD_Init(); #endif /* initialize input engine */ gx_input_Init(); /* initialize FAT devices */ int retry = 0; int fatMounted = 0; /* try to mount FAT devices during 3 seconds */ while (!fatMounted && (retry < 12)) { fatMounted = fatInitDefault(); usleep(250000); retry++; } if (fatMounted) { /* base directory */ char pathname[MAXPATHLEN]; sprintf (pathname, DEFAULT_PATH); DIR *dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); /* default SRAM & Savestate files directories */ sprintf (pathname, "%s/saves",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/saves/md",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/saves/ms",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/saves/gg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/saves/sg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/saves/cd",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); /* default Snapshot files directories */ sprintf (pathname, "%s/snaps",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/snaps/md",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/snaps/ms",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/snaps/gg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/snaps/sg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/snaps/cd",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); /* default Cheat files directories */ sprintf (pathname, "%s/cheats",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/cheats/md",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/cheats/ms",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/cheats/gg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/cheats/sg",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); sprintf (pathname, "%s/cheats/cd",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); /* default BIOS ROM files directories */ sprintf (pathname, "%s/bios",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); /* default LOCK-ON ROM files directories */ sprintf (pathname, "%s/lock-on",DEFAULT_PATH); dir = opendir(pathname); if (dir) closedir(dir); else mkdir(pathname,S_IRWXU); } /* initialize sound engine */ gx_audio_Init(); /* initialize genesis plus core */ history_default(); config_default(); init_machine(); /* auto-load last ROM file */ if (config.autoload) { SILENT = 1; if (OpenDirectory(TYPE_RECENT, -1)) { if (LoadFile(0)) { reloadrom(); gx_video_Start(); gx_audio_Start(); ConfigRequested = 0; } } SILENT = 0; } /* show disclaimer */ if (ConfigRequested) { legal(); } #ifdef HW_RVL /* power button callback */ SYS_SetPowerCallback(PowerOff_cb); #endif /* reset button callback */ SYS_SetResetCallback(Reset_cb); /* main emulation loop */ run_emulation(); /* we should never return anyway */ return 0; }
int main (int argc, char *argv[]) { #ifdef HW_RVL /* initialize DVDX */ DI_Init(); #endif /* initialize hardware */ gx_video_Init(); gx_input_Init(); #ifdef HW_DOL DVD_Init (); dvd_drive_detect(); #endif /* initialize FAT devices */ if (fatInitDefault()) { /* check for default directories */ DIR_ITER *dir = NULL; /* base directory */ char pathname[MAXPATHLEN]; sprintf (pathname, DEFAULT_PATH); dir = diropen(pathname); if (dir == NULL) mkdir(pathname,S_IRWXU); else dirclose(dir); /* SRAM & Savestate files directory */ sprintf (pathname, "%s/saves",DEFAULT_PATH); dir = diropen(pathname); if (dir == NULL) mkdir(pathname,S_IRWXU); else dirclose(dir); /* Snapshot files directory */ sprintf (pathname, "%s/snaps",DEFAULT_PATH); dir = diropen(pathname); if (dir == NULL) mkdir(pathname,S_IRWXU); else dirclose(dir); /* Cheat files directory */ sprintf (pathname, "%s/cheats",DEFAULT_PATH); dir = diropen(pathname); if (dir == NULL) mkdir(pathname,S_IRWXU); else dirclose(dir); } /* initialize sound engine */ gx_audio_Init(); /* initialize core engine */ legal(); config_default(); history_default(); init_machine(); /* run any injected rom */ if (cart.romsize) { ARAMFetch((char *)cart.rom, (void *)0x8000, cart.romsize); reloadrom (cart.romsize,"INJECT.bin"); gx_video_Start(); gx_audio_Start(); frameticker = 1; } else { /* Main Menu */ ConfigRequested = 1; } /* initialize GUI engine */ GUI_Initialize(); #ifdef HW_RVL /* Power button callback */ SYS_SetPowerCallback(Power_Off); #endif /* main emulation loop */ while (1) { /* Main Menu request */ if (ConfigRequested) { /* stop video & audio */ gx_audio_Stop(); gx_video_Stop(); /* show menu */ MainMenu (); ConfigRequested = 0; /* start video & audio */ gx_audio_Start(); gx_video_Start(); frameticker = 1; } if (frameticker > 1) { /* skip frame */ system_frame(1); --frameticker; } else { while (frameticker < 1) usleep(10); /* render frame */ system_frame(0); --frameticker; /* update video */ gx_video_Update(); } /* update audio */ gx_audio_Update(); } return 0; }
int main(int argc, char* argv[]){ /* INITIALIZE */ #ifdef DEBUGON //DEBUG_Init(GDBSTUB_DEVICE_TCP,GDBSTUB_DEF_TCPPORT); //Default port is 2828 DEBUG_Init(GDBSTUB_DEVICE_USB, 1); _break(); #endif Initialise(); // Stock OGC initialization // vmode = VIDEO_GetPreferredMode(NULL); #ifndef WII DVD_Init(); #endif // menuInit(); #ifdef DEBUGON //DEBUG_Init(GDBSTUB_DEVICE_TCP,GDBSTUB_DEF_TCPPORT); //Default port is 2828 // DEBUG_Init(GDBSTUB_DEVICE_USB, 1); // _break(); #endif // Default Settings audioEnabled = 1; // Audio scalePitch = 1; #ifdef RELEASE showFPSonScreen = 0; // Show FPS on Screen #else showFPSonScreen = 1; // Show FPS on Screen #endif printToScreen = 1; // Show DEBUG text on screen printToSD = 0; // Disable SD logging Timers.limitVIs = 1; autoSave = 1; // Auto Save Game dynacore = 1; // Dynarec #ifndef HW_RVL screenMode = 0; // Stretch FB horizontally #else screenMode = CONF_GetAspectRatio() == CONF_ASPECT_16_9 ? SCREENMODE_16x9_PILLARBOX : SCREENMODE_4x3; #endif videoMode = VIDEOMODE_AUTO; trapFilter = TRAPFILTER_DISABLE; padAutoAssign = PADAUTOASSIGN_AUTOMATIC; padType[0] = PADTYPE_NONE; padType[1] = PADTYPE_NONE; padType[2] = PADTYPE_NONE; padType[3] = PADTYPE_NONE; padAssign[0] = PADASSIGN_INPUT0; padAssign[1] = PADASSIGN_INPUT1; padAssign[2] = PADASSIGN_INPUT2; padAssign[3] = PADASSIGN_INPUT3; pakMode[0] = PAKMODE_MEMPAK; // memPak plugged into controller 1 pakMode[1] = PAKMODE_MEMPAK; pakMode[2] = PAKMODE_MEMPAK; pakMode[3] = PAKMODE_MEMPAK; loadButtonSlot = LOADBUTTON_DEFAULT; #ifdef GLN64_GX // glN64 specific settings glN64_useFrameBufferTextures = 0; // Disable FrameBuffer textures glN64_use2xSaiTextures = 0; // Disable 2xSai textures renderCpuFramebuffer = 0; // Disable CPU Framebuffer Rendering #endif //GLN64_GX menuActive = 1; //config stuff fileBrowser_file* configFile_file; int (*configFile_init)(fileBrowser_file*) = fileBrowser_libfat_init; #ifdef HW_RVL if(argc > 0 && argv[0][0] == 'u') { //assume USB nativeSaveDevice = NATIVESAVEDEVICE_USB; saveStateDevice = SAVESTATEDEVICE_USB; configFile_file = &saveDir_libfat_USB; if(configFile_init(configFile_file)) { //only if device initialized ok FILE* f = fopen( "usb:/not64/settings.cfg", "r" ); //attempt to open file if(f) { //open ok, read it readConfig(f); fclose(f); } f = fopen( "usb:/not64/controlG.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_GC); //write out GC controller mappings fclose(f); } #ifdef HW_RVL f = fopen( "usb:/not64/controlC.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Classic); //write out Classic controller mappings fclose(f); } f = fopen( "usb:/not64/controlN.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_WiimoteNunchuk); //write out WM+NC controller mappings fclose(f); } f = fopen( "usb:/not64/controlW.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Wiimote); //write out Wiimote controller mappings fclose(f); } #endif //HW_RVL } } else /*if((argv[0][0]=='s') || (argv[0][0]=='/'))*/ #endif { //assume SD nativeSaveDevice = NATIVESAVEDEVICE_SD; saveStateDevice = SAVESTATEDEVICE_SD; configFile_file = &saveDir_libfat_Default; if(configFile_init(configFile_file)) { //only if device initialized ok FILE* f = fopen( "sd:/not64/settings.cfg", "r" ); //attempt to open file if(f) { //open ok, read it readConfig(f); fclose(f); } f = fopen( "sd:/not64/controlG.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_GC); //write out GC controller mappings fclose(f); } #ifdef HW_RVL f = fopen( "sd:/not64/controlC.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Classic); //write out Classic controller mappings fclose(f); } f = fopen( "sd:/not64/controlN.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_WiimoteNunchuk); //write out WM+NC controller mappings fclose(f); } f = fopen( "sd:/not64/controlW.cfg", "r" ); //attempt to open file if(f) { load_configurations(f, &controller_Wiimote); //write out Wiimote controller mappings fclose(f); } #endif //HW_RVL } } // Handle options passed in through arguments int i; for(i=1; i<argc; ++i){ handleConfigPair(argv[i]); } MenuContext *menu = new MenuContext(vmode); // Initialize the network if the user has specified something in their SMB settings if(strlen(&smbShareName[0]) && strlen(&smbIpAddr[0])) { init_network_thread(); } while (menu->isRunning()) {} delete menu; return 0; }