From a0ebde3b382bf8f98bc8857c7c7d9aa001009657 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 4 Feb 2018 20:24:48 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9BFix=20detecting=20CD-i=20and=20CD-R?= =?UTF-8?q?OM=20XA=20on=20dumping=20and=20media-info.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Devices/Dumping/CompactDisc.cs | 12 ++++++++++++ DiscImageChef/Commands/MediaInfo.cs | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs index 6d90c547..e0b31d4a 100644 --- a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs +++ b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs @@ -391,6 +391,18 @@ namespace DiscImageChef.Core.Devices.Dumping lastSector = phour * 3600 * 75 + pmin * 60 * 75 + psec * 75 + pframe - 150; } + else if(trk.POINT == 0xA0 && trk.ADR == 1) + { + switch(trk.PSEC) + { + case 0x10: + dskType = MediaType.CDI; + break; + case 0x20: + dskType = MediaType.CDROMXA; + break; + } + } if(trackList.Count == 0) { diff --git a/DiscImageChef/Commands/MediaInfo.cs b/DiscImageChef/Commands/MediaInfo.cs index c0583df0..7fac21a6 100644 --- a/DiscImageChef/Commands/MediaInfo.cs +++ b/DiscImageChef/Commands/MediaInfo.cs @@ -1158,6 +1158,25 @@ namespace DiscImageChef.Commands DataFile.WriteTo("Media-Info command", outputPrefix, "_rawtoc.bin", "SCSI READ TOC/PMA/ATIP", cmdBuf); DicConsole.WriteLine("Raw TOC:\n{0}", FullTOC.Prettify(cmdBuf)); + + FullTOC.CDFullTOC? fullToc = FullTOC.Decode(cmdBuf); + if(fullToc.HasValue) + { + FullTOC.TrackDataDescriptor a0Track = + fullToc.Value.TrackDescriptors.FirstOrDefault(t => t.POINT == 0xA0 && t.ADR == 1); + if(a0Track.POINT == 0xA0) + { + switch(a0Track.PSEC) + { + case 0x10: + dskType = MediaType.CDI; + break; + case 0x20: + dskType = MediaType.CDROMXA; + break; + } + } + } } sense = dev.ReadPma(out cmdBuf, out senseBuf, dev.Timeout, out _); if(sense)