diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
index 9725543a..0cdf446d 100644
--- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml
+++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
@@ -586,6 +586,7 @@
+
diff --git a/DiscImageChef.DiscImages/ZZZRawImage.cs b/DiscImageChef.DiscImages/ZZZRawImage.cs
index f8562b02..c71e3eb4 100644
--- a/DiscImageChef.DiscImages/ZZZRawImage.cs
+++ b/DiscImageChef.DiscImages/ZZZRawImage.cs
@@ -35,6 +35,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
+using DiscImageChef.Checksums;
using DiscImageChef.CommonTypes;
using DiscImageChef.Console;
using DiscImageChef.Decoders.ATA;
@@ -49,6 +50,8 @@ namespace DiscImageChef.DiscImages
{
public class ZZZRawImage : IWritableImage
{
+ readonly byte[] CdSync =
+ {0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00};
readonly (MediaTagType tag, string name)[] readWriteSidecars =
{
(MediaTagType.ATA_IDENTIFY, ".identify.bin"), (MediaTagType.BD_DI, ".di.bin"),
@@ -80,8 +83,11 @@ namespace DiscImageChef.DiscImages
string basepath;
bool differentTrackZeroSize;
string extension;
+ bool hasSubchannel;
ImageInfo imageInfo;
Dictionary mediaTags;
+ bool mode2;
+ bool rawCompactDisc;
IFilter rawImageFilter;
FileStream writingStream;
@@ -128,17 +134,20 @@ namespace DiscImageChef.DiscImages
Track trk = new Track
{
- TrackBytesPerSector = (int)imageInfo.SectorSize,
+ TrackBytesPerSector = rawCompactDisc ? (mode2 ? 2336 : 2048) : (int)imageInfo.SectorSize,
TrackEndSector = imageInfo.Sectors - 1,
TrackFile = rawImageFilter.GetFilename(),
TrackFileOffset = 0,
TrackFileType = "BINARY",
- TrackRawBytesPerSector = (int)imageInfo.SectorSize,
+ TrackRawBytesPerSector = rawCompactDisc ? 2352 : (int)imageInfo.SectorSize,
TrackSequence = 1,
TrackStartSector = 0,
- TrackSubchannelType = TrackSubchannelType.None,
- TrackType = TrackType.Data,
- TrackSession = 1
+ TrackSubchannelType =
+ hasSubchannel ? TrackSubchannelType.RawInterleaved : TrackSubchannelType.None,
+ TrackType = rawCompactDisc
+ ? (mode2 ? TrackType.CdMode2Formless : TrackType.CdMode1)
+ : TrackType.Data,
+ TrackSession = 1
};
List