Compare commits

...

23 Commits

Author SHA1 Message Date
Tom e4a4511736
Merge 9b96da62ce into e0bbad1f3f 2025-07-31 21:21:06 +00:00
StuckInLimbo 9b96da62ce
cleanup and fix various inconsistancies or issues 2025-07-31 17:20:50 -04:00
StuckInLimbo 3ab5a61f4b
Merge branch 'd_a_obj_crvhahen' of github.com:stuckinlimbo/tp into d_a_obj_crvhahen 2025-07-31 02:45:38 -04:00
StuckInLimbo df94f67a89
d_a_obj_crvhahen OK 2025-07-31 02:45:25 -04:00
Tom 4a909fc29e
Merge branch 'zeldaret:main' into d_a_obj_crvhahen 2025-07-31 02:44:29 -04:00
StuckInLimbo b98fe11839
cleanup and remove SECTION_RODATA 2025-07-30 23:04:50 -04:00
StuckInLimbo 19d5b8a0de
cleanup fields, rodata. hahenset and hahen_hakai partials 2025-07-30 22:38:33 -04:00
StuckInLimbo ba0c31435b
rename & cleanup fields 2025-07-30 22:37:04 -04:00
StuckInLimbo 8621f79457
CheckCull and checkViewArea 100% 2025-07-30 19:11:35 -04:00
StuckInLimbo 95e5c06683
setBaseMtx matching 2025-07-30 18:02:55 -04:00
StuckInLimbo e99b56c2f0
crvhahen draw 85% 2025-07-30 17:50:35 -04:00
StuckInLimbo 0466671503
create 94% 2025-07-29 23:20:52 -04:00
StuckInLimbo 298f459f38
delete matching, .rodata 91 2025-07-29 23:02:06 -04:00
StuckInLimbo 9d09564a5e
Revert change that made useHeapInit non-matching 2025-07-29 21:58:27 -04:00
Tom 10d3ea079d
Merge branch 'zeldaret:main' into d_a_obj_crvhahen 2025-07-29 21:09:50 -04:00
StuckInLimbo 10b07005a3 crvhahen create 70 draw 57 2025-07-29 21:09:17 -04:00
StuckInLimbo 2d7495ec80 update createheap return type for matching 2025-07-29 21:07:49 -04:00
StuckInLimbo eecca47f0b crvhahen Wall_Check and Execute 100 2025-07-29 18:58:18 -04:00
StuckInLimbo 3fe1e59102 Update fields and return types 2025-07-29 18:57:05 -04:00
Tom 576559d0fa
Merge branch 'zeldaret:main' into d_a_obj_crvhahen 2025-07-23 19:20:53 -04:00
StuckInLimbo ff7c78f4f0 Wall_Check 85% 2025-07-13 21:37:41 -04:00
StuckInLimbo 7c5a94c40e useHeapInit 100% 2025-07-13 20:48:17 -04:00
StuckInLimbo 6e77b81af2 useHeapInit 73%, ctor and dtor 100%, Delete 94%, wallcheck 43%, create 42% 2025-07-13 18:34:09 -04:00
3 changed files with 249 additions and 318 deletions

View File

