diff --git a/core/hw/gdrom/gdromv3.cpp b/core/hw/gdrom/gdromv3.cpp index acc3e8bf9..60934d572 100644 --- a/core/hw/gdrom/gdromv3.cpp +++ b/core/hw/gdrom/gdromv3.cpp @@ -853,7 +853,9 @@ void gd_process_spi_cmd() cdda.EndAddr.FAD = ses_inf[3] << 16 | ses_inf[4] << 8 | ses_inf[5]; } cdda.repeats = packet_cmd.data_8[6] & 0xF; - if (cdda.status != cdda_t::Playing || cdda.CurrAddr.FAD < cdda.StartAddr.FAD || cdda.CurrAddr.FAD > cdda.EndAddr.FAD) + if ((cdda.status != cdda_t::Playing && cdda.status != cdda_t::Paused) + || cdda.CurrAddr.FAD < cdda.StartAddr.FAD + || cdda.CurrAddr.FAD > cdda.EndAddr.FAD) cdda.CurrAddr.FAD = cdda.StartAddr.FAD; cdda.status = cdda_t::Playing; SecNumber.Status = GD_PLAY; diff --git a/core/reios/gdrom_hle.cpp b/core/reios/gdrom_hle.cpp index e22e305bf..47bd18e40 100644 --- a/core/reios/gdrom_hle.cpp +++ b/core/reios/gdrom_hle.cpp @@ -358,7 +358,9 @@ static void GD_HLE_Command(gd_command cc) DEBUG_LOG(REIOS, "GDROM: CMD PLAY first_track %x last_track %x repeats %x start_fad %x end_fad %x", first_track, last_track, cdda.repeats, cdda.StartAddr.FAD, cdda.EndAddr.FAD); cdda.status = cdda_t::Playing; - if (SecNumber.Status != GD_PAUSE || cdda.CurrAddr.FAD < cdda.StartAddr.FAD || cdda.CurrAddr.FAD > cdda.EndAddr.FAD) + if ((SecNumber.Status != GD_PLAY && SecNumber.Status != GD_PAUSE) + || cdda.CurrAddr.FAD < cdda.StartAddr.FAD + || cdda.CurrAddr.FAD > cdda.EndAddr.FAD) cdda.CurrAddr.FAD = cdda.StartAddr.FAD; SecNumber.Status = GD_PLAY; }