int LoadPlugins(void) { int ret; const char *cdrfilename=NULL; ReleasePlugins(); LoadMcds(Config.Mcd1, Config.Mcd2); ret = CDR_init(); if (ret < 0) { printf ("Error initializing CD-ROM plugin: %d\n", ret); return -1; } ret = GPU_init(); if (ret < 0) { printf ("Error initializing GPU plugin: %d\n", ret); return -1; } ret = SPU_init(); if (ret < 0) { printf ("Error initializing SPU plugin: %d\n", ret); return -1; } #ifdef spu_pcsxrearmed //senquack - NOTE: this is an important function to call, as SPU // IRQs will not be acknowledged otherwise, leading to repeating sound // problems in games like NFS3, Grandia, Fifa98, and some games will // lack music like Chrono Cross FMV music, THPS2 etc. // Only spu_pcsxrearmed supports this (older SPU plugins all had // problems with sound in these games.. TODO: add support?) SPU_registerCallback(AcknowledgeSPUIRQ); //senquack - pcsx_rearmed SPU plugin schedules its own updates: SPU_registerScheduleCb(ScheduleSPUUpdate); #endif cdrfilename=GetIsoFile(); if (cdrfilename[0] != '\0') { ret=CDR_open(); if (ret < 0) { printf ("Error opening CD-ROM: %s\n", cdrfilename); return -1; } } printf("Plugins loaded.\n"); return 0; }
static int _OpenPlugins(void) { int ret; GPU_clearDynarec(clearDynarec); ret = CDR_open(); if (ret < 0) { SysMessage(_("Error opening CD-ROM plugin!")); return -1; } ret = SPU_open(); if (ret < 0) { SysMessage(_("Error opening SPU plugin!")); return -1; } SPU_registerCallback(SPUirq); SPU_registerScheduleCb(SPUschedule); ret = PAD1_open(&gpuDisp); if (ret < 0) { SysMessage(_("Error opening Controller 1 plugin!")); return -1; } ret = PAD2_open(&gpuDisp); if (ret < 0) { SysMessage(_("Error opening Controller 2 plugin!")); return -1; } if (Config.UseNet && !NetOpened) { netInfo info; char path[MAXPATHLEN]; char dotdir[MAXPATHLEN]; MAKE_PATH(dotdir, "/.pcsx/plugins/", NULL); strcpy(info.EmuName, "PCSX"); strncpy(info.CdromID, CdromId, 9); strncpy(info.CdromLabel, CdromLabel, 9); info.psxMem = psxM; info.GPU_showScreenPic = GPU_showScreenPic; info.GPU_displayText = GPU_displayText; info.GPU_showScreenPic = GPU_showScreenPic; info.PAD_setSensitive = PAD1_setSensitive; sprintf(path, "%s%s", Config.BiosDir, Config.Bios); strcpy(info.BIOSpath, path); strcpy(info.MCD1path, Config.Mcd1); strcpy(info.MCD2path, Config.Mcd2); sprintf(path, "%s%s", dotdir, Config.Gpu); strcpy(info.GPUpath, path); sprintf(path, "%s%s", dotdir, Config.Spu); strcpy(info.SPUpath, path); sprintf(path, "%s%s", dotdir, Config.Cdr); strcpy(info.CDRpath, path); NET_setInfo(&info); ret = NET_open(&gpuDisp); if (ret < 0) { if (ret == -2) { // -2 is returned when something in the info // changed and needs to be synced char *ptr; PARSEPATH(Config.Bios, info.BIOSpath); PARSEPATH(Config.Gpu, info.GPUpath); PARSEPATH(Config.Spu, info.SPUpath); PARSEPATH(Config.Cdr, info.CDRpath); strcpy(Config.Mcd1, info.MCD1path); strcpy(Config.Mcd2, info.MCD2path); return -2; } else { Config.UseNet = FALSE; } } else { if (NET_queryPlayer() == 1) { if (SendPcsxInfo() == -1) Config.UseNet = FALSE; } else { if (RecvPcsxInfo() == -1) Config.UseNet = FALSE; } } NetOpened = TRUE; } else if (Config.UseNet) { NET_resume(); } return 0; }