Line 1: |
Line 1: |
| Nintendo Switch does not have a normal Internet Browser for user usage. However, there is multiple browser applets. It is the [https://web.archive.org/web/20170304075230/https://gl.access-company.com/news_event/archives/2017/170303/ NetFront NX] browser, which is based on Webkit. | | Nintendo Switch does not have a normal Internet Browser for user usage. However, there is multiple browser applets. It is the [https://web.archive.org/web/20170304075230/https://gl.access-company.com/news_event/archives/2017/170303/ NetFront NX] browser, which is based on Webkit. |
| | | |
− | When linking the Nintendo Account with Facebook, the Facebook Auth website will open, offering a search box that can be used to browse the Internet ("LoginApplet"). Alternatively, it can be accessed with [https://gbatemp.net/threads/web-browser-kind-of-on-the-switch.463094/ custom DNS settings] which simulate a Wi-Fi login page ("WifiWebAuthApplet" for captive-portal). | + | When linking the Nintendo Account with Facebook, the Facebook Auth website will open, offering a search box that can be used to browse the Internet ("LoginApplet"). Alternatively, it can be accessed with custom DNS settings which simulate a Wi-Fi login page ([[#WifiWebAuthApplet|WifiWebAuthApplet]] for captive-portal). |
| | | |
| == Known User Agent Strings == | | == Known User Agent Strings == |
Line 89: |
Line 89: |
| | Just displays an error-code. | | | Just displays an error-code. |
| | Yes | | | Yes |
| + | | 0100000000001010 |
| + | | |
| + | |- |
| + | | NsoApplet |
| + | | Nintendo Switch Online menu |
| + | | |
| + | | |
| | 0100000000001010 | | | 0100000000001010 |
| | | | | |
Line 160: |
Line 167: |
| You can invite friends to the room via | | You can invite friends to the room via |
| the Nintendo Switch Online Lounge app. | | the Nintendo Switch Online Lounge app. |
| + | |
| + | === NsoApplet === |
| + | [11.0.0+] This applet handles the new Nintendo Switch Online menu, which is launched from qlaunch. |
| + | |
| + | The initial page loaded by this applet is: <nowiki>"https://%.nso.nintendo.net/</nowiki>{string from [[#TLVs|TLV]] 0x2}" |
| | | |
| == ShopN == | | == ShopN == |
Line 212: |
Line 224: |
| The heap for the main-codebin (<code>malloc</code>/<code>operator new</code>) uses nn::lmem::*ExpHeap. [8.0.0+] <code>malloc</code>/<code>operator new</code> now checks the return-addr (addr located in a relevant NRO), with wkc_malloc_crashonfailure being called for the allocation if the check passes, otherwise a normal allocation is done (the code which runs for this will Abort if allocation fails). | | The heap for the main-codebin (<code>malloc</code>/<code>operator new</code>) uses nn::lmem::*ExpHeap. [8.0.0+] <code>malloc</code>/<code>operator new</code> now checks the return-addr (addr located in a relevant NRO), with wkc_malloc_crashonfailure being called for the allocation if the check passes, otherwise a normal allocation is done (the code which runs for this will Abort if allocation fails). |
| | | |
− | <code>malloc</code> passes the input size directly to the called func. <code>operator new</code> when handling normal non-wkc allocations passes the following to the called func: <code>sxtw x1, {inw0}</code> (for wkc allocations the size is passed directly). | + | <code>malloc</code> passes the input size directly to the called func. <code>operator new</code> when handling normal non-wkc allocations passes the following to the called func: <code>sxtw x1, {inw0}</code> (for wkc allocations the size is passed directly). [12.1.0+] The size is now passed directly (64bit) without using sxtw. |
| + | |
| + | [11.0.0+] There's now optional code for using [[SVC|svcMapPhysicalMemoryUnsafe]] etc, however it's unknown what sets the flag for this. An Abort string used this is: "{path}/TransferredMemoryManager.cpp" |
| | | |
| == Applet Launching == | | == Applet Launching == |
Line 267: |
Line 281: |
| | 7 | | | 7 |
| | Lobby | | | Lobby |
| + | |- |
| + | | 8 |
| + | | [[#NsoApplet|Lhub]] |
| |} | | |} |
| | | |
Line 280: |
Line 297: |
| When receiving messages, it will repeatedly pop Interactive output storage until no more are available. Non-Ack messages are Acked. | | When receiving messages, it will repeatedly pop Interactive output storage until no more are available. Non-Ack messages are Acked. |
| * Ack: Verifies that message_count is not already 0, then decrements it. Then cur_size is decreased by the u32 loaded from msgcontent+0. | | * Ack: Verifies that message_count is not already 0, then decrements it. Then cur_size is decreased by the u32 loaded from msgcontent+0. |
− | * 0x0: Does some validation. Reads the message content into the user buffer, when contentsize is non-zero. The original contentsize is written to an user output param. The last byte in the user buffer (contentsize clamped to the user max-buf-size) is set to 0 for NUL-termination. | + | * 0x0: Does some validation. Reads the message content into the user buffer, when contentsize is non-zero. The original contentsize is written to an user output param. The last byte in the user buffer (contentsize clamped to the user max-buf-size, -1) is set to 0 for NUL-termination. |
| | | |
| Next info was tested in 9.0.0 | | Next info was tested in 9.0.0 |
Line 906: |
Line 923: |
| | u8 bool | | | u8 bool |
| | MediaPlayerUiEnabled | | | MediaPlayerUiEnabled |
| + | |- |
| + | | [11.0.0+] |
| + | | |
| + | | 0x44 |
| + | | 0x1 |
| + | | bool |
| + | | TransferMemoryEnabled |
| |} | | |} |
| | | |
Line 918: |
Line 942: |
| [6.0.0+] <code>AddAlbumEntryAndMediaData</code> was added: | | [6.0.0+] <code>AddAlbumEntryAndMediaData</code> was added: |
| * Looks for AlbumEntry{N} TLVs, when a TLV is not found it is written, then the associated AdditionalMediaData{N} TLV is written the same way as AdditionalMediaData0. If all AlbumEntry{N} TLVs already exist, this returns without writing anything. | | * Looks for AlbumEntry{N} TLVs, when a TLV is not found it is written, then the associated AdditionalMediaData{N} TLV is written the same way as AdditionalMediaData0. If all AlbumEntry{N} TLVs already exist, this returns without writing anything. |
| + | |
| + | TransferMemoryEnabled: sdknso only exposes this for the Web applet. The sdknso func uses <code>nn::os::QueryMemoryInfo</code> at the start of the func, however the output is unused. The applet doesn't seem to parse this TLV. |
| | | |
| ==== Output TLVs ==== | | ==== Output TLVs ==== |