stop cdda when reading sector

This commit is contained in:
Flyinghead 2020-02-02 21:15:53 +01:00
parent f9d8733604
commit dcf5444acc
3 changed files with 6 additions and 9 deletions

View File

@ -432,7 +432,7 @@ void gd_process_ata_cmd()
break;
default:
die("Unknown ATA command...");
ERROR_LOG(GDROM, "Unknown ATA command %x", ata_cmd.command);
break;
};
}
@ -505,9 +505,7 @@ void gd_process_spi_cmd()
printf_spicmd("SPI_TEST_UNIT");
GDStatus.CHECK=SecNumber.Status==GD_BUSY; // Drive is ready ;)
// sns_key=0;
// sns_asc=0;
// sns_ascq=0;
cdda.playing = false;
gd_set_state(gds_procpacketdone);
break;
@ -523,6 +521,7 @@ void gd_process_spi_cmd()
{
#define readcmd packet_cmd.GDReadBlock
cdda.playing = false;
u32 sector_type=2048;
if (readcmd.head ==1 && readcmd.subh==1 && readcmd.data==1 && readcmd.expdtype==3 && readcmd.other==0)
sector_type=2340;

View File

@ -286,14 +286,17 @@ static void GD_HLE_Command(u32 cc)
DEBUG_LOG(REIOS, "GDROM: CMD INIT");
gd_hle_state.multi_callback = 0;
gd_hle_state.multi_read_count = 0;
cdda.playing = false;
break;
case GDCC_PIOREAD:
GDROM_HLE_ReadPIO();
SecNumber.Status = GD_STANDBY;
cdda.playing = false;
break;
case GDCC_DMAREAD:
cdda.playing = false;
if (gd_hle_state.xfer_end_time == 0)
GDROM_HLE_ReadDMA();
if (gd_hle_state.xfer_end_time > 0)

View File

@ -44,11 +44,6 @@
#define MISC_INIT 0x00
#define MISC_SETVECTOR 0x01
#define CTOC_LBA(n) (n)
#define CTOC_ADR(n) ((n)<<24)
#define CTOC_CTRL(n) ((n)<<28)
#define CTOC_TRACK(n) ((n)<<16)
void gdrom_hle_op();
typedef enum { BIOS_ERROR = -1, BIOS_INACTIVE, BIOS_ACTIVE, BIOS_COMPLETED, BIOS_DATA_AVAIL } gd_bios_status;