/** * Save screen shot file with filename 'grab0000.<ext>','grab0001.<ext>'... * Whether screen shots are saved as BMP or PNG depends on Hatari configuration. */ void ScreenSnapShot_SaveScreen(void) { char *szFileName = malloc(FILENAME_MAX); if (!szFileName) return; ScreenSnapShot_GetNum(); /* Create our filename */ nScreenShots++; #if HAVE_LIBPNG /* try first PNG */ sprintf(szFileName,"%s/grab%4.4d.png", Paths_GetWorkingDir(), nScreenShots); if (ScreenSnapShot_SavePNG(sdlscrn, szFileName) == 0) { fprintf(stderr, "Screen dump saved to: %s\n", szFileName); free(szFileName); return; } #endif sprintf(szFileName,"%s/grab%4.4d.bmp", Paths_GetWorkingDir(), nScreenShots); if (SDL_SaveBMP(sdlscrn, szFileName)) fprintf(stderr, "Screen dump failed!\n"); else fprintf(stderr, "Screen dump saved to: %s\n", szFileName); free(szFileName); }
/** * Scan working directory to get the screenshot number */ static void ScreenSnapShot_GetNum(void) { char dummy[5]; int i, num; DIR *workingdir = opendir(Paths_GetWorkingDir()); struct dirent *file; nScreenShots = 0; if (workingdir == NULL) return; file = readdir(workingdir); while (file != NULL) { if ( strncmp("grab", file->d_name, 4) == 0 ) { /* copy next 4 numbers */ for (i = 0; i < 4; i++) { if (file->d_name[4+i] >= '0' && file->d_name[4+i] <= '9') dummy[i] = file->d_name[4+i]; else break; } dummy[i] = '\0'; /* null terminate */ num = atoi(dummy); if (num > nScreenShots) nScreenShots = num; } /* next file.. */ file = readdir(workingdir); } closedir(workingdir); }
/** * Set default configuration values. */ void Configuration_SetDefault(void) { int i; const char *psHomeDir; const char *psWorkingDir; psHomeDir = Paths_GetPreviousHome(); psWorkingDir = Paths_GetWorkingDir(); /* Clear parameters */ memset(&ConfigureParams, 0, sizeof(CNF_PARAMS)); /* Set defaults for logging and tracing */ strcpy(ConfigureParams.Log.sLogFileName, "stderr"); strcpy(ConfigureParams.Log.sTraceFileName, "stderr"); ConfigureParams.Log.nTextLogLevel = LOG_TODO; ConfigureParams.Log.nAlertDlgLogLevel = LOG_ERROR; ConfigureParams.Log.bConfirmQuit = true; /* Set defaults for config dialog */ ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = true; /* Set defaults for debugger */ ConfigureParams.Debugger.nNumberBase = 10; ConfigureParams.Debugger.nDisasmLines = 8; ConfigureParams.Debugger.nMemdumpLines = 8; /* Set defaults for Boot options */ ConfigureParams.Boot.nBootDevice = BOOT_ROM; ConfigureParams.Boot.bEnableDRAMTest = false; ConfigureParams.Boot.bEnablePot = true; ConfigureParams.Boot.bEnableSoundTest = true; ConfigureParams.Boot.bEnableSCSITest = true; ConfigureParams.Boot.bLoopPot = false; ConfigureParams.Boot.bVerbose = true; ConfigureParams.Boot.bExtendedPot = false; /* Set defaults for SCSI disks */ for (i = 0; i < ESP_MAX_DEVS; i++) { strcpy(ConfigureParams.SCSI.target[i].szImageName, psWorkingDir); ConfigureParams.SCSI.target[i].nDeviceType = DEVTYPE_NONE; ConfigureParams.SCSI.target[i].bDiskInserted = false; ConfigureParams.SCSI.target[i].bWriteProtected = false; } ConfigureParams.SCSI.nWriteProtection = WRITEPROT_OFF; /* Set defaults for MO drives */ for (i = 0; i < MO_MAX_DRIVES; i++) { strcpy(ConfigureParams.MO.drive[i].szImageName, psWorkingDir); ConfigureParams.MO.drive[i].bDriveConnected = false; ConfigureParams.MO.drive[i].bDiskInserted = false; ConfigureParams.MO.drive[i].bWriteProtected = false; } /* Set defaults for floppy drives */ for (i = 0; i < FLP_MAX_DRIVES; i++) { strcpy(ConfigureParams.Floppy.drive[i].szImageName, psWorkingDir); ConfigureParams.Floppy.drive[i].bDriveConnected = false; ConfigureParams.Floppy.drive[i].bDiskInserted = false; ConfigureParams.Floppy.drive[i].bWriteProtected = false; } /* Set defaults for Ethernet */ ConfigureParams.Ethernet.bEthernetConnected = false; /* Set defaults for Keyboard */ ConfigureParams.Keyboard.bDisableKeyRepeat = false; ConfigureParams.Keyboard.bSwapCmdAlt = false; ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE; strcpy(ConfigureParams.Keyboard.szMappingFileName, ""); /* Set defaults for Mouse */ ConfigureParams.Mouse.fLinSpeedNormal = 1.0; ConfigureParams.Mouse.fLinSpeedLocked = 1.0; ConfigureParams.Mouse.fExpSpeedNormal = 1.0; ConfigureParams.Mouse.fExpSpeedLocked = 1.0; ConfigureParams.Mouse.bEnableAutoGrab = true; /* Set defaults for Shortcuts */ ConfigureParams.Shortcut.withoutModifier[SHORTCUT_OPTIONS] = SDLK_F12; ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FULLSCREEN] = SDLK_F11; ConfigureParams.Shortcut.withModifier[SHORTCUT_PAUSE] = SDLK_p; ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_M68K] = SDLK_d; ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_I860] = SDLK_i; ConfigureParams.Shortcut.withModifier[SHORTCUT_OPTIONS] = SDLK_o; ConfigureParams.Shortcut.withModifier[SHORTCUT_FULLSCREEN] = SDLK_f; ConfigureParams.Shortcut.withModifier[SHORTCUT_MOUSEGRAB] = SDLK_m; ConfigureParams.Shortcut.withModifier[SHORTCUT_COLDRESET] = SDLK_c; ConfigureParams.Shortcut.withModifier[SHORTCUT_WARMRESET] = SDLK_r; ConfigureParams.Shortcut.withModifier[SHORTCUT_CURSOREMU] = SDLK_j; ConfigureParams.Shortcut.withModifier[SHORTCUT_SOUND] = SDLK_s; ConfigureParams.Shortcut.withModifier[SHORTCUT_QUIT] = SDLK_q; ConfigureParams.Shortcut.withModifier[SHORTCUT_DIMENSION] = SDLK_n; /* Set defaults for Memory */ memset(ConfigureParams.Memory.nMemoryBankSize, 16, sizeof(ConfigureParams.Memory.nMemoryBankSize)); /* 64 MiB */ ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS; /* Set defaults for Printer */ ConfigureParams.Printer.bPrinterConnected = false; ConfigureParams.Printer.nPaperSize = PAPER_A4; sprintf(ConfigureParams.Printer.szPrintToFileName, "%s%c", psHomeDir, PATHSEP); /* Set defaults for Screen */ ConfigureParams.Screen.bFullScreen = false; ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_CPU; ConfigureParams.Screen.bShowStatusbar = true; ConfigureParams.Screen.bShowDriveLed = true; /* Set defaults for Sound */ ConfigureParams.Sound.bEnableMicrophone = true; ConfigureParams.Sound.bEnableSound = true; /* Set defaults for Rom */ sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN", Paths_GetWorkingDir(), PATHSEP); sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN", Paths_GetWorkingDir(), PATHSEP); sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN", Paths_GetWorkingDir(), PATHSEP); /* Set defaults for System */ ConfigureParams.System.nMachineType = NEXT_CUBE030; ConfigureParams.System.bColor = false; ConfigureParams.System.bTurbo = false; ConfigureParams.System.bNBIC = true; ConfigureParams.System.nSCSI = NCR53C90; ConfigureParams.System.nRTC = MC68HC68T1; ConfigureParams.System.nCpuLevel = 3; ConfigureParams.System.nCpuFreq = 25; ConfigureParams.System.bCompatibleCpu = true; ConfigureParams.System.bRealtime = false; ConfigureParams.System.nDSPType = DSP_TYPE_EMU; ConfigureParams.System.bDSPMemoryExpansion = false; ConfigureParams.System.bRealTimeClock = true; ConfigureParams.System.n_FPUType = FPU_68882; ConfigureParams.System.bCompatibleFPU = true; ConfigureParams.System.bMMU = true; /* Set defaults for Dimension */ ConfigureParams.Dimension.bI860Thread = host_num_cpus() > 4; ConfigureParams.Dimension.bEnabled = false; ConfigureParams.Dimension.bMainDisplay = false; ConfigureParams.Dimension.nMemoryBankSize[0] = 4; ConfigureParams.Dimension.nMemoryBankSize[1] = 4; ConfigureParams.Dimension.nMemoryBankSize[2] = 4; ConfigureParams.Dimension.nMemoryBankSize[3] = 4; sprintf(ConfigureParams.Dimension.szRomFileName, "%s%cdimension_eeprom.bin", Paths_GetWorkingDir(), PATHSEP); /* Initialize the configuration file name */ if (strlen(psHomeDir) < sizeof(sConfigFileName)-13) sprintf(sConfigFileName, "%s%cprevious.cfg", psHomeDir, PATHSEP); else strcpy(sConfigFileName, "previous.cfg"); #if defined(__AMIGAOS4__) /* Fix default path names on Amiga OS */ sprintf(ConfigureParams.Rom.szRom030FileName, "%sRev_1.0_v41.BIN", Paths_GetWorkingDir()); sprintf(ConfigureParams.Rom.szRom040FileName, "%sRev_2.5_v66.BIN", Paths_GetWorkingDir()); sprintf(ConfigureParams.Rom.szRom040FileName, "%sRev_3.3_v74.BIN", Paths_GetWorkingDir()); #endif }
/** * Show and process a file selection dialog. * Returns path/name user selected or NULL if user canceled * input: zip_path = pointer's pointer to buffer to contain file path * within a selected zip file, or NULL if browsing zip files is disallowed. * bAllowNew: true if the user is allowed to insert new file names. */ char* SDLGui_FileSelect(const char *path_and_name, char **zip_path, bool bAllowNew) { struct dirent **files = NULL; char *pStringMem; char *retpath = NULL; const char *home; char *path, *fname; /* The actual file and path names */ bool reloaddir = true; /* Do we have to reload the directory file list? */ int retbut; bool bOldMouseVisibility; int selection; /* The selection index */ char *zipfilename; /* Filename in zip file */ char *zipdir; bool browsingzip = false; /* Are we browsing an archive? */ zip_dir *zipfiles = NULL; SDL_Event sdlEvent; int yScrollbar_size; /* Size of the vertical scrollbar */ /* If this is the first call to SDLGui_FileSelect, we reset scrollbar_Ypos and ypos */ /* Else, we keep the previous value of scrollbar_Ypos and update ypos below, to open */ /* the fileselector at the same position it was used */ if ( ypos < 0 ) { scrollbar_Ypos = 0.0; ypos = 0; } refreshentries = true; entries = 0; /* Allocate memory for the file and path name strings: */ pStringMem = malloc(4 * FILENAME_MAX); path = pStringMem; fname = pStringMem + FILENAME_MAX; zipdir = pStringMem + 2 * FILENAME_MAX; zipfilename = pStringMem + 3 * FILENAME_MAX; zipfilename[0] = 0; fname[0] = 0; path[0] = 0; /* Save mouse state and enable cursor */ bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY); SDL_ShowCursor(SDL_ENABLE); SDLGui_CenterDlg(fsdlg); if (bAllowNew) { fsdlg[SGFSDLG_FILENAME].type = SGEDITFIELD; fsdlg[SGFSDLG_FILENAME].flags |= SG_EXIT; } else { fsdlg[SGFSDLG_FILENAME].type = SGTEXT; fsdlg[SGFSDLG_FILENAME].flags &= ~SG_EXIT; } /* Prepare the path and filename variables */ if (path_and_name && path_and_name[0]) { strncpy(path, path_and_name, FILENAME_MAX); path[FILENAME_MAX-1] = '\0'; } if (!File_DirExists(path)) { File_SplitPath(path, path, fname, NULL); if (!(File_DirExists(path) || getcwd(path, FILENAME_MAX))) { perror("SDLGui_FileSelect: non-existing path and CWD failed"); goto clean_exit; } } File_MakeAbsoluteName(path); File_MakeValidPathName(path); File_ShrinkName(dlgpath, path, DLGPATH_SIZE); File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE); do { if (reloaddir) { files = files_free(files); if (browsingzip) { files = ZIP_GetFilesDir(zipfiles, zipdir, &entries); if(!files) { fprintf(stderr, "SDLGui_FileSelect: ZIP_GetFilesDir error!\n"); goto clean_exit; } } else { /* Load directory entries: */ entries = scandir(path, &files, 0, alphasort); } /* Remove hidden files from the list if necessary: */ if (!(fsdlg[SGFSDLG_SHOWHIDDEN].state & SG_SELECTED)) { DlgFileSelect_RemoveHiddenFiles(files); } if (entries < 0) { fprintf(stderr, "SDLGui_FileSelect: Path not found.\n"); goto clean_exit; } /* reload always implies refresh */ reloaddir = false; refreshentries = true; }/* reloaddir */ /* Refresh scrollbar size */ if (entries <= SGFS_NUMENTRIES) yScrollbar_size = (SGFS_NUMENTRIES-2) * sdlgui_fontheight; else { yScrollbar_size = (int)((SGFS_NUMENTRIES-2) / ((float)entries/(float)SGFS_NUMENTRIES) * sdlgui_fontheight); if ( yScrollbar_size < SCROLLBAR_MIN_HEIGHT ) /* Value could be 0 for very large directory */ yScrollbar_size = SCROLLBAR_MIN_HEIGHT; } fsdlg[SGFSDLG_SCROLLBAR].w = yScrollbar_size; /* Refresh scrolbar pos */ ypos = (int) (scrollbar_Ypos * ((float)entries/(float)(SGFS_NUMENTRIES-2)) + 0.5); if (ypos+SGFS_NUMENTRIES >= entries) { /* Ensure Y pos is in the correct boundaries */ ypos = entries - SGFS_NUMENTRIES; if ( ypos < 0 ) ypos = 0; DlgFileSelect_Convert_ypos_to_scrollbar_Ypos(); } fsdlg[SGFSDLG_SCROLLBAR].h = (int) (scrollbar_Ypos * sdlgui_fontheight); /* Update the file name strings in the dialog? */ if (refreshentries) { if (!DlgFileSelect_RefreshEntries(files, path, browsingzip)) { goto clean_exit; } refreshentries = false; } /* Show dialog: */ retbut = SDLGui_DoDialog(fsdlg, &sdlEvent); /* Has the user clicked on a file or folder? */ if (retbut>=SGFSDLG_ENTRYFIRST && retbut<=SGFSDLG_ENTRYLAST && retbut-SGFSDLG_ENTRYFIRST+ypos<entries) { char *tempstr; tempstr = malloc(FILENAME_MAX); if (!tempstr) { perror("Error while allocating temporary memory in SDLGui_FileSelect()"); goto clean_exit; } if (browsingzip == true) { if (!strcat_maxlen(tempstr, FILENAME_MAX, zipdir, files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name)) { fprintf(stderr, "SDLGui_FileSelect: Path name too long!\n"); goto clean_exit; } /* directory? */ if (File_DoesFileNameEndWithSlash(tempstr)) { /* handle the ../ directory */ if (strcmp(files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name, "../") == 0) { /* close the zip file */ if (strcmp(tempstr, "../") == 0) { /* free zip file entries */ ZIP_FreeZipDir(zipfiles); zipfiles = NULL; /* Copy the path name to the dialog */ File_ShrinkName(dlgpath, path, DLGPATH_SIZE); browsingzip = false; } else { /* remove "../" and previous dir from path */ File_PathShorten(tempstr, 2); correct_zip_root(tempstr); strcpy(zipdir, tempstr); File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE); } } else /* not the "../" directory */ { strcpy(zipdir, tempstr); File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE); } reloaddir = true; /* Copy the path name to the dialog */ zipfilename[0] = '\0'; dlgfname[0] = 0; ypos = 0; scrollbar_Ypos = 0.0; } else { /* not dir, select a file in the zip */ selection = retbut-SGFSDLG_ENTRYFIRST+ypos; strcpy(zipfilename, files[selection]->d_name); File_ShrinkName(dlgfname, zipfilename, DLGFNAME_SIZE); } } else /* not browsingzip */ { if (!strcat_maxlen(tempstr, FILENAME_MAX, path, files[retbut-SGFSDLG_ENTRYFIRST+ypos]->d_name)) { fprintf(stderr, "SDLGui_FileSelect: Path name too long!\n"); goto clean_exit; } if (File_DirExists(tempstr)) { File_HandleDotDirs(tempstr); File_AddSlashToEndFileName(tempstr); /* Copy the path name to the dialog */ File_ShrinkName(dlgpath, tempstr, DLGPATH_SIZE); strcpy(path, tempstr); reloaddir = true; dlgfname[0] = 0; ypos = 0; scrollbar_Ypos = 0.0; } else if (ZIP_FileNameIsZIP(tempstr) && zip_path != NULL) { /* open a zip file */ zipfiles = ZIP_GetFiles(tempstr); if (zipfiles != NULL && browsingzip == false) { selection = retbut-SGFSDLG_ENTRYFIRST+ypos; strcpy(fname, files[selection]->d_name); File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE); browsingzip = true; zipdir[0] = '\0'; /* zip root */ File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE); reloaddir = true; ypos = 0; scrollbar_Ypos = 0.0; } } else { /* Select a file */ selection = retbut-SGFSDLG_ENTRYFIRST+ypos; strcpy(fname, files[selection]->d_name); File_ShrinkName(dlgfname, fname, DLGFNAME_SIZE); } } /* not browsingzip */ free(tempstr); } else /* Has the user clicked on another button? */ { switch(retbut) { case SGFSDLG_UPDIR: /* Change path to parent directory */ if (browsingzip) { /* close the zip file? */ if (!zipdir[0]) { /* free zip file entries */ ZIP_FreeZipDir(zipfiles); browsingzip = false; zipfiles = NULL; File_ShrinkName(dlgpath, path, DLGPATH_SIZE); } else { /* remove last dir from zipdir path */ File_PathShorten(zipdir, 1); correct_zip_root(zipdir); File_ShrinkName(dlgpath, zipdir, DLGPATH_SIZE); zipfilename[0] = '\0'; } } /* not a zip file: */ else { File_PathShorten(path, 1); File_ShrinkName(dlgpath, path, DLGPATH_SIZE); } reloaddir = true; break; case SGFSDLG_HOMEDIR: /* Change to home directory */ case SGFSDLG_CWD: /* Change to current work directory */ if (retbut == SGFSDLG_CWD) home = Paths_GetWorkingDir(); else home = Paths_GetUserHome(); if (home == NULL || !*home) break; if (browsingzip) { /* free zip file entries */ ZIP_FreeZipDir(zipfiles); zipfiles = NULL; browsingzip = false; } strcpy(path, home); File_AddSlashToEndFileName(path); File_ShrinkName(dlgpath, path, DLGPATH_SIZE); reloaddir = true; break; case SGFSDLG_ROOTDIR: /* Change to root directory */ if (browsingzip) { /* free zip file entries */ ZIP_FreeZipDir(zipfiles); zipfiles = NULL; browsingzip = false; } path[0] = PATHSEP; path[1] = '\0'; strcpy(dlgpath, path); reloaddir = true; break; case SGFSDLG_UP: /* Scroll up */ DlgFileSelect_ScrollUp(); SDL_Delay(10); break; case SGFSDLG_DOWN: /* Scroll down */ DlgFileSelect_ScrollDown(); SDL_Delay(10); break; case SGFSDLG_SCROLLBAR: /* Scrollbar selected */ DlgFileSelect_ManageScrollbar(); SDL_Delay(10); break; case SGFSDLG_FILENAME: /* User entered new filename */ strcpy(fname, dlgfname); break; case SGFSDLG_SHOWHIDDEN: /* Show/hide hidden files */ reloaddir = true; ypos = 0; scrollbar_Ypos = 0.0; break; case SDLGUI_UNKNOWNEVENT: DlgFileSelect_HandleSdlEvents(&sdlEvent); break; } /* switch */ if (reloaddir) { /* Remove old selection */ fname[0] = 0; dlgfname[0] = 0; ypos = 0; scrollbar_Ypos = 0.0; } } /* other button code */ } /* do */ while (retbut!=SGFSDLG_OKAY && retbut!=SGFSDLG_CANCEL && retbut!=SDLGUI_QUIT && retbut != SDLGUI_ERROR && !bQuitProgram); files_free(files); if (browsingzip) { /* free zip file entries */ ZIP_FreeZipDir(zipfiles); zipfiles = NULL; } if (retbut == SGFSDLG_OKAY) { if (zip_path) *zip_path = zip_get_path(zipdir, zipfilename, browsingzip); retpath = File_MakePath(path, fname, NULL); } else retpath = NULL; clean_exit: SDL_ShowCursor(bOldMouseVisibility); free(pStringMem); return retpath; }
/** * Handle last (non-option) argument. It can be a path or filename. * Filename can be a disk image or Atari program. * Return false if it's none of these. */ static bool Opt_HandleArgument(const char *path) { char *dir = NULL; Uint8 test[2]; FILE *fp; /* Atari program? */ if (File_Exists(path) && (fp = fopen(path, "rb"))) { /* file starts with GEMDOS magic? */ if (fread(test, 1, 2, fp) == 2 && test[0] == 0x60 && test[1] == 0x1A) { const char *prgname = strrchr(path, PATHSEP); if (prgname) { dir = strdup(path); dir[prgname-path] = '\0'; prgname++; } else { dir = strdup(Paths_GetWorkingDir()); prgname = path; } /* after above, dir should point to valid dir, * then make sure that given program from that * dir will be started. */ TOS_AutoStart(prgname); } fclose(fp); } if (dir) { path = dir; } /* GEMDOS HDD directory (as argument, or for the Atari program)? */ if (File_DirExists(path)) { if (Opt_StrCpy(OPT_HARDDRIVE, false, ConfigureParams.HardDisk.szHardDiskDirectories[0], path, sizeof(ConfigureParams.HardDisk.szHardDiskDirectories[0]), &ConfigureParams.HardDisk.bUseHardDiskDirectories) && ConfigureParams.HardDisk.bUseHardDiskDirectories) { ConfigureParams.HardDisk.bBootFromHardDisk = true; } bLoadAutoSave = false; if (dir) { free(dir); } return true; } else { if (dir) { /* if dir is set, it should be valid... */ Log_Printf(LOG_ERROR, "Given atari program path '%s' doesn't exist (anymore?)!\n", dir); free(dir); exit(1); } } /* disk image? */ if (Floppy_SetDiskFileName(0, path, NULL)) { ConfigureParams.HardDisk.bBootFromHardDisk = false; bLoadAutoSave = false; return true; } return Opt_ShowError(OPT_ERROR, path, "Not a disk image, Atari program or directory"); }
/** * Show and process the ROM dialog. */ void DlgRom_Main(void) { char szDlgRom030Name[47]; char szDlgRom040Name[47]; char szDlgRomTurboName[47]; int but; SDLGui_CenterDlg(romdlg); File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1); romdlg[DLGROM_ROM030_NAME].txt = szDlgRom030Name; File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1); romdlg[DLGROM_ROM040_NAME].txt = szDlgRom040Name; File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1); romdlg[DLGROM_ROMTURBO_NAME].txt = szDlgRomTurboName; do { but = SDLGui_DoDialog(romdlg, NULL); switch (but) { case DLGROM_ROM030_DEFAULT: sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1); break; case DLGROM_ROM030_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1, false); break; case DLGROM_ROM040_DEFAULT: sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1); break; case DLGROM_ROM040_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1, false); break; case DLGROM_ROMTURBO_DEFAULT: sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1); break; case DLGROM_ROMTURBO_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1, false); break; } } while (but != DLGROM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }