+ while (1)
+ {
+ if(!Exit)
+ {
+ if (fceugi)
+ CloseGame();
+ ret=LoadConfig(lastLoadedGameName);
+ if (ret != 0)
+ {
+ LoadConfig(NULL);
+ }
+ FCEUI_SetEmuMode(Settings.accurate_mode);
+ fceugi=FCEUI_LoadGame(lastLoadedGameName);
+ if (fceugi)
+ {
+ char infostring[32];
+ if (Settings.region_force)
+ FCEUI_SetVidSystem(Settings.region_force - 1);
+ ParseGI(fceugi);
+ InitOtherInput();
+
+ if ((eoptions&EO_GG) && geniestage == 0) {
+ strcpy(infostring, "gg.rom is missing, GG disabled");
+ eoptions&=~EO_GG;
+ FCEUI_SetGameGenie(0);
+ } else
+ GameInterface(GI_INFOSTRING, infostring);
+ FCEU_DispMessage("%s", infostring);
+ }
+ else
+ {
+ switch(LoadGameLastError) {
+ default: strcpy(menuErrorMsg, "failed to load ROM"); break;
+ case 2: strcpy(menuErrorMsg, "Can't find a ROM for ips/movie"); break;
+ case 10: strcpy(menuErrorMsg, "FDS BIOS ROM is missing, read docs"); break;
+ case 11: strcpy(menuErrorMsg, "Error reading auxillary FDS file"); break;
+ }
+ }
+ }
+ if(Exit || !fceugi)
+ {
+ int ret;
+ ret = gp2x_menu_do();
+ if (ret == 1) break; // exit emu
+ if (ret == 2) { // reload ROM
+ Exit = 0;
+ continue;
+ }
+ }
+
+ gp2x_opt_update();
+ PrepareOtherInput();
+ FCEUI_GetCurrentVidSystem(&srendline,&erendline);
+ gp2x_video_changemode(Settings.scaling == 3 ? 15 : 8);
+ switch (Settings.scaling & 3) {
+ case 0: gp2x_video_set_offs(0); gp2x_video_RGB_setscaling(320, 240); break;
+ case 1: gp2x_video_set_offs(32); gp2x_video_RGB_setscaling(256, 240); break;
+ case 2: gp2x_video_set_offs(32+srendline*320); gp2x_video_RGB_setscaling(256, erendline-srendline); break;
+ case 3: gp2x_video_set_offs(32); gp2x_video_RGB_setscaling(320, 240); break;
+ }
+ CleanSurface();
+ gp2x_start_sound(Settings.sound_rate, 16, 0);
+ RefreshThrottleFPS();
+ FCEUI_Emulate();
+ }
+
+ if (fceugi)
+ CloseGame();
+
+ SaveLLGN();
+ FCEUI_Kill();