Line 200:
Line 200:
It is also possible to change the account slot number of an account by using [[ACTA:SwapAccounts]].
It is also possible to change the account slot number of an account by using [[ACTA:SwapAccounts]].
+
+
Account slot -2 (0xFE) always refers to the currently loaded account.
== Console Accounts ==
== Console Accounts ==
Line 211:
Line 213:
Associating a console account with a Nintendo Network ID (server-side) is facilitated by the commands [[ACTA:BindToNewServerAccount]] (to create and link an NNID) or [[ACTA:BindToExistentServerAccount]] (to log into an existing linked NNID).
Associating a console account with a Nintendo Network ID (server-side) is facilitated by the commands [[ACTA:BindToNewServerAccount]] (to create and link an NNID) or [[ACTA:BindToExistentServerAccount]] (to log into an existing linked NNID).
−
Account slot -2 (0xFE) always refers to the currently loaded account.
+
Nintendo Network IDs can be transferred to other consoles using [[ACTA:ReserveTransfer]] initially, and then [[ACTA:CompleteTransfer]].
+
+
NNIDs can be deleted using either [[ACTA:DeleteServerAccount]], [[ACTA:InactivateAccountDeviceAssociation]], [[ACTA:DeleteAccountDeviceAssociation]] or [[ACTA:ReserveServerAccountDeletion]].
= Password Management =
= Password Management =
Line 259:
Line 263:
See below how these types are determined by default. These types can also be overridden using [[ACTA:SetHostServerSettings]], [[ACTA:SetDefaultHostServerSettings]], [[ACTA:SetHostServerSettingsStr]], and [[ACTA:SetDefaultHostServerSettingsStr]].
See below how these types are determined by default. These types can also be overridden using [[ACTA:SetHostServerSettings]], [[ACTA:SetDefaultHostServerSettings]], [[ACTA:SetHostServerSettingsStr]], and [[ACTA:SetDefaultHostServerSettingsStr]].
−
−
Nintendo Network IDs can be transferred to other consoles using [[ACTA:ReserveTransfer]] initially, and then [[ACTA:CompleteTransfer]].
−
−
NNIDs can be deleted using either [[ACTA:DeleteServerAccount]], [[ACTA:InactivateAccountDeviceAssociation]], [[ACTA:DeleteAccountDeviceAssociation]] or [[ACTA:ReserveServerAccountDeletion]].
The base URL for the Nintendo Network Account Server (NNAS) is: <code>https://[<prefix>]account.nintendo.net</code>.
The base URL for the Nintendo Network Account Server (NNAS) is: <code>https://[<prefix>]account.nintendo.net</code>.
Line 411:
Line 411:
| 0x3 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account slot
| 0x3 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account slot
|-
|-
−
| 0x4 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Difference between server time and UTC device time (in nanoseconds)
+
| 0x4 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || NetworkTimeDifference: Difference between server time and UTC device time (in nanoseconds)
|-
|-
| 0x5 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || PersistentId
| 0x5 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || PersistentId
Line 423:
Line 423:
| 0x9 || 0x101 || [[ACTU:AcquireAccountInfo|AcquireAccountInfo]] || Mail address
| 0x9 || 0x101 || [[ACTU:AcquireAccountInfo|AcquireAccountInfo]] || Mail address
|-
|-
−
| 0xA || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || Birthdate
+
| 0xA || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || [[ACT_Services#Birthdate|Birth Date]]
−
{| class="wikitable" border="1"
−
|-
−
! Offset !! Size !! Description
−
|-
−
| 0x0 || 0x2 || Year
−
|-
−
| 0x2 || 0x1 || Month
−
|-
−
| 0x3 || 0x1 || Day
−
|}
|-
|-
| 0xB || 0x3 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated Country Name
| 0xB || 0x3 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated Country Name
Line 454:
Line 444:
| 0x8 || 0x8 || u64 TransferableIDBase
| 0x8 || 0x8 || u64 TransferableIDBase
|-
|-
−
| 0x10 || 0x60 || [[Mii#Mii_format|Mii]]
+
| 0x10 || 0x60 || [[ACT_Services#CFLStoreData|Mii CFLStoreData]]
|-
|-
| 0x70 || (10 + 1) * 2 || 10-character UTF-16 Mii Display Name
| 0x70 || (10 + 1) * 2 || 10-character UTF-16 Mii Display Name
Line 462:
Line 452:
| 0x97 || 1 || padding
| 0x97 || 1 || padding
|-
|-
−
| 0x98 || 0x4 || Birthdate
+
| 0x98 || 0x4 || [[ACT_Services#Birthdate|Birth Date]]
−
{| class="wikitable" border="1"
−
|-
−
! Offset !! Size !! Description
−
|-
−
| 0x0 || 0x2 || Year
−
|-
−
| 0x2 || 0x1 || Month
−
|-
−
| 0x3 || 0x1 || Day
−
|}
|-
|-
| 0x9C || 0x4 || u32, PrincipalID
| 0x9C || 0x4 || u32, PrincipalID
|}
|}
|-
|-
−
| 0x12 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] ||
+
| 0x12 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || Account server types
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset !! Size !! Description
! Offset !! Size !! Description
|-
|-
−
| 0x0 || 0x1 || NNAS (Nintendo Network Authentication Server) Type
+
| 0x0 || 0x1 || [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS (Nintendo Network Authentication Server) Type]]
|-
|-
−
| 0x1 || 0x1 || [[Friend_Services#Server_Types|NFS (Nintendo Friend Server) Type Value]]
+
| 0x1 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type Value]]
|-
|-
−
| 0x2 || 0x1 || [[Friend_Services#Server_Types|NFS (Nintendo Friend Server) Number]]
+
| 0x2 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Number]]
|-
|-
| 0x3 || 0x1 || padding (0)
| 0x3 || 0x1 || padding (0)
Line 503:
Line 483:
| 0x19 || 0x8 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || UtcOffset
| 0x19 || 0x8 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || UtcOffset
|-
|-
−
| 0x1A || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || IsCommited
+
| 0x1A || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || IsCommitted
|-
|-
| 0x1B || 0x16 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || 10-character UTF-16 Mii Name (10 characters + NULL termination)
| 0x1B || 0x16 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || 10-character UTF-16 Mii Name (10 characters + NULL termination)
|-
|-
−
| 0x1C || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-termiinated NfsPassword
+
| 0x1C || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated NfsPassword
|-
|-
| 0x1D || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || HasEciVirtualAccount (checks whether EciVirtualAccount has a value)
| 0x1D || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || HasEciVirtualAccount (checks whether EciVirtualAccount has a value)
Line 527:
Line 507:
|-
|-
| 0x22 || 0x29 || ASCII NULL-terminated refresh token
| 0x22 || 0x29 || ASCII NULL-terminated refresh token
+
|-
+
| 0x4B || 0x1 || padding
+
|}
+
|-
+
| 0x22 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || IsApplicationUpdateRequired
+
|-
+
| 0x23 || 0x4 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account server types
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x1 || [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS (Nintendo Network Authentication Server) Type]]
+
|-
+
| 0x1 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type Value]]
+
|-
+
| 0x2 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Number]]
+
|-
+
| 0x3 || 0x1 || padding (0)
|}
|}
|-
|-
Line 542:
Line 540:
! Offset !! Size !! Description
! Offset !! Size !! Description
|-
|-
−
| 0x0 || 0x21 || ASCII NULL-terminated NNAS subdomain
+
| 0x0 || 0x21 || ASCII NULL-terminated [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS]] subdomain
|-
|-
−
| 0x21 || 0x3 || [[Friend_Services#Server_Types|NFS (Nintendo Friend Server) Environment]]
+
| 0x21 || 0x3 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type]]
|}
|}
|-
|-
Line 552:
Line 550:
! Offset !! Size !! Description
! Offset !! Size !! Description
|-
|-
−
| 0x0 || 0x21 || ASCII NULL-terminated NNAS subdomain
+
| 0x0 || 0x21 || ASCII NULL-terminated [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS]] subdomain
|-
|-
−
| 0x21 || 0x3 || [[Friend_Services#Server_Types|NFS (Nintendo Friend Server) Environment]]
+
| 0x21 || 0x3 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type]]
|}
|}
|-
|-
−
| 0x2A || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || first 8 bytes of <code>SHA256 ( [[AM:GetDeviceId]]() as 4 little endian bytes + 'A2257354' )</code>
+
| 0x2A || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || DeviceHash: first 8 bytes of <code>SHA256 ( [[AM:GetDeviceId]]() as 4 little endian bytes + A2257354 )</code>
|-
|-
| 0x2B || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || FpLocalAccountId (local account ID of [[Friend_Services|friends sysmodule]])
| 0x2B || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || FpLocalAccountId (local account ID of [[Friend_Services|friends sysmodule]])
Line 571:
Line 569:
= Types =
= Types =
+
== Birthdate ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x2 || u16, Year
+
|-
+
| 0x2 || 0x1 || u8, Month
+
|-
+
| 0x3 || 0x1 || u8, Day
+
|}
+
== CFLStoreData ==
== CFLStoreData ==
This is the Mii format used in ACT commands.
This is the Mii format used in ACT commands.
Line 583:
Line 593:
| 0x5E || 0x2 || CRC16 over the above 0x5E bytes (see [[Mii#Checksum|Mii Checksum]] for details on the algorithm)
| 0x5E || 0x2 || CRC16 over the above 0x5E bytes (see [[Mii#Checksum|Mii Checksum]] for details on the algorithm)
|}
|}
+
+
== Mii Image Types ==
+
{| class="wikitable" border="1"
+
|-
+
! Value !! Description
+
|-
+
| 0 || Primary Mii Image
+
|-
+
| 1 || Unknown
+
|-
+
| 2 || Unknown
+
|-
+
| 3 || Unknown
+
|-
+
| 4 || Unknown
+
|-
+
| 5 || Unknown
+
|-
+
| 6 || Unknown
+
|-
+
| 7 || Unknown
+
|-
+
| 8 || Unknown
+
|}
+
== Timezone ==
== Timezone ==
Line 598:
Line 633:
|-
|-
| 0x88 || 0x8 || s64, UtcOffset in seconds
| 0x88 || 0x8 || s64, UtcOffset in seconds
+
|}
+
+
== AcquireTimeZoneListData ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x4 || u32, Capacity (32)
+
|-
+
| 0x4 || 0x4 || u32, Count
+
|-
+
| 0x8 || 0x90 * Capacity || [[ACT_Services#Timezone|Timezones]]
|}
|}
Line 610:
Line 657:
|-
|-
| 0x6 || 0x2 || u16, EULA version
| 0x6 || 0x2 || u16, EULA version
+
|}
+
+
== InquireBindingToExistentServerAccountData ==
+
Represents the device information for the console linked to the NNID.
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x1 || bool, HasMii
+
|-
+
| 0x1 || 0x3 || padding
+
|-
+
| 0x4 || 0x60 || [[ACT_Services#CFLStoreData|Mii CFLStoreData]]
+
|-
+
| 0x64 || 0x4 || u32, PrincipalId
+
|-
+
| 0x68 || 0x1 || bool, CoppaRequiredFlag
+
|-
+
| 0x69 || 0x3 || padding
+
|-
+
| 0x6C || 0x5 + 1 || ASCII 5-character CoppaCode + NULL termination
+
|-
+
| 0x72 || 0x100 + 1 || ASCII 256-character ParentEmail + NULL termination
+
|-
+
| 0x173 || 0x1 || padding
+
|-
+
| 0x174 || 0x4 || [[ACT_Services#Birthdate|Birth Date]]
+
|}
+
+
==SendCoppaCodeMailData==
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x5 + 1 || 5-character ASCII CoppaCode + NULL termination
+
|-
+
| 0x6 || 0x100 + 1 || 256-character ASCII ParentEmail + NULL termination
+
|}
+
+
==AcquireEulaData/AcquireEulaListData==
+
Data returned from [[ACTU:AcquireEula]] and [[ACTU:AcquireEulaList]] uses a special format.
+
+
===EulaHeader===
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x3 || 2-character Country code + NULL termination
+
|-
+
| 0x3 || 0x1 || padding
+
|-
+
| 0x4 || 0x3 || 2-character Language code + NULL termination
+
|-
+
| 0x7 || 0x1 || padding
+
|-
+
| 0x8 || 0x2 || u16, Version
+
|-
+
| 0xA || 0x2 || padding
+
|-
+
| 0xC || 0x4 || u32, end offset of this EULA within full data blob
+
|-
+
| 0x10 || 0x4 || EulaType offset
+
|-
+
| 0x14 || 0x4 || AgreeText offset
+
|-
+
| 0x18 || 0x4 || NonAgreeText offset
+
|-
+
| 0x1C || 0x4 || LanguageName offset
+
|-
+
| 0x20 || 0x4 || MainTitle offset
+
|-
+
| 0x24 || 0x4 || MainText offset
+
|-
+
| 0x28 || 0x4 || SubTitle offset
+
|-
+
| 0x2C || 0x4 || SubText offset
+
|}
+
+
<code>X offset</code> refers to an offset to a NULL-terminated ASCII string value for <code>X</code> within the full EULA data blob (see below).
+
+
===EulaList===
+
This is the full data blob retrieved using [[ACTU:GetAsyncResult]].
+
Each EULA list entry is appended at the very end of the previous one. The end offset in the header can be used to get to subsequent EULA list entries.
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x1 || u8, Number of EULA list entries (n)
+
|-
+
| 0x1 || n * (...) || concatenated EULA list entries
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x30 || [[ACT_Services#EulaHeader|EulaHeader]]
+
|-
+
| 0x30 || ... || EULA data
+
|}
|}
|}