4c2d9ff3ff
* HLE: Refactoring of ApplicationLoader * Fix SDL2 Headless * Addresses gdkchan feedback * Fixes LoadUnpackedNca RomFS loading * remove useless casting * Cleanup and fixe empty application name * Remove ProcessInfo * Fixes typo * ActiveProcess to ActiveApplication * Update check * Clean using. * Use the correct filepath when loading Homebrew.npdm * Fix NRE in ProcessResult if MetaLoader is null * Add more checks for valid processId & return success * Add missing logging statement for npdm error * Return result for LoadKip() * Move error logging out of PFS load extension method This avoids logging "Could not find Main NCA" followed by "Loading main..." when trying to start hbl. * Fix GUIs not checking load results * Fix style and formatting issues * Fix formatting and wording * gtk: Refactor LoadApplication() --------- Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
78 lines
No EOL
2.6 KiB
C#
78 lines
No EOL
2.6 KiB
C#
using Ryujinx.Common;
|
|
using System;
|
|
|
|
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy
|
|
{
|
|
class ILibraryAppletSelfAccessor : IpcService
|
|
{
|
|
private AppletStandalone _appletStandalone = new AppletStandalone();
|
|
|
|
public ILibraryAppletSelfAccessor(ServiceCtx context)
|
|
{
|
|
if (context.Device.Processes.ActiveApplication.ProgramId == 0x0100000000001009)
|
|
{
|
|
// Create MiiEdit data.
|
|
_appletStandalone = new AppletStandalone()
|
|
{
|
|
AppletId = AppletId.MiiEdit,
|
|
LibraryAppletMode = LibraryAppletMode.AllForeground
|
|
};
|
|
|
|
byte[] miiEditInputData = new byte[0x100];
|
|
miiEditInputData[0] = 0x03; // Hardcoded unknown value.
|
|
|
|
_appletStandalone.InputData.Enqueue(miiEditInputData);
|
|
}
|
|
else
|
|
{
|
|
throw new NotImplementedException($"{context.Device.Processes.ActiveApplication.ProgramId} applet is not implemented.");
|
|
}
|
|
}
|
|
|
|
[CommandHipc(0)]
|
|
// PopInData() -> object<nn::am::service::IStorage>
|
|
public ResultCode PopInData(ServiceCtx context)
|
|
{
|
|
byte[] appletData = _appletStandalone.InputData.Dequeue();
|
|
|
|
if (appletData.Length == 0)
|
|
{
|
|
return ResultCode.NotAvailable;
|
|
}
|
|
|
|
MakeObject(context, new IStorage(appletData));
|
|
|
|
return ResultCode.Success;
|
|
}
|
|
|
|
[CommandHipc(11)]
|
|
// GetLibraryAppletInfo() -> nn::am::service::LibraryAppletInfo
|
|
public ResultCode GetLibraryAppletInfo(ServiceCtx context)
|
|
{
|
|
LibraryAppletInfo libraryAppletInfo = new LibraryAppletInfo()
|
|
{
|
|
AppletId = _appletStandalone.AppletId,
|
|
LibraryAppletMode = _appletStandalone.LibraryAppletMode
|
|
};
|
|
|
|
context.ResponseData.WriteStruct(libraryAppletInfo);
|
|
|
|
return ResultCode.Success;
|
|
}
|
|
|
|
[CommandHipc(14)]
|
|
// GetCallerAppletIdentityInfo() -> nn::am::service::AppletIdentityInfo
|
|
public ResultCode GetCallerAppletIdentityInfo(ServiceCtx context)
|
|
{
|
|
AppletIdentifyInfo appletIdentifyInfo = new AppletIdentifyInfo()
|
|
{
|
|
AppletId = AppletId.QLaunch,
|
|
TitleId = 0x0100000000001000
|
|
};
|
|
|
|
context.ResponseData.WriteStruct(appletIdentifyInfo);
|
|
|
|
return ResultCode.Success;
|
|
}
|
|
}
|
|
} |