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".
All of these commands take the same input as #OpenApplicationProxy, with the same user-process retry-loop as #OpenApplicationProxy.
This service seems to be used by all system non-regular-applications.
ISystemAppletProxy
Cmd |
Name |
Notes
|
10 |
RequestToGetForeground |
|
11 |
LockForeground |
|
12 |
UnlockForeground |
|
20 |
PopFromGeneralChannel |
Returns an IStorage.
|
21 |
GetPopFromGeneralChannelEvent |
|
30 |
GetHomeButtonWriterLockAccessor |
Returns an #ILockAccessor.
|
31 |
GetWriterLockAccessorEx |
Returns an #ILockAccessor.
|
ILockAccessor
Cmd |
Name
|
1 |
TryLock
|
2 |
Unlock
|
3 |
GetEvent
|
IGlobalStateController
Cmd |
Name
|
0 |
RequestToEnterSleep
|
1 |
EnterSleep
|
2 |
StartSleepSequence
|
3 |
StartShutdownSequence
|
4 |
StartRebootSequence
|
10 |
LoadAndApplyIdlePolicySettings
|
11 |
NotifyCecSettingsChanged
|
12 |
SetDefaultHomeButtonLongPressTime
|
13 |
UpdateDefaultDisplayResolution
|
14 |
ShouldSleepOnBoot
|
IApplicationCreator
IApplicationAccessor
Cmd |
Name |
Notes
|
0 |
GetAppletStateChangedEvent |
|
1 |
IsCompleted |
|
10 |
Start |
|
20 |
RequestExit |
|
25 |
Terminate |
|
30 |
GetResult |
|
101 |
RequestForApplicationToGetForeground |
|
110 |
TerminateAllLibraryApplets |
|
111 |
AreAnyLibraryAppletsLeft |
|
112 |
GetCurrentLibraryApplet |
Returns an #IAppletAccessor.
|
120 |
GetApplicationId |
|
121 |
PushLaunchParameter |
Returns an IStorage.
|
122 |
GetApplicationControlProperty |
|
123 |
GetApplicationLaunchProperty |
|
IAppletAccessor
Cmd |
Name
|
0 |
GetAppletStateChangedEvent
|
1 |
IsCompleted
|
10 |
Start
|
20 |
RequestExit
|
25 |
Terminate
|
30 |
GetResult
|
ILibraryAppletProxy
ILibraryAppletSelfAccessor
Cmd |
Name |
Notes
|
0 |
PopInData |
Returns an IStorage.
|
1 |
PushOutData |
Returns an IStorage.
|
2 |
PopInteractiveInData |
Returns an IStorage.
|
3 |
PushInteractiveOutData |
Returns an IStorage.
|
5 |
GetPopInDataEvent |
|
6 |
GetPopInteractiveInDataEvent |
|
10 |
ExitProcessAndReturn |
|
11 |
GetLibraryAppletInfo |
|
12 |
GetMainAppletIdentityInfo |
|
13 |
CanUseApplicationCore |
|
14 |
GetCallerAppletIdentityInfo |
|
15 |
GetMainAppletApplicationControlProperty |
|
16 |
GetMainAppletStorageId |
|
17 |
GetCallerAppletIdentityInfoStack |
|
20 |
PopExtraStorage |
Returns an IStorage.
|
25 |
GetPopExtraStorageEvent |
|
30 |
UnpopInData |
Returns an IStorage.
|
31 |
UnpopExtraStorage |
Returns an IStorage.
|
40 |
GetIndirectLayerProducerHandle |
|
50 |
ReportVisibleError |
|
IOverlayAppletProxy
IOverlayFunctions
Cmd |
Name
|
0 |
BeginToWatchShortHomeButtonMessage
|
1 |
EndToWatchShortHomeButtonMessage
|
2 |
GetApplicationIdForLogo
|
3 |
SetGpuTimeSliceBoost
|
4 |
SetAutoSleepTimeAndDimmingTimeEnabled
|
5 |
TerminateApplicationAndSetReason
|
6 |
SetScreenShotPermissionGlobally
|
IApplicationProxy
IApplicationFunctions
Cmd |
Name |
Notes
|
1 |
PopLaunchParameter |
Returns an IStorage.
|
10 |
CreateApplicationAndPushAndRequestToStart |
Returns an IStorage.
|
11 |
CreateApplicationAndPushAndRequestToStartForQuest |
Returns an IStorage.
|
20 |
EnsureSaveData |
|
21 |
GetDesiredLanguage |
|
22 |
SetTerminateResult |
|
23 |
GetDisplayVersion |
|
24 |
GetLaunchStorageInfoForDebug |
|
25 |
ExtendSaveData |
|
26 |
GetSaveDataSize |
|
30 |
BeginBlockingHomeButtonShortAndLongPressed |
|
31 |
EndBlockingHomeButtonShortAndLongPressed |
|
32 |
BeginBlockingHomeButton |
|
33 |
EndBlockingHomeButton |
|
40 |
#NotifyRunning |
|
50 |
GetPseudoDeviceId |
|
60 |
SetMediaPlaybackStateForApplication |
|
65 |
[3.0.0+] IsGamePlayRecordingSupported |
|
66 |
[3.0.0+] #InitializeGamePlayRecording |
|
67 |
[3.0.0+] #SetGamePlayRecordingState |
|
70 |
[3.0.0+] RequestToShutdown |
|
71 |
[3.0.0+] RequestToReboot |
|
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):
This GamePlayRecording functionality presumably enables the video-recording usable starting with 4.0.0.
NotifyRunning
Takes no input. Returns an output u8, which is ignored by official user-processes.
InitializeGamePlayRecording
Takes a TransferMemory handle and an u64 for the size of the TransferMemory.
SetGamePlayRecordingState
Takes an input u32.
ILibraryAppletCreator
Cmd |
Name |
Notes
|
0 |
CreateLibraryApplet |
Returns an #ILibraryAppletAccessor.
|
1 |
TerminateAllLibraryApplets |
|
2 |
AreAnyLibraryAppletsLeft |
|
10 |
CreateStorage |
Returns an IStorage.
|
11 |
CreateTransferMemoryStorage |
Returns an IStorage.
|
12 |
CreateHandleStorage |
Returns an IStorage.
|
ILibraryAppletAccessor
Cmd |
Name |
Notes
|
0 |
GetAppletStateChangedEvent |
|
1 |
IsCompleted |
|
10 |
Start |
|
20 |
RequestExit |
|
25 |
Terminate |
|
30 |
GetResult |
|
50 |
SetOutOfFocusApplicationSuspendingEnabled |
|
100 |
PushInData |
Returns an IStorage.
|
101 |
PopOutData |
Returns an IStorage.
|
102 |
PushExtraStorage |
Returns an IStorage.
|
103 |
PushInteractiveInData |
Returns an IStorage.
|
104 |
PopInteractiveOutData |
Returns an IStorage.
|
105 |
GetPopOutDataEvent |
|
106 |
GetPopInteractiveOutDataEvent |
|
110 |
NeedsToExitProcess |
|
120 |
GetLibraryAppletInfo |
|
150 |
RequestForAppletToGetForeground |
|
160 |
GetIndirectLayerConsumerHandle |
|
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 |
Returns an IStorage.
|
30 |
GetHomeButtonReaderLockAccessor |
Returns an #ILockAccessor.
|
31 |
GetReaderLockAccessorEx |
Returns an #ILockAccessor.
|
40 |
GetCradleFwVersion |
|
50 |
IsVrModeEnabled |
|
51 |
SetVrModeEnabled |
|
55 |
IsInControllerFirmwareUpdateSection |
|
60 |
GetDefaultDisplayResolution |
|
61 |
GetDefaultDisplayResolutionChangeEvent |
|
ISelfController
Cmd |
Name
|
0 |
Exit
|
1 |
LockExit
|
2 |
UnlockExit
|
3 |
EnterFatalSection
|
4 |
LeaveFatalSection
|
9 |
GetLibraryAppletLaunchableEvent
|
10 |
SetScreenShotPermission
|
11 |
SetOperationModeChangedNotification
|
12 |
SetPerformanceModeChangedNotification
|
13 |
SetFocusHandlingMode
|
14 |
SetRestartMessageEnabled
|
15 |
SetScreenShotAppletIdentityInfo
|
16 |
SetOutOfFocusSuspendingEnabled
|
17 |
SetControllerFirmwareUpdateSection
|
18 |
SetRequiresCaptureButtonShortPressedMessage
|
19 |
SetScreenShotImageOrientation
|
40 |
CreateManagedDisplayLayer
|
50 |
SetHandlesRequestToDisplay
|
51 |
ApproveToDisplay
|
60 |
OverrideAutoSleepTimeAndDimmingTime
|
61 |
SetMediaPlaybackState
|
62 |
SetIdleTimeDetectionExtension
|
63 |
GetIdleTimeDetectionExtension
|
64 |
SetInputDetectionSourceSet
|
65 |
ReportUserIsActive
|
66 |
GetCurrentIlluminance
|
67 |
IsIlluminanceAvailable
|
CreateManagedDisplayLayer
Returns an output u64 LayerId which is then used by the user-process with Display_services#OpenLayer.
IWindowController
Cmd |
Name |
Notes
|
0 |
CreateWindow |
Returns an IWindow object.
|
1 |
GetAppletResourceUserId |
|
10 |
AcquireForegroundRights |
|
11 |
ReleaseForegroundRights |
|
12 |
RejectToChangeIntoBackground |
|
GetAppletResourceUserId
Returns an output u64: #AppletResourceUserId.
IAudioController
Cmd |
Name
|
0 |
SetExpectedMasterVolume
|
1 |
GetMainAppletExpectedMasterVolume
|
2 |
GetLibraryAppletExpectedMasterVolume
|
3 |
ChangeMainAppletMasterVolume
|
4 |
SetTransparentVolumeRate
|
IDisplayController
Cmd |
Name
|
0 |
GetLastForegroundCaptureImage
|
1 |
UpdateLastForegroundCaptureImage
|
2 |
GetLastApplicationCaptureImage
|
3 |
GetCallerAppletCaptureImage
|
4 |
UpdateCallerAppletCaptureImage
|
5 |
GetLastForegroundCaptureImageEx
|
6 |
GetLastApplicationCaptureImageEx
|
7 |
GetCallerAppletCaptureImageEx
|
8 |
TakeScreenShotOfOwnLayer
|
10 |
AcquireLastApplicationCaptureBuffer
|
11 |
ReleaseLastApplicationCaptureBuffer
|
12 |
AcquireLastForegroundCaptureBuffer
|
13 |
ReleaseLastForegroundCaptureBuffer
|
14 |
AcquireCallerAppletCaptureBuffer
|
15 |
ReleaseCallerAppletCaptureBuffer
|
16 |
AcquireLastApplicationCaptureBufferEx
|
17 |
AcquireLastForegroundCaptureBufferEx
|
18 |
AcquireCallerAppletCaptureBufferEx
|
20 |
ClearCaptureBuffer
|
21 |
ClearAppletTransitionBuffer
|
ILibraryAppletCreator
Cmd |
Name |
Notes
|
0 |
CreateLibraryApplet |
Returns a #ILibraryAppletAccessor.
|
1 |
TerminateAllLibraryApplets |
|
2 |
AreAnyLibraryAppletsLeft |
|
10 |
CreateStorage |
Returns an IStorage.
|
11 |
CreateTransferMemoryStorage |
Returns an IStorage.
|
12 |
CreateHandleStorage |
Returns an IStorage.
|
IProcessWindingController
IDebugFunctions
Cmd |
Name |
Notes
|
0 |
NotifyMessageToHomeMenuForDebug |
|
1 |
OpenMainApplication |
Returns an #IApplicationAccessor.
|
10 |
EmulateButtonEvent |
|
20 |
InvalidateTransitionLayer |
|
appletOE
This is "nn::am::service::IApplicationProxyService".
This seems to be used by all(?) regular-applications, even flog.
OpenApplicationProxy
Returns an #IApplicationProxy. See #appletAE.
Takes a reserved input u64(official user-processes use hard-code 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:sysomm
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 |
GetOmmWaitEvent
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
spsmEnums
AppletId
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
|
|
0x17
|
010000000000100F
|
"LibAppletOff" Offline applet
|
0x18
|
0100000000001010
|
"LibAppletLns" Whitelisted applet
|
0x19
|
0100000000001011
|
"LibAppletAuth" WifiWebAuth applet
|
0x1A
|
0100000000001013
|
"myPage"
|
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
|
AppletResourceUserId
This u64 is officially called "nn::applet::AppletResourceUserId". Used by a number of non-AM services.