REFACTOR: Remove redundant parentheses.

This commit is contained in:
2017-12-20 17:26:28 +00:00
parent eff65c4bad
commit 520e028621
14 changed files with 182 additions and 182 deletions

View File

@@ -2417,7 +2417,7 @@ namespace DiscImageChef.Decoders.ATA
sb.AppendFormat("Physical sector size: {0} bytes", physicalsectorsize).AppendLine(); sb.AppendFormat("Physical sector size: {0} bytes", physicalsectorsize).AppendLine();
sb.AppendFormat("Logical sector size: {0} bytes", logicalsectorsize).AppendLine(); sb.AppendFormat("Logical sector size: {0} bytes", logicalsectorsize).AppendLine();
if((logicalsectorsize != physicalsectorsize) && (ATAID.LogicalAlignment & 0x8000) == 0x0000 && if(logicalsectorsize != physicalsectorsize && (ATAID.LogicalAlignment & 0x8000) == 0x0000 &&
(ATAID.LogicalAlignment & 0x4000) == 0x4000) (ATAID.LogicalAlignment & 0x4000) == 0x4000)
{ {
sb.AppendFormat("Logical sector starts at offset {0} from physical sector", sb.AppendFormat("Logical sector starts at offset {0} from physical sector",
@@ -2462,40 +2462,40 @@ namespace DiscImageChef.Decoders.ATA
if(ATAID.CurrentSectors > 0) if(ATAID.CurrentSectors > 0)
sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB", sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB",
(ulong)ATAID.CurrentSectors * logicalsectorsize, (ulong)ATAID.CurrentSectors * logicalsectorsize,
((ulong)ATAID.CurrentSectors * logicalsectorsize) / 1000 / 1000, (ulong)ATAID.CurrentSectors * logicalsectorsize / 1000 / 1000,
((ulong)ATAID.CurrentSectors * 512) / 1024 / 1024).AppendLine(); (ulong)ATAID.CurrentSectors * 512 / 1024 / 1024).AppendLine();
else else
{ {
ulong currentSectors = (ulong)(ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack); ulong currentSectors = (ulong)(ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack);
sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB", sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB",
currentSectors * logicalsectorsize, currentSectors * logicalsectorsize,
(currentSectors * logicalsectorsize) / 1000 / 1000, currentSectors * logicalsectorsize / 1000 / 1000,
(currentSectors * 512) / 1024 / 1024).AppendLine(); currentSectors * 512 / 1024 / 1024).AppendLine();
} }
} }
if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport)) if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport))
{ {
if((((ulong)ATAID.LBASectors * logicalsectorsize) / 1024 / 1024) > 1000000) if((ulong)ATAID.LBASectors * logicalsectorsize / 1024 / 1024 > 1000000)
{ {
sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Tb, {2} TiB", sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Tb, {2} TiB",
(ulong)ATAID.LBASectors * logicalsectorsize, (ulong)ATAID.LBASectors * logicalsectorsize,
((ulong)ATAID.LBASectors * logicalsectorsize) / 1000 / 1000 / 1000 / 1000, (ulong)ATAID.LBASectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000,
((ulong)ATAID.LBASectors * 512) / 1024 / 1024 / 1024 / 1024).AppendLine(); (ulong)ATAID.LBASectors * 512 / 1024 / 1024 / 1024 / 1024).AppendLine();
} }
else if((((ulong)ATAID.LBASectors * logicalsectorsize) / 1024 / 1024) > 1000) else if((ulong)ATAID.LBASectors * logicalsectorsize / 1024 / 1024 > 1000)
{ {
sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Gb, {2} GiB", sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Gb, {2} GiB",
(ulong)ATAID.LBASectors * logicalsectorsize, (ulong)ATAID.LBASectors * logicalsectorsize,
((ulong)ATAID.LBASectors * logicalsectorsize) / 1000 / 1000 / 1000, (ulong)ATAID.LBASectors * logicalsectorsize / 1000 / 1000 / 1000,
((ulong)ATAID.LBASectors * 512) / 1024 / 1024 / 1024).AppendLine(); (ulong)ATAID.LBASectors * 512 / 1024 / 1024 / 1024).AppendLine();
} }
else else
{ {
sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Mb, {2} MiB", sb.AppendFormat("Device size in 28-bit LBA mode: {0} bytes, {1} Mb, {2} MiB",
(ulong)ATAID.LBASectors * logicalsectorsize, (ulong)ATAID.LBASectors * logicalsectorsize,
((ulong)ATAID.LBASectors * logicalsectorsize) / 1000 / 1000, (ulong)ATAID.LBASectors * logicalsectorsize / 1000 / 1000,
((ulong)ATAID.LBASectors * 512) / 1024 / 1024).AppendLine(); (ulong)ATAID.LBASectors * 512 / 1024 / 1024).AppendLine();
} }
} }
@@ -2503,53 +2503,53 @@ namespace DiscImageChef.Decoders.ATA
{ {
if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ExtSectors)) if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ExtSectors))
{ {
if(((ATAID.ExtendedUserSectors * logicalsectorsize) / 1024 / 1024) > 1000000) if(ATAID.ExtendedUserSectors * logicalsectorsize / 1024 / 1024 > 1000000)
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Tb, {2} TiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Tb, {2} TiB",
ATAID.ExtendedUserSectors * logicalsectorsize, ATAID.ExtendedUserSectors * logicalsectorsize,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1000 / 1000 / 1000 / 1000, ATAID.ExtendedUserSectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024) ATAID.ExtendedUserSectors * logicalsectorsize / 1024 / 1024 / 1024 / 1024)
.AppendLine(); .AppendLine();
} }
else if(((ATAID.ExtendedUserSectors * logicalsectorsize) / 1024 / 1024) > 1000) else if(ATAID.ExtendedUserSectors * logicalsectorsize / 1024 / 1024 > 1000)
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Gb, {2} GiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Gb, {2} GiB",
ATAID.ExtendedUserSectors * logicalsectorsize, ATAID.ExtendedUserSectors * logicalsectorsize,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1000 / 1000 / 1000, ATAID.ExtendedUserSectors * logicalsectorsize / 1000 / 1000 / 1000,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1024 / 1024 / 1024) ATAID.ExtendedUserSectors * logicalsectorsize / 1024 / 1024 / 1024)
.AppendLine(); .AppendLine();
} }
else else
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Mb, {2} MiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Mb, {2} MiB",
ATAID.ExtendedUserSectors * logicalsectorsize, ATAID.ExtendedUserSectors * logicalsectorsize,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1000 / 1000, ATAID.ExtendedUserSectors * logicalsectorsize / 1000 / 1000,
(ATAID.ExtendedUserSectors * logicalsectorsize) / 1024 / 1024).AppendLine(); ATAID.ExtendedUserSectors * logicalsectorsize / 1024 / 1024).AppendLine();
} }
} }
else else
{ {
if(((ATAID.LBA48Sectors * logicalsectorsize) / 1024 / 1024) > 1000000) if(ATAID.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000000)
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Tb, {2} TiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Tb, {2} TiB",
ATAID.LBA48Sectors * logicalsectorsize, ATAID.LBA48Sectors * logicalsectorsize,
(ATAID.LBA48Sectors * logicalsectorsize) / 1000 / 1000 / 1000 / 1000, ATAID.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000,
(ATAID.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024) ATAID.LBA48Sectors * logicalsectorsize / 1024 / 1024 / 1024 / 1024)
.AppendLine(); .AppendLine();
} }
else if(((ATAID.LBA48Sectors * logicalsectorsize) / 1024 / 1024) > 1000) else if(ATAID.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000)
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Gb, {2} GiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Gb, {2} GiB",
ATAID.LBA48Sectors * logicalsectorsize, ATAID.LBA48Sectors * logicalsectorsize,
(ATAID.LBA48Sectors * logicalsectorsize) / 1000 / 1000 / 1000, ATAID.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000,
(ATAID.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024).AppendLine(); ATAID.LBA48Sectors * logicalsectorsize / 1024 / 1024 / 1024).AppendLine();
} }
else else
{ {
sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Mb, {2} MiB", sb.AppendFormat("Device size in 48-bit LBA mode: {0} bytes, {1} Mb, {2} MiB",
ATAID.LBA48Sectors * logicalsectorsize, ATAID.LBA48Sectors * logicalsectorsize,
(ATAID.LBA48Sectors * logicalsectorsize) / 1000 / 1000, ATAID.LBA48Sectors * logicalsectorsize / 1000 / 1000,
(ATAID.LBA48Sectors * logicalsectorsize) / 1024 / 1024).AppendLine(); ATAID.LBA48Sectors * logicalsectorsize / 1024 / 1024).AppendLine();
} }
} }
} }
@@ -2594,18 +2594,18 @@ namespace DiscImageChef.Decoders.ATA
{ {
case 1: case 1:
sb.AppendFormat("{0} KiB of single ported single sector buffer", sb.AppendFormat("{0} KiB of single ported single sector buffer",
(ATAID.BufferSize * 512) / 1024).AppendLine(); ATAID.BufferSize * 512 / 1024).AppendLine();
break; break;
case 2: case 2:
sb.AppendFormat("{0} KiB of dual ported multi sector buffer", (ATAID.BufferSize * 512) / 1024) sb.AppendFormat("{0} KiB of dual ported multi sector buffer", ATAID.BufferSize * 512 / 1024)
.AppendLine(); .AppendLine();
break; break;
case 3: case 3:
sb.AppendFormat("{0} KiB of dual ported multi sector buffer with read caching", sb.AppendFormat("{0} KiB of dual ported multi sector buffer with read caching",
(ATAID.BufferSize * 512) / 1024).AppendLine(); ATAID.BufferSize * 512 / 1024).AppendLine();
break; break;
default: default:
sb.AppendFormat("{0} KiB of unknown type {1} buffer", (ATAID.BufferSize * 512) / 1024, sb.AppendFormat("{0} KiB of unknown type {1} buffer", ATAID.BufferSize * 512 / 1024,
ATAID.BufferType).AppendLine(); ATAID.BufferType).AppendLine();
break; break;
} }
@@ -2846,8 +2846,8 @@ namespace DiscImageChef.Decoders.ATA
ATAID.ServiceBusyClear); ATAID.ServiceBusyClear);
} }
if(((ATAID.TransportMajorVersion & 0xF000) >> 12) == 0x1 || if((ATAID.TransportMajorVersion & 0xF000) >> 12 == 0x1 ||
((ATAID.TransportMajorVersion & 0xF000) >> 12) == 0xE) (ATAID.TransportMajorVersion & 0xF000) >> 12 == 0xE)
{ {
if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear)) if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear))
{ {
@@ -2974,7 +2974,7 @@ namespace DiscImageChef.Decoders.ATA
sb.AppendLine().Append("CompactFlash power mode 1 is disabled"); sb.AppendLine().Append("CompactFlash power mode 1 is disabled");
sb.AppendLine().AppendFormat("CompactFlash device uses a maximum of {0} mA", sb.AppendLine().AppendFormat("CompactFlash device uses a maximum of {0} mA",
(ATAID.CFAPowerMode & 0x0FFF)); ATAID.CFAPowerMode & 0x0FFF);
} }
} }
@@ -3346,8 +3346,8 @@ namespace DiscImageChef.Decoders.ATA
sb.AppendLine().Append("Trusted Computing feature set is supported"); sb.AppendLine().Append("Trusted Computing feature set is supported");
} }
if(((ATAID.TransportMajorVersion & 0xF000) >> 12) == 0x1 || if((ATAID.TransportMajorVersion & 0xF000) >> 12 == 0x1 ||
((ATAID.TransportMajorVersion & 0xF000) >> 12) == 0xE) (ATAID.TransportMajorVersion & 0xF000) >> 12 == 0xE)
{ {
if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear)) if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear))
{ {

View File

@@ -208,7 +208,7 @@ namespace DiscImageChef.Decoders.CD
return null; return null;
} }
for(int i = 0; i < ((decoded.DataLength - 2) / 18); i++) for(int i = 0; i < (decoded.DataLength - 2) / 18; i++)
{ {
decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + i * 18 + 4]; decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + i * 18 + 4];
decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + i * 18 + 4]; decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + i * 18 + 4];

