inline void Initialization_All(void) { init_outpin(); AdcInit(); GlobalTimerInit(); Button_Init(); init_meandr__gpio(); init_meandr_timer(); Init_Uart3(); //TIM3_IRQHandler(); NVIC_InitTypeDef NVIC_InitStructure_usart3; NVIC_InitStructure_usart3.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure_usart3.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure_usart3.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure_usart3.NVIC_IRQChannelCmd = ENABLE; NVIC_Init (&NVIC_InitStructure_usart3); USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //state_err=2; //USART_ITConfig(USART3, USART_IT_ERR, ENABLE); USART_ITConfig(USART3, USART_IT_TC, DISABLE); // NVIC_conf(); display.a.port = GPIOH; display.b.port = GPIOC; display.c.port = GPIOE; display.d.port = GPIOE; display.e.port = GPIOE; display.f.port = GPIOE; display.g.port = GPIOB; display.common[0].port = GPIOC; display.common[1].port = GPIOC; display.common[2].port = GPIOH; display.dot.port = GPIOB; display.a.pin = GPIO_Pin_0; display.b.pin = GPIO_Pin_14; display.c.pin = GPIO_Pin_6; display.d.pin = GPIO_Pin_4; display.e.pin = GPIO_Pin_2; display.f.pin = GPIO_Pin_0; display.g.pin = GPIO_Pin_8; display.common[0].pin = GPIO_Pin_13; display.common[1].pin = GPIO_Pin_15; display.common[2].pin = GPIO_Pin_1; display.dot.pin = GPIO_Pin_6; DI_Init(&display); }
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; }
int main(int argc, char *argv[]) { s32 res; #if defined(USE_WII_DI) && !defined(GAMECUBE) DI_Init(); #endif VIDEO_Init(); PAD_Init(); DSP_Init(); AUDIO_Init(NULL); gfx_video_init(NULL); gfx_init(); gfx_con_init(NULL); #ifdef DEBUG_WII_GDB DEBUG_Init(GDBSTUB_DEVICE_USB, 1); #endif printf("startup as "); if (argc > 0) printf("'%s'\n", argv[0]); else printf("<unknown>\n"); SYS_RegisterResetFunc(&resetinfo); SYS_SetResetCallback(reset_cb); #ifndef GAMECUBE SYS_SetPowerCallback(power_cb); #endif if (!fatInitDefault()) { printf("fatInitDefault failed\n"); } else { // set the default path if libfat couldnt set it // this allows loading over tcp/usbgecko char cwd[MAXPATHLEN]; if (getcwd(cwd, MAXPATHLEN)) { size_t len = strlen(cwd); if (len > 2 && (cwd[len - 1] == ':' || cwd[len - 2] == ':')) { printf("chdir to default\n"); chdir("/apps/scummvm"); } } } g_system = new OSystem_Wii(); assert(g_system); #ifdef DYNAMIC_MODULES PluginManager::instance().addPluginProvider(new WiiPluginProvider()); #endif res = scummvm_main(argc, argv); g_system->quit(); printf("shutdown\n"); SYS_UnregisterResetFunc(&resetinfo); fatUnmountDefault(); if (res) show_console(res); if (power_btn_pressed) { printf("shutting down\n"); SYS_ResetSystem(SYS_POWEROFF, 0, 0); } printf("reloading\n"); gfx_con_deinit(); gfx_deinit(); gfx_video_deinit(); return res; }
void ProcessArgs(int argc, char **argv, int boothbdirect) { int i; s32 retval; u32 bootcode = launchcode & ~(0xff<<24);//Mask out the high 8-bits of launchcode, since that's used for options etc. char *path = (char*)0x900FFF00; void (*entry)() = (void*)0x80001800; u64 nandboot_titleid; YellHttp_Ctx *ctx; int use_wc24http = 0; u32 index; FILE *fdol; struct stat dolstats; if(!fatInitDefault())printf("FAT init failed.\n"); printf("Processing args...\n"); #ifndef WIILOADAPPDEBUG if(argc && !boothbdirect) { sscanf(argv[0], "%016llx", &nandboot_titleid); if(curtitleid!=nandboot_titleid) { printf("Current titleID and titleID from NANDBOOTINFO don't match: %016llx %s\n", curtitleid, argv[0]); argc = 0; } } #endif if(argc) { if(boothbdirect)launchcode = 1; if(launchcode & BIT(24))use_wc24http = 1; switch(bootcode) { case 1://Boot homebrew if(argc<2)break; if(!boothbdirect)printf("Booting homebrew from: %s\n", argv[1]); memcpy((void*)0x80001800, loader_bin, loader_bin_size); memset(path, 0, 256); if(!boothbdirect) { if(strncmp(argv[1], "http", 4)==0) { if(!use_wc24http) { printf("Using libyellhttp to download: %s\n", argv[1]); memset(localip, 0, 16); memset(netmask, 0, 16); memset(gateway, 0, 16); printf("Initializing network...\n"); retval = if_config (localip, netmask, gateway, true); if(retval<0) { printf("Network init failed: %d\n", retval); break; } ctx = YellHttp_InitCtx(); if(ctx==NULL) { printf("Failed to init/alloc http ctx.\n"); break; } printf("Downloading %s...\n", argv[1]); if(launchcode & BIT(26)) { WC24_MountWC24DlVFF(); chdir("wc24dl.vff:/"); } retval = YellHttp_ExecRequest(ctx, argv[1]); YellHttp_FreeCtx(ctx); if(retval<0) { memset(errstr, 0, 256); YellHttp_GetErrorStr(retval, errstr, 256); printf("retval = %d str: %s", retval, errstr); break; } for(i=strlen(argv[1])-1; i>0; i--) { if(argv[1][i]=='/')break; } i++; if(launchcode & BIT(26))strncpy(path, "wc24dl.vff:", 255); strncat(path, &argv[1][i], 255); } else { printf("Using WC24 to download: %s\n", argv[1]); printf("Creating record+entry...\n"); retval = WC24_CreateRecord(&myrec, &myent, 0, 0, 0x4842, WC24_TYPE_TITLEDATA, WC24_RECORD_FLAGS_DEFAULT, WC24_FLAGS_HB, 0x3c, 0x5a0, 0, argv[1], VFFPATH "boot.dol"); if(retval<0) { printf("WC24_CreateRecord returned %d\n", retval); WC24_Shutdown(); break; } index = retval; printf("Downloading...\n"); retval = KD_Download(KD_DOWNLOADFLAGS_MANUAL, (u16)index, 0x0); if(retval<0) { printf("KD_Download returned %d\n", retval); WC24_DeleteRecord(index); WC24_Shutdown(); break; } printf("Deleting record+entry...\n"); WC24_DeleteRecord(index); printf("Mounting VFF...\n"); retval = WC24_MountWC24DlVFF(); if(retval<0) { printf("WC24_MountWC24DlVFF returned %d\n", retval); WC24_Shutdown(); break; } printf("Reading wc24dl.vff:/" VFFPATH "boot.dol...\n"); fdol = fopen("wc24dl.vff:/" VFFPATH "boot.dol", "r"); if(fdol==NULL) { printf("Failed to open wc24dl.vff:/" VFFPATH "boot.dol\n"); } else { stat("wc24dl.vff:/" VFFPATH "boot.dol", &dolstats); dol_size = dolstats.st_size; fread((void*)0x90100000, 1, dolstats.st_size, fdol); fclose(fdol); unlink("wc24dl.vff:/" VFFPATH "boot.dol"); DCFlushRange((void*)0x90100000, dolstats.st_size); } printf("Unmounting VFF...\n"); VFF_Unmount("wc24dl.vff"); memset(path, 0, 256); boothbdirect = 1; WII_SetNANDBootInfoLaunchcode(0); } } else { strncpy(path, argv[1], 255); } if(!use_wc24http) { if(strncmp(path, "dvd", 3)==0) { DI_Init(); if(!ISO9660_Mount()) { printf("Failed to mount DVD ISO9660.\n"); DI_Close(); break; } } stat(path, &dolstats); dol_size = dolstats.st_size; fdol = fopen(path, "r"); if(fdol==NULL) { printf("Dol doesn't exist: %s\n", argv[1]); break; } else { fread((void*)0x90100000, 1, dol_size, fdol); DCFlushRange((void*)0x90100000, dol_size); fclose(fdol); } memset(path, 0, 256); if(strncmp(path, "dvd", 3)==0) { ISO9660_Unmount(); DI_Close(); } if(launchcode & BIT(26)) { unlink(path); VFF_Unmount("wc24dl.vff"); } } } SetDolArgv((void*)0x90100000, dol_size, argc, argv); DCFlushRange((void*)0x80001800, loader_bin_size); DCFlushRange(path, 256); if(!boothbdirect)WII_SetNANDBootInfoLaunchcode(0); if(!boothbdirect) { printf("Booting: %s\n", path); } else { printf("Booting homebrew directly from RAM buffer.\n"); } WC24_Shutdown(); WPAD_Shutdown(); FlushLog(); //IOS_ReloadIOS(36); SYS_ResetSystem(SYS_SHUTDOWN, 0, 0); entry(); break; case 2://Boot game disc memcpy((void*)0x80001800, loader_bin, loader_bin_size); memset(path, 0, 256); memcpy((void*)0x90100000, tinyload_dol, tinyload_dol_size); DCFlushRange((void*)0x80001800, loader_bin_size); DCFlushRange(path, 256); DCFlushRange((void*)0x90100000, tinyload_dol_size); WII_SetNANDBootInfoLaunchcode(0); WC24_Shutdown(); WPAD_Shutdown(); printf("Booting game disc.\n"); FlushLog(); entry(); break; default: break; } } printf("Invalid launchcode or argc: %x %x\n", launchcode, argc); #ifdef DEBUG printf("Press A to contine.\n"); while(1) { WPAD_ScanPads(); if(WPAD_ButtonsDown(0) & WPAD_BUTTON_A)break; VIDEO_WaitVSync(); } #endif printf("Shutting down...\n"); printf("Shutting down WC24...\n"); if(launchcode & BIT(26))VFF_Unmount("wc24dl.vff"); WC24_Shutdown(); FlushLog(); WPAD_Shutdown(); WII_Shutdown(); }
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[]) { s32 res; #ifdef USE_WII_DI DI_Init(); #endif VIDEO_Init(); PAD_Init(); AUDIO_Init(NULL); #ifdef DEBUG_WII_USBGECKO CON_EnableGecko(1, false); #endif #ifdef DEBUG_WII_GDB DEBUG_Init(GDBSTUB_DEVICE_USB, 1); #endif printf("startup as "); if (argc > 0) printf("'%s'\n", argv[0]); else printf("<unknown>\n"); SYS_SetResetCallback(reset_cb); #ifndef GAMECUBE SYS_SetPowerCallback(power_cb); #endif #ifdef USE_WII_DI // initial async mount for the browser, see wii-fs.cpp DI_Mount(); #endif if (!fatInitDefault()) { printf("fatInitDefault failed\n"); } else { // set the default path if libfat couldnt set it // this allows loading over tcp/usbgecko char cwd[MAXPATHLEN]; if (getcwd(cwd, MAXPATHLEN)) { size_t len = strlen(cwd); if (len > 2 && (cwd[len - 1] == ':' || cwd[len - 2] == ':')) { printf("chdir to default\n"); chdir("/apps/scummvm"); } } } g_system = new OSystem_Wii(); assert(g_system); res = scummvm_main(argc, argv); g_system->quit(); printf("shutdown\n"); fatUnmountDefault(); #ifdef USE_WII_DI DI_Close(); #endif if (power_btn_pressed) { printf("shutting down\n"); SYS_ResetSystem(SYS_POWEROFF, 0, 0); } printf("reloading\n"); return res; }
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; }
// //function: di_set_init(void) //description: set di module default register to ready de-interlace //parameters: //return : int di_set_init(void) { DI_Init(); 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 } } } }
/*************************************************************************** * 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; }