mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix reading MODE 2 sectors in all CD images, when they interleave subchannel data. Fixes #229.
This commit is contained in:
@@ -808,6 +808,10 @@ namespace DiscImageChef.DiscImages
|
||||
}
|
||||
|
||||
case AlcoholTrackMode.Mode2:
|
||||
case AlcoholTrackMode.Mode2F1:
|
||||
case AlcoholTrackMode.Mode2F1Alt:
|
||||
case AlcoholTrackMode.Mode2F2:
|
||||
case AlcoholTrackMode.Mode2F2Alt:
|
||||
{
|
||||
mode2 = true;
|
||||
sectorOffset = 0;
|
||||
@@ -817,26 +821,6 @@ namespace DiscImageChef.DiscImages
|
||||
break;
|
||||
}
|
||||
|
||||
case AlcoholTrackMode.Mode2F1:
|
||||
case AlcoholTrackMode.Mode2F1Alt:
|
||||
{
|
||||
sectorOffset = 24;
|
||||
sectorSize = 2048;
|
||||
sectorSkip = 280;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case AlcoholTrackMode.Mode2F2:
|
||||
case AlcoholTrackMode.Mode2F2Alt:
|
||||
{
|
||||
sectorOffset = 24;
|
||||
sectorSize = 2324;
|
||||
sectorSkip = 4;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case AlcoholTrackMode.Audio:
|
||||
{
|
||||
sectorOffset = 0;
|
||||
@@ -884,12 +868,12 @@ namespace DiscImageChef.DiscImages
|
||||
{
|
||||
var mode2Ms = new MemoryStream((int)(sectorSize * length));
|
||||
|
||||
buffer = br.ReadBytes((int)(sectorSize * length));
|
||||
buffer = br.ReadBytes((int)((sectorSize + sectorSkip) * length));
|
||||
|
||||
for(int i = 0; i < length; i++)
|
||||
{
|
||||
byte[] sector = new byte[sectorSize];
|
||||
Array.Copy(buffer, sectorSize * i, sector, 0, sectorSize);
|
||||
Array.Copy(buffer, (sectorSize + sectorSkip) * i, sector, 0, sectorSize);
|
||||
sector = Sector.GetUserDataFromMode2(sector);
|
||||
mode2Ms.Write(sector, 0, sector.Length);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user