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
|
/*
PSEmu Plugin Developer Kit Header definition
(C)1998 Vision Thing
This file can be used only to develop PSEmu Plugins
Other usage is highly prohibited.
*/
// IMPORTANT!!!
// if you want to add return codes (any errors or warnings) just drop mail to
// plugin@psemu.com
#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
// every function in DLL if completed sucessfully should return this value
#define PSE_ERR_SUCCESS 0
// undefined error but fatal one, that kills all functionality
#define PSE_ERR_FATAL -1
// XXX_Init return values
// Those return values apply to all libraries
// currently obsolete - preserved for compatibilty
// initialization went OK
#define PSE_INIT_ERR_SUCCESS 0
// this driver is not configured
#define PSE_INIT_ERR_NOTCONFIGURED -2
// this driver can not operate properly on this hardware or hardware is not detected
#define PSE_INIT_ERR_NOHARDWARE -3
/* 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
{
unsigned long flags;
unsigned long status;
HWND window;
unsigned char reserved[100];
} gpuQueryS;
// gpuQueryS.flags
// if driver can operate in both modes it must support GPU_changeMode();
// this driver can operate in fullscreen mode
#define PSE_GPU_FLAGS_FULLSCREEN 1
// this driver can operate in windowed mode
#define PSE_GPU_FLAGS_WINDOWED 2
// gpuQueryS.status
// this driver cannot operate in this windowed mode
#define PSE_GPU_STATUS_WINDOWWRONG 1
// 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;
#endif // _PSEMU_PLUGIN_DEFS_H
|