Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
resources.h
Go to the documentation of this file.
1#ifndef NW4HBM_LYT_RESOURCES_H
2#define NW4HBM_LYT_RESOURCES_H
3
4#include <revolution/gx.h>
5#include <revolution/types.h>
6
8
9#include "lyt_types.h"
10#include "resourceAccessor.h"
11
12
13namespace nw4hbm {
14 namespace lyt {
15
16 typedef struct InflationLRTB {
17 /* 0x00 */ f32 l;
18 /* 0x04 */ f32 r;
19 /* 0x08 */ f32 t;
20 /* 0x0C */ f32 b;
22
23 typedef struct WindowFrameSize {
24 /* 0x00 */ f32 l;
25 /* 0x04 */ f32 r;
26 /* 0x08 */ f32 t;
27 /* 0x0C */ f32 b;
29
31 public:
32 u8 GetTexMapNum() const { return detail::GetBits<>(bits, 0, 4); }
33 u8 GetTexSRTNum() const { return detail::GetBits<>(bits, 4, 4); }
34 u8 GetTexCoordGenNum() const { return detail::GetBits<>(bits, 8, 4); }
35 bool HasTevSwapTable() const { return detail::TestBit<>(bits, 12); }
36 u8 GetIndTexSRTNum() const { return detail::GetBits<>(bits, 13, 2); }
37 u8 GetIndTexStageNum() const { return detail::GetBits<>(bits, 15, 3); }
38 u8 GetTevStageNum() const { return detail::GetBits<>(bits, 18, 5); }
39 bool HasAlphaCompare() const { return detail::TestBit<>(bits, 23); }
40 bool HasBlendMode() const { return detail::TestBit<>(bits, 24); }
41 u8 GetChanCtrlNum() const { return detail::GetBits<>(bits, 25, 1); }
42 u8 GetMatColNum() const { return detail::GetBits<>(bits, 27, 1); }
43
44 private:
45 /* 0x00 */ u32 bits;
46 }; // size = 0x04
47
48 namespace res {
49
50 /*** COMMON ***/
51
52 typedef struct BinaryFileHeader {
53 /* 0x00 */ char signature[4];
54 /* 0x04 */ u16 byteOrder;
55 /* 0x06 */ u16 version;
56 /* 0x08 */ u32 fileSize;
57 /* 0x0C */ u16 headerSize;
58 /* 0x0E */ u16 dataBlocks;
59 } BinaryFileHeader; // size = 0x10
60
61 typedef struct DataBlockHeader {
62 /* 0x00 */ char kind[4];
63 /* 0x04 */ u32 size;
64 } DataBlockHeader; // size = 0x08
65
66 /*** ANIMATION ***/
67
68 typedef struct StepKey {
69 /* 0x00 */ f32 frame;
70 /* 0x04 */ u16 value;
71 /* 0x06 */ u16 padding;
72 } StepKey; // size = 0x08
73
74 typedef struct HermiteKey {
75 /* 0x00 */ f32 frame;
76 /* 0x04 */ f32 value;
77 /* 0x08 */ f32 slope;
78 } HermiteKey; // size = 0x0C
79
80 typedef struct AnimationInfo {
81 public:
82 /* 0x00 */ u32 kind;
83 /* 0x04 */ u8 num;
84 /* 0x05 */ u8 padding[3];
85
86 public:
87 static const u32 ANIM_INFO_PANE_PAIN_SRT = 'RLPA';
88 static const u32 ANIM_INFO_PANE_VERTEX_COLOR = 'RLVC';
89 static const u32 ANIM_INFO_PANE_VISIBILITY = 'RLVI';
90
91 static const u32 ANIM_INFO_MATERIAL_COLOR = 'RLMC';
93 static const u32 ANIM_INFO_MATERIAL_TEXTURE_SRT = 'RLTS';
94 static const u32 ANIM_INFO_MATERIAL_IND_TEX_SRT = 'RLIM';
96
97 typedef struct AnimationTarget {
98 /* 0x00 */ u8 id;
99 /* 0x01 */ u8 target;
100 /* 0x02 */ u8 curveType;
101 /* 0x03 */ u8 padding1;
102 /* 0x04 */ u16 keyNum;
103 /* 0x06 */ u8 padding2[2];
104 /* 0x08 */ u32 keysOffset;
105 } AnimationTarget; // size = 0x10
106
107 typedef struct AnimationBlock {
109 /* 0x08 */ u16 frameSize;
110 /* 0x0A */ u8 loop;
111 /* 0x0B */ u8 padding1;
112 /* 0x0C */ u16 fileNum;
113 /* 0x0E */ u16 animContNum;
115 } AnimationBlock; // size = 0x14
116
117 typedef struct AnimationContent {
118 public:
119 enum {
120 /* 0 */ ACType_Pane = 0,
122 /* 2 */ ACType_Max
123 };
124
125 public:
126 /* 0x00 */ char name[20];
127 /* 0x14 */ u8 num;
128 /* 0x15 */ u8 type;
129 /* 0x16 */ u8 padding[2];
130 } AnimationContent; // size = 0x18
131
132 /*** MATERIAL ***/
133
134 typedef struct Texture {
135 /* 0x00 */ u32 nameStrOffset;
136 /* 0x04 */ u8 type;
137 /* 0x05 */ u8 padding[3];
138 } Texture; // size = 0x08
139
140 typedef struct Material {
141 /* 0x00 */ char name[20];
145 } Material; // size = 0x40
146
147 typedef struct TexMap {
148 /* 0x00 */ u16 texIdx;
149 /* 0x02 */ u8 wrapS;
150 /* 0x03 */ u8 wrapT;
151 } TexMap; // size = 0x04
152
153 /*** PANES ***/
154
156 static const u32 FILE_HEADER_SIGNATURE_LAYOUT = 'RLYT';
157
158 static const u32 OBJECT_SIGNATURE_LAYOUT = 'lyt1';
159 static const u32 OBJECT_SIGNATURE_FONT_LIST = 'fnl1';
160 static const u32 OBJECT_SIGNATURE_MATERIAL_LIST = 'mat1';
161 static const u32 OBJECT_SIGNATURE_TEXTURE_LIST = 'txl1';
162 static const u32 OBJECT_SIGNATURE_PANE = 'pan1';
165 static const u32 OBJECT_SIGNATURE_PICTURE = 'pic1';
166 static const u32 OBJECT_SIGNATURE_BOUNDING = 'bnd1';
167 static const u32 OBJECT_SIGNATURE_WINDOW = 'wnd1';
168 static const u32 OBJECT_SIGNATURE_TEXT_BOX = 'txt1';
169 static const u32 OBJECT_SIGNATURE_GROUP = 'grp1';
172 static const u32 OBJECT_SIGNATURE_PANE_ANIM = 'pai1';
173
174 typedef struct Pane {
176 /* 0x08 */ u8 flag;
177 /* 0x09 */ u8 basePosition;
178 /* 0x0A */ u8 alpha;
179 /* 0x0B */ u8 padding;
180 /* 0x0C */ char name[16];
181 /* 0x1C */ char userData[8];
183 /* 0x30 */ math::VEC3 rotate;
184 /* 0x3C */ math::VEC2 scale;
185 /* 0x44 */ Size size;
186 } Pane; // size = 0x4C
187
188 typedef struct Bounding : Pane {
189 // (empty)
191
192 typedef struct Picture : public Pane {
193 /* 0x4C */ u32 vtxCols[4];
194 /* 0x5C */ u16 materialIdx;
195 /* 0x5E */ u8 texCoordNum;
196 /* 0x5F */ u8 padding[1];
198
199 typedef struct Font {
200 /* 0x00 */ u32 nameStrOffset;
201 /* 0x04 */ u8 type;
204
205 typedef struct TextBox : public Pane {
206 /* 0x4C */ u16 textBufBytes;
207 /* 0x4E */ u16 textStrBytes;
208 /* 0x50 */ u16 materialIdx;
209 /* 0x52 */ u16 fontIdx;
210 /* 0x54 */ u8 textPosition;
212 /* 0x58 */ u32 textStrOffset;
214 /* 0x64 */ Size fontSize;
215 /* 0x6C */ f32 charSpace;
216 /* 0x70 */ f32 lineSpace;
218
219 typedef struct WindowFrame {
220 /* 0x00 */ u16 materialIdx;
221 /* 0x02 */ u8 textureFlip;
222 /* 0x03 */ u8 padding1;
224
225 typedef struct WindowContent {
227 /* 0x10 */ u16 materialIdx;
228 /* 0x12 */ u8 texCoordNum;
229 /* 0x13 */ u8 padding[1];
231
232 typedef struct Window : public Pane {
234 /* 0x5C */ u8 frameNum;
235 /* 0x5D */ u8 padding1;
236 /* 0x5E */ u8 padding2;
237 /* 0x5F */ u8 padding3;
238 /* 0x60 */ u32 contentOffset;
241
242 /*** GROUP ***/
243
244 typedef struct Group {
246 /* 0x08 */ char name[16];
247 /* 0x18 */ u16 paneNum;
248 /* 0x19 */ u8 padding[2];
250
251 /*** LAYOUT ***/
252
253 typedef struct Layout {
255 /* 0x08 */ u8 originType;
256 /* 0x09 */ u8 padding[3];
257 /* 0x0C */ Size layoutSize;
259
260 } // namespace res
261
262 namespace res {
268
269 typedef struct FontList {
271 /* 0x08 */ u16 fontNum;
274
280 } // namespace res
281
288
289 } // namespace lyt
290} // namespace nw4hbm
291
292#endif
Definition resources.h:30
bool HasTevSwapTable() const
Definition resources.h:35
u8 GetTexSRTNum() const
Definition resources.h:33
u8 GetChanCtrlNum() const
Definition resources.h:41
u8 GetIndTexSRTNum() const
Definition resources.h:36
u8 GetTexMapNum() const
Definition resources.h:32
bool HasAlphaCompare() const
Definition resources.h:39
u8 GetTevStageNum() const
Definition resources.h:38
bool HasBlendMode() const
Definition resources.h:40
u32 bits
Definition resources.h:45
u8 GetIndTexStageNum() const
Definition resources.h:37
u8 GetMatColNum() const
Definition resources.h:42
u8 GetTexCoordGenNum() const
Definition resources.h:34
Definition resourceAccessor.h:13
@ GX_MAX_KCOLOR
Definition GXEnum.h:652
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
bool TestBit(T bits, int pos)
Definition lyt_types.h:113
T GetBits(T bits, int pos, int len)
Definition lyt_types.h:119
static const u32 OBJECT_SIGNATURE_GROUP
Definition resources.h:169
struct nw4hbm::lyt::res::DataBlockHeader DataBlockHeader
static const u32 OBJECT_SIGNATURE_FONT_LIST
Definition resources.h:159
struct nw4hbm::lyt::res::Font Font
static const u32 OBJECT_SIGNATURE_GROUP_CHILD_START
Definition resources.h:170
struct nw4hbm::lyt::res::WindowFrame WindowFrame
struct nw4hbm::lyt::res::Material Material
struct nw4hbm::lyt::res::HermiteKey HermiteKey
static const u32 OBJECT_SIGNATURE_GROUP_CHILD_END
Definition resources.h:171
struct nw4hbm::lyt::res::TexMap TexMap
static const u32 OBJECT_SIGNATURE_PANE_CHILD_START
Definition resources.h:163
static const u32 OBJECT_SIGNATURE_WINDOW
Definition resources.h:167
struct nw4hbm::lyt::res::WindowContent WindowContent
static const u32 OBJECT_SIGNATURE_PANE_CHILD_END
Definition resources.h:164
struct nw4hbm::lyt::res::AnimationInfo AnimationInfo
struct nw4hbm::lyt::res::AnimationContent AnimationContent
static const u32 OBJECT_SIGNATURE_TEXTURE_LIST
Definition resources.h:161
struct nw4hbm::lyt::res::MaterialList MaterialList
nw4hbm::lyt::res::Picture Picture
struct nw4hbm::lyt::res::Layout Layout
struct nw4hbm::lyt::res::AnimationTarget AnimationTarget
struct nw4hbm::lyt::res::Texture Texture
struct nw4hbm::lyt::res::BinaryFileHeader BinaryFileHeader
struct nw4hbm::lyt::res::FontList FontList
struct nw4hbm::lyt::res::Group Group
nw4hbm::lyt::res::Bounding Bounding
static const u32 FILE_HEADER_SIGNATURE_ANIMATION
Definition resources.h:155
nw4hbm::lyt::res::TextBox TextBox
static const u32 OBJECT_SIGNATURE_TEXT_BOX
Definition resources.h:168
struct nw4hbm::lyt::res::AnimationBlock AnimationBlock
static const u32 OBJECT_SIGNATURE_LAYOUT
Definition resources.h:158
static const u32 OBJECT_SIGNATURE_MATERIAL_LIST
Definition resources.h:160
static const u32 FILE_HEADER_SIGNATURE_LAYOUT
Definition resources.h:156
struct nw4hbm::lyt::res::Pane Pane
static const u32 OBJECT_SIGNATURE_PANE_ANIM
Definition resources.h:172
struct nw4hbm::lyt::res::TextureList TextureList
nw4hbm::lyt::res::Window Window
static const u32 OBJECT_SIGNATURE_PICTURE
Definition resources.h:165
struct nw4hbm::lyt::res::StepKey StepKey
static const u32 OBJECT_SIGNATURE_PANE
Definition resources.h:162
static const u32 OBJECT_SIGNATURE_BOUNDING
Definition resources.h:166
struct nw4hbm::lyt::ResBlockSet ResBlockSet
@ TEVCOLOR_MAX
Definition lyt_types.h:32
@ TEXTCOLOR_MAX
Definition lyt_types.h:59
@ VERTEXCOLOR_MAX
Definition lyt_types.h:24
struct nw4hbm::lyt::InflationLRTB InflationLRTB
struct nw4hbm::lyt::WindowFrameSize WindowFrameSize
Definition HBMAnmController.h:6
Definition GXStruct.h:34
Definition GXStruct.h:30
Definition resources.h:16
f32 r
Definition resources.h:18
f32 l
Definition resources.h:17
f32 b
Definition resources.h:20
f32 t
Definition resources.h:19
Definition resources.h:282
ResourceAccessor * pResAccessor
Definition resources.h:286
const res::TextureList * pTextureList
Definition resources.h:283
const res::MaterialList * pMaterialList
Definition resources.h:285
const res::FontList * pFontList
Definition resources.h:284
Definition lyt_types.h:125
Definition resources.h:23
f32 r
Definition resources.h:25
f32 t
Definition resources.h:26
f32 b
Definition resources.h:27
f32 l
Definition resources.h:24
Definition resources.h:107
u16 animContNum
Definition resources.h:113
u32 animContOffsetsOffset
Definition resources.h:114
u8 padding1
Definition resources.h:111
DataBlockHeader blockHeader
Definition resources.h:108
u8 loop
Definition resources.h:110
u16 frameSize
Definition resources.h:109
u16 fileNum
Definition resources.h:112
Definition resources.h:117
u8 type
Definition resources.h:128
u8 padding[2]
Definition resources.h:129
char name[20]
Definition resources.h:126
@ ACType_Material
Definition resources.h:121
@ ACType_Pane
Definition resources.h:120
@ ACType_Max
Definition resources.h:122
u8 num
Definition resources.h:127
Definition resources.h:80
static const u32 ANIM_INFO_PANE_PAIN_SRT
Definition resources.h:87
u32 kind
Definition resources.h:82
u8 num
Definition resources.h:83
static const u32 ANIM_INFO_MATERIAL_TEXTURE_PATTERN
Definition resources.h:92
static const u32 ANIM_INFO_MATERIAL_TEXTURE_SRT
Definition resources.h:93
u8 padding[3]
Definition resources.h:84
static const u32 ANIM_INFO_MATERIAL_COLOR
Definition resources.h:91
static const u32 ANIM_INFO_MATERIAL_IND_TEX_SRT
Definition resources.h:94
static const u32 ANIM_INFO_PANE_VISIBILITY
Definition resources.h:89
static const u32 ANIM_INFO_PANE_VERTEX_COLOR
Definition resources.h:88
Definition resources.h:97
u8 padding1
Definition resources.h:101
u16 keyNum
Definition resources.h:102
u32 keysOffset
Definition resources.h:104
u8 target
Definition resources.h:99
u8 padding2[2]
Definition resources.h:103
u8 curveType
Definition resources.h:100
u8 id
Definition resources.h:98
Definition resources.h:52
u16 version
Definition resources.h:55
char signature[4]
Definition resources.h:53
u32 fileSize
Definition resources.h:56
u16 headerSize
Definition resources.h:57
u16 byteOrder
Definition resources.h:54
u16 dataBlocks
Definition resources.h:58
Definition resources.h:188
Definition resources.h:61
char kind[4]
Definition resources.h:62
u32 size
Definition resources.h:63
Definition resources.h:269
DataBlockHeader blockHeader
Definition resources.h:270
u16 fontNum
Definition resources.h:271
u8 padding[2]
Definition resources.h:272
Definition resources.h:199
u8 type
Definition resources.h:201
u8 padding[3]
Definition resources.h:202
u32 nameStrOffset
Definition resources.h:200
Definition resources.h:244
char name[16]
Definition resources.h:246
DataBlockHeader blockHeader
Definition resources.h:245
u16 paneNum
Definition resources.h:247
u8 padding[2]
Definition resources.h:248
Definition resources.h:74
f32 value
Definition resources.h:76
f32 slope
Definition resources.h:77
f32 frame
Definition resources.h:75
Definition resources.h:253
u8 originType
Definition resources.h:255
u8 padding[3]
Definition resources.h:256
DataBlockHeader blockHeader
Definition resources.h:254
Size layoutSize
Definition resources.h:257
Definition resources.h:275
DataBlockHeader blockHeader
Definition resources.h:276
u8 padding[2]
Definition resources.h:278
u16 materialNum
Definition resources.h:277
Definition resources.h:140
GXColor tevKCols[GX_MAX_KCOLOR]
Definition resources.h:143
MaterialResourceNum resNum
Definition resources.h:144
GXColorS10 tevCols[TEVCOLOR_MAX]
Definition resources.h:142
char name[20]
Definition resources.h:141
Definition resources.h:174
u8 basePosition
Definition resources.h:177
math::VEC3 translate
Definition resources.h:182
u8 flag
Definition resources.h:176
char name[16]
Definition resources.h:180
u8 padding
Definition resources.h:179
DataBlockHeader blockHeader
Definition resources.h:175
math::VEC3 rotate
Definition resources.h:183
u8 alpha
Definition resources.h:178
Size size
Definition resources.h:185
math::VEC2 scale
Definition resources.h:184
char userData[8]
Definition resources.h:181
Definition resources.h:192
u16 materialIdx
Definition resources.h:194
u8 padding[1]
Definition resources.h:196
u8 texCoordNum
Definition resources.h:195
u32 vtxCols[4]
Definition resources.h:193
Definition resources.h:68
u16 padding
Definition resources.h:71
f32 frame
Definition resources.h:69
u16 value
Definition resources.h:70
Definition resources.h:147
u8 wrapT
Definition resources.h:150
u8 wrapS
Definition resources.h:149
u16 texIdx
Definition resources.h:148
Definition resources.h:205
f32 charSpace
Definition resources.h:215
u32 textCols[TEXTCOLOR_MAX]
Definition resources.h:213
u16 textBufBytes
Definition resources.h:206
u8 padding[3]
Definition resources.h:211
f32 lineSpace
Definition resources.h:216
u16 textStrBytes
Definition resources.h:207
u16 materialIdx
Definition resources.h:208
u32 textStrOffset
Definition resources.h:212
u8 textPosition
Definition resources.h:210
Size fontSize
Definition resources.h:214
u16 fontIdx
Definition resources.h:209
Definition resources.h:263
DataBlockHeader blockHeader
Definition resources.h:264
u8 padding[2]
Definition resources.h:266
u16 texNum
Definition resources.h:265
Definition resources.h:134
u8 padding[3]
Definition resources.h:137
u32 nameStrOffset
Definition resources.h:135
u8 type
Definition resources.h:136
Definition resources.h:225
u8 padding[1]
Definition resources.h:229
u16 materialIdx
Definition resources.h:227
u32 vtxCols[VERTEXCOLOR_MAX]
Definition resources.h:226
u8 texCoordNum
Definition resources.h:228
Definition resources.h:219
u8 padding1
Definition resources.h:222
u8 textureFlip
Definition resources.h:221
u16 materialIdx
Definition resources.h:220
Definition resources.h:232
u8 padding3
Definition resources.h:237
InflationLRTB inflation
Definition resources.h:233
u32 contentOffset
Definition resources.h:238
u8 frameNum
Definition resources.h:234
u32 frameOffsetTableOffset
Definition resources.h:239
u8 padding2
Definition resources.h:236
u8 padding1
Definition resources.h:235
Definition types.h:103
Definition types.h:125