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 *SIO1open)(unsigned long *);
\r
38 #include "decode_xa.h"
\r
41 void ReleasePlugins();
\r
43 void ClosePlugins();
\r
44 int ReloadCdromPlugin();
\r
46 typedef unsigned long (CALLBACK* PSEgetLibType)(void);
\r
47 typedef unsigned long (CALLBACK* PSEgetLibVersion)(void);
\r
48 typedef char *(CALLBACK* PSEgetLibName)(void);
\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
60 typedef long (CALLBACK* GPUdmaChain)(uint32_t *, uint32_t, uint32_t *, int32_t *);
\r
61 typedef void (CALLBACK* GPUupdateLace)(void);
\r
62 typedef long (CALLBACK* GPUfreeze)(uint32_t, GPUFreeze_t *);
\r
63 typedef void (CALLBACK* GPUvBlank)(int, int);
\r
64 typedef void (CALLBACK* GPUgetScreenInfo)(int *, int *);
\r
66 // GPU function pointers
\r
67 extern GPUupdateLace GPU_updateLace;
\r
68 extern GPUinit GPU_init;
\r
69 extern GPUshutdown GPU_shutdown;
\r
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
79 extern GPUfreeze GPU_freeze;
\r
80 extern GPUvBlank GPU_vBlank;
\r
81 extern GPUgetScreenInfo GPU_getScreenInfo;
\r
85 uint32_t Type; // DATA, CDDA
\r
86 uint32_t Status; // same as cdr.StatP
\r
87 unsigned char Time_[3]; // unused
\r
90 int CDR__getStatus(struct CdrStat *stat);
\r
93 typedef long (CALLBACK* SPUinit)(void);
\r
94 typedef long (CALLBACK* SPUshutdown)(void);
\r
95 typedef long (CALLBACK* SPUclose)(void);
\r
96 typedef void (CALLBACK* SPUwriteRegister)(unsigned long, unsigned short, unsigned int);
\r
97 typedef unsigned short (CALLBACK* SPUreadRegister)(unsigned long, unsigned int);
\r
98 typedef void (CALLBACK* SPUwriteDMAMem)(unsigned short *, int, unsigned int);
\r
99 typedef void (CALLBACK* SPUreadDMAMem)(unsigned short *, int, unsigned int);
\r
100 typedef void (CALLBACK* SPUplayADPCMchannel)(xa_decode_t *, unsigned int, int);
\r
101 typedef void (CALLBACK* SPUregisterCallback)(void (CALLBACK *callback)(int));
\r
102 typedef void (CALLBACK* SPUregisterScheduleCb)(void (CALLBACK *callback)(unsigned int cycles_after));
\r
104 unsigned char PluginName[8];
\r
105 uint32_t PluginVersion;
\r
108 typedef struct SPUFreeze {
\r
109 unsigned char PluginName[8];
\r
110 uint32_t PluginVersion;
\r
112 unsigned char SPUPorts[0x200];
\r
113 unsigned char SPURam[0x80000];
\r
115 unsigned char *unused;
\r
117 typedef long (CALLBACK* SPUfreeze)(unsigned int, struct SPUFreeze *, unsigned int);
\r
118 typedef void (CALLBACK* SPUasync)(unsigned int, unsigned int);
\r
119 typedef int (CALLBACK* SPUplayCDDAchannel)(short *, int, unsigned int, int);
\r
120 typedef void (CALLBACK* SPUsetCDvol)(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int);
\r
122 // SPU function pointers
\r
123 extern SPUinit SPU_init;
\r
124 extern SPUshutdown SPU_shutdown;
\r
125 extern SPUopen SPU_open;
\r
126 extern SPUclose SPU_close;
\r
127 extern SPUwriteRegister SPU_writeRegister;
\r
128 extern SPUreadRegister SPU_readRegister;
\r
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
134 extern SPUregisterScheduleCb SPU_registerScheduleCb;
\r
135 extern SPUasync SPU_async;
\r
136 extern SPUplayCDDAchannel SPU_playCDDAchannel;
\r
137 extern SPUsetCDvol SPU_setCDvol;
\r
140 long PAD1_readPort(PadDataS *);
\r
141 unsigned char PAD1_startPoll(int);
\r
142 unsigned char PAD1_poll(unsigned char, int *);
\r
144 long PAD2_readPort(PadDataS *);
\r
145 unsigned char PAD2_startPoll(int);
\r
146 unsigned char PAD2_poll(unsigned char, int *);
\r
148 #ifdef ENABLE_SIO1API
\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
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
221 void SetIsoFile(const char *filename);
\r
222 const char *GetIsoFile(void);
\r
223 boolean UsingIso(void);
\r
224 void SetCdOpenCaseTime(s64 time);
\r
226 int padFreeze(void *f, int Mode);
\r
227 int padToggleAnalog(unsigned int index);
\r
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