k_wmark / k_wpillar OK, fop actor enums / debug building (#1946)

* d_k_wmark / d_k_wpillar OK

* make debug buildable / add assert functionality

* add more fop actor enums

* remove asm
This commit is contained in:
TakaRikka
2023-09-28 12:01:42 -07:00
committed by GitHub
parent 673e69386a
commit 89ed2b8a26
206 changed files with 1612 additions and 2472 deletions
+160 -275
View File
@@ -1,312 +1,197 @@
//
// Generated By: dol2asm
// Translation Unit: d/d_k_wmark
//
/**
* d_k_wmark.cpp
*
*/
#include "d/d_k_wmark.h"
#include "dol2asm.h"
//
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct mDoLib_clipper {
static u8 mClipper[92];
};
struct kankyo_class {};
struct cXyz {
/* 80009184 */ ~cXyz();
/* 80267128 */ void atan2sX_Z() const;
};
struct fopAcM_gc_c {
/* 8001DCBC */ void gndCheck(cXyz const*);
static u8 mGndCheck[84];
static f32 mGroundY;
};
struct dkWmark_c {
/* 80261640 */ ~dkWmark_c();
/* 802616C4 */ void setMatrix();
static u8 m_nowID[4];
};
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 cBgS_PolyInfo {};
struct dBgS {
/* 80074ABC */ void ChkMoveBG(cBgS_PolyInfo const&);
};
struct cM3dGPla {};
struct cBgS {
/* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const;
};
struct Vec {};
struct JMath {
static u8 sincosTable_[65536];
};
struct JKRSolidHeap {};
struct J3DUClipper {
/* 802738FC */ void clip(f32 const (*)[4], Vec, f32) const;
};
struct J3DModel {};
struct J3DLightObj {
/* 80018C0C */ J3DLightObj();
};
struct J3DLightInfo {
/* 803256C4 */ void operator=(J3DLightInfo const&);
};
//
// Forward References:
//
extern "C" static void dkWmark_Create__FP12kankyo_class();
extern "C" void __dt__9dkWmark_cFv();
extern "C" static void dkWmark_Delete__FP9dkWmark_c();
extern "C" void setMatrix__9dkWmark_cFv();
extern "C" static void dkWmark_Execute__FP9dkWmark_c();
extern "C" static void dkWmark_Draw__FP9dkWmark_c();
extern "C" extern char const* const d_d_k_wmark__stringBase0;
extern "C" extern void* g_profile_WMARK[10 + 1 /* padding */];
extern "C" u8 m_nowID__9dkWmark_c[4];
//
// External References:
//
extern "C" void __dt__4cXyzFv();
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_createSolidHeapFromGameToCurrent__FUlUl();
extern "C" void mDoExt_adjustSolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_destroySolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_restoreCurrentHeap__Fv();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__11J3DLightObjFv();
extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
extern "C" void fopKyM_Delete__FPv();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
extern "C" void ChkMoveBG__4dBgSFRC13cBgS_PolyInfo();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dKy_tevstr_init__FP12dKy_tevstr_cScUc();
extern "C" void atan2sX_Z__4cXyzCFv();
extern "C" void cM_atan2s__Fff();
extern "C" void clip__11J3DUClipperCFPA4_Cf3Vecf();
extern "C" void __dl__FPv();
extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void PSVECSquareMag();
extern "C" void __register_global_object();
extern "C" void __construct_array();
extern "C" void _savegpr_26();
extern "C" void _restgpr_26();
extern "C" void abs();
extern "C" extern u8 const j3dDefaultLightInfo[52];
extern "C" extern void* __vt__8cM3dGPla[3];
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mClipper__14mDoLib_clipper[92];
extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" f32 mGroundY__11fopAcM_gc_c;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 8039A494-8039A494 026AF4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039A494 = "Alink";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039A49A = "\0\0\0\0\0";
#pragma pop
/* 80430C90-80430C9C 05D9B0 000C+00 1/1 0/0 0/0 .bss @3644 */
static u8 lit_3644[12];
/* 80430C9C-80430CA8 05D9BC 000C+00 1/1 0/0 0/0 .bss
* wolfFootScale$localstatic3$create__9dkWmark_cFv */
static f32 data_80430C9C[3];
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_lib.h"
/* 80451130-80451134 000630 0004+00 2/2 0/0 0/0 .sbss m_nowID__9dkWmark_c */
u8 dkWmark_c::m_nowID[4];
int dkWmark_c::m_nowID;
/* 80451134-80451138 000634 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_80451134[4];
int dkWmark_c::create() {
static cXyz wolfFootScale(1.1f, 1.0f, 0.6f);
/* 80454FB0-80454FB4 0035B0 0004+00 1/1 0/0 0/0 .sdata2 @3718 */
SECTION_SDATA2 static f32 lit_3718 = 11.0f / 10.0f;
new (this) dkWmark_c();
/* 80454FB4-80454FB8 0035B4 0004+00 2/2 0/0 0/0 .sdata2 @3719 */
SECTION_SDATA2 static f32 lit_3719 = 1.0f;
field_0x48a = mParam >> 0x10;
mParam &= 0xFFFF;
/* 80454FB8-80454FBC 0035B8 0004+00 1/1 0/0 0/0 .sdata2 @3720 */
SECTION_SDATA2 static f32 lit_3720 = 3.0f / 5.0f;
if ((int)mParam >= 4) {
return cPhs_ERROR_e;
}
if ((int)mParam == 3) {
mColorType = 2;
} else {
mColorType = mParam;
}
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x880, 0x20);
if (mpHeap != NULL) {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Alink", 0x23);
JUT_ASSERT(60, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(mpHeap);
} else {
return cPhs_ERROR_e;
}
if (mpModel == NULL) {
return cPhs_ERROR_e;
}
if ((int)mParam != 3 && daPy_py_c::i_checkNowWolf()) {
mpModel->setBaseScale(wolfFootScale);
}
if (!setMatrix()) {
return cPhs_ERROR_e;
}
if ((int)mParam == 1 || (int)mParam == 3 || (int)mParam == 2) {
field_0x494 = m_nowID;
m_nowID++;
} else {
field_0x488 = 1;
}
mAlphaFactor = 1.0f;
dKy_tevstr_init(&mTevstr, dComIfGp_roomControl_getStayNo(), 0xFF);
return cPhs_COMPLEATE_e;
}
/* 8026141C-80261640 25BD5C 0224+00 1/0 0/0 0/0 .text dkWmark_Create__FP12kankyo_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dkWmark_Create(kankyo_class* param_0) {
nofralloc
#include "asm/d/d_k_wmark/dkWmark_Create__FP12kankyo_class.s"
static int dkWmark_Create(kankyo_class* i_this) {
return static_cast<dkWmark_c*>(i_this)->create();
}
#pragma pop
/* 80261640-8026169C 25BF80 005C+00 1/1 0/0 0/0 .text __dt__9dkWmark_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dkWmark_c::~dkWmark_c() {
nofralloc
#include "asm/d/d_k_wmark/__dt__9dkWmark_cFv.s"
dkWmark_c::~dkWmark_c() {
if (mpHeap != NULL) {
mDoExt_destroySolidHeap(mpHeap);
}
}
#pragma pop
/* 8026169C-802616C4 25BFDC 0028+00 1/0 0/0 0/0 .text dkWmark_Delete__FP9dkWmark_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dkWmark_Delete(dkWmark_c* param_0) {
nofralloc
#include "asm/d/d_k_wmark/dkWmark_Delete__FP9dkWmark_c.s"
static int dkWmark_Delete(dkWmark_c* i_this) {
i_this->~dkWmark_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80454FBC-80454FC0 0035BC 0004+00 1/1 0/0 0/0 .sdata2 @3844 */
SECTION_SDATA2 static f32 lit_3844 = 100.0f;
/* 80454FC0-80454FC8 0035C0 0004+04 2/2 0/0 0/0 .sdata2 @3845 */
SECTION_SDATA2 static f32 lit_3845[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
/* 80454FC8-80454FD0 0035C8 0008+00 1/1 0/0 0/0 .sdata2 @3846 */
SECTION_SDATA2 static f64 lit_3846 = 0.5;
/* 80454FD0-80454FD8 0035D0 0008+00 1/1 0/0 0/0 .sdata2 @3847 */
SECTION_SDATA2 static f64 lit_3847 = 3.0;
/* 80454FD8-80454FE0 0035D8 0008+00 1/1 0/0 0/0 .sdata2 @3848 */
SECTION_SDATA2 static u8 lit_3848[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
inline bool fopAcM_gc_c::getTriPla(cM3dGPla* i_plane) {
return dComIfG_Bgsp().GetTriPla(*(dBgS_GndChk*)mGndCheck, i_plane);
}
/* 802616C4-80261964 25C004 02A0+00 2/2 0/0 0/0 .text setMatrix__9dkWmark_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dkWmark_c::setMatrix() {
nofralloc
#include "asm/d/d_k_wmark/setMatrix__9dkWmark_cFv.s"
}
#pragma pop
BOOL dkWmark_c::setMatrix() {
cXyz chk_pos(mPos.x, mPos.y + 100.0f, mPos.z);
/* ############################################################################################## */
/* 80454FE0-80454FE4 0035E0 0004+00 1/1 0/0 0/0 .sdata2 @3873 */
SECTION_SDATA2 static f32 lit_3873 = 1.0f / 50.0f;
if (fopAcM_gc_c::gndCheck(&chk_pos)) {
mPos.y = fopAcM_gc_c::getGroundY();
cM3dGPla poly;
fopAcM_gc_c::getTriPla(&poly);
s16 temp_r26 = poly.mNormal.atan2sX_Z() - field_0x48a;
f32 var_f31 = poly.mNormal.absXZ();
mDoMtx_stack_c::transS(mPos.x, mPos.y + 1.0f, mPos.z);
mDoMtx_stack_c::ZXYrotM(cM_atan2s(var_f31 * cM_scos(temp_r26), poly.mNormal.y), field_0x48a,
cM_atan2s(var_f31 * -cM_ssin(temp_r26), poly.mNormal.y));
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
if (dComIfG_Bgsp().ChkMoveBG(*fopAcM_gc_c::getGroundCheck())) {
field_0x48c = 1;
} else {
field_0x48c = 0;
}
} else {
return 0;
}
return 1;
}
int dkWmark_c::execute() {
if (field_0x488 == 0 && abs(field_0x494 - m_nowID) > 20) {
field_0x488 = 1;
}
if (field_0x488 != 0) {
mAlphaFactor -= 0.02f;
}
if (mAlphaFactor <= 0.0f || (field_0x48c == 1 && !setMatrix())) {
fopKyM_Delete(this);
mAlphaFactor = 0.0f;
}
return 1;
}
/* 80261964-80261A18 25C2A4 00B4+00 1/0 0/0 0/0 .text dkWmark_Execute__FP9dkWmark_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dkWmark_Execute(dkWmark_c* param_0) {
nofralloc
#include "asm/d/d_k_wmark/dkWmark_Execute__FP9dkWmark_c.s"
static int dkWmark_Execute(dkWmark_c* i_this) {
return i_this->execute();
}
#pragma pop
/* ############################################################################################## */
/* 8039A488-8039A494 026AE8 000C+00 1/1 0/0 0/0 .rodata kColor$localstatic3$draw__9dkWmark_cFv */
SECTION_RODATA static u8 const data_8039A488[12] = {
0x00, 0x00, 0x00, 0x82, 0x5F, 0x4B, 0x32, 0x3C, 0x64, 0x6E, 0x78, 0x28,
};
COMPILER_STRIP_GATE(0x8039A488, &data_8039A488);
int dkWmark_c::draw() {
J3DGXColor color;
/* 80454FE4-80454FE8 0035E4 0004+00 1/1 0/0 0/0 .sdata2 @3906 */
SECTION_SDATA2 static f32 lit_3906 = 50.0f;
if (mDoLib_clipper::clip(j3dSys.getViewMtx(), mPos, mScale.x * 50.0f)) {
return 1;
}
/* 80454FE8-80454FF0 0035E8 0008+00 1/1 0/0 0/0 .sdata2 @3908 */
SECTION_SDATA2 static f64 lit_3908 = 4503599627370496.0 /* cast u32 to float */;
g_env_light.settingTevStruct(0, &mPos, &mTevstr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevstr);
static const GXColor kColor[] = {{0, 0, 0, 130}, {95, 75, 50, 60}, {100, 110, 120, 40}};
const GXColor* color_p = &kColor[mColorType];
color.r = color_p->r;
color.g = color_p->g;
color.b = color_p->b;
color.a = color_p->a * mAlphaFactor;
mpModel->getModelData()->getMaterialNodePointer(0)->setTevKColor(1, &color);
mDoExt_modelUpdateDL(mpModel);
return 1;
}
/* 80261A18-80261B54 25C358 013C+00 1/0 0/0 0/0 .text dkWmark_Draw__FP9dkWmark_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dkWmark_Draw(dkWmark_c* param_0) {
nofralloc
#include "asm/d/d_k_wmark/dkWmark_Draw__FP9dkWmark_c.s"
static int dkWmark_Draw(dkWmark_c* i_this) {
return i_this->draw();
}
#pragma pop
/* ############################################################################################## */
/* 803C3430-803C3444 -00001 0014+00 1/0 0/0 0/0 .data l_dkWmark_Method */
SECTION_DATA static void* l_dkWmark_Method[5] = {
(void*)dkWmark_Create__FP12kankyo_class, (void*)dkWmark_Delete__FP9dkWmark_c,
(void*)dkWmark_Execute__FP9dkWmark_c, (void*)NULL,
(void*)dkWmark_Draw__FP9dkWmark_c,
static leafdraw_method_class l_dkWmark_Method = {
(process_method_func)dkWmark_Create, (process_method_func)dkWmark_Delete,
(process_method_func)dkWmark_Execute, (process_method_func)NULL,
(process_method_func)dkWmark_Draw,
};
/* 803C3444-803C3470 -00001 0028+04 0/0 0/0 1/0 .data g_profile_WMARK */
SECTION_DATA extern void* g_profile_WMARK[10 + 1 /* padding */] = {
(void*)0xFFFFFFFD,
(void*)0x0009FFFD,
(void*)0x03030000,
(void*)&g_fpcLf_Method,
(void*)0x00000498,
(void*)NULL,
(void*)NULL,
(void*)&g_fopKy_Method,
(void*)0x02F80000,
(void*)&l_dkWmark_Method,
/* padding */
NULL,
extern kankyo_process_profile_definition g_profile_WMARK = {
fpcLy_CURRENT_e,
9,
fpcPi_CURRENT_e,
PROC_WMARK,
&g_fpcLf_Method.mBase,
sizeof(dkWmark_c),
0,
0,
&g_fopKy_Method,
760,
&l_dkWmark_Method,
};
/* 8039A494-8039A494 026AF4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */