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. | ||
== | == ISystemProcessCommonFunctions == | ||
This is "nn::am::service:: | 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. | ||
= | = (Switch 2) INxCompatApplicationFunctions = | ||
This is "nn:: | This is "nn::am::service::INxCompatApplicationFunctions". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name || Notes | ||
|- | |- | ||
| | | 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. | |||
|- | |- | ||
| | | 2030 || GetVsyncEvent? || Takes no args. Returns a event handle. | ||
|- | |- | ||
| | | 2040 || GetVsyncTimestamp? || When above event triggers, this returns a timestamp. | ||
|- | |- | ||
| | | 2050 || || | ||
|- | |- | ||
| | | 2060 || || | ||
|- | |- | ||
| | | 2070 || CreateMovieMaker || Same args as [[#CreateMovieMaker]]. Returns an [[#IMovieMaker]]. | ||
|} | |} | ||
== | == (Switch 2) TipcCompatInterface == | ||
= | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd (adjusted - 16) || Name || Notes | ||
|- | |- | ||
| | | 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; }. | ||
|- | |- | ||
| | | 11 || InitializeB || Sends current process handle. No args. Sent directly after cmd4. | ||
|- | |- | ||
| | | 101 || InitializeC || Sent directly after cmd11. | ||
|- | |- | ||
| | | 111 || || | ||
|- | |- | ||
| | | 112 || || | ||
|- | |- | ||
| | | 114 || || | ||
|- | |- | ||
| | | 115 || || | ||
|- | |- | ||
| | | 187 || || | ||
|- | |- | ||
| | | 201 || || | ||
|- | |- | ||
| | | 301 || || | ||
|- | |- | ||
| | | 327 || || | ||
|- | |- | ||
| | | 303 || || | ||
|- | |- | ||
| | | 311 || || | ||
|- | |- | ||
| | | 312 || || | ||
|- | |- | ||
| | | 314 || || | ||
|- | |- | ||
| | | 315 || || | ||
|- | |||
| 321 || || | |||
|- | |||
| 391 || || | |||
|- | |||
| 401 || || | |||
|- | |- | ||
| | | 402 || || | ||
|- | |- | ||
| | | 423 || || | ||
|- | |- | ||
| | | 434 || || | ||
|- | |- | ||
| | | 497 || || | ||
|- | |- | ||
| | | 901 || || | ||
|- | |- | ||
| | | 902 || || | ||
|- | |- | ||
| | | 903 || || | ||
|- | |- | ||
| | | 905 || || | ||
|- | |- | ||
| | | 911 || || | ||
|- | |- | ||
| | | 912 || || | ||
|- | |- | ||
| | | 922 || || | ||
|- | |- | ||
| | | 961 || || | ||
|- | |- | ||
| | | 991 || || | ||
| | |||
|- | |- | ||
| 1001 || || | |||
|- | |- | ||
| | | 1002 || || | ||
|- | |- | ||
| | | 1003 || || | ||
|- | |- | ||
| | | 1101 || || | ||
|- | |- | ||
| | | 1102 || || | ||
|- | |- | ||
| | | 1401 || InitializeNvdrv2WithTransferMemory || Takes a TransferMemory handle, and u64 size. Returns an [[#INvDrv2User]]. | ||
|- | |- | ||
| | | 1402 || InitializeNvdrv2 || Returns an [[#INvDrv2User]]. | ||
|} | |- | ||
| 1501 || || | |||
|- | |||
| 1502 || || | |||
|- | |||
| 1601 || || | |||
|- | |||
| 1602 || || | |||
|- | |||
| 1603 || || | |||
|- | |||
| 1611 || || | |||
|- | |||
| 1612 || || | |||
|- | |||
| 1691 || || | |||
|} | |||
= | == (Switch 2) INvDrv2User == | ||
This is "nn:: | This is "nn::nvdrv::INvDrv2User". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,042: | Line 3,246: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || Open | ||
|- | |- | ||
| 1 || | | 1 || Ioctl | ||
|- | |- | ||
| 2 || | | 2 || Close | ||
|- | |- | ||
| | | 4 || QueryEvent | ||
|- | |- | ||
| | | 9 || DumpStatus | ||
|- | |- | ||
| | | 10 || InitializeDevtools | ||
|- | |- | ||
| | | 11 || Ioctl2 | ||
|- | |- | ||
| | | 12 || Ioctl3 | ||
|- | |- | ||
| | | 13 || SetGraphicsFirmwareMemoryMarginEnabled | ||
|} | |} | ||
= idle:sys = | |||
This is "nn::idle::detail::IPolicyManagerSystem" | |||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
This was | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,078: | Line 3,274: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || GetAutoPowerDownEvent | ||
|- | |- | ||
| 1 || | | 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 | |||
|} | |} | ||
= | == SetHandlingContext == | ||
This is "nn:: | [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 | This was moved to [[OMM_services|omm]] with [14.0.0+]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! 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 | |||
|- | |- | ||
| 0 || | | 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 | ||
This is "nn:: | |- | ||
| 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" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || Start | ||
| | |||
| | |||
|- | |- | ||
| | | 1 || Finish | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || GetUpdateDeviceStatus | ||
| | |||
| | |||
|- | |- | ||
| | | 3 || GetUpdateProgress | ||
| | |||
| | |||
|- | |- | ||
| | | 4 || GetUpdateDeviceStatusChangeEvent | ||
| | |||
| | |||
|- | |- | ||
| | | 5 || GetUpdateProgress2 | ||
| | |} | ||
= spsm = | |||
This is "nn::spsm::detail::IPowerStateInterface". | |||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 0 || GetCurrentState | ||
| | |||
| | |||
|- | |- | ||
| | | 1 || EnterSleep | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || GetLastWakeReason | ||
| | |||
| | |||
|- | |- | ||
| | | 3 || Shutdown | ||
| | |||
| | |||
|- | |- | ||
| | | 4 || GetNotificationMessageEventHandle | ||
| | |||
| | |||
|- | |- | ||
| | | 5 || ReceiveNotificationMessage | ||
| | |||
| | |||
|- | |- | ||
| | | 6 || AnalyzeLogForLastSleepWakeSequence | ||
| | |||
| | |||
|- | |- | ||
| | | 7 || ResetEventLog | ||
| | |||
| | |||
|- | |- | ||
| | | 8 || AnalyzePerformanceLogForLastSleepWakeSequence | ||
| | |||
| | |||
|- | |- | ||
| | | 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. | |||
= tcap = | |||
This is "nn::tcap::server::IManager". | |||
This was removed with [11.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 0 || GetContinuousHighSkinTemperatureEvent | ||
| | |||
| | |||
|- | |- | ||
| | | 1 || SetOperationMode | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || LoadAndApplySettings | ||
| | |} | ||
| | |||
= 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" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 32 || [7.0.0+] [[#SetShimLibraryVersion]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 201 || [[#SaveScreenShot]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 203 || [[#SaveScreenShotEx0]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 205 || [8.0.0+] [[#SaveScreenShotEx1]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 210 || [[#SaveScreenShotEx2]] | ||
| | |} | ||
| [ | |||
== 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" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 0 || [[#OpenSession]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 1 || GetPerformanceMode | ||
| | |||
| | |||
|- | |- | ||
| | | 6 || [7.0.0+] [[#IsCpuOverclockEnabled]] | ||
| | |} | ||
| [ | |||
| | == 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 | ||
| | |||
|- | |- | ||
| | | 0 || SetPerformanceConfiguration | ||
| | |||
| | |||
|- | |- | ||
| | | 1 || GetPerformanceConfiguration | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || [8.0.0+] SetCpuOverclockEnabled | ||
| | |} | ||
| [ | |||
= 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 | ||
| | |||
| | |||
|- | |- | ||
| | | 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 [[SVC#svcGetSystemTick|svcGetSystemTick]]) | ||
| | |||
| [ | |||
|- | |- | ||
|} | |} | ||
= | = AppletId = | ||
This is "nn::applet:: | This is "nn::applet::AppletId". See also [[:Category:Library Applets]]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Value | ! Value | ||
! ProgramId | |||
! Description | ! Description | ||
|- | |- | ||
| | | 0x00 | ||
| | | | ||
| None | |||
|- | |- | ||
| | | 0x01 | ||
| | | | ||
| Application (not valid for use with LibraryApplets) | |||
|- | |- | ||
| | | 0x02 | ||
| | | 010000000000100C | ||
| OverlayApplet (overlayDisp) | |||
|- | |- | ||
| | | 0x03 | ||
| | | 0100000000001000 | ||
| SystemAppletMenu (qlaunch) | |||
|- | |- | ||
| | | 0x04 | ||
| | | 0100000000001012 | ||
| SystemApplication (starter) | |||
|- | |- | ||
| 0x0A | |||
| 0100000000001001 | |||
| [[Auth_Applet|LibraryAppletAuth (auth)]] | |||
|- | |- | ||
| | | 0x0B | ||
| 0100000000001002 | |||
| [[Cabinet_Applet|LibraryAppletCabinet (cabinet)]] | |||
|- | |- | ||
| | | 0x0C | ||
| 0100000000001003 | |||
| [[Controller_Applet|LibraryAppletController (controller)]] | |||
|- | |- | ||
| | | 0x0D | ||
| 0100000000001004 | |||
| LibraryAppletDataErase (dataErase) | |||
|- | |- | ||
| | | 0x0E | ||
| 0100000000001005 | |||
| [[Error_Applet|LibraryAppletError (error)]] | |||
|- | |- | ||
| | | 0x0F | ||
| 0100000000001006 | |||
| LibraryAppletNetConnect (netConnect) | |||
|- | |- | ||
| | | 0x10 | ||
| 0100000000001007 | |||
| [[Profile_Selector|LibraryAppletPlayerSelect (playerSelect)]] | |||
|- | |- | ||
| | | 0x11 | ||
| 0100000000001008 | |||
| [[Software_Keyboard|LibraryAppletSwkbd (swkbd)]] | |||
|- | |- | ||
| | | 0x12 | ||
| 0100000000001009 | |||
| [[MiiEdit_Applet|LibraryAppletMiiEdit (miiEdit)]] | |||
|- | |- | ||
| | | 0x13 | ||
| 010000000000100A | |||
| [[Internet_Browser#010000000000100A|LibraryAppletWeb (web)]] | |||
|- | |- | ||
| | | 0x14 | ||
| 010000000000100B | |||
| [[Internet_Browser#ShopN|LibraryAppletShop (shop)]] | |||
|- | |- | ||
| | | 0x15 | ||
| 010000000000100D | |||
| [[Album_Applet|LibraryAppletPhotoViewer (photoViewer)]] | |||
|- | |- | ||
| | | 0x16 | ||
| 010000000000100E | |||
| LibraryAppletSet (set) | |||
|- | |- | ||
| | | 0x17 | ||
| 010000000000100F | |||
| [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] (LibraryAppletOfflineWebApp_0 in Ounce) | |||
|- | |- | ||
| | | 0x18 | ||
| 0100000000001010 | |||
| [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] | |||
|- | |- | ||
| | | 0x19 | ||
| 0100000000001011 | |||
| [[Internet_Browser#WifiWebAuthApplet|LibraryAppletWifiWebAuth (wifiWebAuth)]] | |||
|- | |- | ||
| | | 0x1A | ||
| 0100000000001013 | |||
| [[MyPage_Applet|LibraryAppletMyPage (myPage)]] | |||
|- | |- | ||
| | | 0x1B | ||
| 010000000000101A | |||
| LibraryAppletGift (gift) | |||
|- | |- | ||
| | | 0x1C | ||
| 010000000000101C | |||
| LibraryAppletUserMigration (userMigration) | |||
|- | |- | ||
| | | 0x1D | ||
| 010000000000101D | |||
| [9.0.0+] LibraryAppletPreomiaSys (EncounterSys) | |||
|- | |- | ||
| | | 0x1E | ||
| 0100000000001020 | |||
| [9.0.0+] LibraryAppletStory (story) | |||
|- | |- | ||
| | | 0x1F | ||
| 010070000E3C0000 | |||
| [9.0.0+] LibraryAppletPreomiaUsr (EncounterUsr) | |||
|- | |- | ||
| | | 0x20 | ||
| 010086000E49C000 | |||
| [9.0.0+] LibraryAppletPreomiaUsrDummy (EncounterUsrDummy) | |||
|- | |- | ||
| | | 0x21 | ||
| 0100000000001038 | |||
| [10.0.0+] LibraryAppletSample (sample) | |||
|- | |- | ||
| | | 0x22 | ||
| 0100000000001007 | |||
| [13.0.0+] LibraryAppletPromoteQualification (playerSelect) | |||
|- | |- | ||
| | | 0x32 | ||
| 010000000000100F | |||
| [17.0.0+] LibraryAppletOfflineWebApp_3 ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | |||
|- | |- | ||
| | | 0x33 | ||
| 010000000000100F | |||
| [17.0.0+] LibraryAppletOfflineWebSystem ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | |||
|- | |- | ||
| | | 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) | |||
|- | |- | ||
| | | 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) | |||
|- | |- | ||
| | | 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) | |||
|- | |- | ||
| | | 0x38 | ||
| | | 0100000000001043 | ||
| [16.0.0-16.1.0] | |||
|- | |- | ||
| 0x50 | |||
| 0100000000001007 | |||
| [18.0.0+] | |||
|- | |- | ||
| | | 0x51 | ||
| 0100000000001007 | |||
| [18.0.0+] | |||
|- | |- | ||
| | | 0x64 | ||
| | | 0100000000001048 | ||
| [20.0.0+] [[Splay_Applet|splay]] | |||
|- | |- | ||
| 0x3E8 | |||
| | |||
| [10.0.0-16.1.0] DevlopmentTool | |||
|- | |- | ||
| -1 | | 0x3F1 | ||
| 010000000000D619 | |||
| [10.0.0-16.1.0] CombinationLA | |||
|- | |- | ||
| | | 0x3F2 | ||
| 010000000000D610 | |||
| [10.0.0-16.1.0] AeSystemApplet | |||
|- | |- | ||
| | | 0x3F3 | ||
| | | 010000000000D611 | ||
| [10.0.0-16.1.0] AeOverlayApplet | |||
|- | |- | ||
| 0x3F4 | |||
| 010000000000D612 | |||
| [10.0.0-16.1.0] AeStarter | |||
|- | |- | ||
| | | 0x3F5 | ||
| 010000000000D613 | |||
| [10.0.0-16.1.0] AeLibraryAppletAlone | |||
|- | |- | ||
| | | 0x3F6 | ||
| 010000000000D614 | |||
| [10.0.0-16.1.0] AeLibraryApplet1 | |||
|- | |- | ||
| | | 0x3F7 | ||
| | | 010000000000D615 | ||
| [10.0.0-16.1.0] AeLibraryApplet2 | |||
|- | |- | ||
| 0x3F8 | |||
| 010000000000D616 | |||
| [10.0.0-16.1.0] AeLibraryApplet3 | |||
|- | |- | ||
| | | 0x3F9 | ||
| 010000000000D617 | |||
| [10.0.0-16.1.0] AeLibraryApplet4 | |||
|- | |- | ||
| | | 0x3FA | ||
| | | 010000000000D60A | ||
| [10.0.0-16.1.0] AppletISA | |||
|- | |- | ||
| 0x3FB | |||
| 010000000000D60B | |||
| [10.0.0-16.1.0] AppletIOA | |||
|- | |- | ||
| | | 0x3FC | ||
| 010000000000D60C | |||
| [10.0.0-16.1.0] AppletISTA | |||
|- | |- | ||
| | | 0x3FD | ||
| | | 010000000000D60D | ||
| [10.0.0-16.1.0] AppletILA1 | |||
|- | |- | ||
| 0x3FE | |||
| 010000000000D60E | |||
| [10.0.0-16.1.0] AppletILA2 | |||
|- | |- | ||
| | | 0x700000C8 | ||
| 010000000000D65B | |||
| [18.0.0+] | |||
|- | |- | ||
| | | 0x700000C9 | ||
| | | 010000000000D65C | ||
| [18.0.0+] | |||
|- | |- | ||
| 0x700000DC | |||
| 010000000000D619 | |||
| [17.0.0+] CombinationLA | |||
|- | |- | ||
| | | 0x700000E6 | ||
| 010000000000D610 | |||
| [17.0.0+] AeSystemApplet | |||
|- | |- | ||
| | | 0x700000E7 | ||
| | | 010000000000D611 | ||
| [17.0.0+] AeOverlayApplet | |||
|- | |- | ||
| 0x700000E8 | |||
| 010000000000D612 | |||
| [17.0.0+] AeStarter | |||
|- | |- | ||
| | | 0x700000E9 | ||
| 010000000000D613 | |||
| [17.0.0+] AeLibraryAppletAlone | |||
|- | |- | ||
| | | 0x700000EA | ||
| 010000000000D614 | |||
| [17.0.0+] AeLibraryApplet1 | |||
|- | |- | ||
| | | 0x700000EB | ||
| 010000000000D615 | |||
| [17.0.0+] AeLibraryApplet2 | |||
|- | |- | ||
| | | 0x700000EC | ||
| 010000000000D616 | |||
| [17.0.0+] AeLibraryApplet3 | |||
|- | |- | ||
| | | 0x700000ED | ||
| 010000000000D617 | |||
| [17.0.0+] AeLibraryApplet4 | |||
|- | |- | ||
| | | 0x700000F0 | ||
| 010000000000D60A | |||
| [17.0.0+] AppletISA | |||
|- | |- | ||
| | | 0x700000F1 | ||
| | | 010000000000D60B | ||
| [17.0.0+] AppletIOA | |||
|- | |- | ||
| 0x700000F2 | |||
| 010000000000D60C | |||
| [17.0.0+] AppletISTA | |||
|- | |- | ||
| | | 0x700000F3 | ||
| 010000000000D60D | |||
| [17.0.0+] AppletILA1 | |||
|- | |- | ||
| | | 0x700000F4 | ||
| 010000000000D60E | |||
| [17.0.0+] AppletILA2 | |||
|- | |- | ||
| | | 0x700000FA | ||
| 010000000000D677 | |||
| [20.1.0+] | |||
|} | |} | ||
= | = LibraryAppletMode = | ||
This is "nn::applet::LibraryAppletMode". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,629: | Line 3,858: | ||
! Description | ! Description | ||
|- | |- | ||
| | | 0x0 | ||
| AllForeground | |||
|- | |||
| 0x1 | |||
| PartialForeground | |||
|- | |- | ||
| | | 0x2 | ||
| NoUi | |||
|- | |- | ||
| | | 0x3 | ||
| PartialForegroundWithIndirectDisplay (see also [[#GetIndirectLayerConsumerHandle]], only used by swkbd [[Software_Keyboard|InlineKeyboard]]) | |||
|- | |- | ||
| | | 0x4 | ||
| AllForegroundInitiallyHidden (can be used by [7.0.0+] [[Internet_Browser|WebSession]]) | |||
|} | |} | ||
= | = AppletMessage = | ||
This is "nn::am:: | This is "nn::am::AppletMessage". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,646: | Line 3,882: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || | | 0 || None | ||
|- | |||
| 1 || ChangeIntoForeground | |||
|- | |- | ||
| | | 2 || ChangeIntoBackground | ||
|- | |- | ||
| | | 4 || Exit | ||
|- | |- | ||
| 6 || ApplicationExited | |||
|- | |- | ||
| | | 7 || | ||
|- | |- | ||
| | | 15 || [[#FocusState|FocusStateChanged]] | ||
| | |||
|- | |- | ||
| 16 || [[#SetRestartMessageEnabled|Resume]] | |||
|- | |- | ||
| | | 20 || DetectShortPressingHomeButton | ||
|- | |- | ||
| | | 21 || DetectLongPressingHomeButton | ||
|- | |- | ||
| 22 || DetectShortPressingPowerButton | |||
|- | |- | ||
| | | 23 || DetectMiddlePressingPowerButton | ||
|- | |- | ||
| | | 24 || DetectLongPressingPowerButton | ||
|- | |- | ||
| | | 25 || RequestToPrepareSleep | ||
|- | |- | ||
| 26 || FinishedSleepSequence | |||
|- | |- | ||
| | | 27 || SleepRequiredByHighTemperature | ||
|- | |- | ||
| | | 28 || SleepRequiredByLowBattery | ||
|- | |- | ||
| 29 || AutoPowerDown | |||
|- | |- | ||
| | | 30 || [[#OperationMode|OperationModeChanged]] | ||
|- | |- | ||
| | | 31 || [[#PerformanceMode|PerformanceModeChanged]] | ||
|- | |- | ||
| | | 32 || DetectReceivingCecSystemStandby | ||
|- | |- | ||
| 33 || SdCardRemoved | |||
|- | |- | ||
| | | 34 || | ||
|- | |- | ||
| | | 50 || LaunchApplicationRequested | ||
|- | |- | ||
| | | 51 || [[#SetHandlesRequestToDisplay|RequestToDisplay]] | ||
| | |||
|- | |- | ||
| 55 || ShowApplicationLogo | |||
|- | |- | ||
| | | 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 || | |||
|- | |- | ||
| | | 110 || [14.0.0+] DetectShortPressingCaptureButtonForApplet | ||
|- | |- | ||
| | | 111 || [14.0.0+] DetectLongPressingCaptureButtonForApplet | ||
|- | |- | ||
| | | 1000 || | ||
|} | |} | ||
= OperationMode = | |||
This is "nn::oe::OperationMode". | |||
= | |||
This | |||
{| 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 | |||
|- | |- | ||
| | | 1 || lp | ||
|- | |- | ||
| | | 2 || sd | ||
|- | |- | ||
| | | 3 || sp | ||
|- | |- | ||
| | | 4 || dp | ||
|} | |} | ||
= Notes = | = Notes = |