View File

@@ -166,7 +166,7 @@ namespace DiscImageChef.Decoders.CD
return null; return null;
} }
for(int i = 0; i < ((decoded.DataLength - 2) / 11); i++) for(int i = 0; i < (decoded.DataLength - 2) / 11; i++)
{ {
decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + i * 11 + 4]; decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + i * 11 + 4];
decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + i * 11 + 4] & 0xF0) >> 4); decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + i * 11 + 4] & 0xF0) >> 4);
@@ -202,7 +202,7 @@ namespace DiscImageChef.Decoders.CD
foreach(TrackDataDescriptor descriptor in response.TrackDescriptors) foreach(TrackDataDescriptor descriptor in response.TrackDescriptors)
{ {
if((descriptor.CONTROL & 0x08) == 0x08 || if((descriptor.CONTROL & 0x08) == 0x08 ||
(descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6) || descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6 ||
descriptor.TNO != 0) descriptor.TNO != 0)
{ {
sb.AppendLine("Unknown TOC entry format, printing values as-is"); sb.AppendLine("Unknown TOC entry format, printing values as-is");

View File

@@ -153,7 +153,7 @@ namespace DiscImageChef.Decoders.CD
return null; return null;
} }
for(int i = 0; i < ((decoded.DataLength - 2) / 11); i++) for(int i = 0; i < (decoded.DataLength - 2) / 11; i++)
{ {
decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + i * 11 + 4]; decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + i * 11 + 4];
decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + i * 11 + 4] & 0xF0) >> 4); decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + i * 11 + 4] & 0xF0) >> 4);

View File

@@ -128,7 +128,7 @@ namespace DiscImageChef.Decoders.CD
return null; return null;
} }
for(int i = 0; i < ((decoded.DataLength - 2) / 8); i++) for(int i = 0; i < (decoded.DataLength - 2) / 8; i++)
{ {
decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + i * 8 + 4]; decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + i * 8 + 4];
decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + i * 8 + 4] & 0xF0) >> 4); decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + i * 8 + 4] & 0xF0) >> 4);

View File

