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