diff --git a/Aaru.Images/CDRWin/Properties.cs b/Aaru.Images/CDRWin/Properties.cs index 608923041..c5cb1ec31 100644 --- a/Aaru.Images/CDRWin/Properties.cs +++ b/Aaru.Images/CDRWin/Properties.cs @@ -55,6 +55,7 @@ namespace Aaru.DiscImages List tracks = new List(); ulong previousStartSector = 0; + string previousTrackFile = ""; foreach(CdrWinTrack cdrTrack in _discImage.Tracks) { @@ -70,13 +71,20 @@ namespace Aaru.DiscImages TrackFileType = cdrTrack.TrackFile.FileType, TrackRawBytesPerSector = cdrTrack.Bps, TrackBytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.TrackType) }; + + if (previousTrackFile == aaruTrack.TrackFile || previousTrackFile == "") + { + if(!cdrTrack.Indexes.TryGetValue(0, out aaruTrack.TrackStartSector)) + if(!cdrTrack.Indexes.TryGetValue(1, out aaruTrack.TrackStartSector)) + aaruTrack.TrackStartSector += previousStartSector; + } + else + aaruTrack.TrackStartSector += previousStartSector; + + previousTrackFile = cdrTrack.TrackFile.DataFilter.GetFilename(); aaruTrack.TrackEndSector = (aaruTrack.TrackStartSector + cdrTrack.Sectors) - 1; - if(!cdrTrack.Indexes.TryGetValue(0, out aaruTrack.TrackStartSector)) - if(!cdrTrack.Indexes.TryGetValue(1, out aaruTrack.TrackStartSector)) - aaruTrack.TrackStartSector = previousStartSector; - if(cdrTrack.TrackType == CDRWIN_TRACK_TYPE_CDG) { aaruTrack.TrackSubchannelFilter = cdrTrack.TrackFile.DataFilter;