@@ -130,7 +130,7 @@ namespace DiscImageChef.Decoders.CD
return null; return null;
} }
for(int i = 0; i < ((decoded.DataLength - 2) / 8); i++) for(int i = 0; i < (decoded.DataLength - 2) / 8; i++)
{ {
decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + i * 8 + 4]; decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + i * 8 + 4];
decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + i * 8 + 4] & 0xF0) >> 4); decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + i * 8 + 4] & 0xF0) >> 4);

View File

@@ -1182,8 +1182,8 @@ namespace DiscImageChef.Decoders.DVD
} }
// DVD-R and DVD-RW // DVD-R and DVD-RW
if((pfi.DiskCategory == DiskCategory.DVDR && pfi.PartVersion < 6) || if(pfi.DiskCategory == DiskCategory.DVDR && pfi.PartVersion < 6 ||
(pfi.DiskCategory == DiskCategory.DVDRW && pfi.PartVersion < 3)) pfi.DiskCategory == DiskCategory.DVDRW && pfi.PartVersion < 3)
{ {
pfi.CurrentBorderOutSector = pfi.CurrentBorderOutSector =
(uint)((response[36] << 24) + (response[37] << 16) + (response[38] << 8) + response[39]); (uint)((response[36] << 24) + (response[37] << 16) + (response[38] << 8) + response[39]);
@@ -1302,8 +1302,8 @@ namespace DiscImageChef.Decoders.DVD
} }
// DVD-R DL and DVD-RW DL // DVD-R DL and DVD-RW DL
if((pfi.DiskCategory == DiskCategory.DVDR && pfi.PartVersion == 6) || if(pfi.DiskCategory == DiskCategory.DVDR && pfi.PartVersion == 6 ||
(pfi.DiskCategory == DiskCategory.DVDRW && pfi.PartVersion == 3)) pfi.DiskCategory == DiskCategory.DVDRW && pfi.PartVersion == 3)
{ {
pfi.MaxRecordingSpeed = (DVDRecordingSpeed)response[21]; pfi.MaxRecordingSpeed = (DVDRecordingSpeed)response[21];
pfi.MinRecordingSpeed = (DVDRecordingSpeed)response[22]; pfi.MinRecordingSpeed = (DVDRecordingSpeed)response[22];
@@ -1616,8 +1616,8 @@ namespace DiscImageChef.Decoders.DVD
} }
} }
if((decoded.DiskCategory == DiskCategory.DVDR && decoded.PartVersion < 6) || if(decoded.DiskCategory == DiskCategory.DVDR && decoded.PartVersion < 6 ||
(decoded.DiskCategory == DiskCategory.DVDRW && decoded.PartVersion < 3)) decoded.DiskCategory == DiskCategory.DVDRW && decoded.PartVersion < 3)
{ {
sb.AppendFormat("Current Border-Out first sector is PSN {0:X}h", decoded.CurrentBorderOutSector) sb.AppendFormat("Current Border-Out first sector is PSN {0:X}h", decoded.CurrentBorderOutSector)
.AppendLine(); .AppendLine();
@@ -1634,8 +1634,8 @@ namespace DiscImageChef.Decoders.DVD
sb.AppendFormat("Disc product revision is {0}", decoded.ProductRevision).AppendLine(); sb.AppendFormat("Disc product revision is {0}", decoded.ProductRevision).AppendLine();
} }
if((decoded.DiskCategory == DiskCategory.DVDR && decoded.PartVersion >= 6) || if(decoded.DiskCategory == DiskCategory.DVDR && decoded.PartVersion >= 6 ||
(decoded.DiskCategory == DiskCategory.DVDRW && decoded.PartVersion >= 3)) decoded.DiskCategory == DiskCategory.DVDRW && decoded.PartVersion >= 3)
{ {
sb.AppendFormat("Current RMD in extra Border zone starts at PSN {0:X}h", sb.AppendFormat("Current RMD in extra Border zone starts at PSN {0:X}h",
decoded.CurrentRMDExtraBorderPSN).AppendLine(); decoded.CurrentRMDExtraBorderPSN).AppendLine();

View File

@@ -270,18 +270,18 @@ namespace DiscImageChef.Decoders.Floppy
if(i < 86) if(i < 86)
{ {
output[i] |= (byte)((((buffer[i] & 1) << 1)) & 0xFF); output[i] |= (byte)((buffer[i] & 1) << 1 & 0xFF);
output[i] |= (byte)((((buffer[i] & 2) >> 1)) & 0xFF); output[i] |= (byte)((buffer[i] & 2) >> 1 & 0xFF);
} }
else if(i < 86 * 2) else if(i < 86 * 2)
{ {
output[i] |= (byte)((((buffer[i - 86] & 4) >> 1)) & 0xFF); output[i] |= (byte)((buffer[i - 86] & 4) >> 1 & 0xFF);
output[i] |= (byte)((((buffer[i - 86] & 8) >> 3)) & 0xFF); output[i] |= (byte)((buffer[i - 86] & 8) >> 3 & 0xFF);
} }
else else
{ {
output[i] |= (byte)((((buffer[i - 86 * 2] & 0x10) >> 3)) & 0xFF); output[i] |= (byte)((buffer[i - 86 * 2] & 0x10) >> 3 & 0xFF);
output[i] |= (byte)((((buffer[i - 86 * 2] & 0x20) >> 5)) & 0xFF); output[i] |= (byte)((buffer[i - 86 * 2] & 0x20) >> 5 & 0xFF);
} }
} }

View File

