Create Xref-Html Frames                    Remove All Frames
file:/home/jivera/wd/pcsx/Win32/ConfigurePlugins.c        (Tue Nov 25 22:46:14 2003 )


   1: /*  Pcsx - Pc Psx Emulator
   2:  *  Copyright (C) 1999-2003  Pcsx Team
   3:  *
   4:  *  This program is free software; you can redistribute it and/or modify
   5:  *  it under the terms of the GNU General Public License as published by
   6:  *  the Free Software Foundation; either version 2 of the License, or
   7:  *  (at your option) any later version.
   8:  *
   9:  *  This program is distributed in the hope that it will be useful,
  10:  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12:  *  GNU General Public License for more details.
  13:  *
  14:  *  You should have received a copy of the GNU General Public License
  15:  *  along with this program; if not, write to the Free Software
  16:  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17:  */
  18: 
  19: #include <windows.h>
  20: #include <windowsx.h>
  21: #include <stdio.h>
  22: #include "PsxCommon.h"
  23: #include "plugin.h"
  24: #include "resource.h"
  25: #include "Win32.h"
  26: 
  27: #define QueryKeyV(s, name, var) \
  28:         size = s; \
  29:         if (RegQueryValueEx(myKey, name, 0, &type, (LPBYTE) var, &size) != 0) { if (err) { RegCloseKey(myKey); return -1; } }
  30: 
  31: #define SetKeyV(name, var, s, t) \
  32:         RegSetValueEx(myKey, name, 0, t, (LPBYTE) var, s);
  33: 
  34: int LoadConfig() {
  35:         HKEY myKey;
  36:         DWORD type,size;
  37:         PcsxConfig *Conf = &Config;
  38:         char text[256];
  39:         int err;
  40: 
  41:         if (RegOpenKeyEx(HKEY_CURRENT_USER,cfgfile,0,KEY_ALL_ACCESS,&myKey)!=ERROR_SUCCESS) return -1;
  42: 
  43:         err = 1;
  44:         QueryKeyV(256, "Bios", Conf->Bios);
  45:         QueryKeyV(256, "Gpu",  Conf->Gpu);
  46:         QueryKeyV(256, "Spu",  Conf->Spu);
  47:         QueryKeyV(256, "Cdr",  Conf->Cdr);
  48:         QueryKeyV(256, "Pad1", Conf->Pad1);
  49:         QueryKeyV(256, "Pad2", Conf->Pad2);
  50:         QueryKeyV(256, "Mcd1", Conf->Mcd1);
  51:         QueryKeyV(256, "Mcd2", Conf->Mcd2);
  52:         QueryKeyV(256, "PluginsDir", Conf->PluginsDir);
  53:         QueryKeyV(256, "BiosDir",    Conf->BiosDir);
  54:         err = 0;
  55:         QueryKeyV(256, "Net",  Conf->Net);
  56:         QueryKeyV(256, "Lang", Conf->Lang);
  57:         QueryKeyV(sizeof(Conf->Xa),      "Xa",      &Conf->Xa);
  58:         QueryKeyV(sizeof(Conf->Sio),     "Sio",     &Conf->Sio);
  59:         QueryKeyV(sizeof(Conf->Mdec),    "Mdec",    &Conf->Mdec);
  60:         QueryKeyV(sizeof(Conf->PsxAuto), "PsxAuto", &Conf->PsxAuto);
  61:         QueryKeyV(sizeof(Conf->PsxType), "PsxType", &Conf->PsxType);
  62:         QueryKeyV(sizeof(Conf->QKeys),   "QKeys",   &Conf->QKeys);
  63:         QueryKeyV(sizeof(Conf->Cdda),    "Cdda",    &Conf->Cdda);
  64:         QueryKeyV(sizeof(Conf->Cpu),     "Cpu",     &Conf->Cpu);
  65:         QueryKeyV(sizeof(Conf->PsxOut),  "PsxOut",  &Conf->PsxOut);
  66:         QueryKeyV(sizeof(Conf->SpuIrq),  "SpuIrq",  &Conf->SpuIrq);
  67:         QueryKeyV(sizeof(Conf->RCntFix), "RCntFix", &Conf->RCntFix);
  68:         QueryKeyV(sizeof(Conf->VSyncWA), "VSyncWA", &Conf->VSyncWA);
  69: 
  70:         RegCloseKey(myKey);
  71: 
  72: #ifdef ENABLE_NLS
  73:         sprintf(text, "LANGUAGE=%s", Conf->Lang);
  74:         gettext_putenv(text);
  75: #endif
  76: 
  77:         return 0;
  78: }
  79: 
  80: /////////////////////////////////////////////////////////
  81: 
  82: void SaveConfig() {
  83:         HKEY myKey;
  84:         DWORD myDisp;
  85:         PcsxConfig *Conf = &Config;
  86: 
  87:         RegCreateKeyEx(HKEY_CURRENT_USER, cfgfile, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &myKey, &myDisp);
  88: 
  89:         SetKeyV("Bios", Conf->Bios, strlen(Conf->Bios), REG_SZ);
  90:         SetKeyV("Gpu",  Conf->Gpu,  strlen(Conf->Gpu),  REG_SZ);
  91:         SetKeyV("Spu",  Conf->Spu,  strlen(Conf->Spu),  REG_SZ);
  92:         SetKeyV("Cdr",  Conf->Cdr,  strlen(Conf->Cdr),  REG_SZ);
  93:         SetKeyV("Pad1", Conf->Pad1, strlen(Conf->Pad1), REG_SZ);
  94:         SetKeyV("Pad2", Conf->Pad2, strlen(Conf->Pad2), REG_SZ);
  95:         SetKeyV("Net",  Conf->Net,  strlen(Conf->Net),  REG_SZ);
  96:         SetKeyV("Mcd1", Conf->Mcd1, strlen(Conf->Mcd1), REG_SZ);
  97:         SetKeyV("Mcd2", Conf->Mcd2, strlen(Conf->Mcd2), REG_SZ);
  98:         SetKeyV("Lang", Conf->Lang, strlen(Conf->Lang), REG_SZ);
  99:         SetKeyV("PluginsDir", Conf->PluginsDir, strlen(Conf->PluginsDir), REG_SZ);
 100:         SetKeyV("BiosDir",    Conf->BiosDir,    strlen(Conf->BiosDir), REG_SZ);
 101:         SetKeyV("Xa",      &Conf->Xa,      sizeof(Conf->Xa),      REG_DWORD);
 102:         SetKeyV("Sio",     &Conf->Sio,     sizeof(Conf->Sio),     REG_DWORD);
 103:         SetKeyV("Mdec",    &Conf->Mdec,    sizeof(Conf->Mdec),    REG_DWORD);
 104:         SetKeyV("PsxAuto", &Conf->PsxAuto, sizeof(Conf->PsxAuto), REG_DWORD);
 105:         SetKeyV("PsxType", &Conf->PsxType, sizeof(Conf->PsxType), REG_DWORD);
 106:         SetKeyV("QKeys",   &Conf->QKeys,   sizeof(Conf->QKeys),   REG_DWORD);
 107:         SetKeyV("Cdda",    &Conf->Cdda,    sizeof(Conf->Cdda),    REG_DWORD);
 108:         SetKeyV("Cpu",     &Conf->Cpu,     sizeof(Conf->Cpu),     REG_DWORD);
 109:         SetKeyV("PsxOut",  &Conf->PsxOut,  sizeof(Conf->PsxOut),  REG_DWORD);
 110:         SetKeyV("SpuIrq",  &Conf->SpuIrq,  sizeof(Conf->SpuIrq),  REG_DWORD);
 111:         SetKeyV("RCntFix", &Conf->RCntFix, sizeof(Conf->RCntFix), REG_DWORD);
 112:         SetKeyV("VSyncWA", &Conf->VSyncWA, sizeof(Conf->VSyncWA), REG_DWORD);
 113: 
 114:         RegCloseKey(myKey);
 115: }
 116: 
 117: /////////////////////////////////////////////////////////
 118: 
 119: #define ComboAddPlugin(hw, str) { \
 120:         lp = (char *)malloc(strlen(FindData.cFileName)+8); \
 121:         sprintf(lp, "%s", FindData.cFileName); \
 122:         i = ComboBox_AddString(hw, tmpStr); \
 123:         ComboBox_SetItemData(hw, i, lp); \
 124:         if (stricmp(str, lp)==0) \
 125:                 ComboBox_SetCurSel(hw, i); \
 126: }
 127: 
 128: BOOL OnConfigurePluginsDialog(HWND hW) {
 129:         WIN32_FIND_DATA FindData;
 130:         HANDLE Find;
 131:         HANDLE Lib;
 132:         PSEgetLibType    PSE_GetLibType;
 133:         PSEgetLibName    PSE_GetLibName;
 134:         PSEgetLibVersion PSE_GetLibVersion;
 135:         HWND hWC_GPU=GetDlgItem(hW,IDC_LISTGPU);
 136:         HWND hWC_SPU=GetDlgItem(hW,IDC_LISTSPU);
 137:         HWND hWC_CDR=GetDlgItem(hW,IDC_LISTCDR);
 138:         HWND hWC_PAD1=GetDlgItem(hW,IDC_LISTPAD1);
 139:         HWND hWC_PAD2=GetDlgItem(hW,IDC_LISTPAD2);
 140:         HWND hWC_BIOS=GetDlgItem(hW,IDC_LISTBIOS);
 141:         char tmpStr[256];
 142:         char *lp;
 143:         int i;
 144: 
 145:         strcpy(tmpStr, Config.PluginsDir);
 146:         strcat(tmpStr, "*.dll");
 147:         Find = FindFirstFile(tmpStr, &FindData);
 148: 
 149:         do {
 150:                 if (Find==INVALID_HANDLE_VALUE) break;
 151:                 sprintf(tmpStr,"%s%s", Config.PluginsDir, FindData.cFileName);
 152:                 Lib = LoadLibrary(tmpStr);
 153:                 if (Lib!=NULL) {
 154:                         PSE_GetLibType = (PSEgetLibType) GetProcAddress((HMODULE)Lib,"PSEgetLibType");
 155:                         PSE_GetLibName = (PSEgetLibName) GetProcAddress((HMODULE)Lib,"PSEgetLibName");
 156:                         PSE_GetLibVersion = (PSEgetLibVersion) GetProcAddress((HMODULE)Lib,"PSEgetLibVersion");
 157: 
 158:                         if (PSE_GetLibType != NULL && PSE_GetLibName != NULL && PSE_GetLibVersion != NULL) {
 159:                                 unsigned long version = PSE_GetLibVersion();
 160:                                 long type;
 161: 
 162:                                 sprintf(tmpStr, "%s %d.%d", PSE_GetLibName(), (int)(version>>8)&0xff, (int)version&0xff);
 163:                                 type = PSE_GetLibType();
 164:                                 if (type & PSE_LT_CDR) {
 165:                                         ComboAddPlugin(hWC_CDR, Config.Cdr);
 166:                                 }
 167: 
 168:                                 if (type & PSE_LT_SPU) {
 169:                                         ComboAddPlugin(hWC_SPU, Config.Spu);
 170:                                 }
 171: 
 172:                                 if (type & PSE_LT_GPU) {
 173:                                         ComboAddPlugin(hWC_GPU, Config.Gpu);
 174:                                 }
 175: 
 176:                                 if (type & PSE_LT_PAD) {
 177:                                         PADquery query;
 178: 
 179:                                         query = (PADquery)GetProcAddress((HMODULE)Lib, "PADquery");
 180:                                         if (query != NULL) {
 181:                                                 if (query() & 0x1)
 182:                                                         ComboAddPlugin(hWC_PAD1, Config.Pad1);
 183:                                                 if (query() & 0x2)
 184:                                                         ComboAddPlugin(hWC_PAD2, Config.Pad2);
 185:                                         } else { // just a guess
 186:                                                 ComboAddPlugin(hWC_PAD1, Config.Pad1);
 187:                                         }
 188:                                 }
 189:                         }
 190:                 }
 191:         } while (FindNextFile(Find,&FindData));
 192: 
 193:         if (Find!=INVALID_HANDLE_VALUE) FindClose(Find);
 194: 
 195: // BIOS
 196: 
 197:         lp=(char *)malloc(strlen("HLE") + 1);
 198:         sprintf(lp, "HLE");
 199:         i=ComboBox_AddString(hWC_BIOS, "Internal HLE Bios");
 200:         ComboBox_SetItemData(hWC_BIOS, i, lp);
 201:         if (stricmp(Config.Bios, lp)==0)
 202:                 ComboBox_SetCurSel(hWC_BIOS, i);
 203: 
 204:         strcpy(tmpStr, Config.BiosDir);
 205:         strcat(tmpStr, "*");
 206:         Find=FindFirstFile(tmpStr, &FindData);
 207: 
 208:         do {
 209:                 if (Find==INVALID_HANDLE_VALUE) break;
 210:                 if (!strcmp(FindData.cFileName, ".")) continue;
 211:                 if (!strcmp(FindData.cFileName, "..")) continue;
 212:                 if (FindData.nFileSizeLow != 1024 * 512) continue;
 213:                 lp = (char *)malloc(strlen(FindData.cFileName)+8);
 214:                 sprintf(lp, "%s", (char *)FindData.cFileName);
 215:                 i = ComboBox_AddString(hWC_BIOS, FindData.cFileName);
 216:                 ComboBox_SetItemData(hWC_BIOS, i, lp);
 217:                 if (stricmp(Config.Bios, FindData.cFileName)==0)
 218:                         ComboBox_SetCurSel(hWC_BIOS, i);
 219:         } while (FindNextFile(Find,&FindData));
 220:     
 221:         if (Find!=INVALID_HANDLE_VALUE) FindClose(Find);
 222: 
 223:         if (ComboBox_GetCurSel(hWC_CDR ) == -1)
 224:                 ComboBox_SetCurSel(hWC_CDR,  0);
 225:         if (ComboBox_GetCurSel(hWC_GPU ) == -1)
 226:                 ComboBox_SetCurSel(hWC_GPU,  0);
 227:         if (ComboBox_GetCurSel(hWC_SPU ) == -1)
 228:                 ComboBox_SetCurSel(hWC_SPU,  0);
 229:         if (ComboBox_GetCurSel(hWC_PAD1) == -1)
 230:                 ComboBox_SetCurSel(hWC_PAD1, 0);
 231:         if (ComboBox_GetCurSel(hWC_PAD2) == -1)
 232:                 ComboBox_SetCurSel(hWC_PAD2, 0);
 233:         if (ComboBox_GetCurSel(hWC_BIOS) == -1)
 234:                 ComboBox_SetCurSel(hWC_BIOS, 0);
 235: 
 236:         return TRUE;
 237: }
 238:         
 239: #define CleanCombo(item) \
 240:         hWC = GetDlgItem(hW, item); \
 241:         iCnt = ComboBox_GetCount(hWC); \
 242:         for (i=0; i<iCnt; i++) { \
 243:                 lp = (char *)ComboBox_GetItemData(hWC, i); \
 244:                 if (lp) free(lp); \
 245:         } \
 246:         ComboBox_ResetContent(hWC);
 247: 
 248: void CleanUpCombos(HWND hW) {
 249:         int i,iCnt;HWND hWC;char * lp;
 250: 
 251:         CleanCombo(IDC_LISTGPU);
 252:         CleanCombo(IDC_LISTSPU);
 253:         CleanCombo(IDC_LISTCDR);
 254:         CleanCombo(IDC_LISTPAD1);
 255:         CleanCombo(IDC_LISTPAD2);
 256:         CleanCombo(IDC_LISTBIOS);
 257: }
 258: 
 259: 
 260: void OnCancel(HWND hW) {
 261:         CleanUpCombos(hW);
 262:         EndDialog(hW,FALSE);
 263: }
 264: 
 265: 
 266: char *GetSelDLL(HWND hW,int id) {
 267:         HWND hWC = GetDlgItem(hW,id);
 268:         int iSel;
 269:         iSel = ComboBox_GetCurSel(hWC);
 270:         if (iSel<0) return NULL;
 271:         return (char *)ComboBox_GetItemData(hWC, iSel);
 272: }
 273: 
 274: 
 275: void OnOK(HWND hW) {
 276:         char * gpuDLL=GetSelDLL(hW,IDC_LISTGPU);
 277:         char * spuDLL=GetSelDLL(hW,IDC_LISTSPU);
 278:         char * cdrDLL=GetSelDLL(hW,IDC_LISTCDR);
 279:         char * pad1DLL=GetSelDLL(hW,IDC_LISTPAD1);
 280:         char * pad2DLL=GetSelDLL(hW,IDC_LISTPAD2);
 281:         char * biosFILE=GetSelDLL(hW,IDC_LISTBIOS);
 282: 
 283:     if ((gpuDLL==NULL) || (spuDLL ==NULL) ||
 284:        (cdrDLL ==NULL) || (pad1DLL==NULL) ||
 285:            (pad2DLL==NULL) ||(biosFILE==NULL)) {
 286:                 MessageBox(hW,"Configuration not OK!","Error",MB_OK|MB_ICONERROR);
 287:                 return;
 288:         }
 289: 
 290:         strcpy(Config.Bios, biosFILE);
 291:         strcpy(Config.Gpu,  gpuDLL);
 292:         strcpy(Config.Spu,  spuDLL);
 293:         strcpy(Config.Cdr,  cdrDLL);
 294:         strcpy(Config.Pad1, pad1DLL);
 295:         strcpy(Config.Pad2, pad2DLL);
 296: 
 297:         SaveConfig();
 298: 
 299:         CleanUpCombos(hW);
 300: 
 301:         if (!ConfPlug) {
 302:                 NeedReset = 1;
 303:                 ReleasePlugins();
 304:                 LoadPlugins();
 305:         }
 306:         EndDialog(hW,TRUE);
 307: }
 308: 
 309: 
 310: #define ConfPlugin(src, confs, name) \
 311:         void *drv; \
 312:         src conf; \
 313:         char * pDLL = GetSelDLL(hW, confs); \
 314:         char file[256]; \
 315:         if(pDLL==NULL) return; \
 316:         strcpy(file, Config.PluginsDir); \
 317:         strcat(file, pDLL); \
 318:         drv = SysLoadLibrary(file); \
 319:         if (drv == NULL) return; \
 320:         conf = (src) SysLoadSym(drv, name); \
 321:         if (SysLibError() == NULL) conf(); \
 322:         SysCloseLibrary(drv);
 323: 
 324: void ConfigureGPU(HWND hW) {
 325:         ConfPlugin(GPUconfigure, IDC_LISTGPU, "GPUconfigure");
 326: }
 327: 
 328: void ConfigureSPU(HWND hW) {
 329:         ConfPlugin(SPUconfigure, IDC_LISTSPU, "SPUconfigure");
 330: }
 331: 
 332: void ConfigureCDR(HWND hW) {
 333:         ConfPlugin(CDRconfigure, IDC_LISTCDR, "CDRconfigure");
 334: }
 335: 
 336: void ConfigureNET(HWND hW) {
 337:         ConfPlugin(NETconfigure, IDC_LISTNET, "NETconfigure");
 338: }
 339: 
 340: void ConfigurePAD1(HWND hW) {
 341:         ConfPlugin(PADconfigure, IDC_LISTPAD1, "PADconfigure");
 342: }
 343: 
 344: void ConfigurePAD2(HWND hW) {
 345:         ConfPlugin(PADconfigure, IDC_LISTPAD2, "PADconfigure");
 346: }
 347: 
 348: 
 349: void AboutGPU(HWND hW) {
 350:         ConfPlugin(GPUabout, IDC_LISTGPU, "GPUabout");
 351: }
 352: 
 353: void AboutSPU(HWND hW) {
 354:         ConfPlugin(SPUabout, IDC_LISTSPU, "SPUabout");
 355: }
 356: 
 357: void AboutCDR(HWND hW) {
 358:         ConfPlugin(CDRabout, IDC_LISTCDR, "CDRabout");
 359: }
 360: 
 361: void AboutNET(HWND hW) {
 362:         ConfPlugin(NETabout, IDC_LISTNET, "NETabout");
 363: }
 364: 
 365: void AboutPAD1(HWND hW) {
 366:         ConfPlugin(PADabout, IDC_LISTPAD1, "PADabout");
 367: }
 368: 
 369: void AboutPAD2(HWND hW) {
 370:         ConfPlugin(PADabout, IDC_LISTPAD2, "PADabout");
 371: }
 372: 
 373: 
 374: #define TestPlugin(src, confs, name) \
 375:         void *drv; \
 376:         src conf; \
 377:         int ret = 0; \
 378:         char * pDLL = GetSelDLL(hW, confs); \
 379:         char file[256]; \
 380:         if (pDLL== NULL) return; \
 381:         strcpy(file, Config.PluginsDir); \
 382:         strcat(file, pDLL); \
 383:         drv = SysLoadLibrary(file); \
 384:         if (drv == NULL) return; \
 385:         conf = (src) SysLoadSym(drv, name); \
 386:         if (SysLibError() == NULL) { \
 387:                 ret = conf(); \
 388:                 if (ret == 0) \
 389:                          SysMessage(_("This plugin reports that should work correctly")); \
 390:                 else SysMessage(_("This plugin reports that should not work correctly")); \
 391:         } \
 392:         SysCloseLibrary(drv);
 393: 
 394: void TestGPU(HWND hW) {
 395:         TestPlugin(GPUtest, IDC_LISTGPU, "GPUtest");
 396: }
 397: 
 398: void TestSPU(HWND hW) {
 399:         TestPlugin(SPUtest, IDC_LISTSPU, "SPUtest");
 400: }
 401: 
 402: void TestCDR(HWND hW) {
 403:         TestPlugin(CDRtest, IDC_LISTCDR, "CDRtest");
 404: }
 405: 
 406: void TestNET(HWND hW) {
 407:         TestPlugin(NETtest, IDC_LISTNET, "NETtest");
 408: }
 409: 
 410: void TestPAD1(HWND hW) {
 411:         TestPlugin(PADtest, IDC_LISTPAD1, "PADtest");
 412: }
 413: 
 414: void TestPAD2(HWND hW) {
 415:         TestPlugin(PADtest, IDC_LISTPAD2, "PADtest");
 416: }
 417: 
 418: #include <shlobj.h>
 419: 
 420: int SelectPath(HWND hW, char *Title, char *Path) {
 421:         LPITEMIDLIST pidl;
 422:         BROWSEINFO bi;
 423:         char Buffer[256];
 424: 
 425:         bi.hwndOwner = hW;
 426:         bi.pidlRoot = NULL;
 427:         bi.pszDisplayName = Buffer;
 428:         bi.lpszTitle = Title;
 429:         bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
 430:         bi.lpfn = NULL;
 431:         bi.lParam = 0;
 432:         if ((pidl = SHBrowseForFolder(&bi)) != NULL) {
 433:                 if (SHGetPathFromIDList(pidl, Path)) {
 434:                         int len = strlen(Path);
 435: 
 436:                         if (Path[len - 1] != '\\') { strcat(Path,"\\"); }
 437:                         return 0;
 438:                 }
 439:         }
 440:         return -1;
 441: }
 442: 
 443: void SetPluginsDir(HWND hW) {
 444:         char Path[256];
 445: 
 446:         if (SelectPath(hW, "Select Plugins Directory", Path) == -1) return;
 447:         strcpy(Config.PluginsDir, Path);
 448:         CleanUpCombos(hW);
 449:         OnConfigurePluginsDialog(hW);
 450: }
 451: 
 452: void SetBiosDir(HWND hW) {
 453:         char Path[256];
 454: 
 455:         if (SelectPath(hW, "Select Bios Directory", Path) == -1) return;
 456:         strcpy(Config.BiosDir, Path);
 457:         CleanUpCombos(hW);
 458:         OnConfigurePluginsDialog(hW);
 459: }
 460: 
 461: BOOL CALLBACK ConfigurePluginsDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 462:         switch(uMsg) {
 463:                 case WM_INITDIALOG:
 464:                         SetWindowText(hW, _("Configuration"));
 465: 
 466:                         Button_SetText(GetDlgItem(hW, IDOK), _("OK"));
 467:                         Button_SetText(GetDlgItem(hW, IDCANCEL), _("Cancel"));
 468:                         Static_SetText(GetDlgItem(hW, IDC_GRAPHICS), _("Graphics"));
 469:                         Static_SetText(GetDlgItem(hW, IDC_FIRSTCONTROLLER), _("First Controller"));
 470:                         Static_SetText(GetDlgItem(hW, IDC_SECONDCONTROLLER), _("Second Controller"));
 471:                         Static_SetText(GetDlgItem(hW, IDC_SOUND), _("Sound"));
 472:                         Static_SetText(GetDlgItem(hW, IDC_CDROM), _("Cdrom"));
 473:                         Static_SetText(GetDlgItem(hW, IDC_BIOS), _("Bios"));
 474:                         Button_SetText(GetDlgItem(hW, IDC_BIOSDIR), _("Set Bios Directory"));
 475:                         Button_SetText(GetDlgItem(hW, IDC_PLUGINSDIR), _("Set Plugins Directory"));
 476:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGGPU), _("Configure..."));
 477:                         Button_SetText(GetDlgItem(hW, IDC_TESTGPU), _("Test..."));
 478:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTGPU), _("About..."));
 479:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGSPU), _("Configure..."));
 480:                         Button_SetText(GetDlgItem(hW, IDC_TESTSPU), _("Test..."));
 481:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTSPU), _("About..."));
 482:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGCDR), _("Configure..."));
 483:                         Button_SetText(GetDlgItem(hW, IDC_TESTCDR), _("Test..."));
 484:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTCDR), _("About..."));
 485:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGPAD1), _("Configure..."));
 486:                         Button_SetText(GetDlgItem(hW, IDC_TESTPAD1), _("Test..."));
 487:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTPAD1), _("About..."));
 488:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGPAD2), _("Configure..."));
 489:                         Button_SetText(GetDlgItem(hW, IDC_TESTPAD2), _("Test..."));
 490:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTPAD2), _("About..."));
 491: 
 492:                         return OnConfigurePluginsDialog(hW);
 493: 
 494:                 case WM_COMMAND:
 495:                         switch(LOWORD(wParam)) {
 496:                                 case IDC_CONFIGGPU:  ConfigureGPU(hW); return TRUE;
 497:                         case IDC_CONFIGSPU:  ConfigureSPU(hW); return TRUE;
 498:                         case IDC_CONFIGCDR:  ConfigureCDR(hW); return TRUE;
 499:                         case IDC_CONFIGPAD1: ConfigurePAD1(hW); return TRUE;
 500:                         case IDC_CONFIGPAD2: ConfigurePAD2(hW); return TRUE;
 501: 
 502:                                 case IDC_TESTGPU:    TestGPU(hW);   return TRUE;
 503:                                 case IDC_TESTSPU:    TestSPU(hW);   return TRUE;
 504:                                 case IDC_TESTCDR:    TestCDR(hW);   return TRUE;
 505:                                 case IDC_TESTPAD1:   TestPAD1(hW);  return TRUE;
 506:                                 case IDC_TESTPAD2:   TestPAD2(hW);  return TRUE;
 507: 
 508:                                 case IDC_ABOUTGPU:   AboutGPU(hW);  return TRUE;
 509:                                 case IDC_ABOUTSPU:   AboutSPU(hW);  return TRUE;
 510:                 case IDC_ABOUTCDR:   AboutCDR(hW);  return TRUE;
 511:                 case IDC_ABOUTPAD1:  AboutPAD1(hW); return TRUE;
 512:                     case IDC_ABOUTPAD2:  AboutPAD2(hW); return TRUE;
 513: 
 514:                                 case IDC_PLUGINSDIR: SetPluginsDir(hW); return TRUE;
 515:                                 case IDC_BIOSDIR:        SetBiosDir(hW);        return TRUE;
 516: 
 517:                                 case IDCANCEL: 
 518:                                         OnCancel(hW); 
 519:                                         if (CancelQuit) {
 520:                                                 SysClose(); exit(1);
 521:                                         }
 522:                                         return TRUE;
 523:                                 case IDOK:     
 524:                                         OnOK(hW);     
 525:                                         return TRUE;
 526:                         }
 527:         }
 528:         return FALSE;
 529: }
 530: 
 531: 
 532: void ConfigurePlugins(HWND hWnd) {
 533:     DialogBox(gApp.hInstance,
 534:               MAKEINTRESOURCE(IDD_CONFIG),
 535:               hWnd,  
 536:               (DLGPROC)ConfigurePluginsDlgProc);
 537: }
 538: 
 539: // NetPlay Config Dialog
 540: 
 541: BOOL OnConfigureNetPlayDialog(HWND hW) {
 542:         WIN32_FIND_DATA FindData;
 543:         HANDLE Find;
 544:         HANDLE Lib;
 545:         PSEgetLibType    PSE_GetLibType;
 546:         PSEgetLibName    PSE_GetLibName;
 547:         PSEgetLibVersion PSE_GetLibVersion;
 548:         HWND hWC_NET=GetDlgItem(hW,IDC_LISTNET);
 549:         char tmpStr[256];
 550:         char *lp;
 551:         int i;
 552: 
 553:         strcpy(tmpStr, Config.PluginsDir);
 554:         strcat(tmpStr, "*.dll");
 555:         Find = FindFirstFile(tmpStr, &FindData);
 556: 
 557:         lp = (char *)malloc(strlen("Disabled")+8);
 558:         sprintf(lp, "Disabled");
 559:         i = ComboBox_AddString(hWC_NET, "Disabled");
 560:         ComboBox_SetItemData(hWC_NET, i, lp);
 561:         ComboBox_SetCurSel(hWC_NET,  0);
 562: 
 563:         do {
 564:                 if (Find==INVALID_HANDLE_VALUE) break;
 565:                 sprintf(tmpStr,"%s%s", Config.PluginsDir, FindData.cFileName);
 566:                 Lib = LoadLibrary(tmpStr);
 567:                 if (Lib!=NULL) {
 568:                         PSE_GetLibType = (PSEgetLibType) GetProcAddress((HMODULE)Lib,"PSEgetLibType");
 569:                         PSE_GetLibName = (PSEgetLibName) GetProcAddress((HMODULE)Lib,"PSEgetLibName");
 570:                         PSE_GetLibVersion = (PSEgetLibVersion) GetProcAddress((HMODULE)Lib,"PSEgetLibVersion");
 571: 
 572:                         if (PSE_GetLibType != NULL && PSE_GetLibName != NULL && PSE_GetLibVersion != NULL) {
 573:                                 unsigned long version = PSE_GetLibVersion();
 574:                                 long type;
 575: 
 576:                                 sprintf(tmpStr, "%s %d.%d", PSE_GetLibName(), (int)(version>>8)&0xff, (int)version&0xff);
 577:                                 type = PSE_GetLibType();
 578:                                 if (type & PSE_LT_NET  && ((version >> 16) == 2)) {
 579:                                         ComboAddPlugin(hWC_NET, Config.Net);
 580:                                 }
 581:                         }
 582:                 }
 583:         } while (FindNextFile(Find,&FindData));
 584: 
 585:         if (Find!=INVALID_HANDLE_VALUE) FindClose(Find);
 586: 
 587:         return TRUE;
 588: }
 589: 
 590: BOOL CALLBACK ConfigureNetPlayDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 591:         int i,iCnt;HWND hWC;char * lp;
 592: 
 593:         switch(uMsg) {
 594:                 case WM_INITDIALOG:
 595:                         SetWindowText(hW, _("NetPlay Configuration"));
 596: 
 597:                         Button_SetText(GetDlgItem(hW, IDOK), _("OK"));
 598:                         Button_SetText(GetDlgItem(hW, IDCANCEL), _("Cancel"));
 599:                         Static_SetText(GetDlgItem(hW, IDC_NETPLAY), _("NetPlay"));
 600:                         Button_SetText(GetDlgItem(hW, IDC_CONFIGNET), _("Configure..."));
 601:                         Button_SetText(GetDlgItem(hW, IDC_TESTNET), _("Test..."));
 602:                         Button_SetText(GetDlgItem(hW, IDC_ABOUTNET), _("About..."));
 603:                         Static_SetText(GetDlgItem(hW, IDC_NETPLAYNOTE), _("Note: The NetPlay Plugin Directory should be the same as the other Plugins."));
 604: 
 605:                         OnConfigureNetPlayDialog(hW);
 606:                         return TRUE;
 607: 
 608:                 case WM_COMMAND: {
 609:                 switch (LOWORD(wParam)) {
 610:                                 case IDC_CONFIGNET:  ConfigureNET(hW); return TRUE;
 611:                                 case IDC_TESTNET:    TestNET(hW);   return TRUE;
 612:                                 case IDC_ABOUTNET:   AboutNET(hW);  return TRUE;
 613: 
 614:                                 case IDCANCEL: 
 615:                                         CleanCombo(IDC_LISTNET);
 616:                                         EndDialog(hW,FALSE); 
 617:                                         return TRUE;
 618: 
 619:                                 case IDOK:
 620:                                         strcpy(Config.Net, GetSelDLL(hW, IDC_LISTNET));
 621: 
 622:                                         SaveConfig();
 623: 
 624:                                         CleanUpCombos(hW);
 625: 
 626:                                         NeedReset = 1;
 627:                                         ReleasePlugins();
 628:                                         LoadPlugins();
 629: 
 630:                                         CleanCombo(IDC_LISTNET);
 631: 
 632:                                         EndDialog(hW,TRUE);
 633: 
 634:                                         return TRUE;
 635:                         }
 636:                 }
 637:         }
 638: 
 639:         return FALSE;
 640: }
 641: 
 642: /* arch-tag: Matthew Dempsky Wed Oct 15 10:34:58 CST 2003 (Win32/ConfigurePlugins.c)
 643:  */
 644: 








































Html form generated by Xrefactory version 1.6.4 on Fri Dec 12 20:52:56 2003
Trial version.