From 774692fc3b74a7e7cf3e90f29e4684030054d943 Mon Sep 17 00:00:00 2001 From: roeming Date: Thu, 9 Oct 2025 21:42:24 -0400 Subject: [PATCH] Make d_a_obj_thashi equivalent (#2731) * Make d_a_obj_thashi equivalent * Link d_a_obj_thashi * Adding suggestions * formatting * fix return --- configure.py | 2 +- include/d/actor/d_a_obj_thashi.h | 65 ++- src/d/actor/d_a_obj_thashi.cpp | 928 ++++++++++--------------------- 3 files changed, 338 insertions(+), 657 deletions(-) diff --git a/configure.py b/configure.py index aeb9335068..946627a4a3 100755 --- a/configure.py +++ b/configure.py @@ -2196,7 +2196,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_ten"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_testcube"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_tgake"), - ActorRel(NonMatching, "d_a_obj_thashi"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thashi"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thdoor"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_timeFire"), ActorRel(Equivalent, "d_a_obj_tks", extra_cflags=[DANPCF_C_HACK]), # weak function order diff --git a/include/d/actor/d_a_obj_thashi.h b/include/d/actor/d_a_obj_thashi.h index 625b0a7603..df915c5f7c 100644 --- a/include/d/actor/d_a_obj_thashi.h +++ b/include/d/actor/d_a_obj_thashi.h @@ -2,7 +2,10 @@ #define D_A_OBJ_THASHI_H #include "f_op/f_op_actor_mng.h" - +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_uty.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects * @class daObjTHASHI_c @@ -11,19 +14,61 @@ * @details * */ -class daObjTHASHI_c : public fopAc_ac_c { +class daObjTHASHI_c : public dBgS_MoveBgActor { public: /* 80D0C238 */ void initCcCylinder(); /* 80D0C354 */ void setBaseMtx(); - /* 80D0C654 */ void CreateHeap(); - /* 80D0C8B4 */ void create(); - /* 80D0CE70 */ void Create(); - /* 80D0CEB4 */ void Execute(Mtx**); - /* 80D0CEE0 */ void Draw(); - /* 80D0D140 */ void Delete(); + /* 80D0C654 */ int CreateHeap(); + /* 80D0C8B4 */ int create(); + /* 80D0CE70 */ int Create(); + /* 80D0CEB4 */ int Execute(Mtx**); + /* 80D0CEE0 */ int Draw(); + /* 80D0D140 */ int Delete(); -private: - /* 0x568 */ u8 field_0x568[0x1bbc - 0x568]; +// private: + + /* 0x5A0 */ dBgW* unk5A0; + /* 0x5A4 */ u32 unk5A4; + /* 0x5A8 */ u32 unk5A8; + /* 0x5AC */ cXyz unk5AC; + /* 0x5B8 */ csXyz mRot; + /* 0x5C0 */ cXyz mTrans; + /* 0x5CC */ u32 unk5CC; + /* 0x5D0 */ cXyz unk5D0; + /* 0x5DC */ cXyz unk5DC[5]; + /* 0x618 */ u32 unk618; + /* 0x61C */ u32 unk61C; + /* 0x620 */ u32 unk620; + /* 0x624 */ cXyz unk624; + /* 0x630 */ csXyz unk630; + /* 0x636 */ s16 unk636; + /* 0x638 */ cXyz mCollectiveTrans[50]; + /* 0x890 */ cXyz unk890[50]; + /* 0xAE8 */ cXyz mCollectiveScale[50]; + /* 0xD40 */ u32 unkD40; + /* 0xD44 */ u32 unkD44; + /* 0xD48 */ csXyz mCollectiveRot[50]; + /* 0xE74 */ csXyz unkE74[50]; + /* 0xFA0 */ u8 unkFA0[0x100]; + /* 0x10A0 */ f32 unk10A0; + /* 0x10A4 */ u32 unk10A4; + /* 0x10A8 */ u32 unk10A8; + /* 0x10AC */ Z2SoundObjSimple unk10AC; + /* 0x10CC */ u32 unk10CC; + /* 0x10D0 */ u32 unk10D0; + /* 0x10D4 */ J3DModel* mThashi00Model; + /* 0x10D8 */ J3DModel* mThashi01Model; + /* 0x10DC */ J3DModel* mThashi03Models[50]; + /* 0x11A4 */ J3DModel* mThashi02Model; + /* 0x11A8 */ request_of_phase_process_class unk11A8; + /* 0x11B0 */ dBgS_AcchCir unk11B0; + /* 0x11F0 */ dBgS_ObjAcch unk11F0; + /* 0x13C8 */ dCcD_Stts unk13C8; + /* 0x1404 */ dCcD_Stts unk1404; + /* 0x1440 */ dCcD_Sph unk1440[5]; + /* 0x1A58 */ dCcD_Cyl unk1A58; + /* 0x1B94 */ dCcU_AtInfo unk1B94; + /* 0x1BB8 */ u32 unk1BB8; }; STATIC_ASSERT(sizeof(daObjTHASHI_c) == 0x1bbc); diff --git a/src/d/actor/d_a_obj_thashi.cpp b/src/d/actor/d_a_obj_thashi.cpp index d66ed77836..f50cc69613 100644 --- a/src/d/actor/d_a_obj_thashi.cpp +++ b/src/d/actor/d_a_obj_thashi.cpp @@ -7,513 +7,261 @@ #include "d/actor/d_a_obj_thashi.h" #include "d/d_cc_d.h" -#include "dol2asm.h" - - +#include "d/d_s_play.h" // // Forward References: // -extern "C" void initCcCylinder__13daObjTHASHI_cFv(); -extern "C" static void daObjTHASHI_Create__FP10fopAc_ac_c(); -extern "C" static void daObjTHASHI_Delete__FP13daObjTHASHI_c(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void setBaseMtx__13daObjTHASHI_cFv(); -extern "C" static void daObjTHASHI_Draw__FP13daObjTHASHI_c(); -extern "C" static void daObjTHASHI_Execute__FP13daObjTHASHI_c(); -extern "C" void CreateHeap__13daObjTHASHI_cFv(); -extern "C" void create__13daObjTHASHI_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" static bool daObjTHASHI_IsDelete__FP13daObjTHASHI_c(); -extern "C" void Create__13daObjTHASHI_cFv(); -extern "C" void Execute__13daObjTHASHI_cFPPA3_A4_f(); -extern "C" void Draw__13daObjTHASHI_cFv(); -extern "C" void Delete__13daObjTHASHI_cFv(); -extern "C" static void func_80D0D174(); -extern "C" static void func_80D0D17C(); -extern "C" extern char const* const d_a_obj_thashi__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -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 getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -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 Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -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" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_set_func__16dBgS_MoveBgActor[4 + 4 /* padding */]; - // // Declarations: // +char* l_arcName = "S_thashi"; -/* ############################################################################################## */ -/* 80D0D18C-80D0D1CC 000000 0040+00 2/2 0/0 0/0 .rodata ccCylSrc$3671 */ -SECTION_RODATA static u8 const ccCylSrc_3671[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D18C, &ccCylSrc_3671); - -/* 80D0D1CC-80D0D1D0 000040 0004+00 0/0 0/0 0/0 .rodata @3693 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3693[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D1CC, &lit_3693); -#pragma pop - -/* 80D0D1D0-80D0D1D4 000044 0004+00 0/0 0/0 0/0 .rodata @3694 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3694 = 200.0f; -COMPILER_STRIP_GATE(0x80D0D1D0, &lit_3694); -#pragma pop - -/* 80D0D1D4-80D0D1DC 000048 0004+04 0/0 0/0 0/0 .rodata @3695 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3695[1 + 1 /* padding */] = { - 300.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D0D1D4, &lit_3695); -#pragma pop - -/* 80D0D1DC-80D0D1E4 000050 0008+00 0/0 0/0 0/0 .rodata @3697 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3697[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D1DC, &lit_3697); -#pragma pop - -/* 80D0D1E4-80D0D228 000058 0044+00 1/1 0/0 0/0 .rodata ccCylSrc$3701 */ -const static dCcD_SrcCyl ccCylSrc_3701 = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x75}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {0.0f, 0.0f, 0.0f}, // mCenter - 110.0f, // mRadius - 130.0f // mHeight - } // mCyl -}; +static void dataStripping() { + const static u32 ccCylSrc[] = {0, 0x100000, 0, 0x13, 0x100000, 0x1f, 0x75, 0, + 0, 0x10000, 0x2, 0, 0l, 0, 0, 0x42f00000}; + extern void stripFloat(f32); + extern void stripint(int); + extern int getStripInt(); + stripFloat(0.0f); + stripFloat(200.0f); + stripFloat(300.0f); + stripFloat(getStripInt()); +} /* 80D0C238-80D0C298 000078 0060+00 1/1 0/0 0/0 .text initCcCylinder__13daObjTHASHI_cFv */ void daObjTHASHI_c::initCcCylinder() { - // NONMATCHING + #if !DEBUG + const + #endif + static dCcD_SrcCyl ccCylSrc = { + { + {0x0, {{AT_TYPE_0, 0x0, 0x0}, {0x00100000, 0x1f}, 0x75}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 110.f + nREG_F(17), // mRadius + 130.f + nREG_F(16) // mHeight + } // mCyl + }; + unk13C8.Init(0xff, 0xff, this); + unk1A58.Set(ccCylSrc); + unk1A58.SetStts(&unk13C8); + unk1A58.SetC(current.pos); +} + +static void dataStripping2() { + extern void stripFloat(f32); + extern void stripDouble(f64); + stripFloat(15.0f); + stripFloat(60.0f); + stripFloat(30.0f); + stripFloat(150.0f); + stripFloat(10.0f); + stripFloat(70.0f); + stripFloat(0.65f); + stripFloat(0.25f); + stripFloat(1.5f); + stripFloat(0.6f); + stripFloat(1.0f); + stripFloat(8192.0f); + stripFloat(32000.0f); + stripFloat(15000.0f); + stripFloat(65536.0f); + stripFloat(-0.05f); + stripFloat(0.2f); + stripFloat(4.0f); + stripFloat(0.7f); + stripFloat(0.3f); + stripFloat(5000.0f); + stripFloat(5.0f); + stripFloat(-9.0f); + stripFloat(16384.0f); + stripFloat(-1.0f); + stripFloat(450.0f); + + stripDouble(0.5f); + stripDouble(3.0f); + stripDouble(0.0f); + + stripFloat(3.0f); + stripFloat(2000.0f); + stripFloat(608.0f); + stripFloat(448.0f); } /* 80D0C298-80D0C2B8 0000D8 0020+00 1/0 0/0 0/0 .text daObjTHASHI_Create__FP10fopAc_ac_c */ -static void daObjTHASHI_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjTHASHI_Create(fopAc_ac_c* param_0) { + daObjTHASHI_c* i_this = (daObjTHASHI_c*)param_0; + fpc_ProcID id = fopAcM_GetID(param_0); + return i_this->create(); } /* 80D0C2B8-80D0C2DC 0000F8 0024+00 1/0 0/0 0/0 .text daObjTHASHI_Delete__FP13daObjTHASHI_c */ -static void daObjTHASHI_Delete(daObjTHASHI_c* param_0) { - // NONMATCHING +static int daObjTHASHI_Delete(daObjTHASHI_c* i_this) { + fpc_ProcID id = fopAcM_GetID(i_this); + i_this->MoveBGDelete(); + return TRUE; } -/* 80D0C2DC-80D0C318 00011C 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING +// stripped function to move dtor weak ordering +static void strippedFunc3(cXyz* a, csXyz* b) { + delete[] b; + delete[] a; } -/* 80D0C318-80D0C354 000158 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0D2D0-80D0D2D0 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D0D2D0 = "S_thashi"; -#pragma pop - -/* 80D0D334-80D0D338 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_thashi__stringBase0; - -/* 80D0D338-80D0D35C -00001 0024+00 1/1 0/0 0/0 .data @4521 */ -SECTION_DATA static void* lit_4521[9] = { - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x44), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x6C), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x6C), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x1AC), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x214), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x29C), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x29C), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x6C), - (void*)(((char*)setBaseMtx__13daObjTHASHI_cFv) + 0x214), -}; - /* 80D0C354-80D0C608 000194 02B4+00 2/1 0/0 0/0 .text setBaseMtx__13daObjTHASHI_cFv */ void daObjTHASHI_c::setBaseMtx() { - // NONMATCHING + switch (unk5A4) { + case 0: + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mThashi00Model->setBaseTRMtx(mDoMtx_stack_c::get()); + break; + case 1: + case 2: + case 7: + for (s16 i = 0; i < 10; i++) { + mDoMtx_stack_c::transS(mCollectiveTrans[i]); + mDoMtx_stack_c::ZXYrotM(mCollectiveRot[i]); + mDoMtx_stack_c::scaleM(mCollectiveScale[i]); + mThashi03Models[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + f32 t = fabsf(cM_ssin(mRot.x) * (70.f + KREG_F(0))); + mDoMtx_stack_c::transS(mTrans.x, mTrans.y + t + 10.f + KREG_F(11), mTrans.z); + mDoMtx_stack_c::YrotM(mRot.y); + mDoMtx_stack_c::ZrotM(mRot.z); + mDoMtx_stack_c::XrotM(mRot.x); + mDoMtx_stack_c::YrotM(-mRot.y); + mDoMtx_stack_c::transM(0.f, 60.f + KREG_F(12), 0.f); + mThashi02Model->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mThashi01Model->setBaseTRMtx(mDoMtx_stack_c::get()); + break; + case 3: + for (s16 i = 0; i < 50; i++) { + mDoMtx_stack_c::transS(mCollectiveTrans[i]); + mDoMtx_stack_c::ZXYrotM(mCollectiveRot[i]); + mDoMtx_stack_c::scaleM(mCollectiveScale[i]); + mThashi03Models[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + break; + case 4: + case 8: + for (s16 i = 0; i < 40; i++) { + mDoMtx_stack_c::transS(mCollectiveTrans[i]); + mDoMtx_stack_c::ZXYrotM(mCollectiveRot[i]); + mDoMtx_stack_c::scaleM(mCollectiveScale[i]); + mThashi03Models[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mThashi01Model->setBaseTRMtx(mDoMtx_stack_c::get()); + break; + } } /* 80D0C608-80D0C634 000448 002C+00 1/0 0/0 0/0 .text daObjTHASHI_Draw__FP13daObjTHASHI_c */ -static void daObjTHASHI_Draw(daObjTHASHI_c* param_0) { - // NONMATCHING +static int daObjTHASHI_Draw(daObjTHASHI_c* i_this) { + return i_this->MoveBGDraw(); } /* 80D0C634-80D0C654 000474 0020+00 2/1 0/0 0/0 .text daObjTHASHI_Execute__FP13daObjTHASHI_c */ -static void daObjTHASHI_Execute(daObjTHASHI_c* param_0) { - // NONMATCHING +static int daObjTHASHI_Execute(daObjTHASHI_c* i_this) { + return i_this->MoveBGExecute(); } -/* ############################################################################################## */ -/* 80D0D2D0-80D0D2D0 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D0D2D9 = "S_thashi00.bmd"; -SECTION_DEAD static char const* const stringBase_80D0D2E8 = "S_thashi01.bmd"; -SECTION_DEAD static char const* const stringBase_80D0D2F7 = "S_thashi03.bmd"; -SECTION_DEAD static char const* const stringBase_80D0D306 = "S_thashi02.bmd"; -SECTION_DEAD static char const* const stringBase_80D0D315 = "S_thashi01.dzb"; -#pragma pop - /* 80D0C654-80D0C8B4 000494 0260+00 1/0 0/0 0/0 .text CreateHeap__13daObjTHASHI_cFv */ -void daObjTHASHI_c::CreateHeap() { - // NONMATCHING +int daObjTHASHI_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "S_thashi00.bmd"); + JUT_ASSERT(92, modelData != NULL); + J3DModelData* modelData1 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "S_thashi01.bmd"); + JUT_ASSERT(95, modelData1 != NULL); + mThashi00Model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mThashi00Model == NULL) { + return FALSE; + } + mThashi01Model = mDoExt_J3DModel__create(modelData1, 0x80000, 0x11000084); + if (mThashi01Model == NULL) { + return FALSE; + } + J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "S_thashi03.bmd"); + JUT_ASSERT(113, modelData2 != NULL); + J3DModelData* modelData3 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "S_thashi02.bmd"); + JUT_ASSERT(116, modelData3 != NULL); + for (int i = 0; i < 50; i++) { + mThashi03Models[i] = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11000084); + if (mThashi03Models[i] == NULL) { + return FALSE; + } + } + mThashi02Model = mDoExt_J3DModel__create(modelData3, 0x80000, 0x11000084); + if (mThashi02Model == NULL) { + return FALSE; + } + u32 ind = dComIfG_getObjctResName2Index(l_arcName, "S_thashi01.dzb"); + unk5A0 = new dBgW(); + + if (unk5A0 != NULL && !unk5A0->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, ind), 1, &mBgMtx)) { + if (m_set_func != NULL) { + unk5A0->SetCrrFunc(m_set_func); + } + } else { + unk5A0 = NULL; + return FALSE; + } + return TRUE; } -/* ############################################################################################## */ -/* 80D0D228-80D0D22C 00009C 0004+00 0/0 0/0 0/0 .rodata @3795 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3795 = 15.0f; -COMPILER_STRIP_GATE(0x80D0D228, &lit_3795); -#pragma pop +/* 80D0C8B4-80D0CBC8 0006F4 0314+00 1/1 0/0 0/0 .text create__13daObjTHASHI_cFv */ +int daObjTHASHI_c::create() { + fopAcM_SetupActor(this, daObjTHASHI_c); + int phase_state = dComIfG_resLoad(&unk11A8, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + unk10A0 = -9.0f; + gravity = -0.0f; + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "S_thashi00.dzb"); -/* 80D0D22C-80D0D230 0000A0 0004+00 0/0 0/0 0/0 .rodata @3796 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3796 = 60.0f; -COMPILER_STRIP_GATE(0x80D0D22C, &lit_3796); -#pragma pop + unk5A4 = 0; +#if DEBUG + if (dzb_id == -1) { + OSReport("dzbデータが見つかりませんでした!<%s>\n\n", l_arcName); + } + JUT_ASSERT(1797, dzb_id != -1); +#endif + phase_state = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x4000, 0); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } -/* 80D0D230-80D0D234 0000A4 0004+00 0/0 0/0 0/0 .rodata @3797 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3797 = 30.0f; -COMPILER_STRIP_GATE(0x80D0D230, &lit_3797); -#pragma pop + fopAcM_SetMtx(this, mThashi00Model->getBaseTRMtx()); + initCcCylinder(); + unk636 = 0; + mTrans.set(current.pos.x, current.pos.y, current.pos.z); + daObjTHASHI_Execute(this); + } + return phase_state; +} -/* 80D0D234-80D0D238 0000A8 0004+00 0/0 0/0 0/0 .rodata @3833 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3833 = 150.0f; -COMPILER_STRIP_GATE(0x80D0D234, &lit_3833); -#pragma pop - -/* 80D0D238-80D0D23C 0000AC 0004+00 0/0 0/0 0/0 .rodata @3834 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3834 = 10.0f; -COMPILER_STRIP_GATE(0x80D0D238, &lit_3834); -#pragma pop - -/* 80D0D23C-80D0D240 0000B0 0004+00 0/0 0/0 0/0 .rodata @3855 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3855 = 70.0f; -COMPILER_STRIP_GATE(0x80D0D23C, &lit_3855); -#pragma pop - -/* 80D0D240-80D0D244 0000B4 0004+00 0/0 0/0 0/0 .rodata @3856 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3856 = 13.0f / 20.0f; -COMPILER_STRIP_GATE(0x80D0D240, &lit_3856); -#pragma pop - -/* 80D0D244-80D0D248 0000B8 0004+00 0/0 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3857 = 0.25f; -COMPILER_STRIP_GATE(0x80D0D244, &lit_3857); -#pragma pop - -/* 80D0D248-80D0D24C 0000BC 0004+00 0/0 0/0 0/0 .rodata @3858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3858 = 1.5f; -COMPILER_STRIP_GATE(0x80D0D248, &lit_3858); -#pragma pop - -/* 80D0D24C-80D0D250 0000C0 0004+00 0/0 0/0 0/0 .rodata @3859 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3859 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D0D24C, &lit_3859); -#pragma pop - -/* 80D0D250-80D0D254 0000C4 0004+00 0/0 0/0 0/0 .rodata @3860 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3860 = 1.0f; -COMPILER_STRIP_GATE(0x80D0D250, &lit_3860); -#pragma pop - -/* 80D0D254-80D0D258 0000C8 0004+00 0/0 0/0 0/0 .rodata @3861 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3861 = 8192.0f; -COMPILER_STRIP_GATE(0x80D0D254, &lit_3861); -#pragma pop - -/* 80D0D258-80D0D25C 0000CC 0004+00 0/0 0/0 0/0 .rodata @3862 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3862 = 32000.0f; -COMPILER_STRIP_GATE(0x80D0D258, &lit_3862); -#pragma pop - -/* 80D0D25C-80D0D260 0000D0 0004+00 0/0 0/0 0/0 .rodata @3863 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3863 = 15000.0f; -COMPILER_STRIP_GATE(0x80D0D25C, &lit_3863); -#pragma pop - -/* 80D0D260-80D0D264 0000D4 0004+00 0/0 0/0 0/0 .rodata @3864 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3864 = 65536.0f; -COMPILER_STRIP_GATE(0x80D0D260, &lit_3864); -#pragma pop - -/* 80D0D264-80D0D268 0000D8 0004+00 0/0 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = -1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80D0D264, &lit_3947); -#pragma pop - -/* 80D0D268-80D0D26C 0000DC 0004+00 0/0 0/0 0/0 .rodata @3973 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3973 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D0D268, &lit_3973); -#pragma pop - -/* 80D0D26C-80D0D270 0000E0 0004+00 0/0 0/0 0/0 .rodata @3974 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3974 = 4.0f; -COMPILER_STRIP_GATE(0x80D0D26C, &lit_3974); -#pragma pop - -/* 80D0D270-80D0D274 0000E4 0004+00 0/0 0/0 0/0 .rodata @3975 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3975 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D0D270, &lit_3975); -#pragma pop - -/* 80D0D274-80D0D278 0000E8 0004+00 0/0 0/0 0/0 .rodata @3976 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3976 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D0D274, &lit_3976); -#pragma pop - -/* 80D0D278-80D0D27C 0000EC 0004+00 0/0 0/0 0/0 .rodata @3977 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3977 = 5000.0f; -COMPILER_STRIP_GATE(0x80D0D278, &lit_3977); -#pragma pop - -/* 80D0D27C-80D0D280 0000F0 0004+00 0/0 0/0 0/0 .rodata @3978 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3978 = 5.0f; -COMPILER_STRIP_GATE(0x80D0D27C, &lit_3978); -#pragma pop - -/* 80D0D280-80D0D284 0000F4 0004+00 1/1 0/0 0/0 .rodata @3988 */ -SECTION_RODATA static f32 const lit_3988 = -9.0f; -COMPILER_STRIP_GATE(0x80D0D280, &lit_3988); - -/* 80D0D284-80D0D288 0000F8 0004+00 0/0 0/0 0/0 .rodata @4017 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4017 = 16384.0f; -COMPILER_STRIP_GATE(0x80D0D284, &lit_4017); -#pragma pop - -/* 80D0D288-80D0D28C 0000FC 0004+00 0/0 0/0 0/0 .rodata @4018 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4018 = -1.0f; -COMPILER_STRIP_GATE(0x80D0D288, &lit_4018); -#pragma pop - -/* 80D0D28C-80D0D294 000100 0004+04 0/0 0/0 0/0 .rodata @4019 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4019[1 + 1 /* padding */] = { - 450.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D0D28C, &lit_4019); -#pragma pop - -/* 80D0D294-80D0D29C 000108 0008+00 0/0 0/0 0/0 .rodata @4270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4270[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D294, &lit_4270); -#pragma pop - -/* 80D0D29C-80D0D2A4 000110 0008+00 0/0 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4271[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D29C, &lit_4271); -#pragma pop - -/* 80D0D2A4-80D0D2AC 000118 0008+00 0/0 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4272[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0D2A4, &lit_4272); -#pragma pop - -/* 80D0D2AC-80D0D2B0 000120 0004+00 0/0 0/0 0/0 .rodata @4310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4310 = 3.0f; -COMPILER_STRIP_GATE(0x80D0D2AC, &lit_4310); -#pragma pop - -/* 80D0D2B0-80D0D2B4 000124 0004+00 0/0 0/0 0/0 .rodata @4433 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4433 = 2000.0f; -COMPILER_STRIP_GATE(0x80D0D2B0, &lit_4433); -#pragma pop - -/* 80D0D2B4-80D0D2B8 000128 0004+00 0/0 0/0 0/0 .rodata @4446 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4446 = 608.0f; -COMPILER_STRIP_GATE(0x80D0D2B4, &lit_4446); -#pragma pop - -/* 80D0D2B8-80D0D2BC 00012C 0004+00 0/0 0/0 0/0 .rodata @4447 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4447 = 448.0f; -COMPILER_STRIP_GATE(0x80D0D2B8, &lit_4447); -#pragma pop - -/* 80D0D2BC-80D0D2C0 000130 0004+00 1/1 0/0 0/0 .rodata @4656 */ -SECTION_RODATA static f32 const lit_4656 = -0.0f; -COMPILER_STRIP_GATE(0x80D0D2BC, &lit_4656); - -/* 80D0D2D0-80D0D2D0 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D0D324 = "S_thashi00.dzb"; -#pragma pop +/* 80D0CE68-80D0CE70 000CA8 0008+00 1/0 0/0 0/0 .text daObjTHASHI_IsDelete__FP13daObjTHASHI_c */ +static int daObjTHASHI_IsDelete(daObjTHASHI_c* param_0) { + return TRUE; +} /* 80D0D35C-80D0D37C -00001 0020+00 1/0 0/0 0/0 .data l_daObjTHASHI_Method */ static actor_method_class l_daObjTHASHI_Method = { - (process_method_func)daObjTHASHI_Create__FP10fopAc_ac_c, - (process_method_func)daObjTHASHI_Delete__FP13daObjTHASHI_c, - (process_method_func)daObjTHASHI_Execute__FP13daObjTHASHI_c, - (process_method_func)daObjTHASHI_IsDelete__FP13daObjTHASHI_c, - (process_method_func)daObjTHASHI_Draw__FP13daObjTHASHI_c, + (process_method_func)daObjTHASHI_Create, + (process_method_func)daObjTHASHI_Delete, + (process_method_func)daObjTHASHI_Execute, + (process_method_func)daObjTHASHI_IsDelete, + (process_method_func)daObjTHASHI_Draw, }; /* 80D0D37C-80D0D3AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_THASHI */ @@ -534,197 +282,85 @@ extern actor_process_profile_definition g_profile_Obj_THASHI = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80D0D3AC-80D0D3B8 000078 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80D0D3B8-80D0D3C4 000084 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, -}; - -/* 80D0D3C4-80D0D3D0 000090 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80D0D3D0-80D0D3F4 00009C 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_80D0D17C, - (void*)NULL, - (void*)NULL, - (void*)func_80D0D174, -}; - -/* 80D0D3F4-80D0D41C 0000C0 0028+00 1/1 0/0 0/0 .data __vt__13daObjTHASHI_c */ -SECTION_DATA extern void* __vt__13daObjTHASHI_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjTHASHI_cFv, - (void*)Create__13daObjTHASHI_cFv, - (void*)Execute__13daObjTHASHI_cFPPA3_A4_f, - (void*)Draw__13daObjTHASHI_cFv, - (void*)Delete__13daObjTHASHI_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80D0C8B4-80D0CBC8 0006F4 0314+00 1/1 0/0 0/0 .text create__13daObjTHASHI_cFv */ -void daObjTHASHI_c::create() { - // NONMATCHING -} - -/* 80D0CBC8-80D0CC10 000A08 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D0CC10-80D0CC58 000A50 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D0CC58-80D0CD24 000A98 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80D0CD24-80D0CDA8 000B64 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80D0CDA8-80D0CDF0 000BE8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80D0CDF0-80D0CE60 000C30 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80D0CE60-80D0CE64 000CA0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80D0CE64-80D0CE68 000CA4 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80D0CE68-80D0CE70 000CA8 0008+00 1/0 0/0 0/0 .text daObjTHASHI_IsDelete__FP13daObjTHASHI_c */ -static bool daObjTHASHI_IsDelete(daObjTHASHI_c* param_0) { - return true; -} - -/* ############################################################################################## */ -/* 80D0D2C0-80D0D2C4 000134 0004+00 0/1 0/0 0/0 .rodata @4790 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4790 = -1000.0f; -COMPILER_STRIP_GATE(0x80D0D2C0, &lit_4790); -#pragma pop - -/* 80D0D2C4-80D0D2C8 000138 0004+00 0/1 0/0 0/0 .rodata @4791 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4791 = -500.0f; -COMPILER_STRIP_GATE(0x80D0D2C4, &lit_4791); -#pragma pop - -/* 80D0D2C8-80D0D2CC 00013C 0004+00 0/1 0/0 0/0 .rodata @4792 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4792 = 1000.0f; -COMPILER_STRIP_GATE(0x80D0D2C8, &lit_4792); -#pragma pop - -/* 80D0D2CC-80D0D2D0 000140 0004+00 0/1 0/0 0/0 .rodata @4793 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4793 = 500.0f; -COMPILER_STRIP_GATE(0x80D0D2CC, &lit_4793); -#pragma pop - /* 80D0CE70-80D0CEB4 000CB0 0044+00 1/0 0/0 0/0 .text Create__13daObjTHASHI_cFv */ -void daObjTHASHI_c::Create() { - // NONMATCHING +int daObjTHASHI_c::Create() { + fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0f, 1000.0f); + return cPhs_COMPLEATE_e; } /* 80D0CEB4-80D0CEE0 000CF4 002C+00 1/0 0/0 0/0 .text Execute__13daObjTHASHI_cFPPA3_A4_f */ -void daObjTHASHI_c::Execute(Mtx** param_0) { - // NONMATCHING +int daObjTHASHI_c::Execute(Mtx** i_pMtx) { + *i_pMtx = &mBgMtx; + setBaseMtx(); + return TRUE; } -/* ############################################################################################## */ -/* 80D0D41C-80D0D440 -00001 0024+00 1/1 0/0 0/0 .data @4855 */ -SECTION_DATA static void* lit_4855[9] = { - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x1AC), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x1B8), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x1B8), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x1F0), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x218), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x244), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x244), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x1B8), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x218), -}; - -/* 80D0D440-80D0D464 -00001 0024+00 1/1 0/0 0/0 .data @4854 */ -SECTION_DATA static void* lit_4854[9] = { - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x54), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x70), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x70), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0xDC), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x118), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x168), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x168), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x70), - (void*)(((char*)Draw__13daObjTHASHI_cFv) + 0x118), -}; - /* 80D0CEE0-80D0D140 000D20 0260+00 3/0 0/0 0/0 .text Draw__13daObjTHASHI_cFv */ -void daObjTHASHI_c::Draw() { - // NONMATCHING +// needs to be inline for jump tables to be at end of data +inline int daObjTHASHI_c::Draw() { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + switch (unk5A4) { + case 0: + g_env_light.setLightTevColorType_MAJI(mThashi00Model, &tevStr); + break; + case 1: + case 2: + case 7: + for (int i = 0; i < 10; i++) { + g_env_light.setLightTevColorType_MAJI(mThashi03Models[i], &tevStr); + } + g_env_light.setLightTevColorType_MAJI(mThashi01Model, &tevStr); + g_env_light.setLightTevColorType_MAJI(mThashi02Model, &tevStr); + break; + case 3: + for (int i = 0; i < 50; i++) { + g_env_light.setLightTevColorType_MAJI(mThashi03Models[i], &tevStr); + } + break; + + case 4: + case 8: + for (int i = 0; i < 40; i++) { + g_env_light.setLightTevColorType_MAJI(mThashi03Models[i], &tevStr); + } + g_env_light.setLightTevColorType_MAJI(mThashi01Model, &tevStr); + break; + } + dComIfGd_setListBG(); + switch (unk5A4) { + case 0: + mDoExt_modelUpdateDL(mThashi00Model); + break; + case 1: + case 2: + case 7: + for (int i = 0; i < 10; i++) { + mDoExt_modelUpdateDL(mThashi03Models[i]); + } + mDoExt_modelUpdateDL(mThashi01Model); + mDoExt_modelUpdateDL(mThashi02Model); + break; + case 3: + for (int i = 0; i < 50; i++) { + mDoExt_modelUpdateDL(mThashi03Models[i]); + } + break; + + case 4: + case 8: + for (int i = 0; i < 40; i++) { + mDoExt_modelUpdateDL(mThashi03Models[i]); + } + mDoExt_modelUpdateDL(mThashi01Model); + break; + } + return TRUE; } /* 80D0D140-80D0D174 000F80 0034+00 1/0 0/0 0/0 .text Delete__13daObjTHASHI_cFv */ -void daObjTHASHI_c::Delete() { - // NONMATCHING +// has to be inline to maintain function order with Draw as inline +inline int daObjTHASHI_c::Delete() { + dComIfG_resDelete(&unk11A8, l_arcName); + return TRUE; } - -/* 80D0D174-80D0D17C 000FB4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80D0D174() { - // NONMATCHING -} - -/* 80D0D17C-80D0D184 000FBC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80D0D17C() { - // NONMATCHING -} - -/* 80D0D2D0-80D0D2D0 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */