diff --git a/Aaru.Decoders/Xbox/SS.cs b/Aaru.Decoders/Xbox/SS.cs
index 98871aa27..b2c08dc09 100644
--- a/Aaru.Decoders/Xbox/SS.cs
+++ b/Aaru.Decoders/Xbox/SS.cs
@@ -77,7 +77,9 @@ public static class SS
Unknown8 = new byte[16],
Unknown9 = new byte[16],
Unknown10 = new byte[303],
- Unknown11 = new byte[104],
+ Unknown11 = new byte[103],
+ RangeVersion = response[1631],
+ RangeCount = response[1632],
Extents = new SecuritySectorExtent[23],
ExtentsCopy = new SecuritySectorExtent[23]
};
@@ -110,7 +112,7 @@ public static class SS
Array.Copy(response, 1120, ss.Unknown8, 0, 16);
Array.Copy(response, 1180, ss.Unknown9, 0, 16);
Array.Copy(response, 1208, ss.Unknown10, 0, 303);
- Array.Copy(response, 1528, ss.Unknown11, 0, 104);
+ Array.Copy(response, 1528, ss.Unknown11, 0, 103);
for(var i = 0; i < 23; i++)
{
@@ -354,60 +356,64 @@ public static class SS
public struct SecuritySector
{
/// Byte 0, bits 7 to 4 Disk category field
- public DiskCategory DiskCategory;
+ public DiskCategory DiskCategory;
/// Byte 0, bits 3 to 0 Media version
- public byte PartVersion;
+ public byte PartVersion;
/// Byte 1, bits 7 to 4 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values
- public DVDSize DiscSize;
+ public DVDSize DiscSize;
/// Byte 1, bits 3 to 0 Maximum data rate
- public MaximumRateField MaximumRate;
+ public MaximumRateField MaximumRate;
/// Byte 2, bit 7 Reserved
- public bool Reserved3;
+ public bool Reserved3;
/// Byte 2, bits 6 to 5 Number of layers
- public byte Layers;
+ public byte Layers;
/// Byte 2, bit 4 Track path
- public bool TrackPath;
+ public bool TrackPath;
/// Byte 2, bits 3 to 0 Layer type
public LayerTypeFieldMask LayerType;
/// Byte 3, bits 7 to 4 Linear density field
public LinearDensityField LinearDensity;
/// Byte 3, bits 3 to 0 Track density field
- public TrackDensityField TrackDensity;
+ public TrackDensityField TrackDensity;
/// Bytes 4 to 7 PSN where Data Area starts
- public uint DataAreaStartPSN;
+ public uint DataAreaStartPSN;
/// Bytes 8 to 11 PSN where Data Area ends
- public uint DataAreaEndPSN;
+ public uint DataAreaEndPSN;
/// Bytes 12 to 15 PSN where Data Area ends in Layer 0
- public uint Layer0EndPSN;
+ public uint Layer0EndPSN;
/// Byte 27 Always 0x06 on XGD3
- public byte Unknown1;
+ public byte Unknown1;
/// Bytes 256 to 283 Unknown, XGD2 and XGD3
- public byte[] Unknown2;
+ public byte[] Unknown2;
/// Bytes 284 to 719 Unknown, XGD3
- public byte[] Unknown3;
+ public byte[] Unknown3;
/// Bytes 720 to 723 Unknown
- public byte[] Unknown4;
+ public byte[] Unknown4;
/// Bytes 724 to 767 Unknown, XGD3
- public byte[] Unknown5;
+ public byte[] Unknown5;
/// Byte 768 Version of challenge table
- public byte ChallengeTableVersion;
+ public byte ChallengeTableVersion;
/// Byte 769 Number of challenge entries
- public byte NoChallengeEntries;
+ public byte NoChallengeEntries;
/// Bytes 770 to 1022 Unknown
- public ChallengeEntry[] ChallengeEntries;
+ public ChallengeEntry[] ChallengeEntries;
/// Byte 1023 Unknown
- public byte Unknown6;
+ public byte Unknown6;
/// Bytes 1052 to 1099 Unknown, XGD1 only
- public byte[] Unknown7;
+ public byte[] Unknown7;
/// Bytes 1120 to 1135 Unknown, XGD2 and XGD3
- public byte[] Unknown8;
+ public byte[] Unknown8;
/// Bytes 1180 to 1195 Unknown
- public byte[] Unknown9;
+ public byte[] Unknown9;
/// Bytes 1208 to 1511 Unknown
- public byte[] Unknown10;
- /// Bytes 1528 to 1632
- public byte[] Unknown11;
+ public byte[] Unknown10;
+ /// Bytes 1528 to 1630
+ public byte[] Unknown11;
+ /// Byte 1631 Range version
+ public byte RangeVersion;
+ /// Byte 1632 Number of valid security extent ranges
+ public byte RangeCount;
/// Bytes 1633 to 1839 Security extents, 23 entries of 9 bytes
public SecuritySectorExtent[] Extents;
/// Bytes 1840 to 2047 Copy of the security extents, 23 entries of 9 bytes