@ -1905,7 +1905,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_crope"),
ActorRel(NonMatching, "d_a_obj_crvfence"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_crvgate"),
ActorRel(NonMatching, "d_a_obj_crvhahen"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_crvhahen"),
ActorRel(NonMatching, "d_a_obj_crvlh_down"),
ActorRel(NonMatching, "d_a_obj_crvlh_up"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_crvsteel"),

View File

@ -1,33 +1,54 @@
#ifndef D_A_OBJ_CRVHAHEN_H
#define D_A_OBJ_CRVHAHEN_H
#include "d/d_com_inf_game.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_lib.h"
/**
* @ingroup actors-objects
* @class daObjCRVHAHEN_c
* @brief Caravan Wood
* @brief Bulblin Camp Caraven Wooden Fence Fragments
*
* @details
* @details Hahen () a fragment, shard, or splinter.
* physics-enabled shards or fragments that simulate debris from destruction.
*
*/
class daObjCRVHAHEN_c : public fopAc_ac_c {
public:
/* 80BD342C */ void HahenSet(cXyz, cXyz, cXyz, cXyz, f32);
/* 80BD3628 */ void Wall_Check(cXyz, cXyz);
/* 80BD342C */ int HahenSet(cXyz, cXyz, cXyz, cXyz, f32);
/* 80BD3628 */ bool Wall_Check(cXyz, cXyz);
/* 80BD3720 */ void Hahen_Hakai(int, int);
/* 80BD38DC */ void CheckCull();
/* 80BD3A9C */ void checkViewArea(cXyz*);
/* 80BD3B20 */ void Execute();
/* 80BD3B74 */ void Delete();
/* 80BD3A9C */ bool checkViewArea(cXyz*);
/* 80BD3B20 */ int Execute();
/* 80BD3B74 */ int Delete();
/* 80BD3C0C */ void setBaseMtx();
/* 80BD3DBC */ void create();
/* 80BD3DBC */ int create();
private:
/* 0x568 */ u8 field_0x568[0x794 - 0x568];
/* 80BD3338 */ int CreateHeap();
/* 80BD3CA0 */ int Draw();
/* 0x568 */ cXyz mPos[10];
/* 0x5e0 */ cXyz mVelocity[10];
/* 0x658 */ cXyz mInitialPos[10];
/* 0x6d0 */ csXyz mRotation[10];
/* 0x70c */ csXyz mRotSpeed[10];
/* 0x748 */ u32 mFlags;
/* 0x74c */ f32 mGroundHeight;
/* 0x750 */ bool mDrawHahen;
/* 0x751 */ u8 mStatus[10];
/* 0x75b */ u8 field_0x75b;
/* 0x75c */ f32 mTimer;
/* 0x760 */ J3DModel* mpModel[10];
/* 0x788 */ request_of_phase_process_class mPhase;
/* 0x790 */ u8 mEffectState;
/* 0x791 */ bool mInitialized;
/* 0x792 */ u8 mCounter;
/* 0x793 */ u8 mDrawState;
};
STATIC_ASSERT(sizeof(daObjCRVHAHEN_c) == 0x794);
#endif /* D_A_OBJ_CRVHAHEN_H */

View File

@ -1,369 +1,279 @@
/**
* @file d_a_obj_crvhahen.cpp
*
*/
*
*/
#include "d/actor/d_a_obj_crvhahen.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" static void daObjCRVHAHEN_Create__FP10fopAc_ac_c();
extern "C" static void daObjCRVHAHEN_Delete__FP15daObjCRVHAHEN_c();
extern "C" void HahenSet__15daObjCRVHAHEN_cF4cXyz4cXyz4cXyz4cXyzf();
extern "C" void Wall_Check__15daObjCRVHAHEN_cF4cXyz4cXyz();
extern "C" void __dt__4cXyzFv();
extern "C" void Hahen_Hakai__15daObjCRVHAHEN_cFii();
extern "C" void CheckCull__15daObjCRVHAHEN_cFv();
extern "C" void checkViewArea__15daObjCRVHAHEN_cFP4cXyz();
extern "C" void Execute__15daObjCRVHAHEN_cFv();
extern "C" void Delete__15daObjCRVHAHEN_cFv();
extern "C" void setBaseMtx__15daObjCRVHAHEN_cFv();
extern "C" static void daObjCRVHAHEN_Draw__FP15daObjCRVHAHEN_c();
extern "C" static void daObjCRVHAHEN_Execute__FP15daObjCRVHAHEN_c();
extern "C" void create__15daObjCRVHAHEN_cFv();
extern "C" void __dt__5csXyzFv();
extern "C" void __ct__5csXyzFv();
extern "C" void __ct__4cXyzFv();
extern "C" static bool daObjCRVHAHEN_IsDelete__FP15daObjCRVHAHEN_c();
extern "C" extern char const* const d_a_obj_crvhahen__stringBase0;
//
// External References:
//
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void mDoLib_project__FP3VecP3Vec();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
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 getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
extern "C" void __ct__11dBgS_LinChkFv();
extern "C" void __dt__11dBgS_LinChkFv();
extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void cM_rndF__Ff();
extern "C" void cM_rndFX__Ff();
extern "C" void __dl__FPv();
extern "C" void __construct_array();
extern "C" void _savegpr_21();
extern "C" void _savegpr_24();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_21();
extern "C" void _restgpr_24();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
//
// Declarations:
//
/* ############################################################################################## */
/* 80BD4048-80BD4048 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80BD4048 = "CrvFence";
SECTION_DEAD static char const* const stringBase_80BD4051 = "CaravanPiece.bmd";
#pragma pop
/* 80BD4064-80BD4068 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_crvhahen__stringBase0;
static const char* l_arcName = "CrvFence";
inline int daObjCRVHAHEN_c::CreateHeap() {
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "CaravanPiece.bmd");
for (int i = 0; i < 10; i++) {
mpModel[i] = mDoExt_J3DModel__create(model_data, 0x20000, 0x11000084);
if (mpModel[i] == NULL) {
return 0;
}
}
return 1;
}
/* 80BD3338-80BD33E8 000078 00B0+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static void useHeapInit(fopAc_ac_c* param_0) {
// NONMATCHING
static int useHeapInit(fopAc_ac_c* i_this) {
return ((daObjCRVHAHEN_c*)i_this)->CreateHeap();
}
/* 80BD33E8-80BD3408 000128 0020+00 1/0 0/0 0/0 .text daObjCRVHAHEN_Create__FP10fopAc_ac_c */
static void daObjCRVHAHEN_Create(fopAc_ac_c* param_0) {
// NONMATCHING
static int daObjCRVHAHEN_Create(fopAc_ac_c* i_this) {
static_cast<daObjCRVHAHEN_c*>(i_this)->create();
}
/* 80BD3408-80BD342C 000148 0024+00 1/0 0/0 0/0 .text daObjCRVHAHEN_Delete__FP15daObjCRVHAHEN_c */
static void daObjCRVHAHEN_Delete(daObjCRVHAHEN_c* param_0) {
// NONMATCHING
static int daObjCRVHAHEN_Delete(daObjCRVHAHEN_c* i_this) {
i_this->Delete();
return 1;
}
/* ############################################################################################## */
/* 80BD3FF0-80BD3FF4 000000 0004+00 5/5 0/0 0/0 .rodata @3703 */
SECTION_RODATA static f32 const lit_3703 = 0.5f;
COMPILER_STRIP_GATE(0x80BD3FF0, &lit_3703);
/* 80BD3FF4-80BD3FF8 000004 0004+00 0/1 0/0 0/0 .rodata @3704 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3704 = 1.0f;
COMPILER_STRIP_GATE(0x80BD3FF4, &lit_3704);
#pragma pop
/* 80BD3FF8-80BD3FFC 000008 0004+00 0/1 0/0 0/0 .rodata @3705 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3705 = 5000.0f;
COMPILER_STRIP_GATE(0x80BD3FF8, &lit_3705);
#pragma pop
/* 80BD3FFC-80BD4000 00000C 0004+00 0/1 0/0 0/0 .rodata @3706 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3706 = 65536.0f;
COMPILER_STRIP_GATE(0x80BD3FFC, &lit_3706);
#pragma pop
/* 80BD342C-80BD3628 00016C 01FC+00 0/0 0/0 2/2 .text
* HahenSet__15daObjCRVHAHEN_cF4cXyz4cXyz4cXyz4cXyzf */
void daObjCRVHAHEN_c::HahenSet(cXyz param_0, cXyz param_1, cXyz param_2, cXyz param_3,
f32 param_4) {
// NONMATCHING
int daObjCRVHAHEN_c::HahenSet(cXyz i_param_1, cXyz i_param_2, cXyz i_param_3, cXyz i_param_4,
f32 duration) {
mDrawHahen = true;
mTimer = duration;
for (int i = 0; i < 10; i++) {
mPos[i].set(i_param_2.x + cM_rndFX(i_param_1.x), i_param_2.y + cM_rndF(i_param_1.y),
i_param_2.z + cM_rndFX(i_param_1.z));
mInitialPos[i].set(cM_rndF(1.0f) + 0.5f, cM_rndF(1.0f) + 0.5f, cM_rndF(1.0f) + 0.5f);
mVelocity[i].set(i_param_4.x + cM_rndFX(i_param_3.x), i_param_4.y + cM_rndF(i_param_3.y),
i_param_4.z + cM_rndF(i_param_3.z));
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::multVec(&mPos[i], &mPos[i]);
mDoMtx_stack_c::ZXYrotS(shape_angle);
mDoMtx_stack_c::multVec(&mVelocity[i], &mVelocity[i]);
mRotSpeed[i].x = cM_rndFX(5000.0f);
mRotSpeed[i].y = cM_rndFX(5000.0f);
mRotation[i].x = cM_rndFX(65536.0f);
mRotation[i].y = cM_rndFX(65536.0f);
}
return 1;
}
/* 80BD3628-80BD36E4 000368 00BC+00 1/1 0/0 0/0 .text Wall_Check__15daObjCRVHAHEN_cF4cXyz4cXyz */
void daObjCRVHAHEN_c::Wall_Check(cXyz param_0, cXyz param_1) {
// NONMATCHING
bool daObjCRVHAHEN_c::Wall_Check(cXyz i_origin, cXyz i_target) {
dBgS_LinChk line_check;
cXyz linePos(i_origin.x + i_target.x, i_origin.y, i_origin.z + i_target.z);
line_check.Set(&i_origin, &linePos, NULL);
bool did_line_cross = dComIfG_Bgsp().LineCross(&line_check);
if (did_line_cross == true) {
return true;
} else {
return false;
}
return did_line_cross;
}
/* 80BD36E4-80BD3720 000424 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
// cXyz::~cXyz() {
extern "C" void __dt__4cXyzFv() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BD4000-80BD4004 000010 0004+00 0/2 0/0 0/0 .rodata @3773 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3773 = -9.0f;
COMPILER_STRIP_GATE(0x80BD4000, &lit_3773);
#pragma pop
/* 80BD4004-80BD4008 000014 0004+00 0/1 0/0 0/0 .rodata @3774 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3774 = 13.0f;
COMPILER_STRIP_GATE(0x80BD4004, &lit_3774);
#pragma pop
/* 80BD4008-80BD400C 000018 0004+00 0/1 0/0 0/0 .rodata @3775 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3775 = -3.0f / 5.0f;
COMPILER_STRIP_GATE(0x80BD4008, &lit_3775);
#pragma pop
/* 80BD400C-80BD4010 00001C 0004+00 0/1 0/0 0/0 .rodata @3776 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3776 = 4.0f / 5.0f;
COMPILER_STRIP_GATE(0x80BD400C, &lit_3776);
#pragma pop
/* 80BD3720-80BD38DC 000460 01BC+00 1/1 0/0 0/0 .text Hahen_Hakai__15daObjCRVHAHEN_cFii
*/
void daObjCRVHAHEN_c::Hahen_Hakai(int param_0, int param_1) {
// NONMATCHING
void daObjCRVHAHEN_c::Hahen_Hakai(int i_start, int i_end) {
for (int i = i_start; i < i_end; ++i) {
if (mStatus[i] > 3) {
mPos[i].y = mGroundHeight;
mRotation[i].x = 0x4000;
} else {
mVelocity[i].y += +-9.0f;
Wall_Check(mPos[i], mVelocity[i]);
// mPos[i].x = mPos[i].x + mVelocity[i].x;
// mPos[i].y = mPos[i].y + mVelocity[i].y;
// mPos[i].z = mPos[i].z + mVelocity[i].z;
mPos[i].x += mVelocity[i].x;
mPos[i].y += mVelocity[i].y;
mPos[i].z += mVelocity[i].z;
mRotation[i].x += mRotSpeed[i].x;
mRotation[i].y += mRotSpeed[i].y;
mRotation[i].z += mRotSpeed[i].z;
if ((mGroundHeight + 13.0f) >= mPos[i].y) {
++mStatus[i];
mPos[i].y = mGroundHeight + 13.0f;
mVelocity[i].y = mVelocity[i].y * -0.6f;
mVelocity[i].x = mVelocity[i].x * 0.8f;
mVelocity[i].z = mVelocity[i].z * 0.8f;
// mVelocity[i].y *= -0.6f;
// mVelocity[i].x *= 0.8f;
// mVelocity[i].z *= 0.8f;
mRotation[i].x = 0x4000;
mRotation[i].y = mRotation[i].y + mRotSpeed[i].y;
}
}
}
}
/* ############################################################################################## */
/* 80BD4010-80BD4018 000020 0004+04 0/2 0/0 0/0 .rodata @3836 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3836[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80BD4010, &lit_3836);
#pragma pop
/* 80BD4018-80BD4020 000028 0008+00 0/1 0/0 0/0 .rodata @3837 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3837[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80BD4018, &lit_3837);
#pragma pop
/* 80BD4020-80BD4028 000030 0008+00 0/1 0/0 0/0 .rodata @3838 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3838[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80BD4020, &lit_3838);
#pragma pop
/* 80BD4028-80BD4030 000038 0008+00 0/1 0/0 0/0 .rodata @3839 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3839[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80BD4028, &lit_3839);
#pragma pop
/* 80BD38DC-80BD3A9C 00061C 01C0+00 1/1 0/0 0/0 .text CheckCull__15daObjCRVHAHEN_cFv */
void daObjCRVHAHEN_c::CheckCull() {
// NONMATCHING
daPy_py_c* player_actor = daPy_getPlayerActorClass();
cXyz& player_pos = fopAcM_GetPosition((fopAc_ac_c*)player_actor);
int culled_num = 1;
for (int i = 0; i < 10; i++) {
if ((mPos[i].absXZ(player_pos) > mTimer) && !checkViewArea(&mPos[i])) {
culled_num++;
if (culled_num == 10) {
fopAcM_delete(this);
}
}
}
}
/* ############################################################################################## */
/* 80BD4030-80BD4034 000040 0004+00 0/1 0/0 0/0 .rodata @3852 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3852 = 608.0f;
COMPILER_STRIP_GATE(0x80BD4030, &lit_3852);
#pragma pop
/* 80BD4034-80BD4038 000044 0004+00 0/1 0/0 0/0 .rodata @3853 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3853 = 448.0f;
COMPILER_STRIP_GATE(0x80BD4034, &lit_3853);
#pragma pop
/* 80BD3A9C-80BD3B20 0007DC 0084+00 1/1 0/0 0/0 .text checkViewArea__15daObjCRVHAHEN_cFP4cXyz */
void daObjCRVHAHEN_c::checkViewArea(cXyz* param_0) {
// NONMATCHING
bool daObjCRVHAHEN_c::checkViewArea(cXyz* i_this) {
Vec proj;
mDoLib_project(i_this, &proj);
bool ret = false;
if (proj.x >= 0.0f && proj.x <= 608.0f && proj.y >= 0.0f && proj.y <= 448.0f) {
ret = true;
}
return ret;
}
/* 80BD3B20-80BD3B74 000860 0054+00 1/1 0/0 0/0 .text Execute__15daObjCRVHAHEN_cFv */
void daObjCRVHAHEN_c::Execute() {
// NONMATCHING
int daObjCRVHAHEN_c::Execute() {
if (mDrawHahen) {
daObjCRVHAHEN_c::Hahen_Hakai(0, 10);
}
daObjCRVHAHEN_c::setBaseMtx();
daObjCRVHAHEN_c::CheckCull();
return 1;
}
/* 80BD3B74-80BD3C0C 0008B4 0098+00 1/1 0/0 0/0 .text Delete__15daObjCRVHAHEN_cFv */
void daObjCRVHAHEN_c::Delete() {
// NONMATCHING
int daObjCRVHAHEN_c::Delete() {
if (mInitialized) {
J3DModelData* model_data = (J3DModelData*)dRes_control_c::getRes(
l_arcName, "CaravanPiece.bmd", g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x80);
dComIfGp_removeSimpleModel(model_data, (int)(char)current.roomNo);
}
dComIfG_resDelete(&mPhase, l_arcName);
return 1;
}
/* 80BD3C0C-80BD3CA0 00094C 0094+00 1/1 0/0 0/0 .text setBaseMtx__15daObjCRVHAHEN_cFv */
void daObjCRVHAHEN_c::setBaseMtx() {
// NONMATCHING
for (int i = 0; i < 10; i++) {
mDoMtx_stack_c::transS(mPos[i]);
mDoMtx_stack_c::ZXYrotM(mRotation[i]);
mDoMtx_stack_c::scaleM(mInitialPos[i]);
mpModel[i]->setBaseTRMtx(mDoMtx_stack_c::get());
}
}
inline int daObjCRVHAHEN_c::Draw() {
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
for (int i = 0, j = i; i < 10; i = i + 1) {
g_env_light.setLightTevColorType_MAJI(mpModel[i], &tevStr);
}
dComIfGd_setListBG();
if (mDrawHahen) {
for (int i = 0; i < 10; i = i + 1) {
s8 roomno = fopAcM_GetRoomNo(this);
dComIfGp_entrySimpleModel(mpModel[i], roomno);
}
}
dComIfGd_setList();
return 1;
}
/* 80BD3CA0-80BD3D9C 0009E0 00FC+00 1/0 0/0 0/0 .text daObjCRVHAHEN_Draw__FP15daObjCRVHAHEN_c */
static void daObjCRVHAHEN_Draw(daObjCRVHAHEN_c* param_0) {
// NONMATCHING
static int daObjCRVHAHEN_Draw(daObjCRVHAHEN_c* i_this) {
return i_this->Draw();
}
/* 80BD3D9C-80BD3DBC 000ADC 0020+00 2/1 0/0 0/0 .text daObjCRVHAHEN_Execute__FP15daObjCRVHAHEN_c
*/
static void daObjCRVHAHEN_Execute(daObjCRVHAHEN_c* param_0) {
// NONMATCHING
/* 80BD3D9C-80BD3DBC 000ADC 0020+00 2/1 0/0 0/0 .text daObjCRVHAHEN_Execute__FP15daObjCRVHAHEN_c */
static int daObjCRVHAHEN_Execute(daObjCRVHAHEN_c* i_this) {
i_this->Execute();
}
/* ############################################################################################## */
/* 80BD4038-80BD403C 000048 0004+00 0/1 0/0 0/0 .rodata @3993 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3993 = -1000.0f;
COMPILER_STRIP_GATE(0x80BD4038, &lit_3993);
#pragma pop
/* 80BD403C-80BD4040 00004C 0004+00 0/1 0/0 0/0 .rodata @3994 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3994 = -500.0f;
COMPILER_STRIP_GATE(0x80BD403C, &lit_3994);
#pragma pop
/* 80BD4040-80BD4044 000050 0004+00 0/1 0/0 0/0 .rodata @3995 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3995 = 1000.0f;
COMPILER_STRIP_GATE(0x80BD4040, &lit_3995);
#pragma pop
/* 80BD4044-80BD4048 000054 0004+00 0/1 0/0 0/0 .rodata @3996 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3996 = 500.0f;
COMPILER_STRIP_GATE(0x80BD4044, &lit_3996);
#pragma pop
/* 80BD3DBC-80BD3F9C 000AFC 01E0+00 1/1 0/0 0/0 .text create__15daObjCRVHAHEN_cFv */
void daObjCRVHAHEN_c::create() {
// NONMATCHING
int daObjCRVHAHEN_c::create() {
fopAcM_SetupActor(this, daObjCRVHAHEN_c);
int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x1320)) {
return cPhs_ERROR_e;
}
mDrawHahen = 0;
gravity = -9.0f;
J3DModelData* model_data = (J3DModelData*)dRes_control_c::getRes(
l_arcName, "CaravanPiece.bmd", g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x80);
dComIfGp_addSimpleModel(model_data, (int)(char)current.roomNo, '\0');
mInitialized = true;
mGroundHeight = current.pos.y;
fopAcM_setCullSizeBox(this, -1000.0, -500.0, -1000.0, 1000.0, 500.0, 1000.0);
daObjCRVHAHEN_Execute(this);
}
return phase_state;
}
/* 80BD3F9C-80BD3FD8 000CDC 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */
// csXyz::~csXyz() {
extern "C" void __dt__5csXyzFv() {
// NONMATCHING
}
/* 80BD3FD8-80BD3FDC 000D18 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */
// csXyz::csXyz() {
extern "C" void __ct__5csXyzFv() {
/* empty function */
}
/* 80BD3FDC-80BD3FE0 000D1C 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
// cXyz::cXyz() {
extern "C" void __ct__4cXyzFv() {
/* empty function */
}
/* 80BD3FE0-80BD3FE8 000D20 0008+00 1/0 0/0 0/0 .text daObjCRVHAHEN_IsDelete__FP15daObjCRVHAHEN_c
*/
static bool daObjCRVHAHEN_IsDelete(daObjCRVHAHEN_c* param_0) {
/* 80BD3FE0-80BD3FE8 000D20 0008+00 1/0 0/0 0/0 .text daObjCRVHAHEN_IsDelete__FP15daObjCRVHAHEN_c */
static int daObjCRVHAHEN_IsDelete(daObjCRVHAHEN_c* i_this) {
return true;
}
/* ############################################################################################## */
/* 80BD4068-80BD4088 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCRVHAHEN_Method */
static actor_method_class l_daObjCRVHAHEN_Method = {
(process_method_func)daObjCRVHAHEN_Create__FP10fopAc_ac_c,
(process_method_func)daObjCRVHAHEN_Delete__FP15daObjCRVHAHEN_c,
(process_method_func)daObjCRVHAHEN_Execute__FP15daObjCRVHAHEN_c,
(process_method_func)daObjCRVHAHEN_IsDelete__FP15daObjCRVHAHEN_c,
(process_method_func)daObjCRVHAHEN_Draw__FP15daObjCRVHAHEN_c,
(process_method_func)daObjCRVHAHEN_Create, (process_method_func)daObjCRVHAHEN_Delete,
(process_method_func)daObjCRVHAHEN_Execute, (process_method_func)daObjCRVHAHEN_IsDelete,
(process_method_func)daObjCRVHAHEN_Draw,
};
/* 80BD4088-80BD40B8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_CRVHAHEN */
extern actor_process_profile_definition g_profile_Obj_CRVHAHEN = {
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_CRVHAHEN, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daObjCRVHAHEN_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
468, // mPriority
&l_daObjCRVHAHEN_Method, // sub_method
0x00040000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_CRVHAHEN, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daObjCRVHAHEN_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
468, // mPriority
&l_daObjCRVHAHEN_Method, // sub_method
0x00040000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80BD4048-80BD4048 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */