mirror of https://github.com/zeldaret/tp.git
Misc. framework/d/ improvements (#2572)
This commit is contained in:
parent
ee608ceaac
commit
57c9d64308
|
|
@ -21819,7 +21819,8 @@ m_mode__7dDemo_c = .sbss:0x80450E38; // type:object size:0x4 scope:global align:
|
|||
m_status__7dDemo_c = .sbss:0x80450E3C; // type:object size:0x4 scope:global align:4 data:4byte
|
||||
m_branchType__7dDemo_c = .sbss:0x80450E40; // type:object size:0x2 scope:global align:2 data:2byte
|
||||
m_branchData__7dDemo_c = .sbss:0x80450E44; // type:object size:0x4 scope:global align:4 data:4byte
|
||||
struct_80450E48 = .sbss:0x80450E48; // type:object size:0x4 scope:local align:4 data:byte
|
||||
init$1867 = .sbss:0x80450E48; // type:object size:0x1 scope:local align:1 data:byte
|
||||
init$1870 = .sbss:0x80450E49; // type:object size:0x1 scope:local align:1 data:byte
|
||||
it = .sbss:0x80450E4C; // type:object size:0x4 scope:local align:4 data:4byte
|
||||
init$1672 = .sbss:0x80450E50; // type:object size:0x1 scope:local align:1 data:byte
|
||||
mNowStayFloorNo__10dMapInfo_c = .sbss:0x80450E58; // type:object size:0x1 scope:global align:1 data:byte
|
||||
|
|
|
|||
|
|
@ -548,7 +548,7 @@ config.libs = [
|
|||
Object(MatchingFor("GZ2E01", "GZ2J01"), "d/d_a_item_static.cpp"),
|
||||
Object(MatchingFor("GZ2E01", "GZ2J01"), "d/d_a_shop_item_static.cpp"),
|
||||
Object(MatchingFor("GZ2E01", "GZ2J01"), "d/d_a_horse_static.cpp"),
|
||||
Object(NonMatching, "d/d_demo.cpp"),
|
||||
Object(MatchingFor("GZ2E01"), "d/d_demo.cpp"),
|
||||
Object(MatchingFor("GZ2E01", "GZ2J01"), "d/d_door_param2.cpp", extra_cflags=['-pragma "nosyminline on"']),
|
||||
Object(NonMatching, "d/d_resorce.cpp"),
|
||||
Object(MatchingFor("GZ2E01", "GZ2J01"), "d/d_map_path.cpp"),
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ public:
|
|||
void setGlobalParticleScale(f32 scaleX, f32 scaleY) {
|
||||
mGlobalPScl.set(scaleX, scaleY);
|
||||
}
|
||||
void getGlobalParticleScale(JGeometry::TVec3<f32>& scale) {
|
||||
void getGlobalParticleScale(JGeometry::TVec3<f32>& scale) const {
|
||||
scale.set(mGlobalPScl.x, mGlobalPScl.y, 1.0f);
|
||||
}
|
||||
void setGlobalScale(const JGeometry::TVec3<f32>& scale) {
|
||||
|
|
|
|||
|
|
@ -94,19 +94,8 @@ public:
|
|||
cMtx_copy(mModel->getAnmMtx((u16)param_0), param_1);
|
||||
return true;
|
||||
}
|
||||
/* 8003A0D8 */ virtual void JSGGetTranslation(Vec* o_trans) const {
|
||||
*o_trans = mTrans;
|
||||
}
|
||||
/* 80038920 */ virtual void JSGSetTranslation(Vec const&);
|
||||
/* 8003A0F4 */ virtual void JSGGetScaling(Vec* o_scale) const {
|
||||
*o_scale = mScale;
|
||||
}
|
||||
/* 80038980 */ virtual void JSGSetScaling(Vec const&);
|
||||
/* 8003A110 */ virtual void JSGGetRotation(Vec* param_0) const {
|
||||
param_0->x = mRotate.x * 0.005493164f;
|
||||
param_0->y = mRotate.y * 0.005493164f;
|
||||
param_0->z = mRotate.z * 0.005493164f;
|
||||
}
|
||||
/* 800389A8 */ virtual void JSGSetRotation(Vec const&);
|
||||
/* 80038A0C */ virtual void JSGSetShape(u32);
|
||||
/* 80038A20 */ virtual void JSGSetAnimation(u32);
|
||||
|
|
@ -120,6 +109,17 @@ public:
|
|||
/* 8003A0D0 */ virtual f32 JSGGetTextureAnimationFrameMax() const {
|
||||
return mTexAnmFrameMax;
|
||||
}
|
||||
/* 8003A0D8 */ virtual void JSGGetTranslation(Vec* o_trans) const {
|
||||
*o_trans = mTrans;
|
||||
}
|
||||
/* 8003A0F4 */ virtual void JSGGetScaling(Vec* o_scale) const {
|
||||
*o_scale = mScale;
|
||||
}
|
||||
/* 8003A110 */ virtual void JSGGetRotation(Vec* param_0) const {
|
||||
param_0->x = mRotate.x * 0.005493164f;
|
||||
param_0->y = mRotate.y * 0.005493164f;
|
||||
param_0->z = mRotate.z * 0.005493164f;
|
||||
}
|
||||
|
||||
void setModel(J3DModel* p_model) { mModel = p_model; }
|
||||
BOOL checkEnable(u16 flag) { return mFlags & flag; }
|
||||
|
|
@ -164,10 +164,10 @@ class dDemo_system_c : public JStage::TSystem {
|
|||
public:
|
||||
dDemo_system_c() { mpObject = NULL; }
|
||||
|
||||
/* 80039AAC */ virtual ~dDemo_system_c();
|
||||
/* 80039528 */ virtual int JSGFindObject(JStage::TObject**, char const*,
|
||||
JStage::TEObject) const;
|
||||
|
||||
/* 80039AAC */ virtual ~dDemo_system_c();
|
||||
|
||||
void setObject(dDemo_object_c* i_object) { mpObject = i_object; }
|
||||
|
||||
private:
|
||||
|
|
@ -198,13 +198,13 @@ public:
|
|||
mFlags = 0;
|
||||
}
|
||||
|
||||
/* 80039468 */ virtual ~dDemo_light_c();
|
||||
/* 80038E20 */ virtual void JSGSetLightType(JStage::TELight);
|
||||
/* 80038E34 */ virtual void JSGSetPosition(Vec const&);
|
||||
/* 80038E5C */ virtual void JSGSetColor(GXColor);
|
||||
/* 80038E8C */ virtual void JSGSetDistanceAttenuation(f32, f32, GXDistAttnFn);
|
||||
/* 80038EA8 */ virtual void JSGSetAngleAttenuation(f32, GXSpotFn);
|
||||
/* 80038EC0 */ virtual void JSGSetDirection(Vec const&);
|
||||
/* 80039468 */ virtual ~dDemo_light_c();
|
||||
|
||||
void onEnable(u8 flag) { mFlags |= flag; }
|
||||
|
||||
|
|
@ -234,11 +234,11 @@ public:
|
|||
mFlags = 0;
|
||||
}
|
||||
|
||||
/* 80039408 */ virtual ~dDemo_fog_c();
|
||||
/* 80038EE8 */ virtual void JSGSetFogFunction(GXFogType);
|
||||
/* 80038EFC */ virtual void JSGSetStartZ(f32);
|
||||
/* 80038F10 */ virtual void JSGSetEndZ(f32);
|
||||
/* 80038F24 */ virtual void JSGSetColor(GXColor);
|
||||
/* 80039408 */ virtual ~dDemo_fog_c();
|
||||
|
||||
void onEnable(u8 flag) { mFlags |= flag; }
|
||||
|
||||
|
|
@ -267,7 +267,6 @@ public:
|
|||
mFlags = 0;
|
||||
}
|
||||
|
||||
/* 80039FFC */ virtual ~dDemo_camera_c();
|
||||
/* 80038AC4 */ virtual f32 JSGGetProjectionNear() const;
|
||||
/* 80038AF8 */ virtual void JSGSetProjectionNear(f32);
|
||||
/* 80038B0C */ virtual f32 JSGGetProjectionFar() const;
|
||||
|
|
@ -284,6 +283,7 @@ public:
|
|||
/* 80038D5C */ virtual void JSGSetViewTargetPosition(Vec const&);
|
||||
/* 80038D84 */ virtual f32 JSGGetViewRoll() const;
|
||||
/* 80038DDC */ virtual void JSGSetViewRoll(f32);
|
||||
/* 80039FFC */ virtual ~dDemo_camera_c();
|
||||
|
||||
void onEnable(u8 flag) { mFlags |= flag; }
|
||||
bool checkEnable(u8 flag) { return mFlags & flag; }
|
||||
|
|
@ -316,8 +316,8 @@ public:
|
|||
mFlags = 0;
|
||||
}
|
||||
|
||||
/* 800394C8 */ virtual ~dDemo_ambient_c();
|
||||
/* 80038DF0 */ virtual void JSGSetColor(GXColor);
|
||||
/* 800394C8 */ virtual ~dDemo_ambient_c();
|
||||
|
||||
void onEnable(u8 flag) { mFlags |= flag; }
|
||||
|
||||
|
|
|
|||
|
|
@ -255,7 +255,9 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
|
|||
return 1;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
s16 dDemo_c::m_branchNum = 0;
|
||||
#endif
|
||||
|
||||
/* 80038490-80038518 032DD0 0088+00 1/1 0/0 0/0 .text dDemo_getJaiPointer__FPCcUliPUs */
|
||||
static void* dDemo_getJaiPointer(char const* arcName, u32 anmID, int param_2, u16* param_3) {
|
||||
|
|
@ -287,8 +289,7 @@ int dDemo_setDemoData(fopAc_ac_c* i_actor, u8 i_flags, mDoExt_McaMorf* i_morf, c
|
|||
|
||||
u8 flags = demo_actor->checkEnable(i_flags);
|
||||
if (flags & dDemo_actor_c::ENABLE_TRANS_e) {
|
||||
i_actor->current.pos = demo_actor->getTrans();
|
||||
i_actor->old.pos = i_actor->current.pos;
|
||||
i_actor->old.pos = i_actor->current.pos = demo_actor->getTrans();
|
||||
}
|
||||
|
||||
if (flags & dDemo_actor_c::ENABLE_ROTATE_e) {
|
||||
|
|
@ -311,24 +312,26 @@ int dDemo_setDemoData(fopAc_ac_c* i_actor, u8 i_flags, mDoExt_McaMorf* i_morf, c
|
|||
|
||||
if (flags & dDemo_actor_c::ENABLE_ANM_e) {
|
||||
u32 anmID = demo_actor->getAnmId();
|
||||
void* ptr;
|
||||
|
||||
if (anmID != demo_actor->getOldAnmId()) {
|
||||
const char* a_name;
|
||||
if (anmID & 0x10000) {
|
||||
a_name = dStage_roomControl_c::getDemoArcName();
|
||||
JUT_ASSERT(267, a_name != NULL);
|
||||
JUT_ASSERT(0x267, a_name != NULL);
|
||||
} else {
|
||||
a_name = i_arcName;
|
||||
}
|
||||
|
||||
demo_actor->setOldAnmId(anmID);
|
||||
|
||||
J3DAnmTransform* i_key = (J3DAnmTransform*)dComIfG_getObjectIDRes(a_name, anmID);
|
||||
J3DAnmTransform* i_key = (J3DAnmTransform*)dComIfG_getObjectIDRes(a_name, anmID & 0xffff);
|
||||
JUT_ASSERT(272, i_key != 0);
|
||||
|
||||
void* ptr = dDemo_getJaiPointer(a_name, anmID, param_4, param_5);
|
||||
ptr = dDemo_getJaiPointer(a_name, anmID & 0xffff, param_4, param_5);
|
||||
|
||||
i_morf->setAnm(i_key, -1, demo_actor->getPrm_Morf(), 1.0f, 0.0f, -1.0f, ptr);
|
||||
f32 prmMorf = demo_actor->getPrm_Morf();
|
||||
i_morf->setAnm(i_key, -1, prmMorf, 1.0f, 0.0f, -1.0f, ptr);
|
||||
demo_actor->setAnmFrameMax(i_morf->getEndFrame());
|
||||
}
|
||||
}
|
||||
|
|
@ -337,7 +340,8 @@ int dDemo_setDemoData(fopAc_ac_c* i_actor, u8 i_flags, mDoExt_McaMorf* i_morf, c
|
|||
f32 anm_frame = demo_actor->getAnmFrame();
|
||||
|
||||
if (anm_frame > 1.0f) {
|
||||
i_morf->setFrame(anm_frame - 1.0f);
|
||||
anm_frame -= 1.0f;
|
||||
i_morf->setFrame(anm_frame);
|
||||
i_morf->play(&i_actor->current.pos, param_6, i_reverb);
|
||||
} else {
|
||||
i_morf->setFrame(anm_frame);
|
||||
|
|
|
|||
|
|
@ -526,49 +526,56 @@ static BOOL forward_overhead_bg_chk(cXyz* ppos, f32 dist) {
|
|||
/* 8005D18C-8005E8B0 057ACC 1724+00 0/0 1/1 0/0 .text dKyr_rain_move__Fv */
|
||||
// NONMATCHING reg alloc, equivalent?
|
||||
void dKyr_rain_move() {
|
||||
dKankyo_rain_Packet* rain_packet;
|
||||
camera_class* camera;
|
||||
|
||||
dKankyo_rain_Packet* rain_packet = g_env_light.mpRainPacket;
|
||||
rain_packet = g_env_light.mpRainPacket;
|
||||
camera = (camera_class*)dComIfGp_getCamera(0);
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
cXyz spFC;
|
||||
cXyz spF0;
|
||||
cXyz spE4;
|
||||
cXyz spD8;
|
||||
cXyz spCC = dKyw_get_wind_vecpow();
|
||||
|
||||
cXyz spE0;
|
||||
cXyz spD4;
|
||||
cXyz spC8 = dKyw_get_wind_vecpow();
|
||||
cXyz spBC;
|
||||
cXyz spB0;
|
||||
cXyz spC0;
|
||||
cXyz spB4;
|
||||
cXyz spA8;
|
||||
cXyz sp9C;
|
||||
cXyz sp90;
|
||||
|
||||
BOOL var_r20;
|
||||
BOOL var_r21;
|
||||
BOOL var_r22;
|
||||
BOOL var_r23;
|
||||
BOOL var_r24;
|
||||
cXyz* sp3C;
|
||||
f32 sp38;
|
||||
BOOL sp34;
|
||||
BOOL sp30;
|
||||
BOOL sp2C;
|
||||
u32 sp28;
|
||||
BOOL sp24 = 0;
|
||||
f32 sp20;
|
||||
BOOL sp1C = 0;
|
||||
|
||||
var_r21 = 0;
|
||||
var_r20 = 0;
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
f32 var_f29;
|
||||
f32 var_f28;
|
||||
|
||||
dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo());
|
||||
sp28 = dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo());
|
||||
|
||||
cXyz spA4;
|
||||
cXyz sp98;
|
||||
cXyz sp8C;
|
||||
|
||||
spA4.x = 0.0f;
|
||||
spA4.y = -2.5f;
|
||||
spA4.z = 0.0f;
|
||||
spA8.x = 0.0f;
|
||||
spA8.y = -2.5f;
|
||||
spA8.z = 0.0f;
|
||||
|
||||
if (rain_packet->raincnt <= g_env_light.raincnt) {
|
||||
rain_packet->raincnt = g_env_light.raincnt;
|
||||
}
|
||||
|
||||
if (rain_packet->raincnt != 0) {
|
||||
dKyr_get_vectle_calc(&camera->lookat.center, &rain_packet->mCamCenterPos, &spB0);
|
||||
dKyr_get_vectle_calc(&camera->lookat.center, &rain_packet->mCamCenterPos, &spB4);
|
||||
|
||||
f32 var_f1 = rain_packet->mCamEyePos.abs(camera->lookat.eye);
|
||||
var_f30 = rain_packet->mCamEyePos.abs(camera->lookat.eye);
|
||||
|
||||
f32 var_f30;
|
||||
if (var_f1 > 10.0f) {
|
||||
var_f30 = (var_f1 - 10.0f) / 50.0f;
|
||||
if (var_f30 > 10.0f) {
|
||||
var_f30 = (var_f30 - 10.0f) / 50.0f;
|
||||
if (var_f30 > 1.0f) {
|
||||
var_f30 = 1.0f;
|
||||
}
|
||||
|
|
@ -579,193 +586,182 @@ void dKyr_rain_move() {
|
|||
rain_packet->mCamEyePos.x = camera->lookat.eye.x;
|
||||
rain_packet->mCamEyePos.z = camera->lookat.eye.z;
|
||||
|
||||
f32 var_f1_2 = rain_packet->mCamEyePos.abs(camera->lookat.eye);
|
||||
f32 var_f2 = var_f1_2 / 20.0f;
|
||||
if (var_f2 > 1.0f) {
|
||||
var_f2 = 1.0f;
|
||||
var_f28 = rain_packet->mCamEyePos.abs(camera->lookat.eye);
|
||||
var_f28 = var_f28 / 20.0f;
|
||||
if (var_f28 > 1.0f) {
|
||||
var_f28 = 1.0f;
|
||||
}
|
||||
|
||||
spA4.y -= var_f2 * 15.0f;
|
||||
spA8.y += -(var_f28 * 15.0f);
|
||||
rain_packet->mCamEyePos = camera->lookat.eye;
|
||||
|
||||
f32 var_f1_3 = rain_packet->mCamCenterPos.abs(camera->lookat.center);
|
||||
|
||||
f32 var_f1_4;
|
||||
if (var_f1_3 > 10.0f) {
|
||||
var_f1_4 = (var_f1_3 - 10.0f) / 50.0f;
|
||||
if (var_f1_4 > 1.0f) {
|
||||
var_f1_4 = 1.0f;
|
||||
var_f29 = rain_packet->mCamCenterPos.abs(camera->lookat.center);
|
||||
if (var_f29 > 10.0f) {
|
||||
var_f29 = (var_f29 - 10.0f) / 50.0f;
|
||||
if (var_f29 > 1.0f) {
|
||||
var_f29 = 1.0f;
|
||||
}
|
||||
} else {
|
||||
var_f1_4 = 0.0f;
|
||||
var_f29 = 0.0f;
|
||||
}
|
||||
|
||||
cLib_addCalc(&rain_packet->mCenterDeltaMul, var_f30 * var_f1_4, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDeltaMul, var_f30 * var_f29, 0.2f, 0.1f, 0.01f);
|
||||
if (rain_packet->mCenterDeltaMul > 0.3f) {
|
||||
rain_packet->mCenterDeltaMul = 0.3f;
|
||||
}
|
||||
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.x, spB0.x, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.y, spB0.y, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.z, spB0.z, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.x, spB4.x, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.y, spB4.y, 0.2f, 0.1f, 0.01f);
|
||||
cLib_addCalc(&rain_packet->mCenterDelta.z, spB4.z, 0.2f, 0.1f, 0.01f);
|
||||
rain_packet->mCamCenterPos = camera->lookat.center;
|
||||
|
||||
dKy_set_eyevect_calc2(camera, &spE0, 700.0f, 600.0f);
|
||||
spD4.z = 0.0f;
|
||||
spD4.y = 0.0f;
|
||||
spD4.x = 0.0f;
|
||||
dKy_set_eyevect_calc2(camera, &spFC, 700.0f, 600.0f);
|
||||
spD8.x = spD8.y = spD8.z = 0.0f;
|
||||
|
||||
dKyw_get_wind_vec();
|
||||
dKyw_get_wind_pow();
|
||||
sp3C = dKyw_get_wind_vec();
|
||||
sp38 = dKyw_get_wind_pow();
|
||||
|
||||
rain_packet->field_0x36cc = 0;
|
||||
rain_packet->field_0x36c8 = 0;
|
||||
rain_packet->mStatus = 0;
|
||||
|
||||
var_r22 = 0;
|
||||
var_r23 = 0;
|
||||
var_r24 = 0;
|
||||
f32 var_f29;
|
||||
sp34 = 0;
|
||||
sp30 = 0;
|
||||
sp2C = 0;
|
||||
|
||||
if (strcmp(dComIfGp_getStartStageName(), "R_SP30") == 0) {
|
||||
if (dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 4) {
|
||||
var_r20 = 1;
|
||||
sp1C = 1;
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP107") == 0 &&
|
||||
dComIfGp_roomControl_getStayNo() == 1)
|
||||
{
|
||||
var_r20 = 2;
|
||||
sp1C = 2;
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
||||
var_r20 = 3;
|
||||
sp1C = 3;
|
||||
}
|
||||
|
||||
if (var_r20 == 0) {
|
||||
var_r24 = overhead_bg_chk();
|
||||
var_r23 = forward_overhead_bg_chk(&sp98, 700.0f);
|
||||
var_r22 = forward_overhead_bg_chk(&sp8C, 1400.0f);
|
||||
if (sp1C == 0) {
|
||||
sp34 = overhead_bg_chk();
|
||||
sp30 = forward_overhead_bg_chk(&sp9C, 700.0f);
|
||||
sp2C = forward_overhead_bg_chk(&sp90, 1400.0f);
|
||||
|
||||
if (var_r24) {
|
||||
rain_packet->mStatus |= 1;
|
||||
} else if (var_r23) {
|
||||
rain_packet->mStatus |= 2;
|
||||
if (sp34) {
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
} else if (sp30) {
|
||||
rain_packet->mStatus |= (u8)2;
|
||||
}
|
||||
} else {
|
||||
var_r21 = 1;
|
||||
rain_packet->mStatus |= 1;
|
||||
var_f29 = 1200.0f;
|
||||
sp24 = 1;
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
sp20 = 1200.0f;
|
||||
}
|
||||
|
||||
if (var_r24) {
|
||||
if (sp34) {
|
||||
cLib_addCalc(&rain_packet->mOverheadFade, 0.0f, 0.5f, 0.2f, 0.01f);
|
||||
} else {
|
||||
cLib_addCalc(&rain_packet->mOverheadFade, 1.0f, 0.1f, 0.1f, 0.001f);
|
||||
}
|
||||
|
||||
if (var_r23) {
|
||||
if (sp30) {
|
||||
cLib_addCalc(&rain_packet->mFwdFade1, 0.0f, 0.5f, 0.2f, 0.01f);
|
||||
} else {
|
||||
cLib_addCalc(&rain_packet->mFwdFade1, 1.0f, 0.1f, 0.1f, 0.001f);
|
||||
}
|
||||
|
||||
if (var_r22) {
|
||||
if (sp2C) {
|
||||
cLib_addCalc(&rain_packet->mFwdFade2, 0.0f, 0.5f, 0.2f, 0.01f);
|
||||
} else {
|
||||
cLib_addCalc(&rain_packet->mFwdFade2, 1.0f, 0.1f, 0.1f, 0.001f);
|
||||
}
|
||||
|
||||
f32 temp_f30 = 1.0f;
|
||||
for (int i = rain_packet->raincnt - 1; i >= 0; i--) {
|
||||
rain_packet->mRainEff[i].mBasePos.y = spE0.y;
|
||||
RAIN_EFF* effect = &rain_packet->mRainEff[i];
|
||||
rain_packet->mRainEff[i].mBasePos.y = spFC.y;
|
||||
|
||||
switch (rain_packet->mRainEff[i].mStatus) {
|
||||
case 0:
|
||||
effect->field_0x24 = -(cM_rndF(10.0f) + 35.5f);
|
||||
effect->mTimer = 0;
|
||||
effect->mBasePos = spE0;
|
||||
effect->mPosition.x = cM_rndFX(800.0f);
|
||||
effect->mPosition.y = cM_rndF(600.0f);
|
||||
effect->mPosition.z = cM_rndFX(800.0f);
|
||||
effect->mAlpha = 1.0f;
|
||||
effect->field_0x1c = cM_rndF(360.0f);
|
||||
effect->field_0x20 = cM_rndF(360.0f);
|
||||
rain_packet->mRainEff[i].field_0x24 = -(cM_rndF(10.0f) + 35.5f);
|
||||
rain_packet->mRainEff[i].mTimer = 0;
|
||||
rain_packet->mRainEff[i].mBasePos.x = spFC.x;
|
||||
rain_packet->mRainEff[i].mBasePos.y = spFC.y;
|
||||
rain_packet->mRainEff[i].mBasePos.z = spFC.z;
|
||||
rain_packet->mRainEff[i].mPosition.x = cM_rndFX(800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.y = cM_rndF(600.0f);
|
||||
rain_packet->mRainEff[i].mPosition.z = cM_rndFX(800.0f);
|
||||
rain_packet->mRainEff[i].mAlpha = 1.0f;
|
||||
rain_packet->mRainEff[i].field_0x1c = cM_rndF(360.0f);
|
||||
rain_packet->mRainEff[i].field_0x20 = cM_rndF(360.0f);
|
||||
|
||||
rain_bg_chk(rain_packet, i);
|
||||
effect->mStatus++;
|
||||
rain_packet->mRainEff[i].mStatus++;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
f32 target = cM_rndFX(0.1f);
|
||||
f32* temp_r27 = &effect->field_0x24;
|
||||
target = effect->field_0x24 - target;
|
||||
cLib_addCalc(&rain_packet->mRainEff[i].field_0x24, rain_packet->mRainEff[i].field_0x24 - cM_rndFX(0.1f), 0.5f, 0.1f, 0.01f);
|
||||
|
||||
cLib_addCalc(temp_r27, target, 0.5f, 0.1f, 0.01f);
|
||||
|
||||
effect->mPosition.x +=
|
||||
rain_packet->mRainEff[i].mPosition.x +=
|
||||
20.0f *
|
||||
((spC8.x + (10.0f * (rain_packet->mCenterDelta.x * rain_packet->mCenterDeltaMul))) +
|
||||
(spA4.x + (0.08f * (f32)(i & 7))));
|
||||
((spCC.x + (10.0f * (rain_packet->mCenterDelta.x * rain_packet->mCenterDeltaMul))) +
|
||||
(spA8.x + (0.08f * (f32)(i & 7))));
|
||||
|
||||
effect->mPosition.y +=
|
||||
rain_packet->mRainEff[i].mPosition.y +=
|
||||
((f32)(i & 7) * -2.0f) +
|
||||
(20.0f *
|
||||
(spA4.y +
|
||||
(spC8.y + ((rain_packet->mCenterDelta.y * rain_packet->mCenterDeltaMul) * 10.0f))));
|
||||
(spA8.y +
|
||||
(spCC.y + ((rain_packet->mCenterDelta.y * rain_packet->mCenterDeltaMul) * 10.0f))));
|
||||
|
||||
effect->mPosition.z +=
|
||||
rain_packet->mRainEff[i].mPosition.z +=
|
||||
20.0f *
|
||||
((spC8.z + (10.0f * (rain_packet->mCenterDelta.z * rain_packet->mCenterDeltaMul))) +
|
||||
(spA4.z + (0.08f * (f32)(i & 3))));
|
||||
((spCC.z + (10.0f * (rain_packet->mCenterDelta.z * rain_packet->mCenterDeltaMul))) +
|
||||
(spA8.z + (0.08f * (f32)(i & 3))));
|
||||
|
||||
spBC.x = effect->mBasePos.x + effect->mPosition.x;
|
||||
spBC.y = spE0.y;
|
||||
spBC.z = effect->mBasePos.z + effect->mPosition.z;
|
||||
spC0.x = rain_packet->mRainEff[i].mBasePos.x + rain_packet->mRainEff[i].mPosition.x;
|
||||
spC0.y = spFC.y;
|
||||
spC0.z = rain_packet->mRainEff[i].mBasePos.z + rain_packet->mRainEff[i].mPosition.z;
|
||||
|
||||
f32 var_f1_5 = spBC.abs(spE0);
|
||||
f32 var_f1 = spC0.abs(spFC);
|
||||
|
||||
if (effect->mTimer == 0) {
|
||||
if (var_f1_5 > 800.0f) {
|
||||
effect->mTimer = 10;
|
||||
*temp_r27 = -(cM_rndF(10.0f) + 35.5f);
|
||||
effect->mBasePos = spE0;
|
||||
if (rain_packet->mRainEff[i].mTimer == 0) {
|
||||
if (var_f1 > 800.0f) {
|
||||
rain_packet->mRainEff[i].mTimer = 10;
|
||||
rain_packet->mRainEff[i].field_0x24 = -(cM_rndF(10.0f) + 35.5f);
|
||||
rain_packet->mRainEff[i].mBasePos = spFC;
|
||||
|
||||
f32 var_f1_6 = spBC.abs(spE0);
|
||||
if (var_f1_6 > 850.0f) {
|
||||
effect->mPosition.x = cM_rndFX(800.0f);
|
||||
effect->mPosition.y = cM_rndFX(800.0f);
|
||||
effect->mPosition.z = cM_rndFX(800.0f);
|
||||
if (spC0.abs(spFC) > 850.0f) {
|
||||
rain_packet->mRainEff[i].mPosition.x = cM_rndFX(800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.y = cM_rndFX(800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.z = cM_rndFX(800.0f);
|
||||
} else {
|
||||
f32 temp_f31 = cM_rndFX(40.0f);
|
||||
get_vectle_calc(&spBC, &spE0, &spB0);
|
||||
var_f31 = cM_rndFX(40.0f);
|
||||
get_vectle_calc(&spC0, &spFC, &spB4);
|
||||
|
||||
effect->mPosition.x = spB0.x * (temp_f31 + 800.0f);
|
||||
effect->mPosition.y = spB0.y * (temp_f31 + 800.0f);
|
||||
effect->mPosition.z = spB0.z * (temp_f31 + 800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.x = spB4.x * (var_f31 + 800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.y = spB4.y * (var_f31 + 800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.z = spB4.z * (var_f31 + 800.0f);
|
||||
}
|
||||
|
||||
effect->mStatus = 1;
|
||||
rain_packet->mRainEff[i].mStatus = 1;
|
||||
rain_bg_chk(rain_packet, i);
|
||||
}
|
||||
|
||||
spBC.y = effect->mBasePos.y + effect->mPosition.y;
|
||||
if (spBC.y < effect->field_0x30 + 20.0f) {
|
||||
effect->mBasePos = spE0;
|
||||
effect->mPosition.x = cM_rndFX(800.0f);
|
||||
effect->mPosition.y = 200.0f;
|
||||
effect->mPosition.z = cM_rndFX(800.0f);
|
||||
spC0.y = rain_packet->mRainEff[i].mBasePos.y + rain_packet->mRainEff[i].mPosition.y;
|
||||
if (spC0.y < rain_packet->mRainEff[i].field_0x30 + 20.0f) {
|
||||
rain_packet->mRainEff[i].mBasePos = spFC;
|
||||
rain_packet->mRainEff[i].mPosition.x = cM_rndFX(800.0f);
|
||||
rain_packet->mRainEff[i].mPosition.y = 200.0f;
|
||||
rain_packet->mRainEff[i].mPosition.z = cM_rndFX(800.0f);
|
||||
rain_bg_chk(rain_packet, i);
|
||||
effect->mTimer = 10;
|
||||
rain_packet->mRainEff[i].mTimer = 10;
|
||||
}
|
||||
} else {
|
||||
effect->mTimer--;
|
||||
rain_packet->mRainEff[i].mTimer--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
spBC.x = effect->mBasePos.x + effect->mPosition.x;
|
||||
spBC.y = effect->mBasePos.y + effect->mPosition.y;
|
||||
spBC.z = effect->mBasePos.z + effect->mPosition.z;
|
||||
spC0.x = rain_packet->mRainEff[i].mBasePos.x + rain_packet->mRainEff[i].mPosition.x;
|
||||
spC0.y = rain_packet->mRainEff[i].mBasePos.y + rain_packet->mRainEff[i].mPosition.y;
|
||||
spC0.z = rain_packet->mRainEff[i].mBasePos.z + rain_packet->mRainEff[i].mPosition.z;
|
||||
|
||||
if (i > g_env_light.raincnt - 1) {
|
||||
if (i == rain_packet->raincnt - 1) {
|
||||
|
|
@ -773,69 +769,72 @@ void dKyr_rain_move() {
|
|||
}
|
||||
}
|
||||
|
||||
f32 var_f31 = 1.0f;
|
||||
if (var_r24 || rain_packet->mOverheadFade < 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
if (sp34 || rain_packet->mOverheadFade < 1.0f) {
|
||||
cXyz sp80;
|
||||
sp80 = spBC;
|
||||
f32 sp10 = 800.0f;
|
||||
sp80 = spC0;
|
||||
sp80.y = camera->lookat.eye.y;
|
||||
|
||||
if (camera->lookat.eye.abs(sp80) < 800.0f) {
|
||||
if (camera->lookat.eye.abs(sp80) < sp10) {
|
||||
var_f31 *= rain_packet->mOverheadFade * 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r23 || rain_packet->mFwdFade1 < 1.0f) {
|
||||
if (sp30 || rain_packet->mFwdFade1 < 1.0f) {
|
||||
cXyz sp74;
|
||||
sp74 = spBC;
|
||||
sp74.y = sp98.y;
|
||||
f32 sp0C = 550.0f;
|
||||
sp74 = spC0;
|
||||
sp74.y = sp9C.y;
|
||||
|
||||
if (sp98.abs(sp74) < 550.0f) {
|
||||
if (sp9C.abs(sp74) < sp0C) {
|
||||
var_f31 *= rain_packet->mFwdFade1;
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r22 || rain_packet->mFwdFade2 < 1.0f) {
|
||||
if (sp2C || rain_packet->mFwdFade2 < 1.0f) {
|
||||
cXyz sp68;
|
||||
sp68 = spBC;
|
||||
sp68.y = sp8C.y;
|
||||
f32 sp08 = 550.0f;
|
||||
sp68 = spC0;
|
||||
sp68.y = sp90.y;
|
||||
|
||||
if (sp8C.abs(sp68) < 550.0f) {
|
||||
if (sp90.abs(sp68) < sp08) {
|
||||
var_f31 *= rain_packet->mFwdFade2;
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r21) {
|
||||
if (sp24) {
|
||||
cXyz sp5C;
|
||||
if (strcmp(dComIfGp_getStartStageName(), "R_SP30") == 0) {
|
||||
if (dComIfGp_roomControl_getStayNo() == 0) {
|
||||
if (spBC.x > -2680.0f && spBC.z < 2200.0f) {
|
||||
if (spC0.x > -2680.0f && spC0.z < 2200.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
} else if (dComIfGp_roomControl_getStayNo() == 4 && spBC.z > 1600.0f) {
|
||||
} else if (dComIfGp_roomControl_getStayNo() == 4 && spC0.z > 1600.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
} else if (var_r20 == 2) {
|
||||
} else if (sp1C == 2) {
|
||||
cXyz sp50;
|
||||
sp50.x = 27453.0f;
|
||||
sp50.y = spBC.y;
|
||||
sp50.y = spC0.y;
|
||||
sp50.z = 8528.0f;
|
||||
|
||||
if (spBC.y < 1300.0f || player->current.pos.y < 1100.0f) {
|
||||
if (spBC.abs(sp50) > 80.0f) {
|
||||
if (spC0.y < 1300.0f || player->current.pos.y < 1100.0f) {
|
||||
if (spC0.abs(sp50) > 80.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
} else {
|
||||
if (spBC.abs(sp50) > 500.0f) {
|
||||
if (spC0.abs(sp50) > 500.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
}
|
||||
} else if (var_r20 == 3) {
|
||||
} else if (sp1C == 3) {
|
||||
cXyz sp44;
|
||||
sp44.x = -228.0f;
|
||||
sp44.y = spBC.y;
|
||||
sp44.y = spC0.y;
|
||||
sp44.z = 795.0f;
|
||||
|
||||
if (spBC.abs(sp44) < 1500.0f) {
|
||||
if (spC0.abs(sp44) < 1500.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
|
||||
|
|
@ -843,40 +842,40 @@ void dKyr_rain_move() {
|
|||
var_f31 = 0.0f;
|
||||
}
|
||||
} else {
|
||||
sp5C = spBC;
|
||||
sp5C = spC0;
|
||||
sp5C.y = 0.0f;
|
||||
|
||||
if (sp5C.abs() < var_f29) {
|
||||
if (sp5C.abs() < sp20) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP113") == 0 &&
|
||||
dComIfGp_roomControl_getStayNo() == 1)
|
||||
{
|
||||
if (spBC.z < 5100.0f || (spBC.x < -3250.0f && spBC.y < -50.0f) ||
|
||||
(spBC.x < -2700.0f && spBC.z > 15750.0f))
|
||||
if (spC0.z < 5100.0f || (spC0.x < -3250.0f && spC0.y < -50.0f) ||
|
||||
(spC0.x < -2700.0f && spC0.z > 15750.0f))
|
||||
{
|
||||
var_f31 = 0.0f;
|
||||
rain_packet->mStatus |= 1;
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "D_MN09") == 0 &&
|
||||
dComIfGp_roomControl_getStayNo() == 9)
|
||||
{
|
||||
if (spBC.x < -3680.0f && spBC.z > -11975.0f && spBC.z < -10530.0f) {
|
||||
if (spC0.x < -3680.0f && spC0.z > -11975.0f && spC0.z < -10530.0f) {
|
||||
var_f31 = 0.0f;
|
||||
rain_packet->mStatus |= 1;
|
||||
} else if (spBC.x > 3350.0f && spBC.z > -13027.0f && spBC.z < -11430.0f) {
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
} else if (spC0.x > 3350.0f && spC0.z > -13027.0f && spC0.z < -11430.0f) {
|
||||
var_f31 = 0.0f;
|
||||
rain_packet->mStatus |= 1;
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP107") == 0 &&
|
||||
dComIfGp_roomControl_getStayNo() == 2 && spBC.z > 36900.0f)
|
||||
dComIfGp_roomControl_getStayNo() == 2 && spC0.z > 36900.0f)
|
||||
{
|
||||
var_f31 = 0.0f;
|
||||
rain_packet->mStatus |= 1;
|
||||
rain_packet->mStatus |= (u8)1;
|
||||
}
|
||||
|
||||
effect->mAlpha = var_f31 * (temp_f30 + cM_rndFX(0.5f));
|
||||
rain_packet->mRainEff[i].mAlpha = var_f31 * (1.0f + cM_rndFX(0.5f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1112,22 +1112,19 @@ void renderingPlusDoorAndCursor_c::drawTreasure() {
|
|||
int group_num = getIconGroupNumber(tmp);
|
||||
|
||||
if (group_num != 0) {
|
||||
JUT_ASSERT(0xaf9, typeGroupData_p != 0);
|
||||
|
||||
f32 icon_size = getIconSize(tmp) * mCmPerTexel;
|
||||
f32 icon_size_2 = icon_size;
|
||||
|
||||
GXInvalidateTexAll();
|
||||
GXTexObj* texObj_p =
|
||||
dMpath_n::m_texObjAgg.getTexObjPointer(l_treasureDispList[i].field_0x4);
|
||||
GXLoadTexObj(texObj_p, GX_TEXMAP0);
|
||||
GXLoadTexObj(dMpath_n::m_texObjAgg.getTexObjPointer(l_treasureDispList[i].field_0x4), GX_TEXMAP0);
|
||||
GXColor sp18;
|
||||
const GXColor* temp_r3_2 = l_treasureDispList[i].field_0x8;
|
||||
sp18.r = temp_r3_2->r;
|
||||
sp18.g = temp_r3_2->g;
|
||||
sp18.b = temp_r3_2->b;
|
||||
sp18.a = temp_r3_2->a;
|
||||
sp18 = *l_treasureDispList[i].field_0x8;
|
||||
|
||||
GXSetTevColor(GX_TEVREG1, sp18);
|
||||
|
||||
sp18.r += 4;
|
||||
sp18.r += (u8)4;
|
||||
GXSetTevColor(GX_TEVREG2, sp18);
|
||||
|
||||
for (int j = 0; j < group_num && typeGroupData_p != NULL; j++) {
|
||||
|
|
@ -1142,7 +1139,7 @@ void renderingPlusDoorAndCursor_c::drawTreasure() {
|
|||
|
||||
GXSetTevColor(GX_TEVREG1, sp18);
|
||||
|
||||
sp18.r += 4;
|
||||
sp18.r += (u8)4;
|
||||
GXSetTevColor(GX_TEVREG2, sp18);
|
||||
}
|
||||
|
||||
|
|
@ -1150,7 +1147,7 @@ void renderingPlusDoorAndCursor_c::drawTreasure() {
|
|||
isDrawIconSingle(typeGroupData_p->getConstDataPointer(), mRoomNoSingle,
|
||||
mRenderedFloor, rend_all_room, true, icon_pos))
|
||||
{
|
||||
drawIconSingle(*icon_pos, icon_size, icon_size);
|
||||
drawIconSingle(*icon_pos, icon_size, icon_size_2);
|
||||
}
|
||||
|
||||
typeGroupData_p = getNextData(typeGroupData_p);
|
||||
|
|
@ -1191,22 +1188,19 @@ void renderingPlusDoorAndCursor_c::drawTreasureAfterPlayer() {
|
|||
int group_num = getIconGroupNumber(tmp);
|
||||
|
||||
if (group_num != 0) {
|
||||
JUT_ASSERT(0xb7e, typeGroupData_p != 0);
|
||||
|
||||
f32 icon_size = getIconSize(tmp) * mCmPerTexel;
|
||||
f32 icon_size_2 = icon_size;
|
||||
|
||||
GXInvalidateTexAll();
|
||||
GXTexObj* texObj_p =
|
||||
dMpath_n::m_texObjAgg.getTexObjPointer(l_treasureDispList[i].field_0x4);
|
||||
GXLoadTexObj(texObj_p, GX_TEXMAP0);
|
||||
GXLoadTexObj(dMpath_n::m_texObjAgg.getTexObjPointer(l_treasureDispList[i].field_0x4), GX_TEXMAP0);
|
||||
GXColor sp18;
|
||||
const GXColor* temp_r3_2 = l_treasureDispList[i].field_0x8;
|
||||
sp18.r = temp_r3_2->r;
|
||||
sp18.g = temp_r3_2->g;
|
||||
sp18.b = temp_r3_2->b;
|
||||
sp18.a = temp_r3_2->a;
|
||||
sp18 = *l_treasureDispList[i].field_0x8;
|
||||
|
||||
GXSetTevColor(GX_TEVREG1, sp18);
|
||||
|
||||
sp18.r += 4;
|
||||
sp18.r += (u8)4;
|
||||
GXSetTevColor(GX_TEVREG2, sp18);
|
||||
|
||||
for (int j = 0; j < group_num && typeGroupData_p != NULL; j++) {
|
||||
|
|
@ -1221,7 +1215,7 @@ void renderingPlusDoorAndCursor_c::drawTreasureAfterPlayer() {
|
|||
|
||||
GXSetTevColor(GX_TEVREG1, sp18);
|
||||
|
||||
sp18.r += 4;
|
||||
sp18.r += (u8)4;
|
||||
GXSetTevColor(GX_TEVREG2, sp18);
|
||||
}
|
||||
|
||||
|
|
@ -1229,7 +1223,7 @@ void renderingPlusDoorAndCursor_c::drawTreasureAfterPlayer() {
|
|||
isDrawIconSingle(typeGroupData_p->getConstDataPointer(), mRoomNoSingle,
|
||||
mRenderedFloor, rend_all_room, true, icon_pos))
|
||||
{
|
||||
drawIconSingle(*icon_pos, icon_size, icon_size);
|
||||
drawIconSingle(*icon_pos, icon_size, icon_size_2);
|
||||
}
|
||||
|
||||
typeGroupData_p = getNextData(typeGroupData_p);
|
||||
|
|
|
|||
|
|
@ -404,7 +404,7 @@ bool dMenu_StageMapCtrl_c::getTreasureList(f32* o_posX, f32* o_posY, s8* param_2
|
|||
Vec sp10;
|
||||
sp10 = *field_0x8c->getPos();
|
||||
|
||||
if (getRendPointer(0)->isDrawIconSingle(field_0x8c->getDataPointer(), (s8)dComIfGp_roomControl_getStayNo(), field_0xf7, true, true, &sp10)) {
|
||||
if (getRendPointer(0)->isDrawIconSingle(field_0x8c->getDataPointer(), (s8)dComIfGp_roomControl_getStayNo(), field_0xf7, 1, true, &sp10)) {
|
||||
cnvPosTo2Dpos(sp10.x, sp10.z, o_posX, o_posY);
|
||||
|
||||
if (param_2 != NULL) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue