mirror of
https://github.com/zeldaret/tww.git
synced 2026-10-09 13:36:50 -04:00
d_a_obj_YLzou matching (#1118)
* Most simple functions match or almost matching * Run format * set_start_type except some regswap * Fix set_start_type regswap * create_heap match except instruction locations * eff_set_slip_smoke_pos matching except for some offsets * Remove unnecessary * Capitalize some hex * eff_smoke_slip_start matching except some offsets * Remove debug map comment * name emitter * vib_proc matching except some offsets * demo_regist_wait_act_proc match * demo_vib_start_wait_act_proc 100% * Remove useless return * demo_vib_act_proc matching except instruction offsets * format * move_ylzou_demo_move_act_proc matching except for instruction locations * Clean up unnecessary returns * demo_end_wait_act_proc except instruction offset for instruction offsets * format * demo_regist_wait_act_init_proc matched * demo_end_wait_act_init_proc matching except instruction offsets * go_up_stairs_demo_move_start_wait_act_init_proc matching except instruction offsets * go_up_stairs_demo_move_act_proc matching except instruction offsets * formatting * _execute matching * _create matched * _delete matching * rename variable to match objdiff * 100% match * Cleanup * Add matching for since it doesn't match for demo * Match d_a_obj_YLzou * Demo matching * Demo matched * Update d_a_obj_YLzou.cpp * Format and type triforce_complete as BOOL --------- Co-authored-by: WilliamArnett <arnettwilliam7@gmail.com>
This commit is contained in:
+1
-1
@@ -1726,7 +1726,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_obj_Itnak"),
|
||||
ActorRel(NonMatching, "d_a_obj_Vds"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_Vteng"),
|
||||
ActorRel(NonMatching, "d_a_obj_YLzou"),
|
||||
ActorRel(Matching, "d_a_obj_YLzou"),
|
||||
ActorRel(Matching, "d_a_obj_Yboil"),
|
||||
ActorRel(Matching, "d_a_obj_adnno"),
|
||||
ActorRel(Matching, "d_a_obj_ajav"),
|
||||
|
||||
@@ -2,16 +2,24 @@
|
||||
#define D_A_OBJ_YLZOU_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/actor/d_a_obj_movebox.h"
|
||||
|
||||
class daObjYLzou_c : public fopAc_ac_c {
|
||||
public:
|
||||
void param_get_swSave() const {}
|
||||
enum Param_e {
|
||||
PARAM_SWSAVE_W = 8,
|
||||
PARAM_SWSAVE_S = 0,
|
||||
};
|
||||
|
||||
typedef void (daObjYLzou_c::*ProcFunc)();
|
||||
|
||||
s32 param_get_swSave() const { return daObj::PrmAbstract(this, PARAM_SWSAVE_W, PARAM_SWSAVE_S); }
|
||||
|
||||
void set_start_type();
|
||||
void set_mtx();
|
||||
void init_mtx();
|
||||
void solidHeapCB(fopAc_ac_c*);
|
||||
void create_heap();
|
||||
static BOOL solidHeapCB(fopAc_ac_c*);
|
||||
bool create_heap();
|
||||
void eff_set_slip_smoke_pos();
|
||||
void eff_smoke_slip_start();
|
||||
void eff_smoke_slip_end();
|
||||
@@ -43,7 +51,26 @@ public:
|
||||
bool _draw();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
/* 0x290 */ request_of_phase_process_class field_0x290;
|
||||
/* 0x298 */ J3DModel* field_0x298;
|
||||
/* 0x29C */ dBgW* field_0x29C;
|
||||
/* 0x2A0 */ Mtx field_0x2A0;
|
||||
/* 0x2D0 */ void (daObjYLzou_c::*field_0x2D0)();
|
||||
/* 0x2DC */ int field_0x2DC;
|
||||
/* 0x2E0 */ int field_0x2E0;
|
||||
/* 0x2E4 */ s16 field_0x2E4;
|
||||
/* 0x2E6 */ u8 field_0x2E6[0x2E8 - 0x2E6];
|
||||
/* 0x2E8 */ BOOL field_0x2E8;
|
||||
/* 0x2EC */ int field_0x2EC;
|
||||
/* 0x2F0 */ daObjMovebox::EffSmokeCB mSmokeCbs[2];
|
||||
/* 0x358 */ s16 field_0x358;
|
||||
/* 0x35A */ u8 field_0x35A[0x35C - 0x35A];
|
||||
/* 0x35C */ f32 field_0x35C;
|
||||
/* 0x360 */ u8 field_0x360;
|
||||
/* 0x361 */ u8 field_0x361;
|
||||
/* 0x362 */ u8 field_0x362[0x364 - 0x362];
|
||||
/* 0x364 */ int field_0x364;
|
||||
/* 0x368 */ int field_0x368;
|
||||
}; // Size: 0x36C
|
||||
|
||||
#endif /* D_A_OBJ_YLZOU_H */
|
||||
|
||||
+503
-37
@@ -5,175 +5,641 @@
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
#include "d/actor/d_a_obj_YLzou.h"
|
||||
#include "res/Object/YLzou.h"
|
||||
|
||||
typedef enum {
|
||||
ENUM_ONE_UNK_0000 = 0x0000,
|
||||
ENUM_ONE_UNK_0006 = 0x0006,
|
||||
ENUM_ONE_UNK_0007 = 0x0007,
|
||||
ENUM_ONE_UNK_000B = 0x000B,
|
||||
ENUM_ONE_UNK_000C = 0x000C,
|
||||
ENUM_ONE_UNK_000D = 0x000D
|
||||
} UNK_YLZOU_ENUM_ONE;
|
||||
|
||||
typedef enum { ENUM_TWO_UNK_0000 = 0x0000, ENUM_TWO_UNK_0001 = 0x0001, ENUM_TWO_UNK_0002 = 0x0002, ENUM_TWO_UNK_0003 = 0x0003 } UNK_YLZOU_ENUM_TWO;
|
||||
|
||||
namespace {
|
||||
static const char l_arcname[] = "YLzou";
|
||||
static const char l_move_ylzou_demo_name[] = "move_YLzou";
|
||||
static const char l_go_up_stairs_demo_name[] = "go_up_stairs";
|
||||
static const char l_go_up_stairs_demo2_name[] = "go_up_stairs2";
|
||||
static char* l_demo_name[4] = {NULL, (char*)l_move_ylzou_demo_name, (char*)l_go_up_stairs_demo_name, (char*)l_go_up_stairs_demo2_name};
|
||||
} // namespace
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
class daObjYLzou_HIO_c : public JORReflexible {
|
||||
public:
|
||||
daObjYLzou_HIO_c();
|
||||
virtual ~daObjYLzou_HIO_c() {};
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
public:
|
||||
s8 m4;
|
||||
f32 m8;
|
||||
f32 mC;
|
||||
f32 m10;
|
||||
f32 m14;
|
||||
f32 m18;
|
||||
f32 m1C;
|
||||
f32 m20;
|
||||
u8 m24;
|
||||
u8 m25;
|
||||
u8 m26;
|
||||
u8 m27;
|
||||
u8 m28;
|
||||
u8 m29;
|
||||
u8 m2A;
|
||||
};
|
||||
|
||||
daObjYLzou_HIO_c::daObjYLzou_HIO_c() {
|
||||
m4 = -1;
|
||||
m8 = 6.0f;
|
||||
mC = 0.1f;
|
||||
m10 = 2.0f;
|
||||
m14 = 16384.0f;
|
||||
m18 = 0.05f;
|
||||
m1C = 0.8f;
|
||||
m24 = 0;
|
||||
m25 = 0;
|
||||
m26 = 0;
|
||||
m27 = 0;
|
||||
m28 = 0;
|
||||
m29 = 0;
|
||||
m2A = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 000000EC-000002B8 .text set_start_type__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::set_start_type() {
|
||||
/* Nonmatching */
|
||||
UNK_YLZOU_ENUM_ONE unk_ylzou_enum_one;
|
||||
BOOL triforce_complete = FALSE;
|
||||
UNK_YLZOU_ENUM_TWO unk_ylzou_enum_two = ENUM_TWO_UNK_0000;
|
||||
bool event_bit_3820 = false;
|
||||
|
||||
if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D04)) {
|
||||
if (field_0x2E0 != 0xFF && fopAcM_isSwitch(this, field_0x2E0) == FALSE) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0000;
|
||||
unk_ylzou_enum_two = ENUM_TWO_UNK_0001;
|
||||
} else {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
|
||||
event_bit_3820 = true;
|
||||
}
|
||||
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3A04)) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
|
||||
event_bit_3820 = true;
|
||||
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3804)) {
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3820) == TRUE) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0007;
|
||||
unk_ylzou_enum_two = ENUM_TWO_UNK_0002;
|
||||
} else {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_000B;
|
||||
}
|
||||
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D02)) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
|
||||
event_bit_3820 = true;
|
||||
} else if (dComIfGs_getTriforceNum() < 8) {
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3820) == TRUE) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_0007;
|
||||
unk_ylzou_enum_two = ENUM_TWO_UNK_0002;
|
||||
} else {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_000B;
|
||||
}
|
||||
} else {
|
||||
triforce_complete = TRUE;
|
||||
if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2C01)) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_000C;
|
||||
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3980)) {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_000D;
|
||||
unk_ylzou_enum_two = ENUM_TWO_UNK_0003;
|
||||
} else {
|
||||
unk_ylzou_enum_one = ENUM_ONE_UNK_000C;
|
||||
}
|
||||
}
|
||||
|
||||
field_0x2DC = unk_ylzou_enum_one;
|
||||
field_0x2E8 = triforce_complete;
|
||||
field_0x2EC = unk_ylzou_enum_two;
|
||||
if (!event_bit_3820) {
|
||||
dComIfGs_offEventBit(dSv_event_flag_c::UNK_3820);
|
||||
} else {
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3820);
|
||||
}
|
||||
}
|
||||
|
||||
/* 000002B8-00000374 .text set_mtx__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0x35C * cM_ssin(field_0x358), current.pos.z);
|
||||
mDoMtx_stack_c::XYZrotM(shape_angle);
|
||||
field_0x298->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::scaleM(scale);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), field_0x2A0);
|
||||
}
|
||||
|
||||
/* 00000374-000003B0 .text init_mtx__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::init_mtx() {
|
||||
/* Nonmatching */
|
||||
field_0x298->setBaseScale(scale);
|
||||
set_mtx();
|
||||
}
|
||||
|
||||
/* 000003B0-000003D4 .text solidHeapCB__12daObjYLzou_cFP10fopAc_ac_c */
|
||||
void daObjYLzou_c::solidHeapCB(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daObjYLzou_c::solidHeapCB(fopAc_ac_c* i_this) {
|
||||
return ((daObjYLzou_c*)i_this)->create_heap();
|
||||
}
|
||||
|
||||
/* 000003D4-000004F4 .text create_heap__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::create_heap() {
|
||||
/* Nonmatching */
|
||||
bool daObjYLzou_c::create_heap() {
|
||||
J3DModelData* model_data;
|
||||
J3DModel* model;
|
||||
dBgW* bgw;
|
||||
bool res;
|
||||
|
||||
static s32 bdl_table[] = {dRes_INDEX_YLZOU_BDL_YLZOU_e, dRes_INDEX_YLZOU_BDL_YLZOU2_e};
|
||||
|
||||
static s32 dzb_table[] = {dRes_INDEX_YLZOU_DZB_YLZOU_e, dRes_INDEX_YLZOU_DZB_YLZOU2_e};
|
||||
|
||||
res = true;
|
||||
model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcname, bdl_table[field_0x2E8]);
|
||||
|
||||
if (model_data == NULL) {
|
||||
JUT_ASSERT(DEMO_SELECT(0x194, 0x198), FALSE);
|
||||
res = false;
|
||||
} else {
|
||||
model = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000022);
|
||||
field_0x298 = model;
|
||||
model = field_0x298;
|
||||
bgw = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(l_arcname, dzb_table[field_0x2E8]), cBgW::MOVE_BG_e, &model->getBaseTRMtx());
|
||||
field_0x29C = bgw;
|
||||
if (field_0x298 == NULL || field_0x29C == NULL) {
|
||||
res = false;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
static daObjYLzou_HIO_c l_HIO;
|
||||
#endif
|
||||
|
||||
/* 000004F4-00000668 .text eff_set_slip_smoke_pos__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::eff_set_slip_smoke_pos() {
|
||||
/* Nonmatching */
|
||||
static cXyz base_pos[(int)ARRAY_SIZE(mSmokeCbs)] = {cXyz(-240.0f, 0.0f, -240.0f), cXyz(240.0f, 0.0f, -240.0f)};
|
||||
f32 new_z = current.pos.z + -1200;
|
||||
f32 new_y = current.pos.y + -1550;
|
||||
|
||||
mDoMtx_stack_c::transS(current.pos.x, new_y, new_z);
|
||||
mDoMtx_stack_c::YrotM(current.angle.y);
|
||||
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
|
||||
mDoMtx_stack_c::push();
|
||||
mDoMtx_stack_c::transM(base_pos[i]);
|
||||
mDoMtx_stack_c::multVecZero(&mSmokeCbs[i].field_0x20);
|
||||
mSmokeCbs[i].field_0x2C.set(0, current.angle.y, 0);
|
||||
mDoMtx_stack_c::pop();
|
||||
}
|
||||
}
|
||||
|
||||
/* 000006A4-000007AC .text eff_smoke_slip_start__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::eff_smoke_slip_start() {
|
||||
/* Nonmatching */
|
||||
static cXyz scl(2.0f, 2.0f, 2.0f);
|
||||
|
||||
eff_set_slip_smoke_pos();
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
scl.set((s16)l_HIO.m10, (s16)l_HIO.m10, (s16)l_HIO.m10);
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_JT_ELEMENTSMOKE00,
|
||||
&mSmokeCbs[i].field_0x20,
|
||||
&mSmokeCbs[i].field_0x2C,
|
||||
&scl,
|
||||
0xB9,
|
||||
&mSmokeCbs[i],
|
||||
fopAcM_GetRoomNo(this),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
if (emitter != NULL) {
|
||||
emitter->setRate(2.0);
|
||||
emitter->setDirectionalSpeed(15.0);
|
||||
emitter->setSpread(0.15);
|
||||
emitter->setLifeTime(0x1e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 000007AC-0000080C .text eff_smoke_slip_end__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::eff_smoke_slip_end() {
|
||||
/* Nonmatching */
|
||||
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
|
||||
mSmokeCbs[i].remove();
|
||||
}
|
||||
}
|
||||
|
||||
/* 0000080C-0000086C .text eff_smoke_slip_remove__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::eff_smoke_slip_remove() {
|
||||
/* Nonmatching */
|
||||
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
|
||||
mSmokeCbs[i].remove();
|
||||
}
|
||||
}
|
||||
|
||||
/* 0000086C-000008D0 .text eff_smoke_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::eff_smoke_proc() {
|
||||
/* Nonmatching */
|
||||
if (field_0x360 != field_0x361) {
|
||||
if (field_0x361 == 1) {
|
||||
eff_smoke_slip_start();
|
||||
} else {
|
||||
eff_smoke_slip_end();
|
||||
}
|
||||
field_0x360 = field_0x361;
|
||||
} else {
|
||||
if (field_0x360 == 1) {
|
||||
eff_set_slip_smoke_pos();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 000008D0-000009A4 .text vib_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::vib_proc() {
|
||||
/* Nonmatching */
|
||||
if (field_0x364 != field_0x368) {
|
||||
field_0x364 = field_0x368;
|
||||
}
|
||||
|
||||
switch (field_0x364) {
|
||||
case 1:
|
||||
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
|
||||
field_0x35C += DEMO_SELECT(l_HIO.m18, 0.05f);
|
||||
if (field_0x35C > DEMO_SELECT(l_HIO.m1C, 0.8f)) {
|
||||
field_0x35C = DEMO_SELECT(l_HIO.m1C, 0.8f);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
|
||||
field_0x35C -= DEMO_SELECT(l_HIO.m18, 0.05f);
|
||||
if (field_0x35C < DEMO_SELECT(l_HIO.m20, 0.4f)) {
|
||||
field_0x35C = DEMO_SELECT(l_HIO.m20, 0.4f);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
|
||||
field_0x35C -= DEMO_SELECT(l_HIO.m18 * 2.0f, 0.1f);
|
||||
if (field_0x35C < 0.0f) {
|
||||
field_0x35C = 0.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 000009A4-00000AE0 .text _create__12daObjYLzou_cFv */
|
||||
cPhs_State daObjYLzou_c::_create() {
|
||||
/* Nonmatching */
|
||||
static u32 solidHeapSize_table[] = {0x5840, 0x49e0};
|
||||
|
||||
cPhs_State cphs_state;
|
||||
|
||||
fopAcM_ct(this, daObjYLzou_c);
|
||||
if (fopAcM_IsFirstCreating(this)) {
|
||||
field_0x2E0 = param_get_swSave();
|
||||
set_start_type();
|
||||
}
|
||||
cphs_state = dComIfG_resLoad(&field_0x290, l_arcname);
|
||||
if (cphs_state == cPhs_COMPLEATE_e) {
|
||||
if (fopAcM_entrySolidHeap(this, solidHeapCB, solidHeapSize_table[field_0x2E8])) {
|
||||
if (dComIfG_Bgsp()->Regist(field_0x29C, this)) {
|
||||
cphs_state = cPhs_ERROR_e;
|
||||
} else {
|
||||
fopAcM_SetMtx(this, field_0x298->getBaseTRMtx());
|
||||
setup_action(field_0x2DC);
|
||||
init_mtx();
|
||||
}
|
||||
} else {
|
||||
cphs_state = cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (l_HIO.m4 < 0) {
|
||||
l_HIO.m4 = mDoHIO_createChild("勇者像", &l_HIO); //Hero Statue
|
||||
}
|
||||
#endif
|
||||
return cphs_state;
|
||||
}
|
||||
|
||||
/* 00000AE0-00000B7C .text _delete__12daObjYLzou_cFv */
|
||||
bool daObjYLzou_c::_delete() {
|
||||
/* Nonmatching */
|
||||
dComIfG_resDelete(&field_0x290, l_arcname);
|
||||
eff_smoke_slip_remove();
|
||||
if (DEMO_SELECT(TRUE, heap != NULL) && field_0x29C != NULL) {
|
||||
if (field_0x29C->ChkUsed()) {
|
||||
dComIfG_Bgsp()->Release(field_0x29C);
|
||||
}
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
}
|
||||
if (l_HIO.m4 >= 0) {
|
||||
mDoHIO_deleteChild(l_HIO.m4);
|
||||
l_HIO.m4 = -1;
|
||||
}
|
||||
#else
|
||||
field_0x29C = NULL;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000B7C-00000BD8 .text move_ylzou_demo_start_wait_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_start_wait_act_proc() {
|
||||
/* Nonmatching */
|
||||
if (field_0x2E0 != 0xFF) {
|
||||
if (fopAcM_isSwitch(this, field_0x2E0) == TRUE) {
|
||||
setup_action(1);
|
||||
}
|
||||
}
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (l_HIO.m24 == 1) {
|
||||
setup_action(4);
|
||||
} else if (l_HIO.m26 == 1) {
|
||||
setup_action(1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* 00000BD8-00000C70 .text demo_regist_wait_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_regist_wait_act_proc() {
|
||||
/* Nonmatching */
|
||||
if (field_0x2E4 != -1) {
|
||||
if (eventInfo.checkCommandDemoAccrpt()) {
|
||||
setup_action(field_0x2DC + 1);
|
||||
return;
|
||||
}
|
||||
fopAcM_orderOtherEventId(this, field_0x2E4);
|
||||
return;
|
||||
}
|
||||
field_0x2E4 = dComIfGp_evmng_getEventIdx(l_demo_name[field_0x2EC]);
|
||||
}
|
||||
|
||||
/* 00000C70-00000D18 .text demo_vib_start_wait_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_vib_start_wait_act_proc() {
|
||||
/* Nonmatching */
|
||||
if (dComIfGp_evmng_existence(field_0x2E4)) {
|
||||
int staff_idx = dComIfGp_evmng_getMyStaffId("YLzou", NULL, 0);
|
||||
if (staff_idx != -1) {
|
||||
if (strcmp(dComIfGp_getPEvtManager()->getMyNowCutName(staff_idx), "Vibrate") == 0) {
|
||||
setup_action(field_0x2DC + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000D18-00000E08 .text demo_vib_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_vib_act_proc() {
|
||||
/* Nonmatching */
|
||||
|
||||
if (dComIfGp_evmng_existence(field_0x2E4)) {
|
||||
int staff_idx = dComIfGp_evmng_getMyStaffId("YLzou", NULL, 0);
|
||||
if (staff_idx != -1) {
|
||||
if (strcmp(dComIfGp_getPEvtManager()->getMyNowCutName(staff_idx), "Move") == 0) {
|
||||
setup_action(field_0x2DC + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_VIB, 0);
|
||||
}
|
||||
|
||||
/* 00000E08-00000F0C .text move_ylzou_demo_move_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_move_act_proc() {
|
||||
/* Nonmatching */
|
||||
if (current.pos.z < home.pos.z + -680) {
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (l_HIO.m24 == 1) {
|
||||
l_HIO.m24 = 0;
|
||||
speedF = 0.0f;
|
||||
field_0x361 = 0;
|
||||
dComIfGp_getVibration().StopQuake(-1);
|
||||
field_0x368 = 0;
|
||||
setup_action(6);
|
||||
return;
|
||||
}
|
||||
l_HIO.m26 = 0;
|
||||
#endif
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_STOP, 0);
|
||||
setup_action(5);
|
||||
} else {
|
||||
speedF += DEMO_SELECT(l_HIO.mC, 0.1f);
|
||||
if (speedF > DEMO_SELECT(l_HIO.m8, 6.0f)) {
|
||||
speedF = DEMO_SELECT(l_HIO.m8, 6.0f);
|
||||
}
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_MOVE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000F0C-00001008 .text go_up_stairs_demo_move_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::go_up_stairs_demo_move_act_proc() {
|
||||
/* Nonmatching */
|
||||
if (current.pos.z > home.pos.z) {
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_STOP, 0);
|
||||
DEMO_SELECT(l_HIO.m24 = 0, TRUE);
|
||||
setup_action(10);
|
||||
} else {
|
||||
speedF += DEMO_SELECT(l_HIO.mC, 0.1f);
|
||||
if (speedF > DEMO_SELECT(l_HIO.m8, 6.0f)) {
|
||||
speedF = DEMO_SELECT(l_HIO.m8, 6.0f);
|
||||
}
|
||||
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_MOVE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00001008-000010A8 .text demo_end_wait_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_end_wait_act_proc() {
|
||||
/* Nonmatching */
|
||||
static int next_act_idx[4] = {-1, 6, 11, 12};
|
||||
|
||||
if (dComIfGp_evmng_endCheck(field_0x2E4)) {
|
||||
dComIfGp_event_reset();
|
||||
if (field_0x2DC == 0xE) {
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3980);
|
||||
}
|
||||
fopAcM_OffStatus(this, fopAcStts_UNK4000_e);
|
||||
setup_action(next_act_idx[field_0x2EC]);
|
||||
}
|
||||
}
|
||||
|
||||
/* 000010A8-000010AC .text wait_act_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::wait_act_proc() {
|
||||
/* Nonmatching */
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (l_HIO.m25 == 1) {
|
||||
dComIfGs_offEventBit(dSv_event_flag_c::UNK_3820);
|
||||
setup_action(0);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
/* 000010AC-000010D8 .text move_ylzou_demo_start_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_start_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
field_0x2E4 = -1;
|
||||
home.pos.x = 0.0;
|
||||
home.pos.y = 0.0;
|
||||
home.pos.z = 0.0;
|
||||
current.pos.x = 0.0;
|
||||
current.pos.y = 0.0;
|
||||
current.pos.z = 0.0;
|
||||
}
|
||||
|
||||
/* 000010D8-00001174 .text demo_regist_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_regist_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
if (field_0x2EC != 1) {
|
||||
dComIfGp_evmng_cancelStartDemo();
|
||||
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
|
||||
}
|
||||
|
||||
field_0x2E4 = dComIfGp_evmng_getEventIdx(l_demo_name[field_0x2EC]);
|
||||
fopAcM_orderOtherEventId(this, field_0x2E4, 0xFF, 0xFFFF, 0, 1);
|
||||
}
|
||||
|
||||
/* 00001174-000011A4 .text move_ylzou_demo_vib_start_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_vib_start_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3820);
|
||||
}
|
||||
|
||||
/* 000011A4-0000120C .text move_ylzou_demo_vib_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_vib_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0, 1, 0));
|
||||
field_0x368 = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 0000120C-00001228 .text move_ylzou_demo_move_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::move_ylzou_demo_move_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
field_0x361 = 1;
|
||||
field_0x368 = 2;
|
||||
current.angle.y = SHRT_MIN;
|
||||
}
|
||||
|
||||
/* 00001228-000012C8 .text demo_end_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::demo_end_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
speedF = 0.0;
|
||||
field_0x361 = 0;
|
||||
if (DEMO_SELECT(TRUE, field_0x2EC != 3)) {
|
||||
dComIfGp_getVibration().StopQuake(-1);
|
||||
dComIfGp_getVibration().StartShock(8, 1, cXyz(0, 1, 0));
|
||||
}
|
||||
field_0x368 = 0;
|
||||
}
|
||||
|
||||
/* 000012C8-000012F4 .text open_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::open_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
home.pos.x = 0.0;
|
||||
home.pos.y = 0.0;
|
||||
home.pos.z = -680.0;
|
||||
current.pos.x = 0.0;
|
||||
current.pos.y = 0.0;
|
||||
current.pos.z = -680.0;
|
||||
}
|
||||
|
||||
/* 000012F4-00001318 .text close_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::close_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
home.pos.x = 0.0;
|
||||
home.pos.y = 0.0;
|
||||
home.pos.z = 0.0;
|
||||
current.pos.x = 0.0;
|
||||
current.pos.y = 0.0;
|
||||
current.pos.z = 0.0;
|
||||
}
|
||||
|
||||
/* 00001318-000013A4 .text go_up_stairs_demo_move_start_wait_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::go_up_stairs_demo_move_start_wait_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
current.angle.y = 0;
|
||||
home.pos.set(0, 0, 0);
|
||||
current.pos.set(0, 0, -680);
|
||||
|
||||
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0, 1, 0));
|
||||
field_0x368 = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 000013A4-000013B8 .text go_up_stairs_demo_move_act_init_proc__12daObjYLzou_cFv */
|
||||
void daObjYLzou_c::go_up_stairs_demo_move_act_init_proc() {
|
||||
/* Nonmatching */
|
||||
field_0x361 = 1;
|
||||
field_0x368 = 2;
|
||||
}
|
||||
|
||||
/* 000013B8-00001740 .text setup_action__12daObjYLzou_cFi */
|
||||
void daObjYLzou_c::setup_action(int) {
|
||||
/* Nonmatching */
|
||||
void daObjYLzou_c::setup_action(int i_action_idx) {
|
||||
static ProcFunc act_init_proc[15] = {
|
||||
&daObjYLzou_c::move_ylzou_demo_start_wait_act_init_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_init_proc,
|
||||
&daObjYLzou_c::move_ylzou_demo_vib_start_wait_act_init_proc,
|
||||
&daObjYLzou_c::move_ylzou_demo_vib_act_init_proc,
|
||||
&daObjYLzou_c::move_ylzou_demo_move_act_init_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_init_proc,
|
||||
&daObjYLzou_c::open_wait_act_init_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_init_proc,
|
||||
&daObjYLzou_c::go_up_stairs_demo_move_start_wait_act_init_proc,
|
||||
&daObjYLzou_c::go_up_stairs_demo_move_act_init_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_init_proc,
|
||||
&daObjYLzou_c::close_wait_act_init_proc,
|
||||
&daObjYLzou_c::close_wait_act_init_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_init_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_init_proc,
|
||||
};
|
||||
|
||||
static ProcFunc act_proc[15] = {
|
||||
&daObjYLzou_c::move_ylzou_demo_start_wait_act_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_proc,
|
||||
&daObjYLzou_c::demo_vib_start_wait_act_proc,
|
||||
&daObjYLzou_c::demo_vib_act_proc,
|
||||
&daObjYLzou_c::move_ylzou_demo_move_act_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_proc,
|
||||
&daObjYLzou_c::wait_act_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_proc,
|
||||
&daObjYLzou_c::demo_vib_act_proc,
|
||||
&daObjYLzou_c::go_up_stairs_demo_move_act_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_proc,
|
||||
&daObjYLzou_c::wait_act_proc,
|
||||
&daObjYLzou_c::wait_act_proc,
|
||||
&daObjYLzou_c::demo_regist_wait_act_proc,
|
||||
&daObjYLzou_c::demo_end_wait_act_proc,
|
||||
};
|
||||
|
||||
(this->*act_init_proc[i_action_idx])();
|
||||
field_0x2D0 = act_proc[i_action_idx];
|
||||
field_0x2DC = i_action_idx;
|
||||
}
|
||||
|
||||
/* 00001740-000017D4 .text _execute__12daObjYLzou_cFv */
|
||||
bool daObjYLzou_c::_execute() {
|
||||
/* Nonmatching */
|
||||
fopAcM_posMoveF(this, NULL);
|
||||
set_mtx();
|
||||
if (field_0x29C != NULL) {
|
||||
if (field_0x29C->ChkUsed()) {
|
||||
field_0x29C->Move();
|
||||
}
|
||||
}
|
||||
(this->*field_0x2D0)();
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (l_HIO.m29 == 1) {
|
||||
if (l_HIO.m27 == 1) {
|
||||
field_0x361 = 1;
|
||||
} else {
|
||||
field_0x361 = 0;
|
||||
}
|
||||
}
|
||||
if (l_HIO.m2A == 1) {
|
||||
if (l_HIO.m28 == 1) {
|
||||
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
field_0x368 = 1;
|
||||
} else {
|
||||
dComIfGp_getVibration().StopQuake(-1);
|
||||
field_0x368 = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
eff_smoke_proc();
|
||||
vib_proc();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 000017D4-00001834 .text _draw__12daObjYLzou_cFv */
|
||||
bool daObjYLzou_c::_draw() {
|
||||
/* Nonmatching */
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType(field_0x298, &tevStr);
|
||||
mDoExt_modelUpdateDL(field_0x298);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00001834-00001854 .text daObjYLzou_Create__FP10fopAc_ac_c */
|
||||
|
||||
Reference in New Issue
Block a user