void set_cd_image(const char *fname) { const char *ext = NULL; if (fname != NULL) ext = strrchr(fname, '.'); if (ext && ( strcasecmp(ext, ".z") == 0 || strcasecmp(ext, ".bz") == 0 || strcasecmp(ext, ".znx") == 0 /*|| strcasecmp(ext, ".pbp") == 0*/)) { SetIsoFile(NULL); cdrcimg_set_fname(fname); strcpy(Config.Cdr, "builtin_cdrcimg"); } else { SetIsoFile(fname); strcpy(Config.Cdr, "builtin_cdr"); } }
int emuLoadRom( QString * romFile ){ if( romFile->isEmpty()) return 0; SetIsoFile(romFile->toLatin1().data()); if (psxInit() == -1) { printf("PSX emulator couldn't be initialized.\n"); emuClose(); return 0; } if (LoadPlugins() == -1) { printf("Failed loading plugins.\n"); emuClose(); return 0; } psxReset(); return 1; }
int emu_core_preinit(void) { // what is the name of the config file? // it may be redefined by -cfg on the command line strcpy(cfgfile_basename, "pcsx.cfg"); emuLog = stdout; SetIsoFile(NULL); memset(&Config, 0, sizeof(Config)); set_default_paths(); emu_set_default_config(); strcpy(Config.Bios, "HLE"); return 0; }
static int gui_LoadIso() { static char isoname[PATH_MAX]; const char *name = FileReq(Config.LastDir, NULL, isoname); if (name) { SetIsoFile(name); //If a multi-CD Eboot .pbp is detected, cdriso.cpp's handlepbp() will // call this function later to allow choosing which CD to boot cdrIsoMultidiskCallback = gui_select_multicd_to_boot_from; return 1; } return 0; }
// loadISO loads an ISO file as current media to read from. int loadISOSwap(fileBrowser_file* file) { // Refresh file pointers memset(&isoFile, 0, sizeof(fileBrowser_file)); memset(&cddaFile, 0, sizeof(fileBrowser_file)); memset(&subFile, 0, sizeof(fileBrowser_file)); memcpy(&isoFile, file, sizeof(fileBrowser_file) ); CDR_close(); SetIsoFile(&file->name[0]); //might need to insert code here to trigger a lid open/close interrupt if(CDR_open() < 0) return -1; CheckCdrom(); LoadCdrom(); return 0; }
static int gui_swap_cd(void) { //Is a multi-cd image loaded? (EBOOT .pbp files support this) bool using_multicd = cdrIsoMultidiskCount > 1; if (using_multicd) { // Pass true to gui_select_multicd() so it knows CD is being swapped if (!gui_select_multicd(true)) { // User cancelled, return to menu return 0; } else { printf("CD swap selected image %d of %d in multi-CD\n", cdrIsoMultidiskSelect+1, cdrIsoMultidiskCount); } } else { static char isoname[PATH_MAX]; const char *name = FileReq(Config.LastDir, NULL, isoname); if (name == NULL) return 0; SetIsoFile(name); printf("CD swap selected file: %s\n", name); } CdromId[0] = '\0'; CdromLabel[0] = '\0'; //Unregister multi-CD callback so handlepbp() or other cdriso // plugins don't ask for CD to boot from cdrIsoMultidiskCallback = NULL; if (ReloadCdromPlugin() < 0) { printf("Failed to re-initialize cdr\n"); return 0; } if (CDR_open() < 0) { printf("Failed to open cdr\n"); return 0; } SetCdOpenCaseTime(time(NULL) + 2); LidInterrupt(); return 1; }
int emu_core_preinit(void) { #ifdef IOS emuLog = fopen("/User/Documents/pcsxr.log", "w"); if (emuLog == NULL) emuLog = fopen("pcsxr.log", "w"); if (emuLog == NULL) #endif emuLog = stdout; SetIsoFile(NULL); memset(&Config, 0, sizeof(Config)); set_default_paths(); emu_set_default_config(); strcpy(Config.Bios, "HLE"); return 0; }
void SetIso(const char * fname) { FILE *fd = fopen(fname, "rb"); if (fd == NULL) { printf("Error loading %s\r\n", fname); return; } uint8_t header[0x10]; int n = fread(header, 0x10, 1, fd); printf("n : %d\r\n", n); buffer_dump(header, 0x10); if (header[0] == 0x78 && header[1] == 0xDA) { printf("Use CDRCIMG for %s\r\n", fname); strcpy(Config.Cdr, "CDRCIMG"); cdrcimg_set_fname(fname); } else { SetIsoFile(fname); } fclose(fd); }
int emu_core_preinit(void) { // what is the name of the config file? // it may be redefined by -cfg on the command line strcpy(cfgfile_basename, "pcsx.cfg"); #ifdef IOS emuLog = fopen("/User/Documents/pcsxr.log", "w"); if (emuLog == NULL) emuLog = fopen("pcsxr.log", "w"); if (emuLog == NULL) #endif emuLog = stdout; SetIsoFile(NULL); memset(&Config, 0, sizeof(Config)); set_default_paths(); emu_set_default_config(); strcpy(Config.Bios, "HLE"); return 0; }
int main(int argc, char *argv[]) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; int runcd = RUN; int loadst = 0; int i; #ifdef ENABLE_NLS setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif memset(&Config, 0, sizeof(PcsxConfig)); // what is the name of the config file? // it may be redefined by -cfg on the command line strcpy(cfgfile_basename, "pcsxr.cfg"); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-runcd")) runcd = RUN_CD; else if (!strcmp(argv[i], "-nogui")) UseGui = FALSE; else if (!strcmp(argv[i], "-psxout")) Config.PsxOut = TRUE; else if (!strcmp(argv[i], "-slowboot")) Config.SlowBoot = TRUE; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cfg")) { if (i+1 >= argc) break; strncpy(cfgfile_basename, argv[++i], MAXPATHLEN-100); /* TODO buffer overruns */ printf("Using config file %s.\n", cfgfile_basename); } else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } SetIsoFile(isofilename); runcd = RUN_CD; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf(PACKAGE_STRING "\n"); printf("%s\n", _( " pcsxr [options] [file]\n" "\toptions:\n" "\t-runcd\t\tRuns CD-ROM\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-nogui\t\tDon't open the GTK GUI\n" "\t-cfg FILE\tLoads desired configuration file (default: ~/.pcsxr/pcsxr.cfg)\n" "\t-psxout\t\tEnable PSX output\n" "\t-slowboot\tEnable BIOS Logo\n" "\t-load STATENUM\tLoads savestate STATENUM (1-9)\n" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads file\n")); return 0; } else { strncpy(file, argv[i], MAXPATHLEN); if (file[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(file) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, file); strcpy(file, path); } else file[0] = 0; } } } strcpy(Config.Net, "Disabled"); if (UseGui) gtk_init(NULL, NULL); CheckSubDir(); ScanAllPlugins(); // try to load config // if the config file doesn't exist if (LoadConfig() == -1) { if (!UseGui) { printf(_("PCSXR cannot be configured without using the GUI -- you should restart without -nogui.\n")); return 1; } // Uh oh, no config file found, use some defaults Config.PsxAuto = 1; gchar *str_bios_dir = g_strconcat(getenv("HOME"), BIOS_DIR, NULL); strcpy(Config.BiosDir, str_bios_dir); g_free(str_bios_dir); gchar *str_plugin_dir = g_strconcat(getenv("HOME"), PLUGINS_DIR, NULL); strcpy(Config.PluginsDir, str_plugin_dir); g_free(str_plugin_dir); gtk_init(NULL, NULL); // Update available plugins, but not GUI UpdatePluginsBIOS(); // Pick some defaults, if they're available set_default_plugin(GpuConfS.plist[0], Config.Gpu); set_default_plugin(SpuConfS.plist[0], Config.Spu); set_default_plugin(CdrConfS.plist[0], Config.Cdr); set_default_plugin(Pad1ConfS.plist[0], Config.Pad1); set_default_plugin(Pad2ConfS.plist[0], Config.Pad2); set_default_plugin(BiosConfS.plist[0], Config.Bios); // create & load default memcards if they don't exist CreateMemcard("card1.mcd", Config.Mcd1); CreateMemcard("card2.mcd", Config.Mcd2); LoadMcds(Config.Mcd1, Config.Mcd2); SaveConfig(); } gchar *str_patches_dir = g_strconcat(getenv("HOME"), PATCHES_DIR, NULL); strcpy(Config.PatchesDir, str_patches_dir); g_free(str_patches_dir); // switch to plugin dotdir // this lets plugins work without modification! gchar *plugin_default_dir = g_build_filename(getenv("HOME"), PLUGINS_DIR, NULL); chdir(plugin_default_dir); g_free(plugin_default_dir); if (UseGui && runcd != RUN_CD) SetIsoFile(NULL); if (SysInit() == -1) return 1; if (UseGui && runcd != RUN_CD) { StartGui(); } else { // the following only occurs if the gui isn't started if (LoadPlugins() == -1) { SysErrorMessage(_("Error"), _("Failed loading plugins!")); return 1; } if (OpenPlugins() == -1 || plugins_configured() == FALSE) { return 1; } CheckCdrom(); // Auto-detect: get region first, then rcnt-bios reset SysReset(); if (file[0] != '\0') { Load(file); } else { if (runcd == RUN_CD) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } } } // If a state has been specified, then load that if (loadst) { StatesC = loadst - 1; gchar *state_filename = get_state_filename(StatesC); LoadState(state_filename); g_free(state_filename); } psxCpu->Execute(); } return 0; }
// loadISO loads an ISO, resets the system and loads the save. int loadISO(fileBrowser_file* file) { // Refresh file pointers memset(&isoFile, 0, sizeof(fileBrowser_file)); memset(&cddaFile, 0, sizeof(fileBrowser_file)); memset(&subFile, 0, sizeof(fileBrowser_file)); memcpy(&isoFile, file, sizeof(fileBrowser_file) ); if(hasLoadedISO) { SysClose(); hasLoadedISO = FALSE; } SetIsoFile(&file->name[0]); if(SysInit() < 0) return -1; hasLoadedISO = TRUE; SysReset(); char *tempStr = &file->name[0]; if((strstr(tempStr,".EXE")!=NULL) || (strstr(tempStr,".exe")!=NULL)) { Load(file); } else { CheckCdrom(); LoadCdrom(); } if(autoSave==AUTOSAVE_ENABLE) { switch (nativeSaveDevice) { case NATIVESAVEDEVICE_SD: case NATIVESAVEDEVICE_USB: // Adjust saveFile pointers saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB; saveFile_readFile = fileBrowser_libfat_readFile; saveFile_writeFile = fileBrowser_libfat_writeFile; saveFile_init = fileBrowser_libfat_init; saveFile_deinit = fileBrowser_libfat_deinit; break; case NATIVESAVEDEVICE_CARDA: case NATIVESAVEDEVICE_CARDB: // Adjust saveFile pointers saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB; saveFile_readFile = fileBrowser_CARD_readFile; saveFile_writeFile = fileBrowser_CARD_writeFile; saveFile_init = fileBrowser_CARD_init; saveFile_deinit = fileBrowser_CARD_deinit; break; } // Try loading everything int result = 0; saveFile_init(saveFile_dir); result += LoadMcd(1,saveFile_dir); result += LoadMcd(2,saveFile_dir); saveFile_deinit(saveFile_dir); switch (nativeSaveDevice) { case NATIVESAVEDEVICE_SD: if (result) autoSaveLoaded = NATIVESAVEDEVICE_SD; break; case NATIVESAVEDEVICE_USB: if (result) autoSaveLoaded = NATIVESAVEDEVICE_USB; break; case NATIVESAVEDEVICE_CARDA: if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDA; break; case NATIVESAVEDEVICE_CARDB: if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDB; break; } } return 0; }