Skip to content

Commit 1a5a819

Browse files
authored
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
1 parent 131548b commit 1a5a819

File tree

3 files changed

+107
-211
lines changed

3 files changed

+107
-211
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1543,7 +1543,7 @@ def MatchingFor(*versions):
15431543
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ladder"),
15441544
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv2Candle"),
15451545
ActorRel(NonMatching, "d_a_obj_magne_arm"),
1546-
ActorRel(NonMatching, "d_a_obj_metalbox"),
1546+
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_metalbox"),
15471547
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mgate"),
15481548
ActorRel(NonMatching, "d_a_obj_nameplate"),
15491549
ActorRel(NonMatching, "d_a_obj_ornament_cloth"),

include/d/actor/d_a_obj_metalbox.h

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
#define D_A_OBJ_METALBOX_H
33

44
#include "f_op/f_op_actor_mng.h"
5+
#include "d/d_bg_s_movebg_actor.h"
6+
#include "d/d_bg_s_acch.h"
7+
#include "d/d_cc_d.h"
58

69
/**
710
* @ingroup actors-objects
@@ -11,19 +14,24 @@
1114
* @details
1215
*
1316
*/
14-
class daObjMBox_c : public fopAc_ac_c {
17+
class daObjMBox_c : public dBgS_MoveBgActor {
18+
private:
19+
/* 0x5a0 */ request_of_phase_process_class mPhase;
20+
/* 0x5a8 */ J3DModel* mpModel;
21+
/* 0x5ac */ dBgS_ObjAcch mAcch;
22+
/* 0x784 */ dBgS_AcchCir mAcchCir;
23+
/* 0x7c4 */ dCcD_Stts mStts;
24+
/* 0x7e4 */ dCcD_Cyl mCyl;
25+
/* 0x904 */ u8 field_0x804[0x944 - 0x93c];
1526
public:
1627
/* 80592E98 */ void initBaseMtx();
1728
/* 80592ED4 */ void setBaseMtx();
18-
/* 80592F48 */ void Create();
19-
/* 80592FD4 */ void CreateHeap();
20-
/* 80593044 */ void create();
21-
/* 805932C4 */ void Execute(f32 (**)[3][4]);
22-
/* 805932F0 */ void Draw();
23-
/* 80593394 */ void Delete();
24-
25-
private:
26-
/* 0x568 */ u8 field_0x568[0x944 - 0x568];
29+
/* 80592F48 */ int Create();
30+
/* 80592FD4 */ int CreateHeap();
31+
/* 80593044 */ int create();
32+
/* 805932C4 */ int Execute(f32 (**)[3][4]);
33+
/* 805932F0 */ int Draw();
34+
/* 80593394 */ int Delete();
2735
};
2836

2937
STATIC_ASSERT(sizeof(daObjMBox_c) == 0x944);

src/d/actor/d_a_obj_metalbox.cpp

Lines changed: 88 additions & 200 deletions
Original file line numberDiff line numberDiff line change
@@ -5,248 +5,136 @@
55

66
#include "d/actor/d_a_obj_metalbox.h"
77
#include "dol2asm.h"
8+
#include "d/d_com_inf_game.h"
89

9-
10-
//
11-
// Forward References:
12-
//
13-
14-
extern "C" void initBaseMtx__11daObjMBox_cFv();
15-
extern "C" void setBaseMtx__11daObjMBox_cFv();
16-
extern "C" void Create__11daObjMBox_cFv();
17-
extern "C" void CreateHeap__11daObjMBox_cFv();
18-
extern "C" void create__11daObjMBox_cFv();
19-
extern "C" void __dt__8cM3dGCylFv();
20-
extern "C" void __dt__8cM3dGAabFv();
21-
extern "C" void __dt__12dBgS_ObjAcchFv();
22-
extern "C" void Execute__11daObjMBox_cFPPA3_A4_f();
23-
extern "C" void Draw__11daObjMBox_cFv();
24-
extern "C" void Delete__11daObjMBox_cFv();
25-
extern "C" static void daObjMBox_Draw__FP11daObjMBox_c();
26-
extern "C" static void daObjMBox_Execute__FP11daObjMBox_c();
27-
extern "C" static void daObjMBox_Delete__FP11daObjMBox_c();
28-
extern "C" static void daObjMBox_Create__FP10fopAc_ac_c();
29-
extern "C" static void func_80593454();
30-
extern "C" static void func_8059345C();
31-
extern "C" extern char const* const d_a_obj_metalbox__stringBase0;
32-
33-
//
34-
// External References:
35-
//
36-
37-
extern "C" void mDoMtx_YrotM__FPA4_fs();
38-
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
39-
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
40-
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
41-
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
42-
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
43-
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
44-
extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
45-
extern "C" void __ct__12dBgS_AcchCirFv();
46-
extern "C" void SetWall__12dBgS_AcchCirFff();
47-
extern "C" void __dt__9dBgS_AcchFv();
48-
extern "C" void __ct__9dBgS_AcchFv();
49-
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
50-
extern "C" void __ct__16dBgS_MoveBgActorFv();
51-
extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
52-
extern "C" bool ToFore__16dBgS_MoveBgActorFv();
53-
extern "C" bool ToBack__16dBgS_MoveBgActorFv();
54-
extern "C" void
55-
MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
56-
extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
57-
extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
58-
extern "C" void SetObj__16dBgS_PolyPassChkFv();
59-
extern "C" void __ct__10dCcD_GSttsFv();
60-
extern "C" void __ct__12dCcD_GObjInfFv();
61-
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
62-
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
63-
extern "C" void __dl__FPv();
64-
extern "C" void _savegpr_29();
65-
extern "C" void _restgpr_29();
66-
extern "C" extern void* __vt__8dCcD_Cyl[36];
67-
extern "C" extern void* __vt__9dCcD_Stts[11];
68-
extern "C" extern void* __vt__12cCcD_CylAttr[25];
69-
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
70-
extern "C" extern void* __vt__9cCcD_Stts[8];
71-
extern "C" u8 now__14mDoMtx_stack_c[48];
72-
extern "C" extern u8 g_dComIfG_gameInfo[122384];
73-
74-
//
75-
// Declarations:
76-
//
10+
static char const* l_arcName = "L_mbox_00";
7711

7812
/* 80592E98-80592ED4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjMBox_cFv */
7913
void daObjMBox_c::initBaseMtx() {
80-
// NONMATCHING
14+
mpModel->setBaseScale(scale);
15+
setBaseMtx();
8116
}
8217

8318
/* 80592ED4-80592F48 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__11daObjMBox_cFv */
8419
void daObjMBox_c::setBaseMtx() {
85-
// NONMATCHING
20+
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
21+
mDoMtx_stack_c::YrotM(shape_angle.y);
22+
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
23+
PSMTXCopy(mDoMtx_stack_c::now, mBgMtx);
8624
}
8725

88-
/* ############################################################################################## */
89-
/* 8059346C-80593470 000000 0004+00 1/1 0/0 0/0 .rodata @3655 */
90-
SECTION_RODATA static f32 const lit_3655 = 30.0f;
91-
COMPILER_STRIP_GATE(0x8059346C, &lit_3655);
92-
9326
/* 80592F48-80592FD4 000128 008C+00 1/0 0/0 0/0 .text Create__11daObjMBox_cFv */
94-
void daObjMBox_c::Create() {
95-
// NONMATCHING
96-
}
27+
int daObjMBox_c::Create() {
28+
initBaseMtx();
29+
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
30+
mAcchCir.SetWall(30.0f, 30.0f);
31+
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
32+
fopAcM_GetSpeed_p(this), NULL, NULL);
33+
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
9734

98-
/* ############################################################################################## */
99-
/* 80593470-80593470 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
100-
#pragma push
101-
#pragma force_active on
102-
SECTION_DEAD static char const* const stringBase_80593470 = "L_mbox_00";
103-
#pragma pop
104-
105-
/* 8059347C-80593480 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
106-
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_metalbox__stringBase0;
107-
108-
/* 80592FD4-80593044 0001B4 0070+00 1/0 0/0 0/0 .text CreateHeap__11daObjMBox_cFv */
109-
void daObjMBox_c::CreateHeap() {
110-
// NONMATCHING
35+
return 1;
11136
}
11237

113-
/* ############################################################################################## */
114-
/* 80593480-805934A0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMBox_Method */
115-
static actor_method_class l_daObjMBox_Method = {
116-
(process_method_func)daObjMBox_Create__FP10fopAc_ac_c,
117-
(process_method_func)daObjMBox_Delete__FP11daObjMBox_c,
118-
(process_method_func)daObjMBox_Execute__FP11daObjMBox_c,
119-
0,
120-
(process_method_func)daObjMBox_Draw__FP11daObjMBox_c,
121-
};
122-
123-
/* 805934A0-805934D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MetalBox */
124-
extern actor_process_profile_definition g_profile_Obj_MetalBox = {
125-
fpcLy_CURRENT_e, // mLayerID
126-
3, // mListID
127-
fpcPi_CURRENT_e, // mListPrio
128-
PROC_Obj_MetalBox, // mProcName
129-
&g_fpcLf_Method.base, // sub_method
130-
sizeof(daObjMBox_c), // mSize
131-
0, // mSizeOther
132-
0, // mParameters
133-
&g_fopAc_Method.base, // sub_method
134-
498, // mPriority
135-
&l_daObjMBox_Method, // sub_method
136-
0x00040100, // mStatus
137-
fopAc_ACTOR_e, // mActorType
138-
fopAc_CULLBOX_CUSTOM_e, // cullType
139-
};
140-
141-
/* 805934D0-805934DC 000054 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
142-
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
143-
(void*)NULL /* RTTI */,
144-
(void*)NULL,
145-
(void*)__dt__8cM3dGCylFv,
146-
};
147-
148-
/* 805934DC-805934E8 000060 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
149-
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
150-
(void*)NULL /* RTTI */,
151-
(void*)NULL,
152-
(void*)__dt__8cM3dGAabFv,
153-
};
154-
155-
/* 805934E8-8059350C 00006C 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
156-
SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
157-
(void*)NULL /* RTTI */,
158-
(void*)NULL,
159-
(void*)__dt__12dBgS_ObjAcchFv,
160-
(void*)NULL,
161-
(void*)NULL,
162-
(void*)func_8059345C,
163-
(void*)NULL,
164-
(void*)NULL,
165-
(void*)func_80593454,
166-
};
167-
168-
/* 8059350C-80593534 000090 0028+00 1/1 0/0 0/0 .data __vt__11daObjMBox_c */
169-
SECTION_DATA extern void* __vt__11daObjMBox_c[10] = {
170-
(void*)NULL /* RTTI */,
171-
(void*)NULL,
172-
(void*)CreateHeap__11daObjMBox_cFv,
173-
(void*)Create__11daObjMBox_cFv,
174-
(void*)Execute__11daObjMBox_cFPPA3_A4_f,
175-
(void*)Draw__11daObjMBox_cFv,
176-
(void*)Delete__11daObjMBox_cFv,
177-
(void*)IsDelete__16dBgS_MoveBgActorFv,
178-
(void*)ToFore__16dBgS_MoveBgActorFv,
179-
(void*)ToBack__16dBgS_MoveBgActorFv,
180-
};
38+
/* 80592FD4-80593044 0001B4 0070+00 1/0 0/0 0/0 .text CreateHeap__11daObjMBox_cFv */
39+
int daObjMBox_c::CreateHeap() {
40+
J3DModelData* objectRes = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
18141

182-
/* 80593044-805931C4 000224 0180+00 1/1 0/0 0/0 .text create__11daObjMBox_cFv */
183-
void daObjMBox_c::create() {
184-
// NONMATCHING
42+
mpModel = mDoExt_J3DModel__create(objectRes, 0x80000, 0x11000084);
43+
if (mpModel == NULL) {
44+
return 0;
45+
}
46+
47+
return 1;
18548
}
18649

187-
/* 805931C4-8059320C 0003A4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
188-
// cM3dGCyl::~cM3dGCyl() {
189-
extern "C" void __dt__8cM3dGCylFv() {
190-
// NONMATCHING
191-
}
50+
/* 80593044-805931C4 000224 0180+00 1/1 0/0 0/0 .text create__11daObjMBox_cFv */
51+
int daObjMBox_c::create() {
52+
fopAcM_SetupActor(this, daObjMBox_c);
19253

193-
/* 8059320C-80593254 0003EC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
194-
// cM3dGAab::~cM3dGAab() {
195-
extern "C" void __dt__8cM3dGAabFv() {
196-
// NONMATCHING
197-
}
54+
int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
55+
if (phase_state == cPhs_COMPLEATE_e) {
56+
phase_state = MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_TypicalRotY, 0xc40, 0);
57+
if (phase_state == cPhs_ERROR_e) {
58+
return phase_state;
59+
}
60+
}
19861

199-
/* 80593254-805932C4 000434 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
200-
// dBgS_ObjAcch::~dBgS_ObjAcch() {
201-
extern "C" void __dt__12dBgS_ObjAcchFv() {
202-
// NONMATCHING
62+
return phase_state;
20363
}
20464

20565
/* 805932C4-805932F0 0004A4 002C+00 1/0 0/0 0/0 .text Execute__11daObjMBox_cFPPA3_A4_f */
206-
void daObjMBox_c::Execute(f32 (**param_0)[3][4]) {
207-
// NONMATCHING
66+
int daObjMBox_c::Execute(f32 (**param_0)[3][4]) {
67+
*param_0 = &mBgMtx;
68+
setBaseMtx();
69+
70+
return 1;
20871
}
20972

21073
/* 805932F0-80593394 0004D0 00A4+00 1/0 0/0 0/0 .text Draw__11daObjMBox_cFv */
211-
void daObjMBox_c::Draw() {
212-
// NONMATCHING
74+
int daObjMBox_c::Draw() {
75+
g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
76+
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
77+
dComIfGd_setListBG();
78+
mDoExt_modelUpdateDL(mpModel);
79+
dComIfGd_setList();
80+
81+
return 1;
21382
}
21483

21584
/* 80593394-805933C8 000574 0034+00 1/0 0/0 0/0 .text Delete__11daObjMBox_cFv */
216-
void daObjMBox_c::Delete() {
217-
// NONMATCHING
85+
int daObjMBox_c::Delete() {
86+
dComIfG_resDelete(&mPhase, l_arcName);
87+
88+
return 1;
21889
}
21990

22091
/* 805933C8-805933F4 0005A8 002C+00 1/0 0/0 0/0 .text daObjMBox_Draw__FP11daObjMBox_c */
221-
static void daObjMBox_Draw(daObjMBox_c* param_0) {
222-
// NONMATCHING
92+
static int daObjMBox_Draw(daObjMBox_c* i_this) {
93+
return i_this->MoveBGDraw();
22394
}
22495

22596
/* 805933F4-80593414 0005D4 0020+00 1/0 0/0 0/0 .text daObjMBox_Execute__FP11daObjMBox_c
22697
*/
227-
static void daObjMBox_Execute(daObjMBox_c* param_0) {
228-
// NONMATCHING
98+
static int daObjMBox_Execute(daObjMBox_c* i_this) {
99+
return i_this->MoveBGExecute();
229100
}
230101

231102
/* 80593414-80593434 0005F4 0020+00 1/0 0/0 0/0 .text daObjMBox_Delete__FP11daObjMBox_c
232103
*/
233-
static void daObjMBox_Delete(daObjMBox_c* param_0) {
234-
// NONMATCHING
104+
static int daObjMBox_Delete(daObjMBox_c* i_this) {
105+
return i_this->MoveBGDelete();
235106
}
236107

237108
/* 80593434-80593454 000614 0020+00 1/0 0/0 0/0 .text daObjMBox_Create__FP10fopAc_ac_c */
238-
static void daObjMBox_Create(fopAc_ac_c* param_0) {
239-
// NONMATCHING
240-
}
241-
242-
/* 80593454-8059345C 000634 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
243-
static void func_80593454() {
244-
// NONMATCHING
109+
static int daObjMBox_Create(fopAc_ac_c* i_this) {
110+
fopAcM_GetID(i_this);
111+
return static_cast<daObjMBox_c*>(i_this)->create();
245112
}
246113

247-
/* 8059345C-80593464 00063C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
248-
static void func_8059345C() {
249-
// NONMATCHING
250-
}
114+
/* ############################################################################################## */
115+
/* 80593480-805934A0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMBox_Method */
116+
static actor_method_class l_daObjMBox_Method = {
117+
(process_method_func)daObjMBox_Create,
118+
(process_method_func)daObjMBox_Delete,
119+
(process_method_func)daObjMBox_Execute,
120+
0,
121+
(process_method_func)daObjMBox_Draw,
122+
};
251123

252-
/* 80593470-80593470 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
124+
/* 805934A0-805934D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MetalBox */
125+
extern actor_process_profile_definition g_profile_Obj_MetalBox = {
126+
fpcLy_CURRENT_e, // mLayerID
127+
3, // mListID
128+
fpcPi_CURRENT_e, // mListPrio
129+
PROC_Obj_MetalBox, // mProcName
130+
&g_fpcLf_Method.base, // sub_method
131+
sizeof(daObjMBox_c), // mSize
132+
0, // mSizeOther
133+
0, // mParameters
134+
&g_fopAc_Method.base, // sub_method
135+
498, // mPriority
136+
&l_daObjMBox_Method, // sub_method
137+
0x00040100, // mStatus
138+
fopAc_ACTOR_e, // mActorType
139+
fopAc_CULLBOX_CUSTOM_e, // cullType
140+
};

0 commit comments

Comments
 (0)