diff --git a/config/GZ2E01/rels/d_a_obj_crvlh_up/symbols.txt b/config/GZ2E01/rels/d_a_obj_crvlh_up/symbols.txt index 93062756f6b..261dc083e71 100644 --- a/config/GZ2E01/rels/d_a_obj_crvlh_up/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_crvlh_up/symbols.txt @@ -48,8 +48,8 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4001 = .rodata:0x00000060; // type:object size:0x4 scope:local @4002 = .rodata:0x00000064; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000068; // type:object size:0x36 scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_CRVLH_UP = .data:0x00000024; // type:object size:0x30 scope:global __vt__8cM3dGCyl = .data:0x00000054; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000060; // type:object size:0xC scope:global diff --git a/config/GZ2J01/rels/d_a_obj_crvlh_up/symbols.txt b/config/GZ2J01/rels/d_a_obj_crvlh_up/symbols.txt index 93062756f6b..261dc083e71 100644 --- a/config/GZ2J01/rels/d_a_obj_crvlh_up/symbols.txt +++ b/config/GZ2J01/rels/d_a_obj_crvlh_up/symbols.txt @@ -48,8 +48,8 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4001 = .rodata:0x00000060; // type:object size:0x4 scope:local @4002 = .rodata:0x00000064; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000068; // type:object size:0x36 scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_CRVLH_UP = .data:0x00000024; // type:object size:0x30 scope:global __vt__8cM3dGCyl = .data:0x00000054; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000060; // type:object size:0xC scope:global diff --git a/config/GZ2P01/rels/d_a_obj_crvlh_up/symbols.txt b/config/GZ2P01/rels/d_a_obj_crvlh_up/symbols.txt index 93062756f6b..261dc083e71 100644 --- a/config/GZ2P01/rels/d_a_obj_crvlh_up/symbols.txt +++ b/config/GZ2P01/rels/d_a_obj_crvlh_up/symbols.txt @@ -48,8 +48,8 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4001 = .rodata:0x00000060; // type:object size:0x4 scope:local @4002 = .rodata:0x00000064; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000068; // type:object size:0x36 scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjCRVLH_UP_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_CRVLH_UP = .data:0x00000024; // type:object size:0x30 scope:global __vt__8cM3dGCyl = .data:0x00000054; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000060; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index 9db2cbf5bf3..14eac6976a2 100755 --- a/configure.py +++ b/configure.py @@ -1956,7 +1956,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvgate"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvhahen"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvlh_down"), - ActorRel(NonMatching, "d_a_obj_crvlh_up"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvlh_up"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvsteel"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crystal"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_cwall"), diff --git a/include/d/actor/d_a_obj_crvlh_up.h b/include/d/actor/d_a_obj_crvlh_up.h index f568760c8cd..d3a72fa8a8b 100644 --- a/include/d/actor/d_a_obj_crvlh_up.h +++ b/include/d/actor/d_a_obj_crvlh_up.h @@ -1,7 +1,8 @@ #ifndef D_A_OBJ_CRVLH_UP_H #define D_A_OBJ_CRVLH_UP_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -11,24 +12,40 @@ * @details * */ -class daObjCRVLH_UP_c : public fopAc_ac_c { +class daObjCRVLH_UP_c : public dBgS_MoveBgActor { public: /* 80BD4F1C */ void HakaiSet(); /* 80BD4FB0 */ void UpMotion(); /* 80BD4FD8 */ void Hakai(); /* 80BD5254 */ void setBaseMtx(); - /* 80BD5378 */ void CreateHeap(); - /* 80BD53F0 */ void create(); - /* 80BD56EC */ void Create(); - /* 80BD5730 */ void Execute(Mtx**); - /* 80BD593C */ void Draw(); - /* 80BD59C0 */ void Delete(); + /* 80BD53F0 */ int create(); + + /* 80BD5378 */ virtual int CreateHeap(); + /* 80BD56EC */ virtual int Create(); + /* 80BD5730 */ virtual int Execute(Mtx**); + /* 80BD593C */ virtual int Draw(); + /* 80BD59C0 */ virtual int Delete(); private: - /* 0x568 */ u8 field_0x568[0x770 - 0x568]; + /* 0x568 */ u8 field_0x568[0x5a4 - 0x5a0]; + /* 0x5A4 */ fpc_ProcID field_0x5a4; + /* 0x5A8 */ fpc_ProcID field_0x5a8; + /* 0x5AC */ cXyz field_0x5ac[3]; + /* 0x5D0 */ f32 field_0x5d0; + /* 0x5D4 */ u8 field_0x5d4; + /* 0x5D6 */ s16 field_0x5d6; + /* 0x5D8 */ s16 field_0x5d8; + /* 0x5DA */ u8 field_0x5da; + /* 0x5DB */ u8 field_0x5db; + /* 0x5DC */ f32 field_0x5dc; + /* 0x5E0 */ u8 field_0x5e0[8]; + /* 0x5E8 */ J3DModel* mpModel; + /* 0x5EC */ request_of_phase_process_class mPhase; + /* 0x5F4 */ dCcD_Stts mStts; + /* 0x630 */ dCcD_Cyl mCyl; + /* 0x76C */ u8 field_0x76c; }; STATIC_ASSERT(sizeof(daObjCRVLH_UP_c) == 0x770); - #endif /* D_A_OBJ_CRVLH_UP_H */ diff --git a/src/d/actor/d_a_obj_crvlh_up.cpp b/src/d/actor/d_a_obj_crvlh_up.cpp index 123b18ae1d0..73467739fb2 100644 --- a/src/d/actor/d_a_obj_crvlh_up.cpp +++ b/src/d/actor/d_a_obj_crvlh_up.cpp @@ -1,452 +1,237 @@ /** * @file d_a_obj_crvlh_up.cpp - * -*/ + * + */ #include "d/dolzel_rel.h" +#include "d/actor/d_a_obj_crvhahen.h" #include "d/actor/d_a_obj_crvlh_up.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" #include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void daObjCRVLH_UP_Create__FP10fopAc_ac_c(); -extern "C" static void daObjCRVLH_UP_Delete__FP15daObjCRVLH_UP_c(); -extern "C" void HakaiSet__15daObjCRVLH_UP_cFv(); -extern "C" void UpMotion__15daObjCRVLH_UP_cFv(); -extern "C" void Hakai__15daObjCRVLH_UP_cFv(); -extern "C" void setBaseMtx__15daObjCRVLH_UP_cFv(); -extern "C" static void daObjCRVLH_UP_Draw__FP15daObjCRVLH_UP_c(); -extern "C" static void daObjCRVLH_UP_Execute__FP15daObjCRVLH_UP_c(); -extern "C" void CreateHeap__15daObjCRVLH_UP_cFv(); -extern "C" void create__15daObjCRVLH_UP_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" static bool daObjCRVLH_UP_IsDelete__FP15daObjCRVLH_UP_c(); -extern "C" void Create__15daObjCRVLH_UP_cFv(); -extern "C" void Execute__15daObjCRVLH_UP_cFPPA3_A4_f(); -extern "C" void Draw__15daObjCRVLH_UP_cFv(); -extern "C" void Delete__15daObjCRVLH_UP_cFv(); -extern "C" extern char const* const d_a_obj_crvlh_up__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -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 dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -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 __ct__10dCcD_GSttsFv(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_rndFX__Ff(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void HahenSet__15daObjCRVHAHEN_cF4cXyz4cXyz4cXyz4cXyzf(); - -// -// Declarations: -// - /* 80BD4ED8-80BD4EF8 000078 0020+00 1/0 0/0 0/0 .text daObjCRVLH_UP_Create__FP10fopAc_ac_c */ -static void daObjCRVLH_UP_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjCRVLH_UP_Create(fopAc_ac_c* i_this) { + return ((daObjCRVLH_UP_c*)i_this)->create(); } /* 80BD4EF8-80BD4F1C 000098 0024+00 1/0 0/0 0/0 .text daObjCRVLH_UP_Delete__FP15daObjCRVLH_UP_c */ -static void daObjCRVLH_UP_Delete(daObjCRVLH_UP_c* param_0) { - // NONMATCHING +static int daObjCRVLH_UP_Delete(daObjCRVLH_UP_c* i_this) { + i_this->MoveBGDelete(); + return 1; } -/* ############################################################################################## */ -/* 80BD59FC-80BD5A00 000000 0004+00 6/6 0/0 0/0 .rodata @3672 */ -SECTION_RODATA static f32 const lit_3672 = 16000.0f; -COMPILER_STRIP_GATE(0x80BD59FC, &lit_3672); - -/* 80BD5A64-80BD5A64 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BD5A64 = "CrvLH_Up"; -SECTION_DEAD static char const* const stringBase_80BD5A6D = "Release Error\n"; -#pragma pop +/* 80BD5A9C-80BD5AA0 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ +static char* l_arcName = "CrvLH_Up"; /* 80BD4F1C-80BD4FB0 0000BC 0094+00 0/0 0/0 1/1 .text HakaiSet__15daObjCRVLH_UP_cFv */ void daObjCRVLH_UP_c::HakaiSet() { - // NONMATCHING + fopAcM_GetPosition(daPy_getPlayerActorClass()); + field_0x5db = 1; + + if (mpBgW != NULL && mpBgW->ChkUsed()) { + if (dComIfG_Bgsp().Release(mpBgW)) { + OSReport("Release Error\n"); + } + } + field_0x5d6 = cM_rndFX(16000.0f); } -/* ############################################################################################## */ -/* 80BD5A00-80BD5A04 000004 0004+00 1/1 0/0 0/0 .rodata @3681 */ -SECTION_RODATA static f32 const lit_3681 = -120.0f; -COMPILER_STRIP_GATE(0x80BD5A00, &lit_3681); - -/* 80BD5A04-80BD5A08 000008 0004+00 1/1 0/0 0/0 .rodata @3682 */ -SECTION_RODATA static f32 const lit_3682 = -5.0f; -COMPILER_STRIP_GATE(0x80BD5A04, &lit_3682); - /* 80BD4FB0-80BD4FD8 000150 0028+00 1/1 0/0 0/0 .text UpMotion__15daObjCRVLH_UP_cFv */ void daObjCRVLH_UP_c::UpMotion() { - // NONMATCHING + if (!(field_0x5dc < nREG_F(2) + -120.0f)) { + field_0x5dc += -5.0f; + } } -/* ############################################################################################## */ -/* 80BD5A08-80BD5A0C 00000C 0004+00 0/1 0/0 0/0 .rodata @3723 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3723 = 1.0f; -COMPILER_STRIP_GATE(0x80BD5A08, &lit_3723); -#pragma pop - -/* 80BD5A0C-80BD5A10 000010 0004+00 0/1 0/0 0/0 .rodata @3724 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3724 = -1.0f; -COMPILER_STRIP_GATE(0x80BD5A0C, &lit_3724); -#pragma pop - -/* 80BD5A10-80BD5A14 000014 0004+00 0/4 0/0 0/0 .rodata @3725 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3725[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BD5A10, &lit_3725); -#pragma pop - -/* 80BD5A14-80BD5A18 000018 0004+00 0/2 0/0 0/0 .rodata @3726 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3726 = 150.0f; -COMPILER_STRIP_GATE(0x80BD5A14, &lit_3726); -#pragma pop - -/* 80BD5A18-80BD5A1C 00001C 0004+00 0/1 0/0 0/0 .rodata @3727 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3727 = 350.0f; -COMPILER_STRIP_GATE(0x80BD5A18, &lit_3727); -#pragma pop - -/* 80BD5A1C-80BD5A24 000020 0004+04 0/1 0/0 0/0 .rodata @3728 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3728[1 + 1 /* padding */] = { - 148.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80BD5A1C, &lit_3728); -#pragma pop - -/* 80BD5A24-80BD5A2C 000028 0008+00 0/1 0/0 0/0 .rodata @3730 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3730[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BD5A24, &lit_3730); -#pragma pop - /* 80BD4FD8-80BD5254 000178 027C+00 1/1 0/0 0/0 .text Hakai__15daObjCRVLH_UP_cFv */ void daObjCRVLH_UP_c::Hakai() { - // NONMATCHING -} + if (cLib_chaseAngleS(&shape_angle.x, 0x3800, field_0x5d8) != 0) { + fopAcM_seStartCurrent(this, Z2SE_OBJ_YAGURA_LAND, 0); + field_0x5da = 1; + csXyz cStack_30(shape_angle.x, field_0x5d6, shape_angle.z); + csXyz cStack_38(0, 0, 0); -/* ############################################################################################## */ -/* 80BD5A2C-80BD5A30 000030 0004+00 0/1 0/0 0/0 .rodata @3769 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3769 = -150.0f; -COMPILER_STRIP_GATE(0x80BD5A2C, &lit_3769); -#pragma pop + for (int i = 0; i < 2; i++) { + mDoMtx_stack_c::transS(current.pos.x, field_0x5d0, current.pos.z); + mDoMtx_stack_c::YrotM(field_0x5d6); + mDoMtx_stack_c::transM(0.0f, 0.0f, i * 350.0f + 150.0f); + mDoMtx_stack_c::YrotM(-field_0x5d6); + mDoMtx_stack_c::multVec(&field_0x5ac[i], &field_0x5ac[i]); + } + + field_0x5a4 = fopAcM_create(PROC_Obj_CRVHAHEN, 1, &field_0x5ac[0], fopAcM_GetRoomNo(this), + &cStack_30, 0, -1); + field_0x5a8 = fopAcM_create(PROC_Obj_CRVHAHEN, 1, &field_0x5ac[1], fopAcM_GetRoomNo(this), + &cStack_30, 0, -1); + dComIfGp_particle_set(dPa_RM(ID_ZF_S_CRVYAGURA05_SMK), &field_0x5ac[1], &tevStr, &cStack_30, + 0); + } + + field_0x5d8 += nREG_F(1) + 148.0f; +} /* 80BD5254-80BD532C 0003F4 00D8+00 1/1 0/0 0/0 .text setBaseMtx__15daObjCRVLH_UP_cFv */ void daObjCRVLH_UP_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(0.0f, field_0x5dc, 0.0f); + mDoMtx_stack_c::YrotM(field_0x5d6 - shape_angle.y); + mDoMtx_stack_c::transM(0.0f, HREG_F(8) + 150.0f, 0.0f); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::transM(0.0f, HREG_F(7) + -150.0f, 0.0f); + mDoMtx_stack_c::YrotM(-(field_0x5d6 - shape_angle.y)); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } /* 80BD532C-80BD5358 0004CC 002C+00 1/0 0/0 0/0 .text daObjCRVLH_UP_Draw__FP15daObjCRVLH_UP_c */ -static void daObjCRVLH_UP_Draw(daObjCRVLH_UP_c* param_0) { - // NONMATCHING +static int daObjCRVLH_UP_Draw(daObjCRVLH_UP_c* i_this) { + return i_this->Draw(); } /* 80BD5358-80BD5378 0004F8 0020+00 2/1 0/0 0/0 .text daObjCRVLH_UP_Execute__FP15daObjCRVLH_UP_c */ -static void daObjCRVLH_UP_Execute(daObjCRVLH_UP_c* param_0) { - // NONMATCHING +static int daObjCRVLH_UP_Execute(daObjCRVLH_UP_c* i_this) { + return i_this->MoveBGExecute(); } -/* ############################################################################################## */ -/* 80BD5A64-80BD5A64 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BD5A7C = "U_CrvLH_UP.bmd"; -#pragma pop - -/* 80BD5A9C-80BD5AA0 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_crvlh_up__stringBase0; - /* 80BD5378-80BD53F0 000518 0078+00 1/0 0/0 0/0 .text CreateHeap__15daObjCRVLH_UP_cFv */ -void daObjCRVLH_UP_c::CreateHeap() { - // NONMATCHING +int daObjCRVLH_UP_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "U_CrvLH_UP.bmd"); + if (modelData == NULL) { + JUT_ASSERT(87, modelData != 0); + } + + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + return mpModel != NULL ? 1 : 0; } -/* ############################################################################################## */ -/* 80BD5A30-80BD5A34 000034 0004+00 0/1 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3857 = -9.0f; -COMPILER_STRIP_GATE(0x80BD5A30, &lit_3857); -#pragma pop - -/* 80BD5A34-80BD5A38 000038 0004+00 0/2 0/0 0/0 .rodata @3858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3858 = 100.0f; -COMPILER_STRIP_GATE(0x80BD5A34, &lit_3858); -#pragma pop - -/* 80BD5A38-80BD5A3C 00003C 0004+00 0/2 0/0 0/0 .rodata @3859 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3859 = -500.0f; -COMPILER_STRIP_GATE(0x80BD5A38, &lit_3859); -#pragma pop - -/* 80BD5A3C-80BD5A40 000040 0004+00 0/2 0/0 0/0 .rodata @3860 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3860 = 500.0f; -COMPILER_STRIP_GATE(0x80BD5A3C, &lit_3860); -#pragma pop - -/* 80BD5A40-80BD5A44 000044 0004+00 0/1 0/0 0/0 .rodata @3861 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3861 = 2000.0f; -COMPILER_STRIP_GATE(0x80BD5A40, &lit_3861); -#pragma pop - -/* 80BD5A64-80BD5A64 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BD5A8B = "U_CrvLH_Up.dzb"; -#pragma pop - -/* 80BD5AA0-80BD5AC0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCRVLH_UP_Method */ -static actor_method_class l_daObjCRVLH_UP_Method = { - (process_method_func)daObjCRVLH_UP_Create__FP10fopAc_ac_c, - (process_method_func)daObjCRVLH_UP_Delete__FP15daObjCRVLH_UP_c, - (process_method_func)daObjCRVLH_UP_Execute__FP15daObjCRVLH_UP_c, - (process_method_func)daObjCRVLH_UP_IsDelete__FP15daObjCRVLH_UP_c, - (process_method_func)daObjCRVLH_UP_Draw__FP15daObjCRVLH_UP_c, -}; - -/* 80BD5AC0-80BD5AF0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_CRVLH_UP */ -extern actor_process_profile_definition g_profile_Obj_CRVLH_UP = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_CRVLH_UP, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjCRVLH_UP_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 470, // mPriority - &l_daObjCRVLH_UP_Method, // sub_method - 0x00040180, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80BD5AF0-80BD5AFC 000054 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80BD5AFC-80BD5B08 000060 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80BD5B08-80BD5B30 00006C 0028+00 1/1 0/0 0/0 .data __vt__15daObjCRVLH_UP_c */ -SECTION_DATA extern void* __vt__15daObjCRVLH_UP_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__15daObjCRVLH_UP_cFv, - (void*)Create__15daObjCRVLH_UP_cFv, - (void*)Execute__15daObjCRVLH_UP_cFPPA3_A4_f, - (void*)Draw__15daObjCRVLH_UP_cFv, - (void*)Delete__15daObjCRVLH_UP_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - /* 80BD53F0-80BD5614 000590 0224+00 1/1 0/0 0/0 .text create__15daObjCRVLH_UP_cFv */ -void daObjCRVLH_UP_c::create() { - // NONMATCHING -} +int daObjCRVLH_UP_c::create() { + fopAcM_SetupActor(this, daObjCRVLH_UP_c); + int phase = dComIfG_resLoad(&mPhase, l_arcName); -/* 80BD5614-80BD565C 0007B4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} + if (phase == cPhs_COMPLEATE_e) { + gravity = nREG_F(0) + -9.0f; + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "U_CrvLH_Up.dzb"); + if (dzb_id == -1) { + // "dzb data not found!<%s>" + OS_REPORT("dzbデータが見つかりませんでした!<%s>", l_arcName); + } -/* 80BD565C-80BD56A4 0007FC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} + JUT_ASSERT(504, dzb_id != -1); + phase = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0xe80, NULL); -/* 80BD56A4-80BD56E0 000844 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} + if (phase == cPhs_ERROR_e) { + return phase; + } -/* 80BD56E0-80BD56E4 000880 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + field_0x5ac[0].set(0.0f, 0.0f, 0.0f); + field_0x5ac[1].set(0.0f, 0.0f, 0.0f); + + cXyz cStack_28(current.pos.x, current.pos.y + 100.0f, current.pos.z); + + fopAcM_setCullSizeFar(this, 100.0f); + field_0x5d0 = current.pos.y; + field_0x5dc = 0; + fopAcM_setCullSizeBox(this, -500.0f, -500.0f, -500.0f, 500.0f, 2000.0f, 500.0f); + daObjCRVLH_UP_Execute(this); + } + + return phase; } /* 80BD56E4-80BD56EC 000884 0008+00 1/0 0/0 0/0 .text daObjCRVLH_UP_IsDelete__FP15daObjCRVLH_UP_c */ -static bool daObjCRVLH_UP_IsDelete(daObjCRVLH_UP_c* param_0) { - return true; +static int daObjCRVLH_UP_IsDelete(daObjCRVLH_UP_c* i_this) { + return 1; } -/* ############################################################################################## */ -/* 80BD5A44-80BD5A48 000048 0004+00 0/1 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3940 = -1000.0f; -COMPILER_STRIP_GATE(0x80BD5A44, &lit_3940); -#pragma pop - -/* 80BD5A48-80BD5A4C 00004C 0004+00 0/1 0/0 0/0 .rodata @3941 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3941 = 1000.0f; -COMPILER_STRIP_GATE(0x80BD5A48, &lit_3941); -#pragma pop - /* 80BD56EC-80BD5730 00088C 0044+00 1/0 0/0 0/0 .text Create__15daObjCRVLH_UP_cFv */ -void daObjCRVLH_UP_c::Create() { - // NONMATCHING +int daObjCRVLH_UP_c::Create() { + fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0f, 1000.0f); + return 4; } -/* ############################################################################################## */ -/* 80BD5A4C-80BD5A50 000050 0004+00 0/1 0/0 0/0 .rodata @3997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3997 = 250.0f; -COMPILER_STRIP_GATE(0x80BD5A4C, &lit_3997); -#pragma pop - -/* 80BD5A50-80BD5A54 000054 0004+00 0/1 0/0 0/0 .rodata @3998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3998 = 80.0f; -COMPILER_STRIP_GATE(0x80BD5A50, &lit_3998); -#pragma pop - -/* 80BD5A54-80BD5A58 000058 0004+00 0/1 0/0 0/0 .rodata @3999 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3999 = 60.0f; -COMPILER_STRIP_GATE(0x80BD5A54, &lit_3999); -#pragma pop - -/* 80BD5A58-80BD5A5C 00005C 0004+00 0/1 0/0 0/0 .rodata @4000 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4000 = 10.0f; -COMPILER_STRIP_GATE(0x80BD5A58, &lit_4000); -#pragma pop - -/* 80BD5A5C-80BD5A60 000060 0004+00 0/1 0/0 0/0 .rodata @4001 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4001 = 20.0f; -COMPILER_STRIP_GATE(0x80BD5A5C, &lit_4001); -#pragma pop - -/* 80BD5A60-80BD5A64 000064 0004+00 0/1 0/0 0/0 .rodata @4002 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4002 = 3000.0f; -COMPILER_STRIP_GATE(0x80BD5A60, &lit_4002); -#pragma pop - /* 80BD5730-80BD593C 0008D0 020C+00 1/0 0/0 0/0 .text Execute__15daObjCRVLH_UP_cFPPA3_A4_f */ -void daObjCRVLH_UP_c::Execute(Mtx** param_0) { - // NONMATCHING +int daObjCRVLH_UP_c::Execute(Mtx** param_0) { + fopAc_ac_c* local_a4; + fopAc_ac_c* local_a8; + + if (field_0x5d4 != 0) { + fopAcM_delete(this); + } + + if (field_0x5da == 0) { + if (field_0x5db != 0) { + Hakai(); + UpMotion(); + } + } else { + if (fopAcM_SearchByID(field_0x5a4, &local_a4) != 0 && + fopAcM_SearchByID(field_0x5a8, &local_a8) != 0 && local_a4 != NULL && local_a8 != NULL) + { + cXyz cStack_1c(100.0f, 250.0f, 80.0f); + cXyz cStack_28(yREG_F(15) + 60.0f, yREG_F(16) + 60.0f, yREG_F(17) + 60.0f); + cXyz cStack_34(0.0f, 10.0f, 0.0f); + cXyz cStack_40(10.0f, 20.0f, 20.0f); + ((daObjCRVHAHEN_c*)local_a4) + ->HahenSet(cStack_1c, cStack_34, cStack_28, cStack_40, 3000.0f); + + // copy pasta mistake? + cStack_1c.set(100.0f, 250.0f, 80.0f); + cStack_28.set(yREG_F(15) + 60.0f, yREG_F(16) + 60.0f, yREG_F(17) + 60.0f); + cStack_1c.set(100.0f, 250.0f, 80.0f); + cStack_28.set(yREG_F(15) + 60.0f, yREG_F(16) + 60.0f, yREG_F(17) + 60.0f); + ((daObjCRVHAHEN_c*)local_a8) + ->HahenSet(cStack_1c, cStack_34, cStack_28, cStack_40, 3000.0f); + field_0x5d4 = 1; + } + } + + *param_0 = &mBgMtx; + setBaseMtx(); + return 1; } /* 80BD593C-80BD59C0 000ADC 0084+00 1/0 0/0 0/0 .text Draw__15daObjCRVLH_UP_cFv */ -void daObjCRVLH_UP_c::Draw() { - // NONMATCHING +int daObjCRVLH_UP_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + return 1; } /* 80BD59C0-80BD59F4 000B60 0034+00 1/0 0/0 0/0 .text Delete__15daObjCRVLH_UP_cFv */ -void daObjCRVLH_UP_c::Delete() { - // NONMATCHING +int daObjCRVLH_UP_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName); + return 1; } -/* 80BD5A64-80BD5A64 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80BD5AA0-80BD5AC0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCRVLH_UP_Method */ +static actor_method_class l_daObjCRVLH_UP_Method = { + (process_method_func)daObjCRVLH_UP_Create, (process_method_func)daObjCRVLH_UP_Delete, + (process_method_func)daObjCRVLH_UP_Execute, (process_method_func)daObjCRVLH_UP_IsDelete, + (process_method_func)daObjCRVLH_UP_Draw, +}; + +/* 80BD5AC0-80BD5AF0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_CRVLH_UP */ +extern actor_process_profile_definition g_profile_Obj_CRVLH_UP = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_CRVLH_UP, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjCRVLH_UP_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 470, // mPriority + &l_daObjCRVLH_UP_Method, // sub_method + 0x00040180, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};