Applet Manager services: Difference between revisions
No edit summary |
|||
(78 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 65: | Line 74: | ||
== ISystemAppletProxy == | == ISystemAppletProxy == | ||
This is "nn::am::service::ISystemAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 95: | Line 106: | ||
=== IHomeMenuFunctions === | === IHomeMenuFunctions === | ||
This is "nn::am::service::IHomeMenuFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 114: | Line 127: | ||
|- | |- | ||
| 40 || [11.0.0+] [[#IsSleepEnabled]] | | 40 || [11.0.0+] [[#IsSleepEnabled]] | ||
|- | |||
| 41 || [12.0.0+] [[#IsRebootEnabled]] | |||
|- | |||
| 50 || [16.0.0+] [[#LaunchSystemApplet]] | |||
|- | |||
| 51 || [16.0.0+] [[#LaunchStarter]] | |||
|- | |||
| 60 || [19.0.0+] | |||
|- | |||
| 61 || [19.0.0+] | |||
|- | |- | ||
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] | | 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] | ||
Line 151: | Line 174: | ||
==== IsSleepEnabled ==== | ==== IsSleepEnabled ==== | ||
No input, returns an output bool. | No input, returns an output bool. | ||
==== IsRebootEnabled ==== | |||
No input, returns an output bool. | |||
==== LaunchSystemApplet ==== | |||
No input/output. | |||
This wraps [[NS_Services|ns]] LaunchSystemApplet, ignoring the u64 returned by that cmd (and other functionality). | |||
==== LaunchStarter ==== | |||
No input/output. | |||
This is similar to [[#LaunchSystemApplet]], except this uses [[NS_Services|ns]] LaunchLibraryApplet with a ProgramId from global state. | |||
The global state field is initialized elsewhere with the value of [[System_Settings|system-setting]] <code>am.debug!starter_id</code>, defaulting to ProgramId 0100000000001012 ([[Title_list|starter]]) if not available. | |||
==== PopRequestLaunchApplicationForDebug ==== | ==== PopRequestLaunchApplicationForDebug ==== | ||
Line 167: | Line 205: | ||
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | ||
Uses [[NS_Services | Uses [[NS_Services|ns]] LaunchDevMenu. | ||
This is used by [[qlaunch]]. On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | This is used by [[qlaunch]]. On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | ||
Line 175: | Line 213: | ||
==== ILockAccessor ==== | ==== ILockAccessor ==== | ||
This is "nn::am::service::ILockAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 205: | Line 245: | ||
=== IGlobalStateController === | === IGlobalStateController === | ||
This is "nn::am::service::IGlobalStateController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 0 || [[#RequestToEnterSleep]] | |||
|- | |- | ||
| | | 1 || [[#EnterSleep]] | ||
|- | |- | ||
| | | 2 || [[#StartSleepSequence]] | ||
|- | |- | ||
| | | 3 || [[#StartShutdownSequence]] | ||
|- | |- | ||
| | | 4 || [[#StartRebootSequence]] | ||
|- | |- | ||
| | | 9 || [7.0.0+] [[#IsAutoPowerDownRequested]] | ||
|- | |- | ||
| | | 10 || [[#LoadAndApplyIdlePolicySettings]] | ||
|- | |- | ||
| | | 11 || [2.0.0+] [[#NotifyCecSettingsChanged]] | ||
|- | |- | ||
| | | 12 || [3.0.0+] [[#SetDefaultHomeButtonLongPressTime]] | ||
|- | |- | ||
| | | 13 || [3.0.0+] [[#UpdateDefaultDisplayResolution]] | ||
|- | |- | ||
| | | 14 || [3.0.0+] [[#ShouldSleepOnBoot]] | ||
|- | |- | ||
| | | 15 || [4.0.0+] [[#GetHdcpAuthenticationFailedEvent]] | ||
|- | |- | ||
| | | 30 || [12.0.0+] [[#OpenCradleFirmwareUpdater]] | ||
|} | |} | ||
Line 288: | Line 332: | ||
Uses [[#omm]] cmd GetHdcpAuthenticationFailedEvent. | Uses [[#omm]] cmd GetHdcpAuthenticationFailedEvent. | ||
=== | ==== OpenCradleFirmwareUpdater ==== | ||
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 || | ! Cmd || Name | ||
|- | |||
| 0 || StartUpdate | |||
|- | |||
| 1 || FinishUpdate | |||
|- | |- | ||
| | | 2 || [[#GetCradleDeviceInfo]] | ||
|- | |- | ||
| | | 3 || GetCradleDeviceInfoChangeEvent | ||
|- | |- | ||
| | | 4 || GetUpdateProgressInfo | ||
|- | |- | ||
| | | 5 || GetLastInternalResult | ||
|} | |} | ||
==== GetCradleDeviceInfo ==== | |||
No input, returns a 8-byte CradleDeviceInfo. | |||
[13.0.0+] Now returns a total of 0xC-bytes. | |||
==== PopLaunchRequestedApplication ==== | === IApplicationCreator === | ||
No input, returns an [[#IApplicationAccessor]]. | This is "nn::am::service::IApplicationCreator". | ||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#CreateApplication]] | |||
|- | |||
| 1 || [[#PopLaunchRequestedApplication]] | |||
|- | |||
| 10 || [[#CreateSystemApplication]] | |||
|- | |||
| 100 || [[#PopFloatingApplicationForDevelopment]] | |||
|} | |||
[[#CreateApplication]]/[[#CreateSystemApplication]] eventually call the same internal func. With [[#CreateApplication]], two ptrs passed to the internal func are NULL, while with [[#CreateSystemApplication]] these are loaded from state. The initial content of [[#ApplicationLaunchRequestInfo]] is all-zero with [[#CreateSystemApplication]], while with [[#CreateApplication]] the first two u32s are value 0x3 with the rest all-zero. The [[#AppletId]] is set to 0x01 with [[#CreateApplication]], while with [[#CreateSystemApplication]] it's 0x04. | |||
==== CreateApplication ==== | |||
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an [[#IApplicationAccessor]]. | |||
==== PopLaunchRequestedApplication ==== | |||
No input, returns an [[#IApplicationAccessor]]. | |||
==== CreateSystemApplication ==== | ==== CreateSystemApplication ==== | ||
Line 321: | Line 397: | ||
==== IApplicationAccessor ==== | ==== IApplicationAccessor ==== | ||
This is "nn::am::service::IApplicationAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 376: | Line 454: | ||
|- | |- | ||
| 201 || [10.0.0+] [[#RestartApplicationTimer]] || | | 201 || [10.0.0+] [[#RestartApplicationTimer]] || | ||
|- | |||
| 300 || [20.0.0+] || | |||
|- | |||
| 301 || [20.0.0+] || | |||
|} | |} | ||
Line 463: | Line 545: | ||
===== IAppletAccessor ===== | ===== IAppletAccessor ===== | ||
This is "nn::am::service::IAppletAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 499: | Line 583: | ||
== IAppletCommonFunctions == | == IAppletCommonFunctions == | ||
This is "nn::am::service::IAppletCommonFunctions". | |||
This was added with [7.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 526: | Line 612: | ||
|- | |- | ||
| 60 || [11.0.0+] [[#IsVrModeCurtainRequired]] | | 60 || [11.0.0+] [[#IsVrModeCurtainRequired]] | ||
|- | |||
| 61 || [12.0.0+] IsSleepRequiredByHighTemperature | |||
|- | |||
| 62 || [12.0.0+] IsSleepRequiredByLowBattery | |||
|- | |- | ||
| 70 || [11.0.0+] [[#SetCpuBoostRequestPriority]] | | 70 || [11.0.0+] [[#SetCpuBoostRequestPriority]] | ||
|} | |- | ||
| 80 || [14.0.0+] SetHandlingCaptureButtonShortPressedMessageEnabledForApplet | |||
ReadThemeStorage/WriteThemeStorage: these commands copy data from/to a state buffer and the user specified buffer. The size of the state buffer is 0x400-bytes. The default content of the ThemeStorage prior to using the WriteThemeStorage cmd, is: <code>memset(statebuf, 0xAA, 0x400);</code> | |- | ||
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet | |||
=== ReadThemeStorage === | |- | ||
Takes an input u64 '''offset''' and a type-0x22 output buffer, returns an output u64 '''actual_transfer_size'''. | | 82 || [18.0.0+] SetBlockingCaptureButtonInEntireSystem | ||
|- | |||
| 90 || [15.0.0+] OpenNamedChannelAsParent | |||
|- | |||
| 91 || [15.0.0+] OpenNamedChannelAsChild | |||
|- | |||
| 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+] | |||
|} | |||
ReadThemeStorage/WriteThemeStorage: these commands copy data from/to a state buffer and the user specified buffer. The size of the state buffer is 0x400-bytes. The default content of the ThemeStorage prior to using the WriteThemeStorage cmd, is: <code>memset(statebuf, 0xAA, 0x400);</code> | |||
=== ReadThemeStorage === | |||
Takes an input u64 '''offset''' and a type-0x22 output buffer, returns an output u64 '''actual_transfer_size'''. | |||
=== WriteThemeStorage === | === WriteThemeStorage === | ||
Takes an input u64 '''offset''' and a type-0x21 input buffer, no output. | Takes an input u64 '''offset''' and a type-0x21 input buffer, no output. | ||
Line 574: | Line 704: | ||
== ILibraryAppletProxy == | == ILibraryAppletProxy == | ||
This is "nn::am::service::ILibraryAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 595: | Line 727: | ||
|- | |- | ||
| 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | | 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | ||
|- | |||
| 22 || [15.0.0+] GetHomeMenuFunctions || No input, returns an [[#IHomeMenuFunctions]]. | |||
|- | |||
| 23 || [15.0.0+] GetGlobalStateController || No input, returns an [[#IGlobalStateController]]. | |||
|- | |- | ||
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | | 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | ||
Line 600: | Line 736: | ||
=== ILibraryAppletSelfAccessor === | === ILibraryAppletSelfAccessor === | ||
This is "nn::am::service::ILibraryAppletSelfAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 673: | Line 811: | ||
|- | |- | ||
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | | 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | ||
|- | |||
| 160 || [17.0.0+] [[#GetLibraryAppletInfoEx]] || | |||
|} | |} | ||
Line 805: | 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 == | ||
This is "nn::am::service::IOverlayAppletProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 828: | Line 973: | ||
|- | |- | ||
| 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | | 21 || [7.0.0+] GetAppletCommonFunctions || No input, returns an [[#IAppletCommonFunctions]]. | ||
|- | |||
| 23 || [15.0.0+] GetGlobalStateController || No input, returns an [[#IGlobalStateController]]. | |||
|- | |- | ||
| 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | | 1000 || GetDebugFunctions || Returns an [[#IDebugFunctions]]. | ||
Line 833: | Line 980: | ||
=== IOverlayFunctions === | === IOverlayFunctions === | ||
This is "nn::am::service::IOverlayFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 856: | Line 1,005: | ||
|- | |- | ||
| 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | | 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | ||
|- | |||
| 21 || [14.0.0+] SetHandlingTouchScreenInputEnabled | |||
|- | |- | ||
| 30 || [9.0.0+] [[#SetHealthWarningShowingState]] | | 30 || [9.0.0+] [[#SetHealthWarningShowingState]] | ||
|- | |- | ||
| 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 925: | Line 1,084: | ||
== IApplicationProxy == | == IApplicationProxy == | ||
This is "nn::am::service::IApplicationProxy". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 949: | Line 1,110: | ||
=== IApplicationFunctions === | === IApplicationFunctions === | ||
This is "nn::am::service::IApplicationFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 995: | Line 1,158: | ||
| 33 || [[#EndBlockingHomeButton]] | | 33 || [[#EndBlockingHomeButton]] | ||
|- | |- | ||
| 34 || [10.0.0 | | 34 || [10.0.0-15.0.1] [[#SelectApplicationLicense]] | ||
|- | |- | ||
| 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]] | | 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]] | ||
|- | |||
| 36 || [14.0.0+] GetLimitedApplicationLicense | |||
|- | |||
| 37 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent | |||
|- | |- | ||
| 40 || [[#NotifyRunning]] | | 40 || [[#NotifyRunning]] | ||
Line 1,032: | 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,066: | 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+] | |||
|- | |||
| 330 || [20.2.0+] | |||
|- | |- | ||
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]] | | 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]] | ||
Line 1,225: | Line 1,408: | ||
User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720. | User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720. | ||
After the validation checks pass the input is passed to [[OMM_services|ommdisp]] cmd500. | |||
This is used as an overlay for screenshots. | This is used as an overlay for screenshots. | ||
==== SetApplicationCopyrightImage ==== | ==== SetApplicationCopyrightImage ==== | ||
Takes a type-0x45 input buffer, an s32 '''x''', an s32 '''y''', an s32 '''width''', an s32 '''height''', an s32 | Takes a type-0x45 input buffer, an s32 '''x''', an s32 '''y''', an s32 '''width''', an s32 '''height''', an s32 [[#WindowOriginMode]], and no output. | ||
'''x''' and '''y''' must not have the negative bit set. '''width''' and '''height''' must not be <1. | '''x''' and '''y''' must not have the negative bit set. '''width''' and '''height''' must not be <1. | ||
Line 1,334: | Line 1,517: | ||
==== GetLastApplicationExitReason ==== | ==== GetLastApplicationExitReason ==== | ||
No input, returns an output s32. | No input, returns an output s32. | ||
==== Cmd220 ==== | |||
Takes an input u8, no output. | |||
The input must be <=1. | |||
==== 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. | |||
==== Cmd330 ==== | |||
No input, returns 1-byte of output. | |||
On NX this just writes 0 to output and returns 0. | |||
==== StartContinuousRecordingFlushForDebug ==== | ==== StartContinuousRecordingFlushForDebug ==== | ||
Line 1,348: | Line 1,546: | ||
==== PrepareForJit ==== | ==== PrepareForJit ==== | ||
Takes no input. Launches the [[JIT_services|jit-sysmodule]] if it has not already been launched for the current application, storing a std::shared_ptr<> for jit-sysmodule process tracking object as an IApplicationFunctions member. | Takes no input. Launches the [[JIT_services|jit-sysmodule]] via [[NS_Services|ns]] LaunchLibraryApplet if it has not already been launched for the current application, storing a std::shared_ptr<> for jit-sysmodule process tracking object as an IApplicationFunctions member. | ||
~IApplicationFunctions() includes: | ~IApplicationFunctions() includes: | ||
Line 1,358: | Line 1,556: | ||
Thus the lifetime of the jit sysmodule is tied to the application which uses it, and each application gets its own fresh copy of the jit sysmodule. | Thus the lifetime of the jit sysmodule is tied to the application which uses it, and each application gets its own fresh copy of the jit sysmodule. | ||
AM can also optionally launch jit-sysmodule automatically if the [[NACP]] enables it. | |||
=== IMovieWriter === | |||
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 === | === IMovieMaker === | ||
This is "nn::am::service::IMovieMaker". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,376: | Line 1,593: | ||
== ILibraryAppletCreator == | == ILibraryAppletCreator == | ||
This is "nn::am::service::ILibraryAppletCreator". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,385: | Line 1,604: | ||
|- | |- | ||
| 2 || [[#AreAnyLibraryAppletsLeft]] || | | 2 || [[#AreAnyLibraryAppletsLeft]] || | ||
|- | |||
| 3 || [20.0.0+] || | |||
|- | |- | ||
| 10 || [[#CreateStorage]] || | | 10 || [[#CreateStorage]] || | ||
Line 1,428: | Line 1,649: | ||
=== ILibraryAppletAccessor === | === ILibraryAppletAccessor === | ||
This is "nn::am::service::ILibraryAppletAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,447: | Line 1,670: | ||
|- | |- | ||
| 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,520: | Line 1,749: | ||
== ICommonStateGetter == | == ICommonStateGetter == | ||
This is "nn::am::service::ICommonStateGetter". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,553: | Line 1,784: | ||
|- | |- | ||
| 14 || [11.0.0+] [[#GetWakeupCount]] | | 14 || [11.0.0+] [[#GetWakeupCount]] | ||
|- | |||
| 15 || [19.0.0+] | |||
|- | |- | ||
| 20 || [[#PushToGeneralChannel]] | | 20 || [[#PushToGeneralChannel]] | ||
Line 1,605: | Line 1,838: | ||
|- | |- | ||
| 110 || [11.0.0+] [[#OpenMyGpuErrorHandler]] | | 110 || [11.0.0+] [[#OpenMyGpuErrorHandler]] | ||
|- | |||
| 120 || [13.0.0+] GetAppletLaunchedHistory | |||
|- | |- | ||
| 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] | | 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] | ||
Line 1,617: | Line 1,852: | ||
|- | |- | ||
| 501 || [11.0.0+] [[#SuppressDisablingSleepTemporarily]] | | 501 || [11.0.0+] [[#SuppressDisablingSleepTemporarily]] | ||
|- | |||
| 502 || [12.0.0+] IsSleepEnabled | |||
|- | |||
| 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 | |||
|} | |||
Officially notification messages are handled by the application itself, not sdk-nso in ExeFS. Official apps call code in sdk-nso which basically uses svcWaitSynchronization with the event from [[#GetEventHandle]] to check whether a message is available, then if so it uses [[#ReceiveMessage]]. The actual handling for message IDs is done in the app itself(see [[#AppletMessage]]). | Officially notification messages are handled by the application itself, not sdk-nso in ExeFS. Official apps call code in sdk-nso which basically uses svcWaitSynchronization with the event from [[#GetEventHandle]] to check whether a message is available, then if so it uses [[#ReceiveMessage]]. The actual handling for message IDs is done in the app itself(see [[#AppletMessage]]). | ||
Line 1,650: | Line 1,899: | ||
=== GetPerformanceMode === | === GetPerformanceMode === | ||
No input. Returns an output u32 for the current PerformanceMode. | No input. Returns an output u32 for the current [[#PerformanceMode]]. | ||
=== GetCradleStatus === | === GetCradleStatus === | ||
Line 1,663: | Line 1,912: | ||
=== GetCurrentFocusState === | === GetCurrentFocusState === | ||
No input. Returns an output u8 | No input. Returns an output u8 [[#FocusState]]. | ||
=== RequestToAcquireSleepLock === | === RequestToAcquireSleepLock === | ||
Line 1,742: | Line 1,988: | ||
=== SetVrPositionForDebug === | === SetVrPositionForDebug === | ||
Takes 4 input s32s, no output. | Takes 4 input s32s, no output. | ||
The s32s are: x, y, width, height. | |||
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | |||
width must be 1-1280, height must be 1-720. | |||
x and y must not be negative. x+width must be <=1280. y+height must be <=720. | |||
=== GetDefaultDisplayResolution === | === GetDefaultDisplayResolution === | ||
Line 1,764: | Line 2,018: | ||
=== SetCpuBoostMode === | === SetCpuBoostMode === | ||
Takes an input u32 | Takes an input u32 [[#CpuBoostMode]] and passes it to [[PPC_services#apm:sys|SetCpuBoostMode]]. | ||
=== CancelCpuBoostMode === | === CancelCpuBoostMode === | ||
Line 1,804: | Line 2,058: | ||
=== ActivateMigrationService === | === ActivateMigrationService === | ||
No input/output. | No input/output. | ||
Besides various other functionality, if required this eventually uses [[NS_Services|ns]] LaunchLibraryApplet to launch [[Migration_services|migration]]. | |||
=== DeactivateMigrationService === | === DeactivateMigrationService === | ||
Line 1,854: | Line 2,110: | ||
== ISelfController == | == ISelfController == | ||
This is "nn::am::service::ISelfController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,891: | Line 2,149: | ||
|- | |- | ||
| 20 || [4.0.0+] [[#SetDesirableKeyboardLayout]] | | 20 || [4.0.0+] [[#SetDesirableKeyboardLayout]] | ||
|- | |||
| 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 1,903: | Line 2,169: | ||
|- | |- | ||
| 45 || [10.0.0+] [[#SetManagedDisplayLayerSeparationMode]] | | 45 || [10.0.0+] [[#SetManagedDisplayLayerSeparationMode]] | ||
|- | |||
| 46 || [13.0.0+] [[#SetRecordingLayerCompositionEnabled]] | |||
|- | |- | ||
| 50 || [[#SetHandlesRequestToDisplay]] | | 50 || [[#SetHandlesRequestToDisplay]] | ||
Line 1,945: | Line 2,213: | ||
|- | |- | ||
| 120 || [11.0.0+] [[#SaveCurrentScreenshot]] | | 120 || [11.0.0+] [[#SaveCurrentScreenshot]] | ||
|- | |||
| 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]] | ||
|- | |||
| 2000 || [S2] [[#GetGraphicsInterface]] | |||
|- | |||
| 2100 || [S2] | |||
|} | |} | ||
Line 2,067: | Line 2,353: | ||
The input u32 must be 0-1. | The input u32 must be 0-1. | ||
=== SetRecordingLayerCompositionEnabled === | |||
Takes an input bool, no output. | |||
=== SetHandlesRequestToDisplay === | === SetHandlesRequestToDisplay === | ||
Line 2,138: | Line 2,427: | ||
=== SetWirelessPriorityMode === | === SetWirelessPriorityMode === | ||
Takes an input s32 | Takes an input s32 [[#WirelessPriorityMode]], no output. | ||
=== GetAccumulatedSuspendedTickValue === | === GetAccumulatedSuspendedTickValue === | ||
Line 2,168: | Line 2,455: | ||
sdknso exposes this under "nn::album::". | sdknso exposes this under "nn::album::". | ||
=== SetRecordVolumeMuted === | |||
Takes an input bool, no output. | |||
=== GetDebugStorageChannel === | === GetDebugStorageChannel === | ||
Line 2,173: | Line 2,463: | ||
The cached value loaded from [[System_Settings|system-setting]] <code>am.debug!dev_function</code> must be set to 0x1 with size 0x1, otherwise an error is returned. | The cached value loaded from [[System_Settings|system-setting]] <code>am.debug!dev_function</code> must be set to 0x1 with size 0x1, otherwise an error is returned. | ||
=== GetGraphicsInterface === | |||
Unofficial name. This is exclusive to S2. | |||
No input. Returns an output TIPC handle to [[#(S2) GraphicsInterface|GraphicsInterface]]. | |||
== IStorageChannel == | == IStorageChannel == | ||
This is "nn::am::service::IStorageChannel". | |||
This was added with [7.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,193: | Line 2,490: | ||
== IWindowController == | == IWindowController == | ||
This is "nn::am::service::IWindowController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,249: | Line 2,548: | ||
== IAudioController == | == IAudioController == | ||
This is "nn::am::service::IAudioController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,262: | Line 2,563: | ||
|- | |- | ||
| 4 || [[#SetTransparentVolumeRate]] | | 4 || [[#SetTransparentVolumeRate]] | ||
|- | |||
| 5 || [20.0.0+] | |||
|} | |} | ||
Line 2,284: | Line 2,587: | ||
== IDisplayController == | == IDisplayController == | ||
This is "nn::am::service::IDisplayController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,441: | Line 2,746: | ||
=== ClearCaptureBuffer === | === ClearCaptureBuffer === | ||
Takes an input u8 bool, | Takes an input u8 bool, a s32 CaptureSharedBuffer, and an u32 color, returns no output. | ||
Clear the input CaptureSharedBuffer with the specified RGBA8 color. | |||
=== ClearAppletTransitionBuffer === | === ClearAppletTransitionBuffer === | ||
Takes an input u32, no output. | Takes an input u32, no output. | ||
Clear the AppletTransitionBuffer with the specified RGBA8 color. | |||
=== AcquireLastApplicationCaptureSharedBuffer === | === AcquireLastApplicationCaptureSharedBuffer === | ||
Line 2,482: | Line 2,791: | ||
== ISystemAppletControllerForDebug == | == ISystemAppletControllerForDebug == | ||
This is "nn::am::service::ISystemAppletControllerForDebug". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 1 || RequestLaunchApplicationForDebug | |||
|- | |- | ||
| | | 2 || [7.0.0+] [[#GetDebugStorageChannel]] | ||
|- | |- | ||
| | | 3 || [7.0.0+] [[#CreateStorageForDebug]] | ||
|- | |- | ||
| | | 4 || [12.0.0+] [[#CreateCradleFirmwareUpdaterForDebug]] | ||
|} | |} | ||
=== GetDebugStorageChannel === | |||
No input. Returns an output [[#IStorageChannel]]. | |||
=== CreateStorageForDebug === | |||
Takes a total of 8-bytes of input. Returns an [[#IStorage]]. | |||
=== CreateCradleFirmwareUpdaterForDebug === | |||
No input. Returns an [[#ICradleFirmwareUpdater]]. | |||
== IProcessWindingController == | == IProcessWindingController == | ||
This is "nn::am::service::IProcessWindingController". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,542: | Line 2,866: | ||
=== ReserveToStartAndWait === | === ReserveToStartAndWait === | ||
Takes an input [[#ILibraryAppletAccessor]], no output. | Takes an input [[#ILibraryAppletAccessor]], no output. | ||
== ISystemProcessCommonFunctions == | |||
This is "nn::am::service::ISystemProcessCommonFunctions". | |||
This was added with [19.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 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 == | == IDebugFunctions == | ||
This is "nn::am::service::IDebugFunctions". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 0 || [[#NotifyMessageToHomeMenuForDebug]] | |||
|- | |||
| 1 || [1.0.0-9.2.0] [[#OpenMainApplication]] | |||
|- | |||
| 10 || [[#PerformSystemButtonPressing]] | |||
|- | |||
| 20 || [[#InvalidateTransitionLayer]] | |||
|- | |- | ||
| | | 30 || [6.0.0+] [[#RequestLaunchApplicationWithUserAndArgumentForDebug]] | ||
|- | |- | ||
| | | 31 || [12.0.0+] [[#RequestLaunchApplicationByApplicationLaunchInfoForDebug]] | ||
|- | |- | ||
| | | 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]] | ||
|- | |- | ||
| | | 50 || [15.0.0+] AddSystemProgramIdAndAppletIdForDebug | ||
|- | |- | ||
| | | 51 || [16.0.0+] AddOperationConfirmedLibraryAppletIdForDebug | ||
|- | |- | ||
| | | 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug | ||
|- | |- | ||
| | | 53 || [18.0.0+] GetProgramIdFromAppletIdAndLibraryAppletModeForDebug | ||
|- | |- | ||
| | | 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] | ||
|- | |- | ||
| | | 101 || [10.0.0+] [[#CancelCpuBoostModeForApplet]] | ||
|- | |- | ||
| | | 110 || [9.0.0+] [[#PushToAppletBoundChannelForDebug]] | ||
|- | |- | ||
| | | 111 || [9.0.0+] [[#TryPopFromAppletBoundChannelForDebug]] | ||
|- | |- | ||
| | | 120 || [9.0.0+] [[#AlarmSettingNotificationEnableAppEventReserve]] | ||
|- | |- | ||
| | | 121 || [9.0.0+] [[#AlarmSettingNotificationDisableAppEventReserve]] | ||
|- | |- | ||
| | | 122 || [9.0.0+] [[#AlarmSettingNotificationPushAppEventNotify]] | ||
|- | |- | ||
| | | 130 || [9.0.0+] [[#FriendInvitationSetApplicationParameter]] | ||
|- | |- | ||
| 132 || [9.0.0+] [[#FriendInvitationPushApplicationParameter]] || | | 131 || [9.0.0+] [[#FriendInvitationClearApplicationParameter]] | ||
|} | |- | ||
| 132 || [9.0.0+] [[#FriendInvitationPushApplicationParameter]] | |||
=== NotifyMessageToHomeMenuForDebug === | |- | ||
| 140 || [14.0.0+] RestrictPowerOperationForSecureLaunchModeForDebug | |||
|- | |||
| 200 || [15.0.0+] CreateFloatingLibraryAppletAccepterForDebug | |||
|- | |||
| 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 | |||
|- | |||
| 910 || [20.0.0+] | |||
|} | |||
=== NotifyMessageToHomeMenuForDebug === | |||
Takes an input [[#AppletMessage]], no output. | Takes an input [[#AppletMessage]], no output. | ||
Line 2,601: | Line 2,992: | ||
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,606: | Line 3,002: | ||
=== SetCpuBoostModeForApplet === | === SetCpuBoostModeForApplet === | ||
Takes an input u32 | Takes an input u32 [[#CpuBoostMode]] and passes it to [[PPC_services#apm:sys|SetCpuBoostMode]]. | ||
The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. | ||
Line 2,658: | Line 3,054: | ||
== IStorage == | == IStorage == | ||
This is "nn::am::service::IStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,672: | Line 3,070: | ||
== IStorageAccessor == | == IStorageAccessor == | ||
This is "nn::am::service::IStorageAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,684: | Line 3,084: | ||
== ITransferStorageAccessor == | == ITransferStorageAccessor == | ||
This is "nn::am::service::ITransferStorageAccessor". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 2,700: | Line 3,102: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#OpenApplicationProxy]] | | 0 || [[#OpenApplicationProxy]] | ||
|} | |} | ||
Line 2,708: | Line 3,110: | ||
== OpenApplicationProxy == | == OpenApplicationProxy == | ||
Takes a reserved input u64 (official user-processes use hard-coded value 0), a PID, and a process copy-handle (cur-proc handle alias). Returns an [[#IApplicationProxy]]. | |||
Takes a | |||
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. | ||
Line 2,716: | Line 3,116: | ||
= idle:sys = | = idle:sys = | ||
This is "nn::idle::detail::IPolicyManagerSystem" | This is "nn::idle::detail::IPolicyManagerSystem" | ||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,723: | Line 3,125: | ||
| 0 || GetAutoPowerDownEvent | | 0 || GetAutoPowerDownEvent | ||
|- | |- | ||
| 1 || [7.0.0+] IsAutoPowerDownRequested ([1.0.0-3.0.2] ) | |||
|- | |- | ||
| 2 || [1.0.0-3.0.2] | | 2 || [1.0.0-3.0.2] | ||
Line 2,738: | Line 3,138: | ||
== SetHandlingContext == | == SetHandlingContext == | ||
[3.0.0+] Now takes an additional 0x10-bytes of input. | [3.0.0+] Now takes an additional 0x10-bytes of input. | ||
[13.0.0+] Total input size is now 0x30 instead of 0x38. | |||
= omm = | = omm = | ||
Line 2,744: | Line 3,146: | ||
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | ||
Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | ||
This was moved to [[OMM_services|omm]] with [14.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,804: | Line 3,208: | ||
|- | |- | ||
| 27 || [9.0.0+] GetAppletFullAwakingSystemEvent | | 27 || [9.0.0+] GetAppletFullAwakingSystemEvent | ||
|- | |||
| 28 || [12.0.0+] [[#CreateCradleFirmwareUpdater]] | |||
|} | |} | ||
Line 2,811: | Line 3,217: | ||
This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | ||
= | == CreateCradleFirmwareUpdater == | ||
This is "nn:: | 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" | ||
Line 2,818: | Line 3,229: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || Start | ||
|- | |- | ||
| 1 || | | 1 || Finish | ||
|- | |- | ||
| 2 || | | 2 || GetUpdateDeviceStatus | ||
|- | |- | ||
| 3 || | | 3 || GetUpdateProgress | ||
|- | |- | ||
| 4 || | | 4 || GetUpdateDeviceStatusChangeEvent | ||
|- | |- | ||
| 5 || ReceiveNotificationMessage | | 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 | | 6 || AnalyzeLogForLastSleepWakeSequence | ||
Line 2,864: | Line 3,297: | ||
This is "nn::capsrv::sf::IScreenShotApplicationService". | This is "nn::capsrv::sf::IScreenShotApplicationService". | ||
This was added with | This was added with [6.0.0+]. | ||
This can be used by applications to save screenshots. | This can be used by applications to save screenshots. | ||
Line 2,870: | Line 3,303: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 32 || [7.0.0+] SetShimLibraryVersion | | 32 || [7.0.0+] [[#SetShimLibraryVersion]] | ||
|- | |- | ||
| 201 || SaveScreenShot | | 201 || [[#SaveScreenShot]] | ||
|- | |- | ||
| 203 || SaveScreenShotEx0 | | 203 || [[#SaveScreenShotEx0]] | ||
|- | |- | ||
| 205 || [8.0.0+] SaveScreenShotEx1 | | 205 || [8.0.0+] [[#SaveScreenShotEx1]] | ||
|- | |- | ||
| 210 || SaveScreenShotEx2 | | 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 == | == SaveScreenShot == | ||
Line 2,901: | Line 3,337: | ||
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]]. | 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 | 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" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |||
| 0 || SetPerformanceConfiguration | |||
|- | |||
| 1 || GetPerformanceConfiguration | |||
|- | |||
| 2 || [8.0.0+] SetCpuOverclockEnabled | |||
|} | |||
= (S2) adraw:a = | |||
This is "nn::appletdraw::sfif::IAppletRoot". This is exclusive to S2. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
|- | |- | ||
| | | 1 || [[#OpenResourceSession]] | ||
|- | |- | ||
| | | 2 || [[#OpenAppletSession]] | ||
|} | |||
== OpenResourceSession == | |||
Unofficial name. | |||
Takes a PID and an u64. Returns a [[#IResourceSession]]. | |||
== OpenAppletSession == | |||
Unofficial name. This is exclusive to S2. | |||
Takes a PID and an u64. Returns a [[#IAppletSession]]. | |||
== IResourceSession == | |||
This is "nn::appletdraw::sfif::IResourceSession". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
|- | |- | ||
| 1 || | |||
|- | |- | ||
| | | 10 || | ||
|- | |- | ||
| 11 || | |||
|} | |} | ||
= | === Cmd1 === | ||
=== | Takes a u64. Returns a u64. | ||
=== Cmd10 === | |||
Takes a handle, a u64 and an int. Returns a handle. | |||
=== Cmd11 === | |||
No input/output. | |||
== IAppletSession == | |||
This is "nn::appletdraw::sfif::IAppletSession". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| | | 1 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || | ||
| | |||
| | |||
|- | |- | ||
| | | 3 || | ||
| | |||
| | |||
|- | |- | ||
| | | 10 || | ||
| | |||
| | |||
|- | |- | ||
| | | 11 || | ||
| | |||
| | |||
|- | |- | ||
| | | 12 || | ||
| | |||
| | |||
|- | |- | ||
| | | 13 || | ||
| | |||
| | |||
|- | |- | ||
| | | 15 || | ||
| | |||
| | |||
|- | |- | ||
| | | 16 || | ||
| | |||
| | |||
|- | |- | ||
| | | 17 || | ||
| | |||
| | |||
|- | |- | ||
| | | 18 || | ||
| | |||
| | |||
|- | |- | ||
| | | 19 || | ||
| | |||
| | |||
|- | |- | ||
| | | 21 || | ||
| | |||
| | |||
|- | |- | ||
| | | 22 || | ||
| | |||
| | |||
|- | |- | ||
| | | 23 || | ||
| | |||
| | |||
|- | |- | ||
| | | 24 || | ||
| | |||
| | |||
|- | |- | ||
| | | 31 || | ||
| | |||
| | |||
|- | |- | ||
| | | 8001 || | ||
| | |||
| | |||
|- | |- | ||
| | | 8004 || | ||
| | |} | ||
=== Cmd1 === | |||
Takes a u64. Returns a u64. | |||
=== Cmd2 === | |||
Returns a handle. | |||
=== Cmd3 === | |||
Takes a handle. | |||
=== Cmd10 === | |||
Takes an int. | |||
=== Cmd11 === | |||
Takes an int. | |||
=== Cmd12 === | |||
Takes a u64. Returns an int. | |||
=== Cmd13 === | |||
Takes an int. Returns an int. | |||
=== Cmd15 === | |||
Takes an int. Returns an int, an int, an int. | |||
=== Cmd16 === | |||
Returns an int. | |||
=== Cmd17 === | |||
Takes an int. Returns an int, a u16. | |||
=== Cmd18 === | |||
Takes an int. Returns 3x int, a u16. | |||
=== Cmd19 === | |||
Takes an int. Returns an int, a u16. | |||
=== Cmd21 === | |||
Takes an int. Returns a struct of size 0x40. | |||
=== Cmd22 === | |||
Takes a struct of size 0x20. Returns a struct of size 0x40. | |||
=== Cmd23 === | |||
Returns a struct of size 0xC8. | |||
=== Cmd24 === | |||
Sends an ipc-buf with size 0xD8. | |||
=== Cmd31 === | |||
Returns a struct with 0x28, a struct with size 0x10. | |||
=== Cmd8001 === | |||
Returns a struct with 0x28, a struct with size 0x10. | |||
=== Cmd8004 === | |||
Takes an int. Returns a u64. | |||
= (S2) appletOE = | |||
This is "nn::am::service::IApplicationProxyServiceForNxCompat". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 0 || [[#OpenApplicationProxy]] | ||
| | |||
| | |||
|- | |- | ||
| | | 2000 || [[#OpenCompatApplicationFunctions]] | ||
| | |} | ||
| | |||
== OpenCompatApplicationFunctions == | |||
No input. Returns an [[#INxCompatApplicationFunctions]]. | |||
== INxCompatApplicationFunctions == | |||
This is "nn::am::service::INxCompatApplicationFunctions". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
| | |||
|- | |- | ||
| | | 2000 || [[#GetGraphicsInterfaceForNxCompat]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 2001 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2002 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2003 || [[#SetCopyright]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 2004 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2010 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2020 || [[#Initialize]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 2030 || [[#GetVsyncEvent]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 2040 || [[#GetVsyncTimestamp]] | ||
| | |||
| [ | |||
|- | |- | ||
| | | 2050 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2060 || | ||
| | |||
| | |||
|- | |- | ||
| | | 2070 || [[#CreateMovieMaker]] | ||
| | |||
| [ | |||
|} | |} | ||
=== | === GetGraphicsInterfaceForNxCompat === | ||
{| class="wikitable" border="1" | Unofficial name. | ||
No input. Returns an output TIPC handle to [[#(S2) GraphicsInterface|GraphicsInterface]]. | |||
Same as [[#GetGraphicsInterface]] but for compat mode. | |||
=== SetCopyright === | |||
Unofficial name. | |||
Takes an input bool. No output. | |||
Called directly after "nn::vi::WriteToCopyrightFramebuffer". | |||
=== Initialize === | |||
Unofficial name. | |||
No input/output. | |||
Called during init. | |||
=== GetVsyncEvent === | |||
Unofficial name. | |||
No input. Returns an Event handle. | |||
=== GetVsyncTimestamp === | |||
Unofficial name. | |||
No input. Returns an output u64. | |||
When event from [[#GetVsyncEvent]] triggers, this returns a timestamp. | |||
= (S2) GraphicsInterface = | |||
Unofficial name. This is a TIPC interface so the command numbers are subtracted by 16. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |- | ||
| 1 || [[#InitializeGraphicsWithTransferMemory]] | |||
|- | |- | ||
| | | 4 || [[#InitializeGraphics]] | ||
| | |- | ||
| 11 || [[#SetCurrentProcessHandle]] | |||
|- | |- | ||
| | | 12 || | ||
| | |||
|- | |- | ||
| | | 101 || [[#StartGraphics]] | ||
| | |||
|- | |- | ||
| | | 111 || | ||
| | |||
|- | |- | ||
| | | 112 || | ||
| | |||
|- | |- | ||
| | | 114 || | ||
|- | |- | ||
| 115 || | |||
|- | |- | ||
| | | 187 || | ||
|- | |- | ||
| | | 201 || | ||
|- | |- | ||
| | | 301 || | ||
|- | |- | ||
| | | 303 || | ||
|- | |- | ||
| | | 311 || | ||
|- | |- | ||
| | | 312 || | ||
|- | |- | ||
| | | 314 || | ||
|- | |- | ||
| | | 315 || | ||
|- | |- | ||
| 321 || | |||
|- | |- | ||
| | | 327 || | ||
|- | |- | ||
| | | 391 || | ||
|- | |- | ||
| 401 || [[#PrepareGpuManagerSession]] | |||
|- | |- | ||
| | | 402 || [[#StartGpuManagerSession]] | ||
|- | |- | ||
| | | 423 || | ||
| | |- | ||
| 434 || | |||
|- | |||
| 494 || | |||
|- | |||
| 496 || [[#CreateGpuManagerSessionWithTransferMemory]] | |||
|- | |||
| 497 || [[#CreateGpuManagerSession]] | |||
|- | |||
| 901 || | |||
|- | |||
| 902 || | |||
|- | |||
| 903 || | |||
|- | |- | ||
| 905 || | |||
|- | |- | ||
| | | 911 || | ||
|- | |- | ||
| | | 912 || | ||
|- | |- | ||
| | | 922 || | ||
|- | |- | ||
| | | 961 || | ||
|- | |- | ||
| | | 991 || | ||
|- | |- | ||
| | | 1001 || | ||
|- | |- | ||
| | | 1002 || | ||
|- | |- | ||
| 1003 || | |||
|- | |- | ||
| | | 1101 || | ||
|- | |- | ||
| | | 1102 || | ||
|- | |- | ||
| | | 1401 || [[#CreateNvDrv2UserSessionWithTransferMemory]] | ||
|- | |- | ||
| 1402 || [[#CreateNvDrv2UserSession]] | |||
|- | |- | ||
| | | 1411 || [[#GetNvDrv2UserTransferMemoryUsage]] | ||
|- | |- | ||
| | | 1501 || | ||
|- | |- | ||
| | | 1502 || | ||
|- | |- | ||
| | | 1601 || | ||
|- | |- | ||
| 1602 || | |||
|- | |- | ||
| | | 1603 || | ||
|- | |- | ||
| | | 1611 || | ||
|- | |- | ||
| | | 1612 || | ||
|- | |- | ||
| 1691 || | |||
|} | |} | ||
== InitializeGraphicsWithTransferMemory == | |||
Unofficial name. | |||
Takes a TransferMemory handle, an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]] and an input u64 '''TransferMemorySize'''. No output. | |||
== InitializeGraphics == | |||
Unofficial name. | |||
Takes a Process handle, an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]] and five input u64s. No output. | |||
The first u64 appears to be a version ([19.0.0] 0x8000000000000001, [20.1.1] 0x8000000000000005), the last u64 is the output from new [[SVC#InfoType|InfoType]] 31 or 32 and the remaining u64s are all 0. | |||
== SetCurrentProcessHandle == | |||
Unofficial name. | |||
Takes a Process handle. No output. | |||
Called directly after [[#InitializeGraphicsWithTransferMemory]] or [[#InitializeGraphics]]. | |||
== StartGraphics == | |||
Unofficial name. | |||
No input/output. | |||
Called directly after [[#SetCurrentProcessHandle]]. | |||
== PrepareGpuManagerSession == | |||
Unofficial name. | |||
= | No input/output. | ||
{| class="wikitable" border="1" | |||
|- | Called directly after [[#CreateGpuManagerSessionWithTransferMemory]] or [[#CreateGpuManagerSession]]. | ||
! Offset || Size || | |||
|- | == StartGpuManagerSession == | ||
| 0x0 || 0x4 || [[#AppletId]] | Unofficial name. | ||
|- | |||
| 0x4 || 0x4 || [[# | No input/output. | ||
|} | |||
Called directly after [[#PrepareGpuManagerSession]]. | |||
This is "nn::am::service::LibraryAppletInfo". This struct is 0x8-bytes. | |||
== CreateGpuManagerSessionWithTransferMemory == | |||
= AppletKind = | Unofficial name. | ||
This is "nn::am::service::AppletKind". This is 8-bytes. | |||
Takes a TransferMemory handle and two input u64s '''Version''' and '''TransferMemorySize'''. Returns a [[#GpuManagerSession]]. | |||
= AppletIdentityInfo = | |||
{| class="wikitable" border="1" | [19.0.0] '''Version''' must be 2. | ||
|- | |||
! Offset || Size || Description | == CreateGpuManagerSession == | ||
|- | Unofficial name. | ||
| 0x0 || 0x4 || [[#AppletId]] | |||
|- | Takes an input u64 '''Version'''. Returns a [[#GpuManagerSession]]. | ||
| 0x4 || 0x4 || Padding | |||
|- | [19.0.0] '''Version''' must be 2. | ||
| 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | |||
|} | == CreateNvDrv2UserSessionWithTransferMemory == | ||
Unofficial name. | |||
This struct is "nn:: | |||
Takes a TransferMemory handle, an input u64 '''TransferMemorySize''' and an input u8. Returns an [[NV_services#(S2)_INvDrv2User|INvDrv2User]]. | |||
{| class="wikitable" border="1" | == CreateNvDrv2UserSession == | ||
|- | Unofficial name. | ||
! Offset || Size || Description | |||
|- | No input. Returns an [[NV_services#(S2)_INvDrv2User|INvDrv2User]]. | ||
| 0x0 || 0x4 || See [[#ApplicationAttribute]]. | |||
|- | == GetNvDrv2UserTransferMemoryUsage == | ||
| 0x4 || 0x4 || See [[#ApplicationAttribute]]. | Unofficial name. | ||
|- | |||
| 0x8 || 0x4 || [7.0.0+] See [[#ApplicationAttribute]]. | No input. Returns three u64s '''TotalTransferMemorySize''', '''UsedTransferMemorySize''' and '''MaxTransferMemorySize'''. | ||
|} | |||
== GpuManagerSession == | |||
Unofficial name. This is a TIPC interface so the command numbers are subtracted by 16. | |||
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). | {| class="wikitable" border="1" | ||
|- | |||
= ApplicationAttribute = | ! Cmd || Name | ||
{| class="wikitable" border="1" | |- | ||
|- | | 11 || [[#GetEventIdRange]] | ||
! Offset || Size || Description | |- | ||
|- | | 12 || [[#CreateEvent]] | ||
| 0x0 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds. | |- | ||
|- | | 21 || [[#RequestGpuSession]] | ||
|- | |||
| 22 || [[#GetGpuSession]] | |||
|- | |||
| 33 || | |||
|- | |||
| 41 || | |||
|- | |||
| 42 || | |||
|- | |||
| 102 || | |||
|- | |||
| 200 || | |||
|- | |||
| 201 || | |||
|- | |||
| 202 || | |||
|} | |||
=== GetEventIdRange === | |||
Unofficial name. | |||
No input. Returns two u32s '''EventIdMin''' and '''EventIdMax'''. | |||
=== CreateEvent === | |||
Unofficial name. | |||
Takes an input u32 '''EventId'''. Returns an output Event handle. | |||
=== RequestGpuSession === | |||
Unofficial name. | |||
Takes an input u32 '''EventId'''. No output. | |||
'''EventId''' must have been previously passed to [[#CreateEvent]] and the returned Event handle will be signalled when the session is ready. | |||
=== GetGpuSession === | |||
Unofficial name. | |||
No input. Returns a [[#GpuSession]]. | |||
Called after [[#RequestGpuSession]] and the Event handle has been signalled. | |||
=== GpuSession === | |||
Unofficial name. This is a TIPC interface so the command numbers are subtracted by 16. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 101 || [[#CreateGpuMemory]] | |||
|- | |||
| 102 || [[#DestroyGpuMemory]] | |||
|- | |||
| 201 || [19.0.0-19.1.0] MapMemory | |||
|- | |||
| 202 || [19.0.0-19.1.0] UnmapMemory | |||
|- | |||
| 203 || [19.0.0-19.1.0] AllocateAddressSpace | |||
|- | |||
| 204 || [19.0.0-19.1.0] FreeAddressSpace | |||
|- | |||
| 205 || [19.0.0-19.1.0] RemapMemory | |||
|- | |||
| 207 || [19.0.0-19.1.0] ModifyMemoryMapping | |||
|- | |||
| 211 || [20.1.1+] MapMemoryV2 | |||
|- | |||
| 212 || [20.1.1+] ModifyMemoryMappingV2 | |||
|- | |||
| 213 || [20.1.1+] UnmapMemoryV2 | |||
|- | |||
| 214 || [20.1.1+] AllocateAddressSpaceV2 | |||
|- | |||
| 215 || [20.1.1+] FreeAddressSpaceV2 | |||
|- | |||
| 216 || [20.1.1+] RemapMemoryV2 | |||
|} | |||
==== CreateGpuMemory ==== | |||
Unofficial name. | |||
Takes two input u64s '''MemoryAddressStart''' and '''MemoryAddressEnd''' and two u8s. Returns an output u32 '''GpuMemoryHandle'''. | |||
The memory region between '''MemoryAddressStart''' and '''MemoryAddressEnd''' must have been passed to [[#SVC|SVC]] 0x80 with attribute 0x20. | |||
==== DestroyGpuMemory ==== | |||
Unofficial name. | |||
Takes two input u32s '''GpuMemoryHandle''' and '''EventId'''. No output. | |||
The Event handle associated with '''EventId''' will be signalled when the memory is released. | |||
= 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::AppletId". See also [[:Category:Library Applets]]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! ProgramId | |||
! 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 | |||
|- | |||
| 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" | |||
|- | |||
! Value | |||
! 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::AppletMessage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 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". | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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. | | 0x4 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds. | ||
|- | |- | ||
Line 3,355: | Line 4,616: | ||
| 0xC || 0x14 || Unused. Default is 0. | | 0xC || 0x14 || Unused. Default is 0. | ||
|} | |} | ||
Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd. | Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd. | ||
= ApplicationLaunchProperty = | = ApplicationLaunchProperty = | ||
This struct is 0x10-bytes. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,378: | Line 4,639: | ||
|} | |} | ||
This struct is 0x10-bytes. | = ApplicationLaunchRequestInfo = | ||
This is "nn::applet::ApplicationLaunchRequestInfo". This struct is 0x10-bytes. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,392: | Line 4,653: | ||
|} | |} | ||
This | = AppletResourceUsageInfo = | ||
This is "nn::am::service::AppletResourceUsageInfo". This struct is 0x20-bytes. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,407: | Line 4,668: | ||
| 0xC || 0x14 || Always zero. | | 0xC || 0x14 || Always zero. | ||
|} | |} | ||
= ApplicationLicenseType = | = ApplicationLicenseType = | ||
Line 3,415: | Line 4,674: | ||
= LaunchRequiredVersion = | = LaunchRequiredVersion = | ||
This is "nn::oe::LaunchRequiredVersion". This is a 0x40-byte struct with 1-byte alignment. | 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 = | ||
AM-sysmodule will only initialize [[Shared_Database_services|pdm:ntfy]] / use pdm:ntfy service commands when the value from [[Process_Manager_services|pm:bm]] GetBootMode is not 0x1. | AM-sysmodule will only initialize [[Shared_Database_services|pdm:ntfy]] / use pdm:ntfy service commands when the value from [[Process_Manager_services|pm:bm]] GetBootMode is not 0x1 (Maintenance). | ||
An object constructor also writes the output from [[Process_Manager_services|pm:bm]] GetBootMode into the created object. A vfunc for this object checks whether this field is Maintenance: if so, it calls a vfunc then a func and returns. Otherwise after calling various (v)funcs, if required this eventually uses [[OMM_services|ommdisp]] cmd600. | |||
[[Category:Services]] | [[Category:Services]] |