diff --git a/Blu-ray/BCA.cs b/Blu-ray/BCA.cs index 43c8276c5..a7eb9d125 100644 --- a/Blu-ray/BCA.cs +++ b/Blu-ray/BCA.cs @@ -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; diff --git a/Blu-ray/Cartridge.cs b/Blu-ray/Cartridge.cs index da60b67b8..e15d7b784 100644 --- a/Blu-ray/Cartridge.cs +++ b/Blu-ray/Cartridge.cs @@ -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; } diff --git a/Blu-ray/DDS.cs b/Blu-ray/DDS.cs index 5d1003352..4bae65159 100644 --- a/Blu-ray/DDS.cs +++ b/Blu-ray/DDS.cs @@ -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})", diff --git a/Blu-ray/DI.cs b/Blu-ray/DI.cs index d86482043..7b0bf9a44 100644 --- a/Blu-ray/DI.cs +++ b/Blu-ray/DI.cs @@ -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 units = new List(); @@ -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", diff --git a/Blu-ray/Spare.cs b/Blu-ray/Spare.cs index a689a0a2d..e51387cdf 100644 --- a/Blu-ray/Spare.cs +++ b/Blu-ray/Spare.cs @@ -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; } diff --git a/CD/ATIP.cs b/CD/ATIP.cs index f6573c9aa..76970cf0e 100644 --- a/CD/ATIP.cs +++ b/CD/ATIP.cs @@ -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", diff --git a/CD/CDTextOnLeadIn.cs b/CD/CDTextOnLeadIn.cs index 9fe4f0bd0..d100b8e3b 100644 --- a/CD/CDTextOnLeadIn.cs +++ b/CD/CDTextOnLeadIn.cs @@ -194,14 +194,14 @@ 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]; + 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}", diff --git a/CD/FullTOC.cs b/CD/FullTOC.cs index dfd70c769..6440f49aa 100644 --- a/CD/FullTOC.cs +++ b/CD/FullTOC.cs @@ -30,7 +30,6 @@ // Copyright © 2011-2019 Natalia Portillo // ****************************************************************************/ -using System; using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -153,14 +152,14 @@ 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]; + 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); diff --git a/CD/PMA.cs b/CD/PMA.cs index d44016a0d..7fd4980ea 100644 --- a/CD/PMA.cs +++ b/CD/PMA.cs @@ -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) diff --git a/CD/Session.cs b/CD/Session.cs index 927fbb610..97846f42b 100644 --- a/CD/Session.cs +++ b/CD/Session.cs @@ -30,7 +30,6 @@ // Copyright © 2011-2019 Natalia Portillo // ****************************************************************************/ -using System; using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -115,14 +114,14 @@ 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]; + decoded.TrackDescriptors = new TrackDataDescriptor[(decoded.DataLength - 2) / 8]; if(decoded.DataLength + 2 != CDSessionInfoResponse.Length) { diff --git a/CD/TOC.cs b/CD/TOC.cs index 85e04b7ed..622c9b412 100644 --- a/CD/TOC.cs +++ b/CD/TOC.cs @@ -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) diff --git a/LisaTag.cs b/LisaTag.cs index 16c3b2710..0ca471a5c 100644 --- a/LisaTag.cs +++ b/LisaTag.cs @@ -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); diff --git a/SCSI/MMC/AACS.cs b/SCSI/MMC/AACS.cs index 899cd4a8d..2ef859e1f 100644 --- a/SCSI/MMC/AACS.cs +++ b/SCSI/MMC/AACS.cs @@ -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; diff --git a/SCSI/MMC/CPRM.cs b/SCSI/MMC/CPRM.cs index 5bdcafb7a..d870ebf7b 100644 --- a/SCSI/MMC/CPRM.cs +++ b/SCSI/MMC/CPRM.cs @@ -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; diff --git a/SCSI/MMC/Hybrid.cs b/SCSI/MMC/Hybrid.cs index eac7245df..ffa8fd211 100644 --- a/SCSI/MMC/Hybrid.cs +++ b/SCSI/MMC/Hybrid.cs @@ -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]) diff --git a/SCSI/MMC/WriteProtect.cs b/SCSI/MMC/WriteProtect.cs index ce8a093ca..d237d61fa 100644 --- a/SCSI/MMC/WriteProtect.cs +++ b/SCSI/MMC/WriteProtect.cs @@ -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; }