Remove the ability to support little endian from BigEndianBitConverter.

This commit is contained in:
2019-05-11 20:49:32 +01:00
parent e4c2890552
commit 71cb591368
16 changed files with 159 additions and 163 deletions

View File

@@ -70,14 +70,14 @@ namespace DiscImageChef.Decoders.Bluray
return null;
}
BurstCuttingArea decoded = new BurstCuttingArea();
BurstCuttingArea decoded = new BurstCuttingArea
{
DataLength = BigEndianBitConverter.ToUInt16(BCAResponse, 0),
Reserved1 = BCAResponse[2],
Reserved2 = BCAResponse[3],
BCA = new byte[64]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(BCAResponse, 0);
decoded.Reserved1 = BCAResponse[2];
decoded.Reserved2 = BCAResponse[3];
decoded.BCA = new byte[64];
Array.Copy(BCAResponse, 4, decoded.BCA, 0, 64);
return decoded;

View File

@@ -72,21 +72,20 @@ namespace DiscImageChef.Decoders.Bluray
return null;
}
CartridgeStatus decoded = new CartridgeStatus();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CSResponse, 0);
decoded.Reserved1 = CSResponse[2];
decoded.Reserved2 = CSResponse[3];
decoded.Cartridge = Convert.ToBoolean(CSResponse[4] & 0x80);
decoded.OUT = Convert.ToBoolean(CSResponse[4] & 0x40);
decoded.Reserved3 = (byte)((CSResponse[4] & 0x38) >> 3);
decoded.OUT = Convert.ToBoolean(CSResponse[4] & 0x04);
decoded.Reserved4 = (byte)(CSResponse[4] & 0x03);
decoded.Reserved5 = CSResponse[5];
decoded.Reserved6 = CSResponse[6];
decoded.Reserved7 = CSResponse[7];
CartridgeStatus decoded = new CartridgeStatus
{
DataLength = BigEndianBitConverter.ToUInt16(CSResponse, 0),
Reserved1 = CSResponse[2],
Reserved2 = CSResponse[3],
Cartridge = Convert.ToBoolean(CSResponse[4] & 0x80),
OUT = Convert.ToBoolean(CSResponse[4] & 0x40),
Reserved3 = (byte)((CSResponse[4] & 0x38) >> 3),
CWP = Convert.ToBoolean(CSResponse[4] & 0x04),
Reserved4 = (byte)(CSResponse[4] & 0x03),
Reserved5 = CSResponse[5],
Reserved6 = CSResponse[6],
Reserved7 = CSResponse[7]
};
return decoded;
}

View File

