Changes

6,451 bytes added ,  00:37, 24 July 2023
m
Line 1: Line 1:  
[[Category:Services]]
 
[[Category:Services]]
The NS ('''N'''intendo User Interface '''S'''hell) system module is the first module launched from a CTR-NAND title after the [[FIRM]] processes are loaded. This module is launched by the pm process, with the titleID loaded from NS state(hard-coded TID initialized during applet TID-array initialization). NS first launches [[ErrDisp]], then the menu. On retail the menu TID is loaded from NS state, while on dev/debug the menu TID is loaded from [[Config_Savegame|config]]. On dev-units if the menu TID block doesn't exist in [[Config_Savegame|config]], NS will attempt to launch the alternate menu instead. The TID of the launched menu is then written to [[Configuration Memory|ACTIVEMENUTID]]. NS uses [[PMApp:LaunchTitle|pm:app]] to launch titles.
+
The NS ('''N'''intendo User Interface '''S'''hell) system module is the first module launched from a CTR-NAND title after the [[FIRM]] processes are loaded (also see [[Bootloader]]). This module is launched by the pm process, with the titleID loaded from NS state(hard-coded TID initialized during applet TID-array initialization). NS first launches [[ErrDisp]], then the menu. On retail the menu TID is loaded from NS state, while on dev/debug the menu TID is loaded from [[Config_Savegame|config]]. On dev-units if the menu TID block doesn't exist in [[Config_Savegame|config]], NS will attempt to launch the alternate menu instead. The TID of the launched menu is then written to [[Configuration Memory|ACTIVEMENUTID]]. NS uses [[PMApp:LaunchTitle|pm:app]] to launch titles.
    
NS will not trigger the [[ErrDisp|fatal-error]] screen when launching the regular/alternate menu fails.
 
NS will not trigger the [[ErrDisp|fatal-error]] screen when launching the regular/alternate menu fails.
Line 36: Line 36:  
| [[NSS:LaunchTitle|LaunchTitle]]
 
| [[NSS:LaunchTitle|LaunchTitle]]
 
|-
 
|-
| 0x0003....
+
| 0x00030000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| Wrapper for [[Process_Manager_Services|PMApp]] command 0x00030080.
+
| [[NSS:TerminateApplication|TerminateApplication]]
 
|-
 
|-
| 0x0004....
+
| 0x00040040
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| Wrapper for [[Process_Manager_Services|PMApp]] command 0x000500C0.
+
| [[NSS:TerminateProcess|TerminateProcess]]
 
|-
 
|-
 
| 0x000500C0
 
| 0x000500C0
Line 50: Line 50:  
| 0x00060042
 
| 0x00060042
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| [[NSS:SetFIRMParams4A0|SetFIRMParams4A0]]
+
| [[NSS:SetWirelessRebootInfo|SetWirelessRebootInfo]]
 
|-
 
|-
 
| 0x00070042
 
| 0x00070042
Line 58: Line 58:  
| 0x00080000
 
| 0x00080000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| This shuts down the gamecard system update interface: the shared memory is unmapped, the CFA archive is closed, state is cleared, etc.
+
| [[NSS:CardUpdateShutdown|CardUpdateShutdown]]
 
|-
 
|-
| 0x0009....
+
| 0x00090000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| Gamecard system update related.
 
| Gamecard system update related.
 
|-
 
|-
| 0x000A....
+
| 0x000A0000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| Gamecard system update related.
 
| Gamecard system update related.
 
|-
 
|-
| 0x000B....
+
| 0x000B0000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| Gamecard system update related.
 
| Gamecard system update related.
 
|-
 
|-
| 0x000C....
+
| 0x000C0000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| Gamecard system update related.
 
| Gamecard system update related.
Line 78: Line 78:  
| 0x000D0140
 
| 0x000D0140
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| [[NSS:SetFIRMParams4B0|SetFIRMParams4B0]]
+
| [[NSS:SetTWLBannerHMAC|SetTWLBannerHMAC]]
 
|-
 
|-
| 0x000E....
+
| 0x000E0000
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| Wrapper for "ptm:sysm" service command 0x040700C0.
+
| [[NSS:ShutdownAsync|ShutdownAsync]]
 
|-
 
|-
 
| 0x000F0000
 
| 0x000F0000
Line 92: Line 92:  
| [[NSS:RebootSystem|RebootSystem]]
 
| [[NSS:RebootSystem|RebootSystem]]
 
|-
 
|-
| 0x0011....
+
| 0x00110100
 
| [[1.0.0-0]] - [[2.0.0-2]]
 
| [[1.0.0-0]] - [[2.0.0-2]]
| [[NSS:TerminateProcessTID|TerminateProcessTID]]
+
| [[NSS:TerminateTitle|TerminateTitle]]
 
|-
 
|-
| 0x0012....
+
| 0x001200C0
 
| ?
 
| ?
| Uses pm:app cmdA&B
+
| [[NSS:SetApplicationCpuTimeLimit|SetApplicationCpuTimeLimit]]
 
|-
 
|-
| 0x0013....
+
| 0x00130000
 
| ?
 
| ?
 
| ?
 
| ?
 
|-
 
|-
| 0x0014....
+
| 0x00140042
 
| ?
 
| ?
 
| ?
 
| ?
Line 110: Line 110:  
| 0x00150140
 
| 0x00150140
 
| ?
 
