Applet Manager services
AM (Applet Manager) provides services for interacting with system applets while abstracting several aspects of power and operation management.
Contains multiple raw images, with at least the following: "NN_OMM_CHARGING_BIN_{begin|end}"(charging icon), low-battery icon, and the Nintendo Switch logo displayed during system boot.
appletAE
This is "nn::am::service::IAllSystemAppletProxiesService".
Cmd | Name | Notes |
---|---|---|
100 | OpenSystemAppletProxy | Returns an #ISystemAppletProxy. |
200 | OpenLibraryAppletProxyOld ([1.0.0-2.3.0] OpenLibraryAppletProxy) | Returns an #ILibraryAppletProxy. |
201 | [3.0.0+] #OpenLibraryAppletProxy | Returns an #ILibraryAppletProxy. |
300 | OpenOverlayAppletProxy | Returns an #IOverlayAppletProxy. |
350 | OpenSystemApplicationProxy | Returns an #IApplicationProxy. |
400 | CreateSelfLibraryAppletCreatorForDevelop | Returns an #ILibraryAppletCreator. |
410 | [6.0.0+] GetSystemAppletControllerForDebug | Returns an #ISystemAppletControllerForDebug. |
1000 | [6.0.0+] GetDebugFunctions | Returns an #IDebugFunctions. |
All of these commands except #OpenLibraryAppletProxy take the same input as #OpenApplicationProxy, with the same user-process retry-loop as #OpenApplicationProxy. These Open*Proxy commands (including appletOE) doesn't seem to usable from processes which aren't actual applets (such as sysmodules), at least for applet-types which aren't already in use.
This service is used by all system non-regular-applications.
The 01000000000010XX system titles use the following applet types(above Open{type}Proxy commands):
- "qlaunch": SystemApplet
- "overlay": OverlayApplet
- "starter": SystemApplication
- "maintenance": SystemApplet
- All others: LibraryApplet
OpenLibraryAppletProxy
Returns an #ILibraryAppletProxy.
Takes a reserved input u64(official user-processes use hard-coded value 0), a PID,a process copy-handle(cur-proc handle alias), and an 0x80-byte type-0x15 input buffer AppletAttribute.
Official user-processes use the same retry loop with this as the other Open*Proxy commands.
ISystemAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetHomeMenuFunctions | Returns an #IHomeMenuFunctions. |
21 | GetGlobalStateController | Returns an #IGlobalStateController. |
22 | GetApplicationCreator | Returns an #IApplicationCreator. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IHomeMenuFunctions
Cmd | Name | Notes |
---|---|---|
10 | RequestToGetForeground | |
11 | LockForeground | |
12 | UnlockForeground | |
20 | #PopFromGeneralChannel | |
21 | #GetPopFromGeneralChannelEvent | |
30 | #GetHomeButtonWriterLockAccessor | |
31 | [2.0.0+] #GetWriterLockAccessorEx | |
100 | [6.0.0+] PopRequestLaunchApplicationForDebug |
PopFromGeneralChannel
No input, returns an output #IStorage.
GetPopFromGeneralChannelEvent
No input, returns an output handle.
GetHomeButtonWriterLockAccessor
No input, returns an output #ILockAccessor.
GetWriterLockAccessorEx
Takes an input u32, returns an output #ILockAccessor.
ILockAccessor
Cmd | Name |
---|---|
1 | TryLock |
2 | Unlock |
3 | #GetEvent |
GetEvent
No input, returns an output handle.
IGlobalStateController
Cmd | Name |
---|---|
0 | RequestToEnterSleep |
1 | EnterSleep |
2 | StartSleepSequence |
3 | StartShutdownSequence |
4 | StartRebootSequence |
10 | LoadAndApplyIdlePolicySettings |
11 | [2.0.0+] NotifyCecSettingsChanged |
12 | [2.0.0+] SetDefaultHomeButtonLongPressTime |
13 | [2.0.0+] UpdateDefaultDisplayResolution |
14 | [2.0.0+] #ShouldSleepOnBoot |
15 | [4.0.0+] GetHdcpAuthenticationFailedEvent |
ShouldSleepOnBoot
No input, returns an output u8 bool.
IApplicationCreator
Cmd | Name | Notes |
---|---|---|
0 | #CreateApplication | |
1 | #PopLaunchRequestedApplication | |
10 | #CreateSystemApplication | |
100 | #PopFloatingApplicationForDevelopment |
CreateApplication
Takes an input u64 nn::ncm::ApplicationId
(titleID), returns an #IApplicationAccessor.
PopLaunchRequestedApplication
No input, returns an #IApplicationAccessor.
CreateSystemApplication
Takes an input u64 nn::ncm::SystemApplicationId
, returns an #IApplicationAccessor.
PopFloatingApplicationForDevelopment
No input, returns an #IApplicationAccessor.
IApplicationAccessor
Cmd | Name | Notes |
---|---|---|
0 | #GetAppletStateChangedEvent | |
1 | #IsCompleted | |
10 | Start | |
20 | RequestExit | |
25 | Terminate | |
30 | GetResult | |
101 | RequestForApplicationToGetForeground | |
110 | TerminateAllLibraryApplets | |
111 | AreAnyLibraryAppletsLeft | |
112 | #GetCurrentLibraryApplet | |
120 | GetApplicationId | |
121 | #PushLaunchParameter | |
122 | GetApplicationControlProperty | |
123 | [2.0.0+] GetApplicationLaunchProperty | |
124 | [6.0.0+] GetApplicationLaunchRequestInfo | |
130 | [6.0.0+] SetUsers | |
131 | [6.0.0+] CheckRightsEnvironmentAvailable | |
132 | [6.0.0+] GetNsRightsEnvironmentHandle | |
140 | [6.0.0+] GetDesirableUids | |
150 | [6.0.0+] ReportApplicationExitTimeout |
Commands <=30 are inherited from #IAppletAccessor.
GetCurrentLibraryApplet
No input, returns an output #IAppletAccessor.
PushLaunchParameter
Takes an input u32 and an input #IStorage, no output.
IAppletAccessor
Cmd | Name |
---|---|
0 | #GetAppletStateChangedEvent |
1 | #IsCompleted |
10 | Start |
20 | RequestExit |
25 | Terminate |
30 | GetResult |
GetAppletStateChangedEvent
No input, returns an output handle.
IsCompleted
No input, returns an output u8 bool.
ILibraryAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | OpenLibraryAppletSelfAccessor | Returns an #ILibraryAppletSelfAccessor. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
ILibraryAppletSelfAccessor
Cmd | Name | Notes |
---|---|---|
0 | #PopInData | |
1 | #PushOutData | |
2 | #PopInteractiveInData | |
3 | #PushInteractiveOutData | |
5 | #GetPopInDataEvent | |
6 | #GetPopInteractiveInDataEvent | |
10 | #ExitProcessAndReturn | |
11 | #GetLibraryAppletInfo | |
12 | GetMainAppletIdentityInfo | |
13 | #CanUseApplicationCore | |
14 | GetCallerAppletIdentityInfo | |
15 | [2.0.0+] GetMainAppletApplicationControlProperty | |
16 | [2.0.0+] #GetMainAppletStorageId | |
17 | [2.0.0+] GetCallerAppletIdentityInfoStack | |
18 | [4.0.0+] GetNextReturnDestinationAppletIdentityInfo | |
19 | [4.0.0+] GetDesirableKeyboardLayout | |
20 | #PopExtraStorage | |
25 | #GetPopExtraStorageEvent | |
30 | #UnpopInData | |
31 | #UnpopExtraStorage | |
40 | [2.0.0+] GetIndirectLayerProducerHandle | |
50 | [2.0.0+] ReportVisibleError | |
51 | [4.0.0+] ReportVisibleErrorWithErrorContext | |
60 | [4.0.0+] #GetMainAppletApplicationDesiredLanguage | |
80 | [6.0.0+] RequestExitToSelf | |
90 | [5.0.0+] CreateApplicationAndPushAndRequestToLaunch | |
100 | [4.0.0+] #CreateGameMovieTrimmer | |
101 | [6.0.0+] ReserveResourceForMovieOperation | |
102 | [6.0.0+] UnreserveResourceForMovieOperation | |
110 | [6.0.0+] GetMainAppletAvailableUsers |
PopInData
No input, returns an output #IStorage.
PushOutData
Takes an input #IStorage, no output.
PopInteractiveInData
No input, returns an output #IStorage.
PushInteractiveOutData
Takes an input #IStorage, no output.
GetPopInDataEvent
No input, returns an output handle.
GetPopInteractiveInDataEvent
No input, returns an output handle.
GetMainAppletStorageId
No input, returns an output u8 storageId.
ExitProcessAndReturn
No input/output.
Exits the LibraryApplet and returns to running the title which launched this LibraryApplet (qlaunch for example).
GetLibraryAppletInfo
No input. Returns an u64 LibraryAppletInfo: +0 u32 is #AppletId, +4 u32 is #LibraryAppletMode.
CanUseApplicationCore
No input, returns an output u8 bool.
PopExtraStorage
No input, returns an output #IStorage.
GetPopExtraStorageEvent
No input, returns an output handle.
UnpopInData
Takes an input #IStorage, no output.
UnpopExtraStorage
Takes an input #IStorage, no output.
GetMainAppletApplicationDesiredLanguage
No input, returns an output LanguageCode.
CreateGameMovieTrimmer
Takes an input u64 and handle, returns a GRC IGameMovieTrimmer.
IOverlayAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetOverlayFunctions | Returns an #IOverlayFunctions. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IOverlayFunctions
Cmd | Name |
---|---|
0 | BeginToWatchShortHomeButtonMessage |
1 | EndToWatchShortHomeButtonMessage |
2 | GetApplicationIdForLogo |
3 | SetGpuTimeSliceBoost |
4 | [2.0.0+] SetAutoSleepTimeAndDimmingTimeEnabled |
5 | [2.0.0+] TerminateApplicationAndSetReason |
6 | [2.0.0+] SetScreenShotPermissionGlobally |
10 | [6.0.0+] StartShutdownSequenceForOverlay |
11 | [6.0.0+] StartRebootSequenceForOverlay |
101 | [6.0.0+] BeginToObserveHidInputForDevelop |
IApplicationProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetApplicationFunctions | Returns an #IApplicationFunctions. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IApplicationFunctions
Cmd | Name | Notes |
---|---|---|
1 | #PopLaunchParameter | |
10 | #CreateApplicationAndPushAndRequestToStart | |
11 | [2.0.0+] #CreateApplicationAndPushAndRequestToStartForQuest | |
12 | [4.0.0+] CreateApplicationAndRequestToStart | |
13 | [4.0.0+] CreateApplicationAndRequestToStartForQuest | |
20 | EnsureSaveData | |
21 | #GetDesiredLanguage | |
22 | #SetTerminateResult | |
23 | GetDisplayVersion | |
24 | [2.0.0+] GetLaunchStorageInfoForDebug | |
25 | [2.0.0+] ExtendSaveData | |
26 | [2.0.0+] GetSaveDataSize | |
27 | [5.0.0+] CreateCacheStorage | |
30 | BeginBlockingHomeButtonShortAndLongPressed | |
31 | EndBlockingHomeButtonShortAndLongPressed | |
32 | #BeginBlockingHomeButton | |
33 | EndBlockingHomeButton | |
40 | #NotifyRunning | |
50 | [2.0.0+] GetPseudoDeviceId | |
60 | [2.0.0+] SetMediaPlaybackStateForApplication | |
65 | [3.0.0+] #IsGamePlayRecordingSupported | |
66 | [3.0.0+] #InitializeGamePlayRecording | |
67 | [3.0.0+] #SetGamePlayRecordingState | |
68 | [4.0.0+] RequestFlushGamePlayingMovieForDebug | |
70 | [3.0.0+] RequestToShutdown | |
71 | [3.0.0+] RequestToReboot | |
80 | [4.0.0+] ExitAndRequestToShowThanksMessage | |
90 | [4.0.0+] EnableApplicationCrashReport | |
100 | [5.0.0+] InitializeApplicationCopyrightFrameBuffer | |
101 | [5.0.0+] SetApplicationCopyrightImage | |
102 | [5.0.0+] SetApplicationCopyrightVisibility | |
110 | [5.0.0+] QueryApplicationPlayStatistics | |
111 | [6.0.0+] QueryApplicationPlayStatisticsByUid | |
120 | [5.0.0+] ExecuteProgram | |
121 | [5.0.0+] ClearUserChannel | |
122 | [5.0.0+] UnpopToUserChannel | |
123 | [6.0.0+] GetPreviousProgramIndex | |
124 | [6.0.0+] EnableApplicationAllThreadDumpOnCrash | |
500 | [5.0.0+] StartContinuousRecordingFlushForDebug | |
1000 | [5.0.0+] #CreateMovieMaker | |
1001 | [5.0.0+] #PrepareForJit |
The BOTW game uses this GamePlayRecording functionality from the main-nso "nninitStartup" function, with size 0x6000000(96MiB). The official GamePlayRecording-enable code does the following(this will panic on any failure):
- Creates TransferMemory using the input buffer and size, with permissions=0.
- Uses #InitializeGamePlayRecording with the TransferMemory.
- Closes the TransferMemory handle, + TransferMemory cleanup.
- Uses #SetGamePlayRecordingState with value 0x1.
This GamePlayRecording functionality presumably enables the video-recording usable starting with 4.0.0.
PopLaunchParameter
Takes an input u32, returns an output #IStorage.
CreateApplicationAndPushAndRequestToStart
Takes an input u64 titleID and an input #IStorage, no output.
CreateApplicationAndPushAndRequestToStartForQuest
Takes 2 input u32s, an input u64 titleID, and an input #IStorage, no output.
GetDesiredLanguage
No input, returns an output LanguageCode.
SetTerminateResult
Takes an input u32 Result, no output.
For example, in some cases official apps use this with error 0x2A2 then uses svcBreak.
BeginBlockingHomeButton
Takes an input s64 nanoseconds, no output. The input nanoseconds can be zero.
NotifyRunning
Takes no input. Returns an output u8 bool, which is ignored by official user-processes.
IsGamePlayRecordingSupported
No input, returns an output u8 bool.
InitializeGamePlayRecording
Takes a TransferMemory handle and an u64 for the size of the TransferMemory. The size must match 0x6000000 otherwise an error is returned.
SetGamePlayRecordingState
Takes an input u32. 0 = disable/pause, 1 = enable/restart.
CreateMovieMaker
Takes an input u64 and handle, returns an #IMovieMaker.
PrepareForJit
Takes no input. Launches title 010000000000003B (currently not present on retail systems) if some context variable is set.
IMovieMaker
Cmd | Name |
---|---|
0 | #GetGrcMovieMaker |
1 | #GetLayerHandle |
GetGrcMovieMaker
No input, returns a GRC IMovieMaker.
GetLayerHandle
No input, returns an output u64.
ILibraryAppletCreator
Cmd | Name | Notes |
---|---|---|
0 | #CreateLibraryApplet | |
1 | #TerminateAllLibraryApplets | |
2 | #AreAnyLibraryAppletsLeft | |
10 | #CreateStorage | |
11 | #CreateTransferMemoryStorage | |
12 | [2.0.0+] #CreateHandleStorage |
CreateLibraryApplet
Takes 2 input u32s #AppletId and #LibraryAppletMode, returns an #ILibraryAppletAccessor.
TerminateAllLibraryApplets
No input/output.
AreAnyLibraryAppletsLeft
No input, returns an output u8 bool.
CreateStorage
Takes an input u64 for the storage size, returns an #IStorage.
CreateTransferMemoryStorage
Takes an input TransferMemory copy-handle, an input u8 bool, and an u64 size, returns an #IStorage.
The user-process creates the TransferMemory with permissions=0.
CreateHandleStorage
Takes an input copy-handle and an input u64, returns an #IStorage.
ILibraryAppletAccessor
Cmd | Name | Notes |
---|---|---|
0 | #GetAppletStateChangedEvent | |
1 | #IsCompleted | |
10 | #Start | |
20 | #RequestExit | |
25 | #Terminate | |
30 | #GetResult | |
50 | #SetOutOfFocusApplicationSuspendingEnabled | |
100 | #PushInData | |
101 | #PopOutData | |
102 | #PushExtraStorage | |
103 | #PushInteractiveInData | |
104 | #PopInteractiveOutData | |
105 | [[#GetPopOutDataEvent] | |
106 | #GetPopInteractiveOutDataEvent | |
110 | #NeedsToExitProcess | |
120 | GetLibraryAppletInfo | |
150 | RequestForAppletToGetForeground | |
160 | [2.0.0+] GetIndirectLayerConsumerHandle |
GetAppletStateChangedEvent
No input, returns an output event handle with autoclear=false.
IsCompleted
No input, returns an output u8 bool.
Start
No input/output.
RequestExit
No input/output.
Terminate
No input/output.
GetResult
No input/output.
SetOutOfFocusApplicationSuspendingEnabled
Takes an input u8 bool, no output.
PushInData
Takes an input #IStorage, no output.
PopOutData
No input, returns an output #IStorage.
PushExtraStorage
Takes an input #IStorage, no output.
PushInteractiveInData
Takes an input #IStorage, no output.
PopInteractiveOutData
No input, returns an output #IStorage.
GetPopOutDataEvent
No input, returns an output handle.
GetPopInteractiveOutDataEvent
No input, returns an output handle.
NeedsToExitProcess
No input, returns an output u8 bool.
ICommonStateGetter
Cmd | Name | Notes |
---|---|---|
0 | #GetEventHandle | |
1 | #ReceiveMessage | |
2 | GetThisAppletKind | |
3 | AllowToEnterSleep | |
4 | DisallowToEnterSleep | |
5 | #GetOperationMode | |
6 | #GetPerformanceMode | |
7 | #GetCradleStatus | |
8 | #GetBootMode | |
9 | #GetCurrentFocusState | |
10 | RequestToAcquireSleepLock | |
11 | ReleaseSleepLock | |
12 | ReleaseSleepLockTransiently | |
13 | #GetAcquiredSleepLockEvent | |
20 | #PushToGeneralChannel | |
30 | #GetHomeButtonReaderLockAccessor | |
31 | [2.0.0+] #GetReaderLockAccessorEx | |
40 | [2.0.0+] GetCradleFwVersion | |
50 | [3.0.0+] #IsVrModeEnabled | |
51 | [3.0.0+] #SetVrModeEnabled | |
52 | [4.0.0+] SetLcdBacklighOffEnabled | |
55 | [3.0.0+] #IsInControllerFirmwareUpdateSection | |
60 | [3.0.0+] GetDefaultDisplayResolution | |
61 | [3.0.0+] #GetDefaultDisplayResolutionChangeEvent | |
62 | [4.0.0+] GetHdcpAuthenticationState | |
63 | [4.0.0+] GetHdcpAuthenticationStateChangeEvent | |
64 | [5.0.0+] SetTvPowerStateMatchingMode | |
65 | [6.0.0+] GetApplicationIdByContentActionName | |
66 | [6.0.0+] SetCpuAndGpuBoostMode | |
80 | [6.0.0+] PerformSystemButtonPressingIfInFocus |
Officially notification messages are handled by the application itself, not sdk-nso in ExeFS. Official apps call code in sdk-nso which basically uses svcWaitSynchronization with the event from #GetEventHandle to check whether a message is available, then if so it uses #ReceiveMessage. The actual handling for message IDs is done in the app itself(see #NotificationMessage).
GetEventHandle
No input. Returns an output event handle. This is signalled when a message is available with #ReceiveMessage.
ReceiveMessage
No input. Returns an output u32. Error 0x680 indicates no message is available.
GetOperationMode
No input. Returns an output u8 for the current #OperationMode.
GetPerformanceMode
No input. Returns an output u32 for the current PerformanceMode.
GetCradleStatus
No input, returns an output u8.
GetBootMode
No input, returns an output u8.
GetCurrentFocusState
No input. Returns an output u8:
- 1: In focus.
- 2/3: Out of focus(running in "background").
GetAcquiredSleepLockEvent
No input, returns an output handle.
PushToGeneralChannel
Takes an input #IStorage, no output.
GetHomeButtonReaderLockAccessor
No input, returns an output #ILockAccessor.
GetReaderLockAccessorEx
Takes an input u32, returns an output #ILockAccessor.
IsVrModeEnabled
No input, returns an output u8 bool.
SetVrModeEnabled
Takes an input u8 bool flag. No output.
Updates internal AM state fields. If the new state doesn't match the previous state, this uses the Backlight_services {Disable/Enable}VrMode command depending on whether flag={disable/enable}.
When the VrMode is set to true, the console shows a screen rendered like vr asking the user to move his face away and hit the 'close' button. When this button is pressed, the console resets the vrMode to false.
IsInControllerFirmwareUpdateSection
No input, returns an output u8 bool.
GetDefaultDisplayResolutionChangeEvent
No input, returns an output handle.
ISelfController
Cmd | Name |
---|---|
0 | #Exit |
1 | #LockExit |
2 | #UnlockExit |
3 | [2.0.0+] #EnterFatalSection |
4 | [2.0.0+] #LeaveFatalSection |
9 | #GetLibraryAppletLaunchableEvent |
10 | #SetScreenShotPermission |
11 | #SetOperationModeChangedNotification |
12 | #SetPerformanceModeChangedNotification |
13 | #SetFocusHandlingMode |
14 | SetRestartMessageEnabled |
15 | [2.0.0+] #SetScreenShotAppletIdentityInfo |
16 | [2.0.0+] #SetOutOfFocusSuspendingEnabled |
17 | [3.0.0+] SetControllerFirmwareUpdateSection |
18 | [3.0.0+] SetRequiresCaptureButtonShortPressedMessage |
19 | [3.0.0+] #SetScreenShotImageOrientation |
20 | [4.0.0+] SetDesirableKeyboardLayout |
40 | #CreateManagedDisplayLayer |
41 | [4.0.0+] IsSystemBufferSharingEnabled |
42 | [4.0.0+] GetSystemSharedLayerHandle |
43 | [6.0.0+] GetSystemSharedBufferHandle |
50 | SetHandlesRequestToDisplay |
51 | ApproveToDisplay |
60 | OverrideAutoSleepTimeAndDimmingTime |
61 | SetMediaPlaybackState |
62 | SetIdleTimeDetectionExtension |
63 | GetIdleTimeDetectionExtension |
64 | SetInputDetectionSourceSet |
65 | [2.0.0+] ReportUserIsActive |
66 | [3.0.0+] GetCurrentIlluminance |
67 | [3.0.0+] #IsIlluminanceAvailable |
68 | [4.0.0+] SetAutoSleepDisabled |
69 | [4.0.0+] IsAutoSleepDisabled |
70 | [5.0.0+] ReportMultimediaError |
71 | [6.0.0+] GetCurrentIlluminanceEx |
80 | [5.0.0+] SetWirelessPriorityMode |
90 | [6.0.0+] GetAccumulatedSuspendedTickValue |
91 | [6.0.0+] GetAccumulatedSuspendedTickChangedEvent |
Exit
No input/output.
LockExit
No input/output.
Locks exit process of pressing X to close in HOME Menu for an application or HOME button for an applet. When locked, it will show the "waiting for software to be closed dialog" until UnlockExit is called or a 15 seconds timeout (when the latter occurs, the process is force-terminated).
UnlockExit
No input/output.
Unlocks exit process, if LockExit was previously used.
EnterFatalSection
No input/output.
LeaveFatalSection
No input/output.
GetLibraryAppletLaunchableEvent
No input, returns an output event handle with autoclear=false.
SetScreenShotPermission
Takes an input s32. No output.
Controls whether screenshot-capture is allowed. 0 = disable, 1 = enable, 2 = unknown.
SetOperationModeChangedNotification
Takes an input u8 bool flag. No output.
SetPerformanceModeChangedNotification
Takes an input u8 bool flag. No output.
SetFocusHandlingMode
Takes 3 input u8s with each field located immediately after the previous u8, these are bool flags. No output.
SetScreenShotAppletIdentityInfo
Takes an input 0x10-byte struct AppletIdentityInfo. No output.
SetOutOfFocusSuspendingEnabled
Takes an input u8(bool flag). No output.
SetScreenShotImageOrientation
Takes an input s32. No output.
CreateManagedDisplayLayer
Returns an output u64 LayerId which is then used by the user-process with Display_services#OpenLayer.
IsIlluminanceAvailable
No input, returns an output u8 bool.
IWindowController
Cmd | Name | Notes |
---|---|---|
0 | #CreateWindow | |
1 | #GetAppletResourceUserId | |
2 | [6.0.0+] GetAppletResourceUserIdOfCallerApplet | |
10 | #AcquireForegroundRights | |
11 | ReleaseForegroundRights | |
12 | RejectToChangeIntoBackground |
CreateWindow
Takes an input u32, returns an output #IWindow.
GetAppletResourceUserId
Returns an output u64: #AppletResourceUserId.
AcquireForegroundRights
No input/output.
IAudioController
Cmd | Name |
---|---|
0 | SetExpectedMasterVolume |
1 | GetMainAppletExpectedMasterVolume |
2 | GetLibraryAppletExpectedMasterVolume |
3 | ChangeMainAppletMasterVolume |
4 | SetTransparentVolumeRate |
GetMainAppletExpectedMasterVolume/SetExpectedMasterVolume are used for saving/restoring state for LibraryApplet launching, with SetExpectedMasterVolume being used with new state prior to launching a LibraryApplet. With official sw these applet funcs are used directly in the main-codebin.
IDisplayController
Cmd | Name |
---|---|
0 | GetLastForegroundCaptureImage |
1 | UpdateLastForegroundCaptureImage |
2 | GetLastApplicationCaptureImage |
3 | GetCallerAppletCaptureImage |
4 | UpdateCallerAppletCaptureImage |
5 | GetLastForegroundCaptureImageEx |
6 | GetLastApplicationCaptureImageEx |
7 | GetCallerAppletCaptureImageEx |
8 | [2.0.0+] TakeScreenShotOfOwnLayer |
9 | [5.0.0+] CopyBetweenCaptureBuffers |
10 | #AcquireLastApplicationCaptureBuffer |
11 | ReleaseLastApplicationCaptureBuffer |
12 | #AcquireLastForegroundCaptureBuffer |
13 | ReleaseLastForegroundCaptureBuffer |
14 | #AcquireCallerAppletCaptureBuffer |
15 | ReleaseCallerAppletCaptureBuffer |
16 | AcquireLastApplicationCaptureBufferEx |
17 | AcquireLastForegroundCaptureBufferEx |
18 | AcquireCallerAppletCaptureBufferEx |
20 | [2.0.0+] ClearCaptureBuffer |
21 | [2.0.0+] ClearAppletTransitionBuffer |
22 | [4.0.0+] AcquireLastApplicationCaptureSharedBuffer |
23 | [4.0.0+] ReleaseLastApplicationCaptureSharedBuffer |
24 | [4.0.0+] AcquireLastForegroundCaptureSharedBuffer |
25 | [4.0.0+] ReleaseLastForegroundCaptureSharedBuffer |
26 | [4.0.0+] AcquireCallerAppletCaptureSharedBuffer |
27 | [4.0.0+] ReleaseCallerAppletCaptureSharedBuffer |
28 | [6.0.0+] TakeScreenShotOfOwnLayerEx |
AcquireLastApplicationCaptureBuffer
No input, returns an output handle.
AcquireLastForegroundCaptureBuffer
No input, returns an output handle.
AcquireCallerAppletCaptureBuffer
No input, returns an output handle.
ISystemAppletControllerForDebug
Cmd | Name | Notes |
---|---|---|
1 | RequestLaunchApplicationForDebug |
IProcessWindingController
Cmd | Name | Notes |
---|---|---|
0 | #GetLaunchReason | |
11 | #OpenCallingLibraryApplet | |
21 | #PushContext | |
22 | #PopContext | |
23 | CancelWindingReservation | |
30 | WindAndDoReserved | |
40 | #ReserveToStartAndWaitAndUnwindThis | |
41 | [4.0.0+] ReserveToStartAndWait |
GetLaunchReason
No input. Returns an u32 AppletProcessLaunchReason.
Used by LibraryApplets.
OpenCallingLibraryApplet
No input, returns an output #ILibraryAppletAccessor.
PushContext
Takes an input #IStorage, no output.
PopContext
No input, returns an output #IStorage.
ReserveToStartAndWaitAndUnwindThis
Takes an input #ILibraryAppletAccessor, no output.
IDebugFunctions
Cmd | Name | Notes |
---|---|---|
0 | NotifyMessageToHomeMenuForDebug | |
1 | #OpenMainApplication | |
10 | EmulateButtonEvent | |
20 | InvalidateTransitionLayer | |
30 | [6.0.0+] RequestLaunchApplicationWithUserAndArgumentForDebug | |
40 | [6.0.0+] GetAppletResourceUsageInfo |
OpenMainApplication
No input, returns an output #IApplicationAccessor.
IStorage
Cmd | Name | Notes |
---|---|---|
0 | Open | No input. Returns an #IStorageAccessor. |
1 | OpenTransferStorage | No input. Returns an #ITransferStorageAccessor. |
IStorageAccessor
Cmd | Name | Notes |
---|---|---|
0 | GetSize | No input. Returns an s64. |
10 | Write | Takes an input s64 and a type-0x21 input buffer. |
11 | Read | Takes an input s64 and a type-0x22 output buffer. |
ITransferStorageAccessor
Cmd | Name | Notes |
---|---|---|
0 | GetSize | No input. Returns an output s64. |
1 | GetHandle | No input. Returns an output u64 and handle. |
appletOE
This is "nn::am::service::IApplicationProxyService".
Cmd | Name | Notes |
---|---|---|
0 | #OpenApplicationProxy |
This is used by all regular-applications, including flog and "Retail Interactive Display Menu". Only one session can be open for this service at a time.
OpenApplicationProxy
Returns an #IApplicationProxy. See #appletAE.
Takes a reserved input u64(official user-processes use hard-coded value 0), a PID, and a process copy-handle(cur-proc handle alias).
On failure, official user-processes will retry using this command in a loop while the retval is 0x19280, with svcSleepThread(10000000) being called first.
idle:sys
This is "nn::idle::detail::IPolicyManagerSystem"
Cmd | Name |
---|---|
0 | GetAutoPowerDownEvent |
1 | [1.0.0-3.0.2] |
2 | [1.0.0-3.0.2] |
3 | SetHandlingContext |
4 | LoadAndApplySettings |
5 | ReportUserIsActive |
omm
This is "nn::omm::detail::IOperationModeManager"
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:pd*.
Cmd | Name |
---|---|
0 | GetOperationMode |
1 | GetOperationModeChangeEvent |
2 | EnableAudioVisual |
3 | DisableAudioVisual |
4 | EnterSleepAndWait |
5 | GetCradleStatus |
6 | FadeInDisplay |
7 | FadeOutDisplay |
8 | [2.0.0+] GetCradleFwVersion |
9 | [2.0.0+] NotifyCecSettingsChanged |
10 | [3.0.0+] SetOperationModePolicy |
11 | [3.0.0+] GetDefaultDisplayResolution |
12 | [3.0.0+] GetDefaultDisplayResolutionChangeEvent |
13 | [3.0.0+] UpdateDefaultDisplayResolution |
14 | [3.0.0+] ShouldSleepOnBoot |
15 | [4.0.0+] NotifyHdcpApplicationExecutionStarted |
16 | [4.0.0+] NotifyHdcpApplicationExecutionFinished |
17 | [4.0.0+] NotifyHdcpApplicationDrawingStarted |
18 | [4.0.0+] NotifyHdcpApplicationDrawingFinished |
19 | [4.0.0+] GetHdcpAuthenticationFailedEvent |
20 | [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled |
21 | [4.0.0+] SetHdcpAuthenticationFailedEmulation |
22 | [4.0.0+] GetHdcpStateChangeEvent |
23 | [4.0.0+] GetHdcpState |
24 | [5.0.0+] ShowCardUpdateProcessing |
25 | [5.0.0+] SetApplicationCecSettingsAndNotifyChanged |
spsm
This is "nn::spsm::detail::IPowerStateInterface".
Cmd | Name |
---|---|
0 | GetState |
1 | SleepSystemAndWaitAwake |
2 | |
3 | |
4 | GetNotificationMessageEventHandle |
5 | |
6 | |
7 | |
8 | AnalyzePerformanceLogForLastSleepWakeSequence |
9 | ChangeHomeButtonLongPressingTime |
10 | |
11 | [1.0.0-3.0.2] |
tcap
This is "nn::tcap::server::IManager".
Cmd | Name |
---|---|
0 | GetContinuousHighSkinTemperatureEvent |
1 | SetOperationMode |
2 | LoadAndApplySettings |
Library Applets
This section documents library applet launching.
Before starting the applet, #IStorages are created and written, then passed to #ILibraryAppletAccessor PushInData. The #IStorage session is closed afterwards. The first #IStorage is #CommonArguments, followed by any applet-specific #IStorages.
Once the applet finishes running successfully, #ILibraryAppletAccessor PopOutData can be used to get the applet-specific #IStorage containing the applet output data.
CommonArguments
The first IStorage passed to applets should contain the common library applet arguments. This is populated by nn::la::CommonArgumentsWriter
and has the following format.
This struct is 0x20-bytes.
Offset | Size | Typical Value | Notes |
---|---|---|---|
0x0 | 4 | 1 | Common Arguments version |
0x4 | 4 | 0x20 | Common Arguments size |
0x8 | 4 | Library applet version (API version) | |
0xC | 4 | 0 | Theme color |
0x10 | 1 | 0 | Play startup sound |
0x18 | 8 | N/A | System tick (see svcGetSystemTick) |
Enums
AppletId
See also Category:Library Applets.
ID | Title-id | Description |
---|---|---|
0x02 | 010000000000100C | "overlayDisp" |
0x03 | 0100000000001000 | "qlaunch" |
0x04 | 0100000000001012 | "starter" |
0x0A | 0100000000001001 | "auth" |
0x0B | 0100000000001002 | "cabinet" |
0x0C | 0100000000001003 | "controller" |
0x0D | 0100000000001004 | "dataErase" |
0x0E | 0100000000001005 | "error" |
0x0F | 0100000000001006 | "netConnect" |
0x10 | 0100000000001007 | "playerSelect" |
0x11 | 0100000000001008 | "swkbd" |
0x12 | 0100000000001009 | "miiEdit" |
0x13 | 010000000000100A | "LibAppletWeb" WebApplet applet |
0x14 | 010000000000100B | "LibAppletShop" ShopN applet |
0x15 | 010000000000100D | "photoViewer" |
0x16 | 010000000000100E | "set" |
0x17 | 010000000000100F | "LibAppletOff" Offline applet |
0x18 | 0100000000001010 | "LibAppletLns" Whitelisted applet |
0x19 | 0100000000001011 | "LibAppletAuth" WifiWebAuth applet |
0x1A | 0100000000001013 | "myPage" |
LibraryAppletMode
ID | Description |
---|---|
0x0 | AllForeground |
ShimKind
This is from strings and code in the web-applets.
This indicates the type of web-applet.
shimKind value | Description |
---|---|
2 | LoginApplet |
4 | ShareApplet |
5 | WebApplet |
6 | WifiWebAuthApplet |
7 | LobbyApplet |
NotificationMessage
ID | Description |
---|---|
0x4 | Exit requested |
0xF | FocusState changed |
0x10 | ? |
0x1E | OperationMode changed |
0x1F | PerformanceMode changed |
OperationMode
Value | Description |
---|---|
0 | Handheld |
1 | Docked |
AppletResourceUserId
This u64 is officially called "nn::applet::AppletResourceUserId". Used by a number of non-AM services.