// // Generated By: dol2asm // Translation Unit: d/kankyo/d_kankyo_wether // #include "d/kankyo/d_kankyo_wether.h" #include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "JSystem/JKernel/JKRHeap.h" #include "SSystem/SComponent/c_math.h" #include "d/com/d_com_inf_game.h" #include "d/kankyo/d_kankyo.h" #include "d/kankyo/d_kankyo_rain.h" #include "dol2asm.h" #include "global.h" #include "m_Do/m_Do_audio.h" // // Forward References: // extern "C" static void dKyw_setDrawPacketList__FP9J3DPacketi(); extern "C" static void dKyw_setDrawPacketListIndScreen__FP9J3DPacketi(); extern "C" static void dKyw_setDrawPacketListSky__FP9J3DPacketi(); extern "C" static void dKyw_setDrawPacketListXluBg__FP9J3DPacketi(); extern "C" void draw__18dKankyo_sun_PacketFv(); extern "C" void draw__22dKankyo_sunlenz_PacketFv(); extern "C" void __dt__8RAIN_EFFFv(); extern "C" void __ct__8RAIN_EFFFv(); extern "C" void draw__19dKankyo_rain_PacketFv(); extern "C" void __dt__8SNOW_EFFFv(); extern "C" void __ct__8SNOW_EFFFv(); extern "C" void draw__19dKankyo_snow_PacketFv(); extern "C" void __dt__8STAR_EFFFv(); extern "C" void __ct__8STAR_EFFFv(); extern "C" void draw__19dKankyo_star_PacketFv(); extern "C" void __dt__9CLOUD_EFFFv(); extern "C" void __ct__9CLOUD_EFFFv(); extern "C" void draw__20dKankyo_cloud_PacketFv(); extern "C" void __dt__9HOUSI_EFFFv(); extern "C" void __ct__9HOUSI_EFFFv(); extern "C" void draw__20dKankyo_housi_PacketFv(); extern "C" void __dt__10VRKUMO_EFFFv(); extern "C" void __ct__10VRKUMO_EFFFv(); extern "C" void draw__21dKankyo_vrkumo_PacketFv(); extern "C" void __dt__12EF_ODOUR_EFFFv(); extern "C" void __ct__12EF_ODOUR_EFFFv(); extern "C" void draw__20dKankyo_odour_PacketFv(); extern "C" void __dt__10EF_MUD_EFFFv(); extern "C" void __ct__10EF_MUD_EFFFv(); extern "C" void draw__18dKankyo_mud_PacketFv(); extern "C" void __dt__11EF_EVIL_EFFFv(); extern "C" void __ct__11EF_EVIL_EFFFv(); extern "C" void draw__19dKankyo_evil_PacketFv(); extern "C" static void dKyw_drawSun__Fi(); extern "C" static void dKyw_Sun_Draw__Fv(); extern "C" static void dKyw_drawSunlenz__Fi(); extern "C" static void dKyw_Sunlenz_Draw__Fv(); extern "C" static void dKyw_drawRain__Fi(); extern "C" static void dKyw_Rain_Draw__Fv(); extern "C" static void dKyw_drawSnow__Fi(); extern "C" static void dKyw_Snow_Draw__Fv(); extern "C" static void dKyw_drawStar__Fi(); extern "C" static void dKyw_Star_Draw__Fv(); extern "C" static void dKyw_drawHousi__Fi(); extern "C" static void dKyw_Housi_Draw__Fv(); extern "C" static void dKyw_drawCloud__Fi(); extern "C" static void dKyw_Cloud_Draw__Fv(); extern "C" static void dKyw_drawVrkumo__Fi(); extern "C" static void dKyw_Vrkumo_Draw__Fv(); extern "C" static void dKyw_shstar_packet__Fi(); extern "C" static void dKyw_shstar_Draw__Fv(); extern "C" static void dKyw_odour_packet__Fi(); extern "C" static void dKyw_Odour_Draw__Fv(); extern "C" static void dKyw_mud_packet__Fi(); extern "C" static void dKyw_mud_Draw__Fv(); extern "C" static void dKyw_evil_packet__Fi(); extern "C" static void dKyw_evil_Draw__Fv(); extern "C" void dKyw_wether_init__Fv(); extern "C" void dKyw_wether_init2__Fv(); extern "C" void dKyw_wether_delete__Fv(); extern "C" void __dt__19dKankyo_evil_PacketFv(); extern "C" void __dt__18dKankyo_mud_PacketFv(); extern "C" void __dt__20dKankyo_odour_PacketFv(); extern "C" void __dt__20dKankyo_cloud_PacketFv(); extern "C" void __dt__20dKankyo_housi_PacketFv(); extern "C" void __dt__19dKankyo_star_PacketFv(); extern "C" void __dt__19dKankyo_snow_PacketFv(); extern "C" void __dt__19dKankyo_rain_PacketFv(); extern "C" void __dt__22dKankyo_sunlenz_PacketFv(); extern "C" void __dt__18dKankyo_sun_PacketFv(); extern "C" void dKyw_wether_delete2__Fv(); extern "C" void __dt__21dKankyo_vrkumo_PacketFv(); extern "C" static void wether_move_thunder__Fv(); extern "C" void dKyw_wether_move__Fv(); extern "C" static void wether_move_sun__Fv(); extern "C" static void wether_move_rain__Fv(); extern "C" static void wether_move_snow__Fv(); extern "C" static void wether_move_star__Fv(); extern "C" static void wether_move_housi__Fv(); extern "C" static void wether_move_odour__Fv(); extern "C" static void wether_move_moya__Fv(); extern "C" static void wether_move_vrkumo__Fv(); extern "C" static void wether_move_mud__Fv(); extern "C" static void wether_move_evil__Fv(); extern "C" void dKyw_wether_move_draw__Fv(); extern "C" void dKyw_wether_move_draw2__Fv(); extern "C" void dKyw_wether_draw__Fv(); extern "C" void dKyw_wether_draw2__Fv(); extern "C" void dKyw_wether_proc__Fv(); extern "C" static void dKyw_wind_init__Fv(); extern "C" void dKyw_wind_set__Fv(); extern "C" void dKyw_get_wind_vec__Fv(); extern "C" void dKyw_get_wind_pow__Fv(); extern "C" void dKyw_get_wind_vecpow__Fv(); extern "C" void dKyw_plight_collision_set__FP4cXyzssfffff(); extern "C" static void squal_proc__Fv(); extern "C" static void dKyw_pntwind_init__Fv(); extern "C" static void pntwind_set__FP14WIND_INFLUENCE(); extern "C" void dKyw_pntwind_set__FP14WIND_INFLUENCE(); extern "C" static void dKyw_pntlight_set__FP14WIND_INFLUENCE(); extern "C" void dKyw_pntwind_cut__FP14WIND_INFLUENCE(); extern "C" static void pntwind_get_info__FP4cXyzP4cXyzPfUc(); extern "C" static void dKyw_pntwind_get_info__FP4cXyzP4cXyzPf(); extern "C" void dKyw_pntlight_collision_get_info__FP4cXyzP4cXyzPf(); extern "C" void dKyw_pntwind_get_vecpow__FP4cXyz(); extern "C" void dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf(); extern "C" void dKyw_get_AllWind_vecpow__FP4cXyz(); extern "C" void dKyw_custom_windpower__Ff(); extern "C" void dKyw_evt_wind_set__Fss(); extern "C" void dKyw_evt_wind_set_go__Fv(); extern "C" void dKyw_rain_set__Fi(); extern "C" extern char const* const d_kankyo_d_kankyo_wether__stringBase0; // // External References: // extern "C" void __dt__4cXyzFv(); extern "C" void __ct__4cXyzFv(); extern "C" void getStatusRoomDt__20dStage_roomControl_cFi(); extern "C" void getLayerNo__14dComIfG_play_cFi(); extern "C" void dComIfGp_getReverb__Fi(); extern "C" void dComIfG_getStageRes__FPCc(); extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); extern "C" void set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz(); extern "C" void dKyr_lenzflare_move__Fv(); extern "C" void dKyr_sun_move__Fv(); extern "C" void dKyr_rain_init__Fv(); extern "C" void dKyr_rain_move__Fv(); extern "C" void dKyr_housi_move__Fv(); extern "C" void dKyr_snow_init__Fv(); extern "C" void dKyr_snow_move__Fv(); extern "C" void dKyr_star_init__Fv(); extern "C" void dKyr_star_move__Fv(); extern "C" void cloud_shadow_move__Fv(); extern "C" void vrkumo_move__Fv(); extern "C" void dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc(f32 (*param_0)[4], cXyz* param_1, _GXColor& param_2, u8** param_3); extern "C" void dKyr_drawLenzflare__FPA4_fP4cXyzR8_GXColorPPUc(); extern "C" void dKyr_drawRain__FPA4_fPPUc(); extern "C" void dKyr_drawSibuki__FPA4_fPPUc(); extern "C" void dKyr_drawHousi__FPA4_fPPUc(); extern "C" void dKyr_drawSnow__FPA4_fPPUc(); extern "C" void dKyr_drawStar__FPA4_fPPUc(); extern "C" void drawCloudShadow__FPA4_fPPUc(); extern "C" void drawVrkumo__FPA4_fR8_GXColorPPUc(); extern "C" void dKyr_thunder_init__Fv(); extern "C" void dKyr_thunder_move__Fv(); extern "C" void dKyr_shstar_init__Fv(); extern "C" void dKyr_shstar_move__Fv(); extern "C" void dKyr_odour_init__Fv(); extern "C" void dKyr_odour_move__Fv(); extern "C" void dKyr_odour_draw__FPA4_fPPUc(); extern "C" void dKyr_mud_init__Fv(); extern "C" void dKyr_mud_move__Fv(); extern "C" void dKyr_mud_draw__FPA4_fPPUc(); extern "C" void dKyr_evil_init__Fv(); extern "C" void dKyr_evil_move__Fv(); extern "C" void dKyr_evil_draw__FPA4_fPPUc(); extern "C" void getDaytime__18dScnKy_env_light_cFv(); extern "C" void dKy_undwater_filter_draw__Fv(); extern "C" void dKy_get_dayofweek__Fv(); extern "C" void dKy_darkworld_check__Fv(); extern "C" void __pl__4cXyzCFRC3Vec(); extern "C" void __ml__4cXyzCFf(); extern "C" void normZP__4cXyzCFv(); extern "C" bool __ne__4cXyzCFRC3Vec(); extern "C" void cM_atan2s__Fff(); extern "C" void cLib_addCalc__FPfffff(); extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); extern "C" void startRainSe__10Z2EnvSeMgrFlSc(); extern "C" void initStrongWindSe__10Z2EnvSeMgrFv(); extern "C" void setWindDirection__10Z2EnvSeMgrFP3Vec(); extern "C" void startStrongWindSe__10Z2EnvSeMgrFSc(); extern "C" void* __nw__FUli(); extern "C" void __dl__FPv(); extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); extern "C" void __register_global_object(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_24(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" extern void* __vt__9J3DPacket[5]; extern "C" extern dScnKy_env_light_c g_env_light; extern "C" extern Z2EnvSeMgr g_mEnvSeMgr; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u8 data_80450EE0[8]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; static void dKyw_pntlight_set(WIND_INFLUENCE* pntwind); // // Declarations: // /* 80056AA8-80056AF8 0513E8 0050+00 3/3 0/0 0/0 .text dKyw_setDrawPacketList__FP9J3DPacketi */ static J3DPacket* dKyw_setDrawPacketList(J3DPacket* i_packet, int i_type) { if (i_packet == NULL) { return NULL; } else { dComIfGd_getListFilter()->entryImm(i_packet, 0); return i_packet; } } /* 80056AF8-80056B48 051438 0050+00 3/3 0/0 0/0 .text * dKyw_setDrawPacketListIndScreen__FP9J3DPacketi */ static J3DPacket* dKyw_setDrawPacketListIndScreen(J3DPacket* i_packet, int i_type) { if (i_packet == NULL) { return NULL; } else { dComIfGd_getOpaListIndScreen()->entryImm(i_packet, 0); return i_packet; } } /* 80056B48-80056BD8 051488 0090+00 5/5 0/0 0/0 .text dKyw_setDrawPacketListSky__FP9J3DPacketi */ static J3DPacket* dKyw_setDrawPacketListSky(J3DPacket* i_packet, int i_type) { if (i_packet == NULL) { return NULL; } else { dComIfGd_setListSky(); j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0); dComIfGd_setList(); return i_packet; } } /* 80056BD8-80056C60 051518 0088+00 2/2 0/0 0/0 .text dKyw_setDrawPacketListXluBg__FP9J3DPacketi */ static J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* i_packet, int i_type) { if (i_packet == NULL) { return NULL; } else { dComIfGd_setXluListBG(); j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0); dComIfGd_setList(); return i_packet; } } /* 80056C60-80056C98 0515A0 0038+00 1/0 0/0 0/0 .text draw__18dKankyo_sun_PacketFv */ void dKankyo_sun_Packet::draw() { dKyr_drawSun(j3dSys.getViewMtx(), mPos, mColor, &mpResMoon); } /* 80056C98-80056CD0 0515D8 0038+00 1/0 0/0 0/0 .text draw__22dKankyo_sunlenz_PacketFv */ void dKankyo_sunlenz_Packet::draw() { dKyr_drawLenzflare(j3dSys.getViewMtx(), mPositions, mColor, &mpResBall); } /* 80056CD0-80056D0C 051610 003C+00 2/2 0/0 0/0 .text __dt__8RAIN_EFFFv */ RAIN_EFF::~RAIN_EFF() {} /* 80056D0C-80056D10 05164C 0004+00 1/1 0/0 0/0 .text __ct__8RAIN_EFFFv */ RAIN_EFF::RAIN_EFF() {} /* 80056D10-80056D58 051650 0048+00 1/0 0/0 0/0 .text draw__19dKankyo_rain_PacketFv */ void dKankyo_rain_Packet::draw() { dKyr_drawSibuki(j3dSys.getViewMtx(), &mpTex); dKyr_drawRain(j3dSys.getViewMtx(), &mpTex); } /* 80056D58-80056D94 051698 003C+00 1/1 1/1 0/0 .text __dt__8SNOW_EFFFv */ SNOW_EFF::~SNOW_EFF() {} /* 80056D94-80056D98 0516D4 0004+00 0/0 1/1 0/0 .text __ct__8SNOW_EFFFv */ SNOW_EFF::SNOW_EFF() {} /* 80056D98-80056DC8 0516D8 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_snow_PacketFv */ void dKankyo_snow_Packet::draw() { dKyr_drawSnow(j3dSys.getViewMtx(), &mpTex); } /* 80056DC8-80056E04 051708 003C+00 1/1 1/1 0/0 .text __dt__8STAR_EFFFv */ STAR_EFF::~STAR_EFF() {} /* 80056E04-80056E08 051744 0004+00 0/0 1/1 0/0 .text __ct__8STAR_EFFFv */ STAR_EFF::STAR_EFF() {} /* 80056E08-80056E38 051748 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_star_PacketFv */ void dKankyo_star_Packet::draw() { dKyr_drawStar(j3dSys.getViewMtx(), &field_0x10); } /* 80056E38-80056E74 051778 003C+00 2/2 0/0 0/0 .text __dt__9CLOUD_EFFFv */ CLOUD_EFF::~CLOUD_EFF() {} /* 80056E74-80056E78 0517B4 0004+00 1/1 0/0 0/0 .text __ct__9CLOUD_EFFFv */ CLOUD_EFF::CLOUD_EFF() {} /* 80056E78-80056EA8 0517B8 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_cloud_PacketFv */ void dKankyo_cloud_Packet::draw() { drawCloudShadow(j3dSys.getViewMtx(), &mpResTex); } /* 80056EA8-80056EE4 0517E8 003C+00 2/2 0/0 0/0 .text __dt__9HOUSI_EFFFv */ HOUSI_EFF::~HOUSI_EFF() {} /* 80056EE4-80056EE8 051824 0004+00 1/1 0/0 0/0 .text __ct__9HOUSI_EFFFv */ HOUSI_EFF::HOUSI_EFF() {} /* 80056EE8-80056F18 051828 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_housi_PacketFv */ void dKankyo_housi_Packet::draw() { dKyr_drawHousi(j3dSys.getViewMtx(), &mpResTex); } /* 80056F18-80056F54 051858 003C+00 2/2 0/0 0/0 .text __dt__10VRKUMO_EFFFv */ VRKUMO_EFF::~VRKUMO_EFF() {} /* 80056F54-80056F58 051894 0004+00 1/1 0/0 0/0 .text __ct__10VRKUMO_EFFFv */ VRKUMO_EFF::VRKUMO_EFF() {} /* 80056F58-80056F8C 051898 0034+00 1/0 0/0 0/0 .text draw__21dKankyo_vrkumo_PacketFv */ void dKankyo_vrkumo_Packet::draw() { drawVrkumo(j3dSys.getViewMtx(), mColor, &mpResCloudtx_01); } /* 80056F8C-80056FC8 0518CC 003C+00 2/2 0/0 0/0 .text __dt__12EF_ODOUR_EFFFv */ EF_ODOUR_EFF::~EF_ODOUR_EFF() {} /* 80056FC8-80056FCC 051908 0004+00 1/1 0/0 0/0 .text __ct__12EF_ODOUR_EFFFv */ EF_ODOUR_EFF::EF_ODOUR_EFF() {} /* 80056FCC-80056FFC 05190C 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_odour_PacketFv */ void dKankyo_odour_Packet::draw() { dKyr_odour_draw(j3dSys.getViewMtx(), &mpResTex); } /* 80056FFC-80057038 05193C 003C+00 2/2 0/0 0/0 .text __dt__10EF_MUD_EFFFv */ EF_MUD_EFF::~EF_MUD_EFF() {} /* 80057038-8005703C 051978 0004+00 1/1 0/0 0/0 .text __ct__10EF_MUD_EFFFv */ EF_MUD_EFF::EF_MUD_EFF() {} /* 8005703C-8005706C 05197C 0030+00 1/0 0/0 0/0 .text draw__18dKankyo_mud_PacketFv */ void dKankyo_mud_Packet::draw() { dKyr_mud_draw(j3dSys.getViewMtx(), &mpMoyaRes); } /* 8005706C-800570A8 0519AC 003C+00 2/2 0/0 0/0 .text __dt__11EF_EVIL_EFFFv */ EF_EVIL_EFF::~EF_EVIL_EFF() {} /* 800570A8-800570AC 0519E8 0004+00 1/1 0/0 0/0 .text __ct__11EF_EVIL_EFFFv */ EF_EVIL_EFF::EF_EVIL_EFF() {} /* 800570AC-800570DC 0519EC 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_evil_PacketFv */ void dKankyo_evil_Packet::draw() { dKyr_evil_draw(j3dSys.getViewMtx(), &mpMoyaRes); } /* 800570DC-8005710C 051A1C 0030+00 1/1 0/0 0/0 .text dKyw_drawSun__Fi */ static void dKyw_drawSun(int i_type) { dKyw_setDrawPacketListSky(g_env_light.mpSunPacket, i_type); } /* 8005710C-80057130 051A4C 0024+00 1/1 0/0 0/0 .text dKyw_Sun_Draw__Fv */ static void dKyw_Sun_Draw() { dKyw_drawSun(J3DSys_XLU_BUFFER_e); } /* 80057130-80057174 051A70 0044+00 1/1 0/0 0/0 .text dKyw_drawSunlenz__Fi */ static void dKyw_drawSunlenz(int i_type) { if (g_env_light.mpSunLenzPacket->mDrawLenzInSky == false) { dKyw_setDrawPacketListIndScreen(g_env_light.mpSunLenzPacket, i_type); } else { dKyw_setDrawPacketListSky(g_env_light.mpSunLenzPacket, i_type); } } /* 80057174-80057198 051AB4 0024+00 1/1 0/0 0/0 .text dKyw_Sunlenz_Draw__Fv */ static void dKyw_Sunlenz_Draw() { dKyw_drawSunlenz(J3DSys_XLU_BUFFER_e); } /* 80057198-800571C8 051AD8 0030+00 1/1 0/0 0/0 .text dKyw_drawRain__Fi */ static void dKyw_drawRain(int i_type) { dKyw_setDrawPacketList(g_env_light.mpRainPacket, i_type); } /* 800571C8-800571EC 051B08 0024+00 1/1 0/0 0/0 .text dKyw_Rain_Draw__Fv */ static void dKyw_Rain_Draw() { dKyw_drawRain(J3DSys_XLU_BUFFER_e); } /* 800571EC-8005721C 051B2C 0030+00 1/1 0/0 0/0 .text dKyw_drawSnow__Fi */ static void dKyw_drawSnow(int i_type) { dKyw_setDrawPacketList(g_env_light.mpSnowPacket, i_type); } /* 8005721C-80057240 051B5C 0024+00 1/1 0/0 0/0 .text dKyw_Snow_Draw__Fv */ static void dKyw_Snow_Draw() { dKyw_drawSnow(J3DSys_XLU_BUFFER_e); } /* 80057240-80057270 051B80 0030+00 1/1 0/0 0/0 .text dKyw_drawStar__Fi */ static void dKyw_drawStar(int i_type) { dKyw_setDrawPacketListSky(g_env_light.mpStarPacket, i_type); } /* 80057270-80057294 051BB0 0024+00 1/1 0/0 0/0 .text dKyw_Star_Draw__Fv */ static void dKyw_Star_Draw() { dKyw_drawStar(J3DSys_XLU_BUFFER_e); } /* 80057294-800572C4 051BD4 0030+00 1/1 0/0 0/0 .text dKyw_drawHousi__Fi */ static void dKyw_drawHousi(int i_type) { dKyw_setDrawPacketList(g_env_light.mpHousiPacket, i_type); } /* 800572C4-800572E8 051C04 0024+00 1/1 0/0 0/0 .text dKyw_Housi_Draw__Fv */ static void dKyw_Housi_Draw() { dKyw_drawHousi(J3DSys_XLU_BUFFER_e); } /* 800572E8-80057318 051C28 0030+00 1/1 0/0 0/0 .text dKyw_drawCloud__Fi */ static void dKyw_drawCloud(int i_type) { dKyw_setDrawPacketListIndScreen(g_env_light.mpCloudPacket, i_type); } /* 80057318-8005733C 051C58 0024+00 1/1 0/0 0/0 .text dKyw_Cloud_Draw__Fv */ static void dKyw_Cloud_Draw() { dKyw_drawCloud(J3DSys_XLU_BUFFER_e); } /* 8005733C-8005736C 051C7C 0030+00 1/1 0/0 0/0 .text dKyw_drawVrkumo__Fi */ static void dKyw_drawVrkumo(int i_type) { dKyw_setDrawPacketListSky(g_env_light.mpVrkumoPacket, i_type); } /* 8005736C-80057390 051CAC 0024+00 1/1 0/0 0/0 .text dKyw_Vrkumo_Draw__Fv */ static void dKyw_Vrkumo_Draw() { dKyw_drawVrkumo(J3DSys_XLU_BUFFER_e); } /* 80057390-800573C0 051CD0 0030+00 1/1 0/0 0/0 .text dKyw_shstar_packet__Fi */ static void dKyw_shstar_packet(int i_type) { dKyw_setDrawPacketListSky(g_env_light.mpShstarPacket, i_type); } /* 800573C0-800573E4 051D00 0024+00 1/1 0/0 0/0 .text dKyw_shstar_Draw__Fv */ static void dKyw_shstar_Draw() { dKyw_shstar_packet(J3DSys_XLU_BUFFER_e); } /* 800573E4-80057414 051D24 0030+00 1/1 0/0 0/0 .text dKyw_odour_packet__Fi */ static void dKyw_odour_packet(int i_type) { dKyw_setDrawPacketListIndScreen(g_env_light.mpOdourPacket, i_type); } /* 80057414-80057438 051D54 0024+00 1/1 0/0 0/0 .text dKyw_Odour_Draw__Fv */ static void dKyw_Odour_Draw() { dKyw_odour_packet(J3DSys_XLU_BUFFER_e); } /* 80057438-80057468 051D78 0030+00 1/1 0/0 0/0 .text dKyw_mud_packet__Fi */ static void dKyw_mud_packet(int i_type) { dKyw_setDrawPacketListXluBg(g_env_light.mpMudPacket, i_type); } /* 80057468-8005748C 051DA8 0024+00 1/1 0/0 0/0 .text dKyw_mud_Draw__Fv */ static void dKyw_mud_Draw() { dKyw_mud_packet(J3DSys_XLU_BUFFER_e); } /* 8005748C-800574BC 051DCC 0030+00 1/1 0/0 0/0 .text dKyw_evil_packet__Fi */ static void dKyw_evil_packet(int i_type) { dKyw_setDrawPacketListXluBg(g_env_light.mpEvilPacket, i_type); } /* 800574BC-800574E0 051DFC 0024+00 1/1 0/0 0/0 .text dKyw_evil_Draw__Fv */ static void dKyw_evil_Draw() { dKyw_evil_packet(J3DSys_XLU_BUFFER_e); } /* 804520E0-804520E4 0006E0 0004+00 12/12 0/0 0/0 .sdata2 @4378 */ SECTION_SDATA2 static u8 lit_4378[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 804520E4-804520E8 0006E4 0004+00 11/11 0/0 0/0 .sdata2 @4379 */ SECTION_SDATA2 static f32 lit_4379 = 1.0f; // remove these once float data is fixed inline JPABaseEmitter* tmp_dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7, s8 param_8, const GXColor* param_9, const GXColor* param_10, const cXyz* param_11) { return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10, param_11, lit_4379); } inline JPABaseEmitter* tmp_dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* param_2, const cXyz* param_3) { return tmp_dComIfGp_particle_set(param_0, param_1, NULL, param_2, param_3, 0xFF, NULL, -1, NULL, NULL, NULL); } /* 800574E0-800579EC 051E20 050C+00 0/0 1/1 0/0 .text dKyw_wether_init__Fv */ void dKyw_wether_init() { g_env_light.mSunInitialized = false; g_env_light.mThunderEff.mStatus = 0; g_env_light.mThunderEff.mMode = 0; g_env_light.mRainInitialized = false; g_env_light.mRainCount = 0; g_env_light.mSnowInitialized = false; g_env_light.field_0xe92 = 0; g_env_light.mSnowCount = 0; g_env_light.field_0xe90 = 0; g_env_light.field_0xe91 = 0; g_env_light.mStarInitialized = false; g_env_light.mStarCount = 0; f32 tmp0 = FLOAT_LABEL(lit_4378); g_env_light.mStarDensity = tmp0; g_env_light.mCloudInitialized = 0; g_env_light.mMoyaCount = 0; g_env_light.field_0xebc = tmp0; g_env_light.mMoyaMode = 0; g_env_light.mHousiInitialized = false; g_env_light.mHousiCount = 0; g_env_light.mOdourPacketStatus = 0; g_env_light.field_0xf24 = 0; g_env_light.field_0xf21 = 0; g_env_light.mpOdourPacket = NULL; g_env_light.field_0x1038 = 0; g_env_light.field_0x103c = 0; g_env_light.mMudInitialized = 0; g_env_light.field_0x1048 = 0; g_env_light.mEvilInitialized = 0; g_env_light.field_0x1054 = 0; g_env_light.field_0x1051 = 0; g_env_light.field_0xe60 = tmp0; dKyw_wind_init(); dKyw_pntwind_init(); // Stage is Zora's Domain and Room is Outside Throne Room if (!strcmp(dComIfGp_getStartStageName(), "F_SP113") && dComIfGp_roomControl_getStayNo() == 1 && dComIfG_play_c::getLayerNo(0) < 8) { cXyz tmp; f32 tmp0_2 = FLOAT_LABEL(lit_4378); tmp.z = tmp0_2; tmp.y = tmp0_2; tmp.x = tmp0_2; tmp_dComIfGp_particle_set(0x878F, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8790, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8791, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8792, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8793, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8794, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8795, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8796, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8797, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8798, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x8799, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x879A, &tmp, NULL, NULL); tmp_dComIfGp_particle_set(0x879B, &tmp, NULL, NULL); } // Stage is City in the Sky // Room is Entrance or Right Wing Outside or Left Wing Outside or Central Hub Outside if (!strcmp(dComIfGp_getStartStageName(), "D_MN07")) { if ((dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 3) || dComIfGp_roomControl_getStayNo() == 6 || dComIfGp_roomControl_getStayNo() == 13) { g_mEnvSeMgr.initStrongWindSe(); } } } /* 800579EC-80057A04 05232C 0018+00 0/0 1/1 0/0 .text dKyw_wether_init2__Fv */ void dKyw_wether_init2() { g_env_light.mVrkumoStatus = 0; g_env_light.mVrkumoCount = 0; } /* 80057A04-80057C84 052344 0280+00 0/0 1/1 0/0 .text dKyw_wether_delete__Fv */ void dKyw_wether_delete() { if (g_env_light.mSunInitialized) { delete g_env_light.mpSunPacket; delete g_env_light.mpSunLenzPacket; g_env_light.mpSunPacket = NULL; g_env_light.mpSunLenzPacket = NULL; } if (g_env_light.mRainInitialized) { delete g_env_light.mpRainPacket; g_env_light.mpRainPacket = NULL; } if (g_env_light.mSnowInitialized) { delete g_env_light.mpSnowPacket; g_env_light.mpSnowPacket = NULL; g_env_light.field_0xe90 = 0; } if (g_env_light.mStarInitialized) { delete g_env_light.mpStarPacket; g_env_light.mpStarPacket = NULL; } if (g_env_light.mHousiInitialized) { delete g_env_light.mpHousiPacket; g_env_light.mpHousiPacket = NULL; } if (g_env_light.mCloudInitialized) { delete g_env_light.mpCloudPacket; g_env_light.mpCloudPacket = NULL; } if (g_env_light.mOdourPacketStatus) { delete g_env_light.mpOdourPacket; g_env_light.mpOdourPacket = NULL; } if (g_env_light.mMudInitialized) { delete g_env_light.mpMudPacket; g_env_light.mpMudPacket = NULL; } if (g_env_light.mEvilInitialized) { delete g_env_light.mpEvilPacket; g_env_light.mpEvilPacket = NULL; } } /* 80057C84-80057D08 0525C4 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_evil_PacketFv */ dKankyo_evil_Packet::~dKankyo_evil_Packet() {} /* 80057D08-80057D8C 052648 0084+00 1/0 0/0 0/0 .text __dt__18dKankyo_mud_PacketFv */ dKankyo_mud_Packet::~dKankyo_mud_Packet() {} /* 80057D8C-80057E10 0526CC 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_odour_PacketFv */ dKankyo_odour_Packet::~dKankyo_odour_Packet() {} /* ############################################################################################## */ /* 803A9AFC-803A9B10 006C1C 0014+00 2/2 0/0 0/0 .data __vt__21dKankyo_vrkumo_Packet */ SECTION_DATA extern void* __vt__21dKankyo_vrkumo_Packet[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)entry__9J3DPacketFP13J3DDrawBuffer, (void*)draw__21dKankyo_vrkumo_PacketFv, (void*)__dt__21dKankyo_vrkumo_PacketFv, }; /* 80057E10-80057E94 052750 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_cloud_PacketFv */ dKankyo_cloud_Packet::~dKankyo_cloud_Packet() {} /* 80057E94-80057F18 0527D4 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_housi_PacketFv */ dKankyo_housi_Packet::~dKankyo_housi_Packet() {} /* ############################################################################################## */ /* 803A9B38-803A9B4C 006C58 0014+00 1/1 1/1 0/0 .data __vt__19dKankyo_star_Packet */ SECTION_DATA extern void* __vt__19dKankyo_star_Packet[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)entry__9J3DPacketFP13J3DDrawBuffer, (void*)draw__19dKankyo_star_PacketFv, (void*)__dt__19dKankyo_star_PacketFv, }; /* 80057F18-80057F9C 052858 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_star_PacketFv */ dKankyo_star_Packet::~dKankyo_star_Packet() {} /* 80057F9C-80058020 0528DC 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_snow_PacketFv */ dKankyo_snow_Packet::~dKankyo_snow_Packet() {} /* ############################################################################################## */ /* 803A9B60-803A9B74 006C80 0014+00 2/2 0/0 0/0 .data __vt__19dKankyo_rain_Packet */ SECTION_DATA extern void* __vt__19dKankyo_rain_Packet[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)entry__9J3DPacketFP13J3DDrawBuffer, (void*)draw__19dKankyo_rain_PacketFv, (void*)__dt__19dKankyo_rain_PacketFv, }; /* 80058020-800580A4 052960 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_rain_PacketFv */ dKankyo_rain_Packet::~dKankyo_rain_Packet() {} /* 800580A4-80058128 0529E4 0084+00 1/0 0/0 0/0 .text __dt__22dKankyo_sunlenz_PacketFv */ dKankyo_sunlenz_Packet::~dKankyo_sunlenz_Packet() {} /* 80058128-800581AC 052A68 0084+00 1/0 0/0 0/0 .text __dt__18dKankyo_sun_PacketFv */ dKankyo_sun_Packet::~dKankyo_sun_Packet() {} /* 800581AC-8005820C 052AEC 0060+00 0/0 1/1 0/0 .text dKyw_wether_delete2__Fv */ void dKyw_wether_delete2() { if (g_env_light.mVrkumoStatus != 0) { delete g_env_light.mpVrkumoPacket; g_env_light.mpVrkumoPacket = NULL; } } /* 8005820C-80058290 052B4C 0084+00 1/0 0/0 0/0 .text __dt__21dKankyo_vrkumo_PacketFv */ dKankyo_vrkumo_Packet::~dKankyo_vrkumo_Packet() {} /* 80058290-800582F8 052BD0 0068+00 1/1 0/0 0/0 .text wether_move_thunder__Fv */ static void wether_move_thunder() { switch (g_env_light.mThunderEff.mStatus) { case 0: if (g_env_light.mThunderEff.mMode != 0) { dKyr_thunder_init(); g_env_light.mThunderEff.mStatus = 1; } break; case 1: dKyr_thunder_move(); break; } } /* 800582F8-80058318 052C38 0020+00 0/0 1/1 0/0 .text dKyw_wether_move__Fv */ void dKyw_wether_move() { wether_move_thunder(); } /* 804520E8-804520EC 0006E8 0004+00 1/1 0/0 0/0 .sdata2 @4610 */ SECTION_SDATA2 static f32 lit_4610 = 255.0f; /* 804520EC-804520F0 0006EC 0004+00 1/1 0/0 0/0 .sdata2 @4611 */ SECTION_SDATA2 static f32 lit_4611 = 1000000000.0f; /* 80058318-80058894 052C58 057C+00 1/1 0/0 0/0 .text wether_move_sun__Fv */ static void wether_move_sun() { s32 sunVisible = false; if (dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) { roomRead_class* room = dComIfGp_getStageRoom(); if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) { sunVisible = dStage_roomRead_dt_c_GetVrboxswitch( *room->field_0x4[dComIfGp_roomControl_getStayNo()]); } // Stage is Hero Shade arena if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) { sunVisible = true; // Stage is Hyrule Castle or Castle Throne Room } else if (!strcmp(dComIfGp_getStartStageName(), "D_MN09") || !strcmp(dComIfGp_getStartStageName(), "D_MN09A")) { sunVisible = false; } switch (g_env_light.mSunInitialized) { case FALSE: if (sunVisible && dKy_darkworld_check() != true) { g_env_light.mpSunPacket = new (0x20) dKankyo_sun_Packet(); g_env_light.mpSunLenzPacket = new (0x20) dKankyo_sunlenz_Packet(); if (g_env_light.mpSunPacket != NULL && g_env_light.mpSunLenzPacket != NULL) { g_env_light.mpSunPacket->mpResMoon = (u8*)dComIfG_getStageRes("F_moon.bti"); g_env_light.mpSunPacket->mpResMoon_A = (u8*)dComIfG_getStageRes("F_moon_A.bti"); g_env_light.mpSunPacket->mpResMoon_A_A00 = (u8*)dComIfG_getStageRes("F_moon_A_A00.bti"); g_env_light.mpSunPacket->mpResMoon_A_A01 = (u8*)dComIfG_getStageRes("F_moon_A_A01.bti"); g_env_light.mpSunPacket->mpResMoon_A_A02 = (u8*)dComIfG_getStageRes("F_moon_A_A02.bti"); g_env_light.mpSunPacket->mpResMoon_A_A03 = (u8*)dComIfG_getStageRes("F_moon_A_A03.bti"); if (g_env_light.mpSunPacket->mpResMoon == NULL) { g_env_light.mpSunPacket->mpResMoon = (u8*)dComIfG_getObjectRes("Always", 0x56); g_env_light.mpSunPacket->mpResMoon_A = (u8*)dComIfG_getObjectRes("Always", 0x56); g_env_light.mpSunPacket->mpResMoon_A_A00 = (u8*)dComIfG_getObjectRes("Always", 0x56); g_env_light.mpSunPacket->mpResMoon_A_A01 = (u8*)dComIfG_getObjectRes("Always", 0x56); g_env_light.mpSunPacket->mpResMoon_A_A02 = (u8*)dComIfG_getObjectRes("Always", 0x56); g_env_light.mpSunPacket->mpResMoon_A_A03 = (u8*)dComIfG_getObjectRes("Always", 0x56); } g_env_light.mpSunPacket->field_0x28 = 0; g_env_light.mpSunPacket->field_0x29 = 0; f32 tmp0 = FLOAT_LABEL(lit_4378); g_env_light.mpSunPacket->mVisibility = tmp0; g_env_light.mpSunPacket->mSunAlpha = tmp0; g_env_light.mpSunPacket->field_0x64 = tmp0; g_env_light.mpSunPacket->field_0x68 = tmp0; if (g_env_light.mDaytime < lit_4610) { g_env_light.mpSunPacket->field_0x6c = lit_4379; } else { g_env_light.mpSunPacket->field_0x6c = tmp0; } g_env_light.mpSunPacket->field_0x44[0] = 0; g_env_light.mpSunPacket->field_0x44[1] = 0; g_env_light.mpSunPacket->field_0x44[2] = 0; g_env_light.mpSunPacket->field_0x44[3] = 0; g_env_light.mpSunPacket->field_0x44[4] = 0; g_env_light.mpSunPacket->field_0x58 = 0; g_env_light.mpSunLenzPacket->mpResBall = (u8*)dComIfG_getObjectRes("Always", 0x4A); g_env_light.mpSunLenzPacket->mpResRing_A = (u8*)dComIfG_getObjectRes("Always", 0x57); g_env_light.mpSunLenzPacket->mpResLenz = (u8*)dComIfG_getObjectRes("Always", 0x5C); g_env_light.mpSunLenzPacket->field_0x8c = lit_4611; f32 tmp0_2 = FLOAT_LABEL(lit_4378); g_env_light.mpSunLenzPacket->field_0x90 = tmp0_2; g_env_light.mpSunLenzPacket->mDistFalloff = tmp0_2; g_env_light.mpSunLenzPacket->mDrawLenzInSky = false; dKyr_sun_move(); dKyr_lenzflare_move(); g_env_light.mSunInitialized = true; } } break; case TRUE: if (!sunVisible) { g_env_light.mSunInitialized = false; delete g_env_light.mpSunPacket; delete g_env_light.mpSunLenzPacket; g_env_light.mpSunPacket = NULL; g_env_light.mpSunLenzPacket = NULL; } else { dKyr_sun_move(); dKyr_lenzflare_move(); } break; } } } /* ############################################################################################## */ /* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8037A3F1 = "R_SP127"; #pragma pop /* 804520F0-804520F4 0006F0 0004+00 2/2 0/0 0/0 .sdata2 @4668 */ SECTION_SDATA2 static f32 lit_4668 = -1.0f; /* 804520F4-804520F8 0006F4 0004+00 1/1 0/0 0/0 .sdata2 @4669 */ SECTION_SDATA2 static f32 lit_4669 = 125.0f; /* 804520F8-80452100 0006F8 0008+00 2/2 0/0 0/0 .sdata2 @4671 */ SECTION_SDATA2 static f64 lit_4671 = 4503601774854144.0 /* cast s32 to float */; /* 80058894-80058B00 0531D4 026C+00 1/1 0/0 0/0 .text wether_move_rain__Fv */ // matches with literals #ifdef NONMATCHING static void wether_move_rain() { switch (g_env_light.mRainInitialized) { case FALSE: if (g_env_light.mRainCount > 3) { g_env_light.mpRainPacket = new (32) dKankyo_rain_Packet(); if (g_env_light.mpRainPacket != NULL) { dKyr_rain_init(); dKyr_rain_move(); g_env_light.mRainInitialized = 1; if (g_env_light.mRainCount != 250) { mDoAud_seStart(JA_SE_ATM_RAIN_START, NULL, 0, 0); } } } break; case TRUE: camera_class* cam = dComIfGp_getCamera(0); dKyr_rain_move(); if (g_env_light.mSnowCount == 0 && cam != NULL) { // Stage is not Fishing Pond if (strcmp(dComIfGp_getStartStageName(), "R_SP127") || cam->mLookat.mEye.y > 0.0f) { if (g_env_light.mRainCount < 125.0f) { mDoAud_rainPlay(FALSE); } else { mDoAud_rainPlay(TRUE); } } } if (g_env_light.mRainCount <= 3) { g_env_light.mRainInitialized = 0; mDoAud_seStart(JA_SE_ATM_RAIN_END, NULL, 0, 0); delete g_env_light.mpRainPacket; g_env_light.mpRainPacket = NULL; } break; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void wether_move_rain() { nofralloc #include "asm/d/kankyo/d_kankyo_wether/wether_move_rain__Fv.s" } #pragma pop #endif /* 80058B00-80058B8C 053440 008C+00 1/1 0/0 0/0 .text wether_move_snow__Fv */ static void wether_move_snow() { switch (g_env_light.mSnowInitialized) { case FALSE: if (g_env_light.mSnowCount != 0 || g_env_light.field_0xe90 != 0) { dKyr_snow_init(); if (g_env_light.mpSnowPacket != NULL) { dKyr_snow_move(); g_env_light.mSnowInitialized = 1; } } break; case TRUE: dKyr_snow_move(); break; } } /* ############################################################################################## */ /* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8037A3F9 = "F_SP121"; SECTION_DEAD static char const* const stringBase_8037A401 = "F_SP122"; SECTION_DEAD static char const* const stringBase_8037A409 = "F_SP128"; #pragma pop /* 80452100-80452104 000700 0004+00 1/1 0/0 0/0 .sdata2 @4761 */ SECTION_SDATA2 static f32 lit_4761 = 330.0f; /* 80452104-80452108 000704 0004+00 1/1 0/0 0/0 .sdata2 @4762 */ SECTION_SDATA2 static f32 lit_4762 = 45.0f; /* 80452108-8045210C 000708 0004+00 1/1 0/0 0/0 .sdata2 @4763 */ SECTION_SDATA2 static f32 lit_4763 = 285.0f; /* 8045210C-80452110 00070C 0004+00 1/1 0/0 0/0 .sdata2 @4764 */ SECTION_SDATA2 static f32 lit_4764 = 1.0f / 45.0f; /* 80452110-80452114 000710 0004+00 2/2 0/0 0/0 .sdata2 @4765 */ SECTION_SDATA2 static f32 lit_4765 = 75.0f; /* 80452114-80452118 000714 0004+00 1/1 0/0 0/0 .sdata2 @4766 */ SECTION_SDATA2 static f32 lit_4766 = 1.0f / 30.0f; /* 80452118-8045211C 000718 0004+00 2/2 0/0 0/0 .sdata2 @4767 */ SECTION_SDATA2 static f32 lit_4767 = 0.5f; /* 8045211C-80452120 00071C 0004+00 2/2 0/0 0/0 .sdata2 @4768 */ SECTION_SDATA2 static f32 lit_4768 = 1.0f / 10.0f; /* 80452120-80452124 000720 0004+00 3/3 0/0 0/0 .sdata2 @4769 */ SECTION_SDATA2 static f32 lit_4769 = 1.0f / 100.0f; /* 80452124-80452128 000724 0004+00 2/2 0/0 0/0 .sdata2 @4770 */ SECTION_SDATA2 static f32 lit_4770 = 9.999999974752427e-07f; /* 80452128-8045212C 000728 0004+00 1/1 0/0 0/0 .sdata2 @4771 */ SECTION_SDATA2 static f32 lit_4771 = 1200.0f; /* 8045212C-80452130 00072C 0004+00 1/1 0/0 0/0 .sdata2 @4772 */ SECTION_SDATA2 static f32 lit_4772 = 500.0f; /* 80058B8C-80058F18 0534CC 038C+00 1/1 0/0 0/0 .text wether_move_star__Fv */ static void wether_move_star() { s32 starsVisible = false; // Stage is Hyrule Castle or Castle Throne Room if (!strcmp(dComIfGp_getStartStageName(), "D_MN09") || !strcmp(dComIfGp_getStartStageName(), "D_MN09A")) { return; } else { // Stage is Hero Shade arena if ((dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) || !strcmp(dComIfGp_getStartStageName(), "F_SP200")) { roomRead_class* room = dComIfGp_getStageRoom(); if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) { starsVisible = dStage_roomRead_dt_c_GetVrboxswitch( *room->field_0x4[dComIfGp_roomControl_getStayNo()]); } // Stage is Hero Shade arena if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) { starsVisible = true; } if (starsVisible && dKy_darkworld_check() != true) { f32 density; f32 time = g_env_light.getDaytime(); if (time >= lit_4761 || time < lit_4762) { density = lit_4379; } else if (time > lit_4763) { density = lit_4379 - lit_4764 * (lit_4761 - time); } else { if (time < lit_4765) { density = lit_4766 * (lit_4765 - time); } else { density = FLOAT_LABEL(lit_4378); } } if (g_env_light.mColpatWeather != 0) { density = FLOAT_LABEL(lit_4378); } if (g_env_light.mColPatCurr != 0 && g_env_light.mColPatBlend > lit_4767) { density = FLOAT_LABEL(lit_4378); } // Stage is Hero Shade arena if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) { density = lit_4379; } cLib_addCalc(&g_env_light.mStarDensity, density, lit_4768, lit_4769, lit_4770); g_env_light.mStarCount = (s16)(lit_4771 * g_env_light.mStarDensity); // Stage is Hyrule Field or Outside Castle Town or Hidden Village if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") || !strcmp(dComIfGp_getStartStageName(), "F_SP122") || !strcmp(dComIfGp_getStartStageName(), "F_SP128")) { g_env_light.mStarCount = (s16)(lit_4772 * g_env_light.mStarDensity); } switch (g_env_light.mStarInitialized) { case FALSE: if (g_env_light.mStarCount != 0) { dKyr_star_init(); dKyr_shstar_init(); if (g_env_light.mpStarPacket != NULL) { dKyr_star_move(); dKyr_shstar_move(); g_env_light.mStarInitialized = true; } } break; case TRUE: dKyr_star_move(); dKyr_shstar_move(); if (g_env_light.mStarCount == 0) { g_env_light.mStarInitialized = false; delete g_env_light.mpStarPacket; g_env_light.mpStarPacket = NULL; } break; } } } } } /* 80058F18-800593DC 053858 04C4+00 1/1 0/0 0/0 .text wether_move_housi__Fv */ static void wether_move_housi() { // Stage is Palace of Twilight or Zant Throne Room, or Phantom Zant arena // Room is not Entrance or Boss Key room if ((!strcmp(dComIfGp_getStartStageName(), "D_MN08") && dComIfGp_roomControl_getStayNo() != 0 && dComIfGp_roomControl_getStayNo() != 11) || (!strcmp(dComIfGp_getStartStageName(), "D_MN08A") || !strcmp(dComIfGp_getStartStageName(), "D_MN08B") || !strcmp(dComIfGp_getStartStageName(), "D_MN08C"))) { return; } // Stage is darkworld or Stage is Lake Hylia and Room is Lanayru Spring if (dKy_darkworld_check() == true || (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_roomControl_getStayNo() == 1 && dComIfGp_getStartStageLayer() == 9)) { if (g_env_light.mInitAnmTimer != 0) { g_env_light.field_0xea9 = 0; g_env_light.mHousiCount = 200; // Stage is Faron Woods and Room is Faron Spring or // Stage is Castle Town and Room is Castle Town Center or // Stage is Faron Woods and Room is South Faron or // Stage is Lake Hylia if ((!strcmp(dComIfGp_getStartStageName(), "F_SP108") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStageLayer() == 13) || (!strcmp(dComIfGp_getStartStageName(), "F_SP116") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 8) || (!strcmp(dComIfGp_getStartStageName(), "F_SP108") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 9) || (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageLayer() == 9)) { g_env_light.mHousiCount = 0; } } } switch (g_env_light.mHousiInitialized) { case FALSE: if (g_env_light.mHousiCount != 0) { g_env_light.mpHousiPacket = new (32) dKankyo_housi_Packet(); if (g_env_light.mpHousiPacket != NULL) { if (dKy_darkworld_check() == true) { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x5E); } else { if (g_env_light.field_0xea9 == 2) { if (g_env_light.mPondSeason == 3) { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getStageRes("momiji64s3tc.bti"); } else { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getStageRes("sakura32ia4.bti"); } if (g_env_light.mpHousiPacket->mpResTex == NULL) { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x55); } } else if (g_env_light.field_0xea9 == 0) { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x55); } else { g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x56); } } f32 tmp0 = FLOAT_LABEL(lit_4378); g_env_light.mpHousiPacket->field_0x5de8 = tmp0; g_env_light.mpHousiPacket->field_0x10.set(tmp0, tmp0, tmp0); for (int i = 0; i < 300; i++) { g_env_light.mpHousiPacket->mHousiEff[i].mStatus = 0; } dKyr_housi_move(); g_env_light.mHousiInitialized = true; } } break; case TRUE: if (g_env_light.mHousiCount == 0 && g_env_light.mpHousiPacket->field_0x5de8 <= FLOAT_LABEL(lit_4378)) { g_env_light.mHousiInitialized = false; delete g_env_light.mpHousiPacket; g_env_light.mpHousiPacket = NULL; } else { dKyr_housi_move(); if (!dKy_darkworld_check()) { g_env_light.mHousiCount = 0; } } break; } } /* 800593DC-80059580 053D1C 01A4+00 1/1 0/0 0/0 .text wether_move_odour__Fv */ static void wether_move_odour() { switch (g_env_light.mOdourPacketStatus) { case 0: if (g_env_light.field_0xf21 != 0) { g_env_light.mpOdourPacket = new (32) dKankyo_odour_Packet(); if (g_env_light.mpOdourPacket != NULL) { g_env_light.mpOdourPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x53); dKyr_odour_init(); dKyr_odour_move(); g_env_light.mOdourPacketStatus = 1; } } break; case 1: if (g_env_light.field_0xf21 == 0) { g_env_light.mOdourPacketStatus = 0; if (g_env_light.mpOdourPacket != NULL) { delete g_env_light.mpOdourPacket; g_env_light.mpOdourPacket = NULL; } } else { dKyr_odour_move(); } break; case 2: g_env_light.field_0xf21 = 0; g_env_light.mOdourPacketStatus = 0; delete g_env_light.mpOdourPacket; g_env_light.mpOdourPacket = NULL; break; } } /* 80059580-80059728 053EC0 01A8+00 1/1 0/0 0/0 .text wether_move_moya__Fv */ static void wether_move_moya() { switch (g_env_light.mCloudInitialized) { case 0: if (g_env_light.mMoyaCount != 0) { g_env_light.mpCloudPacket = new (32) dKankyo_cloud_Packet(); if (g_env_light.mpCloudPacket != NULL) { g_env_light.mpCloudPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x53); for (int i = 0; i < 50; i++) { g_env_light.mpCloudPacket->mCloudEff[i].mStatus = 0; } g_env_light.mpCloudPacket->mCount = 0; cloud_shadow_move(); g_env_light.mCloudInitialized++; } } break; case 1: if (g_env_light.mMoyaMode == 0) { dKyw_get_wind_pow(); } cloud_shadow_move(); if (g_env_light.mMoyaCount == 0 && g_env_light.mpCloudPacket->mCount == 0) { g_env_light.mCloudInitialized = 0; delete g_env_light.mpCloudPacket; g_env_light.mpCloudPacket = NULL; } break; } } /* ############################################################################################## */ /* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8037A469 = "F_SP114"; SECTION_DEAD static char const* const stringBase_8037A471 = "D_MN09B"; SECTION_DEAD static char const* const stringBase_8037A479 = "F_SP104"; SECTION_DEAD static char const* const stringBase_8037A481 = "cloudtx_01.bti"; SECTION_DEAD static char const* const stringBase_8037A490 = "cloudtx_02.bti"; SECTION_DEAD static char const* const stringBase_8037A49F = "cloudtx_03.bti"; #pragma pop /* 80424938-80424944 051658 000C+00 1/1 0/0 0/0 .bss @4965 */ static u8 lit_4965[12]; /* 80424944-80424950 051664 000C+00 1/1 0/0 0/0 .bss r09o$4964 */ static f32 r09o[3]; /* 80452130-80452134 000730 0004+00 1/1 0/0 0/0 .sdata2 @5181 */ SECTION_SDATA2 static f32 lit_5181 = -180000.0f; /* 80452134-80452138 000734 0004+00 1/1 0/0 0/0 .sdata2 @5182 */ SECTION_SDATA2 static f32 lit_5182 = 750.0f; /* 80452138-8045213C 000738 0004+00 1/1 0/0 0/0 .sdata2 @5183 */ SECTION_SDATA2 static f32 lit_5183 = -200000.0f; /* 8045213C-80452140 00073C 0004+00 1/1 0/0 0/0 .sdata2 @5184 */ SECTION_SDATA2 static f32 lit_5184 = 0.003000000026077032f; /* 80452140-80452144 000740 0004+00 1/1 0/0 0/0 .sdata2 @5185 */ SECTION_SDATA2 static f32 lit_5185 = 1.0000000116860974e-07f; /* 80452144-80452148 000744 0004+00 1/1 0/0 0/0 .sdata2 @5186 */ SECTION_SDATA2 static f32 lit_5186 = 2.0f / 25.0f; /* 80452148-8045214C 000748 0004+00 1/1 0/0 0/0 .sdata2 @5187 */ SECTION_SDATA2 static f32 lit_5187 = 0.0020000000949949026f; /* 8045214C-80452150 00074C 0004+00 1/1 0/0 0/0 .sdata2 @5188 */ SECTION_SDATA2 static f32 lit_5188 = 9.99999993922529e-09f; /* 80452150-80452154 000750 0004+00 1/1 0/0 0/0 .sdata2 @5189 */ SECTION_SDATA2 static f32 lit_5189 = 6.0f; /* 80452154-80452158 000754 0004+00 1/1 0/0 0/0 .sdata2 @5190 */ SECTION_SDATA2 static f32 lit_5190 = 56.0f; /* 80452158-8045215C 000758 0004+00 2/2 0/0 0/0 .sdata2 @5191 */ SECTION_SDATA2 static f32 lit_5191 = 3.0f / 10.0f; /* 8045215C-80452160 00075C 0004+00 1/1 0/0 0/0 .sdata2 @5192 */ SECTION_SDATA2 static f32 lit_5192 = 24575.0f; /* 80452160-80452164 000760 0004+00 1/1 0/0 0/0 .sdata2 @5193 */ SECTION_SDATA2 static f32 lit_5193 = 0.00139999995008111f; /* 80059728-80059E38 054068 0710+00 1/1 0/0 0/0 .text wether_move_vrkumo__Fv */ // gameinfo load issue, cmath instruction order / reg alloc #ifdef NONMATCHING static void wether_move_vrkumo() { BOOL var_r31 = false; static cXyz r09o(-180000.0f, 750.0f, -200000.0f); if (dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) { g_env_light.mVrkumoCount = 6; if (memcmp(dComIfGp_getStartStageName(), "D_MN07", 6) == 0 || strcmp(dComIfGp_getStartStageName(), "F_SP114") == 0 || (strcmp(dComIfGp_getStartStageName(), "D_MN09B") == 0 && (g_env_light.field_0x12cc != 0 || i_dComIfGp_event_runCheck()))) { cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f); } else if (strcmp(dComIfGp_getStartStageName(), "F_SP104") == 0 && dComIfG_play_c::getLayerNo(0) >= 3) { if (g_env_light.mColPatCurr >= 4) { cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f); } else { cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.08f, 0.002f, 0.00000001f); } } else if ((g_env_light.mColPatCurr == 1 && g_env_light.mColPatBlend > 0.0f) || (g_env_light.mColPatPrev == 1 && g_env_light.mColPatBlend < 1.0f) || (g_env_light.mColPatCurr == 2 && g_env_light.mColPatBlend > 0.0f) || (g_env_light.mColPatPrev == 2 && g_env_light.mColPatBlend < 1.0f)) { cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f); } else { cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.08f, 0.002f, 0.00000001f); } g_env_light.mVrkumoCount = (s16)(g_env_light.mVrkumoStrength * 56.0f + 6.0f); } else { g_env_light.mVrkumoCount = 0; } if (dKy_darkworld_check()) { g_env_light.mVrkumoCount = 30; } roomRead_class* room_p = dComIfGp_getStageRoom(); if (room_p != NULL && room_p->field_0x0 > dComIfGp_roomControl_getStayNo()) { var_r31 = dStage_roomRead_dt_c_GetVrboxswitch( *room_p->field_0x4[dComIfGp_roomControl_getStayNo()]); } if (strcmp(dComIfGp_getStartStageName(), "F_SP200") == 0) { g_env_light.mVrkumoCount = 30; } else if (var_r31 == 0) { return; } switch (g_env_light.mVrkumoStatus) { case 0: if (g_env_light.mVrkumoCount != 0) { g_env_light.mpVrkumoPacket = new (0x20) dKankyo_vrkumo_Packet(); if (g_env_light.mpVrkumoPacket == NULL) { return; } g_env_light.mpVrkumoPacket->mpResCloudtx_01 = (u8*)dComIfG_getStageRes("cloudtx_01.bti"); g_env_light.mpVrkumoPacket->mpResCloudtx_02 = (u8*)dComIfG_getStageRes("cloudtx_02.bti"); g_env_light.mpVrkumoPacket->mpResCloudtx_03 = (u8*)dComIfG_getStageRes("cloudtx_03.bti"); if (g_env_light.mpVrkumoPacket->mpResCloudtx_01 == NULL || g_env_light.mpVrkumoPacket->mpResCloudtx_02 == NULL || g_env_light.mpVrkumoPacket->mpResCloudtx_03 == NULL) { g_env_light.mVrkumoStatus = 99; } for (int i = 0; i < 100; i++) { g_env_light.mpVrkumoPacket->mVrkumoEff[i].mStatus = 0; } g_env_light.mpVrkumoPacket->field_0x1150 = 0.0f; g_env_light.mpVrkumoPacket->field_0x1154 = 0.0f; vrkumo_move(); g_env_light.mVrkumoStatus++; } break; case 1: vrkumo_move(); dKyw_get_wind_vec(); cXyz sp8; f32 wind_vec_x = g_env_light.mWind.vec.x; f32 wind_vec_y = g_env_light.mWind.vec.y; f32 wind_vec_z = g_env_light.mWind.vec.z; f32 var_f31 = g_env_light.mWind.pow; if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) { var_f31 = 0.3f; } f32 var_f30 = JMAFastSqrt(wind_vec_x * wind_vec_x + wind_vec_z * wind_vec_z); f32 temp_f27_2 = cM_atan2s(wind_vec_x, wind_vec_z); f32 temp_r4_2 = cM_atan2s(wind_vec_y, var_f30); temp_f27_2 += 24575.0f; sp8.x = cM_ssin(temp_f27_2) * cM_scos(temp_r4_2); sp8.y = cM_ssin(temp_r4_2); sp8.z = cM_scos(temp_f27_2) * cM_scos(temp_r4_2); g_env_light.mpVrkumoPacket->field_0x1150 += (sp8.x * var_f31) * 0.0014f; g_env_light.mpVrkumoPacket->field_0x1154 += (sp8.z * var_f31) * 0.0014f; while (g_env_light.mpVrkumoPacket->field_0x1150 < 0.0f) { g_env_light.mpVrkumoPacket->field_0x1150 += 1.0f; } while (g_env_light.mpVrkumoPacket->field_0x1150 > 1.0f) { g_env_light.mpVrkumoPacket->field_0x1150 -= 1.0f; } while (g_env_light.mpVrkumoPacket->field_0x1154 < 0.0f) { g_env_light.mpVrkumoPacket->field_0x1154 += 1.0f; } while (g_env_light.mpVrkumoPacket->field_0x1154 > 1.0f) { g_env_light.mpVrkumoPacket->field_0x1154 -= 1.0f; } break; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void wether_move_vrkumo() { nofralloc #include "asm/d/kankyo/d_kankyo_wether/wether_move_vrkumo__Fv.s" } #pragma pop #endif /* 80059E38-80059F74 054778 013C+00 1/1 0/0 0/0 .text wether_move_mud__Fv */ static void wether_move_mud() { switch (g_env_light.mMudInitialized) { case 0: if (g_env_light.field_0x1048 != 0) { g_env_light.mpMudPacket = new (32) dKankyo_mud_Packet(); if (g_env_light.mpMudPacket != NULL) { dKyr_mud_init(); dKyr_mud_move(); g_env_light.mMudInitialized++; } } break; case 1: dKyr_mud_move(); if (g_env_light.field_0x1048 == 0 && g_env_light.mpMudPacket->mEffectNum == 0) { g_env_light.mMudInitialized = 0; delete g_env_light.mpMudPacket; g_env_light.mpMudPacket = NULL; } break; } } /* 80059F74-8005A0B8 0548B4 0144+00 1/1 0/0 0/0 .text wether_move_evil__Fv */ static void wether_move_evil() { switch (g_env_light.mEvilInitialized & 0xF) { case 0: if (g_env_light.field_0x1054 != 0) { g_env_light.mpEvilPacket = new (32) dKankyo_evil_Packet(); if (g_env_light.mpEvilPacket != NULL) { dKyr_evil_init(); dKyr_evil_move(); g_env_light.mEvilInitialized++; } } break; case 1: dKyr_evil_move(); if (g_env_light.field_0x1054 == 0 && g_env_light.mpEvilPacket->mEffectNum == 0) { g_env_light.mEvilInitialized = 0; delete g_env_light.mpEvilPacket; g_env_light.mpEvilPacket = NULL; } break; } } /* 8005A0B8-8005A154 0549F8 009C+00 0/0 1/1 0/0 .text dKyw_wether_move_draw__Fv */ void dKyw_wether_move_draw() { g_env_light.mMoyaSE = 0; if (strcmp(dComIfGp_getStartStageName(), "Name")) { wether_move_sun(); wether_move_rain(); wether_move_snow(); } wether_move_star(); if (strcmp(dComIfGp_getStartStageName(), "Name")) { wether_move_housi(); wether_move_moya(); wether_move_mud(); wether_move_evil(); wether_move_odour(); } } /* 8005A154-8005A174 054A94 0020+00 0/0 1/1 0/0 .text dKyw_wether_move_draw2__Fv */ void dKyw_wether_move_draw2() { wether_move_vrkumo(); } /* 8005A174-8005A304 054AB4 0190+00 0/0 1/1 0/0 .text dKyw_wether_draw__Fv */ void dKyw_wether_draw() { if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mCloudInitialized != 0) { dKyw_Cloud_Draw(); } if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mSunInitialized) { stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); if (dStage_stagInfo_GetArg0(stag_info) != 0) { dKyw_Sun_Draw(); dKyw_Sunlenz_Draw(); } } if (g_env_light.mStarInitialized) { dKyw_Star_Draw(); dKyw_shstar_Draw(); } if (strcmp(dComIfGp_getStartStageName(), "Name")) { if (g_env_light.mRainInitialized) { dKyw_Rain_Draw(); } if (g_env_light.mSnowInitialized) { dKyw_Snow_Draw(); } if (g_env_light.mHousiInitialized) { dKyw_Housi_Draw(); } if (g_env_light.mOdourPacketStatus != 0) { dKyw_Odour_Draw(); } if (g_env_light.mMudInitialized != 0) { dKyw_mud_Draw(); } if (g_env_light.mEvilInitialized != 0) { dKyw_evil_Draw(); } dKy_undwater_filter_draw(); } } /* 8005A304-8005A340 054C44 003C+00 0/0 1/1 0/0 .text dKyw_wether_draw2__Fv */ void dKyw_wether_draw2() { if (g_env_light.mVrkumoStatus != 0 && g_env_light.mVrkumoStatus < 99) { dKyw_Vrkumo_Draw(); } } /* ############################################################################################## */ /* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8037A4B3 = "F_SP127"; /* @stringBase0 padding */ SECTION_DEAD static char const* const pad_8037A4BB = "\0\0\0\0"; #pragma pop /* 80452164-80452168 000764 0004+00 1/1 0/0 0/0 .sdata2 @5361 */ SECTION_SDATA2 static f32 lit_5361 = 120.0f; /* 80452168-8045216C 000768 0004+00 3/3 0/0 0/0 .sdata2 @5362 */ SECTION_SDATA2 static f32 lit_5362 = 1.0f / 20.0f; /* 8045216C-80452170 00076C 0004+00 1/1 0/0 0/0 .sdata2 @5363 */ SECTION_SDATA2 static f32 lit_5363 = 0.0024999999441206455f; /* 80452170-80452178 000770 0004+04 1/1 0/0 0/0 .sdata2 @5364 */ SECTION_SDATA2 static f32 lit_5364[1 + 1 /* padding */] = { 9.999999747378752e-06f, /* padding */ 0.0f, }; /* 8005A340-8005A57C 054C80 023C+00 0/0 1/1 0/0 .text dKyw_wether_proc__Fv */ // small branch issue #ifdef NONMATCHING void dKyw_wether_proc() { // Stage is Faron Woods or Fishing Pond or Hyrule Field if (!strcmp(dComIfGp_getStartStageName(), "F_SP108") || !strcmp(dComIfGp_getStartStageName(), "F_SP127") || (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && FLOAT_LABEL(lit_4378) != g_env_light.mDiceWeatherTime)) { if (!dKy_darkworld_check()) { // Stage is Hyrule Field if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") || !(g_env_light.mDaytime >= 75.0f) || !(g_env_light.mDaytime <= 120.0f)) { // Stage is Hyrule Field if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && g_env_light.mDiceWeatherMode >= 1 && g_env_light.mDiceWeatherMode < 6) { dKy_get_dayofweek(); cLib_addCalc(&g_env_light.field_0xebc, lit_4379, lit_5362, lit_5363, lit_4770); g_env_light.mMoyaMode = 7; g_env_light.mMoyaCount = 49; } else { cLib_addCalc(&g_env_light.field_0xebc, FLOAT_LABEL(lit_4378), lit_5362, lit_5363, lit_5364[0]); if (g_env_light.field_0xebc <= lit_4769 && g_env_light.mMoyaCount == 49) { g_env_light.mMoyaCount = 0; } } } } } // Stage is Fishing Pond if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && (g_env_light.mPondSeason == 1 || g_env_light.mPondSeason == 3)) { if (g_env_light.mPondSeason == 1) { g_env_light.mHousiCount = 35; } else { g_env_light.mHousiCount = 30; } g_env_light.field_0xea9 = 2; } squal_proc(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dKyw_wether_proc() { nofralloc #include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_proc__Fv.s" } #pragma pop #endif /* 8005A57C-8005A5C0 054EBC 0044+00 1/1 0/0 0/0 .text dKyw_wind_init__Fv */ static void dKyw_wind_init() { g_env_light.mWind.vec.x = lit_4668; f32 tmp_0 = FLOAT_LABEL(lit_4378); g_env_light.mWind.vec.y = tmp_0; g_env_light.mWind.vec.z = tmp_0; g_env_light.mWind.pow = tmp_0; g_env_light.field_0xe6c = 0; g_env_light.field_0xe64 = 0; g_env_light.field_0xe66 = 0; g_env_light.mWind.vec_override = 0; g_env_light.custom_windpower = tmp_0; g_env_light.mEvtWindSet = 0; g_env_light.mTeachWindExist = 0; } /* ############################################################################################## */ /* 80452178-80452180 000778 0008+00 3/3 0/0 0/0 .sdata2 @5524 */ SECTION_SDATA2 static f64 lit_5524 = 0.5; /* 80452180-80452188 000780 0008+00 3/3 0/0 0/0 .sdata2 @5525 */ SECTION_SDATA2 static f64 lit_5525 = 3.0; /* 80452188-80452190 000788 0008+00 3/3 0/0 0/0 .sdata2 @5526 */ SECTION_SDATA2 static u8 lit_5526[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80452190-80452194 000790 0004+00 1/1 0/0 0/0 .sdata2 @5527 */ SECTION_SDATA2 static f32 lit_5527 = 3.0f / 5.0f; /* 80452194-80452198 000794 0004+00 1/1 0/0 0/0 .sdata2 @5528 */ SECTION_SDATA2 static f32 lit_5528 = 9.0f / 10.0f; /* 80452198-8045219C 000798 0004+00 1/1 0/0 0/0 .sdata2 @5529 */ SECTION_SDATA2 static f32 lit_5529 = 2.0f; /* 8045219C-804521A0 00079C 0004+00 2/2 0/0 0/0 .sdata2 @5530 */ SECTION_SDATA2 static f32 lit_5530 = 0.0010000000474974513f; /* 804521A0-804521A4 0007A0 0004+00 1/1 0/0 0/0 .sdata2 @5531 */ SECTION_SDATA2 static f32 lit_5531 = 0.004999999888241291f; /* 8005A5C0-8005AAE0 054F00 0520+00 0/0 2/2 0/0 .text dKyw_wind_set__Fv */ // matches with literals #ifdef NONMATCHING void dKyw_wind_set() { s16 var_r30; s16 var_r29; int var_r28 = 0; cXyz wind_vec; f32 strength; if (g_env_light.mWind.vec_override != NULL) { wind_vec = *g_env_light.mWind.vec_override; strength = g_env_light.custom_windpower; cM_atan2s(wind_vec.x, wind_vec.z); cM_atan2s(wind_vec.absXZ(), wind_vec.y); } else { dStage_FileList_dt_c* fili_p = NULL; int wind_level = 0; if (dComIfGp_roomControl_getStayNo() >= 0) { fili_p = dComIfGp_roomControl_getStatusRoomDt(dComIfGp_roomControl_getStayNo()) ->mRoomDt.getFileListInfo(); } var_r30 = 0; var_r29 = 0; if (fili_p != NULL) { var_r28 = dStage_FileList_dt_GlobalWindDir(fili_p); } s32 var_r4 = dComIfGp_roomControl_getStayNo(); if (dComIfGp_roomControl_getStatusRoomDt(var_r4) != NULL) { s32 var_r4_2 = dComIfGp_roomControl_getStayNo(); dStage_Lbnk_c* lbnk_p = dComIfGp_roomControl_getStatusRoomDt(var_r4_2)->mRoomDt.getLbnk(); if (lbnk_p != NULL) { dStage_Lbnk_dt_c* data_p = lbnk_p->entries; if (dStage_lbnkWIND(&data_p[dComIfG_play_c::getLayerNo(0)]) != 7) { var_r28 = dStage_lbnkWIND(&data_p[0]); } } } switch (var_r28) { case 0: case 1: break; case 2: var_r30 = 0; var_r29 = -0x4000; break; case 3: var_r30 = 0; var_r29 = 0; break; case 4: var_r30 = 0; var_r29 = 0x4000; break; case 5: var_r30 = 0; var_r29 = 0x7FFF; break; } if (g_env_light.mEvtWindSet != 0 && g_env_light.mEvtWindSet != 0xFF) { var_r30 = g_env_light.mEvtWindAngleX; var_r29 = g_env_light.mEvtWindAngleY; } wind_vec.x = cM_scos(var_r30) * cM_ssin(var_r29); wind_vec.y = cM_ssin(var_r30); wind_vec.z = cM_scos(var_r30) * cM_scos(var_r29); if (fili_p != NULL) { wind_level = dStage_FileList_dt_GlobalWindLevel(fili_p); } s32 var_r4_3 = dComIfGp_roomControl_getStayNo(); if (dComIfGp_roomControl_getStatusRoomDt(var_r4_3) != NULL) { s32 var_r4_4 = dComIfGp_roomControl_getStayNo(); dStage_Lbnk_c* lbnk_p = dComIfGp_roomControl_getStatusRoomDt(var_r4_4)->mRoomDt.getLbnk(); if (lbnk_p != NULL) { dStage_Lbnk_dt_c* data_p = lbnk_p->entries; if (dStage_lbnkWlevel(&data_p[0]) != 3) { wind_level = dStage_lbnkWlevel(&data_p[0]); } } } switch (wind_level) { case 0: strength = 0.3f; break; case 1: strength = 0.6f; break; case 2: strength = 0.9f; break; default: strength = 0.0f; break; } } if (g_env_light.mEvtWindSet != 0) { strength = g_env_light.custom_windpower; } if (strength > 1.0f) { strength = 1.0f; } if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 && (dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 3 || dComIfGp_roomControl_getStayNo() == 6 || dComIfGp_roomControl_getStayNo() == 13)) { mDoAud_mEnvse_setWindDirection(&wind_vec); if (strength <= 0.5f) { mDoAud_mEnvse_setWindType(3); } else { mDoAud_mEnvse_setWindType(1); } s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo()); mDoAud_mEnvse_startStrongWindSe(reverb); } if (g_env_light.mInitAnmTimer != 0) { g_env_light.mWind.vec = wind_vec; g_env_light.mWind.pow = strength; } else { cLib_addCalc(&g_env_light.mWind.vec.x, wind_vec.x, 0.05f, 2.0f, 0.001f); cLib_addCalc(&g_env_light.mWind.vec.y, wind_vec.y, 0.05f, 2.0f, 0.001f); cLib_addCalc(&g_env_light.mWind.vec.z, wind_vec.z, 0.05f, 2.0f, 0.001f); cLib_addCalc(&g_env_light.mWind.pow, strength, 0.05f, 1.0f, 0.005f); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dKyw_wind_set() { nofralloc #include "asm/d/kankyo/d_kankyo_wether/dKyw_wind_set__Fv.s" } #pragma pop #endif /* 8005AAE0-8005AAF0 055420 0010+00 1/1 6/6 7/7 .text dKyw_get_wind_vec__Fv */ cXyz* dKyw_get_wind_vec() { return &g_env_light.mWind.vec; } /* 8005AAF0-8005AB00 055430 0010+00 1/1 6/6 8/8 .text dKyw_get_wind_pow__Fv */ f32 dKyw_get_wind_pow() { return g_env_light.mWind.pow; } /* 8005AB00-8005AB64 055440 0064+00 0/0 8/8 3/3 .text dKyw_get_wind_vecpow__Fv */ cXyz dKyw_get_wind_vecpow() { cXyz vec = g_env_light.mWind.vec * g_env_light.mWind.pow; return vec; } /* 8005AB64-8005AC30 0554A4 00CC+00 0/0 0/0 1/1 .text dKyw_plight_collision_set__FP4cXyzssfffff */ void dKyw_plight_collision_set(cXyz* param_0, s16 param_1, s16 param_2, f32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7) { dScnKy_env_light_c* env_light = i_dKy_getEnvlight(); for (int i = 0; i < 5; i++) { if (!env_light->mWindInfluenceEntity[i].mInUse) { env_light->mWindInfluenceEntity[i].mInUse = true; env_light->mWindInfluenceEntity[i].mMinRadius = param_4; env_light->mWindInfluenceEntity[i].mSpeed = param_6; env_light->mWindInfluenceEntity[i].mStrengthMaxVel = param_7; WIND_INFLUENCE* wind_inf = &env_light->mWindInfluenceEntity[i].mInfluence; wind_inf->position = *param_0; wind_inf->mDirection.x = cM_scos(param_1) * cM_ssin(param_2); wind_inf->mDirection.y = cM_ssin(param_1); wind_inf->mDirection.z = cM_scos(param_1) * cM_scos(param_2); wind_inf->mRadius = param_3; wind_inf->field_0x20 = wind_inf->mRadius; wind_inf->mStrength = param_5; dKyw_pntlight_set(wind_inf); break; } } } /* ############################################################################################## */ /* 804521A4-804521A8 0007A4 0004+00 1/1 0/0 0/0 .sdata2 @5630 */ SECTION_SDATA2 static f32 lit_5630 = 1.0f / 5.0f; /* 8005AC30-8005AD44 055570 0114+00 1/1 0/0 0/0 .text squal_proc__Fv */ // matches with literals #ifdef NONMATCHING static void squal_proc() { dScnKy_env_light_c* env_light = i_dKy_getEnvlight(); WIND_INFLUENCE* influence; for (int i = 0; i < 5; i++) { influence = &env_light->mWindInfluenceEntity[i].mInfluence; switch (env_light->mWindInfluenceEntity[i].mInUse) { case 0: break; case 1: influence->position.x += influence->mDirection.x * env_light->mWindInfluenceEntity[i].mSpeed; influence->position.y += influence->mDirection.y * env_light->mWindInfluenceEntity[i].mSpeed; influence->position.z += influence->mDirection.z * env_light->mWindInfluenceEntity[i].mSpeed; cLib_addCalc(&influence->mStrength, 0.0f, 0.2f, env_light->mWindInfluenceEntity[i].mStrengthMaxVel, 0.001f); f32 speed = 1.0f - influence->mStrength; f32 target = env_light->mWindInfluenceEntity[i].mMinRadius; cLib_addCalc(&influence->mRadius, target, speed, speed * target * 0.05f, 0.01f); if (influence->mStrength < 0.01f) { dKyw_pntwind_cut(influence); env_light->mWindInfluenceEntity[i].mInUse = false; } break; } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void squal_proc() { nofralloc #include "asm/d/kankyo/d_kankyo_wether/squal_proc__Fv.s" } #pragma pop #endif /* 8005AD44-8005AD98 055684 0054+00 1/1 0/0 0/0 .text dKyw_pntwind_init__Fv */ static void dKyw_pntwind_init() { for (int i = 0; i < 30; i++) { g_env_light.mPntWind[i] = NULL; } for (int i = 0; i < 5; i++) { g_env_light.mWindInfluenceEntity[i].mInUse = 0; } } /* 8005AD98-8005ADFC 0556D8 0064+00 2/2 0/0 0/0 .text pntwind_set__FP14WIND_INFLUENCE */ static void pntwind_set(WIND_INFLUENCE* i_pntwind) { int i = 0; for (; i < 30; i++) { if (g_env_light.mPntWind[i] == NULL) { g_env_light.mPntWind[i] = i_pntwind; g_env_light.mPntWind[i]->field_0x24 = i; break; } } if (i >= 30) { i_pntwind->field_0x24 = 9999; } } /* 8005ADFC-8005AE28 05573C 002C+00 0/0 0/0 5/5 .text dKyw_pntwind_set__FP14WIND_INFLUENCE */ void dKyw_pntwind_set(WIND_INFLUENCE* i_pntwind) { i_pntwind->mConstant = 0; i_pntwind->field_0x29 = 0; pntwind_set(i_pntwind); } /* 8005AE28-8005AE58 055768 0030+00 1/1 0/0 0/0 .text dKyw_pntlight_set__FP14WIND_INFLUENCE */ static void dKyw_pntlight_set(WIND_INFLUENCE* i_pntwind) { i_pntwind->mConstant = 0; i_pntwind->field_0x29 = 1; pntwind_set(i_pntwind); } /* 8005AE58-8005AE90 055798 0038+00 1/1 0/0 5/5 .text dKyw_pntwind_cut__FP14WIND_INFLUENCE */ void dKyw_pntwind_cut(WIND_INFLUENCE* i_pntwind) { if (i_pntwind != NULL && i_pntwind->field_0x24 >= 0 && i_pntwind->field_0x24 < 30) { g_env_light.mPntWind[i_pntwind->field_0x24] = NULL; } } /* 8005AE90-8005B23C 0557D0 03AC+00 2/2 0/0 0/0 .text pntwind_get_info__FP4cXyzP4cXyzPfUc */ // matches with literals #ifdef NONMATCHING static void pntwind_get_info(cXyz* param_0, cXyz* i_dir, f32* i_power, u8 param_3) { i_dir->x = 0.0f; i_dir->y = 0.0f; i_dir->z = 0.0f; *i_power = 0.0f; WIND_INFLUENCE* influence; s32 influence_count = ARRAY_SIZE(g_env_light.mPntWind); for (int i = 0; i < influence_count; i++) { influence = g_env_light.mPntWind[i]; if (influence != NULL && influence->field_0x29 == param_3) { f32 dist = param_0->abs(influence->position); if (influence->mConstant == 0) { if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) { f32 temp_f0; if (influence->mRadius > 0.0f) { f32 temp_f0_4 = (dist / influence->mRadius); temp_f0 = 1.0f - (temp_f0_4 * temp_f0_4); } else { temp_f0 = 1.0f; } *i_power = influence->mStrength * temp_f0; cXyz sp10; sp10.x = influence->position.x + -(influence->mDirection.x) * influence->mRadius; sp10.y = influence->position.y + -(influence->mDirection.y) * influence->mRadius; sp10.z = influence->position.z + -(influence->mDirection.z) * influence->mRadius; dKyr_get_vectle_calc(&sp10, param_0, i_dir); if (param_0->abs(sp10) < influence->mRadius) { i_dir->x = 0.0f; i_dir->y = 0.0f; i_dir->z = 0.0f; } return; } } else { if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) { f32 temp_f0; if (influence->mRadius > 0.0f) { temp_f0 = 1.0f - (dist / influence->mRadius); } else { temp_f0 = 1.0f; } i_dir->x = influence->mDirection.x; i_dir->y = influence->mDirection.y; i_dir->z = influence->mDirection.z; *i_power = influence->mStrength * temp_f0; return; } } } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2, u8 param_3) { nofralloc #include "asm/d/kankyo/d_kankyo_wether/pntwind_get_info__FP4cXyzP4cXyzPfUc.s" } #pragma pop #endif /* 8005B23C-8005B260 055B7C 0024+00 3/3 0/0 0/0 .text dKyw_pntwind_get_info__FP4cXyzP4cXyzPf */ static void dKyw_pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) { pntwind_get_info(param_0, param_1, param_2, 0); } /* 8005B260-8005B284 055BA0 0024+00 0/0 0/0 3/3 .text * dKyw_pntlight_collision_get_info__FP4cXyzP4cXyzPf */ void dKyw_pntlight_collision_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) { pntwind_get_info(param_0, param_1, param_2, 1); } /* 8005B284-8005B2F8 055BC4 0074+00 0/0 1/1 0/0 .text dKyw_pntwind_get_vecpow__FP4cXyz */ cXyz dKyw_pntwind_get_vecpow(cXyz* param_0) { cXyz direction; f32 power; dKyw_pntwind_get_info(param_0, &direction, &power); direction = direction * power; return direction; } /* ############################################################################################## */ /* 804521A8-804521B0 0007A8 0004+04 2/2 0/0 0/0 .sdata2 @5855 */ SECTION_SDATA2 static f32 lit_5855[1 + 1 /* padding */] = { 5.0f, /* padding */ 0.0f, }; /* 8005B2F8-8005B530 055C38 0238+00 0/0 3/3 13/13 .text dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf */ // matches with literals #ifdef NONMATCHING void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* i_direction, f32* i_power) { dScnKy_env_light_c* env_light = i_dKy_getEnvlight(); dKyw_pntwind_get_info(param_0, i_direction, i_power); cXyz sp54; cXyz sp30; cXyz sp24; sp30 = env_light->mWind.vec * (env_light->mWind.pow * (1.0f - *i_power)); sp24 = *i_direction * (*i_power * 5.0f); sp54 = sp30 + sp24; *i_power = sp54.abs(); sp54 = sp54.normZP(); if (sp54 != cXyz::Zero) { i_direction->x = sp54.x; i_direction->y = sp54.y; i_direction->z = sp54.z; } else { i_direction->x = env_light->mWind.vec.x; i_direction->y = env_light->mWind.vec.y; i_direction->z = env_light->mWind.vec.z; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* param_1, f32* param_2) { nofralloc #include "asm/d/kankyo/d_kankyo_wether/dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf.s" } #pragma pop #endif /* 8005B530-8005B60C 055E70 00DC+00 0/0 0/0 5/5 .text dKyw_get_AllWind_vecpow__FP4cXyz */ // matches with literals #ifdef NONMATCHING cXyz dKyw_get_AllWind_vecpow(cXyz* param_0) { f32 sp8; cXyz spC; cXyz sp18; cXyz sp24; cXyz sp30; dKyw_pntwind_get_info(param_0, &sp30, &sp8); sp18 = g_env_light.mWind.vec * (g_env_light.mWind.pow * (1.0f - sp8)); sp24 = sp30 * (5.0f * sp8); spC = sp18 + sp24; return spC; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dKyw_get_AllWind_vecpow(cXyz* param_0) { nofralloc #include "asm/d/kankyo/d_kankyo_wether/dKyw_get_AllWind_vecpow__FP4cXyz.s" } #pragma pop #endif /* 8005B60C-8005B61C 055F4C 0010+00 0/0 0/0 5/5 .text dKyw_custom_windpower__Ff */ void dKyw_custom_windpower(f32 pow) { g_env_light.custom_windpower = pow; } /* 8005B61C-8005B638 055F5C 001C+00 0/0 0/0 6/6 .text dKyw_evt_wind_set__Fss */ void dKyw_evt_wind_set(s16 angleX, s16 angleY) { g_env_light.mEvtWindSet = 1; g_env_light.mEvtWindAngleX = angleX; g_env_light.mEvtWindAngleY = angleY; } /* 8005B638-8005B64C 055F78 0014+00 0/0 0/0 3/3 .text dKyw_evt_wind_set_go__Fv */ void dKyw_evt_wind_set_go() { g_env_light.mEvtWindSet = 1; } /* 8005B64C-8005B660 055F8C 0014+00 0/0 1/1 5/5 .text dKyw_rain_set__Fi */ void dKyw_rain_set(int count) { g_env_light.mRainCount = count; g_env_light.mRainCountOrig = count; }