| ?
| [[NSS:LaunchApplication|LaunchApplication]] : unlike LaunchTitle, this will do a "proper" app launch, using the update title if present. It seems to set proper internal states, like [[APT:PrepareToStartApplication]] and [[APT:StartApplication]] would.
+
| [[NSS:LaunchApplication|LaunchApplication]]
 
|-
 
|-
 
| 0x00160000
 
| 0x00160000
 
| [[8.0.0-18]]
 
| [[8.0.0-18]]
| This triggers a hw-reboot.
+
| [[NSS:RebootSystemClean|RebootSystemClean]]
 
|}
 
|}
    
The maximum sessions that can be used with this service is two, therefore only two processes can use this service at the same time.
 
The maximum sessions that can be used with this service is two, therefore only two processes can use this service at the same time.
   −
=NS Service "ns:p"=
+
=NS Power Service "ns:p"=
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Command Header
 +
!  Description
 +
|-
 +
| 0x00010040
 +
| [[NSP:RebootSystem|RebootSystem]]
 +
|-
 +
| 0x00020000
 +
| [[NSS:ShutdownAsync|ShutdownAsync]]
 +
|}
 +
 
 
This was added with [[3.0.0-5]]. The PTM sysmodule connects to this service, and syncs whenever [[PTM|ptm:s GetShellState()]] changes.
 
This was added with [[3.0.0-5]]. The PTM sysmodule connects to this service, and syncs whenever [[PTM|ptm:s GetShellState()]] changes.
    
=NS Service "ns:c"=
 
=NS Service "ns:c"=
This was added with [[5.0.0-11]], it's unknown what this is used for.
+
{| class="wikitable" border="1"
 +
|-
 +
!  Command Header
 +
!  Description
 +
|-
 +
| 0x00010100
 +
| [[NSC:LockSpecialContent|LockSpecialContent]]
 +
|-
 +
| 0x00020100
 +
| [[NSC:UnlockSpecialContent|UnlockSpecialContent]]
 +
|}
 +
 
 +
This was added with [[5.0.0-11]]. It is used by the Instruction Manual applet, and is likely related to triggering SD/Game Card removal errors when ejecting the media the manual is stored on.
    
=APT Services=
 
=APT Services=
Line 131: Line 155:  
!  Available since system version
 
!  Available since system version
 
!  Accessible with APT:U
 
!  Accessible with APT:U
 +
!  Accessible with APT:A
 
!  Description
 
!  Description
 
|-
 
|-
Line 136: Line 161:  
|  
 
|  
 
| Yes
 
| Yes
| GetLockHandle
+
| Yes
 +
| [[APT:GetLockHandle|GetLockHandle]]
 
|-
 
|-
 
| 0x00020080
 
| 0x00020080
 
|  
 
|  
| See [[APTU:Initialize|here]].
+
| See [[APT:Initialize|here]].
| [[APTU:Initialize|Initialize]]
+
| See [[APT:Initialize|here]].
 +
| [[APT:Initialize|Initialize]]
 
|-
 
|-
 
| 0x00030040
 
| 0x00030040
 
|  
 
|  
 
| Yes
 
| Yes
| Enable
+
| Yes
 +
| [[APT:Enable|Enable]]
 
|-
 
|-
 
| 0x00040040
 
| 0x00040040
 
|  
 
|  
 
| Yes
 
| Yes
| Finalize
+
| Yes
 +
| [[APT:Finalize|Finalize]]
 
|-
 
|-
 
| 0x00050040
 
| 0x00050040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:GetAppletManInfo|GetAppletManInfo]]
 
| [[APT:GetAppletManInfo|GetAppletManInfo]]
Line 160: Line 190:  
| 0x00060040
 
| 0x00060040
 
|  
 
|  
 +
| Yes (AppID != 0x300)
 
| Yes
 
| Yes
 
| [[APT:GetAppletInfo|GetAppletInfo]]
 
| [[APT:GetAppletInfo|GetAppletInfo]]
Line 166: Line 197:  
|  
 
|  
 
| Yes
 
| Yes
| GetLastSignaledAppletId
+
| Yes
 +
| [[APT:GetLastSignaledAppletId|GetLastSignaledAppletId]]
 
|-
 
|-
 
| 0x00080000
 
| 0x00080000
 
|  
 
|  
 
| Yes
 
| Yes
| CountRegisteredApplet
+
| Yes
 +
| [[APT:CountRegisteredApplet|CountRegisteredApplet]]
 
|-
 
|-
 
| 0x00090040
 
| 0x00090040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:IsRegistered|IsRegistered]]
 
| [[APT:IsRegistered|IsRegistered]]
Line 181: Line 215:  
|  
 
|  
 
| Yes
 
| Yes
| GetAttribute
+
| Yes
 +
| [[APT:GetAttribute|GetAttribute]]
 
|-
 
|-
 
| 0x000B0040
 
| 0x000B0040
 
|  
 
|  
 
| Yes
 
| Yes
| [[APTU:GetSignalType|InquireNotification]]
+
| Yes
 +
| [[APT:InquireNotification|InquireNotification]]
 
|-
 
|-
 
| 0x000C0104
 
| 0x000C0104
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:SendParameter|SendParameter]]
 
| [[APT:SendParameter|SendParameter]]
Line 195: Line 232:  
| 0x000D0080
 
| 0x000D0080
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:ReceiveParameter|ReceiveParameter]]
 
