apply cdrom volume in spu
[pcsx_rearmed.git] / libpcsxcore / plugins.h
CommitLineData
ef79bbde
P
1/***************************************************************************\r
2 * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team *\r
3 * *\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
8 * *\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
13 * *\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
19\r
20#ifndef __PLUGINS_H__\r
21#define __PLUGINS_H__\r
22\r
23#ifdef __cplusplus\r
24extern "C" {\r
25#endif\r
26\r
27#include "psxcommon.h"\r
029e681c 28#include "psemu_plugin_defs.h"\r
ef79bbde
P
29\r
30//#define ENABLE_SIO1API 1\r
31\r
003cfc63 32typedef long (CALLBACK *GPUopen)(unsigned long *, char *, char *);\r
33typedef long (CALLBACK *SPUopen)(void);\r
34typedef long (CALLBACK *PADopen)(unsigned long *);\r
35typedef long (CALLBACK *NETopen)(unsigned long *);\r
36typedef long (CALLBACK *SIO1open)(unsigned long *);\r
37\r
ef79bbde 38#include "spu.h"\r
ef79bbde
P
39#include "decode_xa.h"\r
40\r
41int LoadPlugins();\r
42void ReleasePlugins();\r
43int OpenPlugins();\r
44void ClosePlugins();\r
1df403c5 45int ReloadCdromPlugin();\r
ef79bbde
P
46\r
47typedef unsigned long (CALLBACK* PSEgetLibType)(void);\r
48typedef unsigned long (CALLBACK* PSEgetLibVersion)(void);\r
49typedef char *(CALLBACK* PSEgetLibName)(void);\r
50\r
51// GPU Functions\r
52typedef long (CALLBACK* GPUinit)(void);\r
53typedef long (CALLBACK* GPUshutdown)(void);\r
54typedef long (CALLBACK* GPUclose)(void);\r
55typedef void (CALLBACK* GPUwriteStatus)(uint32_t);\r
56typedef void (CALLBACK* GPUwriteData)(uint32_t);\r
57typedef void (CALLBACK* GPUwriteDataMem)(uint32_t *, int);\r
58typedef uint32_t (CALLBACK* GPUreadStatus)(void);\r
59typedef uint32_t (CALLBACK* GPUreadData)(void);\r
60typedef void (CALLBACK* GPUreadDataMem)(uint32_t *, int);\r
8c84ba5f 61typedef long (CALLBACK* GPUdmaChain)(uint32_t *,uint32_t, uint32_t *);\r
ef79bbde
P
62typedef void (CALLBACK* GPUupdateLace)(void);\r
63typedef long (CALLBACK* GPUconfigure)(void);\r
64typedef long (CALLBACK* GPUtest)(void);\r
65typedef void (CALLBACK* GPUabout)(void);\r
66typedef void (CALLBACK* GPUmakeSnapshot)(void);\r
67typedef void (CALLBACK* GPUkeypressed)(int);\r
68typedef void (CALLBACK* GPUdisplayText)(char *);\r
69typedef struct {\r
70 uint32_t ulFreezeVersion;\r
71 uint32_t ulStatus;\r
72 uint32_t ulControl[256];\r
73 unsigned char psxVRam[1024*512*2];\r
74} GPUFreeze_t;\r
75typedef long (CALLBACK* GPUfreeze)(uint32_t, GPUFreeze_t *);\r
76typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);\r
77typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);\r
72e5023f 78typedef void (CALLBACK* GPUvBlank)(int, int);\r
ab88daca 79typedef void (CALLBACK* GPUgetScreenInfo)(int *, int *);\r
ef79bbde
P
80\r
81// GPU function pointers\r
82extern GPUupdateLace GPU_updateLace;\r
83extern GPUinit GPU_init;\r
84extern GPUshutdown GPU_shutdown; \r
85extern GPUconfigure GPU_configure;\r
86extern GPUtest GPU_test;\r
87extern GPUabout GPU_about;\r
88extern GPUopen GPU_open;\r
89extern GPUclose GPU_close;\r
90extern GPUreadStatus GPU_readStatus;\r
91extern GPUreadData GPU_readData;\r
92extern GPUreadDataMem GPU_readDataMem;\r
93extern GPUwriteStatus GPU_writeStatus; \r
94extern GPUwriteData GPU_writeData;\r
95extern GPUwriteDataMem GPU_writeDataMem;\r
96extern GPUdmaChain GPU_dmaChain;\r
97extern GPUkeypressed GPU_keypressed;\r
98extern GPUdisplayText GPU_displayText;\r
99extern GPUmakeSnapshot GPU_makeSnapshot;\r
100extern GPUfreeze GPU_freeze;\r
101extern GPUgetScreenPic GPU_getScreenPic;\r
102extern GPUshowScreenPic GPU_showScreenPic;\r
72e5023f 103extern GPUvBlank GPU_vBlank;\r
ab88daca 104extern GPUgetScreenInfo GPU_getScreenInfo;\r
ef79bbde
P
105\r
106// CD-ROM Functions\r
107typedef long (CALLBACK* CDRinit)(void);\r
108typedef long (CALLBACK* CDRshutdown)(void);\r
109typedef long (CALLBACK* CDRopen)(void);\r
110typedef long (CALLBACK* CDRclose)(void);\r
111typedef long (CALLBACK* CDRgetTN)(unsigned char *);\r
112typedef long (CALLBACK* CDRgetTD)(unsigned char, unsigned char *);\r
c9c7a925 113typedef boolean (CALLBACK* CDRreadTrack)(unsigned char *);\r
ef79bbde 114typedef unsigned char* (CALLBACK* CDRgetBuffer)(void);\r
752c1c85 115typedef unsigned char* (CALLBACK* CDRgetBufferSub)(int sector);\r
ef79bbde
P
116typedef long (CALLBACK* CDRconfigure)(void);\r
117typedef long (CALLBACK* CDRtest)(void);\r
118typedef void (CALLBACK* CDRabout)(void);\r
119typedef long (CALLBACK* CDRplay)(unsigned char *);\r
120typedef long (CALLBACK* CDRstop)(void);\r
121typedef long (CALLBACK* CDRsetfilename)(char *);\r
122struct CdrStat {\r
2f59faba 123 uint32_t Type; // DATA, CDDA\r
124 uint32_t Status; // same as cdr.StatP\r
125 unsigned char Time_[3]; // unused\r
ef79bbde
P
126};\r
127typedef long (CALLBACK* CDRgetStatus)(struct CdrStat *);\r
128typedef char* (CALLBACK* CDRgetDriveLetter)(void);\r
129struct SubQ {\r
130 char res0[12];\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
1df403c5 136 unsigned char AbsoluteAddress[3];\r
ef79bbde
P
137 unsigned char CRC[2];\r
138 char res1[72];\r
139};\r
140typedef long (CALLBACK* CDRreadCDDA)(unsigned char, unsigned char, unsigned char, unsigned char *);\r
141typedef long (CALLBACK* CDRgetTE)(unsigned char, unsigned char *, unsigned char *, unsigned char *);\r
142\r
143// CD-ROM function pointers\r
144extern CDRinit CDR_init;\r
145extern CDRshutdown CDR_shutdown;\r
146extern CDRopen CDR_open;\r
147extern CDRclose CDR_close; \r
148extern CDRtest CDR_test;\r
149extern CDRgetTN CDR_getTN;\r
150extern CDRgetTD CDR_getTD;\r
151extern CDRreadTrack CDR_readTrack;\r
152extern CDRgetBuffer CDR_getBuffer;\r
153extern CDRgetBufferSub CDR_getBufferSub;\r
154extern CDRplay CDR_play;\r
155extern CDRstop CDR_stop;\r
156extern CDRgetStatus CDR_getStatus;\r
157extern CDRgetDriveLetter CDR_getDriveLetter;\r
158extern CDRconfigure CDR_configure;\r
159extern CDRabout CDR_about;\r
160extern CDRsetfilename CDR_setfilename;\r
161extern CDRreadCDDA CDR_readCDDA;\r
162extern CDRgetTE CDR_getTE;\r
163\r
02b1a085 164long CALLBACK CDR__getStatus(struct CdrStat *stat);\r
165\r
ef79bbde
P
166// SPU Functions\r
167typedef long (CALLBACK* SPUinit)(void); \r
168typedef long (CALLBACK* SPUshutdown)(void); \r
169typedef long (CALLBACK* SPUclose)(void); \r
650adfd2 170typedef void (CALLBACK* SPUwriteRegister)(unsigned long, unsigned short, unsigned int);\r
d358733b 171typedef unsigned short (CALLBACK* SPUreadRegister)(unsigned long, unsigned int);\r
650adfd2 172typedef void (CALLBACK* SPUwriteDMAMem)(unsigned short *, int, unsigned int);\r
173typedef void (CALLBACK* SPUreadDMAMem)(unsigned short *, int, unsigned int);\r
9cf79034 174typedef void (CALLBACK* SPUplayADPCMchannel)(xa_decode_t *, unsigned int, int);\r
c2eee46b 175typedef void (CALLBACK* SPUregisterCallback)(void (CALLBACK *callback)(int));\r
2b30c129 176typedef void (CALLBACK* SPUregisterScheduleCb)(void (CALLBACK *callback)(unsigned int cycles_after));\r
6d75addf 177typedef struct {\r
178 unsigned char PluginName[8];\r
179 uint32_t PluginVersion;\r
180 uint32_t Size;\r
181} SPUFreezeHdr_t;\r
38b8a211 182typedef struct SPUFreeze {\r
ef79bbde
P
183 unsigned char PluginName[8];\r
184 uint32_t PluginVersion;\r
185 uint32_t Size;\r
186 unsigned char SPUPorts[0x200];\r
187 unsigned char SPURam[0x80000];\r
188 xa_decode_t xa;\r
38e4048f 189 unsigned char *unused;\r
ef79bbde 190} SPUFreeze_t;\r
38b8a211 191typedef long (CALLBACK* SPUfreeze)(unsigned int, struct SPUFreeze *, unsigned int);\r
192typedef void (CALLBACK* SPUasync)(unsigned int, unsigned int);\r
9cf79034 193typedef int (CALLBACK* SPUplayCDDAchannel)(short *, int, unsigned int, int);\r
38b8a211 194typedef void (CALLBACK* SPUsetCDvol)(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int);\r
ef79bbde
P
195\r
196// SPU function pointers\r
ef79bbde
P
197extern SPUinit SPU_init;\r
198extern SPUshutdown SPU_shutdown;\r
ef79bbde
P
199extern SPUopen SPU_open;\r
200extern SPUclose SPU_close;\r
ef79bbde
P
201extern SPUwriteRegister SPU_writeRegister;\r
202extern SPUreadRegister SPU_readRegister;\r
ef79bbde
P
203extern SPUwriteDMAMem SPU_writeDMAMem;\r
204extern SPUreadDMAMem SPU_readDMAMem;\r
205extern SPUplayADPCMchannel SPU_playADPCMchannel;\r
206extern SPUfreeze SPU_freeze;\r
207extern SPUregisterCallback SPU_registerCallback;\r
2b30c129 208extern SPUregisterScheduleCb SPU_registerScheduleCb;\r
ef79bbde
P
209extern SPUasync SPU_async;\r
210extern SPUplayCDDAchannel SPU_playCDDAchannel;\r
38b8a211 211extern SPUsetCDvol SPU_setCDvol;\r
ef79bbde
P
212\r
213// PAD Functions\r
214typedef long (CALLBACK* PADconfigure)(void);\r
215typedef void (CALLBACK* PADabout)(void);\r
216typedef long (CALLBACK* PADinit)(long);\r
217typedef long (CALLBACK* PADshutdown)(void); \r
218typedef long (CALLBACK* PADtest)(void); \r
219typedef long (CALLBACK* PADclose)(void);\r
220typedef long (CALLBACK* PADquery)(void);\r
221typedef long (CALLBACK* PADreadPort1)(PadDataS*);\r
222typedef long (CALLBACK* PADreadPort2)(PadDataS*);\r
223typedef long (CALLBACK* PADkeypressed)(void);\r
224typedef unsigned char (CALLBACK* PADstartPoll)(int);\r
2db412ad 225typedef unsigned char (CALLBACK* PADpoll)(unsigned char, int *);\r
ef79bbde
P
226typedef void (CALLBACK* PADsetSensitive)(int);\r
227\r
228// PAD function pointers\r
229extern PADconfigure PAD1_configure;\r
230extern PADabout PAD1_about;\r
231extern PADinit PAD1_init;\r
232extern PADshutdown PAD1_shutdown;\r
233extern PADtest PAD1_test;\r
234extern PADopen PAD1_open;\r
235extern PADclose PAD1_close;\r
236extern PADquery PAD1_query;\r
237extern PADreadPort1 PAD1_readPort1;\r
238extern PADkeypressed PAD1_keypressed;\r
239extern PADstartPoll PAD1_startPoll;\r
240extern PADpoll PAD1_poll;\r
241extern PADsetSensitive PAD1_setSensitive;\r
242\r
243extern PADconfigure PAD2_configure;\r
244extern PADabout PAD2_about;\r
245extern PADinit PAD2_init;\r
246extern PADshutdown PAD2_shutdown;\r
247extern PADtest PAD2_test;\r
248extern PADopen PAD2_open;\r
249extern PADclose PAD2_close;\r
250extern PADquery PAD2_query;\r
251extern PADreadPort2 PAD2_readPort2;\r
252extern PADkeypressed PAD2_keypressed;\r
253extern PADstartPoll PAD2_startPoll;\r
254extern PADpoll PAD2_poll;\r
255extern PADsetSensitive PAD2_setSensitive;\r
256\r
257// NET Functions\r
258typedef long (CALLBACK* NETinit)(void);\r
259typedef long (CALLBACK* NETshutdown)(void);\r
260typedef long (CALLBACK* NETclose)(void);\r
261typedef long (CALLBACK* NETconfigure)(void);\r
262typedef long (CALLBACK* NETtest)(void);\r
263typedef void (CALLBACK* NETabout)(void);\r
264typedef void (CALLBACK* NETpause)(void);\r
265typedef void (CALLBACK* NETresume)(void);\r
266typedef long (CALLBACK* NETqueryPlayer)(void);\r
267typedef long (CALLBACK* NETsendData)(void *, int, int);\r
268typedef long (CALLBACK* NETrecvData)(void *, int, int);\r
269typedef long (CALLBACK* NETsendPadData)(void *, int);\r
270typedef long (CALLBACK* NETrecvPadData)(void *, int);\r
271\r
272typedef struct {\r
273 char EmuName[32];\r
274 char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character\r
275 char CdromLabel[11];\r
276 void *psxMem;\r
277 GPUshowScreenPic GPU_showScreenPic;\r
278 GPUdisplayText GPU_displayText;\r
279 PADsetSensitive PAD_setSensitive;\r
280 char GPUpath[256]; // paths must be absolute\r
281 char SPUpath[256];\r
282 char CDRpath[256];\r
283 char MCD1path[256];\r
284 char MCD2path[256];\r
285 char BIOSpath[256]; // 'HLE' for internal bios\r
286 char Unused[1024];\r
287} netInfo;\r
288\r
289typedef long (CALLBACK* NETsetInfo)(netInfo *);\r
290typedef long (CALLBACK* NETkeypressed)(int);\r
291\r
292// NET function pointers \r
293extern NETinit NET_init;\r
294extern NETshutdown NET_shutdown;\r
295extern NETopen NET_open;\r
296extern NETclose NET_close; \r
297extern NETtest NET_test;\r
298extern NETconfigure NET_configure;\r
299extern NETabout NET_about;\r
300extern NETpause NET_pause;\r
301extern NETresume NET_resume;\r
302extern NETqueryPlayer NET_queryPlayer;\r
303extern NETsendData NET_sendData;\r
304extern NETrecvData NET_recvData;\r
305extern NETsendPadData NET_sendPadData;\r
306extern NETrecvPadData NET_recvPadData;\r
307extern NETsetInfo NET_setInfo;\r
308extern NETkeypressed NET_keypressed;\r
309\r
310#ifdef ENABLE_SIO1API\r
311\r
312// SIO1 Functions (link cable)\r
313typedef long (CALLBACK* SIO1init)(void);\r
314typedef long (CALLBACK* SIO1shutdown)(void);\r
315typedef long (CALLBACK* SIO1close)(void);\r
316typedef long (CALLBACK* SIO1configure)(void);\r
317typedef long (CALLBACK* SIO1test)(void);\r
318typedef void (CALLBACK* SIO1about)(void);\r
319typedef void (CALLBACK* SIO1pause)(void);\r
320typedef void (CALLBACK* SIO1resume)(void);\r
321typedef long (CALLBACK* SIO1keypressed)(int);\r
322typedef void (CALLBACK* SIO1writeData8)(unsigned char);\r
323typedef void (CALLBACK* SIO1writeData16)(unsigned short);\r
324typedef void (CALLBACK* SIO1writeData32)(unsigned long);\r
325typedef void (CALLBACK* SIO1writeStat16)(unsigned short);\r
326typedef void (CALLBACK* SIO1writeStat32)(unsigned long);\r
327typedef void (CALLBACK* SIO1writeMode16)(unsigned short);\r
328typedef void (CALLBACK* SIO1writeMode32)(unsigned long);\r
329typedef void (CALLBACK* SIO1writeCtrl16)(unsigned short);\r
330typedef void (CALLBACK* SIO1writeCtrl32)(unsigned long);\r
331typedef void (CALLBACK* SIO1writeBaud16)(unsigned short);\r
332typedef void (CALLBACK* SIO1writeBaud32)(unsigned long);\r
333typedef unsigned char (CALLBACK* SIO1readData8)(void);\r
334typedef unsigned short (CALLBACK* SIO1readData16)(void);\r
335typedef unsigned long (CALLBACK* SIO1readData32)(void);\r
336typedef unsigned short (CALLBACK* SIO1readStat16)(void);\r
337typedef unsigned long (CALLBACK* SIO1readStat32)(void);\r
338typedef unsigned short (CALLBACK* SIO1readMode16)(void);\r
339typedef unsigned long (CALLBACK* SIO1readMode32)(void);\r
340typedef unsigned short (CALLBACK* SIO1readCtrl16)(void);\r
341typedef unsigned long (CALLBACK* SIO1readCtrl32)(void);\r
342typedef unsigned short (CALLBACK* SIO1readBaud16)(void);\r
343typedef unsigned long (CALLBACK* SIO1readBaud32)(void);\r
344typedef void (CALLBACK* SIO1registerCallback)(void (CALLBACK *callback)(void));\r
345\r
346// SIO1 function pointers \r
347extern SIO1init SIO1_init;\r
348extern SIO1shutdown SIO1_shutdown;\r
349extern SIO1open SIO1_open;\r
350extern SIO1close SIO1_close; \r
351extern SIO1test SIO1_test;\r
352extern SIO1configure SIO1_configure;\r
353extern SIO1about SIO1_about;\r
354extern SIO1pause SIO1_pause;\r
355extern SIO1resume SIO1_resume;\r
356extern SIO1keypressed SIO1_keypressed;\r
357extern SIO1writeData8 SIO1_writeData8;\r
358extern SIO1writeData16 SIO1_writeData16;\r
359extern SIO1writeData32 SIO1_writeData32;\r
360extern SIO1writeStat16 SIO1_writeStat16;\r
361extern SIO1writeStat32 SIO1_writeStat32;\r
362extern SIO1writeMode16 SIO1_writeMode16;\r
363extern SIO1writeMode32 SIO1_writeMode32;\r
364extern SIO1writeCtrl16 SIO1_writeCtrl16;\r
365extern SIO1writeCtrl32 SIO1_writeCtrl32;\r
366extern SIO1writeBaud16 SIO1_writeBaud16;\r
367extern SIO1writeBaud32 SIO1_writeBaud32;\r
368extern SIO1readData8 SIO1_readData8;\r
369extern SIO1readData16 SIO1_readData16;\r
370extern SIO1readData32 SIO1_readData32;\r
371extern SIO1readStat16 SIO1_readStat16;\r
372extern SIO1readStat32 SIO1_readStat32;\r
373extern SIO1readMode16 SIO1_readMode16;\r
374extern SIO1readMode32 SIO1_readMode32;\r
375extern SIO1readCtrl16 SIO1_readCtrl16;\r
376extern SIO1readCtrl32 SIO1_readCtrl32;\r
377extern SIO1readBaud16 SIO1_readBaud16;\r
378extern SIO1readBaud32 SIO1_readBaud32;\r
379extern SIO1registerCallback SIO1_registerCallback;\r
380\r
381#endif\r
382\r
ef79bbde
P
383void SetIsoFile(const char *filename);\r
384const char *GetIsoFile(void);\r
385boolean UsingIso(void);\r
386void SetCdOpenCaseTime(s64 time);\r
387\r
3faf5c23 388int padFreeze(void *f, int Mode);\r
e5241564 389int padToggleAnalog(unsigned int index);\r
3faf5c23 390\r
2db412ad 391extern void pl_gun_byte2(int port, unsigned char byte);\r
392extern void plat_trigger_vibrate(int pad, int low, int high);\r
f6eb0b1c 393extern void plat_get_psx_resolution(int *xres, int *yres);\r
2db412ad 394\r
ef79bbde
P
395#ifdef __cplusplus\r
396}\r
397#endif\r
398#endif\r