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
4#include "JSystem/J3DAssert.h"
7#include <dolphin/gd/GDBase.h>
8#include <dolphin/mtx.h>
9#include <stdint.h>
10
11class J3DMatPacket;
12
13class J3DDrawBuffer;
14class J3DMaterial;
15class J3DMaterialAnm;
16class J3DModel;
17class J3DMtxBuffer;
18class J3DShape;
19class J3DTexMtx;
20class J3DTexMtxObj;
21class J3DTexture;
22
37
38#define J3D_DIFF_LIGHTOBJNUM(n) ((n & 0xF) << 4)
39#define J3D_DIFF_TEXGENNUM(n) ((n & 0xF) << 8)
40#define J3D_DIFF_TEXNONUM(n) ((n & 0xF) << 16)
41#define J3D_DIFF_TEVSTAGENUM(n) ((n & 0xF) << 20)
42
43#define J3D_DIFF_FLAG(MatColor, ColorChan, AmbColor, LightNum, TexGenNum, TexGen, TexCoordNum, TevStageNum, TevReg, KColor, TexCoordScale, TevStageInd, Fog, Blend) \
44 ( \
45 (MatColor << 0) | \
46 (ColorChan << 1) | \
47 (AmbColor << 2) | \
48 ((LightNum & 0xF) << 4) | \
49 ((TexGenNum & 0xF) << 8) | \
50 (TexGen << 12) | \
51 ((TexCoordNum & 0xF) << 16) | \
52 ((TevStageNum & 0xF) << 20) | \
53 (TevReg << 24) | \
54 (KColor << 25) | \
55 (TexCoordScale << 26) | \
56 (TevStageInd << 27) | \
57 (Fog << 28) | \
58 (Blend << 29) \
59 )
60
61inline u32 getDiffFlag_LightObjNum(u32 diffFlags) {
62 return (diffFlags & 0xf0) >> 4;
63}
64
65inline u32 getDiffFlag_TexGenNum(u32 diffFlags) {
66 return (diffFlags & 0xf00) >> 8;
67}
68
70 return param_1 * 0x35;
71}
72
74 return param_1 * 0x3d + 10;
75}
76
77inline u32 getDiffFlag_TexNoNum(u32 diffFlags) {
78 return (diffFlags & 0xf0000) >> 0x10;
79}
80
82 return param_1 * 0x37;
83}
84
86 u32 res = param_1 * 0x37;
87 res += ((param_1 + 1) >> 1) * 0x37;
88 return res;
89}
90
91inline u32 getDiffFlag_TevStageNum(u32 diffFlags) {
92 return (diffFlags & 0xf00000) >> 0x14;
93}
94
96 return param_1 * 10;
97}
98
100 return param_1 * 5;
101}
102
108public:
110 mpDisplayList[0] = NULL;
111 mpDisplayList[1] = NULL;
112 mSize = 0;
113 mMaxSize = 0;
114 }
115
118 int single_To_Double();
119 void setSingleDisplayList(void*, u32);
120 void swapBuffer();
121 void callDL() const;
122 void beginDL();
123 u32 endDL();
124 void beginPatch();
125 u32 endPatch();
126
127 u8* getDisplayList(int idx) { return (u8*)mpDisplayList[idx]; }
129
132
133 /* 0x0 */ void* mpDisplayList[2];
134 /* 0x8 */ u32 mSize;
135 /* 0xC */ u32 mMaxSize;
136}; // Size: 0x10
137
143public:
144 Mtx& getMtx(u16 idx) {
145 J3D_ASSERT_RANGE(275, idx < mTexMtxNum);
146 return mpTexMtx[idx];
147 }
148
149 void setMtx(u16 idx, const Mtx mtx) {
150 J3D_ASSERT_RANGE(288, idx < mTexMtxNum);
151 MTXCopy(mtx, mpTexMtx[idx]);
152 }
153
155 J3D_ASSERT_RANGE(293, idx < mTexMtxNum);
156 return mpEffectMtx[idx];
157 }
158
159 u16 getNumTexMtx() const { return mTexMtxNum; }
160
161 /* 0x00 */ Mtx* mpTexMtx;
162 /* 0x04 */ Mtx44* mpEffectMtx;
163 /* 0x08 */ u16 mTexMtxNum;
164};
165
171public:
173 mpNextPacket = NULL;
174 mpFirstChild = NULL;
175 mpUserArea = NULL;
176 }
177
179
181 void setNextPacket(J3DPacket* i_packet) { mpNextPacket = i_packet; }
182
183 void drawClear() {
184 mpNextPacket = NULL;
185 mpFirstChild = NULL;
186 }
187
188 void* getUserArea() const { return mpUserArea; }
189 void setUserArea(uintptr_t area) { mpUserArea = (void*)area; }
190
191 virtual int entry(J3DDrawBuffer*);
192 virtual void draw();
193 virtual ~J3DPacket() {}
194
195public:
198 /* 0x0C */ void* mpUserArea;
199}; // Size: 0x10
200
205class J3DDrawPacket : public J3DPacket {
206public:
211 virtual void draw();
212
215
218
219 void callDL() const { mpDisplayListObj->callDL(); }
222
225
226 enum {
227 LOCKED = 0x01,
228 };
229
230 bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; }
231 void onFlag(u32 flag) { mFlags |= flag; }
232 void offFlag(u32 flag) { mFlags &= ~flag; }
233 void lock() { onFlag(LOCKED); }
234 void unlock() { offFlag(LOCKED); }
236 bool isLocked() const { return checkFlag(1); }
237
238public:
239 /* 0x10 */ u32 mFlags;
240 /* 0x14 */ char unk_0x14[0x20 - 0x14];
243}; // Size: 0x28
244
250public:
254 void prepareDraw() const;
255 void drawFast();
256
257 virtual ~J3DShapePacket();
258 virtual void draw();
259
260 void setShape(J3DShape* pShape) {
261 J3D_ASSERT_NULLPTR(523, pShape != NULL);
262 mpShape = pShape;
263 }
264
265 void setModel(J3DModel* pModel) {
266 J3D_ASSERT_NULLPTR(533, pModel != NULL);
267 mpModel = pModel;
268 }
269
270 void setMtxBuffer(J3DMtxBuffer* pMtxBuffer) { mpMtxBuffer = pMtxBuffer; }
271 void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
272
273 J3DShape* getShape() const { return mpShape; }
274 J3DModel* getModel() const { return mpModel; }
275 Mtx* getBaseMtxPtr() const { return mpBaseMtxPtr; }
276
277public:
278 /* 0x28 */ J3DShape* mpShape;
280 /* 0x30 */ Mtx* mpBaseMtxPtr;
281 /* 0x34 */ u32 mDiffFlag;
282 /* 0x38 */ J3DModel* mpModel;
283}; // Size: 0x3C
284
290public:
291 J3DMatPacket();
293 void beginDiff();
294 void endDiff();
295 bool isSame(J3DMatPacket*) const;
296
297 J3DMaterial* getMaterial() const { return mpMaterial; }
299 void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
300
301 void setMaterial(J3DMaterial* pMaterial) {
302 J3D_ASSERT_NULLPTR(646, pMaterial != NULL);
303 mpMaterial = pMaterial;
304 }
305
306 void setTexture(J3DTexture* pTexture) {
307 J3D_ASSERT_NULLPTR(651, pTexture != NULL);
308 mpTexture = pTexture;
309 }
310
313 void setMaterialAnmID(J3DMaterialAnm* materialAnm) { mpMaterialAnm = materialAnm; }
316
317 virtual ~J3DMatPacket();
318 virtual int entry(J3DDrawBuffer*);
319 virtual void draw();
320
321public:
325 /* 0x34 */ u32 mDiffFlag;
328}; // Size: 0x40
329
330#endif /* J3DPACKET_H */
static BOOL flag
Definition DEMOAVX.c:20
J3DError
Definition J3DEnum.h:4
int calcDifferedBufferSize_TevStageDirectSize(u32 param_1)
Definition J3DPacket.h:99
u32 getDiffFlag_LightObjNum(u32 diffFlags)
Definition J3DPacket.h:61
int calcDifferedBufferSize_TexNoSize(u32 param_1)
Definition J3DPacket.h:81
u32 getDiffFlag_TevStageNum(u32 diffFlags)
Definition J3DPacket.h:91
int calcDifferedBufferSize_TexGenSize(u32 param_1)
Definition J3DPacket.h:73
int calcDifferedBufferSize_TevStageSize(u32 param_1)
Definition J3DPacket.h:95
u32 calcDifferedBufferSize_TexNoAndTexCoordScaleSize(u32 param_1)
Definition J3DPacket.h:85
u32 getDiffFlag_TexGenNum(u32 diffFlags)
Definition J3DPacket.h:65
u32 getDiffFlag_TexNoNum(u32 diffFlags)
Definition J3DPacket.h:77
J3DDiffFlag
Definition J3DPacket.h:23
@ J3DDiffFlag_Changed
Definition J3DPacket.h:35
@ J3DDiffFlag_Fog
Definition J3DPacket.h:32
@ J3DDiffFlag_AmbColor
Definition J3DPacket.h:26
@ J3DDiffFlag_TevReg
Definition J3DPacket.h:28
@ J3DDiffFlag_TexGen
Definition J3DPacket.h:27
@ J3DDiffFlag_TevStageIndirect
Definition J3DPacket.h:31
@ J3DDiffFlag_Unk40000000
Definition J3DPacket.h:34
@ J3DDiffFlag_MatColor
Definition J3DPacket.h:24
@ J3DDiffFlag_KonstColor
Definition J3DPacket.h:29
@ J3DDiffFlag_TexCoordScale
Definition J3DPacket.h:30
@ J3DDiffFlag_ColorChan
Definition J3DPacket.h:25
@ J3DDiffFlag_Blend
Definition J3DPacket.h:33
int calcDifferedBufferSize_TexMtxSize(u32 param_1)
Definition J3DPacket.h:69
static Mtx mtx[10]
Definition c_lib.cpp:486
Definition J3DPacket.h:107
u32 getDisplayListSize()
Definition J3DPacket.h:128
void callDL() const
Definition J3DPacket.cpp:66
static s32 sInterruptFlag
Definition J3DPacket.h:131
static GDLObj sGDLObj
Definition J3DPacket.h:130
void beginDL()
Definition J3DPacket.cpp:74
u32 mMaxSize
Definition J3DPacket.h:135
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:127
J3DError newDisplayList(u32)
Definition J3DPacket.cpp:13
void setSingleDisplayList(void *, u32)
Definition J3DPacket.cpp:51
J3DDisplayListObj()
Definition J3DPacket.h:109
J3DError newSingleDisplayList(u32)
Definition J3DPacket.cpp:25
u32 mSize
Definition J3DPacket.h:134
u32 endDL()
Definition J3DPacket.cpp:81
void * mpDisplayList[2]
Definition J3DPacket.h:133
void swapBuffer()
Definition J3DPacket.cpp:60
Definition J3DDrawBuffer.h:60
Definition J3DPacket.h:205
void beginPatch()
Definition J3DPacket.h:216
void endDL()
Definition J3DPacket.h:221
J3DTexMtxObj * mpTexMtxObj
Definition J3DPacket.h:242
void lock()
Definition J3DPacket.h:233
J3DDisplayListObj * getDisplayListObj()
Definition J3DPacket.h:213
void offFlag(u32 flag)
Definition J3DPacket.h:232
J3DDrawPacket()
Definition J3DPacket.cpp:138
~J3DDrawPacket()
Definition J3DPacket.cpp:144
J3DError newSingleDisplayList(u32)
Definition J3DPacket.cpp:159
J3DDisplayListObj * mpDisplayListObj
Definition J3DPacket.h:241
u32 mFlags
Definition J3DPacket.h:239
void endPatch()
Definition J3DPacket.h:217
void callDL() const
Definition J3DPacket.h:219
void setDisplayListObj(J3DDisplayListObj *pObj)
Definition J3DPacket.h:214
void beginDL()
Definition J3DPacket.h:220
J3DTexMtxObj * getTexMtxObj()
Definition J3DPacket.h:235
bool isLocked() const
Definition J3DPacket.h:236
bool checkFlag(u32 flag) const
Definition J3DPacket.h:230
char unk_0x14[0x20 - 0x14]
Definition J3DPacket.h:240
virtual void draw()
Definition J3DPacket.cpp:172
J3DError newDisplayList(u32)
Definition J3DPacket.cpp:146
@ LOCKED
Definition J3DPacket.h:227
void * getDisplayList(int i)
Definition J3DPacket.h:223
void onFlag(u32 flag)
Definition J3DPacket.h:231
void unlock()
Definition J3DPacket.h:234
u32 getDisplayListSize() const
Definition J3DPacket.h:224
Definition J3DPacket.h:289
void endDiff()
Definition J3DPacket.cpp:200
virtual ~J3DMatPacket()
Definition J3DPacket.cpp:185
J3DShapePacket * mpShapePacket
Definition J3DPacket.h:323
bool isSame(J3DMatPacket *) const
Definition J3DPacket.cpp:204
void setMaterialID(u32 id)
Definition J3DPacket.h:312
BOOL isChanged()
Definition J3DPacket.h:314
J3DShapePacket * getShapePacket() const
Definition J3DPacket.h:298
void addShapePacket(J3DShapePacket *)
Definition J3DPacket.cpp:187
void beginDiff()
Definition J3DPacket.cpp:196
J3DMaterial * mpMaterial
Definition J3DPacket.h:324
J3DMatPacket()
Definition J3DPacket.cpp:176
J3DShapePacket * mpInitShapePacket
Definition J3DPacket.h:322
J3DMaterial * getMaterial() const
Definition J3DPacket.h:297
void setMaterial(J3DMaterial *pMaterial)
Definition J3DPacket.h:301
J3DMaterialAnm * mpMaterialAnm
Definition J3DPacket.h:327
void setShapePacket(J3DShapePacket *packet)
Definition J3DPacket.h:299
bool isEnabled_Diff()
Definition J3DPacket.h:315
J3DTexture * mpTexture
Definition J3DPacket.h:326
void setTexture(J3DTexture *pTexture)
Definition J3DPacket.h:306
void setInitShapePacket(J3DShapePacket *packet)
Definition J3DPacket.h:311
u32 mDiffFlag
Definition J3DPacket.h:325
void setMaterialAnmID(J3DMaterialAnm *materialAnm)
Definition J3DPacket.h:313
virtual int entry(J3DDrawBuffer *)
Definition J3DPacket.cpp:386
virtual void draw()
Definition J3DPacket.cpp:209
Definition J3DMaterialAnm.h:193
Definition J3DMaterial.h:16
Definition J3DModel.h:43
Definition J3DMtxBuffer.h:13
Definition J3DPacket.h:170
virtual ~J3DPacket()
Definition J3DPacket.h:193
virtual int entry(J3DDrawBuffer *)
Definition J3DPacket.cpp:100
virtual void draw()
Definition J3DPacket.cpp:384
void * getUserArea() const
Definition J3DPacket.h:188
J3DPacket * mpFirstChild
Definition J3DPacket.h:197
void setUserArea(uintptr_t area)
Definition J3DPacket.h:189
void * mpUserArea
Definition J3DPacket.h:198
J3DPacket * getNextPacket() const
Definition J3DPacket.h:180
void addChildPacket(J3DPacket *)
Definition J3DPacket.cpp:105
J3DPacket()
Definition J3DPacket.h:172
void drawClear()
Definition J3DPacket.h:183
void setNextPacket(J3DPacket *i_packet)
Definition J3DPacket.h:181
J3DPacket * mpNextPacket
Definition J3DPacket.h:196
Definition J3DPacket.h:249
J3DModel * getModel() const
Definition J3DPacket.h:274
void setModel(J3DModel *pModel)
Definition J3DPacket.h:265
u32 calcDifferedBufferSize(u32)
Definition J3DPacket.cpp:238
void drawFast()
Definition J3DPacket.cpp:369
J3DShapePacket()
Definition J3DPacket.cpp:228
J3DModel * mpModel
Definition J3DPacket.h:282
Mtx * getBaseMtxPtr() const
Definition J3DPacket.h:275
Mtx * mpBaseMtxPtr
Definition J3DPacket.h:280
virtual void draw()
Definition J3DPacket.cpp:350
void setShape(J3DShape *pShape)
Definition J3DPacket.h:260
void setBaseMtxPtr(Mtx *pMtx)
Definition J3DPacket.h:271
J3DShape * getShape() const
Definition J3DPacket.h:273
J3DShape * mpShape
Definition J3DPacket.h:278
virtual ~J3DShapePacket()
Definition J3DPacket.cpp:236
void prepareDraw() const
Definition J3DPacket.cpp:316
u32 mDiffFlag
Definition J3DPacket.h:281
int newDifferedDisplayList(u32)
Definition J3DPacket.cpp:302
void setMtxBuffer(J3DMtxBuffer *pMtxBuffer)
Definition J3DPacket.h:270
J3DMtxBuffer * mpMtxBuffer
Definition J3DPacket.h:279
Definition J3DShape.h:118
Definition J3DPacket.h:142
u16 mTexMtxNum
Definition J3DPacket.h:163
Mtx * mpTexMtx
Definition J3DPacket.h:161
void setMtx(u16 idx, const Mtx mtx)
Definition J3DPacket.h:149
u16 getNumTexMtx() const
Definition J3DPacket.h:159
Mtx & getMtx(u16 idx)
Definition J3DPacket.h:144
Mtx44 & getEffectMtx(u16 idx)
Definition J3DPacket.h:154
Mtx44 * mpEffectMtx
Definition J3DPacket.h:162
Definition J3DTexture.h:51
Definition J3DTexture.h:14
static u16 const id[4]
Definition d_a_obj_smtile.cpp:269
f32 Mtx44[4][4]
Definition mtx.h:28
f32 Mtx[3][4]
Definition mtx.h:25
int i
Definition e_log.c:92
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
Definition GDBase.h:17