From 09bd6baa61ca02208d475d8c1852e79855538bf5 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 10 Mar 2020 19:31:09 +0000 Subject: [PATCH] Add decoder for mode 0 and mode 1 data from raw cd sectors. --- CD/Sector.cs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CD/Sector.cs b/CD/Sector.cs index a223e6ab4..266ed44a0 100644 --- a/CD/Sector.cs +++ b/CD/Sector.cs @@ -207,6 +207,31 @@ namespace Aaru.Decoders.CD return scrambled; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte[] GetUserData(byte[] data) + { + switch(data.Length) + { + case 2352 when data[0] != 0x00 || data[1] != 0xFF || data[2] != 0xFF || data[3] != 0xFF || + data[4] != 0xFF || data[5] != 0xFF || data[6] != 0xFF || data[7] != 0xFF || + data[8] != 0xFF || data[9] != 0xFF || data[10] != 0xFF || data[11] != 0x00: return data; + case 2352: + switch(data[15]) + { + case 0: return new byte[2048]; + case 1: + byte[] sector = new byte[2048]; + Array.Copy(data, 16, sector, 0, 2048); + + return sector; + case 2: return GetUserDataFromMode2(data); + default: return data; + } + case 2336: return GetUserDataFromMode2(data); + default: return data; + } + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static byte[] GetUserDataFromMode2(byte[] data) {