Changes

Jump to navigation Jump to search
8,575 bytes added ,  21:13, 15 October 2023
no edit summary
Line 4: Line 4:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 0 || [[#GetApplicationLaunchProperty|GetApplicationLaunchProperty]]
 +
|-
 +
| 1 || [10.0.0+] [[#GetApplicationControlProperty|GetApplicationControlProperty]] ([1.0.0-9.2.0] [[#GetApplicationLaunchPropertyWithApplicationId|GetApplicationLaunchPropertyWithApplicationId]])
 +
|-
 +
| 2 || [10.0.0+] [[#GetApplicationProcessProperty|GetApplicationProcessProperty]] ([1.0.0-9.2.0] [[#GetApplicationControlProperty|GetApplicationControlProperty]])
 +
|-
 +
| 3 || [10.0.0+] [[#GetApplicationInstanceId|GetApplicationInstanceId]] ([1.0.0-9.2.0] [[#GetApplicationControlPropertyWithApplicationId|GetApplicationControlPropertyWithApplicationId]])
 
|-
 
|-
| 0 || GetApplicationLaunchProperty || Takes an input u64 ProcessId, returns an [[#ApplicationLaunchProperty]]
+
| 4 || [10.0.0+] [[#GetApplicationInstanceUnregistrationNotifier|GetApplicationInstanceUnregistrationNotifier]]
 
|-
 
|-
| 1 || GetApplicationLaunchPropertyWithApplicationId || Takes an input u64 TitleId, returns an [[#ApplicationLaunchProperty]]
+
| 5 || [10.0.0+] [[#ListApplicationInstanceId|ListApplicationInstanceId]]
 
|-
 
|-
| 2 || GetApplicationControlProperty || Takes an input u64 ProcessId, returns a type-0x16 buffer filled with the contents of [[NACP_Format|control.nacp]]
+
| 6 || [10.0.0+] [[#GetMicroApplicationInstanceId|GetMicroApplicationInstanceId]]
 
|-
 
|-
| 3 || GetApplicationControlPropertyWithApplicationId || Takes an input u64 TitleId, returns a type-0x16 buffer filled with the contents of [[NACP_Format|control.nacp]]
+
| 7 || [10.0.0+] [[#GetApplicationCertificate|GetApplicationCertificate]]
 
|-
 
|-
| 9998 || [9.0.0+] ||
+
| 9998 || [9.0.0-9.2.0] [[#GetPreomiaApplicationLaunchProperty|GetPreomiaApplicationLaunchProperty]]
 
|-
 
|-
| 9999 || [9.0.0+] ||
+
| 9999 || [9.0.0-9.2.0] [[#GetPreomiaApplicationControlProperty|GetPreomiaApplicationControlProperty]]
 
|}
 
|}
 +
 +
== GetApplicationLaunchProperty ==
 +
Takes an input u64 ProcessId. Returns an [[#ApplicationLaunchProperty]].
 +
 +
[10.0.0+] Now takes an input [[#ApplicationInstanceId]] instead of ProcessId.
 +
 +
== GetApplicationLaunchPropertyWithApplicationId ==
 +
Takes an input u64 ApplicationId. Returns an [[#ApplicationLaunchProperty]].
 +
 +
== GetApplicationControlProperty ==
 +
Takes an input u64 ProcessId and a type-0x16 output buffer containing an [[NACP|ApplicationControlProperty]]. No output.
 +
 +
[10.0.0+] Now takes an input [[#ApplicationInstanceId]] instead of ProcessId.
 +
 +
== GetApplicationControlPropertyWithApplicationId ==
 +
Takes an input u64 ApplicationId and a type-0x16 output buffer containing an [[NACP|ApplicationControlProperty]]. No output.
 +
 +
== GetApplicationProcessProperty ==
 +
Takes an input [[#ApplicationInstanceId]]. Returns an [[#ApplicationProcessProperty]].
 +
 +
== GetApplicationInstanceId ==
 +
Takes an input u64 ProcessId. Returns an [[#ApplicationInstanceId]].
 +
 +
== GetApplicationInstanceUnregistrationNotifier ==
 +
No input. Returns an [[#IUnregistrationNotifier]].
 +
 +
== ListApplicationInstanceId ==
 +
Takes a type-0x6 output buffer containing an array of [[#ApplicationInstanceId]]. Returns an s32 '''Count'''.
 +
 +
== GetMicroApplicationInstanceId ==
 +
Same as [[#GetApplicationInstanceId]].
 +
 +
== GetApplicationCertificate ==
 +
Takes an input [[#ApplicationInstanceId]] and a type-0x16 output buffer containing an [[#ApplicationCertificate]]. No output.
 +
 +
== GetPreomiaApplicationLaunchProperty ==
 +
Same as [[#GetApplicationLaunchProperty]].
 +
 +
== GetPreomiaApplicationControlProperty ==
 +
Same as [[#GetApplicationControlProperty]].
 +
 +
== IUnregistrationNotifier ==
 +
This is "nn::arp::detail::IUnregistrationNotifier".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetReadableHandle|GetReadableHandle]]
 +
|}
 +
 +
=== GetReadableHandle ===
 +
No input. Returns an output readable Event handle.
    
= arp:w =
 
= arp:w =
Line 24: Line 85:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 0 || [[#AcquireRegistrar|AcquireRegistrar]]
 +
|-
 +
| 1 || [10.0.0+] [[#UnregisterApplicationInstance|UnregisterApplicationInstance]] ([1.0.0-9.2.0] DeleteProperties)
 
|-
 
|-
| 0 || AcquireRegistrar || Returns an [[#IRegistrar]]
+
| 2 || [15.0.0+] [[#AcquireApplicationProcessPropertyUpdater|AcquireApplicationProcessPropertyUpdater]] ([10.0.0-14.1.2] [[#AcquireUpdater|AcquireUpdater]])
 
|-
 
|-
| 1 || DeleteProperties || Takes an input u64 unknown
+
| 3 || [15.0.0+] [[#AcquireApplicationCertificateUpdater|AcquireApplicationCertificateUpdater]]
 
|}
 
|}
 +
 +
== AcquireRegistrar ==
 +
No input. Returns an [[#IRegistrar]].
 +
 +
== UnregisterApplicationInstance ==
 +
Takes an input [[#ApplicationInstanceId]]. No output.
 +
 +
== AcquireUpdater ==
 +
Takes an input [[#ApplicationInstanceId]]. Returns an [[#IUpdater]].
 +
 +
== AcquireApplicationProcessPropertyUpdater ==
 +
Takes an input [[#ApplicationInstanceId]]. Returns an [[#IUpdater]].
 +
 +
== AcquireApplicationCertificateUpdater ==
 +
Takes an input [[#ApplicationInstanceId]]. Returns an [[#IUpdater]].
    
== IRegistrar ==
 
== IRegistrar ==
Line 36: Line 116:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 0 || [[#Issue|Issue]]
 +
|-
 +
| 1 || [[#SetApplicationLaunchProperty|SetApplicationLaunchProperty]]
 +
|-
 +
| 2 || [[#SetApplicationControlProperty|SetApplicationControlProperty]]
 +
|}
 +
 
 +
=== Issue ===
 +
No input. Returns an output [[#ApplicationInstanceId]].
 +
 
 +
=== SetApplicationLaunchProperty ===
 +
Takes an input [[#ApplicationLaunchProperty]]. No output.
 +
 
 +
=== SetApplicationControlProperty ===
 +
Takes a type-0x15 input buffer containing an [[NACP|ApplicationControlProperty]]. No output.
 +
 
 +
== IUpdater ==
 +
This is "nn::arp::detail::IUpdater".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Issue_2|Issue]]
 
|-
 
|-
| 0 || Issue || Takes an input u64 unknown
+
| 1 || [[#SetApplicationProcessProperty|SetApplicationProcessProperty]]
 
|-
 
|-
| 1 || SetApplicationLaunchProperty || Takes an input [[#ApplicationLaunchProperty]]
+
| 2 || [[#DeleteApplicationProcessProperty|DeleteApplicationProcessProperty]]
 
|-
 
|-
| 2 || SetApplicationControlProperty || Takes an input type-0x15 buffer filled with the contents of [[NACP_Format|control.nacp]]
+
| 3 || [[#SetApplicationCertificate|SetApplicationCertificate]]
 
|}
 
|}
 +
 +
=== Issue ===
 +
No input/output.
 +
 +
=== SetApplicationProcessProperty ===
 +
Takes an input u64 ProcessId and an input [[#ApplicationProcessProperty]]. No output.
 +
 +
=== DeleteApplicationProcessProperty ===
 +
No input/output.
 +
 +
=== SetApplicationCertificate ===
 +
Takes a type-0x15 input buffer containing an [[#ApplicationCertificate]]. No output.
    
= bgtc:t =
 
= bgtc:t =
 +
This is "nn::bgtc::ITaskService".
 +
 +
[11.0.0+] This is "nn::bgtc::ITaskServiceRoot".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 100 || [[#CreateTaskService]]
 +
|}
 +
 +
== CreateTaskService ==
 +
No input. Returns an [[#ITaskService]].
 +
 +
== ITaskService ==
 
This is "nn::bgtc::ITaskService".
 
This is "nn::bgtc::ITaskService".
   Line 74: Line 206:  
| 15 || SchedulePeriodicTask
 
| 15 || SchedulePeriodicTask
 
|-
 
|-
| 16 || [9.0.0+]
+
| 16 || [9.0.0+] ScheduleStrictTask
 
|-
 
|-
 
| 101 || [3.0.0+] GetOperationMode
 
| 101 || [3.0.0+] GetOperationMode
Line 81: Line 213:  
|-
 
|-
 
| 103 || [3.0.0+] WillStayHalfAwakeInsteadSleep
 
| 103 || [3.0.0+] WillStayHalfAwakeInsteadSleep
 +
|-
 +
| 200 || [12.0.0+] EnableStayHalfAwake
 
|}
 
|}
   Line 100: Line 234:  
| 5 || [3.0.0+] SetIsUsingSleepUnsupportedDevices
 
| 5 || [3.0.0+] SetIsUsingSleepUnsupportedDevices
 
|}
 
|}
 +
 +
[10.0.0+] NotifyEnteringHalfAwake now takes 1-byte of input.
    
= time:a, time:r, time:u =
 
= time:a, time:r, time:u =
Line 424: Line 560:     
= notif:s =
 
= notif:s =
This is "nn::notification::server::INotificationServicesForSystem".
+
This is "nn::notification::server::INotificationServices".
    
This was added with [9.0.0+].
 
This was added with [9.0.0+].
Line 442: Line 578:  
| 540 || [[#DeleteAlarmSetting]]
 
| 540 || [[#DeleteAlarmSetting]]
 
|-
 
|-
| 1000 ||  
+
| 1000 || [[#GetNotificationCount]]
 
|-
 
|-
| 1010 || [[#ListNotifications]]
+
| 1010 || ListNotifications
 
|-
 
|-
| 1020 || [[#DeleteNotification]]
+
| 1020 || DeleteNotification
 
|-
 
|-
| 1030 || [[#ClearNotifications]]
+
| 1030 || ClearNotifications
 
|-
 
|-
| 1040 ||  
+
| 1040 || [[#GetNotificationSendingNotifier]]
 
|-
 
|-
| 1500 || [[#SetPresentationSetting]]
+
| 1500 || SetNotificationPresentationSetting
 
|-
 
|-
| 1510 || [[#GetPresentationSetting]]
+
| 1510 || GetNotificationPresentationSetting
 
|-
 
|-
 
| 2000 || [[#GetAlarmSetting]]
 
| 2000 || [[#GetAlarmSetting]]
 
|-
 
|-
| 2001 ||
+
| 2001 || GetAlarmSettingWithApplicationParameter
 +
|-
 +
| 2010 || [[#SetAlarmSettingIsMuted]]
 +
|-
 +
| 2020 || [[#IsAlarmSettingDeletable]]
 +
|-
 +
| 8000 || RegisterAppletResourceUserId
 +
|-
 +
| 8010 || UnregisterAppletResourceUserId
 +
|-
 +
| 8999 || [10.0.0+] GetCurrentTime
 +
|-
 +
| 9000 || [[#GetAlarmSettingNextNotificationTime]]
 +
|}
 +
 
 +
== GetNotificationCount ==
 +
No input. Returns a total of 4-bytes of output.
 +
 
 +
== GetNotificationSendingNotifier ==
 +
No input. Returns an output [[#INotificationSystemEventAccessor]].
 +
 
 +
== INotificationSystemEventAccessor ==
 +
This is "nn::notification::server::INotificationSystemEventAccessor".
 +
 
 +
This was added with [9.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSystemEvent
 +
|}
 +
 
 +
== GetAlarmSetting ==
 +
Takes an input [[#AlarmSettingId]]. Returns an [[#AlarmSetting]].
 +
 
 +
== SetAlarmSettingIsMuted ==
 +
Takes an input [[#AlarmSettingId]] and a bool. No output.
 +
 
 +
== IsAlarmSettingDeletable ==
 +
Takes an input [[#AlarmSettingId]]. Returns a bool.
 +
 
 +
== GetAlarmSettingNextNotificationTime ==
 +
Takes an input [[#AlarmSettingId]]. Returns an u8 '''IsAlarmScheduled''' and a [[Glue_services#PosixTime|PosixTime]] for the next scheduled alarm.
 +
 
 +
= ectx:w =
 +
This is "nn::err::context::IWriterForSystem".
 +
 
 +
This was added with [11.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 
|-
 
|-
| 2010 || [[#MuteAlarmSetting]]
+
| 0 || [[#CreateContextRegistrar]]
 
|-
 
|-
| 2020 || [[#IsAlarmSettingReady]]
+
| 1 || CommitContext
 
|-
 
|-
| 8000 ||
+
| 2 || RemoveContext
 +
|}
 +
 
 +
== CreateContextRegistrar ==
 +
No input. Returns an [[#IContextRegistrar]].
 +
 
 +
== IContextRegistrar ==
 +
This is "nn::err::context::IContextRegistrar".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 8010 ||
+
! Cmd || Name
 
|-
 
|-
| 9000 || [[#GetNextAlarm]]
+
| 0 || Complete
 
|}
 
|}
   −
== Cmd1000 ==
+
= ectx:r =
No input, returns a total of 4-bytes of output.
+
This is "nn::err::context::IReaderForSystem".
   −
== ListNotifications ==
+
This was added with [11.0.0+].  
Unofficial name.
     −
== DeleteNotification ==
+
{| class="wikitable" border="1"
Unofficial name.
+
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetContextInfo
 +
|-
 +
| 1 || PullContext
 +
|-
 +
| 2 || ListContextDescriptorWithResultForDebug
 +
|}
 +
 
 +
= ectx:aw =
 +
This is "nn::err::context::IWriterForApplication".
 +
 
 +
This was added with [11.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#CreateContextRegistrar]]
 +
|-
 +
| 1 || CommitContext
 +
|}
   −
== ClearNotifications ==
+
= pl:u =
Unofficial name.
+
This is "nn::pl::sharedresource::detail::IPlatformSharedResourceManager".
   −
No input/output.
+
This was added with [16.0.0+].
   −
== Cmd1040 ==
+
This has max_sessions 5.
No input, returns an output [[#IUnknown0]].
     −
== IUnknown0 ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||  
+
| 0 || [[#RequestLoad]]
 +
|-
 +
| 1 || [[#GetLoadState]]
 +
|-
 +
| 2 || [[#GetSize]]
 +
|-
 +
| 3 || [[#GetSharedMemoryAddressOffset]]
 +
|-
 +
| 4 || [[#GetSharedMemoryNativeHandle]]
 +
|-
 +
| 5 || [[#GetSharedFontInOrderOfPriority]]
 +
|-
 +
| 6 || GetSharedFontInOrderOfPriorityForSystem
 +
|}
 +
 
 +
== RequestLoad ==
 +
Takes a [[#SharedFontType]] (uint32), no output.
 +
 
 +
== GetLoadState ==
 +
Takes a [[#SharedFontType]] (uint32), returns the [[#LoadState]] (uint32).
 +
 
 +
=== LoadState ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description
 +
|-
 +
| 0x00 || Loading
 +
|-
 +
| 0x01 || Loaded
 
|}
 
|}
   −
This was added with [9.0.0+].
+
== GetSize ==
 +
Takes a [[#SharedFontType]] (uint32), returns the Font Size (uint32).
   −
Cmd0: no input, returns an output handle.
+
== GetSharedMemoryAddressOffset ==
 +
Takes a [[#SharedFontType]] (uint32), returns the offset (uint32) to the Font Address.
   −
== SetPresentationSetting ==
+
== GetSharedMemoryNativeHandle ==
Unofficial name.
+
No input, returns an output SharedMemory handle.
   −
== GetPresentationSetting ==
+
User-processes map this SharedMemory with size=0x1100000 and permissions=R--.
Unofficial name.
     −
== GetAlarmSetting ==
+
Font data is TTF, located at the offset returned by [[#GetSharedMemoryAddressOffset]].
Unofficial name.
     −
Takes an input [[#AlarmSettingId]]. Returns an [[#AlarmSetting]].
+
== GetSharedFontInOrderOfPriority ==
 +
Takes an input u64 [[Settings_services#LanguageCode|LanguageCode]] and 3 type-0x6 output buffers, returns an output u8 and u32. The u8 is a bool to specify if the fonts are loaded or not and the u32 is the font count.
 +
The first buffer contains a list of [[#SharedFontType|Shared font types]], the second buffer contains the font offsets and the final buffer contains the font sizes.
 +
The buffers are an array of u32s which specify information about a specific font. Buffer1[n] is related to Buffer2[n] and Buffer3[n].
 +
Example: Font index 0s offset is at Buffer2[0], size is at Buffer3[0].
 +
The fonts are relative to the shared memory created by [[#GetSharedFontSharedMemoryHandle]]
   −
== MuteAlarmSetting ==
+
== SharedFontType ==
Unofficial name.
+
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description
 +
|-
 +
| 0x00 || Japan, US and Europe (Standard)
 +
|-
 +
| 0x01 || Chinese Simplified
 +
|-
 +
| 0x02 || Extended Chinese Simplified
 +
|-
 +
| 0x03 || Chinese Traditional
 +
|-
 +
| 0x04 || Korean (Hangul)
 +
|-
 +
| 0x05 || Nintendo Extended
 +
|}
   −
Takes an input [[#AlarmSettingId]] and a bool.
+
* Nintendo Extended: Contains Nintendo-specific characters, including HID buttons, HID controller styles, applet icons, Wii(U) icons,  etc.
   −
== IsAlarmSettingReady ==
+
= ApplicationInstanceId =
Unofficial name.
+
This is "nn::arp::ApplicationInstanceId".
   −
Takes an input [[#AlarmSettingId]]. Returns a bool.
+
This is an u64 ID bound to an application instance.  
   −
== GetNextAlarm ==
+
= ApplicationKind =
Unofficial name.
+
This is "nn::arp::ApplicationKind".
   −
Takes an input [[#AlarmSettingId]]. Returns an u8 '''IsAlarmScheduled''' and a [[Glue_services#PosixTime|PosixTime]] for the next scheduled alarm.
+
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Application
 +
|-
 +
| 1 || MicroApplication
 +
|}
    
= ApplicationLaunchProperty =
 
= ApplicationLaunchProperty =
Total size is 0x10 bytes.
+
This is "nn::arp::ApplicationLaunchProperty".
 +
 
 +
This is a 0x10-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 537: Line 811:  
| 0x00
 
| 0x00
 
| 0x08
 
| 0x08
| Title ID
+
| [[NCM_services#ProgramId|Id]]
 
|-
 
|-
 
| 0x08
 
| 0x08
Line 545: Line 819:  
| 0x0C
 
| 0x0C
 
| 0x01
 
| 0x01
| Base Game [[Filesystem_services#StorageId|Storage Id]]
+
| [[Filesystem_services#StorageId|Storage]]
 
|-
 
|-
 
| 0x0D
 
| 0x0D
 
| 0x01
 
| 0x01
| Update [[Filesystem_services#StorageId|Storage Id]]
+
| [[Filesystem_services#StorageId|PatchStorage]]
 
|-
 
|-
 
| 0x0E
 
| 0x0E
| 0x02
+
| 0x01
| Padding
+
| [[#ApplicationKind|Kind]]
 +
|-
 +
| 0x0F
 +
| 0x01
 +
| Reserved
 +
|}
 +
 
 +
= ApplicationProcessProperty =
 +
This is "nn::arp::ApplicationProcessProperty".
 +
 
 +
This is a 0x1-byte struct.
 +
 
 +
[17.0.0+] This is a 0x10-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x01
 +
| ProgramIndex
 +
|-
 +
| 0x01
 +
| 0x0F
 +
|  
 
|}
 
|}
 +
 +
= ApplicationCertificate =
 +
This is "nn::arp::ApplicationCertificate".
 +
 +
This is a 0x528-byte struct.
    
= AlarmSettingId =
 
= AlarmSettingId =

Navigation menu