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 | ||
3c0fb554 AP |
156 | // No controller |
157 | #define PSE_PAD_TYPE_NONE 0 | |
ef79bbde P |
158 | // MOUSE SCPH-1030 |
159 | #define PSE_PAD_TYPE_MOUSE 1 | |
160 | // NEGCON - 16 button analog controller SLPH-00001 | |
161 | #define PSE_PAD_TYPE_NEGCON 2 | |
162 | // GUN CONTROLLER - gun controller SLPH-00014 from Konami | |
163 | #define PSE_PAD_TYPE_GUN 3 | |
164 | // STANDARD PAD SCPH-1080, SCPH-1150 | |
165 | #define PSE_PAD_TYPE_STANDARD 4 | |
166 | // ANALOG JOYSTICK SCPH-1110 | |
167 | #define PSE_PAD_TYPE_ANALOGJOY 5 | |
168 | // GUNCON - gun controller SLPH-00034 from Namco | |
169 | #define PSE_PAD_TYPE_GUNCON 6 | |
170 | // ANALOG CONTROLLER SCPH-1150 | |
171 | #define PSE_PAD_TYPE_ANALOGPAD 7 | |
172 | ||
173 | ||
174 | // sucess, everything configured, and went OK. | |
175 | #define PSE_PAD_ERR_SUCCESS 0 | |
176 | // general plugin failure (undefined error) | |
177 | #define PSE_PAD_ERR_FAILURE -1 | |
178 | ||
179 | ||
180 | // ERRORS | |
181 | // this error might be returned as critical error but none of below | |
182 | #define PSE_PAD_ERR -80 | |
183 | // this driver is not configured | |
184 | #define PSE_PAD_ERR_NOTCONFIGURED PSE_PAD_ERR - 1 | |
185 | // this driver failed Init | |
186 | #define PSE_PAD_ERR_INIT PSE_PAD_ERR - 2 | |
187 | ||
188 | ||
189 | // WARNINGS | |
190 | // this warning might be returned as undefined warning but allowing driver to continue | |
191 | #define PSE_PAD_WARN 80 | |
192 | ||
193 | ||
194 | typedef struct | |
195 | { | |
3b1a5e21 | 196 | // controller type - fill it withe predefined values above |
ef79bbde P |
197 | unsigned char controllerType; |
198 | ||
3b1a5e21 | 199 | //0 : no multitap between psx and pad |
29f3675b | 200 | //1 : multitap between psx and pad on port 1 |
201 | //2 : multitap between psx and pad on port 2 | |
202 | int portMultitap; | |
e288923d | 203 | int requestPadIndex; |
29f3675b | 204 | |
ef79bbde P |
205 | // status of buttons - every controller fills this field |
206 | unsigned short buttonStatus; | |
207 | ||
208 | // for analog pad fill those next 4 bytes | |
209 | // values are analog in range 0-255 where 127 is center position | |
210 | unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY; | |
211 | ||
212 | // for mouse fill those next 2 bytes | |
213 | // values are in range -128 - 127 | |
214 | unsigned char moveX, moveY; | |
215 | ||
d71c7095 | 216 | unsigned char Vib[2]; |
217 | unsigned char VibF[2]; | |
52c9fcc8 | 218 | |
219 | //configuration mode Request 0x43 | |
b1fa8177 | 220 | int configMode; |
d71c7095 | 221 | unsigned char reserved[87]; |
6190810a | 222 | |
f1fcf5ee | 223 | //Lightgun values |
6190810a | 224 | int absoluteX,absoluteY; |
ef79bbde P |
225 | |
226 | } PadDataS; | |
227 | ||
228 | /* NET PlugIn v2 */ | |
229 | /* Added by linuzappz@pcsx.net */ | |
230 | ||
231 | /* Modes bits for NETsendData/NETrecvData */ | |
232 | #define PSE_NET_BLOCKING 0x00000000 | |
233 | #define PSE_NET_NONBLOCKING 0x00000001 | |
234 | ||
235 | /* note: unsupported fields should be zeroed. | |
236 | ||
237 | typedef struct { | |
238 | char EmuName[32]; | |
239 | char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character | |
240 | char CdromLabel[11]; | |
241 | void *psxMem; | |
242 | GPUshowScreenPic GPU_showScreenPic; | |
243 | GPUdisplayText GPU_displayText; | |
244 | PADsetSensitive PAD_setSensitive; | |
245 | char GPUpath[256]; | |
246 | char SPUpath[256]; | |
247 | char CDRpath[256]; | |
248 | char MCD1path[256]; | |
249 | char MCD2path[256]; | |
250 | char BIOSpath[256]; // 'HLE' for internal bios | |
251 | char Unused[1024]; | |
252 | } netInfo; | |
253 | ||
254 | */ | |
255 | ||
256 | /* | |
257 | basic funcs: | |
258 | ||
259 | long NETopen(HWND hWnd) | |
260 | opens the connection. | |
261 | shall return 0 on success, else -1. | |
262 | -1 is also returned if the user selects offline mode. | |
263 | ||
264 | long NETclose() | |
265 | closes the connection. | |
266 | shall return 0 on success, else -1. | |
267 | ||
268 | void NETpause() | |
269 | this is called when the user paused the emulator. | |
270 | ||
271 | void NETresume() | |
272 | this is called when the user resumed the emulator. | |
273 | ||
274 | long NETqueryPlayer() | |
275 | returns player number | |
276 | ||
277 | long NETsendPadData(void *pData, int Size) | |
278 | this should be called for the first pad only on each side. | |
279 | ||
280 | long NETrecvPadData(void *pData, int Pad) | |
281 | call this for Pad 1/2 to get the data sent by the above func. | |
282 | ||
283 | extended funcs: | |
284 | ||
285 | long NETsendData(void *pData, int Size, int Mode) | |
286 | sends Size bytes from pData to the other side. | |
287 | ||
288 | long NETrecvData(void *pData, int Size, int Mode) | |
289 | receives Size bytes from pData to the other side. | |
290 | ||
291 | void NETsetInfo(netInfo *info); | |
292 | sets the netInfo struct. | |
293 | ||
294 | void NETkeypressed(int key) (linux only) | |
295 | key is a XK_?? (X11) keycode. | |
296 | */ | |
297 | ||
298 | #ifdef __cplusplus | |
299 | } | |
300 | #endif | |
301 | #endif // _PSEMU_PLUGIN_DEFS_H |