| [[APT:ReceiveParameter|ReceiveParameter]]
Line 200: Line 238:  
| 0x000E0080
 
| 0x000E0080
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:GlanceParameter|GlanceParameter]]
 
| [[APT:GlanceParameter|GlanceParameter]]
Line 205: Line 244:  
| 0x000F0100
 
| 0x000F0100
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:CancelParameter|CancelParameter]]
 
| [[APT:CancelParameter|CancelParameter]]
Line 211: Line 251:  
|  
 
|  
 
| Yes
 
| Yes
| DebugFunc
+
| Yes
 +
| [[APT:DebugFunc|DebugFunc]]
 
|-
 
|-
 
| 0x001100C0
 
| 0x001100C0
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:MapProgramIdForDebug|MapProgramIdForDebug]]
 
| [[APT:MapProgramIdForDebug|MapProgramIdForDebug]]
Line 221: Line 263:  
|  
 
|  
 
| Yes
 
| Yes
| SetHomeMenuAppletIdForDebug
+
| Yes
 +
| [[APT:SetHomeMenuAppletIdForDebug|SetHomeMenuAppletIdForDebug]]
 
|-
 
|-
 
| 0x00130000
 
| 0x00130000
 
|  
 
|  
 
| Yes
 
| Yes
| GetPreparationState
+
| Yes
 +
| [[APT:GetPreparationState|GetPreparationState]]
 
|-
 
|-
 
| 0x00140040
 
| 0x00140040
 
|  
 
|  
 
| Yes
 
| Yes
| SetPreparationState
+
| Yes
 +
| [[APT:SetPreparationState|SetPreparationState]]
 
|-
 
|-
 
| 0x00150140
 
| 0x00150140
 
|  
 
|  
 +
| No
 
| No
 
| No
 
| [[APT:PrepareToStartApplication|PrepareToStartApplication]]
 
| [[APT:PrepareToStartApplication|PrepareToStartApplication]]
Line 241: Line 287:  
|  
 
|  
 
| Yes
 
| Yes
| PreloadLibraryApplet
+
| Yes
 +
| [[APT:PreloadLibraryApplet|PreloadLibraryApplet]]
 
|-
 
|-
 
| 0x00170040
 
| 0x00170040
 
|  
 
|  
 
| Yes
 
| Yes
| FinishPreloadingLibraryApplet
+
| Yes
 +
| [[APT:FinishPreloadingLibraryApplet|FinishPreloadingLibraryApplet]]
 
|-
 
|-
 
| 0x00180040
 
| 0x00180040
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToStartLibraryApplet
+
| Yes
 +
| [[APT:PrepareToStartLibraryApplet|PrepareToStartLibraryApplet]]
 
|-
 
|-
 
| 0x00190040
 
| 0x00190040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:PrepareToStartSystemApplet|PrepareToStartSystemApplet]]
 
| [[APT:PrepareToStartSystemApplet|PrepareToStartSystemApplet]]
Line 261: Line 311:  
|  
 
|  
 
| Yes
 
| Yes
| PrepareToStartNewestHomeMenu
+
| Yes
 +
| [[APT:PrepareToStartNewestHomeMenu|PrepareToStartNewestHomeMenu]]
 
|-
 
|-
 
| 0x001B00C4
 
| 0x001B00C4
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:StartApplication|StartApplication]]
 
| [[APT:StartApplication|StartApplication]]
Line 271: Line 323:  
|  
 
|  
 
| Yes
 
| Yes
| WakeupApplication
+
| Yes
 +
| [[APT:WakeupApplication|WakeupApplication]]
 
|-
 
|-
 
| 0x001D0000
 
| 0x001D0000
 
|  
 
|  
 
| Yes
 
| Yes
| CancelApplication
+
| Yes
 +
| [[APT:CancelApplication|CancelApplication]]
 
|-
 
|-
 
| 0x001E0084
 
| 0x001E0084
 
|  
 
|  
 
| Yes
 
| Yes
| StartLibraryApplet
+
| Yes
 +
| [[APT:StartLibraryApplet|StartLibraryApplet]]
 
|-
 
|-
 
| 0x001F0084
 
| 0x001F0084
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:StartSystemApplet|StartSystemApplet]]
 
| [[APT:StartSystemApplet|StartSystemApplet]]
Line 290: Line 346:  
| 0x00200044
 
| 0x00200044
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:StartNewestHomeMenu|StartNewestHomeMenu]]
 
| [[APT:StartNewestHomeMenu|StartNewestHomeMenu]]
Line 296: Line 353:  
|  
 
|  
 
| No
 
| No
| OrderToCloseApplication
+
| No
 +
| [[APT:OrderToCloseApplication|OrderToCloseApplication]]
 
|-
 
|-
 
| 0x00220040
 
| 0x00220040
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToCloseApplication(bool isJumpToHome)
+
| Yes
 +
| [[APT:PrepareToCloseApplication|PrepareToCloseApplication]]
 
|-
 
|-
 
| 0x00230040
 
| 0x00230040
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToJumpToApplication
+
| Yes
 +
| [[APT:PrepareToJumpToApplication|PrepareToJumpToApplication]]
 
|-
 
|-
 
| 0x00240044
 
| 0x00240044
 
|  
 
|  
 
| Yes
 
| Yes
| JumpToApplication
+
| Yes
 +
| [[APT:JumpToApplication|JumpToApplication]]
 
|-
 
|-
 
