Difference between revisions of "MyPage Applet"

From Nintendo Switch Brew
Jump to navigation Jump to search
(Created page with "This is the MyPage applet launched by Home Menu. Official sw uses this under <code>nn::friends</code>. See AM_services#Library_Applets. == Arg == {| class="wikitable" bor...")
 
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
This is the MyPage applet launched by Home Menu. Official sw uses this under <code>nn::friends</code>.
 
This is the MyPage applet launched by Home Menu. Official sw uses this under <code>nn::friends</code>.
 
See [[AM_services#Library_Applets]].
 
See [[AM_services#Library_Applets]].
 +
 +
== Library Applet Versions ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! System Version || Value
 +
|-
 +
| [1.0.0+] || 0x1
 +
|-
 +
| [9.0.0+] || 0x10000
 +
|}
  
 
== Arg ==
 
== Arg ==
Line 15: Line 25:
 
| 0x8 || 0x10 || u128 userID
 
| 0x8 || 0x10 || u128 userID
 
|-
 
|-
| 0x18 || 0x8 || [[Account_services|NetworkServiceAccountId]]
+
| 0x18 || 0x8 || [[Account_services|NetworkServiceAccountId]] for the other account.
 
|-
 
|-
 
| 0x20 || 0x48 || [[Friend_services|InAppScreenName]]
 
| 0x20 || 0x48 || [[Friend_services|InAppScreenName]]
 
|-
 
|-
 
| 0x68 || 0x48 || [[Friend_services|InAppScreenName]]
 
| 0x68 || 0x48 || [[Friend_services|InAppScreenName]]
 +
|-
 +
| 0xB0 || 0xFF8 || See below.
 +
|}
 +
 +
The is the 0xB0-byte (0x10A8-byte with version 0x10000) struct pushed for the input storage.
 +
 +
The fields following the userID are only set for [[#Type]] ShowUserDetailInfo, StartSendingFriendRequest, StartFriendInvitation, StartSendingFriendInvitation, and ShowReceivedInvitationDetail, for everything else these are cleared.
 +
 +
The layout of the data following the userID with the [9.0.0+] types depends on what type is being used:
 +
 +
StartFriendInvitation:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x18 || 0x4 || s32 NetworkServiceAccountId_count. Must be 1-15. Number of friends to invite.
 +
|-
 +
| 0x1C || 0x4 || Padding.
 +
|-
 +
| 0x20 || 0x8 || User-data size, must be <=0x400.
 +
|-
 +
| 0x28 || 0x400 || Arbitrary user-data, see above size.
 +
|-
 +
| 0x428 || 0xC00 || [[Friend_services|FriendInvitationGameModeDescription]]
 +
|}
 +
 +
StartSendingFriendInvitation:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x18 || 0x4 || s32 NetworkServiceAccountId_count. Must be 1-15. Number of friends to invite.
 +
|-
 +
| 0x1C || 0x4 || Padding.
 +
|-
 +
| 0x20 || 0x8*NetworkServiceAccountId_count || [[Account_services|NetworkServiceAccountId]] list.
 +
|-
 +
| 0xA0 || 0x8 || User-data size, must be <=0x400.
 +
|-
 +
| 0xA8 || 0x400 || Arbitrary user-data, see above size.
 +
|-
 +
| 0x4A8 || 0xC00 || [[Friend_services|FriendInvitationGameModeDescription]]
 
|}
 
|}
  
The is the 0xB0-byte struct pushed for the input storage.
+
ShowReceivedInvitationDetail:
  
The fields following the userID are only set for [[#Type]] ShowUserDetailInfo/StartSendingFriendRequest, for everything else these are cleared.
+
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x18 || 0x8 || [[Friend_services|FriendInvitationId]]
 +
|-
 +
| 0x20 || 0x8 || [[Friend_services|FriendInvitationGroupId]]
 +
|}
  
 
== Type ==
 
== Type ==
Line 31: Line 98:
 
! Name || Type value || PlayStartupSound || Description
 
! Name || Type value || PlayStartupSound || Description
 
|-
 
|-
| ShowFriendList || 0 || false ||  
+
| ShowFriendList || 0 || false || Launches the applet with the "Friend List" menu initially selected.
 
|-
 
|-
 
| ShowUserDetailInfo || 1 || false ||  
 
| ShowUserDetailInfo || 1 || false ||  
Line 37: Line 104:
 
| StartSendingFriendRequest || 2 || false ||  
 
| StartSendingFriendRequest || 2 || false ||  
 
|-
 
|-
| ShowMethodsOfSendingFriendRequest || 3 || false ||  
+
| ShowMethodsOfSendingFriendRequest || 3 || false || Launches the applet with the "Add Friend" menu initially selected.
 
|-
 
|-
| StartFacedFriendRequest || 4 || false ||  
+
| StartFacedFriendRequest || 4 || false || Launches the applet where the "Search for Local Users" menu is initially shown. Returning from this menu will exit the applet.
 
|-
 
|-
| ShowReceivedFriendRequestList || 5 || false ||  
+
| ShowReceivedFriendRequestList || 5 || false || Launches the applet where the "Received Friend Requests" menu is initially shown. Returning from this menu will exit the applet.
 
|-
 
|-
| ShowBlockedUserList || 6 || false ||  
+
| ShowBlockedUserList || 6 || false || Launches the applet where the "Blocked-User List" menu is initially shown. Returning from this menu will exit the applet.
 
|-
 
|-
| ShowMyProfile || 7 || false ||  
+
| ShowMyProfile || 7 || false || Launches the applet with the "Profile" menu initially selected.
 
|-
 
|-
 
| ShowMyProfileForHomeMenu || 7 || true || Identical to ShowMyProfile except for PlayStartupSound.
 
| ShowMyProfileForHomeMenu || 7 || true || Identical to ShowMyProfile except for PlayStartupSound.
 +
|-
 +
| [9.0.0+] StartFriendInvitation || 8 || false || Launches the applet for sending online-play invites to friends, where the friends are selected via the UI.
 +
|-
 +
| [9.0.0+] StartSendingFriendInvitation || 9 || false ||
 +
|-
 +
| [9.0.0+] ShowReceivedInvitationDetail || 10 || false ||
 
|}
 
|}
  
 
== Usage ==
 
