* README.md:

* DiscImageChef.DiscImages/GDI.cs:
	* DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj:
	  Added support for Dreamcast GDI images.

	* DiscImageChef.DiscImages/ImagePlugin.cs:
	  Add XML documentation to exceptions.

	* DiscImageChef.Filesystems/ISO9660.cs:
	  Corrected Dreamcast IP.BIN interpretation.

	* DiscImageChef/Commands/CreateSidecar.cs:
	  Formatting.
This commit is contained in:
2015-12-25 20:47:40 +00:00
parent 3b368e0bd4
commit 8ed384f47f
9 changed files with 1392 additions and 43 deletions

View File

@@ -1,3 +1,12 @@
2015-12-25 Natalia Portillo <claunia@claunia.com>
* GDI.cs:
* DiscImageChef.DiscImages.csproj:
Added support for Dreamcast GDI images.
* ImagePlugin.cs:
Add XML documentation to exceptions.
2015-12-23 Natalia Portillo <claunia@claunia.com> 2015-12-23 Natalia Portillo <claunia@claunia.com>
* CDRDAO.cs: * CDRDAO.cs:

View File

@@ -44,6 +44,7 @@
<Compile Include="VHD.cs" /> <Compile Include="VHD.cs" />
<Compile Include="ZZZRawImage.cs" /> <Compile Include="ZZZRawImage.cs" />
<Compile Include="CDRDAO.cs" /> <Compile Include="CDRDAO.cs" />
<Compile Include="GDI.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup> <ItemGroup>

File diff suppressed because it is too large Load Diff

View File

