ReXGlue SDK
Loading...
Searching...
No Matches
xdbf.h
Go to the documentation of this file.
1
13
14#pragma once
15
16#include <string>
17#include <vector>
18
19#include <rex/platform.h>
20#include <rex/types.h>
21#include <rex/memory.h>
22#include <rex/filesystem/xex.h>
24
25namespace rex {
26namespace filesystem {
27
28enum class XDBFSection : u8 {
29 kMetadata = 0x0001,
30 kImage = 0x0002,
31 kStringTable = 0x0003,
32};
33
34#pragma pack(push, 1)
35struct XDBFHeader {
36 be_u32 magic;
37 be_u32 version;
38 be_u32 entry_capacity;
39 be_u32 entry_used;
40 be_u32 free_count;
41 be_u32 free_used;
42};
43REX_STATIC_ASSERT_SIZE(XDBFHeader, 24);
44
46struct XDBFEntry {
47 be_u16 section;
48 be_u64 id;
49 be_u32 offset;
50 be_u32 size;
51};
52REX_STATIC_ASSERT_SIZE(XDBFEntry, 18);
53
56 be_u32 offset;
57 be_u32 size;
58};
59REX_STATIC_ASSERT_SIZE(XDBFFileLocation, 8);
60
62struct XDBFXSTC {
63 be_u32 magic;
64 be_u32 version;
65 be_u32 size;
67};
68REX_STATIC_ASSERT_SIZE(XDBFXSTC, 16);
69
72 be_u32 magic;
73 be_u32 version;
74 be_u32 size;
75 be_u16 count;
76};
77REX_STATIC_ASSERT_SIZE(XDBFSectionHeader, 14);
78
81 be_u16 id;
83};
84REX_STATIC_ASSERT_SIZE(XDBFStringTableEntry, 4);
85
87 be_u16 id;
88 be_u16 label_id;
91 be_u32 image_id;
92 be_u16 gamerscore;
93 be_u16 unk0e;
94 be_u32 flags;
95 be_u32 unk14;
96 be_u32 unk18;
97 be_u32 unk1c;
98 be_u32 unk20;
99};
100REX_STATIC_ASSERT_SIZE(XDBFAchievementTableEntry, 0x24);
101#pragma pack(pop)
102
104struct XDBFBlock {
105 const u8* buffer;
106 size_t size;
107
108 operator bool() const { return buffer != nullptr; }
109};
110
113 public:
114 virtual ~IXDBFReader() = default;
115
116 virtual bool IsValid() const = 0;
117
119 virtual XDBFBlock GetEntry(XDBFSection section, u64 id) const = 0;
120
124 virtual std::string GetStringTableEntry(kernel::XLanguage language, u16 string_id) const = 0;
125
126 virtual std::vector<XDBFAchievementTableEntry> GetAchievements() const = 0;
127};
128
130 public:
132 virtual kernel::XLanguage GetSupportedLanguage(kernel::XLanguage language_to_check) const = 0;
133
134 virtual XDBFBlock GetIcon() const = 0;
135
136 virtual kernel::XLanguage GetDefaultLanguage() const = 0;
137
138 virtual std::string GetTitle() const = 0;
139
141 virtual std::string GetTitle(kernel::XLanguage language) const = 0;
142};
143
144} // namespace filesystem
145} // namespace rex
Definition xdbf.h:112
virtual std::string GetStringTableEntry(kernel::XLanguage language, u16 string_id) const =0
virtual XDBFBlock GetEntry(XDBFSection section, u64 id) const =0
Definition xdbf.h:129
virtual std::string GetTitle(kernel::XLanguage language) const =0
virtual kernel::XLanguage GetSupportedLanguage(kernel::XLanguage language_to_check) const =0
Content package and language IDs.
XEX image reader and PE image parsing.
XLanguage
Definition content.h:156
Definition app.h:36
Platform flags, packing macros and export markers.
be_u16 description_id
Definition xdbf.h:89
be_u32 image_id
Definition xdbf.h:91
be_u16 label_id
Definition xdbf.h:88
be_u16 unachieved_id
Definition xdbf.h:90
Definition xdbf.h:104
const u8 * buffer
Definition xdbf.h:105
Definition xdbf.h:46
be_u32 offset
Definition xdbf.h:49
Definition xdbf.h:35
be_u32 free_count
Definition xdbf.h:40
be_u32 free_used
Definition xdbf.h:41
be_u16 string_length
Definition xdbf.h:82
Definition xdbf.h:62
be_u32 default_language
Definition xdbf.h:66
Integer types, byte order wrappers and size literals.
XDBFSection
Definition xdbf.h:28
@ kStringTable
Definition xdbf.h:31