Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
J3DPacket.h
Go to the documentation of this file.
1#ifndef J3DPACKET_H
2#define J3DPACKET_H
3
5#include "dolphin/gd/GDBase.h"
6#include <stdint.h>
7
8class J3DMatPacket;
9
10class J3DDrawBuffer;
11class J3DMaterial;
12class J3DMaterialAnm;
13class J3DModel;
14class J3DMtxBuffer;
15class J3DShape;
16class J3DTexMtx;
17class J3DTexMtxObj;
18class J3DTexture;
19
34
35#define J3D_DIFF_LIGHTOBJNUM(n) ((n & 0xF) << 4)
36#define J3D_DIFF_TEXGENNUM(n) ((n & 0xF) << 8)
37#define J3D_DIFF_TEXNONUM(n) ((n & 0xF) << 16)
38#define J3D_DIFF_TEVSTAGENUM(n) ((n & 0xF) << 20)
39
40#define J3D_DIFF_FLAG(MatColor, ColorChan, AmbColor, LightNum, TexGenNum, TexGen, TexCoordNum, TevStageNum, TevReg, KColor, TexCoordScale, TevStageInd, Fog, Blend) \
41 ( \
42 (MatColor << 0) | \
43 (ColorChan << 1) | \
44 (AmbColor << 2) | \
45 ((LightNum & 0xF) << 4) | \
46 ((TexGenNum & 0xF) << 8) | \
47 (TexGen << 12) | \
48 ((TexCoordNum & 0xF) << 16) | \
49 ((TevStageNum & 0xF) << 20) | \
50 (TevReg << 24) | \
51 (KColor << 25) | \
52 (TexCoordScale << 26) | \
53 (TevStageInd << 27) | \
54 (Fog << 28) | \
55 (Blend << 29) \
56 )
57
58inline u32 getDiffFlag_LightObjNum(u32 diffFlags) {
59 return (diffFlags & 0xf0) >> 4;
60}
61
62inline u32 getDiffFlag_TexGenNum(u32 diffFlags) {
63 return (diffFlags & 0xf00) >> 8;
64}
65
67 return param_1 * 0x35;
68}
69
71 return param_1 * 0x3d + 10;
72}
73
74inline u32 getDiffFlag_TexNoNum(u32 diffFlags) {
75 return (diffFlags & 0xf0000) >> 0x10;
76}
77
79 return param_1 * 0x37;
80}
81
83 u32 res = param_1 * 0x37;
84 res += ((param_1 + 1) >> 1) * 0x37;
85 return res;
86}
87
88inline u32 getDiffFlag_TevStageNum(u32 diffFlags) {
89 return (diffFlags & 0xf00000) >> 0x14;
90}
91
93 return param_1 * 10;
94}
95
97 return param_1 * 5;
98}
99
105public:
107 mpDisplayList[0] = NULL;
108 mpDisplayList[1] = NULL;
109 mSize = 0;
110 mMaxSize = 0;
111 }
112
115 int single_To_Double();
116 void setSingleDisplayList(void*, u32);
117 void swapBuffer();
118 void callDL() const;
119 void beginDL();
120 u32 endDL();
121 void beginPatch();
122 u32 endPatch();
123
124 u8* getDisplayList(int idx) { return (u8*)mpDisplayList[idx]; }
126
129
130 /* 0x0 */ void* mpDisplayList[2];
131 /* 0x8 */ u32 mSize;
132 /* 0xC */ u32 mMaxSize;
133}; // Size: 0x10
134
140public:
142 mpNextPacket = NULL;
143 mpFirstChild = NULL;
144 mpUserArea = NULL;
145 }
146
148
150 void setNextPacket(J3DPacket* i_packet) { mpNextPacket = i_packet; }
151
152 void drawClear() {
153 mpNextPacket = NULL;
154 mpFirstChild = NULL;
155 }
156
157 void* getUserArea() const { return mpUserArea; }
158 void setUserArea(uintptr_t area) { mpUserArea = (void*)area; }
159
160 virtual int entry(J3DDrawBuffer*);
161 virtual void draw();
162 virtual ~J3DPacket() {}
163
164public:
167 /* 0x0C */ void* mpUserArea;
168}; // Size: 0x10
169
174class J3DDrawPacket : public J3DPacket {
175public:
180 virtual void draw();
181
184
187
188 void callDL() const { mpDisplayListObj->callDL(); }
191
194
195 enum {
196 LOCKED = 0x01,
197 };
198
199 bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; }
200 void onFlag(u32 flag) { mFlags |= flag; }
201 void offFlag(u32 flag) { mFlags &= ~flag; }
202 void lock() { onFlag(LOCKED); }
203 void unlock() { offFlag(LOCKED); }
205 bool isLocked() const { return checkFlag(1); }
206
207public:
208 /* 0x10 */ u32 mFlags;
209 /* 0x14 */ char unk_0x14[0x20 - 0x14];
212}; // Size: 0x28
213
219public:
223 void prepareDraw() const;
224 void drawFast();
225
226 virtual ~J3DShapePacket();
227 virtual void draw();
228
229 void setShape(J3DShape* pShape) {
230 J3D_ASSERT_NULLPTR(523, pShape != NULL);
231 mpShape = pShape;
232 }
233
234 void setModel(J3DModel* pModel) {
235 J3D_ASSERT_NULLPTR(533, pModel != NULL);
236 mpModel = pModel;
237 }
238
239 void setMtxBuffer(J3DMtxBuffer* pMtxBuffer) { mpMtxBuffer = pMtxBuffer; }
240 void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
241
242 J3DShape* getShape() const { return mpShape; }
243 J3DModel* getModel() const { return mpModel; }
244 Mtx* getBaseMtxPtr() const { return mpBaseMtxPtr; }
245
246public:
247 /* 0x28 */ J3DShape* mpShape;
249 /* 0x30 */ Mtx* mpBaseMtxPtr;
250 /* 0x34 */ u32 mDiffFlag;
251 /* 0x38 */ J3DModel* mpModel;
252}; // Size: 0x3C
253
259public:
260 J3DMatPacket();
262 void beginDiff();
263 void endDiff();
264 bool isSame(J3DMatPacket*) const;
265
266 J3DMaterial* getMaterial() const { return mpMaterial; }
268 void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
269
270 void setMaterial(J3DMaterial* pMaterial) {
271 J3D_ASSERT_NULLPTR(646, pMaterial != NULL);
272 mpMaterial = pMaterial;
273 }
274
275 void setTexture(J3DTexture* pTexture) {
276 J3D_ASSERT_NULLPTR(651, pTexture != NULL);
277 mpTexture = pTexture;
278 }
279
282 void setMaterialAnmID(J3DMaterialAnm* materialAnm) { mpMaterialAnm = materialAnm; }
285
286 virtual ~J3DMatPacket();
287 virtual int entry(J3DDrawBuffer*);
288 virtual void draw();
289
290public:
294 /* 0x34 */ u32 mDiffFlag;
297}; // Size: 0x40
298
299#endif /* J3DPACKET_H */
static BOOL flag
Definition DEMOAVX.c:20
int calcDifferedBufferSize_TevStageDirectSize(u32 param_1)
Definition J3DPacket.h:96
u32 getDiffFlag_LightObjNum(u32 diffFlags)
Definition J3DPacket.h:58
int calcDifferedBufferSize_TexNoSize(u32 param_1)
Definition J3DPacket.h:78
u32 getDiffFlag_TevStageNum(u32 diffFlags)
Definition J3DPacket.h:88
int calcDifferedBufferSize_TexGenSize(u32 param_1)
Definition J3DPacket.h:70
int calcDifferedBufferSize_TevStageSize(u32 param_1)
Definition J3DPacket.h:92
u32 calcDifferedBufferSize_TexNoAndTexCoordScaleSize(u32 param_1)
Definition J3DPacket.h:82
u32 getDiffFlag_TexGenNum(u32 diffFlags)
Definition J3DPacket.h:62
u32 getDiffFlag_TexNoNum(u32 diffFlags)
Definition J3DPacket.h:74
J3DDiffFlag
Definition J3DPacket.h:20
@ J3DDiffFlag_Changed
Definition J3DPacket.h:32
@ J3DDiffFlag_Fog
Definition J3DPacket.h:29
@ J3DDiffFlag_AmbColor
Definition J3DPacket.h:23
@ J3DDiffFlag_TevReg
Definition J3DPacket.h:25
@ J3DDiffFlag_TexGen
Definition J3DPacket.h:24
@ J3DDiffFlag_TevStageIndirect
Definition J3DPacket.h:28
@ J3DDiffFlag_Unk40000000
Definition J3DPacket.h:31
@ J3DDiffFlag_MatColor
Definition J3DPacket.h:21
@ J3DDiffFlag_KonstColor
Definition J3DPacket.h:26
@ J3DDiffFlag_TexCoordScale
Definition J3DPacket.h:27
@ J3DDiffFlag_ColorChan
Definition J3DPacket.h:22
@ J3DDiffFlag_Blend
Definition J3DPacket.h:30
int calcDifferedBufferSize_TexMtxSize(u32 param_1)
Definition J3DPacket.h:66
J3DError
Definition J3DSys.h:9
Definition J3DPacket.h:104
u32 getDisplayListSize()
Definition J3DPacket.h:125
void callDL() const
Definition J3DPacket.cpp:66
static s32 sInterruptFlag
Definition J3DPacket.h:128
static GDLObj sGDLObj
Definition J3DPacket.h:127
void beginDL()
Definition J3DPacket.cpp:74
u32 mMaxSize
Definition J3DPacket.h:132
u32 endPatch()
Definition J3DPacket.cpp:94
void beginPatch()
Definition J3DPacket.cpp:90
int single_To_Double()
Definition J3DPacket.cpp:37
u8 * getDisplayList(int idx)
Definition J3DPacket.h:124
J3DError newDisplayList(u32)
Definition J3DPacket.cpp:13
void setSingleDisplayList(void *, u32)
Definition J3DPacket.cpp:51
J3DDisplayListObj()
Definition J3DPacket.h:106
J3DError newSingleDisplayList(u32)
Definition J3DPacket.cpp:25
u32 mSize
Definition J3DPacket.h:131
u32 endDL()
Definition J3DPacket.cpp:81
void * mpDisplayList[2]
Definition J3DPacket.h:130
void swapBuffer()
Definition J3DPacket.cpp:60
Definition J3DDrawBuffer.h:60
Definition J3DPacket.h:174
void beginPatch()
Definition J3DPacket.h:185
void endDL()
Definition J3DPacket.h:190
J3DTexMtxObj * mpTexMtxObj
Definition J3DPacket.h:211
void lock()
Definition J3DPacket.h:202
J3DDisplayListObj * getDisplayListObj()
Definition J3DPacket.h:182
void offFlag(u32 flag)
Definition J3DPacket.h:201
J3DDrawPacket()
Definition J3DPacket.cpp:138
~J3DDrawPacket()
Definition J3DPacket.cpp:144
J3DError newSingleDisplayList(u32)
Definition J3DPacket.cpp:159
J3DDisplayListObj * mpDisplayListObj
Definition J3DPacket.h:210
u32 mFlags
Definition J3DPacket.h:208
void endPatch()
Definition J3DPacket.h:186
@ LOCKED
Definition J3DPacket.h:196
void callDL() const
Definition J3DPacket.h:188
void setDisplayListObj(J3DDisplayListObj *pObj)
Definition J3DPacket.h:183
void beginDL()
Definition J3DPacket.h:189
J3DTexMtxObj * getTexMtxObj()
Definition J3DPacket.h:204
bool isLocked() const
Definition J3DPacket.h:205
bool checkFlag(u32 flag) const
Definition J3DPacket.h:199
char unk_0x14[0x20 - 0x14]
Definition J3DPacket.h:209
virtual void draw()
Definition J3DPacket.cpp:172
J3DError newDisplayList(u32)
Definition J3DPacket.cpp:146
void * getDisplayList(int i)
Definition J3DPacket.h:192
void onFlag(u32 flag)
Definition J3DPacket.h:200
void unlock()
Definition J3DPacket.h:203
u32 getDisplayListSize() const
Definition J3DPacket.h:193
Definition J3DPacket.h:258
void endDiff()
Definition J3DPacket.cpp:200
virtual ~J3DMatPacket()
Definition J3DPacket.cpp:185
J3DShapePacket * mpShapePacket
Definition J3DPacket.h:292
bool isSame(J3DMatPacket *) const
Definition J3DPacket.cpp:204
void setMaterialID(u32 id)
Definition J3DPacket.h:281
BOOL isChanged()
Definition J3DPacket.h:283
J3DShapePacket * getShapePacket() const
Definition J3DPacket.h:267
void addShapePacket(J3DShapePacket *)
Definition J3DPacket.cpp:187
void beginDiff()
Definition J3DPacket.cpp:196
J3DMaterial * mpMaterial
Definition J3DPacket.h:293
J3DMatPacket()
Definition J3DPacket.cpp:176
J3DShapePacket * mpInitShapePacket
Definition J3DPacket.h:291
J3DMaterial * getMaterial() const
Definition J3DPacket.h:266
void setMaterial(J3DMaterial *pMaterial)
Definition J3DPacket.h:270
J3DMaterialAnm * mpMaterialAnm
Definition J3DPacket.h:296
void setShapePacket(J3DShapePacket *packet)
Definition J3DPacket.h:268
bool isEnabled_Diff()
Definition J3DPacket.h:284
J3DTexture * mpTexture
Definition J3DPacket.h:295
void setTexture(J3DTexture *pTexture)
Definition J3DPacket.h:275
void setInitShapePacket(J3DShapePacket *packet)
Definition J3DPacket.h:280
u32 mDiffFlag
Definition J3DPacket.h:294
void setMaterialAnmID(J3DMaterialAnm *materialAnm)
Definition J3DPacket.h:282
virtual int entry(J3DDrawBuffer *)
Definition J3DPacket.cpp:386
virtual void draw()
Definition J3DPacket.cpp:209
Definition J3DMaterialAnm.h:190
Definition J3DMaterial.h:16
Definition J3DModel.h:43
Definition J3DMtxBuffer.h:12
Definition J3DPacket.h:139
virtual ~J3DPacket()
Definition J3DPacket.h:162
virtual int entry(J3DDrawBuffer *)
Definition J3DPacket.cpp:100
virtual void draw()
Definition J3DPacket.cpp:384
void * getUserArea() const
Definition J3DPacket.h:157
J3DPacket * mpFirstChild
Definition J3DPacket.h:166
void setUserArea(uintptr_t area)
Definition J3DPacket.h:158
void * mpUserArea
Definition J3DPacket.h:167
J3DPacket * getNextPacket() const
Definition J3DPacket.h:149
void addChildPacket(J3DPacket *)
Definition J3DPacket.cpp:105
J3DPacket()
Definition J3DPacket.h:141
void drawClear()
Definition J3DPacket.h:152
void setNextPacket(J3DPacket *i_packet)
Definition J3DPacket.h:150
J3DPacket * mpNextPacket
Definition J3DPacket.h:165
Definition J3DPacket.h:218
J3DModel * getModel() const
Definition J3DPacket.h:243
void setModel(J3DModel *pModel)
Definition J3DPacket.h:234
u32 calcDifferedBufferSize(u32)
Definition J3DPacket.cpp:238
void drawFast()
Definition J3DPacket.cpp:369
J3DShapePacket()
Definition J3DPacket.cpp:228
J3DModel * mpModel
Definition J3DPacket.h:251
Mtx * getBaseMtxPtr() const
Definition J3DPacket.h:244
Mtx * mpBaseMtxPtr
Definition J3DPacket.h:249
virtual void draw()
Definition J3DPacket.cpp:350
void setShape(J3DShape *pShape)
Definition J3DPacket.h:229
void setBaseMtxPtr(Mtx *pMtx)
Definition J3DPacket.h:240
J3DShape * getShape() const
Definition J3DPacket.h:242
J3DShape * mpShape
Definition J3DPacket.h:247
virtual ~J3DShapePacket()
Definition J3DPacket.cpp:236
void prepareDraw() const
Definition J3DPacket.cpp:316
u32 mDiffFlag
Definition J3DPacket.h:250
int newDifferedDisplayList(u32)
Definition J3DPacket.cpp:302
void setMtxBuffer(J3DMtxBuffer *pMtxBuffer)
Definition J3DPacket.h:239
J3DMtxBuffer * mpMtxBuffer
Definition J3DPacket.h:248
Definition J3DShape.h:118
Definition J3DShapeMtx.h:15
Definition J3DTexture.h:48
Definition J3DTexture.h:14
static u16 const id[4]
Definition d_a_obj_smtile.cpp:242
f32 Mtx[3][4]
Definition mtx.h:25
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
int i
Definition e_pow.c:165
Definition GDBase.h:17