#pragma once #include #define XDBF_SIGNATURE 0x58444246 #define XACH_SIGNATURE 0x58414348 struct XDBFHeader { be Signature; be Version; be EntryTableLength; be EntryCount; be FreeSpaceTableLength; be FreeSpaceTableEntryCount; }; enum EXDBFNamespace : uint16_t { XDBF_SPA_NAMESPACE_METADATA = 1, XDBF_SPA_NAMESPACE_IMAGE = 2, XDBF_SPA_NAMESPACE_STRING_TABLE = 3, XDBF_GPD_NAMESPACE_ACHIEVEMENT = 1, XDBF_GPD_NAMESPACE_IMAGE = 2, XDBF_GPD_NAMESPACE_SETTING = 3, XDBF_GPD_NAMESPACE_TITLE = 4, XDBF_GPD_NAMESPACE_STRING = 5, XDBF_GPD_NAMESPACE_ACHIEVEMENT_SECURITY_GFWL = 6, XDBF_GPD_NAMESPACE_AVATAR_AWARD_360 = 6 }; #pragma pack(push, 1) struct XDBFEntry { be NamespaceID; be ResourceID; be Offset; be Length; }; #pragma pack(pop) struct XDBFFreeSpaceEntry { be Offset; be Length; }; enum EXDBFLanguage : uint32_t { XDBF_LANGUAGE_UNKNOWN = 0, XDBF_LANGUAGE_ENGLISH = 1, XDBF_LANGUAGE_JAPANESE = 2, XDBF_LANGUAGE_GERMAN = 3, XDBF_LANGUAGE_FRENCH = 4, XDBF_LANGUAGE_SPANISH = 5, XDBF_LANGUAGE_ITALIAN = 6, XDBF_LANGUAGE_KOREAN = 7, XDBF_LANGUAGE_CHINESE_TRAD = 8, XDBF_LANGUAGE_PORTUGUESE = 9, XDBF_LANGUAGE_CHINESE_SIMP = 10, XDBF_LANGUAGE_POLISH = 11, XDBF_LANGUAGE_RUSSIAN = 12, XDBF_LANGUAGE_MAX }; struct XSTCHeader { be Signature; be Version; be Size; be Language; }; #pragma pack(push, 1) struct XSTRHeader { be Signature; be Version; be Size; be StringCount; }; #pragma pack(pop) struct XSTREntry { be ID; be Length; }; #pragma pack(push, 1) struct XACHHeader { be Signature; be Version; be Size; be AchievementCount; }; #pragma pack(pop) enum EXACHFlags : uint32_t { XACH_TYPE_COMPLETION = 1U, XACH_TYPE_LEVELING = 2U, XACH_TYPE_UNLOCK = 3U, XACH_TYPE_EVENT = 4U, XACH_TYPE_TOURNAMENT = 5U, XACH_TYPE_CHECKPOINT = 6U, XACH_TYPE_OTHER = 7U, XACH_TYPE_MASK = 7U, XACH_STATUS_UNACHIEVED = (1U << 4), XACH_STATUS_EARNED_ONLINE = (1U << 16), XACH_STATUS_EARNED = (1U << 17), XACH_STATUS_EDITED = (1U << 20) }; struct XACHEntry { be AchievementID; be NameID; be UnlockedDescID; be LockedDescID; be ImageID; be Gamerscore; char pad0[0x02]; be Flags; char pad1[0x10]; }; union XDBFTitleID { struct { be u16; char u8[0x02]; }; be u32; }; struct XDBFTitleVersion { be Major; be Minor; be Build; be Revision; }; enum EXDBFTitleType : uint32_t { XDBF_TITLE_TYPE_SYSTEM = 0, XDBF_TITLE_TYPE_FULL = 1, XDBF_TITLE_TYPE_DEMO = 2, XDBF_TITLE_TYPE_DOWNLOAD = 3 }; struct XTHDHeader { be Signature; be Version; be Size; XDBFTitleID TitleID; be Type; XDBFTitleVersion TitleVersion; char pad0[0x10]; }; #pragma pack(push, 1) struct XGAAHeader { be Signature; be Version; be Size; be Count; }; #pragma pack(pop) struct XGAAEntry { char pad0[0x04]; be AvatarAwardID; char pad1[0x06]; XDBFTitleID TitleID; be NameID; be UnlockedDescID; be LockedDescID; char pad2[0x02]; be ImageID; char pad3[0x08]; }; struct XSRCHeader { be Signature; be Version; be Size; be FileNameLength; }; struct XSRCHeader2 { be UncompressedSize; be CompressedSize; };