mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
* DiscImageChef.Decoders/CD/ATIP.cs:
Added disc type and manufacturer lookup from ATIP. * DiscImageChef.Decoders/CD/PMA.cs: Implement full PMA decoding. * DiscImageChef.Decoders/CD/FullTOC.cs: Implement decoding disc ID. * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: Disc ID is 24-bit. * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: CD-TEXT can be empty without being null, do not decode an empty one.
This commit is contained in:
@@ -331,6 +331,24 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 1:
|
||||
sb.AppendLine("Disc is High-Speed CD-RW");
|
||||
break;
|
||||
case 2:
|
||||
sb.AppendLine("Disc is Ultra-Speed CD-RW");
|
||||
break;
|
||||
case 3:
|
||||
sb.AppendLine("Disc is Ultra-Speed+ CD-RW");
|
||||
break;
|
||||
case 4:
|
||||
sb.AppendLine("Disc is medium type B, low beta category (B-) CD-RW");
|
||||
break;
|
||||
case 5:
|
||||
sb.AppendLine("Disc is medium type B, high beta category (B+) CD-RW");
|
||||
break;
|
||||
case 6:
|
||||
sb.AppendLine("Disc is medium type C, low beta category (C-) CD-RW");
|
||||
break;
|
||||
case 7:
|
||||
sb.AppendLine("Disc is medium type C, high beta category (C+) CD-RW");
|
||||
break;
|
||||
default:
|
||||
sb.AppendFormat("Unknown CD-RW disc subtype: {0}", response.DiscSubType).AppendLine();
|
||||
break;
|
||||
@@ -350,6 +368,30 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendLine("Disc is CD-R");
|
||||
switch (response.DiscSubType)
|
||||
{
|
||||
case 0:
|
||||
sb.AppendLine("Disc is normal speed (CLV) CD-R");
|
||||
break;
|
||||
case 1:
|
||||
sb.AppendLine("Disc is high speed (CAV) CD-R");
|
||||
break;
|
||||
case 2:
|
||||
sb.AppendLine("Disc is medium type A, low beta category (A-) CD-R");
|
||||
break;
|
||||
case 3:
|
||||
sb.AppendLine("Disc is medium type A, high beta category (A+) CD-R");
|
||||
break;
|
||||
case 4:
|
||||
sb.AppendLine("Disc is medium type B, low beta category (B-) CD-R");
|
||||
break;
|
||||
case 5:
|
||||
sb.AppendLine("Disc is medium type B, high beta category (B+) CD-R");
|
||||
break;
|
||||
case 6:
|
||||
sb.AppendLine("Disc is medium type C, low beta category (C-) CD-R");
|
||||
break;
|
||||
case 7:
|
||||
sb.AppendLine("Disc is medium type C, high beta category (C+) CD-R");
|
||||
break;
|
||||
default:
|
||||
sb.AppendFormat("Unknown CD-R disc subtype: {0}", response.DiscSubType).AppendLine();
|
||||
break;
|
||||
@@ -361,8 +403,8 @@ namespace DiscImageChef.Decoders.CD
|
||||
else
|
||||
sb.AppendLine("Disc use is restricted");
|
||||
|
||||
sb.AppendFormat("ATIP Start time of Lead-in: {0:X2}:{1:X2}:{2:X2}", response.LeadInStartMin, response.LeadInStartSec, response.LeadInStartFrame).AppendLine();
|
||||
sb.AppendFormat("ATIP Last possible start time of Lead-out: {0:X2}:{1:X2}:{2:X2}", response.LeadOutStartMin, response.LeadOutStartSec, response.LeadOutStartFrame).AppendLine();
|
||||
sb.AppendFormat("ATIP Start time of Lead-in: {0}:{1:D2}:{2:D2}", response.LeadInStartMin, response.LeadInStartSec, response.LeadInStartFrame).AppendLine();
|
||||
sb.AppendFormat("ATIP Last possible start time of Lead-out: {0}:{1:D2}:{2:D2}", response.LeadOutStartMin, response.LeadOutStartSec, response.LeadOutStartFrame).AppendLine();
|
||||
if(response.A1Valid)
|
||||
sb.AppendFormat("A1 value: 0x{0:X6}", (response.A1Values[0] << 16) + (response.A1Values[1] << 8) + response.A1Values[2]).AppendLine();
|
||||
if(response.A2Valid)
|
||||
@@ -373,6 +415,304 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("S4 value: 0x{0:X6}", (response.S4Values[0] << 16) + (response.S4Values[1] << 8) + response.S4Values[2]).AppendLine();
|
||||
}
|
||||
|
||||
if (response.LeadInStartMin == 97)
|
||||
{
|
||||
int type = response.LeadInStartFrame % 10;
|
||||
int frm = response.LeadInStartFrame - type;
|
||||
string manufacturer = "";
|
||||
|
||||
if (response.DiscType)
|
||||
sb.AppendLine("Disc uses phase change");
|
||||
else
|
||||
{
|
||||
if(type < 5)
|
||||
sb.AppendLine("Disc uses long strategy type dye (Cyanine, AZO, etc...)");
|
||||
else
|
||||
sb.AppendLine("Disc uses short strategy type dye (Phthalocyanine, etc...)");
|
||||
}
|
||||
|
||||
switch (response.LeadInStartSec)
|
||||
{
|
||||
case 15:
|
||||
if (frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
if (frm == 30)
|
||||
manufacturer = "NAN-YA Plastics Corporation";
|
||||
break;
|
||||
case 16:
|
||||
if (frm == 20)
|
||||
manufacturer = "Shenzen SG&Gast Digital Optical Discs";
|
||||
if (frm == 30)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
break;
|
||||
case 17:
|
||||
if (frm == 00)
|
||||
manufacturer = "Moser Baer India Limited";
|
||||
break;
|
||||
case 18:
|
||||
if (frm == 10)
|
||||
manufacturer = "Wealth Fair Investment Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Taroko International Co. Ltd.";
|
||||
break;
|
||||
case 20:
|
||||
if (frm == 10)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 21:
|
||||
if (frm == 30)
|
||||
manufacturer = "Bestdisc Technology Corporation";
|
||||
if (frm == 40)
|
||||
manufacturer = "Optical Disc Manufacturing Equipment";
|
||||
if (frm == 50)
|
||||
manufacturer = "Sound Sound Multi-Media Development Ltd.";
|
||||
break;
|
||||
case 22:
|
||||
if (frm == 00)
|
||||
manufacturer = "Woongjin Media Corp.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Seantram Technology Inc.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Advanced Digital Media";
|
||||
if (frm == 30)
|
||||
manufacturer = "EXIMPO";
|
||||
if (frm == 40)
|
||||
manufacturer = "CIS Technology Inc.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Hong Kong Digital Technology Co., Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Acer Media Technology, Inc.";
|
||||
break;
|
||||
case 23:
|
||||
if (frm == 00)
|
||||
manufacturer = "Matsushita Electric Industrial Co., Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Doremi Media Co., Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Nacar Media s.r.l.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Audio Distributors Co., Ltd.";
|
||||
if (frm == 40)
|
||||
manufacturer = "Victor Company of Japan, Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Optrom Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Customer Pressing Oosterhout";
|
||||
break;
|
||||
case 24:
|
||||
if (frm == 00)
|
||||
manufacturer = "Taiyo Yuden Company Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "SONY Corporation";
|
||||
if (frm == 20)
|
||||
manufacturer = "Computer Support Italy s.r.l.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Unitech Japan Inc.";
|
||||
if (frm == 40)
|
||||
manufacturer = "kdg mediatech AG";
|
||||
if (frm == 50)
|
||||
manufacturer = "Guann Yinn Co., Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Harmonic Hall Optical Disc Ltd.";
|
||||
break;
|
||||
case 25:
|
||||
if (frm == 00)
|
||||
manufacturer = "MPO";
|
||||
if (frm == 20)
|
||||
manufacturer = "Hitachi Maxell, Ltd.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Infodisc Technology Co. Ltd.";
|
||||
if (frm == 40)
|
||||
manufacturer = "Vivastar AG";
|
||||
if (frm == 50)
|
||||
manufacturer = "AMS Technology Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Xcitec Inc.";
|
||||
break;
|
||||
case 26:
|
||||
if (frm == 00)
|
||||
manufacturer = "Fornet International Pte Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "POSTECH Corporation";
|
||||
if (frm == 20)
|
||||
manufacturer = "SKC Co., Ltd.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Optical Disc Corporation";
|
||||
if (frm == 40)
|
||||
manufacturer = "FUJI Photo Film Co., Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Lead Data Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "CMC Magnetics Corporation";
|
||||
break;
|
||||
case 27:
|
||||
if (frm == 00)
|
||||
manufacturer = "Digital Storage Technology Co., Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Plasmon Data systems Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Princo Corporation";
|
||||
if (frm == 30)
|
||||
manufacturer = "Pioneer Video Corporation";
|
||||
if (frm == 40)
|
||||
manufacturer = "Kodak Japan Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Mitsui Chemicals, Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Ricoh Company Ltd.";
|
||||
break;
|
||||
case 28:
|
||||
if (frm == 00)
|
||||
manufacturer = "Opti.Me.S. S.p.A.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Gigastore Corporation";
|
||||
if (frm == 20)
|
||||
manufacturer = "Multi Media Masters & Machinary SA";
|
||||
if (frm == 30)
|
||||
manufacturer = "Auvistar Industry Co., Ltd.";
|
||||
if (frm == 40)
|
||||
manufacturer = "King Pro Mediatek Inc.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Delphi Technology Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Friendly CD-Tek Co.";
|
||||
break;
|
||||
case 29:
|
||||
if (frm == 00)
|
||||
manufacturer = "Taeil Media Co., Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Vanguard Disc Inc.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Unidisc Technology Co., Ltd.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Hile Optical Disc Technology Corp.";
|
||||
if (frm == 40)
|
||||
manufacturer = "Viva Magnetics Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "General Magnetics Ltd.";
|
||||
break;
|
||||
case 30:
|
||||
if (frm == 10)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 31:
|
||||
if (frm == 00)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
break;
|
||||
case 32:
|
||||
if (frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
manufacturer = "Prodisc Technology Inc.";
|
||||
break;
|
||||
case 34:
|
||||
if (frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
break;
|
||||
case 42:
|
||||
if (frm == 20)
|
||||
manufacturer = "Advanced Digital Media";
|
||||
break;
|
||||
case 45:
|
||||
if (frm == 00)
|
||||
manufacturer = "Fornet International Pte Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Unitech Japan Inc.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Acer Media Technology, Inc.";
|
||||
if (frm == 40)
|
||||
manufacturer = "CIS Technology Inc.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Guann Yinn Co., Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Xcitec Inc.";
|
||||
break;
|
||||
case 46:
|
||||
if (frm == 00)
|
||||
manufacturer = "Taiyo Yuden Company Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Hong Kong Digital Technology Co., Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Multi Media Masters & Machinary SA";
|
||||
if (frm == 30)
|
||||
manufacturer = "Computer Support Italy s.r.l.";
|
||||
if (frm == 40)
|
||||
manufacturer = "FUJI Photo Film Co., Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Auvistar Industry Co., Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "CMC Magnetics Corporation";
|
||||
break;
|
||||
case 47:
|
||||
if (frm == 10)
|
||||
manufacturer = "Hitachi Maxell, Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Princo Corporation";
|
||||
if (frm == 40)
|
||||
manufacturer = "POSTECH Corporation";
|
||||
if (frm == 50)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Prodisc Technology Inc.";
|
||||
break;
|
||||
case 48:
|
||||
if (frm == 00)
|
||||
manufacturer = "Ricoh Company Ltd.";
|
||||
if (frm == 10)
|
||||
manufacturer = "Kodak Japan Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Plasmon Data systems Ltd.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Pioneer Video Corporation";
|
||||
if (frm == 40)
|
||||
manufacturer = "Digital Storage Technology Co., Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Mitsui Chemicals, Inc.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Lead Data Inc.";
|
||||
break;
|
||||
case 49:
|
||||
if (frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
manufacturer = "Gigastore Corporation";
|
||||
if (frm == 20)
|
||||
manufacturer = "King Pro Mediatek Inc.";
|
||||
if (frm == 30)
|
||||
manufacturer = "Opti.Me.S. S.p.A.";
|
||||
if (frm == 40)
|
||||
manufacturer = "Victor Company of Japan, Ltd.";
|
||||
if (frm == 60)
|
||||
manufacturer = "Matsushita Electric Industrial Co., Ltd.";
|
||||
break;
|
||||
case 50:
|
||||
if (frm == 10)
|
||||
manufacturer = "Vanguard Disc Inc.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
if (frm == 30)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 51:
|
||||
if (frm == 10)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
if (frm == 20)
|
||||
manufacturer = "Infodisc Technology Co. Ltd.";
|
||||
if (frm == 50)
|
||||
manufacturer = "Hile Optical Disc Technology Corp.";
|
||||
break;
|
||||
}
|
||||
|
||||
if (manufacturer != "")
|
||||
sb.AppendFormat("Disc manufactured by: {0}", manufacturer).AppendLine();
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
|
||||
@@ -205,6 +205,9 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.Reserved2 = CDTextResponse[3];
|
||||
decoded.DataPacks = new CDTextPack[(decoded.DataLength - 2) / 18];
|
||||
|
||||
if (decoded.DataLength == 2)
|
||||
return null;
|
||||
|
||||
if (decoded.DataLength + 2 != CDTextResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD-TEXT decoder", "Expected CD-TEXT size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDTextResponse.Length);
|
||||
|
||||
@@ -207,7 +207,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
foreach (TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
{
|
||||
if ((descriptor.CONTROL & 0x08) == 0x08 ||
|
||||
(descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4) ||
|
||||
(descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6) ||
|
||||
descriptor.TNO != 0)
|
||||
{
|
||||
sb.AppendLine("Unknown TOC entry format, printing values as-is");
|
||||
@@ -533,6 +533,12 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
uint id = (uint)((descriptor.Min << 16) + (descriptor.Sec << 8) + descriptor.Frame);
|
||||
sb.AppendFormat("Disc ID: {0:X6}", id & 0x00FFFFFF).AppendLine();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,6 +200,107 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("Reserved = 0x{0:X2}", descriptor.Reserved).AppendLine();
|
||||
#endif
|
||||
|
||||
switch (descriptor.ADR)
|
||||
{
|
||||
case 1:
|
||||
if (descriptor.POINT > 0)
|
||||
{
|
||||
sb.AppendFormat("Track {0}", descriptor.POINT);
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.Append(" (Stereo audio track with no pre-emphasis)");
|
||||
break;
|
||||
case TOC_CONTROL.TwoChanPreEmph:
|
||||
sb.Append(" (Stereo audio track with 50/15 μs pre-emphasis)");
|
||||
break;
|
||||
case TOC_CONTROL.FourChanNoPreEmph:
|
||||
sb.Append(" (Quadraphonic audio track with no pre-emphasis)");
|
||||
break;
|
||||
case TOC_CONTROL.FourChanPreEmph:
|
||||
sb.Append(" (Quadraphonic audio track with 50/15 μs pre-emphasis)");
|
||||
break;
|
||||
case TOC_CONTROL.DataTrack:
|
||||
sb.Append(" (Data track, recorded uninterrupted)");
|
||||
break;
|
||||
case TOC_CONTROL.DataTrackIncremental:
|
||||
sb.Append(" (Data track, recorded incrementally)");
|
||||
break;
|
||||
}
|
||||
if (descriptor.PHOUR > 0)
|
||||
sb.AppendFormat(" starts at {3}:{0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR);
|
||||
else
|
||||
sb.AppendFormat(" starts at {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME);
|
||||
if (descriptor.PHOUR > 0)
|
||||
sb.AppendFormat(" and ends at {3}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR);
|
||||
else
|
||||
sb.AppendFormat(" and ends at {0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame);
|
||||
}
|
||||
else
|
||||
goto default;
|
||||
break;
|
||||
case 2:
|
||||
uint id = (uint)((descriptor.Min << 16) + (descriptor.Sec << 8) + descriptor.Frame);
|
||||
sb.AppendFormat("Disc ID: {0:X6}", id & 0x00FFFFFF).AppendLine();
|
||||
break;
|
||||
case 3:
|
||||
sb.AppendFormat("Skip track assignment {0} says that tracks ", descriptor.POINT);
|
||||
if(descriptor.Min > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Min);
|
||||
if(descriptor.Sec > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Sec);
|
||||
if(descriptor.Frame > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Frame);
|
||||
if(descriptor.PMIN > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PMIN);
|
||||
if(descriptor.PSEC > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PSEC);
|
||||
if(descriptor.PFRAME > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PFRAME);
|
||||
sb.AppendLine("should be skipped");
|
||||
break;
|
||||
case 4:
|
||||
sb.AppendFormat("Unskip track assignment {0} says that tracks ", descriptor.POINT);
|
||||
if(descriptor.Min > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Min);
|
||||
if(descriptor.Sec > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Sec);
|
||||
if(descriptor.Frame > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.Frame);
|
||||
if(descriptor.PMIN > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PMIN);
|
||||
if(descriptor.PSEC > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PSEC);
|
||||
if(descriptor.PFRAME > 0)
|
||||
sb.AppendFormat("{0} ", descriptor.PFRAME);
|
||||
sb.AppendLine("should not be skipped");
|
||||
break;
|
||||
case 5:
|
||||
sb.AppendFormat("Skip time interval assignment {0} says that from ", descriptor.POINT);
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat("{3}:{0:D2}:{1:D2}:{2:D2} to ", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR);
|
||||
else
|
||||
sb.AppendFormat("{0:D2}:{1:D2}:{2:D2} to ", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME);
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat("{3}:{0:D2}:{1:D2}:{2:D2} ", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR);
|
||||
else
|
||||
sb.AppendFormat("{0:D2}:{1:D2}:{2:D2} ", descriptor.Min, descriptor.Sec, descriptor.Frame);
|
||||
sb.AppendLine("should be skipped");
|
||||
break;
|
||||
case 6:
|
||||
sb.AppendFormat("Unskip time interval assignment {0} says that from ", descriptor.POINT);
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat("{3}:{0:D2}:{1:D2}:{2:D2} to ", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR);
|
||||
else
|
||||
sb.AppendFormat("{0:D2}:{1:D2}:{2:D2} to ", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME);
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat("{3}:{0:D2}:{1:D2}:{2:D2} ", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR);
|
||||
else
|
||||
sb.AppendFormat("{0:D2}:{1:D2}:{2:D2} ", descriptor.Min, descriptor.Sec, descriptor.Frame);
|
||||
sb.AppendLine("should not be skipped");
|
||||
break;
|
||||
default:
|
||||
|
||||
sb.AppendFormat("ADR = {0}", descriptor.ADR).AppendLine();
|
||||
sb.AppendFormat("CONTROL = {0}", descriptor.CONTROL).AppendLine();
|
||||
sb.AppendFormat("TNO = {0}", descriptor.TNO).AppendLine();
|
||||
@@ -212,6 +313,8 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("PMIN = {0}", descriptor.PMIN).AppendLine();
|
||||
sb.AppendFormat("PSEC = {0}", descriptor.PSEC).AppendLine();
|
||||
sb.AppendFormat("PFRAME = {0}", descriptor.PFRAME).AppendLine();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
|
||||
@@ -1,3 +1,21 @@
|
||||
2015-12-04 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* CD/ATIP.cs:
|
||||
Added disc type and manufacturer lookup from ATIP.
|
||||
|
||||
* CD/PMA.cs:
|
||||
Implement full PMA decoding.
|
||||
|
||||
* CD/FullTOC.cs:
|
||||
Implement decoding disc ID.
|
||||
|
||||
* SCSI/MMC/DiscInformation.cs:
|
||||
Disc ID is 24-bit.
|
||||
|
||||
* CD/CDTextOnLeadIn.cs:
|
||||
CD-TEXT can be empty without being null, do not decode an
|
||||
empty one.
|
||||
|
||||
2015-12-04 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* CD/CDTextOnLeadIn.cs:
|
||||
|
||||
@@ -436,7 +436,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC
|
||||
sb.AppendLine("Disc is defined for restricted use");
|
||||
|
||||
if (decoded.DID_V)
|
||||
sb.AppendFormat("Disc ID: {0:X8}", decoded.DiscIdentification).AppendLine();
|
||||
sb.AppendFormat("Disc ID: {0:X6}", decoded.DiscIdentification & 0x00FFFFFF).AppendLine();
|
||||
if (decoded.DBC_V)
|
||||
sb.AppendFormat("Disc barcode: {0:X16}", decoded.DiscBarcode).AppendLine();
|
||||
if (decoded.DAC_V)
|
||||
|
||||
Reference in New Issue
Block a user