diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index ab3d266745..fa80315ac8 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -568,6 +568,7 @@ JKRSolidHeap* mDoExt_createSolidHeapFromGameToCurrent(JKRHeap** o_heap, u32 i_si u32 mDoExt_adjustSolidHeapToSystem(JKRSolidHeap* i_heap); JKRHeap* mDoExt_getCurrentHeap(); void mDoExt_removeMesgFont(); +void mDoExt_modelUpdate(J3DModel* i_model); void mDoExt_modelUpdateDL(J3DModel* i_model); J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 param_1, u32 param_2); void mDoExt_setAraCacheSize(u32 size); diff --git a/include/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.h b/include/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.h index 3197119a88..0ef32c455c 100644 --- a/include/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.h +++ b/include/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.h @@ -1,6 +1,30 @@ #ifndef D_A_OBJ_PROP_H #define D_A_OBJ_PROP_H -#include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" +#include "f_op/f_op_actor_mng.h" + +class daObjProp_c : public fopAc_ac_c { +public: + /* 80CB51F8 */ daObjProp_c(); + + /* 80CB52B4 */ bool createHeap(); + /* 80CB5334 */ int create(); + /* 80CB5408 */ int Delete(); + /* 80CB543C */ int draw(); + /* 80CB54A0 */ int execute(); + /* 80CB54E4 */ void init(); + /* 80CB54F4 */ void setModelMtx(); + + u32 getNameArg_0() { return fopAcM_GetParamBit(this, 0, 4); } + u32 getArg_0() { return fopAcM_GetParamBit(this, 4, 4); } + + /* 0x568 */ request_of_phase_process_class mPhaseReq; + + /* 0x570 */ /* 80CB5234 */ virtual ~daObjProp_c(); + + /* 0x574 */ J3DModel* mpModel; + /* 0x578 */ u8 mArg; +}; // Size: 0x57C #endif /* D_A_OBJ_PROP_H */ diff --git a/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.cpp b/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.cpp index 85e72a6555..8a3999e5a2 100644 --- a/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.cpp +++ b/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.cpp @@ -1,304 +1,151 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_prop -// +/** + * d_a_obj_prop.cpp + * Object - Propeller +*/ #include "rel/d/a/obj/d_a_obj_prop/d_a_obj_prop.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daObjProp_c { - /* 80CB51F8 */ daObjProp_c(); - /* 80CB5234 */ ~daObjProp_c(); - /* 80CB52B4 */ void createHeap(); - /* 80CB5334 */ void create(); - /* 80CB5408 */ void Delete(); - /* 80CB543C */ void draw(); - /* 80CB54A0 */ void execute(); - /* 80CB54E4 */ void init(); - /* 80CB54F4 */ void setModelMtx(); -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct cXyz {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct J3DModel {}; - -// -// Forward References: -// - -extern "C" static void daObjProp_c_createHeap__FP10fopAc_ac_c(); -extern "C" void __ct__11daObjProp_cFv(); -extern "C" void __dt__11daObjProp_cFv(); -extern "C" void createHeap__11daObjProp_cFv(); -extern "C" void create__11daObjProp_cFv(); -extern "C" void Delete__11daObjProp_cFv(); -extern "C" void draw__11daObjProp_cFv(); -extern "C" void execute__11daObjProp_cFv(); -extern "C" void init__11daObjProp_cFv(); -extern "C" void setModelMtx__11daObjProp_cFv(); -extern "C" static void daObjProp_create__FP11daObjProp_c(); -extern "C" static void daObjProp_Delete__FP11daObjProp_c(); -extern "C" static void daObjProp_execute__FP11daObjProp_c(); -extern "C" static void daObjProp_draw__FP11daObjProp_c(); -extern "C" extern char const* const d_a_obj_prop__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoExt_modelUpdate__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __dl__FPv(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; - -// -// Declarations: -// +#include "JSystem/JKernel/JKRHeap.h" +#include "d/d_procname.h" /* 80CB51D8-80CB51F8 000078 0020+00 1/1 0/0 0/0 .text daObjProp_c_createHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjProp_c_createHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/daObjProp_c_createHeap__FP10fopAc_ac_c.s" +static bool daObjProp_c_createHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); } -#pragma pop - -/* ############################################################################################## */ -/* 80CB5620-80CB5620 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CB5620 = "L7Prop"; -#pragma pop /* 80CB5628-80CB562C -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_prop__stringBase0; +static const char* l_arcName = "L7Prop"; + +/* 80CB51F8-80CB5234 000098 003C+00 2/2 0/0 0/0 .text __ct__11daObjProp_cFv */ +daObjProp_c::daObjProp_c() {} + +inline request_of_phase_process_class* daObjProp_getRes(daObjProp_c* i_prop) { + daObjProp_c* mProp2 = (daObjProp_c*)i_prop; + return mProp2 != NULL ? &mProp2->mPhaseReq : (request_of_phase_process_class*)mProp2; +} + +/* 80CB5234-80CB52B4 0000D4 0080+00 1/0 0/0 0/0 .text __dt__11daObjProp_cFv */ +daObjProp_c::~daObjProp_c() { + dComIfG_resDelete(daObjProp_getRes(this), l_arcName); +} + +static const u32 BMD_IDX[] = {3, 4}; + +/* 80CB52B4-80CB5334 000154 0080+00 1/1 0/0 0/0 .text createHeap__11daObjProp_cFv */ +bool daObjProp_c::createHeap() { + u32 nameArg = getNameArg_0(); + u32 bmd = BMD_IDX[nameArg]; + mpModel = mDoExt_J3DModel__create((J3DModelData*)dComIfG_getObjectRes(l_arcName, bmd), 0x80000, + 0x11000084); + return mpModel != NULL; +} + +/* 80CB5334-80CB5408 0001D4 00D4+00 1/1 0/0 0/0 .text create__11daObjProp_cFv */ +int daObjProp_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daObjProp_c(); + fopAcM_OnCondition(this, 8); + } + + daObjProp_c* tmp = this; + if (this) { + tmp = (daObjProp_c*)&mPhaseReq; + } + + int phase = dComIfG_resLoad((request_of_phase_process_class*)tmp, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)daObjProp_c_createHeap, 0x1000)) { + return cPhs_ERROR_e; + + } else { + init(); + setModelMtx(); + mCullMtx = mpModel->getBaseTRMtx(); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + } + } + return phase; +} + +/* 80CB5408-80CB543C 0002A8 0034+00 1/1 0/0 0/0 .text Delete__11daObjProp_cFv */ +int daObjProp_c::Delete() { + this->~daObjProp_c(); + return 1; +} + +/* 80CB543C-80CB54A0 0002DC 0064+00 1/1 0/0 0/0 .text draw__11daObjProp_cFv */ +int daObjProp_c::draw() { + g_env_light.settingTevStruct(NULL, ¤t.pos, &mTevStr); + g_env_light.setLightTevColorType_MAJI(mpModel->mModelData, &mTevStr); + mDoExt_modelUpdate(mpModel); + return 1; +} + +static const s16 ADD_ANGLE[] = {0x1800, 0xE800}; + +/* 80CB54A0-80CB54E4 000340 0044+00 1/1 0/0 0/0 .text execute__11daObjProp_cFv */ +int daObjProp_c::execute() { + shape_angle.y += ADD_ANGLE[mArg]; + setModelMtx(); + return 1; +} + +/* 80CB54E4-80CB54F4 000384 0010+00 1/1 0/0 0/0 .text init__11daObjProp_cFv */ +void daObjProp_c::init() { + mArg = getArg_0() & 1; +} + +/* 80CB54F4-80CB5558 000394 0064+00 2/2 0/0 0/0 .text setModelMtx__11daObjProp_cFv */ +void daObjProp_c::setModelMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + PSMTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx); +} + +/* 80CB5558-80CB55AC 0003F8 0054+00 1/0 0/0 0/0 .text daObjProp_create__FP11daObjProp_c */ +static int daObjProp_create(daObjProp_c* i_this) { + if (!fopAcM_CheckCondition(i_this, 8)) { + new (i_this) daObjProp_c(); + fopAcM_OnCondition(i_this, 8); + } + return i_this->create(); +} + +/* 80CB55AC-80CB55CC 00044C 0020+00 1/0 0/0 0/0 .text daObjProp_Delete__FP11daObjProp_c */ +static int daObjProp_Delete(daObjProp_c* i_this) { + return i_this->Delete(); +} + +/* 80CB55CC-80CB55EC 00046C 0020+00 1/0 0/0 0/0 .text daObjProp_execute__FP11daObjProp_c */ +static int daObjProp_execute(daObjProp_c* i_this) { + return i_this->execute(); +} + +/* 80CB55EC-80CB560C 00048C 0020+00 1/0 0/0 0/0 .text daObjProp_draw__FP11daObjProp_c */ +static int daObjProp_draw(daObjProp_c* i_this) { + return i_this->draw(); +} /* 80CB562C-80CB564C -00001 0020+00 1/0 0/0 0/0 .data daObjProp_METHODS */ -SECTION_DATA static void* daObjProp_METHODS[8] = { - (void*)daObjProp_create__FP11daObjProp_c, - (void*)daObjProp_Delete__FP11daObjProp_c, - (void*)daObjProp_execute__FP11daObjProp_c, - (void*)NULL, - (void*)daObjProp_draw__FP11daObjProp_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class daObjProp_METHODS = { + (process_method_func)daObjProp_create, (process_method_func)daObjProp_Delete, + (process_method_func)daObjProp_execute, (process_method_func)NULL, + (process_method_func)daObjProp_draw, }; /* 80CB564C-80CB567C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Prop */ -SECTION_DATA extern void* g_profile_Obj_Prop[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x01970000, (void*)&g_fpcLf_Method, - (void*)0x0000057C, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x02E10000, (void*)&daObjProp_METHODS, - (void*)0x00040000, (void*)0x030E0000, -}; - -/* 80CB567C-80CB5688 000054 000C+00 2/2 0/0 0/0 .data __vt__11daObjProp_c */ -SECTION_DATA extern void* __vt__11daObjProp_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daObjProp_cFv, -}; - -/* 80CB51F8-80CB5234 000098 003C+00 2/2 0/0 0/0 .text __ct__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daObjProp_c::daObjProp_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/__ct__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB5234-80CB52B4 0000D4 0080+00 1/0 0/0 0/0 .text __dt__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daObjProp_c::~daObjProp_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/__dt__11daObjProp_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80CB5614-80CB561C 000000 0008+00 1/1 0/0 0/0 .rodata BMD_IDX$3638 */ -SECTION_RODATA static u8 const BMD_IDX[8] = { - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x80CB5614, &BMD_IDX); - -/* 80CB52B4-80CB5334 000154 0080+00 1/1 0/0 0/0 .text createHeap__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::createHeap() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/createHeap__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB5334-80CB5408 0001D4 00D4+00 1/1 0/0 0/0 .text create__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::create() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/create__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB5408-80CB543C 0002A8 0034+00 1/1 0/0 0/0 .text Delete__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::Delete() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/Delete__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB543C-80CB54A0 0002DC 0064+00 1/1 0/0 0/0 .text draw__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::draw() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/draw__11daObjProp_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80CB561C-80CB5620 000008 0004+00 1/1 0/0 0/0 .rodata ADD_ANGLE$3689 */ -SECTION_RODATA static u8 const ADD_ANGLE[4] = { - 0x18, - 0x00, - 0xE8, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CB561C, &ADD_ANGLE); - -/* 80CB54A0-80CB54E4 000340 0044+00 1/1 0/0 0/0 .text execute__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::execute() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/execute__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB54E4-80CB54F4 000384 0010+00 1/1 0/0 0/0 .text init__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::init() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/init__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB54F4-80CB5558 000394 0064+00 2/2 0/0 0/0 .text setModelMtx__11daObjProp_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjProp_c::setModelMtx() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/setModelMtx__11daObjProp_cFv.s" -} -#pragma pop - -/* 80CB5558-80CB55AC 0003F8 0054+00 1/0 0/0 0/0 .text daObjProp_create__FP11daObjProp_c - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjProp_create(daObjProp_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/daObjProp_create__FP11daObjProp_c.s" -} -#pragma pop - -/* 80CB55AC-80CB55CC 00044C 0020+00 1/0 0/0 0/0 .text daObjProp_Delete__FP11daObjProp_c - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjProp_Delete(daObjProp_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/daObjProp_Delete__FP11daObjProp_c.s" -} -#pragma pop - -/* 80CB55CC-80CB55EC 00046C 0020+00 1/0 0/0 0/0 .text daObjProp_execute__FP11daObjProp_c - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjProp_execute(daObjProp_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/daObjProp_execute__FP11daObjProp_c.s" -} -#pragma pop - -/* 80CB55EC-80CB560C 00048C 0020+00 1/0 0/0 0/0 .text daObjProp_draw__FP11daObjProp_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjProp_draw(daObjProp_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_prop/d_a_obj_prop/daObjProp_draw__FP11daObjProp_c.s" -} -#pragma pop - -/* 80CB5620-80CB5620 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +extern actor_process_profile_definition g_profile_Obj_Prop = { + -3, + 7, + -3, + PROC_Obj_Prop, + &g_fpcLf_Method.mBase, + sizeof(daObjProp_c), + 0, + 0, + &g_fopAc_Method.base, + 0x02E1, + &daObjProp_METHODS, + 0x00040000, + 3, + 14, +}; \ No newline at end of file diff --git a/rel/d/a/tag/d_a_tag_attention/d_a_tag_attention.cpp b/rel/d/a/tag/d_a_tag_attention/d_a_tag_attention.cpp index 7af41f941c..025b95c885 100644 --- a/rel/d/a/tag/d_a_tag_attention/d_a_tag_attention.cpp +++ b/rel/d/a/tag/d_a_tag_attention/d_a_tag_attention.cpp @@ -8,16 +8,7 @@ #include "d/a/d_a_player.h" #include "d/d_procname.h" -/* ############################################################################################## */ -/* 804D5724-804D5728 000000 0002+02 1/1 0/0 0/0 .rodata l_dist_tbl$3641 */ -SECTION_RODATA static u8 const l_dist_tbl[2 + 2 /* padding */] = { - 0x23, - 0x24, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x804D5724, &l_dist_tbl); +static const u8 l_dist_tbl[] = { 0x23, 0x24 }; /* 804D5318-804D5354 000078 003C+00 1/1 0/0 0/0 .text Create__8daAttp_cFv */ int daAttp_c::Create() {