@@ -80,7 +80,7 @@ namespace DiscImageChef.Decoders.SCSI
} }
if(SCSIInquiryResponse.Length >= 2) if(SCSIInquiryResponse.Length >= 2)
{ {
decoded.RMB = Convert.ToBoolean((SCSIInquiryResponse[1] & 0x80)); decoded.RMB = Convert.ToBoolean(SCSIInquiryResponse[1] & 0x80);
decoded.DeviceTypeModifier = (byte)(SCSIInquiryResponse[1] & 0x7F); decoded.DeviceTypeModifier = (byte)(SCSIInquiryResponse[1] & 0x7F);
} }
if(SCSIInquiryResponse.Length >= 3) if(SCSIInquiryResponse.Length >= 3)
@@ -91,43 +91,43 @@ namespace DiscImageChef.Decoders.SCSI
} }
if(SCSIInquiryResponse.Length >= 4) if(SCSIInquiryResponse.Length >= 4)
{ {
decoded.AERC = Convert.ToBoolean((SCSIInquiryResponse[3] & 0x80)); decoded.AERC = Convert.ToBoolean(SCSIInquiryResponse[3] & 0x80);
decoded.TrmTsk = Convert.ToBoolean((SCSIInquiryResponse[3] & 0x40)); decoded.TrmTsk = Convert.ToBoolean(SCSIInquiryResponse[3] & 0x40);
decoded.NormACA = Convert.ToBoolean((SCSIInquiryResponse[3] & 0x20)); decoded.NormACA = Convert.ToBoolean(SCSIInquiryResponse[3] & 0x20);
decoded.HiSup = Convert.ToBoolean((SCSIInquiryResponse[3] & 0x10)); decoded.HiSup = Convert.ToBoolean(SCSIInquiryResponse[3] & 0x10);
decoded.ResponseDataFormat = (byte)(SCSIInquiryResponse[3] & 0x07); decoded.ResponseDataFormat = (byte)(SCSIInquiryResponse[3] & 0x07);
} }
if(SCSIInquiryResponse.Length >= 5) decoded.AdditionalLength = SCSIInquiryResponse[4]; if(SCSIInquiryResponse.Length >= 5) decoded.AdditionalLength = SCSIInquiryResponse[4];
if(SCSIInquiryResponse.Length >= 6) if(SCSIInquiryResponse.Length >= 6)
{ {
decoded.SCCS = Convert.ToBoolean((SCSIInquiryResponse[5] & 0x80)); decoded.SCCS = Convert.ToBoolean(SCSIInquiryResponse[5] & 0x80);
decoded.ACC = Convert.ToBoolean((SCSIInquiryResponse[5] & 0x40)); decoded.ACC = Convert.ToBoolean(SCSIInquiryResponse[5] & 0x40);
decoded.TPGS = (byte)((SCSIInquiryResponse[5] & 0x30) >> 4); decoded.TPGS = (byte)((SCSIInquiryResponse[5] & 0x30) >> 4);
decoded.ThreePC = Convert.ToBoolean((SCSIInquiryResponse[5] & 0x08)); decoded.ThreePC = Convert.ToBoolean(SCSIInquiryResponse[5] & 0x08);
decoded.Reserved2 = (byte)((SCSIInquiryResponse[5] & 0x06) >> 1); decoded.Reserved2 = (byte)((SCSIInquiryResponse[5] & 0x06) >> 1);
decoded.Protect = Convert.ToBoolean((SCSIInquiryResponse[5] & 0x01)); decoded.Protect = Convert.ToBoolean(SCSIInquiryResponse[5] & 0x01);
} }
if(SCSIInquiryResponse.Length >= 7) if(SCSIInquiryResponse.Length >= 7)
{ {
decoded.BQue = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x80)); decoded.BQue = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x80);
decoded.EncServ = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x40)); decoded.EncServ = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x40);
decoded.VS1 = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x20)); decoded.VS1 = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x20);
decoded.MultiP = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x10)); decoded.MultiP = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x10);
decoded.MChngr = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x08)); decoded.MChngr = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x08);
decoded.ACKREQQ = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x04)); decoded.ACKREQQ = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x04);
decoded.Addr32 = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x02)); decoded.Addr32 = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x02);
decoded.Addr16 = Convert.ToBoolean((SCSIInquiryResponse[6] & 0x01)); decoded.Addr16 = Convert.ToBoolean(SCSIInquiryResponse[6] & 0x01);
} }
if(SCSIInquiryResponse.Length >= 8) if(SCSIInquiryResponse.Length >= 8)
{ {
decoded.RelAddr = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x80)); decoded.RelAddr = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x80);
decoded.WBus32 = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x40)); decoded.WBus32 = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x40);
decoded.WBus16 = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x20)); decoded.WBus16 = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x20);
decoded.Sync = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x10)); decoded.Sync = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x10);
decoded.Linked = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x08)); decoded.Linked = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x08);
decoded.TranDis = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x04)); decoded.TranDis = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x04);
decoded.CmdQue = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x02)); decoded.CmdQue = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x02);
decoded.SftRe = Convert.ToBoolean((SCSIInquiryResponse[7] & 0x01)); decoded.SftRe = Convert.ToBoolean(SCSIInquiryResponse[7] & 0x01);
} }
if(SCSIInquiryResponse.Length >= 16) if(SCSIInquiryResponse.Length >= 16)
{ {
@@ -211,8 +211,8 @@ namespace DiscImageChef.Decoders.SCSI
{ {
decoded.Reserved3 = (byte)((SCSIInquiryResponse[56] & 0xF0) >> 4); decoded.Reserved3 = (byte)((SCSIInquiryResponse[56] & 0xF0) >> 4);
decoded.Clocking = (byte)((SCSIInquiryResponse[56] & 0x0C) >> 2); decoded.Clocking = (byte)((SCSIInquiryResponse[56] & 0x0C) >> 2);
decoded.QAS = Convert.ToBoolean((SCSIInquiryResponse[56] & 0x02)); decoded.QAS = Convert.ToBoolean(SCSIInquiryResponse[56] & 0x02);
decoded.IUS = Convert.ToBoolean((SCSIInquiryResponse[56] & 0x01)); decoded.IUS = Convert.ToBoolean(SCSIInquiryResponse[56] & 0x01);
} }
if(SCSIInquiryResponse.Length >= 58) decoded.Reserved4 = SCSIInquiryResponse[57]; if(SCSIInquiryResponse.Length >= 58) decoded.Reserved4 = SCSIInquiryResponse[57];
if(SCSIInquiryResponse.Length >= 60) if(SCSIInquiryResponse.Length >= 60)
@@ -225,7 +225,7 @@ namespace DiscImageChef.Decoders.SCSI
decoded.VersionDescriptors = new ushort[descriptorsNo]; decoded.VersionDescriptors = new ushort[descriptorsNo];
for(int i = 0; i < descriptorsNo; i++) for(int i = 0; i < descriptorsNo; i++)
{ {
decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + (i * 2)); decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + i * 2);
} }
} }

View File

