summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_gra_rock.cpp
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2024-12-12 22:58:40 +0200
committerGitHub <noreply@github.com>2024-12-12 12:58:40 -0800
commitee992eb80c798a3c3cec73fb785edf6852fbd259 (patch)
tree70aa0f6832e88619a91548c40f999d5b6ade597a /src/d/actor/d_a_obj_gra_rock.cpp
parent559fcb3a1649cdc3b671ed0909ab35f15ec0563d (diff)
daObj_BouMato_c OK (#2264)
* daObj_BouMato_c OK * daObjGraRock_c Matched except template function order * daBkyRock_c OK
Diffstat (limited to 'src/d/actor/d_a_obj_gra_rock.cpp')
-rw-r--r--src/d/actor/d_a_obj_gra_rock.cpp668
1 files changed, 256 insertions, 412 deletions
diff --git a/src/d/actor/d_a_obj_gra_rock.cpp b/src/d/actor/d_a_obj_gra_rock.cpp
index b52d2fb15b..e13fe09261 100644
--- a/src/d/actor/d_a_obj_gra_rock.cpp
+++ b/src/d/actor/d_a_obj_gra_rock.cpp
@@ -4,496 +4,340 @@
*/
#include "d/actor/d_a_obj_gra_rock.h"
-#include "dol2asm.h"
+#include "d/actor/d_a_npc.h"
+#include "d/d_bg_w.h"
-
-//
-// Forward References:
-//
-
-extern "C" void setAttnPos__14daObjGraRock_cFv();
-extern "C" void setBaseMtx__14daObjGraRock_cFv();
-extern "C" void setPrtcl__14daObjGraRock_cFv();
-extern "C" void bombParticleSet__14daObjGraRock_cFv();
-extern "C" void setEnvTevColor__14daObjGraRock_cFv();
-extern "C" void setRoomNo__14daObjGraRock_cFv();
-extern "C" void col_set__14daObjGraRock_cFv();
-extern "C" void checkHitAt__14daObjGraRock_cFP8cCcD_Obj();
-extern "C" void Create__14daObjGraRock_cFv();
-extern "C" void CreateHeap__14daObjGraRock_cFv();
-extern "C" void create__14daObjGraRock_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void Execute__14daObjGraRock_cFPPA3_A4_f();
-extern "C" void Draw__14daObjGraRock_cFv();
-extern "C" void Delete__14daObjGraRock_cFv();
-extern "C" static void daObjGraRock_Draw__FP14daObjGraRock_c();
-extern "C" static void daObjGraRock_Execute__FP14daObjGraRock_c();
-extern "C" static bool daObjGraRock_IsDelete__FP14daObjGraRock_c();
-extern "C" static void daObjGraRock_Delete__FP14daObjGraRock_c();
-extern "C" static void daObjGraRock_create__FP10fopAc_ac_c();
-extern "C" void func_80C122F0(void* _this, s16*);
-extern "C" void func_80C1230C(void* _this, u8*);
-extern "C" void func_80C12328(void* _this, int, int);
-extern "C" static void func_80C123A4();
-extern "C" static void func_80C123AC();
-extern "C" u8 const mCcDCyl__14daObjGraRock_c[68];
-extern "C" extern char const* const d_a_obj_gra_rock__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotS__FPA4_fsss();
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btpAnmFP16J3DMaterialTableP16J3DAnmTexPatterniifss();
-extern "C" void entry__13mDoExt_btpAnmFP16J3DMaterialTables();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void onSwitch__10dSv_info_cFii();
-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
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void LockonTarget__12dAttention_cFl();
-extern "C" void LockonTruth__12dAttention_cFv();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-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__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__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 Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_onEvtBit__FUl();
-extern "C" void daNpcF_getDistTableIdx__Fii();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void cM_rndF__Ff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void ChkUsed__9cBgW_BgIdCFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_27();
-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" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 80C123BC-80C12400 000000 0044+00 3/3 0/0 0/0 .rodata mCcDCyl__14daObjGraRock_c */
-SECTION_RODATA u8 const daObjGraRock_c::mCcDCyl[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x11, 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,
-};
-COMPILER_STRIP_GATE(0x80C123BC, &daObjGraRock_c::mCcDCyl);
-
-/* 80C12400-80C12404 000044 0004+00 1/4 0/0 0/0 .rodata @3857 */
-SECTION_RODATA static u8 const lit_3857[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80C12400, &lit_3857);
-
-/* 80C12404-80C12408 000048 0004+00 0/2 0/0 0/0 .rodata @3858 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3858 = 680.0f;
-COMPILER_STRIP_GATE(0x80C12404, &lit_3858);
-#pragma pop
-
-/* 80C12408-80C1240C 00004C 0004+00 0/2 0/0 0/0 .rodata @3859 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3859 = 145.0f;
-COMPILER_STRIP_GATE(0x80C12408, &lit_3859);
-#pragma pop
-
-/* 80C1240C-80C12410 000050 0004+00 4/6 0/0 0/0 .rodata @3860 */
-SECTION_RODATA static f32 const lit_3860 = 1.0f;
-COMPILER_STRIP_GATE(0x80C1240C, &lit_3860);
-
-/* 80C12410-80C12414 000054 0004+00 0/2 0/0 0/0 .rodata @3861 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3861 = -1.0f;
-COMPILER_STRIP_GATE(0x80C12410, &lit_3861);
-#pragma pop
-
-/* 80C12414-80C1241C 000058 0004+04 0/1 0/0 0/0 .rodata @3862 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3862[1 + 1 /* padding */] = {
- 90.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80C12414, &lit_3862);
-#pragma pop
-
-/* 80C1241C-80C12424 000060 0008+00 1/2 0/0 0/0 .rodata @3864 */
-SECTION_RODATA static u8 const lit_3864[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+dCcD_SrcCyl const daObjGraRock_c::mCcDCyl = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x2020, 0x11}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
-COMPILER_STRIP_GATE(0x80C1241C, &lit_3864);
/* 80C110F8-80C11444 000078 034C+00 1/1 0/0 0/0 .text setAttnPos__14daObjGraRock_cFv */
void daObjGraRock_c::setAttnPos() {
- // NONMATCHING
+ cXyz cStack_50(0.0f, 680.0f, 145.0f);
+ mDoMtx_stack_c::ZXYrotS(current.angle.x, current.angle.y, current.angle.z);
+ mDoMtx_stack_c::multVec(&cStack_50, &attention_info.position);
+ attention_info.position += current.pos;
+ attention_info.distances[0] = daNpcF_getDistTableIdx(8, 5);
+ attention_info.flags = 1;
+ dAttention_c& attention = dComIfGp_getAttention();
+ if (attention.LockonTruth()) {
+ if (attention.LockonTarget(0) == this && field_0x9bc == 0 && field_0x9b6 == 0) {
+ field_0x9b6 = 90;
+ field_0x9bd = 3;
+ s16 sVar4 = cLib_getRndValue(0, 0x10000);
+ s16 sVar5 = cLib_getRndValue(0x400, 0x200);
+ field_0x9b2 = sVar5 * cM_scos(sVar4);
+ field_0x9b4 = sVar5 * cM_ssin(sVar4);
+ field_0x9b8 = cLib_getRndValue(2, 2);
+ field_0x9ba = cLib_getRndValue(2, 2);
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_ZR_GRN_ROCK_GRGR, &current.pos, 0, 0, 1.0f, 1.0f,
+ -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStart(Z2SE_GRA_V_YURAYURA, &attention_info.position, 0, 0, 1.0f,
+ 1.0f, -1.0f, -1.0f, 0);
+ }
+ field_0x9bc = 1;
+ } else {
+ field_0x9bc = 0;
+ }
+ if (cLib_calcTimer(&field_0x9b6) != 0) {
+ current.angle.x = ((f32)field_0x9b2 * (f32)field_0x9b6 / 90.0f) * cM_ssin((field_0x9b8 * (field_0x9b6 * 0x10000)) / 90);
+ current.angle.z = ((f32)field_0x9b4 * (f32)field_0x9b6 / 90.0f) * cM_ssin((field_0x9ba * (field_0x9b6 * 0x10000)) / 90);
+ setPrtcl();
+ }
+ shape_angle = current.angle;
}
/* 80C11444-80C114C0 0003C4 007C+00 2/2 0/0 0/0 .text setBaseMtx__14daObjGraRock_cFv */
void daObjGraRock_c::setBaseMtx() {
- // NONMATCHING
+ 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);
+ mModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
-/* ############################################################################################## */
/* 80C12424-80C12428 000068 0004+00 1/1 0/0 0/0 .rodata l_prticles_id$3890 */
-SECTION_RODATA static u8 const l_prticles_id[4] = {
- 0x87,
- 0x5F,
- 0x87,
- 0x60,
+static u16 const l_prticles_id[2] = {
+ 0x875F,
+ 0x8760,
};
-COMPILER_STRIP_GATE(0x80C12424, &l_prticles_id);
/* 80C114C0-80C1157C 000440 00BC+00 1/1 0/0 0/0 .text setPrtcl__14daObjGraRock_cFv */
void daObjGraRock_c::setPrtcl() {
- // NONMATCHING
+ for (int i = 0; i < 2; i++) {
+ mParticleIds[i] = dComIfGp_particle_set(mParticleIds[i], l_prticles_id[i], &current.pos,
+ &current.angle, &scale);
+ }
}
/* 80C1157C-80C11730 0004FC 01B4+00 1/1 0/0 0/0 .text bombParticleSet__14daObjGraRock_cFv
*/
void daObjGraRock_c::bombParticleSet() {
- // NONMATCHING
+ dComIfGp_particle_set(0x875b, &current.pos, &tevStr, &current.angle, 0);
+ dComIfGp_particle_set(0x8767, &current.pos, &tevStr, &current.angle, 0);
+ dComIfGp_particle_set(0x875c, &current.pos, &tevStr, &current.angle, 0);
+ dComIfGp_particle_set(0x875d, &current.pos, &tevStr, &current.angle, 0);
+ dComIfGp_particle_set(0x875e, &current.pos, &tevStr, &current.angle, 0);
}
/* 80C11730-80C1178C 0006B0 005C+00 1/1 0/0 0/0 .text setEnvTevColor__14daObjGraRock_cFv
*/
void daObjGraRock_c::setEnvTevColor() {
- // NONMATCHING
+ tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mGndChk);
+ tevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(mGndChk);
}
/* 80C1178C-80C117D0 00070C 0044+00 1/1 0/0 0/0 .text setRoomNo__14daObjGraRock_cFv */
void daObjGraRock_c::setRoomNo() {
- // NONMATCHING
+ s32 roomId = dComIfG_Bgsp().GetRoomId(mGndChk);
+ fopAcM_SetRoomNo(this, roomId);
+ mStts.SetRoomId(roomId);
}
/* 80C117D0-80C11964 000750 0194+00 1/1 0/0 0/0 .text col_set__14daObjGraRock_cFv */
void daObjGraRock_c::col_set() {
- // NONMATCHING
+ if (mCyl.ChkTgHit()) {
+ if (checkHitAt(mCyl.GetTgHitObj())) {
+ cXyz acStack_2c(0.0f, 680.0f, 145.0f);
+ mDoMtx_stack_c::ZXYrotS(current.angle.x, current.angle.y, current.angle.z);
+ mDoMtx_stack_c::multVec(&acStack_2c, &acStack_2c);
+ acStack_2c += current.pos;
+ bombParticleSet();
+ daNpcF_onEvtBit(0x150);
+ dComIfGs_onSwitch(field_0x9c8, fopAcM_GetRoomNo(this));
+ csXyz local_34(current.angle);
+ local_34.x = 2;
+ fopAcM_create(PROC_NPC_GRA, 0x5fffff00, &acStack_2c, fopAcM_GetRoomNo(this), &local_34, 0,
+ -1);
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_ZR_GRN_ROCK_BRK, &current.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
+ 0);
+ fopAcM_delete(this);
+ return;
+ }
+ mCyl.ClrTgHit();
+ }
+ dComIfG_Ccsp()->Set(&mCyl);
}
/* 80C11964-80C11970 0008E4 000C+00 1/1 0/0 0/0 .text checkHitAt__14daObjGraRock_cFP8cCcD_Obj */
-void daObjGraRock_c::checkHitAt(cCcD_Obj* param_0) {
- // NONMATCHING
+int daObjGraRock_c::checkHitAt(cCcD_Obj* hitObj) {
+ return hitObj->ChkAtType(AT_TYPE_BOMB) ? 1 : 0;
}
-/* ############################################################################################## */
-/* 80C12428-80C1242C 00006C 0004+00 0/1 0/0 0/0 .rodata @4024 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4024 = 0xC3A438D5;
-COMPILER_STRIP_GATE(0x80C12428, &lit_4024);
-#pragma pop
-
-/* 80C1242C-80C12430 000070 0004+00 0/1 0/0 0/0 .rodata @4025 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4025 = -150.0f;
-COMPILER_STRIP_GATE(0x80C1242C, &lit_4025);
-#pragma pop
-
-/* 80C12430-80C12434 000074 0004+00 0/1 0/0 0/0 .rodata @4026 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4026 = 0xC3C01581;
-COMPILER_STRIP_GATE(0x80C12430, &lit_4026);
-#pragma pop
-
-/* 80C12434-80C12438 000078 0004+00 0/1 0/0 0/0 .rodata @4027 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4027 = 0x43A1274C;
-COMPILER_STRIP_GATE(0x80C12434, &lit_4027);
-#pragma pop
-
-/* 80C12438-80C1243C 00007C 0004+00 0/1 0/0 0/0 .rodata @4028 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4028 = 0x4483F1C2;
-COMPILER_STRIP_GATE(0x80C12438, &lit_4028);
-#pragma pop
-
-/* 80C1243C-80C12440 000080 0004+00 0/1 0/0 0/0 .rodata @4029 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4029 = 0x43C89F9E;
-COMPILER_STRIP_GATE(0x80C1243C, &lit_4029);
-#pragma pop
-
/* 80C11970-80C11B68 0008F0 01F8+00 1/0 0/0 0/0 .text Create__14daObjGraRock_cFv */
-void daObjGraRock_c::Create() {
- // NONMATCHING
+int daObjGraRock_c::Create() {
+ setBaseMtx();
+ fopAcM_SetMtx(this, mModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -328.444f, -150.0f,
+ -384.168f, 322.307f,
+ 1055.554931640625f, 401.247f);
+ mAcchCir.SetWall(0.0f, 0.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
+ &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
+ mStts.Init(0xff, 0, this);
+ mCyl.Set(mCcDCyl);
+ mCyl.SetStts(&mStts);
+ fopAcM_getCullSizeBoxMin(this);
+ const Vec* cullMax = fopAcM_getCullSizeBoxMax(this);
+ f32 fVar1;
+ if (cullMax->x > cullMax->z) {
+ fVar1 = cullMax->x;
+ } else {
+ fVar1 = cullMax->z;
+ }
+ mCyl.SetC(current.pos);
+ mCyl.SetH(cullMax->y);
+ mCyl.SetR(fVar1);
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mAcch.m_gnd;
+ setEnvTevColor();
+ setRoomNo();
+ for (int i = 0; i < 2; i++) {
+ mParticleIds[i] = 0xffffffff;
+ }
+ field_0x9b0 = 0;
+ field_0x9b6 = 0;
+ field_0x9bc = 0;
+ field_0x9bd = 0;
+ field_0x9be = cLib_getRndValue(90, 90);
+ return 1;
}
-/* ############################################################################################## */
-/* 80C12440-80C12440 000084 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80C12440 = "M_VBom";
-SECTION_DEAD static char const* const stringBase_80C12447 = "grA_base";
-SECTION_DEAD static char const* const stringBase_80C12450 = "grA_mdl";
-SECTION_DEAD static char const* const stringBase_80C12458 = "grA_Rock";
-SECTION_DEAD static char const* const stringBase_80C12461 = "grA_RockD";
-SECTION_DEAD static char const* const stringBase_80C1246B = "M_VBom_Zora.bmd";
-SECTION_DEAD static char const* const stringBase_80C1247B = "M_VBom_Zora.btp";
-#pragma pop
-
/* 80C1249C-80C124B0 -00001 0014+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName[5] = {
- (void*)&d_a_obj_gra_rock__stringBase0,
- (void*)(((char*)&d_a_obj_gra_rock__stringBase0) + 0x7),
- (void*)(((char*)&d_a_obj_gra_rock__stringBase0) + 0x10),
- (void*)(((char*)&d_a_obj_gra_rock__stringBase0) + 0x18),
- (void*)(((char*)&d_a_obj_gra_rock__stringBase0) + 0x21),
+static char* l_arcName[5] = {
+ "M_VBom",
+ "grA_base",
+ "grA_mdl",
+ "grA_Rock",
+ "grA_RockD",
};
/* 80C11B68-80C11C64 000AE8 00FC+00 1/0 0/0 0/0 .text CreateHeap__14daObjGraRock_cFv */
-void daObjGraRock_c::CreateHeap() {
- // NONMATCHING
+int daObjGraRock_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[0], "M_VBom_Zora.bmd");
+ JUT_ASSERT(488, modelData != 0);
+ mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11020084);
+ if (mModel == NULL) {
+ return 0;
+ }
+ J3DAnmTexPattern* btp_p =
+ (J3DAnmTexPattern*)dComIfG_getObjectRes(l_arcName[0], "M_VBom_Zora.btp");
+ JUT_ASSERT(501, btp_p != 0);
+ if (mBtp.init(modelData, btp_p, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ mBtp.setPlaySpeed(1.0f);
+ return 1;
}
-/* ############################################################################################## */
-/* 80C12440-80C12440 000084 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80C1248B = "M_VBom_Zora.dzb";
-#pragma pop
-
-/* 80C124B0-80C124D0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjGraRock_Method */
-static actor_method_class l_daObjGraRock_Method = {
- (process_method_func)daObjGraRock_create__FP10fopAc_ac_c,
- (process_method_func)daObjGraRock_Delete__FP14daObjGraRock_c,
- (process_method_func)daObjGraRock_Execute__FP14daObjGraRock_c,
- (process_method_func)daObjGraRock_IsDelete__FP14daObjGraRock_c,
- (process_method_func)daObjGraRock_Draw__FP14daObjGraRock_c,
-};
-
-/* 80C124D0-80C12500 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GraRock */
-extern actor_process_profile_definition g_profile_Obj_GraRock = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_GraRock, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjGraRock_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 609, // mPriority
- &l_daObjGraRock_Method, // sub_method
- 0x00044100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80C12500-80C1250C 000064 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,
-};
-
-/* 80C1250C-80C12518 000070 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,
-};
-
-/* 80C12518-80C1253C 00007C 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_80C123AC,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80C123A4,
-};
-
-/* 80C1253C-80C12548 0000A0 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80C12548-80C12570 0000AC 0028+00 1/1 0/0 0/0 .data __vt__14daObjGraRock_c */
-SECTION_DATA extern void* __vt__14daObjGraRock_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__14daObjGraRock_cFv,
- (void*)Create__14daObjGraRock_cFv,
- (void*)Execute__14daObjGraRock_cFPPA3_A4_f,
- (void*)Draw__14daObjGraRock_cFv,
- (void*)Delete__14daObjGraRock_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
/* 80C11C64-80C11EA8 000BE4 0244+00 1/1 0/0 0/0 .text create__14daObjGraRock_cFv */
-void daObjGraRock_c::create() {
- // NONMATCHING
-}
-
-/* 80C11EA8-80C11EF0 000E28 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 80C11EF0-80C11F38 000E70 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80C11F38-80C11FA8 000EB8 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 80C11FA8-80C11FF0 000F28 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+int daObjGraRock_c::create() {
+ fopAcM_SetupActor(this, daObjGraRock_c);
+ field_0x9c8 = fopAcM_GetParam(this);
+ int i;
+ int completedNum;
+ int rv;
+ completedNum = 0;
+ for (i = 0; i < 5; i++) {
+ rv = dComIfG_resLoad(&mPhases[i], l_arcName[i]);
+ if (rv == cPhs_ERROR_e || rv == cPhs_UNK3_e) {
+ return cPhs_ERROR_e;
+ }
+ if (rv == cPhs_COMPLEATE_e) {
+ completedNum++;
+ }
+ }
+ if (i == completedNum) {
+ int dzb_id = dComIfG_getObjctResName2Index(l_arcName[0], "M_VBom_Zora.dzb");
+ JUT_ASSERT(550, dzb_id != -1);
+ rv = MoveBGCreate(l_arcName[0], dzb_id,
+ dBgS_MoveBGProc_TypicalRotY, 0x2d50, NULL);
+ if (daNpcF_chkEvtBit(0x150)) {
+ rv = cPhs_ERROR_e;
+ }
+ if (rv == cPhs_ERROR_e) {
+ return rv;
+ }
+ }
+ return rv;
}
/* 80C11FF0-80C120FC 000F70 010C+00 1/0 0/0 0/0 .text Execute__14daObjGraRock_cFPPA3_A4_f
*/
-void daObjGraRock_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daObjGraRock_c::Execute(Mtx** pMtx) {
+ mBtp.play();
+ if (field_0x9bd != 0) {
+ if (mBtp.isLoop()) {
+ if (cLib_calcTimer(&field_0x9bd) == 0) {
+ mBtp.setPlaySpeed(0.0f);
+ field_0x9be = cLib_getRndValue(90, 90);
+ }
+ } else {
+ mBtp.setPlaySpeed(1.0f);
+ }
+ } else {
+ if (cLib_calcTimer(&field_0x9be) == 0) {
+ mBtp.setPlaySpeed(1.0);
+ if (mBtp.isLoop()) {
+ field_0x9be = cLib_getRndValue(90, 90);
+ mBtp.setPlaySpeed(0.0f);
+ }
+ } else {
+ mBtp.setPlaySpeed(0.0f);
+ }
+ }
+ col_set();
+ *pMtx = &mBgMtx;
+ setAttnPos();
+ setBaseMtx();
+ return 1;
}
/* 80C120FC-80C121C4 00107C 00C8+00 1/0 0/0 0/0 .text Draw__14daObjGraRock_cFv */
-void daObjGraRock_c::Draw() {
- // NONMATCHING
+int daObjGraRock_c::Draw() {
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);
+ dComIfGd_setListBG();
+ mBtp.entry(mModel->getModelData());
+ mDoExt_modelUpdateDL(mModel);
+ dComIfGd_setList();
+ return 1;
}
/* 80C121C4-80C1225C 001144 0098+00 1/0 0/0 0/0 .text Delete__14daObjGraRock_cFv */
-void daObjGraRock_c::Delete() {
- // NONMATCHING
+int daObjGraRock_c::Delete() {
+ for (int i = 0; i < 5; i = i + 1) {
+ dComIfG_resDelete(&mPhases[i], l_arcName[i]);
+ }
+ if (mpBgW != NULL && mpBgW->ChkUsed()) {
+ if (dComIfG_Bgsp().Release(mpBgW) != 0) {
+ OS_REPORT("Release Error\n");
+ }
+ }
+ return 1;
}
/* 80C1225C-80C12288 0011DC 002C+00 1/0 0/0 0/0 .text daObjGraRock_Draw__FP14daObjGraRock_c */
-static void daObjGraRock_Draw(daObjGraRock_c* param_0) {
- // NONMATCHING
+static int daObjGraRock_Draw(daObjGraRock_c* i_this) {
+ return i_this->Draw();
}
/* 80C12288-80C122A8 001208 0020+00 1/0 0/0 0/0 .text daObjGraRock_Execute__FP14daObjGraRock_c */
-static void daObjGraRock_Execute(daObjGraRock_c* param_0) {
- // NONMATCHING
+static int daObjGraRock_Execute(daObjGraRock_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80C122A8-80C122B0 001228 0008+00 1/0 0/0 0/0 .text daObjGraRock_IsDelete__FP14daObjGraRock_c */
-static bool daObjGraRock_IsDelete(daObjGraRock_c* param_0) {
- return true;
+static int daObjGraRock_IsDelete(daObjGraRock_c* i_this) {
+ return 1;
}
/* 80C122B0-80C122D0 001230 0020+00 1/0 0/0 0/0 .text daObjGraRock_Delete__FP14daObjGraRock_c */
-static void daObjGraRock_Delete(daObjGraRock_c* param_0) {
- // NONMATCHING
+static int daObjGraRock_Delete(daObjGraRock_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80C122D0-80C122F0 001250 0020+00 1/0 0/0 0/0 .text daObjGraRock_create__FP10fopAc_ac_c
*/
-static void daObjGraRock_create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80C122F0-80C1230C 001270 001C+00 2/2 0/0 0/0 .text cLib_calcTimer<s>__FPs */
-extern "C" void func_80C122F0(void* _this, s16* param_0) {
- // NONMATCHING
+static int daObjGraRock_create(fopAc_ac_c* i_this) {
+ return static_cast<daObjGraRock_c*>(i_this)->create();
}
-/* 80C1230C-80C12328 00128C 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
-extern "C" void func_80C1230C(void* _this, u8* param_0) {
- // NONMATCHING
-}
-
-/* 80C12328-80C123A4 0012A8 007C+00 3/3 0/0 0/0 .text cLib_getRndValue<i>__Fii */
-extern "C" void func_80C12328(void* _this, int param_0, int param_1) {
- // NONMATCHING
-}
-
-/* 80C123A4-80C123AC 001324 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80C123A4() {
- // NONMATCHING
-}
+/* 80C124B0-80C124D0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjGraRock_Method */
+static actor_method_class l_daObjGraRock_Method = {
+ (process_method_func)daObjGraRock_create,
+ (process_method_func)daObjGraRock_Delete,
+ (process_method_func)daObjGraRock_Execute,
+ (process_method_func)daObjGraRock_IsDelete,
+ (process_method_func)daObjGraRock_Draw,
+};
-/* 80C123AC-80C123B4 00132C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80C123AC() {
- // NONMATCHING
-}
+/* 80C124D0-80C12500 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GraRock */
+extern actor_process_profile_definition g_profile_Obj_GraRock = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_GraRock, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjGraRock_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 609, // mPriority
+ &l_daObjGraRock_Method, // sub_method
+ 0x00044100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80C12440-80C12440 000084 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */