mirror of
https://github.com/aaru-dps/Aaru.Decoders.git
synced 2025-12-16 19:24:32 +00:00
REFACTOR: Remove redundant parentheses.
This commit is contained in:
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
16
DVD/PFI.cs
16
DVD/PFI.cs
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user