Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1#ifndef NW4HBM_LYT_COMMON_H
2#define NW4HBM_LYT_COMMON_H
3
4#include <revolution/tpl.h>
5#include <revolution/types.h>
6
7#include "../ut/Color.h"
8
9#include "animation.h"
10#include "resources.h"
11
12#include "../db/assert.h"
13
14namespace nw4hbm {
15 namespace lyt {
16 namespace detail {
17
19
21 public:
23
24 u8 GetSize() const { return mNum; }
25 const TexCoords* GetArray() const { return mpData; }
26
27 void SetSize(u8 num);
28
29 bool IsEmpty() const { return mCap == 0; }
30
31 void Reserve(u8 num);
32
33 void Free();
34 void Copy(const void* pResTexCoord, u8 texCoordNum);
35
36 void SetCoord(u32 idx, const math::VEC2* vec);
37 void GetCoord(u32 idx, math::VEC2* vec) const;
38
39 private:
40 /* 0x00 */ u8 mCap;
41 /* 0x01 */ u8 mNum;
42 /* 0x04 */ TexCoords* mpData;
43 };
44
45 bool EqualsPaneName(const char* name1, const char* name2);
46 bool EqualsMaterialName(const char* name1, const char* name2);
47
48 bool TestFileHeader(const res::BinaryFileHeader& fileHeader);
49 bool TestFileHeader(const res::BinaryFileHeader& fileHeader, u32 testSig);
50
51 bool IsModulateVertexColor(ut::Color* vtxColors, u8 glbAlpha);
52
53 ut::Color MultipleAlpha(const ut::Color col, u8 alpha);
54 void MultipleAlpha(ut::Color* dst, const ut::Color* src, u8 alpha);
55
56 void SetVertexFormat(bool bModulate, u8 texCoordNum);
57
58 void DrawQuad(const math::VEC2& basePt, const Size& size, u8 texCoordNum,
59 const TexCoords* texCoords, const ut::Color* vtxColors);
60 void DrawQuad(const math::VEC2& basePt, const Size& size, u8 texCoordNum,
61 const TexCoords* texCoords, const ut::Color* vtxColors, u8 alpha);
62
63 void DrawLine(const math::VEC2& pos, const Size& size, ut::Color color);
64
65 void InitGXTexObjFromTPL(GXTexObj* to, TPLPalette* pal, u32 id);
66
67 inline s32 GetSignatureInt(const char* sig) {
68 return *reinterpret_cast<const s32*>(sig);
69 }
70
71 inline const char* GetStrTableStr(const void* pStrTable, int index) {
72 const u32* offsets = static_cast<const u32*>(pStrTable);
73 const char* stringPool = static_cast<const char*>(pStrTable);
74
75 return &stringPool[offsets[index]];
76 }
77
78 inline u8 GetVtxColorElement(const ut::Color* cols, u32 idx) {
79 NW4HBM_ASSERT(199, idx < ANIMTARGET_VERTEXCOLOR_MAX);
80 return reinterpret_cast<const u8*>(cols + idx / 4)[idx % 4];
81 }
82
83 inline void SetVtxColorElement(ut::Color* cols, u32 idx, u8 value) {
84 NW4HBM_ASSERT(212, idx < ANIMTARGET_VERTEXCOLOR_MAX);
85 reinterpret_cast<u8*>(cols + idx / 4)[idx % 4] = value;
86 }
87
89 return var % HORIZONTALPOSITION_MAX;
90 }
91
93 return var / VERTICALPOSITION_MAX;
94 }
95
96 inline void SetHorizontalPosition(u8* pVar, u8 newVal) {
97 *pVar = GetVerticalPosition(*pVar) * HORIZONTALPOSITION_MAX + newVal;
98 }
99
100 inline void SetVerticalPosition(u8* pVar, u8 newVal) {
101 *pVar = newVal * VERTICALPOSITION_MAX + GetHorizontalPosition(*pVar);
102 }
103
104 } // namespace detail
105 } // namespace lyt
106} // namespace nw4hbm
107
108#endif
Definition common.h:20
TexCoords * mpData
Definition common.h:42
bool IsEmpty() const
Definition common.h:29
void Copy(const void *pResTexCoord, u8 texCoordNum)
Definition lyt_common.cpp:83
u8 mCap
Definition common.h:40
u8 GetSize() const
Definition common.h:24
void SetCoord(u32 idx, const math::VEC2 *vec)
void GetCoord(u32 idx, math::VEC2 *vec) const
u8 mNum
Definition common.h:41
TexCoordAry()
Definition lyt_common.cpp:31
void Free()
Definition lyt_common.cpp:33
void SetSize(u8 num)
Definition lyt_common.cpp:55
void Reserve(u8 num)
Definition lyt_common.cpp:43
const TexCoords * GetArray() const
Definition common.h:25
static u8 index[20][3]
Definition GXDraw.c:434
const void * src
Definition __os.h:116
unsigned int size
Definition __os.h:106
unsigned long u32
Definition types.h:12
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
bool EqualsMaterialName(const char *name1, const char *name2)
Definition lyt_common.cpp:17
u8 GetVerticalPosition(u8 var)
Definition common.h:92
void SetVerticalPosition(u8 *pVar, u8 newVal)
Definition common.h:100
void SetHorizontalPosition(u8 *pVar, u8 newVal)
Definition common.h:96
bool TestFileHeader(const res::BinaryFileHeader &fileHeader)
Definition lyt_common.cpp:22
s32 GetSignatureInt(const char *sig)
Definition common.h:67
void DrawLine(const math::VEC2 &pos, const Size &size, ut::Color color)
Definition lyt_common.cpp:204
void SetVtxColorElement(ut::Color *cols, u32 idx, u8 value)
Definition common.h:83
u8 GetHorizontalPosition(u8 var)
Definition common.h:88
void SetVertexFormat(bool bModulate, u8 texCoordNum)
Definition lyt_common.cpp:127
u8 GetVtxColorElement(const ut::Color *cols, u32 idx)
Definition common.h:78
math::VEC2 TexCoords[4]
Definition common.h:18
void InitGXTexObjFromTPL(GXTexObj *to, TPLPalette *pal, u32 id)
Definition lyt_common.cpp:245
ut::Color MultipleAlpha(const ut::Color col, u8 alpha)
Definition lyt_common.cpp:111
void DrawQuad(const math::VEC2 &basePt, const Size &size, u8 texCoordNum, const TexCoords *texCoords, const ut::Color *vtxColors)
Definition lyt_common.cpp:158
const char * GetStrTableStr(const void *pStrTable, int index)
Definition common.h:71
bool EqualsPaneName(const char *name1, const char *name2)
Definition lyt_common.cpp:12
bool IsModulateVertexColor(ut::Color *vtxColors, u8 glbAlpha)
Definition lyt_common.cpp:95
@ HORIZONTALPOSITION_MAX
Definition lyt_types.h:39
@ VERTICALPOSITION_MAX
Definition lyt_types.h:45
@ ANIMTARGET_VERTEXCOLOR_MAX
Definition animation.h:59
Definition HBMAnmController.h:6
Definition tpl.h:39
Definition GXStruct.h:38
Definition lyt_types.h:125
Definition resources.h:52
Definition types.h:103
Definition Color.h:10