diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-09-16 07:31:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-16 17:31:37 +0300 |
| commit | e931b1fb7967ef3419945c1d7a327c8be3879f50 (patch) | |
| tree | 1a5435bf365540747ad43718617c5537d91396bd /src/d/actor/d_a_obj_bhashi.cpp | |
| parent | a8136496c7c0e35daf5e320eceb6ad745df1068a (diff) | |
swpush5 / bhashi done (#2663)
* swpush5 done
* bhashi done
* gptaru done
Diffstat (limited to 'src/d/actor/d_a_obj_bhashi.cpp')
| -rw-r--r-- | src/d/actor/d_a_obj_bhashi.cpp | 1073 |
1 files changed, 448 insertions, 625 deletions
diff --git a/src/d/actor/d_a_obj_bhashi.cpp b/src/d/actor/d_a_obj_bhashi.cpp index bc63c33ecd..dbf37aae61 100644 --- a/src/d/actor/d_a_obj_bhashi.cpp +++ b/src/d/actor/d_a_obj_bhashi.cpp @@ -6,613 +6,531 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_bhashi.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void initCcCylinder__13daObjBHASHI_cFv(); -extern "C" void setCcCylinder__13daObjBHASHI_cFv(); -extern "C" static void daObjBHASHI_Create__FP10fopAc_ac_c(); -extern "C" static void daObjBHASHI_Delete__FP13daObjBHASHI_c(); -extern "C" void Set_Hahen__13daObjBHASHI_cFv(); -extern "C" void Set_Speed__13daObjBHASHI_cFssff(); -extern "C" void Obj_Damage__13daObjBHASHI_cFv(); -extern "C" void Obj_Damage__13daObjBHASHI_cF4cXyz(); -extern "C" void __ct__7Hahen_cFv(); -extern "C" void Wall_Check__7Hahen_cFv(); -extern "C" void HahenMotion__7Hahen_cFv(); -extern "C" void CheckCull__7Hahen_cFv(); -extern "C" void checkViewArea__7Hahen_cFv(); -extern "C" void Rolling__13daObjBHASHI_cFP4cXyzff(); -extern "C" void Roll_Set__7Hahen_cFP4cXyzfs(); -extern "C" void setBaseMtx__13daObjBHASHI_cFv(); -extern "C" static void daObjBHASHI_Draw__FP13daObjBHASHI_c(); -extern "C" static void daObjBHASHI_Execute__FP13daObjBHASHI_c(); -extern "C" void CreateHeap__13daObjBHASHI_cFv(); -extern "C" void create__13daObjBHASHI_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__7Hahen_cFv(); -extern "C" static bool daObjBHASHI_IsDelete__FP13daObjBHASHI_c(); -extern "C" void Create__13daObjBHASHI_cFv(); -extern "C" void Execute__13daObjBHASHI_cFPPA3_A4_f(); -extern "C" void Draw__13daObjBHASHI_cFv(); -extern "C" void Delete__13daObjBHASHI_cFv(); -extern "C" extern char const* const d_a_obj_bhashi__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__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 mDoLib_project__FP3VecP3Vec(); -extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc(); -extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai(); -extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -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 StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -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 Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void ResetTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__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 GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -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 sincosTable___5JMath[65536]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80578A88-80578ACC 000000 0044+00 11/11 0/0 0/0 .rodata ccCylSrc$3780 */ -const static dCcD_SrcCyl ccCylSrc = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {0.0f, 0.0f, 0.0f}, // mCenter - 300.0f, // mRadius - 2200.0f // mHeight - } // mCyl -}; +#include "d/actor/d_a_player.h" +#include "d/actor/d_a_b_mgn.h" +#include "d/d_s_play.h" /* 80576A58-80576AC4 000078 006C+00 1/1 0/0 0/0 .text initCcCylinder__13daObjBHASHI_cFv */ void daObjBHASHI_c::initCcCylinder() { - // NONMATCHING + const static dCcD_SrcCyl ccCylSrc = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 300.0f, // mRadius + 2200.0f // mHeight + } // mCyl + }; + + mCcStts.Init(0xFF, 0xFF, this); + mCcCyl.Set(ccCylSrc); + mCcCyl.SetStts(&mCcStts); + mCcCyl.SetC(current.pos); + mCcCyl.OnTgShield(); } -/* ############################################################################################## */ -/* 80578ACC-80578AD0 000044 0004+00 2/2 0/0 0/0 .rodata @3795 */ -SECTION_RODATA static f32 const lit_3795 = -1100.0f; -COMPILER_STRIP_GATE(0x80578ACC, &lit_3795); - /* 80576AC4-80576B34 0000E4 0070+00 1/1 0/0 0/0 .text setCcCylinder__13daObjBHASHI_cFv */ void daObjBHASHI_c::setCcCylinder() { - // NONMATCHING + cXyz pos; + pos = current.pos; + pos.y += -1100.0f; + mCcCyl.SetC(pos); + dComIfG_Ccsp()->Set(&mCcCyl); } /* 80576B34-80576B54 000154 0020+00 1/0 0/0 0/0 .text daObjBHASHI_Create__FP10fopAc_ac_c */ -static void daObjBHASHI_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Create(fopAc_ac_c* i_this) { + return ((daObjBHASHI_c*)i_this)->create(); } /* 80576B54-80576B78 000174 0024+00 1/0 0/0 0/0 .text daObjBHASHI_Delete__FP13daObjBHASHI_c */ -static void daObjBHASHI_Delete(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Delete(daObjBHASHI_c* i_this) { + i_this->MoveBGDelete(); + return 1; } -/* ############################################################################################## */ -/* 80578AD0-80578AD4 000048 0004+00 1/5 0/0 0/0 .rodata @3829 */ -SECTION_RODATA static f32 const lit_3829 = 1100.0f; -COMPILER_STRIP_GATE(0x80578AD0, &lit_3829); - -/* 80578AD4-80578AD8 00004C 0004+00 1/1 0/0 0/0 .rodata @3830 */ -SECTION_RODATA static f32 const lit_3830 = 50.0f; -COMPILER_STRIP_GATE(0x80578AD4, &lit_3830); - /* 80576B78-80576C50 000198 00D8+00 2/2 0/0 0/0 .text Set_Hahen__13daObjBHASHI_cFv */ void daObjBHASHI_c::Set_Hahen() { - // NONMATCHING + csXyz sp8(0, 0, 0); + + if (mMode == 0) { + cXyz sp10(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + sp8.y = field_0x11dc; + Set_Speed(0, 60, 50.0f, 50.0f); + mMode = 2; + field_0x11e0 = 1000; + + if (mpBgW != NULL && mpBgW->ChkUsed() && dComIfG_Bgsp().Release(mpBgW)) { + OS_REPORT("Release Error\n"); + } + } } -/* ############################################################################################## */ -/* 80578AD8-80578ADC 000050 0004+00 0/1 0/0 0/0 .rodata @3922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3922 = 80.0f; -COMPILER_STRIP_GATE(0x80578AD8, &lit_3922); -#pragma pop - -/* 80578ADC-80578AE0 000054 0004+00 0/1 0/0 0/0 .rodata @3923 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3923 = 350.0f; -COMPILER_STRIP_GATE(0x80578ADC, &lit_3923); -#pragma pop - -/* 80578AE0-80578AE4 000058 0004+00 0/1 0/0 0/0 .rodata @3924 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3924 = 2.5f; -COMPILER_STRIP_GATE(0x80578AE0, &lit_3924); -#pragma pop - -/* 80578AE4-80578AE8 00005C 0004+00 0/1 0/0 0/0 .rodata @3925 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3925 = 5.5f; -COMPILER_STRIP_GATE(0x80578AE4, &lit_3925); -#pragma pop - -/* 80578AE8-80578AEC 000060 0004+00 0/1 0/0 0/0 .rodata @3926 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3926 = 31.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578AE8, &lit_3926); -#pragma pop - -/* 80578AEC-80578AF0 000064 0004+00 0/1 0/0 0/0 .rodata @3927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3927 = 4.5f; -COMPILER_STRIP_GATE(0x80578AEC, &lit_3927); -#pragma pop - -/* 80578AF0-80578AF4 000068 0004+00 0/2 0/0 0/0 .rodata @3928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3928 = 2.0f; -COMPILER_STRIP_GATE(0x80578AF0, &lit_3928); -#pragma pop - -/* 80578AF4-80578AF8 00006C 0004+00 0/1 0/0 0/0 .rodata @3929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3929 = 30.0f; -COMPILER_STRIP_GATE(0x80578AF4, &lit_3929); -#pragma pop - -/* 80578AF8-80578AFC 000070 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = 8192.0f; -COMPILER_STRIP_GATE(0x80578AF8, &lit_3930); -#pragma pop - -/* 80578AFC-80578B00 000074 0004+00 1/9 0/0 0/0 .rodata @3931 */ -SECTION_RODATA static u8 const lit_3931[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80578AFC, &lit_3931); - -/* 80578B00-80578B04 000078 0004+00 0/1 0/0 0/0 .rodata @3932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3932 = 15000.0f; -COMPILER_STRIP_GATE(0x80578B00, &lit_3932); -#pragma pop - -/* 80578B04-80578B08 00007C 0004+00 0/1 0/0 0/0 .rodata @3933 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3933 = 65536.0f; -COMPILER_STRIP_GATE(0x80578B04, &lit_3933); -#pragma pop - -/* 80578B08-80578B0C 000080 0004+00 0/1 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3934 = 1050.0f; -COMPILER_STRIP_GATE(0x80578B08, &lit_3934); -#pragma pop - -/* 80578B0C-80578B10 000084 0004+00 0/1 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 60.0f; -COMPILER_STRIP_GATE(0x80578B0C, &lit_3935); -#pragma pop - -/* 80578B10-80578B14 000088 0004+00 0/1 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 10.0f; -COMPILER_STRIP_GATE(0x80578B10, &lit_3936); -#pragma pop - -/* 80578B14-80578B18 00008C 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = 20.0f; -COMPILER_STRIP_GATE(0x80578B14, &lit_3937); -#pragma pop - -/* 80578B18-80578B1C 000090 0004+00 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 1750.0f; -COMPILER_STRIP_GATE(0x80578B18, &lit_3938); -#pragma pop - -/* 80578B1C-80578B20 000094 0004+00 0/1 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = 32000.0f; -COMPILER_STRIP_GATE(0x80578B1C, &lit_3939); -#pragma pop - -/* 80578B20-80578B28 000098 0008+00 0/3 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3942[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B20, &lit_3942); -#pragma pop - /* 80576C50-805771EC 000270 059C+00 1/1 0/0 0/0 .text Set_Speed__13daObjBHASHI_cFssff */ -void daObjBHASHI_c::Set_Speed(s16 param_0, s16 param_1, f32 param_2, f32 param_3) { - // NONMATCHING +void daObjBHASHI_c::Set_Speed(s16 param_0, s16 i_hahenNum, f32 param_2, f32 param_3) { + csXyz sp24; + f32 var_f31; + f32 var_f30; + s16 rot_y; + + for (int i = param_0; i < i_hahenNum - 40; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 350.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)), + (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)), + (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f))); + + var_f30 = nREG_F(1) + (60.0f + (param_2 + cM_rndFX(param_3))); + var_f31 = 30.0f + cM_rndFX(30.0f + nREG_F(2)); + rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f)); + + mHahen[i].speed.set(0.0f, 0.0f, var_f31); + mDoMtx_stack_c::YrotS(rot_y); + mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed); + mHahen[i].speed.y = var_f31; + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } + + for (int i = i_hahenNum - 40; i < i_hahenNum - 20; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 1050.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)), + (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)), + (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f))); + + var_f30 = nREG_F(3) + (50.0f + cM_rndFX(60.0f)); + var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f)); + rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f)); + + mHahen[i].speed.set(0.0f, 0.0f, var_f31); + mDoMtx_stack_c::YrotS(rot_y); + mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed); + mHahen[i].speed.y = var_f31; + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } + + for (int i = i_hahenNum - 20; i < i_hahenNum; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 1750.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set(2.0f + cM_rndF(5.5f), + 3.1f + cM_rndF(4.5f), + 2.5f + cM_rndF(5.5f)); + + var_f30 = nREG_F(3) + (20.0f + cM_rndFX(20.0f)); + var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f)); + rot_y = (s16)cM_rndFX(32000.0f); + + f32 var_f29 = var_f30 * cM_ssin(rot_y); + f32 var_f28 = var_f31 + gravity; + f32 var_f27 = var_f30 * cM_scos(rot_y); + + mHahen[i].speed.set(var_f29, var_f28, var_f27); + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } } -/* ############################################################################################## */ -/* 80578B28-80578B2C 0000A0 0004+00 0/3 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 1.0f; -COMPILER_STRIP_GATE(0x80578B28, &lit_4028); -#pragma pop - -/* 80578B2C-80578B30 0000A4 0004+00 0/3 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = -1.0f; -COMPILER_STRIP_GATE(0x80578B2C, &lit_4029); -#pragma pop - /* 805771EC-80577500 00080C 0314+00 1/1 0/0 0/0 .text Obj_Damage__13daObjBHASHI_cFv */ void daObjBHASHI_c::Obj_Damage() { - // NONMATCHING + if (mDamageTimer == 0) { + mCcStts.Move(); + + if (mCcCyl.ChkTgHit()) { + cXyz& player_pos = fopAcM_GetPosition(daPy_getPlayerActorClass()); + mDamageTimer = 10; + + fopAc_ac_c* tg_hit_obj = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc()); + cXyz* tg_hit_pos = mCcCyl.GetTgHitPosP(); + s16 rot_y = cLib_targetAngleY(¤t.pos, tg_hit_pos); + if (fopAcM_GetName(tg_hit_obj) == PROC_B_MGN) { + field_0x5a8++; + + fpc_ProcID tg_hit_id = fopAcM_GetID(tg_hit_obj); + fopAc_ac_c* mgn_p; + if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL) { + field_0x11dc = cLib_targetAngleY(&fopAcM_GetPosition(mgn_p), ¤t.pos); + } + + Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + Set_Hahen(); + dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + + csXyz eff_rot(0, rot_y, 0); + cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL); + } + + mCcCyl.ResetTgHit(); + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100); + } + } } /* 80577500-80577794 000B20 0294+00 0/0 0/0 1/1 .text Obj_Damage__13daObjBHASHI_cF4cXyz */ void daObjBHASHI_c::Obj_Damage(cXyz param_0) { - // NONMATCHING + field_0x11dc = cLib_targetAngleY(¶m_0, ¤t.pos); + + Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + Set_Hahen(); + dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + + csXyz eff_rot(0, field_0x11dc, 0); + cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL); + + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100); } /* 80577794-805777A4 000DB4 0010+00 1/1 0/0 0/0 .text __ct__7Hahen_cFv */ Hahen_c::Hahen_c() { - // NONMATCHING + field_0x31 = 0; + status = 0; } -/* ############################################################################################## */ -/* 80578B30-80578B34 0000A8 0004+00 1/1 0/0 0/0 .rodata @4114 */ -SECTION_RODATA static f32 const lit_4114 = -1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80578B30, &lit_4114); - /* 805777A4-80577868 000DC4 00C4+00 1/1 0/0 0/0 .text Wall_Check__7Hahen_cFv */ void Hahen_c::Wall_Check() { - // NONMATCHING + dBgS_LinChk line_chk; + cXyz end_pos(pos.x + speed.x, pos.y, pos.z + speed.z); + cXyz start_pos(pos.x, pos.y, pos.z); + + line_chk.Set(&start_pos, &end_pos, NULL); + if (dComIfG_Bgsp().LineCross(&line_chk) == true) { + speed.x = -(0.05f + nREG_F(18)) * speed.x; + speed.z = -(0.05f + nREG_F(18)) * speed.z; + } } -/* ############################################################################################## */ -/* 80578B34-80578B38 0000AC 0004+00 0/1 0/0 0/0 .rodata @4185 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4185 = 15.0f; -COMPILER_STRIP_GATE(0x80578B34, &lit_4185); -#pragma pop - -/* 80578B38-80578B40 0000B0 0004+04 0/2 0/0 0/0 .rodata @4186 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4186[1 + 1 /* padding */] = { - -9.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80578B38, &lit_4186); -#pragma pop - -/* 80578B40-80578B48 0000B8 0008+00 0/4 0/0 0/0 .rodata @4187 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4187[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B40, &lit_4187); -#pragma pop - -/* 80578B48-80578B50 0000C0 0008+00 0/4 0/0 0/0 .rodata @4188 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4188[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B48, &lit_4188); -#pragma pop - -/* 80578B50-80578B58 0000C8 0008+00 0/4 0/0 0/0 .rodata @4189 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4189[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B50, &lit_4189); -#pragma pop - -/* 80578B58-80578B5C 0000D0 0004+00 0/1 0/0 0/0 .rodata @4190 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4190 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578B58, &lit_4190); -#pragma pop - -/* 80578B5C-80578B60 0000D4 0004+00 0/1 0/0 0/0 .rodata @4191 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4191 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578B5C, &lit_4191); -#pragma pop - -/* 80578B60-80578B64 0000D8 0004+00 0/1 0/0 0/0 .rodata @4192 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4192 = 4.0f; -COMPILER_STRIP_GATE(0x80578B60, &lit_4192); -#pragma pop - -/* 80578B64-80578B68 0000DC 0004+00 0/2 0/0 0/0 .rodata @4193 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4193 = 5000.0f; -COMPILER_STRIP_GATE(0x80578B64, &lit_4193); -#pragma pop - -/* 80578B68-80578B6C 0000E0 0004+00 0/1 0/0 0/0 .rodata @4194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4194 = 8.0f; -COMPILER_STRIP_GATE(0x80578B68, &lit_4194); -#pragma pop - -/* 80578B6C-80578B70 0000E4 0004+00 0/1 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80578B6C, &lit_4195); -#pragma pop - /* 80577868-80577C1C 000E88 03B4+00 1/1 0/0 0/0 .text HahenMotion__7Hahen_cFv */ void Hahen_c::HahenMotion() { - // NONMATCHING + if (status == 0) { + f32 temp_f31 = 5.0f + nREG_F(16); + Wall_Check(); + + if (pos.y >= 10.0f + temp_f31) { + speed.y += -9.0f; + + pos.x += speed.x; + pos.y += speed.y; + pos.z += speed.z; + + rotation.x += rot_speed.x; + rotation.y += rot_speed.y; + } + + if (pos.y < 10.0f + temp_f31) { + f32 temp_f30 = speed.y; + pos.y = 10.0f + temp_f31; + + speed.y = temp_f30 * -(1.0f - (scale.abs() / (15.0f + XREG_F(10)))); + speed.x *= 0.7f + cM_rndF(0.3f); + speed.z *= 0.7f + cM_rndF(0.3f); + + if (speed.y < 4.0f) { + status = 1; + } + + rot_speed.x = cM_rndFX(5000.0f); + rot_speed.y = cM_rndFX(5000.0f); + } + } else if (status == 1) { + if (field_0x31 != 0) { + status = 2; + } + + if (CheckCull()) { + status = 2; + + if (scale.abs() > 8.0f + XREG_F(11)) { + scale *= 0.6f + XREG_F(9); + } + + field_0x31 = 1; + } + } } -/* ############################################################################################## */ -/* 80578B70-80578B74 0000E8 0004+00 0/2 0/0 0/0 .rodata @4258 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4258 = 1000.0f; -COMPILER_STRIP_GATE(0x80578B70, &lit_4258); -#pragma pop - /* 80577C1C-80577DA4 00123C 0188+00 1/1 0/0 0/0 .text CheckCull__7Hahen_cFv */ -void Hahen_c::CheckCull() { - // NONMATCHING -} +bool Hahen_c::CheckCull() { + if (pos.absXZ(fopAcM_GetPosition(daPy_getPlayerActorClass())) > 1000.0f && !checkViewArea()) { + return false; + } -/* ############################################################################################## */ -/* 80578B74-80578B78 0000EC 0004+00 0/1 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4271 = -50.0f; -COMPILER_STRIP_GATE(0x80578B74, &lit_4271); -#pragma pop - -/* 80578B78-80578B7C 0000F0 0004+00 0/1 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4272 = 658.0f; -COMPILER_STRIP_GATE(0x80578B78, &lit_4272); -#pragma pop - -/* 80578B7C-80578B80 0000F4 0004+00 0/1 0/0 0/0 .rodata @4273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4273 = 498.0f; -COMPILER_STRIP_GATE(0x80578B7C, &lit_4273); -#pragma pop + return true; +} /* 80577DA4-80577E24 0013C4 0080+00 1/1 0/0 0/0 .text checkViewArea__7Hahen_cFv */ -void Hahen_c::checkViewArea() { - // NONMATCHING +bool Hahen_c::checkViewArea() { + Vec proj; + mDoLib_project(&pos, &proj); + return (proj.x >= -50.0f && proj.x <= 658.0f) && (proj.y >= -50.0f && proj.y <= 498.0f); } /* 80577E24-80577FE0 001444 01BC+00 1/1 0/0 0/0 .text Rolling__13daObjBHASHI_cFP4cXyzff */ -void daObjBHASHI_c::Rolling(cXyz* param_0, f32 param_1, f32 param_2) { - // NONMATCHING +void daObjBHASHI_c::Rolling(cXyz* i_pos, f32 i_range, f32 param_2) { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + if (mMode == 2) { + for (s16 i = 0; i < 60; i++) { + if (i_pos->abs(mHahen[i].pos) < i_range) { + mHahen[i].Roll_Set(i_pos, param_2, i); + mHahen[i].status = 0; + } + } + } } -/* ############################################################################################## */ -/* 80578B80-80578B84 0000F8 0004+00 0/1 0/0 0/0 .rodata @4345 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4345 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80578B80, &lit_4345); -#pragma pop - -/* 80578B84-80578B88 0000FC 0004+00 0/1 0/0 0/0 .rodata @4346 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4346 = 3.0f; -COMPILER_STRIP_GATE(0x80578B84, &lit_4346); -#pragma pop - -/* 80578B88-80578B8C 000100 0004+00 0/1 0/0 0/0 .rodata @4347 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4347 = 9.0f; -COMPILER_STRIP_GATE(0x80578B88, &lit_4347); -#pragma pop - /* 80577FE0-805781FC 001600 021C+00 1/1 0/0 0/0 .text Roll_Set__7Hahen_cFP4cXyzfs */ -void Hahen_c::Roll_Set(cXyz* param_0, f32 param_1, s16 param_2) { - // NONMATCHING +void Hahen_c::Roll_Set(cXyz* i_pos, f32 param_1, s16 i_no) { + f32 temp_f30 = param_1 * (2.0f + nREG_F(10) + cM_rndFX(0.2f)); + s16 angle = cLib_targetAngleY(&pos, i_pos); + + f32 speed_x = (-1.0f + nREG_F(12)) * param_1 * cM_ssin(angle); + f32 temp_f31 = scale.abs(); + temp_f31 = 3.0f / temp_f31; + + f32 speed_y = temp_f30 - 9.0f; + f32 speed_z = (-1.0f + nREG_F(13)) * param_1 * cM_scos(angle); + + speed.set(temp_f31 * speed_x, temp_f31 * speed_y, temp_f31 * speed_z); + + rot_speed.x = cM_rndFX(5000.0f + nREG_F(6)); + rot_speed.y = cM_rndFX(5000.0f + nREG_F(6)); + rotation.x += (s16)0x1000; + rotation.y += (s16)0x1000; } /* 805781FC-805782E4 00181C 00E8+00 1/1 0/0 0/0 .text setBaseMtx__13daObjBHASHI_cFv */ void daObjBHASHI_c::setBaseMtx() { - // NONMATCHING + if (mMode == 2) { + for (s16 i = 0; i < 60; i++) { + mDoMtx_stack_c::transS(mHahen[i].pos); + mDoMtx_stack_c::ZXYrotM(mHahen[i].rotation); + mDoMtx_stack_c::scaleM(mHahen[i].scale); + mpHahenMdls[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + } else { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mpPillarMdl->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + mDoMtx_stack_c::transM(0.0f, -1100.0f + yREG_F(10), 0.0f); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } /* 805782E4-80578310 001904 002C+00 1/0 0/0 0/0 .text daObjBHASHI_Draw__FP13daObjBHASHI_c */ -static void daObjBHASHI_Draw(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Draw(daObjBHASHI_c* i_this) { + return i_this->MoveBGDraw(); } /* 80578310-80578330 001930 0020+00 2/1 0/0 0/0 .text daObjBHASHI_Execute__FP13daObjBHASHI_c */ -static void daObjBHASHI_Execute(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Execute(daObjBHASHI_c* i_this) { + return i_this->MoveBGExecute(); } -/* ############################################################################################## */ -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80578BA8 = "B_Hashi"; -SECTION_DEAD static char const* const stringBase_80578BB0 = "Lv9_R07_pillar.bmd"; -SECTION_DEAD static char const* const stringBase_80578BC3 = "Lv9_R07_pillar_hahen.bmd"; -#pragma pop - /* 80578BF0-80578BF4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_bhashi__stringBase0; +static char* l_arcName = "B_Hashi"; /* 80578330-8057842C 001950 00FC+00 1/0 0/0 0/0 .text CreateHeap__13daObjBHASHI_cFv */ -void daObjBHASHI_c::CreateHeap() { - // NONMATCHING +int daObjBHASHI_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar.bmd"); + JUT_ASSERT(98, modelData != 0); + + J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + JUT_ASSERT(102, modelData2 != 0); + + for (int i = 0; i < 60; i++) { + mpHahenMdls[i] = mDoExt_J3DModel__create(modelData2, J3DMdlFlag_UseSharedDL, BMD_DEFAULT_DIFF_FLAGS); + if (mpHahenMdls[i] == NULL) { + return 0; + } + } + + mpPillarMdl = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpPillarMdl == NULL) { + return 0; + } + + return 1; +} + +/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */ +int daObjBHASHI_c::create() { + fopAcM_SetupActor(this, daObjBHASHI_c); + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + gravity = -9.0f + nREG_F(0); + + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "Lv9_R07_pillar.dzb"); + if (dzb_id == -1) { + // "dzb data not found!<%s>" + OS_REPORT("dzbデータが見つかりませんでした!<%s>\n\n", l_arcName); + } + + JUT_ASSERT(1192, dzb_id != -1); + phase_state = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x8DA0, NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + + initCcCylinder(); + mMode = 0; + fopAcM_SetMtx(this, mpPillarMdl->getBaseTRMtx()); + + cXyz sp8(current.pos.x, 100.0f + current.pos.y, current.pos.z); + if (fopAcM_gc_c::gndCheck(&sp8)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + current.pos.y += 1100.0f; + } + + fopAcM_setCullSizeBox(this, -500.0f, 0.0f, -500.0f, 500.0f, 3000.0f, 500.0f); + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + JUT_ASSERT(1219, modelData != 0); + + if (dComIfGp_addSimpleModel(modelData, fopAcM_GetRoomNo(this), 0) == -1) { + // "Fire Demon Room Pillar Fragment: simple model entry failed." + OS_REPORT("\x1B[43;30m火魔神部屋の柱の破片:シンプルモデル登録失敗しました。\n\x1B[m"); + } + + mIsHahenSimpleEntry = TRUE; + daObjBHASHI_Execute(this); + } + + return phase_state; +} + +/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */ +static int daObjBHASHI_IsDelete(daObjBHASHI_c* i_this) { + return 1; +} + +/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Create() { + fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0f, 1000.0f); + return cPhs_COMPLEATE_e; +} + +/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f + */ +int daObjBHASHI_c::Execute(Mtx** param_0) { + if (mMode != 2) { + Obj_Damage(); + } + + if (mMode == 2) { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + + field_0x11e0--; + if (field_0x11e0 <= 0) { + field_0x11e0 = 0; + } + + for (s16 i = 0; i < 60; i++) { + mHahen[i].HahenMotion(); + } + + fopAc_ac_c* mgn_p; + if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL && ((daB_MGN_c*)mgn_p)->isAppear()) { + Rolling(&fopAcM_GetPosition(mgn_p), 400.0f, 90.0f + yREG_F(0)); + } + } + + *param_0 = &mBgMtx; + setBaseMtx(); + + if (mMode != 2) { + setCcCylinder(); + } + + if (mDamageTimer != 0) { + mDamageTimer--; + } + + return 1; } -/* ############################################################################################## */ -/* 80578B8C-80578B90 000104 0004+00 0/1 0/0 0/0 .rodata @4515 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4515 = 100.0f; -COMPILER_STRIP_GATE(0x80578B8C, &lit_4515); -#pragma pop - -/* 80578B90-80578B94 000108 0004+00 0/2 0/0 0/0 .rodata @4516 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4516 = -500.0f; -COMPILER_STRIP_GATE(0x80578B90, &lit_4516); -#pragma pop - -/* 80578B94-80578B98 00010C 0004+00 0/2 0/0 0/0 .rodata @4517 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4517 = 500.0f; -COMPILER_STRIP_GATE(0x80578B94, &lit_4517); -#pragma pop - -/* 80578B98-80578B9C 000110 0004+00 0/1 0/0 0/0 .rodata @4518 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4518 = 3000.0f; -COMPILER_STRIP_GATE(0x80578B98, &lit_4518); -#pragma pop - -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80578BDC = "Lv9_R07_pillar.dzb"; -#pragma pop +/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Draw() { + g_env_light.settingTevStruct(8, ¤t.pos, &tevStr); + + if (mMode == 0) { + g_env_light.setLightTevColorType_MAJI(mpPillarMdl, &tevStr); + } + + dComIfGd_setListBG(); + + if (mMode == 0) { + mDoExt_modelUpdateDL(mpPillarMdl); + } else { + int roomNo = fopAcM_GetRoomNo(this); + for (int i = 0; i < 60; i++) { + dComIfGp_entrySimpleModel(mpHahenMdls[i], roomNo); + } + } + + dComIfGd_setList(); + return 1; +} + +/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Delete() { + if (mIsHahenSimpleEntry) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + dComIfGp_removeSimpleModel(modelData, fopAcM_GetRoomNo(this)); + } + + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} /* 80578BF4-80578C14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjBHASHI_Method */ static actor_method_class l_daObjBHASHI_Method = { - (process_method_func)daObjBHASHI_Create__FP10fopAc_ac_c, - (process_method_func)daObjBHASHI_Delete__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_Execute__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_IsDelete__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_Draw__FP13daObjBHASHI_c, + (process_method_func)daObjBHASHI_Create, + (process_method_func)daObjBHASHI_Delete, + (process_method_func)daObjBHASHI_Execute, + (process_method_func)daObjBHASHI_IsDelete, + (process_method_func)daObjBHASHI_Draw, }; /* 80578C14-80578C44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_BHASHI */ @@ -632,98 +550,3 @@ extern actor_process_profile_definition g_profile_Obj_BHASHI = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80578C44-80578C50 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, -}; - -/* 80578C50-80578C5C 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, -}; - -/* 80578C5C-80578C84 00006C 0028+00 1/1 0/0 0/0 .data __vt__13daObjBHASHI_c */ -SECTION_DATA extern void* __vt__13daObjBHASHI_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjBHASHI_cFv, - (void*)Create__13daObjBHASHI_cFv, - (void*)Execute__13daObjBHASHI_cFPPA3_A4_f, - (void*)Draw__13daObjBHASHI_cFv, - (void*)Delete__13daObjBHASHI_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */ -void daObjBHASHI_c::create() { - // NONMATCHING -} - -/* 805786B4-805786FC 001CD4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 805786FC-80578744 001D1C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80578744-80578780 001D64 003C+00 1/1 0/0 0/0 .text __dt__7Hahen_cFv */ -Hahen_c::~Hahen_c() { - // NONMATCHING -} - -/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */ -static bool daObjBHASHI_IsDelete(daObjBHASHI_c* param_0) { - return true; -} - -/* ############################################################################################## */ -/* 80578B9C-80578BA0 000114 0004+00 0/1 0/0 0/0 .rodata @4606 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4606 = -1000.0f; -COMPILER_STRIP_GATE(0x80578B9C, &lit_4606); -#pragma pop - -/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80578BA0-80578BA4 000118 0004+00 1/1 0/0 0/0 .rodata @4626 */ -SECTION_RODATA static f32 const lit_4626 = 400.0f; -COMPILER_STRIP_GATE(0x80578BA0, &lit_4626); - -/* 80578BA4-80578BA8 00011C 0004+00 1/1 0/0 0/0 .rodata @4627 */ -SECTION_RODATA static f32 const lit_4627 = 90.0f; -COMPILER_STRIP_GATE(0x80578BA4, &lit_4627); - -/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f - */ -void daObjBHASHI_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Draw() { - // NONMATCHING -} - -/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Delete() { - // NONMATCHING -} - -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
