Commit | Line | Data |
---|---|---|
ef79bbde P |
1 | #ifndef _PSEMU_PLUGIN_DEFS_H |
2 | #define _PSEMU_PLUGIN_DEFS_H | |
3 | ||
4 | #ifdef __cplusplus | |
5 | extern "C" { | |
6 | #endif | |
7 | ||
8 | // header version | |
9 | #define _PPDK_HEADER_VERSION 3 | |
10 | ||
11 | #define PLUGIN_VERSION 1 | |
12 | ||
13 | // plugin type returned by PSEgetLibType (types can be merged if plugin is multi type!) | |
14 | #define PSE_LT_CDR 1 | |
15 | #define PSE_LT_GPU 2 | |
16 | #define PSE_LT_SPU 4 | |
17 | #define PSE_LT_PAD 8 | |
18 | #define PSE_LT_NET 16 | |
19 | ||
20 | // DLL function return codes | |
21 | #define PSE_ERR_SUCCESS 0 // every function in DLL if completed sucessfully should return this value | |
22 | #define PSE_ERR_FATAL -1 // undefined error but fatal one, that kills all functionality | |
23 | ||
24 | // XXX_Init return values | |
25 | // Those return values apply to all libraries | |
26 | // currently obsolete - preserved for compatibilty | |
27 | ||
28 | #define PSE_INIT_ERR_SUCCESS 0 // initialization went OK | |
29 | #define PSE_INIT_ERR_NOTCONFIGURED -2 // this driver is not configured | |
30 | #define PSE_INIT_ERR_NOHARDWARE -3 // this driver can not operate properly on this hardware or hardware is not detected | |
31 | ||
32 | /* GPU PlugIn */ | |
33 | ||
34 | // GPU_Test return values | |
35 | ||
36 | // sucess, everything configured, and went OK. | |
37 | #define PSE_GPU_ERR_SUCCESS 0 | |
38 | ||
39 | // ERRORS | |
40 | // this error might be returned as critical error but none of below | |
41 | #define PSE_GPU_ERR -20 | |
42 | ||
43 | ||
44 | // this driver is not configured | |
45 | #define PSE_GPU_ERR_NOTCONFIGURED PSE_GPU_ERR - 1 | |
46 | // this driver failed Init | |
47 | #define PSE_GPU_ERR_INIT PSE_GPU_ERR - 2 | |
48 | ||
49 | // WARNINGS | |
50 | // this warning might be returned as undefined warning but allowing driver to continue | |
51 | #define PSE_GPU_WARN 20 | |
52 | ||
53 | // GPU_Query - will be implemented soon | |
54 | ||
55 | typedef struct | |
56 | { | |
4c08b9e7 | 57 | unsigned int flags; |
58 | unsigned int status; | |
ef79bbde P |
59 | void* window; |
60 | unsigned char reserved[100]; | |
61 | } gpuQueryS; | |
62 | ||
63 | // gpuQueryS.flags | |
64 | // if driver can operate in both modes it must support GPU_changeMode(); | |
65 | #define PSE_GPU_FLAGS_FULLSCREEN 1 // this driver can operate in fullscreen mode | |
66 | #define PSE_GPU_FLAGS_WINDOWED 2 // this driver can operate in windowed mode | |
67 | ||
68 | // gpuQueryS.status | |
69 | #define PSE_GPU_STATUS_WINDOWWRONG 1 // this driver cannot operate in this windowed mode | |
70 | ||
71 | // GPU_Query End - will be implemented in v2 | |
72 | ||
73 | ||
74 | /* CDR PlugIn */ | |
75 | ||
76 | // CDR_Test return values | |
77 | ||
78 | // sucess, everything configured, and went OK. | |
79 | #define PSE_CDR_ERR_SUCCESS 0 | |
80 | ||
81 | // general failure (error undefined) | |
82 | #define PSE_CDR_ERR_FAILURE -1 | |
83 | ||
84 | // ERRORS | |
85 | #define PSE_CDR_ERR -40 | |
86 | // this driver is not configured | |
87 | #define PSE_CDR_ERR_NOTCONFIGURED PSE_CDR_ERR - 0 | |
88 | // if this driver is unable to read data from medium | |
89 | #define PSE_CDR_ERR_NOREAD PSE_CDR_ERR - 1 | |
90 | ||
91 | // WARNINGS | |
92 | #define PSE_CDR_WARN 40 | |
93 | // if this driver emulates lame mode ie. can read only 2048 tracks and sector header is emulated | |
94 | // this might happen to CDROMS that do not support RAW mode reading - surelly it will kill many games | |
95 | #define PSE_CDR_WARN_LAMECD PSE_CDR_WARN + 0 | |
96 | ||
97 | ||
98 | ||
99 | ||
100 | /* SPU PlugIn */ | |
101 | ||
102 | // some info retricted (now!) | |
103 | ||
104 | // sucess, everything configured, and went OK. | |
105 | #define PSE_SPU_ERR_SUCCESS 0 | |
106 | ||
107 | // ERRORS | |
108 | // this error might be returned as critical error but none of below | |
109 | #define PSE_SPU_ERR -60 | |
110 | ||
111 | // this driver is not configured | |
112 | #define PSE_SPU_ERR_NOTCONFIGURED PSE_SPU_ERR - 1 | |
113 | // this driver failed Init | |
114 | #define PSE_SPU_ERR_INIT PSE_SPU_ERR - 2 | |
115 | ||
116 | ||
117 | // WARNINGS | |
118 | // this warning might be returned as undefined warning but allowing driver to continue | |
119 | #define PSE_SPU_WARN 60 | |
120 | ||
121 | ||
122 | ||
123 | ||
124 | /* PAD PlugIn */ | |
125 | ||
126 | /* | |
127 | ||
128 | functions that must be exported from PAD Plugin | |
129 | ||
130 | long PADinit(long flags); // called only once when PSEmu Starts | |
131 | void PADshutdown(void); // called when PSEmu exits | |
132 | long PADopen(PadInitS *); // called when PSEmu is running program | |
133 | long PADclose(void); | |
134 | long PADconfigure(void); | |
135 | void PADabout(void); | |
136 | long PADtest(void); // called from Configure Dialog and after PADopen(); | |
137 | long PADquery(void); | |
138 | ||
139 | unsigned char PADstartPoll(int); | |
140 | unsigned char PADpoll(unsigned char); | |
141 | ||
142 | */ | |
143 | ||
144 | // PADquery responses (notice - values ORed) | |
145 | // PSEmu will use them also in PADinit to tell Plugin which Ports will use | |
146 | // notice that PSEmu will call PADinit and PADopen only once when they are from | |
147 | // same plugin | |
148 | ||
149 | // might be used in port 1 | |
150 | #define PSE_PAD_USE_PORT1 1 | |
151 | // might be used in port 2 | |
152 | #define PSE_PAD_USE_PORT2 2 | |
153 | ||
154 | ||
155 | ||
156 | // MOUSE SCPH-1030 | |
157 | #define PSE_PAD_TYPE_MOUSE 1 | |
158 | // NEGCON - 16 button analog controller SLPH-00001 | |
159 | #define PSE_PAD_TYPE_NEGCON 2 | |
160 | // GUN CONTROLLER - gun controller SLPH-00014 from Konami | |
161 | #define PSE_PAD_TYPE_GUN 3 | |
162 | // STANDARD PAD SCPH-1080, SCPH-1150 | |
163 | #define PSE_PAD_TYPE_STANDARD 4 | |
164 | // ANALOG JOYSTICK SCPH-1110 | |
165 | #define PSE_PAD_TYPE_ANALOGJOY 5 | |
166 | // GUNCON - gun controller SLPH-00034 from Namco | |
167 | #define PSE_PAD_TYPE_GUNCON 6 | |
168 | // ANALOG CONTROLLER SCPH-1150 | |
169 | #define PSE_PAD_TYPE_ANALOGPAD 7 | |
170 | ||
171 | ||
172 | // sucess, everything configured, and went OK. | |
173 | #define PSE_PAD_ERR_SUCCESS 0 | |
174 | // general plugin failure (undefined error) | |
175 | #define PSE_PAD_ERR_FAILURE -1 | |
176 | ||
177 | ||
178 | // ERRORS | |
179 | // this error might be returned as critical error but none of below | |
180 | #define PSE_PAD_ERR -80 | |
181 | // this driver is not configured | |
182 | #define PSE_PAD_ERR_NOTCONFIGURED PSE_PAD_ERR - 1 | |
183 | // this driver failed Init | |
184 | #define PSE_PAD_ERR_INIT PSE_PAD_ERR - 2 | |
185 | ||
186 | ||
187 | // WARNINGS | |
188 | // this warning might be returned as undefined warning but allowing driver to continue | |
189 | #define PSE_PAD_WARN 80 | |
190 | ||
191 | ||
192 | typedef struct | |
193 | { | |
194 | // controler type - fill it withe predefined values above | |
195 | unsigned char controllerType; | |
196 | ||
197 | // status of buttons - every controller fills this field | |
198 | unsigned short buttonStatus; | |
199 | ||
200 | // for analog pad fill those next 4 bytes | |
201 | // values are analog in range 0-255 where 127 is center position | |
202 | unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY; | |
203 | ||
204 | // for mouse fill those next 2 bytes | |
205 | // values are in range -128 - 127 | |
206 | unsigned char moveX, moveY; | |
207 | ||
d71c7095 | 208 | unsigned char Vib[2]; |
209 | unsigned char VibF[2]; | |
4e477065 | 210 | |
d71c7095 | 211 | unsigned char reserved[87]; |
ef79bbde P |
212 | |
213 | } PadDataS; | |
214 | ||
215 | /* NET PlugIn v2 */ | |
216 | /* Added by linuzappz@pcsx.net */ | |
217 | ||
218 | /* Modes bits for NETsendData/NETrecvData */ | |
219 | #define PSE_NET_BLOCKING 0x00000000 | |
220 | #define PSE_NET_NONBLOCKING 0x00000001 | |
221 | ||
222 | /* note: unsupported fields should be zeroed. | |
223 | ||
224 | typedef struct { | |
225 | char EmuName[32]; | |
226 | char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character | |
227 | char CdromLabel[11]; | |
228 | void *psxMem; | |
229 | GPUshowScreenPic GPU_showScreenPic; | |
230 | GPUdisplayText GPU_displayText; | |
231 | PADsetSensitive PAD_setSensitive; | |
232 | char GPUpath[256]; | |
233 | char SPUpath[256]; | |
234 | char CDRpath[256]; | |
235 | char MCD1path[256]; | |
236 | char MCD2path[256]; | |
237 | char BIOSpath[256]; // 'HLE' for internal bios | |
238 | char Unused[1024]; | |
239 | } netInfo; | |
240 | ||
241 | */ | |
242 | ||
243 | /* | |
244 | basic funcs: | |
245 | ||
246 | long NETopen(HWND hWnd) | |
247 | opens the connection. | |
248 | shall return 0 on success, else -1. | |
249 | -1 is also returned if the user selects offline mode. | |
250 | ||
251 | long NETclose() | |
252 | closes the connection. | |
253 | shall return 0 on success, else -1. | |
254 | ||
255 | void NETpause() | |
256 | this is called when the user paused the emulator. | |
257 | ||
258 | void NETresume() | |
259 | this is called when the user resumed the emulator. | |
260 | ||
261 | long NETqueryPlayer() | |
262 | returns player number | |
263 | ||
264 | long NETsendPadData(void *pData, int Size) | |
265 | this should be called for the first pad only on each side. | |
266 | ||
267 | long NETrecvPadData(void *pData, int Pad) | |
268 | call this for Pad 1/2 to get the data sent by the above func. | |
269 | ||
270 | extended funcs: | |
271 | ||
272 | long NETsendData(void *pData, int Size, int Mode) | |
273 | sends Size bytes from pData to the other side. | |
274 | ||
275 | long NETrecvData(void *pData, int Size, int Mode) | |
276 | receives Size bytes from pData to the other side. | |
277 | ||
278 | void NETsetInfo(netInfo *info); | |
279 | sets the netInfo struct. | |
280 | ||
281 | void NETkeypressed(int key) (linux only) | |
282 | key is a XK_?? (X11) keycode. | |
283 | */ | |
284 | ||
285 | #ifdef __cplusplus | |
286 | } | |
287 | #endif | |
288 | #endif // _PSEMU_PLUGIN_DEFS_H |