Hack fix for CDROM timings regression (Castlevania, Megaman X4) (#231)
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index 647a1b6..26f68ac 100644 (file)
@@ -1183,6 +1183,19 @@ void cdrReadInterrupt() {
                        int ret = xa_decode_sector(&cdr.Xa, cdr.Transfer+4, cdr.FirstSector);
                        if (!ret) {
                                cdrAttenuate(cdr.Xa.pcm, cdr.Xa.nsamples, cdr.Xa.stereo);
+                               /*
+                                * Gameblabla -
+                                * This is a hack for Megaman X4, Castlevania etc...
+                                * that regressed from the new m_locationChanged and CDROM timings changes.
+                                * It is mostly noticeable in Castevania however and the stuttering can be very jarring.
+                                * 
+                                * According to PCSX redux authors, we shouldn't cause a location change if
+                                * the sector difference is too small. 
+                                * I attempted to go with that approach but came empty handed.
+                                * So for now, let's just set cdr.m_locationChanged to false when playing back any ADPCM samples.
+                                * This does not regress Crash Team Racing's intro at least.
+                               */
+                               cdr.m_locationChanged = FALSE;
                                SPU_playADPCMchannel(&cdr.Xa);
                                cdr.FirstSector = 0;
                        }