mirror of https://github.com/zeldaret/tww
d_a_yougan (#878)
* d_a_yougan: match retail * d_a_yougan: match demo * d_a_yougan: remove nonmatching comments
This commit is contained in:
parent
cf668ea219
commit
e7b951841e
|
|
@ -1783,7 +1783,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_windmill"),
|
||||
ActorRel(NonMatching, "d_a_wz"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_ygcwp"),
|
||||
ActorRel(NonMatching, "d_a_yougan"),
|
||||
ActorRel(Matching, "d_a_yougan"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_ghostship"),
|
||||
ActorRel(NonMatching, "d_a_movie_player", extra_cflags=["-O3,p"]),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -2,6 +2,22 @@
|
|||
#define D_A_YOUGAN_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
|
||||
class yg_awa_data {
|
||||
public:
|
||||
~yg_awa_data() {}
|
||||
public:
|
||||
/* 0x00 */ s32 field_0x00;
|
||||
/* 0x04 */ J3DModel* field_0x04;
|
||||
/* 0x08 */ mDoExt_bckAnm field_0x08;
|
||||
/* 0x18 */ mDoExt_btkAnm field_0x18;
|
||||
/* 0x2C */ cXyz field_0x2C;
|
||||
/* 0x38 */ cXyz field_0x38;
|
||||
/* 0x44 */ f32 field_0x44;
|
||||
/* 0x48 */ f32 field_0x48;
|
||||
}; // Size: 0x4C
|
||||
|
||||
class daYougan_c : public fopAc_ac_c {
|
||||
public:
|
||||
|
|
@ -12,16 +28,10 @@ public:
|
|||
BOOL useHeapInit();
|
||||
cPhs_State _daYougan_create();
|
||||
|
||||
static char m_arcname[];
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
|
||||
class daYOUGAN_HIO_c {
|
||||
public:
|
||||
daYOUGAN_HIO_c();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
/* 0x290 */ request_of_phase_process_class mPhase;
|
||||
/* 0x298 */ yg_awa_data field_0x298[16];
|
||||
}; // Size: 0x758
|
||||
|
||||
#endif /* D_A_YOUGAN_H */
|
||||
|
|
|
|||
|
|
@ -7,10 +7,45 @@
|
|||
#include "d/actor/d_a_yougan.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_priority.h"
|
||||
#include "d/res/res_yougan.h"
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
|
||||
class daYOUGAN_HIO_c : public JORReflexible {
|
||||
public:
|
||||
daYOUGAN_HIO_c();
|
||||
virtual ~daYOUGAN_HIO_c() {}
|
||||
|
||||
public:
|
||||
/* 0x04 */ s8 mNo;
|
||||
/* 0x06 */ s16 field_0x06;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0C */ f32 field_0x0C;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ f32 field_0x1C;
|
||||
/* 0x20 */ u8 field_0x20;
|
||||
/* 0x21 */ s8 field_0x21;
|
||||
/* 0x22 */ s8 field_0x22;
|
||||
}; // Size: 0x23
|
||||
|
||||
static daYOUGAN_HIO_c l_HIO;
|
||||
static s32 yg_awa_num = 16;
|
||||
char daYougan_c::m_arcname[] = "Yougan";
|
||||
|
||||
/* 000000EC-00000158 .text __ct__14daYOUGAN_HIO_cFv */
|
||||
daYOUGAN_HIO_c::daYOUGAN_HIO_c() {
|
||||
/* Nonmatching */
|
||||
mNo = -1;
|
||||
field_0x22 = 0;
|
||||
field_0x06 = 16;
|
||||
field_0x08 = 1250.0f;
|
||||
field_0x0C = 40.0f;
|
||||
field_0x10 = 60.0f;
|
||||
field_0x14 = 0.2f;
|
||||
field_0x18 = 0.5f;
|
||||
field_0x1C = 100.0f;
|
||||
field_0x20 = 1;
|
||||
field_0x21 = 1;
|
||||
}
|
||||
|
||||
/* 00000158-00000178 .text daYougan_Draw__FP10daYougan_c */
|
||||
|
|
@ -20,7 +55,32 @@ static BOOL daYougan_Draw(daYougan_c* i_this) {
|
|||
|
||||
/* 00000178-000002A8 .text _daYougan_draw__10daYougan_cFv */
|
||||
BOOL daYougan_c::_daYougan_draw() {
|
||||
/* Nonmatching */
|
||||
yg_awa_num = l_HIO.field_0x06;
|
||||
for (s32 i = 0; i < yg_awa_num; i++) {
|
||||
if (l_HIO.field_0x20) {
|
||||
if (!mDoLib_clipper::clip(j3dSys.getViewMtx(), field_0x298[i].field_0x2C, l_HIO.field_0x1C)) {
|
||||
J3DModelData* model_data = field_0x298[i].field_0x04->getModelData();
|
||||
f32 frame = field_0x298[i].field_0x18.getFrame();
|
||||
field_0x298[i].field_0x18.entry(model_data, frame);
|
||||
|
||||
model_data = field_0x298[i].field_0x04->getModelData();
|
||||
frame = field_0x298[i].field_0x18.getFrame();
|
||||
field_0x298[i].field_0x08.entry(model_data, field_0x298[i].field_0x08.getFrame());
|
||||
mDoExt_modelUpdateDL(field_0x298[i].field_0x04);
|
||||
}
|
||||
} else {
|
||||
J3DModelData* model_data = field_0x298[i].field_0x04->getModelData();
|
||||
f32 frame = field_0x298[i].field_0x18.getFrame();
|
||||
field_0x298[i].field_0x18.entry(model_data, frame);
|
||||
|
||||
model_data = field_0x298[i].field_0x04->getModelData();
|
||||
frame = field_0x298[i].field_0x18.getFrame();
|
||||
field_0x298[i].field_0x08.entry(model_data, field_0x298[i].field_0x08.getFrame());
|
||||
mDoExt_modelUpdateDL(field_0x298[i].field_0x04);
|
||||
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000002A8-000002C8 .text daYougan_Execute__FP10daYougan_c */
|
||||
|
|
@ -30,7 +90,59 @@ static BOOL daYougan_Execute(daYougan_c* i_this) {
|
|||
|
||||
/* 000002C8-00000554 .text _daYougan_execute__10daYougan_cFv */
|
||||
BOOL daYougan_c::_daYougan_execute() {
|
||||
/* Nonmatching */
|
||||
yg_awa_num = l_HIO.field_0x06;
|
||||
|
||||
for (s32 i = 0; i < yg_awa_num; i++) {
|
||||
switch (field_0x298[i].field_0x00) {
|
||||
case 0: {
|
||||
field_0x298[i].field_0x38 = cXyz::Zero;
|
||||
field_0x298[i].field_0x48 = l_HIO.field_0x0C + cM_rndF(l_HIO.field_0x10);
|
||||
field_0x298[i].field_0x44 = l_HIO.field_0x14 + cM_rndF(l_HIO.field_0x18);
|
||||
f32 fVar4 = l_HIO.field_0x08 * scale.x;
|
||||
f32 fVar5 = cM_rndFX(fVar4);
|
||||
fVar4 = cM_rndFX(fVar4 - std::fabsf(fVar5));
|
||||
|
||||
field_0x298[i].field_0x2C.x = current.pos.x + fVar5;
|
||||
field_0x298[i].field_0x2C.y = current.pos.y - 17.591f;
|
||||
field_0x298[i].field_0x2C.z = current.pos.z + fVar4;
|
||||
field_0x298[i].field_0x00 = 1;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
if (field_0x298[i].field_0x38.x <= field_0x298[i].field_0x44) {
|
||||
field_0x298[i].field_0x38.x += field_0x298[i].field_0x44 / field_0x298[i].field_0x48;
|
||||
field_0x298[i].field_0x38.y = field_0x298[i].field_0x38.x;
|
||||
field_0x298[i].field_0x38.z = field_0x298[i].field_0x38.x;
|
||||
} else {
|
||||
field_0x298[i].field_0x00 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
field_0x298[i].field_0x08.setPlaySpeed(1.0f);
|
||||
field_0x298[i].field_0x18.setPlaySpeed(1.0f);
|
||||
|
||||
if (field_0x298[i].field_0x08.play() || field_0x298[i].field_0x18.play()) {
|
||||
|
||||
field_0x298[i].field_0x08.setFrame(0.0f);
|
||||
field_0x298[i].field_0x18.setFrame(0.0f);
|
||||
|
||||
field_0x298[i].field_0x38.set(0.0f, 0.0f, 0.0f);
|
||||
field_0x298[i].field_0x00 = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
field_0x298[i].field_0x00 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
yg_awa_num = l_HIO.field_0x06;
|
||||
for (s32 i = 0; i < yg_awa_num; i++) {
|
||||
J3DModel* p_model = field_0x298[i].field_0x04;
|
||||
p_model->setBaseScale(field_0x298[i].field_0x38);
|
||||
mDoMtx_stack_c::transS(field_0x298[i].field_0x2C);
|
||||
p_model->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000554-00000574 .text daYougan_IsDelete__FP10daYougan_c */
|
||||
|
|
@ -40,7 +152,7 @@ static BOOL daYougan_IsDelete(daYougan_c* i_this) {
|
|||
|
||||
/* 00000574-0000057C .text _daYougan_isdelete__10daYougan_cFv */
|
||||
BOOL daYougan_c::_daYougan_isdelete() {
|
||||
/* Nonmatching */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 0000057C-0000059C .text daYougan_Delete__FP10daYougan_c */
|
||||
|
|
@ -50,17 +162,51 @@ static BOOL daYougan_Delete(daYougan_c* i_this) {
|
|||
|
||||
/* 0000059C-00000600 .text _daYougan_delete__10daYougan_cFv */
|
||||
BOOL daYougan_c::_daYougan_delete() {
|
||||
/* Nonmatching */
|
||||
dComIfG_resDeleteDemo(&mPhase, m_arcname);
|
||||
if (l_HIO.mNo >= 0) {
|
||||
mDoHIO_deleteChild(l_HIO.mNo);
|
||||
l_HIO.mNo = -1;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000600-00000884 .text useHeapInit__10daYougan_cFv */
|
||||
BOOL daYougan_c::useHeapInit() {
|
||||
/* Nonmatching */
|
||||
J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes(m_arcname, YOUGAN_BMD_YOUGAN_AWA);
|
||||
JUT_ASSERT(DEMO_SELECT(462, 464), modelData != NULL);
|
||||
J3DAnmTransform* anmKey = (J3DAnmTransform*) dComIfG_getObjectRes(m_arcname, YOUGAN_BCK_YOUGAN_AWA);
|
||||
JUT_ASSERT(DEMO_SELECT(467,469), anmKey != NULL);
|
||||
J3DAnmTextureSRTKey* srtKey = (J3DAnmTextureSRTKey*) dComIfG_getObjectRes(m_arcname, YOUGAN_BTK_YOUGAN_AWA);
|
||||
JUT_ASSERT(DEMO_SELECT(472, 474), srtKey != NULL);
|
||||
|
||||
yg_awa_num = l_HIO.field_0x06;
|
||||
for(s32 i = 0; i < yg_awa_num; i++) {
|
||||
field_0x298[i].field_0x00 = 0;
|
||||
J3DModel* p_model = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
field_0x298[i].field_0x04 = p_model;
|
||||
#if VERSION != VERSION_DEMO
|
||||
if(field_0x298[i].field_0x04 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
for(s32 i = 0; i < yg_awa_num; i++) {
|
||||
if(!field_0x298[i].field_0x08.init(modelData, anmKey, TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
for(s32 i = 0; i < yg_awa_num; i++) {
|
||||
if(!field_0x298[i].field_0x18.init(modelData, srtKey, TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000884-000008A4 .text daYougan_solidHeapCB__FP10fopAc_ac_c */
|
||||
static BOOL daYougan_solidHeapCB(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daYougan_solidHeapCB(fopAc_ac_c* i_this) {
|
||||
return ((daYougan_c*)i_this)->useHeapInit();
|
||||
|
||||
}
|
||||
|
||||
/* 000008A4-000008C4 .text daYougan_Create__FP10fopAc_ac_c */
|
||||
|
|
@ -70,7 +216,21 @@ static cPhs_State daYougan_Create(fopAc_ac_c* i_this) {
|
|||
|
||||
/* 000008C4-000009C8 .text _daYougan_create__10daYougan_cFv */
|
||||
cPhs_State daYougan_c::_daYougan_create() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetupActor(this, daYougan_c);
|
||||
|
||||
cPhs_State state = dComIfG_resLoad(&this->mPhase, m_arcname);
|
||||
|
||||
if(state == cPhs_COMPLEATE_e) {
|
||||
if(fopAcM_entrySolidHeap(this, daYougan_solidHeapCB, 0x16000)) {
|
||||
fopAcM_SetMtx(this,field_0x298[0].field_0x04->getBaseTRMtx());
|
||||
} else {
|
||||
state = cPhs_ERROR_e;
|
||||
}
|
||||
if (l_HIO.mNo < 0) {
|
||||
l_HIO.mNo = mDoHIO_createChild("溶岩の気泡", &l_HIO);
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
static actor_method_class l_daYougan_Method = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue