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