FRD Savegame: Difference between revisions
Created page with "This page describes the contents of the friend sysmodule savegame. == mydata == {| class="wikitable" |- ! Offset ! Size ! Description |- | 0x00 | 4 | Fi..." |
TimmSkiller (talk | contribs) |
||
(14 intermediate revisions by 5 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" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset !! Size !! Description | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x00 || 4 || File magic "FPCF" (Friend Presence Config) | ||
| 4 | |||
| File magic | |||
|- | |- | ||
| | | 0x04 || 4 || File magic number (0x20101021) | ||
| | |||
| | |||
|- | |- | ||
| | | 0x08 || 8 || Padding | ||
| | |||
| | |||
|- | |- | ||
| | | 0x10 || 4 || Current Local Account ID | ||
| 4 | |||
| | |||
|} | |} | ||
== 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 " | |||
|- | |- | ||
| 0x04 | | 0x04 || 4 || File magic number (0x20101021) | ||
| 4 | |||
| File magic number (0x20101021) | |||
|- | |- | ||
| 0x08 | | 0x08 || 8 || Padding | ||
| 8 | |||
| Padding | |||
|- | |- | ||
| 0x10 | | 0x10 || 4 || Local Account ID | ||
| | |||
| | |||
|- | |- | ||
| | | 0x14 || 4 || PrincipalID | ||
| | |||
| | |||
|- | |- | ||
| | | 0x18 || 8 || LocalFriendCode | ||
| | |||
| | |||
|- | |- | ||
| | | 0x20 || (16 + 1) * 2 || 16-character UTF-16 NEX Password (16 characters + NULL termination) | ||
| | |||
| | |||
|- | |- | ||
| | | 0x42 || (8 + 1) * 2 || 8-character UTF-16 PrincipalID HMAC (Used for logging into NASC server) (8 characters + NULL termination) | ||
| ( | |||
| | |||
|- | |- | ||
| | | 0x54 || 1 || NASC Environment (0: Production, 1: Testing, 2: Development) | ||
| ( | |||
|- | |- | ||
| | | 0x55 || 1 || [[Friend_Services#Server_Types|Server type]] letter value | ||
| | |||
| | |||
|- | |- | ||
| | | 0x56 || 1 || [[Friend_Services#Server_Types|Server type]] number value | ||
| | |||
| | |||
|- | |- | ||
| | | 0x57 || 1 || Padding | ||
| 5 | |} | ||
| | |||
== mydata == | |||
Stores console-specific information related to the account. | |||
{| class="wikitable" | |||
|- | |||
! Offset !! 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]] | |||
|- | |||
| 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 94: | 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 119: | 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. | ||
| | |||
| | |||
|} | |} |