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 = |