frontend: update libpicofe, fix missed callbacks
[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
003cfc63 34typedef long (CALLBACK *SIO1open)(unsigned long *);\r
35\r
ef79bbde 36#include "spu.h"\r
597571ad 37#include "gpu.h"\r
ef79bbde
P
38#include "decode_xa.h"\r
39\r
40int LoadPlugins();\r
41void ReleasePlugins();\r
42int OpenPlugins();\r
43void ClosePlugins();\r
1df403c5 44int ReloadCdromPlugin();\r
ef79bbde
P
45\r
46typedef unsigned long (CALLBACK* PSEgetLibType)(void);\r
47typedef unsigned long (CALLBACK* PSEgetLibVersion)(void);\r
48typedef char *(CALLBACK* PSEgetLibName)(void);\r
49\r
50// GPU Functions\r
51typedef long (CALLBACK* GPUinit)(void);\r
52typedef long (CALLBACK* GPUshutdown)(void);\r
53typedef long (CALLBACK* GPUclose)(void);\r
54typedef void (CALLBACK* GPUwriteStatus)(uint32_t);\r
55typedef void (CALLBACK* GPUwriteData)(uint32_t);\r
56typedef void (CALLBACK* GPUwriteDataMem)(uint32_t *, int);\r
57typedef uint32_t (CALLBACK* GPUreadStatus)(void);\r
58typedef uint32_t (CALLBACK* GPUreadData)(void);\r
59typedef void (CALLBACK* GPUreadDataMem)(uint32_t *, int);\r
8412166f 60typedef long (CALLBACK* GPUdmaChain)(uint32_t *, uint32_t, uint32_t *, int32_t *);\r
ef79bbde 61typedef void (CALLBACK* GPUupdateLace)(void);\r
ef79bbde 62typedef long (CALLBACK* GPUfreeze)(uint32_t, GPUFreeze_t *);\r
72e5023f 63typedef void (CALLBACK* GPUvBlank)(int, int);\r
ab88daca 64typedef void (CALLBACK* GPUgetScreenInfo)(int *, int *);\r
ef79bbde
P
65\r
66// GPU function pointers\r
67extern GPUupdateLace GPU_updateLace;\r
68extern GPUinit GPU_init;\r
69extern GPUshutdown GPU_shutdown; \r
ef79bbde
P
70extern GPUopen GPU_open;\r
71extern GPUclose GPU_close;\r
72extern GPUreadStatus GPU_readStatus;\r
73extern GPUreadData GPU_readData;\r
74extern GPUreadDataMem GPU_readDataMem;\r
75extern GPUwriteStatus GPU_writeStatus; \r
76extern GPUwriteData GPU_writeData;\r
77extern GPUwriteDataMem GPU_writeDataMem;\r
78extern GPUdmaChain GPU_dmaChain;\r
ef79bbde 79extern GPUfreeze GPU_freeze;\r
72e5023f 80extern GPUvBlank GPU_vBlank;\r
ab88daca 81extern GPUgetScreenInfo GPU_getScreenInfo;\r
ef79bbde 82\r
08d9d257 83// CD-ROM\r
ef79bbde 84struct CdrStat {\r
2f59faba 85 uint32_t Type; // DATA, CDDA\r
86 uint32_t Status; // same as cdr.StatP\r
87 unsigned char Time_[3]; // unused\r
ef79bbde 88};\r
ef79bbde 89\r
08d9d257 90int CDR__getStatus(struct CdrStat *stat);\r
02b1a085 91\r
ef79bbde
P
92// SPU Functions\r
93typedef long (CALLBACK* SPUinit)(void); \r
94typedef long (CALLBACK* SPUshutdown)(void); \r
95typedef long (CALLBACK* SPUclose)(void); \r
650adfd2 96typedef void (CALLBACK* SPUwriteRegister)(unsigned long, unsigned short, unsigned int);\r
d358733b 97typedef unsigned short (CALLBACK* SPUreadRegister)(unsigned long, unsigned int);\r
650adfd2 98typedef void (CALLBACK* SPUwriteDMAMem)(unsigned short *, int, unsigned int);\r
99typedef void (CALLBACK* SPUreadDMAMem)(unsigned short *, int, unsigned int);\r
9cf79034 100typedef void (CALLBACK* SPUplayADPCMchannel)(xa_decode_t *, unsigned int, int);\r
c2eee46b 101typedef void (CALLBACK* SPUregisterCallback)(void (CALLBACK *callback)(int));\r
2b30c129 102typedef void (CALLBACK* SPUregisterScheduleCb)(void (CALLBACK *callback)(unsigned int cycles_after));\r
6d75addf 103typedef struct {\r
104 unsigned char PluginName[8];\r
105 uint32_t PluginVersion;\r
106 uint32_t Size;\r
107} SPUFreezeHdr_t;\r
38b8a211 108typedef struct SPUFreeze {\r
ef79bbde
P
109 unsigned char PluginName[8];\r
110 uint32_t PluginVersion;\r
111 uint32_t Size;\r
112 unsigned char SPUPorts[0x200];\r
113 unsigned char SPURam[0x80000];\r
114 xa_decode_t xa;\r
38e4048f 115 unsigned char *unused;\r
ef79bbde 116} SPUFreeze_t;\r
38b8a211 117typedef long (CALLBACK* SPUfreeze)(unsigned int, struct SPUFreeze *, unsigned int);\r
118typedef void (CALLBACK* SPUasync)(unsigned int, unsigned int);\r
9cf79034 119typedef int (CALLBACK* SPUplayCDDAchannel)(short *, int, unsigned int, int);\r
38b8a211 120typedef void (CALLBACK* SPUsetCDvol)(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int);\r
ef79bbde
P
121\r
122// SPU function pointers\r
ef79bbde
P
123extern SPUinit SPU_init;\r
124extern SPUshutdown SPU_shutdown;\r
ef79bbde
P
125extern SPUopen SPU_open;\r
126extern SPUclose SPU_close;\r
ef79bbde
P
127extern SPUwriteRegister SPU_writeRegister;\r
128extern SPUreadRegister SPU_readRegister;\r
ef79bbde
P
129extern SPUwriteDMAMem SPU_writeDMAMem;\r
130extern SPUreadDMAMem SPU_readDMAMem;\r
131extern SPUplayADPCMchannel SPU_playADPCMchannel;\r
132extern SPUfreeze SPU_freeze;\r
133extern SPUregisterCallback SPU_registerCallback;\r
2b30c129 134extern SPUregisterScheduleCb SPU_registerScheduleCb;\r
ef79bbde
P
135extern SPUasync SPU_async;\r
136extern SPUplayCDDAchannel SPU_playCDDAchannel;\r
38b8a211 137extern SPUsetCDvol SPU_setCDvol;\r
ef79bbde
P
138\r
139// PAD Functions\r
aa4cdd73 140long PAD1_readPort(PadDataS *);\r
141unsigned char PAD1_startPoll(int);\r
142unsigned char PAD1_poll(unsigned char, int *);\r
ef79bbde 143\r
aa4cdd73 144long PAD2_readPort(PadDataS *);\r
145unsigned char PAD2_startPoll(int);\r
146unsigned char PAD2_poll(unsigned char, int *);\r
ef79bbde 147\r
ef79bbde
P
148#ifdef ENABLE_SIO1API\r
149\r
150// SIO1 Functions (link cable)\r
151typedef long (CALLBACK* SIO1init)(void);\r
152typedef long (CALLBACK* SIO1shutdown)(void);\r
153typedef long (CALLBACK* SIO1close)(void);\r
154typedef long (CALLBACK* SIO1configure)(void);\r
155typedef long (CALLBACK* SIO1test)(void);\r
156typedef void (CALLBACK* SIO1about)(void);\r
157typedef void (CALLBACK* SIO1pause)(void);\r
158typedef void (CALLBACK* SIO1resume)(void);\r
159typedef long (CALLBACK* SIO1keypressed)(int);\r
160typedef void (CALLBACK* SIO1writeData8)(unsigned char);\r
161typedef void (CALLBACK* SIO1writeData16)(unsigned short);\r
162typedef void (CALLBACK* SIO1writeData32)(unsigned long);\r
163typedef void (CALLBACK* SIO1writeStat16)(unsigned short);\r
164typedef void (CALLBACK* SIO1writeStat32)(unsigned long);\r
165typedef void (CALLBACK* SIO1writeMode16)(unsigned short);\r
166typedef void (CALLBACK* SIO1writeMode32)(unsigned long);\r
167typedef void (CALLBACK* SIO1writeCtrl16)(unsigned short);\r
168typedef void (CALLBACK* SIO1writeCtrl32)(unsigned long);\r
169typedef void (CALLBACK* SIO1writeBaud16)(unsigned short);\r
170typedef void (CALLBACK* SIO1writeBaud32)(unsigned long);\r
171typedef unsigned char (CALLBACK* SIO1readData8)(void);\r
172typedef unsigned short (CALLBACK* SIO1readData16)(void);\r
173typedef unsigned long (CALLBACK* SIO1readData32)(void);\r
174typedef unsigned short (CALLBACK* SIO1readStat16)(void);\r
175typedef unsigned long (CALLBACK* SIO1readStat32)(void);\r
176typedef unsigned short (CALLBACK* SIO1readMode16)(void);\r
177typedef unsigned long (CALLBACK* SIO1readMode32)(void);\r
178typedef unsigned short (CALLBACK* SIO1readCtrl16)(void);\r
179typedef unsigned long (CALLBACK* SIO1readCtrl32)(void);\r
180typedef unsigned short (CALLBACK* SIO1readBaud16)(void);\r
181typedef unsigned long (CALLBACK* SIO1readBaud32)(void);\r
182typedef void (CALLBACK* SIO1registerCallback)(void (CALLBACK *callback)(void));\r
183\r
184// SIO1 function pointers \r
185extern SIO1init SIO1_init;\r
186extern SIO1shutdown SIO1_shutdown;\r
187extern SIO1open SIO1_open;\r
188extern SIO1close SIO1_close; \r
189extern SIO1test SIO1_test;\r
190extern SIO1configure SIO1_configure;\r
191extern SIO1about SIO1_about;\r
192extern SIO1pause SIO1_pause;\r
193extern SIO1resume SIO1_resume;\r
194extern SIO1keypressed SIO1_keypressed;\r
195extern SIO1writeData8 SIO1_writeData8;\r
196extern SIO1writeData16 SIO1_writeData16;\r
197extern SIO1writeData32 SIO1_writeData32;\r
198extern SIO1writeStat16 SIO1_writeStat16;\r
199extern SIO1writeStat32 SIO1_writeStat32;\r
200extern SIO1writeMode16 SIO1_writeMode16;\r
201extern SIO1writeMode32 SIO1_writeMode32;\r
202extern SIO1writeCtrl16 SIO1_writeCtrl16;\r
203extern SIO1writeCtrl32 SIO1_writeCtrl32;\r
204extern SIO1writeBaud16 SIO1_writeBaud16;\r
205extern SIO1writeBaud32 SIO1_writeBaud32;\r
206extern SIO1readData8 SIO1_readData8;\r
207extern SIO1readData16 SIO1_readData16;\r
208extern SIO1readData32 SIO1_readData32;\r
209extern SIO1readStat16 SIO1_readStat16;\r
210extern SIO1readStat32 SIO1_readStat32;\r
211extern SIO1readMode16 SIO1_readMode16;\r
212extern SIO1readMode32 SIO1_readMode32;\r
213extern SIO1readCtrl16 SIO1_readCtrl16;\r
214extern SIO1readCtrl32 SIO1_readCtrl32;\r
215extern SIO1readBaud16 SIO1_readBaud16;\r
216extern SIO1readBaud32 SIO1_readBaud32;\r
217extern SIO1registerCallback SIO1_registerCallback;\r
218\r
219#endif\r
220\r
ef79bbde
P
221void SetIsoFile(const char *filename);\r
222const char *GetIsoFile(void);\r
223boolean UsingIso(void);\r
224void SetCdOpenCaseTime(s64 time);\r
225\r
3faf5c23 226int padFreeze(void *f, int Mode);\r
e5241564 227int padToggleAnalog(unsigned int index);\r
3faf5c23 228\r
2db412ad 229extern void pl_gun_byte2(int port, unsigned char byte);\r
230extern void plat_trigger_vibrate(int pad, int low, int high);\r
231\r
ef79bbde
P
232#ifdef __cplusplus\r
233}\r
234#endif\r
235#endif\r