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