mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Invert 'if' statements to reduce nesting.
This commit is contained in:
Submodule Aaru.CommonTypes updated: a9fdbe5585...3653864128
@@ -842,8 +842,9 @@ public sealed class Checksum
|
|||||||
dataChecksums.Add(chk);
|
dataChecksums.Add(chk);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(enabled.HasFlag(EnableChecksum.Fletcher32))
|
if(!enabled.HasFlag(EnableChecksum.Fletcher32))
|
||||||
{
|
return dataChecksums;
|
||||||
|
|
||||||
chk = new ChecksumType
|
chk = new ChecksumType
|
||||||
{
|
{
|
||||||
type = ChecksumTypeType.fletcher32,
|
type = ChecksumTypeType.fletcher32,
|
||||||
@@ -851,7 +852,6 @@ public sealed class Checksum
|
|||||||
};
|
};
|
||||||
|
|
||||||
dataChecksums.Add(chk);
|
dataChecksums.Add(chk);
|
||||||
}
|
|
||||||
|
|
||||||
return dataChecksums;
|
return dataChecksums;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,13 +179,13 @@ public partial class Dump
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tmp.SequenceEqual(_gbaExtension))
|
if(!tmp.SequenceEqual(_gbaExtension))
|
||||||
{
|
continue;
|
||||||
|
|
||||||
gbaFound = true;
|
gbaFound = true;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(!sfcFound &&
|
if(!sfcFound &&
|
||||||
!genesisFound &&
|
!genesisFound &&
|
||||||
|
|||||||
@@ -128,8 +128,9 @@ partial class Dump
|
|||||||
bool tmpSense = dvdDecrypt.ReadTitleKey(out tmpBuf, out _, DvdCssKeyClass.DvdCssCppmOrCprm,
|
bool tmpSense = dvdDecrypt.ReadTitleKey(out tmpBuf, out _, DvdCssKeyClass.DvdCssCppmOrCprm,
|
||||||
i + j, _dev.Timeout, out _);
|
i + j, _dev.Timeout, out _);
|
||||||
|
|
||||||
if(!tmpSense)
|
if(tmpSense)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
CSS_CPRM.TitleKey? titleKey = CSS.DecodeTitleKey(tmpBuf, dvdDecrypt.BusKey);
|
CSS_CPRM.TitleKey? titleKey = CSS.DecodeTitleKey(tmpBuf, dvdDecrypt.BusKey);
|
||||||
|
|
||||||
if(titleKey.HasValue)
|
if(titleKey.HasValue)
|
||||||
@@ -184,7 +185,6 @@ partial class Dump
|
|||||||
CSS.DecryptTitleKey(0, discKey, titleKey.Value.Key, out tmpBuf);
|
CSS.DecryptTitleKey(0, discKey, titleKey.Value.Key, out tmpBuf);
|
||||||
outputFormat.WriteSectorTag(tmpBuf, i + j, SectorTagType.DvdTitleKeyDecrypted);
|
outputFormat.WriteSectorTag(tmpBuf, i + j, SectorTagType.DvdTitleKeyDecrypted);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(!_storeEncrypted)
|
if(!_storeEncrypted)
|
||||||
|
|
||||||
|
|||||||
@@ -347,13 +347,14 @@ partial class Dump
|
|||||||
|
|
||||||
totalDuration += cmdDuration;
|
totalDuration += cmdDuration;
|
||||||
|
|
||||||
if(!sense &&
|
if(sense || _dev.Error)
|
||||||
!_dev.Error)
|
continue;
|
||||||
{
|
|
||||||
CSS_CPRM.TitleKey? titleKey = CSS.DecodeTitleKey(buffer, dvdDecrypt.BusKey);
|
CSS_CPRM.TitleKey? titleKey = CSS.DecodeTitleKey(buffer, dvdDecrypt.BusKey);
|
||||||
|
|
||||||
if(titleKey.HasValue)
|
if(!titleKey.HasValue)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
outputFormat.WriteSectorTag(new[]
|
outputFormat.WriteSectorTag(new[]
|
||||||
{
|
{
|
||||||
titleKey.Value.CMI
|
titleKey.Value.CMI
|
||||||
@@ -393,8 +394,6 @@ partial class Dump
|
|||||||
_dumpLog.WriteLine("Correctly retried title key {0} in pass {1}.", missingKey, pass);
|
_dumpLog.WriteLine("Correctly retried title key {0} in pass {1}.", missingKey, pass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(pass < _retryPasses &&
|
if(pass < _retryPasses &&
|
||||||
!_aborted &&
|
!_aborted &&
|
||||||
|
|||||||
@@ -2022,14 +2022,15 @@ public sealed partial class DeviceReport
|
|||||||
{
|
{
|
||||||
ctx.AddTask("Trying MediaTek READ DRAM command for Lead-Out...").IsIndeterminate();
|
ctx.AddTask("Trying MediaTek READ DRAM command for Lead-Out...").IsIndeterminate();
|
||||||
|
|
||||||
if(mediaTest.Blocks > 0)
|
if(!(mediaTest.Blocks > 0))
|
||||||
{
|
return;
|
||||||
|
|
||||||
if(mediaType == "Audio CD" &&
|
if(mediaType == "Audio CD" &&
|
||||||
mediaTest.SupportsReadCd == true)
|
mediaTest.SupportsReadCd == true)
|
||||||
{
|
{
|
||||||
_dev.ReadCd(out _, out _, (uint)(mediaTest.Blocks + 1), 2352, 1, MmcSectorTypes.Cdda, false,
|
_dev.ReadCd(out _, out _, (uint)(mediaTest.Blocks + 1), 2352, 1, MmcSectorTypes.Cdda, false, false,
|
||||||
false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None,
|
false, MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.None,
|
||||||
MmcSubchannel.None, _dev.Timeout, out _);
|
_dev.Timeout, out _);
|
||||||
|
|
||||||
triedLeadOut = true;
|
triedLeadOut = true;
|
||||||
}
|
}
|
||||||
@@ -2048,8 +2049,8 @@ public sealed partial class DeviceReport
|
|||||||
mediaTest.SupportsReadCd == true)
|
mediaTest.SupportsReadCd == true)
|
||||||
{
|
{
|
||||||
_dev.ReadCd(out _, out _, (uint)(mediaTest.Blocks + 1), 2048, 1, MmcSectorTypes.AllTypes, false,
|
_dev.ReadCd(out _, out _, (uint)(mediaTest.Blocks + 1), 2048, 1, MmcSectorTypes.AllTypes, false,
|
||||||
false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None,
|
false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.None,
|
||||||
MmcSubchannel.None, _dev.Timeout, out _);
|
_dev.Timeout, out _);
|
||||||
|
|
||||||
triedLeadOut = true;
|
triedLeadOut = true;
|
||||||
}
|
}
|
||||||
@@ -2060,28 +2061,29 @@ public sealed partial class DeviceReport
|
|||||||
}
|
}
|
||||||
else if(mediaTest.SupportsRead10 == true)
|
else if(mediaTest.SupportsRead10 == true)
|
||||||
{
|
{
|
||||||
_dev.Read10(out _, out _, 0, false, true, false, false, (uint)(mediaTest.Blocks + 1), 2048, 0,
|
_dev.Read10(out _, out _, 0, false, true, false, false, (uint)(mediaTest.Blocks + 1), 2048, 0, 1,
|
||||||
1, _dev.Timeout, out _);
|
_dev.Timeout, out _);
|
||||||
|
|
||||||
triedLeadOut = true;
|
triedLeadOut = true;
|
||||||
}
|
}
|
||||||
else if(mediaTest.SupportsRead12 == true)
|
else if(mediaTest.SupportsRead12 == true)
|
||||||
{
|
{
|
||||||
_dev.Read12(out _, out _, 0, false, true, false, false, (uint)(mediaTest.Blocks + 1), 2048, 0,
|
_dev.Read12(out _, out _, 0, false, true, false, false, (uint)(mediaTest.Blocks + 1), 2048, 0, 1,
|
||||||
1, false, _dev.Timeout, out _);
|
false, _dev.Timeout, out _);
|
||||||
|
|
||||||
triedLeadOut = true;
|
triedLeadOut = true;
|
||||||
}
|
}
|
||||||
else if(mediaTest.SupportsRead16 == true)
|
else if(mediaTest.SupportsRead16 == true)
|
||||||
{
|
{
|
||||||
_dev.Read16(out _, out _, 0, false, true, false, (ulong)(mediaTest.Blocks + 1), 2048, 0, 1,
|
_dev.Read16(out _, out _, 0, false, true, false, (ulong)(mediaTest.Blocks + 1), 2048, 0, 1, false,
|
||||||
false, _dev.Timeout, out _);
|
_dev.Timeout, out _);
|
||||||
|
|
||||||
triedLeadOut = true;
|
triedLeadOut = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(triedLeadOut)
|
if(!triedLeadOut)
|
||||||
{
|
return;
|
||||||
|
|
||||||
mediaTest.CanReadF1_06LeadOut =
|
mediaTest.CanReadF1_06LeadOut =
|
||||||
!_dev.MediaTekReadDram(out buffer, out senseBuffer, 0, 0xB00, _dev.Timeout, out _);
|
!_dev.MediaTekReadDram(out buffer, out senseBuffer, 0, 0xB00, _dev.Timeout, out _);
|
||||||
|
|
||||||
@@ -2097,8 +2099,6 @@ public sealed partial class DeviceReport
|
|||||||
}
|
}
|
||||||
|
|
||||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadF1_06LeadOut);
|
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadF1_06LeadOut);
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2177,8 +2177,9 @@ public sealed partial class DeviceReport
|
|||||||
false, MmcErrorField.None,
|
false, MmcErrorField.None,
|
||||||
MmcSubchannel.Raw, _dev.Timeout, out _);
|
MmcSubchannel.Raw, _dev.Timeout, out _);
|
||||||
|
|
||||||
if(mediaTest.CanReadingIntersessionLeadOut == false)
|
if(mediaTest.CanReadingIntersessionLeadOut != false)
|
||||||
{
|
return;
|
||||||
|
|
||||||
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer, out senseBuffer,
|
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer, out senseBuffer,
|
||||||
firstSessionLeadOutLba, 2368, 1,
|
firstSessionLeadOutLba, 2368, 1,
|
||||||
MmcSectorTypes.AllTypes, false, false,
|
MmcSectorTypes.AllTypes, false, false,
|
||||||
@@ -2189,13 +2190,10 @@ public sealed partial class DeviceReport
|
|||||||
if(mediaTest.CanReadingIntersessionLeadOut == false)
|
if(mediaTest.CanReadingIntersessionLeadOut == false)
|
||||||
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer, out senseBuffer,
|
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer, out senseBuffer,
|
||||||
firstSessionLeadOutLba, 2352, 1,
|
firstSessionLeadOutLba, 2352, 1,
|
||||||
MmcSectorTypes.AllTypes, false,
|
MmcSectorTypes.AllTypes, false, false,
|
||||||
false, false,
|
false, MmcHeaderCodes.AllHeaders, true,
|
||||||
MmcHeaderCodes.AllHeaders, true,
|
|
||||||
false, MmcErrorField.None,
|
false, MmcErrorField.None,
|
||||||
MmcSubchannel.None, _dev.Timeout,
|
MmcSubchannel.None, _dev.Timeout, out _);
|
||||||
out _);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadOut);
|
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadOut);
|
||||||
@@ -2213,8 +2211,9 @@ public sealed partial class DeviceReport
|
|||||||
false, MmcErrorField.None,
|
false, MmcErrorField.None,
|
||||||
MmcSubchannel.Raw, _dev.Timeout, out _);
|
MmcSubchannel.Raw, _dev.Timeout, out _);
|
||||||
|
|
||||||
if(mediaTest.CanReadingIntersessionLeadIn == false)
|
if(mediaTest.CanReadingIntersessionLeadIn != false)
|
||||||
{
|
return;
|
||||||
|
|
||||||
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer, out senseBuffer,
|
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer, out senseBuffer,
|
||||||
secondSessionLeadInLba, 2368, 1,
|
secondSessionLeadInLba, 2368, 1,
|
||||||
MmcSectorTypes.AllTypes, false, false,
|
MmcSectorTypes.AllTypes, false, false,
|
||||||
@@ -2226,11 +2225,9 @@ public sealed partial class DeviceReport
|
|||||||
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer, out senseBuffer,
|
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer, out senseBuffer,
|
||||||
secondSessionLeadInLba, 2352, 1,
|
secondSessionLeadInLba, 2352, 1,
|
||||||
MmcSectorTypes.AllTypes, false, false,
|
MmcSectorTypes.AllTypes, false, false,
|
||||||
false, MmcHeaderCodes.AllHeaders,
|
false, MmcHeaderCodes.AllHeaders, true,
|
||||||
true, false, MmcErrorField.None,
|
false, MmcErrorField.None,
|
||||||
MmcSubchannel.None, _dev.Timeout,
|
MmcSubchannel.None, _dev.Timeout, out _);
|
||||||
out _);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadIn);
|
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadingIntersessionLeadIn);
|
||||||
|
|||||||
@@ -650,8 +650,10 @@ public sealed partial class DeviceReport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((mediaTest.SupportsReadLong == true || mediaTest.SupportsReadLong16 == true) &&
|
if(mediaTest.SupportsReadLong != true && mediaTest.SupportsReadLong16 != true ||
|
||||||
mediaTest.LongBlockSize == mediaTest.BlockSize)
|
mediaTest.LongBlockSize != mediaTest.BlockSize)
|
||||||
|
return;
|
||||||
|
|
||||||
switch(mediaTest.BlockSize)
|
switch(mediaTest.BlockSize)
|
||||||
{
|
{
|
||||||
case 512:
|
case 512:
|
||||||
|
|||||||
@@ -2222,8 +2222,9 @@ public static class MMC
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(line.StartsWith("BOOT2=cdrom0:", StringComparison.InvariantCultureIgnoreCase))
|
if(!line.StartsWith("BOOT2=cdrom0:", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
continue;
|
||||||
|
|
||||||
ps2BootFile = line.Substring(13);
|
ps2BootFile = line.Substring(13);
|
||||||
|
|
||||||
if(ps2BootFile.StartsWith('\\'))
|
if(ps2BootFile.StartsWith('\\'))
|
||||||
@@ -2234,7 +2235,6 @@ public static class MMC
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(ps1BootFile != null &&
|
if(ps1BootFile != null &&
|
||||||
rootEntries.Contains(ps1BootFile.ToUpperInvariant()))
|
rootEntries.Contains(ps1BootFile.ToUpperInvariant()))
|
||||||
|
|||||||
Submodule Aaru.Decryption updated: 6033794823...2a6ca74a78
@@ -216,11 +216,11 @@ public sealed partial class Device : Devices.Device
|
|||||||
}
|
}
|
||||||
#endregion FireWire
|
#endregion FireWire
|
||||||
#region PCMCIA
|
#region PCMCIA
|
||||||
if(dev._remote.GetPcmciaData(out byte[] cisBuf))
|
if(!dev._remote.GetPcmciaData(out byte[] cisBuf))
|
||||||
{
|
return dev;
|
||||||
|
|
||||||
dev.IsPcmcia = true;
|
dev.IsPcmcia = true;
|
||||||
dev.Cis = cisBuf;
|
dev.Cis = cisBuf;
|
||||||
}
|
|
||||||
#endregion PCMCIA
|
#endregion PCMCIA
|
||||||
|
|
||||||
return dev;
|
return dev;
|
||||||
|
|||||||
@@ -1238,15 +1238,15 @@ public class Remote : IDisposable
|
|||||||
Array.Copy(res.ocr, 0, ocr, 0, res.ocr_len);
|
Array.Copy(res.ocr, 0, ocr, 0, res.ocr_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(res.scr_len > 0)
|
if(res.scr_len <= 0)
|
||||||
{
|
return res.isSdhci;
|
||||||
|
|
||||||
if(res.scr_len > 16)
|
if(res.scr_len > 16)
|
||||||
res.scr_len = 16;
|
res.scr_len = 16;
|
||||||
|
|
||||||
scr = new byte[res.scr_len];
|
scr = new byte[res.scr_len];
|
||||||
|
|
||||||
Array.Copy(res.scr, 0, scr, 0, res.scr_len);
|
Array.Copy(res.scr, 0, scr, 0, res.scr_len);
|
||||||
}
|
|
||||||
|
|
||||||
return res.isSdhci;
|
return res.isSdhci;
|
||||||
}
|
}
|
||||||
@@ -1576,7 +1576,7 @@ public class Remote : IDisposable
|
|||||||
/// <param name="sense">Set to <c>true</c> if any of the commands returned an error status, <c>false</c> otherwise</param>
|
/// <param name="sense">Set to <c>true</c> if any of the commands returned an error status, <c>false</c> otherwise</param>
|
||||||
/// <param name="timeout">Maximum allowed time to execute a single command</param>
|
/// <param name="timeout">Maximum allowed time to execute a single command</param>
|
||||||
/// <returns>0 if no error occurred, otherwise, errno</returns>
|
/// <returns>0 if no error occurred, otherwise, errno</returns>
|
||||||
public int SendMultipleMmcCommands(Device.MmcSingleCommand[] commands, out double duration, out bool sense,
|
public int SendMultipleMmcCommands(Devices.Device.MmcSingleCommand[] commands, out double duration, out bool sense,
|
||||||
uint timeout = 0)
|
uint timeout = 0)
|
||||||
{
|
{
|
||||||
if(ServerProtocolVersion < 2)
|
if(ServerProtocolVersion < 2)
|
||||||
@@ -1588,7 +1588,7 @@ public class Remote : IDisposable
|
|||||||
long packetSize = Marshal.SizeOf<AaruPacketMultiCmdSdhci>() +
|
long packetSize = Marshal.SizeOf<AaruPacketMultiCmdSdhci>() +
|
||||||
Marshal.SizeOf<AaruCmdSdhci>() * commands.LongLength;
|
Marshal.SizeOf<AaruCmdSdhci>() * commands.LongLength;
|
||||||
|
|
||||||
foreach(Device.MmcSingleCommand command in commands)
|
foreach(Devices.Device.MmcSingleCommand command in commands)
|
||||||
packetSize += command.buffer?.Length ?? 0;
|
packetSize += command.buffer?.Length ?? 0;
|
||||||
|
|
||||||
var packet = new AaruPacketMultiCmdSdhci
|
var packet = new AaruPacketMultiCmdSdhci
|
||||||
@@ -1630,7 +1630,7 @@ public class Remote : IDisposable
|
|||||||
off += tmp.Length;
|
off += tmp.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(Device.MmcSingleCommand command in commands.Where(command => (command.buffer?.Length ?? 0) != 0))
|
foreach(Devices.Device.MmcSingleCommand command in commands.Where(command => (command.buffer?.Length ?? 0) != 0))
|
||||||
{
|
{
|
||||||
Array.Copy(command.buffer, 0, buf, off, command.buffer.Length);
|
Array.Copy(command.buffer, 0, buf, off, command.buffer.Length);
|
||||||
|
|
||||||
@@ -1699,7 +1699,7 @@ public class Remote : IDisposable
|
|||||||
|
|
||||||
var error = 0;
|
var error = 0;
|
||||||
|
|
||||||
foreach(Device.MmcSingleCommand command in commands)
|
foreach(Devices.Device.MmcSingleCommand command in commands)
|
||||||
{
|
{
|
||||||
AaruResSdhci cmdRes =
|
AaruResSdhci cmdRes =
|
||||||
Marshal.ByteArrayToStructureLittleEndian<AaruResSdhci>(buf, off, Marshal.SizeOf<AaruResSdhci>());
|
Marshal.ByteArrayToStructureLittleEndian<AaruResSdhci>(buf, off, Marshal.SizeOf<AaruResSdhci>());
|
||||||
@@ -1720,7 +1720,7 @@ public class Remote : IDisposable
|
|||||||
off += Marshal.SizeOf<AaruResSdhci>();
|
off += Marshal.SizeOf<AaruResSdhci>();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(Device.MmcSingleCommand command in commands)
|
foreach(Devices.Device.MmcSingleCommand command in commands)
|
||||||
{
|
{
|
||||||
Array.Copy(buf, off, command.buffer, 0, command.buffer.Length);
|
Array.Copy(buf, off, command.buffer, 0, command.buffer.Length);
|
||||||
off += command.buffer.Length;
|
off += command.buffer.Length;
|
||||||
@@ -1738,13 +1738,13 @@ public class Remote : IDisposable
|
|||||||
/// <param name="sense">Set to <c>true</c> if any of the commands returned an error status, <c>false</c> otherwise</param>
|
/// <param name="sense">Set to <c>true</c> if any of the commands returned an error status, <c>false</c> otherwise</param>
|
||||||
/// <param name="timeout">Maximum allowed time to execute a single command</param>
|
/// <param name="timeout">Maximum allowed time to execute a single command</param>
|
||||||
/// <returns>0 if no error occurred, otherwise, errno</returns>
|
/// <returns>0 if no error occurred, otherwise, errno</returns>
|
||||||
int SendMultipleMmcCommandsV1(Device.MmcSingleCommand[] commands, out double duration, out bool sense, uint timeout)
|
int SendMultipleMmcCommandsV1(Devices.Device.MmcSingleCommand[] commands, out double duration, out bool sense, uint timeout)
|
||||||
{
|
{
|
||||||
sense = false;
|
sense = false;
|
||||||
duration = 0;
|
duration = 0;
|
||||||
var error = 0;
|
var error = 0;
|
||||||
|
|
||||||
foreach(Device.MmcSingleCommand command in commands)
|
foreach(Devices.Device.MmcSingleCommand command in commands)
|
||||||
{
|
{
|
||||||
error = SendMmcCommand(command.command, command.write, command.isApplication, command.flags,
|
error = SendMmcCommand(command.command, command.write, command.isApplication, command.flags,
|
||||||
command.argument, command.blockSize, command.blocks, ref command.buffer,
|
command.argument, command.blockSize, command.blocks, ref command.buffer,
|
||||||
|
|||||||
@@ -785,8 +785,9 @@ public sealed partial class FAT
|
|||||||
return BpbKind.Atari;
|
return BpbKind.Atari;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(useApricotBpb)
|
if(!useApricotBpb)
|
||||||
{
|
return BpbKind.None;
|
||||||
|
|
||||||
fakeBpb.bps = apricotBpb.mainBPB.bps;
|
fakeBpb.bps = apricotBpb.mainBPB.bps;
|
||||||
fakeBpb.spc = apricotBpb.mainBPB.spc;
|
fakeBpb.spc = apricotBpb.mainBPB.spc;
|
||||||
fakeBpb.rsectors = apricotBpb.mainBPB.rsectors;
|
fakeBpb.rsectors = apricotBpb.mainBPB.rsectors;
|
||||||
@@ -801,12 +802,10 @@ public sealed partial class FAT
|
|||||||
if(apricotBpb.bootLocation > 0 &&
|
if(apricotBpb.bootLocation > 0 &&
|
||||||
apricotBpb.bootLocation + apricotBpb.bootSize < imagePlugin.Info.Sectors)
|
apricotBpb.bootLocation + apricotBpb.bootSize < imagePlugin.Info.Sectors)
|
||||||
imagePlugin.ReadSectors(apricotBpb.bootLocation,
|
imagePlugin.ReadSectors(apricotBpb.bootLocation,
|
||||||
(uint)(apricotBpb.sectorSize * apricotBpb.bootSize) /
|
(uint)(apricotBpb.sectorSize * apricotBpb.bootSize) / imagePlugin.Info.SectorSize,
|
||||||
imagePlugin.Info.SectorSize, out fakeBpb.boot_code);
|
out fakeBpb.boot_code);
|
||||||
|
|
||||||
return BpbKind.Apricot;
|
return BpbKind.Apricot;
|
||||||
}
|
|
||||||
|
|
||||||
return BpbKind.None;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,8 +127,13 @@ public sealed partial class ISO9660
|
|||||||
|
|
||||||
offset += entry.XattrLength * _blockSize;
|
offset += entry.XattrLength * _blockSize;
|
||||||
|
|
||||||
if(entry.CdiSystemArea?.attributes.HasFlag(CdiAttributes.DigitalAudio) == true &&
|
if(entry.CdiSystemArea?.attributes.HasFlag(CdiAttributes.DigitalAudio) != true ||
|
||||||
entry.Extents.Count == 1)
|
entry.Extents.Count != 1)
|
||||||
|
return ReadWithExtents(offset, size, entry.Extents,
|
||||||
|
entry.XA?.signature == XA_MAGIC &&
|
||||||
|
entry.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
|
||||||
|
entry.XA?.filenumber ?? 0, out buf);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long firstSector = offset / 2352;
|
long firstSector = offset / 2352;
|
||||||
|
|||||||
@@ -127,17 +127,16 @@ public sealed partial class ISO9660
|
|||||||
if(entry.AssociatedFile.Extents is null)
|
if(entry.AssociatedFile.Extents is null)
|
||||||
return ErrorNumber.InvalidArgument;
|
return ErrorNumber.InvalidArgument;
|
||||||
|
|
||||||
if(entry.AssociatedFile.Size == 0)
|
if(entry.AssociatedFile.Size != 0)
|
||||||
{
|
return ReadWithExtents(0, (long)entry.AssociatedFile.Size, entry.AssociatedFile.Extents,
|
||||||
|
entry.AssociatedFile.XA?.signature == XA_MAGIC &&
|
||||||
|
entry.AssociatedFile.XA?.attributes.HasFlag(XaAttributes.Interleaved) ==
|
||||||
|
true, entry.AssociatedFile.XA?.filenumber ?? 0, out buf);
|
||||||
|
|
||||||
buf = Array.Empty<byte>();
|
buf = Array.Empty<byte>();
|
||||||
|
|
||||||
return ErrorNumber.NoError;
|
return ErrorNumber.NoError;
|
||||||
}
|
|
||||||
|
|
||||||
return ReadWithExtents(0, (long)entry.AssociatedFile.Size, entry.AssociatedFile.Extents,
|
|
||||||
entry.AssociatedFile.XA?.signature == XA_MAGIC &&
|
|
||||||
entry.AssociatedFile.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
|
|
||||||
entry.AssociatedFile.XA?.filenumber ?? 0, out buf);
|
|
||||||
case "com.apple.dos.type":
|
case "com.apple.dos.type":
|
||||||
if(entry.AppleDosType is null)
|
if(entry.AppleDosType is null)
|
||||||
return ErrorNumber.NoSuchExtendedAttribute;
|
return ErrorNumber.NoSuchExtendedAttribute;
|
||||||
@@ -160,17 +159,16 @@ public sealed partial class ISO9660
|
|||||||
if(entry.ResourceFork.Extents is null)
|
if(entry.ResourceFork.Extents is null)
|
||||||
return ErrorNumber.InvalidArgument;
|
return ErrorNumber.InvalidArgument;
|
||||||
|
|
||||||
if(entry.ResourceFork.Size == 0)
|
if(entry.ResourceFork.Size != 0)
|
||||||
{
|
|
||||||
buf = Array.Empty<byte>();
|
|
||||||
|
|
||||||
return ErrorNumber.NoError;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ReadWithExtents(0, (long)entry.ResourceFork.Size, entry.ResourceFork.Extents,
|
return ReadWithExtents(0, (long)entry.ResourceFork.Size, entry.ResourceFork.Extents,
|
||||||
entry.ResourceFork.XA?.signature == XA_MAGIC &&
|
entry.ResourceFork.XA?.signature == XA_MAGIC &&
|
||||||
entry.ResourceFork.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
|
entry.ResourceFork.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true,
|
||||||
entry.ResourceFork.XA?.filenumber ?? 0, out buf);
|
entry.ResourceFork.XA?.filenumber ?? 0, out buf);
|
||||||
|
|
||||||
|
buf = Array.Empty<byte>();
|
||||||
|
|
||||||
|
return ErrorNumber.NoError;
|
||||||
|
|
||||||
case "com.apple.FinderInfo":
|
case "com.apple.FinderInfo":
|
||||||
if(entry.FinderInfo is null)
|
if(entry.FinderInfo is null)
|
||||||
return ErrorNumber.NoSuchExtendedAttribute;
|
return ErrorNumber.NoSuchExtendedAttribute;
|
||||||
|
|||||||
@@ -454,13 +454,13 @@ public sealed class BlockMap : ItemsControl
|
|||||||
ctx.FillRectangle(new SolidColorBrush(color), new Rect(x, y, squareWidth, squareHeight));
|
ctx.FillRectangle(new SolidColorBrush(color), new Rect(x, y, squareWidth, squareHeight));
|
||||||
x += squareWidth + 2 * borderWidth;
|
x += squareWidth + 2 * borderWidth;
|
||||||
|
|
||||||
if(x >= sideLength)
|
if(x < sideLength)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
x = 0;
|
x = 0;
|
||||||
y += squareHeight + 2 * borderWidth;
|
y += squareHeight + 2 * borderWidth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
|
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -595,8 +595,9 @@ public sealed class ScsiInfoViewModel : ViewModelBase
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_configuration != null)
|
if(_configuration == null)
|
||||||
{
|
return;
|
||||||
|
|
||||||
Features.SeparatedFeatures ftr = Features.Separate(_configuration);
|
Features.SeparatedFeatures ftr = Features.Separate(_configuration);
|
||||||
|
|
||||||
AaruConsole.DebugWriteLine("Device-Info command", "GET CONFIGURATION length is {0} bytes", ftr.DataLength);
|
AaruConsole.DebugWriteLine("Device-Info command", "GET CONFIGURATION length is {0} bytes", ftr.DataLength);
|
||||||
@@ -682,7 +683,6 @@ public sealed class ScsiInfoViewModel : ViewModelBase
|
|||||||
else
|
else
|
||||||
AaruConsole.DebugWriteLine("Device-Info command", "GET CONFIGURATION returned no feature descriptors");
|
AaruConsole.DebugWriteLine("Device-Info command", "GET CONFIGURATION returned no feature descriptors");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] InquiryData { get; }
|
public byte[] InquiryData { get; }
|
||||||
public string ScsiInquiryText { get; }
|
public string ScsiInquiryText { get; }
|
||||||
|
|||||||
@@ -563,12 +563,12 @@ public sealed partial class Alcohol120
|
|||||||
|
|
||||||
extraCount += _writingTracks.Count(t => t.Session == i);
|
extraCount += _writingTracks.Count(t => t.Session == i);
|
||||||
|
|
||||||
if(i < sessions)
|
if(i >= sessions)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
currentExtraOffset += Marshal.SizeOf<Track>() * 2;
|
currentExtraOffset += Marshal.SizeOf<Track>() * 2;
|
||||||
extraCount += 2;
|
extraCount += 2;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
long footerOffset = currentExtraOffset + Marshal.SizeOf<TrackExtra>() * extraCount;
|
long footerOffset = currentExtraOffset + Marshal.SizeOf<TrackExtra>() * extraCount;
|
||||||
|
|
||||||
|
|||||||
@@ -1302,9 +1302,11 @@ public sealed partial class BlindWrite5
|
|||||||
|
|
||||||
AaruConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", _imageInfo.MediaType);
|
AaruConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", _imageInfo.MediaType);
|
||||||
|
|
||||||
if(_header.profile != ProfileNumber.CDR &&
|
if(_header.profile == ProfileNumber.CDR ||
|
||||||
_header.profile != ProfileNumber.CDRW &&
|
_header.profile == ProfileNumber.CDRW ||
|
||||||
_header.profile != ProfileNumber.CDROM)
|
_header.profile == ProfileNumber.CDROM)
|
||||||
|
return ErrorNumber.NoError;
|
||||||
|
|
||||||
foreach(Track track in Tracks)
|
foreach(Track track in Tracks)
|
||||||
{
|
{
|
||||||
track.Pregap = 0;
|
track.Pregap = 0;
|
||||||
|
|||||||
@@ -726,77 +726,7 @@ public class GameBoy : IByteAddressableImage
|
|||||||
[SuppressMessage("ReSharper", "StringLiteralTypo")]
|
[SuppressMessage("ReSharper", "StringLiteralTypo")]
|
||||||
string DecodeLicensee(byte headerLicensee, byte[] headerLicenseeNew)
|
string DecodeLicensee(byte headerLicensee, byte[] headerLicenseeNew)
|
||||||
{
|
{
|
||||||
if(headerLicensee == 0x33)
|
if(headerLicensee != 0x33)
|
||||||
{
|
|
||||||
string licenseeNew = StringHandlers.CToString(headerLicenseeNew);
|
|
||||||
|
|
||||||
return licenseeNew switch
|
|
||||||
{
|
|
||||||
"00" => "none",
|
|
||||||
"01" => "Nintendo R&D1",
|
|
||||||
"08" => "Capcom",
|
|
||||||
"13" => "Electronic Arts",
|
|
||||||
"18" => "Hudson Soft",
|
|
||||||
"19" => "b-ai",
|
|
||||||
"20" => "kss",
|
|
||||||
"22" => "pow",
|
|
||||||
"24" => "PCM Complete",
|
|
||||||
"25" => "san-x",
|
|
||||||
"28" => "Kemco Japan",
|
|
||||||
"29" => "seta",
|
|
||||||
"30" => "Viacom",
|
|
||||||
"31" => "Nintendo",
|
|
||||||
"32" => "Bandai",
|
|
||||||
"33" => "Ocean / Acclaim",
|
|
||||||
"34" => "Konami",
|
|
||||||
"35" => "Hector",
|
|
||||||
"37" => "Taito",
|
|
||||||
"38" => "Hudson",
|
|
||||||
"39" => "Banpresto",
|
|
||||||
"41" => "Ubi Soft",
|
|
||||||
"42" => "Atlus",
|
|
||||||
"44" => "Malibu",
|
|
||||||
"46" => "angel",
|
|
||||||
"47" => "Bullet -Proof",
|
|
||||||
"49" => "irem",
|
|
||||||
"50" => "Absolute",
|
|
||||||
"51" => "Acclaim",
|
|
||||||
"52" => "Activision",
|
|
||||||
"53" => "American sammy",
|
|
||||||
"54" => "Konami",
|
|
||||||
"55" => "Hi tech entertainment",
|
|
||||||
"56" => "LJN",
|
|
||||||
"57" => "Matchbox",
|
|
||||||
"58" => "Mattel",
|
|
||||||
"59" => "Milton Bradley",
|
|
||||||
"60" => "Titus",
|
|
||||||
"61" => "Virgin",
|
|
||||||
"64" => "LucasArts",
|
|
||||||
"67" => "Ocean",
|
|
||||||
"69" => "Electronic Arts",
|
|
||||||
"70" => "Infogrames",
|
|
||||||
"71" => "Interplay",
|
|
||||||
"72" => "Brøderbund",
|
|
||||||
"73" => "sculptured",
|
|
||||||
"75" => "sci",
|
|
||||||
"78" => "THQ",
|
|
||||||
"79" => "Accolade",
|
|
||||||
"80" => "misawa",
|
|
||||||
"83" => "lozc",
|
|
||||||
"86" => "tokuma shoten i",
|
|
||||||
"87" => "tsukuda ori",
|
|
||||||
"91" => "Chunsoft",
|
|
||||||
"92" => "Video system",
|
|
||||||
"93" => "Ocean / Acclaim",
|
|
||||||
"95" => "Varie",
|
|
||||||
"96" => "Yonezawa / s'pal",
|
|
||||||
"97" => "Kaneko",
|
|
||||||
"99" => "Pack in soft",
|
|
||||||
"A4" => "Konami",
|
|
||||||
_ => "Unknown"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return headerLicensee switch
|
return headerLicensee switch
|
||||||
{
|
{
|
||||||
0x00 => "none",
|
0x00 => "none",
|
||||||
@@ -949,6 +879,75 @@ public class GameBoy : IByteAddressableImage
|
|||||||
0xFF => "ljn",
|
0xFF => "ljn",
|
||||||
_ => "Unknown"
|
_ => "Unknown"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string licenseeNew = StringHandlers.CToString(headerLicenseeNew);
|
||||||
|
|
||||||
|
return licenseeNew switch
|
||||||
|
{
|
||||||
|
"00" => "none",
|
||||||
|
"01" => "Nintendo R&D1",
|
||||||
|
"08" => "Capcom",
|
||||||
|
"13" => "Electronic Arts",
|
||||||
|
"18" => "Hudson Soft",
|
||||||
|
"19" => "b-ai",
|
||||||
|
"20" => "kss",
|
||||||
|
"22" => "pow",
|
||||||
|
"24" => "PCM Complete",
|
||||||
|
"25" => "san-x",
|
||||||
|
"28" => "Kemco Japan",
|
||||||
|
"29" => "seta",
|
||||||
|
"30" => "Viacom",
|
||||||
|
"31" => "Nintendo",
|
||||||
|
"32" => "Bandai",
|
||||||
|
"33" => "Ocean / Acclaim",
|
||||||
|
"34" => "Konami",
|
||||||
|
"35" => "Hector",
|
||||||
|
"37" => "Taito",
|
||||||
|
"38" => "Hudson",
|
||||||
|
"39" => "Banpresto",
|
||||||
|
"41" => "Ubi Soft",
|
||||||
|
"42" => "Atlus",
|
||||||
|
"44" => "Malibu",
|
||||||
|
"46" => "angel",
|
||||||
|
"47" => "Bullet -Proof",
|
||||||
|
"49" => "irem",
|
||||||
|
"50" => "Absolute",
|
||||||
|
"51" => "Acclaim",
|
||||||
|
"52" => "Activision",
|
||||||
|
"53" => "American sammy",
|
||||||
|
"54" => "Konami",
|
||||||
|
"55" => "Hi tech entertainment",
|
||||||
|
"56" => "LJN",
|
||||||
|
"57" => "Matchbox",
|
||||||
|
"58" => "Mattel",
|
||||||
|
"59" => "Milton Bradley",
|
||||||
|
"60" => "Titus",
|
||||||
|
"61" => "Virgin",
|
||||||
|
"64" => "LucasArts",
|
||||||
|
"67" => "Ocean",
|
||||||
|
"69" => "Electronic Arts",
|
||||||
|
"70" => "Infogrames",
|
||||||
|
"71" => "Interplay",
|
||||||
|
"72" => "Brøderbund",
|
||||||
|
"73" => "sculptured",
|
||||||
|
"75" => "sci",
|
||||||
|
"78" => "THQ",
|
||||||
|
"79" => "Accolade",
|
||||||
|
"80" => "misawa",
|
||||||
|
"83" => "lozc",
|
||||||
|
"86" => "tokuma shoten i",
|
||||||
|
"87" => "tsukuda ori",
|
||||||
|
"91" => "Chunsoft",
|
||||||
|
"92" => "Video system",
|
||||||
|
"93" => "Ocean / Acclaim",
|
||||||
|
"95" => "Varie",
|
||||||
|
"96" => "Yonezawa / s'pal",
|
||||||
|
"97" => "Kaneko",
|
||||||
|
"99" => "Pack in soft",
|
||||||
|
"A4" => "Konami",
|
||||||
|
_ => "Unknown"
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint DecodeRomSize(byte headerRomType) => headerRomType switch
|
static uint DecodeRomSize(byte headerRomType) => headerRomType switch
|
||||||
|
|||||||
@@ -83,13 +83,13 @@ public sealed partial class Gdi
|
|||||||
|
|
||||||
if(lineNumber == 1)
|
if(lineNumber == 1)
|
||||||
{
|
{
|
||||||
if(!int.TryParse(line, out _))
|
if(int.TryParse(line, out _))
|
||||||
{
|
continue;
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Not a correct Dreamcast GDI image");
|
AaruConsole.ErrorWriteLine("Not a correct Dreamcast GDI image");
|
||||||
|
|
||||||
return ErrorNumber.InvalidArgument;
|
return ErrorNumber.InvalidArgument;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Match trackMatch = regexTrack.Match(line ?? "");
|
Match trackMatch = regexTrack.Match(line ?? "");
|
||||||
|
|||||||
@@ -168,8 +168,9 @@ public sealed class Xbox : IPartition
|
|||||||
{
|
{
|
||||||
errno = imagePlugin.ReadSector((ulong)(XBOX_360DATA_OFF / imagePlugin.Info.SectorSize), out sector);
|
errno = imagePlugin.ReadSector((ulong)(XBOX_360DATA_OFF / imagePlugin.Info.SectorSize), out sector);
|
||||||
|
|
||||||
if(errno == ErrorNumber.NoError)
|
if(errno != ErrorNumber.NoError)
|
||||||
{
|
return false;
|
||||||
|
|
||||||
temp = BitConverter.ToUInt32(sector, 0);
|
temp = BitConverter.ToUInt32(sector, 0);
|
||||||
|
|
||||||
if(temp != XBOX_CIGAM)
|
if(temp != XBOX_CIGAM)
|
||||||
@@ -263,7 +264,6 @@ public sealed class Xbox : IPartition
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -385,8 +385,9 @@ sealed class DecodeCommand : Command
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sectorTags)
|
if(!sectorTags)
|
||||||
{
|
return (int)ErrorNumber.NoError;
|
||||||
|
|
||||||
if(length.ToLowerInvariant() == "all") {}
|
if(length.ToLowerInvariant() == "all") {}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -412,7 +413,6 @@ sealed class DecodeCommand : Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Not implemented
|
// TODO: Not implemented
|
||||||
}
|
|
||||||
|
|
||||||
return (int)ErrorNumber.NoError;
|
return (int)ErrorNumber.NoError;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,10 +173,12 @@ sealed class VerifyCommand : Command
|
|||||||
return (int)ErrorNumber.NotVerifiable;
|
return (int)ErrorNumber.NotVerifiable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TimeSpan checkTime;
|
||||||
|
|
||||||
if(verifyDisc && verifiableImage != null)
|
if(verifyDisc && verifiableImage != null)
|
||||||
{
|
{
|
||||||
bool? discCheckStatus = null;
|
bool? discCheckStatus = null;
|
||||||
TimeSpan checkTime = new();
|
checkTime = new TimeSpan();
|
||||||
|
|
||||||
Spectre.ProgressSingleSpinner(ctx =>
|
Spectre.ProgressSingleSpinner(ctx =>
|
||||||
{
|
{
|
||||||
@@ -208,8 +210,14 @@ sealed class VerifyCommand : Command
|
|||||||
AaruConsole.VerboseWriteLine("Checking disc image checksums took {0} seconds", checkTime.TotalSeconds);
|
AaruConsole.VerboseWriteLine("Checking disc image checksums took {0} seconds", checkTime.TotalSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(verifySectors)
|
if(!verifySectors)
|
||||||
|
return correctImage switch
|
||||||
{
|
{
|
||||||
|
null => (int)ErrorNumber.NotVerifiable,
|
||||||
|
false => (int)ErrorNumber.BadImageSectorsNotVerified,
|
||||||
|
true => (int)ErrorNumber.CorrectImageSectorsNotVerified
|
||||||
|
};
|
||||||
|
|
||||||
DateTime startCheck = DateTime.Now;
|
DateTime startCheck = DateTime.Now;
|
||||||
DateTime endCheck = startCheck;
|
DateTime endCheck = startCheck;
|
||||||
List<ulong> failingLbas = new();
|
List<ulong> failingLbas = new();
|
||||||
@@ -231,8 +239,7 @@ sealed class VerifyCommand : Command
|
|||||||
|
|
||||||
foreach(Track currentTrack in inputTracks)
|
foreach(Track currentTrack in inputTracks)
|
||||||
{
|
{
|
||||||
discTask.Description =
|
discTask.Description = $"Checking track {discTask.Value + 1} of {inputTracks.Count}";
|
||||||
$"Checking track {discTask.Value + 1} of {inputTracks.Count}";
|
|
||||||
|
|
||||||
ulong remainingSectors = currentTrack.EndSector - currentTrack.StartSector + 1;
|
ulong remainingSectors = currentTrack.EndSector - currentTrack.StartSector + 1;
|
||||||
|
|
||||||
@@ -300,8 +307,7 @@ sealed class VerifyCommand : Command
|
|||||||
|
|
||||||
while(remainingSectors > 0)
|
while(remainingSectors > 0)
|
||||||
{
|
{
|
||||||
diskTask.Description =
|
diskTask.Description = $"Checking sector {currentSector} of {inputFormat.Info.Sectors}";
|
||||||
$"Checking sector {currentSector} of {inputFormat.Info.Sectors}";
|
|
||||||
|
|
||||||
List<ulong> tempFailingLbas;
|
List<ulong> tempFailingLbas;
|
||||||
List<ulong> tempUnknownLbas;
|
List<ulong> tempUnknownLbas;
|
||||||
@@ -335,7 +341,7 @@ sealed class VerifyCommand : Command
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeSpan checkTime = endCheck - startCheck;
|
checkTime = endCheck - startCheck;
|
||||||
|
|
||||||
if(unknownLbas.Count > 0)
|
if(unknownLbas.Count > 0)
|
||||||
AaruConsole.WriteLine("There is at least one sector that does not contain a checksum");
|
AaruConsole.WriteLine("There is at least one sector that does not contain a checksum");
|
||||||
@@ -377,7 +383,6 @@ sealed class VerifyCommand : Command
|
|||||||
correctSectors = false;
|
correctSectors = false;
|
||||||
else if((ulong)unknownLbas.Count < inputFormat.Info.Sectors)
|
else if((ulong)unknownLbas.Count < inputFormat.Info.Sectors)
|
||||||
correctSectors = true;
|
correctSectors = true;
|
||||||
}
|
|
||||||
|
|
||||||
return correctImage switch
|
return correctImage switch
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user