Applet Manager services: Difference between revisions
| No edit summary | |||
| (12 intermediate revisions by 2 users not shown) | |||
| Line 28: | Line 28: | ||
| | 450 || [19.0.0+] [[#GetSystemProcessCommonFunctions]] ||   | | 450 || [19.0.0+] [[#GetSystemProcessCommonFunctions]] ||   | ||
| |- | |- | ||
| | 460 || [20.0.0+] || | | 460 || [20.0.0+] || Returns an [[#IAppletAlternativeFunctions]]. | ||
| |- | |- | ||
| | 1000 || [6.0.0+] [[#GetDebugFunctions]] ||   | | 1000 || [6.0.0+] [[#GetDebugFunctions]] ||   | ||
| Line 2,467: | Line 2,467: | ||
| Unofficial name. This is exclusive to S2. | Unofficial name. This is exclusive to S2. | ||
| No input. Returns an output TIPC handle to [[#GraphicsInterface]]. | No input. Returns an output TIPC handle to [[#(S2) GraphicsInterface|GraphicsInterface]]. | ||
| == IStorageChannel == | == IStorageChannel == | ||
| Line 2,900: | Line 2,900: | ||
| |- | |- | ||
| | 30 ||   | | 30 ||   | ||
| |} | |||
| == IAppletAlternativeFunctions == | |||
| This is "nn::am::service::IAppletAlternativeFunctions". | |||
| This was added with [20.0.0+]. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Cmd || Name | |||
| |- | |||
| | 0 ||  | |||
| |- | |||
| | 1 ||  | |||
| |- | |||
| | 2 ||  | |||
| |} | |} | ||
| Line 3,374: | Line 3,390: | ||
| = (S2) adraw:a = | = (S2) adraw:a = | ||
| This is "nn::appletdraw::sfif::IAppletRoot" | This is "nn::appletdraw::sfif::IAppletRoot". | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 3,388: | Line 3,404: | ||
| Unofficial name.   | Unofficial name.   | ||
| Takes a PID and an  | Takes a PID and an input [[#AppletResourceUserId|AppletResourceUserId]]. Returns a [[#IResourceSession]]. | ||
| == OpenAppletSession == | == OpenAppletSession == | ||
| Unofficial name | Unofficial name. | ||
| Takes a PID and an  | Takes a PID and an input [[#AppletResourceUserId|AppletResourceUserId]]. Returns a [[#IAppletSession]]. | ||
| == IResourceSession == | == IResourceSession == | ||
| Line 3,402: | Line 3,418: | ||
| ! Cmd || Name | ! Cmd || Name | ||
| |- | |- | ||
| | 1 ||   | | 1 || [[#Ping|Ping]] | ||
| |- | |- | ||
| | 10 ||    | | 10 ||    | ||
| Line 3,409: | Line 3,425: | ||
| |} | |} | ||
| ===  | === Ping === | ||
| Takes  | Unofficial name. | ||
| Takes an input u64. Returns an output u64. | |||
| The output u64 should match the input u64. Official software sends the current system tick value. | |||
| === Cmd10 === | === Cmd10 === | ||
| Line 3,425: | Line 3,445: | ||
| ! Cmd || Name | ! Cmd || Name | ||
| |- | |- | ||
| | 1 ||   | | 1 || [[#Ping|Ping]] | ||
| |- | |- | ||
| | 2 ||  | | 2 || [[#GetEvent|GetEvent]] | ||
| |- | |- | ||
| | 3 ||  | | 3 || [20.1.1+]  | ||
| |- | |- | ||
| | 10 ||    | | 10 ||    | ||
| Line 3,441: | Line 3,461: | ||
| | 15 ||    | | 15 ||    | ||
| |- | |- | ||
| | 16 ||  | | 16 || [20.1.1+] | ||
| |- | |- | ||
| | 17 ||  | | 17 || [20.1.1+] | ||
| |- | |- | ||
| | 18 ||  | | 18 || [20.1.1+] | ||
| |- | |- | ||
| | 19 ||  | | 19 || [20.1.1+] | ||
| |- | |- | ||
| | 21 ||    | | 21 ||    | ||
| Line 3,453: | Line 3,473: | ||
| | 22 ||    | | 22 ||    | ||
| |- | |- | ||
| | 23 ||  | | 23 || [20.1.1+] | ||
| |- | |- | ||
| | 24 ||  | | 24 || [20.1.1+] | ||
| |- | |- | ||
| | 31 ||  | | 31 || [[#GetFrameBufferInfo|GetFrameBufferInfo]] | ||
| |- | |- | ||
| | 8001 ||  | | 8001 || [[#GetFrameBufferInfoForDebug|GetFrameBufferInfoForDebug]] | ||
| |- | |||
| | 8003 || [19.0.0-19.1.0] | |||
| |- | |- | ||
| | 8004 ||    | | 8004 ||    | ||
| |} | |} | ||
| ===  | === GetEvent === | ||
| Unofficial name. | |||
| No input. Returns an output Event handle. | |||
| Returns  | |||
| === Cmd3 === | === Cmd3 === | ||
| Takes a handle. | Takes a handle. No output. | ||
| === Cmd10 === | === Cmd10 === | ||
| Takes an  | Takes an input u32. No output. | ||
| === Cmd11 === | === Cmd11 === | ||
| Takes an  | Takes an input u32. No output. | ||
| === Cmd12 === | === Cmd12 === | ||
| Takes  | Takes an input u64. Returns an output u32. | ||
| === Cmd13 === | === Cmd13 === | ||
| Takes an  | Takes an input u32. Returns an output u32. | ||
| === Cmd15 === | === Cmd15 === | ||
| Takes an  | Takes an input u32. Returns three output u32s. | ||
| === Cmd16 === | === Cmd16 === | ||
| Returns an  | No input. Returns an output u32. | ||
| === Cmd17 === | === Cmd17 === | ||
| Takes an  | Takes an input u32. Returns an output u32 and an output u16. | ||
| === Cmd18 === | === Cmd18 === | ||
| Takes an  | Takes an input u32. Returns three output u32s and an output u16. | ||
| === Cmd19 === | === Cmd19 === | ||
| Takes an  | Takes an input u32. Returns an output u32 and an output u16. | ||
| === Cmd21 === | === Cmd21 === | ||
| Takes an  | Takes an input u32. Returns a struct of size 0x40. | ||
| === Cmd22 === | === Cmd22 === | ||
| Line 3,507: | Line 3,528: | ||
| === Cmd23 === | === Cmd23 === | ||
| Returns a struct of size 0xC8. | No input. Returns a struct of size 0xC8. | ||
| === Cmd24 === | === Cmd24 === | ||
| Takes an ipc-buf with size 0xD8. No output. | |||
| ===  | === GetFrameBufferInfo === | ||
| Returns  | Unofficial name. | ||
| No input. Returns an [[#(S2)_AdrawFrameBufferInfo|AdrawFrameBufferInfo]]. | |||
| [[#(S2)_AdrawFrameBufferInfo|Id]] is "adrawfb". | |||
| === GetFrameBufferInfoForDebug === | |||
| Unofficial name. | |||
| ===  | No input. Returns an [[#(S2)_AdrawFrameBufferInfo|AdrawFrameBufferInfo]]. | ||
| Returns  | |||
| === Cmd8003 === | |||
| Takes an input u64. Returns a struct with size 0x18. | |||
| === Cmd8004 === | === Cmd8004 === | ||
| Takes an  | Takes an input u32. Returns an output u64. | ||
| = (S2) appletOE = | = (S2) appletOE = | ||
| Line 3,571: | Line 3,601: | ||
| Unofficial name. | Unofficial name. | ||
| No input. Returns an output TIPC handle to [[#GraphicsInterface]]. | No input. Returns an output TIPC handle to [[#(S2) GraphicsInterface|GraphicsInterface]]. | ||
| Same as [[#GetGraphicsInterface]] but for compat mode. | Same as [[#GetGraphicsInterface]] but for compat mode. | ||
| Line 3,608: | Line 3,638: | ||
| ! Cmd || Name | ! Cmd || Name | ||
| |- | |- | ||
| |  | | 1 || [[#InitializeGraphicsWithTransferMemory]]   | ||
| |- | |- | ||
| |  | | 4 || [[#InitializeGraphics]]   | ||
| |- | |- | ||
| | 101 || [[# | | 11 || [[#SetCurrentProcessHandle]] | ||
| |- | |||
| | 12 ||  | |||
| |- | |||
| | 101 || [[#StartGraphics]] | |||
| |- | |- | ||
| | 111 ||   | | 111 ||   | ||
| Line 3,627: | Line 3,661: | ||
| |- | |- | ||
| | 301 ||   | | 301 ||   | ||
| |- | |- | ||
| | 303 ||   | | 303 ||   | ||
| Line 3,641: | Line 3,673: | ||
| |- | |- | ||
| | 321 ||   | | 321 ||   | ||
| |- | |||
| | 327 ||  | |||
| |- | |- | ||
| | 391 ||   | | 391 ||   | ||
| |- | |- | ||
| | 401 ||   | | 401 || [[#PrepareGpuManagerSession]] | ||
| |- | |- | ||
| | 402 ||   | | 402 || [[#StartGpuManagerSession]] | ||
| |- | |- | ||
| | 423 ||   | | 423 ||   | ||
| |- | |||
| | 428 || [[#GetImageInfo]] | |||
| |- | |- | ||
| | 434 ||   | | 434 ||   | ||
| |- | |- | ||
| | 497 ||   | | 494 ||  | ||
| |- | |||
| | 496 || [[#CreateGpuManagerSessionWithTransferMemory]] | |||
| |- | |||
| | 497 || [[#CreateGpuManagerSession]] | |||
| |- | |- | ||
| | 901 ||   | | 901 ||   | ||
| Line 3,682: | Line 3,722: | ||
| | 1102 ||   | | 1102 ||   | ||
| |- | |- | ||
| |  | | 1301 || [[#InitializeAdraw]] | ||
| |- | |||
| | 1302 || [[#StartAdraw]] | |||
| |- | |||
| | 1325 || [[#GetAdrawFrameBufferHandle]] | |||
| |- | |- | ||
| |  | | 1326 || [[#GetAdrawImageHandle]] | ||
| |- | |- | ||
| | 1501 ||   | | 1401 || [[#CreateNvDrv2UserSessionWithTransferMemory]]  | ||
| |- | |||
| | 1402 || [[#CreateNvDrv2UserSession]]  | |||
| |- | |||
| | 1411 || [[#GetNvDrv2UserTransferMemoryUsage]] | |||
| |- | |||
| | 1501 ||   | |||
| |- | |- | ||
| | 1502 ||   | | 1502 ||   | ||
| Line 3,703: | Line 3,753: | ||
| |} | |} | ||
| ==  | == InitializeGraphicsWithTransferMemory == | ||
| Unofficial name. | Unofficial name. | ||
| Takes a TransferMemory handle, an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]] and an input u64 '''TransferMemorySize'''. No output. | |||
| ==  | == InitializeGraphics == | ||
| Unofficial name. | 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. | Unofficial name. | ||
| Takes a Process handle. No output. | |||
| ==  | Called directly after [[#InitializeGraphicsWithTransferMemory]] or [[#InitializeGraphics]]. | ||
| == StartGraphics == | |||
| Unofficial name. | Unofficial name. | ||
| No input/output. | |||
| Called directly after [[#SetCurrentProcessHandle]]. | |||
| ==  | == PrepareGpuManagerSession == | ||
| Unofficial name. | Unofficial name. | ||
| No input.  | No input/output. | ||
| Called directly after [[#CreateGpuManagerSessionWithTransferMemory]] or [[#CreateGpuManagerSession]]. | |||
| == StartGpuManagerSession == | |||
| Unofficial name. | |||
| No input/output. | |||
| Called directly after [[#PrepareGpuManagerSession]]. | |||
| == GetImageInfo == | |||
| Unofficial name. | |||
| Takes an input u32 '''ImageHandle'''. Returns an [[#(S2)_ImageInfo|ImageInfo]]. | |||
| == 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. | |||
| == InitializeAdraw == | |||
| Unofficial name. | |||
| No input/output. | |||
| == StartAdraw == | |||
| Unofficial name. | |||
| |  | |||
| No input/output. | |||
| |  | |||
| Called directly after [[#InitializeAdraw]]. | |||
| == GetAdrawFrameBufferHandle == | |||
| Unofficial name. | |||
| Takes an input u64. Returns an output u32 '''FrameBufferHandle'''. | |||
| Official software sends the [[#(S2)_AdrawFrameBufferInfo|Id]] obtained with [[#GetFrameBufferInfo|GetFrameBufferInfo]] from [[#(S2)_adraw:a|adraw]]. | |||
| == GetAdrawImageHandle == | |||
| Unofficial name. | |||
| Takes seven input u64s, two input u16s and two input u32s. Returns an output u32 '''ImageHandle'''. | |||
| Official software sends 0x100000000 in the first u64, 0 in all remaining u64s, [[#(S2)_AdrawFrameBufferInfo|Width]] and [[#(S2)_AdrawFrameBufferInfo|Height]] in the two u16s, [[#(S2)_AdrawFrameBufferInfo|BlockCount]] int the first u32 and the '''FrameBufferHandle''' from [[#GetAdrawFrameBufferHandle|GetAdrawFrameBufferHandle]] in the last u32. | |||
| == 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" | {| 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 | |||
| |- | |- | ||
| |  | | 0x00000000 | ||
| |  | |   | ||
| |  | | None | ||
| |- | |- | ||
| |  | | 0x00000001 | ||
| |  | |   | ||
| |  | | Application (not valid for use with LibraryApplets) | ||
| |- | |- | ||
| |  | | 0x00000002 | ||
| |  | | 0x010000000000100C | ||
| |  | | OverlayApplet (overlayDisp) | ||
| |- | |- | ||
| |  | | 0x00000003 | ||
| |  | | 0x0100000000001000 | ||
| |  | | SystemAppletMenu (qlaunch) | ||
| |- | |- | ||
| |  | | 0x00000004 | ||
| |  | | 0x0100000000001012 | ||
| |  | | SystemApplication (starter) | ||
| |- | |- | ||
| |  | | 0x0000000A | ||
| |  | | 0x0100000000001001 | ||
| |  | | [[Auth_Applet|LibraryAppletAuth (auth)]] | ||
| |- | |- | ||
| |  | | 0x0000000B | ||
| |  | | 0x0100000000001002 | ||
| |  | | [[Cabinet_Applet|LibraryAppletCabinet (cabinet)]] | ||
| |- | |- | ||
| |  | | 0x0000000C | ||
| |  | | 0x0100000000001003 | ||
| | [ | | [[Controller_Applet|LibraryAppletController (controller)]] | ||
| |- | |- | ||
| |  | | 0x0000000D | ||
| |  | | 0x0100000000001004 | ||
| |  | | LibraryAppletDataErase (dataErase) | ||
| |- | |- | ||
| |  | | 0x0000000E | ||
| |  | | 0x0100000000001005 | ||
| | [ | | [[Error_Applet|LibraryAppletError (error)]] | ||
| |- | |- | ||
| |  | | 0x0000000F | ||
| |  | | 0x0100000000001006 | ||
| |  | | LibraryAppletNetConnect (netConnect) | ||
| |- | |- | ||
| |  | | 0x00000010 | ||
| |  | | 0x0100000000001007 | ||
| | [ | | [[Profile_Selector|LibraryAppletPlayerSelect (playerSelect)]] | ||
| |- | |- | ||
| |  | | 0x00000011 | ||
| |  | | 0x0100000000001008 | ||
| | [ | | [[Software_Keyboard|LibraryAppletSwkbd (swkbd)]] | ||
| |- | |- | ||
| |  | | 0x00000012 | ||
| |  | | 0x0100000000001009 | ||
| | [ | | [[MiiEdit_Applet|LibraryAppletMiiEdit (miiEdit)]] | ||
| |- | |- | ||
| |  | | 0x00000013 | ||
| |   | | 0x010000000000100A | ||
| | [ | | [[Internet_Browser#010000000000100A|LibraryAppletWeb (web)]] | ||
| |- | |- | ||
| |  | | 0x00000014 | ||
| |  | | 0x010000000000100B | ||
| | [ | | [[Internet_Browser#ShopN|LibraryAppletShop (shop)]] | ||
| |- | |- | ||
| |  | | 0x00000015 | ||
| |  | | 0x010000000000100D | ||
| | [ | | [[Album_Applet|LibraryAppletPhotoViewer (photoViewer)]] | ||
| |- | |- | ||
| |  | | 0x00000016 | ||
| |  | | 0x010000000000100E | ||
| |  | | LibraryAppletSet (set) | ||
| |- | |- | ||
| |  | | 0x00000017 | ||
| |  | | 0x010000000000100F | ||
| | [ | | [[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] (LibraryAppletOfflineWebApp_0 in Ounce) | ||
| |- | |- | ||
| |  | | 0x00000018 | ||
| |  | | 0x0100000000001010 | ||
| | [ | | [[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] | ||
| |- | |- | ||
| |  | | 0x00000019 | ||
| |  | | 0x0100000000001011 | ||
| | [ | | [[Internet_Browser#WifiWebAuthApplet|LibraryAppletWifiWebAuth (wifiWebAuth)]] | ||
| |- | |- | ||
| |  | | 0x0000001A | ||
| |  | | 0x0100000000001013 | ||
| | [ | | [[MyPage_Applet|LibraryAppletMyPage (myPage)]] | ||
| |- | |- | ||
| |  | | 0x0000001B | ||
| |  | | 0x010000000000101A | ||
| |  | | LibraryAppletGift (gift) | ||
| |- | |- | ||
| |  | | 0x0000001C | ||
| |  | | 0x010000000000101C | ||
| |  | | LibraryAppletUserMigration (userMigration) | ||
| |- | |- | ||
| |  | | 0x0000001D | ||
| |  | | 0x010000000000101D | ||
| | [ | | [9.0.0+] LibraryAppletPreomiaSys (EncounterSys) | ||
| |- | |- | ||
| |  | | 0x0000001E | ||
| |  | | 0x0100000000001020 | ||
| | [ | | [9.0.0+] LibraryAppletStory (story) | ||
| |- | |- | ||
| |  | | 0x0000001F | ||
| |  | | 0x010070000E3C0000 | ||
| | [ | | [9.0.0+] LibraryAppletPreomiaUsr (EncounterUsr) | ||
| |- | |- | ||
| |  | | 0x00000020 | ||
| |  | | 0x010086000E49C000 | ||
| | [ | | [9.0.0+] LibraryAppletPreomiaUsrDummy (EncounterUsrDummy) | ||
| |- | |- | ||
| |  | | 0x00000021 | ||
| |  | | 0x0100000000001038 | ||
| | [10.0.0 | | [10.0.0+] LibraryAppletSample (sample) | ||
| |- | |- | ||
| |  | | 0x00000022 | ||
| |  | | 0x0100000000001007 | ||
| | [ | | [13.0.0+] LibraryAppletPromoteQualification (playerSelect) | ||
| |- | |- | ||
| |  | | 0x00000032 | ||
| |  | | 0x010000000000100F | ||
| | [ | | [17.0.0+] LibraryAppletOfflineWebApp_3 ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | ||
| |- | |- | ||
| |  | | 0x00000033 | ||
| |  | | 0x010000000000100F | ||
| | [17.0.0+]  | | [17.0.0+] LibraryAppletOfflineWebSystem ([[Internet_Browser#Offline_Applet|LibraryAppletOfflineWeb (offlineWeb)]] in NX) | ||
| |- | |- | ||
| |  | | 0x00000035 | ||
| |  | | [17.0.0+] 0x0100000000001010 ([16.0.0-16.1.0] 0x0100000000001042) | ||
| | [17.0.0+]  | | [17.0.0+] LibraryAppletLhub ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
| |- | |- | ||
| |  | | 0x00000036 | ||
| |  | | [17.0.0+] 0x0100000000001010 ([16.0.0-16.1.0] 0x0100000000001042) | ||
| | [17.0.0+]  | | [17.0.0+] LibraryAppletLogin ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
| |- | |- | ||
| |  | | 0x00000037 | ||
| |  | | [17.0.0+] 0x0100000000001010 ([16.0.0-16.1.0] 0x0100000000001042) | ||
| | [17.0.0+]  | | [17.0.0+] LibraryAppletShare ([16.0.0-16.1.0] ) ([[Internet_Browser#Whitelisted_Applets|LibraryAppletLoginShare (loginShare)]] in NX) | ||
| |- | |- | ||
| |  | | 0x00000038 | ||
| |  | | 0x0100000000001043 | ||
| | [ | | [16.0.0-16.1.0] | ||
| |- | |- | ||
| |  | | 0x00000050 | ||
| |  | | 0x0100000000001007 | ||
| | [ | | [18.0.0+] | ||
| |- | |- | ||
| |  | | 0x00000051 | ||
| |  | | 0x0100000000001007 | ||
| | [ | | [18.0.0+] | ||
| |- | |- | ||
| |  | | 0x00000064 | ||
| |  | | 0x0100000000001048 | ||
| | [ | | [20.0.0+] [[Splay_Applet|splay]] | ||
| |- | |- | ||
| |  | | 0x000003E8 | ||
| |  | |   | ||
| | [ | | [10.0.0-16.1.0] DevlopmentTool | ||
| |- | |- | ||
| |  | | 0x000003F1 | ||
| |  | | 0x010000000000D619 | ||
| | [ | | [10.0.0-16.1.0] CombinationLA | ||
| |- | |- | ||
| |  | | 0x000003F2 | ||
| |  | | 0x010000000000D610 | ||
| | [ | | [10.0.0-16.1.0] AeSystemApplet | ||
| |- | |- | ||
| |  | | 0x000003F3 | ||
| |  | | 0x010000000000D611 | ||
| | [ | | [10.0.0-16.1.0] AeOverlayApplet | ||
| |- | |- | ||
| |  | | 0x000003F4 | ||
| |  | | 0x010000000000D612 | ||
| | [ | | [10.0.0-16.1.0] AeStarter | ||
| |- | |- | ||
| |  | | 0x000003F5 | ||
| |  | | 0x010000000000D613 | ||
| | [ | | [10.0.0-16.1.0] AeLibraryAppletAlone | ||
| |- | |- | ||
| |  | | 0x000003F6 | ||
| |  | | 0x010000000000D614 | ||
| | [ | | [10.0.0-16.1.0] AeLibraryApplet1 | ||
| |- | |- | ||
| | 0x000003F7 | |||
| | 0x010000000000D615 | |||
| | [10.0.0-16.1.0] AeLibraryApplet2 | |||
| |- | |- | ||
| |  | | 0x000003F8 | ||
| |  | | 0x010000000000D616 | ||
| | [10.0.0-16.1.0] AeLibraryApplet3 | |||
| |- | |- | ||
| |  | | 0x000003F9 | ||
| |  | | 0x010000000000D617 | ||
| | [10.0.0-16.1.0] AeLibraryApplet4 | |||
| |- | |- | ||
| |  | | 0x000003FA | ||
| |  | | 0x010000000000D60A | ||
| | [10.0.0-16.1.0] AppletISA | |||
| |- | |- | ||
| |  | | 0x000003FB | ||
| |  | | 0x010000000000D60B | ||
| | [10.0.0-16.1.0] AppletIOA | |||
| |- | |- | ||
| |  | | 0x000003FC | ||
| |  | | 0x010000000000D60C | ||
| | [10.0.0-16.1.0] AppletISTA | |||
| |- | |- | ||
| | 0x000003FD | |||
| | 0x010000000000D60D | |||
| | [10.0.0-16.1.0] AppletILA1 | |||
| |- | |- | ||
| |  | | 0x000003FE | ||
| | 0x010000000000D60E | |||
| | [10.0.0-16.1.0] AppletILA2 | |||
| |- | |- | ||
| |  | | 0x0100000E | ||
| |   | |||
| | [S2] LibraryAppletError | |||
| |- | |- | ||
| |  | | 0x01000010 | ||
| |   | |||
| | [S2] LibraryAppletPlayerSelect | |||
| |- | |- | ||
| |  | | 0x01010011 | ||
| |   | |||
| | [S2] SwkbdModeless | |||
| |- | |- | ||
| |  | | 0x01020011 | ||
| |   | |||
| | [S2] Swkbd | |||
| |- | |- | ||
| |  | | 0x01000013 | ||
| |   | |||
| | [S2] OpenWeb | |||
| |- | |- | ||
| |  | | 0x01000014 | ||
| |   | |||
| | [S2] LibraryAppletShop | |||
| |- | |- | ||
| |  | | 0x01000022 | ||
| |   | |||
| | [S2] LibraryAppletPromoteQualification | |||
| |- | |- | ||
| |  | | 0x01010025 | ||
| |   | |||
| | [S2] SaveDataBackup | |||
| |- | |- | ||
| |  | | 0x01020025 | ||
| |   | |||
| | [S2] SaveDataBackup | |||
| |- | |- | ||
| |  | | 0x01000032 | ||
| |   | |||
| | [S2] LibraryAppletOfflineWebApp_3 | |||
| |- | |- | ||
| |  | | 0x01000033 | ||
| |   | |||
| | [S2] LibraryAppletOfflineWebSystem | |||
| |- | |- | ||
| |  | | 0x01000035 | ||
| |   | |||
| | [S2] LibraryAppletLhub | |||
| |- | |- | ||
| |  | | 0x01000036 | ||
| |   | |||
| | [S2] LibraryAppletLogin | |||
| |- | |- | ||
| |  | | 0x01000037 | ||
| |   | |||
| | [S2] LibraryAppletShare | |||
| |- | |- | ||
| |  | | 0x01000050 | ||
| |   | |||
| | [S2] PlayerSelect | |||
| |- | |- | ||
| |  | | 0x01000051 | ||
| |   | |||
| | [S2] PlayerSelect | |||
| |- | |- | ||
| |  | | 0x01000052 | ||
| |   | |||
| | [S2] PlayerSelect | |||
| |- | |- | ||
| |  | | 0x700000C8 | ||
| | 0x010000000000D65B | |||
| | [18.0.0+]   | |||
| |- | |- | ||
| |  | | 0x700000C9 | ||
| | 0x010000000000D65C | |||
| | [18.0.0+]   | |||
| |- | |- | ||
| |  | | 0x700000DC | ||
| | 0x010000000000D619 | |||
| | [17.0.0+] CombinationLA | |||
| |- | |- | ||
| |  | | 0x700000E6 | ||
| | 0x010000000000D610 | |||
| | [17.0.0+] AeSystemApplet | |||
| |- | |- | ||
| |  | | 0x700000E7 | ||
| | 0x010000000000D611 | |||
| | [17.0.0+] AeOverlayApplet | |||
| |- | |- | ||
| |  | | 0x700000E8 | ||
| | 0x010000000000D612 | |||
| | [17.0.0+] AeStarter | |||
| |- | |- | ||
| |  | | 0x700000E9 | ||
| | 0x010000000000D613 | |||
| | [17.0.0+] AeLibraryAppletAlone | |||
| |- | |- | ||
| |  | | 0x700000EA | ||
| | 0x010000000000D614 | |||
| | [17.0.0+] AeLibraryApplet1 | |||
| |- | |- | ||
| |  | | 0x700000EB | ||
| | 0x010000000000D615 | |||
| | [17.0.0+] AeLibraryApplet2 | |||
| |- | |- | ||
| |  | | 0x700000EC | ||
| | 0x010000000000D616 | |||
| | [17.0.0+] AeLibraryApplet3 | |||
| |- | |- | ||
| |  | | 0x700000ED | ||
| | 0x010000000000D617 | |||
| | [17.0.0+] AeLibraryApplet4 | |||
| |- | |- | ||
| |  | | 0x700000F0 | ||
| | 0x010000000000D60A | |||
| | [17.0.0+] AppletISA | |||
| |- | |- | ||
| |  | | 0x700000F1 | ||
| | 0x010000000000D60B | |||
| | [17.0.0+] AppletIOA | |||
| |- | |- | ||
| |  | | 0x700000F2 | ||
| | 0x010000000000D60C | |||
| | [17.0.0+] AppletISTA | |||
| |- | |- | ||
| |  | | 0x700000F3 | ||
| | 0x010000000000D60D | |||
| | [17.0.0+] AppletILA1 | |||
| |- | |- | ||
| |  | | 0x700000F4 | ||
| | 0x010000000000D60E | |||
| | [17.0.0+] AppletILA2 | |||
| |- | |- | ||
| |  | | 0x700000FA | ||
| | 0x010000000000D677 | |||
| | [20.1.0+]  | |||
| |} | |||
| = LibraryAppletMode = | |||
| This is "nn::applet::LibraryAppletMode". | |||
| {| class="wikitable" border="1" | |||
| |- | |- | ||
| ! Value | |||
| ! Description | |||
| |- | |- | ||
| |  | | 0x0 | ||
| | AllForeground | |||
| |- | |- | ||
| |  | | 0x1 | ||
| | PartialForeground | |||
| |- | |- | ||
| |  | | 0x2 | ||
| | NoUi | |||
| |- | |- | ||
| |  | | 0x3 | ||
| | PartialForegroundWithIndirectDisplay (see also [[#GetIndirectLayerConsumerHandle]], only used by swkbd [[Software_Keyboard|InlineKeyboard]]) | |||
| |- | |- | ||
| |  | | 0x4 | ||
| | AllForegroundInitiallyHidden (can be used by [7.0.0+] [[Internet_Browser|WebSession]]) | |||
| |} | |||
| = AppletMessage = | |||
| This is "nn::am::AppletMessage". | |||
| {| class="wikitable" border="1" | |||
| |- | |- | ||
| ! Value | |||
| ! Description | |||
| |- | |- | ||
| |  | | 0 || None | ||
| |- | |- | ||
| |  | | 1 || ChangeIntoForeground | ||
| |- | |- | ||
| |  | | 2 || ChangeIntoBackground | ||
| |- | |- | ||
| |  | | 4 || Exit | ||
| |- | |- | ||
| |  | | 6 || ApplicationExited | ||
| |- | |- | ||
| |  | | 7 ||   | ||
| |- | |- | ||
| |  | | 15 || [[#FocusState|FocusStateChanged]] | ||
| |- | |- | ||
| |  | | 16 || [[#SetRestartMessageEnabled|Resume]] | ||
| |- | |- | ||
| |  | | 20 || DetectShortPressingHomeButton | ||
| |- | |- | ||
| |  | | 21 || DetectLongPressingHomeButton | ||
| |- | |- | ||
| | 22 || DetectShortPressingPowerButton | |||
| |- | |- | ||
| |  | | 23 || DetectMiddlePressingPowerButton | ||
| |- | |- | ||
| |  | | 24 || DetectLongPressingPowerButton | ||
| |- | |- | ||
| | 25 || RequestToPrepareSleep | |||
| |- | |- | ||
| |  | | 26 || FinishedSleepSequence | ||
| |- | |- | ||
| |  | | 27 || SleepRequiredByHighTemperature | ||
| |- | |- | ||
| |  | | 28 || SleepRequiredByLowBattery | ||
| |- | |- | ||
| | 29 || AutoPowerDown | |||
| |- | |- | ||
| |  | | 30 || [[#OperationMode|OperationModeChanged]] | ||
| |- | |- | ||
| |  | | 31 || [[#PerformanceMode|PerformanceModeChanged]] | ||
| |- | |- | ||
| |  | | 32 || DetectReceivingCecSystemStandby | ||
| |- | |- | ||
| | 33 || SdCardRemoved | |||
| |- | |- | ||
| |  | | 34 ||   | ||
| |- | |- | ||
| |  | | 50 || LaunchApplicationRequested | ||
| | | |- | ||
| | 51 || [[#SetHandlesRequestToDisplay|RequestToDisplay]] | |||
| |- | |- | ||
| | 55 || ShowApplicationLogo | |||
| |- | |- | ||
| |  | | 56 || HideApplicationLogo | ||
| |- | |- | ||
| |  | | 57 || ForceHideApplicationLogo | ||
| |- | |- | ||
| | 58 ||  | |||
| |- | |- | ||
| |  | | 59 ||   | ||
| |- | |- | ||
| |  | | 60 || FloatingApplicationDetected | ||
| |- | |- | ||
| | 61 || [7.0.0+] PerformanceConfigurationChanged | |||
| |- | |- | ||
| |  | | 70 ||   | ||
| |- | |- | ||
| |  | | 71 ||   | ||
| |- | |- | ||
| | 72 ||  | |||
| |- | |- | ||
| |  | | 73 ||   | ||
| |- | |- | ||
| |  | | 75 ||   | ||
| |- | |- | ||
| |  | | 80 ||   | ||
| |- | |- | ||
| |  | | 81 ||   | ||
| |- | |- | ||
| |  | | 82 ||   | ||
| |- | |- | ||
| |  | | 83 ||   | ||
| |- | |- | ||
| |  | | 85 ||   | ||
| |- | |- | ||
| | 86 ||  | |||
| |- | |- | ||
| |  | | 90 || [[#SetRequiresCaptureButtonShortPressedMessage|DetectShortPressingCaptureButton]] | ||
| |- | |- | ||
| |  | | 92 || [[#SetAlbumImageTakenNotificationEnabled|AlbumScreenShotTaken]] | ||
| |- | |- | ||
| |  | | 93 || AlbumRecordingSaved | ||
| |- | |- | ||
| | 94 ||  | |||
| |- | |- | ||
| |  | | 100 ||   | ||
| |- | |- | ||
| |  | | 101 ||   | ||
| |- | |||
| | 110 || [14.0.0+] DetectShortPressingCaptureButtonForApplet | |||
| |- | |- | ||
| |  | | 111 || [14.0.0+] DetectLongPressingCaptureButtonForApplet | ||
| |- | |- | ||
| |  | | 1000 ||   | ||
| |} | |} | ||
| =  | = OperationMode = | ||
| This is "nn:: | This is "nn::oe::OperationMode". | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 4,371: | Line 4,496: | ||
| ! Description | ! Description | ||
| |- | |- | ||
| | 0 ||  | | 0 || Handheld | ||
| |- | |- | ||
| | 1 ||  | | 1 || Console | ||
| |} | |} | ||
| = PerformanceMode = | |||
| This is "nn::oe::PerformanceMode". | |||
| =  | |||
| This is  | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 4,388: | Line 4,509: | ||
| ! Description | ! Description | ||
| |- | |- | ||
| | 0 ||  | | -1 || Invalid | ||
| |- | |||
| | 0 || Normal | |||
| |- | |- | ||
| | 1 ||  | | 1 || Boost | ||
| |} | |} | ||
| =  | = FocusState = | ||
| This is "nn:: | This is "nn::oe::FocusState". | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| !  | ! Value | ||
| ! Description | |||
| |- | |- | ||
| |  | | 1 || InFocus | ||
| |- | |- | ||
| |  | | 2 || OutOfFocus | ||
| |- | |||
| | 3 || Background | |||
| |} | |} | ||
| This is  | = CpuBoostMode = | ||
| This is "nn::oe::CpuBoostMode". | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 0 || Normal | |||
| |- | |||
| | 1 || FastLoad | |||
| |} | |||
| =  | = WindowOriginMode = | ||
| This is "nn:: | This is "nn::oe::WindowOriginMode". | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| !  | ! Value | ||
| ! Description | |||
| |- | |- | ||
| |  | | 0 || LowerLeft | ||
| |- | |- | ||
| |  | | 1 || UpperLeft | ||
| |} | |} | ||
| =  | = WirelessPriorityMode = | ||
| This is "nn:: | This is "nn::oe::WirelessPriorityMode". | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| !  | ! Value | ||
| ! Description | |||
| |- | |- | ||
| |  | | 0 || Default | ||
| |- | |- | ||
| | 0x4 || 0x4 || [[#LibraryAppletMode]] | | 1 || OptimizedForWlan | ||
| |} | |||
| = TvPowerStateMatchingMode = | |||
| This is "nn::oe::TvPowerStateMatchingMode". This is used with [[#SetTvPowerStateMatchingMode]]. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 0 || Unknown | |||
| |- | |||
| | 1 || Unknown | |||
| |} | |||
| = SystemButtonType = | |||
| This is "nn::am::service::SystemButtonType". This is used with [[#PerformSystemButtonPressingIfInFocus]]/[[#PerformSystemButtonPressing]]. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 1 || PerformHomeButtonShortPressing | |||
| |- | |||
| | 2 || PerformHomeButtonLongPressing | |||
| |- | |||
| | 3 || Short-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]]. | |||
| |- | |||
| | 4 || Long-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]]. | |||
| |- | |||
| | 5 || Shutdown the system. Only available with [[#PerformSystemButtonPressing]]. | |||
| |- | |||
| | 6 || PerformCaptureButtonShortPressing | |||
| |- | |||
| | 7 || PerformCaptureButtonLongPressing | |||
| |} | |||
| = LaunchParameterKind = | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 1 || UserChannel. Application-specific LaunchParameter. | |||
| |- | |||
| | 2 || account PreselectedUser | |||
| |- | |||
| | 3 || Unknown if used by anything? | |||
| |} | |||
| = LibraryAppletExitReason = | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 0 || Normal | |||
| |- | |||
| | 1 || Canceled | |||
| |- | |||
| | 2 || Abnormal | |||
| |- | |||
| | 10 || Unexpected | |||
| |} | |||
| = ProgramSpecifyKind = | |||
| This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]]. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 0 || u8 ProgramIndex. "ExecuteProgram". [[NS_Services|NS]] handles ProgramIndex by launching ApplicationId+ProgramIndex. After using [[#ExecuteProgram]] with this successfully, official user-processes will enter an infinite loop with sleep-thread value 86400000000000. | |||
| |- | |||
| | 1 || [[NCM_services#ApplicationId|ApplicationId]]. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1. | |||
| |- | |||
| | 2 || u64 = value 0. "RestartProgram" | |||
| |} | |||
| ProgramIndex values where the title is not installed should not be used: [[qlaunch]] will display an error message and the current title will become "corrupted", however Home Menu will have an option to repair it. | |||
| = InputDetectionPolicy = | |||
| This is u32 enum "nn::applet::InputDetectionPolicy". | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Value | |||
| ! Description | |||
| |- | |||
| | 0 || Unknown | |||
| |- | |||
| | 1 || Unknown | |||
| |} | |||
| = AppletResourceUserId = | |||
| This is "nn::applet::AppletResourceUserId". Used by a number of non-AM services. | |||
| = AppletAttribute = | |||
| This is "nn::am::AppletAttribute". This struct is 0x80 bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x1 || Flag. When non-zero, two state fields are set to 1. | |||
| |- | |||
| | 0x1 || 0x7F || Unused | |||
| |} | |||
| This is used by [[#OpenLibraryAppletProxy]]. | |||
| = AppletProcessLaunchReason = | |||
| This is "nn::am::service::AppletProcessLaunchReason". This struct is 0x4-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x1 || Flag. When non-zero, LibraryApplets then use [[#OpenCallingLibraryApplet]]. | |||
| |- | |||
| | 0x1 || 0x2 || Always 0. | |||
| |- | |||
| | 0x3 || 0x1 || Always 0. | |||
| |} | |||
| = LibraryAppletInfo = | |||
| This is "nn::am::service::LibraryAppletInfo". This struct is 0x8-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x4 || [[#AppletId]] | |||
| |- | |||
| | 0x4 || 0x4 || [[#LibraryAppletMode]] | |||
| |} | |} | ||
| = AppletKind = | = AppletKind = | ||
| This is "nn::am::service::AppletKind". This is 8-bytes. | This is "nn::am::service::AppletKind". This is 8-bytes. | ||
| = AppletIdentityInfo = | = AppletIdentityInfo = | ||
| This struct is "nn::am::service::AppletIdentityInfo". This struct is 0x10-bytes. | This struct is "nn::am::service::AppletIdentityInfo". This struct is 0x10-bytes. | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| ! Offset || Size || Description | ! Offset || Size || Description | ||
| |- | |- | ||
| | 0x0 || 0x4 || [[#AppletId]] | | 0x0 || 0x4 || [[#AppletId]] | ||
| |- | |- | ||
| | 0x4 || 0x4 || Padding | | 0x4 || 0x4 || Padding | ||
| |- | |- | ||
| | 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | | 0x8 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | ||
| |} | |||
| = ApplicationAttributeForQuest = | |||
| This struct is "nn::applet::ApplicationAttributeForQuest". | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x4 || See [[#ApplicationAttribute]]. | |||
| |- | |||
| | 0x4 || 0x4 || See [[#ApplicationAttribute]]. | |||
| |- | |||
| | 0x8 || 0x4 || [7.0.0+] See [[#ApplicationAttribute]]. | |||
| |} | |||
| User-processes copy the first 0x8-bytes (0xC-bytes with [[#CreateApplicationWithAttributeAndPushAndRequestToStartForQuest]]/[[#CreateApplicationWithAttributeAndRequestToStartForQuest]]) to a [[#ApplicationAttribute]] with the rest of the struct being cleared, which is then passed to the actual cmd (CreateApplication*ToStartForQuest). | |||
| = ApplicationAttribute = | |||
| This struct is "nn::am::ApplicationAttribute". This struct is 0x20-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds. | |||
| |- | |||
| | 0x4 || 0x4 || Default is 0 for non-Quest. Only used when non-zero: unknown value in seconds. | |||
| |- | |||
| | 0x8 || 0x4 || float audio volume. Must be in the range of 0.0f-1.0f. The default is 1.0f. | |||
| |- | |||
| | 0xC || 0x14 || Unused. Default is 0. | |||
| |} | |||
| Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd. | |||
| = ApplicationLaunchProperty = | |||
| This struct is 0x10-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | |||
| |- | |||
| | 0x8 || 0x4 || Application title-version. | |||
| |- | |||
| | 0xC || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application base title. | |||
| |- | |||
| | 0xD || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application update title. | |||
| |- | |||
| | 0xE || 0x1 || Unknown. | |||
| |- | |||
| | 0xF || 0x1 || Padding. | |||
| |} | |||
| = ApplicationLaunchRequestInfo = | |||
| This is "nn::applet::ApplicationLaunchRequestInfo". This struct is 0x10-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]]. | |||
| |- | |||
| | 0x4 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]]. | |||
| |- | |||
| | 0x8 || 0x8 || Unknown. The default is 0x0. | |||
| |} | |||
| = AppletResourceUsageInfo = | |||
| This is "nn::am::service::AppletResourceUsageInfo". This struct is 0x20-bytes. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset || Size || Description | |||
| |- | |||
| | 0x0 || 0x4 || Unknown counter. | |||
| |- | |||
| | 0x4 || 0x4 || Unknown counter. | |||
| |- | |||
| | 0x8 || 0x4 || Output from [[NS_Services|NS GetRightsEnvironmentCountForDebug]]. | |||
| |- | |||
| | 0xC || 0x14 || Always zero. | |||
| |} | |||
| = ApplicationLicenseType = | |||
| This is "nn::oe::ApplicationLicenseType". This is 1-byte. | |||
| = LaunchRequiredVersion = | |||
| 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 | |||
| |} | |} | ||
| =  | = (S2) AdrawFrameBufferInfo = | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| ! Offset || Size || Description | ! Offset || Size || Description | ||
| |- | |- | ||
| | 0x0 ||  | | 0x0 || 0x8 || Id | ||
| |- | |- | ||
| |  | | 0x8 || 0x2 || Width | ||
| |- | |- | ||
| |  | | 0xA || 0x2 || Height | ||
| |- | |- | ||
| | 0xC || 0x4 || BlockCount | |||
| |- | |- | ||
| |  | | 0x10 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x18 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x20 || 0x8 ||   | ||
| |} | |} | ||
| = (S2) ImageInfo = | |||
| =  | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| ! Offset || Size || Description | ! Offset || Size || Description | ||
| |- | |- | ||
| | 0x0 || 0x8 ||  | | 0x0 || 0x8 ||   | ||
| |- | |- | ||
| | 0x8 ||  | | 0x8 || 0x8 || Address | ||
| |- | |- | ||
| |  | | 0x10 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x18 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x20 || 0x8 ||   | ||
| |- | |- | ||
| | 0x28 || 0x8 ||   | |||
| |- | |- | ||
| |  | | 0x30 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x38 || 0x4 || Offset | ||
| |- | |- | ||
| |  | | 0x3C || 0x4 || Size | ||
| |- | |- | ||
| | 0x40 || 0x8 ||   | |||
| |- | |- | ||
| |  | | 0x48 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x50 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x58 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x60 || 0x8 ||   | ||
| |- | |- | ||
| | 0x68 || 0x8 ||  | |||
| |- | |- | ||
| |  | | 0x70 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x78 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x80 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x88 || 0x8 ||   | ||
| |- | |- | ||
| |  | | 0x90 || 0x4 || Flags | ||
| |} | |} | ||