mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-11-20 08:01:04 +00:00
idea: Catch HorizonResultExceptions of result type ResultFsNonRealDataVerificationFailed
- log a more clear error message as to what 2002-4604 means for the user - and return the result from the FileSystemProxy IStorage to pass the invalid data handling to the game instead of stopping emulation there and then. - this may be changed. i'm pretty sure this error is only thrown when you actually have integrity checking enabled in settings, so maybe it crashing with a friendler message is more desired than potentially continuing execution. we will see
This commit is contained in:
parent
234f7ca298
commit
13b69aedfe
@ -1,8 +1,10 @@
|
||||
using LibHac;
|
||||
using LibHac.Common;
|
||||
using LibHac.Fs;
|
||||
using LibHac.Sf;
|
||||
using Ryujinx.Common;
|
||||
using Ryujinx.Common.Configuration;
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Memory;
|
||||
using System.Threading;
|
||||
|
||||
@ -40,7 +42,19 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
|
||||
}
|
||||
|
||||
using WritableRegion region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true);
|
||||
Result result = _baseStorage.Get.Read((long)offset, new OutBuffer(region.Memory.Span), (long)size);
|
||||
Result result;
|
||||
|
||||
try
|
||||
{
|
||||
result = _baseStorage.Get.Read((long)offset, new OutBuffer(region.Memory.Span), (long)size);
|
||||
}
|
||||
catch (HorizonResultException hre) when (hre.IsOfResultType(ResultFs.NonRealDataVerificationFailed))
|
||||
{
|
||||
Logger.Error?.Print(LogClass.ServiceFs,
|
||||
$"Encountered corrupted data in filesystem storage @ offset 0x{offset:X8}, size 0x{size:X8}. " +
|
||||
"Please redump the current game and/or update from your console.");
|
||||
result = ResultFs.NonRealDataVerificationFailed;
|
||||
}
|
||||
|
||||
if (context.Device.DirtyHacks.IsEnabled(DirtyHack.Xc2MenuSoftlockFix) && IsXc2)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user