@@ -70,14 +70,14 @@ namespace DiscImageChef.Decoders.Bluray
{
if(DDSResponse == null) return null;
DiscDefinitionStructure decoded = new DiscDefinitionStructure();
DiscDefinitionStructure decoded = new DiscDefinitionStructure
{
DataLength = BigEndianBitConverter.ToUInt16(DDSResponse, 0),
Reserved1 = DDSResponse[2],
Reserved2 = DDSResponse[3],
Signature = BigEndianBitConverter.ToUInt16(DDSResponse, 4)
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(DDSResponse, 0);
decoded.Reserved1 = DDSResponse[2];
decoded.Reserved2 = DDSResponse[3];
decoded.Signature = BigEndianBitConverter.ToUInt16(DDSResponse, 4);
if(decoded.Signature != DDSIdentifier)
{
DicConsole.DebugWriteLine("BD DDS decoder", "Found incorrect DDS signature (0x{0:X4})",

View File

@@ -83,13 +83,12 @@ namespace DiscImageChef.Decoders.Bluray
return null;
}
DiscInformation decoded = new DiscInformation();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(DIResponse, 0);
decoded.Reserved1 = DIResponse[2];
decoded.Reserved2 = DIResponse[3];
DiscInformation decoded = new DiscInformation
{
DataLength = BigEndianBitConverter.ToUInt16(DIResponse, 0),
Reserved1 = DIResponse[2],
Reserved2 = DIResponse[3]
};
int offset = 4;
List<DiscInformationUnits> units = new List<DiscInformationUnits>();
@@ -141,6 +140,7 @@ namespace DiscImageChef.Decoders.Bluray
Array.Copy(DIResponse, 32 + offset, unit.FormatDependentContents, 0, 32);
break;
}
case DiscTypeBDRE:
case DiscTypeBDR:
{
@@ -156,6 +156,7 @@ namespace DiscImageChef.Decoders.Bluray
offset += 14;
break;
}
default:
{
DicConsole.DebugWriteLine("BD Disc Information decoder",

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.Console;
@@ -71,16 +70,15 @@ namespace DiscImageChef.Decoders.Bluray
return null;
}
SpareAreaInformation decoded = new SpareAreaInformation();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(SAIResponse, 0);
decoded.Reserved1 = SAIResponse[2];
decoded.Reserved2 = SAIResponse[3];
decoded.Reserved3 = BigEndianBitConverter.ToUInt32(SAIResponse, 4);
decoded.FreeSpareBlocks = BigEndianBitConverter.ToUInt32(SAIResponse, 8);
decoded.AllocatedSpareBlocks = BigEndianBitConverter.ToUInt32(SAIResponse, 12);
SpareAreaInformation decoded = new SpareAreaInformation
{
DataLength = BigEndianBitConverter.ToUInt16(SAIResponse, 0),
Reserved1 = SAIResponse[2],
Reserved2 = SAIResponse[3],
Reserved3 = BigEndianBitConverter.ToUInt32(SAIResponse, 4),
FreeSpareBlocks = BigEndianBitConverter.ToUInt32(SAIResponse, 8),
AllocatedSpareBlocks = BigEndianBitConverter.ToUInt32(SAIResponse, 12)
};
return decoded;
}

View File

@@ -228,8 +228,6 @@ namespace DiscImageChef.Decoders.CD
CDATIP decoded = new CDATIP();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
if(CDATIPResponse.Length != 32 && CDATIPResponse.Length != 28)
{
DicConsole.DebugWriteLine("CD ATIP decoder",

View File

@@ -194,13 +194,13 @@ namespace DiscImageChef.Decoders.CD
{
if(CDTextResponse == null) return null;
CDText decoded = new CDText();
CDText decoded = new CDText
{
DataLength = BigEndianBitConverter.ToUInt16(CDTextResponse, 0),
Reserved1 = CDTextResponse[2],
Reserved2 = CDTextResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CDTextResponse, 0);
decoded.Reserved1 = CDTextResponse[2];
decoded.Reserved2 = CDTextResponse[3];
decoded.DataPacks = new CDTextPack[(decoded.DataLength - 2) / 18];
if(decoded.DataLength == 2) return null;
@@ -260,6 +260,7 @@ namespace DiscImageChef.Decoders.CD
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x81:
{
sb.Append("CD-Text pack contains performer for ");
@@ -267,6 +268,7 @@ namespace DiscImageChef.Decoders.CD
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x82:
{
sb.Append("CD-Text pack contains songwriter for ");
@@ -274,12 +276,14 @@ namespace DiscImageChef.Decoders.CD
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x83:
{
if(descriptor.HeaderID2 == 0x00) sb.AppendLine("album");
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x84:
{
sb.Append("CD-Text pack contains arranger for ");
@@ -287,6 +291,7 @@ namespace DiscImageChef.Decoders.CD
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x85:
{
sb.Append("CD-Text pack contains content provider's message for ");
@@ -294,26 +299,31 @@ namespace DiscImageChef.Decoders.CD
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x86:
{
sb.AppendLine("CD-Text pack contains disc identification information");
break;
}
case 0x87:
{
sb.AppendLine("CD-Text pack contains genre identification information");
break;
}
case 0x88:
{
sb.AppendLine("CD-Text pack contains table of contents information");
break;
}
case 0x89:
{
sb.AppendLine("CD-Text pack contains second table of contents information");
break;
}
case 0x8A:
case 0x8B:
case 0x8C:
@@ -321,17 +331,20 @@ namespace DiscImageChef.Decoders.CD
sb.AppendLine("CD-Text pack contains reserved data");
break;
}
case 0x8D:
{
sb.AppendLine("CD-Text pack contains data reserved for content provider only");
break;
}
case 0x8E:
{
if(descriptor.HeaderID2 == 0x00) sb.AppendLine("CD-Text pack contains UPC");
else sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
break;
}
case 0x8F:
{
sb.AppendLine("CD-Text pack contains size block information");
@@ -359,6 +372,7 @@ namespace DiscImageChef.Decoders.CD
Encoding.GetEncoding("iso-8859-1"))).AppendLine();
break;
}
default:
{
sb.AppendFormat("Binary contents: {0}",

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.Console;
@@ -153,13 +152,13 @@ namespace DiscImageChef.Decoders.CD
{
if(CDFullTOCResponse == null) return null;
CDFullTOC decoded = new CDFullTOC();
CDFullTOC decoded = new CDFullTOC
{
DataLength = BigEndianBitConverter.ToUInt16(CDFullTOCResponse, 0),
FirstCompleteSession = CDFullTOCResponse[2],
LastCompleteSession = CDFullTOCResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CDFullTOCResponse, 0);
decoded.FirstCompleteSession = CDFullTOCResponse[2];
decoded.LastCompleteSession = CDFullTOCResponse[3];
decoded.TrackDescriptors = new TrackDataDescriptor[(decoded.DataLength - 2) / 11];
if(decoded.DataLength + 2 != CDFullTOCResponse.Length)
@@ -271,6 +270,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
case 0xA0 when descriptor.ADR == 1:
{
sb.AppendFormat("First track number: {0} (", descriptor.PMIN);
@@ -301,6 +301,7 @@ namespace DiscImageChef.Decoders.CD
//sb.AppendFormat("Absolute time: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine();
break;
}
case 0xA1 when descriptor.ADR == 4:
sb.AppendFormat("Last video track number: {0}", descriptor.PMIN).AppendLine();
break;
@@ -333,6 +334,7 @@ namespace DiscImageChef.Decoders.CD
//sb.AppendFormat("Absolute time: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine();
break;
}
case 0xA2:
{
if(descriptor.PHOUR > 0)
@@ -361,6 +363,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
case 0xF0:
{
sb.AppendFormat("Book type: 0x{0:X2}", descriptor.PMIN);
@@ -374,6 +377,7 @@ namespace DiscImageChef.Decoders.CD
descriptor.Sec, descriptor.Frame).AppendLine();
break;
}
default:
{
if(descriptor.POINT >= 0x01 && descriptor.POINT <= 0x63)
@@ -444,6 +448,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
case 5:
{
switch(descriptor.POINT)
@@ -474,6 +479,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
case 0xB1:
{
sb.AppendFormat("Number of skip interval pointers: {0}", descriptor.PMIN)
@@ -481,6 +487,7 @@ namespace DiscImageChef.Decoders.CD
sb.AppendFormat("Number of skip track pointers: {0}", descriptor.PSEC).AppendLine();
break;
}
case 0xB2:
case 0xB3:
case 0xB4:
@@ -494,6 +501,7 @@ namespace DiscImageChef.Decoders.CD
sb.AppendFormat("Skip track {0}", descriptor.PFRAME).AppendLine();
break;
}
case 0xC0:
{
sb.AppendFormat("Optimum recording power: 0x{0:X2}", descriptor.Min).AppendLine();
@@ -509,6 +517,7 @@ namespace DiscImageChef.Decoders.CD
.AppendLine();
break;
}
case 0xC1:
{
sb.AppendFormat("Copy of information of A1 from ATIP found");
@@ -521,6 +530,7 @@ namespace DiscImageChef.Decoders.CD
sb.AppendFormat("PFRAME = {0}", descriptor.PFRAME).AppendLine();
break;
}
case 0xCF:
{
if(descriptor.PHOUR > 0)
@@ -547,6 +557,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
default:
{
if(descriptor.POINT >= 0x01 && descriptor.POINT <= 0x40)
@@ -581,6 +592,7 @@ namespace DiscImageChef.Decoders.CD
break;
}
case 6:
{
uint id = (uint)((descriptor.Min << 16) + (descriptor.Sec << 8) + descriptor.Frame);

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.Console;
@@ -140,13 +139,13 @@ namespace DiscImageChef.Decoders.CD
{
if(CDPMAResponse == null) return null;
CDPMA decoded = new CDPMA();
CDPMA decoded = new CDPMA
{
DataLength = BigEndianBitConverter.ToUInt16(CDPMAResponse, 0),
Reserved1 = CDPMAResponse[2],
Reserved2 = CDPMAResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CDPMAResponse, 0);
decoded.Reserved1 = CDPMAResponse[2];
decoded.Reserved2 = CDPMAResponse[3];
decoded.PMADescriptors = new CDPMADescriptors[(decoded.DataLength - 2) / 11];
if(decoded.DataLength + 2 != CDPMAResponse.Length)

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.Console;
@@ -115,13 +114,13 @@ namespace DiscImageChef.Decoders.CD
{
if(CDSessionInfoResponse == null) return null;
CDSessionInfo decoded = new CDSessionInfo();
CDSessionInfo decoded = new CDSessionInfo
{
DataLength = BigEndianBitConverter.ToUInt16(CDSessionInfoResponse, 0),
FirstCompleteSession = CDSessionInfoResponse[2],
LastCompleteSession = CDSessionInfoResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CDSessionInfoResponse, 0);
decoded.FirstCompleteSession = CDSessionInfoResponse[2];
decoded.LastCompleteSession = CDSessionInfoResponse[3];
decoded.TrackDescriptors = new TrackDataDescriptor[(decoded.DataLength - 2) / 8];
if(decoded.DataLength + 2 != CDSessionInfoResponse.Length)

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.Console;
@@ -117,13 +116,13 @@ namespace DiscImageChef.Decoders.CD
{
if(CDTOCResponse == null) return null;
CDTOC decoded = new CDTOC();
CDTOC decoded = new CDTOC
{
DataLength = BigEndianBitConverter.ToUInt16(CDTOCResponse, 0),
FirstTrack = CDTOCResponse[2],
LastTrack = CDTOCResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(CDTOCResponse, 0);
decoded.FirstTrack = CDTOCResponse[2];
decoded.LastTrack = CDTOCResponse[3];
decoded.TrackDescriptors = new CDTOCTrackDataDescriptor[(decoded.DataLength - 2) / 8];
if(decoded.DataLength + 2 != CDTOCResponse.Length)

View File

@@ -134,8 +134,6 @@ namespace DiscImageChef.Decoders
{
byte[] tagBytes = new byte[20];
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
byte[] tmp = BigEndianBitConverter.GetBytes(Version);
Array.Copy(tmp, 0, tagBytes, 0, 2);
tagBytes[2] = (byte)(Kind << 6);
@@ -257,8 +255,6 @@ namespace DiscImageChef.Decoders
{
byte[] tagBytes = new byte[24];
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
byte[] tmp = BigEndianBitConverter.GetBytes(Version);
Array.Copy(tmp, 0, tagBytes, 0, 2);
tagBytes[2] = (byte)(Kind << 6);
@@ -358,8 +354,6 @@ namespace DiscImageChef.Decoders
{
byte[] tagBytes = new byte[12];
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
byte[] tmp = BigEndianBitConverter.GetBytes(Version);
Array.Copy(tmp, 0, tagBytes, 0, 2);
tagBytes[2] = (byte)(Kind << 6);
@@ -381,18 +375,17 @@ namespace DiscImageChef.Decoders
{
if(tag == null || tag.Length != 12) return null;
SonyTag snTag = new SonyTag();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
snTag.Version = BigEndianBitConverter.ToUInt16(tag, 0);
snTag.Kind = (byte)((tag[2] & 0xC0) >> 6);
snTag.Reserved = (byte)(tag[2] & 0x3F);
snTag.Volume = tag[3];
snTag.FileId = BigEndianBitConverter.ToInt16(tag, 4);
snTag.RelPage = BigEndianBitConverter.ToUInt16(tag, 6);
snTag.NextBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 8) & 0x7FF);
snTag.PrevBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 10) & 0x7FF);
SonyTag snTag = new SonyTag
{
Version = BigEndianBitConverter.ToUInt16(tag, 0),
Kind = (byte)((tag[2] & 0xC0) >> 6),
Reserved = (byte)(tag[2] & 0x3F),
Volume = tag[3],
FileId = BigEndianBitConverter.ToInt16(tag, 4),
RelPage = BigEndianBitConverter.ToUInt16(tag, 6),
NextBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 8) & 0x7FF),
PrevBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 10) & 0x7FF)
};
snTag.IsLast = snTag.NextBlock == 0x7FF;
snTag.IsFirst = snTag.PrevBlock == 0x7FF;
@@ -406,8 +399,6 @@ namespace DiscImageChef.Decoders
ProfileTag phTag = new ProfileTag();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
byte[] tmp = new byte[4];
phTag.Version = BigEndianBitConverter.ToUInt16(tag, 0);
@@ -451,8 +442,6 @@ namespace DiscImageChef.Decoders
PriamTag pmTag = new PriamTag();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
byte[] tmp = new byte[4];
pmTag.Version = BigEndianBitConverter.ToUInt16(tag, 0);

View File

@@ -227,8 +227,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC
AACSVolumeIdentifier decoded = new AACSVolumeIdentifier();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.VolumeIdentifier = new byte[AACSVIResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSVIResponse, 0);
@@ -269,8 +267,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC
AACSMediaSerialNumber decoded = new AACSMediaSerialNumber();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.MediaSerialNumber = new byte[AACSMSNResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSMSNResponse, 0);
@@ -311,8 +307,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC
AACSMediaIdentifier decoded = new AACSMediaIdentifier();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.MediaIdentifier = new byte[AACSMIResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSMIResponse, 0);
@@ -353,8 +347,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC
AACSMediaKeyBlock decoded = new AACSMediaKeyBlock();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.MediaKeyBlockPacks = new byte[AACSMKBResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSMKBResponse, 0);
@@ -396,8 +388,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC
AACSDataKeys decoded = new AACSDataKeys();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataKeys = new byte[AACSDKResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSDKResponse, 0);
@@ -436,13 +426,12 @@ namespace DiscImageChef.Decoders.SCSI.MMC
{
if(AACSLBAExtsResponse == null) return null;
AACSLBAExtentsResponse decoded = new AACSLBAExtentsResponse();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(AACSLBAExtsResponse, 0);
decoded.Reserved = AACSLBAExtsResponse[2];
decoded.MaxLBAExtents = AACSLBAExtsResponse[3];
AACSLBAExtentsResponse decoded = new AACSLBAExtentsResponse
{
DataLength = BigEndianBitConverter.ToUInt16(AACSLBAExtsResponse, 0),
Reserved = AACSLBAExtsResponse[2],
MaxLBAExtents = AACSLBAExtsResponse[3]
};
if((AACSLBAExtsResponse.Length - 4) % 16 != 0) return decoded;

View File

@@ -85,15 +85,14 @@ namespace DiscImageChef.Decoders.SCSI.MMC
{
if(CPRMMKBResponse == null) return null;
CPRMMediaKeyBlock decoded = new CPRMMediaKeyBlock();
CPRMMediaKeyBlock decoded = new CPRMMediaKeyBlock
{
MKBPackData = new byte[CPRMMKBResponse.Length - 4],
DataLength = BigEndianBitConverter.ToUInt16(CPRMMKBResponse, 0),
Reserved = CPRMMKBResponse[2],
TotalPacks = CPRMMKBResponse[3]
};
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.MKBPackData = new byte[CPRMMKBResponse.Length - 4];
decoded.DataLength = BigEndianBitConverter.ToUInt16(CPRMMKBResponse, 0);
decoded.Reserved = CPRMMKBResponse[2];
decoded.TotalPacks = CPRMMKBResponse[3];
Array.Copy(CPRMMKBResponse, 4, decoded.MKBPackData, 0, CPRMMKBResponse.Length - 4);
return decoded;

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
@@ -112,20 +111,18 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(FormatLayersResponse.Length < 8) return null;
RecognizedFormatLayers decoded = new RecognizedFormatLayers();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(FormatLayersResponse, 0);
decoded.Reserved1 = FormatLayersResponse[2];
decoded.Reserved2 = FormatLayersResponse[3];
decoded.NumberOfLayers = FormatLayersResponse[4];
decoded.Reserved3 = (byte)((FormatLayersResponse[5] & 0xC0) >> 6);
decoded.DefaultFormatLayer = (byte)((FormatLayersResponse[5] & 0x30) >> 4);
decoded.Reserved4 = (byte)((FormatLayersResponse[5] & 0x0C) >> 2);
decoded.OnlineFormatLayer = (byte)(FormatLayersResponse[5] & 0x03);
decoded.FormatLayers = new ushort[(FormatLayersResponse.Length - 6) / 2];
RecognizedFormatLayers decoded = new RecognizedFormatLayers
{
DataLength = BigEndianBitConverter.ToUInt16(FormatLayersResponse, 0),
Reserved1 = FormatLayersResponse[2],
Reserved2 = FormatLayersResponse[3],
NumberOfLayers = FormatLayersResponse[4],
Reserved3 = (byte)((FormatLayersResponse[5] & 0xC0) >> 6),
DefaultFormatLayer = (byte)((FormatLayersResponse[5] & 0x30) >> 4),
Reserved4 = (byte)((FormatLayersResponse[5] & 0x0C) >> 2),
OnlineFormatLayer = (byte)(FormatLayersResponse[5] & 0x03),
FormatLayers = new ushort[(FormatLayersResponse.Length - 6) / 2]
};
for(int i = 0; i < (FormatLayersResponse.Length - 6) / 2; i++)
decoded.FormatLayers[i] = BigEndianBitConverter.ToUInt16(FormatLayersResponse, i * 2 + 6);
@@ -153,6 +150,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(response.OnlineFormatLayer == i) sb.AppendLine("This is the layer actually in use.");
break;
}
case (ushort)FormatLayerTypeCodes.CDLayer:
{
sb.AppendFormat("Layer {0} is of type CD", i).AppendLine();
@@ -160,6 +158,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(response.OnlineFormatLayer == i) sb.AppendLine("This is the layer actually in use.");
break;
}
case (ushort)FormatLayerTypeCodes.DVDLayer:
{
sb.AppendFormat("Layer {0} is of type DVD", i).AppendLine();
@@ -167,6 +166,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(response.OnlineFormatLayer == i) sb.AppendLine("This is the layer actually in use.");
break;
}
case (ushort)FormatLayerTypeCodes.HDDVDLayer:
{
sb.AppendFormat("Layer {0} is of type HD DVD", i).AppendLine();
@@ -174,6 +174,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
if(response.OnlineFormatLayer == i) sb.AppendLine("This is the layer actually in use.");
break;
}
default:
{
sb.AppendFormat("Layer {0} is of unknown type 0x{1:X4}", i, response.FormatLayers[i])

View File

@@ -120,21 +120,20 @@ namespace DiscImageChef.Decoders.SCSI.MMC
{
if(WPSResponse == null) return null;
WriteProtectionStatus decoded = new WriteProtectionStatus();
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
decoded.DataLength = BigEndianBitConverter.ToUInt16(WPSResponse, 0);
decoded.Reserved1 = WPSResponse[2];
decoded.Reserved2 = WPSResponse[3];
decoded.Reserved3 = (byte)((WPSResponse[4] & 0xF0) >> 4);
decoded.MSWI = Convert.ToBoolean(WPSResponse[4] & 0x08);
decoded.CWP = Convert.ToBoolean(WPSResponse[4] & 0x04);
decoded.PWP = Convert.ToBoolean(WPSResponse[4] & 0x02);
decoded.SWPP = Convert.ToBoolean(WPSResponse[4] & 0x01);
decoded.Reserved4 = WPSResponse[5];
decoded.Reserved5 = WPSResponse[6];
decoded.Reserved6 = WPSResponse[7];
WriteProtectionStatus decoded = new WriteProtectionStatus
{
DataLength = BigEndianBitConverter.ToUInt16(WPSResponse, 0),
Reserved1 = WPSResponse[2],
Reserved2 = WPSResponse[3],
Reserved3 = (byte)((WPSResponse[4] & 0xF0) >> 4),
MSWI = Convert.ToBoolean(WPSResponse[4] & 0x08),
CWP = Convert.ToBoolean(WPSResponse[4] & 0x04),
PWP = Convert.ToBoolean(WPSResponse[4] & 0x02),
SWPP = Convert.ToBoolean(WPSResponse[4] & 0x01),
Reserved4 = WPSResponse[5],
Reserved5 = WPSResponse[6],
Reserved6 = WPSResponse[7]
};
return decoded;
}