tp/rel/d/a/d_a_vrbox2/d_a_vrbox2.cpp

725 lines
24 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d_a_vrbox2
//
#include "rel/d/a/d_a_vrbox2/d_a_vrbox2.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
#include "d/kankyo/d_kankyo_rain.h"
#include "dol2asm.h"
//
// Types:
//
class vrbox2_class : public fopAc_ac_c {
public:
/* 0x568 */ u8 field_0x568[0x56C - 0x568];
/* 0x56C */ J3DModel* mpKumoModel;
/* 0x570 */ u8 field_0x570[0x574 - 0x570];
/* 0x574 */ J3DModel* model2;
/* 0x578 */ J3DModel* model2_und;
/* 0x57C */ u8 field_0x57C[0x580 - 0x57C];
/* 0x580 */ mDoExt_btkAnm mSunBtk;
/* 0x598 */ J3DModel* mpKasumimModel;
/* 0x59C */ u8 field_0x59C[0x5A0 - 0x59C];
};
//
// Forward References:
//
extern "C" static void texScrollCheck__FRf();
extern "C" static void daVrbox2_Draw__FP12vrbox2_class();
extern "C" static void daVrbox2_color_set__FP12vrbox2_class();
extern "C" static void daVrbox2_Execute__FP12vrbox2_class();
extern "C" static bool daVrbox2_IsDelete__FP12vrbox2_class();
extern "C" static bool daVrbox2_Delete__FP12vrbox2_class();
extern "C" static void daVrbox2_solidHeapCB__FP10fopAc_ac_c();
extern "C" static void daVrbox2_Create__FP10fopAc_ac_c();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" extern char const* const d_a_vrbox2__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
extern "C" void dComIfG_getStageRes__FPCc();
extern "C" void dKyw_get_wind_vec__Fv();
extern "C" void dKyw_get_wind_pow__Fv();
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
extern "C" void dKy_get_parcent__Ffff();
extern "C" void dKy_GxFog_set__Fv();
extern "C" void cM_rndF__Ff();
extern "C" void cM3d_VectorProduct2d__Fffffff();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void _savegpr_17();
extern "C" void _savegpr_25();
extern "C" void _restgpr_17();
extern "C" void _restgpr_25();
extern "C" u8 now__14mDoMtx_stack_c[48];
//
// Declarations:
//
static int daVrbox2_color_set(vrbox2_class* param_0);
/* ############################################################################################## */
/* 80499A6C-80499A70 000000 0004+00 4/4 0/0 0/0 .rodata @3627 */
SECTION_RODATA static f32 const lit_3627 = 1.0f;
COMPILER_STRIP_GATE(0x80499A6C, &lit_3627);
/* 80499A70-80499A74 000004 0004+00 1/3 0/0 0/0 .rodata @3628 */
SECTION_RODATA static u8 const lit_3628[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80499A70, &lit_3628);
/* 80498A78-80498ACC 000078 0054+00 1/1 0/0 0/0 .text texScrollCheck__FRf */
// matches with literals
#ifdef NONMATCHING
static void texScrollCheck(f32& param_0) {
while (param_0 < 0.0f)
param_0 += 1.0f;
while (param_0 > 1.0f)
param_0 -= 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void texScrollCheck(f32& param_0) {
nofralloc
#include "asm/rel/d/a/d_a_vrbox2/d_a_vrbox2/texScrollCheck__FRf.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80499A74-80499A78 000008 0004+00 0/1 0/0 0/0 .rodata @3835 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3835 = 9.0f / 100.0f;
COMPILER_STRIP_GATE(0x80499A74, &lit_3835);
#pragma pop
/* 80499A78-80499A7C 00000C 0004+00 0/1 0/0 0/0 .rodata @3836 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3836 = 8000.0f;
COMPILER_STRIP_GATE(0x80499A78, &lit_3836);
#pragma pop
/* 80499A7C-80499A80 000010 0004+00 1/3 0/0 0/0 .rodata @3837 */
SECTION_RODATA static f32 const lit_3837 = 255.0f;
COMPILER_STRIP_GATE(0x80499A7C, &lit_3837);
/* 80499A80-80499A84 000014 0004+00 0/1 0/0 0/0 .rodata @3838 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3838 = 2.0f / 5.0f;
COMPILER_STRIP_GATE(0x80499A80, &lit_3838);
#pragma pop
/* 80499A84-80499A88 000018 0004+00 0/1 0/0 0/0 .rodata @3839 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3839 = 270.0f;
COMPILER_STRIP_GATE(0x80499A84, &lit_3839);
#pragma pop
/* 80499A88-80499A8C 00001C 0004+00 0/1 0/0 0/0 .rodata @3840 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3840 = 240.0f;
COMPILER_STRIP_GATE(0x80499A88, &lit_3840);
#pragma pop
/* 80499A8C-80499A90 000020 0004+00 0/2 0/0 0/0 .rodata @3841 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3841 = 1.0f / 5.0f;
COMPILER_STRIP_GATE(0x80499A8C, &lit_3841);
#pragma pop
/* 80499A90-80499A94 000024 0004+00 0/1 0/0 0/0 .rodata @3842 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3842 = 300.0f;
COMPILER_STRIP_GATE(0x80499A90, &lit_3842);
#pragma pop
/* 80499A94-80499A98 000028 0004+00 0/1 0/0 0/0 .rodata @3843 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3843 = 17.0f / 20.0f;
COMPILER_STRIP_GATE(0x80499A94, &lit_3843);
#pragma pop
/* 80499A98-80499A9C 00002C 0004+00 0/1 0/0 0/0 .rodata @3844 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3844 = 3.0f / 20.0f;
COMPILER_STRIP_GATE(0x80499A98, &lit_3844);
#pragma pop
/* 80499A9C-80499AA0 000030 0004+00 0/1 0/0 0/0 .rodata @3845 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3845 = 483.0f;
COMPILER_STRIP_GATE(0x80499A9C, &lit_3845);
#pragma pop
/* 80499AA0-80499AA4 000034 0004+00 0/1 0/0 0/0 .rodata @3846 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3846 = 100.0f;
COMPILER_STRIP_GATE(0x80499AA0, &lit_3846);
#pragma pop
/* 80499AC4-80499AC4 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80499AC4 = "F_SP102";
SECTION_DEAD static char const* const stringBase_80499ACC = "F_SP127";
#pragma pop
/* 80499B78-80499B7C 000000 0002+02 1/1 0/0 0/0 .bss mangZ$3688 */
static s16 mangZ;
/* 80498ACC-804990DC 0000CC 0610+00 1/0 0/0 0/0 .text daVrbox2_Draw__FP12vrbox2_class */
// reg alloc
#ifdef NONMATCHING
static int daVrbox2_Draw(vrbox2_class* i_this) {
cXyz sp14;
cXyz sp8;
camera_class* camera_p = dComIfGp_getCamera(0);
dKankyo_sunlenz_Packet* lenz_p = g_env_light.mpSunLenzPacket;
J3DModel* kumo_model_p = i_this->mpKumoModel;
J3DModel* sun_model_p = i_this->model2;
J3DModel* sun2_model_p = i_this->model2_und;
J3DModel* kasumim_model_p = i_this->mpKasumimModel;
dKankyo_sun_Packet* sun_p = g_env_light.mpSunPacket;
f32 var_f31 = 0.0f;
dStage_FileList_dt_c* filelist_p = NULL;
dKy_GxFog_set();
// these casts look like fake matches, but this ptr is used as both J3DModel and J3DModelData?
for (int i = ((J3DModelData*)kumo_model_p)->getMaterialNum() - 1; i >= 0; i--) {
J3DMaterial* material_p = ((J3DModelData*)kumo_model_p)->getMaterialNodePointer(i);
J3DFogInfo* fogInfo_p;
if (material_p != NULL) {
fogInfo_p = material_p->getFog()->getFogInfo();
}
fogInfo_p->field_0x0 = 2;
}
// these casts look like fake matches, but this ptr is used as both J3DModel and J3DModelData?
for (int i = ((J3DModelData*)sun_model_p)->getMaterialNum() - 1; i >= 0; i--) {
J3DMaterial* material_p = ((J3DModelData*)sun_model_p)->getMaterialNodePointer(i);
J3DFogInfo* fogInfo_p;
if (material_p != NULL) {
fogInfo_p = material_p->getFog()->getFogInfo();
}
fogInfo_p->field_0x0 = 2;
}
// these casts look like fake matches, but this ptr is used as both J3DModel and J3DModelData?
for (int i = ((J3DModelData*)kasumim_model_p)->getMaterialNum() - 1; i >= 0; i--) {
J3DMaterial* material_p = ((J3DModelData*)kasumim_model_p)->getMaterialNodePointer(i);
J3DFogInfo* fogInfo_p;
if (material_p != NULL) {
fogInfo_p = material_p->getFog()->getFogInfo();
}
fogInfo_p->field_0x0 = 2;
}
if ((g_env_light.mVrKasumiCol.r + g_env_light.mVrKasumiCol.g +
g_env_light.mVrKasumiCol.b + g_env_light.mVrSkyCol.r + g_env_light.mVrSkyCol.g +
g_env_light.mVrSkyCol.b + g_env_light.mVrkumoCol.r + g_env_light.mVrkumoCol.g +
g_env_light.mVrkumoCol.b) == 0)
{
return 1;
}
i_this->mSunBtk.entry(i_this->model2->getModelData());
daVrbox2_color_set(i_this);
if (dComIfGp_roomControl_getStayNo() >= 0) {
s32 stayNo = dComIfGp_roomControl_getStayNo();
filelist_p = dComIfGp_roomControl_getStatusRoomDt(stayNo)->mRoomDt.getFileListInfo();
}
if (filelist_p != NULL) {
var_f31 = dStage_FileList_dt_SeaLevel(filelist_p);
}
if (dComIfGd_getView() != NULL) {
var_f31 = (dComIfGd_getInvViewMtx()[1][3] - var_f31) * 0.09f;
} else {
var_f31 = 0.0f;
}
dComIfGd_setListSky();
mDoMtx_stack_c::transS(dComIfGd_getInvViewMtx()[0][3], dComIfGd_getInvViewMtx()[1][3] - var_f31,
dComIfGd_getInvViewMtx()[2][3]);
kasumim_model_p->i_setBaseTRMtx(mDoMtx_stack_c::get());
mDoExt_modelUpdateDL(kasumim_model_p);
mDoMtx_stack_c::transS(dComIfGd_getInvViewMtx()[0][3], dComIfGd_getInvViewMtx()[1][3] - var_f31,
dComIfGd_getInvViewMtx()[2][3]);
kumo_model_p->i_setBaseTRMtx(mDoMtx_stack_c::get());
mDoExt_modelUpdateDL(kumo_model_p);
if (dStage_stagInfo_GetArg0(i_dComIfGp_getStage()->getStagInfo()) != 0 && sun_model_p != NULL &&
sun_p != NULL && sun_p->mSunAlpha > 0.0f)
{
sp14 = sun_p->mPos[0];
if (strcmp(dComIfGp_getStartStageName(), "F_SP102") == 0) {
dKyr_get_vectle_calc(&camera_p->mLookat.mEye, &g_env_light.mSunPos, &sp8);
sp14.x = camera_p->mLookat.mEye.x + (8000.0f * sp8.x);
sp14.y = camera_p->mLookat.mEye.y + (8000.0f * sp8.y);
sp14.z = camera_p->mLookat.mEye.z + (8000.0f * sp8.z);
}
s16 temp_r19 = cLib_targetAngleX(&camera_p->mLookat.mEye, &sp14);
s16 temp_r18 = cLib_targetAngleY(&camera_p->mLookat.mEye, &sp14);
mDoMtx_stack_c::transS(sp14.x, sp14.y, sp14.z);
mDoMtx_stack_c::YrotM((s16)temp_r18);
mDoMtx_stack_c::XrotM(0x7FFF - temp_r19);
f32 scale;
if (g_env_light.mDaytime < 255.0f) {
f32 temp_f4 = 1.0f - lenz_p->mDistFalloff;
scale = 1.0f;
if (sun_p->mVisibility > 0.0f) {
scale = 1.0f + (sun_p->mVisibility * (0.4f * (temp_f4 * temp_f4)));
}
} else {
f32 var_f1;
if (g_env_light.mDaytime < 270.0f) {
var_f1 = dKy_get_parcent(270.0f, 240.0f, g_env_light.mDaytime);
} else {
var_f1 = 1.0f;
}
scale = 1.0f + (0.2f * var_f1);
}
mDoMtx_stack_c::scaleM(scale, scale, scale);
sun_model_p->i_setBaseTRMtx(mDoMtx_stack_c::get());
mDoExt_modelUpdateDL(sun_model_p);
if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) {
sp14 = sun_p->mPos[0];
sp14.y = 300.0f - (sp14.y * 0.85f);
s16 temp_r19_2 = cLib_targetAngleX(&camera_p->mLookat.mEye, &sp14);
s16 temp_r18_2 = cLib_targetAngleY(&camera_p->mLookat.mEye, &sp14);
mDoMtx_stack_c::transS(sp14.x, sp14.y, sp14.z);
mDoMtx_stack_c::YrotM((s16)temp_r18_2);
mDoMtx_stack_c::XrotM(0x7FFF - temp_r19_2);
mDoMtx_stack_c::ZrotM(mangZ);
mDoMtx_stack_c::scaleM(scale, scale + 0.15f, scale);
mDoMtx_stack_c::ZrotM(-mangZ);
sun2_model_p->i_setBaseTRMtx(mDoMtx_stack_c::get());
mDoExt_modelUpdateDL(sun2_model_p);
mangZ += (s16)(483.0f + cM_rndF(100.0f));
}
}
dComIfGd_setList();
if (sun_model_p != NULL) {
i_this->mSunBtk.remove(i_this->model2->getModelData());
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int daVrbox2_Draw(vrbox2_class* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_vrbox2/d_a_vrbox2/daVrbox2_Draw__FP12vrbox2_class.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80499AA4-80499AA8 000038 0004+00 0/1 0/0 0/0 .rodata @4069 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_4069 = 0x3A03126F;
COMPILER_STRIP_GATE(0x80499AA4, &lit_4069);
#pragma pop
/* 80499AA8-80499AAC 00003C 0004+00 0/1 0/0 0/0 .rodata @4070 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4070 = 3.0f / 10.0f;
COMPILER_STRIP_GATE(0x80499AA8, &lit_4070);
#pragma pop
/* 80499AAC-80499AB0 000040 0004+00 0/1 0/0 0/0 .rodata @4071 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4071 = 1.75f;
COMPILER_STRIP_GATE(0x80499AAC, &lit_4071);
#pragma pop
/* 80499AB0-80499AB4 000044 0004+00 0/1 0/0 0/0 .rodata @4072 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4072 = 22.0f / 5.0f;
COMPILER_STRIP_GATE(0x80499AB0, &lit_4072);
#pragma pop
/* 80499AB4-80499AB8 000048 0004+00 0/1 0/0 0/0 .rodata @4073 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4073 = 11.0f / 5.0f;
COMPILER_STRIP_GATE(0x80499AB4, &lit_4073);
#pragma pop
/* 80499AB8-80499ABC 00004C 0004+00 0/1 0/0 0/0 .rodata @4074 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4074 = 97.5f;
COMPILER_STRIP_GATE(0x80499AB8, &lit_4074);
#pragma pop
/* 80499ABC-80499AC0 000050 0004+00 0/1 0/0 0/0 .rodata @4075 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4075 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80499ABC, &lit_4075);
#pragma pop
/* 80499AC0-80499AC4 000054 0004+00 0/1 0/0 0/0 .rodata @4076 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_4076 = 0x38D1B717;
COMPILER_STRIP_GATE(0x80499AC0, &lit_4076);
#pragma pop
/* 80499AC4-80499AC4 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80499AD4 = "R_SP30";
#pragma pop
/* 804990DC-804997E8 0006DC 070C+00 1/1 0/0 0/0 .text daVrbox2_color_set__FP12vrbox2_class */
// one small weird block and some regalloc at the end
#ifdef NONMATCHING
static int daVrbox2_color_set(vrbox2_class* i_this) {
dKankyo_sun_Packet* sun_p = g_env_light.mpSunPacket;
if ((g_env_light.mVrKasumiCol.r + g_env_light.mVrKasumiCol.g +
g_env_light.mVrKasumiCol.b + g_env_light.mVrSkyCol.r + g_env_light.mVrSkyCol.g +
g_env_light.mVrSkyCol.b + g_env_light.mVrkumoCol.r + g_env_light.mVrkumoCol.g +
g_env_light.mVrkumoCol.b) == 0)
{
return 1;
}
camera_class* camera_p = dComIfGp_getCamera(0);
cXyz cam_eye;
cXyz cam_center;
cXyz camFwdXZ;
cXyz wind_vec;
cXyz* windVec_p = dKyw_get_wind_vec();
f32 wind_pow = dKyw_get_wind_pow();
wind_vec = *windVec_p;
dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo());
cam_eye = camera_p->mLookat.mEye;
cam_center = camera_p->mLookat.mCenter;
cam_eye.y = 0.0f;
cam_center.y = 0.0f;
dKyr_get_vectle_calc(&cam_eye, &cam_center, &camFwdXZ);
f32 temp_f30 =
cM3d_VectorProduct2d(0.0f, 0.0f, -wind_vec.x, -wind_vec.z, camFwdXZ.x, camFwdXZ.z) *
0.0005f;
f32 var_f29 = temp_f30 * wind_pow;
if (strcmp(dComIfGp_getStartStageName(), "R_SP30") == 0) {
dKyw_get_wind_vec();
var_f29 = temp_f30 * (wind_pow + 0.3f);
}
J3DModelData* modelData = i_this->mpKumoModel->getModelData();
J3DMaterial* material_0 = modelData->getMaterialNodePointer(0);
if (material_0 != NULL) {
material_0->setCullMode(0);
if (material_0->getTexMtx(0) != NULL) {
J3DTexMtxInfo& mtx_info = material_0->getTexMtx(0)->getTexMtxInfo();
mtx_info.mSRT.mTranslationX += var_f29;
texScrollCheck(mtx_info.mSRT.mTranslationX);
}
if (material_0->getTexMtx(1) != NULL) {
J3DTexMtxInfo& mtx_info = material_0->getTexMtx(1)->getTexMtxInfo();
mtx_info.mSRT.mTranslationX += var_f29 * 1.75f;
texScrollCheck(mtx_info.mSRT.mTranslationX);
}
}
J3DMaterial* material_1 = modelData->getMaterialNodePointer(1);
if (material_1 != NULL) {
material_1->setCullMode(0);
if (material_1->getTexMtx(0) != NULL) {
J3DTexMtxInfo& mtx_info = material_1->getTexMtx(0)->getTexMtxInfo();
mtx_info.mSRT.mTranslationX += var_f29 * 4.4f;
texScrollCheck(mtx_info.mSRT.mTranslationX);
}
if (material_1->getTexMtx(1) != NULL) {
J3DTexMtxInfo& mtx_info = material_1->getTexMtx(1)->getTexMtxInfo();
mtx_info.mSRT.mTranslationX += var_f29 * 2.2f;
texScrollCheck(mtx_info.mSRT.mTranslationX);
}
}
modelData = i_this->mpKumoModel->getModelData();
J3DGXColor k_color;
J3DGXColorS10 color;
J3DMaterial* kumo_material0 = modelData->getMaterialNodePointer(0);
if (kumo_material0 != NULL) {
kumo_material0->setCullMode(0);
kumo_material0->change();
k_color.r = g_env_light.mVrShitaGumoCol.r;
k_color.g = g_env_light.mVrShitaGumoCol.g;
k_color.b = g_env_light.mVrShitaGumoCol.b;
k_color.a = g_env_light.mVrkumoCol.a;
kumo_material0->setTevKColor(0, &k_color);
color.r = g_env_light.mVrShitaUneiCol.r;
color.g = g_env_light.mVrShitaUneiCol.g;
color.b = g_env_light.mVrShitaUneiCol.b;
color.a = (u8)g_env_light.mVrkumoCol.a;
kumo_material0->setTevColor(0, &color);
}
J3DMaterial* kumo_material1 = modelData->getMaterialNodePointer(1);
if (kumo_material1 != NULL) {
kumo_material1->setCullMode(0);
kumo_material1->change();
k_color.r = g_env_light.mVrShitaGumoCol.r;
k_color.g = g_env_light.mVrShitaGumoCol.g;
k_color.b = g_env_light.mVrShitaGumoCol.b;
k_color.a = g_env_light.mVrkumoCol.a;
kumo_material1->setTevKColor(0, &k_color);
color.r = g_env_light.mVrShitaUneiCol.r;
color.g = g_env_light.mVrShitaUneiCol.g;
color.b = g_env_light.mVrShitaUneiCol.b;
color.a = g_env_light.mVrkumoCol.a;
kumo_material1->setTevColor(0, &color);
}
modelData = i_this->mpKasumimModel->getModelData();
J3DMaterial* kasumim_material0 = modelData->getMaterialNodePointer(0);
if (kasumim_material0 != NULL) {
kasumim_material0->setCullMode(0);
kasumim_material0->change();
color.r = g_env_light.mVrKasumiCol.r;
color.g = g_env_light.mVrKasumiCol.g;
color.b = g_env_light.mVrKasumiCol.b;
color.a = g_env_light.mVrKasumiCol.a;
kasumim_material0->setTevColor(0, &color);
}
if (sun_p != NULL) {
J3DModelData* modelData = i_this->model2->getModelData();
for (int i = 0; i < 3; i++) {
J3DMaterial* material_p = modelData->getMaterialNodePointer(i);
if (material_p != NULL) {
material_p->setCullMode(0);
material_p->change();
color.r = sun_p->mColor.r;
color.g = sun_p->mColor.g;
color.b = sun_p->mColor.b;
k_color.r = sun_p->field_0x74.r;
k_color.g = sun_p->field_0x74.g;
k_color.b = sun_p->field_0x74.b;
k_color.a = sun_p->field_0x74.a;
if (i == 1) {
if (g_env_light.mDaytime > 255.0f || g_env_light.mDaytime < 97.5f) {
cLib_addCalc(&sun_p->field_0x64, 1.0f, 0.2f, 0.1f, 0.0001f);
} else {
cLib_addCalc(&sun_p->field_0x64, 0.0f, 0.2f, 0.1f, 0.0001f);
}
int alpha = sun_p->field_0x64 * 255.0f * sun_p->mSunAlpha;
color.a = alpha;
k_color.a = alpha;
} else if (i == 2) {
int alpha = sun_p->mSunAlpha * 255.0f * (1.0f - sun_p->field_0x64);
color.a = alpha;
k_color.a = alpha;
} else {
int alpha = sun_p->mSunAlpha * 255.0f;
color.a = alpha;
k_color.a = alpha;
}
material_p->setTevColor(0, &color);
material_p->setTevKColor(0, &k_color);
}
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int daVrbox2_color_set(vrbox2_class* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_vrbox2/d_a_vrbox2/daVrbox2_color_set__FP12vrbox2_class.s"
}
#pragma pop
#endif
/* 804997E8-8049982C 000DE8 0044+00 1/0 0/0 0/0 .text daVrbox2_Execute__FP12vrbox2_class
*/
static int daVrbox2_Execute(vrbox2_class* i_this) {
if (g_env_light.mDaytime > FLOAT_LABEL(lit_3837)) {
i_this->mSunBtk.play();
}
return 1;
}
/* 8049982C-80499834 000E2C 0008+00 1/0 0/0 0/0 .text daVrbox2_IsDelete__FP12vrbox2_class
*/
static int daVrbox2_IsDelete(vrbox2_class* i_this) {
return 1;
}
/* 80499834-8049983C 000E34 0008+00 1/0 0/0 0/0 .text daVrbox2_Delete__FP12vrbox2_class
*/
static int daVrbox2_Delete(vrbox2_class* i_this) {
return 1;
}
/* 8049983C-80499978 000E3C 013C+00 1/1 0/0 0/0 .text daVrbox2_solidHeapCB__FP10fopAc_ac_c */
static int daVrbox2_solidHeapCB(fopAc_ac_c* i_this) {
vrbox2_class* a_this = (vrbox2_class*)i_this;
a_this->mpKumoModel = mDoExt_J3DModel__create(
(J3DModelData*)dComIfG_getStageRes("vrbox_kumo.bmd"), 0x80000, 0x11020202);
J3DModelData* sun_modelData = (J3DModelData*)dComIfG_getStageRes("vrbox_sun.bmd");
if (sun_modelData != NULL) {
a_this->model2 = mDoExt_J3DModel__create(sun_modelData, 0x80000, 0x11020202);
a_this->model2_und = mDoExt_J3DModel__create(sun_modelData, 0x80000, 0x11020202);
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getStageRes("vrbox_sun.btk");
if (!a_this->mSunBtk.init(sun_modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, FLOAT_LABEL(lit_3627), 0, -1)) {
return 0;
}
}
J3DModelData* kasumi_modelData = (J3DModelData*)dComIfG_getStageRes("vrbox_kasumiM.bmd");
if (kasumi_modelData != NULL) {
a_this->mpKasumimModel = mDoExt_J3DModel__create(kasumi_modelData, 0x80000, 0x11020202);
}
return a_this->mpKumoModel != NULL && a_this->model2 != NULL && a_this->model2_und != NULL;
}
/* 80499978-80499A1C 000F78 00A4+00 1/0 0/0 0/0 .text daVrbox2_Create__FP10fopAc_ac_c */
static int daVrbox2_Create(fopAc_ac_c* i_this) {
fopAcM_SetupActor(i_this, vrbox2_class);
vrbox2_class* a_this = (vrbox2_class*)i_this;
int phase = cPhs_COMPLEATE_e;
if (!fopAcM_entrySolidHeap(a_this, daVrbox2_solidHeapCB, 0x80004340)) {
phase = cPhs_ERROR_e;
}
return phase;
}
/* ############################################################################################## */
/* 80499B18-80499B38 -00001 0020+00 1/0 0/0 0/0 .data l_daVrbox2_Method */
static actor_method_class l_daVrbox2_Method = {
(process_method_func)daVrbox2_Create, (process_method_func)daVrbox2_Delete,
(process_method_func)daVrbox2_Execute, (process_method_func)daVrbox2_IsDelete,
(process_method_func)daVrbox2_Draw,
};
/* 80499B38-80499B68 -00001 0030+00 0/0 0/0 1/0 .data g_profile_VRBOX2 */
extern actor_process_profile_definition g_profile_VRBOX2 = {
-3,
7,
-3,
PROC_VRBOX2,
&g_fpcLf_Method.mBase,
sizeof(vrbox2_class),
0,
0,
&g_fopAc_Method.base,
4,
&l_daVrbox2_Method,
0x44000,
0,
0,
};