From 60eff0fda8b6338b1d76e174fcc31b2d5afe09f1 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 27 Jul 2018 21:48:40 +0100 Subject: [PATCH] Add support for CD-i Ready in dicformat. --- DiscImageChef.DiscImages/DiscImageChef/Helpers.cs | 1 + DiscImageChef.DiscImages/DiscImageChef/Read.cs | 6 +++--- DiscImageChef.DiscImages/DiscImageChef/Write.cs | 8 ++++---- templates/dicformat.bt | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs b/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs index 107c3ce9d..d99a37cad 100644 --- a/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs +++ b/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs @@ -133,6 +133,7 @@ namespace DiscImageChef.DiscImages case MediaType.CDG: case MediaType.CDEG: case MediaType.CDI: + case MediaType.CDIREADY: case MediaType.CDROM: case MediaType.CDROMXA: case MediaType.CDPLUS: diff --git a/DiscImageChef.DiscImages/DiscImageChef/Read.cs b/DiscImageChef.DiscImages/DiscImageChef/Read.cs index 2278e8045..c91acb8c1 100644 --- a/DiscImageChef.DiscImages/DiscImageChef/Read.cs +++ b/DiscImageChef.DiscImages/DiscImageChef/Read.cs @@ -1017,7 +1017,7 @@ namespace DiscImageChef.DiscImages { Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && sectorAddress <= t.TrackEndSector); - if(trk.TrackSequence == 0) + if(trk.TrackSequence == 0 && trk.TrackStartSector == 0 && trk.TrackEndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); @@ -1230,7 +1230,7 @@ namespace DiscImageChef.DiscImages case XmlMediaType.OpticalDisc: Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && sectorAddress <= t.TrackEndSector); - if(trk.TrackSequence == 0) + if(trk.TrackSequence == 0 && trk.TrackStartSector == 0 && trk.TrackEndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); @@ -1296,7 +1296,7 @@ namespace DiscImageChef.DiscImages case XmlMediaType.OpticalDisc: Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && sectorAddress <= t.TrackEndSector); - if(trk.TrackSequence == 0) + if(trk.TrackSequence == 0 && trk.TrackStartSector == 0 && trk.TrackEndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); diff --git a/DiscImageChef.DiscImages/DiscImageChef/Write.cs b/DiscImageChef.DiscImages/DiscImageChef/Write.cs index 6f724659f..0f82b3fc2 100644 --- a/DiscImageChef.DiscImages/DiscImageChef/Write.cs +++ b/DiscImageChef.DiscImages/DiscImageChef/Write.cs @@ -809,7 +809,7 @@ namespace DiscImageChef.DiscImages { trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && sectorAddress <= t.TrackEndSector); - if(trk.TrackSequence == 0) + if(trk.TrackSequence == 0 && trk.TrackStartSector == 0 && trk.TrackEndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); } @@ -987,7 +987,7 @@ namespace DiscImageChef.DiscImages Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && sectorAddress <= trk.TrackEndSector); - if(track.TrackSequence == 0) + if(track.TrackSequence == 0 && track.TrackStartSector == 0 && track.TrackEndSector == 0) { ErrorMessage = $"Can't found track containing {sectorAddress}"; return false; @@ -1152,7 +1152,7 @@ namespace DiscImageChef.DiscImages Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && sectorAddress <= trk.TrackEndSector); - if(track.TrackSequence == 0) + if(track.TrackSequence == 0 && track.TrackStartSector == 0 && track.TrackEndSector == 0) { ErrorMessage = $"Can't found track containing {sectorAddress}"; return false; @@ -2420,7 +2420,7 @@ namespace DiscImageChef.DiscImages track = Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && sectorAddress <= trk.TrackEndSector); - if(track.TrackSequence == 0) + if(track.TrackSequence == 0 && track.TrackStartSector == 0 && track.TrackEndSector == 0) { ErrorMessage = $"Can't found track containing {sectorAddress}"; return false; diff --git a/templates/dicformat.bt b/templates/dicformat.bt index 25134d58f..36645c254 100644 --- a/templates/dicformat.bt +++ b/templates/dicformat.bt @@ -47,6 +47,7 @@ enum MediaType CDV = 31, PD650 = 32, PD650_WORM = 33, + CDIREADY = 34, DVDROM = 40, DVDR = 41,