summaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-22 07:14:27 +0000
committerSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-22 07:14:27 +0000
commitcd8a6db7e6736696f77c7935dffb883aa5c2996a (patch)
treec1f0298f2d0881575963b68db589e24820c03cc5 /libpcsxcore
parente75205e3a33be2e5ff59508c77c91313d80717ea (diff)
downloadpcsxr-cd8a6db7e6736696f77c7935dffb883aa5c2996a.tar.gz
.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@83090 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'libpcsxcore')
-rwxr-xr-xlibpcsxcore/debug.h3
-rwxr-xr-xlibpcsxcore/plugins.c48
-rwxr-xr-xlibpcsxcore/plugins.h46
-rwxr-xr-xlibpcsxcore/psxcounters.c7
-rwxr-xr-xlibpcsxcore/psxhw.c56
5 files changed, 110 insertions, 50 deletions
diff --git a/libpcsxcore/debug.h b/libpcsxcore/debug.h
index ba89e3d5..f54c4883 100755
--- a/libpcsxcore/debug.h
+++ b/libpcsxcore/debug.h
@@ -53,6 +53,7 @@ char* disR3000AF(u32 code, u32 pc);
//#define LOG_STDOUT
//#define PAD_LOG __Log
+//#define SIO1_LOG __Log
//#define GTE_LOG __Log
//#define CDR_LOG __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log
//#define CDR_LOG_IO __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log
@@ -64,7 +65,7 @@ char* disR3000AF(u32 code, u32 pc);
//#define PSXCPU_LOG __Log
#if defined(PSXCPU_LOG) || defined(PSXDMA_LOG) || defined(CDR_LOG) || defined(PSXHW_LOG) || \
- defined(PSXBIOS_LOG) || defined(PSXMEM_LOG) || defined(GTE_LOG) || defined(PAD_LOG)
+ defined(PSXBIOS_LOG) || defined(PSXMEM_LOG) || defined(GTE_LOG) || defined(PAD_LOG) || defined(SIO1_LOG)
#define EMU_LOG __Log
#endif
diff --git a/libpcsxcore/plugins.c b/libpcsxcore/plugins.c
index ff9b00e4..30b62b0d 100755
--- a/libpcsxcore/plugins.c
+++ b/libpcsxcore/plugins.c
@@ -178,6 +178,7 @@ SIO1readCtrl16 SIO1_readCtrl16;
SIO1readCtrl32 SIO1_readCtrl32;
SIO1readBaud16 SIO1_readBaud16;
SIO1readBaud32 SIO1_readBaud32;
+SIO1update SIO1_update;
SIO1registerCallback SIO1_registerCallback;
#endif
@@ -638,28 +639,29 @@ void CALLBACK SIO1__about(void) {}
void CALLBACK SIO1__pause(void) {}
void CALLBACK SIO1__resume(void) {}
long CALLBACK SIO1__keypressed(int key) { return 0; }
-void CALLBACK SIO1__writeData8(unsigned char val) {}
-void CALLBACK SIO1__writeData16(unsigned short val) {}
-void CALLBACK SIO1__writeData32(unsigned long val) {}
-void CALLBACK SIO1__writeStat16(unsigned short val) {}
-void CALLBACK SIO1__writeStat32(unsigned long val) {}
-void CALLBACK SIO1__writeMode16(unsigned short val) {}
-void CALLBACK SIO1__writeMode32(unsigned long val) {}
-void CALLBACK SIO1__writeCtrl16(unsigned short val) {}
-void CALLBACK SIO1__writeCtrl32(unsigned long val) {}
-void CALLBACK SIO1__writeBaud16(unsigned short val) {}
-void CALLBACK SIO1__writeBaud32(unsigned long val) {}
-unsigned char CALLBACK SIO1__readData8(void) { return 0; }
-unsigned short CALLBACK SIO1__readData16(void) { return 0; }
-unsigned long CALLBACK SIO1__readData32(void) { return 0; }
-unsigned short CALLBACK SIO1__readStat16(void) { return 0; }
-unsigned long CALLBACK SIO1__readStat32(void) { return 0; }
-unsigned short CALLBACK SIO1__readMode16(void) { return 0; }
-unsigned long CALLBACK SIO1__readMode32(void) { return 0; }
-unsigned short CALLBACK SIO1__readCtrl16(void) { return 0; }
-unsigned long CALLBACK SIO1__readCtrl32(void) { return 0; }
-unsigned short CALLBACK SIO1__readBaud16(void) { return 0; }
-unsigned long CALLBACK SIO1__readBaud32(void) { return 0; }
+void CALLBACK SIO1__writeData8(u8 val) {}
+void CALLBACK SIO1__writeData16(u16 val) {}
+void CALLBACK SIO1__writeData32(u32 val) {}
+void CALLBACK SIO1__writeStat16(u16 val) {}
+void CALLBACK SIO1__writeStat32(u32 val) {}
+void CALLBACK SIO1__writeMode16(u16 val) {}
+void CALLBACK SIO1__writeMode32(u32 val) {}
+void CALLBACK SIO1__writeCtrl16(u16 val) {}
+void CALLBACK SIO1__writeCtrl32(u32 val) {}
+void CALLBACK SIO1__writeBaud16(u16 val) {}
+void CALLBACK SIO1__writeBaud32(u32 val) {}
+u8 CALLBACK SIO1__readData8(void) { return 0; }
+u16 CALLBACK SIO1__readData16(void) { return 0; }
+u32 CALLBACK SIO1__readData32(void) { return 0; }
+u16 CALLBACK SIO1__readStat16(void) { return 0; }
+u32 CALLBACK SIO1__readStat32(void) { return 0; }
+u16 CALLBACK SIO1__readMode16(void) { return 0; }
+u32 CALLBACK SIO1__readMode32(void) { return 0; }
+u16 CALLBACK SIO1__readCtrl16(void) { return 0; }
+u32 CALLBACK SIO1__readCtrl32(void) { return 0; }
+u16 CALLBACK SIO1__readBaud16(void) { return 0; }
+u32 CALLBACK SIO1__readBaud32(void) { return 0; }
+void CALLBACK SIO1__update(uint32_t t) {};
void CALLBACK SIO1__registerCallback(void (CALLBACK *callback)(void)) {};
#define LoadSio1Sym1(dest, name) \
@@ -703,6 +705,7 @@ static int LoadSIO1plugin(const char *SIO1dll) {
LoadSio1Sym0(writeCtrl32, "SIO1writeCtrl32");
LoadSio1Sym0(writeBaud16, "SIO1writeBaud16");
LoadSio1Sym0(writeBaud32, "SIO1writeBaud32");
+ LoadSio1Sym0(readData8, "SIO1readData8");
LoadSio1Sym0(readData16, "SIO1readData16");
LoadSio1Sym0(readData32, "SIO1readData32");
LoadSio1Sym0(readStat16, "SIO1readStat16");
@@ -713,6 +716,7 @@ static int LoadSIO1plugin(const char *SIO1dll) {
LoadSio1Sym0(readCtrl32, "SIO1readCtrl32");
LoadSio1Sym0(readBaud16, "SIO1readBaud16");
LoadSio1Sym0(readBaud32, "SIO1readBaud32");
+ LoadSio1Sym0(update, "SIO1update");
LoadSio1Sym0(registerCallback, "SIO1registerCallback");
return 0;
diff --git a/libpcsxcore/plugins.h b/libpcsxcore/plugins.h
index 27b92822..f8cfdf44 100755
--- a/libpcsxcore/plugins.h
+++ b/libpcsxcore/plugins.h
@@ -348,28 +348,29 @@ typedef void (CALLBACK* SIO1about)(void);
typedef void (CALLBACK* SIO1pause)(void);
typedef void (CALLBACK* SIO1resume)(void);
typedef long (CALLBACK* SIO1keypressed)(int);
-typedef void (CALLBACK* SIO1writeData8)(unsigned char);
-typedef void (CALLBACK* SIO1writeData16)(unsigned short);
-typedef void (CALLBACK* SIO1writeData32)(unsigned long);
-typedef void (CALLBACK* SIO1writeStat16)(unsigned short);
-typedef void (CALLBACK* SIO1writeStat32)(unsigned long);
-typedef void (CALLBACK* SIO1writeMode16)(unsigned short);
-typedef void (CALLBACK* SIO1writeMode32)(unsigned long);
-typedef void (CALLBACK* SIO1writeCtrl16)(unsigned short);
-typedef void (CALLBACK* SIO1writeCtrl32)(unsigned long);
-typedef void (CALLBACK* SIO1writeBaud16)(unsigned short);
-typedef void (CALLBACK* SIO1writeBaud32)(unsigned long);
-typedef unsigned char (CALLBACK* SIO1readData8)(void);
-typedef unsigned short (CALLBACK* SIO1readData16)(void);
-typedef unsigned long (CALLBACK* SIO1readData32)(void);
-typedef unsigned short (CALLBACK* SIO1readStat16)(void);
-typedef unsigned long (CALLBACK* SIO1readStat32)(void);
-typedef unsigned short (CALLBACK* SIO1readMode16)(void);
-typedef unsigned long (CALLBACK* SIO1readMode32)(void);
-typedef unsigned short (CALLBACK* SIO1readCtrl16)(void);
-typedef unsigned long (CALLBACK* SIO1readCtrl32)(void);
-typedef unsigned short (CALLBACK* SIO1readBaud16)(void);
-typedef unsigned long (CALLBACK* SIO1readBaud32)(void);
+typedef void (CALLBACK* SIO1writeData8)(u8);
+typedef void (CALLBACK* SIO1writeData16)(u16);
+typedef void (CALLBACK* SIO1writeData32)(u32);
+typedef void (CALLBACK* SIO1writeStat16)(u16);
+typedef void (CALLBACK* SIO1writeStat32)(u32);
+typedef void (CALLBACK* SIO1writeMode16)(u16);
+typedef void (CALLBACK* SIO1writeMode32)(u32);
+typedef void (CALLBACK* SIO1writeCtrl16)(u16);
+typedef void (CALLBACK* SIO1writeCtrl32)(u32);
+typedef void (CALLBACK* SIO1writeBaud16)(u16);
+typedef void (CALLBACK* SIO1writeBaud32)(u32);
+typedef u8 (CALLBACK* SIO1readData8)(void);
+typedef u16 (CALLBACK* SIO1readData16)(void);
+typedef u32 (CALLBACK* SIO1readData32)(void);
+typedef u16 (CALLBACK* SIO1readStat16)(void);
+typedef u32 (CALLBACK* SIO1readStat32)(void);
+typedef u16 (CALLBACK* SIO1readMode16)(void);
+typedef u32 (CALLBACK* SIO1readMode32)(void);
+typedef u16 (CALLBACK* SIO1readCtrl16)(void);
+typedef u32 (CALLBACK* SIO1readCtrl32)(void);
+typedef u16 (CALLBACK* SIO1readBaud16)(void);
+typedef u32 (CALLBACK* SIO1readBaud32)(void);
+typedef void (CALLBACK* SIO1update)(uint32_t);
typedef void (CALLBACK* SIO1registerCallback)(void (CALLBACK *callback)(void));
// SIO1 function pointers
@@ -405,6 +406,7 @@ extern SIO1readCtrl16 SIO1_readCtrl16;
extern SIO1readCtrl32 SIO1_readCtrl32;
extern SIO1readBaud16 SIO1_readBaud16;
extern SIO1readBaud32 SIO1_readBaud32;
+extern SIO1update SIO1_update;
extern SIO1registerCallback SIO1_registerCallback;
#endif
diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c
index 631c21f0..8cc2ee9b 100755
--- a/libpcsxcore/psxcounters.c
+++ b/libpcsxcore/psxcounters.c
@@ -286,6 +286,13 @@ void psxRcntUpdate()
}
}
+#ifdef ENABLE_SIO1API
+ if( SIO1_update )
+ {
+ SIO1_update( 0 );
+ }
+#endif
+
// VSync irq.
if( hSyncCount == VBlankStart[Config.PsxType] )
{
diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c
index 06f00d03..0fdfd1d0 100755
--- a/libpcsxcore/psxhw.c
+++ b/libpcsxcore/psxhw.c
@@ -41,7 +41,7 @@ u8 psxHwRead8(u32 add) {
unsigned char hard;
switch (add) {
- case 0x1f801040: hard = sioRead8();break;
+ case 0x1f801040: hard = sioRead8(); break;
#ifdef ENABLE_SIO1API
case 0x1f801050: hard = SIO1_readData8(); break;
#endif
@@ -68,11 +68,13 @@ u16 psxHwRead16(u32 add) {
switch (add) {
#ifdef PSXHW_LOG
- case 0x1f801070: PSXHW_LOG("IREG 16bit read %x\n", psxHu16(0x1070));
+ case 0x1f801070:
+ PSXHW_LOG("IREG 16bit read %x\n", psxHu16(0x1070));
return psxHu16(0x1070);
#endif
#ifdef PSXHW_LOG
- case 0x1f801074: PSXHW_LOG("IMASK 16bit read %x\n", psxHu16(0x1074));
+ case 0x1f801074:
+ PSXHW_LOG("IMASK 16bit read %x\n", psxHu16(0x1074));
return psxHu16(0x1074);
#endif
@@ -110,15 +112,33 @@ u16 psxHwRead16(u32 add) {
#ifdef ENABLE_SIO1API
case 0x1f801050:
hard = SIO1_readData16();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read16 %x; ret = %x\n", add&0xf, hard);
+#endif
return hard;
case 0x1f801054:
hard = SIO1_readStat16();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read16 %x; ret = %x\n", add&0xf, hard);
+#endif
+ return hard;
+ case 0x1f801058:
+ hard = SIO1_readMode16();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read16 %x; ret = %x\n", add&0xf, hard);
+#endif
return hard;
case 0x1f80105a:
hard = SIO1_readCtrl16();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read16 %x; ret = %x\n", add&0xf, hard);
+#endif
return hard;
case 0x1f80105e:
hard = SIO1_readBaud16();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read16 %x; ret = %x\n", add&0xf, hard);
+#endif
return hard;
#endif
case 0x1f801100:
@@ -213,6 +233,9 @@ u32 psxHwRead32(u32 add) {
#ifdef ENABLE_SIO1API
case 0x1f801050:
hard = SIO1_readData32();
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 read32 ;ret = %x\n", hard);
+#endif
return hard;
#endif
#ifdef PSXHW_LOG
@@ -221,11 +244,13 @@ u32 psxHwRead32(u32 add) {
return psxHu32(0x1060);
#endif
#ifdef PSXHW_LOG
- case 0x1f801070: PSXHW_LOG("IREG 32bit read %x\n", psxHu32(0x1070));
+ case 0x1f801070:
+ PSXHW_LOG("IREG 32bit read %x\n", psxHu32(0x1070));
return psxHu32(0x1070);
#endif
#ifdef PSXHW_LOG
- case 0x1f801074: PSXHW_LOG("IMASK 32bit read %x\n", psxHu32(0x1074));
+ case 0x1f801074:
+ PSXHW_LOG("IMASK 32bit read %x\n", psxHu32(0x1074));
return psxHu32(0x1074);
#endif
@@ -407,15 +432,33 @@ void psxHwWrite16(u32 add, u16 value) {
#ifdef ENABLE_SIO1API
case 0x1f801050:
SIO1_writeData16(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write16 %x, %x\n", add&0xf, value);
+#endif
return;
case 0x1f801054:
SIO1_writeStat16(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write16 %x, %x\n", add&0xf, value);
+#endif
+ return;
+ case 0x1f801058:
+ SIO1_writeMode16(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write16 %x, %x\n", add&0xf, value);
+#endif
return;
case 0x1f80105a:
SIO1_writeCtrl16(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write16 %x, %x\n", add&0xf, value);
+#endif
return;
case 0x1f80105e:
SIO1_writeBaud16(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write16 %x, %x\n", add&0xf, value);
+#endif
return;
#endif
case 0x1f801070:
@@ -524,6 +567,9 @@ void psxHwWrite32(u32 add, u32 value) {
#ifdef ENABLE_SIO1API
case 0x1f801050:
SIO1_writeData32(value);
+#ifdef SIO1_LOG
+ SIO1_LOG("sio1 write32 %x\n", value);
+#endif
return;
#endif
#ifdef PSXHW_LOG