summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphBase/J3DVertex.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-10-10 07:29:58 -0700
committerGitHub <noreply@github.com>2024-10-10 08:29:58 -0600
commit12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch)
tree4509be332b2ccfc6fe939f47740d68f7746eca3e /src/JSystem/J3DGraphBase/J3DVertex.cpp
parent2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff)
switch to dtk setup (#2203)
* switch to dtk setup * some cleanup / fixes * cleanup d_a_alink literals * Restore doxygen, update CI & README.md (#1) * Fix build image ref (#2) --------- Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DVertex.cpp')
-rw-r--r--src/JSystem/J3DGraphBase/J3DVertex.cpp244
1 files changed, 244 insertions, 0 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DVertex.cpp b/src/JSystem/J3DGraphBase/J3DVertex.cpp
new file mode 100644
index 0000000000..96f42dedb9
--- /dev/null
+++ b/src/JSystem/J3DGraphBase/J3DVertex.cpp
@@ -0,0 +1,244 @@
+//
+// Generated By: dol2asm
+// Translation Unit: J3DVertex
+//
+
+#include "JSystem/J3DGraphBase/J3DVertex.h"
+#include "JSystem/J3DGraphAnimator/J3DJointTree.h"
+#include "JSystem/J3DGraphBase/J3DSys.h"
+#include "JSystem/JKernel/JKRHeap.h"
+#include "string.h"
+#include "dolphin/os/OSCache.h"
+
+/* 80310EF8-80310F78 30B838 0080+00 0/0 1/1 0/0 .text __ct__13J3DVertexDataFv */
+J3DVertexData::J3DVertexData() {
+ mVtxNum = 0;
+ mNrmNum = 0;
+ mColNum = 0;
+ mTexCoordNum = 0;
+ mPacketNum = 0;
+
+ mVtxAttrFmtList = NULL;
+ mVtxPosArray = NULL;
+ mVtxNrmArray = NULL;
+ mVtxNBTArray = NULL;
+
+ for (int i = 0; i < ARRAY_SIZE(mVtxColorArray); i++)
+ mVtxColorArray[i] = NULL;
+
+ for (int i = 0; i < ARRAY_SIZE(mVtxTexCoordArray); i++)
+ mVtxTexCoordArray[i] = NULL;
+
+ mVtxPosFrac = 0;
+ mVtxPosType = GX_F32;
+ mVtxNrmFrac = 0;
+ mVtxNrmType = GX_F32;
+}
+
+/* 80310F78-80310FD8 30B8B8 0060+00 0/0 1/1 0/0 .text
+ * setVertexData__15J3DVertexBufferFP13J3DVertexData */
+void J3DVertexBuffer::setVertexData(J3DVertexData* pVtxData) {
+ mVtxData = pVtxData;
+ mVtxPosArray[0] = pVtxData->getVtxPosArray();
+ mVtxNrmArray[0] = pVtxData->getVtxNrmArray();
+ mVtxColArray[0] = pVtxData->getVtxColorArray(0);
+ mVtxPosArray[1] = NULL;
+ mVtxNrmArray[1] = NULL;
+ mVtxColArray[1] = NULL;
+
+ mTransformedVtxPosArray[0] = pVtxData->getVtxPosArray();
+ mTransformedVtxNrmArray[0] = pVtxData->getVtxNrmArray();
+ mTransformedVtxPosArray[1] = NULL;
+ mTransformedVtxNrmArray[1] = NULL;
+
+ frameInit();
+}
+
+/* 80310FD8-80311030 30B918 0058+00 0/0 3/3 0/0 .text init__15J3DVertexBufferFv */
+void J3DVertexBuffer::init() {
+ mVtxData = NULL;
+
+ mVtxPosArray[1] = NULL;
+ mVtxPosArray[0] = NULL;
+
+ mVtxNrmArray[1] = NULL;
+ mVtxNrmArray[0] = NULL;
+
+ mVtxColArray[1] = NULL;
+ mVtxColArray[0] = NULL;
+
+ mTransformedVtxPosArray[1] = NULL;
+ mTransformedVtxPosArray[0] = NULL;
+
+ mTransformedVtxNrmArray[1] = NULL;
+ mTransformedVtxNrmArray[0] = NULL;
+
+ mCurrentVtxPos = NULL;
+ mCurrentVtxNrm = NULL;
+ mCurrentVtxCol = NULL;
+
+ frameInit();
+}
+
+/* 80311030-8031106C 30B970 003C+00 0/0 1/1 0/0 .text __dt__15J3DVertexBufferFv */
+J3DVertexBuffer::~J3DVertexBuffer() {}
+
+/* 8031106C-80311090 30B9AC 0024+00 0/0 1/1 0/0 .text setArray__15J3DVertexBufferCFv */
+void J3DVertexBuffer::setArray() const {
+ j3dSys.setVtxPos(mCurrentVtxPos);
+ j3dSys.setVtxNrm(mCurrentVtxNrm);
+ j3dSys.setVtxCol(mCurrentVtxCol);
+}
+
+/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl
+ */
+s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
+ if (flag & 1) {
+ for (int i = 0; i < 2; i++) {
+ mVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()];
+
+ if (mVtxPosArray[i] == NULL) {
+ return kJ3DError_Alloc;
+ }
+ memcpy(mVtxPosArray[i], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
+ DCStoreRange(mVtxPosArray[i], mVtxData->getVtxNum() * 12);
+ }
+ } else {
+ mVtxPosArray[0] = mVtxData->getVtxPosArray();
+
+ if (mVtxPosArray[1] == NULL) {
+ mVtxPosArray[1] = new (0x20) Vec[mVtxData->getVtxNum()];
+ if (mVtxPosArray[1] == NULL) {
+ return kJ3DError_Alloc;
+ }
+ }
+ memcpy(mVtxPosArray[1], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
+ DCStoreRange(mVtxPosArray[1], mVtxData->getVtxNum() * 12);
+ }
+
+ return kJ3DError_Success;
+}
+
+/* 803111B0-803112D0 30BAF0 0120+00 1/1 0/0 0/0 .text copyLocalVtxNrmArray__15J3DVertexBufferFUl
+ */
+s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 flag) {
+ if (flag & 1) {
+ for (int i = 0; i < 2; i++) {
+ mVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
+
+ if (mVtxNrmArray[i] == NULL) {
+ return kJ3DError_Alloc;
+ }
+ memcpy(mVtxNrmArray[i], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
+ DCStoreRange(mVtxNrmArray[i], mVtxData->getNrmNum() * 12);
+ }
+ } else {
+ mVtxNrmArray[0] = mVtxData->getVtxNrmArray();
+
+ if (mVtxNrmArray[1] == NULL) {
+ mVtxNrmArray[1] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
+ if (mVtxNrmArray[1] == NULL) {
+ return kJ3DError_Alloc;
+ }
+ }
+ memcpy(mVtxNrmArray[1], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
+ DCStoreRange(mVtxNrmArray[1], mVtxData->getNrmNum() * 12);
+ }
+
+ return kJ3DError_Success;
+}
+
+/* 803112D0-80311478 30BC10 01A8+00 0/0 1/1 0/0 .text copyLocalVtxArray__15J3DVertexBufferFUl */
+s32 J3DVertexBuffer::copyLocalVtxArray(u32 flag) {
+ void* oldPosArray[2];
+ void* oldNrmArray[2];
+
+ for (int i = 0; i < 2; i++)
+ oldPosArray[i] = mVtxPosArray[i];
+
+ if (~flag & 2) {
+ s32 ret = copyLocalVtxPosArray(flag);
+ if (ret != 0) {
+ for (int i = 0; i < 2; i++) {
+ if (oldPosArray[i] != mVtxPosArray[i]) {
+ if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
+ delete mVtxPosArray[i];
+ mVtxPosArray[i] = oldPosArray[i];
+ }
+ }
+ return ret;
+ }
+ } else {
+ mVtxPosArray[0] = mVtxPosArray[1] = mVtxData->getVtxPosArray();
+ }
+
+ for (int i = 0; i < 2; i++)
+ oldNrmArray[i] = mVtxNrmArray[i];
+
+ if (~flag & 4) {
+ s32 ret = copyLocalVtxNrmArray(flag);
+ if (ret != 0) {
+ for (int i = 0; i < 2; i++) {
+ if (oldPosArray[i] != mVtxPosArray[i]) {
+ if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
+ delete mVtxPosArray[i];
+ mVtxPosArray[i] = oldPosArray[i];
+ }
+ if (oldNrmArray[i] != mVtxNrmArray[i]) {
+ if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray())
+ delete mVtxNrmArray[i];
+ mVtxNrmArray[i] = oldNrmArray[i];
+ }
+ }
+ return ret;
+ }
+ } else {
+ mVtxNrmArray[0] = mVtxNrmArray[1] = mVtxData->getVtxNrmArray();
+ }
+
+ return kJ3DError_Success;
+}
+
+/* 80311478-8031152C 30BDB8 00B4+00 0/0 1/1 0/0 .text
+ * allocTransformedVtxPosArray__15J3DVertexBufferFv */
+s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
+ if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL)
+ return kJ3DError_Success;
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
+ mTransformedVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()];
+ if (mTransformedVtxPosArray[i] == NULL)
+ return kJ3DError_Alloc;
+ }
+ }
+
+ return kJ3DError_Success;
+}
+
+/* 8031152C-803115E0 30BE6C 00B4+00 0/0 1/1 0/0 .text
+ * allocTransformedVtxNrmArray__15J3DVertexBufferFv */
+s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
+ if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL)
+ return kJ3DError_Success;
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 0 || mTransformedVtxNrmArray[i] == NULL) {
+ mTransformedVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
+ if (mTransformedVtxNrmArray[i] == NULL)
+ return kJ3DError_Alloc;
+ }
+ }
+
+ return kJ3DError_Success;
+}
+
+/* 803115E0-803115F4 30BF20 0014+00 0/0 1/1 0/0 .text __ct__14J3DDrawMtxDataFv */
+J3DDrawMtxData::J3DDrawMtxData() {
+ mEntryNum = 0;
+ mDrawMtxFlag = NULL;
+ mDrawMtxIndex = NULL;
+}
+
+/* 803115F4-80311630 30BF34 003C+00 0/0 2/2 0/0 .text __dt__14J3DDrawMtxDataFv */
+J3DDrawMtxData::~J3DDrawMtxData() {} \ No newline at end of file