| 0x002500C0
 
| 0x002500C0
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToCloseLibraryApplet
+
| Yes
 +
| [[APT:PrepareToCloseLibraryApplet|PrepareToCloseLibraryApplet]]
 
|-
 
|-
 
| 0x00260000
 
| 0x00260000
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToCloseSystemApplet
+
| Yes
 +
| [[APT:PrepareToCloseSystemApplet|PrepareToCloseSystemApplet]]
 
|-
 
|-
 
| 0x00270044
 
| 0x00270044
 
|  
 
|  
 
| Yes
 
| Yes
| CloseApplication
+
| Yes
 +
| [[APT:CloseApplication|CloseApplication]]
 
|-
 
|-
 
| 0x00280044
 
| 0x00280044
 
|  
 
|  
 
| Yes
 
| Yes
| CloseLibraryApplet
+
| Yes
 +
| [[APT:CloseLibraryApplet|CloseLibraryApplet]]
 
|-
 
|-
 
| 0x00290044
 
| 0x00290044
 
|  
 
|  
 
| Yes
 
| Yes
| CloseSystemApplet
+
| Yes
 +
| [[APT:CloseSystemApplet|CloseSystemApplet]]
 
|-
 
|-
 
| 0x002A0000
 
| 0x002A0000
 
|  
 
|  
 
| Yes
 
| Yes
| OrderToCloseSystemApplet
+
| Yes
 +
| [[APT:OrderToCloseSystemApplet|OrderToCloseSystemApplet]]
 
|-
 
|-
 
| 0x002B0000
 
| 0x002B0000
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToJumpToHomeMenu
+
| Yes
 +
| [[APT:PrepareToJumpToHomeMenu|PrepareToJumpToHomeMenu]]
 
|-
 
|-
 
| 0x002C0044
 
| 0x002C0044
 
|  
 
|  
 
| Yes
 
| Yes
| JumpToHomeMenu
+
| Yes
 +
| [[APT:JumpToHomeMenu|JumpToHomeMenu]]
 
|-
 
|-
 
| 0x002D0000
 
| 0x002D0000
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToLeaveHomeMenu
+
| Yes
 +
| [[APT:PrepareToLeaveHomeMenu|PrepareToLeaveHomeMenu]]
 
|-
 
|-
 
| 0x002E0044
 
| 0x002E0044
 
|  
 
|  
 
| Yes
 
| Yes
| LeaveHomeMenu
+
| Yes
 +
| [[APT:LeaveHomeMenu|LeaveHomeMenu]]
 
|-
 
|-
 
| 0x002F0040
 
| 0x002F0040
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToLeaveResidentApplet This is stubbed: this just returns 0.
+
| Yes
 +
| [[APT:PrepareToLeaveResidentApplet|PrepareToLeaveResidentApplet]]
 
|-
 
|-
 
| 0x00300044
 
| 0x00300044
 
|  
 
|  
 
| Yes
 
| Yes
| LeaveResidentApplet This is stubbed: this just returns 0 after verifying the cmd/translate headers.
+
| Yes
 +
| [[APT:LeaveResidentApplet|LeaveResidentApplet]]
 
|-
 
|-
 
| 0x00310100
 
| 0x00310100
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:PrepareToDoApplicationJump|PrepareToDoApplicationJump]]
 
| [[APT:PrepareToDoApplicationJump|PrepareToDoApplicationJump]]
Line 380: Line 454:  
| 0x00320084
 
| 0x00320084
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:DoApplicationJump|DoApplicationJump]]
 
| [[APT:DoApplicationJump|DoApplicationJump]]
Line 386: Line 461:  
|  
 
|  
 
| Yes
 
| Yes
| GetProgramIdOnApplicationJump
+
| Yes
 +
| [[APT:GetProgramIdOnApplicationJump|GetProgramIdOnApplicationJump]]
 
|-
 
|-
 
| 0x00340084
 
| 0x00340084
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:SendDeliverArg|SendDeliverArg]]
 
| [[APT:SendDeliverArg|SendDeliverArg]]
Line 396: Line 473:  
|  
 
|  
 
| Yes
 
| Yes
| ReceiveDeliverArg
+
| Yes
 +
| [[APT:ReceiveDeliverArg|ReceiveDeliverArg]]
 
|-
 
|-
 
| 0x00360040
 
| 0x00360040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:LoadSysMenuArg|LoadSysMenuArg]]
 
| [[APT:LoadSysMenuArg|LoadSysMenuArg]]
Line 405: Line 484:  
| 0x00370042
 
| 0x00370042
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:StoreSysMenuArg|StoreSysMenuArg]]
 
| [[APT:StoreSysMenuArg|StoreSysMenuArg]]
Line 411: Line 491:  
|  
 
|  
 
| Yes
 
| Yes
| PreloadResidentApplet This is stubbed: this just returns 0.
+
| Yes
 +
| [[APT:PreloadResidentApplet|PreloadResidentApplet]]
 
|-
 
|-
 
| 0x00390040
 
| 0x00390040
 
|  
 
|  
 
| Yes
 
| Yes
| PrepareToStartResidentApplet This is stubbed: this just returns 0.
+
| Yes
 +
| [[APT:PrepareToStartResidentApplet|PrepareToStartResidentApplet]]
 
|-
 
|-
 
| 0x003A0044
 
| 0x003A0044
 
|  
 
|  
 
| Yes
 
