FRD Savegame: Difference between revisions
Fix NEX Password length in account structure |
TimmSkiller (talk | contribs) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
This page describes the contents of the [[Friend_Services| | This page describes the contents of the [[Friend_Services|friends]] sysmodule savegame. | ||
Save data for the sysmodule has the following general structure: | |||
data | |||
├── [[FRD_Savegame#config|config]] | |||
└── <Local Account ID> | |||
├── [[FRD_Savegame#account|account]] | |||
├── [[FRD_Savegame#friendlist|friendlist]] | |||
└── [[FRD_Savegame#mydata|mydata]] | |||
Despite being generally unused, the sysmodule supports the usage of multiple accounts. | |||
Each account gets its own "Local Account ID", and a directory named after this ID. The directory contains all relevant account information. | |||
== config == | |||
This file only contains the local account ID of the currently active account. | |||
The friends sysmodule uses this file to determine which account to load by default. | |||
{| class="wikitable" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x00 || 4 || File magic "FPCF" (Friend Presence Config) | |||
|- | |||
| 0x04 || 4 || File magic number (0x20101021) | |||
|- | |||
| 0x08 || 8 || Padding | |||
|- | |||
| 0x10 || 4 || Current Local Account ID | |||
|} | |||
== account == | == account == | ||
This file stores various essential data related to the corresponding account. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset !! Size !! Description | ||
! Size | |||
! Description | |||
|- | |- | ||
| 0x00 | | 0x00 || 4 || File magic "FPAC" (Friend Presence Account Config) | ||
| 4 | |||
| File magic "FPAC" ( | |||
|- | |- | ||
| 0x04 | | 0x04 || 4 || File magic number (0x20101021) | ||
| 4 | |||
| File magic number (0x20101021) | |||
|- | |- | ||
| 0x08 | | 0x08 || 8 || Padding | ||
| 8 | |||
| Padding | |||
|- | |- | ||
| 0x10 | | 0x10 || 4 || Local Account ID | ||
| 4 | |||
| | |||
|- | |- | ||
| 0x14 | | 0x14 || 4 || PrincipalID | ||
| 4 | |||
| PrincipalID | |||
|- | |- | ||
| 0x18 | | 0x18 || 8 || LocalFriendCode | ||
| 8 | |||
| LocalFriendCode | |||
|- | |- | ||
| 0x20 | | 0x20 || (16 + 1) * 2 || 16-character UTF-16 NEX Password (16 characters + NULL termination) | ||
| (16 + 1) * 2 | |||
| NEX Password | |||
|- | |- | ||
| 0x42 | | 0x42 || (8 + 1) * 2 || 8-character UTF-16 PrincipalID HMAC (Used for logging into NASC server) (8 characters + NULL termination) | ||
| (8 + 1) * 2 | |||
| PrincipalID HMAC (Used for logging into NASC server) | |||
|- | |- | ||
| 0x54 | | 0x54 || 1 || NASC Environment (0: Production, 1: Testing, 2: Development) | ||
| 1 | |||
| | |||
|- | |- | ||
| 0x55 | | 0x55 || 1 || [[Friend_Services#Server_Types|Server type]] letter value | ||
| 1 | |||
| | |||
|- | |- | ||
| 0x56 | | 0x56 || 1 || [[Friend_Services#Server_Types|Server type]] number value | ||
| 1 | |||
| | |||
|- | |- | ||
| 0x57 | | 0x57 || 1 || Padding | ||
| 1 | |||
| Padding | |||
|} | |} | ||
== mydata == | == mydata == | ||
Stores console-specific information related to the account. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset !! Size !! Description | ||
! Size | |- | ||
! Description | | 0x00 || 4 || File magic "FPMD" (Friend Presence My Data/Device) | ||
|- | |||
| 0x04 || 4 || File magic number (0x20101021) | |||
|- | |||
| 0x08 || 8 || Padding | |||
|- | |||
| 0x10 || 4 || My NC Principal ID | |||
|- | |||
| 0x14 || 4 || MoveCount | |||
|- | |||
| 0x18 || 4 || [[FRD_Savegame#Change_Bit_Flags|Change bit flag]] | |||
|- | |||
| 0x1C || 3 || [[Friend_Services#Preference|Preferences]] | |||
|- | |||
| 0x1F || 1 || Padding | |||
|- | |||
| 0x20 || 0x10 || [[Friend_Services#GameKey|GameKey]] of favorite title | |||
|- | |||
| 0x30 || (16 + 1) * 2 || 16-Character UTF-16 personal message (comment) (16 characters + NULL termination) | |||
|- | |- | ||
| | | 0x52 || 1 || First byte of the console's LocalFriendCodeSeed | ||
| | |||
| | |||
|- | |- | ||
| | | 0x53 || 5 || Padding | ||
| | |||
| | |||
|- | |- | ||
| | | 0x58 || 8 || [[Friend_Services#Profile|Profile]] | ||
| 8 | |||
| | |||
|- | |- | ||
| | | 0x60 || 8 || u64, LocalFriendCodeSeed | ||
| | |- | ||
| | | 0x68 || (12 + 1) * 2 || 12-character UTF-16 MAC address (only the digits) (12 characters + NULL termination) | ||
|- | |||
| 0x82 || (15 + 1) * 2 || 15-character UTF-16 console serial number without the checksum digit (15 characters + NULL termination) | |||
|- | |||
| 0xA2 || (10 + 1) * 2 || 10-character UTF-16 Display name (10 characters + NULL termination) | |||
|- | |||
| 0xBB || 0x60 || [[Mii#CFLStoreData|Mii data]] | |||
|- | |||
| 0x11B || 5 || Padding | |||
|} | |||
=== Change Bit Flags === | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Value !! Description | |||
|- | |- | ||
| | | 1 || [[Friend_Services#GameKey|Game Key]] changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 2 || Game mode description changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 4 || Join availability flag changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 8 || Matchmake system type changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 16 || Join game ID changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 32 || Join game mode changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 64 || Owner [PID] changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 128 || Join group ID changed. | ||
| | |||
| | |||
|- | |- | ||
| | | 256 || Application argument changed. | ||
| | |||
| | |||
|} | |} | ||
== friendlist == | == friendlist == | ||
Contains the friend list associated with the account. | |||
=== Header === | === Header === | ||
Line 136: | Line 145: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset !! Size !! Description | ||
! Size | |||
! Description | |||
|- | |- | ||
| 0x00 | | 0x00 || 4 || File magic "FPFL" (Friend Presence Friend List) | ||
| 4 | |||
| File magic "FPFL" ( | |||
|- | |- | ||
| 0x04 | | 0x04 || 4 || File magic number (0x20101021) | ||
| 4 | |||
| File magic number (0x20101021) | |||
|- | |- | ||
| 0x08 | | 0x08 || 8 || Padding | ||
| 8 | |||
| Padding | |||
|- | |- | ||
| 0x10 | | 0x10 || 100 * 0x100 || [[FRD_Savegame#Friend_entry|Friend entries]] (maximum 100) | ||
| | |||
| [[FRD_Savegame#Friend_entry|Friend entries]] | |||
|} | |} | ||
Line 161: | Line 160: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset !! Size !! Description | ||
! Size | |- | ||
! Description | | 0x00 || 0x10 || [[Friend_Services#FriendKey|FriendKey]] of this friend | ||
|- | |||
| 0x10 || 0x4 || NC Principal ID of this friend | |||
|- | |||
| 0x14 || 1 || [[Friend_Services#Relationship_Types|Relationship]] with this friend | |||
|- | |||
| 0x15 || 8 || [[Friend_Services#Profile|Profile]] of this friend | |||
|- | |||
| 0x1D || 3 || Padding | |||
|- | |||
| 0x20 || 0x10 || [[Friend_Services#GameKey|GameKey]] of this friend's favorite title | |||
|- | |||
| 0x30 || (16 + 1) * 2 || 16-character UTF-16 personal message (comment) of this friend (16 characters + NULL termination) | |||
|- | |||
| 0x52 || 0x6 || padding | |||
|- | |||
| 0x58 || 8 || NEX timestamp for the last time this friend updated their personal comment (message) | |||
|- | |||
| 0x60 || 8 || NEX timestamp for the last time this friend updated their Mii | |||
|- | |- | ||
| | | 0x68 || 8 || NEX timestamp for the last time this friend was seen online | ||
| | |||
| | |||
|- | |- | ||
| | | 0x70 || 0x60 || [[Mii#CFLStoreData|Mii data]] | ||
| | |||
| | |||
|- | |- | ||
| | | 0xD0 || (10 + 1) * 2 || 10-character UTF-16 Display name (10 characters + NULL termination) | ||
| | |||
| | |||
|- | |- | ||
| | | 0xE6 || 1 || bool, profanity flag | ||
| | |||
| | |||
|- | |- | ||
| | | 0xE7 || 1 || u8, [[Mii#Mii_format|Mii character set]] | ||
| | |||
| | |||
|- | |- | ||
| | | 0xE8 || 8 || NEX timestamp for when this friend was added | ||
| | |||
| | |||
|- | |- | ||
| | | 0xF0 || 8 || Appears to be identical to the timestamp at offset 0x58. | ||
| | |||
| | |||
|- | |- | ||
| | | 0xF8 || 8 || Appears to be identical to the timestamp at offset 0x60. | ||
| | |||
| | |||
|} | |} |