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