@@ -282,7 +282,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
StandardDiscInformation decoded = new StandardDiscInformation(); StandardDiscInformation decoded = new StandardDiscInformation();
decoded.DataLength = (ushort)((response[0] << 8) + response[1]); decoded.DataLength = (ushort)((response[0] << 8) + response[1]);
if((decoded.DataLength + 2) != response.Length) return null; if(decoded.DataLength + 2 != response.Length) return null;
decoded.DataType = (byte)((response[2] & 0xE0) >> 5); decoded.DataType = (byte)((response[2] & 0xE0) >> 5);
decoded.Erasable |= (response[2] & 0x10) == 0x10; decoded.Erasable |= (response[2] & 0x10) == 0x10;
@@ -316,7 +316,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
decoded.DiscApplicationCode = response[32]; decoded.DiscApplicationCode = response[32];
decoded.OPCTablesNumber = response[33]; decoded.OPCTablesNumber = response[33];
if(decoded.OPCTablesNumber > 0 && response.Length == (decoded.OPCTablesNumber * 8) + 34) if(decoded.OPCTablesNumber > 0 && response.Length == decoded.OPCTablesNumber * 8 + 34)
{ {
decoded.OPCTables = new OPCTable[decoded.OPCTablesNumber]; decoded.OPCTables = new OPCTable[decoded.OPCTablesNumber];
for(int i = 0; i < decoded.OPCTablesNumber; i++) for(int i = 0; i < decoded.OPCTablesNumber; i++)
@@ -412,11 +412,11 @@ namespace DiscImageChef.Decoders.SCSI.MMC
sb.AppendFormat("Last session Lead-In address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}", sb.AppendFormat("Last session Lead-In address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}",
decoded.LastSessionLeadInStartLBA, (decoded.LastSessionLeadInStartLBA & 0xFF0000) >> 16, decoded.LastSessionLeadInStartLBA, (decoded.LastSessionLeadInStartLBA & 0xFF0000) >> 16,
(decoded.LastSessionLeadInStartLBA & 0xFF00) >> 8, (decoded.LastSessionLeadInStartLBA & 0xFF00) >> 8,
(decoded.LastSessionLeadInStartLBA & 0xFF)).AppendLine(); decoded.LastSessionLeadInStartLBA & 0xFF).AppendLine();
sb.AppendFormat("Last possible Lead-Out address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}", sb.AppendFormat("Last possible Lead-Out address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}",
decoded.LastPossibleLeadOutStartLBA, (decoded.LastPossibleLeadOutStartLBA & 0xFF0000) >> 16, decoded.LastPossibleLeadOutStartLBA, (decoded.LastPossibleLeadOutStartLBA & 0xFF0000) >> 16,
(decoded.LastPossibleLeadOutStartLBA & 0xFF00) >> 8, (decoded.LastPossibleLeadOutStartLBA & 0xFF00) >> 8,
(decoded.LastPossibleLeadOutStartLBA & 0xFF)).AppendLine(); decoded.LastPossibleLeadOutStartLBA & 0xFF).AppendLine();
if(decoded.URU) sb.AppendLine("Disc is defined for unrestricted use"); if(decoded.URU) sb.AppendLine("Disc is defined for unrestricted use");
else sb.AppendLine("Disc is defined for restricted use"); else sb.AppendLine("Disc is defined for restricted use");
@@ -447,7 +447,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
TrackResourcesInformation decoded = new TrackResourcesInformation(); TrackResourcesInformation decoded = new TrackResourcesInformation();
decoded.DataLength = (ushort)((response[0] << 8) + response[1]); decoded.DataLength = (ushort)((response[0] << 8) + response[1]);
if((decoded.DataLength + 2) != response.Length) return null; if(decoded.DataLength + 2 != response.Length) return null;
decoded.DataType = (byte)((response[2] & 0xE0) >> 5); decoded.DataType = (byte)((response[2] & 0xE0) >> 5);
decoded.MaxTracks = (ushort)((response[4] << 8) + response[5]); decoded.MaxTracks = (ushort)((response[4] << 8) + response[5]);
@@ -486,7 +486,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
POWResourcesInformation decoded = new POWResourcesInformation(); POWResourcesInformation decoded = new POWResourcesInformation();
decoded.DataLength = (ushort)((response[0] << 8) + response[1]); decoded.DataLength = (ushort)((response[0] << 8) + response[1]);
if((decoded.DataLength + 2) != response.Length) return null; if(decoded.DataLength + 2 != response.Length) return null;
decoded.DataType = (byte)((response[2] & 0xE0) >> 5); decoded.DataType = (byte)((response[2] & 0xE0) >> 5);
decoded.RemainingPOWReplacements = decoded.RemainingPOWReplacements =

View File

@@ -2170,7 +2170,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0000) return null; if(number != 0x0000) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0000 decoded = new Feature_0000(); Feature_0000 decoded = new Feature_0000();
@@ -2204,7 +2204,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0001) return null; if(number != 0x0001) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0001 decoded = new Feature_0001(); Feature_0001 decoded = new Feature_0001();
@@ -2233,7 +2233,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0002) return null; if(number != 0x0002) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0002 decoded = new Feature_0002(); Feature_0002 decoded = new Feature_0002();
@@ -2258,7 +2258,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0003) return null; if(number != 0x0003) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0003 decoded = new Feature_0003(); Feature_0003 decoded = new Feature_0003();
@@ -2293,7 +2293,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0004) return null; if(number != 0x0004) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0004 decoded = new Feature_0004(); Feature_0004 decoded = new Feature_0004();
@@ -2324,7 +2324,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0010) return null; if(number != 0x0010) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0010 decoded = new Feature_0010(); Feature_0010 decoded = new Feature_0010();
@@ -2353,7 +2353,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x001D) return null; if(number != 0x001D) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_001D decoded = new Feature_001D(); Feature_001D decoded = new Feature_001D();
@@ -2374,7 +2374,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x001E) return null; if(number != 0x001E) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_001E decoded = new Feature_001E(); Feature_001E decoded = new Feature_001E();
@@ -2403,7 +2403,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x001F) return null; if(number != 0x001F) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_001F decoded = new Feature_001F(); Feature_001F decoded = new Feature_001F();
@@ -2433,7 +2433,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0020) return null; if(number != 0x0020) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0020 decoded = new Feature_0020(); Feature_0020 decoded = new Feature_0020();
@@ -2463,7 +2463,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0021) return null; if(number != 0x0021) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0021 decoded = new Feature_0021(); Feature_0021 decoded = new Feature_0021();
@@ -2476,7 +2476,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
decoded.DataTypeSupported = (ushort)((feature[4] << 8) + feature[5]); decoded.DataTypeSupported = (ushort)((feature[4] << 8) + feature[5]);
decoded.BUF |= (feature[6] & 0x01) == 0x01; decoded.BUF |= (feature[6] & 0x01) == 0x01;
decoded.LinkSizes = new byte[feature[7]]; decoded.LinkSizes = new byte[feature[7]];
if(feature.Length > (feature[7] + 8)) Array.Copy(feature, 8, decoded.LinkSizes, 0, feature[7]); if(feature.Length > feature[7] + 8) Array.Copy(feature, 8, decoded.LinkSizes, 0, feature[7]);
} }
if(decoded.Version >= 3) if(decoded.Version >= 3)
@@ -2498,7 +2498,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0022) return null; if(number != 0x0022) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0022 decoded = new Feature_0022(); Feature_0022 decoded = new Feature_0022();
@@ -2519,7 +2519,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0023) return null; if(number != 0x0023) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0023 decoded = new Feature_0023(); Feature_0023 decoded = new Feature_0023();
@@ -2551,7 +2551,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0024) return null; if(number != 0x0024) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0024 decoded = new Feature_0024(); Feature_0024 decoded = new Feature_0024();
@@ -2574,7 +2574,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0025) return null; if(number != 0x0025) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0025 decoded = new Feature_0025(); Feature_0025 decoded = new Feature_0025();
@@ -2603,7 +2603,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0026) return null; if(number != 0x0026) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0026 decoded = new Feature_0026(); Feature_0026 decoded = new Feature_0026();
@@ -2624,7 +2624,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0027) return null; if(number != 0x0027) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0027 decoded = new Feature_0027(); Feature_0027 decoded = new Feature_0027();
@@ -2645,7 +2645,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0028) return null; if(number != 0x0028) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0028 decoded = new Feature_0028(); Feature_0028 decoded = new Feature_0028();
@@ -2674,7 +2674,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0029) return null; if(number != 0x0029) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0029 decoded = new Feature_0029(); Feature_0029 decoded = new Feature_0029();
@@ -2702,7 +2702,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002A) return null; if(number != 0x002A) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002A decoded = new Feature_002A(); Feature_002A decoded = new Feature_002A();
@@ -2731,7 +2731,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002B) return null; if(number != 0x002B) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002B decoded = new Feature_002B(); Feature_002B decoded = new Feature_002B();
@@ -2754,7 +2754,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002C) return null; if(number != 0x002C) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002C decoded = new Feature_002C(); Feature_002C decoded = new Feature_002C();
@@ -2783,7 +2783,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002D) return null; if(number != 0x002D) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002D decoded = new Feature_002D(); Feature_002D decoded = new Feature_002D();
@@ -2819,7 +2819,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002E) return null; if(number != 0x002E) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002E decoded = new Feature_002E(); Feature_002E decoded = new Feature_002E();
@@ -2853,7 +2853,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x002F) return null; if(number != 0x002F) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_002F decoded = new Feature_002F(); Feature_002F decoded = new Feature_002F();
@@ -2884,7 +2884,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0030) return null; if(number != 0x0030) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0030 decoded = new Feature_0030(); Feature_0030 decoded = new Feature_0030();
@@ -2905,7 +2905,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0031) return null; if(number != 0x0031) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0031 decoded = new Feature_0031(); Feature_0031 decoded = new Feature_0031();
@@ -2928,7 +2928,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0032) return null; if(number != 0x0032) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0032 decoded = new Feature_0032(); Feature_0032 decoded = new Feature_0032();
@@ -2955,7 +2955,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0033) return null; if(number != 0x0033) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0033 decoded = new Feature_0033(); Feature_0033 decoded = new Feature_0033();
@@ -2963,7 +2963,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
decoded.Persistent |= (feature[2] & 0x02) == 0x02; decoded.Persistent |= (feature[2] & 0x02) == 0x02;
decoded.Version = (byte)((feature[2] & 0x3C) >> 2); decoded.Version = (byte)((feature[2] & 0x3C) >> 2);
if(feature[7] > 0 && feature.Length > (feature[7] + 8)) if(feature[7] > 0 && feature.Length > feature[7] + 8)
{ {
decoded.LinkSizes = new byte[feature[7]]; decoded.LinkSizes = new byte[feature[7]];
Array.Copy(feature, 8, decoded.LinkSizes, 0, feature[7]); Array.Copy(feature, 8, decoded.LinkSizes, 0, feature[7]);
@@ -2982,7 +2982,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0035) return null; if(number != 0x0035) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0035 decoded = new Feature_0035(); Feature_0035 decoded = new Feature_0035();
@@ -3003,7 +3003,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0037) return null; if(number != 0x0037) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0037 decoded = new Feature_0037(); Feature_0037 decoded = new Feature_0037();
@@ -3026,7 +3026,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0038) return null; if(number != 0x0038) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0038 decoded = new Feature_0038(); Feature_0038 decoded = new Feature_0038();
@@ -3047,7 +3047,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x003A) return null; if(number != 0x003A) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_003A decoded = new Feature_003A(); Feature_003A decoded = new Feature_003A();
@@ -3075,7 +3075,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x003B) return null; if(number != 0x003B) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_003B decoded = new Feature_003B(); Feature_003B decoded = new Feature_003B();
@@ -3098,7 +3098,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0040) return null; if(number != 0x0040) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0040 decoded = new Feature_0040(); Feature_0040 decoded = new Feature_0040();
@@ -3135,7 +3135,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0041) return null; if(number != 0x0041) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0041 decoded = new Feature_0041(); Feature_0041 decoded = new Feature_0041();
@@ -3170,7 +3170,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0042) return null; if(number != 0x0042) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0042 decoded = new Feature_0042(); Feature_0042 decoded = new Feature_0042();
@@ -3191,7 +3191,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0050) return null; if(number != 0x0050) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0050 decoded = new Feature_0050(); Feature_0050 decoded = new Feature_0050();
@@ -3218,7 +3218,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0051) return null; if(number != 0x0051) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0051 decoded = new Feature_0051(); Feature_0051 decoded = new Feature_0051();
@@ -3245,7 +3245,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0080) return null; if(number != 0x0080) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0080 decoded = new Feature_0080(); Feature_0080 decoded = new Feature_0080();
@@ -3268,7 +3268,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0100) return null; if(number != 0x0100) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0100 decoded = new Feature_0100(); Feature_0100 decoded = new Feature_0100();
@@ -3289,7 +3289,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0101) return null; if(number != 0x0101) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0101 decoded = new Feature_0101(); Feature_0101 decoded = new Feature_0101();
@@ -3312,7 +3312,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0102) return null; if(number != 0x0102) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0102 decoded = new Feature_0102(); Feature_0102 decoded = new Feature_0102();
@@ -3340,7 +3340,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0103) return null; if(number != 0x0103) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0103 decoded = new Feature_0103(); Feature_0103 decoded = new Feature_0103();
@@ -3369,7 +3369,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0104) return null; if(number != 0x0104) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0104 decoded = new Feature_0104(); Feature_0104 decoded = new Feature_0104();
@@ -3392,7 +3392,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0105) return null; if(number != 0x0105) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0105 decoded = new Feature_0105(); Feature_0105 decoded = new Feature_0105();
@@ -3419,7 +3419,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0106) return null; if(number != 0x0106) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0106 decoded = new Feature_0106(); Feature_0106 decoded = new Feature_0106();
@@ -3442,7 +3442,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0107) return null; if(number != 0x0107) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0107 decoded = new Feature_0107(); Feature_0107 decoded = new Feature_0107();
@@ -3478,7 +3478,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0108) return null; if(number != 0x0108) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0108 decoded = new Feature_0108(); Feature_0108 decoded = new Feature_0108();
@@ -3506,7 +3506,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0109) return null; if(number != 0x0109) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0109 decoded = new Feature_0109(); Feature_0109 decoded = new Feature_0109();
@@ -3527,7 +3527,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x010A) return null; if(number != 0x010A) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_010A decoded = new Feature_010A(); Feature_010A decoded = new Feature_010A();
@@ -3556,7 +3556,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x010B) return null; if(number != 0x010B) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_010B decoded = new Feature_010B(); Feature_010B decoded = new Feature_010B();
@@ -3579,7 +3579,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x010C) return null; if(number != 0x010C) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_010C decoded = new Feature_010C(); Feature_010C decoded = new Feature_010C();
@@ -3611,7 +3611,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x010D) return null; if(number != 0x010D) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_010D decoded = new Feature_010D(); Feature_010D decoded = new Feature_010D();
@@ -3648,7 +3648,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x010E) return null; if(number != 0x010E) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_010E decoded = new Feature_010E(); Feature_010E decoded = new Feature_010E();
@@ -3671,7 +3671,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0110) return null; if(number != 0x0110) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0110 decoded = new Feature_0110(); Feature_0110 decoded = new Feature_0110();
@@ -3692,7 +3692,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0113) return null; if(number != 0x0113) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0113 decoded = new Feature_0113(); Feature_0113 decoded = new Feature_0113();
@@ -3713,7 +3713,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(number != 0x0142) return null; if(number != 0x0142) return null;
if((feature[3] + 4) != feature.Length) return null; if(feature[3] + 4 != feature.Length) return null;
Feature_0142 decoded = new Feature_0142(); Feature_0142 decoded = new Feature_0142();
@@ -5275,14 +5275,14 @@ namespace DiscImageChef.Decoders.SCSI.MMC
uint offset = 8; uint offset = 8;
List<FeatureDescriptor> descLst = new List<FeatureDescriptor>(); List<FeatureDescriptor> descLst = new List<FeatureDescriptor>();
while((offset + 4) < response.Length) while(offset + 4 < response.Length)
{ {
FeatureDescriptor desc = new FeatureDescriptor(); FeatureDescriptor desc = new FeatureDescriptor();
desc.Code = (ushort)((response[offset + 0] << 8) + response[offset + 1]); desc.Code = (ushort)((response[offset + 0] << 8) + response[offset + 1]);
desc.Data = new byte[response[offset + 3] + 4]; desc.Data = new byte[response[offset + 3] + 4];
if(desc.Data.Length + offset > response.Length) desc.Data = new byte[response.Length - offset]; if(desc.Data.Length + offset > response.Length) desc.Data = new byte[response.Length - offset];
Array.Copy(response, offset, desc.Data, 0, desc.Data.Length); Array.Copy(response, offset, desc.Data, 0, desc.Data.Length);
offset += (uint)(desc.Data.Length); offset += (uint)desc.Data.Length;
descLst.Add(desc); descLst.Add(desc);
} }

