diff --git a/.idea/.idea.Aaru/.idea/contentModel.xml b/.idea/.idea.Aaru/.idea/contentModel.xml
index 1f590344b..c9f617210 100644
--- a/.idea/.idea.Aaru/.idea/contentModel.xml
+++ b/.idea/.idea.Aaru/.idea/contentModel.xml
@@ -16,16 +16,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -175,7 +165,14 @@
-
+
+
+
+
+
+
+
+
diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes
index 6404d3e08..875d94716 160000
--- a/Aaru.CommonTypes
+++ b/Aaru.CommonTypes
@@ -1 +1 @@
-Subproject commit 6404d3e08811f3cc94c56dc815cf6acd55d16b5c
+Subproject commit 875d94716658481ab0b267b36d04fff9d33e260f
diff --git a/Aaru.Core/Devices/Dumping/ATA.cs b/Aaru.Core/Devices/Dumping/ATA.cs
index a11fc943c..fb434c6de 100644
--- a/Aaru.Core/Devices/Dumping/ATA.cs
+++ b/Aaru.Core/Devices/Dumping/ATA.cs
@@ -217,7 +217,7 @@ namespace Aaru.Core.Devices.Dumping
}
mediaType = MediaTypeFromDevice.GetFromAta(_dev.Manufacturer, _dev.Model, _dev.IsRemovable,
- _dev.IsCompactFlash, _dev.IsPcmcia, blocks, blockSize);
+ _dev.IsCompactFlash, _dev.IsPcmcia, blocks);
ret = _outputPlugin.Create(_outputPath, mediaType, _formatOptions, blocks, blockSize);
diff --git a/Aaru.Core/Media/Detection/MMC.cs b/Aaru.Core/Media/Detection/MMC.cs
index ebfcf1810..d76c3d32b 100644
--- a/Aaru.Core/Media/Detection/MMC.cs
+++ b/Aaru.Core/Media/Detection/MMC.cs
@@ -321,10 +321,12 @@ namespace Aaru.Core.Media.Detection
switch(a0Track.PSEC)
{
case 0x10:
+ AaruConsole.DebugWriteLine("Media detection", "TOC says disc type is CD-i.");
mediaType = MediaType.CDI;
break;
case 0x20:
+ AaruConsole.DebugWriteLine("Media detection", "TOC says disc type is CD-ROM XA.");
mediaType = MediaType.CDROMXA;
break;
@@ -366,22 +368,42 @@ namespace Aaru.Core.Media.Detection
hasAudioTrack &&
allFirstSessionTracksAreAudio &&
sessions == 2)
+ {
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has audio and data tracks, two sessions, and all data tracks are in second session, setting as CD+.");
+
mediaType = MediaType.CDPLUS;
+ }
if(!hasDataTrack &&
hasAudioTrack &&
sessions == 1)
+ {
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has only audio tracks in a single session, setting as CD Digital Audio.");
+
mediaType = MediaType.CDDA;
+ }
if(hasDataTrack &&
!hasAudioTrack &&
sessions == 1)
+ {
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has only data tracks in a single session, setting as CD-ROM.");
+
mediaType = MediaType.CDROM;
+ }
if(hasVideoTrack &&
!hasDataTrack &&
sessions == 1)
+ {
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has video tracks in a single session, setting as CD Video.");
+
mediaType = MediaType.CDV;
+ }
}
if((mediaType == MediaType.CD || mediaType == MediaType.CDROM) && hasDataTrack)
@@ -418,6 +440,9 @@ namespace Aaru.Core.Media.Detection
cmdBuf[11] == 0x00 &&
cmdBuf[15] == 0x02)
{
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has a mode 2 data track, setting as CD-ROM XA.");
+
mediaType = MediaType.CDROMXA;
break;
@@ -436,7 +461,7 @@ namespace Aaru.Core.Media.Detection
uint firstSectorSecondSessionFirstTrack =
(uint)(((secondSessionFirstTrackTrack.PHOUR * 3600 * 75) +
- (secondSessionFirstTrackTrack.PMIN * 60 * 75) + (secondSessionFirstTrackTrack.PSEC * 75) +
+ (secondSessionFirstTrackTrack.PMIN * 60 * 75) + (secondSessionFirstTrackTrack.PSEC * 75) +
secondSessionFirstTrackTrack.PFRAME) - 150);
sense = dev.ReadCd(out cmdBuf, out _, firstSectorSecondSessionFirstTrack, 2352, 1,
@@ -513,7 +538,7 @@ namespace Aaru.Core.Media.Detection
if(firstTrack.POINT == 1)
{
uint firstTrackSector = (uint)(((firstTrack.PHOUR * 3600 * 75) + (firstTrack.PMIN * 60 * 75) +
- (firstTrack.PSEC * 75) + firstTrack.PFRAME) - 150);
+ (firstTrack.PSEC * 75) + firstTrack.PFRAME) - 150);
// Check for hidden data before start of track 1
if(firstTrackSector > 0)
@@ -539,6 +564,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDIREADY;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has a hidden CD-i track in track 1's pregap, setting as CD-i Ready.");
+
return;
}
}
@@ -583,6 +611,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDIREADY;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Disc has a hidden CD-i track in track 1's pregap, setting as CD-i Ready.");
+
return;
}
}
@@ -1121,6 +1152,9 @@ namespace Aaru.Core.Media.Detection
case "PHOTO_CD":
mediaType = MediaType.PCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Photo CD description file, setting disc type to Photo CD.");
+
return;
}
}
@@ -1170,6 +1204,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.MEGACD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Mega/Sega CD IP.BIN, setting disc type to Mega CD.");
+
return;
}
@@ -1177,6 +1214,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.SATURNCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sega Saturn IP.BIN, setting disc type to Saturn CD.");
+
return;
}
@@ -1185,6 +1225,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.GDROM;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sega Dreamcast IP.BIN, setting disc type to GD-ROM.");
+
return;
}
@@ -1208,6 +1251,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.PS2CD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sony PlayStation 2 boot sectors, setting disc type to PS2 CD.");
+
return;
}
}
@@ -1221,6 +1267,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.ThreeDO;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Opera filesystem, setting disc type to 3DO.");
+
return;
}
@@ -1228,6 +1277,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.FMTOWNS;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found FM-Towns boot, setting disc type to FM-Towns.");
+
return;
}
}
@@ -1246,6 +1298,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.Playdia;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Playdia copyright, setting disc type to Playdia.");
+
return;
}
}
@@ -1259,6 +1314,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.SuperCDROM2;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found PC-Engine CD signature, setting disc type to Super CD-ROM².");
+
return;
}
}
@@ -1272,6 +1330,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.PCFX;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found PC-FX copyright, setting disc type to PC-FX.");
+
return;
}
}
@@ -1289,6 +1350,9 @@ namespace Aaru.Core.Media.Detection
mediaType = MediaType.JaguarCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Atari signature, setting disc type to Jaguar CD.");
+
break;
}
}
@@ -1303,6 +1367,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.MilCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sega Dreamcast IP.BIN on second session, setting disc type to MilCD.");
+
return;
}
}
@@ -1313,6 +1380,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.VideoNowColor;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found VideoNow! Color frame, setting disc type to VideoNow Color.");
+
return;
}
@@ -1349,6 +1419,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDEG;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found enhanced graphics RW packet, setting disc type to CD+EG.");
+
return;
}
@@ -1356,6 +1429,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDG;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found graphics RW packet, setting disc type to CD+G.");
+
return;
}
@@ -1363,6 +1439,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDMIDI;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found MIDI RW packet, setting disc type to CD+MIDI.");
+
return;
}
}
@@ -1505,6 +1584,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CD32;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found CD32.TM file in root, setting disc type to Amiga CD32.");
+
return;
}
@@ -1512,6 +1594,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.CDTV;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found CDTV.TM file in root, setting disc type to Commodore CDTV.");
+
return;
}
@@ -1649,6 +1734,9 @@ namespace Aaru.Core.Media.Detection
{
mediaType = MediaType.NeoGeoCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found correct IPL.TXT file in root, setting disc type to Neo Geo CD.");
+
return;
}
}
@@ -1725,11 +1813,17 @@ namespace Aaru.Core.Media.Detection
case "VIDEO_CD":
mediaType = MediaType.VCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Video CD description file, setting disc type to Video CD.");
+
return;
case "SUPERVCD":
case "HQ-VCD":
mediaType = MediaType.SVCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Super Video CD description file, setting disc type to Super Video CD.");
+
break;
}
}
@@ -1805,6 +1899,9 @@ namespace Aaru.Core.Media.Detection
case "PHOTO_CD":
mediaType = MediaType.PCD;
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Photo CD description file, setting disc type to Photo CD.");
+
return;
}
}
@@ -1837,7 +1934,12 @@ namespace Aaru.Core.Media.Detection
if(ps2BootSectorsHash == PS2_PAL_HASH ||
ps2BootSectorsHash == PS2_NTSC_HASH ||
ps2BootSectorsHash == PS2_JAPANESE_HASH)
+ {
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sony PlayStation 2 boot sectors, setting disc type to PS2 DVD.");
+
mediaType = MediaType.PS2DVD;
+ }
}
if(sector1 != null)
@@ -1849,10 +1951,16 @@ namespace Aaru.Core.Media.Detection
switch(mediaType)
{
case MediaType.BDROM:
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sony PlayStation 3 boot sectors, setting disc type to PS3 Blu-ray.");
+
mediaType = MediaType.PS3BD;
break;
case MediaType.DVDROM:
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sony PlayStation 3 boot sectors, setting disc type to PS3 DVD.");
+
mediaType = MediaType.PS3DVD;
break;
@@ -1863,7 +1971,12 @@ namespace Aaru.Core.Media.Detection
if(tmp.SequenceEqual(_ps4Id) &&
mediaType == MediaType.BDROM)
+ {
mediaType = MediaType.PS4BD;
+
+ AaruConsole.DebugWriteLine("Media detection",
+ "Found Sony PlayStation 4 boot sectors, setting disc type to PS4 Blu-ray.");
+ }
}
break;
diff --git a/Aaru.sln.DotSettings b/Aaru.sln.DotSettings
index d2c72f5d8..3c6cfa19f 100644
--- a/Aaru.sln.DotSettings
+++ b/Aaru.sln.DotSettings
@@ -194,6 +194,7 @@
True
True
True
+ True
True
True
True
@@ -231,7 +232,10 @@
True
True
True
+ True
+ True
True
+ True
True
True
True
@@ -241,6 +245,7 @@
True
True
True
+ True
True
True
True
@@ -296,10 +301,13 @@
True
True
True
+ True
True
True
True
True
+ True
+ True
True
True
True
diff --git a/Aaru/Commands/Device/Info.cs b/Aaru/Commands/Device/Info.cs
index d6ba44f08..fe9f0258f 100644
--- a/Aaru/Commands/Device/Info.cs
+++ b/Aaru/Commands/Device/Info.cs
@@ -323,8 +323,7 @@ namespace Aaru.Commands.Device
bool removable = ATAID.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Removable);
MediaType mediaType = MediaTypeFromDevice.GetFromAta(dev.Manufacturer, dev.Model, removable,
- dev.IsCompactFlash, dev.IsPcmcia, blocks,
- blockSize);
+ dev.IsCompactFlash, dev.IsPcmcia, blocks);
AaruConsole.WriteLine(removable ? "Media identified as {0}" : "Device identified as {0}",
mediaType);