diff --git a/DiscImageChef.Core/Devices/Dumping/MMC.cs b/DiscImageChef.Core/Devices/Dumping/MMC.cs index 1fac6118f..53cedcf34 100644 --- a/DiscImageChef.Core/Devices/Dumping/MMC.cs +++ b/DiscImageChef.Core/Devices/Dumping/MMC.cs @@ -178,7 +178,16 @@ namespace DiscImageChef.Core.Devices.Dumping dumpLog.WriteLine("Device reports disc has {0} blocks", blocks); Dictionary mediaTags = new Dictionary(); - if(dskType == MediaType.PD650 && blocks == 1281856) dskType = MediaType.PD650_WORM; + if(dskType == MediaType.PD650) + switch(blocks + 1) + { + case 1281856: + dskType = MediaType.PD650_WORM; + break; + case 17090880: + dskType = MediaType.REV35; + break; + } #region Nintendo switch(dskType) diff --git a/DiscImageChef.Core/Devices/Dumping/SBC.cs b/DiscImageChef.Core/Devices/Dumping/SBC.cs index 0f21af908..9f950e7a3 100644 --- a/DiscImageChef.Core/Devices/Dumping/SBC.cs +++ b/DiscImageChef.Core/Devices/Dumping/SBC.cs @@ -78,6 +78,16 @@ namespace DiscImageChef.Core.Devices.Dumping byte[] readBuffer; Modes.DecodedMode? decMode = null; + if(opticalDisc) + switch(dskType) + { + case MediaType.REV35: + case MediaType.REV70: + case MediaType.REV120: + opticalDisc = false; + break; + } + dumpLog.WriteLine("Initializing reader."); Reader scsiReader = new Reader(dev, dev.Timeout, null, dumpRaw); ulong blocks = scsiReader.GetDeviceBlocks(); diff --git a/DiscImageChef.Core/Media/Info/ScsiInfo.cs b/DiscImageChef.Core/Media/Info/ScsiInfo.cs index 5352c52cb..71f04e741 100644 --- a/DiscImageChef.Core/Media/Info/ScsiInfo.cs +++ b/DiscImageChef.Core/Media/Info/ScsiInfo.cs @@ -308,7 +308,19 @@ namespace DiscImageChef.Core.Media.Info MediaType = MediaType.GENERIC_HDD; break; case 0x0002: - MediaType = MediaType.PD650; + switch(scsiMediumType) + { + case 0x01: + MediaType = MediaType.PD650; + break; + case 0x41: + MediaType = MediaType.REV35; + break; + default: + MediaType = MediaType.Unknown; + break; + } + break; case 0x0005: MediaType = MediaType.CDMO;