diff --git a/Aaru.Images/ZZZRawImage/Properties.cs b/Aaru.Images/ZZZRawImage/Properties.cs index 8a75a962d..3bf8c8aa0 100644 --- a/Aaru.Images/ZZZRawImage/Properties.cs +++ b/Aaru.Images/ZZZRawImage/Properties.cs @@ -81,6 +81,18 @@ namespace Aaru.DiscImages TrackSession = 1 }; + if(_imageInfo.MediaType == MediaType.CD || + _imageInfo.MediaType == MediaType.CDRW || + _imageInfo.MediaType == MediaType.CDR) + { + trk.TrackPregap = 150; + trk.Indexes[0] = -150; + trk.Indexes[1] = 0; + + if(trk.TrackType == TrackType.Data) + trk.TrackType = TrackType.CdMode1; + } + List lst = new List { trk diff --git a/Aaru.Images/ZZZRawImage/Read.cs b/Aaru.Images/ZZZRawImage/Read.cs index c5539d96d..b50dae80a 100644 --- a/Aaru.Images/ZZZRawImage/Read.cs +++ b/Aaru.Images/ZZZRawImage/Read.cs @@ -1083,6 +1083,9 @@ namespace Aaru.DiscImages case MediaType.CD: case MediaType.CDRW: case MediaType.CDR: + if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdTrackFlags)) + _imageInfo.ReadableSectorTags.Add(SectorTagType.CdTrackFlags); + goto case MediaType.BDRE; case MediaType.BDRE: case MediaType.BDROM: case MediaType.BDR: @@ -1366,7 +1369,7 @@ namespace Aaru.DiscImages public byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc || - !_rawCompactDisc) + (!_rawCompactDisc && tag != SectorTagType.CdTrackFlags)) throw new FeatureUnsupportedImageException("Feature not supported by image format"); return ReadSectorsTag(sectorAddress, 1, tag); @@ -1375,9 +1378,15 @@ namespace Aaru.DiscImages public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) { if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc || - !_rawCompactDisc) + (!_rawCompactDisc && tag != SectorTagType.CdTrackFlags)) throw new FeatureUnsupportedImageException("Feature not supported by image format"); + if(tag == SectorTagType.CdTrackFlags) + return new byte[] + { + 4 + }; + if(sectorAddress > _imageInfo.Sectors - 1) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");