mirror of https://github.com/zeldaret/tp.git
d_a_kytag10 almost done
This commit is contained in:
parent
93d82399b3
commit
2c8bfedbba
|
@ -31,12 +31,33 @@ struct TVec3<s16> {
|
|||
}
|
||||
};
|
||||
|
||||
inline void setTVec3f(const f32* vec_a, f32* vec_b) {
|
||||
const register f32* v_a = vec_a;
|
||||
register f32* v_b = vec_b;
|
||||
|
||||
register f32 a_x;
|
||||
register f32 b_x;
|
||||
|
||||
asm {
|
||||
psq_l a_x, 0(v_a), 0, 0 /* qr0 */
|
||||
lfs b_x, 8(v_a)
|
||||
psq_st a_x, 0(v_b), 0, 0 /* qr0 */
|
||||
stfs b_x, 8(v_b)
|
||||
};
|
||||
}
|
||||
|
||||
template <>
|
||||
struct TVec3<f32> {
|
||||
f32 x;
|
||||
f32 y;
|
||||
f32 z;
|
||||
|
||||
/* TVec3(const Vec& i_vec) {
|
||||
setTVec3f(&i_vec.x, &x);
|
||||
} */
|
||||
|
||||
/* TVec3() {} */
|
||||
|
||||
operator Vec*() { return (Vec*)&x; }
|
||||
operator const Vec*() const { return (Vec*)&x; }
|
||||
|
||||
|
|
|
@ -250,6 +250,13 @@ public:
|
|||
void setGlobalRTMatrix(const Mtx m) { JPASetRMtxTVecfromMtx(m, mGlobalRot, &mGlobalTrs); }
|
||||
void setGlobalTranslation(f32 x, f32 y, f32 z) { mGlobalTrs.set(x, y, z); }
|
||||
void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; }
|
||||
void setVolumeSize(u16 size) { mVolumeSize = size; }
|
||||
void setLifeTime(s16 lifetime) { mLifeTime = lifetime; }
|
||||
|
||||
void setGlobalParticleScale(const JGeometry::TVec3<f32>& scale) {
|
||||
mGlobalPScl.set(scale.x, scale.y);
|
||||
}
|
||||
|
||||
// void setGlobalScale(const JGeometry::TVec3<f32>& scale) {
|
||||
// mGlobalScl = scale;
|
||||
// mGlobalPScl = scale;
|
||||
|
|
|
@ -1,6 +1,22 @@
|
|||
#ifndef D_A_KYTAG10_H
|
||||
#define D_A_KYTAG10_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
struct dPath;
|
||||
|
||||
class kytag10_class : public fopAc_ac_c {
|
||||
public:
|
||||
/* 0x568 */ dPath* mpPath;
|
||||
/* 0x56C */ JPABaseEmitter* mpEmitter1;
|
||||
/* 0x570 */ JPABaseEmitter* mpEmitter2;
|
||||
/* 0x574 */ cXyz mEmitterPtclScale;
|
||||
/* 0x580 */ s16 mEmitterVolSize;
|
||||
/* 0x582 */ s16 mEmitterLifeTime;
|
||||
/* 0x584 */ u8 field_0x584;
|
||||
/* 0x588 */ cXyz field_0x588;
|
||||
/* 0x594 */ f32 field_0x594;
|
||||
/* 0x598 */ int mPathPoint;
|
||||
};
|
||||
|
||||
#endif /* D_A_KYTAG10_H */
|
||||
|
|
|
@ -1,43 +1,17 @@
|
|||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d_a_kytag10
|
||||
//
|
||||
/**
|
||||
* d_a_kytag10.cpp
|
||||
* Sparks Particle Emitter on a Path
|
||||
*/
|
||||
|
||||
#include "rel/d/a/kytag/d_a_kytag10/d_a_kytag10.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_path.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/kankyo/d_kankyo_rain.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct kytag10_class {};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct dPath {};
|
||||
|
||||
struct dPa_levelEcallBack {};
|
||||
|
||||
struct dKy_tevstr_c {};
|
||||
|
||||
struct csXyz {};
|
||||
|
||||
struct _GXColor {};
|
||||
|
||||
struct cXyz {};
|
||||
|
||||
struct dPa_control_c {
|
||||
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
|
||||
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
|
||||
cXyz const*, f32);
|
||||
};
|
||||
|
||||
struct JPABaseEmitter {
|
||||
/* 8027EC60 */ void deleteAllParticle();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
|
@ -53,7 +27,6 @@ extern "C" static void daKytag10_Execute__FP13kytag10_class();
|
|||
extern "C" static bool daKytag10_IsDelete__FP13kytag10_class();
|
||||
extern "C" static void daKytag10_Delete__FP13kytag10_class();
|
||||
extern "C" static void daKytag10_Create__FP10fopAc_ac_c();
|
||||
extern "C" extern void* g_profile_KYTAG10[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
|
@ -66,16 +39,10 @@ extern "C" void dPath_GetRoomPath__Fii();
|
|||
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void deleteAllParticle__14JPABaseEmitterFv();
|
||||
extern "C" void PSVECSquareDistance();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 g_env_light[4880];
|
||||
extern "C" extern u32 __float_nan;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
|
@ -93,49 +60,74 @@ COMPILER_STRIP_GATE(0x80529400, &lit_3788);
|
|||
|
||||
/* 80528BF8-80528D0C 000078 0114+00 1/1 0/0 0/0 .text get_rail_ratio_pos__FP5dPathifPsPs
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static cXyz get_rail_ratio_pos(dPath* i_path, int i_pointIdx, f32 param_2, s16* param_3,
|
||||
s16* param_4) {
|
||||
cXyz point_a;
|
||||
cXyz point_b;
|
||||
cXyz ret;
|
||||
cXyz calc_vec;
|
||||
|
||||
point_a.x = i_path->m_points[i_pointIdx].m_position.x;
|
||||
point_a.y = i_path->m_points[i_pointIdx].m_position.y;
|
||||
point_a.z = i_path->m_points[i_pointIdx].m_position.z;
|
||||
|
||||
point_b.x = i_path->m_points[i_pointIdx + 1].m_position.x;
|
||||
point_b.y = i_path->m_points[i_pointIdx + 1].m_position.y;
|
||||
point_b.z = i_path->m_points[i_pointIdx + 1].m_position.z;
|
||||
|
||||
ret.x = point_a.x + param_2 * (point_b.x - point_a.x);
|
||||
ret.y = point_a.y + param_2 * (point_b.y - point_a.y);
|
||||
ret.z = point_a.z + param_2 * (point_b.z - point_a.z);
|
||||
|
||||
dKyr_get_vectle_calc(&point_a, &point_b, &calc_vec);
|
||||
|
||||
*param_3 =
|
||||
cM_atan2s(JMAFastSqrt(calc_vec.x * calc_vec.x + calc_vec.z * calc_vec.z), calc_vec.y);
|
||||
*param_4 = cM_atan2s(calc_vec.x, calc_vec.z);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_rail_ratio_pos(dPath* param_0, int param_1, f32 param_2, s16* param_3,
|
||||
static asm cXyz get_rail_ratio_pos(dPath* param_0, int param_1, f32 param_2, s16* param_3,
|
||||
s16* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_rail_ratio_pos__FP5dPathifPsPs.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80528D0C-80528D54 00018C 0048+00 1/1 0/0 0/0 .text set_path_info__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void set_path_info(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/set_path_info__FP10fopAc_ac_c.s"
|
||||
static dPath* set_path_info(fopAc_ac_c* i_actor) {
|
||||
dPath* path_p = NULL;
|
||||
u8 path_id = fopAcM_GetParam(i_actor) >> 0x10;
|
||||
|
||||
if (path_id != 0xFF) {
|
||||
path_p = dPath_GetRoomPath(path_id, fopAcM_GetRoomNo(i_actor));
|
||||
}
|
||||
|
||||
return path_p;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80528D54-80528D64 0001D4 0010+00 1/1 0/0 0/0 .text
|
||||
* get_Extent_pos_start_get__FP13kytag10_classP5dPathP4cXyzfPi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_Extent_pos_start_get(kytag10_class* param_0, dPath* param_1, cXyz* param_2,
|
||||
f32 param_3, int* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_Extent_pos_start_get__FP13kytag10_classP5dPathP4cXyzfPi.s"
|
||||
static dPath* get_Extent_pos_start_get(kytag10_class* i_this, dPath* i_path, cXyz*, f32,
|
||||
int* param_4) {
|
||||
*param_4 = 0;
|
||||
return i_path;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80528D64-80528D78 0001E4 0014+00 1/1 0/0 0/0 .text
|
||||
* get_Extent_pos_end_get__FP13kytag10_classP5dPathP4cXyzfPi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_Extent_pos_end_get(kytag10_class* param_0, dPath* param_1, cXyz* param_2,
|
||||
f32 param_3, int* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_Extent_pos_end_get__FP13kytag10_classP5dPathP4cXyzfPi.s"
|
||||
static dPath* get_Extent_pos_end_get(kytag10_class* param_0, dPath* i_path, cXyz*, f32,
|
||||
int* param_4) {
|
||||
*param_4 = i_path->m_num - 1;
|
||||
return i_path;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529404-80529408 000004 0004+00 0/1 0/0 0/0 .rodata @3950 */
|
||||
|
@ -218,6 +210,72 @@ COMPILER_STRIP_GATE(0x80529438, &lit_3959);
|
|||
#pragma pop
|
||||
|
||||
/* 80528D78-80529148 0001F8 03D0+00 1/1 0/0 0/0 .text sparks_move__FP13kytag10_class */
|
||||
// TVec3<f32> constructors need to be setup
|
||||
#ifdef NONMATCHING
|
||||
static void sparks_move(kytag10_class* i_this) {
|
||||
camera_class* camera_p = dComIfGp_getCamera(0);
|
||||
|
||||
cXyz ratio_pos_1;
|
||||
cXyz ratio_pos_2;
|
||||
cXyz ratio_pos_5;
|
||||
cXyz ratio_pos_3;
|
||||
cXyz ratio_pos_4;
|
||||
|
||||
dPath* path_p = i_this->mpPath;
|
||||
|
||||
if (path_p != NULL) {
|
||||
int start_point_idx;
|
||||
dPath* path_start = get_Extent_pos_start_get(i_this, path_p, &camera_p->mLookat.mEye,
|
||||
1000.0f, &start_point_idx);
|
||||
|
||||
int end_point_idx;
|
||||
dPath* path_end = get_Extent_pos_end_get(i_this, path_p, &camera_p->mLookat.mEye, 1000.0f,
|
||||
&end_point_idx);
|
||||
|
||||
s16 spD6;
|
||||
s16 spD8;
|
||||
ratio_pos_1 = get_rail_ratio_pos(path_start, 0, 0.0f, &spD6, &spD8);
|
||||
ratio_pos_2 = get_rail_ratio_pos(path_end, end_point_idx - 1, 1.0f, &spD6, &spD8);
|
||||
ratio_pos_3 = get_rail_ratio_pos(path_start, i_this->mPathPoint, 0.0f, &spD6, &spD8);
|
||||
ratio_pos_4 = get_rail_ratio_pos(path_start, i_this->mPathPoint, 1.0f, &spD6, &spD8);
|
||||
|
||||
f32 temp_f = 250.0f / ratio_pos_3.abs(ratio_pos_4);
|
||||
|
||||
ratio_pos_5 =
|
||||
get_rail_ratio_pos(path_start, i_this->mPathPoint, i_this->field_0x594, &spD6, &spD8);
|
||||
i_this->field_0x588 = ratio_pos_5;
|
||||
|
||||
i_this->mpEmitter1->setGlobalTranslation(ratio_pos_5.x, ratio_pos_5.y, ratio_pos_5.z);
|
||||
i_this->mpEmitter2->setGlobalTranslation(ratio_pos_5.x, ratio_pos_5.y, ratio_pos_5.z);
|
||||
|
||||
i_this->mpEmitter1->setVolumeSize(i_this->mEmitterVolSize);
|
||||
i_this->mpEmitter1->setLifeTime(i_this->mEmitterLifeTime);
|
||||
|
||||
i_this->mpEmitter2->setVolumeSize(i_this->mEmitterVolSize);
|
||||
i_this->mpEmitter2->setLifeTime(i_this->mEmitterLifeTime);
|
||||
|
||||
i_this->mpEmitter1->setGlobalParticleScale(i_this->mEmitterPtclScale);
|
||||
i_this->mpEmitter2->setGlobalParticleScale(i_this->mEmitterPtclScale);
|
||||
|
||||
if (i_this->field_0x584 != 0xFF) {
|
||||
f32 rate = i_this->field_0x584 / 100.0f;
|
||||
i_this->mpEmitter1->setRate(rate);
|
||||
i_this->mpEmitter2->setRate(rate);
|
||||
}
|
||||
|
||||
if (i_this->field_0x594 <= 1.0f - (250.0f * temp_f)) {
|
||||
i_this->field_0x594 += temp_f;
|
||||
return;
|
||||
} else if (i_this->mPathPoint >= end_point_idx - 1) {
|
||||
i_this->mPathPoint = start_point_idx;
|
||||
} else {
|
||||
i_this->mPathPoint++;
|
||||
}
|
||||
|
||||
i_this->field_0x594 = 0.0f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
@ -226,38 +284,48 @@ static asm void sparks_move(kytag10_class* param_0) {
|
|||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/sparks_move__FP13kytag10_class.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80529148-80529150 0005C8 0008+00 1/0 0/0 0/0 .text daKytag10_Draw__FP13kytag10_class
|
||||
*/
|
||||
static bool daKytag10_Draw(kytag10_class* param_0) {
|
||||
return true;
|
||||
static int daKytag10_Draw(kytag10_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80529150-80529174 0005D0 0024+00 1/0 0/0 0/0 .text daKytag10_Execute__FP13kytag10_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Execute(kytag10_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Execute__FP13kytag10_class.s"
|
||||
static int daKytag10_Execute(kytag10_class* i_this) {
|
||||
sparks_move(i_this);
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80529174-8052917C 0005F4 0008+00 1/0 0/0 0/0 .text daKytag10_IsDelete__FP13kytag10_class */
|
||||
static bool daKytag10_IsDelete(kytag10_class* param_0) {
|
||||
return true;
|
||||
static int daKytag10_IsDelete(kytag10_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8052917C-80529248 0005FC 00CC+00 1/0 0/0 0/0 .text daKytag10_Delete__FP13kytag10_class
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Delete(kytag10_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Delete__FP13kytag10_class.s"
|
||||
static int daKytag10_Delete(kytag10_class* i_this) {
|
||||
g_env_light.field_0xf21 = 0;
|
||||
|
||||
if (i_this->mpEmitter1 != NULL) {
|
||||
i_this->mpEmitter1->deleteAllParticle();
|
||||
i_this->mpEmitter1->becomeInvalidEmitter();
|
||||
i_this->mpEmitter1->quitImmortalEmitter();
|
||||
i_this->mpEmitter1->setEmitterCallBackPtr(NULL);
|
||||
i_this->mpEmitter1 = NULL;
|
||||
}
|
||||
|
||||
if (i_this->mpEmitter2 != NULL) {
|
||||
i_this->mpEmitter2->deleteAllParticle();
|
||||
i_this->mpEmitter2->becomeInvalidEmitter();
|
||||
i_this->mpEmitter2->quitImmortalEmitter();
|
||||
i_this->mpEmitter2->setEmitterCallBackPtr(NULL);
|
||||
i_this->mpEmitter2 = NULL;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529440-80529444 000040 0004+00 0/0 0/0 0/0 .rodata @3971 */
|
||||
|
@ -275,34 +343,82 @@ COMPILER_STRIP_GATE(0x80529444, &lit_4058);
|
|||
#pragma pop
|
||||
|
||||
/* 80529248-805293F8 0006C8 01B0+00 1/0 0/0 0/0 .text daKytag10_Create__FP10fopAc_ac_c */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static int daKytag10_Create(fopAc_ac_c* i_this) {
|
||||
if (!fopAcM_CheckCondition(i_this, 8)) {
|
||||
new (i_this) kytag10_class();
|
||||
fopAcM_OnCondition(i_this, 8);
|
||||
}
|
||||
|
||||
u8 prm0 = fopAcM_GetParam(i_this);
|
||||
if (prm0 == 0xFF) {
|
||||
prm0 = 10;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.z = prm0 * 0.1f;
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.y = prm0 * 0.1f;
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.x = prm0 * 0.1f;
|
||||
|
||||
s16 prm1 = (fopAcM_GetParam(i_this) >> 8) & 0xFF;
|
||||
if (prm1 == 0xFF) {
|
||||
prm1 = 0;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterVolSize = prm1 * 10;
|
||||
|
||||
s16 prm3 = (fopAcM_GetParam(i_this) >> 0x18) & 0xFF;
|
||||
if (prm3 == 0xFF) {
|
||||
prm3 = 15;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterLifeTime = prm3 * 10;
|
||||
((kytag10_class*)i_this)->field_0x584 = i_this->current.angle.x & 0xFF;
|
||||
((kytag10_class*)i_this)->mpEmitter1 = NULL;
|
||||
((kytag10_class*)i_this)->mpEmitter2 = NULL;
|
||||
((kytag10_class*)i_this)->field_0x594 = 0.0f;
|
||||
((kytag10_class*)i_this)->mPathPoint = 0;
|
||||
((kytag10_class*)i_this)->mpPath = set_path_info(i_this);
|
||||
((kytag10_class*)i_this)->mpEmitter1 =
|
||||
dComIfGp_particle_set(0x852B, &i_this->current.pos, NULL, NULL);
|
||||
((kytag10_class*)i_this)->mpEmitter2 =
|
||||
dComIfGp_particle_set(0x852C, &i_this->current.pos, NULL, NULL);
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Create(fopAc_ac_c* param_0) {
|
||||
static asm int daKytag10_Create(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Create__FP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529448-80529468 -00001 0020+00 1/0 0/0 0/0 .data l_daKytag10_Method */
|
||||
SECTION_DATA static void* l_daKytag10_Method[8] = {
|
||||
(void*)daKytag10_Create__FP10fopAc_ac_c,
|
||||
(void*)daKytag10_Delete__FP13kytag10_class,
|
||||
(void*)daKytag10_Execute__FP13kytag10_class,
|
||||
(void*)daKytag10_IsDelete__FP13kytag10_class,
|
||||
(void*)daKytag10_Draw__FP13kytag10_class,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
static actor_method_class l_daKytag10_Method = {
|
||||
(process_method_func)daKytag10_Create, (process_method_func)daKytag10_Delete,
|
||||
(process_method_func)daKytag10_Execute, (process_method_func)daKytag10_IsDelete,
|
||||
(process_method_func)daKytag10_Draw,
|
||||
};
|
||||
|
||||
/* 80529468-80529498 -00001 0030+00 0/0 0/0 1/0 .data g_profile_KYTAG10 */
|
||||
SECTION_DATA extern void* g_profile_KYTAG10[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x02B40000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x0000059C, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x00680000, (void*)&l_daKytag10_Method,
|
||||
(void*)0x00044000, (void*)NULL,
|
||||
extern actor_process_profile_definition g_profile_KYTAG10 = {
|
||||
-3,
|
||||
7,
|
||||
-3,
|
||||
PROC_KYTAG10,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(kytag10_class),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
104,
|
||||
&l_daKytag10_Method,
|
||||
0x44000,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
|
|
@ -200,91 +200,87 @@ COMPILER_STRIP_GATE(0x805A6980, &lit_4059);
|
|||
#pragma pop
|
||||
|
||||
/* 805A63F8-805A693C 000338 0544+00 1/1 0/0 0/0 .text execute__12daTagMstop_cFv */
|
||||
// one small block with issues
|
||||
#ifdef NONMATCHING
|
||||
// inline function nightmare
|
||||
int daTagMstop_c::execute() {
|
||||
if (field_0x56c) {
|
||||
fopAcM_seStartCurrentLevel(this, Z2SE_OBJ_DARK_GATE, 0);
|
||||
}
|
||||
|
||||
daMidna_c* midna = daPy_py_c::getMidnaActor();
|
||||
daMidna_c* midna_p = daPy_py_c::getMidnaActor();
|
||||
|
||||
if (!midna) {
|
||||
if (midna_p == NULL) {
|
||||
return 1;
|
||||
} else {
|
||||
daAlink_c* link = (daAlink_c*)daPy_getLinkPlayerActorClass();
|
||||
}
|
||||
|
||||
daPy_py_c* player_p = daPy_getLinkPlayerActorClass();
|
||||
|
||||
if (checkNoAttention()) {
|
||||
mAttentionInfo.mPosition = midna->mAttentionInfo.mPosition;
|
||||
shape_angle.y = midna->shape_angle.y;
|
||||
mEyePos = midna->mAttentionInfo.mPosition;
|
||||
|
||||
mAttentionInfo.mPosition = midna_p->mAttentionInfo.mPosition;
|
||||
shape_angle.y = midna_p->shape_angle.y;
|
||||
mEyePos = mAttentionInfo.mPosition;
|
||||
} else {
|
||||
shape_angle.y = fopAcM_searchPlayerAngleY(this);
|
||||
}
|
||||
|
||||
if (field_0x56e == 4) {
|
||||
if (field_0x5c8.abs2(link->current.pos) < 2500.0f) {
|
||||
if (field_0x5c8.abs2(player_p->current.pos) < 2500.0f) {
|
||||
i_dComIfGp_event_reset();
|
||||
link->i_cancelOriginalDemo();
|
||||
player_p->i_cancelOriginalDemo();
|
||||
field_0x56e = 0;
|
||||
}
|
||||
} else if (field_0x56e == 3) {
|
||||
if (link->checkHorseRide()) {
|
||||
link->setPlayerPosAndAngle(&field_0x5c8, link->shape_angle.y, 0);
|
||||
if (player_p->checkHorseRide()) {
|
||||
player_p->setPlayerPosAndAngle(&field_0x5c8, player_p->shape_angle.y, 0);
|
||||
i_dComIfGp_event_reset();
|
||||
field_0x56e = 0;
|
||||
} else {
|
||||
field_0x56e = 4;
|
||||
link->i_changeOriginalDemo();
|
||||
player_p->i_changeOriginalDemo();
|
||||
field_0x56a == 0 ? player_p->i_changeDemoMode(3, 0, 0, 0) :
|
||||
player_p->i_changeDemoMode(2, 0, 0, 0);
|
||||
|
||||
field_0x56a == 0 ? link->i_changeDemoMode(3, 0, 0, 0) :
|
||||
link->i_changeDemoMode(2, 0, 0, 0);
|
||||
link->i_changeDemoPos0(&field_0x5c8);
|
||||
player_p->i_changeDemoPos0(&field_0x5c8);
|
||||
}
|
||||
} else if (mEvtInfo.checkCommandTalk()) {
|
||||
if (field_0x56e == 2) {
|
||||
int shadowmode = midna->checkShadowModelDraw();
|
||||
if (midna->checkShadowReturnEnd()) {
|
||||
if (!midna_p->checkShadowModelDraw() || midna_p->checkShadowReturnEnd()) {
|
||||
i_dComIfGp_getEvent().reset(this);
|
||||
fopAcM_orderPotentialEvent(this, 0x400, 0x14f, 1);
|
||||
field_0x56e = 3;
|
||||
} else if (shadowmode == 0) {
|
||||
return 1;
|
||||
}
|
||||
} else if (!midna_p->checkShadowModeTalkWait()) {
|
||||
if (field_0x56e == 0) {
|
||||
mMsgFlow.init(this, (u16)shape_angle.z, 0, 0);
|
||||
mDoAud_seStart(Z2SE_NAVI_TALK_START, 0, 0, 0);
|
||||
field_0x56e = 1;
|
||||
} else if (mMsgFlow.doFlow(this, 0, 0)) {
|
||||
field_0x56e = 2;
|
||||
mDoAud_seStart(Z2SE_NAVI_TALK_END, 0, 0, 0);
|
||||
|
||||
if (midna_p->checkShadowModelDraw()) {
|
||||
midna_p->setShadowReturn();
|
||||
}
|
||||
}
|
||||
} else if (mSwitch != 0xFF || i_fopAcM_isSwitch(this, mSwitch) && field_0x572 == -1 ||
|
||||
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572]))
|
||||
}
|
||||
} else if ((mSwitch != 0xFF && i_fopAcM_isSwitch(this, mSwitch)) ||
|
||||
(field_0x572 != 0xFFFF &&
|
||||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572])))
|
||||
{
|
||||
fopAcM_delete(this);
|
||||
|
||||
} else if (field_0x568 == 0xFF ||
|
||||
i_fopAcM_isSwitch(this, field_0x568) && field_0x570 == -1 ||
|
||||
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572]) &&
|
||||
current.pos.y <= link->current.pos.y && link->current.pos.y <= field_0x5c4 &&
|
||||
return 1;
|
||||
} else if ((field_0x568 != 0xFF && !i_fopAcM_isSwitch(this, field_0x568)) ||
|
||||
(field_0x570 != 0xFFFF &&
|
||||
!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x570])))
|
||||
{
|
||||
return 1;
|
||||
} else if (current.pos.y <= player_p->current.pos.y && field_0x5c4 >= player_p->current.pos.y &&
|
||||
fopAcM_searchPlayerDistanceXZ2(this) < field_0x5c0)
|
||||
{
|
||||
eventOrder();
|
||||
}
|
||||
|
||||
} else {
|
||||
if (midna->checkShadowModeTalkWait()) {
|
||||
if (field_0x56e == 0) {
|
||||
mMsgFlow.init(this, shape_angle.z, 0, 0);
|
||||
mDoAud_seStart(16, 0, 0, 0);
|
||||
field_0x56e = 1;
|
||||
} else {
|
||||
if (mMsgFlow.doFlow(this, 0, 0)) {
|
||||
field_0x56e = 2;
|
||||
mDoAud_seStart(17, 0, 0, 0);
|
||||
|
||||
if (midna->checkShadowModelDraw()) {
|
||||
midna->setShadowReturn();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
|
|
Loading…
Reference in New Issue