From 57c9d6430818186504cd0457313a0197e0f4b84c Mon Sep 17 00:00:00 2001 From: Max Roncace Date: Thu, 7 Aug 2025 00:46:07 -0400 Subject: [PATCH] Misc. framework/d/ improvements (#2572) --- config/GZ2E01/symbols.txt | 3 +- configure.py | 2 +- include/JSystem/JParticle/JPAEmitter.h | 2 +- include/d/d_demo.h | 34 +-- src/d/d_demo.cpp | 18 +- src/d/d_kankyo_rain.cpp | 327 ++++++++++++------------- src/d/d_map_path_dmap.cpp | 38 ++- src/d/d_menu_dmap_map.cpp | 2 +- 8 files changed, 212 insertions(+), 214 deletions(-) diff --git a/config/GZ2E01/symbols.txt b/config/GZ2E01/symbols.txt index 13c4dee20a8..3440735e06c 100644 --- a/config/GZ2E01/symbols.txt +++ b/config/GZ2E01/symbols.txt @@ -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 diff --git a/configure.py b/configure.py index 475a38627c8..c6cf00955cd 100755 --- a/configure.py +++ b/configure.py @@ -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"), diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 63322b84128..b1fae07113a 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -160,7 +160,7 @@ public: void setGlobalParticleScale(f32 scaleX, f32 scaleY) { mGlobalPScl.set(scaleX, scaleY); } - void getGlobalParticleScale(JGeometry::TVec3& scale) { + void getGlobalParticleScale(JGeometry::TVec3& scale) const { scale.set(mGlobalPScl.x, mGlobalPScl.y, 1.0f); } void setGlobalScale(const JGeometry::TVec3& scale) { diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 6ff7317a324..89e85620dd1 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -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; } diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index b118b85cfa6..554616e44ec 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -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); diff --git a/src/d/d_kankyo_rain.cpp b/src/d/d_kankyo_rain.cpp index ac04aeb9575..00e07da945c 100644 --- a/src/d/d_kankyo_rain.cpp +++ b/src/d/d_kankyo_rain.cpp @@ -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)); } } } diff --git a/src/d/d_map_path_dmap.cpp b/src/d/d_map_path_dmap.cpp index 0ba1a45be58..5c50990034b 100644 --- a/src/d/d_map_path_dmap.cpp +++ b/src/d/d_map_path_dmap.cpp @@ -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); diff --git a/src/d/d_menu_dmap_map.cpp b/src/d/d_menu_dmap_map.cpp index 6ff6154c9b7..79d48c6081e 100644 --- a/src/d/d_menu_dmap_map.cpp +++ b/src/d/d_menu_dmap_map.cpp @@ -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) {