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[]