Changes

Line 65: Line 65:     
== ISystemAppletProxy ==
 
== ISystemAppletProxy ==
 +
This is "nn::am::service::ISystemAppletProxy".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 95: Line 97:     
=== IHomeMenuFunctions ===
 
=== IHomeMenuFunctions ===
 +
This is "nn::am::service::IHomeMenuFunctions".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 116: Line 120:  
|-
 
|-
 
| 41 || [12.0.0+] [[#IsRebootEnabled]]
 
| 41 || [12.0.0+] [[#IsRebootEnabled]]
 +
|-
 +
| 50 || [16.0.0+] [[#LaunchSystemApplet]]
 +
|-
 +
| 51 || [16.0.0+] [[#LaunchStarter]]
 
|-
 
|-
 
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]]
 
| 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]]
Line 156: Line 164:  
==== IsRebootEnabled ====
 
==== IsRebootEnabled ====
 
No input, returns an output bool.
 
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 172: Line 192:  
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#IApplicationManagerInterface]] cmd99.
+
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 180: Line 200:     
==== ILockAccessor ====
 
==== ILockAccessor ====
 +
This is "nn::am::service::ILockAccessor".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 210: Line 232:     
=== IGlobalStateController ===
 
=== IGlobalStateController ===
 +
This is "nn::am::service::IGlobalStateController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 581: Line 605:  
|-
 
|-
 
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet
 
| 81 || [14.0.0+] SetHandlingCaptureButtonLongPressedMessageEnabledForApplet
 +
|-
 +
| 82 || [18.0.0+]
 +
|-
 +
| 90 || [15.0.0+] OpenNamedChannelAsParent
 +
|-
 +
| 91 || [15.0.0+] OpenNamedChannelAsChild
 +
|-
 +
| 100 || [15.0.0+] SetApplicationCoreUsageMode
 +
|-
 +
| 160 || [18.0.0+]
 +
|-
 +
| 161 || [18.0.0+]
 +
|-
 +
| 300 || [17.0.0+]
 
|}
 
|}
   Line 627: Line 665:     
== ILibraryAppletProxy ==
 
== ILibraryAppletProxy ==
 +
This is "nn::am::service::ILibraryAppletProxy".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 648: Line 688:  
|-
 
|-
 
| 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 653: Line 697:     
=== ILibraryAppletSelfAccessor ===
 
=== ILibraryAppletSelfAccessor ===
 +
This is "nn::am::service::ILibraryAppletSelfAccessor".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 726: Line 772:  
|-
 
|-
 
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] ||
 
| 150 || [10.0.0+] [[#ShouldSetGpuTimeSliceManually]] ||
 +
|-
 +
| 160 || [17.0.0+] [[#Cmd160]] ||
 
|}
 
|}
   Line 858: Line 906:  
==== ShouldSetGpuTimeSliceManually ====
 
==== ShouldSetGpuTimeSliceManually ====
 
No input, returns an output u8 bool.
 
No input, returns an output u8 bool.
 +
 +
==== Cmd160 ====
 +
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 881: Line 934:  
|-
 
|-
 
| 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 886: Line 941:     
=== IOverlayFunctions ===
 
=== IOverlayFunctions ===
 +
This is "nn::am::service::IOverlayFunctions".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 915: Line 972:  
|-
 
|-
 
| 31 || [10.0.0+] [[#IsHealthWarningRequired]]
 
| 31 || [10.0.0+] [[#IsHealthWarningRequired]]
 +
|-
 +
| 40 || [18.0.0+]
 +
|-
 +
| 41 || [18.0.0+]
 
|-
 
|-
 
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
 
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]]
Line 980: Line 1,041:     
== IApplicationProxy ==
 
== IApplicationProxy ==
 +
This is "nn::am::service::IApplicationProxy".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,004: Line 1,067:     
=== IApplicationFunctions ===
 
=== IApplicationFunctions ===
 +
This is "nn::am::service::IApplicationFunctions".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,050: Line 1,115:  
| 33 || [[#EndBlockingHomeButton]]
 
| 33 || [[#EndBlockingHomeButton]]
 
|-
 
|-
| 34 || [10.0.0+] [[#SelectApplicationLicense]]
+
| 34 || [10.0.0-15.0.1] [[#SelectApplicationLicense]]
 
|-
 
|-
 
| 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]]
 
| 35 || [11.0.0+] [[#GetDeviceSaveDataSizeMax]]
Line 1,284: Line 1,349:     
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.
Line 1,405: Line 1,472:     
==== 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,415: Line 1,482:     
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.
    
=== IMovieMaker ===
 
=== IMovieMaker ===
 +
This is "nn::am::service::IMovieMaker".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,433: Line 1,504:     
== ILibraryAppletCreator ==
 
== ILibraryAppletCreator ==
 +
This is "nn::am::service::ILibraryAppletCreator".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,485: Line 1,558:     
=== ILibraryAppletAccessor ===
 
=== ILibraryAppletAccessor ===
 +
This is "nn::am::service::ILibraryAppletAccessor".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,577: Line 1,652:     
== ICommonStateGetter ==
 
== ICommonStateGetter ==
 +
This is "nn::am::service::ICommonStateGetter".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,680: Line 1,757:  
|-
 
|-
 
| 503 || [12.0.0+] IsDisablingSleepSuppressed
 
| 503 || [12.0.0+] IsDisablingSleepSuppressed
 +
|-
 +
| 600 || [17.0.0+] OpenNamedChannelAsChild
 
|-
 
|-
 
| 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]]
 
| 900 || [11.0.0+] [[#SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled]]
 +
|-
 +
| 910 || [17.0.0+] GetLaunchRequiredTick
 
|}
 
|}
   Line 1,872: Line 1,953:  
=== 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,922: Line 2,005:     
== ISelfController ==
 
== ISelfController ==
 +
This is "nn::am::service::ISelfController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,253: Line 2,338:     
== IStorageChannel ==
 
== IStorageChannel ==
Added with [[7.0.0]].
+
This is "nn::am::service::IStorageChannel".
 +
 
 +
This was added with [7.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,271: Line 2,358:     
== IWindowController ==
 
== IWindowController ==
 +
This is "nn::am::service::IWindowController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,327: Line 2,416:     
== IAudioController ==
 
== IAudioController ==
 +
This is "nn::am::service::IAudioController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,362: Line 2,453:     
== IDisplayController ==
 
== IDisplayController ==
 +
This is "nn::am::service::IDisplayController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,564: Line 2,657:     
== ISystemAppletControllerForDebug ==
 
== ISystemAppletControllerForDebug ==
 +
This is "nn::am::service::ISystemAppletControllerForDebug".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,587: Line 2,682:     
== IProcessWindingController ==
 
== IProcessWindingController ==
 +
This is "nn::am::service::IProcessWindingController".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,637: Line 2,734:     
== IDebugFunctions ==
 
== IDebugFunctions ==
 +
This is "nn::am::service::IDebugFunctions".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,654: Line 2,753:  
|-
 
|-
 
| 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]]
 
| 40 || [6.0.0+] [[#GetAppletResourceUsageInfo]]
 +
|-
 +
| 50 || [15.0.0+] AddSystemProgramIdAndAppletIdForDebug
 +
|-
 +
| 51 || [16.0.0+] AddOperationConfirmedLibraryAppletIdForDebug
 +
|-
 +
| 52 || [17.0.0+] GetProgramIdFromAppletIdForDebug
 +
|-
 +
| 53 || [18.0.0+]
 
|-
 
|-
 
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]]
 
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]]
Line 2,676: Line 2,783:  
|-
 
|-
 
| 140 || [14.0.0+] RestrictPowerOperationForSecureLaunchModeForDebug
 
| 140 || [14.0.0+] RestrictPowerOperationForSecureLaunchModeForDebug
 +
|-
 +
| 200 || [15.0.0+] CreateFloatingLibraryAppletAccepterForDebug
 +
|-
 +
| 300 || [16.0.0+] TerminateAllRunningApplicationsForDebug
 +
|-
 +
| 410 || [18.0.0+]
 +
|-
 +
| 411 || [18.0.0+]
 +
|-
 +
| 412 || [18.0.0+]
 
|-
 
|-
 
| 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent
 
| 900 || [12.0.0+] GetGrcProcessLaunchedSystemEvent
Line 2,757: Line 2,874:     
== IStorage ==
 
== IStorage ==
 +
This is "nn::am::service::IStorage".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,771: Line 2,890:     
== IStorageAccessor ==
 
== IStorageAccessor ==
 +
This is "nn::am::service::IStorageAccessor".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,783: Line 2,904:     
== ITransferStorageAccessor ==
 
== ITransferStorageAccessor ==
 +
This is "nn::am::service::ITransferStorageAccessor".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,920: Line 3,043:     
== ICradleFirmwareUpdater ==
 
== ICradleFirmwareUpdater ==
This is "nn::omm::detail::ICradleFirmwareUpdater".
+
This is "nn::am::service::ICradleFirmwareUpdater".
    
This was added with [12.0.0+].
 
This was added with [12.0.0+].
Line 3,033: Line 3,156:  
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]].
   −
= Library Applets =
+
= apm =
This section documents library applet launching.
+
This is "nn::am::service::IApmManager".
   −
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.
+
This was added with [8.0.0+].
   −
Once the applet finishes running successfully, [[#ILibraryAppletAccessor]] PopOutData can be used to get the applet-specific [[#IStorage]] containing the applet output data.
+
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenSession]]
 +
|-
 +
| 1 || GetPerformanceMode
 +
|-
 +
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
 +
|}
   −
== CommonArguments ==
+
== OpenSession ==
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.
+
Returns an [[#ISession]].
   −
This struct is 0x20-bytes.
+
== IsCpuOverclockEnabled ==
 +
No input, returns an output u8 bool.
   −
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.
+
== ISession ==
 +
This is "nn::am::service::IApmSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || SetPerformanceConfiguration
 +
|-
 +
| 1 || GetPerformanceConfiguration
 +
|-
 +
| 2 || [8.0.0+] SetCpuOverclockEnabled
 +
|}
 +
 
 +
= Library Applets =
 +
This section documents library applet launching.
 +
 
 +
Before starting the applet, [[#IStorage]]s are [[#ILibraryAppletCreator|created]] and written, then passed to [[#ILibraryAppletAccessor]] PushInData. The [[#IStorage]] session is closed afterwards. The first [[#IStorage]] is [[#CommonArguments]], followed by any applet-specific [[#IStorage]]s.
 +
 
 +
Once the applet finishes running successfully, [[#ILibraryAppletAccessor]] PopOutData can be used to get the applet-specific [[#IStorage]] containing the applet output data.
 +
 
 +
== CommonArguments ==
 +
The first [[#CreateStorage|IStorage]] passed to applets should contain the common library applet arguments. This is populated by <code>nn::la::CommonArgumentsWriter</code> and has the following format.
 +
 
 +
This struct is 0x20-bytes.
 +
 
 +
Official sw handles the first 8-bytes separately, which is a header. With CommonArguments version 0x0, the header is 4-bytes, while starting with version 0x1 it's 8-bytes.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,189: Line 3,348:  
| 0100000000001038
 
| 0100000000001038
 
| [10.0.0+] LibraryAppletSample (sample)
 
| [10.0.0+] LibraryAppletSample (sample)
 +
|-
 +
| 0x22
 +
| 0100000000001007
 +
| [13.0.0+] LibraryAppletPromoteQualification (playerSelect)
 +
|-
 +
| 0x32
 +
| 010000000000100F
 +
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]]
 +
|-
 +
| 0x33
 +
| 010000000000100F
 +
| [17.0.0+] [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]]
 +
|-
 +
| 0x35
 +
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
 +
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] )
 +
|-
 +
| 0x36
 +
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
 +
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] )
 +
|-
 +
| 0x37
 +
| [17.0.0+] 0100000000001010 ([16.0.0-16.1.0] 0100000000001042)
 +
| [17.0.0+] [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] ([16.0.0-16.1.0] )
 +
|-
 +
| 0x38
 +
| 0100000000001043
 +
| [16.0.0-16.1.0]
 +
|-
 +
| 0x50
 +
| 0100000000001007
 +
| [18.0.0+]
 +
|-
 +
| 0x51
 +
| 0100000000001007
 +
| [18.0.0+]
 
|-
 
|-
 
| 0x3E8
 
| 0x3E8
 
|  
 
|  
| [10.0.0+] DevlopmentTool
+
| [10.0.0-16.1.0] DevlopmentTool
 
|-
 
|-
 
| 0x3F1
 
| 0x3F1
 
| 010000000000D619
 
| 010000000000D619
| [10.0.0+] CombinationLA
+
| [10.0.0-16.1.0] CombinationLA
 
|-
 
|-
 
| 0x3F2
 
| 0x3F2
 
| 010000000000D610
 
| 010000000000D610
| [10.0.0+] AeSystemApplet
+
| [10.0.0-16.1.0] AeSystemApplet
 
|-
 
|-
 
| 0x3F3
 
| 0x3F3
 
| 010000000000D611
 
| 010000000000D611
| [10.0.0+] AeOverlayApplet
+
| [10.0.0-16.1.0] AeOverlayApplet
 
|-
 
|-
 
| 0x3F4
 
| 0x3F4
 
| 010000000000D612
 
| 010000000000D612
| [10.0.0+] AeStarter
+
| [10.0.0-16.1.0] AeStarter
 
|-
 
|-
 
| 0x3F5
 
| 0x3F5
 
| 010000000000D613
 
| 010000000000D613
| [10.0.0+] AeLibraryAppletAlone
+
| [10.0.0-16.1.0] AeLibraryAppletAlone
 
|-
 
|-
 
| 0x3F6
 
| 0x3F6
 
| 010000000000D614
 
| 010000000000D614
| [10.0.0+] AeLibraryApplet1
+
| [10.0.0-16.1.0] AeLibraryApplet1
 
|-
 
|-
 
| 0x3F7
 
| 0x3F7
 
| 010000000000D615
 
| 010000000000D615
| [10.0.0+] AeLibraryApplet2
+
| [10.0.0-16.1.0] AeLibraryApplet2
 
|-
 
|-
 
| 0x3F8
 
| 0x3F8
 
| 010000000000D616
 
| 010000000000D616
| [10.0.0+] AeLibraryApplet3
+
| [10.0.0-16.1.0] AeLibraryApplet3
 
|-
 
|-
 
| 0x3F9
 
| 0x3F9
 
| 010000000000D617
 
| 010000000000D617
| [10.0.0+] AeLibraryApplet4
+
| [10.0.0-16.1.0] AeLibraryApplet4
 
|-
 
|-
 
| 0x3FA
 
| 0x3FA
 
| 010000000000D60A
 
| 010000000000D60A
| [10.0.0+] AppletISA
+
| [10.0.0-16.1.0] AppletISA
 
|-
 
|-
 
| 0x3FB
 
| 0x3FB
 
| 010000000000D60B
 
| 010000000000D60B
| [10.0.0+] AppletIOA
+
| [10.0.0-16.1.0] AppletIOA
 
|-
 
|-
 
| 0x3FC
 
| 0x3FC
 
| 010000000000D60C
 
| 010000000000D60C
| [10.0.0+] AppletISTA
+
| [10.0.0-16.1.0] AppletISTA
 
|-
 
|-
 
| 0x3FD
 
| 0x3FD
 
| 010000000000D60D
 
| 010000000000D60D
| [10.0.0+] AppletILA1
+
| [10.0.0-16.1.0] AppletILA1
 
|-
 
|-
 
| 0x3FE
 
| 0x3FE
 
| 010000000000D60E
 
| 010000000000D60E
| [10.0.0+] AppletILA2
+
| [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
 +
|}
 +
 
 
= LibraryAppletMode =
 
= LibraryAppletMode =
 
This is "nn::applet::LibraryAppletMode".
 
This is "nn::applet::LibraryAppletMode".
Line 3,292: Line 3,551:  
|-
 
|-
 
| 6 || ApplicationExited
 
| 6 || ApplicationExited
 +
|-
 +
| 7 ||
 
|-
 
|-
 
| 15 || [[#FocusState|FocusStateChanged]]
 
| 15 || [[#FocusState|FocusStateChanged]]
Line 3,324: Line 3,585:  
|-
 
|-
 
| 33 || SdCardRemoved
 
| 33 || SdCardRemoved
 +
|-
 +
| 34 ||
 
|-
 
|-
 
| 50 || LaunchApplicationRequested
 
| 50 || LaunchApplicationRequested
Line 3,334: Line 3,597:  
|-
 
|-
 
| 57 || ForceHideApplicationLogo
 
| 57 || ForceHideApplicationLogo
 +
|-
 +
| 58 ||
 +
|-
 +
| 59 ||
 
|-
 
|-
 
| 60 || FloatingApplicationDetected
 
| 60 || FloatingApplicationDetected
 +
|-
 +
| 61 || [7.0.0+] PerformanceConfigurationChanged
 +
|-
 +
| 70 ||
 +
|-
 +
| 71 ||
 +
|-
 +
| 72 ||
 +
|-
 +
| 73 ||
 +
|-
 +
| 75 ||
 +
|-
 +
| 80 ||
 +
|-
 +
| 81 ||
 +
|-
 +
| 82 ||
 +
|-
 +
| 83 ||
 +
|-
 +
| 85 ||
 +
|-
 +
| 86 ||
 
|-
 
|-
 
| 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]]
 
| 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]]
Line 3,342: Line 3,633:  
|-
 
|-
 
| 93 || AlbumRecordingSaved
 
| 93 || AlbumRecordingSaved
 +
|-
 +
| 94 ||
 +
|-
 +
| 100 ||
 +
|-
 +
| 101 ||
 +
|-
 +
| 110 || [14.0.0+] DetectShortPressingCaptureButtonForApplet
 +
|-
 +
| 111 || [14.0.0+] DetectLongPressingCaptureButtonForApplet
 +
|-
 +
| 1000 ||
 
|}
 
|}
   Line 3,524: Line 3,827:     
= AppletAttribute =
 
= AppletAttribute =
This is "nn::am::AppletAttribute". This struct is 0x8-bytes.
+
This is "nn::am::AppletAttribute". This struct is 0x80 bytes.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,669: Line 3,972:  
= 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]]