GPD: Difference between revisions
imported>Oscar193 mNo edit summary |
imported>V3n3 No edit summary |
||
Line 265: | Line 265: | ||
| 8 | | 8 | ||
| u/Int64? | | u/Int64? | ||
| | | Award Flags ? | ||
|- | |- | ||
| 16 | | 16 | ||
Line 295: | Line 295: | ||
| 4 | | 4 | ||
| u/Int32 | | u/Int32 | ||
| | | Unknown | ||
|- | |- | ||
| 44 | | 44 |
Revision as of 14:44, 19 September 2011
GPD (Gamer Profile Data) files are used by the Xbox 360 to store information inside a profile. They are based on the XDBF format. Profiles are composed of many of these files, each named under their respective executable's title id (e.g. 4D5307E6.gpd for Halo 3). The dashboard GPD (FFFE07D1.gpd) contains information and sync information about the titles.
Entry Table
An ID of 0x100000000 indicates that the entry is a Sync List, an ID of 0x200000000 means its a Sync Data entry.
The Settings, Achievement and Title namespaces each have their own Sync List and Sync Data entries.
An ID of 0x8000 usually indicates that entry is information to do with the title (image/name).
Entry Namespaces
Value | Description |
---|---|
1 | Achievement |
2 | Image |
3 | Setting |
4 | Title |
5 | String |
6 | Achievement Security (created by GFWL for offline unlocked achievements?) |
6 | Avatar Award (360 only, this is only stored with in the PEC version of the GPD) |
Entry Structures
Achievement Entries
Offset | Length | Type | Information |
---|---|---|---|
0x0 | 0x4 | unsigned int | Struct size (0x1C) |
0x4 | 0x4 | unsigned int | Achievement ID |
0x8 | 0x4 | unsigned int | Image ID |
0xC | 0x4 | signed int | Gamerscore |
0x10 | 0x4 | unsigned int | Flags (see below) |
0x14 | 0x8 | signed long | Unlock Time |
0x18 | null terminated | unicode string | Name |
0x18 + Name length | null terminated | unicode string | Locked Description |
0x18 + Name length + Locked Description length | null terminated | unicode string | Unlocked Description |
Setting Entries
Offset | Length | Type | Information |
---|---|---|---|
0 | 4 | Int32 | SettingID |
4 | 4 | Byte[] | Unknown |
8 | 1 | Byte | DataType (see Below) |
9 | 7 | Byte[] | Unknown |
16 | *depends on DataType* | *depends on DataType* | Data |
DataType |
---|
Context |
Int32 |
Int64 |
Double |
String |
Float |
Binary |
DateTime |
Reading the SettingEntry might be a little tricky, depending on the DataType. Gonna write down later how to.
Image Entries
Image entries are composed of a PNG image.
Title Entries
These entries are located in the FFFE07D1.gpd. To get to them, the id for the XDBF entry is the title ID of the game, and the XDBF entry type is String. For more information about XDBF go to http://www.free60.org/XDBF
Offset | Length | Type | Information |
---|---|---|---|
0x0 | 0x4 | unsigned int | Title ID |
0x4 | 0x4 | signed int | Achievement Count |
0x8 | 0x4 | signed int | Achievement Unlocked Count |
0xC | 0x4 | signed int | Gamerscore Total |
0x10 | 0x4 | signed int | Gamerscore Unlocked |
0x14 | 0x2 | short | Unknown |
0x16 | 0x01 | byte | Avatar Assets Earned |
0x17 | 0x01 | byte | Avatar Assets Max |
0x18 | 0x01 | byte | Male Avatar Assets Earned |
0x19 | 0x01 | byte | Male Avatar Assets Max |
0x1A | 0x01 | byte | Female Avatar Assets Earned |
0x1B | 0x01 | byte | Female Avatar Assets Max |
0x1C | 0x4 | signed int | Unknown/Reserved |
0x20 | 0x8 | signed long | Last Played Time |
0x28 | null terminated | unicode string | Title Name |
Avatar Award Entries
The entries are only supported within the PEC version of the GPD. The images for the avatar awards however, are stored in the game GPD for that game.
Offset | Length | Type | Information |
---|---|---|---|
0 | 4 | uint32 | Struct size (0x2C) |
4 | 4 | UInt32 | Award ID |
8 | 8 | u/Int64? | Award Flags ? |
16 | 4 | UInt32 | GameID |
20 | 4 | UInt32 | Image ID |
24 | 4 | uInt32 | Flags(Same as achievement?) |
28 | 8 | Int64 | Unlock Time |
36 | 4 | u/Int32 | Unknown |
40 | 4 | u/Int32 | Unknown |
44 | Till Null | UniCode | Name |
44 + Name length | Till Null | UniCode | Locked Description |
44 + Name length + Locked Description length | Till Null | UniCode | Unlocked Description |
String Entries
String entries are simply a unicode string, to the length specified by the entry.
Sync Lists
This is a list of "Sync Items".
You can find the total sync items by,
((SyncList.Length / 16) - 1)
Sync Item
Offset | Length | Type | Information |
---|---|---|---|
0 | 8 | Int64 | EntryID |
8 | 8 | Int64 | SyncID |
I don't know much about the second id, however I believe it to have something to do with the SyncData's "Next Sync ID". I wouldn't recommend playing with it on a live profile as it is the only thing left in the gpd that is unknown and ms ban people some way.
Sync Data
Offset | Length | Type | Information |
---|---|---|---|
0x0 | 0x8 | unsigned long | Next Sync ID |
0x8 | 0x8 | unsigned long | Last Synced ID |
0x10 | 0x8 | signed long | Last Synced Time |