@@ -694,14 +694,28 @@ namespace DiscImageChef.ImagePlugins
[Serializable] [Serializable]
public class FeatureSupportedButNotImplementedImageException : Exception public class FeatureSupportedButNotImplementedImageException : Exception
{ {
/// <summary>
/// Feature is supported by image but not implemented yet.
/// </summary>
/// <param name="message">Message.</param>
/// <param name="inner">Inner.</param>
public FeatureSupportedButNotImplementedImageException(string message, Exception inner) : base(message, inner) public FeatureSupportedButNotImplementedImageException(string message, Exception inner) : base(message, inner)
{ {
} }
/// <summary>
/// Feature is supported by image but not implemented yet.
/// </summary>
/// <param name="message">Message.</param>
public FeatureSupportedButNotImplementedImageException(string message) : base(message) public FeatureSupportedButNotImplementedImageException(string message) : base(message)
{ {
} }
/// <summary>
/// Feature is supported by image but not implemented yet.
/// </summary>
/// <param name="info">Info.</param>
/// <param name="context">Context.</param>
protected FeatureSupportedButNotImplementedImageException(System.Runtime.Serialization.SerializationInfo info, protected FeatureSupportedButNotImplementedImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) System.Runtime.Serialization.StreamingContext context)
{ {
@@ -716,14 +730,28 @@ namespace DiscImageChef.ImagePlugins
[Serializable] [Serializable]
public class FeatureUnsupportedImageException : Exception public class FeatureUnsupportedImageException : Exception
{ {
/// <summary>
/// Feature is not supported by image.
/// </summary>
/// <param name="message">Message.</param>
/// <param name="inner">Inner.</param>
public FeatureUnsupportedImageException(string message, Exception inner) : base(message, inner) public FeatureUnsupportedImageException(string message, Exception inner) : base(message, inner)
{ {
} }
/// <summary>
/// Feature is not supported by image.
/// </summary>
/// <param name="message">Message.</param>
public FeatureUnsupportedImageException(string message) : base(message) public FeatureUnsupportedImageException(string message) : base(message)
{ {
} }
/// <summary>
/// Feature is not supported by image.
/// </summary>
/// <param name="info">Info.</param>
/// <param name="context">Context.</param>
protected FeatureUnsupportedImageException(System.Runtime.Serialization.SerializationInfo info, protected FeatureUnsupportedImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) System.Runtime.Serialization.StreamingContext context)
{ {
@@ -738,14 +766,28 @@ namespace DiscImageChef.ImagePlugins
[Serializable] [Serializable]
public class FeatureNotPresentImageException : Exception public class FeatureNotPresentImageException : Exception
{ {
/// <summary>
/// Feature is supported by image but not present on it.
/// </summary>
/// <param name="message">Message.</param>
/// <param name="inner">Inner.</param>
public FeatureNotPresentImageException(string message, Exception inner) : base(message, inner) public FeatureNotPresentImageException(string message, Exception inner) : base(message, inner)
{ {
} }
/// <summary>
/// Feature is supported by image but not present on it.
/// </summary>
/// <param name="message">Message.</param>
public FeatureNotPresentImageException(string message) : base(message) public FeatureNotPresentImageException(string message) : base(message)
{ {
} }
/// <summary>
/// Feature is supported by image but not present on it.
/// </summary>
/// <param name="info">Info.</param>
/// <param name="context">Context.</param>
protected FeatureNotPresentImageException(System.Runtime.Serialization.SerializationInfo info, protected FeatureNotPresentImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) System.Runtime.Serialization.StreamingContext context)
{ {
@@ -760,14 +802,28 @@ namespace DiscImageChef.ImagePlugins
[Serializable] [Serializable]
public class FeaturedNotSupportedByDiscImageException : Exception public class FeaturedNotSupportedByDiscImageException : Exception
{ {
/// <summary>
/// Feature is supported by image but not by the disc it represents.
/// </summary>
/// <param name="message">Message.</param>
/// <param name="inner">Inner.</param>
public FeaturedNotSupportedByDiscImageException(string message, Exception inner) : base(message, inner) public FeaturedNotSupportedByDiscImageException(string message, Exception inner) : base(message, inner)
{ {
} }
/// <summary>
/// Feature is supported by image but not by the disc it represents.
/// </summary>
/// <param name="message">Message.</param>
public FeaturedNotSupportedByDiscImageException(string message) : base(message) public FeaturedNotSupportedByDiscImageException(string message) : base(message)
{ {
} }
/// <summary>
/// Feature is supported by image but not by the disc it represents.
/// </summary>
/// <param name="info">Info.</param>
/// <param name="context">Context.</param>
protected FeaturedNotSupportedByDiscImageException(System.Runtime.Serialization.SerializationInfo info, protected FeaturedNotSupportedByDiscImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) System.Runtime.Serialization.StreamingContext context)
{ {
@@ -782,14 +838,28 @@ namespace DiscImageChef.ImagePlugins
[Serializable] [Serializable]
public class ImageNotSupportedException : Exception public class ImageNotSupportedException : Exception
{ {
/// <summary>
/// Corrupt, incorrect or unhandled feature found on image
/// </summary>
/// <param name="message">Message.</param>
/// <param name="inner">Inner.</param>
public ImageNotSupportedException(string message, Exception inner) : base(message, inner) public ImageNotSupportedException(string message, Exception inner) : base(message, inner)
{ {
} }
/// <summary>
/// Corrupt, incorrect or unhandled feature found on image
/// </summary>
/// <param name="message">Message.</param>
public ImageNotSupportedException(string message) : base(message) public ImageNotSupportedException(string message) : base(message)
{ {
} }
/// <summary>
/// Corrupt, incorrect or unhandled feature found on image
/// </summary>
/// <param name="info">Info.</param>
/// <param name="context">Context.</param>
protected ImageNotSupportedException(System.Runtime.Serialization.SerializationInfo info, protected ImageNotSupportedException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) System.Runtime.Serialization.StreamingContext context)
{ {

View File

@@ -1,3 +1,8 @@
2015-12-25 Natalia Portillo <claunia@claunia.com>
* ISO9660.cs:
Corrected Dreamcast IP.BIN interpretation.
2015-12-23 Natalia Portillo <claunia@claunia.com> 2015-12-23 Natalia Portillo <claunia@claunia.com>
* ISO9660.cs: * ISO9660.cs:

View File

@@ -80,9 +80,9 @@ namespace DiscImageChef.Plugins
public override bool Identify(ImagePlugins.ImagePlugin imagePlugin, ulong partitionStart, ulong partitionEnd) public override bool Identify(ImagePlugins.ImagePlugin imagePlugin, ulong partitionStart, ulong partitionEnd)
{ {
if (alreadyLaunched) /* if (alreadyLaunched)
return false; return false;
alreadyLaunched = true; alreadyLaunched = true;*/
byte VDType; byte VDType;
@@ -776,54 +776,57 @@ namespace DiscImageChef.Plugins
int iPeripherals = int.Parse(Encoding.ASCII.GetString(peripherals), NumberStyles.HexNumber); int iPeripherals = int.Parse(Encoding.ASCII.GetString(peripherals), NumberStyles.HexNumber);
if((iPeripherals & 0x00000010) == 0x00000010) if((iPeripherals & 0x00000001) == 0x00000001)
IPBinInformation.AppendLine("Game uses Windows CE."); IPBinInformation.AppendLine("Game uses Windows CE.");
IPBinInformation.AppendFormat("Peripherals:").AppendLine(); IPBinInformation.AppendFormat("Peripherals:").AppendLine();
if ((iPeripherals & 0x00000100) == 0x00000100) if ((iPeripherals & 0x00000010) == 0x00000010)
IPBinInformation.AppendLine("Game supports the VGA Box."); IPBinInformation.AppendLine("Game supports the VGA Box.");
if ((iPeripherals & 0x00001000) == 0x00001000) if ((iPeripherals & 0x00000100) == 0x00000100)
IPBinInformation.AppendLine("Game supports other expansion."); IPBinInformation.AppendLine("Game supports other expansion.");
if ((iPeripherals & 0x00002000) == 0x00002000) if ((iPeripherals & 0x00000200) == 0x00000200)
IPBinInformation.AppendLine("Game supports Puru Puru pack."); IPBinInformation.AppendLine("Game supports Puru Puru pack.");
if ((iPeripherals & 0x00004000) == 0x00004000) if ((iPeripherals & 0x00000400) == 0x00000400)
IPBinInformation.AppendLine("Game supports Mike Device."); IPBinInformation.AppendLine("Game supports Mike Device.");
if ((iPeripherals & 0x00008000) == 0x00008000) if ((iPeripherals & 0x00000800) == 0x00000800)
IPBinInformation.AppendLine("Game supports Memory Card."); IPBinInformation.AppendLine("Game supports Memory Card.");
if ((iPeripherals & 0x00010000) == 0x00010000) if ((iPeripherals & 0x00001000) == 0x00001000)
IPBinInformation.AppendLine("Game requires A + B + Start buttons and D-Pad."); IPBinInformation.AppendLine("Game requires A + B + Start buttons and D-Pad.");
if ((iPeripherals & 0x00020000) == 0x00020000) if ((iPeripherals & 0x00002000) == 0x00002000)
IPBinInformation.AppendLine("Game requires C button."); IPBinInformation.AppendLine("Game requires C button.");
if ((iPeripherals & 0x00040000) == 0x00040000) if ((iPeripherals & 0x00004000) == 0x00004000)
IPBinInformation.AppendLine("Game requires D button."); IPBinInformation.AppendLine("Game requires D button.");
if ((iPeripherals & 0x00080000) == 0x00080000) if ((iPeripherals & 0x00008000) == 0x00008000)
IPBinInformation.AppendLine("Game requires X button."); IPBinInformation.AppendLine("Game requires X button.");
if ((iPeripherals & 0x00100000) == 0x00100000) if ((iPeripherals & 0x00010000) == 0x00010000)
IPBinInformation.AppendLine("Game requires Y button."); IPBinInformation.AppendLine("Game requires Y button.");
if ((iPeripherals & 0x00200000) == 0x00200000) if ((iPeripherals & 0x00020000) == 0x00020000)
IPBinInformation.AppendLine("Game requires Z button."); IPBinInformation.AppendLine("Game requires Z button.");
if ((iPeripherals & 0x00400000) == 0x00400000) if ((iPeripherals & 0x00040000) == 0x00040000)
IPBinInformation.AppendLine("Game requires expanded direction buttons."); IPBinInformation.AppendLine("Game requires expanded direction buttons.");
if ((iPeripherals & 0x00800000) == 0x00800000) if ((iPeripherals & 0x00080000) == 0x00080000)
IPBinInformation.AppendLine("Game requires analog R trigger."); IPBinInformation.AppendLine("Game requires analog R trigger.");
if ((iPeripherals & 0x01000000) == 0x01000000) if ((iPeripherals & 0x00100000) == 0x00100000)
IPBinInformation.AppendLine("Game requires analog L trigger."); IPBinInformation.AppendLine("Game requires analog L trigger.");
if ((iPeripherals & 0x02000000) == 0x02000000) if ((iPeripherals & 0x00200000) == 0x00200000)
IPBinInformation.AppendLine("Game requires analog horizontal controller."); IPBinInformation.AppendLine("Game requires analog horizontal controller.");
if ((iPeripherals & 0x04000000) == 0x04000000) if ((iPeripherals & 0x00400000) == 0x00400000)
IPBinInformation.AppendLine("Game requires analog vertical controller."); IPBinInformation.AppendLine("Game requires analog vertical controller.");
if ((iPeripherals & 0x08000000) == 0x08000000) if ((iPeripherals & 0x00800000) == 0x00800000)
IPBinInformation.AppendLine("Game requires expanded analog horizontal controller."); IPBinInformation.AppendLine("Game requires expanded analog horizontal controller.");
if ((iPeripherals & 0x10000000) == 0x10000000) if ((iPeripherals & 0x01000000) == 0x01000000)
IPBinInformation.AppendLine("Game requires expanded analog vertical controller."); IPBinInformation.AppendLine("Game requires expanded analog vertical controller.");
if ((iPeripherals & 0x20000000) == 0x20000000) if ((iPeripherals & 0x02000000) == 0x02000000)
IPBinInformation.AppendLine("Game supports Gun."); IPBinInformation.AppendLine("Game supports Gun.");
if ((iPeripherals & 0x40000000) == 0x40000000) if ((iPeripherals & 0x04000000) == 0x04000000)
IPBinInformation.AppendLine("Game supports Keyboard."); IPBinInformation.AppendLine("Game supports Keyboard.");
if ((iPeripherals & 0x80000000) == 0x80000000) if ((iPeripherals & 0x08000000) == 0x08000000)
IPBinInformation.AppendLine("Game supports Mouse."); IPBinInformation.AppendLine("Game supports Mouse.");
if((iPeripherals & 0xEE) != 0)
IPBinInformation.AppendFormat("Game supports unknown peripherals mask {0:X2}", (iPeripherals & 0xEE));
break; break;
} }
} }

View File

@@ -1,3 +1,8 @@
2015-12-25 Natalia Portillo <claunia@claunia.com>
* Commands/CreateSidecar.cs:
Formatting.
2015-12-23 Natalia Portillo <claunia@claunia.com> 2015-12-23 Natalia Portillo <claunia@claunia.com>
* Commands/CreateSidecar.cs: * Commands/CreateSidecar.cs:

View File

@@ -578,6 +578,9 @@ namespace DiscImageChef.Commands
xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector; xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector;
xmlTrk.BytesPerSector = trk.TrackBytesPerSector; xmlTrk.BytesPerSector = trk.TrackBytesPerSector;
// For fast debugging, skip checksum
//goto skipChecksum;
uint sectorsToRead = 512; uint sectorsToRead = 512;
adler32ctx = new Adler32Context(); adler32ctx = new Adler32Context();
@@ -977,6 +980,9 @@ namespace DiscImageChef.Commands
DicConsole.WriteLine(); DicConsole.WriteLine();
} }
// For fast debugging, skip checksum
//skipChecksum:
DicConsole.WriteLine("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber, xmlTrk.StartSector, xmlTrk.EndSector); DicConsole.WriteLine("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber, xmlTrk.StartSector, xmlTrk.EndSector);
List<Partition> partitions = new List<Partition>(); List<Partition> partitions = new List<Partition>();
@@ -993,10 +999,10 @@ namespace DiscImageChef.Commands
} }
xmlTrk.FileSystemInformation = new PartitionType[1]; xmlTrk.FileSystemInformation = new PartitionType[1];
if(partitions.Count > 0) if (partitions.Count > 0)
{ {
xmlTrk.FileSystemInformation = new PartitionType[partitions.Count]; xmlTrk.FileSystemInformation = new PartitionType[partitions.Count];
for(int i = 0; i < partitions.Count; i++) for (int i = 0; i < partitions.Count; i++)
{ {
xmlTrk.FileSystemInformation[i] = new PartitionType(); xmlTrk.FileSystemInformation[i] = new PartitionType();
xmlTrk.FileSystemInformation[i].Description = partitions[i].PartitionDescription; xmlTrk.FileSystemInformation[i].Description = partitions[i].PartitionDescription;
@@ -1012,10 +1018,10 @@ namespace DiscImageChef.Commands
{ {
try try
{ {
if (_plugin.Identify(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector+partitions[i].PartitionSectors-1)) if (_plugin.Identify(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector + partitions[i].PartitionSectors - 1))
{ {
string foo; string foo;
_plugin.GetInformation(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector+partitions[i].PartitionSectors-1, out foo); _plugin.GetInformation(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector + partitions[i].PartitionSectors - 1, out foo);
lstFs.Add(_plugin.XmlFSType); lstFs.Add(_plugin.XmlFSType);
} }
} }
@@ -1025,7 +1031,7 @@ namespace DiscImageChef.Commands
} }
} }
if(lstFs.Count > 0) if (lstFs.Count > 0)
xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray(); xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray();
} }
} }
@@ -1054,7 +1060,7 @@ namespace DiscImageChef.Commands
} }
} }
if(lstFs.Count > 0) if (lstFs.Count > 0)
xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray(); xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray();
} }

View File

@@ -41,6 +41,7 @@ Supported disk image formats
* Apple 2IMG (used with Apple // emulators) * Apple 2IMG (used with Apple // emulators)
* Virtual PC fixed size, dynamic size and differencing (undo) disk images * Virtual PC fixed size, dynamic size and differencing (undo) disk images
* CDRDAO TOC sheets * CDRDAO TOC sheets
* Dreamcast GDI
Supported partitioning schemes Supported partitioning schemes
============================== ==============================