mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-24 17:51:04 +00:00
Implement function ReplySleepQuery
Update the APT FunctionTable Correct APT::AppletUtility Parameter and comment Signed-off-by: JamePeng <jame_peng@sina.com>
This commit is contained in:
parent
3994c85070
commit
69ca50645e
@ -92,11 +92,19 @@ void GetSharedFont(Service::Interface* self) {
|
||||
}
|
||||
}
|
||||
|
||||
void ReplySleepQuery(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
u32 app_id = cmd_buff[1];
|
||||
QueryReply query_reply = static_cast<QueryReply>(cmd_buff[2]);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
|
||||
LOG_WARNING(Service_APT, "(STUBBED) app_id=0x%08X QueryReply=0x%08X", app_id, query_reply);
|
||||
}
|
||||
|
||||
void NotifyToWait(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
u32 app_id = cmd_buff[1];
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
|
||||
LOG_WARNING(Service_APT, "(STUBBED) app_id=%u", app_id);
|
||||
LOG_WARNING(Service_APT, "(STUBBED) app_id=0x%08X", app_id);
|
||||
}
|
||||
|
||||
void GetLockHandle(Service::Interface* self) {
|
||||
@ -145,7 +153,7 @@ void IsRegistered(Service::Interface* self) {
|
||||
// handle this properly once we implement multiprocess support.
|
||||
cmd_buff[2] = 0; // Set to not registered by default
|
||||
|
||||
if (app_id == static_cast<u32>(AppletId::AnyLibraryApplet)) {
|
||||
if (app_id == static_cast<u32>(AppletId::AnyLibrary)) {
|
||||
cmd_buff[2] = HLE::Applets::IsLibraryAppletRunning() ? 1 : 0;
|
||||
} else if (auto applet = HLE::Applets::Applet::Get(static_cast<AppletId>(app_id))) {
|
||||
cmd_buff[2] = 1; // Set to registered
|
||||
@ -288,19 +296,17 @@ void StartApplication(Service::Interface* self) {
|
||||
|
||||
void AppletUtility(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
// These are from 3dbrew - I'm not really sure what they're used for.
|
||||
u32 command = cmd_buff[1];
|
||||
u32 buffer1_size = cmd_buff[2];
|
||||
u32 buffer2_size = cmd_buff[3];
|
||||
u32 buffer1_addr = cmd_buff[5];
|
||||
u32 buffer2_addr = cmd_buff[65];
|
||||
u32 utility = cmd_buff[1];
|
||||
u32 input_size = cmd_buff[2];
|
||||
u32 output_size = cmd_buff[3];
|
||||
u32 translation_descriptor = cmd_buff[4];
|
||||
u32 input_address = cmd_buff[5];
|
||||
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
|
||||
cmd_buff[2] = RESULT_SUCCESS.raw; // No error
|
||||
|
||||
LOG_WARNING(Service_APT, "(STUBBED) called command=0x%08X, buffer1_size=0x%08X, buffer2_size=0x%08X, "
|
||||
"buffer1_addr=0x%08X, buffer2_addr=0x%08X", command, buffer1_size, buffer2_size,
|
||||
buffer1_addr, buffer2_addr);
|
||||
LOG_WARNING(Service_APT, "(STUBBED) called Utility=0x%08X, InputSize=0x%08X, OutputSize=0x%08X, "
|
||||
"TranslationDescriptor=0x%08X, InputAddress=0x%08X", utility, input_size, output_size, translation_descriptor, input_address);
|
||||
}
|
||||
|
||||
void SetAppCpuTimeLimit(Service::Interface* self) {
|
||||
|
@ -31,6 +31,13 @@ struct AppletStartupParameter {
|
||||
u8* data = nullptr;
|
||||
};
|
||||
|
||||
enum class QueryReply : u32
|
||||
{
|
||||
REPLY_REJECT = 0x0,
|
||||
REPLY_ACCEPT = 0x1,
|
||||
REPLY_LATER = 0x2
|
||||
};
|
||||
|
||||
/// Signals used by APT functions
|
||||
enum class SignalType : u32 {
|
||||
None = 0x0,
|
||||
@ -53,17 +60,27 @@ enum class AppletId : u32 {
|
||||
InstructionManual = 0x115,
|
||||
Notifications = 0x116,
|
||||
Miiverse = 0x117,
|
||||
MiiversePosting = 0x118,
|
||||
AmiiboSettings = 0x119,
|
||||
SoftwareKeyboard1 = 0x201,
|
||||
Ed = 0x202,
|
||||
PnoteApp = 0x204,
|
||||
SnoteApp = 0x205,
|
||||
Error = 0x206,
|
||||
Mint = 0x207,
|
||||
Extrapad = 0x208,
|
||||
Memolib = 0x209,
|
||||
MiiSelectorEd1 = 0x202,
|
||||
PhotoSelector1 = 0x204,
|
||||
SoundSelector1 = 0x205,
|
||||
ErrorDisplay1 = 0x206,
|
||||
EShopMint1 = 0x207,
|
||||
Extrapad1 = 0x208,
|
||||
Notepad1 = 0x209,
|
||||
Application = 0x300,
|
||||
AnyLibraryApplet = 0x400,
|
||||
EShopTiger = 0x301,
|
||||
AnyLibrary = 0x400,
|
||||
SoftwareKeyboard2 = 0x401,
|
||||
MiiSelectorEd2 = 0x402,
|
||||
PhotoSelector2 = 0x404,
|
||||
SoundSelector2 = 0x405,
|
||||
ErrorDisplay2 = 0x406,
|
||||
EShopMint2 = 0x407,
|
||||
Extrapad2 = 0x408,
|
||||
Notepad2 = 0x409
|
||||
};
|
||||
|
||||
/// Send a parameter to the currently-running application, which will read it via ReceiveParameter
|
||||
@ -88,6 +105,17 @@ void Initialize(Service::Interface* self);
|
||||
*/
|
||||
void GetSharedFont(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* APT::ReplySleepQuery service function
|
||||
* Inputs:
|
||||
* 1 : AppID
|
||||
* 2 : ReplySleepQuery
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
|
||||
void ReplySleepQuery(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* APT::NotifyToWait service function
|
||||
* Inputs:
|
||||
@ -260,13 +288,14 @@ void StartApplication(Service::Interface* self);
|
||||
/**
|
||||
* APT::AppletUtility service function
|
||||
* Inputs:
|
||||
* 1 : Unknown, but clearly used for something
|
||||
* 2 : Buffer 1 size (purpose is unknown)
|
||||
* 3 : Buffer 2 size (purpose is unknown)
|
||||
* 5 : Buffer 1 address (purpose is unknown)
|
||||
* 65 : Buffer 2 address (purpose is unknown)
|
||||
* 1 : Utility
|
||||
* 2 : Input Size
|
||||
* 3 : Output Size
|
||||
* 4: Translation descriptor: (Input Size << 14) | 0x402
|
||||
* 5 : void*, Input
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : Applet Result
|
||||
*/
|
||||
void AppletUtility(Service::Interface* self);
|
||||
|
||||
|
@ -9,25 +9,95 @@ namespace Service {
|
||||
namespace APT {
|
||||
|
||||
const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x00010040, GetLockHandle, "GetLockHandle?"},
|
||||
{0x00020080, Initialize, "Initialize?"},
|
||||
{0x00030040, Enable, "Enable?"},
|
||||
{0x00040040, nullptr, "Finalize?"},
|
||||
{0x00050040, nullptr, "GetAppletManInfo?"},
|
||||
{0x00060040, nullptr, "GetAppletInfo?"},
|
||||
{0x00010040, GetLockHandle, "GetLockHandle" },
|
||||
{0x00020080, Initialize, "Initialize" },
|
||||
{0x00030040, Enable, "Enable" },
|
||||
{0x00040040, nullptr, "Finalize" },
|
||||
{0x00050040, nullptr, "GetAppletManInfo" },
|
||||
{0x00060040, nullptr, "GetAppletInfo" },
|
||||
{0x00070000, nullptr, "GetLastSignaledAppletId" },
|
||||
{0x00080000, nullptr, "CountRegisteredApplet" },
|
||||
{0x00090040, IsRegistered, "IsRegistered" },
|
||||
{0x000A0040, nullptr, "GetAttribute" },
|
||||
{0x000B0040, InquireNotification, "InquireNotification" },
|
||||
{0x000C0104, SendParameter, "SendParameter" },
|
||||
{0x000D0080, ReceiveParameter, "ReceiveParameter" },
|
||||
{0x000E0080, GlanceParameter, "GlanceParameter" },
|
||||
{0x000F0100, CancelParameter, "CancelParameter" },
|
||||
{0x001000C2, nullptr, "DebugFunc" },
|
||||
{0x001100C0, nullptr, "MapProgramIdForDebug" },
|
||||
{0x00120040, nullptr, "SetHomeMenuAppletIdForDebug" },
|
||||
{0x00130000, nullptr, "GetPreparationState" },
|
||||
{0x00140040, nullptr, "SetPreparationState" },
|
||||
{0x00150140, nullptr, "PrepareToStartApplication" },
|
||||
{0x00160040, PreloadLibraryApplet, "PreloadLibraryApplet" },
|
||||
{0x00170040, nullptr, "FinishPreloadingLibraryApplet" },
|
||||
{0x00180040, PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet" },
|
||||
{0x001E0084, StartLibraryApplet, "StartLibraryApplet"},
|
||||
{0x003B0040, nullptr, "CancelLibraryApplet?"},
|
||||
{0x00430040, NotifyToWait, "NotifyToWait?"},
|
||||
{0x00440000, GetSharedFont, "GetSharedFont?"},
|
||||
{0x004B00C2, AppletUtility, "AppletUtility?"},
|
||||
{0x00550040, nullptr, "WriteInputToNsState?"},
|
||||
{0x00190040, nullptr, "PrepareToStartSystemApplet" },
|
||||
{0x001A0000, nullptr, "PrepareToStartNewestHomeMenu" },
|
||||
{0x001B00C4, nullptr, "StartApplication" },
|
||||
{0x001C0000, nullptr, "WakeupApplication" },
|
||||
{0x001D0000, nullptr, "CancelApplication" },
|
||||
{0x001E0084, nullptr, "StartLibraryApplet" },
|
||||
{0x001F0084, StartLibraryApplet, "StartSystemApplet" },
|
||||
{0x00200044, nullptr, "StartNewestHomeMenu" },
|
||||
{0x00210000, nullptr, "OrderToCloseApplication" },
|
||||
{0x00220040, nullptr, "PrepareToCloseApplication" },
|
||||
{0x00230040, nullptr, "PrepareToJumpToApplication" },
|
||||
{0x00240044, nullptr, "JumpToApplication" },
|
||||
{0x002500C0, nullptr, "PrepareToCloseLibraryApplet" },
|
||||
{0x00260000, nullptr, "PrepareToCloseSystemApplet" },
|
||||
{0x00270044, nullptr, "CloseApplication" },
|
||||
{0x00280044, nullptr, "CloseLibraryApplet" },
|
||||
{0x00290044, nullptr, "CloseSystemApplet" },
|
||||
{0x002A0000, nullptr, "OrderToCloseSystemApplet" },
|
||||
{0x002B0000, nullptr, "PrepareToJumpToHomeMenu" },
|
||||
{0x002C0044, nullptr, "JumpToHomeMenu" },
|
||||
{0x002D0000, nullptr, "PrepareToLeaveHomeMenu" },
|
||||
{0x002E0044, nullptr, "LeaveHomeMenu" },
|
||||
{0x002F0040, nullptr, "PrepareToLeaveResidentApplet" },
|
||||
{0x00300044, nullptr, "LeaveResidentApplet" },
|
||||
{0x00310100, nullptr, "PrepareToDoApplicationJump" },
|
||||
{0x00320084, nullptr, "DoApplicationJump" },
|
||||
{0x00330000, nullptr, "GetProgramIdOnApplicationJump" },
|
||||
{0x00340084, nullptr, "SendDeliverArg" },
|
||||
{0x00350080, nullptr, "ReceiveDeliverArg" },
|
||||
{0x00360040, nullptr, "LoadSysMenuArg" },
|
||||
{0x00370042, nullptr, "StoreSysMenuArg" },
|
||||
{0x00380040, nullptr, "PreloadResidentApplet" },
|
||||
{0x00390040, nullptr, "PrepareToStartResidentApplet" },
|
||||
{0x003A0044, nullptr, "StartResidentApplet" },
|
||||
{0x003B0040, nullptr, "CancelLibraryApplet" },
|
||||
{0x003C0042, nullptr, "SendDspSleep" },
|
||||
{0x003D0042, nullptr, "SendDspWakeUp" },
|
||||
{0x003E0080, ReplySleepQuery, "ReplySleepQuery" },
|
||||
{0x003F0040, nullptr, "ReplySleepNotificationComplete" },
|
||||
{0x00400042, nullptr, "SendCaptureBufferInfo" },
|
||||
{0x00410040, nullptr, "ReceiveCaptureBufferInfo" },
|
||||
{0x00420080, nullptr, "SleepSystem" },
|
||||
{0x00430040, NotifyToWait, "NotifyToWait" },
|
||||
{0x00440000, GetSharedFont, "GetSharedFont" },
|
||||
{0x00450040, nullptr, "GetWirelessRebootInfo" },
|
||||
{0x00460104, nullptr, "Wrap" },
|
||||
{0x00470104, nullptr, "Unwrap" },
|
||||
{0x00480100, nullptr, "GetProgramInfo" },
|
||||
{0x00490180, nullptr, "Reboot" },
|
||||
{0x004A0040, nullptr, "GetCaptureInfo" },
|
||||
{0x004B00C2, AppletUtility, "AppletUtility" },
|
||||
{0x004C0000, nullptr, "SetFatalErrDispMode" },
|
||||
{0x004D0080, nullptr, "GetAppletProgramInfo" },
|
||||
{0x004E0000, nullptr, "HardwareResetAsync" },
|
||||
{0x004F0080, SetAppCpuTimeLimit, "SetAppCpuTimeLimit" },
|
||||
{0x00500040, GetAppCpuTimeLimit, "GetAppCpuTimeLimit" },
|
||||
{0x00510080, nullptr, "GetStartupArgument" },
|
||||
{0x00520104, nullptr, "Wrap1" },
|
||||
{0x00530104, nullptr, "Unwrap1" },
|
||||
{0x00580002, nullptr, "GetProgramID" },
|
||||
{0x01010000, nullptr, "CheckNew3DSApp" },
|
||||
{0x01020000, nullptr, "CheckNew3DS" },
|
||||
{0x01040000, nullptr, "IsStandardMemoryLayout" },
|
||||
{0x01050100, nullptr, "IsTitleAllowed" }
|
||||
|
||||
};
|
||||
|
||||
APT_A_Interface::APT_A_Interface() {
|
||||
|
@ -17,13 +17,13 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x00060040, nullptr, "GetAppletInfo"},
|
||||
{0x00070000, nullptr, "GetLastSignaledAppletId"},
|
||||
{0x00080000, nullptr, "CountRegisteredApplet"},
|
||||
{0x00090040, nullptr, "IsRegistered"},
|
||||
{0x00090040, IsRegistered, "IsRegistered"},
|
||||
{0x000A0040, nullptr, "GetAttribute"},
|
||||
{0x000B0040, InquireNotification, "InquireNotification"},
|
||||
{0x000C0104, nullptr, "SendParameter"},
|
||||
{0x000D0080, ReceiveParameter, "ReceiveParameter"},
|
||||
{0x000E0080, GlanceParameter, "GlanceParameter"},
|
||||
{0x000F0100, nullptr, "CancelParameter"},
|
||||
{0x000F0100, CancelParameter, "CancelParameter"},
|
||||
{0x001000C2, nullptr, "DebugFunc"},
|
||||
{0x001100C0, nullptr, "MapProgramIdForDebug"},
|
||||
{0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"},
|
||||
@ -39,7 +39,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x001C0000, nullptr, "WakeupApplication"},
|
||||
{0x001D0000, nullptr, "CancelApplication"},
|
||||
{0x001E0084, nullptr, "StartLibraryApplet"},
|
||||
{0x001F0084, nullptr, "StartSystemApplet"},
|
||||
{0x001F0084, StartLibraryApplet, "StartSystemApplet"},
|
||||
{0x00200044, nullptr, "StartNewestHomeMenu"},
|
||||
{0x00210000, nullptr, "OrderToCloseApplication"},
|
||||
{0x00220040, nullptr, "PrepareToCloseApplication"},
|
||||
@ -70,7 +70,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x003B0040, nullptr, "CancelLibraryApplet"},
|
||||
{0x003C0042, nullptr, "SendDspSleep"},
|
||||
{0x003D0042, nullptr, "SendDspWakeUp"},
|
||||
{0x003E0080, nullptr, "ReplySleepQuery"},
|
||||
{0x003E0080, ReplySleepQuery, "ReplySleepQuery"},
|
||||
{0x003F0040, nullptr, "ReplySleepNotificationComplete"},
|
||||
{0x00400042, nullptr, "SendCaptureBufferInfo"},
|
||||
{0x00410040, nullptr, "ReceiveCaptureBufferInfo"},
|
||||
@ -87,14 +87,16 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x004C0000, nullptr, "SetFatalErrDispMode"},
|
||||
{0x004D0080, nullptr, "GetAppletProgramInfo"},
|
||||
{0x004E0000, nullptr, "HardwareResetAsync"},
|
||||
{0x004F0080, nullptr, "SetApplicationCpuTimeLimit"},
|
||||
{0x00500040, nullptr, "GetApplicationCpuTimeLimit"},
|
||||
{0x004F0080, SetAppCpuTimeLimit, "SetAppCpuTimeLimit" },
|
||||
{0x00500040, GetAppCpuTimeLimit, "GetAppCpuTimeLimit" },
|
||||
{0x00510080, nullptr, "GetStartupArgument"},
|
||||
{0x00520104, nullptr, "Wrap1"},
|
||||
{0x00530104, nullptr, "Unwrap1"},
|
||||
{0x00580002, nullptr, "GetProgramID"},
|
||||
{0x01010000, nullptr, "CheckNew3DSApp"},
|
||||
{0x01020000, nullptr, "CheckNew3DS"}
|
||||
{0x01020000, nullptr, "CheckNew3DS"},
|
||||
{0x01040000, nullptr, "IsStandardMemoryLayout" },
|
||||
{0x01050100, nullptr, "IsTitleAllowed" }
|
||||
};
|
||||
|
||||
APT_S_Interface::APT_S_Interface() {
|
||||
|
@ -70,7 +70,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x003B0040, nullptr, "CancelLibraryApplet"},
|
||||
{0x003C0042, nullptr, "SendDspSleep"},
|
||||
{0x003D0042, nullptr, "SendDspWakeUp"},
|
||||
{0x003E0080, nullptr, "ReplySleepQuery"},
|
||||
{0x003E0080, ReplySleepQuery, "ReplySleepQuery"},
|
||||
{0x003F0040, nullptr, "ReplySleepNotificationComplete"},
|
||||
{0x00400042, nullptr, "SendCaptureBufferInfo"},
|
||||
{0x00410040, nullptr, "ReceiveCaptureBufferInfo"},
|
||||
@ -94,7 +94,9 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x00530104, nullptr, "Unwrap1"},
|
||||
{0x00580002, nullptr, "GetProgramID"},
|
||||
{0x01010000, nullptr, "CheckNew3DSApp"},
|
||||
{0x01020000, nullptr, "CheckNew3DS"}
|
||||
{0x01020000, nullptr, "CheckNew3DS"},
|
||||
{0x01040000, nullptr, "IsStandardMemoryLayout"},
|
||||
{0x01050100, nullptr, "IsTitleAllowed" }
|
||||
};
|
||||
|
||||
APT_U_Interface::APT_U_Interface() {
|
||||
|
@ -56,9 +56,14 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x000400C0, nullptr, "UnregisterService"},
|
||||
{0x00050100, GetServiceHandle, "GetServiceHandle"},
|
||||
{0x000600C2, nullptr, "RegisterHandle"},
|
||||
{0x000700C0, nullptr, "UnregisterPort" },
|
||||
{0x00080100, nullptr, "GetPort" },
|
||||
{0x00090040, nullptr, "Subscribe"},
|
||||
{0x000A0040, nullptr, "Unsubscribe" },
|
||||
{0x000B0000, nullptr, "ReceiveNotification"},
|
||||
{0x000C0080, nullptr, "PublishToSubscriber"},
|
||||
{0x000D0040, nullptr, "PublishAndGetSubscriber" },
|
||||
{0x000E00C0, nullptr, "IsServiceRegistered" }
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user