== Usage ==
User-processes should push a common arguments struct (version=0x1) as well as an [[#Arg]] struct. See [[#Type]] for the commonargs PlayStartupSound flag value. After starting the applet, official sw immediately closes it (no output storage is handled) - except for StartSendingFriendRequest, which returns an output storage containing the Result.
+
User-processes should push a common arguments struct as well as an [[#Arg]] struct. See [[#Type]] for the commonargs PlayStartupSound flag value. After starting the applet, official sw immediately closes it (no output storage is handled) - except for StartSendingFriendRequest/StartFriendInvitation/StartSendingFriendInvitation which returns an output storage containing the Result.
  
 
[[Category:Library Applets]]
 
[[Category:Library Applets]]

Latest revision as of 03:55, 12 November 2019

This is the MyPage applet launched by Home Menu. Official sw uses this under nn::friends. See AM_services#Library_Applets.

Library Applet Versions

System Version Value
[1.0.0+] 0x1
[9.0.0+] 0x10000

Arg

Offset Size Description
0x0 0x4 #Type
0x4 0x4 Padding
0x8 0x10 u128 userID
0x18 0x8 NetworkServiceAccountId for the other account.
0x20 0x48 InAppScreenName
0x68 0x48 InAppScreenName
0xB0 0xFF8 See below.

The is the 0xB0-byte (0x10A8-byte with version 0x10000) struct pushed for the input storage.

The fields following the userID are only set for #Type ShowUserDetailInfo, StartSendingFriendRequest, StartFriendInvitation, StartSendingFriendInvitation, and ShowReceivedInvitationDetail, for everything else these are cleared.

The layout of the data following the userID with the [9.0.0+] types depends on what type is being used:

StartFriendInvitation:

Offset Size Description
0x18 0x4 s32 NetworkServiceAccountId_count. Must be 1-15. Number of friends to invite.
0x1C 0x4 Padding.
0x20 0x8 User-data size, must be <=0x400.
0x28 0x400 Arbitrary user-data, see above size.
0x428 0xC00 FriendInvitationGameModeDescription

StartSendingFriendInvitation:

Offset Size Description
0x18 0x4 s32 NetworkServiceAccountId_count. Must be 1-15. Number of friends to invite.
0x1C 0x4 Padding.
0x20 0x8*NetworkServiceAccountId_count NetworkServiceAccountId list.
0xA0 0x8 User-data size, must be <=0x400.
0xA8 0x400 Arbitrary user-data, see above size.
0x4A8 0xC00 FriendInvitationGameModeDescription

ShowReceivedInvitationDetail:

Offset Size Description
0x18 0x8 FriendInvitationId
0x20 0x8 FriendInvitationGroupId

Type

Name Type value PlayStartupSound Description
ShowFriendList 0 false Launches the applet with the "Friend List" menu initially selected.
ShowUserDetailInfo 1 false
StartSendingFriendRequest 2 false
ShowMethodsOfSendingFriendRequest 3 false Launches the applet with the "Add Friend" menu initially selected.
StartFacedFriendRequest 4 false Launches the applet where the "Search for Local Users" menu is initially shown. Returning from this menu will exit the applet.
ShowReceivedFriendRequestList 5 false Launches the applet where the "Received Friend Requests" menu is initially shown. Returning from this menu will exit the applet.
ShowBlockedUserList 6 false Launches the applet where the "Blocked-User List" menu is initially shown. Returning from this menu will exit the applet.
ShowMyProfile 7 false Launches the applet with the "Profile" menu initially selected.
ShowMyProfileForHomeMenu 7 true Identical to ShowMyProfile except for PlayStartupSound.
[9.0.0+] StartFriendInvitation 8 false Launches the applet for sending online-play invites to friends, where the friends are selected via the UI.
[9.0.0+] StartSendingFriendInvitation 9 false
[9.0.0+] ShowReceivedInvitationDetail 10 false

Usage

User-processes should push a common arguments struct as well as an #Arg struct. See #Type for the commonargs PlayStartupSound flag value. After starting the applet, official sw immediately closes it (no output storage is handled) - except for StartSendingFriendRequest/StartFriendInvitation/StartSendingFriendInvitation which returns an output storage containing the Result.