+ if (argc > 1 && !last_arg_parsed)
+ {
+ strncpy(lastLoadedGameName, argv[argc-1], sizeof(lastLoadedGameName));
+ lastLoadedGameName[sizeof(lastLoadedGameName)-1] = 0;
+ Exit = 0;
+ }
+ else
+ {
+ Exit = 1;
+ }
+
+ while (1)
+ {
+ if(!Exit)
+ {
+ if (fceugi)
+ CloseGame();
+ fceugi=FCEUI_LoadGame(lastLoadedGameName);
+ if (fceugi)
+ {
+ LoadConfig(lastLoadedGameName);
+ if (Settings.region_force)
+ FCEUI_SetVidSystem(Settings.region_force - 1);
+ ParseGI(fceugi);
+ //RefreshThrottleFPS();
+ InitOtherInput();
+
+ // additional print for gpfce
+ // TODO: handlers for other formats then iNES
+ {
+ int MapperNo;
+ iNES_HEADER *head = iNESGetHead(); // TODO: ReMake
+ MapperNo = (head->ROM_type>>4);
+ MapperNo|=(head->ROM_type2&0xF0);
+ FCEU_DispMessage("%s, Mapper: %d%s%s", PAL?"PAL":"NTSC", MapperNo, (head->ROM_type&2)?", BB":"", (head->ROM_type&4)?", T":"");
+ }
+ }
+ else
+ {
+ switch(LoadGameLastError) {
+ default: strcpy(menuErrorMsg, "failed to load ROM"); break;
+ case 2: strcpy(menuErrorMsg, "Can't find a ROM for 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;
+ }
+ }
+
+ PrepareOtherInput();
+ gp2x_video_changemode(Settings.scaling == 3 ? 15 : 8);
+ switch (Settings.scaling & 3) {
+ case 0: gp2x_video_RGB_setscaling(0, 320, 240); gp2x_video_set_offs(0); break;
+ case 1: gp2x_video_RGB_setscaling(0, 256, 240); gp2x_video_set_offs(32); break;
+ case 2: gp2x_video_RGB_setscaling(0, 256, 240); gp2x_video_set_offs(32); break; // TODO
+ case 3: gp2x_video_RGB_setscaling(0, 320, 240); gp2x_video_set_offs(32); break;
+ }
+ gp2x_start_sound(Settings.sound_rate, 16, 0);
+ FCEUI_Emulate();
+ }
+
+ if (fceugi)
+ CloseGame();