Begin work on d_a_branch (#17)

* Match d_a_boss_item.cpp

* Revert changes to isStageBossEnemy and isStageLife

* Start on d_a_branch; match set_anim, solidHeapCB, isDelete

* Add dComIfG_getObjectIDRes and clean up d_a_branch
This commit is contained in:
Dylan Ascencio
2023-09-12 01:35:45 -04:00
committed by GitHub
parent aa975d1c5f
commit f167a3e8b9
3 changed files with 163 additions and 9 deletions
+8
View File
@@ -589,6 +589,14 @@ inline void* dComIfG_getObjectRes(const char* arcName, int param_1) {
return g_dComIfG_gameInfo.mResControl.getObjectRes(arcName, param_1);
}
inline void* dComIfG_getObjectIDRes(const char* arcName, int id) {
return g_dComIfG_gameInfo.mResControl.getObjectIDRes(arcName, id);
}
inline void* dComIfG_getObjectIDRes(const char* arcName, u16 id) {
return g_dComIfG_gameInfo.mResControl.getObjectIDRes(arcName, id);
}
/**
* === PARTICLE ===
*/
+12
View File
@@ -229,6 +229,18 @@ public:
virtual void execute(u16, J3DTransformInfo*) = 0;
};
class mDoExt_McaMorfCallBack2_c {
public:
virtual void execute(u16, J3DTransformInfo*) = 0;
};
class mDoExt_McaMorf {
public:
mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, float, int, int, int, void*, unsigned long, unsigned long);
void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*);
};
class mDoExt_3DlineMat_c {
public:
/* 0x0 */ void* field_0x0;
+143 -9
View File
@@ -3,17 +3,60 @@
// Translation Unit: d_a_branch.cpp
//
#include "d_a_branch.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "f_op/f_op_actor.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_com_inf_game.h"
#include "d/d_resorce.h"
#include "dolphin/types.h"
class daBranch_c : public fopAc_ac_c {
public:
void set_mtx();
void set_anim(int, int, int);
void demoPlay(mDoExt_McaMorf*);
s32 CreateHeap();
static s32 solidHeapCB(fopAc_ac_c*);
/* 0x0290 */ request_of_phase_process_class mPhs;
/* 0x0294 */ s8 dummy[0x10];
// ...
/* 0x02A8*/ mDoExt_McaMorf* mAnims[2];
static char m_arcname[];
};
char daBranch_c::m_arcname[] = "Kwood_00";
/* 00000078-00000128 .text set_mtx__10daBranch_cFv */
void daBranch_c::set_mtx() {
/* Nonmatching */
//for (int i = 0; i < 2; i ++) {
//}
}
/* 00000128-000001E4 .text set_anim__10daBranch_cFiii */
void daBranch_c::set_anim(int, int, int) {
/* Nonmatching */
void daBranch_c::set_anim(int i_animIdx, int i_bckIdx, int i_basIdx) {
if (i_bckIdx > 0 && i_basIdx > 0) {
void* pSnd = dComIfG_getObjectIDRes(m_arcname, i_basIdx);
void* pAnm = dComIfG_getObjectIDRes(m_arcname, i_bckIdx);
mAnims[i_animIdx]->setAnm(
static_cast<J3DAnmTransform*>(pAnm),
-1,
0.0f,
1.0f,
0.0f,
-1.0f,
pSnd
);
}
}
/* 000001E4-00000228 .text demoPlay__10daBranch_cFP14mDoExt_McaMorf */
@@ -22,13 +65,59 @@ void daBranch_c::demoPlay(mDoExt_McaMorf*) {
}
/* 00000228-00000248 .text solidHeapCB__10daBranch_cFP10fopAc_ac_c */
void daBranch_c::solidHeapCB(fopAc_ac_c*) {
/* Nonmatching */
s32 daBranch_c::solidHeapCB(fopAc_ac_c* i_this) {
daBranch_c* branch = static_cast<daBranch_c*>(i_this);
return branch->CreateHeap();
}
/* 00000248-0000049C .text CreateHeap__10daBranch_cFv */
void daBranch_c::CreateHeap() {
s32 daBranch_c::CreateHeap() {
/* Nonmatching */
BOOL status = TRUE;
s32 ids[] = {
8, 0,
7, 2,
6, 5
};
for (int i = 0; i < 2; i++) {
void* modelRes = dRes_control_c::getIDRes(m_arcname, ids[i + 4], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40);
void* bckRes = dRes_control_c::getIDRes(m_arcname, ids[i + 2], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40);
if (!modelRes) {
JUT_ASSERT(0x1CC, "modelData != 0");
}
if (!bckRes) {
JUT_ASSERT(0x1CD, "bck != 0");
}
mDoExt_McaMorf* newMorf = new mDoExt_McaMorf(
(J3DModelData*)dRes_control_c::getIDRes(m_arcname, ids[i + 4], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40),
0,
0,
(J3DAnmTransformKey*)dRes_control_c::getIDRes(m_arcname, ids[i + 2], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40),
0,
1.0f,
0,
-1,
1,
0,
0,
0x11020203
);
mAnims[i] = newMorf;
if (mAnims[i] == 0) {
status = FALSE;
break;
}
}
return status;
}
/* 0000049C-00000524 .text daBranch_Draw__FP10daBranch_c */
@@ -42,8 +131,8 @@ void daBranch_Execute(daBranch_c*) {
}
/* 0000060C-00000614 .text daBranch_IsDelete__FP10daBranch_c */
void daBranch_IsDelete(daBranch_c*) {
/* Nonmatching */
BOOL daBranch_IsDelete(daBranch_c*) {
return TRUE;
}
/* 00000614-00000694 .text daBranch_Delete__FP10daBranch_c */
@@ -52,7 +141,52 @@ void daBranch_Delete(daBranch_c*) {
}
/* 00000694-0000080C .text daBranch_Create__FP10fopAc_ac_c */
void daBranch_Create(fopAc_ac_c*) {
s32 daBranch_Create(fopAc_ac_c* i_this) {
/* Nonmatching */
daBranch_c* branch = static_cast<daBranch_c*>(i_this);
fopAcM_SetupActor(branch, daBranch_c);
s32 state = dComIfG_resLoad(&branch->mPhs, daBranch_c::m_arcname);
if (state == cPhs_COMPLEATE_e) {
int solidHeapResult = fopAcM_entrySolidHeap(i_this, (heapCallbackFunc)daBranch_c::solidHeapCB, 0x4000);
if (solidHeapResult & 0xFF == 0) {
for (int i = 0; i < 2; i++) {
//branch->mBase.m
}
state = cPhs_ERROR_e;
}
else {
}
}
return state;
}
static actor_method_class l_daBranch_Method = {
(process_method_func)daBranch_Create,
(process_method_func)daBranch_Delete,
(process_method_func)daBranch_Execute,
(process_method_func)daBranch_IsDelete,
(process_method_func)daBranch_Draw,
};
extern actor_process_profile_definition g_profile_BRANCH = {
fpcLy_CURRENT_e,
7,
fpcLy_CURRENT_e,
PROC_BRANCH,
&g_fpcLf_Method.mBase,
sizeof(daBranch_c),
0,
0,
&g_fopAc_Method.base,
0x0193,
&l_daBranch_Method,
0x00044000,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};