diff --git a/DiscImageChef.Core/ImageInfo.cs b/DiscImageChef.Core/ImageInfo.cs index 72c92354f..290318a25 100644 --- a/DiscImageChef.Core/ImageInfo.cs +++ b/DiscImageChef.Core/ImageInfo.cs @@ -192,7 +192,6 @@ namespace DiscImageChef.Core { byte[] mode2A = imageFormat.ReadDiskTag(MediaTagType.SCSI_MODEPAGE_2A); - DicConsole.WriteLine("SCSI INQUIRY contained in image:"); DicConsole.Write("{0}", Modes.PrettifyModePage_2A(mode2A)); DicConsole.WriteLine(); } diff --git a/DiscImageChef.DiscImages/BlindWrite4.cs b/DiscImageChef.DiscImages/BlindWrite4.cs index 783acf9aa..9122dddd5 100644 --- a/DiscImageChef.DiscImages/BlindWrite4.cs +++ b/DiscImageChef.DiscImages/BlindWrite4.cs @@ -54,37 +54,34 @@ namespace DiscImageChef.DiscImages 0x45 }; List bwTracks; - IFilter dataFilter, subFilter; + IFilter dataFilter, subFilter; - Bw4Header header; - ImageInfo imageInfo; - Stream imageStream; + Bw4Header header; + ImageInfo imageInfo; + Stream imageStream; Dictionary offsetmap; - List partitions; - List sessions; - Dictionary trackFlags; - List tracks; + Dictionary trackFlags; public BlindWrite4() { imageInfo = new ImageInfo { - ReadableSectorTags = new List(), - ReadableMediaTags = new List(), - HasPartitions = true, - HasSessions = true, - Version = null, - ApplicationVersion = null, - MediaTitle = null, - Creator = null, - MediaManufacturer = null, - MediaModel = null, - MediaPartNumber = null, - MediaSequence = 0, - LastMediaSequence = 0, - DriveManufacturer = null, - DriveModel = null, - DriveSerialNumber = null, + ReadableSectorTags = new List(), + ReadableMediaTags = new List(), + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, + MediaManufacturer = null, + MediaModel = null, + MediaPartNumber = null, + MediaSequence = 0, + LastMediaSequence = 0, + DriveManufacturer = null, + DriveModel = null, + DriveSerialNumber = null, DriveFirmwareRevision = null }; } @@ -92,15 +89,15 @@ namespace DiscImageChef.DiscImages public ImageInfo Info => imageInfo; public string Name => "BlindWrite 4"; - public Guid Id => new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F"); + public Guid Id => new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F"); public string Format => "BlindWrite 4 TOC file"; - public List Partitions => partitions; + public List Partitions { get; set; } - public List Tracks => tracks; + public List Tracks { get; set; } - public List Sessions => sessions; + public List Sessions { get; set; } public bool Identify(IFilter imageFilter) { @@ -120,10 +117,10 @@ namespace DiscImageChef.DiscImages stream.Seek(0, SeekOrigin.Begin); if(stream.Length < 19) return false; - byte[] tmpArray = new byte[19]; + byte[] tmpArray = new byte[19]; byte[] tmpUShort = new byte[2]; - byte[] tmpUInt = new byte[4]; - byte[] tmpULong = new byte[8]; + byte[] tmpUInt = new byte[4]; + byte[] tmpULong = new byte[8]; stream.Read(tmpArray, 0, 19); @@ -140,70 +137,70 @@ namespace DiscImageChef.DiscImages stream.Read(tmpUInt, 0, 4); header.VolumeIdLength = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[header.VolumeIdLength]; + tmpArray = new byte[header.VolumeIdLength]; stream.Read(tmpArray, 0, tmpArray.Length); - header.VolumeIdBytes = tmpArray; + header.VolumeIdBytes = tmpArray; header.VolumeIdentifier = StringHandlers.CToString(header.VolumeIdBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); header.SysIdLength = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[header.SysIdLength]; + tmpArray = new byte[header.SysIdLength]; stream.Read(tmpArray, 0, tmpArray.Length); - header.SysIdBytes = tmpArray; + header.SysIdBytes = tmpArray; header.SystemIdentifier = StringHandlers.CToString(header.SysIdBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); header.CommentsLength = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[header.CommentsLength]; + tmpArray = new byte[header.CommentsLength]; stream.Read(tmpArray, 0, tmpArray.Length); header.CommentsBytes = tmpArray; - header.Comments = StringHandlers.CToString(header.CommentsBytes, Encoding.Default); + header.Comments = StringHandlers.CToString(header.CommentsBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); header.TrackDescriptors = BitConverter.ToUInt32(tmpUInt, 0); stream.Read(tmpUInt, 0, 4); header.DataFileLength = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[header.DataFileLength]; + tmpArray = new byte[header.DataFileLength]; stream.Read(tmpArray, 0, tmpArray.Length); header.DataFileBytes = tmpArray; - header.DataFile = StringHandlers.CToString(header.DataFileBytes, Encoding.Default); + header.DataFile = StringHandlers.CToString(header.DataFileBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); header.SubchannelFileLength = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[header.SubchannelFileLength]; + tmpArray = new byte[header.SubchannelFileLength]; stream.Read(tmpArray, 0, tmpArray.Length); header.SubchannelFileBytes = tmpArray; - header.SubchannelFile = StringHandlers.CToString(header.SubchannelFileBytes, Encoding.Default); + header.SubchannelFile = StringHandlers.CToString(header.SubchannelFileBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); header.Unknown2 = BitConverter.ToUInt32(tmpUInt, 0); header.Unknown3 = (byte)stream.ReadByte(); - tmpArray = new byte[header.Unknown3]; + tmpArray = new byte[header.Unknown3]; stream.Read(tmpArray, 0, header.Unknown3); header.Unknown4 = tmpArray; DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.signature = {0}", StringHandlers.CToString(header.Signature)); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown1 = {0}", header.Unknown1); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.timestamp = {0}", header.Timestamp); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.volumeIdLength = {0}", header.VolumeIdLength); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown1 = {0}", header.Unknown1); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.timestamp = {0}", header.Timestamp); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.volumeIdLength = {0}", header.VolumeIdLength); DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.volumeIdentifier = {0}", header.VolumeIdentifier); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.sysIdLength = {0}", header.SysIdLength); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.sysIdLength = {0}", header.SysIdLength); DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.systemIdentifier = {0}", header.SystemIdentifier); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.commentsLength = {0}", header.CommentsLength); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.comments = {0}", header.Comments); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.commentsLength = {0}", header.CommentsLength); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.comments = {0}", header.Comments); DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.trackDescriptors = {0}", header.TrackDescriptors); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFileLength = {0}", header.DataFileLength); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFilter = {0}", header.DataFilter); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFile = {0}", header.DataFile); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFileLength = {0}", header.DataFileLength); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFilter = {0}", header.DataFilter); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.dataFile = {0}", header.DataFile); DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.subchannelFileLength = {0}", header.SubchannelFileLength); DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.subchannelFilter = {0}", header.SubchannelFilter); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.subchannelFile = {0}", header.SubchannelFile); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown2 = {0}", header.Unknown2); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown3 = {0}", header.Unknown3); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown4.Length = {0}", header.Unknown4.Length); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.subchannelFile = {0}", header.SubchannelFile); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown2 = {0}", header.Unknown2); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown3 = {0}", header.Unknown3); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "header.unknown4.Length = {0}", header.Unknown4.Length); bwTracks = new List(); @@ -215,13 +212,13 @@ namespace DiscImageChef.DiscImages stream.Read(tmpUInt, 0, 4); track.filenameLen = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.filenameLen]; + tmpArray = new byte[track.filenameLen]; stream.Read(tmpArray, 0, tmpArray.Length); track.filenameBytes = tmpArray; - track.filename = StringHandlers.CToString(track.filenameBytes, Encoding.Default); + track.filename = StringHandlers.CToString(track.filenameBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); - track.offset = BitConverter.ToUInt32(tmpUInt, 0); + track.offset = BitConverter.ToUInt32(tmpUInt, 0); track.subchannel = (byte)stream.ReadByte(); tmpArray = new byte[3]; @@ -231,14 +228,14 @@ namespace DiscImageChef.DiscImages stream.Read(tmpUInt, 0, 4); track.unknown2 = BitConverter.ToUInt32(tmpUInt, 0); track.unknown3 = (byte)stream.ReadByte(); - track.session = (byte)stream.ReadByte(); + track.session = (byte)stream.ReadByte(); track.unknown4 = (byte)stream.ReadByte(); - track.adrCtl = (byte)stream.ReadByte(); + track.adrCtl = (byte)stream.ReadByte(); - track.unknown5 = (byte)stream.ReadByte(); + track.unknown5 = (byte)stream.ReadByte(); track.trackMode = (Bw4TrackType)stream.ReadByte(); - track.unknown6 = (byte)stream.ReadByte(); - track.point = (byte)stream.ReadByte(); + track.unknown6 = (byte)stream.ReadByte(); + track.point = (byte)stream.ReadByte(); stream.Read(tmpUInt, 0, 4); track.unknown7 = BitConverter.ToUInt32(tmpUInt, 0); @@ -252,7 +249,7 @@ namespace DiscImageChef.DiscImages track.unknown11 = BitConverter.ToUInt16(tmpUShort, 0); stream.Read(tmpUInt, 0, 4); track.lastSector = BitConverter.ToUInt32(tmpUInt, 0); - track.unknown12 = (byte)stream.ReadByte(); + track.unknown12 = (byte)stream.ReadByte(); stream.Read(tmpUInt, 0, 4); track.pregap = BitConverter.ToInt32(tmpUInt, 0); @@ -268,169 +265,169 @@ namespace DiscImageChef.DiscImages stream.Read(tmpUInt, 0, 4); track.titleLen = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.titleLen]; + tmpArray = new byte[track.titleLen]; stream.Read(tmpArray, 0, tmpArray.Length); track.titleBytes = tmpArray; - track.title = StringHandlers.CToString(track.titleBytes, Encoding.Default); + track.title = StringHandlers.CToString(track.titleBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.performerLen = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.performerLen]; + tmpArray = new byte[track.performerLen]; stream.Read(tmpArray, 0, tmpArray.Length); track.performerBytes = tmpArray; - track.performer = StringHandlers.CToString(track.performerBytes, Encoding.Default); + track.performer = StringHandlers.CToString(track.performerBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen1 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen1]; + tmpArray = new byte[track.unkStrLen1]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes1 = tmpArray; - track.unkString1 = StringHandlers.CToString(track.unkStrBytes1, Encoding.Default); + track.unkString1 = StringHandlers.CToString(track.unkStrBytes1, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen2 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen2]; + tmpArray = new byte[track.unkStrLen2]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes2 = tmpArray; - track.unkString2 = StringHandlers.CToString(track.unkStrBytes2, Encoding.Default); + track.unkString2 = StringHandlers.CToString(track.unkStrBytes2, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen3 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen3]; + tmpArray = new byte[track.unkStrLen3]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes3 = tmpArray; - track.unkString3 = StringHandlers.CToString(track.unkStrBytes3, Encoding.Default); + track.unkString3 = StringHandlers.CToString(track.unkStrBytes3, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen4 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen4]; + tmpArray = new byte[track.unkStrLen4]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes4 = tmpArray; - track.unkString4 = StringHandlers.CToString(track.unkStrBytes4, Encoding.Default); + track.unkString4 = StringHandlers.CToString(track.unkStrBytes4, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.discIdLen = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.discIdLen]; + tmpArray = new byte[track.discIdLen]; stream.Read(tmpArray, 0, tmpArray.Length); track.discIdBytes = tmpArray; - track.discId = StringHandlers.CToString(track.discIdBytes, Encoding.Default); + track.discId = StringHandlers.CToString(track.discIdBytes, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen5 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen5]; + tmpArray = new byte[track.unkStrLen5]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes5 = tmpArray; - track.unkString5 = StringHandlers.CToString(track.unkStrBytes5, Encoding.Default); + track.unkString5 = StringHandlers.CToString(track.unkStrBytes5, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen6 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen6]; + tmpArray = new byte[track.unkStrLen6]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes6 = tmpArray; - track.unkString6 = StringHandlers.CToString(track.unkStrBytes6, Encoding.Default); + track.unkString6 = StringHandlers.CToString(track.unkStrBytes6, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen7 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen7]; + tmpArray = new byte[track.unkStrLen7]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes7 = tmpArray; - track.unkString7 = StringHandlers.CToString(track.unkStrBytes7, Encoding.Default); + track.unkString7 = StringHandlers.CToString(track.unkStrBytes7, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen8 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen8]; + tmpArray = new byte[track.unkStrLen8]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes8 = tmpArray; - track.unkString8 = StringHandlers.CToString(track.unkStrBytes8, Encoding.Default); + track.unkString8 = StringHandlers.CToString(track.unkStrBytes8, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen9 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen9]; + tmpArray = new byte[track.unkStrLen9]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes9 = tmpArray; - track.unkString9 = StringHandlers.CToString(track.unkStrBytes9, Encoding.Default); + track.unkString9 = StringHandlers.CToString(track.unkStrBytes9, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen10 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen10]; + tmpArray = new byte[track.unkStrLen10]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes10 = tmpArray; - track.unkString10 = StringHandlers.CToString(track.unkStrBytes10, Encoding.Default); + track.unkString10 = StringHandlers.CToString(track.unkStrBytes10, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.unkStrLen11 = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.unkStrLen11]; + tmpArray = new byte[track.unkStrLen11]; stream.Read(tmpArray, 0, tmpArray.Length); track.unkStrBytes11 = tmpArray; - track.unkString11 = StringHandlers.CToString(track.unkStrBytes11, Encoding.Default); + track.unkString11 = StringHandlers.CToString(track.unkStrBytes11, Encoding.Default); stream.Read(tmpUInt, 0, 4); track.isrcLen = BitConverter.ToUInt32(tmpUInt, 0); - tmpArray = new byte[track.isrcLen]; + tmpArray = new byte[track.isrcLen]; stream.Read(tmpArray, 0, tmpArray.Length); track.isrcBytes = tmpArray; - track.isrcUpc = StringHandlers.CToString(track.isrcBytes, Encoding.Default); + track.isrcUpc = StringHandlers.CToString(track.isrcBytes, Encoding.Default); DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.filenameLen = {0}", track.filenameLen); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.filename = {0}", track.filename); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.offset = {0}", track.offset); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.subchannel = {0}", track.subchannel); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.filename = {0}", track.filename); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.offset = {0}", track.offset); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.subchannel = {0}", track.subchannel); for(int j = 0; j < track.unknown1.Length; j++) DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown1[{1}] = 0x{0:X8}", track.unknown1[j], j); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown2 = {0}", track.unknown2); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown3 = {0}", track.unknown3); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.session = {0}", track.session); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown4 = {0}", track.unknown4); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.adrCtl = {0}", track.adrCtl); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown5 = {0}", track.unknown5); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.trackMode = {0}", track.trackMode); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown6 = {0}", track.unknown6); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.point = {0}", track.point); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown7 = {0}", track.unknown7); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown8 = {0}", track.unknown8); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown9 = {0}", track.unknown9); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown10 = {0}", track.unknown10); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown11 = {0}", track.unknown11); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.lastSector = {0}", track.lastSector); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown12 = {0}", track.unknown12); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.pregap = {0}", track.pregap); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown2 = {0}", track.unknown2); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown3 = {0}", track.unknown3); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.session = {0}", track.session); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown4 = {0}", track.unknown4); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.adrCtl = {0}", track.adrCtl); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown5 = {0}", track.unknown5); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.trackMode = {0}", track.trackMode); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown6 = {0}", track.unknown6); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.point = {0}", track.point); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown7 = {0}", track.unknown7); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown8 = {0}", track.unknown8); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown9 = {0}", track.unknown9); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown10 = {0}", track.unknown10); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown11 = {0}", track.unknown11); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.lastSector = {0}", track.lastSector); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown12 = {0}", track.unknown12); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.pregap = {0}", track.pregap); DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.startSector = {0}", track.startSector); for(int j = 0; j < track.unknown13.Length; j++) DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unknown13[{1}] = 0x{0:X8}", track.unknown13[j], j); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.titleLen = {0}", track.titleLen); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.title = {0}", track.title); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.titleLen = {0}", track.titleLen); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.title = {0}", track.title); DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.performerLen = {0}", track.performerLen); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.performer = {0}", track.performer); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen1 = {0}", track.unkStrLen1); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString1 = {0}", track.unkString1); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen2 = {0}", track.unkStrLen2); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString2 = {0}", track.unkString2); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen3 = {0}", track.unkStrLen3); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString3 = {0}", track.unkString3); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen4 = {0}", track.unkStrLen4); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString4 = {0}", track.unkString4); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.discIdLen = {0}", track.discIdLen); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.discId = {0}", track.discId); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen5 = {0}", track.unkStrLen5); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString5 = {0}", track.unkString5); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen6 = {0}", track.unkStrLen6); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString6 = {0}", track.unkString6); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen7 = {0}", track.unkStrLen7); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString7 = {0}", track.unkString7); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen8 = {0}", track.unkStrLen8); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString8 = {0}", track.unkString8); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen9 = {0}", track.unkStrLen9); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString9 = {0}", track.unkString9); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen10 = {0}", track.unkStrLen10); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString10 = {0}", track.unkString10); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen11 = {0}", track.unkStrLen11); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString11 = {0}", track.unkString11); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.isrcLen = {0}", track.isrcLen); - DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.isrcUpc = {0}", track.isrcUpc); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.performer = {0}", track.performer); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen1 = {0}", track.unkStrLen1); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString1 = {0}", track.unkString1); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen2 = {0}", track.unkStrLen2); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString2 = {0}", track.unkString2); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen3 = {0}", track.unkStrLen3); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString3 = {0}", track.unkString3); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen4 = {0}", track.unkStrLen4); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString4 = {0}", track.unkString4); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.discIdLen = {0}", track.discIdLen); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.discId = {0}", track.discId); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen5 = {0}", track.unkStrLen5); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString5 = {0}", track.unkString5); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen6 = {0}", track.unkStrLen6); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString6 = {0}", track.unkString6); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen7 = {0}", track.unkStrLen7); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString7 = {0}", track.unkString7); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen8 = {0}", track.unkStrLen8); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString8 = {0}", track.unkString8); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen9 = {0}", track.unkStrLen9); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString9 = {0}", track.unkString9); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen10 = {0}", track.unkStrLen10); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString10 = {0}", track.unkString10); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkStrLen11 = {0}", track.unkStrLen11); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.unkString11 = {0}", track.unkString11); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.isrcLen = {0}", track.isrcLen); + DicConsole.DebugWriteLine("BlindWrite4 plugin", "track.isrcUpc = {0}", track.isrcUpc); bwTracks.Add(track); } @@ -445,34 +442,32 @@ namespace DiscImageChef.DiscImages dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile.ToLower(CultureInfo - .CurrentCulture))); + .CurrentCulture))); if(dataFilter != null) break; dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile.ToUpper(CultureInfo - .CurrentCulture))); + .CurrentCulture))); if(dataFilter != null) break; dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) + .RemoveEmptyEntries) .Last())); if(dataFilter != null) break; dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) - .Last() + .RemoveEmptyEntries).Last() .ToLower(CultureInfo.CurrentCulture))); if(dataFilter != null) break; dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) - .Last() + .RemoveEmptyEntries).Last() .ToUpper(CultureInfo.CurrentCulture))); if(dataFilter != null) break; @@ -495,25 +490,25 @@ namespace DiscImageChef.DiscImages filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.SubchannelFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries).Last())) + .RemoveEmptyEntries).Last())) ) ?? filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.SubchannelFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries).Last() + .RemoveEmptyEntries).Last() .ToLower(CultureInfo.CurrentCulture)))) ?? filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.SubchannelFile.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries).Last() + .RemoveEmptyEntries).Last() .ToUpper(CultureInfo.CurrentCulture))); } - tracks = new List(); - partitions = new List(); - offsetmap = new Dictionary(); - trackFlags = new Dictionary(); + Tracks = new List(); + Partitions = new List(); + offsetmap = new Dictionary(); + trackFlags = new Dictionary(); ushort maxSession = 0; - ulong currentPos = 0; + ulong currentPos = 0; foreach(Bw4TrackDescriptor bwTrack in bwTracks) if(bwTrack.point < 0xA0) { @@ -529,20 +524,20 @@ namespace DiscImageChef.DiscImages track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.ToLower(CultureInfo - .CurrentCulture))); + .CurrentCulture))); if(track.TrackFilter != null) break; track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.ToUpper(CultureInfo - .CurrentCulture))); + .CurrentCulture))); if(track.TrackFilter != null) break; track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) + .RemoveEmptyEntries) .Last())); if(track.TrackFilter != null) break; @@ -550,8 +545,7 @@ namespace DiscImageChef.DiscImages filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) - .Last() + .RemoveEmptyEntries).Last() .ToLower(CultureInfo.CurrentCulture))); if(track.TrackFilter != null) break; @@ -559,8 +553,7 @@ namespace DiscImageChef.DiscImages filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] {'\\'}, StringSplitOptions - .RemoveEmptyEntries) - .Last() + .RemoveEmptyEntries).Last() .ToUpper(CultureInfo.CurrentCulture))); track.TrackFilter = dataFilter; @@ -569,19 +562,20 @@ namespace DiscImageChef.DiscImages else track.TrackFilter = dataFilter; track.TrackFile = dataFilter.GetFilename(); - track.TrackFileOffset = bwTrack.offset; - if(bwTrack.pregap > 0) - track.TrackFileOffset += (ulong)(bwTrack.startSector - bwTrack.pregap) * 2352; - track.TrackFileType = "BINARY"; - track.TrackPregap = (ulong)(bwTrack.startSector - bwTrack.pregap); + if(bwTrack.pregap != 0) + track.TrackFileOffset += + (ulong)(bwTrack.startSector - bwTrack.pregap) * 2352; + track.TrackFileType = "BINARY"; + track.TrackPregap = (ulong)(bwTrack.startSector - bwTrack.pregap); track.TrackRawBytesPerSector = 2352; - track.TrackSequence = bwTrack.point; - track.TrackSession = bwTrack.session; + track.TrackSequence = bwTrack.point; + track.TrackSession = bwTrack.session; if(track.TrackSession > maxSession) maxSession = track.TrackSession; - track.TrackStartSector = (ulong)bwTrack.startSector; - track.TrackSubchannelFilter = subFilter; - track.TrackSubchannelFile = subFilter.GetFilename(); - track.TrackSubchannelOffset = track.TrackStartSector / 96; + track.TrackStartSector = (ulong)bwTrack.startSector; + track.TrackSubchannelFilter = subFilter; + track.TrackSubchannelFile = subFilter.GetFilename(); + track.TrackSubchannelOffset = + track.TrackStartSector * 96 + track.TrackPregap * 96; if(subFilter != null && bwTrack.subchannel > 0) { track.TrackSubchannelType = TrackSubchannelType.Packed; @@ -593,8 +587,8 @@ namespace DiscImageChef.DiscImages switch(bwTrack.trackMode) { case Bw4TrackType.Audio: - track.TrackType = TrackType.Audio; - imageInfo.SectorSize = 2352; + track.TrackType = TrackType.Audio; + imageInfo.SectorSize = 2352; track.TrackBytesPerSector = 2352; break; case Bw4TrackType.Mode1: @@ -614,7 +608,7 @@ namespace DiscImageChef.DiscImages if(!imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorEdc)) imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); if(imageInfo.SectorSize < 2048) imageInfo.SectorSize = 2048; - track.TrackBytesPerSector = 2048; + track.TrackBytesPerSector = 2048; break; case Bw4TrackType.Mode2: track.TrackType = TrackType.CdMode2Formless; @@ -623,32 +617,32 @@ namespace DiscImageChef.DiscImages if(!imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorHeader)) imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorHeader); if(imageInfo.SectorSize < 2336) imageInfo.SectorSize = 2336; - track.TrackBytesPerSector = 2336; + track.TrackBytesPerSector = 2336; break; default: - track.TrackType = TrackType.Data; + track.TrackType = TrackType.Data; track.TrackRawBytesPerSector = 2048; - imageInfo.SectorSize = 2048; - track.TrackBytesPerSector = 2048; + imageInfo.SectorSize = 2048; + track.TrackBytesPerSector = 2048; break; } track.Indexes = new Dictionary(); if(bwTrack.pregap > 0) track.Indexes.Add(0, (ulong)bwTrack.pregap); - track.Indexes.Add(1, (ulong)bwTrack.startSector); + track.Indexes.Add(1, (ulong)bwTrack.startSector); - Partition partition = new Partition(); + Partition partition = new Partition(); if(bwTrack.pregap > 0) currentPos += (ulong)(bwTrack.startSector - bwTrack.pregap) * 2352; - partition.Description = track.TrackDescription; - partition.Size = (track.TrackEndSector - track.TrackStartSector + 1) * 2352; - partition.Length = track.TrackEndSector - track.TrackStartSector; - partition.Sequence = track.TrackSequence; - partition.Offset = currentPos; - partition.Start = track.TrackStartSector; - partition.Type = track.TrackType.ToString(); + partition.Description = track.TrackDescription; + partition.Size = (track.TrackEndSector - track.TrackStartSector + 1) * 2352; + partition.Length = track.TrackEndSector - track.TrackStartSector; + partition.Sequence = track.TrackSequence; + partition.Offset = currentPos; + partition.Start = track.TrackStartSector; + partition.Type = track.TrackType.ToString(); - partitions.Add(partition); - tracks.Add(track); + Partitions.Add(partition); + Tracks.Add(track); currentPos += partition.Size; if(!offsetmap.ContainsKey(track.TrackSequence)) @@ -661,54 +655,54 @@ namespace DiscImageChef.DiscImages } else { - imageInfo.MediaBarcode = bwTrack.isrcUpc; + imageInfo.MediaBarcode = bwTrack.isrcUpc; imageInfo.MediaSerialNumber = bwTrack.discId; - imageInfo.MediaTitle = bwTrack.title; + imageInfo.MediaTitle = bwTrack.title; if(!string.IsNullOrEmpty(bwTrack.isrcUpc) && !imageInfo.ReadableMediaTags.Contains(MediaTagType.CD_MCN)) imageInfo.ReadableMediaTags.Add(MediaTagType.CD_MCN); } - sessions = new List(); + Sessions = new List(); for(ushort i = 1; i <= maxSession; i++) { Session session = new Session { SessionSequence = i, - StartTrack = uint.MaxValue, - StartSector = uint.MaxValue + StartTrack = uint.MaxValue, + StartSector = uint.MaxValue }; - foreach(Track track in tracks.Where(track => track.TrackSession == i)) + foreach(Track track in Tracks.Where(track => track.TrackSession == i)) { - if(track.TrackSequence < session.StartTrack) session.StartTrack = track.TrackSequence; - if(track.TrackSequence > session.EndTrack) session.StartTrack = track.TrackSequence; + if(track.TrackSequence < session.StartTrack) session.StartTrack = track.TrackSequence; + if(track.TrackSequence > session.EndTrack) session.StartTrack = track.TrackSequence; if(track.TrackStartSector < session.StartSector) session.StartSector = track.TrackStartSector; - if(track.TrackEndSector > session.EndSector) session.EndSector = track.TrackEndSector; + if(track.TrackEndSector > session.EndSector) session.EndSector = track.TrackEndSector; } - sessions.Add(session); + Sessions.Add(session); } imageInfo.MediaType = MediaType.CD; - imageInfo.Application = "BlindWrite"; + imageInfo.Application = "BlindWrite"; imageInfo.ApplicationVersion = "4"; - imageInfo.Version = "4"; + imageInfo.Version = "4"; - imageInfo.ImageSize = (ulong)dataFilter.GetDataForkLength(); - imageInfo.CreationTime = dataFilter.GetCreationTime(); + imageInfo.ImageSize = (ulong)dataFilter.GetDataForkLength(); + imageInfo.CreationTime = dataFilter.GetCreationTime(); imageInfo.LastModificationTime = dataFilter.GetLastWriteTime(); - imageInfo.XmlMediaType = XmlMediaType.OpticalDisc; + imageInfo.XmlMediaType = XmlMediaType.OpticalDisc; - bool data = false; - bool mode2 = false; + bool data = false; + bool mode2 = false; bool firstaudio = false; - bool firstdata = false; - bool audio = false; + bool firstdata = false; + bool audio = false; - foreach(Track bwTrack in tracks) + foreach(Track bwTrack in Tracks) { // First track is audio firstaudio |= bwTrack.TrackSequence == 1 && bwTrack.TrackType == TrackType.Audio; @@ -730,11 +724,15 @@ namespace DiscImageChef.DiscImages } } - if(!data && !firstdata) imageInfo.MediaType = MediaType.CDDA; - else if(firstaudio && data && sessions.Count > 1 && mode2) imageInfo.MediaType = MediaType.CDPLUS; - else if(firstdata && audio || mode2) imageInfo.MediaType = MediaType.CDROMXA; - else if(!audio) imageInfo.MediaType = MediaType.CDROM; - else imageInfo.MediaType = MediaType.CD; + if(!data && !firstdata) imageInfo.MediaType = MediaType.CDDA; + else if(firstaudio && data && Sessions.Count > 1 && mode2) + imageInfo.MediaType = MediaType.CDPLUS; + else if(firstdata && audio || mode2) + imageInfo.MediaType = MediaType.CDROMXA; + else if(!audio) + imageInfo.MediaType = MediaType.CDROM; + else + imageInfo.MediaType = MediaType.CD; imageInfo.Comments = header.Comments; @@ -784,9 +782,9 @@ namespace DiscImageChef.DiscImages { foreach(KeyValuePair kvp in from kvp in offsetmap where sectorAddress >= kvp.Value - from track in tracks - where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < + from track in Tracks + where track.TrackSequence == kvp.Key + where sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1 select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); @@ -798,9 +796,9 @@ namespace DiscImageChef.DiscImages { foreach(KeyValuePair kvp in from kvp in offsetmap where sectorAddress >= kvp.Value - from track in tracks - where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < + from track in Tracks + where track.TrackSequence == kvp.Key + where sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1 select kvp) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); @@ -812,7 +810,7 @@ namespace DiscImageChef.DiscImages { Track dicTrack = new Track {TrackSequence = 0}; - foreach(Track bwTrack in tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) { dicTrack = bwTrack; break; @@ -834,29 +832,29 @@ namespace DiscImageChef.DiscImages case TrackType.CdMode1: { sectorOffset = 16; - sectorSize = 2048; - sectorSkip = 288; + sectorSize = 2048; + sectorSkip = 288; break; } case TrackType.CdMode2Formless: { sectorOffset = 16; - sectorSize = 2336; - sectorSkip = 0; + sectorSize = 2336; + sectorSkip = 0; break; } case TrackType.Audio: { sectorOffset = 0; - sectorSize = 2352; - sectorSkip = 0; + sectorSize = 2352; + sectorSkip = 0; break; } case TrackType.Data: { sectorOffset = 0; - sectorSize = 2048; - sectorSkip = 0; + sectorSize = 2048; + sectorSkip = 0; break; } default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type"); @@ -864,7 +862,7 @@ namespace DiscImageChef.DiscImages byte[] buffer = new byte[sectorSize * length]; - imageStream = dicTrack.TrackFilter.GetDataForkStream(); + imageStream = dicTrack.TrackFilter.GetDataForkStream(); BinaryReader br = new BinaryReader(imageStream); br.BaseStream .Seek((long)dicTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), @@ -886,7 +884,7 @@ namespace DiscImageChef.DiscImages { Track dicTrack = new Track {TrackSequence = 0}; - foreach(Track bwTrack in tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) { dicTrack = bwTrack; break; @@ -919,7 +917,7 @@ namespace DiscImageChef.DiscImages case SectorTagType.CdTrackFlags: if(trackFlags.TryGetValue(track, out byte flag)) return new[] {flag}; - throw new ArgumentException("Unsupported tag requested", nameof(tag)); + throw new ArgumentException("Unsupported tag requested", nameof(tag)); default: throw new ArgumentException("Unsupported tag requested", nameof(tag)); } @@ -931,15 +929,15 @@ namespace DiscImageChef.DiscImages case SectorTagType.CdSectorSync: { sectorOffset = 0; - sectorSize = 12; - sectorSkip = 2340; + sectorSize = 12; + sectorSkip = 2340; break; } case SectorTagType.CdSectorHeader: { sectorOffset = 12; - sectorSize = 4; - sectorSkip = 2336; + sectorSize = 4; + sectorSkip = 2336; break; } case SectorTagType.CdSectorSubHeader: @@ -947,29 +945,29 @@ namespace DiscImageChef.DiscImages case SectorTagType.CdSectorEcc: { sectorOffset = 2076; - sectorSize = 276; - sectorSkip = 0; + sectorSize = 276; + sectorSkip = 0; break; } case SectorTagType.CdSectorEccP: { sectorOffset = 2076; - sectorSize = 172; - sectorSkip = 104; + sectorSize = 172; + sectorSkip = 104; break; } case SectorTagType.CdSectorEccQ: { sectorOffset = 2248; - sectorSize = 104; - sectorSkip = 0; + sectorSize = 104; + sectorSkip = 0; break; } case SectorTagType.CdSectorEdc: { sectorOffset = 2064; - sectorSize = 4; - sectorSkip = 284; + sectorSize = 4; + sectorSkip = 284; break; } case SectorTagType.CdSectorSubchannel: @@ -991,15 +989,15 @@ namespace DiscImageChef.DiscImages case SectorTagType.CdSectorSubHeader: { sectorOffset = 0; - sectorSize = 8; - sectorSkip = 2328; + sectorSize = 8; + sectorSkip = 2328; break; } case SectorTagType.CdSectorEdc: { sectorOffset = 2332; - sectorSize = 4; - sectorSkip = 0; + sectorSize = 4; + sectorSkip = 0; break; } case SectorTagType.CdSectorSubchannel: @@ -1023,7 +1021,7 @@ namespace DiscImageChef.DiscImages byte[] buffer = new byte[sectorSize * length]; - imageStream = dicTrack.TrackFilter.GetDataForkStream(); + imageStream = dicTrack.TrackFilter.GetDataForkStream(); BinaryReader br = new BinaryReader(imageStream); br.BaseStream .Seek((long)dicTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), @@ -1055,9 +1053,9 @@ namespace DiscImageChef.DiscImages { foreach(KeyValuePair kvp in from kvp in offsetmap where sectorAddress >= kvp.Value - from track in tracks - where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < + from track in Tracks + where track.TrackSequence == kvp.Key + where sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1 select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); @@ -1069,7 +1067,7 @@ namespace DiscImageChef.DiscImages { Track dicTrack = new Track {TrackSequence = 0}; - foreach(Track bwTrack in tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) { dicTrack = bwTrack; break; @@ -1094,14 +1092,14 @@ namespace DiscImageChef.DiscImages case TrackType.Data: { sectorOffset = 0; - sectorSize = (uint)dicTrack.TrackRawBytesPerSector; - sectorSkip = 0; + sectorSize = (uint)dicTrack.TrackRawBytesPerSector; + sectorSkip = 0; break; } default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type"); } - imageStream = dicTrack.TrackFilter.GetDataForkStream(); + imageStream = dicTrack.TrackFilter.GetDataForkStream(); BinaryReader br = new BinaryReader(imageStream); br.BaseStream .Seek((long)dicTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), @@ -1113,14 +1111,14 @@ namespace DiscImageChef.DiscImages public List GetSessionTracks(Session session) { - if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); + if(Sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } public List GetSessionTracks(ushort session) { - return tracks.Where(track => track.TrackSession == session).ToList(); + return Tracks.Where(track => track.TrackSession == session).ToList(); } public bool? VerifySector(ulong sectorAddress) @@ -1136,13 +1134,13 @@ namespace DiscImageChef.DiscImages } public bool? VerifySectors(ulong sectorAddress, uint length, out List failingLbas, - out List unknownLbas) + out List unknownLbas) { byte[] buffer = ReadSectorsLong(sectorAddress, length); - int bps = (int)(buffer.Length / length); + int bps = (int)(buffer.Length / length); byte[] sector = new byte[bps]; - failingLbas = new List(); - unknownLbas = new List(); + failingLbas = new List(); + unknownLbas = new List(); for(int i = 0; i < length; i++) { @@ -1166,13 +1164,13 @@ namespace DiscImageChef.DiscImages } public bool? VerifySectors(ulong sectorAddress, uint length, uint track, out List failingLbas, - out List unknownLbas) + out List unknownLbas) { byte[] buffer = ReadSectorsLong(sectorAddress, length, track); - int bps = (int)(buffer.Length / length); + int bps = (int)(buffer.Length / length); byte[] sector = new byte[bps]; - failingLbas = new List(); - unknownLbas = new List(); + failingLbas = new List(); + unknownLbas = new List(); for(int i = 0; i < length; i++) { @@ -1203,91 +1201,93 @@ namespace DiscImageChef.DiscImages struct Bw4Header { public byte[] Signature; - public uint Unknown1; - public ulong Timestamp; - public uint VolumeIdLength; + public uint Unknown1; + public ulong Timestamp; + public uint VolumeIdLength; public byte[] VolumeIdBytes; - public uint SysIdLength; + public uint SysIdLength; public byte[] SysIdBytes; - public uint CommentsLength; + public uint CommentsLength; public byte[] CommentsBytes; - public uint TrackDescriptors; - public uint DataFileLength; + public uint TrackDescriptors; + public uint DataFileLength; public byte[] DataFileBytes; - public uint SubchannelFileLength; + public uint SubchannelFileLength; public byte[] SubchannelFileBytes; - public uint Unknown2; - public byte Unknown3; + public uint Unknown2; + public byte Unknown3; public byte[] Unknown4; // On memory only -#pragma warning disable 649 - public string VolumeIdentifier; - public string SystemIdentifier; - public string Comments; + #pragma warning disable 649 + public string VolumeIdentifier; + public string SystemIdentifier; + public string Comments; public IFilter DataFilter; public IFilter SubchannelFilter; - public string DataFile; - public string SubchannelFile; -#pragma warning restore 649 + public string DataFile; + public string SubchannelFile; + #pragma warning restore 649 } [StructLayout(LayoutKind.Sequential, Pack = 1)] struct Bw4TrackDescriptor { - public uint filenameLen; + public uint filenameLen; public byte[] filenameBytes; - public uint offset; - public byte subchannel; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] unknown1; - public uint unknown2; - public byte unknown3; - public byte session; - public byte unknown4; - public byte adrCtl; - public byte unknown5; + public uint offset; + public byte subchannel; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] + public byte[] unknown1; + public uint unknown2; + public byte unknown3; + public byte session; + public byte unknown4; + public byte adrCtl; + public byte unknown5; public Bw4TrackType trackMode; - public byte unknown6; - public byte point; - public uint unknown7; - public uint unknown8; - public uint unknown9; - public uint unknown10; - public ushort unknown11; - public uint lastSector; - public byte unknown12; - public int pregap; - public int startSector; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public uint[] unknown13; - public uint titleLen; + public byte unknown6; + public byte point; + public uint unknown7; + public uint unknown8; + public uint unknown9; + public uint unknown10; + public ushort unknown11; + public uint lastSector; + public byte unknown12; + public int pregap; + public int startSector; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] + public uint[] unknown13; + public uint titleLen; public byte[] titleBytes; - public uint performerLen; + public uint performerLen; public byte[] performerBytes; - public uint unkStrLen1; + public uint unkStrLen1; public byte[] unkStrBytes1; - public uint unkStrLen2; + public uint unkStrLen2; public byte[] unkStrBytes2; - public uint unkStrLen3; + public uint unkStrLen3; public byte[] unkStrBytes3; - public uint unkStrLen4; + public uint unkStrLen4; public byte[] unkStrBytes4; - public uint discIdLen; + public uint discIdLen; public byte[] discIdBytes; - public uint unkStrLen5; + public uint unkStrLen5; public byte[] unkStrBytes5; - public uint unkStrLen6; + public uint unkStrLen6; public byte[] unkStrBytes6; - public uint unkStrLen7; + public uint unkStrLen7; public byte[] unkStrBytes7; - public uint unkStrLen8; + public uint unkStrLen8; public byte[] unkStrBytes8; - public uint unkStrLen9; + public uint unkStrLen9; public byte[] unkStrBytes9; - public uint unkStrLen10; + public uint unkStrLen10; public byte[] unkStrBytes10; - public uint unkStrLen11; + public uint unkStrLen11; public byte[] unkStrBytes11; - public uint isrcLen; + public uint isrcLen; public byte[] isrcBytes; // On memory only