d_a_obj_metalbox matching (#2333)

* Started work on d_a_obj_stick

* Lots of green

* Fixed mAcch vtable

* Only missing switch/if problem in create

* All green

* Set stick matching

* Cleanup

* Addressed PR comments

* Reset vscode config

* d_a_ob_metalbox mostly complete

* Completed d_a_obj_metalbox

* Addressed PR issues
This commit is contained in:
Emma 2025-03-20 06:11:32 -04:00 committed by GitHub
parent 131548b015
commit 1a5a81976a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 113 additions and 217 deletions

View File

@ -1543,7 +1543,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ladder"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv2Candle"),
ActorRel(NonMatching, "d_a_obj_magne_arm"),
ActorRel(NonMatching, "d_a_obj_metalbox"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_metalbox"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mgate"),
ActorRel(NonMatching, "d_a_obj_nameplate"),
ActorRel(NonMatching, "d_a_obj_ornament_cloth"),

View File

@ -2,6 +2,9 @@
#define D_A_OBJ_METALBOX_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
@ -11,19 +14,24 @@
* @details
*
*/
class daObjMBox_c : public fopAc_ac_c {
class daObjMBox_c : public dBgS_MoveBgActor {
private:
/* 0x5a0 */ request_of_phase_process_class mPhase;
/* 0x5a8 */ J3DModel* mpModel;
/* 0x5ac */ dBgS_ObjAcch mAcch;
/* 0x784 */ dBgS_AcchCir mAcchCir;
/* 0x7c4 */ dCcD_Stts mStts;
/* 0x7e4 */ dCcD_Cyl mCyl;
/* 0x904 */ u8 field_0x804[0x944 - 0x93c];
public:
/* 80592E98 */ void initBaseMtx();
/* 80592ED4 */ void setBaseMtx();
/* 80592F48 */ void Create();
/* 80592FD4 */ void CreateHeap();
/* 80593044 */ void create();
/* 805932C4 */ void Execute(f32 (**)[3][4]);
/* 805932F0 */ void Draw();
/* 80593394 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x944 - 0x568];
/* 80592F48 */ int Create();
/* 80592FD4 */ int CreateHeap();
/* 80593044 */ int create();
/* 805932C4 */ int Execute(f32 (**)[3][4]);
/* 805932F0 */ int Draw();
/* 80593394 */ int Delete();
};
STATIC_ASSERT(sizeof(daObjMBox_c) == 0x944);

View File

@ -5,119 +5,120 @@
#include "d/actor/d_a_obj_metalbox.h"
#include "dol2asm.h"
#include "d/d_com_inf_game.h"
//
// Forward References:
//
extern "C" void initBaseMtx__11daObjMBox_cFv();
extern "C" void setBaseMtx__11daObjMBox_cFv();
extern "C" void Create__11daObjMBox_cFv();
extern "C" void CreateHeap__11daObjMBox_cFv();
extern "C" void create__11daObjMBox_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__12dBgS_ObjAcchFv();
extern "C" void Execute__11daObjMBox_cFPPA3_A4_f();
extern "C" void Draw__11daObjMBox_cFv();
extern "C" void Delete__11daObjMBox_cFv();
extern "C" static void daObjMBox_Draw__FP11daObjMBox_c();
extern "C" static void daObjMBox_Execute__FP11daObjMBox_c();
extern "C" static void daObjMBox_Delete__FP11daObjMBox_c();
extern "C" static void daObjMBox_Create__FP10fopAc_ac_c();
extern "C" static void func_80593454();
extern "C" static void func_8059345C();
extern "C" extern char const* const d_a_obj_metalbox__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
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 dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void SetWall__12dBgS_AcchCirFff();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
extern "C" void __ct__16dBgS_MoveBgActorFv();
extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
extern "C" bool ToFore__16dBgS_MoveBgActorFv();
extern "C" bool ToBack__16dBgS_MoveBgActorFv();
extern "C" void
MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
extern "C" void SetObj__16dBgS_PolyPassChkFv();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void __ct__12dCcD_GObjInfFv();
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 _savegpr_29();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
//
// Declarations:
//
static char const* l_arcName = "L_mbox_00";
/* 80592E98-80592ED4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjMBox_cFv */
void daObjMBox_c::initBaseMtx() {
// NONMATCHING
mpModel->setBaseScale(scale);
setBaseMtx();
}
/* 80592ED4-80592F48 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__11daObjMBox_cFv */
void daObjMBox_c::setBaseMtx() {
// NONMATCHING
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
PSMTXCopy(mDoMtx_stack_c::now, mBgMtx);
}
/* ############################################################################################## */
/* 8059346C-80593470 000000 0004+00 1/1 0/0 0/0 .rodata @3655 */
SECTION_RODATA static f32 const lit_3655 = 30.0f;
COMPILER_STRIP_GATE(0x8059346C, &lit_3655);
/* 80592F48-80592FD4 000128 008C+00 1/0 0/0 0/0 .text Create__11daObjMBox_cFv */
void daObjMBox_c::Create() {
// NONMATCHING
int daObjMBox_c::Create() {
initBaseMtx();
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
mAcchCir.SetWall(30.0f, 30.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
return 1;
}
/* ############################################################################################## */
/* 80593470-80593470 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80593470 = "L_mbox_00";
#pragma pop
/* 8059347C-80593480 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_metalbox__stringBase0;
/* 80592FD4-80593044 0001B4 0070+00 1/0 0/0 0/0 .text CreateHeap__11daObjMBox_cFv */
void daObjMBox_c::CreateHeap() {
// NONMATCHING
int daObjMBox_c::CreateHeap() {
J3DModelData* objectRes = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
mpModel = mDoExt_J3DModel__create(objectRes, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
return 1;
}
/* 80593044-805931C4 000224 0180+00 1/1 0/0 0/0 .text create__11daObjMBox_cFv */
int daObjMBox_c::create() {
fopAcM_SetupActor(this, daObjMBox_c);
int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
if (phase_state == cPhs_COMPLEATE_e) {
phase_state = MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_TypicalRotY, 0xc40, 0);
if (phase_state == cPhs_ERROR_e) {
return phase_state;
}
}
return phase_state;
}
/* 805932C4-805932F0 0004A4 002C+00 1/0 0/0 0/0 .text Execute__11daObjMBox_cFPPA3_A4_f */
int daObjMBox_c::Execute(f32 (**param_0)[3][4]) {
*param_0 = &mBgMtx;
setBaseMtx();
return 1;
}
/* 805932F0-80593394 0004D0 00A4+00 1/0 0/0 0/0 .text Draw__11daObjMBox_cFv */
int daObjMBox_c::Draw() {
g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return 1;
}
/* 80593394-805933C8 000574 0034+00 1/0 0/0 0/0 .text Delete__11daObjMBox_cFv */
int daObjMBox_c::Delete() {
dComIfG_resDelete(&mPhase, l_arcName);
return 1;
}
/* 805933C8-805933F4 0005A8 002C+00 1/0 0/0 0/0 .text daObjMBox_Draw__FP11daObjMBox_c */
static int daObjMBox_Draw(daObjMBox_c* i_this) {
return i_this->MoveBGDraw();
}
/* 805933F4-80593414 0005D4 0020+00 1/0 0/0 0/0 .text daObjMBox_Execute__FP11daObjMBox_c
*/
static int daObjMBox_Execute(daObjMBox_c* i_this) {
return i_this->MoveBGExecute();
}
/* 80593414-80593434 0005F4 0020+00 1/0 0/0 0/0 .text daObjMBox_Delete__FP11daObjMBox_c
*/
static int daObjMBox_Delete(daObjMBox_c* i_this) {
return i_this->MoveBGDelete();
}
/* 80593434-80593454 000614 0020+00 1/0 0/0 0/0 .text daObjMBox_Create__FP10fopAc_ac_c */
static int daObjMBox_Create(fopAc_ac_c* i_this) {
fopAcM_GetID(i_this);
return static_cast<daObjMBox_c*>(i_this)->create();
}
/* ############################################################################################## */
/* 80593480-805934A0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMBox_Method */
static actor_method_class l_daObjMBox_Method = {
(process_method_func)daObjMBox_Create__FP10fopAc_ac_c,
(process_method_func)daObjMBox_Delete__FP11daObjMBox_c,
(process_method_func)daObjMBox_Execute__FP11daObjMBox_c,
(process_method_func)daObjMBox_Create,
(process_method_func)daObjMBox_Delete,
(process_method_func)daObjMBox_Execute,
0,
(process_method_func)daObjMBox_Draw__FP11daObjMBox_c,
(process_method_func)daObjMBox_Draw,
};
/* 805934A0-805934D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MetalBox */
@ -137,116 +138,3 @@ extern actor_process_profile_definition g_profile_Obj_MetalBox = {
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 805934D0-805934DC 000054 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGCylFv,
};
/* 805934DC-805934E8 000060 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 805934E8-8059350C 00006C 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12dBgS_ObjAcchFv,
(void*)NULL,
(void*)NULL,
(void*)func_8059345C,
(void*)NULL,
(void*)NULL,
(void*)func_80593454,
};
/* 8059350C-80593534 000090 0028+00 1/1 0/0 0/0 .data __vt__11daObjMBox_c */
SECTION_DATA extern void* __vt__11daObjMBox_c[10] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)CreateHeap__11daObjMBox_cFv,
(void*)Create__11daObjMBox_cFv,
(void*)Execute__11daObjMBox_cFPPA3_A4_f,
(void*)Draw__11daObjMBox_cFv,
(void*)Delete__11daObjMBox_cFv,
(void*)IsDelete__16dBgS_MoveBgActorFv,
(void*)ToFore__16dBgS_MoveBgActorFv,
(void*)ToBack__16dBgS_MoveBgActorFv,
};
/* 80593044-805931C4 000224 0180+00 1/1 0/0 0/0 .text create__11daObjMBox_cFv */
void daObjMBox_c::create() {
// NONMATCHING
}
/* 805931C4-8059320C 0003A4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
// cM3dGCyl::~cM3dGCyl() {
extern "C" void __dt__8cM3dGCylFv() {
// NONMATCHING
}
/* 8059320C-80593254 0003EC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
// cM3dGAab::~cM3dGAab() {
extern "C" void __dt__8cM3dGAabFv() {
// NONMATCHING
}
/* 80593254-805932C4 000434 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
// dBgS_ObjAcch::~dBgS_ObjAcch() {
extern "C" void __dt__12dBgS_ObjAcchFv() {
// NONMATCHING
}
/* 805932C4-805932F0 0004A4 002C+00 1/0 0/0 0/0 .text Execute__11daObjMBox_cFPPA3_A4_f */
void daObjMBox_c::Execute(f32 (**param_0)[3][4]) {
// NONMATCHING
}
/* 805932F0-80593394 0004D0 00A4+00 1/0 0/0 0/0 .text Draw__11daObjMBox_cFv */
void daObjMBox_c::Draw() {
// NONMATCHING
}
/* 80593394-805933C8 000574 0034+00 1/0 0/0 0/0 .text Delete__11daObjMBox_cFv */
void daObjMBox_c::Delete() {
// NONMATCHING
}
/* 805933C8-805933F4 0005A8 002C+00 1/0 0/0 0/0 .text daObjMBox_Draw__FP11daObjMBox_c */
static void daObjMBox_Draw(daObjMBox_c* param_0) {
// NONMATCHING
}
/* 805933F4-80593414 0005D4 0020+00 1/0 0/0 0/0 .text daObjMBox_Execute__FP11daObjMBox_c
*/
static void daObjMBox_Execute(daObjMBox_c* param_0) {
// NONMATCHING
}
/* 80593414-80593434 0005F4 0020+00 1/0 0/0 0/0 .text daObjMBox_Delete__FP11daObjMBox_c
*/
static void daObjMBox_Delete(daObjMBox_c* param_0) {
// NONMATCHING
}
/* 80593434-80593454 000614 0020+00 1/0 0/0 0/0 .text daObjMBox_Create__FP10fopAc_ac_c */
static void daObjMBox_Create(fopAc_ac_c* param_0) {
// NONMATCHING
}
/* 80593454-8059345C 000634 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
static void func_80593454() {
// NONMATCHING
}
/* 8059345C-80593464 00063C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
static void func_8059345C() {
// NONMATCHING
}
/* 80593470-80593470 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */