#include "plugin_lib.h"
#include "plugin.h"
-#include "../libpcsxcore/psemu_plugin_defs.h"
+#include "psemu_plugin_defs.h"
#include "../libpcsxcore/system.h"
#include "../plugins/cdrcimg/cdrcimg.h"
extern void SPUabout(void);
extern long SPUfreeze(unsigned int, void *);
extern void SPUasync(unsigned int);
-extern void SPUplayCDDAchannel(short *, int);
+extern int SPUplayCDDAchannel(short *, int);
/* PAD */
static long PADreadPort1(PadDataS *pad)
{
- pad->controllerType = PSE_PAD_TYPE_STANDARD;
- pad->buttonStatus = ~keystate;
+ pad->controllerType = in_type1;
+ pad->buttonStatus = ~in_keystate;
+ if (in_type1 == PSE_PAD_TYPE_ANALOGPAD) {
+ pad->leftJoyX = in_a1[0];
+ pad->leftJoyY = in_a1[1];
+ pad->rightJoyX = in_a2[0];
+ pad->rightJoyY = in_a2[1];
+ }
return 0;
}
static long PADreadPort2(PadDataS *pad)
{
- pad->controllerType = PSE_PAD_TYPE_STANDARD;
- pad->buttonStatus = ~keystate >> 16;
+ pad->controllerType = in_type2;
+ pad->buttonStatus = ~in_keystate >> 16;
return 0;
}
extern void GPUreadDataMem(uint32_t *, int);
extern long GPUdmaChain(uint32_t *,uint32_t);
extern void GPUupdateLace(void);
-extern long GPUconfigure(void);
-extern long GPUtest(void);
-extern void GPUabout(void);
-extern void GPUmakeSnapshot(void);
-extern void GPUkeypressed(int);
-extern void GPUdisplayText(char *);
extern long GPUfreeze(uint32_t, void *);
-extern long GPUgetScreenPic(unsigned char *);
-extern long GPUshowScreenPic(unsigned char *);
-extern void GPUclearDynarec(void (*callback)(void));
-extern void GPUvBlank(int);
+extern void GPUvBlank(int, int);
+extern void GPUrearmedCallbacks(const struct rearmed_cbs *cbs);
#define DUMMY(id, name) \
#define DIRECT(id, name) \
{ id, #name, name }
+#define DUMMY_GPU(name) DUMMY(PLUGIN_GPU, name)
#define DUMMY_CDR(name) DUMMY(PLUGIN_CDR, name)
#define DUMMY_PAD(name) DUMMY(PLUGIN_PAD, name)
#define DIRECT_SPU(name) DIRECT(PLUGIN_SPU, name)
DIRECT_GPU(GPUupdateLace),
DIRECT_GPU(GPUinit),
DIRECT_GPU(GPUshutdown),
- DIRECT_GPU(GPUconfigure),
- DIRECT_GPU(GPUtest),
- DIRECT_GPU(GPUabout),
DIRECT_GPU(GPUopen),
DIRECT_GPU(GPUclose),
DIRECT_GPU(GPUreadStatus),
DIRECT_GPU(GPUwriteData),
DIRECT_GPU(GPUwriteDataMem),
DIRECT_GPU(GPUdmaChain),
+ DIRECT_GPU(GPUfreeze),
+ DIRECT_GPU(GPUvBlank),
+ DIRECT_GPU(GPUrearmedCallbacks),
+
+ DUMMY_GPU(GPUdisplayText),
+/*
DIRECT_GPU(GPUkeypressed),
- DIRECT_GPU(GPUdisplayText),
DIRECT_GPU(GPUmakeSnapshot),
- DIRECT_GPU(GPUfreeze),
+ DIRECT_GPU(GPUconfigure),
+ DIRECT_GPU(GPUtest),
+ DIRECT_GPU(GPUabout),
DIRECT_GPU(GPUgetScreenPic),
DIRECT_GPU(GPUshowScreenPic),
+*/
// DIRECT_GPU(GPUclearDynarec),
-// DIRECT_GPU(GPUvBlank),
};
void *plugin_link(enum builtint_plugins_e id, const char *sym)
pc_hook_func (SPU_readDMAMem, (unsigned short *a0, int a1), (a0, a1), PCNT_SPU)
pc_hook_func (SPU_playADPCMchannel, (void *a0), (a0), PCNT_SPU)
pc_hook_func (SPU_async, (unsigned int a0), (a0), PCNT_SPU)
-pc_hook_func (SPU_playCDDAchannel, (short *a0, int a1), (a0, a1), PCNT_SPU)
+pc_hook_func_ret(int, SPU_playCDDAchannel, (short *a0, int a1), (a0, a1), PCNT_SPU)
#define hook_it(name) { \
o_##name = name; \
void pcnt_hook_plugins(void)
{
- /* test it first */
- pcnt_get();
+ pcnt_init();
hook_it(GPU_writeStatus);
hook_it(GPU_writeData);
hook_it(SPU_playCDDAchannel);
}
+// hooked into recompiler
+void pcnt_gte_start(int op)
+{
+ pcnt_start(PCNT_GTE);
+}
+
+void pcnt_gte_end(int op)
+{
+ pcnt_end(PCNT_GTE);
+}
+
#endif