aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Mii
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2021-06-28 20:54:45 +0200
committerGitHub <noreply@github.com>2021-06-28 20:54:45 +0200
commita79b39b91347816ea14677b58af738b70df03e9c (patch)
tree824a7e056bcd18aced7679df5adb7f5b1d4f6405 /Ryujinx.HLE/HOS/Services/Mii
parentfefd4619a5347b4ef86314a4e17e1d6e63ced297 (diff)
no name: Mii Editor applet support (#2419)
* no name: Mii Editor applet support * addresses gdkchan feedback * Fix comment * Bypass MountCounter of MiiDatabaseManager * Fix GetSettingsPlatformRegion * Disable Applet Menu for unsupported firmwares
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Mii')
-rw-r--r--Ryujinx.HLE/HOS/Services/Mii/Helper.cs2
-rw-r--r--Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs35
-rw-r--r--Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs6
3 files changed, 39 insertions, 4 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Mii/Helper.cs b/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
index d5fa98ea..47debd59 100644
--- a/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
+++ b/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
@@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Mii
public static UInt128 GetDeviceId()
{
// FIXME: call set:sys GetMiiAuthorId
- return new UInt128(0, 1);
+ return new UInt128("5279754d69694e780000000000000000"); // RyuMiiNx
}
public static ReadOnlySpan<byte> Ver3FacelineColorTable => new byte[] { 0, 1, 2, 3, 4, 5 };
diff --git a/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs b/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
index a9f76902..1792bbb7 100644
--- a/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
+++ b/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
@@ -1,8 +1,41 @@
-namespace Ryujinx.HLE.HOS.Services.Mii
+using Ryujinx.Common.Logging;
+
+namespace Ryujinx.HLE.HOS.Services.Mii
{
[Service("miiimg")] // 5.0.0+
class IImageDatabaseService : IpcService
{
+ private uint _imageCount;
+ private bool _isDirty;
+
public IImageDatabaseService(ServiceCtx context) { }
+
+ [CommandHipc(0)]
+ // Initialize(b8) -> b8
+ public ResultCode Initialize(ServiceCtx context)
+ {
+ // TODO: Service uses MiiImage:/database.dat if true, seems to use hardcoded data if false.
+ bool useHardcodedData = context.RequestData.ReadBoolean();
+
+ _imageCount = 0;
+ _isDirty = false;
+
+ context.ResponseData.Write(_isDirty);
+
+ Logger.Stub?.PrintStub(LogClass.ServiceMii, new { useHardcodedData });
+
+ return ResultCode.Success;
+ }
+
+ [CommandHipc(11)]
+ // GetCount() -> u32
+ public ResultCode GetCount(ServiceCtx context)
+ {
+ context.ResponseData.Write(_imageCount);
+
+ Logger.Stub?.PrintStub(LogClass.ServiceMii);
+
+ return ResultCode.Success;
+ }
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs b/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
index 4491f2c8..0bf15a7f 100644
--- a/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
@@ -101,6 +101,9 @@ namespace Ryujinx.HLE.HOS.Services.Mii
// Ensure we have valid data in the database
_database.Format();
+ // TODO: Unmount is currently not implemented properly at dispose, implement that and decrement MountCounter.
+ MountCounter = 0;
+
MountSave();
}
@@ -151,8 +154,6 @@ namespace Ryujinx.HLE.HOS.Services.Mii
}
}
-
-
return result;
}
@@ -183,6 +184,7 @@ namespace Ryujinx.HLE.HOS.Services.Mii
if (result.IsSuccess())
{
result = _filesystemClient.GetFileSize(out long fileSize, handle);
+
if (result.IsSuccess())
{
if (fileSize == Unsafe.SizeOf<NintendoFigurineDatabase>())