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 {
57 	unsigned int flags;
58 	unsigned int status;
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 
156 // No controller
157 #define PSE_PAD_TYPE_NONE			0
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 {
196 	// controller type - fill it withe predefined values above
197 	unsigned char controllerType;
198 
199 	//0 : no multitap between psx and pad
200 	//1 : multitap between psx and pad on port 1
201 	//2 : multitap between psx and pad on port 2
202 	int portMultitap;
203 	int requestPadIndex;
204 
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 
216 	unsigned char Vib[2];
217 	unsigned char VibF[2];
218 
219 	//configuration mode Request 0x43
220 	int configMode;
221 	unsigned char reserved[87];
222 
223 	//Lightgun values
224 	int absoluteX,absoluteY;
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
302