summaryrefslogtreecommitdiff
path: root/rel
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2023-08-27 01:39:15 -0700
committerGitHub <noreply@github.com>2023-08-27 11:39:15 +0300
commitd369e2908cbe20165b5a2aaf6875807ffcc5da6c (patch)
tree6140870345fef8d79bfe2e0e1fccca192478c243 /rel
parent73cdbf549582522f293c45462322e3ec3ed33bf6 (diff)
obj_master_sword wip, fmobj mostly done, obj_usaku OK, some BG doc (#1897)
* obj_master_sword work, fix tag_chgrestart * fmobj mostly done * some bg documentation * d_a_obj_usaku OK * remove asm
Diffstat (limited to 'rel')
-rw-r--r--rel/d/a/d_a_bg/d_a_bg.cpp2
-rw-r--r--rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp34
-rw-r--r--rel/d/a/d_a_dshutter/d_a_dshutter.cpp4
-rw-r--r--rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp6
-rw-r--r--rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp20
-rw-r--r--rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp4
-rw-r--r--rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp237
-rw-r--r--rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp4
-rw-r--r--rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp4
-rw-r--r--rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp6
-rw-r--r--rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp502
-rw-r--r--rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp4
-rw-r--r--rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp4
-rw-r--r--rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp12
-rw-r--r--rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp303
-rw-r--r--rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp2
-rw-r--r--rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp105
-rw-r--r--rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp2
18 files changed, 569 insertions, 686 deletions
diff --git a/rel/d/a/d_a_bg/d_a_bg.cpp b/rel/d/a/d_a_bg/d_a_bg.cpp
index 98b55e1e7b..8f39add93e 100644
--- a/rel/d/a/d_a_bg/d_a_bg.cpp
+++ b/rel/d/a/d_a_bg/d_a_bg.cpp
@@ -647,7 +647,7 @@ int daBg_c::createHeap() {
return 0;
}
- if (mpBgW->Set(dzb, 0x20, NULL)) {
+ if (mpBgW->Set(dzb, cBgW::GLOBAL_e, NULL)) {
return 0;
}
diff --git a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp
index e41bb33ad3..61e480cc94 100644
--- a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp
+++ b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp
@@ -508,7 +508,7 @@ asm void daBgObj_c::setAttentionInfo(fopAc_ac_c* param_0) {
void daBgObj_c::initBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
setBaseMtx();
}
@@ -516,7 +516,7 @@ void daBgObj_c::initBaseMtx() {
void daBgObj_c::setBaseMtx() {
for (int i = 0; i < 2; i++) {
if (field_0x5a8[field_0xcc8][i] != NULL) {
- field_0x5a8[field_0xcc8][i]->i_setBaseTRMtx(field_0x56c);
+ field_0x5a8[field_0xcc8][i]->i_setBaseTRMtx(mBgMtx);
}
}
}
@@ -584,8 +584,8 @@ int daBgObj_c::CreateInitType0() {
int daBgObj_c::CreateInitType1() {
if (i_fopAcM_isSwitch(this, daBgObj_prm::getSwBit(this))) {
field_0xcc8 = 1;
- release(field_0x568);
- regist(mpBgW);
+ release(mpBgW);
+ regist(mpBgW2);
mAction = 3;
} else {
field_0xcc8 = 0;
@@ -613,8 +613,8 @@ int daBgObj_c::CreateInitType1() {
mEventIdx = i_dComIfGp_getEventManager().getEventIdx(this, daBgObj_prm::getEvId(this));
- if (mpBgW != NULL) {
- mpBgW->Move();
+ if (mpBgW2 != NULL) {
+ mpBgW2->Move();
}
initAtt();
@@ -801,9 +801,9 @@ int daBgObj_c::CreateHeapType1() {
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), getDzbName(1));
if (dzb != NULL) {
- mpBgW = new dBgW();
- if (mpBgW == NULL || mpBgW->Set(dzb, 1, &field_0x56c)) {
- mpBgW = NULL;
+ mpBgW2 = new dBgW();
+ if (mpBgW2 == NULL || mpBgW2->Set(dzb, cBgW::MOVE_BG_e, &mBgMtx)) {
+ mpBgW2 = NULL;
return 0;
}
}
@@ -1270,8 +1270,8 @@ int daBgObj_c::actionOrder() {
if (!i_fopAcM_isSwitch(this, daBgObj_prm::getSwBit(this)) || field_0xd00 != 0 ||
field_0xcc8 == 0)
{
- release(field_0x568);
- regist(mpBgW);
+ release(mpBgW);
+ regist(mpBgW2);
field_0xcc8 = 1;
settingCullSizeBoxForCull(field_0xcc8);
@@ -1323,21 +1323,21 @@ int daBgObj_c::ExecuteType0() {
if (arg0 == 0xFF) {
if (i_fopAcM_isSwitch(this, swBit)) {
if (field_0xcc8 == 1) {
- regist(field_0x568);
+ regist(mpBgW);
field_0xcc8 = 0;
}
} else if (field_0xcc8 == 0) {
- release(field_0x568);
+ release(mpBgW);
field_0xcc8 = 1;
}
} else if (arg0 == 0) {
if (i_fopAcM_isSwitch(this, swBit)) {
if (field_0xcc8 == 0) {
- release(field_0x568);
+ release(mpBgW);
field_0xcc8 = 1;
}
} else if (field_0xcc8 == 1) {
- regist(field_0x568);
+ regist(mpBgW);
field_0xcc8 = 0;
}
}
@@ -1374,7 +1374,7 @@ int daBgObj_c::Execute(f32 (**param_0)[3][4]) {
}
}
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
setBaseMtx();
return 1;
}
@@ -1439,7 +1439,7 @@ void daBgObj_c::indirectProc(J3DModel* i_model) {
/* 8045C2E8-8045C330 002D08 0048+00 1/0 0/0 0/0 .text Delete__9daBgObj_cFv */
int daBgObj_c::Delete() {
- release(mpBgW);
+ release(mpBgW2);
dComIfG_resDelete(&mPhase, daSetBgObj_c::getArcName(this));
return 1;
}
diff --git a/rel/d/a/d_a_dshutter/d_a_dshutter.cpp b/rel/d/a/d_a_dshutter/d_a_dshutter.cpp
index f5ee70f310..a2d4590b1a 100644
--- a/rel/d/a/d_a_dshutter/d_a_dshutter.cpp
+++ b/rel/d/a/d_a_dshutter/d_a_dshutter.cpp
@@ -179,7 +179,7 @@ int daDsh_c::Draw() {
int daDsh_c::Execute(f32 (**param_0)[3][4]) {
callExecute();
setMtx();
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
func_80467DF8(&mTiltTime);
return 1;
}
@@ -190,7 +190,7 @@ void daDsh_c::setMtx() {
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 80467708-8046772C 0002E8 0024+00 5/5 0/0 0/0 .text setAction__7daDsh_cFPQ27daDsh_c8action_c */
diff --git a/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp b/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp
index 8c86358bc5..0d6d315445 100644
--- a/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp
+++ b/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp
@@ -15,7 +15,7 @@ void daIzumiGate_c::initBaseMtx() {
/* 808490B8-8084910C 000098 0054+00 2/2 0/0 0/0 .text setBaseMtx__13daIzumiGate_cFv */
void daIzumiGate_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
- PSMTXCopy(mDoMtx_stack_c::now, field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::now, mBgMtx);
PSMTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx);
}
@@ -55,7 +55,7 @@ int daIzumiGate_c::create() {
if (phase == cPhs_ERROR_e) {
return phase;
}
- fopAcM_SetMtx(this, field_0x56c);
+ fopAcM_SetMtx(this, mBgMtx);
}
return phase;
}
@@ -80,7 +80,7 @@ int daIzumiGate_c::Create() {
/* 808492FC-80849328 0002DC 002C+00 1/0 0/0 0/0 .text Execute__13daIzumiGate_cFPPA3_A4_f
*/
int daIzumiGate_c::Execute(Mtx** i_mtx) {
- *i_mtx = &field_0x56c;
+ *i_mtx = &mBgMtx;
setBaseMtx();
return 1;
}
diff --git a/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp b/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp
index 7a59245dda..8945faa781 100644
--- a/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp
+++ b/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp
@@ -18,7 +18,7 @@ void daObjBoard_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::scaleM(mScale);
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 8057BE20-8057BE24 -00001 0004+00 2/2 0/0 0/0 .data l_arcName */
@@ -102,12 +102,12 @@ int daObjBoard_c::Execute(Mtx** param_0) {
case 7:
case 15:
if (i_fopAcM_isSwitch(this, getSwNo())) {
- if (!field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Regist(field_0x568, this);
+ if (!mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Regist(mpBgW, this);
}
} else {
- if (field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Release(field_0x568);
+ if (mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
}
}
break;
@@ -117,18 +117,18 @@ int daObjBoard_c::Execute(Mtx** param_0) {
case 6:
case 8:
if (i_fopAcM_isSwitch(this, getSwNo())) {
- if (field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Release(field_0x568);
+ if (mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
}
} else {
- if (!field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Regist(field_0x568, this);
+ if (!mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Regist(mpBgW, this);
}
}
break;
}
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
return 1;
}
diff --git a/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp b/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp
index 1230ef144f..4573028769 100644
--- a/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp
+++ b/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp
@@ -12,7 +12,7 @@ void daCowdoor_c::setBaseMtx() {
PSMTXTrans(mDoMtx_stack_c::now, current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
PSMTXCopy(mDoMtx_stack_c::now, field_0x5a8->mBaseTransformMtx);
- PSMTXCopy(mDoMtx_stack_c::now, field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::now, mBgMtx);
}
/* 80BCC86C-80BCC8C4 0000EC 0058+00 1/0 0/0 0/0 .text Create__11daCowdoor_cFv */
@@ -57,7 +57,7 @@ int daCowdoor_c::create() {
/* 80BCCA1C-80BCCA48 00029C 002C+00 1/0 0/0 0/0 .text Execute__11daCowdoor_cFPPA3_A4_f */
int daCowdoor_c::Execute(f32 (**param_0)[3][4]) {
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
setBaseMtx();
return 1;
}
diff --git a/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp b/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp
index 5da07ada27..99e691881e 100644
--- a/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp
+++ b/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp
@@ -4,75 +4,14 @@
//
#include "rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h"
+#include "JSystem/JKernel/JKRHeap.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/bg/d_bg_w.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/d_procname.h"
#include "dol2asm.h"
//
-// Types:
-//
-
-struct request_of_phase_process_class {};
-
-struct obj_fmobj_class {};
-
-struct mDoMtx_stack_c {
- /* 8000CD9C */ void transM(f32, f32, f32);
-
- static u8 now[48];
-};
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
-};
-
-struct dSv_memBit_c {
- /* 80034934 */ void isDungeonItem(int) const;
-};
-
-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 dBgW_Base {};
-
-struct dBgW {
- /* 8007B970 */ dBgW();
- /* 8007B9C0 */ void Move();
-};
-
-struct dBgS {
- /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
-};
-
-struct csXyz {};
-
-struct cBgD_t {};
-
-struct cBgW {
- /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
-};
-
-struct cBgS_PolyInfo {};
-
-struct cBgS {
- /* 80074250 */ void Release(dBgW_Base*);
-};
-
-struct J3DModel {};
-
-//
// Forward References:
//
@@ -83,7 +22,6 @@ extern "C" static void daObj_Fmobj_Delete__FP15obj_fmobj_class();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" static void daObj_Fmobj_Create__FP10fopAc_ac_c();
extern "C" extern char const* const d_a_obj_fmobj__stringBase0;
-extern "C" extern void* g_profile_OBJ_FMOBJ[12];
//
// External References:
@@ -109,71 +47,72 @@ extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void cM_rndF__Ff();
extern "C" void* __nw__FUl();
-extern "C" void PSMTXCopy();
-extern "C" void PSMTXTrans();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
-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:
//
/* 8057CBD8-8057CC44 000078 006C+00 1/0 0/0 0/0 .text daObj_Fmobj_Draw__FP15obj_fmobj_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Fmobj_Draw(obj_fmobj_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s"
+static int daObj_Fmobj_Draw(obj_fmobj_class* i_this) {
+ J3DModel* model_p = i_this->mpModel;
+
+ g_env_light.settingTevStruct(0x40, &i_this->current.pos, &i_this->mTevStr);
+ g_env_light.setLightTevColorType_MAJI(model_p, &i_this->mTevStr);
+ mDoExt_modelUpdateDL(model_p);
+ return 1;
}
-#pragma pop
/* 8057CC44-8057CC84 0000E4 0040+00 1/0 0/0 0/0 .text daObj_Fmobj_Execute__FP15obj_fmobj_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Fmobj_Execute(obj_fmobj_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s"
+static int daObj_Fmobj_Execute(obj_fmobj_class* i_this) {
+ i_this->field_0x578++;
+
+ for (int i = 0; i < 2; i++) {
+ if (i_this->field_0x57e[i] != 0) {
+ i_this->field_0x57e[i]--;
+ }
+ }
+
+ return 1;
}
-#pragma pop
/* 8057CC84-8057CC8C 000124 0008+00 1/0 0/0 0/0 .text daObj_Fmobj_IsDelete__FP15obj_fmobj_class */
-static bool daObj_Fmobj_IsDelete(obj_fmobj_class* param_0) {
- return true;
+static int daObj_Fmobj_IsDelete(obj_fmobj_class* i_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 8057CF74-8057CF74 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8057CF74 = "Obj_Fmobj";
-#pragma pop
-
/* 8057CC8C-8057CCDC 00012C 0050+00 1/0 0/0 0/0 .text daObj_Fmobj_Delete__FP15obj_fmobj_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Fmobj_Delete(obj_fmobj_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s"
+static int daObj_Fmobj_Delete(obj_fmobj_class* i_this) {
+ dComIfG_resDelete(&i_this->mPhase, "Obj_Fmobj");
+ dComIfG_Bgsp().Release(i_this->mpBgW);
+ return 1;
}
-#pragma pop
/* 8057CCDC-8057CDE0 00017C 0104+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void useHeapInit(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s"
+static int useHeapInit(fopAc_ac_c* i_this) {
+ obj_fmobj_class* a_this = (obj_fmobj_class*)i_this;
+
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_Fmobj", 4);
+ a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (a_this->mpModel == NULL) {
+ return 0;
+ }
+
+ a_this->mpBgW = new dBgW();
+ if (a_this->mpBgW == NULL) {
+ return 0;
+ }
+
+ cBgD_t* pdzb = (cBgD_t*)dComIfG_getObjectRes("Obj_Fmobj", 7);
+ if (a_this->mpBgW->Set(pdzb, cBgW::MOVE_BG_e, &a_this->mBgMtx) == 1) {
+ return 0;
+ }
+
+ a_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
+ return 1;
}
-#pragma pop
/* ############################################################################################## */
/* 8057CF68-8057CF6C 000000 0004+00 1/1 0/0 0/0 .rodata @3743 */
@@ -201,36 +140,76 @@ COMPILER_STRIP_GATE(0x8057CF70, &lit_3745);
/* 8057CDE0-8057CF60 000280 0180+00 1/0 0/0 0/0 .text daObj_Fmobj_Create__FP10fopAc_ac_c
*/
+// reg alloc
+#ifdef NONMATCHING
+static int daObj_Fmobj_Create(fopAc_ac_c* i_this) {
+ obj_fmobj_class* a_this = (obj_fmobj_class*)i_this;
+ fopAcM_SetupActor(a_this, obj_fmobj_class);
+
+ int phase = dComIfG_resLoad(&a_this->mPhase, "Obj_Fmobj");
+ if (phase == cPhs_COMPLEATE_e) {
+ a_this->field_0x570 = fopAcM_GetParam(a_this) & 0xFF;
+
+ if (dComIfGs_isStageBossEnemy()) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x4B000)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) {
+ return cPhs_ERROR_e;
+ }
+
+ fopAcM_SetMtx(a_this, a_this->mpModel->getBaseTRMtx());
+ a_this->shape_angle.y = cM_rndF(65536.0f);
+
+ mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y, a_this->current.pos.z);
+ mDoMtx_stack_c::YrotM(a_this->shape_angle.y);
+ a_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
+
+ mDoMtx_stack_c::transM(0.0f, -30.0f, 0.0f);
+ PSMTXCopy(mDoMtx_stack_c::get(), a_this->mDzbMtx);
+
+ a_this->mpBgW->Move();
+ }
+
+ return phase;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void daObj_Fmobj_Create(fopAc_ac_c* param_0) {
+static asm int daObj_Fmobj_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Create__FP10fopAc_ac_c.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 8057CF80-8057CFA0 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Fmobj_Method */
-SECTION_DATA static void* l_daObj_Fmobj_Method[8] = {
- (void*)daObj_Fmobj_Create__FP10fopAc_ac_c,
- (void*)daObj_Fmobj_Delete__FP15obj_fmobj_class,
- (void*)daObj_Fmobj_Execute__FP15obj_fmobj_class,
- (void*)daObj_Fmobj_IsDelete__FP15obj_fmobj_class,
- (void*)daObj_Fmobj_Draw__FP15obj_fmobj_class,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daObj_Fmobj_Method = {
+ (process_method_func)daObj_Fmobj_Create, (process_method_func)daObj_Fmobj_Delete,
+ (process_method_func)daObj_Fmobj_Execute, (process_method_func)daObj_Fmobj_IsDelete,
+ (process_method_func)daObj_Fmobj_Draw,
};
/* 8057CFA0-8057CFD0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_FMOBJ */
-SECTION_DATA extern void* g_profile_OBJ_FMOBJ[12] = {
- (void*)0xFFFFFFFD, (void*)0x0003FFFD,
- (void*)0x00260000, (void*)&g_fpcLf_Method,
- (void*)0x000005BC, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x00280000, (void*)&l_daObj_Fmobj_Method,
- (void*)0x00040100, (void*)0x00070000,
+extern actor_process_profile_definition g_profile_OBJ_FMOBJ = {
+ -3,
+ 3,
+ -3,
+ PROC_OBJ_FMOBJ,
+ &g_fpcLf_Method.mBase,
+ sizeof(obj_fmobj_class),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 40,
+ &l_daObj_Fmobj_Method,
+ 0x40100,
+ 0,
+ 7,
};
-
-/* 8057CF74-8057CF74 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp b/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp
index 122bd2635c..4ae7f3c6e6 100644
--- a/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp
+++ b/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp
@@ -66,8 +66,8 @@ static const Vec l_cull_box[4] = {
int daObjKJgjs_c::Create() {
fopAcM_SetMtx(this, mMtx[1]);
PSMTXCopy(mMtx[1], mpModel->mBaseTransformMtx);
- dBgW* mpBgW = field_0x568;
- mpBgW->field_0x91 |= 4;
+ dBgW* bgw_p = mpBgW;
+ bgw_p->field_0x91 |= 4;
if (!field_0x60c) {
fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z,
l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z);
diff --git a/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp b/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp
index 7d8227d641..6a682af96d 100644
--- a/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp
+++ b/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp
@@ -20,7 +20,7 @@ void daObjLv4Floor_c::setBaseMtx() {
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 80C678B0-80C678D4 000130 0024+00 1/0 0/0 0/0 .text Create__15daObjLv4Floor_cFv */
@@ -84,7 +84,7 @@ int daObjLv4Floor_c::create1st() {
/* 80C679E4-80C67A30 000264 004C+00 1/0 0/0 0/0 .text Execute__15daObjLv4Floor_cFPPA3_A4_f */
int daObjLv4Floor_c::Execute(Mtx** param_0) {
action();
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
setBaseMtx();
return 1;
diff --git a/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp b/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp
index b062c38289..029ab3c7d2 100644
--- a/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp
+++ b/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp
@@ -424,7 +424,7 @@ void daMagLiftRot_c::setBaseMtx() {
mpModel->setBaseScale(cXyz(1.0f, 1.0f, 1.0f));
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
#else
#pragma push
@@ -547,8 +547,8 @@ int daMagLiftRot_c::create() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
- field_0x568->onStickWall();
- field_0x568->onStickRoof();
+ mpBgW->onStickWall();
+ mpBgW->onStickRoof();
field_0x5e1 = fopAcM_GetParam(this) & 0xFF;
field_0x5e2 = -0x8000;
diff --git a/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp b/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp
index 014ee8f4d4..c51e50774d 100644
--- a/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp
+++ b/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp
@@ -4,184 +4,63 @@
//
#include "rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h"
+#include "JSystem/JKernel/JKRHeap.h"
+#include "d/a/d_a_player.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/d_procname.h"
+#include "d/meter/d_meter2_info.h"
#include "dol2asm.h"
//
// Types:
//
-struct request_of_phase_process_class {};
+class daObjMasterSword_c;
+typedef void (daObjMasterSword_c::*actionFunc)();
-struct cXyz {};
+class daObjMasterSword_c : public fopAc_ac_c {
+public:
+ enum Mode_e {
+ MODE_0_e,
+ };
-struct mDoMtx_stack_c {
- /* 8000CD64 */ void transS(cXyz const&);
-
- static u8 now[48];
-};
-
-struct J3DAnmTextureSRTKey {};
-
-struct J3DAnmTevRegKey {};
-
-struct J3DMaterialTable {
- /* 8032F7B4 */ void removeTexMtxAnimator(J3DAnmTextureSRTKey*);
- /* 8032F880 */ void removeTevRegAnimator(J3DAnmTevRegKey*);
-};
-
-struct mDoExt_btkAnm {
- /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16);
- /* 8000D6D8 */ void entry(J3DMaterialTable*, f32);
-};
-
-struct mDoExt_brkAnm {
- /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
- /* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
-};
-
-struct mDoExt_baseAnm {
- /* 8000D428 */ void play();
-};
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
- /* 80018C8C */ ~fopAc_ac_c();
-};
-
-struct daObjMasterSword_c {
/* 80C90AF8 */ void initWait();
/* 80C90B50 */ void executeWait();
- /* 80C90C50 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80C90C70 */ void CreateHeap();
- /* 80C90DB8 */ void create();
+ /* 80C90C50 */ static int createHeapCallBack(fopAc_ac_c* i_this);
+ /* 80C90C70 */ int CreateHeap();
+ /* 80C90DB8 */ int create();
/* 80C90F6C */ void create_init();
/* 80C91448 */ ~daObjMasterSword_c();
- /* 80C91714 */ void draw();
-
- static f32 const mAttr;
- static u8 ActionTable[24];
-};
-
-struct dSv_player_get_item_c {
- /* 80033E60 */ void onFirstBit(u8);
-};
-
-struct dSv_event_tmp_flag_c {
- static u8 const tempBitLabels[370 + 2 /* padding */];
-};
-
-struct dSv_event_flag_c {
- static u8 saveBitLabels[1644 + 4 /* padding */];
-};
-
-struct dSv_event_c {
- /* 8003498C */ void onEventBit(u16);
- /* 800349BC */ void isEventBit(u16) const;
-};
-
-struct dKy_tevstr_c {};
-
-struct J3DModelData {};
-
-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 dDlst_shadowControl_c {
- static u8 mSimpleTexObj[32];
-};
-
-struct dCcD_Stts {
- /* 80083860 */ void Init(int, int, fopAc_ac_c*);
-};
-
-struct dCcD_SrcCyl {};
-
-struct dCcD_GStts {
- /* 80083760 */ dCcD_GStts();
- /* 80C9137C */ ~dCcD_GStts();
-};
-
-struct dCcD_GObjInf {
- /* 80083A28 */ dCcD_GObjInf();
- /* 800840E4 */ ~dCcD_GObjInf();
-};
-
-struct dCcD_Cyl {
- /* 800848B4 */ void Set(dCcD_SrcCyl const&);
-};
+ /* 80C91714 */ int draw();
-struct dBgS_PolyPassChk {
- /* 80078E68 */ void SetObj();
-};
+ inline void initCollision();
+ inline void setCollision();
+ inline void initBaseMtx();
+ inline void setAction(Mode_e i_mode);
+ inline void callInit();
+ inline void callExecute();
+ inline int execute();
-struct dBgS_ObjAcch {
- /* 80C9120C */ ~dBgS_ObjAcch();
-};
-
-struct dBgS_AcchCir {
- /* 80075EAC */ dBgS_AcchCir();
- /* 80075F58 */ void SetWall(f32, f32);
- /* 80C9127C */ ~dBgS_AcchCir();
-};
+ f32 attr() const { return mAttr; }
-struct csXyz {};
+ u8 getEventID() { return (fopAcM_GetParam(this) >> 0x10) & 0xFF; }
+ u16 getFlagNo() { return fopAcM_GetParam(this) & 0xFFFF; }
-struct dBgS {};
-
-struct dBgS_Acch {
- /* 80075F94 */ ~dBgS_Acch();
- /* 800760A0 */ dBgS_Acch();
- /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*);
- /* 80076AAC */ void CrrPos(dBgS&);
-};
-
-struct dAttention_c {
- /* 80070880 */ void getActionBtnB();
- /* 80073734 */ void ActionTarget(s32);
-};
-
-struct cM3dGCyl {
- /* 80C912EC */ ~cM3dGCyl();
-};
-
-struct cM3dGCir {
- /* 8026EF18 */ ~cM3dGCir();
-};
-
-struct cM3dGAab {
- /* 80C91334 */ ~cM3dGAab();
-};
-
-struct cCcD_Obj {};
-
-struct cCcS {
- /* 80264BA8 */ void Set(cCcD_Obj*);
-};
-
-struct cCcD_GStts {
- /* 80C9189C */ ~cCcD_GStts();
-};
-
-struct cBgS_PolyInfo {
- /* 80268074 */ cBgS_PolyInfo();
- /* 802680B0 */ ~cBgS_PolyInfo();
-};
-
-struct _GXTexObj {};
-
-struct J3DModel {};
+ static f32 const mAttr;
+ // static actionFunc ActionTable[];
+ static u8 ActionTable[24];
-struct J3DFrameCtrl {
- /* 803283FC */ void init(s16);
- /* 80C913D8 */ ~J3DFrameCtrl();
+ /* 0x568 */ J3DModel* mpModel;
+ /* 0x56C */ request_of_phase_process_class mPhase;
+ /* 0x574 */ mDoExt_btkAnm mBtk;
+ /* 0x58C */ mDoExt_brkAnm mBrk;
+ /* 0x5A4 */ dCcD_Stts mCcStts;
+ /* 0x5E0 */ dCcD_Cyl mCyl;
+ /* 0x71C */ actionFunc* mActionFunc;
+ /* 0x720 */ Mode_e mMode;
+ /* 0x724 */ u32 mShadowKey;
+ /* 0x728 */ cBgS_PolyInfo field_0x728;
+ /* 0x738 */ f32 field_0x738;
};
//
@@ -269,7 +148,6 @@ extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
-extern "C" void PSMTXCopy();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
@@ -280,8 +158,6 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
-extern "C" extern void* g_fopAc_Method[8];
-extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
@@ -289,10 +165,7 @@ 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];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" extern u8 g_env_light[4880];
-extern "C" extern u8 j3dSys[284];
extern "C" extern u8 data_80C91AD0[4];
//
@@ -300,36 +173,39 @@ extern "C" extern u8 data_80C91AD0[4];
//
/* 80C90AF8-80C90B50 000078 0058+00 1/0 0/0 0/0 .text initWait__18daObjMasterSword_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjMasterSword_c::initWait() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s"
+void daObjMasterSword_c::initWait() {
+ cLib_onBit(mAttentionInfo.mFlags, 0x10);
+ current.pos = orig.pos;
+ current.angle = orig.angle;
+ shape_angle = orig.angle;
}
-#pragma pop
/* 80C90B50-80C90C50 0000D0 0100+00 1/0 0/0 0/0 .text executeWait__18daObjMasterSword_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjMasterSword_c::executeWait() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s"
+void daObjMasterSword_c::executeWait() {
+ if (daPy_getPlayerActorClass()->checkPriActorOwn(this)) {
+ for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) {
+ if (dComIfGp_getAttention().ActionTarget(i) == this) {
+ if (dComIfGp_getAttention().getActionBtnB() != NULL &&
+ dComIfGp_getAttention().getActionBtnB()->mType == 4)
+ {
+ dComIfGp_setDoStatusForce(8, 0);
+ }
+ }
+ }
+ }
+
+ if (fopAcM_checkCarryNow(this)) {
+ dMeter2Info_setCloth(WEAR_KOKIRI, false);
+ fopAcM_orderMapToolEvent(this, getEventID(), 0xFF, 0xFFFF, 1, 0);
+ }
}
-#pragma pop
/* 80C90C50-80C90C70 0001D0 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjMasterSword_c::createHeapCallBack(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s"
+int daObjMasterSword_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ return static_cast<daObjMasterSword_c*>(i_this)->CreateHeap();
}
-#pragma pop
/* ############################################################################################## */
/* 80C91940-80C91944 000000 0004+00 2/2 0/0 0/0 .rodata mAttr__18daObjMasterSword_c */
@@ -374,28 +250,34 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
#pragma pop
/* 80C9199C-80C919A0 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_master_sword__stringBase0;
+SECTION_DATA static char* l_arcName = "MstrSword";
/* 80C90C70-80C90D98 0001F0 0128+00 1/1 0/0 0/0 .text CreateHeap__18daObjMasterSword_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjMasterSword_c::CreateHeap() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s"
+int daObjMasterSword_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 5);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mpModel == NULL) {
+ return 0;
+ }
+
+ J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 11);
+ if (!mBtk.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 8);
+ if (!mBrk.init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ return 1;
}
-#pragma pop
/* 80C90D98-80C90DB8 000318 0020+00 1/0 0/0 0/0 .text daObjMasterSword_Create__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjMasterSword_Create(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s"
+static int daObjMasterSword_Create(fopAc_ac_c* i_this) {
+ return static_cast<daObjMasterSword_c*>(i_this)->create();
}
-#pragma pop
/* ############################################################################################## */
/* 80C919A0-80C919AC -00001 000C+00 0/1 0/0 0/0 .data @3655 */
@@ -425,6 +307,10 @@ SECTION_DATA u8 daObjMasterSword_c::ActionTable[24] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
+/* static actionFunc daObjMasterSword_c::ActionTable[] = {
+ &daObjMasterSword_c::initWait, &daObjMasterSword_c::executeWait,
+}; */
+
/* 80C919D0-80C91A14 000054 0044+00 1/1 0/0 0/0 .data
* ccCylSrc$localstatic3$initCollision__18daObjMasterSword_cFv */
SECTION_DATA static u8 data_80C919D0[68] = {
@@ -513,14 +399,36 @@ SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
};
/* 80C90DB8-80C90F6C 000338 01B4+00 1/1 0/0 0/0 .text create__18daObjMasterSword_cFv */
+// matches with weak funcs
+#ifdef NONMATCHING
+int daObjMasterSword_c::create() {
+ fopAcM_SetupActor(this, daObjMasterSword_c);
+
+ if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[getFlagNo()])) {
+ return cPhs_ERROR_e;
+ }
+
+ int phase = dComIfG_resLoad(&mPhase, l_arcName);
+ if (phase == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, daObjMasterSword_c::createHeapCallBack, 0x1830)) {
+ return cPhs_ERROR_e;
+ }
+
+ create_init();
+ }
+
+ return phase;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daObjMasterSword_c::create() {
+asm int daObjMasterSword_c::create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/create__18daObjMasterSword_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 80C91954-80C91958 000014 0004+00 0/1 0/0 0/0 .rodata @3861 */
@@ -544,8 +452,78 @@ SECTION_RODATA static f32 const lit_3863 = 30.0f;
COMPILER_STRIP_GATE(0x80C9195C, &lit_3863);
#pragma pop
+void daObjMasterSword_c::initCollision() {
+ static dCcD_SrcCyl ccCylSrc = {
+ {
+ {0, {{0, 0, 0}, {0, 0}, 0x79}}, // mObj
+ {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjAt
+ {dCcD_SE_NONE, 0, 0, 0, 4}, // mGObjTg
+ {0}, // mGObjCo
+ }, // mObjInf
+ {
+ {current.pos.x, current.pos.y, current.pos.z}, // mCenter
+ 18.0f, // mRadius
+ 180.0f // mHeight
+ } // mCyl
+ };
+
+ mCcStts.Init(0xFF, 0xFF, this);
+ mCyl.Set(ccCylSrc);
+ mCyl.SetStts(&mCcStts);
+}
+
+void daObjMasterSword_c::initBaseMtx() {
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+
+ Vec scale = {attr(), attr(), attr()};
+ mpModel->setBaseScale(scale);
+
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+
+ mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
+}
+
+void daObjMasterSword_c::callInit() {
+ (this->**mActionFunc)();
+}
+
+void daObjMasterSword_c::setAction(daObjMasterSword_c::Mode_e i_mode) {
+ mMode = i_mode;
+ // mActionFunc = &ActionTable[mMode];
+ callInit();
+}
+
/* 80C90F6C-80C9120C 0004EC 02A0+00 1/1 0/0 0/0 .text create_init__18daObjMasterSword_cFv
*/
+// matches, but weak function emission is hella weird. cant be linked til its fixed
+#ifdef NONMATCHING
+void daObjMasterSword_c::create_init() {
+ fopAcM_setCullSizeBox2(this, mpModel->getModelData());
+ initCollision();
+ initBaseMtx();
+
+ fopAcM_OnCarryType(this, fopAcM_CARRY_UNK_30);
+ cLib_onBit(mAttentionInfo.mFlags, 0x10);
+ mAttentionInfo.field_0x0[4] = 74;
+ mAttentionInfo.mPosition = current.pos;
+ mAttentionInfo.mPosition.y += 100.0f;
+ mEyePos = mAttentionInfo.mPosition;
+
+ dBgS_AcchCir cir_check;
+ dBgS_ObjAcch obj_check;
+
+ cir_check.SetWall(10.0f, 30.0f);
+ obj_check.Set(&fopAcM_GetPosition_p(this), &fopAcM_GetOldPosition_p(this), this, 1, &cir_check,
+ &fopAcM_GetSpeed_p(this), NULL, NULL);
+ obj_check.CrrPos(dComIfG_Bgsp());
+
+ field_0x738 = obj_check.GetGroundH();
+ field_0x728 = obj_check.m_gnd;
+
+ setAction(MODE_0_e);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -554,12 +532,14 @@ asm void daObjMasterSword_c::create_init() {
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/create_init__18daObjMasterSword_cFv.s"
}
#pragma pop
+#endif
/* 80C9120C-80C9127C 00078C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dBgS_ObjAcch::~dBgS_ObjAcch() {
+// asm dBgS_ObjAcch::~dBgS_ObjAcch() {
+extern "C" asm void __dt__12dBgS_ObjAcchFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12dBgS_ObjAcchFv.s"
}
@@ -569,7 +549,8 @@ asm dBgS_ObjAcch::~dBgS_ObjAcch() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dBgS_AcchCir::~dBgS_AcchCir() {
+// asm dBgS_AcchCir::~dBgS_AcchCir() {
+extern "C" asm void __dt__12dBgS_AcchCirFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12dBgS_AcchCirFv.s"
}
@@ -579,7 +560,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cM3dGCyl::~cM3dGCyl() {
+// asm cM3dGCyl::~cM3dGCyl() {
+extern "C" asm void __dt__8cM3dGCylFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__8cM3dGCylFv.s"
}
@@ -589,7 +571,8 @@ asm cM3dGCyl::~cM3dGCyl() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cM3dGAab::~cM3dGAab() {
+// asm cM3dGAab::~cM3dGAab() {
+extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__8cM3dGAabFv.s"
}
@@ -599,7 +582,8 @@ asm cM3dGAab::~cM3dGAab() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dCcD_GStts::~dCcD_GStts() {
+// asm dCcD_GStts::~dCcD_GStts() {
+extern "C" asm void __dt__10dCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__10dCcD_GSttsFv.s"
}
@@ -609,7 +593,8 @@ asm dCcD_GStts::~dCcD_GStts() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm J3DFrameCtrl::~J3DFrameCtrl() {
+// asm J3DFrameCtrl::~J3DFrameCtrl() {
+extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12J3DFrameCtrlFv.s"
}
@@ -617,14 +602,10 @@ asm J3DFrameCtrl::~J3DFrameCtrl() {
/* 80C91420-80C91448 0009A0 0028+00 1/0 0/0 0/0 .text
* daObjMasterSword_Delete__FP18daObjMasterSword_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjMasterSword_Delete(daObjMasterSword_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s"
+static int daObjMasterSword_Delete(daObjMasterSword_c* i_this) {
+ i_this->~daObjMasterSword_c();
+ return 1;
}
-#pragma pop
/* 80C91448-80C915E8 0009C8 01A0+00 1/1 0/0 0/0 .text __dt__18daObjMasterSword_cFv */
#pragma push
@@ -643,27 +624,45 @@ SECTION_RODATA static u8 const lit_4030[8] = {
};
COMPILER_STRIP_GATE(0x80C91960, &lit_4030);
+void daObjMasterSword_c::callExecute() {
+ (this->*mActionFunc[1])();
+}
+
+void daObjMasterSword_c::setCollision() {
+ dComIfG_Ccsp()->Set(&mCyl);
+}
+
+int daObjMasterSword_c::execute() {
+ callExecute();
+ setCollision();
+
+ mBtk.play();
+ mBrk.play();
+
+ if (dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[73])) {
+ dComIfGs_onItemFirstBit(MASTER_SWORD);
+ dMeter2Info_setSword(MASTER_SWORD, false);
+ dComIfGs_setSelectEquipSword(MASTER_SWORD);
+
+ i_dComIfGp_setItemLifeCount(dComIfGs_getMaxLife(), 0);
+ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[getFlagNo()]);
+ fopAcM_delete(this);
+ }
+
+ return 1;
+}
+
/* 80C915E8-80C916F4 000B68 010C+00 1/0 0/0 0/0 .text
* daObjMasterSword_Execute__FP18daObjMasterSword_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjMasterSword_Execute(daObjMasterSword_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s"
+static int daObjMasterSword_Execute(daObjMasterSword_c* i_this) {
+ return i_this->execute();
}
-#pragma pop
/* 80C916F4-80C91714 000C74 0020+00 1/0 0/0 0/0 .text
* daObjMasterSword_Draw__FP18daObjMasterSword_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjMasterSword_Draw(daObjMasterSword_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s"
+static int daObjMasterSword_Draw(daObjMasterSword_c* i_this) {
+ return i_this->draw();
}
-#pragma pop
/* ############################################################################################## */
/* 80C91968-80C9196C 000028 0004+00 0/1 0/0 0/0 .rodata @4091 */
@@ -681,26 +680,56 @@ COMPILER_STRIP_GATE(0x80C9196C, &lit_4092);
#pragma pop
/* 80C91714-80C91894 000C94 0180+00 1/1 0/0 0/0 .text draw__18daObjMasterSword_cFv */
+// weird cXyz stuff
+#ifdef NONMATCHING
+int daObjMasterSword_c::draw() {
+ if (dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[73])) {
+ return 1;
+ }
+
+ J3DModelData* modelData = mpModel->getModelData();
+ g_env_light.settingTevStruct(0x10, &current.pos, &mTevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
+
+ dComIfGd_setListBG();
+ mBtk.entry(modelData);
+ mBrk.entry(modelData);
+ mDoExt_modelUpdateDL(mpModel);
+
+ mBtk.remove(modelData);
+ mBrk.remove(modelData);
+ dComIfGd_setList();
+
+ cXyz sp14, sp8 = cXyz(current.pos.x, current.pos.y + 50.0f, current.pos.z);
+ mShadowKey =
+ dComIfGd_setShadow(mShadowKey, 1, mpModel, &sp14, 200.0f, 10.0f, current.pos.y, field_0x738,
+ field_0x728, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daObjMasterSword_c::draw() {
+asm int daObjMasterSword_c::draw() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/draw__18daObjMasterSword_cFv.s"
}
#pragma pop
+#endif
/* 80C91894-80C9189C 000E14 0008+00 1/0 0/0 0/0 .text
* daObjMasterSword_IsDelete__FP18daObjMasterSword_c */
-static bool daObjMasterSword_IsDelete(daObjMasterSword_c* param_0) {
- return true;
+static int daObjMasterSword_IsDelete(daObjMasterSword_c* param_0) {
+ return 1;
}
/* 80C9189C-80C918E4 000E1C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cCcD_GStts::~cCcD_GStts() {
+// asm cCcD_GStts::~cCcD_GStts() {
+extern "C" asm void __dt__10cCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__10cCcD_GSttsFv.s"
}
@@ -710,8 +739,7 @@ asm cCcD_GStts::~cCcD_GStts() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void __sinit_d_a_obj_master_sword_cpp() {
- nofralloc
+asm void __sinit_d_a_obj_master_sword_cpp(){nofralloc
#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__sinit_d_a_obj_master_sword_cpp.s"
}
#pragma pop
diff --git a/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp b/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp
index b5405e580a..52ff0f186e 100644
--- a/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp
+++ b/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp
@@ -58,7 +58,7 @@ void daObjMGate_c::setBaseMtx() {
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::ZXYrotM(mGateAngle.x, mGateAngle.y, mGateAngle.z);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
if (mpKeyModel != NULL) {
cXyz key_offset(l_key_offset[mKind]);
@@ -223,7 +223,7 @@ int daObjMGate_c::Execute(Mtx** param_0) {
}
}
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
setBaseMtx();
mGateAngle.y = mGateSwingMultiplier * cM_ssin(mCounter * 4000);
diff --git a/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp b/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp
index a7e8355bc5..284cb4390e 100644
--- a/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp
+++ b/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp
@@ -20,7 +20,7 @@ void daObjOnsen_c::setBaseMtx() {
mDoMtx_stack_c::YrotM(shape_angle.y);
PSMTXCopy(mDoMtx_stack_c::now, mpModel[0]->mBaseTransformMtx);
PSMTXCopy(mDoMtx_stack_c::now, mpModel[1]->mBaseTransformMtx);
- PSMTXCopy(mDoMtx_stack_c::now, field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::now, mBgMtx);
}
/* 80CA7C28-80CA7C74 000148 004C+00 1/0 0/0 0/0 .text Create__12daObjOnsen_cFv */
@@ -92,7 +92,7 @@ int daObjOnsen_c::create1st() {
/* 80CA7EEC-80CA7F1C 00040C 0030+00 1/0 0/0 0/0 .text Execute__12daObjOnsen_cFPPA3_A4_f
*/
int daObjOnsen_c::Execute(Mtx** i_mtx) {
- *i_mtx = &field_0x56c;
+ *i_mtx = &mBgMtx;
mpBtk->play();
return 1;
}
diff --git a/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp b/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp
index a2c437b6a7..af2f76a103 100644
--- a/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp
+++ b/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp
@@ -21,7 +21,7 @@ void daObjGake_c::setBaseMtx() {
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
- PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 80D0BCB8-80D0BD30 000118 0078+00 1/0 0/0 0/0 .text Create__11daObjGake_cFv */
@@ -72,8 +72,8 @@ int daObjGake_c::Execute(Mtx** param_0) {
(mEventBit1 != 0x3FF &&
!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mEventBit1])))
{
- if (field_0x568 != NULL && field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Release(field_0x568);
+ if (mpBgW != NULL && mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
}
mHide = true;
@@ -81,15 +81,15 @@ int daObjGake_c::Execute(Mtx** param_0) {
}
if (mEventBit1 != 0x3FF && i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mEventBit1])) {
- if (field_0x568 != NULL && !field_0x568->ChkUsed()) {
- dComIfG_Bgsp().Regist(field_0x568, this);
+ if (mpBgW != NULL && !mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Regist(mpBgW, this);
}
mHide = false;
return 1;
}
- *param_0 = &field_0x56c;
+ *param_0 = &mBgMtx;
return 1;
}
diff --git a/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp b/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp
index 95ff394360..fecfffb48f 100644
--- a/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp
+++ b/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp
@@ -1,231 +1,128 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d_a_obj_usaku
-//
+/**
+ * d_a_obj_usaku.cpp
+ * Horse Fence
+ */
#include "rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h"
-#include "dol2asm.h"
-
-//
-// Types:
-//
-
-struct request_of_phase_process_class {};
-
-struct obj_usaku_class {};
-
-struct mDoMtx_stack_c {
- static u8 now[48];
-};
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
-};
-
-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 dBgW_Base {};
-
-struct dBgW {
- /* 8007B970 */ dBgW();
- /* 8007B9C0 */ void Move();
-};
-
-struct dBgS {
- /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
-};
-
-struct csXyz {};
-
-struct cBgD_t {};
-
-struct cBgW {
- /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
-};
-
-struct cBgS_PolyInfo {};
-
-struct cBgS {
- /* 80074250 */ void Release(dBgW_Base*);
-};
-
-struct J3DModel {};
-
-//
-// Forward References:
-//
-
-extern "C" static void daObj_Usaku_Draw__FP15obj_usaku_class();
-extern "C" static void daObj_Usaku_Execute__FP15obj_usaku_class();
-extern "C" static bool daObj_Usaku_IsDelete__FP15obj_usaku_class();
-extern "C" static void daObj_Usaku_Delete__FP15obj_usaku_class();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" static void daObj_Usaku_Create__FP10fopAc_ac_c();
-extern "C" extern char const* const d_a_obj_usaku__stringBase0;
-extern "C" extern void* g_profile_OBJ_USAKU[12];
-
-//
-// 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 __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
-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 Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
-extern "C" void __ct__4dBgWFv();
-extern "C" void Move__4dBgWFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void* __nw__FUl();
-extern "C" void PSMTXCopy();
-extern "C" void PSMTXTrans();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_29();
-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/bg/d_bg_w.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/d_procname.h"
/* 80D20F58-80D20FBC 000078 0064+00 1/0 0/0 0/0 .text daObj_Usaku_Draw__FP15obj_usaku_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Usaku_Draw(obj_usaku_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s"
+static int daObj_Usaku_Draw(obj_usaku_class* i_this) {
+ g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->mTevStr);
+ g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &i_this->mTevStr);
+ mDoExt_modelUpdateDL(i_this->mpModel);
+
+ return 1;
}
-#pragma pop
/* 80D20FBC-80D21048 0000DC 008C+00 2/1 0/0 0/0 .text daObj_Usaku_Execute__FP15obj_usaku_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Usaku_Execute(obj_usaku_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s"
+static int daObj_Usaku_Execute(obj_usaku_class* i_this) {
+ mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
+ mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
+
+ i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
+ if (i_this->mpBgW != NULL) {
+ PSMTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx);
+ i_this->mpBgW->Move();
+ }
+
+ return 1;
}
-#pragma pop
/* 80D21048-80D21050 000168 0008+00 1/0 0/0 0/0 .text daObj_Usaku_IsDelete__FP15obj_usaku_class */
-static bool daObj_Usaku_IsDelete(obj_usaku_class* param_0) {
- return true;
+static int daObj_Usaku_IsDelete(obj_usaku_class* i_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 80D212EC-80D212EC 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D212EC = "Obj_usaku";
-#pragma pop
-
/* 80D21050-80D210A8 000170 0058+00 1/0 0/0 0/0 .text daObj_Usaku_Delete__FP15obj_usaku_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Usaku_Delete(obj_usaku_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s"
+static int daObj_Usaku_Delete(obj_usaku_class* i_this) {
+ dComIfG_resDelete(&i_this->mPhase, "Obj_usaku");
+
+ if (i_this->mpBgW != NULL) {
+ dComIfG_Bgsp().Release(i_this->mpBgW);
+ }
+ return 1;
}
-#pragma pop
/* 80D210A8-80D211AC 0001C8 0104+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void useHeapInit(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s"
+static int useHeapInit(fopAc_ac_c* i_this) {
+ obj_usaku_class* a_this = (obj_usaku_class*)i_this;
+
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_usaku", 4);
+ a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (a_this->mpModel == NULL) {
+ return 0;
+ }
+
+ a_this->mpBgW = new dBgW();
+ if (a_this->mpBgW == NULL) {
+ return 0;
+ }
+
+ cBgD_t* pdzb = (cBgD_t*)dComIfG_getObjectRes("Obj_usaku", 7);
+ if (a_this->mpBgW->Set(pdzb, cBgW::MOVE_BG_e, &a_this->mBgMtx) == 1) {
+ return 0;
+ }
+
+ a_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
+ return 1;
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80D212DC-80D212E0 000000 0004+00 1/1 0/0 0/0 .rodata @3744 */
-SECTION_RODATA static f32 const lit_3744 = -300.0f;
-COMPILER_STRIP_GATE(0x80D212DC, &lit_3744);
-
-/* 80D212E0-80D212E4 000004 0004+00 0/1 0/0 0/0 .rodata @3745 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3745 = -600.0f;
-COMPILER_STRIP_GATE(0x80D212E0, &lit_3745);
-#pragma pop
-
-/* 80D212E4-80D212E8 000008 0004+00 0/1 0/0 0/0 .rodata @3746 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3746 = 300.0f;
-COMPILER_STRIP_GATE(0x80D212E4, &lit_3746);
-#pragma pop
-
-/* 80D212E8-80D212EC 00000C 0004+00 0/1 0/0 0/0 .rodata @3747 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3747 = 600.0f;
-COMPILER_STRIP_GATE(0x80D212E8, &lit_3747);
-#pragma pop
/* 80D211AC-80D212D4 0002CC 0128+00 1/0 0/0 0/0 .text daObj_Usaku_Create__FP10fopAc_ac_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObj_Usaku_Create(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s"
+static int daObj_Usaku_Create(fopAc_ac_c* i_this) {
+ fopAcM_SetupActor(i_this, obj_usaku_class);
+ obj_usaku_class* a_this = (obj_usaku_class*)i_this;
+
+ int phase = dComIfG_resLoad(&a_this->mPhase, "Obj_usaku");
+ if (phase == cPhs_COMPLEATE_e) {
+ a_this->field_0x570 = fopAcM_GetParam(a_this) & 0xFF;
+ if (a_this->field_0x570 == 0xFF) {
+ a_this->field_0x570 = 0;
+ }
+
+ if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0xC60)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (a_this->mpBgW != NULL && dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) {
+ return cPhs_ERROR_e;
+ }
+
+ a_this->mCullMtx = a_this->mpModel->getBaseTRMtx();
+ fopAcM_SetMin(a_this, -300.0f, -600.0f, -300.0f);
+ fopAcM_SetMax(a_this, 300.0f, 600.0f, 300.0f);
+ daObj_Usaku_Execute(a_this);
+ }
+
+ return phase;
}
-#pragma pop
/* ############################################################################################## */
/* 80D212F8-80D21318 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Usaku_Method */
-SECTION_DATA static void* l_daObj_Usaku_Method[8] = {
- (void*)daObj_Usaku_Create__FP10fopAc_ac_c,
- (void*)daObj_Usaku_Delete__FP15obj_usaku_class,
- (void*)daObj_Usaku_Execute__FP15obj_usaku_class,
- (void*)daObj_Usaku_IsDelete__FP15obj_usaku_class,
- (void*)daObj_Usaku_Draw__FP15obj_usaku_class,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daObj_Usaku_Method = {
+ (process_method_func)daObj_Usaku_Create, (process_method_func)daObj_Usaku_Delete,
+ (process_method_func)daObj_Usaku_Execute, (process_method_func)daObj_Usaku_IsDelete,
+ (process_method_func)daObj_Usaku_Draw,
};
/* 80D21318-80D21348 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_USAKU */
-SECTION_DATA extern void* g_profile_OBJ_USAKU[12] = {
- (void*)0xFFFFFFFD, (void*)0x0007FFFD,
- (void*)0x012A0000, (void*)&g_fpcLf_Method,
- (void*)0x000005B4, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x004E0000, (void*)&l_daObj_Usaku_Method,
- (void*)0x00040100, (void*)0x000E0000,
+extern actor_process_profile_definition g_profile_OBJ_USAKU = {
+ -3,
+ 7,
+ -3,
+ PROC_OBJ_USAKU,
+ &g_fpcLf_Method.mBase,
+ sizeof(obj_usaku_class),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 78,
+ &l_daObj_Usaku_Method,
+ 0x40100,
+ 0,
+ 14,
};
-
-/* 80D212EC-80D212EC 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp b/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp
index 81bfa84a1d..0bdcf2575d 100644
--- a/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp
+++ b/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp
@@ -238,7 +238,7 @@ static int useHeapInit(fopAc_ac_c* i_this) {
}
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Obj_web1", 11);
- if (_this->mpBgW->Set(dzb, 1, &_this->mMtx) == 1) {
+ if (_this->mpBgW->Set(dzb, cBgW::MOVE_BG_e, &_this->mMtx) == 1) {
return 0;
}
diff --git a/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp b/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp
index c0c2aeb3cd..33aec83a66 100644
--- a/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp
+++ b/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp
@@ -1,51 +1,38 @@
/**
* d_a_tag_chgrestart.cpp
- *
+ *
*/
#include "rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/d_procname.h"
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
-extern "C" void setRoom__13dSv_restart_cFRC4cXyzsSc();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_29();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-
/* 80D56758-80D567E4 000078 008C+00 1/1 0/0 0/0 .text Create__17daTagChgRestart_cFv */
s32 daTagChgRestart_c::Create() {
- field_0x568[0].x = -100.0f * mScale.x;
- field_0x568[0].z = -100.0f * mScale.z;
+ mVertices[0].x = -100.0f * mScale.x;
+ mVertices[0].z = -100.0f * mScale.z;
- field_0x568[1].x = 100.0f * mScale.x;
- field_0x568[1].z = -100.0f * mScale.z;
+ mVertices[1].x = 100.0f * mScale.x;
+ mVertices[1].z = -100.0f * mScale.z;
- field_0x568[2].x = 100.0f * mScale.x;
- field_0x568[2].z = 100.0f * mScale.z;
+ mVertices[2].x = 100.0f * mScale.x;
+ mVertices[2].z = 100.0f * mScale.z;
- field_0x568[3].x = -100.0f * mScale.x;
- field_0x568[3].z = 100.0f * mScale.z;
+ mVertices[3].x = -100.0f * mScale.x;
+ mVertices[3].z = 100.0f * mScale.z;
- field_0x568[3].y = 0.0f;
- field_0x568[2].y = 0.0f;
- field_0x568[1].y = 0.0f;
- field_0x568[0].y = 0.0f;
+ mVertices[3].y = 0.0f;
+ mVertices[2].y = 0.0f;
+ mVertices[1].y = 0.0f;
+ mVertices[0].y = 0.0f;
return 1;
}
/* 80D567E4-80D56878 000104 0094+00 1/1 0/0 0/0 .text create__17daTagChgRestart_cFv */
-s32 daTagChgRestart_c::create() {
+s32 daTagChgRestart_c::create() {
fopAcM_SetupActor(this, daTagChgRestart_c);
-
+
if (!Create()) {
return cPhs_ERROR_e;
}
@@ -54,10 +41,8 @@ s32 daTagChgRestart_c::create() {
}
/* 80D568B8-80D56A84 0001D8 01CC+00 1/1 0/0 0/0 .text execute__17daTagChgRestart_cFv */
-#ifdef NONMATCHING
-// do-while loop is wrong
s32 daTagChgRestart_c::execute() {
- if (i_fopAcM_isSwitch(this,daTagChgRestart_prm::getSwNo(this))) {
+ if (i_fopAcM_isSwitch(this, daTagChgRestart_prm::getSwNo(this))) {
return 1;
}
@@ -66,46 +51,40 @@ s32 daTagChgRestart_c::execute() {
pos -= orig.pos;
mDoMtx_stack_c::YrotS(-current.angle.y);
- mDoMtx_stack_c::multVec(&pos,&pos);
+ mDoMtx_stack_c::multVec(&pos, &pos);
+
+ if (mVertices[0].x < pos.x && mVertices[0].z < pos.z && mVertices[2].x > pos.x &&
+ mVertices[2].z > pos.z)
+ {
+ cXyz restart_pos = orig.pos;
+ s16 restart_angle = orig.angle.y;
- if (field_0x568[0].x < pos.x && field_0x568[0].z < pos.z &&
- field_0x568[2].x > pos.x && field_0x568[2].z > pos.z) {
- cXyz l_restartPos = orig.pos;
- s16 l_restartAngle = orig.angle.y;
-
u8 playerNo = daTagChgRestart_prm::getPlayerNo(this);
if (playerNo != 0xFF) {
- dStage_roomStatus_c* roomStatusDt = dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(this));
- stage_actor_class* actor = roomStatusDt->mRoomDt.getPlayer();
- stage_actor_data_class* actor_data = actor->mEntries;
- int entryNum = actor->mEntryNum;
+ dStage_roomStatus_c* roomStatusDt =
+ dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(this));
+ stage_actor_class* player_data = roomStatusDt->mRoomDt.getPlayer();
- do {
- actor_data++;
+ stage_actor_data_class* entry_p = player_data->mEntries;
+ for (int i = 0; i < player_data->mEntryNum; i++) {
+ if ((entry_p->mAngle.z & 0xFF) == playerNo) {
+ break;
+ }
+
+ entry_p++;
}
- while (entryNum > 0 && actor->mEntryNum > playerNo && actor_data != 0);
-
- l_restartPos = actor_data->mSpawnPos;
- l_restartAngle = actor_data->mAngle.y;
+
+ restart_pos = entry_p->mSpawnPos;
+ restart_angle = entry_p->mAngle.y;
}
-
+
s32 l_roomNo = fopAcM_GetRoomNo(player);
- dComIfGs_setRestartRoom(l_restartPos,l_restartAngle,l_roomNo);
- i_fopAcM_onSwitch(this,daTagChgRestart_prm::getSwNo(this));
+ dComIfGs_setRestartRoom(restart_pos, restart_angle, l_roomNo);
+ i_fopAcM_onSwitch(this, daTagChgRestart_prm::getSwNo(this));
}
return 1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm s32 daTagChgRestart_c::execute() {
- nofralloc
-#include "asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s"
-}
-#pragma pop
-#endif
/* 80D56A84-80D56A8C 0003A4 0008+00 1/1 0/0 0/0 .text _delete__17daTagChgRestart_cFv */
s32 daTagChgRestart_c::_delete() {
@@ -125,8 +104,8 @@ static s32 daTagChgRestart_Delete(daTagChgRestart_c* i_this) {
}
/* 80D56ACC-80D56AEC 0003EC 0020+00 1/0 0/0 0/0 .text daTagChgRestart_Create__FP10fopAc_ac_c */
-static s32 daTagChgRestart_Create(fopAc_ac_c* param_0) {
- return static_cast<daTagChgRestart_c*>(param_0)->create();
+static s32 daTagChgRestart_Create(fopAc_ac_c* i_this) {
+ return static_cast<daTagChgRestart_c*>(i_this)->create();
}
/* ############################################################################################## */
@@ -134,7 +113,7 @@ static s32 daTagChgRestart_Create(fopAc_ac_c* param_0) {
static actor_method_class l_daTagChgRestart_Method = {
(process_method_func)daTagChgRestart_Create,
(process_method_func)daTagChgRestart_Delete,
- (process_method_func)daTagChgRestart_Execute
+ (process_method_func)daTagChgRestart_Execute,
};
/* 80D56B20-80D56B50 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_ChgRestart */
diff --git a/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp b/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp
index 42604d127f..74e3aab553 100644
--- a/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp
+++ b/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp
@@ -55,7 +55,7 @@ int daTagHjump_c::create() {
mDoMtx_stack_c::get()[1][3] -= 100.0f;
current.pos.y -= 100.0f;
- field_0x568->SetLock();
+ mpBgW->SetLock();
mScale.x = 250.0f;
mScale.y = 350.0f;
mScale.z = 400.0f;