Commit | Line | Data |
---|---|---|
ef79bbde P |
1 | /* Pcsx - Pc Psx Emulator |
2 | * Copyright (C) 1999-2002 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 | #import <CoreFoundation/CoreFoundation.h> | |
20 | #include <stdio.h> | |
21 | #include <stdlib.h> | |
22 | #include <string.h> | |
23 | #include <signal.h> | |
24 | ||
25 | #include "psxcommon.h" | |
26 | #include "plugins.h" | |
27 | #include "spu.h" | |
28 | ||
29 | void OnFile_Exit(); | |
30 | ||
31 | unsigned long gpuDisp; | |
32 | ||
33 | long SPU__open(void) { | |
34 | return SPU_open(); | |
35 | } | |
36 | ||
37 | int StatesC = 0; | |
38 | extern int UseGui; | |
39 | int ShowPic=0; | |
40 | ||
41 | void gpuShowPic() { | |
42 | } | |
43 | ||
44 | void PADhandleKey(int key) { | |
45 | } | |
46 | ||
47 | long PAD1__open(void) { | |
48 | return PAD1_open(&gpuDisp); | |
49 | } | |
50 | ||
51 | long PAD2__open(void) { | |
52 | return PAD2_open(&gpuDisp); | |
53 | } | |
54 | ||
55 | void OnFile_Exit(); | |
56 | ||
57 | void SignalExit(int sig) { | |
58 | ClosePlugins(); | |
59 | OnFile_Exit(); | |
60 | } | |
61 | ||
62 | void SPUirq(void); | |
63 | ||
64 | #define PARSEPATH(dst, src) \ | |
65 | ptr = src + strlen(src); \ | |
66 | while (*ptr != '\\' && ptr != src) ptr--; \ | |
67 | if (ptr != src) { \ | |
68 | strcpy(dst, ptr+1); \ | |
69 | } | |
70 | ||
71 | int _OpenPlugins() { | |
72 | static char path[1024]; | |
73 | CFURLRef pathUrl; | |
74 | int ret; | |
75 | ||
76 | //signal(SIGINT, SignalExit); | |
77 | //signal(SIGPIPE, SignalExit); | |
78 | ||
79 | GPU_clearDynarec(clearDynarec); | |
80 | ||
81 | pathUrl = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("gpuPeopsSoftX.cfg"), NULL, NULL); | |
82 | if (pathUrl) | |
83 | CFURLGetFileSystemRepresentation(pathUrl, true, path, 1024); | |
84 | ||
85 | ret = CDR_open(); | |
86 | if (ret < 0) { SysMessage(_("Error Opening CDR Plugin")); return -1; } | |
87 | ret = SPU_open(); | |
88 | if (ret < 0) { SysMessage(_("Error Opening SPU Plugin")); return -1; } | |
89 | SPU_registerCallback(SPUirq); | |
90 | ret = GPU_open(&gpuDisp, "PCSX", /*pathUrl ? path :*/ NULL); | |
91 | if (ret < 0) { SysMessage(_("Error Opening GPU Plugin")); return -1; } | |
92 | ret = PAD1_open(&gpuDisp); | |
93 | if (ret < 0) { SysMessage(_("Error Opening PAD1 Plugin")); return -1; } | |
94 | ret = PAD2_open(&gpuDisp); | |
95 | if (ret < 0) { SysMessage(_("Error Opening PAD2 Plugin")); return -1; } | |
96 | ||
97 | return 0; | |
98 | } | |
99 | ||
100 | int OpenPlugins() { | |
101 | int ret; | |
102 | ||
103 | while ((ret = _OpenPlugins()) == -2) { | |
104 | ReleasePlugins(); | |
105 | LoadMcds(Config.Mcd1, Config.Mcd2); | |
106 | if (LoadPlugins() == -1) return -1; | |
107 | } | |
108 | return ret; | |
109 | } | |
110 | ||
111 | void ClosePlugins() { | |
112 | int ret; | |
113 | ||
114 | //signal(SIGINT, SIG_DFL); | |
115 | //signal(SIGPIPE, SIG_DFL); | |
116 | ret = CDR_close(); | |
117 | if (ret < 0) { SysMessage(_("Error Closing CDR Plugin")); return; } | |
118 | ret = SPU_close(); | |
119 | if (ret < 0) { SysMessage(_("Error Closing SPU Plugin")); return; } | |
120 | ret = PAD1_close(); | |
121 | if (ret < 0) { SysMessage(_("Error Closing PAD1 Plugin")); return; } | |
122 | ret = PAD2_close(); | |
123 | if (ret < 0) { SysMessage(_("Error Closing PAD2 Plugin")); return; } | |
124 | ret = GPU_close(); | |
125 | if (ret < 0) { SysMessage(_("Error Closing GPU Plugin")); return; } | |
126 | } | |
127 | ||
128 | void ResetPlugins() { | |
129 | int ret; | |
130 | ||
131 | CDR_shutdown(); | |
132 | GPU_shutdown(); | |
133 | SPU_shutdown(); | |
134 | PAD1_shutdown(); | |
135 | PAD2_shutdown(); | |
136 | ||
137 | ret = CDR_init(); | |
138 | if (ret < 0) { SysMessage(_("CDRinit error: %d"), ret); return; } | |
139 | ret = GPU_init(); | |
140 | if (ret < 0) { SysMessage(_("GPUinit error: %d"), ret); return; } | |
141 | ret = SPU_init(); | |
142 | if (ret < 0) { SysMessage(_("SPUinit error: %d"), ret); return; } | |
143 | ret = PAD1_init(1); | |
144 | if (ret < 0) { SysMessage(_("PAD1init error: %d"), ret); return; } | |
145 | ret = PAD2_init(2); | |
146 | if (ret < 0) { SysMessage(_("PAD2init error: %d"), ret); return; } | |
147 | ||
148 | NetOpened = FALSE; | |
149 | } | |
150 |