1 /***************************************************************************
\r
2 * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team *
\r
4 * This program is free software; you can redistribute it and/or modify *
\r
5 * it under the terms of the GNU General Public License as published by *
\r
6 * the Free Software Foundation; either version 2 of the License, or *
\r
7 * (at your option) any later version. *
\r
9 * This program is distributed in the hope that it will be useful, *
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
\r
12 * GNU General Public License for more details. *
\r
14 * You should have received a copy of the GNU General Public License *
\r
15 * along with this program; if not, write to the *
\r
16 * Free Software Foundation, Inc., *
\r
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. *
\r
18 ***************************************************************************/
\r
20 #ifndef __PLUGINS_H__
\r
21 #define __PLUGINS_H__
\r
27 #include "psxcommon.h"
\r
28 #include "psemu_plugin_defs.h"
\r
30 //#define ENABLE_SIO1API 1
\r
32 typedef long (CALLBACK *GPUopen)(unsigned long *, char *, char *);
\r
33 typedef long (CALLBACK *SPUopen)(void);
\r
34 typedef long (CALLBACK *PADopen)(unsigned long *);
\r
35 typedef long (CALLBACK *NETopen)(unsigned long *);
\r
36 typedef long (CALLBACK *SIO1open)(unsigned long *);
\r
39 #include "decode_xa.h"
\r
42 void ReleasePlugins();
\r
44 void ClosePlugins();
\r
45 int ReloadCdromPlugin();
\r
47 typedef unsigned long (CALLBACK* PSEgetLibType)(void);
\r
48 typedef unsigned long (CALLBACK* PSEgetLibVersion)(void);
\r
49 typedef char *(CALLBACK* PSEgetLibName)(void);
\r
52 typedef long (CALLBACK* GPUinit)(void);
\r
53 typedef long (CALLBACK* GPUshutdown)(void);
\r
54 typedef long (CALLBACK* GPUclose)(void);
\r
55 typedef void (CALLBACK* GPUwriteStatus)(uint32_t);
\r
56 typedef void (CALLBACK* GPUwriteData)(uint32_t);
\r
57 typedef void (CALLBACK* GPUwriteDataMem)(uint32_t *, int);
\r
58 typedef uint32_t (CALLBACK* GPUreadStatus)(void);
\r
59 typedef uint32_t (CALLBACK* GPUreadData)(void);
\r
60 typedef void (CALLBACK* GPUreadDataMem)(uint32_t *, int);
\r
61 typedef long (CALLBACK* GPUdmaChain)(uint32_t *,uint32_t, uint32_t *);
\r
62 typedef void (CALLBACK* GPUupdateLace)(void);
\r
63 typedef long (CALLBACK* GPUconfigure)(void);
\r
64 typedef long (CALLBACK* GPUtest)(void);
\r
65 typedef void (CALLBACK* GPUabout)(void);
\r
66 typedef void (CALLBACK* GPUmakeSnapshot)(void);
\r
67 typedef void (CALLBACK* GPUkeypressed)(int);
\r
68 typedef void (CALLBACK* GPUdisplayText)(char *);
\r
70 uint32_t ulFreezeVersion;
\r
72 uint32_t ulControl[256];
\r
73 unsigned char psxVRam[1024*512*2];
\r
75 typedef long (CALLBACK* GPUfreeze)(uint32_t, GPUFreeze_t *);
\r
76 typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);
\r
77 typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);
\r
78 typedef void (CALLBACK* GPUclearDynarec)(void (CALLBACK *callback)(void));
\r
79 typedef void (CALLBACK* GPUvBlank)(int, int);
\r
81 // GPU function pointers
\r
82 extern GPUupdateLace GPU_updateLace;
\r
83 extern GPUinit GPU_init;
\r
84 extern GPUshutdown GPU_shutdown;
\r
85 extern GPUconfigure GPU_configure;
\r
86 extern GPUtest GPU_test;
\r
87 extern GPUabout GPU_about;
\r
88 extern GPUopen GPU_open;
\r
89 extern GPUclose GPU_close;
\r
90 extern GPUreadStatus GPU_readStatus;
\r
91 extern GPUreadData GPU_readData;
\r
92 extern GPUreadDataMem GPU_readDataMem;
\r
93 extern GPUwriteStatus GPU_writeStatus;
\r
94 extern GPUwriteData GPU_writeData;
\r
95 extern GPUwriteDataMem GPU_writeDataMem;
\r
96 extern GPUdmaChain GPU_dmaChain;
\r
97 extern GPUkeypressed GPU_keypressed;
\r
98 extern GPUdisplayText GPU_displayText;
\r
99 extern GPUmakeSnapshot GPU_makeSnapshot;
\r
100 extern GPUfreeze GPU_freeze;
\r
101 extern GPUgetScreenPic GPU_getScreenPic;
\r
102 extern GPUshowScreenPic GPU_showScreenPic;
\r
103 extern GPUclearDynarec GPU_clearDynarec;
\r
104 extern GPUvBlank GPU_vBlank;
\r
106 // CD-ROM Functions
\r
107 typedef long (CALLBACK* CDRinit)(void);
\r
108 typedef long (CALLBACK* CDRshutdown)(void);
\r
109 typedef long (CALLBACK* CDRopen)(void);
\r
110 typedef long (CALLBACK* CDRclose)(void);
\r
111 typedef long (CALLBACK* CDRgetTN)(unsigned char *);
\r
112 typedef long (CALLBACK* CDRgetTD)(unsigned char, unsigned char *);
\r
113 typedef boolean (CALLBACK* CDRreadTrack)(unsigned char *);
\r
114 typedef unsigned char* (CALLBACK* CDRgetBuffer)(void);
\r
115 typedef unsigned char* (CALLBACK* CDRgetBufferSub)(int sector);
\r
116 typedef long (CALLBACK* CDRconfigure)(void);
\r
117 typedef long (CALLBACK* CDRtest)(void);
\r
118 typedef void (CALLBACK* CDRabout)(void);
\r
119 typedef long (CALLBACK* CDRplay)(unsigned char *);
\r
120 typedef long (CALLBACK* CDRstop)(void);
\r
121 typedef long (CALLBACK* CDRsetfilename)(char *);
\r
125 unsigned char Time[3];
\r
127 typedef long (CALLBACK* CDRgetStatus)(struct CdrStat *);
\r
128 typedef char* (CALLBACK* CDRgetDriveLetter)(void);
\r
131 unsigned char ControlAndADR;
\r
132 unsigned char TrackNumber;
\r
133 unsigned char IndexNumber;
\r
134 unsigned char TrackRelativeAddress[3];
\r
135 unsigned char Filler;
\r
136 unsigned char AbsoluteAddress[3];
\r
137 unsigned char CRC[2];
\r
140 typedef long (CALLBACK* CDRreadCDDA)(unsigned char, unsigned char, unsigned char, unsigned char *);
\r
141 typedef long (CALLBACK* CDRgetTE)(unsigned char, unsigned char *, unsigned char *, unsigned char *);
\r
143 // CD-ROM function pointers
\r
144 extern CDRinit CDR_init;
\r
145 extern CDRshutdown CDR_shutdown;
\r
146 extern CDRopen CDR_open;
\r
147 extern CDRclose CDR_close;
\r
148 extern CDRtest CDR_test;
\r
149 extern CDRgetTN CDR_getTN;
\r
150 extern CDRgetTD CDR_getTD;
\r
151 extern CDRreadTrack CDR_readTrack;
\r
152 extern CDRgetBuffer CDR_getBuffer;
\r
153 extern CDRgetBufferSub CDR_getBufferSub;
\r
154 extern CDRplay CDR_play;
\r
155 extern CDRstop CDR_stop;
\r
156 extern CDRgetStatus CDR_getStatus;
\r
157 extern CDRgetDriveLetter CDR_getDriveLetter;
\r
158 extern CDRconfigure CDR_configure;
\r
159 extern CDRabout CDR_about;
\r
160 extern CDRsetfilename CDR_setfilename;
\r
161 extern CDRreadCDDA CDR_readCDDA;
\r
162 extern CDRgetTE CDR_getTE;
\r
165 typedef long (CALLBACK* SPUinit)(void);
\r
166 typedef long (CALLBACK* SPUshutdown)(void);
\r
167 typedef long (CALLBACK* SPUclose)(void);
\r
168 typedef void (CALLBACK* SPUplaySample)(unsigned char);
\r
169 typedef void (CALLBACK* SPUwriteRegister)(unsigned long, unsigned short, unsigned int);
\r
170 typedef unsigned short (CALLBACK* SPUreadRegister)(unsigned long);
\r
171 typedef void (CALLBACK* SPUwriteDMA)(unsigned short);
\r
172 typedef unsigned short (CALLBACK* SPUreadDMA)(void);
\r
173 typedef void (CALLBACK* SPUwriteDMAMem)(unsigned short *, int, unsigned int);
\r
174 typedef void (CALLBACK* SPUreadDMAMem)(unsigned short *, int, unsigned int);
\r
175 typedef void (CALLBACK* SPUplayADPCMchannel)(xa_decode_t *, unsigned int, int);
\r
176 typedef void (CALLBACK* SPUregisterCallback)(void (CALLBACK *callback)(void));
\r
177 typedef void (CALLBACK* SPUregisterScheduleCb)(void (CALLBACK *callback)(unsigned int cycles_after));
\r
178 typedef long (CALLBACK* SPUconfigure)(void);
\r
179 typedef long (CALLBACK* SPUtest)(void);
\r
180 typedef void (CALLBACK* SPUabout)(void);
\r
182 unsigned char PluginName[8];
\r
183 uint32_t PluginVersion;
\r
185 unsigned char SPUPorts[0x200];
\r
186 unsigned char SPURam[0x80000];
\r
188 unsigned char *SPUInfo;
\r
190 typedef long (CALLBACK* SPUfreeze)(uint32_t, SPUFreeze_t *, uint32_t);
\r
191 typedef void (CALLBACK* SPUasync)(uint32_t, uint32_t);
\r
192 typedef int (CALLBACK* SPUplayCDDAchannel)(short *, int, unsigned int, int);
\r
194 // SPU function pointers
\r
195 extern SPUconfigure SPU_configure;
\r
196 extern SPUabout SPU_about;
\r
197 extern SPUinit SPU_init;
\r
198 extern SPUshutdown SPU_shutdown;
\r
199 extern SPUtest SPU_test;
\r
200 extern SPUopen SPU_open;
\r
201 extern SPUclose SPU_close;
\r
202 extern SPUplaySample SPU_playSample;
\r
203 extern SPUwriteRegister SPU_writeRegister;
\r
204 extern SPUreadRegister SPU_readRegister;
\r
205 extern SPUwriteDMA SPU_writeDMA;
\r
206 extern SPUreadDMA SPU_readDMA;
\r
207 extern SPUwriteDMAMem SPU_writeDMAMem;
\r
208 extern SPUreadDMAMem SPU_readDMAMem;
\r
209 extern SPUplayADPCMchannel SPU_playADPCMchannel;
\r
210 extern SPUfreeze SPU_freeze;
\r
211 extern SPUregisterCallback SPU_registerCallback;
\r
212 extern SPUregisterScheduleCb SPU_registerScheduleCb;
\r
213 extern SPUasync SPU_async;
\r
214 extern SPUplayCDDAchannel SPU_playCDDAchannel;
\r
217 typedef long (CALLBACK* PADconfigure)(void);
\r
218 typedef void (CALLBACK* PADabout)(void);
\r
219 typedef long (CALLBACK* PADinit)(long);
\r
220 typedef long (CALLBACK* PADshutdown)(void);
\r
221 typedef long (CALLBACK* PADtest)(void);
\r
222 typedef long (CALLBACK* PADclose)(void);
\r
223 typedef long (CALLBACK* PADquery)(void);
\r
224 typedef long (CALLBACK* PADreadPort1)(PadDataS*);
\r
225 typedef long (CALLBACK* PADreadPort2)(PadDataS*);
\r
226 typedef long (CALLBACK* PADkeypressed)(void);
\r
227 typedef unsigned char (CALLBACK* PADstartPoll)(int);
\r
228 typedef unsigned char (CALLBACK* PADpoll)(unsigned char);
\r
229 typedef void (CALLBACK* PADsetSensitive)(int);
\r
231 // PAD function pointers
\r
232 extern PADconfigure PAD1_configure;
\r
233 extern PADabout PAD1_about;
\r
234 extern PADinit PAD1_init;
\r
235 extern PADshutdown PAD1_shutdown;
\r
236 extern PADtest PAD1_test;
\r
237 extern PADopen PAD1_open;
\r
238 extern PADclose PAD1_close;
\r
239 extern PADquery PAD1_query;
\r
240 extern PADreadPort1 PAD1_readPort1;
\r
241 extern PADkeypressed PAD1_keypressed;
\r
242 extern PADstartPoll PAD1_startPoll;
\r
243 extern PADpoll PAD1_poll;
\r
244 extern PADsetSensitive PAD1_setSensitive;
\r
246 extern PADconfigure PAD2_configure;
\r
247 extern PADabout PAD2_about;
\r
248 extern PADinit PAD2_init;
\r
249 extern PADshutdown PAD2_shutdown;
\r
250 extern PADtest PAD2_test;
\r
251 extern PADopen PAD2_open;
\r
252 extern PADclose PAD2_close;
\r
253 extern PADquery PAD2_query;
\r
254 extern PADreadPort2 PAD2_readPort2;
\r
255 extern PADkeypressed PAD2_keypressed;
\r
256 extern PADstartPoll PAD2_startPoll;
\r
257 extern PADpoll PAD2_poll;
\r
258 extern PADsetSensitive PAD2_setSensitive;
\r
261 typedef long (CALLBACK* NETinit)(void);
\r
262 typedef long (CALLBACK* NETshutdown)(void);
\r
263 typedef long (CALLBACK* NETclose)(void);
\r
264 typedef long (CALLBACK* NETconfigure)(void);
\r
265 typedef long (CALLBACK* NETtest)(void);
\r
266 typedef void (CALLBACK* NETabout)(void);
\r
267 typedef void (CALLBACK* NETpause)(void);
\r
268 typedef void (CALLBACK* NETresume)(void);
\r
269 typedef long (CALLBACK* NETqueryPlayer)(void);
\r
270 typedef long (CALLBACK* NETsendData)(void *, int, int);
\r
271 typedef long (CALLBACK* NETrecvData)(void *, int, int);
\r
272 typedef long (CALLBACK* NETsendPadData)(void *, int);
\r
273 typedef long (CALLBACK* NETrecvPadData)(void *, int);
\r
277 char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character
\r
278 char CdromLabel[11];
\r
280 GPUshowScreenPic GPU_showScreenPic;
\r
281 GPUdisplayText GPU_displayText;
\r
282 PADsetSensitive PAD_setSensitive;
\r
283 char GPUpath[256]; // paths must be absolute
\r
286 char MCD1path[256];
\r
287 char MCD2path[256];
\r
288 char BIOSpath[256]; // 'HLE' for internal bios
\r
292 typedef long (CALLBACK* NETsetInfo)(netInfo *);
\r
293 typedef long (CALLBACK* NETkeypressed)(int);
\r
295 // NET function pointers
\r
296 extern NETinit NET_init;
\r
297 extern NETshutdown NET_shutdown;
\r
298 extern NETopen NET_open;
\r
299 extern NETclose NET_close;
\r
300 extern NETtest NET_test;
\r
301 extern NETconfigure NET_configure;
\r
302 extern NETabout NET_about;
\r
303 extern NETpause NET_pause;
\r
304 extern NETresume NET_resume;
\r
305 extern NETqueryPlayer NET_queryPlayer;
\r
306 extern NETsendData NET_sendData;
\r
307 extern NETrecvData NET_recvData;
\r
308 extern NETsendPadData NET_sendPadData;
\r
309 extern NETrecvPadData NET_recvPadData;
\r
310 extern NETsetInfo NET_setInfo;
\r
311 extern NETkeypressed NET_keypressed;
\r
313 #ifdef ENABLE_SIO1API
\r
315 // SIO1 Functions (link cable)
\r
316 typedef long (CALLBACK* SIO1init)(void);
\r
317 typedef long (CALLBACK* SIO1shutdown)(void);
\r
318 typedef long (CALLBACK* SIO1close)(void);
\r
319 typedef long (CALLBACK* SIO1configure)(void);
\r
320 typedef long (CALLBACK* SIO1test)(void);
\r
321 typedef void (CALLBACK* SIO1about)(void);
\r
322 typedef void (CALLBACK* SIO1pause)(void);
\r
323 typedef void (CALLBACK* SIO1resume)(void);
\r
324 typedef long (CALLBACK* SIO1keypressed)(int);
\r
325 typedef void (CALLBACK* SIO1writeData8)(unsigned char);
\r
326 typedef void (CALLBACK* SIO1writeData16)(unsigned short);
\r
327 typedef void (CALLBACK* SIO1writeData32)(unsigned long);
\r
328 typedef void (CALLBACK* SIO1writeStat16)(unsigned short);
\r
329 typedef void (CALLBACK* SIO1writeStat32)(unsigned long);
\r
330 typedef void (CALLBACK* SIO1writeMode16)(unsigned short);
\r
331 typedef void (CALLBACK* SIO1writeMode32)(unsigned long);
\r
332 typedef void (CALLBACK* SIO1writeCtrl16)(unsigned short);
\r
333 typedef void (CALLBACK* SIO1writeCtrl32)(unsigned long);
\r
334 typedef void (CALLBACK* SIO1writeBaud16)(unsigned short);
\r
335 typedef void (CALLBACK* SIO1writeBaud32)(unsigned long);
\r
336 typedef unsigned char (CALLBACK* SIO1readData8)(void);
\r
337 typedef unsigned short (CALLBACK* SIO1readData16)(void);
\r
338 typedef unsigned long (CALLBACK* SIO1readData32)(void);
\r
339 typedef unsigned short (CALLBACK* SIO1readStat16)(void);
\r
340 typedef unsigned long (CALLBACK* SIO1readStat32)(void);
\r
341 typedef unsigned short (CALLBACK* SIO1readMode16)(void);
\r
342 typedef unsigned long (CALLBACK* SIO1readMode32)(void);
\r
343 typedef unsigned short (CALLBACK* SIO1readCtrl16)(void);
\r
344 typedef unsigned long (CALLBACK* SIO1readCtrl32)(void);
\r
345 typedef unsigned short (CALLBACK* SIO1readBaud16)(void);
\r
346 typedef unsigned long (CALLBACK* SIO1readBaud32)(void);
\r
347 typedef void (CALLBACK* SIO1registerCallback)(void (CALLBACK *callback)(void));
\r
349 // SIO1 function pointers
\r
350 extern SIO1init SIO1_init;
\r
351 extern SIO1shutdown SIO1_shutdown;
\r
352 extern SIO1open SIO1_open;
\r
353 extern SIO1close SIO1_close;
\r
354 extern SIO1test SIO1_test;
\r
355 extern SIO1configure SIO1_configure;
\r
356 extern SIO1about SIO1_about;
\r
357 extern SIO1pause SIO1_pause;
\r
358 extern SIO1resume SIO1_resume;
\r
359 extern SIO1keypressed SIO1_keypressed;
\r
360 extern SIO1writeData8 SIO1_writeData8;
\r
361 extern SIO1writeData16 SIO1_writeData16;
\r
362 extern SIO1writeData32 SIO1_writeData32;
\r
363 extern SIO1writeStat16 SIO1_writeStat16;
\r
364 extern SIO1writeStat32 SIO1_writeStat32;
\r
365 extern SIO1writeMode16 SIO1_writeMode16;
\r
366 extern SIO1writeMode32 SIO1_writeMode32;
\r
367 extern SIO1writeCtrl16 SIO1_writeCtrl16;
\r
368 extern SIO1writeCtrl32 SIO1_writeCtrl32;
\r
369 extern SIO1writeBaud16 SIO1_writeBaud16;
\r
370 extern SIO1writeBaud32 SIO1_writeBaud32;
\r
371 extern SIO1readData8 SIO1_readData8;
\r
372 extern SIO1readData16 SIO1_readData16;
\r
373 extern SIO1readData32 SIO1_readData32;
\r
374 extern SIO1readStat16 SIO1_readStat16;
\r
375 extern SIO1readStat32 SIO1_readStat32;
\r
376 extern SIO1readMode16 SIO1_readMode16;
\r
377 extern SIO1readMode32 SIO1_readMode32;
\r
378 extern SIO1readCtrl16 SIO1_readCtrl16;
\r
379 extern SIO1readCtrl32 SIO1_readCtrl32;
\r
380 extern SIO1readBaud16 SIO1_readBaud16;
\r
381 extern SIO1readBaud32 SIO1_readBaud32;
\r
382 extern SIO1registerCallback SIO1_registerCallback;
\r
386 void CALLBACK clearDynarec(void);
\r
388 void SetIsoFile(const char *filename);
\r
389 const char *GetIsoFile(void);
\r
390 boolean UsingIso(void);
\r
391 void SetCdOpenCaseTime(s64 time);
\r