Changes

8,525 bytes added ,  16:33, 7 December 2019
Line 114: Line 114:  
|-
 
|-
 
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] ||
 
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] ||
 +
|-
 +
| 110 || [9.0.0+] [[#IsForceTerminateApplicationDisabledForDebug]] ||
 
|-
 
|-
 
| 200 || [8.0.0+] [[#LaunchDevMenu]] ||
 
| 200 || [8.0.0+] [[#LaunchDevMenu]] ||
Line 144: Line 146:     
==== PopRequestLaunchApplicationForDebug ====
 
==== PopRequestLaunchApplicationForDebug ====
Takes a type-0x6 output buffer containing an array of u128 userIDs, returns an output u64 titleID (<code>nn::ncm::ApplicationId</code>) and an output s32 '''total_userIDs'''.
+
Takes a type-0x6 output buffer containing an array of u128 userIDs, returns an output [[NCM_services#ApplicationId|ApplicationId]] and an output s32 '''total_userIDs'''.
    
The total entries in the userID buffer must be >= {total userIDs in state}.
 
The total entries in the userID buffer must be >= {total userIDs in state}.
 +
 +
==== IsForceTerminateApplicationDisabledForDebug ====
 +
No input, returns an output u8 bool.
 +
 +
When the cached value loaded from [[Settings_services#GetDebugModeFlag]] is 0 this will just set the bool to 0. Otherwise, the bool is loaded using data from [[System_Settings|system-setting]] <code>am.debug!disable_force_terminate_application</code>.
    
==== LaunchDevMenu ====
 
==== LaunchDevMenu ====
Line 283: Line 290:     
==== CreateApplication ====
 
==== CreateApplication ====
Takes an input u64 titleID (<code>nn::ncm::ApplicationId</code>), returns an [[#IApplicationAccessor]].
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an [[#IApplicationAccessor]].
    
==== PopLaunchRequestedApplication ====
 
==== PopLaunchRequestedApplication ====
Line 289: Line 296:     
==== CreateSystemApplication ====
 
==== CreateSystemApplication ====
Takes an input u64 titleID (<code>nn::ncm::SystemApplicationId</code>), returns an [[#IApplicationAccessor]].
+
Takes an input [[NCM_services#ApplicationId|SystemApplicationId]], returns an [[#IApplicationAccessor]].
   −
[[qlaunch]] only uses this with a hard-coded titleID for the "starter" title.
+
[[qlaunch]] only uses this with a hard-coded id for the "starter" title.
    
==== PopFloatingApplicationForDevelopment ====
 
==== PopFloatingApplicationForDevelopment ====
Line 346: Line 353:  
|-
 
|-
 
| 170 || [8.0.0+] [[#HasSaveDataAccessPermission]] ||
 
| 170 || [8.0.0+] [[#HasSaveDataAccessPermission]] ||
 +
|-
 +
| 180 || [9.0.0+] [[#PushToFriendInvitationStorageChannel]] ||
 +
|-
 +
| 190 || [9.0.0+] [[#PushToNotificationStorageChannel]] ||
 
|}
 
|}
   Line 357: Line 368:     
===== GetApplicationId =====
 
===== GetApplicationId =====
No input, returns an output u64 titleID.
+
No input, returns an output [[NCM_services#ApplicationId|ApplicationId]].
 
  −
Gets the Application titleID.
      
===== PushLaunchParameter =====
 
===== PushLaunchParameter =====
Line 410: Line 419:     
===== HasSaveDataAccessPermission =====
 
===== HasSaveDataAccessPermission =====
Takes an input u64 titleID, returns an output u8 bool flag.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool flag.
 +
 
 +
Gets whether the savedata specified by the input ApplicationId is accessible. The output flag indicates whether it's accessible.
 +
 
 +
If the ApplicationId matches the current application, this immediately returns success with flag=1.
   −
Gets whether the savedata specified by the input titleID is accessible. The output flag indicates whether it's accessible.
+
===== PushToFriendInvitationStorageChannel =====
 +
Takes an input [[#IStorage]], no output.
   −
If the titleID matches the current application titleID, this immediately returns success with flag=1.
+
Clears the FriendInvitation StorageChannel, then pushes the input storage there.
 +
 
 +
===== PushToNotificationStorageChannel =====
 +
Takes an input [[#IStorage]], no output.
 +
 
 +
Clears the Notification StorageChannel, then pushes the input storage there.
 +
 
 +
[[qlaunch]] will only push data for this when launching the Application when the Alarm was triggered, where the system was previously in sleep-mode. This data is the [[Glue_services|Notification]] ApplicationParameter.
    
===== IAppletAccessor =====
 
===== IAppletAccessor =====
Line 458: Line 479:  
|-
 
|-
 
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 +
|-
 +
| 0 || [9.0.0+] [[#SetTerminateResult]] ||
 
|-
 
|-
 
| 10 || [[#ReadThemeStorage]] ||  
 
| 10 || [[#ReadThemeStorage]] ||  
 
|-
 
|-
 
| 11 || [[#WriteThemeStorage]] ||  
 
| 11 || [[#WriteThemeStorage]] ||  
 +
|-
 +
| 20 || [9.0.0+] [[#PushToAppletBoundChannel]] ||
 +
|-
 +
| 21 || [9.0.0+] [[#TryPopFromAppletBoundChannel]] ||
 
|-
 
|-
 
| 40 || [8.0.0+] [[#GetDisplayLogicalResolution]] ||  
 
| 40 || [8.0.0+] [[#GetDisplayLogicalResolution]] ||  
Line 479: Line 506:  
=== WriteThemeStorage ===
 
=== WriteThemeStorage ===
 
Takes an input u64 '''offset''' and a type-0x21 input buffer, no output.
 
Takes an input u64 '''offset''' and a type-0x21 input buffer, no output.
 +
 +
=== PushToAppletBoundChannel ===
 +
Takes an input [[#IStorage]], no output.
 +
 +
This is similar to [[#PushToAppletBoundChannelForDebug]] (no DebugMode check), except the used s32 is loaded from elsewhere and must be in the range 31-32.
 +
 +
=== TryPopFromAppletBoundChannel ===
 +
No input, returns an output [[#IStorage]].
 +
 +
This is similar to [[#TryPopFromAppletBoundChannelForDebug]] (no DebugMode check), except the used s32 is loaded from elsewhere and must be in the range 31-32.
    
=== GetDisplayLogicalResolution ===
 
=== GetDisplayLogicalResolution ===
Line 588: Line 625:  
|-
 
|-
 
| 110 || [6.0.0+] [[#GetMainAppletAvailableUsers]] ||
 
| 110 || [6.0.0+] [[#GetMainAppletAvailableUsers]] ||
 +
|-
 +
| 120 || [9.0.0+] [[#GetLaunchStorageInfoForDebug]] ||
 +
|-
 +
| 130 || [9.0.0+] [[#GetGpuErrorDetectedSystemEvent]] ||
 
|}
 
|}
   Line 673: Line 714:     
==== GetCurrentApplicationId ====
 
==== GetCurrentApplicationId ====
No input, returns an output u64.
+
No input, returns an output [[NCM_services#ApplicationId|ApplicationId]].
   −
Gets the titleID for the currently running Application. titleID=0 when no Application is running.
+
Gets the [[NCM_services#ApplicationId|ApplicationId]] for the currently running Application. ApplicationId=0 when no Application is running.
    
==== RequestExitToSelf ====
 
==== RequestExitToSelf ====
Line 683: Line 724:     
==== CreateApplicationAndPushAndRequestToLaunch ====
 
==== CreateApplicationAndPushAndRequestToLaunch ====
Takes an input u64 titleID and an input #IStorage, no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]] and an input #IStorage, no output.
    
This is is similar to [[#CreateApplicationAndPushAndRequestToStart]].
 
This is is similar to [[#CreateApplicationAndPushAndRequestToStart]].
Line 763: Line 804:  
|-
 
|-
 
| 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]]
 
| 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]]
 +
|-
 +
| 30 || [9.0.0+] [[#SetHealthWarningShowingState]]
 
|-
 
|-
 
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
 
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
Line 776: Line 819:     
==== GetApplicationIdForLogo ====
 
==== GetApplicationIdForLogo ====
No input, returns an output u64 titleID.
+
No input, returns an output [[NCM_services#ApplicationId|ApplicationId]].
   −
Gets the application titleID for displaying the logo screen during application launch.
+
Gets the ApplicationId for displaying the logo screen during application launch.
   −
When no application is running, this returns success with titleID=0.
+
When no application is running, this returns success with ApplicationId=0.
    
==== SetGpuTimeSliceBoost ====
 
==== SetGpuTimeSliceBoost ====
Line 806: Line 849:  
==== SetHandlingHomeButtonShortPressedEnabled ====
 
==== SetHandlingHomeButtonShortPressedEnabled ====
 
Takes an input u8 bool, no output.
 
Takes an input u8 bool, no output.
 +
 +
==== SetHealthWarningShowingState ====
 +
Takes an input u8 bool, no output.
 +
 +
This writes the input bool into state, signals an Event, and returns 0.
    
==== SetRequiresGpuResourceUse ====
 
==== SetRequiresGpuResourceUse ====
Line 930: Line 978:  
| 130 || [8.0.0+] [[#GetGpuErrorDetectedSystemEvent]] ||  
 
| 130 || [8.0.0+] [[#GetGpuErrorDetectedSystemEvent]] ||  
 
|-
 
|-
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]] ||  
+
| 140 || [9.0.0+] [[#GetFriendInvitationStorageChannelEvent]] ||
 +
|-
 +
| 141 || [9.0.0+] [[#TryPopFromFriendInvitationStorageChannel]] ||
 +
|-
 +
| 150 || [9.0.0+] [[#GetNotificationStorageChannelEvent]] ||  
 
|-
 
|-
| 1000 || [5.0.0+] [[#CreateMovieMaker]] ||  
+
| 151 || [9.0.0+] [[#TryPopFromNotificationStorageChannel]] ||  
 
|-
 
|-
| 1001 || [5.0.0+] [[#PrepareForJit]] ||
+
| 160 || [9.0.0+] [[#GetHealthWarningDisappearedSystemEvent]] ||
 +
|-
 +
| 170 || [9.0.0+] [[#SetHdcpAuthenticationActivated]] ||
 +
|-
 +
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]] ||
 +
|-
 +
| 1000 || [5.0.0+] [[#CreateMovieMaker]] ||
 +
|-
 +
| 1001 || [5.0.0+] [[#PrepareForJit]] ||
 
|}
 
|}
   Line 950: Line 1,010:     
==== CreateApplicationAndPushAndRequestToStart ====
 
==== CreateApplicationAndPushAndRequestToStart ====
Takes an input u64 titleID and an input [[#IStorage]], no output. titleID=0 can be used to relaunch the current application.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]] and an input [[#IStorage]], no output. ApplicationId=0 can be used to relaunch the current application.
    
==== 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 [[NCM_services#ApplicationId|ApplicationId]], and an input [[#IStorage]], no output.
    
==== CreateApplicationAndRequestToStart ====
 
==== CreateApplicationAndRequestToStart ====
Takes an input u64 titleID, no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
    
Same as [[#CreateApplicationAndPushAndRequestToStart]] except without the input storage, official sw uses this when no input storage is specified.
 
Same as [[#CreateApplicationAndPushAndRequestToStart]] except without the input storage, official sw uses this when no input storage is specified.
    
==== 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 [[NCM_services#ApplicationId|ApplicationId]], 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 ====
 
==== CreateApplicationWithAttributeAndPushAndRequestToStartForQuest ====
Takes an input u64 titleID, a type-0x15 input buffer containing an [[#ApplicationAttribute]], an input [[#IStorage]], no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], 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]].
 
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 ====
 
==== CreateApplicationWithAttributeAndRequestToStartForQuest ====
Takes an input u64 titleID and a type-0x15 input buffer containing an [[#ApplicationAttribute]], no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]] 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]].
 
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]].
Line 1,091: Line 1,151:     
==== QueryApplicationPlayStatistics ====
 
==== QueryApplicationPlayStatistics ====
Takes a type-0x6 output buffer containing an array of [[Shared_Database_services|ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 titleIDs. Returns an output s32 for actual total output entries.
+
Takes a type-0x6 output buffer containing an array of [[Shared_Database_services|ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of [[NCM_services#ApplicationId|ApplicationId]]. Returns an output s32 for actual total output entries.
    
The number of entries in each array is the same.
 
The number of entries in each array is the same.
Line 1,100: Line 1,160:     
==== QueryApplicationPlayStatisticsByUid ====
 
==== QueryApplicationPlayStatisticsByUid ====
Takes a u128 userID, a type-0x6 output buffer containing an array of [[Shared_Database_services|ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 titleIDs. Returns an output s32 for actual total output entries.
+
Takes a u128 userID, a type-0x6 output buffer containing an array of [[Shared_Database_services|ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of [[NCM_services#ApplicationId|ApplicationId]]. Returns an output s32 for actual total output entries.
    
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.  
Line 1,130: Line 1,190:  
No input, returns an output Event handle with autoclear=false.
 
No input, returns an output Event handle with autoclear=false.
   −
This is used by sdknso during applet-application initialization. A seperate thread is setup where event-waiting is handled. When the Event is signaled, official sw will assert.
+
This is used by sdknso during applet-application initialization. A separate thread is setup where event-waiting is handled. When the Event is signaled, official sw will assert.
 +
 
 +
==== GetFriendInvitationStorageChannelEvent ====
 +
No input, returns an output Event handle with EventClearMode=0.
 +
 
 +
This is exposed by sdknso under <code>nn::friends::</code>. This returns a ptr to the cached Event in global state, with the Event being loaded if not previously initialized.
 +
 
 +
==== TryPopFromFriendInvitationStorageChannel ====
 +
No input, returns an output [[#IStorage]].
 +
 
 +
This uses the same StorageChannel as [[#PushToFriendInvitationStorageChannel]].
 +
 
 +
This is exposed by sdknso under <code>nn::friends::</code>. When the storage_size is <0x10, this returns false. <code>data_size = storage_size-0x10;</code> Then the first 0x10-bytes from storage are read to stack, which is later copied to the output Uid on success prior to returning. Then the storage is read into the specified output buffer with storage-offset 0x10, where the size is <code>size = data_size > buf_size ? buf_size : data_size</code>. Reading is skipped if size is zero. Afterwards the used size is written to an output param. On success, true is returned.
 +
 
 +
==== GetNotificationStorageChannelEvent ====
 +
No input, returns an output Event handle with EventClearMode=0.
 +
 
 +
This is exposed by sdknso under <code>nn::notification::</code>. This returns a ptr to the cached Event in global state, with the Event being loaded if not previously initialized.
 +
 
 +
==== TryPopFromNotificationStorageChannel ====
 +
No input, returns an output [[#IStorage]].
 +
 
 +
This uses the same StorageChannel as [[#PushToNotificationStorageChannel]].
 +
 
 +
This is exposed by sdknso under <code>nn::notification::</code>. The storage is read into the specified output buffer, where the size is <code>size = storage_size > buf_size ? buf_size : storage_size</code>. Reading is skipped if size is zero. Afterwards the used size is written to an output param.
 +
 
 +
==== GetHealthWarningDisappearedSystemEvent ====
 +
No input, returns an output Event with EventClearMode=0.
 +
 
 +
==== SetHdcpAuthenticationActivated ====
 +
Takes an input u8 bool, no output.
    
==== StartContinuousRecordingFlushForDebug ====
 
==== StartContinuousRecordingFlushForDebug ====
Line 1,374: Line 1,464:  
|-
 
|-
 
| 91 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]] ||
 
| 91 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]] ||
 +
|-
 +
| 100 || [9.1.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] ||
 
|-
 
|-
 
| 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] ||
 
| 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] ||
 +
|-
 +
| 300 || [9.0.0+] [[#GetSettingsPlatformRegion]] ||
 
|}
 
|}
   Line 1,510: Line 1,604:     
=== GetApplicationIdByContentActionName ===
 
=== GetApplicationIdByContentActionName ===
Takes a type-0x5 input buffer containing a string, returns an output u64 titleID.
+
Takes a type-0x5 input buffer containing a string, returns an output [[NCM_services#ApplicationId|ApplicationId]].
   −
Gets the application titleID for the specified ContentActionName string. Returns an error when the current [[#AppletId]] isn't 0x04 (when the current applet isn't a SystemApplication).
+
Gets the ApplicationId for the specified ContentActionName string. Returns an error when the current [[#AppletId]] isn't 0x04 (when the current applet isn't a SystemApplication).
    
=== SetCpuBoostMode ===
 
=== SetCpuBoostMode ===
Line 1,531: Line 1,625:  
No input, returns an output u32.
 
No input, returns an output u32.
   −
This returns the output from omm [[#Cmd26]].
+
This returns the output from [[#GetOperationModeSystemInfo_2|omm GetOperationModeSystemInfo]].
 +
 
 +
=== GetSettingsPlatformRegion ===
 +
No input, returns an output u8.
 +
 
 +
This just returns the output from [[Settings_services#GetPlatformRegion|setsys GetPlatformRegion]].
    
== ISelfController ==
 
== ISelfController ==
Line 1,607: Line 1,706:  
|-
 
|-
 
| 71 || [5.0.0+] [[#GetCurrentIlluminanceEx]]
 
| 71 || [5.0.0+] [[#GetCurrentIlluminanceEx]]
 +
|-
 +
| 72 || [9.0.0+] [[#SetInputDetectionPolicy]]
 
|-
 
|-
 
| 80 || [4.0.0+] [[#SetWirelessPriorityMode]]
 
| 80 || [4.0.0+] [[#SetWirelessPriorityMode]]
Line 1,793: Line 1,894:     
Uses [[Backlight_services|lbl]] command GetAmbientLightSensorValue.
 
Uses [[Backlight_services|lbl]] command GetAmbientLightSensorValue.
 +
 +
=== SetInputDetectionPolicy ===
 +
Takes an input [[#InputDetectionPolicy]], no output.
    
=== SetWirelessPriorityMode ===
 
=== SetWirelessPriorityMode ===
Line 2,213: Line 2,317:  
|-
 
|-
 
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] ||
 
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] ||
|}
+
|-
 
+
| 110 || [9.0.0+] [[#PushToAppletBoundChannelForDebug]] ||
=== NotifyMessageToHomeMenuForDebug ===
+
|-
 +
| 111 || [9.0.0+] [[#TryPopFromAppletBoundChannelForDebug]] ||
 +
|-
 +
| 120 || [9.0.0+] [[#AlarmSettingNotificationEnableAppEventReserve]] ||
 +
|-
 +
| 121 || [9.0.0+] [[#AlarmSettingNotificationDisableAppEventReserve]] ||
 +
|-
 +
| 122 || [9.0.0+] [[#AlarmSettingNotificationPushAppEventNotify]] ||
 +
|-
 +
| 130 || [9.0.0+] [[#FriendInvitationSetApplicationParameter]] ||
 +
|-
 +
| 131 || [9.0.0+] [[#FriendInvitationClearApplicationParameter]] ||
 +
|-
 +
| 132 || [9.0.0+] [[#FriendInvitationPushApplicationParameter]] ||
 +
|}
 +
 
 +
=== NotifyMessageToHomeMenuForDebug ===
 
Takes an input [[#AppletMessage]], no output.
 
Takes an input [[#AppletMessage]], no output.
   Line 2,232: Line 2,352:     
=== RequestLaunchApplicationWithUserAndArgumentForDebug ===
 
=== RequestLaunchApplicationWithUserAndArgumentForDebug ===
Takes an input u8 bool flag, an u64 Application titleID, a type-0x5 input buffer containing an array of u128 userIDs, and a type-0x5 input buffer, no output.
+
Takes an input u8 bool flag, an [[NCM_services#ApplicationId|ApplicationId]], a type-0x5 input buffer containing an array of u128 userIDs, and a type-0x5 input buffer, no output.
    
Requests to launch the specified Application, with the specified users. When the bool flag is true, the content of the second input buffer is used to create a storage which is pushed to the UserChannel for this Application (see [[#LaunchParameterKind]]).
 
Requests to launch the specified Application, with the specified users. When the bool flag is true, the content of the second input buffer is used to create a storage which is pushed to the UserChannel for this Application (see [[#LaunchParameterKind]]).
Line 2,243: Line 2,363:     
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
 
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
 +
 +
=== PushToAppletBoundChannelForDebug ===
 +
Takes an input [[#IStorage]] and a s32, no output.
 +
 +
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
 +
 +
The s32 must match the value already stored in state when the state value is non-zero, otherwise an error is returned. When the state value is 0, the s32 is written into state. Then the input storage is pushed to the StorageChannel.
 +
 +
=== TryPopFromAppletBoundChannelForDebug ===
 +
Takes an input s32, returns an output [[#IStorage]].
 +
 +
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
 +
 +
The s32 must not be 0 and must match the value previously saved by [[#PushToAppletBoundChannelForDebug]], otherwise errors are returned. Then the output storage is popped from the StorageChannel.
 +
 +
=== AlarmSettingNotificationEnableAppEventReserve ===
 +
Takes an input [[#IStorage]] and an [[NCM_services#ApplicationId|ApplicationId]], no output.
 +
 +
Clears a StorageChannel, pushes the input storage there, and writes the ApplicationId into state.
 +
 +
=== AlarmSettingNotificationDisableAppEventReserve ===
 +
No input/output.
 +
 +
Clears the StorageChannel/saved-ApplicationId used by [[#AlarmSettingNotificationEnableAppEventReserve]].
 +
 +
=== AlarmSettingNotificationPushAppEventNotify ===
 +
Takes an input [[#IStorage]], no output.
 +
 +
Same as [[#PushToNotificationStorageChannel]] except this uses the MainApplication.
 +
 +
=== FriendInvitationSetApplicationParameter ===
 +
Takes an input [[#IStorage]] and an [[NCM_services#ApplicationId|ApplicationId]], no output.
 +
 +
Clears a StorageChannel, pushes the input storage there, and writes the ApplicationId into state.
 +
 +
=== FriendInvitationClearApplicationParameter ===
 +
No input/output.
 +
 +
Clears the StorageChannel/saved-ApplicationId used by [[#FriendInvitationSetApplicationParameter]].
 +
 +
=== FriendInvitationPushApplicationParameter ===
 +
Takes an input [[#IStorage]], no output.
 +
 +
Same as [[#PushToFriendInvitationStorageChannel]] except this uses the MainApplication.
    
== IStorage ==
 
== IStorage ==
Line 2,312: Line 2,476:  
|rowspan="2"| 1 || [1.0.0-3.0.2]
 
|rowspan="2"| 1 || [1.0.0-3.0.2]
 
|-
 
|-
| [7.0.0+]
+
| [7.0.0+] IsAutoPowerDownRequested
 
|-
 
|-
 
| 2 || [1.0.0-3.0.2]
 
| 2 || [1.0.0-3.0.2]
 
|-
 
|-
| 3 || SetHandlingContext
+
| 3 || [[#SetHandlingContext]]
 
|-
 
|-
 
| 4 || LoadAndApplySettings
 
| 4 || LoadAndApplySettings
Line 2,323: Line 2,487:  
|}
 
|}
   −
[3.0.0+] SetHandlingContext now takes an additional 0x10-bytes of input.
+
== SetHandlingContext ==
 +
[3.0.0+] Now takes an additional 0x10-bytes of input.
    
= omm =
 
= omm =
Line 2,329: Line 2,494:     
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes.
 
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes.
Besides [[PTM_services]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].
+
Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 0 || GetOperationMode
 
|-
 
|-
| 0 || GetOperationMode ||  
+
| 1 || GetOperationModeChangeEvent
 
|-
 
|-
| 1 || GetOperationModeChangeEvent ||  
+
| 2 || EnableAudioVisual
 
|-
 
|-
| 2 || EnableAudioVisual ||  
+
| 3 || DisableAudioVisual
 
|-
 
|-
| 3 || DisableAudioVisual ||  
+
| 4 || EnterSleepAndWait
 
|-
 
|-
| 4 || EnterSleepAndWait ||  
+
| 5 || GetCradleStatus
 
|-
 
|-
| 5 || GetCradleStatus ||  
+
| 6 || FadeInDisplay
 
|-
 
|-
| 6 || FadeInDisplay ||  
+
| 7 || FadeOutDisplay
 
|-
 
|-
| 7 || FadeOutDisplay ||  
+
| 8 || [2.0.0+] GetCradleFwVersion
 
|-
 
|-
| 8 || [2.0.0+] GetCradleFwVersion ||
+
| 9 || [2.0.0+] NotifyCecSettingsChanged
 
|-
 
|-
| 9 || [2.0.0+] NotifyCecSettingsChanged ||
+
| 10 || [3.0.0+] SetOperationModePolicy
 
|-
 
|-
| 10 || [3.0.0+] SetOperationModePolicy ||
+
| 11 || [3.0.0+] GetDefaultDisplayResolution
 
|-
 
|-
| 11 || [3.0.0+] GetDefaultDisplayResolution ||
+
| 12 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent
 
|-
 
|-
| 12 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent ||
+
| 13 || [3.0.0+] UpdateDefaultDisplayResolution
 
|-
 
|-
| 13 || [3.0.0+] UpdateDefaultDisplayResolution ||
+
| 14 || [3.0.0+] ShouldSleepOnBoot
 
|-
 
|-
| 14 || [3.0.0+] ShouldSleepOnBoot ||
+
| 15 || [4.0.0+] NotifyHdcpApplicationExecutionStarted
 
|-
 
|-
| 15 || [4.0.0+] NotifyHdcpApplicationExecutionStarted ||
+
| 16 || [4.0.0+] NotifyHdcpApplicationExecutionFinished
 
|-
 
|-
| 16 || [4.0.0+] NotifyHdcpApplicationExecutionFinished ||
+
| 17 || [4.0.0+] NotifyHdcpApplicationDrawingStarted
 
|-
 
|-
| 17 || [4.0.0+] NotifyHdcpApplicationDrawingStarted ||
+
| 18 || [4.0.0+] NotifyHdcpApplicationDrawingFinished
 
|-
 
|-
| 18 || [4.0.0+] NotifyHdcpApplicationDrawingFinished ||
+
| 19 || [4.0.0+] GetHdcpAuthenticationFailedEvent
 
|-
 
|-
| 19 || [4.0.0+] GetHdcpAuthenticationFailedEvent ||
+
| 20 || [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled
 
|-
 
|-
| 20 || [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled ||
+
| 21 || [4.0.0+] SetHdcpAuthenticationFailedEmulation
 
|-
 
|-
| 21 || [4.0.0+] SetHdcpAuthenticationFailedEmulation ||
+
| 22 || [4.0.0+] GetHdcpStateChangeEvent
 
|-
 
|-
| 22 || [4.0.0+] GetHdcpStateChangeEvent ||
+
| 23 || [4.0.0+] GetHdcpState
 
|-
 
|-
| 23 || [4.0.0+] GetHdcpState ||
+
| 24 || [5.0.0+] ShowCardUpdateProcessing
 
|-
 
|-
| 24 || [5.0.0+] ShowCardUpdateProcessing ||
+
| 25 || [5.0.0+] SetApplicationCecSettingsAndNotifyChanged
 
|-
 
|-
| 25 || [5.0.0+] SetApplicationCecSettingsAndNotifyChanged ||
+
| 26 || [7.0.0+] [[#GetOperationModeSystemInfo]]
 
|-
 
|-
| 26 || [7.0.0+] ||
+
| 27 || [9.0.0+] GetAppletFullAwakingSystemEvent
 
|}
 
|}
   −
== Cmd26 ==
+
== GetOperationModeSystemInfo ==
 
No input, returns an output u32.
 
No input, returns an output u32.
   −
This is used by [[#GetOperationModeSystemInfo]].
+
This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]].
    
= spsm =
 
= spsm =
Line 2,470: Line 2,637:  
Takes two input u32s, an u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
Takes two input u32s, an u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
   −
Official user-processes doesn't use this, instead [[#SaveScreenShotEx0]] is used: ScreenShotAttributeEx0 is all-zero except +0 is set to an input u32.
+
Official user-processes doesn't use this, instead [[#SaveScreenShotEx0]] is used: ScreenShotAttributeEx0 is all-zero, except +4 is set to an input u32 and u32 +0xC = 0x1.
 +
 
 +
This cmd internally uses an all-zero ScreenShotAttributeEx0, with u32 +0 = input u32 and u32 +0x8 = 0x3.
    
== SaveScreenShotEx0 ==
 
== SaveScreenShotEx0 ==
Line 2,549: Line 2,718:  
| 0x0C
 
| 0x0C
 
| 0100000000001003
 
| 0100000000001003
| "controller"
+
| [[Controller_Applet|"controller"]]
 
|-
 
|-
 
| 0x0D
 
| 0x0D
Line 2,585: Line 2,754:  
| 0x15
 
| 0x15
 
| 010000000000100D
 
| 010000000000100D
| "photoViewer"
+
| [[Album_Applet|"photoViewer"]]
 
|-
 
|-
 
| 0x16
 
| 0x16
Line 2,605: Line 2,774:  
| 0x1A
 
| 0x1A
 
| 0100000000001013
 
| 0100000000001013
| "myPage"
+
| [[MyPage_Applet|"myPage"]]
 
|}
 
|}
   Line 2,737: Line 2,906:  
!  Description
 
!  Description
 
|-
 
|-
| 0 || u8 ProgramIndex. "ExecuteProgram". [[NS_Services|NS]] handles ProgramIndex by launching titleID {application_titleID}+ProgramIndex. After using [[#ExecuteProgram]] with this successfully, official user-processes will enter an infinite loop with sleep-thread value 86400000000000.
+
| 0 || u8 ProgramIndex. "ExecuteProgram". [[NS_Services|NS]] handles ProgramIndex by launching ApplicationId+ProgramIndex. After using [[#ExecuteProgram]] with this successfully, official user-processes will enter an infinite loop with sleep-thread value 86400000000000.
 
|-
 
|-
| 1 || u64 titleID. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1.
+
| 1 || [[NCM_services#ApplicationId|ApplicationId]]. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1.
 
|-
 
|-
 
| 2 || u64 = value 0. "RestartProgram"
 
| 2 || u64 = value 0. "RestartProgram"
Line 2,748: Line 2,917:     
ProgramIndex values where the title is not installed should not be used: [[qlaunch]] will display an error message and the current title will become "corrupted", however Home Menu will have an option to repair it.
 
ProgramIndex values where the title is not installed should not be used: [[qlaunch]] will display an error message and the current title will become "corrupted", however Home Menu will have an option to repair it.
 +
 +
= InputDetectionPolicy =
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0 || Unknown.
 +
|-
 +
| 1 || Unknown.
 +
|}
 +
 +
This is u32 enum "nn::applet::InputDetectionPolicy".
    
= AppletResourceUserId =
 
= AppletResourceUserId =
Line 2,804: Line 2,986:  
| 0x4 || 0x4 || Padding
 
| 0x4 || 0x4 || Padding
 
|-
 
|-
| 0x8 || 0x8 || titleID
+
| 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|}
 
|}
   Line 2,848: Line 3,030:  
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || Application titleID.
+
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
 
| 0x8 || 0x4 || Application title-version.
 
| 0x8 || 0x4 || Application title-version.