| Yes
| StartResidentApplet This is stubbed: this just returns 0 after verifying the cmd/translate headers.
+
| Yes
 +
| [[APT:StartResidentApplet|StartResidentApplet]]
 
|-
 
|-
 
| 0x003B0040
 
| 0x003B0040
 
|  
 
|  
 
| Yes
 
| Yes
| CancelLibraryApplet
+
| Yes
 +
| [[APT:CancelLibraryApplet|CancelLibraryApplet]]
 
|-
 
|-
 
| 0x003C0042
 
| 0x003C0042
 
|  
 
|  
 
| Yes
 
| Yes
| SendDspSleep
+
| Yes
 +
| [[APT:SendDspSleep|SendDspSleep]]
 
|-
 
|-
 
| 0x003D0042
 
| 0x003D0042
 
|  
 
|  
 
| Yes
 
| Yes
| SendDspWakeUp
+
| Yes
 +
| [[APT:SendDspWakeUp|SendDspWakeUp]]
 
|-
 
|-
 
| 0x003E0080
 
| 0x003E0080
 
|  
 
|  
 
| Yes
 
| Yes
| ReplySleepQuery
+
| Yes
 +
| [[APT:ReplySleepQuery|ReplySleepQuery]]
 
|-
 
|-
 
| 0x003F0040
 
| 0x003F0040
 
|  
 
|  
 
| Yes
 
| Yes
| ReplySleepNotificationComplete
+
| Yes
 +
| [[APT:ReplySleepNotificationComplete|ReplySleepNotificationComplete]]
 
|-
 
|-
 
| 0x00400042
 
| 0x00400042
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:SendCaptureBufferInfo|SendCaptureBufferInfo]]
 
| [[APT:SendCaptureBufferInfo|SendCaptureBufferInfo]]
Line 455: Line 544:  
| 0x00410040
 
| 0x00410040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:ReceiveCaptureBufferInfo|ReceiveCaptureBufferInfo]]
 
| [[APT:ReceiveCaptureBufferInfo|ReceiveCaptureBufferInfo]]
Line 461: Line 551:  
|  
 
|  
 
| Yes
 
| Yes
| SleepSystem
+
| Yes
 +
| [[APT:SleepSystem|SleepSystem]]
 
|-
 
|-
 
| 0x00430040
 
| 0x00430040
 
|  
 
|  
 
| Yes
 
| Yes
| NotifyToWait
+
| Yes
 +
| [[APT:NotifyToWait|NotifyToWait]]
 
|-
 
|-
 
| 0x00440000
 
| 0x00440000
 
|  
 
|  
 
| Yes
 
| Yes
| GetSharedFont
+
| Yes
 +
| [[APT:GetSharedFont|GetSharedFont]]
 
|-
 
|-
 
| 0x00450040
 
| 0x00450040
 
|  
 
|  
 
| Yes
 
| Yes
| GetWirelessRebootInfo
+
| Yes
 +
| [[APT:GetWirelessRebootInfo|GetWirelessRebootInfo]]
 
|-
 
|-
 
| 0x00460104
 
| 0x00460104
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:Wrap|Wrap]]
 
| [[APT:Wrap|Wrap]]
Line 485: Line 580:  
| 0x00470104
 
| 0x00470104
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:Unwrap|Unwrap]]
 
| [[APT:Unwrap|Unwrap]]
Line 490: Line 586:  
| 0x00480100
 
| 0x00480100
 
|  
 
|  
 +
| No
 
| No
 
| No
 
| [[APT:GetProgramInfo|GetProgramInfo]]
 
| [[APT:GetProgramInfo|GetProgramInfo]]
Line 495: Line 592:  
| 0x00490180
 
| 0x00490180
 
|  
 
|  
 +
| No
 
| No
 
| No
 
| [[APT:Reboot|Reboot]]
 
| [[APT:Reboot|Reboot]]
Line 500: Line 598:  
| 0x004A0040
 
| 0x004A0040
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:GetCaptureInfo|GetCaptureInfo]]
 
| [[APT:GetCaptureInfo|GetCaptureInfo]]
Line 505: Line 604:  
| 0x004B00C2
 
| 0x004B00C2
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:AppletUtility|AppletUtility]]
 
| [[APT:AppletUtility|AppletUtility]]
Line 511: Line 611:  
|  
 
|  
 
| Yes
 
| Yes
| SetFatalErrDispMode
+
| Yes
 +
| [[APT:SetFatalErrDispMode|SetFatalErrDispMode]]
 
|-
 
|-
 
| 0x004D0080
 
| 0x004D0080
 
|  
 
|  
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:GetAppletProgramInfo|GetAppletProgramInfo]]
 
| [[APT:GetAppletProgramInfo|GetAppletProgramInfo]]
Line 521: Line 623:  
|  
 
|  
 
| Yes
 
| Yes
| HardwareResetAsync
+
| Yes
 +
| [[APT:HardwareResetAsync|HardwareResetAsync]]
 
|-
 
|-
 
| 0x004F0080
 
| 0x004F0080
 
| [[2.2.0-X]]
 
| [[2.2.0-X]]
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:SetApplicationCpuTimeLimit|SetApplicationCpuTimeLimit]]
 
| [[APT:SetApplicationCpuTimeLimit|SetApplicationCpuTimeLimit]]
Line 530: Line 634:  
| 0x00500040
 
| 0x00500040
 
