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
This commit is contained in:
Ac_K 2021-06-28 20:54:45 +02:00 committed by GitHub
parent fefd4619a5
commit a79b39b913
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 591 additions and 33 deletions

View file

@ -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 };

View file

@ -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;
}
}
}

View file

@ -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>())