Difference between revisions of "Profile Selector"
Line 16: | Line 16: | ||
== UiSettings == | == UiSettings == | ||
+ | This is "nn::account::UiSettings". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset || Size || Description | ||
+ | |- | ||
+ | | 0x0 || 0x4 || [[#UiMode]] | ||
+ | |- | ||
+ | | 0x4 || 0x4 || | ||
+ | |- | ||
+ | | 0x8 || 0x80 || u128 invalidUidList[8]. This is copied from [[#UserSelectionSettings]]. | ||
+ | |- | ||
+ | | 0x88 || 0x8 || | ||
+ | |- | ||
+ | | 0x90 || 0x1 || u8 isNetworkServiceAccountRequired. This is copied from [[#UserSelectionSettings]]. | ||
+ | |- | ||
+ | | 0x91 || 0x1 || u8 isSkipEnabled. This is copied from [[#UserSelectionSettings]]. | ||
+ | |- | ||
+ | | 0x92 || 0x1 || | ||
+ | |- | ||
+ | | 0x93 || 0x1 || u8 isPermitted. | ||
+ | |- | ||
+ | | 0x94 || 0x1 || u8 showSkipButton. This is copied from [[#UserSelectionSettings]]. | ||
+ | |- | ||
+ | | 0x95 || 0x1 || u8 additionalSelect. This is copied from [[#UserSelectionSettings]]. | ||
+ | |- | ||
+ | | 0x96 || 0x1 || This is copied from [[#UserSelectionSettingsForSystemService]]. | ||
+ | |- | ||
+ | | 0x97 || 0x1 || | ||
+ | |- | ||
+ | | 0x98 || 0x4 || This is copied from [[#UserSelectionSettingsForSystemService]]. | ||
+ | |- | ||
+ | | 0x9C || 0x4 || | ||
+ | |} | ||
+ | |||
This has size 0xA0 (0x98 with [1.0.0]) and seems to only affect the UI display. Typical value is all zero with byte 0x96 equal to 0x01. | This has size 0xA0 (0x98 with [1.0.0]) and seems to only affect the UI display. Typical value is all zero with byte 0x96 equal to 0x01. | ||
Setting the first byte to 1 will make the applet display in order to create a new user. | Setting the first byte to 1 will make the applet display in order to create a new user. | ||
"starter" sets the first byte to 5 in order to display initial user setup. | "starter" sets the first byte to 5 in order to display initial user setup. | ||
− | [2.0.0+]: sdknso ShowUserSelectorForSystem now has an additional input param UserSelectionSettingsForSystemService: u8 +4 is copied to UiSettings+0x96, and u32 +0 is copied to UiSettings+ | + | [2.0.0+]: sdknso ShowUserSelectorForSystem now has an additional input param UserSelectionSettingsForSystemService: u8 +4 is copied to UiSettings+0x96, and u32 +0 is copied to UiSettings+0x98. sdknso ShowUserSelectorForLauncher/ShowUserSelector now sets u8 UiSettings+0x96 to value 1. |
− | == | + | == UiMode == |
− | This is | + | This is "nn::account::UiMode". |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! Offset || Size || | + | ! Value || Description |
+ | |- | ||
+ | | 0 || SelectUser | ||
+ | |- | ||
+ | | 1 || CreateUser | ||
+ | |- | ||
+ | | 2 || EnsureNsaAvailable | ||
+ | |- | ||
+ | | 3 || EditUserIcon | ||
+ | |- | ||
+ | | 4 || EditUserNickname | ||
+ | |- | ||
+ | | 5 || CreateUserForStarter | ||
+ | |- | ||
+ | | 6 || AcquireNintendoAccountAuthorization | ||
+ | |- | ||
+ | | 7 || IntroduceExternalNetworkServiceAccount | ||
+ | |- | ||
+ | | 8 || IntroduceExternalNetworkServiceAccountForRegistration | ||
+ | |- | ||
+ | | 9 || [3.0.0+] LinkAccountNnid | ||
+ | |- | ||
+ | | 10 || [6.0.0+] ShowLicenseRequirementsForNetworkService | ||
+ | |- | ||
+ | | 11 || [6.0.0+] ShowLicenseRequirementsForNetworkServiceWithUserContext | ||
+ | |- | ||
+ | | 12 || [8.0.0+] CreateUserForImmediateNaLoginTest | ||
+ | |} | ||
+ | |||
+ | == UserSelectionSettings == | ||
+ | This is "nn::account::UserSelectionSettings ". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset || Size || Description | ||
+ | |- | ||
+ | | 0x0 || 0x80 || u128 invalidUidList[8] | ||
+ | |- | ||
+ | | 0x80 || 0x1 || u8 isSkipEnabled | ||
+ | |- | ||
+ | | 0x81 || 0x1 || u8 isNetworkServiceAccountRequired | ||
+ | |- | ||
+ | | 0x82 || 0x1 || u8 showSkipButton | ||
+ | |- | ||
+ | | 0x83 || 0x1 || u8 additionalSelect | ||
+ | |- | ||
+ | | 0x84 || 0x1 || u8 isUnqualifiedUserSelectable | ||
+ | |} | ||
+ | |||
+ | == UserSelectionSettingsForSystemService == | ||
+ | This is "nn::account::UserSelectionSettingsForSystemService". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset || Size || Description | ||
+ | |- | ||
+ | | 0x0 || 0x4 || | ||
+ | |- | ||
+ | | 0x4 || 0x1 || | ||
+ | |- | ||
+ | | 0x5 || 0x3 || u8 padding[3] | ||
+ | |} | ||
+ | |||
+ | == UiResult == | ||
+ | This is "nn::account::UiResult". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x8 || Result (0 = Success, 2 = Failure) | | 0x0 || 0x8 || Result (0 = Success, 2 = Failure) | ||
|- | |- | ||
| 0x8 || 0x10 || UUID of selected user | | 0x8 || 0x10 || UUID of selected user | ||
− | |||
|} | |} | ||
Revision as of 21:09, 2 December 2019
This is the applet presented when launching a game that allows the user to select a user.
See AM_services#Library_Applets. The profile selector expects a two IStorage inputs and a single IStorage output.
Library Applet Versions
System Version | Value |
---|---|
[1.0.0+] | 0x1 |
[2.0.0+] | 0x10000 |
[6.0.0+] | 0x20000 |
UiSettings
This is "nn::account::UiSettings".
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | #UiMode |
0x4 | 0x4 | |
0x8 | 0x80 | u128 invalidUidList[8]. This is copied from #UserSelectionSettings. |
0x88 | 0x8 | |
0x90 | 0x1 | u8 isNetworkServiceAccountRequired. This is copied from #UserSelectionSettings. |
0x91 | 0x1 | u8 isSkipEnabled. This is copied from #UserSelectionSettings. |
0x92 | 0x1 | |
0x93 | 0x1 | u8 isPermitted. |
0x94 | 0x1 | u8 showSkipButton. This is copied from #UserSelectionSettings. |
0x95 | 0x1 | u8 additionalSelect. This is copied from #UserSelectionSettings. |
0x96 | 0x1 | This is copied from #UserSelectionSettingsForSystemService. |
0x97 | 0x1 | |
0x98 | 0x4 | This is copied from #UserSelectionSettingsForSystemService. |
0x9C | 0x4 |
This has size 0xA0 (0x98 with [1.0.0]) and seems to only affect the UI display. Typical value is all zero with byte 0x96 equal to 0x01. Setting the first byte to 1 will make the applet display in order to create a new user. "starter" sets the first byte to 5 in order to display initial user setup.
[2.0.0+]: sdknso ShowUserSelectorForSystem now has an additional input param UserSelectionSettingsForSystemService: u8 +4 is copied to UiSettings+0x96, and u32 +0 is copied to UiSettings+0x98. sdknso ShowUserSelectorForLauncher/ShowUserSelector now sets u8 UiSettings+0x96 to value 1.
UiMode
This is "nn::account::UiMode".
Value | Description |
---|---|
0 | SelectUser |
1 | CreateUser |
2 | EnsureNsaAvailable |
3 | EditUserIcon |
4 | EditUserNickname |
5 | CreateUserForStarter |
6 | AcquireNintendoAccountAuthorization |
7 | IntroduceExternalNetworkServiceAccount |
8 | IntroduceExternalNetworkServiceAccountForRegistration |
9 | [3.0.0+] LinkAccountNnid |
10 | [6.0.0+] ShowLicenseRequirementsForNetworkService |
11 | [6.0.0+] ShowLicenseRequirementsForNetworkServiceWithUserContext |
12 | [8.0.0+] CreateUserForImmediateNaLoginTest |
UserSelectionSettings
This is "nn::account::UserSelectionSettings ".
Offset | Size | Description |
---|---|---|
0x0 | 0x80 | u128 invalidUidList[8] |
0x80 | 0x1 | u8 isSkipEnabled |
0x81 | 0x1 | u8 isNetworkServiceAccountRequired |
0x82 | 0x1 | u8 showSkipButton |
0x83 | 0x1 | u8 additionalSelect |
0x84 | 0x1 | u8 isUnqualifiedUserSelectable |
UserSelectionSettingsForSystemService
This is "nn::account::UserSelectionSettingsForSystemService".
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | |
0x4 | 0x1 | |
0x5 | 0x3 | u8 padding[3] |
UiResult
This is "nn::account::UiResult".
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Result (0 = Success, 2 = Failure) |
0x8 | 0x10 | UUID of selected user |
Usage
User-processes should push a common arguments struct and the typical UserSelectionConfig struct as well. After pushing in the data and calling start, user-processes should wait upon the PopOutDataEvent and then pop a single IStorage to obtain the result structure described above.