Files
dusklight/src/d/kankyo/d_kankyo.cpp
T
2023-08-02 01:31:23 -07:00

5770 lines
203 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d/kankyo/d_kankyo
//
#include "d/kankyo/d_kankyo.h"
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "MSL_C/string.h"
#include "SSystem/SComponent/c_counter.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "d/kankyo/d_kankyo_data.h"
#include "d/kankyo/d_kankyo_rain.h"
#include "d/meter/d_meter2_info.h"
#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/os/OS.h"
#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:
//
struct sub_kankyo__class {};
//
// Forward References:
//
extern "C" static void dKy_WolfPowerup_AmbCol__FP11_GXColorS10();
extern "C" static void dKy_sense_pat_get__Fv();
extern "C" static void dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10();
extern "C" static void dKy_WolfPowerup_FogNearFar__FPfPf();
extern "C" static void dKy_pos2_get_angle__FP4cXyzP4cXyzPsPs();
extern "C" static void dKy_twi_wolflight_set__Fi();
extern "C" static void dKy_lightdir_set__FffP3Vec();
extern "C" static void dKy_GXInitLightSpot__FP12J3DLightInfofUc();
extern "C" static void dKy_GXInitLightDistAttn__FP12J3DLightInfoffUc();
extern "C" static void u8_data_ratio_set__FUcUcf();
extern "C" static void s16_data_ratio_set__Fssf();
extern "C" static void kankyo_color_ratio_calc_common__Fsf();
extern "C" static void kankyo_color_ratio_calc__FP8_GXColor11_GXColorS10f();
extern "C" static void kankyo_color_ratio_set__FUcUcfUcUcfsf();
extern "C" static void fl_data_ratio_set__Ffff();
extern "C" static void float_kankyo_color_ratio_set__Fffffffff();
extern "C" static void get_parcent__Ffff();
extern "C" void dKy_get_parcent__Ffff();
extern "C" static void dKy_FiveSenses_fullthrottle_dark_static1__Fv();
extern "C" void dKy_FiveSenses_fullthrottle_dark__Fv();
extern "C" static void dKy_light_influence_id__F4cXyzi();
extern "C" static void dKy_eflight_influence_id__F4cXyzi();
extern "C" static void dKy_light_influence_col__Fi();
extern "C" void dKy_light_influence_col__FP8_GXColorf();
extern "C" static void dKy_light_influence_power__Fi();
extern "C" static void dKy_light_influence_yuragi__Fi();
extern "C" static void dKy_light_influence_distance__F4cXyzi();
extern "C" static void plight_init__Fv();
extern "C" static void darkmist_init__Fv();
extern "C" static void plight_set__Fv();
extern "C" static void bgparts_activelight_init__Fv();
extern "C" static void dungeonlight_init__Fv();
extern "C" static void undwater_init__Fv();
extern "C" static void dKy_light_size_get__FPCc();
extern "C" static void envcolor_init__Fv();
extern "C" void dKy_clear_game_init__Fv();
extern "C" void __ct__18dScnKy_env_light_cFv();
extern "C" void __ct__19GB_MAPLE_COL_CHANGEFv();
extern "C" void __dt__10BOSS_LIGHTFv();
extern "C" void __ct__10BOSS_LIGHTFv();
extern "C" void __dt__13DUNGEON_LIGHTFv();
extern "C" void __ct__13DUNGEON_LIGHTFv();
extern "C" void __dt__15WIND_INF_ENTITYFv();
extern "C" void __ct__15WIND_INF_ENTITYFv();
extern "C" void __ct__15LIGHT_INFLUENCEFv();
extern "C" void setDaytime__18dScnKy_env_light_cFv();
extern "C" void GetTimePass__20dStage_roomControl_cFv();
extern "C" void setSunpos__18dScnKy_env_light_cFv();
extern "C" void getDaytime__18dScnKy_env_light_cFv();
extern "C" void dKy_getdaytime_hour__Fv();
extern "C" void dKy_getdaytime_minute__Fv();
extern "C" void dKy_daynight_check__Fv();
extern "C" void dKy_getDarktime_hour__Fv();
extern "C" void dKy_getDarktime_minute__Fv();
extern "C" void dKy_getDarktime_week__Fv();
extern "C" void getDarkDaytime__18dScnKy_env_light_cFv();
extern "C" void setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc();
extern "C" static void
dKy_calc_color_set__FP11_GXColorS10P15color_RGB_classP15color_RGB_classP15color_RGB_classP15color_RGB_classff11_GXColorS10f();
extern "C" void setLight__18dScnKy_env_light_cFv();
extern "C" void setLight_bg__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10P11_GXColorS10PfPf();
extern "C" void setLight_actor__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10PfPf();
extern "C" void
settingTevStruct_colget_actor__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_cP11_GXColorS10P11_GXColorS10PfPf();
extern "C" void settingTevStruct_colget_player__18dScnKy_env_light_cFP12dKy_tevstr_c();
extern "C" static void cLib_addCalcU8__FPUcUcss();
extern "C" void
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" static void setLightTevColorType_MAJI_sub__FP11J3DMaterialP12dKy_tevstr_ci();
extern "C" void setLight__13J3DColorBlockFUlP11J3DLightObj();
extern "C" void setAmbColor__13J3DColorBlockFUlPC10J3DGXColor();
extern "C" static void dKy_cloudshadow_scroll__FP12J3DModelDataP12dKy_tevstr_ci();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void CalcTevColor__18dScnKy_env_light_cFv();
extern "C" void Sndpos__18dScnKy_env_light_cFv();
extern "C" void Eflight_flush_proc__18dScnKy_env_light_cFv();
extern "C" void SetBaseLight__18dScnKy_env_light_cFv();
extern "C" void exeKankyo__18dScnKy_env_light_cFv();
extern "C" void drawKankyo__18dScnKy_env_light_cFv();
extern "C" void dKy_undwater_filter_draw__Fv();
extern "C" static void dKy_Draw__FP17sub_kankyo__class();
extern "C" static void dKy_Execute__FP17sub_kankyo__class();
extern "C" static bool dKy_IsDelete__FP17sub_kankyo__class();
extern "C" static void dKy_Delete__FP17sub_kankyo__class();
extern "C" static void dKy_Create__FPv();
extern "C" void dKy_setLight_init__Fv();
extern "C" void dKy_setLight__Fv();
extern "C" static void dKy_GlobalLight_set__Fv();
extern "C" static void dKy_lightswitch_check__FP30stage_pure_lightvec_info_classc();
extern "C" static void dKy_setLight_nowroom_common__Fcf();
extern "C" void dKy_setLight_nowroom__Fc();
extern "C" void dKy_setLight_nowroom_grass__Fcf();
extern "C" void dKy_move_room_ratio__FP12dKy_tevstr_cPSc();
extern "C" void dKy_setLight_nowroom_actor__FP12dKy_tevstr_c();
extern "C" void dKy_setLight_again__Fv();
extern "C" void dKy_Global_amb_set__FP12dKy_tevstr_c();
extern "C" static void dKy_light_influence_pos__Fi();
extern "C" void dKy_plight_near_pos__Fv();
extern "C" void dKy_mock_light_every_set__FP15LIGHT_INFLUENCE();
extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE();
extern "C" void dKy_dalkmist_inf_set__FP18DALKMIST_INFLUENCE();
extern "C" void dKy_dalkmist_inf_cut__FP18DALKMIST_INFLUENCE();
extern "C" void dKy_plight_priority_set__FP15LIGHT_INFLUENCE();
extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE();
extern "C" void dKy_efplight_set__FP15LIGHT_INFLUENCE();
extern "C" void dKy_efplight_cut__FP15LIGHT_INFLUENCE();
extern "C" static void dKy_bgparts_activelight_set__FP15LIGHT_INFLUENCEi();
extern "C" static void dKy_bgparts_activelight_cut__Fi();
extern "C" void dKy_actor_addcol_amb_set__Fsssf();
extern "C" void dKy_bg_addcol_amb_set__Fsssf();
extern "C" void dKy_bg1_addcol_amb_set__Fsssf();
extern "C" static void dKy_bg2_addcol_amb_set__Fsssf();
extern "C" static void dKy_bg3_addcol_amb_set__Fsssf();
extern "C" void dKy_addcol_fog_set__Fsssf();
extern "C" void dKy_actor_addcol_set__Fsssf();
extern "C" void dKy_vrbox_addcol_sky0_set__Fsssf();
extern "C" void dKy_vrbox_addcol_kasumi_set__Fsssf();
extern "C" static void dKy_vrbox_addcol_set__Fsssf();
extern "C" void dKy_fog_startendz_set__Ffff();
extern "C" void dKy_Itemgetcol_chg_on__Fv();
extern "C" static void dKy_Sound_init__Fv();
extern "C" void dKy_Sound_set__F4cXyziUii();
extern "C" void dKy_Sound_get__Fv();
extern "C" void dKy_SordFlush_set__F4cXyzi();
extern "C" static void GxFogSet_Sub__FP8_GXColor();
extern "C" static void GxFog_set__Fv();
extern "C" void dKy_GxFog_set__Fv();
extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c();
extern "C" void dKy_GfFog_tevstr_set__FP12dKy_tevstr_c();
extern "C" static void GxXFog_set__Fv();
extern "C" void dKy_change_colpat__FUc();
extern "C" void dKy_custom_colset__FUcUcf();
extern "C" void dKy_setLight_mine__FP12dKy_tevstr_c();
extern "C" void dKy_tevstr_init__FP12dKy_tevstr_cScUc();
extern "C" void dKy_rain_check__Fv();
extern "C" void dKy_set_allcol_ratio__Ff();
extern "C" void dKy_set_actcol_ratio__Ff();
extern "C" void dKy_set_bgcol_ratio__Ff();
extern "C" void dKy_set_fogcol_ratio__Ff();
extern "C" void dKy_set_vrboxcol_ratio__Ff();
extern "C" static void dKy_set_vrboxsoracol_ratio__Ff();
extern "C" static void dKy_set_vrboxkumocol_ratio__Ff();
extern "C" void dKy_itudemo_se__Fv();
extern "C" void dKy_get_dayofweek__Fv();
extern "C" void dKy_set_nexttime__Ff();
extern "C" void dKy_instant_timechg__Ff();
extern "C" void dKy_instant_rainchg__Fv();
extern "C" static void NewAmbColGet__FP11_GXColorS10();
extern "C" static void
dKy_ParticleColor_get_base__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf();
extern "C" void
dKy_ParticleColor_get_actor__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf();
extern "C" void
dKy_ParticleColor_get_bg__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf();
extern "C" void dKy_BossLight_set__FP4cXyzP8_GXColorfUc();
extern "C" void dKy_BossSpotLight_set__FP4cXyzfffP8_GXColorfUcUc();
extern "C" void dKy_WolfEyeLight_set__FP4cXyzfffP8_GXColorfUcUc();
extern "C" static void dKy_twilight_camelight_set__Fv();
extern "C" static void dKy_WaterIn_Light_set__Fv();
extern "C" void dKy_camera_water_in_status_set__FUc();
extern "C" void dKy_camera_water_in_status_check__Fv();
extern "C" void dKy_pol_efftype_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_efftype2_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_argument_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_eff_prim_get__FPC13cBgS_PolyInfoP8_GXColor();
extern "C" void dKy_pol_eff_env_get__FPC13cBgS_PolyInfoP8_GXColor();
extern "C" void dKy_pol_eff2_prim_get__FPC13cBgS_PolyInfoP8_GXColor();
extern "C" void dKy_pol_eff2_env_get__FPC13cBgS_PolyInfoP8_GXColor();
extern "C" void dKy_pol_eff_alpha_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_eff_ratio_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_eff2_alpha_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_pol_eff2_ratio_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_TeachWind_existence_chk__Fv();
extern "C" void dKy_SunMoon_Light_Check__Fv();
extern "C" static void dKy_Outdoor_check__Fv();
extern "C" static void dKy_Indoor_check__Fv();
extern "C" bool dKy_withwarp_capture_check__Fv();
extern "C" void dKy_depth_dist_set__FPv();
extern "C" void dKy_darkworld_check__Fv();
extern "C" static void dKy_F_SP121Check__FPCciPUci();
extern "C" void dKy_darkworld_stage_check__FPCci();
extern "C" void dKy_darkworld_spot_check__FPCci();
extern "C" void dKy_darkworld_Area_set__FPCci();
extern "C" static void dKy_murky_set__FP11J3DMaterial();
extern "C" void dKy_shadow_mode_set__FUc();
extern "C" void dKy_shadow_mode_reset__FUc();
extern "C" void dKy_shadow_mode_check__FUc();
extern "C" void dKy_bg_MAxx_proc__FPv();
extern "C" void __dt__18dScnKy_env_light_cFv();
extern "C" void __sinit_d_kankyo_cpp();
extern "C" void dKankyo_DayProc__Fv();
extern "C" extern char const* const d_kankyo_d_kankyo__stringBase0;
extern "C" extern u8 struct_80451070[8];
//
// External References:
//
extern "C" void mDoAud_setSceneName__FPCcll();
extern "C" void __dt__4cXyzFv();
extern "C" void create__Q213mDoGph_gInf_c7bloom_cFv();
extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs();
extern "C" void mDoMtx_inverseTranspose__FPA4_CfPA4_f();
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_createSolidHeapFromGameToCurrent__FUlUl();
extern "C" void mDoExt_adjustSolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_destroySolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_restoreCurrentHeap__Fv();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void mDoLib_project__FP3VecP3Vec();
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
extern "C" void getLayerNo_common__14dComIfG_play_cFPCcii();
extern "C" void getLayerNo__14dComIfG_play_cFi();
extern "C" void dComIfGs_sense_type_change_Get__Fv();
extern "C" void dComIfG_getStageRes__FPCc();
extern "C" void dComIfGp_world_dark_get__Fv();
extern "C" void dComIfGs_PolyDamageOff_Set__FSc();
extern "C" void isDarkClearLV__21dSv_player_status_b_cCFi();
extern "C" void isSwitch__12dSv_memBit_cCFi();
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
extern "C" void offEventBit__11dSv_event_cFUs();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void dKyd_dmpalet_getp__Fv();
extern "C" void dKyd_dmpselect_getp__Fv();
extern "C" void dKyd_dmenvr_getp__Fv();
extern "C" void dKyd_dmvrbox_getp__Fv();
extern "C" void dKyd_schejule_getp__Fv();
extern "C" void dKyd_schejule_boss_getp__Fv();
extern "C" void dKyd_xfog_table_set__FUc();
extern "C" void dKyd_maple_col_getp__Fv();
extern "C" void dKyd_darkworld_tbl_getp__Fv();
extern "C" void dKyd_light_size_tbl_getp__Fv();
extern "C" void dKyd_light_tw_size_tbl_getp__Fv();
extern "C" void dKyd_BloomInf_tbl_getp__Fi();
extern "C" void dKyw_wether_proc__Fv();
extern "C" void dKyw_wind_set__Fv();
extern "C" void dKyw_get_wind_vec__Fv();
extern "C" void dKyw_rain_set__Fi();
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
extern "C" void GetPolyAtt1__4dBgSFRC13cBgS_PolyInfo();
extern "C" void __ct__18dBgS_CamGndChk_WtrFv();
extern "C" void __dt__18dBgS_CamGndChk_WtrFv();
extern "C" void __dt__15LIGHT_INFLUENCEFv();
extern "C" void checkNowWolfEyeUp__9daPy_py_cFv();
extern "C" void dCam_getBody__Fv();
extern "C" void getActor__12dMsgObject_cFv();
extern "C" void __pl__4cXyzCFRC3Vec();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void __ml__4cXyzCFf();
extern "C" void cM_rad2s__Ff();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rndF__Ff();
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
extern "C" void cM3d_VectorProduct2d__Fffffff();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void deleteAllParticle__14JPABaseEmitterFv();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void load2ndDynamicWave__10Z2SceneMgrFv();
extern "C" void __ct__10Z2EnvSeMgrFv();
extern "C" void __dt__10Z2EnvSeMgrFv();
extern "C" void resetScene__10Z2EnvSeMgrFv();
extern "C" void GFSetFog__F10_GXFogTypeffff8_GXColor();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo();
extern "C" void setEffectMtx__13J3DTexMtxInfoFPA4_f();
extern "C" void simpleCalcMaterial__12J3DModelDataFUsPA4_f();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void __cvt_fp2unsigned();
extern "C" void _savefpr_29();
extern "C" void _restfpr_29();
extern "C" void _savegpr_14();
extern "C" void _savegpr_16();
extern "C" void _savegpr_17();
extern "C" void _savegpr_19();
extern "C" void _savegpr_21();
extern "C" void _savegpr_22();
extern "C" void _savegpr_23();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_14();
extern "C" void _restgpr_16();
extern "C" void _restgpr_17();
extern "C" void _restgpr_19();
extern "C" void _restgpr_21();
extern "C" void _restgpr_22();
extern "C" void _restgpr_23();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
extern "C" extern void* __vt__12J3DFrameCtrl[3];
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
extern "C" u8 m_bloom__13mDoGph_gInf_c[20];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
// Declarations:
//
/* 8019C388-8019C3A4 196CC8 001C+00 2/2 0/0 0/0 .text dKy_WolfPowerup_AmbCol__FP11_GXColorS10 */
static void dKy_WolfPowerup_AmbCol(GXColorS10* in_col_p) {
in_col_p->r = 40;
in_col_p->g = 52;
in_col_p->b = 49;
}
/* 8019C3A4-8019CB0C 196CE4 0768+00 2/2 0/0 0/0 .text dKy_sense_pat_get__Fv */
static s32 dKy_sense_pat_get() {
s32 pat = 0;
if (dKy_Outdoor_check()) {
pat = 1;
} else {
pat = 5;
}
// Stage is Lake Hylia
if (!strcmp(dComIfGp_getStartStageName(), "F_SP115")) {
pat = 9;
// Room is Lake
if (dComIfGp_roomControl_getStayNo() == 0 && dComIfGs_isSaveSwitch(0x11) &&
!dComIfGs_isSaveSwitch(0x75))
{
pat = 2;
}
if (dComIfGs_sense_type_change_Get() > 0) {
pat = 13;
}
}
// Stage is Zora's Domain
else if (!strcmp(dComIfGp_getStartStageName(), "F_SP113"))
{
if (dComIfGs_sense_type_change_Get() > 0) {
pat = 13;
} else {
pat = 1;
}
}
// Stage is Faron Woods Cave
else if (!strcmp(dComIfGp_getStartStageName(), "D_SB10"))
{
pat = 1;
}
// Stage is Zora's River
else if (!strcmp(dComIfGp_getStartStageName(), "F_SP112"))
{
pat = 3;
}
// Stage is Upper Zora's River
else if (!strcmp(dComIfGp_getStartStageName(), "F_SP126"))
{
pat = 6;
}
// Stage is Snowpeak
else if (!strcmp(dComIfGp_getStartStageName(), "F_SP114"))
{
pat = 4;
}
// Stage is Forest Temple or Goron Mines or Goron Stockcave or Grotto
else if (!memcmp(dComIfGp_getStartStageName(), "D_MN05", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_MN04", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB04", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB05", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB06", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB07", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB08", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB09", 6))
{
pat = 5;
}
// Stage is Stallord arena or Argorok arena
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10A") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN07A"))
{
pat = 14;
}
// Stage is Death Sword arena
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10B"))
{
pat = 15;
}
// Stage is Arbiter's Grounds
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10"))
{
pat = 8;
// Room is Central Poe room
if (dComIfGp_roomControl_getStayNo() == 2) {
pat = 14;
// Room is 2nd Poe room or 4th Poe room
} else if (dComIfGp_roomControl_getStayNo() == 3 || dComIfGp_roomControl_getStayNo() == 8) {
pat = 6;
}
}
// Stage is Blizzeta arena
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN11A"))
{
pat = 4;
}
// Stage is Snowpeak Ruins or Darkhammer or Ice Puzzle cave
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN11") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN11B") ||
!memcmp(dComIfGp_getStartStageName(), "D_SB00", 6))
{
pat = 7;
// Stage is Snowpeak Ruins and Room is Courtyard
if (!strcmp(dComIfGp_getStartStageName(), "D_MN11") &&
dComIfGp_roomControl_getStayNo() == 4)
{
pat = 4;
}
}
// Stage is Ganondorf Field or Ganondorf Defeated or Castle Town
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN09B") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN09C") ||
!strcmp(dComIfGp_getStartStageName(), "F_SP116"))
{
pat = 1;
}
// Stage is Temple of Time or City in the Sky or Hyrule Castle Throne Room or
// Cave of Ordeals or Cloud Sea or Hyrule Castle cutscenes or Lakebed Temple or Deku Toad
else if (!memcmp(dComIfGp_getStartStageName(), "D_MN06", 6) ||
!strcmp(dComIfGp_getStartStageName(), "D_MN07") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN09A") ||
!memcmp(dComIfGp_getStartStageName(), "D_SB01", 6) ||
!strcmp(dComIfGp_getStartStageName(), "R_SP300") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP301") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN01") ||
!strcmp(dComIfGp_getStartStageName(), "D_MN01B"))
{
pat = 8;
}
// Stage is Morpheel arena
else if (!strcmp(dComIfGp_getStartStageName(), "D_MN01A"))
{
pat = 14;
}
// Stage is Palace of Twilight
else if (!memcmp(dComIfGp_getStartStageName(), "D_MN08", 6))
{
pat = 9;
}
// Stage is Gorge Cave or Lake Hylia Cave
else if (!memcmp(dComIfGp_getStartStageName(), "D_SB02", 6) ||
!memcmp(dComIfGp_getStartStageName(), "D_SB03", 6))
{
pat = 10;
}
// Stage is Ordon Village Interiors or Faron Woods Interiors or
// Kakariko Graveyard or Telma's Bar or STAR game or Death Mountain or
// Hyrule Castle sewers
else if (!strcmp(dComIfGp_getStartStageName(), "R_SP01") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP108") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP209") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP116") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP161") ||
!strcmp(dComIfGp_getStartStageName(), "F_SP110") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP107"))
{
pat = 11;
// Stage is Ordon Village and Room is Sera's Shop
if (!strcmp(dComIfGp_getStartStageName(), "R_SP01") &&
dComIfGp_roomControl_getStayNo() == 1)
{
pat = 12;
}
}
// Stage is Hidden Village interiors or Castle Town interiors or Fishing Pond interiors
else if (!strcmp(dComIfGp_getStartStageName(), "R_SP128") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP160") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP127"))
{
pat = 12;
}
// Stage is Kakariko Village interiors
else if (!strcmp(dComIfGp_getStartStageName(), "R_SP109"))
{
pat = 12;
// Room is Sanctuary or Inn
if (dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 2) {
pat = 11;
}
}
return pat;
}
/* ############################################################################################## */
/* 803BBDB8-803BBDC4 018ED8 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803BBDC4-803BBEAC 018EE4 00E8+00 1/1 0/0 0/0 .data lightStatusBase */
SECTION_DATA static u8 lightStatusBase[232] = {
0xC7, 0x0E, 0x20, 0x80, 0x46, 0xE3, 0x51, 0x66, 0x46, 0x88, 0x1C, 0x66, 0x43, 0xBC, 0x80, 0x00,
0x45, 0xA2, 0xBB, 0x33, 0x44, 0x98, 0x8C, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00,
0xBF, 0x80, 0x00, 0x00, 0x42, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00,
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xA0, 0x00, 0x00, 0xC3, 0xA0, 0x00, 0x00,
0x44, 0x7A, 0x00, 0x00, 0x48, 0x1C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x09, 0x56, 0xB0, 0x40, 0x2E, 0x7E, 0x95,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
};
/* 803BBEAC-803BBEBC 018FCC 0010+00 4/4 0/0 0/0 .data lightMaskData */
SECTION_DATA static u16 lightMaskData[8] = {
GX_LIGHT0, GX_LIGHT1, GX_LIGHT2, GX_LIGHT3, GX_LIGHT4, GX_LIGHT5, GX_LIGHT6, GX_LIGHT7,
};
/* 8019CB0C-8019CCDC 19744C 01D0+00 3/2 0/0 0/0 .text dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10 */
static void dKy_WolfPowerup_BgAmbCol(GXColorS10* in_col_p) {
switch (dKy_sense_pat_get()) {
case 1:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 2:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 3:
in_col_p->r = 40;
in_col_p->g = 53;
in_col_p->b = 49;
break;
case 4:
in_col_p->r = 32;
in_col_p->g = 46;
in_col_p->b = 40;
break;
case 5:
in_col_p->r = 45;
in_col_p->g = 64;
in_col_p->b = 58;
break;
case 6:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 7:
in_col_p->r = 38;
in_col_p->g = 53;
in_col_p->b = 49;
break;
case 8:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 9:
in_col_p->r = 40;
in_col_p->g = 59;
in_col_p->b = 53;
break;
case 11:
case 12:
in_col_p->r = 45;
in_col_p->g = 64;
in_col_p->b = 58;
break;
case 10:
in_col_p->r = 40;
in_col_p->g = 60;
in_col_p->b = 58;
break;
case 13:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 14:
in_col_p->r = 33;
in_col_p->g = 48;
in_col_p->b = 44;
break;
case 15:
in_col_p->r = 30;
in_col_p->g = 48;
in_col_p->b = 59;
break;
}
}
/* ############################################################################################## */
/* 803BBEFC-803BBF3C -00001 0040+00 1/1 0/0 0/0 .data @4364 */
SECTION_DATA static void* lit_4364[16] = {
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x168),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x40),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x54),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x68),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x7C),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x90),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0xA4),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0xB8),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0xCC),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0xE0),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0xF4),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x108),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x11C),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x130),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x144),
(void*)(((char*)dKy_WolfPowerup_FogNearFar__FPfPf) + 0x158),
};
/* 80453BC0-80453BC4 0021C0 0004+00 1/1 0/0 0/0 .sdata2 @4345 */
SECTION_SDATA2 static f32 lit_4345 = 750.0f;
/* 80453BC4-80453BC8 0021C4 0004+00 1/1 0/0 0/0 .sdata2 @4346 */
SECTION_SDATA2 static f32 lit_4346 = 1750.0f;
/* 80453BC8-80453BCC 0021C8 0004+00 2/2 0/0 0/0 .sdata2 @4347 */
SECTION_SDATA2 static f32 lit_4347 = 5000.0f;
/* 80453BCC-80453BD0 0021CC 0004+00 1/1 0/0 0/0 .sdata2 @4348 */
SECTION_SDATA2 static f32 lit_4348 = 40000.0f;
/* 80453BD0-80453BD4 0021D0 0004+00 1/1 0/0 0/0 .sdata2 @4349 */
SECTION_SDATA2 static f32 lit_4349 = 4000.0f;
/* 80453BD4-80453BD8 0021D4 0004+00 1/1 0/0 0/0 .sdata2 @4350 */
SECTION_SDATA2 static f32 lit_4350 = 12000.0f;
/* 80453BD8-80453BDC 0021D8 0004+00 4/4 0/0 0/0 .sdata2 @4351 */
SECTION_SDATA2 static f32 lit_4351 = 500.0f;
/* 80453BDC-80453BE0 0021DC 0004+00 1/1 0/0 0/0 .sdata2 @4352 */
SECTION_SDATA2 static f32 lit_4352 = 2250.0f;
/* 80453BE0-80453BE4 0021E0 0004+00 4/4 0/0 0/0 .sdata2 @4353 */
SECTION_SDATA2 static f32 lit_4353 = 1000.0f;
/* 80453BE4-80453BE8 0021E4 0004+00 2/2 0/0 0/0 .sdata2 @4354 */
SECTION_SDATA2 static f32 lit_4354 = 1800.0f;
/* 80453BE8-80453BEC 0021E8 0004+00 1/1 0/0 0/0 .sdata2 @4355 */
SECTION_SDATA2 static f32 lit_4355 = 2750.0f;
/* 80453BEC-80453BF0 0021EC 0004+00 4/4 0/0 0/0 .sdata2 @4356 */
SECTION_SDATA2 static f32 lit_4356 = 2000.0f;
/* 80453BF0-80453BF4 0021F0 0004+00 2/2 0/0 0/0 .sdata2 @4357 */
SECTION_SDATA2 static f32 lit_4357 = 3000.0f;
/* 80453BF4-80453BF8 0021F4 0004+00 4/4 0/0 0/0 .sdata2 @4358 */
SECTION_SDATA2 static f32 lit_4358 = 300.0f;
/* 80453BF8-80453BFC 0021F8 0004+00 1/1 0/0 0/0 .sdata2 @4359 */
SECTION_SDATA2 static f32 lit_4359 = 700.0f;
/* 80453BFC-80453C00 0021FC 0004+00 4/4 0/0 0/0 .sdata2 @4360 */
SECTION_SDATA2 static f32 lit_4360 = 1500.0f;
/* 80453C00-80453C04 002200 0004+00 1/1 0/0 0/0 .sdata2 @4361 */
SECTION_SDATA2 static f32 lit_4361 = 1250.0f;
/* 80453C04-80453C08 002204 0004+00 2/2 0/0 0/0 .sdata2 @4362 */
SECTION_SDATA2 static f32 lit_4362 = 80000.0f;
/* 80453C08-80453C0C 002208 0004+00 1/1 0/0 0/0 .sdata2 @4363 */
SECTION_SDATA2 static f32 lit_4363 = 4750.0f;
/* 8019CCDC-8019CE5C 19761C 0180+00 4/3 0/0 0/0 .text dKy_WolfPowerup_FogNearFar__FPfPf
*/
// matches with literals
#ifdef NONMATCHING
static void dKy_WolfPowerup_FogNearFar(f32* near_p, f32* far_p) {
switch (dKy_sense_pat_get()) {
case 1:
*near_p = 750.0f;
*far_p = 1750.0f;
break;
case 2:
*near_p = 5000.0f;
*far_p = 40000.0f;
break;
case 3:
*near_p = 4000.0f;
*far_p = 12000.0f;
break;
case 4:
*near_p = 500.0f;
*far_p = 2250.0f;
break;
case 5:
*near_p = 1000.0f;
*far_p = 1800.0f;
break;
case 6:
*near_p = 1000.0f;
*far_p = 2750.0f;
break;
case 7:
*near_p = 750.0f;
*far_p = 1750.0f;
break;
case 8:
*near_p = 750.0f;
*far_p = 1750.0f;
break;
case 9:
*near_p = 2000.0f;
*far_p = 3000.0f;
break;
case 10:
*near_p = 300.0f;
*far_p = 700.0f;
break;
case 11:
*near_p = 750.0f;
*far_p = 1500.0f;
break;
case 12:
*near_p = 500.0f;
*far_p = 1250.0f;
break;
case 13:
*near_p = 1000.0f;
*far_p = 80000.0f;
break;
case 14:
*near_p = 1250.0f;
*far_p = 3000.0f;
break;
case 15:
*near_p = 1000.0f;
*far_p = 4750.0f;
break;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_WolfPowerup_FogNearFar(f32* param_0, f32* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_WolfPowerup_FogNearFar__FPfPf.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453C0C-80453C10 00220C 0004+00 46/46 0/0 0/0 .sdata2 @4409 */
SECTION_SDATA2 static u8 lit_4409[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80453C10-80453C18 002210 0008+00 12/12 0/0 0/0 .sdata2 @4410 */
SECTION_SDATA2 static f64 lit_4410 = 0.5;
/* 80453C18-80453C20 002218 0008+00 12/12 0/0 0/0 .sdata2 @4411 */
SECTION_SDATA2 static f64 lit_4411 = 3.0;
/* 80453C20-80453C28 002220 0008+00 12/12 0/0 0/0 .sdata2 @4412 */
SECTION_SDATA2 static u8 lit_4412[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8019CE5C-8019CFE4 19779C 0188+00 1/1 0/0 0/0 .text dKy_pos2_get_angle__FP4cXyzP4cXyzPsPs */
// matches with literals
#ifdef NONMATCHING
static void dKy_pos2_get_angle(cXyz* param_0, cXyz* param_1, s16* param_2, s16* param_3) {
cXyz sp28;
sp28 = *param_0 - *param_1;
*param_2 = cM_atan2s(-sp28.y, sp28.absXZ());
*param_3 = cM_atan2s(sp28.x, sp28.z);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_pos2_get_angle(cXyz* param_0, cXyz* param_1, s16* param_2, s16* param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pos2_get_angle__FP4cXyzP4cXyzPsPs.s"
}
#pragma pop
#endif
/* 8042CA54-8042DD64 059774 1310+00 116/118 128/128 649/649 .bss g_env_light */
dScnKy_env_light_c g_env_light;
/* 80453C28-80453C2C 002228 0004+00 1/1 0/0 0/0 .sdata2 @4441 */
SECTION_SDATA2 static f32 lit_4441 = 0.0054931640625f;
/* 80453C2C-80453C30 00222C 0004+00 13/13 0/0 0/0 .sdata2 @4442 */
SECTION_SDATA2 static f32 lit_4442 = 90.0f;
/* 80453C30-80453C38 002230 0008+00 25/25 0/0 0/0 .sdata2 @4444 */
SECTION_SDATA2 static f64 lit_4444 = 4503601774854144.0 /* cast s32 to float */;
/* 8019CFE4-8019D1A0 197924 01BC+00 4/4 0/0 0/0 .text dKy_twi_wolflight_set__Fi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_twi_wolflight_set(int param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_twi_wolflight_set__Fi.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453C38-80453C3C 002238 0004+00 1/1 0/0 0/0 .sdata2 @4477 */
SECTION_SDATA2 static f32 lit_4477 = 57.2957763671875f;
/* 8019D1A0-8019D2C4 197AE0 0124+00 3/3 0/0 0/0 .text dKy_lightdir_set__FffP3Vec */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_lightdir_set(f32 param_0, f32 param_1, Vec* param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_lightdir_set__FffP3Vec.s"
}
#pragma pop
/* ############################################################################################## */
/* 803BBF3C-803BBF58 -00001 001C+00 1/1 0/0 0/0 .data @4511 */
SECTION_DATA static void* lit_4511[7] = {
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0x158),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0x78),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0x8C),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0xA8),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0xC4),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0xF0),
(void*)(((char*)dKy_GXInitLightSpot__FP12J3DLightInfofUc) + 0x120),
};
/* 80453C3C-80453C40 00223C 0004+00 1/1 0/0 0/0 .sdata2 @4502 */
SECTION_SDATA2 static f32 lit_4502 = 3.1415927410125732f;
/* 80453C40-80453C44 002240 0004+00 3/3 0/0 0/0 .sdata2 @4503 */
SECTION_SDATA2 static f32 lit_4503 = 180.0f;
/* 80453C44-80453C48 002244 0004+00 2/2 0/0 0/0 .sdata2 @4504 */
SECTION_SDATA2 static f32 lit_4504 = -1000.0f;
/* 80453C48-80453C4C 002248 0004+00 36/36 0/0 0/0 .sdata2 @4505 */
SECTION_SDATA2 static f32 lit_4505 = 1.0f;
/* 80453C4C-80453C50 00224C 0004+00 6/6 0/0 0/0 .sdata2 @4506 */
SECTION_SDATA2 static f32 lit_4506 = 2.0f;
/* 80453C50-80453C54 002250 0004+00 6/6 0/0 0/0 .sdata2 @4507 */
SECTION_SDATA2 static f32 lit_4507 = -1.0f;
/* 80453C54-80453C58 002254 0004+00 1/1 0/0 0/0 .sdata2 @4508 */
SECTION_SDATA2 static f32 lit_4508 = -4.0f;
/* 80453C58-80453C5C 002258 0004+00 2/2 0/0 0/0 .sdata2 @4509 */
SECTION_SDATA2 static f32 lit_4509 = 4.0f;
/* 80453C5C-80453C60 00225C 0004+00 1/1 0/0 0/0 .sdata2 @4510 */
SECTION_SDATA2 static f32 lit_4510 = -2.0f;
/* 8019D2C4-8019D44C 197C04 0188+00 3/2 0/0 0/0 .text dKy_GXInitLightSpot__FP12J3DLightInfofUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_GXInitLightSpot(J3DLightInfo* param_0, f32 param_1, u8 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_GXInitLightSpot__FP12J3DLightInfofUc.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453C60-80453C64 002260 0004+00 8/8 0/0 0/0 .sdata2 @4529 */
SECTION_SDATA2 static f32 lit_4529 = 0.5f;
/* 8019D44C-8019D520 197D8C 00D4+00 2/2 0/0 0/0 .text
* dKy_GXInitLightDistAttn__FP12J3DLightInfoffUc */
// matches with literals
#ifdef NONMATCHING
static void dKy_GXInitLightDistAttn(J3DLightInfo* i_info, f32 param_1, f32 param_2, u8 param_3) {
f32 temp_f3;
f32 var_f0;
f32 var_f4;
f32 var_f5;
if (param_1 < 0.0f) {
param_3 = 0;
}
if (param_2 <= 0.0f || param_2 >= 1.0f) {
param_3 = 0;
}
switch (param_3) { /* irregular */
case 1:
var_f4 = 1.0f;
var_f5 = (1.0f - param_2) / (param_2 * param_1);
var_f0 = 0.0f;
break;
case 2:
var_f4 = 1.0f;
temp_f3 = (1.0f - param_2) * 0.5f;
var_f5 = temp_f3 / (param_2 * param_1);
var_f0 = temp_f3 / (param_1 * param_2 * param_1);
break;
case 3:
var_f4 = 1.0f;
var_f5 = 0.0f;
var_f0 = (1.0f - param_2) / (param_1 * (param_2 * param_1));
break;
default:
case 0:
var_f4 = 1.0f;
var_f5 = 0.0f;
var_f0 = var_f5;
break;
}
i_info->mDistAtten.x = var_f4;
i_info->mDistAtten.y = var_f5;
i_info->mDistAtten.z = var_f0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_GXInitLightDistAttn(J3DLightInfo* param_0, f32 param_1, f32 param_2,
u8 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_GXInitLightDistAttn__FP12J3DLightInfoffUc.s"
}
#pragma pop
#endif
/* 8019D520-8019D56C 197E60 004C+00 1/1 0/0 0/0 .text u8_data_ratio_set__FUcUcf */
// matches with literals
#ifdef NONMATCHING
static s16 u8_data_ratio_set(u8 param_0, u8 param_1, f32 param_2) {
return param_0 + (int)(param_2 * (param_1 - param_0));
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm s16 u8_data_ratio_set(u8 param_0, u8 param_1, f32 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/u8_data_ratio_set__FUcUcf.s"
}
#pragma pop
#endif
/* 8019D56C-8019D5BC 197EAC 0050+00 1/1 0/0 0/0 .text s16_data_ratio_set__Fssf */
// matches with literals
#ifdef NONMATCHING
static s16 s16_data_ratio_set(s16 param_0, s16 param_1, f32 param_2) {
return param_0 + (s16)(param_2 * (param_1 - param_0));
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm s16 s16_data_ratio_set(s16 param_0, s16 param_1, f32 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/s16_data_ratio_set__Fssf.s"
}
#pragma pop
#endif
/* 8019D5BC-8019D61C 197EFC 0060+00 1/1 0/0 0/0 .text kankyo_color_ratio_calc_common__Fsf
*/
// matches with literals
#ifdef NONMATCHING
static u8 kankyo_color_ratio_calc_common(s16 param_0, f32 param_1) {
s16 color = param_0 * param_1;
if (color < 0) {
color = 0;
} else if (color > 255) {
color = 255;
}
return color;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm u8 kankyo_color_ratio_calc_common(s16 param_0, f32 param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/kankyo_color_ratio_calc_common__Fsf.s"
}
#pragma pop
#endif
/* 8019D61C-8019D68C 197F5C 0070+00 1/1 0/0 0/0 .text
* kankyo_color_ratio_calc__FP8_GXColor11_GXColorS10f */
static void kankyo_color_ratio_calc(GXColor* o_color, GXColorS10 param_1, f32 param_2) {
f32 ratio = param_2;
s16 g = param_1.g;
s16 b = param_1.b;
o_color->r = kankyo_color_ratio_calc_common(param_1.r, ratio);
o_color->g = kankyo_color_ratio_calc_common(g, ratio);
o_color->b = kankyo_color_ratio_calc_common(b, ratio);
}
/* 8019D68C-8019D790 197FCC 0104+00 2/2 0/0 0/0 .text kankyo_color_ratio_set__FUcUcfUcUcfsf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void kankyo_color_ratio_set(u8 param_0, u8 param_1, f32 param_2, u8 param_3, u8 param_4,
f32 param_5, s16 param_6, f32 param_7) {
nofralloc
#include "asm/d/kankyo/d_kankyo/kankyo_color_ratio_set__FUcUcfUcUcfsf.s"
}
#pragma pop
/* 8019D790-8019D7A0 1980D0 0010+00 1/1 0/0 0/0 .text fl_data_ratio_set__Ffff */
static f32 fl_data_ratio_set(f32 param_0, f32 param_1, f32 param_2) {
return param_0 + param_2 * (param_1 - param_0);
}
/* 8019D7A0-8019D878 1980E0 00D8+00 3/3 0/0 0/0 .text float_kankyo_color_ratio_set__Fffffffff */
static f32 float_kankyo_color_ratio_set(f32 param_0, f32 param_1, f32 param_2, f32 param_3,
f32 param_4, f32 param_5, f32 param_6, f32 param_7) {
f32 temp_f1;
f32 temp_f31;
temp_f31 = fl_data_ratio_set(param_0, param_1, param_2);
temp_f1 = fl_data_ratio_set(temp_f31, fl_data_ratio_set(param_3, param_4, param_2), param_5);
return temp_f1 + (param_7 * (param_6 - temp_f1));
}
/* 8019D878-8019D8AC 1981B8 0034+00 3/3 0/0 0/0 .text get_parcent__Ffff */
// matches with literals
#ifdef NONMATCHING
static f32 get_parcent(f32 param_0, f32 param_1, f32 param_2) {
f32 temp_f1;
f32 temp_f2;
f32 temp_f4 = param_0 - param_1;
if (0.0f != temp_f4) {
temp_f1 = 1.0f - (param_0 - param_2) / temp_f4;
if (!(temp_f1 >= 1.0f)) {
return temp_f1;
}
}
return 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm f32 get_parcent(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/get_parcent__Ffff.s"
}
#pragma pop
#endif
/* 8019D8AC-8019D8CC 1981EC 0020+00 0/0 1/1 1/1 .text dKy_get_parcent__Ffff */
f32 dKy_get_parcent(f32 param_0, f32 param_1, f32 param_2) {
return get_parcent(param_0, param_1, param_2);
}
/* ############################################################################################## */
/* 80453C64-80453C68 002264 0004+00 4/4 0/0 0/0 .sdata2 @4730 */
SECTION_SDATA2 static f32 lit_4730 = 1.0f / 10.0f;
/* 80453C68-80453C6C 002268 0004+00 9/9 0/0 0/0 .sdata2 @4731 */
SECTION_SDATA2 static f32 lit_4731 = 1.0f / 100.0f;
/* 80453C6C-80453C70 00226C 0004+00 8/8 0/0 0/0 .sdata2 @4732 */
SECTION_SDATA2 static f32 lit_4732 = 255.0f;
/* 8019D8CC-8019DD4C 19820C 0480+00 1/1 0/0 0/0 .text dKy_FiveSenses_fullthrottle_dark_static1__Fv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_FiveSenses_fullthrottle_dark_static1() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_FiveSenses_fullthrottle_dark_static1__Fv.s"
}
#pragma pop
/* 8019DD4C-8019DD6C 19868C 0020+00 0/0 1/1 0/0 .text dKy_FiveSenses_fullthrottle_dark__Fv */
void dKy_FiveSenses_fullthrottle_dark() {
dKy_FiveSenses_fullthrottle_dark_static1();
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394DD8 = "D_MN09";
#pragma pop
/* 80453C70-80453C74 002270 0004+00 4/4 0/0 0/0 .sdata2 @4850 */
SECTION_SDATA2 static f32 lit_4850 = 1000000.0f;
/* 80453C74-80453C78 002274 0004+00 1/1 0/0 0/0 .sdata2 @4851 */
SECTION_SDATA2 static f32 lit_4851 = 800.0f;
/* 80453C78-80453C80 002278 0004+04 3/3 0/0 0/0 .sdata2 @4852 */
SECTION_SDATA2 static f32 lit_4852[1 + 1 /* padding */] = {
250.0f,
/* padding */
0.0f,
};
/* 8019DD6C-8019E13C 1986AC 03D0+00 3/3 0/0 0/0 .text dKy_light_influence_id__F4cXyzi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int dKy_light_influence_id(cXyz param_0, int param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_light_influence_id__F4cXyzi.s"
}
#pragma pop
/* 8019E13C-8019E404 198A7C 02C8+00 2/2 0/0 0/0 .text dKy_eflight_influence_id__F4cXyzi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int dKy_eflight_influence_id(cXyz param_0, int param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_eflight_influence_id__F4cXyzi.s"
}
#pragma pop
/* 8019E404-8019E430 198D44 002C+00 1/1 0/0 0/0 .text dKy_light_influence_col__Fi */
static GXColorS10 dKy_light_influence_col(int param_0) {
dScnKy_env_light_c* env_light = &g_env_light;
return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mColor;
}
/* ############################################################################################## */
/* 80453C80-80453C88 002280 0008+00 14/14 0/0 0/0 .sdata2 @4964 */
SECTION_SDATA2 static f64 lit_4964 = 4503599627370496.0 /* cast u32 to float */;
/* 8019E430-8019E520 198D70 00F0+00 4/4 3/3 0/0 .text dKy_light_influence_col__FP8_GXColorf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_light_influence_col(_GXColor* param_0, f32 param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_light_influence_col__FP8_GXColorf.s"
}
#pragma pop
/* 8019E520-8019E548 198E60 0028+00 1/1 0/0 0/0 .text dKy_light_influence_power__Fi */
static f32 dKy_light_influence_power(int param_0) {
dScnKy_env_light_c* env_light = &g_env_light;
return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mPow;
}
/* 8019E548-8019E570 198E88 0028+00 1/1 0/0 0/0 .text dKy_light_influence_yuragi__Fi */
static f32 dKy_light_influence_yuragi(int param_0) {
dScnKy_env_light_c* env_light = &g_env_light;
return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mFluctuation;
}
/* 8019E570-8019E694 198EB0 0124+00 1/1 0/0 0/0 .text dKy_light_influence_distance__F4cXyzi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_light_influence_distance(cXyz param_0, int param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_light_influence_distance__F4cXyzi.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453C88-80453C8C 002288 0004+00 2/2 0/0 0/0 .sdata2 @5077 */
SECTION_SDATA2 static f32 lit_5077 = 99999.8984375f;
/* 8019E694-8019E708 198FD4 0074+00 2/2 0/0 0/0 .text plight_init__Fv */
static void plight_init() {
g_env_light.mLightInfluence[0].mPow = lit_5077;
for (int i = 0; i < 100; i++) {
g_env_light.mPointLight[i] = NULL;
}
for (int i = 0; i < 5; i++) {
g_env_light.mEfPLight[i] = NULL;
g_env_light.field_0x72c[i] = NULL;
}
g_env_light.mPlayerPLightIdx = -1;
g_env_light.mPlayerEfLightIdx = -1;
}
/* 8019E708-8019E734 199048 002C+00 1/1 0/0 0/0 .text darkmist_init__Fv */
static void darkmist_init() {
for (int i = 0; i < 10; i++) {
g_env_light.mDalkmistInf[i] = NULL;
}
}
/* ############################################################################################## */
/* 80453C8C-80453C90 00228C 0004+00 6/6 0/0 0/0 .sdata2 @5106 */
SECTION_SDATA2 static f32 lit_5106 = 200.0f;
/* 8019E734-8019E854 199074 0120+00 1/1 0/0 0/0 .text plight_set__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void plight_set() {
nofralloc
#include "asm/d/kankyo/d_kankyo/plight_set__Fv.s"
}
#pragma pop
/* 8019E854-8019E874 199194 0020+00 1/1 0/0 0/0 .text bgparts_activelight_init__Fv */
#ifdef NONMATCHING
static void bgparts_activelight_init() {
dScnKy_env_light_c* light = i_dKy_getEnvlight();
for (int i = 0; i < 2; i++) {
}
light->mBGpartsActiveLight[0].mIndex = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void bgparts_activelight_init() {
nofralloc
#include "asm/d/kankyo/d_kankyo/bgparts_activelight_init__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803BBF58-803BBFB8 019078 0060+00 1/1 0/0 0/0 .data test_pos_tbl$5126 */
SECTION_DATA static u8 test_pos_tbl[96] = {
0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC3, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00,
};
/* 803BBFB8-803BBFD0 0190D8 0018+00 1/1 0/0 0/0 .data test_color_tbl$5127 */
SECTION_DATA static u8 test_color_tbl[24] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80453C90-80453C94 002290 0004+00 5/5 0/0 0/0 .sdata2 @5191 */
SECTION_SDATA2 static f32 lit_5191 = 99.0f / 100.0f;
/* 80453C94-80453C98 002294 0004+00 9/9 0/0 0/0 .sdata2 @5192 */
SECTION_SDATA2 static f32 lit_5192 = 100.0f;
/* 80453C98-80453C9C 002298 0004+00 1/1 0/0 0/0 .sdata2 @5193 */
SECTION_SDATA2 static f32 lit_5193 = -90.0f;
/* 80453C9C-80453CA0 00229C 0004+00 3/3 0/0 0/0 .sdata2 @5194 */
SECTION_SDATA2 static f32 lit_5194 = 0.0010000000474974513f;
/* 8019E874-8019EAA0 1991B4 022C+00 1/1 0/0 0/0 .text dungeonlight_init__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dungeonlight_init() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dungeonlight_init__Fv.s"
}
#pragma pop
/* 8019EAA0-8019EBD0 1993E0 0130+00 1/1 0/0 0/0 .text undwater_init__Fv */
static void undwater_init() {
J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes("Always", 0x1D);
g_env_light.field_0xf38 = mDoExt_createSolidHeapFromGameToCurrent(0x600, 0x20);
if (g_env_light.field_0xf38 != NULL) {
g_env_light.field_0xf30 = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11020202);
if (g_env_light.field_0xf30 != NULL) {
g_env_light.field_0x105c = new mDoExt_btkAnm();
if (g_env_light.field_0x105c != NULL) {
J3DAnmTextureSRTKey* key =
(J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", 0x3C);
g_env_light.field_0x105c->init(modelData2, key, 1, 2, lit_4505, 0, -1);
}
}
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(g_env_light.field_0xf38);
}
}
/* 8019EBD0-8019EC98 199510 00C8+00 1/1 0/0 0/0 .text dKy_light_size_get__FPCc */
static void dKy_light_size_get(char const* stage) {
dKydata_lightsizeInfo_c* lightTbl = dKyd_light_size_tbl_getp();
dKydata_lightsizeInfo_c* lightTwTbl = dKyd_light_tw_size_tbl_getp();
if (!dKy_darkworld_check()) {
for (int i = 0; i < 36; i++) {
if (!strcmp(stage, lightTbl->stageName)) {
g_env_light.field_0x1309 = lightTbl->size;
return;
}
lightTbl++;
}
} else {
for (int i = 0; i < 9; i++) {
if (!strcmp(stage, lightTwTbl->stageName)) {
g_env_light.field_0x1309 = lightTwTbl->size;
return;
}
lightTwTbl++;
}
}
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394DE6 = "F_SP127";
#pragma pop
/* 80453CA0-80453CA4 0022A0 0004+00 2/2 0/0 0/0 .sdata2 @5344 */
SECTION_SDATA2 static f32 lit_5344 = 11.0f / 100.0f;
/* 80453CA4-80453CA8 0022A4 0004+00 1/1 0/0 0/0 .sdata2 @5345 */
SECTION_SDATA2 static f32 lit_5345 = -255.0f;
/* 80453CA8-80453CAC 0022A8 0004+00 3/3 0/0 0/0 .sdata2 @5346 */
SECTION_SDATA2 static f32 lit_5346 = 999999.875f;
/* 80453CAC-80453CB0 0022AC 0004+00 7/7 0/0 0/0 .sdata2 @5347 */
SECTION_SDATA2 static f32 lit_5347 = 15.0f;
/* 80453CB0-80453CB4 0022B0 0004+00 3/3 0/0 0/0 .sdata2 @5348 */
SECTION_SDATA2 static f32 lit_5348 = 360.0f;
/* 80453CB4-80453CB8 0022B4 0004+00 1/1 0/0 0/0 .sdata2 @5349 */
SECTION_SDATA2 static f32 lit_5349 = 0.012000000104308128f;
/* 8019EC98-8019F264 1995D8 05CC+00 1/1 0/0 0/0 .text envcolor_init__Fv */
// matches with literals
#ifdef NONMATCHING
static void envcolor_init() {
stage_palette_info_class* palette = dComIfGp_getStagePaletteInfo();
stage_pselect_info_class* pselect = dComIfGp_getStagePselectInfo();
stage_envr_info_class* envr = dComIfGp_getStageEnvrInfo();
stage_vrbox_info_class* vrbox = dComIfGp_getStageVrboxcolInfo();
dKy_actor_addcol_set(0, 0, 0, 0.0f);
dKy_fog_startendz_set(0.0f, 0.0f, 0.0f);
dKy_vrbox_addcol_set(0, 0, 0, 0.0f);
g_env_light.field_0x1280 = 0;
g_env_light.mInitAnmTimer = 1;
g_env_light.mSchBit = 0;
g_env_light.mSchbitTimer = 0;
g_env_light.mVrboxInvisible = false;
g_env_light.mContrastFlag = 0;
g_env_light.mFogAdjEnable = true;
g_env_light.mFogAdjTableType = 0;
g_env_light.mFogAdjCenter = 0x140;
dKyd_xfog_table_set(0);
g_env_light.mColAllcolRatio = 1.0f;
g_env_light.mColActColRatio = 1.0f;
g_env_light.mColBgColRatio = 1.0f;
g_env_light.mColFogColRatio = 1.0f;
g_env_light.mColVrboxSoraColRatio = 1.0f;
g_env_light.mColVrboxKumocolRatio = 1.0f;
g_env_light.field_0x1210 = 1.0f;
g_env_light.mAllcolRatio = 1.0f;
g_env_light.mActcolRatio = 1.0f;
g_env_light.mBgcolRatio = 1.0f;
g_env_light.mFogcolRatio = 1.0f;
g_env_light.mVrboxSoracolRatio = 1.0f;
g_env_light.mVrboxKumocolRatio = 1.0f;
g_env_light.field_0x122c = 1.0f;
g_env_light.mItemGetCol_chg = 0;
g_env_light.field_0x1240 = 0.0f;
g_env_light.field_0x1230 = 0.0f;
g_env_light.field_0x1234 = 0.0f;
g_env_light.mThunderEff.mStateTimer = 0;
g_env_light.field_0x1238 = 0.0f;
g_env_light.field_0x123c = 0.0f;
g_env_light.field_0x12d6 = 0;
g_env_light.mShadowMode = 0;
g_env_light.mCameraInWater = 0;
g_env_light.field_0x1258 = 0.0f;
g_env_light.mActorLightEffect = 100;
g_env_light.mPaletteTerrainLightEffect = 1.0f;
g_env_light.field_0x1064 = 0.0f;
g_env_light.field_0x1068 = -1.0f;
g_env_light.field_0x106c = -1.0f;
g_env_light.mDemoAttentionPoint = 0.0f;
if (!strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
g_env_light.mDemoAttentionPoint = 0.11f;
}
g_env_light.field_0x1308 = 0;
g_env_light.field_0x130b = 0;
g_env_light.field_0x1309 = 1;
dKy_light_size_get(dComIfGp_getStartStageName());
g_env_light.mGrassLightEffectRate = 1.0f;
g_env_light.field_0x12fc = -1;
g_env_light.field_0x1278 = 0.0f;
g_env_light.field_0x1264 = -255.0f;
g_env_light.field_0x1268 = 999999.0f;
g_env_light.field_0x126c = 999999.0f;
g_env_light.field_0x127c = 200.0f;
if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_BOSS_ROOM) {
g_env_light.mpSchedule = dKyd_schejule_boss_getp();
} else {
g_env_light.mpSchedule = dKyd_schejule_getp();
}
g_env_light.mNowRoom = dComIfGp_roomControl_getStayNo();
g_env_light.mEnvrIdxCurr = dComIfGp_roomControl_getStayNo();
g_env_light.mColPatBlend = 1.0f;
g_env_light.field_0x12b0 = 0;
g_env_light.mColpatWeather = 0;
g_env_light.field_0xecc = 0.0f;
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP127"))
{
if (g_env_light.field_0x12cc >= 7) {
g_env_light.mColpatWeather = 2;
} else if (g_env_light.field_0x12cc != 0) {
g_env_light.mColpatWeather = 1;
}
} else if (!strcmp(dComIfGp_getStartStageName(), "D_MN07A")) {
if (g_env_light.field_0x12cc == 1) {
g_env_light.mColpatWeather = 1;
} else if (g_env_light.field_0x12cc == 2) {
g_env_light.mColpatWeather = 2;
}
} else {
g_env_light.field_0x12cc = 0;
}
g_env_light.mRainCountOrig = 0;
g_env_light.field_0x12a0 = 0;
g_env_light.mDiceWeatherMode = 0;
g_env_light.mDiceWeatherChangeTime =
dComIfGs_getTime() + (cM_rndF(g_Counter.mCounter0 & 0x1F) * 15.0f);
if (g_env_light.mDiceWeatherChangeTime >= 360.0f) {
g_env_light.mDiceWeatherChangeTime -= 360.0f;
}
g_env_light.mDiceWeatherState = 0;
g_env_light.mDiceWeatherCurrPattern = 0;
g_env_light.mDiceWeatherCounter = 0;
g_env_light.mDiceWeatherTime = 0.0f;
g_env_light.mColPatPrev = g_env_light.mColpatWeather;
g_env_light.mColPatCurr = g_env_light.mColpatWeather;
g_env_light.mColpatPrevGather = 0xFF;
g_env_light.mColpatCurrGather = 0xFF;
g_env_light.mColPatBlendGather = -1.0f;
g_env_light.mColPatMode = 0;
g_env_light.mColPatModeGather = 0;
if (envr != NULL) {
g_env_light.mpDmEnvr = envr;
} else {
g_env_light.mpDmEnvr = (stage_envr_info_class*)dKyd_dmenvr_getp();
}
if (palette != NULL) {
g_env_light.mpDmPalet = palette;
} else {
g_env_light.mpDmPalet = (stage_palette_info_class*)dKyd_dmpalet_getp();
}
if (pselect != NULL) {
g_env_light.mpDmPselect = pselect;
} else {
g_env_light.mpDmPselect = (stage_pselect_info_class*)dKyd_dmpselect_getp();
}
if (vrbox != NULL) {
g_env_light.mpDmVrbox = vrbox;
} else {
g_env_light.mpDmVrbox = (stage_vrbox_info_class*)dKyd_dmvrbox_getp();
}
plight_init();
plight_set();
darkmist_init();
bgparts_activelight_init();
g_env_light.field_0x11c8 = 1.0f;
g_env_light.field_0x11cc = 1.0f;
g_env_light.field_0x11d0 = 1.0f;
g_env_light.field_0xf2c = 0;
g_env_light.field_0xf30 = NULL;
g_env_light.field_0xf34 = 0.0f;
g_env_light.field_0xf38 = NULL;
undwater_init();
dComIfGs_PolyDamageOff_Set(0);
g_env_light.field_0x98c = dComIfGp_roomControl_getStayNo();
g_env_light.mIsBlure = 0;
g_env_light.field_0x12fb = 0;
g_env_light.field_0x1300 = -1;
g_env_light.field_0x1302 = -1;
g_env_light.mWaterSurfaceShineRate = 1.0f;
int timeH = dStage_stagInfo_GetTimeH(i_dComIfGp_getStage()->getStagInfo());
if (timeH >= 0) {
dComIfGs_setTime(timeH * 15.0f);
}
g_env_light.mTimeSpeed = 0.012f;
memset(&g_env_light.mMoyaSE, 0, 0x10);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void envcolor_init() {
nofralloc
#include "asm/d/kankyo/d_kankyo/envcolor_init__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453CB8-80453CBC 0022B8 0004+00 3/3 0/0 0/0 .sdata2 @5365 */
SECTION_SDATA2 static f32 lit_5365 = 120.0f;
/* 8019F264-8019F2E8 199BA4 0084+00 1/1 1/1 0/0 .text dKy_clear_game_init__Fv */
// matches with literals
#ifdef NONMATCHING
void dKy_clear_game_init() {
dKy_actor_addcol_set(0, 0, 0, 0.0f);
g_env_light.mSunPos.x = 1.0f;
g_env_light.mSunPos.y = 0.0f;
g_env_light.mSunPos.z = 0.0f;
g_env_light.mMoonPos.x = -1.0f;
g_env_light.mMoonPos.y = 0.0f;
g_env_light.mMoonPos.z = 0.0f;
g_env_light.mNexttime = -1.0f;
g_env_light.mTime = -1.0f;
g_env_light.mDarkDaytime = 120.0f;
g_env_light.mDarktimeWeek = 0;
g_env_light.field_0x12fe = 0;
g_env_light.field_0x130a = 0;
g_env_light.field_0x12cc = 0;
g_env_light.field_0x130c = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_clear_game_init() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_clear_game_init__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803BBFD0-803BBFF0 -00001 0020+00 1/1 0/0 0/0 .data @5842 */
SECTION_DATA static void* lit_5842[8] = {
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x3D8),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x3E0),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x3E8),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x3F0),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x3F8),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x400),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x408),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x410),
};
/* 803BBFF0-803BC010 -00001 0020+00 1/1 0/0 0/0 .data @5841 */
SECTION_DATA static void* lit_5841[8] = {
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x168),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x170),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x178),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x180),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x188),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x190),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x198),
(void*)(((char*)setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc) +
0x1A0),
};
/* 803BC010-803BC028 019130 0018+00 1/1 0/0 0/0 .data now_shadow_alpha$5927 */
SECTION_DATA static u8 now_shadow_alpha[24] = {
0x3E, 0x80, 0x00, 0x00, 0x3E, 0xB3, 0x33, 0x33, 0x3F, 0x19, 0x99, 0x9A,
0x3F, 0x19, 0x99, 0x9A, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0xB3, 0x33, 0x33,
};
/* 803BC028-803BC050 -00001 0028+00 1/1 0/0 0/0 .data @6776 */
SECTION_DATA static void* lit_6776[10] = {
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x72C),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x4D4),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x528),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x558),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x4F0),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x50C),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x6A8),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x5B0),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x72C),
(void*)(((char*)
settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc) +
0x584),
};
/* 803BC050-803BC070 -00001 0020+00 1/1 0/0 0/0 .data @7029 */
SECTION_DATA static void* lit_7029[8] = {
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x8F8),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x904),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x910),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x91C),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x928),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x934),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x940),
(void*)(((char*)settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c) + 0x94C),
};
/* 803BC070-803BC080 019190 0010+00 0/1 0/0 0/0 .data flush_col$7304 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 flush_col[16] = {
0x01, 0x00, 0x00, 0x00, 0x04, 0x43, 0x73, 0x58, 0x0A, 0x25, 0x3E, 0x2D, 0x14, 0x00, 0x00, 0x00,
};
#pragma pop
/* 803BC080-803BC090 0191A0 0010+00 0/1 0/0 0/0 .data flush_col2$7305 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 flush_col2[16] = {
0x01, 0x00, 0x00, 0x00, 0x04, 0x6E, 0x5A, 0x00, 0x08, 0x4B, 0x22, 0x00, 0x0F, 0x00, 0x00, 0x00,
};
#pragma pop
/* 803BC090-803BC0A0 0191B0 0010+00 0/1 0/0 0/0 .data flush_col3$7306 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 flush_col3[16] = {
0x01, 0x00, 0x00, 0x00, 0x04, 0x46, 0x4D, 0x43, 0x0F, 0x22, 0x1E, 0x00, 0x14, 0x00, 0x00, 0x00,
};
#pragma pop
/* 803BC0A0-803BC0B4 -00001 0014+00 1/0 0/0 0/0 .data l_dKy_Method */
SECTION_DATA static void* l_dKy_Method[5] = {
(void*)dKy_Create__FPv,
(void*)dKy_Delete__FP17sub_kankyo__class,
(void*)dKy_Execute__FP17sub_kankyo__class,
(void*)dKy_IsDelete__FP17sub_kankyo__class,
(void*)dKy_Draw__FP17sub_kankyo__class,
};
/* 803BC0B4-803BC0DC -00001 0028+00 0/0 0/0 1/0 .data g_profile_KANKYO */
SECTION_DATA extern void* g_profile_KANKYO[10] = {
(void*)0xFFFFFFFD, (void*)0x0001FFFD, (void*)0x00130000, (void*)&g_fpcLf_Method,
(void*)0x000000F8, (void*)NULL, (void*)NULL, (void*)&g_fopKy_Method,
(void*)0x00020000, (void*)&l_dKy_Method,
};
/* 803BC0DC-803BC13C 0191FC 0030+30 1/1 0/0 0/0 .data parcent_tabel$9036 */
SECTION_DATA static u8 parcent_tabel[48 + 48 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3F,
0x80,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3F,
0x33,
0x33,
0x33,
0x3E,
0x99,
0x99,
0x9A,
0x00,
0x00,
0x00,
0x00,
0x3F,
0x19,
0x99,
0x9A,
0x3E,
0x99,
0x99,
0x9A,
0x3D,
0xCC,
0xCC,
0xCD,
/* padding */
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
};
/* 803BC13C-803BC158 01925C 000C+10 2/2 0/0 0/0 .data __vt__18dScnKy_env_light_c */
SECTION_DATA extern void* __vt__18dScnKy_env_light_c[3 + 4 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__18dScnKy_env_light_cFv,
/* padding */
NULL,
NULL,
NULL,
NULL,
};
/* 8019F2E8-8019F400 199C28 0118+00 1/1 0/0 0/0 .text __ct__18dScnKy_env_light_cFv */
dScnKy_env_light_c::dScnKy_env_light_c() {
dKy_clear_game_init();
}
/* 8019F400-8019F438 199D40 0038+00 1/1 0/0 0/0 .text __ct__19GB_MAPLE_COL_CHANGEFv */
GB_MAPLE_COL_CHANGE::GB_MAPLE_COL_CHANGE() {}
/* 8019F438-8019F474 199D78 003C+00 2/2 0/0 0/0 .text __dt__10BOSS_LIGHTFv */
BOSS_LIGHT::~BOSS_LIGHT() {}
/* 8019F474-8019F478 199DB4 0004+00 1/1 0/0 0/0 .text __ct__10BOSS_LIGHTFv */
BOSS_LIGHT::BOSS_LIGHT() {
/* empty function */
}
/* 8019F478-8019F4B4 199DB8 003C+00 2/2 0/0 0/0 .text __dt__13DUNGEON_LIGHTFv */
DUNGEON_LIGHT::~DUNGEON_LIGHT() {}
/* 8019F4B4-8019F4B8 199DF4 0004+00 1/1 0/0 0/0 .text __ct__13DUNGEON_LIGHTFv */
DUNGEON_LIGHT::DUNGEON_LIGHT() {
/* empty function */
}
/* 8019F4B8-8019F4F4 199DF8 003C+00 2/2 0/0 0/0 .text __dt__15WIND_INF_ENTITYFv */
WIND_INF_ENTITY::~WIND_INF_ENTITY() {}
/* 8019F4F4-8019F4F8 199E34 0004+00 1/1 0/0 0/0 .text __ct__15WIND_INF_ENTITYFv */
WIND_INF_ENTITY::WIND_INF_ENTITY() {
/* empty function */
}
/* 8019F4F8-8019F4FC 199E38 0004+00 1/1 0/0 0/0 .text __ct__15LIGHT_INFLUENCEFv */
extern "C" void __ct__15LIGHT_INFLUENCEFv() {
/* empty function */
}
/* ############################################################################################## */
/* 80453CBC-80453CC0 0022BC 0004+00 5/5 0/0 0/0 .sdata2 @5554 */
SECTION_SDATA2 static f32 lit_5554 = 60.0f;
/* 80453CC0-80453CC4 0022C0 0004+00 3/3 0/0 0/0 .sdata2 @5555 */
SECTION_SDATA2 static f32 lit_5555 = 150.0f;
/* 80453CC4-80453CC8 0022C4 0004+00 1/1 0/0 0/0 .sdata2 @5556 */
SECTION_SDATA2 static f32 lit_5556 = 195.0f;
/* 8019F4FC-8019F780 199E3C 0284+00 1/1 0/0 0/0 .text setDaytime__18dScnKy_env_light_cFv
*/
// matches with literals
#ifdef NONMATCHING
void dScnKy_env_light_c::setDaytime() {
mDate = dComIfGs_getDate();
mDaytime = dComIfGs_getTime();
if (field_0x12fb == 0) {
if (!dKy_darkworld_check()) {
if (!i_dComIfGp_event_runCheck()) {
fopAc_ac_c* ac = dMsgObject_c::getActor();
bool tmp = true;
if (ac != NULL && ac->mEvtInfo.mCommand >= 2) {
tmp = false;
}
if (dComIfGp_roomControl_getTimePass() && !field_0x130a && tmp) {
mDaytime += mTimeSpeed;
// Stage is Fishing Pond or Hena's Hut
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
!strcmp(dComIfGp_getStartStageName(), "R_SP127"))
{
f32 current_time = mDaytime;
if (current_time >= 300.0f || current_time <= 60.0f) {
mDaytime += mTimeSpeed;
mDaytime += mTimeSpeed;
} else if (current_time >= 150.0f && current_time <= 195.0f) {
mDaytime = current_time + mTimeSpeed;
}
}
if ((u32)mDaytime >= 360.0f) {
mDaytime = 0.0f;
mDate++;
dKankyo_DayProc();
}
}
}
} else {
mDarkDaytime += mTimeSpeed;
if ((u32)mDarkDaytime >= 360.0f) {
mDarktimeWeek++;
mDarkDaytime = 0.0f;
}
mDaytime = 0.0f;
}
}
if (mDaytime >= 360.0f) {
mDaytime = 0.0f;
}
dComIfGs_setTime(mDaytime);
mDoAud_setHour(dKy_getdaytime_hour());
mDoAud_setMinute(dKy_getdaytime_minute());
mDoAud_setWeekday(dKy_get_dayofweek());
dComIfGs_setDate(mDate);
g_env_light.field_0x12fb = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setDaytime() {
nofralloc
#include "asm/d/kankyo/d_kankyo/setDaytime__18dScnKy_env_light_cFv.s"
}
#pragma pop
#endif
/* 8019F780-8019F788 19A0C0 0008+00 1/1 0/0 0/0 .text GetTimePass__20dStage_roomControl_cFv */
s8 dStage_roomControl_c::GetTimePass() {
return m_time_pass;
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394DEE = "F_SP200";
#pragma pop
/* 80453CC8-80453CCC 0022C8 0004+00 2/2 0/0 0/0 .sdata2 @5613 */
SECTION_SDATA2 static f32 lit_5613 = 270.0f;
/* 80453CCC-80453CD0 0022CC 0004+00 1/1 0/0 0/0 .sdata2 @5614 */
SECTION_SDATA2 static f32 lit_5614 = 105.0f;
/* 80453CD0-80453CD4 0022D0 0004+00 3/3 0/0 0/0 .sdata2 @5615 */
SECTION_SDATA2 static f32 lit_5615 = 450.0f;
/* 80453CD4-80453CD8 0022D4 0004+00 1/1 0/0 0/0 .sdata2 @5616 */
SECTION_SDATA2 static f32 lit_5616 = 210.0f;
/* 80453CD8-80453CDC 0022D8 0004+00 1/1 0/0 0/0 .sdata2 @5617 */
SECTION_SDATA2 static f32 lit_5617 = 0.01745329238474369f;
/* 80453CDC-80453CE0 0022DC 0004+00 1/1 0/0 0/0 .sdata2 @5618 */
SECTION_SDATA2 static f32 lit_5618 = -48000.0f;
// setSunpos calls these functions as inlines somehow
// these need to be moved to MSL_C once an appropriate solution is found
inline float sinf(float x) {
return sin(x);
}
inline float cosf(float x) {
return cos(x);
}
/* 8019F788-8019FA08 19A0C8 0280+00 1/1 0/0 0/0 .text setSunpos__18dScnKy_env_light_cFv
*/
// matches with literals
#ifdef NONMATCHING
void dScnKy_env_light_c::setSunpos() {
camera_class* camera_p = dComIfGp_getCamera(0);
cXyz sp8;
if (camera_p != NULL && strcmp(dComIfGp_getStartStageName(), "F_SP200") != 0) {
f32 var_f3 = g_env_light.mDaytime;
f32 var_f31;
f32 var_f3_2;
f32 var_f30;
if (var_f3 >= 90.0f && var_f3 <= 270.0f) {
f32 percent = get_parcent(270.0f, 90.0f, var_f3);
var_f31 = (percent * 150.0f) + 105.0f;
} else {
if (var_f3 < 90.0f) {
var_f3 += 360.0f;
}
f32 percent = get_parcent(450.0f, 270.0f, var_f3);
var_f31 = (percent * 210.0f) + 255.0f;
if (var_f31 > 360.0f) {
var_f31 -= 360.0f;
}
}
var_f3_2 = 180.0f + g_env_light.mDaytime;
if (var_f3_2 >= 360.0f) {
var_f3_2 -= 360.0f;
}
if (var_f3_2 >= 90.0f && var_f3_2 <= 270.0f) {
f32 percent = get_parcent(270.0f, 90.0f, var_f3_2);
var_f30 = (percent * 150.0f) + 105.0f;
} else {
if (var_f3_2 < 90.0f) {
var_f3_2 += 360.0f;
}
f32 percent = get_parcent(450.0f, 270.0f, var_f3_2);
var_f30 = (percent * 210.0f) + 255.0f;
if (var_f30 > 360.0f) {
var_f30 -= 360.0f;
}
}
sp8.x = sinf(var_f31 * 0.01745329238474369f) * 80000.0f;
sp8.y = cosf(var_f31 * 0.01745329238474369f) * 80000.0f;
sp8.z = cosf(var_f31 * 0.01745329238474369f) * -48000.0f;
mSunPos.x = camera_p->mLookat.mEye.x + sp8.x;
mSunPos.y = camera_p->mLookat.mEye.y - sp8.y;
mSunPos.z = camera_p->mLookat.mEye.z + sp8.z;
sp8.x = sinf(var_f30 * 0.01745329238474369f) * 80000.0f;
sp8.y = cosf(var_f30 * 0.01745329238474369f) * 80000.0f;
sp8.z = cosf(var_f30 * 0.01745329238474369f) * -48000.0f;
mMoonPos.x = sp8.x;
mMoonPos.y = -sp8.y;
mMoonPos.z = sp8.z;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setSunpos() {
nofralloc
#include "asm/d/kankyo/d_kankyo/setSunpos__18dScnKy_env_light_cFv.s"
}
#pragma pop
#endif
/* 8019FA08-8019FA10 19A348 0008+00 3/3 5/5 1/1 .text getDaytime__18dScnKy_env_light_cFv
*/
f32 dScnKy_env_light_c::getDaytime() {
return mDaytime;
}
/* 8019FA10-8019FA3C 19A350 002C+00 2/2 2/2 32/32 .text dKy_getdaytime_hour__Fv */
s32 dKy_getdaytime_hour() {
return dComIfGs_getTime() / lit_5347;
}
/* 8019FA3C-8019FAB8 19A37C 007C+00 1/1 1/1 26/26 .text dKy_getdaytime_minute__Fv */
// matches with literals
#ifdef NONMATCHING
s32 dKy_getdaytime_minute() {
f32 tmp = ((s32)(dComIfGs_getTime() * 1000000.0f) % 15000000);
return tmp / 1000000.0f / 15.0f * 60.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 dKy_getdaytime_minute() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_getdaytime_minute__Fv.s"
}
#pragma pop
#endif
/* 8019FAB8-8019FAF4 19A3F8 003C+00 0/0 3/3 6/6 .text dKy_daynight_check__Fv */
s32 dKy_daynight_check() {
s32 hour = dKy_getdaytime_hour();
if (hour >= 6 && hour < 19) {
return 0; // day time
} else {
return 1; // night time
}
}
/* 8019FAF4-8019FB30 19A434 003C+00 0/0 0/0 22/22 .text dKy_getDarktime_hour__Fv */
s32 dKy_getDarktime_hour() {
return g_env_light.getDarkDaytime() / lit_5347;
}
/* 8019FB30-8019FBBC 19A470 008C+00 0/0 0/0 19/19 .text dKy_getDarktime_minute__Fv */
#ifdef NONMATCHING
s32 dKy_getDarktime_minute() {
f32 tmp = ((s32)(g_env_light.getDarkDaytime() * 1000000.0f) % 15000000);
return tmp / 1000000.0f / 15.0f * 60.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 dKy_getDarktime_minute() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_getDarktime_minute__Fv.s"
}
#pragma pop
#endif
/* 8019FBBC-8019FBCC 19A4FC 0010+00 0/0 0/0 8/8 .text dKy_getDarktime_week__Fv */
s32 dKy_getDarktime_week() {
return g_env_light.mDarktimeWeek;
}
/* 8019FBCC-8019FBD4 19A50C 0008+00 2/2 0/0 0/0 .text getDarkDaytime__18dScnKy_env_light_cFv */
f32 dScnKy_env_light_c::getDarkDaytime() {
return mDarkDaytime;
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394DF6 = "D_MN08D";
SECTION_DEAD static char const* const stringBase_80394DFE = "F_SP121";
#pragma pop
/* 80453CE0-80453CE4 0022E0 0004+00 1/1 0/0 0/0 .sdata2 @5839 */
SECTION_SDATA2 static f32 lit_5839 = 1.0f / 30.0f;
/* 80453CE4-80453CE8 0022E4 0004+00 1/1 0/0 0/0 .sdata2 @5840 */
SECTION_SDATA2 static f32 lit_5840 = 1.0f / 15.0f;
/* 8019FBD4-801A0340 19A514 076C+00 5/3 0/0 0/0 .text
* setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc */
// lots of issues
#ifdef NONMATCHING
void dScnKy_env_light_c::setLight_palno_get(u8* param_0, u8* param_1, u8* param_2, u8* param_3,
u8* param_4, u8* param_5, u8* param_6, u8* param_7,
f32* param_8, int* param_9, int* param_10,
f32* param_11, u8* param_12) {
u8 uvar3 = 0;
if (*param_12 != 0) {
*param_12 += 1;
if (*param_12 > 20) {
*param_12 = 0;
}
if (g_env_light.mColPatMode == 0 && g_env_light.mColPatModeGather == 0) {
*param_11 = g_env_light.mColPatBlend;
if (*param_11 >= 1.0f) {
*param_0 = *param_1;
*param_2 = *param_3;
}
}
}
for (int i = 0; i < 11; i++) {
// dKyd_lightSchejule* schedule_p = &mpSchedule[i];
if (mDaytime >= mpSchedule->startTime && mDaytime <= mpSchedule->endTime) {
*param_9 = mpSchedule->startTimeLight;
*param_10 = mpSchedule->endTimeLight;
*param_8 = get_parcent(mpSchedule->endTime, mpSchedule->startTime, mDaytime);
stage_envr_info_class* envr_p = &g_env_light.mpDmEnvr[*param_0];
u32 tmp = *param_2;
switch (tmp) {
case 0:
uvar3 = envr_p->field_0x0[0];
break;
case 1:
uvar3 = envr_p->field_0x0[1];
break;
case 2:
uvar3 = envr_p->field_0x0[2];
break;
case 3:
uvar3 = envr_p->field_0x0[3];
break;
case 4:
uvar3 = envr_p->field_0x0[4];
break;
case 5:
uvar3 = envr_p->field_0x0[5];
break;
case 6:
uvar3 = envr_p->field_0x0[6];
break;
case 7:
uvar3 = envr_p->field_0x0[7];
break;
default:
if (tmp > 7 && tmp < 64) {
uvar3 = envr_p->field_0x0[tmp];
}
break;
}
if (g_env_light.mCameraInWater != 0 &&
strcmp(dComIfGp_getStartStageName(), "D_MN08D") != 0 &&
strcmp(dComIfGp_getStartStageName(), "D_MN01A") != 0)
{
if (g_env_light.mColPatCurr == 0) {
uvar3 = envr_p->field_0x0[8];
} else {
uvar3 = envr_p->field_0x0[9];
}
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
camera_class* camera_p = dComIfGp_getCamera(0);
if (camera_p != NULL && camera_p->mLookat.mEye.y < 0.0f) {
uvar3 = envr_p->field_0x0[10];
}
}
if (uvar3 > 250) {
uvar3 = 0;
}
stage_pselect_info_class* pselect_p = &g_env_light.mpDmPselect[uvar3];
switch (*param_9) {
case 0:
*param_4 = pselect_p->mPalIdx[0];
break;
case 1:
*param_4 = pselect_p->mPalIdx[1];
break;
case 2:
*param_4 = pselect_p->mPalIdx[2];
break;
case 3:
*param_4 = pselect_p->mPalIdx[3];
break;
case 4:
*param_4 = pselect_p->mPalIdx[4];
break;
case 5:
*param_4 = pselect_p->mPalIdx[5];
break;
}
switch (*param_10) {
case 0:
*param_5 = pselect_p->mPalIdx[0];
break;
case 1:
*param_5 = pselect_p->mPalIdx[1];
break;
case 2:
*param_5 = pselect_p->mPalIdx[2];
break;
case 3:
*param_5 = pselect_p->mPalIdx[3];
break;
case 4:
*param_5 = pselect_p->mPalIdx[4];
break;
case 5:
*param_5 = pselect_p->mPalIdx[5];
break;
}
stage_envr_info_class* envr_p2 = &g_env_light.mpDmEnvr[*param_1];
u32 tmp_2 = *param_2;
switch (tmp_2) {
case 0:
uvar3 = envr_p2->field_0x0[0];
break;
case 1:
uvar3 = envr_p2->field_0x0[1];
break;
case 2:
uvar3 = envr_p2->field_0x0[2];
break;
case 3:
uvar3 = envr_p2->field_0x0[3];
break;
case 4:
uvar3 = envr_p2->field_0x0[4];
break;
case 5:
uvar3 = envr_p2->field_0x0[5];
break;
case 6:
uvar3 = envr_p2->field_0x0[6];
break;
case 7:
uvar3 = envr_p2->field_0x0[7];
break;
default:
if (tmp_2 > 7 && tmp_2 < 64) {
uvar3 = envr_p2->field_0x0[tmp_2];
}
break;
}
if (uvar3 > 250) {
uvar3 = 0;
}
stage_pselect_info_class* pselect_p2 = &g_env_light.mpDmPselect[uvar3];
if (*param_0 != *param_1 || *param_2 != tmp_2) {
if (pselect_p2->mChangeRate < 0.033333335f) {
pselect_p2->mChangeRate = 0.033333335f;
}
if (g_env_light.mColPatMode == 0) {
if (pselect_p2->mChangeRate > 0.0f) {
*param_11 += 0.033333335f / pselect_p2->mChangeRate;
}
if (strcmp(dComIfGp_getStartStageName(), "F_SP121") == 0 &&
*param_2 == *param_3)
{
*param_11 += 0.06666667f;
}
if (*param_11 >= 1.0f) {
*param_0 = *param_1;
*param_2 = *param_3;
*param_11 = 1.0f;
}
}
}
if (g_env_light.mCameraInWater != 0 &&
strcmp(dComIfGp_getStartStageName(), "D_MN08D") != 0 &&
strcmp(dComIfGp_getStartStageName(), "D_MN01A") != 0)
{
if (g_env_light.mColPatCurr == 0) {
uvar3 = envr_p2->field_0x0[8];
} else {
uvar3 = envr_p2->field_0x0[9];
}
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
camera_class* camera_p = dComIfGp_getCamera(0);
if (camera_p != NULL && camera_p->mLookat.mEye.y < 0.0f) {
uvar3 = envr_p2->field_0x0[10];
}
}
switch (*param_9) {
case 0:
*param_6 = pselect_p2->mPalIdx[0];
break;
case 1:
*param_6 = pselect_p2->mPalIdx[1];
break;
case 2:
*param_6 = pselect_p2->mPalIdx[2];
break;
case 3:
*param_6 = pselect_p2->mPalIdx[3];
break;
case 4:
*param_6 = pselect_p2->mPalIdx[4];
break;
case 5:
*param_6 = pselect_p2->mPalIdx[5];
break;
}
switch (*param_10) {
case 0:
*param_7 = pselect_p->mPalIdx[0];
break;
case 1:
*param_7 = pselect_p->mPalIdx[1];
break;
case 2:
*param_7 = pselect_p->mPalIdx[2];
break;
case 3:
*param_7 = pselect_p->mPalIdx[3];
break;
case 4:
*param_7 = pselect_p->mPalIdx[4];
break;
case 5:
*param_7 = pselect_p->mPalIdx[5];
break;
}
}
}
if (*param_4 > 250) {
*param_4 = 0;
}
if (*param_6 > 250) {
*param_6 = 0;
}
if (*param_5 > 250) {
*param_5 = 0;
}
if (*param_7 > 250) {
*param_7 = 0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setLight_palno_get(u8* param_0, u8* param_1, u8* param_2, u8* param_3,
u8* param_4, u8* param_5, u8* param_6, u8* param_7,
f32* param_8, int* param_9, int* param_10,
f32* param_11, u8* param_12) {
nofralloc
#include "asm/d/kankyo/d_kankyo/setLight_palno_get__18dScnKy_env_light_cFPUcPUcPUcPUcPUcPUcPUcPUcPfPiPiPfPUc.s"
}
#pragma pop
#endif
/* 801A0340-801A040C 19AC80 00CC+00 3/3 0/0 0/0 .text
* dKy_calc_color_set__FP11_GXColorS10P15color_RGB_classP15color_RGB_classP15color_RGB_classP15color_RGB_classff11_GXColorS10f
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_calc_color_set(_GXColorS10* param_0, color_RGB_class* param_1,
color_RGB_class* param_2, color_RGB_class* param_3,
color_RGB_class* param_4, f32 param_5, f32 param_6,
_GXColorS10 param_7, f32 param_8) {
nofralloc
#include "asm/d/kankyo/d_kankyo/func_801A0340.s"
}
#pragma pop
/* ############################################################################################## */
/* 80451068-80451070 -00001 0008+00 2/2 0/0 0/0 .sbss None */
/* 80451068 0002+00 data_80451068 S_fuwan_sin$5904 */
/* 8045106A 0001+00 data_8045106A None */
/* 8045106B 0005+00 data_8045106B None */
static u8 S_fuwan_sin[8];
/* 80453CE8-80453CEC 0022E8 0004+00 3/3 0/0 0/0 .sdata2 @6032 */
SECTION_SDATA2 static f32 lit_6032 = 100000.0f;
/* 80453CEC-80453CF0 0022EC 0004+00 5/5 0/0 0/0 .sdata2 @6033 */
SECTION_SDATA2 static f32 lit_6033 = 0.25f;
/* 80453CF0-80453CF4 0022F0 0004+00 2/2 0/0 0/0 .sdata2 @6034 */
SECTION_SDATA2 static f32 lit_6034 = 9.9999998245167e-14f;
/* 80453CF4-80453CF8 0022F4 0004+00 4/4 0/0 0/0 .sdata2 @6035 */
SECTION_SDATA2 static f32 lit_6035 = 1.0f / 5.0f;
/* 80453CF8-80453CFC 0022F8 0004+00 3/3 0/0 0/0 .sdata2 @6036 */
SECTION_SDATA2 static f32 lit_6036 = 4.0f / 5.0f;
/* 80453CFC-80453D00 0022FC 0004+00 3/3 0/0 0/0 .sdata2 @6037 */
SECTION_SDATA2 static f32 lit_6037 = 2.0f / 5.0f;
/* 80453D00-80453D04 002300 0004+00 2/2 0/0 0/0 .sdata2 @6038 */
SECTION_SDATA2 static f32 lit_6038 = 13.0f / 20.0f;
/* 80453D04-80453D08 002304 0004+00 1/1 0/0 0/0 .sdata2 @6039 */
SECTION_SDATA2 static f32 lit_6039 = 11.0f / 20.0f;
/* 80453D08-80453D0C 002308 0004+00 4/4 0/0 0/0 .sdata2 @6040 */
SECTION_SDATA2 static f32 lit_6040 = 1.0f / 20.0f;
/* 80453D0C-80453D10 00230C 0004+00 1/1 0/0 0/0 .sdata2 @6041 */
SECTION_SDATA2 static f32 lit_6041 = 0.004999999888241291f;
/* 80453D10-80453D14 002310 0004+00 9/9 0/0 0/0 .sdata2 @6042 */
SECTION_SDATA2 static f32 lit_6042 = 9.999999974752427e-07f;
/* 801A040C-801A133C 19AD4C 0F30+00 1/1 0/0 0/0 .text setLight__18dScnKy_env_light_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setLight() {
nofralloc
#include "asm/d/kankyo/d_kankyo/setLight__18dScnKy_env_light_cFv.s"
}
#pragma pop
/* 801A133C-801A16C0 19BC7C 0384+00 2/2 0/0 0/0 .text
* setLight_bg__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10P11_GXColorS10PfPf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setLight_bg(dKy_tevstr_c* param_0, _GXColorS10* param_1,
_GXColorS10* param_2, f32* param_3, f32* param_4) {
nofralloc
#include "asm/d/kankyo/d_kankyo/setLight_bg__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10P11_GXColorS10PfPf.s"
}
#pragma pop
/* void dScnKy_env_light_c::setLight_bg(dKy_tevstr_c* i_tevstr, _GXColorS10* param_1,
_GXColorS10* param_2, f32* param_3, f32* param_4) {
i_tevstr->mColpatPrev = g_env_light.mColPatPrev;
i_tevstr->mColpatCurr = g_env_light.mColPatCurr;
if (i_tevstr->mColpatPrev != i_tevstr->mColpatCurr) {
i_tevstr->mColpatBlend = g_env_light.mColPatBlend;
}
u8 sp9D;
u8 sp9F;
u8 sp9E;
u8 spA0;
f32 sp8C;
int sp90;
int sp94;
setLight_palno_get(&i_tevstr->mEnvrIdxPrev, &i_tevstr->mEnvrIdxCurr, &i_tevstr->mColpatPrev,
&i_tevstr->mColpatCurr, &sp9D, &sp9F, &sp9E, &spA0, &sp8C, &sp90, &sp94,
&i_tevstr->mColpatBlend, &i_tevstr->mInitTimer);
stage_palette_info_class* palette_p = g_env_light.mpDmPalet;
if (sp9D == 0xFF) {
for (int i = 0; i < 4; i++) {
param_1[i].r = 255;
param_1[i].g = 0;
param_1[i].b = 0;
}
} else {
for (int i = 0; i < 4; i++) {
GXColorS10 sp78;
sp78.r = mBgAddColAmb.r;
sp78.b = mBgAddColAmb.b;
dKy_calc_color_set(&param_1, &palette_p[sp9D].mK0Color[i], &palette_p[sp9E].mK0Color[i],
&palette_p[sp9F].mK0Color[i], &palette_p[spA0].mK0Color[i], sp8C,
i_tevstr->mColpatBlend, sp78, g_env_light.mColBgColRatio);
}
if (daPy_py_c::checkNowWolfPowerUp()) {
dKy_WolfPowerup_BgAmbCol(param_1);
}
param_1[3].a = 255;
param_1[2].a = 255;
param_1[1].a = 255;
param_1[0].a = 255;
for (int i = 0; i < 4; i++) {
GXColorS10 sp80;
sp80.r = mBgAddColAmb.r;
sp80.b = mBgAddColAmb.b;
dKy_calc_color_set(&param_1, &palette_p[sp9D].mK0Color[i], &palette_p[sp9E].mK0Color[i],
&palette_p[sp9F].mK0Color[i], &palette_p[spA0].mK0Color[i], sp8C,
i_tevstr->mColpatBlend, sp80, g_env_light.mColBgColRatio);
}
}
} */
/* 801A16C0-801A1D64 19C000 06A4+00 1/1 0/0 0/0 .text
* setLight_actor__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10PfPf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::setLight_actor(dKy_tevstr_c* param_0, _GXColorS10* param_1,
f32* param_2, f32* param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/setLight_actor__18dScnKy_env_light_cFP12dKy_tevstr_cP11_GXColorS10PfPf.s"
}
#pragma pop
/* 801A1D64-801A1F58 19C6A4 01F4+00 1/1 0/0 0/0 .text
* settingTevStruct_colget_actor__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_cP11_GXColorS10P11_GXColorS10PfPf
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::settingTevStruct_colget_actor(cXyz* param_0, dKy_tevstr_c* param_1,
_GXColorS10* param_2,
_GXColorS10* param_3, f32* param_4,
f32* param_5) {
nofralloc
#include "asm/d/kankyo/d_kankyo/func_801A1D64.s"
}
#pragma pop
/* 801A1F58-801A2090 19C898 0138+00 1/1 0/0 0/0 .text
* settingTevStruct_colget_player__18dScnKy_env_light_cFP12dKy_tevstr_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::settingTevStruct_colget_player(dKy_tevstr_c* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/settingTevStruct_colget_player__18dScnKy_env_light_cFP12dKy_tevstr_c.s"
}
#pragma pop
/* 801A2090-801A2128 19C9D0 0098+00 1/1 0/0 0/0 .text cLib_addCalcU8__FPUcUcss */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void cLib_addCalcU8(u8* param_0, u8 param_1, s16 param_2, s16 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/cLib_addCalcU8__FPUcUcss.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453D14-80453D18 002314 0004+00 1/1 0/0 0/0 .sdata2 @6761 */
SECTION_SDATA2 static f32 lit_6761 = 40.0f;
/* 80453D18-80453D1C 002318 0004+00 1/1 0/0 0/0 .sdata2 @6762 */
SECTION_SDATA2 static f32 lit_6762 = -800.0f;
/* 80453D1C-80453D20 00231C 0004+00 1/1 0/0 0/0 .sdata2 @6763 */
SECTION_SDATA2 static f32 lit_6763 = -120.0f;
/* 80453D20-80453D24 002320 0004+00 2/2 0/0 0/0 .sdata2 @6764 */
SECTION_SDATA2 static f32 lit_6764 = 80.0f;
/* 80453D24-80453D28 002324 0004+00 3/3 0/0 0/0 .sdata2 @6765 */
SECTION_SDATA2 static f32 lit_6765 = 10000.0f;
/* 80453D28-80453D2C 002328 0004+00 3/3 0/0 0/0 .sdata2 @6766 */
SECTION_SDATA2 static f32 lit_6766 = 10.0f;
/* 80453D2C-80453D30 00232C 0004+00 1/1 0/0 0/0 .sdata2 @6767 */
SECTION_SDATA2 static f32 lit_6767 = -20.0f;
/* 80453D30-80453D34 002330 0004+00 4/4 0/0 0/0 .sdata2 @6768 */
SECTION_SDATA2 static f32 lit_6768 = 9.999999747378752e-05f;
/* 80453D34-80453D38 002334 0004+00 3/3 0/0 0/0 .sdata2 @6769 */
SECTION_SDATA2 static f32 lit_6769 = 0.75f;
/* 80453D38-80453D3C 002338 0004+00 1/1 0/0 0/0 .sdata2 @6770 */
SECTION_SDATA2 static f32 lit_6770 = 21.0f / 100.0f;
/* 80453D3C-80453D40 00233C 0004+00 1/1 0/0 0/0 .sdata2 @6771 */
SECTION_SDATA2 static f32 lit_6771 = -35.0f;
/* 80453D40-80453D44 002340 0004+00 2/2 0/0 0/0 .sdata2 @6772 */
SECTION_SDATA2 static f32 lit_6772 = 9.999999747378752e-06f;
/* 80453D44-80453D48 002344 0004+00 1/1 0/0 0/0 .sdata2 @6773 */
SECTION_SDATA2 static f32 lit_6773 = -100.0f;
/* 80453D48-80453D4C 002348 0004+00 1/1 0/0 0/0 .sdata2 @6774 */
SECTION_SDATA2 static f32 lit_6774 = 1.0f / 25.0f;
/* 801A2128-801A37C4 19CA68 169C+00 2/1 0/0 0/0 .text
* settingTevStruct_plightcol_plus__18dScnKy_env_light_cFP4cXyzP12dKy_tevstr_c11_GXColorS1011_GXColorS10Uc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::settingTevStruct_plightcol_plus(cXyz* param_0, dKy_tevstr_c* param_1,
_GXColorS10 param_2,
_GXColorS10 param_3, u8 param_4) {
nofralloc
#include "asm/d/kankyo/d_kankyo/func_801A2128.s"
}
#pragma pop
/* 8042DD70-8042E07C 05AA90 030C+00 1/2 8/8 9/9 .bss g_mEnvSeMgr */
Z2EnvSeMgr g_mEnvSeMgr;
/* 8042E07C-8042E7BC 05AD9C 0740+00 5/4 0/0 0/0 .bss lightStatusData */
static LightStatus lightStatusData[8];
/* 80453D4C-80453D50 00234C 0004+00 1/1 0/0 0/0 .sdata2 @7011 */
SECTION_SDATA2 static f32 lit_7011 = 30000.0f;
/* 80453D50-80453D54 002350 0004+00 3/3 0/0 0/0 .sdata2 @7012 */
SECTION_SDATA2 static f32 lit_7012 = 0.9999899864196777f;
/* 80453D54-80453D58 002354 0004+00 1/1 0/0 0/0 .sdata2 @7013 */
SECTION_SDATA2 static f32 lit_7013 = -500.0f;
/* 80453D58-80453D5C 002358 0004+00 1/1 0/0 0/0 .sdata2 @7014 */
SECTION_SDATA2 static f32 lit_7014 = -30000.0f;
/* 80453D5C-80453D60 00235C 0004+00 1/1 0/0 0/0 .sdata2 @7015 */
SECTION_SDATA2 static f32 lit_7015 = 18800.0f;
/* 80453D60-80453D64 002360 0004+00 1/1 0/0 0/0 .sdata2 @7016 */
SECTION_SDATA2 static f32 lit_7016 = 29000.0f;
/* 80453D64-80453D68 002364 0004+00 1/1 0/0 0/0 .sdata2 @7017 */
SECTION_SDATA2 static f32 lit_7017 = -37000.0f;
/* 80453D68-80453D6C 002368 0004+00 1/1 0/0 0/0 .sdata2 @7018 */
SECTION_SDATA2 static f32 lit_7018 = 14400.0f;
/* 80453D6C-80453D70 00236C 0004+00 1/1 0/0 0/0 .sdata2 @7019 */
SECTION_SDATA2 static f32 lit_7019 = 7500.0f;
/* 80453D70-80453D74 002370 0004+00 1/1 0/0 0/0 .sdata2 @7020 */
SECTION_SDATA2 static f32 lit_7020 = 3900.0f;
/* 80453D74-80453D78 002374 0004+00 1/1 0/0 0/0 .sdata2 @7021 */
SECTION_SDATA2 static f32 lit_7021 = 18000.0f;
/* 80453D78-80453D7C 002378 0004+00 1/1 0/0 0/0 .sdata2 @7022 */
SECTION_SDATA2 static f32 lit_7022 = -6500.0f;
/* 80453D7C-80453D80 00237C 0004+00 1/1 0/0 0/0 .sdata2 @7023 */
SECTION_SDATA2 static f32 lit_7023 = -10000.0f;
/* 80453D80-80453D84 002380 0004+00 1/1 0/0 0/0 .sdata2 @7024 */
SECTION_SDATA2 static f32 lit_7024 = 3.0f / 10.0f;
/* 80453D84-80453D88 002384 0004+00 2/2 0/0 0/0 .sdata2 @7025 */
SECTION_SDATA2 static f32 lit_7025 = 3.0f / 5.0f;
/* 80453D88-80453D8C 002388 0004+00 2/2 0/0 0/0 .sdata2 @7026 */
SECTION_SDATA2 static f32 lit_7026 = 9.0f / 10.0f;
/* 80453D8C-80453D90 00238C 0004+00 2/2 0/0 0/0 .sdata2 @7027 */
SECTION_SDATA2 static f32 lit_7027 = 6.0f / 5.0f;
/* 801A37C4-801A441C 19E104 0C58+00 2/1 14/14 515/515 .text
* settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c */
// almost, just some regalloc + literals
#ifdef NONMATCHING
void dScnKy_env_light_c::settingTevStruct(int i_tevstrType, cXyz* param_1, dKy_tevstr_c* i_tevstr) {
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
u8 var_r30 = i_tevstr->mInitTimer;
GXColorS10 sp30;
GXColorS10 K0_color;
f32 fog_z_start;
f32 fog_z_end;
cXyz spA4;
if (i_tevstr->mRoomNo < 0) {
i_tevstr->mRoomNo = dComIfGp_roomControl_getStayNo();
}
if (param_1 != NULL) {
spA4 = *param_1;
} else {
spA4.set(0.0f, 0.0f, 0.0f);
}
if (i_tevstr != NULL && g_env_light.mActorLightEffect != 100) {
i_tevstr->field_0x374 = g_env_light.mActorLightEffect / 100.0f;
}
i_tevstr->field_0x37a = i_tevstrType;
if (i_tevstr->mInitType != 123 && i_tevstr->mInitType != 124) {
dKy_tevstr_init(i_tevstr, dComIfGp_roomControl_getStayNo(), 0xFF);
}
i_tevstr->mInitType = 124;
mActorAmbience.a = 255;
if (i_tevstrType == 14) {
camera_class* temp_r30 = dComIfGp_getCamera(0);
cXyz sp98;
i_tevstr->mLightMode = 0;
if (i_tevstr->mRoomNo >= 0x80) {
i_tevstr->mEnvrIdxCurr = 0;
} else {
i_tevstr->mEnvrIdxCurr = i_tevstr->mRoomNo;
}
if (!dKy_darkworld_check()) {
field_0x10f0.r = 24;
field_0x10f0.g = 24;
field_0x10f0.b = 24;
field_0x10f0.a = 255;
} else {
field_0x10f0.r = 55;
field_0x10f0.g = 55;
field_0x10f0.b = 77;
}
K0_color.r = 255;
K0_color.g = 255;
K0_color.b = 255;
fog_z_start = 30000.0f;
fog_z_end = 30000.0f;
dKyr_get_vectle_calc(&spA4, &temp_r30->mLookat.mEye, &sp98);
for (int i = 0; i < 6; i++) {
J3DLightInfo& light_info = i_tevstr->field_0x074[i].getLightInfo();
if (i == 0) {
if (!dKy_darkworld_check()) {
light_info.mColor.r = 126;
light_info.mColor.g = 110;
light_info.mColor.b = 89;
} else {
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
}
} else if (i == 1) {
if (!dKy_darkworld_check()) {
light_info.mColor.r = 24;
light_info.mColor.g = 41;
light_info.mColor.b = 50;
} else {
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
}
} else {
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
}
dKy_GXInitLightSpot(&light_info, 90.0f, 0);
dKy_GXInitLightDistAttn(&light_info, 100000.0f, 0.99999f, 3);
light_info.mLightPosition.x = 0.0f;
light_info.mLightPosition.y = 0.0f;
light_info.mLightPosition.z = 0.0f;
if (i == 0) {
light_info.mLightPosition.x = 500.0f;
light_info.mLightPosition.y = 500.0f;
light_info.mLightPosition.z = 500.0f;
} else {
light_info.mLightPosition.x = -500.0f;
light_info.mLightPosition.y = -500.0f;
light_info.mLightPosition.z = -500.0f;
}
dKy_lightdir_set(0.0f, 0.0f, &light_info.mLightDirection);
light_info.mLightDirection.x = -light_info.mLightDirection.x;
light_info.mLightDirection.y = -light_info.mLightDirection.y;
light_info.mLightDirection.z = -light_info.mLightDirection.z;
}
MtxP view_mtx = j3dSys.getViewMtx();
Vec sp8C;
Vec sp80;
sp80.x = temp_r30->mLookat.mEye.x;
sp80.y = temp_r30->mLookat.mEye.y;
sp80.z = temp_r30->mLookat.mEye.z;
cMtx_multVec(view_mtx, &sp80, &sp8C);
J3DLightInfo& light_info = i_tevstr->mLightObj.getLightInfo();
light_info.mLightPosition = sp8C;
i_tevstr->field_0x32c = sp80;
i_tevstr->mLightPosWorld = sp80;
light_info.mLightDirection = g_env_light.field_0x1064;
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
light_info.mCosAtten.x = 1.0f;
light_info.mCosAtten.y = 0.0f;
light_info.mCosAtten.z = 0.0f;
light_info.mDistAtten.x = 1.0f;
light_info.mDistAtten.y = 0.0f;
light_info.mDistAtten.z = 0.0f;
} else if (i_tevstrType == 12 || i_tevstrType == 13) {
camera_class* temp_r30_2 = dComIfGp_getCamera(0);
i_tevstr->mFogColor.r = 0;
i_tevstr->mFogColor.g = 0;
i_tevstr->mFogColor.b = 0;
i_tevstr->mFogColor.a = 0;
i_tevstr->field_0x360 = 0;
i_tevstr->field_0x361 = 0;
i_tevstr->field_0x362 = 0;
i_tevstr->field_0x363 = 0;
i_tevstr->mLightMode = 0;
if (i_tevstr->mRoomNo >= 128) {
i_tevstr->mEnvrIdxCurr = 0;
} else {
i_tevstr->mEnvrIdxCurr = i_tevstr->mRoomNo;
}
if (i_tevstrType == 12) {
field_0x10f0.r = 25;
field_0x10f0.g = 20;
field_0x10f0.b = 25;
} else {
field_0x10f0.r = 40;
field_0x10f0.g = 35;
field_0x10f0.b = 30;
}
field_0x10f0.a = 0xFF;
K0_color.r = 255;
K0_color.g = 255;
K0_color.b = 255;
fog_z_start = 30000.0f;
fog_z_end = 30000.0f;
for (int i = 0; i < 6; i++) {
J3DLightInfo& temp_r31 = i_tevstr->field_0x074[i].getLightInfo();
if (i == 0) {
if (i_tevstrType == 12) {
temp_r31.mLightPosition.x = -30000.0f;
temp_r31.mLightPosition.y = 18800.0f;
temp_r31.mLightPosition.z = 29000.0f;
temp_r31.mColor.r = 120;
temp_r31.mColor.g = 110;
temp_r31.mColor.b = 100;
} else {
temp_r31.mLightPosition.x = -37000.0f;
temp_r31.mLightPosition.y = 18800.0f;
temp_r31.mLightPosition.z = 500.0f;
temp_r31.mColor.r = 85;
temp_r31.mColor.g = 90;
temp_r31.mColor.b = 100;
}
} else if (i == 1) {
if (i_tevstrType == 12) {
temp_r31.mLightPosition.x = 14400.0f;
temp_r31.mLightPosition.y = 7500.0f;
temp_r31.mLightPosition.z = 3900.0f;
temp_r31.mColor.r = 30;
temp_r31.mColor.g = 45;
temp_r31.mColor.b = 30;
} else {
temp_r31.mLightPosition.x = 18000.0f;
temp_r31.mLightPosition.y = -6500.0f;
temp_r31.mLightPosition.z = -10000.0f;
temp_r31.mColor.r = 100;
temp_r31.mColor.g = 65;
temp_r31.mColor.b = 40;
}
} else {
temp_r31.mColor.r = 0;
temp_r31.mColor.g = 0;
temp_r31.mColor.b = 0;
}
dKy_GXInitLightSpot(&temp_r31, 90.0f, 0);
dKy_GXInitLightDistAttn(&temp_r31, 100000.0f, 0.99999f, 3);
dKy_lightdir_set(0.0f, 0.0f, &temp_r31.mLightDirection);
temp_r31.mLightDirection.x = -temp_r31.mLightDirection.x;
temp_r31.mLightDirection.y = -temp_r31.mLightDirection.y;
temp_r31.mLightDirection.z = -temp_r31.mLightDirection.z;
}
MtxP view_mtx = j3dSys.getViewMtx();
Vec sp74;
Vec sp68;
sp68.x = temp_r30_2->mLookat.mEye.x;
sp68.y = temp_r30_2->mLookat.mEye.y;
sp68.z = temp_r30_2->mLookat.mEye.z;
J3DLightInfo& light_info = i_tevstr->mLightObj.getLightInfo();
cMtx_multVec(view_mtx, &sp68, &sp74);
light_info.mLightPosition = sp74;
if (i_tevstrType == 13) {
i_tevstr->field_0x32c = sp68;
i_tevstr->mLightPosWorld = sp68;
}
light_info.mLightDirection = g_env_light.field_0x1064;
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
light_info.mCosAtten.x = 1.0f;
light_info.mCosAtten.y = 0.0f;
light_info.mCosAtten.z = 0.0f;
light_info.mDistAtten.x = 1.0f;
light_info.mDistAtten.y = 0.0f;
light_info.mDistAtten.z = 0.0f;
} else if (!(i_tevstrType & 0xF0)) {
i_tevstr->mLightMode = 1;
sp30 = mActorAmbience;
K0_color = mFogColor;
fog_z_start = mFogNear;
fog_z_end = mFogFar;
if (i_tevstrType == 0 || i_tevstrType == 0 || i_tevstrType == 8 || i_tevstrType == 7 ||
i_tevstrType == 1 || i_tevstrType == 2 || i_tevstrType == 3 || i_tevstrType == 5 ||
i_tevstrType == 4 || i_tevstrType == 11)
{
settingTevStruct_colget_actor(param_1, i_tevstr, &sp30, &K0_color, &fog_z_start,
&fog_z_end);
} else if (i_tevstrType == 10 || i_tevstrType == 9) {
if (g_env_light.field_0x98c != (u8)dComIfGp_roomControl_getStayNo()) {
g_env_light.field_0x98c = dComIfGp_roomControl_getStayNo();
mDoAud_setSceneName(
dComIfGp_getStartStageName(), dComIfGp_roomControl_getStayNo(),
dComIfG_play_c::getLayerNo_common(dComIfGp_getStartStageName(),
dComIfGp_roomControl_getStayNo(),
dComIfGp_getStartStageLayer()));
if (strcmp(dComIfGp_getStartStageName(), "F_SP121") == 0) {
mDoAud_load2ndDynamicWave();
}
}
var_r30 = g_env_light.mInitAnmTimer;
settingTevStruct_colget_player(i_tevstr);
settingTevStruct_colget_actor(param_1, i_tevstr, &sp30, &K0_color, &fog_z_start,
&fog_z_end);
}
field_0x10f0.r = sp30.r;
field_0x10f0.g = sp30.g;
field_0x10f0.b = sp30.b;
field_0x10f0.a = 255;
if (i_tevstrType != 11) {
settingTevStruct_plightcol_plus(param_1, i_tevstr, sp30, sp30, var_r30);
}
if (i_tevstrType == 10 || i_tevstrType == 9) {
g_env_light.mPLightNearPos = i_tevstr->mLightPosWorld;
}
} else {
i_tevstr->mLightMode = 0;
if (i_tevstr->field_0x37a != 20) {
i_tevstr->field_0x374 = g_env_light.mPaletteTerrainLightEffect;
} else {
switch (i_tevstr->field_0x364) {
case 0:
i_tevstr->field_0x374 = 0.2f;
break;
case 1:
i_tevstr->field_0x374 = 0.3f;
break;
case 2:
i_tevstr->field_0x374 = 0.4f;
break;
case 3:
i_tevstr->field_0x374 = 0.6f;
break;
case 4:
i_tevstr->field_0x374 = 0.8f;
break;
case 5:
i_tevstr->field_0x374 = 0.9f;
break;
case 6:
i_tevstr->field_0x374 = 1.0f;
break;
case 7:
i_tevstr->field_0x374 = 1.2f;
break;
default:
i_tevstr->field_0x374 = 1.0f;
break;
}
}
if (i_tevstr->mRoomNo >= 128) {
i_tevstr->mEnvrIdxCurr = 0;
} else {
i_tevstr->mEnvrIdxCurr = i_tevstr->mRoomNo;
}
GXColorS10 spB0[4];
setLight_bg(i_tevstr, spB0, &K0_color, &fog_z_start, &fog_z_end);
field_0x10f0 = spB0[i_tevstrType & 3];
MtxP view_mtx = j3dSys.getViewMtx();
Vec sp5C;
cXyz sp58;
bool var_r25_3 = 0;
sp58.z = 0.0f;
sp58.y = 0.0f;
sp58.x = 0.0f;
int temp_r3_2 = dKy_light_influence_id(sp58, 0);
if (temp_r3_2 >= 0 && g_env_light.mPointLight[temp_r3_2]->mIndex < 0) {
var_r25_3 = 1;
}
if (var_r25_3 == 1) {
sp58 = g_env_light.mPointLight[temp_r3_2]->mPosition;
J3DLightInfo& light_info = i_tevstr->mLightObj.getLightInfo();
cMtx_multVec(view_mtx, &sp58, &sp5C);
light_info.mLightPosition = sp5C;
i_tevstr->field_0x32c = sp58;
light_info.mLightDirection = g_env_light.field_0x1064;
light_info.mColor.a = g_env_light.mPointLight[temp_r3_2]->mColor.a;
light_info.mColor.r = g_env_light.mPointLight[temp_r3_2]->mColor.r;
light_info.mColor.g = g_env_light.mPointLight[temp_r3_2]->mColor.g;
light_info.mColor.b = g_env_light.mPointLight[temp_r3_2]->mColor.b;
dKy_GXInitLightSpot(&light_info, 90.0f, 0);
dKy_GXInitLightDistAttn(&light_info, g_env_light.mPointLight[temp_r3_2]->mPow * 0.001f,
0.99999f, 3);
} else {
MtxP view_mtx = j3dSys.getViewMtx();
J3DLightInfo& light_info = i_tevstr->mLightObj.getLightInfo();
Vec sp44;
cMtx_multVec(view_mtx, &lightStatusData[0].field_0x0, &sp44);
light_info.mLightPosition = sp44;
i_tevstr->field_0x32c = lightStatusData[0].field_0x0;
light_info.mLightDirection = g_env_light.field_0x1064;
light_info.mColor.r = 0;
light_info.mColor.g = 0;
light_info.mColor.b = 0;
light_info.mCosAtten.x = 0.0f;
light_info.mCosAtten.y = 0.0f;
light_info.mCosAtten.z = 0.0f;
light_info.mDistAtten.x = 0.0f;
light_info.mDistAtten.y = 0.0f;
light_info.mDistAtten.z = 0.0f;
}
i_tevstr->mLightPosWorld = g_env_light.mBaseLightInfluence.mPosition;
// i_tevstr->mLightPosWorld = env_light->mBaseLightInfluence.mPosition;
}
field_0x10f0.a = 255;
i_tevstr->mColorC0 = field_0x10f0;
i_tevstr->mColorK0 = K0_color;
i_tevstr->mFogStartZ = fog_z_start;
i_tevstr->mFogEndZ = fog_z_end;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::settingTevStruct(int param_0, cXyz* param_1, dKy_tevstr_c* param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c.s"
}
#pragma pop
#endif
/* 801A441C-801A4420 19ED5C 0004+00 0/0 0/0 2/2 .text
* setLightTevColorType__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c */
void dScnKy_env_light_c::setLightTevColorType(J3DModelData* param_0, dKy_tevstr_c* param_1) {}
/* ############################################################################################## */
/* 80453D90-80453D94 002390 0004+00 1/1 0/0 0/0 .sdata2 @7186 */
SECTION_SDATA2 static f32 lit_7186 = 185.0f;
/* 80453D94-80453D98 002394 0004+00 1/1 0/0 0/0 .sdata2 @7187 */
SECTION_SDATA2 static f32 lit_7187 = 95.0f;
/* 801A4420-801A4C08 19ED60 07E8+00 2/2 0/0 0/0 .text
* setLightTevColorType_MAJI_sub__FP11J3DMaterialP12dKy_tevstr_ci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void setLightTevColorType_MAJI_sub(J3DMaterial* param_0, dKy_tevstr_c* param_1,
int param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/setLightTevColorType_MAJI_sub__FP11J3DMaterialP12dKy_tevstr_ci.s"
}
#pragma pop
/* 801A4C08-801A4C0C 19F548 0004+00 0/0 4/0 0/0 .text setLight__13J3DColorBlockFUlP11J3DLightObj
*/
void J3DColorBlock::setLight(u32 param_0, J3DLightObj* param_1) {
/* empty function */
}
/* 801A4C0C-801A4C10 19F54C 0004+00 0/0 3/0 0/0 .text
* setAmbColor__13J3DColorBlockFUlPC10J3DGXColor */
void J3DColorBlock::setAmbColor(u32 param_0, J3DGXColor const* param_1) {
/* empty function */
}
/* 801A4C10-801A4DA0 19F550 0190+00 1/1 0/0 0/0 .text
* dKy_cloudshadow_scroll__FP12J3DModelDataP12dKy_tevstr_ci */
static void dKy_cloudshadow_scroll(J3DModelData* i_modelData, dKy_tevstr_c* i_tevstr, int param_2) {
JUTNameTab* mat_nametbl = i_modelData->getMaterialName();
for (int i = i_modelData->getMaterialNum() - 1; i >= 0; i--) {
J3DMaterial* mat_p = i_modelData->getMaterialNodePointer(i);
int tmp = param_2;
if (i_tevstr->field_0x378 != 0 && i_tevstr->field_0x378 == i) {
tmp = 2;
}
setLightTevColorType_MAJI_sub(mat_p, i_tevstr, tmp);
const char* mat_name = mat_nametbl->getName(i);
if ((mat_name[3] == 'M' && mat_name[4] == 'A' && mat_name[5] == '0' &&
(mat_name[6] == '0' || mat_name[6] == '1')) ||
(mat_name[5] == '1' && mat_name[6] == '6'))
{
if (mat_name[6] == '0') {
J3DGXColor k_color;
k_color.r = g_env_light.mFogDensity;
k_color.g = 0;
k_color.b = 0;
k_color.a = 0;
mat_p->setTevKColor(1, &k_color);
}
if (mat_p->getTexGenBlock()->getTexMtx(1) != NULL) {
J3DTexMtxInfo* tex_mtx_inf =
&mat_p->getTexGenBlock()->getTexMtx(1)->getTexMtxInfo();
if (tex_mtx_inf != NULL && g_env_light.mpVrkumoPacket != NULL) {
tex_mtx_inf->mSRT.mTranslationX = g_env_light.mpVrkumoPacket->field_0x1150;
tex_mtx_inf->mSRT.mTranslationY = g_env_light.mpVrkumoPacket->field_0x1154;
}
}
}
}
}
/* 801A4DA0-801A4E90 19F6E0 00F0+00 0/0 18/18 536/536 .text
* setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c */
void dScnKy_env_light_c::setLightTevColorType_MAJI(J3DModelData* i_modelData,
dKy_tevstr_c* i_tevstr) {
if (i_tevstr->mInitType != 124) {
if (i_tevstr->mInitType != 123) {
dKy_tevstr_init(i_tevstr, dComIfGp_roomControl_getStayNo(), 0xFF);
}
settingTevStruct(11, NULL, i_tevstr);
}
dKy_setLight_nowroom_actor(i_tevstr);
int tmp;
if (i_tevstr->field_0x37a > 10 && i_tevstr->field_0x37a != 12 && i_tevstr->field_0x37a != 13) {
tmp = 0;
} else {
tmp = 1;
}
if (i_tevstr->field_0x37a & 0x20) {
dKy_cloudshadow_scroll(i_modelData, i_tevstr, tmp);
} else {
for (int i = i_modelData->getMaterialNum() - 1; i >= 0; i--) {
setLightTevColorType_MAJI_sub(i_modelData->getMaterialNodePointer(i), i_tevstr, tmp);
}
}
}
/* 801A4E90-801A4F24 19F7D0 0094+00 1/1 0/0 0/0 .text CalcTevColor__18dScnKy_env_light_cFv */
void dScnKy_env_light_c::CalcTevColor() {
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
if (player_p != NULL) {
mPlayerEfLightIdx = dKy_eflight_influence_id(player_p->current.pos, 0);
mPlayerPLightIdx = dKy_light_influence_id(player_p->current.pos, 0);
}
}
/* 801A4F24-801A4F64 19F864 0040+00 1/1 0/0 0/0 .text Sndpos__18dScnKy_env_light_cFv */
void dScnKy_env_light_c::Sndpos() {
if (mSound.field_0x10 != 0) {
mSound.field_0x10--;
if (mSound.field_0x10 == 0) {
dKy_Sound_init();
}
}
}
/* 801A4F64-801A516C 19F8A4 0208+00 1/1 0/0 0/0 .text Eflight_flush_proc__18dScnKy_env_light_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::Eflight_flush_proc() {
nofralloc
#include "asm/d/kankyo/d_kankyo/Eflight_flush_proc__18dScnKy_env_light_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80450700-80450704 000180 0002+02 2/2 0/0 0/0 .sdata lightMask */
SECTION_SDATA static u16 lightMask = 0x0001;
/* 80450704-80450708 -00001 0004+00 3/3 0/0 0/0 .sdata lightStatusPt */
SECTION_SDATA static LightStatus* lightStatusPt = lightStatusData;
/* 80453D98-80453D9C 002398 0004+00 1/1 0/0 0/0 .sdata2 @7365 */
SECTION_SDATA2 static f32 lit_7365 = 67.5f;
/* 80453D9C-80453DA0 00239C 0004+00 1/1 0/0 0/0 .sdata2 @7366 */
SECTION_SDATA2 static f32 lit_7366 = 292.5f;
/* 801A516C-801A5288 19FAAC 011C+00 1/1 0/0 0/0 .text SetBaseLight__18dScnKy_env_light_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::SetBaseLight() {
nofralloc
#include "asm/d/kankyo/d_kankyo/SetBaseLight__18dScnKy_env_light_cFv.s"
}
#pragma pop
/* 801A5288-801A56DC 19FBC8 0454+00 1/1 0/0 0/0 .text exeKankyo__18dScnKy_env_light_cFv
*/
// regalloc
#ifdef NONMATCHING
void dScnKy_env_light_c::exeKankyo() {
for (int i = 0; i < 6; i++) {
field_0x0c18[i].field_0x26 = 0;
if (field_0x0d58[i].field_0x26 != 0) {
field_0x0d58[i].field_0x26 = 0;
dKy_BossLight_set(&field_0x0d58[i].mPos, &field_0x0d58[i].mColor,
field_0x0d58[i].field_0x10, 0);
}
}
g_env_light.mColPatMode = g_env_light.mColPatModeGather;
if (!i_dComIfGp_event_runCheck() && g_env_light.mColPatModeGather != 0) {
if (g_env_light.mColPatModeGather >= 3) {
g_env_light.mColPatModeGather = 0;
} else {
g_env_light.mColPatModeGather++;
}
}
if (g_env_light.mColPatMode != 0) {
if (g_env_light.mColpatPrevGather != 0xFF) {
g_env_light.mColPatPrev = g_env_light.mColpatPrevGather;
if (g_env_light.mColPatModeGather == 0) {
g_env_light.mColpatPrevGather = 0xFF;
}
}
if (g_env_light.mColpatCurrGather != 0xFF) {
g_env_light.mColPatCurr = g_env_light.mColpatCurrGather;
if (g_env_light.mColPatModeGather == 0) {
g_env_light.mColpatCurrGather = 0xFF;
}
}
if (g_env_light.mColPatBlendGather >= 0.0f) {
g_env_light.mColPatBlend = g_env_light.mColPatBlendGather;
if (g_env_light.mColPatModeGather == 0) {
g_env_light.mColPatBlendGather = -1.0f;
}
}
} else if (g_env_light.mColPatPrev == g_env_light.mColPatCurr) {
if (g_env_light.mColpatPrevGather != 0xFF) {
g_env_light.mColPatPrev = g_env_light.mColpatPrevGather;
g_env_light.mColpatPrevGather = 0xFF;
}
if (g_env_light.mColpatCurrGather != 0xFF) {
g_env_light.mColPatCurr = g_env_light.mColpatCurrGather;
g_env_light.mColpatCurrGather = 0xFF;
g_env_light.mColpatWeather = g_env_light.mColpatCurrGather;
}
if (g_env_light.mColPatBlendGather >= 0.0f) {
g_env_light.mColPatBlend = g_env_light.mColPatBlendGather;
g_env_light.mColPatBlendGather = -1.0f;
}
}
g_env_light.field_0x1210 = g_env_light.field_0x122c;
cLib_addCalc(&g_env_light.mColAllcolRatio, g_env_light.mAllcolRatio, 0.5f, 0.25f, 0.01f);
cLib_addCalc(&g_env_light.mColActColRatio, g_env_light.mActcolRatio, 0.5f, 0.25f, 0.01f);
cLib_addCalc(&g_env_light.mColBgColRatio, g_env_light.mBgcolRatio * g_env_light.field_0x1210,
0.5f, 0.25f, 0.01f);
cLib_addCalc(&g_env_light.mColFogColRatio, g_env_light.mFogcolRatio * g_env_light.field_0x1210,
0.5f, 0.25f, 0.01f);
cLib_addCalc(&g_env_light.mColVrboxSoraColRatio,
g_env_light.mVrboxSoracolRatio * g_env_light.field_0x1210, 0.5f, 0.25f, 0.01f);
cLib_addCalc(&g_env_light.mColVrboxKumocolRatio,
g_env_light.mVrboxKumocolRatio * g_env_light.field_0x1210, 0.5f, 0.25f, 0.01f);
g_env_light.mAllcolRatio = 1.0f;
g_env_light.mActcolRatio = 1.0f;
g_env_light.mBgcolRatio = 1.0f;
g_env_light.mFogcolRatio = 1.0f;
g_env_light.mVrboxSoracolRatio = 1.0f;
g_env_light.mVrboxKumocolRatio = 1.0f;
g_env_light.field_0x122c = 1.0f;
g_env_light.field_0x126c = g_env_light.field_0x1268;
g_env_light.field_0x1268 = 999999.9f;
for (int i = 50; i < 100; i++) {
g_env_light.mPointLight[i] = NULL;
}
g_env_light.field_0x130b = 0;
setDaytime();
dKyw_wether_proc();
CalcTevColor();
Sndpos();
Eflight_flush_proc();
daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0);
if (player_p != NULL) {
cXyz* flame_pos_p = player_p->getKandelaarFlamePos();
if (flame_pos_p != NULL) {
g_env_light.field_0x10a0 = *flame_pos_p;
dKy_shadow_mode_set(2);
} else if (dKy_shadow_mode_check(2)) {
dKy_shadow_mode_reset(2);
}
}
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
if ((dCam_getBody()->mCurMode == 4 || dCam_getBody()->mCurMode == 7) &&
i_dComIfGp_event_runCheck())
{
cLib_addCalc(&g_env_light.mDemoAttentionPoint, 0.0f, 0.5f, 0.1f, 1E-05f);
} else {
cLib_addCalc(&g_env_light.mDemoAttentionPoint, 0.11f, 0.5f, 0.1f, 1E-05f);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dScnKy_env_light_c::exeKankyo() {
nofralloc
#include "asm/d/kankyo/d_kankyo/exeKankyo__18dScnKy_env_light_cFv.s"
}
#pragma pop
#endif
/* 801A56DC-801A572C 1A001C 0050+00 1/1 0/0 0/0 .text drawKankyo__18dScnKy_env_light_cFv
*/
void dScnKy_env_light_c::drawKankyo() {
setSunpos();
SetBaseLight();
setLight();
dKy_setLight_nowroom(g_env_light.mNowRoom);
}
/* ############################################################################################## */
/* 8042E7BC-8042E7C8 05B4DC 000C+00 0/1 0/0 0/0 .bss @7485 */
#pragma push
#pragma force_active on
static u8 lit_7485[12];
#pragma pop
/* 8042E7C8-8042E7D4 05B4E8 000C+00 0/1 0/0 0/0 .bss S_old_cameye$7484 */
#pragma push
#pragma force_active on
static u8 S_old_cameye[12];
#pragma pop
/* 8042E7D4-8042E7E0 05B4F4 000C+00 0/1 0/0 0/0 .bss @7489 */
#pragma push
#pragma force_active on
static u8 lit_7489[12];
#pragma pop
/* 8042E7E0-8042E7F0 05B500 000C+04 0/1 0/0 0/0 .bss S_old_camctr$7488 */
#pragma push
#pragma force_active on
static u8 S_old_camctr[12 + 4 /* padding */];
#pragma pop
/* 80453DA0-80453DA4 0023A0 0004+00 1/1 0/0 0/0 .sdata2 @7608 */
SECTION_SDATA2 static f32 lit_7608 = 0.005239999853074551f;
/* 80453DA4-80453DA8 0023A4 0004+00 2/2 0/0 0/0 .sdata2 @7609 */
SECTION_SDATA2 static f32 lit_7609 = 35.0f;
/* 801A572C-801A5B6C 1A006C 0440+00 0/0 1/1 0/0 .text dKy_undwater_filter_draw__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_undwater_filter_draw() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_undwater_filter_draw__Fv.s"
}
#pragma pop
/* 801A5B6C-801A5B98 1A04AC 002C+00 1/0 0/0 0/0 .text dKy_Draw__FP17sub_kankyo__class */
static int dKy_Draw(sub_kankyo__class* i_this) {
g_env_light.drawKankyo();
return 1;
}
/* 801A5B98-801A5BCC 1A04D8 0034+00 1/0 0/0 0/0 .text dKy_Execute__FP17sub_kankyo__class
*/
static int dKy_Execute(sub_kankyo__class* i_this) {
g_env_light.exeKankyo();
dKyw_wind_set();
dKy_twilight_camelight_set();
return 1;
}
/* 801A5BCC-801A5BD4 1A050C 0008+00 1/0 0/0 0/0 .text dKy_IsDelete__FP17sub_kankyo__class
*/
static int dKy_IsDelete(sub_kankyo__class* i_this) {
return 1;
}
/* 801A5BD4-801A5C1C 1A0514 0048+00 1/0 0/0 0/0 .text dKy_Delete__FP17sub_kankyo__class
*/
static int dKy_Delete(sub_kankyo__class* i_this) {
plight_init();
mDoAud_mEnvse_resetScene();
if (g_env_light.field_0xf38 != NULL) {
mDoExt_destroySolidHeap(g_env_light.field_0xf38);
}
return 1;
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394E06 = "pol_efftbl.dat";
SECTION_DEAD static char const* const stringBase_80394E15 = "pol_effcol.dat";
SECTION_DEAD static char const* const stringBase_80394E24 = "pol_efftbl2.dat";
SECTION_DEAD static char const* const stringBase_80394E34 = "pol_effcol2.dat";
SECTION_DEAD static char const* const stringBase_80394E44 = "pol_sound.dat";
SECTION_DEAD static char const* const stringBase_80394E52 = "pol_arg.dat";
SECTION_DEAD static char const* const stringBase_80394E5E = "colordata_tbl.dat";
#pragma pop
/* 801A5C1C-801A5E54 1A055C 0238+00 1/0 0/0 0/0 .text dKy_Create__FPv */
// matches with literals
#ifdef NONMATCHING
static int dKy_Create(void* i_this) {
BOOL setNextTime = false;
stage_envr_info_class* envr = dComIfGp_getStageEnvrInfo();
if (envr != NULL && dComIfGp_getStartStageRoomNo() != -1) {
if (envr[dComIfGp_getStartStageRoomNo()].field_0x0[0x40] != 0) {
mDoGph_gInf_c::getBloom()->create();
}
}
envcolor_init();
g_env_light.field_0x12b0 = 0;
g_env_light.field_0x1254 = 1.0f;
g_env_light.mPLightNearPos.x = 0.0f;
g_env_light.mPLightNearPos.y = 0.0f;
g_env_light.mPLightNearPos.z = 0.0f;
g_env_light.field_0xf3c = 0;
g_env_light.field_0xf40 = 0.0f;
g_env_light.field_0xf3d = 0;
dKy_setLight_init();
dKy_Sound_init();
dKyw_wind_set();
dungeonlight_init();
dKy_setLight_nowroom(dComIfGp_roomControl_getStayNo());
g_env_light.mResPolEfftbl = (dKy_pol_efftbl_struct*)dComIfG_getStageRes("pol_efftbl.dat");
g_env_light.mResPolEffcol = (dKy_pol_effcol_struct*)dComIfG_getStageRes("pol_effcol.dat");
g_env_light.mResPolEfftbl2 = (dKy_pol_efftbl_struct*)dComIfG_getStageRes("pol_efftbl2.dat");
g_env_light.mResPolEffcol2 = (dKy_pol_effcol_struct*)dComIfG_getStageRes("pol_effcol2.dat");
g_env_light.mResPolSound = (dKy_pol_sound_struct*)dComIfG_getStageRes("pol_sound.dat");
g_env_light.mResPolArg = (dKy_pol_arg_struct*)dComIfG_getStageRes("pol_arg.dat");
g_env_light.mResColorDataTbl = (dKy_color_data_struct*)dComIfG_getStageRes("colordata_tbl.dat");
if (g_env_light.mNexttime != -1.0f) {
setNextTime = true;
dComIfGs_setTime(g_env_light.mNexttime);
}
if (dKy_darkworld_check()) {
if (g_env_light.mTime == -1.0f) {
g_env_light.mTime = dComIfGs_getTime();
}
} else if (g_env_light.mTime != -1.0f) {
if (!setNextTime) {
dComIfGs_setTime(g_env_light.mTime);
}
g_env_light.mTime = -1.0f;
}
g_env_light.mNexttime = -1.0f;
return cPhs_COMPLEATE_e;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int dKy_Create(void* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_Create__FPv.s"
}
#pragma pop
#endif
/* 801A5E54-801A60BC 1A0794 0268+00 1/1 1/1 0/0 .text dKy_setLight_init__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_setLight_init() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_setLight_init__Fv.s"
}
#pragma pop
/* 801A60BC-801A60E0 1A09FC 0024+00 0/0 1/1 0/0 .text dKy_setLight__Fv */
void dKy_setLight() {
g_env_light.mSunPos2 = g_env_light.mSunPos;
}
/* 801A60E0-801A61F4 1A0A20 0114+00 2/2 0/0 0/0 .text dKy_GlobalLight_set__Fv */
// matches with literals
#ifdef NONMATCHING
static void dKy_GlobalLight_set() {
MtxP view_mtx = j3dSys.getViewMtx();
for (int i = 0; i < 8; i++) {
LightStatus* light_status = &lightStatusData[i];
Vec light_pos;
cMtx_multVec(view_mtx, &light_status->field_0x0, &light_pos);
GXLightObj light_obj;
GXInitLightPos(&light_obj, light_pos.x, light_pos.y, light_pos.z);
GXInitLightDir(&light_obj, light_status->mLightDir.x, light_status->mLightDir.y,
light_status->mLightDir.z);
GXInitLightColor(&light_obj, light_status->field_0x18);
if (light_status->mRefDist <= 0.0f) {
light_status->mRefDist = 1.0E-6f;
}
GXInitLightDistAttn(&light_obj, light_status->mRefDist, light_status->mRefBrightness,
light_status->mDistFn);
GXInitLightSpot(&light_obj, light_status->mCutoff, light_status->mSpotFn);
GXLoadLightObjImm(&light_obj, (GXLightID)lightMaskData[i]);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_GlobalLight_set() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_GlobalLight_set__Fv.s"
}
#pragma pop
#endif
inline u8 dLVI_getSWLight(stage_pure_lightvec_info_class* i_info) {
return i_info->field_0x1e & 0x80;
}
/* 801A61F4-801A6278 1A0B34 0084+00 3/3 0/0 0/0 .text
* dKy_lightswitch_check__FP30stage_pure_lightvec_info_classc */
static bool dKy_lightswitch_check(stage_pure_lightvec_info_class* param_0, char i_roomNo) {
bool var_r31 = 1;
if (param_0->field_0x1f != 0xFF) {
if (!dLVI_getSWLight(param_0)) {
if (dComIfGs_isSwitch(param_0->field_0x1f, i_roomNo)) {
var_r31 = 0;
}
} else if (!dComIfGs_isSwitch(param_0->field_0x1f, i_roomNo)) {
var_r31 = 0;
}
}
return var_r31;
}
/* 801A6278-801A6C20 1A0BB8 09A8+00 2/2 0/0 0/0 .text dKy_setLight_nowroom_common__Fcf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_setLight_nowroom_common(char param_0, f32 param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_setLight_nowroom_common__Fcf.s"
}
#pragma pop
/* 801A6C20-801A6C58 1A1560 0038+00 2/2 1/1 0/0 .text dKy_setLight_nowroom__Fc */
void dKy_setLight_nowroom(char param_0) {
if (dComIfGp_getCamera(0) != NULL) {
dKy_setLight_nowroom_common(param_0, lit_4505);
}
}
/* 801A6C58-801A6D4C 1A1598 00F4+00 0/0 1/1 2/2 .text dKy_setLight_nowroom_grass__Fcf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_setLight_nowroom_grass(char param_0, f32 param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_setLight_nowroom_grass__Fcf.s"
}
#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394E70 = "D_MN";
#pragma pop
/* 801A6D4C-801A6E9C 1A168C 0150+00 1/1 1/1 0/0 .text dKy_move_room_ratio__FP12dKy_tevstr_cPSc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_move_room_ratio(dKy_tevstr_c* param_0, s8* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_move_room_ratio__FP12dKy_tevstr_cPSc.s"
}
#pragma pop
/* 801A6E9C-801A75C0 1A17DC 0724+00 1/1 1/1 0/0 .text dKy_setLight_nowroom_actor__FP12dKy_tevstr_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_setLight_nowroom_actor(dKy_tevstr_c* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_setLight_nowroom_actor__FP12dKy_tevstr_c.s"
}
#pragma pop
/* 801A75C0-801A75E0 1A1F00 0020+00 0/0 6/6 7/7 .text dKy_setLight_again__Fv */
void dKy_setLight_again() {
dKy_GlobalLight_set();
}
/* 801A75E0-801A76D8 1A1F20 00F8+00 0/0 3/3 5/5 .text dKy_Global_amb_set__FP12dKy_tevstr_c */
void dKy_Global_amb_set(dKy_tevstr_c* i_tevstr) {
GXColor color;
color.r = i_tevstr->mColorC0.r;
color.g = i_tevstr->mColorC0.g;
color.b = i_tevstr->mColorC0.b;
color.a = i_tevstr->mColorC0.a;
if (i_tevstr->field_0x37a == 2 || i_tevstr->field_0x37a == 3) {
if (dKy_darkworld_check()) {
if (i_tevstr->field_0x37a == 2) {
color.r = 18;
color.g = 18;
color.b = 18;
color.a = 0;
} else {
color.r = 12;
color.g = 12;
color.b = 12;
color.a = 0;
}
}
} else if ((i_tevstr->field_0x37a >= 1 && i_tevstr->field_0x37a <= 7) ||
(i_tevstr->field_0x37a == 9 && dKy_darkworld_check()))
{
color.r = 0;
color.g = 0;
color.b = 0;
color.a = 0;
}
GXSetChanAmbColor(GX_COLOR0A0, color);
}
/* 801A76D8-801A7714 1A2018 003C+00 1/1 0/0 0/0 .text dKy_light_influence_pos__Fi */
static cXyz dKy_light_influence_pos(int param_0) {
if (param_0 < 0) {
param_0 = 0;
}
dScnKy_env_light_c* env_light = &g_env_light;
return env_light->mPointLight[param_0]->mPosition;
}
/* 801A7714-801A7738 1A2054 0024+00 0/0 1/1 0/0 .text dKy_plight_near_pos__Fv */
cXyz dKy_plight_near_pos() {
return g_env_light.mPLightNearPos;
}
/* 801A7738-801A7790 1A2078 0058+00 0/0 0/0 1/1 .text
* dKy_mock_light_every_set__FP15LIGHT_INFLUENCE */
void dKy_mock_light_every_set(LIGHT_INFLUENCE* param_0) {
for (int i = 50; i < 100; i++) {
if (g_env_light.mPointLight[i] == NULL) {
g_env_light.mPointLight[i] = param_0;
g_env_light.mPointLight[i]->mIndex = i + 1;
break;
}
}
}
/* 801A7790-801A7814 1A20D0 0084+00 1/1 1/1 18/18 .text dKy_plight_set__FP15LIGHT_INFLUENCE */
void dKy_plight_set(LIGHT_INFLUENCE* param_0) {
for (int i = 0; i < 100; i++) {
if (g_env_light.mPointLight[i] == param_0) {
return;
}
}
for (int i = 0; i < 50; i++) {
if (g_env_light.mPointLight[i] == NULL) {
g_env_light.mPointLight[i] = param_0;
g_env_light.mPointLight[i]->mIndex = i + 1;
break;
}
}
}
/* 801A7814-801A7868 1A2154 0054+00 0/0 0/0 4/4 .text dKy_dalkmist_inf_set__FP18DALKMIST_INFLUENCE
*/
void dKy_dalkmist_inf_set(DALKMIST_INFLUENCE* param_0) {
for (int i = 0; i < 10; i++) {
if (g_env_light.mDalkmistInf[i] == NULL) {
g_env_light.mDalkmistInf[i] = param_0;
g_env_light.mDalkmistInf[i]->mIndex = i;
break;
}
}
}
/* 801A7868-801A789C 1A21A8 0034+00 0/0 0/0 4/4 .text dKy_dalkmist_inf_cut__FP18DALKMIST_INFLUENCE
*/
void dKy_dalkmist_inf_cut(DALKMIST_INFLUENCE* param_0) {
if (param_0 != NULL) {
if (param_0->mIndex < 10) {
g_env_light.mDalkmistInf[param_0->mIndex] = NULL;
}
}
}
/* 801A789C-801A792C 1A21DC 0090+00 0/0 0/0 1/1 .text dKy_plight_priority_set__FP15LIGHT_INFLUENCE
*/
void dKy_plight_priority_set(LIGHT_INFLUENCE* param_0) {
int i = 0;
for (; i < 50; i++) {
if (g_env_light.mPointLight[i] == NULL) {
g_env_light.mPointLight[i] = param_0;
g_env_light.mPointLight[i]->mIndex = -(i + 1);
break;
}
}
if (i >= 50) {
OSReport_Warning("\nPOINTLIGHT COUNT OVER!!!\n");
}
}
/* 801A792C-801A797C 1A226C 0050+00 0/0 1/1 32/32 .text dKy_plight_cut__FP15LIGHT_INFLUENCE */
void dKy_plight_cut(LIGHT_INFLUENCE* param_0) {
if (param_0 != NULL) {
if (param_0->mIndex != 0) {
if (param_0->mIndex < 0) {
param_0->mIndex *= -1;
}
int idx = (param_0->mIndex & 0xFFF) - 1;
if (idx < 50) {
g_env_light.mPointLight[idx] = NULL;
}
}
}
}
/* 801A797C-801A7A00 1A22BC 0084+00 1/1 1/1 3/3 .text dKy_efplight_set__FP15LIGHT_INFLUENCE */
void dKy_efplight_set(LIGHT_INFLUENCE* param_0) {
for (int i = 0; i < 5; i++) {
if (g_env_light.mEfPLight[i] == param_0) {
return;
}
}
for (int i = 0; i < 5; i++) {
if (g_env_light.mEfPLight[i] == NULL) {
g_env_light.mEfPLight[i] = param_0;
g_env_light.mEfPLight[i]->mIndex = i + 1;
break;
}
}
}
/* 801A7A00-801A7A40 1A2340 0040+00 1/1 1/1 3/3 .text dKy_efplight_cut__FP15LIGHT_INFLUENCE */
void dKy_efplight_cut(LIGHT_INFLUENCE* param_0) {
if (param_0 != NULL) {
if (param_0->mIndex != 0) {
int idx = param_0->mIndex - 1;
if (idx >= 0 && idx < 5) {
g_env_light.mEfPLight[idx] = NULL;
}
}
}
}
/* 801A7A40-801A7AAC 1A2380 006C+00 1/1 0/0 0/0 .text
* dKy_bgparts_activelight_set__FP15LIGHT_INFLUENCEi */
static void dKy_bgparts_activelight_set(LIGHT_INFLUENCE* influence_p, int param_1) {
if (influence_p != NULL) {
memcpy(&g_env_light.mBGpartsActiveLight[param_1], influence_p, sizeof(LIGHT_INFLUENCE));
g_env_light.mBGpartsActiveLight[param_1].mIndex = param_1 + 1;
}
}
/* 801A7AAC-801A7AC8 1A23EC 001C+00 1/1 0/0 0/0 .text dKy_bgparts_activelight_cut__Fi */
static void dKy_bgparts_activelight_cut(int param_0) {
g_env_light.mBGpartsActiveLight[param_0].mIndex = 0;
}
/* 801A7AC8-801A7B68 1A2408 00A0+00 1/1 1/1 1/1 .text dKy_actor_addcol_amb_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
void dKy_actor_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mActorAddColAmb.r = r * factor;
g_env_light.mActorAddColAmb.g = g * factor;
g_env_light.mActorAddColAmb.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_actor_addcol_amb_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_actor_addcol_amb_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7B68-801A7C08 1A24A8 00A0+00 1/1 1/1 1/1 .text dKy_bg_addcol_amb_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
void dKy_bg_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mBgAddColAmb.r = r * factor;
g_env_light.mBgAddColAmb.g = g * factor;
g_env_light.mBgAddColAmb.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_bg_addcol_amb_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_bg_addcol_amb_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7C08-801A7CA8 1A2548 00A0+00 1/1 1/1 0/0 .text dKy_bg1_addcol_amb_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
void dKy_bg1_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mBg1AddColAmb.r = r * factor;
g_env_light.mBg1AddColAmb.g = g * factor;
g_env_light.mBg1AddColAmb.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_bg1_addcol_amb_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_bg1_addcol_amb_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7CA8-801A7D48 1A25E8 00A0+00 1/1 0/0 0/0 .text dKy_bg2_addcol_amb_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
static void dKy_bg2_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mBg2AddColAmb.r = r * factor;
g_env_light.mBg2AddColAmb.g = g * factor;
g_env_light.mBg2AddColAmb.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_bg2_addcol_amb_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_bg2_addcol_amb_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7D48-801A7DE8 1A2688 00A0+00 1/1 0/0 0/0 .text dKy_bg3_addcol_amb_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
static void dKy_bg3_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mBg3AddColAmb.r = r * factor;
g_env_light.mBg3AddColAmb.g = g * factor;
g_env_light.mBg3AddColAmb.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_bg3_addcol_amb_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_bg3_addcol_amb_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7DE8-801A7E88 1A2728 00A0+00 1/1 1/1 0/0 .text dKy_addcol_fog_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
void dKy_addcol_fog_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mFogAddCol.r = r * factor;
g_env_light.mFogAddCol.g = g * factor;
g_env_light.mFogAddCol.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_addcol_fog_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_addcol_fog_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7E88-801A7F20 1A27C8 0098+00 2/2 0/0 2/2 .text dKy_actor_addcol_set__Fsssf */
void dKy_actor_addcol_set(s16 r, s16 g, s16 b, f32 factor) {
dKy_actor_addcol_amb_set(r, g, b, factor);
dKy_bg_addcol_amb_set(r, g, b, factor);
dKy_bg1_addcol_amb_set(r, g, b, factor);
dKy_bg2_addcol_amb_set(r, g, b, factor);
dKy_bg3_addcol_amb_set(r, g, b, factor);
}
/* 801A7F20-801A7FC0 1A2860 00A0+00 1/1 1/1 0/0 .text dKy_vrbox_addcol_sky0_set__Fsssf */
// matches with literals
#ifdef NONMATCHING
void dKy_vrbox_addcol_sky0_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mVrboxAddcolSky0.r = r * factor;
g_env_light.mVrboxAddcolSky0.g = g * factor;
g_env_light.mVrboxAddcolSky0.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_vrbox_addcol_sky0_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_vrbox_addcol_sky0_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A7FC0-801A8060 1A2900 00A0+00 1/1 1/1 0/0 .text dKy_vrbox_addcol_kasumi_set__Fsssf
*/
// matches with literals
#ifdef NONMATCHING
void dKy_vrbox_addcol_kasumi_set(s16 r, s16 g, s16 b, f32 factor) {
g_env_light.mVrboxAddcolKasumi.r = r * factor;
g_env_light.mVrboxAddcolKasumi.g = g * factor;
g_env_light.mVrboxAddcolKasumi.b = b * factor;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_vrbox_addcol_kasumi_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_vrbox_addcol_kasumi_set__Fsssf.s"
}
#pragma pop
#endif
/* 801A8060-801A80D0 1A29A0 0070+00 1/1 0/0 0/0 .text dKy_vrbox_addcol_set__Fsssf */
static void dKy_vrbox_addcol_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
dKy_vrbox_addcol_sky0_set(param_0, param_1, param_2, param_3);
dKy_vrbox_addcol_kasumi_set(param_0, param_1, param_2, param_3);
dKy_addcol_fog_set(param_0, param_1, param_2, param_3);
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394E90 =
"\ndKy_fog_startendz_set ratio error!\n";
#pragma pop
/* 801A80D0-801A8168 1A2A10 0098+00 1/1 0/0 2/2 .text dKy_fog_startendz_set__Ffff */
// matches with literals
#ifdef NONMATCHING
void dKy_fog_startendz_set(f32 param_0, f32 param_1, f32 ratio) {
if (ratio < 0.0f || ratio > 1.0f) {
OSReport_Warning("\ndKy_fog_startendz_set ratio error!\n");
ratio = 0.0f;
}
if (ratio < 9.999999747378752e-05f) {
ratio = 0.0f;
}
g_env_light.field_0x11ec = param_0;
g_env_light.field_0x11f0 = param_1;
g_env_light.field_0x11f4 = ratio;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_fog_startendz_set(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_fog_startendz_set__Ffff.s"
}
#pragma pop
#endif
/* 801A8168-801A8190 1A2AA8 0028+00 0/0 1/1 0/0 .text dKy_Itemgetcol_chg_on__Fv */
void dKy_Itemgetcol_chg_on() {
if (g_env_light.mItemGetCol_chg != 0 && g_env_light.mItemGetCol_chg != 6) {
return;
}
g_env_light.mItemGetCol_chg = 1;
}
/* 801A8190-801A81C0 1A2AD0 0030+00 2/2 0/0 0/0 .text dKy_Sound_init__Fv */
static void dKy_Sound_init() {
f32 tmp = lit_5346;
g_env_light.mSound.field_0x0.x = tmp;
g_env_light.mSound.field_0x0.y = tmp;
g_env_light.mSound.field_0x0.z = tmp;
g_env_light.mSound.field_0xc = 0;
g_env_light.mSound.field_0x14 = -1;
g_env_light.mSound.field_0x10 = 0;
}
/* 801A81C0-801A8474 1A2B00 02B4+00 0/0 5/5 27/27 .text dKy_Sound_set__F4cXyziUii */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_Sound_set(cXyz i_pos, int param_1, unsigned int i_actorID, int param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_Sound_set__F4cXyziUii.s"
}
#pragma pop
/* 801A8474-801A8484 1A2DB4 0010+00 0/0 1/1 8/8 .text dKy_Sound_get__Fv */
SND_INFLUENCE* dKy_Sound_get() {
return &g_env_light.mSound;
}
/* 801A8484-801A8538 1A2DC4 00B4+00 0/0 2/2 0/0 .text dKy_SordFlush_set__F4cXyzi */
// matches with literals
#ifdef NONMATCHING
void dKy_SordFlush_set(cXyz param_0, int param_1) {
dScnKy_env_light_c* light = i_dKy_getEnvlight();
if (!dKy_darkworld_check() &&
(light->mThunderEff.mStateTimer >= 10 || light->mThunderEff.field_0x8 <= 0.0f))
{
if (g_env_light.mSwordLight.mState == 0) {
g_env_light.mSwordLight.mState = 1;
g_env_light.mSwordLight.mLightType = param_1;
g_env_light.mSwordLight.field_0x8.mPosition = param_0;
} else if (g_env_light.mSwordLight.mState == 2) {
g_env_light.mSwordLight.mState = 4;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_SordFlush_set(cXyz param_0, int param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_SordFlush_set__F4cXyzi.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453DA8-80453DAC 0023A8 0004+00 3/3 0/0 0/0 .sdata2 @8647 */
SECTION_SDATA2 static f32 lit_8647 = 160000.0f;
/* 801A8538-801A85E8 1A2E78 00B0+00 1/1 0/0 0/0 .text GxFogSet_Sub__FP8_GXColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void GxFogSet_Sub(_GXColor* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/GxFogSet_Sub__FP8_GXColor.s"
}
#pragma pop
/* 801A85E8-801A862C 1A2F28 0044+00 1/1 0/0 0/0 .text GxFog_set__Fv */
static void GxFog_set() {
GXColor color;
color.r = g_env_light.mFogColor.r;
color.g = g_env_light.mFogColor.g;
color.b = g_env_light.mFogColor.b;
GxFogSet_Sub(&color);
}
/* 801A862C-801A8650 1A2F6C 0024+00 0/0 7/7 2/2 .text dKy_GxFog_set__Fv */
void dKy_GxFog_set() {
GxFog_set();
GxXFog_set();
}
/* 801A8650-801A86F8 1A2F90 00A8+00 0/0 3/3 6/6 .text dKy_GxFog_tevstr_set__FP12dKy_tevstr_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_GxFog_tevstr_set(dKy_tevstr_c* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_GxFog_tevstr_set__FP12dKy_tevstr_c.s"
}
#pragma pop
/* 801A86F8-801A87A0 1A3038 00A8+00 0/0 0/0 1/1 .text dKy_GfFog_tevstr_set__FP12dKy_tevstr_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_GfFog_tevstr_set(dKy_tevstr_c* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_GfFog_tevstr_set__FP12dKy_tevstr_c.s"
}
#pragma pop
/* 801A87A0-801A87E4 1A30E0 0044+00 3/3 0/0 0/0 .text GxXFog_set__Fv */
static void GxXFog_set() {
dKyd_xfog_table_set(g_env_light.mFogAdjTableType);
GXSetFogRangeAdj((GXBool)g_env_light.mFogAdjEnable, g_env_light.mFogAdjCenter,
&g_env_light.mXFogTbl);
}
/* 801A87E4-801A880C 1A3124 0028+00 0/0 0/0 52/52 .text dKy_change_colpat__FUc */
void dKy_change_colpat(u8 colpat) {
g_env_light.mColpatCurrGather = colpat;
if (g_env_light.mColPatCurr == colpat) {
return;
}
g_env_light.mColPatBlendGather = FLOAT_LABEL(lit_4409);
}
/* 801A880C-801A8854 1A314C 0048+00 0/0 0/0 25/25 .text dKy_custom_colset__FUcUcf */
void dKy_custom_colset(u8 prevGather, u8 curGather, f32 blend) {
if (g_env_light.mInitAnmTimer != 1) {
if (blend < lit_4505) {
g_env_light.mColpatPrevGather = prevGather;
} else {
g_env_light.mColpatPrevGather = curGather;
}
g_env_light.mColpatCurrGather = curGather;
g_env_light.mColPatBlendGather = blend;
g_env_light.mColPatModeGather = 1;
}
}
/* 801A8854-801A88EC 1A3194 0098+00 0/0 0/0 2/2 .text dKy_setLight_mine__FP12dKy_tevstr_c
*/
void dKy_setLight_mine(dKy_tevstr_c* p_tevstr) {
GXLightObj light;
GXInitLightPos(&light, p_tevstr->mLightObj.mInfo.mLightPosition.x,
p_tevstr->mLightObj.mInfo.mLightPosition.y,
p_tevstr->mLightObj.mInfo.mLightPosition.z);
GXInitLightDir(&light, p_tevstr->mLightObj.mInfo.mLightDirection.x,
p_tevstr->mLightObj.mInfo.mLightDirection.y,
p_tevstr->mLightObj.mInfo.mLightDirection.z);
GXInitLightColor(&light, p_tevstr->mLightObj.mInfo.mColor);
GXInitLightAttn(&light, p_tevstr->mLightObj.mInfo.mCosAtten.x,
p_tevstr->mLightObj.mInfo.mCosAtten.y, p_tevstr->mLightObj.mInfo.mCosAtten.z,
p_tevstr->mLightObj.mInfo.mDistAtten.x, p_tevstr->mLightObj.mInfo.mDistAtten.y,
p_tevstr->mLightObj.mInfo.mDistAtten.z);
GXLoadLightObjImm(&light, (GXLightID)*lightMaskData);
}
/* 801A88EC-801A8A34 1A322C 0148+00 2/2 5/5 11/11 .text dKy_tevstr_init__FP12dKy_tevstr_cScUc */
// matches with literals
#ifdef NONMATCHING
void dKy_tevstr_init(dKy_tevstr_c* p_tevstr, s8 roomNo, u8 param_2) {
memset(p_tevstr, 0, sizeof(dKy_tevstr_c));
if (roomNo == -1) {
p_tevstr->mRoomNo = dComIfGp_roomControl_getStayNo();
} else {
p_tevstr->mRoomNo = roomNo;
}
p_tevstr->mEnvrIdxCurr = p_tevstr->mRoomNo;
p_tevstr->mEnvrIdxPrev = p_tevstr->mRoomNo;
p_tevstr->mEnvrIdxOverride = param_2;
p_tevstr->mInitTimer = 1;
p_tevstr->mInitType = 0x7B;
p_tevstr->mColorC0.a = 0;
p_tevstr->mColorK0.a = 255;
p_tevstr->field_0x378 = 0;
p_tevstr->field_0x374 = 1.0f;
p_tevstr->field_0x384 = 0;
p_tevstr->mLightObj.mInfo.mColor.g = 0;
p_tevstr->mLightObj.mInfo.mColor.b = 0;
p_tevstr->mLightObj.mInfo.mColor.a = 255;
p_tevstr->mLightObj.mInfo.mCosAtten.x = 1.0f;
p_tevstr->mLightObj.mInfo.mCosAtten.y = 0.0f;
p_tevstr->mLightObj.mInfo.mCosAtten.z = 0.0f;
p_tevstr->mLightObj.mInfo.mDistAtten.x = 1.0f;
p_tevstr->mLightObj.mInfo.mDistAtten.y = 0.0f;
p_tevstr->mLightObj.mInfo.mDistAtten.z = 0.0f;
for (int i = 0; i < 6; i++) {
J3DLightObj* tev_light_p = &p_tevstr->field_0x074[i];
LightStatus* light_data_p = &lightStatusData[i];
tev_light_p->mInfo.mLightPosition = light_data_p->field_0x0;
tev_light_p->mInfo.mColor = light_data_p->field_0x18;
tev_light_p->mInfo.mCosAtten.x = 1.0f;
tev_light_p->mInfo.mCosAtten.y = 0.0f;
tev_light_p->mInfo.mCosAtten.z = 0.0f;
tev_light_p->mInfo.mDistAtten.x = 1.0f;
tev_light_p->mInfo.mDistAtten.y = 0.0f;
tev_light_p->mInfo.mDistAtten.z = 0.0f;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_tevstr_init(dKy_tevstr_c* param_0, s8 param_1, u8 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_tevstr_init__FP12dKy_tevstr_cScUc.s"
}
#pragma pop
#endif
/* 801A8A34-801A8A44 1A3374 0010+00 0/0 1/1 0/0 .text dKy_rain_check__Fv */
int dKy_rain_check() {
return g_env_light.mRainCount;
}
/* 801A8A44-801A8A54 1A3384 0010+00 0/0 0/0 5/5 .text dKy_set_allcol_ratio__Ff */
void dKy_set_allcol_ratio(f32 ratio) {
g_env_light.mAllcolRatio = ratio;
}
/* 801A8A54-801A8A64 1A3394 0010+00 0/0 1/1 1/1 .text dKy_set_actcol_ratio__Ff */
void dKy_set_actcol_ratio(f32 ratio) {
g_env_light.mActcolRatio = ratio;
}
/* 801A8A64-801A8A74 1A33A4 0010+00 0/0 1/1 1/1 .text dKy_set_bgcol_ratio__Ff */
void dKy_set_bgcol_ratio(f32 ratio) {
g_env_light.mBgcolRatio = ratio;
}
/* 801A8A74-801A8A84 1A33B4 0010+00 0/0 1/1 1/1 .text dKy_set_fogcol_ratio__Ff */
void dKy_set_fogcol_ratio(f32 ratio) {
g_env_light.mFogcolRatio = ratio;
}
/* 801A8A84-801A8AB8 1A33C4 0034+00 0/0 1/1 0/0 .text dKy_set_vrboxcol_ratio__Ff */
void dKy_set_vrboxcol_ratio(f32 ratio) {
dKy_set_vrboxsoracol_ratio(ratio);
dKy_set_vrboxkumocol_ratio(ratio);
}
/* 801A8AB8-801A8AC8 1A33F8 0010+00 1/1 0/0 0/0 .text dKy_set_vrboxsoracol_ratio__Ff */
static void dKy_set_vrboxsoracol_ratio(f32 ratio) {
g_env_light.mVrboxSoracolRatio = ratio;
}
/* 801A8AC8-801A8AD8 1A3408 0010+00 1/1 0/0 0/0 .text dKy_set_vrboxkumocol_ratio__Ff */
static void dKy_set_vrboxkumocol_ratio(f32 ratio) {
g_env_light.mVrboxKumocolRatio = ratio;
}
/* 801A8AD8-801A8B38 1A3418 0060+00 0/0 1/1 0/0 .text dKy_itudemo_se__Fv */
// matches with literals
#ifdef NONMATCHING
void dKy_itudemo_se() {
if (g_env_light.mMoyaSE != 0) {
mDoAud_seStart(g_env_light.mMoyaSE, NULL, 0, 0);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_itudemo_se() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_itudemo_se__Fv.s"
}
#pragma pop
#endif
/* 801A8B38-801A8B58 1A3478 0020+00 1/1 2/2 11/11 .text dKy_get_dayofweek__Fv */
s32 dKy_get_dayofweek() {
return dComIfGs_getDate() % 7;
}
/* 801A8B58-801A8B68 1A3498 0010+00 0/0 3/3 0/0 .text dKy_set_nexttime__Ff */
void dKy_set_nexttime(f32 nextTime) {
g_env_light.mNexttime = nextTime;
}
/* 801A8B68-801A8BC8 1A34A8 0060+00 0/0 1/1 0/0 .text dKy_instant_timechg__Ff */
void dKy_instant_timechg(f32 time) {
if (time < g_env_light.getDaytime()) {
dComIfGs_setDate(dComIfGs_getDate() + 1);
dKankyo_DayProc();
}
dComIfGs_setTime(time);
}
/* 801A8BC8-801A8C04 1A3508 003C+00 0/0 1/1 0/0 .text dKy_instant_rainchg__Fv */
void dKy_instant_rainchg() {
dKyw_rain_set(250);
g_env_light.mColpatWeather = 1;
g_env_light.mColPatPrev = 1;
g_env_light.mColPatCurr = 1;
}
/* 801A8C04-801A8E20 1A3544 021C+00 3/3 0/0 0/0 .text NewAmbColGet__FP11_GXColorS10 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm GXColor NewAmbColGet(_GXColorS10* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/NewAmbColGet__FP11_GXColorS10.s"
}
#pragma pop
/* ############################################################################################## */
/* 80394C60-80394C6C 0212C0 000C+00 1/1 0/0 0/0 .rodata @9035 */
SECTION_RODATA static u8 const lit_9035[12] = {
0x4C, 0xBE, 0xBC, 0x20, 0x4C, 0xBE, 0xBC, 0x20, 0x4C, 0xBE, 0xBC, 0x20,
};
COMPILER_STRIP_GATE(0x80394C60, &lit_9035);
/* 80453DAC-80453DB0 0023AC 0004+00 1/1 0/0 0/0 .sdata2 @8975 */
SECTION_SDATA2 static f32 lit_8975 = 50.0f;
/* 80453DB0-80453DB4 0023B0 0004+00 2/2 0/0 0/0 .sdata2 @9254 */
SECTION_SDATA2 static f32 lit_9254 = 285.0f;
/* 80453DB4-80453DB8 0023B4 0004+00 1/1 0/0 0/0 .sdata2 @9255 */
SECTION_SDATA2 static f32 lit_9255 = 17.0f;
/* 80453DB8-80453DBC 0023B8 0004+00 1/1 0/0 0/0 .sdata2 @9256 */
SECTION_SDATA2 static f32 lit_9256 = 20.0f;
/* 80453DBC-80453DC0 0023BC 0004+00 1/1 0/0 0/0 .sdata2 @9257 */
SECTION_SDATA2 static f32 lit_9257 = 190.0f;
/* 80453DC0-80453DC4 0023C0 0004+00 1/1 0/0 0/0 .sdata2 @9258 */
SECTION_SDATA2 static f32 lit_9258 = 100000000.0f;
/* 80453DC4-80453DC8 0023C4 0004+00 1/1 0/0 0/0 .sdata2 @9259 */
SECTION_SDATA2 static f32 lit_9259 = 5.0f;
/* 801A8E20-801A9BE4 1A3760 0DC4+00 2/2 0/0 0/0 .text
* dKy_ParticleColor_get_base__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_ParticleColor_get_base(cXyz* param_0, dKy_tevstr_c* param_1, _GXColor* param_2,
_GXColor* param_3, _GXColor* param_4, _GXColor* param_5,
f32 param_6) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_ParticleColor_get_base__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf.s"
}
#pragma pop
/* 801A9BE4-801A9CBC 1A4524 00D8+00 0/0 3/3 0/0 .text
* dKy_ParticleColor_get_actor__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf */
void dKy_ParticleColor_get_actor(cXyz* param_0, dKy_tevstr_c* param_1, _GXColor* param_2,
_GXColor* param_3, _GXColor* param_4, _GXColor* param_5,
f32 param_6) {
if (param_1 != NULL) {
*param_2 = NewAmbColGet(&param_1->mColorC0);
} else {
*param_2 = NewAmbColGet(&g_env_light.mActorAmbience);
}
dKy_ParticleColor_get_base(param_0, param_1, param_2, param_3, param_4, param_5, param_6);
}
/* 801A9CBC-801A9D60 1A45FC 00A4+00 0/0 6/6 0/0 .text
* dKy_ParticleColor_get_bg__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf */
void dKy_ParticleColor_get_bg(cXyz* param_0, dKy_tevstr_c* param_1, _GXColor* param_2,
_GXColor* param_3, _GXColor* param_4, _GXColor* param_5,
f32 param_6) {
*param_2 = NewAmbColGet(&g_env_light.mTerrainAmbienceBG0);
dKy_ParticleColor_get_base(param_0, param_1, param_2, param_3, param_4, param_5, param_6);
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394EB5 = "F_SP118";
#pragma pop
/* 801A9D60-801AA664 1A46A0 0904+00 1/1 0/0 17/17 .text dKy_BossLight_set__FP4cXyzP8_GXColorfUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_BossLight_set(cXyz* param_0, _GXColor* param_1, f32 param_2, u8 param_3) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_BossLight_set__FP4cXyzP8_GXColorfUc.s"
}
#pragma pop
/* 801AA664-801AAC5C 1A4FA4 05F8+00 0/0 0/0 3/3 .text
* dKy_BossSpotLight_set__FP4cXyzfffP8_GXColorfUcUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_BossSpotLight_set(cXyz* param_0, f32 param_1, f32 param_2, f32 param_3,
_GXColor* param_4, f32 param_5, u8 param_6, u8 param_7) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_BossSpotLight_set__FP4cXyzfffP8_GXColorfUcUc.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453DC8-80453DCC 0023C8 0004+00 1/1 0/0 0/0 .sdata2 @9676 */
SECTION_SDATA2 static f32 lit_9676 = 350.0f;
/* 80453DCC-80453DD0 0023CC 0004+00 2/2 0/0 0/0 .sdata2 @9677 */
SECTION_SDATA2 static f32 lit_9677 = 1.5f;
/* 801AAC5C-801AAD50 1A559C 00F4+00 0/0 1/1 0/0 .text
* dKy_WolfEyeLight_set__FP4cXyzfffP8_GXColorfUcUc */
// matches with literals
#ifdef NONMATCHING
int dKy_WolfEyeLight_set(cXyz* param_0, f32 param_1, f32 param_2, f32 param_3, GXColor* param_4,
f32 param_5, u8 param_6, u8 param_7) {
dScnKy_env_light_c* light = i_dKy_getEnvlight();
light->field_0x0c18[0].mPos = *param_0;
light->field_0x0c18[0].mColor.r = param_4->r;
light->field_0x0c18[0].mColor.g = param_4->g;
light->field_0x0c18[0].mColor.b = param_4->b;
light->field_0x0c18[0].mColor.a = 255;
light->field_0x0c18[0].field_0x10 = param_5;
light->field_0x0c18[0].field_0x14 = 0.99f;
light->field_0x0c18[0].field_0x18 = param_3;
light->field_0x0c18[0].field_0x1c = param_1;
light->field_0x0c18[0].field_0x20 = param_2 + 90.0f;
light->field_0x0c18[0].field_0x24 = param_6;
light->field_0x0c18[0].field_0x25 = param_7;
f32 fvar0;
f32 fvar1;
f32 fvar2;
switch (light->field_0x1309) {
case 0:
fvar0 = 50.0f;
fvar1 = 1.0f;
fvar2 = 0.9f;
break;
case 1:
fvar0 = 200.0f;
fvar1 = 1.0f;
fvar2 = fvar1;
break;
case 2:
fvar0 = 350.0f;
fvar1 = 1.5f;
fvar2 = fvar1;
break;
case 3:
default:
fvar0 = 1500.0f;
fvar1 = 4.0f;
fvar2 = 1.5f;
}
light->field_0x127c = fvar0;
light->field_0x0c18[0].field_0x10 *= fvar1;
light->field_0x0c18[0].field_0x18 *= fvar2;
light->field_0x0c18[0].field_0x26 = 1;
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_WolfEyeLight_set(cXyz* param_0, f32 param_1, f32 param_2, f32 param_3,
_GXColor* param_4, f32 param_5, u8 param_6, u8 param_7) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_WolfEyeLight_set__FP4cXyzfffP8_GXColorfUcUc.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453DD0-80453DD4 0023D0 0004+00 3/3 0/0 0/0 .sdata2 @9722 */
SECTION_SDATA2 static f32 lit_9722 = 600.0f;
/* 80453DD4-80453DD8 0023D4 0004+00 1/1 0/0 0/0 .sdata2 @9723 */
SECTION_SDATA2 static f32 lit_9723 = 1.0625f;
/* 80453DD8-80453DDC 0023D8 0004+00 1/1 0/0 0/0 .sdata2 @9724 */
SECTION_SDATA2 static f32 lit_9724 = 17.0f / 10.0f;
/* 80453DDC-80453DE0 0023DC 0004+00 1/1 0/0 0/0 .sdata2 @9725 */
SECTION_SDATA2 static f32 lit_9725 = 70.0f;
/* 80453DE0-80453DE4 0023E0 0004+00 1/1 0/0 0/0 .sdata2 @9726 */
SECTION_SDATA2 static f32 lit_9726 = 2.5500001907348633f;
/* 80453DE4-80453DE8 0023E4 0004+00 1/1 0/0 0/0 .sdata2 @9727 */
SECTION_SDATA2 static f32 lit_9727 = 17.0f / 5.0f;
/* 80453DE8-80453DEC 0023E8 0004+00 1/1 0/0 0/0 .sdata2 @9728 */
SECTION_SDATA2 static f32 lit_9728 = 65.0f;
/* 801AAD50-801AB01C 1A5690 02CC+00 1/1 0/0 0/0 .text dKy_twilight_camelight_set__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_twilight_camelight_set() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_twilight_camelight_set__Fv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394EBD = "F_SP109";
SECTION_DEAD static char const* const stringBase_80394EC5 = "F_SP122";
#pragma pop
/* 80453DEC-80453DF0 0023EC 0004+00 1/1 0/0 0/0 .sdata2 @9779 */
SECTION_SDATA2 static f32 lit_9779 = 7.225000381469727f;
/* 80453DF0-80453DF4 0023F0 0004+00 1/1 0/0 0/0 .sdata2 @9780 */
SECTION_SDATA2 static f32 lit_9780 = 28.0f;
/* 80453DF4-80453DF8 0023F4 0004+00 1/1 0/0 0/0 .sdata2 @9781 */
SECTION_SDATA2 static f32 lit_9781 = 1.25f;
/* 801AB01C-801AB270 1A595C 0254+00 1/1 0/0 0/0 .text dKy_WaterIn_Light_set__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_WaterIn_Light_set() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_WaterIn_Light_set__Fv.s"
}
#pragma pop
/* 801AB270-801AB280 1A5BB0 0010+00 0/0 2/2 0/0 .text dKy_camera_water_in_status_set__FUc
*/
void dKy_camera_water_in_status_set(u8 status) {
g_env_light.mCameraInWater = status;
}
/* 801AB280-801AB290 1A5BC0 0010+00 3/3 1/1 5/5 .text dKy_camera_water_in_status_check__Fv */
BOOL dKy_camera_water_in_status_check() {
return g_env_light.mCameraInWater;
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394ECD = "D_MN05A";
#pragma pop
/* 801AB290-801AB3A8 1A5BD0 0118+00 0/0 5/5 0/0 .text dKy_pol_efftype_get__FPC13cBgS_PolyInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_efftype_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_efftype_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801AB3A8-801AB4C0 1A5CE8 0118+00 0/0 2/2 0/0 .text dKy_pol_efftype2_get__FPC13cBgS_PolyInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_efftype2_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_efftype2_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801AB4C0-801AB59C 1A5E00 00DC+00 0/0 9/9 21/21 .text dKy_pol_sound_get__FPC13cBgS_PolyInfo */
u8 dKy_pol_sound_get(cBgS_PolyInfo const* p_poly) {
dScnKy_env_light_c* envLight = i_dKy_getEnvlight();
if (p_poly == NULL || &dComIfG_Bgsp() == NULL) {
return 0;
}
int att0 = dComIfG_Bgsp().GetPolyAtt0(*p_poly);
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && g_env_light.field_0x12fe == 4 &&
att0 == 4)
{
att0 = 13;
}
int att1 = dComIfG_Bgsp().GetPolyAtt1(*p_poly);
u8 uvar3;
if (envLight->mResPolSound != NULL) {
uvar3 = envLight->mResPolSound[att0].data[att1];
} else {
uvar3 = 0;
}
if (uvar3 == 0xFF) {
uvar3 = 0;
}
return uvar3;
}
/* 801AB59C-801AB668 1A5EDC 00CC+00 0/0 5/5 0/0 .text dKy_pol_argument_get__FPC13cBgS_PolyInfo */
u8 dKy_pol_argument_get(cBgS_PolyInfo const* p_poly) {
dScnKy_env_light_c* envLight = &g_env_light;
if (p_poly == NULL || &dComIfG_Bgsp() == NULL) {
return 0;
}
int att0 = dComIfG_Bgsp().GetPolyAtt0(*p_poly);
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && g_env_light.field_0x12fe == 4 &&
att0 == 4)
{
att0 = 13;
}
int att1 = dComIfG_Bgsp().GetPolyAtt1(*p_poly);
if (envLight->mResPolArg != NULL) {
return envLight->mResPolArg[att0].data[att1];
}
return 0;
}
/* 801AB668-801AB7D0 1A5FA8 0168+00 0/0 1/1 2/2 .text
* dKy_pol_eff_prim_get__FPC13cBgS_PolyInfoP8_GXColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff_prim_get(cBgS_PolyInfo const* param_0, _GXColor* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff_prim_get__FPC13cBgS_PolyInfoP8_GXColor.s"
}
#pragma pop
/* u8 dKy_pol_eff_prim_get(cBgS_PolyInfo const* p_poly, GXColor* p_color) {
dScnKy_env_light_c* envLight = &g_env_light;
if (p_poly == NULL || p_color == NULL || &dComIfG_Bgsp() == NULL) {
return 0xFF;
}
int att0 = dComIfG_Bgsp().GetPolyAtt0(*p_poly);
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && g_env_light.field_0x12fe == 4 && att0 ==
4) { att0 = 13; } else if (!strcmp(dComIfGp_getStartStageName(), "D_MN05A") &&
dComIfGs_isStageBossEnemy() && att0 == 11) { att0 = 7;
}
int att1 = dComIfG_Bgsp().GetPolyAtt1(*p_poly);
if (envLight->mResPolEffcol == NULL || ) {
u32 index = envLight->mResPolEffcol[att0].data[att1];
if (index >= 100) {
return 0xFF;
}
p_color->r = envLight->mResColorDataTbl[index].data[0];
p_color->g = envLight->mResColorDataTbl[index].data[1];
p_color->b = envLight->mResColorDataTbl[index].data[2];
}
} */
/* 801AB7D0-801AB93C 1A6110 016C+00 0/0 1/1 2/2 .text
* dKy_pol_eff_env_get__FPC13cBgS_PolyInfoP8_GXColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff_env_get(cBgS_PolyInfo const* param_0, _GXColor* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff_env_get__FPC13cBgS_PolyInfoP8_GXColor.s"
}
#pragma pop
/* 801AB93C-801ABAA4 1A627C 0168+00 0/0 1/1 2/2 .text
* dKy_pol_eff2_prim_get__FPC13cBgS_PolyInfoP8_GXColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff2_prim_get(cBgS_PolyInfo const* param_0, _GXColor* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff2_prim_get__FPC13cBgS_PolyInfoP8_GXColor.s"
}
#pragma pop
/* 801ABAA4-801ABC10 1A63E4 016C+00 0/0 1/1 2/2 .text
* dKy_pol_eff2_env_get__FPC13cBgS_PolyInfoP8_GXColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff2_env_get(cBgS_PolyInfo const* param_0, _GXColor* param_1) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff2_env_get__FPC13cBgS_PolyInfoP8_GXColor.s"
}
#pragma pop
/* 801ABC10-801ABD4C 1A6550 013C+00 0/0 1/1 2/2 .text dKy_pol_eff_alpha_get__FPC13cBgS_PolyInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff_alpha_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff_alpha_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801ABD4C-801ABEA8 1A668C 015C+00 0/0 1/1 2/2 .text dKy_pol_eff_ratio_get__FPC13cBgS_PolyInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff_ratio_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff_ratio_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801ABEA8-801ABFE4 1A67E8 013C+00 0/0 1/1 2/2 .text dKy_pol_eff2_alpha_get__FPC13cBgS_PolyInfo
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff2_alpha_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff2_alpha_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801ABFE4-801AC140 1A6924 015C+00 0/0 1/1 2/2 .text dKy_pol_eff2_ratio_get__FPC13cBgS_PolyInfo
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_pol_eff2_ratio_get(cBgS_PolyInfo const* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_pol_eff2_ratio_get__FPC13cBgS_PolyInfo.s"
}
#pragma pop
/* 801AC140-801AC168 1A6A80 0028+00 0/0 2/2 0/0 .text dKy_TeachWind_existence_chk__Fv */
BOOL dKy_TeachWind_existence_chk() {
if (g_env_light.mTeachWindExist == 0xFF) {
return -1;
}
return g_env_light.mTeachWindExist ? TRUE : FALSE;
}
/* 801AC168-801AC228 1A6AA8 00C0+00 4/4 0/0 2/2 .text dKy_SunMoon_Light_Check__Fv */
bool dKy_SunMoon_Light_Check() {
bool check = false;
if (g_env_light.mSunInitialized && !dKy_darkworld_check()) {
// stage is not City in the Sky, Hyrule Castle, or Hidden Skill area
if (memcmp(dComIfGp_getStartStageName(), "D_MN07", 6) &&
memcmp(dComIfGp_getStartStageName(), "D_MN09", 6) &&
strcmp(dComIfGp_getStartStageName(), "F_SP200"))
{
check = true;
}
}
return check;
}
/* 801AC228-801AC28C 1A6B68 0064+00 3/3 0/0 0/0 .text dKy_Outdoor_check__Fv */
static int dKy_Outdoor_check() {
BOOL outdoors = false;
u32 type = ST_FIELD;
if (i_dComIfGp_getStage() != NULL) {
type = dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo());
}
if (type == ST_FIELD) {
outdoors = true;
}
return outdoors;
}
/* 801AC28C-801AC2E0 1A6BCC 0054+00 1/1 0/0 0/0 .text dKy_Indoor_check__Fv */
static int dKy_Indoor_check() {
BOOL indoors = false;
if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != ST_FIELD) {
indoors = true;
}
return indoors;
}
/* 801AC2E0-801AC2E8 1A6C20 0008+00 0/0 1/1 0/0 .text dKy_withwarp_capture_check__Fv */
BOOL dKy_withwarp_capture_check() {
return false;
}
/* ############################################################################################## */
/* 80453DF8-80453DFC 0023F8 0004+00 1/1 0/0 0/0 .sdata2 @10273 */
SECTION_SDATA2 static f32 lit_10273 = 400.0f;
/* 80453DFC-80453E00 0023FC 0004+00 1/1 0/0 0/0 .sdata2 @10274 */
SECTION_SDATA2 static f32 lit_10274 = 608.0f;
/* 801AC2E8-801AC57C 1A6C28 0294+00 0/0 1/1 0/0 .text dKy_depth_dist_set__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_depth_dist_set(void* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_depth_dist_set__FPv.s"
}
#pragma pop
/* 801AC57C-801AC5BC 1A6EBC 0040+00 13/13 21/21 134/134 .text dKy_darkworld_check__Fv */
bool dKy_darkworld_check() {
bool check = false;
if (dComIfGp_world_dark_get() == 1) {
check = true;
}
return check;
}
/**
* @brief Returns the following info about a room: (1) if the room must not be in twilight and (2)
* which darkLv the room belongs to (Faron, Eldin, etc.).
*
* @param stageName stage name
* @param roomNo room number
* @param out_darkLv byte pointer to write darkLv to, or NULL
* @param tblIndex index in darkworld table for the stageName
* @return int Returns -1 if the given room must not be loaded in twilight, else returns 0 or 1. A
* return of 1 means darkLv should be read from out_darkLv and 0 means it should be read from the
* darkworld table.
*/
/* 801AC5BC-801AC70C 1A6EFC 0150+00 3/3 0/0 0/0 .text dKy_F_SP121Check__FPCciPUci */
static int dKy_F_SP121Check(char const* stageName, int roomNo, u8* out_darkLv, int tblIndex) {
dKydata_darkworldInfo_c* darkworldTbl = dKyd_darkworld_tbl_getp();
int result = 0;
if (out_darkLv != NULL) {
*out_darkLv = UNCLEARABLE;
}
// Stage is Hyrule Field
if (!strcmp(stageName, "F_SP121")) {
// Room is one of:
// - Eldin Field (0)
// - Kakariko Gorge (3)
// - Eldin Field / Kakariko Gorge Path North (5) and South (4)
// - Faron Field / Kakariko Gorge Path North (2)
// - Outside Hidden Village (7)
if (roomNo == 0 || (2 <= roomNo && roomNo <= 5) || roomNo == 7) {
if (out_darkLv != NULL) {
*out_darkLv = ELDIN;
}
result = 1;
}
// Room is one of:
// - Lanayru Field (10)
// - Great Bridge of Hylia (13)
// - Lanayru Field / Great Bridge of Hylia Path North (11) and South (12)
// - Faron Field / Great Bridge of Hylia Path North (14)
// - Lanayru Field / Outside Hidden Village Path (9)
else if (roomNo >= 9 && roomNo <= 14)
{
if (out_darkLv != NULL) {
*out_darkLv = LANAYRU;
}
result = 1;
}
// Room is one of:
// - Faron Field (6)
// - Faron Field / Kakariko Gorge Path South (1)
// - Faron Field / Great Bridge of Hylia Path South (15)
else
{
result = -1;
}
}
// Faron Spring; No twilight during Rusl cutscene at very beginning of game.
else if (!strcmp(stageName, "F_SP108") && roomNo == 1 && dComIfGp_getStartStageLayer() == 13)
{
result = -1;
}
// Prevent twilight if stage depends on Faron Twilight cleared status (Faron Woods, Coro's
// Lantern Shop, Faron Woods Cave) but haven't finished Ordon Day 2.
if (darkworldTbl[tblIndex].darkLv == FARON && !i_dComIfGs_isEventBit(0x4510)) {
result = -1;
}
return result;
}
/**
* @brief Returns TRUE if (1) the room is one which can be loaded in twilight, (2) there is nothing
* currently preventing it from being loaded in twilight, and (3) the player has not cleared the
* relevant dark level (Faron Twilight, etc.). Otherwise returns FALSE.
*
* @param stageName stage name
* @param roomNo room number
* @return BOOL Returns TRUE if the room can be loaded as twilight and the player has not already
* cleared it, else FALSE.
*/
/* 801AC70C-801AC7E0 1A704C 00D4+00 0/0 2/2 0/0 .text dKy_darkworld_stage_check__FPCci */
u8 dKy_darkworld_stage_check(char const* stageName, int roomNo) {
dKydata_darkworldInfo_c* darkworldTbl = dKyd_darkworld_tbl_getp();
u8 result = FALSE;
u8 darkLv[1];
for (int i = 0; i < 34; i++) {
if (!strcmp(stageName, darkworldTbl[i].stageName)) {
if (darkworldTbl[i].darkLv != ALWAYS_DARK) {
int fsp121CheckResult = dKy_F_SP121Check(stageName, roomNo, darkLv, i);
if (fsp121CheckResult >= 0) {
if (fsp121CheckResult == 0) {
*darkLv = darkworldTbl[i].darkLv;
}
if (!dComIfGs_isDarkClearLV(*darkLv)) {
result = TRUE;
}
break;
}
} else {
// ALWAYS_DARK is used to force twilight (likely for testing). This will
// never normally run since it is not present in l_darkworld_tbl.
result = TRUE;
break;
}
}
}
return result;
}
/**
* @brief Returns TRUE if a given room would be loaded in twilight. This function always behaves as
* if the player has not cleared any twilights.
*
* For example, Eldin Field will always return TRUE. Faron Woods on the other hand might return TRUE
* or FALSE depending on whether or not the player has completed Ordon Day 2.
*
* @param stageName stage name
* @param roomNo room number
* @return BOOL Returns TRUE if a given room would be loaded in twilight. This function always
* behaves as if the player has not cleared any twilights.
*/
/* 801AC7E0-801AC870 1A7120 0090+00 0/0 1/1 0/0 .text dKy_darkworld_spot_check__FPCci */
BOOL dKy_darkworld_spot_check(char const* stageName, int roomNo) {
dKydata_darkworldInfo_c* darkworldTblPtr = dKyd_darkworld_tbl_getp();
BOOL result = FALSE;
for (int i = 0; i < 34; i++) {
if (!strcmp(stageName, darkworldTblPtr->stageName) &&
dKy_F_SP121Check(stageName, roomNo, NULL, i) >= 0)
{
result = TRUE;
break;
}
darkworldTblPtr++;
}
return result;
}
/* 801AC870-801AC918 1A71B0 00A8+00 0/0 1/1 0/0 .text dKy_darkworld_Area_set__FPCci */
void dKy_darkworld_Area_set(char const* stageName, int roomNo) {
dKydata_darkworldInfo_c* darkworldTblPtr = dKyd_darkworld_tbl_getp();
u8 darkLv[1];
for (int i = 0; i < 34; i++) {
if (!strcmp(stageName, darkworldTblPtr[i].stageName)) {
int fsp121CheckResult = dKy_F_SP121Check(stageName, roomNo, darkLv, i);
if (fsp121CheckResult >= 0) {
if (fsp121CheckResult == 0) {
*darkLv = darkworldTblPtr[i].darkLv;
}
dComIfGp_setStartStageDarkArea(*darkLv);
break;
}
}
}
}
/* ############################################################################################## */
/* 80453E00-80453E04 002400 0004+00 1/1 0/0 0/0 .sdata2 @10483 */
SECTION_SDATA2 static f32 lit_10483 = 36.0f;
/* 80453E04-80453E08 002404 0004+00 1/1 0/0 0/0 .sdata2 @10484 */
SECTION_SDATA2 static f32 lit_10484 = 29.0f;
/* 80453E08-80453E0C 002408 0004+00 1/1 0/0 0/0 .sdata2 @10485 */
SECTION_SDATA2 static f32 lit_10485 = 1550.0f;
/* 80453E0C-80453E10 00240C 0004+00 1/1 0/0 0/0 .sdata2 @10486 */
SECTION_SDATA2 static f32 lit_10486 = 140.0f;
/* 801AC918-801ACCDC 1A7258 03C4+00 1/1 0/0 0/0 .text dKy_murky_set__FP11J3DMaterial */
#ifdef NONMATCHING
static void dKy_murky_set(J3DMaterial* material_p) {
dKankyo_sunlenz_Packet* sunlenzPkt_p = g_env_light.mpSunLenzPacket;
dKankyo_sun_Packet* sunPkt_p = g_env_light.mpSunPacket;
camera_class* camera_p = dComIfGp_getCamera(0);
J3DGXColorS10 sp54;
J3DGXColor sp58;
sp54.r = g_env_light.mTerrainAmbienceBG1.r;
sp54.g = g_env_light.mTerrainAmbienceBG1.g;
sp54.b = g_env_light.mTerrainAmbienceBG1.b;
sp54.a = g_env_light.mTerrainAmbienceBG2.a;
sp58.a = g_env_light.mTerrainAmbienceBG1.a;
if (g_env_light.field_0x1300 != -1) {
sp58.a = g_env_light.field_0x1300 * 1.0f;
}
if (g_env_light.field_0x1302 != -1) {
sp54.a = (u8)(g_env_light.field_0x1302 * 1.0f);
}
if (sunlenzPkt_p != NULL && sunPkt_p->field_0x5c > 1E-06f) {
sp54.a *= 1.0f - sunPkt_p->field_0x5c *
(1.0f - sunlenzPkt_p->field_0x98 * sunlenzPkt_p->field_0x98 *
sunlenzPkt_p->field_0x98);
}
// Diababa room handling
if (strcmp(dComIfGp_getStartStageName(), "D_MN05A") == 0) {
f32 var_f31;
if (g_env_light.mpMudPacket != NULL) {
var_f31 = 1.0f - g_env_light.mpMudPacket->field_0x1c3c;
}
sp54.r = 20;
sp54.g = 6;
sp54.b = 15;
sp54.r = (var_f31 * -0.0f) + 20;
sp54.g = (var_f31 * 36.0f) + 6;
sp54.b = (var_f31 * 29.0f) + 15;
f32 var_f0;
if (camera_p != NULL && camera_p->mLookat.mEye.z < 1800.0f) {
if (camera_p->mLookat.mEye.z < 1550.0f) {
var_f0 = 1.0f;
} else {
var_f0 = 1.0f - ((camera_p->mLookat.mEye.z - 1550.0f) / 250.0f);
}
sp54.a = 255.0f * var_f0;
} else {
sp54.a = 0;
}
sp54.a += -sp54.a * var_f31;
sp58.a = (var_f31 * 140.0f) + 255;
}
sp58.r = 0;
sp58.g = 0;
sp58.b = 0;
material_p->setTevColor(1, &sp54);
material_p->setTevKColor(3, &sp58);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKy_murky_set(J3DMaterial* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_murky_set__FP11J3DMaterial.s"
}
#pragma pop
#endif
/* 801ACCDC-801ACCF4 1A761C 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_set__FUc */
void dKy_shadow_mode_set(u8 mode) {
g_env_light.mShadowMode |= mode;
}
/* 801ACCF4-801ACD0C 1A7634 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_reset__FUc */
void dKy_shadow_mode_reset(u8 mode) {
g_env_light.mShadowMode &= ~mode;
}
/* 801ACD0C-801ACD24 1A764C 0018+00 3/3 0/0 1/1 .text dKy_shadow_mode_check__FUc */
u8 dKy_shadow_mode_check(u8 mode) {
return g_env_light.mShadowMode & mode;
}
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394EDD = "MA06";
SECTION_DEAD static char const* const stringBase_80394EE2 = "MA03";
SECTION_DEAD static char const* const stringBase_80394EE7 = "MA09";
SECTION_DEAD static char const* const stringBase_80394EEC = "MA17";
SECTION_DEAD static char const* const stringBase_80394EF1 = "MA19";
SECTION_DEAD static char const* const stringBase_80394EF6 = "MA07";
SECTION_DEAD static char const* const stringBase_80394EFB = "MA10";
SECTION_DEAD static char const* const stringBase_80394F00 = "MA02";
SECTION_DEAD static char const* const stringBase_80394F05 = "MA00";
SECTION_DEAD static char const* const stringBase_80394F0A = "MA01";
SECTION_DEAD static char const* const stringBase_80394F0F = "MA04";
SECTION_DEAD static char const* const stringBase_80394F14 = "MA16";
SECTION_DEAD static char const* const stringBase_80394F19 = "MA11";
SECTION_DEAD static char const* const stringBase_80394F1E = "MA20";
SECTION_DEAD static char const* const stringBase_80394F23 = "MA13";
SECTION_DEAD static char const* const stringBase_80394F28 = "MA14";
SECTION_DEAD static char const* const stringBase_80394F2D = "Rainbow";
/* @stringBase0 padding */
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 J3DZModeInfo l_zmodeUpEnable = {1, 3, 1};
/* 8045070C-80450710 00018C 0004+00 1/1 0/0 0/0 .sdata l_zmodeUpDisable */
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 J3DAlphaCompInfo l_alphaCompInfoOPA = {
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 J3DAlphaCompInfo l_alphaCompInfo = {
0x04, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00,
};
/* 80453E10-80453E14 002410 0004+00 1/1 0/0 0/0 .sdata2 @10916 */
SECTION_SDATA2 static f32 lit_10916 = 245.0f;
/* 80453E14-80453E18 002414 0004+00 1/1 0/0 0/0 .sdata2 @10917 */
SECTION_SDATA2 static f32 lit_10917 = 45.0f;
/* 80453E18-80453E1C 002418 0004+00 1/1 0/0 0/0 .sdata2 @10918 */
SECTION_SDATA2 static f32 lit_10918 = -1.0f / 100.0f;
/* 80453E1C-80453E20 00241C 0004+00 1/1 0/0 0/0 .sdata2 @10919 */
SECTION_SDATA2 static f32 lit_10919 = 49.0f / 100.0f;
/* 80453E20-80453E24 002420 0004+00 1/1 0/0 0/0 .sdata2 @10920 */
SECTION_SDATA2 static f32 lit_10920 = -49.0f / 100.0f;
/* 80453E24-80453E28 002424 0004+00 1/1 0/0 0/0 .sdata2 @10921 */
SECTION_SDATA2 static f32 lit_10921 = 14.0f / 5.0f;
/* 80453E28-80453E2C 002428 0004+00 1/1 0/0 0/0 .sdata2 @10922 */
SECTION_SDATA2 static f32 lit_10922 = 170.0f;
/* 80453E2C-80453E30 00242C 0004+00 1/1 0/0 0/0 .sdata2 @10923 */
SECTION_SDATA2 static f32 lit_10923 = -14770.0f;
/* 80453E30-80453E34 002430 0004+00 1/1 0/0 0/0 .sdata2 @10924 */
SECTION_SDATA2 static f32 lit_10924 = -14570.0f;
/* 80453E34-80453E38 002434 0004+00 1/1 0/0 0/0 .sdata2 @10925 */
SECTION_SDATA2 static f32 lit_10925 = -5853.0f;
/* 80453E38-80453E3C 002438 0004+00 1/1 0/0 0/0 .sdata2 @10926 */
SECTION_SDATA2 static f32 lit_10926 = -879.0f;
/* 80453E3C-80453E40 00243C 0004+00 1/1 0/0 0/0 .sdata2 @10927 */
SECTION_SDATA2 static f32 lit_10927 = -1.0f / 5.0f;
/* 80453E40-80453E44 002440 0004+00 1/1 0/0 0/0 .sdata2 @10928 */
SECTION_SDATA2 static f32 lit_10928 = 4500.0f;
/* 80453E44-80453E48 002444 0004+00 1/1 0/0 0/0 .sdata2 @10929 */
SECTION_SDATA2 static f32 lit_10929 = 75.0f;
/* 80453E48-80453E4C 002448 0004+00 1/1 0/0 0/0 .sdata2 @10930 */
SECTION_SDATA2 static f32 lit_10930 = -81.0f / 100.0f;
/* 80453E4C-80453E50 00244C 0004+00 1/1 0/0 0/0 .sdata2 @10931 */
SECTION_SDATA2 static f32 lit_10931 = 0.5830000042915344f;
/* 80453E50-80453E58 002450 0004+04 1/1 0/0 0/0 .sdata2 @10932 */
SECTION_SDATA2 static f32 lit_10932[1 + 1 /* padding */] = {
115.0f,
/* padding */
0.0f,
};
/* 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
asm void dKy_bg_MAxx_proc(void* param_0) {
nofralloc
#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
#pragma optimization_level 0
#pragma optimizewithasm off
// asm dScnKy_env_light_c::~dScnKy_env_light_c() {
extern "C" asm void __dt__18dScnKy_env_light_cFv() {
nofralloc
#include "asm/d/kankyo/d_kankyo/__dt__18dScnKy_env_light_cFv.s"
}
#pragma pop