aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-06-27 18:51:27 +0300
committernotaz2011-07-08 00:15:08 +0300
commit4feed8d3c6c867a45cae54fa7399041c3b5dd2c1 (patch)
tree65b2ff4b9db1286c3f91b6b1f5758bf736cab4d9 /libpcsxcore
parent9f21ebfe5570056501063c4165a0debf880f534f (diff)
downloadpcsx_rearmed-4feed8d3c6c867a45cae54fa7399041c3b5dd2c1.tar.gz
pcsx_rearmed-4feed8d3c6c867a45cae54fa7399041c3b5dd2c1.tar.bz2
pcsx_rearmed-4feed8d3c6c867a45cae54fa7399041c3b5dd2c1.zip
cdrom: make read reschedule optional
Some really nasty timing issues, I guess can only be resolved for good when general timing is good and BIAS is gone.
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdrom.c7
-rw-r--r--libpcsxcore/psxcommon.h1
2 files changed, 5 insertions, 3 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 87a7c19..33b76fa 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -1905,9 +1905,10 @@ void cdrWrite3(unsigned char rt) {
if (cdr.Reading && !cdr.ResultReady) {
int left = psxRegs.intCycle[PSXINT_CDREAD].sCycle + psxRegs.intCycle[PSXINT_CDREAD].cycle - psxRegs.cycle;
int time = (cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime;
- if (left < time / 2) { // rearmed guesswork hack
- //printf("-- resched %d -> %d\n", left, time / 2);
- CDREAD_INT(time / 2);
+ if (Config.CdrReschedule != 2)
+ if (left < time / 2 || Config.CdrReschedule) { // rearmed guesswork hack
+ //printf("-- resched %d -> %d\n", left, time);
+ CDREAD_INT(time);
}
}
diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h
index 500c44a..9f12e3b 100644
--- a/libpcsxcore/psxcommon.h
+++ b/libpcsxcore/psxcommon.h
@@ -127,6 +127,7 @@ typedef struct {
boolean RCntFix;
boolean UseNet;
boolean VSyncWA;
+ boolean CdrReschedule;
u8 Cpu; // CPU_DYNAREC or CPU_INTERPRETER
u8 PsxType; // PSX_TYPE_NTSC or PSX_TYPE_PAL
#ifdef _WIN32