summaryrefslogtreecommitdiff
path: root/include/JSystem/J3DGraphBase
diff options
context:
space:
mode:
Diffstat (limited to 'include/JSystem/J3DGraphBase')
-rw-r--r--include/JSystem/J3DGraphBase/J3DDrawBuffer.h45
-rw-r--r--include/JSystem/J3DGraphBase/J3DPacket.h108
-rw-r--r--include/JSystem/J3DGraphBase/J3DSys.h6
3 files changed, 159 insertions, 0 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
index 5f62d772f8..f24f798b08 100644
--- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
+++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
@@ -1,6 +1,51 @@
#ifndef J3DDRAWBUFFER_H
#define J3DDRAWBUFFER_H
+#include "JSystem/J3DGraphBase/J3DSys.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
+class J3DDrawBuffer;
+class J3DPacket;
+class J3DDrawPacket;
+class J3DMatPacket;
+class J3DShapePacket;
+
+typedef void (*J3DDrawBuffer_DrawFunc)(const J3DDrawBuffer* this_);
+
+class J3DDrawBuffer {
+public:
+ ~J3DDrawBuffer();
+ void initialize();
+ J3DError allocBuffer(u32);
+ void frameInit();
+ void entryMatSort(J3DMatPacket*);
+ void entryMatAnmSort(J3DMatPacket*);
+ void entryZSort(J3DMatPacket*);
+ void entryModelSort(J3DMatPacket*);
+ void entryInvalidSort(J3DMatPacket*);
+ bool entryNonSort(J3DMatPacket*);
+ bool entryImm(J3DPacket* pPacket, u16 index);
+ void draw() const;
+ void drawHead() const;
+ void drawTail() const;
+
+ inline void calcZRatio();
+
+public:
+ J3DPacket** mpBuf;
+ u32 mBufSize;
+ u32 mDrawType;
+ u32 mSortType;
+ float mZNear;
+ float mZFar;
+ float mZRatio;
+ Mtx* mpZMtx;
+ J3DPacket* mpCallBackPacket;
+
+ static u8 sortFuncTable[72];
+ static u8 drawFuncTable[24];
+ static u8 entryNum[4 + 4 /* padding */];
+};
+
#endif /* J3DDRAWBUFFER_H */
diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h
index 4c0f4064b4..09e3a7c739 100644
--- a/include/JSystem/J3DGraphBase/J3DPacket.h
+++ b/include/JSystem/J3DGraphBase/J3DPacket.h
@@ -1,6 +1,114 @@
#ifndef J3DPACKET_H
#define J3DPACKET_H
+#include "JSystem/J3DGraphBase/J3DSys.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
+class J3DMatPacket;
+
+class J3DDrawBuffer;
+class J3DMaterial;
+class J3DMaterialAnm;
+class J3DModel;
+class J3DMtxBuffer;
+class J3DShape;
+class J3DTexMtx;
+class J3DTexture;
+
+class J3DDisplayListObj {
+public:
+ J3DError newDisplayList(u32);
+ J3DError newSingleDisplayList(u32);
+ J3DError single_To_Double();
+ void setSingleDisplayList(void*, u32);
+ void swapBuffer();
+ void callDL() const;
+ void beginDL();
+ void endDL();
+ void beginPatch();
+ void endPatch();
+
+ static u8 sGDLObj[16];
+ static u8 sInterruptFlag[4 + 4 /* padding */];
+
+ void* mpData[2];
+ u32 mSize;
+ u32 mCapacity;
+};
+
+class J3DPacket {
+public:
+ void addChildPacket(J3DPacket* pChild);
+
+ inline void clear() {
+ mpNextSibling = NULL;
+ mpFirstChild = NULL;
+ }
+
+ virtual bool entry(J3DDrawBuffer* pDrawBuffer);
+ virtual void draw();
+ virtual ~J3DPacket();
+
+public:
+ J3DPacket* mpNextSibling;
+ J3DPacket* mpFirstChild;
+};
+
+class J3DDrawPacket : public J3DPacket {
+public:
+ J3DDrawPacket();
+ ~J3DDrawPacket();
+ J3DError newDisplayList(u32);
+ J3DError newSingleDisplayList(u32);
+ virtual void draw();
+
+public:
+ void* mpUserData;
+ int mFlags;
+ char mPad0[0x0C]; // unk
+ J3DDisplayListObj* mpDisplayListObj;
+ J3DTexMtx* mpTexMtx;
+};
+
+class J3DShapePacket : public J3DDrawPacket {
+public:
+ J3DShapePacket();
+ void calcDifferedBufferSize(u32);
+ void newDifferedDisplayList(u32);
+ void prepareDraw() const;
+ void drawFast();
+
+ virtual ~J3DShapePacket();
+ virtual void draw();
+
+public:
+ J3DShape* mpShape;
+ J3DMtxBuffer* mpMtxBuffer;
+ Mtx* mpViewMtx;
+ u32 mDiffFlag;
+ J3DModel* mpModel;
+};
+
+class J3DMatPacket : public J3DDrawPacket {
+public:
+ J3DMatPacket();
+ void addShapePacket(J3DShapePacket*);
+ void beginDiff();
+ void endDiff();
+ void isSame(J3DMatPacket*) const;
+
+ virtual ~J3DMatPacket();
+ virtual bool entry(J3DDrawBuffer* pDrawBuffer);
+ virtual void draw();
+
+public:
+ J3DShapePacket* mpShapePacket;
+ J3DShapePacket* mpFirstShapePacket;
+ J3DMaterial* mpMaterial;
+ s32 mSortFlags;
+ J3DTexture* mpTexture;
+ J3DMaterialAnm* mpMaterialAnm;
+};
+
#endif /* J3DPACKET_H */
diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h
index 5802253819..73cef8bde9 100644
--- a/include/JSystem/J3DGraphBase/J3DSys.h
+++ b/include/JSystem/J3DGraphBase/J3DSys.h
@@ -3,4 +3,10 @@
#include "dolphin/types.h"
+// Perhaps move to a new J3DEnum.h?
+enum J3DError {
+ kJ3DError_Success = 0,
+ kJ3DError_Alloc = 4,
+};
+
#endif /* J3DSYS_H */