1 #ifndef _PSEMU_PLUGIN_DEFS_H
2 #define _PSEMU_PLUGIN_DEFS_H
8 // this can't be __stdcall like it was in PSEmu API as too many functions are mixed up
13 #define _PPDK_HEADER_VERSION 3
15 #define PLUGIN_VERSION 1
17 // plugin type returned by PSEgetLibType (types can be merged if plugin is multi type!)
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
28 // XXX_Init return values
29 // Those return values apply to all libraries
30 // currently obsolete - preserved for compatibilty
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
38 // GPU_Test return values
40 // sucess, everything configured, and went OK.
41 #define PSE_GPU_ERR_SUCCESS 0
44 // this error might be returned as critical error but none of below
45 #define PSE_GPU_ERR -20
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
54 // this warning might be returned as undefined warning but allowing driver to continue
55 #define PSE_GPU_WARN 20
57 // GPU_Query - will be implemented soon
64 unsigned char reserved[100];
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
73 #define PSE_GPU_STATUS_WINDOWWRONG 1 // this driver cannot operate in this windowed mode
75 // GPU_Query End - will be implemented in v2
80 // CDR_Test return values
82 // sucess, everything configured, and went OK.
83 #define PSE_CDR_ERR_SUCCESS 0
85 // general failure (error undefined)
86 #define PSE_CDR_ERR_FAILURE -1
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
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
106 // some info retricted (now!)
108 // sucess, everything configured, and went OK.
109 #define PSE_SPU_ERR_SUCCESS 0
112 // this error might be returned as critical error but none of below
113 #define PSE_SPU_ERR -60
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
122 // this warning might be returned as undefined warning but allowing driver to continue
123 #define PSE_SPU_WARN 60
132 functions that must be exported from PAD Plugin
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
138 long PADconfigure(void);
140 long PADtest(void); // called from Configure Dialog and after PADopen();
143 unsigned char PADstartPoll(int);
144 unsigned char PADpoll(unsigned char);
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
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
161 #define PSE_PAD_TYPE_NONE 0
163 #define PSE_PAD_TYPE_MOUSE 1
164 // NEGCON - 16 button analog controller SLPH-00001
165 #define PSE_PAD_TYPE_NEGCON 2
166 // GUN CONTROLLER - gun controller SLPH-00014 from Konami
167 #define PSE_PAD_TYPE_GUN 3
168 // STANDARD PAD SCPH-1080, SCPH-1150
169 #define PSE_PAD_TYPE_STANDARD 4
170 // ANALOG JOYSTICK SCPH-1110
171 #define PSE_PAD_TYPE_ANALOGJOY 5
172 // GUNCON - gun controller SLPH-00034 from Namco
173 #define PSE_PAD_TYPE_GUNCON 6
174 // ANALOG CONTROLLER SCPH-1150
175 #define PSE_PAD_TYPE_ANALOGPAD 7
178 // sucess, everything configured, and went OK.
179 #define PSE_PAD_ERR_SUCCESS 0
180 // general plugin failure (undefined error)
181 #define PSE_PAD_ERR_FAILURE -1
185 // this error might be returned as critical error but none of below
186 #define PSE_PAD_ERR -80
187 // this driver is not configured
188 #define PSE_PAD_ERR_NOTCONFIGURED PSE_PAD_ERR - 1
189 // this driver failed Init
190 #define PSE_PAD_ERR_INIT PSE_PAD_ERR - 2
194 // this warning might be returned as undefined warning but allowing driver to continue
195 #define PSE_PAD_WARN 80
200 // controller type - fill it withe predefined values above
201 unsigned char controllerType;
203 //0 : no multitap between psx and pad
204 //1 : multitap between psx and pad on port 1
205 //2 : multitap between psx and pad on port 2
209 // status of buttons - every controller fills this field
210 unsigned short buttonStatus;
212 // for analog pad fill those next 4 bytes
213 // values are analog in range 0-255 where 127 is center position
214 unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY;
216 // for mouse fill those next 2 bytes
217 // values are in range -128 - 127
218 unsigned char moveX, moveY;
220 unsigned char Vib[2];
221 unsigned char VibF[2];
223 //configuration mode Request 0x43
225 unsigned char reserved[87];
228 int absoluteX,absoluteY;
233 /* Added by linuzappz@pcsx.net */
235 /* Modes bits for NETsendData/NETrecvData */
236 #define PSE_NET_BLOCKING 0x00000000
237 #define PSE_NET_NONBLOCKING 0x00000001
239 /* note: unsupported fields should be zeroed.
243 char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character
246 GPUshowScreenPic GPU_showScreenPic;
247 GPUdisplayText GPU_displayText;
248 PADsetSensitive PAD_setSensitive;
254 char BIOSpath[256]; // 'HLE' for internal bios
263 long NETopen(HWND hWnd)
264 opens the connection.
265 shall return 0 on success, else -1.
266 -1 is also returned if the user selects offline mode.
269 closes the connection.
270 shall return 0 on success, else -1.
273 this is called when the user paused the emulator.
276 this is called when the user resumed the emulator.
278 long NETqueryPlayer()
279 returns player number
281 long NETsendPadData(void *pData, int Size)
282 this should be called for the first pad only on each side.
284 long NETrecvPadData(void *pData, int Pad)
285 call this for Pad 1/2 to get the data sent by the above func.
289 long NETsendData(void *pData, int Size, int Mode)
290 sends Size bytes from pData to the other side.
292 long NETrecvData(void *pData, int Size, int Mode)
293 receives Size bytes from pData to the other side.
295 void NETsetInfo(netInfo *info);
296 sets the netInfo struct.
298 void NETkeypressed(int key) (linux only)
299 key is a XK_?? (X11) keycode.
305 #endif // _PSEMU_PLUGIN_DEFS_H