| [[2.2.0-X]]
 
| [[2.2.0-X]]
 +
| Yes
 
| Yes
 
| Yes
 
| [[APT:GetApplicationCpuTimeLimit|GetApplicationCpuTimeLimit]]
 
| [[APT:GetApplicationCpuTimeLimit|GetApplicationCpuTimeLimit]]
Line 535: Line 640:  
| 0x00510080
 
| 0x00510080
 
| [[3.0.0-5]]
 
| [[3.0.0-5]]
| ?
+
| Yes
| Uses pm:app cmdB
+
| Yes
 +
| [[APT:GetStartupArgument|GetStartupArgument]]
 
|-
 
|-
 
| 0x00520104
 
| 0x00520104
 
| [[4.0.0-7]]
 
| [[4.0.0-7]]
| ?
+
| Yes
| Wrap1
+
| Yes
 +
| [[APT:Wrap1|Wrap1]]
 
|-
 
|-
 
| 0x00530104
 
| 0x00530104
 
| [[4.0.0-7]]
 
| [[4.0.0-7]]
| ?
+
| Yes
| Unwrap1
+
| Yes
 +
| [[APT:Unwrap1|Unwrap1]]
 
|-
 
|-
 
| 0x00540040
 
| 0x00540040
 
| [[5.0.0-11]]
 
| [[5.0.0-11]]
| ?
+
| Yes
| ?
+
| Yes
 +
| Takes an unknown parameter, outputs a result code and media type.
 
|-
 
|-
 
| 0x00550040
 
| 0x00550040
 
| [[7.0.0-13]]
 
| [[7.0.0-13]]
 
| Yes
 
| Yes
| This writes the input u8 to a NS state field.
+
| Yes
 +
| [[APT:SetScreenCapturePostPermission|SetScreenCapturePostPermission]]
 
|-
 
|-
 
| 0x00560000
 
| 0x00560000
 
| [[7.0.0-13]]
 
| [[7.0.0-13]]
 
| Yes
 
| Yes
| This returns an u8 NS state field(which can be set by cmd 0x00550040), at cmdreply+8.
+
| Yes
 +
| [[APT:GetScreenCapturePostPermission|GetScreenCapturePostPermission]]
 
|-
 
|-
 
| 0x00570044
 
| 0x00570044
 
| [[7.0.0-13]]
 
| [[7.0.0-13]]
| ?
+
| Yes
| WakeupApplication2?
+
| Yes
 +
| [[APT:WakeupApplication2|WakeupApplication2]]
 
|-
 
|-
 
| 0x00580002
 
| 0x00580002
 
| [[7.0.0-13]]
 
| [[7.0.0-13]]
 
| Yes
 
| Yes
| [[APT:GetProgramID]]
+
| Yes
 +
| [[APT:GetProgramID|GetProgramID]]
 
|-
 
|-
 
| 0x01010000
 
| 0x01010000
 
| [[8.0.0-18]]
 
| [[8.0.0-18]]
 
| Yes
 
| Yes
| This writes an output u8 to cmdreply indexword[2]. This uses [[PTMSYSM:CheckNew3DS]]. When a certain NS state field is non-zero, the output value is zero, otherwise the output is from [[PTMSYSM:CheckNew3DS]]. Normally this NS state field is zero, however this state field is set to 1 when [[APT:PrepareToStartApplication]] is used with flags bit8 is set.
+
| Yes
 +
| [[APT:GetTargetPlatform|GetTargetPlatform]]
 
|-
 
|-
 
| 0x01020000
 
| 0x01020000
 
| [[8.0.0-18]]
 
| [[8.0.0-18]]
 
| Yes
 
| Yes
| Wrapper for [[PTMSYSM:CheckNew3DS]].
+
| Yes
 +
| [[APT:CheckNew3DS|CheckNew3DS]]
 
|-
 
|-
 
| 0x01030000
 
| 0x01030000
 
| [[8.0.0-18]]
 
| [[8.0.0-18]]
 
| Yes
 
| Yes
| ?
+
| Yes
 +
| [[APT:GetApplicationRunningMode|GetApplicationRunningMode]]
 
|-
 
|-
 
| 0x01040000
 
| 0x01040000
 
| [[8.0.0-18]]
 
| [[8.0.0-18]]
| ?
+
| Yes
| ?
+
| Yes
 +
| [[APT:IsStandardMemoryLayout|IsStandardMemoryLayout]]
 +
|-
 +
| 0x01050100
 +
| [[10.4.0-29]]
 +
| Yes
 +
| Yes
 +
| [[APT:IsTitleAllowed|IsTitleAllowed]]
 
|}
 
|}
   Line 601: Line 724:     
APT:PrepareToDoApplicationJump and APT:DoApplicationJump are used by applications, for launching native/<non-NATIVE_FIRM> applications. These commands notify Home Menu that title launching needs done, Home Menu does the actual title launching via NS commands.
 
APT:PrepareToDoApplicationJump and APT:DoApplicationJump are used by applications, for launching native/<non-NATIVE_FIRM> applications. These commands notify Home Menu that title launching needs done, Home Menu does the actual title launching via NS commands.
 +
 +
== AppletAttr ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Bits
 +
!  Description
 +
|-
 +
| 0-2
 +
