void netError() { ClosePlugins(); SysMessage(_("Connection closed!\n")); CdromId[0] = '\0'; CdromLabel[0] = '\0'; SysRunGui(); }
void SysClose() { psxShutdown(); ClosePlugins(); ReleasePlugins(); #if defined (CPU_LOG) || defined(DMA_LOG) || defined(CDR_LOG) || defined(HW_LOG) || \ defined(BIOS_LOG) || defined(GTE_LOG) || defined(PAD_LOG) if (emuLog != NULL) fclose(emuLog); #endif }
static void ModuleCloseGame () { EmuShutdown(); ClosePlugins(); //Kill resampler Resampler::Kill(); //Close the cheat engine MDFNMP_Kill(); }
void netError() { #ifndef TIGER_KING ClosePlugins(); SysMessage(_("Connection closed!\n")); CdromId[0] = '\0'; CdromLabel[0] = '\0'; SysRunGui(); #endif }
void S3D_CACHE::FlushCache( bool closePlugins ) { std::list< S3D_CACHE_ENTRY* >::iterator sCL = m_CacheList.begin(); std::list< S3D_CACHE_ENTRY* >::iterator eCL = m_CacheList.end(); while( sCL != eCL ) { delete *sCL; ++sCL; } m_CacheList.clear(); m_CacheMap.clear(); if( closePlugins ) ClosePlugins(); return; }
void SignalExit(int sig) { ClosePlugins(); OnFile_Exit(); }
void PADhandleKey(int key) { char Text[255]; int ret; if (Running == 0) return; switch (key) { case 0: break; case VK_F1: GetStateFilename(Text, StatesC); GPU_freeze(2, (GPUFreeze_t *)&StatesC); ret = SaveState(Text); if (ret == 0) sprintf(Text, _("*PCSXR*: Saved State %d"), StatesC+1); else sprintf(Text, _("*PCSXR*: Error Saving State %d"), StatesC+1); GPU_displayText(Text); if (ShowPic) { ShowPic = 0; gpuShowPic(); } break; case VK_F2: if (StatesC < 8) StatesC++; else StatesC = 0; GPU_freeze(2, (GPUFreeze_t *)&StatesC); if (ShowPic) { ShowPic = 0; gpuShowPic(); } break; case VK_F3: GetStateFilename(Text, StatesC); ret = LoadState(Text); if (ret == 0) sprintf(Text, _("*PCSXR*: Loaded State %d"), StatesC+1); else sprintf(Text, _("*PCSXR*: Error Loading State %d"), StatesC+1); GPU_displayText(Text); break; case VK_F4: gpuShowPic(); break; case VK_F5: Config.SioIrq ^= 0x1; if (Config.SioIrq) sprintf(Text, _("*PCSXR*: Sio Irq Always Enabled")); else sprintf(Text, _("*PCSXR*: Sio Irq Not Always Enabled")); GPU_displayText(Text); break; case VK_F6: Config.Mdec ^= 0x1; if (Config.Mdec) sprintf(Text, _("*PCSXR*: Black&White Mdecs Only Enabled")); else sprintf(Text, _("*PCSXR*: Black&White Mdecs Only Disabled")); GPU_displayText(Text); break; case VK_F7: Config.Xa ^= 0x1; if (Config.Xa == 0) sprintf (Text, _("*PCSXR*: Xa Enabled")); else sprintf (Text, _("*PCSXR*: Xa Disabled")); GPU_displayText(Text); break; case VK_F8: GPU_makeSnapshot(); return; case VK_F9: GPU_displayText(_("*PCSXR*: CdRom Case Opened")); SetCdOpenCaseTime(-1); LidInterrupt(); break; case VK_F10: GPU_displayText(_("*PCSXR*: CdRom Case Closed")); SetCdOpenCaseTime(0); LidInterrupt(); break; case VK_F12: SysPrintf("*PCSXR*: CpuReset\n"); psxReset(); break; case VK_ESCAPE: ShowCursor(TRUE); // we want GUI to have cursor always Running = 0; ClosePlugins(); SysRunGui(); break; } }
int main(int argc, char **argv) { if (argc == 1 || (argc == 2 && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-help") || !strcmp(argv[1], "-h")))) { PrintHelp(); return 0; } emu_core_preinit(); ChangeWorkingDirectory("c"); char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; int getst = -1; int discNumber = 0; g_menuscreen_w = 800; g_menuscreen_h = 480; strcpy(Config.Gpu, "builtin_gpu"); strcpy(Config.Spu, "builtin_spu"); strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; pl_rearmed_cbs.frameskip = -1; strcpy(Config.Bios, "HLE"); iUseReverb = 0; iUseInterpolation = 0; in_type1 = PSE_PAD_TYPE_STANDARD; in_type2 = PSE_PAD_TYPE_STANDARD; accelOptions.sens = 150; accelOptions.y_def = 500; accelOptions.maxValue = 500.0; // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); 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; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")) { int tv_reg = atol(argv[++i]); if (tv_reg < -1) pl_rearmed_cbs.frameskip = -1; else pl_rearmed_cbs.frameskip = tv_reg; } else if (!strcmp(argv[i],"-region")) { int psx_reg = atol(argv[++i]); if (psx_reg == 0 || psx_reg == 1){ Config.PsxAuto = 0; Config.PsxType = psx_reg; } } else if (!strcmp(argv[i],"-get_sstatename")) getst = atol(argv[++i]); else if (!strcmp(argv[i], "-fullscreen")) g_maemo_opts |= 2; else if (!strcmp(argv[i], "-accel")) g_maemo_opts |= 4; else if (!strcmp(argv[i], "-nosound")) strcpy(Config.Spu, "spunull.so"); else if (!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-pdir")) sprintf(Config.PluginsDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i], "-gles")) { strcpy(Config.Gpu, "gpu_gles.so"); g_maemo_opts |= 8 ;} else if (!strcmp(argv[i], "-oldgpu")) strcpy(Config.Gpu, "gpu_peops.so"); else if (!strcmp(argv[i], "-unai")) strcpy(Config.Gpu, "gpu_unai.so"); else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; else if (!strcmp(argv[i], "-fps")) g_opts |=OPT_SHOWFPS; else if (!strcmp(argv[i], "-cpu")) g_opts |=OPT_SHOWCPU; else if (!strcmp(argv[i], "-spu")) g_opts |=OPT_SHOWSPU; else if (!strcmp(argv[i], "-nofl")) g_opts |=OPT_NO_FRAMELIM; else if (!strcmp(argv[i], "-mcd1")) sprintf(Config.Mcd1, "%s", argv[++i]); else if (!strcmp(argv[i], "-mcd2")) sprintf(Config.Mcd2, "%s", argv[++i]); else if (!strcmp(argv[i], "-cpuclock")) cycle_multiplier = 10000 / atol(argv[++i]); else if (!strcmp(argv[i], "-guncon")) in_type1 = PSE_PAD_TYPE_GUNCON; else if (!strcmp(argv[i], "-gunnotrigger")) g_opts |= OPT_TSGUN_NOTRIGGER; else if (!strcmp(argv[i], "-analog")) in_type1 = PSE_PAD_TYPE_ANALOGPAD; else if (!strcmp(argv[i], "-vibration")) { in_type1 = PSE_PAD_TYPE_ANALOGPAD; in_enable_vibration = 1; } else if (!strcmp(argv[i], "-sens")) accelOptions.sens = atol(argv[++i]); else if (!strcmp(argv[i], "-ydef")) accelOptions.y_def = atol(argv[++i]); else if (!strcmp(argv[i], "-max")) accelOptions.maxValue = atol(argv[++i]); else if (!strcmp(argv[i], "-displayon")) bKeepDisplayOn = TRUE; else if (!strcmp(argv[i], "-keys")) sprintf(keys_config_file, "%s", argv[++i]); else if (!strcmp(argv[i], "-autosave")) bAutosaveOnExit = TRUE; else if (!strcmp(argv[i], "-disc")) discNumber = atol(argv[++i]); else if (!strcmp(argv[i], "-corners")){ int j = 0; i++; char num[2]; for (j=0; j<strlen(argv[i]); j++){ strncpy(num, argv[i] + j, 1); cornerActions[j] = atoi(num); } } else if (!strcmp(argv[i], "-spu_reverb")) { if (atol(argv[++i]) > 0) iUseReverb = 2; } else if (!strcmp(argv[i], "-spu_interpolation")) iUseInterpolation = atol(argv[++i]); else if (!strcmp(argv[i],"-interlace")) { int interlace = atol(argv[++i]); if (interlace >= 0 && interlace <= 2) pl_rearmed_cbs.gpu_neon.allow_interlace = interlace; } else if (!strcmp(argv[i], "-enhance")) pl_rearmed_cbs.gpu_neon.enhancement_enable = 1; else if (!strcmp(argv[i], "-enhancehack")) pl_rearmed_cbs.gpu_neon.enhancement_no_main = 1; else if (!strcmp(argv[i], "-gles_dithering")) pl_rearmed_cbs.gpu_peopsgl.bDrawDither = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_mask")) pl_rearmed_cbs.gpu_peopsgl.iUseMask = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_filtering")) pl_rearmed_cbs.gpu_peopsgl.iFilterType = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_fbtex")) pl_rearmed_cbs.gpu_peopsgl.iFrameTexType = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_vram")) pl_rearmed_cbs.gpu_peopsgl.iVRamSize = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_fastmdec")) pl_rearmed_cbs.gpu_peopsgl.bUseFastMdec = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_advblend")) pl_rearmed_cbs.gpu_peopsgl.bAdvancedBlend = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_opaque")) pl_rearmed_cbs.gpu_peopsgl.bOpaquePass = atol(argv[++i]); else { fprintf(stderr, "Unknown option: %s\n", argv[i]); return 1; } } pl_init(); if (emu_core_init() == -1) return 1; if (cdfile) { set_cd_image(cdfile); strcpy(file_name, strrchr(cdfile,'/')); } if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (discNumber > 0) cdrIsoMultidiskSelect = discNumber - 1; if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); if (getst >= 0){ char fname[MAXPATHLEN]; get_state_filename(fname, sizeof(fname), getst); printf("SAVESTATE: %s\n", fname); if (cdrIsoMultidiskCount > 1){ int i = 0; for (i=1; i<cdrIsoMultidiskCount; i++){ cdrIsoMultidiskSelect = i; CdromId[0] = '\0'; CdromLabel[0] = '\0'; CDR_close(); if (CDR_open() == 0){ CheckCdrom(); get_state_filename(fname, sizeof(fname), getst); printf("SAVESTATE: %s\n", fname); } } } return 0; } SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(0); ready_to_go = 1; } } if (!ready_to_go) { printf ("something goes wrong, maybe you forgot -cdfile ? \n"); return 1; } if (cdrIsoMultidiskCount > 1) printf ("Loaded a multidisc image: %i discs.\n", cdrIsoMultidiskCount); // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "Failed to load" : "Loaded", loadst); state_slot = loadst - 1; } if (maemo_init(&argc, &argv)) return 1; if (GPU_open != NULL) { int ret = GPU_open(&gpuDisp, "PCSX", NULL); if (ret){ fprintf(stderr, "Warning: GPU_open returned %d\n", ret); gpuDisp=ret; } } if (Config.HLE) printf("Note: running without BIOS, expect compatibility problems\n"); dfinput_activate(); pl_timing_prepare(Config.PsxType); while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } maemo_finish(); 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; }
int main(int argc, char *argv[]) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; const char *loadst_f = NULL; int psxout = 0; int loadst = 0; int i; emu_core_preinit(); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) psxout = 1; 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 */ SysPrintf("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; } cdfile = isofilename; } else if (!strcmp(argv[i], "-loadf")) { if (i+1 >= argc) break; loadst_f = argv[++i]; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf("PCSX-ReARMed " REV "\n"); printf("%s\n", _( " pcsx [options] [file]\n" "\toptions:\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-cfg FILE\tLoads desired configuration file (default: ~/.pcsx/pcsx.cfg)\n" "\t-psxout\t\tEnable PSX output\n" "\t-load STATENUM\tLoads savestate STATENUM (1-5)\n" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads a PSX EXE 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; } } } if (cdfile) set_cd_image(cdfile); // frontend stuff // init input but leave probing to platform code, // they add input drivers and may need to modify them after probe in_init(); pl_init(); plat_init(); menu_init(); // loads config if (emu_core_init() != 0) return 1; if (psxout) Config.PsxOut = 1; if (LoadPlugins() == -1) { // FIXME: this recovery doesn't work, just delete bad config and bail out // SysMessage("could not load plugins, retrying with defaults\n"); set_default_paths(); snprintf(path, sizeof(path), "." PCSX_DOT_DIR "%s", cfgfile_basename); remove(path); SysMessage("Failed loading plugins!"); return 1; } pcnt_hook_plugins(); if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); SysPrintf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(!loadst); ready_to_go = 1; } } if (loadst_f) { int ret = LoadState(loadst_f); SysPrintf("%s state file: %s\n", ret ? "failed to load" : "loaded", loadst_f); ready_to_go |= ret == 0; } if (ready_to_go) { menu_prepare_emu(); // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); SysPrintf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } } else menu_loop(); pl_start_watchdog(); while (!g_emu_want_quit) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } printf("Exit..\n"); ClosePlugins(); SysClose(); menu_finish(); plat_finish(); return 0; }
void netError() { ClosePlugins(); SysMessage(_("Connection closed\n")); SysRunGui(); }
int main(int argc, char **argv) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; emu_core_preinit(); ChangeWorkingDirectory("c"); strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; g_menuscreen_w = 800; g_menuscreen_h = 480; pl_init(); emu_core_init(); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); 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; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")) { int tv_reg = atol(argv[++i]); if (tv_reg > 0) pl_rearmed_cbs.frameskip = -1; } else if (!strcmp(argv[i],"-fullscreen")) g_maemo_opts |= 2; else if (!strcmp(argv[i],"-accel")) g_maemo_opts |= 4; else if (!strcmp(argv[i],"-nosound")) strcpy(Config.Spu, "spunull.so"); else if (!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i], "-gles")) strcpy(Config.Gpu, "gpuGLES.so"); else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; } hildon_init(&argc, &argv); if (cdfile) { set_cd_image(cdfile); strcpy(file_name, strrchr(cdfile,'/')); } if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(0); ready_to_go = 1; } } if (!ready_to_go) { printf ("something goes wrong, maybe you forgot -cdfile ? \n"); return 1; } // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } maemo_init(&argc, &argv); if (GPU_open != NULL) { int ret = GPU_open(&gpuDisp, "PCSX", NULL); if (ret) fprintf(stderr, "Warning: GPU_open returned %d\n", ret); } dfinput_activate(); pl_timing_prepare(Config.PsxType); while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } return 0; }
static s32 read_keys(u8 port, PadDataS* pad) { CHECK_POWER_BUTTONS(); u32 b; uint16_t pad_status = 0xFFFF; //bit pointless why is this done this way? pad_t *cpad = &pads[port]; u8 pad_port = cpad->num; #ifdef HW_RVL WPADData *data; if(pads[0].type != pads[1].type && (pads[0].type == GCPAD || pads[1].type == GCPAD)) { pad_port = 0; // If Wii Remote and GC pad, then we must read from 0 on both. } if(cpad->type != GCPAD) { data = WPAD_Data(pad_port); b = WPAD_ButtonsHeld(pad_port); } else #endif b = PAD_ButtonsHeld(pad_port); if (b & cpad->R2) { pad_status &= PSX_BUTTON_R2; //b &= ~(cpad->R2); } if (b & cpad->L2) { pad_status &= PSX_BUTTON_L2; //b &= ~(cpad->L2); } if (b & cpad->R1) { pad_status &= PSX_BUTTON_R1; //b &= ~(cpad->R1); } if (b & cpad->L1) { pad_status &= PSX_BUTTON_L1; //b &= ~(cpad->L1); } if (b & cpad->START) pad_status &= PSX_BUTTON_START; if (b & cpad->SELECT) pad_status &= PSX_BUTTON_SELECT; if (b & cpad->CROSS) pad_status &= PSX_BUTTON_CROSS; if (b & cpad->CIRCLE) pad_status &= PSX_BUTTON_CIRCLE; if (b & cpad->SQUARE) pad_status &= PSX_BUTTON_SQUARE; if (b & cpad->TRIANGLE) pad_status &= PSX_BUTTON_TRIANGLE; #ifdef HW_RVL if(data->exp.type == WPAD_EXP_NUNCHUK && cpad->analog == PAD_STANDARD) { if(data->exp.nunchuk.js.pos.y > 140) pad_status &= PSX_BUTTON_DUP; if(data->exp.nunchuk.js.pos.y < 110) pad_status &= PSX_BUTTON_DDOWN; if(data->exp.nunchuk.js.pos.x < 110) pad_status &= PSX_BUTTON_DLEFT; if(data->exp.nunchuk.js.pos.x > 140) pad_status &= PSX_BUTTON_DRIGHT; } else #endif { if (b & cpad->UP) pad_status &= PSX_BUTTON_DUP; if (b & cpad->DOWN) pad_status &= PSX_BUTTON_DDOWN; if (b & cpad->LEFT) pad_status &= PSX_BUTTON_DLEFT; if (b & cpad->RIGHT) pad_status &= PSX_BUTTON_DRIGHT; } if (b & cpad->MENU) { ClosePlugins(); SysRunGui(); } if(cpad->analog == PAD_ANALOG) { switch(cpad->type) { case GCPAD: pad->leftJoyX = (u8)(PAD_StickX(pad_port)+128); pad->leftJoyY = (u8)(PAD_StickY(pad_port)+128); pad->rightJoyX = (u8)(PAD_SubStickX(pad_port)+128); pad->rightJoyY = (u8)(PAD_SubStickY(pad_port)+128); break; #ifdef HW_RVL case NUNCHAK: // or Classic if(data->exp.type == WPAD_EXP_NUNCHUK) { //TODO: Check this gforce_t gforce; WPAD_GForce(pad_port, &gforce); pad->leftJoyX = data->exp.nunchuk.js.pos.x; pad->leftJoyY = data->exp.nunchuk.js.pos.y; pad->rightJoyX = gforce.x; pad->rightJoyY = gforce.y; } else { pad->leftJoyX = (u8)(data->exp.classic.ljs.pos.x+128); pad->leftJoyY = (u8)(data->exp.classic.ljs.pos.y+128); pad->rightJoyX = (u8)(data->exp.classic.rjs.pos.x+128); pad->rightJoyY = (u8)(data->exp.classic.rjs.pos.y+128); } break; #endif } } pad->controllerType = cpad->analog; pad->buttonStatus = pad_status; // Copy Buttons return PSE_PAD_ERR_SUCCESS; }
void PADhandleKey(int key) { char Text[255]; int ret; if (Running == 0) return; switch (key) { case 0: break; case VK_F1: sprintf(Text, "sstates\\%10.10s.%3.3d", CdromLabel, StatesC); GPU_freeze(2, (GPUFreeze_t *)&StatesC); ret = SaveState(Text); if (ret == 0) sprintf(Text, _("*PCSX*: Saved State %d"), StatesC+1); else sprintf(Text, _("*PCSX*: Error Saving State %d"), StatesC+1); //GPU_displayText(Text); if (ShowPic) { ShowPic = 0; gpuShowPic(); } AgemoTrace("Status saved %d", StatesC+1); break; case VK_F2: if (StatesC < 4) StatesC++; else StatesC = 0; GPU_freeze(2, (GPUFreeze_t *)&StatesC); if (ShowPic) { ShowPic = 0; gpuShowPic(); } AgemoTrace("save slot selected %d", StatesC+1); break; case VK_F3: sprintf (Text, "sstates\\%10.10s.%3.3d", CdromLabel, StatesC); ret = LoadState(Text); if (ret == 0) sprintf(Text, _("*PCSX*: Loaded State %d"), StatesC+1); else sprintf(Text, _("*PCSX*: Error Loading State %d"), StatesC+1); //GPU_displayText(Text); AgemoTrace("Status loaded %d, set total ops = 0", StatesC+1); break; case VK_F4: gpuShowPic(); break; case VK_F5: if (Config.QKeys) break; Config.Sio ^= 0x1; if (Config.Sio) sprintf(Text, _("*PCSX*: Sio Irq Always Enabled")); else sprintf(Text, _("*PCSX*: Sio Irq Not Always Enabled")); GPU_displayText(Text); break; case VK_F6: if (Config.QKeys) break; Config.Mdec ^= 0x1; if (Config.Mdec) sprintf(Text, _("*PCSX*: Black&White Mdecs Only Enabled")); else sprintf(Text, _("*PCSX*: Black&White Mdecs Only Disabled")); GPU_displayText(Text); break; case VK_F7: if (Config.QKeys) break; Config.Xa ^= 0x1; if (Config.Xa == 0) sprintf (Text, _("*PCSX*: Xa Enabled")); else sprintf (Text, _("*PCSX*: Xa Disabled")); GPU_displayText(Text); break; case VK_F8: if (Config.QKeys) break; GPU_makeSnapshot(); return; case VK_F9: GPU_displayText(_("*PCSX*: CdRom Case Opened")); cdOpenCase = 1; break; case VK_F10: GPU_displayText(_("*PCSX*: CdRom Case Closed")); cdOpenCase = 0; break; case VK_F12: SysPrintf("*PCSX*: CpuReset\n"); psxCpu->Reset(); break; case VK_ESCAPE: Running = 0; ClosePlugins(); SysRunGui(); break; } }
int maemo_main(int argc, char **argv) { ChangeWorkingDirectory("c"); char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); 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; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")){ int tv_reg=atol(argv[++i]); if (tv_reg>0){ UseFrameSkip=1; fFrameRateHz = (tv_reg==1)?50.0f: 59.94f; dwFrameRateTicks = (100000*100 / (unsigned long)(fFrameRateHz*100)); } } else if (!strcmp(argv[i],"-sputhreaded")){ iUseTimer=1; } else if (!strcmp(argv[i],"-nosound")){ strcpy(Config.Spu, "spunull.so"); } else if(!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if(!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i],"-gles")){ strcpy(Config.Gpu, "gpuGLES.so"); } else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf(PACKAGE_NAME " " PACKAGE_VERSION "\n"); printf("%s\n", _( " pcsx [options] [file]\n" "\toptions:\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-psxout\t\tEnable PSX output\n" "\t-nosound\t\tDisable sound using spunull plugin\n" "\t-sputhreaded\t\tMove sound to separate thread\n" "\t-frameskip\t\tEnable frameskip\n" "\t-load STATENUM\tLoads savestate STATENUM (1-5)\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; } } } hildon_init(&argc, &argv); if (cdfile) set_cd_image(cdfile); if (SysInit() == -1) return 1; if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } ready_to_go = 1; } } // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } if (ready_to_go) maemo_init(); else { printf ("somethings goes wrong, maybe you forgot -cdfile ? \n"); return 0; } while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } return 0; }