some more kankyo work

This commit is contained in:
TakaRikka 2023-08-01 00:11:24 -07:00
parent 854fb607b9
commit 9773c9dbf1
12 changed files with 411 additions and 106 deletions

View File

@ -9,13 +9,11 @@
#include "dolphin/types.h"
#include "m_Do/m_Do_lib.h"
struct J3DGXColorS10 {
struct J3DGXColorS10 : public GXColorS10 {
/* 8000E460 */ J3DGXColorS10() {}
_GXColorS10 mColor;
};
struct J3DGXColor : public _GXColor {
struct J3DGXColor : public GXColor {
/* 8000E538 */ J3DGXColor() {}
};
@ -542,10 +540,25 @@ private:
extern const u16 j3dDefaultZModeID;
inline u16 calcZModeID(u8 param_0, u8 param_1, u8 param_2) {
return param_0 * 0x10 + param_2 + param_1 * 2;
}
struct J3DZModeInfo {
/* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1;
/* 0x2 */ u8 field_0x2;
};
struct J3DZMode {
J3DZMode() {
mZModeID = j3dDefaultZModeID;
}
void setZModeInfo(const J3DZModeInfo& info) {
mZModeID = calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2);
}
/* 0x0 */ u16 mZModeID;
};
@ -646,7 +659,7 @@ public:
/* 8000DF4C */ virtual bool getBlend();
/* 80317374 */ virtual void setZMode(J3DZMode const*);
/* 8000E014 */ virtual void setZMode(J3DZMode);
/* 8000DF44 */ virtual bool getZMode();
/* 8000DF44 */ virtual J3DZMode* getZMode();
/* 80317378 */ virtual void setZCompLoc(u8 const*);
/* 8000E010 */ virtual void setZCompLoc(u8);
/* 8000DF3C */ virtual bool getZCompLoc() const;
@ -708,7 +721,7 @@ public:
/* 80321A00 */ virtual bool getBlend();
/* 80321A14 */ virtual void setZMode(J3DZMode const*);
/* 80321A08 */ virtual void setZMode(J3DZMode);
/* 80321A20 */ virtual bool getZMode();
/* 80321A20 */ virtual J3DZMode* getZMode();
/* 80321A30 */ virtual void setZCompLoc(u8 const*);
/* 80321A28 */ virtual void setZCompLoc(u8);
/* 80321A3C */ virtual bool getZCompLoc() const;
@ -750,7 +763,7 @@ public:
/* 80321B64 */ virtual bool getBlend();
/* 80321B78 */ virtual void setZMode(J3DZMode const*);
/* 80321B6C */ virtual void setZMode(J3DZMode);
/* 80321B84 */ virtual bool getZMode();
/* 80321B84 */ virtual J3DZMode* getZMode();
/* 80321B94 */ virtual void setZCompLoc(u8 const*);
/* 80321B8C */ virtual void setZCompLoc(u8);
/* 80321BA0 */ virtual bool getZCompLoc() const;

View File

@ -3392,7 +3392,7 @@ inline void dComIfGd_setListDark() {
g_dComIfG_gameInfo.drawlist.setXluListDark();
}
inline void dComIfGd_setListInvisible() {
inline void dComIfGd_setListInvisisble() {
g_dComIfG_gameInfo.drawlist.setOpaListInvisible();
g_dComIfG_gameInfo.drawlist.setXluListInvisible();
}

View File

@ -235,6 +235,7 @@ class stage_pselect_info_class;
class stage_envr_info_class;
class stage_vrbox_info_class;
class stage_plight_info_class;
class kytag08_class;
struct dKy_pol_arg_struct {
u8 data[8];
@ -384,7 +385,7 @@ public:
/* 0x1054 */ int field_0x1054;
/* 0x1058 */ dKankyo_evil_Packet* mpEvilPacket;
/* 0x105C */ mDoExt_btkAnm* field_0x105c;
/* 0x1060 */ fopAc_ac_c* field_0x1060;
/* 0x1060 */ kytag08_class* field_0x1060;
/* 0x1064 */ Vec field_0x1064;
/* 0x1070 */ cXyz mSunPos2;
/* 0x107C */ cXyz mPLightNearPos;
@ -403,20 +404,11 @@ public:
/* 0x10FA */ s16 field_0x10fa;
/* 0x10FC */ s16 field_0x10fc;
/* 0x10FE */ s16 field_0x10fe;
/* 0x1100 */ _GXColorS10 mActorAmbience;
/* 0x1108 */ _GXColorS10 mTerrainAmbienceBG0;
/* 0x1110 */ s16 mTerrainAmbienceBG1_R;
/* 0x1112 */ s16 mTerrainAmbienceBG1_G;
/* 0x1114 */ s16 mTerrainAmbienceBG1_B;
/* 0x1116 */ s16 mWaterSurfaceAlphaA;
/* 0x1118 */ s16 mTerrainAmbienceBG2_R;
/* 0x111A */ s16 mTerrainAmbienceBG2_G;
/* 0x111C */ s16 mTerrainAmbienceBG2_B;
/* 0x111E */ s16 mAuxAlphaA2;
/* 0x1120 */ s16 mTerrainAmbienceBG3_R;
/* 0x1122 */ s16 mTerrainAmbienceBG3_G;
/* 0x1124 */ s16 mTerrainAmbienceBG3_B;
/* 0x1126 */ s16 mFakeFogA;
/* 0x1100 */ GXColorS10 mActorAmbience;
/* 0x1108 */ GXColorS10 mTerrainAmbienceBG0;
/* 0x1110 */ GXColorS10 mTerrainAmbienceBG1;
/* 0x1118 */ GXColorS10 mTerrainAmbienceBG2;
/* 0x1120 */ GXColorS10 mTerrainAmbienceBG3;
/* 0x1128 */ GXColorS10 field_0x1128;
/* 0x1130 */ u8 field_0x1130[0x28];
/* 0x1158 */ GXColorS10 mFogColor;

View File

@ -1,6 +1,22 @@
#ifndef D_A_KYTAG08_H
#define D_A_KYTAG08_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class kytag08_class : public fopAc_ac_c {
public:
/* 0x568 */ J3DModel* mpModel;
/* 0x56C */ mDoExt_btkAnm field_0x56c;
/* 0x584 */ mDoExt_brkAnm field_0x584;
/* 0x59C */ JPABaseEmitter* field_0x59c;
/* 0x5A0 */ JPABaseEmitter* field_0x5a0;
/* 0x5A4 */ request_of_phase_process_class mPhase;
/* 0x5AC */ cXyz field_0x5ac;
/* 0x5B8 */ cXyz field_0x5b8;
/* 0x5C4 */ cXyz field_0x5c4;
/* 0x5D0 */ f32 field_0x5d0;
/* 0x5D4 */ int field_0x5d4;
/* 0x5D8 */ u8 field_0x5d8;
};
#endif /* D_A_KYTAG08_H */

View File

@ -2221,7 +2221,7 @@ asm void J3DPEBlockFull::setZMode(J3DZMode const* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool J3DPEBlockFull::getZMode() {
asm J3DZMode* J3DPEBlockFull::getZMode() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getZMode__14J3DPEBlockFullFv.s"
}
@ -2443,7 +2443,7 @@ asm void J3DPEBlockFogOff::setZMode(J3DZMode const* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool J3DPEBlockFogOff::getZMode() {
asm J3DZMode* J3DPEBlockFogOff::getZMode() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getZMode__16J3DPEBlockFogOffFv.s"
}

View File

@ -78,7 +78,7 @@ static int daVrbox_color_set(vrbox_class* i_this) {
g_env_light.mVrboxInvisible = false;
J3DModelData* modelData = i_this->mpSoraModel->getModelData();
GXColorS10 color;
J3DGXColorS10 color;
J3DMaterial* material_0 = modelData->getMaterialNodePointer(0);
if (material_0 != NULL) {
@ -89,7 +89,7 @@ static int daVrbox_color_set(vrbox_class* i_this) {
color.g = g_env_light.mSkyColor.g;
color.b = g_env_light.mSkyColor.b;
color.a = 255;
material_0->setTevColor(0, (J3DGXColorS10*)&color);
material_0->setTevColor(0, &color);
}
J3DMaterial* material_1 = modelData->getMaterialNodePointer(1);
@ -101,7 +101,7 @@ static int daVrbox_color_set(vrbox_class* i_this) {
color.g = g_env_light.mCloudInnerHazeColor.g;
color.b = g_env_light.mCloudInnerHazeColor.b;
color.a = g_env_light.mCloudInnerHazeColor.a;
material_1->setTevColor(0, (J3DGXColorS10*)&color);
material_1->setTevColor(0, &color);
}
return 1;

View File

@ -609,13 +609,13 @@ static void daKytag06_type_07_Execute(kytag06_class* i_this) {
if (camera != NULL) {
if (camera->mLookat.mEye.y > 0.0f) {
dKy_BossLight_set(&spX, &color, i_this->mWindPower * 2.0f, 0);
g_env_light.mTerrainAmbienceBG3_R = (u8)(i_this->mWindPower * 230.0f + 25.0f);
g_env_light.mTerrainAmbienceBG3_G = (u8)(i_this->mWindPower * 215.0f + 30.0f);
g_env_light.mTerrainAmbienceBG3_B = (u8)(i_this->mWindPower * 155.0f + 25.0f);
g_env_light.mTerrainAmbienceBG3.r = (u8)(i_this->mWindPower * 230.0f + 25.0f);
g_env_light.mTerrainAmbienceBG3.g = (u8)(i_this->mWindPower * 215.0f + 30.0f);
g_env_light.mTerrainAmbienceBG3.b = (u8)(i_this->mWindPower * 155.0f + 25.0f);
} else {
g_env_light.mTerrainAmbienceBG3_R = 0;
g_env_light.mTerrainAmbienceBG3_G = 0;
g_env_light.mTerrainAmbienceBG3_B = 0;
g_env_light.mTerrainAmbienceBG3.r = 0;
g_env_light.mTerrainAmbienceBG3.g = 0;
g_env_light.mTerrainAmbienceBG3.b = 0;
g_env_light.mThunderEff.mMode = 0;
}
}
@ -777,9 +777,9 @@ static void daKytag06_type_06_Execute(kytag06_class* i_this) {
break;
}
g_env_light.mTerrainAmbienceBG3_R = (u8)(i_this->mWindPower * 245.0f + 10.0f);
g_env_light.mTerrainAmbienceBG3_G = (u8)(i_this->mWindPower * 185.0f + 15.0f);
g_env_light.mTerrainAmbienceBG3_B = (u8)(i_this->mWindPower * 130.0f + 20.0f);
g_env_light.mTerrainAmbienceBG3.r = (u8)(i_this->mWindPower * 245.0f + 10.0f);
g_env_light.mTerrainAmbienceBG3.g = (u8)(i_this->mWindPower * 185.0f + 15.0f);
g_env_light.mTerrainAmbienceBG3.b = (u8)(i_this->mWindPower * 130.0f + 20.0f);
static cXyz c_pos(0.0f, 0.0f, 0.0f);

View File

@ -5,60 +5,14 @@
#include "rel/d/a/kytag/d_a_kytag08/d_a_kytag08.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct kytag08_class {};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
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 Vec {};
struct Z2EnvSeMgr {
/* 802C92EC */ void startFogWipeTrigger(Vec*);
/* 802C93A0 */ void setFogWipeWidth(f32);
};
struct JPABaseEmitter {
/* 8027EC60 */ void deleteAllParticle();
};
struct J3DModelData {};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 8085B23C */ ~J3DFrameCtrl();
};
//
// Forward References:
//
@ -94,17 +48,10 @@ extern "C" void startFogWipeTrigger__10Z2EnvSeMgrFP3Vec();
extern "C" void setFogWipeWidth__10Z2EnvSeMgrFf();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSVECSquareDistance();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
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 u8 g_mEnvSeMgr[780];
extern "C" extern u32 __float_nan;
//
// Declarations:
@ -422,7 +369,8 @@ static asm void daKytag08_Create(fopAc_ac_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
// asm J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/kytag/d_a_kytag08/d_a_kytag08/__dt__12J3DFrameCtrlFv.s"
}

View File

@ -20,7 +20,7 @@ static int daKytag15_Draw(kytag15_class* i_this) {
scale.z = 0.00524f;
if (i_this->mpModel != NULL && i_this->field_0x590 > 0.0f) {
GXColorS10 color;
J3DGXColorS10 color;
J3DMaterial* mat_p = i_this->mpModel->getModelData()->getMaterialNodePointer(0);
color.b = 0;
color.g = 0;
@ -33,7 +33,7 @@ static int daKytag15_Draw(kytag15_class* i_this) {
color.a = (color.a + 255.0f) * i_this->field_0x590 + -255.0f;
mat_p->setTevColor(0, (J3DGXColorS10*)&color);
mat_p->setTevColor(0, &color);
i_this->mpModel->setBaseScale(scale);
i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());

View File

@ -105,7 +105,7 @@ int daObjOnsen_c::Draw() {
dKy_bg_MAxx_proc(mpModel[0]);
mDoExt_modelUpdateDL(mpModel[0]);
mpBtk->entry(mpModel[1]->getModelData());
dComIfGd_setListInvisible();
dComIfGd_setListInvisisble();
dKy_bg_MAxx_proc(mpModel[1]);
mDoExt_modelUpdateDL(mpModel[1]);
dComIfGd_setList();

View File

@ -19,6 +19,7 @@
#include "dolphin/types.h"
#include "global.h"
#include "m_Do/m_Do_audio.h"
#include "rel/d/a/kytag/d_a_kytag08/d_a_kytag08.h"
//
// Types:
@ -5027,19 +5028,21 @@ SECTION_DEAD static char const* const pad_80394F35 = "\0\0";
#pragma pop
/* 80450708-8045070C 000188 0004+00 1/1 0/0 0/0 .sdata l_zmodeUpEnable */
SECTION_SDATA static u32 l_zmodeUpEnable = 0x01030100;
SECTION_SDATA static J3DZModeInfo l_zmodeUpEnable = {1, 3, 1};
/* 8045070C-80450710 00018C 0004+00 1/1 0/0 0/0 .sdata l_zmodeUpDisable */
SECTION_SDATA static u32 l_zmodeUpDisable = 0x01030000;
SECTION_SDATA static J3DZModeInfo l_zmodeUpDisable = {1, 3, 0};
/* 80450710-80450718 000190 0008+00 1/1 0/0 0/0 .sdata l_alphaCompInfoOPA */
SECTION_SDATA static u8 l_alphaCompInfoOPA[8] = {
0x07, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00,
SECTION_SDATA static J3DAlphaCompInfo l_alphaCompInfoOPA[2] = {
{0x07, 0x00, 0x01, 0x07},
{0x00, 0x00, 0x00, 0x00},
};
/* 80450718-80450720 000198 0008+00 1/1 0/0 0/0 .sdata l_alphaCompInfo */
SECTION_SDATA static u8 l_alphaCompInfo[8] = {
0x04, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00,
SECTION_SDATA static J3DAlphaCompInfo l_alphaCompInfo[2] = {
{0x04, 0x80, 0x00, 0x03},
{0xFF, 0x00, 0x00, 0x00},
};
/* 80453E10-80453E14 002410 0004+00 1/1 0/0 0/0 .sdata2 @10916 */
@ -5098,6 +5101,338 @@ SECTION_SDATA2 static f32 lit_10932[1 + 1 /* padding */] = {
};
/* 801ACD24-801ADBBC 1A7664 0E98+00 0/0 0/0 7/7 .text dKy_bg_MAxx_proc__FPv */
// stack / couple instructions at the end
#ifdef NONMATCHING
void dKy_bg_MAxx_proc(void* param_0) {
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
s8 cam_id = dComIfGp_getWindow(0)->getCameraID();
camera_class* camera_p = dComIfGp_getCamera(cam_id);
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
if (param_0 != NULL && player_p != NULL) {
J3DModelData* modelData = static_cast<J3DModel*>(param_0)->getModelData();
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
J3DMaterial* mat_p = modelData->getMaterialNodePointer(i);
const char* mat_name = modelData->getMaterialName()->getName(i);
if (mat_name[3] == 'M' && mat_name[4] == 'A') {
if (memcmp(&mat_name[3], "MA06", 4) == 0) {
dKy_murky_set(mat_p);
}
if (memcmp(&mat_name[3], "MA03", 4) == 0 || memcmp(&mat_name[3], "MA09", 4) == 0 ||
memcmp(&mat_name[3], "MA17", 4) == 0 || memcmp(&mat_name[3], "MA19", 4) == 0)
{
if (mat_name[5] != '1') {
dComIfGd_setListDarkBG();
} else if (mat_name[6] == '9') {
dComIfGd_setListInvisisble();
}
if (mat_p->getFog() != NULL) {
J3DFogInfo* fog_info_p = mat_p->getFog()->getFogInfo();
if (fog_info_p != NULL) {
if (mat_name[5] == '0' && mat_name[6] == '9') {
fog_info_p->field_0x0 = 6;
J3DGXColor k_color;
k_color.r = 245.0f - g_env_light.mWaterSurfaceShineRate * 45.0f;
k_color.g = 245.0f - g_env_light.mWaterSurfaceShineRate * 45.0f;
k_color.b = 245.0f - g_env_light.mWaterSurfaceShineRate * 35.0f;
k_color.a = 255;
mat_p->setTevKColor(1, &k_color);
} else {
fog_info_p->field_0x0 = 7;
J3DGXColorS10 color;
J3DGXColor k_color;
color.r = g_env_light.mTerrainAmbienceBG2.r;
color.g = g_env_light.mTerrainAmbienceBG2.g;
color.b = g_env_light.mTerrainAmbienceBG2.b;
color.a = g_env_light.mTerrainAmbienceBG2.a;
k_color.a = g_env_light.mTerrainAmbienceBG1.a;
k_color.r = 0;
k_color.g = 0;
k_color.b = 0;
mat_p->setTevColor(1, &color);
mat_p->setTevKColor(3, &k_color);
}
}
}
}
if (memcmp(&mat_name[3], "MA07", 4) == 0) {
J3DGXColorS10 color;
color.r = (u8)(g_env_light.mThunderEff.field_0x8 * 100.0f);
color.g = (u8)(g_env_light.mThunderEff.field_0x8 * 100.0f);
color.b = (u8)(g_env_light.mThunderEff.field_0x8 * 100.0f);
color.a = 255;
mat_p->setTevColor(0, &color);
}
if (memcmp(&mat_name[3], "MA10", 4) == 0 || memcmp(&mat_name[3], "MA02", 4) == 0) {
dComIfGd_setListInvisisble();
if (mat_p->getTexGenBlock()->getTexMtx(0) != NULL) {
J3DTexMtxInfo* tex_mtx_inf =
&mat_p->getTexGenBlock()->getTexMtx(0)->getTexMtxInfo();
if (tex_mtx_inf != NULL) {
dKyw_get_wind_vec();
Mtx sp170;
if (mat_name[6] == '2') {
C_MTXLightPerspective(sp170, dComIfGd_getView()->mFovy,
camera_p->mAspect, 1.0f, 1.0f, -0.01f, 0.0f);
} else {
C_MTXLightPerspective(sp170, dComIfGd_getView()->mFovy,
camera_p->mAspect, 0.49f, -0.49f, 0.5f, 0.5f);
}
tex_mtx_inf->setEffectMtx(sp170);
modelData->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
}
}
if (memcmp(&mat_name[3], "MA00", 4) == 0 || memcmp(&mat_name[3], "MA01", 4) == 0 ||
memcmp(&mat_name[3], "MA04", 4) == 0 || memcmp(&mat_name[3], "MA16", 4) == 0)
{
J3DGXColor k_color;
k_color.r = g_env_light.mFogDensity;
k_color.g = 0;
k_color.b = 0;
if (mat_name[6] == '1') {
J3DPEBlock* peblock_p = mat_p->getPEBlock();
mat_p->change();
if (dKy_camera_water_in_status_check()) {
k_color.a = 255;
peblock_p->getAlphaComp()->setAlphaCompInfo(l_alphaCompInfo);
peblock_p->getZMode()->setZModeInfo(l_zmodeUpEnable);
} else {
k_color.a = 0;
peblock_p->getAlphaComp()->setAlphaCompInfo(l_alphaCompInfoOPA);
peblock_p->getZMode()->setZModeInfo(l_zmodeUpDisable);
}
} else {
k_color.a = 0;
}
mat_p->setTevKColor(1, &k_color);
}
if (memcmp(&mat_name[3], "MA11", 4) == 0) {
if (dKy_darkworld_check()) {
dComIfGd_setListDarkBG();
J3DGXColorS10 color;
color.r = 170;
color.g = 160;
color.b = 255;
color.a = 255;
mat_p->setTevColor(1, &color);
color.r = 50;
color.g = 20;
color.b = 90;
color.a = 255;
mat_p->setTevColor(2, &color);
} else {
cXyz spA4;
cXyz sp98;
J3DGXColorS10 color;
color.r = 120;
color.g = 90;
color.b = 180;
color.a = 255;
if (dComIfG_play_c::getLayerNo(0) == 1) {
color.a = 0;
}
mat_p->setTevColor(1, &color);
color.r = 40;
color.g = 30;
color.b = 65;
color.a = 255;
mat_p->setTevColor(2, &color);
if (env_light->field_0x1060 != NULL) {
sp98 = env_light->field_0x1060->field_0x5b8;
f32 var_f29 = env_light->field_0x1060->field_0x5ac.x *
env_light->field_0x1060->field_0x5d0;
if (var_f29 < 0.1f) {
var_f29 = 0.1f;
}
if (mat_p->getTexGenBlock()->getTexMtx(0) != NULL) {
J3DTexMtxInfo* tex_mtx_inf =
&mat_p->getTexGenBlock()->getTexMtx(0)->getTexMtxInfo();
if (tex_mtx_inf != NULL) {
Mtx sp140;
Mtx sp110;
C_MTXLightPerspective(sp140, var_f29 * 2.8f, 1.0f, 0.5f, 0.5f,
0.0f, 0.0f);
spA4.x = sp98.x;
spA4.y = 100.0f;
spA4.z = sp98.z;
cXyz sp8C(sp98.x, -1000.0f, sp98.z);
mDoMtx_lookAt(sp110, &sp8C, &spA4, 0);
cMtx_concat(sp140, sp110, sp110);
tex_mtx_inf->setEffectMtx(sp110);
}
}
}
}
} else if (memcmp(&mat_name[3], "MA20", 4) == 0) {
cXyz sp80;
if (mat_p->getFog() != NULL) {
J3DFogInfo* fog_inf = mat_p->getFog()->getFogInfo();
if (fog_inf != NULL) {
fog_inf->field_0x0 = 7;
}
J3DGXColorS10 sp3C;
sp3C.r = g_env_light.mTerrainAmbienceBG3.r;
sp3C.g = g_env_light.mTerrainAmbienceBG3.g;
sp3C.b = g_env_light.mTerrainAmbienceBG3.b;
sp3C.a = 255;
mat_p->setTevColor(1, &sp3C);
if (mat_p->getTexGenBlock()->getTexMtx(2) != NULL) {
J3DTexMtxInfo* tex_mtx_inf =
&mat_p->getTexGenBlock()->getTexMtx(2)->getTexMtxInfo();
if (tex_mtx_inf != NULL) {
Mtx spE0;
Mtx spB0;
C_MTXLightPerspective(spE0, 170.0f, 1.0f, 1.5f, 1.5f, 0.0f, 0.0f);
sp80.x = player_p->current.pos.x;
sp80.y = -14770.0f;
sp80.z = player_p->current.pos.z;
cXyz sp74(player_p->current.pos.x, -14570.0f,
player_p->current.pos.z);
mDoMtx_lookAt(spB0, &sp74, &sp80, 0);
cMtx_concat(spE0, spB0, spB0);
tex_mtx_inf->setEffectMtx(spB0);
}
}
}
} else if (memcmp(&mat_name[3], "MA13", 4) == 0) {
J3DGXColorS10 color;
color.r = g_env_light.mTerrainAmbienceBG3.r;
color.g = g_env_light.mTerrainAmbienceBG3.g;
color.b = g_env_light.mTerrainAmbienceBG3.b;
color.a = g_env_light.mTerrainAmbienceBG3.a;
mat_p->setTevColor(1, &color);
} else if (memcmp(&mat_name[3], "MA14", 4) == 0) {
J3DGXColorS10 color;
J3DGXColor k_color;
color.r = g_env_light.mFogColor.r;
color.g = g_env_light.mFogColor.g;
color.b = g_env_light.mFogColor.b;
color.a = g_env_light.mFogColor.a;
mat_p->setTevColor(1, &color);
k_color.r = 0;
k_color.g = 0;
k_color.b = 0;
k_color.a = g_env_light.mTerrainAmbienceBG3.a;
mat_p->setTevKColor(3, &k_color);
} else if (memcmp(&mat_name[3], "MA16", 4) == 0) {
J3DGXColorS10 color;
J3DGXColor k_color;
color.r = g_env_light.mTerrainAmbienceBG1.r;
color.g = g_env_light.mTerrainAmbienceBG1.g;
color.b = g_env_light.mTerrainAmbienceBG1.b;
color.a = g_env_light.mTerrainAmbienceBG1.a;
mat_p->setTevColor(1, &color);
k_color.r = 0;
k_color.g = 0;
k_color.b = 0;
k_color.a = g_env_light.mTerrainAmbienceBG3.a;
mat_p->setTevKColor(3, &k_color);
}
}
if (memcmp(&mat_name[3], "Rainbow", 7) == 0) {
f32 temp_f31 = g_env_light.getDaytime();
cXyz sp68;
camera_class* temp_r16_2 = dComIfGp_getCamera(0);
J3DGXColor color;
cXyz sp5C;
sp5C.x = -5853.0f;
sp5C.y = temp_r16_2->mLookat.mEye.y;
sp5C.z = -879.0f;
f32 var_f1 = sp5C.abs(temp_r16_2->mLookat.mEye);
f32 var_f29_2 = -0.2f + (var_f1 / 4500.0f);
if (var_f29_2 > 1.0f) {
var_f29_2 = 1.0f;
} else if (var_f29_2 < 0.0f) {
var_f29_2 = 0.0f;
}
color.b = 255;
color.g = 255;
color.r = 255;
color.a = 255;
f32 var_f30 = 0.0f;
if (temp_f31 >= 270.0f) {
if (temp_f31 < 285.0f) {
var_f30 = (285.0f - temp_f31) / 15.0f;
}
} else if (temp_f31 < 75.0f) {
if (temp_f31 >= 60.0f) {
var_f30 = 1.0f - ((75.0f - temp_f31) / 15.0f);
}
} else {
var_f30 = 1.0f;
}
if (g_env_light.mColpatWeather != 0) {
var_f30 = 0.0f;
}
color.b = 255;
color.g = 255;
color.r = 255;
sp5C = temp_r16_2->mLookat.mCenter;
sp5C.y = temp_r16_2->mLookat.mEye.y;
dKyr_get_vectle_calc(&temp_r16_2->mLookat.mEye, &sp5C, &sp68);
f32 temp_f1_2 = cM3d_VectorProduct2d(0.0f, 0.0f, -0.81f, 0.583f, sp68.x, sp68.z);
f32 var_f0;
if (temp_f1_2 < 0.2f) {
color.a = 0;
} else {
if (temp_f1_2 > 0.6f) {
var_f0 = 1.0f;
} else {
var_f0 = (temp_f1_2 - 0.2f) / 0.4f;
}
color.a = 1.0f * (var_f29_2 * (115.0f * var_f0 * var_f30));
}
mat_p->setTevKColor(3, &color);
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -5106,6 +5441,7 @@ asm void dKy_bg_MAxx_proc(void* param_0) {
#include "asm/d/kankyo/d_kankyo/dKy_bg_MAxx_proc__FPv.s"
}
#pragma pop
#endif
/* 801ADBBC-801ADCA4 1A84FC 00E8+00 2/1 0/0 0/0 .text __dt__18dScnKy_env_light_cFv */
#pragma push

View File

@ -1604,8 +1604,8 @@ bool J3DPEBlock::getZCompLoc() const {
}
/* 8000DF44-8000DF4C 008884 0008+00 0/0 5/0 0/0 .text getZMode__10J3DPEBlockFv */
bool J3DPEBlock::getZMode() {
return false;
J3DZMode* J3DPEBlock::getZMode() {
return NULL;
}
/* 8000DF4C-8000DF54 00888C 0008+00 0/0 5/0 0/0 .text getBlend__10J3DPEBlockFv */