From da4545df1b133bcf7f4e369c77288a0a313f4583 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Wed, 9 Jun 2021 19:16:43 +0100 Subject: [PATCH] Fix processing MODE 2 sectors in DiscJuggler disc images. --- Aaru.Images/DiscJuggler/Read.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Aaru.Images/DiscJuggler/Read.cs b/Aaru.Images/DiscJuggler/Read.cs index 181bfadd1..21e958dcd 100644 --- a/Aaru.Images/DiscJuggler/Read.cs +++ b/Aaru.Images/DiscJuggler/Read.cs @@ -853,7 +853,7 @@ namespace Aaru.DiscImages { mode2 = true; sectorOffset = 0; - sectorSize = (uint)aaruTrack.TrackRawBytesPerSector; + sectorSize = 2336; sectorSkip = 0; } @@ -886,14 +886,18 @@ namespace Aaru.DiscImages if(mode2) { - var mode2Ms = new MemoryStream((int)((sectorSize + sectorSkip) * length)); + var mode2Ms = new MemoryStream((int)(sectorSize * length)); + buffer = new byte[(aaruTrack.TrackRawBytesPerSector + sectorSkip) * length]; _imageStream.Read(buffer, 0, buffer.Length); for(int i = 0; i < length; i++) { - byte[] sector = new byte[sectorSize]; - Array.Copy(buffer, (sectorSize + sectorSkip) * i, sector, 0, sectorSize); + byte[] sector = new byte[aaruTrack.TrackRawBytesPerSector]; + + Array.Copy(buffer, (aaruTrack.TrackRawBytesPerSector + sectorSkip) * i, sector, 0, + aaruTrack.TrackRawBytesPerSector); + sector = Sector.GetUserDataFromMode2(sector); mode2Ms.Write(sector, 0, sector.Length); }