Applet Manager services: Difference between revisions
No edit summary |
|||
(35 intermediate revisions by 3 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 606: | Line 623: | ||
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet | | 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet | ||
|- | |- | ||
| 82 || [18.0.0+] | | 82 || [18.0.0+] SetBlockingCaptureButtonInEntireSystem | ||
|- | |- | ||
| 90 || [15.0.0+] OpenNamedChannelAsParent | | 90 || [15.0.0+] OpenNamedChannelAsParent | ||
Line 614: | Line 631: | ||
| 100 || [15.0.0+] SetApplicationCoreUsageMode | | 100 || [15.0.0+] SetApplicationCoreUsageMode | ||
|- | |- | ||
| 160 || [18.0.0+] | | 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 773: | Line 812: | ||
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | | 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] || | ||
|- | |- | ||
| 160 || [17.0.0+] [[# | | 160 || [17.0.0+] [[#GetLibraryAppletInfoEx]] || | ||
|} | |} | ||
Line 907: | Line 946: | ||
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. | No input, returns an output u64. Currently always returns 0. | ||
Line 973: | Line 1,012: | ||
| 31 || [10.0.0+] [[#IsHealthWarningRequired]] | | 31 || [10.0.0+] [[#IsHealthWarningRequired]] | ||
|- | |- | ||
| 40 || [18.0.0+] | | 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,156: | 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,190: | 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,458: | 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,485: | Line 1,559: | ||
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. | ||
=== | === IMovieWriter === | ||
This is "nn::am::service:: | This is "nn::am::service::IMovieWriter". | ||
This was added with [19.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,492: | Line 1,568: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#GetGrcMovieMaker]] | | 0 || | ||
|} | |||
==== Cmd0 ==== | |||
No input. Returns a GRC [[GRC_services|IMovieWriter]]. | |||
=== IMovieMaker === | |||
This is "nn::am::service::IMovieMaker". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#GetGrcMovieMaker]] | |||
|- | |- | ||
| 1 || [[#GetLayerHandle]] | | 1 || [[#GetLayerHandle]] | ||
Line 1,515: | Line 1,604: | ||
|- | |- | ||
| 2 || [[#AreAnyLibraryAppletsLeft]] || | | 2 || [[#AreAnyLibraryAppletsLeft]] || | ||
|- | |||
| 3 || [20.0.0+] || | |||
|- | |- | ||
| 10 || [[#CreateStorage]] || | | 10 || [[#CreateStorage]] || | ||
Line 1,579: | 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,687: | Line 1,784: | ||
|- | |- | ||
| 14 || [11.0.0+] [[#GetWakeupCount]] | | 14 || [11.0.0+] [[#GetWakeupCount]] | ||
|- | |||
| 15 || [19.0.0+] | |||
|- | |- | ||
| 20 || [[#PushToGeneralChannel]] | | 20 || [[#PushToGeneralChannel]] | ||
Line 1,758: | Line 1,857: | ||
| 503 || [12.0.0+] IsDisablingSleepSuppressed | | 503 || [12.0.0+] IsDisablingSleepSuppressed | ||
|- | |- | ||
| 600 || [17.0.0 | | 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 | | 910 || [17.0.0+] GetLaunchRequiredTick | ||
|- | |||
| 1000 || [19.0.0+] BeginVrMode3d | |||
|- | |||
| 1001 || [19.0.0+] EndVrMode3d | |||
|- | |||
| 1002 || [19.0.0+] IsVrModeEnabled3d | |||
|} | |} | ||
Line 2,046: | Line 2,151: | ||
|- | |- | ||
| 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,104: | Line 2,215: | ||
|- | |- | ||
| 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]] | ||
|- | |||
| 2000 || [S2] [[#GetGraphicsInterface]] | |||
|- | |||
| 2100 || [S2] | |||
|} | |} | ||
Line 2,336: | 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 == | ||
Line 2,431: | Line 2,563: | ||
|- | |- | ||
| 4 || [[#SetTransparentVolumeRate]] | | 4 || [[#SetTransparentVolumeRate]] | ||
|- | |||
| 5 || [20.0.0+] | |||
|} | |} | ||
Line 2,733: | Line 2,867: | ||
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,740: | Line 2,876: | ||
! 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,750: | Line 2,919: | ||
| 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,760: | Line 2,929: | ||
| 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug | | 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug | ||
|- | |- | ||
| 53 || [18.0.0+] | | 53 || [18.0.0+] GetProgramIdFromAppletIdAndLibraryAppletModeForDebug | ||
|- | |- | ||
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] | | 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] | ||
Line 2,788: | Line 2,957: | ||
| 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug | | 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug | ||
|- | |- | ||
| 410 || [18.0.0+] | | 410 || [18.0.0+] CreateGeneralStorageForDebug | ||
|- | |- | ||
| 411 || [18.0.0+] | | 411 || [18.0.0+] ReadGeneralStorageForDebug | ||
|- | |- | ||
| 412 || [18.0.0+] | | 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,817: | 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,922: | Line 3,102: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#OpenApplicationProxy]] | | 0 || [[#OpenApplicationProxy]] | ||
|} | |} | ||
Line 2,930: | 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 3,125: | 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 3,192: | Line 3,373: | ||
|} | |} | ||
= | = (S2) adraw:a = | ||
This | 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" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| 1 || | |||
|- | |- | ||
| | | 10 || | ||
|- | |- | ||
| 11 || | |||
|} | |} | ||
= | === Cmd1 === | ||
This is "nn:: | 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 || | ||
| | |||
| | |||
|- | |- | ||
| 0x15 | | 8001 || | ||
| 010000000000100D | |- | ||
| [[Album_Applet|LibraryAppletPhotoViewer (photoViewer)]] | | 8004 || | ||
|- | |} | ||
| 0x16 | |||
| 010000000000100E | === Cmd1 === | ||
| LibraryAppletSet (set) | Takes a u64. Returns a u64. | ||
|- | |||
| 0x17 | === Cmd2 === | ||
| 010000000000100F | Returns a handle. | ||
| [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] | |||
|- | === Cmd3 === | ||
| 0x18 | Takes a handle. | ||
| 0100000000001010 | |||
| [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] | === Cmd10 === | ||
|- | Takes an int. | ||
| 0x19 | |||
| 0100000000001011 | === Cmd11 === | ||
| [[Internet_Browser#WifiWebAuthApplet|LibraryAppletWifiWebAuth (wifiWebAuth)]] | Takes an int. | ||
|- | |||
| 0x1A | === Cmd12 === | ||
| 0100000000001013 | Takes a u64. Returns an int. | ||
| [[MyPage_Applet|LibraryAppletMyPage (myPage)]] | |||
|- | === Cmd13 === | ||
| 0x1B | Takes an int. Returns an int. | ||
| 010000000000101A | |||
| LibraryAppletGift (gift) | === Cmd15 === | ||
|- | Takes an int. Returns an int, an int, an int. | ||
| 0x1C | |||
| 010000000000101C | === Cmd16 === | ||
| LibraryAppletUserMigration (userMigration) | Returns an int. | ||
|- | |||
| 0x1D | === Cmd17 === | ||
| 010000000000101D | Takes an int. Returns an int, a u16. | ||
| [9.0.0+] LibraryAppletPreomiaSys (EncounterSys) | |||
|- | === Cmd18 === | ||
| 0x1E | Takes an int. Returns 3x int, a u16. | ||
| 0100000000001020 | |||
| [9.0.0+] LibraryAppletStory (story) | === Cmd19 === | ||
|- | Takes an int. Returns an int, a u16. | ||
| 0x1F | |||
| 010070000E3C0000 | === Cmd21 === | ||
| [9.0.0+] LibraryAppletPreomiaUsr (EncounterUsr) | 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 === | |||
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. | |||
Called directly after [[#CreateGpuManagerSessionWithTransferMemory]] or [[#CreateGpuManagerSession]]. | |||
== StartGpuManagerSession == | |||
Unofficial name. | |||
No input/output. | |||
Called directly after [[#PrepareGpuManagerSession]]. | |||
== CreateGpuManagerSessionWithTransferMemory == | |||
Unofficial name. | |||
Takes a TransferMemory handle and two input u64s '''Version''' and '''TransferMemorySize'''. Returns a [[#GpuManagerSession]]. | |||
[19.0.0] '''Version''' must be 2. | |||
== CreateGpuManagerSession == | |||
Unofficial name. | |||
Takes an input u64 '''Version'''. Returns a [[#GpuManagerSession]]. | |||
[19.0.0] '''Version''' must be 2. | |||
== CreateNvDrv2UserSessionWithTransferMemory == | |||
Unofficial name. | |||
Takes a TransferMemory handle, an input u64 '''TransferMemorySize''' and an input u8. Returns an [[NV_services#(S2)_INvDrv2User|INvDrv2User]]. | |||
== CreateNvDrv2UserSession == | |||
Unofficial name. | |||
No input. Returns an [[NV_services#(S2)_INvDrv2User|INvDrv2User]]. | |||
== GetNvDrv2UserTransferMemoryUsage == | |||
Unofficial name. | |||
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. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 11 || [[#GetEventIdRange]] | |||
|- | |||
| 12 || [[#CreateEvent]] | |||
|- | |||
| 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 | | 0x20 | ||
Line 3,355: | Line 4,049: | ||
| 0x32 | | 0x32 | ||
| 010000000000100F | | 010000000000100F | ||
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] | | [17.0.0+] LibraryAppletOfflineWebApp_3 ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | ||
|- | |- | ||
| 0x33 | | 0x33 | ||
| 010000000000100F | | 010000000000100F | ||
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] | | [17.0.0+] LibraryAppletOfflineWebSystem ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | ||
|- | |- | ||
| 0x35 | | 0x35 | ||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | | [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | ||
| [17.0.0+] | | [17.0.0+] LibraryAppletLhub ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
|- | |- | ||
| 0x36 | | 0x36 | ||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | | [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | ||
| [17.0.0+] | | [17.0.0+] LibraryAppletLogin ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
|- | |- | ||
| 0x37 | | 0x37 | ||
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | | [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042) | ||
| [17.0.0+] | | [17.0.0+] LibraryAppletShare ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
|- | |- | ||
| 0x38 | | 0x38 | ||
Line 3,384: | Line 4,078: | ||
| 0100000000001007 | | 0100000000001007 | ||
| [18.0.0+] | | [18.0.0+] | ||
|- | |||
| 0x64 | |||
| 0100000000001048 | |||
| [20.0.0+] [[Splay_Applet|splay]] | |||
|- | |- | ||
| 0x3E8 | | 0x3E8 | ||
Line 3,508: | Line 4,206: | ||
| 010000000000D60E | | 010000000000D60E | ||
| [17.0.0+] AppletILA2 | | [17.0.0+] AppletILA2 | ||
|- | |||
| 0x700000FA | |||
| 010000000000D677 | |||
| [20.1.0+] | |||
|} | |} | ||