/* Pcsx2 - Pc Ps2 Emulator * Copyright (C) 2002-2003 Pcsx2 Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include //2002-09-22 (Florin) #include "common.h" #include "plugins.h" #include "resource.h" #include "Win32.h" #define ComboAddPlugin(hw, str) { \ sprintf(tmpStr, "%s %d.%d.%d", PS2E_GetLibName(), (version>>8)&0xff, version&0xff, (version>>24)&0xff); \ lp = (char *)malloc(strlen(FindData.cFileName)+8); \ sprintf(lp, "%s", FindData.cFileName); \ i = ComboBox_AddString(hw, tmpStr); \ ComboBox_SetItemData(hw, i, lp); \ if (stricmp(str, lp)==0) \ ComboBox_SetCurSel(hw, i); \ } BOOL OnConfigureDialog(HWND hW) { WIN32_FIND_DATA FindData; HANDLE Find; HANDLE Lib; _PS2EgetLibType PS2E_GetLibType; _PS2EgetLibName PS2E_GetLibName; _PS2EgetLibVersion2 PS2E_GetLibVersion2; HWND hWC_GS=GetDlgItem(hW,IDC_LISTGS); HWND hWC_PAD1=GetDlgItem(hW,IDC_LISTPAD1); HWND hWC_PAD2=GetDlgItem(hW,IDC_LISTPAD2); HWND hWC_SPU2=GetDlgItem(hW,IDC_LISTSPU2); HWND hWC_CDVD=GetDlgItem(hW,IDC_LISTCDVD); HWND hWC_DEV9=GetDlgItem(hW,IDC_LISTDEV9); HWND hWC_USB=GetDlgItem(hW,IDC_LISTUSB); HWND hWC_FW=GetDlgItem(hW,IDC_LISTFW); HWND hWC_BIOS=GetDlgItem(hW,IDC_LISTBIOS); char tmpStr[256]; char *lp; int i; strcpy(tmpStr, Config.PluginsDir); strcat(tmpStr, "*.dll"); Find = FindFirstFile(tmpStr, &FindData); do { if (Find==INVALID_HANDLE_VALUE) break; sprintf(tmpStr,"%s%s", Config.PluginsDir, FindData.cFileName); Lib = LoadLibrary(tmpStr); if (Lib == NULL) { SysPrintf("%s: %d\n", tmpStr, GetLastError()); continue; } PS2E_GetLibType = (_PS2EgetLibType) GetProcAddress((HMODULE)Lib,"PS2EgetLibType"); PS2E_GetLibName = (_PS2EgetLibName) GetProcAddress((HMODULE)Lib,"PS2EgetLibName"); PS2E_GetLibVersion2 = (_PS2EgetLibVersion2) GetProcAddress((HMODULE)Lib,"PS2EgetLibVersion2"); if (PS2E_GetLibType != NULL && PS2E_GetLibName != NULL && PS2E_GetLibVersion2 != NULL) { u32 version; long type; type = PS2E_GetLibType(); if (type & PS2E_LT_GS) { version = PS2E_GetLibVersion2(PS2E_LT_GS); if ( ((version >> 16)&0xff) == PS2E_GS_VERSION) { ComboAddPlugin(hWC_GS, Config.GS); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, 0xff&(version >> 16), PS2E_GS_VERSION); } if (type & PS2E_LT_PAD) { _PADquery query; query = (_PADquery)GetProcAddress((HMODULE)Lib, "PADquery"); version = PS2E_GetLibVersion2(PS2E_LT_PAD); if (((version >> 16)&0xff) == PS2E_PAD_VERSION && query) { if (query() & 0x1) ComboAddPlugin(hWC_PAD1, Config.PAD1); if (query() & 0x2) ComboAddPlugin(hWC_PAD2, Config.PAD2); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_PAD_VERSION); } if (type & PS2E_LT_SPU2) { version = PS2E_GetLibVersion2(PS2E_LT_SPU2); if ( ((version >> 16)&0xff) == PS2E_SPU2_VERSION) { ComboAddPlugin(hWC_SPU2, Config.SPU2); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_SPU2_VERSION); } if (type & PS2E_LT_CDVD) { version = PS2E_GetLibVersion2(PS2E_LT_CDVD); if (((version >> 16)&0xff) == PS2E_CDVD_VERSION) { ComboAddPlugin(hWC_CDVD, Config.CDVD); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_CDVD_VERSION); } if (type & PS2E_LT_DEV9) { version = PS2E_GetLibVersion2(PS2E_LT_DEV9); if (((version >> 16)&0xff) == PS2E_DEV9_VERSION) { ComboAddPlugin(hWC_DEV9, Config.DEV9); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_DEV9_VERSION); } if (type & PS2E_LT_USB) { version = PS2E_GetLibVersion2(PS2E_LT_USB); if (((version >> 16)&0xff) == PS2E_USB_VERSION) { ComboAddPlugin(hWC_USB, Config.USB); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_USB_VERSION); } if (type & PS2E_LT_FW) { version = PS2E_GetLibVersion2(PS2E_LT_FW); if (((version >> 16)&0xff) == PS2E_FW_VERSION) { ComboAddPlugin(hWC_FW, Config.FW); } else SysPrintf("Plugin %s: Version %x != %x\n", FindData.cFileName, (version >> 16)&0xff, PS2E_FW_VERSION); } } } while (FindNextFile(Find,&FindData)); if (Find!=INVALID_HANDLE_VALUE) FindClose(Find); // BIOS /*lp=(char *)malloc(strlen("HLE") + 1); sprintf(lp, "HLE"); i=ComboBox_AddString(hWC_BIOS, _("Internal HLE Bios")); ComboBox_SetItemData(hWC_BIOS, i, lp); if (stricmp(Config.Bios, lp)==0) ComboBox_SetCurSel(hWC_BIOS, i);*/ strcpy(tmpStr, Config.BiosDir); strcat(tmpStr, "*"); Find=FindFirstFile(tmpStr, &FindData); do { char description[50]; //2002-09-22 (Florin) if (Find==INVALID_HANDLE_VALUE) break; if (!strcmp(FindData.cFileName, ".")) continue; if (!strcmp(FindData.cFileName, "..")) continue; // if (FindData.nFileSizeLow < 1024 * 512) continue; if (FindData.nFileSizeLow > 1024 * 4096) continue; //2002-09-22 (Florin) if (!IsBIOS(FindData.cFileName, description)) continue;//2002-09-22 (Florin) lp = (char *)malloc(strlen(FindData.cFileName)+8); sprintf(lp, "%s", (char *)FindData.cFileName); i = ComboBox_AddString(hWC_BIOS, description); //2002-09-22 (Florin) modified ComboBox_SetItemData(hWC_BIOS, i, lp); if (stricmp(Config.Bios, FindData.cFileName)==0) ComboBox_SetCurSel(hWC_BIOS, i); } while (FindNextFile(Find,&FindData)); if (Find!=INVALID_HANDLE_VALUE) FindClose(Find); if (ComboBox_GetCurSel(hWC_GS) == -1) ComboBox_SetCurSel(hWC_GS, 0); if (ComboBox_GetCurSel(hWC_PAD1) == -1) ComboBox_SetCurSel(hWC_PAD1, 0); if (ComboBox_GetCurSel(hWC_PAD2) == -1) ComboBox_SetCurSel(hWC_PAD2, 0); if (ComboBox_GetCurSel(hWC_SPU2) == -1) ComboBox_SetCurSel(hWC_SPU2, 0); if (ComboBox_GetCurSel(hWC_CDVD) == -1) ComboBox_SetCurSel(hWC_CDVD, 0); if (ComboBox_GetCurSel(hWC_DEV9) == -1) ComboBox_SetCurSel(hWC_DEV9, 0); if (ComboBox_GetCurSel(hWC_USB) == -1) ComboBox_SetCurSel(hWC_USB, 0); if (ComboBox_GetCurSel(hWC_FW) == -1) ComboBox_SetCurSel(hWC_FW, 0); if (ComboBox_GetCurSel(hWC_BIOS) == -1) ComboBox_SetCurSel(hWC_BIOS, 0); return TRUE; } #define CleanCombo(item) \ hWC = GetDlgItem(hW, item); \ iCnt = ComboBox_GetCount(hWC); \ for (i=0; i