Difference between revisions of "FRD Savegame"
Jump to navigation
Jump to search
m (Remove unknown padding field in mydata section (it overlaps with the previous field and is inaccurate)) |
TimmSkiller (talk | contribs) |
||
(One intermediate revision by the same user 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 == | == 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 | + | | 0x00 || 4 || File magic "FPCF" (Friends Preference Config) |
− | | 4 | ||
− | | File magic "FPCF" (Friends Preference Config) | ||
|- | |- | ||
− | | 0x04 | + | | 0x04 || 4 || File magic number (0x20101021) |
− | | 4 | ||
− | | File magic number (0x20101021) | ||
|- | |- | ||
− | | 0x08 | + | | 0x08 || 8 || Padding |
− | | 8 | ||
− | | Padding | ||
|- | |- | ||
− | | 0x10 | + | | 0x10 || 4 || Current Local Account ID |
− | | 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" (Friends Preference Account Config) |
− | | 4 | ||
− | | File magic "FPAC" (Friends Preference Account Config) | ||
|- | |- | ||
− | | 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 | ||
− | | Local Account ID | ||
|- | |- | ||
− | | 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 | ||
− | | NASC Environment (0: | ||
|- | |- | ||
− | | 0x55 | + | | 0x55 || 1 || [[Friend_Services#Server_Types|Server type]] letter value |
− | | 1 | ||
− | | [[Friend_Services#Server_Types|Server type]] letter value | ||
|- | |- | ||
− | | 0x56 | + | | 0x56 || 1 || [[Friend_Services#Server_Types|Server type]] number value |
− | | 1 | ||
− | | [[Friend_Services#Server_Types|Server type]] number value | ||
|- | |- | ||
− | | 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" (Friends Preference My Data/Device) |
|- | |- | ||
− | | | + | | 0x04 || 4 || File magic number (0x20101021) |
− | | 4 | ||
− | | File magic | ||
|- | |- | ||
− | | | + | | 0x08 || 8 || Padding |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x10 || 4 || My NC Principal ID |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x14 || 4 || Unknown |
− | | 4 | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x18 || 4 || [[FRD_Savegame#Change_Bit_Flags|Change bit flag]] |
− | | 4 | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x1C || 3 || [[Friend_Services#Preference|Preferences]] |
− | | | ||
− | | [ | ||
|- | |- | ||
− | | | + | | 0x1F || 1 || Padding |
− | | 1 | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x20 || 0x10 || [[Friend_Services#GameKey|GameKey]] of favorite title |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x30 || (16 + 1) * 2 || 16-Character UTF-16 personal message (comment) (16 characters + NULL termination) |
− | | 1 | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x52 || 1 || First byte of the console's LocalFriendCodeSeed |
− | | 1 | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x53 || 5 || Padding |
− | | | ||
− | | | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | 0x58 || 8 || [[Friend_Services#Profile|Profile]] |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x60 || 8 || u64, LocalFriendCodeSeed |
− | | 8 | ||
− | | | ||
|- | |- | ||
− | | | + | | 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 || [[Friend_Services#Mii_Data|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 187: | Line 145: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! Offset | + | ! Offset !! Size !! Description |
− | ! Size | ||
− | ! Description | ||
|- | |- | ||
− | | 0x00 | + | | 0x00 || 4 || File magic "FPFL" (Friends Preference Friend List) |
− | | 4 | ||
− | | File magic "FPFL" (Friends Preference Friend List) | ||
|- | |- | ||
− | | 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 212: | Line 160: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! Offset | + | ! Offset !! Size !! Description |
− | ! Size | ||
− | ! Description | ||
|- | |- | ||
− | | 0x00 | + | | 0x00 || 0x10 || [[Friend_Services#FriendKey|FriendKey]] of this friend |
− | | 0x10 | ||
− | | FriendKey | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | 0x10 | + | | 0x10 || 0x4 || NC Principal ID of this friend |
− | | 0x4 | ||
− | | | ||
|- | |- | ||
− | | 0x14 | + | | 0x14 || 1 || [[Friend_Services#Relationship_Types|Relationship]] with this friend |
− | | 1 | ||
− | | | ||
|- | |- | ||
− | | 0x15 | + | | 0x15 || 8 || [[Friend_Services#Profile|Profile]] of this friend |
− | | 8 | ||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | 0x1D | + | | 0x1D || 3 || Padding |
− | | 3 | ||
− | | Padding | ||
|- | |- | ||
− | + | | 0x20 || 0x10 || [[Friend_Services#GameKey|GameKey]] of this friend's favorite title | |
− | | 0x20 | + | |- |
− | | 0x10 | + | | 0x30 || (16 + 1) * 2 || 16-character UTF-16 personal message (comment) of this friend (16 characters + NULL termination) |
− | | GameKey of friend favorite | + | |- |
− | + | | 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 |
− | | 8 | ||
− | | | ||
|- | |- | ||
− | | 0x60 | + | | 0x70 || 0x60 || [[Friend_Services#Mii_Data|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 | + | | 0xE8 || 8 || NEX timestamp for when this friend was added |
− | | 8 | ||
− | | | ||
|- | |- | ||
− | | 0xF0 | + | | 0xF0 || 8 || Appears to be identical to the timestamp at offset 0x58. |
− | | 8 | ||
− | | | ||
|- | |- | ||
− | | 0xF8 | + | | 0xF8 || 8 || Appears to be identical to the timestamp at offset 0x60. |
− | | 8 | ||
− | | | ||
|} | |} |
Latest revision as of 22:05, 10 January 2025
This page describes the contents of the friends sysmodule savegame.
Save data for the sysmodule has the following general structure:
data ├── config └── <Local Account ID> ├── account ├── friendlist └── 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[edit]
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.
Offset | Size | Description |
---|---|---|
0x00 | 4 | File magic "FPCF" (Friends Preference Config) |
0x04 | 4 | File magic number (0x20101021) |
0x08 | 8 | Padding |
0x10 | 4 | Current Local Account ID |
account[edit]
This file stores various essential data related to the corresponding account.
Offset | Size | Description |
---|---|---|
0x00 | 4 | File magic "FPAC" (Friends Preference Account Config) |
0x04 | 4 | File magic number (0x20101021) |
0x08 | 8 | Padding |
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 | Server type letter value |
0x56 | 1 | Server type number value |
0x57 | 1 | Padding |
mydata[edit]
Stores console-specific information related to the account.
Offset | Size | Description |
---|---|---|
0x00 | 4 | File magic "FPMD" (Friends Preference My Data/Device) |
0x04 | 4 | File magic number (0x20101021) |
0x08 | 8 | Padding |
0x10 | 4 | My NC Principal ID |
0x14 | 4 | Unknown |
0x18 | 4 | Change bit flag |
0x1C | 3 | Preferences |
0x1F | 1 | Padding |
0x20 | 0x10 | 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 | 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 data |
0x11B | 5 | Padding |
Change Bit Flags[edit]
Value | Description |
---|---|
1 | 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[edit]
Contains the friend list associated with the account.
Header[edit]
Offset | Size | Description |
---|---|---|
0x00 | 4 | File magic "FPFL" (Friends Preference Friend List) |
0x04 | 4 | File magic number (0x20101021) |
0x08 | 8 | Padding |
0x10 | 100 * 0x100 | Friend entries (maximum 100) |
Friend entry[edit]
Offset | Size | Description |
---|---|---|
0x00 | 0x10 | FriendKey of this friend |
0x10 | 0x4 | NC Principal ID of this friend |
0x14 | 1 | Relationship with this friend |
0x15 | 8 | Profile of this friend |
0x1D | 3 | Padding |
0x20 | 0x10 | 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 data |
0xD0 | (10 + 1) * 2 | 10-character UTF-16 Display name (10 characters + NULL termination) |
0xE6 | 1 | bool, profanity flag |
0xE7 | 1 | u8, 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. |