Slightly modified CD-ROM disc change handling and behavior of the REQUEST SENSE command.

This commit is contained in:
OBattler
2016-12-23 21:35:39 +01:00
parent dda3ff99b9
commit 645efe1f7d
3 changed files with 16 additions and 12 deletions

View File

@@ -303,8 +303,10 @@ static int ioctl_medium_changed(void)
if (cdrom_drive != old_cdrom_drive)
old_cdrom_drive = cdrom_drive;
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
return 0;
return 1;
}
else
{
if ((ltoc.TrackData[ltoc.LastTrack].Address[1] != toc.TrackData[toc.LastTrack].Address[1]) ||
(ltoc.TrackData[ltoc.LastTrack].Address[2] != toc.TrackData[toc.LastTrack].Address[2]) ||
(ltoc.TrackData[ltoc.LastTrack].Address[3] != toc.TrackData[toc.LastTrack].Address[3]))
@@ -314,6 +316,7 @@ static int ioctl_medium_changed(void)
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
return 1; /* TOC mismatches. */
}
}
return 0; /* None of the above, return 0. */
}

View File

@@ -95,10 +95,11 @@ static int iso_medium_changed(void)
{
return 0;
}
if (old_cdrom_drive != cdrom_drive)
{
old_cdrom_drive = cdrom_drive;
return 0;
return 1;
}
if (iso_changed)

View File

@@ -1976,7 +1976,7 @@ static void atapicommand(int ide_board)
idebufferb[0]=0x80|0x70;
if ((SCSISense.SenseKey > 0) || (cd_status < CD_STATUS_PLAYING))
if ((SCSISense.SenseKey > 0) && ((cd_status < CD_STATUS_PLAYING) || (cd_status == CD_STATUS_STOPPED)))
{
if (completed)
{