View File

@@ -82,13 +82,13 @@ namespace DiscImageChef.Decoders.SCSI
if(deviceType == PeripheralDeviceTypes.DirectAccess || deviceType == PeripheralDeviceTypes.MultiMediaDevice) if(deviceType == PeripheralDeviceTypes.DirectAccess || deviceType == PeripheralDeviceTypes.MultiMediaDevice)
{ {
header.WriteProtected = ((modeResponse[2] & 0x80) == 0x80); header.WriteProtected = (modeResponse[2] & 0x80) == 0x80;
header.DPOFUA = ((modeResponse[2] & 0x10) == 0x10); header.DPOFUA = (modeResponse[2] & 0x10) == 0x10;
} }
if(deviceType == PeripheralDeviceTypes.SequentialAccess) if(deviceType == PeripheralDeviceTypes.SequentialAccess)
{ {
header.WriteProtected = ((modeResponse[2] & 0x80) == 0x80); header.WriteProtected = (modeResponse[2] & 0x80) == 0x80;
header.Speed = (byte)(modeResponse[2] & 0x0F); header.Speed = (byte)(modeResponse[2] & 0x0F);
header.BufferedMode = (byte)((modeResponse[2] & 0x70) >> 4); header.BufferedMode = (byte)((modeResponse[2] & 0x70) >> 4);
} }
@@ -98,9 +98,9 @@ namespace DiscImageChef.Decoders.SCSI
if(deviceType == PeripheralDeviceTypes.OpticalDevice) if(deviceType == PeripheralDeviceTypes.OpticalDevice)
{ {
header.WriteProtected = ((modeResponse[2] & 0x80) == 0x80); header.WriteProtected = (modeResponse[2] & 0x80) == 0x80;
header.EBC = ((modeResponse[2] & 0x01) == 0x01); header.EBC = (modeResponse[2] & 0x01) == 0x01;
header.DPOFUA = ((modeResponse[2] & 0x10) == 0x10); header.DPOFUA = (modeResponse[2] & 0x10) == 0x10;
} }
return header; return header;
@@ -2002,13 +2002,13 @@ namespace DiscImageChef.Decoders.SCSI
if(deviceType == PeripheralDeviceTypes.DirectAccess || deviceType == PeripheralDeviceTypes.MultiMediaDevice) if(deviceType == PeripheralDeviceTypes.DirectAccess || deviceType == PeripheralDeviceTypes.MultiMediaDevice)
{ {
header.WriteProtected = ((modeResponse[3] & 0x80) == 0x80); header.WriteProtected = (modeResponse[3] & 0x80) == 0x80;
header.DPOFUA = ((modeResponse[3] & 0x10) == 0x10); header.DPOFUA = (modeResponse[3] & 0x10) == 0x10;
} }
if(deviceType == PeripheralDeviceTypes.SequentialAccess) if(deviceType == PeripheralDeviceTypes.SequentialAccess)
{ {
header.WriteProtected = ((modeResponse[3] & 0x80) == 0x80); header.WriteProtected = (modeResponse[3] & 0x80) == 0x80;
header.Speed = (byte)(modeResponse[3] & 0x0F); header.Speed = (byte)(modeResponse[3] & 0x0F);
header.BufferedMode = (byte)((modeResponse[3] & 0x70) >> 4); header.BufferedMode = (byte)((modeResponse[3] & 0x70) >> 4);
} }
@@ -2018,9 +2018,9 @@ namespace DiscImageChef.Decoders.SCSI
if(deviceType == PeripheralDeviceTypes.OpticalDevice) if(deviceType == PeripheralDeviceTypes.OpticalDevice)
{ {
header.WriteProtected = ((modeResponse[3] & 0x80) == 0x80); header.WriteProtected = (modeResponse[3] & 0x80) == 0x80;
header.EBC = ((modeResponse[3] & 0x01) == 0x01); header.EBC = (modeResponse[3] & 0x01) == 0x01;
header.DPOFUA = ((modeResponse[3] & 0x10) == 0x10); header.DPOFUA = (modeResponse[3] & 0x10) == 0x10;
} }
return header; return header;
@@ -3511,7 +3511,7 @@ namespace DiscImageChef.Decoders.SCSI
decoded.WritePrecompCylinder = (uint)((pageResponse[6] << 16) + (pageResponse[7] << 8) + pageResponse[8]); decoded.WritePrecompCylinder = (uint)((pageResponse[6] << 16) + (pageResponse[7] << 8) + pageResponse[8]);
decoded.WriteReduceCylinder = (uint)((pageResponse[9] << 16) + (pageResponse[10] << 8) + pageResponse[11]); decoded.WriteReduceCylinder = (uint)((pageResponse[9] << 16) + (pageResponse[10] << 8) + pageResponse[11]);
decoded.DriveStepRate = (ushort)((pageResponse[12] << 8) + pageResponse[13]); decoded.DriveStepRate = (ushort)((pageResponse[12] << 8) + pageResponse[13]);
decoded.LandingCylinder = ((pageResponse[14] << 16) + (pageResponse[15] << 8) + pageResponse[16]); decoded.LandingCylinder = (pageResponse[14] << 16) + (pageResponse[15] << 8) + pageResponse[16];
decoded.RPL = (byte)(pageResponse[17] & 0x03); decoded.RPL = (byte)(pageResponse[17] & 0x03);
decoded.RotationalOffset = pageResponse[18]; decoded.RotationalOffset = pageResponse[18];
@@ -5382,7 +5382,7 @@ namespace DiscImageChef.Decoders.SCSI
if(page.PS) sb.AppendLine("\tParameters can be saved"); if(page.PS) sb.AppendLine("\tParameters can be saved");
if((page.Standby && page.StandbyTimer > 0) || (page.Standby_Y && page.StandbyTimer_Y > 0)) if(page.Standby && page.StandbyTimer > 0 || page.Standby_Y && page.StandbyTimer_Y > 0)
{ {
if(page.Standby && page.StandbyTimer > 0) if(page.Standby && page.StandbyTimer > 0)
sb.AppendFormat("\tStandby timer Z is set to {0} ms", page.StandbyTimer * 100).AppendLine(); sb.AppendFormat("\tStandby timer Z is set to {0} ms", page.StandbyTimer * 100).AppendLine();
@@ -5391,8 +5391,8 @@ namespace DiscImageChef.Decoders.SCSI
} }
else sb.AppendLine("\tDrive will not enter standy mode"); else sb.AppendLine("\tDrive will not enter standy mode");
if((page.Idle && page.IdleTimer > 0) || (page.Idle_B && page.IdleTimer_B > 0) || if(page.Idle && page.IdleTimer > 0 || page.Idle_B && page.IdleTimer_B > 0 ||
(page.Idle_C && page.IdleTimer_C > 0)) page.Idle_C && page.IdleTimer_C > 0)
{ {
if(page.Idle && page.IdleTimer > 0) if(page.Idle && page.IdleTimer > 0)
sb.AppendFormat("\tIdle timer A is set to {0} ms", page.IdleTimer * 100).AppendLine(); sb.AppendFormat("\tIdle timer A is set to {0} ms", page.IdleTimer * 100).AppendLine();
@@ -5468,7 +5468,7 @@ namespace DiscImageChef.Decoders.SCSI
if(pageResponse[1] != 0x01) return null; if(pageResponse[1] != 0x01) return null;
if(((pageResponse[2] << 8) + pageResponse[3] + 4) != pageResponse.Length) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null;
if(pageResponse.Length < 32) return null; if(pageResponse.Length < 32) return null;
@@ -5556,7 +5556,7 @@ namespace DiscImageChef.Decoders.SCSI
if(pageResponse[1] != 0x01) return null; if(pageResponse[1] != 0x01) return null;
if(((pageResponse[2] << 8) + pageResponse[3] + 4) != pageResponse.Length) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null;
if(pageResponse.Length < 16) return null; if(pageResponse.Length < 16) return null;
@@ -5762,7 +5762,7 @@ namespace DiscImageChef.Decoders.SCSI
if(pageResponse[1] != 0x01) return null; if(pageResponse[1] != 0x01) return null;
if(((pageResponse[2] << 8) + pageResponse[3] + 4) != pageResponse.Length) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null;
if(pageResponse.Length < 16) return null; if(pageResponse.Length < 16) return null;
@@ -6327,7 +6327,7 @@ namespace DiscImageChef.Decoders.SCSI
if(offset + 3 >= modeResponse.Length) break; if(offset + 3 >= modeResponse.Length) break;
pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4]; pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4];
if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded; if(pg.PageResponse.Length + offset > modeResponse.Length) return decoded;
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length); Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
pg.Page = (byte)(modeResponse[offset] & 0x3F); pg.Page = (byte)(modeResponse[offset] & 0x3F);
@@ -6339,7 +6339,7 @@ namespace DiscImageChef.Decoders.SCSI
if(offset + 1 >= modeResponse.Length) break; if(offset + 1 >= modeResponse.Length) break;
pg.PageResponse = new byte[modeResponse[offset + 1] + 2]; pg.PageResponse = new byte[modeResponse[offset + 1] + 2];
if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded; if(pg.PageResponse.Length + offset > modeResponse.Length) return decoded;
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length); Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
pg.Page = (byte)(modeResponse[offset] & 0x3F); pg.Page = (byte)(modeResponse[offset] & 0x3F);
@@ -6370,7 +6370,7 @@ namespace DiscImageChef.Decoders.SCSI
if(longlba) offset = 8 + blkDrLength * 16; if(longlba) offset = 8 + blkDrLength * 16;
else offset = 8 + blkDrLength * 8; else offset = 8 + blkDrLength * 8;
int length = (modeResponse[0] << 8); int length = modeResponse[0] << 8;
length += modeResponse[1]; length += modeResponse[1];
length += 2; length += 2;
@@ -6398,7 +6398,7 @@ namespace DiscImageChef.Decoders.SCSI
{ {
pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4]; pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4];
if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded; if(pg.PageResponse.Length + offset > modeResponse.Length) return decoded;
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length); Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
pg.Page = (byte)(modeResponse[offset] & 0x3F); pg.Page = (byte)(modeResponse[offset] & 0x3F);
@@ -6409,7 +6409,7 @@ namespace DiscImageChef.Decoders.SCSI
{ {
pg.PageResponse = new byte[modeResponse[offset + 1] + 2]; pg.PageResponse = new byte[modeResponse[offset + 1] + 2];
if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded; if(pg.PageResponse.Length + offset > modeResponse.Length) return decoded;
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length); Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
pg.Page = (byte)(modeResponse[offset] & 0x3F); pg.Page = (byte)(modeResponse[offset] & 0x3F);
@@ -7019,7 +7019,7 @@ namespace DiscImageChef.Decoders.SCSI
decoded.BaudRate = pageResponse[2]; decoded.BaudRate = pageResponse[2];
decoded.CmdFwd = (byte)((pageResponse[3] & 0x18) >> 3); decoded.CmdFwd = (byte)((pageResponse[3] & 0x18) >> 3);
decoded.StopBits |= (pageResponse[3] & 0x04) == 0x04; decoded.StopBits |= (pageResponse[3] & 0x04) == 0x04;
decoded.CmdFwd = (byte)((pageResponse[3] & 0x03)); decoded.CmdFwd = (byte)(pageResponse[3] & 0x03);
decoded.PortATransportType = pageResponse[4]; decoded.PortATransportType = pageResponse[4];
decoded.PortAPresentSelectionID = pageResponse[7]; decoded.PortAPresentSelectionID = pageResponse[7];
decoded.NextSelectionID = pageResponse[12]; decoded.NextSelectionID = pageResponse[12];
@@ -7314,7 +7314,7 @@ namespace DiscImageChef.Decoders.SCSI
decoded.FirmwareUpdateBehaviour = pageResponse[7]; decoded.FirmwareUpdateBehaviour = pageResponse[7];
decoded.UOE_C = (byte)((pageResponse[8] & 0x30) >> 4); decoded.UOE_C = (byte)((pageResponse[8] & 0x30) >> 4);
decoded.UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2); decoded.UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2);
decoded.UOE_F = ((byte)(pageResponse[8] & 0x03)); decoded.UOE_F = (byte)(pageResponse[8] & 0x03);
return decoded; return decoded;
} }

