d_a_obj_adnno, d_a_obj_dmgroom, d_a_obj_dragonhead, d_a_obj_eayogn, d_a_obj_gong work

This commit is contained in:
Jasper St. Pierre
2023-11-17 19:30:35 -08:00
parent ad81f9c684
commit 5860624757
15 changed files with 866 additions and 330 deletions
+3 -3
View File
@@ -1511,10 +1511,10 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_buoyflag"),
ActorRel(NonMatching, "d_a_obj_buoyrace"),
ActorRel(NonMatching, "d_a_obj_correct"),
ActorRel(NonMatching, "d_a_obj_dmgroom"),
ActorRel(NonMatching, "d_a_obj_dragonhead"),
ActorRel(Matching, "d_a_obj_dmgroom", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_dragonhead", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_drift"),
ActorRel(NonMatching, "d_a_obj_eayogn"),
ActorRel(Matching, "d_a_obj_eayogn"),
ActorRel(NonMatching, "d_a_obj_ebomzo"),
ActorRel(NonMatching, "d_a_obj_ekskz"),
ActorRel(NonMatching, "d_a_obj_eskban"),
@@ -14,6 +14,7 @@ class JUTNameTab;
enum J3DMaterialCopyFlag {
J3DMatCopyFlag_Material = 0x01,
J3DMatCopyFlag_Texture = 0x02,
J3DMatCopyFlag_All = 0x03,
};
class J3DModelData {
+2 -2
View File
@@ -6,8 +6,8 @@
// Perhaps move to a new J3DEnum.h?
enum J3DError {
kJ3DError_Success = 0,
kJ3DError_Alloc = 4,
J3DErrType_Success = 0,
J3DErrType_OutOfMemory = 4,
};
enum J3DSysDrawBuffer {
+1 -1
View File
@@ -45,7 +45,7 @@ public:
return GetTriPla(polyInfo.GetBgIndex(), polyInfo.GetPolyIndex());
}
bool Regist(cBgW*, unsigned int, void*);
int Release(cBgW*);
bool Release(cBgW*);
bool LineCross(cBgS_LinChk*);
f32 GroundCross(cBgS_GndChk*);
static void* ConvDzb(void*);
+40 -40
View File
@@ -73,7 +73,7 @@ static inline u32 getMdlDataFlag_MtxLoadType(u32 flag) {
/* 802ED6C4-802ED8D8 .text entryModelData__8J3DModelFP12J3DModelDataUlUl */
s32 J3DModel::entryModelData(J3DModelData* pModelData, u32 modelFlag, u32 mtxBufferFlag) {
s32 ret = kJ3DError_Success;
s32 ret = J3DErrType_Success;
mModelData = pModelData;
mMtxBufferFlag = mtxBufferFlag;
@@ -90,16 +90,16 @@ s32 J3DModel::entryModelData(J3DModelData* pModelData, u32 modelFlag, u32 mtxBuf
}
if (mpScaleFlagArr == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (pModelData->getWEvlpMtxNum() != 0 && mpEvlpScaleFlagArr == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (mpNodeMtx == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (pModelData->getWEvlpMtxNum() != 0 && mpWeightEnvMtx == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (pModelData->checkFlag(J3DMdlDataFlag_NoAnimation)) {
setNoUseDrawMtx();
@@ -118,28 +118,28 @@ s32 J3DModel::entryModelData(J3DModelData* pModelData, u32 modelFlag, u32 mtxBuf
}
}
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
ret = createShapePacket(pModelData);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
ret = createMatPacket(pModelData, modelFlag);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
if (pModelData->checkFlag(J3DMdlDataFlag_ConcatView)) {
mModelData->setBumpFlag(0);
} else {
ret = createBumpMtxArray(pModelData, mtxBufferFlag);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
}
mVertexBuffer.setVertexData(&pModelData->getVertexData());
prepareShapePackets();
ret = kJ3DError_Success;
ret = J3DErrType_Success;
return ret;
}
@@ -152,7 +152,7 @@ s32 J3DModel::setNoUseDrawMtx() {
mpNrmMtxBuf[0] = &sNoUseNrmMtxPtr;
mpBumpMtxArr[1] = NULL;
mpBumpMtxArr[0] = NULL;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802ED904-802EDA14 .text createSingleDrawMtx__8J3DModelFP12J3DModelData */
@@ -165,9 +165,9 @@ s32 J3DModel::createSingleDrawMtx(J3DModelData* pModelData) {
mpBumpMtxArr[1] = NULL;
if (mpDrawMtxBuf[0] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (mpNrmMtxBuf[0] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (pModelData->getDrawMtxNum() != 0) {
mpDrawMtxBuf[0][0] = new (0x20) Mtx[pModelData->getDrawMtxNum()];
@@ -177,9 +177,9 @@ s32 J3DModel::createSingleDrawMtx(J3DModelData* pModelData) {
}
if (pModelData->getDrawMtxNum() != 0 && mpDrawMtxBuf[0][0] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EDA14-802EDBC0 .text createDoubleDrawMtx__8J3DModelFP12J3DModelDataUl */
@@ -195,9 +195,9 @@ s32 J3DModel::createDoubleDrawMtx(J3DModelData* pModelData, u32 num) {
if (num != 0) {
for (u32 i = 0; i < 2; i++) {
if (mpDrawMtxBuf[i] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (mpNrmMtxBuf[i] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
}
@@ -214,14 +214,14 @@ s32 J3DModel::createDoubleDrawMtx(J3DModelData* pModelData, u32 num) {
for (u32 j = 0; j < num; j++) {
if (pModelData->getDrawMtxNum() != 0) {
if (mpDrawMtxBuf[i][j] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
if (mpNrmMtxBuf[i][j] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EDBC0-802EDC8C .text createShapePacket__8J3DModelFP12J3DModelData */
@@ -231,7 +231,7 @@ s32 J3DModel::createShapePacket(J3DModelData* pModelData) {
mpShapePacket = new J3DShapePacket[shapeNum];
if (mpShapePacket == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
for (int i = 0; i < pModelData->getShapeNum(); i++) {
J3DShape* shapeNode = pModelData->getShapeNodePointer(i);
@@ -240,7 +240,7 @@ s32 J3DModel::createShapePacket(J3DModelData* pModelData) {
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EDC8C-802EDF60 .text createMatPacket__8J3DModelFP12J3DModelDataUl */
@@ -249,7 +249,7 @@ s32 J3DModel::createMatPacket(J3DModelData* pModelData, u32 flag) {
mpMatPacket = new J3DMatPacket[pModelData->getMaterialNum()];
if (mpMatPacket == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
s32 ret;
@@ -275,7 +275,7 @@ s32 J3DModel::createMatPacket(J3DModelData* pModelData, u32 flag) {
} else {
J3DDisplayListObj* sharedDL = pModelData->getMaterialNodePointer(i)->getSharedDisplayListObj();
ret = sharedDL->single_To_Double();
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
mpMatPacket[i].mpDisplayListObj = sharedDL;
@@ -283,18 +283,18 @@ s32 J3DModel::createMatPacket(J3DModelData* pModelData, u32 flag) {
} else if (!!(flag & 0x20000)) {
if (!!(flag & 0x40000)) {
ret = pModelData->getMaterialNodePointer(i)->newSingleSharedDisplayList(pModelData->getMaterialNodePointer(i)->countDLSize());
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
mpMatPacket[i].mpDisplayListObj = pModelData->getMaterialNodePointer(i)->getSharedDisplayListObj();
} else {
ret = pModelData->getMaterialNodePointer(i)->newSharedDisplayList(pModelData->getMaterialNodePointer(i)->countDLSize());
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
J3DDisplayListObj* sharedDL = pModelData->getMaterialNodePointer(i)->getSharedDisplayListObj();
ret = sharedDL->single_To_Double();
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
mpMatPacket[i].mpDisplayListObj = sharedDL;
@@ -303,19 +303,19 @@ s32 J3DModel::createMatPacket(J3DModelData* pModelData, u32 flag) {
if (!!(flag & 0x40000)) {
u32 size = pModelData->getMaterialNodePointer(i)->countDLSize();
ret = mpMatPacket[i].newSingleDisplayList(size);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
} else {
u32 size = pModelData->getMaterialNodePointer(i)->countDLSize();
ret = mpMatPacket[i].newDisplayList(size);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
}
}
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EDF60-802EE1D4 .text createBumpMtxArray__8J3DModelFP12J3DModelDataUl */
@@ -333,7 +333,7 @@ s32 J3DModel::createBumpMtxArray(J3DModelData* modelData, u32 bufferNum) {
for (s32 i = 0; i < 2; i++) {
mpBumpMtxArr[i] = new Mtx33**[bumpMtxNum];
if (mpBumpMtxArr[i] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
}
@@ -344,7 +344,7 @@ s32 J3DModel::createBumpMtxArray(J3DModelData* modelData, u32 bufferNum) {
if (pMaterial->getNBTScale()->mbHasScale == 1) {
mpBumpMtxArr[i][bumpMtxOffset] = new Mtx33*[bufferNum];
if (mpBumpMtxArr[i][bumpMtxOffset] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
pMaterial->getShape()->setBumpMtxOffset(bumpMtxOffset);
bumpMtxOffset++;
}
@@ -359,7 +359,7 @@ s32 J3DModel::createBumpMtxArray(J3DModelData* modelData, u32 bufferNum) {
for (u32 j = 0; j < bufferNum; j++) {
mpBumpMtxArr[i][bumpMtxOffset][j] = new(0x20) Mtx33[modelData->getDrawMtxNum()];
if (mpBumpMtxArr[i][bumpMtxOffset][j] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
bumpMtxOffset++;
}
@@ -370,7 +370,7 @@ s32 J3DModel::createBumpMtxArray(J3DModelData* modelData, u32 bufferNum) {
getModelData()->setBumpFlag(1);
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EE1D4-802EE254 .text newDifferedDisplayList__8J3DModelFUl */
@@ -378,10 +378,10 @@ s32 J3DModel::newDifferedDisplayList(u32 flag) {
mDiffFlag = flag;
for (u16 i = 0; i < getModelData()->getShapeNum(); i++) {
s32 ret = getShapePacket(i)->newDifferedDisplayList(flag);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EE254-802EE28C .text lock__8J3DModelFv */
@@ -443,7 +443,7 @@ void J3DModel::diff() {
s32 J3DModel::setSkinDeform(J3DSkinDeform* pSkinDeform, u32 flags) {
mpSkinDeform = pSkinDeform;
s32 ret = kJ3DError_Success;
s32 ret = J3DErrType_Success;
if (pSkinDeform == NULL) {
offFlag(J3DMdlFlag_SkinPosCpu);
@@ -453,7 +453,7 @@ s32 J3DModel::setSkinDeform(J3DSkinDeform* pSkinDeform, u32 flags) {
mpSkinDeform->initMtxIndexArray(mModelData);
ret = mModelData->checkFlag(0x100);
if (ret != kJ3DError_Success) {
if (ret != J3DErrType_Success) {
mpSkinDeform->changeFastSkinDL(mModelData);
flags &= ~2;
flags &= ~4;
@@ -462,7 +462,7 @@ s32 J3DModel::setSkinDeform(J3DSkinDeform* pSkinDeform, u32 flags) {
ret = 0;
if ((~flags & 2)) {
ret = mVertexBuffer.allocTransformedVtxPosArray();
if (ret != kJ3DError_Success) {
if (ret != J3DErrType_Success) {
offFlag(J3DMdlFlag_SkinPosCpu);
return ret;
}
@@ -473,7 +473,7 @@ s32 J3DModel::setSkinDeform(J3DSkinDeform* pSkinDeform, u32 flags) {
if ((~flags & 4)) {
ret = mVertexBuffer.allocTransformedVtxNrmArray();
if (ret != kJ3DError_Success) {
if (ret != J3DErrType_Success) {
offFlag(J3DMdlFlag_SkinNrmCpu);
return ret;
}
+2 -2
View File
@@ -32,12 +32,12 @@ void J3DDrawBuffer::initialize() {
J3DError J3DDrawBuffer::allocBuffer(u32 bufSize) {
mpBuf = new (0x20) J3DPacket*[bufSize];
if (mpBuf == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
mBufSize = bufSize;
frameInit();
calcZRatio();
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802EC84C-802EC8AC .text __dt__13J3DDrawBufferFv */
+6 -6
View File
@@ -315,17 +315,17 @@ s32 J3DMaterial::newSharedDisplayList(u32 param_0) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
if (mSharedDLObj == NULL) {
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
s32 res = mSharedDLObj->newDisplayList(param_0);
switch (res) {
case kJ3DError_Success:
case J3DErrType_Success:
break;
default:
return res;
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DF1AC-802DF240 .text newSingleSharedDisplayList__11J3DMaterialFUl */
@@ -333,17 +333,17 @@ s32 J3DMaterial::newSingleSharedDisplayList(u32 param_0) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
if (mSharedDLObj == NULL) {
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
}
s32 res = mSharedDLObj->newSingleDisplayList(param_0);
switch (res) {
case kJ3DError_Success:
case J3DErrType_Success:
break;
default:
return res;
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DF240-802DF260 .text initialize__18J3DPatchedMaterialFv */
+14 -14
View File
@@ -20,9 +20,9 @@ J3DError J3DDisplayListObj::newDisplayList(u32 capacity) {
mSize = 0;
if (mpData[0] == NULL || mpData[1] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DAE9C-802DAF00 .text newSingleDisplayList__17J3DDisplayListObjFUl */
@@ -33,9 +33,9 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) {
mSize = 0;
if (mpData[0] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DAF00-802DAF78 .text single_To_Double__17J3DDisplayListObjFv */
@@ -44,13 +44,13 @@ J3DError J3DDisplayListObj::single_To_Double() {
mpData[1] = new (0x20) char[mCapacity];
if (mpData[1] == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
memcpy(mpData[1], mpData[0], mCapacity);
DCStoreRange(mpData[1], mCapacity);
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DAF78-802DAF98 .text setSingleDisplayList__17J3DDisplayListObjFPvUl */
@@ -153,13 +153,13 @@ J3DError J3DDrawPacket::newDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
J3DError ret = mpDisplayListObj->newDisplayList(size);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DB2BC-802DB348 .text newSingleDisplayList__13J3DDrawPacketFUl */
@@ -167,13 +167,13 @@ J3DError J3DDrawPacket::newSingleDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
return J3DErrType_OutOfMemory;
J3DError ret = mpDisplayListObj->newSingleDisplayList(size);
if (ret != kJ3DError_Success)
if (ret != J3DErrType_Success)
return ret;
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DB348-802DB36C .text draw__13J3DDrawPacketFv */
@@ -326,12 +326,12 @@ J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) {
u32 bufSize = calcDifferedBufferSize(flag);
J3DError error = newDisplayList(bufSize);
if (error != kJ3DError_Success) {
if (error != J3DErrType_Success) {
return error;
}
setDisplayListObj(getDisplayListObj());
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DB818-802DB890 .text prepareDraw__14J3DShapePacketCFv */
+6 -6
View File
@@ -94,33 +94,33 @@ void J3DVertexBuffer::setArray() const {
/* 802D9EF0-802D9FA4 .text allocTransformedVtxPosArray__15J3DVertexBufferFv */
s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL)
return kJ3DError_Success;
return J3DErrType_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 J3DErrType_OutOfMemory;
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802D9FA4-802DA058 .text allocTransformedVtxNrmArray__15J3DVertexBufferFv */
s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL)
return kJ3DError_Success;
return J3DErrType_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 J3DErrType_OutOfMemory;
}
}
return kJ3DError_Success;
return J3DErrType_Success;
}
/* 802DA058-802DA06C .text __ct__14J3DDrawMtxDataFv */
+132 -18
View File
@@ -3,51 +3,165 @@
// Translation Unit: d_a_obj_adnno.cpp
//
#include "d_a_obj_adnno.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_mtx.h"
class daObjAdnno_c : public fopAc_ac_c {
public:
inline s32 _create();
inline bool _execute();
inline bool _draw();
inline bool _delete();
BOOL CreateHeap();
void CreateInit();
void set_mtx();
public:
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ J3DModel * mpModel[16];
};
static const u32 daObjAdnno_bmt_table[16] = {
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
};
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
void CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return ((daObjAdnno_c*)i_this)->CreateHeap();
}
/* 00000098-00000178 .text CreateHeap__12daObjAdnno_cFv */
void daObjAdnno_c::CreateHeap() {
/* Nonmatching */
BOOL daObjAdnno_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)(dComIfG_getObjectRes("Adnno", 0x04));
JUT_ASSERT(0x5c, modelData != 0);
for (s32 i = 0; i < 16; i++) {
mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x37441422);
if (!mpModel[i])
return FALSE;
}
return TRUE;
}
/* 00000178-000001E8 .text CreateInit__12daObjAdnno_cFv */
void daObjAdnno_c::CreateInit() {
/* Nonmatching */
fopAcM_SetMtx(this, mpModel[0]->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -600.0f, -0.0f, -600.0f, 600.0f, 900.0f, 600.0f);
fopAcM_setCullSizeFar(this, 1.0f);
set_mtx();
}
/* 000001E8-00000330 .text set_mtx__12daObjAdnno_cFv */
void daObjAdnno_c::set_mtx() {
/* Nonmatching */
for (s32 i = 0; i < 16; i++) {
J3DModel * model = mpModel[i];
model->setBaseScale(mScale);
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::YrotM(current.angle.y);
/* Nonmatching - this translation code is wrong */
mDoMtx_stack_c::transM(40.0f + i * 60.0f, 60.0f - 40.0f * i, 0.0f);
mpModel[i]->setBaseTRMtx(mDoMtx_stack_c::get());
}
}
s32 daObjAdnno_c::_create() {
fopAcM_SetupActor(this, daObjAdnno_c);
s32 ret = dComIfG_resLoad(&mPhs, "Adnno");
if (ret == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckCreateHeap, 0x9C00) == 0) {
ret = cPhs_ERROR_e;
} else {
CreateInit();
}
}
return ret;
}
bool daObjAdnno_c::_delete() {
dComIfG_resDelete(&mPhs, "Adnno");
return true;
}
bool daObjAdnno_c::_execute() {
set_mtx();
return true;
}
static const u16 daObjAdnno_event_bit_table[16] = {
0x3508, 0x3504, 0x3502, 0x3501,
0x3680, 0x3640, 0x3620, 0x3610,
0x3608, 0x3604, 0x3602, 0x3601,
0x3780, 0x3740, 0x3720, 0x3710,
};
bool daObjAdnno_c::_draw() {
dComIfGd_setListBG();
for (s32 i = 0; i < 16; i++) {
if (dComIfGs_isEventBit(daObjAdnno_event_bit_table[i])) {
J3DMaterialTable* pBmt = (J3DMaterialTable*)dComIfG_getObjectRes("Adnno", daObjAdnno_bmt_table[i]);
mpModel[i]->getModelData()->setMaterialTable(pBmt, J3DMatCopyFlag_All);
mDoExt_modelUpdateDL(mpModel[i]);
}
}
dComIfGd_setList();
return true;
}
/* 00000330-000003D4 .text daObjAdnno_Create__FPv */
void daObjAdnno_Create(void*) {
/* Nonmatching */
s32 daObjAdnno_Create(void* i_this) {
return ((daObjAdnno_c*)i_this)->_create();
}
/* 000003D4-00000404 .text daObjAdnno_Delete__FPv */
void daObjAdnno_Delete(void*) {
/* Nonmatching */
BOOL daObjAdnno_Delete(void* i_this) {
return ((daObjAdnno_c*)i_this)->_delete();
}
/* 00000404-000004F8 .text daObjAdnno_Draw__FPv */
void daObjAdnno_Draw(void*) {
/* Nonmatching */
BOOL daObjAdnno_Draw(void* i_this) {
return ((daObjAdnno_c*)i_this)->_draw();
}
/* 000004F8-0000051C .text daObjAdnno_Execute__FPv */
void daObjAdnno_Execute(void*) {
/* Nonmatching */
BOOL daObjAdnno_Execute(void* i_this) {
return ((daObjAdnno_c*)i_this)->_execute();
}
/* 0000051C-00000524 .text daObjAdnno_IsDelete__FPv */
void daObjAdnno_IsDelete(void*) {
/* Nonmatching */
BOOL daObjAdnno_IsDelete(void* i_this) {
return TRUE;
}
static actor_method_class daObj_AdnnoMethodTable = {
(process_method_func)daObjAdnno_Create,
(process_method_func)daObjAdnno_Delete,
(process_method_func)daObjAdnno_Execute,
(process_method_func)daObjAdnno_IsDelete,
(process_method_func)daObjAdnno_Draw,
};
actor_process_profile_definition g_profile_Obj_Adnno = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 7,
/* ListPrio */ fpcPi_CURRENT_e,
/* ProcName */ PROC_Obj_Adnno,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daObjAdnno_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x007E,
/* Actor SubMtd */ &daObj_AdnnoMethodTable,
/* Status */ fopAcStts_UNK40000_e | fopAcStts_CULL_e | fopAcStts_NOCULLEXEC_e,
/* Group */ fopAc_ACTOR_e,
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
};
+123 -28
View File
@@ -3,61 +3,156 @@
// Translation Unit: d_a_obj_dmgroom.cpp
//
#include "d_a_obj_dmgroom.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_mtx.h"
class daObjDmgroom_c : public fopAc_ac_c {
public:
inline s32 _create();
inline bool _execute();
inline bool _draw();
inline bool _delete();
BOOL CreateHeap();
void CreateInit();
void set_mtx();
public:
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ J3DModel * mpModel;
/* 0x29C */ mDoExt_brkAnm mBrkAnm;
};
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
void CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return ((daObjDmgroom_c*)i_this)->CreateHeap();
}
/* 00000098-000001FC .text CreateHeap__14daObjDmgroom_cFv */
void daObjDmgroom_c::CreateHeap() {
/* Nonmatching */
BOOL daObjDmgroom_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)(dComIfG_getObjectRes("Dmgroom", 0x04));
JUT_ASSERT(0x52, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x00, 0x11020203);
if (!mpModel)
return FALSE;
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)(dComIfG_getObjectRes("Dmgroom", 0x07));
JUT_ASSERT(0x5c, brk != 0);
if (!mBrkAnm.init(modelData, brk, true, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false, 0))
return FALSE;
return TRUE;
}
/* 000001FC-0000026C .text CreateInit__14daObjDmgroom_cFv */
void daObjDmgroom_c::CreateInit() {
/* Nonmatching */
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -600.0f, -0.0f, -600.0f, 600.0f, 900.0f, 600.0f);
fopAcM_setCullSizeFar(this, 1.0f);
set_mtx();
}
/* 0000026C-000002EC .text set_mtx__14daObjDmgroom_cFv */
void daObjDmgroom_c::set_mtx() {
/* Nonmatching */
mpModel->setBaseScale(mScale);
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::YrotM(current.angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
s32 daObjDmgroom_c::_create() {
fopAcM_SetupActor(this, daObjDmgroom_c);
s32 ret = dComIfG_resLoad(&mPhs, "Dmgroom");
if (ret == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckCreateHeap, 0x1460) == 0) {
ret = cPhs_ERROR_e;
} else {
CreateInit();
}
}
return ret;
}
bool daObjDmgroom_c::_delete() {
dComIfG_resDelete(&mPhs, "Dmgroom");
return true;
}
bool daObjDmgroom_c::_execute() {
if (mDemoActorId != 0) {
dDemo_actor_c * demoAc = dComIfGp_demo_getActor(mDemoActorId);
if (demoAc != NULL && demoAc->checkEnable(0x40))
mBrkAnm.setFrame(demoAc->mAnimationFrame);
}
set_mtx();
return true;
}
bool daObjDmgroom_c::_draw() {
g_env_light.settingTevStruct(TEV_TYPE_BG0, getPositionP(), &mTevStr);
g_env_light.setLightTevColorType(mpModel, &mTevStr);
dComIfGd_setListBG();
mBrkAnm.entry(mpModel->getModelData());
mDoExt_modelUpdateDL(mpModel);
mBrkAnm.remove(mpModel->getModelData());
dComIfGd_setList();
return true;
}
/* 000002EC-000003B4 .text daObjDmgroom_Create__FPv */
void daObjDmgroom_Create(void*) {
/* Nonmatching */
}
/* 000003B4-00000410 .text __dt__13mDoExt_brkAnmFv */
mDoExt_brkAnm::~mDoExt_brkAnm() {
/* Nonmatching */
}
/* 00000410-00000458 .text __dt__14mDoExt_baseAnmFv */
mDoExt_baseAnm::~mDoExt_baseAnm() {
/* Nonmatching */
s32 daObjDmgroom_Create(void* i_this) {
return ((daObjDmgroom_c*)i_this)->_create();
}
/* 00000458-00000488 .text daObjDmgroom_Delete__FPv */
void daObjDmgroom_Delete(void*) {
/* Nonmatching */
BOOL daObjDmgroom_Delete(void* i_this) {
return ((daObjDmgroom_c*)i_this)->_delete();
}
/* 00000488-00000558 .text daObjDmgroom_Draw__FPv */
void daObjDmgroom_Draw(void*) {
/* Nonmatching */
BOOL daObjDmgroom_Draw(void* i_this) {
return ((daObjDmgroom_c*)i_this)->_draw();
}
/* 00000558-000005CC .text daObjDmgroom_Execute__FPv */
void daObjDmgroom_Execute(void*) {
/* Nonmatching */
BOOL daObjDmgroom_Execute(void* i_this) {
return ((daObjDmgroom_c*)i_this)->_execute();
}
/* 000005CC-000005D4 .text daObjDmgroom_IsDelete__FPv */
void daObjDmgroom_IsDelete(void*) {
/* Nonmatching */
BOOL daObjDmgroom_IsDelete(void* i_this) {
return TRUE;
}
static actor_method_class daObj_DmgroomMethodTable = {
(process_method_func)daObjDmgroom_Create,
(process_method_func)daObjDmgroom_Delete,
(process_method_func)daObjDmgroom_Execute,
(process_method_func)daObjDmgroom_IsDelete,
(process_method_func)daObjDmgroom_Draw,
};
actor_process_profile_definition g_profile_Obj_Dmgroom = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 7,
/* ListPrio */ fpcPi_CURRENT_e,
/* ProcName */ PROC_Obj_Dmgroom,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daObjDmgroom_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x001D,
/* Actor SubMtd */ &daObj_DmgroomMethodTable,
/* Status */ fopAcStts_UNK40000_e,
/* Group */ fopAc_ACTOR_e,
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
};
+232 -127
View File
@@ -3,161 +3,266 @@
// Translation Unit: d_a_obj_dragonhead.cpp
//
#include "d_a_obj_dragonhead.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "d/d_cc_d.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_mtx.h"
class daObjDragonhead_c : public fopAc_ac_c {
public:
inline s32 _create();
inline bool _execute();
inline bool _draw();
inline bool _delete();
BOOL CreateHeap();
void CreateInit();
void set_mtx();
public:
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ J3DModel * mpModel;
/* 0x29C */ dCcD_Stts mStts;
/* 0x2D8 */ dCcD_Sph mSph;
/* 0x404 */ u8 mAlpha;
/* 0x405 */ bool mSwitchOn;
/* 0x408 */ dBgW * mpBgW;
/* 0x40C */ u8 field_0x40c;
/* 0x410 */ cXyz mSphCenter;
/* 0x41C */ Mtx mtx;
};
dCcD_SrcSph sph_check_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ AT_TYPE_FIRE_ARROW,
/* SrcObjTg SPrm */ 0x09,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt GFlag */ 0,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg GFlag */ 0,
/* SrcGObjCo GFlag */ 0,
},
// cM3dGSphS
{
/* Center */ 0.0f, 0.0f, 0.0f,
/* Radius */ 1000.0f,
},
};
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
void CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return ((daObjDragonhead_c*)i_this)->CreateHeap();
}
namespace daObjDragonhead_prm {
inline u8 getSwitchNo(daObjDragonhead_c* ac) { return (fopAcM_GetParam(ac) >> 8) & 0xFF; }
};
/* 00000098-00000228 .text CreateHeap__17daObjDragonhead_cFv */
void daObjDragonhead_c::CreateHeap() {
/* Nonmatching */
BOOL daObjDragonhead_c::CreateHeap() {
J3DModelData* model_data = (J3DModelData*)(dComIfG_getObjectRes("Qdghd", 0x04));
JUT_ASSERT(0xA0, model_data != 0);
mpModel = mDoExt_J3DModel__create(model_data, 0x00, 0x11020203);
if (!mpModel)
return FALSE;
s32 ret = 1;
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::scaleM(mScale);
mDoMtx_copy(mDoMtx_stack_c::get(), mtx);
mpBgW = new dBgW();
if (!mpBgW || mpBgW->Set((cBgD_t*)dComIfG_getObjectRes("Qdghd", 0x07), cBgW::MOVE_BG_e, &mtx))
ret = 0;
if (ret != 1)
return false;
return mpModel != NULL;
}
/* 00000228-0000034C .text CreateInit__17daObjDragonhead_cFv */
void daObjDragonhead_c::CreateInit() {
/* Nonmatching */
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeFar(this, 1.0f);
set_mtx();
field_0x40c = 0;
/* Nonmatching -- swapped switchNo and g_dComIfG_gameInfo load */
if (dComIfGs_isSwitch(daObjDragonhead_prm::getSwitchNo(this), fopAcM_GetHomeRoomNo(this))) {
mSwitchOn = true;
mAlpha = 0;
} else {
mSwitchOn = false;
mAlpha = 0xFF;
if (field_0x40c == 0 && !dComIfG_Bgsp()->Regist(mpBgW, this))
field_0x40c = 1;
}
mStts.Init(0xFF, 0xFF, this);
mSph.Set(sph_check_src);
mSphCenter.set(79338.0f, 950.0f, 220000.0f);
mSph.SetC(mSphCenter);
mSph.SetStts(&mStts);
}
/* 0000034C-000003CC .text set_mtx__17daObjDragonhead_cFv */
void daObjDragonhead_c::set_mtx() {
/* Nonmatching */
mpModel->setBaseScale(mScale);
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::YrotM(current.angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
s32 daObjDragonhead_c::_create() {
fopAcM_SetupActor(this, daObjDragonhead_c);
s32 ret = dComIfG_resLoad(&mPhs, "Qdghd");
if (ret == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckCreateHeap, 0x10500) == 0) {
ret = cPhs_ERROR_e;
} else {
CreateInit();
}
}
return ret;
}
bool daObjDragonhead_c::_delete() {
if (heap != NULL && field_0x40c == 1)
dComIfG_Bgsp()->Release(mpBgW);
mDoAud_seDeleteObject(&mSphCenter);
dComIfG_resDelete(&mPhs, "Qdghd");
return true;
}
bool daObjDragonhead_c::_execute() {
dComIfG_Ccsp()->Set(&mSph);
if (!mSwitchOn) {
mDoAud_seStart(JA_SE_OBJ_ICEBERG_BREATH, &mSphCenter, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
if (mSph.ChkTgHit()) {
cCcD_Obj* at = mSph.GetTgHitObj();
if (at != NULL && at->ChkAtType(AT_TYPE_FIRE_ARROW)) {
dComIfGs_onSwitch(daObjDragonhead_prm::getSwitchNo(this), fopAcM_GetHomeRoomNo(this));
mSwitchOn = true;
}
}
}
/* Nonmatching -- swapped switchNo and g_dComIfG_gameInfo load */
if (dComIfGs_isSwitch(daObjDragonhead_prm::getSwitchNo(this), fopAcM_GetHomeRoomNo(this))) {
if (field_0x40c == 1) {
if (!dComIfG_Bgsp()->Release(mpBgW))
field_0x40c = 0;
mDoAud_seStart(JA_SE_OBJ_ICEVERG_MELT, &mEyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
}
if (mAlpha != 0) {
if (mAlpha >= 2)
mAlpha -= 2;
else
mAlpha = 0;
}
} else {
mSwitchOn = false;
if (field_0x40c == 0 && !dComIfG_Bgsp()->Regist(mpBgW, this))
field_0x40c = 1;
if (mAlpha < 0xFF) {
if (mAlpha <= 0xFD)
mAlpha += 2;
else
mAlpha = 0xFF;
}
}
set_mtx();
return true;
}
bool daObjDragonhead_c::_draw() {
g_env_light.settingTevStruct(TEV_TYPE_BG0, getPositionP(), &mTevStr);
g_env_light.setLightTevColorType(mpModel, &mTevStr);
dComIfGd_setListBG();
J3DModelData* modelData = mpModel->getModelData();
u16 materialNum = modelData->getMaterialNum();
for (u16 i = 0; i < materialNum; i++) {
J3DMaterial* mat = modelData->getMaterialNodePointer(i);
mat->getTevKColor(3)->mColor.a = mAlpha;
}
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return true;
}
/* 000003CC-000004FC .text daObjDragonhead_Create__FPv */
void daObjDragonhead_Create(void*) {
/* Nonmatching */
}
/* 000004FC-000005C8 .text __dt__8dCcD_SphFv */
dCcD_Sph::~dCcD_Sph() {
/* Nonmatching */
}
/* 000005C8-00000610 .text __dt__8cM3dGSphFv */
cM3dGSph::~cM3dGSph() {
/* Nonmatching */
}
/* 00000610-0000066C .text __dt__14cCcD_ShapeAttrFv */
cCcD_ShapeAttr::~cCcD_ShapeAttr() {
/* Nonmatching */
}
/* 0000066C-000006B4 .text __dt__8cM3dGAabFv */
cM3dGAab::~cM3dGAab() {
/* Nonmatching */
s32 daObjDragonhead_Create(void* i_this) {
return ((daObjDragonhead_c*)i_this)->_create();
}
/* 000006B4-00000730 .text daObjDragonhead_Delete__FPv */
void daObjDragonhead_Delete(void*) {
/* Nonmatching */
BOOL daObjDragonhead_Delete(void* i_this) {
return ((daObjDragonhead_c*)i_this)->_delete();
}
/* 00000730-00000824 .text daObjDragonhead_Draw__FPv */
void daObjDragonhead_Draw(void*) {
/* Nonmatching */
BOOL daObjDragonhead_Draw(void* i_this) {
return ((daObjDragonhead_c*)i_this)->_draw();
}
/* 00000824-00000A48 .text daObjDragonhead_Execute__FPv */
void daObjDragonhead_Execute(void*) {
/* Nonmatching */
BOOL daObjDragonhead_Execute(void* i_this) {
return ((daObjDragonhead_c*)i_this)->_execute();
}
/* 00000A48-00000A50 .text daObjDragonhead_IsDelete__FPv */
void daObjDragonhead_IsDelete(void*) {
/* Nonmatching */
BOOL daObjDragonhead_IsDelete(void* i_this) {
return TRUE;
}
/* 00000A50-00000A60 .text GetShapeAttr__8dCcD_SphFv */
void dCcD_Sph::GetShapeAttr() {
/* Nonmatching */
}
/* 00000A60-00000A68 .text GetCoCP__12cCcD_SphAttrFv */
void cCcD_SphAttr::GetCoCP() {
/* Nonmatching */
}
/* 00000A68-00000A70 .text GetCoCP__12cCcD_SphAttrCFv */
void cCcD_SphAttr::GetCoCP() const {
/* Nonmatching */
}
/* 00000A70-00000A78 .text CrossAtTg__12cCcD_SphAttrCFRC12cCcD_AabAttrP4cXyz */
void cCcD_SphAttr::CrossAtTg(const cCcD_AabAttr&, cXyz*) const {
/* Nonmatching */
}
/* 00000A78-00000A80 .text CrossAtTg__12cCcD_SphAttrCFRC12cCcD_PntAttrP4cXyz */
void cCcD_SphAttr::CrossAtTg(const cCcD_PntAttr&, cXyz*) const {
/* Nonmatching */
}
/* 00000A80-00000AB8 .text CrossAtTg__12cCcD_SphAttrCFRC14cCcD_ShapeAttrP4cXyz */
void cCcD_SphAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const {
/* Nonmatching */
}
/* 00000AB8-00000AC0 .text CrossCo__12cCcD_SphAttrCFRC12cCcD_AabAttrPf */
void cCcD_SphAttr::CrossCo(const cCcD_AabAttr&, float*) const {
/* Nonmatching */
}
/* 00000AC0-00000AC8 .text CrossCo__12cCcD_SphAttrCFRC12cCcD_TriAttrPf */
void cCcD_SphAttr::CrossCo(const cCcD_TriAttr&, float*) const {
/* Nonmatching */
}
/* 00000AC8-00000AD0 .text CrossCo__12cCcD_SphAttrCFRC12cCcD_PntAttrPf */
void cCcD_SphAttr::CrossCo(const cCcD_PntAttr&, float*) const {
/* Nonmatching */
}
/* 00000AD0-00000B08 .text CrossCo__12cCcD_SphAttrCFRC14cCcD_ShapeAttrPf */
void cCcD_SphAttr::CrossCo(const cCcD_ShapeAttr&, float*) const {
/* Nonmatching */
}
/* 00000B08-00000B0C .text GetGObjInf__12cCcD_GObjInfCFv */
void cCcD_GObjInf::GetGObjInf() const {
/* Nonmatching */
}
/* 00000B0C-00000B14 .text GetShapeAttr__8cCcD_ObjCFv */
void cCcD_Obj::GetShapeAttr() const {
/* Nonmatching */
}
/* 00000B14-00000B1C .text CrossAtTg__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrP4cXyz */
void cCcD_ShapeAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const {
/* Nonmatching */
}
/* 00000B1C-00000B24 .text CrossCo__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrPf */
void cCcD_ShapeAttr::CrossCo(const cCcD_ShapeAttr&, float*) const {
/* Nonmatching */
}
/* 00000B24-00000B30 .text GetCoCP__14cCcD_ShapeAttrFv */
void cCcD_ShapeAttr::GetCoCP() {
/* Nonmatching */
}
/* 00000B30-00000B3C .text GetCoCP__14cCcD_ShapeAttrCFv */
void cCcD_ShapeAttr::GetCoCP() const {
/* Nonmatching */
}
/* 00000B3C-00000B44 .text @280@__dt__8dCcD_SphFv */
void @280@__dt__8dCcD_SphFv {
/* Nonmatching */
}
/* 00000B44-00000B4C .text @248@__dt__8dCcD_SphFv */
void @248@__dt__8dCcD_SphFv {
/* Nonmatching */
}
static actor_method_class daObj_DragonheadMethodTable = {
(process_method_func)daObjDragonhead_Create,
(process_method_func)daObjDragonhead_Delete,
(process_method_func)daObjDragonhead_Execute,
(process_method_func)daObjDragonhead_IsDelete,
(process_method_func)daObjDragonhead_Draw,
};
actor_process_profile_definition g_profile_Obj_Dragonhead = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 3,
/* ListPrio */ fpcPi_CURRENT_e,
/* ProcName */ PROC_Obj_Dragonhead,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daObjDragonhead_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x0025,
/* Actor SubMtd */ &daObj_DragonheadMethodTable,
/* Status */ fopAcStts_UNK40000_e | fopAcStts_UNK4000_e,
/* Group */ fopAc_ACTOR_e,
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
};
+143 -40
View File
@@ -3,71 +3,174 @@
// Translation Unit: d_a_obj_eayogn.cpp
//
#include "d_a_obj_eayogn.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_mtx.h"
class daObjEayogn_c : public fopAc_ac_c {
public:
s32 _create();
bool _execute();
bool _draw();
bool _delete();
bool create_heap();
static bool solidHeapCB(fopAc_ac_c *i_this);
void init_mtx();
BOOL check_ev_bit() const;
static const char M_arcname[7];
public:
/* 0x290 */ J3DModel * mpModel;
/* 0x294 */ request_of_phase_process_class mPhs;
/* 0x2A0 */ dBgW * mpBgW;
};
const char daObjEayogn_c::M_arcname[7] = "Eayogn";
/* 00000078-00000098 .text solidHeapCB__13daObjEayogn_cFP10fopAc_ac_c */
void daObjEayogn_c::solidHeapCB(fopAc_ac_c*) {
/* Nonmatching */
bool daObjEayogn_c::solidHeapCB(fopAc_ac_c* i_this) {
return ((daObjEayogn_c*)i_this)->create_heap();
}
/* 00000098-00000198 .text create_heap__13daObjEayogn_cFv */
void daObjEayogn_c::create_heap() {
/* Nonmatching */
bool daObjEayogn_c::create_heap() {
bool ret = false;
J3DModelData* mdl_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(M_arcname, 0x04));
JUT_ASSERT(0x5c, mdl_data != 0);
if (mdl_data != NULL) {
mpModel = mDoExt_J3DModel__create(mdl_data, 0x00, 0x11020203);
if (mpModel != NULL) {
mpBgW = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(M_arcname, 0x07), cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx());
if (mpBgW != NULL)
ret = true;
}
}
return ret;
}
/* 00000198-0000029C .text _create__13daObjEayogn_cFv */
void daObjEayogn_c::_create() {
/* Nonmatching */
s32 daObjEayogn_c::_create() {
s32 ret = cPhs_ERROR_e;
fopAcM_SetupActor(this, daObjEayogn_c);
if (check_ev_bit()) {
ret = dComIfG_resLoad(&mPhs, M_arcname);
if (ret == cPhs_COMPLEATE_e) {
ret = cPhs_ERROR_e;
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)solidHeapCB, 0x0)) {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
init_mtx();
dComIfG_Bgsp()->Regist(mpBgW, this);
mpBgW->Move();
fopAcM_setCullSizeBox(this, -550.0f, -50.0f, -600.0f, 550.0f, 50.0f, 600.0f);
ret = cPhs_COMPLEATE_e;
}
}
}
return ret;
}
/* 0000029C-00000330 .text _delete__13daObjEayogn_cFv */
void daObjEayogn_c::_delete() {
/* Nonmatching */
bool daObjEayogn_c::_delete() {
if (heap != NULL && mpBgW != NULL) {
if (mpBgW->ChkUsed()) {
dComIfG_Bgsp()->Release(mpBgW);
mpBgW = NULL;
}
}
dComIfG_resDelete(&mPhs, M_arcname);
return true;
}
/* 00000330-00000360 .text check_ev_bit__13daObjEayogn_cCFv */
void daObjEayogn_c::check_ev_bit() const {
/* Nonmatching */
BOOL daObjEayogn_c::check_ev_bit() const {
return dComIfGs_isSymbol(1);
}
/* 00000360-000003E8 .text init_mtx__13daObjEayogn_cFv */
void daObjEayogn_c::init_mtx() {
/* Nonmatching */
mpModel->setBaseScale(mScale);
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::ZXYrotM(shape_angle);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 000003E8-000003F0 .text _execute__13daObjEayogn_cFv */
void daObjEayogn_c::_execute() {
/* Nonmatching */
bool daObjEayogn_c::_execute() {
return true;
}
/* 000003F0-00000490 .text _draw__13daObjEayogn_cFv */
void daObjEayogn_c::_draw() {
/* Nonmatching */
bool daObjEayogn_c::_draw() {
g_env_light.settingTevStruct(TEV_TYPE_BG0, getPositionP(), &mTevStr);
g_env_light.setLightTevColorType(mpModel, &mTevStr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return true;
}
/* 00000490-000004B0 .text Mthd_Create__28@unnamed@d_a_obj_eayogn_cpp@FPv */
void @unnamed@d_a_obj_eayogn_cpp@::Mthd_Create(void*) {
/* Nonmatching */
}
/* 000004B0-000004D4 .text Mthd_Delete__28@unnamed@d_a_obj_eayogn_cpp@FPv */
void @unnamed@d_a_obj_eayogn_cpp@::Mthd_Delete(void*) {
/* Nonmatching */
}
/* 000004D4-000004F8 .text Mthd_Execute__28@unnamed@d_a_obj_eayogn_cpp@FPv */
void @unnamed@d_a_obj_eayogn_cpp@::Mthd_Execute(void*) {
/* Nonmatching */
}
/* 000004F8-0000051C .text Mthd_Draw__28@unnamed@d_a_obj_eayogn_cpp@FPv */
void @unnamed@d_a_obj_eayogn_cpp@::Mthd_Draw(void*) {
/* Nonmatching */
}
/* 0000051C-00000524 .text Mthd_IsDelete__28@unnamed@d_a_obj_eayogn_cpp@FPv */
void @unnamed@d_a_obj_eayogn_cpp@::Mthd_IsDelete(void*) {
/* Nonmatching */
namespace {
/* 00000490-000004B0 .text Mthd_Create__28@unnamed@d_a_obj_eayogn_cpp@FPv */
s32 Mthd_Create(void* i_this) {
return ((daObjEayogn_c*)i_this)->_create();
}
/* 000004B0-000004D4 .text Mthd_Delete__28@unnamed@d_a_obj_eayogn_cpp@FPv */
BOOL Mthd_Delete(void* i_this) {
return ((daObjEayogn_c*)i_this)->_delete();
}
/* 000004D4-000004F8 .text Mthd_Execute__28@unnamed@d_a_obj_eayogn_cpp@FPv */
BOOL Mthd_Execute(void* i_this) {
return ((daObjEayogn_c*)i_this)->_execute();
}
/* 000004F8-0000051C .text Mthd_Draw__28@unnamed@d_a_obj_eayogn_cpp@FPv */
BOOL Mthd_Draw(void* i_this) {
return ((daObjEayogn_c*)i_this)->_draw();
}
/* 0000051C-00000524 .text Mthd_IsDelete__28@unnamed@d_a_obj_eayogn_cpp@FPv */
BOOL Mthd_IsDelete(void* i_this) {
return TRUE;
}
static actor_method_class Eayogn_Mthd_Table = {
(process_method_func)Mthd_Create,
(process_method_func)Mthd_Delete,
(process_method_func)Mthd_Execute,
(process_method_func)Mthd_IsDelete,
(process_method_func)Mthd_Draw,
};
}
actor_process_profile_definition g_profile_Obj_Eayogn = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 3,
/* ListPrio */ fpcPi_CURRENT_e,
/* ProcName */ PROC_Obj_Eayogn,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daObjEayogn_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x004C,
/* Actor SubMtd */ &Eayogn_Mthd_Table,
/* Status */ fopAcStts_UNK40000_e | fopAcStts_CULL_e | fopAcStts_NOCULLEXEC_e,
/* Group */ fopAc_ACTOR_e,
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
};
+159 -41
View File
@@ -3,76 +3,194 @@
// Translation Unit: d_a_obj_gong.cpp
//
#include "d_a_obj_gong.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_a_obj.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "d/d_drawlist.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_mtx.h"
namespace daObjGong {
namespace {
struct L_attr_entry {
/* 0x00 */ f32 spec;
/* 0x04 */ f32 offsetY;
};
static const L_attr_entry L_attr = {
0.75f, 125.0f,
};
inline const L_attr_entry & attr() { return L_attr; }
}
class Act_c : fopAc_ac_c {
public:
s32 _create();
bool _execute();
bool _draw();
bool _delete();
bool create_heap();
void init_mtx();
void set_mtx();
bool demo_move();
static BOOL solidHeapCB(fopAc_ac_c *i_this);
static const char M_arcname[6];
public:
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ mDoExt_McaMorf * mpMorf;
};
}
const char daObjGong::Act_c::M_arcname[6] = "Vdora";
/* 00000078-0000009C .text solidHeapCB__Q29daObjGong5Act_cFP10fopAc_ac_c */
void daObjGong::Act_c::solidHeapCB(fopAc_ac_c*) {
/* Nonmatching */
BOOL daObjGong::Act_c::solidHeapCB(fopAc_ac_c* i_this) {
return ((Act_c*)i_this)->create_heap();
}
/* 0000009C-0000028C .text create_heap__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::create_heap() {
/* Nonmatching */
bool daObjGong::Act_c::create_heap() {
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(M_arcname, 0x04));
J3DAnmTransformKey* bck = static_cast<J3DAnmTransformKey*>(dComIfG_getObjectRes(M_arcname, 0x07));
JUT_ASSERT(0xbd, (modelData != 0) && (bck != 0));
mpMorf = new mDoExt_McaMorf(modelData, NULL, NULL, bck, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, 0, NULL, 0, 0x11020203);
J3DModel * model = mpMorf != NULL ? mpMorf->getModel() : NULL;
bool ret = false;
if (model != NULL) {
J3DSkinDeform * deform = new J3DSkinDeform();
if (deform != NULL) {
s32 err = model->setSkinDeform(deform, 1);
JUT_ASSERT(0xd7, (err == J3DErrType_Success) || (err == J3DErrType_OutOfMemory));
if (err == J3DErrType_Success)
ret = true;
}
}
return model != NULL && ret;
}
/* 0000028C-00000374 .text _create__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::_create() {
/* Nonmatching */
s32 daObjGong::Act_c::_create() {
fopAcM_SetupActor(this, Act_c);
s32 ret = dComIfG_resLoad(&mPhs, M_arcname);
if (ret == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)solidHeapCB, 0x0)) {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
init_mtx();
fopAcM_setCullSizeBox(this, -100.0f, -1.0f, -50.0f, 100.0f, 230.0f, 50.0f);
mEyePos.y += attr().offsetY;
} else {
ret = cPhs_ERROR_e;
}
}
return ret;
}
/* 00000374-000003A4 .text _delete__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::_delete() {
/* Nonmatching */
bool daObjGong::Act_c::_delete() {
dComIfG_resDelete(&mPhs, M_arcname);
return true;
}
/* 000003A4-00000414 .text set_mtx__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::set_mtx() {
/* Nonmatching */
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::ZXYrotM(shape_angle);
mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 00000414-00000454 .text init_mtx__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::init_mtx() {
/* Nonmatching */
mpMorf->getModel()->setBaseScale(mScale);
set_mtx();
}
/* 00000454-000004A4 .text demo_move__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::demo_move() {
/* Nonmatching */
bool daObjGong::Act_c::demo_move() {
return dDemo_setDemoData(this, 0x6A, mpMorf, "Vdora", 0, NULL, 0, 0);
}
/* 000004A4-000004F0 .text _execute__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::_execute() {
/* Nonmatching */
bool daObjGong::Act_c::_execute() {
demo_move();
mpMorf->play(NULL, 0, 0);
set_mtx();
return true;
}
/* 000004F0-00000580 .text _draw__Q29daObjGong5Act_cFv */
void daObjGong::Act_c::_draw() {
/* Nonmatching */
bool daObjGong::Act_c::_draw() {
/* Nonmatching - just some tiny regalloc */
J3DModel* model = mpMorf->getModel();
J3DModelData* modelData = model->getModelData();
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, getPositionP(), &mTevStr);
g_env_light.setLightTevColorType(model, &mTevStr);
dDlst_texSpecmapST(&mEyePos, &mTevStr, modelData, attr().spec);
mpMorf->updateDL();
return true;
}
/* 00000580-000005A0 .text Mthd_Create__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
void daObjGong::@unnamed@d_a_obj_gong_cpp@::Mthd_Create(void*) {
/* Nonmatching */
}
/* 000005A0-000005C4 .text Mthd_Delete__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
void daObjGong::@unnamed@d_a_obj_gong_cpp@::Mthd_Delete(void*) {
/* Nonmatching */
}
/* 000005C4-000005E8 .text Mthd_Execute__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
void daObjGong::@unnamed@d_a_obj_gong_cpp@::Mthd_Execute(void*) {
/* Nonmatching */
}
/* 000005E8-0000060C .text Mthd_Draw__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
void daObjGong::@unnamed@d_a_obj_gong_cpp@::Mthd_Draw(void*) {
/* Nonmatching */
}
/* 0000060C-00000614 .text Mthd_IsDelete__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
void daObjGong::@unnamed@d_a_obj_gong_cpp@::Mthd_IsDelete(void*) {
/* Nonmatching */
namespace daObjGong {
namespace {
/* 00000580-000005A0 .text Mthd_Create__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
s32 Mthd_Create(void* i_this) {
return ((Act_c*)i_this)->_create();
}
/* 000005A0-000005C4 .text Mthd_Delete__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
BOOL Mthd_Delete(void* i_this) {
return ((Act_c*)i_this)->_delete();
}
/* 000005C4-000005E8 .text Mthd_Execute__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
BOOL Mthd_Execute(void* i_this) {
return ((Act_c*)i_this)->_execute();
}
/* 000005E8-0000060C .text Mthd_Draw__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
BOOL Mthd_Draw(void* i_this) {
return ((Act_c*)i_this)->_draw();
}
/* 0000060C-00000614 .text Mthd_IsDelete__Q29daObjGong26@unnamed@d_a_obj_gong_cpp@FPv */
BOOL Mthd_IsDelete(void* i_this) {
return TRUE;
}
static actor_method_class Mthd_Table = {
(process_method_func)Mthd_Create,
(process_method_func)Mthd_Delete,
(process_method_func)Mthd_Execute,
(process_method_func)Mthd_IsDelete,
(process_method_func)Mthd_Draw,
};
}
}
actor_process_profile_definition g_profile_Obj_Gong = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 3,
/* ListPrio */ fpcPi_CURRENT_e,
/* ProcName */ PROC_Obj_Gong,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daObjGong::Act_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x004C,
/* Actor SubMtd */ &daObjGong::Mthd_Table,
/* Status */ fopAcStts_UNK40000_e | fopAcStts_CULL_e | fopAcStts_NOCULLEXEC_e,
/* Group */ fopAc_ACTOR_e,
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
};
+2 -2
View File
@@ -1650,14 +1650,14 @@ J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 i_modelFlag, u3
}
int ret = model->entryModelData(i_modelData, i_modelFlag, 1);
if (ret == kJ3DError_Success) {
if (ret == J3DErrType_Success) {
if (i_modelFlag == 0x80000) {
if (i_differedDlistFlag & 0x2) {
i_differedDlistFlag |= 0x20;
}
ret = model->newDifferedDisplayList(i_differedDlistFlag);
if (ret != kJ3DError_Success) {
if (ret != J3DErrType_Success) {
return NULL;
}
}