- cdr.Stat &= ~rt;
-
- if (rt & 0x40)
- cdr.ParamC = 0;
-
- if (rt == 0x07) {
- if (cdr.Irq == 0xff) {
- cdr.Irq = 0;
- return;
- }
-
- // XA streaming - incorrect timing because of this reschedule
- // - Final Fantasy Tactics
- // - various other games
-
- 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 (Config.CdrReschedule != 2)
- if (left < time / 2 || Config.CdrReschedule) { // rearmed guesswork hack
- CDR_LOG_I("-- resched %d -> %d\n", left, time);
- CDREAD_INT(time);
- }
- }
- }
- return;
-
-transfer: