diff --git a/src/dos/cdrom_aspi_win32.cpp b/src/dos/cdrom_aspi_win32.cpp index c3ed83ce..62b92ce7 100644 --- a/src/dos/cdrom_aspi_win32.cpp +++ b/src/dos/cdrom_aspi_win32.cpp @@ -292,7 +292,7 @@ bool CDROM_Interface_Aspi::GetAudioTrackInfo (int track, TMSF& start, unsigned c start.min = (unsigned char)(toc.tracks[track-1].lAddr >> 8) &0xFF; start.sec = (unsigned char)(toc.tracks[track-1].lAddr >> 16) &0xFF; start.fr = (unsigned char)(toc.tracks[track-1].lAddr >> 24) &0xFF; - attr = toc.tracks[track-1].cAdrCtrl; + attr = (toc.tracks[track-1].cAdrCtrl << 4) & 0xEF; return true; }; return false; @@ -503,7 +503,7 @@ bool CDROM_Interface_Aspi::GetAudioSub(unsigned char& attr, unsigned char& track if (s.SRB_Status!=SS_COMP) return false; - attr = (pos.ADR<<4) | pos.Control; + attr = (pos.Control<<4) &0xEF; track = pos.TrackNumber; index = pos.IndexNumber; absPos.min = pos.AbsoluteAddress[1]; diff --git a/src/dos/cdrom_ioctl_win32.cpp b/src/dos/cdrom_ioctl_win32.cpp index 3d15e366..ddff8925 100644 --- a/src/dos/cdrom_ioctl_win32.cpp +++ b/src/dos/cdrom_ioctl_win32.cpp @@ -75,7 +75,7 @@ bool CDROM_Interface_Ioctl::GetAudioTrackInfo(int track, TMSF& start, unsigned c // Close(); if (!bStat) return false; - attr = (toc.TrackData[track-1].Adr << 4) | toc.TrackData[track].Control; + attr = (toc.TrackData[track-1].Control << 4) & 0xEF; start.min = toc.TrackData[track-1].Address[1]; start.sec = toc.TrackData[track-1].Address[2]; start.fr = toc.TrackData[track-1].Address[3]; @@ -97,7 +97,7 @@ bool CDROM_Interface_Ioctl::GetAudioSub(unsigned char& attr, unsigned char& trac // Close(); if (!bStat) return false; - attr = (sub.CurrentPosition.ADR << 4) | sub.CurrentPosition.Control; + attr = (sub.CurrentPosition.Control << 4) & 0xEF; track = sub.CurrentPosition.TrackNumber; index = sub.CurrentPosition.IndexNumber; relPos.min = sub.CurrentPosition.TrackRelativeAddress[1];