summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-09-05 01:21:10 +0000
committerSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-09-05 01:21:10 +0000
commit05a2e4099d0291dfd5fd36922aebb7129068ba25 (patch)
treef30d64831d7e21e12c8b55591ba05791da07b05d
parentd9465c9c36910e177dfeb32ed73cac937f40edd7 (diff)
downloadpcsxr-05a2e4099d0291dfd5fd36922aebb7129068ba25.tar.gz
GameShark Sampler + GameShark 2: Give longer VSync delay before exception sees it (fixes black screens)
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@56826 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--libpcsxcore/r3000a.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c
index 550a17bb..b1ffdc9a 100644
--- a/libpcsxcore/r3000a.c
+++ b/libpcsxcore/r3000a.c
@@ -110,11 +110,23 @@ void psxException(u32 code, u32 bd) {
if (Config.HLE) psxBiosException();
}
-void psxBranchTest() {
+void psxBranchTest() {
+ if (psxHu32(0x1070) & psxHu32(0x1074)) {
+ if ((psxRegs.CP0.n.Status & 0x401) == 0x401) {
+#ifdef PSXCPU_LOG
+ PSXCPU_LOG("Interrupt: %x %x\n", psxHu32(0x1070), psxHu32(0x1074));
+#endif
+// SysPrintf("Interrupt (%x): %x %x\n", psxRegs.cycle, psxHu32(0x1070), psxHu32(0x1074));
+ psxException(0x400, 0);
+ }
+ }
+
+ // Give Vsync ~2-15+ cycles before exception eats it
if ((psxRegs.cycle - psxNextsCounter) >= psxNextCounter)
psxRcntUpdate();
if (psxRegs.interrupt) {
+ //if (1) {
if ((psxRegs.interrupt & (1 << PSXINT_SIO)) && !Config.Sio) { // sio
if ((psxRegs.cycle - psxRegs.intCycle[PSXINT_SIO].sCycle) >= psxRegs.intCycle[PSXINT_SIO].cycle) {
psxRegs.interrupt &= ~(1 << PSXINT_SIO);
@@ -172,16 +184,6 @@ void psxBranchTest() {
}
}
}
-
- if (psxHu32(0x1070) & psxHu32(0x1074)) {
- if ((psxRegs.CP0.n.Status & 0x401) == 0x401) {
-#ifdef PSXCPU_LOG
- PSXCPU_LOG("Interrupt: %x %x\n", psxHu32(0x1070), psxHu32(0x1074));
-#endif
-// SysPrintf("Interrupt (%x): %x %x\n", psxRegs.cycle, psxHu32(0x1070), psxHu32(0x1074));
- psxException(0x400, 0);
- }
- }
}
void psxJumpTest() {