cdr.CmdInProgress, cdr.IrqStat);
cdr.Irq1Pending = result;
// F1 2000 timing hack :(
+ // compensate for some csum func @80014380 taking too long
psxRegs.intCycle[PSXINT_CDREAD].sCycle += cdReadTime / 10;
return;
}
{ 310, { "SLUS01114", "SLES03286" } },
/* Syphon Filter - reportedly hangs under unknown conditions */
{ 169, { "SCUS94240" } },
+#ifndef DRC_DISABLE
/* Psychic Detective - some weird race condition in the game's cdrom code */
- { 200, { "SLUS00165", "SLUS00166", "SLUS00167" } },
- { 200, { "SLES00070", "SLES10070", "SLES20070" } },
+ { 181, { "SLUS00165", "SLUS00166", "SLUS00167" } },
+ { 181, { "SLES00070", "SLES10070", "SLES20070" } },
+#endif
/* Vib-Ribbon - cd timing issues (PAL+ari64drc only?) */
{ 200, { "SCES02873" } },
/* Zero Divide - sometimes too fast */
/* (0x9fc00000 <= addr && addr < 0x9fc80000) ||*/
(0xbfc00000 <= addr && addr < 0xbfc80000))
{
- // BIOS. The multiplier should be much higher as it's uncached 8bit mem,
- // but timings in PCSX are too tied to the interpreter's 2-per-insn assumption
- if (!HACK_ENABLED(NDHACK_OVERRIDE_CYCLE_M))
- cycle_multiplier_active = 200;
+ // BIOS. The multiplier should be much higher as it's uncached 8bit mem
+ // XXX: disabled as this introduces differences from the interpreter
+ // and lightrec multipliers making emu variations act inconsistently
+ //if (!HACK_ENABLED(NDHACK_OVERRIDE_CYCLE_M))
+ // cycle_multiplier_active = 200;
*limit = (addr & 0xfff00000) | 0x80000;
return (u_int *)((u_char *)psxR + (addr&0x7ffff));
dops[i + 3].itype = NOP;
}
}
+ if (source[0] == 0x3c05edb8 && source[1] == 0x34a58320)
+ {
+ // lui a1, 0xEDB8; ori a1, 0x8320
+ SysPrintf("F1 2000 hack @%08x\n", start);
+ cycle_multiplier_active = 100;
+ }
i = slen;
if (i > 10 && source[i-1] == 0 && source[i-2] == 0x03e00008
&& source[i-4] == 0x8fbf0018 && source[i-6] == 0x00c0f809