diff --git a/.idea/.idea.Aaru/.idea/vcs.xml b/.idea/.idea.Aaru/.idea/vcs.xml
index 2d75da1c5..53b6d8915 100644
--- a/.idea/.idea.Aaru/.idea/vcs.xml
+++ b/.idea/.idea.Aaru/.idea/vcs.xml
@@ -5,13 +5,6 @@
-
-
-
diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes
index 727c9fbca..dd856a397 160000
--- a/Aaru.CommonTypes
+++ b/Aaru.CommonTypes
@@ -1 +1 @@
-Subproject commit 727c9fbca04385826692423ac45d7720e8a44a40
+Subproject commit dd856a397f5cbbaeddddf8f7914492ec64ef28bf
diff --git a/Aaru.Core/Devices/Dumping/MMC.cs b/Aaru.Core/Devices/Dumping/MMC.cs
index ca595d5e0..681943f59 100644
--- a/Aaru.Core/Devices/Dumping/MMC.cs
+++ b/Aaru.Core/Devices/Dumping/MMC.cs
@@ -46,9 +46,9 @@ using Aaru.Devices;
using Schemas;
using DDS = Aaru.Decoders.DVD.DDS;
using DMI = Aaru.Decoders.Xbox.DMI;
+using DVDDecryption = Aaru.Decryption.DVD.Dump;
using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
using Spare = Aaru.Decoders.DVD.Spare;
-using DVDDecryption = Aaru.Decryption.DVD.Dump;
// ReSharper disable JoinDeclarationAndInitializer
@@ -768,6 +768,7 @@ namespace Aaru.Core.Devices.Dumping
case MediaType.BDROM:
case MediaType.BDRXL:
case MediaType.BDREXL:
+ case MediaType.UHDBD:
_dumpLog.WriteLine("Reading Disc Information.");
sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
@@ -800,6 +801,7 @@ namespace Aaru.Core.Devices.Dumping
{
#region BD-ROM only
case MediaType.BDROM:
+ case MediaType.UHDBD:
_dumpLog.WriteLine("Reading Burst Cutting Area.");
sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
diff --git a/Aaru.Core/Media/Detection/MMC.cs b/Aaru.Core/Media/Detection/MMC.cs
index ef1ff9934..0d73dda5f 100644
--- a/Aaru.Core/Media/Detection/MMC.cs
+++ b/Aaru.Core/Media/Detection/MMC.cs
@@ -1003,8 +1003,10 @@ namespace Aaru.Core.Media.Detection
case MediaType.DVDROM:
case MediaType.HDDVDROM:
case MediaType.BDROM:
+ case MediaType.UHDBD:
case MediaType.Unknown:
- if(mediaType == MediaType.BDROM)
+ if(mediaType == MediaType.BDROM ||
+ mediaType == MediaType.UHDBD)
{
sense = dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
MmcDiscStructureFormat.DiscInformation, 0, dev.Timeout, out _);
@@ -1112,11 +1114,11 @@ namespace Aaru.Core.Media.Detection
}
}
- if(mediaType == MediaType.DVDROM)
+ if(mediaType == MediaType.DVDROM)
{
sense = dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0,
- MmcDiscStructureFormat.DiscManufacturingInformation, 0, dev.Timeout,
- out _);
+ MmcDiscStructureFormat.DiscManufacturingInformation, 0,
+ dev.Timeout, out _);
if(!sense)
{
@@ -1129,9 +1131,9 @@ namespace Aaru.Core.Media.Detection
return;
}
+
if(DMI.IsXbox360(cmdBuf))
{
-
// All XGD3 all have the same number of blocks
if(blocks == 25063 || // Locked (or non compatible drive)
blocks == 4229664 || // Xtreme unlock
@@ -1141,15 +1143,20 @@ namespace Aaru.Core.Media.Detection
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 3 (XGD3).");
mediaType = MediaType.XGD3;
+
return;
}
+
AaruConsole.DebugWriteLine("Media detection",
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 2 (XGD2).");
+
mediaType = MediaType.XGD2;
- return;
+
+ return;
}
}
}
+
break;
// Recordables will be checked for PhotoCD only
@@ -2232,6 +2239,7 @@ namespace Aaru.Core.Media.Detection
case MediaType.DVDROM:
case MediaType.HDDVDROM:
case MediaType.BDROM:
+ case MediaType.UHDBD:
case MediaType.Unknown:
// TODO: Nuon requires reading the filesystem, searching for a file called "/NUON/NUON.RUN"
if(ps2BootSectors != null &&
@@ -2302,12 +2310,24 @@ namespace Aaru.Core.Media.Detection
{
string blurayType = StringHandlers.CToString(blurayDi?.Units[0].DiscTypeIdentifier);
- if(blurayType == "XG4")
+ switch(blurayType)
{
- AaruConsole.DebugWriteLine("Media detection",
- "Blu-ray type set to \"XG4\", setting disc type to Xbox One Disc (XGD4).");
+ case "XG4":
+ AaruConsole.DebugWriteLine("Media detection",
+ "Blu-ray type set to \"XG4\", setting disc type to Xbox One Disc (XGD4).");
- mediaType = MediaType.XGD4;
+ mediaType = MediaType.XGD4;
+
+ break;
+
+ // TODO: PS5
+ case "BDU":
+ AaruConsole.DebugWriteLine("Media detection",
+ "Blu-ray type set to \"BDU\", setting disc type to Ultra HD Blu-ray.");
+
+ mediaType = MediaType.UHDBD;
+
+ break;
}
}
diff --git a/Aaru.Core/Media/Info/ScsiInfo.cs b/Aaru.Core/Media/Info/ScsiInfo.cs
index a3a5a5447..169fd8dce 100644
--- a/Aaru.Core/Media/Info/ScsiInfo.cs
+++ b/Aaru.Core/Media/Info/ScsiInfo.cs
@@ -45,12 +45,11 @@ using Aaru.Decoders.SCSI;
using Aaru.Decoders.SCSI.MMC;
using Aaru.Decoders.SCSI.SSC;
using Aaru.Decoders.Xbox;
-using Aaru.Decryption.DVD;
using Aaru.Devices;
using DeviceInfo = Aaru.Core.Devices.Info.DeviceInfo;
using DMI = Aaru.Decoders.Xbox.DMI;
-using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
using DVDDecryption = Aaru.Decryption.DVD.Dump;
+using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
namespace Aaru.Core.Media.Info
{
@@ -714,7 +713,7 @@ namespace Aaru.Core.Media.Info
#endregion DVD-R and HD DVD-R
}
- var dvdDecrypt = new Dump(dev);
+ var dvdDecrypt = new DVDDecryption(dev);
sense = dvdDecrypt.ReadBusKey(out cmdBuf, out senseBuf, CopyrightType.CSS, dev.Timeout, out _);
if(!sense)
@@ -724,7 +723,7 @@ namespace Aaru.Core.Media.Info
if(sense)
AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Disc Key\n{0}",
- Decoders.SCSI.Sense.PrettifySense(senseBuf));
+ Sense.PrettifySense(senseBuf));
else
DvdDiscKey = cmdBuf;
@@ -734,7 +733,7 @@ namespace Aaru.Core.Media.Info
if(sense)
AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Sector CMI\n{0}",
- Decoders.SCSI.Sense.PrettifySense(senseBuf));
+ Sense.PrettifySense(senseBuf));
else
DvdSectorCmi = cmdBuf;
}
@@ -968,6 +967,7 @@ namespace Aaru.Core.Media.Info
case MediaType.BDR:
case MediaType.BDRE:
case MediaType.BDROM:
+ case MediaType.UHDBD:
case MediaType.BDRXL:
case MediaType.BDREXL:
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.Bd, 0, 0,
@@ -996,6 +996,7 @@ namespace Aaru.Core.Media.Info
{
#region BD-ROM only
case MediaType.BDROM:
+ case MediaType.UHDBD:
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.Bd, 0, 0,
MmcDiscStructureFormat.BdBurstCuttingArea, 0, dev.Timeout, out _);
diff --git a/Aaru.Images/AaruFormat/Helpers.cs b/Aaru.Images/AaruFormat/Helpers.cs
index 4677ded71..37a74136b 100644
--- a/Aaru.Images/AaruFormat/Helpers.cs
+++ b/Aaru.Images/AaruFormat/Helpers.cs
@@ -183,6 +183,7 @@ namespace Aaru.DiscImages
case MediaType.HDDVDRDL:
case MediaType.HDDVDRWDL:
case MediaType.BDROM:
+ case MediaType.UHDBD:
case MediaType.BDR:
case MediaType.BDRE:
case MediaType.BDRXL:
diff --git a/Aaru.Images/Alcohol120/Properties.cs b/Aaru.Images/Alcohol120/Properties.cs
index f91eac4bb..8bb87a4c6 100644
--- a/Aaru.Images/Alcohol120/Properties.cs
+++ b/Aaru.Images/Alcohol120/Properties.cs
@@ -145,10 +145,10 @@ namespace Aaru.DiscImages
};
public IEnumerable SupportedMediaTypes => new[]
{
- MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.BDRXL, MediaType.CBHD,
- MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI, MediaType.CDMIDI,
- MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA, MediaType.CDRW,
- MediaType.CDV, MediaType.DVDDownload, MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW,
+ MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.UHDBD, MediaType.BDRXL,
+ MediaType.CBHD, MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI,
+ MediaType.CDMIDI, MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA,
+ MediaType.CDRW, MediaType.CDV, MediaType.DVDDownload, MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW,
MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM, MediaType.DVDRDL, MediaType.DVDROM, MediaType.DVDRW,
MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD, MediaType.DTSCD, MediaType.FVD, MediaType.HDDVDR,
MediaType.HDDVDRAM, MediaType.HDDVDRDL, MediaType.HDDVDROM, MediaType.HDDVDRW, MediaType.HDDVDRWDL,
diff --git a/Aaru.Images/CDRWin/Helpers.cs b/Aaru.Images/CDRWin/Helpers.cs
index aab177681..2aec298a0 100644
--- a/Aaru.Images/CDRWin/Helpers.cs
+++ b/Aaru.Images/CDRWin/Helpers.cs
@@ -145,7 +145,7 @@ namespace Aaru.DiscImages
}
static (byte minute, byte second, byte frame) LbaToMsf(ulong sector) =>
- ((byte)(sector / 75 / 60), (byte)((sector / 75) % 60), (byte)(sector % 75));
+ ((byte)(sector / 75 / 60), (byte)(sector / 75 % 60), (byte)(sector % 75));
static string GetTrackMode(Track track)
{
@@ -177,6 +177,7 @@ namespace Aaru.DiscImages
case MediaType.BDREXL:
case MediaType.BDRE: return CDRWIN_DISK_TYPE_BDRE;
case MediaType.BDROM:
+ case MediaType.UHDBD:
case MediaType.CBHD:
case MediaType.PS3BD:
case MediaType.PS4BD:
diff --git a/Aaru.Images/CDRWin/Properties.cs b/Aaru.Images/CDRWin/Properties.cs
index 5230f65ed..f34d9e6cd 100644
--- a/Aaru.Images/CDRWin/Properties.cs
+++ b/Aaru.Images/CDRWin/Properties.cs
@@ -198,19 +198,19 @@ namespace Aaru.DiscImages
};
public IEnumerable SupportedMediaTypes => new[]
{
- MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.BDRXL, MediaType.CBHD,
- MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI, MediaType.CDMIDI,
- MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA, MediaType.CDRW,
- MediaType.CDV, MediaType.DDCD, MediaType.DDCDR, MediaType.DDCDRW, MediaType.DVDDownload, MediaType.DVDPR,
- MediaType.DVDPRDL, MediaType.DVDPRW, MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM, MediaType.DVDRDL,
- MediaType.DVDROM, MediaType.DVDRW, MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD, MediaType.DTSCD,
- MediaType.FVD, MediaType.HDDVDR, MediaType.HDDVDRAM, MediaType.HDDVDRDL, MediaType.HDDVDROM,
- MediaType.HDDVDRW, MediaType.HDDVDRWDL, MediaType.HDVMD, MediaType.HVD, MediaType.JaguarCD,
- MediaType.MEGACD, MediaType.PS1CD, MediaType.PS2CD, MediaType.PS2DVD, MediaType.PS3BD, MediaType.PS3DVD,
- MediaType.PS4BD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD, MediaType.SATURNCD,
- MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD, MediaType.VCD,
- MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, MediaType.Nuon,
- MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD, MediaType.VideoNow,
+ MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.UHDBD, MediaType.BDRXL,
+ MediaType.CBHD, MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI,
+ MediaType.CDMIDI, MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA,
+ MediaType.CDRW, MediaType.CDV, MediaType.DDCD, MediaType.DDCDR, MediaType.DDCDRW, MediaType.DVDDownload,
+ MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW, MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM,
+ MediaType.DVDRDL, MediaType.DVDROM, MediaType.DVDRW, MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD,
+ MediaType.DTSCD, MediaType.FVD, MediaType.HDDVDR, MediaType.HDDVDRAM, MediaType.HDDVDRDL,
+ MediaType.HDDVDROM, MediaType.HDDVDRW, MediaType.HDDVDRWDL, MediaType.HDVMD, MediaType.HVD,
+ MediaType.JaguarCD, MediaType.MEGACD, MediaType.PS1CD, MediaType.PS2CD, MediaType.PS2DVD, MediaType.PS3BD,
+ MediaType.PS3DVD, MediaType.PS4BD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD,
+ MediaType.SATURNCD, MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD,
+ MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32,
+ MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD, MediaType.VideoNow,
MediaType.VideoNowColor, MediaType.VideoNowXp, MediaType.CVD, MediaType.PCD
};
public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => new[]