From 9380a2b479c394bfd70be097a2fdf37158f70e18 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 25 Sep 2017 22:05:49 +0100 Subject: [PATCH] Added support for DU54 CPC DSK disk images. --- DiscImageChef.DiscImages/CPCDSK.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/DiscImageChef.DiscImages/CPCDSK.cs b/DiscImageChef.DiscImages/CPCDSK.cs index e131febd1..9e37fc7b0 100644 --- a/DiscImageChef.DiscImages/CPCDSK.cs +++ b/DiscImageChef.DiscImages/CPCDSK.cs @@ -51,10 +51,14 @@ namespace DiscImageChef.ImagePlugins /// Identifier for CPCEMU disk images, "MV - CPCEMU Disk-File" /// readonly byte[] CPCDSKId = { 0x4D, 0x56, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x43, 0x45, 0x4D, 0x55, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x2D, 0x46, 0x69, 0x6C, 0x65 }; - /// - /// Identifier for Extended CPCEMU disk images, "EXTENDED CPC DSK File" - /// - readonly byte[] EDSKId = { 0x45, 0x58, 0x54, 0x45, 0x4E, 0x44, 0x45, 0x44, 0x20, 0x43, 0x50, 0x43, 0x20, 0x44, 0x53, 0x4B, 0x20, 0x46, 0x69, 0x6C, 0x65 }; + /// + /// Identifier for DU54 disk images, "MV - CPC format Disk Image (DU54)" + /// + readonly byte[] DU54Id = { 0x4D, 0x56, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x43, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x20 }; + /// + /// Identifier for Extended CPCEMU disk images, "EXTENDED CPC DSK File" + /// + readonly byte[] EDSKId = { 0x45, 0x58, 0x54, 0x45, 0x4E, 0x44, 0x45, 0x44, 0x20, 0x43, 0x50, 0x43, 0x20, 0x44, 0x53, 0x4B, 0x20, 0x46, 0x69, 0x6C, 0x65 }; /// /// Identifier for track information, "Track-Info\r\n" /// @@ -240,7 +244,7 @@ namespace DiscImageChef.ImagePlugins DicConsole.DebugWriteLine("CPCDSK plugin", "header.magic = \"{0}\"", StringHandlers.CToString(header.magic)); - return CPCDSKId.SequenceEqual(header.magic) || EDSKId.SequenceEqual(header.magic); + return CPCDSKId.SequenceEqual(header.magic) || EDSKId.SequenceEqual(header.magic) || DU54Id.SequenceEqual(header.magic); } public override bool OpenImage(Filter imageFilter) @@ -259,7 +263,7 @@ namespace DiscImageChef.ImagePlugins header = (CPCDiskInfo)Marshal.PtrToStructure(headerPtr, typeof(CPCDiskInfo)); Marshal.FreeHGlobal(headerPtr); - if(!CPCDSKId.SequenceEqual(header.magic) && !EDSKId.SequenceEqual(header.magic)) + if(!CPCDSKId.SequenceEqual(header.magic) && !EDSKId.SequenceEqual(header.magic) && !DU54Id.SequenceEqual(header.magic)) return false; extended = EDSKId.SequenceEqual(header.magic);