🐛Fix sidecar creation for CD Lead-in, TOC, and XGD tags.

This commit is contained in:
2018-02-01 23:06:51 +00:00
parent 7cedf4b6c4
commit bd64abfbb1
2 changed files with 85 additions and 9 deletions

View File

@@ -793,6 +793,17 @@ namespace DiscImageChef.Core.Devices.Dumping
Checksums = Checksum.GetChecksums(tag.Value).ToArray() Checksums = Checksum.GetChecksums(tag.Value).ToArray()
}; };
break; break;
case MediaTagType.CD_LeadIn:
sidecar.OpticalDisc[0].LeadIn = new[]
{
new BorderType
{
Image = outputPath,
Size = tag.Value.Length,
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
}
};
break;
} }
} }
} }

View File

@@ -100,6 +100,7 @@ namespace DiscImageChef.Core
case MediaTagType.CD_ATIP: case MediaTagType.CD_ATIP:
sidecar.OpticalDisc[0].ATIP = new DumpType sidecar.OpticalDisc[0].ATIP = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length
}; };
@@ -113,6 +114,7 @@ namespace DiscImageChef.Core
case MediaTagType.DVD_BCA: case MediaTagType.DVD_BCA:
sidecar.OpticalDisc[0].BCA = new DumpType sidecar.OpticalDisc[0].BCA = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length
}; };
@@ -120,6 +122,7 @@ namespace DiscImageChef.Core
case MediaTagType.BD_BCA: case MediaTagType.BD_BCA:
sidecar.OpticalDisc[0].BCA = new DumpType sidecar.OpticalDisc[0].BCA = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length
}; };
@@ -127,6 +130,7 @@ namespace DiscImageChef.Core
case MediaTagType.DVD_CMI: case MediaTagType.DVD_CMI:
sidecar.OpticalDisc[0].CMI = new DumpType sidecar.OpticalDisc[0].CMI = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length
}; };
@@ -150,6 +154,7 @@ namespace DiscImageChef.Core
case MediaTagType.DVD_DMI: case MediaTagType.DVD_DMI:
sidecar.OpticalDisc[0].DMI = new DumpType sidecar.OpticalDisc[0].DMI = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length
}; };
@@ -168,6 +173,7 @@ namespace DiscImageChef.Core
case MediaTagType.DVD_PFI: case MediaTagType.DVD_PFI:
sidecar.OpticalDisc[0].PFI = new DumpType sidecar.OpticalDisc[0].PFI = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length
}; };
@@ -227,8 +233,7 @@ namespace DiscImageChef.Core
if(dskType == MediaType.GOD && pfi.Value.DiscSize == DVDSize.OneTwenty) if(dskType == MediaType.GOD && pfi.Value.DiscSize == DVDSize.OneTwenty)
dskType = MediaType.WOD; dskType = MediaType.WOD;
sidecar.OpticalDisc[0].Dimensions = sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
new DimensionsType();
if(dskType == MediaType.UMD) if(dskType == MediaType.UMD)
{ {
sidecar.OpticalDisc[0].Dimensions.Height = 64; sidecar.OpticalDisc[0].Dimensions.Height = 64;
@@ -236,14 +241,13 @@ namespace DiscImageChef.Core
sidecar.OpticalDisc[0].Dimensions.Width = 63; sidecar.OpticalDisc[0].Dimensions.Width = 63;
sidecar.OpticalDisc[0].Dimensions.WidthSpecified = true; sidecar.OpticalDisc[0].Dimensions.WidthSpecified = true;
sidecar.OpticalDisc[0].Dimensions.Thickness = 4; sidecar.OpticalDisc[0].Dimensions.Thickness = 4;
} }
else else
switch(pfi.Value.DiscSize) switch(pfi.Value.DiscSize)
{ {
case DVDSize.Eighty: case DVDSize.Eighty:
sidecar.OpticalDisc[0].Dimensions.Diameter = 80; sidecar.OpticalDisc[0].Dimensions.Diameter = 80;
sidecar.OpticalDisc[0].Dimensions.DiameterSpecified= true; sidecar.OpticalDisc[0].Dimensions.DiameterSpecified = true;
sidecar.OpticalDisc[0].Dimensions.Thickness = 1.2; sidecar.OpticalDisc[0].Dimensions.Thickness = 1.2;
break; break;
case DVDSize.OneTwenty: case DVDSize.OneTwenty:
@@ -258,10 +262,71 @@ namespace DiscImageChef.Core
case MediaTagType.CD_PMA: case MediaTagType.CD_PMA:
sidecar.OpticalDisc[0].PMA = new DumpType sidecar.OpticalDisc[0].PMA = new DumpType
{ {
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length
}; };
break; break;
case MediaTagType.CD_FullTOC:
sidecar.OpticalDisc[0].TOC = new DumpType
{
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_FullTOC)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_FullTOC).Length
};
break;
case MediaTagType.CD_LeadIn:
sidecar.OpticalDisc[0].LeadIn = new[]
{
new BorderType
{
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_LeadIn)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_LeadIn).Length
}
};
break;
case MediaTagType.Xbox_SecuritySector:
if(sidecar.OpticalDisc[0].Xbox == null) sidecar.OpticalDisc[0].Xbox = new XboxType();
sidecar.OpticalDisc[0].Xbox.SecuritySectors = new[]
{
new XboxSecuritySectorsType
{
RequestNumber = 0,
RequestVersion = 1,
SecuritySectors = new DumpType
{
Image = Path.GetFileName(imagePath),
Checksums =
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.Xbox_SecuritySector))
.ToArray(),
Size = image.ReadDiskTag(MediaTagType.Xbox_SecuritySector).Length
}
}
};
break;
case MediaTagType.Xbox_PFI:
if(sidecar.OpticalDisc[0].Xbox == null) sidecar.OpticalDisc[0].Xbox = new XboxType();
sidecar.OpticalDisc[0].Xbox.PFI = new DumpType
{
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.Xbox_PFI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.Xbox_PFI).Length
};
break;
case MediaTagType.Xbox_DMI:
if(sidecar.OpticalDisc[0].Xbox == null) sidecar.OpticalDisc[0].Xbox = new XboxType();
sidecar.OpticalDisc[0].Xbox.DMI = new DumpType
{
Image = Path.GetFileName(imagePath),
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.Xbox_DMI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.Xbox_DMI).Length
};
break;
} }
try try