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 | |
| parent | a8136496c7c0e35daf5e320eceb6ad745df1068a (diff) | |
swpush5 / bhashi done (#2663)
* swpush5 done
* bhashi done
* gptaru done
Diffstat (limited to 'src/d/actor')
| -rw-r--r-- | src/d/actor/d_a_obj_bhashi.cpp | 1073 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_gpTaru.cpp | 1382 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_swpush5.cpp | 947 |
3 files changed, 1294 insertions, 2108 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 */ diff --git a/src/d/actor/d_a_obj_gpTaru.cpp b/src/d/actor/d_a_obj_gpTaru.cpp index 9e715f1b35..43ebbce7e1 100644 --- a/src/d/actor/d_a_obj_gpTaru.cpp +++ b/src/d/actor/d_a_obj_gpTaru.cpp @@ -6,1010 +6,642 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_gpTaru.h" -#include "dol2asm.h" - - - - -// -// Forward References: -// - -extern "C" void __ct__14daGpTaru_HIO_cFv(); -extern "C" void __dt__18fOpAcm_HIO_entry_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__10daGpTaru_cFv(); -extern "C" void CreateHeap__10daGpTaru_cFv(); -extern "C" void create__10daGpTaru_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c(); -extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void chkSinkAll__10daGpTaru_cFv(); -extern "C" void chkWaterLineIn__10daGpTaru_cFv(); -extern "C" void bgCheck__10daGpTaru_cFv(); -extern "C" void Execute__10daGpTaru_cFv(); -extern "C" void mode_proc_call__10daGpTaru_cFv(); -extern "C" void mode_init_wait__10daGpTaru_cFv(); -extern "C" void mode_proc_wait__10daGpTaru_cFv(); -extern "C" void mode_init_carry__10daGpTaru_cFv(); -extern "C" void mode_proc_carry__10daGpTaru_cFv(); -extern "C" void mode_init_drop__10daGpTaru_cFv(); -extern "C" void mode_proc_drop__10daGpTaru_cFv(); -extern "C" void mode_init_roll__10daGpTaru_cFv(); -extern "C" void mode_proc_roll__10daGpTaru_cFv(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void mode_init_exploInit__10daGpTaru_cFv(); -extern "C" void mode_proc_exploInit__10daGpTaru_cFv(); -extern "C" void mode_init_explosion__10daGpTaru_cFv(); -extern "C" void mode_proc_explosion__10daGpTaru_cFv(); -extern "C" void mode_init_sink__10daGpTaru_cFv(); -extern "C" void mode_proc_sink__10daGpTaru_cFv(); -extern "C" void breakEffSet__10daGpTaru_cFv(); -extern "C" void Draw__10daGpTaru_cFv(); -extern "C" void Delete__10daGpTaru_cFv(); -extern "C" static void daGpTaru_Draw__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Execute__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Delete__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__14daGpTaru_HIO_cFv(); -extern "C" void __sinit_d_a_obj_gpTaru_cpp(); -extern "C" static void func_8057F534(); -extern "C" static void func_8057F53C(); -extern "C" static void func_8057F544(); -extern "C" static void func_8057F54C(); -extern "C" static void func_8057F554(); -extern "C" u8 const mCcDObjInfo__10daGpTaru_c[48]; -extern "C" extern char const* const d_a_obj_gpTaru__stringBase0; -extern "C" u8 mCcDCyl__10daGpTaru_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -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 onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void -setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dKyw_pntwind_set__FP14WIND_INFLUENCE(); -extern "C" void dKyw_pntwind_cut__FP14WIND_INFLUENCE(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -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 GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void GetCoHitObj__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 __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStop__7Z2SeMgrF10JAISoundIDUl(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -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 mGndCheck__11fopAcM_gc_c[84]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8057F570-8057F574 000000 0004+00 10/10 0/0 0/0 .rodata @3656 */ -SECTION_RODATA static f32 const lit_3656 = 200.0f; -COMPILER_STRIP_GATE(0x8057F570, &lit_3656); - -/* 8057F574-8057F578 000004 0004+00 0/1 0/0 0/0 .rodata @3657 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3657 = 3.0f; -COMPILER_STRIP_GATE(0x8057F574, &lit_3657); -#pragma pop - -/* 8057F578-8057F57C 000008 0004+00 0/1 0/0 0/0 .rodata @3658 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3658 = 6.0f; -COMPILER_STRIP_GATE(0x8057F578, &lit_3658); -#pragma pop - -/* 8057F57C-8057F580 00000C 0004+00 0/1 0/0 0/0 .rodata @3659 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3659 = 8.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F57C, &lit_3659); -#pragma pop - -/* 8057F580-8057F584 000010 0004+00 2/10 0/0 0/0 .rodata @3660 */ -SECTION_RODATA static f32 const lit_3660 = 1.0f; -COMPILER_STRIP_GATE(0x8057F580, &lit_3660); +#include "d/actor/d_a_obj_eff.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "d/d_cc_uty.h" +#include "f_op/f_op_kankyo_mng.h" -/* 8057F6A8-8057F6EC 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daGpTaru_c */ -SECTION_DATA u8 daGpTaru_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 8057F6EC-8057F6F8 -00001 000C+00 0/1 0/0 0/0 .data @4338 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4338[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_wait__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F6F8-8057F704 -00001 000C+00 0/1 0/0 0/0 .data @4339 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4339[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_carry__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F704-8057F710 -00001 000C+00 0/1 0/0 0/0 .data @4340 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4340[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_drop__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F710-8057F71C -00001 000C+00 0/1 0/0 0/0 .data @4341 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4341[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_roll__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F71C-8057F728 -00001 000C+00 0/1 0/0 0/0 .data @4342 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4342[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_exploInit__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F728-8057F734 -00001 000C+00 0/1 0/0 0/0 .data @4343 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4343[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_explosion__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F734-8057F740 -00001 000C+00 0/1 0/0 0/0 .data @4344 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4344[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_sink__10daGpTaru_cFv, -}; -#pragma pop - -/* 8057F740-8057F794 0000B8 0054+00 0/1 0/0 0/0 .data l_mode_func$4337 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[84] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8057F794-8057F7A4 00010C 0010+00 1/1 0/0 0/0 .data effName$4666 */ -SECTION_DATA static u8 effName[16] = { - 0x87, 0x45, 0x87, 0x47, 0x87, 0x48, 0x87, 0x49, 0x87, 0x4A, 0x87, 0x4B, 0x87, 0x4C, 0x87, 0x4D, -}; - -/* 8057F7A4-8057F7C4 -00001 0020+00 1/0 0/0 0/0 .data l_daGpTaru_Method */ -static actor_method_class l_daGpTaru_Method = { - (process_method_func)daGpTaru_Create__FP10fopAc_ac_c, - (process_method_func)daGpTaru_Delete__FP10daGpTaru_c, - (process_method_func)daGpTaru_Execute__FP10daGpTaru_c, - 0, - (process_method_func)daGpTaru_Draw__FP10daGpTaru_c, -}; - -/* 8057F7C4-8057F7F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GpTaru */ -extern actor_process_profile_definition g_profile_Obj_GpTaru = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_GpTaru, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daGpTaru_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 509, // mPriority - &l_daGpTaru_Method, // sub_method - 0x00044000, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 8057F7F4-8057F824 00016C 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_8057F544, - (void*)NULL, - (void*)NULL, - (void*)func_8057F554, - (void*)NULL, - (void*)NULL, - (void*)func_8057F54C, -}; - -/* 8057F824-8057F830 00019C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; +/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */ +static daGpTaru_HIO_c l_HIO; -/* 8057F830-8057F83C 0001A8 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; +/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */ +daGpTaru_HIO_c::daGpTaru_HIO_c() { + weight = 200.0f; + explosion_wait_time = 15; + shake = 200.0f; + explosion_range = 200.0f; + effect_scale.x = 3.0f; + effect_scale.y = 3.0f; + effect_scale.z = 3.0f; + pre_smoke_scale.x = 6.0f; + pre_smoke_scale.y = 6.0f; + pre_smoke_scale.z = 6.0f; + barrel_scale.x = 1.6f; + barrel_scale.y = 1.6f; + barrel_scale.z = 1.6f; + vibration = 5; + smoke_scale = 1.0f; +} -/* 8057F83C-8057F848 0001B4 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; +/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */ +void daGpTaru_c::setBaseMtx() { + scale.x = l_HIO.barrel_scale.x; + scale.y = l_HIO.barrel_scale.y; + scale.z = l_HIO.barrel_scale.z; -/* 8057F848-8057F854 0001C0 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::ZXYrotM(field_0x93c.x, field_0x93c.y, field_0x93c.z); + mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); -/* 8057F854-8057F860 0001CC 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, -}; + cXyz bmd_scale(1.0f, 1.0f, 1.0f); + mpModel->setBaseScale(bmd_scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 8057F860-8057F86C 0001D8 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, -}; +/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */ +int daGpTaru_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("K_ktar00", 3); + JUT_ASSERT(295, modelData != 0); -/* 8057F86C-8057F890 0001E4 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_8057F53C, - (void*)NULL, - (void*)NULL, - (void*)func_8057F534, -}; + mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpModel == NULL) { + return 0; + } -/* 8057F890-8057F8A8 000208 0018+00 1/1 0/0 0/0 .data __vt__10daGpTaru_c */ -SECTION_DATA extern void* __vt__10daGpTaru_c[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daGpTaru_cFv, - (void*)Execute__10daGpTaru_cFv, - (void*)Draw__10daGpTaru_cFv, - (void*)Delete__10daGpTaru_cFv, -}; + return 1; +} -/* 8057F8A8-8057F8B4 000220 000C+00 2/2 0/0 0/0 .data __vt__14daGpTaru_HIO_c */ -SECTION_DATA extern void* __vt__14daGpTaru_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daGpTaru_HIO_cFv, +/* 8057F6A8-8057F6EC 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daGpTaru_c */ +dCcD_SrcCyl daGpTaru_c::mCcDCyl = { + daGpTaru_c::mCcDObjInfo, + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; -/* 8057F8B4-8057F8C0 00022C 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */ -SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18fOpAcm_HIO_entry_cFv, +/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */ +const dCcD_SrcGObjInf daGpTaru_c::mCcDObjInfo = { + {0, {{0, 0, 0x1F}, {0xD8FAFDBF, 0x11}, {0x79}}}, + {dCcD_SE_NONE, 0, 1, 0, 0}, + {dCcD_SE_NONE, 0, 0, 0, 2}, + {0}, }; -/* 8057F8C0-8057F8CC 000238 000C+00 4/4 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; +/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */ +int daGpTaru_c::create() { + fopAcM_SetupActor(this, daGpTaru_c); -/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */ -daGpTaru_HIO_c::daGpTaru_HIO_c() { - // NONMATCHING -} + if (fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF)) { + return cPhs_ERROR_e; + } -/* 8057D154-8057D1B0 000174 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */ -// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() { -extern "C" void __dt__18fOpAcm_HIO_entry_cFv() { - // NONMATCHING -} + int phase_state = dComIfG_resLoad(&mPhase, "K_ktar00"); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x820)) { + return cPhs_ERROR_e; + } -/* 8057D1B0-8057D1F8 0001D0 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} + setBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); -/* ############################################################################################## */ -/* 8057F8D8-8057F8E4 000008 000C+00 1/1 0/0 0/0 .bss @3645 */ -static u8 lit_3645[12]; + mAcchCir.SetWall(160.0f, 80.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); -/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[60]; + fopAcM_SetGravity(this, -7.0f); + fopAcM_SetMaxFallSpeed(this, -100.0f); + fopAcM_SetModel(this, mpModel); -/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */ -void daGpTaru_c::setBaseMtx() { - // NONMATCHING -} + mCcStts.Init(0xFE, 0xFF, this); + mCcCyl.Set(mCcDCyl); + mCcCyl.SetStts(&mCcStts); -/* ############################################################################################## */ -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8057F664 = "K_ktar00"; -#pragma pop + field_0x954 = fopAcM_GetParam(this); + fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1); -/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */ -void daGpTaru_c::CreateHeap() { - // NONMATCHING -} + if (field_0x954 == 0) { + cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + attention_info.distances[fopAc_attn_CARRY_e] = 42; + } else { + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } -/* ############################################################################################## */ -/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */ -SECTION_RODATA u8 const daGpTaru_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xD8, 0xFA, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F584, &daGpTaru_c::mCcDObjInfo); - -/* 8057F5B4-8057F5B8 000044 0004+00 0/1 0/0 0/0 .rodata @3803 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3803 = 160.0f; -COMPILER_STRIP_GATE(0x8057F5B4, &lit_3803); -#pragma pop - -/* 8057F5B8-8057F5BC 000048 0004+00 0/1 0/0 0/0 .rodata @3804 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3804 = 80.0f; -COMPILER_STRIP_GATE(0x8057F5B8, &lit_3804); -#pragma pop - -/* 8057F5BC-8057F5C0 00004C 0004+00 1/2 0/0 0/0 .rodata @3805 */ -SECTION_RODATA static f32 const lit_3805 = -7.0f; -COMPILER_STRIP_GATE(0x8057F5BC, &lit_3805); - -/* 8057F5C0-8057F5C4 000050 0004+00 0/1 0/0 0/0 .rodata @3806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3806 = -100.0f; -COMPILER_STRIP_GATE(0x8057F5C0, &lit_3806); -#pragma pop - -/* 8057F5C4-8057F5C8 000054 0004+00 3/10 0/0 0/0 .rodata @3807 */ -SECTION_RODATA static u8 const lit_3807[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5C4, &lit_3807); + mIsPrevCarry = fopAcM_checkCarryNow(this) != 0; + mode_init_wait(); -/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */ -void daGpTaru_c::create() { - // NONMATCHING -} + field_0x93c.x = 0; + field_0x93c.y = 0; + field_0x93c.z = 0; -/* 8057D600-8057D648 000620 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} + field_0x944 = 0; + field_0x938 = 0.0f; + mExplosionRange = 80.0f; + field_0x955 = 1; -/* 8057D648-8057D690 000668 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} + #ifdef DEBUG + l_HIO.entryHIO("火薬樽"); + #endif + } -/* 8057D690-8057D6EC 0006B0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8057D6EC-8057D75C 00070C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8057D75C-8057D7CC 00077C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING + return phase_state; } /* 8057D7CC-8057D7F8 0007EC 002C+00 1/1 0/0 0/0 .text * createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c */ -void daGpTaru_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daGpTaru_c::createHeapCallBack(fopAc_ac_c* i_this) { + return ((daGpTaru_c*)i_this)->CreateHeap(); } -/* ############################################################################################## */ -/* 8057F5C8-8057F5D0 000058 0008+00 0/3 0/0 0/0 .rodata @3992 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3992[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5C8, &lit_3992); -#pragma pop - -/* 8057F5D0-8057F5D8 000060 0008+00 0/3 0/0 0/0 .rodata @3993 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3993[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5D0, &lit_3993); -#pragma pop - -/* 8057F5D8-8057F5E0 000068 0008+00 0/3 0/0 0/0 .rodata @3994 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3994[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5D8, &lit_3994); -#pragma pop - /* 8057D7F8-8057DAF4 000818 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ -static void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING -} +static f32 bound(cXyz* param_0, const cBgS_PolyInfo& param_1, f32 param_2) { + cM3dGPla plane; -/* 8057DAF4-8057DB3C 000B14 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} + bool var_r29 = dComIfG_Bgsp().GetTriPla(param_1, &plane); + if (var_r29) { + cXyz pos; + f32 abs = param_0->absXZ(); -/* ############################################################################################## */ -/* 8057F5E0-8057F5E4 000070 0004+00 1/2 0/0 0/0 .rodata @4078 */ -SECTION_RODATA static f32 const lit_4078 = 100.0f; -COMPILER_STRIP_GATE(0x8057F5E0, &lit_4078); + VECReflect(param_0, &plane.mNormal, &pos); + *param_0 = (pos * abs) * param_2; + return param_0->absXZ(); + } else { + return 0.0f; + } +} /* 8057DB3C-8057DB60 000B5C 0024+00 1/1 0/0 0/0 .text chkSinkAll__10daGpTaru_cFv */ -void daGpTaru_c::chkSinkAll() { - // NONMATCHING +BOOL daGpTaru_c::chkSinkAll() { + return mAcch.m_wtr.GetHeight() > 100.0f + current.pos.y; } -/* ############################################################################################## */ -/* 8057F5E4-8057F5E8 000074 0004+00 1/1 0/0 0/0 .rodata @4084 */ -SECTION_RODATA static f32 const lit_4084 = 40.0f; -COMPILER_STRIP_GATE(0x8057F5E4, &lit_4084); - /* 8057DB60-8057DB84 000B80 0024+00 3/3 0/0 0/0 .text chkWaterLineIn__10daGpTaru_cFv */ -void daGpTaru_c::chkWaterLineIn() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F5E8-8057F5EC 000078 0004+00 0/1 0/0 0/0 .rodata @4268 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4268 = 8.0f; -COMPILER_STRIP_GATE(0x8057F5E8, &lit_4268); -#pragma pop - -/* 8057F5EC-8057F5F0 00007C 0004+00 0/1 0/0 0/0 .rodata @4269 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4269 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F5EC, &lit_4269); -#pragma pop - -/* 8057F5F0-8057F5F4 000080 0004+00 0/1 0/0 0/0 .rodata @4270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4270 = 5.0f; -COMPILER_STRIP_GATE(0x8057F5F0, &lit_4270); -#pragma pop - -/* 8057F5F4-8057F5F8 000084 0004+00 0/2 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4271 = -15.0f; -COMPILER_STRIP_GATE(0x8057F5F4, &lit_4271); -#pragma pop - -/* 8057F5F8-8057F5FC 000088 0004+00 0/1 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4272 = 2.0f; -COMPILER_STRIP_GATE(0x8057F5F8, &lit_4272); -#pragma pop - -/* 8057F5FC-8057F600 00008C 0004+00 0/4 0/0 0/0 .rodata @4273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4273 = -1.0f; -COMPILER_STRIP_GATE(0x8057F5FC, &lit_4273); -#pragma pop - -/* 8057F600-8057F604 000090 0004+00 0/1 0/0 0/0 .rodata @4274 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4274 = 5.0f / 3.0f; -COMPILER_STRIP_GATE(0x8057F600, &lit_4274); -#pragma pop - -/* 8057F604-8057F608 000094 0004+00 0/3 0/0 0/0 .rodata @4275 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4275 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F604, &lit_4275); -#pragma pop +BOOL daGpTaru_c::chkWaterLineIn() { + return mAcch.m_wtr.GetHeight() > 40.0f + current.pos.y; +} /* 8057DB84-8057E224 000BA4 06A0+00 1/1 0/0 0/0 .text bgCheck__10daGpTaru_cFv */ void daGpTaru_c::bgCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F608-8057F60C 000098 0004+00 0/1 0/0 0/0 .rodata @4331 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4331 = 50.0f; -COMPILER_STRIP_GATE(0x8057F608, &lit_4331); -#pragma pop - -/* 8057F60C-8057F610 00009C 0004+00 0/1 0/0 0/0 .rodata @4332 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4332 = 7.0f; -COMPILER_STRIP_GATE(0x8057F60C, &lit_4332); -#pragma pop - -/* 8057F610-8057F614 0000A0 0004+00 0/1 0/0 0/0 .rodata @4333 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4333 = 170.0f; -COMPILER_STRIP_GATE(0x8057F610, &lit_4333); -#pragma pop + bool is_roof_hit = mAcch.ChkRoofHit(); + bool is_wall_hit = mAcch.ChkWallHit() != 0; + bool is_gnd_land = mAcch.ChkGroundLanding(); + bool is_gnd_hit = mAcch.ChkGroundHit(); + bool is_water_hit = mAcch.ChkWaterHit(); + bool is_water_in = mAcch.ChkWaterIn(); + + if (is_wall_hit && speed.abs() > 8.0f) { + cXyz sp2C(speed); + cXyz sp20(speed); + bound(&sp2C, mAcchCir, 0.6f); + + speed.set(sp2C); + speed.y = sp20.y; + speedF = sp2C.absXZ(); + current.angle.y = cM_atan2s(sp2C.x, sp2C.z); + } + + if (is_gnd_land && speed.abs() > 8.0f) { + f32 temp_f30 = field_0x594.y; + bound(&speed, mAcch.m_gnd, 0.6f); + + speed.y = 0.6f * -temp_f30; + if (std::fabs(speed.y) < 5.0f) { + speed.y = 0.0f; + } + } + + if (is_roof_hit) { + f32 temp_f31 = field_0x594.y; + bound(&speed, mAcch.m_gnd, 0.6f); + + speed.y -= 0.6f * -temp_f31; + OS_REPORT("HIT ROOF!!!!spdy<%f>spdy<%f>\n", temp_f31, speed.y); + } + + if (is_gnd_land && mMode == 2) { + mode_init_roll(); + } + + if (mMode == 0 || mMode == 2 || mMode == 1) { + f32 wtr_height = mAcch.m_wtr.GetHeight(); + if (is_water_hit) { + f32 spd_y = speed.y; + + if (chkWaterLineIn() && mMode != 1) { + mode_init_sink(); + } + + if (is_water_in && !mIsPrevInWater) { + cXyz pos(current.pos); + pos.y = wtr_height; + + if (spd_y < -15.0f) { + fopKyM_createWpillar(&pos, 2.0f, 0); + fopAcM_seStart(this, Z2SE_OBJ_FALL_WATER_M, 0); + } + } + } + } + + if (is_gnd_hit && (mMode == 2 || mMode == 3) && !is_water_hit) { + daObjEff::Act_c::make_land_smoke(¤t.pos, l_HIO.smoke_scale); + fopAcM_seStart(this, JA_SE_OBJ_PUT_WBOX_S, 0); + } + + cXyz hamon_pos(current.pos); + hamon_pos.y = mAcch.m_wtr.GetHeight(); + if (hamon_pos.y > current.pos.y && ((mMode == 6 && !chkSinkAll()) || (mMode == 0 && is_gnd_hit) || (mMode == 1 && is_water_in && !chkSinkAll()))) { + fopAcM_effHamonSet(&field_0x950, &hamon_pos, 1.0f, 0.1f); + } +} /* 8057E224-8057E494 001244 0270+00 1/0 0/0 0/0 .text Execute__10daGpTaru_cFv */ -void daGpTaru_c::Execute() { - // NONMATCHING +int daGpTaru_c::Execute() { + field_0x594 = speed; + + mode_proc_call(); + + field_0x588 = current.pos; + mAcch.CrrPos(dComIfG_Bgsp()); + + field_0x57c = current.pos - field_0x588; + + if (mMode == 1) { + current.pos = field_0x588; + } + + bgCheck(); + + attention_info.position.x = current.pos.x; + attention_info.position.y = 50.0f + current.pos.y; + attention_info.position.z = current.pos.z; + eyePos = attention_info.position; + + mIsPrevInWater = mAcch.ChkWaterIn() != 0; + + setBaseMtx(); + + if (mCcCyl.ChkTgHit()) { + if (mCcCyl.GetTgHitGObj()->GetAtType() & 0xD8FAFDBF) { + if (field_0x955 != 0) { + mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_HIT, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mode_init_exploInit(); + field_0x955 = 0; + } + } else { + fopAc_ac_c* tg_hit_actor = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc()); + if (tg_hit_actor != NULL && fopAcM_GetName(tg_hit_actor) == PROC_E_WB) { + mode_init_explosion(); + } + } + } + + if (mCcCyl.ChkCoHit()) { + fopAc_ac_c* co_hit_actor = dCc_GetAc(mCcCyl.GetCoHitObj()->GetAc()); + if (co_hit_actor != NULL && fopAcM_GetName(co_hit_actor) == PROC_E_WB) { + if (co_hit_actor->speedF >= 7.0f) { + mode_init_explosion(); + } + } + } + + mCcCyl.SetR(mExplosionRange + oREG_F(2)); + mCcCyl.SetH(170.0f + oREG_F(3)); + mCcCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCcCyl); + mCcStts.Move(); + return 1; } -/* ############################################################################################## */ -/* 8057F920-8057F924 000050 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_8057F920[4]; - /* 8057E494-8057E5DC 0014B4 0148+00 1/1 0/0 0/0 .text mode_proc_call__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_call() { - // NONMATCHING + static void (daGpTaru_c::*l_mode_func[])() = { + &daGpTaru_c::mode_proc_wait, + &daGpTaru_c::mode_proc_carry, + &daGpTaru_c::mode_proc_drop, + &daGpTaru_c::mode_proc_roll, + &daGpTaru_c::mode_proc_exploInit, + &daGpTaru_c::mode_proc_explosion, + &daGpTaru_c::mode_proc_sink, + }; + + if (fopAcM_checkCarryNow(this) && !mIsPrevCarry) { + mode_init_carry(); + } + + (this->*l_mode_func[mMode])(); + + mIsPrevCarry = fopAcM_checkCarryNow(this) != 0; } /* 8057E5DC-8057E618 0015FC 003C+00 2/2 0/0 0/0 .text mode_init_wait__10daGpTaru_cFv */ void daGpTaru_c::mode_init_wait() { - // NONMATCHING + if (field_0x954 == 0) { + cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } + + speedF = 0.0f; + gravity = -7.0f; + mMode = 0; } /* 8057E618-8057E63C 001638 0024+00 1/0 0/0 0/0 .text mode_proc_wait__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_wait() { - // NONMATCHING + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); } /* 8057E63C-8057E660 00165C 0024+00 1/1 0/0 0/0 .text mode_init_carry__10daGpTaru_cFv */ void daGpTaru_c::mode_init_carry() { - // NONMATCHING + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + speedF = 0.0f; + mMode = 1; } /* 8057E660-8057E700 001680 00A0+00 1/0 0/0 0/0 .text mode_proc_carry__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_carry() { - // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + player->setGrabCollisionOffset(field_0x57c.x, field_0x57c.z, NULL); + + if (!fopAcM_checkCarryNow(this)) { + if (chkWaterLineIn()) { + mode_init_sink(); + } else if (fopAcM_GetSpeedF(this) != 0.0f) { + mode_init_drop(); + } else { + mode_init_roll(); + } + } } /* 8057E700-8057E72C 001720 002C+00 1/1 0/0 0/0 .text mode_init_drop__10daGpTaru_cFv */ void daGpTaru_c::mode_init_drop() { - // NONMATCHING + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + gravity = -l_HIO.weight; + mMode = 2; } /* 8057E72C-8057E750 00174C 0024+00 1/0 0/0 0/0 .text mode_proc_drop__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_drop() { - // NONMATCHING + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); } /* 8057E750-8057E768 001770 0018+00 2/2 0/0 0/0 .text mode_init_roll__10daGpTaru_cFv */ void daGpTaru_c::mode_init_roll() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F614-8057F618 0000A4 0004+00 0/1 0/0 0/0 .rodata @4521 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4521 = 4.0f; -COMPILER_STRIP_GATE(0x8057F614, &lit_4521); -#pragma pop - -/* 8057F618-8057F61C 0000A8 0004+00 0/1 0/0 0/0 .rodata @4522 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4522 = -1000000000.0f; -COMPILER_STRIP_GATE(0x8057F618, &lit_4522); -#pragma pop - -/* 8057F61C-8057F620 0000AC 0004+00 0/1 0/0 0/0 .rodata @4523 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4523 = 0x4645B05B; -COMPILER_STRIP_GATE(0x8057F61C, &lit_4523); -#pragma pop - -/* 8057F620-8057F624 0000B0 0004+00 0/1 0/0 0/0 .rodata @4524 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4524 = 10.0f; -COMPILER_STRIP_GATE(0x8057F620, &lit_4524); -#pragma pop - -/* 8057F624-8057F628 0000B4 0004+00 0/1 0/0 0/0 .rodata @4525 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4525 = 0x3C23D70B; -COMPILER_STRIP_GATE(0x8057F624, &lit_4525); -#pragma pop - -/* 8057F628-8057F62C 0000B8 0004+00 0/2 0/0 0/0 .rodata @4526 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4526 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F628, &lit_4526); -#pragma pop - -/* 8057F62C-8057F630 0000BC 0004+00 0/1 0/0 0/0 .rodata @4527 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4527 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F62C, &lit_4527); -#pragma pop + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + mMode = 3; +} /* 8057E768-8057EB2C 001788 03C4+00 1/0 0/0 0/0 .text mode_proc_roll__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_roll() { - // NONMATCHING + f32 temp_f30 = 70.0f; + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + + dBgS_ObjGndChk gnd_chk; + cXyz sp38(current.pos); + sp38.y += 4.0f; + + gnd_chk.SetPos(&sp38); + f32 gnd_height = dComIfG_Bgsp().GroundCross(&gnd_chk); + + cXyz sp2C; + f32 temp_f27 = 0.1f; + + cM3dGPla tripla; + bool var_r26 = fopAcM_gc_c::gndCheck(&sp38); + bool found_tripla = fopAcM_gc_c::getTriPla(&tripla); + + if (-1000000000.0f != gnd_height && found_tripla) { + f32 temp_f28 = cM_scos(cM_deg2s(temp_f30 - 0.5f)); + sp2C = tripla.mNormal; + if (sp2C.y < temp_f28) { + cXyz sp20(sp2C); + s16 temp_r28 = cM_atan2s(sp20.x, sp20.z); + + f32 var_f31 = 10.0f; + var_f31 *= 1.0f - sp2C.y; + if (var_f31 < 0.1f) { + var_f31 = 0.1f; + } else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + + cXyz sp14(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y)); + cXyz sp8(var_f31 * cM_ssin(temp_r28), 0.0f, var_f31 * cM_scos(temp_r28)); + sp14 += sp8; + speedF = std::sqrt(SQUARE(sp14.x) + SQUARE(sp14.z)); + current.angle.y = cM_atan2s(sp14.x, sp14.z); + } + } + + speedF *= temp_f27; + if (mCcStts.GetCCMoveP()->abs2XZ() > SQUARE(0.1f)) { + speedF *= 0.9f; + } + + if (mAcch.ChkGroundHit()) { + if (speedF < 0.3f) { + mode_init_wait(); + } + } else { + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } } -/* 8057EB2C-8057EBA4 001B4C 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F630-8057F634 0000C0 0004+00 0/1 0/0 0/0 .rodata @4538 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4538 = 500.0f; -COMPILER_STRIP_GATE(0x8057F630, &lit_4538); -#pragma pop - -/* 8057F634-8057F638 0000C4 0004+00 0/2 0/0 0/0 .rodata @4539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4539 = 0.5f; -COMPILER_STRIP_GATE(0x8057F634, &lit_4539); -#pragma pop - /* 8057EBA4-8057EC60 001BC4 00BC+00 1/1 0/0 0/0 .text mode_init_exploInit__10daGpTaru_cFv */ void daGpTaru_c::mode_init_exploInit() { - // NONMATCHING -} + mExploTimer = l_HIO.explosion_wait_time; + field_0x938 = l_HIO.shake; + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + + mWind.position = current.pos; + mWind.mDirection.x = 0.0f; + mWind.mDirection.y = 1.0f; + mWind.mDirection.z = 0.0f; + mWind.mRadius = 500.0f; + mWind.field_0x20 = 0.0f; + mWind.mStrength = 0.5f; + dKyw_pntwind_set(&mWind); -/* ############################################################################################## */ -/* 8057F638-8057F63C 0000C8 0004+00 0/1 0/0 0/0 .rodata @4574 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4574 = 20.0f; -COMPILER_STRIP_GATE(0x8057F638, &lit_4574); -#pragma pop + field_0x9a8 = 0; + mExploWindStrength = 0.0f; + mMode = 4; +} /* 8057EC60-8057EE2C 001C80 01CC+00 1/0 0/0 0/0 .text mode_proc_exploInit__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_exploInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F63C-8057F640 0000CC 0004+00 0/1 0/0 0/0 .rodata @4604 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4604 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F63C, &lit_4604); -#pragma pop - -/* 8057F640-8057F644 0000D0 0004+00 0/2 0/0 0/0 .rodata @4605 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4605 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x8057F640, &lit_4605); -#pragma pop - -/* 8057F644-8057F648 0000D4 0004+00 0/1 0/0 0/0 .rodata @4606 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4606 = 99.0f / 100.0f; -COMPILER_STRIP_GATE(0x8057F644, &lit_4606); -#pragma pop - -/* 8057F648-8057F64C 0000D8 0004+00 0/2 0/0 0/0 .rodata @4607 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4607 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x8057F648, &lit_4607); -#pragma pop - -/* 8057F64C-8057F650 0000DC 0004+00 0/1 0/0 0/0 .rodata @4608 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4608 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x8057F64C, &lit_4608); -#pragma pop - -/* 8057F650-8057F654 0000E0 0004+00 0/1 0/0 0/0 .rodata @4609 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4609 = 0x3A83126F; -COMPILER_STRIP_GATE(0x8057F650, &lit_4609); -#pragma pop + if (mExploTimer != 0) { + mDoAud_seStartLevel(Z2SE_OBJ_BOMBBARREL_IGNITION, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mExploTimer--; + } else { + mDoAud_seStop(Z2SE_OBJ_BOMBBARREL_IGNITION, 0); + mode_init_explosion(); + } + + cXyz sp18(current.pos); + sp18.x -= 20.0f; + sp18.y += 100.0f * l_HIO.barrel_scale.y; + + mSmokeEmtID = dComIfGp_particle_set(mSmokeEmtID, ID_ZI_J_ARWB_SMOKE_A, &sp18, &tevStr, NULL, &l_HIO.pre_smoke_scale, 0xFF, NULL, -1, NULL, NULL, NULL); + + field_0x93c.x = field_0x938 * cM_scos(field_0x944 * 0x3000); + field_0x93c.z = field_0x938 * cM_ssin(field_0x944 * 0x3000); + field_0x944++; +} /* 8057EE2C-8057EFB0 001E4C 0184+00 2/2 0/0 0/0 .text mode_init_explosion__10daGpTaru_cFv */ void daGpTaru_c::mode_init_explosion() { - // NONMATCHING + mWind.mStrength = mExploWindStrength; + + switch (field_0x9a8) { + case 0: + cLib_addCalc(&mExploWindStrength, 1.0f, 0.5f, 0.4f, 0.01f); + if (mExploWindStrength >= 0.99f) { + field_0x9a8++; + } + break; + case 1: + cLib_addCalc(&mExploWindStrength, 0.0f, 0.05f, 0.04f, 0.001f); + if (mExploWindStrength <= 0.01f) { + field_0x9a8++; + } + break; + } + + mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_BREAK, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + dComIfGp_getVibration().StartShock(l_HIO.vibration, 0xF, cXyz(0.0f, 1.0f, 0.0f)); + breakEffSet(); + + mCcCyl.SetAtType(AT_TYPE_BOMB); + mCcCyl.SetAtAtp(4); + mExplosionRange = l_HIO.explosion_range; + mMode = 5; } /* 8057EFB0-8057EFFC 001FD0 004C+00 1/0 0/0 0/0 .text mode_proc_explosion__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_explosion() { - // NONMATCHING + fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF); + fopAcM_delete(this); } /* 8057EFFC-8057F014 00201C 0018+00 2/2 0/0 0/0 .text mode_init_sink__10daGpTaru_cFv */ void daGpTaru_c::mode_init_sink() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F654-8057F658 0000E4 0004+00 0/1 0/0 0/0 .rodata @4660 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4660 = 13.0f; -COMPILER_STRIP_GATE(0x8057F654, &lit_4660); -#pragma pop - -/* 8057F658-8057F65C 0000E8 0004+00 0/1 0/0 0/0 .rodata @4661 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4661 = -10.0f; -COMPILER_STRIP_GATE(0x8057F658, &lit_4661); -#pragma pop - -/* 8057F65C-8057F660 0000EC 0004+00 0/1 0/0 0/0 .rodata @4662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4662 = -20.0f; -COMPILER_STRIP_GATE(0x8057F65C, &lit_4662); -#pragma pop + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + mMode = 6; +} /* 8057F014-8057F104 002034 00F0+00 1/0 0/0 0/0 .text mode_proc_sink__10daGpTaru_cFv */ void daGpTaru_c::mode_proc_sink() { - // NONMATCHING -} + cLib_addCalc(&speedF, 0.0f, 0.05f, 0.1f, 0.01f); + speed.y = cLib_minMaxLimit<f32>(speed.y, -15.0f, 13.0f); -/* ############################################################################################## */ -/* 8057F660-8057F664 0000F0 0004+00 1/1 0/0 0/0 .rodata @4697 */ -SECTION_RODATA static f32 const lit_4697 = 0.75f; -COMPILER_STRIP_GATE(0x8057F660, &lit_4697); + if (mAcch.ChkGroundHit()) { + speedF *= 0.9f; + } -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8057F66D = "Always"; -SECTION_DEAD static char const* const stringBase_8057F674 = "BreakWoodBox.bmd"; -#pragma pop + if (chkWaterLineIn()) { + gravity = -10.0f; + } else { + gravity = -20.0f; + } -/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */ -void daGpTaru_c::breakEffSet() { - // NONMATCHING -} + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); -/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */ -void daGpTaru_c::Draw() { - // NONMATCHING -} - -/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */ -void daGpTaru_c::Delete() { - // NONMATCHING + if (mAcch.ChkGroundHit()) { + cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } else { + cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } } -/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */ -static void daGpTaru_Draw(daGpTaru_c* param_0) { - // NONMATCHING -} +/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */ +void daGpTaru_c::breakEffSet() { + cXyz pos(current.pos); + cXyz size(0.75f, 0.75f, 0.75f); -/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */ -static void daGpTaru_Execute(daGpTaru_c* param_0) { - // NONMATCHING -} + J3DModelData* kibako_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", "BreakWoodBox.bmd"); + JUT_ASSERT(1259, kibako_bmd != 0); -/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */ -static void daGpTaru_Delete(daGpTaru_c* param_0) { - // NONMATCHING -} + JPABaseEmitter* emt_p = dComIfGp_particle_set(dPa_RM(ID_ZF_S_M_EXBARREL00BOARD), &pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, &size); + dPa_modelEcallBack::setModel(emt_p, kibako_bmd, tevStr, 3, NULL, 0, 0); -/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */ -static void daGpTaru_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} + for (int i = 0; i < 8; i++) { + static u16 effName[] = { + dPa_RM(ID_ZF_S_EXBARREL01BOARD), + dPa_RM(ID_ZF_S_EXBARREL_B), + dPa_RM(ID_ZF_S_EXBARREL_C), + dPa_RM(ID_ZF_S_EXBARREL_E), + dPa_RM(ID_ZF_S_EXBARREL_F), + dPa_RM(ID_ZF_S_EXBARREL_G), + dPa_RM(ID_ZF_S_EXBARREL_H), + dPa_RM(ID_ZF_S_EXBARREL_I), + }; -/* 8057F410-8057F458 002430 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING + dComIfGp_particle_set(effName[i], &pos, &tevStr, NULL, &l_HIO.barrel_scale); + } } -/* 8057F458-8057F4C4 002478 006C+00 2/1 0/0 0/0 .text __dt__14daGpTaru_HIO_cFv */ -daGpTaru_HIO_c::~daGpTaru_HIO_c() { - // NONMATCHING -} +/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */ +int daGpTaru_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); -/* 8057F4C4-8057F534 0024E4 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_gpTaru_cpp */ -void __sinit_d_a_obj_gpTaru_cpp() { - // NONMATCHING + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; } -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8057F4C4, __sinit_d_a_obj_gpTaru_cpp); -#pragma pop +/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */ +int daGpTaru_c::Delete() { + dKyw_pntwind_cut(&mWind); + dComIfG_resDelete(&mPhase, "K_ktar00"); -/* 8057F534-8057F53C 002554 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8057F534() { - // NONMATCHING + #ifdef DEBUG + l_HIO.removeHIO(this); + #endif + return 1; } -/* 8057F53C-8057F544 00255C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8057F53C() { - // NONMATCHING +/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */ +static int daGpTaru_Draw(daGpTaru_c* i_this) { + return i_this->Draw(); } -/* 8057F544-8057F54C 002564 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F544() { - // NONMATCHING +/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */ +static int daGpTaru_Execute(daGpTaru_c* i_this) { + return i_this->Execute(); } -/* 8057F54C-8057F554 00256C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F54C() { - // NONMATCHING +/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */ +static int daGpTaru_Delete(daGpTaru_c* i_this) { + return i_this->Delete(); } -/* 8057F554-8057F55C 002574 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F554() { - // NONMATCHING +/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */ +static int daGpTaru_Create(fopAc_ac_c* i_this) { + return ((daGpTaru_c*)i_this)->create(); } -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 8057F7A4-8057F7C4 -00001 0020+00 1/0 0/0 0/0 .data l_daGpTaru_Method */ +static actor_method_class l_daGpTaru_Method = { + (process_method_func)daGpTaru_Create, + (process_method_func)daGpTaru_Delete, + (process_method_func)daGpTaru_Execute, + 0, + (process_method_func)daGpTaru_Draw, +}; + +/* 8057F7C4-8057F7F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GpTaru */ +extern actor_process_profile_definition g_profile_Obj_GpTaru = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_GpTaru, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daGpTaru_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 509, // mPriority + &l_daGpTaru_Method, // sub_method + 0x00044000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_swpush5.cpp b/src/d/actor/d_a_obj_swpush5.cpp index c94dcb11cb..393a257893 100644 --- a/src/d/actor/d_a_obj_swpush5.cpp +++ b/src/d/actor/d_a_obj_swpush5.cpp @@ -6,746 +6,477 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_swpush5.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" void initBaseMtx__10daObjSw5_cFv(); -extern "C" void setBaseMtx__10daObjSw5_cFv(); -extern "C" void Create__10daObjSw5_cFv(); -extern "C" void CreateHeap__10daObjSw5_cFv(); -extern "C" void create__10daObjSw5_cFv(); -extern "C" void Execute__10daObjSw5_cFPPA3_A4_f(); -extern "C" void setting_ride_flag__10daObjSw5_cFv(); -extern "C" bool checkPushable__10daObjSw5_cFv(); -extern "C" void event_proc_call__10daObjSw5_cFv(); -extern "C" void actionPauseNoneInit__10daObjSw5_cFv(); -extern "C" void actionPauseNone__10daObjSw5_cFv(); -extern "C" void actionPauseOrderInit__10daObjSw5_cFv(); -extern "C" void actionPauseOrder__10daObjSw5_cFv(); -extern "C" void actionPauseInit__10daObjSw5_cFv(); -extern "C" void actionPause__10daObjSw5_cFv(); -extern "C" void actionWait__10daObjSw5_cFv(); -extern "C" void actionOrder__10daObjSw5_cFv(); -extern "C" void actionEvent__10daObjSw5_cFv(); -extern "C" void calc_top_pos__10daObjSw5_cFv(); -extern "C" void mode_proc_call__10daObjSw5_cFv(); -extern "C" void modeWaitLowerInit__10daObjSw5_cFv(); -extern "C" void modeWaitLower__10daObjSw5_cFv(); -extern "C" void modeLowerInit__10daObjSw5_cFv(); -extern "C" void modeLower__10daObjSw5_cFv(); -extern "C" void modeWaitUpperInit__10daObjSw5_cFv(); -extern "C" void modeWaitUpper__10daObjSw5_cFv(); -extern "C" void modeUpperInit__10daObjSw5_cFv(); -extern "C" void modeUpper__10daObjSw5_cFv(); -extern "C" void Draw__10daObjSw5_cFv(); -extern "C" void Delete__10daObjSw5_cFv(); -extern "C" static void daObjSw5_Draw__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Execute__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Delete__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Create__FP10fopAc_ac_c(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_obj_swpush5__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -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 onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_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 Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "Z2AudioLib/Z2Instances.h" + /* 8059C6A4-8059C6AC 000000 0008+00 7/7 0/0 0/0 .rodata l_dzbIdx */ -SECTION_RODATA static u8 const l_dzbIdx[8] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, -}; -COMPILER_STRIP_GATE(0x8059C6A4, &l_dzbIdx); - -/* 8059C6AC-8059C6B0 000008 0004+00 0/1 0/0 0/0 .rodata @3718 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3718 = -50.0f; -COMPILER_STRIP_GATE(0x8059C6AC, &lit_3718); -#pragma pop - -/* 8059C6B0-8059C6B4 00000C 0004+00 3/7 0/0 0/0 .rodata @3719 */ -SECTION_RODATA static u8 const lit_3719[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8059C6B0, &lit_3719); - -/* 8059C6B4-8059C6B8 000010 0004+00 0/1 0/0 0/0 .rodata @3720 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3720 = 50.0f; -COMPILER_STRIP_GATE(0x8059C6B4, &lit_3720); -#pragma pop - -/* 8059C8B0-8059C8C0 000048 000C+04 0/1 0/0 0/0 .bss @3654 */ -#pragma push -#pragma force_active on -static u8 lit_3654[12 + 4 /* padding */]; -#pragma pop - -/* 8059C8C0-8059C8CC 000058 000C+00 0/1 0/0 0/0 .bss @3657 */ -#pragma push -#pragma force_active on -static u8 lit_3657[12]; -#pragma pop - -/* 8059C8CC-8059C8D8 000064 000C+00 0/1 0/0 0/0 .bss @3658 */ -#pragma push -#pragma force_active on -static u8 lit_3658[12]; -#pragma pop - -/* 8059C8D8-8059C8E4 000070 000C+00 0/1 0/0 0/0 .bss @3659 */ -#pragma push -#pragma force_active on -static u8 lit_3659[12]; -#pragma pop - -/* 8059C8E4-8059C914 00007C 0030+00 0/1 0/0 0/0 .bss l_push_check_pos$3653 */ -#pragma push -#pragma force_active on -static u8 l_push_check_pos[48]; -#pragma pop +static const int l_dzbIdx[] = {7, 8}; /* 8059B4EC-8059B754 0000EC 0268+00 1/1 0/0 0/0 .text * rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING +static void rideCallBack(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) { + daObjSw5_c* i_this = (daObjSw5_c*)i_bgActor; + daPy_py_c* player_p = daPy_getPlayerActorClass(); + + if (i_this->checkPushable() && fopAcM_CheckStatus(i_rideActor, fopAcM_STATUS_UNK_0x400) && fopAcM_GetName(i_rideActor) == PROC_ALINK) { + static cXyz l_push_check_pos[4] = { + cXyz(-50.0f, 0.0f, -50.0f), + cXyz(50.0f, 0.0f, -50.0f), + cXyz(50.0f, 0.0f, 50.0f), + cXyz(-50.0f, 0.0f, 50.0f), + }; + + cXyz local_rideActor_pos = i_rideActor->current.pos - i_bgActor->current.pos; + mDoMtx_stack_c::YrotS(-i_bgActor->current.angle.y); + mDoMtx_stack_c::multVec(&local_rideActor_pos, &local_rideActor_pos); + + if (l_push_check_pos[0].x <= local_rideActor_pos.x && l_push_check_pos[2].x >= local_rideActor_pos.x && + l_push_check_pos[0].z <= local_rideActor_pos.z && l_push_check_pos[2].z >= local_rideActor_pos.z) + { + i_this->mUnkRideTimer = 6; + if (player_p->checkBootsOrArmorHeavy()) { + i_this->mIsPlayerRideHvy = TRUE; + } else { + i_this->mIsPlayerRideHvy = FALSE; + } + + if (fopAcM_CheckCarryType(i_rideActor, fopAcM_CARRY_TYPE_1)) { + i_this->field_0x5ae = 2; + } else { + i_this->field_0x5ae = 1; + } + } + } } /* 8059B754-8059B804 000354 00B0+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +static int nodeCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + int jnt_no = i_joint->getJntNo(); + J3DModel* model_p = j3dSys.getModel(); + daObjSw5_c* i_this = (daObjSw5_c*)model_p->getUserArea(); + + cMtx_copy(model_p->getAnmMtx(jnt_no), mDoMtx_stack_c::get()); + + if (jnt_no == 1) { + mDoMtx_stack_c::transM(i_this->mTopPos, 0.0f, 0.0f); + } + + model_p->setAnmMtx(jnt_no, mDoMtx_stack_c::get()); + mDoMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } + + return 1; } /* 8059B804-8059B88C 000404 0088+00 1/1 0/0 0/0 .text initBaseMtx__10daObjSw5_cFv */ void daObjSw5_c::initBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mMtx); + mpModel->setBaseScale(scale); + setBaseMtx(); } /* 8059B88C-8059B920 00048C 0094+00 2/2 0/0 0/0 .text setBaseMtx__10daObjSw5_cFv */ void daObjSw5_c::setBaseMtx() { - // NONMATCHING -} + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); -/* ############################################################################################## */ -/* 8059C6B8-8059C6BC 000014 0004+00 1/3 0/0 0/0 .rodata @3815 */ -SECTION_RODATA static f32 const lit_3815 = -25.0f; -COMPILER_STRIP_GATE(0x8059C6B8, &lit_3815); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mTopPos, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} /* 8059B920-8059BA1C 000520 00FC+00 1/0 0/0 0/0 .text Create__10daObjSw5_cFv */ -void daObjSw5_c::Create() { - // NONMATCHING -} +int daObjSw5_c::Create() { + if (dComIfG_Bgsp().Regist(mpBgW2, this)) { + return 0; + } + + initBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mpBgW->SetRideCallback(rideCallBack); + + J3DJoint* sw_jnt = mpModel->getModelData()->getJointNodePointer(1); + JUT_ASSERT(276, sw_jnt != 0); + + sw_jnt->setCallBack(nodeCallBack); + mpModel->setUserArea((uintptr_t)this); -/* ############################################################################################## */ -/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8059C6D0 = "D_Hfsw00"; -#pragma pop + if (fopAcM_isSwitch(this, getSwNo())) { + mTopPos = -25.0f; + modeWaitUpperInit(); + } + + mpBgW2->Move(); + mpBgW2->SetLock(); + return 1; +} /* 8059C6FC-8059C700 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_swpush5__stringBase0; +static char* l_arcName = "D_Hfsw00"; /* 8059BA1C-8059BB1C 00061C 0100+00 1/0 0/0 0/0 .text CreateHeap__10daObjSw5_cFv */ -void daObjSw5_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8059C700-8059C70C -00001 000C+00 0/1 0/0 0/0 .data @3907 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3907[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPauseNone__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C70C-8059C718 -00001 000C+00 0/1 0/0 0/0 .data @3908 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3908[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPauseOrder__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C718-8059C724 -00001 000C+00 0/1 0/0 0/0 .data @3909 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3909[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPause__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C724-8059C730 -00001 000C+00 0/1 0/0 0/0 .data @3910 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3910[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C730-8059C73C -00001 000C+00 0/1 0/0 0/0 .data @3911 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3911[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrder__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C73C-8059C748 -00001 000C+00 0/1 0/0 0/0 .data @3912 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3912[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEvent__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C748-8059C790 00006C 0048+00 0/1 0/0 0/0 .data l_func$3906 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8059C790-8059C79C -00001 000C+00 0/1 0/0 0/0 .data @3993 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3993[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitLower__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C79C-8059C7A8 -00001 000C+00 0/1 0/0 0/0 .data @3994 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3994[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeLower__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C7A8-8059C7B4 -00001 000C+00 0/1 0/0 0/0 .data @3995 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3995[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitUpper__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C7B4-8059C7C0 -00001 000C+00 0/1 0/0 0/0 .data @3996 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3996[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeUpper__10daObjSw5_cFv, -}; -#pragma pop - -/* 8059C7C0-8059C7F0 0000E4 0030+00 0/1 0/0 0/0 .data l_mode_func$3992 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop +int daObjSw5_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + JUT_ASSERT(308, modelData != 0); -/* 8059C7F0-8059C810 -00001 0020+00 1/0 0/0 0/0 .data l_daObjSw5_Method */ -static actor_method_class l_daObjSw5_Method = { - (process_method_func)daObjSw5_Create__FP10fopAc_ac_c, - (process_method_func)daObjSw5_Delete__FP10daObjSw5_c, - (process_method_func)daObjSw5_Execute__FP10daObjSw5_c, - 0, - (process_method_func)daObjSw5_Draw__FP10daObjSw5_c, -}; + mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpModel == NULL) { + return 0; + } -/* 8059C810-8059C840 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush5 */ -extern actor_process_profile_definition g_profile_Obj_Swpush5 = { - fpcLy_CURRENT_e, // mLayerID - 2, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Swpush5, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjSw5_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 13, // mPriority - &l_daObjSw5_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; + mpBgW2 = new dBgW(); + if (mpBgW2 == NULL || mpBgW2->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, l_dzbIdx[0]), 1, &mMtx)) { + mpBgW2 = NULL; + return 0; + } -/* 8059C840-8059C868 000164 0028+00 1/1 0/0 0/0 .data __vt__10daObjSw5_c */ -SECTION_DATA extern void* __vt__10daObjSw5_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daObjSw5_cFv, - (void*)Create__10daObjSw5_cFv, - (void*)Execute__10daObjSw5_cFPPA3_A4_f, - (void*)Draw__10daObjSw5_cFv, - (void*)Delete__10daObjSw5_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; + return 1; +} /* 8059BB1C-8059BBD4 00071C 00B8+00 1/1 0/0 0/0 .text create__10daObjSw5_cFv */ -void daObjSw5_c::create() { - // NONMATCHING +int daObjSw5_c::create() { + fopAcM_SetupActor(this, daObjSw5_c); + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + phase_state = MoveBGCreate(l_arcName, l_dzbIdx[1], NULL, 0x1060, NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + } + + return phase_state; } /* 8059BBD4-8059BC70 0007D4 009C+00 1/0 0/0 0/0 .text Execute__10daObjSw5_cFPPA3_A4_f */ -void daObjSw5_c::Execute(Mtx** param_0) { - // NONMATCHING +int daObjSw5_c::Execute(Mtx** param_0) { + setting_ride_flag(); + mCounter++; + + event_proc_call(); + mode_proc_call(); + calc_top_pos(); + + mpBgW2->Move(); + + *param_0 = &mBgMtx; + setBaseMtx(); + + field_0x5af = field_0x5ae; + field_0x5ad = mUnkRideTimer; + field_0x5ae = 0; + mIsPlayerRideHvyPrev = mIsPlayerRideHvy; + mIsPlayerRideHvy = FALSE; + return 1; } /* 8059BC70-8059BD24 000870 00B4+00 1/1 0/0 0/0 .text setting_ride_flag__10daObjSw5_cFv */ void daObjSw5_c::setting_ride_flag() { - // NONMATCHING + if (mUnkRideTimer != 0) { + mUnkRideTimer--; + } + + if (field_0x5ae != 0) { + if (field_0x5b1 != 0) { + field_0x5b0 = 8; + } else { + field_0x5b0++; + if (field_0x5b0 > 8) { + field_0x5b1 = 1; + } + } + + if (mIsPlayerRideHvyPrev != mIsPlayerRideHvy) { + field_0x5b1 = 0; + field_0x5b0 = 0; + } + } else if (field_0x5b1 != 0) { + field_0x5b0--; + if (field_0x5b0 == 0) { + field_0x5b1 = 0; + } + } else { + field_0x5b0 = 0; + } } /* 8059BD24-8059BD2C 000924 0008+00 1/1 0/0 0/0 .text checkPushable__10daObjSw5_cFv */ -bool daObjSw5_c::checkPushable() { - return true; -} +// getSwNo2 always returns 0xFF, so this function always returns true +BOOL daObjSw5_c::checkPushable() { + u8 swbit2 = getSwNo2(); + if (swbit2 == 0xFF) { + return true; + } -/* ############################################################################################## */ -/* 8059C914-8059C918 -00001 0004+00 2/2 0/0 0/0 .bss None */ -/* 8059C914 0001+00 data_8059C914 None */ -/* 8059C915 0003+00 data_8059C915 None */ -static u8 struct_8059C914[4]; + if (swbit2 != 0xFF && fopAcM_isSwitch(this, swbit2)) { + return true; + } + + return false; +} /* 8059BD2C-8059BE18 00092C 00EC+00 1/1 0/0 0/0 .text event_proc_call__10daObjSw5_cFv */ void daObjSw5_c::event_proc_call() { - // NONMATCHING + static void (daObjSw5_c::*l_func[])() = { + &daObjSw5_c::actionPauseNone, + &daObjSw5_c::actionPauseOrder, + &daObjSw5_c::actionPause, + &daObjSw5_c::actionWait, + &daObjSw5_c::actionOrder, + &daObjSw5_c::actionEvent, + }; + + (this->*l_func[mAction])(); } /* 8059BE18-8059BE24 000A18 000C+00 2/2 0/0 0/0 .text actionPauseNoneInit__10daObjSw5_cFv */ void daObjSw5_c::actionPauseNoneInit() { - // NONMATCHING + mAction = 0; } /* 8059BE24-8059BE28 000A24 0004+00 1/0 0/0 0/0 .text actionPauseNone__10daObjSw5_cFv */ -void daObjSw5_c::actionPauseNone() { - /* empty function */ -} +void daObjSw5_c::actionPauseNone() {} /* 8059BE28-8059BE80 000A28 0058+00 1/1 0/0 0/0 .text actionPauseOrderInit__10daObjSw5_cFv */ void daObjSw5_c::actionPauseOrderInit() { - // NONMATCHING + if (mAction != 1) { + mAction = 1; + fopAcM_orderPotentialEvent(this, 2, 0, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } } /* 8059BE80-8059BEB4 000A80 0034+00 1/0 0/0 0/0 .text actionPauseOrder__10daObjSw5_cFv */ void daObjSw5_c::actionPauseOrder() { - // NONMATCHING + if (eventInfo.checkCommandDemoAccrpt()) { + actionPauseInit(); + } else { + actionPauseNoneInit(); + } } /* 8059BEB4-8059BEE0 000AB4 002C+00 1/1 0/0 0/0 .text actionPauseInit__10daObjSw5_cFv */ void daObjSw5_c::actionPauseInit() { - // NONMATCHING + daPy_getPlayerActorClass()->onWolfEyeKeep(); + mPauseTimer = 10; + mAction = 2; } /* 8059BEE0-8059BF48 000AE0 0068+00 1/0 0/0 0/0 .text actionPause__10daObjSw5_cFv */ void daObjSw5_c::actionPause() { - // NONMATCHING + daPy_getPlayerActorClass()->onWolfEyeKeep(); + + mPauseTimer--; + if (mPauseTimer == 0) { + dComIfGp_event_reset(); + actionPauseNoneInit(); + } } /* 8059BF48-8059BF4C 000B48 0004+00 1/0 0/0 0/0 .text actionWait__10daObjSw5_cFv */ -void daObjSw5_c::actionWait() { - /* empty function */ -} +void daObjSw5_c::actionWait() {} /* 8059BF4C-8059BF50 000B4C 0004+00 1/0 0/0 0/0 .text actionOrder__10daObjSw5_cFv */ -void daObjSw5_c::actionOrder() { - /* empty function */ -} +void daObjSw5_c::actionOrder() {} /* 8059BF50-8059BF54 000B50 0004+00 1/0 0/0 0/0 .text actionEvent__10daObjSw5_cFv */ -void daObjSw5_c::actionEvent() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 8059C6BC-8059C6C0 000018 0004+00 0/1 0/0 0/0 .rodata @3986 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3986 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8059C6BC, &lit_3986); -#pragma pop - -/* 8059C6C0-8059C6C4 00001C 0004+00 0/1 0/0 0/0 .rodata @3987 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3987 = 0.5f; -COMPILER_STRIP_GATE(0x8059C6C0, &lit_3987); -#pragma pop - -/* 8059C6C4-8059C6C8 000020 0004+00 2/6 0/0 0/0 .rodata @3988 */ -SECTION_RODATA static f32 const lit_3988 = 1.0f; -COMPILER_STRIP_GATE(0x8059C6C4, &lit_3988); +void daObjSw5_c::actionEvent() {} /* 8059BF54-8059BFE4 000B54 0090+00 1/1 0/0 0/0 .text calc_top_pos__10daObjSw5_cFv */ void daObjSw5_c::calc_top_pos() { - // NONMATCHING + speed.y -= (field_0x5f8 - field_0x5fc) * (0.9f + KREG_F(1)); + speed.y -= speed.y * (0.5f + KREG_F(0)); + field_0x5f8 += speed.y; + + mTopPos = -25.0f * (1.0f - field_0x5f8); + mTopPos = cLib_minMaxLimit<f32>(mTopPos, -25.0f, 0.0f); } /* 8059BFE4-8059C0A0 000BE4 00BC+00 1/1 0/0 0/0 .text mode_proc_call__10daObjSw5_cFv */ void daObjSw5_c::mode_proc_call() { - // NONMATCHING + static void (daObjSw5_c::*l_mode_func[])() = { + &daObjSw5_c::modeWaitLower, + &daObjSw5_c::modeLower, + &daObjSw5_c::modeWaitUpper, + &daObjSw5_c::modeUpper, + }; + + (this->*l_mode_func[mMode])(); } /* 8059C0A0-8059C0C8 000CA0 0028+00 1/1 0/0 0/0 .text modeWaitLowerInit__10daObjSw5_cFv */ void daObjSw5_c::modeWaitLowerInit() { - // NONMATCHING + speed.y = 0.0f; + field_0x5f8 = 1.0f; + field_0x5fc = 1.0f; + mMode = 0; } -/* ############################################################################################## */ -/* 8059C6C8-8059C6CC 000024 0004+00 1/3 0/0 0/0 .rodata @4041 */ -SECTION_RODATA static f32 const lit_4041 = -1.0f; -COMPILER_STRIP_GATE(0x8059C6C8, &lit_4041); - -/* 8059C6CC-8059C6D0 000028 0004+00 0/1 0/0 0/0 .rodata @4042 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4042 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x8059C6CC, &lit_4042); -#pragma pop - /* 8059C0C8-8059C23C 000CC8 0174+00 1/0 0/0 0/0 .text modeWaitLower__10daObjSw5_cFv */ void daObjSw5_c::modeWaitLower() { - // NONMATCHING + bool var_r30 = false; + bool do_pause = false; + daPy_py_c* player = daPy_getPlayerActorClass(); + + if (field_0x5b1 != 0) { + var_r30 = true; + } + + if (field_0x5ae != 0 && field_0x5af == 0) { + do_pause = true; + } + + if (var_r30) { + if (mIsPlayerRideHvy) { + mPauseTimer += 30; + modeLowerInit(); + } else { + if (field_0x5fc == 1.0f) { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_RIDE, 0); + } + field_0x5fc = 0.8f; + } + } else { + if (field_0x5fc != 1.0f) { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_DROP, 0); + } + field_0x5fc = 1.0f; + } + + if (do_pause) { + actionPauseOrderInit(); + } } /* 8059C23C-8059C2D0 000E3C 0094+00 1/1 0/0 0/0 .text modeLowerInit__10daObjSw5_cFv */ void daObjSw5_c::modeLowerInit() { - // NONMATCHING + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_ON, 0); + field_0x5fc = 0.0f; + mMode = 1; } /* 8059C2D0-8059C364 000ED0 0094+00 1/0 0/0 0/0 .text modeLower__10daObjSw5_cFv */ void daObjSw5_c::modeLower() { - // NONMATCHING + daPy_getPlayerActorClass(); + if (-25.0f == mTopPos) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + modeWaitUpperInit(); + + fopAcM_onSwitch(this, getSwNo()); + OS_REPORT("ヘビー踏みスイッチ:スイッチONしました<%d>\n", getSwNo()); + } } /* 8059C364-8059C370 000F64 000C+00 2/2 0/0 0/0 .text modeWaitUpperInit__10daObjSw5_cFv */ void daObjSw5_c::modeWaitUpperInit() { - // NONMATCHING + mMode = 2; } /* 8059C370-8059C3C4 000F70 0054+00 1/0 0/0 0/0 .text modeWaitUpper__10daObjSw5_cFv */ void daObjSw5_c::modeWaitUpper() { - // NONMATCHING + if (!fopAcM_isSwitch(this, getSwNo())) { + modeUpperInit(); + } } /* 8059C3C4-8059C454 000FC4 0090+00 1/1 0/0 0/0 .text modeUpperInit__10daObjSw5_cFv */ void daObjSw5_c::modeUpperInit() { - // NONMATCHING + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_OFF, 0); + field_0x5fc = 1.0f; + mMode = 3; } /* 8059C454-8059C4BC 001054 0068+00 1/0 0/0 0/0 .text modeUpper__10daObjSw5_cFv */ void daObjSw5_c::modeUpper() { - // NONMATCHING + if (mTopPos == 0.0f) { + modeWaitLowerInit(); + + fopAcM_offSwitch(this, getSwNo()); + OS_REPORT("ヘビー踏みスイッチ:スイッチOFFしました<%d>\n", getSwNo()); + + field_0x5b1 = 0; + field_0x5b0 = 0; + } } /* 8059C4BC-8059C560 0010BC 00A4+00 1/0 0/0 0/0 .text Draw__10daObjSw5_cFv */ -void daObjSw5_c::Draw() { - // NONMATCHING +int daObjSw5_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; } /* 8059C560-8059C5CC 001160 006C+00 1/0 0/0 0/0 .text Delete__10daObjSw5_cFv */ -void daObjSw5_c::Delete() { - // NONMATCHING +int daObjSw5_c::Delete() { + if (mpBgW2 != NULL && mpBgW2->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW2); + } + + dComIfG_resDelete(&mPhase, l_arcName); + return 1; } /* 8059C5CC-8059C5F8 0011CC 002C+00 1/0 0/0 0/0 .text daObjSw5_Draw__FP10daObjSw5_c */ -static void daObjSw5_Draw(daObjSw5_c* param_0) { - // NONMATCHING +static int daObjSw5_Draw(daObjSw5_c* i_this) { + return i_this->MoveBGDraw(); } /* 8059C5F8-8059C618 0011F8 0020+00 1/0 0/0 0/0 .text daObjSw5_Execute__FP10daObjSw5_c */ -static void daObjSw5_Execute(daObjSw5_c* param_0) { - // NONMATCHING +static int daObjSw5_Execute(daObjSw5_c* i_this) { + return i_this->MoveBGExecute(); } /* 8059C618-8059C638 001218 0020+00 1/0 0/0 0/0 .text daObjSw5_Delete__FP10daObjSw5_c */ -static void daObjSw5_Delete(daObjSw5_c* param_0) { - // NONMATCHING +static int daObjSw5_Delete(daObjSw5_c* i_this) { + return i_this->MoveBGDelete(); } /* 8059C638-8059C658 001238 0020+00 1/0 0/0 0/0 .text daObjSw5_Create__FP10fopAc_ac_c */ -static void daObjSw5_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8059C658-8059C694 001258 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8059C918-8059C91C 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C918[4]; -#pragma pop - -/* 8059C91C-8059C920 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_8059C91C[4]; -#pragma pop - -/* 8059C920-8059C924 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C920[4]; -#pragma pop - -/* 8059C924-8059C928 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C924[4]; -#pragma pop - -/* 8059C928-8059C92C 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C928[4]; -#pragma pop - -/* 8059C92C-8059C930 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C92C[4]; -#pragma pop - -/* 8059C930-8059C934 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_8059C930[4]; -#pragma pop - -/* 8059C934-8059C938 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8059C934[4]; -#pragma pop - -/* 8059C938-8059C93C 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8059C938[4]; -#pragma pop - -/* 8059C93C-8059C940 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_8059C93C[4]; -#pragma pop - -/* 8059C940-8059C944 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C940[4]; -#pragma pop - -/* 8059C944-8059C948 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C944[4]; -#pragma pop - -/* 8059C948-8059C94C 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C948[4]; -#pragma pop - -/* 8059C94C-8059C950 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C94C[4]; -#pragma pop - -/* 8059C950-8059C954 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8059C950[4]; -#pragma pop - -/* 8059C954-8059C958 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C954[4]; -#pragma pop - -/* 8059C958-8059C95C 0000F0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C958[4]; -#pragma pop - -/* 8059C95C-8059C960 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8059C95C[4]; -#pragma pop - -/* 8059C960-8059C964 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_8059C960[4]; -#pragma pop - -/* 8059C964-8059C968 0000FC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C964[4]; -#pragma pop - -/* 8059C968-8059C96C 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8059C968[4]; -#pragma pop +static int daObjSw5_Create(fopAc_ac_c* i_this) { + return ((daObjSw5_c*)i_this)->create(); +} -/* 8059C96C-8059C970 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C96C[4]; -#pragma pop +/* 8059C7F0-8059C810 -00001 0020+00 1/0 0/0 0/0 .data l_daObjSw5_Method */ +static actor_method_class l_daObjSw5_Method = { + (process_method_func)daObjSw5_Create, + (process_method_func)daObjSw5_Delete, + (process_method_func)daObjSw5_Execute, + 0, + (process_method_func)daObjSw5_Draw, +}; -/* 8059C970-8059C974 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C970[4]; -#pragma pop +/* 8059C810-8059C840 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush5 */ +extern actor_process_profile_definition g_profile_Obj_Swpush5 = { + fpcLy_CURRENT_e, // mLayerID + 2, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Swpush5, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjSw5_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 13, // mPriority + &l_daObjSw5_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; -/* 8059C974-8059C978 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C974[4]; -#pragma pop - -/* 8059C978-8059C97C 000110 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C978[4]; -#pragma pop - -/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES |
