Applet Manager services: Difference between revisions

 
(31 intermediate revisions by 4 users not shown)
Line 11: Line 11:
|-
|-
| 100 || OpenSystemAppletProxy || Returns an [[#ISystemAppletProxy]].
| 100 || OpenSystemAppletProxy || Returns an [[#ISystemAppletProxy]].
|-
| 110 || [20.0.0+] ||
|-
|-
| 200 || OpenLibraryAppletProxyOld ([1.0.0-2.3.0] OpenLibraryAppletProxy) || Returns an [[#ILibraryAppletProxy]].
| 200 || OpenLibraryAppletProxyOld ([1.0.0-2.3.0] OpenLibraryAppletProxy) || Returns an [[#ILibraryAppletProxy]].
Line 23: Line 25:
|-
|-
| 410 || [6.0.0+] [[#GetSystemAppletControllerForDebug]] ||  
| 410 || [6.0.0+] [[#GetSystemAppletControllerForDebug]] ||  
|-
| 450 || [19.0.0+] [[#GetSystemProcessCommonFunctions]] ||
|-
| 460 || [20.0.0+] ||
|-
|-
| 1000 || [6.0.0+] [[#GetDebugFunctions]] ||  
| 1000 || [6.0.0+] [[#GetDebugFunctions]] ||  
Line 58: Line 64:


The cached value loaded from [[System_Settings|system-setting]] <code>am.debug!dev_function</code> must be set to 0x1 with size 0x1, and various state checks must pass, otherwise 0 is returned with no output interface.
The cached value loaded from [[System_Settings|system-setting]] <code>am.debug!dev_function</code> must be set to 0x1 with size 0x1, and various state checks must pass, otherwise 0 is returned with no output interface.
== GetSystemProcessCommonFunctions ==
No input. Returns an [[#ISystemProcessCommonFunctions]].


== GetDebugFunctions ==
== GetDebugFunctions ==
Line 124: Line 133:
|-
|-
| 51 || [16.0.0+] [[#LaunchStarter]]
| 51 || [16.0.0+] [[#LaunchStarter]]
|-
| 60 || [19.0.0+]
|-
| 61 || [19.0.0+]
|-
|-
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]]
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]]
Line 441: Line 454:
|-
|-
| 201 || [10.0.0+] [[#RestartApplicationTimer]] ||
| 201 || [10.0.0+] [[#RestartApplicationTimer]] ||
|-
| 300 || [20.0.0+] ||
|-
| 301 || [20.0.0+] ||
|}
|}


Line 605: Line 622:
|-
|-
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet
|-
| 82 || [18.0.0+] SetBlockingCaptureButtonInEntireSystem
|-
|-
| 90 || [15.0.0+] OpenNamedChannelAsParent
| 90 || [15.0.0+] OpenNamedChannelAsParent
Line 611: Line 630:
|-
|-
| 100 || [15.0.0+] SetApplicationCoreUsageMode
| 100 || [15.0.0+] SetApplicationCoreUsageMode
|-
| 160 || [18.0.0+] GetNotificationReceiverService
|-
| 161 || [18.0.0+] GetNotificationSenderService
|-
| 300 || [17.0.0+] GetCurrentApplicationId
|-
| 310 || [19.0.0+] IsSystemAppletHomeMenu
|-
| 311 || [20.0.0+]
|-
| 320 || [19.0.0+] SetGpuTimeSliceBoost
|-
| 321 || [19.0.0+] SetGpuTimeSliceBoostDueToApplication
|-
| 322 || [20.0.0+]
|-
| 330 || [19.0.0+]
|-
| 340 || [20.0.0+]
|-
| 341 || [20.0.0+]
|-
| 342 || [20.0.0+]
|-
| 350 || [20.0.0+]
|-
| 360 || [20.0.0+]
|}
|}


Line 764: Line 811:
|-
|-
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] ||
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] ||
|-
| 160 || [17.0.0+] [[#GetLibraryAppletInfoEx]] ||
|}
|}


Line 896: Line 945:
==== ShouldSetGpuTimeSliceManually ====
==== ShouldSetGpuTimeSliceManually ====
No input, returns an output u8 bool.
No input, returns an output u8 bool.
==== GetLibraryAppletInfoEx ====
No input, returns an output u64. Currently always returns 0.


== IOverlayAppletProxy ==
== IOverlayAppletProxy ==
Line 959: Line 1,011:
|-
|-
| 31 || [10.0.0+] [[#IsHealthWarningRequired]]
| 31 || [10.0.0+] [[#IsHealthWarningRequired]]
|-
| 40 || [18.0.0+] GetApplicationNintendoLogo
|-
| 41 || [18.0.0+] GetApplicationStartupMovie
|-
| 50 || [19.0.0+] SetGpuTimeSliceBoostForApplication
|-
| 60 || [19.0.0+]
|-
|-
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
Line 1,139: Line 1,199:
|-
|-
| 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]]
| 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]]
|-
| 112 || [20.0.0+]
|-
| 113 || [20.0.0+]
|-
|-
| 120 || [5.0.0+] [[#ExecuteProgram]]
| 120 || [5.0.0+] [[#ExecuteProgram]]
Line 1,173: Line 1,237:
|-
|-
| 200 || [11.0.0+] [[#GetLastApplicationExitReason]]
| 200 || [11.0.0+] [[#GetLastApplicationExitReason]]
|-
| 210 || [20.0.0+]
|-
| 220 || [20.0.0+]
|-
| 300 || [19.0.0+] [[#CreateMovieWriter]]
|-
| 310 || [20.0.0+]
|-
| 320 || [20.0.0+]
|-
|-
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]]
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]]
Line 1,441: Line 1,515:
==== GetLastApplicationExitReason ====
==== GetLastApplicationExitReason ====
No input, returns an output s32.
No input, returns an output s32.
==== CreateMovieWriter ====
Takes 8-bytes of input and a handle. Returns an [[#IMovieWriter]].
This internally uses the GRC cmd to open an [[GRC_services|IMovieWriter]]. This is therefore not usable on NX since that cmd is stubbed.


==== StartContinuousRecordingFlushForDebug ====
==== StartContinuousRecordingFlushForDebug ====
Line 1,468: Line 1,547:
AM can also optionally launch jit-sysmodule automatically if the [[NACP]] enables it.
AM can also optionally launch jit-sysmodule automatically if the [[NACP]] enables it.


=== IMovieMaker ===
=== IMovieWriter ===
This is "nn::am::service::IMovieMaker".
This is "nn::am::service::IMovieWriter".
 
This was added with [19.0.0+].
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 ||
|}
 
==== Cmd0 ====
No input. Returns a GRC [[GRC_services|IMovieWriter]].
 
=== IMovieMaker ===
This is "nn::am::service::IMovieMaker".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 1,498: Line 1,592:
|-
|-
| 2 || [[#AreAnyLibraryAppletsLeft]] ||
| 2 || [[#AreAnyLibraryAppletsLeft]] ||
|-
| 3 || [20.0.0+] ||
|-
|-
| 10 || [[#CreateStorage]] ||  
| 10 || [[#CreateStorage]] ||  
Line 1,562: Line 1,658:
|-
|-
| 60 || [10.0.0+] [[#PresetLibraryAppletGpuTimeSliceZero]] ||
| 60 || [10.0.0+] [[#PresetLibraryAppletGpuTimeSliceZero]] ||
|-
| 80 || [19.0.0+] RequestForLibraryAppletToGetForeground ||
|-
| 81 || [19.0.0+] GetCurrentChildLibraryApplet ||
|-
| 90 || [20.0.0+] ||
|-
|-
| 100 || [[#PushInData]] ||  
| 100 || [[#PushInData]] ||  
Line 1,670: Line 1,772:
|-
|-
| 14 || [11.0.0+] [[#GetWakeupCount]]
| 14 || [11.0.0+] [[#GetWakeupCount]]
|-
| 15 || [19.0.0+]
|-
|-
| 20 || [[#PushToGeneralChannel]]
| 20 || [[#PushToGeneralChannel]]
Line 1,740: Line 1,844:
|-
|-
| 503 || [12.0.0+] IsDisablingSleepSuppressed
| 503 || [12.0.0+] IsDisablingSleepSuppressed
|-
| 600 || [20.0.0+] ([17.0.0-18.1.0] OpenNamedChannelAsChild)
|-
|-
| 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]]
| 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]]
|-
| 910 || [17.0.0+] GetLaunchRequiredTick
|-
| 1000 || [19.0.0+] BeginVrMode3d
|-
| 1001 || [19.0.0+] EndVrMode3d
|-
| 1002 || [19.0.0+] IsVrModeEnabled3d
|}
|}


Line 2,025: Line 2,139:
|-
|-
| 21 || [13.0.0+] GetScreenShotProgramId
| 21 || [13.0.0+] GetScreenShotProgramId
|-
| 22 || [19.0.0+] GetScreenShotAcdIndex
|-
| 23 || [19.0.0+] GetScreenShotApparentPlatform
|-
| 24 || [19.0.0+] GetScreenShotApplicationProperty
|-
|-
| 40 || [[#CreateManagedDisplayLayer]]
| 40 || [[#CreateManagedDisplayLayer]]
Line 2,083: Line 2,203:
|-
|-
| 130 || [13.0.0+] [[#SetRecordVolumeMuted]]
| 130 || [13.0.0+] [[#SetRecordVolumeMuted]]
|-
| 200 || [20.0.0+]
|-
| 210 || [20.0.0+]
|-
| 211 || [20.0.0+]
|-
| 220 || [20.0.0+]
|-
| 221 || [20.0.0+]
|-
| 230 || [20.0.0+]
|-
|-
| 1000 || [7.0.0+] [[#GetDebugStorageChannel]]
| 1000 || [7.0.0+] [[#GetDebugStorageChannel]]
Line 2,410: Line 2,542:
|-
|-
| 4 || [[#SetTransparentVolumeRate]]
| 4 || [[#SetTransparentVolumeRate]]
|-
| 5 || [20.0.0+]
|}
|}


Line 2,712: Line 2,846:
Takes an input [[#ILibraryAppletAccessor]], no output.
Takes an input [[#ILibraryAppletAccessor]], no output.


== IDebugFunctions ==
== ISystemProcessCommonFunctions ==
This is "nn::am::service::IDebugFunctions".
This is "nn::am::service::ISystemProcessCommonFunctions".
 
This was added with [19.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 2,719: Line 2,855:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#NotifyMessageToHomeMenuForDebug]]
| 0 ||
|}
 
=== Cmd0 ===
No input. Returns an [[#IApplicationObserver]].
 
=== IApplicationObserver ===
This is "nn::am::service::IApplicationObserver".
 
This was added with [19.0.0+].
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 1 ||
|-
| 2 ||
|-
| 10 ||
|-
| 20 ||
|-
| 30 ||
|}
 
== IDebugFunctions ==
This is "nn::am::service::IDebugFunctions".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || [[#NotifyMessageToHomeMenuForDebug]]
|-
|-
| 1 || [1.0.0-9.2.0] [[#OpenMainApplication]]
| 1 || [1.0.0-9.2.0] [[#OpenMainApplication]]
Line 2,729: Line 2,898:
| 30 || [6.0.0+] [[#RequestLaunchApplicationWithUserAndArgumentForDebug]]
| 30 || [6.0.0+] [[#RequestLaunchApplicationWithUserAndArgumentForDebug]]
|-
|-
| 31 || [12.0.0+] RequestLaunchApplicationByApplicationLaunchInfoForDebug
| 31 || [12.0.0+] [[#RequestLaunchApplicationByApplicationLaunchInfoForDebug]]
|-
|-
| 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]]
| 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]]
Line 2,736: Line 2,905:
|-
|-
| 51 || [16.0.0+] AddOperationConfirmedLibraryAppletIdForDebug
| 51 || [16.0.0+] AddOperationConfirmedLibraryAppletIdForDebug
|-
| 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug
|-
| 53 || [18.0.0+] GetProgramIdFromAppletIdAndLibraryAppletModeForDebug
|-
|-
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]]
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]]
Line 2,762: Line 2,935:
|-
|-
| 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug
| 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug
|-
| 410 || [18.0.0+] CreateGeneralStorageForDebug
|-
| 411 || [18.0.0+] ReadGeneralStorageForDebug
|-
| 412 || [18.0.0+] WriteGeneralStorageForDebug
|-
| 430 || [20.0.0+]
|-
| 431 || [20.0.0+]
|-
|-
| 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent
| 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent
|-
| 910 || [20.0.0+]
|}
|}


Line 2,786: Line 2,971:


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]]).
=== RequestLaunchApplicationByApplicationLaunchInfoForDebug ===
Takes a total of 0x58-bytes of input, a type-0x5 input buffer containing an array of 0x10-byte entries, and a type-0x5 input buffer. No output.
[19.0.0+] Takes a total of 0x88-bytes of input, a type-0x5 input buffer containing an array of 0x10-byte entries, and a type-0x5 input buffer. No output.


=== GetAppletResourceUsageInfo ===
=== GetAppletResourceUsageInfo ===
Line 2,897: Line 3,087:


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.
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.
= (Switch 2) appletOE =
[S2] This is "nn::am::service::IApplicationProxyServiceForNxCompat".
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 0 || [[#OpenApplicationProxy]] ||
|-
| 2000 || [[#OpenCompatApplicationFunctions]] ||  Returns an [[#(Switch 2) INxCompatApplicationFunctions]]
|}


== OpenApplicationProxy ==
== OpenApplicationProxy ==
Line 2,905: Line 3,107:
On failure, official user-processes will retry using this command in a loop while the retval is 0x19280, with svcSleepThread(10000000) being called first.
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 =
= (Switch 2) INxCompatApplicationFunctions =
This is "nn::idle::detail::IPolicyManagerSystem"
This is "nn::am::service::INxCompatApplicationFunctions".
 
This was moved to [[OMM_services|omm]] with [14.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd || Name || Notes
|-
|-
| 0 || GetAutoPowerDownEvent
| 2000 || GetTipcCompatInterface? || Returns a TIPC handle to [[#TipcCompatInterface]].
|-
| 2001 || ||
|-
| 2002 || ||
|-
| 2003 || || Called directly after "nn::vi::WriteToCopyrightFramebuffer".
|-
| 2004 || ||
|-
| 2010 || ||
|-
| 2020 || Initialize? || Called during init. Takes no args.
|-
|-
| 1 || [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2] )
| 2030 || GetVsyncEvent? || Takes no args. Returns a event handle.
|-
|-
| 2 || [1.0.0-3.0.2]
| 2040 || GetVsyncTimestamp? || When above event triggers, this returns a timestamp.
|-
|-
| 3 || [[#SetHandlingContext]]
| 2050 || ||
|-
|-
| 4 || LoadAndApplySettings
| 2060 ||  ||  
|-
|-
| 5 || ReportUserIsActive
| 2070 || CreateMovieMaker || Same args as [[#CreateMovieMaker]]. Returns an [[#IMovieMaker]].
|}
|}


== SetHandlingContext ==
== (Switch 2) TipcCompatInterface ==
[3.0.0+] Now takes an additional 0x10-bytes of input.
 
[13.0.0+] Total input size is now 0x30 instead of 0x38.
 
= 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|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].
 
This was moved to [[OMM_services|omm]] with [14.0.0+].
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd (adjusted - 16) || Name || Notes
|-
|-
| 0 || GetOperationMode
| 4 || InitializeA || Sends current process handle, and struct { u64 aruid; u64 always_0x8000000000000005; u64 always_0; u64 always_0; u64 always_0; u64 svc_get_info_31_or_32_output; }.
|-
|-
| 1 || GetOperationModeChangeEvent
| 11 || InitializeB || Sends current process handle. No args. Sent directly after cmd4.
|-
|-
| 2 || EnableAudioVisual
| 101 || InitializeC || Sent directly after cmd11.
|-
|-
| 3 || DisableAudioVisual
| 111 || ||
|-
|-
| 4 || EnterSleepAndWait
| 112 || ||
|-
|-
| 5 || GetCradleStatus
| 114 || ||
|-
|-
| 6 || FadeInDisplay
| 115 || ||
|-
|-
| 7 || FadeOutDisplay
| 187 || ||
|-
|-
| 8 || [2.0.0+] GetCradleFwVersion
| 201 || ||
|-
|-
| 9 || [2.0.0+] NotifyCecSettingsChanged
| 301 || ||
|-
|-
| 10 || [3.0.0+] SetOperationModePolicy
| 327 || ||
|-
|-
| 11 || [3.0.0+] GetDefaultDisplayResolution
| 303 || ||
|-
|-
| 12 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent
| 311 || ||
|-
|-
| 13 || [3.0.0+] UpdateDefaultDisplayResolution
| 312 || ||
|-
|-
| 14 || [3.0.0+] ShouldSleepOnBoot
| 314 || ||
|-
|-
| 15 || [4.0.0+] NotifyHdcpApplicationExecutionStarted
| 315 || ||
|-
| 321 || ||
|-
| 391 || ||
|-
| 401 || ||
|-
|-
| 16 || [4.0.0+] NotifyHdcpApplicationExecutionFinished
| 402 || ||
|-
|-
| 17 || [4.0.0+] NotifyHdcpApplicationDrawingStarted
| 423 || ||
|-
|-
| 18 || [4.0.0+] NotifyHdcpApplicationDrawingFinished
| 434 || ||
|-
|-
| 19 || [4.0.0+] GetHdcpAuthenticationFailedEvent
| 497 || ||
|-
|-
| 20 || [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled
| 901 || ||
|-
|-
| 21 || [4.0.0+] SetHdcpAuthenticationFailedEmulation
| 902 || ||
|-
|-
| 22 || [4.0.0+] GetHdcpStateChangeEvent
| 903 || ||
|-
|-
| 23 || [4.0.0+] GetHdcpState
| 905 || ||
|-
|-
| 24 || [5.0.0+] ShowCardUpdateProcessing
| 911 || ||
|-
|-
| 25 || [5.0.0+] SetApplicationCecSettingsAndNotifyChanged
| 912 || ||
|-
|-
| 26 || [7.0.0+] [[#GetOperationModeSystemInfo]]
| 922 || ||
|-
|-
| 27 || [9.0.0+] GetAppletFullAwakingSystemEvent
| 961 || ||
|-
|-
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]]
| 991 || ||
|}
 
== GetOperationModeSystemInfo ==
No input, returns an output u32.
 
This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]].
 
== CreateCradleFirmwareUpdater ==
No input. Returns an [[#ICradleFirmwareUpdater]].
 
== ICradleFirmwareUpdater ==
This is "nn::am::service::ICradleFirmwareUpdater".
 
This was added with [12.0.0+].
 
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
| 1001 || ||
|-
|-
| 0 || Start
| 1002 || ||
|-
|-
| 1 || Finish
| 1003 || ||
|-
|-
| 2 || GetUpdateDeviceStatus
| 1101 || ||
|-
|-
| 3 || GetUpdateProgress
| 1102 || ||
|-
|-
| 4 || GetUpdateDeviceStatusChangeEvent
| 1401 || InitializeNvdrv2WithTransferMemory || Takes a TransferMemory handle, and u64 size. Returns an [[#INvDrv2User]].
|-
|-
| 5 || GetUpdateProgress2
| 1402 || InitializeNvdrv2 || Returns an [[#INvDrv2User]].
|}
|-
| 1501 || ||
|-
| 1502 || ||
|-
| 1601 || ||
|-
| 1602 || ||
|-
| 1603 || ||
|-
| 1611 || ||
|-
| 1612 || ||
|-
| 1691 || ||
|}


= spsm =
== (Switch 2) INvDrv2User ==
This is "nn::spsm::detail::IPowerStateInterface".
This is "nn::nvdrv::INvDrv2User".
 
This was moved to [[OMM_services|omm]] with [14.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 3,042: Line 3,246:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || GetCurrentState
| 0 || Open
|-
|-
| 1 || EnterSleep
| 1 || Ioctl
|-
|-
| 2 || GetLastWakeReason
| 2 || Close
|-
|-
| 3 || Shutdown
| 4 || QueryEvent
|-
|-
| 4 || GetNotificationMessageEventHandle
| 9 || DumpStatus
|-
|-
| 5 || ReceiveNotificationMessage
| 10 || InitializeDevtools
|-
|-
| 6 || AnalyzeLogForLastSleepWakeSequence
| 11 || Ioctl2
|-
|-
| 7 || ResetEventLog
| 12 || Ioctl3
|-
|-
| 8 || AnalyzePerformanceLogForLastSleepWakeSequence
| 13 || SetGraphicsFirmwareMemoryMarginEnabled
|-
| 9 || ChangeHomeButtonLongPressingTime
|-
| 10 || PutErrorState
|-
| 11 || [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing
|}
|}


[3.0.0+] Cmd11 now takes a total of 8-bytes of input.
= idle:sys =
This is "nn::idle::detail::IPolicyManagerSystem"


= tcap =
This was moved to [[OMM_services|omm]] with [14.0.0+].
This is "nn::tcap::server::IManager".
 
This was removed with [11.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 3,078: Line 3,274:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || GetContinuousHighSkinTemperatureEvent
| 0 || GetAutoPowerDownEvent
|-
|-
| 1 || SetOperationMode
| 1 || [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2] )
|-
|-
| 2 || LoadAndApplySettings
| 2 || [1.0.0-3.0.2]
|-
| 3 || [[#SetHandlingContext]]
|-
| 4 || LoadAndApplySettings
|-
| 5 || ReportUserIsActive
|}
|}


= caps:su =
== SetHandlingContext ==
This is "nn::capsrv::sf::IScreenShotApplicationService".
[3.0.0+] Now takes an additional 0x10-bytes of input.
 
[13.0.0+] Total input size is now 0x30 instead of 0x38.
 
= omm =
This is "nn::omm::detail::IOperationModeManager"


This was added with [6.0.0+].
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes.
Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]].


This can be used by applications to save screenshots.
This was moved to [[OMM_services|omm]] with [14.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
| 0 || GetOperationMode
|-
| 1 || GetOperationModeChangeEvent
|-
|-
| 32 || [7.0.0+] SetShimLibraryVersion || Takes a total of 0x10-bytes of input and a PID, no output.
| 2 || EnableAudioVisual
|-
|-
| 201 || SaveScreenShot ||  
| 3 || DisableAudioVisual
|-
| 4 || EnterSleepAndWait
|-
|-
| 203 || SaveScreenShotEx0 ||  
| 5 || GetCradleStatus
|-
|-
| 205 || [8.0.0+] SaveScreenShotEx1 ||  
| 6 || FadeInDisplay
|-
|-
| 210 || SaveScreenShotEx2 || Takes a total of 0x50-bytes of input, a type-0x15 input buffer, and a type-0x45 input buffer.  Returns a total of 0x20-bytes of output.
| 7 || FadeOutDisplay
|}
 
'''SetShimLibraryVersion''' is a wrapper for [[Capture_services|caps:c]] cmd33. Commands '''SaveScreenShot''', '''SaveScreenShotEx0''', '''SaveScreenShotEx1''' and '''SaveScreenShotEx2''' are wrappers for [[Display_services|caps:sc]] cmd210.
 
== SaveScreenShot ==
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 +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 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
== SaveScreenShotEx1 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, a type-0x15 input buffer containing an [[Capture_services|ApplicationData]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
== SaveScreenShotEx2 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a type-0x15 input buffer containing an [[Capture_services|UserIdList]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
= apm =
This is "nn::am::service::IApmManager".
 
This was added with [8.0.0+].
 
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
| 8 || [2.0.0+] GetCradleFwVersion
|-
|-
| 0 || [[#OpenSession]]
| 9 || [2.0.0+] NotifyCecSettingsChanged
|-
|-
| 1 || GetPerformanceMode
| 10 || [3.0.0+] SetOperationModePolicy
|-
|-
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
| 11 || [3.0.0+] GetDefaultDisplayResolution
|}
 
== OpenSession ==
Returns an [[#ISession]].
 
== IsCpuOverclockEnabled ==
No input, returns an output u8 bool.
 
== ISession ==
This is "nn::am::service::IApmSession".
 
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
| 12 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent
|-
|-
| 0 || SetPerformanceConfiguration
| 13 || [3.0.0+] UpdateDefaultDisplayResolution
|-
| 14 || [3.0.0+] ShouldSleepOnBoot
|-
|-
| 1 || GetPerformanceConfiguration
| 15 || [4.0.0+] NotifyHdcpApplicationExecutionStarted
|-
|-
| 2 || [8.0.0+] SetCpuOverclockEnabled
| 16 || [4.0.0+] NotifyHdcpApplicationExecutionFinished
|}
 
= Library Applets =
This section documents library applet launching.
 
Before starting the applet, [[#IStorage]]s are [[#ILibraryAppletCreator|created]] and written, then passed to [[#ILibraryAppletAccessor]] PushInData. The [[#IStorage]] session is closed afterwards. The first [[#IStorage]] is [[#CommonArguments]], followed by any applet-specific [[#IStorage]]s.
 
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 [[#CreateStorage|IStorage]] passed to applets should contain the common library applet arguments. This is populated by <code>nn::la::CommonArgumentsWriter</code> and has the following format.
 
This struct is 0x20-bytes.
 
Official sw handles the first 8-bytes separately, which is a header. With CommonArguments version 0x0, the header is 4-bytes, while starting with version 0x1 it's 8-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Typical Value || Notes
| 17 || [4.0.0+] NotifyHdcpApplicationDrawingStarted
|-
|-
| 0x0 || 4 || 1 || Common Arguments version
| 18 || [4.0.0+] NotifyHdcpApplicationDrawingFinished
|-
|-
| 0x4 || 4 || 0x20 || Common Arguments size
| 19 || [4.0.0+] GetHdcpAuthenticationFailedEvent
|-
|-
| 0x8 || 4 || || Library applet version (API version)
| 20 || [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled
|-
|-
| 0xC || 4 || 0 || Theme color
| 21 || [4.0.0+] SetHdcpAuthenticationFailedEmulation
|-
|-
| 0x10 || 1 || 0 || Play startup sound
| 22 || [4.0.0+] GetHdcpStateChangeEvent
|-
|-
| 0x18 || 8 || N/A || System tick (see [[SVC#svcGetSystemTick|svcGetSystemTick]])
| 23 || [4.0.0+] GetHdcpState
|-
|-
|}
| 24 || [5.0.0+] ShowCardUpdateProcessing
 
|-
= AppletId =
| 25 || [5.0.0+] SetApplicationCecSettingsAndNotifyChanged
This is "nn::applet::AppletId". See also [[:Category:Library Applets]].
|-
| 26 || [7.0.0+] [[#GetOperationModeSystemInfo]]
|-
| 27 || [9.0.0+] GetAppletFullAwakingSystemEvent
|-
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]]
|}
 
== GetOperationModeSystemInfo ==
No input, returns an output u32.
 
This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]].
 
== CreateCradleFirmwareUpdater ==
No input. Returns an [[#ICradleFirmwareUpdater]].
 
== ICradleFirmwareUpdater ==
This is "nn::am::service::ICradleFirmwareUpdater".
 
This was added with [12.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value
! Cmd || Name
! ProgramId
! Description
|-
|-
| 0x00
| 0 || Start
|  
| None
|-
|-
| 0x01
| 1 || Finish
|  
| Application (not valid for use with LibraryApplets)
|-
|-
| 0x02
| 2 || GetUpdateDeviceStatus
| 010000000000100C
| OverlayApplet (overlayDisp)
|-
|-
| 0x03
| 3 || GetUpdateProgress
| 0100000000001000
| SystemAppletMenu (qlaunch)
|-
|-
| 0x04
| 4 || GetUpdateDeviceStatusChangeEvent
| 0100000000001012
| SystemApplication (starter)
|-
|-
| 0x0A
| 5 || GetUpdateProgress2
| 0100000000001001
|}
| [[Auth_Applet|LibraryAppletAuth (auth)]]
 
= spsm =
This is "nn::spsm::detail::IPowerStateInterface".
 
This was moved to [[OMM_services|omm]] with [14.0.0+].
 
{| class="wikitable" border="1"
|-
|-
| 0x0B
! Cmd || Name
| 0100000000001002
| [[Cabinet_Applet|LibraryAppletCabinet (cabinet)]]
|-
|-
| 0x0C
| 0 || GetCurrentState
| 0100000000001003
| [[Controller_Applet|LibraryAppletController (controller)]]
|-
|-
| 0x0D
| 1 || EnterSleep
| 0100000000001004
| LibraryAppletDataErase (dataErase)
|-
|-
| 0x0E
| 2 || GetLastWakeReason
| 0100000000001005
| [[Error_Applet|LibraryAppletError (error)]]
|-
|-
| 0x0F
| 3 || Shutdown
| 0100000000001006
| LibraryAppletNetConnect (netConnect)
|-
|-
| 0x10
| 4 || GetNotificationMessageEventHandle
| 0100000000001007
| [[Profile_Selector|LibraryAppletPlayerSelect (playerSelect)]]
|-
|-
| 0x11
| 5 || ReceiveNotificationMessage
| 0100000000001008
| [[Software_Keyboard|LibraryAppletSwkbd (swkbd)]]
|-
|-
| 0x12
| 6 || AnalyzeLogForLastSleepWakeSequence
| 0100000000001009
| [[MiiEdit_Applet|LibraryAppletMiiEdit (miiEdit)]]
|-
|-
| 0x13
| 7 || ResetEventLog
| 010000000000100A
| [[Internet_Browser#010000000000100A|LibraryAppletWeb (web)]]
|-
|-
| 0x14
| 8 || AnalyzePerformanceLogForLastSleepWakeSequence
| 010000000000100B
| [[Internet_Browser#ShopN|LibraryAppletShop (shop)]]
|-
|-
| 0x15
| 9 || ChangeHomeButtonLongPressingTime
| 010000000000100D
| [[Album_Applet|LibraryAppletPhotoViewer (photoViewer)]]
|-
|-
| 0x16
| 10 || PutErrorState
| 010000000000100E
| LibraryAppletSet (set)
|-
|-
| 0x17
| 11 || [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing
| 010000000000100F
|}
| [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]]
 
[3.0.0+] Cmd11 now takes a total of 8-bytes of input.
 
= tcap =
This is "nn::tcap::server::IManager".
 
This was removed with [11.0.0+].
 
{| class="wikitable" border="1"
|-
|-
| 0x18
! Cmd || Name
| 0100000000001010
| [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]]
|-
|-
| 0x19
| 0 || GetContinuousHighSkinTemperatureEvent
| 0100000000001011
| [[Internet_Browser#WifiWebAuthApplet|LibraryAppletWifiWebAuth (wifiWebAuth)]]
|-
|-
| 0x1A
| 1 || SetOperationMode
| 0100000000001013
| [[MyPage_Applet|LibraryAppletMyPage (myPage)]]
|-
|-
| 0x1B
| 2 || LoadAndApplySettings
| 010000000000101A
|}
| LibraryAppletGift (gift)
 
= caps:su =
This is "nn::capsrv::sf::IScreenShotApplicationService".
 
This was added with [6.0.0+].
 
This can be used by applications to save screenshots.
 
{| class="wikitable" border="1"
|-
|-
| 0x1C
! Cmd || Name
| 010000000000101C
| LibraryAppletUserMigration (userMigration)
|-
|-
| 0x1D
| 32 || [7.0.0+] [[#SetShimLibraryVersion]]
| 010000000000101D
| [9.0.0+] LibraryAppletPreomiaSys (EncounterSys)
|-
|-
| 0x1E
| 201 || [[#SaveScreenShot]]
| 0100000000001020
| [9.0.0+] LibraryAppletStory (story)
|-
|-
| 0x1F
| 203 || [[#SaveScreenShotEx0]]
| 010070000E3C0000
| [9.0.0+] LibraryAppletPreomiaUsr (EncounterUsr)
|-
|-
| 0x20
| 205 || [8.0.0+] [[#SaveScreenShotEx1]]
| 010086000E49C000
| [9.0.0+] LibraryAppletPreomiaUsrDummy (EncounterUsrDummy)
|-
|-
| 0x21
| 210 || [[#SaveScreenShotEx2]]
| 0100000000001038
|}
| [10.0.0+] LibraryAppletSample (sample)
 
== SetShimLibraryVersion ==
Takes a total of 0x10-bytes of input and a PID, no output.
 
This is a wrapper for [[Capture_services|caps:c]] cmd33. Commands '''SaveScreenShot''', '''SaveScreenShotEx0''', '''SaveScreenShotEx1''' and '''SaveScreenShotEx2''' are wrappers for [[Display_services|caps:sc]] cmd210.
 
== SaveScreenShot ==
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 +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 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
== SaveScreenShotEx1 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, a type-0x15 input buffer containing an [[Capture_services|ApplicationData]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
== SaveScreenShotEx2 ==
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a type-0x15 input buffer containing an [[Capture_services|UserIdList]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]].
 
= apm =
This is "nn::am::service::IApmManager".
 
This was added with [8.0.0+].
 
{| class="wikitable" border="1"
|-
|-
| 0x22
! Cmd || Name
| 0100000000001007
| [13.0.0+] LibraryAppletPromoteQualification (playerSelect)
|-
|-
| 0x35
| 0 || [[#OpenSession]]
| 0100000000001042
| [16.0.0+]
|-
|-
| 0x36
| 1 || GetPerformanceMode
| 0100000000001042
| [16.0.0+]
|-
|-
| 0x37
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
| 0100000000001042
|}
| [16.0.0+]
 
|-
== OpenSession ==
| 0x38
Returns an [[#ISession]].
| 0100000000001043
 
| [16.0.0+]
== IsCpuOverclockEnabled ==
No input, returns an output u8 bool.
 
== ISession ==
This is "nn::am::service::IApmSession".
 
{| class="wikitable" border="1"
|-
|-
| 0x3E8
! Cmd || Name
|  
| [10.0.0+] DevlopmentTool
|-
|-
| 0x3F1
| 0 || SetPerformanceConfiguration
| 010000000000D619
| [10.0.0+] CombinationLA
|-
|-
| 0x3F2
| 1 || GetPerformanceConfiguration
| 010000000000D610
| [10.0.0+] AeSystemApplet
|-
|-
| 0x3F3
| 2 || [8.0.0+] SetCpuOverclockEnabled
| 010000000000D611
|}
| [10.0.0+] AeOverlayApplet
 
= Library Applets =
This section documents library applet launching.
 
Before starting the applet, [[#IStorage]]s are [[#ILibraryAppletCreator|created]] and written, then passed to [[#ILibraryAppletAccessor]] PushInData. The [[#IStorage]] session is closed afterwards. The first [[#IStorage]] is [[#CommonArguments]], followed by any applet-specific [[#IStorage]]s.
 
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 [[#CreateStorage|IStorage]] passed to applets should contain the common library applet arguments. This is populated by <code>nn::la::CommonArgumentsWriter</code> and has the following format.
 
This struct is 0x20-bytes.
 
Official sw handles the first 8-bytes separately, which is a header. With CommonArguments version 0x0, the header is 4-bytes, while starting with version 0x1 it's 8-bytes.
 
{| class="wikitable" border="1"
|-
|-
| 0x3F4
! Offset || Size || Typical Value || Notes
| 010000000000D612
| [10.0.0+] AeStarter
|-
|-
| 0x3F5
| 0x0 || 4 || 1 || Common Arguments version
| 010000000000D613
| [10.0.0+] AeLibraryAppletAlone
|-
|-
| 0x3F6
| 0x4 || 4 || 0x20 || Common Arguments size
| 010000000000D614
| [10.0.0+] AeLibraryApplet1
|-
|-
| 0x3F7
| 0x8 || 4 || || Library applet version (API version)
| 010000000000D615
| [10.0.0+] AeLibraryApplet2
|-
|-
| 0x3F8
| 0xC || 4 || 0 || Theme color
| 010000000000D616
| [10.0.0+] AeLibraryApplet3
|-
|-
| 0x3F9
| 0x10 || 1 || 0 || Play startup sound
| 010000000000D617
| [10.0.0+] AeLibraryApplet4
|-
|-
| 0x3FA
| 0x18 || 8 || N/A || System tick (see [[SVC#svcGetSystemTick|svcGetSystemTick]])
| 010000000000D60A
| [10.0.0+] AppletISA
|-
|-
| 0x3FB
| 010000000000D60B
| [10.0.0+] AppletIOA
|-
| 0x3FC
| 010000000000D60C
| [10.0.0+] AppletISTA
|-
| 0x3FD
| 010000000000D60D
| [10.0.0+] AppletILA1
|-
| 0x3FE
| 010000000000D60E
| [10.0.0+] AppletILA2
|}
|}


= LibraryAppletMode =
= AppletId =
This is "nn::applet::LibraryAppletMode".
This is "nn::applet::AppletId". See also [[:Category:Library Applets]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value
! Value
! ProgramId
! Description
! Description
|-
|-
| 0x0
| 0x00
| AllForeground
|  
| None
|-
|-
| 0x1
| 0x01
| PartialForeground
|  
| Application (not valid for use with LibraryApplets)
|-
|-
| 0x2
| 0x02
| NoUi
| 010000000000100C
| OverlayApplet (overlayDisp)
|-
|-
| 0x3
| 0x03
| PartialForegroundWithIndirectDisplay (see also [[#GetIndirectLayerConsumerHandle]], only used by swkbd [[Software_Keyboard|InlineKeyboard]])
| 0100000000001000
| SystemAppletMenu (qlaunch)
|-
|-
| 0x4
| 0x04
| AllForegroundInitiallyHidden (can be used by [7.0.0+] [[Internet_Browser|WebSession]])
| 0100000000001012
|}
| SystemApplication (starter)
 
= AppletMessage =
This is "nn::am::AppletMessage".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x0A
! Description
| 0100000000001001
| [[Auth_Applet|LibraryAppletAuth (auth)]]
|-
|-
| 0 || None
| 0x0B
| 0100000000001002
| [[Cabinet_Applet|LibraryAppletCabinet (cabinet)]]
|-
|-
| 1 || ChangeIntoForeground
| 0x0C
| 0100000000001003
| [[Controller_Applet|LibraryAppletController (controller)]]
|-
|-
| 2 || ChangeIntoBackground
| 0x0D
| 0100000000001004
| LibraryAppletDataErase (dataErase)
|-
|-
| 4 || Exit
| 0x0E
| 0100000000001005
| [[Error_Applet|LibraryAppletError (error)]]
|-
|-
| 6 || ApplicationExited
| 0x0F
| 0100000000001006
| LibraryAppletNetConnect (netConnect)
|-
|-
| 15 || [[#FocusState|FocusStateChanged]]
| 0x10
| 0100000000001007
| [[Profile_Selector|LibraryAppletPlayerSelect (playerSelect)]]
|-
|-
| 16 || [[#SetRestartMessageEnabled|Resume]]
| 0x11
| 0100000000001008
| [[Software_Keyboard|LibraryAppletSwkbd (swkbd)]]
|-
|-
| 20 || DetectShortPressingHomeButton
| 0x12
| 0100000000001009
| [[MiiEdit_Applet|LibraryAppletMiiEdit (miiEdit)]]
|-
|-
| 21 || DetectLongPressingHomeButton
| 0x13
| 010000000000100A
| [[Internet_Browser#010000000000100A|LibraryAppletWeb (web)]]
|-
|-
| 22 || DetectShortPressingPowerButton
| 0x14
| 010000000000100B
| [[Internet_Browser#ShopN|LibraryAppletShop (shop)]]
|-
|-
| 23 || DetectMiddlePressingPowerButton
| 0x15
| 010000000000100D
| [[Album_Applet|LibraryAppletPhotoViewer (photoViewer)]]
|-
|-
| 24 || DetectLongPressingPowerButton
| 0x16
| 010000000000100E
| LibraryAppletSet (set)
|-
|-
| 25 || RequestToPrepareSleep
| 0x17
| 010000000000100F
| [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] (LibraryAppletOfflineWebApp_0 in Ounce)
|-
|-
| 26 || FinishedSleepSequence
| 0x18
| 0100000000001010
| [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]]
|-
|-
| 27 || SleepRequiredByHighTemperature
| 0x19
| 0100000000001011
| [[Internet_Browser#WifiWebAuthApplet|LibraryAppletWifiWebAuth (wifiWebAuth)]]
|-
|-
| 28 || SleepRequiredByLowBattery
| 0x1A
| 0100000000001013
| [[MyPage_Applet|LibraryAppletMyPage (myPage)]]
|-
|-
| 29 || AutoPowerDown
| 0x1B
| 010000000000101A
| LibraryAppletGift (gift)
|-
|-
| 30 || [[#OperationMode|OperationModeChanged]]
| 0x1C
| 010000000000101C
| LibraryAppletUserMigration (userMigration)
|-
|-
| 31 || [[#PerformanceMode|PerformanceModeChanged]]
| 0x1D
| 010000000000101D
| [9.0.0+] LibraryAppletPreomiaSys (EncounterSys)
|-
|-
| 32 || DetectReceivingCecSystemStandby
| 0x1E
| 0100000000001020
| [9.0.0+] LibraryAppletStory (story)
|-
|-
| 33 || SdCardRemoved
| 0x1F
| 010070000E3C0000
| [9.0.0+] LibraryAppletPreomiaUsr (EncounterUsr)
|-
|-
| 50 || LaunchApplicationRequested
| 0x20
| 010086000E49C000
| [9.0.0+] LibraryAppletPreomiaUsrDummy (EncounterUsrDummy)
|-
|-
| 51 || [[#SetHandlesRequestToDisplay|RequestToDisplay]]
| 0x21
| 0100000000001038
| [10.0.0+] LibraryAppletSample (sample)
|-
|-
| 55 || ShowApplicationLogo
| 0x22
| 0100000000001007
| [13.0.0+] LibraryAppletPromoteQualification (playerSelect)
|-
|-
| 56 || HideApplicationLogo
| 0x32
| 010000000000100F
| [17.0.0+] LibraryAppletOfflineWebApp_3 ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX)
|-
|-
| 57 || ForceHideApplicationLogo
| 0x33
| 010000000000100F
| [17.0.0+] LibraryAppletOfflineWebSystem ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX)
|-
|-
| 60 || FloatingApplicationDetected
| 0x35
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
| [17.0.0+] LibraryAppletLhub ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX)
|-
|-
| 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]]
| 0x36
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
| [17.0.0+] LibraryAppletLogin ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX)
|-
|-
| 92 || [[#SetAlbumImageTakenNotificationEnabled|AlbumScreenShotTaken]]
| 0x37
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
| [17.0.0+] LibraryAppletShare ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX)
|-
|-
| 93 || AlbumRecordingSaved
| 0x38
|}
| 0100000000001043
 
| [16.0.0-16.1.0]
= OperationMode =
This is "nn::oe::OperationMode".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x50
! Description
| 0100000000001007
| [18.0.0+]
|-
|-
| 0 || Handheld
| 0x51
| 0100000000001007
| [18.0.0+]
|-
|-
| 1 || Console
| 0x64
|}
| 0100000000001048
 
| [20.0.0+] [[Splay_Applet|splay]]
= PerformanceMode =
This is "nn::oe::PerformanceMode".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x3E8
! Description
|
| [10.0.0-16.1.0] DevlopmentTool
|-
|-
| -1 || Invalid
| 0x3F1
| 010000000000D619
| [10.0.0-16.1.0] CombinationLA
|-
|-
| 0 || Normal
| 0x3F2
| 010000000000D610
| [10.0.0-16.1.0] AeSystemApplet
|-
|-
| 1 || Boost
| 0x3F3
|}
| 010000000000D611
 
| [10.0.0-16.1.0] AeOverlayApplet
= FocusState =
This is "nn::oe::FocusState".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x3F4
! Description
| 010000000000D612
| [10.0.0-16.1.0] AeStarter
|-
|-
| 1 || InFocus
| 0x3F5
| 010000000000D613
| [10.0.0-16.1.0] AeLibraryAppletAlone
|-
|-
| 2 || OutOfFocus
| 0x3F6
| 010000000000D614
| [10.0.0-16.1.0] AeLibraryApplet1
|-
|-
| 3 || Background
| 0x3F7
|}
| 010000000000D615
 
| [10.0.0-16.1.0] AeLibraryApplet2
= CpuBoostMode =
This is "nn::oe::CpuBoostMode".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x3F8
! Description
| 010000000000D616
| [10.0.0-16.1.0] AeLibraryApplet3
|-
|-
| 0 || Normal
| 0x3F9
| 010000000000D617
| [10.0.0-16.1.0] AeLibraryApplet4
|-
|-
| 1 || FastLoad
| 0x3FA
|}
| 010000000000D60A
 
| [10.0.0-16.1.0] AppletISA
= WindowOriginMode =
This is "nn::oe::WindowOriginMode".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x3FB
! Description
| 010000000000D60B
| [10.0.0-16.1.0] AppletIOA
|-
|-
| 0 || LowerLeft
| 0x3FC
| 010000000000D60C
| [10.0.0-16.1.0] AppletISTA
|-
|-
| 1 || UpperLeft
| 0x3FD
|}
| 010000000000D60D
 
| [10.0.0-16.1.0] AppletILA1
= WirelessPriorityMode =
This is "nn::oe::WirelessPriorityMode".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x3FE
! Description
| 010000000000D60E
| [10.0.0-16.1.0] AppletILA2
|-
|-
| 0 || Default
| 0x700000C8
| 010000000000D65B
| [18.0.0+]
|-
|-
| 1 || OptimizedForWlan
| 0x700000C9
|}
| 010000000000D65C
 
| [18.0.0+]  
= TvPowerStateMatchingMode =
This is "nn::oe::TvPowerStateMatchingMode". This is used with [[#SetTvPowerStateMatchingMode]].
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x700000DC
! Description
| 010000000000D619
| [17.0.0+] CombinationLA
|-
|-
| 0 || Unknown
| 0x700000E6
| 010000000000D610
| [17.0.0+] AeSystemApplet
|-
|-
| 1 || Unknown
| 0x700000E7
|}
| 010000000000D611
 
| [17.0.0+] AeOverlayApplet
= SystemButtonType =
This is "nn::am::service::SystemButtonType". This is used with [[#PerformSystemButtonPressingIfInFocus]]/[[#PerformSystemButtonPressing]].
 
{| class="wikitable" border="1"
|-
|-
! Value
| 0x700000E8
! Description
| 010000000000D612
| [17.0.0+] AeStarter
|-
|-
| 1 || PerformHomeButtonShortPressing
| 0x700000E9
| 010000000000D613
| [17.0.0+] AeLibraryAppletAlone
|-
|-
| 2 || PerformHomeButtonLongPressing
| 0x700000EA
| 010000000000D614
| [17.0.0+] AeLibraryApplet1
|-
|-
| 3 || Short-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]].
| 0x700000EB
| 010000000000D615
| [17.0.0+] AeLibraryApplet2
|-
|-
| 4 || Long-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]].
| 0x700000EC
| 010000000000D616
| [17.0.0+] AeLibraryApplet3
|-
|-
| 5 || Shutdown the system. Only available with [[#PerformSystemButtonPressing]].
| 0x700000ED
| 010000000000D617
| [17.0.0+] AeLibraryApplet4
|-
|-
| 6 || PerformCaptureButtonShortPressing
| 0x700000F0
| 010000000000D60A
| [17.0.0+] AppletISA
|-
|-
| 7 || PerformCaptureButtonLongPressing
| 0x700000F1
|}
| 010000000000D60B
 
| [17.0.0+] AppletIOA
= LaunchParameterKind =
{| class="wikitable" border="1"
|-
|-
! Value
| 0x700000F2
! Description
| 010000000000D60C
| [17.0.0+] AppletISTA
|-
|-
| 1 || UserChannel. Application-specific LaunchParameter.
| 0x700000F3
| 010000000000D60D
| [17.0.0+] AppletILA1
|-
|-
| 2 || account PreselectedUser
| 0x700000F4
| 010000000000D60E
| [17.0.0+] AppletILA2
|-
|-
| 3 || Unknown if used by anything?
| 0x700000FA
| 010000000000D677
| [20.1.0+]
|}
|}


= LibraryAppletExitReason =
= LibraryAppletMode =
This is "nn::applet::LibraryAppletMode".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 3,629: Line 3,858:
! Description
! Description
|-
|-
| 0 || Normal
| 0x0
| AllForeground
|-
| 0x1
| PartialForeground
|-
|-
| 1 || Canceled
| 0x2
| NoUi
|-
|-
| 2 || Abnormal
| 0x3
| PartialForegroundWithIndirectDisplay (see also [[#GetIndirectLayerConsumerHandle]], only used by swkbd [[Software_Keyboard|InlineKeyboard]])
|-
|-
| 10 || Unexpected
| 0x4
| AllForegroundInitiallyHidden (can be used by [7.0.0+] [[Internet_Browser|WebSession]])
|}
|}


= ProgramSpecifyKind =
= AppletMessage =
This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]].
This is "nn::am::AppletMessage".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 3,646: Line 3,882:
! Description
! Description
|-
|-
| 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.
| 0 || None
|-
| 1 || ChangeIntoForeground
|-
|-
| 1 || [[NCM_services#ApplicationId|ApplicationId]]. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1.
| 2 || ChangeIntoBackground
|-
|-
| 2 || u64 = value 0. "RestartProgram"
| 4 || Exit
|}
 
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 =
This is u32 enum "nn::applet::InputDetectionPolicy".
 
{| class="wikitable" border="1"
|-
|-
! Value
| 6 || ApplicationExited
! Description
|-
|-
| 0 || Unknown
| 7 ||  
|-
|-
| 1 || Unknown
| 15 || [[#FocusState|FocusStateChanged]]
|}
 
= AppletResourceUserId =
This is "nn::applet::AppletResourceUserId". Used by a number of non-AM services.
 
= AppletAttribute =
This is "nn::am::AppletAttribute". This struct is 0x8-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 16 || [[#SetRestartMessageEnabled|Resume]]
|-
|-
| 0x0 || 0x1 || Flag. When non-zero, two state fields are set to 1.
| 20 || DetectShortPressingHomeButton
|-
|-
| 0x1 || 0x7F || Unused
| 21 || DetectLongPressingHomeButton
|}
 
This is used by [[#OpenLibraryAppletProxy]].
 
= AppletProcessLaunchReason =
This is "nn::am::service::AppletProcessLaunchReason". This struct is 0x4-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 22 || DetectShortPressingPowerButton
|-
|-
| 0x0 || 0x1 || Flag. When non-zero, LibraryApplets then use [[#OpenCallingLibraryApplet]].
| 23 || DetectMiddlePressingPowerButton
|-
|-
| 0x1 || 0x2 || Always 0.
| 24 || DetectLongPressingPowerButton
|-
|-
| 0x3 || 0x1 || Always 0.
| 25 || RequestToPrepareSleep
|}
 
= LibraryAppletInfo =
This is "nn::am::service::LibraryAppletInfo". This struct is 0x8-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 26 || FinishedSleepSequence
|-
|-
| 0x0 || 0x4 || [[#AppletId]]
| 27 || SleepRequiredByHighTemperature
|-
|-
| 0x4 || 0x4 || [[#LibraryAppletMode]]
| 28 || SleepRequiredByLowBattery
|}
 
= AppletKind =
This is "nn::am::service::AppletKind". This is 8-bytes.
 
= AppletIdentityInfo =
This struct is "nn::am::service::AppletIdentityInfo". This struct is 0x10-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 29 || AutoPowerDown
|-
|-
| 0x0 || 0x4 || [[#AppletId]]
| 30 || [[#OperationMode|OperationModeChanged]]
|-
|-
| 0x4 || 0x4 || Padding
| 31 || [[#PerformanceMode|PerformanceModeChanged]]
|-
|-
| 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
| 32 || DetectReceivingCecSystemStandby
|}
 
= ApplicationAttributeForQuest =
This struct is "nn::applet::ApplicationAttributeForQuest".
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 33 || SdCardRemoved
|-
|-
| 0x0 || 0x4 || See [[#ApplicationAttribute]].
| 34 ||  
|-
|-
| 0x4 || 0x4 || See [[#ApplicationAttribute]].
| 50 || LaunchApplicationRequested
|-
|-
| 0x8 || 0x4 || [7.0.0+] See [[#ApplicationAttribute]].
| 51 || [[#SetHandlesRequestToDisplay|RequestToDisplay]]
|}
 
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 =
This struct is "nn::am::ApplicationAttribute". This struct is 0x20-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
| 55 || ShowApplicationLogo
|-
|-
| 0x0 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds.
| 56 || HideApplicationLogo
|-
| 57 || ForceHideApplicationLogo
|-
| 58 ||
|-
| 59 ||
|-
| 60 || FloatingApplicationDetected
|-
| 61 || [7.0.0+] PerformanceConfigurationChanged
|-
| 70 ||
|-
| 71 ||
|-
| 72 ||
|-
| 73 ||
|-
| 75 ||
|-
| 80 ||
|-
| 81 ||
|-
| 82 ||
|-
| 83 ||
|-
| 85 ||
|-
| 86 ||
|-
| 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]]
|-
| 92 || [[#SetAlbumImageTakenNotificationEnabled|AlbumScreenShotTaken]]
|-
| 93 || AlbumRecordingSaved
|-
| 94 ||
|-
| 100 ||
|-
| 101 ||
|-
|-
| 0x4 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds.
| 110 || [14.0.0+] DetectShortPressingCaptureButtonForApplet
|-
|-
| 0x8 || 0x4 || float audio volume. Must be in the range of 0.0f-1.0f. The default is 1.0f.
| 111 || [14.0.0+] DetectLongPressingCaptureButtonForApplet
|-
|-
| 0xC || 0x14 || Unused. Default is 0.
| 1000 ||  
|}
|}


Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd.
= OperationMode =
 
This is "nn::oe::OperationMode".
= ApplicationLaunchProperty =
This struct is 0x10-bytes.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
! Value
! Description
|-
| 0 || Handheld
|-
| 1 || Console
|}
 
= PerformanceMode =
This is "nn::oe::PerformanceMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| -1 || Invalid
|-
| 0 || Normal
|-
| 1 || Boost
|}
 
= FocusState =
This is "nn::oe::FocusState".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 1 || InFocus
|-
| 2 || OutOfFocus
|-
| 3 || Background
|}
 
= CpuBoostMode =
This is "nn::oe::CpuBoostMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Normal
|-
| 1 || FastLoad
|}
 
= WindowOriginMode =
This is "nn::oe::WindowOriginMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || LowerLeft
|-
| 1 || UpperLeft
|}
 
= WirelessPriorityMode =
This is "nn::oe::WirelessPriorityMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Default
|-
| 1 || OptimizedForWlan
|}
 
= TvPowerStateMatchingMode =
This is "nn::oe::TvPowerStateMatchingMode". This is used with [[#SetTvPowerStateMatchingMode]].
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Unknown
|-
| 1 || Unknown
|}
 
= SystemButtonType =
This is "nn::am::service::SystemButtonType". This is used with [[#PerformSystemButtonPressingIfInFocus]]/[[#PerformSystemButtonPressing]].
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 1 || PerformHomeButtonShortPressing
|-
| 2 || PerformHomeButtonLongPressing
|-
| 3 || Short-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]].
|-
| 4 || Long-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]].
|-
| 5 || Shutdown the system. Only available with [[#PerformSystemButtonPressing]].
|-
| 6 || PerformCaptureButtonShortPressing
|-
| 7 || PerformCaptureButtonLongPressing
|}
 
= LaunchParameterKind =
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 1 || UserChannel. Application-specific LaunchParameter.
|-
| 2 || account PreselectedUser
|-
| 3 || Unknown if used by anything?
|}
 
= LibraryAppletExitReason =
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Normal
|-
| 1 || Canceled
|-
| 2 || Abnormal
|-
| 10 || Unexpected
|}
 
= ProgramSpecifyKind =
This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]].
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 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 || [[NCM_services#ApplicationId|ApplicationId]]. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1.
|-
| 2 || u64 = value 0. "RestartProgram"
|}
 
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 =
This is u32 enum "nn::applet::InputDetectionPolicy".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Unknown
|-
| 1 || Unknown
|}
 
= AppletResourceUserId =
This is "nn::applet::AppletResourceUserId". Used by a number of non-AM services.
 
= AppletAttribute =
This is "nn::am::AppletAttribute". This struct is 0x80 bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x1 || Flag. When non-zero, two state fields are set to 1.
|-
| 0x1 || 0x7F || Unused
|}
 
This is used by [[#OpenLibraryAppletProxy]].
 
= AppletProcessLaunchReason =
This is "nn::am::service::AppletProcessLaunchReason". This struct is 0x4-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x1 || Flag. When non-zero, LibraryApplets then use [[#OpenCallingLibraryApplet]].
|-
| 0x1 || 0x2 || Always 0.
|-
| 0x3 || 0x1 || Always 0.
|}
 
= LibraryAppletInfo =
This is "nn::am::service::LibraryAppletInfo". This struct is 0x8-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#AppletId]]
|-
| 0x4 || 0x4 || [[#LibraryAppletMode]]
|}
 
= AppletKind =
This is "nn::am::service::AppletKind". This is 8-bytes.
 
= AppletIdentityInfo =
This struct is "nn::am::service::AppletIdentityInfo". This struct is 0x10-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#AppletId]]
|-
| 0x4 || 0x4 || Padding
|-
| 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
|}
 
= ApplicationAttributeForQuest =
This struct is "nn::applet::ApplicationAttributeForQuest".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || See [[#ApplicationAttribute]].
|-
| 0x4 || 0x4 || See [[#ApplicationAttribute]].
|-
| 0x8 || 0x4 || [7.0.0+] See [[#ApplicationAttribute]].
|}
 
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 =
This struct is "nn::am::ApplicationAttribute". This struct is 0x20-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds.
|-
| 0x4 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds.
|-
| 0x8 || 0x4 || float audio volume. Must be in the range of 0.0f-1.0f. The default is 1.0f.
|-
| 0xC || 0x14 || Unused. Default is 0.
|}
 
Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd.
 
= ApplicationLaunchProperty =
This struct is 0x10-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
|-
|-
| 0x8 || 0x4 || Application title-version.
| 0x8 || 0x4 || Application title-version.
|-
| 0xC || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application base title.
|-
| 0xD || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application update title.
|-
| 0xE || 0x1 || Unknown.
|-
| 0xF || 0x1 || Padding.
|}
 
= ApplicationLaunchRequestInfo =
This is "nn::applet::ApplicationLaunchRequestInfo". This struct is 0x10-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]].
|-
| 0x4 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]].
|-
| 0x8 || 0x8 || Unknown. The default is 0x0.
|}
 
= AppletResourceUsageInfo =
This is "nn::am::service::AppletResourceUsageInfo". This struct is 0x20-bytes.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Unknown counter.
|-
| 0x4 || 0x4 || Unknown counter.
|-
| 0x8 || 0x4 || Output from [[NS_Services|NS GetRightsEnvironmentCountForDebug]].
|-
| 0xC || 0x14 || Always zero.
|}
 
= ApplicationLicenseType =
This is "nn::oe::ApplicationLicenseType". This is 1-byte.
 
= LaunchRequiredVersion =
This is "nn::oe::LaunchRequiredVersion". This is a 0x40-byte struct with 1-byte alignment.
 
= ServerEnvironmentType =
This is "nn::oe::ServerEnvironmentType".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || dd
|-
|-
| 0xC || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application base title.
| 1 || lp
|-
|-
| 0xD || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application update title.
| 2 || sd
|-
|-
| 0xE || 0x1 || Unknown.
| 3 || sp
|-
|-
| 0xF || 0x1 || Padding.
| 4 || dp
|}
|}
= ApplicationLaunchRequestInfo =
This is "nn::applet::ApplicationLaunchRequestInfo". This struct is 0x10-bytes.
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]].
|-
| 0x4 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]].
|-
| 0x8 || 0x8 || Unknown. The default is 0x0.
|}
= AppletResourceUsageInfo =
This is "nn::am::service::AppletResourceUsageInfo". This struct is 0x20-bytes.
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Unknown counter.
|-
| 0x4 || 0x4 || Unknown counter.
|-
| 0x8 || 0x4 || Output from [[NS_Services|NS GetRightsEnvironmentCountForDebug]].
|-
| 0xC || 0x14 || Always zero.
|}
= ApplicationLicenseType =
This is "nn::oe::ApplicationLicenseType". This is 1-byte.
= LaunchRequiredVersion =
This is "nn::oe::LaunchRequiredVersion". This is a 0x40-byte struct with 1-byte alignment.


= Notes =
= Notes =