| [[NS_and_APT_Services#AppletPos|AppletPos]]
 +
|-
 +
| 3
 +
| Manually Acquire/Release GPU Rights
 +
|-
 +
| 4
 +
| Manually Acquire/Release DSP Rights
 +
|-
 +
| 5
 +
| ?
 +
|}
 +
 +
== DisplayBufferMode ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| FORMAT_R8G8B8A8
 +
|-
 +
| 1
 +
| FORMAT_R8G8B8
 +
|-
 +
| 2
 +
| FORMAT_R5G6B5
 +
|-
 +
| 3
 +
| FORMAT_R5G5B5A1
 +
|-
 +
| 4
 +
| FORMAT_R4G4B4A4
 +
|-
 +
| 0xFFFFFFFF
 +
| FORMAT_UNIMPORTABLE
 +
|}
 +
 +
This is the same mapping as used for the [[GPU/External_Registers#Framebuffer_color_formats|GPU framebuffer color formats]].
 +
 +
== AppletPos ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| -1
 +
| POS_NONE
 +
|-
 +
| 0
 +
| POS_APP
 +
|-
 +
| 1
 +
| POS_APPLIB
 +
|-
 +
| 2
 +
| POS_SYS
 +
|-
 +
| 3
 +
| POS_SYSLIB
 +
|-
 +
| 4
 +
| POS_RESIDENT
 +
|}
 +
 +
== QueryReply ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| REPLY_REJECT
 +
|-
 +
| 1
 +
| REPLY_ACCEPT
 +
|-
 +
| 2
 +
| REPLY_LATER
 +
|}
 +
 +
== Notification ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| NOTIFICATION_NONE
 +
|-
 +
| 1
 +
| NOTIFICATION_HOME_BUTTON_1
 +
|-
 +
| 2
 +
| NOTIFICATION_HOME_BUTTON_2
 +
|-
 +
| 3
 +
| NOTIFICATION_SLEEP_QUERY
 +
|-
 +
| 4
 +
| NOTIFICATION_SLEEP_CANCELED_BY_OPEN
 +
|-
 +
| 5
 +
| NOTIFICATION_SLEEP_ACCEPTED
 +
|-
 +
| 6
 +
| NOTIFICATION_SLEEP_AWAKE
 +
|-
 +
| 7
 +
| NOTIFICATION_SHUTDOWN
 +
|-
 +
| 8
 +
| NOTIFICATION_POWER_BUTTON_CLICK
 +
|-
 +
| 9
 +
| NOTIFICATION_POWER_BUTTON_CLEAR
 +
|-
 +
| 10
 +
| NOTIFICATION_TRY_SLEEP
 +
|-
 +
| 11
 +
| NOTIFICATION_ORDER_TO_CLOSE
 +
|}
 +
 +
== Command ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| COMMAND_NONE
 +
|-
 +
| 1
 +
| COMMAND_WAKEUP
 +
|-
 +
| 2
 +
| COMMAND_REQUEST
 +
|-
 +
| 3
 +
| COMMAND_RESPONSE
 +
|-
 +
| 4
 +
| COMMAND_EXIT
 +
|-
 +
| 5
 +
| COMMAND_MESSAGE
 +
|-
 +
| 6
 +
| COMMAND_HOME_BUTTON_SINGLE
 +
|-
 +
| 7
 +
| COMMAND_HOME_BUTTON_DOUBLE
 +
|-
 +
| 8
 +
| COMMAND_DSP_SLEEP
 +
|-
 +
| 9
 +
| COMMAND_DSP_WAKEUP
 +
|-
 +
| 10
 +
| COMMAND_WAKEUP_BY_EXIT
 +
|-
 +
| 11
 +
| COMMAND_WAKEUP_BY_PAUSE
 +
|-
 +
| 12
 +
| COMMAND_WAKEUP_BY_CANCEL
 +
|-
 +
| 13
 +
| COMMAND_WAKEUP_BY_CANCELALL
 +
|-
 +
| 14
 +
| COMMAND_WAKEUP_BY_POWER_BUTTON_CLICK
 +
|-
 +
| 15
 +
| COMMAND_WAKEUP_TO_JUMP_HOME
 +
|-
 +
| 16
 +
| COMMAND_REQUEST_FOR_SYS_APPLET
 +
|-
 +
| 17
 +
| COMMAND_WAKEUP_TO_LAUNCH_APPLICATION
 +
|-
 +
| 0x41
 +
| Unknown. [[APT:ReceiveParameter|Received]] by Home Menu during boot when the Home Menu process doesn't terminate properly(svcExitProcess/crash).
 +
|}
 +
 +
== AppletPreparationState ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| NO_PREPARATION
 +
|-
 +
| 1
 +
| PREPARED_TO_LAUNCH_APP
 +
|-
 +
| 2
 +
| PREPARED_TO_CLOSE_APP
 +
|-
 +
| 3
 +
| PREPARED_TO_FORCE_TO_CLOSE_APP
 +
|-
 +
| 4
 +
| PREPARED_TO_PRELOAD_APPLIB
 +
|-
 +
| 5
 +
| PREPARED_TO_LAUNCH_APPLIB
 +
|-
 +
| 6
 +
| PREPARED_TO_CLOSE_APPLIB
 +
|-
 +
| 7
 +
| PREPARED_TO_LAUNCH_SYS
 +
|-
 +
| 8
 +
| PREPARED_TO_CLOSE_SYS
 +
|-
 +
| 9
 +
| PREPARED_TO_PRELOAD_SYSLIB
 +
|-
 +
