aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Caps
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Caps')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs40
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IAlbumAccessorService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IAlbumApplicationService.cs12
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IAlbumControlService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs37
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/IScreenshotService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs18
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs14
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs14
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs10
14 files changed, 87 insertions, 78 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs b/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
index 6320fe28..349dd34f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
@@ -11,19 +11,21 @@ namespace Ryujinx.HLE.HOS.Services.Caps
{
class CaptureManager
{
- private string _sdCardPath;
+ private readonly string _sdCardPath;
private uint _shimLibraryVersion;
public CaptureManager(Switch device)
{
- _sdCardPath = device.FileSystem.GetSdCardPath();
+ _sdCardPath = FileSystem.VirtualFileSystem.GetSdCardPath();
}
public ResultCode SetShimLibraryVersion(ServiceCtx context)
{
- ulong shimLibraryVersion = context.RequestData.ReadUInt64();
+ ulong shimLibraryVersion = context.RequestData.ReadUInt64();
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
ulong appletResourceUserId = context.RequestData.ReadUInt64();
+#pragma warning restore IDE0059
// TODO: Service checks if the pid is present in an internal list and returns ResultCode.BlacklistedPid if it is.
// The list contents needs to be determined.
@@ -82,28 +84,28 @@ namespace Ryujinx.HLE.HOS.Services.Caps
applicationAlbumEntry = new ApplicationAlbumEntry()
{
- Size = (ulong)Unsafe.SizeOf<ApplicationAlbumEntry>(),
- TitleId = titleId,
+ Size = (ulong)Unsafe.SizeOf<ApplicationAlbumEntry>(),
+ TitleId = titleId,
AlbumFileDateTime = new AlbumFileDateTime()
{
- Year = (ushort)currentDateTime.Year,
- Month = (byte)currentDateTime.Month,
- Day = (byte)currentDateTime.Day,
- Hour = (byte)currentDateTime.Hour,
- Minute = (byte)currentDateTime.Minute,
- Second = (byte)currentDateTime.Second,
- UniqueId = 0
+ Year = (ushort)currentDateTime.Year,
+ Month = (byte)currentDateTime.Month,
+ Day = (byte)currentDateTime.Day,
+ Hour = (byte)currentDateTime.Hour,
+ Minute = (byte)currentDateTime.Minute,
+ Second = (byte)currentDateTime.Second,
+ UniqueId = 0,
},
- AlbumStorage = AlbumStorage.Sd,
- ContentType = ContentType.Screenshot,
- Padding = new Array5<byte>(),
- Unknown0x1f = 1
+ AlbumStorage = AlbumStorage.Sd,
+ ContentType = ContentType.Screenshot,
+ Padding = new Array5<byte>(),
+ Unknown0x1f = 1,
};
// NOTE: The hex hash is a HMAC-SHA256 (first 32 bytes) using a hardcoded secret key over the titleId, we can simulate it by hashing the titleId instead.
- string hash = Convert.ToHexString(SHA256.HashData(BitConverter.GetBytes(titleId))).Remove(0x20);
+ string hash = Convert.ToHexString(SHA256.HashData(BitConverter.GetBytes(titleId))).Remove(0x20);
string folderPath = Path.Combine(_sdCardPath, "Nintendo", "Album", currentDateTime.Year.ToString("00"), currentDateTime.Month.ToString("00"), currentDateTime.Day.ToString("00"));
- string filePath = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
+ string filePath = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
// TODO: Handle that using the FS service implementation and return the right error code instead of throwing exceptions.
Directory.CreateDirectory(folderPath);
@@ -131,4 +133,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
return Path.Combine(folderPath, fileName);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumAccessorService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumAccessorService.cs
index 4071b9cc..de62b08d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumAccessorService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumAccessorService.cs
@@ -5,4 +5,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
{
public IAlbumAccessorService(ServiceCtx context) { }
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumApplicationService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumApplicationService.cs
index af99232e..5fbba310 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumApplicationService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumApplicationService.cs
@@ -18,7 +18,7 @@ namespace Ryujinx.HLE.HOS.Services.Caps
[CommandCmif(102)]
// GetAlbumFileList0AafeAruidDeprecated(pid, u16 content_type, u64 start_time, u64 end_time, nn::applet::AppletResourceUserId) -> (u64 count, buffer<ApplicationAlbumFileEntry, 0x6>)
- public ResultCode GetAlbumFileList0AafeAruidDeprecated(ServiceCtx context)
+ public ResultCode GetAlbumFileList0AafeAruidDeprecated(ServiceCtx context)
{
// NOTE: ApplicationAlbumFileEntry size is 0x30.
return GetAlbumFileList(context);
@@ -35,18 +35,18 @@ namespace Ryujinx.HLE.HOS.Services.Caps
private ResultCode GetAlbumFileList(ServiceCtx context)
{
ResultCode resultCode = ResultCode.Success;
- ulong count = 0;
+ ulong count = 0;
ContentType contentType = (ContentType)context.RequestData.ReadUInt16();
- ulong startTime = context.RequestData.ReadUInt64();
- ulong endTime = context.RequestData.ReadUInt64();
+ ulong startTime = context.RequestData.ReadUInt64();
+ ulong endTime = context.RequestData.ReadUInt64();
context.RequestData.ReadUInt16(); // Alignment.
ulong appletResourceUserId = context.RequestData.ReadUInt64();
ulong applicationAlbumFileEntryPosition = context.Request.ReceiveBuff[0].Position;
- ulong applicationAlbumFileEntrySize = context.Request.ReceiveBuff[0].Size;
+ ulong applicationAlbumFileEntrySize = context.Request.ReceiveBuff[0].Size;
MemoryHelper.FillWithZeros(context.Memory, applicationAlbumFileEntryPosition, (int)applicationAlbumFileEntrySize);
@@ -66,4 +66,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
return resultCode;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumControlService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumControlService.cs
index b16a4122..4376c4d1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumControlService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IAlbumControlService.cs
@@ -12,4 +12,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
return context.Device.System.CaptureManager.SetShimLibraryVersion(context);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
index a3501286..fb62b710 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
@@ -20,14 +20,18 @@ namespace Ryujinx.HLE.HOS.Services.Caps
public ResultCode SaveScreenShotEx0(ServiceCtx context)
{
// TODO: Use the ScreenShotAttribute.
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
ScreenShotAttribute screenShotAttribute = context.RequestData.ReadStruct<ScreenShotAttribute>();
- uint unknown = context.RequestData.ReadUInt32();
+ uint unknown = context.RequestData.ReadUInt32();
+#pragma warning restore IDE0059
ulong appletResourceUserId = context.RequestData.ReadUInt64();
- ulong pidPlaceholder = context.RequestData.ReadUInt64();
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
+ ulong pidPlaceholder = context.RequestData.ReadUInt64();
+#pragma warning restore IDE0059
ulong screenshotDataPosition = context.Request.SendBuff[0].Position;
- ulong screenshotDataSize = context.Request.SendBuff[0].Size;
+ ulong screenshotDataSize = context.Request.SendBuff[0].Size;
byte[] screenshotData = context.Memory.GetSpan(screenshotDataPosition, (int)screenshotDataSize, true).ToArray();
@@ -43,20 +47,22 @@ namespace Ryujinx.HLE.HOS.Services.Caps
public ResultCode SaveScreenShotEx1(ServiceCtx context)
{
// TODO: Use the ScreenShotAttribute.
- ScreenShotAttribute screenShotAttribute = context.RequestData.ReadStruct<ScreenShotAttribute>();
+ _ = context.RequestData.ReadStruct<ScreenShotAttribute>();
- uint unknown = context.RequestData.ReadUInt32();
+ _ = context.RequestData.ReadUInt32();
ulong appletResourceUserId = context.RequestData.ReadUInt64();
- ulong pidPlaceholder = context.RequestData.ReadUInt64();
+
+ _ = context.RequestData.ReadUInt64();
ulong applicationDataPosition = context.Request.SendBuff[0].Position;
- ulong applicationDataSize = context.Request.SendBuff[0].Size;
+ ulong applicationDataSize = context.Request.SendBuff[0].Size;
ulong screenshotDataPosition = context.Request.SendBuff[1].Position;
- ulong screenshotDataSize = context.Request.SendBuff[1].Size;
+ ulong screenshotDataSize = context.Request.SendBuff[1].Size;
+
// TODO: Parse the application data: At 0x00 it's UserData (Size of 0x400), at 0x404 it's a uint UserDataSize (Always empty for now).
- byte[] applicationData = context.Memory.GetSpan(applicationDataPosition, (int)applicationDataSize).ToArray();
+ _ = context.Memory.GetSpan(applicationDataPosition, (int)applicationDataSize).ToArray();
byte[] screenshotData = context.Memory.GetSpan(screenshotDataPosition, (int)screenshotDataSize, true).ToArray();
@@ -72,19 +78,20 @@ namespace Ryujinx.HLE.HOS.Services.Caps
public ResultCode SaveScreenShotEx2(ServiceCtx context)
{
// TODO: Use the ScreenShotAttribute.
- ScreenShotAttribute screenShotAttribute = context.RequestData.ReadStruct<ScreenShotAttribute>();
+ _ = context.RequestData.ReadStruct<ScreenShotAttribute>();
- uint unknown = context.RequestData.ReadUInt32();
+ _ = context.RequestData.ReadUInt32();
ulong appletResourceUserId = context.RequestData.ReadUInt64();
ulong userIdListPosition = context.Request.SendBuff[0].Position;
- ulong userIdListSize = context.Request.SendBuff[0].Size;
+ ulong userIdListSize = context.Request.SendBuff[0].Size;
ulong screenshotDataPosition = context.Request.SendBuff[1].Position;
- ulong screenshotDataSize = context.Request.SendBuff[1].Size;
+ ulong screenshotDataSize = context.Request.SendBuff[1].Size;
+
// TODO: Parse the UserIdList.
- byte[] userIdList = context.Memory.GetSpan(userIdListPosition, (int)userIdListSize).ToArray();
+ _ = context.Memory.GetSpan(userIdListPosition, (int)userIdListSize).ToArray();
byte[] screenshotData = context.Memory.GetSpan(screenshotDataPosition, (int)screenshotDataSize, true).ToArray();
@@ -95,4 +102,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
return resultCode;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
index 337fa9ee..c3e2036b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
@@ -5,4 +5,4 @@
{
public IScreenShotControlService(ServiceCtx context) { }
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenshotService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenshotService.cs
index 03703e05..ab921e08 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenshotService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenshotService.cs
@@ -5,4 +5,4 @@ namespace Ryujinx.HLE.HOS.Services.Caps
{
public IScreenshotService(ServiceCtx context) { }
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
index 2615eeda..51a6fd8a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
@@ -2,17 +2,17 @@
{
enum ResultCode
{
- ModuleId = 206,
+ ModuleId = 206,
ErrorCodeShift = 9,
Success = 0,
- InvalidArgument = (2 << ErrorCodeShift) | ModuleId,
- ShimLibraryVersionAlreadySet = (7 << ErrorCodeShift) | ModuleId,
- OutOfRange = (8 << ErrorCodeShift) | ModuleId,
- InvalidContentType = (14 << ErrorCodeShift) | ModuleId,
- NullOutputBuffer = (141 << ErrorCodeShift) | ModuleId,
- NullInputBuffer = (142 << ErrorCodeShift) | ModuleId,
- BlacklistedPid = (822 << ErrorCodeShift) | ModuleId
+ InvalidArgument = (2 << ErrorCodeShift) | ModuleId,
+ ShimLibraryVersionAlreadySet = (7 << ErrorCodeShift) | ModuleId,
+ OutOfRange = (8 << ErrorCodeShift) | ModuleId,
+ InvalidContentType = (14 << ErrorCodeShift) | ModuleId,
+ NullOutputBuffer = (141 << ErrorCodeShift) | ModuleId,
+ NullInputBuffer = (142 << ErrorCodeShift) | ModuleId,
+ BlacklistedPid = (822 << ErrorCodeShift) | ModuleId,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
index b9bc799c..09c9b176 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
@@ -6,11 +6,11 @@ namespace Ryujinx.HLE.HOS.Services.Caps.Types
struct AlbumFileDateTime
{
public ushort Year;
- public byte Month;
- public byte Day;
- public byte Hour;
- public byte Minute;
- public byte Second;
- public byte UniqueId;
+ public byte Month;
+ public byte Day;
+ public byte Hour;
+ public byte Minute;
+ public byte Second;
+ public byte UniqueId;
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
index 479675d6..2a1fbcac 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
@@ -5,6 +5,6 @@
Degrees0,
Degrees90,
Degrees180,
- Degrees270
+ Degrees270,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
index cfe6c1e0..2fe99d45 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
@@ -3,6 +3,6 @@
enum AlbumStorage : byte
{
Nand,
- Sd
+ Sd,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
index 699bb418..701fa63d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
@@ -6,12 +6,12 @@ namespace Ryujinx.HLE.HOS.Services.Caps.Types
[StructLayout(LayoutKind.Sequential, Size = 0x20)]
struct ApplicationAlbumEntry
{
- public ulong Size;
- public ulong TitleId;
+ public ulong Size;
+ public ulong TitleId;
public AlbumFileDateTime AlbumFileDateTime;
- public AlbumStorage AlbumStorage;
- public ContentType ContentType;
- public Array5<byte> Padding;
- public byte Unknown0x1f; // Always 1
+ public AlbumStorage AlbumStorage;
+ public ContentType ContentType;
+ public Array5<byte> Padding;
+ public byte Unknown0x1f; // Always 1
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
index 5f8bb537..56023d2e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
@@ -5,6 +5,6 @@
Screenshot,
Movie,
ExtraMovie,
- Unknown
+ Unknown,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
index 5528379a..e7d8d0af 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
@@ -6,10 +6,10 @@ namespace Ryujinx.HLE.HOS.Services.Caps.Types
[StructLayout(LayoutKind.Sequential, Size = 0x40)]
struct ScreenShotAttribute
{
- public uint Unknown0x00; // Always 0
+ public uint Unknown0x00; // Always 0
public AlbumImageOrientation AlbumImageOrientation;
- public uint Unknown0x08; // Always 0
- public uint Unknown0x0C; // Always 1
- public Array30<byte> Unknown0x10; // Always 0
+ public uint Unknown0x08; // Always 0
+ public uint Unknown0x0C; // Always 1
+ public Array30<byte> Unknown0x10; // Always 0
}
-} \ No newline at end of file
+}