mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
REFACTOR: Reformat code.
This commit is contained in:
@@ -40,25 +40,23 @@ namespace DiscImageChef.Core
|
||||
public static partial class Sidecar
|
||||
{
|
||||
// TODO: Complete it
|
||||
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
|
||||
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.AudioMedia = new []
|
||||
sidecar.AudioMedia = new[]
|
||||
{
|
||||
new AudioMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
new AudioMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.GetImageName()}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -74,4 +72,4 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,25 +47,23 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
public static partial class Sidecar
|
||||
{
|
||||
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
|
||||
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.BlockMedia = new[]
|
||||
{
|
||||
new BlockMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
new BlockMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.GetImageName()}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -89,7 +87,8 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Identify = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
@@ -99,7 +98,8 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Identify = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
@@ -108,11 +108,7 @@ namespace DiscImageChef.Core
|
||||
byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS);
|
||||
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
|
||||
{
|
||||
CIS = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(cis).ToArray(),
|
||||
Size = cis.Length
|
||||
}
|
||||
CIS = new DumpType {Checksums = Checksum.GetChecksums(cis).ToArray(), Size = cis.Length}
|
||||
};
|
||||
Tuple[] tuples = CIS.GetTuples(cis);
|
||||
if(tuples != null)
|
||||
@@ -121,7 +117,8 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
if(tuple.Code == TupleCodes.CISTPL_MANFID)
|
||||
{
|
||||
ManufacturerIdentificationTuple manfid = CIS.DecodeManufacturerIdentificationTuple(tuple);
|
||||
ManufacturerIdentificationTuple manfid =
|
||||
CIS.DecodeManufacturerIdentificationTuple(tuple);
|
||||
|
||||
if(manfid != null)
|
||||
{
|
||||
@@ -139,19 +136,22 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
sidecar.BlockMedia[0].PCMCIA.Manufacturer = vers.Manufacturer;
|
||||
sidecar.BlockMedia[0].PCMCIA.ProductName = vers.Product;
|
||||
sidecar.BlockMedia[0].PCMCIA.Compliance = string.Format("{0}.{1}", vers.MajorVersion, vers.MinorVersion);
|
||||
sidecar.BlockMedia[0].PCMCIA.Compliance =
|
||||
string.Format("{0}.{1}", vers.MajorVersion, vers.MinorVersion);
|
||||
sidecar.BlockMedia[0].PCMCIA.AdditionalInformation = vers.AdditionalInformation;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MediaTagType.SCSI_INQUIRY:
|
||||
sidecar.BlockMedia[0].SCSI = new SCSIType
|
||||
{
|
||||
Inquiry = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
|
||||
}
|
||||
};
|
||||
@@ -224,7 +224,8 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
|
||||
sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(),
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length
|
||||
};
|
||||
break;
|
||||
@@ -332,17 +333,13 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
|
||||
if(lstFs.Count > 0)
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray();
|
||||
if(lstFs.Count > 0) sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType
|
||||
{
|
||||
StartSector = 0,
|
||||
EndSector = (int)(image.GetSectors() - 1)
|
||||
};
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0] =
|
||||
new PartitionType {StartSector = 0, EndSector = (int)(image.GetSectors() - 1)};
|
||||
|
||||
Partition wholePart = new Partition
|
||||
{
|
||||
@@ -372,8 +369,7 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
|
||||
if(lstFs.Count > 0)
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray();
|
||||
if(lstFs.Count > 0) sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray();
|
||||
}
|
||||
|
||||
if(image.ImageInfo.cylinders > 0 && image.ImageInfo.heads > 0 && image.ImageInfo.sectorsPerTrack > 0)
|
||||
@@ -388,10 +384,12 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(image.ImageInfo.readableMediaTags.Contains(MediaTagType.ATA_IDENTIFY))
|
||||
{
|
||||
Decoders.ATA.Identify.IdentifyDevice? ataId = Decoders.ATA.Identify.Decode(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY));
|
||||
Decoders.ATA.Identify.IdentifyDevice? ataId =
|
||||
Decoders.ATA.Identify.Decode(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY));
|
||||
if(ataId.HasValue)
|
||||
{
|
||||
if(ataId.Value.CurrentCylinders > 0 && ataId.Value.CurrentHeads > 0 && ataId.Value.CurrentSectorsPerTrack > 0)
|
||||
if(ataId.Value.CurrentCylinders > 0 && ataId.Value.CurrentHeads > 0 &&
|
||||
ataId.Value.CurrentSectorsPerTrack > 0)
|
||||
{
|
||||
sidecar.BlockMedia[0].CylindersSpecified = true;
|
||||
sidecar.BlockMedia[0].HeadsSpecified = true;
|
||||
@@ -414,7 +412,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
// TODO: This is more of a hack, redo it planned for >4.0
|
||||
string trkFormat = null;
|
||||
|
||||
|
||||
switch(image.ImageInfo.mediaType)
|
||||
{
|
||||
case MediaType.Apple32SS:
|
||||
@@ -506,10 +504,8 @@ namespace DiscImageChef.Core
|
||||
break;
|
||||
case MediaType.SHARP_525:
|
||||
case MediaType.SHARP_525_9:
|
||||
case MediaType.SHARP_35:
|
||||
break;
|
||||
case MediaType.SHARP_35_9:
|
||||
break;
|
||||
case MediaType.SHARP_35: break;
|
||||
case MediaType.SHARP_35_9: break;
|
||||
case MediaType.ECMA_99_15:
|
||||
case MediaType.ECMA_99_26:
|
||||
case MediaType.ECMA_100:
|
||||
@@ -536,7 +532,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
#region SuperCardPro
|
||||
string scpFilePath = Path.Combine(Path.GetDirectoryName(imagePath),
|
||||
Path.GetFileNameWithoutExtension(imagePath) + ".scp");
|
||||
Path.GetFileNameWithoutExtension(imagePath) + ".scp");
|
||||
|
||||
if(File.Exists(scpFilePath))
|
||||
{
|
||||
@@ -546,14 +542,8 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(image.ImageInfo.heads <= 2 && scpImage.IdentifyImage(scpFilter))
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
scpImage.OpenImage(scpFilter);
|
||||
}
|
||||
catch(NotImplementedException)
|
||||
{
|
||||
}
|
||||
try { scpImage.OpenImage(scpFilter); }
|
||||
catch(NotImplementedException) { }
|
||||
|
||||
if((image.ImageInfo.heads == 2 && scpImage.header.heads == 0) ||
|
||||
(image.ImageInfo.heads == 1 && (scpImage.header.heads == 1 || scpImage.header.heads == 2)))
|
||||
@@ -603,22 +593,22 @@ namespace DiscImageChef.Core
|
||||
scpBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
scpImage.header.end + 1, image.ImageInfo.cylinders);
|
||||
DicConsole
|
||||
.ErrorWriteLine("SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
scpImage.header.end + 1, image.ImageInfo.cylinders);
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
2, image.ImageInfo.heads);
|
||||
DicConsole
|
||||
.ErrorWriteLine("SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
2, image.ImageInfo.heads);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region KryoFlux
|
||||
string kfFile = null;
|
||||
string basename = Path.Combine(Path.GetDirectoryName(imagePath),
|
||||
Path.GetFileNameWithoutExtension(imagePath));
|
||||
Path.GetFileNameWithoutExtension(imagePath));
|
||||
bool kfDir = false;
|
||||
|
||||
if(Directory.Exists(basename))
|
||||
@@ -630,10 +620,8 @@ namespace DiscImageChef.Core
|
||||
kfDir = true;
|
||||
}
|
||||
}
|
||||
else if(File.Exists(basename + "00.0.raw"))
|
||||
kfFile = basename + "00.0.raw";
|
||||
else if(File.Exists(basename + "00.1.raw"))
|
||||
kfFile = basename + "00.1.raw";
|
||||
else if(File.Exists(basename + "00.0.raw")) kfFile = basename + "00.0.raw";
|
||||
else if(File.Exists(basename + "00.1.raw")) kfFile = basename + "00.1.raw";
|
||||
|
||||
if(kfFile != null)
|
||||
{
|
||||
@@ -642,20 +630,15 @@ namespace DiscImageChef.Core
|
||||
kfFilter.Open(kfFile);
|
||||
if(image.ImageInfo.heads <= 2 && kfImage.IdentifyImage(kfFilter))
|
||||
{
|
||||
try
|
||||
{
|
||||
kfImage.OpenImage(kfFilter);
|
||||
}
|
||||
catch(NotImplementedException)
|
||||
{
|
||||
}
|
||||
try { kfImage.OpenImage(kfFilter); }
|
||||
catch(NotImplementedException) { }
|
||||
|
||||
if(kfImage.ImageInfo.heads == image.ImageInfo.heads)
|
||||
{
|
||||
if(kfImage.ImageInfo.cylinders >= image.ImageInfo.cylinders)
|
||||
{
|
||||
List<BlockTrackType> kfBlockTrackTypes = new List<BlockTrackType>();
|
||||
|
||||
|
||||
long currentSector = 0;
|
||||
|
||||
foreach(KeyValuePair<byte, Filter> kvp in kfImage.tracks)
|
||||
@@ -667,7 +650,8 @@ namespace DiscImageChef.Core
|
||||
kfBlockTrackType.Image.format = kfImage.GetImageFormat();
|
||||
kfBlockTrackType.Image.Value =
|
||||
kfDir
|
||||
? Path.Combine(Path.GetFileName(Path.GetDirectoryName(kvp.Value.GetBasePath())), kvp.Value.GetFilename())
|
||||
? Path.Combine(Path.GetFileName(Path.GetDirectoryName(kvp.Value.GetBasePath())),
|
||||
kvp.Value.GetFilename())
|
||||
: kvp.Value.GetFilename();
|
||||
kfBlockTrackType.Image.offset = 0;
|
||||
|
||||
@@ -695,21 +679,21 @@ namespace DiscImageChef.Core
|
||||
kfBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"KryoFlux image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
kfImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
|
||||
DicConsole
|
||||
.ErrorWriteLine("KryoFlux image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
kfImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"KryoFluximage do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
kfImage.ImageInfo.heads, image.ImageInfo.heads);
|
||||
DicConsole
|
||||
.ErrorWriteLine("KryoFluximage do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
kfImage.ImageInfo.heads, image.ImageInfo.heads);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DiscFerret
|
||||
string dfiFilePath = Path.Combine(Path.GetDirectoryName(imagePath),
|
||||
Path.GetFileNameWithoutExtension(imagePath) + ".dfi");
|
||||
Path.GetFileNameWithoutExtension(imagePath) + ".dfi");
|
||||
|
||||
if(File.Exists(dfiFilePath))
|
||||
{
|
||||
@@ -719,14 +703,8 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(dfiImage.IdentifyImage(dfiFilter))
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
dfiImage.OpenImage(dfiFilter);
|
||||
}
|
||||
catch(NotImplementedException)
|
||||
{
|
||||
}
|
||||
try { dfiImage.OpenImage(dfiFilter); }
|
||||
catch(NotImplementedException) { }
|
||||
|
||||
if(image.ImageInfo.heads == dfiImage.ImageInfo.heads)
|
||||
{
|
||||
@@ -755,7 +733,8 @@ namespace DiscImageChef.Core
|
||||
dfiBlockTrackType.Format = trkFormat;
|
||||
}
|
||||
|
||||
if(dfiImage.trackOffsets.TryGetValue(t, out long offset) && dfiImage.trackLengths.TryGetValue(t, out long length))
|
||||
if(dfiImage.trackOffsets.TryGetValue(t, out long offset) &&
|
||||
dfiImage.trackLengths.TryGetValue(t, out long length))
|
||||
{
|
||||
dfiBlockTrackType.Image.offset = offset;
|
||||
byte[] trackContents = new byte[length];
|
||||
@@ -772,18 +751,19 @@ namespace DiscImageChef.Core
|
||||
dfiBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
dfiImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
|
||||
DicConsole
|
||||
.ErrorWriteLine("DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
|
||||
dfiImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
|
||||
}
|
||||
else
|
||||
DicConsole.ErrorWriteLine(
|
||||
"DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
dfiImage.ImageInfo.heads, image.ImageInfo.heads);
|
||||
DicConsole
|
||||
.ErrorWriteLine("DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
|
||||
dfiImage.ImageInfo.heads, image.ImageInfo.heads);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
// TODO: Implement support for getting CHS from SCSI mode pages
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,36 +43,26 @@ namespace DiscImageChef.Core
|
||||
CICMMetadataType sidecar = new CICMMetadataType
|
||||
{
|
||||
BlockMedia = new[]
|
||||
{
|
||||
new BlockMediaType
|
||||
{
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "Directory",
|
||||
offsetSpecified = false,
|
||||
Value = folderName
|
||||
},
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = folderName,
|
||||
MediaSequence = 1,
|
||||
TotalMedia = 1
|
||||
},
|
||||
PhysicalBlockSize = (int)blockSize,
|
||||
LogicalBlockSize = (int)blockSize,
|
||||
TapeInformation = new []
|
||||
{
|
||||
new TapePartitionType
|
||||
{
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "Directory",
|
||||
offsetSpecified = false,
|
||||
Value = folderName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
new BlockMediaType
|
||||
{
|
||||
Image = new ImageType {format = "Directory", offsetSpecified = false, Value = folderName},
|
||||
Sequence = new SequenceType {MediaTitle = folderName, MediaSequence = 1, TotalMedia = 1},
|
||||
PhysicalBlockSize = (int)blockSize,
|
||||
LogicalBlockSize = (int)blockSize,
|
||||
TapeInformation = new[]
|
||||
{
|
||||
new TapePartitionType
|
||||
{
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "Directory",
|
||||
offsetSpecified = false,
|
||||
Value = folderName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -112,14 +102,16 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
sector = new byte[sectorsToRead * blockSize];
|
||||
fs.Read(sector, 0, sector.Length);
|
||||
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count), doneSectors, sectors);
|
||||
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count),
|
||||
doneSectors, sectors);
|
||||
doneSectors += sectorsToRead;
|
||||
}
|
||||
else
|
||||
{
|
||||
sector = new byte[(uint)(sectors - doneSectors) * blockSize];
|
||||
fs.Read(sector, 0, sector.Length);
|
||||
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count), doneSectors, sectors);
|
||||
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count),
|
||||
doneSectors, sectors);
|
||||
doneSectors += (sectors - doneSectors);
|
||||
}
|
||||
|
||||
@@ -150,32 +142,19 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
sidecar.BlockMedia[0].DiskType = "Quarter-inch cartridge";
|
||||
|
||||
if(totalSize <= 20 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-11";
|
||||
else if(totalSize <= 40 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-40";
|
||||
else if(totalSize <= 60 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-24";
|
||||
else if(totalSize <= 80 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-80";
|
||||
else if(totalSize <= 120 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-120";
|
||||
else if(totalSize <= 150 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-150";
|
||||
else if(totalSize <= 320 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-320";
|
||||
else if(totalSize <= 340 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-3010";
|
||||
else if(totalSize <= 525 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-525";
|
||||
else if(totalSize <= 670 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-3020";
|
||||
else if(totalSize <= 1200 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-3080";
|
||||
else if(totalSize <= 1350 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-1350";
|
||||
else if(totalSize <= (long)4000 * 1048576)
|
||||
sidecar.BlockMedia[0].DiskSubType = "QIC-3095";
|
||||
if(totalSize <= 20 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-11";
|
||||
else if(totalSize <= 40 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-40";
|
||||
else if(totalSize <= 60 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-24";
|
||||
else if(totalSize <= 80 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-80";
|
||||
else if(totalSize <= 120 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-120";
|
||||
else if(totalSize <= 150 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-150";
|
||||
else if(totalSize <= 320 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-320";
|
||||
else if(totalSize <= 340 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3010";
|
||||
else if(totalSize <= 525 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-525";
|
||||
else if(totalSize <= 670 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3020";
|
||||
else if(totalSize <= 1200 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3080";
|
||||
else if(totalSize <= 1350 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-1350";
|
||||
else if(totalSize <= (long)4000 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3095";
|
||||
else
|
||||
{
|
||||
sidecar.BlockMedia[0].DiskType = "Unknown tape";
|
||||
@@ -191,4 +170,4 @@ namespace DiscImageChef.Core
|
||||
return sidecar;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,8 +44,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
public static void InitProgress()
|
||||
{
|
||||
if(InitProgressEvent != null)
|
||||
InitProgressEvent();
|
||||
if(InitProgressEvent != null) InitProgressEvent();
|
||||
}
|
||||
|
||||
public static void UpdateProgress(string text, long current, long maximum)
|
||||
@@ -56,14 +55,12 @@ namespace DiscImageChef.Core
|
||||
|
||||
public static void EndProgress()
|
||||
{
|
||||
if(EndProgressEvent != null)
|
||||
EndProgressEvent();
|
||||
if(EndProgressEvent != null) EndProgressEvent();
|
||||
}
|
||||
|
||||
public static void InitProgress2()
|
||||
{
|
||||
if(InitProgressEvent2 != null)
|
||||
InitProgressEvent2();
|
||||
if(InitProgressEvent2 != null) InitProgressEvent2();
|
||||
}
|
||||
|
||||
public static void UpdateProgress2(string text, long current, long maximum)
|
||||
@@ -74,14 +71,12 @@ namespace DiscImageChef.Core
|
||||
|
||||
public static void EndProgress2()
|
||||
{
|
||||
if(EndProgressEvent2 != null)
|
||||
EndProgressEvent2();
|
||||
if(EndProgressEvent2 != null) EndProgressEvent2();
|
||||
}
|
||||
|
||||
public static void UpdateStatus(string text, params object[] args)
|
||||
{
|
||||
if(UpdateStatusEvent != null)
|
||||
UpdateStatusEvent(string.Format(text, args));
|
||||
if(UpdateStatusEvent != null) UpdateStatusEvent(string.Format(text, args));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -84,4 +84,4 @@ namespace DiscImageChef.Core
|
||||
return string.Format("{3}:{0:D2}:{1:D2}:{2:D2}", m, s, f, h);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,23 +40,24 @@ namespace DiscImageChef.Core
|
||||
public static partial class Sidecar
|
||||
{
|
||||
// TODO: Complete it
|
||||
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
|
||||
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.LinearMedia = new []
|
||||
sidecar.LinearMedia = new[]
|
||||
{
|
||||
new LinearMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length
|
||||
new LinearMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,25 +41,23 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
public static partial class Sidecar
|
||||
{
|
||||
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
|
||||
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.OpticalDisc = new[]
|
||||
{
|
||||
new OpticalDiscType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
new OpticalDiscType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.GetImageName()}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -86,13 +84,12 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length
|
||||
};
|
||||
Decoders.CD.ATIP.CDATIP? atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
|
||||
Decoders.CD.ATIP.CDATIP?
|
||||
atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
|
||||
if(atip.HasValue)
|
||||
{
|
||||
if(atip.Value.DDCD)
|
||||
dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR;
|
||||
else
|
||||
dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
|
||||
if(atip.Value.DDCD) dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR;
|
||||
else dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
|
||||
}
|
||||
break;
|
||||
case MediaTagType.DVD_BCA:
|
||||
@@ -115,7 +112,8 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length
|
||||
};
|
||||
Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi = Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
|
||||
Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi =
|
||||
Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
|
||||
if(cmi.HasValue)
|
||||
{
|
||||
switch(cmi.Value.CopyrightType)
|
||||
@@ -131,6 +129,7 @@ namespace DiscImageChef.Core
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MediaTagType.DVD_DMI:
|
||||
sidecar.OpticalDisc[0].DMI = new DumpType
|
||||
@@ -141,15 +140,12 @@ namespace DiscImageChef.Core
|
||||
if(Decoders.Xbox.DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI)))
|
||||
{
|
||||
dskType = MediaType.XGD;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType { Diameter = 120 };
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType {Diameter = 120};
|
||||
}
|
||||
else if(Decoders.Xbox.DMI.IsXbox360(image.ReadDiskTag(MediaTagType.DVD_DMI)))
|
||||
{
|
||||
dskType = MediaType.XGD2;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType
|
||||
{
|
||||
Diameter = 120
|
||||
};
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType {Diameter = 120};
|
||||
}
|
||||
break;
|
||||
case MediaTagType.DVD_PFI:
|
||||
@@ -158,12 +154,11 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length
|
||||
};
|
||||
Decoders.DVD.PFI.PhysicalFormatInformation? pfi = Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
|
||||
Decoders.DVD.PFI.PhysicalFormatInformation? pfi =
|
||||
Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
|
||||
if(pfi.HasValue)
|
||||
{
|
||||
if(dskType != MediaType.XGD &&
|
||||
dskType != MediaType.XGD2 &&
|
||||
dskType != MediaType.XGD3)
|
||||
if(dskType != MediaType.XGD && dskType != MediaType.XGD2 && dskType != MediaType.XGD3)
|
||||
{
|
||||
switch(pfi.Value.DiskCategory)
|
||||
{
|
||||
@@ -211,22 +206,21 @@ namespace DiscImageChef.Core
|
||||
break;
|
||||
}
|
||||
|
||||
if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6)
|
||||
dskType = MediaType.DVDRDL;
|
||||
if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6) dskType = MediaType.DVDRDL;
|
||||
if(dskType == MediaType.DVDRW && pfi.Value.PartVersion == 3)
|
||||
dskType = MediaType.DVDRWDL;
|
||||
if(dskType == MediaType.GOD && pfi.Value.DiscSize == Decoders.DVD.DVDSize.OneTwenty)
|
||||
dskType = MediaType.WOD;
|
||||
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
|
||||
if(dskType == MediaType.UMD)
|
||||
sidecar.OpticalDisc[0].Dimensions.Diameter = 60;
|
||||
if(dskType == MediaType.UMD) sidecar.OpticalDisc[0].Dimensions.Diameter = 60;
|
||||
else if(pfi.Value.DiscSize == Decoders.DVD.DVDSize.Eighty)
|
||||
sidecar.OpticalDisc[0].Dimensions.Diameter = 80;
|
||||
else if(pfi.Value.DiscSize == Decoders.DVD.DVDSize.OneTwenty)
|
||||
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MediaTagType.CD_PMA:
|
||||
sidecar.OpticalDisc[0].PMA = new DumpType
|
||||
@@ -243,10 +237,7 @@ namespace DiscImageChef.Core
|
||||
List<Session> sessions = image.GetSessions();
|
||||
sidecar.OpticalDisc[0].Sessions = sessions != null ? sessions.Count : 1;
|
||||
}
|
||||
catch
|
||||
{
|
||||
sidecar.OpticalDisc[0].Sessions = 1;
|
||||
}
|
||||
catch { sidecar.OpticalDisc[0].Sessions = 1; }
|
||||
|
||||
List<Track> tracks = image.GetTracks();
|
||||
List<Schemas.TrackType> trksLst = null;
|
||||
@@ -297,24 +288,21 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.TrackType1 = TrackTypeTrackType.mode1;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
xmlTrk.Sequence = new TrackSequenceType
|
||||
{
|
||||
Session = trk.TrackSession,
|
||||
TrackNumber = (int)trk.TrackSequence
|
||||
};
|
||||
|
||||
xmlTrk.Sequence =
|
||||
new TrackSequenceType {Session = trk.TrackSession, TrackNumber = (int)trk.TrackSequence};
|
||||
xmlTrk.StartSector = (long)trk.TrackStartSector;
|
||||
xmlTrk.EndSector = (long)trk.TrackEndSector;
|
||||
|
||||
if(trk.Indexes != null && trk.Indexes.ContainsKey(0))
|
||||
{
|
||||
if(trk.Indexes.TryGetValue(0, out ulong idx0))
|
||||
xmlTrk.StartSector = (long)idx0;
|
||||
if(trk.Indexes.TryGetValue(0, out ulong idx0)) xmlTrk.StartSector = (long)idx0;
|
||||
}
|
||||
|
||||
if(sidecar.OpticalDisc[0].DiscType == "CD" ||
|
||||
sidecar.OpticalDisc[0].DiscType == "GD")
|
||||
if(sidecar.OpticalDisc[0].DiscType == "CD" || sidecar.OpticalDisc[0].DiscType == "GD")
|
||||
{
|
||||
xmlTrk.StartMSF = LbaToMsf(xmlTrk.StartSector);
|
||||
xmlTrk.EndMSF = LbaToMsf(xmlTrk.EndSector);
|
||||
@@ -325,11 +313,7 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector);
|
||||
}
|
||||
|
||||
xmlTrk.Image = new ImageType
|
||||
{
|
||||
Value = Path.GetFileName(trk.TrackFile),
|
||||
format = trk.TrackFileType
|
||||
};
|
||||
xmlTrk.Image = new ImageType {Value = Path.GetFileName(trk.TrackFile), format = trk.TrackFileType};
|
||||
|
||||
if(trk.TrackFileOffset > 0)
|
||||
{
|
||||
@@ -369,14 +353,18 @@ namespace DiscImageChef.Core
|
||||
|
||||
if((sectors - doneSectors) >= sectorsToRead)
|
||||
{
|
||||
sector = image.ReadSectorsLong(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
sector = image.ReadSectorsLong(doneSectors, sectorsToRead,
|
||||
(uint)xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += sectorsToRead;
|
||||
}
|
||||
else
|
||||
{
|
||||
sector = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
sector = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors),
|
||||
(uint)xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += (sectors - doneSectors);
|
||||
}
|
||||
|
||||
@@ -394,10 +382,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
xmlTrk.SubChannel = new SubChannelType
|
||||
{
|
||||
Image = new ImageType
|
||||
{
|
||||
Value = trk.TrackSubchannelFile
|
||||
},
|
||||
Image = new ImageType {Value = trk.TrackSubchannelFile},
|
||||
// TODO: Packed subchannel has different size?
|
||||
Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96
|
||||
};
|
||||
@@ -436,14 +421,19 @@ namespace DiscImageChef.Core
|
||||
|
||||
if((sectors - doneSectors) >= sectorsToRead)
|
||||
{
|
||||
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CDSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber,
|
||||
SectorTagType.CDSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += sectorsToRead;
|
||||
}
|
||||
else
|
||||
{
|
||||
sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CDSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors),
|
||||
(uint)xmlTrk.Sequence.TrackNumber,
|
||||
SectorTagType.CDSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += (sectors - doneSectors);
|
||||
}
|
||||
|
||||
@@ -460,7 +450,8 @@ namespace DiscImageChef.Core
|
||||
// For fast debugging, skip checksum
|
||||
//skipChecksum:
|
||||
|
||||
UpdateStatus("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber, xmlTrk.StartSector, xmlTrk.EndSector);
|
||||
UpdateStatus("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber,
|
||||
xmlTrk.StartSector, xmlTrk.EndSector);
|
||||
|
||||
List<Partition> partitions = Partitions.GetAll(image);
|
||||
Partitions.AddSchemesToStats(partitions);
|
||||
@@ -492,12 +483,10 @@ namespace DiscImageChef.Core
|
||||
lstFs.Add(_plugin.XmlFSType);
|
||||
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
|
||||
|
||||
if(_plugin.XmlFSType.Type == "Opera")
|
||||
dskType = MediaType.ThreeDO;
|
||||
if(_plugin.XmlFSType.Type == "Opera") dskType = MediaType.ThreeDO;
|
||||
if(_plugin.XmlFSType.Type == "PC Engine filesystem")
|
||||
dskType = MediaType.SuperCDROM2;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem")
|
||||
dskType = MediaType.WOD;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem") dskType = MediaType.WOD;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem")
|
||||
dskType = MediaType.GOD;
|
||||
}
|
||||
@@ -510,8 +499,7 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
|
||||
if(lstFs.Count > 0)
|
||||
xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray();
|
||||
if(lstFs.Count > 0) xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray();
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -541,14 +529,10 @@ namespace DiscImageChef.Core
|
||||
lstFs.Add(_plugin.XmlFSType);
|
||||
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
|
||||
|
||||
if(_plugin.XmlFSType.Type == "Opera")
|
||||
dskType = MediaType.ThreeDO;
|
||||
if(_plugin.XmlFSType.Type == "PC Engine filesystem")
|
||||
dskType = MediaType.SuperCDROM2;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem")
|
||||
dskType = MediaType.WOD;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem")
|
||||
dskType = MediaType.GOD;
|
||||
if(_plugin.XmlFSType.Type == "Opera") dskType = MediaType.ThreeDO;
|
||||
if(_plugin.XmlFSType.Type == "PC Engine filesystem") dskType = MediaType.SuperCDROM2;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem") dskType = MediaType.WOD;
|
||||
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem") dskType = MediaType.GOD;
|
||||
}
|
||||
}
|
||||
#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body
|
||||
@@ -559,21 +543,21 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
|
||||
if(lstFs.Count > 0)
|
||||
xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray();
|
||||
if(lstFs.Count > 0) xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray();
|
||||
}
|
||||
|
||||
trksLst.Add(xmlTrk);
|
||||
}
|
||||
|
||||
EndProgress();
|
||||
|
||||
if(trksLst != null)
|
||||
sidecar.OpticalDisc[0].Track = trksLst.ToArray();
|
||||
if(trksLst != null) sidecar.OpticalDisc[0].Track = trksLst.ToArray();
|
||||
|
||||
// All XGD3 all have the same number of blocks
|
||||
if(dskType == MediaType.XGD2 && sidecar.OpticalDisc[0].Track.Length == 1)
|
||||
{
|
||||
ulong blocks = (ulong)(sidecar.OpticalDisc[0].Track[0].EndSector - sidecar.OpticalDisc[0].Track[0].StartSector + 1);
|
||||
ulong blocks = (ulong)(sidecar.OpticalDisc[0].Track[0].EndSector -
|
||||
sidecar.OpticalDisc[0].Track[0].StartSector + 1);
|
||||
if(blocks == 25063 || // Locked (or non compatible drive)
|
||||
blocks == 4229664 || // Xtreme unlock
|
||||
blocks == 4246304) // Wxripper unlock
|
||||
@@ -594,14 +578,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
new DumpHardwareType
|
||||
{
|
||||
Extents = new[]
|
||||
{
|
||||
new ExtentType
|
||||
{
|
||||
Start = 0,
|
||||
End = image.ImageInfo.sectors
|
||||
}
|
||||
},
|
||||
Extents = new[] {new ExtentType {Start = 0, End = image.ImageInfo.sectors}},
|
||||
Manufacturer = image.ImageInfo.driveManufacturer,
|
||||
Model = image.ImageInfo.driveModel,
|
||||
Firmware = image.ImageInfo.driveFirmwareRevision,
|
||||
@@ -616,4 +593,4 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,8 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
public static partial class Sidecar
|
||||
{
|
||||
public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId, System.Text.Encoding encoding)
|
||||
public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId,
|
||||
System.Text.Encoding encoding)
|
||||
{
|
||||
CICMMetadataType sidecar = new CICMMetadataType();
|
||||
PluginBase plugins = new PluginBase();
|
||||
@@ -102,4 +103,4 @@ namespace DiscImageChef.Core
|
||||
return sidecar;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user