| 10
 +
| PREPARED_TO_LAUNCH_SYSLIB
 +
|-
 +
| 11
 +
| PREPARED_TO_CLOSE_SYSLIB
 +
|-
 +
| 12
 +
| PREPARED_TO_LAUNCH_RESIDENT
 +
|-
 +
| 13
 +
| PREPARED_TO_LEAVE_RESIDENT
 +
|-
 +
| 14
 +
| PREPARED_TO_DO_HOMEMENU
 +
|-
 +
| 15
 +
| PREPARED_TO_LEAVE_HOMEMENU
 +
|-
 +
| 16
 +
| PREPARED_TO_START_RESIDENT
 +
|-
 +
| 17
 +
| PREPARED_TO_DO_APP_JUMP
 +
|-
 +
| 18
 +
| PREPARED_TO_FORCE_TO_CLOSE_SYS
 +
|-
 +
| 19
 +
| PREPARED_TO_LAUNCH_OTHER_SYS
 +
|-
 +
| 20
 +
| PREPARED_TO_JUMP_TO_APP
 +
|}
 +
 +
== StartupArgumentType ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0
 +
| STARTUP_ARGUMENT_TYPE_OTHER_APP
 +
|-
 +
| 1
 +
| STARTUP_ARGUMENT_TYPE_RESTART
 +
|-
 +
| 2
 +
| STARTUP_ARGUMENT_TYPE_OTHER_MEDIA
 +
|}
 +
 +
== CaptureBufferInfo ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| u32, Size
 +
|-
 +
| 0x4
 +
| 0x1
 +
| u8, 3D (0 = not 3D, 1 = 3D)
 +
|-
 +
| 0x5
 +
| 0x3
 +
| Reserved
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Main Screen Left Offset
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Main Screen Right Offset
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Main Screen [[NS_and_APT_Services#DisplayBufferMode|DisplayBufferMode]]
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Sub Screen Left Offset
 +
|-
 +
| 0x18
 +
| 0x4
 +
| Sub Screen Right Offset
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Sub Screen [[NS_and_APT_Services#DisplayBufferMode|DisplayBufferMode]]
 +
|}
 +
 +
==WirelessRebootInfo==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x6
 +
| Host MAC address.
 +
|-
 +
| 0x6
 +
| 0x9
 +
| WirelessRebootPassphrase
 +
|-
 +
| 0xF
 +
| 0x1
 +
| Uninitialized
 +
|}
 +
 +
This is [[NSS:SetWirelessRebootInfo|setup]] by the dlplay system-application, before launching the DLP-child which can then use [[APT:GetWirelessRebootInfo]]. The MAC address and passphrase is used for connecting to the host by the DLP-child. See also [[DLP_Services|here]].
    
="APT:A" Service=
 
="APT:A" Service=
This was added with [[7.0.0-13|7.0.0-X]]. Official apps built with the CTRSDK for system-version >=[[7.0.0-13|7.0.0-X]] normally use the "APT:A" service instead of "APT:U". Those processes also have "APT:A" instead of "APT:U" in the service-access-control. It's unknown whether there's anything which is only accessible via "APT:A".
+
This was added with [[7.0.0-13|7.0.0-X]]. Official apps built with the CTRSDK for system-version >=[[7.0.0-13|7.0.0-X]] normally use the "APT:A" service instead of "APT:U". Those processes also have "APT:A" instead of "APT:U" in the service-access-control. Unlike APT:U, APT:A can call [[APT:GetAppletInfo]] with applet ID 0x300.
    
=Applets=
 
=Applets=
Line 625: Line 1,094:  
|-
 
|-
 
| 0x101
 
| 0x101
| Home Menu (menu)
+
| [[Home Menu]] (menu)
 
|-
 
|-
 
| 0x103
 
| 0x103
Line 631: Line 1,100:  
|-
 
|-
 
| 0x110
 
| 0x110
| Camera applet (CtrApp)
+
| Camera applet ([[Camera Applet|CtrApp]])
 
|-
 
|-
 
| 0x112
 
| 0x112
| Friends List applet (friend)
+
| Friends List applet ([[Friend List|friend]])
 
|-
 
|-
 
| 0x113
 
| 0x113
Line 646: Line 1,115:  
|-
 
|-
 
| 0x116
 
| 0x116
| Notifications applet (newslist)
+
| [[Notifications]] applet (newslist)
 
|-
 
|-
 
| 0x117
 
| 0x117
Line 652: Line 1,121:  
|-
 
|-
 
| 0x118
 
| 0x118
| Miiverse posting applet (solv3)
+
| [[Miiverse]] posting applet (solv3)
 
|-
 
|-
 
| 0x119
 
| 0x119
Line 661: Line 1,130:  
|-
 
|-
 
| 0x202
 
| 0x202
| Mii Selector (appletEd) (?)
+
| [[Mii Selector]] (appletEd) (?)
 
|-
 
|-
 
| 0x204
 
| 0x204
Line 670: Line 1,139:  
|-
 
|-
 
| 0x206
 
| 0x206
| Error Display (error) (?)
+
| Error Display ([[ErrDisp|error]]) (?)
 
|-
 
|-
 
| 0x207
 
| 0x207
| eShop applet (mint) (?)
+
| eShop applet ([[EShop#NS_eShop_application_parameters|mint]]) (?)
 
|-
 
|-
 
| 0x208
 
| 0x208
1,434

edits