Applet Manager services: Difference between revisions

No edit summary
(12 intermediate revisions by the same user not shown)
Line 233: Line 233:
| 150 || [6.0.0+] ReportApplicationExitTimeout ||  
| 150 || [6.0.0+] ReportApplicationExitTimeout ||  
|-
|-
| 160 || [8.0.0+] SetApplicationAttribute ||
| 160 || [8.0.0+] [[#SetApplicationAttribute]] ||
|-
|-
| 170 || [8.0.0+] HasSaveDataAccessPermission ||
| 170 || [8.0.0+] HasSaveDataAccessPermission ||
Line 244: Line 244:


===== PushLaunchParameter =====
===== PushLaunchParameter =====
Takes an input u32 and an input [[#IStorage]], no output.
Takes an input u32 [[#LaunchParameterKind]] and an input [[#IStorage]], no output.


==== GetApplicationControlProperty ====
===== GetApplicationControlProperty =====
No input, takes a type-0x6 output buffer.
No input, takes a type-0x6 output buffer.


This gets the application [[NACP_Format|control.nacp]].
This gets the application [[NACP_Format|control.nacp]].
===== SetApplicationAttribute =====
Takes a type-0x15 input buffer containing an [[#ApplicationAttribute]], no output.


===== IAppletAccessor =====
===== IAppletAccessor =====
Line 556: Line 559:
| 13 || [4.0.0+] [[#CreateApplicationAndRequestToStartForQuest]] ||  
| 13 || [4.0.0+] [[#CreateApplicationAndRequestToStartForQuest]] ||  
|-
|-
| 14 || [7.0.0+] CreateApplicationWithAttributeAndPushAndRequestToStartForQuest || Takes a total of 8-bytes and a type-0x15 input buffer, return an output [[#IStorage]].
| 14 || [7.0.0+] [[#CreateApplicationWithAttributeAndPushAndRequestToStartForQuest]] ||
|-
|-
| 15 || [7.0.0+] CreateApplicationWithAttributeAndRequestToStartForQuest || Takes a total of 8-bytes and a type-0x15 input buffer, no output.
| 15 || [7.0.0+] [[#CreateApplicationWithAttributeAndRequestToStartForQuest]] ||  
|-
|-
| 20 || EnsureSaveData ||
| 20 || EnsureSaveData ||
Line 566: Line 569:
| 22 || [[#SetTerminateResult]] ||
| 22 || [[#SetTerminateResult]] ||
|-
|-
| 23 || GetDisplayVersion ||
| 23 || [[#GetDisplayVersion]] ||
|-
|-
| 24 || [2.0.0+] GetLaunchStorageInfoForDebug ||
| 24 || [2.0.0+] GetLaunchStorageInfoForDebug ||
Line 606: Line 609:
| 90 || [4.0.0+] [[#EnableApplicationCrashReport]] ||  
| 90 || [4.0.0+] [[#EnableApplicationCrashReport]] ||  
|-
|-
| 100 || [5.0.0+] InitializeApplicationCopyrightFrameBuffer ||  
| 100 || [5.0.0+] [[#InitializeApplicationCopyrightFrameBuffer]] ||  
|-
|-
| 101 || [5.0.0+] SetApplicationCopyrightImage ||  
| 101 || [5.0.0+] [[#SetApplicationCopyrightImage]] ||  
|-
|-
| 102 || [5.0.0+] [[#SetApplicationCopyrightVisibility]] ||  
| 102 || [5.0.0+] [[#SetApplicationCopyrightVisibility]] ||  
Line 616: Line 619:
| 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]] ||  
| 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]] ||  
|-
|-
| 120 || [5.0.0+] ExecuteProgram ||  
| 120 || [5.0.0+] [[#ExecuteProgram]] ||  
|-
|-
| 121 || [5.0.0+] [[#ClearUserChannel]] ||  
| 121 || [5.0.0+] [[#ClearUserChannel]] ||  
|-
|-
| 122 || [5.0.0+] UnpopToUserChannel ||  
| 122 || [5.0.0+] [[#UnpopToUserChannel]] ||  
|-
|-
| 123 || [5.0.0+] GetPreviousProgramIndex ||  
| 123 || [5.0.0+] [[#GetPreviousProgramIndex]] ||  
|-
|-
| 124 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash ||  
| 124 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash ||  
Line 651: Line 654:


==== CreateApplicationAndPushAndRequestToStartForQuest ====
==== CreateApplicationAndPushAndRequestToStartForQuest ====
Takes 2 input u32s (loaded from struct ApplicationAttributeForQuest), an input u64 titleID, and an input [[#IStorage]], no output.
Takes 2 input u32s (loaded from struct [[#ApplicationAttributeForQuest]]), an input u64 titleID, and an input [[#IStorage]], no output.


==== CreateApplicationAndRequestToStart ====
==== CreateApplicationAndRequestToStart ====
Line 659: Line 662:


==== CreateApplicationAndRequestToStartForQuest ====
==== CreateApplicationAndRequestToStartForQuest ====
Takes 2 input u32s (loaded from struct ApplicationAttributeForQuest) and an input u64 titleID, no output.
Takes 2 input u32s (loaded from struct [[#ApplicationAttributeForQuest]]) and an input u64 titleID, no output.


Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except without the input storage, official sw uses this when no input storage is specified.
Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except without the input storage, official sw uses this when no input storage is specified.
==== CreateApplicationWithAttributeAndPushAndRequestToStartForQuest ====
Takes an input u64 titleID, a type-0x15 input buffer containing an [[#ApplicationAttribute]], an input [[#IStorage]], no output.
Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except the entire attributes structure is directly specified via the input buffer. This command replaces [[#CreateApplicationAndPushAndRequestToStartForQuest]], official user-processes no longer use [[#CreateApplicationAndPushAndRequestToStartForQuest]].
==== CreateApplicationWithAttributeAndRequestToStartForQuest ====
Takes an input u64 titleID and a type-0x15 input buffer containing an [[#ApplicationAttribute]], no output.
Same as [[#CreateApplicationAndRequestToStartForQuest]] except the entire attributes structure is directly specified via the input buffer. This command replaces [[#CreateApplicationAndRequestToStartForQuest]], official user-processes no longer use [[#CreateApplicationAndPushAndRequestToStartForQuest]].


==== GetDesiredLanguage ====
==== GetDesiredLanguage ====
Line 670: Line 683:


For example, in some cases official apps use this with [[Error_codes|error]] 0x2A2 then uses svcBreak.
For example, in some cases official apps use this with [[Error_codes|error]] 0x2A2 then uses svcBreak.
==== GetDisplayVersion ====
No input, returns an output 0x10-byte struct.
The output struct is "nn::oe::DisplayVersion". This the DisplayVersion string copied from the application [[NACP_Format|control.nacp]], this is always NUL-terminated.


==== EndBlockingHomeButtonShortAndLongPressed ====
==== EndBlockingHomeButtonShortAndLongPressed ====
Line 711: Line 729:
==== EnableApplicationCrashReport ====
==== EnableApplicationCrashReport ====
Takes an input u8 bool, no output.
Takes an input u8 bool, no output.
==== InitializeApplicationCopyrightFrameBuffer ====
Takes an input TransferMemory handle, an u32 '''width''', an u32 '''height''', an u64 tmem_size, and no output.
User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720.
==== SetApplicationCopyrightImage ====
Takes a type-0x45 input buffer and 5 input s32s, no output.
The last s32 is "nn::oe::WindowOriginMode".
The first two s32s must not have the negative bit set, and the following two s32s must not be <1.


==== SetApplicationCopyrightVisibility ====
==== SetApplicationCopyrightVisibility ====
Line 728: Line 758:


Same as [[#QueryApplicationPlayStatistics]] except this uses [[Shared_Database_services|pdm:qry]] cmd16, to get playstats specific to userIDs.  
Same as [[#QueryApplicationPlayStatistics]] except this uses [[Shared_Database_services|pdm:qry]] cmd16, to get playstats specific to userIDs.  
==== ExecuteProgram ====
Takes an input u32 [[#ProgramSpecifyKind]] and an input u64, no output.


==== ClearUserChannel ====
==== ClearUserChannel ====
No input/output.
No input/output.
Clears the UserChannel.
==== UnpopToUserChannel ====
Takes an input [[#IStorage]], no output.
The input storage is pushed to the UserChannel, which is also used by [[#ClearUserChannel]].
User-processes create a storage using data specified by the user (written to offset=0 size=inputsize), with max size 0x1000. This storage is then used with this cmd.
==== GetPreviousProgramIndex ====
No input, returns an output s32.


==== CreateMovieMaker ====
==== CreateMovieMaker ====
Line 1,857: Line 1,902:
| 10 || Unexpected
| 10 || Unexpected
|}
|}
=== ProgramSpecifyKind ===
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || u8 ProgramIndex. "ExecuteProgram". User-process enters an infinite svcSleepThread loop afterwards.
|-
| 1 || u64 titleID. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1.
|-
| 2 || u64 = value 0. "RestartProgram"
|-
|}
This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]].


= AppletResourceUserId =
= AppletResourceUserId =
Line 1,866: Line 1,927:
= AppletKind =
= AppletKind =
This is 8-bytes.
This is 8-bytes.
= ApplicationAttributeForQuest =
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || See [[#ApplicationAttribute]].
|-
| 0x4 || 0x4 || See [[#ApplicationAttribute]].
|-
| 0x8 || 0x4 || See [[#ApplicationAttribute]].
|}
This struct is "nn::applet::ApplicationAttributeForQuest".
User-processes copy the first 0x8-bytes (0xC-bytes with [[#CreateApplicationWithAttributeAndPushAndRequestToStartForQuest]]/[[#CreateApplicationWithAttributeAndRequestToStartForQuest]]) to a [[#ApplicationAttribute]] with the rest of the struct being cleared, which is then passed to the actual cmd (CreateApplication*ToStartForQuest).
= ApplicationAttribute =
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Unknown. Default is 0.
|-
| 0x4 || 0x4 || Unknown. Default is 0.
|-
| 0x8 || 0x4 || float. Must be in the range of 0.0f-1.0f. The default is 1.0f.
|-
| 0xC || 0x14 || Unknown. Default is 0.
|}
This struct is "nn::am::ApplicationAttribute". This struct is 0x20-bytes.


= Notes =
= Notes =