gdrom, hle: don't restart cdda if paused or playing

Fix regression due to ab791d1b9c
(unpausing restarts the current track)
Issue #690
This commit is contained in:
Flyinghead 2022-07-14 16:49:56 +02:00
parent 1cadd4e923
commit 9d17fc15a3
2 changed files with 6 additions and 2 deletions

View File

@ -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;

View File

@ -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;
}