mirror of
https://github.com/aaru-dps/Aaru.Decoders.git
synced 2025-12-16 19:24:32 +00:00
Add support for XA interleaved files.
This commit is contained in:
12
CD/Sector.cs
12
CD/Sector.cs
@@ -208,7 +208,7 @@ namespace Aaru.Decoders.CD
|
|||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static byte[] GetUserData(byte[] data)
|
public static byte[] GetUserData(byte[] data, bool interleaved = false, byte fileNumber = 0)
|
||||||
{
|
{
|
||||||
switch(data.Length)
|
switch(data.Length)
|
||||||
{
|
{
|
||||||
@@ -224,16 +224,16 @@ namespace Aaru.Decoders.CD
|
|||||||
Array.Copy(data, 16, sector, 0, 2048);
|
Array.Copy(data, 16, sector, 0, 2048);
|
||||||
|
|
||||||
return sector;
|
return sector;
|
||||||
case 2: return GetUserDataFromMode2(data);
|
case 2: return GetUserDataFromMode2(data, interleaved, fileNumber);
|
||||||
default: return data;
|
default: return data;
|
||||||
}
|
}
|
||||||
case 2336: return GetUserDataFromMode2(data);
|
case 2336: return GetUserDataFromMode2(data, interleaved, fileNumber);
|
||||||
default: return data;
|
default: return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static byte[] GetUserDataFromMode2(byte[] data)
|
public static byte[] GetUserDataFromMode2(byte[] data, bool interleaved = false, byte fileNumber = 0)
|
||||||
{
|
{
|
||||||
if(data.Length != 2352 &&
|
if(data.Length != 2352 &&
|
||||||
data.Length != 2336)
|
data.Length != 2336)
|
||||||
@@ -261,6 +261,10 @@ namespace Aaru.Decoders.CD
|
|||||||
pos = 16;
|
pos = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is not the sector you are looking for
|
||||||
|
if(interleaved && data[pos] != fileNumber)
|
||||||
|
return null;
|
||||||
|
|
||||||
int len = (data[pos + 2] & 0x20) == 0x20 ? 2324 : 2048;
|
int len = (data[pos + 2] & 0x20) == 0x20 ? 2324 : 2048;
|
||||||
pos += 8;
|
pos += 8;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user