View File

@@ -121,7 +121,7 @@ namespace DiscImageChef.Decoders.SecureDigital
else csd.Size = (uint)(((response[7] & 0x3F) << 16) + (response[8] << 8) + response[9]); else csd.Size = (uint)(((response[7] & 0x3F) << 16) + (response[8] << 8) + response[9]);
csd.EraseBlockEnable = (response[10] & 0x40) == 0x40; csd.EraseBlockEnable = (response[10] & 0x40) == 0x40;
csd.EraseSectorSize = (byte)(((response[10] & 0x3F) << 1) + ((response[11] & 0x80) >> 7)); csd.EraseSectorSize = (byte)(((response[10] & 0x3F) << 1) + ((response[11] & 0x80) >> 7));
csd.WriteProtectGroupSize = ((byte)(response[11] & 0x7F)); csd.WriteProtectGroupSize = (byte)(response[11] & 0x7F);
csd.WriteProtectGroupEnable = (response[12] & 0x80) == 0x80; csd.WriteProtectGroupEnable = (response[12] & 0x80) == 0x80;
csd.WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2); csd.WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2);
csd.WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6)); csd.WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6));

View File

@@ -231,7 +231,7 @@ namespace DiscImageChef.Decoders.Sega
if((iPeripherals & 0x08000000) == 0x08000000) IPBinInformation.AppendLine("Game supports Mouse."); if((iPeripherals & 0x08000000) == 0x08000000) IPBinInformation.AppendLine("Game supports Mouse.");
if((iPeripherals & 0xEE) != 0) if((iPeripherals & 0xEE) != 0)
IPBinInformation.AppendFormat("Game supports unknown peripherals mask {0:X2}", (iPeripherals & 0xEE)); IPBinInformation.AppendFormat("Game supports unknown peripherals mask {0:X2}", iPeripherals & 0xEE);
return IPBinInformation.ToString(); return IPBinInformation.ToString();
} }