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.