match and link SimpleDrawer.cpp

This commit is contained in:
SwareJonge 2023-12-19 23:22:08 +01:00
parent 73bd769de8
commit 8dea8f9267
8 changed files with 113 additions and 11 deletions

View File

@ -1034,6 +1034,13 @@ src/Kaneshige/TexLODControl.cpp:
src/Kaneshige/ShapePktControl.cpp:
.text: [0x801ba000, 0x801ba064]
src/Kaneshige/SimpleDrawer.cpp:
.text: [0x801ba064, 0x801ba2a4]
.rodata: [0x80378988, 0x803789b8]
.sdata: [0x80414650, 0x80414658]
.sbss: [0x804163e8, 0x804163f0]
.sdata2: [0x8041a0b8, 0x8041a0c0]
src/Kaneshige/JugemPoint.cpp:
.text: [0x801ba2a4, 0x801ba2b4]

View File

@ -992,6 +992,11 @@ src/Kaneshige/TexLODControl.cpp:
src/Kaneshige/ShapePktControl.cpp:
.text: [0x80190134, 0x80190190]
src/Kaneshige/SimpleDrawer.cpp:
.text: [0x80190190, 0x80190324]
.sdata: [0x803d38f0, 0x803d38f8]
.sbss: [0x803d5660, 0x803d5668]
src/Kaneshige/JugemPoint.cpp:
.text: [0x80190324, 0x80190334]

View File

@ -2855,7 +2855,10 @@ global:
# SimpleDrawer.cpp
0x80190190: __ct__12SimpleDrawerFv
0x801901a8: drawInit__12SimpleDrawerFP7ExModel
0x801901d0: drawInit__12SimpleDrawerFP12J3DModelData
0x80190238: loadPreDrawSetting__12SimpleDrawerFv
0x803d38f0: sEnableCheckHidding__12SimpleDrawer
0x803d5660: sDrawingDrawer__12SimpleDrawer
# JugemPoint.cpp
0x80190324: __ct__10JugemPointFv

View File

@ -64,6 +64,7 @@ namespace JUTAssertion
#define JUT_MINMAX_ASSERT(min, cur, max) \
JUT_ASSERT_F((((min) <= (cur)) && ((cur) < (max))), "range over: %d <= " #cur "=%d < %d", (min), (cur), (max));
// TODO: might not exist, unsigned comparisons against 0 get discarded
#define JUT_MAX_ASSERT(cur, max) \
JUT_ASSERT_F(((cur) < (max)), "range over: %d <= " #cur "=%d < %d", 0, (cur), (max));

View File

@ -65,6 +65,12 @@ public:
void setSimpleTevReg(u32 id) { mSimpleTevReg |= (1 << id); }
void simpleDraw(u32 viewNo) { simpleDraw(viewNo, nullptr, 1); }
J3DModelData *getModelData(u16 level) const {
#line 188
JUT_MINMAX_ASSERT(0, level, mLevelCnt)
return mModelData[level];
}
static bool sClippingOn; // 0x80414610
static bool sMtxCombinationOn; // 0x80416398
static bool sDrawingOnlyUpdZMat; // 0x80416399
@ -72,7 +78,7 @@ public:
private:
// Vtable 0x0
u8 _4[0x8 - 0x4];
u16 mLevelCnt;
J3DModelData **mModelData;
J3DModel **mModel;
u8 _10[0x1c - 0x10];

View File

@ -4,21 +4,27 @@
#include "Kaneshige/ExModel.h"
class SimpleDrawer
{ // Autogenerated
{
public:
SimpleDrawer(); // 0x801ba064
void drawInit(ExModel *); // 0x801ba07c
void drawInit(J3DModelData *); // 0x801ba14c
bool loadPreDrawSetting(); // 0x801ba1b4
SimpleDrawer(); // 0x801ba064
void drawInit(ExModel *model); // 0x801ba07c
void drawInit(J3DModelData *modelData); // 0x801ba14c
bool loadPreDrawSetting(); // 0x801ba1b4
~SimpleDrawer() {}
J3DMaterial *getDrawingMaterial() { return mDrawingMaterial; }
void enableDrawMaterial() { mIsMatDrawOn = true; }
bool isPhaseCheckHidding() { return mPhase == 1; }
static SimpleDrawer *getDrawingDrawer() { return sDrawingDrawer; }
static bool sEnableCheckHidding; // 0x80414650
static SimpleDrawer *sDrawingDrawer; // 0x804163e8
~SimpleDrawer() {}
private:
u32 _0;
u8 _4;
u32 mPhase; // 0x0
bool mKeepDrawMat; // 0x4
J3DMaterial *mDrawingMaterial; // 0x8
bool mIsMatDrawOn; // 0xc
}; // Size: unk
};
#endif // SIMPLEDRAWER_H

View File

@ -0,0 +1,74 @@
#include "Kaneshige/SimpleDrawer.h"
SimpleDrawer *SimpleDrawer::sDrawingDrawer;
bool SimpleDrawer::sEnableCheckHidding = true;
SimpleDrawer::SimpleDrawer()
{
mKeepDrawMat = false;
mDrawingMaterial = nullptr;
mPhase = 0;
mIsMatDrawOn = false;
}
void SimpleDrawer::drawInit(ExModel *model)
{
J3DModelData *modelData = model->getModelData(0);
drawInit(modelData);
}
void SimpleDrawer::drawInit(J3DModelData *modelData)
{
sDrawingDrawer = this;
modelData->syncJ3DSys();
J3DShape::resetVcdVatCache();
J3DJoint *joint = modelData->getJointNodePointer(0);
mPhase = 0;
mKeepDrawMat = true;
mDrawingMaterial = joint->getMesh();
mIsMatDrawOn = false;
}
bool SimpleDrawer::loadPreDrawSetting()
{
bool ret = true;
switch (mPhase)
{
case 0:
{
if (mDrawingMaterial)
{
if (mIsMatDrawOn || !sEnableCheckHidding)
{
mPhase = 1;
mDrawingMaterial->loadSharedDL();
mDrawingMaterial->getShape()->loadPreDrawSetting();
break;
}
if (mKeepDrawMat == false)
{
mDrawingMaterial = mDrawingMaterial->getNext();
mIsMatDrawOn = false;
}
mKeepDrawMat = false;
break;
}
ret = false;
sDrawingDrawer = nullptr;
break;
}
case 1:
{
mPhase = 0;
mDrawingMaterial = mDrawingMaterial->getNext();
mIsMatDrawOn = false;
break;
}
}
return ret;
}